diff --git a/build/controller/Controller.bin b/build/controller/Controller.bin index a69c0549..264e63ba 100644 --- a/build/controller/Controller.bin +++ b/build/controller/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/controller/combined.json b/build/controller/combined.json index e3877603..65dec2fb 100644 --- a/build/controller/combined.json +++ b/build/controller/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:5;;-1:-1:-1;;;;;;1543:18:5;-1:-1:-1;;;;;1543:18:5;;;-1:-1:-1;;;;1571:32:5;;;;2239:84:0;;2314:5;1571:32:5;-1:-1:-1;;;1687:15:5;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:5;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:5;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:5:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:5:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:5;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:5:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:5;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:5;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:5:-;3222:4;3245:15;-1:-1:-1;;;3245:15:5;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:5;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:5:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:5;;;;3656:57;;;;;-1:-1:-1;;;3656:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:5;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:5;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:5:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:5;;;;2404:57;;;;;-1:-1:-1;;;2404:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:5;;2534:70;;;;-1:-1:-1;;;2534:70:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:5;-1:-1:-1;;;2689:31:5;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:5;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:5;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:5;:17;;-1:-1:-1;;;;;;3032:17:5;-1:-1:-1;;;;;3032:17:5;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:5;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:5:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:5;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:6:-;-1:-1:-1;;;;;1510:20:6;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:6;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:6;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:6;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:6;;;;;;;","srcmap-runtime":"961:696:6:-;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","internals/ownable.sol","internals/transferrable.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[453],"IController":[18]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":611,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":454,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":651,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":454,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[18],"name":"IController","scope":454},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":18,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":10,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":5,"name":"VariableDeclaration","src":"1015:7:0"}],"id":6,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":10,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":8,"name":"VariableDeclaration","src":"1047:4:0"}],"id":9,"name":"ParameterList","src":"1046:6:0"}],"id":10,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":18,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":17,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":12,"name":"VariableDeclaration","src":"1076:7:0"}],"id":13,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":17,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":15,"name":"VariableDeclaration","src":"1108:4:0"}],"id":16,"name":"ParameterList","src":"1107:6:0"}],"id":17,"name":"FunctionDefinition","src":"1059:55:0"}],"id":18,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[18,610,650],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[453,650,610,18],"name":"Controller","scope":454},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":18,"type":"contract IController"},"id":19,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":20,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":610,"type":"contract Ownable"},"id":21,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":22,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":650,"type":"contract Transferrable"},"id":23,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":24,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":30,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":25,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":26,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":30,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":27,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":28,"name":"VariableDeclaration","src":"1564:19:0"}],"id":29,"name":"ParameterList","src":"1546:38:0"}],"id":30,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":36,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":31,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":32,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":36,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":33,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":34,"name":"VariableDeclaration","src":"1631:19:0"}],"id":35,"name":"ParameterList","src":"1613:38:0"}],"id":36,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":42,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":37,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":38,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":42,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":39,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":40,"name":"VariableDeclaration","src":"1692:14:0"}],"id":41,"name":"ParameterList","src":"1674:33:0"}],"id":42,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":48,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":43,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":44,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":48,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":45,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":46,"name":"VariableDeclaration","src":"1749:14:0"}],"id":47,"name":"ParameterList","src":"1731:33:0"}],"id":48,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":56,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":49,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":50,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":56,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":51,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":52,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":56,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":53,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":54,"name":"VariableDeclaration","src":"1814:15:0"}],"id":55,"name":"ParameterList","src":"1784:46:0"}],"id":56,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":60,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":57,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":58,"name":"VariableDeclaration","src":"1851:15:0"}],"id":59,"name":"ParameterList","src":"1850:17:0"}],"id":60,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":64,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":61,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":62,"name":"VariableDeclaration","src":"1887:15:0"}],"id":63,"name":"ParameterList","src":"1886:17:0"}],"id":64,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":453,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":65,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":66,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":67,"name":"Mapping","src":"1910:24:0"}],"id":68,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":453,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":69,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":70,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":453,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":71,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":72,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":73,"name":"Mapping","src":"1991:24:0"}],"id":74,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":453,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":75,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":76,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":453,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":77,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":78,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":88,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":79,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":80,"name":"VariableDeclaration","src":"2251:30:0"}],"id":81,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":86,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":610,"type":"type(contract Ownable)","value":"Ownable"},"id":82,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":80,"type":"address payable","value":"_ownerAddress_"},"id":83,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":84,"name":"Literal","src":"2314:5:0"}],"id":85,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":87,"name":"Block","src":"2321:2:0"}],"id":88,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":89,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":90,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":91,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":92,"name":"Identifier","src":"2431:3:0"}],"id":93,"name":"MemberAccess","src":"2431:10:0"}],"id":94,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":95,"name":"Literal","src":"2444:24:0"}],"id":96,"name":"FunctionCall","src":"2414:55:0"}],"id":97,"name":"ExpressionStatement","src":"2414:55:0"},{"id":98,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":99,"name":"Block","src":"2404:83:0"}],"id":100,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":101,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":102,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":103,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":104,"name":"Identifier","src":"2588:3:0"}],"id":105,"name":"MemberAccess","src":"2588:10:0"}],"id":106,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":107,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":108,"name":"Identifier","src":"2612:3:0"}],"id":109,"name":"MemberAccess","src":"2612:10:0"}],"id":110,"name":"IndexAccess","src":"2603:20:0"}],"id":111,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":112,"name":"Literal","src":"2625:24:0"}],"id":113,"name":"FunctionCall","src":"2571:79:0"}],"id":114,"name":"ExpressionStatement","src":"2571:79:0"},{"id":115,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":116,"name":"Block","src":"2561:107:0"}],"id":117,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":118,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":119,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":232,"type":"function () view returns (bool)","value":"isStopped"},"id":120,"name":"Identifier","src":"2762:9:0"}],"id":121,"name":"FunctionCall","src":"2762:11:0"}],"id":122,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":123,"name":"Literal","src":"2775:23:0"}],"id":124,"name":"FunctionCall","src":"2753:46:0"}],"id":125,"name":"ExpressionStatement","src":"2753:46:0"},{"id":126,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":127,"name":"Block","src":"2743:74:0"}],"id":128,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":142,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":129,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":130,"name":"VariableDeclaration","src":"2958:16:0"}],"id":131,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":136,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":132,"name":"Identifier","src":"2985:9:0"}],"id":133,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":134,"name":"Identifier","src":"2995:10:0"}],"id":135,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":286,"type":"function (address)","value":"_addAdmin"},"id":137,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"address","value":"_account"},"id":138,"name":"Identifier","src":"3026:8:0"}],"id":139,"name":"FunctionCall","src":"3016:19:0"}],"id":140,"name":"ExpressionStatement","src":"3016:19:0"}],"id":141,"name":"Block","src":"3006:36:0"}],"id":142,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":154,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":143,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":144,"name":"VariableDeclaration","src":"3192:16:0"}],"id":145,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":148,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":146,"name":"Identifier","src":"3219:9:0"}],"id":147,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"function (address)","value":"_removeAdmin"},"id":149,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":144,"type":"address","value":"_account"},"id":150,"name":"Identifier","src":"3252:8:0"}],"id":151,"name":"FunctionCall","src":"3239:22:0"}],"id":152,"name":"ExpressionStatement","src":"3239:22:0"}],"id":153,"name":"Block","src":"3229:39:0"}],"id":154,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":453,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":155,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":156,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":157,"name":"VariableDeclaration","src":"3365:7:0"}],"id":158,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":158},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_adminCount"},"id":159,"name":"Identifier","src":"3391:11:0"}],"id":160,"name":"Return","src":"3384:18:0"}],"id":161,"name":"Block","src":"3374:35:0"}],"id":162,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":176,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":163,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":164,"name":"VariableDeclaration","src":"3570:16:0"}],"id":165,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":170,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":166,"name":"Identifier","src":"3597:16:0"}],"id":167,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":168,"name":"Identifier","src":"3614:10:0"}],"id":169,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":368,"type":"function (address)","value":"_addController"},"id":171,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"address","value":"_account"},"id":172,"name":"Identifier","src":"3650:8:0"}],"id":173,"name":"FunctionCall","src":"3635:24:0"}],"id":174,"name":"ExpressionStatement","src":"3635:24:0"}],"id":175,"name":"Block","src":"3625:41:0"}],"id":176,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":188,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":177,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":178,"name":"VariableDeclaration","src":"3836:16:0"}],"id":179,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":182,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":180,"name":"Identifier","src":"3863:16:0"}],"id":181,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"function (address)","value":"_removeController"},"id":183,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":178,"type":"address","value":"_account"},"id":184,"name":"Identifier","src":"3908:8:0"}],"id":185,"name":"FunctionCall","src":"3890:27:0"}],"id":186,"name":"ExpressionStatement","src":"3890:27:0"}],"id":187,"name":"Block","src":"3880:44:0"}],"id":188,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":453,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":189,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":196,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":190,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":191,"name":"VariableDeclaration","src":"4069:7:0"}],"id":192,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":192},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_controllerCount"},"id":193,"name":"Identifier","src":"4095:16:0"}],"id":194,"name":"Return","src":"4088:23:0"}],"id":195,"name":"Block","src":"4078:40:0"}],"id":196,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":453,"stateMutability":"view","superFunction":17,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":210,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":197,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":198,"name":"VariableDeclaration","src":"4239:16:0"}],"id":199,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":210,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":202,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":203,"name":"VariableDeclaration","src":"4291:4:0"}],"id":204,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":200,"name":"Identifier","src":"4271:10:0"}],"id":201,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":204},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":205,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":198,"type":"address","value":"_account"},"id":206,"name":"Identifier","src":"4323:8:0"}],"id":207,"name":"IndexAccess","src":"4314:18:0"}],"id":208,"name":"Return","src":"4307:25:0"}],"id":209,"name":"Block","src":"4297:42:0"}],"id":210,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":453,"stateMutability":"view","superFunction":10,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":224,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":211,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":212,"name":"VariableDeclaration","src":"4473:16:0"}],"id":213,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":224,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":216,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":217,"name":"VariableDeclaration","src":"4525:4:0"}],"id":218,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":214,"name":"Identifier","src":"4505:10:0"}],"id":215,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":218},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":219,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":212,"type":"address","value":"_account"},"id":220,"name":"Identifier","src":"4562:8:0"}],"id":221,"name":"IndexAccess","src":"4548:23:0"}],"id":222,"name":"Return","src":"4541:30:0"}],"id":223,"name":"Block","src":"4531:47:0"}],"id":224,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":453,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":225,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":232,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":226,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":227,"name":"VariableDeclaration","src":"4766:4:0"}],"id":228,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":228},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":78,"type":"bool","value":"_stopped"},"id":229,"name":"Identifier","src":"4789:8:0"}],"id":230,"name":"Return","src":"4782:15:0"}],"id":231,"name":"Block","src":"4772:32:0"}],"id":232,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":286,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":233,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":234,"name":"VariableDeclaration","src":"4891:16:0"}],"id":235,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":236,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":237,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":238,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":239,"name":"Identifier","src":"4945:8:0"}],"id":240,"name":"IndexAccess","src":"4936:18:0"}],"id":241,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":242,"name":"Literal","src":"4956:38:0"}],"id":243,"name":"FunctionCall","src":"4927:68:0"}],"id":244,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":245,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":246,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":247,"name":"Identifier","src":"5028:8:0"}],"id":248,"name":"IndexAccess","src":"5014:23:0"}],"id":249,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":250,"name":"Literal","src":"5039:42:0"}],"id":251,"name":"FunctionCall","src":"5005:77:0"}],"id":252,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":253,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":254,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":255,"name":"Identifier","src":"5110:8:0"}],"id":256,"name":"FunctionCall","src":"5101:18:0"}],"id":257,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":258,"name":"Literal","src":"5121:39:0"}],"id":259,"name":"FunctionCall","src":"5092:69:0"}],"id":260,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":261,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":262,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":263,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":264,"name":"Literal","src":"5199:1:0"}],"id":265,"name":"FunctionCall","src":"5191:10:0"}],"id":266,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":267,"name":"Literal","src":"5203:38:0"}],"id":268,"name":"FunctionCall","src":"5171:71:0"}],"id":269,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":270,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":271,"name":"Identifier","src":"5261:8:0"}],"id":272,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":273,"name":"Literal","src":"5273:4:0"}],"id":274,"name":"Assignment","src":"5252:25:0"}],"id":275,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_adminCount"},"id":276,"name":"Identifier","src":"5287:11:0"}],"id":277,"name":"UnaryOperation","src":"5287:13:0"}],"id":278,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":42,"type":"function (address,address)","value":"AddedAdmin"},"id":279,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":280,"name":"Identifier","src":"5326:3:0"}],"id":281,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":282,"name":"Identifier","src":"5338:8:0"}],"id":283,"name":"FunctionCall","src":"5315:32:0"}],"id":284,"name":"EmitStatement","src":"5310:37:0"}],"id":285,"name":"Block","src":"4917:437:0"}],"id":286,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":314,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":287,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":288,"name":"VariableDeclaration","src":"5453:16:0"}],"id":289,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":290,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":291,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":292,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":288,"type":"address","value":"_account"},"id":293,"name":"Identifier","src":"5506:8:0"}],"id":294,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":295,"name":"Literal","src":"5517:34:0"}],"id":296,"name":"FunctionCall","src":"5489:63:0"}],"id":297,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":298,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":288,"type":"address","value":"_account"},"id":299,"name":"Identifier","src":"5571:8:0"}],"id":300,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":301,"name":"Literal","src":"5583:5:0"}],"id":302,"name":"Assignment","src":"5562:26:0"}],"id":303,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_adminCount"},"id":304,"name":"Identifier","src":"5598:11:0"}],"id":305,"name":"UnaryOperation","src":"5598:13:0"}],"id":306,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":48,"type":"function (address,address)","value":"RemovedAdmin"},"id":307,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":308,"name":"Identifier","src":"5639:3:0"}],"id":309,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":288,"type":"address","value":"_account"},"id":310,"name":"Identifier","src":"5651:8:0"}],"id":311,"name":"FunctionCall","src":"5626:34:0"}],"id":312,"name":"EmitStatement","src":"5621:39:0"}],"id":313,"name":"Block","src":"5479:188:0"}],"id":314,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":315,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":316,"name":"VariableDeclaration","src":"5764:16:0"}],"id":317,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":318,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":319,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":320,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":321,"name":"Identifier","src":"5818:8:0"}],"id":322,"name":"IndexAccess","src":"5809:18:0"}],"id":323,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":324,"name":"Literal","src":"5829:38:0"}],"id":325,"name":"FunctionCall","src":"5800:68:0"}],"id":326,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":327,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":328,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":329,"name":"Identifier","src":"5901:8:0"}],"id":330,"name":"IndexAccess","src":"5887:23:0"}],"id":331,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":332,"name":"Literal","src":"5912:42:0"}],"id":333,"name":"FunctionCall","src":"5878:77:0"}],"id":334,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":335,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":336,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":337,"name":"Identifier","src":"5983:8:0"}],"id":338,"name":"FunctionCall","src":"5974:18:0"}],"id":339,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":340,"name":"Literal","src":"5994:39:0"}],"id":341,"name":"FunctionCall","src":"5965:69:0"}],"id":342,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":343,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":344,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":345,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":346,"name":"Literal","src":"6072:1:0"}],"id":347,"name":"FunctionCall","src":"6064:10:0"}],"id":348,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":349,"name":"Literal","src":"6076:38:0"}],"id":350,"name":"FunctionCall","src":"6044:71:0"}],"id":351,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":352,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":353,"name":"Identifier","src":"6139:8:0"}],"id":354,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":355,"name":"Literal","src":"6151:4:0"}],"id":356,"name":"Assignment","src":"6125:30:0"}],"id":357,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_controllerCount"},"id":358,"name":"Identifier","src":"6165:16:0"}],"id":359,"name":"UnaryOperation","src":"6165:18:0"}],"id":360,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"function (address,address)","value":"AddedController"},"id":361,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":362,"name":"Identifier","src":"6214:3:0"}],"id":363,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":364,"name":"Identifier","src":"6226:8:0"}],"id":365,"name":"FunctionCall","src":"6198:37:0"}],"id":366,"name":"EmitStatement","src":"6193:42:0"}],"id":367,"name":"Block","src":"5790:452:0"}],"id":368,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":396,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":369,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":370,"name":"VariableDeclaration","src":"6351:16:0"}],"id":371,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":372,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":373,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":374,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":370,"type":"address","value":"_account"},"id":375,"name":"Identifier","src":"6409:8:0"}],"id":376,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":377,"name":"Literal","src":"6420:38:0"}],"id":378,"name":"FunctionCall","src":"6387:72:0"}],"id":379,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":380,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":370,"type":"address","value":"_account"},"id":381,"name":"Identifier","src":"6483:8:0"}],"id":382,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":383,"name":"Literal","src":"6495:5:0"}],"id":384,"name":"Assignment","src":"6469:31:0"}],"id":385,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_controllerCount"},"id":386,"name":"Identifier","src":"6510:16:0"}],"id":387,"name":"UnaryOperation","src":"6510:18:0"}],"id":388,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"function (address,address)","value":"RemovedController"},"id":389,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":390,"name":"Identifier","src":"6561:3:0"}],"id":391,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":370,"type":"address","value":"_account"},"id":392,"name":"Identifier","src":"6573:8:0"}],"id":393,"name":"FunctionCall","src":"6543:39:0"}],"id":394,"name":"EmitStatement","src":"6538:44:0"}],"id":395,"name":"Block","src":"6377:212:0"}],"id":396,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":397,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":400,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":398,"name":"Identifier","src":"6687:16:0"}],"id":399,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":78,"type":"bool","value":"_stopped"},"id":401,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":402,"name":"Literal","src":"6725:4:0"}],"id":403,"name":"Assignment","src":"6714:15:0"}],"id":404,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":60,"type":"function (address)","value":"Stopped"},"id":405,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":406,"name":"Identifier","src":"6752:3:0"}],"id":407,"name":"MemberAccess","src":"6752:10:0"}],"id":408,"name":"FunctionCall","src":"6744:19:0"}],"id":409,"name":"EmitStatement","src":"6739:24:0"}],"id":410,"name":"Block","src":"6704:66:0"}],"id":411,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":412,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":415,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":413,"name":"Identifier","src":"6845:9:0"}],"id":414,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":78,"type":"bool","value":"_stopped"},"id":416,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":417,"name":"Literal","src":"6876:5:0"}],"id":418,"name":"Assignment","src":"6865:16:0"}],"id":419,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":64,"type":"function (address)","value":"Started"},"id":420,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":421,"name":"Identifier","src":"6904:3:0"}],"id":422,"name":"MemberAccess","src":"6904:10:0"}],"id":423,"name":"FunctionCall","src":"6896:19:0"}],"id":424,"name":"EmitStatement","src":"6891:24:0"}],"id":425,"name":"Block","src":"6855:67:0"}],"id":426,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":452,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":427,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":428,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":452,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":429,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":430,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":452,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":431,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":432,"name":"VariableDeclaration","src":"7063:15:0"}],"id":433,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":438,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":100,"type":"modifier ()","value":"onlyAdmin"},"id":434,"name":"Identifier","src":"7089:9:0"}],"id":435,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":436,"name":"Identifier","src":"7099:10:0"}],"id":437,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":439,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":428,"type":"address payable","value":"_to"},"id":440,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":430,"type":"address","value":"_asset"},"id":441,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":432,"type":"uint256","value":"_amount"},"id":442,"name":"Identifier","src":"7147:7:0"}],"id":443,"name":"FunctionCall","src":"7120:35:0"}],"id":444,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":56,"type":"function (address,address,uint256)","value":"Claimed"},"id":445,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":428,"type":"address payable","value":"_to"},"id":446,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":430,"type":"address","value":"_asset"},"id":447,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":432,"type":"uint256","value":"_amount"},"id":448,"name":"Identifier","src":"7191:7:0"}],"id":449,"name":"FunctionCall","src":"7170:29:0"}],"id":450,"name":"EmitStatement","src":"7165:34:0"}],"id":451,"name":"Block","src":"7110:96:0"}],"id":452,"name":"FunctionDefinition","src":"7011:195:0"}],"id":453,"name":"ContractDefinition","src":"1460:5748:0"}],"id":454,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[941]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":924,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[941],"name":"Address","scope":942},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":940,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":925,"name":"ElementaryTypeName","src":"562:7:1"}],"id":926,"name":"VariableDeclaration","src":"562:15:1"}],"id":927,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":940,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":928,"name":"ElementaryTypeName","src":"602:4:1"}],"id":929,"name":"VariableDeclaration","src":"602:4:1"}],"id":930,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[932],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":931,"name":"ElementaryTypeName","src":"805:7:1"}],"id":932,"name":"VariableDeclaration","src":"805:12:1"}],"id":933,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":932,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":926,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":934,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":930},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":932,"type":"uint256","value":"size"},"id":935,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":936,"name":"Literal","src":"947:1:1"}],"id":937,"name":"BinaryOperation","src":"940:8:1"}],"id":938,"name":"Return","src":"933:15:1"}],"id":939,"name":"Block","src":"608:347:1"}],"id":940,"name":"FunctionDefinition","src":"542:413:1"}],"id":941,"name":"ContractDefinition","src":"94:863:1"}],"id":942,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[703]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":652,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[703],"name":"ERC20","scope":704},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":703,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":661,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":653,"name":"ElementaryTypeName","src":"193:7:2"}],"id":654,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":661,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":655,"name":"ElementaryTypeName","src":"209:7:2"}],"id":656,"name":"VariableDeclaration","src":"209:16:2"}],"id":657,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":658,"name":"ElementaryTypeName","src":"250:7:2"}],"id":659,"name":"VariableDeclaration","src":"250:7:2"}],"id":660,"name":"ParameterList","src":"249:9:2"}],"id":661,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":703,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":670,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":662,"name":"ElementaryTypeName","src":"281:7:2"}],"id":663,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":670,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":664,"name":"ElementaryTypeName","src":"299:7:2"}],"id":665,"name":"VariableDeclaration","src":"299:14:2"}],"id":666,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":670,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":667,"name":"ElementaryTypeName","src":"333:4:2"}],"id":668,"name":"VariableDeclaration","src":"333:4:2"}],"id":669,"name":"ParameterList","src":"332:6:2"}],"id":670,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":703,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":677,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":671,"name":"ElementaryTypeName","src":"363:7:2"}],"id":672,"name":"VariableDeclaration","src":"363:12:2"}],"id":673,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":677,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":674,"name":"ElementaryTypeName","src":"400:7:2"}],"id":675,"name":"VariableDeclaration","src":"400:7:2"}],"id":676,"name":"ParameterList","src":"399:9:2"}],"id":677,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":703,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":678,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":682,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":679,"name":"ElementaryTypeName","src":"460:7:2"}],"id":680,"name":"VariableDeclaration","src":"460:7:2"}],"id":681,"name":"ParameterList","src":"459:9:2"}],"id":682,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":703,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":691,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":683,"name":"ElementaryTypeName","src":"492:7:2"}],"id":684,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":691,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":685,"name":"ElementaryTypeName","src":"505:7:2"}],"id":686,"name":"VariableDeclaration","src":"505:14:2"}],"id":687,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":691,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":688,"name":"ElementaryTypeName","src":"539:4:2"}],"id":689,"name":"VariableDeclaration","src":"539:4:2"}],"id":690,"name":"ParameterList","src":"538:6:2"}],"id":691,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":703,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":702,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":692,"name":"ElementaryTypeName","src":"572:7:2"}],"id":693,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":702,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":694,"name":"ElementaryTypeName","src":"587:7:2"}],"id":695,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":702,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":696,"name":"ElementaryTypeName","src":"600:7:2"}],"id":697,"name":"VariableDeclaration","src":"600:14:2"}],"id":698,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":702,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":699,"name":"ElementaryTypeName","src":"634:4:2"}],"id":700,"name":"VariableDeclaration","src":"634:4:2"}],"id":701,"name":"ParameterList","src":"633:6:2"}],"id":702,"name":"FunctionDefinition","src":"550:90:2"}],"id":703,"name":"ContractDefinition","src":"152:490:2"}],"id":704,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[922]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":705,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":704,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":923,"symbolAliases":[null],"unitAlias":""},"id":706,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":1075,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":923,"symbolAliases":[null],"unitAlias":""},"id":707,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":942,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":923,"symbolAliases":[null],"unitAlias":""},"id":708,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[922],"name":"SafeERC20","scope":923},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1074,"type":"library SafeMath"},"id":709,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":710,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":711,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":941,"type":"library Address"},"id":712,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":713,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":714,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":736,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":715,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":716,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":736,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":717,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":718,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":736,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":719,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":720,"name":"VariableDeclaration","src":"1850:13:3"}],"id":721,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":722,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":723,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"contract ERC20","value":"token"},"id":724,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":725,"name":"Identifier","src":"1910:3:3"}],"id":726,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":691,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"contract ERC20","value":"token"},"id":727,"name":"Identifier","src":"1933:5:3"}],"id":728,"name":"MemberAccess","src":"1933:14:3"}],"id":729,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":718,"type":"address","value":"to"},"id":730,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":720,"type":"uint256","value":"value"},"id":731,"name":"Identifier","src":"1962:5:3"}],"id":732,"name":"FunctionCall","src":"1910:58:3"}],"id":733,"name":"FunctionCall","src":"1884:85:3"}],"id":734,"name":"ExpressionStatement","src":"1884:85:3"}],"id":735,"name":"Block","src":"1874:102:3"}],"id":736,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":761,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":737,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":738,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":739,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":740,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":741,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":742,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":743,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":744,"name":"VariableDeclaration","src":"2047:13:3"}],"id":745,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":746,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":747,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"contract ERC20","value":"token"},"id":748,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":749,"name":"Identifier","src":"2107:3:3"}],"id":750,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":702,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"contract ERC20","value":"token"},"id":751,"name":"Identifier","src":"2130:5:3"}],"id":752,"name":"MemberAccess","src":"2130:18:3"}],"id":753,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":740,"type":"address","value":"from"},"id":754,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":742,"type":"address","value":"to"},"id":755,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"uint256","value":"value"},"id":756,"name":"Identifier","src":"2169:5:3"}],"id":757,"name":"FunctionCall","src":"2107:68:3"}],"id":758,"name":"FunctionCall","src":"2081:95:3"}],"id":759,"name":"ExpressionStatement","src":"2081:95:3"}],"id":760,"name":"Block","src":"2071:112:3"}],"id":761,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":802,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":762,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":763,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":802,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":764,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":765,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":802,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":766,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":767,"name":"VariableDeclaration","src":"2240:13:3"}],"id":768,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":769,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":770,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":767,"type":"uint256","value":"value"},"id":771,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":772,"name":"Literal","src":"2562:1:3"}],"id":773,"name":"BinaryOperation","src":"2553:10:3"}],"id":774,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":661,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":763,"type":"contract ERC20","value":"token"},"id":775,"name":"Identifier","src":"2569:5:3"}],"id":776,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$922","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":777,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1111,"type":"library SafeERC20","value":"this"},"id":778,"name":"Identifier","src":"2593:4:3"}],"id":779,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":765,"type":"address","value":"spender"},"id":780,"name":"Identifier","src":"2600:7:3"}],"id":781,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":782,"name":"Literal","src":"2612:1:3"}],"id":783,"name":"BinaryOperation","src":"2569:44:3"}],"id":784,"name":"TupleExpression","src":"2568:46:3"}],"id":785,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":786,"name":"Literal","src":"2628:56:3"}],"id":787,"name":"FunctionCall","src":"2544:150:3"}],"id":788,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":789,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":763,"type":"contract ERC20","value":"token"},"id":790,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":791,"name":"Identifier","src":"2730:3:3"}],"id":792,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":670,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":763,"type":"contract ERC20","value":"token"},"id":793,"name":"Identifier","src":"2753:5:3"}],"id":794,"name":"MemberAccess","src":"2753:13:3"}],"id":795,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":765,"type":"address","value":"spender"},"id":796,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":767,"type":"uint256","value":"value"},"id":797,"name":"Identifier","src":"2786:5:3"}],"id":798,"name":"FunctionCall","src":"2730:62:3"}],"id":799,"name":"FunctionCall","src":"2704:89:3"}],"id":800,"name":"ExpressionStatement","src":"2704:89:3"}],"id":801,"name":"Block","src":"2264:536:3"}],"id":802,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":837,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":803,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":804,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":837,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":805,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":806,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":837,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":807,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":808,"name":"VariableDeclaration","src":"2867:13:3"}],"id":809,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":810,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[812]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":836,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":811,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":812,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":968,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":661,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":804,"type":"contract ERC20","value":"token"},"id":813,"name":"Identifier","src":"2924:5:3"}],"id":814,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$922","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":815,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1111,"type":"library SafeERC20","value":"this"},"id":816,"name":"Identifier","src":"2948:4:3"}],"id":817,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":806,"type":"address","value":"spender"},"id":818,"name":"Identifier","src":"2955:7:3"}],"id":819,"name":"FunctionCall","src":"2924:39:3"}],"id":820,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":808,"type":"uint256","value":"value"},"id":821,"name":"Identifier","src":"2968:5:3"}],"id":822,"name":"FunctionCall","src":"2924:50:3"}],"id":823,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":824,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":804,"type":"contract ERC20","value":"token"},"id":825,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":826,"name":"Identifier","src":"3010:3:3"}],"id":827,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":670,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":804,"type":"contract ERC20","value":"token"},"id":828,"name":"Identifier","src":"3033:5:3"}],"id":829,"name":"MemberAccess","src":"3033:13:3"}],"id":830,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":806,"type":"address","value":"spender"},"id":831,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":812,"type":"uint256","value":"newAllowance"},"id":832,"name":"Identifier","src":"3066:12:3"}],"id":833,"name":"FunctionCall","src":"3010:69:3"}],"id":834,"name":"FunctionCall","src":"2984:96:3"}],"id":835,"name":"ExpressionStatement","src":"2984:96:3"}],"id":836,"name":"Block","src":"2891:196:3"}],"id":837,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":872,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":838,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":839,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":840,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":841,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":842,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":843,"name":"VariableDeclaration","src":"3154:13:3"}],"id":844,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":845,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[847]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":846,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":847,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":993,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":661,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":839,"type":"contract ERC20","value":"token"},"id":848,"name":"Identifier","src":"3211:5:3"}],"id":849,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$922","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":850,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1111,"type":"library SafeERC20","value":"this"},"id":851,"name":"Identifier","src":"3235:4:3"}],"id":852,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":841,"type":"address","value":"spender"},"id":853,"name":"Identifier","src":"3242:7:3"}],"id":854,"name":"FunctionCall","src":"3211:39:3"}],"id":855,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":843,"type":"uint256","value":"value"},"id":856,"name":"Identifier","src":"3255:5:3"}],"id":857,"name":"FunctionCall","src":"3211:50:3"}],"id":858,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":859,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":839,"type":"contract ERC20","value":"token"},"id":860,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":861,"name":"Identifier","src":"3297:3:3"}],"id":862,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":670,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":839,"type":"contract ERC20","value":"token"},"id":863,"name":"Identifier","src":"3320:5:3"}],"id":864,"name":"MemberAccess","src":"3320:13:3"}],"id":865,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":841,"type":"address","value":"spender"},"id":866,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":847,"type":"uint256","value":"newAllowance"},"id":867,"name":"Identifier","src":"3353:12:3"}],"id":868,"name":"FunctionCall","src":"3297:69:3"}],"id":869,"name":"FunctionCall","src":"3271:96:3"}],"id":870,"name":"ExpressionStatement","src":"3271:96:3"}],"id":871,"name":"Block","src":"3178:196:3"}],"id":872,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":921,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":873,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":874,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":921,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":875,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":876,"name":"VariableDeclaration","src":"3798:17:3"}],"id":877,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":878,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":879,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":940,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":880,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":874,"type":"contract ERC20","value":"token"},"id":881,"name":"Identifier","src":"4360:5:3"}],"id":882,"name":"FunctionCall","src":"4352:14:3"}],"id":883,"name":"MemberAccess","src":"4352:25:3"}],"id":884,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":885,"name":"Literal","src":"4381:33:3"}],"id":886,"name":"FunctionCall","src":"4344:71:3"}],"id":887,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[889,891]},"children":[{"attributes":{"constant":false,"name":"success","scope":920,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":888,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":889,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":920,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":890,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":891,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":892,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":874,"type":"contract ERC20","value":"token"},"id":893,"name":"Identifier","src":"4535:5:3"}],"id":894,"name":"FunctionCall","src":"4527:14:3"}],"id":895,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":876,"type":"bytes memory","value":"data"},"id":896,"name":"Identifier","src":"4547:4:3"}],"id":897,"name":"FunctionCall","src":"4527:25:3"}],"id":898,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":899,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":889,"type":"bool","value":"success"},"id":900,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":901,"name":"Literal","src":"4579:34:3"}],"id":902,"name":"FunctionCall","src":"4562:52:3"}],"id":903,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":891,"type":"bytes memory","value":"returndata"},"id":904,"name":"Identifier","src":"4629:10:3"}],"id":905,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":906,"name":"Literal","src":"4649:1:3"}],"id":907,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":908,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":909,"name":"Identifier","src":"4758:3:3"}],"id":910,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":891,"type":"bytes memory","value":"returndata"},"id":911,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":912,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":913,"name":"TupleExpression","src":"4781:6:3"}],"id":914,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":915,"name":"Literal","src":"4790:44:3"}],"id":916,"name":"FunctionCall","src":"4750:85:3"}],"id":917,"name":"ExpressionStatement","src":"4750:85:3"}],"id":918,"name":"Block","src":"4652:194:3"}],"id":919,"name":"IfStatement","src":"4625:221:3"}],"id":920,"name":"Block","src":"3826:1026:3"}],"id":921,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":922,"name":"ContractDefinition","src":"1715:3139:3"}],"id":923,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[1074]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":943,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[1074],"name":"SafeMath","scope":1075},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":944,"name":"ElementaryTypeName","src":"847:7:4"}],"id":945,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":946,"name":"ElementaryTypeName","src":"858:7:4"}],"id":947,"name":"VariableDeclaration","src":"858:9:4"}],"id":948,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":949,"name":"ElementaryTypeName","src":"892:7:4"}],"id":950,"name":"VariableDeclaration","src":"892:7:4"}],"id":951,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[953]},"children":[{"attributes":{"constant":false,"name":"c","scope":967,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":952,"name":"ElementaryTypeName","src":"911:7:4"}],"id":953,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"uint256","value":"a"},"id":954,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":947,"type":"uint256","value":"b"},"id":955,"name":"Identifier","src":"927:1:4"}],"id":956,"name":"BinaryOperation","src":"923:5:4"}],"id":957,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":958,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":953,"type":"uint256","value":"c"},"id":959,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"uint256","value":"a"},"id":960,"name":"Identifier","src":"951:1:4"}],"id":961,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":962,"name":"Literal","src":"954:29:4"}],"id":963,"name":"FunctionCall","src":"938:46:4"}],"id":964,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":951},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":953,"type":"uint256","value":"c"},"id":965,"name":"Identifier","src":"1002:1:4"}],"id":966,"name":"Return","src":"995:8:4"}],"id":967,"name":"Block","src":"901:109:4"}],"id":968,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":969,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":970,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":971,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":972,"name":"VariableDeclaration","src":"1298:9:4"}],"id":973,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":974,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":975,"name":"VariableDeclaration","src":"1332:7:4"}],"id":976,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":977,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":972,"type":"uint256","value":"b"},"id":978,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":970,"type":"uint256","value":"a"},"id":979,"name":"Identifier","src":"1364:1:4"}],"id":980,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":981,"name":"Literal","src":"1367:32:4"}],"id":982,"name":"FunctionCall","src":"1351:49:4"}],"id":983,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[985]},"children":[{"attributes":{"constant":false,"name":"c","scope":992,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":984,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":985,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":970,"type":"uint256","value":"a"},"id":986,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":972,"type":"uint256","value":"b"},"id":987,"name":"Identifier","src":"1426:1:4"}],"id":988,"name":"BinaryOperation","src":"1422:5:4"}],"id":989,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":976},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":985,"type":"uint256","value":"c"},"id":990,"name":"Identifier","src":"1445:1:4"}],"id":991,"name":"Return","src":"1438:8:4"}],"id":992,"name":"Block","src":"1341:112:4"}],"id":993,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1027,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":994,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":995,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":1027,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":996,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":997,"name":"VariableDeclaration","src":"1717:9:4"}],"id":998,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1027,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":999,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":1000,"name":"VariableDeclaration","src":"1751:7:4"}],"id":1001,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"a"},"id":1002,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1003,"name":"Literal","src":"1996:1:4"}],"id":1004,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":1001},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1005,"name":"Literal","src":"2020:1:4"}],"id":1006,"name":"Return","src":"2013:8:4"}],"id":1007,"name":"Block","src":"1999:33:4"}],"id":1008,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[1010]},"children":[{"attributes":{"constant":false,"name":"c","scope":1026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1009,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":1010,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"a"},"id":1011,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"uint256","value":"b"},"id":1012,"name":"Identifier","src":"2058:1:4"}],"id":1013,"name":"BinaryOperation","src":"2054:5:4"}],"id":1014,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":1015,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1010,"type":"uint256","value":"c"},"id":1016,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"a"},"id":1017,"name":"Identifier","src":"2081:1:4"}],"id":1018,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"uint256","value":"b"},"id":1019,"name":"Identifier","src":"2086:1:4"}],"id":1020,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":1021,"name":"Literal","src":"2089:35:4"}],"id":1022,"name":"FunctionCall","src":"2069:56:4"}],"id":1023,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":1001},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1010,"type":"uint256","value":"c"},"id":1024,"name":"Identifier","src":"2143:1:4"}],"id":1025,"name":"Return","src":"2136:8:4"}],"id":1026,"name":"Block","src":"1760:391:4"}],"id":1027,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1052,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1028,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":1029,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":1052,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1030,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":1031,"name":"VariableDeclaration","src":"2630:9:4"}],"id":1032,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1052,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1033,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":1034,"name":"VariableDeclaration","src":"2664:7:4"}],"id":1035,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":1036,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1031,"type":"uint256","value":"b"},"id":1037,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1038,"name":"Literal","src":"2761:1:4"}],"id":1039,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":1040,"name":"Literal","src":"2764:28:4"}],"id":1041,"name":"FunctionCall","src":"2749:44:4"}],"id":1042,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[1044]},"children":[{"attributes":{"constant":false,"name":"c","scope":1051,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1043,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":1044,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1029,"type":"uint256","value":"a"},"id":1045,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1031,"type":"uint256","value":"b"},"id":1046,"name":"Identifier","src":"2819:1:4"}],"id":1047,"name":"BinaryOperation","src":"2815:5:4"}],"id":1048,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":1035},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1044,"type":"uint256","value":"c"},"id":1049,"name":"Identifier","src":"2924:1:4"}],"id":1050,"name":"Return","src":"2917:8:4"}],"id":1051,"name":"Block","src":"2673:259:4"}],"id":1052,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1053,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":1054,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1055,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":1056,"name":"VariableDeclaration","src":"3400:9:4"}],"id":1057,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1058,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":1059,"name":"VariableDeclaration","src":"3434:7:4"}],"id":1060,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":1061,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"uint256","value":"b"},"id":1062,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1063,"name":"Literal","src":"3466:1:4"}],"id":1064,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":1065,"name":"Literal","src":"3469:26:4"}],"id":1066,"name":"FunctionCall","src":"3453:43:4"}],"id":1067,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":1060},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1054,"type":"uint256","value":"a"},"id":1068,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"uint256","value":"b"},"id":1069,"name":"Identifier","src":"3517:1:4"}],"id":1070,"name":"BinaryOperation","src":"3513:5:4"}],"id":1071,"name":"Return","src":"3506:12:4"}],"id":1072,"name":"Block","src":"3443:82:4"}],"id":1073,"name":"FunctionDefinition","src":"3376:149:4"}],"id":1074,"name":"ContractDefinition","src":"589:2938:4"}],"id":1075,"name":"SourceUnit","src":"0:3528:4"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[610]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":455,"name":"PragmaDirective","src":"767:24:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[610],"name":"Ownable","scope":611},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":461,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":456,"name":"ElementaryTypeName","src":"1199:7:5"}],"id":457,"name":"VariableDeclaration","src":"1199:13:5"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":461,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":458,"name":"ElementaryTypeName","src":"1214:7:5"}],"id":459,"name":"VariableDeclaration","src":"1214:11:5"}],"id":460,"name":"ParameterList","src":"1198:28:5"}],"id":461,"name":"EventDefinition","src":"1172:55:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":465,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":462,"name":"ElementaryTypeName","src":"1254:7:5"}],"id":463,"name":"VariableDeclaration","src":"1254:15:5"}],"id":464,"name":"ParameterList","src":"1253:17:5"}],"id":465,"name":"EventDefinition","src":"1232:39:5"},{"attributes":{"constant":false,"name":"_owner","scope":610,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":466,"name":"ElementaryTypeName","src":"1277:15:5"}],"id":467,"name":"VariableDeclaration","src":"1277:30:5"},{"attributes":{"constant":false,"name":"_isTransferable","scope":610,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":468,"name":"ElementaryTypeName","src":"1313:4:5"}],"id":469,"name":"VariableDeclaration","src":"1313:28:5"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":610,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":500,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":470,"name":"ElementaryTypeName","src":"1476:15:5"}],"id":471,"name":"VariableDeclaration","src":"1476:25:5"},{"attributes":{"constant":false,"name":"_transferable_","scope":500,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":472,"name":"ElementaryTypeName","src":"1503:4:5"}],"id":473,"name":"VariableDeclaration","src":"1503:19:5"}],"id":474,"name":"ParameterList","src":"1475:48:5"},{"attributes":{"parameters":[null]},"children":[],"id":475,"name":"ParameterList","src":"1533:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":476,"name":"Identifier","src":"1543:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":471,"type":"address payable","value":"_account_"},"id":477,"name":"Identifier","src":"1552:9:5"}],"id":478,"name":"Assignment","src":"1543:18:5"}],"id":479,"name":"ExpressionStatement","src":"1543:18:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":480,"name":"Identifier","src":"1571:15:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":473,"type":"bool","value":"_transferable_"},"id":481,"name":"Identifier","src":"1589:14:5"}],"id":482,"name":"Assignment","src":"1571:32:5"}],"id":483,"name":"ExpressionStatement","src":"1571:32:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":484,"name":"Identifier","src":"1687:15:5"}],"id":485,"name":"UnaryOperation","src":"1686:16:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":465,"type":"function (address)","value":"LockedOwnership"},"id":486,"name":"Identifier","src":"1723:15:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":471,"type":"address payable","value":"_account_"},"id":487,"name":"Identifier","src":"1739:9:5"}],"id":488,"name":"FunctionCall","src":"1723:26:5"}],"id":489,"name":"EmitStatement","src":"1718:31:5"}],"id":490,"name":"Block","src":"1704:56:5"}],"id":491,"name":"IfStatement","src":"1682:78:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"function (address,address)","value":"TransferredOwnership"},"id":492,"name":"Identifier","src":"1774:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":493,"name":"ElementaryTypeNameExpression","src":"1795:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":494,"name":"Literal","src":"1803:1:5"}],"id":495,"name":"FunctionCall","src":"1795:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":471,"type":"address payable","value":"_account_"},"id":496,"name":"Identifier","src":"1807:9:5"}],"id":497,"name":"FunctionCall","src":"1774:43:5"}],"id":498,"name":"EmitStatement","src":"1769:48:5"}],"id":499,"name":"Block","src":"1533:291:5"}],"id":500,"name":"FunctionDefinition","src":"1464:360:5"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":501,"name":"ParameterList","src":"1919:2:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":502,"name":"Identifier","src":"1932:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":503,"name":"Identifier","src":"1940:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":504,"name":"Identifier","src":"1949:3:5"}],"id":505,"name":"MemberAccess","src":"1949:10:5"}],"id":506,"name":"FunctionCall","src":"1940:20:5"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":507,"name":"Literal","src":"1962:24:5"}],"id":508,"name":"FunctionCall","src":"1932:55:5"}],"id":509,"name":"ExpressionStatement","src":"1932:55:5"},{"id":510,"name":"PlaceholderStatement","src":"1997:1:5"}],"id":511,"name":"Block","src":"1922:83:5"}],"id":512,"name":"ModifierDefinition","src":"1901:104:5"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":610,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":557,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":513,"name":"ElementaryTypeName","src":"2274:15:5"}],"id":514,"name":"VariableDeclaration","src":"2274:24:5"},{"attributes":{"constant":false,"name":"_transferable","scope":557,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":515,"name":"ElementaryTypeName","src":"2300:4:5"}],"id":516,"name":"VariableDeclaration","src":"2300:18:5"}],"id":517,"name":"ParameterList","src":"2273:46:5"},{"attributes":{"parameters":[null]},"children":[],"id":520,"name":"ParameterList","src":"2339:0:5"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":518,"name":"Identifier","src":"2329:9:5"}],"id":519,"name":"ModifierInvocation","src":"2329:9:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":521,"name":"Identifier","src":"2404:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":522,"name":"Identifier","src":"2412:15:5"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":523,"name":"Literal","src":"2429:31:5"}],"id":524,"name":"FunctionCall","src":"2404:57:5"}],"id":525,"name":"ExpressionStatement","src":"2404:57:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":526,"name":"Identifier","src":"2534:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":514,"type":"address payable","value":"_account"},"id":527,"name":"Identifier","src":"2542:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":528,"name":"ElementaryTypeNameExpression","src":"2554:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":529,"name":"Literal","src":"2562:1:5"}],"id":530,"name":"FunctionCall","src":"2554:10:5"}],"id":531,"name":"BinaryOperation","src":"2542:22:5"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":532,"name":"Literal","src":"2566:37:5"}],"id":533,"name":"FunctionCall","src":"2534:70:5"}],"id":534,"name":"ExpressionStatement","src":"2534:70:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":535,"name":"Identifier","src":"2689:15:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":516,"type":"bool","value":"_transferable"},"id":536,"name":"Identifier","src":"2707:13:5"}],"id":537,"name":"Assignment","src":"2689:31:5"}],"id":538,"name":"ExpressionStatement","src":"2689:31:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":516,"type":"bool","value":"_transferable"},"id":539,"name":"Identifier","src":"2804:13:5"}],"id":540,"name":"UnaryOperation","src":"2803:14:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":465,"type":"function (address)","value":"LockedOwnership"},"id":541,"name":"Identifier","src":"2838:15:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":514,"type":"address payable","value":"_account"},"id":542,"name":"Identifier","src":"2854:8:5"}],"id":543,"name":"FunctionCall","src":"2838:25:5"}],"id":544,"name":"EmitStatement","src":"2833:30:5"}],"id":545,"name":"Block","src":"2819:55:5"}],"id":546,"name":"IfStatement","src":"2799:75:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"function (address,address)","value":"TransferredOwnership"},"id":547,"name":"Identifier","src":"2934:20:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":548,"name":"Identifier","src":"2955:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":514,"type":"address payable","value":"_account"},"id":549,"name":"Identifier","src":"2963:8:5"}],"id":550,"name":"FunctionCall","src":"2934:38:5"}],"id":551,"name":"EmitStatement","src":"2929:43:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":552,"name":"Identifier","src":"3032:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":514,"type":"address payable","value":"_account"},"id":553,"name":"Identifier","src":"3041:8:5"}],"id":554,"name":"Assignment","src":"3032:17:5"}],"id":555,"name":"ExpressionStatement","src":"3032:17:5"}],"id":556,"name":"Block","src":"2339:717:5"}],"id":557,"name":"FunctionDefinition","src":"2247:809:5"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":610,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":558,"name":"ParameterList","src":"3196:2:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":565,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":559,"name":"ElementaryTypeName","src":"3222:4:5"}],"id":560,"name":"VariableDeclaration","src":"3222:4:5"}],"id":561,"name":"ParameterList","src":"3221:6:5"},{"children":[{"attributes":{"functionReturnParameters":561},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":562,"name":"Identifier","src":"3245:15:5"}],"id":563,"name":"Return","src":"3238:22:5"}],"id":564,"name":"Block","src":"3228:39:5"}],"id":565,"name":"FunctionDefinition","src":"3173:94:5"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":610,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":566,"name":"ParameterList","src":"3569:2:5"},{"attributes":{"parameters":[null]},"children":[],"id":569,"name":"ParameterList","src":"3591:0:5"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":567,"name":"Identifier","src":"3581:9:5"}],"id":568,"name":"ModifierInvocation","src":"3581:9:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":570,"name":"Identifier","src":"3656:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":571,"name":"Identifier","src":"3664:15:5"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":572,"name":"Literal","src":"3681:31:5"}],"id":573,"name":"FunctionCall","src":"3656:57:5"}],"id":574,"name":"ExpressionStatement","src":"3656:57:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":575,"name":"Identifier","src":"3767:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":576,"name":"ElementaryTypeNameExpression","src":"3776:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":577,"name":"Literal","src":"3784:1:5"}],"id":578,"name":"FunctionCall","src":"3776:10:5"}],"id":579,"name":"Assignment","src":"3767:19:5"}],"id":580,"name":"ExpressionStatement","src":"3767:19:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"function (address,address)","value":"TransferredOwnership"},"id":581,"name":"Identifier","src":"3802:20:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":582,"name":"Identifier","src":"3823:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":583,"name":"ElementaryTypeNameExpression","src":"3831:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":584,"name":"Literal","src":"3839:1:5"}],"id":585,"name":"FunctionCall","src":"3831:10:5"}],"id":586,"name":"FunctionCall","src":"3802:40:5"}],"id":587,"name":"EmitStatement","src":"3797:45:5"}],"id":588,"name":"Block","src":"3591:258:5"}],"id":589,"name":"FunctionDefinition","src":"3543:306:5"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":610,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":590,"name":"ParameterList","src":"3946:2:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":597,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":591,"name":"ElementaryTypeName","src":"3970:15:5"}],"id":592,"name":"VariableDeclaration","src":"3970:15:5"}],"id":593,"name":"ParameterList","src":"3969:17:5"},{"children":[{"attributes":{"functionReturnParameters":593},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":594,"name":"Identifier","src":"4004:6:5"}],"id":595,"name":"Return","src":"3997:13:5"}],"id":596,"name":"Block","src":"3987:30:5"}],"id":597,"name":"FunctionDefinition","src":"3932:85:5"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":610,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":609,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":598,"name":"ElementaryTypeName","src":"4141:7:5"}],"id":599,"name":"VariableDeclaration","src":"4141:16:5"}],"id":600,"name":"ParameterList","src":"4140:18:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":609,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":601,"name":"ElementaryTypeName","src":"4182:4:5"}],"id":602,"name":"VariableDeclaration","src":"4182:4:5"}],"id":603,"name":"ParameterList","src":"4181:6:5"},{"children":[{"attributes":{"functionReturnParameters":603},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":599,"type":"address","value":"_address"},"id":604,"name":"Identifier","src":"4205:8:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":605,"name":"Identifier","src":"4217:6:5"}],"id":606,"name":"BinaryOperation","src":"4205:18:5"}],"id":607,"name":"Return","src":"4198:25:5"}],"id":608,"name":"Block","src":"4188:42:5"}],"id":609,"name":"FunctionDefinition","src":"4123:107:5"}],"id":610,"name":"ContractDefinition","src":"1149:3083:5"}],"id":611,"name":"SourceUnit","src":"767:3466:5"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[650]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":612,"name":"PragmaDirective","src":"773:24:6"},{"attributes":{"SourceUnit":704,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":651,"symbolAliases":[null],"unitAlias":""},"id":613,"name":"ImportDirective","src":"799:32:6"},{"attributes":{"SourceUnit":923,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":651,"symbolAliases":[null],"unitAlias":""},"id":614,"name":"ImportDirective","src":"832:36:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[650],"name":"Transferrable","scope":651},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":922,"type":"library SafeERC20"},"id":615,"name":"UserDefinedTypeName","src":"996:9:6"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":616,"name":"UserDefinedTypeName","src":"1010:5:6"}],"id":617,"name":"UsingForDirective","src":"990:26:6"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":649,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":618,"name":"ElementaryTypeName","src":"1389:15:6"}],"id":619,"name":"VariableDeclaration","src":"1389:19:6"},{"attributes":{"constant":false,"name":"_asset","scope":649,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":620,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":621,"name":"VariableDeclaration","src":"1410:14:6"},{"attributes":{"constant":false,"name":"_amount","scope":649,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":622,"name":"ElementaryTypeName","src":"1426:7:6"}],"id":623,"name":"VariableDeclaration","src":"1426:15:6"}],"id":624,"name":"ParameterList","src":"1388:54:6"},{"attributes":{"parameters":[null]},"children":[],"id":625,"name":"ParameterList","src":"1452:0:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":621,"type":"address","value":"_asset"},"id":626,"name":"Identifier","src":"1510:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":627,"name":"ElementaryTypeNameExpression","src":"1520:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":628,"name":"Literal","src":"1528:1:6"}],"id":629,"name":"FunctionCall","src":"1520:10:6"}],"id":630,"name":"BinaryOperation","src":"1510:20:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":619,"type":"address payable","value":"_to"},"id":631,"name":"Identifier","src":"1546:3:6"}],"id":633,"name":"MemberAccess","src":"1546:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":623,"type":"uint256","value":"_amount"},"id":634,"name":"Identifier","src":"1559:7:6"}],"id":635,"name":"FunctionCall","src":"1546:21:6"}],"id":636,"name":"ExpressionStatement","src":"1546:21:6"}],"id":637,"name":"Block","src":"1532:46:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":736,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":703,"type":"type(contract ERC20)","value":"ERC20"},"id":638,"name":"Identifier","src":"1598:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":621,"type":"address","value":"_asset"},"id":639,"name":"Identifier","src":"1604:6:6"}],"id":640,"name":"FunctionCall","src":"1598:13:6"}],"id":641,"name":"MemberAccess","src":"1598:26:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":619,"type":"address payable","value":"_to"},"id":642,"name":"Identifier","src":"1625:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":623,"type":"uint256","value":"_amount"},"id":643,"name":"Identifier","src":"1630:7:6"}],"id":644,"name":"FunctionCall","src":"1598:40:6"}],"id":645,"name":"ExpressionStatement","src":"1598:40:6"}],"id":646,"name":"Block","src":"1584:65:6"}],"id":647,"name":"IfStatement","src":"1506:143:6"}],"id":648,"name":"Block","src":"1452:203:6"}],"id":649,"name":"FunctionDefinition","src":"1366:289:6"}],"id":650,"name":"ContractDefinition","src":"961:696:6"}],"id":651,"name":"SourceUnit","src":"773:885:6"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:5;;-1:-1:-1;;;;;;1543:18:5;-1:-1:-1;;;;;1543:18:5;;;-1:-1:-1;;;;1571:32:5;;;;2239:84:0;;2314:5;1571:32:5;-1:-1:-1;;;1687:15:5;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:5;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:5;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:5:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:5:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:5;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:5:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:5;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:5;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:5:-;3222:4;3245:15;-1:-1:-1;;;3245:15:5;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:5;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:5:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:5;;;;3656:57;;;;;-1:-1:-1;;;3656:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:5;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:5;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:5:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:5;;;;2404:57;;;;;-1:-1:-1;;;2404:57:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:5;;2534:70;;;;-1:-1:-1;;;2534:70:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:5;-1:-1:-1;;;2689:31:5;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:5;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:5;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:5;:17;;-1:-1:-1;;;;;;3032:17:5;-1:-1:-1;;;;;3032:17:5;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:5;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;-1:-1:-1;;;1932:55:5;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:5:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:5;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:6:-;-1:-1:-1;;;;;1510:20:6;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:6;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:6;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:6;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:6:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:6;;;;;;;","srcmap-runtime":"961:696:6:-;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","internals/ownable.sol","internals/transferrable.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[453],"IController":[18]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":611,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":454,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":651,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":454,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[18],"name":"IController","scope":454},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":18,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":10,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":5,"name":"VariableDeclaration","src":"1015:7:0"}],"id":6,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":10,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":8,"name":"VariableDeclaration","src":"1047:4:0"}],"id":9,"name":"ParameterList","src":"1046:6:0"}],"id":10,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":18,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":17,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":12,"name":"VariableDeclaration","src":"1076:7:0"}],"id":13,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":17,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":15,"name":"VariableDeclaration","src":"1108:4:0"}],"id":16,"name":"ParameterList","src":"1107:6:0"}],"id":17,"name":"FunctionDefinition","src":"1059:55:0"}],"id":18,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[18,610,650],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[453,650,610,18],"name":"Controller","scope":454},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":18,"type":"contract IController"},"id":19,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":20,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":610,"type":"contract Ownable"},"id":21,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":22,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":650,"type":"contract Transferrable"},"id":23,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":24,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":30,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":25,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":26,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":30,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":27,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":28,"name":"VariableDeclaration","src":"1564:19:0"}],"id":29,"name":"ParameterList","src":"1546:38:0"}],"id":30,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":36,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":31,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":32,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":36,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":33,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":34,"name":"VariableDeclaration","src":"1631:19:0"}],"id":35,"name":"ParameterList","src":"1613:38:0"}],"id":36,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":42,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":37,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":38,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":42,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":39,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":40,"name":"VariableDeclaration","src":"1692:14:0"}],"id":41,"name":"ParameterList","src":"1674:33:0"}],"id":42,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":48,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":43,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":44,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":48,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":45,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":46,"name":"VariableDeclaration","src":"1749:14:0"}],"id":47,"name":"ParameterList","src":"1731:33:0"}],"id":48,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":56,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":49,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":50,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":56,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":51,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":52,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":56,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":53,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":54,"name":"VariableDeclaration","src":"1814:15:0"}],"id":55,"name":"ParameterList","src":"1784:46:0"}],"id":56,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":60,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":57,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":58,"name":"VariableDeclaration","src":"1851:15:0"}],"id":59,"name":"ParameterList","src":"1850:17:0"}],"id":60,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":64,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":61,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":62,"name":"VariableDeclaration","src":"1887:15:0"}],"id":63,"name":"ParameterList","src":"1886:17:0"}],"id":64,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":453,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":65,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":66,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":67,"name":"Mapping","src":"1910:24:0"}],"id":68,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":453,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":69,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":70,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":453,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":71,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":72,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":73,"name":"Mapping","src":"1991:24:0"}],"id":74,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":453,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":75,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":76,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":453,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":77,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":78,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":88,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":79,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":80,"name":"VariableDeclaration","src":"2251:30:0"}],"id":81,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":86,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":610,"type":"type(contract Ownable)","value":"Ownable"},"id":82,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":80,"type":"address payable","value":"_ownerAddress_"},"id":83,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":84,"name":"Literal","src":"2314:5:0"}],"id":85,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":87,"name":"Block","src":"2321:2:0"}],"id":88,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":89,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":90,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":91,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":92,"name":"Identifier","src":"2431:3:0"}],"id":93,"name":"MemberAccess","src":"2431:10:0"}],"id":94,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":95,"name":"Literal","src":"2444:21:0"}],"id":96,"name":"FunctionCall","src":"2414:52:0"}],"id":97,"name":"ExpressionStatement","src":"2414:52:0"},{"id":98,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":99,"name":"Block","src":"2404:80:0"}],"id":100,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":101,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":102,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":103,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":104,"name":"Identifier","src":"2585:3:0"}],"id":105,"name":"MemberAccess","src":"2585:10:0"}],"id":106,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":107,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":108,"name":"Identifier","src":"2609:3:0"}],"id":109,"name":"MemberAccess","src":"2609:10:0"}],"id":110,"name":"IndexAccess","src":"2600:20:0"}],"id":111,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":112,"name":"Literal","src":"2622:30:0"}],"id":113,"name":"FunctionCall","src":"2568:85:0"}],"id":114,"name":"ExpressionStatement","src":"2568:85:0"},{"id":115,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":116,"name":"Block","src":"2558:113:0"}],"id":117,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":118,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":119,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":232,"type":"function () view returns (bool)","value":"isStopped"},"id":120,"name":"Identifier","src":"2765:9:0"}],"id":121,"name":"FunctionCall","src":"2765:11:0"}],"id":122,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":123,"name":"Literal","src":"2778:23:0"}],"id":124,"name":"FunctionCall","src":"2756:46:0"}],"id":125,"name":"ExpressionStatement","src":"2756:46:0"},{"id":126,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":127,"name":"Block","src":"2746:74:0"}],"id":128,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":142,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":129,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":130,"name":"VariableDeclaration","src":"2961:16:0"}],"id":131,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":136,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":132,"name":"Identifier","src":"2988:9:0"}],"id":133,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":134,"name":"Identifier","src":"2998:10:0"}],"id":135,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":286,"type":"function (address)","value":"_addAdmin"},"id":137,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"address","value":"_account"},"id":138,"name":"Identifier","src":"3029:8:0"}],"id":139,"name":"FunctionCall","src":"3019:19:0"}],"id":140,"name":"ExpressionStatement","src":"3019:19:0"}],"id":141,"name":"Block","src":"3009:36:0"}],"id":142,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":154,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":143,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":144,"name":"VariableDeclaration","src":"3195:16:0"}],"id":145,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":148,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":146,"name":"Identifier","src":"3222:9:0"}],"id":147,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"function (address)","value":"_removeAdmin"},"id":149,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":144,"type":"address","value":"_account"},"id":150,"name":"Identifier","src":"3255:8:0"}],"id":151,"name":"FunctionCall","src":"3242:22:0"}],"id":152,"name":"ExpressionStatement","src":"3242:22:0"}],"id":153,"name":"Block","src":"3232:39:0"}],"id":154,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":453,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":155,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":156,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":157,"name":"VariableDeclaration","src":"3368:7:0"}],"id":158,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":158},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_adminCount"},"id":159,"name":"Identifier","src":"3394:11:0"}],"id":160,"name":"Return","src":"3387:18:0"}],"id":161,"name":"Block","src":"3377:35:0"}],"id":162,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":176,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":163,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":164,"name":"VariableDeclaration","src":"3573:16:0"}],"id":165,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":170,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":166,"name":"Identifier","src":"3600:16:0"}],"id":167,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":168,"name":"Identifier","src":"3617:10:0"}],"id":169,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":368,"type":"function (address)","value":"_addController"},"id":171,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"address","value":"_account"},"id":172,"name":"Identifier","src":"3653:8:0"}],"id":173,"name":"FunctionCall","src":"3638:24:0"}],"id":174,"name":"ExpressionStatement","src":"3638:24:0"}],"id":175,"name":"Block","src":"3628:41:0"}],"id":176,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":188,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":177,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":178,"name":"VariableDeclaration","src":"3839:16:0"}],"id":179,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":182,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":180,"name":"Identifier","src":"3866:16:0"}],"id":181,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"function (address)","value":"_removeController"},"id":183,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":178,"type":"address","value":"_account"},"id":184,"name":"Identifier","src":"3911:8:0"}],"id":185,"name":"FunctionCall","src":"3893:27:0"}],"id":186,"name":"ExpressionStatement","src":"3893:27:0"}],"id":187,"name":"Block","src":"3883:44:0"}],"id":188,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":453,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":189,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":196,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":190,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":191,"name":"VariableDeclaration","src":"4072:7:0"}],"id":192,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":192},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_controllerCount"},"id":193,"name":"Identifier","src":"4098:16:0"}],"id":194,"name":"Return","src":"4091:23:0"}],"id":195,"name":"Block","src":"4081:40:0"}],"id":196,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":453,"stateMutability":"view","superFunction":17,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":210,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":197,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":198,"name":"VariableDeclaration","src":"4242:16:0"}],"id":199,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":210,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":202,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":203,"name":"VariableDeclaration","src":"4294:4:0"}],"id":204,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":200,"name":"Identifier","src":"4274:10:0"}],"id":201,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":204},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":205,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":198,"type":"address","value":"_account"},"id":206,"name":"Identifier","src":"4326:8:0"}],"id":207,"name":"IndexAccess","src":"4317:18:0"}],"id":208,"name":"Return","src":"4310:25:0"}],"id":209,"name":"Block","src":"4300:42:0"}],"id":210,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":453,"stateMutability":"view","superFunction":10,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":224,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":211,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":212,"name":"VariableDeclaration","src":"4476:16:0"}],"id":213,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":224,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":216,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":217,"name":"VariableDeclaration","src":"4528:4:0"}],"id":218,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":214,"name":"Identifier","src":"4508:10:0"}],"id":215,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":218},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":219,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":212,"type":"address","value":"_account"},"id":220,"name":"Identifier","src":"4565:8:0"}],"id":221,"name":"IndexAccess","src":"4551:23:0"}],"id":222,"name":"Return","src":"4544:30:0"}],"id":223,"name":"Block","src":"4534:47:0"}],"id":224,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":453,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":225,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":232,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":226,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":227,"name":"VariableDeclaration","src":"4769:4:0"}],"id":228,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":228},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":78,"type":"bool","value":"_stopped"},"id":229,"name":"Identifier","src":"4792:8:0"}],"id":230,"name":"Return","src":"4785:15:0"}],"id":231,"name":"Block","src":"4775:32:0"}],"id":232,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":286,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":233,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":234,"name":"VariableDeclaration","src":"4894:16:0"}],"id":235,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":236,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":237,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":238,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":239,"name":"Identifier","src":"4948:8:0"}],"id":240,"name":"IndexAccess","src":"4939:18:0"}],"id":241,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":242,"name":"Literal","src":"4959:38:0"}],"id":243,"name":"FunctionCall","src":"4930:68:0"}],"id":244,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":245,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":246,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":247,"name":"Identifier","src":"5031:8:0"}],"id":248,"name":"IndexAccess","src":"5017:23:0"}],"id":249,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":250,"name":"Literal","src":"5042:42:0"}],"id":251,"name":"FunctionCall","src":"5008:77:0"}],"id":252,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":253,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":254,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":255,"name":"Identifier","src":"5113:8:0"}],"id":256,"name":"FunctionCall","src":"5104:18:0"}],"id":257,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":258,"name":"Literal","src":"5124:39:0"}],"id":259,"name":"FunctionCall","src":"5095:69:0"}],"id":260,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":261,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":262,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":263,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":264,"name":"Literal","src":"5202:1:0"}],"id":265,"name":"FunctionCall","src":"5194:10:0"}],"id":266,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":267,"name":"Literal","src":"5206:38:0"}],"id":268,"name":"FunctionCall","src":"5174:71:0"}],"id":269,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":270,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":271,"name":"Identifier","src":"5264:8:0"}],"id":272,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":273,"name":"Literal","src":"5276:4:0"}],"id":274,"name":"Assignment","src":"5255:25:0"}],"id":275,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_adminCount"},"id":276,"name":"Identifier","src":"5290:11:0"}],"id":277,"name":"UnaryOperation","src":"5290:13:0"}],"id":278,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":42,"type":"function (address,address)","value":"AddedAdmin"},"id":279,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":280,"name":"Identifier","src":"5329:3:0"}],"id":281,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":234,"type":"address","value":"_account"},"id":282,"name":"Identifier","src":"5341:8:0"}],"id":283,"name":"FunctionCall","src":"5318:32:0"}],"id":284,"name":"EmitStatement","src":"5313:37:0"}],"id":285,"name":"Block","src":"4920:437:0"}],"id":286,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":314,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":287,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":288,"name":"VariableDeclaration","src":"5456:16:0"}],"id":289,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":290,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":291,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":292,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":288,"type":"address","value":"_account"},"id":293,"name":"Identifier","src":"5509:8:0"}],"id":294,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":295,"name":"Literal","src":"5520:34:0"}],"id":296,"name":"FunctionCall","src":"5492:63:0"}],"id":297,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":298,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":288,"type":"address","value":"_account"},"id":299,"name":"Identifier","src":"5574:8:0"}],"id":300,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":301,"name":"Literal","src":"5586:5:0"}],"id":302,"name":"Assignment","src":"5565:26:0"}],"id":303,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_adminCount"},"id":304,"name":"Identifier","src":"5601:11:0"}],"id":305,"name":"UnaryOperation","src":"5601:13:0"}],"id":306,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":48,"type":"function (address,address)","value":"RemovedAdmin"},"id":307,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":308,"name":"Identifier","src":"5642:3:0"}],"id":309,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":288,"type":"address","value":"_account"},"id":310,"name":"Identifier","src":"5654:8:0"}],"id":311,"name":"FunctionCall","src":"5629:34:0"}],"id":312,"name":"EmitStatement","src":"5624:39:0"}],"id":313,"name":"Block","src":"5482:188:0"}],"id":314,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":315,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":316,"name":"VariableDeclaration","src":"5767:16:0"}],"id":317,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":318,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":319,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":68,"type":"mapping(address => bool)","value":"_isAdmin"},"id":320,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":321,"name":"Identifier","src":"5821:8:0"}],"id":322,"name":"IndexAccess","src":"5812:18:0"}],"id":323,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":324,"name":"Literal","src":"5832:38:0"}],"id":325,"name":"FunctionCall","src":"5803:68:0"}],"id":326,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":327,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":328,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":329,"name":"Identifier","src":"5904:8:0"}],"id":330,"name":"IndexAccess","src":"5890:23:0"}],"id":331,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":332,"name":"Literal","src":"5915:42:0"}],"id":333,"name":"FunctionCall","src":"5881:77:0"}],"id":334,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":335,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":336,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":337,"name":"Identifier","src":"5986:8:0"}],"id":338,"name":"FunctionCall","src":"5977:18:0"}],"id":339,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":340,"name":"Literal","src":"5997:39:0"}],"id":341,"name":"FunctionCall","src":"5968:69:0"}],"id":342,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":343,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":344,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":345,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":346,"name":"Literal","src":"6075:1:0"}],"id":347,"name":"FunctionCall","src":"6067:10:0"}],"id":348,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":349,"name":"Literal","src":"6079:38:0"}],"id":350,"name":"FunctionCall","src":"6047:71:0"}],"id":351,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":352,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":353,"name":"Identifier","src":"6142:8:0"}],"id":354,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":355,"name":"Literal","src":"6154:4:0"}],"id":356,"name":"Assignment","src":"6128:30:0"}],"id":357,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_controllerCount"},"id":358,"name":"Identifier","src":"6168:16:0"}],"id":359,"name":"UnaryOperation","src":"6168:18:0"}],"id":360,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"function (address,address)","value":"AddedController"},"id":361,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":362,"name":"Identifier","src":"6217:3:0"}],"id":363,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"address","value":"_account"},"id":364,"name":"Identifier","src":"6229:8:0"}],"id":365,"name":"FunctionCall","src":"6201:37:0"}],"id":366,"name":"EmitStatement","src":"6196:42:0"}],"id":367,"name":"Block","src":"5793:452:0"}],"id":368,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":396,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":369,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":370,"name":"VariableDeclaration","src":"6354:16:0"}],"id":371,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":372,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":373,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":374,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":370,"type":"address","value":"_account"},"id":375,"name":"Identifier","src":"6412:8:0"}],"id":376,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":377,"name":"Literal","src":"6423:38:0"}],"id":378,"name":"FunctionCall","src":"6390:72:0"}],"id":379,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":74,"type":"mapping(address => bool)","value":"_isController"},"id":380,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":370,"type":"address","value":"_account"},"id":381,"name":"Identifier","src":"6486:8:0"}],"id":382,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":383,"name":"Literal","src":"6498:5:0"}],"id":384,"name":"Assignment","src":"6472:31:0"}],"id":385,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_controllerCount"},"id":386,"name":"Identifier","src":"6513:16:0"}],"id":387,"name":"UnaryOperation","src":"6513:18:0"}],"id":388,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"function (address,address)","value":"RemovedController"},"id":389,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":390,"name":"Identifier","src":"6564:3:0"}],"id":391,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":370,"type":"address","value":"_account"},"id":392,"name":"Identifier","src":"6576:8:0"}],"id":393,"name":"FunctionCall","src":"6546:39:0"}],"id":394,"name":"EmitStatement","src":"6541:44:0"}],"id":395,"name":"Block","src":"6380:212:0"}],"id":396,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":397,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":400,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":398,"name":"Identifier","src":"6690:16:0"}],"id":399,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":78,"type":"bool","value":"_stopped"},"id":401,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":402,"name":"Literal","src":"6728:4:0"}],"id":403,"name":"Assignment","src":"6717:15:0"}],"id":404,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":60,"type":"function (address)","value":"Stopped"},"id":405,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":406,"name":"Identifier","src":"6755:3:0"}],"id":407,"name":"MemberAccess","src":"6755:10:0"}],"id":408,"name":"FunctionCall","src":"6747:19:0"}],"id":409,"name":"EmitStatement","src":"6742:24:0"}],"id":410,"name":"Block","src":"6707:66:0"}],"id":411,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":412,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":415,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":413,"name":"Identifier","src":"6848:9:0"}],"id":414,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":78,"type":"bool","value":"_stopped"},"id":416,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":417,"name":"Literal","src":"6879:5:0"}],"id":418,"name":"Assignment","src":"6868:16:0"}],"id":419,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":64,"type":"function (address)","value":"Started"},"id":420,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":421,"name":"Identifier","src":"6907:3:0"}],"id":422,"name":"MemberAccess","src":"6907:10:0"}],"id":423,"name":"FunctionCall","src":"6899:19:0"}],"id":424,"name":"EmitStatement","src":"6894:24:0"}],"id":425,"name":"Block","src":"6858:67:0"}],"id":426,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":453,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":452,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":427,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":428,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":452,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":429,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":430,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":452,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":431,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":432,"name":"VariableDeclaration","src":"7066:15:0"}],"id":433,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":438,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":100,"type":"modifier ()","value":"onlyAdmin"},"id":434,"name":"Identifier","src":"7092:9:0"}],"id":435,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"modifier ()","value":"notStopped"},"id":436,"name":"Identifier","src":"7102:10:0"}],"id":437,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":439,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":428,"type":"address payable","value":"_to"},"id":440,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":430,"type":"address","value":"_asset"},"id":441,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":432,"type":"uint256","value":"_amount"},"id":442,"name":"Identifier","src":"7150:7:0"}],"id":443,"name":"FunctionCall","src":"7123:35:0"}],"id":444,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":56,"type":"function (address,address,uint256)","value":"Claimed"},"id":445,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":428,"type":"address payable","value":"_to"},"id":446,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":430,"type":"address","value":"_asset"},"id":447,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":432,"type":"uint256","value":"_amount"},"id":448,"name":"Identifier","src":"7194:7:0"}],"id":449,"name":"FunctionCall","src":"7173:29:0"}],"id":450,"name":"EmitStatement","src":"7168:34:0"}],"id":451,"name":"Block","src":"7113:96:0"}],"id":452,"name":"FunctionDefinition","src":"7014:195:0"}],"id":453,"name":"ContractDefinition","src":"1460:5751:0"}],"id":454,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[941]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":924,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[941],"name":"Address","scope":942},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":940,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":925,"name":"ElementaryTypeName","src":"562:7:1"}],"id":926,"name":"VariableDeclaration","src":"562:15:1"}],"id":927,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":940,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":928,"name":"ElementaryTypeName","src":"602:4:1"}],"id":929,"name":"VariableDeclaration","src":"602:4:1"}],"id":930,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[932],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":931,"name":"ElementaryTypeName","src":"805:7:1"}],"id":932,"name":"VariableDeclaration","src":"805:12:1"}],"id":933,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":932,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":926,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":934,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":930},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":932,"type":"uint256","value":"size"},"id":935,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":936,"name":"Literal","src":"947:1:1"}],"id":937,"name":"BinaryOperation","src":"940:8:1"}],"id":938,"name":"Return","src":"933:15:1"}],"id":939,"name":"Block","src":"608:347:1"}],"id":940,"name":"FunctionDefinition","src":"542:413:1"}],"id":941,"name":"ContractDefinition","src":"94:863:1"}],"id":942,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[703]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":652,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[703],"name":"ERC20","scope":704},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":703,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":661,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":653,"name":"ElementaryTypeName","src":"193:7:2"}],"id":654,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":661,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":655,"name":"ElementaryTypeName","src":"209:7:2"}],"id":656,"name":"VariableDeclaration","src":"209:16:2"}],"id":657,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":658,"name":"ElementaryTypeName","src":"250:7:2"}],"id":659,"name":"VariableDeclaration","src":"250:7:2"}],"id":660,"name":"ParameterList","src":"249:9:2"}],"id":661,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":703,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":670,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":662,"name":"ElementaryTypeName","src":"281:7:2"}],"id":663,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":670,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":664,"name":"ElementaryTypeName","src":"299:7:2"}],"id":665,"name":"VariableDeclaration","src":"299:14:2"}],"id":666,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":670,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":667,"name":"ElementaryTypeName","src":"333:4:2"}],"id":668,"name":"VariableDeclaration","src":"333:4:2"}],"id":669,"name":"ParameterList","src":"332:6:2"}],"id":670,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":703,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":677,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":671,"name":"ElementaryTypeName","src":"363:7:2"}],"id":672,"name":"VariableDeclaration","src":"363:12:2"}],"id":673,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":677,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":674,"name":"ElementaryTypeName","src":"400:7:2"}],"id":675,"name":"VariableDeclaration","src":"400:7:2"}],"id":676,"name":"ParameterList","src":"399:9:2"}],"id":677,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":703,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":678,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":682,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":679,"name":"ElementaryTypeName","src":"460:7:2"}],"id":680,"name":"VariableDeclaration","src":"460:7:2"}],"id":681,"name":"ParameterList","src":"459:9:2"}],"id":682,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":703,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":691,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":683,"name":"ElementaryTypeName","src":"492:7:2"}],"id":684,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":691,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":685,"name":"ElementaryTypeName","src":"505:7:2"}],"id":686,"name":"VariableDeclaration","src":"505:14:2"}],"id":687,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":691,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":688,"name":"ElementaryTypeName","src":"539:4:2"}],"id":689,"name":"VariableDeclaration","src":"539:4:2"}],"id":690,"name":"ParameterList","src":"538:6:2"}],"id":691,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":703,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":702,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":692,"name":"ElementaryTypeName","src":"572:7:2"}],"id":693,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":702,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":694,"name":"ElementaryTypeName","src":"587:7:2"}],"id":695,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":702,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":696,"name":"ElementaryTypeName","src":"600:7:2"}],"id":697,"name":"VariableDeclaration","src":"600:14:2"}],"id":698,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":702,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":699,"name":"ElementaryTypeName","src":"634:4:2"}],"id":700,"name":"VariableDeclaration","src":"634:4:2"}],"id":701,"name":"ParameterList","src":"633:6:2"}],"id":702,"name":"FunctionDefinition","src":"550:90:2"}],"id":703,"name":"ContractDefinition","src":"152:490:2"}],"id":704,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[922]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":705,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":704,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":923,"symbolAliases":[null],"unitAlias":""},"id":706,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":1075,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":923,"symbolAliases":[null],"unitAlias":""},"id":707,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":942,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":923,"symbolAliases":[null],"unitAlias":""},"id":708,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[922],"name":"SafeERC20","scope":923},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1074,"type":"library SafeMath"},"id":709,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":710,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":711,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":941,"type":"library Address"},"id":712,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":713,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":714,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":736,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":715,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":716,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":736,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":717,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":718,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":736,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":719,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":720,"name":"VariableDeclaration","src":"1850:13:3"}],"id":721,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":722,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":723,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"contract ERC20","value":"token"},"id":724,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":725,"name":"Identifier","src":"1910:3:3"}],"id":726,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":691,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"contract ERC20","value":"token"},"id":727,"name":"Identifier","src":"1933:5:3"}],"id":728,"name":"MemberAccess","src":"1933:14:3"}],"id":729,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":718,"type":"address","value":"to"},"id":730,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":720,"type":"uint256","value":"value"},"id":731,"name":"Identifier","src":"1962:5:3"}],"id":732,"name":"FunctionCall","src":"1910:58:3"}],"id":733,"name":"FunctionCall","src":"1884:85:3"}],"id":734,"name":"ExpressionStatement","src":"1884:85:3"}],"id":735,"name":"Block","src":"1874:102:3"}],"id":736,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":761,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":737,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":738,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":739,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":740,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":741,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":742,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":743,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":744,"name":"VariableDeclaration","src":"2047:13:3"}],"id":745,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":746,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":747,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"contract ERC20","value":"token"},"id":748,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":749,"name":"Identifier","src":"2107:3:3"}],"id":750,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":702,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"contract ERC20","value":"token"},"id":751,"name":"Identifier","src":"2130:5:3"}],"id":752,"name":"MemberAccess","src":"2130:18:3"}],"id":753,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":740,"type":"address","value":"from"},"id":754,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":742,"type":"address","value":"to"},"id":755,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"uint256","value":"value"},"id":756,"name":"Identifier","src":"2169:5:3"}],"id":757,"name":"FunctionCall","src":"2107:68:3"}],"id":758,"name":"FunctionCall","src":"2081:95:3"}],"id":759,"name":"ExpressionStatement","src":"2081:95:3"}],"id":760,"name":"Block","src":"2071:112:3"}],"id":761,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":802,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":762,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":763,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":802,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":764,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":765,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":802,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":766,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":767,"name":"VariableDeclaration","src":"2240:13:3"}],"id":768,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":769,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":770,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":767,"type":"uint256","value":"value"},"id":771,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":772,"name":"Literal","src":"2562:1:3"}],"id":773,"name":"BinaryOperation","src":"2553:10:3"}],"id":774,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":661,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":763,"type":"contract ERC20","value":"token"},"id":775,"name":"Identifier","src":"2569:5:3"}],"id":776,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$922","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":777,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1111,"type":"library SafeERC20","value":"this"},"id":778,"name":"Identifier","src":"2593:4:3"}],"id":779,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":765,"type":"address","value":"spender"},"id":780,"name":"Identifier","src":"2600:7:3"}],"id":781,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":782,"name":"Literal","src":"2612:1:3"}],"id":783,"name":"BinaryOperation","src":"2569:44:3"}],"id":784,"name":"TupleExpression","src":"2568:46:3"}],"id":785,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":786,"name":"Literal","src":"2628:56:3"}],"id":787,"name":"FunctionCall","src":"2544:150:3"}],"id":788,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":789,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":763,"type":"contract ERC20","value":"token"},"id":790,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":791,"name":"Identifier","src":"2730:3:3"}],"id":792,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":670,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":763,"type":"contract ERC20","value":"token"},"id":793,"name":"Identifier","src":"2753:5:3"}],"id":794,"name":"MemberAccess","src":"2753:13:3"}],"id":795,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":765,"type":"address","value":"spender"},"id":796,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":767,"type":"uint256","value":"value"},"id":797,"name":"Identifier","src":"2786:5:3"}],"id":798,"name":"FunctionCall","src":"2730:62:3"}],"id":799,"name":"FunctionCall","src":"2704:89:3"}],"id":800,"name":"ExpressionStatement","src":"2704:89:3"}],"id":801,"name":"Block","src":"2264:536:3"}],"id":802,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":837,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":803,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":804,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":837,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":805,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":806,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":837,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":807,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":808,"name":"VariableDeclaration","src":"2867:13:3"}],"id":809,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":810,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[812]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":836,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":811,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":812,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":968,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":661,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":804,"type":"contract ERC20","value":"token"},"id":813,"name":"Identifier","src":"2924:5:3"}],"id":814,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$922","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":815,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1111,"type":"library SafeERC20","value":"this"},"id":816,"name":"Identifier","src":"2948:4:3"}],"id":817,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":806,"type":"address","value":"spender"},"id":818,"name":"Identifier","src":"2955:7:3"}],"id":819,"name":"FunctionCall","src":"2924:39:3"}],"id":820,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":808,"type":"uint256","value":"value"},"id":821,"name":"Identifier","src":"2968:5:3"}],"id":822,"name":"FunctionCall","src":"2924:50:3"}],"id":823,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":824,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":804,"type":"contract ERC20","value":"token"},"id":825,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":826,"name":"Identifier","src":"3010:3:3"}],"id":827,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":670,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":804,"type":"contract ERC20","value":"token"},"id":828,"name":"Identifier","src":"3033:5:3"}],"id":829,"name":"MemberAccess","src":"3033:13:3"}],"id":830,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":806,"type":"address","value":"spender"},"id":831,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":812,"type":"uint256","value":"newAllowance"},"id":832,"name":"Identifier","src":"3066:12:3"}],"id":833,"name":"FunctionCall","src":"3010:69:3"}],"id":834,"name":"FunctionCall","src":"2984:96:3"}],"id":835,"name":"ExpressionStatement","src":"2984:96:3"}],"id":836,"name":"Block","src":"2891:196:3"}],"id":837,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":872,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":838,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":839,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":840,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":841,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":842,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":843,"name":"VariableDeclaration","src":"3154:13:3"}],"id":844,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":845,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[847]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":846,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":847,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":993,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":661,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":839,"type":"contract ERC20","value":"token"},"id":848,"name":"Identifier","src":"3211:5:3"}],"id":849,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$922","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":850,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1111,"type":"library SafeERC20","value":"this"},"id":851,"name":"Identifier","src":"3235:4:3"}],"id":852,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":841,"type":"address","value":"spender"},"id":853,"name":"Identifier","src":"3242:7:3"}],"id":854,"name":"FunctionCall","src":"3211:39:3"}],"id":855,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":843,"type":"uint256","value":"value"},"id":856,"name":"Identifier","src":"3255:5:3"}],"id":857,"name":"FunctionCall","src":"3211:50:3"}],"id":858,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":921,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":859,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":839,"type":"contract ERC20","value":"token"},"id":860,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":861,"name":"Identifier","src":"3297:3:3"}],"id":862,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":670,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":839,"type":"contract ERC20","value":"token"},"id":863,"name":"Identifier","src":"3320:5:3"}],"id":864,"name":"MemberAccess","src":"3320:13:3"}],"id":865,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":841,"type":"address","value":"spender"},"id":866,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":847,"type":"uint256","value":"newAllowance"},"id":867,"name":"Identifier","src":"3353:12:3"}],"id":868,"name":"FunctionCall","src":"3297:69:3"}],"id":869,"name":"FunctionCall","src":"3271:96:3"}],"id":870,"name":"ExpressionStatement","src":"3271:96:3"}],"id":871,"name":"Block","src":"3178:196:3"}],"id":872,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":922,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":921,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":873,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":874,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":921,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":875,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":876,"name":"VariableDeclaration","src":"3798:17:3"}],"id":877,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":878,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":879,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":940,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":880,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":874,"type":"contract ERC20","value":"token"},"id":881,"name":"Identifier","src":"4360:5:3"}],"id":882,"name":"FunctionCall","src":"4352:14:3"}],"id":883,"name":"MemberAccess","src":"4352:25:3"}],"id":884,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":885,"name":"Literal","src":"4381:33:3"}],"id":886,"name":"FunctionCall","src":"4344:71:3"}],"id":887,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[889,891]},"children":[{"attributes":{"constant":false,"name":"success","scope":920,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":888,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":889,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":920,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":890,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":891,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$703","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":892,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":874,"type":"contract ERC20","value":"token"},"id":893,"name":"Identifier","src":"4535:5:3"}],"id":894,"name":"FunctionCall","src":"4527:14:3"}],"id":895,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":876,"type":"bytes memory","value":"data"},"id":896,"name":"Identifier","src":"4547:4:3"}],"id":897,"name":"FunctionCall","src":"4527:25:3"}],"id":898,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":899,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":889,"type":"bool","value":"success"},"id":900,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":901,"name":"Literal","src":"4579:34:3"}],"id":902,"name":"FunctionCall","src":"4562:52:3"}],"id":903,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":891,"type":"bytes memory","value":"returndata"},"id":904,"name":"Identifier","src":"4629:10:3"}],"id":905,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":906,"name":"Literal","src":"4649:1:3"}],"id":907,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":908,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1076,"type":"abi","value":"abi"},"id":909,"name":"Identifier","src":"4758:3:3"}],"id":910,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":891,"type":"bytes memory","value":"returndata"},"id":911,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":912,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":913,"name":"TupleExpression","src":"4781:6:3"}],"id":914,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":915,"name":"Literal","src":"4790:44:3"}],"id":916,"name":"FunctionCall","src":"4750:85:3"}],"id":917,"name":"ExpressionStatement","src":"4750:85:3"}],"id":918,"name":"Block","src":"4652:194:3"}],"id":919,"name":"IfStatement","src":"4625:221:3"}],"id":920,"name":"Block","src":"3826:1026:3"}],"id":921,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":922,"name":"ContractDefinition","src":"1715:3139:3"}],"id":923,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[1074]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":943,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[1074],"name":"SafeMath","scope":1075},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":944,"name":"ElementaryTypeName","src":"847:7:4"}],"id":945,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":946,"name":"ElementaryTypeName","src":"858:7:4"}],"id":947,"name":"VariableDeclaration","src":"858:9:4"}],"id":948,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":949,"name":"ElementaryTypeName","src":"892:7:4"}],"id":950,"name":"VariableDeclaration","src":"892:7:4"}],"id":951,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[953]},"children":[{"attributes":{"constant":false,"name":"c","scope":967,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":952,"name":"ElementaryTypeName","src":"911:7:4"}],"id":953,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"uint256","value":"a"},"id":954,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":947,"type":"uint256","value":"b"},"id":955,"name":"Identifier","src":"927:1:4"}],"id":956,"name":"BinaryOperation","src":"923:5:4"}],"id":957,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":958,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":953,"type":"uint256","value":"c"},"id":959,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"uint256","value":"a"},"id":960,"name":"Identifier","src":"951:1:4"}],"id":961,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":962,"name":"Literal","src":"954:29:4"}],"id":963,"name":"FunctionCall","src":"938:46:4"}],"id":964,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":951},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":953,"type":"uint256","value":"c"},"id":965,"name":"Identifier","src":"1002:1:4"}],"id":966,"name":"Return","src":"995:8:4"}],"id":967,"name":"Block","src":"901:109:4"}],"id":968,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":969,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":970,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":971,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":972,"name":"VariableDeclaration","src":"1298:9:4"}],"id":973,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":974,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":975,"name":"VariableDeclaration","src":"1332:7:4"}],"id":976,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":977,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":972,"type":"uint256","value":"b"},"id":978,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":970,"type":"uint256","value":"a"},"id":979,"name":"Identifier","src":"1364:1:4"}],"id":980,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":981,"name":"Literal","src":"1367:32:4"}],"id":982,"name":"FunctionCall","src":"1351:49:4"}],"id":983,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[985]},"children":[{"attributes":{"constant":false,"name":"c","scope":992,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":984,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":985,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":970,"type":"uint256","value":"a"},"id":986,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":972,"type":"uint256","value":"b"},"id":987,"name":"Identifier","src":"1426:1:4"}],"id":988,"name":"BinaryOperation","src":"1422:5:4"}],"id":989,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":976},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":985,"type":"uint256","value":"c"},"id":990,"name":"Identifier","src":"1445:1:4"}],"id":991,"name":"Return","src":"1438:8:4"}],"id":992,"name":"Block","src":"1341:112:4"}],"id":993,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1027,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":994,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":995,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":1027,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":996,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":997,"name":"VariableDeclaration","src":"1717:9:4"}],"id":998,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1027,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":999,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":1000,"name":"VariableDeclaration","src":"1751:7:4"}],"id":1001,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"a"},"id":1002,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1003,"name":"Literal","src":"1996:1:4"}],"id":1004,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":1001},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1005,"name":"Literal","src":"2020:1:4"}],"id":1006,"name":"Return","src":"2013:8:4"}],"id":1007,"name":"Block","src":"1999:33:4"}],"id":1008,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[1010]},"children":[{"attributes":{"constant":false,"name":"c","scope":1026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1009,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":1010,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"a"},"id":1011,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"uint256","value":"b"},"id":1012,"name":"Identifier","src":"2058:1:4"}],"id":1013,"name":"BinaryOperation","src":"2054:5:4"}],"id":1014,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":1015,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1010,"type":"uint256","value":"c"},"id":1016,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"a"},"id":1017,"name":"Identifier","src":"2081:1:4"}],"id":1018,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"uint256","value":"b"},"id":1019,"name":"Identifier","src":"2086:1:4"}],"id":1020,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":1021,"name":"Literal","src":"2089:35:4"}],"id":1022,"name":"FunctionCall","src":"2069:56:4"}],"id":1023,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":1001},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1010,"type":"uint256","value":"c"},"id":1024,"name":"Identifier","src":"2143:1:4"}],"id":1025,"name":"Return","src":"2136:8:4"}],"id":1026,"name":"Block","src":"1760:391:4"}],"id":1027,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1052,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1028,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":1029,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":1052,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1030,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":1031,"name":"VariableDeclaration","src":"2630:9:4"}],"id":1032,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1052,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1033,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":1034,"name":"VariableDeclaration","src":"2664:7:4"}],"id":1035,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":1036,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1031,"type":"uint256","value":"b"},"id":1037,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1038,"name":"Literal","src":"2761:1:4"}],"id":1039,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":1040,"name":"Literal","src":"2764:28:4"}],"id":1041,"name":"FunctionCall","src":"2749:44:4"}],"id":1042,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[1044]},"children":[{"attributes":{"constant":false,"name":"c","scope":1051,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1043,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":1044,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1029,"type":"uint256","value":"a"},"id":1045,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1031,"type":"uint256","value":"b"},"id":1046,"name":"Identifier","src":"2819:1:4"}],"id":1047,"name":"BinaryOperation","src":"2815:5:4"}],"id":1048,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":1035},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1044,"type":"uint256","value":"c"},"id":1049,"name":"Identifier","src":"2924:1:4"}],"id":1050,"name":"Return","src":"2917:8:4"}],"id":1051,"name":"Block","src":"2673:259:4"}],"id":1052,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":1074,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1053,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":1054,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1055,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":1056,"name":"VariableDeclaration","src":"3400:9:4"}],"id":1057,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1058,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":1059,"name":"VariableDeclaration","src":"3434:7:4"}],"id":1060,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":1061,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"uint256","value":"b"},"id":1062,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1063,"name":"Literal","src":"3466:1:4"}],"id":1064,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":1065,"name":"Literal","src":"3469:26:4"}],"id":1066,"name":"FunctionCall","src":"3453:43:4"}],"id":1067,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":1060},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1054,"type":"uint256","value":"a"},"id":1068,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"uint256","value":"b"},"id":1069,"name":"Identifier","src":"3517:1:4"}],"id":1070,"name":"BinaryOperation","src":"3513:5:4"}],"id":1071,"name":"Return","src":"3506:12:4"}],"id":1072,"name":"Block","src":"3443:82:4"}],"id":1073,"name":"FunctionDefinition","src":"3376:149:4"}],"id":1074,"name":"ContractDefinition","src":"589:2938:4"}],"id":1075,"name":"SourceUnit","src":"0:3528:4"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[610]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":455,"name":"PragmaDirective","src":"767:24:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[610],"name":"Ownable","scope":611},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":461,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":456,"name":"ElementaryTypeName","src":"1199:7:5"}],"id":457,"name":"VariableDeclaration","src":"1199:13:5"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":461,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":458,"name":"ElementaryTypeName","src":"1214:7:5"}],"id":459,"name":"VariableDeclaration","src":"1214:11:5"}],"id":460,"name":"ParameterList","src":"1198:28:5"}],"id":461,"name":"EventDefinition","src":"1172:55:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":465,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":462,"name":"ElementaryTypeName","src":"1254:7:5"}],"id":463,"name":"VariableDeclaration","src":"1254:15:5"}],"id":464,"name":"ParameterList","src":"1253:17:5"}],"id":465,"name":"EventDefinition","src":"1232:39:5"},{"attributes":{"constant":false,"name":"_owner","scope":610,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":466,"name":"ElementaryTypeName","src":"1277:15:5"}],"id":467,"name":"VariableDeclaration","src":"1277:30:5"},{"attributes":{"constant":false,"name":"_isTransferable","scope":610,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":468,"name":"ElementaryTypeName","src":"1313:4:5"}],"id":469,"name":"VariableDeclaration","src":"1313:28:5"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":610,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":500,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":470,"name":"ElementaryTypeName","src":"1476:15:5"}],"id":471,"name":"VariableDeclaration","src":"1476:25:5"},{"attributes":{"constant":false,"name":"_transferable_","scope":500,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":472,"name":"ElementaryTypeName","src":"1503:4:5"}],"id":473,"name":"VariableDeclaration","src":"1503:19:5"}],"id":474,"name":"ParameterList","src":"1475:48:5"},{"attributes":{"parameters":[null]},"children":[],"id":475,"name":"ParameterList","src":"1533:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":476,"name":"Identifier","src":"1543:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":471,"type":"address payable","value":"_account_"},"id":477,"name":"Identifier","src":"1552:9:5"}],"id":478,"name":"Assignment","src":"1543:18:5"}],"id":479,"name":"ExpressionStatement","src":"1543:18:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":480,"name":"Identifier","src":"1571:15:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":473,"type":"bool","value":"_transferable_"},"id":481,"name":"Identifier","src":"1589:14:5"}],"id":482,"name":"Assignment","src":"1571:32:5"}],"id":483,"name":"ExpressionStatement","src":"1571:32:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":484,"name":"Identifier","src":"1687:15:5"}],"id":485,"name":"UnaryOperation","src":"1686:16:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":465,"type":"function (address)","value":"LockedOwnership"},"id":486,"name":"Identifier","src":"1723:15:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":471,"type":"address payable","value":"_account_"},"id":487,"name":"Identifier","src":"1739:9:5"}],"id":488,"name":"FunctionCall","src":"1723:26:5"}],"id":489,"name":"EmitStatement","src":"1718:31:5"}],"id":490,"name":"Block","src":"1704:56:5"}],"id":491,"name":"IfStatement","src":"1682:78:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"function (address,address)","value":"TransferredOwnership"},"id":492,"name":"Identifier","src":"1774:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":493,"name":"ElementaryTypeNameExpression","src":"1795:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":494,"name":"Literal","src":"1803:1:5"}],"id":495,"name":"FunctionCall","src":"1795:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":471,"type":"address payable","value":"_account_"},"id":496,"name":"Identifier","src":"1807:9:5"}],"id":497,"name":"FunctionCall","src":"1774:43:5"}],"id":498,"name":"EmitStatement","src":"1769:48:5"}],"id":499,"name":"Block","src":"1533:291:5"}],"id":500,"name":"FunctionDefinition","src":"1464:360:5"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":501,"name":"ParameterList","src":"1919:2:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":502,"name":"Identifier","src":"1932:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":503,"name":"Identifier","src":"1940:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1089,"type":"msg","value":"msg"},"id":504,"name":"Identifier","src":"1949:3:5"}],"id":505,"name":"MemberAccess","src":"1949:10:5"}],"id":506,"name":"FunctionCall","src":"1940:20:5"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":507,"name":"Literal","src":"1962:24:5"}],"id":508,"name":"FunctionCall","src":"1932:55:5"}],"id":509,"name":"ExpressionStatement","src":"1932:55:5"},{"id":510,"name":"PlaceholderStatement","src":"1997:1:5"}],"id":511,"name":"Block","src":"1922:83:5"}],"id":512,"name":"ModifierDefinition","src":"1901:104:5"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":610,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":557,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":513,"name":"ElementaryTypeName","src":"2274:15:5"}],"id":514,"name":"VariableDeclaration","src":"2274:24:5"},{"attributes":{"constant":false,"name":"_transferable","scope":557,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":515,"name":"ElementaryTypeName","src":"2300:4:5"}],"id":516,"name":"VariableDeclaration","src":"2300:18:5"}],"id":517,"name":"ParameterList","src":"2273:46:5"},{"attributes":{"parameters":[null]},"children":[],"id":520,"name":"ParameterList","src":"2339:0:5"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":518,"name":"Identifier","src":"2329:9:5"}],"id":519,"name":"ModifierInvocation","src":"2329:9:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":521,"name":"Identifier","src":"2404:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":522,"name":"Identifier","src":"2412:15:5"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":523,"name":"Literal","src":"2429:31:5"}],"id":524,"name":"FunctionCall","src":"2404:57:5"}],"id":525,"name":"ExpressionStatement","src":"2404:57:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":526,"name":"Identifier","src":"2534:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":514,"type":"address payable","value":"_account"},"id":527,"name":"Identifier","src":"2542:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":528,"name":"ElementaryTypeNameExpression","src":"2554:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":529,"name":"Literal","src":"2562:1:5"}],"id":530,"name":"FunctionCall","src":"2554:10:5"}],"id":531,"name":"BinaryOperation","src":"2542:22:5"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":532,"name":"Literal","src":"2566:37:5"}],"id":533,"name":"FunctionCall","src":"2534:70:5"}],"id":534,"name":"ExpressionStatement","src":"2534:70:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":535,"name":"Identifier","src":"2689:15:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":516,"type":"bool","value":"_transferable"},"id":536,"name":"Identifier","src":"2707:13:5"}],"id":537,"name":"Assignment","src":"2689:31:5"}],"id":538,"name":"ExpressionStatement","src":"2689:31:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":516,"type":"bool","value":"_transferable"},"id":539,"name":"Identifier","src":"2804:13:5"}],"id":540,"name":"UnaryOperation","src":"2803:14:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":465,"type":"function (address)","value":"LockedOwnership"},"id":541,"name":"Identifier","src":"2838:15:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":514,"type":"address payable","value":"_account"},"id":542,"name":"Identifier","src":"2854:8:5"}],"id":543,"name":"FunctionCall","src":"2838:25:5"}],"id":544,"name":"EmitStatement","src":"2833:30:5"}],"id":545,"name":"Block","src":"2819:55:5"}],"id":546,"name":"IfStatement","src":"2799:75:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"function (address,address)","value":"TransferredOwnership"},"id":547,"name":"Identifier","src":"2934:20:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":548,"name":"Identifier","src":"2955:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":514,"type":"address payable","value":"_account"},"id":549,"name":"Identifier","src":"2963:8:5"}],"id":550,"name":"FunctionCall","src":"2934:38:5"}],"id":551,"name":"EmitStatement","src":"2929:43:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":552,"name":"Identifier","src":"3032:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":514,"type":"address payable","value":"_account"},"id":553,"name":"Identifier","src":"3041:8:5"}],"id":554,"name":"Assignment","src":"3032:17:5"}],"id":555,"name":"ExpressionStatement","src":"3032:17:5"}],"id":556,"name":"Block","src":"2339:717:5"}],"id":557,"name":"FunctionDefinition","src":"2247:809:5"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":610,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":558,"name":"ParameterList","src":"3196:2:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":565,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":559,"name":"ElementaryTypeName","src":"3222:4:5"}],"id":560,"name":"VariableDeclaration","src":"3222:4:5"}],"id":561,"name":"ParameterList","src":"3221:6:5"},{"children":[{"attributes":{"functionReturnParameters":561},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":562,"name":"Identifier","src":"3245:15:5"}],"id":563,"name":"Return","src":"3238:22:5"}],"id":564,"name":"Block","src":"3228:39:5"}],"id":565,"name":"FunctionDefinition","src":"3173:94:5"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":610,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":566,"name":"ParameterList","src":"3569:2:5"},{"attributes":{"parameters":[null]},"children":[],"id":569,"name":"ParameterList","src":"3591:0:5"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":512,"type":"modifier ()","value":"onlyOwner"},"id":567,"name":"Identifier","src":"3581:9:5"}],"id":568,"name":"ModifierInvocation","src":"3581:9:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[1092,1093],"referencedDeclaration":1093,"type":"function (bool,string memory) pure","value":"require"},"id":570,"name":"Identifier","src":"3656:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"bool","value":"_isTransferable"},"id":571,"name":"Identifier","src":"3664:15:5"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":572,"name":"Literal","src":"3681:31:5"}],"id":573,"name":"FunctionCall","src":"3656:57:5"}],"id":574,"name":"ExpressionStatement","src":"3656:57:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":575,"name":"Identifier","src":"3767:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":576,"name":"ElementaryTypeNameExpression","src":"3776:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":577,"name":"Literal","src":"3784:1:5"}],"id":578,"name":"FunctionCall","src":"3776:10:5"}],"id":579,"name":"Assignment","src":"3767:19:5"}],"id":580,"name":"ExpressionStatement","src":"3767:19:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"function (address,address)","value":"TransferredOwnership"},"id":581,"name":"Identifier","src":"3802:20:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":582,"name":"Identifier","src":"3823:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":583,"name":"ElementaryTypeNameExpression","src":"3831:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":584,"name":"Literal","src":"3839:1:5"}],"id":585,"name":"FunctionCall","src":"3831:10:5"}],"id":586,"name":"FunctionCall","src":"3802:40:5"}],"id":587,"name":"EmitStatement","src":"3797:45:5"}],"id":588,"name":"Block","src":"3591:258:5"}],"id":589,"name":"FunctionDefinition","src":"3543:306:5"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":610,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":590,"name":"ParameterList","src":"3946:2:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":597,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":591,"name":"ElementaryTypeName","src":"3970:15:5"}],"id":592,"name":"VariableDeclaration","src":"3970:15:5"}],"id":593,"name":"ParameterList","src":"3969:17:5"},{"children":[{"attributes":{"functionReturnParameters":593},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":594,"name":"Identifier","src":"4004:6:5"}],"id":595,"name":"Return","src":"3997:13:5"}],"id":596,"name":"Block","src":"3987:30:5"}],"id":597,"name":"FunctionDefinition","src":"3932:85:5"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":610,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":609,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":598,"name":"ElementaryTypeName","src":"4141:7:5"}],"id":599,"name":"VariableDeclaration","src":"4141:16:5"}],"id":600,"name":"ParameterList","src":"4140:18:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":609,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":601,"name":"ElementaryTypeName","src":"4182:4:5"}],"id":602,"name":"VariableDeclaration","src":"4182:4:5"}],"id":603,"name":"ParameterList","src":"4181:6:5"},{"children":[{"attributes":{"functionReturnParameters":603},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":599,"type":"address","value":"_address"},"id":604,"name":"Identifier","src":"4205:8:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":467,"type":"address payable","value":"_owner"},"id":605,"name":"Identifier","src":"4217:6:5"}],"id":606,"name":"BinaryOperation","src":"4205:18:5"}],"id":607,"name":"Return","src":"4198:25:5"}],"id":608,"name":"Block","src":"4188:42:5"}],"id":609,"name":"FunctionDefinition","src":"4123:107:5"}],"id":610,"name":"ContractDefinition","src":"1149:3083:5"}],"id":611,"name":"SourceUnit","src":"767:3466:5"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[650]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":612,"name":"PragmaDirective","src":"773:24:6"},{"attributes":{"SourceUnit":704,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":651,"symbolAliases":[null],"unitAlias":""},"id":613,"name":"ImportDirective","src":"799:32:6"},{"attributes":{"SourceUnit":923,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":651,"symbolAliases":[null],"unitAlias":""},"id":614,"name":"ImportDirective","src":"832:36:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[650],"name":"Transferrable","scope":651},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":922,"type":"library SafeERC20"},"id":615,"name":"UserDefinedTypeName","src":"996:9:6"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":703,"type":"contract ERC20"},"id":616,"name":"UserDefinedTypeName","src":"1010:5:6"}],"id":617,"name":"UsingForDirective","src":"990:26:6"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":649,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":618,"name":"ElementaryTypeName","src":"1389:15:6"}],"id":619,"name":"VariableDeclaration","src":"1389:19:6"},{"attributes":{"constant":false,"name":"_asset","scope":649,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":620,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":621,"name":"VariableDeclaration","src":"1410:14:6"},{"attributes":{"constant":false,"name":"_amount","scope":649,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":622,"name":"ElementaryTypeName","src":"1426:7:6"}],"id":623,"name":"VariableDeclaration","src":"1426:15:6"}],"id":624,"name":"ParameterList","src":"1388:54:6"},{"attributes":{"parameters":[null]},"children":[],"id":625,"name":"ParameterList","src":"1452:0:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":621,"type":"address","value":"_asset"},"id":626,"name":"Identifier","src":"1510:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":627,"name":"ElementaryTypeNameExpression","src":"1520:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":628,"name":"Literal","src":"1528:1:6"}],"id":629,"name":"FunctionCall","src":"1520:10:6"}],"id":630,"name":"BinaryOperation","src":"1510:20:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":619,"type":"address payable","value":"_to"},"id":631,"name":"Identifier","src":"1546:3:6"}],"id":633,"name":"MemberAccess","src":"1546:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":623,"type":"uint256","value":"_amount"},"id":634,"name":"Identifier","src":"1559:7:6"}],"id":635,"name":"FunctionCall","src":"1546:21:6"}],"id":636,"name":"ExpressionStatement","src":"1546:21:6"}],"id":637,"name":"Block","src":"1532:46:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":736,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":703,"type":"type(contract ERC20)","value":"ERC20"},"id":638,"name":"Identifier","src":"1598:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":621,"type":"address","value":"_asset"},"id":639,"name":"Identifier","src":"1604:6:6"}],"id":640,"name":"FunctionCall","src":"1598:13:6"}],"id":641,"name":"MemberAccess","src":"1598:26:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":619,"type":"address payable","value":"_to"},"id":642,"name":"Identifier","src":"1625:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":623,"type":"uint256","value":"_amount"},"id":643,"name":"Identifier","src":"1630:7:6"}],"id":644,"name":"FunctionCall","src":"1598:40:6"}],"id":645,"name":"ExpressionStatement","src":"1598:40:6"}],"id":646,"name":"Block","src":"1584:65:6"}],"id":647,"name":"IfStatement","src":"1506:143:6"}],"id":648,"name":"Block","src":"1452:203:6"}],"id":649,"name":"FunctionDefinition","src":"1366:289:6"}],"id":650,"name":"ContractDefinition","src":"961:696:6"}],"id":651,"name":"SourceUnit","src":"773:885:6"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/holder/Controller.bin b/build/holder/Controller.bin index a69c0549..264e63ba 100644 --- a/build/holder/Controller.bin +++ b/build/holder/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/holder/Holder.bin b/build/holder/Holder.bin index b6493991..28bce472 100644 --- a/build/holder/Holder.bin +++ b/build/holder/Holder.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b50604051610f87380380610f878339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091818180156100975760018190555b506002555050600380546001600160a01b0319166001600160a01b03939093169290921790915550610eb9806100ce6000396000f3fe6080604052600436106100555760003560e01c806327810b6e1461009157806340f6a70f146100c25780637d73b23114610163578063877337b0146101785780639dc29fac1461019f578063e2b4ce97146101d8575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b34801561009d57600080fd5b506100a66101ed565b604080516001600160a01b039092168252519081900360200190f35b3480156100ce57600080fd5b5061014f600480360360408110156100e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184602083028401116401000000008311171561014457600080fd5b5090925090506101fc565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506100a661039f565b34801561018457600080fd5b5061018d6103ae565b60408051918252519081900360200190f35b3480156101ab57600080fd5b5061014f600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356103b4565b3480156101e457600080fd5b5061018d6105b3565b6003546001600160a01b031690565b6000610207336105b9565b610251576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103945761028084848381811061026b57fe5b905060200201356001600160a01b031661064d565b156102d2576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006102f9308686858181106102e457fe5b905060200201356001600160a01b0316610666565b9050801561038b576103278686868581811061031157fe5b905060200201356001600160a01b031683610711565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035557fe5b604080516001600160a01b0395861681526020928302949094013594909416908301525080820184905290519081900360600190a15b50600101610254565b506001949350505050565b6000546001600160a01b031690565b60025490565b6003546000906001600160a01b031633146104005760405162461bcd60e51b8152600401808060200182810382526021815260200180610e646021913960400191505060405180910390fd5b8161040d575060016105ad565b600061049983600360009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50519063ffffffff61077a16565b905060606104a56107db565b905060005b81518110156105a55760006104d2308484815181106104c557fe5b6020026020010151610666565b9050801561059c5760006104fc856104f0848a63ffffffff6108ee16565b9063ffffffff61094716565b905061051c8885858151811061050e57fe5b602002602001015183610711565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061054a57fe5b60200260200101518360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104aa565b506001925050505b92915050565b60015490565b60006105c66001546109b1565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061b57600080fd5b505afa15801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b505192915050565b60008061065983610a73565b5098975050505050505050565b60006001600160a01b0382161561070057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b505190506105ad565b506001600160a01b038216316105ad565b6001600160a01b03821661075b576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610755573d6000803e3d6000fd5b50610775565b6107756001600160a01b038316848363ffffffff610c0716565b505050565b6000828201838110156107d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60606107e86002546109b1565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561085d57600080fd5b810190808051604051939291908464010000000082111561087d57600080fd5b90830190602082018581111561089257600080fd5b82518660208202830111640100000000821117156108af57600080fd5b82525081516020918201928201910280838360005b838110156108dc5781810151838201526020016108c4565b50505050905001604052505050905090565b6000826108fd575060006105ad565b8282028284828161090a57fe5b04146107d45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e196021913960400191505060405180910390fd5b600080821161099d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816109a857fe5b04949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109fe57600080fd5b505afa158015610a12573d6000803e3d6000fd5b505050506040513d6020811015610a2857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561061b57600080fd5b6060600080600080600080610a896002546109b1565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610b1b57600080fd5b8101908080516040519392919084640100000000821115610b3b57600080fd5b908301906020820185811115610b5057600080fd5b8251640100000000811182820188101715610b6a57600080fd5b82525081516020918201929091019080838360005b83811015610b97578181015183820152602001610b7f565b50505050905090810190601f168015610bc45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610775908490610c66826001600160a01b0316610e12565b610cb7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610cf55780518252601f199092019160209182019101610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d57576040519150601f19603f3d011682016040523d82523d6000602084013e610d5c565b606091505b509150915081610db3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e0c57808060200190516020811015610dcf57600080fd5b5051610e0c5760405162461bcd60e51b815260040180806020018281038252602a815260200180610e3a602a913960400191505060405180910390fd5b50505050565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a265627a7a72315820dd6a7e5f2e0a9c99b10d328f8a1f447504d4acb4d01ded19d142a263e413fade64736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b50604051610f87380380610f878339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091818180156100975760018190555b506002555050600380546001600160a01b0319166001600160a01b03939093169290921790915550610eb9806100ce6000396000f3fe6080604052600436106100555760003560e01c806327810b6e1461009157806340f6a70f146100c25780637d73b23114610163578063877337b0146101785780639dc29fac1461019f578063e2b4ce97146101d8575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b34801561009d57600080fd5b506100a66101ed565b604080516001600160a01b039092168252519081900360200190f35b3480156100ce57600080fd5b5061014f600480360360408110156100e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184602083028401116401000000008311171561014457600080fd5b5090925090506101fc565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506100a661039f565b34801561018457600080fd5b5061018d6103ae565b60408051918252519081900360200190f35b3480156101ab57600080fd5b5061014f600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356103b4565b3480156101e457600080fd5b5061018d6105b3565b6003546001600160a01b031690565b6000610207336105b9565b610251576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103945761028084848381811061026b57fe5b905060200201356001600160a01b031661064d565b156102d2576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006102f9308686858181106102e457fe5b905060200201356001600160a01b0316610666565b9050801561038b576103278686868581811061031157fe5b905060200201356001600160a01b031683610711565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035557fe5b604080516001600160a01b0395861681526020928302949094013594909416908301525080820184905290519081900360600190a15b50600101610254565b506001949350505050565b6000546001600160a01b031690565b60025490565b6003546000906001600160a01b031633146104005760405162461bcd60e51b8152600401808060200182810382526021815260200180610e646021913960400191505060405180910390fd5b8161040d575060016105ad565b600061049983600360009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50519063ffffffff61077a16565b905060606104a56107db565b905060005b81518110156105a55760006104d2308484815181106104c557fe5b6020026020010151610666565b9050801561059c5760006104fc856104f0848a63ffffffff6108ee16565b9063ffffffff61094716565b905061051c8885858151811061050e57fe5b602002602001015183610711565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061054a57fe5b60200260200101518360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104aa565b506001925050505b92915050565b60015490565b60006105c66001546109b1565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061b57600080fd5b505afa15801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b505192915050565b60008061065983610a73565b5098975050505050505050565b60006001600160a01b0382161561070057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b505190506105ad565b506001600160a01b038216316105ad565b6001600160a01b03821661075b576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610755573d6000803e3d6000fd5b50610775565b6107756001600160a01b038316848363ffffffff610c0716565b505050565b6000828201838110156107d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60606107e86002546109b1565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561085d57600080fd5b810190808051604051939291908464010000000082111561087d57600080fd5b90830190602082018581111561089257600080fd5b82518660208202830111640100000000821117156108af57600080fd5b82525081516020918201928201910280838360005b838110156108dc5781810151838201526020016108c4565b50505050905001604052505050905090565b6000826108fd575060006105ad565b8282028284828161090a57fe5b04146107d45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e196021913960400191505060405180910390fd5b600080821161099d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816109a857fe5b04949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109fe57600080fd5b505afa158015610a12573d6000803e3d6000fd5b505050506040513d6020811015610a2857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561061b57600080fd5b6060600080600080600080610a896002546109b1565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610b1b57600080fd5b8101908080516040519392919084640100000000821115610b3b57600080fd5b908301906020820185811115610b5057600080fd5b8251640100000000811182820188101715610b6a57600080fd5b82525081516020918201929091019080838360005b83811015610b97578181015183820152602001610b7f565b50505050905090810190601f168015610bc45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610775908490610c66826001600160a01b0316610e12565b610cb7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610cf55780518252601f199092019160209182019101610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d57576040519150601f19603f3d011682016040523d82523d6000602084013e610d5c565b606091505b509150915081610db3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e0c57808060200190516020811015610dcf57600080fd5b5051610e0c5760405162461bcd60e51b815260040180806020018281038252602a815260200180610e3a602a913960400191505060405180910390fd5b50505050565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a265627a7a72315820fb5b72f720dd23afc2fab42dd0a74ea84409296144790e2f0005efbe1b0dae4564736f6c63430005110032 \ No newline at end of file diff --git a/build/holder/TokenWhitelist.bin b/build/holder/TokenWhitelist.bin index 60f52176..5a283843 100644 --- a/build/holder/TokenWhitelist.bin +++ b/build/holder/TokenWhitelist.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032 \ No newline at end of file diff --git a/build/holder/combined.json b/build/holder/combined.json index d9c41ce4..6fed795e 100644 --- a/build/holder/combined.json +++ b/build/holder/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:6:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:7:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:7;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:7;-1:-1:-1;;;;;2567:10:7;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:7;;;;;;","srcmap-runtime":"1897:2174:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:13;;;;;;;;;:::i;:::-;;573:184:17;;;;;;;;;:::i;1721:953:14:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:10;;;;;;;;;:::i;:::-;;;;;;;;;612:169:16;;;;;;;;;:::i;505:166:12:-;;;;;;;;;:::i;980:228:11:-;;;;;;;;;:::i;3269:231:7:-;;;;;;;;;:::i;4901:153:13:-;;;;;;;;;:::i;974:127:17:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:13;;;;;;;;;:::i;582:292:10:-;;;;;;;;;:::i;844:101:15:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:11:-;;;;;;;;;:::i;4519:168:13:-;;;;;;;;;:::i;3703:366:7:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:13;;;;;;;;;:::i;838:108:12:-;;;;;;;;;:::i;1023:133:16:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:13;;;;;;;;;:::i;681:140:11:-;;;;;;;;;:::i;858:226:14:-;;;;;;;;;:::i;1514:127:11:-;;;;;;;;;:::i;2320:80:7:-;;;;;;;;;:::i;1107:169:17:-;1174:4;-1:-1:-1;;;;;;1197:32:17;;-1:-1:-1;;;1197:32:17;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:13:-;2932:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:13;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:13;;:18;-1:-1:-1;;3185:18:13;:15;:18;;-1:-1:-1;3185:18:13:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:13;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:13;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:13;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:13;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:13;;4052:6;;-1:-1:-1;4060:20:13;;;;-1:-1:-1;4082:17:13;4012:11;:88::i;:::-;400:1:9;;;;;2854:1263:13;;;;:::o;573:184:17:-;668:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:17;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:14:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:14;;;;;;;;;;-1:-1:-1;;;;;1849:29:14;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:14;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:14;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:14;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:14;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:14;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:14;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:14;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:14;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:14;;-1:-1:-1;2373:103:14;-1:-1:-1;2489:8:14;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:14;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:14;;-1:-1:-1;;;1721:953:14;;;;;:::o;1195:454:10:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:10;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:10;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:10;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:10;-1:-1:-1;1195:454:10;;;;;;:::o;612:169:16:-;687:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:16;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:16;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:12:-;584:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:12;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:11;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:11:o;3269:231:7:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:7;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:7;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:13:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:17:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:17;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:13:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:10:-;674:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:10;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:10;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:15:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:15;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:11;1302:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:11;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:13:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:7;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:7;-1:-1:-1;3844:6:7;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:7;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:7;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:7;;3840:199;;;-1:-1:-1;3703:366:7;;;;:::o;5193:128:13:-;5247:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:13;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:12:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:16;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:13:-;5617:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:13;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:13;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:13;;:16;-1:-1:-1;5701:4:13;;-1:-1:-1;5701:4:13;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:9;5541:225:13;;;;:::o;681:140:11:-;743:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:11;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:14:-;955:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:14;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:14;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:14;-1:-1:-1;;;;;971:43:14;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:11:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:11;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:16:-;1229:4;-1:-1:-1;;;;;;1252:34:16;;-1:-1:-1;;;1252:34:16;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:7:-;3596:3;;:15;;-1:-1:-1;;;3596:15:7;;3564:4;;;;-1:-1:-1;;;;;3596:3:7;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:7;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:7;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:7;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:7;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:7;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:8:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:6:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:13:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:13;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:13;;;;;;-1:-1:-1;;6760:43:13;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:13;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:13;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:8:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:8;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:8;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:8;;:::o;414:204:9:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:9;576:10;570:17;-1:-1:-1;;;566:36:9;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:9;87:34:-1;-1:-1;;;;;;776:20:9;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:9;743:64::o;951:169:15:-;1018:4;-1:-1:-1;;;;;;1041:32:15;;-1:-1:-1;;;1041:32:15;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:8:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:8;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:8:o;8685:393:6:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:6;87:34:-1;135:17;;-1:-1;8858:14:6;-1:-1:-1;8839:33:6;-1:-1:-1;8960:2:6;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:6;;8685:393;-1:-1:-1;;;;;8685:393:6:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:6:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:6;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:6;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:14:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:14;;:11;-1:-1:-1;;;;;2770:37:14;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:6:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:6;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:6;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:6;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:6;;513:2;499:26;489:42;;468:73::o;6035:245:13:-;6102:4;-1:-1:-1;;;;;;6125:38:13;;-1:-1:-1;;;6125:38:13;;:93;;-1:-1:-1;;;;;;;6182:36:13;;-1:-1:-1;;;6182:36:13;6125:93;:148;;;;6237:36;6261:11;1019:4:12;-1:-1:-1;;;;;;1042:40:12;;-1:-1:-1;;;1042:40:12;;:80;;;1086:36;1110:11;1714:4:11;-1:-1:-1;;;;;;1737:32:11;;-1:-1:-1;;;1737:32:11;;:71;;-1:-1:-1;;;;;;;1773:35:11;;-1:-1:-1;;;1773:35:11;1737:71;:111;;;;1812:36;1836:11;1722:4:10;-1:-1:-1;;;;;;1745:31:10;;-1:-1:-1;;;1745:31:10;;:71;;-1:-1:-1;;;;;;;;;;204:32:9;;;1780:36:10;114:129:9:o;1897:2174:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:7;;;-1:-1:-1;1897:2174:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:8:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:18:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:18:-;;;;;;;;"},"holder.sol:Holder":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b50604051610f87380380610f878339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091818180156100975760018190555b506002555050600380546001600160a01b0319166001600160a01b03939093169290921790915550610eb9806100ce6000396000f3fe6080604052600436106100555760003560e01c806327810b6e1461009157806340f6a70f146100c25780637d73b23114610163578063877337b0146101785780639dc29fac1461019f578063e2b4ce97146101d8575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b34801561009d57600080fd5b506100a66101ed565b604080516001600160a01b039092168252519081900360200190f35b3480156100ce57600080fd5b5061014f600480360360408110156100e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184602083028401116401000000008311171561014457600080fd5b5090925090506101fc565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506100a661039f565b34801561018457600080fd5b5061018d6103ae565b60408051918252519081900360200190f35b3480156101ab57600080fd5b5061014f600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356103b4565b3480156101e457600080fd5b5061018d6105b3565b6003546001600160a01b031690565b6000610207336105b9565b610251576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103945761028084848381811061026b57fe5b905060200201356001600160a01b031661064d565b156102d2576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006102f9308686858181106102e457fe5b905060200201356001600160a01b0316610666565b9050801561038b576103278686868581811061031157fe5b905060200201356001600160a01b031683610711565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035557fe5b604080516001600160a01b0395861681526020928302949094013594909416908301525080820184905290519081900360600190a15b50600101610254565b506001949350505050565b6000546001600160a01b031690565b60025490565b6003546000906001600160a01b031633146104005760405162461bcd60e51b8152600401808060200182810382526021815260200180610e646021913960400191505060405180910390fd5b8161040d575060016105ad565b600061049983600360009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50519063ffffffff61077a16565b905060606104a56107db565b905060005b81518110156105a55760006104d2308484815181106104c557fe5b6020026020010151610666565b9050801561059c5760006104fc856104f0848a63ffffffff6108ee16565b9063ffffffff61094716565b905061051c8885858151811061050e57fe5b602002602001015183610711565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061054a57fe5b60200260200101518360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104aa565b506001925050505b92915050565b60015490565b60006105c66001546109b1565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061b57600080fd5b505afa15801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b505192915050565b60008061065983610a73565b5098975050505050505050565b60006001600160a01b0382161561070057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b505190506105ad565b506001600160a01b038216316105ad565b6001600160a01b03821661075b576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610755573d6000803e3d6000fd5b50610775565b6107756001600160a01b038316848363ffffffff610c0716565b505050565b6000828201838110156107d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60606107e86002546109b1565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561085d57600080fd5b810190808051604051939291908464010000000082111561087d57600080fd5b90830190602082018581111561089257600080fd5b82518660208202830111640100000000821117156108af57600080fd5b82525081516020918201928201910280838360005b838110156108dc5781810151838201526020016108c4565b50505050905001604052505050905090565b6000826108fd575060006105ad565b8282028284828161090a57fe5b04146107d45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e196021913960400191505060405180910390fd5b600080821161099d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816109a857fe5b04949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109fe57600080fd5b505afa158015610a12573d6000803e3d6000fd5b505050506040513d6020811015610a2857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561061b57600080fd5b6060600080600080600080610a896002546109b1565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610b1b57600080fd5b8101908080516040519392919084640100000000821115610b3b57600080fd5b908301906020820185811115610b5057600080fd5b8251640100000000811182820188101715610b6a57600080fd5b82525081516020918201929091019080838360005b83811015610b97578181015183820152602001610b7f565b50505050905090810190601f168015610bc45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610775908490610c66826001600160a01b0316610e12565b610cb7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610cf55780518252601f199092019160209182019101610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d57576040519150601f19603f3d011682016040523d82523d6000602084013e610d5c565b606091505b509150915081610db3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e0c57808060200190516020811015610dcf57600080fd5b5051610e0c5760405162461bcd60e51b815260040180806020018281038252602a815260200180610e3a602a913960400191505060405180910390fd5b50505050565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a265627a7a72315820dd6a7e5f2e0a9c99b10d328f8a1f447504d4acb4d01ded19d142a263e413fade64736f6c63430005110032","bin-runtime":"6080604052600436106100555760003560e01c806327810b6e1461009157806340f6a70f146100c25780637d73b23114610163578063877337b0146101785780639dc29fac1461019f578063e2b4ce97146101d8575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b34801561009d57600080fd5b506100a66101ed565b604080516001600160a01b039092168252519081900360200190f35b3480156100ce57600080fd5b5061014f600480360360408110156100e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184602083028401116401000000008311171561014457600080fd5b5090925090506101fc565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506100a661039f565b34801561018457600080fd5b5061018d6103ae565b60408051918252519081900360200190f35b3480156101ab57600080fd5b5061014f600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356103b4565b3480156101e457600080fd5b5061018d6105b3565b6003546001600160a01b031690565b6000610207336105b9565b610251576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103945761028084848381811061026b57fe5b905060200201356001600160a01b031661064d565b156102d2576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006102f9308686858181106102e457fe5b905060200201356001600160a01b0316610666565b9050801561038b576103278686868581811061031157fe5b905060200201356001600160a01b031683610711565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035557fe5b604080516001600160a01b0395861681526020928302949094013594909416908301525080820184905290519081900360600190a15b50600101610254565b506001949350505050565b6000546001600160a01b031690565b60025490565b6003546000906001600160a01b031633146104005760405162461bcd60e51b8152600401808060200182810382526021815260200180610e646021913960400191505060405180910390fd5b8161040d575060016105ad565b600061049983600360009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50519063ffffffff61077a16565b905060606104a56107db565b905060005b81518110156105a55760006104d2308484815181106104c557fe5b6020026020010151610666565b9050801561059c5760006104fc856104f0848a63ffffffff6108ee16565b9063ffffffff61094716565b905061051c8885858151811061050e57fe5b602002602001015183610711565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061054a57fe5b60200260200101518360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104aa565b506001925050505b92915050565b60015490565b60006105c66001546109b1565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061b57600080fd5b505afa15801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b505192915050565b60008061065983610a73565b5098975050505050505050565b60006001600160a01b0382161561070057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b505190506105ad565b506001600160a01b038216316105ad565b6001600160a01b03821661075b576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610755573d6000803e3d6000fd5b50610775565b6107756001600160a01b038316848363ffffffff610c0716565b505050565b6000828201838110156107d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60606107e86002546109b1565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561085d57600080fd5b810190808051604051939291908464010000000082111561087d57600080fd5b90830190602082018581111561089257600080fd5b82518660208202830111640100000000821117156108af57600080fd5b82525081516020918201928201910280838360005b838110156108dc5781810151838201526020016108c4565b50505050905001604052505050905090565b6000826108fd575060006105ad565b8282028284828161090a57fe5b04146107d45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e196021913960400191505060405180910390fd5b600080821161099d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816109a857fe5b04949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109fe57600080fd5b505afa158015610a12573d6000803e3d6000fd5b505050506040513d6020811015610a2857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561061b57600080fd5b6060600080600080600080610a896002546109b1565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610b1b57600080fd5b8101908080516040519392919084640100000000821115610b3b57600080fd5b908301906020820185811115610b5057600080fd5b8251640100000000811182820188101715610b6a57600080fd5b82525081516020918201929091019080838360005b83811015610b97578181015183820152602001610b7f565b50505050905090810190601f168015610bc45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610775908490610c66826001600160a01b0316610e12565b610cb7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610cf55780518252601f199092019160209182019101610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d57576040519150601f19603f3d011682016040523d82523d6000602084013e610d5c565b606091505b509150915081610db3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e0c57808060200190516020811015610dcf57600080fd5b5051610e0c5760405162461bcd60e51b815260040180806020018281038252602a815260200180610e3a602a913960400191505060405180910390fd5b50505050565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a265627a7a72315820dd6a7e5f2e0a9c99b10d328f8a1f447504d4acb4d01ded19d142a263e413fade64736f6c63430005110032","srcmap":"1250:3571:19:-;;;1122:66:23;1272:58;;2201:288:19;5:2:-1;;;;30:1;27;20:12;5:2;2201:288:19;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2201:288:19;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;2201:288:19;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1341:19:26;:42;-1:-1:-1;;2456:7:19;:26;;-1:-1:-1;;;;;;2456:26:19;-1:-1:-1;;;;;2456:26:19;;;;;;;;;;;-1:-1:-1;1250:3571:19;;;-1:-1:-1;1250:3571:19;;","srcmap-runtime":"1250:3571:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2587:31;;;2596:10;2587:31;;2608:9;2587:31;;;;;;;;;;;;;;;;;1250:3571;4738:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4738:81:19;;;:::i;:::-;;;;-1:-1:-1;;;;;4738:81:19;;;;;;;;;;;;;;3956:682;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3956:682:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;3956:682:19;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3956:682:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3956:682:19;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;3956:682:19;;-1:-1:-1;3956:682:19;-1:-1:-1;3956:682:19;:::i;:::-;;;;;;;;;;;;;;;;;;1364:91:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;:::-;;;;;;;;;;;;;;;;2850:856:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2850:856:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2850:856:19;;;;;;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;4738:81:19:-;4805:7;;-1:-1:-1;;;;;4805:7:19;4738:81;:::o;3956:682::-;4082:4;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;4103:9:19;4098:512;4118:34;;;4098:512;;;4226:46;4245:23;;4269:1;4245:26;;;;;;;;;;;;;-1:-1:-1;;;;;4245:26:19;4226:18;:46::i;:::-;4225:47;4217:89;;;;;-1:-1:-1;;;4217:89:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;4320:20;4343:51;4360:4;4367:23;;4391:1;4367:26;;;;;;;;;;;;;-1:-1:-1;;;;;4367:26:19;4343:8;:51::i;:::-;4320:74;-1:-1:-1;4412:16:19;;4408:192;;4448:60;4462:3;4467:23;;4491:1;4467:26;;;;;;;;;;;;;-1:-1:-1;;;;;4467:26:19;4495:12;4448:13;:60::i;:::-;4531:54;4539:3;4544:23;;4568:1;4544:26;;;;;;;4531:54;;;-1:-1:-1;;;;;4531:54:19;;;;;4544:26;;;;;;;;;;;;;4531:54;;;;-1:-1:-1;4531:54:19;;;;;;;;;;;;;;;;4408:192;-1:-1:-1;4154:3:19;;4098:512;;;-1:-1:-1;4627:4:19;;3956:682;-1:-1:-1;;;;3956:682:19:o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;1514:105:26:-;1593:19;;1514:105;:::o;2850:856:19:-;1683:7;;2931:4;;-1:-1:-1;;;;;1683:7:19;1669:10;:21;1661:67;;;;-1:-1:-1;;;1661:67:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2951:12;2947:54;;-1:-1:-1;2986:4:19;2979:11;;2947:54;3078:14;3095:45;3132:7;3103;;;;;;;;;-1:-1:-1;;;;;3103:7:19;-1:-1:-1;;;;;3095:30:19;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3095:32:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3095:32:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3095:32:19;;:45;:36;:45;:::i;:::-;3078:62;;3150:36;3189:19;:17;:19::i;:::-;3150:58;-1:-1:-1;3223:9:19;3218:460;3242:19;:26;3238:1;:30;3218:460;;;3289:25;3317:47;3334:4;3341:19;3361:1;3341:22;;;;;;;;;;;;;;3317:8;:47::i;:::-;3289:75;-1:-1:-1;3382:21:19;;3378:290;;3423:24;3450:42;3485:6;3450:30;:17;3472:7;3450:30;:21;:30;:::i;:::-;:34;:42;:34;:42;:::i;:::-;3423:69;;3510:60;3524:3;3529:19;3549:1;3529:22;;;;;;;;;;;;;;3553:16;3510:13;:60::i;:::-;3593;3607:3;3612:19;3632:1;3612:22;;;;;;;;;;;;;;3636:16;3593:60;;;;-1:-1:-1;;;;;3593:60:19;-1:-1:-1;;;;;3593:60:19;;;;;;-1:-1:-1;;;;;3593:60:19;-1:-1:-1;;;;;3593:60:19;;;;;;;;;;;;;;;;;;;;;;3378:290;;-1:-1:-1;3270:3:19;;3218:460;;;;3695:4;3688:11;;;;1738:1;2850:856;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;2554:148::-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4903:162:26:-;4966:4;4993:15;5014:17;5028:2;5014:13;:17::i;:::-;-1:-1:-1;4982:49:26;4903:162;-1:-1:-1;;;;;;;;4903:162:26:o;1207:245:20:-;1282:7;-1:-1:-1;;;;;1305:20:20;;;1301:145;;1354:6;-1:-1:-1;;;;;1348:23:20;;1372:8;1348:33;;;;;;;;;;;;;-1:-1:-1;;;;;1348:33:20;-1:-1:-1;;;;;1348:33:20;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1348:33:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:20;;-1:-1:-1;1341:40:20;;1301:145;-1:-1:-1;;;;;;1419:16:20;;;1412:23;;1366:289:27;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;3511:162:26:-;3563:16;3614:32;3626:19;;3614:11;:32::i;:::-;-1:-1:-1;;;;;3598:66:26;;:68;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3598:68:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3598:68:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3598:68:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3598:68:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3598:68:26;;421:4:-1;412:14;;;;3598:68:26;;;;;412:14:-1;3598:68:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3598:68:26;;;;;;;;;;;3591:75;;3511:162;:::o;1693:458:4:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:4;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:4:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:26;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:26;-1:-1:-1;;;;;2306:66:26;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:20;;;;;;;","srcmap-runtime":"898:556:20:-;;;;;"},"internals/burner.sol:IBurner":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","srcmap":"1939:14907:28:-;;;1122:66:23;1272:58;;4758:506:28;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:28;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:28;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:28;:26;;;;-1:-1:-1;4995:11:28;:33;;-1:-1:-1;;;;;4995:33:28;;;-1:-1:-1;;;;;;4995:33:28;;;;;;;;;-1:-1:-1;5083:18:28;:28;;;:35;;-1:-1:-1;;5083:35:28;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:28;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:28:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:28;-1:-1:-1;;;;;;16070:136:28;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:28;-1:-1:-1;;;;;13314:334:28;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:28;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;-1:-1:-1;6040:1806:28;-1:-1:-1;6040:1806:28;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:28;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:28;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:28;;-1:-1:-1;;;;;15695:220:28;;;;;-1:-1:-1;;;;;;15695:220:28;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:28;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:28;;-1:-1:-1;7973:1237:28;-1:-1:-1;7973:1237:28;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:28;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:28;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:28;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:28;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:28;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:28;;-1:-1:-1;9368:1399:28;-1:-1:-1;9368:1399:28;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:28;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:28;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:28:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:28;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:28;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:28;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:28;;;:88;;;;-1:-1:-1;6442:35:28;;;6389:88;:142;;;;-1:-1:-1;6497:34:28;;;6389:142;:196;;;;-1:-1:-1;6551:34:28;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:28;6841:25;;-1:-1:-1;6841:25:28;;;;;;;;-1:-1:-1;6841:25:28;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:28;-1:-1:-1;;;;;7084:25:28;-1:-1:-1;;;;;7084:25:28;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:28;;;;;-1:-1:-1;;7084:306:28;;;-1:-1:-1;;7084:306:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:28;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:28;-1:-1:-1;;;;;7486:10:28;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:28;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:28;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:28;-1:-1:-1;;;;;7742:87:28;;;;;;-1:-1:-1;;;;;7742:87:28;-1:-1:-1;;;;;7742:87:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:28;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:28;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:28;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:28;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:28;-1:-1:-1;15069:72:28;-1:-1:-1;15151:23:28;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:28;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:28;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:28;;;-1:-1:-1;;;;;15364:44:28;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:28;;15188:283;;;-1:-1:-1;15487:19:28;;-1:-1:-1;;14990:523:28;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:28;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:28;;;;;;;;;;;;-1:-1:-1;;;11432:66:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:28;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:28;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:28;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:28;;;;;;;;;;;;-1:-1:-1;;;15798:62:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:28;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:28:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:28;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:28;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:28;;8363:65;;;;;-1:-1:-1;;;8363:65:28;;;;;;;;;;;;-1:-1:-1;;;8363:65:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:28;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:28;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:28;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:28;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:28;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:28;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:28;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:28;;;;;-1:-1:-1;;;;;8926:76:28;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:28;:27;;;;;-1:-1:-1;;9075:27:28;;;:::i;:::-;-1:-1:-1;9162:31:28;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:28;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:28;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:28:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:28;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:28;;;;;;;;;;;;-1:-1:-1;;;10969:66:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:28;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:28;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:28;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:28;;:23;-1:-1:-1;;9801:23:28;:20;:23;;-1:-1:-1;9801:23:28:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:28;;;;;;;;;;;;-1:-1:-1;;;9877:72:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:28;;-1:-1:-1;;;10048:18:28;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:28;;:24;-1:-1:-1;;10141:24:28;:21;:24;;-1:-1:-1;10141:24:28:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:28;;-1:-1:-1;;;10187:27:28;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:28;;:34;-1:-1:-1;;10400:34:28;:21;:34;;-1:-1:-1;10400:34:28:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:28;;:34;-1:-1:-1;;10436:34:28;:21;:34;;-1:-1:-1;10436:34:28:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:28;;:29;-1:-1:-1;;10689:29:28;:21;:29;;-1:-1:-1;10689:29:28:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:28;;:29;-1:-1:-1;;10720:29:28;:21;:29;;-1:-1:-1;10720:29:28:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:28;-1:-1:-1;;;;;5399:27:28;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:28;;;;;;;;;;;;-1:-1:-1;;;5367:86:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:28;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:28;;;;;;;;;;;;-1:-1:-1;;;12130:66:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:28;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:28:-;16622:11;;-1:-1:-1;;;;;16622:11:28;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:18:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:18:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:18;87:34:-1;135:17;;-1:-1;5912:21:18;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:18;5807:265;-1:-1:-1;;5807:265:18:o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:18;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:18;4078:48;;-1:-1:-1;3968:170:18;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:18;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:18;4378:24;;-1:-1:-1;4293:121:18;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:18;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:18:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:18;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:18;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:28;;;-1:-1:-1;1939:14907:28;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","holder.sol","internals/balanceable.sol","internals/burner.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","tokenWhitelist.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[1299],"IController":[864]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":847,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":2709,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":1300,"symbolAliases":[null],"unitAlias":""},"id":848,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":846,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":1300,"symbolAliases":[null],"unitAlias":""},"id":849,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[864],"name":"IController","scope":1300},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":864,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":850,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":851,"name":"VariableDeclaration","src":"1015:7:0"}],"id":852,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":856,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":853,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":854,"name":"VariableDeclaration","src":"1047:4:0"}],"id":855,"name":"ParameterList","src":"1046:6:0"}],"id":856,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":864,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":863,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":857,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":858,"name":"VariableDeclaration","src":"1076:7:0"}],"id":859,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":863,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":860,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":861,"name":"VariableDeclaration","src":"1108:4:0"}],"id":862,"name":"ParameterList","src":"1107:6:0"}],"id":863,"name":"FunctionDefinition","src":"1059:55:0"}],"id":864,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[845,864,2708],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[1299,845,2708,864],"name":"Controller","scope":1300},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":864,"type":"contract IController"},"id":865,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":866,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":2708,"type":"contract Ownable"},"id":867,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":868,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":845,"type":"contract Transferrable"},"id":869,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":870,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":876,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":871,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":872,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":876,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":873,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":874,"name":"VariableDeclaration","src":"1564:19:0"}],"id":875,"name":"ParameterList","src":"1546:38:0"}],"id":876,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":882,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":877,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":878,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":882,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":879,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":880,"name":"VariableDeclaration","src":"1631:19:0"}],"id":881,"name":"ParameterList","src":"1613:38:0"}],"id":882,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":888,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":883,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":884,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":888,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":885,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":886,"name":"VariableDeclaration","src":"1692:14:0"}],"id":887,"name":"ParameterList","src":"1674:33:0"}],"id":888,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":889,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":890,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":891,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":892,"name":"VariableDeclaration","src":"1749:14:0"}],"id":893,"name":"ParameterList","src":"1731:33:0"}],"id":894,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":902,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":895,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":896,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":902,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":897,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":898,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":902,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":899,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":900,"name":"VariableDeclaration","src":"1814:15:0"}],"id":901,"name":"ParameterList","src":"1784:46:0"}],"id":902,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":903,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":904,"name":"VariableDeclaration","src":"1851:15:0"}],"id":905,"name":"ParameterList","src":"1850:17:0"}],"id":906,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":910,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":907,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":908,"name":"VariableDeclaration","src":"1887:15:0"}],"id":909,"name":"ParameterList","src":"1886:17:0"}],"id":910,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":1299,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":911,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":912,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":913,"name":"Mapping","src":"1910:24:0"}],"id":914,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":1299,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":915,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":916,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":1299,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":917,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":918,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":919,"name":"Mapping","src":"1991:24:0"}],"id":920,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":1299,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":921,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":922,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":1299,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":923,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":924,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":934,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":925,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":926,"name":"VariableDeclaration","src":"2251:30:0"}],"id":927,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":932,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2708,"type":"type(contract Ownable)","value":"Ownable"},"id":928,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":926,"type":"address payable","value":"_ownerAddress_"},"id":929,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":930,"name":"Literal","src":"2314:5:0"}],"id":931,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":933,"name":"Block","src":"2321:2:0"}],"id":934,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":935,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":936,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":937,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":938,"name":"Identifier","src":"2431:3:0"}],"id":939,"name":"MemberAccess","src":"2431:10:0"}],"id":940,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":941,"name":"Literal","src":"2444:24:0"}],"id":942,"name":"FunctionCall","src":"2414:55:0"}],"id":943,"name":"ExpressionStatement","src":"2414:55:0"},{"id":944,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":945,"name":"Block","src":"2404:83:0"}],"id":946,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":947,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":948,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2707,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":949,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":950,"name":"Identifier","src":"2588:3:0"}],"id":951,"name":"MemberAccess","src":"2588:10:0"}],"id":952,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":953,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":954,"name":"Identifier","src":"2612:3:0"}],"id":955,"name":"MemberAccess","src":"2612:10:0"}],"id":956,"name":"IndexAccess","src":"2603:20:0"}],"id":957,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":958,"name":"Literal","src":"2625:24:0"}],"id":959,"name":"FunctionCall","src":"2571:79:0"}],"id":960,"name":"ExpressionStatement","src":"2571:79:0"},{"id":961,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":962,"name":"Block","src":"2561:107:0"}],"id":963,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":964,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":965,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1078,"type":"function () view returns (bool)","value":"isStopped"},"id":966,"name":"Identifier","src":"2762:9:0"}],"id":967,"name":"FunctionCall","src":"2762:11:0"}],"id":968,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":969,"name":"Literal","src":"2775:23:0"}],"id":970,"name":"FunctionCall","src":"2753:46:0"}],"id":971,"name":"ExpressionStatement","src":"2753:46:0"},{"id":972,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":973,"name":"Block","src":"2743:74:0"}],"id":974,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":988,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":975,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":976,"name":"VariableDeclaration","src":"2958:16:0"}],"id":977,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":982,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":978,"name":"Identifier","src":"2985:9:0"}],"id":979,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":980,"name":"Identifier","src":"2995:10:0"}],"id":981,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1132,"type":"function (address)","value":"_addAdmin"},"id":983,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":976,"type":"address","value":"_account"},"id":984,"name":"Identifier","src":"3026:8:0"}],"id":985,"name":"FunctionCall","src":"3016:19:0"}],"id":986,"name":"ExpressionStatement","src":"3016:19:0"}],"id":987,"name":"Block","src":"3006:36:0"}],"id":988,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1000,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":989,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":990,"name":"VariableDeclaration","src":"3192:16:0"}],"id":991,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":994,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":992,"name":"Identifier","src":"3219:9:0"}],"id":993,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1160,"type":"function (address)","value":"_removeAdmin"},"id":995,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":990,"type":"address","value":"_account"},"id":996,"name":"Identifier","src":"3252:8:0"}],"id":997,"name":"FunctionCall","src":"3239:22:0"}],"id":998,"name":"ExpressionStatement","src":"3239:22:0"}],"id":999,"name":"Block","src":"3229:39:0"}],"id":1000,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":1299,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1001,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1008,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1002,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":1003,"name":"VariableDeclaration","src":"3365:7:0"}],"id":1004,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":1004},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":916,"type":"uint256","value":"_adminCount"},"id":1005,"name":"Identifier","src":"3391:11:0"}],"id":1006,"name":"Return","src":"3384:18:0"}],"id":1007,"name":"Block","src":"3374:35:0"}],"id":1008,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1022,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1009,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":1010,"name":"VariableDeclaration","src":"3570:16:0"}],"id":1011,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1016,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1012,"name":"Identifier","src":"3597:16:0"}],"id":1013,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":1014,"name":"Identifier","src":"3614:10:0"}],"id":1015,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1214,"type":"function (address)","value":"_addController"},"id":1017,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1010,"type":"address","value":"_account"},"id":1018,"name":"Identifier","src":"3650:8:0"}],"id":1019,"name":"FunctionCall","src":"3635:24:0"}],"id":1020,"name":"ExpressionStatement","src":"3635:24:0"}],"id":1021,"name":"Block","src":"3625:41:0"}],"id":1022,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1034,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1023,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":1024,"name":"VariableDeclaration","src":"3836:16:0"}],"id":1025,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1028,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1026,"name":"Identifier","src":"3863:16:0"}],"id":1027,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1242,"type":"function (address)","value":"_removeController"},"id":1029,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1024,"type":"address","value":"_account"},"id":1030,"name":"Identifier","src":"3908:8:0"}],"id":1031,"name":"FunctionCall","src":"3890:27:0"}],"id":1032,"name":"ExpressionStatement","src":"3890:27:0"}],"id":1033,"name":"Block","src":"3880:44:0"}],"id":1034,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":1299,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1035,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1042,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1036,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":1037,"name":"VariableDeclaration","src":"4069:7:0"}],"id":1038,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":1038},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":922,"type":"uint256","value":"_controllerCount"},"id":1039,"name":"Identifier","src":"4095:16:0"}],"id":1040,"name":"Return","src":"4088:23:0"}],"id":1041,"name":"Block","src":"4078:40:0"}],"id":1042,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":1299,"stateMutability":"view","superFunction":863,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1056,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1043,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":1044,"name":"VariableDeclaration","src":"4239:16:0"}],"id":1045,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1056,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1048,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":1049,"name":"VariableDeclaration","src":"4291:4:0"}],"id":1050,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":1046,"name":"Identifier","src":"4271:10:0"}],"id":1047,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":1050},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1051,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1044,"type":"address","value":"_account"},"id":1052,"name":"Identifier","src":"4323:8:0"}],"id":1053,"name":"IndexAccess","src":"4314:18:0"}],"id":1054,"name":"Return","src":"4307:25:0"}],"id":1055,"name":"Block","src":"4297:42:0"}],"id":1056,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":1299,"stateMutability":"view","superFunction":856,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1070,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1057,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":1058,"name":"VariableDeclaration","src":"4473:16:0"}],"id":1059,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1070,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1062,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":1063,"name":"VariableDeclaration","src":"4525:4:0"}],"id":1064,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":1060,"name":"Identifier","src":"4505:10:0"}],"id":1061,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":1064},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1065,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1058,"type":"address","value":"_account"},"id":1066,"name":"Identifier","src":"4562:8:0"}],"id":1067,"name":"IndexAccess","src":"4548:23:0"}],"id":1068,"name":"Return","src":"4541:30:0"}],"id":1069,"name":"Block","src":"4531:47:0"}],"id":1070,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":1299,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1071,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1078,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1072,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":1073,"name":"VariableDeclaration","src":"4766:4:0"}],"id":1074,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":1074},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":924,"type":"bool","value":"_stopped"},"id":1075,"name":"Identifier","src":"4789:8:0"}],"id":1076,"name":"Return","src":"4782:15:0"}],"id":1077,"name":"Block","src":"4772:32:0"}],"id":1078,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1132,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1079,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":1080,"name":"VariableDeclaration","src":"4891:16:0"}],"id":1081,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1082,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1083,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1084,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1085,"name":"Identifier","src":"4945:8:0"}],"id":1086,"name":"IndexAccess","src":"4936:18:0"}],"id":1087,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":1088,"name":"Literal","src":"4956:38:0"}],"id":1089,"name":"FunctionCall","src":"4927:68:0"}],"id":1090,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1091,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1092,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1093,"name":"Identifier","src":"5028:8:0"}],"id":1094,"name":"IndexAccess","src":"5014:23:0"}],"id":1095,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":1096,"name":"Literal","src":"5039:42:0"}],"id":1097,"name":"FunctionCall","src":"5005:77:0"}],"id":1098,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1099,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2707,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1100,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1101,"name":"Identifier","src":"5110:8:0"}],"id":1102,"name":"FunctionCall","src":"5101:18:0"}],"id":1103,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":1104,"name":"Literal","src":"5121:39:0"}],"id":1105,"name":"FunctionCall","src":"5092:69:0"}],"id":1106,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1107,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1108,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1109,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1110,"name":"Literal","src":"5199:1:0"}],"id":1111,"name":"FunctionCall","src":"5191:10:0"}],"id":1112,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":1113,"name":"Literal","src":"5203:38:0"}],"id":1114,"name":"FunctionCall","src":"5171:71:0"}],"id":1115,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1116,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1117,"name":"Identifier","src":"5261:8:0"}],"id":1118,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1119,"name":"Literal","src":"5273:4:0"}],"id":1120,"name":"Assignment","src":"5252:25:0"}],"id":1121,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":916,"type":"uint256","value":"_adminCount"},"id":1122,"name":"Identifier","src":"5287:11:0"}],"id":1123,"name":"UnaryOperation","src":"5287:13:0"}],"id":1124,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":888,"type":"function (address,address)","value":"AddedAdmin"},"id":1125,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1126,"name":"Identifier","src":"5326:3:0"}],"id":1127,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1128,"name":"Identifier","src":"5338:8:0"}],"id":1129,"name":"FunctionCall","src":"5315:32:0"}],"id":1130,"name":"EmitStatement","src":"5310:37:0"}],"id":1131,"name":"Block","src":"4917:437:0"}],"id":1132,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1160,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1133,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":1134,"name":"VariableDeclaration","src":"5453:16:0"}],"id":1135,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1136,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1137,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1138,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"address","value":"_account"},"id":1139,"name":"Identifier","src":"5506:8:0"}],"id":1140,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":1141,"name":"Literal","src":"5517:34:0"}],"id":1142,"name":"FunctionCall","src":"5489:63:0"}],"id":1143,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1144,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"address","value":"_account"},"id":1145,"name":"Identifier","src":"5571:8:0"}],"id":1146,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1147,"name":"Literal","src":"5583:5:0"}],"id":1148,"name":"Assignment","src":"5562:26:0"}],"id":1149,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":916,"type":"uint256","value":"_adminCount"},"id":1150,"name":"Identifier","src":"5598:11:0"}],"id":1151,"name":"UnaryOperation","src":"5598:13:0"}],"id":1152,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":894,"type":"function (address,address)","value":"RemovedAdmin"},"id":1153,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1154,"name":"Identifier","src":"5639:3:0"}],"id":1155,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"address","value":"_account"},"id":1156,"name":"Identifier","src":"5651:8:0"}],"id":1157,"name":"FunctionCall","src":"5626:34:0"}],"id":1158,"name":"EmitStatement","src":"5621:39:0"}],"id":1159,"name":"Block","src":"5479:188:0"}],"id":1160,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1214,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1161,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":1162,"name":"VariableDeclaration","src":"5764:16:0"}],"id":1163,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1164,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1165,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1166,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1167,"name":"Identifier","src":"5818:8:0"}],"id":1168,"name":"IndexAccess","src":"5809:18:0"}],"id":1169,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":1170,"name":"Literal","src":"5829:38:0"}],"id":1171,"name":"FunctionCall","src":"5800:68:0"}],"id":1172,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1173,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1174,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1175,"name":"Identifier","src":"5901:8:0"}],"id":1176,"name":"IndexAccess","src":"5887:23:0"}],"id":1177,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":1178,"name":"Literal","src":"5912:42:0"}],"id":1179,"name":"FunctionCall","src":"5878:77:0"}],"id":1180,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1181,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2707,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1182,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1183,"name":"Identifier","src":"5983:8:0"}],"id":1184,"name":"FunctionCall","src":"5974:18:0"}],"id":1185,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":1186,"name":"Literal","src":"5994:39:0"}],"id":1187,"name":"FunctionCall","src":"5965:69:0"}],"id":1188,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1189,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1190,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1191,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1192,"name":"Literal","src":"6072:1:0"}],"id":1193,"name":"FunctionCall","src":"6064:10:0"}],"id":1194,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":1195,"name":"Literal","src":"6076:38:0"}],"id":1196,"name":"FunctionCall","src":"6044:71:0"}],"id":1197,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1198,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1199,"name":"Identifier","src":"6139:8:0"}],"id":1200,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1201,"name":"Literal","src":"6151:4:0"}],"id":1202,"name":"Assignment","src":"6125:30:0"}],"id":1203,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":922,"type":"uint256","value":"_controllerCount"},"id":1204,"name":"Identifier","src":"6165:16:0"}],"id":1205,"name":"UnaryOperation","src":"6165:18:0"}],"id":1206,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":876,"type":"function (address,address)","value":"AddedController"},"id":1207,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1208,"name":"Identifier","src":"6214:3:0"}],"id":1209,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1210,"name":"Identifier","src":"6226:8:0"}],"id":1211,"name":"FunctionCall","src":"6198:37:0"}],"id":1212,"name":"EmitStatement","src":"6193:42:0"}],"id":1213,"name":"Block","src":"5790:452:0"}],"id":1214,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1215,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":1216,"name":"VariableDeclaration","src":"6351:16:0"}],"id":1217,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1218,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1219,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1220,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"address","value":"_account"},"id":1221,"name":"Identifier","src":"6409:8:0"}],"id":1222,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":1223,"name":"Literal","src":"6420:38:0"}],"id":1224,"name":"FunctionCall","src":"6387:72:0"}],"id":1225,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1226,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"address","value":"_account"},"id":1227,"name":"Identifier","src":"6483:8:0"}],"id":1228,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1229,"name":"Literal","src":"6495:5:0"}],"id":1230,"name":"Assignment","src":"6469:31:0"}],"id":1231,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":922,"type":"uint256","value":"_controllerCount"},"id":1232,"name":"Identifier","src":"6510:16:0"}],"id":1233,"name":"UnaryOperation","src":"6510:18:0"}],"id":1234,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":882,"type":"function (address,address)","value":"RemovedController"},"id":1235,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1236,"name":"Identifier","src":"6561:3:0"}],"id":1237,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"address","value":"_account"},"id":1238,"name":"Identifier","src":"6573:8:0"}],"id":1239,"name":"FunctionCall","src":"6543:39:0"}],"id":1240,"name":"EmitStatement","src":"6538:44:0"}],"id":1241,"name":"Block","src":"6377:212:0"}],"id":1242,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1243,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":1246,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1244,"name":"Identifier","src":"6687:16:0"}],"id":1245,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":924,"type":"bool","value":"_stopped"},"id":1247,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1248,"name":"Literal","src":"6725:4:0"}],"id":1249,"name":"Assignment","src":"6714:15:0"}],"id":1250,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":906,"type":"function (address)","value":"Stopped"},"id":1251,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1252,"name":"Identifier","src":"6752:3:0"}],"id":1253,"name":"MemberAccess","src":"6752:10:0"}],"id":1254,"name":"FunctionCall","src":"6744:19:0"}],"id":1255,"name":"EmitStatement","src":"6739:24:0"}],"id":1256,"name":"Block","src":"6704:66:0"}],"id":1257,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1258,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":1261,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":1259,"name":"Identifier","src":"6845:9:0"}],"id":1260,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":924,"type":"bool","value":"_stopped"},"id":1262,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1263,"name":"Literal","src":"6876:5:0"}],"id":1264,"name":"Assignment","src":"6865:16:0"}],"id":1265,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":910,"type":"function (address)","value":"Started"},"id":1266,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1267,"name":"Identifier","src":"6904:3:0"}],"id":1268,"name":"MemberAccess","src":"6904:10:0"}],"id":1269,"name":"FunctionCall","src":"6896:19:0"}],"id":1270,"name":"EmitStatement","src":"6891:24:0"}],"id":1271,"name":"Block","src":"6855:67:0"}],"id":1272,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1298,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1273,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":1274,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":1298,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1275,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":1276,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":1298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1277,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":1278,"name":"VariableDeclaration","src":"7063:15:0"}],"id":1279,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":1284,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":946,"type":"modifier ()","value":"onlyAdmin"},"id":1280,"name":"Identifier","src":"7089:9:0"}],"id":1281,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":1282,"name":"Identifier","src":"7099:10:0"}],"id":1283,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":844,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":1285,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1274,"type":"address payable","value":"_to"},"id":1286,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1276,"type":"address","value":"_asset"},"id":1287,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1278,"type":"uint256","value":"_amount"},"id":1288,"name":"Identifier","src":"7147:7:0"}],"id":1289,"name":"FunctionCall","src":"7120:35:0"}],"id":1290,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":902,"type":"function (address,address,uint256)","value":"Claimed"},"id":1291,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1274,"type":"address payable","value":"_to"},"id":1292,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1276,"type":"address","value":"_asset"},"id":1293,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1278,"type":"uint256","value":"_amount"},"id":1294,"name":"Identifier","src":"7191:7:0"}],"id":1295,"name":"FunctionCall","src":"7170:29:0"}],"id":1296,"name":"EmitStatement","src":"7165:34:0"}],"id":1297,"name":"Block","src":"7110:96:0"}],"id":1298,"name":"FunctionDefinition","src":"7011:195:0"}],"id":1299,"name":"ContractDefinition","src":"1460:5748:0"}],"id":1300,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[4855]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4838,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[4855],"name":"Address","scope":4856},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":4855,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":4854,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4839,"name":"ElementaryTypeName","src":"562:7:1"}],"id":4840,"name":"VariableDeclaration","src":"562:15:1"}],"id":4841,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":4854,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4842,"name":"ElementaryTypeName","src":"602:4:1"}],"id":4843,"name":"VariableDeclaration","src":"602:4:1"}],"id":4844,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[4846],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":4853,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4845,"name":"ElementaryTypeName","src":"805:7:1"}],"id":4846,"name":"VariableDeclaration","src":"805:12:1"}],"id":4847,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":4846,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":4840,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":4848,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":4844},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4846,"type":"uint256","value":"size"},"id":4849,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4850,"name":"Literal","src":"947:1:1"}],"id":4851,"name":"BinaryOperation","src":"940:8:1"}],"id":4852,"name":"Return","src":"933:15:1"}],"id":4853,"name":"Block","src":"608:347:1"}],"id":4854,"name":"FunctionDefinition","src":"542:413:1"}],"id":4855,"name":"ContractDefinition","src":"94:863:1"}],"id":4856,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[319]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":268,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[319],"name":"ERC20","scope":320},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":319,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":277,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":269,"name":"ElementaryTypeName","src":"193:7:2"}],"id":270,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":277,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":271,"name":"ElementaryTypeName","src":"209:7:2"}],"id":272,"name":"VariableDeclaration","src":"209:16:2"}],"id":273,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":277,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":274,"name":"ElementaryTypeName","src":"250:7:2"}],"id":275,"name":"VariableDeclaration","src":"250:7:2"}],"id":276,"name":"ParameterList","src":"249:9:2"}],"id":277,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":319,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":286,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":278,"name":"ElementaryTypeName","src":"281:7:2"}],"id":279,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":286,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":280,"name":"ElementaryTypeName","src":"299:7:2"}],"id":281,"name":"VariableDeclaration","src":"299:14:2"}],"id":282,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":286,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":283,"name":"ElementaryTypeName","src":"333:4:2"}],"id":284,"name":"VariableDeclaration","src":"333:4:2"}],"id":285,"name":"ParameterList","src":"332:6:2"}],"id":286,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":319,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":293,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":287,"name":"ElementaryTypeName","src":"363:7:2"}],"id":288,"name":"VariableDeclaration","src":"363:12:2"}],"id":289,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":293,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":290,"name":"ElementaryTypeName","src":"400:7:2"}],"id":291,"name":"VariableDeclaration","src":"400:7:2"}],"id":292,"name":"ParameterList","src":"399:9:2"}],"id":293,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":319,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":294,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":295,"name":"ElementaryTypeName","src":"460:7:2"}],"id":296,"name":"VariableDeclaration","src":"460:7:2"}],"id":297,"name":"ParameterList","src":"459:9:2"}],"id":298,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":319,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":307,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":299,"name":"ElementaryTypeName","src":"492:7:2"}],"id":300,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":307,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":301,"name":"ElementaryTypeName","src":"505:7:2"}],"id":302,"name":"VariableDeclaration","src":"505:14:2"}],"id":303,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":307,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":304,"name":"ElementaryTypeName","src":"539:4:2"}],"id":305,"name":"VariableDeclaration","src":"539:4:2"}],"id":306,"name":"ParameterList","src":"538:6:2"}],"id":307,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":319,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":318,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":308,"name":"ElementaryTypeName","src":"572:7:2"}],"id":309,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":318,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":310,"name":"ElementaryTypeName","src":"587:7:2"}],"id":311,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":318,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":312,"name":"ElementaryTypeName","src":"600:7:2"}],"id":313,"name":"VariableDeclaration","src":"600:14:2"}],"id":314,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":318,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":315,"name":"ElementaryTypeName","src":"634:4:2"}],"id":316,"name":"VariableDeclaration","src":"634:4:2"}],"id":317,"name":"ParameterList","src":"633:6:2"}],"id":318,"name":"FunctionDefinition","src":"550:90:2"}],"id":319,"name":"ContractDefinition","src":"152:490:2"}],"id":320,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[2551]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2334,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":320,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":2552,"symbolAliases":[null],"unitAlias":""},"id":2335,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":453,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":2552,"symbolAliases":[null],"unitAlias":""},"id":2336,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":4856,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":2552,"symbolAliases":[null],"unitAlias":""},"id":2337,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[2551],"name":"SafeERC20","scope":2552},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":452,"type":"library SafeMath"},"id":2338,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":2339,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":2340,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":4855,"type":"library Address"},"id":2341,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2342,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":2343,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2365,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2344,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":2345,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":2365,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2346,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":2347,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":2365,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2348,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":2349,"name":"VariableDeclaration","src":"1850:13:3"}],"id":2350,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":2351,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2352,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"contract ERC20","value":"token"},"id":2353,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2354,"name":"Identifier","src":"1910:3:3"}],"id":2355,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":307,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"contract ERC20","value":"token"},"id":2356,"name":"Identifier","src":"1933:5:3"}],"id":2357,"name":"MemberAccess","src":"1933:14:3"}],"id":2358,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2347,"type":"address","value":"to"},"id":2359,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2349,"type":"uint256","value":"value"},"id":2360,"name":"Identifier","src":"1962:5:3"}],"id":2361,"name":"FunctionCall","src":"1910:58:3"}],"id":2362,"name":"FunctionCall","src":"1884:85:3"}],"id":2363,"name":"ExpressionStatement","src":"1884:85:3"}],"id":2364,"name":"Block","src":"1874:102:3"}],"id":2365,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2390,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2366,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":2367,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":2390,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2368,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":2369,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":2390,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2370,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":2371,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":2390,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2372,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":2373,"name":"VariableDeclaration","src":"2047:13:3"}],"id":2374,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":2375,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2376,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2367,"type":"contract ERC20","value":"token"},"id":2377,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2378,"name":"Identifier","src":"2107:3:3"}],"id":2379,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":318,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2367,"type":"contract ERC20","value":"token"},"id":2380,"name":"Identifier","src":"2130:5:3"}],"id":2381,"name":"MemberAccess","src":"2130:18:3"}],"id":2382,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2369,"type":"address","value":"from"},"id":2383,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2371,"type":"address","value":"to"},"id":2384,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2373,"type":"uint256","value":"value"},"id":2385,"name":"Identifier","src":"2169:5:3"}],"id":2386,"name":"FunctionCall","src":"2107:68:3"}],"id":2387,"name":"FunctionCall","src":"2081:95:3"}],"id":2388,"name":"ExpressionStatement","src":"2081:95:3"}],"id":2389,"name":"Block","src":"2071:112:3"}],"id":2390,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2431,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2391,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":2392,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":2431,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2393,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":2394,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":2431,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2395,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":2396,"name":"VariableDeclaration","src":"2240:13:3"}],"id":2397,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":2398,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2399,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2396,"type":"uint256","value":"value"},"id":2400,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2401,"name":"Literal","src":"2562:1:3"}],"id":2402,"name":"BinaryOperation","src":"2553:10:3"}],"id":2403,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":277,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2392,"type":"contract ERC20","value":"token"},"id":2404,"name":"Identifier","src":"2569:5:3"}],"id":2405,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2551","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2406,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7587,"type":"library SafeERC20","value":"this"},"id":2407,"name":"Identifier","src":"2593:4:3"}],"id":2408,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2394,"type":"address","value":"spender"},"id":2409,"name":"Identifier","src":"2600:7:3"}],"id":2410,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2411,"name":"Literal","src":"2612:1:3"}],"id":2412,"name":"BinaryOperation","src":"2569:44:3"}],"id":2413,"name":"TupleExpression","src":"2568:46:3"}],"id":2414,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":2415,"name":"Literal","src":"2628:56:3"}],"id":2416,"name":"FunctionCall","src":"2544:150:3"}],"id":2417,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2418,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2392,"type":"contract ERC20","value":"token"},"id":2419,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2420,"name":"Identifier","src":"2730:3:3"}],"id":2421,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":286,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2392,"type":"contract ERC20","value":"token"},"id":2422,"name":"Identifier","src":"2753:5:3"}],"id":2423,"name":"MemberAccess","src":"2753:13:3"}],"id":2424,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2394,"type":"address","value":"spender"},"id":2425,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2396,"type":"uint256","value":"value"},"id":2426,"name":"Identifier","src":"2786:5:3"}],"id":2427,"name":"FunctionCall","src":"2730:62:3"}],"id":2428,"name":"FunctionCall","src":"2704:89:3"}],"id":2429,"name":"ExpressionStatement","src":"2704:89:3"}],"id":2430,"name":"Block","src":"2264:536:3"}],"id":2431,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2466,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2432,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":2433,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":2466,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2434,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":2435,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":2466,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2436,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":2437,"name":"VariableDeclaration","src":"2867:13:3"}],"id":2438,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":2439,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[2441]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2465,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2440,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":2441,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":277,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2433,"type":"contract ERC20","value":"token"},"id":2442,"name":"Identifier","src":"2924:5:3"}],"id":2443,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2551","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2444,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7587,"type":"library SafeERC20","value":"this"},"id":2445,"name":"Identifier","src":"2948:4:3"}],"id":2446,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2435,"type":"address","value":"spender"},"id":2447,"name":"Identifier","src":"2955:7:3"}],"id":2448,"name":"FunctionCall","src":"2924:39:3"}],"id":2449,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2437,"type":"uint256","value":"value"},"id":2450,"name":"Identifier","src":"2968:5:3"}],"id":2451,"name":"FunctionCall","src":"2924:50:3"}],"id":2452,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2453,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2433,"type":"contract ERC20","value":"token"},"id":2454,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2455,"name":"Identifier","src":"3010:3:3"}],"id":2456,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":286,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2433,"type":"contract ERC20","value":"token"},"id":2457,"name":"Identifier","src":"3033:5:3"}],"id":2458,"name":"MemberAccess","src":"3033:13:3"}],"id":2459,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2435,"type":"address","value":"spender"},"id":2460,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2441,"type":"uint256","value":"newAllowance"},"id":2461,"name":"Identifier","src":"3066:12:3"}],"id":2462,"name":"FunctionCall","src":"3010:69:3"}],"id":2463,"name":"FunctionCall","src":"2984:96:3"}],"id":2464,"name":"ExpressionStatement","src":"2984:96:3"}],"id":2465,"name":"Block","src":"2891:196:3"}],"id":2466,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2501,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2467,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":2468,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":2501,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2469,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":2470,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":2501,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2471,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":2472,"name":"VariableDeclaration","src":"3154:13:3"}],"id":2473,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":2474,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[2476]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2475,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":2476,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":371,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":277,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2468,"type":"contract ERC20","value":"token"},"id":2477,"name":"Identifier","src":"3211:5:3"}],"id":2478,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2551","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2479,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7587,"type":"library SafeERC20","value":"this"},"id":2480,"name":"Identifier","src":"3235:4:3"}],"id":2481,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"address","value":"spender"},"id":2482,"name":"Identifier","src":"3242:7:3"}],"id":2483,"name":"FunctionCall","src":"3211:39:3"}],"id":2484,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2472,"type":"uint256","value":"value"},"id":2485,"name":"Identifier","src":"3255:5:3"}],"id":2486,"name":"FunctionCall","src":"3211:50:3"}],"id":2487,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2488,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2468,"type":"contract ERC20","value":"token"},"id":2489,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2490,"name":"Identifier","src":"3297:3:3"}],"id":2491,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":286,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2468,"type":"contract ERC20","value":"token"},"id":2492,"name":"Identifier","src":"3320:5:3"}],"id":2493,"name":"MemberAccess","src":"3320:13:3"}],"id":2494,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"address","value":"spender"},"id":2495,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2476,"type":"uint256","value":"newAllowance"},"id":2496,"name":"Identifier","src":"3353:12:3"}],"id":2497,"name":"FunctionCall","src":"3297:69:3"}],"id":2498,"name":"FunctionCall","src":"3271:96:3"}],"id":2499,"name":"ExpressionStatement","src":"3271:96:3"}],"id":2500,"name":"Block","src":"3178:196:3"}],"id":2501,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2550,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2502,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":2503,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":2550,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2504,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":2505,"name":"VariableDeclaration","src":"3798:17:3"}],"id":2506,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":2507,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2508,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":4854,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2509,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2503,"type":"contract ERC20","value":"token"},"id":2510,"name":"Identifier","src":"4360:5:3"}],"id":2511,"name":"FunctionCall","src":"4352:14:3"}],"id":2512,"name":"MemberAccess","src":"4352:25:3"}],"id":2513,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":2514,"name":"Literal","src":"4381:33:3"}],"id":2515,"name":"FunctionCall","src":"4344:71:3"}],"id":2516,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[2518,2520]},"children":[{"attributes":{"constant":false,"name":"success","scope":2549,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2517,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":2518,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":2549,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2519,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":2520,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2521,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2503,"type":"contract ERC20","value":"token"},"id":2522,"name":"Identifier","src":"4535:5:3"}],"id":2523,"name":"FunctionCall","src":"4527:14:3"}],"id":2524,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2505,"type":"bytes memory","value":"data"},"id":2525,"name":"Identifier","src":"4547:4:3"}],"id":2526,"name":"FunctionCall","src":"4527:25:3"}],"id":2527,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2528,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2518,"type":"bool","value":"success"},"id":2529,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":2530,"name":"Literal","src":"4579:34:3"}],"id":2531,"name":"FunctionCall","src":"4562:52:3"}],"id":2532,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2520,"type":"bytes memory","value":"returndata"},"id":2533,"name":"Identifier","src":"4629:10:3"}],"id":2534,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2535,"name":"Literal","src":"4649:1:3"}],"id":2536,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2537,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2538,"name":"Identifier","src":"4758:3:3"}],"id":2539,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2520,"type":"bytes memory","value":"returndata"},"id":2540,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":2541,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":2542,"name":"TupleExpression","src":"4781:6:3"}],"id":2543,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":2544,"name":"Literal","src":"4790:44:3"}],"id":2545,"name":"FunctionCall","src":"4750:85:3"}],"id":2546,"name":"ExpressionStatement","src":"4750:85:3"}],"id":2547,"name":"Block","src":"4652:194:3"}],"id":2548,"name":"IfStatement","src":"4625:221:3"}],"id":2549,"name":"Block","src":"3826:1026:3"}],"id":2550,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":2551,"name":"ContractDefinition","src":"1715:3139:3"}],"id":2552,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[452]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":321,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[452],"name":"SafeMath","scope":453},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":346,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":322,"name":"ElementaryTypeName","src":"847:7:4"}],"id":323,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":346,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":324,"name":"ElementaryTypeName","src":"858:7:4"}],"id":325,"name":"VariableDeclaration","src":"858:9:4"}],"id":326,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":346,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":327,"name":"ElementaryTypeName","src":"892:7:4"}],"id":328,"name":"VariableDeclaration","src":"892:7:4"}],"id":329,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[331]},"children":[{"attributes":{"constant":false,"name":"c","scope":345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":330,"name":"ElementaryTypeName","src":"911:7:4"}],"id":331,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"a"},"id":332,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"uint256","value":"b"},"id":333,"name":"Identifier","src":"927:1:4"}],"id":334,"name":"BinaryOperation","src":"923:5:4"}],"id":335,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":336,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":331,"type":"uint256","value":"c"},"id":337,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"a"},"id":338,"name":"Identifier","src":"951:1:4"}],"id":339,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":340,"name":"Literal","src":"954:29:4"}],"id":341,"name":"FunctionCall","src":"938:46:4"}],"id":342,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":329},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":331,"type":"uint256","value":"c"},"id":343,"name":"Identifier","src":"1002:1:4"}],"id":344,"name":"Return","src":"995:8:4"}],"id":345,"name":"Block","src":"901:109:4"}],"id":346,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":371,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":347,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":348,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":371,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":349,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":350,"name":"VariableDeclaration","src":"1298:9:4"}],"id":351,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":371,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":352,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":353,"name":"VariableDeclaration","src":"1332:7:4"}],"id":354,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":355,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"b"},"id":356,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":348,"type":"uint256","value":"a"},"id":357,"name":"Identifier","src":"1364:1:4"}],"id":358,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":359,"name":"Literal","src":"1367:32:4"}],"id":360,"name":"FunctionCall","src":"1351:49:4"}],"id":361,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[363]},"children":[{"attributes":{"constant":false,"name":"c","scope":370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":362,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":363,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":348,"type":"uint256","value":"a"},"id":364,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"b"},"id":365,"name":"Identifier","src":"1426:1:4"}],"id":366,"name":"BinaryOperation","src":"1422:5:4"}],"id":367,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":354},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":363,"type":"uint256","value":"c"},"id":368,"name":"Identifier","src":"1445:1:4"}],"id":369,"name":"Return","src":"1438:8:4"}],"id":370,"name":"Block","src":"1341:112:4"}],"id":371,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":405,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":372,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":373,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":405,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":374,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":375,"name":"VariableDeclaration","src":"1717:9:4"}],"id":376,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":405,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":377,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":378,"name":"VariableDeclaration","src":"1751:7:4"}],"id":379,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":373,"type":"uint256","value":"a"},"id":380,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":381,"name":"Literal","src":"1996:1:4"}],"id":382,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":379},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":383,"name":"Literal","src":"2020:1:4"}],"id":384,"name":"Return","src":"2013:8:4"}],"id":385,"name":"Block","src":"1999:33:4"}],"id":386,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[388]},"children":[{"attributes":{"constant":false,"name":"c","scope":404,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":387,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":388,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":373,"type":"uint256","value":"a"},"id":389,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":375,"type":"uint256","value":"b"},"id":390,"name":"Identifier","src":"2058:1:4"}],"id":391,"name":"BinaryOperation","src":"2054:5:4"}],"id":392,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":393,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":388,"type":"uint256","value":"c"},"id":394,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":373,"type":"uint256","value":"a"},"id":395,"name":"Identifier","src":"2081:1:4"}],"id":396,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":375,"type":"uint256","value":"b"},"id":397,"name":"Identifier","src":"2086:1:4"}],"id":398,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":399,"name":"Literal","src":"2089:35:4"}],"id":400,"name":"FunctionCall","src":"2069:56:4"}],"id":401,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":379},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":388,"type":"uint256","value":"c"},"id":402,"name":"Identifier","src":"2143:1:4"}],"id":403,"name":"Return","src":"2136:8:4"}],"id":404,"name":"Block","src":"1760:391:4"}],"id":405,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":430,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":406,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":407,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":430,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":408,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":409,"name":"VariableDeclaration","src":"2630:9:4"}],"id":410,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":430,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":411,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":412,"name":"VariableDeclaration","src":"2664:7:4"}],"id":413,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":414,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":409,"type":"uint256","value":"b"},"id":415,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":416,"name":"Literal","src":"2761:1:4"}],"id":417,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":418,"name":"Literal","src":"2764:28:4"}],"id":419,"name":"FunctionCall","src":"2749:44:4"}],"id":420,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[422]},"children":[{"attributes":{"constant":false,"name":"c","scope":429,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":421,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":422,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":407,"type":"uint256","value":"a"},"id":423,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":409,"type":"uint256","value":"b"},"id":424,"name":"Identifier","src":"2819:1:4"}],"id":425,"name":"BinaryOperation","src":"2815:5:4"}],"id":426,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":413},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":422,"type":"uint256","value":"c"},"id":427,"name":"Identifier","src":"2924:1:4"}],"id":428,"name":"Return","src":"2917:8:4"}],"id":429,"name":"Block","src":"2673:259:4"}],"id":430,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":451,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":431,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":432,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":451,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":433,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":434,"name":"VariableDeclaration","src":"3400:9:4"}],"id":435,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":451,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":436,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":437,"name":"VariableDeclaration","src":"3434:7:4"}],"id":438,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":439,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":434,"type":"uint256","value":"b"},"id":440,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":441,"name":"Literal","src":"3466:1:4"}],"id":442,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":443,"name":"Literal","src":"3469:26:4"}],"id":444,"name":"FunctionCall","src":"3453:43:4"}],"id":445,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":438},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":432,"type":"uint256","value":"a"},"id":446,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":434,"type":"uint256","value":"b"},"id":447,"name":"Identifier","src":"3517:1:4"}],"id":448,"name":"BinaryOperation","src":"3513:5:4"}],"id":449,"name":"Return","src":"3506:12:4"}],"id":450,"name":"Block","src":"3443:82:4"}],"id":451,"name":"FunctionDefinition","src":"3376:149:4"}],"id":452,"name":"ContractDefinition","src":"589:2938:4"}],"id":453,"name":"SourceUnit","src":"0:3528:4"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[2845]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2710,"name":"PragmaDirective","src":"1400:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2845],"name":"ENS","scope":2846},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2718,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2711,"name":"ElementaryTypeName","src":"1534:7:5"}],"id":2712,"name":"VariableDeclaration","src":"1534:21:5"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":2718,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2713,"name":"ElementaryTypeName","src":"1557:7:5"}],"id":2714,"name":"VariableDeclaration","src":"1557:22:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":2718,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2715,"name":"ElementaryTypeName","src":"1581:7:5"}],"id":2716,"name":"VariableDeclaration","src":"1581:14:5"}],"id":2717,"name":"ParameterList","src":"1533:63:5"}],"id":2718,"name":"EventDefinition","src":"1519:78:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2724,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2719,"name":"ElementaryTypeName","src":"1695:7:5"}],"id":2720,"name":"VariableDeclaration","src":"1695:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":2724,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2721,"name":"ElementaryTypeName","src":"1718:7:5"}],"id":2722,"name":"VariableDeclaration","src":"1718:14:5"}],"id":2723,"name":"ParameterList","src":"1694:39:5"}],"id":2724,"name":"EventDefinition","src":"1680:54:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2730,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2725,"name":"ElementaryTypeName","src":"1810:7:5"}],"id":2726,"name":"VariableDeclaration","src":"1810:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":2730,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2727,"name":"ElementaryTypeName","src":"1833:7:5"}],"id":2728,"name":"VariableDeclaration","src":"1833:17:5"}],"id":2729,"name":"ParameterList","src":"1809:42:5"}],"id":2730,"name":"EventDefinition","src":"1792:60:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2736,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2731,"name":"ElementaryTypeName","src":"1916:7:5"}],"id":2732,"name":"VariableDeclaration","src":"1916:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":2736,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2733,"name":"ElementaryTypeName","src":"1939:6:5"}],"id":2734,"name":"VariableDeclaration","src":"1939:11:5"}],"id":2735,"name":"ParameterList","src":"1915:36:5"}],"id":2736,"name":"EventDefinition","src":"1903:49:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":2744,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2737,"name":"ElementaryTypeName","src":"2031:7:5"}],"id":2738,"name":"VariableDeclaration","src":"2031:22:5"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":2744,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2739,"name":"ElementaryTypeName","src":"2055:7:5"}],"id":2740,"name":"VariableDeclaration","src":"2055:25:5"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":2744,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2741,"name":"ElementaryTypeName","src":"2082:4:5"}],"id":2742,"name":"VariableDeclaration","src":"2082:14:5"}],"id":2743,"name":"ParameterList","src":"2030:67:5"}],"id":2744,"name":"EventDefinition","src":"2010:88:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2755,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2745,"name":"ElementaryTypeName","src":"2123:7:5"}],"id":2746,"name":"VariableDeclaration","src":"2123:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":2755,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2747,"name":"ElementaryTypeName","src":"2138:7:5"}],"id":2748,"name":"VariableDeclaration","src":"2138:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":2755,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2749,"name":"ElementaryTypeName","src":"2154:7:5"}],"id":2750,"name":"VariableDeclaration","src":"2154:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":2755,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2751,"name":"ElementaryTypeName","src":"2173:6:5"}],"id":2752,"name":"VariableDeclaration","src":"2173:11:5"}],"id":2753,"name":"ParameterList","src":"2122:63:5"},{"attributes":{"parameters":[null]},"children":[],"id":2754,"name":"ParameterList","src":"2194:0:5"}],"id":2755,"name":"FunctionDefinition","src":"2104:91:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2756,"name":"ElementaryTypeName","src":"2226:7:5"}],"id":2757,"name":"VariableDeclaration","src":"2226:13:5"},{"attributes":{"constant":false,"name":"_label","scope":2768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2758,"name":"ElementaryTypeName","src":"2241:7:5"}],"id":2759,"name":"VariableDeclaration","src":"2241:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":2768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2760,"name":"ElementaryTypeName","src":"2257:7:5"}],"id":2761,"name":"VariableDeclaration","src":"2257:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":2768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2762,"name":"ElementaryTypeName","src":"2273:7:5"}],"id":2763,"name":"VariableDeclaration","src":"2273:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":2768,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2764,"name":"ElementaryTypeName","src":"2292:6:5"}],"id":2765,"name":"VariableDeclaration","src":"2292:11:5"}],"id":2766,"name":"ParameterList","src":"2225:79:5"},{"attributes":{"parameters":[null]},"children":[],"id":2767,"name":"ParameterList","src":"2313:0:5"}],"id":2768,"name":"FunctionDefinition","src":"2200:114:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2779,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2769,"name":"ElementaryTypeName","src":"2344:7:5"}],"id":2770,"name":"VariableDeclaration","src":"2344:13:5"},{"attributes":{"constant":false,"name":"_label","scope":2779,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2771,"name":"ElementaryTypeName","src":"2359:7:5"}],"id":2772,"name":"VariableDeclaration","src":"2359:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":2779,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2773,"name":"ElementaryTypeName","src":"2375:7:5"}],"id":2774,"name":"VariableDeclaration","src":"2375:14:5"}],"id":2775,"name":"ParameterList","src":"2343:47:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2779,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2776,"name":"ElementaryTypeName","src":"2408:7:5"}],"id":2777,"name":"VariableDeclaration","src":"2408:7:5"}],"id":2778,"name":"ParameterList","src":"2407:9:5"}],"id":2779,"name":"FunctionDefinition","src":"2319:98:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2786,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2780,"name":"ElementaryTypeName","src":"2443:7:5"}],"id":2781,"name":"VariableDeclaration","src":"2443:13:5"},{"attributes":{"constant":false,"name":"_resolver","scope":2786,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2782,"name":"ElementaryTypeName","src":"2458:7:5"}],"id":2783,"name":"VariableDeclaration","src":"2458:17:5"}],"id":2784,"name":"ParameterList","src":"2442:34:5"},{"attributes":{"parameters":[null]},"children":[],"id":2785,"name":"ParameterList","src":"2485:0:5"}],"id":2786,"name":"FunctionDefinition","src":"2422:64:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2793,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2787,"name":"ElementaryTypeName","src":"2509:7:5"}],"id":2788,"name":"VariableDeclaration","src":"2509:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":2793,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2789,"name":"ElementaryTypeName","src":"2524:7:5"}],"id":2790,"name":"VariableDeclaration","src":"2524:14:5"}],"id":2791,"name":"ParameterList","src":"2508:31:5"},{"attributes":{"parameters":[null]},"children":[],"id":2792,"name":"ParameterList","src":"2548:0:5"}],"id":2793,"name":"FunctionDefinition","src":"2491:58:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2800,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2794,"name":"ElementaryTypeName","src":"2570:7:5"}],"id":2795,"name":"VariableDeclaration","src":"2570:13:5"},{"attributes":{"constant":false,"name":"_ttl","scope":2800,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2796,"name":"ElementaryTypeName","src":"2585:6:5"}],"id":2797,"name":"VariableDeclaration","src":"2585:11:5"}],"id":2798,"name":"ParameterList","src":"2569:28:5"},{"attributes":{"parameters":[null]},"children":[],"id":2799,"name":"ParameterList","src":"2606:0:5"}],"id":2800,"name":"FunctionDefinition","src":"2554:53:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":2807,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2801,"name":"ElementaryTypeName","src":"2639:7:5"}],"id":2802,"name":"VariableDeclaration","src":"2639:17:5"},{"attributes":{"constant":false,"name":"_approved","scope":2807,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2803,"name":"ElementaryTypeName","src":"2658:4:5"}],"id":2804,"name":"VariableDeclaration","src":"2658:14:5"}],"id":2805,"name":"ParameterList","src":"2638:35:5"},{"attributes":{"parameters":[null]},"children":[],"id":2806,"name":"ParameterList","src":"2682:0:5"}],"id":2807,"name":"FunctionDefinition","src":"2612:71:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2814,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2808,"name":"ElementaryTypeName","src":"2703:7:5"}],"id":2809,"name":"VariableDeclaration","src":"2703:13:5"}],"id":2810,"name":"ParameterList","src":"2702:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2814,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2811,"name":"ElementaryTypeName","src":"2741:7:5"}],"id":2812,"name":"VariableDeclaration","src":"2741:7:5"}],"id":2813,"name":"ParameterList","src":"2740:9:5"}],"id":2814,"name":"FunctionDefinition","src":"2688:62:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2821,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2815,"name":"ElementaryTypeName","src":"2773:7:5"}],"id":2816,"name":"VariableDeclaration","src":"2773:13:5"}],"id":2817,"name":"ParameterList","src":"2772:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2821,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2818,"name":"ElementaryTypeName","src":"2811:7:5"}],"id":2819,"name":"VariableDeclaration","src":"2811:7:5"}],"id":2820,"name":"ParameterList","src":"2810:9:5"}],"id":2821,"name":"FunctionDefinition","src":"2755:65:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2828,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2822,"name":"ElementaryTypeName","src":"2838:7:5"}],"id":2823,"name":"VariableDeclaration","src":"2838:13:5"}],"id":2824,"name":"ParameterList","src":"2837:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2828,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2825,"name":"ElementaryTypeName","src":"2876:6:5"}],"id":2826,"name":"VariableDeclaration","src":"2876:6:5"}],"id":2827,"name":"ParameterList","src":"2875:8:5"}],"id":2828,"name":"FunctionDefinition","src":"2825:59:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2829,"name":"ElementaryTypeName","src":"2911:7:5"}],"id":2830,"name":"VariableDeclaration","src":"2911:13:5"}],"id":2831,"name":"ParameterList","src":"2910:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2835,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2832,"name":"ElementaryTypeName","src":"2949:4:5"}],"id":2833,"name":"VariableDeclaration","src":"2949:4:5"}],"id":2834,"name":"ParameterList","src":"2948:6:5"}],"id":2835,"name":"FunctionDefinition","src":"2889:66:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":2844,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2836,"name":"ElementaryTypeName","src":"2986:7:5"}],"id":2837,"name":"VariableDeclaration","src":"2986:14:5"},{"attributes":{"constant":false,"name":"_operator","scope":2844,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2838,"name":"ElementaryTypeName","src":"3002:7:5"}],"id":2839,"name":"VariableDeclaration","src":"3002:17:5"}],"id":2840,"name":"ParameterList","src":"2985:35:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2844,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2841,"name":"ElementaryTypeName","src":"3044:4:5"}],"id":2842,"name":"VariableDeclaration","src":"3044:4:5"}],"id":2843,"name":"ParameterList","src":"3043:6:5"}],"id":2844,"name":"FunctionDefinition","src":"2960:90:5"}],"id":2845,"name":"ContractDefinition","src":"1425:1627:5"}],"id":2846,"name":"SourceUnit","src":"1400:1653:5"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[7550]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":6831,"name":"PragmaDirective","src":"0:24:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[7550],"name":"ENSBytesUtils","scope":7551},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6853,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6832,"name":"ElementaryTypeName","src":"325:5:6"}],"id":6833,"name":"VariableDeclaration","src":"325:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6853,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6834,"name":"ElementaryTypeName","src":"344:4:6"}],"id":6835,"name":"VariableDeclaration","src":"344:11:6"},{"attributes":{"constant":false,"name":"len","scope":6853,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6836,"name":"ElementaryTypeName","src":"357:4:6"}],"id":6837,"name":"VariableDeclaration","src":"357:8:6"}],"id":6838,"name":"ParameterList","src":"324:42:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6853,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6839,"name":"ElementaryTypeName","src":"390:7:6"}],"id":6840,"name":"VariableDeclaration","src":"390:11:6"}],"id":6841,"name":"ParameterList","src":"389:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":6842,"name":"Identifier","src":"413:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6835,"type":"uint256","value":"offset"},"id":6843,"name":"Identifier","src":"421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6837,"type":"uint256","value":"len"},"id":6844,"name":"Identifier","src":"430:3:6"}],"id":6845,"name":"BinaryOperation","src":"421:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6833,"type":"bytes memory","value":"self"},"id":6846,"name":"Identifier","src":"437:4:6"}],"id":6847,"name":"MemberAccess","src":"437:11:6"}],"id":6848,"name":"BinaryOperation","src":"421:27:6"}],"id":6849,"name":"FunctionCall","src":"413:36:6"}],"id":6850,"name":"ExpressionStatement","src":"413:36:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6840,"isOffset":false,"isSlot":false,"src":"482:3:6","valueSize":1}},{"self":{"declaration":6833,"isOffset":false,"isSlot":false,"src":"507:4:6","valueSize":1}},{"offset":{"declaration":6835,"isOffset":false,"isSlot":false,"src":"518:6:6","valueSize":1}},{"len":{"declaration":6837,"isOffset":false,"isSlot":false,"src":"527:3:6","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":6851,"name":"InlineAssembly","src":"459:82:6"}],"id":6852,"name":"Block","src":"403:144:6"}],"id":6853,"name":"FunctionDefinition","src":"309:238:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6874,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6854,"name":"ElementaryTypeName","src":"920:5:6"}],"id":6855,"name":"VariableDeclaration","src":"920:17:6"},{"attributes":{"constant":false,"name":"other","scope":6874,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6856,"name":"ElementaryTypeName","src":"939:5:6"}],"id":6857,"name":"VariableDeclaration","src":"939:18:6"}],"id":6858,"name":"ParameterList","src":"919:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6874,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6859,"name":"ElementaryTypeName","src":"982:3:6"}],"id":6860,"name":"VariableDeclaration","src":"982:3:6"}],"id":6861,"name":"ParameterList","src":"981:5:6"},{"children":[{"attributes":{"functionReturnParameters":6861},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6874,7006],"referencedDeclaration":7006,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":6862,"name":"Identifier","src":"1004:7:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6855,"type":"bytes memory","value":"self"},"id":6863,"name":"Identifier","src":"1012:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6864,"name":"Literal","src":"1018:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6855,"type":"bytes memory","value":"self"},"id":6865,"name":"Identifier","src":"1021:4:6"}],"id":6866,"name":"MemberAccess","src":"1021:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6857,"type":"bytes memory","value":"other"},"id":6867,"name":"Identifier","src":"1034:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6868,"name":"Literal","src":"1041:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6857,"type":"bytes memory","value":"other"},"id":6869,"name":"Identifier","src":"1044:5:6"}],"id":6870,"name":"MemberAccess","src":"1044:12:6"}],"id":6871,"name":"FunctionCall","src":"1004:53:6"}],"id":6872,"name":"Return","src":"997:60:6"}],"id":6873,"name":"Block","src":"987:77:6"}],"id":6874,"name":"FunctionDefinition","src":"903:161:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7006,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6875,"name":"ElementaryTypeName","src":"1694:5:6"}],"id":6876,"name":"VariableDeclaration","src":"1694:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6877,"name":"ElementaryTypeName","src":"1713:4:6"}],"id":6878,"name":"VariableDeclaration","src":"1713:11:6"},{"attributes":{"constant":false,"name":"len","scope":7006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6879,"name":"ElementaryTypeName","src":"1726:4:6"}],"id":6880,"name":"VariableDeclaration","src":"1726:8:6"},{"attributes":{"constant":false,"name":"other","scope":7006,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6881,"name":"ElementaryTypeName","src":"1736:5:6"}],"id":6882,"name":"VariableDeclaration","src":"1736:18:6"},{"attributes":{"constant":false,"name":"otheroffset","scope":7006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6883,"name":"ElementaryTypeName","src":"1756:4:6"}],"id":6884,"name":"VariableDeclaration","src":"1756:16:6"},{"attributes":{"constant":false,"name":"otherlen","scope":7006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6885,"name":"ElementaryTypeName","src":"1774:4:6"}],"id":6886,"name":"VariableDeclaration","src":"1774:13:6"}],"id":6887,"name":"ParameterList","src":"1693:95:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7006,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6888,"name":"ElementaryTypeName","src":"1812:3:6"}],"id":6889,"name":"VariableDeclaration","src":"1812:3:6"}],"id":6890,"name":"ParameterList","src":"1811:5:6"},{"children":[{"attributes":{"assignments":[6892]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":7005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6891,"name":"ElementaryTypeName","src":"1827:4:6"}],"id":6892,"name":"VariableDeclaration","src":"1827:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6880,"type":"uint256","value":"len"},"id":6893,"name":"Identifier","src":"1843:3:6"}],"id":6894,"name":"VariableDeclarationStatement","src":"1827:19:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6886,"type":"uint256","value":"otherlen"},"id":6895,"name":"Identifier","src":"1860:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6880,"type":"uint256","value":"len"},"id":6896,"name":"Identifier","src":"1871:3:6"}],"id":6897,"name":"BinaryOperation","src":"1860:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"uint256","value":"shortest"},"id":6898,"name":"Identifier","src":"1884:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6886,"type":"uint256","value":"otherlen"},"id":6899,"name":"Identifier","src":"1895:8:6"}],"id":6900,"name":"Assignment","src":"1884:19:6"}],"id":6901,"name":"ExpressionStatement","src":"1884:19:6"}],"id":6902,"name":"IfStatement","src":"1856:47:6"},{"attributes":{"assignments":[6904],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6903,"name":"ElementaryTypeName","src":"1914:4:6"}],"id":6904,"name":"VariableDeclaration","src":"1914:12:6"}],"id":6905,"name":"VariableDeclarationStatement","src":"1914:12:6"},{"attributes":{"assignments":[6907],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":7005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6906,"name":"ElementaryTypeName","src":"1936:4:6"}],"id":6907,"name":"VariableDeclaration","src":"1936:13:6"}],"id":6908,"name":"VariableDeclarationStatement","src":"1936:13:6"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":6904,"isOffset":false,"isSlot":false,"src":"1983:7:6","valueSize":1}},{"otherptr":{"declaration":6907,"isOffset":false,"isSlot":false,"src":"2033:8:6","valueSize":1}},{"offset":{"declaration":6878,"isOffset":false,"isSlot":false,"src":"2008:6:6","valueSize":1}},{"self":{"declaration":6876,"isOffset":false,"isSlot":false,"src":"1998:4:6","valueSize":1}},{"otheroffset":{"declaration":6884,"isOffset":false,"isSlot":false,"src":"2060:11:6","valueSize":1}},{"other":{"declaration":6882,"isOffset":false,"isSlot":false,"src":"2049:5:6","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":6909,"name":"InlineAssembly","src":"1960:127:6"},{"children":[{"attributes":{"assignments":[6911]},"children":[{"attributes":{"constant":false,"name":"idx","scope":6996,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6910,"name":"ElementaryTypeName","src":"2101:4:6"}],"id":6911,"name":"VariableDeclaration","src":"2101:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6912,"name":"Literal","src":"2112:1:6"}],"id":6913,"name":"VariableDeclarationStatement","src":"2101:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6911,"type":"uint256","value":"idx"},"id":6914,"name":"Identifier","src":"2115:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"uint256","value":"shortest"},"id":6915,"name":"Identifier","src":"2121:8:6"}],"id":6916,"name":"BinaryOperation","src":"2115:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6911,"type":"uint256","value":"idx"},"id":6917,"name":"Identifier","src":"2131:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6918,"name":"Literal","src":"2138:2:6"}],"id":6919,"name":"Assignment","src":"2131:9:6"}],"id":6920,"name":"ExpressionStatement","src":"2131:9:6"},{"children":[{"attributes":{"assignments":[6922],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":6995,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6921,"name":"ElementaryTypeName","src":"2156:4:6"}],"id":6922,"name":"VariableDeclaration","src":"2156:6:6"}],"id":6923,"name":"VariableDeclarationStatement","src":"2156:6:6"},{"attributes":{"assignments":[6925],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":6995,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6924,"name":"ElementaryTypeName","src":"2176:4:6"}],"id":6925,"name":"VariableDeclaration","src":"2176:6:6"}],"id":6926,"name":"VariableDeclarationStatement","src":"2176:6:6"},{"attributes":{"externalReferences":[{"a":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"2223:1:6","valueSize":1}},{"selfptr":{"declaration":6904,"isOffset":false,"isSlot":false,"src":"2234:7:6","valueSize":1}},{"b":{"declaration":6925,"isOffset":false,"isSlot":false,"src":"2259:1:6","valueSize":1}},{"otherptr":{"declaration":6907,"isOffset":false,"isSlot":false,"src":"2270:8:6","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":6927,"name":"InlineAssembly","src":"2196:97:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6922,"type":"uint256","value":"a"},"id":6928,"name":"Identifier","src":"2310:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6925,"type":"uint256","value":"b"},"id":6929,"name":"Identifier","src":"2315:1:6"}],"id":6930,"name":"BinaryOperation","src":"2310:6:6"},{"children":[{"attributes":{"assignments":[6932],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":6985,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6931,"name":"ElementaryTypeName","src":"2397:4:6"}],"id":6932,"name":"VariableDeclaration","src":"2397:9:6"}],"id":6933,"name":"VariableDeclarationStatement","src":"2397:9:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"uint256","value":"shortest"},"id":6934,"name":"Identifier","src":"2428:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6935,"name":"Literal","src":"2439:2:6"}],"id":6936,"name":"BinaryOperation","src":"2428:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6932,"type":"uint256","value":"mask"},"id":6937,"name":"Identifier","src":"2465:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":6938,"name":"ElementaryTypeNameExpression","src":"2472:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6939,"name":"Literal","src":"2482:1:6"}],"id":6940,"name":"UnaryOperation","src":"2480:3:6"}],"id":6941,"name":"FunctionCall","src":"2472:12:6"}],"id":6942,"name":"Assignment","src":"2465:19:6"}],"id":6943,"name":"ExpressionStatement","src":"2465:19:6"}],"id":6944,"name":"Block","src":"2443:80:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6932,"type":"uint256","value":"mask"},"id":6945,"name":"Identifier","src":"2551:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6946,"name":"Literal","src":"2560:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6947,"name":"Literal","src":"2566:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6948,"name":"Literal","src":"2571:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"uint256","value":"shortest"},"id":6949,"name":"Identifier","src":"2576:8:6"}],"id":6950,"name":"BinaryOperation","src":"2571:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6911,"type":"uint256","value":"idx"},"id":6951,"name":"Identifier","src":"2587:3:6"}],"id":6952,"name":"BinaryOperation","src":"2571:19:6"}],"id":6953,"name":"TupleExpression","src":"2570:21:6"}],"id":6954,"name":"BinaryOperation","src":"2566:25:6"}],"id":6955,"name":"TupleExpression","src":"2565:27:6"}],"id":6956,"name":"BinaryOperation","src":"2560:32:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6957,"name":"Literal","src":"2595:1:6"}],"id":6958,"name":"BinaryOperation","src":"2560:36:6"}],"id":6959,"name":"TupleExpression","src":"2559:38:6"}],"id":6960,"name":"UnaryOperation","src":"2558:39:6"}],"id":6961,"name":"Assignment","src":"2551:46:6"}],"id":6962,"name":"ExpressionStatement","src":"2551:46:6"}],"id":6963,"name":"Block","src":"2529:87:6"}],"id":6964,"name":"IfStatement","src":"2424:192:6"},{"attributes":{"assignments":[6966]},"children":[{"attributes":{"constant":false,"name":"diff","scope":6985,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6965,"name":"ElementaryTypeName","src":"2633:4:6"}],"id":6966,"name":"VariableDeclaration","src":"2633:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6922,"type":"uint256","value":"a"},"id":6967,"name":"Identifier","src":"2646:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6932,"type":"uint256","value":"mask"},"id":6968,"name":"Identifier","src":"2650:4:6"}],"id":6969,"name":"BinaryOperation","src":"2646:8:6"}],"id":6970,"name":"TupleExpression","src":"2645:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6925,"type":"uint256","value":"b"},"id":6971,"name":"Identifier","src":"2659:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6932,"type":"uint256","value":"mask"},"id":6972,"name":"Identifier","src":"2663:4:6"}],"id":6973,"name":"BinaryOperation","src":"2659:8:6"}],"id":6974,"name":"TupleExpression","src":"2658:10:6"}],"id":6975,"name":"BinaryOperation","src":"2645:23:6"}],"id":6976,"name":"VariableDeclarationStatement","src":"2633:35:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6966,"type":"uint256","value":"diff"},"id":6977,"name":"Identifier","src":"2690:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6978,"name":"Literal","src":"2698:1:6"}],"id":6979,"name":"BinaryOperation","src":"2690:9:6"},{"attributes":{"functionReturnParameters":6890},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6980,"name":"ElementaryTypeNameExpression","src":"2724:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6966,"type":"uint256","value":"diff"},"id":6981,"name":"Identifier","src":"2728:4:6"}],"id":6982,"name":"FunctionCall","src":"2724:9:6"}],"id":6983,"name":"Return","src":"2717:16:6"}],"id":6984,"name":"IfStatement","src":"2686:47:6"}],"id":6985,"name":"Block","src":"2318:430:6"}],"id":6986,"name":"IfStatement","src":"2306:442:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6904,"type":"uint256","value":"selfptr"},"id":6987,"name":"Identifier","src":"2761:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6988,"name":"Literal","src":"2772:2:6"}],"id":6989,"name":"Assignment","src":"2761:13:6"}],"id":6990,"name":"ExpressionStatement","src":"2761:13:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6907,"type":"uint256","value":"otherptr"},"id":6991,"name":"Identifier","src":"2788:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6992,"name":"Literal","src":"2800:2:6"}],"id":6993,"name":"Assignment","src":"2788:14:6"}],"id":6994,"name":"ExpressionStatement","src":"2788:14:6"}],"id":6995,"name":"Block","src":"2142:671:6"}],"id":6996,"name":"ForStatement","src":"2096:717:6"},{"attributes":{"functionReturnParameters":6890},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6997,"name":"ElementaryTypeNameExpression","src":"2830:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6880,"type":"uint256","value":"len"},"id":6998,"name":"Identifier","src":"2834:3:6"}],"id":6999,"name":"FunctionCall","src":"2830:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7000,"name":"ElementaryTypeNameExpression","src":"2841:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6886,"type":"uint256","value":"otherlen"},"id":7001,"name":"Identifier","src":"2845:8:6"}],"id":7002,"name":"FunctionCall","src":"2841:13:6"}],"id":7003,"name":"BinaryOperation","src":"2830:24:6"}],"id":7004,"name":"Return","src":"2823:31:6"}],"id":7005,"name":"Block","src":"1817:1044:6"}],"id":7006,"name":"FunctionDefinition","src":"1677:1184:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7034,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7007,"name":"ElementaryTypeName","src":"3295:5:6"}],"id":7008,"name":"VariableDeclaration","src":"3295:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7034,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7009,"name":"ElementaryTypeName","src":"3314:4:6"}],"id":7010,"name":"VariableDeclaration","src":"3314:11:6"},{"attributes":{"constant":false,"name":"other","scope":7034,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7011,"name":"ElementaryTypeName","src":"3327:5:6"}],"id":7012,"name":"VariableDeclaration","src":"3327:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":7034,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7013,"name":"ElementaryTypeName","src":"3347:4:6"}],"id":7014,"name":"VariableDeclaration","src":"3347:16:6"},{"attributes":{"constant":false,"name":"len","scope":7034,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7015,"name":"ElementaryTypeName","src":"3365:4:6"}],"id":7016,"name":"VariableDeclaration","src":"3365:8:6"}],"id":7017,"name":"ParameterList","src":"3294:80:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7034,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7018,"name":"ElementaryTypeName","src":"3398:4:6"}],"id":7019,"name":"VariableDeclaration","src":"3398:4:6"}],"id":7020,"name":"ParameterList","src":"3397:6:6"},{"children":[{"attributes":{"functionReturnParameters":7020},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":7021,"name":"Identifier","src":"3421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7008,"type":"bytes memory","value":"self"},"id":7022,"name":"Identifier","src":"3428:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"offset"},"id":7023,"name":"Identifier","src":"3434:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7016,"type":"uint256","value":"len"},"id":7024,"name":"Identifier","src":"3442:3:6"}],"id":7025,"name":"FunctionCall","src":"3421:25:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":7026,"name":"Identifier","src":"3450:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7012,"type":"bytes memory","value":"other"},"id":7027,"name":"Identifier","src":"3457:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7014,"type":"uint256","value":"otherOffset"},"id":7028,"name":"Identifier","src":"3464:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7016,"type":"uint256","value":"len"},"id":7029,"name":"Identifier","src":"3477:3:6"}],"id":7030,"name":"FunctionCall","src":"3450:31:6"}],"id":7031,"name":"BinaryOperation","src":"3421:60:6"}],"id":7032,"name":"Return","src":"3414:67:6"}],"id":7033,"name":"Block","src":"3404:84:6"}],"id":7034,"name":"FunctionDefinition","src":"3279:209:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7066,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7035,"name":"ElementaryTypeName","src":"3887:5:6"}],"id":7036,"name":"VariableDeclaration","src":"3887:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7037,"name":"ElementaryTypeName","src":"3906:4:6"}],"id":7038,"name":"VariableDeclaration","src":"3906:11:6"},{"attributes":{"constant":false,"name":"other","scope":7066,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7039,"name":"ElementaryTypeName","src":"3919:5:6"}],"id":7040,"name":"VariableDeclaration","src":"3919:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":7066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7041,"name":"ElementaryTypeName","src":"3939:4:6"}],"id":7042,"name":"VariableDeclaration","src":"3939:16:6"}],"id":7043,"name":"ParameterList","src":"3886:70:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7066,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7044,"name":"ElementaryTypeName","src":"3980:4:6"}],"id":7045,"name":"VariableDeclaration","src":"3980:4:6"}],"id":7046,"name":"ParameterList","src":"3979:6:6"},{"children":[{"attributes":{"functionReturnParameters":7046},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":7047,"name":"Identifier","src":"4003:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7036,"type":"bytes memory","value":"self"},"id":7048,"name":"Identifier","src":"4010:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7038,"type":"uint256","value":"offset"},"id":7049,"name":"Identifier","src":"4016:6:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7036,"type":"bytes memory","value":"self"},"id":7050,"name":"Identifier","src":"4024:4:6"}],"id":7051,"name":"MemberAccess","src":"4024:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7038,"type":"uint256","value":"offset"},"id":7052,"name":"Identifier","src":"4038:6:6"}],"id":7053,"name":"BinaryOperation","src":"4024:20:6"}],"id":7054,"name":"FunctionCall","src":"4003:42:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":7055,"name":"Identifier","src":"4049:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7040,"type":"bytes memory","value":"other"},"id":7056,"name":"Identifier","src":"4056:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7042,"type":"uint256","value":"otherOffset"},"id":7057,"name":"Identifier","src":"4063:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7040,"type":"bytes memory","value":"other"},"id":7058,"name":"Identifier","src":"4076:5:6"}],"id":7059,"name":"MemberAccess","src":"4076:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7042,"type":"uint256","value":"otherOffset"},"id":7060,"name":"Identifier","src":"4091:11:6"}],"id":7061,"name":"BinaryOperation","src":"4076:26:6"}],"id":7062,"name":"FunctionCall","src":"4049:54:6"}],"id":7063,"name":"BinaryOperation","src":"4003:100:6"}],"id":7064,"name":"Return","src":"3996:107:6"}],"id":7065,"name":"Block","src":"3986:124:6"}],"id":7066,"name":"FunctionDefinition","src":"3871:239:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7095,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7067,"name":"ElementaryTypeName","src":"4478:5:6"}],"id":7068,"name":"VariableDeclaration","src":"4478:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7095,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7069,"name":"ElementaryTypeName","src":"4497:4:6"}],"id":7070,"name":"VariableDeclaration","src":"4497:11:6"},{"attributes":{"constant":false,"name":"other","scope":7095,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7071,"name":"ElementaryTypeName","src":"4510:5:6"}],"id":7072,"name":"VariableDeclaration","src":"4510:18:6"}],"id":7073,"name":"ParameterList","src":"4477:52:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7095,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7074,"name":"ElementaryTypeName","src":"4553:4:6"}],"id":7075,"name":"VariableDeclaration","src":"4553:4:6"}],"id":7076,"name":"ParameterList","src":"4552:6:6"},{"children":[{"attributes":{"functionReturnParameters":7076},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7068,"type":"bytes memory","value":"self"},"id":7077,"name":"Identifier","src":"4576:4:6"}],"id":7078,"name":"MemberAccess","src":"4576:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7070,"type":"uint256","value":"offset"},"id":7079,"name":"Identifier","src":"4591:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7072,"type":"bytes memory","value":"other"},"id":7080,"name":"Identifier","src":"4600:5:6"}],"id":7081,"name":"MemberAccess","src":"4600:12:6"}],"id":7082,"name":"BinaryOperation","src":"4591:21:6"}],"id":7083,"name":"BinaryOperation","src":"4576:36:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[7034,7066,7095,7120],"referencedDeclaration":7034,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":7084,"name":"Identifier","src":"4616:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7068,"type":"bytes memory","value":"self"},"id":7085,"name":"Identifier","src":"4623:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7070,"type":"uint256","value":"offset"},"id":7086,"name":"Identifier","src":"4629:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7072,"type":"bytes memory","value":"other"},"id":7087,"name":"Identifier","src":"4637:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7088,"name":"Literal","src":"4644:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7072,"type":"bytes memory","value":"other"},"id":7089,"name":"Identifier","src":"4647:5:6"}],"id":7090,"name":"MemberAccess","src":"4647:12:6"}],"id":7091,"name":"FunctionCall","src":"4616:44:6"}],"id":7092,"name":"BinaryOperation","src":"4576:84:6"}],"id":7093,"name":"Return","src":"4569:91:6"}],"id":7094,"name":"Block","src":"4559:108:6"}],"id":7095,"name":"FunctionDefinition","src":"4462:205:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7120,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7096,"name":"ElementaryTypeName","src":"4931:5:6"}],"id":7097,"name":"VariableDeclaration","src":"4931:17:6"},{"attributes":{"constant":false,"name":"other","scope":7120,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7098,"name":"ElementaryTypeName","src":"4950:5:6"}],"id":7099,"name":"VariableDeclaration","src":"4950:18:6"}],"id":7100,"name":"ParameterList","src":"4930:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7120,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7101,"name":"ElementaryTypeName","src":"4992:4:6"}],"id":7102,"name":"VariableDeclaration","src":"4992:4:6"}],"id":7103,"name":"ParameterList","src":"4991:6:6"},{"children":[{"attributes":{"functionReturnParameters":7103},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7097,"type":"bytes memory","value":"self"},"id":7104,"name":"Identifier","src":"5015:4:6"}],"id":7105,"name":"MemberAccess","src":"5015:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7099,"type":"bytes memory","value":"other"},"id":7106,"name":"Identifier","src":"5030:5:6"}],"id":7107,"name":"MemberAccess","src":"5030:12:6"}],"id":7108,"name":"BinaryOperation","src":"5015:27:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[7034,7066,7095,7120],"referencedDeclaration":7034,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":7109,"name":"Identifier","src":"5046:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7097,"type":"bytes memory","value":"self"},"id":7110,"name":"Identifier","src":"5053:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7111,"name":"Literal","src":"5059:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7099,"type":"bytes memory","value":"other"},"id":7112,"name":"Identifier","src":"5062:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7113,"name":"Literal","src":"5069:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7097,"type":"bytes memory","value":"self"},"id":7114,"name":"Identifier","src":"5072:4:6"}],"id":7115,"name":"MemberAccess","src":"5072:11:6"}],"id":7116,"name":"FunctionCall","src":"5046:38:6"}],"id":7117,"name":"BinaryOperation","src":"5015:69:6"}],"id":7118,"name":"Return","src":"5008:76:6"}],"id":7119,"name":"Block","src":"4998:93:6"}],"id":7120,"name":"FunctionDefinition","src":"4915:176:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7136,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7121,"name":"ElementaryTypeName","src":"5352:5:6"}],"id":7122,"name":"VariableDeclaration","src":"5352:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7123,"name":"ElementaryTypeName","src":"5371:4:6"}],"id":7124,"name":"VariableDeclaration","src":"5371:8:6"}],"id":7125,"name":"ParameterList","src":"5351:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7136,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7126,"name":"ElementaryTypeName","src":"5404:5:6"}],"id":7127,"name":"VariableDeclaration","src":"5404:9:6"}],"id":7128,"name":"ParameterList","src":"5403:11:6"},{"children":[{"attributes":{"functionReturnParameters":7128},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7129,"name":"ElementaryTypeNameExpression","src":"5432:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7122,"type":"bytes memory","value":"self"},"id":7130,"name":"Identifier","src":"5438:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7124,"type":"uint256","value":"idx"},"id":7131,"name":"Identifier","src":"5443:3:6"}],"id":7132,"name":"IndexAccess","src":"5438:9:6"}],"id":7133,"name":"FunctionCall","src":"5432:16:6"}],"id":7134,"name":"Return","src":"5425:23:6"}],"id":7135,"name":"Block","src":"5415:40:6"}],"id":7136,"name":"FunctionDefinition","src":"5333:122:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7156,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7137,"name":"ElementaryTypeName","src":"5719:5:6"}],"id":7138,"name":"VariableDeclaration","src":"5719:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7156,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7139,"name":"ElementaryTypeName","src":"5738:4:6"}],"id":7140,"name":"VariableDeclaration","src":"5738:8:6"}],"id":7141,"name":"ParameterList","src":"5718:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7156,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":7142,"name":"ElementaryTypeName","src":"5771:6:6"}],"id":7143,"name":"VariableDeclaration","src":"5771:10:6"}],"id":7144,"name":"ParameterList","src":"5770:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7145,"name":"Identifier","src":"5793:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7140,"type":"uint256","value":"idx"},"id":7146,"name":"Identifier","src":"5801:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7147,"name":"Literal","src":"5807:1:6"}],"id":7148,"name":"BinaryOperation","src":"5801:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7138,"type":"bytes memory","value":"self"},"id":7149,"name":"Identifier","src":"5812:4:6"}],"id":7150,"name":"MemberAccess","src":"5812:11:6"}],"id":7151,"name":"BinaryOperation","src":"5801:22:6"}],"id":7152,"name":"FunctionCall","src":"5793:31:6"}],"id":7153,"name":"ExpressionStatement","src":"5793:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":7143,"isOffset":false,"isSlot":false,"src":"5857:3:6","valueSize":1}},{"self":{"declaration":7138,"isOffset":false,"isSlot":false,"src":"5882:4:6","valueSize":1}},{"idx":{"declaration":7140,"isOffset":false,"isSlot":false,"src":"5892:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":7154,"name":"InlineAssembly","src":"5834:82:6"}],"id":7155,"name":"Block","src":"5783:139:6"}],"id":7156,"name":"FunctionDefinition","src":"5699:223:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7176,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7157,"name":"ElementaryTypeName","src":"6186:5:6"}],"id":7158,"name":"VariableDeclaration","src":"6186:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7176,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7159,"name":"ElementaryTypeName","src":"6205:4:6"}],"id":7160,"name":"VariableDeclaration","src":"6205:8:6"}],"id":7161,"name":"ParameterList","src":"6185:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7176,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":7162,"name":"ElementaryTypeName","src":"6238:6:6"}],"id":7163,"name":"VariableDeclaration","src":"6238:10:6"}],"id":7164,"name":"ParameterList","src":"6237:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7165,"name":"Identifier","src":"6260:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7160,"type":"uint256","value":"idx"},"id":7166,"name":"Identifier","src":"6268:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7167,"name":"Literal","src":"6274:1:6"}],"id":7168,"name":"BinaryOperation","src":"6268:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7158,"type":"bytes memory","value":"self"},"id":7169,"name":"Identifier","src":"6279:4:6"}],"id":7170,"name":"MemberAccess","src":"6279:11:6"}],"id":7171,"name":"BinaryOperation","src":"6268:22:6"}],"id":7172,"name":"FunctionCall","src":"6260:31:6"}],"id":7173,"name":"ExpressionStatement","src":"6260:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":7163,"isOffset":false,"isSlot":false,"src":"6324:3:6","valueSize":1}},{"self":{"declaration":7158,"isOffset":false,"isSlot":false,"src":"6349:4:6","valueSize":1}},{"idx":{"declaration":7160,"isOffset":false,"isSlot":false,"src":"6359:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":7174,"name":"InlineAssembly","src":"6301:86:6"}],"id":7175,"name":"Block","src":"6250:143:6"}],"id":7176,"name":"FunctionDefinition","src":"6166:227:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7196,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7177,"name":"ElementaryTypeName","src":"6632:5:6"}],"id":7178,"name":"VariableDeclaration","src":"6632:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7196,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7179,"name":"ElementaryTypeName","src":"6651:4:6"}],"id":7180,"name":"VariableDeclaration","src":"6651:8:6"}],"id":7181,"name":"ParameterList","src":"6631:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7182,"name":"ElementaryTypeName","src":"6684:7:6"}],"id":7183,"name":"VariableDeclaration","src":"6684:11:6"}],"id":7184,"name":"ParameterList","src":"6683:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7185,"name":"Identifier","src":"6707:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7180,"type":"uint256","value":"idx"},"id":7186,"name":"Identifier","src":"6715:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7187,"name":"Literal","src":"6721:2:6"}],"id":7188,"name":"BinaryOperation","src":"6715:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7178,"type":"bytes memory","value":"self"},"id":7189,"name":"Identifier","src":"6727:4:6"}],"id":7190,"name":"MemberAccess","src":"6727:11:6"}],"id":7191,"name":"BinaryOperation","src":"6715:23:6"}],"id":7192,"name":"FunctionCall","src":"6707:32:6"}],"id":7193,"name":"ExpressionStatement","src":"6707:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":7183,"isOffset":false,"isSlot":false,"src":"6772:3:6","valueSize":1}},{"self":{"declaration":7178,"isOffset":false,"isSlot":false,"src":"6793:4:6","valueSize":1}},{"idx":{"declaration":7180,"isOffset":false,"isSlot":false,"src":"6804:3:6","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":7194,"name":"InlineAssembly","src":"6749:70:6"}],"id":7195,"name":"Block","src":"6697:128:6"}],"id":7196,"name":"FunctionDefinition","src":"6611:214:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7216,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7197,"name":"ElementaryTypeName","src":"7064:5:6"}],"id":7198,"name":"VariableDeclaration","src":"7064:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7199,"name":"ElementaryTypeName","src":"7083:4:6"}],"id":7200,"name":"VariableDeclaration","src":"7083:8:6"}],"id":7201,"name":"ParameterList","src":"7063:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7216,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":7202,"name":"ElementaryTypeName","src":"7116:7:6"}],"id":7203,"name":"VariableDeclaration","src":"7116:11:6"}],"id":7204,"name":"ParameterList","src":"7115:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7205,"name":"Identifier","src":"7139:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint256","value":"idx"},"id":7206,"name":"Identifier","src":"7147:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":7207,"name":"Literal","src":"7153:2:6"}],"id":7208,"name":"BinaryOperation","src":"7147:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7198,"type":"bytes memory","value":"self"},"id":7209,"name":"Identifier","src":"7159:4:6"}],"id":7210,"name":"MemberAccess","src":"7159:11:6"}],"id":7211,"name":"BinaryOperation","src":"7147:23:6"}],"id":7212,"name":"FunctionCall","src":"7139:32:6"}],"id":7213,"name":"ExpressionStatement","src":"7139:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":7203,"isOffset":false,"isSlot":false,"src":"7204:3:6","valueSize":1}},{"self":{"declaration":7198,"isOffset":false,"isSlot":false,"src":"7229:4:6","valueSize":1}},{"idx":{"declaration":7200,"isOffset":false,"isSlot":false,"src":"7240:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":7214,"name":"InlineAssembly","src":"7181:143:6"}],"id":7215,"name":"Block","src":"7129:201:6"}],"id":7216,"name":"FunctionDefinition","src":"7043:287:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7244,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7217,"name":"ElementaryTypeName","src":"7606:5:6"}],"id":7218,"name":"VariableDeclaration","src":"7606:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7219,"name":"ElementaryTypeName","src":"7625:4:6"}],"id":7220,"name":"VariableDeclaration","src":"7625:8:6"},{"attributes":{"constant":false,"name":"len","scope":7244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7221,"name":"ElementaryTypeName","src":"7635:4:6"}],"id":7222,"name":"VariableDeclaration","src":"7635:8:6"}],"id":7223,"name":"ParameterList","src":"7605:39:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7244,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7224,"name":"ElementaryTypeName","src":"7668:7:6"}],"id":7225,"name":"VariableDeclaration","src":"7668:11:6"}],"id":7226,"name":"ParameterList","src":"7667:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7227,"name":"Identifier","src":"7691:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7222,"type":"uint256","value":"len"},"id":7228,"name":"Identifier","src":"7699:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7229,"name":"Literal","src":"7706:2:6"}],"id":7230,"name":"BinaryOperation","src":"7699:9:6"}],"id":7231,"name":"FunctionCall","src":"7691:18:6"}],"id":7232,"name":"ExpressionStatement","src":"7691:18:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7233,"name":"Identifier","src":"7719:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7220,"type":"uint256","value":"idx"},"id":7234,"name":"Identifier","src":"7727:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7222,"type":"uint256","value":"len"},"id":7235,"name":"Identifier","src":"7733:3:6"}],"id":7236,"name":"BinaryOperation","src":"7727:9:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7218,"type":"bytes memory","value":"self"},"id":7237,"name":"Identifier","src":"7740:4:6"}],"id":7238,"name":"MemberAccess","src":"7740:11:6"}],"id":7239,"name":"BinaryOperation","src":"7727:24:6"}],"id":7240,"name":"FunctionCall","src":"7719:33:6"}],"id":7241,"name":"ExpressionStatement","src":"7719:33:6"},{"attributes":{"externalReferences":[{"len":{"declaration":7222,"isOffset":false,"isSlot":false,"src":"7822:3:6","valueSize":1}},{"ret":{"declaration":7225,"isOffset":false,"isSlot":false,"src":"7845:3:6","valueSize":1}},{"self":{"declaration":7218,"isOffset":false,"isSlot":false,"src":"7870:4:6","valueSize":1}},{"idx":{"declaration":7220,"isOffset":false,"isSlot":false,"src":"7881:3:6","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":7242,"name":"InlineAssembly","src":"7762:142:6"}],"id":7243,"name":"Block","src":"7681:229:6"}],"id":7244,"name":"FunctionDefinition","src":"7586:324:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":7284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7245,"name":"ElementaryTypeName","src":"7932:4:6"}],"id":7246,"name":"VariableDeclaration","src":"7932:9:6"},{"attributes":{"constant":false,"name":"src","scope":7284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7247,"name":"ElementaryTypeName","src":"7943:4:6"}],"id":7248,"name":"VariableDeclaration","src":"7943:8:6"},{"attributes":{"constant":false,"name":"len","scope":7284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7249,"name":"ElementaryTypeName","src":"7953:4:6"}],"id":7250,"name":"VariableDeclaration","src":"7953:8:6"}],"id":7251,"name":"ParameterList","src":"7931:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":7252,"name":"ParameterList","src":"7976:0:6"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7250,"type":"uint256","value":"len"},"id":7253,"name":"Identifier","src":"8043:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7254,"name":"Literal","src":"8050:2:6"}],"id":7255,"name":"BinaryOperation","src":"8043:9:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7250,"type":"uint256","value":"len"},"id":7256,"name":"Identifier","src":"8054:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7257,"name":"Literal","src":"8061:2:6"}],"id":7258,"name":"Assignment","src":"8054:9:6"}],"id":7259,"name":"ExpressionStatement","src":"8054:9:6"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":7248,"isOffset":false,"isSlot":false,"src":"8125:3:6","valueSize":1}},{"dest":{"declaration":7246,"isOffset":false,"isSlot":false,"src":"8113:4:6","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":7260,"name":"InlineAssembly","src":"8079:65:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7246,"type":"uint256","value":"dest"},"id":7261,"name":"Identifier","src":"8157:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7262,"name":"Literal","src":"8165:2:6"}],"id":7263,"name":"Assignment","src":"8157:10:6"}],"id":7264,"name":"ExpressionStatement","src":"8157:10:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7248,"type":"uint256","value":"src"},"id":7265,"name":"Identifier","src":"8181:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7266,"name":"Literal","src":"8188:2:6"}],"id":7267,"name":"Assignment","src":"8181:9:6"}],"id":7268,"name":"ExpressionStatement","src":"8181:9:6"}],"id":7269,"name":"Block","src":"8065:136:6"}],"id":7270,"name":"ForStatement","src":"8036:165:6"},{"attributes":{"assignments":[7272]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7271,"name":"ElementaryTypeName","src":"8243:4:6"}],"id":7272,"name":"VariableDeclaration","src":"8243:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7273,"name":"Literal","src":"8255:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7274,"name":"Literal","src":"8263:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7250,"type":"uint256","value":"len"},"id":7275,"name":"Identifier","src":"8268:3:6"}],"id":7276,"name":"BinaryOperation","src":"8263:8:6"}],"id":7277,"name":"TupleExpression","src":"8262:10:6"}],"id":7278,"name":"BinaryOperation","src":"8255:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7279,"name":"Literal","src":"8275:1:6"}],"id":7280,"name":"BinaryOperation","src":"8255:21:6"}],"id":7281,"name":"VariableDeclarationStatement","src":"8243:33:6"},{"attributes":{"externalReferences":[{"src":{"declaration":7248,"isOffset":false,"isSlot":false,"src":"8334:3:6","valueSize":1}},{"mask":{"declaration":7272,"isOffset":false,"isSlot":false,"src":"8344:4:6","valueSize":1}},{"dest":{"declaration":7246,"isOffset":false,"isSlot":false,"src":"8421:4:6","valueSize":1}},{"dest":{"declaration":7246,"isOffset":false,"isSlot":false,"src":"8389:4:6","valueSize":1}},{"mask":{"declaration":7272,"isOffset":false,"isSlot":false,"src":"8396:4:6","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":7282,"name":"InlineAssembly","src":"8286:173:6"}],"id":7283,"name":"Block","src":"7976:489:6"}],"id":7284,"name":"FunctionDefinition","src":"7916:549:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7327,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7285,"name":"ElementaryTypeName","src":"8704:5:6"}],"id":7286,"name":"VariableDeclaration","src":"8704:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7287,"name":"ElementaryTypeName","src":"8723:4:6"}],"id":7288,"name":"VariableDeclaration","src":"8723:11:6"},{"attributes":{"constant":false,"name":"len","scope":7327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7289,"name":"ElementaryTypeName","src":"8736:4:6"}],"id":7290,"name":"VariableDeclaration","src":"8736:8:6"}],"id":7291,"name":"ParameterList","src":"8703:42:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7327,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7292,"name":"ElementaryTypeName","src":"8768:5:6"}],"id":7293,"name":"VariableDeclaration","src":"8768:12:6"}],"id":7294,"name":"ParameterList","src":"8767:14:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7295,"name":"Identifier","src":"8792:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7288,"type":"uint256","value":"offset"},"id":7296,"name":"Identifier","src":"8800:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7290,"type":"uint256","value":"len"},"id":7297,"name":"Identifier","src":"8809:3:6"}],"id":7298,"name":"BinaryOperation","src":"8800:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7286,"type":"bytes memory","value":"self"},"id":7299,"name":"Identifier","src":"8816:4:6"}],"id":7300,"name":"MemberAccess","src":"8816:11:6"}],"id":7301,"name":"BinaryOperation","src":"8800:27:6"}],"id":7302,"name":"FunctionCall","src":"8792:36:6"}],"id":7303,"name":"ExpressionStatement","src":"8792:36:6"},{"attributes":{"assignments":[7305]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7326,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7304,"name":"ElementaryTypeName","src":"8839:5:6"}],"id":7305,"name":"VariableDeclaration","src":"8839:16:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7306,"name":"ElementaryTypeName","src":"8862:5:6"}],"id":7307,"name":"NewExpression","src":"8858:9:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7290,"type":"uint256","value":"len"},"id":7308,"name":"Identifier","src":"8868:3:6"}],"id":7309,"name":"FunctionCall","src":"8858:14:6"}],"id":7310,"name":"VariableDeclarationStatement","src":"8839:33:6"},{"attributes":{"assignments":[7312],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":7326,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7311,"name":"ElementaryTypeName","src":"8882:4:6"}],"id":7312,"name":"VariableDeclaration","src":"8882:9:6"}],"id":7313,"name":"VariableDeclarationStatement","src":"8882:9:6"},{"attributes":{"assignments":[7315],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":7326,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7314,"name":"ElementaryTypeName","src":"8901:4:6"}],"id":7315,"name":"VariableDeclaration","src":"8901:8:6"}],"id":7316,"name":"VariableDeclarationStatement","src":"8901:8:6"},{"attributes":{"externalReferences":[{"dest":{"declaration":7312,"isOffset":false,"isSlot":false,"src":"8943:4:6","valueSize":1}},{"ret":{"declaration":7305,"isOffset":false,"isSlot":false,"src":"8955:3:6","valueSize":1}},{"src":{"declaration":7315,"isOffset":false,"isSlot":false,"src":"8976:3:6","valueSize":1}},{"self":{"declaration":7286,"isOffset":false,"isSlot":false,"src":"8991:4:6","valueSize":1}},{"offset":{"declaration":7288,"isOffset":false,"isSlot":false,"src":"9002:6:6","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":7317,"name":"InlineAssembly","src":"8920:99:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7284,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7318,"name":"Identifier","src":"9028:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7312,"type":"uint256","value":"dest"},"id":7319,"name":"Identifier","src":"9035:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7315,"type":"uint256","value":"src"},"id":7320,"name":"Identifier","src":"9041:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7290,"type":"uint256","value":"len"},"id":7321,"name":"Identifier","src":"9046:3:6"}],"id":7322,"name":"FunctionCall","src":"9028:22:6"}],"id":7323,"name":"ExpressionStatement","src":"9028:22:6"},{"attributes":{"functionReturnParameters":7294},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"ret"},"id":7324,"name":"Identifier","src":"9068:3:6"}],"id":7325,"name":"Return","src":"9061:10:6"}],"id":7326,"name":"Block","src":"8782:296:6"}],"id":7327,"name":"FunctionDefinition","src":"8685:393:6"},{"attributes":{"constant":true,"name":"base32HexTable","scope":7550,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7328,"name":"ElementaryTypeName","src":"9206:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":7329,"name":"Literal","src":"9238:147:6"}],"id":7330,"name":"VariableDeclaration","src":"9206:179:6"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7549,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7331,"name":"ElementaryTypeName","src":"9697:5:6"}],"id":7332,"name":"VariableDeclaration","src":"9697:17:6"},{"attributes":{"constant":false,"name":"off","scope":7549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7333,"name":"ElementaryTypeName","src":"9716:4:6"}],"id":7334,"name":"VariableDeclaration","src":"9716:8:6"},{"attributes":{"constant":false,"name":"len","scope":7549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7335,"name":"ElementaryTypeName","src":"9726:4:6"}],"id":7336,"name":"VariableDeclaration","src":"9726:8:6"}],"id":7337,"name":"ParameterList","src":"9696:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7549,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7338,"name":"ElementaryTypeName","src":"9758:7:6"}],"id":7339,"name":"VariableDeclaration","src":"9758:7:6"}],"id":7340,"name":"ParameterList","src":"9757:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7341,"name":"Identifier","src":"9777:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7342,"name":"Identifier","src":"9785:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":7343,"name":"Literal","src":"9792:2:6"}],"id":7344,"name":"BinaryOperation","src":"9785:9:6"}],"id":7345,"name":"FunctionCall","src":"9777:18:6"}],"id":7346,"name":"ExpressionStatement","src":"9777:18:6"},{"attributes":{"assignments":[7348]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7548,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7347,"name":"ElementaryTypeName","src":"9806:4:6"}],"id":7348,"name":"VariableDeclaration","src":"9806:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7349,"name":"Literal","src":"9817:1:6"}],"id":7350,"name":"VariableDeclarationStatement","src":"9806:12:6"},{"attributes":{"assignments":[7352],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":7548,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7351,"name":"ElementaryTypeName","src":"9828:5:6"}],"id":7352,"name":"VariableDeclaration","src":"9828:13:6"}],"id":7353,"name":"VariableDeclarationStatement","src":"9828:13:6"},{"children":[{"attributes":{"assignments":[7355]},"children":[{"attributes":{"constant":false,"name":"i","scope":7420,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7354,"name":"ElementaryTypeName","src":"9855:4:6"}],"id":7355,"name":"VariableDeclaration","src":"9855:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7356,"name":"Literal","src":"9864:1:6"}],"id":7357,"name":"VariableDeclarationStatement","src":"9855:10:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7355,"type":"uint256","value":"i"},"id":7358,"name":"Identifier","src":"9867:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7359,"name":"Identifier","src":"9871:3:6"}],"id":7360,"name":"BinaryOperation","src":"9867:7:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7355,"type":"uint256","value":"i"},"id":7361,"name":"Identifier","src":"9876:1:6"}],"id":7362,"name":"UnaryOperation","src":"9876:3:6"}],"id":7363,"name":"ExpressionStatement","src":"9876:3:6"},{"children":[{"attributes":{"assignments":[7365]},"children":[{"attributes":{"constant":false,"name":"char","scope":7419,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":7364,"name":"ElementaryTypeName","src":"9895:6:6"}],"id":7365,"name":"VariableDeclaration","src":"9895:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7332,"type":"bytes memory","value":"self"},"id":7366,"name":"Identifier","src":"9909:4:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7334,"type":"uint256","value":"off"},"id":7367,"name":"Identifier","src":"9914:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7355,"type":"uint256","value":"i"},"id":7368,"name":"Identifier","src":"9920:1:6"}],"id":7369,"name":"BinaryOperation","src":"9914:7:6"}],"id":7370,"name":"IndexAccess","src":"9909:13:6"}],"id":7371,"name":"VariableDeclarationStatement","src":"9895:27:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7372,"name":"Identifier","src":"9936:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"bytes1","value":"char"},"id":7373,"name":"Identifier","src":"9944:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":7374,"name":"Literal","src":"9952:4:6"}],"id":7375,"name":"BinaryOperation","src":"9944:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"bytes1","value":"char"},"id":7376,"name":"Identifier","src":"9960:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":7377,"name":"Literal","src":"9968:4:6"}],"id":7378,"name":"BinaryOperation","src":"9960:12:6"}],"id":7379,"name":"BinaryOperation","src":"9944:28:6"}],"id":7380,"name":"FunctionCall","src":"9936:37:6"}],"id":7381,"name":"ExpressionStatement","src":"9936:37:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7382,"name":"Identifier","src":"9987:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7383,"name":"ElementaryTypeNameExpression","src":"9997:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7330,"type":"bytes memory","value":"base32HexTable"},"id":7384,"name":"Identifier","src":"10003:14:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7385,"name":"ElementaryTypeNameExpression","src":"10018:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7386,"name":"ElementaryTypeNameExpression","src":"10023:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"bytes1","value":"char"},"id":7387,"name":"Identifier","src":"10029:4:6"}],"id":7388,"name":"FunctionCall","src":"10023:11:6"}],"id":7389,"name":"FunctionCall","src":"10018:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":7390,"name":"Literal","src":"10038:4:6"}],"id":7391,"name":"BinaryOperation","src":"10018:24:6"}],"id":7392,"name":"IndexAccess","src":"10003:40:6"}],"id":7393,"name":"FunctionCall","src":"9997:47:6"}],"id":7394,"name":"Assignment","src":"9987:57:6"}],"id":7395,"name":"ExpressionStatement","src":"9987:57:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7396,"name":"Identifier","src":"10058:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7397,"name":"Identifier","src":"10066:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":7398,"name":"Literal","src":"10077:4:6"}],"id":7399,"name":"BinaryOperation","src":"10066:15:6"}],"id":7400,"name":"FunctionCall","src":"10058:24:6"}],"id":7401,"name":"ExpressionStatement","src":"10058:24:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7355,"type":"uint256","value":"i"},"id":7402,"name":"Identifier","src":"10099:1:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7403,"name":"Identifier","src":"10104:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7404,"name":"Literal","src":"10110:1:6"}],"id":7405,"name":"BinaryOperation","src":"10104:7:6"}],"id":7406,"name":"BinaryOperation","src":"10099:12:6"},{"children":[{"id":7407,"name":"Break","src":"10131:5:6"}],"id":7408,"name":"Block","src":"10113:38:6"}],"id":7409,"name":"IfStatement","src":"10096:55:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7410,"name":"Identifier","src":"10164:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7411,"name":"Identifier","src":"10171:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7412,"name":"Literal","src":"10178:1:6"}],"id":7413,"name":"BinaryOperation","src":"10171:8:6"}],"id":7414,"name":"TupleExpression","src":"10170:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7415,"name":"Identifier","src":"10183:7:6"}],"id":7416,"name":"BinaryOperation","src":"10170:20:6"}],"id":7417,"name":"Assignment","src":"10164:26:6"}],"id":7418,"name":"ExpressionStatement","src":"10164:26:6"}],"id":7419,"name":"Block","src":"9881:320:6"}],"id":7420,"name":"ForStatement","src":"9851:350:6"},{"attributes":{"assignments":[7422]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":7548,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7421,"name":"ElementaryTypeName","src":"10211:4:6"}],"id":7422,"name":"VariableDeclaration","src":"10211:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7423,"name":"Identifier","src":"10225:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7424,"name":"Literal","src":"10231:1:6"}],"id":7425,"name":"BinaryOperation","src":"10225:7:6"}],"id":7426,"name":"VariableDeclarationStatement","src":"10211:21:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7427,"name":"Identifier","src":"10245:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7428,"name":"Literal","src":"10251:1:6"}],"id":7429,"name":"BinaryOperation","src":"10245:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7430,"name":"Literal","src":"10256:1:6"}],"id":7431,"name":"BinaryOperation","src":"10245:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7432,"name":"Identifier","src":"10325:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7433,"name":"Identifier","src":"10332:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7434,"name":"Literal","src":"10339:1:6"}],"id":7435,"name":"BinaryOperation","src":"10332:8:6"}],"id":7436,"name":"TupleExpression","src":"10331:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7437,"name":"Identifier","src":"10344:7:6"}],"id":7438,"name":"BinaryOperation","src":"10331:20:6"}],"id":7439,"name":"Assignment","src":"10325:26:6"}],"id":7440,"name":"ExpressionStatement","src":"10325:26:6"}],"id":7441,"name":"Block","src":"10259:103:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7442,"name":"Identifier","src":"10371:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7443,"name":"Literal","src":"10377:1:6"}],"id":7444,"name":"BinaryOperation","src":"10371:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7445,"name":"Literal","src":"10382:1:6"}],"id":7446,"name":"BinaryOperation","src":"10371:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7447,"name":"Identifier","src":"10444:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7448,"name":"Identifier","src":"10451:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7449,"name":"Literal","src":"10458:1:6"}],"id":7450,"name":"BinaryOperation","src":"10451:8:6"}],"id":7451,"name":"TupleExpression","src":"10450:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7452,"name":"Identifier","src":"10464:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7453,"name":"Literal","src":"10475:1:6"}],"id":7454,"name":"BinaryOperation","src":"10464:12:6"}],"id":7455,"name":"TupleExpression","src":"10463:14:6"}],"id":7456,"name":"BinaryOperation","src":"10450:27:6"}],"id":7457,"name":"Assignment","src":"10444:33:6"}],"id":7458,"name":"ExpressionStatement","src":"10444:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7459,"name":"Identifier","src":"10491:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7460,"name":"Literal","src":"10501:1:6"}],"id":7461,"name":"Assignment","src":"10491:11:6"}],"id":7462,"name":"ExpressionStatement","src":"10491:11:6"}],"id":7463,"name":"Block","src":"10385:128:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7464,"name":"Identifier","src":"10522:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7465,"name":"Literal","src":"10528:1:6"}],"id":7466,"name":"BinaryOperation","src":"10522:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7467,"name":"Literal","src":"10533:1:6"}],"id":7468,"name":"BinaryOperation","src":"10522:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7469,"name":"Identifier","src":"10597:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7470,"name":"Identifier","src":"10604:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7471,"name":"Literal","src":"10611:1:6"}],"id":7472,"name":"BinaryOperation","src":"10604:8:6"}],"id":7473,"name":"TupleExpression","src":"10603:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7474,"name":"Identifier","src":"10617:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7475,"name":"Literal","src":"10628:1:6"}],"id":7476,"name":"BinaryOperation","src":"10617:12:6"}],"id":7477,"name":"TupleExpression","src":"10616:14:6"}],"id":7478,"name":"BinaryOperation","src":"10603:27:6"}],"id":7479,"name":"Assignment","src":"10597:33:6"}],"id":7480,"name":"ExpressionStatement","src":"10597:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7481,"name":"Identifier","src":"10644:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7482,"name":"Literal","src":"10654:1:6"}],"id":7483,"name":"Assignment","src":"10644:11:6"}],"id":7484,"name":"ExpressionStatement","src":"10644:11:6"}],"id":7485,"name":"Block","src":"10536:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7486,"name":"Identifier","src":"10675:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7487,"name":"Literal","src":"10681:1:6"}],"id":7488,"name":"BinaryOperation","src":"10675:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7489,"name":"Literal","src":"10686:1:6"}],"id":7490,"name":"BinaryOperation","src":"10675:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7491,"name":"Identifier","src":"10750:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7492,"name":"Identifier","src":"10757:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7493,"name":"Literal","src":"10764:1:6"}],"id":7494,"name":"BinaryOperation","src":"10757:8:6"}],"id":7495,"name":"TupleExpression","src":"10756:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7496,"name":"Identifier","src":"10770:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7497,"name":"Literal","src":"10781:1:6"}],"id":7498,"name":"BinaryOperation","src":"10770:12:6"}],"id":7499,"name":"TupleExpression","src":"10769:14:6"}],"id":7500,"name":"BinaryOperation","src":"10756:27:6"}],"id":7501,"name":"Assignment","src":"10750:33:6"}],"id":7502,"name":"ExpressionStatement","src":"10750:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7503,"name":"Identifier","src":"10797:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7504,"name":"Literal","src":"10807:1:6"}],"id":7505,"name":"Assignment","src":"10797:11:6"}],"id":7506,"name":"ExpressionStatement","src":"10797:11:6"}],"id":7507,"name":"Block","src":"10689:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7508,"name":"Identifier","src":"10828:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7509,"name":"Literal","src":"10834:1:6"}],"id":7510,"name":"BinaryOperation","src":"10828:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":7511,"name":"Literal","src":"10839:1:6"}],"id":7512,"name":"BinaryOperation","src":"10828:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7513,"name":"Identifier","src":"10904:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7514,"name":"Identifier","src":"10911:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7515,"name":"Literal","src":"10918:1:6"}],"id":7516,"name":"BinaryOperation","src":"10911:8:6"}],"id":7517,"name":"TupleExpression","src":"10910:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7518,"name":"Identifier","src":"10924:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7519,"name":"Literal","src":"10935:1:6"}],"id":7520,"name":"BinaryOperation","src":"10924:12:6"}],"id":7521,"name":"TupleExpression","src":"10923:14:6"}],"id":7522,"name":"BinaryOperation","src":"10910:27:6"}],"id":7523,"name":"Assignment","src":"10904:33:6"}],"id":7524,"name":"ExpressionStatement","src":"10904:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7525,"name":"Identifier","src":"10951:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7526,"name":"Literal","src":"10961:1:6"}],"id":7527,"name":"Assignment","src":"10951:11:6"}],"id":7528,"name":"ExpressionStatement","src":"10951:11:6"}],"id":7529,"name":"Block","src":"10842:131:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[7570,7571],"referencedDeclaration":7570,"type":"function () pure","value":"revert"},"id":7530,"name":"Identifier","src":"10993:6:6"}],"id":7531,"name":"FunctionCall","src":"10993:8:6"}],"id":7532,"name":"ExpressionStatement","src":"10993:8:6"}],"id":7533,"name":"Block","src":"10979:33:6"}],"id":7534,"name":"IfStatement","src":"10825:187:6"}],"id":7535,"name":"IfStatement","src":"10672:340:6"}],"id":7536,"name":"IfStatement","src":"10519:493:6"}],"id":7537,"name":"IfStatement","src":"10368:644:6"}],"id":7538,"name":"IfStatement","src":"10242:770:6"},{"attributes":{"functionReturnParameters":7340},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7539,"name":"ElementaryTypeNameExpression","src":"11029:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7540,"name":"Identifier","src":"11037:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7541,"name":"Literal","src":"11045:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7542,"name":"Identifier","src":"11051:6:6"}],"id":7543,"name":"BinaryOperation","src":"11045:12:6"}],"id":7544,"name":"TupleExpression","src":"11044:14:6"}],"id":7545,"name":"BinaryOperation","src":"11037:21:6"}],"id":7546,"name":"FunctionCall","src":"11029:30:6"}],"id":7547,"name":"Return","src":"11022:37:6"}],"id":7548,"name":"Block","src":"9767:1299:6"}],"id":7549,"name":"FunctionDefinition","src":"9668:1398:6"}],"id":7550,"name":"ContractDefinition","src":"26:11042:6"}],"id":7551,"name":"SourceUnit","src":"0:11069:6"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[3019]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2847,"name":"PragmaDirective","src":"1401:23:7"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":2848,"name":"PragmaDirective","src":"1425:33:7"},{"attributes":{"SourceUnit":2846,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2849,"name":"ImportDirective","src":"1460:19:7"},{"attributes":{"SourceUnit":4992,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2850,"name":"ImportDirective","src":"1480:36:7"},{"attributes":{"SourceUnit":5151,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2851,"name":"ImportDirective","src":"1517:37:7"},{"attributes":{"SourceUnit":5221,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2852,"name":"ImportDirective","src":"1555:44:7"},{"attributes":{"SourceUnit":5712,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2853,"name":"ImportDirective","src":"1600:36:7"},{"attributes":{"SourceUnit":5899,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2854,"name":"ImportDirective","src":"1637:42:7"},{"attributes":{"SourceUnit":5969,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2855,"name":"ImportDirective","src":"1680:37:7"},{"attributes":{"SourceUnit":6060,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2856,"name":"ImportDirective","src":"1718:39:7"},{"attributes":{"SourceUnit":6143,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2857,"name":"ImportDirective","src":"1758:37:7"},{"attributes":{"contractDependencies":[4991,5150,5220,5711,5898,5968,6059,6142,6211],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[3019,6142,6059,5968,5898,5711,5220,5150,4991,6211],"name":"PublicResolver","scope":3020},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":4991,"type":"contract ABIResolver"},"id":2858,"name":"UserDefinedTypeName","src":"1924:11:7"}],"id":2859,"name":"InheritanceSpecifier","src":"1924:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5150,"type":"contract AddrResolver"},"id":2860,"name":"UserDefinedTypeName","src":"1937:12:7"}],"id":2861,"name":"InheritanceSpecifier","src":"1937:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":5220,"type":"contract ContentHashResolver"},"id":2862,"name":"UserDefinedTypeName","src":"1951:19:7"}],"id":2863,"name":"InheritanceSpecifier","src":"1951:19:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":5711,"type":"contract DNSResolver"},"id":2864,"name":"UserDefinedTypeName","src":"1972:11:7"}],"id":2865,"name":"InheritanceSpecifier","src":"1972:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":5898,"type":"contract InterfaceResolver"},"id":2866,"name":"UserDefinedTypeName","src":"1985:17:7"}],"id":2867,"name":"InheritanceSpecifier","src":"1985:17:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":5968,"type":"contract NameResolver"},"id":2868,"name":"UserDefinedTypeName","src":"2004:12:7"}],"id":2869,"name":"InheritanceSpecifier","src":"2004:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":6059,"type":"contract PubkeyResolver"},"id":2870,"name":"UserDefinedTypeName","src":"2018:14:7"}],"id":2871,"name":"InheritanceSpecifier","src":"2018:14:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":6142,"type":"contract TextResolver"},"id":2872,"name":"UserDefinedTypeName","src":"2034:12:7"}],"id":2873,"name":"InheritanceSpecifier","src":"2034:12:7"},{"attributes":{"constant":false,"name":"ens","scope":3019,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":2845,"type":"contract ENS"},"id":2874,"name":"UserDefinedTypeName","src":"2053:3:7"}],"id":2875,"name":"VariableDeclaration","src":"2053:7:7"},{"attributes":{"constant":false,"name":"authorisations","scope":3019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2876,"name":"ElementaryTypeName","src":"2328:7:7"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":2877,"name":"ElementaryTypeName","src":"2345:7:7"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2878,"name":"ElementaryTypeName","src":"2362:7:7"},{"attributes":{"name":"bool","type":"bool"},"id":2879,"name":"ElementaryTypeName","src":"2371:4:7"}],"id":2880,"name":"Mapping","src":"2354:22:7"}],"id":2881,"name":"Mapping","src":"2337:40:7"}],"id":2882,"name":"Mapping","src":"2320:58:7"}],"id":2883,"name":"VariableDeclaration","src":"2320:80:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2893,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2884,"name":"ElementaryTypeName","src":"2434:7:7"}],"id":2885,"name":"VariableDeclaration","src":"2434:20:7"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":2893,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2886,"name":"ElementaryTypeName","src":"2456:7:7"}],"id":2887,"name":"VariableDeclaration","src":"2456:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":2893,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2888,"name":"ElementaryTypeName","src":"2479:7:7"}],"id":2889,"name":"VariableDeclaration","src":"2479:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":2893,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2890,"name":"ElementaryTypeName","src":"2503:4:7"}],"id":2891,"name":"VariableDeclaration","src":"2503:17:7"}],"id":2892,"name":"ParameterList","src":"2433:88:7"}],"id":2893,"name":"EventDefinition","src":"2407:115:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3019,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":2903,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":2845,"type":"contract ENS"},"id":2894,"name":"UserDefinedTypeName","src":"2540:3:7"}],"id":2895,"name":"VariableDeclaration","src":"2540:8:7"}],"id":2896,"name":"ParameterList","src":"2539:10:7"},{"attributes":{"parameters":[null]},"children":[],"id":2897,"name":"ParameterList","src":"2557:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2875,"type":"contract ENS","value":"ens"},"id":2898,"name":"Identifier","src":"2567:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2895,"type":"contract ENS","value":"_ens"},"id":2899,"name":"Identifier","src":"2573:4:7"}],"id":2900,"name":"Assignment","src":"2567:10:7"}],"id":2901,"name":"ExpressionStatement","src":"2567:10:7"}],"id":2902,"name":"Block","src":"2557:27:7"}],"id":2903,"name":"FunctionDefinition","src":"2528:56:7"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":3019,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2932,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2904,"name":"ElementaryTypeName","src":"3295:7:7"}],"id":2905,"name":"VariableDeclaration","src":"3295:12:7"},{"attributes":{"constant":false,"name":"target","scope":2932,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2906,"name":"ElementaryTypeName","src":"3309:7:7"}],"id":2907,"name":"VariableDeclaration","src":"3309:14:7"},{"attributes":{"constant":false,"name":"isAuthorised","scope":2932,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2908,"name":"ElementaryTypeName","src":"3325:4:7"}],"id":2909,"name":"VariableDeclaration","src":"3325:17:7"}],"id":2910,"name":"ParameterList","src":"3294:49:7"},{"attributes":{"parameters":[null]},"children":[],"id":2911,"name":"ParameterList","src":"3353:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2883,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":2912,"name":"Identifier","src":"3363:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2905,"type":"bytes32","value":"node"},"id":2913,"name":"Identifier","src":"3378:4:7"}],"id":2917,"name":"IndexAccess","src":"3363:20:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2914,"name":"Identifier","src":"3384:3:7"}],"id":2915,"name":"MemberAccess","src":"3384:10:7"}],"id":2918,"name":"IndexAccess","src":"3363:32:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2907,"type":"address","value":"target"},"id":2916,"name":"Identifier","src":"3396:6:7"}],"id":2919,"name":"IndexAccess","src":"3363:40:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2909,"type":"bool","value":"isAuthorised"},"id":2920,"name":"Identifier","src":"3406:12:7"}],"id":2921,"name":"Assignment","src":"3363:55:7"}],"id":2922,"name":"ExpressionStatement","src":"3363:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2893,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":2923,"name":"Identifier","src":"3433:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2905,"type":"bytes32","value":"node"},"id":2924,"name":"Identifier","src":"3454:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2925,"name":"Identifier","src":"3460:3:7"}],"id":2926,"name":"MemberAccess","src":"3460:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2907,"type":"address","value":"target"},"id":2927,"name":"Identifier","src":"3472:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2909,"type":"bool","value":"isAuthorised"},"id":2928,"name":"Identifier","src":"3480:12:7"}],"id":2929,"name":"FunctionCall","src":"3433:60:7"}],"id":2930,"name":"EmitStatement","src":"3428:65:7"}],"id":2931,"name":"Block","src":"3353:147:7"}],"id":2932,"name":"FunctionDefinition","src":"3269:231:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":3019,"stateMutability":"view","superFunction":6166,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2961,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2933,"name":"ElementaryTypeName","src":"3528:7:7"}],"id":2934,"name":"VariableDeclaration","src":"3528:12:7"}],"id":2935,"name":"ParameterList","src":"3527:14:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":2961,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2936,"name":"ElementaryTypeName","src":"3564:4:7"}],"id":2937,"name":"VariableDeclaration","src":"3564:4:7"}],"id":2938,"name":"ParameterList","src":"3563:6:7"},{"children":[{"attributes":{"assignments":[2940]},"children":[{"attributes":{"constant":false,"name":"owner","scope":2960,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2939,"name":"ElementaryTypeName","src":"3580:7:7"}],"id":2940,"name":"VariableDeclaration","src":"3580:13:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":2814,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2875,"type":"contract ENS","value":"ens"},"id":2941,"name":"Identifier","src":"3596:3:7"}],"id":2942,"name":"MemberAccess","src":"3596:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2934,"type":"bytes32","value":"node"},"id":2943,"name":"Identifier","src":"3606:4:7"}],"id":2944,"name":"FunctionCall","src":"3596:15:7"}],"id":2945,"name":"VariableDeclarationStatement","src":"3580:31:7"},{"attributes":{"functionReturnParameters":2938},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2940,"type":"address","value":"owner"},"id":2946,"name":"Identifier","src":"3628:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2947,"name":"Identifier","src":"3637:3:7"}],"id":2948,"name":"MemberAccess","src":"3637:10:7"}],"id":2949,"name":"BinaryOperation","src":"3628:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2883,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":2950,"name":"Identifier","src":"3651:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2934,"type":"bytes32","value":"node"},"id":2951,"name":"Identifier","src":"3666:4:7"}],"id":2952,"name":"IndexAccess","src":"3651:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2940,"type":"address","value":"owner"},"id":2953,"name":"Identifier","src":"3672:5:7"}],"id":2954,"name":"IndexAccess","src":"3651:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2955,"name":"Identifier","src":"3679:3:7"}],"id":2956,"name":"MemberAccess","src":"3679:10:7"}],"id":2957,"name":"IndexAccess","src":"3651:39:7"}],"id":2958,"name":"BinaryOperation","src":"3628:62:7"}],"id":2959,"name":"Return","src":"3621:69:7"}],"id":2960,"name":"Block","src":"3570:127:7"}],"id":2961,"name":"FunctionDefinition","src":"3506:191:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":3019,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":3018,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2962,"name":"ElementaryTypeName","src":"3722:5:7"}],"id":2963,"name":"ArrayTypeName","src":"3722:7:7"}],"id":2964,"name":"VariableDeclaration","src":"3722:21:7"}],"id":2965,"name":"ParameterList","src":"3721:23:7"},{"children":[{"attributes":{"constant":false,"name":"results","scope":3018,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2966,"name":"ElementaryTypeName","src":"3762:5:7"}],"id":2967,"name":"ArrayTypeName","src":"3762:7:7"}],"id":2968,"name":"VariableDeclaration","src":"3762:22:7"}],"id":2969,"name":"ParameterList","src":"3761:24:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2968,"type":"bytes memory[] memory","value":"results"},"id":2970,"name":"Identifier","src":"3796:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2971,"name":"ElementaryTypeName","src":"3810:5:7"}],"id":2972,"name":"ArrayTypeName","src":"3810:7:7"}],"id":2973,"name":"NewExpression","src":"3806:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"bytes calldata[] calldata","value":"data"},"id":2974,"name":"Identifier","src":"3818:4:7"}],"id":2975,"name":"MemberAccess","src":"3818:11:7"}],"id":2976,"name":"FunctionCall","src":"3806:24:7"}],"id":2977,"name":"Assignment","src":"3796:34:7"}],"id":2978,"name":"ExpressionStatement","src":"3796:34:7"},{"children":[{"attributes":{"assignments":[2980]},"children":[{"attributes":{"constant":false,"name":"i","scope":3014,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2979,"name":"ElementaryTypeName","src":"3844:4:7"}],"id":2980,"name":"VariableDeclaration","src":"3844:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2981,"name":"Literal","src":"3853:1:7"}],"id":2982,"name":"VariableDeclarationStatement","src":"3844:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2980,"type":"uint256","value":"i"},"id":2983,"name":"Identifier","src":"3856:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"bytes calldata[] calldata","value":"data"},"id":2984,"name":"Identifier","src":"3860:4:7"}],"id":2985,"name":"MemberAccess","src":"3860:11:7"}],"id":2986,"name":"BinaryOperation","src":"3856:15:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2980,"type":"uint256","value":"i"},"id":2987,"name":"Identifier","src":"3873:1:7"}],"id":2988,"name":"UnaryOperation","src":"3873:3:7"}],"id":2989,"name":"ExpressionStatement","src":"3873:3:7"},{"children":[{"attributes":{"assignments":[2991,2993]},"children":[{"attributes":{"constant":false,"name":"success","scope":3013,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2990,"name":"ElementaryTypeName","src":"3893:4:7"}],"id":2991,"name":"VariableDeclaration","src":"3893:12:7"},{"attributes":{"constant":false,"name":"result","scope":3013,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2992,"name":"ElementaryTypeName","src":"3907:5:7"}],"id":2993,"name":"VariableDeclaration","src":"3907:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$3019","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2994,"name":"ElementaryTypeNameExpression","src":"3930:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7619,"type":"contract PublicResolver","value":"this"},"id":2995,"name":"Identifier","src":"3938:4:7"}],"id":2996,"name":"FunctionCall","src":"3930:13:7"}],"id":2997,"name":"MemberAccess","src":"3930:26:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"bytes calldata[] calldata","value":"data"},"id":2998,"name":"Identifier","src":"3957:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2980,"type":"uint256","value":"i"},"id":2999,"name":"Identifier","src":"3962:1:7"}],"id":3000,"name":"IndexAccess","src":"3957:7:7"}],"id":3001,"name":"FunctionCall","src":"3930:35:7"}],"id":3002,"name":"VariableDeclarationStatement","src":"3892:73:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":3003,"name":"Identifier","src":"3979:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2991,"type":"bool","value":"success"},"id":3004,"name":"Identifier","src":"3987:7:7"}],"id":3005,"name":"FunctionCall","src":"3979:16:7"}],"id":3006,"name":"ExpressionStatement","src":"3979:16:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2968,"type":"bytes memory[] memory","value":"results"},"id":3007,"name":"Identifier","src":"4009:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2980,"type":"uint256","value":"i"},"id":3008,"name":"Identifier","src":"4017:1:7"}],"id":3009,"name":"IndexAccess","src":"4009:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2993,"type":"bytes memory","value":"result"},"id":3010,"name":"Identifier","src":"4022:6:7"}],"id":3011,"name":"Assignment","src":"4009:19:7"}],"id":3012,"name":"ExpressionStatement","src":"4009:19:7"}],"id":3013,"name":"Block","src":"3878:161:7"}],"id":3014,"name":"ForStatement","src":"3840:199:7"},{"attributes":{"functionReturnParameters":2969},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2968,"type":"bytes memory[] memory","value":"results"},"id":3015,"name":"Identifier","src":"4055:7:7"}],"id":3016,"name":"Return","src":"4048:14:7"}],"id":3017,"name":"Block","src":"3786:283:7"}],"id":3018,"name":"FunctionDefinition","src":"3703:366:7"}],"id":3019,"name":"ContractDefinition","src":"1897:2174:7"}],"id":3020,"name":"SourceUnit","src":"1401:2671:7"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[6829]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":6213,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"SourceUnit":7551,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":6830,"symbolAliases":[null],"unitAlias":""},"id":6214,"name":"ImportDirective","src":"26:29:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[6829],"name":"RRUtils","scope":6830},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7550,"type":"library ENSBytesUtils"},"id":6215,"name":"UserDefinedTypeName","src":"178:13:8"}],"id":6216,"name":"UsingForDirective","src":"172:26:8"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6263,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6217,"name":"ElementaryTypeName","src":"487:5:8"}],"id":6218,"name":"VariableDeclaration","src":"487:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6263,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6219,"name":"ElementaryTypeName","src":"506:4:8"}],"id":6220,"name":"VariableDeclaration","src":"506:11:8"}],"id":6221,"name":"ParameterList","src":"486:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6263,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6222,"name":"ElementaryTypeName","src":"541:4:8"}],"id":6223,"name":"VariableDeclaration","src":"541:4:8"}],"id":6224,"name":"ParameterList","src":"540:6:8"},{"children":[{"attributes":{"assignments":[6226]},"children":[{"attributes":{"constant":false,"name":"idx","scope":6262,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6225,"name":"ElementaryTypeName","src":"557:4:8"}],"id":6226,"name":"VariableDeclaration","src":"557:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6220,"type":"uint256","value":"offset"},"id":6227,"name":"Identifier","src":"568:6:8"}],"id":6228,"name":"VariableDeclarationStatement","src":"557:17:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6229,"name":"Literal","src":"591:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7554,"type":"function (bool) pure","value":"assert"},"id":6230,"name":"Identifier","src":"611:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6226,"type":"uint256","value":"idx"},"id":6231,"name":"Identifier","src":"618:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6218,"type":"bytes memory","value":"self"},"id":6232,"name":"Identifier","src":"624:4:8"}],"id":6233,"name":"MemberAccess","src":"624:11:8"}],"id":6234,"name":"BinaryOperation","src":"618:17:8"}],"id":6235,"name":"FunctionCall","src":"611:25:8"}],"id":6236,"name":"ExpressionStatement","src":"611:25:8"},{"attributes":{"assignments":[6238]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":6256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6237,"name":"ElementaryTypeName","src":"650:4:8"}],"id":6238,"name":"VariableDeclaration","src":"650:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6218,"type":"bytes memory","value":"self"},"id":6239,"name":"Identifier","src":"666:4:8"}],"id":6240,"name":"MemberAccess","src":"666:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6226,"type":"uint256","value":"idx"},"id":6241,"name":"Identifier","src":"681:3:8"}],"id":6242,"name":"FunctionCall","src":"666:19:8"}],"id":6243,"name":"VariableDeclarationStatement","src":"650:35:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6226,"type":"uint256","value":"idx"},"id":6244,"name":"Identifier","src":"699:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6238,"type":"uint256","value":"labelLen"},"id":6245,"name":"Identifier","src":"706:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6246,"name":"Literal","src":"717:1:8"}],"id":6247,"name":"BinaryOperation","src":"706:12:8"}],"id":6248,"name":"Assignment","src":"699:19:8"}],"id":6249,"name":"ExpressionStatement","src":"699:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6238,"type":"uint256","value":"labelLen"},"id":6250,"name":"Identifier","src":"736:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6251,"name":"Literal","src":"748:1:8"}],"id":6252,"name":"BinaryOperation","src":"736:13:8"},{"children":[{"id":6253,"name":"Break","src":"769:5:8"}],"id":6254,"name":"Block","src":"751:38:8"}],"id":6255,"name":"IfStatement","src":"732:57:8"}],"id":6256,"name":"Block","src":"597:202:8"}],"id":6257,"name":"WhileStatement","src":"584:215:8"},{"attributes":{"functionReturnParameters":6224},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6226,"type":"uint256","value":"idx"},"id":6258,"name":"Identifier","src":"815:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6220,"type":"uint256","value":"offset"},"id":6259,"name":"Identifier","src":"821:6:8"}],"id":6260,"name":"BinaryOperation","src":"815:12:8"}],"id":6261,"name":"Return","src":"808:19:8"}],"id":6262,"name":"Block","src":"547:287:8"}],"id":6263,"name":"FunctionDefinition","src":"467:367:8"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6286,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6264,"name":"ElementaryTypeName","src":"1073:5:8"}],"id":6265,"name":"VariableDeclaration","src":"1073:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6286,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6266,"name":"ElementaryTypeName","src":"1092:4:8"}],"id":6267,"name":"VariableDeclaration","src":"1092:11:8"}],"id":6268,"name":"ParameterList","src":"1072:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6286,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6269,"name":"ElementaryTypeName","src":"1127:5:8"}],"id":6270,"name":"VariableDeclaration","src":"1127:16:8"}],"id":6271,"name":"ParameterList","src":"1126:18:8"},{"children":[{"attributes":{"assignments":[6273]},"children":[{"attributes":{"constant":false,"name":"len","scope":6285,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6272,"name":"ElementaryTypeName","src":"1155:4:8"}],"id":6273,"name":"VariableDeclaration","src":"1155:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6263,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":6274,"name":"Identifier","src":"1166:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6265,"type":"bytes memory","value":"self"},"id":6275,"name":"Identifier","src":"1177:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6267,"type":"uint256","value":"offset"},"id":6276,"name":"Identifier","src":"1183:6:8"}],"id":6277,"name":"FunctionCall","src":"1166:24:8"}],"id":6278,"name":"VariableDeclarationStatement","src":"1155:35:8"},{"attributes":{"functionReturnParameters":6271},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7327,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6265,"type":"bytes memory","value":"self"},"id":6279,"name":"Identifier","src":"1207:4:8"}],"id":6280,"name":"MemberAccess","src":"1207:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6267,"type":"uint256","value":"offset"},"id":6281,"name":"Identifier","src":"1222:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6273,"type":"uint256","value":"len"},"id":6282,"name":"Identifier","src":"1230:3:8"}],"id":6283,"name":"FunctionCall","src":"1207:27:8"}],"id":6284,"name":"Return","src":"1200:34:8"}],"id":6285,"name":"Block","src":"1145:96:8"}],"id":6286,"name":"FunctionDefinition","src":"1055:186:8"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6335,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6287,"name":"ElementaryTypeName","src":"1541:5:8"}],"id":6288,"name":"VariableDeclaration","src":"1541:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6335,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6289,"name":"ElementaryTypeName","src":"1560:4:8"}],"id":6290,"name":"VariableDeclaration","src":"1560:11:8"}],"id":6291,"name":"ParameterList","src":"1540:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6335,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6292,"name":"ElementaryTypeName","src":"1595:4:8"}],"id":6293,"name":"VariableDeclaration","src":"1595:4:8"}],"id":6294,"name":"ParameterList","src":"1594:6:8"},{"children":[{"attributes":{"assignments":[6296]},"children":[{"attributes":{"constant":false,"name":"count","scope":6334,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6295,"name":"ElementaryTypeName","src":"1611:4:8"}],"id":6296,"name":"VariableDeclaration","src":"1611:10:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6297,"name":"Literal","src":"1624:1:8"}],"id":6298,"name":"VariableDeclarationStatement","src":"1611:14:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6299,"name":"Literal","src":"1642:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7554,"type":"function (bool) pure","value":"assert"},"id":6300,"name":"Identifier","src":"1662:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6290,"type":"uint256","value":"offset"},"id":6301,"name":"Identifier","src":"1669:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"bytes memory","value":"self"},"id":6302,"name":"Identifier","src":"1678:4:8"}],"id":6303,"name":"MemberAccess","src":"1678:11:8"}],"id":6304,"name":"BinaryOperation","src":"1669:20:8"}],"id":6305,"name":"FunctionCall","src":"1662:28:8"}],"id":6306,"name":"ExpressionStatement","src":"1662:28:8"},{"attributes":{"assignments":[6308]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":6330,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6307,"name":"ElementaryTypeName","src":"1704:4:8"}],"id":6308,"name":"VariableDeclaration","src":"1704:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"bytes memory","value":"self"},"id":6309,"name":"Identifier","src":"1720:4:8"}],"id":6310,"name":"MemberAccess","src":"1720:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6290,"type":"uint256","value":"offset"},"id":6311,"name":"Identifier","src":"1735:6:8"}],"id":6312,"name":"FunctionCall","src":"1720:22:8"}],"id":6313,"name":"VariableDeclarationStatement","src":"1704:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6290,"type":"uint256","value":"offset"},"id":6314,"name":"Identifier","src":"1756:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6308,"type":"uint256","value":"labelLen"},"id":6315,"name":"Identifier","src":"1766:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6316,"name":"Literal","src":"1777:1:8"}],"id":6317,"name":"BinaryOperation","src":"1766:12:8"}],"id":6318,"name":"Assignment","src":"1756:22:8"}],"id":6319,"name":"ExpressionStatement","src":"1756:22:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6308,"type":"uint256","value":"labelLen"},"id":6320,"name":"Identifier","src":"1796:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6321,"name":"Literal","src":"1808:1:8"}],"id":6322,"name":"BinaryOperation","src":"1796:13:8"},{"children":[{"id":6323,"name":"Break","src":"1829:5:8"}],"id":6324,"name":"Block","src":"1811:38:8"}],"id":6325,"name":"IfStatement","src":"1792:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"uint256","value":"count"},"id":6326,"name":"Identifier","src":"1862:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6327,"name":"Literal","src":"1871:1:8"}],"id":6328,"name":"Assignment","src":"1862:10:8"}],"id":6329,"name":"ExpressionStatement","src":"1862:10:8"}],"id":6330,"name":"Block","src":"1648:235:8"}],"id":6331,"name":"WhileStatement","src":"1635:248:8"},{"attributes":{"functionReturnParameters":6294},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"uint256","value":"count"},"id":6332,"name":"Identifier","src":"1899:5:8"}],"id":6333,"name":"Return","src":"1892:12:8"}],"id":6334,"name":"Block","src":"1601:310:8"}],"id":6335,"name":"FunctionDefinition","src":"1521:390:8"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":6829,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":6350,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6336,"name":"ElementaryTypeName","src":"2006:5:8"}],"id":6337,"name":"VariableDeclaration","src":"2006:10:8"},{"attributes":{"constant":false,"name":"offset","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6338,"name":"ElementaryTypeName","src":"2026:4:8"}],"id":6339,"name":"VariableDeclaration","src":"2026:11:8"},{"attributes":{"constant":false,"name":"dnstype","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6340,"name":"ElementaryTypeName","src":"2047:6:8"}],"id":6341,"name":"VariableDeclaration","src":"2047:14:8"},{"attributes":{"constant":false,"name":"class","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6342,"name":"ElementaryTypeName","src":"2071:6:8"}],"id":6343,"name":"VariableDeclaration","src":"2071:12:8"},{"attributes":{"constant":false,"name":"ttl","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":6344,"name":"ElementaryTypeName","src":"2093:6:8"}],"id":6345,"name":"VariableDeclaration","src":"2093:10:8"},{"attributes":{"constant":false,"name":"rdataOffset","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6346,"name":"ElementaryTypeName","src":"2113:4:8"}],"id":6347,"name":"VariableDeclaration","src":"2113:16:8"},{"attributes":{"constant":false,"name":"nextOffset","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6348,"name":"ElementaryTypeName","src":"2139:4:8"}],"id":6349,"name":"VariableDeclaration","src":"2139:15:8"}],"id":6350,"name":"StructDefinition","src":"1978:183:8"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6376,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6351,"name":"ElementaryTypeName","src":"2387:5:8"}],"id":6352,"name":"VariableDeclaration","src":"2387:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6376,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6353,"name":"ElementaryTypeName","src":"2406:4:8"}],"id":6354,"name":"VariableDeclaration","src":"2406:11:8"}],"id":6355,"name":"ParameterList","src":"2386:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6376,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6356,"name":"UserDefinedTypeName","src":"2442:10:8"}],"id":6357,"name":"VariableDeclaration","src":"2442:21:8"}],"id":6358,"name":"ParameterList","src":"2441:23:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6357,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":6359,"name":"Identifier","src":"2475:3:8"}],"id":6361,"name":"MemberAccess","src":"2475:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6352,"type":"bytes memory","value":"self"},"id":6362,"name":"Identifier","src":"2486:4:8"}],"id":6363,"name":"Assignment","src":"2475:15:8"}],"id":6364,"name":"ExpressionStatement","src":"2475:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":6349,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6357,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":6365,"name":"Identifier","src":"2500:3:8"}],"id":6367,"name":"MemberAccess","src":"2500:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6354,"type":"uint256","value":"offset"},"id":6368,"name":"Identifier","src":"2517:6:8"}],"id":6369,"name":"Assignment","src":"2500:23:8"}],"id":6370,"name":"ExpressionStatement","src":"2500:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$6350_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6493,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":6371,"name":"Identifier","src":"2533:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6357,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":6372,"name":"Identifier","src":"2538:3:8"}],"id":6373,"name":"FunctionCall","src":"2533:9:8"}],"id":6374,"name":"ExpressionStatement","src":"2533:9:8"}],"id":6375,"name":"Block","src":"2465:84:8"}],"id":6376,"name":"FunctionDefinition","src":"2367:182:8"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6391,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6377,"name":"UserDefinedTypeName","src":"2734:10:8"}],"id":6378,"name":"VariableDeclaration","src":"2734:22:8"}],"id":6379,"name":"ParameterList","src":"2733:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6391,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6380,"name":"ElementaryTypeName","src":"2780:4:8"}],"id":6381,"name":"VariableDeclaration","src":"2780:4:8"}],"id":6382,"name":"ParameterList","src":"2779:6:8"},{"children":[{"attributes":{"functionReturnParameters":6382},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6378,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6383,"name":"Identifier","src":"2803:4:8"}],"id":6384,"name":"MemberAccess","src":"2803:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6378,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6385,"name":"Identifier","src":"2818:4:8"}],"id":6386,"name":"MemberAccess","src":"2818:9:8"}],"id":6387,"name":"MemberAccess","src":"2818:16:8"}],"id":6388,"name":"BinaryOperation","src":"2803:31:8"}],"id":6389,"name":"Return","src":"2796:38:8"}],"id":6390,"name":"Block","src":"2786:55:8"}],"id":6391,"name":"FunctionDefinition","src":"2720:121:8"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6493,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6392,"name":"UserDefinedTypeName","src":"2978:10:8"}],"id":6393,"name":"VariableDeclaration","src":"2978:22:8"}],"id":6394,"name":"ParameterList","src":"2977:24:8"},{"attributes":{"parameters":[null]},"children":[],"id":6395,"name":"ParameterList","src":"3016:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6396,"name":"Identifier","src":"3026:4:8"}],"id":6398,"name":"MemberAccess","src":"3026:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":6349,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6399,"name":"Identifier","src":"3040:4:8"}],"id":6400,"name":"MemberAccess","src":"3040:15:8"}],"id":6401,"name":"Assignment","src":"3026:29:8"}],"id":6402,"name":"ExpressionStatement","src":"3026:29:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6403,"name":"Identifier","src":"3069:4:8"}],"id":6404,"name":"MemberAccess","src":"3069:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6405,"name":"Identifier","src":"3084:4:8"}],"id":6406,"name":"MemberAccess","src":"3084:9:8"}],"id":6407,"name":"MemberAccess","src":"3084:16:8"}],"id":6408,"name":"BinaryOperation","src":"3069:31:8"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":6395},"id":6409,"name":"Return","src":"3116:7:8"}],"id":6410,"name":"Block","src":"3102:31:8"}],"id":6411,"name":"IfStatement","src":"3065:68:8"},{"attributes":{"assignments":[6413]},"children":[{"attributes":{"constant":false,"name":"off","scope":6492,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6412,"name":"ElementaryTypeName","src":"3168:4:8"}],"id":6413,"name":"VariableDeclaration","src":"3168:8:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6414,"name":"Identifier","src":"3179:4:8"}],"id":6415,"name":"MemberAccess","src":"3179:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6263,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":6416,"name":"Identifier","src":"3193:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6417,"name":"Identifier","src":"3204:4:8"}],"id":6418,"name":"MemberAccess","src":"3204:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6419,"name":"Identifier","src":"3215:4:8"}],"id":6420,"name":"MemberAccess","src":"3215:11:8"}],"id":6421,"name":"FunctionCall","src":"3193:34:8"}],"id":6422,"name":"BinaryOperation","src":"3179:48:8"}],"id":6423,"name":"VariableDeclarationStatement","src":"3168:59:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":6341,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6424,"name":"Identifier","src":"3275:4:8"}],"id":6426,"name":"MemberAccess","src":"3275:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":7156,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6427,"name":"Identifier","src":"3290:4:8"}],"id":6428,"name":"MemberAccess","src":"3290:9:8"}],"id":6429,"name":"MemberAccess","src":"3290:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6430,"name":"Identifier","src":"3311:3:8"}],"id":6431,"name":"FunctionCall","src":"3290:25:8"}],"id":6432,"name":"Assignment","src":"3275:40:8"}],"id":6433,"name":"ExpressionStatement","src":"3275:40:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6434,"name":"Identifier","src":"3325:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6435,"name":"Literal","src":"3332:1:8"}],"id":6436,"name":"Assignment","src":"3325:8:8"}],"id":6437,"name":"ExpressionStatement","src":"3325:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":6343,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6438,"name":"Identifier","src":"3343:4:8"}],"id":6440,"name":"MemberAccess","src":"3343:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":7156,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6441,"name":"Identifier","src":"3356:4:8"}],"id":6442,"name":"MemberAccess","src":"3356:9:8"}],"id":6443,"name":"MemberAccess","src":"3356:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6444,"name":"Identifier","src":"3377:3:8"}],"id":6445,"name":"FunctionCall","src":"3356:25:8"}],"id":6446,"name":"Assignment","src":"3343:38:8"}],"id":6447,"name":"ExpressionStatement","src":"3343:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6448,"name":"Identifier","src":"3391:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6449,"name":"Literal","src":"3398:1:8"}],"id":6450,"name":"Assignment","src":"3391:8:8"}],"id":6451,"name":"ExpressionStatement","src":"3391:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":6345,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6452,"name":"Identifier","src":"3409:4:8"}],"id":6454,"name":"MemberAccess","src":"3409:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":7176,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6455,"name":"Identifier","src":"3420:4:8"}],"id":6456,"name":"MemberAccess","src":"3420:9:8"}],"id":6457,"name":"MemberAccess","src":"3420:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6458,"name":"Identifier","src":"3441:3:8"}],"id":6459,"name":"FunctionCall","src":"3420:25:8"}],"id":6460,"name":"Assignment","src":"3409:36:8"}],"id":6461,"name":"ExpressionStatement","src":"3409:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6462,"name":"Identifier","src":"3455:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6463,"name":"Literal","src":"3462:1:8"}],"id":6464,"name":"Assignment","src":"3455:8:8"}],"id":6465,"name":"ExpressionStatement","src":"3455:8:8"},{"attributes":{"assignments":[6467]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":6492,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6466,"name":"ElementaryTypeName","src":"3500:4:8"}],"id":6467,"name":"VariableDeclaration","src":"3500:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":7156,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6468,"name":"Identifier","src":"3519:4:8"}],"id":6469,"name":"MemberAccess","src":"3519:9:8"}],"id":6470,"name":"MemberAccess","src":"3519:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6471,"name":"Identifier","src":"3540:3:8"}],"id":6472,"name":"FunctionCall","src":"3519:25:8"}],"id":6473,"name":"VariableDeclarationStatement","src":"3500:44:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6474,"name":"Identifier","src":"3554:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6475,"name":"Literal","src":"3561:1:8"}],"id":6476,"name":"Assignment","src":"3554:8:8"}],"id":6477,"name":"ExpressionStatement","src":"3554:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":6347,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6478,"name":"Identifier","src":"3572:4:8"}],"id":6480,"name":"MemberAccess","src":"3572:16:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6481,"name":"Identifier","src":"3591:3:8"}],"id":6482,"name":"Assignment","src":"3572:22:8"}],"id":6483,"name":"ExpressionStatement","src":"3572:22:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":6349,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6484,"name":"Identifier","src":"3604:4:8"}],"id":6486,"name":"MemberAccess","src":"3604:15:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6487,"name":"Identifier","src":"3622:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"uint256","value":"rdataLength"},"id":6488,"name":"Identifier","src":"3628:11:8"}],"id":6489,"name":"BinaryOperation","src":"3622:17:8"}],"id":6490,"name":"Assignment","src":"3604:35:8"}],"id":6491,"name":"ExpressionStatement","src":"3604:35:8"}],"id":6492,"name":"Block","src":"3016:630:8"}],"id":6493,"name":"FunctionDefinition","src":"2964:682:8"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6514,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6494,"name":"UserDefinedTypeName","src":"3836:10:8"}],"id":6495,"name":"VariableDeclaration","src":"3836:22:8"}],"id":6496,"name":"ParameterList","src":"3835:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6514,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6497,"name":"ElementaryTypeName","src":"3882:5:8"}],"id":6498,"name":"VariableDeclaration","src":"3882:12:8"}],"id":6499,"name":"ParameterList","src":"3881:14:8"},{"children":[{"attributes":{"functionReturnParameters":6499},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7327,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6495,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6500,"name":"Identifier","src":"3913:4:8"}],"id":6501,"name":"MemberAccess","src":"3913:9:8"}],"id":6502,"name":"MemberAccess","src":"3913:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6495,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6503,"name":"Identifier","src":"3933:4:8"}],"id":6504,"name":"MemberAccess","src":"3933:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6263,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":6505,"name":"Identifier","src":"3946:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6495,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6506,"name":"Identifier","src":"3957:4:8"}],"id":6507,"name":"MemberAccess","src":"3957:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6495,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6508,"name":"Identifier","src":"3968:4:8"}],"id":6509,"name":"MemberAccess","src":"3968:11:8"}],"id":6510,"name":"FunctionCall","src":"3946:34:8"}],"id":6511,"name":"FunctionCall","src":"3913:68:8"}],"id":6512,"name":"Return","src":"3906:75:8"}],"id":6513,"name":"Block","src":"3896:92:8"}],"id":6514,"name":"FunctionDefinition","src":"3822:166:8"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6534,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6515,"name":"UserDefinedTypeName","src":"4176:10:8"}],"id":6516,"name":"VariableDeclaration","src":"4176:22:8"}],"id":6517,"name":"ParameterList","src":"4175:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6534,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6518,"name":"ElementaryTypeName","src":"4222:5:8"}],"id":6519,"name":"VariableDeclaration","src":"4222:12:8"}],"id":6520,"name":"ParameterList","src":"4221:14:8"},{"children":[{"attributes":{"functionReturnParameters":6520},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7327,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6521,"name":"Identifier","src":"4253:4:8"}],"id":6522,"name":"MemberAccess","src":"4253:9:8"}],"id":6523,"name":"MemberAccess","src":"4253:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":6347,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6524,"name":"Identifier","src":"4273:4:8"}],"id":6525,"name":"MemberAccess","src":"4273:16:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":6349,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6526,"name":"Identifier","src":"4291:4:8"}],"id":6527,"name":"MemberAccess","src":"4291:15:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":6347,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6528,"name":"Identifier","src":"4309:4:8"}],"id":6529,"name":"MemberAccess","src":"4309:16:8"}],"id":6530,"name":"BinaryOperation","src":"4291:34:8"}],"id":6531,"name":"FunctionCall","src":"4253:73:8"}],"id":6532,"name":"Return","src":"4246:80:8"}],"id":6533,"name":"Block","src":"4236:97:8"}],"id":6534,"name":"FunctionDefinition","src":"4161:172:8"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6654,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6535,"name":"ElementaryTypeName","src":"4675:5:8"}],"id":6536,"name":"VariableDeclaration","src":"4675:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6654,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6537,"name":"ElementaryTypeName","src":"4694:4:8"}],"id":6538,"name":"VariableDeclaration","src":"4694:11:8"},{"attributes":{"constant":false,"name":"rrtype","scope":6654,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6539,"name":"ElementaryTypeName","src":"4707:6:8"}],"id":6540,"name":"VariableDeclaration","src":"4707:13:8"}],"id":6541,"name":"ParameterList","src":"4674:47:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6654,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6542,"name":"ElementaryTypeName","src":"4745:4:8"}],"id":6543,"name":"VariableDeclaration","src":"4745:4:8"}],"id":6544,"name":"ParameterList","src":"4744:6:8"},{"children":[{"attributes":{"assignments":[6546]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":6653,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6545,"name":"ElementaryTypeName","src":"4761:5:8"}],"id":6546,"name":"VariableDeclaration","src":"4761:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6547,"name":"ElementaryTypeNameExpression","src":"4780:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6540,"type":"uint16","value":"rrtype"},"id":6548,"name":"Identifier","src":"4786:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6549,"name":"Literal","src":"4796:1:8"}],"id":6550,"name":"BinaryOperation","src":"4786:11:8"}],"id":6551,"name":"FunctionCall","src":"4780:18:8"}],"id":6552,"name":"VariableDeclarationStatement","src":"4761:37:8"},{"attributes":{"assignments":[6554]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":6653,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6553,"name":"ElementaryTypeName","src":"4808:5:8"}],"id":6554,"name":"VariableDeclaration","src":"4808:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6555,"name":"ElementaryTypeNameExpression","src":"4827:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6540,"type":"uint16","value":"rrtype"},"id":6556,"name":"Identifier","src":"4834:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":6557,"name":"Literal","src":"4843:4:8"}],"id":6558,"name":"BinaryOperation","src":"4834:13:8"}],"id":6559,"name":"TupleExpression","src":"4833:15:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6560,"name":"Literal","src":"4851:1:8"}],"id":6561,"name":"BinaryOperation","src":"4833:19:8"}],"id":6562,"name":"FunctionCall","src":"4827:26:8"}],"id":6563,"name":"VariableDeclarationStatement","src":"4808:45:8"},{"attributes":{"assignments":[6565]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":6653,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6564,"name":"ElementaryTypeName","src":"4863:5:8"}],"id":6565,"name":"VariableDeclaration","src":"4863:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6566,"name":"ElementaryTypeNameExpression","src":"4885:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6567,"name":"ElementaryTypeNameExpression","src":"4891:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6568,"name":"Literal","src":"4897:1:8"}],"id":6569,"name":"FunctionCall","src":"4891:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6570,"name":"ElementaryTypeNameExpression","src":"4904:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":6571,"name":"Literal","src":"4910:1:8"}],"id":6572,"name":"FunctionCall","src":"4904:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6573,"name":"ElementaryTypeNameExpression","src":"4915:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6540,"type":"uint16","value":"rrtype"},"id":6574,"name":"Identifier","src":"4921:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":6575,"name":"Literal","src":"4930:3:8"}],"id":6576,"name":"BinaryOperation","src":"4921:12:8"}],"id":6577,"name":"FunctionCall","src":"4915:19:8"}],"id":6578,"name":"BinaryOperation","src":"4904:30:8"}],"id":6579,"name":"TupleExpression","src":"4903:32:8"}],"id":6580,"name":"BinaryOperation","src":"4891:44:8"}],"id":6581,"name":"FunctionCall","src":"4885:51:8"}],"id":6582,"name":"VariableDeclarationStatement","src":"4863:73:8"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[6584]},"children":[{"attributes":{"constant":false,"name":"off","scope":6650,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6583,"name":"ElementaryTypeName","src":"4951:4:8"}],"id":6584,"name":"VariableDeclaration","src":"4951:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6538,"type":"uint256","value":"offset"},"id":6585,"name":"Identifier","src":"4962:6:8"}],"id":6586,"name":"VariableDeclarationStatement","src":"4951:17:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6587,"name":"Identifier","src":"4970:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6536,"type":"bytes memory","value":"self"},"id":6588,"name":"Identifier","src":"4976:4:8"}],"id":6589,"name":"MemberAccess","src":"4976:11:8"}],"id":6590,"name":"BinaryOperation","src":"4970:17:8"},{"children":[{"attributes":{"assignments":[6592]},"children":[{"attributes":{"constant":false,"name":"window","scope":6649,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6591,"name":"ElementaryTypeName","src":"5004:5:8"}],"id":6592,"name":"VariableDeclaration","src":"5004:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6536,"type":"bytes memory","value":"self"},"id":6593,"name":"Identifier","src":"5019:4:8"}],"id":6594,"name":"MemberAccess","src":"5019:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6595,"name":"Identifier","src":"5034:3:8"}],"id":6596,"name":"FunctionCall","src":"5019:19:8"}],"id":6597,"name":"VariableDeclarationStatement","src":"5004:34:8"},{"attributes":{"assignments":[6599]},"children":[{"attributes":{"constant":false,"name":"len","scope":6649,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6598,"name":"ElementaryTypeName","src":"5052:5:8"}],"id":6599,"name":"VariableDeclaration","src":"5052:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6536,"type":"bytes memory","value":"self"},"id":6600,"name":"Identifier","src":"5064:4:8"}],"id":6601,"name":"MemberAccess","src":"5064:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6602,"name":"Identifier","src":"5079:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6603,"name":"Literal","src":"5085:1:8"}],"id":6604,"name":"BinaryOperation","src":"5079:7:8"}],"id":6605,"name":"FunctionCall","src":"5064:23:8"}],"id":6606,"name":"VariableDeclarationStatement","src":"5052:35:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6546,"type":"uint8","value":"typeWindow"},"id":6607,"name":"Identifier","src":"5105:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6592,"type":"uint8","value":"window"},"id":6608,"name":"Identifier","src":"5118:6:8"}],"id":6609,"name":"BinaryOperation","src":"5105:19:8"},{"children":[{"attributes":{"functionReturnParameters":6544},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6610,"name":"Literal","src":"5213:5:8"}],"id":6611,"name":"Return","src":"5206:12:8"}],"id":6612,"name":"Block","src":"5126:107:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6546,"type":"uint8","value":"typeWindow"},"id":6613,"name":"Identifier","src":"5243:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6592,"type":"uint8","value":"window"},"id":6614,"name":"Identifier","src":"5257:6:8"}],"id":6615,"name":"BinaryOperation","src":"5243:20:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6599,"type":"uint8","value":"len"},"id":6616,"name":"Identifier","src":"5329:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6617,"name":"Literal","src":"5335:1:8"}],"id":6618,"name":"BinaryOperation","src":"5329:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint8","value":"windowByte"},"id":6619,"name":"Identifier","src":"5340:10:8"}],"id":6620,"name":"BinaryOperation","src":"5329:21:8"},{"children":[{"attributes":{"functionReturnParameters":6544},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6621,"name":"Literal","src":"5443:5:8"}],"id":6622,"name":"Return","src":"5436:12:8"}],"id":6623,"name":"Block","src":"5352:115:8"}],"id":6624,"name":"IfStatement","src":"5325:142:8"},{"attributes":{"functionReturnParameters":6544},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6536,"type":"bytes memory","value":"self"},"id":6625,"name":"Identifier","src":"5492:4:8"}],"id":6626,"name":"MemberAccess","src":"5492:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6627,"name":"Identifier","src":"5507:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint8","value":"windowByte"},"id":6628,"name":"Identifier","src":"5513:10:8"}],"id":6629,"name":"BinaryOperation","src":"5507:16:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6630,"name":"Literal","src":"5526:1:8"}],"id":6631,"name":"BinaryOperation","src":"5507:20:8"}],"id":6632,"name":"FunctionCall","src":"5492:36:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6565,"type":"uint8","value":"windowBitmask"},"id":6633,"name":"Identifier","src":"5531:13:8"}],"id":6634,"name":"BinaryOperation","src":"5492:52:8"}],"id":6635,"name":"TupleExpression","src":"5491:54:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6636,"name":"Literal","src":"5549:1:8"}],"id":6637,"name":"BinaryOperation","src":"5491:59:8"}],"id":6638,"name":"Return","src":"5484:66:8"}],"id":6639,"name":"Block","src":"5265:300:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6640,"name":"Identifier","src":"5630:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6599,"type":"uint8","value":"len"},"id":6641,"name":"Identifier","src":"5637:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6642,"name":"Literal","src":"5643:1:8"}],"id":6643,"name":"BinaryOperation","src":"5637:7:8"}],"id":6644,"name":"Assignment","src":"5630:14:8"}],"id":6645,"name":"ExpressionStatement","src":"5630:14:8"}],"id":6646,"name":"Block","src":"5571:88:8"}],"id":6647,"name":"IfStatement","src":"5239:420:8"}],"id":6648,"name":"IfStatement","src":"5101:558:8"}],"id":6649,"name":"Block","src":"4990:679:8"}],"id":6650,"name":"ForStatement","src":"4946:723:8"},{"attributes":{"functionReturnParameters":6544},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6651,"name":"Literal","src":"5686:5:8"}],"id":6652,"name":"Return","src":"5679:12:8"}],"id":6653,"name":"Block","src":"4751:947:8"}],"id":6654,"name":"FunctionDefinition","src":"4650:1048:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6809,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6655,"name":"ElementaryTypeName","src":"5726:5:8"}],"id":6656,"name":"VariableDeclaration","src":"5726:17:8"},{"attributes":{"constant":false,"name":"other","scope":6809,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6657,"name":"ElementaryTypeName","src":"5745:5:8"}],"id":6658,"name":"VariableDeclaration","src":"5745:18:8"}],"id":6659,"name":"ParameterList","src":"5725:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6809,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6660,"name":"ElementaryTypeName","src":"5788:3:8"}],"id":6661,"name":"VariableDeclaration","src":"5788:3:8"}],"id":6662,"name":"ParameterList","src":"5787:5:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":7120,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6663,"name":"Identifier","src":"5807:4:8"}],"id":6664,"name":"MemberAccess","src":"5807:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6665,"name":"Identifier","src":"5819:5:8"}],"id":6666,"name":"FunctionCall","src":"5807:18:8"},{"children":[{"attributes":{"functionReturnParameters":6662},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6667,"name":"Literal","src":"5848:1:8"}],"id":6668,"name":"Return","src":"5841:8:8"}],"id":6669,"name":"Block","src":"5827:33:8"}],"id":6670,"name":"IfStatement","src":"5803:57:8"},{"attributes":{"assignments":[6672],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6671,"name":"ElementaryTypeName","src":"5870:4:8"}],"id":6672,"name":"VariableDeclaration","src":"5870:8:8"}],"id":6673,"name":"VariableDeclarationStatement","src":"5870:8:8"},{"attributes":{"assignments":[6675],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6674,"name":"ElementaryTypeName","src":"5888:4:8"}],"id":6675,"name":"VariableDeclaration","src":"5888:13:8"}],"id":6676,"name":"VariableDeclarationStatement","src":"5888:13:8"},{"attributes":{"assignments":[6678],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6677,"name":"ElementaryTypeName","src":"5911:4:8"}],"id":6678,"name":"VariableDeclaration","src":"5911:12:8"}],"id":6679,"name":"VariableDeclarationStatement","src":"5911:12:8"},{"attributes":{"assignments":[6681],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6680,"name":"ElementaryTypeName","src":"5933:4:8"}],"id":6681,"name":"VariableDeclaration","src":"5933:17:8"}],"id":6682,"name":"VariableDeclarationStatement","src":"5933:17:8"},{"attributes":{"assignments":[6684]},"children":[{"attributes":{"constant":false,"name":"counts","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6683,"name":"ElementaryTypeName","src":"5960:4:8"}],"id":6684,"name":"VariableDeclaration","src":"5960:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":6335,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":6685,"name":"Identifier","src":"5974:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6686,"name":"Identifier","src":"5985:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6687,"name":"Literal","src":"5991:1:8"}],"id":6688,"name":"FunctionCall","src":"5974:19:8"}],"id":6689,"name":"VariableDeclarationStatement","src":"5960:33:8"},{"attributes":{"assignments":[6691]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6690,"name":"ElementaryTypeName","src":"6003:4:8"}],"id":6691,"name":"VariableDeclaration","src":"6003:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":6335,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":6692,"name":"Identifier","src":"6022:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6693,"name":"Identifier","src":"6033:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6694,"name":"Literal","src":"6040:1:8"}],"id":6695,"name":"FunctionCall","src":"6022:20:8"}],"id":6696,"name":"VariableDeclarationStatement","src":"6003:39:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6697,"name":"Identifier","src":"6153:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"uint256","value":"othercounts"},"id":6698,"name":"Identifier","src":"6162:11:8"}],"id":6699,"name":"BinaryOperation","src":"6153:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6678,"type":"uint256","value":"prevoff"},"id":6700,"name":"Identifier","src":"6189:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6701,"name":"Identifier","src":"6199:3:8"}],"id":6702,"name":"Assignment","src":"6189:13:8"}],"id":6703,"name":"ExpressionStatement","src":"6189:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6704,"name":"Identifier","src":"6216:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6705,"name":"Identifier","src":"6222:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6706,"name":"Identifier","src":"6231:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6707,"name":"Identifier","src":"6237:3:8"}],"id":6708,"name":"FunctionCall","src":"6222:19:8"}],"id":6709,"name":"Assignment","src":"6216:25:8"}],"id":6710,"name":"ExpressionStatement","src":"6216:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6711,"name":"Identifier","src":"6255:6:8"}],"id":6712,"name":"UnaryOperation","src":"6255:8:8"}],"id":6713,"name":"ExpressionStatement","src":"6255:8:8"}],"id":6714,"name":"Block","src":"6175:99:8"}],"id":6715,"name":"WhileStatement","src":"6146:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"uint256","value":"othercounts"},"id":6716,"name":"Identifier","src":"6291:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6717,"name":"Identifier","src":"6305:6:8"}],"id":6718,"name":"BinaryOperation","src":"6291:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6681,"type":"uint256","value":"otherprevoff"},"id":6719,"name":"Identifier","src":"6327:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6720,"name":"Identifier","src":"6342:8:8"}],"id":6721,"name":"Assignment","src":"6327:23:8"}],"id":6722,"name":"ExpressionStatement","src":"6327:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6723,"name":"Identifier","src":"6364:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6724,"name":"Identifier","src":"6375:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6725,"name":"Identifier","src":"6384:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6726,"name":"Identifier","src":"6391:8:8"}],"id":6727,"name":"FunctionCall","src":"6375:25:8"}],"id":6728,"name":"Assignment","src":"6364:36:8"}],"id":6729,"name":"ExpressionStatement","src":"6364:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"uint256","value":"othercounts"},"id":6730,"name":"Identifier","src":"6414:11:8"}],"id":6731,"name":"UnaryOperation","src":"6414:13:8"}],"id":6732,"name":"ExpressionStatement","src":"6414:13:8"}],"id":6733,"name":"Block","src":"6313:125:8"}],"id":6734,"name":"WhileStatement","src":"6284:154:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6735,"name":"Identifier","src":"6513:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6736,"name":"Literal","src":"6522:1:8"}],"id":6737,"name":"BinaryOperation","src":"6513:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":7066,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6738,"name":"Identifier","src":"6528:4:8"}],"id":6739,"name":"MemberAccess","src":"6528:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6740,"name":"Identifier","src":"6540:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6741,"name":"Identifier","src":"6545:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6742,"name":"Identifier","src":"6552:8:8"}],"id":6743,"name":"FunctionCall","src":"6528:33:8"}],"id":6744,"name":"UnaryOperation","src":"6527:34:8"}],"id":6745,"name":"BinaryOperation","src":"6513:48:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6678,"type":"uint256","value":"prevoff"},"id":6746,"name":"Identifier","src":"6577:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6747,"name":"Identifier","src":"6587:3:8"}],"id":6748,"name":"Assignment","src":"6577:13:8"}],"id":6749,"name":"ExpressionStatement","src":"6577:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6750,"name":"Identifier","src":"6604:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6751,"name":"Identifier","src":"6610:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6752,"name":"Identifier","src":"6619:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6753,"name":"Identifier","src":"6625:3:8"}],"id":6754,"name":"FunctionCall","src":"6610:19:8"}],"id":6755,"name":"Assignment","src":"6604:25:8"}],"id":6756,"name":"ExpressionStatement","src":"6604:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6681,"type":"uint256","value":"otherprevoff"},"id":6757,"name":"Identifier","src":"6643:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6758,"name":"Identifier","src":"6658:8:8"}],"id":6759,"name":"Assignment","src":"6643:23:8"}],"id":6760,"name":"ExpressionStatement","src":"6643:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6761,"name":"Identifier","src":"6680:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6762,"name":"Identifier","src":"6691:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6763,"name":"Identifier","src":"6700:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6764,"name":"Identifier","src":"6707:8:8"}],"id":6765,"name":"FunctionCall","src":"6691:25:8"}],"id":6766,"name":"Assignment","src":"6680:36:8"}],"id":6767,"name":"ExpressionStatement","src":"6680:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6768,"name":"Identifier","src":"6730:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6769,"name":"Literal","src":"6740:1:8"}],"id":6770,"name":"Assignment","src":"6730:11:8"}],"id":6771,"name":"ExpressionStatement","src":"6730:11:8"}],"id":6772,"name":"Block","src":"6563:189:8"}],"id":6773,"name":"WhileStatement","src":"6506:246:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6774,"name":"Identifier","src":"6766:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6775,"name":"Literal","src":"6773:1:8"}],"id":6776,"name":"BinaryOperation","src":"6766:8:8"},{"children":[{"attributes":{"functionReturnParameters":6662},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6777,"name":"Literal","src":"6798:1:8"}],"id":6778,"name":"UnaryOperation","src":"6797:2:8"}],"id":6779,"name":"Return","src":"6790:9:8"}],"id":6780,"name":"Block","src":"6776:34:8"}],"id":6781,"name":"IfStatement","src":"6762:48:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6782,"name":"Identifier","src":"6822:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6783,"name":"Literal","src":"6834:1:8"}],"id":6784,"name":"BinaryOperation","src":"6822:13:8"},{"children":[{"attributes":{"functionReturnParameters":6662},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6785,"name":"Literal","src":"6858:1:8"}],"id":6786,"name":"Return","src":"6851:8:8"}],"id":6787,"name":"Block","src":"6837:33:8"}],"id":6788,"name":"IfStatement","src":"6819:51:8"},{"attributes":{"functionReturnParameters":6662},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":7006,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6789,"name":"Identifier","src":"6887:4:8"}],"id":6790,"name":"MemberAccess","src":"6887:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6678,"type":"uint256","value":"prevoff"},"id":6791,"name":"Identifier","src":"6900:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6792,"name":"Literal","src":"6910:1:8"}],"id":6793,"name":"BinaryOperation","src":"6900:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6794,"name":"Identifier","src":"6913:4:8"}],"id":6795,"name":"MemberAccess","src":"6913:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6678,"type":"uint256","value":"prevoff"},"id":6796,"name":"Identifier","src":"6928:7:8"}],"id":6797,"name":"FunctionCall","src":"6913:23:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6798,"name":"Identifier","src":"6938:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6681,"type":"uint256","value":"otherprevoff"},"id":6799,"name":"Identifier","src":"6945:12:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6800,"name":"Literal","src":"6960:1:8"}],"id":6801,"name":"BinaryOperation","src":"6945:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6802,"name":"Identifier","src":"6963:5:8"}],"id":6803,"name":"MemberAccess","src":"6963:15:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6681,"type":"uint256","value":"otherprevoff"},"id":6804,"name":"Identifier","src":"6979:12:8"}],"id":6805,"name":"FunctionCall","src":"6963:29:8"}],"id":6806,"name":"FunctionCall","src":"6887:106:8"}],"id":6807,"name":"Return","src":"6880:113:8"}],"id":6808,"name":"Block","src":"5793:1207:8"}],"id":6809,"name":"FunctionDefinition","src":"5704:1296:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":6828,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6810,"name":"ElementaryTypeName","src":"7024:5:8"}],"id":6811,"name":"VariableDeclaration","src":"7024:17:8"},{"attributes":{"constant":false,"name":"off","scope":6828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6812,"name":"ElementaryTypeName","src":"7043:4:8"}],"id":6813,"name":"VariableDeclaration","src":"7043:8:8"}],"id":6814,"name":"ParameterList","src":"7023:29:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6815,"name":"ElementaryTypeName","src":"7075:4:8"}],"id":6816,"name":"VariableDeclaration","src":"7075:4:8"}],"id":6817,"name":"ParameterList","src":"7074:6:8"},{"children":[{"attributes":{"functionReturnParameters":6817},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6813,"type":"uint256","value":"off"},"id":6818,"name":"Identifier","src":"7098:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6819,"name":"Literal","src":"7104:1:8"}],"id":6820,"name":"BinaryOperation","src":"7098:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6811,"type":"bytes memory","value":"body"},"id":6821,"name":"Identifier","src":"7108:4:8"}],"id":6822,"name":"MemberAccess","src":"7108:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6813,"type":"uint256","value":"off"},"id":6823,"name":"Identifier","src":"7123:3:8"}],"id":6824,"name":"FunctionCall","src":"7108:19:8"}],"id":6825,"name":"BinaryOperation","src":"7098:29:8"}],"id":6826,"name":"Return","src":"7091:36:8"}],"id":6827,"name":"Block","src":"7081:53:8"}],"id":6828,"name":"FunctionDefinition","src":"7006:128:8"}],"id":6829,"name":"ContractDefinition","src":"150:6986:8"}],"id":6830,"name":"SourceUnit","src":"0:7137:8"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[6211]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6144,"name":"PragmaDirective","src":"0:23:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6211],"name":"ResolverBase","scope":6212},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":6211,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6145,"name":"ElementaryTypeName","src":"53:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":6146,"name":"Literal","src":"97:10:9"}],"id":6147,"name":"VariableDeclaration","src":"53:54:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6211,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6159,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6148,"name":"ElementaryTypeName","src":"141:6:9"}],"id":6149,"name":"VariableDeclaration","src":"141:18:9"}],"id":6150,"name":"ParameterList","src":"140:20:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":6159,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6151,"name":"ElementaryTypeName","src":"181:4:9"}],"id":6152,"name":"VariableDeclaration","src":"181:4:9"}],"id":6153,"name":"ParameterList","src":"180:6:9"},{"children":[{"attributes":{"functionReturnParameters":6153},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6149,"type":"bytes4","value":"interfaceID"},"id":6154,"name":"Identifier","src":"204:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6147,"type":"bytes4","value":"INTERFACE_META_ID"},"id":6155,"name":"Identifier","src":"219:17:9"}],"id":6156,"name":"BinaryOperation","src":"204:32:9"}],"id":6157,"name":"Return","src":"197:39:9"}],"id":6158,"name":"Block","src":"187:56:9"}],"id":6159,"name":"FunctionDefinition","src":"114:129:9"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":6211,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6166,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6160,"name":"ElementaryTypeName","src":"271:7:9"}],"id":6161,"name":"VariableDeclaration","src":"271:12:9"}],"id":6162,"name":"ParameterList","src":"270:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":6166,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6163,"name":"ElementaryTypeName","src":"307:4:9"}],"id":6164,"name":"VariableDeclaration","src":"307:4:9"}],"id":6165,"name":"ParameterList","src":"306:6:9"}],"id":6166,"name":"FunctionDefinition","src":"249:64:9"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6178,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6167,"name":"ElementaryTypeName","src":"339:7:9"}],"id":6168,"name":"VariableDeclaration","src":"339:12:9"}],"id":6169,"name":"ParameterList","src":"338:14:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":6170,"name":"Identifier","src":"363:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6166,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":6171,"name":"Identifier","src":"371:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6168,"type":"bytes32","value":"node"},"id":6172,"name":"Identifier","src":"384:4:9"}],"id":6173,"name":"FunctionCall","src":"371:18:9"}],"id":6174,"name":"FunctionCall","src":"363:27:9"}],"id":6175,"name":"ExpressionStatement","src":"363:27:9"},{"id":6176,"name":"PlaceholderStatement","src":"400:1:9"}],"id":6177,"name":"Block","src":"353:55:9"}],"id":6178,"name":"ModifierDefinition","src":"319:89:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":6211,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":6194,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6179,"name":"ElementaryTypeName","src":"438:5:9"}],"id":6180,"name":"VariableDeclaration","src":"438:14:9"}],"id":6181,"name":"ParameterList","src":"437:16:9"},{"children":[{"attributes":{"constant":false,"name":"a","scope":6194,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":6182,"name":"ElementaryTypeName","src":"476:15:9"}],"id":6183,"name":"VariableDeclaration","src":"476:17:9"}],"id":6184,"name":"ParameterList","src":"475:19:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":6185,"name":"Identifier","src":"505:7:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6180,"type":"bytes memory","value":"b"},"id":6186,"name":"Identifier","src":"513:1:9"}],"id":6187,"name":"MemberAccess","src":"513:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":6188,"name":"Literal","src":"525:2:9"}],"id":6189,"name":"BinaryOperation","src":"513:14:9"}],"id":6190,"name":"FunctionCall","src":"505:23:9"}],"id":6191,"name":"ExpressionStatement","src":"505:23:9"},{"attributes":{"externalReferences":[{"a":{"declaration":6183,"isOffset":false,"isSlot":false,"src":"561:1:9","valueSize":1}},{"b":{"declaration":6180,"isOffset":false,"isSlot":false,"src":"580:1:9","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":6192,"name":"InlineAssembly","src":"538:74:9"}],"id":6193,"name":"Block","src":"495:123:9"}],"id":6194,"name":"FunctionDefinition","src":"414:204:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":6211,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":6210,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6195,"name":"ElementaryTypeName","src":"648:7:9"}],"id":6196,"name":"VariableDeclaration","src":"648:9:9"}],"id":6197,"name":"ParameterList","src":"647:11:9"},{"children":[{"attributes":{"constant":false,"name":"b","scope":6210,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6198,"name":"ElementaryTypeName","src":"681:5:9"}],"id":6199,"name":"VariableDeclaration","src":"681:14:9"}],"id":6200,"name":"ParameterList","src":"680:16:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6199,"type":"bytes memory","value":"b"},"id":6201,"name":"Identifier","src":"707:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6202,"name":"ElementaryTypeName","src":"715:5:9"}],"id":6203,"name":"NewExpression","src":"711:9:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":6204,"name":"Literal","src":"721:2:9"}],"id":6205,"name":"FunctionCall","src":"711:13:9"}],"id":6206,"name":"Assignment","src":"707:17:9"}],"id":6207,"name":"ExpressionStatement","src":"707:17:9"},{"attributes":{"externalReferences":[{"b":{"declaration":6199,"isOffset":false,"isSlot":false,"src":"768:1:9","valueSize":1}},{"a":{"declaration":6196,"isOffset":false,"isSlot":false,"src":"780:1:9","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":6208,"name":"InlineAssembly","src":"734:73:9"}],"id":6209,"name":"Block","src":"697:116:9"}],"id":6210,"name":"FunctionDefinition","src":"624:189:9"}],"id":6211,"name":"ContractDefinition","src":"25:790:9"}],"id":6212,"name":"SourceUnit","src":"0:816:9"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[4991]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4857,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4992,"symbolAliases":[null],"unitAlias":""},"id":4858,"name":"ImportDirective","src":"25:29:10"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4991,6211],"name":"ABIResolver","scope":4992},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":4859,"name":"UserDefinedTypeName","src":"80:12:10"}],"id":4860,"name":"InheritanceSpecifier","src":"80:12:10"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":4991,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4861,"name":"ElementaryTypeName","src":"99:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":4862,"name":"Literal","src":"142:10:10"}],"id":4863,"name":"VariableDeclaration","src":"99:53:10"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4869,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4864,"name":"ElementaryTypeName","src":"176:7:10"}],"id":4865,"name":"VariableDeclaration","src":"176:20:10"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":4869,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4866,"name":"ElementaryTypeName","src":"198:7:10"}],"id":4867,"name":"VariableDeclaration","src":"198:27:10"}],"id":4868,"name":"ParameterList","src":"175:51:10"}],"id":4869,"name":"EventDefinition","src":"159:68:10"},{"attributes":{"constant":false,"name":"abis","scope":4991,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4870,"name":"ElementaryTypeName","src":"241:7:10"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4871,"name":"ElementaryTypeName","src":"258:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":4872,"name":"ElementaryTypeName","src":"267:5:10"}],"id":4873,"name":"Mapping","src":"250:23:10"}],"id":4874,"name":"Mapping","src":"233:41:10"}],"id":4875,"name":"VariableDeclaration","src":"233:46:10"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":4991,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4913,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4876,"name":"ElementaryTypeName","src":"598:7:10"}],"id":4877,"name":"VariableDeclaration","src":"598:12:10"},{"attributes":{"constant":false,"name":"contentType","scope":4913,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4878,"name":"ElementaryTypeName","src":"612:7:10"}],"id":4879,"name":"VariableDeclaration","src":"612:19:10"},{"attributes":{"constant":false,"name":"data","scope":4913,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4880,"name":"ElementaryTypeName","src":"633:5:10"}],"id":4881,"name":"VariableDeclaration","src":"633:19:10"}],"id":4882,"name":"ParameterList","src":"597:56:10"},{"attributes":{"parameters":[null]},"children":[],"id":4886,"name":"ParameterList","src":"680:0:10"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":4883,"name":"Identifier","src":"663:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4877,"type":"bytes32","value":"node"},"id":4884,"name":"Identifier","src":"674:4:10"}],"id":4885,"name":"ModifierInvocation","src":"663:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":4887,"name":"Identifier","src":"735:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4879,"type":"uint256","value":"contentType"},"id":4888,"name":"Identifier","src":"745:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4889,"name":"Literal","src":"759:1:10"}],"id":4890,"name":"BinaryOperation","src":"745:15:10"}],"id":4891,"name":"TupleExpression","src":"744:17:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4879,"type":"uint256","value":"contentType"},"id":4892,"name":"Identifier","src":"764:11:10"}],"id":4893,"name":"BinaryOperation","src":"744:31:10"}],"id":4894,"name":"TupleExpression","src":"743:33:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4895,"name":"Literal","src":"780:1:10"}],"id":4896,"name":"BinaryOperation","src":"743:38:10"}],"id":4897,"name":"FunctionCall","src":"735:47:10"}],"id":4898,"name":"ExpressionStatement","src":"735:47:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4875,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4899,"name":"Identifier","src":"793:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4877,"type":"bytes32","value":"node"},"id":4900,"name":"Identifier","src":"798:4:10"}],"id":4902,"name":"IndexAccess","src":"793:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4879,"type":"uint256","value":"contentType"},"id":4901,"name":"Identifier","src":"804:11:10"}],"id":4903,"name":"IndexAccess","src":"793:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4881,"type":"bytes calldata","value":"data"},"id":4904,"name":"Identifier","src":"819:4:10"}],"id":4905,"name":"Assignment","src":"793:30:10"}],"id":4906,"name":"ExpressionStatement","src":"793:30:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4869,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":4907,"name":"Identifier","src":"838:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4877,"type":"bytes32","value":"node"},"id":4908,"name":"Identifier","src":"849:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4879,"type":"uint256","value":"contentType"},"id":4909,"name":"Identifier","src":"855:11:10"}],"id":4910,"name":"FunctionCall","src":"838:29:10"}],"id":4911,"name":"EmitStatement","src":"833:34:10"}],"id":4912,"name":"Block","src":"680:194:10"}],"id":4913,"name":"FunctionDefinition","src":"582:292:10"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":4991,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4973,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4914,"name":"ElementaryTypeName","src":"1208:7:10"}],"id":4915,"name":"VariableDeclaration","src":"1208:12:10"},{"attributes":{"constant":false,"name":"contentTypes","scope":4973,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4916,"name":"ElementaryTypeName","src":"1222:7:10"}],"id":4917,"name":"VariableDeclaration","src":"1222:20:10"}],"id":4918,"name":"ParameterList","src":"1207:36:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":4973,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4919,"name":"ElementaryTypeName","src":"1267:7:10"}],"id":4920,"name":"VariableDeclaration","src":"1267:7:10"},{"attributes":{"constant":false,"name":"","scope":4973,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4921,"name":"ElementaryTypeName","src":"1276:5:10"}],"id":4922,"name":"VariableDeclaration","src":"1276:12:10"}],"id":4923,"name":"ParameterList","src":"1266:23:10"},{"children":[{"attributes":{"assignments":[4927]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":4972,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4924,"name":"ElementaryTypeName","src":"1308:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":4925,"name":"ElementaryTypeName","src":"1317:5:10"}],"id":4926,"name":"Mapping","src":"1300:23:10"}],"id":4927,"name":"VariableDeclaration","src":"1300:38:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4875,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4928,"name":"Identifier","src":"1341:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4915,"type":"bytes32","value":"node"},"id":4929,"name":"Identifier","src":"1346:4:10"}],"id":4930,"name":"IndexAccess","src":"1341:10:10"}],"id":4931,"name":"VariableDeclarationStatement","src":"1300:51:10"},{"children":[{"attributes":{"assignments":[4933]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":4965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4932,"name":"ElementaryTypeName","src":"1367:7:10"}],"id":4933,"name":"VariableDeclaration","src":"1367:19:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4934,"name":"Literal","src":"1389:1:10"}],"id":4935,"name":"VariableDeclarationStatement","src":"1367:23:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4936,"name":"Identifier","src":"1392:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4917,"type":"uint256","value":"contentTypes"},"id":4937,"name":"Identifier","src":"1407:12:10"}],"id":4938,"name":"BinaryOperation","src":"1392:27:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4939,"name":"Identifier","src":"1421:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4940,"name":"Literal","src":"1437:1:10"}],"id":4941,"name":"Assignment","src":"1421:17:10"}],"id":4942,"name":"ExpressionStatement","src":"1421:17:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4943,"name":"Identifier","src":"1459:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4917,"type":"uint256","value":"contentTypes"},"id":4944,"name":"Identifier","src":"1473:12:10"}],"id":4945,"name":"BinaryOperation","src":"1459:26:10"}],"id":4946,"name":"TupleExpression","src":"1458:28:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4947,"name":"Literal","src":"1490:1:10"}],"id":4948,"name":"BinaryOperation","src":"1458:33:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4927,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4949,"name":"Identifier","src":"1495:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4950,"name":"Identifier","src":"1502:11:10"}],"id":4951,"name":"IndexAccess","src":"1495:19:10"}],"id":4952,"name":"MemberAccess","src":"1495:26:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4953,"name":"Literal","src":"1524:1:10"}],"id":4954,"name":"BinaryOperation","src":"1495:30:10"}],"id":4955,"name":"BinaryOperation","src":"1458:67:10"},{"children":[{"attributes":{"functionReturnParameters":4923},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4956,"name":"Identifier","src":"1553:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4927,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4957,"name":"Identifier","src":"1566:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4958,"name":"Identifier","src":"1573:11:10"}],"id":4959,"name":"IndexAccess","src":"1566:19:10"}],"id":4960,"name":"TupleExpression","src":"1552:34:10"}],"id":4961,"name":"Return","src":"1545:41:10"}],"id":4962,"name":"Block","src":"1527:74:10"}],"id":4963,"name":"IfStatement","src":"1454:147:10"}],"id":4964,"name":"Block","src":"1440:171:10"}],"id":4965,"name":"ForStatement","src":"1362:249:10"},{"attributes":{"functionReturnParameters":4923},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4966,"name":"Literal","src":"1629:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4967,"name":"ElementaryTypeNameExpression","src":"1632:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4968,"name":"Literal","src":"1638:2:10"}],"id":4969,"name":"FunctionCall","src":"1632:9:10"}],"id":4970,"name":"TupleExpression","src":"1628:14:10"}],"id":4971,"name":"Return","src":"1621:21:10"}],"id":4972,"name":"Block","src":"1290:359:10"}],"id":4973,"name":"FunctionDefinition","src":"1195:454:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4991,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4990,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4974,"name":"ElementaryTypeName","src":"1682:6:10"}],"id":4975,"name":"VariableDeclaration","src":"1682:18:10"}],"id":4976,"name":"ParameterList","src":"1681:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":4990,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4977,"name":"ElementaryTypeName","src":"1722:4:10"}],"id":4978,"name":"VariableDeclaration","src":"1722:4:10"}],"id":4979,"name":"ParameterList","src":"1721:6:10"},{"children":[{"attributes":{"functionReturnParameters":4979},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4975,"type":"bytes4","value":"interfaceID"},"id":4980,"name":"Identifier","src":"1745:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4863,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":4981,"name":"Identifier","src":"1760:16:10"}],"id":4982,"name":"BinaryOperation","src":"1745:31:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7602,"type":"contract super ABIResolver","value":"super"},"id":4983,"name":"Identifier","src":"1780:5:10"}],"id":4984,"name":"MemberAccess","src":"1780:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4975,"type":"bytes4","value":"interfaceID"},"id":4985,"name":"Identifier","src":"1804:11:10"}],"id":4986,"name":"FunctionCall","src":"1780:36:10"}],"id":4987,"name":"BinaryOperation","src":"1745:71:10"}],"id":4988,"name":"Return","src":"1738:78:10"}],"id":4989,"name":"Block","src":"1728:95:10"}],"id":4990,"name":"FunctionDefinition","src":"1655:168:10"}],"id":4991,"name":"ContractDefinition","src":"56:1769:10"}],"id":4992,"name":"SourceUnit","src":"0:1826:10"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[5150]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4993,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5151,"symbolAliases":[null],"unitAlias":""},"id":4994,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5150,6211],"name":"AddrResolver","scope":5151},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":4995,"name":"UserDefinedTypeName","src":"81:12:11"}],"id":4996,"name":"InheritanceSpecifier","src":"81:12:11"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":5150,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4997,"name":"ElementaryTypeName","src":"100:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":4998,"name":"Literal","src":"144:10:11"}],"id":4999,"name":"VariableDeclaration","src":"100:54:11"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":5150,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5000,"name":"ElementaryTypeName","src":"160:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":5001,"name":"Literal","src":"207:10:11"}],"id":5002,"name":"VariableDeclaration","src":"160:57:11"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":5150,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5003,"name":"ElementaryTypeName","src":"223:4:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":5004,"name":"Literal","src":"261:2:11"}],"id":5005,"name":"VariableDeclaration","src":"223:40:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5011,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5006,"name":"ElementaryTypeName","src":"288:7:11"}],"id":5007,"name":"VariableDeclaration","src":"288:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":5011,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5008,"name":"ElementaryTypeName","src":"310:7:11"}],"id":5009,"name":"VariableDeclaration","src":"310:9:11"}],"id":5010,"name":"ParameterList","src":"287:33:11"}],"id":5011,"name":"EventDefinition","src":"270:51:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5019,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5012,"name":"ElementaryTypeName","src":"347:7:11"}],"id":5013,"name":"VariableDeclaration","src":"347:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":5019,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5014,"name":"ElementaryTypeName","src":"369:4:11"}],"id":5015,"name":"VariableDeclaration","src":"369:13:11"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":5019,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5016,"name":"ElementaryTypeName","src":"384:5:11"}],"id":5017,"name":"VariableDeclaration","src":"384:16:11"}],"id":5018,"name":"ParameterList","src":"346:55:11"}],"id":5019,"name":"EventDefinition","src":"326:76:11"},{"attributes":{"constant":false,"name":"_addresses","scope":5150,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5020,"name":"ElementaryTypeName","src":"416:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5021,"name":"ElementaryTypeName","src":"433:4:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":5022,"name":"ElementaryTypeName","src":"439:5:11"}],"id":5023,"name":"Mapping","src":"425:20:11"}],"id":5024,"name":"Mapping","src":"408:38:11"}],"id":5025,"name":"VariableDeclaration","src":"408:49:11"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":5150,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5044,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5026,"name":"ElementaryTypeName","src":"698:7:11"}],"id":5027,"name":"VariableDeclaration","src":"698:12:11"},{"attributes":{"constant":false,"name":"a","scope":5044,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5028,"name":"ElementaryTypeName","src":"712:7:11"}],"id":5029,"name":"VariableDeclaration","src":"712:9:11"}],"id":5030,"name":"ParameterList","src":"697:25:11"},{"attributes":{"parameters":[null]},"children":[],"id":5034,"name":"ParameterList","src":"749:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5031,"name":"Identifier","src":"732:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5027,"type":"bytes32","value":"node"},"id":5032,"name":"Identifier","src":"743:4:11"}],"id":5033,"name":"ModifierInvocation","src":"732:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5112,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":5035,"name":"Identifier","src":"759:15:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5027,"type":"bytes32","value":"node"},"id":5036,"name":"Identifier","src":"775:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5005,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5037,"name":"Identifier","src":"781:13:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6210,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":5038,"name":"Identifier","src":"796:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5029,"type":"address","value":"a"},"id":5039,"name":"Identifier","src":"811:1:11"}],"id":5040,"name":"FunctionCall","src":"796:17:11"}],"id":5041,"name":"FunctionCall","src":"759:55:11"}],"id":5042,"name":"ExpressionStatement","src":"759:55:11"}],"id":5043,"name":"Block","src":"749:72:11"}],"id":5044,"name":"FunctionDefinition","src":"681:140:11"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5150,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5073,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5045,"name":"ElementaryTypeName","src":"994:7:11"}],"id":5046,"name":"VariableDeclaration","src":"994:12:11"}],"id":5047,"name":"ParameterList","src":"993:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":5073,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5048,"name":"ElementaryTypeName","src":"1029:15:11"}],"id":5049,"name":"VariableDeclaration","src":"1029:15:11"}],"id":5050,"name":"ParameterList","src":"1028:17:11"},{"children":[{"attributes":{"assignments":[5052]},"children":[{"attributes":{"constant":false,"name":"a","scope":5072,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5051,"name":"ElementaryTypeName","src":"1056:5:11"}],"id":5052,"name":"VariableDeclaration","src":"1056:14:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[5073,5128],"referencedDeclaration":5128,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":5053,"name":"Identifier","src":"1073:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5046,"type":"bytes32","value":"node"},"id":5054,"name":"Identifier","src":"1078:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5005,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5055,"name":"Identifier","src":"1084:13:11"}],"id":5056,"name":"FunctionCall","src":"1073:25:11"}],"id":5057,"name":"VariableDeclarationStatement","src":"1056:42:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5052,"type":"bytes memory","value":"a"},"id":5058,"name":"Identifier","src":"1111:1:11"}],"id":5059,"name":"MemberAccess","src":"1111:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5060,"name":"Literal","src":"1123:1:11"}],"id":5061,"name":"BinaryOperation","src":"1111:13:11"},{"children":[{"attributes":{"functionReturnParameters":5050},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5062,"name":"ElementaryTypeNameExpression","src":"1147:7:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5063,"name":"Literal","src":"1155:1:11"}],"id":5064,"name":"FunctionCall","src":"1147:10:11"}],"id":5065,"name":"Return","src":"1140:17:11"}],"id":5066,"name":"Block","src":"1126:42:11"}],"id":5067,"name":"IfStatement","src":"1108:60:11"},{"attributes":{"functionReturnParameters":5050},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6194,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5068,"name":"Identifier","src":"1184:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5052,"type":"bytes memory","value":"a"},"id":5069,"name":"Identifier","src":"1199:1:11"}],"id":5070,"name":"FunctionCall","src":"1184:17:11"}],"id":5071,"name":"Return","src":"1177:24:11"}],"id":5072,"name":"Block","src":"1046:162:11"}],"id":5073,"name":"FunctionDefinition","src":"980:228:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":5150,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5112,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5074,"name":"ElementaryTypeName","src":"1239:7:11"}],"id":5075,"name":"VariableDeclaration","src":"1239:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":5112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5076,"name":"ElementaryTypeName","src":"1253:4:11"}],"id":5077,"name":"VariableDeclaration","src":"1253:13:11"},{"attributes":{"constant":false,"name":"a","scope":5112,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5078,"name":"ElementaryTypeName","src":"1268:5:11"}],"id":5079,"name":"VariableDeclaration","src":"1268:14:11"}],"id":5080,"name":"ParameterList","src":"1238:45:11"},{"attributes":{"parameters":[null]},"children":[],"id":5084,"name":"ParameterList","src":"1308:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5081,"name":"Identifier","src":"1291:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bytes32","value":"node"},"id":5082,"name":"Identifier","src":"1302:4:11"}],"id":5083,"name":"ModifierInvocation","src":"1291:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5019,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":5085,"name":"Identifier","src":"1323:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bytes32","value":"node"},"id":5086,"name":"Identifier","src":"1338:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5077,"type":"uint256","value":"coinType"},"id":5087,"name":"Identifier","src":"1344:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"bytes memory","value":"a"},"id":5088,"name":"Identifier","src":"1354:1:11"}],"id":5089,"name":"FunctionCall","src":"1323:33:11"}],"id":5090,"name":"EmitStatement","src":"1318:38:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5077,"type":"uint256","value":"coinType"},"id":5091,"name":"Identifier","src":"1369:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5005,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5092,"name":"Identifier","src":"1381:13:11"}],"id":5093,"name":"BinaryOperation","src":"1369:25:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5011,"type":"function (bytes32,address)","value":"AddrChanged"},"id":5094,"name":"Identifier","src":"1415:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bytes32","value":"node"},"id":5095,"name":"Identifier","src":"1427:4:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6194,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5096,"name":"Identifier","src":"1433:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"bytes memory","value":"a"},"id":5097,"name":"Identifier","src":"1448:1:11"}],"id":5098,"name":"FunctionCall","src":"1433:17:11"}],"id":5099,"name":"FunctionCall","src":"1415:36:11"}],"id":5100,"name":"EmitStatement","src":"1410:41:11"}],"id":5101,"name":"Block","src":"1396:66:11"}],"id":5102,"name":"IfStatement","src":"1366:96:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5025,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5103,"name":"Identifier","src":"1471:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bytes32","value":"node"},"id":5104,"name":"Identifier","src":"1482:4:11"}],"id":5106,"name":"IndexAccess","src":"1471:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5077,"type":"uint256","value":"coinType"},"id":5105,"name":"Identifier","src":"1488:8:11"}],"id":5107,"name":"IndexAccess","src":"1471:26:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"bytes memory","value":"a"},"id":5108,"name":"Identifier","src":"1500:1:11"}],"id":5109,"name":"Assignment","src":"1471:30:11"}],"id":5110,"name":"ExpressionStatement","src":"1471:30:11"}],"id":5111,"name":"Block","src":"1308:200:11"}],"id":5112,"name":"FunctionDefinition","src":"1214:294:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5150,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5128,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5113,"name":"ElementaryTypeName","src":"1528:7:11"}],"id":5114,"name":"VariableDeclaration","src":"1528:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":5128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5115,"name":"ElementaryTypeName","src":"1542:4:11"}],"id":5116,"name":"VariableDeclaration","src":"1542:13:11"}],"id":5117,"name":"ParameterList","src":"1527:29:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":5128,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5118,"name":"ElementaryTypeName","src":"1577:5:11"}],"id":5119,"name":"VariableDeclaration","src":"1577:12:11"}],"id":5120,"name":"ParameterList","src":"1576:14:11"},{"children":[{"attributes":{"functionReturnParameters":5120},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5025,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5121,"name":"Identifier","src":"1608:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5114,"type":"bytes32","value":"node"},"id":5122,"name":"Identifier","src":"1619:4:11"}],"id":5123,"name":"IndexAccess","src":"1608:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5116,"type":"uint256","value":"coinType"},"id":5124,"name":"Identifier","src":"1625:8:11"}],"id":5125,"name":"IndexAccess","src":"1608:26:11"}],"id":5126,"name":"Return","src":"1601:33:11"}],"id":5127,"name":"Block","src":"1591:50:11"}],"id":5128,"name":"FunctionDefinition","src":"1514:127:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5150,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5149,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5129,"name":"ElementaryTypeName","src":"1674:6:11"}],"id":5130,"name":"VariableDeclaration","src":"1674:18:11"}],"id":5131,"name":"ParameterList","src":"1673:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":5149,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5132,"name":"ElementaryTypeName","src":"1714:4:11"}],"id":5133,"name":"VariableDeclaration","src":"1714:4:11"}],"id":5134,"name":"ParameterList","src":"1713:6:11"},{"children":[{"attributes":{"functionReturnParameters":5134},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5130,"type":"bytes4","value":"interfaceID"},"id":5135,"name":"Identifier","src":"1737:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4999,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":5136,"name":"Identifier","src":"1752:17:11"}],"id":5137,"name":"BinaryOperation","src":"1737:32:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5130,"type":"bytes4","value":"interfaceID"},"id":5138,"name":"Identifier","src":"1773:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5002,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":5139,"name":"Identifier","src":"1788:20:11"}],"id":5140,"name":"BinaryOperation","src":"1773:35:11"}],"id":5141,"name":"BinaryOperation","src":"1737:71:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7604,"type":"contract super AddrResolver","value":"super"},"id":5142,"name":"Identifier","src":"1812:5:11"}],"id":5143,"name":"MemberAccess","src":"1812:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5130,"type":"bytes4","value":"interfaceID"},"id":5144,"name":"Identifier","src":"1836:11:11"}],"id":5145,"name":"FunctionCall","src":"1812:36:11"}],"id":5146,"name":"BinaryOperation","src":"1737:111:11"}],"id":5147,"name":"Return","src":"1730:118:11"}],"id":5148,"name":"Block","src":"1720:135:11"}],"id":5149,"name":"FunctionDefinition","src":"1647:208:11"}],"id":5150,"name":"ContractDefinition","src":"56:1801:11"}],"id":5151,"name":"SourceUnit","src":"0:1857:11"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[5220]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5152,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5221,"symbolAliases":[null],"unitAlias":""},"id":5153,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5220,6211],"name":"ContentHashResolver","scope":5221},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5154,"name":"UserDefinedTypeName","src":"88:12:12"}],"id":5155,"name":"InheritanceSpecifier","src":"88:12:12"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":5220,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5156,"name":"ElementaryTypeName","src":"107:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":5157,"name":"Literal","src":"159:10:12"}],"id":5158,"name":"VariableDeclaration","src":"107:62:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5164,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5159,"name":"ElementaryTypeName","src":"201:7:12"}],"id":5160,"name":"VariableDeclaration","src":"201:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":5164,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5161,"name":"ElementaryTypeName","src":"223:5:12"}],"id":5162,"name":"VariableDeclaration","src":"223:10:12"}],"id":5163,"name":"ParameterList","src":"200:34:12"}],"id":5164,"name":"EventDefinition","src":"176:59:12"},{"attributes":{"constant":false,"name":"hashes","scope":5220,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5165,"name":"ElementaryTypeName","src":"249:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5166,"name":"ElementaryTypeName","src":"258:5:12"}],"id":5167,"name":"Mapping","src":"241:23:12"}],"id":5168,"name":"VariableDeclaration","src":"241:30:12"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":5220,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5190,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5169,"name":"ElementaryTypeName","src":"529:7:12"}],"id":5170,"name":"VariableDeclaration","src":"529:12:12"},{"attributes":{"constant":false,"name":"hash","scope":5190,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5171,"name":"ElementaryTypeName","src":"543:5:12"}],"id":5172,"name":"VariableDeclaration","src":"543:19:12"}],"id":5173,"name":"ParameterList","src":"528:35:12"},{"attributes":{"parameters":[null]},"children":[],"id":5177,"name":"ParameterList","src":"590:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5174,"name":"Identifier","src":"573:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5170,"type":"bytes32","value":"node"},"id":5175,"name":"Identifier","src":"584:4:12"}],"id":5176,"name":"ModifierInvocation","src":"573:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5178,"name":"Identifier","src":"600:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5170,"type":"bytes32","value":"node"},"id":5179,"name":"Identifier","src":"607:4:12"}],"id":5180,"name":"IndexAccess","src":"600:12:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5172,"type":"bytes calldata","value":"hash"},"id":5181,"name":"Identifier","src":"615:4:12"}],"id":5182,"name":"Assignment","src":"600:19:12"}],"id":5183,"name":"ExpressionStatement","src":"600:19:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5164,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":5184,"name":"Identifier","src":"634:18:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5170,"type":"bytes32","value":"node"},"id":5185,"name":"Identifier","src":"653:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5172,"type":"bytes calldata","value":"hash"},"id":5186,"name":"Identifier","src":"659:4:12"}],"id":5187,"name":"FunctionCall","src":"634:30:12"}],"id":5188,"name":"EmitStatement","src":"629:35:12"}],"id":5189,"name":"Block","src":"590:81:12"}],"id":5190,"name":"FunctionDefinition","src":"505:166:12"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":5220,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5202,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5191,"name":"ElementaryTypeName","src":"859:7:12"}],"id":5192,"name":"VariableDeclaration","src":"859:12:12"}],"id":5193,"name":"ParameterList","src":"858:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5202,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5194,"name":"ElementaryTypeName","src":"896:5:12"}],"id":5195,"name":"VariableDeclaration","src":"896:12:12"}],"id":5196,"name":"ParameterList","src":"895:14:12"},{"children":[{"attributes":{"functionReturnParameters":5196},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5197,"name":"Identifier","src":"927:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5192,"type":"bytes32","value":"node"},"id":5198,"name":"Identifier","src":"934:4:12"}],"id":5199,"name":"IndexAccess","src":"927:12:12"}],"id":5200,"name":"Return","src":"920:19:12"}],"id":5201,"name":"Block","src":"910:36:12"}],"id":5202,"name":"FunctionDefinition","src":"838:108:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5220,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5219,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5203,"name":"ElementaryTypeName","src":"979:6:12"}],"id":5204,"name":"VariableDeclaration","src":"979:18:12"}],"id":5205,"name":"ParameterList","src":"978:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5219,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5206,"name":"ElementaryTypeName","src":"1019:4:12"}],"id":5207,"name":"VariableDeclaration","src":"1019:4:12"}],"id":5208,"name":"ParameterList","src":"1018:6:12"},{"children":[{"attributes":{"functionReturnParameters":5208},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5204,"type":"bytes4","value":"interfaceID"},"id":5209,"name":"Identifier","src":"1042:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5158,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":5210,"name":"Identifier","src":"1057:25:12"}],"id":5211,"name":"BinaryOperation","src":"1042:40:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"contract super ContentHashResolver","value":"super"},"id":5212,"name":"Identifier","src":"1086:5:12"}],"id":5213,"name":"MemberAccess","src":"1086:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5204,"type":"bytes4","value":"interfaceID"},"id":5214,"name":"Identifier","src":"1110:11:12"}],"id":5215,"name":"FunctionCall","src":"1086:36:12"}],"id":5216,"name":"BinaryOperation","src":"1042:80:12"}],"id":5217,"name":"Return","src":"1035:87:12"}],"id":5218,"name":"Block","src":"1025:104:12"}],"id":5219,"name":"FunctionDefinition","src":"952:177:12"}],"id":5220,"name":"ContractDefinition","src":"56:1075:12"}],"id":5221,"name":"SourceUnit","src":"0:1132:12"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[5711]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5222,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5712,"symbolAliases":[null],"unitAlias":""},"id":5223,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"SourceUnit":6830,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":5712,"symbolAliases":[null],"unitAlias":""},"id":5224,"name":"ImportDirective","src":"55:24:13"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5711,6211],"name":"DNSResolver","scope":5712},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5225,"name":"UserDefinedTypeName","src":"105:12:13"}],"id":5226,"name":"InheritanceSpecifier","src":"105:12:13"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":6829,"type":"library RRUtils"},"id":5227,"name":"UserDefinedTypeName","src":"130:7:13"}],"id":5228,"name":"UsingForDirective","src":"124:20:13"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7550,"type":"library ENSBytesUtils"},"id":5229,"name":"UserDefinedTypeName","src":"155:13:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5230,"name":"ElementaryTypeName","src":"173:5:13"}],"id":5231,"name":"UsingForDirective","src":"149:30:13"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":5711,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5232,"name":"ElementaryTypeName","src":"185:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":5233,"name":"Literal","src":"235:10:13"}],"id":5234,"name":"VariableDeclaration","src":"185:60:13"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":5711,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5235,"name":"ElementaryTypeName","src":"251:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":5236,"name":"Literal","src":"299:10:13"}],"id":5237,"name":"VariableDeclaration","src":"251:58:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5247,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5238,"name":"ElementaryTypeName","src":"430:7:13"}],"id":5239,"name":"VariableDeclaration","src":"430:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5247,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5240,"name":"ElementaryTypeName","src":"452:5:13"}],"id":5241,"name":"VariableDeclaration","src":"452:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5247,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5242,"name":"ElementaryTypeName","src":"464:6:13"}],"id":5243,"name":"VariableDeclaration","src":"464:15:13"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":5247,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5244,"name":"ElementaryTypeName","src":"481:5:13"}],"id":5245,"name":"VariableDeclaration","src":"481:12:13"}],"id":5246,"name":"ParameterList","src":"429:65:13"}],"id":5247,"name":"EventDefinition","src":"407:88:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5255,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5248,"name":"ElementaryTypeName","src":"614:7:13"}],"id":5249,"name":"VariableDeclaration","src":"614:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5255,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5250,"name":"ElementaryTypeName","src":"636:5:13"}],"id":5251,"name":"VariableDeclaration","src":"636:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5255,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5252,"name":"ElementaryTypeName","src":"648:6:13"}],"id":5253,"name":"VariableDeclaration","src":"648:15:13"}],"id":5254,"name":"ParameterList","src":"613:51:13"}],"id":5255,"name":"EventDefinition","src":"591:74:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5259,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5256,"name":"ElementaryTypeName","src":"777:7:13"}],"id":5257,"name":"VariableDeclaration","src":"777:20:13"}],"id":5258,"name":"ParameterList","src":"776:22:13"}],"id":5259,"name":"EventDefinition","src":"756:43:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5267,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5260,"name":"ElementaryTypeName","src":"913:7:13"}],"id":5261,"name":"VariableDeclaration","src":"913:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":5267,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5262,"name":"ElementaryTypeName","src":"935:5:13"}],"id":5263,"name":"VariableDeclaration","src":"935:18:13"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":5267,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5264,"name":"ElementaryTypeName","src":"955:5:13"}],"id":5265,"name":"VariableDeclaration","src":"955:14:13"}],"id":5266,"name":"ParameterList","src":"912:58:13"}],"id":5267,"name":"EventDefinition","src":"888:83:13"},{"attributes":{"constant":false,"name":"zonehashes","scope":5711,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5268,"name":"ElementaryTypeName","src":"1181:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5269,"name":"ElementaryTypeName","src":"1190:5:13"}],"id":5270,"name":"Mapping","src":"1173:23:13"}],"id":5271,"name":"VariableDeclaration","src":"1173:42:13"},{"attributes":{"constant":false,"name":"versions","scope":5711,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5272,"name":"ElementaryTypeName","src":"1433:7:13"},{"attributes":{"name":"uint256","type":"uint256"},"id":5273,"name":"ElementaryTypeName","src":"1442:7:13"}],"id":5274,"name":"Mapping","src":"1425:25:13"}],"id":5275,"name":"VariableDeclaration","src":"1425:42:13"},{"attributes":{"constant":false,"name":"records","scope":5711,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5276,"name":"ElementaryTypeName","src":"1589:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5277,"name":"ElementaryTypeName","src":"1606:7:13"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5278,"name":"ElementaryTypeName","src":"1623:7:13"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5279,"name":"ElementaryTypeName","src":"1640:6:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5280,"name":"ElementaryTypeName","src":"1648:5:13"}],"id":5281,"name":"Mapping","src":"1632:22:13"}],"id":5282,"name":"Mapping","src":"1615:40:13"}],"id":5283,"name":"Mapping","src":"1598:58:13"}],"id":5284,"name":"Mapping","src":"1581:76:13"}],"id":5285,"name":"VariableDeclaration","src":"1581:92:13"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":5711,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5286,"name":"ElementaryTypeName","src":"1853:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5287,"name":"ElementaryTypeName","src":"1870:7:13"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5288,"name":"ElementaryTypeName","src":"1887:7:13"},{"attributes":{"name":"uint16","type":"uint16"},"id":5289,"name":"ElementaryTypeName","src":"1896:6:13"}],"id":5290,"name":"Mapping","src":"1879:24:13"}],"id":5291,"name":"Mapping","src":"1862:42:13"}],"id":5292,"name":"Mapping","src":"1845:60:13"}],"id":5293,"name":"VariableDeclaration","src":"1845:85:13"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":5711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5458,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5294,"name":"ElementaryTypeName","src":"2877:7:13"}],"id":5295,"name":"VariableDeclaration","src":"2877:12:13"},{"attributes":{"constant":false,"name":"data","scope":5458,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5296,"name":"ElementaryTypeName","src":"2891:5:13"}],"id":5297,"name":"VariableDeclaration","src":"2891:19:13"}],"id":5298,"name":"ParameterList","src":"2876:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":5302,"name":"ParameterList","src":"2938:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5299,"name":"Identifier","src":"2921:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5295,"type":"bytes32","value":"node"},"id":5300,"name":"Identifier","src":"2932:4:13"}],"id":5301,"name":"ModifierInvocation","src":"2921:16:13"},{"children":[{"attributes":{"assignments":[5304]},"children":[{"attributes":{"constant":false,"name":"resource","scope":5457,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5303,"name":"ElementaryTypeName","src":"2948:6:13"}],"id":5304,"name":"VariableDeclaration","src":"2948:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5305,"name":"Literal","src":"2966:1:13"}],"id":5306,"name":"VariableDeclarationStatement","src":"2948:19:13"},{"attributes":{"assignments":[5308]},"children":[{"attributes":{"constant":false,"name":"offset","scope":5457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5307,"name":"ElementaryTypeName","src":"2977:7:13"}],"id":5308,"name":"VariableDeclaration","src":"2977:14:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5309,"name":"Literal","src":"2994:1:13"}],"id":5310,"name":"VariableDeclarationStatement","src":"2977:18:13"},{"attributes":{"assignments":[5312],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":5457,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5311,"name":"ElementaryTypeName","src":"3005:5:13"}],"id":5312,"name":"VariableDeclaration","src":"3005:17:13"}],"id":5313,"name":"VariableDeclarationStatement","src":"3005:17:13"},{"attributes":{"assignments":[5315],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":5457,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5314,"name":"ElementaryTypeName","src":"3032:5:13"}],"id":5315,"name":"VariableDeclaration","src":"3032:18:13"}],"id":5316,"name":"VariableDeclarationStatement","src":"3032:18:13"},{"attributes":{"assignments":[5318],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5317,"name":"ElementaryTypeName","src":"3060:7:13"}],"id":5318,"name":"VariableDeclaration","src":"3060:16:13"}],"id":5319,"name":"VariableDeclarationStatement","src":"3060:16:13"},{"children":[{"attributes":{"assignments":[5323]},"children":[{"attributes":{"constant":false,"name":"iter","scope":5434,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":5322,"name":"UserDefinedTypeName","src":"3152:18:13"}],"id":5323,"name":"VariableDeclaration","src":"3152:30:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":6376,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5297,"type":"bytes calldata","value":"data"},"id":5324,"name":"Identifier","src":"3185:4:13"}],"id":5325,"name":"MemberAccess","src":"3185:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5326,"name":"Literal","src":"3201:1:13"}],"id":5327,"name":"FunctionCall","src":"3185:18:13"}],"id":5328,"name":"VariableDeclarationStatement","src":"3152:51:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":6391,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5329,"name":"Identifier","src":"3206:4:13"}],"id":5330,"name":"MemberAccess","src":"3206:9:13"}],"id":5331,"name":"FunctionCall","src":"3206:11:13"}],"id":5332,"name":"UnaryOperation","src":"3205:12:13"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":6493,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5333,"name":"Identifier","src":"3219:4:13"}],"id":5334,"name":"MemberAccess","src":"3219:9:13"}],"id":5335,"name":"FunctionCall","src":"3219:11:13"}],"id":5336,"name":"ExpressionStatement","src":"3219:11:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5337,"name":"Identifier","src":"3250:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5338,"name":"Literal","src":"3262:1:13"}],"id":5339,"name":"BinaryOperation","src":"3250:13:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5340,"name":"Identifier","src":"3283:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":6341,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5341,"name":"Identifier","src":"3294:4:13"}],"id":5342,"name":"MemberAccess","src":"3294:12:13"}],"id":5343,"name":"Assignment","src":"3283:23:13"}],"id":5344,"name":"ExpressionStatement","src":"3283:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5345,"name":"Identifier","src":"3324:4:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":6514,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5346,"name":"Identifier","src":"3331:4:13"}],"id":5347,"name":"MemberAccess","src":"3331:9:13"}],"id":5348,"name":"FunctionCall","src":"3331:11:13"}],"id":5349,"name":"Assignment","src":"3324:18:13"}],"id":5350,"name":"ExpressionStatement","src":"3324:18:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5318,"type":"bytes32","value":"nameHash"},"id":5351,"name":"Identifier","src":"3360:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7559,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5352,"name":"Identifier","src":"3371:9:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":5353,"name":"Identifier","src":"3381:3:13"}],"id":5354,"name":"MemberAccess","src":"3381:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5355,"name":"Identifier","src":"3398:4:13"}],"id":5356,"name":"FunctionCall","src":"3381:22:13"}],"id":5357,"name":"FunctionCall","src":"3371:33:13"}],"id":5358,"name":"Assignment","src":"3360:44:13"}],"id":5359,"name":"ExpressionStatement","src":"3360:44:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5315,"type":"bytes memory","value":"value"},"id":5360,"name":"Identifier","src":"3422:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5361,"name":"ElementaryTypeNameExpression","src":"3430:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":6534,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5362,"name":"Identifier","src":"3436:4:13"}],"id":5363,"name":"MemberAccess","src":"3436:10:13"}],"id":5364,"name":"FunctionCall","src":"3436:12:13"}],"id":5365,"name":"FunctionCall","src":"3430:19:13"}],"id":5366,"name":"Assignment","src":"3422:27:13"}],"id":5367,"name":"ExpressionStatement","src":"3422:27:13"}],"id":5368,"name":"Block","src":"3265:199:13"},{"children":[{"attributes":{"assignments":[5370]},"children":[{"attributes":{"constant":false,"name":"newName","scope":5431,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5369,"name":"ElementaryTypeName","src":"3488:5:13"}],"id":5370,"name":"VariableDeclaration","src":"3488:20:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":6514,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5371,"name":"Identifier","src":"3511:4:13"}],"id":5372,"name":"MemberAccess","src":"3511:9:13"}],"id":5373,"name":"FunctionCall","src":"3511:11:13"}],"id":5374,"name":"VariableDeclarationStatement","src":"3488:34:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5375,"name":"Identifier","src":"3544:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":6341,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5376,"name":"Identifier","src":"3556:4:13"}],"id":5377,"name":"MemberAccess","src":"3556:12:13"}],"id":5378,"name":"BinaryOperation","src":"3544:24:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":7120,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5379,"name":"Identifier","src":"3573:4:13"}],"id":5380,"name":"MemberAccess","src":"3573:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5370,"type":"bytes memory","value":"newName"},"id":5381,"name":"Identifier","src":"3585:7:13"}],"id":5382,"name":"FunctionCall","src":"3573:20:13"}],"id":5383,"name":"UnaryOperation","src":"3572:21:13"}],"id":5384,"name":"BinaryOperation","src":"3544:49:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5710,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":5385,"name":"Identifier","src":"3617:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5295,"type":"bytes32","value":"node"},"id":5386,"name":"Identifier","src":"3629:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5387,"name":"Identifier","src":"3635:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5388,"name":"Identifier","src":"3641:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5297,"type":"bytes calldata","value":"data"},"id":5389,"name":"Identifier","src":"3651:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5390,"name":"Identifier","src":"3657:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5391,"name":"Identifier","src":"3665:4:13"}],"id":5392,"name":"MemberAccess","src":"3665:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5393,"name":"Identifier","src":"3679:6:13"}],"id":5394,"name":"BinaryOperation","src":"3665:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5315,"type":"bytes memory","value":"value"},"id":5395,"name":"Identifier","src":"3687:5:13"}],"id":5396,"name":"MemberAccess","src":"3687:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5397,"name":"Literal","src":"3703:1:13"}],"id":5398,"name":"BinaryOperation","src":"3687:17:13"}],"id":5399,"name":"FunctionCall","src":"3617:88:13"}],"id":5400,"name":"ExpressionStatement","src":"3617:88:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5401,"name":"Identifier","src":"3727:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":6341,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5402,"name":"Identifier","src":"3738:4:13"}],"id":5403,"name":"MemberAccess","src":"3738:12:13"}],"id":5404,"name":"Assignment","src":"3727:23:13"}],"id":5405,"name":"ExpressionStatement","src":"3727:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5406,"name":"Identifier","src":"3772:6:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5407,"name":"Identifier","src":"3781:4:13"}],"id":5408,"name":"MemberAccess","src":"3781:11:13"}],"id":5409,"name":"Assignment","src":"3772:20:13"}],"id":5410,"name":"ExpressionStatement","src":"3772:20:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5411,"name":"Identifier","src":"3814:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5370,"type":"bytes memory","value":"newName"},"id":5412,"name":"Identifier","src":"3821:7:13"}],"id":5413,"name":"Assignment","src":"3814:14:13"}],"id":5414,"name":"ExpressionStatement","src":"3814:14:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5318,"type":"bytes32","value":"nameHash"},"id":5415,"name":"Identifier","src":"3850:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7559,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5416,"name":"Identifier","src":"3861:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5417,"name":"Identifier","src":"3871:4:13"}],"id":5418,"name":"FunctionCall","src":"3861:15:13"}],"id":5419,"name":"Assignment","src":"3850:26:13"}],"id":5420,"name":"ExpressionStatement","src":"3850:26:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5315,"type":"bytes memory","value":"value"},"id":5421,"name":"Identifier","src":"3898:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5422,"name":"ElementaryTypeNameExpression","src":"3906:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":6534,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5423,"name":"Identifier","src":"3912:4:13"}],"id":5424,"name":"MemberAccess","src":"3912:10:13"}],"id":5425,"name":"FunctionCall","src":"3912:12:13"}],"id":5426,"name":"FunctionCall","src":"3906:19:13"}],"id":5427,"name":"Assignment","src":"3898:27:13"}],"id":5428,"name":"ExpressionStatement","src":"3898:27:13"}],"id":5429,"name":"Block","src":"3595:349:13"}],"id":5430,"name":"IfStatement","src":"3540:404:13"}],"id":5431,"name":"Block","src":"3470:488:13"}],"id":5432,"name":"IfStatement","src":"3246:712:13"}],"id":5433,"name":"Block","src":"3232:736:13"}],"id":5434,"name":"ForStatement","src":"3147:821:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5435,"name":"Identifier","src":"3981:4:13"}],"id":5436,"name":"MemberAccess","src":"3981:11:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5437,"name":"Literal","src":"3995:1:13"}],"id":5438,"name":"BinaryOperation","src":"3981:15:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5710,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":5439,"name":"Identifier","src":"4012:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5295,"type":"bytes32","value":"node"},"id":5440,"name":"Identifier","src":"4024:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5441,"name":"Identifier","src":"4030:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5442,"name":"Identifier","src":"4036:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5297,"type":"bytes calldata","value":"data"},"id":5443,"name":"Identifier","src":"4046:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5444,"name":"Identifier","src":"4052:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5297,"type":"bytes calldata","value":"data"},"id":5445,"name":"Identifier","src":"4060:4:13"}],"id":5446,"name":"MemberAccess","src":"4060:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5447,"name":"Identifier","src":"4074:6:13"}],"id":5448,"name":"BinaryOperation","src":"4060:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5315,"type":"bytes memory","value":"value"},"id":5449,"name":"Identifier","src":"4082:5:13"}],"id":5450,"name":"MemberAccess","src":"4082:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5451,"name":"Literal","src":"4098:1:13"}],"id":5452,"name":"BinaryOperation","src":"4082:17:13"}],"id":5453,"name":"FunctionCall","src":"4012:88:13"}],"id":5454,"name":"ExpressionStatement","src":"4012:88:13"}],"id":5455,"name":"Block","src":"3998:113:13"}],"id":5456,"name":"IfStatement","src":"3977:134:13"}],"id":5457,"name":"Block","src":"2938:1179:13"}],"id":5458,"name":"FunctionDefinition","src":"2854:1263:13"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":5711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5482,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5459,"name":"ElementaryTypeName","src":"4538:7:13"}],"id":5460,"name":"VariableDeclaration","src":"4538:12:13"},{"attributes":{"constant":false,"name":"name","scope":5482,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5461,"name":"ElementaryTypeName","src":"4552:7:13"}],"id":5462,"name":"VariableDeclaration","src":"4552:12:13"},{"attributes":{"constant":false,"name":"resource","scope":5482,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5463,"name":"ElementaryTypeName","src":"4566:6:13"}],"id":5464,"name":"VariableDeclaration","src":"4566:15:13"}],"id":5465,"name":"ParameterList","src":"4537:45:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5482,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5466,"name":"ElementaryTypeName","src":"4604:5:13"}],"id":5467,"name":"VariableDeclaration","src":"4604:12:13"}],"id":5468,"name":"ParameterList","src":"4603:14:13"},{"children":[{"attributes":{"functionReturnParameters":5468},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5469,"name":"Identifier","src":"4635:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"bytes32","value":"node"},"id":5470,"name":"Identifier","src":"4643:4:13"}],"id":5471,"name":"IndexAccess","src":"4635:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5275,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5472,"name":"Identifier","src":"4649:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"bytes32","value":"node"},"id":5473,"name":"Identifier","src":"4658:4:13"}],"id":5474,"name":"IndexAccess","src":"4649:14:13"}],"id":5475,"name":"IndexAccess","src":"4635:29:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"name"},"id":5476,"name":"Identifier","src":"4665:4:13"}],"id":5477,"name":"IndexAccess","src":"4635:35:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"uint16","value":"resource"},"id":5478,"name":"Identifier","src":"4671:8:13"}],"id":5479,"name":"IndexAccess","src":"4635:45:13"}],"id":5480,"name":"Return","src":"4628:52:13"}],"id":5481,"name":"Block","src":"4618:69:13"}],"id":5482,"name":"FunctionDefinition","src":"4519:168:13"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":5711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5505,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5483,"name":"ElementaryTypeName","src":"4924:7:13"}],"id":5484,"name":"VariableDeclaration","src":"4924:12:13"},{"attributes":{"constant":false,"name":"name","scope":5505,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5485,"name":"ElementaryTypeName","src":"4938:7:13"}],"id":5486,"name":"VariableDeclaration","src":"4938:12:13"}],"id":5487,"name":"ParameterList","src":"4923:28:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5505,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5488,"name":"ElementaryTypeName","src":"4973:4:13"}],"id":5489,"name":"VariableDeclaration","src":"4973:4:13"}],"id":5490,"name":"ParameterList","src":"4972:6:13"},{"children":[{"attributes":{"functionReturnParameters":5490},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5293,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5491,"name":"Identifier","src":"4997:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes32","value":"node"},"id":5492,"name":"Identifier","src":"5014:4:13"}],"id":5493,"name":"IndexAccess","src":"4997:22:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5275,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5494,"name":"Identifier","src":"5020:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes32","value":"node"},"id":5495,"name":"Identifier","src":"5029:4:13"}],"id":5496,"name":"IndexAccess","src":"5020:14:13"}],"id":5497,"name":"IndexAccess","src":"4997:38:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5486,"type":"bytes32","value":"name"},"id":5498,"name":"Identifier","src":"5036:4:13"}],"id":5499,"name":"IndexAccess","src":"4997:44:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5500,"name":"Literal","src":"5045:1:13"}],"id":5501,"name":"BinaryOperation","src":"4997:49:13"}],"id":5502,"name":"TupleExpression","src":"4996:51:13"}],"id":5503,"name":"Return","src":"4989:58:13"}],"id":5504,"name":"Block","src":"4979:75:13"}],"id":5505,"name":"FunctionDefinition","src":"4901:153:13"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":5711,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5523,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5506,"name":"ElementaryTypeName","src":"5215:7:13"}],"id":5507,"name":"VariableDeclaration","src":"5215:12:13"}],"id":5508,"name":"ParameterList","src":"5214:14:13"},{"attributes":{"parameters":[null]},"children":[],"id":5512,"name":"ParameterList","src":"5253:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5509,"name":"Identifier","src":"5236:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5507,"type":"bytes32","value":"node"},"id":5510,"name":"Identifier","src":"5247:4:13"}],"id":5511,"name":"ModifierInvocation","src":"5236:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5275,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5513,"name":"Identifier","src":"5263:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5507,"type":"bytes32","value":"node"},"id":5514,"name":"Identifier","src":"5272:4:13"}],"id":5515,"name":"IndexAccess","src":"5263:14:13"}],"id":5516,"name":"UnaryOperation","src":"5263:16:13"}],"id":5517,"name":"ExpressionStatement","src":"5263:16:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5259,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":5518,"name":"Identifier","src":"5294:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5507,"type":"bytes32","value":"node"},"id":5519,"name":"Identifier","src":"5309:4:13"}],"id":5520,"name":"FunctionCall","src":"5294:20:13"}],"id":5521,"name":"EmitStatement","src":"5289:25:13"}],"id":5522,"name":"Block","src":"5253:68:13"}],"id":5523,"name":"FunctionDefinition","src":"5193:128:13"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":5711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5552,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5524,"name":"ElementaryTypeName","src":"5562:7:13"}],"id":5525,"name":"VariableDeclaration","src":"5562:12:13"},{"attributes":{"constant":false,"name":"hash","scope":5552,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5526,"name":"ElementaryTypeName","src":"5576:5:13"}],"id":5527,"name":"VariableDeclaration","src":"5576:19:13"}],"id":5528,"name":"ParameterList","src":"5561:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":5532,"name":"ParameterList","src":"5623:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5529,"name":"Identifier","src":"5606:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes32","value":"node"},"id":5530,"name":"Identifier","src":"5617:4:13"}],"id":5531,"name":"ModifierInvocation","src":"5606:16:13"},{"children":[{"attributes":{"assignments":[5534]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":5551,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5533,"name":"ElementaryTypeName","src":"5633:5:13"}],"id":5534,"name":"VariableDeclaration","src":"5633:20:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5271,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5535,"name":"Identifier","src":"5656:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes32","value":"node"},"id":5536,"name":"Identifier","src":"5667:4:13"}],"id":5537,"name":"IndexAccess","src":"5656:16:13"}],"id":5538,"name":"VariableDeclarationStatement","src":"5633:39:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5271,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5539,"name":"Identifier","src":"5682:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes32","value":"node"},"id":5540,"name":"Identifier","src":"5693:4:13"}],"id":5541,"name":"IndexAccess","src":"5682:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5527,"type":"bytes calldata","value":"hash"},"id":5542,"name":"Identifier","src":"5701:4:13"}],"id":5543,"name":"Assignment","src":"5682:23:13"}],"id":5544,"name":"ExpressionStatement","src":"5682:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5267,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":5545,"name":"Identifier","src":"5720:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes32","value":"node"},"id":5546,"name":"Identifier","src":"5739:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5534,"type":"bytes memory","value":"oldhash"},"id":5547,"name":"Identifier","src":"5745:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5527,"type":"bytes calldata","value":"hash"},"id":5548,"name":"Identifier","src":"5754:4:13"}],"id":5549,"name":"FunctionCall","src":"5720:39:13"}],"id":5550,"name":"EmitStatement","src":"5715:44:13"}],"id":5551,"name":"Block","src":"5623:143:13"}],"id":5552,"name":"FunctionDefinition","src":"5541:225:13"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":5711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5564,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5553,"name":"ElementaryTypeName","src":"5938:7:13"}],"id":5554,"name":"VariableDeclaration","src":"5938:12:13"}],"id":5555,"name":"ParameterList","src":"5937:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5564,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5556,"name":"ElementaryTypeName","src":"5975:5:13"}],"id":5557,"name":"VariableDeclaration","src":"5975:12:13"}],"id":5558,"name":"ParameterList","src":"5974:14:13"},{"children":[{"attributes":{"functionReturnParameters":5558},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5271,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5559,"name":"Identifier","src":"6006:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5554,"type":"bytes32","value":"node"},"id":5560,"name":"Identifier","src":"6017:4:13"}],"id":5561,"name":"IndexAccess","src":"6006:16:13"}],"id":5562,"name":"Return","src":"5999:23:13"}],"id":5563,"name":"Block","src":"5989:40:13"}],"id":5564,"name":"FunctionDefinition","src":"5920:109:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5711,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5585,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5565,"name":"ElementaryTypeName","src":"6062:6:13"}],"id":5566,"name":"VariableDeclaration","src":"6062:18:13"}],"id":5567,"name":"ParameterList","src":"6061:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5585,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5568,"name":"ElementaryTypeName","src":"6102:4:13"}],"id":5569,"name":"VariableDeclaration","src":"6102:4:13"}],"id":5570,"name":"ParameterList","src":"6101:6:13"},{"children":[{"attributes":{"functionReturnParameters":5570},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5566,"type":"bytes4","value":"interfaceID"},"id":5571,"name":"Identifier","src":"6125:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":5572,"name":"Identifier","src":"6140:23:13"}],"id":5573,"name":"BinaryOperation","src":"6125:38:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5566,"type":"bytes4","value":"interfaceID"},"id":5574,"name":"Identifier","src":"6182:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5237,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":5575,"name":"Identifier","src":"6197:21:13"}],"id":5576,"name":"BinaryOperation","src":"6182:36:13"}],"id":5577,"name":"BinaryOperation","src":"6125:93:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7610,"type":"contract super DNSResolver","value":"super"},"id":5578,"name":"Identifier","src":"6237:5:13"}],"id":5579,"name":"MemberAccess","src":"6237:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5566,"type":"bytes4","value":"interfaceID"},"id":5580,"name":"Identifier","src":"6261:11:13"}],"id":5581,"name":"FunctionCall","src":"6237:36:13"}],"id":5582,"name":"BinaryOperation","src":"6125:148:13"}],"id":5583,"name":"Return","src":"6118:155:13"}],"id":5584,"name":"Block","src":"6108:172:13"}],"id":5585,"name":"FunctionDefinition","src":"6035:245:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":5711,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5710,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5586,"name":"ElementaryTypeName","src":"6316:7:13"}],"id":5587,"name":"VariableDeclaration","src":"6316:12:13"},{"attributes":{"constant":false,"name":"name","scope":5710,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5588,"name":"ElementaryTypeName","src":"6338:5:13"}],"id":5589,"name":"VariableDeclaration","src":"6338:17:13"},{"attributes":{"constant":false,"name":"resource","scope":5710,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5590,"name":"ElementaryTypeName","src":"6365:6:13"}],"id":5591,"name":"VariableDeclaration","src":"6365:15:13"},{"attributes":{"constant":false,"name":"data","scope":5710,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5592,"name":"ElementaryTypeName","src":"6390:5:13"}],"id":5593,"name":"VariableDeclaration","src":"6390:17:13"},{"attributes":{"constant":false,"name":"offset","scope":5710,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5594,"name":"ElementaryTypeName","src":"6417:7:13"}],"id":5595,"name":"VariableDeclaration","src":"6417:14:13"},{"attributes":{"constant":false,"name":"size","scope":5710,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5596,"name":"ElementaryTypeName","src":"6441:7:13"}],"id":5597,"name":"VariableDeclaration","src":"6441:12:13"},{"attributes":{"constant":false,"name":"deleteRecord","scope":5710,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5598,"name":"ElementaryTypeName","src":"6463:4:13"}],"id":5599,"name":"VariableDeclaration","src":"6463:17:13"}],"id":5600,"name":"ParameterList","src":"6306:175:13"},{"attributes":{"parameters":[null]},"children":[],"id":5601,"name":"ParameterList","src":"6494:0:13"},{"children":[{"attributes":{"assignments":[5603]},"children":[{"attributes":{"constant":false,"name":"version","scope":5709,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5602,"name":"ElementaryTypeName","src":"6504:7:13"}],"id":5603,"name":"VariableDeclaration","src":"6504:15:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5275,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5604,"name":"Identifier","src":"6522:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5605,"name":"Identifier","src":"6531:4:13"}],"id":5606,"name":"IndexAccess","src":"6522:14:13"}],"id":5607,"name":"VariableDeclarationStatement","src":"6504:32:13"},{"attributes":{"assignments":[5609]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5709,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5608,"name":"ElementaryTypeName","src":"6546:7:13"}],"id":5609,"name":"VariableDeclaration","src":"6546:16:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7559,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5610,"name":"Identifier","src":"6565:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5589,"type":"bytes memory","value":"name"},"id":5611,"name":"Identifier","src":"6575:4:13"}],"id":5612,"name":"FunctionCall","src":"6565:15:13"}],"id":5613,"name":"VariableDeclarationStatement","src":"6546:34:13"},{"attributes":{"assignments":[5615]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":5709,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5614,"name":"ElementaryTypeName","src":"6590:5:13"}],"id":5615,"name":"VariableDeclaration","src":"6590:19:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7327,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5593,"type":"bytes memory","value":"data"},"id":5616,"name":"Identifier","src":"6612:4:13"}],"id":5617,"name":"MemberAccess","src":"6612:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5595,"type":"uint256","value":"offset"},"id":5618,"name":"Identifier","src":"6627:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"uint256","value":"size"},"id":5619,"name":"Identifier","src":"6635:4:13"}],"id":5620,"name":"FunctionCall","src":"6612:28:13"}],"id":5621,"name":"VariableDeclarationStatement","src":"6590:50:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5599,"type":"bool","value":"deleteRecord"},"id":5622,"name":"Identifier","src":"6654:12:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5623,"name":"Identifier","src":"6686:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5624,"name":"Identifier","src":"6694:4:13"}],"id":5625,"name":"IndexAccess","src":"6686:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5626,"name":"Identifier","src":"6700:7:13"}],"id":5627,"name":"IndexAccess","src":"6686:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5628,"name":"Identifier","src":"6709:8:13"}],"id":5629,"name":"IndexAccess","src":"6686:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5630,"name":"Identifier","src":"6719:8:13"}],"id":5631,"name":"IndexAccess","src":"6686:42:13"}],"id":5632,"name":"MemberAccess","src":"6686:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5633,"name":"Literal","src":"6739:1:13"}],"id":5634,"name":"BinaryOperation","src":"6686:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5293,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5635,"name":"Identifier","src":"6760:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5636,"name":"Identifier","src":"6777:4:13"}],"id":5639,"name":"IndexAccess","src":"6760:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5637,"name":"Identifier","src":"6783:7:13"}],"id":5640,"name":"IndexAccess","src":"6760:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5638,"name":"Identifier","src":"6792:8:13"}],"id":5641,"name":"IndexAccess","src":"6760:41:13"}],"id":5642,"name":"UnaryOperation","src":"6760:43:13"}],"id":5643,"name":"ExpressionStatement","src":"6760:43:13"}],"id":5644,"name":"Block","src":"6742:76:13"}],"id":5645,"name":"IfStatement","src":"6682:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5646,"name":"Identifier","src":"6838:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5647,"name":"Identifier","src":"6846:4:13"}],"id":5648,"name":"IndexAccess","src":"6838:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5649,"name":"Identifier","src":"6852:7:13"}],"id":5650,"name":"IndexAccess","src":"6838:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5651,"name":"Identifier","src":"6861:8:13"}],"id":5652,"name":"IndexAccess","src":"6838:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5653,"name":"Identifier","src":"6871:8:13"}],"id":5654,"name":"IndexAccess","src":"6838:42:13"}],"id":5655,"name":"TupleExpression","src":"6837:44:13"}],"id":5656,"name":"UnaryOperation","src":"6831:50:13"}],"id":5657,"name":"ExpressionStatement","src":"6831:50:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":5255,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":5658,"name":"Identifier","src":"6900:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5659,"name":"Identifier","src":"6917:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5589,"type":"bytes memory","value":"name"},"id":5660,"name":"Identifier","src":"6923:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5661,"name":"Identifier","src":"6929:8:13"}],"id":5662,"name":"FunctionCall","src":"6900:38:13"}],"id":5663,"name":"EmitStatement","src":"6895:43:13"}],"id":5664,"name":"Block","src":"6668:281:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5665,"name":"Identifier","src":"6973:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5666,"name":"Identifier","src":"6981:4:13"}],"id":5667,"name":"IndexAccess","src":"6973:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5668,"name":"Identifier","src":"6987:7:13"}],"id":5669,"name":"IndexAccess","src":"6973:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5670,"name":"Identifier","src":"6996:8:13"}],"id":5671,"name":"IndexAccess","src":"6973:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5672,"name":"Identifier","src":"7006:8:13"}],"id":5673,"name":"IndexAccess","src":"6973:42:13"}],"id":5674,"name":"MemberAccess","src":"6973:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5675,"name":"Literal","src":"7026:1:13"}],"id":5676,"name":"BinaryOperation","src":"6973:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5293,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5677,"name":"Identifier","src":"7047:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5678,"name":"Identifier","src":"7064:4:13"}],"id":5681,"name":"IndexAccess","src":"7047:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5679,"name":"Identifier","src":"7070:7:13"}],"id":5682,"name":"IndexAccess","src":"7047:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5680,"name":"Identifier","src":"7079:8:13"}],"id":5683,"name":"IndexAccess","src":"7047:41:13"}],"id":5684,"name":"UnaryOperation","src":"7047:43:13"}],"id":5685,"name":"ExpressionStatement","src":"7047:43:13"}],"id":5686,"name":"Block","src":"7029:76:13"}],"id":5687,"name":"IfStatement","src":"6969:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5688,"name":"Identifier","src":"7118:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5689,"name":"Identifier","src":"7126:4:13"}],"id":5693,"name":"IndexAccess","src":"7118:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5690,"name":"Identifier","src":"7132:7:13"}],"id":5694,"name":"IndexAccess","src":"7118:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5691,"name":"Identifier","src":"7141:8:13"}],"id":5695,"name":"IndexAccess","src":"7118:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5692,"name":"Identifier","src":"7151:8:13"}],"id":5696,"name":"IndexAccess","src":"7118:42:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5615,"type":"bytes memory","value":"rrData"},"id":5697,"name":"Identifier","src":"7163:6:13"}],"id":5698,"name":"Assignment","src":"7118:51:13"}],"id":5699,"name":"ExpressionStatement","src":"7118:51:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5247,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":5700,"name":"Identifier","src":"7188:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5701,"name":"Identifier","src":"7205:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5589,"type":"bytes memory","value":"name"},"id":5702,"name":"Identifier","src":"7211:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5703,"name":"Identifier","src":"7217:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5615,"type":"bytes memory","value":"rrData"},"id":5704,"name":"Identifier","src":"7227:6:13"}],"id":5705,"name":"FunctionCall","src":"7188:46:13"}],"id":5706,"name":"EmitStatement","src":"7183:51:13"}],"id":5707,"name":"Block","src":"6955:290:13"}],"id":5708,"name":"IfStatement","src":"6650:595:13"}],"id":5709,"name":"Block","src":"6494:757:13"}],"id":5710,"name":"FunctionDefinition","src":"6286:965:13"}],"id":5711,"name":"ContractDefinition","src":"81:7172:13"}],"id":5712,"name":"SourceUnit","src":"0:7253:13"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[5898]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5713,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5899,"symbolAliases":[null],"unitAlias":""},"id":5714,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":5151,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":5899,"symbolAliases":[null],"unitAlias":""},"id":5715,"name":"ImportDirective","src":"55:28:14"},{"attributes":{"contractDependencies":[5150,6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5898,5150,6211],"name":"InterfaceResolver","scope":5899},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5716,"name":"UserDefinedTypeName","src":"115:12:14"}],"id":5717,"name":"InheritanceSpecifier","src":"115:12:14"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5150,"type":"contract AddrResolver"},"id":5718,"name":"UserDefinedTypeName","src":"129:12:14"}],"id":5719,"name":"InheritanceSpecifier","src":"129:12:14"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":5898,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5720,"name":"ElementaryTypeName","src":"148:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":5721,"name":"ElementaryTypeNameExpression","src":"197:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":7559,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5722,"name":"Identifier","src":"204:9:14"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":5723,"name":"Literal","src":"214:38:14"}],"id":5724,"name":"FunctionCall","src":"204:49:14"}],"id":5725,"name":"FunctionCall","src":"197:57:14"}],"id":5726,"name":"VariableDeclaration","src":"148:106:14"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5898,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5727,"name":"ElementaryTypeName","src":"260:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5728,"name":"Literal","src":"304:10:14"}],"id":5729,"name":"VariableDeclaration","src":"260:54:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5737,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5730,"name":"ElementaryTypeName","src":"344:7:14"}],"id":5731,"name":"VariableDeclaration","src":"344:20:14"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":5737,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5732,"name":"ElementaryTypeName","src":"366:6:14"}],"id":5733,"name":"VariableDeclaration","src":"366:26:14"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":5737,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5734,"name":"ElementaryTypeName","src":"394:7:14"}],"id":5735,"name":"VariableDeclaration","src":"394:19:14"}],"id":5736,"name":"ParameterList","src":"343:71:14"}],"id":5737,"name":"EventDefinition","src":"321:94:14"},{"attributes":{"constant":false,"name":"interfaces","scope":5898,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5738,"name":"ElementaryTypeName","src":"429:7:14"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5739,"name":"ElementaryTypeName","src":"446:6:14"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5740,"name":"ElementaryTypeName","src":"454:7:14"}],"id":5741,"name":"Mapping","src":"438:24:14"}],"id":5742,"name":"Mapping","src":"421:42:14"}],"id":5743,"name":"VariableDeclaration","src":"421:53:14"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":5898,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5770,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5744,"name":"ElementaryTypeName","src":"880:7:14"}],"id":5745,"name":"VariableDeclaration","src":"880:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":5770,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5746,"name":"ElementaryTypeName","src":"894:6:14"}],"id":5747,"name":"VariableDeclaration","src":"894:18:14"},{"attributes":{"constant":false,"name":"implementer","scope":5770,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5748,"name":"ElementaryTypeName","src":"914:7:14"}],"id":5749,"name":"VariableDeclaration","src":"914:19:14"}],"id":5750,"name":"ParameterList","src":"879:55:14"},{"attributes":{"parameters":[null]},"children":[],"id":5754,"name":"ParameterList","src":"961:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5751,"name":"Identifier","src":"944:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5745,"type":"bytes32","value":"node"},"id":5752,"name":"Identifier","src":"955:4:14"}],"id":5753,"name":"ModifierInvocation","src":"944:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5743,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5755,"name":"Identifier","src":"971:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5745,"type":"bytes32","value":"node"},"id":5756,"name":"Identifier","src":"982:4:14"}],"id":5758,"name":"IndexAccess","src":"971:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5747,"type":"bytes4","value":"interfaceID"},"id":5757,"name":"Identifier","src":"988:11:14"}],"id":5759,"name":"IndexAccess","src":"971:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5749,"type":"address","value":"implementer"},"id":5760,"name":"Identifier","src":"1003:11:14"}],"id":5761,"name":"Assignment","src":"971:43:14"}],"id":5762,"name":"ExpressionStatement","src":"971:43:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":5763,"name":"Identifier","src":"1029:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5745,"type":"bytes32","value":"node"},"id":5764,"name":"Identifier","src":"1046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5747,"type":"bytes4","value":"interfaceID"},"id":5765,"name":"Identifier","src":"1052:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5749,"type":"address","value":"implementer"},"id":5766,"name":"Identifier","src":"1065:11:14"}],"id":5767,"name":"FunctionCall","src":"1029:48:14"}],"id":5768,"name":"EmitStatement","src":"1024:53:14"}],"id":5769,"name":"Block","src":"961:123:14"}],"id":5770,"name":"FunctionDefinition","src":"858:226:14"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":5898,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5880,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5771,"name":"ElementaryTypeName","src":"1751:7:14"}],"id":5772,"name":"VariableDeclaration","src":"1751:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":5880,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5773,"name":"ElementaryTypeName","src":"1765:6:14"}],"id":5774,"name":"VariableDeclaration","src":"1765:18:14"}],"id":5775,"name":"ParameterList","src":"1750:34:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5880,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5776,"name":"ElementaryTypeName","src":"1808:7:14"}],"id":5777,"name":"VariableDeclaration","src":"1808:7:14"}],"id":5778,"name":"ParameterList","src":"1807:9:14"},{"children":[{"attributes":{"assignments":[5780]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":5879,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5779,"name":"ElementaryTypeName","src":"1827:7:14"}],"id":5780,"name":"VariableDeclaration","src":"1827:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5743,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5781,"name":"Identifier","src":"1849:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5772,"type":"bytes32","value":"node"},"id":5782,"name":"Identifier","src":"1860:4:14"}],"id":5783,"name":"IndexAccess","src":"1849:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5774,"type":"bytes4","value":"interfaceID"},"id":5784,"name":"Identifier","src":"1866:11:14"}],"id":5785,"name":"IndexAccess","src":"1849:29:14"}],"id":5786,"name":"VariableDeclarationStatement","src":"1827:51:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5780,"type":"address","value":"implementer"},"id":5787,"name":"Identifier","src":"1891:11:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5788,"name":"ElementaryTypeNameExpression","src":"1906:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5789,"name":"Literal","src":"1914:1:14"}],"id":5790,"name":"FunctionCall","src":"1906:10:14"}],"id":5791,"name":"BinaryOperation","src":"1891:25:14"},{"children":[{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5780,"type":"address","value":"implementer"},"id":5792,"name":"Identifier","src":"1939:11:14"}],"id":5793,"name":"Return","src":"1932:18:14"}],"id":5794,"name":"Block","src":"1918:43:14"}],"id":5795,"name":"IfStatement","src":"1888:73:14"},{"attributes":{"assignments":[5797]},"children":[{"attributes":{"constant":false,"name":"a","scope":5879,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5796,"name":"ElementaryTypeName","src":"1971:7:14"}],"id":5797,"name":"VariableDeclaration","src":"1971:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[5073,5128],"referencedDeclaration":5073,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":5798,"name":"Identifier","src":"1983:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5772,"type":"bytes32","value":"node"},"id":5799,"name":"Identifier","src":"1988:4:14"}],"id":5800,"name":"FunctionCall","src":"1983:10:14"}],"id":5801,"name":"VariableDeclarationStatement","src":"1971:22:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5797,"type":"address","value":"a"},"id":5802,"name":"Identifier","src":"2006:1:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5803,"name":"ElementaryTypeNameExpression","src":"2011:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5804,"name":"Literal","src":"2019:1:14"}],"id":5805,"name":"FunctionCall","src":"2011:10:14"}],"id":5806,"name":"BinaryOperation","src":"2006:15:14"},{"children":[{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5807,"name":"ElementaryTypeNameExpression","src":"2044:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5808,"name":"Literal","src":"2052:1:14"}],"id":5809,"name":"FunctionCall","src":"2044:10:14"}],"id":5810,"name":"Return","src":"2037:17:14"}],"id":5811,"name":"Block","src":"2023:42:14"}],"id":5812,"name":"IfStatement","src":"2003:62:14"},{"attributes":{"assignments":[5814,5816]},"children":[{"attributes":{"constant":false,"name":"success","scope":5879,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5813,"name":"ElementaryTypeName","src":"2076:4:14"}],"id":5814,"name":"VariableDeclaration","src":"2076:12:14"},{"attributes":{"constant":false,"name":"returnData","scope":5879,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5815,"name":"ElementaryTypeName","src":"2090:5:14"}],"id":5816,"name":"VariableDeclaration","src":"2090:23:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5797,"type":"address","value":"a"},"id":5817,"name":"Identifier","src":"2117:1:14"}],"id":5818,"name":"MemberAccess","src":"2117:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":5819,"name":"Identifier","src":"2130:3:14"}],"id":5820,"name":"MemberAccess","src":"2130:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5821,"name":"Literal","src":"2154:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5729,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5822,"name":"Identifier","src":"2183:17:14"}],"id":5823,"name":"FunctionCall","src":"2130:71:14"}],"id":5824,"name":"FunctionCall","src":"2117:85:14"}],"id":5825,"name":"VariableDeclarationStatement","src":"2075:127:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5814,"type":"bool","value":"success"},"id":5826,"name":"Identifier","src":"2216:7:14"}],"id":5827,"name":"UnaryOperation","src":"2215:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5828,"name":"Identifier","src":"2227:10:14"}],"id":5829,"name":"MemberAccess","src":"2227:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5830,"name":"Literal","src":"2247:2:14"}],"id":5831,"name":"BinaryOperation","src":"2227:22:14"}],"id":5832,"name":"BinaryOperation","src":"2215:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5833,"name":"Identifier","src":"2253:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5834,"name":"Literal","src":"2264:2:14"}],"id":5835,"name":"IndexAccess","src":"2253:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5836,"name":"Literal","src":"2271:1:14"}],"id":5837,"name":"BinaryOperation","src":"2253:19:14"}],"id":5838,"name":"BinaryOperation","src":"2215:57:14"},{"children":[{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5839,"name":"ElementaryTypeNameExpression","src":"2342:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5840,"name":"Literal","src":"2350:1:14"}],"id":5841,"name":"FunctionCall","src":"2342:10:14"}],"id":5842,"name":"Return","src":"2335:17:14"}],"id":5843,"name":"Block","src":"2274:89:14"}],"id":5844,"name":"IfStatement","src":"2212:151:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5814,"type":"bool","value":"success"},"id":5845,"name":"Identifier","src":"2374:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5846,"name":"Identifier","src":"2383:10:14"}],"id":5847,"name":"TupleExpression","src":"2373:21:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5797,"type":"address","value":"a"},"id":5848,"name":"Identifier","src":"2397:1:14"}],"id":5849,"name":"MemberAccess","src":"2397:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":5850,"name":"Identifier","src":"2410:3:14"}],"id":5851,"name":"MemberAccess","src":"2410:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5852,"name":"Literal","src":"2434:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5774,"type":"bytes4","value":"interfaceID"},"id":5853,"name":"Identifier","src":"2463:11:14"}],"id":5854,"name":"FunctionCall","src":"2410:65:14"}],"id":5855,"name":"FunctionCall","src":"2397:79:14"}],"id":5856,"name":"Assignment","src":"2373:103:14"}],"id":5857,"name":"ExpressionStatement","src":"2373:103:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5814,"type":"bool","value":"success"},"id":5858,"name":"Identifier","src":"2490:7:14"}],"id":5859,"name":"UnaryOperation","src":"2489:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5860,"name":"Identifier","src":"2501:10:14"}],"id":5861,"name":"MemberAccess","src":"2501:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5862,"name":"Literal","src":"2521:2:14"}],"id":5863,"name":"BinaryOperation","src":"2501:22:14"}],"id":5864,"name":"BinaryOperation","src":"2489:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5865,"name":"Identifier","src":"2527:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5866,"name":"Literal","src":"2538:2:14"}],"id":5867,"name":"IndexAccess","src":"2527:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5868,"name":"Literal","src":"2545:1:14"}],"id":5869,"name":"BinaryOperation","src":"2527:19:14"}],"id":5870,"name":"BinaryOperation","src":"2489:57:14"},{"children":[{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5871,"name":"ElementaryTypeNameExpression","src":"2628:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5872,"name":"Literal","src":"2636:1:14"}],"id":5873,"name":"FunctionCall","src":"2628:10:14"}],"id":5874,"name":"Return","src":"2621:17:14"}],"id":5875,"name":"Block","src":"2548:101:14"}],"id":5876,"name":"IfStatement","src":"2486:163:14"},{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5797,"type":"address","value":"a"},"id":5877,"name":"Identifier","src":"2666:1:14"}],"id":5878,"name":"Return","src":"2659:8:14"}],"id":5879,"name":"Block","src":"1817:857:14"}],"id":5880,"name":"FunctionDefinition","src":"1721:953:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5898,"stateMutability":"pure","superFunction":5149,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5897,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5881,"name":"ElementaryTypeName","src":"2707:6:14"}],"id":5882,"name":"VariableDeclaration","src":"2707:18:14"}],"id":5883,"name":"ParameterList","src":"2706:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5897,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5884,"name":"ElementaryTypeName","src":"2747:4:14"}],"id":5885,"name":"VariableDeclaration","src":"2747:4:14"}],"id":5886,"name":"ParameterList","src":"2746:6:14"},{"children":[{"attributes":{"functionReturnParameters":5886},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5882,"type":"bytes4","value":"interfaceID"},"id":5887,"name":"Identifier","src":"2770:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5726,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":5888,"name":"Identifier","src":"2785:22:14"}],"id":5889,"name":"BinaryOperation","src":"2770:37:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5149,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7612,"type":"contract super InterfaceResolver","value":"super"},"id":5890,"name":"Identifier","src":"2811:5:14"}],"id":5891,"name":"MemberAccess","src":"2811:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5882,"type":"bytes4","value":"interfaceID"},"id":5892,"name":"Identifier","src":"2835:11:14"}],"id":5893,"name":"FunctionCall","src":"2811:36:14"}],"id":5894,"name":"BinaryOperation","src":"2770:77:14"}],"id":5895,"name":"Return","src":"2763:84:14"}],"id":5896,"name":"Block","src":"2753:101:14"}],"id":5897,"name":"FunctionDefinition","src":"2680:174:14"}],"id":5898,"name":"ContractDefinition","src":"85:2771:14"}],"id":5899,"name":"SourceUnit","src":"0:2857:14"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[5968]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5900,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5969,"symbolAliases":[null],"unitAlias":""},"id":5901,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5968,6211],"name":"NameResolver","scope":5969},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5902,"name":"UserDefinedTypeName","src":"81:12:15"}],"id":5903,"name":"InheritanceSpecifier","src":"81:12:15"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":5968,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5904,"name":"ElementaryTypeName","src":"100:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":5905,"name":"Literal","src":"144:10:15"}],"id":5906,"name":"VariableDeclaration","src":"100:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5912,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5907,"name":"ElementaryTypeName","src":"179:7:15"}],"id":5908,"name":"VariableDeclaration","src":"179:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5912,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5909,"name":"ElementaryTypeName","src":"201:6:15"}],"id":5910,"name":"VariableDeclaration","src":"201:11:15"}],"id":5911,"name":"ParameterList","src":"178:35:15"}],"id":5912,"name":"EventDefinition","src":"161:53:15"},{"attributes":{"constant":false,"name":"names","scope":5968,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5913,"name":"ElementaryTypeName","src":"228:7:15"},{"attributes":{"name":"string","type":"string"},"id":5914,"name":"ElementaryTypeName","src":"237:6:15"}],"id":5915,"name":"Mapping","src":"220:24:15"}],"id":5916,"name":"VariableDeclaration","src":"220:30:15"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":5968,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5938,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5917,"name":"ElementaryTypeName","src":"509:7:15"}],"id":5918,"name":"VariableDeclaration","src":"509:12:15"},{"attributes":{"constant":false,"name":"name","scope":5938,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5919,"name":"ElementaryTypeName","src":"523:6:15"}],"id":5920,"name":"VariableDeclaration","src":"523:20:15"}],"id":5921,"name":"ParameterList","src":"508:36:15"},{"attributes":{"parameters":[null]},"children":[],"id":5925,"name":"ParameterList","src":"571:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5922,"name":"Identifier","src":"554:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"bytes32","value":"node"},"id":5923,"name":"Identifier","src":"565:4:15"}],"id":5924,"name":"ModifierInvocation","src":"554:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5916,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5926,"name":"Identifier","src":"581:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"bytes32","value":"node"},"id":5927,"name":"Identifier","src":"587:4:15"}],"id":5928,"name":"IndexAccess","src":"581:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5920,"type":"string calldata","value":"name"},"id":5929,"name":"Identifier","src":"595:4:15"}],"id":5930,"name":"Assignment","src":"581:18:15"}],"id":5931,"name":"ExpressionStatement","src":"581:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5912,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":5932,"name":"Identifier","src":"614:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"bytes32","value":"node"},"id":5933,"name":"Identifier","src":"626:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5920,"type":"string calldata","value":"name"},"id":5934,"name":"Identifier","src":"632:4:15"}],"id":5935,"name":"FunctionCall","src":"614:23:15"}],"id":5936,"name":"EmitStatement","src":"609:28:15"}],"id":5937,"name":"Block","src":"571:73:15"}],"id":5938,"name":"FunctionDefinition","src":"492:152:15"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":5968,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5950,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5939,"name":"ElementaryTypeName","src":"858:7:15"}],"id":5940,"name":"VariableDeclaration","src":"858:12:15"}],"id":5941,"name":"ParameterList","src":"857:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5950,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5942,"name":"ElementaryTypeName","src":"895:6:15"}],"id":5943,"name":"VariableDeclaration","src":"895:13:15"}],"id":5944,"name":"ParameterList","src":"894:15:15"},{"children":[{"attributes":{"functionReturnParameters":5944},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5916,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5945,"name":"Identifier","src":"927:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5940,"type":"bytes32","value":"node"},"id":5946,"name":"Identifier","src":"933:4:15"}],"id":5947,"name":"IndexAccess","src":"927:11:15"}],"id":5948,"name":"Return","src":"920:18:15"}],"id":5949,"name":"Block","src":"910:35:15"}],"id":5950,"name":"FunctionDefinition","src":"844:101:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5968,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5967,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5951,"name":"ElementaryTypeName","src":"978:6:15"}],"id":5952,"name":"VariableDeclaration","src":"978:18:15"}],"id":5953,"name":"ParameterList","src":"977:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5967,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5954,"name":"ElementaryTypeName","src":"1018:4:15"}],"id":5955,"name":"VariableDeclaration","src":"1018:4:15"}],"id":5956,"name":"ParameterList","src":"1017:6:15"},{"children":[{"attributes":{"functionReturnParameters":5956},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5952,"type":"bytes4","value":"interfaceID"},"id":5957,"name":"Identifier","src":"1041:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":5958,"name":"Identifier","src":"1056:17:15"}],"id":5959,"name":"BinaryOperation","src":"1041:32:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7614,"type":"contract super NameResolver","value":"super"},"id":5960,"name":"Identifier","src":"1077:5:15"}],"id":5961,"name":"MemberAccess","src":"1077:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5952,"type":"bytes4","value":"interfaceID"},"id":5962,"name":"Identifier","src":"1101:11:15"}],"id":5963,"name":"FunctionCall","src":"1077:36:15"}],"id":5964,"name":"BinaryOperation","src":"1041:72:15"}],"id":5965,"name":"Return","src":"1034:79:15"}],"id":5966,"name":"Block","src":"1024:96:15"}],"id":5967,"name":"FunctionDefinition","src":"951:169:15"}],"id":5968,"name":"ContractDefinition","src":"56:1066:15"}],"id":5969,"name":"SourceUnit","src":"0:1123:15"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[6059]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5970,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6060,"symbolAliases":[null],"unitAlias":""},"id":5971,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6059,6211],"name":"PubkeyResolver","scope":6060},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5972,"name":"UserDefinedTypeName","src":"83:12:16"}],"id":5973,"name":"InheritanceSpecifier","src":"83:12:16"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":6059,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5974,"name":"ElementaryTypeName","src":"102:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":5975,"name":"Literal","src":"148:10:16"}],"id":5976,"name":"VariableDeclaration","src":"102:56:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5984,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5977,"name":"ElementaryTypeName","src":"185:7:16"}],"id":5978,"name":"VariableDeclaration","src":"185:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":5984,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5979,"name":"ElementaryTypeName","src":"207:7:16"}],"id":5980,"name":"VariableDeclaration","src":"207:9:16"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":5984,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5981,"name":"ElementaryTypeName","src":"218:7:16"}],"id":5982,"name":"VariableDeclaration","src":"218:9:16"}],"id":5983,"name":"ParameterList","src":"184:44:16"}],"id":5984,"name":"EventDefinition","src":"165:64:16"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":6059,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":5989,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5985,"name":"ElementaryTypeName","src":"262:7:16"}],"id":5986,"name":"VariableDeclaration","src":"262:9:16"},{"attributes":{"constant":false,"name":"y","scope":5989,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5987,"name":"ElementaryTypeName","src":"281:7:16"}],"id":5988,"name":"VariableDeclaration","src":"281:9:16"}],"id":5989,"name":"StructDefinition","src":"235:62:16"},{"attributes":{"constant":false,"name":"pubkeys","scope":6059,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5990,"name":"ElementaryTypeName","src":"311:7:16"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":5989,"type":"struct PubkeyResolver.PublicKey"},"id":5991,"name":"UserDefinedTypeName","src":"320:9:16"}],"id":5992,"name":"Mapping","src":"303:27:16"}],"id":5993,"name":"VariableDeclaration","src":"303:35:16"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":6059,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6021,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5994,"name":"ElementaryTypeName","src":"631:7:16"}],"id":5995,"name":"VariableDeclaration","src":"631:12:16"},{"attributes":{"constant":false,"name":"x","scope":6021,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5996,"name":"ElementaryTypeName","src":"645:7:16"}],"id":5997,"name":"VariableDeclaration","src":"645:9:16"},{"attributes":{"constant":false,"name":"y","scope":6021,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5998,"name":"ElementaryTypeName","src":"656:7:16"}],"id":5999,"name":"VariableDeclaration","src":"656:9:16"}],"id":6000,"name":"ParameterList","src":"630:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":6004,"name":"ParameterList","src":"693:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":6001,"name":"Identifier","src":"676:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5995,"type":"bytes32","value":"node"},"id":6002,"name":"Identifier","src":"687:4:16"}],"id":6003,"name":"ModifierInvocation","src":"676:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5993,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6005,"name":"Identifier","src":"703:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5995,"type":"bytes32","value":"node"},"id":6006,"name":"Identifier","src":"711:4:16"}],"id":6007,"name":"IndexAccess","src":"703:13:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5989,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":6008,"name":"Identifier","src":"719:9:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5997,"type":"bytes32","value":"x"},"id":6009,"name":"Identifier","src":"729:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5999,"type":"bytes32","value":"y"},"id":6010,"name":"Identifier","src":"732:1:16"}],"id":6011,"name":"FunctionCall","src":"719:15:16"}],"id":6012,"name":"Assignment","src":"703:31:16"}],"id":6013,"name":"ExpressionStatement","src":"703:31:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5984,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":6014,"name":"Identifier","src":"749:13:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5995,"type":"bytes32","value":"node"},"id":6015,"name":"Identifier","src":"763:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5997,"type":"bytes32","value":"x"},"id":6016,"name":"Identifier","src":"769:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5999,"type":"bytes32","value":"y"},"id":6017,"name":"Identifier","src":"772:1:16"}],"id":6018,"name":"FunctionCall","src":"749:25:16"}],"id":6019,"name":"EmitStatement","src":"744:30:16"}],"id":6020,"name":"Block","src":"693:88:16"}],"id":6021,"name":"FunctionDefinition","src":"612:169:16"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":6059,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6041,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6022,"name":"ElementaryTypeName","src":"1039:7:16"}],"id":6023,"name":"VariableDeclaration","src":"1039:12:16"}],"id":6024,"name":"ParameterList","src":"1038:14:16"},{"children":[{"attributes":{"constant":false,"name":"x","scope":6041,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6025,"name":"ElementaryTypeName","src":"1076:7:16"}],"id":6026,"name":"VariableDeclaration","src":"1076:9:16"},{"attributes":{"constant":false,"name":"y","scope":6041,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6027,"name":"ElementaryTypeName","src":"1087:7:16"}],"id":6028,"name":"VariableDeclaration","src":"1087:9:16"}],"id":6029,"name":"ParameterList","src":"1075:22:16"},{"children":[{"attributes":{"functionReturnParameters":6029},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":5986,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5993,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6030,"name":"Identifier","src":"1116:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6023,"type":"bytes32","value":"node"},"id":6031,"name":"Identifier","src":"1124:4:16"}],"id":6032,"name":"IndexAccess","src":"1116:13:16"}],"id":6033,"name":"MemberAccess","src":"1116:15:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":5988,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5993,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6034,"name":"Identifier","src":"1133:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6023,"type":"bytes32","value":"node"},"id":6035,"name":"Identifier","src":"1141:4:16"}],"id":6036,"name":"IndexAccess","src":"1133:13:16"}],"id":6037,"name":"MemberAccess","src":"1133:15:16"}],"id":6038,"name":"TupleExpression","src":"1115:34:16"}],"id":6039,"name":"Return","src":"1108:41:16"}],"id":6040,"name":"Block","src":"1098:58:16"}],"id":6041,"name":"FunctionDefinition","src":"1023:133:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6059,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6058,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6042,"name":"ElementaryTypeName","src":"1189:6:16"}],"id":6043,"name":"VariableDeclaration","src":"1189:18:16"}],"id":6044,"name":"ParameterList","src":"1188:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6058,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6045,"name":"ElementaryTypeName","src":"1229:4:16"}],"id":6046,"name":"VariableDeclaration","src":"1229:4:16"}],"id":6047,"name":"ParameterList","src":"1228:6:16"},{"children":[{"attributes":{"functionReturnParameters":6047},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6043,"type":"bytes4","value":"interfaceID"},"id":6048,"name":"Identifier","src":"1252:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5976,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":6049,"name":"Identifier","src":"1267:19:16"}],"id":6050,"name":"BinaryOperation","src":"1252:34:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7616,"type":"contract super PubkeyResolver","value":"super"},"id":6051,"name":"Identifier","src":"1290:5:16"}],"id":6052,"name":"MemberAccess","src":"1290:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6043,"type":"bytes4","value":"interfaceID"},"id":6053,"name":"Identifier","src":"1314:11:16"}],"id":6054,"name":"FunctionCall","src":"1290:36:16"}],"id":6055,"name":"BinaryOperation","src":"1252:74:16"}],"id":6056,"name":"Return","src":"1245:81:16"}],"id":6057,"name":"Block","src":"1235:98:16"}],"id":6058,"name":"FunctionDefinition","src":"1162:171:16"}],"id":6059,"name":"ContractDefinition","src":"56:1279:16"}],"id":6060,"name":"SourceUnit","src":"0:1336:16"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[6142]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6061,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6143,"symbolAliases":[null],"unitAlias":""},"id":6062,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6142,6211],"name":"TextResolver","scope":6143},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":6063,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":6064,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":6142,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6065,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":6066,"name":"Literal","src":"144:10:17"}],"id":6067,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6075,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6068,"name":"ElementaryTypeName","src":"179:7:17"}],"id":6069,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":6075,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6070,"name":"ElementaryTypeName","src":"201:6:17"}],"id":6071,"name":"VariableDeclaration","src":"201:25:17"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":6075,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6072,"name":"ElementaryTypeName","src":"228:6:17"}],"id":6073,"name":"VariableDeclaration","src":"228:10:17"}],"id":6074,"name":"ParameterList","src":"178:61:17"}],"id":6075,"name":"EventDefinition","src":"161:79:17"},{"attributes":{"constant":false,"name":"texts","scope":6142,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6076,"name":"ElementaryTypeName","src":"254:7:17"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6077,"name":"ElementaryTypeName","src":"271:6:17"},{"attributes":{"name":"string","type":"string"},"id":6078,"name":"ElementaryTypeName","src":"279:6:17"}],"id":6079,"name":"Mapping","src":"263:23:17"}],"id":6080,"name":"Mapping","src":"246:41:17"}],"id":6081,"name":"VariableDeclaration","src":"246:47:17"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":6142,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6108,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6082,"name":"ElementaryTypeName","src":"590:7:17"}],"id":6083,"name":"VariableDeclaration","src":"590:12:17"},{"attributes":{"constant":false,"name":"key","scope":6108,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6084,"name":"ElementaryTypeName","src":"604:6:17"}],"id":6085,"name":"VariableDeclaration","src":"604:19:17"},{"attributes":{"constant":false,"name":"value","scope":6108,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6086,"name":"ElementaryTypeName","src":"625:6:17"}],"id":6087,"name":"VariableDeclaration","src":"625:21:17"}],"id":6088,"name":"ParameterList","src":"589:58:17"},{"attributes":{"parameters":[null]},"children":[],"id":6092,"name":"ParameterList","src":"674:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":6089,"name":"Identifier","src":"657:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes32","value":"node"},"id":6090,"name":"Identifier","src":"668:4:17"}],"id":6091,"name":"ModifierInvocation","src":"657:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6081,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6093,"name":"Identifier","src":"684:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes32","value":"node"},"id":6094,"name":"Identifier","src":"690:4:17"}],"id":6096,"name":"IndexAccess","src":"684:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6085,"type":"string calldata","value":"key"},"id":6095,"name":"Identifier","src":"696:3:17"}],"id":6097,"name":"IndexAccess","src":"684:16:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6087,"type":"string calldata","value":"value"},"id":6098,"name":"Identifier","src":"703:5:17"}],"id":6099,"name":"Assignment","src":"684:24:17"}],"id":6100,"name":"ExpressionStatement","src":"684:24:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":6101,"name":"Identifier","src":"723:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes32","value":"node"},"id":6102,"name":"Identifier","src":"735:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6085,"type":"string calldata","value":"key"},"id":6103,"name":"Identifier","src":"741:3:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6085,"type":"string calldata","value":"key"},"id":6104,"name":"Identifier","src":"746:3:17"}],"id":6105,"name":"FunctionCall","src":"723:27:17"}],"id":6106,"name":"EmitStatement","src":"718:32:17"}],"id":6107,"name":"Block","src":"674:83:17"}],"id":6108,"name":"FunctionDefinition","src":"573:184:17"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":6142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6124,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6109,"name":"ElementaryTypeName","src":"988:7:17"}],"id":6110,"name":"VariableDeclaration","src":"988:12:17"},{"attributes":{"constant":false,"name":"key","scope":6124,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6111,"name":"ElementaryTypeName","src":"1002:6:17"}],"id":6112,"name":"VariableDeclaration","src":"1002:19:17"}],"id":6113,"name":"ParameterList","src":"987:35:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6124,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6114,"name":"ElementaryTypeName","src":"1046:6:17"}],"id":6115,"name":"VariableDeclaration","src":"1046:13:17"}],"id":6116,"name":"ParameterList","src":"1045:15:17"},{"children":[{"attributes":{"functionReturnParameters":6116},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6081,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6117,"name":"Identifier","src":"1078:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6110,"type":"bytes32","value":"node"},"id":6118,"name":"Identifier","src":"1084:4:17"}],"id":6119,"name":"IndexAccess","src":"1078:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6112,"type":"string calldata","value":"key"},"id":6120,"name":"Identifier","src":"1090:3:17"}],"id":6121,"name":"IndexAccess","src":"1078:16:17"}],"id":6122,"name":"Return","src":"1071:23:17"}],"id":6123,"name":"Block","src":"1061:40:17"}],"id":6124,"name":"FunctionDefinition","src":"974:127:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6142,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6141,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6125,"name":"ElementaryTypeName","src":"1134:6:17"}],"id":6126,"name":"VariableDeclaration","src":"1134:18:17"}],"id":6127,"name":"ParameterList","src":"1133:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6141,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6128,"name":"ElementaryTypeName","src":"1174:4:17"}],"id":6129,"name":"VariableDeclaration","src":"1174:4:17"}],"id":6130,"name":"ParameterList","src":"1173:6:17"},{"children":[{"attributes":{"functionReturnParameters":6130},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6126,"type":"bytes4","value":"interfaceID"},"id":6131,"name":"Identifier","src":"1197:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6067,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":6132,"name":"Identifier","src":"1212:17:17"}],"id":6133,"name":"BinaryOperation","src":"1197:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7618,"type":"contract super TextResolver","value":"super"},"id":6134,"name":"Identifier","src":"1233:5:17"}],"id":6135,"name":"MemberAccess","src":"1233:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6126,"type":"bytes4","value":"interfaceID"},"id":6136,"name":"Identifier","src":"1257:11:17"}],"id":6137,"name":"FunctionCall","src":"1233:36:17"}],"id":6138,"name":"BinaryOperation","src":"1197:72:17"}],"id":6139,"name":"Return","src":"1190:79:17"}],"id":6140,"name":"Block","src":"1180:96:17"}],"id":6141,"name":"FunctionDefinition","src":"1107:169:17"}],"id":6142,"name":"ContractDefinition","src":"56:1222:17"}],"id":6143,"name":"SourceUnit","src":"0:1278:17"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[4725]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3021,"name":"PragmaDirective","src":"2574:23:18"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[4725],"name":"strings","scope":4726},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":4725,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":3026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3022,"name":"ElementaryTypeName","src":"2644:4:18"}],"id":3023,"name":"VariableDeclaration","src":"2644:9:18"},{"attributes":{"constant":false,"name":"_ptr","scope":3026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3024,"name":"ElementaryTypeName","src":"2663:4:18"}],"id":3025,"name":"VariableDeclaration","src":"2663:9:18"}],"id":3026,"name":"StructDefinition","src":"2621:58:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":3066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3027,"name":"ElementaryTypeName","src":"2701:4:18"}],"id":3028,"name":"VariableDeclaration","src":"2701:9:18"},{"attributes":{"constant":false,"name":"src","scope":3066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3029,"name":"ElementaryTypeName","src":"2712:4:18"}],"id":3030,"name":"VariableDeclaration","src":"2712:8:18"},{"attributes":{"constant":false,"name":"len","scope":3066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3031,"name":"ElementaryTypeName","src":"2722:4:18"}],"id":3032,"name":"VariableDeclaration","src":"2722:8:18"}],"id":3033,"name":"ParameterList","src":"2700:31:18"},{"attributes":{"parameters":[null]},"children":[],"id":3034,"name":"ParameterList","src":"2745:0:18"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"uint256","value":"len"},"id":3035,"name":"Identifier","src":"2811:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3036,"name":"Literal","src":"2818:2:18"}],"id":3037,"name":"BinaryOperation","src":"2811:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"uint256","value":"len"},"id":3038,"name":"Identifier","src":"2822:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3039,"name":"Literal","src":"2829:2:18"}],"id":3040,"name":"Assignment","src":"2822:9:18"}],"id":3041,"name":"ExpressionStatement","src":"2822:9:18"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":3030,"isOffset":false,"isSlot":false,"src":"2893:3:18","valueSize":1}},{"dest":{"declaration":3028,"isOffset":false,"isSlot":false,"src":"2881:4:18","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":3042,"name":"InlineAssembly","src":"2847:65:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3028,"type":"uint256","value":"dest"},"id":3043,"name":"Identifier","src":"2925:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3044,"name":"Literal","src":"2933:2:18"}],"id":3045,"name":"Assignment","src":"2925:10:18"}],"id":3046,"name":"ExpressionStatement","src":"2925:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3030,"type":"uint256","value":"src"},"id":3047,"name":"Identifier","src":"2949:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3048,"name":"Literal","src":"2956:2:18"}],"id":3049,"name":"Assignment","src":"2949:9:18"}],"id":3050,"name":"ExpressionStatement","src":"2949:9:18"}],"id":3051,"name":"Block","src":"2833:136:18"}],"id":3052,"name":"ForStatement","src":"2805:164:18"},{"attributes":{"assignments":[3054]},"children":[{"attributes":{"constant":false,"name":"mask","scope":3065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3053,"name":"ElementaryTypeName","src":"3011:4:18"}],"id":3054,"name":"VariableDeclaration","src":"3011:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":3055,"name":"Literal","src":"3023:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3056,"name":"Literal","src":"3031:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"uint256","value":"len"},"id":3057,"name":"Identifier","src":"3036:3:18"}],"id":3058,"name":"BinaryOperation","src":"3031:8:18"}],"id":3059,"name":"TupleExpression","src":"3030:10:18"}],"id":3060,"name":"BinaryOperation","src":"3023:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3061,"name":"Literal","src":"3043:1:18"}],"id":3062,"name":"BinaryOperation","src":"3023:21:18"}],"id":3063,"name":"VariableDeclarationStatement","src":"3011:33:18"},{"attributes":{"externalReferences":[{"src":{"declaration":3030,"isOffset":false,"isSlot":false,"src":"3102:3:18","valueSize":1}},{"mask":{"declaration":3054,"isOffset":false,"isSlot":false,"src":"3112:4:18","valueSize":1}},{"dest":{"declaration":3028,"isOffset":false,"isSlot":false,"src":"3189:4:18","valueSize":1}},{"dest":{"declaration":3028,"isOffset":false,"isSlot":false,"src":"3157:4:18","valueSize":1}},{"mask":{"declaration":3054,"isOffset":false,"isSlot":false,"src":"3164:4:18","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":3064,"name":"InlineAssembly","src":"3054:173:18"}],"id":3065,"name":"Block","src":"2745:488:18"}],"id":3066,"name":"FunctionDefinition","src":"2685:548:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3086,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3067,"name":"ElementaryTypeName","src":"3450:6:18"}],"id":3068,"name":"VariableDeclaration","src":"3450:18:18"}],"id":3069,"name":"ParameterList","src":"3449:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3086,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3070,"name":"UserDefinedTypeName","src":"3493:5:18"}],"id":3071,"name":"VariableDeclaration","src":"3493:12:18"}],"id":3072,"name":"ParameterList","src":"3492:14:18"},{"children":[{"attributes":{"assignments":[3074],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":3085,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3073,"name":"ElementaryTypeName","src":"3517:4:18"}],"id":3074,"name":"VariableDeclaration","src":"3517:8:18"}],"id":3075,"name":"VariableDeclarationStatement","src":"3517:8:18"},{"attributes":{"externalReferences":[{"ptr":{"declaration":3074,"isOffset":false,"isSlot":false,"src":"3558:3:18","valueSize":1}},{"self":{"declaration":3068,"isOffset":false,"isSlot":false,"src":"3569:4:18","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":3076,"name":"InlineAssembly","src":"3535:55:18"},{"attributes":{"functionReturnParameters":3072},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3026,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":3077,"name":"Identifier","src":"3606:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":3078,"name":"ElementaryTypeNameExpression","src":"3612:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3068,"type":"string memory","value":"self"},"id":3079,"name":"Identifier","src":"3618:4:18"}],"id":3080,"name":"FunctionCall","src":"3612:11:18"}],"id":3081,"name":"MemberAccess","src":"3612:18:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3074,"type":"uint256","value":"ptr"},"id":3082,"name":"Identifier","src":"3632:3:18"}],"id":3083,"name":"FunctionCall","src":"3606:30:18"}],"id":3084,"name":"Return","src":"3599:37:18"}],"id":3085,"name":"Block","src":"3507:136:18"}],"id":3086,"name":"FunctionDefinition","src":"3433:210:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3212,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3087,"name":"ElementaryTypeName","src":"3852:7:18"}],"id":3088,"name":"VariableDeclaration","src":"3852:12:18"}],"id":3089,"name":"ParameterList","src":"3851:14:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3212,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3090,"name":"ElementaryTypeName","src":"3889:4:18"}],"id":3091,"name":"VariableDeclaration","src":"3889:4:18"}],"id":3092,"name":"ParameterList","src":"3888:6:18"},{"children":[{"attributes":{"assignments":[3094],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":3211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3093,"name":"ElementaryTypeName","src":"3905:4:18"}],"id":3094,"name":"VariableDeclaration","src":"3905:8:18"}],"id":3095,"name":"VariableDeclarationStatement","src":"3905:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3096,"name":"Identifier","src":"3927:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3097,"name":"Literal","src":"3935:1:18"}],"id":3098,"name":"BinaryOperation","src":"3927:9:18"},{"attributes":{"functionReturnParameters":3092},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3099,"name":"Literal","src":"3957:1:18"}],"id":3100,"name":"Return","src":"3950:8:18"}],"id":3101,"name":"IfStatement","src":"3923:35:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3102,"name":"ElementaryTypeNameExpression","src":"3972:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3103,"name":"Identifier","src":"3977:4:18"}],"id":3104,"name":"FunctionCall","src":"3972:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":3105,"name":"Literal","src":"3985:34:18"}],"id":3106,"name":"BinaryOperation","src":"3972:47:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3107,"name":"Literal","src":"4023:1:18"}],"id":3108,"name":"BinaryOperation","src":"3972:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3109,"name":"Identifier","src":"4040:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":3110,"name":"Literal","src":"4047:2:18"}],"id":3111,"name":"Assignment","src":"4040:9:18"}],"id":3112,"name":"ExpressionStatement","src":"4040:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3113,"name":"Identifier","src":"4063:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3114,"name":"ElementaryTypeNameExpression","src":"4070:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3115,"name":"ElementaryTypeNameExpression","src":"4078:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3116,"name":"Identifier","src":"4083:4:18"}],"id":3117,"name":"FunctionCall","src":"4078:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":3118,"name":"Literal","src":"4091:35:18"}],"id":3119,"name":"BinaryOperation","src":"4078:48:18"}],"id":3120,"name":"FunctionCall","src":"4070:57:18"}],"id":3121,"name":"Assignment","src":"4063:64:18"}],"id":3122,"name":"ExpressionStatement","src":"4063:64:18"}],"id":3123,"name":"Block","src":"4026:112:18"}],"id":3124,"name":"IfStatement","src":"3968:170:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3125,"name":"ElementaryTypeNameExpression","src":"4151:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3126,"name":"Identifier","src":"4156:4:18"}],"id":3127,"name":"FunctionCall","src":"4151:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":3128,"name":"Literal","src":"4164:18:18"}],"id":3129,"name":"BinaryOperation","src":"4151:31:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3130,"name":"Literal","src":"4186:1:18"}],"id":3131,"name":"BinaryOperation","src":"4151:36:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3132,"name":"Identifier","src":"4203:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3133,"name":"Literal","src":"4210:1:18"}],"id":3134,"name":"Assignment","src":"4203:8:18"}],"id":3135,"name":"ExpressionStatement","src":"4203:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3136,"name":"Identifier","src":"4225:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3137,"name":"ElementaryTypeNameExpression","src":"4232:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3138,"name":"ElementaryTypeNameExpression","src":"4240:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3139,"name":"Identifier","src":"4245:4:18"}],"id":3140,"name":"FunctionCall","src":"4240:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":3141,"name":"Literal","src":"4253:19:18"}],"id":3142,"name":"BinaryOperation","src":"4240:32:18"}],"id":3143,"name":"FunctionCall","src":"4232:41:18"}],"id":3144,"name":"Assignment","src":"4225:48:18"}],"id":3145,"name":"ExpressionStatement","src":"4225:48:18"}],"id":3146,"name":"Block","src":"4189:95:18"}],"id":3147,"name":"IfStatement","src":"4147:137:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3148,"name":"ElementaryTypeNameExpression","src":"4297:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3149,"name":"Identifier","src":"4302:4:18"}],"id":3150,"name":"FunctionCall","src":"4297:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":3151,"name":"Literal","src":"4310:10:18"}],"id":3152,"name":"BinaryOperation","src":"4297:23:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3153,"name":"Literal","src":"4324:1:18"}],"id":3154,"name":"BinaryOperation","src":"4297:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3155,"name":"Identifier","src":"4341:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3156,"name":"Literal","src":"4348:1:18"}],"id":3157,"name":"Assignment","src":"4341:8:18"}],"id":3158,"name":"ExpressionStatement","src":"4341:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3159,"name":"Identifier","src":"4363:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3160,"name":"ElementaryTypeNameExpression","src":"4370:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3161,"name":"ElementaryTypeNameExpression","src":"4378:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3162,"name":"Identifier","src":"4383:4:18"}],"id":3163,"name":"FunctionCall","src":"4378:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":3164,"name":"Literal","src":"4391:11:18"}],"id":3165,"name":"BinaryOperation","src":"4378:24:18"}],"id":3166,"name":"FunctionCall","src":"4370:33:18"}],"id":3167,"name":"Assignment","src":"4363:40:18"}],"id":3168,"name":"ExpressionStatement","src":"4363:40:18"}],"id":3169,"name":"Block","src":"4327:87:18"}],"id":3170,"name":"IfStatement","src":"4293:121:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3171,"name":"ElementaryTypeNameExpression","src":"4427:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3172,"name":"Identifier","src":"4432:4:18"}],"id":3173,"name":"FunctionCall","src":"4427:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":3174,"name":"Literal","src":"4440:6:18"}],"id":3175,"name":"BinaryOperation","src":"4427:19:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3176,"name":"Literal","src":"4450:1:18"}],"id":3177,"name":"BinaryOperation","src":"4427:24:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3178,"name":"Identifier","src":"4467:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3179,"name":"Literal","src":"4474:1:18"}],"id":3180,"name":"Assignment","src":"4467:8:18"}],"id":3181,"name":"ExpressionStatement","src":"4467:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3182,"name":"Identifier","src":"4489:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3183,"name":"ElementaryTypeNameExpression","src":"4496:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3184,"name":"ElementaryTypeNameExpression","src":"4504:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3185,"name":"Identifier","src":"4509:4:18"}],"id":3186,"name":"FunctionCall","src":"4504:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":3187,"name":"Literal","src":"4517:7:18"}],"id":3188,"name":"BinaryOperation","src":"4504:20:18"}],"id":3189,"name":"FunctionCall","src":"4496:29:18"}],"id":3190,"name":"Assignment","src":"4489:36:18"}],"id":3191,"name":"ExpressionStatement","src":"4489:36:18"}],"id":3192,"name":"Block","src":"4453:83:18"}],"id":3193,"name":"IfStatement","src":"4423:113:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3194,"name":"ElementaryTypeNameExpression","src":"4549:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3195,"name":"Identifier","src":"4554:4:18"}],"id":3196,"name":"FunctionCall","src":"4549:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":3197,"name":"Literal","src":"4562:4:18"}],"id":3198,"name":"BinaryOperation","src":"4549:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3199,"name":"Literal","src":"4570:1:18"}],"id":3200,"name":"BinaryOperation","src":"4549:22:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3201,"name":"Identifier","src":"4587:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3202,"name":"Literal","src":"4594:1:18"}],"id":3203,"name":"Assignment","src":"4587:8:18"}],"id":3204,"name":"ExpressionStatement","src":"4587:8:18"}],"id":3205,"name":"Block","src":"4573:33:18"}],"id":3206,"name":"IfStatement","src":"4545:61:18"},{"attributes":{"functionReturnParameters":3092},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3207,"name":"Literal","src":"4622:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3208,"name":"Identifier","src":"4627:3:18"}],"id":3209,"name":"BinaryOperation","src":"4622:8:18"}],"id":3210,"name":"Return","src":"4615:15:18"}],"id":3211,"name":"Block","src":"3895:742:18"}],"id":3212,"name":"FunctionDefinition","src":"3839:798:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3229,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3213,"name":"ElementaryTypeName","src":"4963:7:18"}],"id":3214,"name":"VariableDeclaration","src":"4963:12:18"}],"id":3215,"name":"ParameterList","src":"4962:14:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3216,"name":"UserDefinedTypeName","src":"5000:5:18"}],"id":3217,"name":"VariableDeclaration","src":"5000:16:18"}],"id":3218,"name":"ParameterList","src":"4999:18:18"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":3214,"isOffset":false,"isSlot":false,"src":"5222:4:18","valueSize":1}},{"ret":{"declaration":3217,"isOffset":false,"isSlot":false,"src":"5251:3:18","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":3219,"name":"InlineAssembly","src":"5111:166:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3217,"type":"struct strings.slice memory","value":"ret"},"id":3220,"name":"Identifier","src":"5286:3:18"}],"id":3222,"name":"MemberAccess","src":"5286:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[3212,3362],"referencedDeclaration":3212,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":3223,"name":"Identifier","src":"5297:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3214,"type":"bytes32","value":"self"},"id":3224,"name":"Identifier","src":"5301:4:18"}],"id":3225,"name":"FunctionCall","src":"5297:9:18"}],"id":3226,"name":"Assignment","src":"5286:20:18"}],"id":3227,"name":"ExpressionStatement","src":"5286:20:18"}],"id":3228,"name":"Block","src":"5018:295:18"}],"id":3229,"name":"FunctionDefinition","src":"4943:370:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3244,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3230,"name":"UserDefinedTypeName","src":"5528:5:18"}],"id":3231,"name":"VariableDeclaration","src":"5528:17:18"}],"id":3232,"name":"ParameterList","src":"5527:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3244,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3233,"name":"UserDefinedTypeName","src":"5570:5:18"}],"id":3234,"name":"VariableDeclaration","src":"5570:12:18"}],"id":3235,"name":"ParameterList","src":"5569:14:18"},{"children":[{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3026,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":3236,"name":"Identifier","src":"5601:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3231,"type":"struct strings.slice memory","value":"self"},"id":3237,"name":"Identifier","src":"5607:4:18"}],"id":3238,"name":"MemberAccess","src":"5607:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3231,"type":"struct strings.slice memory","value":"self"},"id":3239,"name":"Identifier","src":"5618:4:18"}],"id":3240,"name":"MemberAccess","src":"5618:9:18"}],"id":3241,"name":"FunctionCall","src":"5601:27:18"}],"id":3242,"name":"Return","src":"5594:34:18"}],"id":3243,"name":"Block","src":"5584:51:18"}],"id":3244,"name":"FunctionDefinition","src":"5514:121:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3274,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3245,"name":"UserDefinedTypeName","src":"5825:5:18"}],"id":3246,"name":"VariableDeclaration","src":"5825:17:18"}],"id":3247,"name":"ParameterList","src":"5824:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3274,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3248,"name":"ElementaryTypeName","src":"5867:6:18"}],"id":3249,"name":"VariableDeclaration","src":"5867:13:18"}],"id":3250,"name":"ParameterList","src":"5866:15:18"},{"children":[{"attributes":{"assignments":[3252]},"children":[{"attributes":{"constant":false,"name":"ret","scope":3273,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3251,"name":"ElementaryTypeName","src":"5892:6:18"}],"id":3252,"name":"VariableDeclaration","src":"5892:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":3253,"name":"ElementaryTypeName","src":"5916:6:18"}],"id":3254,"name":"NewExpression","src":"5912:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3246,"type":"struct strings.slice memory","value":"self"},"id":3255,"name":"Identifier","src":"5923:4:18"}],"id":3256,"name":"MemberAccess","src":"5923:9:18"}],"id":3257,"name":"FunctionCall","src":"5912:21:18"}],"id":3258,"name":"VariableDeclarationStatement","src":"5892:41:18"},{"attributes":{"assignments":[3260],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":3273,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3259,"name":"ElementaryTypeName","src":"5943:4:18"}],"id":3260,"name":"VariableDeclaration","src":"5943:11:18"}],"id":3261,"name":"VariableDeclarationStatement","src":"5943:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":3260,"isOffset":false,"isSlot":false,"src":"5975:6:18","valueSize":1}},{"ret":{"declaration":3252,"isOffset":false,"isSlot":false,"src":"5989:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":3262,"name":"InlineAssembly","src":"5964:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":3263,"name":"Identifier","src":"6009:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3260,"type":"uint256","value":"retptr"},"id":3264,"name":"Identifier","src":"6016:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3246,"type":"struct strings.slice memory","value":"self"},"id":3265,"name":"Identifier","src":"6024:4:18"}],"id":3266,"name":"MemberAccess","src":"6024:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3246,"type":"struct strings.slice memory","value":"self"},"id":3267,"name":"Identifier","src":"6035:4:18"}],"id":3268,"name":"MemberAccess","src":"6035:9:18"}],"id":3269,"name":"FunctionCall","src":"6009:36:18"}],"id":3270,"name":"ExpressionStatement","src":"6009:36:18"},{"attributes":{"functionReturnParameters":3250},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3252,"type":"string memory","value":"ret"},"id":3271,"name":"Identifier","src":"6062:3:18"}],"id":3272,"name":"Return","src":"6055:10:18"}],"id":3273,"name":"Block","src":"5882:190:18"}],"id":3274,"name":"FunctionDefinition","src":"5807:265:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3362,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3275,"name":"UserDefinedTypeName","src":"6476:5:18"}],"id":3276,"name":"VariableDeclaration","src":"6476:17:18"}],"id":3277,"name":"ParameterList","src":"6475:19:18"},{"children":[{"attributes":{"constant":false,"name":"l","scope":3362,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3278,"name":"ElementaryTypeName","src":"6518:4:18"}],"id":3279,"name":"VariableDeclaration","src":"6518:6:18"}],"id":3280,"name":"ParameterList","src":"6517:8:18"},{"children":[{"attributes":{"assignments":[3282]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":3361,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3281,"name":"ElementaryTypeName","src":"6611:4:18"}],"id":3282,"name":"VariableDeclaration","src":"6611:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3276,"type":"struct strings.slice memory","value":"self"},"id":3283,"name":"Identifier","src":"6622:4:18"}],"id":3284,"name":"MemberAccess","src":"6622:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":3285,"name":"Literal","src":"6634:2:18"}],"id":3286,"name":"BinaryOperation","src":"6622:14:18"}],"id":3287,"name":"VariableDeclarationStatement","src":"6611:25:18"},{"attributes":{"assignments":[3289]},"children":[{"attributes":{"constant":false,"name":"end","scope":3361,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3288,"name":"ElementaryTypeName","src":"6646:4:18"}],"id":3289,"name":"VariableDeclaration","src":"6646:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3290,"name":"Identifier","src":"6657:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3276,"type":"struct strings.slice memory","value":"self"},"id":3291,"name":"Identifier","src":"6663:4:18"}],"id":3292,"name":"MemberAccess","src":"6663:9:18"}],"id":3293,"name":"BinaryOperation","src":"6657:15:18"}],"id":3294,"name":"VariableDeclarationStatement","src":"6646:26:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3279,"type":"uint256","value":"l"},"id":3295,"name":"Identifier","src":"6687:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3296,"name":"Literal","src":"6691:1:18"}],"id":3297,"name":"Assignment","src":"6687:5:18"}],"id":3298,"name":"ExpressionStatement","src":"6687:5:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3299,"name":"Identifier","src":"6694:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3289,"type":"uint256","value":"end"},"id":3300,"name":"Identifier","src":"6700:3:18"}],"id":3301,"name":"BinaryOperation","src":"6694:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3279,"type":"uint256","value":"l"},"id":3302,"name":"Identifier","src":"6705:1:18"}],"id":3303,"name":"UnaryOperation","src":"6705:3:18"}],"id":3304,"name":"ExpressionStatement","src":"6705:3:18"},{"children":[{"attributes":{"assignments":[3306],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3359,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3305,"name":"ElementaryTypeName","src":"6724:5:18"}],"id":3306,"name":"VariableDeclaration","src":"6724:7:18"}],"id":3307,"name":"VariableDeclarationStatement","src":"6724:7:18"},{"attributes":{"externalReferences":[{"b":{"declaration":3306,"isOffset":false,"isSlot":false,"src":"6756:1:18","valueSize":1}},{"ptr":{"declaration":3282,"isOffset":false,"isSlot":false,"src":"6771:3:18","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":3308,"name":"InlineAssembly","src":"6745:39:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3309,"name":"Identifier","src":"6801:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3310,"name":"Literal","src":"6805:4:18"}],"id":3311,"name":"BinaryOperation","src":"6801:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3312,"name":"Identifier","src":"6829:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3313,"name":"Literal","src":"6836:1:18"}],"id":3314,"name":"Assignment","src":"6829:8:18"}],"id":3315,"name":"ExpressionStatement","src":"6829:8:18"}],"id":3316,"name":"Block","src":"6811:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3317,"name":"Identifier","src":"6862:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3318,"name":"Literal","src":"6866:4:18"}],"id":3319,"name":"BinaryOperation","src":"6862:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3320,"name":"Identifier","src":"6890:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3321,"name":"Literal","src":"6897:1:18"}],"id":3322,"name":"Assignment","src":"6890:8:18"}],"id":3323,"name":"ExpressionStatement","src":"6890:8:18"}],"id":3324,"name":"Block","src":"6872:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3325,"name":"Identifier","src":"6923:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3326,"name":"Literal","src":"6927:4:18"}],"id":3327,"name":"BinaryOperation","src":"6923:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3328,"name":"Identifier","src":"6951:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3329,"name":"Literal","src":"6958:1:18"}],"id":3330,"name":"Assignment","src":"6951:8:18"}],"id":3331,"name":"ExpressionStatement","src":"6951:8:18"}],"id":3332,"name":"Block","src":"6933:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3333,"name":"Identifier","src":"6984:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":3334,"name":"Literal","src":"6988:4:18"}],"id":3335,"name":"BinaryOperation","src":"6984:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3336,"name":"Identifier","src":"7012:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3337,"name":"Literal","src":"7019:1:18"}],"id":3338,"name":"Assignment","src":"7012:8:18"}],"id":3339,"name":"ExpressionStatement","src":"7012:8:18"}],"id":3340,"name":"Block","src":"6994:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3341,"name":"Identifier","src":"7045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":3342,"name":"Literal","src":"7049:4:18"}],"id":3343,"name":"BinaryOperation","src":"7045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3344,"name":"Identifier","src":"7073:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":3345,"name":"Literal","src":"7080:1:18"}],"id":3346,"name":"Assignment","src":"7073:8:18"}],"id":3347,"name":"ExpressionStatement","src":"7073:8:18"}],"id":3348,"name":"Block","src":"7055:41:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3349,"name":"Identifier","src":"7120:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":3350,"name":"Literal","src":"7127:1:18"}],"id":3351,"name":"Assignment","src":"7120:8:18"}],"id":3352,"name":"ExpressionStatement","src":"7120:8:18"}],"id":3353,"name":"Block","src":"7102:41:18"}],"id":3354,"name":"IfStatement","src":"7041:102:18"}],"id":3355,"name":"IfStatement","src":"6980:163:18"}],"id":3356,"name":"IfStatement","src":"6919:224:18"}],"id":3357,"name":"IfStatement","src":"6858:285:18"}],"id":3358,"name":"IfStatement","src":"6797:346:18"}],"id":3359,"name":"Block","src":"6710:443:18"}],"id":3360,"name":"ForStatement","src":"6682:471:18"}],"id":3361,"name":"Block","src":"6526:633:18"}],"id":3362,"name":"FunctionDefinition","src":"6463:696:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3375,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3363,"name":"UserDefinedTypeName","src":"7367:5:18"}],"id":3364,"name":"VariableDeclaration","src":"7367:17:18"}],"id":3365,"name":"ParameterList","src":"7366:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3375,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3366,"name":"ElementaryTypeName","src":"7409:4:18"}],"id":3367,"name":"VariableDeclaration","src":"7409:4:18"}],"id":3368,"name":"ParameterList","src":"7408:6:18"},{"children":[{"attributes":{"functionReturnParameters":3368},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"struct strings.slice memory","value":"self"},"id":3369,"name":"Identifier","src":"7432:4:18"}],"id":3370,"name":"MemberAccess","src":"7432:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3371,"name":"Literal","src":"7445:1:18"}],"id":3372,"name":"BinaryOperation","src":"7432:14:18"}],"id":3373,"name":"Return","src":"7425:21:18"}],"id":3374,"name":"Block","src":"7415:38:18"}],"id":3375,"name":"FunctionDefinition","src":"7352:101:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3504,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3376,"name":"UserDefinedTypeName","src":"7898:5:18"}],"id":3377,"name":"VariableDeclaration","src":"7898:17:18"},{"attributes":{"constant":false,"name":"other","scope":3504,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3378,"name":"UserDefinedTypeName","src":"7917:5:18"}],"id":3379,"name":"VariableDeclaration","src":"7917:18:18"}],"id":3380,"name":"ParameterList","src":"7897:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3504,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":3381,"name":"ElementaryTypeName","src":"7960:3:18"}],"id":3382,"name":"VariableDeclaration","src":"7960:3:18"}],"id":3383,"name":"ParameterList","src":"7959:5:18"},{"children":[{"attributes":{"assignments":[3385]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":3503,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3384,"name":"ElementaryTypeName","src":"7975:4:18"}],"id":3385,"name":"VariableDeclaration","src":"7975:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"struct strings.slice memory","value":"self"},"id":3386,"name":"Identifier","src":"7991:4:18"}],"id":3387,"name":"MemberAccess","src":"7991:9:18"}],"id":3388,"name":"VariableDeclarationStatement","src":"7975:25:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3379,"type":"struct strings.slice memory","value":"other"},"id":3389,"name":"Identifier","src":"8014:5:18"}],"id":3390,"name":"MemberAccess","src":"8014:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"struct strings.slice memory","value":"self"},"id":3391,"name":"Identifier","src":"8027:4:18"}],"id":3392,"name":"MemberAccess","src":"8027:9:18"}],"id":3393,"name":"BinaryOperation","src":"8014:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3385,"type":"uint256","value":"shortest"},"id":3394,"name":"Identifier","src":"8050:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3379,"type":"struct strings.slice memory","value":"other"},"id":3395,"name":"Identifier","src":"8061:5:18"}],"id":3396,"name":"MemberAccess","src":"8061:10:18"}],"id":3397,"name":"Assignment","src":"8050:21:18"}],"id":3398,"name":"ExpressionStatement","src":"8050:21:18"}],"id":3399,"name":"IfStatement","src":"8010:61:18"},{"attributes":{"assignments":[3401]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":3503,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3400,"name":"ElementaryTypeName","src":"8082:4:18"}],"id":3401,"name":"VariableDeclaration","src":"8082:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"struct strings.slice memory","value":"self"},"id":3402,"name":"Identifier","src":"8097:4:18"}],"id":3403,"name":"MemberAccess","src":"8097:9:18"}],"id":3404,"name":"VariableDeclarationStatement","src":"8082:24:18"},{"attributes":{"assignments":[3406]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":3503,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3405,"name":"ElementaryTypeName","src":"8116:4:18"}],"id":3406,"name":"VariableDeclaration","src":"8116:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3379,"type":"struct strings.slice memory","value":"other"},"id":3407,"name":"Identifier","src":"8132:5:18"}],"id":3408,"name":"MemberAccess","src":"8132:10:18"}],"id":3409,"name":"VariableDeclarationStatement","src":"8116:26:18"},{"children":[{"attributes":{"assignments":[3411]},"children":[{"attributes":{"constant":false,"name":"idx","scope":3492,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3410,"name":"ElementaryTypeName","src":"8157:4:18"}],"id":3411,"name":"VariableDeclaration","src":"8157:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3412,"name":"Literal","src":"8168:1:18"}],"id":3413,"name":"VariableDeclarationStatement","src":"8157:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3411,"type":"uint256","value":"idx"},"id":3414,"name":"Identifier","src":"8171:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3385,"type":"uint256","value":"shortest"},"id":3415,"name":"Identifier","src":"8177:8:18"}],"id":3416,"name":"BinaryOperation","src":"8171:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3411,"type":"uint256","value":"idx"},"id":3417,"name":"Identifier","src":"8187:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3418,"name":"Literal","src":"8194:2:18"}],"id":3419,"name":"Assignment","src":"8187:9:18"}],"id":3420,"name":"ExpressionStatement","src":"8187:9:18"},{"children":[{"attributes":{"assignments":[3422],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":3491,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3421,"name":"ElementaryTypeName","src":"8212:4:18"}],"id":3422,"name":"VariableDeclaration","src":"8212:6:18"}],"id":3423,"name":"VariableDeclarationStatement","src":"8212:6:18"},{"attributes":{"assignments":[3425],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3491,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3424,"name":"ElementaryTypeName","src":"8232:4:18"}],"id":3425,"name":"VariableDeclaration","src":"8232:6:18"}],"id":3426,"name":"VariableDeclarationStatement","src":"8232:6:18"},{"attributes":{"externalReferences":[{"a":{"declaration":3422,"isOffset":false,"isSlot":false,"src":"8279:1:18","valueSize":1}},{"selfptr":{"declaration":3401,"isOffset":false,"isSlot":false,"src":"8290:7:18","valueSize":1}},{"b":{"declaration":3425,"isOffset":false,"isSlot":false,"src":"8315:1:18","valueSize":1}},{"otherptr":{"declaration":3406,"isOffset":false,"isSlot":false,"src":"8326:8:18","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":3427,"name":"InlineAssembly","src":"8252:97:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"uint256","value":"a"},"id":3428,"name":"Identifier","src":"8366:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3425,"type":"uint256","value":"b"},"id":3429,"name":"Identifier","src":"8371:1:18"}],"id":3430,"name":"BinaryOperation","src":"8366:6:18"},{"children":[{"attributes":{"assignments":[3432]},"children":[{"attributes":{"constant":false,"name":"mask","scope":3481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3431,"name":"ElementaryTypeName","src":"8453:7:18"}],"id":3432,"name":"VariableDeclaration","src":"8453:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":3433,"name":"ElementaryTypeNameExpression","src":"8468:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3434,"name":"Literal","src":"8477:1:18"}],"id":3435,"name":"UnaryOperation","src":"8476:2:18"}],"id":3436,"name":"FunctionCall","src":"8468:11:18"}],"id":3437,"name":"VariableDeclarationStatement","src":"8453:26:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3385,"type":"uint256","value":"shortest"},"id":3438,"name":"Identifier","src":"8514:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3439,"name":"Literal","src":"8525:2:18"}],"id":3440,"name":"BinaryOperation","src":"8514:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"uint256","value":"mask"},"id":3441,"name":"Identifier","src":"8551:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3442,"name":"Literal","src":"8560:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3443,"name":"Literal","src":"8566:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3444,"name":"Literal","src":"8571:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3385,"type":"uint256","value":"shortest"},"id":3445,"name":"Identifier","src":"8576:8:18"}],"id":3446,"name":"BinaryOperation","src":"8571:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3411,"type":"uint256","value":"idx"},"id":3447,"name":"Identifier","src":"8587:3:18"}],"id":3448,"name":"BinaryOperation","src":"8571:19:18"}],"id":3449,"name":"TupleExpression","src":"8570:21:18"}],"id":3450,"name":"BinaryOperation","src":"8566:25:18"}],"id":3451,"name":"TupleExpression","src":"8565:27:18"}],"id":3452,"name":"BinaryOperation","src":"8560:32:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3453,"name":"Literal","src":"8595:1:18"}],"id":3454,"name":"BinaryOperation","src":"8560:36:18"}],"id":3455,"name":"TupleExpression","src":"8559:38:18"}],"id":3456,"name":"UnaryOperation","src":"8558:39:18"}],"id":3457,"name":"Assignment","src":"8551:46:18"}],"id":3458,"name":"ExpressionStatement","src":"8551:46:18"}],"id":3459,"name":"Block","src":"8529:87:18"}],"id":3460,"name":"IfStatement","src":"8510:106:18"},{"attributes":{"assignments":[3462]},"children":[{"attributes":{"constant":false,"name":"diff","scope":3481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3461,"name":"ElementaryTypeName","src":"8633:7:18"}],"id":3462,"name":"VariableDeclaration","src":"8633:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"uint256","value":"a"},"id":3463,"name":"Identifier","src":"8649:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"uint256","value":"mask"},"id":3464,"name":"Identifier","src":"8653:4:18"}],"id":3465,"name":"BinaryOperation","src":"8649:8:18"}],"id":3466,"name":"TupleExpression","src":"8648:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3425,"type":"uint256","value":"b"},"id":3467,"name":"Identifier","src":"8662:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"uint256","value":"mask"},"id":3468,"name":"Identifier","src":"8666:4:18"}],"id":3469,"name":"BinaryOperation","src":"8662:8:18"}],"id":3470,"name":"TupleExpression","src":"8661:10:18"}],"id":3471,"name":"BinaryOperation","src":"8648:23:18"}],"id":3472,"name":"VariableDeclarationStatement","src":"8633:38:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3462,"type":"uint256","value":"diff"},"id":3473,"name":"Identifier","src":"8693:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3474,"name":"Literal","src":"8701:1:18"}],"id":3475,"name":"BinaryOperation","src":"8693:9:18"},{"attributes":{"functionReturnParameters":3383},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3476,"name":"ElementaryTypeNameExpression","src":"8731:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3462,"type":"uint256","value":"diff"},"id":3477,"name":"Identifier","src":"8735:4:18"}],"id":3478,"name":"FunctionCall","src":"8731:9:18"}],"id":3479,"name":"Return","src":"8724:16:18"}],"id":3480,"name":"IfStatement","src":"8689:51:18"}],"id":3481,"name":"Block","src":"8374:381:18"}],"id":3482,"name":"IfStatement","src":"8362:393:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3401,"type":"uint256","value":"selfptr"},"id":3483,"name":"Identifier","src":"8768:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3484,"name":"Literal","src":"8779:2:18"}],"id":3485,"name":"Assignment","src":"8768:13:18"}],"id":3486,"name":"ExpressionStatement","src":"8768:13:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3406,"type":"uint256","value":"otherptr"},"id":3487,"name":"Identifier","src":"8795:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3488,"name":"Literal","src":"8807:2:18"}],"id":3489,"name":"Assignment","src":"8795:14:18"}],"id":3490,"name":"ExpressionStatement","src":"8795:14:18"}],"id":3491,"name":"Block","src":"8198:622:18"}],"id":3492,"name":"ForStatement","src":"8152:668:18"},{"attributes":{"functionReturnParameters":3383},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3493,"name":"ElementaryTypeNameExpression","src":"8836:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"struct strings.slice memory","value":"self"},"id":3494,"name":"Identifier","src":"8840:4:18"}],"id":3495,"name":"MemberAccess","src":"8840:9:18"}],"id":3496,"name":"FunctionCall","src":"8836:14:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3497,"name":"ElementaryTypeNameExpression","src":"8853:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3379,"type":"struct strings.slice memory","value":"other"},"id":3498,"name":"Identifier","src":"8857:5:18"}],"id":3499,"name":"MemberAccess","src":"8857:10:18"}],"id":3500,"name":"FunctionCall","src":"8853:15:18"}],"id":3501,"name":"BinaryOperation","src":"8836:32:18"}],"id":3502,"name":"Return","src":"8829:39:18"}],"id":3503,"name":"Block","src":"7965:910:18"}],"id":3504,"name":"FunctionDefinition","src":"7881:994:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3521,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3505,"name":"UserDefinedTypeName","src":"9135:5:18"}],"id":3506,"name":"VariableDeclaration","src":"9135:17:18"},{"attributes":{"constant":false,"name":"other","scope":3521,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3507,"name":"UserDefinedTypeName","src":"9154:5:18"}],"id":3508,"name":"VariableDeclaration","src":"9154:18:18"}],"id":3509,"name":"ParameterList","src":"9134:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3521,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3510,"name":"ElementaryTypeName","src":"9197:4:18"}],"id":3511,"name":"VariableDeclaration","src":"9197:4:18"}],"id":3512,"name":"ParameterList","src":"9196:6:18"},{"children":[{"attributes":{"functionReturnParameters":3512},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3504,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":3513,"name":"Identifier","src":"9220:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3506,"type":"struct strings.slice memory","value":"self"},"id":3514,"name":"Identifier","src":"9228:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3508,"type":"struct strings.slice memory","value":"other"},"id":3515,"name":"Identifier","src":"9234:5:18"}],"id":3516,"name":"FunctionCall","src":"9220:20:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3517,"name":"Literal","src":"9244:1:18"}],"id":3518,"name":"BinaryOperation","src":"9220:25:18"}],"id":3519,"name":"Return","src":"9213:32:18"}],"id":3520,"name":"Block","src":"9203:49:18"}],"id":3521,"name":"FunctionDefinition","src":"9119:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3522,"name":"UserDefinedTypeName","src":"9563:5:18"}],"id":3523,"name":"VariableDeclaration","src":"9563:17:18"},{"attributes":{"constant":false,"name":"rune","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3524,"name":"UserDefinedTypeName","src":"9582:5:18"}],"id":3525,"name":"VariableDeclaration","src":"9582:17:18"}],"id":3526,"name":"ParameterList","src":"9562:38:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3527,"name":"UserDefinedTypeName","src":"9624:5:18"}],"id":3528,"name":"VariableDeclaration","src":"9624:12:18"}],"id":3529,"name":"ParameterList","src":"9623:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3530,"name":"Identifier","src":"9648:4:18"}],"id":3532,"name":"MemberAccess","src":"9648:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3533,"name":"Identifier","src":"9660:4:18"}],"id":3534,"name":"MemberAccess","src":"9660:9:18"}],"id":3535,"name":"Assignment","src":"9648:21:18"}],"id":3536,"name":"ExpressionStatement","src":"9648:21:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3537,"name":"Identifier","src":"9684:4:18"}],"id":3538,"name":"MemberAccess","src":"9684:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3539,"name":"Literal","src":"9697:1:18"}],"id":3540,"name":"BinaryOperation","src":"9684:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3541,"name":"Identifier","src":"9714:4:18"}],"id":3543,"name":"MemberAccess","src":"9714:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3544,"name":"Literal","src":"9726:1:18"}],"id":3545,"name":"Assignment","src":"9714:13:18"}],"id":3546,"name":"ExpressionStatement","src":"9714:13:18"},{"attributes":{"functionReturnParameters":3529},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3547,"name":"Identifier","src":"9748:4:18"}],"id":3548,"name":"Return","src":"9741:11:18"}],"id":3549,"name":"Block","src":"9700:63:18"}],"id":3550,"name":"IfStatement","src":"9680:83:18"},{"attributes":{"assignments":[3552],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":3638,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3551,"name":"ElementaryTypeName","src":"9773:4:18"}],"id":3552,"name":"VariableDeclaration","src":"9773:6:18"}],"id":3553,"name":"VariableDeclarationStatement","src":"9773:6:18"},{"attributes":{"assignments":[3555],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3638,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3554,"name":"ElementaryTypeName","src":"9789:4:18"}],"id":3555,"name":"VariableDeclaration","src":"9789:6:18"}],"id":3556,"name":"VariableDeclarationStatement","src":"9789:6:18"},{"attributes":{"externalReferences":[{"b":{"declaration":3555,"isOffset":false,"isSlot":false,"src":"9878:1:18","valueSize":1}},{"self":{"declaration":3523,"isOffset":false,"isSlot":false,"src":"9907:4:18","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":3557,"name":"InlineAssembly","src":"9867:65:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"uint256","value":"b"},"id":3558,"name":"Identifier","src":"9945:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3559,"name":"Literal","src":"9949:4:18"}],"id":3560,"name":"BinaryOperation","src":"9945:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3561,"name":"Identifier","src":"9969:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3562,"name":"Literal","src":"9973:1:18"}],"id":3563,"name":"Assignment","src":"9969:5:18"}],"id":3564,"name":"ExpressionStatement","src":"9969:5:18"}],"id":3565,"name":"Block","src":"9955:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"uint256","value":"b"},"id":3566,"name":"Identifier","src":"9995:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3567,"name":"Literal","src":"9999:4:18"}],"id":3568,"name":"BinaryOperation","src":"9995:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3569,"name":"Identifier","src":"10019:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3570,"name":"Literal","src":"10023:1:18"}],"id":3571,"name":"Assignment","src":"10019:5:18"}],"id":3572,"name":"ExpressionStatement","src":"10019:5:18"}],"id":3573,"name":"Block","src":"10005:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"uint256","value":"b"},"id":3574,"name":"Identifier","src":"10045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3575,"name":"Literal","src":"10049:4:18"}],"id":3576,"name":"BinaryOperation","src":"10045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3577,"name":"Identifier","src":"10069:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3578,"name":"Literal","src":"10073:1:18"}],"id":3579,"name":"Assignment","src":"10069:5:18"}],"id":3580,"name":"ExpressionStatement","src":"10069:5:18"}],"id":3581,"name":"Block","src":"10055:30:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3582,"name":"Identifier","src":"10105:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3583,"name":"Literal","src":"10109:1:18"}],"id":3584,"name":"Assignment","src":"10105:5:18"}],"id":3585,"name":"ExpressionStatement","src":"10105:5:18"}],"id":3586,"name":"Block","src":"10091:30:18"}],"id":3587,"name":"IfStatement","src":"10041:80:18"}],"id":3588,"name":"IfStatement","src":"9991:130:18"}],"id":3589,"name":"IfStatement","src":"9941:180:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3590,"name":"Identifier","src":"10177:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3591,"name":"Identifier","src":"10181:4:18"}],"id":3592,"name":"MemberAccess","src":"10181:9:18"}],"id":3593,"name":"BinaryOperation","src":"10177:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3594,"name":"Identifier","src":"10206:4:18"}],"id":3596,"name":"MemberAccess","src":"10206:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3597,"name":"Identifier","src":"10218:4:18"}],"id":3598,"name":"MemberAccess","src":"10218:9:18"}],"id":3599,"name":"Assignment","src":"10206:21:18"}],"id":3600,"name":"ExpressionStatement","src":"10206:21:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3601,"name":"Identifier","src":"10241:4:18"}],"id":3603,"name":"MemberAccess","src":"10241:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3604,"name":"Identifier","src":"10254:4:18"}],"id":3605,"name":"MemberAccess","src":"10254:9:18"}],"id":3606,"name":"Assignment","src":"10241:22:18"}],"id":3607,"name":"ExpressionStatement","src":"10241:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3608,"name":"Identifier","src":"10277:4:18"}],"id":3610,"name":"MemberAccess","src":"10277:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3611,"name":"Literal","src":"10289:1:18"}],"id":3612,"name":"Assignment","src":"10277:13:18"}],"id":3613,"name":"ExpressionStatement","src":"10277:13:18"},{"attributes":{"functionReturnParameters":3529},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3614,"name":"Identifier","src":"10311:4:18"}],"id":3615,"name":"Return","src":"10304:11:18"}],"id":3616,"name":"Block","src":"10192:134:18"}],"id":3617,"name":"IfStatement","src":"10173:153:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3618,"name":"Identifier","src":"10336:4:18"}],"id":3620,"name":"MemberAccess","src":"10336:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3621,"name":"Identifier","src":"10349:1:18"}],"id":3622,"name":"Assignment","src":"10336:14:18"}],"id":3623,"name":"ExpressionStatement","src":"10336:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3624,"name":"Identifier","src":"10360:4:18"}],"id":3626,"name":"MemberAccess","src":"10360:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3627,"name":"Identifier","src":"10373:1:18"}],"id":3628,"name":"Assignment","src":"10360:14:18"}],"id":3629,"name":"ExpressionStatement","src":"10360:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3630,"name":"Identifier","src":"10384:4:18"}],"id":3632,"name":"MemberAccess","src":"10384:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3633,"name":"Identifier","src":"10396:1:18"}],"id":3634,"name":"Assignment","src":"10384:13:18"}],"id":3635,"name":"ExpressionStatement","src":"10384:13:18"},{"attributes":{"functionReturnParameters":3529},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3636,"name":"Identifier","src":"10414:4:18"}],"id":3637,"name":"Return","src":"10407:11:18"}],"id":3638,"name":"Block","src":"9638:787:18"}],"id":3639,"name":"FunctionDefinition","src":"9545:880:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3652,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3640,"name":"UserDefinedTypeName","src":"10683:5:18"}],"id":3641,"name":"VariableDeclaration","src":"10683:17:18"}],"id":3642,"name":"ParameterList","src":"10682:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3652,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3643,"name":"UserDefinedTypeName","src":"10725:5:18"}],"id":3644,"name":"VariableDeclaration","src":"10725:16:18"}],"id":3645,"name":"ParameterList","src":"10724:18:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[3639,3652],"referencedDeclaration":3639,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":3646,"name":"Identifier","src":"10753:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3647,"name":"Identifier","src":"10762:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3644,"type":"struct strings.slice memory","value":"ret"},"id":3648,"name":"Identifier","src":"10768:3:18"}],"id":3649,"name":"FunctionCall","src":"10753:19:18"}],"id":3650,"name":"ExpressionStatement","src":"10753:19:18"}],"id":3651,"name":"Block","src":"10743:36:18"}],"id":3652,"name":"FunctionDefinition","src":"10665:114:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3799,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3653,"name":"UserDefinedTypeName","src":"10988:5:18"}],"id":3654,"name":"VariableDeclaration","src":"10988:17:18"}],"id":3655,"name":"ParameterList","src":"10987:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3799,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3656,"name":"ElementaryTypeName","src":"11030:4:18"}],"id":3657,"name":"VariableDeclaration","src":"11030:8:18"}],"id":3658,"name":"ParameterList","src":"11029:10:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3654,"type":"struct strings.slice memory","value":"self"},"id":3659,"name":"Identifier","src":"11054:4:18"}],"id":3660,"name":"MemberAccess","src":"11054:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3661,"name":"Literal","src":"11067:1:18"}],"id":3662,"name":"BinaryOperation","src":"11054:14:18"},{"children":[{"attributes":{"functionReturnParameters":3658},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3663,"name":"Literal","src":"11091:1:18"}],"id":3664,"name":"Return","src":"11084:8:18"}],"id":3665,"name":"Block","src":"11070:33:18"}],"id":3666,"name":"IfStatement","src":"11050:53:18"},{"attributes":{"assignments":[3668],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":3798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3667,"name":"ElementaryTypeName","src":"11113:4:18"}],"id":3668,"name":"VariableDeclaration","src":"11113:9:18"}],"id":3669,"name":"VariableDeclarationStatement","src":"11113:9:18"},{"attributes":{"assignments":[3671],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":3798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3670,"name":"ElementaryTypeName","src":"11132:4:18"}],"id":3671,"name":"VariableDeclaration","src":"11132:11:18"}],"id":3672,"name":"VariableDeclarationStatement","src":"11132:11:18"},{"attributes":{"assignments":[3674]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":3798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3673,"name":"ElementaryTypeName","src":"11153:4:18"}],"id":3674,"name":"VariableDeclaration","src":"11153:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3675,"name":"Literal","src":"11168:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":3676,"name":"Literal","src":"11173:3:18"}],"id":3677,"name":"BinaryOperation","src":"11168:8:18"}],"id":3678,"name":"VariableDeclarationStatement","src":"11153:23:18"},{"attributes":{"externalReferences":[{"word":{"declaration":3668,"isOffset":false,"isSlot":false,"src":"11242:4:18","valueSize":1}},{"self":{"declaration":3654,"isOffset":false,"isSlot":false,"src":"11265:4:18","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":3679,"name":"InlineAssembly","src":"11231:47:18"},{"attributes":{"assignments":[3681]},"children":[{"attributes":{"constant":false,"name":"b","scope":3798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3680,"name":"ElementaryTypeName","src":"11287:4:18"}],"id":3681,"name":"VariableDeclaration","src":"11287:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"uint256","value":"word"},"id":3682,"name":"Identifier","src":"11296:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3674,"type":"uint256","value":"divisor"},"id":3683,"name":"Identifier","src":"11303:7:18"}],"id":3684,"name":"BinaryOperation","src":"11296:14:18"}],"id":3685,"name":"VariableDeclarationStatement","src":"11287:23:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3686,"name":"Identifier","src":"11324:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3687,"name":"Literal","src":"11328:4:18"}],"id":3688,"name":"BinaryOperation","src":"11324:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3689,"name":"Identifier","src":"11348:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3690,"name":"Identifier","src":"11354:1:18"}],"id":3691,"name":"Assignment","src":"11348:7:18"}],"id":3692,"name":"ExpressionStatement","src":"11348:7:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3693,"name":"Identifier","src":"11369:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3694,"name":"Literal","src":"11378:1:18"}],"id":3695,"name":"Assignment","src":"11369:10:18"}],"id":3696,"name":"ExpressionStatement","src":"11369:10:18"}],"id":3697,"name":"Block","src":"11334:56:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3698,"name":"Identifier","src":"11400:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3699,"name":"Literal","src":"11404:4:18"}],"id":3700,"name":"BinaryOperation","src":"11400:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3701,"name":"Identifier","src":"11424:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3702,"name":"Identifier","src":"11430:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":3703,"name":"Literal","src":"11434:4:18"}],"id":3704,"name":"BinaryOperation","src":"11430:8:18"}],"id":3705,"name":"Assignment","src":"11424:14:18"}],"id":3706,"name":"ExpressionStatement","src":"11424:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3707,"name":"Identifier","src":"11452:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3708,"name":"Literal","src":"11461:1:18"}],"id":3709,"name":"Assignment","src":"11452:10:18"}],"id":3710,"name":"ExpressionStatement","src":"11452:10:18"}],"id":3711,"name":"Block","src":"11410:63:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3712,"name":"Identifier","src":"11483:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3713,"name":"Literal","src":"11487:4:18"}],"id":3714,"name":"BinaryOperation","src":"11483:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3715,"name":"Identifier","src":"11507:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3716,"name":"Identifier","src":"11513:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":3717,"name":"Literal","src":"11517:4:18"}],"id":3718,"name":"BinaryOperation","src":"11513:8:18"}],"id":3719,"name":"Assignment","src":"11507:14:18"}],"id":3720,"name":"ExpressionStatement","src":"11507:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3721,"name":"Identifier","src":"11535:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3722,"name":"Literal","src":"11544:1:18"}],"id":3723,"name":"Assignment","src":"11535:10:18"}],"id":3724,"name":"ExpressionStatement","src":"11535:10:18"}],"id":3725,"name":"Block","src":"11493:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3726,"name":"Identifier","src":"11576:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3727,"name":"Identifier","src":"11582:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":3728,"name":"Literal","src":"11586:4:18"}],"id":3729,"name":"BinaryOperation","src":"11582:8:18"}],"id":3730,"name":"Assignment","src":"11576:14:18"}],"id":3731,"name":"ExpressionStatement","src":"11576:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3732,"name":"Identifier","src":"11604:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3733,"name":"Literal","src":"11613:1:18"}],"id":3734,"name":"Assignment","src":"11604:10:18"}],"id":3735,"name":"ExpressionStatement","src":"11604:10:18"}],"id":3736,"name":"Block","src":"11562:63:18"}],"id":3737,"name":"IfStatement","src":"11479:146:18"}],"id":3738,"name":"IfStatement","src":"11396:229:18"}],"id":3739,"name":"IfStatement","src":"11320:305:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3740,"name":"Identifier","src":"11681:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3654,"type":"struct strings.slice memory","value":"self"},"id":3741,"name":"Identifier","src":"11690:4:18"}],"id":3742,"name":"MemberAccess","src":"11690:9:18"}],"id":3743,"name":"BinaryOperation","src":"11681:18:18"},{"children":[{"attributes":{"functionReturnParameters":3658},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3744,"name":"Literal","src":"11722:1:18"}],"id":3745,"name":"Return","src":"11715:8:18"}],"id":3746,"name":"Block","src":"11701:33:18"}],"id":3747,"name":"IfStatement","src":"11677:57:18"},{"children":[{"attributes":{"assignments":[3749]},"children":[{"attributes":{"constant":false,"name":"i","scope":3795,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3748,"name":"ElementaryTypeName","src":"11749:4:18"}],"id":3749,"name":"VariableDeclaration","src":"11749:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3750,"name":"Literal","src":"11758:1:18"}],"id":3751,"name":"VariableDeclarationStatement","src":"11749:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3749,"type":"uint256","value":"i"},"id":3752,"name":"Identifier","src":"11761:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3753,"name":"Identifier","src":"11765:6:18"}],"id":3754,"name":"BinaryOperation","src":"11761:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3749,"type":"uint256","value":"i"},"id":3755,"name":"Identifier","src":"11773:1:18"}],"id":3756,"name":"UnaryOperation","src":"11773:3:18"}],"id":3757,"name":"ExpressionStatement","src":"11773:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3674,"type":"uint256","value":"divisor"},"id":3758,"name":"Identifier","src":"11792:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3674,"type":"uint256","value":"divisor"},"id":3759,"name":"Identifier","src":"11802:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":3760,"name":"Literal","src":"11812:3:18"}],"id":3761,"name":"BinaryOperation","src":"11802:13:18"}],"id":3762,"name":"Assignment","src":"11792:23:18"}],"id":3763,"name":"ExpressionStatement","src":"11792:23:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3764,"name":"Identifier","src":"11829:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"uint256","value":"word"},"id":3765,"name":"Identifier","src":"11834:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3674,"type":"uint256","value":"divisor"},"id":3766,"name":"Identifier","src":"11841:7:18"}],"id":3767,"name":"BinaryOperation","src":"11834:14:18"}],"id":3768,"name":"TupleExpression","src":"11833:16:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":3769,"name":"Literal","src":"11852:4:18"}],"id":3770,"name":"BinaryOperation","src":"11833:23:18"}],"id":3771,"name":"Assignment","src":"11829:27:18"}],"id":3772,"name":"ExpressionStatement","src":"11829:27:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3773,"name":"Identifier","src":"11874:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":3774,"name":"Literal","src":"11878:4:18"}],"id":3775,"name":"BinaryOperation","src":"11874:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3776,"name":"Literal","src":"11886:4:18"}],"id":3777,"name":"BinaryOperation","src":"11874:16:18"},{"children":[{"attributes":{"functionReturnParameters":3658},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3778,"name":"Literal","src":"11959:1:18"}],"id":3779,"name":"Return","src":"11952:8:18"}],"id":3780,"name":"Block","src":"11892:83:18"}],"id":3781,"name":"IfStatement","src":"11870:105:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3782,"name":"Identifier","src":"11988:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3783,"name":"Identifier","src":"11995:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":3784,"name":"Literal","src":"12001:2:18"}],"id":3785,"name":"BinaryOperation","src":"11995:8:18"}],"id":3786,"name":"TupleExpression","src":"11994:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3787,"name":"Identifier","src":"12008:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":3788,"name":"Literal","src":"12012:4:18"}],"id":3789,"name":"BinaryOperation","src":"12008:8:18"}],"id":3790,"name":"TupleExpression","src":"12007:10:18"}],"id":3791,"name":"BinaryOperation","src":"11994:23:18"}],"id":3792,"name":"Assignment","src":"11988:29:18"}],"id":3793,"name":"ExpressionStatement","src":"11988:29:18"}],"id":3794,"name":"Block","src":"11778:250:18"}],"id":3795,"name":"ForStatement","src":"11744:284:18"},{"attributes":{"functionReturnParameters":3658},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3796,"name":"Identifier","src":"12045:3:18"}],"id":3797,"name":"Return","src":"12038:10:18"}],"id":3798,"name":"Block","src":"11040:1015:18"}],"id":3799,"name":"FunctionDefinition","src":"10975:1080:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3808,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3800,"name":"UserDefinedTypeName","src":"12222:5:18"}],"id":3801,"name":"VariableDeclaration","src":"12222:17:18"}],"id":3802,"name":"ParameterList","src":"12221:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3808,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3803,"name":"ElementaryTypeName","src":"12264:7:18"}],"id":3804,"name":"VariableDeclaration","src":"12264:11:18"}],"id":3805,"name":"ParameterList","src":"12263:13:18"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":3804,"isOffset":false,"isSlot":false,"src":"12310:3:18","valueSize":1}},{"self":{"declaration":3801,"isOffset":false,"isSlot":false,"src":"12337:4:18","valueSize":1}},{"self":{"declaration":3801,"isOffset":false,"isSlot":false,"src":"12355:4:18","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":3806,"name":"InlineAssembly","src":"12287:84:18"}],"id":3807,"name":"Block","src":"12277:100:18"}],"id":3808,"name":"FunctionDefinition","src":"12206:171:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3842,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3809,"name":"UserDefinedTypeName","src":"12646:5:18"}],"id":3810,"name":"VariableDeclaration","src":"12646:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3842,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3811,"name":"UserDefinedTypeName","src":"12665:5:18"}],"id":3812,"name":"VariableDeclaration","src":"12665:19:18"}],"id":3813,"name":"ParameterList","src":"12645:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3814,"name":"ElementaryTypeName","src":"12709:4:18"}],"id":3815,"name":"VariableDeclaration","src":"12709:4:18"}],"id":3816,"name":"ParameterList","src":"12708:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3810,"type":"struct strings.slice memory","value":"self"},"id":3817,"name":"Identifier","src":"12729:4:18"}],"id":3818,"name":"MemberAccess","src":"12729:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"struct strings.slice memory","value":"needle"},"id":3819,"name":"Identifier","src":"12741:6:18"}],"id":3820,"name":"MemberAccess","src":"12741:11:18"}],"id":3821,"name":"BinaryOperation","src":"12729:23:18"},{"children":[{"attributes":{"functionReturnParameters":3816},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3822,"name":"Literal","src":"12775:5:18"}],"id":3823,"name":"Return","src":"12768:12:18"}],"id":3824,"name":"Block","src":"12754:37:18"}],"id":3825,"name":"IfStatement","src":"12725:66:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3810,"type":"struct strings.slice memory","value":"self"},"id":3826,"name":"Identifier","src":"12805:4:18"}],"id":3827,"name":"MemberAccess","src":"12805:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"struct strings.slice memory","value":"needle"},"id":3828,"name":"Identifier","src":"12818:6:18"}],"id":3829,"name":"MemberAccess","src":"12818:11:18"}],"id":3830,"name":"BinaryOperation","src":"12805:24:18"},{"children":[{"attributes":{"functionReturnParameters":3816},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3831,"name":"Literal","src":"12852:4:18"}],"id":3832,"name":"Return","src":"12845:11:18"}],"id":3833,"name":"Block","src":"12831:36:18"}],"id":3834,"name":"IfStatement","src":"12801:66:18"},{"attributes":{"assignments":[3836],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":3841,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3835,"name":"ElementaryTypeName","src":"12877:4:18"}],"id":3836,"name":"VariableDeclaration","src":"12877:10:18"}],"id":3837,"name":"VariableDeclarationStatement","src":"12877:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":3812,"isOffset":false,"isSlot":false,"src":"12940:6:18","valueSize":1}},{"self":{"declaration":3810,"isOffset":false,"isSlot":false,"src":"12985:4:18","valueSize":1}},{"equal":{"declaration":3836,"isOffset":false,"isSlot":false,"src":"13064:5:18","valueSize":1}},{"needle":{"declaration":3812,"isOffset":false,"isSlot":false,"src":"13037:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3838,"name":"InlineAssembly","src":"12897:246:18"},{"attributes":{"functionReturnParameters":3816},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3836,"type":"bool","value":"equal"},"id":3839,"name":"Identifier","src":"13159:5:18"}],"id":3840,"name":"Return","src":"13152:12:18"}],"id":3841,"name":"Block","src":"12715:456:18"}],"id":3842,"name":"FunctionDefinition","src":"12626:545:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3892,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3843,"name":"UserDefinedTypeName","src":"13459:5:18"}],"id":3844,"name":"VariableDeclaration","src":"13459:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3892,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3845,"name":"UserDefinedTypeName","src":"13478:5:18"}],"id":3846,"name":"VariableDeclaration","src":"13478:19:18"}],"id":3847,"name":"ParameterList","src":"13458:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3892,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3848,"name":"UserDefinedTypeName","src":"13522:5:18"}],"id":3849,"name":"VariableDeclaration","src":"13522:12:18"}],"id":3850,"name":"ParameterList","src":"13521:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3851,"name":"Identifier","src":"13550:4:18"}],"id":3852,"name":"MemberAccess","src":"13550:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"struct strings.slice memory","value":"needle"},"id":3853,"name":"Identifier","src":"13562:6:18"}],"id":3854,"name":"MemberAccess","src":"13562:11:18"}],"id":3855,"name":"BinaryOperation","src":"13550:23:18"},{"children":[{"attributes":{"functionReturnParameters":3850},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3856,"name":"Identifier","src":"13596:4:18"}],"id":3857,"name":"Return","src":"13589:11:18"}],"id":3858,"name":"Block","src":"13575:36:18"}],"id":3859,"name":"IfStatement","src":"13546:65:18"},{"attributes":{"assignments":[3861]},"children":[{"attributes":{"constant":false,"name":"equal","scope":3891,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3860,"name":"ElementaryTypeName","src":"13621:4:18"}],"id":3861,"name":"VariableDeclaration","src":"13621:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3862,"name":"Literal","src":"13634:4:18"}],"id":3863,"name":"VariableDeclarationStatement","src":"13621:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3864,"name":"Identifier","src":"13652:4:18"}],"id":3865,"name":"MemberAccess","src":"13652:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"struct strings.slice memory","value":"needle"},"id":3866,"name":"Identifier","src":"13665:6:18"}],"id":3867,"name":"MemberAccess","src":"13665:11:18"}],"id":3868,"name":"BinaryOperation","src":"13652:24:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":3846,"isOffset":false,"isSlot":false,"src":"13739:6:18","valueSize":1}},{"self":{"declaration":3844,"isOffset":false,"isSlot":false,"src":"13788:4:18","valueSize":1}},{"equal":{"declaration":3861,"isOffset":false,"isSlot":false,"src":"13875:5:18","valueSize":1}},{"needle":{"declaration":3846,"isOffset":false,"isSlot":false,"src":"13844:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3869,"name":"InlineAssembly","src":"13692:266:18"}],"id":3870,"name":"Block","src":"13678:290:18"}],"id":3871,"name":"IfStatement","src":"13648:320:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3861,"type":"bool","value":"equal"},"id":3872,"name":"Identifier","src":"13982:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3873,"name":"Identifier","src":"14003:4:18"}],"id":3875,"name":"MemberAccess","src":"14003:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"struct strings.slice memory","value":"needle"},"id":3876,"name":"Identifier","src":"14016:6:18"}],"id":3877,"name":"MemberAccess","src":"14016:11:18"}],"id":3878,"name":"Assignment","src":"14003:24:18"}],"id":3879,"name":"ExpressionStatement","src":"14003:24:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3880,"name":"Identifier","src":"14041:4:18"}],"id":3882,"name":"MemberAccess","src":"14041:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"struct strings.slice memory","value":"needle"},"id":3883,"name":"Identifier","src":"14054:6:18"}],"id":3884,"name":"MemberAccess","src":"14054:11:18"}],"id":3885,"name":"Assignment","src":"14041:24:18"}],"id":3886,"name":"ExpressionStatement","src":"14041:24:18"}],"id":3887,"name":"Block","src":"13989:87:18"}],"id":3888,"name":"IfStatement","src":"13978:98:18"},{"attributes":{"functionReturnParameters":3850},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3889,"name":"Identifier","src":"14093:4:18"}],"id":3890,"name":"Return","src":"14086:11:18"}],"id":3891,"name":"Block","src":"13536:568:18"}],"id":3892,"name":"FunctionDefinition","src":"13443:661:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3936,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3893,"name":"UserDefinedTypeName","src":"14372:5:18"}],"id":3894,"name":"VariableDeclaration","src":"14372:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3936,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3895,"name":"UserDefinedTypeName","src":"14391:5:18"}],"id":3896,"name":"VariableDeclaration","src":"14391:19:18"}],"id":3897,"name":"ParameterList","src":"14371:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3936,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3898,"name":"ElementaryTypeName","src":"14435:4:18"}],"id":3899,"name":"VariableDeclaration","src":"14435:4:18"}],"id":3900,"name":"ParameterList","src":"14434:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3894,"type":"struct strings.slice memory","value":"self"},"id":3901,"name":"Identifier","src":"14455:4:18"}],"id":3902,"name":"MemberAccess","src":"14455:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"struct strings.slice memory","value":"needle"},"id":3903,"name":"Identifier","src":"14467:6:18"}],"id":3904,"name":"MemberAccess","src":"14467:11:18"}],"id":3905,"name":"BinaryOperation","src":"14455:23:18"},{"children":[{"attributes":{"functionReturnParameters":3900},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3906,"name":"Literal","src":"14501:5:18"}],"id":3907,"name":"Return","src":"14494:12:18"}],"id":3908,"name":"Block","src":"14480:37:18"}],"id":3909,"name":"IfStatement","src":"14451:66:18"},{"attributes":{"assignments":[3911]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":3935,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3910,"name":"ElementaryTypeName","src":"14527:4:18"}],"id":3911,"name":"VariableDeclaration","src":"14527:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3894,"type":"struct strings.slice memory","value":"self"},"id":3912,"name":"Identifier","src":"14542:4:18"}],"id":3913,"name":"MemberAccess","src":"14542:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3894,"type":"struct strings.slice memory","value":"self"},"id":3914,"name":"Identifier","src":"14554:4:18"}],"id":3915,"name":"MemberAccess","src":"14554:9:18"}],"id":3916,"name":"BinaryOperation","src":"14542:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"struct strings.slice memory","value":"needle"},"id":3917,"name":"Identifier","src":"14566:6:18"}],"id":3918,"name":"MemberAccess","src":"14566:11:18"}],"id":3919,"name":"BinaryOperation","src":"14542:35:18"}],"id":3920,"name":"VariableDeclarationStatement","src":"14527:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3911,"type":"uint256","value":"selfptr"},"id":3921,"name":"Identifier","src":"14592:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"struct strings.slice memory","value":"needle"},"id":3922,"name":"Identifier","src":"14603:6:18"}],"id":3923,"name":"MemberAccess","src":"14603:11:18"}],"id":3924,"name":"BinaryOperation","src":"14592:22:18"},{"children":[{"attributes":{"functionReturnParameters":3900},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3925,"name":"Literal","src":"14637:4:18"}],"id":3926,"name":"Return","src":"14630:11:18"}],"id":3927,"name":"Block","src":"14616:36:18"}],"id":3928,"name":"IfStatement","src":"14588:64:18"},{"attributes":{"assignments":[3930],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":3935,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3929,"name":"ElementaryTypeName","src":"14662:4:18"}],"id":3930,"name":"VariableDeclaration","src":"14662:10:18"}],"id":3931,"name":"VariableDeclarationStatement","src":"14662:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":3896,"isOffset":false,"isSlot":false,"src":"14725:6:18","valueSize":1}},{"equal":{"declaration":3930,"isOffset":false,"isSlot":false,"src":"14799:5:18","valueSize":1}},{"needle":{"declaration":3896,"isOffset":false,"isSlot":false,"src":"14772:6:18","valueSize":1}},{"selfptr":{"declaration":3911,"isOffset":false,"isSlot":false,"src":"14821:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3932,"name":"InlineAssembly","src":"14682:196:18"},{"attributes":{"functionReturnParameters":3900},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"bool","value":"equal"},"id":3933,"name":"Identifier","src":"14895:5:18"}],"id":3934,"name":"Return","src":"14888:12:18"}],"id":3935,"name":"Block","src":"14441:466:18"}],"id":3936,"name":"FunctionDefinition","src":"14354:553:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3989,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3937,"name":"UserDefinedTypeName","src":"15186:5:18"}],"id":3938,"name":"VariableDeclaration","src":"15186:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3989,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3939,"name":"UserDefinedTypeName","src":"15205:5:18"}],"id":3940,"name":"VariableDeclaration","src":"15205:19:18"}],"id":3941,"name":"ParameterList","src":"15185:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3989,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3942,"name":"UserDefinedTypeName","src":"15249:5:18"}],"id":3943,"name":"VariableDeclaration","src":"15249:12:18"}],"id":3944,"name":"ParameterList","src":"15248:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3945,"name":"Identifier","src":"15277:4:18"}],"id":3946,"name":"MemberAccess","src":"15277:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3940,"type":"struct strings.slice memory","value":"needle"},"id":3947,"name":"Identifier","src":"15289:6:18"}],"id":3948,"name":"MemberAccess","src":"15289:11:18"}],"id":3949,"name":"BinaryOperation","src":"15277:23:18"},{"children":[{"attributes":{"functionReturnParameters":3944},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3950,"name":"Identifier","src":"15323:4:18"}],"id":3951,"name":"Return","src":"15316:11:18"}],"id":3952,"name":"Block","src":"15302:36:18"}],"id":3953,"name":"IfStatement","src":"15273:65:18"},{"attributes":{"assignments":[3955]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":3988,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3954,"name":"ElementaryTypeName","src":"15348:4:18"}],"id":3955,"name":"VariableDeclaration","src":"15348:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3956,"name":"Identifier","src":"15363:4:18"}],"id":3957,"name":"MemberAccess","src":"15363:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3958,"name":"Identifier","src":"15375:4:18"}],"id":3959,"name":"MemberAccess","src":"15375:9:18"}],"id":3960,"name":"BinaryOperation","src":"15363:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3940,"type":"struct strings.slice memory","value":"needle"},"id":3961,"name":"Identifier","src":"15387:6:18"}],"id":3962,"name":"MemberAccess","src":"15387:11:18"}],"id":3963,"name":"BinaryOperation","src":"15363:35:18"}],"id":3964,"name":"VariableDeclarationStatement","src":"15348:50:18"},{"attributes":{"assignments":[3966]},"children":[{"attributes":{"constant":false,"name":"equal","scope":3988,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3965,"name":"ElementaryTypeName","src":"15408:4:18"}],"id":3966,"name":"VariableDeclaration","src":"15408:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3967,"name":"Literal","src":"15421:4:18"}],"id":3968,"name":"VariableDeclarationStatement","src":"15408:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3955,"type":"uint256","value":"selfptr"},"id":3969,"name":"Identifier","src":"15439:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3940,"type":"struct strings.slice memory","value":"needle"},"id":3970,"name":"Identifier","src":"15450:6:18"}],"id":3971,"name":"MemberAccess","src":"15450:11:18"}],"id":3972,"name":"BinaryOperation","src":"15439:22:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":3940,"isOffset":false,"isSlot":false,"src":"15524:6:18","valueSize":1}},{"equal":{"declaration":3966,"isOffset":false,"isSlot":false,"src":"15606:5:18","valueSize":1}},{"needle":{"declaration":3940,"isOffset":false,"isSlot":false,"src":"15575:6:18","valueSize":1}},{"selfptr":{"declaration":3955,"isOffset":false,"isSlot":false,"src":"15628:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3973,"name":"InlineAssembly","src":"15477:212:18"}],"id":3974,"name":"Block","src":"15463:236:18"}],"id":3975,"name":"IfStatement","src":"15435:264:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3966,"type":"bool","value":"equal"},"id":3976,"name":"Identifier","src":"15713:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3977,"name":"Identifier","src":"15734:4:18"}],"id":3979,"name":"MemberAccess","src":"15734:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3940,"type":"struct strings.slice memory","value":"needle"},"id":3980,"name":"Identifier","src":"15747:6:18"}],"id":3981,"name":"MemberAccess","src":"15747:11:18"}],"id":3982,"name":"Assignment","src":"15734:24:18"}],"id":3983,"name":"ExpressionStatement","src":"15734:24:18"}],"id":3984,"name":"Block","src":"15720:49:18"}],"id":3985,"name":"IfStatement","src":"15709:60:18"},{"attributes":{"functionReturnParameters":3944},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3986,"name":"Identifier","src":"15786:4:18"}],"id":3987,"name":"Return","src":"15779:11:18"}],"id":3988,"name":"Block","src":"15263:534:18"}],"id":3989,"name":"FunctionDefinition","src":"15171:626:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3990,"name":"ElementaryTypeName","src":"15971:4:18"}],"id":3991,"name":"VariableDeclaration","src":"15971:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3992,"name":"ElementaryTypeName","src":"15985:4:18"}],"id":3993,"name":"VariableDeclaration","src":"15985:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3994,"name":"ElementaryTypeName","src":"15999:4:18"}],"id":3995,"name":"VariableDeclaration","src":"15999:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3996,"name":"ElementaryTypeName","src":"16015:4:18"}],"id":3997,"name":"VariableDeclaration","src":"16015:14:18"}],"id":3998,"name":"ParameterList","src":"15970:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3999,"name":"ElementaryTypeName","src":"16053:4:18"}],"id":4000,"name":"VariableDeclaration","src":"16053:4:18"}],"id":4001,"name":"ParameterList","src":"16052:6:18"},{"children":[{"attributes":{"assignments":[4003]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4002,"name":"ElementaryTypeName","src":"16069:4:18"}],"id":4003,"name":"VariableDeclaration","src":"16069:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"uint256","value":"selfptr"},"id":4004,"name":"Identifier","src":"16080:7:18"}],"id":4005,"name":"VariableDeclarationStatement","src":"16069:18:18"},{"attributes":{"assignments":[4007],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":4109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4006,"name":"ElementaryTypeName","src":"16097:4:18"}],"id":4007,"name":"VariableDeclaration","src":"16097:8:18"}],"id":4008,"name":"VariableDeclarationStatement","src":"16097:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4009,"name":"Identifier","src":"16120:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4010,"name":"Identifier","src":"16133:7:18"}],"id":4011,"name":"BinaryOperation","src":"16120:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4012,"name":"Identifier","src":"16160:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4013,"name":"Literal","src":"16173:2:18"}],"id":4014,"name":"BinaryOperation","src":"16160:15:18"},{"children":[{"attributes":{"assignments":[4016]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4015,"name":"ElementaryTypeName","src":"16195:7:18"}],"id":4016,"name":"VariableDeclaration","src":"16195:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4017,"name":"ElementaryTypeNameExpression","src":"16210:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4018,"name":"Literal","src":"16220:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4019,"name":"Literal","src":"16226:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4020,"name":"Literal","src":"16231:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4021,"name":"Identifier","src":"16236:9:18"}],"id":4022,"name":"BinaryOperation","src":"16231:14:18"}],"id":4023,"name":"TupleExpression","src":"16230:16:18"}],"id":4024,"name":"BinaryOperation","src":"16226:20:18"}],"id":4025,"name":"TupleExpression","src":"16225:22:18"}],"id":4026,"name":"BinaryOperation","src":"16220:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4027,"name":"Literal","src":"16250:1:18"}],"id":4028,"name":"BinaryOperation","src":"16220:31:18"}],"id":4029,"name":"TupleExpression","src":"16219:33:18"}],"id":4030,"name":"UnaryOperation","src":"16218:34:18"}],"id":4031,"name":"FunctionCall","src":"16210:43:18"}],"id":4032,"name":"VariableDeclarationStatement","src":"16195:58:18"},{"attributes":{"assignments":[4034],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":4068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4033,"name":"ElementaryTypeName","src":"16272:7:18"}],"id":4034,"name":"VariableDeclaration","src":"16272:18:18"}],"id":4035,"name":"VariableDeclarationStatement","src":"16272:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":4034,"isOffset":false,"isSlot":false,"src":"16319:10:18","valueSize":1}},{"needleptr":{"declaration":3997,"isOffset":false,"isSlot":false,"src":"16343:9:18","valueSize":1}},{"mask":{"declaration":4016,"isOffset":false,"isSlot":false,"src":"16355:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":4036,"name":"InlineAssembly","src":"16308:54:18"},{"attributes":{"assignments":[4038]},"children":[{"attributes":{"constant":false,"name":"end","scope":4068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4037,"name":"ElementaryTypeName","src":"16380:4:18"}],"id":4038,"name":"VariableDeclaration","src":"16380:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"uint256","value":"selfptr"},"id":4039,"name":"Identifier","src":"16391:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4040,"name":"Identifier","src":"16401:7:18"}],"id":4041,"name":"BinaryOperation","src":"16391:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4042,"name":"Identifier","src":"16411:9:18"}],"id":4043,"name":"BinaryOperation","src":"16391:29:18"}],"id":4044,"name":"VariableDeclarationStatement","src":"16380:40:18"},{"attributes":{"assignments":[4046],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":4068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4045,"name":"ElementaryTypeName","src":"16438:7:18"}],"id":4046,"name":"VariableDeclaration","src":"16438:15:18"}],"id":4047,"name":"VariableDeclarationStatement","src":"16438:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4046,"isOffset":false,"isSlot":false,"src":"16482:7:18","valueSize":1}},{"ptr":{"declaration":4003,"isOffset":false,"isSlot":false,"src":"16503:3:18","valueSize":1}},{"mask":{"declaration":4016,"isOffset":false,"isSlot":false,"src":"16509:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4048,"name":"InlineAssembly","src":"16471:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"bytes32","value":"ptrdata"},"id":4049,"name":"Identifier","src":"16541:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4034,"type":"bytes32","value":"needledata"},"id":4050,"name":"Identifier","src":"16552:10:18"}],"id":4051,"name":"BinaryOperation","src":"16541:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4052,"name":"Identifier","src":"16590:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4038,"type":"uint256","value":"end"},"id":4053,"name":"Identifier","src":"16597:3:18"}],"id":4054,"name":"BinaryOperation","src":"16590:10:18"},{"attributes":{"functionReturnParameters":4001},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"uint256","value":"selfptr"},"id":4055,"name":"Identifier","src":"16633:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4056,"name":"Identifier","src":"16643:7:18"}],"id":4057,"name":"BinaryOperation","src":"16633:17:18"}],"id":4058,"name":"Return","src":"16626:24:18"}],"id":4059,"name":"IfStatement","src":"16586:64:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4060,"name":"Identifier","src":"16672:3:18"}],"id":4061,"name":"UnaryOperation","src":"16672:5:18"}],"id":4062,"name":"ExpressionStatement","src":"16672:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4046,"isOffset":false,"isSlot":false,"src":"16710:7:18","valueSize":1}},{"ptr":{"declaration":4003,"isOffset":false,"isSlot":false,"src":"16731:3:18","valueSize":1}},{"mask":{"declaration":4016,"isOffset":false,"isSlot":false,"src":"16737:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4063,"name":"InlineAssembly","src":"16699:45:18"}],"id":4064,"name":"Block","src":"16564:198:18"}],"id":4065,"name":"WhileStatement","src":"16534:228:18"},{"attributes":{"functionReturnParameters":4001},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4066,"name":"Identifier","src":"16786:3:18"}],"id":4067,"name":"Return","src":"16779:10:18"}],"id":4068,"name":"Block","src":"16177:627:18"},{"children":[{"attributes":{"assignments":[4070],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":4101,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4069,"name":"ElementaryTypeName","src":"16877:7:18"}],"id":4070,"name":"VariableDeclaration","src":"16877:12:18"}],"id":4071,"name":"VariableDeclarationStatement","src":"16877:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":4070,"isOffset":false,"isSlot":false,"src":"16918:4:18","valueSize":1}},{"needleptr":{"declaration":3997,"isOffset":false,"isSlot":false,"src":"16936:9:18","valueSize":1}},{"needlelen":{"declaration":3995,"isOffset":false,"isSlot":false,"src":"16947:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":4072,"name":"InlineAssembly","src":"16907:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4007,"type":"uint256","value":"idx"},"id":4073,"name":"Identifier","src":"16982:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4074,"name":"Literal","src":"16988:1:18"}],"id":4075,"name":"Assignment","src":"16982:7:18"}],"id":4076,"name":"ExpressionStatement","src":"16982:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4007,"type":"uint256","value":"idx"},"id":4077,"name":"Identifier","src":"16991:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4078,"name":"Identifier","src":"16998:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4079,"name":"Identifier","src":"17008:9:18"}],"id":4080,"name":"BinaryOperation","src":"16998:19:18"}],"id":4081,"name":"BinaryOperation","src":"16991:26:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4007,"type":"uint256","value":"idx"},"id":4082,"name":"Identifier","src":"17019:3:18"}],"id":4083,"name":"UnaryOperation","src":"17019:5:18"}],"id":4084,"name":"ExpressionStatement","src":"17019:5:18"},{"children":[{"attributes":{"assignments":[4086],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":4099,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4085,"name":"ElementaryTypeName","src":"17048:7:18"}],"id":4086,"name":"VariableDeclaration","src":"17048:16:18"}],"id":4087,"name":"VariableDeclarationStatement","src":"17048:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":4086,"isOffset":false,"isSlot":false,"src":"17097:8:18","valueSize":1}},{"ptr":{"declaration":4003,"isOffset":false,"isSlot":false,"src":"17119:3:18","valueSize":1}},{"needlelen":{"declaration":3995,"isOffset":false,"isSlot":false,"src":"17124:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":4088,"name":"InlineAssembly","src":"17086:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4070,"type":"bytes32","value":"hash"},"id":4089,"name":"Identifier","src":"17161:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4086,"type":"bytes32","value":"testHash"},"id":4090,"name":"Identifier","src":"17169:8:18"}],"id":4091,"name":"BinaryOperation","src":"17161:16:18"},{"attributes":{"functionReturnParameters":4001},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4092,"name":"Identifier","src":"17210:3:18"}],"id":4093,"name":"Return","src":"17203:10:18"}],"id":4094,"name":"IfStatement","src":"17157:56:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4095,"name":"Identifier","src":"17235:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4096,"name":"Literal","src":"17242:1:18"}],"id":4097,"name":"Assignment","src":"17235:8:18"}],"id":4098,"name":"ExpressionStatement","src":"17235:8:18"}],"id":4099,"name":"Block","src":"17026:236:18"}],"id":4100,"name":"ForStatement","src":"16977:285:18"}],"id":4101,"name":"Block","src":"16810:466:18"}],"id":4102,"name":"IfStatement","src":"16156:1120:18"}],"id":4103,"name":"Block","src":"16142:1144:18"}],"id":4104,"name":"IfStatement","src":"16116:1170:18"},{"attributes":{"functionReturnParameters":4001},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"uint256","value":"selfptr"},"id":4105,"name":"Identifier","src":"17302:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4106,"name":"Identifier","src":"17312:7:18"}],"id":4107,"name":"BinaryOperation","src":"17302:17:18"}],"id":4108,"name":"Return","src":"17295:24:18"}],"id":4109,"name":"Block","src":"16059:1267:18"}],"id":4110,"name":"FunctionDefinition","src":"15954:1372:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4111,"name":"ElementaryTypeName","src":"17497:4:18"}],"id":4112,"name":"VariableDeclaration","src":"17497:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4113,"name":"ElementaryTypeName","src":"17511:4:18"}],"id":4114,"name":"VariableDeclaration","src":"17511:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4115,"name":"ElementaryTypeName","src":"17525:4:18"}],"id":4116,"name":"VariableDeclaration","src":"17525:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4117,"name":"ElementaryTypeName","src":"17541:4:18"}],"id":4118,"name":"VariableDeclaration","src":"17541:14:18"}],"id":4119,"name":"ParameterList","src":"17496:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4120,"name":"ElementaryTypeName","src":"17579:4:18"}],"id":4121,"name":"VariableDeclaration","src":"17579:4:18"}],"id":4122,"name":"ParameterList","src":"17578:6:18"},{"children":[{"attributes":{"assignments":[4124],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4123,"name":"ElementaryTypeName","src":"17595:4:18"}],"id":4124,"name":"VariableDeclaration","src":"17595:8:18"}],"id":4125,"name":"VariableDeclarationStatement","src":"17595:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4126,"name":"Identifier","src":"17618:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"uint256","value":"selflen"},"id":4127,"name":"Identifier","src":"17631:7:18"}],"id":4128,"name":"BinaryOperation","src":"17618:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4129,"name":"Identifier","src":"17658:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4130,"name":"Literal","src":"17671:2:18"}],"id":4131,"name":"BinaryOperation","src":"17658:15:18"},{"children":[{"attributes":{"assignments":[4133]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4132,"name":"ElementaryTypeName","src":"17693:7:18"}],"id":4133,"name":"VariableDeclaration","src":"17693:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4134,"name":"ElementaryTypeNameExpression","src":"17708:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4135,"name":"Literal","src":"17718:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4136,"name":"Literal","src":"17724:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4137,"name":"Literal","src":"17729:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4138,"name":"Identifier","src":"17734:9:18"}],"id":4139,"name":"BinaryOperation","src":"17729:14:18"}],"id":4140,"name":"TupleExpression","src":"17728:16:18"}],"id":4141,"name":"BinaryOperation","src":"17724:20:18"}],"id":4142,"name":"TupleExpression","src":"17723:22:18"}],"id":4143,"name":"BinaryOperation","src":"17718:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4144,"name":"Literal","src":"17748:1:18"}],"id":4145,"name":"BinaryOperation","src":"17718:31:18"}],"id":4146,"name":"TupleExpression","src":"17717:33:18"}],"id":4147,"name":"UnaryOperation","src":"17716:34:18"}],"id":4148,"name":"FunctionCall","src":"17708:43:18"}],"id":4149,"name":"VariableDeclarationStatement","src":"17693:58:18"},{"attributes":{"assignments":[4151],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":4185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4150,"name":"ElementaryTypeName","src":"17770:7:18"}],"id":4151,"name":"VariableDeclaration","src":"17770:18:18"}],"id":4152,"name":"VariableDeclarationStatement","src":"17770:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":4151,"isOffset":false,"isSlot":false,"src":"17817:10:18","valueSize":1}},{"needleptr":{"declaration":4118,"isOffset":false,"isSlot":false,"src":"17841:9:18","valueSize":1}},{"mask":{"declaration":4133,"isOffset":false,"isSlot":false,"src":"17853:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":4153,"name":"InlineAssembly","src":"17806:54:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4154,"name":"Identifier","src":"17878:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4155,"name":"Identifier","src":"17884:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"uint256","value":"selflen"},"id":4156,"name":"Identifier","src":"17894:7:18"}],"id":4157,"name":"BinaryOperation","src":"17884:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4158,"name":"Identifier","src":"17904:9:18"}],"id":4159,"name":"BinaryOperation","src":"17884:29:18"}],"id":4160,"name":"Assignment","src":"17878:35:18"}],"id":4161,"name":"ExpressionStatement","src":"17878:35:18"},{"attributes":{"assignments":[4163],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":4185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4162,"name":"ElementaryTypeName","src":"17931:7:18"}],"id":4163,"name":"VariableDeclaration","src":"17931:15:18"}],"id":4164,"name":"VariableDeclarationStatement","src":"17931:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4163,"isOffset":false,"isSlot":false,"src":"17975:7:18","valueSize":1}},{"ptr":{"declaration":4124,"isOffset":false,"isSlot":false,"src":"17996:3:18","valueSize":1}},{"mask":{"declaration":4133,"isOffset":false,"isSlot":false,"src":"18002:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4165,"name":"InlineAssembly","src":"17964:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4163,"type":"bytes32","value":"ptrdata"},"id":4166,"name":"Identifier","src":"18034:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4151,"type":"bytes32","value":"needledata"},"id":4167,"name":"Identifier","src":"18045:10:18"}],"id":4168,"name":"BinaryOperation","src":"18034:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4169,"name":"Identifier","src":"18083:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4170,"name":"Identifier","src":"18090:7:18"}],"id":4171,"name":"BinaryOperation","src":"18083:14:18"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4172,"name":"Identifier","src":"18130:7:18"}],"id":4173,"name":"Return","src":"18123:14:18"}],"id":4174,"name":"IfStatement","src":"18079:58:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4175,"name":"Identifier","src":"18159:3:18"}],"id":4176,"name":"UnaryOperation","src":"18159:5:18"}],"id":4177,"name":"ExpressionStatement","src":"18159:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4163,"isOffset":false,"isSlot":false,"src":"18197:7:18","valueSize":1}},{"ptr":{"declaration":4124,"isOffset":false,"isSlot":false,"src":"18218:3:18","valueSize":1}},{"mask":{"declaration":4133,"isOffset":false,"isSlot":false,"src":"18224:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4178,"name":"InlineAssembly","src":"18186:45:18"}],"id":4179,"name":"Block","src":"18057:192:18"}],"id":4180,"name":"WhileStatement","src":"18027:222:18"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4181,"name":"Identifier","src":"18273:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4182,"name":"Identifier","src":"18279:9:18"}],"id":4183,"name":"BinaryOperation","src":"18273:15:18"}],"id":4184,"name":"Return","src":"18266:22:18"}],"id":4185,"name":"Block","src":"17675:628:18"},{"children":[{"attributes":{"assignments":[4187],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":4220,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4186,"name":"ElementaryTypeName","src":"18376:7:18"}],"id":4187,"name":"VariableDeclaration","src":"18376:12:18"}],"id":4188,"name":"VariableDeclarationStatement","src":"18376:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":4187,"isOffset":false,"isSlot":false,"src":"18417:4:18","valueSize":1}},{"needleptr":{"declaration":4118,"isOffset":false,"isSlot":false,"src":"18435:9:18","valueSize":1}},{"needlelen":{"declaration":4116,"isOffset":false,"isSlot":false,"src":"18446:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":4189,"name":"InlineAssembly","src":"18406:52:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4190,"name":"Identifier","src":"18475:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4191,"name":"Identifier","src":"18481:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"uint256","value":"selflen"},"id":4192,"name":"Identifier","src":"18492:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4193,"name":"Identifier","src":"18502:9:18"}],"id":4194,"name":"BinaryOperation","src":"18492:19:18"}],"id":4195,"name":"TupleExpression","src":"18491:21:18"}],"id":4196,"name":"BinaryOperation","src":"18481:31:18"}],"id":4197,"name":"Assignment","src":"18475:37:18"}],"id":4198,"name":"ExpressionStatement","src":"18475:37:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4199,"name":"Identifier","src":"18537:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4200,"name":"Identifier","src":"18544:7:18"}],"id":4201,"name":"BinaryOperation","src":"18537:14:18"},{"children":[{"attributes":{"assignments":[4203],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":4218,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4202,"name":"ElementaryTypeName","src":"18575:7:18"}],"id":4203,"name":"VariableDeclaration","src":"18575:16:18"}],"id":4204,"name":"VariableDeclarationStatement","src":"18575:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":4203,"isOffset":false,"isSlot":false,"src":"18624:8:18","valueSize":1}},{"ptr":{"declaration":4124,"isOffset":false,"isSlot":false,"src":"18646:3:18","valueSize":1}},{"needlelen":{"declaration":4116,"isOffset":false,"isSlot":false,"src":"18651:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":4205,"name":"InlineAssembly","src":"18613:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4187,"type":"bytes32","value":"hash"},"id":4206,"name":"Identifier","src":"18688:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4203,"type":"bytes32","value":"testHash"},"id":4207,"name":"Identifier","src":"18696:8:18"}],"id":4208,"name":"BinaryOperation","src":"18688:16:18"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4209,"name":"Identifier","src":"18737:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4210,"name":"Identifier","src":"18743:9:18"}],"id":4211,"name":"BinaryOperation","src":"18737:15:18"}],"id":4212,"name":"Return","src":"18730:22:18"}],"id":4213,"name":"IfStatement","src":"18684:68:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4214,"name":"Identifier","src":"18774:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4215,"name":"Literal","src":"18781:1:18"}],"id":4216,"name":"Assignment","src":"18774:8:18"}],"id":4217,"name":"ExpressionStatement","src":"18774:8:18"}],"id":4218,"name":"Block","src":"18553:248:18"}],"id":4219,"name":"WhileStatement","src":"18530:271:18"}],"id":4220,"name":"Block","src":"18309:506:18"}],"id":4221,"name":"IfStatement","src":"17654:1161:18"}],"id":4222,"name":"Block","src":"17640:1185:18"}],"id":4223,"name":"IfStatement","src":"17614:1211:18"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4224,"name":"Identifier","src":"18841:7:18"}],"id":4225,"name":"Return","src":"18834:14:18"}],"id":4226,"name":"Block","src":"17585:1270:18"}],"id":4227,"name":"FunctionDefinition","src":"17479:1376:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4228,"name":"UserDefinedTypeName","src":"19205:5:18"}],"id":4229,"name":"VariableDeclaration","src":"19205:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4230,"name":"UserDefinedTypeName","src":"19224:5:18"}],"id":4231,"name":"VariableDeclaration","src":"19224:19:18"}],"id":4232,"name":"ParameterList","src":"19204:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4233,"name":"UserDefinedTypeName","src":"19268:5:18"}],"id":4234,"name":"VariableDeclaration","src":"19268:12:18"}],"id":4235,"name":"ParameterList","src":"19267:14:18"},{"children":[{"attributes":{"assignments":[4237]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4266,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4236,"name":"ElementaryTypeName","src":"19292:4:18"}],"id":4237,"name":"VariableDeclaration","src":"19292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4238,"name":"Identifier","src":"19303:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4239,"name":"Identifier","src":"19311:4:18"}],"id":4240,"name":"MemberAccess","src":"19311:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4241,"name":"Identifier","src":"19322:4:18"}],"id":4242,"name":"MemberAccess","src":"19322:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4231,"type":"struct strings.slice memory","value":"needle"},"id":4243,"name":"Identifier","src":"19333:6:18"}],"id":4244,"name":"MemberAccess","src":"19333:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4231,"type":"struct strings.slice memory","value":"needle"},"id":4245,"name":"Identifier","src":"19346:6:18"}],"id":4246,"name":"MemberAccess","src":"19346:11:18"}],"id":4247,"name":"FunctionCall","src":"19303:55:18"}],"id":4248,"name":"VariableDeclarationStatement","src":"19292:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4249,"name":"Identifier","src":"19368:4:18"}],"id":4251,"name":"MemberAccess","src":"19368:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4237,"type":"uint256","value":"ptr"},"id":4252,"name":"Identifier","src":"19381:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4253,"name":"Identifier","src":"19387:4:18"}],"id":4254,"name":"MemberAccess","src":"19387:9:18"}],"id":4255,"name":"BinaryOperation","src":"19381:15:18"}],"id":4256,"name":"Assignment","src":"19368:28:18"}],"id":4257,"name":"ExpressionStatement","src":"19368:28:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4258,"name":"Identifier","src":"19406:4:18"}],"id":4260,"name":"MemberAccess","src":"19406:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4237,"type":"uint256","value":"ptr"},"id":4261,"name":"Identifier","src":"19418:3:18"}],"id":4262,"name":"Assignment","src":"19406:15:18"}],"id":4263,"name":"ExpressionStatement","src":"19406:15:18"},{"attributes":{"functionReturnParameters":4235},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4264,"name":"Identifier","src":"19438:4:18"}],"id":4265,"name":"Return","src":"19431:11:18"}],"id":4266,"name":"Block","src":"19282:167:18"}],"id":4267,"name":"FunctionDefinition","src":"19191:258:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4301,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4268,"name":"UserDefinedTypeName","src":"19823:5:18"}],"id":4269,"name":"VariableDeclaration","src":"19823:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4301,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4270,"name":"UserDefinedTypeName","src":"19842:5:18"}],"id":4271,"name":"VariableDeclaration","src":"19842:19:18"}],"id":4272,"name":"ParameterList","src":"19822:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4301,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4273,"name":"UserDefinedTypeName","src":"19886:5:18"}],"id":4274,"name":"VariableDeclaration","src":"19886:12:18"}],"id":4275,"name":"ParameterList","src":"19885:14:18"},{"children":[{"attributes":{"assignments":[4277]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4276,"name":"ElementaryTypeName","src":"19910:4:18"}],"id":4277,"name":"VariableDeclaration","src":"19910:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4278,"name":"Identifier","src":"19921:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4279,"name":"Identifier","src":"19930:4:18"}],"id":4280,"name":"MemberAccess","src":"19930:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4281,"name":"Identifier","src":"19941:4:18"}],"id":4282,"name":"MemberAccess","src":"19941:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4271,"type":"struct strings.slice memory","value":"needle"},"id":4283,"name":"Identifier","src":"19952:6:18"}],"id":4284,"name":"MemberAccess","src":"19952:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4271,"type":"struct strings.slice memory","value":"needle"},"id":4285,"name":"Identifier","src":"19965:6:18"}],"id":4286,"name":"MemberAccess","src":"19965:11:18"}],"id":4287,"name":"FunctionCall","src":"19921:56:18"}],"id":4288,"name":"VariableDeclarationStatement","src":"19910:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4289,"name":"Identifier","src":"19987:4:18"}],"id":4291,"name":"MemberAccess","src":"19987:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4277,"type":"uint256","value":"ptr"},"id":4292,"name":"Identifier","src":"19999:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4293,"name":"Identifier","src":"20005:4:18"}],"id":4294,"name":"MemberAccess","src":"20005:9:18"}],"id":4295,"name":"BinaryOperation","src":"19999:15:18"}],"id":4296,"name":"Assignment","src":"19987:27:18"}],"id":4297,"name":"ExpressionStatement","src":"19987:27:18"},{"attributes":{"functionReturnParameters":4275},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4298,"name":"Identifier","src":"20031:4:18"}],"id":4299,"name":"Return","src":"20024:11:18"}],"id":4300,"name":"Block","src":"19900:142:18"}],"id":4301,"name":"FunctionDefinition","src":"19808:234:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4379,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4302,"name":"UserDefinedTypeName","src":"20563:5:18"}],"id":4303,"name":"VariableDeclaration","src":"20563:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4379,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4304,"name":"UserDefinedTypeName","src":"20582:5:18"}],"id":4305,"name":"VariableDeclaration","src":"20582:19:18"},{"attributes":{"constant":false,"name":"token","scope":4379,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4306,"name":"UserDefinedTypeName","src":"20603:5:18"}],"id":4307,"name":"VariableDeclaration","src":"20603:18:18"}],"id":4308,"name":"ParameterList","src":"20562:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4379,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4309,"name":"UserDefinedTypeName","src":"20646:5:18"}],"id":4310,"name":"VariableDeclaration","src":"20646:12:18"}],"id":4311,"name":"ParameterList","src":"20645:14:18"},{"children":[{"attributes":{"assignments":[4313]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4378,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4312,"name":"ElementaryTypeName","src":"20670:4:18"}],"id":4313,"name":"VariableDeclaration","src":"20670:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4314,"name":"Identifier","src":"20681:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4315,"name":"Identifier","src":"20689:4:18"}],"id":4316,"name":"MemberAccess","src":"20689:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4317,"name":"Identifier","src":"20700:4:18"}],"id":4318,"name":"MemberAccess","src":"20700:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"struct strings.slice memory","value":"needle"},"id":4319,"name":"Identifier","src":"20711:6:18"}],"id":4320,"name":"MemberAccess","src":"20711:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"struct strings.slice memory","value":"needle"},"id":4321,"name":"Identifier","src":"20724:6:18"}],"id":4322,"name":"MemberAccess","src":"20724:11:18"}],"id":4323,"name":"FunctionCall","src":"20681:55:18"}],"id":4324,"name":"VariableDeclarationStatement","src":"20670:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4307,"type":"struct strings.slice memory","value":"token"},"id":4325,"name":"Identifier","src":"20746:5:18"}],"id":4327,"name":"MemberAccess","src":"20746:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4328,"name":"Identifier","src":"20759:4:18"}],"id":4329,"name":"MemberAccess","src":"20759:9:18"}],"id":4330,"name":"Assignment","src":"20746:22:18"}],"id":4331,"name":"ExpressionStatement","src":"20746:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4307,"type":"struct strings.slice memory","value":"token"},"id":4332,"name":"Identifier","src":"20778:5:18"}],"id":4334,"name":"MemberAccess","src":"20778:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4313,"type":"uint256","value":"ptr"},"id":4335,"name":"Identifier","src":"20791:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4336,"name":"Identifier","src":"20797:4:18"}],"id":4337,"name":"MemberAccess","src":"20797:9:18"}],"id":4338,"name":"BinaryOperation","src":"20791:15:18"}],"id":4339,"name":"Assignment","src":"20778:28:18"}],"id":4340,"name":"ExpressionStatement","src":"20778:28:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4313,"type":"uint256","value":"ptr"},"id":4341,"name":"Identifier","src":"20820:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4342,"name":"Identifier","src":"20827:4:18"}],"id":4343,"name":"MemberAccess","src":"20827:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4344,"name":"Identifier","src":"20839:4:18"}],"id":4345,"name":"MemberAccess","src":"20839:9:18"}],"id":4346,"name":"BinaryOperation","src":"20827:21:18"}],"id":4347,"name":"BinaryOperation","src":"20820:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4348,"name":"Identifier","src":"20889:4:18"}],"id":4350,"name":"MemberAccess","src":"20889:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4351,"name":"Literal","src":"20901:1:18"}],"id":4352,"name":"Assignment","src":"20889:13:18"}],"id":4353,"name":"ExpressionStatement","src":"20889:13:18"}],"id":4354,"name":"Block","src":"20850:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4355,"name":"Identifier","src":"20933:4:18"}],"id":4357,"name":"MemberAccess","src":"20933:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4307,"type":"struct strings.slice memory","value":"token"},"id":4358,"name":"Identifier","src":"20946:5:18"}],"id":4359,"name":"MemberAccess","src":"20946:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"struct strings.slice memory","value":"needle"},"id":4360,"name":"Identifier","src":"20959:6:18"}],"id":4361,"name":"MemberAccess","src":"20959:11:18"}],"id":4362,"name":"BinaryOperation","src":"20946:24:18"}],"id":4363,"name":"Assignment","src":"20933:37:18"}],"id":4364,"name":"ExpressionStatement","src":"20933:37:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4365,"name":"Identifier","src":"20984:4:18"}],"id":4367,"name":"MemberAccess","src":"20984:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4313,"type":"uint256","value":"ptr"},"id":4368,"name":"Identifier","src":"20996:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"struct strings.slice memory","value":"needle"},"id":4369,"name":"Identifier","src":"21002:6:18"}],"id":4370,"name":"MemberAccess","src":"21002:11:18"}],"id":4371,"name":"BinaryOperation","src":"20996:17:18"}],"id":4372,"name":"Assignment","src":"20984:29:18"}],"id":4373,"name":"ExpressionStatement","src":"20984:29:18"}],"id":4374,"name":"Block","src":"20919:105:18"}],"id":4375,"name":"IfStatement","src":"20816:208:18"},{"attributes":{"functionReturnParameters":4311},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4307,"type":"struct strings.slice memory","value":"token"},"id":4376,"name":"Identifier","src":"21040:5:18"}],"id":4377,"name":"Return","src":"21033:12:18"}],"id":4378,"name":"Block","src":"20660:392:18"}],"id":4379,"name":"FunctionDefinition","src":"20548:504:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4395,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4380,"name":"UserDefinedTypeName","src":"21538:5:18"}],"id":4381,"name":"VariableDeclaration","src":"21538:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4395,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4382,"name":"UserDefinedTypeName","src":"21557:5:18"}],"id":4383,"name":"VariableDeclaration","src":"21557:19:18"}],"id":4384,"name":"ParameterList","src":"21537:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":4395,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4385,"name":"UserDefinedTypeName","src":"21601:5:18"}],"id":4386,"name":"VariableDeclaration","src":"21601:18:18"}],"id":4387,"name":"ParameterList","src":"21600:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[4379,4395],"referencedDeclaration":4379,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":4388,"name":"Identifier","src":"21631:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4381,"type":"struct strings.slice memory","value":"self"},"id":4389,"name":"Identifier","src":"21637:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4383,"type":"struct strings.slice memory","value":"needle"},"id":4390,"name":"Identifier","src":"21643:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4386,"type":"struct strings.slice memory","value":"token"},"id":4391,"name":"Identifier","src":"21651:5:18"}],"id":4392,"name":"FunctionCall","src":"21631:26:18"}],"id":4393,"name":"ExpressionStatement","src":"21631:26:18"}],"id":4394,"name":"Block","src":"21621:43:18"}],"id":4395,"name":"FunctionDefinition","src":"21523:141:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4464,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4396,"name":"UserDefinedTypeName","src":"22185:5:18"}],"id":4397,"name":"VariableDeclaration","src":"22185:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4464,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4398,"name":"UserDefinedTypeName","src":"22204:5:18"}],"id":4399,"name":"VariableDeclaration","src":"22204:19:18"},{"attributes":{"constant":false,"name":"token","scope":4464,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4400,"name":"UserDefinedTypeName","src":"22225:5:18"}],"id":4401,"name":"VariableDeclaration","src":"22225:18:18"}],"id":4402,"name":"ParameterList","src":"22184:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4464,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4403,"name":"UserDefinedTypeName","src":"22268:5:18"}],"id":4404,"name":"VariableDeclaration","src":"22268:12:18"}],"id":4405,"name":"ParameterList","src":"22267:14:18"},{"children":[{"attributes":{"assignments":[4407]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4463,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4406,"name":"ElementaryTypeName","src":"22292:4:18"}],"id":4407,"name":"VariableDeclaration","src":"22292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4408,"name":"Identifier","src":"22303:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4409,"name":"Identifier","src":"22312:4:18"}],"id":4410,"name":"MemberAccess","src":"22312:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4411,"name":"Identifier","src":"22323:4:18"}],"id":4412,"name":"MemberAccess","src":"22323:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4399,"type":"struct strings.slice memory","value":"needle"},"id":4413,"name":"Identifier","src":"22334:6:18"}],"id":4414,"name":"MemberAccess","src":"22334:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4399,"type":"struct strings.slice memory","value":"needle"},"id":4415,"name":"Identifier","src":"22347:6:18"}],"id":4416,"name":"MemberAccess","src":"22347:11:18"}],"id":4417,"name":"FunctionCall","src":"22303:56:18"}],"id":4418,"name":"VariableDeclarationStatement","src":"22292:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4401,"type":"struct strings.slice memory","value":"token"},"id":4419,"name":"Identifier","src":"22369:5:18"}],"id":4421,"name":"MemberAccess","src":"22369:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4407,"type":"uint256","value":"ptr"},"id":4422,"name":"Identifier","src":"22382:3:18"}],"id":4423,"name":"Assignment","src":"22369:16:18"}],"id":4424,"name":"ExpressionStatement","src":"22369:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4401,"type":"struct strings.slice memory","value":"token"},"id":4425,"name":"Identifier","src":"22395:5:18"}],"id":4427,"name":"MemberAccess","src":"22395:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4428,"name":"Identifier","src":"22408:4:18"}],"id":4429,"name":"MemberAccess","src":"22408:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4407,"type":"uint256","value":"ptr"},"id":4430,"name":"Identifier","src":"22421:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4431,"name":"Identifier","src":"22427:4:18"}],"id":4432,"name":"MemberAccess","src":"22427:9:18"}],"id":4433,"name":"BinaryOperation","src":"22421:15:18"}],"id":4434,"name":"TupleExpression","src":"22420:17:18"}],"id":4435,"name":"BinaryOperation","src":"22408:29:18"}],"id":4436,"name":"Assignment","src":"22395:42:18"}],"id":4437,"name":"ExpressionStatement","src":"22395:42:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4407,"type":"uint256","value":"ptr"},"id":4438,"name":"Identifier","src":"22451:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4439,"name":"Identifier","src":"22458:4:18"}],"id":4440,"name":"MemberAccess","src":"22458:9:18"}],"id":4441,"name":"BinaryOperation","src":"22451:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4442,"name":"Identifier","src":"22508:4:18"}],"id":4444,"name":"MemberAccess","src":"22508:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4445,"name":"Literal","src":"22520:1:18"}],"id":4446,"name":"Assignment","src":"22508:13:18"}],"id":4447,"name":"ExpressionStatement","src":"22508:13:18"}],"id":4448,"name":"Block","src":"22469:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4449,"name":"Identifier","src":"22552:4:18"}],"id":4451,"name":"MemberAccess","src":"22552:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4401,"type":"struct strings.slice memory","value":"token"},"id":4452,"name":"Identifier","src":"22565:5:18"}],"id":4453,"name":"MemberAccess","src":"22565:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4399,"type":"struct strings.slice memory","value":"needle"},"id":4454,"name":"Identifier","src":"22578:6:18"}],"id":4455,"name":"MemberAccess","src":"22578:11:18"}],"id":4456,"name":"BinaryOperation","src":"22565:24:18"}],"id":4457,"name":"Assignment","src":"22552:37:18"}],"id":4458,"name":"ExpressionStatement","src":"22552:37:18"}],"id":4459,"name":"Block","src":"22538:62:18"}],"id":4460,"name":"IfStatement","src":"22447:153:18"},{"attributes":{"functionReturnParameters":4405},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4401,"type":"struct strings.slice memory","value":"token"},"id":4461,"name":"Identifier","src":"22616:5:18"}],"id":4462,"name":"Return","src":"22609:12:18"}],"id":4463,"name":"Block","src":"22282:346:18"}],"id":4464,"name":"FunctionDefinition","src":"22169:459:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4465,"name":"UserDefinedTypeName","src":"23113:5:18"}],"id":4466,"name":"VariableDeclaration","src":"23113:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4467,"name":"UserDefinedTypeName","src":"23132:5:18"}],"id":4468,"name":"VariableDeclaration","src":"23132:19:18"}],"id":4469,"name":"ParameterList","src":"23112:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":4480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4470,"name":"UserDefinedTypeName","src":"23176:5:18"}],"id":4471,"name":"VariableDeclaration","src":"23176:18:18"}],"id":4472,"name":"ParameterList","src":"23175:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[4464,4480],"referencedDeclaration":4464,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":4473,"name":"Identifier","src":"23206:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4466,"type":"struct strings.slice memory","value":"self"},"id":4474,"name":"Identifier","src":"23213:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4468,"type":"struct strings.slice memory","value":"needle"},"id":4475,"name":"Identifier","src":"23219:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4471,"type":"struct strings.slice memory","value":"token"},"id":4476,"name":"Identifier","src":"23227:5:18"}],"id":4477,"name":"FunctionCall","src":"23206:27:18"}],"id":4478,"name":"ExpressionStatement","src":"23206:27:18"}],"id":4479,"name":"Block","src":"23196:44:18"}],"id":4480,"name":"FunctionDefinition","src":"23097:143:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4539,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4481,"name":"UserDefinedTypeName","src":"23524:5:18"}],"id":4482,"name":"VariableDeclaration","src":"23524:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4539,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4483,"name":"UserDefinedTypeName","src":"23543:5:18"}],"id":4484,"name":"VariableDeclaration","src":"23543:19:18"}],"id":4485,"name":"ParameterList","src":"23523:40:18"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":4539,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4486,"name":"ElementaryTypeName","src":"23587:4:18"}],"id":4487,"name":"VariableDeclaration","src":"23587:8:18"}],"id":4488,"name":"ParameterList","src":"23586:10:18"},{"children":[{"attributes":{"assignments":[4490]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4538,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4489,"name":"ElementaryTypeName","src":"23607:4:18"}],"id":4490,"name":"VariableDeclaration","src":"23607:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4491,"name":"Identifier","src":"23618:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4492,"name":"Identifier","src":"23626:4:18"}],"id":4493,"name":"MemberAccess","src":"23626:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4494,"name":"Identifier","src":"23637:4:18"}],"id":4495,"name":"MemberAccess","src":"23637:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4496,"name":"Identifier","src":"23648:6:18"}],"id":4497,"name":"MemberAccess","src":"23648:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4498,"name":"Identifier","src":"23661:6:18"}],"id":4499,"name":"MemberAccess","src":"23661:11:18"}],"id":4500,"name":"FunctionCall","src":"23618:55:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4501,"name":"Identifier","src":"23676:6:18"}],"id":4502,"name":"MemberAccess","src":"23676:11:18"}],"id":4503,"name":"BinaryOperation","src":"23618:69:18"}],"id":4504,"name":"VariableDeclarationStatement","src":"23607:80:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4490,"type":"uint256","value":"ptr"},"id":4505,"name":"Identifier","src":"23704:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4506,"name":"Identifier","src":"23711:4:18"}],"id":4507,"name":"MemberAccess","src":"23711:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4508,"name":"Identifier","src":"23723:4:18"}],"id":4509,"name":"MemberAccess","src":"23723:9:18"}],"id":4510,"name":"BinaryOperation","src":"23711:21:18"}],"id":4511,"name":"BinaryOperation","src":"23704:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4487,"type":"uint256","value":"cnt"},"id":4512,"name":"Identifier","src":"23748:3:18"}],"id":4513,"name":"UnaryOperation","src":"23748:5:18"}],"id":4514,"name":"ExpressionStatement","src":"23748:5:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4490,"type":"uint256","value":"ptr"},"id":4515,"name":"Identifier","src":"23767:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4516,"name":"Identifier","src":"23773:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4517,"name":"Identifier","src":"23781:4:18"}],"id":4518,"name":"MemberAccess","src":"23781:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4490,"type":"uint256","value":"ptr"},"id":4519,"name":"Identifier","src":"23794:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4520,"name":"Identifier","src":"23800:4:18"}],"id":4521,"name":"MemberAccess","src":"23800:9:18"}],"id":4522,"name":"BinaryOperation","src":"23794:15:18"}],"id":4523,"name":"TupleExpression","src":"23793:17:18"}],"id":4524,"name":"BinaryOperation","src":"23781:29:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4490,"type":"uint256","value":"ptr"},"id":4525,"name":"Identifier","src":"23812:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4526,"name":"Identifier","src":"23817:6:18"}],"id":4527,"name":"MemberAccess","src":"23817:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4528,"name":"Identifier","src":"23830:6:18"}],"id":4529,"name":"MemberAccess","src":"23830:11:18"}],"id":4530,"name":"FunctionCall","src":"23773:69:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4531,"name":"Identifier","src":"23845:6:18"}],"id":4532,"name":"MemberAccess","src":"23845:11:18"}],"id":4533,"name":"BinaryOperation","src":"23773:83:18"}],"id":4534,"name":"Assignment","src":"23767:89:18"}],"id":4535,"name":"ExpressionStatement","src":"23767:89:18"}],"id":4536,"name":"Block","src":"23734:133:18"}],"id":4537,"name":"WhileStatement","src":"23697:170:18"}],"id":4538,"name":"Block","src":"23597:276:18"}],"id":4539,"name":"FunctionDefinition","src":"23509:364:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4563,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4540,"name":"UserDefinedTypeName","src":"24130:5:18"}],"id":4541,"name":"VariableDeclaration","src":"24130:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4563,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4542,"name":"UserDefinedTypeName","src":"24149:5:18"}],"id":4543,"name":"VariableDeclaration","src":"24149:19:18"}],"id":4544,"name":"ParameterList","src":"24129:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4563,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4545,"name":"ElementaryTypeName","src":"24193:4:18"}],"id":4546,"name":"VariableDeclaration","src":"24193:4:18"}],"id":4547,"name":"ParameterList","src":"24192:6:18"},{"children":[{"attributes":{"functionReturnParameters":4547},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4548,"name":"Identifier","src":"24216:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4541,"type":"struct strings.slice memory","value":"self"},"id":4549,"name":"Identifier","src":"24225:4:18"}],"id":4550,"name":"MemberAccess","src":"24225:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4541,"type":"struct strings.slice memory","value":"self"},"id":4551,"name":"Identifier","src":"24236:4:18"}],"id":4552,"name":"MemberAccess","src":"24236:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"struct strings.slice memory","value":"needle"},"id":4553,"name":"Identifier","src":"24247:6:18"}],"id":4554,"name":"MemberAccess","src":"24247:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"struct strings.slice memory","value":"needle"},"id":4555,"name":"Identifier","src":"24260:6:18"}],"id":4556,"name":"MemberAccess","src":"24260:11:18"}],"id":4557,"name":"FunctionCall","src":"24216:56:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4541,"type":"struct strings.slice memory","value":"self"},"id":4558,"name":"Identifier","src":"24276:4:18"}],"id":4559,"name":"MemberAccess","src":"24276:9:18"}],"id":4560,"name":"BinaryOperation","src":"24216:69:18"}],"id":4561,"name":"Return","src":"24209:76:18"}],"id":4562,"name":"Block","src":"24199:93:18"}],"id":4563,"name":"FunctionDefinition","src":"24112:180:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4609,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4564,"name":"UserDefinedTypeName","src":"24595:5:18"}],"id":4565,"name":"VariableDeclaration","src":"24595:17:18"},{"attributes":{"constant":false,"name":"other","scope":4609,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4566,"name":"UserDefinedTypeName","src":"24614:5:18"}],"id":4567,"name":"VariableDeclaration","src":"24614:18:18"}],"id":4568,"name":"ParameterList","src":"24594:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4609,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4569,"name":"ElementaryTypeName","src":"24657:6:18"}],"id":4570,"name":"VariableDeclaration","src":"24657:13:18"}],"id":4571,"name":"ParameterList","src":"24656:15:18"},{"children":[{"attributes":{"assignments":[4573]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4608,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4572,"name":"ElementaryTypeName","src":"24682:6:18"}],"id":4573,"name":"VariableDeclaration","src":"24682:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":4574,"name":"ElementaryTypeName","src":"24706:6:18"}],"id":4575,"name":"NewExpression","src":"24702:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4565,"type":"struct strings.slice memory","value":"self"},"id":4576,"name":"Identifier","src":"24713:4:18"}],"id":4577,"name":"MemberAccess","src":"24713:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"struct strings.slice memory","value":"other"},"id":4578,"name":"Identifier","src":"24725:5:18"}],"id":4579,"name":"MemberAccess","src":"24725:10:18"}],"id":4580,"name":"BinaryOperation","src":"24713:22:18"}],"id":4581,"name":"FunctionCall","src":"24702:34:18"}],"id":4582,"name":"VariableDeclarationStatement","src":"24682:54:18"},{"attributes":{"assignments":[4584],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":4608,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4583,"name":"ElementaryTypeName","src":"24746:4:18"}],"id":4584,"name":"VariableDeclaration","src":"24746:11:18"}],"id":4585,"name":"VariableDeclarationStatement","src":"24746:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":4584,"isOffset":false,"isSlot":false,"src":"24778:6:18","valueSize":1}},{"ret":{"declaration":4573,"isOffset":false,"isSlot":false,"src":"24792:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":4586,"name":"InlineAssembly","src":"24767:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4587,"name":"Identifier","src":"24811:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4584,"type":"uint256","value":"retptr"},"id":4588,"name":"Identifier","src":"24818:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4565,"type":"struct strings.slice memory","value":"self"},"id":4589,"name":"Identifier","src":"24826:4:18"}],"id":4590,"name":"MemberAccess","src":"24826:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4565,"type":"struct strings.slice memory","value":"self"},"id":4591,"name":"Identifier","src":"24837:4:18"}],"id":4592,"name":"MemberAccess","src":"24837:9:18"}],"id":4593,"name":"FunctionCall","src":"24811:36:18"}],"id":4594,"name":"ExpressionStatement","src":"24811:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4595,"name":"Identifier","src":"24857:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4584,"type":"uint256","value":"retptr"},"id":4596,"name":"Identifier","src":"24864:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4565,"type":"struct strings.slice memory","value":"self"},"id":4597,"name":"Identifier","src":"24873:4:18"}],"id":4598,"name":"MemberAccess","src":"24873:9:18"}],"id":4599,"name":"BinaryOperation","src":"24864:18:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"struct strings.slice memory","value":"other"},"id":4600,"name":"Identifier","src":"24884:5:18"}],"id":4601,"name":"MemberAccess","src":"24884:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"struct strings.slice memory","value":"other"},"id":4602,"name":"Identifier","src":"24896:5:18"}],"id":4603,"name":"MemberAccess","src":"24896:10:18"}],"id":4604,"name":"FunctionCall","src":"24857:50:18"}],"id":4605,"name":"ExpressionStatement","src":"24857:50:18"},{"attributes":{"functionReturnParameters":4571},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4573,"type":"string memory","value":"ret"},"id":4606,"name":"Identifier","src":"24924:3:18"}],"id":4607,"name":"Return","src":"24917:10:18"}],"id":4608,"name":"Block","src":"24672:262:18"}],"id":4609,"name":"FunctionDefinition","src":"24579:355:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4610,"name":"UserDefinedTypeName","src":"25284:5:18"}],"id":4611,"name":"VariableDeclaration","src":"25284:17:18"},{"attributes":{"constant":false,"name":"parts","scope":4724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4612,"name":"UserDefinedTypeName","src":"25303:5:18"}],"id":4613,"name":"ArrayTypeName","src":"25303:7:18"}],"id":4614,"name":"VariableDeclaration","src":"25303:20:18"}],"id":4615,"name":"ParameterList","src":"25283:41:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4724,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4616,"name":"ElementaryTypeName","src":"25348:6:18"}],"id":4617,"name":"VariableDeclaration","src":"25348:13:18"}],"id":4618,"name":"ParameterList","src":"25347:15:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4619,"name":"Identifier","src":"25377:5:18"}],"id":4620,"name":"MemberAccess","src":"25377:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4621,"name":"Literal","src":"25393:1:18"}],"id":4622,"name":"BinaryOperation","src":"25377:17:18"},{"attributes":{"functionReturnParameters":4618},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4623,"name":"Literal","src":"25415:2:18"}],"id":4624,"name":"Return","src":"25408:9:18"}],"id":4625,"name":"IfStatement","src":"25373:44:18"},{"attributes":{"assignments":[4627]},"children":[{"attributes":{"constant":false,"name":"length","scope":4723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4626,"name":"ElementaryTypeName","src":"25428:4:18"}],"id":4627,"name":"VariableDeclaration","src":"25428:11:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4611,"type":"struct strings.slice memory","value":"self"},"id":4628,"name":"Identifier","src":"25442:4:18"}],"id":4629,"name":"MemberAccess","src":"25442:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4630,"name":"Identifier","src":"25455:5:18"}],"id":4631,"name":"MemberAccess","src":"25455:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4632,"name":"Literal","src":"25470:1:18"}],"id":4633,"name":"BinaryOperation","src":"25455:16:18"}],"id":4634,"name":"TupleExpression","src":"25454:18:18"}],"id":4635,"name":"BinaryOperation","src":"25442:30:18"}],"id":4636,"name":"VariableDeclarationStatement","src":"25428:44:18"},{"children":[{"attributes":{"assignments":[4638]},"children":[{"attributes":{"constant":false,"name":"i","scope":4656,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4637,"name":"ElementaryTypeName","src":"25487:4:18"}],"id":4638,"name":"VariableDeclaration","src":"25487:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4639,"name":"Literal","src":"25496:1:18"}],"id":4640,"name":"VariableDeclarationStatement","src":"25487:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4638,"type":"uint256","value":"i"},"id":4641,"name":"Identifier","src":"25499:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4642,"name":"Identifier","src":"25503:5:18"}],"id":4643,"name":"MemberAccess","src":"25503:12:18"}],"id":4644,"name":"BinaryOperation","src":"25499:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4638,"type":"uint256","value":"i"},"id":4645,"name":"Identifier","src":"25517:1:18"}],"id":4646,"name":"UnaryOperation","src":"25517:3:18"}],"id":4647,"name":"ExpressionStatement","src":"25517:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4627,"type":"uint256","value":"length"},"id":4648,"name":"Identifier","src":"25536:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4649,"name":"Identifier","src":"25546:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4638,"type":"uint256","value":"i"},"id":4650,"name":"Identifier","src":"25552:1:18"}],"id":4651,"name":"IndexAccess","src":"25546:8:18"}],"id":4652,"name":"MemberAccess","src":"25546:13:18"}],"id":4653,"name":"Assignment","src":"25536:23:18"}],"id":4654,"name":"ExpressionStatement","src":"25536:23:18"}],"id":4655,"name":"Block","src":"25522:48:18"}],"id":4656,"name":"ForStatement","src":"25482:88:18"},{"attributes":{"assignments":[4658]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4723,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4657,"name":"ElementaryTypeName","src":"25580:6:18"}],"id":4658,"name":"VariableDeclaration","src":"25580:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":4659,"name":"ElementaryTypeName","src":"25604:6:18"}],"id":4660,"name":"NewExpression","src":"25600:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4627,"type":"uint256","value":"length"},"id":4661,"name":"Identifier","src":"25611:6:18"}],"id":4662,"name":"FunctionCall","src":"25600:18:18"}],"id":4663,"name":"VariableDeclarationStatement","src":"25580:38:18"},{"attributes":{"assignments":[4665],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":4723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4664,"name":"ElementaryTypeName","src":"25628:4:18"}],"id":4665,"name":"VariableDeclaration","src":"25628:11:18"}],"id":4666,"name":"VariableDeclarationStatement","src":"25628:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":4665,"isOffset":false,"isSlot":false,"src":"25660:6:18","valueSize":1}},{"ret":{"declaration":4658,"isOffset":false,"isSlot":false,"src":"25674:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":4667,"name":"InlineAssembly","src":"25649:35:18"},{"children":[{"attributes":{"assignments":[4669]},"children":[{"attributes":{"constant":false,"name":"i","scope":4720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4668,"name":"ElementaryTypeName","src":"25699:4:18"}],"id":4669,"name":"VariableDeclaration","src":"25699:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4670,"name":"Literal","src":"25708:1:18"}],"id":4671,"name":"VariableDeclarationStatement","src":"25699:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4672,"name":"Identifier","src":"25711:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4673,"name":"Identifier","src":"25715:5:18"}],"id":4674,"name":"MemberAccess","src":"25715:12:18"}],"id":4675,"name":"BinaryOperation","src":"25711:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4676,"name":"Identifier","src":"25729:1:18"}],"id":4677,"name":"UnaryOperation","src":"25729:3:18"}],"id":4678,"name":"ExpressionStatement","src":"25729:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4679,"name":"Identifier","src":"25748:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4665,"type":"uint256","value":"retptr"},"id":4680,"name":"Identifier","src":"25755:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4681,"name":"Identifier","src":"25763:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4682,"name":"Identifier","src":"25769:1:18"}],"id":4683,"name":"IndexAccess","src":"25763:8:18"}],"id":4684,"name":"MemberAccess","src":"25763:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4685,"name":"Identifier","src":"25778:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4686,"name":"Identifier","src":"25784:1:18"}],"id":4687,"name":"IndexAccess","src":"25778:8:18"}],"id":4688,"name":"MemberAccess","src":"25778:13:18"}],"id":4689,"name":"FunctionCall","src":"25748:44:18"}],"id":4690,"name":"ExpressionStatement","src":"25748:44:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4665,"type":"uint256","value":"retptr"},"id":4691,"name":"Identifier","src":"25806:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4692,"name":"Identifier","src":"25816:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4693,"name":"Identifier","src":"25822:1:18"}],"id":4694,"name":"IndexAccess","src":"25816:8:18"}],"id":4695,"name":"MemberAccess","src":"25816:13:18"}],"id":4696,"name":"Assignment","src":"25806:23:18"}],"id":4697,"name":"ExpressionStatement","src":"25806:23:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4698,"name":"Identifier","src":"25847:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4699,"name":"Identifier","src":"25851:5:18"}],"id":4700,"name":"MemberAccess","src":"25851:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4701,"name":"Literal","src":"25866:1:18"}],"id":4702,"name":"BinaryOperation","src":"25851:16:18"}],"id":4703,"name":"BinaryOperation","src":"25847:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4704,"name":"Identifier","src":"25887:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4665,"type":"uint256","value":"retptr"},"id":4705,"name":"Identifier","src":"25894:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4611,"type":"struct strings.slice memory","value":"self"},"id":4706,"name":"Identifier","src":"25902:4:18"}],"id":4707,"name":"MemberAccess","src":"25902:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4611,"type":"struct strings.slice memory","value":"self"},"id":4708,"name":"Identifier","src":"25913:4:18"}],"id":4709,"name":"MemberAccess","src":"25913:9:18"}],"id":4710,"name":"FunctionCall","src":"25887:36:18"}],"id":4711,"name":"ExpressionStatement","src":"25887:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4665,"type":"uint256","value":"retptr"},"id":4712,"name":"Identifier","src":"25941:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4611,"type":"struct strings.slice memory","value":"self"},"id":4713,"name":"Identifier","src":"25951:4:18"}],"id":4714,"name":"MemberAccess","src":"25951:9:18"}],"id":4715,"name":"Assignment","src":"25941:19:18"}],"id":4716,"name":"ExpressionStatement","src":"25941:19:18"}],"id":4717,"name":"Block","src":"25869:106:18"}],"id":4718,"name":"IfStatement","src":"25843:132:18"}],"id":4719,"name":"Block","src":"25734:251:18"}],"id":4720,"name":"ForStatement","src":"25694:291:18"},{"attributes":{"functionReturnParameters":4618},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4658,"type":"string memory","value":"ret"},"id":4721,"name":"Identifier","src":"26002:3:18"}],"id":4722,"name":"Return","src":"25995:10:18"}],"id":4723,"name":"Block","src":"25363:649:18"}],"id":4724,"name":"FunctionDefinition","src":"25270:742:18"}],"id":4725,"name":"ContractDefinition","src":"2599:23415:18"}],"id":4726,"name":"SourceUnit","src":"2574:23441:18"}},"holder.sol":{"AST":{"attributes":{"absolutePath":"holder.sol","exportedSymbols":{"Holder":[266]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"787:24:19"},{"attributes":{"SourceUnit":320,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"813:31:19"},{"attributes":{"SourceUnit":453,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"845:34:19"},{"attributes":{"SourceUnit":846,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"880:39:19"},{"attributes":{"SourceUnit":485,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"920:37:19"},{"attributes":{"SourceUnit":493,"absolutePath":"internals/burner.sol","file":"./internals/burner.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"958:32:19"},{"attributes":{"SourceUnit":589,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":7,"name":"ImportDirective","src":"991:38:19"},{"attributes":{"SourceUnit":806,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":8,"name":"ImportDirective","src":"1030:44:19"},{"attributes":{"contractDependencies":[484,588,805,845,1344],"contractKind":"contract","documentation":"@title Holder - The TKN Asset Contract\n @notice When the TKN contract calls the burn method, a share of the tokens held by this contract are disbursed to the burner.","fullyImplemented":true,"linearizedBaseContracts":[266,805,845,588,1344,484],"name":"Holder","scope":267},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":484,"type":"contract Balanceable"},"id":9,"name":"UserDefinedTypeName","src":"1269:11:19"}],"id":10,"name":"InheritanceSpecifier","src":"1269:11:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1344,"type":"contract ENSResolvable"},"id":11,"name":"UserDefinedTypeName","src":"1282:13:19"}],"id":12,"name":"InheritanceSpecifier","src":"1282:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":588,"type":"contract Controllable"},"id":13,"name":"UserDefinedTypeName","src":"1297:12:19"}],"id":14,"name":"InheritanceSpecifier","src":"1297:12:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":845,"type":"contract Transferrable"},"id":15,"name":"UserDefinedTypeName","src":"1311:13:19"}],"id":16,"name":"InheritanceSpecifier","src":"1311:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":805,"type":"contract TokenWhitelistable"},"id":17,"name":"UserDefinedTypeName","src":"1326:18:19"}],"id":18,"name":"InheritanceSpecifier","src":"1326:18:19"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":452,"type":"library SafeMath"},"id":19,"name":"UserDefinedTypeName","src":"1357:8:19"},{"attributes":{"name":"uint256","type":"uint256"},"id":20,"name":"ElementaryTypeName","src":"1370:7:19"}],"id":21,"name":"UsingForDirective","src":"1351:27:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":27,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":22,"name":"ElementaryTypeName","src":"1399:7:19"}],"id":23,"name":"VariableDeclaration","src":"1399:13:19"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":27,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":24,"name":"ElementaryTypeName","src":"1414:7:19"}],"id":25,"name":"VariableDeclaration","src":"1414:15:19"}],"id":26,"name":"ParameterList","src":"1398:32:19"}],"id":27,"name":"EventDefinition","src":"1384:47:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"CashAndBurned"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":35,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":28,"name":"ElementaryTypeName","src":"1456:7:19"}],"id":29,"name":"VariableDeclaration","src":"1456:11:19"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":35,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":30,"name":"ElementaryTypeName","src":"1469:7:19"}],"id":31,"name":"VariableDeclaration","src":"1469:14:19"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":35,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":32,"name":"ElementaryTypeName","src":"1485:7:19"}],"id":33,"name":"VariableDeclaration","src":"1485:15:19"}],"id":34,"name":"ParameterList","src":"1455:46:19"}],"id":35,"name":"EventDefinition","src":"1436:66:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":43,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":36,"name":"ElementaryTypeName","src":"1521:7:19"}],"id":37,"name":"VariableDeclaration","src":"1521:11:19"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":43,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":38,"name":"ElementaryTypeName","src":"1534:7:19"}],"id":39,"name":"VariableDeclaration","src":"1534:14:19"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":43,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":40,"name":"ElementaryTypeName","src":"1550:7:19"}],"id":41,"name":"VariableDeclaration","src":"1550:15:19"}],"id":42,"name":"ParameterList","src":"1520:46:19"}],"id":43,"name":"EventDefinition","src":"1507:60:19"},{"attributes":{"documentation":"@dev Check if the sender is the burner contract","name":"onlyBurner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":44,"name":"ParameterList","src":"1648:2:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e12e9dbbae30fabb8abb1f649d7c812202e6169a8d35ebd3f7b3cb8c088116f8","typeString":"literal_string \"burner contract is not the sender\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":45,"name":"Identifier","src":"1661:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":46,"name":"Identifier","src":"1669:3:19"}],"id":47,"name":"MemberAccess","src":"1669:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"address","value":"_burner"},"id":48,"name":"Identifier","src":"1683:7:19"}],"id":49,"name":"BinaryOperation","src":"1669:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6275726e657220636f6e7472616374206973206e6f74207468652073656e646572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"burner contract is not the sender\"","value":"burner contract is not the sender"},"id":50,"name":"Literal","src":"1692:35:19"}],"id":51,"name":"FunctionCall","src":"1661:67:19"}],"id":52,"name":"ExpressionStatement","src":"1661:67:19"},{"id":53,"name":"PlaceholderStatement","src":"1738:1:19"}],"id":54,"name":"Block","src":"1651:95:19"}],"id":55,"name":"ModifierDefinition","src":"1629:117:19"},{"attributes":{"constant":false,"name":"_burner","scope":266,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":56,"name":"ElementaryTypeName","src":"1810:7:19"}],"id":57,"name":"VariableDeclaration","src":"1810:23:19"},{"attributes":{"documentation":"@notice Constructor initializes the holder contract.\n @param _burnerContract_ is the address of the token contract TKN with burning functionality.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS node of the Token whitelist.\n @param _controllerNode_ is the ENS node of the Controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":266,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_burnerContract_","scope":82,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":58,"name":"ElementaryTypeName","src":"2213:7:19"}],"id":59,"name":"VariableDeclaration","src":"2213:24:19"},{"attributes":{"constant":false,"name":"_ens_","scope":82,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":60,"name":"ElementaryTypeName","src":"2239:7:19"}],"id":61,"name":"VariableDeclaration","src":"2239:13:19"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":82,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":62,"name":"ElementaryTypeName","src":"2254:7:19"}],"id":63,"name":"VariableDeclaration","src":"2254:28:19"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":82,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":64,"name":"ElementaryTypeName","src":"2284:7:19"}],"id":65,"name":"VariableDeclaration","src":"2284:24:19"}],"id":66,"name":"ParameterList","src":"2212:97:19"},{"attributes":{"parameters":[null]},"children":[],"id":76,"name":"ParameterList","src":"2446:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1344,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":67,"name":"Identifier","src":"2333:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":61,"type":"address","value":"_ens_"},"id":68,"name":"Identifier","src":"2347:5:19"}],"id":69,"name":"ModifierInvocation","src":"2333:20:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":588,"type":"type(contract Controllable)","value":"Controllable"},"id":70,"name":"Identifier","src":"2362:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":65,"type":"bytes32","value":"_controllerNode_"},"id":71,"name":"Identifier","src":"2375:16:19"}],"id":72,"name":"ModifierInvocation","src":"2362:30:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":805,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":73,"name":"Identifier","src":"2401:18:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":63,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":74,"name":"Identifier","src":"2420:20:19"}],"id":75,"name":"ModifierInvocation","src":"2401:40:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"address","value":"_burner"},"id":77,"name":"Identifier","src":"2456:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":59,"type":"address","value":"_burnerContract_"},"id":78,"name":"Identifier","src":"2466:16:19"}],"id":79,"name":"Assignment","src":"2456:26:19"}],"id":80,"name":"ExpressionStatement","src":"2456:26:19"}],"id":81,"name":"Block","src":"2446:43:19"}],"id":82,"name":"FunctionDefinition","src":"2201:288:19"},{"attributes":{"documentation":"@notice Ether may be sent from anywhere.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":266,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":83,"name":"ParameterList","src":"2552:2:19"},{"attributes":{"parameters":[null]},"children":[],"id":84,"name":"ParameterList","src":"2572:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":27,"type":"function (address,uint256)","value":"Received"},"id":85,"name":"Identifier","src":"2587:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":86,"name":"Identifier","src":"2596:3:19"}],"id":87,"name":"MemberAccess","src":"2596:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":88,"name":"Identifier","src":"2608:3:19"}],"id":89,"name":"MemberAccess","src":"2608:9:19"}],"id":90,"name":"FunctionCall","src":"2587:31:19"}],"id":91,"name":"EmitStatement","src":"2582:36:19"}],"id":92,"name":"Block","src":"2572:53:19"}],"id":93,"name":"FunctionDefinition","src":"2544:81:19"},{"attributes":{"documentation":"@notice Burn handles disbursing a share of tokens in this contract to a given address.\n @param _to The address to disburse to\n @param _amount The amount of TKN that will be burned if this succeeds","implemented":true,"isConstructor":false,"kind":"function","name":"burn","scope":266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":187,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":94,"name":"ElementaryTypeName","src":"2864:15:19"}],"id":95,"name":"VariableDeclaration","src":"2864:19:19"},{"attributes":{"constant":false,"name":"_amount","scope":187,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":96,"name":"ElementaryTypeName","src":"2885:7:19"}],"id":97,"name":"VariableDeclaration","src":"2885:15:19"}],"id":98,"name":"ParameterList","src":"2863:38:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":187,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":101,"name":"ElementaryTypeName","src":"2931:4:19"}],"id":102,"name":"VariableDeclaration","src":"2931:4:19"}],"id":103,"name":"ParameterList","src":"2930:6:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":55,"type":"modifier ()","value":"onlyBurner"},"id":99,"name":"Identifier","src":"2911:10:19"}],"id":100,"name":"ModifierInvocation","src":"2911:10:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":97,"type":"uint256","value":"_amount"},"id":104,"name":"Identifier","src":"2951:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":105,"name":"Literal","src":"2962:1:19"}],"id":106,"name":"BinaryOperation","src":"2951:12:19"},{"children":[{"attributes":{"functionReturnParameters":103},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":107,"name":"Literal","src":"2986:4:19"}],"id":108,"name":"Return","src":"2979:11:19"}],"id":109,"name":"Block","src":"2965:36:19"}],"id":110,"name":"IfStatement","src":"2947:54:19"},{"attributes":{"assignments":[112]},"children":[{"attributes":{"constant":false,"name":"supply","scope":186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":111,"name":"ElementaryTypeName","src":"3078:7:19"}],"id":112,"name":"VariableDeclaration","src":"3078:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"currentSupply","referencedDeclaration":491,"type":"function () view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IBurner","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":492,"type":"type(contract IBurner)","value":"IBurner"},"id":113,"name":"Identifier","src":"3095:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"address","value":"_burner"},"id":114,"name":"Identifier","src":"3103:7:19"}],"id":115,"name":"FunctionCall","src":"3095:16:19"}],"id":116,"name":"MemberAccess","src":"3095:30:19"}],"id":117,"name":"FunctionCall","src":"3095:32:19"}],"id":118,"name":"MemberAccess","src":"3095:36:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":97,"type":"uint256","value":"_amount"},"id":119,"name":"Identifier","src":"3132:7:19"}],"id":120,"name":"FunctionCall","src":"3095:45:19"}],"id":121,"name":"VariableDeclarationStatement","src":"3078:62:19"},{"attributes":{"assignments":[125]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":186,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":123,"name":"ElementaryTypeName","src":"3150:7:19"}],"id":124,"name":"ArrayTypeName","src":"3150:9:19"}],"id":125,"name":"VariableDeclaration","src":"3150:36:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":699,"type":"function () view returns (address[] memory)","value":"_redeemableTokens"},"id":126,"name":"Identifier","src":"3189:17:19"}],"id":127,"name":"FunctionCall","src":"3189:19:19"}],"id":128,"name":"VariableDeclarationStatement","src":"3150:58:19"},{"children":[{"attributes":{"assignments":[130]},"children":[{"attributes":{"constant":false,"name":"i","scope":183,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":129,"name":"ElementaryTypeName","src":"3223:7:19"}],"id":130,"name":"VariableDeclaration","src":"3223:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":131,"name":"Literal","src":"3235:1:19"}],"id":132,"name":"VariableDeclarationStatement","src":"3223:13:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":133,"name":"Identifier","src":"3238:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"address[] memory","value":"redeemableAddresses"},"id":134,"name":"Identifier","src":"3242:19:19"}],"id":135,"name":"MemberAccess","src":"3242:26:19"}],"id":136,"name":"BinaryOperation","src":"3238:30:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":137,"name":"Identifier","src":"3270:1:19"}],"id":138,"name":"UnaryOperation","src":"3270:3:19"}],"id":139,"name":"ExpressionStatement","src":"3270:3:19"},{"children":[{"attributes":{"assignments":[141]},"children":[{"attributes":{"constant":false,"name":"redeemableBalance","scope":182,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":140,"name":"ElementaryTypeName","src":"3289:7:19"}],"id":141,"name":"VariableDeclaration","src":"3289:25:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":483,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":142,"name":"Identifier","src":"3317:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Holder_$266","typeString":"contract Holder"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":143,"name":"ElementaryTypeNameExpression","src":"3326:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7639,"type":"contract Holder","value":"this"},"id":144,"name":"Identifier","src":"3334:4:19"}],"id":145,"name":"FunctionCall","src":"3326:13:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"address[] memory","value":"redeemableAddresses"},"id":146,"name":"Identifier","src":"3341:19:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":147,"name":"Identifier","src":"3361:1:19"}],"id":148,"name":"IndexAccess","src":"3341:22:19"}],"id":149,"name":"FunctionCall","src":"3317:47:19"}],"id":150,"name":"VariableDeclarationStatement","src":"3289:75:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":141,"type":"uint256","value":"redeemableBalance"},"id":151,"name":"Identifier","src":"3382:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":152,"name":"Literal","src":"3402:1:19"}],"id":153,"name":"BinaryOperation","src":"3382:21:19"},{"children":[{"attributes":{"assignments":[155]},"children":[{"attributes":{"constant":false,"name":"redeemableAmount","scope":180,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":154,"name":"ElementaryTypeName","src":"3423:7:19"}],"id":155,"name":"VariableDeclaration","src":"3423:24:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":430,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":405,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":141,"type":"uint256","value":"redeemableBalance"},"id":156,"name":"Identifier","src":"3450:17:19"}],"id":157,"name":"MemberAccess","src":"3450:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":97,"type":"uint256","value":"_amount"},"id":158,"name":"Identifier","src":"3472:7:19"}],"id":159,"name":"FunctionCall","src":"3450:30:19"}],"id":160,"name":"MemberAccess","src":"3450:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"uint256","value":"supply"},"id":161,"name":"Identifier","src":"3485:6:19"}],"id":162,"name":"FunctionCall","src":"3450:42:19"}],"id":163,"name":"VariableDeclarationStatement","src":"3423:69:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":844,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":164,"name":"Identifier","src":"3510:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":95,"type":"address payable","value":"_to"},"id":165,"name":"Identifier","src":"3524:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"address[] memory","value":"redeemableAddresses"},"id":166,"name":"Identifier","src":"3529:19:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":167,"name":"Identifier","src":"3549:1:19"}],"id":168,"name":"IndexAccess","src":"3529:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":155,"type":"uint256","value":"redeemableAmount"},"id":169,"name":"Identifier","src":"3553:16:19"}],"id":170,"name":"FunctionCall","src":"3510:60:19"}],"id":171,"name":"ExpressionStatement","src":"3510:60:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"function (address,address,uint256)","value":"CashAndBurned"},"id":172,"name":"Identifier","src":"3593:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":95,"type":"address payable","value":"_to"},"id":173,"name":"Identifier","src":"3607:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"address[] memory","value":"redeemableAddresses"},"id":174,"name":"Identifier","src":"3612:19:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":175,"name":"Identifier","src":"3632:1:19"}],"id":176,"name":"IndexAccess","src":"3612:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":155,"type":"uint256","value":"redeemableAmount"},"id":177,"name":"Identifier","src":"3636:16:19"}],"id":178,"name":"FunctionCall","src":"3593:60:19"}],"id":179,"name":"EmitStatement","src":"3588:65:19"}],"id":180,"name":"Block","src":"3405:263:19"}],"id":181,"name":"IfStatement","src":"3378:290:19"}],"id":182,"name":"Block","src":"3275:403:19"}],"id":183,"name":"ForStatement","src":"3218:460:19"},{"attributes":{"functionReturnParameters":103},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":184,"name":"Literal","src":"3695:4:19"}],"id":185,"name":"Return","src":"3688:11:19"}],"id":186,"name":"Block","src":"2937:769:19"}],"id":187,"name":"FunctionDefinition","src":"2850:856:19"},{"attributes":{"documentation":"@notice This allows for the admin to reclaim the non-redeemableTokens.\n @param _to this is the address which the reclaimed tokens will be sent to.\n @param _nonRedeemableAddresses this is the array of tokens to be claimed.","implemented":true,"isConstructor":false,"kind":"function","name":"nonRedeemableTokenClaim","scope":266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":257,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":188,"name":"ElementaryTypeName","src":"3989:15:19"}],"id":189,"name":"VariableDeclaration","src":"3989:19:19"},{"attributes":{"constant":false,"name":"_nonRedeemableAddresses","scope":257,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":190,"name":"ElementaryTypeName","src":"4010:7:19"}],"id":191,"name":"ArrayTypeName","src":"4010:9:19"}],"id":192,"name":"VariableDeclaration","src":"4010:42:19"}],"id":193,"name":"ParameterList","src":"3988:65:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":257,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":196,"name":"ElementaryTypeName","src":"4082:4:19"}],"id":197,"name":"VariableDeclaration","src":"4082:4:19"}],"id":198,"name":"ParameterList","src":"4081:6:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":194,"name":"Identifier","src":"4063:9:19"}],"id":195,"name":"ModifierInvocation","src":"4063:9:19"},{"children":[{"children":[{"attributes":{"assignments":[200]},"children":[{"attributes":{"constant":false,"name":"i","scope":253,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":199,"name":"ElementaryTypeName","src":"4103:7:19"}],"id":200,"name":"VariableDeclaration","src":"4103:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":201,"name":"Literal","src":"4115:1:19"}],"id":202,"name":"VariableDeclarationStatement","src":"4103:13:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":203,"name":"Identifier","src":"4118:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":204,"name":"Identifier","src":"4122:23:19"}],"id":205,"name":"MemberAccess","src":"4122:30:19"}],"id":206,"name":"BinaryOperation","src":"4118:34:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":207,"name":"Identifier","src":"4154:1:19"}],"id":208,"name":"UnaryOperation","src":"4154:3:19"}],"id":209,"name":"ExpressionStatement","src":"4154:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e46bb5c563bcc39c933e72fca90b9656d56f1b824afcf8bacd2592d9399de9bc","typeString":"literal_string \"redeemables cannot be claimed\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":210,"name":"Identifier","src":"4217:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"function (address) view returns (bool)","value":"_isTokenRedeemable"},"id":211,"name":"Identifier","src":"4226:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":212,"name":"Identifier","src":"4245:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":213,"name":"Identifier","src":"4269:1:19"}],"id":214,"name":"IndexAccess","src":"4245:26:19"}],"id":215,"name":"FunctionCall","src":"4226:46:19"}],"id":216,"name":"UnaryOperation","src":"4225:47:19"},{"attributes":{"argumentTypes":null,"hexvalue":"72656465656d61626c65732063616e6e6f7420626520636c61696d6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"redeemables cannot be claimed\"","value":"redeemables cannot be claimed"},"id":217,"name":"Literal","src":"4274:31:19"}],"id":218,"name":"FunctionCall","src":"4217:89:19"}],"id":219,"name":"ExpressionStatement","src":"4217:89:19"},{"attributes":{"assignments":[221]},"children":[{"attributes":{"constant":false,"name":"claimBalance","scope":252,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":220,"name":"ElementaryTypeName","src":"4320:7:19"}],"id":221,"name":"VariableDeclaration","src":"4320:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":483,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":222,"name":"Identifier","src":"4343:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Holder_$266","typeString":"contract Holder"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":223,"name":"ElementaryTypeNameExpression","src":"4352:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7639,"type":"contract Holder","value":"this"},"id":224,"name":"Identifier","src":"4360:4:19"}],"id":225,"name":"FunctionCall","src":"4352:13:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":226,"name":"Identifier","src":"4367:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":227,"name":"Identifier","src":"4391:1:19"}],"id":228,"name":"IndexAccess","src":"4367:26:19"}],"id":229,"name":"FunctionCall","src":"4343:51:19"}],"id":230,"name":"VariableDeclarationStatement","src":"4320:74:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":221,"type":"uint256","value":"claimBalance"},"id":231,"name":"Identifier","src":"4412:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":232,"name":"Literal","src":"4427:1:19"}],"id":233,"name":"BinaryOperation","src":"4412:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":844,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":234,"name":"Identifier","src":"4448:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":189,"type":"address payable","value":"_to"},"id":235,"name":"Identifier","src":"4462:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":236,"name":"Identifier","src":"4467:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":237,"name":"Identifier","src":"4491:1:19"}],"id":238,"name":"IndexAccess","src":"4467:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":221,"type":"uint256","value":"claimBalance"},"id":239,"name":"Identifier","src":"4495:12:19"}],"id":240,"name":"FunctionCall","src":"4448:60:19"}],"id":241,"name":"ExpressionStatement","src":"4448:60:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"function (address,address,uint256)","value":"Claimed"},"id":242,"name":"Identifier","src":"4531:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":189,"type":"address payable","value":"_to"},"id":243,"name":"Identifier","src":"4539:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":244,"name":"Identifier","src":"4544:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":245,"name":"Identifier","src":"4568:1:19"}],"id":246,"name":"IndexAccess","src":"4544:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":221,"type":"uint256","value":"claimBalance"},"id":247,"name":"Identifier","src":"4572:12:19"}],"id":248,"name":"FunctionCall","src":"4531:54:19"}],"id":249,"name":"EmitStatement","src":"4526:59:19"}],"id":250,"name":"Block","src":"4430:170:19"}],"id":251,"name":"IfStatement","src":"4408:192:19"}],"id":252,"name":"Block","src":"4159:451:19"}],"id":253,"name":"ForStatement","src":"4098:512:19"},{"attributes":{"functionReturnParameters":198},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":254,"name":"Literal","src":"4627:4:19"}],"id":255,"name":"Return","src":"4620:11:19"}],"id":256,"name":"Block","src":"4088:550:19"}],"id":257,"name":"FunctionDefinition","src":"3956:682:19"},{"attributes":{"documentation":"@notice Returned the address of the burner contract.\n @return the TKN address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"burner","scope":266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":258,"name":"ParameterList","src":"4753:2:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":265,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":259,"name":"ElementaryTypeName","src":"4779:7:19"}],"id":260,"name":"VariableDeclaration","src":"4779:7:19"}],"id":261,"name":"ParameterList","src":"4778:9:19"},{"children":[{"attributes":{"functionReturnParameters":261},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"address","value":"_burner"},"id":262,"name":"Identifier","src":"4805:7:19"}],"id":263,"name":"Return","src":"4798:14:19"}],"id":264,"name":"Block","src":"4788:31:19"}],"id":265,"name":"FunctionDefinition","src":"4738:81:19"}],"id":266,"name":"ContractDefinition","src":"1250:3571:19"}],"id":267,"name":"SourceUnit","src":"787:4035:19"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[484]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":454,"name":"PragmaDirective","src":"771:24:20"},{"attributes":{"SourceUnit":320,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":485,"symbolAliases":[null],"unitAlias":""},"id":455,"name":"ImportDirective","src":"797:32:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[484],"name":"Balanceable","scope":485},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":484,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":483,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":456,"name":"ElementaryTypeName","src":"1225:7:20"}],"id":457,"name":"VariableDeclaration","src":"1225:16:20"},{"attributes":{"constant":false,"name":"_asset","scope":483,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":458,"name":"ElementaryTypeName","src":"1243:7:20"}],"id":459,"name":"VariableDeclaration","src":"1243:14:20"}],"id":460,"name":"ParameterList","src":"1224:34:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":483,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":461,"name":"ElementaryTypeName","src":"1282:7:20"}],"id":462,"name":"VariableDeclaration","src":"1282:7:20"}],"id":463,"name":"ParameterList","src":"1281:9:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"address","value":"_asset"},"id":464,"name":"Identifier","src":"1305:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":465,"name":"ElementaryTypeNameExpression","src":"1315:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":466,"name":"Literal","src":"1323:1:20"}],"id":467,"name":"FunctionCall","src":"1315:10:20"}],"id":468,"name":"BinaryOperation","src":"1305:20:20"},{"children":[{"attributes":{"functionReturnParameters":463},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":293,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":319,"type":"type(contract ERC20)","value":"ERC20"},"id":469,"name":"Identifier","src":"1348:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"address","value":"_asset"},"id":470,"name":"Identifier","src":"1354:6:20"}],"id":471,"name":"FunctionCall","src":"1348:13:20"}],"id":472,"name":"MemberAccess","src":"1348:23:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address","value":"_address"},"id":473,"name":"Identifier","src":"1372:8:20"}],"id":474,"name":"FunctionCall","src":"1348:33:20"}],"id":475,"name":"Return","src":"1341:40:20"}],"id":476,"name":"Block","src":"1327:65:20"},{"children":[{"attributes":{"functionReturnParameters":463},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address","value":"_address"},"id":477,"name":"Identifier","src":"1419:8:20"}],"id":478,"name":"MemberAccess","src":"1419:16:20"}],"id":479,"name":"Return","src":"1412:23:20"}],"id":480,"name":"Block","src":"1398:48:20"}],"id":481,"name":"IfStatement","src":"1301:145:20"}],"id":482,"name":"Block","src":"1291:161:20"}],"id":483,"name":"FunctionDefinition","src":"1207:245:20"}],"id":484,"name":"ContractDefinition","src":"898:556:20"}],"id":485,"name":"SourceUnit","src":"771:684:20"}},"internals/burner.sol":{"AST":{"attributes":{"absolutePath":"internals/burner.sol","exportedSymbols":{"IBurner":[492]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":486,"name":"PragmaDirective","src":"767:24:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[492],"name":"IBurner","scope":493},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"currentSupply","scope":492,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":487,"name":"ParameterList","src":"980:2:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":491,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":488,"name":"ElementaryTypeName","src":"1006:7:21"}],"id":489,"name":"VariableDeclaration","src":"1006:7:21"}],"id":490,"name":"ParameterList","src":"1005:9:21"}],"id":491,"name":"FunctionDefinition","src":"958:57:21"}],"id":492,"name":"ContractDefinition","src":"934:83:21"}],"id":493,"name":"SourceUnit","src":"767:251:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[4836]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4727,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":453,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":4837,"symbolAliases":[null],"unitAlias":""},"id":4728,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[4836],"name":"BytesUtils","scope":4837},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":452,"type":"library SafeMath"},"id":4729,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":4730,"name":"ElementaryTypeName","src":"955:7:22"}],"id":4731,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":4836,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4767,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4732,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":4733,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":4767,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4734,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":4735,"name":"VariableDeclaration","src":"1125:13:22"}],"id":4736,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":4767,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4737,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":4738,"name":"VariableDeclaration","src":"1163:7:22"}],"id":4739,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":4740,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4733,"type":"bytes memory","value":"_bts"},"id":4741,"name":"Identifier","src":"1190:4:22"}],"id":4742,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4735,"type":"uint256","value":"_from"},"id":4743,"name":"Identifier","src":"1205:5:22"}],"id":4744,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":4745,"name":"Literal","src":"1215:2:22"}],"id":4746,"name":"FunctionCall","src":"1205:13:22"}],"id":4747,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4748,"name":"Literal","src":"1220:22:22"}],"id":4749,"name":"FunctionCall","src":"1182:61:22"}],"id":4750,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[4752],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":4766,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":4751,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":4752,"name":"VariableDeclaration","src":"1254:24:22"}],"id":4753,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[4755]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4766,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4754,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":4755,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4735,"type":"uint256","value":"_from"},"id":4756,"name":"Identifier","src":"1308:5:22"}],"id":4757,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4758,"name":"Literal","src":"1318:2:22"}],"id":4759,"name":"FunctionCall","src":"1308:13:22"}],"id":4760,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":4752,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":4733,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":4755,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":4761,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":4739},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4762,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4752,"type":"bytes20","value":"convertedAddress"},"id":4763,"name":"Identifier","src":"1478:16:22"}],"id":4764,"name":"FunctionCall","src":"1470:25:22"}],"id":4765,"name":"Return","src":"1463:32:22"}],"id":4766,"name":"Block","src":"1172:330:22"}],"id":4767,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":4836,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4801,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4768,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":4769,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":4801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4770,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":4771,"name":"VariableDeclaration","src":"1670:13:22"}],"id":4772,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":4801,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4773,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":4774,"name":"VariableDeclaration","src":"1708:6:22"}],"id":4775,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":4776,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"bytes memory","value":"_bts"},"id":4777,"name":"Identifier","src":"1734:4:22"}],"id":4778,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"uint256","value":"_from"},"id":4779,"name":"Identifier","src":"1749:5:22"}],"id":4780,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4781,"name":"Literal","src":"1759:1:22"}],"id":4782,"name":"FunctionCall","src":"1749:12:22"}],"id":4783,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4784,"name":"Literal","src":"1763:22:22"}],"id":4785,"name":"FunctionCall","src":"1726:60:22"}],"id":4786,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[4788],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":4800,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4787,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":4788,"name":"VariableDeclaration","src":"1797:19:22"}],"id":4789,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[4791]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4790,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":4791,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"uint256","value":"_from"},"id":4792,"name":"Identifier","src":"1846:5:22"}],"id":4793,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4794,"name":"Literal","src":"1856:2:22"}],"id":4795,"name":"FunctionCall","src":"1846:13:22"}],"id":4796,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":4788,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":4769,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":4791,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":4797,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":4775},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes4","value":"slicedBytes4"},"id":4798,"name":"Identifier","src":"2004:12:22"}],"id":4799,"name":"Return","src":"1997:19:22"}],"id":4800,"name":"Block","src":"1716:307:22"}],"id":4801,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":4836,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4835,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4802,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":4803,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":4835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4804,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":4805,"name":"VariableDeclaration","src":"2417:13:22"}],"id":4806,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":4835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4807,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":4808,"name":"VariableDeclaration","src":"2455:7:22"}],"id":4809,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":4810,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"bytes memory","value":"_bts"},"id":4811,"name":"Identifier","src":"2482:4:22"}],"id":4812,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4805,"type":"uint256","value":"_from"},"id":4813,"name":"Identifier","src":"2497:5:22"}],"id":4814,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4815,"name":"Literal","src":"2507:2:22"}],"id":4816,"name":"FunctionCall","src":"2497:13:22"}],"id":4817,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4818,"name":"Literal","src":"2512:22:22"}],"id":4819,"name":"FunctionCall","src":"2474:61:22"}],"id":4820,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[4822],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":4834,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4821,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":4822,"name":"VariableDeclaration","src":"2546:24:22"}],"id":4823,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[4825]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4834,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4824,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":4825,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4805,"type":"uint256","value":"_from"},"id":4826,"name":"Identifier","src":"2600:5:22"}],"id":4827,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4828,"name":"Literal","src":"2610:2:22"}],"id":4829,"name":"FunctionCall","src":"2600:13:22"}],"id":4830,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":4822,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}},{"_bts":{"declaration":4803,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":4825,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":4831,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":4809},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4822,"type":"uint256","value":"convertedUint256"},"id":4832,"name":"Identifier","src":"2762:16:22"}],"id":4833,"name":"Return","src":"2755:23:22"}],"id":4834,"name":"Block","src":"2464:321:22"}],"id":4835,"name":"FunctionDefinition","src":"2373:412:22"}],"id":4836,"name":"ContractDefinition","src":"911:1876:22"}],"id":4837,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[588]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":494,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":1300,"absolutePath":"controller.sol","file":"../controller.sol","scope":589,"symbolAliases":[null],"unitAlias":""},"id":495,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":1345,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":589,"symbolAliases":[null],"unitAlias":""},"id":496,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[1344],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[588,1344],"name":"Controllable","scope":589},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1344,"type":"contract ENSResolvable"},"id":497,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":498,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":588,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":499,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":500,"name":"Literal","src":"1122:66:23"}],"id":501,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":588,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":502,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":501,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":503,"name":"Identifier","src":"1306:24:23"}],"id":504,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":521,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":505,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":506,"name":"VariableDeclaration","src":"1571:24:23"}],"id":507,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":508,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":506,"type":"bytes32","value":"_controllerNode_"},"id":509,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":510,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":511,"name":"Literal","src":"1693:1:23"}],"id":512,"name":"FunctionCall","src":"1685:10:23"}],"id":513,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"bytes32","value":"_controllerNode"},"id":514,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":506,"type":"bytes32","value":"_controllerNode_"},"id":515,"name":"Identifier","src":"1729:16:23"}],"id":516,"name":"Assignment","src":"1711:34:23"}],"id":517,"name":"ExpressionStatement","src":"1711:34:23"}],"id":518,"name":"Block","src":"1697:59:23"}],"id":519,"name":"IfStatement","src":"1661:95:23"}],"id":520,"name":"Block","src":"1606:156:23"}],"id":521,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":522,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":523,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":570,"type":"function (address) view returns (bool)","value":"_isController"},"id":524,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":525,"name":"Identifier","src":"1884:3:23"}],"id":526,"name":"MemberAccess","src":"1884:10:23"}],"id":527,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":528,"name":"Literal","src":"1897:28:23"}],"id":529,"name":"FunctionCall","src":"1862:64:23"}],"id":530,"name":"ExpressionStatement","src":"1862:64:23"},{"id":531,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":532,"name":"Block","src":"1852:92:23"}],"id":533,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":534,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":535,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":587,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":536,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":537,"name":"Identifier","src":"2052:3:23"}],"id":538,"name":"MemberAccess","src":"2052:10:23"}],"id":539,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":540,"name":"Literal","src":"2065:24:23"}],"id":541,"name":"FunctionCall","src":"2035:55:23"}],"id":542,"name":"ExpressionStatement","src":"2035:55:23"},{"id":543,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":544,"name":"Block","src":"2025:83:23"}],"id":545,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":588,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":546,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":553,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":547,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":548,"name":"VariableDeclaration","src":"2216:7:23"}],"id":549,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":549},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"bytes32","value":"_controllerNode"},"id":550,"name":"Identifier","src":"2242:15:23"}],"id":551,"name":"Return","src":"2235:22:23"}],"id":552,"name":"Block","src":"2225:39:23"}],"id":553,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":588,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":570,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":554,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":555,"name":"VariableDeclaration","src":"2355:16:23"}],"id":556,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":570,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":557,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":558,"name":"VariableDeclaration","src":"2396:4:23"}],"id":559,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":559},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":856,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":864,"type":"type(contract IController)","value":"IController"},"id":560,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":561,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"bytes32","value":"_controllerNode"},"id":562,"name":"Identifier","src":"2443:15:23"}],"id":563,"name":"FunctionCall","src":"2431:28:23"}],"id":564,"name":"FunctionCall","src":"2419:41:23"}],"id":565,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address","value":"_account"},"id":566,"name":"Identifier","src":"2474:8:23"}],"id":567,"name":"FunctionCall","src":"2419:64:23"}],"id":568,"name":"Return","src":"2412:71:23"}],"id":569,"name":"Block","src":"2402:88:23"}],"id":570,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":588,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":587,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":571,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":572,"name":"VariableDeclaration","src":"2572:16:23"}],"id":573,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":587,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":574,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":575,"name":"VariableDeclaration","src":"2613:4:23"}],"id":576,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":576},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":863,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":864,"type":"type(contract IController)","value":"IController"},"id":577,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":578,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"bytes32","value":"_controllerNode"},"id":579,"name":"Identifier","src":"2660:15:23"}],"id":580,"name":"FunctionCall","src":"2648:28:23"}],"id":581,"name":"FunctionCall","src":"2636:41:23"}],"id":582,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":572,"type":"address","value":"_account"},"id":583,"name":"Identifier","src":"2686:8:23"}],"id":584,"name":"FunctionCall","src":"2636:59:23"}],"id":585,"name":"Return","src":"2629:66:23"}],"id":586,"name":"Block","src":"2619:83:23"}],"id":587,"name":"FunctionDefinition","src":"2554:148:23"}],"id":588,"name":"ContractDefinition","src":"955:1749:23"}],"id":589,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[1344]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1301,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":2846,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":1345,"symbolAliases":[null],"unitAlias":""},"id":1302,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":3020,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":1345,"symbolAliases":[null],"unitAlias":""},"id":1303,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[1344],"name":"ENSResolvable","scope":1345},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":1344,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1304,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":1305,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1344,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":1315,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1306,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":1307,"name":"VariableDeclaration","src":"1205:16:24"}],"id":1308,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":1309,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1305,"type":"address","value":"_ensRegistry"},"id":1310,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1307,"type":"address","value":"_ensReg_"},"id":1311,"name":"Identifier","src":"1257:8:24"}],"id":1312,"name":"Assignment","src":"1242:23:24"}],"id":1313,"name":"ExpressionStatement","src":"1242:23:24"}],"id":1314,"name":"Block","src":"1232:40:24"}],"id":1315,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":1344,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1316,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":1323,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1317,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":1318,"name":"VariableDeclaration","src":"1410:7:24"}],"id":1319,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":1319},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1305,"type":"address","value":"_ensRegistry"},"id":1320,"name":"Identifier","src":"1436:12:24"}],"id":1321,"name":"Return","src":"1429:19:24"}],"id":1322,"name":"Block","src":"1419:36:24"}],"id":1323,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":1344,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1324,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":1325,"name":"VariableDeclaration","src":"1652:13:24"}],"id":1326,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":1343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1327,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":1328,"name":"VariableDeclaration","src":"1690:7:24"}],"id":1329,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":1329},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":5073,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3019,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":1330,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":2821,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2845,"type":"type(contract ENS)","value":"ENS"},"id":1331,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1305,"type":"address","value":"_ensRegistry"},"id":1332,"name":"Identifier","src":"1735:12:24"}],"id":1333,"name":"FunctionCall","src":"1731:17:24"}],"id":1334,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1325,"type":"bytes32","value":"_node"},"id":1335,"name":"Identifier","src":"1758:5:24"}],"id":1336,"name":"FunctionCall","src":"1731:33:24"}],"id":1337,"name":"FunctionCall","src":"1716:49:24"}],"id":1338,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1325,"type":"bytes32","value":"_node"},"id":1339,"name":"Identifier","src":"1771:5:24"}],"id":1340,"name":"FunctionCall","src":"1716:61:24"}],"id":1341,"name":"Return","src":"1709:68:24"}],"id":1342,"name":"Block","src":"1699:85:24"}],"id":1343,"name":"FunctionDefinition","src":"1631:153:24"}],"id":1344,"name":"ContractDefinition","src":"1008:778:24"}],"id":1345,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[2708]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2553,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[2708],"name":"Ownable","scope":2709},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2554,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":2555,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2556,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":2557,"name":"VariableDeclaration","src":"1214:11:25"}],"id":2558,"name":"ParameterList","src":"1198:28:25"}],"id":2559,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":2563,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2560,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":2561,"name":"VariableDeclaration","src":"1254:15:25"}],"id":2562,"name":"ParameterList","src":"1253:17:25"}],"id":2563,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":2708,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2564,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":2565,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":2708,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2566,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":2567,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2708,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":2598,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2568,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":2569,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":2598,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2570,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":2571,"name":"VariableDeclaration","src":"1503:19:25"}],"id":2572,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":2573,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2574,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"address payable","value":"_account_"},"id":2575,"name":"Identifier","src":"1552:9:25"}],"id":2576,"name":"Assignment","src":"1543:18:25"}],"id":2577,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2578,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2571,"type":"bool","value":"_transferable_"},"id":2579,"name":"Identifier","src":"1589:14:25"}],"id":2580,"name":"Assignment","src":"1571:32:25"}],"id":2581,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2582,"name":"Identifier","src":"1687:15:25"}],"id":2583,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"function (address)","value":"LockedOwnership"},"id":2584,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"address payable","value":"_account_"},"id":2585,"name":"Identifier","src":"1739:9:25"}],"id":2586,"name":"FunctionCall","src":"1723:26:25"}],"id":2587,"name":"EmitStatement","src":"1718:31:25"}],"id":2588,"name":"Block","src":"1704:56:25"}],"id":2589,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"function (address,address)","value":"TransferredOwnership"},"id":2590,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2591,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2592,"name":"Literal","src":"1803:1:25"}],"id":2593,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"address payable","value":"_account_"},"id":2594,"name":"Identifier","src":"1807:9:25"}],"id":2595,"name":"FunctionCall","src":"1774:43:25"}],"id":2596,"name":"EmitStatement","src":"1769:48:25"}],"id":2597,"name":"Block","src":"1533:291:25"}],"id":2598,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2599,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2600,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2707,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2601,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2602,"name":"Identifier","src":"1949:3:25"}],"id":2603,"name":"MemberAccess","src":"1949:10:25"}],"id":2604,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":2605,"name":"Literal","src":"1962:24:25"}],"id":2606,"name":"FunctionCall","src":"1932:55:25"}],"id":2607,"name":"ExpressionStatement","src":"1932:55:25"},{"id":2608,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":2609,"name":"Block","src":"1922:83:25"}],"id":2610,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":2708,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2655,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2611,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":2612,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":2655,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2613,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":2614,"name":"VariableDeclaration","src":"2300:18:25"}],"id":2615,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":2618,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":2616,"name":"Identifier","src":"2329:9:25"}],"id":2617,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2619,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2620,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2621,"name":"Literal","src":"2429:31:25"}],"id":2622,"name":"FunctionCall","src":"2404:57:25"}],"id":2623,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2624,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2612,"type":"address payable","value":"_account"},"id":2625,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2626,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2627,"name":"Literal","src":"2562:1:25"}],"id":2628,"name":"FunctionCall","src":"2554:10:25"}],"id":2629,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":2630,"name":"Literal","src":"2566:37:25"}],"id":2631,"name":"FunctionCall","src":"2534:70:25"}],"id":2632,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2633,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2614,"type":"bool","value":"_transferable"},"id":2634,"name":"Identifier","src":"2707:13:25"}],"id":2635,"name":"Assignment","src":"2689:31:25"}],"id":2636,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2614,"type":"bool","value":"_transferable"},"id":2637,"name":"Identifier","src":"2804:13:25"}],"id":2638,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"function (address)","value":"LockedOwnership"},"id":2639,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2612,"type":"address payable","value":"_account"},"id":2640,"name":"Identifier","src":"2854:8:25"}],"id":2641,"name":"FunctionCall","src":"2838:25:25"}],"id":2642,"name":"EmitStatement","src":"2833:30:25"}],"id":2643,"name":"Block","src":"2819:55:25"}],"id":2644,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"function (address,address)","value":"TransferredOwnership"},"id":2645,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2646,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2612,"type":"address payable","value":"_account"},"id":2647,"name":"Identifier","src":"2963:8:25"}],"id":2648,"name":"FunctionCall","src":"2934:38:25"}],"id":2649,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2650,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2612,"type":"address payable","value":"_account"},"id":2651,"name":"Identifier","src":"3041:8:25"}],"id":2652,"name":"Assignment","src":"3032:17:25"}],"id":2653,"name":"ExpressionStatement","src":"3032:17:25"}],"id":2654,"name":"Block","src":"2339:717:25"}],"id":2655,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":2708,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2656,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":2663,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2657,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":2658,"name":"VariableDeclaration","src":"3222:4:25"}],"id":2659,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":2659},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2660,"name":"Identifier","src":"3245:15:25"}],"id":2661,"name":"Return","src":"3238:22:25"}],"id":2662,"name":"Block","src":"3228:39:25"}],"id":2663,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":2708,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2664,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":2667,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":2665,"name":"Identifier","src":"3581:9:25"}],"id":2666,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2668,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2669,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2670,"name":"Literal","src":"3681:31:25"}],"id":2671,"name":"FunctionCall","src":"3656:57:25"}],"id":2672,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2673,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2674,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2675,"name":"Literal","src":"3784:1:25"}],"id":2676,"name":"FunctionCall","src":"3776:10:25"}],"id":2677,"name":"Assignment","src":"3767:19:25"}],"id":2678,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"function (address,address)","value":"TransferredOwnership"},"id":2679,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2680,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2681,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2682,"name":"Literal","src":"3839:1:25"}],"id":2683,"name":"FunctionCall","src":"3831:10:25"}],"id":2684,"name":"FunctionCall","src":"3802:40:25"}],"id":2685,"name":"EmitStatement","src":"3797:45:25"}],"id":2686,"name":"Block","src":"3591:258:25"}],"id":2687,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":2708,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2688,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":2695,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2689,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":2690,"name":"VariableDeclaration","src":"3970:15:25"}],"id":2691,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":2691},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2692,"name":"Identifier","src":"4004:6:25"}],"id":2693,"name":"Return","src":"3997:13:25"}],"id":2694,"name":"Block","src":"3987:30:25"}],"id":2695,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":2708,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":2707,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2696,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":2697,"name":"VariableDeclaration","src":"4141:16:25"}],"id":2698,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":2707,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2699,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":2700,"name":"VariableDeclaration","src":"4182:4:25"}],"id":2701,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":2701},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2697,"type":"address","value":"_address"},"id":2702,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2703,"name":"Identifier","src":"4217:6:25"}],"id":2704,"name":"BinaryOperation","src":"4205:18:25"}],"id":2705,"name":"Return","src":"4198:25:25"}],"id":2706,"name":"Block","src":"4188:42:25"}],"id":2707,"name":"FunctionDefinition","src":"4123:107:25"}],"id":2708,"name":"ContractDefinition","src":"1149:3083:25"}],"id":2709,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[805]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":590,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":2333,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":806,"symbolAliases":[null],"unitAlias":""},"id":591,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":1345,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":806,"symbolAliases":[null],"unitAlias":""},"id":592,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[1344],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[805,1344],"name":"TokenWhitelistable","scope":806},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1344,"type":"contract ENSResolvable"},"id":593,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":594,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":805,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":595,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":596,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":805,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":606,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":597,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":598,"name":"VariableDeclaration","src":"1292:28:26"}],"id":599,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":600,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":601,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":598,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":602,"name":"Identifier","src":"1363:20:26"}],"id":603,"name":"Assignment","src":"1341:42:26"}],"id":604,"name":"ExpressionStatement","src":"1341:42:26"}],"id":605,"name":"Block","src":"1331:59:26"}],"id":606,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":805,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":607,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":614,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":608,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":609,"name":"VariableDeclaration","src":"1567:7:26"}],"id":610,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":610},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":611,"name":"Identifier","src":"1593:19:26"}],"id":612,"name":"Return","src":"1586:26:26"}],"id":613,"name":"Block","src":"1576:43:26"}],"id":614,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":643,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":615,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":616,"name":"VariableDeclaration","src":"2194:10:26"}],"id":617,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":618,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":619,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":620,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":621,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":622,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":623,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":624,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":625,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":626,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":627,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":628,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":629,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":630,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":631,"name":"VariableDeclaration","src":"2280:7:26"}],"id":632,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":632},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":1370,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":633,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":634,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":635,"name":"Identifier","src":"2334:19:26"}],"id":636,"name":"FunctionCall","src":"2322:32:26"}],"id":637,"name":"FunctionCall","src":"2306:49:26"}],"id":638,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":616,"type":"address","value":"_a"},"id":639,"name":"Identifier","src":"2369:2:26"}],"id":640,"name":"FunctionCall","src":"2306:66:26"}],"id":641,"name":"Return","src":"2299:73:26"}],"id":642,"name":"Block","src":"2289:90:26"}],"id":643,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":644,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":645,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":646,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":647,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":648,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":649,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":650,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":651,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":652,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":653,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":654,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":655,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":656,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":657,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":658,"name":"VariableDeclaration","src":"2991:7:26"}],"id":659,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":659},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":1387,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":660,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":661,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":662,"name":"Identifier","src":"3045:19:26"}],"id":663,"name":"FunctionCall","src":"3033:32:26"}],"id":664,"name":"FunctionCall","src":"3017:49:26"}],"id":665,"name":"MemberAccess","src":"3017:67:26"}],"id":666,"name":"FunctionCall","src":"3017:69:26"}],"id":667,"name":"Return","src":"3010:76:26"}],"id":668,"name":"Block","src":"3000:93:26"}],"id":669,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":670,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":684,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":671,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":672,"name":"ArrayTypeName","src":"3273:9:26"}],"id":673,"name":"VariableDeclaration","src":"3273:16:26"}],"id":674,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":674},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":1393,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":675,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":676,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":677,"name":"Identifier","src":"3336:19:26"}],"id":678,"name":"FunctionCall","src":"3324:32:26"}],"id":679,"name":"FunctionCall","src":"3308:49:26"}],"id":680,"name":"MemberAccess","src":"3308:67:26"}],"id":681,"name":"FunctionCall","src":"3308:69:26"}],"id":682,"name":"Return","src":"3301:76:26"}],"id":683,"name":"Block","src":"3291:93:26"}],"id":684,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":685,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":699,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":686,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":687,"name":"ArrayTypeName","src":"3563:9:26"}],"id":688,"name":"VariableDeclaration","src":"3563:16:26"}],"id":689,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":689},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":1399,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":690,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":691,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":692,"name":"Identifier","src":"3626:19:26"}],"id":693,"name":"FunctionCall","src":"3614:32:26"}],"id":694,"name":"FunctionCall","src":"3598:49:26"}],"id":695,"name":"MemberAccess","src":"3598:66:26"}],"id":696,"name":"FunctionCall","src":"3598:68:26"}],"id":697,"name":"Return","src":"3591:75:26"}],"id":698,"name":"Block","src":"3581:92:26"}],"id":699,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":805,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":720,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":700,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":701,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":702,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":703,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":704,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":705,"name":"VariableDeclaration","src":"4007:19:26"}],"id":706,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":707,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":1431,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":708,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":709,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":710,"name":"Identifier","src":"4075:19:26"}],"id":711,"name":"FunctionCall","src":"4063:32:26"}],"id":712,"name":"FunctionCall","src":"4047:49:26"}],"id":713,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":701,"type":"address","value":"_token"},"id":714,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":703,"type":"uint256","value":"_rate"},"id":715,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"_updateDate"},"id":716,"name":"Identifier","src":"4128:11:26"}],"id":717,"name":"FunctionCall","src":"4047:93:26"}],"id":718,"name":"ExpressionStatement","src":"4047:93:26"}],"id":719,"name":"Block","src":"4037:110:26"}],"id":720,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":742,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":721,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":722,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":742,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":723,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":724,"name":"VariableDeclaration","src":"4364:18:26"}],"id":725,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":742,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":726,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":727,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":742,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":728,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":729,"name":"VariableDeclaration","src":"4416:7:26"}],"id":730,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":730},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":1417,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":731,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":732,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":733,"name":"Identifier","src":"4470:19:26"}],"id":734,"name":"FunctionCall","src":"4458:32:26"}],"id":735,"name":"FunctionCall","src":"4442:49:26"}],"id":736,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":722,"type":"address","value":"_destination"},"id":737,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":724,"type":"bytes memory","value":"_data"},"id":738,"name":"Identifier","src":"4533:5:26"}],"id":739,"name":"FunctionCall","src":"4442:97:26"}],"id":740,"name":"Return","src":"4435:104:26"}],"id":741,"name":"Block","src":"4425:121:26"}],"id":742,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":758,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":743,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":744,"name":"VariableDeclaration","src":"4671:10:26"}],"id":745,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":758,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":746,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":747,"name":"VariableDeclaration","src":"4706:4:26"}],"id":748,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,750,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":757,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":749,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":750,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":643,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":751,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"address","value":"_a"},"id":752,"name":"Identifier","src":"4767:2:26"}],"id":753,"name":"FunctionCall","src":"4753:17:26"}],"id":754,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":748},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":750,"type":"bool","value":"available"},"id":755,"name":"Identifier","src":"4787:9:26"}],"id":756,"name":"Return","src":"4780:16:26"}],"id":757,"name":"Block","src":"4712:91:26"}],"id":758,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":774,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":759,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":760,"name":"VariableDeclaration","src":"4931:10:26"}],"id":761,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":774,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":762,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":763,"name":"VariableDeclaration","src":"4966:4:26"}],"id":764,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,766,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":773,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":765,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":766,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":643,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":767,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":760,"type":"address","value":"_a"},"id":768,"name":"Identifier","src":"5028:2:26"}],"id":769,"name":"FunctionCall","src":"5014:17:26"}],"id":770,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":764},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":766,"type":"bool","value":"redeemable"},"id":771,"name":"Identifier","src":"5048:10:26"}],"id":772,"name":"Return","src":"5041:17:26"}],"id":773,"name":"Block","src":"4972:93:26"}],"id":774,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":790,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":775,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":776,"name":"VariableDeclaration","src":"5187:10:26"}],"id":777,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":790,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":778,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":779,"name":"VariableDeclaration","src":"5222:4:26"}],"id":780,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,782,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":789,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":781,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":782,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":643,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":783,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":776,"type":"address","value":"_a"},"id":784,"name":"Identifier","src":"5282:2:26"}],"id":785,"name":"FunctionCall","src":"5268:17:26"}],"id":786,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":780},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":782,"type":"bool","value":"loadable"},"id":787,"name":"Identifier","src":"5302:8:26"}],"id":788,"name":"Return","src":"5295:15:26"}],"id":789,"name":"Block","src":"5228:89:26"}],"id":790,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":791,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":804,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":792,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":793,"name":"VariableDeclaration","src":"5482:7:26"}],"id":794,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":794},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":1422,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":795,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":796,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":797,"name":"Identifier","src":"5536:19:26"}],"id":798,"name":"FunctionCall","src":"5524:32:26"}],"id":799,"name":"FunctionCall","src":"5508:49:26"}],"id":800,"name":"MemberAccess","src":"5508:60:26"}],"id":801,"name":"FunctionCall","src":"5508:62:26"}],"id":802,"name":"Return","src":"5501:69:26"}],"id":803,"name":"Block","src":"5491:86:26"}],"id":804,"name":"FunctionDefinition","src":"5436:141:26"}],"id":805,"name":"ContractDefinition","src":"958:4621:26"}],"id":806,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[845]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":807,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":320,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":846,"symbolAliases":[null],"unitAlias":""},"id":808,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":2552,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":846,"symbolAliases":[null],"unitAlias":""},"id":809,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[845],"name":"Transferrable","scope":846},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2551,"type":"library SafeERC20"},"id":810,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":811,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":812,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":845,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":844,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":813,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":814,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":844,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":815,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":816,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":817,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":818,"name":"VariableDeclaration","src":"1426:15:27"}],"id":819,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":820,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"address","value":"_asset"},"id":821,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":822,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":823,"name":"Literal","src":"1528:1:27"}],"id":824,"name":"FunctionCall","src":"1520:10:27"}],"id":825,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":814,"type":"address payable","value":"_to"},"id":826,"name":"Identifier","src":"1546:3:27"}],"id":828,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"uint256","value":"_amount"},"id":829,"name":"Identifier","src":"1559:7:27"}],"id":830,"name":"FunctionCall","src":"1546:21:27"}],"id":831,"name":"ExpressionStatement","src":"1546:21:27"}],"id":832,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":2365,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":319,"type":"type(contract ERC20)","value":"ERC20"},"id":833,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"address","value":"_asset"},"id":834,"name":"Identifier","src":"1604:6:27"}],"id":835,"name":"FunctionCall","src":"1598:13:27"}],"id":836,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":814,"type":"address payable","value":"_to"},"id":837,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"uint256","value":"_amount"},"id":838,"name":"Identifier","src":"1630:7:27"}],"id":839,"name":"FunctionCall","src":"1598:40:27"}],"id":840,"name":"ExpressionStatement","src":"1598:40:27"}],"id":841,"name":"Block","src":"1584:65:27"}],"id":842,"name":"IfStatement","src":"1506:143:27"}],"id":843,"name":"Block","src":"1452:203:27"}],"id":844,"name":"FunctionDefinition","src":"1366:289:27"}],"id":845,"name":"ContractDefinition","src":"961:696:27"}],"id":846,"name":"SourceUnit","src":"773:885:27"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[1432],"TokenWhitelist":[2332]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1346,"name":"PragmaDirective","src":"774:24:28"},{"attributes":{"SourceUnit":589,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1347,"name":"ImportDirective","src":"800:38:28"},{"attributes":{"SourceUnit":846,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1348,"name":"ImportDirective","src":"839:39:28"},{"attributes":{"SourceUnit":4837,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1349,"name":"ImportDirective","src":"879:36:28"},{"attributes":{"SourceUnit":4726,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1350,"name":"ImportDirective","src":"916:33:28"},{"attributes":{"SourceUnit":453,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1351,"name":"ImportDirective","src":"950:34:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[1432],"name":"ITokenWhitelist","scope":2333},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1352,"name":"ElementaryTypeName","src":"1124:7:28"}],"id":1353,"name":"VariableDeclaration","src":"1124:7:28"}],"id":1354,"name":"ParameterList","src":"1123:9:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1355,"name":"ElementaryTypeName","src":"1156:6:28"}],"id":1356,"name":"VariableDeclaration","src":"1156:13:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1357,"name":"ElementaryTypeName","src":"1171:7:28"}],"id":1358,"name":"VariableDeclaration","src":"1171:7:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1359,"name":"ElementaryTypeName","src":"1180:7:28"}],"id":1360,"name":"VariableDeclaration","src":"1180:7:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1361,"name":"ElementaryTypeName","src":"1189:4:28"}],"id":1362,"name":"VariableDeclaration","src":"1189:4:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1363,"name":"ElementaryTypeName","src":"1195:4:28"}],"id":1364,"name":"VariableDeclaration","src":"1195:4:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1365,"name":"ElementaryTypeName","src":"1201:4:28"}],"id":1366,"name":"VariableDeclaration","src":"1201:4:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1367,"name":"ElementaryTypeName","src":"1207:7:28"}],"id":1368,"name":"VariableDeclaration","src":"1207:7:28"}],"id":1369,"name":"ParameterList","src":"1155:60:28"}],"id":1370,"name":"FunctionDefinition","src":"1102:114:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1371,"name":"ParameterList","src":"1248:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1372,"name":"ElementaryTypeName","src":"1274:6:28"}],"id":1373,"name":"VariableDeclaration","src":"1274:13:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1374,"name":"ElementaryTypeName","src":"1289:7:28"}],"id":1375,"name":"VariableDeclaration","src":"1289:7:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1376,"name":"ElementaryTypeName","src":"1298:7:28"}],"id":1377,"name":"VariableDeclaration","src":"1298:7:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1378,"name":"ElementaryTypeName","src":"1307:4:28"}],"id":1379,"name":"VariableDeclaration","src":"1307:4:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1380,"name":"ElementaryTypeName","src":"1313:4:28"}],"id":1381,"name":"VariableDeclaration","src":"1313:4:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1382,"name":"ElementaryTypeName","src":"1319:4:28"}],"id":1383,"name":"VariableDeclaration","src":"1319:4:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1384,"name":"ElementaryTypeName","src":"1325:7:28"}],"id":1385,"name":"VariableDeclaration","src":"1325:7:28"}],"id":1386,"name":"ParameterList","src":"1273:60:28"}],"id":1387,"name":"FunctionDefinition","src":"1222:112:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1388,"name":"ParameterList","src":"1366:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1393,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1389,"name":"ElementaryTypeName","src":"1392:7:28"}],"id":1390,"name":"ArrayTypeName","src":"1392:9:28"}],"id":1391,"name":"VariableDeclaration","src":"1392:16:28"}],"id":1392,"name":"ParameterList","src":"1391:18:28"}],"id":1393,"name":"FunctionDefinition","src":"1340:70:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1394,"name":"ParameterList","src":"1441:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1399,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1395,"name":"ElementaryTypeName","src":"1467:7:28"}],"id":1396,"name":"ArrayTypeName","src":"1467:9:28"}],"id":1397,"name":"VariableDeclaration","src":"1467:16:28"}],"id":1398,"name":"ParameterList","src":"1466:18:28"}],"id":1399,"name":"FunctionDefinition","src":"1416:69:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1406,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1400,"name":"ElementaryTypeName","src":"1518:6:28"}],"id":1401,"name":"VariableDeclaration","src":"1518:6:28"}],"id":1402,"name":"ParameterList","src":"1517:8:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1406,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1403,"name":"ElementaryTypeName","src":"1549:4:28"}],"id":1404,"name":"VariableDeclaration","src":"1549:4:28"}],"id":1405,"name":"ParameterList","src":"1548:6:28"}],"id":1406,"name":"FunctionDefinition","src":"1491:64:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1407,"name":"ElementaryTypeName","src":"1597:7:28"}],"id":1408,"name":"VariableDeclaration","src":"1597:7:28"},{"attributes":{"constant":false,"name":"","scope":1417,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1409,"name":"ElementaryTypeName","src":"1606:5:28"}],"id":1410,"name":"VariableDeclaration","src":"1606:14:28"}],"id":1411,"name":"ParameterList","src":"1596:25:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1412,"name":"ElementaryTypeName","src":"1645:7:28"}],"id":1413,"name":"VariableDeclaration","src":"1645:7:28"},{"attributes":{"constant":false,"name":"","scope":1417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1414,"name":"ElementaryTypeName","src":"1654:7:28"}],"id":1415,"name":"VariableDeclaration","src":"1654:7:28"}],"id":1416,"name":"ParameterList","src":"1644:18:28"}],"id":1417,"name":"FunctionDefinition","src":"1561:102:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1418,"name":"ParameterList","src":"1688:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1422,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1419,"name":"ElementaryTypeName","src":"1714:7:28"}],"id":1420,"name":"VariableDeclaration","src":"1714:7:28"}],"id":1421,"name":"ParameterList","src":"1713:9:28"}],"id":1422,"name":"FunctionDefinition","src":"1669:54:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":1432,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1431,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1423,"name":"ElementaryTypeName","src":"1754:7:28"}],"id":1424,"name":"VariableDeclaration","src":"1754:7:28"},{"attributes":{"constant":false,"name":"","scope":1431,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1425,"name":"ElementaryTypeName","src":"1763:7:28"}],"id":1426,"name":"VariableDeclaration","src":"1763:7:28"},{"attributes":{"constant":false,"name":"","scope":1431,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1427,"name":"ElementaryTypeName","src":"1772:7:28"}],"id":1428,"name":"VariableDeclaration","src":"1772:7:28"}],"id":1429,"name":"ParameterList","src":"1753:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":1430,"name":"ParameterList","src":"1789:0:28"}],"id":1431,"name":"FunctionDefinition","src":"1729:61:28"}],"id":1432,"name":"ContractDefinition","src":"1070:722:28"},{"attributes":{"contractDependencies":[588,845,1344],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[2332,845,588,1344],"name":"TokenWhitelist","scope":2333},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1344,"type":"contract ENSResolvable"},"id":1433,"name":"UserDefinedTypeName","src":"1966:13:28"}],"id":1434,"name":"InheritanceSpecifier","src":"1966:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":588,"type":"contract Controllable"},"id":1435,"name":"UserDefinedTypeName","src":"1981:12:28"}],"id":1436,"name":"InheritanceSpecifier","src":"1981:12:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":845,"type":"contract Transferrable"},"id":1437,"name":"UserDefinedTypeName","src":"1995:13:28"}],"id":1438,"name":"InheritanceSpecifier","src":"1995:13:28"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":4725,"type":"library strings"},"id":1439,"name":"UserDefinedTypeName","src":"2021:7:28"}],"id":1440,"name":"UsingForDirective","src":"2015:20:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":452,"type":"library SafeMath"},"id":1441,"name":"UserDefinedTypeName","src":"2046:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":1442,"name":"ElementaryTypeName","src":"2059:7:28"}],"id":1443,"name":"UsingForDirective","src":"2040:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":4836,"type":"library BytesUtils"},"id":1444,"name":"UserDefinedTypeName","src":"2078:10:28"},{"attributes":{"name":"bytes","type":"bytes"},"id":1445,"name":"ElementaryTypeName","src":"2093:5:28"}],"id":1446,"name":"UsingForDirective","src":"2072:27:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1447,"name":"ElementaryTypeName","src":"2128:7:28"}],"id":1448,"name":"VariableDeclaration","src":"2128:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1449,"name":"ElementaryTypeName","src":"2145:7:28"}],"id":1450,"name":"VariableDeclaration","src":"2145:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":1454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1451,"name":"ElementaryTypeName","src":"2161:7:28"}],"id":1452,"name":"VariableDeclaration","src":"2161:13:28"}],"id":1453,"name":"ParameterList","src":"2127:48:28"}],"id":1454,"name":"EventDefinition","src":"2105:71:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1462,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1455,"name":"ElementaryTypeName","src":"2209:7:28"}],"id":1456,"name":"VariableDeclaration","src":"2209:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1462,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1457,"name":"ElementaryTypeName","src":"2226:7:28"}],"id":1458,"name":"VariableDeclaration","src":"2226:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":1462,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1459,"name":"ElementaryTypeName","src":"2242:4:28"}],"id":1460,"name":"VariableDeclaration","src":"2242:14:28"}],"id":1461,"name":"ParameterList","src":"2208:49:28"}],"id":1462,"name":"EventDefinition","src":"2182:76:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1470,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1463,"name":"ElementaryTypeName","src":"2292:7:28"}],"id":1464,"name":"VariableDeclaration","src":"2292:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1470,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1465,"name":"ElementaryTypeName","src":"2309:7:28"}],"id":1466,"name":"VariableDeclaration","src":"2309:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":1470,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1467,"name":"ElementaryTypeName","src":"2325:4:28"}],"id":1468,"name":"VariableDeclaration","src":"2325:16:28"}],"id":1469,"name":"ParameterList","src":"2291:51:28"}],"id":1470,"name":"EventDefinition","src":"2263:80:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1484,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1471,"name":"ElementaryTypeName","src":"2366:7:28"}],"id":1472,"name":"VariableDeclaration","src":"2366:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1484,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1473,"name":"ElementaryTypeName","src":"2383:7:28"}],"id":1474,"name":"VariableDeclaration","src":"2383:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":1484,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1475,"name":"ElementaryTypeName","src":"2399:6:28"}],"id":1476,"name":"VariableDeclaration","src":"2399:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":1484,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1477,"name":"ElementaryTypeName","src":"2415:7:28"}],"id":1478,"name":"VariableDeclaration","src":"2415:18:28"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":1484,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1479,"name":"ElementaryTypeName","src":"2435:4:28"}],"id":1480,"name":"VariableDeclaration","src":"2435:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":1484,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1481,"name":"ElementaryTypeName","src":"2451:4:28"}],"id":1482,"name":"VariableDeclaration","src":"2451:16:28"}],"id":1483,"name":"ParameterList","src":"2365:103:28"}],"id":1484,"name":"EventDefinition","src":"2349:120:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1490,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1485,"name":"ElementaryTypeName","src":"2493:7:28"}],"id":1486,"name":"VariableDeclaration","src":"2493:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1490,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1487,"name":"ElementaryTypeName","src":"2510:7:28"}],"id":1488,"name":"VariableDeclaration","src":"2510:14:28"}],"id":1489,"name":"ParameterList","src":"2492:33:28"}],"id":1490,"name":"EventDefinition","src":"2474:52:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":1494,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1491,"name":"ElementaryTypeName","src":"2552:6:28"}],"id":1492,"name":"VariableDeclaration","src":"2552:16:28"}],"id":1493,"name":"ParameterList","src":"2551:18:28"}],"id":1494,"name":"EventDefinition","src":"2532:38:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":1498,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1495,"name":"ElementaryTypeName","src":"2597:6:28"}],"id":1496,"name":"VariableDeclaration","src":"2597:16:28"}],"id":1497,"name":"ParameterList","src":"2596:18:28"}],"id":1498,"name":"EventDefinition","src":"2575:40:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1504,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1499,"name":"ElementaryTypeName","src":"2647:7:28"}],"id":1500,"name":"VariableDeclaration","src":"2647:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":1504,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1501,"name":"ElementaryTypeName","src":"2663:6:28"}],"id":1502,"name":"VariableDeclaration","src":"2663:16:28"}],"id":1503,"name":"ParameterList","src":"2646:34:28"}],"id":1504,"name":"EventDefinition","src":"2620:61:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1510,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1505,"name":"ElementaryTypeName","src":"2715:7:28"}],"id":1506,"name":"VariableDeclaration","src":"2715:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":1510,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1507,"name":"ElementaryTypeName","src":"2731:6:28"}],"id":1508,"name":"VariableDeclaration","src":"2731:16:28"}],"id":1509,"name":"ParameterList","src":"2714:34:28"}],"id":1510,"name":"EventDefinition","src":"2686:63:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1518,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1511,"name":"ElementaryTypeName","src":"2769:7:28"}],"id":1512,"name":"VariableDeclaration","src":"2769:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1518,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1513,"name":"ElementaryTypeName","src":"2782:7:28"}],"id":1514,"name":"VariableDeclaration","src":"2782:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1518,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1515,"name":"ElementaryTypeName","src":"2798:7:28"}],"id":1516,"name":"VariableDeclaration","src":"2798:15:28"}],"id":1517,"name":"ParameterList","src":"2768:46:28"}],"id":1518,"name":"EventDefinition","src":"2755:60:28"},{"attributes":{"constant":true,"name":"_APPROVE","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1519,"name":"ElementaryTypeName","src":"2924:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":1520,"name":"Literal","src":"2959:10:28"}],"id":1521,"name":"VariableDeclaration","src":"2924:45:28"},{"attributes":{"constant":true,"name":"_BURN","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1522,"name":"ElementaryTypeName","src":"3028:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":1523,"name":"Literal","src":"3060:10:28"}],"id":1524,"name":"VariableDeclaration","src":"3028:42:28"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1525,"name":"ElementaryTypeName","src":"3118:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":1526,"name":"Literal","src":"3154:10:28"}],"id":1527,"name":"VariableDeclaration","src":"3118:46:28"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1528,"name":"ElementaryTypeName","src":"3224:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":1529,"name":"Literal","src":"3265:10:28"}],"id":1530,"name":"VariableDeclaration","src":"3224:51:28"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":2332,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":1545,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1531,"name":"ElementaryTypeName","src":"3371:6:28"}],"id":1532,"name":"VariableDeclaration","src":"3371:13:28"},{"attributes":{"constant":false,"name":"magnitude","scope":1545,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1533,"name":"ElementaryTypeName","src":"3410:7:28"}],"id":1534,"name":"VariableDeclaration","src":"3410:17:28"},{"attributes":{"constant":false,"name":"rate","scope":1545,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1535,"name":"ElementaryTypeName","src":"3452:7:28"}],"id":1536,"name":"VariableDeclaration","src":"3452:12:28"},{"attributes":{"constant":false,"name":"available","scope":1545,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1537,"name":"ElementaryTypeName","src":"3504:4:28"}],"id":1538,"name":"VariableDeclaration","src":"3504:14:28"},{"attributes":{"constant":false,"name":"loadable","scope":1545,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1539,"name":"ElementaryTypeName","src":"3570:4:28"}],"id":1540,"name":"VariableDeclaration","src":"3570:13:28"},{"attributes":{"constant":false,"name":"redeemable","scope":1545,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1541,"name":"ElementaryTypeName","src":"3640:4:28"}],"id":1542,"name":"VariableDeclaration","src":"3640:15:28"},{"attributes":{"constant":false,"name":"lastUpdate","scope":1545,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1543,"name":"ElementaryTypeName","src":"3724:7:28"}],"id":1544,"name":"VariableDeclaration","src":"3724:18:28"}],"id":1545,"name":"StructDefinition","src":"3348:433:28"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":2332,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":1546,"name":"ElementaryTypeName","src":"3795:7:28"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":1545,"type":"struct TokenWhitelist.Token"},"id":1547,"name":"UserDefinedTypeName","src":"3806:5:28"}],"id":1548,"name":"Mapping","src":"3787:25:28"}],"id":1549,"name":"VariableDeclaration","src":"3787:47:28"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":2332,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1550,"name":"ElementaryTypeName","src":"4004:6:28"},{"attributes":{"name":"bool","type":"bool"},"id":1551,"name":"ElementaryTypeName","src":"4014:4:28"}],"id":1552,"name":"Mapping","src":"3996:23:28"}],"id":1553,"name":"VariableDeclaration","src":"3996:50:28"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":2332,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1554,"name":"ElementaryTypeName","src":"4053:7:28"}],"id":1555,"name":"ArrayTypeName","src":"4053:9:28"}],"id":1556,"name":"VariableDeclaration","src":"4053:36:28"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":2332,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1557,"name":"ElementaryTypeName","src":"4182:7:28"}],"id":1558,"name":"VariableDeclaration","src":"4182:34:28"},{"attributes":{"constant":false,"name":"_stablecoin","scope":2332,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1559,"name":"ElementaryTypeName","src":"4266:7:28"}],"id":1560,"name":"VariableDeclaration","src":"4266:27:28"},{"attributes":{"constant":false,"name":"_oracleNode","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1561,"name":"ElementaryTypeName","src":"4372:7:28"}],"id":1562,"name":"VariableDeclaration","src":"4372:27:28"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":1612,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1563,"name":"ElementaryTypeName","src":"4770:7:28"}],"id":1564,"name":"VariableDeclaration","src":"4770:13:28"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1565,"name":"ElementaryTypeName","src":"4785:7:28"}],"id":1566,"name":"VariableDeclaration","src":"4785:20:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1567,"name":"ElementaryTypeName","src":"4807:7:28"}],"id":1568,"name":"VariableDeclaration","src":"4807:24:28"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":1612,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1569,"name":"ElementaryTypeName","src":"4833:7:28"}],"id":1570,"name":"VariableDeclaration","src":"4833:27:28"}],"id":1571,"name":"ParameterList","src":"4769:92:28"},{"attributes":{"parameters":[null]},"children":[],"id":1578,"name":"ParameterList","src":"4949:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1344,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1572,"name":"Identifier","src":"4885:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1564,"type":"address","value":"_ens_"},"id":1573,"name":"Identifier","src":"4899:5:28"}],"id":1574,"name":"ModifierInvocation","src":"4885:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":588,"type":"type(contract Controllable)","value":"Controllable"},"id":1575,"name":"Identifier","src":"4914:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1568,"type":"bytes32","value":"_controllerNode_"},"id":1576,"name":"Identifier","src":"4927:16:28"}],"id":1577,"name":"ModifierInvocation","src":"4914:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1562,"type":"bytes32","value":"_oracleNode"},"id":1579,"name":"Identifier","src":"4959:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1566,"type":"bytes32","value":"_oracleNode_"},"id":1580,"name":"Identifier","src":"4973:12:28"}],"id":1581,"name":"Assignment","src":"4959:26:28"}],"id":1582,"name":"ExpressionStatement","src":"4959:26:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1560,"type":"address","value":"_stablecoin"},"id":1583,"name":"Identifier","src":"4995:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1570,"type":"address","value":"_stablecoinAddress_"},"id":1584,"name":"Identifier","src":"5009:19:28"}],"id":1585,"name":"Assignment","src":"4995:33:28"}],"id":1586,"name":"ExpressionStatement","src":"4995:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1587,"name":"Identifier","src":"5083:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1521,"type":"bytes4","value":"_APPROVE"},"id":1588,"name":"Identifier","src":"5102:8:28"}],"id":1589,"name":"IndexAccess","src":"5083:28:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1590,"name":"Literal","src":"5114:4:28"}],"id":1591,"name":"Assignment","src":"5083:35:28"}],"id":1592,"name":"ExpressionStatement","src":"5083:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1593,"name":"Identifier","src":"5128:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1524,"type":"bytes4","value":"_BURN"},"id":1594,"name":"Identifier","src":"5147:5:28"}],"id":1595,"name":"IndexAccess","src":"5128:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1596,"name":"Literal","src":"5156:4:28"}],"id":1597,"name":"Assignment","src":"5128:32:28"}],"id":1598,"name":"ExpressionStatement","src":"5128:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1599,"name":"Identifier","src":"5170:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"bytes4","value":"_TRANSFER"},"id":1600,"name":"Identifier","src":"5189:9:28"}],"id":1601,"name":"IndexAccess","src":"5170:29:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1602,"name":"Literal","src":"5202:4:28"}],"id":1603,"name":"Assignment","src":"5170:36:28"}],"id":1604,"name":"ExpressionStatement","src":"5170:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1605,"name":"Identifier","src":"5216:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"bytes4","value":"_TRANSFER_FROM"},"id":1606,"name":"Identifier","src":"5235:14:28"}],"id":1607,"name":"IndexAccess","src":"5216:34:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1608,"name":"Literal","src":"5253:4:28"}],"id":1609,"name":"Assignment","src":"5216:41:28"}],"id":1610,"name":"ExpressionStatement","src":"5216:41:28"}],"id":1611,"name":"Block","src":"4949:315:28"}],"id":1612,"name":"FunctionDefinition","src":"4758:506:28"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1613,"name":"ParameterList","src":"5296:2:28"},{"children":[{"attributes":{"assignments":[1615]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":1634,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1614,"name":"ElementaryTypeName","src":"5309:7:28"}],"id":1615,"name":"VariableDeclaration","src":"5309:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1616,"name":"Identifier","src":"5333:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1562,"type":"bytes32","value":"_oracleNode"},"id":1617,"name":"Identifier","src":"5345:11:28"}],"id":1618,"name":"FunctionCall","src":"5333:24:28"}],"id":1619,"name":"VariableDeclarationStatement","src":"5309:48:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1620,"name":"Identifier","src":"5367:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":587,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":1621,"name":"Identifier","src":"5375:8:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1622,"name":"Identifier","src":"5384:3:28"}],"id":1623,"name":"MemberAccess","src":"5384:10:28"}],"id":1624,"name":"FunctionCall","src":"5375:20:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1625,"name":"Identifier","src":"5399:3:28"}],"id":1626,"name":"MemberAccess","src":"5399:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1615,"type":"address","value":"oracleAddress"},"id":1627,"name":"Identifier","src":"5413:13:28"}],"id":1628,"name":"BinaryOperation","src":"5399:27:28"}],"id":1629,"name":"BinaryOperation","src":"5375:51:28"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":1630,"name":"Literal","src":"5428:24:28"}],"id":1631,"name":"FunctionCall","src":"5367:86:28"}],"id":1632,"name":"ExpressionStatement","src":"5367:86:28"},{"id":1633,"name":"PlaceholderStatement","src":"5463:1:28"}],"id":1634,"name":"Block","src":"5299:172:28"}],"id":1635,"name":"ModifierDefinition","src":"5270:201:28"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1636,"name":"ElementaryTypeName","src":"6068:7:28"}],"id":1637,"name":"ArrayTypeName","src":"6068:9:28"}],"id":1638,"name":"VariableDeclaration","src":"6068:26:28"},{"attributes":{"constant":false,"name":"_symbols","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1639,"name":"ElementaryTypeName","src":"6104:7:28"}],"id":1640,"name":"ArrayTypeName","src":"6104:9:28"}],"id":1641,"name":"VariableDeclaration","src":"6104:27:28"},{"attributes":{"constant":false,"name":"_magnitude","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1642,"name":"ElementaryTypeName","src":"6141:7:28"}],"id":1643,"name":"ArrayTypeName","src":"6141:9:28"}],"id":1644,"name":"VariableDeclaration","src":"6141:29:28"},{"attributes":{"constant":false,"name":"_loadable","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1645,"name":"ElementaryTypeName","src":"6180:4:28"}],"id":1646,"name":"ArrayTypeName","src":"6180:6:28"}],"id":1647,"name":"VariableDeclaration","src":"6180:25:28"},{"attributes":{"constant":false,"name":"_redeemable","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1648,"name":"ElementaryTypeName","src":"6215:4:28"}],"id":1649,"name":"ArrayTypeName","src":"6215:6:28"}],"id":1650,"name":"VariableDeclaration","src":"6215:27:28"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":1779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1651,"name":"ElementaryTypeName","src":"6252:7:28"}],"id":1652,"name":"VariableDeclaration","src":"6252:19:28"}],"id":1653,"name":"ParameterList","src":"6058:219:28"},{"attributes":{"parameters":[null]},"children":[],"id":1656,"name":"ParameterList","src":"6297:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":1654,"name":"Identifier","src":"6287:9:28"}],"id":1655,"name":"ModifierInvocation","src":"6287:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1657,"name":"Identifier","src":"6368:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1658,"name":"Identifier","src":"6389:7:28"}],"id":1659,"name":"MemberAccess","src":"6389:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1641,"type":"bytes32[] calldata","value":"_symbols"},"id":1660,"name":"Identifier","src":"6407:8:28"}],"id":1661,"name":"MemberAccess","src":"6407:15:28"}],"id":1662,"name":"BinaryOperation","src":"6389:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1663,"name":"Identifier","src":"6442:7:28"}],"id":1664,"name":"MemberAccess","src":"6442:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1644,"type":"uint256[] calldata","value":"_magnitude"},"id":1665,"name":"Identifier","src":"6460:10:28"}],"id":1666,"name":"MemberAccess","src":"6460:17:28"}],"id":1667,"name":"BinaryOperation","src":"6442:35:28"}],"id":1668,"name":"BinaryOperation","src":"6389:88:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1669,"name":"Identifier","src":"6497:7:28"}],"id":1670,"name":"MemberAccess","src":"6497:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"bool[] calldata","value":"_loadable"},"id":1671,"name":"Identifier","src":"6515:9:28"}],"id":1672,"name":"MemberAccess","src":"6515:16:28"}],"id":1673,"name":"BinaryOperation","src":"6497:34:28"}],"id":1674,"name":"BinaryOperation","src":"6389:142:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1675,"name":"Identifier","src":"6551:7:28"}],"id":1676,"name":"MemberAccess","src":"6551:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"bool[] calldata","value":"_loadable"},"id":1677,"name":"Identifier","src":"6569:9:28"}],"id":1678,"name":"MemberAccess","src":"6569:16:28"}],"id":1679,"name":"BinaryOperation","src":"6551:34:28"}],"id":1680,"name":"BinaryOperation","src":"6389:196:28"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":1681,"name":"Literal","src":"6599:32:28"}],"id":1682,"name":"FunctionCall","src":"6368:273:28"}],"id":1683,"name":"ExpressionStatement","src":"6368:273:28"},{"children":[{"attributes":{"assignments":[1685]},"children":[{"attributes":{"constant":false,"name":"i","scope":1777,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1684,"name":"ElementaryTypeName","src":"6715:7:28"}],"id":1685,"name":"VariableDeclaration","src":"6715:9:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1686,"name":"Literal","src":"6727:1:28"}],"id":1687,"name":"VariableDeclarationStatement","src":"6715:13:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1688,"name":"Identifier","src":"6730:1:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1689,"name":"Identifier","src":"6734:7:28"}],"id":1690,"name":"MemberAccess","src":"6734:14:28"}],"id":1691,"name":"BinaryOperation","src":"6730:18:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1692,"name":"Identifier","src":"6750:1:28"}],"id":1693,"name":"UnaryOperation","src":"6750:3:28"}],"id":1694,"name":"ExpressionStatement","src":"6750:3:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1695,"name":"Identifier","src":"6832:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1696,"name":"Identifier","src":"6841:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1697,"name":"Identifier","src":"6855:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1698,"name":"Identifier","src":"6863:1:28"}],"id":1699,"name":"IndexAccess","src":"6855:10:28"}],"id":1700,"name":"IndexAccess","src":"6841:25:28"}],"id":1701,"name":"MemberAccess","src":"6841:35:28"}],"id":1702,"name":"UnaryOperation","src":"6840:36:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":1703,"name":"Literal","src":"6878:25:28"}],"id":1704,"name":"FunctionCall","src":"6832:72:28"}],"id":1705,"name":"ExpressionStatement","src":"6832:72:28"},{"attributes":{"assignments":[1707]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":1776,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1706,"name":"ElementaryTypeName","src":"6964:6:28"}],"id":1707,"name":"VariableDeclaration","src":"6964:20:28"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":3274,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":3229,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1641,"type":"bytes32[] calldata","value":"_symbols"},"id":1708,"name":"Identifier","src":"6987:8:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1709,"name":"Identifier","src":"6996:1:28"}],"id":1710,"name":"IndexAccess","src":"6987:11:28"}],"id":1711,"name":"MemberAccess","src":"6987:22:28"}],"id":1712,"name":"FunctionCall","src":"6987:24:28"}],"id":1713,"name":"MemberAccess","src":"6987:33:28"}],"id":1714,"name":"FunctionCall","src":"6987:35:28"}],"id":1715,"name":"VariableDeclarationStatement","src":"6964:58:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1716,"name":"Identifier","src":"7084:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1717,"name":"Identifier","src":"7098:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1718,"name":"Identifier","src":"7106:1:28"}],"id":1719,"name":"IndexAccess","src":"7098:10:28"}],"id":1720,"name":"IndexAccess","src":"7084:25:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1545,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":1721,"name":"Identifier","src":"7112:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"string memory","value":"symbol"},"id":1722,"name":"Identifier","src":"7144:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1644,"type":"uint256[] calldata","value":"_magnitude"},"id":1723,"name":"Identifier","src":"7179:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1724,"name":"Identifier","src":"7190:1:28"}],"id":1725,"name":"IndexAccess","src":"7179:13:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1726,"name":"Literal","src":"7216:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1727,"name":"Literal","src":"7246:4:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"bool[] calldata","value":"_loadable"},"id":1728,"name":"Identifier","src":"7278:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1729,"name":"Identifier","src":"7288:1:28"}],"id":1730,"name":"IndexAccess","src":"7278:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1650,"type":"bool[] calldata","value":"_redeemable"},"id":1731,"name":"Identifier","src":"7320:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1732,"name":"Identifier","src":"7332:1:28"}],"id":1733,"name":"IndexAccess","src":"7320:14:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1652,"type":"uint256","value":"_lastUpdate"},"id":1734,"name":"Identifier","src":"7364:11:28"}],"id":1735,"name":"FunctionCall","src":"7112:278:28"}],"id":1736,"name":"Assignment","src":"7084:306:28"}],"id":1737,"name":"ExpressionStatement","src":"7084:306:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1738,"name":"Identifier","src":"7462:18:28"}],"id":1740,"name":"MemberAccess","src":"7462:23:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1741,"name":"Identifier","src":"7486:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1742,"name":"Identifier","src":"7494:1:28"}],"id":1743,"name":"IndexAccess","src":"7486:10:28"}],"id":1744,"name":"FunctionCall","src":"7462:35:28"}],"id":1745,"name":"ExpressionStatement","src":"7462:35:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1650,"type":"bool[] calldata","value":"_redeemable"},"id":1746,"name":"Identifier","src":"7587:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1747,"name":"Identifier","src":"7599:1:28"}],"id":1748,"name":"IndexAccess","src":"7587:14:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":1749,"name":"Identifier","src":"7621:18:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":1750,"name":"Identifier","src":"7642:18:28"}],"id":1751,"name":"MemberAccess","src":"7642:22:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1752,"name":"Literal","src":"7665:1:28"}],"id":1753,"name":"FunctionCall","src":"7642:25:28"}],"id":1754,"name":"Assignment","src":"7621:46:28"}],"id":1755,"name":"ExpressionStatement","src":"7621:46:28"}],"id":1756,"name":"Block","src":"7603:79:28"}],"id":1757,"name":"IfStatement","src":"7583:99:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":1484,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":1758,"name":"Identifier","src":"7742:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1759,"name":"Identifier","src":"7753:3:28"}],"id":1760,"name":"MemberAccess","src":"7753:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1761,"name":"Identifier","src":"7765:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1762,"name":"Identifier","src":"7773:1:28"}],"id":1763,"name":"IndexAccess","src":"7765:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"string memory","value":"symbol"},"id":1764,"name":"Identifier","src":"7777:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1644,"type":"uint256[] calldata","value":"_magnitude"},"id":1765,"name":"Identifier","src":"7785:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1766,"name":"Identifier","src":"7796:1:28"}],"id":1767,"name":"IndexAccess","src":"7785:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"bool[] calldata","value":"_loadable"},"id":1768,"name":"Identifier","src":"7800:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1769,"name":"Identifier","src":"7810:1:28"}],"id":1770,"name":"IndexAccess","src":"7800:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1650,"type":"bool[] calldata","value":"_redeemable"},"id":1771,"name":"Identifier","src":"7814:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1772,"name":"Identifier","src":"7826:1:28"}],"id":1773,"name":"IndexAccess","src":"7814:14:28"}],"id":1774,"name":"FunctionCall","src":"7742:87:28"}],"id":1775,"name":"EmitStatement","src":"7737:92:28"}],"id":1776,"name":"Block","src":"6755:1085:28"}],"id":1777,"name":"ForStatement","src":"6710:1130:28"}],"id":1778,"name":"Block","src":"6297:1549:28"}],"id":1779,"name":"FunctionDefinition","src":"6040:1806:28"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":1880,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1780,"name":"ElementaryTypeName","src":"7995:7:28"}],"id":1781,"name":"ArrayTypeName","src":"7995:9:28"}],"id":1782,"name":"VariableDeclaration","src":"7995:26:28"}],"id":1783,"name":"ParameterList","src":"7994:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":1786,"name":"ParameterList","src":"8042:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":1784,"name":"Identifier","src":"8032:9:28"}],"id":1785,"name":"ModifierInvocation","src":"8032:9:28"},{"children":[{"children":[{"attributes":{"assignments":[1788]},"children":[{"attributes":{"constant":false,"name":"i","scope":1878,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1787,"name":"ElementaryTypeName","src":"8160:7:28"}],"id":1788,"name":"VariableDeclaration","src":"8160:9:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1789,"name":"Literal","src":"8172:1:28"}],"id":1790,"name":"VariableDeclarationStatement","src":"8160:13:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1788,"type":"uint256","value":"i"},"id":1791,"name":"Identifier","src":"8175:1:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"address[] calldata","value":"_tokens"},"id":1792,"name":"Identifier","src":"8179:7:28"}],"id":1793,"name":"MemberAccess","src":"8179:14:28"}],"id":1794,"name":"BinaryOperation","src":"8175:18:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1788,"type":"uint256","value":"i"},"id":1795,"name":"Identifier","src":"8195:1:28"}],"id":1796,"name":"UnaryOperation","src":"8195:3:28"}],"id":1797,"name":"ExpressionStatement","src":"8195:3:28"},{"children":[{"attributes":{"assignments":[1799]},"children":[{"attributes":{"constant":false,"name":"token","scope":1877,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1798,"name":"ElementaryTypeName","src":"8254:7:28"}],"id":1799,"name":"VariableDeclaration","src":"8254:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"address[] calldata","value":"_tokens"},"id":1800,"name":"Identifier","src":"8270:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1788,"type":"uint256","value":"i"},"id":1801,"name":"Identifier","src":"8278:1:28"}],"id":1802,"name":"IndexAccess","src":"8270:10:28"}],"id":1803,"name":"VariableDeclarationStatement","src":"8254:26:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1804,"name":"Identifier","src":"8363:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1805,"name":"Identifier","src":"8371:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1806,"name":"Identifier","src":"8385:5:28"}],"id":1807,"name":"IndexAccess","src":"8371:20:28"}],"id":1808,"name":"MemberAccess","src":"8371:30:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1809,"name":"Literal","src":"8403:24:28"}],"id":1810,"name":"FunctionCall","src":"8363:65:28"}],"id":1811,"name":"ExpressionStatement","src":"8363:65:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1812,"name":"Identifier","src":"8518:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1813,"name":"Identifier","src":"8532:5:28"}],"id":1814,"name":"IndexAccess","src":"8518:20:28"}],"id":1815,"name":"MemberAccess","src":"8518:31:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":1816,"name":"Identifier","src":"8569:18:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":371,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":1817,"name":"Identifier","src":"8590:18:28"}],"id":1818,"name":"MemberAccess","src":"8590:22:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1819,"name":"Literal","src":"8613:1:28"}],"id":1820,"name":"FunctionCall","src":"8590:25:28"}],"id":1821,"name":"Assignment","src":"8569:46:28"}],"id":1822,"name":"ExpressionStatement","src":"8569:46:28"}],"id":1823,"name":"Block","src":"8551:79:28"}],"id":1824,"name":"IfStatement","src":"8514:116:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1825,"name":"Identifier","src":"8690:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1826,"name":"Identifier","src":"8704:5:28"}],"id":1827,"name":"IndexAccess","src":"8690:20:28"}],"id":1828,"name":"UnaryOperation","src":"8683:27:28"}],"id":1829,"name":"ExpressionStatement","src":"8683:27:28"},{"children":[{"attributes":{"assignments":[1831]},"children":[{"attributes":{"constant":false,"name":"j","scope":1865,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1830,"name":"ElementaryTypeName","src":"8792:7:28"}],"id":1831,"name":"VariableDeclaration","src":"8792:9:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1832,"name":"Literal","src":"8804:1:28"}],"id":1833,"name":"VariableDeclarationStatement","src":"8792:13:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"j"},"id":1834,"name":"Identifier","src":"8807:1:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":371,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1835,"name":"Identifier","src":"8811:18:28"}],"id":1836,"name":"MemberAccess","src":"8811:25:28"}],"id":1837,"name":"MemberAccess","src":"8811:29:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1838,"name":"Literal","src":"8841:1:28"}],"id":1839,"name":"FunctionCall","src":"8811:32:28"}],"id":1840,"name":"BinaryOperation","src":"8807:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"j"},"id":1841,"name":"Identifier","src":"8845:1:28"}],"id":1842,"name":"UnaryOperation","src":"8845:3:28"}],"id":1843,"name":"ExpressionStatement","src":"8845:3:28"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1844,"name":"Identifier","src":"8872:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"j"},"id":1845,"name":"Identifier","src":"8891:1:28"}],"id":1846,"name":"IndexAccess","src":"8872:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1847,"name":"Identifier","src":"8897:5:28"}],"id":1848,"name":"BinaryOperation","src":"8872:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1849,"name":"Identifier","src":"8926:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"j"},"id":1850,"name":"Identifier","src":"8945:1:28"}],"id":1851,"name":"IndexAccess","src":"8926:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1852,"name":"Identifier","src":"8950:18:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":371,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1853,"name":"Identifier","src":"8969:18:28"}],"id":1854,"name":"MemberAccess","src":"8969:25:28"}],"id":1855,"name":"MemberAccess","src":"8969:29:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1856,"name":"Literal","src":"8999:1:28"}],"id":1857,"name":"FunctionCall","src":"8969:32:28"}],"id":1858,"name":"IndexAccess","src":"8950:52:28"}],"id":1859,"name":"Assignment","src":"8926:76:28"}],"id":1860,"name":"ExpressionStatement","src":"8926:76:28"},{"id":1861,"name":"Break","src":"9024:5:28"}],"id":1862,"name":"Block","src":"8904:144:28"}],"id":1863,"name":"IfStatement","src":"8868:180:28"}],"id":1864,"name":"Block","src":"8850:212:28"}],"id":1865,"name":"ForStatement","src":"8787:275:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1866,"name":"Identifier","src":"9075:18:28"}],"id":1868,"name":"MemberAccess","src":"9075:25:28"}],"id":1869,"name":"UnaryOperation","src":"9075:27:28"}],"id":1870,"name":"ExpressionStatement","src":"9075:27:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1490,"type":"function (address,address)","value":"RemovedToken"},"id":1871,"name":"Identifier","src":"9162:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1872,"name":"Identifier","src":"9175:3:28"}],"id":1873,"name":"MemberAccess","src":"9175:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1874,"name":"Identifier","src":"9187:5:28"}],"id":1875,"name":"FunctionCall","src":"9162:31:28"}],"id":1876,"name":"EmitStatement","src":"9157:36:28"}],"id":1877,"name":"Block","src":"8200:1004:28"}],"id":1878,"name":"ForStatement","src":"8155:1049:28"}],"id":1879,"name":"Block","src":"8042:1168:28"}],"id":1880,"name":"FunctionDefinition","src":"7973:1237:28"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1993,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1881,"name":"ElementaryTypeName","src":"9404:7:28"}],"id":1882,"name":"VariableDeclaration","src":"9404:14:28"},{"attributes":{"constant":false,"name":"_data","scope":1993,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1883,"name":"ElementaryTypeName","src":"9420:5:28"}],"id":1884,"name":"VariableDeclaration","src":"9420:20:28"}],"id":1885,"name":"ParameterList","src":"9403:38:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1993,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1886,"name":"ElementaryTypeName","src":"9465:7:28"}],"id":1887,"name":"VariableDeclaration","src":"9465:7:28"},{"attributes":{"constant":false,"name":"","scope":1993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1888,"name":"ElementaryTypeName","src":"9474:7:28"}],"id":1889,"name":"VariableDeclaration","src":"9474:7:28"}],"id":1890,"name":"ParameterList","src":"9464:18:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1891,"name":"Identifier","src":"9669:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1892,"name":"Identifier","src":"9677:5:28"}],"id":1893,"name":"MemberAccess","src":"9677:12:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1894,"name":"Literal","src":"9693:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1895,"name":"Literal","src":"9697:2:28"}],"id":1896,"name":"BinaryOperation","src":"9693:6:28"}],"id":1897,"name":"BinaryOperation","src":"9677:22:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":1898,"name":"Literal","src":"9701:34:28"}],"id":1899,"name":"FunctionCall","src":"9669:67:28"}],"id":1900,"name":"ExpressionStatement","src":"9669:67:28"},{"attributes":{"assignments":[1902]},"children":[{"attributes":{"constant":false,"name":"signature","scope":1992,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1901,"name":"ElementaryTypeName","src":"9782:6:28"}],"id":1902,"name":"VariableDeclaration","src":"9782:16:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":4801,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1903,"name":"Identifier","src":"9801:5:28"}],"id":1904,"name":"MemberAccess","src":"9801:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1905,"name":"Literal","src":"9822:1:28"}],"id":1906,"name":"FunctionCall","src":"9801:23:28"}],"id":1907,"name":"VariableDeclarationStatement","src":"9782:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1908,"name":"Identifier","src":"9877:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":1909,"name":"Identifier","src":"9885:22:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1882,"type":"address","value":"_token"},"id":1910,"name":"Identifier","src":"9908:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1902,"type":"bytes4","value":"signature"},"id":1911,"name":"Identifier","src":"9916:9:28"}],"id":1912,"name":"FunctionCall","src":"9885:41:28"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":1913,"name":"Literal","src":"9928:20:28"}],"id":1914,"name":"FunctionCall","src":"9877:72:28"}],"id":1915,"name":"ExpressionStatement","src":"9877:72:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1902,"type":"bytes4","value":"signature"},"id":1916,"name":"Identifier","src":"10048:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1524,"type":"bytes4","value":"_BURN"},"id":1917,"name":"Identifier","src":"10061:5:28"}],"id":1918,"name":"BinaryOperation","src":"10048:18:28"},{"children":[{"attributes":{"functionReturnParameters":1890},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1882,"type":"address","value":"_token"},"id":1919,"name":"Identifier","src":"10133:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4835,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1920,"name":"Identifier","src":"10141:5:28"}],"id":1921,"name":"MemberAccess","src":"10141:21:28"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1922,"name":"Literal","src":"10163:1:28"}],"id":1923,"name":"FunctionCall","src":"10141:24:28"}],"id":1924,"name":"TupleExpression","src":"10132:34:28"}],"id":1925,"name":"Return","src":"10125:41:28"}],"id":1926,"name":"Block","src":"10068:109:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1902,"type":"bytes4","value":"signature"},"id":1927,"name":"Identifier","src":"10187:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"bytes4","value":"_TRANSFER_FROM"},"id":1928,"name":"Identifier","src":"10200:14:28"}],"id":1929,"name":"BinaryOperation","src":"10187:27:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1930,"name":"Identifier","src":"10301:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1931,"name":"Identifier","src":"10309:5:28"}],"id":1932,"name":"MemberAccess","src":"10309:12:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1933,"name":"Literal","src":"10325:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1934,"name":"Literal","src":"10329:2:28"}],"id":1935,"name":"BinaryOperation","src":"10325:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1936,"name":"Literal","src":"10334:2:28"}],"id":1937,"name":"BinaryOperation","src":"10325:11:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1938,"name":"Literal","src":"10339:2:28"}],"id":1939,"name":"BinaryOperation","src":"10325:16:28"}],"id":1940,"name":"BinaryOperation","src":"10309:32:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":1941,"name":"Literal","src":"10343:34:28"}],"id":1942,"name":"FunctionCall","src":"10301:77:28"}],"id":1943,"name":"ExpressionStatement","src":"10301:77:28"},{"attributes":{"functionReturnParameters":1890},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":4767,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1944,"name":"Identifier","src":"10400:5:28"}],"id":1945,"name":"MemberAccess","src":"10400:21:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1946,"name":"Literal","src":"10422:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1947,"name":"Literal","src":"10426:2:28"}],"id":1948,"name":"BinaryOperation","src":"10422:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":1949,"name":"Literal","src":"10431:2:28"}],"id":1950,"name":"BinaryOperation","src":"10422:11:28"}],"id":1951,"name":"FunctionCall","src":"10400:34:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4835,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1952,"name":"Identifier","src":"10436:5:28"}],"id":1953,"name":"MemberAccess","src":"10436:21:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1954,"name":"Literal","src":"10458:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1955,"name":"Literal","src":"10462:2:28"}],"id":1956,"name":"BinaryOperation","src":"10458:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1957,"name":"Literal","src":"10467:2:28"}],"id":1958,"name":"BinaryOperation","src":"10458:11:28"}],"id":1959,"name":"FunctionCall","src":"10436:34:28"}],"id":1960,"name":"TupleExpression","src":"10399:72:28"}],"id":1961,"name":"Return","src":"10392:79:28"}],"id":1962,"name":"Block","src":"10216:266:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1963,"name":"Identifier","src":"10590:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1964,"name":"Identifier","src":"10598:5:28"}],"id":1965,"name":"MemberAccess","src":"10598:12:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1966,"name":"Literal","src":"10614:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1967,"name":"Literal","src":"10618:2:28"}],"id":1968,"name":"BinaryOperation","src":"10614:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1969,"name":"Literal","src":"10623:2:28"}],"id":1970,"name":"BinaryOperation","src":"10614:11:28"}],"id":1971,"name":"BinaryOperation","src":"10598:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":1972,"name":"Literal","src":"10627:39:28"}],"id":1973,"name":"FunctionCall","src":"10590:77:28"}],"id":1974,"name":"ExpressionStatement","src":"10590:77:28"},{"attributes":{"functionReturnParameters":1890},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":4767,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1975,"name":"Identifier","src":"10689:5:28"}],"id":1976,"name":"MemberAccess","src":"10689:21:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1977,"name":"Literal","src":"10711:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":1978,"name":"Literal","src":"10715:2:28"}],"id":1979,"name":"BinaryOperation","src":"10711:6:28"}],"id":1980,"name":"FunctionCall","src":"10689:29:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4835,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1981,"name":"Identifier","src":"10720:5:28"}],"id":1982,"name":"MemberAccess","src":"10720:21:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1983,"name":"Literal","src":"10742:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1984,"name":"Literal","src":"10746:2:28"}],"id":1985,"name":"BinaryOperation","src":"10742:6:28"}],"id":1986,"name":"FunctionCall","src":"10720:29:28"}],"id":1987,"name":"TupleExpression","src":"10688:62:28"}],"id":1988,"name":"Return","src":"10681:69:28"}],"id":1989,"name":"Block","src":"10488:273:28"}],"id":1990,"name":"IfStatement","src":"10183:578:28"}],"id":1991,"name":"IfStatement","src":"10044:717:28"}],"id":1992,"name":"Block","src":"9483:1284:28"}],"id":1993,"name":"FunctionDefinition","src":"9368:1399:28"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2025,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1994,"name":"ElementaryTypeName","src":"10866:7:28"}],"id":1995,"name":"VariableDeclaration","src":"10866:14:28"},{"attributes":{"constant":false,"name":"_loadable","scope":2025,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1996,"name":"ElementaryTypeName","src":"10882:4:28"}],"id":1997,"name":"VariableDeclaration","src":"10882:14:28"}],"id":1998,"name":"ParameterList","src":"10865:32:28"},{"attributes":{"parameters":[null]},"children":[],"id":2001,"name":"ParameterList","src":"10917:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":1999,"name":"Identifier","src":"10907:9:28"}],"id":2000,"name":"ModifierInvocation","src":"10907:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2002,"name":"Identifier","src":"10969:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2003,"name":"Identifier","src":"10977:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"address","value":"_token"},"id":2004,"name":"Identifier","src":"10991:6:28"}],"id":2005,"name":"IndexAccess","src":"10977:21:28"}],"id":2006,"name":"MemberAccess","src":"10977:31:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":2007,"name":"Literal","src":"11010:24:28"}],"id":2008,"name":"FunctionCall","src":"10969:66:28"}],"id":2009,"name":"ExpressionStatement","src":"10969:66:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":1540,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2010,"name":"Identifier","src":"11108:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"address","value":"_token"},"id":2011,"name":"Identifier","src":"11122:6:28"}],"id":2012,"name":"IndexAccess","src":"11108:21:28"}],"id":2013,"name":"MemberAccess","src":"11108:30:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"bool","value":"_loadable"},"id":2014,"name":"Identifier","src":"11141:9:28"}],"id":2015,"name":"Assignment","src":"11108:42:28"}],"id":2016,"name":"ExpressionStatement","src":"11108:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":1462,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":2017,"name":"Identifier","src":"11166:20:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2018,"name":"Identifier","src":"11187:3:28"}],"id":2019,"name":"MemberAccess","src":"11187:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"address","value":"_token"},"id":2020,"name":"Identifier","src":"11199:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"bool","value":"_loadable"},"id":2021,"name":"Identifier","src":"11207:9:28"}],"id":2022,"name":"FunctionCall","src":"11166:51:28"}],"id":2023,"name":"EmitStatement","src":"11161:56:28"}],"id":2024,"name":"Block","src":"10917:307:28"}],"id":2025,"name":"FunctionDefinition","src":"10840:384:28"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2057,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2026,"name":"ElementaryTypeName","src":"11327:7:28"}],"id":2027,"name":"VariableDeclaration","src":"11327:14:28"},{"attributes":{"constant":false,"name":"_redeemable","scope":2057,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2028,"name":"ElementaryTypeName","src":"11343:4:28"}],"id":2029,"name":"VariableDeclaration","src":"11343:16:28"}],"id":2030,"name":"ParameterList","src":"11326:34:28"},{"attributes":{"parameters":[null]},"children":[],"id":2033,"name":"ParameterList","src":"11380:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":2031,"name":"Identifier","src":"11370:9:28"}],"id":2032,"name":"ModifierInvocation","src":"11370:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2034,"name":"Identifier","src":"11432:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2035,"name":"Identifier","src":"11440:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2027,"type":"address","value":"_token"},"id":2036,"name":"Identifier","src":"11454:6:28"}],"id":2037,"name":"IndexAccess","src":"11440:21:28"}],"id":2038,"name":"MemberAccess","src":"11440:31:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":2039,"name":"Literal","src":"11473:24:28"}],"id":2040,"name":"FunctionCall","src":"11432:66:28"}],"id":2041,"name":"ExpressionStatement","src":"11432:66:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2042,"name":"Identifier","src":"11573:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2027,"type":"address","value":"_token"},"id":2043,"name":"Identifier","src":"11587:6:28"}],"id":2044,"name":"IndexAccess","src":"11573:21:28"}],"id":2045,"name":"MemberAccess","src":"11573:32:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2029,"type":"bool","value":"_redeemable"},"id":2046,"name":"Identifier","src":"11608:11:28"}],"id":2047,"name":"Assignment","src":"11573:46:28"}],"id":2048,"name":"ExpressionStatement","src":"11573:46:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":1470,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":2049,"name":"Identifier","src":"11635:22:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2050,"name":"Identifier","src":"11658:3:28"}],"id":2051,"name":"MemberAccess","src":"11658:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2027,"type":"address","value":"_token"},"id":2052,"name":"Identifier","src":"11670:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2029,"type":"bool","value":"_redeemable"},"id":2053,"name":"Identifier","src":"11678:11:28"}],"id":2054,"name":"FunctionCall","src":"11635:55:28"}],"id":2055,"name":"EmitStatement","src":"11630:60:28"}],"id":2056,"name":"Block","src":"11380:317:28"}],"id":2057,"name":"FunctionDefinition","src":"11299:398:28"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2098,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2058,"name":"ElementaryTypeName","src":"11999:7:28"}],"id":2059,"name":"VariableDeclaration","src":"11999:14:28"},{"attributes":{"constant":false,"name":"_rate","scope":2098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2060,"name":"ElementaryTypeName","src":"12015:7:28"}],"id":2061,"name":"VariableDeclaration","src":"12015:13:28"},{"attributes":{"constant":false,"name":"_updateDate","scope":2098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2062,"name":"ElementaryTypeName","src":"12030:7:28"}],"id":2063,"name":"VariableDeclaration","src":"12030:19:28"}],"id":2064,"name":"ParameterList","src":"11998:52:28"},{"attributes":{"parameters":[null]},"children":[],"id":2067,"name":"ParameterList","src":"12078:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1635,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":2065,"name":"Identifier","src":"12060:17:28"}],"id":2066,"name":"ModifierInvocation","src":"12060:17:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2068,"name":"Identifier","src":"12130:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2069,"name":"Identifier","src":"12138:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_token"},"id":2070,"name":"Identifier","src":"12152:6:28"}],"id":2071,"name":"IndexAccess","src":"12138:21:28"}],"id":2072,"name":"MemberAccess","src":"12138:31:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":2073,"name":"Literal","src":"12171:24:28"}],"id":2074,"name":"FunctionCall","src":"12130:66:28"}],"id":2075,"name":"ExpressionStatement","src":"12130:66:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":1536,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2076,"name":"Identifier","src":"12242:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_token"},"id":2077,"name":"Identifier","src":"12256:6:28"}],"id":2078,"name":"IndexAccess","src":"12242:21:28"}],"id":2079,"name":"MemberAccess","src":"12242:26:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2061,"type":"uint256","value":"_rate"},"id":2080,"name":"Identifier","src":"12271:5:28"}],"id":2081,"name":"Assignment","src":"12242:34:28"}],"id":2082,"name":"ExpressionStatement","src":"12242:34:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":1544,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2083,"name":"Identifier","src":"12339:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_token"},"id":2084,"name":"Identifier","src":"12353:6:28"}],"id":2085,"name":"IndexAccess","src":"12339:21:28"}],"id":2086,"name":"MemberAccess","src":"12339:32:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2063,"type":"uint256","value":"_updateDate"},"id":2087,"name":"Identifier","src":"12374:11:28"}],"id":2088,"name":"Assignment","src":"12339:46:28"}],"id":2089,"name":"ExpressionStatement","src":"12339:46:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1454,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":2090,"name":"Identifier","src":"12439:16:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2091,"name":"Identifier","src":"12456:3:28"}],"id":2092,"name":"MemberAccess","src":"12456:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_token"},"id":2093,"name":"Identifier","src":"12468:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2061,"type":"uint256","value":"_rate"},"id":2094,"name":"Identifier","src":"12476:5:28"}],"id":2095,"name":"FunctionCall","src":"12439:43:28"}],"id":2096,"name":"EmitStatement","src":"12434:48:28"}],"id":2097,"name":"Block","src":"12078:411:28"}],"id":2098,"name":"FunctionDefinition","src":"11974:515:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2122,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2099,"name":"ElementaryTypeName","src":"12593:15:28"}],"id":2100,"name":"VariableDeclaration","src":"12593:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":2122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2101,"name":"ElementaryTypeName","src":"12614:7:28"}],"id":2102,"name":"VariableDeclaration","src":"12614:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":2122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2103,"name":"ElementaryTypeName","src":"12630:7:28"}],"id":2104,"name":"VariableDeclaration","src":"12630:15:28"}],"id":2105,"name":"ParameterList","src":"12592:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":2108,"name":"ParameterList","src":"12666:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":2106,"name":"Identifier","src":"12656:9:28"}],"id":2107,"name":"ModifierInvocation","src":"12656:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":844,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2109,"name":"Identifier","src":"12676:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2100,"type":"address payable","value":"_to"},"id":2110,"name":"Identifier","src":"12690:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"address","value":"_asset"},"id":2111,"name":"Identifier","src":"12695:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"_amount"},"id":2112,"name":"Identifier","src":"12703:7:28"}],"id":2113,"name":"FunctionCall","src":"12676:35:28"}],"id":2114,"name":"ExpressionStatement","src":"12676:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1518,"type":"function (address,address,uint256)","value":"Claimed"},"id":2115,"name":"Identifier","src":"12726:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2100,"type":"address payable","value":"_to"},"id":2116,"name":"Identifier","src":"12734:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"address","value":"_asset"},"id":2117,"name":"Identifier","src":"12739:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"_amount"},"id":2118,"name":"Identifier","src":"12747:7:28"}],"id":2119,"name":"FunctionCall","src":"12726:29:28"}],"id":2120,"name":"EmitStatement","src":"12721:34:28"}],"id":2121,"name":"Block","src":"12666:96:28"}],"id":2122,"name":"FunctionDefinition","src":"12578:184:28"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":2164,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2123,"name":"ElementaryTypeName","src":"13336:7:28"}],"id":2124,"name":"VariableDeclaration","src":"13336:10:28"}],"id":2125,"name":"ParameterList","src":"13335:12:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2126,"name":"ElementaryTypeName","src":"13371:6:28"}],"id":2127,"name":"VariableDeclaration","src":"13371:13:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2128,"name":"ElementaryTypeName","src":"13386:7:28"}],"id":2129,"name":"VariableDeclaration","src":"13386:7:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2130,"name":"ElementaryTypeName","src":"13395:7:28"}],"id":2131,"name":"VariableDeclaration","src":"13395:7:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2132,"name":"ElementaryTypeName","src":"13404:4:28"}],"id":2133,"name":"VariableDeclaration","src":"13404:4:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2134,"name":"ElementaryTypeName","src":"13410:4:28"}],"id":2135,"name":"VariableDeclaration","src":"13410:4:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2136,"name":"ElementaryTypeName","src":"13416:4:28"}],"id":2137,"name":"VariableDeclaration","src":"13416:4:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2138,"name":"ElementaryTypeName","src":"13422:7:28"}],"id":2139,"name":"VariableDeclaration","src":"13422:7:28"}],"id":2140,"name":"ParameterList","src":"13370:60:28"},{"children":[{"attributes":{"assignments":[2142]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":2163,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":1545,"type":"struct TokenWhitelist.Token"},"id":2141,"name":"UserDefinedTypeName","src":"13441:5:28"}],"id":2142,"name":"VariableDeclaration","src":"13441:23:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2143,"name":"Identifier","src":"13467:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2124,"type":"address","value":"_a"},"id":2144,"name":"Identifier","src":"13481:2:28"}],"id":2145,"name":"IndexAccess","src":"13467:17:28"}],"id":2146,"name":"VariableDeclarationStatement","src":"13441:43:28"},{"attributes":{"functionReturnParameters":2140},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":1532,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2147,"name":"Identifier","src":"13502:9:28"}],"id":2148,"name":"MemberAccess","src":"13502:16:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":1534,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2149,"name":"Identifier","src":"13520:9:28"}],"id":2150,"name":"MemberAccess","src":"13520:19:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":1536,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2151,"name":"Identifier","src":"13541:9:28"}],"id":2152,"name":"MemberAccess","src":"13541:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2153,"name":"Identifier","src":"13557:9:28"}],"id":2154,"name":"MemberAccess","src":"13557:19:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":1540,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2155,"name":"Identifier","src":"13578:9:28"}],"id":2156,"name":"MemberAccess","src":"13578:18:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2157,"name":"Identifier","src":"13598:9:28"}],"id":2158,"name":"MemberAccess","src":"13598:20:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":1544,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2159,"name":"Identifier","src":"13620:9:28"}],"id":2160,"name":"MemberAccess","src":"13620:20:28"}],"id":2161,"name":"TupleExpression","src":"13501:140:28"}],"id":2162,"name":"Return","src":"13494:147:28"}],"id":2163,"name":"Block","src":"13431:217:28"}],"id":2164,"name":"FunctionDefinition","src":"13314:334:28"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2165,"name":"ParameterList","src":"14176:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2166,"name":"ElementaryTypeName","src":"14202:6:28"}],"id":2167,"name":"VariableDeclaration","src":"14202:13:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2168,"name":"ElementaryTypeName","src":"14217:7:28"}],"id":2169,"name":"VariableDeclaration","src":"14217:7:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2170,"name":"ElementaryTypeName","src":"14226:7:28"}],"id":2171,"name":"VariableDeclaration","src":"14226:7:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2172,"name":"ElementaryTypeName","src":"14235:4:28"}],"id":2173,"name":"VariableDeclaration","src":"14235:4:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2174,"name":"ElementaryTypeName","src":"14241:4:28"}],"id":2175,"name":"VariableDeclaration","src":"14241:4:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2176,"name":"ElementaryTypeName","src":"14247:4:28"}],"id":2177,"name":"VariableDeclaration","src":"14247:4:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2178,"name":"ElementaryTypeName","src":"14253:7:28"}],"id":2179,"name":"VariableDeclaration","src":"14253:7:28"}],"id":2180,"name":"ParameterList","src":"14201:60:28"},{"children":[{"attributes":{"assignments":[2182]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":2203,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":1545,"type":"struct TokenWhitelist.Token"},"id":2181,"name":"UserDefinedTypeName","src":"14272:5:28"}],"id":2182,"name":"VariableDeclaration","src":"14272:28:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2183,"name":"Identifier","src":"14303:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1560,"type":"address","value":"_stablecoin"},"id":2184,"name":"Identifier","src":"14317:11:28"}],"id":2185,"name":"IndexAccess","src":"14303:26:28"}],"id":2186,"name":"VariableDeclarationStatement","src":"14272:57:28"},{"attributes":{"functionReturnParameters":2180},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":1532,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2187,"name":"Identifier","src":"14360:14:28"}],"id":2188,"name":"MemberAccess","src":"14360:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":1534,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2189,"name":"Identifier","src":"14395:14:28"}],"id":2190,"name":"MemberAccess","src":"14395:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":1536,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2191,"name":"Identifier","src":"14433:14:28"}],"id":2192,"name":"MemberAccess","src":"14433:19:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2193,"name":"Identifier","src":"14466:14:28"}],"id":2194,"name":"MemberAccess","src":"14466:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":1540,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2195,"name":"Identifier","src":"14504:14:28"}],"id":2196,"name":"MemberAccess","src":"14504:23:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2197,"name":"Identifier","src":"14541:14:28"}],"id":2198,"name":"MemberAccess","src":"14541:25:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":1544,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2199,"name":"Identifier","src":"14580:14:28"}],"id":2200,"name":"MemberAccess","src":"14580:25:28"}],"id":2201,"name":"TupleExpression","src":"14346:269:28"}],"id":2202,"name":"Return","src":"14339:276:28"}],"id":2203,"name":"Block","src":"14262:360:28"}],"id":2204,"name":"FunctionDefinition","src":"14150:472:28"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2205,"name":"ParameterList","src":"14777:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2213,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2206,"name":"ElementaryTypeName","src":"14803:7:28"}],"id":2207,"name":"ArrayTypeName","src":"14803:9:28"}],"id":2208,"name":"VariableDeclaration","src":"14803:16:28"}],"id":2209,"name":"ParameterList","src":"14802:18:28"},{"children":[{"attributes":{"functionReturnParameters":2209},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":2210,"name":"Identifier","src":"14838:18:28"}],"id":2211,"name":"Return","src":"14831:25:28"}],"id":2212,"name":"Block","src":"14821:42:28"}],"id":2213,"name":"FunctionDefinition","src":"14751:112:28"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2214,"name":"ParameterList","src":"15015:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2271,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2215,"name":"ElementaryTypeName","src":"15041:7:28"}],"id":2216,"name":"ArrayTypeName","src":"15041:9:28"}],"id":2217,"name":"VariableDeclaration","src":"15041:16:28"}],"id":2218,"name":"ParameterList","src":"15040:18:28"},{"children":[{"attributes":{"assignments":[2222]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":2270,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":2220,"name":"ElementaryTypeName","src":"15069:7:28"}],"id":2221,"name":"ArrayTypeName","src":"15069:9:28"}],"id":2222,"name":"VariableDeclaration","src":"15069:36:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2223,"name":"ElementaryTypeName","src":"15112:7:28"}],"id":2224,"name":"ArrayTypeName","src":"15112:9:28"}],"id":2225,"name":"NewExpression","src":"15108:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":2226,"name":"Identifier","src":"15122:18:28"}],"id":2227,"name":"FunctionCall","src":"15108:33:28"}],"id":2228,"name":"VariableDeclarationStatement","src":"15069:72:28"},{"attributes":{"assignments":[2230]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":2270,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2229,"name":"ElementaryTypeName","src":"15151:7:28"}],"id":2230,"name":"VariableDeclaration","src":"15151:23:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2231,"name":"Literal","src":"15177:1:28"}],"id":2232,"name":"VariableDeclarationStatement","src":"15151:27:28"},{"children":[{"attributes":{"assignments":[2234]},"children":[{"attributes":{"constant":false,"name":"i","scope":2267,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2233,"name":"ElementaryTypeName","src":"15193:7:28"}],"id":2234,"name":"VariableDeclaration","src":"15193:9:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2235,"name":"Literal","src":"15205:1:28"}],"id":2236,"name":"VariableDeclarationStatement","src":"15193:13:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"uint256","value":"i"},"id":2237,"name":"Identifier","src":"15208:1:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":2238,"name":"Identifier","src":"15212:18:28"}],"id":2239,"name":"MemberAccess","src":"15212:25:28"}],"id":2240,"name":"BinaryOperation","src":"15208:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"uint256","value":"i"},"id":2241,"name":"Identifier","src":"15239:1:28"}],"id":2242,"name":"UnaryOperation","src":"15239:3:28"}],"id":2243,"name":"ExpressionStatement","src":"15239:3:28"},{"children":[{"attributes":{"assignments":[2245]},"children":[{"attributes":{"constant":false,"name":"token","scope":2266,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2244,"name":"ElementaryTypeName","src":"15258:7:28"}],"id":2245,"name":"VariableDeclaration","src":"15258:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":2246,"name":"Identifier","src":"15274:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"uint256","value":"i"},"id":2247,"name":"Identifier","src":"15293:1:28"}],"id":2248,"name":"IndexAccess","src":"15274:21:28"}],"id":2249,"name":"VariableDeclarationStatement","src":"15258:37:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2250,"name":"Identifier","src":"15313:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2245,"type":"address","value":"token"},"id":2251,"name":"Identifier","src":"15327:5:28"}],"id":2252,"name":"IndexAccess","src":"15313:20:28"}],"id":2253,"name":"MemberAccess","src":"15313:31:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2222,"type":"address[] memory","value":"redeemableAddresses"},"id":2254,"name":"Identifier","src":"15364:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2230,"type":"uint256","value":"redeemableIndex"},"id":2255,"name":"Identifier","src":"15384:15:28"}],"id":2256,"name":"IndexAccess","src":"15364:36:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2245,"type":"address","value":"token"},"id":2257,"name":"Identifier","src":"15403:5:28"}],"id":2258,"name":"Assignment","src":"15364:44:28"}],"id":2259,"name":"ExpressionStatement","src":"15364:44:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2230,"type":"uint256","value":"redeemableIndex"},"id":2260,"name":"Identifier","src":"15426:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2261,"name":"Literal","src":"15445:1:28"}],"id":2262,"name":"Assignment","src":"15426:20:28"}],"id":2263,"name":"ExpressionStatement","src":"15426:20:28"}],"id":2264,"name":"Block","src":"15346:115:28"}],"id":2265,"name":"IfStatement","src":"15309:152:28"}],"id":2266,"name":"Block","src":"15244:227:28"}],"id":2267,"name":"ForStatement","src":"15188:283:28"},{"attributes":{"functionReturnParameters":2218},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2222,"type":"address[] memory","value":"redeemableAddresses"},"id":2268,"name":"Identifier","src":"15487:19:28"}],"id":2269,"name":"Return","src":"15480:26:28"}],"id":2270,"name":"Block","src":"15059:454:28"}],"id":2271,"name":"FunctionDefinition","src":"14990:523:28"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2294,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2272,"name":"ElementaryTypeName","src":"15727:7:28"}],"id":2273,"name":"VariableDeclaration","src":"15727:14:28"},{"attributes":{"constant":false,"name":"_methodId","scope":2294,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2274,"name":"ElementaryTypeName","src":"15743:6:28"}],"id":2275,"name":"VariableDeclaration","src":"15743:16:28"}],"id":2276,"name":"ParameterList","src":"15726:34:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2294,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2277,"name":"ElementaryTypeName","src":"15782:4:28"}],"id":2278,"name":"VariableDeclaration","src":"15782:4:28"}],"id":2279,"name":"ParameterList","src":"15781:6:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2280,"name":"Identifier","src":"15798:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2281,"name":"Identifier","src":"15806:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2273,"type":"address","value":"_token"},"id":2282,"name":"Identifier","src":"15820:6:28"}],"id":2283,"name":"IndexAccess","src":"15806:21:28"}],"id":2284,"name":"MemberAccess","src":"15806:31:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":2285,"name":"Literal","src":"15839:20:28"}],"id":2286,"name":"FunctionCall","src":"15798:62:28"}],"id":2287,"name":"ExpressionStatement","src":"15798:62:28"},{"attributes":{"functionReturnParameters":2279},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":2288,"name":"Identifier","src":"15878:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2275,"type":"bytes4","value":"_methodId"},"id":2289,"name":"Identifier","src":"15897:9:28"}],"id":2290,"name":"IndexAccess","src":"15878:29:28"}],"id":2291,"name":"TupleExpression","src":"15877:31:28"}],"id":2292,"name":"Return","src":"15870:38:28"}],"id":2293,"name":"Block","src":"15788:127:28"}],"id":2294,"name":"FunctionDefinition","src":"15695:220:28"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":2307,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2295,"name":"ElementaryTypeName","src":"16104:6:28"}],"id":2296,"name":"VariableDeclaration","src":"16104:16:28"}],"id":2297,"name":"ParameterList","src":"16103:18:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2307,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2298,"name":"ElementaryTypeName","src":"16145:4:28"}],"id":2299,"name":"VariableDeclaration","src":"16145:4:28"}],"id":2300,"name":"ParameterList","src":"16144:6:28"},{"children":[{"attributes":{"functionReturnParameters":2300},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":2301,"name":"Identifier","src":"16169:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2296,"type":"bytes4","value":"_methodId"},"id":2302,"name":"Identifier","src":"16188:9:28"}],"id":2303,"name":"IndexAccess","src":"16169:29:28"}],"id":2304,"name":"TupleExpression","src":"16168:31:28"}],"id":2305,"name":"Return","src":"16161:38:28"}],"id":2306,"name":"Block","src":"16151:55:28"}],"id":2307,"name":"FunctionDefinition","src":"16070:136:28"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2308,"name":"ParameterList","src":"16342:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2315,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2309,"name":"ElementaryTypeName","src":"16368:7:28"}],"id":2310,"name":"VariableDeclaration","src":"16368:7:28"}],"id":2311,"name":"ParameterList","src":"16367:9:28"},{"children":[{"attributes":{"functionReturnParameters":2311},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":2312,"name":"Identifier","src":"16394:18:28"}],"id":2313,"name":"Return","src":"16387:25:28"}],"id":2314,"name":"Block","src":"16377:42:28"}],"id":2315,"name":"FunctionDefinition","src":"16316:103:28"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2316,"name":"ParameterList","src":"16570:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2323,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2317,"name":"ElementaryTypeName","src":"16596:7:28"}],"id":2318,"name":"VariableDeclaration","src":"16596:7:28"}],"id":2319,"name":"ParameterList","src":"16595:9:28"},{"children":[{"attributes":{"functionReturnParameters":2319},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1560,"type":"address","value":"_stablecoin"},"id":2320,"name":"Identifier","src":"16622:11:28"}],"id":2321,"name":"Return","src":"16615:18:28"}],"id":2322,"name":"Block","src":"16605:35:28"}],"id":2323,"name":"FunctionDefinition","src":"16551:89:28"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2324,"name":"ParameterList","src":"16774:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2331,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2325,"name":"ElementaryTypeName","src":"16800:7:28"}],"id":2326,"name":"VariableDeclaration","src":"16800:7:28"}],"id":2327,"name":"ParameterList","src":"16799:9:28"},{"children":[{"attributes":{"functionReturnParameters":2327},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1562,"type":"bytes32","value":"_oracleNode"},"id":2328,"name":"Identifier","src":"16826:11:28"}],"id":2329,"name":"Return","src":"16819:18:28"}],"id":2330,"name":"Block","src":"16809:35:28"}],"id":2331,"name":"FunctionDefinition","src":"16755:89:28"}],"id":2332,"name":"ContractDefinition","src":"1939:14907:28"}],"id":2333,"name":"SourceUnit","src":"774:16073:28"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:6:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:7:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:7;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:7;-1:-1:-1;;;;;2567:10:7;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:7;;;;;;","srcmap-runtime":"1897:2174:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:13;;;;;;;;;:::i;:::-;;573:184:17;;;;;;;;;:::i;1721:953:14:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:10;;;;;;;;;:::i;:::-;;;;;;;;;612:169:16;;;;;;;;;:::i;505:166:12:-;;;;;;;;;:::i;980:228:11:-;;;;;;;;;:::i;3269:231:7:-;;;;;;;;;:::i;4901:153:13:-;;;;;;;;;:::i;974:127:17:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:13;;;;;;;;;:::i;582:292:10:-;;;;;;;;;:::i;844:101:15:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:11:-;;;;;;;;;:::i;4519:168:13:-;;;;;;;;;:::i;3703:366:7:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:13;;;;;;;;;:::i;838:108:12:-;;;;;;;;;:::i;1023:133:16:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:13;;;;;;;;;:::i;681:140:11:-;;;;;;;;;:::i;858:226:14:-;;;;;;;;;:::i;1514:127:11:-;;;;;;;;;:::i;2320:80:7:-;;;;;;;;;:::i;1107:169:17:-;1174:4;-1:-1:-1;;;;;;1197:32:17;;-1:-1:-1;;;1197:32:17;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:13:-;2932:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:13;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:13;;:18;-1:-1:-1;;3185:18:13;:15;:18;;-1:-1:-1;3185:18:13:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:13;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:13;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:13;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:13;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:13;;4052:6;;-1:-1:-1;4060:20:13;;;;-1:-1:-1;4082:17:13;4012:11;:88::i;:::-;400:1:9;;;;;2854:1263:13;;;;:::o;573:184:17:-;668:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:17;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:14:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:14;;;;;;;;;;-1:-1:-1;;;;;1849:29:14;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:14;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:14;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:14;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:14;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:14;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:14;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:14;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:14;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:14;;-1:-1:-1;2373:103:14;-1:-1:-1;2489:8:14;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:14;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:14;;-1:-1:-1;;;1721:953:14;;;;;:::o;1195:454:10:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:10;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:10;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:10;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:10;-1:-1:-1;1195:454:10;;;;;;:::o;612:169:16:-;687:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:16;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:16;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:12:-;584:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:12;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:11;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:11:o;3269:231:7:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:7;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:7;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:13:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:17:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:17;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:13:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:10:-;674:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:10;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:10;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:15:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:15;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:11;1302:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:11;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:13:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:7;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:7;-1:-1:-1;3844:6:7;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:7;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:7;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:7;;3840:199;;;-1:-1:-1;3703:366:7;;;;:::o;5193:128:13:-;5247:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:13;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:12:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:16;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:13:-;5617:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:13;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:13;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:13;;:16;-1:-1:-1;5701:4:13;;-1:-1:-1;5701:4:13;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:9;5541:225:13;;;;:::o;681:140:11:-;743:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:11;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:14:-;955:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:14;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:14;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:14;-1:-1:-1;;;;;971:43:14;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:11:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:11;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:16:-;1229:4;-1:-1:-1;;;;;;1252:34:16;;-1:-1:-1;;;1252:34:16;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:7:-;3596:3;;:15;;-1:-1:-1;;;3596:15:7;;3564:4;;;;-1:-1:-1;;;;;3596:3:7;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:7;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:7;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:7;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:7;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:7;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:8:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:6:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:13:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:13;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:13;;;;;;-1:-1:-1;;6760:43:13;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:13;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:13;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:8:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:8;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:8;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:8;;:::o;414:204:9:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:9;576:10;570:17;-1:-1:-1;;;566:36:9;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:9;87:34:-1;-1:-1;;;;;;776:20:9;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:9;743:64::o;951:169:15:-;1018:4;-1:-1:-1;;;;;;1041:32:15;;-1:-1:-1;;;1041:32:15;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:8:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:8;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:8:o;8685:393:6:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:6;87:34:-1;135:17;;-1:-1;8858:14:6;-1:-1:-1;8839:33:6;-1:-1:-1;8960:2:6;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:6;;8685:393;-1:-1:-1;;;;;8685:393:6:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:6:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:6;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:6;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:14:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:14;;:11;-1:-1:-1;;;;;2770:37:14;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:6:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:6;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:6;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:6;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:6;;513:2;499:26;489:42;;468:73::o;6035:245:13:-;6102:4;-1:-1:-1;;;;;;6125:38:13;;-1:-1:-1;;;6125:38:13;;:93;;-1:-1:-1;;;;;;;6182:36:13;;-1:-1:-1;;;6182:36:13;6125:93;:148;;;;6237:36;6261:11;1019:4:12;-1:-1:-1;;;;;;1042:40:12;;-1:-1:-1;;;1042:40:12;;:80;;;1086:36;1110:11;1714:4:11;-1:-1:-1;;;;;;1737:32:11;;-1:-1:-1;;;1737:32:11;;:71;;-1:-1:-1;;;;;;;1773:35:11;;-1:-1:-1;;;1773:35:11;1737:71;:111;;;;1812:36;1836:11;1722:4:10;-1:-1:-1;;;;;;1745:31:10;;-1:-1:-1;;;1745:31:10;;:71;;-1:-1:-1;;;;;;;;;;204:32:9;;;1780:36:10;114:129:9:o;1897:2174:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:7;;;-1:-1:-1;1897:2174:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:8:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:18:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:18:-;;;;;;;;"},"holder.sol:Holder":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b50604051610f87380380610f878339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091818180156100975760018190555b506002555050600380546001600160a01b0319166001600160a01b03939093169290921790915550610eb9806100ce6000396000f3fe6080604052600436106100555760003560e01c806327810b6e1461009157806340f6a70f146100c25780637d73b23114610163578063877337b0146101785780639dc29fac1461019f578063e2b4ce97146101d8575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b34801561009d57600080fd5b506100a66101ed565b604080516001600160a01b039092168252519081900360200190f35b3480156100ce57600080fd5b5061014f600480360360408110156100e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184602083028401116401000000008311171561014457600080fd5b5090925090506101fc565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506100a661039f565b34801561018457600080fd5b5061018d6103ae565b60408051918252519081900360200190f35b3480156101ab57600080fd5b5061014f600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356103b4565b3480156101e457600080fd5b5061018d6105b3565b6003546001600160a01b031690565b6000610207336105b9565b610251576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103945761028084848381811061026b57fe5b905060200201356001600160a01b031661064d565b156102d2576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006102f9308686858181106102e457fe5b905060200201356001600160a01b0316610666565b9050801561038b576103278686868581811061031157fe5b905060200201356001600160a01b031683610711565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035557fe5b604080516001600160a01b0395861681526020928302949094013594909416908301525080820184905290519081900360600190a15b50600101610254565b506001949350505050565b6000546001600160a01b031690565b60025490565b6003546000906001600160a01b031633146104005760405162461bcd60e51b8152600401808060200182810382526021815260200180610e646021913960400191505060405180910390fd5b8161040d575060016105ad565b600061049983600360009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50519063ffffffff61077a16565b905060606104a56107db565b905060005b81518110156105a55760006104d2308484815181106104c557fe5b6020026020010151610666565b9050801561059c5760006104fc856104f0848a63ffffffff6108ee16565b9063ffffffff61094716565b905061051c8885858151811061050e57fe5b602002602001015183610711565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061054a57fe5b60200260200101518360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104aa565b506001925050505b92915050565b60015490565b60006105c66001546109b1565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061b57600080fd5b505afa15801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b505192915050565b60008061065983610a73565b5098975050505050505050565b60006001600160a01b0382161561070057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b505190506105ad565b506001600160a01b038216316105ad565b6001600160a01b03821661075b576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610755573d6000803e3d6000fd5b50610775565b6107756001600160a01b038316848363ffffffff610c0716565b505050565b6000828201838110156107d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60606107e86002546109b1565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561085d57600080fd5b810190808051604051939291908464010000000082111561087d57600080fd5b90830190602082018581111561089257600080fd5b82518660208202830111640100000000821117156108af57600080fd5b82525081516020918201928201910280838360005b838110156108dc5781810151838201526020016108c4565b50505050905001604052505050905090565b6000826108fd575060006105ad565b8282028284828161090a57fe5b04146107d45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e196021913960400191505060405180910390fd5b600080821161099d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816109a857fe5b04949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109fe57600080fd5b505afa158015610a12573d6000803e3d6000fd5b505050506040513d6020811015610a2857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561061b57600080fd5b6060600080600080600080610a896002546109b1565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610b1b57600080fd5b8101908080516040519392919084640100000000821115610b3b57600080fd5b908301906020820185811115610b5057600080fd5b8251640100000000811182820188101715610b6a57600080fd5b82525081516020918201929091019080838360005b83811015610b97578181015183820152602001610b7f565b50505050905090810190601f168015610bc45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610775908490610c66826001600160a01b0316610e12565b610cb7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610cf55780518252601f199092019160209182019101610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d57576040519150601f19603f3d011682016040523d82523d6000602084013e610d5c565b606091505b509150915081610db3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e0c57808060200190516020811015610dcf57600080fd5b5051610e0c5760405162461bcd60e51b815260040180806020018281038252602a815260200180610e3a602a913960400191505060405180910390fd5b50505050565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a265627a7a72315820fb5b72f720dd23afc2fab42dd0a74ea84409296144790e2f0005efbe1b0dae4564736f6c63430005110032","bin-runtime":"6080604052600436106100555760003560e01c806327810b6e1461009157806340f6a70f146100c25780637d73b23114610163578063877337b0146101785780639dc29fac1461019f578063e2b4ce97146101d8575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b34801561009d57600080fd5b506100a66101ed565b604080516001600160a01b039092168252519081900360200190f35b3480156100ce57600080fd5b5061014f600480360360408110156100e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184602083028401116401000000008311171561014457600080fd5b5090925090506101fc565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506100a661039f565b34801561018457600080fd5b5061018d6103ae565b60408051918252519081900360200190f35b3480156101ab57600080fd5b5061014f600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356103b4565b3480156101e457600080fd5b5061018d6105b3565b6003546001600160a01b031690565b6000610207336105b9565b610251576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103945761028084848381811061026b57fe5b905060200201356001600160a01b031661064d565b156102d2576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006102f9308686858181106102e457fe5b905060200201356001600160a01b0316610666565b9050801561038b576103278686868581811061031157fe5b905060200201356001600160a01b031683610711565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035557fe5b604080516001600160a01b0395861681526020928302949094013594909416908301525080820184905290519081900360600190a15b50600101610254565b506001949350505050565b6000546001600160a01b031690565b60025490565b6003546000906001600160a01b031633146104005760405162461bcd60e51b8152600401808060200182810382526021815260200180610e646021913960400191505060405180910390fd5b8161040d575060016105ad565b600061049983600360009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50519063ffffffff61077a16565b905060606104a56107db565b905060005b81518110156105a55760006104d2308484815181106104c557fe5b6020026020010151610666565b9050801561059c5760006104fc856104f0848a63ffffffff6108ee16565b9063ffffffff61094716565b905061051c8885858151811061050e57fe5b602002602001015183610711565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061054a57fe5b60200260200101518360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104aa565b506001925050505b92915050565b60015490565b60006105c66001546109b1565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061b57600080fd5b505afa15801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b505192915050565b60008061065983610a73565b5098975050505050505050565b60006001600160a01b0382161561070057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b505190506105ad565b506001600160a01b038216316105ad565b6001600160a01b03821661075b576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610755573d6000803e3d6000fd5b50610775565b6107756001600160a01b038316848363ffffffff610c0716565b505050565b6000828201838110156107d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60606107e86002546109b1565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561085d57600080fd5b810190808051604051939291908464010000000082111561087d57600080fd5b90830190602082018581111561089257600080fd5b82518660208202830111640100000000821117156108af57600080fd5b82525081516020918201928201910280838360005b838110156108dc5781810151838201526020016108c4565b50505050905001604052505050905090565b6000826108fd575060006105ad565b8282028284828161090a57fe5b04146107d45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e196021913960400191505060405180910390fd5b600080821161099d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816109a857fe5b04949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109fe57600080fd5b505afa158015610a12573d6000803e3d6000fd5b505050506040513d6020811015610a2857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561061b57600080fd5b6060600080600080600080610a896002546109b1565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610b1b57600080fd5b8101908080516040519392919084640100000000821115610b3b57600080fd5b908301906020820185811115610b5057600080fd5b8251640100000000811182820188101715610b6a57600080fd5b82525081516020918201929091019080838360005b83811015610b97578181015183820152602001610b7f565b50505050905090810190601f168015610bc45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610775908490610c66826001600160a01b0316610e12565b610cb7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610cf55780518252601f199092019160209182019101610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d57576040519150601f19603f3d011682016040523d82523d6000602084013e610d5c565b606091505b509150915081610db3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e0c57808060200190516020811015610dcf57600080fd5b5051610e0c5760405162461bcd60e51b815260040180806020018281038252602a815260200180610e3a602a913960400191505060405180910390fd5b50505050565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a265627a7a72315820fb5b72f720dd23afc2fab42dd0a74ea84409296144790e2f0005efbe1b0dae4564736f6c63430005110032","srcmap":"1250:3571:19:-;;;1122:66:23;1272:58;;2201:288:19;5:2:-1;;;;30:1;27;20:12;5:2;2201:288:19;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2201:288:19;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;2201:288:19;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1341:19:26;:42;-1:-1:-1;;2456:7:19;:26;;-1:-1:-1;;;;;;2456:26:19;-1:-1:-1;;;;;2456:26:19;;;;;;;;;;;-1:-1:-1;1250:3571:19;;;-1:-1:-1;1250:3571:19;;","srcmap-runtime":"1250:3571:19:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2587:31;;;2596:10;2587:31;;2608:9;2587:31;;;;;;;;;;;;;;;;;1250:3571;4738:81;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4738:81:19;;;:::i;:::-;;;;-1:-1:-1;;;;;4738:81:19;;;;;;;;;;;;;;3956:682;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3956:682:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;3956:682:19;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;3956:682:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3956:682:19;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;3956:682:19;;-1:-1:-1;3956:682:19;-1:-1:-1;3956:682:19;:::i;:::-;;;;;;;;;;;;;;;;;;1364:91:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;:::-;;;;;;;;;;;;;;;;2850:856:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2850:856:19;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2850:856:19;;;;;;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;4738:81:19:-;4805:7;;-1:-1:-1;;;;;4805:7:19;4738:81;:::o;3956:682::-;4082:4;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;4103:9:19;4098:512;4118:34;;;4098:512;;;4226:46;4245:23;;4269:1;4245:26;;;;;;;;;;;;;-1:-1:-1;;;;;4245:26:19;4226:18;:46::i;:::-;4225:47;4217:89;;;;;-1:-1:-1;;;4217:89:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;4320:20;4343:51;4360:4;4367:23;;4391:1;4367:26;;;;;;;;;;;;;-1:-1:-1;;;;;4367:26:19;4343:8;:51::i;:::-;4320:74;-1:-1:-1;4412:16:19;;4408:192;;4448:60;4462:3;4467:23;;4491:1;4467:26;;;;;;;;;;;;;-1:-1:-1;;;;;4467:26:19;4495:12;4448:13;:60::i;:::-;4531:54;4539:3;4544:23;;4568:1;4544:26;;;;;;;4531:54;;;-1:-1:-1;;;;;4531:54:19;;;;;4544:26;;;;;;;;;;;;;4531:54;;;;-1:-1:-1;4531:54:19;;;;;;;;;;;;;;;;4408:192;-1:-1:-1;4154:3:19;;4098:512;;;-1:-1:-1;4627:4:19;;3956:682;-1:-1:-1;;;;3956:682:19:o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;1514:105:26:-;1593:19;;1514:105;:::o;2850:856:19:-;1683:7;;2931:4;;-1:-1:-1;;;;;1683:7:19;1669:10;:21;1661:67;;;;-1:-1:-1;;;1661:67:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2951:12;2947:54;;-1:-1:-1;2986:4:19;2979:11;;2947:54;3078:14;3095:45;3132:7;3103;;;;;;;;;-1:-1:-1;;;;;3103:7:19;-1:-1:-1;;;;;3095:30:19;;:32;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3095:32:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3095:32:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3095:32:19;;:45;:36;:45;:::i;:::-;3078:62;;3150:36;3189:19;:17;:19::i;:::-;3150:58;-1:-1:-1;3223:9:19;3218:460;3242:19;:26;3238:1;:30;3218:460;;;3289:25;3317:47;3334:4;3341:19;3361:1;3341:22;;;;;;;;;;;;;;3317:8;:47::i;:::-;3289:75;-1:-1:-1;3382:21:19;;3378:290;;3423:24;3450:42;3485:6;3450:30;:17;3472:7;3450:30;:21;:30;:::i;:::-;:34;:42;:34;:42;:::i;:::-;3423:69;;3510:60;3524:3;3529:19;3549:1;3529:22;;;;;;;;;;;;;;3553:16;3510:13;:60::i;:::-;3593;3607:3;3612:19;3632:1;3612:22;;;;;;;;;;;;;;3636:16;3593:60;;;;-1:-1:-1;;;;;3593:60:19;-1:-1:-1;;;;;3593:60:19;;;;;;-1:-1:-1;;;;;3593:60:19;-1:-1:-1;;;;;3593:60:19;;;;;;;;;;;;;;;;;;;;;;3378:290;;-1:-1:-1;3270:3:19;;3218:460;;;;3695:4;3688:11;;;;1738:1;2850:856;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;2554:148::-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4903:162:26:-;4966:4;4993:15;5014:17;5028:2;5014:13;:17::i;:::-;-1:-1:-1;4982:49:26;4903:162;-1:-1:-1;;;;;;;;4903:162:26:o;1207:245:20:-;1282:7;-1:-1:-1;;;;;1305:20:20;;;1301:145;;1354:6;-1:-1:-1;;;;;1348:23:20;;1372:8;1348:33;;;;;;;;;;;;;-1:-1:-1;;;;;1348:33:20;-1:-1:-1;;;;;1348:33:20;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1348:33:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:20;;-1:-1:-1;1341:40:20;;1301:145;-1:-1:-1;;;;;;1419:16:20;;;1412:23;;1366:289:27;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;3511:162:26:-;3563:16;3614:32;3626:19;;3614:11;:32::i;:::-;-1:-1:-1;;;;;3598:66:26;;:68;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3598:68:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3598:68:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3598:68:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3598:68:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;261:11;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3598:68:26;;421:4:-1;412:14;;;;3598:68:26;;;;;412:14:-1;3598:68:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3598:68:26;;;;;;;;;;;3591:75;;3511:162;:::o;1693:458:4:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:4;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:4:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:26;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:26;-1:-1:-1;;;;;2306:66:26;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:20:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:20;;;;;;;","srcmap-runtime":"898:556:20:-;;;;;"},"internals/burner.sol:IBurner":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","srcmap":"1939:14907:28:-;;;1122:66:23;1272:58;;4758:506:28;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:28;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:28;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:28;:26;;;;-1:-1:-1;4995:11:28;:33;;-1:-1:-1;;;;;4995:33:28;;;-1:-1:-1;;;;;;4995:33:28;;;;;;;;;-1:-1:-1;5083:18:28;:28;;;:35;;-1:-1:-1;;5083:35:28;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:28;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:28:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:28;-1:-1:-1;;;;;;16070:136:28;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:28;-1:-1:-1;;;;;13314:334:28;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:28;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:28;;-1:-1:-1;6040:1806:28;-1:-1:-1;6040:1806:28;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:28;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:28;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:28;;-1:-1:-1;;;;;15695:220:28;;;;;-1:-1:-1;;;;;;15695:220:28;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:28;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:28;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:28;;-1:-1:-1;7973:1237:28;-1:-1:-1;7973:1237:28;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:28;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:28;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:28;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:28;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:28;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:28;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:28;;-1:-1:-1;9368:1399:28;-1:-1:-1;9368:1399:28;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:28;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:28;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:28:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:28;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:28;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:28;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:28;;;:88;;;;-1:-1:-1;6442:35:28;;;6389:88;:142;;;;-1:-1:-1;6497:34:28;;;6389:142;:196;;;;-1:-1:-1;6551:34:28;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:28;6841:25;;-1:-1:-1;6841:25:28;;;;;;;;-1:-1:-1;6841:25:28;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:28;-1:-1:-1;;;;;7084:25:28;-1:-1:-1;;;;;7084:25:28;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:28;;;;;-1:-1:-1;;7084:306:28;;;-1:-1:-1;;7084:306:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:28;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:28;-1:-1:-1;;;;;7486:10:28;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:28;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:28;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:28;-1:-1:-1;;;;;7742:87:28;;;;;;-1:-1:-1;;;;;7742:87:28;-1:-1:-1;;;;;7742:87:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:28;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:28;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:28;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:28;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:28;-1:-1:-1;15069:72:28;-1:-1:-1;15151:23:28;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:28;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:28;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:28;;;-1:-1:-1;;;;;15364:44:28;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:28;;15188:283;;;-1:-1:-1;15487:19:28;;-1:-1:-1;;14990:523:28;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:28;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:28;;;;;;;;;;;;-1:-1:-1;;;11432:66:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:28;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:28;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:28;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:28;;;;;;;;;;;;-1:-1:-1;;;15798:62:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:28;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:28:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:28;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:28;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:28;;8363:65;;;;;-1:-1:-1;;;8363:65:28;;;;;;;;;;;;-1:-1:-1;;;8363:65:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:28;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:28;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:28;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:28;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:28;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:28;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:28;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:28;;;;;-1:-1:-1;;;;;8926:76:28;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:28;:27;;;;;-1:-1:-1;;9075:27:28;;;:::i;:::-;-1:-1:-1;9162:31:28;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:28;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:28;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:28:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:28;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:28;;;;;;;;;;;;-1:-1:-1;;;10969:66:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:28;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:28;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:28;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:28;;:23;-1:-1:-1;;9801:23:28;:20;:23;;-1:-1:-1;9801:23:28:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:28;;;;;;;;;;;;-1:-1:-1;;;9877:72:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:28;;-1:-1:-1;;;10048:18:28;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:28;;:24;-1:-1:-1;;10141:24:28;:21;:24;;-1:-1:-1;10141:24:28:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:28;;-1:-1:-1;;;10187:27:28;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:28;;:34;-1:-1:-1;;10400:34:28;:21;:34;;-1:-1:-1;10400:34:28:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:28;;:34;-1:-1:-1;;10436:34:28;:21;:34;;-1:-1:-1;10436:34:28:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:28;;:29;-1:-1:-1;;10689:29:28;:21;:29;;-1:-1:-1;10689:29:28:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:28;;:29;-1:-1:-1;;10720:29:28;:21;:29;;-1:-1:-1;10720:29:28:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:28;-1:-1:-1;;;;;5399:27:28;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:28;;;;;;;;;;;;-1:-1:-1;;;5367:86:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:28;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:28;;;;;;;;;;;;-1:-1:-1;;;12130:66:28;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:28;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:28:-;16622:11;;-1:-1:-1;;;;;16622:11:28;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:18:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:18:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:18;87:34:-1;135:17;;-1:-1;5912:21:18;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:18;5807:265;-1:-1:-1;;5807:265:18:o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:18;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:18;4078:48;;-1:-1:-1;3968:170:18;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:18;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:18;4378:24;;-1:-1:-1;4293:121:18;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:18;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:18:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:18;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:18;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:28;;;-1:-1:-1;1939:14907:28;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","holder.sol","internals/balanceable.sol","internals/burner.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","tokenWhitelist.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[1299],"IController":[864]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":847,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":2709,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":1300,"symbolAliases":[null],"unitAlias":""},"id":848,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":846,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":1300,"symbolAliases":[null],"unitAlias":""},"id":849,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[864],"name":"IController","scope":1300},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":864,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":850,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":851,"name":"VariableDeclaration","src":"1015:7:0"}],"id":852,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":856,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":853,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":854,"name":"VariableDeclaration","src":"1047:4:0"}],"id":855,"name":"ParameterList","src":"1046:6:0"}],"id":856,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":864,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":863,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":857,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":858,"name":"VariableDeclaration","src":"1076:7:0"}],"id":859,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":863,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":860,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":861,"name":"VariableDeclaration","src":"1108:4:0"}],"id":862,"name":"ParameterList","src":"1107:6:0"}],"id":863,"name":"FunctionDefinition","src":"1059:55:0"}],"id":864,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[845,864,2708],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[1299,845,2708,864],"name":"Controller","scope":1300},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":864,"type":"contract IController"},"id":865,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":866,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":2708,"type":"contract Ownable"},"id":867,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":868,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":845,"type":"contract Transferrable"},"id":869,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":870,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":876,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":871,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":872,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":876,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":873,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":874,"name":"VariableDeclaration","src":"1564:19:0"}],"id":875,"name":"ParameterList","src":"1546:38:0"}],"id":876,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":882,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":877,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":878,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":882,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":879,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":880,"name":"VariableDeclaration","src":"1631:19:0"}],"id":881,"name":"ParameterList","src":"1613:38:0"}],"id":882,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":888,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":883,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":884,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":888,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":885,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":886,"name":"VariableDeclaration","src":"1692:14:0"}],"id":887,"name":"ParameterList","src":"1674:33:0"}],"id":888,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":889,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":890,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":891,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":892,"name":"VariableDeclaration","src":"1749:14:0"}],"id":893,"name":"ParameterList","src":"1731:33:0"}],"id":894,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":902,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":895,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":896,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":902,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":897,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":898,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":902,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":899,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":900,"name":"VariableDeclaration","src":"1814:15:0"}],"id":901,"name":"ParameterList","src":"1784:46:0"}],"id":902,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":903,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":904,"name":"VariableDeclaration","src":"1851:15:0"}],"id":905,"name":"ParameterList","src":"1850:17:0"}],"id":906,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":910,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":907,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":908,"name":"VariableDeclaration","src":"1887:15:0"}],"id":909,"name":"ParameterList","src":"1886:17:0"}],"id":910,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":1299,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":911,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":912,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":913,"name":"Mapping","src":"1910:24:0"}],"id":914,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":1299,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":915,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":916,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":1299,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":917,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":918,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":919,"name":"Mapping","src":"1991:24:0"}],"id":920,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":1299,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":921,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":922,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":1299,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":923,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":924,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":934,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":925,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":926,"name":"VariableDeclaration","src":"2251:30:0"}],"id":927,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":932,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2708,"type":"type(contract Ownable)","value":"Ownable"},"id":928,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":926,"type":"address payable","value":"_ownerAddress_"},"id":929,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":930,"name":"Literal","src":"2314:5:0"}],"id":931,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":933,"name":"Block","src":"2321:2:0"}],"id":934,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":935,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":936,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":937,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":938,"name":"Identifier","src":"2431:3:0"}],"id":939,"name":"MemberAccess","src":"2431:10:0"}],"id":940,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":941,"name":"Literal","src":"2444:21:0"}],"id":942,"name":"FunctionCall","src":"2414:52:0"}],"id":943,"name":"ExpressionStatement","src":"2414:52:0"},{"id":944,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":945,"name":"Block","src":"2404:80:0"}],"id":946,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":947,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":948,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2707,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":949,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":950,"name":"Identifier","src":"2585:3:0"}],"id":951,"name":"MemberAccess","src":"2585:10:0"}],"id":952,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":953,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":954,"name":"Identifier","src":"2609:3:0"}],"id":955,"name":"MemberAccess","src":"2609:10:0"}],"id":956,"name":"IndexAccess","src":"2600:20:0"}],"id":957,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":958,"name":"Literal","src":"2622:30:0"}],"id":959,"name":"FunctionCall","src":"2568:85:0"}],"id":960,"name":"ExpressionStatement","src":"2568:85:0"},{"id":961,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":962,"name":"Block","src":"2558:113:0"}],"id":963,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":964,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":965,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1078,"type":"function () view returns (bool)","value":"isStopped"},"id":966,"name":"Identifier","src":"2765:9:0"}],"id":967,"name":"FunctionCall","src":"2765:11:0"}],"id":968,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":969,"name":"Literal","src":"2778:23:0"}],"id":970,"name":"FunctionCall","src":"2756:46:0"}],"id":971,"name":"ExpressionStatement","src":"2756:46:0"},{"id":972,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":973,"name":"Block","src":"2746:74:0"}],"id":974,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":988,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":975,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":976,"name":"VariableDeclaration","src":"2961:16:0"}],"id":977,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":982,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":978,"name":"Identifier","src":"2988:9:0"}],"id":979,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":980,"name":"Identifier","src":"2998:10:0"}],"id":981,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1132,"type":"function (address)","value":"_addAdmin"},"id":983,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":976,"type":"address","value":"_account"},"id":984,"name":"Identifier","src":"3029:8:0"}],"id":985,"name":"FunctionCall","src":"3019:19:0"}],"id":986,"name":"ExpressionStatement","src":"3019:19:0"}],"id":987,"name":"Block","src":"3009:36:0"}],"id":988,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1000,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":989,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":990,"name":"VariableDeclaration","src":"3195:16:0"}],"id":991,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":994,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":992,"name":"Identifier","src":"3222:9:0"}],"id":993,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1160,"type":"function (address)","value":"_removeAdmin"},"id":995,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":990,"type":"address","value":"_account"},"id":996,"name":"Identifier","src":"3255:8:0"}],"id":997,"name":"FunctionCall","src":"3242:22:0"}],"id":998,"name":"ExpressionStatement","src":"3242:22:0"}],"id":999,"name":"Block","src":"3232:39:0"}],"id":1000,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":1299,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1001,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1008,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1002,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":1003,"name":"VariableDeclaration","src":"3368:7:0"}],"id":1004,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":1004},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":916,"type":"uint256","value":"_adminCount"},"id":1005,"name":"Identifier","src":"3394:11:0"}],"id":1006,"name":"Return","src":"3387:18:0"}],"id":1007,"name":"Block","src":"3377:35:0"}],"id":1008,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1022,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1009,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":1010,"name":"VariableDeclaration","src":"3573:16:0"}],"id":1011,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1016,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1012,"name":"Identifier","src":"3600:16:0"}],"id":1013,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":1014,"name":"Identifier","src":"3617:10:0"}],"id":1015,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1214,"type":"function (address)","value":"_addController"},"id":1017,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1010,"type":"address","value":"_account"},"id":1018,"name":"Identifier","src":"3653:8:0"}],"id":1019,"name":"FunctionCall","src":"3638:24:0"}],"id":1020,"name":"ExpressionStatement","src":"3638:24:0"}],"id":1021,"name":"Block","src":"3628:41:0"}],"id":1022,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1034,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1023,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":1024,"name":"VariableDeclaration","src":"3839:16:0"}],"id":1025,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1028,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1026,"name":"Identifier","src":"3866:16:0"}],"id":1027,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1242,"type":"function (address)","value":"_removeController"},"id":1029,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1024,"type":"address","value":"_account"},"id":1030,"name":"Identifier","src":"3911:8:0"}],"id":1031,"name":"FunctionCall","src":"3893:27:0"}],"id":1032,"name":"ExpressionStatement","src":"3893:27:0"}],"id":1033,"name":"Block","src":"3883:44:0"}],"id":1034,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":1299,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1035,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1042,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1036,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":1037,"name":"VariableDeclaration","src":"4072:7:0"}],"id":1038,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":1038},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":922,"type":"uint256","value":"_controllerCount"},"id":1039,"name":"Identifier","src":"4098:16:0"}],"id":1040,"name":"Return","src":"4091:23:0"}],"id":1041,"name":"Block","src":"4081:40:0"}],"id":1042,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":1299,"stateMutability":"view","superFunction":863,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1056,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1043,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":1044,"name":"VariableDeclaration","src":"4242:16:0"}],"id":1045,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1056,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1048,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":1049,"name":"VariableDeclaration","src":"4294:4:0"}],"id":1050,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":1046,"name":"Identifier","src":"4274:10:0"}],"id":1047,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":1050},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1051,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1044,"type":"address","value":"_account"},"id":1052,"name":"Identifier","src":"4326:8:0"}],"id":1053,"name":"IndexAccess","src":"4317:18:0"}],"id":1054,"name":"Return","src":"4310:25:0"}],"id":1055,"name":"Block","src":"4300:42:0"}],"id":1056,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":1299,"stateMutability":"view","superFunction":856,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1070,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1057,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":1058,"name":"VariableDeclaration","src":"4476:16:0"}],"id":1059,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1070,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1062,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":1063,"name":"VariableDeclaration","src":"4528:4:0"}],"id":1064,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":1060,"name":"Identifier","src":"4508:10:0"}],"id":1061,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":1064},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1065,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1058,"type":"address","value":"_account"},"id":1066,"name":"Identifier","src":"4565:8:0"}],"id":1067,"name":"IndexAccess","src":"4551:23:0"}],"id":1068,"name":"Return","src":"4544:30:0"}],"id":1069,"name":"Block","src":"4534:47:0"}],"id":1070,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":1299,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1071,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1078,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1072,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":1073,"name":"VariableDeclaration","src":"4769:4:0"}],"id":1074,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":1074},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":924,"type":"bool","value":"_stopped"},"id":1075,"name":"Identifier","src":"4792:8:0"}],"id":1076,"name":"Return","src":"4785:15:0"}],"id":1077,"name":"Block","src":"4775:32:0"}],"id":1078,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1132,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1079,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":1080,"name":"VariableDeclaration","src":"4894:16:0"}],"id":1081,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1082,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1083,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1084,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1085,"name":"Identifier","src":"4948:8:0"}],"id":1086,"name":"IndexAccess","src":"4939:18:0"}],"id":1087,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":1088,"name":"Literal","src":"4959:38:0"}],"id":1089,"name":"FunctionCall","src":"4930:68:0"}],"id":1090,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1091,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1092,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1093,"name":"Identifier","src":"5031:8:0"}],"id":1094,"name":"IndexAccess","src":"5017:23:0"}],"id":1095,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":1096,"name":"Literal","src":"5042:42:0"}],"id":1097,"name":"FunctionCall","src":"5008:77:0"}],"id":1098,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1099,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2707,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1100,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1101,"name":"Identifier","src":"5113:8:0"}],"id":1102,"name":"FunctionCall","src":"5104:18:0"}],"id":1103,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":1104,"name":"Literal","src":"5124:39:0"}],"id":1105,"name":"FunctionCall","src":"5095:69:0"}],"id":1106,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1107,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1108,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1109,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1110,"name":"Literal","src":"5202:1:0"}],"id":1111,"name":"FunctionCall","src":"5194:10:0"}],"id":1112,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":1113,"name":"Literal","src":"5206:38:0"}],"id":1114,"name":"FunctionCall","src":"5174:71:0"}],"id":1115,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1116,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1117,"name":"Identifier","src":"5264:8:0"}],"id":1118,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1119,"name":"Literal","src":"5276:4:0"}],"id":1120,"name":"Assignment","src":"5255:25:0"}],"id":1121,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":916,"type":"uint256","value":"_adminCount"},"id":1122,"name":"Identifier","src":"5290:11:0"}],"id":1123,"name":"UnaryOperation","src":"5290:13:0"}],"id":1124,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":888,"type":"function (address,address)","value":"AddedAdmin"},"id":1125,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1126,"name":"Identifier","src":"5329:3:0"}],"id":1127,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1080,"type":"address","value":"_account"},"id":1128,"name":"Identifier","src":"5341:8:0"}],"id":1129,"name":"FunctionCall","src":"5318:32:0"}],"id":1130,"name":"EmitStatement","src":"5313:37:0"}],"id":1131,"name":"Block","src":"4920:437:0"}],"id":1132,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1160,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1133,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":1134,"name":"VariableDeclaration","src":"5456:16:0"}],"id":1135,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1136,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1137,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1138,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"address","value":"_account"},"id":1139,"name":"Identifier","src":"5509:8:0"}],"id":1140,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":1141,"name":"Literal","src":"5520:34:0"}],"id":1142,"name":"FunctionCall","src":"5492:63:0"}],"id":1143,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1144,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"address","value":"_account"},"id":1145,"name":"Identifier","src":"5574:8:0"}],"id":1146,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1147,"name":"Literal","src":"5586:5:0"}],"id":1148,"name":"Assignment","src":"5565:26:0"}],"id":1149,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":916,"type":"uint256","value":"_adminCount"},"id":1150,"name":"Identifier","src":"5601:11:0"}],"id":1151,"name":"UnaryOperation","src":"5601:13:0"}],"id":1152,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":894,"type":"function (address,address)","value":"RemovedAdmin"},"id":1153,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1154,"name":"Identifier","src":"5642:3:0"}],"id":1155,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"address","value":"_account"},"id":1156,"name":"Identifier","src":"5654:8:0"}],"id":1157,"name":"FunctionCall","src":"5629:34:0"}],"id":1158,"name":"EmitStatement","src":"5624:39:0"}],"id":1159,"name":"Block","src":"5482:188:0"}],"id":1160,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1214,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1161,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":1162,"name":"VariableDeclaration","src":"5767:16:0"}],"id":1163,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1164,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1165,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":914,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1166,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1167,"name":"Identifier","src":"5821:8:0"}],"id":1168,"name":"IndexAccess","src":"5812:18:0"}],"id":1169,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":1170,"name":"Literal","src":"5832:38:0"}],"id":1171,"name":"FunctionCall","src":"5803:68:0"}],"id":1172,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1173,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1174,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1175,"name":"Identifier","src":"5904:8:0"}],"id":1176,"name":"IndexAccess","src":"5890:23:0"}],"id":1177,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":1178,"name":"Literal","src":"5915:42:0"}],"id":1179,"name":"FunctionCall","src":"5881:77:0"}],"id":1180,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1181,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2707,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1182,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1183,"name":"Identifier","src":"5986:8:0"}],"id":1184,"name":"FunctionCall","src":"5977:18:0"}],"id":1185,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":1186,"name":"Literal","src":"5997:39:0"}],"id":1187,"name":"FunctionCall","src":"5968:69:0"}],"id":1188,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1189,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1190,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1191,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1192,"name":"Literal","src":"6075:1:0"}],"id":1193,"name":"FunctionCall","src":"6067:10:0"}],"id":1194,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":1195,"name":"Literal","src":"6079:38:0"}],"id":1196,"name":"FunctionCall","src":"6047:71:0"}],"id":1197,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1198,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1199,"name":"Identifier","src":"6142:8:0"}],"id":1200,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1201,"name":"Literal","src":"6154:4:0"}],"id":1202,"name":"Assignment","src":"6128:30:0"}],"id":1203,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":922,"type":"uint256","value":"_controllerCount"},"id":1204,"name":"Identifier","src":"6168:16:0"}],"id":1205,"name":"UnaryOperation","src":"6168:18:0"}],"id":1206,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":876,"type":"function (address,address)","value":"AddedController"},"id":1207,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1208,"name":"Identifier","src":"6217:3:0"}],"id":1209,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1162,"type":"address","value":"_account"},"id":1210,"name":"Identifier","src":"6229:8:0"}],"id":1211,"name":"FunctionCall","src":"6201:37:0"}],"id":1212,"name":"EmitStatement","src":"6196:42:0"}],"id":1213,"name":"Block","src":"5793:452:0"}],"id":1214,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1215,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":1216,"name":"VariableDeclaration","src":"6354:16:0"}],"id":1217,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1218,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1219,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1220,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"address","value":"_account"},"id":1221,"name":"Identifier","src":"6412:8:0"}],"id":1222,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":1223,"name":"Literal","src":"6423:38:0"}],"id":1224,"name":"FunctionCall","src":"6390:72:0"}],"id":1225,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":920,"type":"mapping(address => bool)","value":"_isController"},"id":1226,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"address","value":"_account"},"id":1227,"name":"Identifier","src":"6486:8:0"}],"id":1228,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1229,"name":"Literal","src":"6498:5:0"}],"id":1230,"name":"Assignment","src":"6472:31:0"}],"id":1231,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":922,"type":"uint256","value":"_controllerCount"},"id":1232,"name":"Identifier","src":"6513:16:0"}],"id":1233,"name":"UnaryOperation","src":"6513:18:0"}],"id":1234,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":882,"type":"function (address,address)","value":"RemovedController"},"id":1235,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1236,"name":"Identifier","src":"6564:3:0"}],"id":1237,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"address","value":"_account"},"id":1238,"name":"Identifier","src":"6576:8:0"}],"id":1239,"name":"FunctionCall","src":"6546:39:0"}],"id":1240,"name":"EmitStatement","src":"6541:44:0"}],"id":1241,"name":"Block","src":"6380:212:0"}],"id":1242,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1243,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":1246,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1244,"name":"Identifier","src":"6690:16:0"}],"id":1245,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":924,"type":"bool","value":"_stopped"},"id":1247,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1248,"name":"Literal","src":"6728:4:0"}],"id":1249,"name":"Assignment","src":"6717:15:0"}],"id":1250,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":906,"type":"function (address)","value":"Stopped"},"id":1251,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1252,"name":"Identifier","src":"6755:3:0"}],"id":1253,"name":"MemberAccess","src":"6755:10:0"}],"id":1254,"name":"FunctionCall","src":"6747:19:0"}],"id":1255,"name":"EmitStatement","src":"6742:24:0"}],"id":1256,"name":"Block","src":"6707:66:0"}],"id":1257,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1258,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":1261,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":1259,"name":"Identifier","src":"6848:9:0"}],"id":1260,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":924,"type":"bool","value":"_stopped"},"id":1262,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1263,"name":"Literal","src":"6879:5:0"}],"id":1264,"name":"Assignment","src":"6868:16:0"}],"id":1265,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":910,"type":"function (address)","value":"Started"},"id":1266,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1267,"name":"Identifier","src":"6907:3:0"}],"id":1268,"name":"MemberAccess","src":"6907:10:0"}],"id":1269,"name":"FunctionCall","src":"6899:19:0"}],"id":1270,"name":"EmitStatement","src":"6894:24:0"}],"id":1271,"name":"Block","src":"6858:67:0"}],"id":1272,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":1299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1298,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1273,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":1274,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":1298,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1275,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":1276,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":1298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1277,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":1278,"name":"VariableDeclaration","src":"7066:15:0"}],"id":1279,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":1284,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":946,"type":"modifier ()","value":"onlyAdmin"},"id":1280,"name":"Identifier","src":"7092:9:0"}],"id":1281,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"modifier ()","value":"notStopped"},"id":1282,"name":"Identifier","src":"7102:10:0"}],"id":1283,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":844,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":1285,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1274,"type":"address payable","value":"_to"},"id":1286,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1276,"type":"address","value":"_asset"},"id":1287,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1278,"type":"uint256","value":"_amount"},"id":1288,"name":"Identifier","src":"7150:7:0"}],"id":1289,"name":"FunctionCall","src":"7123:35:0"}],"id":1290,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":902,"type":"function (address,address,uint256)","value":"Claimed"},"id":1291,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1274,"type":"address payable","value":"_to"},"id":1292,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1276,"type":"address","value":"_asset"},"id":1293,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1278,"type":"uint256","value":"_amount"},"id":1294,"name":"Identifier","src":"7194:7:0"}],"id":1295,"name":"FunctionCall","src":"7173:29:0"}],"id":1296,"name":"EmitStatement","src":"7168:34:0"}],"id":1297,"name":"Block","src":"7113:96:0"}],"id":1298,"name":"FunctionDefinition","src":"7014:195:0"}],"id":1299,"name":"ContractDefinition","src":"1460:5751:0"}],"id":1300,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[4855]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4838,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[4855],"name":"Address","scope":4856},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":4855,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":4854,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4839,"name":"ElementaryTypeName","src":"562:7:1"}],"id":4840,"name":"VariableDeclaration","src":"562:15:1"}],"id":4841,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":4854,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4842,"name":"ElementaryTypeName","src":"602:4:1"}],"id":4843,"name":"VariableDeclaration","src":"602:4:1"}],"id":4844,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[4846],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":4853,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4845,"name":"ElementaryTypeName","src":"805:7:1"}],"id":4846,"name":"VariableDeclaration","src":"805:12:1"}],"id":4847,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":4846,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":4840,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":4848,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":4844},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4846,"type":"uint256","value":"size"},"id":4849,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4850,"name":"Literal","src":"947:1:1"}],"id":4851,"name":"BinaryOperation","src":"940:8:1"}],"id":4852,"name":"Return","src":"933:15:1"}],"id":4853,"name":"Block","src":"608:347:1"}],"id":4854,"name":"FunctionDefinition","src":"542:413:1"}],"id":4855,"name":"ContractDefinition","src":"94:863:1"}],"id":4856,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[319]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":268,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[319],"name":"ERC20","scope":320},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":319,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":277,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":269,"name":"ElementaryTypeName","src":"193:7:2"}],"id":270,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":277,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":271,"name":"ElementaryTypeName","src":"209:7:2"}],"id":272,"name":"VariableDeclaration","src":"209:16:2"}],"id":273,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":277,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":274,"name":"ElementaryTypeName","src":"250:7:2"}],"id":275,"name":"VariableDeclaration","src":"250:7:2"}],"id":276,"name":"ParameterList","src":"249:9:2"}],"id":277,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":319,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":286,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":278,"name":"ElementaryTypeName","src":"281:7:2"}],"id":279,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":286,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":280,"name":"ElementaryTypeName","src":"299:7:2"}],"id":281,"name":"VariableDeclaration","src":"299:14:2"}],"id":282,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":286,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":283,"name":"ElementaryTypeName","src":"333:4:2"}],"id":284,"name":"VariableDeclaration","src":"333:4:2"}],"id":285,"name":"ParameterList","src":"332:6:2"}],"id":286,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":319,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":293,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":287,"name":"ElementaryTypeName","src":"363:7:2"}],"id":288,"name":"VariableDeclaration","src":"363:12:2"}],"id":289,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":293,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":290,"name":"ElementaryTypeName","src":"400:7:2"}],"id":291,"name":"VariableDeclaration","src":"400:7:2"}],"id":292,"name":"ParameterList","src":"399:9:2"}],"id":293,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":319,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":294,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":295,"name":"ElementaryTypeName","src":"460:7:2"}],"id":296,"name":"VariableDeclaration","src":"460:7:2"}],"id":297,"name":"ParameterList","src":"459:9:2"}],"id":298,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":319,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":307,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":299,"name":"ElementaryTypeName","src":"492:7:2"}],"id":300,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":307,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":301,"name":"ElementaryTypeName","src":"505:7:2"}],"id":302,"name":"VariableDeclaration","src":"505:14:2"}],"id":303,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":307,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":304,"name":"ElementaryTypeName","src":"539:4:2"}],"id":305,"name":"VariableDeclaration","src":"539:4:2"}],"id":306,"name":"ParameterList","src":"538:6:2"}],"id":307,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":319,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":318,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":308,"name":"ElementaryTypeName","src":"572:7:2"}],"id":309,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":318,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":310,"name":"ElementaryTypeName","src":"587:7:2"}],"id":311,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":318,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":312,"name":"ElementaryTypeName","src":"600:7:2"}],"id":313,"name":"VariableDeclaration","src":"600:14:2"}],"id":314,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":318,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":315,"name":"ElementaryTypeName","src":"634:4:2"}],"id":316,"name":"VariableDeclaration","src":"634:4:2"}],"id":317,"name":"ParameterList","src":"633:6:2"}],"id":318,"name":"FunctionDefinition","src":"550:90:2"}],"id":319,"name":"ContractDefinition","src":"152:490:2"}],"id":320,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[2551]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2334,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":320,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":2552,"symbolAliases":[null],"unitAlias":""},"id":2335,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":453,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":2552,"symbolAliases":[null],"unitAlias":""},"id":2336,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":4856,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":2552,"symbolAliases":[null],"unitAlias":""},"id":2337,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[2551],"name":"SafeERC20","scope":2552},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":452,"type":"library SafeMath"},"id":2338,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":2339,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":2340,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":4855,"type":"library Address"},"id":2341,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2342,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":2343,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2365,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2344,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":2345,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":2365,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2346,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":2347,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":2365,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2348,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":2349,"name":"VariableDeclaration","src":"1850:13:3"}],"id":2350,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":2351,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2352,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"contract ERC20","value":"token"},"id":2353,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2354,"name":"Identifier","src":"1910:3:3"}],"id":2355,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":307,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"contract ERC20","value":"token"},"id":2356,"name":"Identifier","src":"1933:5:3"}],"id":2357,"name":"MemberAccess","src":"1933:14:3"}],"id":2358,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2347,"type":"address","value":"to"},"id":2359,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2349,"type":"uint256","value":"value"},"id":2360,"name":"Identifier","src":"1962:5:3"}],"id":2361,"name":"FunctionCall","src":"1910:58:3"}],"id":2362,"name":"FunctionCall","src":"1884:85:3"}],"id":2363,"name":"ExpressionStatement","src":"1884:85:3"}],"id":2364,"name":"Block","src":"1874:102:3"}],"id":2365,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2390,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2366,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":2367,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":2390,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2368,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":2369,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":2390,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2370,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":2371,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":2390,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2372,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":2373,"name":"VariableDeclaration","src":"2047:13:3"}],"id":2374,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":2375,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2376,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2367,"type":"contract ERC20","value":"token"},"id":2377,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2378,"name":"Identifier","src":"2107:3:3"}],"id":2379,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":318,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2367,"type":"contract ERC20","value":"token"},"id":2380,"name":"Identifier","src":"2130:5:3"}],"id":2381,"name":"MemberAccess","src":"2130:18:3"}],"id":2382,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2369,"type":"address","value":"from"},"id":2383,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2371,"type":"address","value":"to"},"id":2384,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2373,"type":"uint256","value":"value"},"id":2385,"name":"Identifier","src":"2169:5:3"}],"id":2386,"name":"FunctionCall","src":"2107:68:3"}],"id":2387,"name":"FunctionCall","src":"2081:95:3"}],"id":2388,"name":"ExpressionStatement","src":"2081:95:3"}],"id":2389,"name":"Block","src":"2071:112:3"}],"id":2390,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2431,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2391,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":2392,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":2431,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2393,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":2394,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":2431,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2395,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":2396,"name":"VariableDeclaration","src":"2240:13:3"}],"id":2397,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":2398,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2399,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2396,"type":"uint256","value":"value"},"id":2400,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2401,"name":"Literal","src":"2562:1:3"}],"id":2402,"name":"BinaryOperation","src":"2553:10:3"}],"id":2403,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":277,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2392,"type":"contract ERC20","value":"token"},"id":2404,"name":"Identifier","src":"2569:5:3"}],"id":2405,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2551","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2406,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7587,"type":"library SafeERC20","value":"this"},"id":2407,"name":"Identifier","src":"2593:4:3"}],"id":2408,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2394,"type":"address","value":"spender"},"id":2409,"name":"Identifier","src":"2600:7:3"}],"id":2410,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2411,"name":"Literal","src":"2612:1:3"}],"id":2412,"name":"BinaryOperation","src":"2569:44:3"}],"id":2413,"name":"TupleExpression","src":"2568:46:3"}],"id":2414,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":2415,"name":"Literal","src":"2628:56:3"}],"id":2416,"name":"FunctionCall","src":"2544:150:3"}],"id":2417,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2418,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2392,"type":"contract ERC20","value":"token"},"id":2419,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2420,"name":"Identifier","src":"2730:3:3"}],"id":2421,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":286,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2392,"type":"contract ERC20","value":"token"},"id":2422,"name":"Identifier","src":"2753:5:3"}],"id":2423,"name":"MemberAccess","src":"2753:13:3"}],"id":2424,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2394,"type":"address","value":"spender"},"id":2425,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2396,"type":"uint256","value":"value"},"id":2426,"name":"Identifier","src":"2786:5:3"}],"id":2427,"name":"FunctionCall","src":"2730:62:3"}],"id":2428,"name":"FunctionCall","src":"2704:89:3"}],"id":2429,"name":"ExpressionStatement","src":"2704:89:3"}],"id":2430,"name":"Block","src":"2264:536:3"}],"id":2431,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2466,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2432,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":2433,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":2466,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2434,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":2435,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":2466,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2436,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":2437,"name":"VariableDeclaration","src":"2867:13:3"}],"id":2438,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":2439,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[2441]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2465,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2440,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":2441,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":277,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2433,"type":"contract ERC20","value":"token"},"id":2442,"name":"Identifier","src":"2924:5:3"}],"id":2443,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2551","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2444,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7587,"type":"library SafeERC20","value":"this"},"id":2445,"name":"Identifier","src":"2948:4:3"}],"id":2446,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2435,"type":"address","value":"spender"},"id":2447,"name":"Identifier","src":"2955:7:3"}],"id":2448,"name":"FunctionCall","src":"2924:39:3"}],"id":2449,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2437,"type":"uint256","value":"value"},"id":2450,"name":"Identifier","src":"2968:5:3"}],"id":2451,"name":"FunctionCall","src":"2924:50:3"}],"id":2452,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2453,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2433,"type":"contract ERC20","value":"token"},"id":2454,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2455,"name":"Identifier","src":"3010:3:3"}],"id":2456,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":286,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2433,"type":"contract ERC20","value":"token"},"id":2457,"name":"Identifier","src":"3033:5:3"}],"id":2458,"name":"MemberAccess","src":"3033:13:3"}],"id":2459,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2435,"type":"address","value":"spender"},"id":2460,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2441,"type":"uint256","value":"newAllowance"},"id":2461,"name":"Identifier","src":"3066:12:3"}],"id":2462,"name":"FunctionCall","src":"3010:69:3"}],"id":2463,"name":"FunctionCall","src":"2984:96:3"}],"id":2464,"name":"ExpressionStatement","src":"2984:96:3"}],"id":2465,"name":"Block","src":"2891:196:3"}],"id":2466,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2501,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2467,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":2468,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":2501,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2469,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":2470,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":2501,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2471,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":2472,"name":"VariableDeclaration","src":"3154:13:3"}],"id":2473,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":2474,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[2476]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2475,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":2476,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":371,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":277,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2468,"type":"contract ERC20","value":"token"},"id":2477,"name":"Identifier","src":"3211:5:3"}],"id":2478,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2551","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2479,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7587,"type":"library SafeERC20","value":"this"},"id":2480,"name":"Identifier","src":"3235:4:3"}],"id":2481,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"address","value":"spender"},"id":2482,"name":"Identifier","src":"3242:7:3"}],"id":2483,"name":"FunctionCall","src":"3211:39:3"}],"id":2484,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2472,"type":"uint256","value":"value"},"id":2485,"name":"Identifier","src":"3255:5:3"}],"id":2486,"name":"FunctionCall","src":"3211:50:3"}],"id":2487,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2550,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2488,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2468,"type":"contract ERC20","value":"token"},"id":2489,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2490,"name":"Identifier","src":"3297:3:3"}],"id":2491,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":286,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2468,"type":"contract ERC20","value":"token"},"id":2492,"name":"Identifier","src":"3320:5:3"}],"id":2493,"name":"MemberAccess","src":"3320:13:3"}],"id":2494,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"address","value":"spender"},"id":2495,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2476,"type":"uint256","value":"newAllowance"},"id":2496,"name":"Identifier","src":"3353:12:3"}],"id":2497,"name":"FunctionCall","src":"3297:69:3"}],"id":2498,"name":"FunctionCall","src":"3271:96:3"}],"id":2499,"name":"ExpressionStatement","src":"3271:96:3"}],"id":2500,"name":"Block","src":"3178:196:3"}],"id":2501,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":2551,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2550,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":2502,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":2503,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":2550,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2504,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":2505,"name":"VariableDeclaration","src":"3798:17:3"}],"id":2506,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":2507,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2508,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":4854,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2509,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2503,"type":"contract ERC20","value":"token"},"id":2510,"name":"Identifier","src":"4360:5:3"}],"id":2511,"name":"FunctionCall","src":"4352:14:3"}],"id":2512,"name":"MemberAccess","src":"4352:25:3"}],"id":2513,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":2514,"name":"Literal","src":"4381:33:3"}],"id":2515,"name":"FunctionCall","src":"4344:71:3"}],"id":2516,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[2518,2520]},"children":[{"attributes":{"constant":false,"name":"success","scope":2549,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2517,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":2518,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":2549,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2519,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":2520,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$319","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2521,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2503,"type":"contract ERC20","value":"token"},"id":2522,"name":"Identifier","src":"4535:5:3"}],"id":2523,"name":"FunctionCall","src":"4527:14:3"}],"id":2524,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2505,"type":"bytes memory","value":"data"},"id":2525,"name":"Identifier","src":"4547:4:3"}],"id":2526,"name":"FunctionCall","src":"4527:25:3"}],"id":2527,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2528,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2518,"type":"bool","value":"success"},"id":2529,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":2530,"name":"Literal","src":"4579:34:3"}],"id":2531,"name":"FunctionCall","src":"4562:52:3"}],"id":2532,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2520,"type":"bytes memory","value":"returndata"},"id":2533,"name":"Identifier","src":"4629:10:3"}],"id":2534,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2535,"name":"Literal","src":"4649:1:3"}],"id":2536,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2537,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":2538,"name":"Identifier","src":"4758:3:3"}],"id":2539,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2520,"type":"bytes memory","value":"returndata"},"id":2540,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":2541,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":2542,"name":"TupleExpression","src":"4781:6:3"}],"id":2543,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":2544,"name":"Literal","src":"4790:44:3"}],"id":2545,"name":"FunctionCall","src":"4750:85:3"}],"id":2546,"name":"ExpressionStatement","src":"4750:85:3"}],"id":2547,"name":"Block","src":"4652:194:3"}],"id":2548,"name":"IfStatement","src":"4625:221:3"}],"id":2549,"name":"Block","src":"3826:1026:3"}],"id":2550,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":2551,"name":"ContractDefinition","src":"1715:3139:3"}],"id":2552,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[452]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":321,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[452],"name":"SafeMath","scope":453},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":346,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":322,"name":"ElementaryTypeName","src":"847:7:4"}],"id":323,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":346,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":324,"name":"ElementaryTypeName","src":"858:7:4"}],"id":325,"name":"VariableDeclaration","src":"858:9:4"}],"id":326,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":346,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":327,"name":"ElementaryTypeName","src":"892:7:4"}],"id":328,"name":"VariableDeclaration","src":"892:7:4"}],"id":329,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[331]},"children":[{"attributes":{"constant":false,"name":"c","scope":345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":330,"name":"ElementaryTypeName","src":"911:7:4"}],"id":331,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"a"},"id":332,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"uint256","value":"b"},"id":333,"name":"Identifier","src":"927:1:4"}],"id":334,"name":"BinaryOperation","src":"923:5:4"}],"id":335,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":336,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":331,"type":"uint256","value":"c"},"id":337,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"a"},"id":338,"name":"Identifier","src":"951:1:4"}],"id":339,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":340,"name":"Literal","src":"954:29:4"}],"id":341,"name":"FunctionCall","src":"938:46:4"}],"id":342,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":329},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":331,"type":"uint256","value":"c"},"id":343,"name":"Identifier","src":"1002:1:4"}],"id":344,"name":"Return","src":"995:8:4"}],"id":345,"name":"Block","src":"901:109:4"}],"id":346,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":371,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":347,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":348,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":371,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":349,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":350,"name":"VariableDeclaration","src":"1298:9:4"}],"id":351,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":371,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":352,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":353,"name":"VariableDeclaration","src":"1332:7:4"}],"id":354,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":355,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"b"},"id":356,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":348,"type":"uint256","value":"a"},"id":357,"name":"Identifier","src":"1364:1:4"}],"id":358,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":359,"name":"Literal","src":"1367:32:4"}],"id":360,"name":"FunctionCall","src":"1351:49:4"}],"id":361,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[363]},"children":[{"attributes":{"constant":false,"name":"c","scope":370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":362,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":363,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":348,"type":"uint256","value":"a"},"id":364,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"b"},"id":365,"name":"Identifier","src":"1426:1:4"}],"id":366,"name":"BinaryOperation","src":"1422:5:4"}],"id":367,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":354},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":363,"type":"uint256","value":"c"},"id":368,"name":"Identifier","src":"1445:1:4"}],"id":369,"name":"Return","src":"1438:8:4"}],"id":370,"name":"Block","src":"1341:112:4"}],"id":371,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":405,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":372,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":373,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":405,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":374,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":375,"name":"VariableDeclaration","src":"1717:9:4"}],"id":376,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":405,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":377,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":378,"name":"VariableDeclaration","src":"1751:7:4"}],"id":379,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":373,"type":"uint256","value":"a"},"id":380,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":381,"name":"Literal","src":"1996:1:4"}],"id":382,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":379},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":383,"name":"Literal","src":"2020:1:4"}],"id":384,"name":"Return","src":"2013:8:4"}],"id":385,"name":"Block","src":"1999:33:4"}],"id":386,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[388]},"children":[{"attributes":{"constant":false,"name":"c","scope":404,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":387,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":388,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":373,"type":"uint256","value":"a"},"id":389,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":375,"type":"uint256","value":"b"},"id":390,"name":"Identifier","src":"2058:1:4"}],"id":391,"name":"BinaryOperation","src":"2054:5:4"}],"id":392,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":393,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":388,"type":"uint256","value":"c"},"id":394,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":373,"type":"uint256","value":"a"},"id":395,"name":"Identifier","src":"2081:1:4"}],"id":396,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":375,"type":"uint256","value":"b"},"id":397,"name":"Identifier","src":"2086:1:4"}],"id":398,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":399,"name":"Literal","src":"2089:35:4"}],"id":400,"name":"FunctionCall","src":"2069:56:4"}],"id":401,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":379},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":388,"type":"uint256","value":"c"},"id":402,"name":"Identifier","src":"2143:1:4"}],"id":403,"name":"Return","src":"2136:8:4"}],"id":404,"name":"Block","src":"1760:391:4"}],"id":405,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":430,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":406,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":407,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":430,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":408,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":409,"name":"VariableDeclaration","src":"2630:9:4"}],"id":410,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":430,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":411,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":412,"name":"VariableDeclaration","src":"2664:7:4"}],"id":413,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":414,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":409,"type":"uint256","value":"b"},"id":415,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":416,"name":"Literal","src":"2761:1:4"}],"id":417,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":418,"name":"Literal","src":"2764:28:4"}],"id":419,"name":"FunctionCall","src":"2749:44:4"}],"id":420,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[422]},"children":[{"attributes":{"constant":false,"name":"c","scope":429,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":421,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":422,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":407,"type":"uint256","value":"a"},"id":423,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":409,"type":"uint256","value":"b"},"id":424,"name":"Identifier","src":"2819:1:4"}],"id":425,"name":"BinaryOperation","src":"2815:5:4"}],"id":426,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":413},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":422,"type":"uint256","value":"c"},"id":427,"name":"Identifier","src":"2924:1:4"}],"id":428,"name":"Return","src":"2917:8:4"}],"id":429,"name":"Block","src":"2673:259:4"}],"id":430,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":452,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":451,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":431,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":432,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":451,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":433,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":434,"name":"VariableDeclaration","src":"3400:9:4"}],"id":435,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":451,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":436,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":437,"name":"VariableDeclaration","src":"3434:7:4"}],"id":438,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":439,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":434,"type":"uint256","value":"b"},"id":440,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":441,"name":"Literal","src":"3466:1:4"}],"id":442,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":443,"name":"Literal","src":"3469:26:4"}],"id":444,"name":"FunctionCall","src":"3453:43:4"}],"id":445,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":438},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":432,"type":"uint256","value":"a"},"id":446,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":434,"type":"uint256","value":"b"},"id":447,"name":"Identifier","src":"3517:1:4"}],"id":448,"name":"BinaryOperation","src":"3513:5:4"}],"id":449,"name":"Return","src":"3506:12:4"}],"id":450,"name":"Block","src":"3443:82:4"}],"id":451,"name":"FunctionDefinition","src":"3376:149:4"}],"id":452,"name":"ContractDefinition","src":"589:2938:4"}],"id":453,"name":"SourceUnit","src":"0:3528:4"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[2845]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2710,"name":"PragmaDirective","src":"1400:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2845],"name":"ENS","scope":2846},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2718,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2711,"name":"ElementaryTypeName","src":"1534:7:5"}],"id":2712,"name":"VariableDeclaration","src":"1534:21:5"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":2718,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2713,"name":"ElementaryTypeName","src":"1557:7:5"}],"id":2714,"name":"VariableDeclaration","src":"1557:22:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":2718,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2715,"name":"ElementaryTypeName","src":"1581:7:5"}],"id":2716,"name":"VariableDeclaration","src":"1581:14:5"}],"id":2717,"name":"ParameterList","src":"1533:63:5"}],"id":2718,"name":"EventDefinition","src":"1519:78:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2724,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2719,"name":"ElementaryTypeName","src":"1695:7:5"}],"id":2720,"name":"VariableDeclaration","src":"1695:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":2724,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2721,"name":"ElementaryTypeName","src":"1718:7:5"}],"id":2722,"name":"VariableDeclaration","src":"1718:14:5"}],"id":2723,"name":"ParameterList","src":"1694:39:5"}],"id":2724,"name":"EventDefinition","src":"1680:54:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2730,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2725,"name":"ElementaryTypeName","src":"1810:7:5"}],"id":2726,"name":"VariableDeclaration","src":"1810:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":2730,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2727,"name":"ElementaryTypeName","src":"1833:7:5"}],"id":2728,"name":"VariableDeclaration","src":"1833:17:5"}],"id":2729,"name":"ParameterList","src":"1809:42:5"}],"id":2730,"name":"EventDefinition","src":"1792:60:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2736,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2731,"name":"ElementaryTypeName","src":"1916:7:5"}],"id":2732,"name":"VariableDeclaration","src":"1916:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":2736,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2733,"name":"ElementaryTypeName","src":"1939:6:5"}],"id":2734,"name":"VariableDeclaration","src":"1939:11:5"}],"id":2735,"name":"ParameterList","src":"1915:36:5"}],"id":2736,"name":"EventDefinition","src":"1903:49:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":2744,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2737,"name":"ElementaryTypeName","src":"2031:7:5"}],"id":2738,"name":"VariableDeclaration","src":"2031:22:5"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":2744,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2739,"name":"ElementaryTypeName","src":"2055:7:5"}],"id":2740,"name":"VariableDeclaration","src":"2055:25:5"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":2744,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2741,"name":"ElementaryTypeName","src":"2082:4:5"}],"id":2742,"name":"VariableDeclaration","src":"2082:14:5"}],"id":2743,"name":"ParameterList","src":"2030:67:5"}],"id":2744,"name":"EventDefinition","src":"2010:88:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2755,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2745,"name":"ElementaryTypeName","src":"2123:7:5"}],"id":2746,"name":"VariableDeclaration","src":"2123:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":2755,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2747,"name":"ElementaryTypeName","src":"2138:7:5"}],"id":2748,"name":"VariableDeclaration","src":"2138:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":2755,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2749,"name":"ElementaryTypeName","src":"2154:7:5"}],"id":2750,"name":"VariableDeclaration","src":"2154:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":2755,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2751,"name":"ElementaryTypeName","src":"2173:6:5"}],"id":2752,"name":"VariableDeclaration","src":"2173:11:5"}],"id":2753,"name":"ParameterList","src":"2122:63:5"},{"attributes":{"parameters":[null]},"children":[],"id":2754,"name":"ParameterList","src":"2194:0:5"}],"id":2755,"name":"FunctionDefinition","src":"2104:91:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2756,"name":"ElementaryTypeName","src":"2226:7:5"}],"id":2757,"name":"VariableDeclaration","src":"2226:13:5"},{"attributes":{"constant":false,"name":"_label","scope":2768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2758,"name":"ElementaryTypeName","src":"2241:7:5"}],"id":2759,"name":"VariableDeclaration","src":"2241:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":2768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2760,"name":"ElementaryTypeName","src":"2257:7:5"}],"id":2761,"name":"VariableDeclaration","src":"2257:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":2768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2762,"name":"ElementaryTypeName","src":"2273:7:5"}],"id":2763,"name":"VariableDeclaration","src":"2273:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":2768,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2764,"name":"ElementaryTypeName","src":"2292:6:5"}],"id":2765,"name":"VariableDeclaration","src":"2292:11:5"}],"id":2766,"name":"ParameterList","src":"2225:79:5"},{"attributes":{"parameters":[null]},"children":[],"id":2767,"name":"ParameterList","src":"2313:0:5"}],"id":2768,"name":"FunctionDefinition","src":"2200:114:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2779,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2769,"name":"ElementaryTypeName","src":"2344:7:5"}],"id":2770,"name":"VariableDeclaration","src":"2344:13:5"},{"attributes":{"constant":false,"name":"_label","scope":2779,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2771,"name":"ElementaryTypeName","src":"2359:7:5"}],"id":2772,"name":"VariableDeclaration","src":"2359:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":2779,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2773,"name":"ElementaryTypeName","src":"2375:7:5"}],"id":2774,"name":"VariableDeclaration","src":"2375:14:5"}],"id":2775,"name":"ParameterList","src":"2343:47:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2779,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2776,"name":"ElementaryTypeName","src":"2408:7:5"}],"id":2777,"name":"VariableDeclaration","src":"2408:7:5"}],"id":2778,"name":"ParameterList","src":"2407:9:5"}],"id":2779,"name":"FunctionDefinition","src":"2319:98:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2786,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2780,"name":"ElementaryTypeName","src":"2443:7:5"}],"id":2781,"name":"VariableDeclaration","src":"2443:13:5"},{"attributes":{"constant":false,"name":"_resolver","scope":2786,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2782,"name":"ElementaryTypeName","src":"2458:7:5"}],"id":2783,"name":"VariableDeclaration","src":"2458:17:5"}],"id":2784,"name":"ParameterList","src":"2442:34:5"},{"attributes":{"parameters":[null]},"children":[],"id":2785,"name":"ParameterList","src":"2485:0:5"}],"id":2786,"name":"FunctionDefinition","src":"2422:64:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2793,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2787,"name":"ElementaryTypeName","src":"2509:7:5"}],"id":2788,"name":"VariableDeclaration","src":"2509:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":2793,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2789,"name":"ElementaryTypeName","src":"2524:7:5"}],"id":2790,"name":"VariableDeclaration","src":"2524:14:5"}],"id":2791,"name":"ParameterList","src":"2508:31:5"},{"attributes":{"parameters":[null]},"children":[],"id":2792,"name":"ParameterList","src":"2548:0:5"}],"id":2793,"name":"FunctionDefinition","src":"2491:58:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2800,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2794,"name":"ElementaryTypeName","src":"2570:7:5"}],"id":2795,"name":"VariableDeclaration","src":"2570:13:5"},{"attributes":{"constant":false,"name":"_ttl","scope":2800,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2796,"name":"ElementaryTypeName","src":"2585:6:5"}],"id":2797,"name":"VariableDeclaration","src":"2585:11:5"}],"id":2798,"name":"ParameterList","src":"2569:28:5"},{"attributes":{"parameters":[null]},"children":[],"id":2799,"name":"ParameterList","src":"2606:0:5"}],"id":2800,"name":"FunctionDefinition","src":"2554:53:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":2845,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":2807,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2801,"name":"ElementaryTypeName","src":"2639:7:5"}],"id":2802,"name":"VariableDeclaration","src":"2639:17:5"},{"attributes":{"constant":false,"name":"_approved","scope":2807,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2803,"name":"ElementaryTypeName","src":"2658:4:5"}],"id":2804,"name":"VariableDeclaration","src":"2658:14:5"}],"id":2805,"name":"ParameterList","src":"2638:35:5"},{"attributes":{"parameters":[null]},"children":[],"id":2806,"name":"ParameterList","src":"2682:0:5"}],"id":2807,"name":"FunctionDefinition","src":"2612:71:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2814,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2808,"name":"ElementaryTypeName","src":"2703:7:5"}],"id":2809,"name":"VariableDeclaration","src":"2703:13:5"}],"id":2810,"name":"ParameterList","src":"2702:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2814,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2811,"name":"ElementaryTypeName","src":"2741:7:5"}],"id":2812,"name":"VariableDeclaration","src":"2741:7:5"}],"id":2813,"name":"ParameterList","src":"2740:9:5"}],"id":2814,"name":"FunctionDefinition","src":"2688:62:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2821,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2815,"name":"ElementaryTypeName","src":"2773:7:5"}],"id":2816,"name":"VariableDeclaration","src":"2773:13:5"}],"id":2817,"name":"ParameterList","src":"2772:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2821,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2818,"name":"ElementaryTypeName","src":"2811:7:5"}],"id":2819,"name":"VariableDeclaration","src":"2811:7:5"}],"id":2820,"name":"ParameterList","src":"2810:9:5"}],"id":2821,"name":"FunctionDefinition","src":"2755:65:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2828,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2822,"name":"ElementaryTypeName","src":"2838:7:5"}],"id":2823,"name":"VariableDeclaration","src":"2838:13:5"}],"id":2824,"name":"ParameterList","src":"2837:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2828,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":2825,"name":"ElementaryTypeName","src":"2876:6:5"}],"id":2826,"name":"VariableDeclaration","src":"2876:6:5"}],"id":2827,"name":"ParameterList","src":"2875:8:5"}],"id":2828,"name":"FunctionDefinition","src":"2825:59:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2829,"name":"ElementaryTypeName","src":"2911:7:5"}],"id":2830,"name":"VariableDeclaration","src":"2911:13:5"}],"id":2831,"name":"ParameterList","src":"2910:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2835,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2832,"name":"ElementaryTypeName","src":"2949:4:5"}],"id":2833,"name":"VariableDeclaration","src":"2949:4:5"}],"id":2834,"name":"ParameterList","src":"2948:6:5"}],"id":2835,"name":"FunctionDefinition","src":"2889:66:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":2845,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":2844,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2836,"name":"ElementaryTypeName","src":"2986:7:5"}],"id":2837,"name":"VariableDeclaration","src":"2986:14:5"},{"attributes":{"constant":false,"name":"_operator","scope":2844,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2838,"name":"ElementaryTypeName","src":"3002:7:5"}],"id":2839,"name":"VariableDeclaration","src":"3002:17:5"}],"id":2840,"name":"ParameterList","src":"2985:35:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":2844,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2841,"name":"ElementaryTypeName","src":"3044:4:5"}],"id":2842,"name":"VariableDeclaration","src":"3044:4:5"}],"id":2843,"name":"ParameterList","src":"3043:6:5"}],"id":2844,"name":"FunctionDefinition","src":"2960:90:5"}],"id":2845,"name":"ContractDefinition","src":"1425:1627:5"}],"id":2846,"name":"SourceUnit","src":"1400:1653:5"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[7550]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":6831,"name":"PragmaDirective","src":"0:24:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[7550],"name":"ENSBytesUtils","scope":7551},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6853,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6832,"name":"ElementaryTypeName","src":"325:5:6"}],"id":6833,"name":"VariableDeclaration","src":"325:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6853,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6834,"name":"ElementaryTypeName","src":"344:4:6"}],"id":6835,"name":"VariableDeclaration","src":"344:11:6"},{"attributes":{"constant":false,"name":"len","scope":6853,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6836,"name":"ElementaryTypeName","src":"357:4:6"}],"id":6837,"name":"VariableDeclaration","src":"357:8:6"}],"id":6838,"name":"ParameterList","src":"324:42:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6853,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6839,"name":"ElementaryTypeName","src":"390:7:6"}],"id":6840,"name":"VariableDeclaration","src":"390:11:6"}],"id":6841,"name":"ParameterList","src":"389:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":6842,"name":"Identifier","src":"413:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6835,"type":"uint256","value":"offset"},"id":6843,"name":"Identifier","src":"421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6837,"type":"uint256","value":"len"},"id":6844,"name":"Identifier","src":"430:3:6"}],"id":6845,"name":"BinaryOperation","src":"421:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6833,"type":"bytes memory","value":"self"},"id":6846,"name":"Identifier","src":"437:4:6"}],"id":6847,"name":"MemberAccess","src":"437:11:6"}],"id":6848,"name":"BinaryOperation","src":"421:27:6"}],"id":6849,"name":"FunctionCall","src":"413:36:6"}],"id":6850,"name":"ExpressionStatement","src":"413:36:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6840,"isOffset":false,"isSlot":false,"src":"482:3:6","valueSize":1}},{"self":{"declaration":6833,"isOffset":false,"isSlot":false,"src":"507:4:6","valueSize":1}},{"offset":{"declaration":6835,"isOffset":false,"isSlot":false,"src":"518:6:6","valueSize":1}},{"len":{"declaration":6837,"isOffset":false,"isSlot":false,"src":"527:3:6","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":6851,"name":"InlineAssembly","src":"459:82:6"}],"id":6852,"name":"Block","src":"403:144:6"}],"id":6853,"name":"FunctionDefinition","src":"309:238:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6874,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6854,"name":"ElementaryTypeName","src":"920:5:6"}],"id":6855,"name":"VariableDeclaration","src":"920:17:6"},{"attributes":{"constant":false,"name":"other","scope":6874,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6856,"name":"ElementaryTypeName","src":"939:5:6"}],"id":6857,"name":"VariableDeclaration","src":"939:18:6"}],"id":6858,"name":"ParameterList","src":"919:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6874,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6859,"name":"ElementaryTypeName","src":"982:3:6"}],"id":6860,"name":"VariableDeclaration","src":"982:3:6"}],"id":6861,"name":"ParameterList","src":"981:5:6"},{"children":[{"attributes":{"functionReturnParameters":6861},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6874,7006],"referencedDeclaration":7006,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":6862,"name":"Identifier","src":"1004:7:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6855,"type":"bytes memory","value":"self"},"id":6863,"name":"Identifier","src":"1012:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6864,"name":"Literal","src":"1018:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6855,"type":"bytes memory","value":"self"},"id":6865,"name":"Identifier","src":"1021:4:6"}],"id":6866,"name":"MemberAccess","src":"1021:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6857,"type":"bytes memory","value":"other"},"id":6867,"name":"Identifier","src":"1034:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6868,"name":"Literal","src":"1041:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6857,"type":"bytes memory","value":"other"},"id":6869,"name":"Identifier","src":"1044:5:6"}],"id":6870,"name":"MemberAccess","src":"1044:12:6"}],"id":6871,"name":"FunctionCall","src":"1004:53:6"}],"id":6872,"name":"Return","src":"997:60:6"}],"id":6873,"name":"Block","src":"987:77:6"}],"id":6874,"name":"FunctionDefinition","src":"903:161:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7006,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6875,"name":"ElementaryTypeName","src":"1694:5:6"}],"id":6876,"name":"VariableDeclaration","src":"1694:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6877,"name":"ElementaryTypeName","src":"1713:4:6"}],"id":6878,"name":"VariableDeclaration","src":"1713:11:6"},{"attributes":{"constant":false,"name":"len","scope":7006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6879,"name":"ElementaryTypeName","src":"1726:4:6"}],"id":6880,"name":"VariableDeclaration","src":"1726:8:6"},{"attributes":{"constant":false,"name":"other","scope":7006,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6881,"name":"ElementaryTypeName","src":"1736:5:6"}],"id":6882,"name":"VariableDeclaration","src":"1736:18:6"},{"attributes":{"constant":false,"name":"otheroffset","scope":7006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6883,"name":"ElementaryTypeName","src":"1756:4:6"}],"id":6884,"name":"VariableDeclaration","src":"1756:16:6"},{"attributes":{"constant":false,"name":"otherlen","scope":7006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6885,"name":"ElementaryTypeName","src":"1774:4:6"}],"id":6886,"name":"VariableDeclaration","src":"1774:13:6"}],"id":6887,"name":"ParameterList","src":"1693:95:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7006,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6888,"name":"ElementaryTypeName","src":"1812:3:6"}],"id":6889,"name":"VariableDeclaration","src":"1812:3:6"}],"id":6890,"name":"ParameterList","src":"1811:5:6"},{"children":[{"attributes":{"assignments":[6892]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":7005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6891,"name":"ElementaryTypeName","src":"1827:4:6"}],"id":6892,"name":"VariableDeclaration","src":"1827:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6880,"type":"uint256","value":"len"},"id":6893,"name":"Identifier","src":"1843:3:6"}],"id":6894,"name":"VariableDeclarationStatement","src":"1827:19:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6886,"type":"uint256","value":"otherlen"},"id":6895,"name":"Identifier","src":"1860:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6880,"type":"uint256","value":"len"},"id":6896,"name":"Identifier","src":"1871:3:6"}],"id":6897,"name":"BinaryOperation","src":"1860:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"uint256","value":"shortest"},"id":6898,"name":"Identifier","src":"1884:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6886,"type":"uint256","value":"otherlen"},"id":6899,"name":"Identifier","src":"1895:8:6"}],"id":6900,"name":"Assignment","src":"1884:19:6"}],"id":6901,"name":"ExpressionStatement","src":"1884:19:6"}],"id":6902,"name":"IfStatement","src":"1856:47:6"},{"attributes":{"assignments":[6904],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6903,"name":"ElementaryTypeName","src":"1914:4:6"}],"id":6904,"name":"VariableDeclaration","src":"1914:12:6"}],"id":6905,"name":"VariableDeclarationStatement","src":"1914:12:6"},{"attributes":{"assignments":[6907],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":7005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6906,"name":"ElementaryTypeName","src":"1936:4:6"}],"id":6907,"name":"VariableDeclaration","src":"1936:13:6"}],"id":6908,"name":"VariableDeclarationStatement","src":"1936:13:6"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":6904,"isOffset":false,"isSlot":false,"src":"1983:7:6","valueSize":1}},{"otherptr":{"declaration":6907,"isOffset":false,"isSlot":false,"src":"2033:8:6","valueSize":1}},{"offset":{"declaration":6878,"isOffset":false,"isSlot":false,"src":"2008:6:6","valueSize":1}},{"self":{"declaration":6876,"isOffset":false,"isSlot":false,"src":"1998:4:6","valueSize":1}},{"otheroffset":{"declaration":6884,"isOffset":false,"isSlot":false,"src":"2060:11:6","valueSize":1}},{"other":{"declaration":6882,"isOffset":false,"isSlot":false,"src":"2049:5:6","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":6909,"name":"InlineAssembly","src":"1960:127:6"},{"children":[{"attributes":{"assignments":[6911]},"children":[{"attributes":{"constant":false,"name":"idx","scope":6996,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6910,"name":"ElementaryTypeName","src":"2101:4:6"}],"id":6911,"name":"VariableDeclaration","src":"2101:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6912,"name":"Literal","src":"2112:1:6"}],"id":6913,"name":"VariableDeclarationStatement","src":"2101:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6911,"type":"uint256","value":"idx"},"id":6914,"name":"Identifier","src":"2115:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"uint256","value":"shortest"},"id":6915,"name":"Identifier","src":"2121:8:6"}],"id":6916,"name":"BinaryOperation","src":"2115:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6911,"type":"uint256","value":"idx"},"id":6917,"name":"Identifier","src":"2131:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6918,"name":"Literal","src":"2138:2:6"}],"id":6919,"name":"Assignment","src":"2131:9:6"}],"id":6920,"name":"ExpressionStatement","src":"2131:9:6"},{"children":[{"attributes":{"assignments":[6922],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":6995,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6921,"name":"ElementaryTypeName","src":"2156:4:6"}],"id":6922,"name":"VariableDeclaration","src":"2156:6:6"}],"id":6923,"name":"VariableDeclarationStatement","src":"2156:6:6"},{"attributes":{"assignments":[6925],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":6995,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6924,"name":"ElementaryTypeName","src":"2176:4:6"}],"id":6925,"name":"VariableDeclaration","src":"2176:6:6"}],"id":6926,"name":"VariableDeclarationStatement","src":"2176:6:6"},{"attributes":{"externalReferences":[{"a":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"2223:1:6","valueSize":1}},{"selfptr":{"declaration":6904,"isOffset":false,"isSlot":false,"src":"2234:7:6","valueSize":1}},{"b":{"declaration":6925,"isOffset":false,"isSlot":false,"src":"2259:1:6","valueSize":1}},{"otherptr":{"declaration":6907,"isOffset":false,"isSlot":false,"src":"2270:8:6","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":6927,"name":"InlineAssembly","src":"2196:97:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6922,"type":"uint256","value":"a"},"id":6928,"name":"Identifier","src":"2310:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6925,"type":"uint256","value":"b"},"id":6929,"name":"Identifier","src":"2315:1:6"}],"id":6930,"name":"BinaryOperation","src":"2310:6:6"},{"children":[{"attributes":{"assignments":[6932],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":6985,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6931,"name":"ElementaryTypeName","src":"2397:4:6"}],"id":6932,"name":"VariableDeclaration","src":"2397:9:6"}],"id":6933,"name":"VariableDeclarationStatement","src":"2397:9:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"uint256","value":"shortest"},"id":6934,"name":"Identifier","src":"2428:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6935,"name":"Literal","src":"2439:2:6"}],"id":6936,"name":"BinaryOperation","src":"2428:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6932,"type":"uint256","value":"mask"},"id":6937,"name":"Identifier","src":"2465:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":6938,"name":"ElementaryTypeNameExpression","src":"2472:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6939,"name":"Literal","src":"2482:1:6"}],"id":6940,"name":"UnaryOperation","src":"2480:3:6"}],"id":6941,"name":"FunctionCall","src":"2472:12:6"}],"id":6942,"name":"Assignment","src":"2465:19:6"}],"id":6943,"name":"ExpressionStatement","src":"2465:19:6"}],"id":6944,"name":"Block","src":"2443:80:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6932,"type":"uint256","value":"mask"},"id":6945,"name":"Identifier","src":"2551:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6946,"name":"Literal","src":"2560:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6947,"name":"Literal","src":"2566:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6948,"name":"Literal","src":"2571:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"uint256","value":"shortest"},"id":6949,"name":"Identifier","src":"2576:8:6"}],"id":6950,"name":"BinaryOperation","src":"2571:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6911,"type":"uint256","value":"idx"},"id":6951,"name":"Identifier","src":"2587:3:6"}],"id":6952,"name":"BinaryOperation","src":"2571:19:6"}],"id":6953,"name":"TupleExpression","src":"2570:21:6"}],"id":6954,"name":"BinaryOperation","src":"2566:25:6"}],"id":6955,"name":"TupleExpression","src":"2565:27:6"}],"id":6956,"name":"BinaryOperation","src":"2560:32:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6957,"name":"Literal","src":"2595:1:6"}],"id":6958,"name":"BinaryOperation","src":"2560:36:6"}],"id":6959,"name":"TupleExpression","src":"2559:38:6"}],"id":6960,"name":"UnaryOperation","src":"2558:39:6"}],"id":6961,"name":"Assignment","src":"2551:46:6"}],"id":6962,"name":"ExpressionStatement","src":"2551:46:6"}],"id":6963,"name":"Block","src":"2529:87:6"}],"id":6964,"name":"IfStatement","src":"2424:192:6"},{"attributes":{"assignments":[6966]},"children":[{"attributes":{"constant":false,"name":"diff","scope":6985,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6965,"name":"ElementaryTypeName","src":"2633:4:6"}],"id":6966,"name":"VariableDeclaration","src":"2633:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6922,"type":"uint256","value":"a"},"id":6967,"name":"Identifier","src":"2646:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6932,"type":"uint256","value":"mask"},"id":6968,"name":"Identifier","src":"2650:4:6"}],"id":6969,"name":"BinaryOperation","src":"2646:8:6"}],"id":6970,"name":"TupleExpression","src":"2645:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6925,"type":"uint256","value":"b"},"id":6971,"name":"Identifier","src":"2659:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6932,"type":"uint256","value":"mask"},"id":6972,"name":"Identifier","src":"2663:4:6"}],"id":6973,"name":"BinaryOperation","src":"2659:8:6"}],"id":6974,"name":"TupleExpression","src":"2658:10:6"}],"id":6975,"name":"BinaryOperation","src":"2645:23:6"}],"id":6976,"name":"VariableDeclarationStatement","src":"2633:35:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6966,"type":"uint256","value":"diff"},"id":6977,"name":"Identifier","src":"2690:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6978,"name":"Literal","src":"2698:1:6"}],"id":6979,"name":"BinaryOperation","src":"2690:9:6"},{"attributes":{"functionReturnParameters":6890},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6980,"name":"ElementaryTypeNameExpression","src":"2724:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6966,"type":"uint256","value":"diff"},"id":6981,"name":"Identifier","src":"2728:4:6"}],"id":6982,"name":"FunctionCall","src":"2724:9:6"}],"id":6983,"name":"Return","src":"2717:16:6"}],"id":6984,"name":"IfStatement","src":"2686:47:6"}],"id":6985,"name":"Block","src":"2318:430:6"}],"id":6986,"name":"IfStatement","src":"2306:442:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6904,"type":"uint256","value":"selfptr"},"id":6987,"name":"Identifier","src":"2761:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6988,"name":"Literal","src":"2772:2:6"}],"id":6989,"name":"Assignment","src":"2761:13:6"}],"id":6990,"name":"ExpressionStatement","src":"2761:13:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6907,"type":"uint256","value":"otherptr"},"id":6991,"name":"Identifier","src":"2788:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6992,"name":"Literal","src":"2800:2:6"}],"id":6993,"name":"Assignment","src":"2788:14:6"}],"id":6994,"name":"ExpressionStatement","src":"2788:14:6"}],"id":6995,"name":"Block","src":"2142:671:6"}],"id":6996,"name":"ForStatement","src":"2096:717:6"},{"attributes":{"functionReturnParameters":6890},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6997,"name":"ElementaryTypeNameExpression","src":"2830:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6880,"type":"uint256","value":"len"},"id":6998,"name":"Identifier","src":"2834:3:6"}],"id":6999,"name":"FunctionCall","src":"2830:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7000,"name":"ElementaryTypeNameExpression","src":"2841:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6886,"type":"uint256","value":"otherlen"},"id":7001,"name":"Identifier","src":"2845:8:6"}],"id":7002,"name":"FunctionCall","src":"2841:13:6"}],"id":7003,"name":"BinaryOperation","src":"2830:24:6"}],"id":7004,"name":"Return","src":"2823:31:6"}],"id":7005,"name":"Block","src":"1817:1044:6"}],"id":7006,"name":"FunctionDefinition","src":"1677:1184:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7034,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7007,"name":"ElementaryTypeName","src":"3295:5:6"}],"id":7008,"name":"VariableDeclaration","src":"3295:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7034,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7009,"name":"ElementaryTypeName","src":"3314:4:6"}],"id":7010,"name":"VariableDeclaration","src":"3314:11:6"},{"attributes":{"constant":false,"name":"other","scope":7034,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7011,"name":"ElementaryTypeName","src":"3327:5:6"}],"id":7012,"name":"VariableDeclaration","src":"3327:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":7034,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7013,"name":"ElementaryTypeName","src":"3347:4:6"}],"id":7014,"name":"VariableDeclaration","src":"3347:16:6"},{"attributes":{"constant":false,"name":"len","scope":7034,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7015,"name":"ElementaryTypeName","src":"3365:4:6"}],"id":7016,"name":"VariableDeclaration","src":"3365:8:6"}],"id":7017,"name":"ParameterList","src":"3294:80:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7034,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7018,"name":"ElementaryTypeName","src":"3398:4:6"}],"id":7019,"name":"VariableDeclaration","src":"3398:4:6"}],"id":7020,"name":"ParameterList","src":"3397:6:6"},{"children":[{"attributes":{"functionReturnParameters":7020},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":7021,"name":"Identifier","src":"3421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7008,"type":"bytes memory","value":"self"},"id":7022,"name":"Identifier","src":"3428:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"offset"},"id":7023,"name":"Identifier","src":"3434:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7016,"type":"uint256","value":"len"},"id":7024,"name":"Identifier","src":"3442:3:6"}],"id":7025,"name":"FunctionCall","src":"3421:25:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":7026,"name":"Identifier","src":"3450:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7012,"type":"bytes memory","value":"other"},"id":7027,"name":"Identifier","src":"3457:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7014,"type":"uint256","value":"otherOffset"},"id":7028,"name":"Identifier","src":"3464:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7016,"type":"uint256","value":"len"},"id":7029,"name":"Identifier","src":"3477:3:6"}],"id":7030,"name":"FunctionCall","src":"3450:31:6"}],"id":7031,"name":"BinaryOperation","src":"3421:60:6"}],"id":7032,"name":"Return","src":"3414:67:6"}],"id":7033,"name":"Block","src":"3404:84:6"}],"id":7034,"name":"FunctionDefinition","src":"3279:209:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7066,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7035,"name":"ElementaryTypeName","src":"3887:5:6"}],"id":7036,"name":"VariableDeclaration","src":"3887:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7037,"name":"ElementaryTypeName","src":"3906:4:6"}],"id":7038,"name":"VariableDeclaration","src":"3906:11:6"},{"attributes":{"constant":false,"name":"other","scope":7066,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7039,"name":"ElementaryTypeName","src":"3919:5:6"}],"id":7040,"name":"VariableDeclaration","src":"3919:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":7066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7041,"name":"ElementaryTypeName","src":"3939:4:6"}],"id":7042,"name":"VariableDeclaration","src":"3939:16:6"}],"id":7043,"name":"ParameterList","src":"3886:70:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7066,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7044,"name":"ElementaryTypeName","src":"3980:4:6"}],"id":7045,"name":"VariableDeclaration","src":"3980:4:6"}],"id":7046,"name":"ParameterList","src":"3979:6:6"},{"children":[{"attributes":{"functionReturnParameters":7046},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":7047,"name":"Identifier","src":"4003:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7036,"type":"bytes memory","value":"self"},"id":7048,"name":"Identifier","src":"4010:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7038,"type":"uint256","value":"offset"},"id":7049,"name":"Identifier","src":"4016:6:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7036,"type":"bytes memory","value":"self"},"id":7050,"name":"Identifier","src":"4024:4:6"}],"id":7051,"name":"MemberAccess","src":"4024:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7038,"type":"uint256","value":"offset"},"id":7052,"name":"Identifier","src":"4038:6:6"}],"id":7053,"name":"BinaryOperation","src":"4024:20:6"}],"id":7054,"name":"FunctionCall","src":"4003:42:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":7055,"name":"Identifier","src":"4049:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7040,"type":"bytes memory","value":"other"},"id":7056,"name":"Identifier","src":"4056:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7042,"type":"uint256","value":"otherOffset"},"id":7057,"name":"Identifier","src":"4063:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7040,"type":"bytes memory","value":"other"},"id":7058,"name":"Identifier","src":"4076:5:6"}],"id":7059,"name":"MemberAccess","src":"4076:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7042,"type":"uint256","value":"otherOffset"},"id":7060,"name":"Identifier","src":"4091:11:6"}],"id":7061,"name":"BinaryOperation","src":"4076:26:6"}],"id":7062,"name":"FunctionCall","src":"4049:54:6"}],"id":7063,"name":"BinaryOperation","src":"4003:100:6"}],"id":7064,"name":"Return","src":"3996:107:6"}],"id":7065,"name":"Block","src":"3986:124:6"}],"id":7066,"name":"FunctionDefinition","src":"3871:239:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7095,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7067,"name":"ElementaryTypeName","src":"4478:5:6"}],"id":7068,"name":"VariableDeclaration","src":"4478:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7095,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7069,"name":"ElementaryTypeName","src":"4497:4:6"}],"id":7070,"name":"VariableDeclaration","src":"4497:11:6"},{"attributes":{"constant":false,"name":"other","scope":7095,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7071,"name":"ElementaryTypeName","src":"4510:5:6"}],"id":7072,"name":"VariableDeclaration","src":"4510:18:6"}],"id":7073,"name":"ParameterList","src":"4477:52:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7095,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7074,"name":"ElementaryTypeName","src":"4553:4:6"}],"id":7075,"name":"VariableDeclaration","src":"4553:4:6"}],"id":7076,"name":"ParameterList","src":"4552:6:6"},{"children":[{"attributes":{"functionReturnParameters":7076},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7068,"type":"bytes memory","value":"self"},"id":7077,"name":"Identifier","src":"4576:4:6"}],"id":7078,"name":"MemberAccess","src":"4576:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7070,"type":"uint256","value":"offset"},"id":7079,"name":"Identifier","src":"4591:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7072,"type":"bytes memory","value":"other"},"id":7080,"name":"Identifier","src":"4600:5:6"}],"id":7081,"name":"MemberAccess","src":"4600:12:6"}],"id":7082,"name":"BinaryOperation","src":"4591:21:6"}],"id":7083,"name":"BinaryOperation","src":"4576:36:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[7034,7066,7095,7120],"referencedDeclaration":7034,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":7084,"name":"Identifier","src":"4616:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7068,"type":"bytes memory","value":"self"},"id":7085,"name":"Identifier","src":"4623:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7070,"type":"uint256","value":"offset"},"id":7086,"name":"Identifier","src":"4629:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7072,"type":"bytes memory","value":"other"},"id":7087,"name":"Identifier","src":"4637:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7088,"name":"Literal","src":"4644:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7072,"type":"bytes memory","value":"other"},"id":7089,"name":"Identifier","src":"4647:5:6"}],"id":7090,"name":"MemberAccess","src":"4647:12:6"}],"id":7091,"name":"FunctionCall","src":"4616:44:6"}],"id":7092,"name":"BinaryOperation","src":"4576:84:6"}],"id":7093,"name":"Return","src":"4569:91:6"}],"id":7094,"name":"Block","src":"4559:108:6"}],"id":7095,"name":"FunctionDefinition","src":"4462:205:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7120,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7096,"name":"ElementaryTypeName","src":"4931:5:6"}],"id":7097,"name":"VariableDeclaration","src":"4931:17:6"},{"attributes":{"constant":false,"name":"other","scope":7120,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7098,"name":"ElementaryTypeName","src":"4950:5:6"}],"id":7099,"name":"VariableDeclaration","src":"4950:18:6"}],"id":7100,"name":"ParameterList","src":"4930:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7120,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7101,"name":"ElementaryTypeName","src":"4992:4:6"}],"id":7102,"name":"VariableDeclaration","src":"4992:4:6"}],"id":7103,"name":"ParameterList","src":"4991:6:6"},{"children":[{"attributes":{"functionReturnParameters":7103},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7097,"type":"bytes memory","value":"self"},"id":7104,"name":"Identifier","src":"5015:4:6"}],"id":7105,"name":"MemberAccess","src":"5015:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7099,"type":"bytes memory","value":"other"},"id":7106,"name":"Identifier","src":"5030:5:6"}],"id":7107,"name":"MemberAccess","src":"5030:12:6"}],"id":7108,"name":"BinaryOperation","src":"5015:27:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[7034,7066,7095,7120],"referencedDeclaration":7034,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":7109,"name":"Identifier","src":"5046:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7097,"type":"bytes memory","value":"self"},"id":7110,"name":"Identifier","src":"5053:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7111,"name":"Literal","src":"5059:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7099,"type":"bytes memory","value":"other"},"id":7112,"name":"Identifier","src":"5062:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7113,"name":"Literal","src":"5069:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7097,"type":"bytes memory","value":"self"},"id":7114,"name":"Identifier","src":"5072:4:6"}],"id":7115,"name":"MemberAccess","src":"5072:11:6"}],"id":7116,"name":"FunctionCall","src":"5046:38:6"}],"id":7117,"name":"BinaryOperation","src":"5015:69:6"}],"id":7118,"name":"Return","src":"5008:76:6"}],"id":7119,"name":"Block","src":"4998:93:6"}],"id":7120,"name":"FunctionDefinition","src":"4915:176:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7136,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7121,"name":"ElementaryTypeName","src":"5352:5:6"}],"id":7122,"name":"VariableDeclaration","src":"5352:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7123,"name":"ElementaryTypeName","src":"5371:4:6"}],"id":7124,"name":"VariableDeclaration","src":"5371:8:6"}],"id":7125,"name":"ParameterList","src":"5351:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7136,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7126,"name":"ElementaryTypeName","src":"5404:5:6"}],"id":7127,"name":"VariableDeclaration","src":"5404:9:6"}],"id":7128,"name":"ParameterList","src":"5403:11:6"},{"children":[{"attributes":{"functionReturnParameters":7128},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7129,"name":"ElementaryTypeNameExpression","src":"5432:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7122,"type":"bytes memory","value":"self"},"id":7130,"name":"Identifier","src":"5438:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7124,"type":"uint256","value":"idx"},"id":7131,"name":"Identifier","src":"5443:3:6"}],"id":7132,"name":"IndexAccess","src":"5438:9:6"}],"id":7133,"name":"FunctionCall","src":"5432:16:6"}],"id":7134,"name":"Return","src":"5425:23:6"}],"id":7135,"name":"Block","src":"5415:40:6"}],"id":7136,"name":"FunctionDefinition","src":"5333:122:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7156,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7137,"name":"ElementaryTypeName","src":"5719:5:6"}],"id":7138,"name":"VariableDeclaration","src":"5719:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7156,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7139,"name":"ElementaryTypeName","src":"5738:4:6"}],"id":7140,"name":"VariableDeclaration","src":"5738:8:6"}],"id":7141,"name":"ParameterList","src":"5718:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7156,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":7142,"name":"ElementaryTypeName","src":"5771:6:6"}],"id":7143,"name":"VariableDeclaration","src":"5771:10:6"}],"id":7144,"name":"ParameterList","src":"5770:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7145,"name":"Identifier","src":"5793:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7140,"type":"uint256","value":"idx"},"id":7146,"name":"Identifier","src":"5801:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7147,"name":"Literal","src":"5807:1:6"}],"id":7148,"name":"BinaryOperation","src":"5801:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7138,"type":"bytes memory","value":"self"},"id":7149,"name":"Identifier","src":"5812:4:6"}],"id":7150,"name":"MemberAccess","src":"5812:11:6"}],"id":7151,"name":"BinaryOperation","src":"5801:22:6"}],"id":7152,"name":"FunctionCall","src":"5793:31:6"}],"id":7153,"name":"ExpressionStatement","src":"5793:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":7143,"isOffset":false,"isSlot":false,"src":"5857:3:6","valueSize":1}},{"self":{"declaration":7138,"isOffset":false,"isSlot":false,"src":"5882:4:6","valueSize":1}},{"idx":{"declaration":7140,"isOffset":false,"isSlot":false,"src":"5892:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":7154,"name":"InlineAssembly","src":"5834:82:6"}],"id":7155,"name":"Block","src":"5783:139:6"}],"id":7156,"name":"FunctionDefinition","src":"5699:223:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7176,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7157,"name":"ElementaryTypeName","src":"6186:5:6"}],"id":7158,"name":"VariableDeclaration","src":"6186:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7176,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7159,"name":"ElementaryTypeName","src":"6205:4:6"}],"id":7160,"name":"VariableDeclaration","src":"6205:8:6"}],"id":7161,"name":"ParameterList","src":"6185:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7176,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":7162,"name":"ElementaryTypeName","src":"6238:6:6"}],"id":7163,"name":"VariableDeclaration","src":"6238:10:6"}],"id":7164,"name":"ParameterList","src":"6237:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7165,"name":"Identifier","src":"6260:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7160,"type":"uint256","value":"idx"},"id":7166,"name":"Identifier","src":"6268:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7167,"name":"Literal","src":"6274:1:6"}],"id":7168,"name":"BinaryOperation","src":"6268:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7158,"type":"bytes memory","value":"self"},"id":7169,"name":"Identifier","src":"6279:4:6"}],"id":7170,"name":"MemberAccess","src":"6279:11:6"}],"id":7171,"name":"BinaryOperation","src":"6268:22:6"}],"id":7172,"name":"FunctionCall","src":"6260:31:6"}],"id":7173,"name":"ExpressionStatement","src":"6260:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":7163,"isOffset":false,"isSlot":false,"src":"6324:3:6","valueSize":1}},{"self":{"declaration":7158,"isOffset":false,"isSlot":false,"src":"6349:4:6","valueSize":1}},{"idx":{"declaration":7160,"isOffset":false,"isSlot":false,"src":"6359:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":7174,"name":"InlineAssembly","src":"6301:86:6"}],"id":7175,"name":"Block","src":"6250:143:6"}],"id":7176,"name":"FunctionDefinition","src":"6166:227:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7196,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7177,"name":"ElementaryTypeName","src":"6632:5:6"}],"id":7178,"name":"VariableDeclaration","src":"6632:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7196,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7179,"name":"ElementaryTypeName","src":"6651:4:6"}],"id":7180,"name":"VariableDeclaration","src":"6651:8:6"}],"id":7181,"name":"ParameterList","src":"6631:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7182,"name":"ElementaryTypeName","src":"6684:7:6"}],"id":7183,"name":"VariableDeclaration","src":"6684:11:6"}],"id":7184,"name":"ParameterList","src":"6683:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7185,"name":"Identifier","src":"6707:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7180,"type":"uint256","value":"idx"},"id":7186,"name":"Identifier","src":"6715:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7187,"name":"Literal","src":"6721:2:6"}],"id":7188,"name":"BinaryOperation","src":"6715:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7178,"type":"bytes memory","value":"self"},"id":7189,"name":"Identifier","src":"6727:4:6"}],"id":7190,"name":"MemberAccess","src":"6727:11:6"}],"id":7191,"name":"BinaryOperation","src":"6715:23:6"}],"id":7192,"name":"FunctionCall","src":"6707:32:6"}],"id":7193,"name":"ExpressionStatement","src":"6707:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":7183,"isOffset":false,"isSlot":false,"src":"6772:3:6","valueSize":1}},{"self":{"declaration":7178,"isOffset":false,"isSlot":false,"src":"6793:4:6","valueSize":1}},{"idx":{"declaration":7180,"isOffset":false,"isSlot":false,"src":"6804:3:6","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":7194,"name":"InlineAssembly","src":"6749:70:6"}],"id":7195,"name":"Block","src":"6697:128:6"}],"id":7196,"name":"FunctionDefinition","src":"6611:214:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7216,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7197,"name":"ElementaryTypeName","src":"7064:5:6"}],"id":7198,"name":"VariableDeclaration","src":"7064:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7199,"name":"ElementaryTypeName","src":"7083:4:6"}],"id":7200,"name":"VariableDeclaration","src":"7083:8:6"}],"id":7201,"name":"ParameterList","src":"7063:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7216,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":7202,"name":"ElementaryTypeName","src":"7116:7:6"}],"id":7203,"name":"VariableDeclaration","src":"7116:11:6"}],"id":7204,"name":"ParameterList","src":"7115:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7205,"name":"Identifier","src":"7139:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint256","value":"idx"},"id":7206,"name":"Identifier","src":"7147:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":7207,"name":"Literal","src":"7153:2:6"}],"id":7208,"name":"BinaryOperation","src":"7147:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7198,"type":"bytes memory","value":"self"},"id":7209,"name":"Identifier","src":"7159:4:6"}],"id":7210,"name":"MemberAccess","src":"7159:11:6"}],"id":7211,"name":"BinaryOperation","src":"7147:23:6"}],"id":7212,"name":"FunctionCall","src":"7139:32:6"}],"id":7213,"name":"ExpressionStatement","src":"7139:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":7203,"isOffset":false,"isSlot":false,"src":"7204:3:6","valueSize":1}},{"self":{"declaration":7198,"isOffset":false,"isSlot":false,"src":"7229:4:6","valueSize":1}},{"idx":{"declaration":7200,"isOffset":false,"isSlot":false,"src":"7240:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":7214,"name":"InlineAssembly","src":"7181:143:6"}],"id":7215,"name":"Block","src":"7129:201:6"}],"id":7216,"name":"FunctionDefinition","src":"7043:287:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7244,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7217,"name":"ElementaryTypeName","src":"7606:5:6"}],"id":7218,"name":"VariableDeclaration","src":"7606:17:6"},{"attributes":{"constant":false,"name":"idx","scope":7244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7219,"name":"ElementaryTypeName","src":"7625:4:6"}],"id":7220,"name":"VariableDeclaration","src":"7625:8:6"},{"attributes":{"constant":false,"name":"len","scope":7244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7221,"name":"ElementaryTypeName","src":"7635:4:6"}],"id":7222,"name":"VariableDeclaration","src":"7635:8:6"}],"id":7223,"name":"ParameterList","src":"7605:39:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7244,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7224,"name":"ElementaryTypeName","src":"7668:7:6"}],"id":7225,"name":"VariableDeclaration","src":"7668:11:6"}],"id":7226,"name":"ParameterList","src":"7667:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7227,"name":"Identifier","src":"7691:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7222,"type":"uint256","value":"len"},"id":7228,"name":"Identifier","src":"7699:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7229,"name":"Literal","src":"7706:2:6"}],"id":7230,"name":"BinaryOperation","src":"7699:9:6"}],"id":7231,"name":"FunctionCall","src":"7691:18:6"}],"id":7232,"name":"ExpressionStatement","src":"7691:18:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7233,"name":"Identifier","src":"7719:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7220,"type":"uint256","value":"idx"},"id":7234,"name":"Identifier","src":"7727:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7222,"type":"uint256","value":"len"},"id":7235,"name":"Identifier","src":"7733:3:6"}],"id":7236,"name":"BinaryOperation","src":"7727:9:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7218,"type":"bytes memory","value":"self"},"id":7237,"name":"Identifier","src":"7740:4:6"}],"id":7238,"name":"MemberAccess","src":"7740:11:6"}],"id":7239,"name":"BinaryOperation","src":"7727:24:6"}],"id":7240,"name":"FunctionCall","src":"7719:33:6"}],"id":7241,"name":"ExpressionStatement","src":"7719:33:6"},{"attributes":{"externalReferences":[{"len":{"declaration":7222,"isOffset":false,"isSlot":false,"src":"7822:3:6","valueSize":1}},{"ret":{"declaration":7225,"isOffset":false,"isSlot":false,"src":"7845:3:6","valueSize":1}},{"self":{"declaration":7218,"isOffset":false,"isSlot":false,"src":"7870:4:6","valueSize":1}},{"idx":{"declaration":7220,"isOffset":false,"isSlot":false,"src":"7881:3:6","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":7242,"name":"InlineAssembly","src":"7762:142:6"}],"id":7243,"name":"Block","src":"7681:229:6"}],"id":7244,"name":"FunctionDefinition","src":"7586:324:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":7284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7245,"name":"ElementaryTypeName","src":"7932:4:6"}],"id":7246,"name":"VariableDeclaration","src":"7932:9:6"},{"attributes":{"constant":false,"name":"src","scope":7284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7247,"name":"ElementaryTypeName","src":"7943:4:6"}],"id":7248,"name":"VariableDeclaration","src":"7943:8:6"},{"attributes":{"constant":false,"name":"len","scope":7284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7249,"name":"ElementaryTypeName","src":"7953:4:6"}],"id":7250,"name":"VariableDeclaration","src":"7953:8:6"}],"id":7251,"name":"ParameterList","src":"7931:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":7252,"name":"ParameterList","src":"7976:0:6"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7250,"type":"uint256","value":"len"},"id":7253,"name":"Identifier","src":"8043:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7254,"name":"Literal","src":"8050:2:6"}],"id":7255,"name":"BinaryOperation","src":"8043:9:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7250,"type":"uint256","value":"len"},"id":7256,"name":"Identifier","src":"8054:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7257,"name":"Literal","src":"8061:2:6"}],"id":7258,"name":"Assignment","src":"8054:9:6"}],"id":7259,"name":"ExpressionStatement","src":"8054:9:6"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":7248,"isOffset":false,"isSlot":false,"src":"8125:3:6","valueSize":1}},{"dest":{"declaration":7246,"isOffset":false,"isSlot":false,"src":"8113:4:6","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":7260,"name":"InlineAssembly","src":"8079:65:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7246,"type":"uint256","value":"dest"},"id":7261,"name":"Identifier","src":"8157:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7262,"name":"Literal","src":"8165:2:6"}],"id":7263,"name":"Assignment","src":"8157:10:6"}],"id":7264,"name":"ExpressionStatement","src":"8157:10:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7248,"type":"uint256","value":"src"},"id":7265,"name":"Identifier","src":"8181:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7266,"name":"Literal","src":"8188:2:6"}],"id":7267,"name":"Assignment","src":"8181:9:6"}],"id":7268,"name":"ExpressionStatement","src":"8181:9:6"}],"id":7269,"name":"Block","src":"8065:136:6"}],"id":7270,"name":"ForStatement","src":"8036:165:6"},{"attributes":{"assignments":[7272]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7271,"name":"ElementaryTypeName","src":"8243:4:6"}],"id":7272,"name":"VariableDeclaration","src":"8243:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7273,"name":"Literal","src":"8255:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7274,"name":"Literal","src":"8263:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7250,"type":"uint256","value":"len"},"id":7275,"name":"Identifier","src":"8268:3:6"}],"id":7276,"name":"BinaryOperation","src":"8263:8:6"}],"id":7277,"name":"TupleExpression","src":"8262:10:6"}],"id":7278,"name":"BinaryOperation","src":"8255:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7279,"name":"Literal","src":"8275:1:6"}],"id":7280,"name":"BinaryOperation","src":"8255:21:6"}],"id":7281,"name":"VariableDeclarationStatement","src":"8243:33:6"},{"attributes":{"externalReferences":[{"src":{"declaration":7248,"isOffset":false,"isSlot":false,"src":"8334:3:6","valueSize":1}},{"mask":{"declaration":7272,"isOffset":false,"isSlot":false,"src":"8344:4:6","valueSize":1}},{"dest":{"declaration":7246,"isOffset":false,"isSlot":false,"src":"8421:4:6","valueSize":1}},{"dest":{"declaration":7246,"isOffset":false,"isSlot":false,"src":"8389:4:6","valueSize":1}},{"mask":{"declaration":7272,"isOffset":false,"isSlot":false,"src":"8396:4:6","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":7282,"name":"InlineAssembly","src":"8286:173:6"}],"id":7283,"name":"Block","src":"7976:489:6"}],"id":7284,"name":"FunctionDefinition","src":"7916:549:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7327,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7285,"name":"ElementaryTypeName","src":"8704:5:6"}],"id":7286,"name":"VariableDeclaration","src":"8704:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7287,"name":"ElementaryTypeName","src":"8723:4:6"}],"id":7288,"name":"VariableDeclaration","src":"8723:11:6"},{"attributes":{"constant":false,"name":"len","scope":7327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7289,"name":"ElementaryTypeName","src":"8736:4:6"}],"id":7290,"name":"VariableDeclaration","src":"8736:8:6"}],"id":7291,"name":"ParameterList","src":"8703:42:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7327,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7292,"name":"ElementaryTypeName","src":"8768:5:6"}],"id":7293,"name":"VariableDeclaration","src":"8768:12:6"}],"id":7294,"name":"ParameterList","src":"8767:14:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7295,"name":"Identifier","src":"8792:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7288,"type":"uint256","value":"offset"},"id":7296,"name":"Identifier","src":"8800:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7290,"type":"uint256","value":"len"},"id":7297,"name":"Identifier","src":"8809:3:6"}],"id":7298,"name":"BinaryOperation","src":"8800:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7286,"type":"bytes memory","value":"self"},"id":7299,"name":"Identifier","src":"8816:4:6"}],"id":7300,"name":"MemberAccess","src":"8816:11:6"}],"id":7301,"name":"BinaryOperation","src":"8800:27:6"}],"id":7302,"name":"FunctionCall","src":"8792:36:6"}],"id":7303,"name":"ExpressionStatement","src":"8792:36:6"},{"attributes":{"assignments":[7305]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7326,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7304,"name":"ElementaryTypeName","src":"8839:5:6"}],"id":7305,"name":"VariableDeclaration","src":"8839:16:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7306,"name":"ElementaryTypeName","src":"8862:5:6"}],"id":7307,"name":"NewExpression","src":"8858:9:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7290,"type":"uint256","value":"len"},"id":7308,"name":"Identifier","src":"8868:3:6"}],"id":7309,"name":"FunctionCall","src":"8858:14:6"}],"id":7310,"name":"VariableDeclarationStatement","src":"8839:33:6"},{"attributes":{"assignments":[7312],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":7326,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7311,"name":"ElementaryTypeName","src":"8882:4:6"}],"id":7312,"name":"VariableDeclaration","src":"8882:9:6"}],"id":7313,"name":"VariableDeclarationStatement","src":"8882:9:6"},{"attributes":{"assignments":[7315],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":7326,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7314,"name":"ElementaryTypeName","src":"8901:4:6"}],"id":7315,"name":"VariableDeclaration","src":"8901:8:6"}],"id":7316,"name":"VariableDeclarationStatement","src":"8901:8:6"},{"attributes":{"externalReferences":[{"dest":{"declaration":7312,"isOffset":false,"isSlot":false,"src":"8943:4:6","valueSize":1}},{"ret":{"declaration":7305,"isOffset":false,"isSlot":false,"src":"8955:3:6","valueSize":1}},{"src":{"declaration":7315,"isOffset":false,"isSlot":false,"src":"8976:3:6","valueSize":1}},{"self":{"declaration":7286,"isOffset":false,"isSlot":false,"src":"8991:4:6","valueSize":1}},{"offset":{"declaration":7288,"isOffset":false,"isSlot":false,"src":"9002:6:6","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":7317,"name":"InlineAssembly","src":"8920:99:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7284,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7318,"name":"Identifier","src":"9028:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7312,"type":"uint256","value":"dest"},"id":7319,"name":"Identifier","src":"9035:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7315,"type":"uint256","value":"src"},"id":7320,"name":"Identifier","src":"9041:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7290,"type":"uint256","value":"len"},"id":7321,"name":"Identifier","src":"9046:3:6"}],"id":7322,"name":"FunctionCall","src":"9028:22:6"}],"id":7323,"name":"ExpressionStatement","src":"9028:22:6"},{"attributes":{"functionReturnParameters":7294},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"ret"},"id":7324,"name":"Identifier","src":"9068:3:6"}],"id":7325,"name":"Return","src":"9061:10:6"}],"id":7326,"name":"Block","src":"8782:296:6"}],"id":7327,"name":"FunctionDefinition","src":"8685:393:6"},{"attributes":{"constant":true,"name":"base32HexTable","scope":7550,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7328,"name":"ElementaryTypeName","src":"9206:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":7329,"name":"Literal","src":"9238:147:6"}],"id":7330,"name":"VariableDeclaration","src":"9206:179:6"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":7550,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7549,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7331,"name":"ElementaryTypeName","src":"9697:5:6"}],"id":7332,"name":"VariableDeclaration","src":"9697:17:6"},{"attributes":{"constant":false,"name":"off","scope":7549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7333,"name":"ElementaryTypeName","src":"9716:4:6"}],"id":7334,"name":"VariableDeclaration","src":"9716:8:6"},{"attributes":{"constant":false,"name":"len","scope":7549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7335,"name":"ElementaryTypeName","src":"9726:4:6"}],"id":7336,"name":"VariableDeclaration","src":"9726:8:6"}],"id":7337,"name":"ParameterList","src":"9696:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7549,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7338,"name":"ElementaryTypeName","src":"9758:7:6"}],"id":7339,"name":"VariableDeclaration","src":"9758:7:6"}],"id":7340,"name":"ParameterList","src":"9757:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7341,"name":"Identifier","src":"9777:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7342,"name":"Identifier","src":"9785:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":7343,"name":"Literal","src":"9792:2:6"}],"id":7344,"name":"BinaryOperation","src":"9785:9:6"}],"id":7345,"name":"FunctionCall","src":"9777:18:6"}],"id":7346,"name":"ExpressionStatement","src":"9777:18:6"},{"attributes":{"assignments":[7348]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7548,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7347,"name":"ElementaryTypeName","src":"9806:4:6"}],"id":7348,"name":"VariableDeclaration","src":"9806:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7349,"name":"Literal","src":"9817:1:6"}],"id":7350,"name":"VariableDeclarationStatement","src":"9806:12:6"},{"attributes":{"assignments":[7352],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":7548,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7351,"name":"ElementaryTypeName","src":"9828:5:6"}],"id":7352,"name":"VariableDeclaration","src":"9828:13:6"}],"id":7353,"name":"VariableDeclarationStatement","src":"9828:13:6"},{"children":[{"attributes":{"assignments":[7355]},"children":[{"attributes":{"constant":false,"name":"i","scope":7420,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7354,"name":"ElementaryTypeName","src":"9855:4:6"}],"id":7355,"name":"VariableDeclaration","src":"9855:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7356,"name":"Literal","src":"9864:1:6"}],"id":7357,"name":"VariableDeclarationStatement","src":"9855:10:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7355,"type":"uint256","value":"i"},"id":7358,"name":"Identifier","src":"9867:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7359,"name":"Identifier","src":"9871:3:6"}],"id":7360,"name":"BinaryOperation","src":"9867:7:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7355,"type":"uint256","value":"i"},"id":7361,"name":"Identifier","src":"9876:1:6"}],"id":7362,"name":"UnaryOperation","src":"9876:3:6"}],"id":7363,"name":"ExpressionStatement","src":"9876:3:6"},{"children":[{"attributes":{"assignments":[7365]},"children":[{"attributes":{"constant":false,"name":"char","scope":7419,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":7364,"name":"ElementaryTypeName","src":"9895:6:6"}],"id":7365,"name":"VariableDeclaration","src":"9895:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7332,"type":"bytes memory","value":"self"},"id":7366,"name":"Identifier","src":"9909:4:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7334,"type":"uint256","value":"off"},"id":7367,"name":"Identifier","src":"9914:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7355,"type":"uint256","value":"i"},"id":7368,"name":"Identifier","src":"9920:1:6"}],"id":7369,"name":"BinaryOperation","src":"9914:7:6"}],"id":7370,"name":"IndexAccess","src":"9909:13:6"}],"id":7371,"name":"VariableDeclarationStatement","src":"9895:27:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7372,"name":"Identifier","src":"9936:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"bytes1","value":"char"},"id":7373,"name":"Identifier","src":"9944:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":7374,"name":"Literal","src":"9952:4:6"}],"id":7375,"name":"BinaryOperation","src":"9944:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"bytes1","value":"char"},"id":7376,"name":"Identifier","src":"9960:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":7377,"name":"Literal","src":"9968:4:6"}],"id":7378,"name":"BinaryOperation","src":"9960:12:6"}],"id":7379,"name":"BinaryOperation","src":"9944:28:6"}],"id":7380,"name":"FunctionCall","src":"9936:37:6"}],"id":7381,"name":"ExpressionStatement","src":"9936:37:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7382,"name":"Identifier","src":"9987:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7383,"name":"ElementaryTypeNameExpression","src":"9997:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7330,"type":"bytes memory","value":"base32HexTable"},"id":7384,"name":"Identifier","src":"10003:14:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7385,"name":"ElementaryTypeNameExpression","src":"10018:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7386,"name":"ElementaryTypeNameExpression","src":"10023:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"bytes1","value":"char"},"id":7387,"name":"Identifier","src":"10029:4:6"}],"id":7388,"name":"FunctionCall","src":"10023:11:6"}],"id":7389,"name":"FunctionCall","src":"10018:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":7390,"name":"Literal","src":"10038:4:6"}],"id":7391,"name":"BinaryOperation","src":"10018:24:6"}],"id":7392,"name":"IndexAccess","src":"10003:40:6"}],"id":7393,"name":"FunctionCall","src":"9997:47:6"}],"id":7394,"name":"Assignment","src":"9987:57:6"}],"id":7395,"name":"ExpressionStatement","src":"9987:57:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":7396,"name":"Identifier","src":"10058:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7397,"name":"Identifier","src":"10066:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":7398,"name":"Literal","src":"10077:4:6"}],"id":7399,"name":"BinaryOperation","src":"10066:15:6"}],"id":7400,"name":"FunctionCall","src":"10058:24:6"}],"id":7401,"name":"ExpressionStatement","src":"10058:24:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7355,"type":"uint256","value":"i"},"id":7402,"name":"Identifier","src":"10099:1:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7403,"name":"Identifier","src":"10104:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7404,"name":"Literal","src":"10110:1:6"}],"id":7405,"name":"BinaryOperation","src":"10104:7:6"}],"id":7406,"name":"BinaryOperation","src":"10099:12:6"},{"children":[{"id":7407,"name":"Break","src":"10131:5:6"}],"id":7408,"name":"Block","src":"10113:38:6"}],"id":7409,"name":"IfStatement","src":"10096:55:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7410,"name":"Identifier","src":"10164:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7411,"name":"Identifier","src":"10171:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7412,"name":"Literal","src":"10178:1:6"}],"id":7413,"name":"BinaryOperation","src":"10171:8:6"}],"id":7414,"name":"TupleExpression","src":"10170:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7415,"name":"Identifier","src":"10183:7:6"}],"id":7416,"name":"BinaryOperation","src":"10170:20:6"}],"id":7417,"name":"Assignment","src":"10164:26:6"}],"id":7418,"name":"ExpressionStatement","src":"10164:26:6"}],"id":7419,"name":"Block","src":"9881:320:6"}],"id":7420,"name":"ForStatement","src":"9851:350:6"},{"attributes":{"assignments":[7422]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":7548,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7421,"name":"ElementaryTypeName","src":"10211:4:6"}],"id":7422,"name":"VariableDeclaration","src":"10211:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7423,"name":"Identifier","src":"10225:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7424,"name":"Literal","src":"10231:1:6"}],"id":7425,"name":"BinaryOperation","src":"10225:7:6"}],"id":7426,"name":"VariableDeclarationStatement","src":"10211:21:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7427,"name":"Identifier","src":"10245:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7428,"name":"Literal","src":"10251:1:6"}],"id":7429,"name":"BinaryOperation","src":"10245:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7430,"name":"Literal","src":"10256:1:6"}],"id":7431,"name":"BinaryOperation","src":"10245:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7432,"name":"Identifier","src":"10325:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7433,"name":"Identifier","src":"10332:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7434,"name":"Literal","src":"10339:1:6"}],"id":7435,"name":"BinaryOperation","src":"10332:8:6"}],"id":7436,"name":"TupleExpression","src":"10331:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7437,"name":"Identifier","src":"10344:7:6"}],"id":7438,"name":"BinaryOperation","src":"10331:20:6"}],"id":7439,"name":"Assignment","src":"10325:26:6"}],"id":7440,"name":"ExpressionStatement","src":"10325:26:6"}],"id":7441,"name":"Block","src":"10259:103:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7442,"name":"Identifier","src":"10371:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7443,"name":"Literal","src":"10377:1:6"}],"id":7444,"name":"BinaryOperation","src":"10371:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7445,"name":"Literal","src":"10382:1:6"}],"id":7446,"name":"BinaryOperation","src":"10371:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7447,"name":"Identifier","src":"10444:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7448,"name":"Identifier","src":"10451:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7449,"name":"Literal","src":"10458:1:6"}],"id":7450,"name":"BinaryOperation","src":"10451:8:6"}],"id":7451,"name":"TupleExpression","src":"10450:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7452,"name":"Identifier","src":"10464:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7453,"name":"Literal","src":"10475:1:6"}],"id":7454,"name":"BinaryOperation","src":"10464:12:6"}],"id":7455,"name":"TupleExpression","src":"10463:14:6"}],"id":7456,"name":"BinaryOperation","src":"10450:27:6"}],"id":7457,"name":"Assignment","src":"10444:33:6"}],"id":7458,"name":"ExpressionStatement","src":"10444:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7459,"name":"Identifier","src":"10491:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7460,"name":"Literal","src":"10501:1:6"}],"id":7461,"name":"Assignment","src":"10491:11:6"}],"id":7462,"name":"ExpressionStatement","src":"10491:11:6"}],"id":7463,"name":"Block","src":"10385:128:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7464,"name":"Identifier","src":"10522:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7465,"name":"Literal","src":"10528:1:6"}],"id":7466,"name":"BinaryOperation","src":"10522:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7467,"name":"Literal","src":"10533:1:6"}],"id":7468,"name":"BinaryOperation","src":"10522:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7469,"name":"Identifier","src":"10597:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7470,"name":"Identifier","src":"10604:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7471,"name":"Literal","src":"10611:1:6"}],"id":7472,"name":"BinaryOperation","src":"10604:8:6"}],"id":7473,"name":"TupleExpression","src":"10603:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7474,"name":"Identifier","src":"10617:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7475,"name":"Literal","src":"10628:1:6"}],"id":7476,"name":"BinaryOperation","src":"10617:12:6"}],"id":7477,"name":"TupleExpression","src":"10616:14:6"}],"id":7478,"name":"BinaryOperation","src":"10603:27:6"}],"id":7479,"name":"Assignment","src":"10597:33:6"}],"id":7480,"name":"ExpressionStatement","src":"10597:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7481,"name":"Identifier","src":"10644:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7482,"name":"Literal","src":"10654:1:6"}],"id":7483,"name":"Assignment","src":"10644:11:6"}],"id":7484,"name":"ExpressionStatement","src":"10644:11:6"}],"id":7485,"name":"Block","src":"10536:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7486,"name":"Identifier","src":"10675:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7487,"name":"Literal","src":"10681:1:6"}],"id":7488,"name":"BinaryOperation","src":"10675:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7489,"name":"Literal","src":"10686:1:6"}],"id":7490,"name":"BinaryOperation","src":"10675:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7491,"name":"Identifier","src":"10750:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7492,"name":"Identifier","src":"10757:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7493,"name":"Literal","src":"10764:1:6"}],"id":7494,"name":"BinaryOperation","src":"10757:8:6"}],"id":7495,"name":"TupleExpression","src":"10756:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7496,"name":"Identifier","src":"10770:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7497,"name":"Literal","src":"10781:1:6"}],"id":7498,"name":"BinaryOperation","src":"10770:12:6"}],"id":7499,"name":"TupleExpression","src":"10769:14:6"}],"id":7500,"name":"BinaryOperation","src":"10756:27:6"}],"id":7501,"name":"Assignment","src":"10750:33:6"}],"id":7502,"name":"ExpressionStatement","src":"10750:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7503,"name":"Identifier","src":"10797:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7504,"name":"Literal","src":"10807:1:6"}],"id":7505,"name":"Assignment","src":"10797:11:6"}],"id":7506,"name":"ExpressionStatement","src":"10797:11:6"}],"id":7507,"name":"Block","src":"10689:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7336,"type":"uint256","value":"len"},"id":7508,"name":"Identifier","src":"10828:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7509,"name":"Literal","src":"10834:1:6"}],"id":7510,"name":"BinaryOperation","src":"10828:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":7511,"name":"Literal","src":"10839:1:6"}],"id":7512,"name":"BinaryOperation","src":"10828:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7513,"name":"Identifier","src":"10904:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7514,"name":"Identifier","src":"10911:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7515,"name":"Literal","src":"10918:1:6"}],"id":7516,"name":"BinaryOperation","src":"10911:8:6"}],"id":7517,"name":"TupleExpression","src":"10910:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint8","value":"decoded"},"id":7518,"name":"Identifier","src":"10924:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7519,"name":"Literal","src":"10935:1:6"}],"id":7520,"name":"BinaryOperation","src":"10924:12:6"}],"id":7521,"name":"TupleExpression","src":"10923:14:6"}],"id":7522,"name":"BinaryOperation","src":"10910:27:6"}],"id":7523,"name":"Assignment","src":"10904:33:6"}],"id":7524,"name":"ExpressionStatement","src":"10904:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7525,"name":"Identifier","src":"10951:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7526,"name":"Literal","src":"10961:1:6"}],"id":7527,"name":"Assignment","src":"10951:11:6"}],"id":7528,"name":"ExpressionStatement","src":"10951:11:6"}],"id":7529,"name":"Block","src":"10842:131:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[7570,7571],"referencedDeclaration":7570,"type":"function () pure","value":"revert"},"id":7530,"name":"Identifier","src":"10993:6:6"}],"id":7531,"name":"FunctionCall","src":"10993:8:6"}],"id":7532,"name":"ExpressionStatement","src":"10993:8:6"}],"id":7533,"name":"Block","src":"10979:33:6"}],"id":7534,"name":"IfStatement","src":"10825:187:6"}],"id":7535,"name":"IfStatement","src":"10672:340:6"}],"id":7536,"name":"IfStatement","src":"10519:493:6"}],"id":7537,"name":"IfStatement","src":"10368:644:6"}],"id":7538,"name":"IfStatement","src":"10242:770:6"},{"attributes":{"functionReturnParameters":7340},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7539,"name":"ElementaryTypeNameExpression","src":"11029:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7348,"type":"uint256","value":"ret"},"id":7540,"name":"Identifier","src":"11037:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7541,"name":"Literal","src":"11045:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7422,"type":"uint256","value":"bitlen"},"id":7542,"name":"Identifier","src":"11051:6:6"}],"id":7543,"name":"BinaryOperation","src":"11045:12:6"}],"id":7544,"name":"TupleExpression","src":"11044:14:6"}],"id":7545,"name":"BinaryOperation","src":"11037:21:6"}],"id":7546,"name":"FunctionCall","src":"11029:30:6"}],"id":7547,"name":"Return","src":"11022:37:6"}],"id":7548,"name":"Block","src":"9767:1299:6"}],"id":7549,"name":"FunctionDefinition","src":"9668:1398:6"}],"id":7550,"name":"ContractDefinition","src":"26:11042:6"}],"id":7551,"name":"SourceUnit","src":"0:11069:6"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[3019]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2847,"name":"PragmaDirective","src":"1401:23:7"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":2848,"name":"PragmaDirective","src":"1425:33:7"},{"attributes":{"SourceUnit":2846,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2849,"name":"ImportDirective","src":"1460:19:7"},{"attributes":{"SourceUnit":4992,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2850,"name":"ImportDirective","src":"1480:36:7"},{"attributes":{"SourceUnit":5151,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2851,"name":"ImportDirective","src":"1517:37:7"},{"attributes":{"SourceUnit":5221,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2852,"name":"ImportDirective","src":"1555:44:7"},{"attributes":{"SourceUnit":5712,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2853,"name":"ImportDirective","src":"1600:36:7"},{"attributes":{"SourceUnit":5899,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2854,"name":"ImportDirective","src":"1637:42:7"},{"attributes":{"SourceUnit":5969,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2855,"name":"ImportDirective","src":"1680:37:7"},{"attributes":{"SourceUnit":6060,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2856,"name":"ImportDirective","src":"1718:39:7"},{"attributes":{"SourceUnit":6143,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":3020,"symbolAliases":[null],"unitAlias":""},"id":2857,"name":"ImportDirective","src":"1758:37:7"},{"attributes":{"contractDependencies":[4991,5150,5220,5711,5898,5968,6059,6142,6211],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[3019,6142,6059,5968,5898,5711,5220,5150,4991,6211],"name":"PublicResolver","scope":3020},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":4991,"type":"contract ABIResolver"},"id":2858,"name":"UserDefinedTypeName","src":"1924:11:7"}],"id":2859,"name":"InheritanceSpecifier","src":"1924:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5150,"type":"contract AddrResolver"},"id":2860,"name":"UserDefinedTypeName","src":"1937:12:7"}],"id":2861,"name":"InheritanceSpecifier","src":"1937:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":5220,"type":"contract ContentHashResolver"},"id":2862,"name":"UserDefinedTypeName","src":"1951:19:7"}],"id":2863,"name":"InheritanceSpecifier","src":"1951:19:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":5711,"type":"contract DNSResolver"},"id":2864,"name":"UserDefinedTypeName","src":"1972:11:7"}],"id":2865,"name":"InheritanceSpecifier","src":"1972:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":5898,"type":"contract InterfaceResolver"},"id":2866,"name":"UserDefinedTypeName","src":"1985:17:7"}],"id":2867,"name":"InheritanceSpecifier","src":"1985:17:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":5968,"type":"contract NameResolver"},"id":2868,"name":"UserDefinedTypeName","src":"2004:12:7"}],"id":2869,"name":"InheritanceSpecifier","src":"2004:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":6059,"type":"contract PubkeyResolver"},"id":2870,"name":"UserDefinedTypeName","src":"2018:14:7"}],"id":2871,"name":"InheritanceSpecifier","src":"2018:14:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":6142,"type":"contract TextResolver"},"id":2872,"name":"UserDefinedTypeName","src":"2034:12:7"}],"id":2873,"name":"InheritanceSpecifier","src":"2034:12:7"},{"attributes":{"constant":false,"name":"ens","scope":3019,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":2845,"type":"contract ENS"},"id":2874,"name":"UserDefinedTypeName","src":"2053:3:7"}],"id":2875,"name":"VariableDeclaration","src":"2053:7:7"},{"attributes":{"constant":false,"name":"authorisations","scope":3019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2876,"name":"ElementaryTypeName","src":"2328:7:7"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":2877,"name":"ElementaryTypeName","src":"2345:7:7"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2878,"name":"ElementaryTypeName","src":"2362:7:7"},{"attributes":{"name":"bool","type":"bool"},"id":2879,"name":"ElementaryTypeName","src":"2371:4:7"}],"id":2880,"name":"Mapping","src":"2354:22:7"}],"id":2881,"name":"Mapping","src":"2337:40:7"}],"id":2882,"name":"Mapping","src":"2320:58:7"}],"id":2883,"name":"VariableDeclaration","src":"2320:80:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2893,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2884,"name":"ElementaryTypeName","src":"2434:7:7"}],"id":2885,"name":"VariableDeclaration","src":"2434:20:7"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":2893,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2886,"name":"ElementaryTypeName","src":"2456:7:7"}],"id":2887,"name":"VariableDeclaration","src":"2456:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":2893,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2888,"name":"ElementaryTypeName","src":"2479:7:7"}],"id":2889,"name":"VariableDeclaration","src":"2479:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":2893,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2890,"name":"ElementaryTypeName","src":"2503:4:7"}],"id":2891,"name":"VariableDeclaration","src":"2503:17:7"}],"id":2892,"name":"ParameterList","src":"2433:88:7"}],"id":2893,"name":"EventDefinition","src":"2407:115:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3019,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":2903,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":2845,"type":"contract ENS"},"id":2894,"name":"UserDefinedTypeName","src":"2540:3:7"}],"id":2895,"name":"VariableDeclaration","src":"2540:8:7"}],"id":2896,"name":"ParameterList","src":"2539:10:7"},{"attributes":{"parameters":[null]},"children":[],"id":2897,"name":"ParameterList","src":"2557:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2875,"type":"contract ENS","value":"ens"},"id":2898,"name":"Identifier","src":"2567:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2895,"type":"contract ENS","value":"_ens"},"id":2899,"name":"Identifier","src":"2573:4:7"}],"id":2900,"name":"Assignment","src":"2567:10:7"}],"id":2901,"name":"ExpressionStatement","src":"2567:10:7"}],"id":2902,"name":"Block","src":"2557:27:7"}],"id":2903,"name":"FunctionDefinition","src":"2528:56:7"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":3019,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2932,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2904,"name":"ElementaryTypeName","src":"3295:7:7"}],"id":2905,"name":"VariableDeclaration","src":"3295:12:7"},{"attributes":{"constant":false,"name":"target","scope":2932,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2906,"name":"ElementaryTypeName","src":"3309:7:7"}],"id":2907,"name":"VariableDeclaration","src":"3309:14:7"},{"attributes":{"constant":false,"name":"isAuthorised","scope":2932,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2908,"name":"ElementaryTypeName","src":"3325:4:7"}],"id":2909,"name":"VariableDeclaration","src":"3325:17:7"}],"id":2910,"name":"ParameterList","src":"3294:49:7"},{"attributes":{"parameters":[null]},"children":[],"id":2911,"name":"ParameterList","src":"3353:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2883,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":2912,"name":"Identifier","src":"3363:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2905,"type":"bytes32","value":"node"},"id":2913,"name":"Identifier","src":"3378:4:7"}],"id":2917,"name":"IndexAccess","src":"3363:20:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2914,"name":"Identifier","src":"3384:3:7"}],"id":2915,"name":"MemberAccess","src":"3384:10:7"}],"id":2918,"name":"IndexAccess","src":"3363:32:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2907,"type":"address","value":"target"},"id":2916,"name":"Identifier","src":"3396:6:7"}],"id":2919,"name":"IndexAccess","src":"3363:40:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2909,"type":"bool","value":"isAuthorised"},"id":2920,"name":"Identifier","src":"3406:12:7"}],"id":2921,"name":"Assignment","src":"3363:55:7"}],"id":2922,"name":"ExpressionStatement","src":"3363:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2893,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":2923,"name":"Identifier","src":"3433:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2905,"type":"bytes32","value":"node"},"id":2924,"name":"Identifier","src":"3454:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2925,"name":"Identifier","src":"3460:3:7"}],"id":2926,"name":"MemberAccess","src":"3460:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2907,"type":"address","value":"target"},"id":2927,"name":"Identifier","src":"3472:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2909,"type":"bool","value":"isAuthorised"},"id":2928,"name":"Identifier","src":"3480:12:7"}],"id":2929,"name":"FunctionCall","src":"3433:60:7"}],"id":2930,"name":"EmitStatement","src":"3428:65:7"}],"id":2931,"name":"Block","src":"3353:147:7"}],"id":2932,"name":"FunctionDefinition","src":"3269:231:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":3019,"stateMutability":"view","superFunction":6166,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2961,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2933,"name":"ElementaryTypeName","src":"3528:7:7"}],"id":2934,"name":"VariableDeclaration","src":"3528:12:7"}],"id":2935,"name":"ParameterList","src":"3527:14:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":2961,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2936,"name":"ElementaryTypeName","src":"3564:4:7"}],"id":2937,"name":"VariableDeclaration","src":"3564:4:7"}],"id":2938,"name":"ParameterList","src":"3563:6:7"},{"children":[{"attributes":{"assignments":[2940]},"children":[{"attributes":{"constant":false,"name":"owner","scope":2960,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2939,"name":"ElementaryTypeName","src":"3580:7:7"}],"id":2940,"name":"VariableDeclaration","src":"3580:13:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":2814,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2875,"type":"contract ENS","value":"ens"},"id":2941,"name":"Identifier","src":"3596:3:7"}],"id":2942,"name":"MemberAccess","src":"3596:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2934,"type":"bytes32","value":"node"},"id":2943,"name":"Identifier","src":"3606:4:7"}],"id":2944,"name":"FunctionCall","src":"3596:15:7"}],"id":2945,"name":"VariableDeclarationStatement","src":"3580:31:7"},{"attributes":{"functionReturnParameters":2938},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2940,"type":"address","value":"owner"},"id":2946,"name":"Identifier","src":"3628:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2947,"name":"Identifier","src":"3637:3:7"}],"id":2948,"name":"MemberAccess","src":"3637:10:7"}],"id":2949,"name":"BinaryOperation","src":"3628:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2883,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":2950,"name":"Identifier","src":"3651:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2934,"type":"bytes32","value":"node"},"id":2951,"name":"Identifier","src":"3666:4:7"}],"id":2952,"name":"IndexAccess","src":"3651:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2940,"type":"address","value":"owner"},"id":2953,"name":"Identifier","src":"3672:5:7"}],"id":2954,"name":"IndexAccess","src":"3651:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2955,"name":"Identifier","src":"3679:3:7"}],"id":2956,"name":"MemberAccess","src":"3679:10:7"}],"id":2957,"name":"IndexAccess","src":"3651:39:7"}],"id":2958,"name":"BinaryOperation","src":"3628:62:7"}],"id":2959,"name":"Return","src":"3621:69:7"}],"id":2960,"name":"Block","src":"3570:127:7"}],"id":2961,"name":"FunctionDefinition","src":"3506:191:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":3019,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":3018,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2962,"name":"ElementaryTypeName","src":"3722:5:7"}],"id":2963,"name":"ArrayTypeName","src":"3722:7:7"}],"id":2964,"name":"VariableDeclaration","src":"3722:21:7"}],"id":2965,"name":"ParameterList","src":"3721:23:7"},{"children":[{"attributes":{"constant":false,"name":"results","scope":3018,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2966,"name":"ElementaryTypeName","src":"3762:5:7"}],"id":2967,"name":"ArrayTypeName","src":"3762:7:7"}],"id":2968,"name":"VariableDeclaration","src":"3762:22:7"}],"id":2969,"name":"ParameterList","src":"3761:24:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2968,"type":"bytes memory[] memory","value":"results"},"id":2970,"name":"Identifier","src":"3796:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2971,"name":"ElementaryTypeName","src":"3810:5:7"}],"id":2972,"name":"ArrayTypeName","src":"3810:7:7"}],"id":2973,"name":"NewExpression","src":"3806:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"bytes calldata[] calldata","value":"data"},"id":2974,"name":"Identifier","src":"3818:4:7"}],"id":2975,"name":"MemberAccess","src":"3818:11:7"}],"id":2976,"name":"FunctionCall","src":"3806:24:7"}],"id":2977,"name":"Assignment","src":"3796:34:7"}],"id":2978,"name":"ExpressionStatement","src":"3796:34:7"},{"children":[{"attributes":{"assignments":[2980]},"children":[{"attributes":{"constant":false,"name":"i","scope":3014,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2979,"name":"ElementaryTypeName","src":"3844:4:7"}],"id":2980,"name":"VariableDeclaration","src":"3844:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2981,"name":"Literal","src":"3853:1:7"}],"id":2982,"name":"VariableDeclarationStatement","src":"3844:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2980,"type":"uint256","value":"i"},"id":2983,"name":"Identifier","src":"3856:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"bytes calldata[] calldata","value":"data"},"id":2984,"name":"Identifier","src":"3860:4:7"}],"id":2985,"name":"MemberAccess","src":"3860:11:7"}],"id":2986,"name":"BinaryOperation","src":"3856:15:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2980,"type":"uint256","value":"i"},"id":2987,"name":"Identifier","src":"3873:1:7"}],"id":2988,"name":"UnaryOperation","src":"3873:3:7"}],"id":2989,"name":"ExpressionStatement","src":"3873:3:7"},{"children":[{"attributes":{"assignments":[2991,2993]},"children":[{"attributes":{"constant":false,"name":"success","scope":3013,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2990,"name":"ElementaryTypeName","src":"3893:4:7"}],"id":2991,"name":"VariableDeclaration","src":"3893:12:7"},{"attributes":{"constant":false,"name":"result","scope":3013,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2992,"name":"ElementaryTypeName","src":"3907:5:7"}],"id":2993,"name":"VariableDeclaration","src":"3907:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$3019","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2994,"name":"ElementaryTypeNameExpression","src":"3930:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7619,"type":"contract PublicResolver","value":"this"},"id":2995,"name":"Identifier","src":"3938:4:7"}],"id":2996,"name":"FunctionCall","src":"3930:13:7"}],"id":2997,"name":"MemberAccess","src":"3930:26:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"bytes calldata[] calldata","value":"data"},"id":2998,"name":"Identifier","src":"3957:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2980,"type":"uint256","value":"i"},"id":2999,"name":"Identifier","src":"3962:1:7"}],"id":3000,"name":"IndexAccess","src":"3957:7:7"}],"id":3001,"name":"FunctionCall","src":"3930:35:7"}],"id":3002,"name":"VariableDeclarationStatement","src":"3892:73:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":3003,"name":"Identifier","src":"3979:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2991,"type":"bool","value":"success"},"id":3004,"name":"Identifier","src":"3987:7:7"}],"id":3005,"name":"FunctionCall","src":"3979:16:7"}],"id":3006,"name":"ExpressionStatement","src":"3979:16:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2968,"type":"bytes memory[] memory","value":"results"},"id":3007,"name":"Identifier","src":"4009:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2980,"type":"uint256","value":"i"},"id":3008,"name":"Identifier","src":"4017:1:7"}],"id":3009,"name":"IndexAccess","src":"4009:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2993,"type":"bytes memory","value":"result"},"id":3010,"name":"Identifier","src":"4022:6:7"}],"id":3011,"name":"Assignment","src":"4009:19:7"}],"id":3012,"name":"ExpressionStatement","src":"4009:19:7"}],"id":3013,"name":"Block","src":"3878:161:7"}],"id":3014,"name":"ForStatement","src":"3840:199:7"},{"attributes":{"functionReturnParameters":2969},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2968,"type":"bytes memory[] memory","value":"results"},"id":3015,"name":"Identifier","src":"4055:7:7"}],"id":3016,"name":"Return","src":"4048:14:7"}],"id":3017,"name":"Block","src":"3786:283:7"}],"id":3018,"name":"FunctionDefinition","src":"3703:366:7"}],"id":3019,"name":"ContractDefinition","src":"1897:2174:7"}],"id":3020,"name":"SourceUnit","src":"1401:2671:7"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[6829]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":6213,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"SourceUnit":7551,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":6830,"symbolAliases":[null],"unitAlias":""},"id":6214,"name":"ImportDirective","src":"26:29:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[6829],"name":"RRUtils","scope":6830},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7550,"type":"library ENSBytesUtils"},"id":6215,"name":"UserDefinedTypeName","src":"178:13:8"}],"id":6216,"name":"UsingForDirective","src":"172:26:8"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6263,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6217,"name":"ElementaryTypeName","src":"487:5:8"}],"id":6218,"name":"VariableDeclaration","src":"487:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6263,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6219,"name":"ElementaryTypeName","src":"506:4:8"}],"id":6220,"name":"VariableDeclaration","src":"506:11:8"}],"id":6221,"name":"ParameterList","src":"486:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6263,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6222,"name":"ElementaryTypeName","src":"541:4:8"}],"id":6223,"name":"VariableDeclaration","src":"541:4:8"}],"id":6224,"name":"ParameterList","src":"540:6:8"},{"children":[{"attributes":{"assignments":[6226]},"children":[{"attributes":{"constant":false,"name":"idx","scope":6262,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6225,"name":"ElementaryTypeName","src":"557:4:8"}],"id":6226,"name":"VariableDeclaration","src":"557:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6220,"type":"uint256","value":"offset"},"id":6227,"name":"Identifier","src":"568:6:8"}],"id":6228,"name":"VariableDeclarationStatement","src":"557:17:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6229,"name":"Literal","src":"591:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7554,"type":"function (bool) pure","value":"assert"},"id":6230,"name":"Identifier","src":"611:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6226,"type":"uint256","value":"idx"},"id":6231,"name":"Identifier","src":"618:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6218,"type":"bytes memory","value":"self"},"id":6232,"name":"Identifier","src":"624:4:8"}],"id":6233,"name":"MemberAccess","src":"624:11:8"}],"id":6234,"name":"BinaryOperation","src":"618:17:8"}],"id":6235,"name":"FunctionCall","src":"611:25:8"}],"id":6236,"name":"ExpressionStatement","src":"611:25:8"},{"attributes":{"assignments":[6238]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":6256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6237,"name":"ElementaryTypeName","src":"650:4:8"}],"id":6238,"name":"VariableDeclaration","src":"650:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6218,"type":"bytes memory","value":"self"},"id":6239,"name":"Identifier","src":"666:4:8"}],"id":6240,"name":"MemberAccess","src":"666:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6226,"type":"uint256","value":"idx"},"id":6241,"name":"Identifier","src":"681:3:8"}],"id":6242,"name":"FunctionCall","src":"666:19:8"}],"id":6243,"name":"VariableDeclarationStatement","src":"650:35:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6226,"type":"uint256","value":"idx"},"id":6244,"name":"Identifier","src":"699:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6238,"type":"uint256","value":"labelLen"},"id":6245,"name":"Identifier","src":"706:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6246,"name":"Literal","src":"717:1:8"}],"id":6247,"name":"BinaryOperation","src":"706:12:8"}],"id":6248,"name":"Assignment","src":"699:19:8"}],"id":6249,"name":"ExpressionStatement","src":"699:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6238,"type":"uint256","value":"labelLen"},"id":6250,"name":"Identifier","src":"736:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6251,"name":"Literal","src":"748:1:8"}],"id":6252,"name":"BinaryOperation","src":"736:13:8"},{"children":[{"id":6253,"name":"Break","src":"769:5:8"}],"id":6254,"name":"Block","src":"751:38:8"}],"id":6255,"name":"IfStatement","src":"732:57:8"}],"id":6256,"name":"Block","src":"597:202:8"}],"id":6257,"name":"WhileStatement","src":"584:215:8"},{"attributes":{"functionReturnParameters":6224},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6226,"type":"uint256","value":"idx"},"id":6258,"name":"Identifier","src":"815:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6220,"type":"uint256","value":"offset"},"id":6259,"name":"Identifier","src":"821:6:8"}],"id":6260,"name":"BinaryOperation","src":"815:12:8"}],"id":6261,"name":"Return","src":"808:19:8"}],"id":6262,"name":"Block","src":"547:287:8"}],"id":6263,"name":"FunctionDefinition","src":"467:367:8"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6286,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6264,"name":"ElementaryTypeName","src":"1073:5:8"}],"id":6265,"name":"VariableDeclaration","src":"1073:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6286,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6266,"name":"ElementaryTypeName","src":"1092:4:8"}],"id":6267,"name":"VariableDeclaration","src":"1092:11:8"}],"id":6268,"name":"ParameterList","src":"1072:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6286,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6269,"name":"ElementaryTypeName","src":"1127:5:8"}],"id":6270,"name":"VariableDeclaration","src":"1127:16:8"}],"id":6271,"name":"ParameterList","src":"1126:18:8"},{"children":[{"attributes":{"assignments":[6273]},"children":[{"attributes":{"constant":false,"name":"len","scope":6285,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6272,"name":"ElementaryTypeName","src":"1155:4:8"}],"id":6273,"name":"VariableDeclaration","src":"1155:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6263,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":6274,"name":"Identifier","src":"1166:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6265,"type":"bytes memory","value":"self"},"id":6275,"name":"Identifier","src":"1177:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6267,"type":"uint256","value":"offset"},"id":6276,"name":"Identifier","src":"1183:6:8"}],"id":6277,"name":"FunctionCall","src":"1166:24:8"}],"id":6278,"name":"VariableDeclarationStatement","src":"1155:35:8"},{"attributes":{"functionReturnParameters":6271},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7327,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6265,"type":"bytes memory","value":"self"},"id":6279,"name":"Identifier","src":"1207:4:8"}],"id":6280,"name":"MemberAccess","src":"1207:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6267,"type":"uint256","value":"offset"},"id":6281,"name":"Identifier","src":"1222:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6273,"type":"uint256","value":"len"},"id":6282,"name":"Identifier","src":"1230:3:8"}],"id":6283,"name":"FunctionCall","src":"1207:27:8"}],"id":6284,"name":"Return","src":"1200:34:8"}],"id":6285,"name":"Block","src":"1145:96:8"}],"id":6286,"name":"FunctionDefinition","src":"1055:186:8"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6335,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6287,"name":"ElementaryTypeName","src":"1541:5:8"}],"id":6288,"name":"VariableDeclaration","src":"1541:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6335,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6289,"name":"ElementaryTypeName","src":"1560:4:8"}],"id":6290,"name":"VariableDeclaration","src":"1560:11:8"}],"id":6291,"name":"ParameterList","src":"1540:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6335,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6292,"name":"ElementaryTypeName","src":"1595:4:8"}],"id":6293,"name":"VariableDeclaration","src":"1595:4:8"}],"id":6294,"name":"ParameterList","src":"1594:6:8"},{"children":[{"attributes":{"assignments":[6296]},"children":[{"attributes":{"constant":false,"name":"count","scope":6334,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6295,"name":"ElementaryTypeName","src":"1611:4:8"}],"id":6296,"name":"VariableDeclaration","src":"1611:10:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6297,"name":"Literal","src":"1624:1:8"}],"id":6298,"name":"VariableDeclarationStatement","src":"1611:14:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6299,"name":"Literal","src":"1642:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7554,"type":"function (bool) pure","value":"assert"},"id":6300,"name":"Identifier","src":"1662:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6290,"type":"uint256","value":"offset"},"id":6301,"name":"Identifier","src":"1669:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"bytes memory","value":"self"},"id":6302,"name":"Identifier","src":"1678:4:8"}],"id":6303,"name":"MemberAccess","src":"1678:11:8"}],"id":6304,"name":"BinaryOperation","src":"1669:20:8"}],"id":6305,"name":"FunctionCall","src":"1662:28:8"}],"id":6306,"name":"ExpressionStatement","src":"1662:28:8"},{"attributes":{"assignments":[6308]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":6330,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6307,"name":"ElementaryTypeName","src":"1704:4:8"}],"id":6308,"name":"VariableDeclaration","src":"1704:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"bytes memory","value":"self"},"id":6309,"name":"Identifier","src":"1720:4:8"}],"id":6310,"name":"MemberAccess","src":"1720:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6290,"type":"uint256","value":"offset"},"id":6311,"name":"Identifier","src":"1735:6:8"}],"id":6312,"name":"FunctionCall","src":"1720:22:8"}],"id":6313,"name":"VariableDeclarationStatement","src":"1704:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6290,"type":"uint256","value":"offset"},"id":6314,"name":"Identifier","src":"1756:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6308,"type":"uint256","value":"labelLen"},"id":6315,"name":"Identifier","src":"1766:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6316,"name":"Literal","src":"1777:1:8"}],"id":6317,"name":"BinaryOperation","src":"1766:12:8"}],"id":6318,"name":"Assignment","src":"1756:22:8"}],"id":6319,"name":"ExpressionStatement","src":"1756:22:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6308,"type":"uint256","value":"labelLen"},"id":6320,"name":"Identifier","src":"1796:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6321,"name":"Literal","src":"1808:1:8"}],"id":6322,"name":"BinaryOperation","src":"1796:13:8"},{"children":[{"id":6323,"name":"Break","src":"1829:5:8"}],"id":6324,"name":"Block","src":"1811:38:8"}],"id":6325,"name":"IfStatement","src":"1792:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"uint256","value":"count"},"id":6326,"name":"Identifier","src":"1862:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6327,"name":"Literal","src":"1871:1:8"}],"id":6328,"name":"Assignment","src":"1862:10:8"}],"id":6329,"name":"ExpressionStatement","src":"1862:10:8"}],"id":6330,"name":"Block","src":"1648:235:8"}],"id":6331,"name":"WhileStatement","src":"1635:248:8"},{"attributes":{"functionReturnParameters":6294},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"uint256","value":"count"},"id":6332,"name":"Identifier","src":"1899:5:8"}],"id":6333,"name":"Return","src":"1892:12:8"}],"id":6334,"name":"Block","src":"1601:310:8"}],"id":6335,"name":"FunctionDefinition","src":"1521:390:8"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":6829,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":6350,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6336,"name":"ElementaryTypeName","src":"2006:5:8"}],"id":6337,"name":"VariableDeclaration","src":"2006:10:8"},{"attributes":{"constant":false,"name":"offset","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6338,"name":"ElementaryTypeName","src":"2026:4:8"}],"id":6339,"name":"VariableDeclaration","src":"2026:11:8"},{"attributes":{"constant":false,"name":"dnstype","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6340,"name":"ElementaryTypeName","src":"2047:6:8"}],"id":6341,"name":"VariableDeclaration","src":"2047:14:8"},{"attributes":{"constant":false,"name":"class","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6342,"name":"ElementaryTypeName","src":"2071:6:8"}],"id":6343,"name":"VariableDeclaration","src":"2071:12:8"},{"attributes":{"constant":false,"name":"ttl","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":6344,"name":"ElementaryTypeName","src":"2093:6:8"}],"id":6345,"name":"VariableDeclaration","src":"2093:10:8"},{"attributes":{"constant":false,"name":"rdataOffset","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6346,"name":"ElementaryTypeName","src":"2113:4:8"}],"id":6347,"name":"VariableDeclaration","src":"2113:16:8"},{"attributes":{"constant":false,"name":"nextOffset","scope":6350,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6348,"name":"ElementaryTypeName","src":"2139:4:8"}],"id":6349,"name":"VariableDeclaration","src":"2139:15:8"}],"id":6350,"name":"StructDefinition","src":"1978:183:8"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6376,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6351,"name":"ElementaryTypeName","src":"2387:5:8"}],"id":6352,"name":"VariableDeclaration","src":"2387:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6376,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6353,"name":"ElementaryTypeName","src":"2406:4:8"}],"id":6354,"name":"VariableDeclaration","src":"2406:11:8"}],"id":6355,"name":"ParameterList","src":"2386:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6376,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6356,"name":"UserDefinedTypeName","src":"2442:10:8"}],"id":6357,"name":"VariableDeclaration","src":"2442:21:8"}],"id":6358,"name":"ParameterList","src":"2441:23:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6357,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":6359,"name":"Identifier","src":"2475:3:8"}],"id":6361,"name":"MemberAccess","src":"2475:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6352,"type":"bytes memory","value":"self"},"id":6362,"name":"Identifier","src":"2486:4:8"}],"id":6363,"name":"Assignment","src":"2475:15:8"}],"id":6364,"name":"ExpressionStatement","src":"2475:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":6349,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6357,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":6365,"name":"Identifier","src":"2500:3:8"}],"id":6367,"name":"MemberAccess","src":"2500:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6354,"type":"uint256","value":"offset"},"id":6368,"name":"Identifier","src":"2517:6:8"}],"id":6369,"name":"Assignment","src":"2500:23:8"}],"id":6370,"name":"ExpressionStatement","src":"2500:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$6350_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6493,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":6371,"name":"Identifier","src":"2533:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6357,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":6372,"name":"Identifier","src":"2538:3:8"}],"id":6373,"name":"FunctionCall","src":"2533:9:8"}],"id":6374,"name":"ExpressionStatement","src":"2533:9:8"}],"id":6375,"name":"Block","src":"2465:84:8"}],"id":6376,"name":"FunctionDefinition","src":"2367:182:8"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6391,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6377,"name":"UserDefinedTypeName","src":"2734:10:8"}],"id":6378,"name":"VariableDeclaration","src":"2734:22:8"}],"id":6379,"name":"ParameterList","src":"2733:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6391,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6380,"name":"ElementaryTypeName","src":"2780:4:8"}],"id":6381,"name":"VariableDeclaration","src":"2780:4:8"}],"id":6382,"name":"ParameterList","src":"2779:6:8"},{"children":[{"attributes":{"functionReturnParameters":6382},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6378,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6383,"name":"Identifier","src":"2803:4:8"}],"id":6384,"name":"MemberAccess","src":"2803:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6378,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6385,"name":"Identifier","src":"2818:4:8"}],"id":6386,"name":"MemberAccess","src":"2818:9:8"}],"id":6387,"name":"MemberAccess","src":"2818:16:8"}],"id":6388,"name":"BinaryOperation","src":"2803:31:8"}],"id":6389,"name":"Return","src":"2796:38:8"}],"id":6390,"name":"Block","src":"2786:55:8"}],"id":6391,"name":"FunctionDefinition","src":"2720:121:8"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6493,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6392,"name":"UserDefinedTypeName","src":"2978:10:8"}],"id":6393,"name":"VariableDeclaration","src":"2978:22:8"}],"id":6394,"name":"ParameterList","src":"2977:24:8"},{"attributes":{"parameters":[null]},"children":[],"id":6395,"name":"ParameterList","src":"3016:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6396,"name":"Identifier","src":"3026:4:8"}],"id":6398,"name":"MemberAccess","src":"3026:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":6349,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6399,"name":"Identifier","src":"3040:4:8"}],"id":6400,"name":"MemberAccess","src":"3040:15:8"}],"id":6401,"name":"Assignment","src":"3026:29:8"}],"id":6402,"name":"ExpressionStatement","src":"3026:29:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6403,"name":"Identifier","src":"3069:4:8"}],"id":6404,"name":"MemberAccess","src":"3069:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6405,"name":"Identifier","src":"3084:4:8"}],"id":6406,"name":"MemberAccess","src":"3084:9:8"}],"id":6407,"name":"MemberAccess","src":"3084:16:8"}],"id":6408,"name":"BinaryOperation","src":"3069:31:8"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":6395},"id":6409,"name":"Return","src":"3116:7:8"}],"id":6410,"name":"Block","src":"3102:31:8"}],"id":6411,"name":"IfStatement","src":"3065:68:8"},{"attributes":{"assignments":[6413]},"children":[{"attributes":{"constant":false,"name":"off","scope":6492,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6412,"name":"ElementaryTypeName","src":"3168:4:8"}],"id":6413,"name":"VariableDeclaration","src":"3168:8:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6414,"name":"Identifier","src":"3179:4:8"}],"id":6415,"name":"MemberAccess","src":"3179:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6263,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":6416,"name":"Identifier","src":"3193:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6417,"name":"Identifier","src":"3204:4:8"}],"id":6418,"name":"MemberAccess","src":"3204:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6419,"name":"Identifier","src":"3215:4:8"}],"id":6420,"name":"MemberAccess","src":"3215:11:8"}],"id":6421,"name":"FunctionCall","src":"3193:34:8"}],"id":6422,"name":"BinaryOperation","src":"3179:48:8"}],"id":6423,"name":"VariableDeclarationStatement","src":"3168:59:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":6341,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6424,"name":"Identifier","src":"3275:4:8"}],"id":6426,"name":"MemberAccess","src":"3275:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":7156,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6427,"name":"Identifier","src":"3290:4:8"}],"id":6428,"name":"MemberAccess","src":"3290:9:8"}],"id":6429,"name":"MemberAccess","src":"3290:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6430,"name":"Identifier","src":"3311:3:8"}],"id":6431,"name":"FunctionCall","src":"3290:25:8"}],"id":6432,"name":"Assignment","src":"3275:40:8"}],"id":6433,"name":"ExpressionStatement","src":"3275:40:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6434,"name":"Identifier","src":"3325:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6435,"name":"Literal","src":"3332:1:8"}],"id":6436,"name":"Assignment","src":"3325:8:8"}],"id":6437,"name":"ExpressionStatement","src":"3325:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":6343,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6438,"name":"Identifier","src":"3343:4:8"}],"id":6440,"name":"MemberAccess","src":"3343:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":7156,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6441,"name":"Identifier","src":"3356:4:8"}],"id":6442,"name":"MemberAccess","src":"3356:9:8"}],"id":6443,"name":"MemberAccess","src":"3356:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6444,"name":"Identifier","src":"3377:3:8"}],"id":6445,"name":"FunctionCall","src":"3356:25:8"}],"id":6446,"name":"Assignment","src":"3343:38:8"}],"id":6447,"name":"ExpressionStatement","src":"3343:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6448,"name":"Identifier","src":"3391:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6449,"name":"Literal","src":"3398:1:8"}],"id":6450,"name":"Assignment","src":"3391:8:8"}],"id":6451,"name":"ExpressionStatement","src":"3391:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":6345,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6452,"name":"Identifier","src":"3409:4:8"}],"id":6454,"name":"MemberAccess","src":"3409:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":7176,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6455,"name":"Identifier","src":"3420:4:8"}],"id":6456,"name":"MemberAccess","src":"3420:9:8"}],"id":6457,"name":"MemberAccess","src":"3420:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6458,"name":"Identifier","src":"3441:3:8"}],"id":6459,"name":"FunctionCall","src":"3420:25:8"}],"id":6460,"name":"Assignment","src":"3409:36:8"}],"id":6461,"name":"ExpressionStatement","src":"3409:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6462,"name":"Identifier","src":"3455:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6463,"name":"Literal","src":"3462:1:8"}],"id":6464,"name":"Assignment","src":"3455:8:8"}],"id":6465,"name":"ExpressionStatement","src":"3455:8:8"},{"attributes":{"assignments":[6467]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":6492,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6466,"name":"ElementaryTypeName","src":"3500:4:8"}],"id":6467,"name":"VariableDeclaration","src":"3500:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":7156,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6468,"name":"Identifier","src":"3519:4:8"}],"id":6469,"name":"MemberAccess","src":"3519:9:8"}],"id":6470,"name":"MemberAccess","src":"3519:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6471,"name":"Identifier","src":"3540:3:8"}],"id":6472,"name":"FunctionCall","src":"3519:25:8"}],"id":6473,"name":"VariableDeclarationStatement","src":"3500:44:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6474,"name":"Identifier","src":"3554:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6475,"name":"Literal","src":"3561:1:8"}],"id":6476,"name":"Assignment","src":"3554:8:8"}],"id":6477,"name":"ExpressionStatement","src":"3554:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":6347,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6478,"name":"Identifier","src":"3572:4:8"}],"id":6480,"name":"MemberAccess","src":"3572:16:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6481,"name":"Identifier","src":"3591:3:8"}],"id":6482,"name":"Assignment","src":"3572:22:8"}],"id":6483,"name":"ExpressionStatement","src":"3572:22:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":6349,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6484,"name":"Identifier","src":"3604:4:8"}],"id":6486,"name":"MemberAccess","src":"3604:15:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6413,"type":"uint256","value":"off"},"id":6487,"name":"Identifier","src":"3622:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"uint256","value":"rdataLength"},"id":6488,"name":"Identifier","src":"3628:11:8"}],"id":6489,"name":"BinaryOperation","src":"3622:17:8"}],"id":6490,"name":"Assignment","src":"3604:35:8"}],"id":6491,"name":"ExpressionStatement","src":"3604:35:8"}],"id":6492,"name":"Block","src":"3016:630:8"}],"id":6493,"name":"FunctionDefinition","src":"2964:682:8"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6514,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6494,"name":"UserDefinedTypeName","src":"3836:10:8"}],"id":6495,"name":"VariableDeclaration","src":"3836:22:8"}],"id":6496,"name":"ParameterList","src":"3835:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6514,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6497,"name":"ElementaryTypeName","src":"3882:5:8"}],"id":6498,"name":"VariableDeclaration","src":"3882:12:8"}],"id":6499,"name":"ParameterList","src":"3881:14:8"},{"children":[{"attributes":{"functionReturnParameters":6499},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7327,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6495,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6500,"name":"Identifier","src":"3913:4:8"}],"id":6501,"name":"MemberAccess","src":"3913:9:8"}],"id":6502,"name":"MemberAccess","src":"3913:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6495,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6503,"name":"Identifier","src":"3933:4:8"}],"id":6504,"name":"MemberAccess","src":"3933:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6263,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":6505,"name":"Identifier","src":"3946:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6495,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6506,"name":"Identifier","src":"3957:4:8"}],"id":6507,"name":"MemberAccess","src":"3957:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6495,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6508,"name":"Identifier","src":"3968:4:8"}],"id":6509,"name":"MemberAccess","src":"3968:11:8"}],"id":6510,"name":"FunctionCall","src":"3946:34:8"}],"id":6511,"name":"FunctionCall","src":"3913:68:8"}],"id":6512,"name":"Return","src":"3906:75:8"}],"id":6513,"name":"Block","src":"3896:92:8"}],"id":6514,"name":"FunctionDefinition","src":"3822:166:8"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6534,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":6515,"name":"UserDefinedTypeName","src":"4176:10:8"}],"id":6516,"name":"VariableDeclaration","src":"4176:22:8"}],"id":6517,"name":"ParameterList","src":"4175:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6534,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6518,"name":"ElementaryTypeName","src":"4222:5:8"}],"id":6519,"name":"VariableDeclaration","src":"4222:12:8"}],"id":6520,"name":"ParameterList","src":"4221:14:8"},{"children":[{"attributes":{"functionReturnParameters":6520},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7327,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":6337,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6521,"name":"Identifier","src":"4253:4:8"}],"id":6522,"name":"MemberAccess","src":"4253:9:8"}],"id":6523,"name":"MemberAccess","src":"4253:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":6347,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6524,"name":"Identifier","src":"4273:4:8"}],"id":6525,"name":"MemberAccess","src":"4273:16:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":6349,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6526,"name":"Identifier","src":"4291:4:8"}],"id":6527,"name":"MemberAccess","src":"4291:15:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":6347,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6528,"name":"Identifier","src":"4309:4:8"}],"id":6529,"name":"MemberAccess","src":"4309:16:8"}],"id":6530,"name":"BinaryOperation","src":"4291:34:8"}],"id":6531,"name":"FunctionCall","src":"4253:73:8"}],"id":6532,"name":"Return","src":"4246:80:8"}],"id":6533,"name":"Block","src":"4236:97:8"}],"id":6534,"name":"FunctionDefinition","src":"4161:172:8"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6654,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6535,"name":"ElementaryTypeName","src":"4675:5:8"}],"id":6536,"name":"VariableDeclaration","src":"4675:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6654,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6537,"name":"ElementaryTypeName","src":"4694:4:8"}],"id":6538,"name":"VariableDeclaration","src":"4694:11:8"},{"attributes":{"constant":false,"name":"rrtype","scope":6654,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6539,"name":"ElementaryTypeName","src":"4707:6:8"}],"id":6540,"name":"VariableDeclaration","src":"4707:13:8"}],"id":6541,"name":"ParameterList","src":"4674:47:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6654,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6542,"name":"ElementaryTypeName","src":"4745:4:8"}],"id":6543,"name":"VariableDeclaration","src":"4745:4:8"}],"id":6544,"name":"ParameterList","src":"4744:6:8"},{"children":[{"attributes":{"assignments":[6546]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":6653,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6545,"name":"ElementaryTypeName","src":"4761:5:8"}],"id":6546,"name":"VariableDeclaration","src":"4761:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6547,"name":"ElementaryTypeNameExpression","src":"4780:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6540,"type":"uint16","value":"rrtype"},"id":6548,"name":"Identifier","src":"4786:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6549,"name":"Literal","src":"4796:1:8"}],"id":6550,"name":"BinaryOperation","src":"4786:11:8"}],"id":6551,"name":"FunctionCall","src":"4780:18:8"}],"id":6552,"name":"VariableDeclarationStatement","src":"4761:37:8"},{"attributes":{"assignments":[6554]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":6653,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6553,"name":"ElementaryTypeName","src":"4808:5:8"}],"id":6554,"name":"VariableDeclaration","src":"4808:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6555,"name":"ElementaryTypeNameExpression","src":"4827:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6540,"type":"uint16","value":"rrtype"},"id":6556,"name":"Identifier","src":"4834:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":6557,"name":"Literal","src":"4843:4:8"}],"id":6558,"name":"BinaryOperation","src":"4834:13:8"}],"id":6559,"name":"TupleExpression","src":"4833:15:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6560,"name":"Literal","src":"4851:1:8"}],"id":6561,"name":"BinaryOperation","src":"4833:19:8"}],"id":6562,"name":"FunctionCall","src":"4827:26:8"}],"id":6563,"name":"VariableDeclarationStatement","src":"4808:45:8"},{"attributes":{"assignments":[6565]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":6653,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6564,"name":"ElementaryTypeName","src":"4863:5:8"}],"id":6565,"name":"VariableDeclaration","src":"4863:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6566,"name":"ElementaryTypeNameExpression","src":"4885:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6567,"name":"ElementaryTypeNameExpression","src":"4891:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6568,"name":"Literal","src":"4897:1:8"}],"id":6569,"name":"FunctionCall","src":"4891:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6570,"name":"ElementaryTypeNameExpression","src":"4904:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":6571,"name":"Literal","src":"4910:1:8"}],"id":6572,"name":"FunctionCall","src":"4904:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6573,"name":"ElementaryTypeNameExpression","src":"4915:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6540,"type":"uint16","value":"rrtype"},"id":6574,"name":"Identifier","src":"4921:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":6575,"name":"Literal","src":"4930:3:8"}],"id":6576,"name":"BinaryOperation","src":"4921:12:8"}],"id":6577,"name":"FunctionCall","src":"4915:19:8"}],"id":6578,"name":"BinaryOperation","src":"4904:30:8"}],"id":6579,"name":"TupleExpression","src":"4903:32:8"}],"id":6580,"name":"BinaryOperation","src":"4891:44:8"}],"id":6581,"name":"FunctionCall","src":"4885:51:8"}],"id":6582,"name":"VariableDeclarationStatement","src":"4863:73:8"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[6584]},"children":[{"attributes":{"constant":false,"name":"off","scope":6650,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6583,"name":"ElementaryTypeName","src":"4951:4:8"}],"id":6584,"name":"VariableDeclaration","src":"4951:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6538,"type":"uint256","value":"offset"},"id":6585,"name":"Identifier","src":"4962:6:8"}],"id":6586,"name":"VariableDeclarationStatement","src":"4951:17:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6587,"name":"Identifier","src":"4970:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6536,"type":"bytes memory","value":"self"},"id":6588,"name":"Identifier","src":"4976:4:8"}],"id":6589,"name":"MemberAccess","src":"4976:11:8"}],"id":6590,"name":"BinaryOperation","src":"4970:17:8"},{"children":[{"attributes":{"assignments":[6592]},"children":[{"attributes":{"constant":false,"name":"window","scope":6649,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6591,"name":"ElementaryTypeName","src":"5004:5:8"}],"id":6592,"name":"VariableDeclaration","src":"5004:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6536,"type":"bytes memory","value":"self"},"id":6593,"name":"Identifier","src":"5019:4:8"}],"id":6594,"name":"MemberAccess","src":"5019:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6595,"name":"Identifier","src":"5034:3:8"}],"id":6596,"name":"FunctionCall","src":"5019:19:8"}],"id":6597,"name":"VariableDeclarationStatement","src":"5004:34:8"},{"attributes":{"assignments":[6599]},"children":[{"attributes":{"constant":false,"name":"len","scope":6649,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6598,"name":"ElementaryTypeName","src":"5052:5:8"}],"id":6599,"name":"VariableDeclaration","src":"5052:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6536,"type":"bytes memory","value":"self"},"id":6600,"name":"Identifier","src":"5064:4:8"}],"id":6601,"name":"MemberAccess","src":"5064:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6602,"name":"Identifier","src":"5079:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6603,"name":"Literal","src":"5085:1:8"}],"id":6604,"name":"BinaryOperation","src":"5079:7:8"}],"id":6605,"name":"FunctionCall","src":"5064:23:8"}],"id":6606,"name":"VariableDeclarationStatement","src":"5052:35:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6546,"type":"uint8","value":"typeWindow"},"id":6607,"name":"Identifier","src":"5105:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6592,"type":"uint8","value":"window"},"id":6608,"name":"Identifier","src":"5118:6:8"}],"id":6609,"name":"BinaryOperation","src":"5105:19:8"},{"children":[{"attributes":{"functionReturnParameters":6544},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6610,"name":"Literal","src":"5213:5:8"}],"id":6611,"name":"Return","src":"5206:12:8"}],"id":6612,"name":"Block","src":"5126:107:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6546,"type":"uint8","value":"typeWindow"},"id":6613,"name":"Identifier","src":"5243:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6592,"type":"uint8","value":"window"},"id":6614,"name":"Identifier","src":"5257:6:8"}],"id":6615,"name":"BinaryOperation","src":"5243:20:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6599,"type":"uint8","value":"len"},"id":6616,"name":"Identifier","src":"5329:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6617,"name":"Literal","src":"5335:1:8"}],"id":6618,"name":"BinaryOperation","src":"5329:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint8","value":"windowByte"},"id":6619,"name":"Identifier","src":"5340:10:8"}],"id":6620,"name":"BinaryOperation","src":"5329:21:8"},{"children":[{"attributes":{"functionReturnParameters":6544},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6621,"name":"Literal","src":"5443:5:8"}],"id":6622,"name":"Return","src":"5436:12:8"}],"id":6623,"name":"Block","src":"5352:115:8"}],"id":6624,"name":"IfStatement","src":"5325:142:8"},{"attributes":{"functionReturnParameters":6544},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6536,"type":"bytes memory","value":"self"},"id":6625,"name":"Identifier","src":"5492:4:8"}],"id":6626,"name":"MemberAccess","src":"5492:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6627,"name":"Identifier","src":"5507:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint8","value":"windowByte"},"id":6628,"name":"Identifier","src":"5513:10:8"}],"id":6629,"name":"BinaryOperation","src":"5507:16:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6630,"name":"Literal","src":"5526:1:8"}],"id":6631,"name":"BinaryOperation","src":"5507:20:8"}],"id":6632,"name":"FunctionCall","src":"5492:36:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6565,"type":"uint8","value":"windowBitmask"},"id":6633,"name":"Identifier","src":"5531:13:8"}],"id":6634,"name":"BinaryOperation","src":"5492:52:8"}],"id":6635,"name":"TupleExpression","src":"5491:54:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6636,"name":"Literal","src":"5549:1:8"}],"id":6637,"name":"BinaryOperation","src":"5491:59:8"}],"id":6638,"name":"Return","src":"5484:66:8"}],"id":6639,"name":"Block","src":"5265:300:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6584,"type":"uint256","value":"off"},"id":6640,"name":"Identifier","src":"5630:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6599,"type":"uint8","value":"len"},"id":6641,"name":"Identifier","src":"5637:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6642,"name":"Literal","src":"5643:1:8"}],"id":6643,"name":"BinaryOperation","src":"5637:7:8"}],"id":6644,"name":"Assignment","src":"5630:14:8"}],"id":6645,"name":"ExpressionStatement","src":"5630:14:8"}],"id":6646,"name":"Block","src":"5571:88:8"}],"id":6647,"name":"IfStatement","src":"5239:420:8"}],"id":6648,"name":"IfStatement","src":"5101:558:8"}],"id":6649,"name":"Block","src":"4990:679:8"}],"id":6650,"name":"ForStatement","src":"4946:723:8"},{"attributes":{"functionReturnParameters":6544},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6651,"name":"Literal","src":"5686:5:8"}],"id":6652,"name":"Return","src":"5679:12:8"}],"id":6653,"name":"Block","src":"4751:947:8"}],"id":6654,"name":"FunctionDefinition","src":"4650:1048:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6809,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6655,"name":"ElementaryTypeName","src":"5726:5:8"}],"id":6656,"name":"VariableDeclaration","src":"5726:17:8"},{"attributes":{"constant":false,"name":"other","scope":6809,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6657,"name":"ElementaryTypeName","src":"5745:5:8"}],"id":6658,"name":"VariableDeclaration","src":"5745:18:8"}],"id":6659,"name":"ParameterList","src":"5725:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6809,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6660,"name":"ElementaryTypeName","src":"5788:3:8"}],"id":6661,"name":"VariableDeclaration","src":"5788:3:8"}],"id":6662,"name":"ParameterList","src":"5787:5:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":7120,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6663,"name":"Identifier","src":"5807:4:8"}],"id":6664,"name":"MemberAccess","src":"5807:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6665,"name":"Identifier","src":"5819:5:8"}],"id":6666,"name":"FunctionCall","src":"5807:18:8"},{"children":[{"attributes":{"functionReturnParameters":6662},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6667,"name":"Literal","src":"5848:1:8"}],"id":6668,"name":"Return","src":"5841:8:8"}],"id":6669,"name":"Block","src":"5827:33:8"}],"id":6670,"name":"IfStatement","src":"5803:57:8"},{"attributes":{"assignments":[6672],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6671,"name":"ElementaryTypeName","src":"5870:4:8"}],"id":6672,"name":"VariableDeclaration","src":"5870:8:8"}],"id":6673,"name":"VariableDeclarationStatement","src":"5870:8:8"},{"attributes":{"assignments":[6675],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6674,"name":"ElementaryTypeName","src":"5888:4:8"}],"id":6675,"name":"VariableDeclaration","src":"5888:13:8"}],"id":6676,"name":"VariableDeclarationStatement","src":"5888:13:8"},{"attributes":{"assignments":[6678],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6677,"name":"ElementaryTypeName","src":"5911:4:8"}],"id":6678,"name":"VariableDeclaration","src":"5911:12:8"}],"id":6679,"name":"VariableDeclarationStatement","src":"5911:12:8"},{"attributes":{"assignments":[6681],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6680,"name":"ElementaryTypeName","src":"5933:4:8"}],"id":6681,"name":"VariableDeclaration","src":"5933:17:8"}],"id":6682,"name":"VariableDeclarationStatement","src":"5933:17:8"},{"attributes":{"assignments":[6684]},"children":[{"attributes":{"constant":false,"name":"counts","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6683,"name":"ElementaryTypeName","src":"5960:4:8"}],"id":6684,"name":"VariableDeclaration","src":"5960:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":6335,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":6685,"name":"Identifier","src":"5974:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6686,"name":"Identifier","src":"5985:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6687,"name":"Literal","src":"5991:1:8"}],"id":6688,"name":"FunctionCall","src":"5974:19:8"}],"id":6689,"name":"VariableDeclarationStatement","src":"5960:33:8"},{"attributes":{"assignments":[6691]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":6808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6690,"name":"ElementaryTypeName","src":"6003:4:8"}],"id":6691,"name":"VariableDeclaration","src":"6003:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":6335,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":6692,"name":"Identifier","src":"6022:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6693,"name":"Identifier","src":"6033:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6694,"name":"Literal","src":"6040:1:8"}],"id":6695,"name":"FunctionCall","src":"6022:20:8"}],"id":6696,"name":"VariableDeclarationStatement","src":"6003:39:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6697,"name":"Identifier","src":"6153:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"uint256","value":"othercounts"},"id":6698,"name":"Identifier","src":"6162:11:8"}],"id":6699,"name":"BinaryOperation","src":"6153:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6678,"type":"uint256","value":"prevoff"},"id":6700,"name":"Identifier","src":"6189:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6701,"name":"Identifier","src":"6199:3:8"}],"id":6702,"name":"Assignment","src":"6189:13:8"}],"id":6703,"name":"ExpressionStatement","src":"6189:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6704,"name":"Identifier","src":"6216:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6705,"name":"Identifier","src":"6222:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6706,"name":"Identifier","src":"6231:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6707,"name":"Identifier","src":"6237:3:8"}],"id":6708,"name":"FunctionCall","src":"6222:19:8"}],"id":6709,"name":"Assignment","src":"6216:25:8"}],"id":6710,"name":"ExpressionStatement","src":"6216:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6711,"name":"Identifier","src":"6255:6:8"}],"id":6712,"name":"UnaryOperation","src":"6255:8:8"}],"id":6713,"name":"ExpressionStatement","src":"6255:8:8"}],"id":6714,"name":"Block","src":"6175:99:8"}],"id":6715,"name":"WhileStatement","src":"6146:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"uint256","value":"othercounts"},"id":6716,"name":"Identifier","src":"6291:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6717,"name":"Identifier","src":"6305:6:8"}],"id":6718,"name":"BinaryOperation","src":"6291:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6681,"type":"uint256","value":"otherprevoff"},"id":6719,"name":"Identifier","src":"6327:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6720,"name":"Identifier","src":"6342:8:8"}],"id":6721,"name":"Assignment","src":"6327:23:8"}],"id":6722,"name":"ExpressionStatement","src":"6327:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6723,"name":"Identifier","src":"6364:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6724,"name":"Identifier","src":"6375:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6725,"name":"Identifier","src":"6384:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6726,"name":"Identifier","src":"6391:8:8"}],"id":6727,"name":"FunctionCall","src":"6375:25:8"}],"id":6728,"name":"Assignment","src":"6364:36:8"}],"id":6729,"name":"ExpressionStatement","src":"6364:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"uint256","value":"othercounts"},"id":6730,"name":"Identifier","src":"6414:11:8"}],"id":6731,"name":"UnaryOperation","src":"6414:13:8"}],"id":6732,"name":"ExpressionStatement","src":"6414:13:8"}],"id":6733,"name":"Block","src":"6313:125:8"}],"id":6734,"name":"WhileStatement","src":"6284:154:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6735,"name":"Identifier","src":"6513:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6736,"name":"Literal","src":"6522:1:8"}],"id":6737,"name":"BinaryOperation","src":"6513:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":7066,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6738,"name":"Identifier","src":"6528:4:8"}],"id":6739,"name":"MemberAccess","src":"6528:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6740,"name":"Identifier","src":"6540:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6741,"name":"Identifier","src":"6545:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6742,"name":"Identifier","src":"6552:8:8"}],"id":6743,"name":"FunctionCall","src":"6528:33:8"}],"id":6744,"name":"UnaryOperation","src":"6527:34:8"}],"id":6745,"name":"BinaryOperation","src":"6513:48:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6678,"type":"uint256","value":"prevoff"},"id":6746,"name":"Identifier","src":"6577:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6747,"name":"Identifier","src":"6587:3:8"}],"id":6748,"name":"Assignment","src":"6577:13:8"}],"id":6749,"name":"ExpressionStatement","src":"6577:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6750,"name":"Identifier","src":"6604:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6751,"name":"Identifier","src":"6610:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6752,"name":"Identifier","src":"6619:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6753,"name":"Identifier","src":"6625:3:8"}],"id":6754,"name":"FunctionCall","src":"6610:19:8"}],"id":6755,"name":"Assignment","src":"6604:25:8"}],"id":6756,"name":"ExpressionStatement","src":"6604:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6681,"type":"uint256","value":"otherprevoff"},"id":6757,"name":"Identifier","src":"6643:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6758,"name":"Identifier","src":"6658:8:8"}],"id":6759,"name":"Assignment","src":"6643:23:8"}],"id":6760,"name":"ExpressionStatement","src":"6643:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6761,"name":"Identifier","src":"6680:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6762,"name":"Identifier","src":"6691:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6763,"name":"Identifier","src":"6700:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6764,"name":"Identifier","src":"6707:8:8"}],"id":6765,"name":"FunctionCall","src":"6691:25:8"}],"id":6766,"name":"Assignment","src":"6680:36:8"}],"id":6767,"name":"ExpressionStatement","src":"6680:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"counts"},"id":6768,"name":"Identifier","src":"6730:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6769,"name":"Literal","src":"6740:1:8"}],"id":6770,"name":"Assignment","src":"6730:11:8"}],"id":6771,"name":"ExpressionStatement","src":"6730:11:8"}],"id":6772,"name":"Block","src":"6563:189:8"}],"id":6773,"name":"WhileStatement","src":"6506:246:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6672,"type":"uint256","value":"off"},"id":6774,"name":"Identifier","src":"6766:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6775,"name":"Literal","src":"6773:1:8"}],"id":6776,"name":"BinaryOperation","src":"6766:8:8"},{"children":[{"attributes":{"functionReturnParameters":6662},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6777,"name":"Literal","src":"6798:1:8"}],"id":6778,"name":"UnaryOperation","src":"6797:2:8"}],"id":6779,"name":"Return","src":"6790:9:8"}],"id":6780,"name":"Block","src":"6776:34:8"}],"id":6781,"name":"IfStatement","src":"6762:48:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6675,"type":"uint256","value":"otheroff"},"id":6782,"name":"Identifier","src":"6822:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6783,"name":"Literal","src":"6834:1:8"}],"id":6784,"name":"BinaryOperation","src":"6822:13:8"},{"children":[{"attributes":{"functionReturnParameters":6662},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6785,"name":"Literal","src":"6858:1:8"}],"id":6786,"name":"Return","src":"6851:8:8"}],"id":6787,"name":"Block","src":"6837:33:8"}],"id":6788,"name":"IfStatement","src":"6819:51:8"},{"attributes":{"functionReturnParameters":6662},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":7006,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6789,"name":"Identifier","src":"6887:4:8"}],"id":6790,"name":"MemberAccess","src":"6887:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6678,"type":"uint256","value":"prevoff"},"id":6791,"name":"Identifier","src":"6900:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6792,"name":"Literal","src":"6910:1:8"}],"id":6793,"name":"BinaryOperation","src":"6900:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"bytes memory","value":"self"},"id":6794,"name":"Identifier","src":"6913:4:8"}],"id":6795,"name":"MemberAccess","src":"6913:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6678,"type":"uint256","value":"prevoff"},"id":6796,"name":"Identifier","src":"6928:7:8"}],"id":6797,"name":"FunctionCall","src":"6913:23:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6798,"name":"Identifier","src":"6938:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6681,"type":"uint256","value":"otherprevoff"},"id":6799,"name":"Identifier","src":"6945:12:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6800,"name":"Literal","src":"6960:1:8"}],"id":6801,"name":"BinaryOperation","src":"6945:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6658,"type":"bytes memory","value":"other"},"id":6802,"name":"Identifier","src":"6963:5:8"}],"id":6803,"name":"MemberAccess","src":"6963:15:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6681,"type":"uint256","value":"otherprevoff"},"id":6804,"name":"Identifier","src":"6979:12:8"}],"id":6805,"name":"FunctionCall","src":"6963:29:8"}],"id":6806,"name":"FunctionCall","src":"6887:106:8"}],"id":6807,"name":"Return","src":"6880:113:8"}],"id":6808,"name":"Block","src":"5793:1207:8"}],"id":6809,"name":"FunctionDefinition","src":"5704:1296:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":6829,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":6828,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6810,"name":"ElementaryTypeName","src":"7024:5:8"}],"id":6811,"name":"VariableDeclaration","src":"7024:17:8"},{"attributes":{"constant":false,"name":"off","scope":6828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6812,"name":"ElementaryTypeName","src":"7043:4:8"}],"id":6813,"name":"VariableDeclaration","src":"7043:8:8"}],"id":6814,"name":"ParameterList","src":"7023:29:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6815,"name":"ElementaryTypeName","src":"7075:4:8"}],"id":6816,"name":"VariableDeclaration","src":"7075:4:8"}],"id":6817,"name":"ParameterList","src":"7074:6:8"},{"children":[{"attributes":{"functionReturnParameters":6817},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6813,"type":"uint256","value":"off"},"id":6818,"name":"Identifier","src":"7098:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6819,"name":"Literal","src":"7104:1:8"}],"id":6820,"name":"BinaryOperation","src":"7098:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":7136,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6811,"type":"bytes memory","value":"body"},"id":6821,"name":"Identifier","src":"7108:4:8"}],"id":6822,"name":"MemberAccess","src":"7108:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6813,"type":"uint256","value":"off"},"id":6823,"name":"Identifier","src":"7123:3:8"}],"id":6824,"name":"FunctionCall","src":"7108:19:8"}],"id":6825,"name":"BinaryOperation","src":"7098:29:8"}],"id":6826,"name":"Return","src":"7091:36:8"}],"id":6827,"name":"Block","src":"7081:53:8"}],"id":6828,"name":"FunctionDefinition","src":"7006:128:8"}],"id":6829,"name":"ContractDefinition","src":"150:6986:8"}],"id":6830,"name":"SourceUnit","src":"0:7137:8"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[6211]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6144,"name":"PragmaDirective","src":"0:23:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6211],"name":"ResolverBase","scope":6212},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":6211,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6145,"name":"ElementaryTypeName","src":"53:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":6146,"name":"Literal","src":"97:10:9"}],"id":6147,"name":"VariableDeclaration","src":"53:54:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6211,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6159,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6148,"name":"ElementaryTypeName","src":"141:6:9"}],"id":6149,"name":"VariableDeclaration","src":"141:18:9"}],"id":6150,"name":"ParameterList","src":"140:20:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":6159,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6151,"name":"ElementaryTypeName","src":"181:4:9"}],"id":6152,"name":"VariableDeclaration","src":"181:4:9"}],"id":6153,"name":"ParameterList","src":"180:6:9"},{"children":[{"attributes":{"functionReturnParameters":6153},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6149,"type":"bytes4","value":"interfaceID"},"id":6154,"name":"Identifier","src":"204:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6147,"type":"bytes4","value":"INTERFACE_META_ID"},"id":6155,"name":"Identifier","src":"219:17:9"}],"id":6156,"name":"BinaryOperation","src":"204:32:9"}],"id":6157,"name":"Return","src":"197:39:9"}],"id":6158,"name":"Block","src":"187:56:9"}],"id":6159,"name":"FunctionDefinition","src":"114:129:9"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":6211,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6166,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6160,"name":"ElementaryTypeName","src":"271:7:9"}],"id":6161,"name":"VariableDeclaration","src":"271:12:9"}],"id":6162,"name":"ParameterList","src":"270:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":6166,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6163,"name":"ElementaryTypeName","src":"307:4:9"}],"id":6164,"name":"VariableDeclaration","src":"307:4:9"}],"id":6165,"name":"ParameterList","src":"306:6:9"}],"id":6166,"name":"FunctionDefinition","src":"249:64:9"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6178,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6167,"name":"ElementaryTypeName","src":"339:7:9"}],"id":6168,"name":"VariableDeclaration","src":"339:12:9"}],"id":6169,"name":"ParameterList","src":"338:14:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":6170,"name":"Identifier","src":"363:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6166,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":6171,"name":"Identifier","src":"371:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6168,"type":"bytes32","value":"node"},"id":6172,"name":"Identifier","src":"384:4:9"}],"id":6173,"name":"FunctionCall","src":"371:18:9"}],"id":6174,"name":"FunctionCall","src":"363:27:9"}],"id":6175,"name":"ExpressionStatement","src":"363:27:9"},{"id":6176,"name":"PlaceholderStatement","src":"400:1:9"}],"id":6177,"name":"Block","src":"353:55:9"}],"id":6178,"name":"ModifierDefinition","src":"319:89:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":6211,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":6194,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6179,"name":"ElementaryTypeName","src":"438:5:9"}],"id":6180,"name":"VariableDeclaration","src":"438:14:9"}],"id":6181,"name":"ParameterList","src":"437:16:9"},{"children":[{"attributes":{"constant":false,"name":"a","scope":6194,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":6182,"name":"ElementaryTypeName","src":"476:15:9"}],"id":6183,"name":"VariableDeclaration","src":"476:17:9"}],"id":6184,"name":"ParameterList","src":"475:19:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":6185,"name":"Identifier","src":"505:7:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6180,"type":"bytes memory","value":"b"},"id":6186,"name":"Identifier","src":"513:1:9"}],"id":6187,"name":"MemberAccess","src":"513:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":6188,"name":"Literal","src":"525:2:9"}],"id":6189,"name":"BinaryOperation","src":"513:14:9"}],"id":6190,"name":"FunctionCall","src":"505:23:9"}],"id":6191,"name":"ExpressionStatement","src":"505:23:9"},{"attributes":{"externalReferences":[{"a":{"declaration":6183,"isOffset":false,"isSlot":false,"src":"561:1:9","valueSize":1}},{"b":{"declaration":6180,"isOffset":false,"isSlot":false,"src":"580:1:9","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":6192,"name":"InlineAssembly","src":"538:74:9"}],"id":6193,"name":"Block","src":"495:123:9"}],"id":6194,"name":"FunctionDefinition","src":"414:204:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":6211,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":6210,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6195,"name":"ElementaryTypeName","src":"648:7:9"}],"id":6196,"name":"VariableDeclaration","src":"648:9:9"}],"id":6197,"name":"ParameterList","src":"647:11:9"},{"children":[{"attributes":{"constant":false,"name":"b","scope":6210,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6198,"name":"ElementaryTypeName","src":"681:5:9"}],"id":6199,"name":"VariableDeclaration","src":"681:14:9"}],"id":6200,"name":"ParameterList","src":"680:16:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6199,"type":"bytes memory","value":"b"},"id":6201,"name":"Identifier","src":"707:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6202,"name":"ElementaryTypeName","src":"715:5:9"}],"id":6203,"name":"NewExpression","src":"711:9:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":6204,"name":"Literal","src":"721:2:9"}],"id":6205,"name":"FunctionCall","src":"711:13:9"}],"id":6206,"name":"Assignment","src":"707:17:9"}],"id":6207,"name":"ExpressionStatement","src":"707:17:9"},{"attributes":{"externalReferences":[{"b":{"declaration":6199,"isOffset":false,"isSlot":false,"src":"768:1:9","valueSize":1}},{"a":{"declaration":6196,"isOffset":false,"isSlot":false,"src":"780:1:9","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":6208,"name":"InlineAssembly","src":"734:73:9"}],"id":6209,"name":"Block","src":"697:116:9"}],"id":6210,"name":"FunctionDefinition","src":"624:189:9"}],"id":6211,"name":"ContractDefinition","src":"25:790:9"}],"id":6212,"name":"SourceUnit","src":"0:816:9"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[4991]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4857,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4992,"symbolAliases":[null],"unitAlias":""},"id":4858,"name":"ImportDirective","src":"25:29:10"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4991,6211],"name":"ABIResolver","scope":4992},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":4859,"name":"UserDefinedTypeName","src":"80:12:10"}],"id":4860,"name":"InheritanceSpecifier","src":"80:12:10"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":4991,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4861,"name":"ElementaryTypeName","src":"99:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":4862,"name":"Literal","src":"142:10:10"}],"id":4863,"name":"VariableDeclaration","src":"99:53:10"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4869,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4864,"name":"ElementaryTypeName","src":"176:7:10"}],"id":4865,"name":"VariableDeclaration","src":"176:20:10"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":4869,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4866,"name":"ElementaryTypeName","src":"198:7:10"}],"id":4867,"name":"VariableDeclaration","src":"198:27:10"}],"id":4868,"name":"ParameterList","src":"175:51:10"}],"id":4869,"name":"EventDefinition","src":"159:68:10"},{"attributes":{"constant":false,"name":"abis","scope":4991,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4870,"name":"ElementaryTypeName","src":"241:7:10"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4871,"name":"ElementaryTypeName","src":"258:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":4872,"name":"ElementaryTypeName","src":"267:5:10"}],"id":4873,"name":"Mapping","src":"250:23:10"}],"id":4874,"name":"Mapping","src":"233:41:10"}],"id":4875,"name":"VariableDeclaration","src":"233:46:10"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":4991,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4913,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4876,"name":"ElementaryTypeName","src":"598:7:10"}],"id":4877,"name":"VariableDeclaration","src":"598:12:10"},{"attributes":{"constant":false,"name":"contentType","scope":4913,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4878,"name":"ElementaryTypeName","src":"612:7:10"}],"id":4879,"name":"VariableDeclaration","src":"612:19:10"},{"attributes":{"constant":false,"name":"data","scope":4913,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4880,"name":"ElementaryTypeName","src":"633:5:10"}],"id":4881,"name":"VariableDeclaration","src":"633:19:10"}],"id":4882,"name":"ParameterList","src":"597:56:10"},{"attributes":{"parameters":[null]},"children":[],"id":4886,"name":"ParameterList","src":"680:0:10"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":4883,"name":"Identifier","src":"663:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4877,"type":"bytes32","value":"node"},"id":4884,"name":"Identifier","src":"674:4:10"}],"id":4885,"name":"ModifierInvocation","src":"663:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7568,"type":"function (bool) pure","value":"require"},"id":4887,"name":"Identifier","src":"735:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4879,"type":"uint256","value":"contentType"},"id":4888,"name":"Identifier","src":"745:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4889,"name":"Literal","src":"759:1:10"}],"id":4890,"name":"BinaryOperation","src":"745:15:10"}],"id":4891,"name":"TupleExpression","src":"744:17:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4879,"type":"uint256","value":"contentType"},"id":4892,"name":"Identifier","src":"764:11:10"}],"id":4893,"name":"BinaryOperation","src":"744:31:10"}],"id":4894,"name":"TupleExpression","src":"743:33:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4895,"name":"Literal","src":"780:1:10"}],"id":4896,"name":"BinaryOperation","src":"743:38:10"}],"id":4897,"name":"FunctionCall","src":"735:47:10"}],"id":4898,"name":"ExpressionStatement","src":"735:47:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4875,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4899,"name":"Identifier","src":"793:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4877,"type":"bytes32","value":"node"},"id":4900,"name":"Identifier","src":"798:4:10"}],"id":4902,"name":"IndexAccess","src":"793:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4879,"type":"uint256","value":"contentType"},"id":4901,"name":"Identifier","src":"804:11:10"}],"id":4903,"name":"IndexAccess","src":"793:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4881,"type":"bytes calldata","value":"data"},"id":4904,"name":"Identifier","src":"819:4:10"}],"id":4905,"name":"Assignment","src":"793:30:10"}],"id":4906,"name":"ExpressionStatement","src":"793:30:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4869,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":4907,"name":"Identifier","src":"838:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4877,"type":"bytes32","value":"node"},"id":4908,"name":"Identifier","src":"849:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4879,"type":"uint256","value":"contentType"},"id":4909,"name":"Identifier","src":"855:11:10"}],"id":4910,"name":"FunctionCall","src":"838:29:10"}],"id":4911,"name":"EmitStatement","src":"833:34:10"}],"id":4912,"name":"Block","src":"680:194:10"}],"id":4913,"name":"FunctionDefinition","src":"582:292:10"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":4991,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4973,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4914,"name":"ElementaryTypeName","src":"1208:7:10"}],"id":4915,"name":"VariableDeclaration","src":"1208:12:10"},{"attributes":{"constant":false,"name":"contentTypes","scope":4973,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4916,"name":"ElementaryTypeName","src":"1222:7:10"}],"id":4917,"name":"VariableDeclaration","src":"1222:20:10"}],"id":4918,"name":"ParameterList","src":"1207:36:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":4973,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4919,"name":"ElementaryTypeName","src":"1267:7:10"}],"id":4920,"name":"VariableDeclaration","src":"1267:7:10"},{"attributes":{"constant":false,"name":"","scope":4973,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4921,"name":"ElementaryTypeName","src":"1276:5:10"}],"id":4922,"name":"VariableDeclaration","src":"1276:12:10"}],"id":4923,"name":"ParameterList","src":"1266:23:10"},{"children":[{"attributes":{"assignments":[4927]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":4972,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4924,"name":"ElementaryTypeName","src":"1308:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":4925,"name":"ElementaryTypeName","src":"1317:5:10"}],"id":4926,"name":"Mapping","src":"1300:23:10"}],"id":4927,"name":"VariableDeclaration","src":"1300:38:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4875,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4928,"name":"Identifier","src":"1341:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4915,"type":"bytes32","value":"node"},"id":4929,"name":"Identifier","src":"1346:4:10"}],"id":4930,"name":"IndexAccess","src":"1341:10:10"}],"id":4931,"name":"VariableDeclarationStatement","src":"1300:51:10"},{"children":[{"attributes":{"assignments":[4933]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":4965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4932,"name":"ElementaryTypeName","src":"1367:7:10"}],"id":4933,"name":"VariableDeclaration","src":"1367:19:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4934,"name":"Literal","src":"1389:1:10"}],"id":4935,"name":"VariableDeclarationStatement","src":"1367:23:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4936,"name":"Identifier","src":"1392:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4917,"type":"uint256","value":"contentTypes"},"id":4937,"name":"Identifier","src":"1407:12:10"}],"id":4938,"name":"BinaryOperation","src":"1392:27:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4939,"name":"Identifier","src":"1421:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4940,"name":"Literal","src":"1437:1:10"}],"id":4941,"name":"Assignment","src":"1421:17:10"}],"id":4942,"name":"ExpressionStatement","src":"1421:17:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4943,"name":"Identifier","src":"1459:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4917,"type":"uint256","value":"contentTypes"},"id":4944,"name":"Identifier","src":"1473:12:10"}],"id":4945,"name":"BinaryOperation","src":"1459:26:10"}],"id":4946,"name":"TupleExpression","src":"1458:28:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4947,"name":"Literal","src":"1490:1:10"}],"id":4948,"name":"BinaryOperation","src":"1458:33:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4927,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4949,"name":"Identifier","src":"1495:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4950,"name":"Identifier","src":"1502:11:10"}],"id":4951,"name":"IndexAccess","src":"1495:19:10"}],"id":4952,"name":"MemberAccess","src":"1495:26:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4953,"name":"Literal","src":"1524:1:10"}],"id":4954,"name":"BinaryOperation","src":"1495:30:10"}],"id":4955,"name":"BinaryOperation","src":"1458:67:10"},{"children":[{"attributes":{"functionReturnParameters":4923},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4956,"name":"Identifier","src":"1553:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4927,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4957,"name":"Identifier","src":"1566:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4933,"type":"uint256","value":"contentType"},"id":4958,"name":"Identifier","src":"1573:11:10"}],"id":4959,"name":"IndexAccess","src":"1566:19:10"}],"id":4960,"name":"TupleExpression","src":"1552:34:10"}],"id":4961,"name":"Return","src":"1545:41:10"}],"id":4962,"name":"Block","src":"1527:74:10"}],"id":4963,"name":"IfStatement","src":"1454:147:10"}],"id":4964,"name":"Block","src":"1440:171:10"}],"id":4965,"name":"ForStatement","src":"1362:249:10"},{"attributes":{"functionReturnParameters":4923},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4966,"name":"Literal","src":"1629:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4967,"name":"ElementaryTypeNameExpression","src":"1632:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4968,"name":"Literal","src":"1638:2:10"}],"id":4969,"name":"FunctionCall","src":"1632:9:10"}],"id":4970,"name":"TupleExpression","src":"1628:14:10"}],"id":4971,"name":"Return","src":"1621:21:10"}],"id":4972,"name":"Block","src":"1290:359:10"}],"id":4973,"name":"FunctionDefinition","src":"1195:454:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4991,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4990,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4974,"name":"ElementaryTypeName","src":"1682:6:10"}],"id":4975,"name":"VariableDeclaration","src":"1682:18:10"}],"id":4976,"name":"ParameterList","src":"1681:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":4990,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4977,"name":"ElementaryTypeName","src":"1722:4:10"}],"id":4978,"name":"VariableDeclaration","src":"1722:4:10"}],"id":4979,"name":"ParameterList","src":"1721:6:10"},{"children":[{"attributes":{"functionReturnParameters":4979},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4975,"type":"bytes4","value":"interfaceID"},"id":4980,"name":"Identifier","src":"1745:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4863,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":4981,"name":"Identifier","src":"1760:16:10"}],"id":4982,"name":"BinaryOperation","src":"1745:31:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7602,"type":"contract super ABIResolver","value":"super"},"id":4983,"name":"Identifier","src":"1780:5:10"}],"id":4984,"name":"MemberAccess","src":"1780:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4975,"type":"bytes4","value":"interfaceID"},"id":4985,"name":"Identifier","src":"1804:11:10"}],"id":4986,"name":"FunctionCall","src":"1780:36:10"}],"id":4987,"name":"BinaryOperation","src":"1745:71:10"}],"id":4988,"name":"Return","src":"1738:78:10"}],"id":4989,"name":"Block","src":"1728:95:10"}],"id":4990,"name":"FunctionDefinition","src":"1655:168:10"}],"id":4991,"name":"ContractDefinition","src":"56:1769:10"}],"id":4992,"name":"SourceUnit","src":"0:1826:10"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[5150]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4993,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5151,"symbolAliases":[null],"unitAlias":""},"id":4994,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5150,6211],"name":"AddrResolver","scope":5151},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":4995,"name":"UserDefinedTypeName","src":"81:12:11"}],"id":4996,"name":"InheritanceSpecifier","src":"81:12:11"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":5150,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4997,"name":"ElementaryTypeName","src":"100:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":4998,"name":"Literal","src":"144:10:11"}],"id":4999,"name":"VariableDeclaration","src":"100:54:11"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":5150,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5000,"name":"ElementaryTypeName","src":"160:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":5001,"name":"Literal","src":"207:10:11"}],"id":5002,"name":"VariableDeclaration","src":"160:57:11"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":5150,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5003,"name":"ElementaryTypeName","src":"223:4:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":5004,"name":"Literal","src":"261:2:11"}],"id":5005,"name":"VariableDeclaration","src":"223:40:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5011,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5006,"name":"ElementaryTypeName","src":"288:7:11"}],"id":5007,"name":"VariableDeclaration","src":"288:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":5011,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5008,"name":"ElementaryTypeName","src":"310:7:11"}],"id":5009,"name":"VariableDeclaration","src":"310:9:11"}],"id":5010,"name":"ParameterList","src":"287:33:11"}],"id":5011,"name":"EventDefinition","src":"270:51:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5019,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5012,"name":"ElementaryTypeName","src":"347:7:11"}],"id":5013,"name":"VariableDeclaration","src":"347:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":5019,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5014,"name":"ElementaryTypeName","src":"369:4:11"}],"id":5015,"name":"VariableDeclaration","src":"369:13:11"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":5019,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5016,"name":"ElementaryTypeName","src":"384:5:11"}],"id":5017,"name":"VariableDeclaration","src":"384:16:11"}],"id":5018,"name":"ParameterList","src":"346:55:11"}],"id":5019,"name":"EventDefinition","src":"326:76:11"},{"attributes":{"constant":false,"name":"_addresses","scope":5150,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5020,"name":"ElementaryTypeName","src":"416:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5021,"name":"ElementaryTypeName","src":"433:4:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":5022,"name":"ElementaryTypeName","src":"439:5:11"}],"id":5023,"name":"Mapping","src":"425:20:11"}],"id":5024,"name":"Mapping","src":"408:38:11"}],"id":5025,"name":"VariableDeclaration","src":"408:49:11"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":5150,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5044,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5026,"name":"ElementaryTypeName","src":"698:7:11"}],"id":5027,"name":"VariableDeclaration","src":"698:12:11"},{"attributes":{"constant":false,"name":"a","scope":5044,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5028,"name":"ElementaryTypeName","src":"712:7:11"}],"id":5029,"name":"VariableDeclaration","src":"712:9:11"}],"id":5030,"name":"ParameterList","src":"697:25:11"},{"attributes":{"parameters":[null]},"children":[],"id":5034,"name":"ParameterList","src":"749:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5031,"name":"Identifier","src":"732:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5027,"type":"bytes32","value":"node"},"id":5032,"name":"Identifier","src":"743:4:11"}],"id":5033,"name":"ModifierInvocation","src":"732:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5112,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":5035,"name":"Identifier","src":"759:15:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5027,"type":"bytes32","value":"node"},"id":5036,"name":"Identifier","src":"775:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5005,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5037,"name":"Identifier","src":"781:13:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6210,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":5038,"name":"Identifier","src":"796:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5029,"type":"address","value":"a"},"id":5039,"name":"Identifier","src":"811:1:11"}],"id":5040,"name":"FunctionCall","src":"796:17:11"}],"id":5041,"name":"FunctionCall","src":"759:55:11"}],"id":5042,"name":"ExpressionStatement","src":"759:55:11"}],"id":5043,"name":"Block","src":"749:72:11"}],"id":5044,"name":"FunctionDefinition","src":"681:140:11"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5150,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5073,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5045,"name":"ElementaryTypeName","src":"994:7:11"}],"id":5046,"name":"VariableDeclaration","src":"994:12:11"}],"id":5047,"name":"ParameterList","src":"993:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":5073,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5048,"name":"ElementaryTypeName","src":"1029:15:11"}],"id":5049,"name":"VariableDeclaration","src":"1029:15:11"}],"id":5050,"name":"ParameterList","src":"1028:17:11"},{"children":[{"attributes":{"assignments":[5052]},"children":[{"attributes":{"constant":false,"name":"a","scope":5072,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5051,"name":"ElementaryTypeName","src":"1056:5:11"}],"id":5052,"name":"VariableDeclaration","src":"1056:14:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[5073,5128],"referencedDeclaration":5128,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":5053,"name":"Identifier","src":"1073:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5046,"type":"bytes32","value":"node"},"id":5054,"name":"Identifier","src":"1078:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5005,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5055,"name":"Identifier","src":"1084:13:11"}],"id":5056,"name":"FunctionCall","src":"1073:25:11"}],"id":5057,"name":"VariableDeclarationStatement","src":"1056:42:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5052,"type":"bytes memory","value":"a"},"id":5058,"name":"Identifier","src":"1111:1:11"}],"id":5059,"name":"MemberAccess","src":"1111:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5060,"name":"Literal","src":"1123:1:11"}],"id":5061,"name":"BinaryOperation","src":"1111:13:11"},{"children":[{"attributes":{"functionReturnParameters":5050},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5062,"name":"ElementaryTypeNameExpression","src":"1147:7:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5063,"name":"Literal","src":"1155:1:11"}],"id":5064,"name":"FunctionCall","src":"1147:10:11"}],"id":5065,"name":"Return","src":"1140:17:11"}],"id":5066,"name":"Block","src":"1126:42:11"}],"id":5067,"name":"IfStatement","src":"1108:60:11"},{"attributes":{"functionReturnParameters":5050},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6194,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5068,"name":"Identifier","src":"1184:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5052,"type":"bytes memory","value":"a"},"id":5069,"name":"Identifier","src":"1199:1:11"}],"id":5070,"name":"FunctionCall","src":"1184:17:11"}],"id":5071,"name":"Return","src":"1177:24:11"}],"id":5072,"name":"Block","src":"1046:162:11"}],"id":5073,"name":"FunctionDefinition","src":"980:228:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":5150,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5112,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5074,"name":"ElementaryTypeName","src":"1239:7:11"}],"id":5075,"name":"VariableDeclaration","src":"1239:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":5112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5076,"name":"ElementaryTypeName","src":"1253:4:11"}],"id":5077,"name":"VariableDeclaration","src":"1253:13:11"},{"attributes":{"constant":false,"name":"a","scope":5112,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5078,"name":"ElementaryTypeName","src":"1268:5:11"}],"id":5079,"name":"VariableDeclaration","src":"1268:14:11"}],"id":5080,"name":"ParameterList","src":"1238:45:11"},{"attributes":{"parameters":[null]},"children":[],"id":5084,"name":"ParameterList","src":"1308:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5081,"name":"Identifier","src":"1291:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bytes32","value":"node"},"id":5082,"name":"Identifier","src":"1302:4:11"}],"id":5083,"name":"ModifierInvocation","src":"1291:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5019,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":5085,"name":"Identifier","src":"1323:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bytes32","value":"node"},"id":5086,"name":"Identifier","src":"1338:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5077,"type":"uint256","value":"coinType"},"id":5087,"name":"Identifier","src":"1344:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"bytes memory","value":"a"},"id":5088,"name":"Identifier","src":"1354:1:11"}],"id":5089,"name":"FunctionCall","src":"1323:33:11"}],"id":5090,"name":"EmitStatement","src":"1318:38:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5077,"type":"uint256","value":"coinType"},"id":5091,"name":"Identifier","src":"1369:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5005,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5092,"name":"Identifier","src":"1381:13:11"}],"id":5093,"name":"BinaryOperation","src":"1369:25:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5011,"type":"function (bytes32,address)","value":"AddrChanged"},"id":5094,"name":"Identifier","src":"1415:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bytes32","value":"node"},"id":5095,"name":"Identifier","src":"1427:4:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6194,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5096,"name":"Identifier","src":"1433:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"bytes memory","value":"a"},"id":5097,"name":"Identifier","src":"1448:1:11"}],"id":5098,"name":"FunctionCall","src":"1433:17:11"}],"id":5099,"name":"FunctionCall","src":"1415:36:11"}],"id":5100,"name":"EmitStatement","src":"1410:41:11"}],"id":5101,"name":"Block","src":"1396:66:11"}],"id":5102,"name":"IfStatement","src":"1366:96:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5025,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5103,"name":"Identifier","src":"1471:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bytes32","value":"node"},"id":5104,"name":"Identifier","src":"1482:4:11"}],"id":5106,"name":"IndexAccess","src":"1471:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5077,"type":"uint256","value":"coinType"},"id":5105,"name":"Identifier","src":"1488:8:11"}],"id":5107,"name":"IndexAccess","src":"1471:26:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"bytes memory","value":"a"},"id":5108,"name":"Identifier","src":"1500:1:11"}],"id":5109,"name":"Assignment","src":"1471:30:11"}],"id":5110,"name":"ExpressionStatement","src":"1471:30:11"}],"id":5111,"name":"Block","src":"1308:200:11"}],"id":5112,"name":"FunctionDefinition","src":"1214:294:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5150,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5128,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5113,"name":"ElementaryTypeName","src":"1528:7:11"}],"id":5114,"name":"VariableDeclaration","src":"1528:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":5128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5115,"name":"ElementaryTypeName","src":"1542:4:11"}],"id":5116,"name":"VariableDeclaration","src":"1542:13:11"}],"id":5117,"name":"ParameterList","src":"1527:29:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":5128,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5118,"name":"ElementaryTypeName","src":"1577:5:11"}],"id":5119,"name":"VariableDeclaration","src":"1577:12:11"}],"id":5120,"name":"ParameterList","src":"1576:14:11"},{"children":[{"attributes":{"functionReturnParameters":5120},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5025,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5121,"name":"Identifier","src":"1608:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5114,"type":"bytes32","value":"node"},"id":5122,"name":"Identifier","src":"1619:4:11"}],"id":5123,"name":"IndexAccess","src":"1608:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5116,"type":"uint256","value":"coinType"},"id":5124,"name":"Identifier","src":"1625:8:11"}],"id":5125,"name":"IndexAccess","src":"1608:26:11"}],"id":5126,"name":"Return","src":"1601:33:11"}],"id":5127,"name":"Block","src":"1591:50:11"}],"id":5128,"name":"FunctionDefinition","src":"1514:127:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5150,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5149,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5129,"name":"ElementaryTypeName","src":"1674:6:11"}],"id":5130,"name":"VariableDeclaration","src":"1674:18:11"}],"id":5131,"name":"ParameterList","src":"1673:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":5149,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5132,"name":"ElementaryTypeName","src":"1714:4:11"}],"id":5133,"name":"VariableDeclaration","src":"1714:4:11"}],"id":5134,"name":"ParameterList","src":"1713:6:11"},{"children":[{"attributes":{"functionReturnParameters":5134},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5130,"type":"bytes4","value":"interfaceID"},"id":5135,"name":"Identifier","src":"1737:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4999,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":5136,"name":"Identifier","src":"1752:17:11"}],"id":5137,"name":"BinaryOperation","src":"1737:32:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5130,"type":"bytes4","value":"interfaceID"},"id":5138,"name":"Identifier","src":"1773:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5002,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":5139,"name":"Identifier","src":"1788:20:11"}],"id":5140,"name":"BinaryOperation","src":"1773:35:11"}],"id":5141,"name":"BinaryOperation","src":"1737:71:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7604,"type":"contract super AddrResolver","value":"super"},"id":5142,"name":"Identifier","src":"1812:5:11"}],"id":5143,"name":"MemberAccess","src":"1812:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5130,"type":"bytes4","value":"interfaceID"},"id":5144,"name":"Identifier","src":"1836:11:11"}],"id":5145,"name":"FunctionCall","src":"1812:36:11"}],"id":5146,"name":"BinaryOperation","src":"1737:111:11"}],"id":5147,"name":"Return","src":"1730:118:11"}],"id":5148,"name":"Block","src":"1720:135:11"}],"id":5149,"name":"FunctionDefinition","src":"1647:208:11"}],"id":5150,"name":"ContractDefinition","src":"56:1801:11"}],"id":5151,"name":"SourceUnit","src":"0:1857:11"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[5220]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5152,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5221,"symbolAliases":[null],"unitAlias":""},"id":5153,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5220,6211],"name":"ContentHashResolver","scope":5221},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5154,"name":"UserDefinedTypeName","src":"88:12:12"}],"id":5155,"name":"InheritanceSpecifier","src":"88:12:12"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":5220,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5156,"name":"ElementaryTypeName","src":"107:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":5157,"name":"Literal","src":"159:10:12"}],"id":5158,"name":"VariableDeclaration","src":"107:62:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5164,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5159,"name":"ElementaryTypeName","src":"201:7:12"}],"id":5160,"name":"VariableDeclaration","src":"201:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":5164,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5161,"name":"ElementaryTypeName","src":"223:5:12"}],"id":5162,"name":"VariableDeclaration","src":"223:10:12"}],"id":5163,"name":"ParameterList","src":"200:34:12"}],"id":5164,"name":"EventDefinition","src":"176:59:12"},{"attributes":{"constant":false,"name":"hashes","scope":5220,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5165,"name":"ElementaryTypeName","src":"249:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5166,"name":"ElementaryTypeName","src":"258:5:12"}],"id":5167,"name":"Mapping","src":"241:23:12"}],"id":5168,"name":"VariableDeclaration","src":"241:30:12"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":5220,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5190,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5169,"name":"ElementaryTypeName","src":"529:7:12"}],"id":5170,"name":"VariableDeclaration","src":"529:12:12"},{"attributes":{"constant":false,"name":"hash","scope":5190,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5171,"name":"ElementaryTypeName","src":"543:5:12"}],"id":5172,"name":"VariableDeclaration","src":"543:19:12"}],"id":5173,"name":"ParameterList","src":"528:35:12"},{"attributes":{"parameters":[null]},"children":[],"id":5177,"name":"ParameterList","src":"590:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5174,"name":"Identifier","src":"573:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5170,"type":"bytes32","value":"node"},"id":5175,"name":"Identifier","src":"584:4:12"}],"id":5176,"name":"ModifierInvocation","src":"573:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5178,"name":"Identifier","src":"600:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5170,"type":"bytes32","value":"node"},"id":5179,"name":"Identifier","src":"607:4:12"}],"id":5180,"name":"IndexAccess","src":"600:12:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5172,"type":"bytes calldata","value":"hash"},"id":5181,"name":"Identifier","src":"615:4:12"}],"id":5182,"name":"Assignment","src":"600:19:12"}],"id":5183,"name":"ExpressionStatement","src":"600:19:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5164,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":5184,"name":"Identifier","src":"634:18:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5170,"type":"bytes32","value":"node"},"id":5185,"name":"Identifier","src":"653:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5172,"type":"bytes calldata","value":"hash"},"id":5186,"name":"Identifier","src":"659:4:12"}],"id":5187,"name":"FunctionCall","src":"634:30:12"}],"id":5188,"name":"EmitStatement","src":"629:35:12"}],"id":5189,"name":"Block","src":"590:81:12"}],"id":5190,"name":"FunctionDefinition","src":"505:166:12"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":5220,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5202,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5191,"name":"ElementaryTypeName","src":"859:7:12"}],"id":5192,"name":"VariableDeclaration","src":"859:12:12"}],"id":5193,"name":"ParameterList","src":"858:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5202,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5194,"name":"ElementaryTypeName","src":"896:5:12"}],"id":5195,"name":"VariableDeclaration","src":"896:12:12"}],"id":5196,"name":"ParameterList","src":"895:14:12"},{"children":[{"attributes":{"functionReturnParameters":5196},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5197,"name":"Identifier","src":"927:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5192,"type":"bytes32","value":"node"},"id":5198,"name":"Identifier","src":"934:4:12"}],"id":5199,"name":"IndexAccess","src":"927:12:12"}],"id":5200,"name":"Return","src":"920:19:12"}],"id":5201,"name":"Block","src":"910:36:12"}],"id":5202,"name":"FunctionDefinition","src":"838:108:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5220,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5219,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5203,"name":"ElementaryTypeName","src":"979:6:12"}],"id":5204,"name":"VariableDeclaration","src":"979:18:12"}],"id":5205,"name":"ParameterList","src":"978:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5219,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5206,"name":"ElementaryTypeName","src":"1019:4:12"}],"id":5207,"name":"VariableDeclaration","src":"1019:4:12"}],"id":5208,"name":"ParameterList","src":"1018:6:12"},{"children":[{"attributes":{"functionReturnParameters":5208},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5204,"type":"bytes4","value":"interfaceID"},"id":5209,"name":"Identifier","src":"1042:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5158,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":5210,"name":"Identifier","src":"1057:25:12"}],"id":5211,"name":"BinaryOperation","src":"1042:40:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"contract super ContentHashResolver","value":"super"},"id":5212,"name":"Identifier","src":"1086:5:12"}],"id":5213,"name":"MemberAccess","src":"1086:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5204,"type":"bytes4","value":"interfaceID"},"id":5214,"name":"Identifier","src":"1110:11:12"}],"id":5215,"name":"FunctionCall","src":"1086:36:12"}],"id":5216,"name":"BinaryOperation","src":"1042:80:12"}],"id":5217,"name":"Return","src":"1035:87:12"}],"id":5218,"name":"Block","src":"1025:104:12"}],"id":5219,"name":"FunctionDefinition","src":"952:177:12"}],"id":5220,"name":"ContractDefinition","src":"56:1075:12"}],"id":5221,"name":"SourceUnit","src":"0:1132:12"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[5711]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5222,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5712,"symbolAliases":[null],"unitAlias":""},"id":5223,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"SourceUnit":6830,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":5712,"symbolAliases":[null],"unitAlias":""},"id":5224,"name":"ImportDirective","src":"55:24:13"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5711,6211],"name":"DNSResolver","scope":5712},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5225,"name":"UserDefinedTypeName","src":"105:12:13"}],"id":5226,"name":"InheritanceSpecifier","src":"105:12:13"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":6829,"type":"library RRUtils"},"id":5227,"name":"UserDefinedTypeName","src":"130:7:13"}],"id":5228,"name":"UsingForDirective","src":"124:20:13"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7550,"type":"library ENSBytesUtils"},"id":5229,"name":"UserDefinedTypeName","src":"155:13:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5230,"name":"ElementaryTypeName","src":"173:5:13"}],"id":5231,"name":"UsingForDirective","src":"149:30:13"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":5711,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5232,"name":"ElementaryTypeName","src":"185:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":5233,"name":"Literal","src":"235:10:13"}],"id":5234,"name":"VariableDeclaration","src":"185:60:13"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":5711,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5235,"name":"ElementaryTypeName","src":"251:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":5236,"name":"Literal","src":"299:10:13"}],"id":5237,"name":"VariableDeclaration","src":"251:58:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5247,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5238,"name":"ElementaryTypeName","src":"430:7:13"}],"id":5239,"name":"VariableDeclaration","src":"430:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5247,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5240,"name":"ElementaryTypeName","src":"452:5:13"}],"id":5241,"name":"VariableDeclaration","src":"452:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5247,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5242,"name":"ElementaryTypeName","src":"464:6:13"}],"id":5243,"name":"VariableDeclaration","src":"464:15:13"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":5247,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5244,"name":"ElementaryTypeName","src":"481:5:13"}],"id":5245,"name":"VariableDeclaration","src":"481:12:13"}],"id":5246,"name":"ParameterList","src":"429:65:13"}],"id":5247,"name":"EventDefinition","src":"407:88:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5255,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5248,"name":"ElementaryTypeName","src":"614:7:13"}],"id":5249,"name":"VariableDeclaration","src":"614:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5255,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5250,"name":"ElementaryTypeName","src":"636:5:13"}],"id":5251,"name":"VariableDeclaration","src":"636:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5255,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5252,"name":"ElementaryTypeName","src":"648:6:13"}],"id":5253,"name":"VariableDeclaration","src":"648:15:13"}],"id":5254,"name":"ParameterList","src":"613:51:13"}],"id":5255,"name":"EventDefinition","src":"591:74:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5259,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5256,"name":"ElementaryTypeName","src":"777:7:13"}],"id":5257,"name":"VariableDeclaration","src":"777:20:13"}],"id":5258,"name":"ParameterList","src":"776:22:13"}],"id":5259,"name":"EventDefinition","src":"756:43:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5267,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5260,"name":"ElementaryTypeName","src":"913:7:13"}],"id":5261,"name":"VariableDeclaration","src":"913:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":5267,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5262,"name":"ElementaryTypeName","src":"935:5:13"}],"id":5263,"name":"VariableDeclaration","src":"935:18:13"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":5267,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5264,"name":"ElementaryTypeName","src":"955:5:13"}],"id":5265,"name":"VariableDeclaration","src":"955:14:13"}],"id":5266,"name":"ParameterList","src":"912:58:13"}],"id":5267,"name":"EventDefinition","src":"888:83:13"},{"attributes":{"constant":false,"name":"zonehashes","scope":5711,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5268,"name":"ElementaryTypeName","src":"1181:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5269,"name":"ElementaryTypeName","src":"1190:5:13"}],"id":5270,"name":"Mapping","src":"1173:23:13"}],"id":5271,"name":"VariableDeclaration","src":"1173:42:13"},{"attributes":{"constant":false,"name":"versions","scope":5711,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5272,"name":"ElementaryTypeName","src":"1433:7:13"},{"attributes":{"name":"uint256","type":"uint256"},"id":5273,"name":"ElementaryTypeName","src":"1442:7:13"}],"id":5274,"name":"Mapping","src":"1425:25:13"}],"id":5275,"name":"VariableDeclaration","src":"1425:42:13"},{"attributes":{"constant":false,"name":"records","scope":5711,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5276,"name":"ElementaryTypeName","src":"1589:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5277,"name":"ElementaryTypeName","src":"1606:7:13"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5278,"name":"ElementaryTypeName","src":"1623:7:13"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5279,"name":"ElementaryTypeName","src":"1640:6:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5280,"name":"ElementaryTypeName","src":"1648:5:13"}],"id":5281,"name":"Mapping","src":"1632:22:13"}],"id":5282,"name":"Mapping","src":"1615:40:13"}],"id":5283,"name":"Mapping","src":"1598:58:13"}],"id":5284,"name":"Mapping","src":"1581:76:13"}],"id":5285,"name":"VariableDeclaration","src":"1581:92:13"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":5711,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5286,"name":"ElementaryTypeName","src":"1853:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5287,"name":"ElementaryTypeName","src":"1870:7:13"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5288,"name":"ElementaryTypeName","src":"1887:7:13"},{"attributes":{"name":"uint16","type":"uint16"},"id":5289,"name":"ElementaryTypeName","src":"1896:6:13"}],"id":5290,"name":"Mapping","src":"1879:24:13"}],"id":5291,"name":"Mapping","src":"1862:42:13"}],"id":5292,"name":"Mapping","src":"1845:60:13"}],"id":5293,"name":"VariableDeclaration","src":"1845:85:13"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":5711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5458,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5294,"name":"ElementaryTypeName","src":"2877:7:13"}],"id":5295,"name":"VariableDeclaration","src":"2877:12:13"},{"attributes":{"constant":false,"name":"data","scope":5458,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5296,"name":"ElementaryTypeName","src":"2891:5:13"}],"id":5297,"name":"VariableDeclaration","src":"2891:19:13"}],"id":5298,"name":"ParameterList","src":"2876:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":5302,"name":"ParameterList","src":"2938:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5299,"name":"Identifier","src":"2921:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5295,"type":"bytes32","value":"node"},"id":5300,"name":"Identifier","src":"2932:4:13"}],"id":5301,"name":"ModifierInvocation","src":"2921:16:13"},{"children":[{"attributes":{"assignments":[5304]},"children":[{"attributes":{"constant":false,"name":"resource","scope":5457,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5303,"name":"ElementaryTypeName","src":"2948:6:13"}],"id":5304,"name":"VariableDeclaration","src":"2948:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5305,"name":"Literal","src":"2966:1:13"}],"id":5306,"name":"VariableDeclarationStatement","src":"2948:19:13"},{"attributes":{"assignments":[5308]},"children":[{"attributes":{"constant":false,"name":"offset","scope":5457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5307,"name":"ElementaryTypeName","src":"2977:7:13"}],"id":5308,"name":"VariableDeclaration","src":"2977:14:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5309,"name":"Literal","src":"2994:1:13"}],"id":5310,"name":"VariableDeclarationStatement","src":"2977:18:13"},{"attributes":{"assignments":[5312],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":5457,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5311,"name":"ElementaryTypeName","src":"3005:5:13"}],"id":5312,"name":"VariableDeclaration","src":"3005:17:13"}],"id":5313,"name":"VariableDeclarationStatement","src":"3005:17:13"},{"attributes":{"assignments":[5315],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":5457,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5314,"name":"ElementaryTypeName","src":"3032:5:13"}],"id":5315,"name":"VariableDeclaration","src":"3032:18:13"}],"id":5316,"name":"VariableDeclarationStatement","src":"3032:18:13"},{"attributes":{"assignments":[5318],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5317,"name":"ElementaryTypeName","src":"3060:7:13"}],"id":5318,"name":"VariableDeclaration","src":"3060:16:13"}],"id":5319,"name":"VariableDeclarationStatement","src":"3060:16:13"},{"children":[{"attributes":{"assignments":[5323]},"children":[{"attributes":{"constant":false,"name":"iter","scope":5434,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":6350,"type":"struct RRUtils.RRIterator"},"id":5322,"name":"UserDefinedTypeName","src":"3152:18:13"}],"id":5323,"name":"VariableDeclaration","src":"3152:30:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":6376,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5297,"type":"bytes calldata","value":"data"},"id":5324,"name":"Identifier","src":"3185:4:13"}],"id":5325,"name":"MemberAccess","src":"3185:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5326,"name":"Literal","src":"3201:1:13"}],"id":5327,"name":"FunctionCall","src":"3185:18:13"}],"id":5328,"name":"VariableDeclarationStatement","src":"3152:51:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":6391,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5329,"name":"Identifier","src":"3206:4:13"}],"id":5330,"name":"MemberAccess","src":"3206:9:13"}],"id":5331,"name":"FunctionCall","src":"3206:11:13"}],"id":5332,"name":"UnaryOperation","src":"3205:12:13"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":6493,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5333,"name":"Identifier","src":"3219:4:13"}],"id":5334,"name":"MemberAccess","src":"3219:9:13"}],"id":5335,"name":"FunctionCall","src":"3219:11:13"}],"id":5336,"name":"ExpressionStatement","src":"3219:11:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5337,"name":"Identifier","src":"3250:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5338,"name":"Literal","src":"3262:1:13"}],"id":5339,"name":"BinaryOperation","src":"3250:13:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5340,"name":"Identifier","src":"3283:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":6341,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5341,"name":"Identifier","src":"3294:4:13"}],"id":5342,"name":"MemberAccess","src":"3294:12:13"}],"id":5343,"name":"Assignment","src":"3283:23:13"}],"id":5344,"name":"ExpressionStatement","src":"3283:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5345,"name":"Identifier","src":"3324:4:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":6514,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5346,"name":"Identifier","src":"3331:4:13"}],"id":5347,"name":"MemberAccess","src":"3331:9:13"}],"id":5348,"name":"FunctionCall","src":"3331:11:13"}],"id":5349,"name":"Assignment","src":"3324:18:13"}],"id":5350,"name":"ExpressionStatement","src":"3324:18:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5318,"type":"bytes32","value":"nameHash"},"id":5351,"name":"Identifier","src":"3360:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7559,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5352,"name":"Identifier","src":"3371:9:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":5353,"name":"Identifier","src":"3381:3:13"}],"id":5354,"name":"MemberAccess","src":"3381:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5355,"name":"Identifier","src":"3398:4:13"}],"id":5356,"name":"FunctionCall","src":"3381:22:13"}],"id":5357,"name":"FunctionCall","src":"3371:33:13"}],"id":5358,"name":"Assignment","src":"3360:44:13"}],"id":5359,"name":"ExpressionStatement","src":"3360:44:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5315,"type":"bytes memory","value":"value"},"id":5360,"name":"Identifier","src":"3422:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5361,"name":"ElementaryTypeNameExpression","src":"3430:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":6534,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5362,"name":"Identifier","src":"3436:4:13"}],"id":5363,"name":"MemberAccess","src":"3436:10:13"}],"id":5364,"name":"FunctionCall","src":"3436:12:13"}],"id":5365,"name":"FunctionCall","src":"3430:19:13"}],"id":5366,"name":"Assignment","src":"3422:27:13"}],"id":5367,"name":"ExpressionStatement","src":"3422:27:13"}],"id":5368,"name":"Block","src":"3265:199:13"},{"children":[{"attributes":{"assignments":[5370]},"children":[{"attributes":{"constant":false,"name":"newName","scope":5431,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5369,"name":"ElementaryTypeName","src":"3488:5:13"}],"id":5370,"name":"VariableDeclaration","src":"3488:20:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":6514,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5371,"name":"Identifier","src":"3511:4:13"}],"id":5372,"name":"MemberAccess","src":"3511:9:13"}],"id":5373,"name":"FunctionCall","src":"3511:11:13"}],"id":5374,"name":"VariableDeclarationStatement","src":"3488:34:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5375,"name":"Identifier","src":"3544:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":6341,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5376,"name":"Identifier","src":"3556:4:13"}],"id":5377,"name":"MemberAccess","src":"3556:12:13"}],"id":5378,"name":"BinaryOperation","src":"3544:24:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":7120,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5379,"name":"Identifier","src":"3573:4:13"}],"id":5380,"name":"MemberAccess","src":"3573:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5370,"type":"bytes memory","value":"newName"},"id":5381,"name":"Identifier","src":"3585:7:13"}],"id":5382,"name":"FunctionCall","src":"3573:20:13"}],"id":5383,"name":"UnaryOperation","src":"3572:21:13"}],"id":5384,"name":"BinaryOperation","src":"3544:49:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5710,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":5385,"name":"Identifier","src":"3617:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5295,"type":"bytes32","value":"node"},"id":5386,"name":"Identifier","src":"3629:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5387,"name":"Identifier","src":"3635:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5388,"name":"Identifier","src":"3641:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5297,"type":"bytes calldata","value":"data"},"id":5389,"name":"Identifier","src":"3651:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5390,"name":"Identifier","src":"3657:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5391,"name":"Identifier","src":"3665:4:13"}],"id":5392,"name":"MemberAccess","src":"3665:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5393,"name":"Identifier","src":"3679:6:13"}],"id":5394,"name":"BinaryOperation","src":"3665:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5315,"type":"bytes memory","value":"value"},"id":5395,"name":"Identifier","src":"3687:5:13"}],"id":5396,"name":"MemberAccess","src":"3687:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5397,"name":"Literal","src":"3703:1:13"}],"id":5398,"name":"BinaryOperation","src":"3687:17:13"}],"id":5399,"name":"FunctionCall","src":"3617:88:13"}],"id":5400,"name":"ExpressionStatement","src":"3617:88:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5401,"name":"Identifier","src":"3727:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":6341,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5402,"name":"Identifier","src":"3738:4:13"}],"id":5403,"name":"MemberAccess","src":"3738:12:13"}],"id":5404,"name":"Assignment","src":"3727:23:13"}],"id":5405,"name":"ExpressionStatement","src":"3727:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5406,"name":"Identifier","src":"3772:6:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":6339,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5407,"name":"Identifier","src":"3781:4:13"}],"id":5408,"name":"MemberAccess","src":"3781:11:13"}],"id":5409,"name":"Assignment","src":"3772:20:13"}],"id":5410,"name":"ExpressionStatement","src":"3772:20:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5411,"name":"Identifier","src":"3814:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5370,"type":"bytes memory","value":"newName"},"id":5412,"name":"Identifier","src":"3821:7:13"}],"id":5413,"name":"Assignment","src":"3814:14:13"}],"id":5414,"name":"ExpressionStatement","src":"3814:14:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5318,"type":"bytes32","value":"nameHash"},"id":5415,"name":"Identifier","src":"3850:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7559,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5416,"name":"Identifier","src":"3861:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5417,"name":"Identifier","src":"3871:4:13"}],"id":5418,"name":"FunctionCall","src":"3861:15:13"}],"id":5419,"name":"Assignment","src":"3850:26:13"}],"id":5420,"name":"ExpressionStatement","src":"3850:26:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5315,"type":"bytes memory","value":"value"},"id":5421,"name":"Identifier","src":"3898:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5422,"name":"ElementaryTypeNameExpression","src":"3906:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":6534,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5423,"name":"Identifier","src":"3912:4:13"}],"id":5424,"name":"MemberAccess","src":"3912:10:13"}],"id":5425,"name":"FunctionCall","src":"3912:12:13"}],"id":5426,"name":"FunctionCall","src":"3906:19:13"}],"id":5427,"name":"Assignment","src":"3898:27:13"}],"id":5428,"name":"ExpressionStatement","src":"3898:27:13"}],"id":5429,"name":"Block","src":"3595:349:13"}],"id":5430,"name":"IfStatement","src":"3540:404:13"}],"id":5431,"name":"Block","src":"3470:488:13"}],"id":5432,"name":"IfStatement","src":"3246:712:13"}],"id":5433,"name":"Block","src":"3232:736:13"}],"id":5434,"name":"ForStatement","src":"3147:821:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5435,"name":"Identifier","src":"3981:4:13"}],"id":5436,"name":"MemberAccess","src":"3981:11:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5437,"name":"Literal","src":"3995:1:13"}],"id":5438,"name":"BinaryOperation","src":"3981:15:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5710,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":5439,"name":"Identifier","src":"4012:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5295,"type":"bytes32","value":"node"},"id":5440,"name":"Identifier","src":"4024:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5312,"type":"bytes memory","value":"name"},"id":5441,"name":"Identifier","src":"4030:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5304,"type":"uint16","value":"resource"},"id":5442,"name":"Identifier","src":"4036:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5297,"type":"bytes calldata","value":"data"},"id":5443,"name":"Identifier","src":"4046:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5444,"name":"Identifier","src":"4052:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5297,"type":"bytes calldata","value":"data"},"id":5445,"name":"Identifier","src":"4060:4:13"}],"id":5446,"name":"MemberAccess","src":"4060:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5308,"type":"uint256","value":"offset"},"id":5447,"name":"Identifier","src":"4074:6:13"}],"id":5448,"name":"BinaryOperation","src":"4060:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5315,"type":"bytes memory","value":"value"},"id":5449,"name":"Identifier","src":"4082:5:13"}],"id":5450,"name":"MemberAccess","src":"4082:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5451,"name":"Literal","src":"4098:1:13"}],"id":5452,"name":"BinaryOperation","src":"4082:17:13"}],"id":5453,"name":"FunctionCall","src":"4012:88:13"}],"id":5454,"name":"ExpressionStatement","src":"4012:88:13"}],"id":5455,"name":"Block","src":"3998:113:13"}],"id":5456,"name":"IfStatement","src":"3977:134:13"}],"id":5457,"name":"Block","src":"2938:1179:13"}],"id":5458,"name":"FunctionDefinition","src":"2854:1263:13"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":5711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5482,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5459,"name":"ElementaryTypeName","src":"4538:7:13"}],"id":5460,"name":"VariableDeclaration","src":"4538:12:13"},{"attributes":{"constant":false,"name":"name","scope":5482,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5461,"name":"ElementaryTypeName","src":"4552:7:13"}],"id":5462,"name":"VariableDeclaration","src":"4552:12:13"},{"attributes":{"constant":false,"name":"resource","scope":5482,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5463,"name":"ElementaryTypeName","src":"4566:6:13"}],"id":5464,"name":"VariableDeclaration","src":"4566:15:13"}],"id":5465,"name":"ParameterList","src":"4537:45:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5482,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5466,"name":"ElementaryTypeName","src":"4604:5:13"}],"id":5467,"name":"VariableDeclaration","src":"4604:12:13"}],"id":5468,"name":"ParameterList","src":"4603:14:13"},{"children":[{"attributes":{"functionReturnParameters":5468},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5469,"name":"Identifier","src":"4635:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"bytes32","value":"node"},"id":5470,"name":"Identifier","src":"4643:4:13"}],"id":5471,"name":"IndexAccess","src":"4635:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5275,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5472,"name":"Identifier","src":"4649:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"bytes32","value":"node"},"id":5473,"name":"Identifier","src":"4658:4:13"}],"id":5474,"name":"IndexAccess","src":"4649:14:13"}],"id":5475,"name":"IndexAccess","src":"4635:29:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"name"},"id":5476,"name":"Identifier","src":"4665:4:13"}],"id":5477,"name":"IndexAccess","src":"4635:35:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"uint16","value":"resource"},"id":5478,"name":"Identifier","src":"4671:8:13"}],"id":5479,"name":"IndexAccess","src":"4635:45:13"}],"id":5480,"name":"Return","src":"4628:52:13"}],"id":5481,"name":"Block","src":"4618:69:13"}],"id":5482,"name":"FunctionDefinition","src":"4519:168:13"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":5711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5505,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5483,"name":"ElementaryTypeName","src":"4924:7:13"}],"id":5484,"name":"VariableDeclaration","src":"4924:12:13"},{"attributes":{"constant":false,"name":"name","scope":5505,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5485,"name":"ElementaryTypeName","src":"4938:7:13"}],"id":5486,"name":"VariableDeclaration","src":"4938:12:13"}],"id":5487,"name":"ParameterList","src":"4923:28:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5505,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5488,"name":"ElementaryTypeName","src":"4973:4:13"}],"id":5489,"name":"VariableDeclaration","src":"4973:4:13"}],"id":5490,"name":"ParameterList","src":"4972:6:13"},{"children":[{"attributes":{"functionReturnParameters":5490},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5293,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5491,"name":"Identifier","src":"4997:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes32","value":"node"},"id":5492,"name":"Identifier","src":"5014:4:13"}],"id":5493,"name":"IndexAccess","src":"4997:22:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5275,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5494,"name":"Identifier","src":"5020:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes32","value":"node"},"id":5495,"name":"Identifier","src":"5029:4:13"}],"id":5496,"name":"IndexAccess","src":"5020:14:13"}],"id":5497,"name":"IndexAccess","src":"4997:38:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5486,"type":"bytes32","value":"name"},"id":5498,"name":"Identifier","src":"5036:4:13"}],"id":5499,"name":"IndexAccess","src":"4997:44:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5500,"name":"Literal","src":"5045:1:13"}],"id":5501,"name":"BinaryOperation","src":"4997:49:13"}],"id":5502,"name":"TupleExpression","src":"4996:51:13"}],"id":5503,"name":"Return","src":"4989:58:13"}],"id":5504,"name":"Block","src":"4979:75:13"}],"id":5505,"name":"FunctionDefinition","src":"4901:153:13"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":5711,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5523,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5506,"name":"ElementaryTypeName","src":"5215:7:13"}],"id":5507,"name":"VariableDeclaration","src":"5215:12:13"}],"id":5508,"name":"ParameterList","src":"5214:14:13"},{"attributes":{"parameters":[null]},"children":[],"id":5512,"name":"ParameterList","src":"5253:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5509,"name":"Identifier","src":"5236:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5507,"type":"bytes32","value":"node"},"id":5510,"name":"Identifier","src":"5247:4:13"}],"id":5511,"name":"ModifierInvocation","src":"5236:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5275,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5513,"name":"Identifier","src":"5263:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5507,"type":"bytes32","value":"node"},"id":5514,"name":"Identifier","src":"5272:4:13"}],"id":5515,"name":"IndexAccess","src":"5263:14:13"}],"id":5516,"name":"UnaryOperation","src":"5263:16:13"}],"id":5517,"name":"ExpressionStatement","src":"5263:16:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5259,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":5518,"name":"Identifier","src":"5294:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5507,"type":"bytes32","value":"node"},"id":5519,"name":"Identifier","src":"5309:4:13"}],"id":5520,"name":"FunctionCall","src":"5294:20:13"}],"id":5521,"name":"EmitStatement","src":"5289:25:13"}],"id":5522,"name":"Block","src":"5253:68:13"}],"id":5523,"name":"FunctionDefinition","src":"5193:128:13"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":5711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5552,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5524,"name":"ElementaryTypeName","src":"5562:7:13"}],"id":5525,"name":"VariableDeclaration","src":"5562:12:13"},{"attributes":{"constant":false,"name":"hash","scope":5552,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5526,"name":"ElementaryTypeName","src":"5576:5:13"}],"id":5527,"name":"VariableDeclaration","src":"5576:19:13"}],"id":5528,"name":"ParameterList","src":"5561:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":5532,"name":"ParameterList","src":"5623:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5529,"name":"Identifier","src":"5606:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes32","value":"node"},"id":5530,"name":"Identifier","src":"5617:4:13"}],"id":5531,"name":"ModifierInvocation","src":"5606:16:13"},{"children":[{"attributes":{"assignments":[5534]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":5551,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5533,"name":"ElementaryTypeName","src":"5633:5:13"}],"id":5534,"name":"VariableDeclaration","src":"5633:20:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5271,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5535,"name":"Identifier","src":"5656:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes32","value":"node"},"id":5536,"name":"Identifier","src":"5667:4:13"}],"id":5537,"name":"IndexAccess","src":"5656:16:13"}],"id":5538,"name":"VariableDeclarationStatement","src":"5633:39:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5271,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5539,"name":"Identifier","src":"5682:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes32","value":"node"},"id":5540,"name":"Identifier","src":"5693:4:13"}],"id":5541,"name":"IndexAccess","src":"5682:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5527,"type":"bytes calldata","value":"hash"},"id":5542,"name":"Identifier","src":"5701:4:13"}],"id":5543,"name":"Assignment","src":"5682:23:13"}],"id":5544,"name":"ExpressionStatement","src":"5682:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5267,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":5545,"name":"Identifier","src":"5720:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes32","value":"node"},"id":5546,"name":"Identifier","src":"5739:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5534,"type":"bytes memory","value":"oldhash"},"id":5547,"name":"Identifier","src":"5745:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5527,"type":"bytes calldata","value":"hash"},"id":5548,"name":"Identifier","src":"5754:4:13"}],"id":5549,"name":"FunctionCall","src":"5720:39:13"}],"id":5550,"name":"EmitStatement","src":"5715:44:13"}],"id":5551,"name":"Block","src":"5623:143:13"}],"id":5552,"name":"FunctionDefinition","src":"5541:225:13"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":5711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5564,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5553,"name":"ElementaryTypeName","src":"5938:7:13"}],"id":5554,"name":"VariableDeclaration","src":"5938:12:13"}],"id":5555,"name":"ParameterList","src":"5937:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5564,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5556,"name":"ElementaryTypeName","src":"5975:5:13"}],"id":5557,"name":"VariableDeclaration","src":"5975:12:13"}],"id":5558,"name":"ParameterList","src":"5974:14:13"},{"children":[{"attributes":{"functionReturnParameters":5558},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5271,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5559,"name":"Identifier","src":"6006:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5554,"type":"bytes32","value":"node"},"id":5560,"name":"Identifier","src":"6017:4:13"}],"id":5561,"name":"IndexAccess","src":"6006:16:13"}],"id":5562,"name":"Return","src":"5999:23:13"}],"id":5563,"name":"Block","src":"5989:40:13"}],"id":5564,"name":"FunctionDefinition","src":"5920:109:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5711,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5585,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5565,"name":"ElementaryTypeName","src":"6062:6:13"}],"id":5566,"name":"VariableDeclaration","src":"6062:18:13"}],"id":5567,"name":"ParameterList","src":"6061:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5585,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5568,"name":"ElementaryTypeName","src":"6102:4:13"}],"id":5569,"name":"VariableDeclaration","src":"6102:4:13"}],"id":5570,"name":"ParameterList","src":"6101:6:13"},{"children":[{"attributes":{"functionReturnParameters":5570},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5566,"type":"bytes4","value":"interfaceID"},"id":5571,"name":"Identifier","src":"6125:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":5572,"name":"Identifier","src":"6140:23:13"}],"id":5573,"name":"BinaryOperation","src":"6125:38:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5566,"type":"bytes4","value":"interfaceID"},"id":5574,"name":"Identifier","src":"6182:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5237,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":5575,"name":"Identifier","src":"6197:21:13"}],"id":5576,"name":"BinaryOperation","src":"6182:36:13"}],"id":5577,"name":"BinaryOperation","src":"6125:93:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7610,"type":"contract super DNSResolver","value":"super"},"id":5578,"name":"Identifier","src":"6237:5:13"}],"id":5579,"name":"MemberAccess","src":"6237:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5566,"type":"bytes4","value":"interfaceID"},"id":5580,"name":"Identifier","src":"6261:11:13"}],"id":5581,"name":"FunctionCall","src":"6237:36:13"}],"id":5582,"name":"BinaryOperation","src":"6125:148:13"}],"id":5583,"name":"Return","src":"6118:155:13"}],"id":5584,"name":"Block","src":"6108:172:13"}],"id":5585,"name":"FunctionDefinition","src":"6035:245:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":5711,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5710,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5586,"name":"ElementaryTypeName","src":"6316:7:13"}],"id":5587,"name":"VariableDeclaration","src":"6316:12:13"},{"attributes":{"constant":false,"name":"name","scope":5710,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5588,"name":"ElementaryTypeName","src":"6338:5:13"}],"id":5589,"name":"VariableDeclaration","src":"6338:17:13"},{"attributes":{"constant":false,"name":"resource","scope":5710,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5590,"name":"ElementaryTypeName","src":"6365:6:13"}],"id":5591,"name":"VariableDeclaration","src":"6365:15:13"},{"attributes":{"constant":false,"name":"data","scope":5710,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5592,"name":"ElementaryTypeName","src":"6390:5:13"}],"id":5593,"name":"VariableDeclaration","src":"6390:17:13"},{"attributes":{"constant":false,"name":"offset","scope":5710,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5594,"name":"ElementaryTypeName","src":"6417:7:13"}],"id":5595,"name":"VariableDeclaration","src":"6417:14:13"},{"attributes":{"constant":false,"name":"size","scope":5710,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5596,"name":"ElementaryTypeName","src":"6441:7:13"}],"id":5597,"name":"VariableDeclaration","src":"6441:12:13"},{"attributes":{"constant":false,"name":"deleteRecord","scope":5710,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5598,"name":"ElementaryTypeName","src":"6463:4:13"}],"id":5599,"name":"VariableDeclaration","src":"6463:17:13"}],"id":5600,"name":"ParameterList","src":"6306:175:13"},{"attributes":{"parameters":[null]},"children":[],"id":5601,"name":"ParameterList","src":"6494:0:13"},{"children":[{"attributes":{"assignments":[5603]},"children":[{"attributes":{"constant":false,"name":"version","scope":5709,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5602,"name":"ElementaryTypeName","src":"6504:7:13"}],"id":5603,"name":"VariableDeclaration","src":"6504:15:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5275,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5604,"name":"Identifier","src":"6522:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5605,"name":"Identifier","src":"6531:4:13"}],"id":5606,"name":"IndexAccess","src":"6522:14:13"}],"id":5607,"name":"VariableDeclarationStatement","src":"6504:32:13"},{"attributes":{"assignments":[5609]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5709,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5608,"name":"ElementaryTypeName","src":"6546:7:13"}],"id":5609,"name":"VariableDeclaration","src":"6546:16:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7559,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5610,"name":"Identifier","src":"6565:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5589,"type":"bytes memory","value":"name"},"id":5611,"name":"Identifier","src":"6575:4:13"}],"id":5612,"name":"FunctionCall","src":"6565:15:13"}],"id":5613,"name":"VariableDeclarationStatement","src":"6546:34:13"},{"attributes":{"assignments":[5615]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":5709,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5614,"name":"ElementaryTypeName","src":"6590:5:13"}],"id":5615,"name":"VariableDeclaration","src":"6590:19:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7327,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5593,"type":"bytes memory","value":"data"},"id":5616,"name":"Identifier","src":"6612:4:13"}],"id":5617,"name":"MemberAccess","src":"6612:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5595,"type":"uint256","value":"offset"},"id":5618,"name":"Identifier","src":"6627:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"uint256","value":"size"},"id":5619,"name":"Identifier","src":"6635:4:13"}],"id":5620,"name":"FunctionCall","src":"6612:28:13"}],"id":5621,"name":"VariableDeclarationStatement","src":"6590:50:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5599,"type":"bool","value":"deleteRecord"},"id":5622,"name":"Identifier","src":"6654:12:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5623,"name":"Identifier","src":"6686:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5624,"name":"Identifier","src":"6694:4:13"}],"id":5625,"name":"IndexAccess","src":"6686:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5626,"name":"Identifier","src":"6700:7:13"}],"id":5627,"name":"IndexAccess","src":"6686:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5628,"name":"Identifier","src":"6709:8:13"}],"id":5629,"name":"IndexAccess","src":"6686:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5630,"name":"Identifier","src":"6719:8:13"}],"id":5631,"name":"IndexAccess","src":"6686:42:13"}],"id":5632,"name":"MemberAccess","src":"6686:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5633,"name":"Literal","src":"6739:1:13"}],"id":5634,"name":"BinaryOperation","src":"6686:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5293,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5635,"name":"Identifier","src":"6760:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5636,"name":"Identifier","src":"6777:4:13"}],"id":5639,"name":"IndexAccess","src":"6760:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5637,"name":"Identifier","src":"6783:7:13"}],"id":5640,"name":"IndexAccess","src":"6760:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5638,"name":"Identifier","src":"6792:8:13"}],"id":5641,"name":"IndexAccess","src":"6760:41:13"}],"id":5642,"name":"UnaryOperation","src":"6760:43:13"}],"id":5643,"name":"ExpressionStatement","src":"6760:43:13"}],"id":5644,"name":"Block","src":"6742:76:13"}],"id":5645,"name":"IfStatement","src":"6682:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5646,"name":"Identifier","src":"6838:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5647,"name":"Identifier","src":"6846:4:13"}],"id":5648,"name":"IndexAccess","src":"6838:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5649,"name":"Identifier","src":"6852:7:13"}],"id":5650,"name":"IndexAccess","src":"6838:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5651,"name":"Identifier","src":"6861:8:13"}],"id":5652,"name":"IndexAccess","src":"6838:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5653,"name":"Identifier","src":"6871:8:13"}],"id":5654,"name":"IndexAccess","src":"6838:42:13"}],"id":5655,"name":"TupleExpression","src":"6837:44:13"}],"id":5656,"name":"UnaryOperation","src":"6831:50:13"}],"id":5657,"name":"ExpressionStatement","src":"6831:50:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":5255,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":5658,"name":"Identifier","src":"6900:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5659,"name":"Identifier","src":"6917:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5589,"type":"bytes memory","value":"name"},"id":5660,"name":"Identifier","src":"6923:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5661,"name":"Identifier","src":"6929:8:13"}],"id":5662,"name":"FunctionCall","src":"6900:38:13"}],"id":5663,"name":"EmitStatement","src":"6895:43:13"}],"id":5664,"name":"Block","src":"6668:281:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5665,"name":"Identifier","src":"6973:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5666,"name":"Identifier","src":"6981:4:13"}],"id":5667,"name":"IndexAccess","src":"6973:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5668,"name":"Identifier","src":"6987:7:13"}],"id":5669,"name":"IndexAccess","src":"6973:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5670,"name":"Identifier","src":"6996:8:13"}],"id":5671,"name":"IndexAccess","src":"6973:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5672,"name":"Identifier","src":"7006:8:13"}],"id":5673,"name":"IndexAccess","src":"6973:42:13"}],"id":5674,"name":"MemberAccess","src":"6973:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5675,"name":"Literal","src":"7026:1:13"}],"id":5676,"name":"BinaryOperation","src":"6973:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5293,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5677,"name":"Identifier","src":"7047:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5678,"name":"Identifier","src":"7064:4:13"}],"id":5681,"name":"IndexAccess","src":"7047:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5679,"name":"Identifier","src":"7070:7:13"}],"id":5682,"name":"IndexAccess","src":"7047:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5680,"name":"Identifier","src":"7079:8:13"}],"id":5683,"name":"IndexAccess","src":"7047:41:13"}],"id":5684,"name":"UnaryOperation","src":"7047:43:13"}],"id":5685,"name":"ExpressionStatement","src":"7047:43:13"}],"id":5686,"name":"Block","src":"7029:76:13"}],"id":5687,"name":"IfStatement","src":"6969:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5285,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5688,"name":"Identifier","src":"7118:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5689,"name":"Identifier","src":"7126:4:13"}],"id":5693,"name":"IndexAccess","src":"7118:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5603,"type":"uint256","value":"version"},"id":5690,"name":"Identifier","src":"7132:7:13"}],"id":5694,"name":"IndexAccess","src":"7118:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5609,"type":"bytes32","value":"nameHash"},"id":5691,"name":"Identifier","src":"7141:8:13"}],"id":5695,"name":"IndexAccess","src":"7118:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5692,"name":"Identifier","src":"7151:8:13"}],"id":5696,"name":"IndexAccess","src":"7118:42:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5615,"type":"bytes memory","value":"rrData"},"id":5697,"name":"Identifier","src":"7163:6:13"}],"id":5698,"name":"Assignment","src":"7118:51:13"}],"id":5699,"name":"ExpressionStatement","src":"7118:51:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5247,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":5700,"name":"Identifier","src":"7188:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"bytes32","value":"node"},"id":5701,"name":"Identifier","src":"7205:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5589,"type":"bytes memory","value":"name"},"id":5702,"name":"Identifier","src":"7211:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5591,"type":"uint16","value":"resource"},"id":5703,"name":"Identifier","src":"7217:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5615,"type":"bytes memory","value":"rrData"},"id":5704,"name":"Identifier","src":"7227:6:13"}],"id":5705,"name":"FunctionCall","src":"7188:46:13"}],"id":5706,"name":"EmitStatement","src":"7183:51:13"}],"id":5707,"name":"Block","src":"6955:290:13"}],"id":5708,"name":"IfStatement","src":"6650:595:13"}],"id":5709,"name":"Block","src":"6494:757:13"}],"id":5710,"name":"FunctionDefinition","src":"6286:965:13"}],"id":5711,"name":"ContractDefinition","src":"81:7172:13"}],"id":5712,"name":"SourceUnit","src":"0:7253:13"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[5898]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5713,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5899,"symbolAliases":[null],"unitAlias":""},"id":5714,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":5151,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":5899,"symbolAliases":[null],"unitAlias":""},"id":5715,"name":"ImportDirective","src":"55:28:14"},{"attributes":{"contractDependencies":[5150,6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5898,5150,6211],"name":"InterfaceResolver","scope":5899},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5716,"name":"UserDefinedTypeName","src":"115:12:14"}],"id":5717,"name":"InheritanceSpecifier","src":"115:12:14"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5150,"type":"contract AddrResolver"},"id":5718,"name":"UserDefinedTypeName","src":"129:12:14"}],"id":5719,"name":"InheritanceSpecifier","src":"129:12:14"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":5898,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5720,"name":"ElementaryTypeName","src":"148:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":5721,"name":"ElementaryTypeNameExpression","src":"197:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":7559,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5722,"name":"Identifier","src":"204:9:14"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":5723,"name":"Literal","src":"214:38:14"}],"id":5724,"name":"FunctionCall","src":"204:49:14"}],"id":5725,"name":"FunctionCall","src":"197:57:14"}],"id":5726,"name":"VariableDeclaration","src":"148:106:14"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5898,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5727,"name":"ElementaryTypeName","src":"260:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5728,"name":"Literal","src":"304:10:14"}],"id":5729,"name":"VariableDeclaration","src":"260:54:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5737,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5730,"name":"ElementaryTypeName","src":"344:7:14"}],"id":5731,"name":"VariableDeclaration","src":"344:20:14"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":5737,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5732,"name":"ElementaryTypeName","src":"366:6:14"}],"id":5733,"name":"VariableDeclaration","src":"366:26:14"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":5737,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5734,"name":"ElementaryTypeName","src":"394:7:14"}],"id":5735,"name":"VariableDeclaration","src":"394:19:14"}],"id":5736,"name":"ParameterList","src":"343:71:14"}],"id":5737,"name":"EventDefinition","src":"321:94:14"},{"attributes":{"constant":false,"name":"interfaces","scope":5898,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5738,"name":"ElementaryTypeName","src":"429:7:14"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5739,"name":"ElementaryTypeName","src":"446:6:14"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5740,"name":"ElementaryTypeName","src":"454:7:14"}],"id":5741,"name":"Mapping","src":"438:24:14"}],"id":5742,"name":"Mapping","src":"421:42:14"}],"id":5743,"name":"VariableDeclaration","src":"421:53:14"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":5898,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5770,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5744,"name":"ElementaryTypeName","src":"880:7:14"}],"id":5745,"name":"VariableDeclaration","src":"880:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":5770,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5746,"name":"ElementaryTypeName","src":"894:6:14"}],"id":5747,"name":"VariableDeclaration","src":"894:18:14"},{"attributes":{"constant":false,"name":"implementer","scope":5770,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5748,"name":"ElementaryTypeName","src":"914:7:14"}],"id":5749,"name":"VariableDeclaration","src":"914:19:14"}],"id":5750,"name":"ParameterList","src":"879:55:14"},{"attributes":{"parameters":[null]},"children":[],"id":5754,"name":"ParameterList","src":"961:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5751,"name":"Identifier","src":"944:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5745,"type":"bytes32","value":"node"},"id":5752,"name":"Identifier","src":"955:4:14"}],"id":5753,"name":"ModifierInvocation","src":"944:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5743,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5755,"name":"Identifier","src":"971:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5745,"type":"bytes32","value":"node"},"id":5756,"name":"Identifier","src":"982:4:14"}],"id":5758,"name":"IndexAccess","src":"971:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5747,"type":"bytes4","value":"interfaceID"},"id":5757,"name":"Identifier","src":"988:11:14"}],"id":5759,"name":"IndexAccess","src":"971:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5749,"type":"address","value":"implementer"},"id":5760,"name":"Identifier","src":"1003:11:14"}],"id":5761,"name":"Assignment","src":"971:43:14"}],"id":5762,"name":"ExpressionStatement","src":"971:43:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":5763,"name":"Identifier","src":"1029:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5745,"type":"bytes32","value":"node"},"id":5764,"name":"Identifier","src":"1046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5747,"type":"bytes4","value":"interfaceID"},"id":5765,"name":"Identifier","src":"1052:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5749,"type":"address","value":"implementer"},"id":5766,"name":"Identifier","src":"1065:11:14"}],"id":5767,"name":"FunctionCall","src":"1029:48:14"}],"id":5768,"name":"EmitStatement","src":"1024:53:14"}],"id":5769,"name":"Block","src":"961:123:14"}],"id":5770,"name":"FunctionDefinition","src":"858:226:14"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":5898,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5880,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5771,"name":"ElementaryTypeName","src":"1751:7:14"}],"id":5772,"name":"VariableDeclaration","src":"1751:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":5880,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5773,"name":"ElementaryTypeName","src":"1765:6:14"}],"id":5774,"name":"VariableDeclaration","src":"1765:18:14"}],"id":5775,"name":"ParameterList","src":"1750:34:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5880,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5776,"name":"ElementaryTypeName","src":"1808:7:14"}],"id":5777,"name":"VariableDeclaration","src":"1808:7:14"}],"id":5778,"name":"ParameterList","src":"1807:9:14"},{"children":[{"attributes":{"assignments":[5780]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":5879,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5779,"name":"ElementaryTypeName","src":"1827:7:14"}],"id":5780,"name":"VariableDeclaration","src":"1827:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5743,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5781,"name":"Identifier","src":"1849:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5772,"type":"bytes32","value":"node"},"id":5782,"name":"Identifier","src":"1860:4:14"}],"id":5783,"name":"IndexAccess","src":"1849:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5774,"type":"bytes4","value":"interfaceID"},"id":5784,"name":"Identifier","src":"1866:11:14"}],"id":5785,"name":"IndexAccess","src":"1849:29:14"}],"id":5786,"name":"VariableDeclarationStatement","src":"1827:51:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5780,"type":"address","value":"implementer"},"id":5787,"name":"Identifier","src":"1891:11:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5788,"name":"ElementaryTypeNameExpression","src":"1906:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5789,"name":"Literal","src":"1914:1:14"}],"id":5790,"name":"FunctionCall","src":"1906:10:14"}],"id":5791,"name":"BinaryOperation","src":"1891:25:14"},{"children":[{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5780,"type":"address","value":"implementer"},"id":5792,"name":"Identifier","src":"1939:11:14"}],"id":5793,"name":"Return","src":"1932:18:14"}],"id":5794,"name":"Block","src":"1918:43:14"}],"id":5795,"name":"IfStatement","src":"1888:73:14"},{"attributes":{"assignments":[5797]},"children":[{"attributes":{"constant":false,"name":"a","scope":5879,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5796,"name":"ElementaryTypeName","src":"1971:7:14"}],"id":5797,"name":"VariableDeclaration","src":"1971:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[5073,5128],"referencedDeclaration":5073,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":5798,"name":"Identifier","src":"1983:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5772,"type":"bytes32","value":"node"},"id":5799,"name":"Identifier","src":"1988:4:14"}],"id":5800,"name":"FunctionCall","src":"1983:10:14"}],"id":5801,"name":"VariableDeclarationStatement","src":"1971:22:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5797,"type":"address","value":"a"},"id":5802,"name":"Identifier","src":"2006:1:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5803,"name":"ElementaryTypeNameExpression","src":"2011:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5804,"name":"Literal","src":"2019:1:14"}],"id":5805,"name":"FunctionCall","src":"2011:10:14"}],"id":5806,"name":"BinaryOperation","src":"2006:15:14"},{"children":[{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5807,"name":"ElementaryTypeNameExpression","src":"2044:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5808,"name":"Literal","src":"2052:1:14"}],"id":5809,"name":"FunctionCall","src":"2044:10:14"}],"id":5810,"name":"Return","src":"2037:17:14"}],"id":5811,"name":"Block","src":"2023:42:14"}],"id":5812,"name":"IfStatement","src":"2003:62:14"},{"attributes":{"assignments":[5814,5816]},"children":[{"attributes":{"constant":false,"name":"success","scope":5879,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5813,"name":"ElementaryTypeName","src":"2076:4:14"}],"id":5814,"name":"VariableDeclaration","src":"2076:12:14"},{"attributes":{"constant":false,"name":"returnData","scope":5879,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5815,"name":"ElementaryTypeName","src":"2090:5:14"}],"id":5816,"name":"VariableDeclaration","src":"2090:23:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5797,"type":"address","value":"a"},"id":5817,"name":"Identifier","src":"2117:1:14"}],"id":5818,"name":"MemberAccess","src":"2117:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":5819,"name":"Identifier","src":"2130:3:14"}],"id":5820,"name":"MemberAccess","src":"2130:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5821,"name":"Literal","src":"2154:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5729,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5822,"name":"Identifier","src":"2183:17:14"}],"id":5823,"name":"FunctionCall","src":"2130:71:14"}],"id":5824,"name":"FunctionCall","src":"2117:85:14"}],"id":5825,"name":"VariableDeclarationStatement","src":"2075:127:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5814,"type":"bool","value":"success"},"id":5826,"name":"Identifier","src":"2216:7:14"}],"id":5827,"name":"UnaryOperation","src":"2215:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5828,"name":"Identifier","src":"2227:10:14"}],"id":5829,"name":"MemberAccess","src":"2227:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5830,"name":"Literal","src":"2247:2:14"}],"id":5831,"name":"BinaryOperation","src":"2227:22:14"}],"id":5832,"name":"BinaryOperation","src":"2215:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5833,"name":"Identifier","src":"2253:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5834,"name":"Literal","src":"2264:2:14"}],"id":5835,"name":"IndexAccess","src":"2253:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5836,"name":"Literal","src":"2271:1:14"}],"id":5837,"name":"BinaryOperation","src":"2253:19:14"}],"id":5838,"name":"BinaryOperation","src":"2215:57:14"},{"children":[{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5839,"name":"ElementaryTypeNameExpression","src":"2342:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5840,"name":"Literal","src":"2350:1:14"}],"id":5841,"name":"FunctionCall","src":"2342:10:14"}],"id":5842,"name":"Return","src":"2335:17:14"}],"id":5843,"name":"Block","src":"2274:89:14"}],"id":5844,"name":"IfStatement","src":"2212:151:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5814,"type":"bool","value":"success"},"id":5845,"name":"Identifier","src":"2374:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5846,"name":"Identifier","src":"2383:10:14"}],"id":5847,"name":"TupleExpression","src":"2373:21:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5797,"type":"address","value":"a"},"id":5848,"name":"Identifier","src":"2397:1:14"}],"id":5849,"name":"MemberAccess","src":"2397:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7552,"type":"abi","value":"abi"},"id":5850,"name":"Identifier","src":"2410:3:14"}],"id":5851,"name":"MemberAccess","src":"2410:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5852,"name":"Literal","src":"2434:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5774,"type":"bytes4","value":"interfaceID"},"id":5853,"name":"Identifier","src":"2463:11:14"}],"id":5854,"name":"FunctionCall","src":"2410:65:14"}],"id":5855,"name":"FunctionCall","src":"2397:79:14"}],"id":5856,"name":"Assignment","src":"2373:103:14"}],"id":5857,"name":"ExpressionStatement","src":"2373:103:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5814,"type":"bool","value":"success"},"id":5858,"name":"Identifier","src":"2490:7:14"}],"id":5859,"name":"UnaryOperation","src":"2489:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5860,"name":"Identifier","src":"2501:10:14"}],"id":5861,"name":"MemberAccess","src":"2501:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5862,"name":"Literal","src":"2521:2:14"}],"id":5863,"name":"BinaryOperation","src":"2501:22:14"}],"id":5864,"name":"BinaryOperation","src":"2489:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5816,"type":"bytes memory","value":"returnData"},"id":5865,"name":"Identifier","src":"2527:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5866,"name":"Literal","src":"2538:2:14"}],"id":5867,"name":"IndexAccess","src":"2527:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5868,"name":"Literal","src":"2545:1:14"}],"id":5869,"name":"BinaryOperation","src":"2527:19:14"}],"id":5870,"name":"BinaryOperation","src":"2489:57:14"},{"children":[{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5871,"name":"ElementaryTypeNameExpression","src":"2628:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5872,"name":"Literal","src":"2636:1:14"}],"id":5873,"name":"FunctionCall","src":"2628:10:14"}],"id":5874,"name":"Return","src":"2621:17:14"}],"id":5875,"name":"Block","src":"2548:101:14"}],"id":5876,"name":"IfStatement","src":"2486:163:14"},{"attributes":{"functionReturnParameters":5778},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5797,"type":"address","value":"a"},"id":5877,"name":"Identifier","src":"2666:1:14"}],"id":5878,"name":"Return","src":"2659:8:14"}],"id":5879,"name":"Block","src":"1817:857:14"}],"id":5880,"name":"FunctionDefinition","src":"1721:953:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5898,"stateMutability":"pure","superFunction":5149,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5897,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5881,"name":"ElementaryTypeName","src":"2707:6:14"}],"id":5882,"name":"VariableDeclaration","src":"2707:18:14"}],"id":5883,"name":"ParameterList","src":"2706:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5897,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5884,"name":"ElementaryTypeName","src":"2747:4:14"}],"id":5885,"name":"VariableDeclaration","src":"2747:4:14"}],"id":5886,"name":"ParameterList","src":"2746:6:14"},{"children":[{"attributes":{"functionReturnParameters":5886},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5882,"type":"bytes4","value":"interfaceID"},"id":5887,"name":"Identifier","src":"2770:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5726,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":5888,"name":"Identifier","src":"2785:22:14"}],"id":5889,"name":"BinaryOperation","src":"2770:37:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5149,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7612,"type":"contract super InterfaceResolver","value":"super"},"id":5890,"name":"Identifier","src":"2811:5:14"}],"id":5891,"name":"MemberAccess","src":"2811:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5882,"type":"bytes4","value":"interfaceID"},"id":5892,"name":"Identifier","src":"2835:11:14"}],"id":5893,"name":"FunctionCall","src":"2811:36:14"}],"id":5894,"name":"BinaryOperation","src":"2770:77:14"}],"id":5895,"name":"Return","src":"2763:84:14"}],"id":5896,"name":"Block","src":"2753:101:14"}],"id":5897,"name":"FunctionDefinition","src":"2680:174:14"}],"id":5898,"name":"ContractDefinition","src":"85:2771:14"}],"id":5899,"name":"SourceUnit","src":"0:2857:14"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[5968]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5900,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5969,"symbolAliases":[null],"unitAlias":""},"id":5901,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5968,6211],"name":"NameResolver","scope":5969},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5902,"name":"UserDefinedTypeName","src":"81:12:15"}],"id":5903,"name":"InheritanceSpecifier","src":"81:12:15"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":5968,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5904,"name":"ElementaryTypeName","src":"100:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":5905,"name":"Literal","src":"144:10:15"}],"id":5906,"name":"VariableDeclaration","src":"100:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5912,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5907,"name":"ElementaryTypeName","src":"179:7:15"}],"id":5908,"name":"VariableDeclaration","src":"179:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5912,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5909,"name":"ElementaryTypeName","src":"201:6:15"}],"id":5910,"name":"VariableDeclaration","src":"201:11:15"}],"id":5911,"name":"ParameterList","src":"178:35:15"}],"id":5912,"name":"EventDefinition","src":"161:53:15"},{"attributes":{"constant":false,"name":"names","scope":5968,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5913,"name":"ElementaryTypeName","src":"228:7:15"},{"attributes":{"name":"string","type":"string"},"id":5914,"name":"ElementaryTypeName","src":"237:6:15"}],"id":5915,"name":"Mapping","src":"220:24:15"}],"id":5916,"name":"VariableDeclaration","src":"220:30:15"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":5968,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5938,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5917,"name":"ElementaryTypeName","src":"509:7:15"}],"id":5918,"name":"VariableDeclaration","src":"509:12:15"},{"attributes":{"constant":false,"name":"name","scope":5938,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5919,"name":"ElementaryTypeName","src":"523:6:15"}],"id":5920,"name":"VariableDeclaration","src":"523:20:15"}],"id":5921,"name":"ParameterList","src":"508:36:15"},{"attributes":{"parameters":[null]},"children":[],"id":5925,"name":"ParameterList","src":"571:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":5922,"name":"Identifier","src":"554:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"bytes32","value":"node"},"id":5923,"name":"Identifier","src":"565:4:15"}],"id":5924,"name":"ModifierInvocation","src":"554:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5916,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5926,"name":"Identifier","src":"581:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"bytes32","value":"node"},"id":5927,"name":"Identifier","src":"587:4:15"}],"id":5928,"name":"IndexAccess","src":"581:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5920,"type":"string calldata","value":"name"},"id":5929,"name":"Identifier","src":"595:4:15"}],"id":5930,"name":"Assignment","src":"581:18:15"}],"id":5931,"name":"ExpressionStatement","src":"581:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5912,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":5932,"name":"Identifier","src":"614:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"bytes32","value":"node"},"id":5933,"name":"Identifier","src":"626:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5920,"type":"string calldata","value":"name"},"id":5934,"name":"Identifier","src":"632:4:15"}],"id":5935,"name":"FunctionCall","src":"614:23:15"}],"id":5936,"name":"EmitStatement","src":"609:28:15"}],"id":5937,"name":"Block","src":"571:73:15"}],"id":5938,"name":"FunctionDefinition","src":"492:152:15"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":5968,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5950,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5939,"name":"ElementaryTypeName","src":"858:7:15"}],"id":5940,"name":"VariableDeclaration","src":"858:12:15"}],"id":5941,"name":"ParameterList","src":"857:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5950,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5942,"name":"ElementaryTypeName","src":"895:6:15"}],"id":5943,"name":"VariableDeclaration","src":"895:13:15"}],"id":5944,"name":"ParameterList","src":"894:15:15"},{"children":[{"attributes":{"functionReturnParameters":5944},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5916,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5945,"name":"Identifier","src":"927:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5940,"type":"bytes32","value":"node"},"id":5946,"name":"Identifier","src":"933:4:15"}],"id":5947,"name":"IndexAccess","src":"927:11:15"}],"id":5948,"name":"Return","src":"920:18:15"}],"id":5949,"name":"Block","src":"910:35:15"}],"id":5950,"name":"FunctionDefinition","src":"844:101:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5968,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5967,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5951,"name":"ElementaryTypeName","src":"978:6:15"}],"id":5952,"name":"VariableDeclaration","src":"978:18:15"}],"id":5953,"name":"ParameterList","src":"977:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5967,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5954,"name":"ElementaryTypeName","src":"1018:4:15"}],"id":5955,"name":"VariableDeclaration","src":"1018:4:15"}],"id":5956,"name":"ParameterList","src":"1017:6:15"},{"children":[{"attributes":{"functionReturnParameters":5956},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5952,"type":"bytes4","value":"interfaceID"},"id":5957,"name":"Identifier","src":"1041:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":5958,"name":"Identifier","src":"1056:17:15"}],"id":5959,"name":"BinaryOperation","src":"1041:32:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7614,"type":"contract super NameResolver","value":"super"},"id":5960,"name":"Identifier","src":"1077:5:15"}],"id":5961,"name":"MemberAccess","src":"1077:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5952,"type":"bytes4","value":"interfaceID"},"id":5962,"name":"Identifier","src":"1101:11:15"}],"id":5963,"name":"FunctionCall","src":"1077:36:15"}],"id":5964,"name":"BinaryOperation","src":"1041:72:15"}],"id":5965,"name":"Return","src":"1034:79:15"}],"id":5966,"name":"Block","src":"1024:96:15"}],"id":5967,"name":"FunctionDefinition","src":"951:169:15"}],"id":5968,"name":"ContractDefinition","src":"56:1066:15"}],"id":5969,"name":"SourceUnit","src":"0:1123:15"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[6059]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5970,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6060,"symbolAliases":[null],"unitAlias":""},"id":5971,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6059,6211],"name":"PubkeyResolver","scope":6060},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":5972,"name":"UserDefinedTypeName","src":"83:12:16"}],"id":5973,"name":"InheritanceSpecifier","src":"83:12:16"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":6059,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5974,"name":"ElementaryTypeName","src":"102:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":5975,"name":"Literal","src":"148:10:16"}],"id":5976,"name":"VariableDeclaration","src":"102:56:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5984,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5977,"name":"ElementaryTypeName","src":"185:7:16"}],"id":5978,"name":"VariableDeclaration","src":"185:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":5984,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5979,"name":"ElementaryTypeName","src":"207:7:16"}],"id":5980,"name":"VariableDeclaration","src":"207:9:16"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":5984,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5981,"name":"ElementaryTypeName","src":"218:7:16"}],"id":5982,"name":"VariableDeclaration","src":"218:9:16"}],"id":5983,"name":"ParameterList","src":"184:44:16"}],"id":5984,"name":"EventDefinition","src":"165:64:16"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":6059,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":5989,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5985,"name":"ElementaryTypeName","src":"262:7:16"}],"id":5986,"name":"VariableDeclaration","src":"262:9:16"},{"attributes":{"constant":false,"name":"y","scope":5989,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5987,"name":"ElementaryTypeName","src":"281:7:16"}],"id":5988,"name":"VariableDeclaration","src":"281:9:16"}],"id":5989,"name":"StructDefinition","src":"235:62:16"},{"attributes":{"constant":false,"name":"pubkeys","scope":6059,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5990,"name":"ElementaryTypeName","src":"311:7:16"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":5989,"type":"struct PubkeyResolver.PublicKey"},"id":5991,"name":"UserDefinedTypeName","src":"320:9:16"}],"id":5992,"name":"Mapping","src":"303:27:16"}],"id":5993,"name":"VariableDeclaration","src":"303:35:16"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":6059,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6021,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5994,"name":"ElementaryTypeName","src":"631:7:16"}],"id":5995,"name":"VariableDeclaration","src":"631:12:16"},{"attributes":{"constant":false,"name":"x","scope":6021,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5996,"name":"ElementaryTypeName","src":"645:7:16"}],"id":5997,"name":"VariableDeclaration","src":"645:9:16"},{"attributes":{"constant":false,"name":"y","scope":6021,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5998,"name":"ElementaryTypeName","src":"656:7:16"}],"id":5999,"name":"VariableDeclaration","src":"656:9:16"}],"id":6000,"name":"ParameterList","src":"630:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":6004,"name":"ParameterList","src":"693:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":6001,"name":"Identifier","src":"676:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5995,"type":"bytes32","value":"node"},"id":6002,"name":"Identifier","src":"687:4:16"}],"id":6003,"name":"ModifierInvocation","src":"676:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5993,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6005,"name":"Identifier","src":"703:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5995,"type":"bytes32","value":"node"},"id":6006,"name":"Identifier","src":"711:4:16"}],"id":6007,"name":"IndexAccess","src":"703:13:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5989,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":6008,"name":"Identifier","src":"719:9:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5997,"type":"bytes32","value":"x"},"id":6009,"name":"Identifier","src":"729:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5999,"type":"bytes32","value":"y"},"id":6010,"name":"Identifier","src":"732:1:16"}],"id":6011,"name":"FunctionCall","src":"719:15:16"}],"id":6012,"name":"Assignment","src":"703:31:16"}],"id":6013,"name":"ExpressionStatement","src":"703:31:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5984,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":6014,"name":"Identifier","src":"749:13:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5995,"type":"bytes32","value":"node"},"id":6015,"name":"Identifier","src":"763:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5997,"type":"bytes32","value":"x"},"id":6016,"name":"Identifier","src":"769:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5999,"type":"bytes32","value":"y"},"id":6017,"name":"Identifier","src":"772:1:16"}],"id":6018,"name":"FunctionCall","src":"749:25:16"}],"id":6019,"name":"EmitStatement","src":"744:30:16"}],"id":6020,"name":"Block","src":"693:88:16"}],"id":6021,"name":"FunctionDefinition","src":"612:169:16"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":6059,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6041,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6022,"name":"ElementaryTypeName","src":"1039:7:16"}],"id":6023,"name":"VariableDeclaration","src":"1039:12:16"}],"id":6024,"name":"ParameterList","src":"1038:14:16"},{"children":[{"attributes":{"constant":false,"name":"x","scope":6041,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6025,"name":"ElementaryTypeName","src":"1076:7:16"}],"id":6026,"name":"VariableDeclaration","src":"1076:9:16"},{"attributes":{"constant":false,"name":"y","scope":6041,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6027,"name":"ElementaryTypeName","src":"1087:7:16"}],"id":6028,"name":"VariableDeclaration","src":"1087:9:16"}],"id":6029,"name":"ParameterList","src":"1075:22:16"},{"children":[{"attributes":{"functionReturnParameters":6029},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":5986,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5993,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6030,"name":"Identifier","src":"1116:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6023,"type":"bytes32","value":"node"},"id":6031,"name":"Identifier","src":"1124:4:16"}],"id":6032,"name":"IndexAccess","src":"1116:13:16"}],"id":6033,"name":"MemberAccess","src":"1116:15:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":5988,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5993,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6034,"name":"Identifier","src":"1133:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6023,"type":"bytes32","value":"node"},"id":6035,"name":"Identifier","src":"1141:4:16"}],"id":6036,"name":"IndexAccess","src":"1133:13:16"}],"id":6037,"name":"MemberAccess","src":"1133:15:16"}],"id":6038,"name":"TupleExpression","src":"1115:34:16"}],"id":6039,"name":"Return","src":"1108:41:16"}],"id":6040,"name":"Block","src":"1098:58:16"}],"id":6041,"name":"FunctionDefinition","src":"1023:133:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6059,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6058,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6042,"name":"ElementaryTypeName","src":"1189:6:16"}],"id":6043,"name":"VariableDeclaration","src":"1189:18:16"}],"id":6044,"name":"ParameterList","src":"1188:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6058,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6045,"name":"ElementaryTypeName","src":"1229:4:16"}],"id":6046,"name":"VariableDeclaration","src":"1229:4:16"}],"id":6047,"name":"ParameterList","src":"1228:6:16"},{"children":[{"attributes":{"functionReturnParameters":6047},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6043,"type":"bytes4","value":"interfaceID"},"id":6048,"name":"Identifier","src":"1252:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5976,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":6049,"name":"Identifier","src":"1267:19:16"}],"id":6050,"name":"BinaryOperation","src":"1252:34:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7616,"type":"contract super PubkeyResolver","value":"super"},"id":6051,"name":"Identifier","src":"1290:5:16"}],"id":6052,"name":"MemberAccess","src":"1290:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6043,"type":"bytes4","value":"interfaceID"},"id":6053,"name":"Identifier","src":"1314:11:16"}],"id":6054,"name":"FunctionCall","src":"1290:36:16"}],"id":6055,"name":"BinaryOperation","src":"1252:74:16"}],"id":6056,"name":"Return","src":"1245:81:16"}],"id":6057,"name":"Block","src":"1235:98:16"}],"id":6058,"name":"FunctionDefinition","src":"1162:171:16"}],"id":6059,"name":"ContractDefinition","src":"56:1279:16"}],"id":6060,"name":"SourceUnit","src":"0:1336:16"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[6142]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6061,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":6212,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6143,"symbolAliases":[null],"unitAlias":""},"id":6062,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[6211],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6142,6211],"name":"TextResolver","scope":6143},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":6211,"type":"contract ResolverBase"},"id":6063,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":6064,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":6142,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6065,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":6066,"name":"Literal","src":"144:10:17"}],"id":6067,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6075,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6068,"name":"ElementaryTypeName","src":"179:7:17"}],"id":6069,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":6075,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6070,"name":"ElementaryTypeName","src":"201:6:17"}],"id":6071,"name":"VariableDeclaration","src":"201:25:17"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":6075,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6072,"name":"ElementaryTypeName","src":"228:6:17"}],"id":6073,"name":"VariableDeclaration","src":"228:10:17"}],"id":6074,"name":"ParameterList","src":"178:61:17"}],"id":6075,"name":"EventDefinition","src":"161:79:17"},{"attributes":{"constant":false,"name":"texts","scope":6142,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6076,"name":"ElementaryTypeName","src":"254:7:17"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6077,"name":"ElementaryTypeName","src":"271:6:17"},{"attributes":{"name":"string","type":"string"},"id":6078,"name":"ElementaryTypeName","src":"279:6:17"}],"id":6079,"name":"Mapping","src":"263:23:17"}],"id":6080,"name":"Mapping","src":"246:41:17"}],"id":6081,"name":"VariableDeclaration","src":"246:47:17"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":6142,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6108,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6082,"name":"ElementaryTypeName","src":"590:7:17"}],"id":6083,"name":"VariableDeclaration","src":"590:12:17"},{"attributes":{"constant":false,"name":"key","scope":6108,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6084,"name":"ElementaryTypeName","src":"604:6:17"}],"id":6085,"name":"VariableDeclaration","src":"604:19:17"},{"attributes":{"constant":false,"name":"value","scope":6108,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6086,"name":"ElementaryTypeName","src":"625:6:17"}],"id":6087,"name":"VariableDeclaration","src":"625:21:17"}],"id":6088,"name":"ParameterList","src":"589:58:17"},{"attributes":{"parameters":[null]},"children":[],"id":6092,"name":"ParameterList","src":"674:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6178,"type":"modifier (bytes32)","value":"authorised"},"id":6089,"name":"Identifier","src":"657:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes32","value":"node"},"id":6090,"name":"Identifier","src":"668:4:17"}],"id":6091,"name":"ModifierInvocation","src":"657:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6081,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6093,"name":"Identifier","src":"684:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes32","value":"node"},"id":6094,"name":"Identifier","src":"690:4:17"}],"id":6096,"name":"IndexAccess","src":"684:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6085,"type":"string calldata","value":"key"},"id":6095,"name":"Identifier","src":"696:3:17"}],"id":6097,"name":"IndexAccess","src":"684:16:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6087,"type":"string calldata","value":"value"},"id":6098,"name":"Identifier","src":"703:5:17"}],"id":6099,"name":"Assignment","src":"684:24:17"}],"id":6100,"name":"ExpressionStatement","src":"684:24:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":6101,"name":"Identifier","src":"723:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes32","value":"node"},"id":6102,"name":"Identifier","src":"735:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6085,"type":"string calldata","value":"key"},"id":6103,"name":"Identifier","src":"741:3:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6085,"type":"string calldata","value":"key"},"id":6104,"name":"Identifier","src":"746:3:17"}],"id":6105,"name":"FunctionCall","src":"723:27:17"}],"id":6106,"name":"EmitStatement","src":"718:32:17"}],"id":6107,"name":"Block","src":"674:83:17"}],"id":6108,"name":"FunctionDefinition","src":"573:184:17"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":6142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6124,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6109,"name":"ElementaryTypeName","src":"988:7:17"}],"id":6110,"name":"VariableDeclaration","src":"988:12:17"},{"attributes":{"constant":false,"name":"key","scope":6124,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6111,"name":"ElementaryTypeName","src":"1002:6:17"}],"id":6112,"name":"VariableDeclaration","src":"1002:19:17"}],"id":6113,"name":"ParameterList","src":"987:35:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6124,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6114,"name":"ElementaryTypeName","src":"1046:6:17"}],"id":6115,"name":"VariableDeclaration","src":"1046:13:17"}],"id":6116,"name":"ParameterList","src":"1045:15:17"},{"children":[{"attributes":{"functionReturnParameters":6116},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6081,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6117,"name":"Identifier","src":"1078:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6110,"type":"bytes32","value":"node"},"id":6118,"name":"Identifier","src":"1084:4:17"}],"id":6119,"name":"IndexAccess","src":"1078:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6112,"type":"string calldata","value":"key"},"id":6120,"name":"Identifier","src":"1090:3:17"}],"id":6121,"name":"IndexAccess","src":"1078:16:17"}],"id":6122,"name":"Return","src":"1071:23:17"}],"id":6123,"name":"Block","src":"1061:40:17"}],"id":6124,"name":"FunctionDefinition","src":"974:127:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6142,"stateMutability":"pure","superFunction":6159,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6141,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6125,"name":"ElementaryTypeName","src":"1134:6:17"}],"id":6126,"name":"VariableDeclaration","src":"1134:18:17"}],"id":6127,"name":"ParameterList","src":"1133:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6141,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6128,"name":"ElementaryTypeName","src":"1174:4:17"}],"id":6129,"name":"VariableDeclaration","src":"1174:4:17"}],"id":6130,"name":"ParameterList","src":"1173:6:17"},{"children":[{"attributes":{"functionReturnParameters":6130},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6126,"type":"bytes4","value":"interfaceID"},"id":6131,"name":"Identifier","src":"1197:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6067,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":6132,"name":"Identifier","src":"1212:17:17"}],"id":6133,"name":"BinaryOperation","src":"1197:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6159,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7618,"type":"contract super TextResolver","value":"super"},"id":6134,"name":"Identifier","src":"1233:5:17"}],"id":6135,"name":"MemberAccess","src":"1233:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6126,"type":"bytes4","value":"interfaceID"},"id":6136,"name":"Identifier","src":"1257:11:17"}],"id":6137,"name":"FunctionCall","src":"1233:36:17"}],"id":6138,"name":"BinaryOperation","src":"1197:72:17"}],"id":6139,"name":"Return","src":"1190:79:17"}],"id":6140,"name":"Block","src":"1180:96:17"}],"id":6141,"name":"FunctionDefinition","src":"1107:169:17"}],"id":6142,"name":"ContractDefinition","src":"56:1222:17"}],"id":6143,"name":"SourceUnit","src":"0:1278:17"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[4725]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3021,"name":"PragmaDirective","src":"2574:23:18"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[4725],"name":"strings","scope":4726},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":4725,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":3026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3022,"name":"ElementaryTypeName","src":"2644:4:18"}],"id":3023,"name":"VariableDeclaration","src":"2644:9:18"},{"attributes":{"constant":false,"name":"_ptr","scope":3026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3024,"name":"ElementaryTypeName","src":"2663:4:18"}],"id":3025,"name":"VariableDeclaration","src":"2663:9:18"}],"id":3026,"name":"StructDefinition","src":"2621:58:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":3066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3027,"name":"ElementaryTypeName","src":"2701:4:18"}],"id":3028,"name":"VariableDeclaration","src":"2701:9:18"},{"attributes":{"constant":false,"name":"src","scope":3066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3029,"name":"ElementaryTypeName","src":"2712:4:18"}],"id":3030,"name":"VariableDeclaration","src":"2712:8:18"},{"attributes":{"constant":false,"name":"len","scope":3066,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3031,"name":"ElementaryTypeName","src":"2722:4:18"}],"id":3032,"name":"VariableDeclaration","src":"2722:8:18"}],"id":3033,"name":"ParameterList","src":"2700:31:18"},{"attributes":{"parameters":[null]},"children":[],"id":3034,"name":"ParameterList","src":"2745:0:18"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"uint256","value":"len"},"id":3035,"name":"Identifier","src":"2811:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3036,"name":"Literal","src":"2818:2:18"}],"id":3037,"name":"BinaryOperation","src":"2811:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"uint256","value":"len"},"id":3038,"name":"Identifier","src":"2822:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3039,"name":"Literal","src":"2829:2:18"}],"id":3040,"name":"Assignment","src":"2822:9:18"}],"id":3041,"name":"ExpressionStatement","src":"2822:9:18"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":3030,"isOffset":false,"isSlot":false,"src":"2893:3:18","valueSize":1}},{"dest":{"declaration":3028,"isOffset":false,"isSlot":false,"src":"2881:4:18","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":3042,"name":"InlineAssembly","src":"2847:65:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3028,"type":"uint256","value":"dest"},"id":3043,"name":"Identifier","src":"2925:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3044,"name":"Literal","src":"2933:2:18"}],"id":3045,"name":"Assignment","src":"2925:10:18"}],"id":3046,"name":"ExpressionStatement","src":"2925:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3030,"type":"uint256","value":"src"},"id":3047,"name":"Identifier","src":"2949:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3048,"name":"Literal","src":"2956:2:18"}],"id":3049,"name":"Assignment","src":"2949:9:18"}],"id":3050,"name":"ExpressionStatement","src":"2949:9:18"}],"id":3051,"name":"Block","src":"2833:136:18"}],"id":3052,"name":"ForStatement","src":"2805:164:18"},{"attributes":{"assignments":[3054]},"children":[{"attributes":{"constant":false,"name":"mask","scope":3065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3053,"name":"ElementaryTypeName","src":"3011:4:18"}],"id":3054,"name":"VariableDeclaration","src":"3011:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":3055,"name":"Literal","src":"3023:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3056,"name":"Literal","src":"3031:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"uint256","value":"len"},"id":3057,"name":"Identifier","src":"3036:3:18"}],"id":3058,"name":"BinaryOperation","src":"3031:8:18"}],"id":3059,"name":"TupleExpression","src":"3030:10:18"}],"id":3060,"name":"BinaryOperation","src":"3023:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3061,"name":"Literal","src":"3043:1:18"}],"id":3062,"name":"BinaryOperation","src":"3023:21:18"}],"id":3063,"name":"VariableDeclarationStatement","src":"3011:33:18"},{"attributes":{"externalReferences":[{"src":{"declaration":3030,"isOffset":false,"isSlot":false,"src":"3102:3:18","valueSize":1}},{"mask":{"declaration":3054,"isOffset":false,"isSlot":false,"src":"3112:4:18","valueSize":1}},{"dest":{"declaration":3028,"isOffset":false,"isSlot":false,"src":"3189:4:18","valueSize":1}},{"dest":{"declaration":3028,"isOffset":false,"isSlot":false,"src":"3157:4:18","valueSize":1}},{"mask":{"declaration":3054,"isOffset":false,"isSlot":false,"src":"3164:4:18","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":3064,"name":"InlineAssembly","src":"3054:173:18"}],"id":3065,"name":"Block","src":"2745:488:18"}],"id":3066,"name":"FunctionDefinition","src":"2685:548:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3086,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3067,"name":"ElementaryTypeName","src":"3450:6:18"}],"id":3068,"name":"VariableDeclaration","src":"3450:18:18"}],"id":3069,"name":"ParameterList","src":"3449:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3086,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3070,"name":"UserDefinedTypeName","src":"3493:5:18"}],"id":3071,"name":"VariableDeclaration","src":"3493:12:18"}],"id":3072,"name":"ParameterList","src":"3492:14:18"},{"children":[{"attributes":{"assignments":[3074],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":3085,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3073,"name":"ElementaryTypeName","src":"3517:4:18"}],"id":3074,"name":"VariableDeclaration","src":"3517:8:18"}],"id":3075,"name":"VariableDeclarationStatement","src":"3517:8:18"},{"attributes":{"externalReferences":[{"ptr":{"declaration":3074,"isOffset":false,"isSlot":false,"src":"3558:3:18","valueSize":1}},{"self":{"declaration":3068,"isOffset":false,"isSlot":false,"src":"3569:4:18","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":3076,"name":"InlineAssembly","src":"3535:55:18"},{"attributes":{"functionReturnParameters":3072},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3026,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":3077,"name":"Identifier","src":"3606:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":3078,"name":"ElementaryTypeNameExpression","src":"3612:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3068,"type":"string memory","value":"self"},"id":3079,"name":"Identifier","src":"3618:4:18"}],"id":3080,"name":"FunctionCall","src":"3612:11:18"}],"id":3081,"name":"MemberAccess","src":"3612:18:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3074,"type":"uint256","value":"ptr"},"id":3082,"name":"Identifier","src":"3632:3:18"}],"id":3083,"name":"FunctionCall","src":"3606:30:18"}],"id":3084,"name":"Return","src":"3599:37:18"}],"id":3085,"name":"Block","src":"3507:136:18"}],"id":3086,"name":"FunctionDefinition","src":"3433:210:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3212,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3087,"name":"ElementaryTypeName","src":"3852:7:18"}],"id":3088,"name":"VariableDeclaration","src":"3852:12:18"}],"id":3089,"name":"ParameterList","src":"3851:14:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3212,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3090,"name":"ElementaryTypeName","src":"3889:4:18"}],"id":3091,"name":"VariableDeclaration","src":"3889:4:18"}],"id":3092,"name":"ParameterList","src":"3888:6:18"},{"children":[{"attributes":{"assignments":[3094],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":3211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3093,"name":"ElementaryTypeName","src":"3905:4:18"}],"id":3094,"name":"VariableDeclaration","src":"3905:8:18"}],"id":3095,"name":"VariableDeclarationStatement","src":"3905:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3096,"name":"Identifier","src":"3927:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3097,"name":"Literal","src":"3935:1:18"}],"id":3098,"name":"BinaryOperation","src":"3927:9:18"},{"attributes":{"functionReturnParameters":3092},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3099,"name":"Literal","src":"3957:1:18"}],"id":3100,"name":"Return","src":"3950:8:18"}],"id":3101,"name":"IfStatement","src":"3923:35:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3102,"name":"ElementaryTypeNameExpression","src":"3972:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3103,"name":"Identifier","src":"3977:4:18"}],"id":3104,"name":"FunctionCall","src":"3972:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":3105,"name":"Literal","src":"3985:34:18"}],"id":3106,"name":"BinaryOperation","src":"3972:47:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3107,"name":"Literal","src":"4023:1:18"}],"id":3108,"name":"BinaryOperation","src":"3972:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3109,"name":"Identifier","src":"4040:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":3110,"name":"Literal","src":"4047:2:18"}],"id":3111,"name":"Assignment","src":"4040:9:18"}],"id":3112,"name":"ExpressionStatement","src":"4040:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3113,"name":"Identifier","src":"4063:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3114,"name":"ElementaryTypeNameExpression","src":"4070:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3115,"name":"ElementaryTypeNameExpression","src":"4078:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3116,"name":"Identifier","src":"4083:4:18"}],"id":3117,"name":"FunctionCall","src":"4078:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":3118,"name":"Literal","src":"4091:35:18"}],"id":3119,"name":"BinaryOperation","src":"4078:48:18"}],"id":3120,"name":"FunctionCall","src":"4070:57:18"}],"id":3121,"name":"Assignment","src":"4063:64:18"}],"id":3122,"name":"ExpressionStatement","src":"4063:64:18"}],"id":3123,"name":"Block","src":"4026:112:18"}],"id":3124,"name":"IfStatement","src":"3968:170:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3125,"name":"ElementaryTypeNameExpression","src":"4151:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3126,"name":"Identifier","src":"4156:4:18"}],"id":3127,"name":"FunctionCall","src":"4151:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":3128,"name":"Literal","src":"4164:18:18"}],"id":3129,"name":"BinaryOperation","src":"4151:31:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3130,"name":"Literal","src":"4186:1:18"}],"id":3131,"name":"BinaryOperation","src":"4151:36:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3132,"name":"Identifier","src":"4203:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3133,"name":"Literal","src":"4210:1:18"}],"id":3134,"name":"Assignment","src":"4203:8:18"}],"id":3135,"name":"ExpressionStatement","src":"4203:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3136,"name":"Identifier","src":"4225:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3137,"name":"ElementaryTypeNameExpression","src":"4232:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3138,"name":"ElementaryTypeNameExpression","src":"4240:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3139,"name":"Identifier","src":"4245:4:18"}],"id":3140,"name":"FunctionCall","src":"4240:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":3141,"name":"Literal","src":"4253:19:18"}],"id":3142,"name":"BinaryOperation","src":"4240:32:18"}],"id":3143,"name":"FunctionCall","src":"4232:41:18"}],"id":3144,"name":"Assignment","src":"4225:48:18"}],"id":3145,"name":"ExpressionStatement","src":"4225:48:18"}],"id":3146,"name":"Block","src":"4189:95:18"}],"id":3147,"name":"IfStatement","src":"4147:137:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3148,"name":"ElementaryTypeNameExpression","src":"4297:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3149,"name":"Identifier","src":"4302:4:18"}],"id":3150,"name":"FunctionCall","src":"4297:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":3151,"name":"Literal","src":"4310:10:18"}],"id":3152,"name":"BinaryOperation","src":"4297:23:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3153,"name":"Literal","src":"4324:1:18"}],"id":3154,"name":"BinaryOperation","src":"4297:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3155,"name":"Identifier","src":"4341:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3156,"name":"Literal","src":"4348:1:18"}],"id":3157,"name":"Assignment","src":"4341:8:18"}],"id":3158,"name":"ExpressionStatement","src":"4341:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3159,"name":"Identifier","src":"4363:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3160,"name":"ElementaryTypeNameExpression","src":"4370:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3161,"name":"ElementaryTypeNameExpression","src":"4378:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3162,"name":"Identifier","src":"4383:4:18"}],"id":3163,"name":"FunctionCall","src":"4378:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":3164,"name":"Literal","src":"4391:11:18"}],"id":3165,"name":"BinaryOperation","src":"4378:24:18"}],"id":3166,"name":"FunctionCall","src":"4370:33:18"}],"id":3167,"name":"Assignment","src":"4363:40:18"}],"id":3168,"name":"ExpressionStatement","src":"4363:40:18"}],"id":3169,"name":"Block","src":"4327:87:18"}],"id":3170,"name":"IfStatement","src":"4293:121:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3171,"name":"ElementaryTypeNameExpression","src":"4427:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3172,"name":"Identifier","src":"4432:4:18"}],"id":3173,"name":"FunctionCall","src":"4427:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":3174,"name":"Literal","src":"4440:6:18"}],"id":3175,"name":"BinaryOperation","src":"4427:19:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3176,"name":"Literal","src":"4450:1:18"}],"id":3177,"name":"BinaryOperation","src":"4427:24:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3178,"name":"Identifier","src":"4467:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3179,"name":"Literal","src":"4474:1:18"}],"id":3180,"name":"Assignment","src":"4467:8:18"}],"id":3181,"name":"ExpressionStatement","src":"4467:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3182,"name":"Identifier","src":"4489:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3183,"name":"ElementaryTypeNameExpression","src":"4496:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3184,"name":"ElementaryTypeNameExpression","src":"4504:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3185,"name":"Identifier","src":"4509:4:18"}],"id":3186,"name":"FunctionCall","src":"4504:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":3187,"name":"Literal","src":"4517:7:18"}],"id":3188,"name":"BinaryOperation","src":"4504:20:18"}],"id":3189,"name":"FunctionCall","src":"4496:29:18"}],"id":3190,"name":"Assignment","src":"4489:36:18"}],"id":3191,"name":"ExpressionStatement","src":"4489:36:18"}],"id":3192,"name":"Block","src":"4453:83:18"}],"id":3193,"name":"IfStatement","src":"4423:113:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3194,"name":"ElementaryTypeNameExpression","src":"4549:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3088,"type":"bytes32","value":"self"},"id":3195,"name":"Identifier","src":"4554:4:18"}],"id":3196,"name":"FunctionCall","src":"4549:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":3197,"name":"Literal","src":"4562:4:18"}],"id":3198,"name":"BinaryOperation","src":"4549:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3199,"name":"Literal","src":"4570:1:18"}],"id":3200,"name":"BinaryOperation","src":"4549:22:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3201,"name":"Identifier","src":"4587:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3202,"name":"Literal","src":"4594:1:18"}],"id":3203,"name":"Assignment","src":"4587:8:18"}],"id":3204,"name":"ExpressionStatement","src":"4587:8:18"}],"id":3205,"name":"Block","src":"4573:33:18"}],"id":3206,"name":"IfStatement","src":"4545:61:18"},{"attributes":{"functionReturnParameters":3092},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3207,"name":"Literal","src":"4622:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"ret"},"id":3208,"name":"Identifier","src":"4627:3:18"}],"id":3209,"name":"BinaryOperation","src":"4622:8:18"}],"id":3210,"name":"Return","src":"4615:15:18"}],"id":3211,"name":"Block","src":"3895:742:18"}],"id":3212,"name":"FunctionDefinition","src":"3839:798:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3229,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3213,"name":"ElementaryTypeName","src":"4963:7:18"}],"id":3214,"name":"VariableDeclaration","src":"4963:12:18"}],"id":3215,"name":"ParameterList","src":"4962:14:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3216,"name":"UserDefinedTypeName","src":"5000:5:18"}],"id":3217,"name":"VariableDeclaration","src":"5000:16:18"}],"id":3218,"name":"ParameterList","src":"4999:18:18"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":3214,"isOffset":false,"isSlot":false,"src":"5222:4:18","valueSize":1}},{"ret":{"declaration":3217,"isOffset":false,"isSlot":false,"src":"5251:3:18","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":3219,"name":"InlineAssembly","src":"5111:166:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3217,"type":"struct strings.slice memory","value":"ret"},"id":3220,"name":"Identifier","src":"5286:3:18"}],"id":3222,"name":"MemberAccess","src":"5286:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[3212,3362],"referencedDeclaration":3212,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":3223,"name":"Identifier","src":"5297:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3214,"type":"bytes32","value":"self"},"id":3224,"name":"Identifier","src":"5301:4:18"}],"id":3225,"name":"FunctionCall","src":"5297:9:18"}],"id":3226,"name":"Assignment","src":"5286:20:18"}],"id":3227,"name":"ExpressionStatement","src":"5286:20:18"}],"id":3228,"name":"Block","src":"5018:295:18"}],"id":3229,"name":"FunctionDefinition","src":"4943:370:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3244,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3230,"name":"UserDefinedTypeName","src":"5528:5:18"}],"id":3231,"name":"VariableDeclaration","src":"5528:17:18"}],"id":3232,"name":"ParameterList","src":"5527:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3244,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3233,"name":"UserDefinedTypeName","src":"5570:5:18"}],"id":3234,"name":"VariableDeclaration","src":"5570:12:18"}],"id":3235,"name":"ParameterList","src":"5569:14:18"},{"children":[{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3026,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":3236,"name":"Identifier","src":"5601:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3231,"type":"struct strings.slice memory","value":"self"},"id":3237,"name":"Identifier","src":"5607:4:18"}],"id":3238,"name":"MemberAccess","src":"5607:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3231,"type":"struct strings.slice memory","value":"self"},"id":3239,"name":"Identifier","src":"5618:4:18"}],"id":3240,"name":"MemberAccess","src":"5618:9:18"}],"id":3241,"name":"FunctionCall","src":"5601:27:18"}],"id":3242,"name":"Return","src":"5594:34:18"}],"id":3243,"name":"Block","src":"5584:51:18"}],"id":3244,"name":"FunctionDefinition","src":"5514:121:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3274,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3245,"name":"UserDefinedTypeName","src":"5825:5:18"}],"id":3246,"name":"VariableDeclaration","src":"5825:17:18"}],"id":3247,"name":"ParameterList","src":"5824:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3274,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3248,"name":"ElementaryTypeName","src":"5867:6:18"}],"id":3249,"name":"VariableDeclaration","src":"5867:13:18"}],"id":3250,"name":"ParameterList","src":"5866:15:18"},{"children":[{"attributes":{"assignments":[3252]},"children":[{"attributes":{"constant":false,"name":"ret","scope":3273,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3251,"name":"ElementaryTypeName","src":"5892:6:18"}],"id":3252,"name":"VariableDeclaration","src":"5892:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":3253,"name":"ElementaryTypeName","src":"5916:6:18"}],"id":3254,"name":"NewExpression","src":"5912:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3246,"type":"struct strings.slice memory","value":"self"},"id":3255,"name":"Identifier","src":"5923:4:18"}],"id":3256,"name":"MemberAccess","src":"5923:9:18"}],"id":3257,"name":"FunctionCall","src":"5912:21:18"}],"id":3258,"name":"VariableDeclarationStatement","src":"5892:41:18"},{"attributes":{"assignments":[3260],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":3273,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3259,"name":"ElementaryTypeName","src":"5943:4:18"}],"id":3260,"name":"VariableDeclaration","src":"5943:11:18"}],"id":3261,"name":"VariableDeclarationStatement","src":"5943:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":3260,"isOffset":false,"isSlot":false,"src":"5975:6:18","valueSize":1}},{"ret":{"declaration":3252,"isOffset":false,"isSlot":false,"src":"5989:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":3262,"name":"InlineAssembly","src":"5964:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":3263,"name":"Identifier","src":"6009:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3260,"type":"uint256","value":"retptr"},"id":3264,"name":"Identifier","src":"6016:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3246,"type":"struct strings.slice memory","value":"self"},"id":3265,"name":"Identifier","src":"6024:4:18"}],"id":3266,"name":"MemberAccess","src":"6024:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3246,"type":"struct strings.slice memory","value":"self"},"id":3267,"name":"Identifier","src":"6035:4:18"}],"id":3268,"name":"MemberAccess","src":"6035:9:18"}],"id":3269,"name":"FunctionCall","src":"6009:36:18"}],"id":3270,"name":"ExpressionStatement","src":"6009:36:18"},{"attributes":{"functionReturnParameters":3250},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3252,"type":"string memory","value":"ret"},"id":3271,"name":"Identifier","src":"6062:3:18"}],"id":3272,"name":"Return","src":"6055:10:18"}],"id":3273,"name":"Block","src":"5882:190:18"}],"id":3274,"name":"FunctionDefinition","src":"5807:265:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3362,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3275,"name":"UserDefinedTypeName","src":"6476:5:18"}],"id":3276,"name":"VariableDeclaration","src":"6476:17:18"}],"id":3277,"name":"ParameterList","src":"6475:19:18"},{"children":[{"attributes":{"constant":false,"name":"l","scope":3362,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3278,"name":"ElementaryTypeName","src":"6518:4:18"}],"id":3279,"name":"VariableDeclaration","src":"6518:6:18"}],"id":3280,"name":"ParameterList","src":"6517:8:18"},{"children":[{"attributes":{"assignments":[3282]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":3361,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3281,"name":"ElementaryTypeName","src":"6611:4:18"}],"id":3282,"name":"VariableDeclaration","src":"6611:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3276,"type":"struct strings.slice memory","value":"self"},"id":3283,"name":"Identifier","src":"6622:4:18"}],"id":3284,"name":"MemberAccess","src":"6622:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":3285,"name":"Literal","src":"6634:2:18"}],"id":3286,"name":"BinaryOperation","src":"6622:14:18"}],"id":3287,"name":"VariableDeclarationStatement","src":"6611:25:18"},{"attributes":{"assignments":[3289]},"children":[{"attributes":{"constant":false,"name":"end","scope":3361,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3288,"name":"ElementaryTypeName","src":"6646:4:18"}],"id":3289,"name":"VariableDeclaration","src":"6646:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3290,"name":"Identifier","src":"6657:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3276,"type":"struct strings.slice memory","value":"self"},"id":3291,"name":"Identifier","src":"6663:4:18"}],"id":3292,"name":"MemberAccess","src":"6663:9:18"}],"id":3293,"name":"BinaryOperation","src":"6657:15:18"}],"id":3294,"name":"VariableDeclarationStatement","src":"6646:26:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3279,"type":"uint256","value":"l"},"id":3295,"name":"Identifier","src":"6687:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3296,"name":"Literal","src":"6691:1:18"}],"id":3297,"name":"Assignment","src":"6687:5:18"}],"id":3298,"name":"ExpressionStatement","src":"6687:5:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3299,"name":"Identifier","src":"6694:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3289,"type":"uint256","value":"end"},"id":3300,"name":"Identifier","src":"6700:3:18"}],"id":3301,"name":"BinaryOperation","src":"6694:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3279,"type":"uint256","value":"l"},"id":3302,"name":"Identifier","src":"6705:1:18"}],"id":3303,"name":"UnaryOperation","src":"6705:3:18"}],"id":3304,"name":"ExpressionStatement","src":"6705:3:18"},{"children":[{"attributes":{"assignments":[3306],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3359,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3305,"name":"ElementaryTypeName","src":"6724:5:18"}],"id":3306,"name":"VariableDeclaration","src":"6724:7:18"}],"id":3307,"name":"VariableDeclarationStatement","src":"6724:7:18"},{"attributes":{"externalReferences":[{"b":{"declaration":3306,"isOffset":false,"isSlot":false,"src":"6756:1:18","valueSize":1}},{"ptr":{"declaration":3282,"isOffset":false,"isSlot":false,"src":"6771:3:18","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":3308,"name":"InlineAssembly","src":"6745:39:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3309,"name":"Identifier","src":"6801:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3310,"name":"Literal","src":"6805:4:18"}],"id":3311,"name":"BinaryOperation","src":"6801:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3312,"name":"Identifier","src":"6829:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3313,"name":"Literal","src":"6836:1:18"}],"id":3314,"name":"Assignment","src":"6829:8:18"}],"id":3315,"name":"ExpressionStatement","src":"6829:8:18"}],"id":3316,"name":"Block","src":"6811:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3317,"name":"Identifier","src":"6862:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3318,"name":"Literal","src":"6866:4:18"}],"id":3319,"name":"BinaryOperation","src":"6862:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3320,"name":"Identifier","src":"6890:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3321,"name":"Literal","src":"6897:1:18"}],"id":3322,"name":"Assignment","src":"6890:8:18"}],"id":3323,"name":"ExpressionStatement","src":"6890:8:18"}],"id":3324,"name":"Block","src":"6872:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3325,"name":"Identifier","src":"6923:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3326,"name":"Literal","src":"6927:4:18"}],"id":3327,"name":"BinaryOperation","src":"6923:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3328,"name":"Identifier","src":"6951:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3329,"name":"Literal","src":"6958:1:18"}],"id":3330,"name":"Assignment","src":"6951:8:18"}],"id":3331,"name":"ExpressionStatement","src":"6951:8:18"}],"id":3332,"name":"Block","src":"6933:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3333,"name":"Identifier","src":"6984:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":3334,"name":"Literal","src":"6988:4:18"}],"id":3335,"name":"BinaryOperation","src":"6984:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3336,"name":"Identifier","src":"7012:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3337,"name":"Literal","src":"7019:1:18"}],"id":3338,"name":"Assignment","src":"7012:8:18"}],"id":3339,"name":"ExpressionStatement","src":"7012:8:18"}],"id":3340,"name":"Block","src":"6994:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"uint8","value":"b"},"id":3341,"name":"Identifier","src":"7045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":3342,"name":"Literal","src":"7049:4:18"}],"id":3343,"name":"BinaryOperation","src":"7045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3344,"name":"Identifier","src":"7073:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":3345,"name":"Literal","src":"7080:1:18"}],"id":3346,"name":"Assignment","src":"7073:8:18"}],"id":3347,"name":"ExpressionStatement","src":"7073:8:18"}],"id":3348,"name":"Block","src":"7055:41:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"uint256","value":"ptr"},"id":3349,"name":"Identifier","src":"7120:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":3350,"name":"Literal","src":"7127:1:18"}],"id":3351,"name":"Assignment","src":"7120:8:18"}],"id":3352,"name":"ExpressionStatement","src":"7120:8:18"}],"id":3353,"name":"Block","src":"7102:41:18"}],"id":3354,"name":"IfStatement","src":"7041:102:18"}],"id":3355,"name":"IfStatement","src":"6980:163:18"}],"id":3356,"name":"IfStatement","src":"6919:224:18"}],"id":3357,"name":"IfStatement","src":"6858:285:18"}],"id":3358,"name":"IfStatement","src":"6797:346:18"}],"id":3359,"name":"Block","src":"6710:443:18"}],"id":3360,"name":"ForStatement","src":"6682:471:18"}],"id":3361,"name":"Block","src":"6526:633:18"}],"id":3362,"name":"FunctionDefinition","src":"6463:696:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3375,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3363,"name":"UserDefinedTypeName","src":"7367:5:18"}],"id":3364,"name":"VariableDeclaration","src":"7367:17:18"}],"id":3365,"name":"ParameterList","src":"7366:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3375,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3366,"name":"ElementaryTypeName","src":"7409:4:18"}],"id":3367,"name":"VariableDeclaration","src":"7409:4:18"}],"id":3368,"name":"ParameterList","src":"7408:6:18"},{"children":[{"attributes":{"functionReturnParameters":3368},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"struct strings.slice memory","value":"self"},"id":3369,"name":"Identifier","src":"7432:4:18"}],"id":3370,"name":"MemberAccess","src":"7432:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3371,"name":"Literal","src":"7445:1:18"}],"id":3372,"name":"BinaryOperation","src":"7432:14:18"}],"id":3373,"name":"Return","src":"7425:21:18"}],"id":3374,"name":"Block","src":"7415:38:18"}],"id":3375,"name":"FunctionDefinition","src":"7352:101:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3504,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3376,"name":"UserDefinedTypeName","src":"7898:5:18"}],"id":3377,"name":"VariableDeclaration","src":"7898:17:18"},{"attributes":{"constant":false,"name":"other","scope":3504,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3378,"name":"UserDefinedTypeName","src":"7917:5:18"}],"id":3379,"name":"VariableDeclaration","src":"7917:18:18"}],"id":3380,"name":"ParameterList","src":"7897:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3504,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":3381,"name":"ElementaryTypeName","src":"7960:3:18"}],"id":3382,"name":"VariableDeclaration","src":"7960:3:18"}],"id":3383,"name":"ParameterList","src":"7959:5:18"},{"children":[{"attributes":{"assignments":[3385]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":3503,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3384,"name":"ElementaryTypeName","src":"7975:4:18"}],"id":3385,"name":"VariableDeclaration","src":"7975:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"struct strings.slice memory","value":"self"},"id":3386,"name":"Identifier","src":"7991:4:18"}],"id":3387,"name":"MemberAccess","src":"7991:9:18"}],"id":3388,"name":"VariableDeclarationStatement","src":"7975:25:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3379,"type":"struct strings.slice memory","value":"other"},"id":3389,"name":"Identifier","src":"8014:5:18"}],"id":3390,"name":"MemberAccess","src":"8014:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"struct strings.slice memory","value":"self"},"id":3391,"name":"Identifier","src":"8027:4:18"}],"id":3392,"name":"MemberAccess","src":"8027:9:18"}],"id":3393,"name":"BinaryOperation","src":"8014:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3385,"type":"uint256","value":"shortest"},"id":3394,"name":"Identifier","src":"8050:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3379,"type":"struct strings.slice memory","value":"other"},"id":3395,"name":"Identifier","src":"8061:5:18"}],"id":3396,"name":"MemberAccess","src":"8061:10:18"}],"id":3397,"name":"Assignment","src":"8050:21:18"}],"id":3398,"name":"ExpressionStatement","src":"8050:21:18"}],"id":3399,"name":"IfStatement","src":"8010:61:18"},{"attributes":{"assignments":[3401]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":3503,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3400,"name":"ElementaryTypeName","src":"8082:4:18"}],"id":3401,"name":"VariableDeclaration","src":"8082:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"struct strings.slice memory","value":"self"},"id":3402,"name":"Identifier","src":"8097:4:18"}],"id":3403,"name":"MemberAccess","src":"8097:9:18"}],"id":3404,"name":"VariableDeclarationStatement","src":"8082:24:18"},{"attributes":{"assignments":[3406]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":3503,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3405,"name":"ElementaryTypeName","src":"8116:4:18"}],"id":3406,"name":"VariableDeclaration","src":"8116:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3379,"type":"struct strings.slice memory","value":"other"},"id":3407,"name":"Identifier","src":"8132:5:18"}],"id":3408,"name":"MemberAccess","src":"8132:10:18"}],"id":3409,"name":"VariableDeclarationStatement","src":"8116:26:18"},{"children":[{"attributes":{"assignments":[3411]},"children":[{"attributes":{"constant":false,"name":"idx","scope":3492,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3410,"name":"ElementaryTypeName","src":"8157:4:18"}],"id":3411,"name":"VariableDeclaration","src":"8157:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3412,"name":"Literal","src":"8168:1:18"}],"id":3413,"name":"VariableDeclarationStatement","src":"8157:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3411,"type":"uint256","value":"idx"},"id":3414,"name":"Identifier","src":"8171:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3385,"type":"uint256","value":"shortest"},"id":3415,"name":"Identifier","src":"8177:8:18"}],"id":3416,"name":"BinaryOperation","src":"8171:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3411,"type":"uint256","value":"idx"},"id":3417,"name":"Identifier","src":"8187:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3418,"name":"Literal","src":"8194:2:18"}],"id":3419,"name":"Assignment","src":"8187:9:18"}],"id":3420,"name":"ExpressionStatement","src":"8187:9:18"},{"children":[{"attributes":{"assignments":[3422],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":3491,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3421,"name":"ElementaryTypeName","src":"8212:4:18"}],"id":3422,"name":"VariableDeclaration","src":"8212:6:18"}],"id":3423,"name":"VariableDeclarationStatement","src":"8212:6:18"},{"attributes":{"assignments":[3425],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3491,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3424,"name":"ElementaryTypeName","src":"8232:4:18"}],"id":3425,"name":"VariableDeclaration","src":"8232:6:18"}],"id":3426,"name":"VariableDeclarationStatement","src":"8232:6:18"},{"attributes":{"externalReferences":[{"a":{"declaration":3422,"isOffset":false,"isSlot":false,"src":"8279:1:18","valueSize":1}},{"selfptr":{"declaration":3401,"isOffset":false,"isSlot":false,"src":"8290:7:18","valueSize":1}},{"b":{"declaration":3425,"isOffset":false,"isSlot":false,"src":"8315:1:18","valueSize":1}},{"otherptr":{"declaration":3406,"isOffset":false,"isSlot":false,"src":"8326:8:18","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":3427,"name":"InlineAssembly","src":"8252:97:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"uint256","value":"a"},"id":3428,"name":"Identifier","src":"8366:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3425,"type":"uint256","value":"b"},"id":3429,"name":"Identifier","src":"8371:1:18"}],"id":3430,"name":"BinaryOperation","src":"8366:6:18"},{"children":[{"attributes":{"assignments":[3432]},"children":[{"attributes":{"constant":false,"name":"mask","scope":3481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3431,"name":"ElementaryTypeName","src":"8453:7:18"}],"id":3432,"name":"VariableDeclaration","src":"8453:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":3433,"name":"ElementaryTypeNameExpression","src":"8468:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3434,"name":"Literal","src":"8477:1:18"}],"id":3435,"name":"UnaryOperation","src":"8476:2:18"}],"id":3436,"name":"FunctionCall","src":"8468:11:18"}],"id":3437,"name":"VariableDeclarationStatement","src":"8453:26:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3385,"type":"uint256","value":"shortest"},"id":3438,"name":"Identifier","src":"8514:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3439,"name":"Literal","src":"8525:2:18"}],"id":3440,"name":"BinaryOperation","src":"8514:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"uint256","value":"mask"},"id":3441,"name":"Identifier","src":"8551:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3442,"name":"Literal","src":"8560:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3443,"name":"Literal","src":"8566:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3444,"name":"Literal","src":"8571:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3385,"type":"uint256","value":"shortest"},"id":3445,"name":"Identifier","src":"8576:8:18"}],"id":3446,"name":"BinaryOperation","src":"8571:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3411,"type":"uint256","value":"idx"},"id":3447,"name":"Identifier","src":"8587:3:18"}],"id":3448,"name":"BinaryOperation","src":"8571:19:18"}],"id":3449,"name":"TupleExpression","src":"8570:21:18"}],"id":3450,"name":"BinaryOperation","src":"8566:25:18"}],"id":3451,"name":"TupleExpression","src":"8565:27:18"}],"id":3452,"name":"BinaryOperation","src":"8560:32:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3453,"name":"Literal","src":"8595:1:18"}],"id":3454,"name":"BinaryOperation","src":"8560:36:18"}],"id":3455,"name":"TupleExpression","src":"8559:38:18"}],"id":3456,"name":"UnaryOperation","src":"8558:39:18"}],"id":3457,"name":"Assignment","src":"8551:46:18"}],"id":3458,"name":"ExpressionStatement","src":"8551:46:18"}],"id":3459,"name":"Block","src":"8529:87:18"}],"id":3460,"name":"IfStatement","src":"8510:106:18"},{"attributes":{"assignments":[3462]},"children":[{"attributes":{"constant":false,"name":"diff","scope":3481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3461,"name":"ElementaryTypeName","src":"8633:7:18"}],"id":3462,"name":"VariableDeclaration","src":"8633:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"uint256","value":"a"},"id":3463,"name":"Identifier","src":"8649:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"uint256","value":"mask"},"id":3464,"name":"Identifier","src":"8653:4:18"}],"id":3465,"name":"BinaryOperation","src":"8649:8:18"}],"id":3466,"name":"TupleExpression","src":"8648:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3425,"type":"uint256","value":"b"},"id":3467,"name":"Identifier","src":"8662:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"uint256","value":"mask"},"id":3468,"name":"Identifier","src":"8666:4:18"}],"id":3469,"name":"BinaryOperation","src":"8662:8:18"}],"id":3470,"name":"TupleExpression","src":"8661:10:18"}],"id":3471,"name":"BinaryOperation","src":"8648:23:18"}],"id":3472,"name":"VariableDeclarationStatement","src":"8633:38:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3462,"type":"uint256","value":"diff"},"id":3473,"name":"Identifier","src":"8693:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3474,"name":"Literal","src":"8701:1:18"}],"id":3475,"name":"BinaryOperation","src":"8693:9:18"},{"attributes":{"functionReturnParameters":3383},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3476,"name":"ElementaryTypeNameExpression","src":"8731:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3462,"type":"uint256","value":"diff"},"id":3477,"name":"Identifier","src":"8735:4:18"}],"id":3478,"name":"FunctionCall","src":"8731:9:18"}],"id":3479,"name":"Return","src":"8724:16:18"}],"id":3480,"name":"IfStatement","src":"8689:51:18"}],"id":3481,"name":"Block","src":"8374:381:18"}],"id":3482,"name":"IfStatement","src":"8362:393:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3401,"type":"uint256","value":"selfptr"},"id":3483,"name":"Identifier","src":"8768:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3484,"name":"Literal","src":"8779:2:18"}],"id":3485,"name":"Assignment","src":"8768:13:18"}],"id":3486,"name":"ExpressionStatement","src":"8768:13:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3406,"type":"uint256","value":"otherptr"},"id":3487,"name":"Identifier","src":"8795:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3488,"name":"Literal","src":"8807:2:18"}],"id":3489,"name":"Assignment","src":"8795:14:18"}],"id":3490,"name":"ExpressionStatement","src":"8795:14:18"}],"id":3491,"name":"Block","src":"8198:622:18"}],"id":3492,"name":"ForStatement","src":"8152:668:18"},{"attributes":{"functionReturnParameters":3383},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3493,"name":"ElementaryTypeNameExpression","src":"8836:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"struct strings.slice memory","value":"self"},"id":3494,"name":"Identifier","src":"8840:4:18"}],"id":3495,"name":"MemberAccess","src":"8840:9:18"}],"id":3496,"name":"FunctionCall","src":"8836:14:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3497,"name":"ElementaryTypeNameExpression","src":"8853:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3379,"type":"struct strings.slice memory","value":"other"},"id":3498,"name":"Identifier","src":"8857:5:18"}],"id":3499,"name":"MemberAccess","src":"8857:10:18"}],"id":3500,"name":"FunctionCall","src":"8853:15:18"}],"id":3501,"name":"BinaryOperation","src":"8836:32:18"}],"id":3502,"name":"Return","src":"8829:39:18"}],"id":3503,"name":"Block","src":"7965:910:18"}],"id":3504,"name":"FunctionDefinition","src":"7881:994:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3521,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3505,"name":"UserDefinedTypeName","src":"9135:5:18"}],"id":3506,"name":"VariableDeclaration","src":"9135:17:18"},{"attributes":{"constant":false,"name":"other","scope":3521,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3507,"name":"UserDefinedTypeName","src":"9154:5:18"}],"id":3508,"name":"VariableDeclaration","src":"9154:18:18"}],"id":3509,"name":"ParameterList","src":"9134:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3521,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3510,"name":"ElementaryTypeName","src":"9197:4:18"}],"id":3511,"name":"VariableDeclaration","src":"9197:4:18"}],"id":3512,"name":"ParameterList","src":"9196:6:18"},{"children":[{"attributes":{"functionReturnParameters":3512},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3504,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":3513,"name":"Identifier","src":"9220:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3506,"type":"struct strings.slice memory","value":"self"},"id":3514,"name":"Identifier","src":"9228:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3508,"type":"struct strings.slice memory","value":"other"},"id":3515,"name":"Identifier","src":"9234:5:18"}],"id":3516,"name":"FunctionCall","src":"9220:20:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3517,"name":"Literal","src":"9244:1:18"}],"id":3518,"name":"BinaryOperation","src":"9220:25:18"}],"id":3519,"name":"Return","src":"9213:32:18"}],"id":3520,"name":"Block","src":"9203:49:18"}],"id":3521,"name":"FunctionDefinition","src":"9119:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3522,"name":"UserDefinedTypeName","src":"9563:5:18"}],"id":3523,"name":"VariableDeclaration","src":"9563:17:18"},{"attributes":{"constant":false,"name":"rune","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3524,"name":"UserDefinedTypeName","src":"9582:5:18"}],"id":3525,"name":"VariableDeclaration","src":"9582:17:18"}],"id":3526,"name":"ParameterList","src":"9562:38:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3527,"name":"UserDefinedTypeName","src":"9624:5:18"}],"id":3528,"name":"VariableDeclaration","src":"9624:12:18"}],"id":3529,"name":"ParameterList","src":"9623:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3530,"name":"Identifier","src":"9648:4:18"}],"id":3532,"name":"MemberAccess","src":"9648:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3533,"name":"Identifier","src":"9660:4:18"}],"id":3534,"name":"MemberAccess","src":"9660:9:18"}],"id":3535,"name":"Assignment","src":"9648:21:18"}],"id":3536,"name":"ExpressionStatement","src":"9648:21:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3537,"name":"Identifier","src":"9684:4:18"}],"id":3538,"name":"MemberAccess","src":"9684:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3539,"name":"Literal","src":"9697:1:18"}],"id":3540,"name":"BinaryOperation","src":"9684:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3541,"name":"Identifier","src":"9714:4:18"}],"id":3543,"name":"MemberAccess","src":"9714:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3544,"name":"Literal","src":"9726:1:18"}],"id":3545,"name":"Assignment","src":"9714:13:18"}],"id":3546,"name":"ExpressionStatement","src":"9714:13:18"},{"attributes":{"functionReturnParameters":3529},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3547,"name":"Identifier","src":"9748:4:18"}],"id":3548,"name":"Return","src":"9741:11:18"}],"id":3549,"name":"Block","src":"9700:63:18"}],"id":3550,"name":"IfStatement","src":"9680:83:18"},{"attributes":{"assignments":[3552],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":3638,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3551,"name":"ElementaryTypeName","src":"9773:4:18"}],"id":3552,"name":"VariableDeclaration","src":"9773:6:18"}],"id":3553,"name":"VariableDeclarationStatement","src":"9773:6:18"},{"attributes":{"assignments":[3555],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3638,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3554,"name":"ElementaryTypeName","src":"9789:4:18"}],"id":3555,"name":"VariableDeclaration","src":"9789:6:18"}],"id":3556,"name":"VariableDeclarationStatement","src":"9789:6:18"},{"attributes":{"externalReferences":[{"b":{"declaration":3555,"isOffset":false,"isSlot":false,"src":"9878:1:18","valueSize":1}},{"self":{"declaration":3523,"isOffset":false,"isSlot":false,"src":"9907:4:18","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":3557,"name":"InlineAssembly","src":"9867:65:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"uint256","value":"b"},"id":3558,"name":"Identifier","src":"9945:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3559,"name":"Literal","src":"9949:4:18"}],"id":3560,"name":"BinaryOperation","src":"9945:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3561,"name":"Identifier","src":"9969:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3562,"name":"Literal","src":"9973:1:18"}],"id":3563,"name":"Assignment","src":"9969:5:18"}],"id":3564,"name":"ExpressionStatement","src":"9969:5:18"}],"id":3565,"name":"Block","src":"9955:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"uint256","value":"b"},"id":3566,"name":"Identifier","src":"9995:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3567,"name":"Literal","src":"9999:4:18"}],"id":3568,"name":"BinaryOperation","src":"9995:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3569,"name":"Identifier","src":"10019:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3570,"name":"Literal","src":"10023:1:18"}],"id":3571,"name":"Assignment","src":"10019:5:18"}],"id":3572,"name":"ExpressionStatement","src":"10019:5:18"}],"id":3573,"name":"Block","src":"10005:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"uint256","value":"b"},"id":3574,"name":"Identifier","src":"10045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3575,"name":"Literal","src":"10049:4:18"}],"id":3576,"name":"BinaryOperation","src":"10045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3577,"name":"Identifier","src":"10069:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3578,"name":"Literal","src":"10073:1:18"}],"id":3579,"name":"Assignment","src":"10069:5:18"}],"id":3580,"name":"ExpressionStatement","src":"10069:5:18"}],"id":3581,"name":"Block","src":"10055:30:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3582,"name":"Identifier","src":"10105:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3583,"name":"Literal","src":"10109:1:18"}],"id":3584,"name":"Assignment","src":"10105:5:18"}],"id":3585,"name":"ExpressionStatement","src":"10105:5:18"}],"id":3586,"name":"Block","src":"10091:30:18"}],"id":3587,"name":"IfStatement","src":"10041:80:18"}],"id":3588,"name":"IfStatement","src":"9991:130:18"}],"id":3589,"name":"IfStatement","src":"9941:180:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3590,"name":"Identifier","src":"10177:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3591,"name":"Identifier","src":"10181:4:18"}],"id":3592,"name":"MemberAccess","src":"10181:9:18"}],"id":3593,"name":"BinaryOperation","src":"10177:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3594,"name":"Identifier","src":"10206:4:18"}],"id":3596,"name":"MemberAccess","src":"10206:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3597,"name":"Identifier","src":"10218:4:18"}],"id":3598,"name":"MemberAccess","src":"10218:9:18"}],"id":3599,"name":"Assignment","src":"10206:21:18"}],"id":3600,"name":"ExpressionStatement","src":"10206:21:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3601,"name":"Identifier","src":"10241:4:18"}],"id":3603,"name":"MemberAccess","src":"10241:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3604,"name":"Identifier","src":"10254:4:18"}],"id":3605,"name":"MemberAccess","src":"10254:9:18"}],"id":3606,"name":"Assignment","src":"10241:22:18"}],"id":3607,"name":"ExpressionStatement","src":"10241:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3608,"name":"Identifier","src":"10277:4:18"}],"id":3610,"name":"MemberAccess","src":"10277:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3611,"name":"Literal","src":"10289:1:18"}],"id":3612,"name":"Assignment","src":"10277:13:18"}],"id":3613,"name":"ExpressionStatement","src":"10277:13:18"},{"attributes":{"functionReturnParameters":3529},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3614,"name":"Identifier","src":"10311:4:18"}],"id":3615,"name":"Return","src":"10304:11:18"}],"id":3616,"name":"Block","src":"10192:134:18"}],"id":3617,"name":"IfStatement","src":"10173:153:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3618,"name":"Identifier","src":"10336:4:18"}],"id":3620,"name":"MemberAccess","src":"10336:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3621,"name":"Identifier","src":"10349:1:18"}],"id":3622,"name":"Assignment","src":"10336:14:18"}],"id":3623,"name":"ExpressionStatement","src":"10336:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"struct strings.slice memory","value":"self"},"id":3624,"name":"Identifier","src":"10360:4:18"}],"id":3626,"name":"MemberAccess","src":"10360:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3627,"name":"Identifier","src":"10373:1:18"}],"id":3628,"name":"Assignment","src":"10360:14:18"}],"id":3629,"name":"ExpressionStatement","src":"10360:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3630,"name":"Identifier","src":"10384:4:18"}],"id":3632,"name":"MemberAccess","src":"10384:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3552,"type":"uint256","value":"l"},"id":3633,"name":"Identifier","src":"10396:1:18"}],"id":3634,"name":"Assignment","src":"10384:13:18"}],"id":3635,"name":"ExpressionStatement","src":"10384:13:18"},{"attributes":{"functionReturnParameters":3529},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3525,"type":"struct strings.slice memory","value":"rune"},"id":3636,"name":"Identifier","src":"10414:4:18"}],"id":3637,"name":"Return","src":"10407:11:18"}],"id":3638,"name":"Block","src":"9638:787:18"}],"id":3639,"name":"FunctionDefinition","src":"9545:880:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3652,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3640,"name":"UserDefinedTypeName","src":"10683:5:18"}],"id":3641,"name":"VariableDeclaration","src":"10683:17:18"}],"id":3642,"name":"ParameterList","src":"10682:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3652,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3643,"name":"UserDefinedTypeName","src":"10725:5:18"}],"id":3644,"name":"VariableDeclaration","src":"10725:16:18"}],"id":3645,"name":"ParameterList","src":"10724:18:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[3639,3652],"referencedDeclaration":3639,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":3646,"name":"Identifier","src":"10753:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3647,"name":"Identifier","src":"10762:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3644,"type":"struct strings.slice memory","value":"ret"},"id":3648,"name":"Identifier","src":"10768:3:18"}],"id":3649,"name":"FunctionCall","src":"10753:19:18"}],"id":3650,"name":"ExpressionStatement","src":"10753:19:18"}],"id":3651,"name":"Block","src":"10743:36:18"}],"id":3652,"name":"FunctionDefinition","src":"10665:114:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3799,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3653,"name":"UserDefinedTypeName","src":"10988:5:18"}],"id":3654,"name":"VariableDeclaration","src":"10988:17:18"}],"id":3655,"name":"ParameterList","src":"10987:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3799,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3656,"name":"ElementaryTypeName","src":"11030:4:18"}],"id":3657,"name":"VariableDeclaration","src":"11030:8:18"}],"id":3658,"name":"ParameterList","src":"11029:10:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3654,"type":"struct strings.slice memory","value":"self"},"id":3659,"name":"Identifier","src":"11054:4:18"}],"id":3660,"name":"MemberAccess","src":"11054:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3661,"name":"Literal","src":"11067:1:18"}],"id":3662,"name":"BinaryOperation","src":"11054:14:18"},{"children":[{"attributes":{"functionReturnParameters":3658},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3663,"name":"Literal","src":"11091:1:18"}],"id":3664,"name":"Return","src":"11084:8:18"}],"id":3665,"name":"Block","src":"11070:33:18"}],"id":3666,"name":"IfStatement","src":"11050:53:18"},{"attributes":{"assignments":[3668],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":3798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3667,"name":"ElementaryTypeName","src":"11113:4:18"}],"id":3668,"name":"VariableDeclaration","src":"11113:9:18"}],"id":3669,"name":"VariableDeclarationStatement","src":"11113:9:18"},{"attributes":{"assignments":[3671],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":3798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3670,"name":"ElementaryTypeName","src":"11132:4:18"}],"id":3671,"name":"VariableDeclaration","src":"11132:11:18"}],"id":3672,"name":"VariableDeclarationStatement","src":"11132:11:18"},{"attributes":{"assignments":[3674]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":3798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3673,"name":"ElementaryTypeName","src":"11153:4:18"}],"id":3674,"name":"VariableDeclaration","src":"11153:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3675,"name":"Literal","src":"11168:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":3676,"name":"Literal","src":"11173:3:18"}],"id":3677,"name":"BinaryOperation","src":"11168:8:18"}],"id":3678,"name":"VariableDeclarationStatement","src":"11153:23:18"},{"attributes":{"externalReferences":[{"word":{"declaration":3668,"isOffset":false,"isSlot":false,"src":"11242:4:18","valueSize":1}},{"self":{"declaration":3654,"isOffset":false,"isSlot":false,"src":"11265:4:18","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":3679,"name":"InlineAssembly","src":"11231:47:18"},{"attributes":{"assignments":[3681]},"children":[{"attributes":{"constant":false,"name":"b","scope":3798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3680,"name":"ElementaryTypeName","src":"11287:4:18"}],"id":3681,"name":"VariableDeclaration","src":"11287:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"uint256","value":"word"},"id":3682,"name":"Identifier","src":"11296:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3674,"type":"uint256","value":"divisor"},"id":3683,"name":"Identifier","src":"11303:7:18"}],"id":3684,"name":"BinaryOperation","src":"11296:14:18"}],"id":3685,"name":"VariableDeclarationStatement","src":"11287:23:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3686,"name":"Identifier","src":"11324:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3687,"name":"Literal","src":"11328:4:18"}],"id":3688,"name":"BinaryOperation","src":"11324:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3689,"name":"Identifier","src":"11348:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3690,"name":"Identifier","src":"11354:1:18"}],"id":3691,"name":"Assignment","src":"11348:7:18"}],"id":3692,"name":"ExpressionStatement","src":"11348:7:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3693,"name":"Identifier","src":"11369:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3694,"name":"Literal","src":"11378:1:18"}],"id":3695,"name":"Assignment","src":"11369:10:18"}],"id":3696,"name":"ExpressionStatement","src":"11369:10:18"}],"id":3697,"name":"Block","src":"11334:56:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3698,"name":"Identifier","src":"11400:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3699,"name":"Literal","src":"11404:4:18"}],"id":3700,"name":"BinaryOperation","src":"11400:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3701,"name":"Identifier","src":"11424:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3702,"name":"Identifier","src":"11430:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":3703,"name":"Literal","src":"11434:4:18"}],"id":3704,"name":"BinaryOperation","src":"11430:8:18"}],"id":3705,"name":"Assignment","src":"11424:14:18"}],"id":3706,"name":"ExpressionStatement","src":"11424:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3707,"name":"Identifier","src":"11452:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3708,"name":"Literal","src":"11461:1:18"}],"id":3709,"name":"Assignment","src":"11452:10:18"}],"id":3710,"name":"ExpressionStatement","src":"11452:10:18"}],"id":3711,"name":"Block","src":"11410:63:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3712,"name":"Identifier","src":"11483:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3713,"name":"Literal","src":"11487:4:18"}],"id":3714,"name":"BinaryOperation","src":"11483:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3715,"name":"Identifier","src":"11507:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3716,"name":"Identifier","src":"11513:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":3717,"name":"Literal","src":"11517:4:18"}],"id":3718,"name":"BinaryOperation","src":"11513:8:18"}],"id":3719,"name":"Assignment","src":"11507:14:18"}],"id":3720,"name":"ExpressionStatement","src":"11507:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3721,"name":"Identifier","src":"11535:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3722,"name":"Literal","src":"11544:1:18"}],"id":3723,"name":"Assignment","src":"11535:10:18"}],"id":3724,"name":"ExpressionStatement","src":"11535:10:18"}],"id":3725,"name":"Block","src":"11493:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3726,"name":"Identifier","src":"11576:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3727,"name":"Identifier","src":"11582:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":3728,"name":"Literal","src":"11586:4:18"}],"id":3729,"name":"BinaryOperation","src":"11582:8:18"}],"id":3730,"name":"Assignment","src":"11576:14:18"}],"id":3731,"name":"ExpressionStatement","src":"11576:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3732,"name":"Identifier","src":"11604:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3733,"name":"Literal","src":"11613:1:18"}],"id":3734,"name":"Assignment","src":"11604:10:18"}],"id":3735,"name":"ExpressionStatement","src":"11604:10:18"}],"id":3736,"name":"Block","src":"11562:63:18"}],"id":3737,"name":"IfStatement","src":"11479:146:18"}],"id":3738,"name":"IfStatement","src":"11396:229:18"}],"id":3739,"name":"IfStatement","src":"11320:305:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3740,"name":"Identifier","src":"11681:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3654,"type":"struct strings.slice memory","value":"self"},"id":3741,"name":"Identifier","src":"11690:4:18"}],"id":3742,"name":"MemberAccess","src":"11690:9:18"}],"id":3743,"name":"BinaryOperation","src":"11681:18:18"},{"children":[{"attributes":{"functionReturnParameters":3658},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3744,"name":"Literal","src":"11722:1:18"}],"id":3745,"name":"Return","src":"11715:8:18"}],"id":3746,"name":"Block","src":"11701:33:18"}],"id":3747,"name":"IfStatement","src":"11677:57:18"},{"children":[{"attributes":{"assignments":[3749]},"children":[{"attributes":{"constant":false,"name":"i","scope":3795,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3748,"name":"ElementaryTypeName","src":"11749:4:18"}],"id":3749,"name":"VariableDeclaration","src":"11749:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3750,"name":"Literal","src":"11758:1:18"}],"id":3751,"name":"VariableDeclarationStatement","src":"11749:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3749,"type":"uint256","value":"i"},"id":3752,"name":"Identifier","src":"11761:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3671,"type":"uint256","value":"length"},"id":3753,"name":"Identifier","src":"11765:6:18"}],"id":3754,"name":"BinaryOperation","src":"11761:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3749,"type":"uint256","value":"i"},"id":3755,"name":"Identifier","src":"11773:1:18"}],"id":3756,"name":"UnaryOperation","src":"11773:3:18"}],"id":3757,"name":"ExpressionStatement","src":"11773:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3674,"type":"uint256","value":"divisor"},"id":3758,"name":"Identifier","src":"11792:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3674,"type":"uint256","value":"divisor"},"id":3759,"name":"Identifier","src":"11802:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":3760,"name":"Literal","src":"11812:3:18"}],"id":3761,"name":"BinaryOperation","src":"11802:13:18"}],"id":3762,"name":"Assignment","src":"11792:23:18"}],"id":3763,"name":"ExpressionStatement","src":"11792:23:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3764,"name":"Identifier","src":"11829:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"uint256","value":"word"},"id":3765,"name":"Identifier","src":"11834:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3674,"type":"uint256","value":"divisor"},"id":3766,"name":"Identifier","src":"11841:7:18"}],"id":3767,"name":"BinaryOperation","src":"11834:14:18"}],"id":3768,"name":"TupleExpression","src":"11833:16:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":3769,"name":"Literal","src":"11852:4:18"}],"id":3770,"name":"BinaryOperation","src":"11833:23:18"}],"id":3771,"name":"Assignment","src":"11829:27:18"}],"id":3772,"name":"ExpressionStatement","src":"11829:27:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3773,"name":"Identifier","src":"11874:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":3774,"name":"Literal","src":"11878:4:18"}],"id":3775,"name":"BinaryOperation","src":"11874:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3776,"name":"Literal","src":"11886:4:18"}],"id":3777,"name":"BinaryOperation","src":"11874:16:18"},{"children":[{"attributes":{"functionReturnParameters":3658},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3778,"name":"Literal","src":"11959:1:18"}],"id":3779,"name":"Return","src":"11952:8:18"}],"id":3780,"name":"Block","src":"11892:83:18"}],"id":3781,"name":"IfStatement","src":"11870:105:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3782,"name":"Identifier","src":"11988:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3783,"name":"Identifier","src":"11995:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":3784,"name":"Literal","src":"12001:2:18"}],"id":3785,"name":"BinaryOperation","src":"11995:8:18"}],"id":3786,"name":"TupleExpression","src":"11994:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"b"},"id":3787,"name":"Identifier","src":"12008:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":3788,"name":"Literal","src":"12012:4:18"}],"id":3789,"name":"BinaryOperation","src":"12008:8:18"}],"id":3790,"name":"TupleExpression","src":"12007:10:18"}],"id":3791,"name":"BinaryOperation","src":"11994:23:18"}],"id":3792,"name":"Assignment","src":"11988:29:18"}],"id":3793,"name":"ExpressionStatement","src":"11988:29:18"}],"id":3794,"name":"Block","src":"11778:250:18"}],"id":3795,"name":"ForStatement","src":"11744:284:18"},{"attributes":{"functionReturnParameters":3658},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"ret"},"id":3796,"name":"Identifier","src":"12045:3:18"}],"id":3797,"name":"Return","src":"12038:10:18"}],"id":3798,"name":"Block","src":"11040:1015:18"}],"id":3799,"name":"FunctionDefinition","src":"10975:1080:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3808,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3800,"name":"UserDefinedTypeName","src":"12222:5:18"}],"id":3801,"name":"VariableDeclaration","src":"12222:17:18"}],"id":3802,"name":"ParameterList","src":"12221:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3808,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3803,"name":"ElementaryTypeName","src":"12264:7:18"}],"id":3804,"name":"VariableDeclaration","src":"12264:11:18"}],"id":3805,"name":"ParameterList","src":"12263:13:18"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":3804,"isOffset":false,"isSlot":false,"src":"12310:3:18","valueSize":1}},{"self":{"declaration":3801,"isOffset":false,"isSlot":false,"src":"12337:4:18","valueSize":1}},{"self":{"declaration":3801,"isOffset":false,"isSlot":false,"src":"12355:4:18","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":3806,"name":"InlineAssembly","src":"12287:84:18"}],"id":3807,"name":"Block","src":"12277:100:18"}],"id":3808,"name":"FunctionDefinition","src":"12206:171:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3842,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3809,"name":"UserDefinedTypeName","src":"12646:5:18"}],"id":3810,"name":"VariableDeclaration","src":"12646:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3842,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3811,"name":"UserDefinedTypeName","src":"12665:5:18"}],"id":3812,"name":"VariableDeclaration","src":"12665:19:18"}],"id":3813,"name":"ParameterList","src":"12645:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3814,"name":"ElementaryTypeName","src":"12709:4:18"}],"id":3815,"name":"VariableDeclaration","src":"12709:4:18"}],"id":3816,"name":"ParameterList","src":"12708:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3810,"type":"struct strings.slice memory","value":"self"},"id":3817,"name":"Identifier","src":"12729:4:18"}],"id":3818,"name":"MemberAccess","src":"12729:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"struct strings.slice memory","value":"needle"},"id":3819,"name":"Identifier","src":"12741:6:18"}],"id":3820,"name":"MemberAccess","src":"12741:11:18"}],"id":3821,"name":"BinaryOperation","src":"12729:23:18"},{"children":[{"attributes":{"functionReturnParameters":3816},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3822,"name":"Literal","src":"12775:5:18"}],"id":3823,"name":"Return","src":"12768:12:18"}],"id":3824,"name":"Block","src":"12754:37:18"}],"id":3825,"name":"IfStatement","src":"12725:66:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3810,"type":"struct strings.slice memory","value":"self"},"id":3826,"name":"Identifier","src":"12805:4:18"}],"id":3827,"name":"MemberAccess","src":"12805:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"struct strings.slice memory","value":"needle"},"id":3828,"name":"Identifier","src":"12818:6:18"}],"id":3829,"name":"MemberAccess","src":"12818:11:18"}],"id":3830,"name":"BinaryOperation","src":"12805:24:18"},{"children":[{"attributes":{"functionReturnParameters":3816},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3831,"name":"Literal","src":"12852:4:18"}],"id":3832,"name":"Return","src":"12845:11:18"}],"id":3833,"name":"Block","src":"12831:36:18"}],"id":3834,"name":"IfStatement","src":"12801:66:18"},{"attributes":{"assignments":[3836],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":3841,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3835,"name":"ElementaryTypeName","src":"12877:4:18"}],"id":3836,"name":"VariableDeclaration","src":"12877:10:18"}],"id":3837,"name":"VariableDeclarationStatement","src":"12877:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":3812,"isOffset":false,"isSlot":false,"src":"12940:6:18","valueSize":1}},{"self":{"declaration":3810,"isOffset":false,"isSlot":false,"src":"12985:4:18","valueSize":1}},{"equal":{"declaration":3836,"isOffset":false,"isSlot":false,"src":"13064:5:18","valueSize":1}},{"needle":{"declaration":3812,"isOffset":false,"isSlot":false,"src":"13037:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3838,"name":"InlineAssembly","src":"12897:246:18"},{"attributes":{"functionReturnParameters":3816},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3836,"type":"bool","value":"equal"},"id":3839,"name":"Identifier","src":"13159:5:18"}],"id":3840,"name":"Return","src":"13152:12:18"}],"id":3841,"name":"Block","src":"12715:456:18"}],"id":3842,"name":"FunctionDefinition","src":"12626:545:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3892,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3843,"name":"UserDefinedTypeName","src":"13459:5:18"}],"id":3844,"name":"VariableDeclaration","src":"13459:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3892,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3845,"name":"UserDefinedTypeName","src":"13478:5:18"}],"id":3846,"name":"VariableDeclaration","src":"13478:19:18"}],"id":3847,"name":"ParameterList","src":"13458:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3892,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3848,"name":"UserDefinedTypeName","src":"13522:5:18"}],"id":3849,"name":"VariableDeclaration","src":"13522:12:18"}],"id":3850,"name":"ParameterList","src":"13521:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3851,"name":"Identifier","src":"13550:4:18"}],"id":3852,"name":"MemberAccess","src":"13550:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"struct strings.slice memory","value":"needle"},"id":3853,"name":"Identifier","src":"13562:6:18"}],"id":3854,"name":"MemberAccess","src":"13562:11:18"}],"id":3855,"name":"BinaryOperation","src":"13550:23:18"},{"children":[{"attributes":{"functionReturnParameters":3850},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3856,"name":"Identifier","src":"13596:4:18"}],"id":3857,"name":"Return","src":"13589:11:18"}],"id":3858,"name":"Block","src":"13575:36:18"}],"id":3859,"name":"IfStatement","src":"13546:65:18"},{"attributes":{"assignments":[3861]},"children":[{"attributes":{"constant":false,"name":"equal","scope":3891,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3860,"name":"ElementaryTypeName","src":"13621:4:18"}],"id":3861,"name":"VariableDeclaration","src":"13621:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3862,"name":"Literal","src":"13634:4:18"}],"id":3863,"name":"VariableDeclarationStatement","src":"13621:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3864,"name":"Identifier","src":"13652:4:18"}],"id":3865,"name":"MemberAccess","src":"13652:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"struct strings.slice memory","value":"needle"},"id":3866,"name":"Identifier","src":"13665:6:18"}],"id":3867,"name":"MemberAccess","src":"13665:11:18"}],"id":3868,"name":"BinaryOperation","src":"13652:24:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":3846,"isOffset":false,"isSlot":false,"src":"13739:6:18","valueSize":1}},{"self":{"declaration":3844,"isOffset":false,"isSlot":false,"src":"13788:4:18","valueSize":1}},{"equal":{"declaration":3861,"isOffset":false,"isSlot":false,"src":"13875:5:18","valueSize":1}},{"needle":{"declaration":3846,"isOffset":false,"isSlot":false,"src":"13844:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3869,"name":"InlineAssembly","src":"13692:266:18"}],"id":3870,"name":"Block","src":"13678:290:18"}],"id":3871,"name":"IfStatement","src":"13648:320:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3861,"type":"bool","value":"equal"},"id":3872,"name":"Identifier","src":"13982:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3873,"name":"Identifier","src":"14003:4:18"}],"id":3875,"name":"MemberAccess","src":"14003:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"struct strings.slice memory","value":"needle"},"id":3876,"name":"Identifier","src":"14016:6:18"}],"id":3877,"name":"MemberAccess","src":"14016:11:18"}],"id":3878,"name":"Assignment","src":"14003:24:18"}],"id":3879,"name":"ExpressionStatement","src":"14003:24:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3880,"name":"Identifier","src":"14041:4:18"}],"id":3882,"name":"MemberAccess","src":"14041:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"struct strings.slice memory","value":"needle"},"id":3883,"name":"Identifier","src":"14054:6:18"}],"id":3884,"name":"MemberAccess","src":"14054:11:18"}],"id":3885,"name":"Assignment","src":"14041:24:18"}],"id":3886,"name":"ExpressionStatement","src":"14041:24:18"}],"id":3887,"name":"Block","src":"13989:87:18"}],"id":3888,"name":"IfStatement","src":"13978:98:18"},{"attributes":{"functionReturnParameters":3850},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3844,"type":"struct strings.slice memory","value":"self"},"id":3889,"name":"Identifier","src":"14093:4:18"}],"id":3890,"name":"Return","src":"14086:11:18"}],"id":3891,"name":"Block","src":"13536:568:18"}],"id":3892,"name":"FunctionDefinition","src":"13443:661:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3936,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3893,"name":"UserDefinedTypeName","src":"14372:5:18"}],"id":3894,"name":"VariableDeclaration","src":"14372:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3936,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3895,"name":"UserDefinedTypeName","src":"14391:5:18"}],"id":3896,"name":"VariableDeclaration","src":"14391:19:18"}],"id":3897,"name":"ParameterList","src":"14371:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3936,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3898,"name":"ElementaryTypeName","src":"14435:4:18"}],"id":3899,"name":"VariableDeclaration","src":"14435:4:18"}],"id":3900,"name":"ParameterList","src":"14434:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3894,"type":"struct strings.slice memory","value":"self"},"id":3901,"name":"Identifier","src":"14455:4:18"}],"id":3902,"name":"MemberAccess","src":"14455:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"struct strings.slice memory","value":"needle"},"id":3903,"name":"Identifier","src":"14467:6:18"}],"id":3904,"name":"MemberAccess","src":"14467:11:18"}],"id":3905,"name":"BinaryOperation","src":"14455:23:18"},{"children":[{"attributes":{"functionReturnParameters":3900},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3906,"name":"Literal","src":"14501:5:18"}],"id":3907,"name":"Return","src":"14494:12:18"}],"id":3908,"name":"Block","src":"14480:37:18"}],"id":3909,"name":"IfStatement","src":"14451:66:18"},{"attributes":{"assignments":[3911]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":3935,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3910,"name":"ElementaryTypeName","src":"14527:4:18"}],"id":3911,"name":"VariableDeclaration","src":"14527:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3894,"type":"struct strings.slice memory","value":"self"},"id":3912,"name":"Identifier","src":"14542:4:18"}],"id":3913,"name":"MemberAccess","src":"14542:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3894,"type":"struct strings.slice memory","value":"self"},"id":3914,"name":"Identifier","src":"14554:4:18"}],"id":3915,"name":"MemberAccess","src":"14554:9:18"}],"id":3916,"name":"BinaryOperation","src":"14542:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"struct strings.slice memory","value":"needle"},"id":3917,"name":"Identifier","src":"14566:6:18"}],"id":3918,"name":"MemberAccess","src":"14566:11:18"}],"id":3919,"name":"BinaryOperation","src":"14542:35:18"}],"id":3920,"name":"VariableDeclarationStatement","src":"14527:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3911,"type":"uint256","value":"selfptr"},"id":3921,"name":"Identifier","src":"14592:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"struct strings.slice memory","value":"needle"},"id":3922,"name":"Identifier","src":"14603:6:18"}],"id":3923,"name":"MemberAccess","src":"14603:11:18"}],"id":3924,"name":"BinaryOperation","src":"14592:22:18"},{"children":[{"attributes":{"functionReturnParameters":3900},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3925,"name":"Literal","src":"14637:4:18"}],"id":3926,"name":"Return","src":"14630:11:18"}],"id":3927,"name":"Block","src":"14616:36:18"}],"id":3928,"name":"IfStatement","src":"14588:64:18"},{"attributes":{"assignments":[3930],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":3935,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3929,"name":"ElementaryTypeName","src":"14662:4:18"}],"id":3930,"name":"VariableDeclaration","src":"14662:10:18"}],"id":3931,"name":"VariableDeclarationStatement","src":"14662:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":3896,"isOffset":false,"isSlot":false,"src":"14725:6:18","valueSize":1}},{"equal":{"declaration":3930,"isOffset":false,"isSlot":false,"src":"14799:5:18","valueSize":1}},{"needle":{"declaration":3896,"isOffset":false,"isSlot":false,"src":"14772:6:18","valueSize":1}},{"selfptr":{"declaration":3911,"isOffset":false,"isSlot":false,"src":"14821:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3932,"name":"InlineAssembly","src":"14682:196:18"},{"attributes":{"functionReturnParameters":3900},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"bool","value":"equal"},"id":3933,"name":"Identifier","src":"14895:5:18"}],"id":3934,"name":"Return","src":"14888:12:18"}],"id":3935,"name":"Block","src":"14441:466:18"}],"id":3936,"name":"FunctionDefinition","src":"14354:553:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3989,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3937,"name":"UserDefinedTypeName","src":"15186:5:18"}],"id":3938,"name":"VariableDeclaration","src":"15186:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3989,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3939,"name":"UserDefinedTypeName","src":"15205:5:18"}],"id":3940,"name":"VariableDeclaration","src":"15205:19:18"}],"id":3941,"name":"ParameterList","src":"15185:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3989,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":3942,"name":"UserDefinedTypeName","src":"15249:5:18"}],"id":3943,"name":"VariableDeclaration","src":"15249:12:18"}],"id":3944,"name":"ParameterList","src":"15248:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3945,"name":"Identifier","src":"15277:4:18"}],"id":3946,"name":"MemberAccess","src":"15277:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3940,"type":"struct strings.slice memory","value":"needle"},"id":3947,"name":"Identifier","src":"15289:6:18"}],"id":3948,"name":"MemberAccess","src":"15289:11:18"}],"id":3949,"name":"BinaryOperation","src":"15277:23:18"},{"children":[{"attributes":{"functionReturnParameters":3944},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3950,"name":"Identifier","src":"15323:4:18"}],"id":3951,"name":"Return","src":"15316:11:18"}],"id":3952,"name":"Block","src":"15302:36:18"}],"id":3953,"name":"IfStatement","src":"15273:65:18"},{"attributes":{"assignments":[3955]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":3988,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3954,"name":"ElementaryTypeName","src":"15348:4:18"}],"id":3955,"name":"VariableDeclaration","src":"15348:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3956,"name":"Identifier","src":"15363:4:18"}],"id":3957,"name":"MemberAccess","src":"15363:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3958,"name":"Identifier","src":"15375:4:18"}],"id":3959,"name":"MemberAccess","src":"15375:9:18"}],"id":3960,"name":"BinaryOperation","src":"15363:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3940,"type":"struct strings.slice memory","value":"needle"},"id":3961,"name":"Identifier","src":"15387:6:18"}],"id":3962,"name":"MemberAccess","src":"15387:11:18"}],"id":3963,"name":"BinaryOperation","src":"15363:35:18"}],"id":3964,"name":"VariableDeclarationStatement","src":"15348:50:18"},{"attributes":{"assignments":[3966]},"children":[{"attributes":{"constant":false,"name":"equal","scope":3988,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3965,"name":"ElementaryTypeName","src":"15408:4:18"}],"id":3966,"name":"VariableDeclaration","src":"15408:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3967,"name":"Literal","src":"15421:4:18"}],"id":3968,"name":"VariableDeclarationStatement","src":"15408:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3955,"type":"uint256","value":"selfptr"},"id":3969,"name":"Identifier","src":"15439:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3940,"type":"struct strings.slice memory","value":"needle"},"id":3970,"name":"Identifier","src":"15450:6:18"}],"id":3971,"name":"MemberAccess","src":"15450:11:18"}],"id":3972,"name":"BinaryOperation","src":"15439:22:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":3940,"isOffset":false,"isSlot":false,"src":"15524:6:18","valueSize":1}},{"equal":{"declaration":3966,"isOffset":false,"isSlot":false,"src":"15606:5:18","valueSize":1}},{"needle":{"declaration":3940,"isOffset":false,"isSlot":false,"src":"15575:6:18","valueSize":1}},{"selfptr":{"declaration":3955,"isOffset":false,"isSlot":false,"src":"15628:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3973,"name":"InlineAssembly","src":"15477:212:18"}],"id":3974,"name":"Block","src":"15463:236:18"}],"id":3975,"name":"IfStatement","src":"15435:264:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3966,"type":"bool","value":"equal"},"id":3976,"name":"Identifier","src":"15713:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3977,"name":"Identifier","src":"15734:4:18"}],"id":3979,"name":"MemberAccess","src":"15734:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3940,"type":"struct strings.slice memory","value":"needle"},"id":3980,"name":"Identifier","src":"15747:6:18"}],"id":3981,"name":"MemberAccess","src":"15747:11:18"}],"id":3982,"name":"Assignment","src":"15734:24:18"}],"id":3983,"name":"ExpressionStatement","src":"15734:24:18"}],"id":3984,"name":"Block","src":"15720:49:18"}],"id":3985,"name":"IfStatement","src":"15709:60:18"},{"attributes":{"functionReturnParameters":3944},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"struct strings.slice memory","value":"self"},"id":3986,"name":"Identifier","src":"15786:4:18"}],"id":3987,"name":"Return","src":"15779:11:18"}],"id":3988,"name":"Block","src":"15263:534:18"}],"id":3989,"name":"FunctionDefinition","src":"15171:626:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3990,"name":"ElementaryTypeName","src":"15971:4:18"}],"id":3991,"name":"VariableDeclaration","src":"15971:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3992,"name":"ElementaryTypeName","src":"15985:4:18"}],"id":3993,"name":"VariableDeclaration","src":"15985:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3994,"name":"ElementaryTypeName","src":"15999:4:18"}],"id":3995,"name":"VariableDeclaration","src":"15999:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3996,"name":"ElementaryTypeName","src":"16015:4:18"}],"id":3997,"name":"VariableDeclaration","src":"16015:14:18"}],"id":3998,"name":"ParameterList","src":"15970:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3999,"name":"ElementaryTypeName","src":"16053:4:18"}],"id":4000,"name":"VariableDeclaration","src":"16053:4:18"}],"id":4001,"name":"ParameterList","src":"16052:6:18"},{"children":[{"attributes":{"assignments":[4003]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4002,"name":"ElementaryTypeName","src":"16069:4:18"}],"id":4003,"name":"VariableDeclaration","src":"16069:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"uint256","value":"selfptr"},"id":4004,"name":"Identifier","src":"16080:7:18"}],"id":4005,"name":"VariableDeclarationStatement","src":"16069:18:18"},{"attributes":{"assignments":[4007],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":4109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4006,"name":"ElementaryTypeName","src":"16097:4:18"}],"id":4007,"name":"VariableDeclaration","src":"16097:8:18"}],"id":4008,"name":"VariableDeclarationStatement","src":"16097:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4009,"name":"Identifier","src":"16120:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4010,"name":"Identifier","src":"16133:7:18"}],"id":4011,"name":"BinaryOperation","src":"16120:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4012,"name":"Identifier","src":"16160:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4013,"name":"Literal","src":"16173:2:18"}],"id":4014,"name":"BinaryOperation","src":"16160:15:18"},{"children":[{"attributes":{"assignments":[4016]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4015,"name":"ElementaryTypeName","src":"16195:7:18"}],"id":4016,"name":"VariableDeclaration","src":"16195:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4017,"name":"ElementaryTypeNameExpression","src":"16210:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4018,"name":"Literal","src":"16220:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4019,"name":"Literal","src":"16226:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4020,"name":"Literal","src":"16231:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4021,"name":"Identifier","src":"16236:9:18"}],"id":4022,"name":"BinaryOperation","src":"16231:14:18"}],"id":4023,"name":"TupleExpression","src":"16230:16:18"}],"id":4024,"name":"BinaryOperation","src":"16226:20:18"}],"id":4025,"name":"TupleExpression","src":"16225:22:18"}],"id":4026,"name":"BinaryOperation","src":"16220:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4027,"name":"Literal","src":"16250:1:18"}],"id":4028,"name":"BinaryOperation","src":"16220:31:18"}],"id":4029,"name":"TupleExpression","src":"16219:33:18"}],"id":4030,"name":"UnaryOperation","src":"16218:34:18"}],"id":4031,"name":"FunctionCall","src":"16210:43:18"}],"id":4032,"name":"VariableDeclarationStatement","src":"16195:58:18"},{"attributes":{"assignments":[4034],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":4068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4033,"name":"ElementaryTypeName","src":"16272:7:18"}],"id":4034,"name":"VariableDeclaration","src":"16272:18:18"}],"id":4035,"name":"VariableDeclarationStatement","src":"16272:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":4034,"isOffset":false,"isSlot":false,"src":"16319:10:18","valueSize":1}},{"needleptr":{"declaration":3997,"isOffset":false,"isSlot":false,"src":"16343:9:18","valueSize":1}},{"mask":{"declaration":4016,"isOffset":false,"isSlot":false,"src":"16355:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":4036,"name":"InlineAssembly","src":"16308:54:18"},{"attributes":{"assignments":[4038]},"children":[{"attributes":{"constant":false,"name":"end","scope":4068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4037,"name":"ElementaryTypeName","src":"16380:4:18"}],"id":4038,"name":"VariableDeclaration","src":"16380:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"uint256","value":"selfptr"},"id":4039,"name":"Identifier","src":"16391:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4040,"name":"Identifier","src":"16401:7:18"}],"id":4041,"name":"BinaryOperation","src":"16391:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4042,"name":"Identifier","src":"16411:9:18"}],"id":4043,"name":"BinaryOperation","src":"16391:29:18"}],"id":4044,"name":"VariableDeclarationStatement","src":"16380:40:18"},{"attributes":{"assignments":[4046],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":4068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4045,"name":"ElementaryTypeName","src":"16438:7:18"}],"id":4046,"name":"VariableDeclaration","src":"16438:15:18"}],"id":4047,"name":"VariableDeclarationStatement","src":"16438:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4046,"isOffset":false,"isSlot":false,"src":"16482:7:18","valueSize":1}},{"ptr":{"declaration":4003,"isOffset":false,"isSlot":false,"src":"16503:3:18","valueSize":1}},{"mask":{"declaration":4016,"isOffset":false,"isSlot":false,"src":"16509:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4048,"name":"InlineAssembly","src":"16471:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"bytes32","value":"ptrdata"},"id":4049,"name":"Identifier","src":"16541:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4034,"type":"bytes32","value":"needledata"},"id":4050,"name":"Identifier","src":"16552:10:18"}],"id":4051,"name":"BinaryOperation","src":"16541:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4052,"name":"Identifier","src":"16590:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4038,"type":"uint256","value":"end"},"id":4053,"name":"Identifier","src":"16597:3:18"}],"id":4054,"name":"BinaryOperation","src":"16590:10:18"},{"attributes":{"functionReturnParameters":4001},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"uint256","value":"selfptr"},"id":4055,"name":"Identifier","src":"16633:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4056,"name":"Identifier","src":"16643:7:18"}],"id":4057,"name":"BinaryOperation","src":"16633:17:18"}],"id":4058,"name":"Return","src":"16626:24:18"}],"id":4059,"name":"IfStatement","src":"16586:64:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4060,"name":"Identifier","src":"16672:3:18"}],"id":4061,"name":"UnaryOperation","src":"16672:5:18"}],"id":4062,"name":"ExpressionStatement","src":"16672:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4046,"isOffset":false,"isSlot":false,"src":"16710:7:18","valueSize":1}},{"ptr":{"declaration":4003,"isOffset":false,"isSlot":false,"src":"16731:3:18","valueSize":1}},{"mask":{"declaration":4016,"isOffset":false,"isSlot":false,"src":"16737:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4063,"name":"InlineAssembly","src":"16699:45:18"}],"id":4064,"name":"Block","src":"16564:198:18"}],"id":4065,"name":"WhileStatement","src":"16534:228:18"},{"attributes":{"functionReturnParameters":4001},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4066,"name":"Identifier","src":"16786:3:18"}],"id":4067,"name":"Return","src":"16779:10:18"}],"id":4068,"name":"Block","src":"16177:627:18"},{"children":[{"attributes":{"assignments":[4070],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":4101,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4069,"name":"ElementaryTypeName","src":"16877:7:18"}],"id":4070,"name":"VariableDeclaration","src":"16877:12:18"}],"id":4071,"name":"VariableDeclarationStatement","src":"16877:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":4070,"isOffset":false,"isSlot":false,"src":"16918:4:18","valueSize":1}},{"needleptr":{"declaration":3997,"isOffset":false,"isSlot":false,"src":"16936:9:18","valueSize":1}},{"needlelen":{"declaration":3995,"isOffset":false,"isSlot":false,"src":"16947:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":4072,"name":"InlineAssembly","src":"16907:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4007,"type":"uint256","value":"idx"},"id":4073,"name":"Identifier","src":"16982:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4074,"name":"Literal","src":"16988:1:18"}],"id":4075,"name":"Assignment","src":"16982:7:18"}],"id":4076,"name":"ExpressionStatement","src":"16982:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4007,"type":"uint256","value":"idx"},"id":4077,"name":"Identifier","src":"16991:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4078,"name":"Identifier","src":"16998:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3995,"type":"uint256","value":"needlelen"},"id":4079,"name":"Identifier","src":"17008:9:18"}],"id":4080,"name":"BinaryOperation","src":"16998:19:18"}],"id":4081,"name":"BinaryOperation","src":"16991:26:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4007,"type":"uint256","value":"idx"},"id":4082,"name":"Identifier","src":"17019:3:18"}],"id":4083,"name":"UnaryOperation","src":"17019:5:18"}],"id":4084,"name":"ExpressionStatement","src":"17019:5:18"},{"children":[{"attributes":{"assignments":[4086],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":4099,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4085,"name":"ElementaryTypeName","src":"17048:7:18"}],"id":4086,"name":"VariableDeclaration","src":"17048:16:18"}],"id":4087,"name":"VariableDeclarationStatement","src":"17048:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":4086,"isOffset":false,"isSlot":false,"src":"17097:8:18","valueSize":1}},{"ptr":{"declaration":4003,"isOffset":false,"isSlot":false,"src":"17119:3:18","valueSize":1}},{"needlelen":{"declaration":3995,"isOffset":false,"isSlot":false,"src":"17124:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":4088,"name":"InlineAssembly","src":"17086:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4070,"type":"bytes32","value":"hash"},"id":4089,"name":"Identifier","src":"17161:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4086,"type":"bytes32","value":"testHash"},"id":4090,"name":"Identifier","src":"17169:8:18"}],"id":4091,"name":"BinaryOperation","src":"17161:16:18"},{"attributes":{"functionReturnParameters":4001},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4092,"name":"Identifier","src":"17210:3:18"}],"id":4093,"name":"Return","src":"17203:10:18"}],"id":4094,"name":"IfStatement","src":"17157:56:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4003,"type":"uint256","value":"ptr"},"id":4095,"name":"Identifier","src":"17235:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4096,"name":"Literal","src":"17242:1:18"}],"id":4097,"name":"Assignment","src":"17235:8:18"}],"id":4098,"name":"ExpressionStatement","src":"17235:8:18"}],"id":4099,"name":"Block","src":"17026:236:18"}],"id":4100,"name":"ForStatement","src":"16977:285:18"}],"id":4101,"name":"Block","src":"16810:466:18"}],"id":4102,"name":"IfStatement","src":"16156:1120:18"}],"id":4103,"name":"Block","src":"16142:1144:18"}],"id":4104,"name":"IfStatement","src":"16116:1170:18"},{"attributes":{"functionReturnParameters":4001},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"uint256","value":"selfptr"},"id":4105,"name":"Identifier","src":"17302:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"uint256","value":"selflen"},"id":4106,"name":"Identifier","src":"17312:7:18"}],"id":4107,"name":"BinaryOperation","src":"17302:17:18"}],"id":4108,"name":"Return","src":"17295:24:18"}],"id":4109,"name":"Block","src":"16059:1267:18"}],"id":4110,"name":"FunctionDefinition","src":"15954:1372:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4111,"name":"ElementaryTypeName","src":"17497:4:18"}],"id":4112,"name":"VariableDeclaration","src":"17497:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4113,"name":"ElementaryTypeName","src":"17511:4:18"}],"id":4114,"name":"VariableDeclaration","src":"17511:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4115,"name":"ElementaryTypeName","src":"17525:4:18"}],"id":4116,"name":"VariableDeclaration","src":"17525:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4117,"name":"ElementaryTypeName","src":"17541:4:18"}],"id":4118,"name":"VariableDeclaration","src":"17541:14:18"}],"id":4119,"name":"ParameterList","src":"17496:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4120,"name":"ElementaryTypeName","src":"17579:4:18"}],"id":4121,"name":"VariableDeclaration","src":"17579:4:18"}],"id":4122,"name":"ParameterList","src":"17578:6:18"},{"children":[{"attributes":{"assignments":[4124],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4123,"name":"ElementaryTypeName","src":"17595:4:18"}],"id":4124,"name":"VariableDeclaration","src":"17595:8:18"}],"id":4125,"name":"VariableDeclarationStatement","src":"17595:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4126,"name":"Identifier","src":"17618:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"uint256","value":"selflen"},"id":4127,"name":"Identifier","src":"17631:7:18"}],"id":4128,"name":"BinaryOperation","src":"17618:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4129,"name":"Identifier","src":"17658:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4130,"name":"Literal","src":"17671:2:18"}],"id":4131,"name":"BinaryOperation","src":"17658:15:18"},{"children":[{"attributes":{"assignments":[4133]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4132,"name":"ElementaryTypeName","src":"17693:7:18"}],"id":4133,"name":"VariableDeclaration","src":"17693:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4134,"name":"ElementaryTypeNameExpression","src":"17708:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4135,"name":"Literal","src":"17718:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4136,"name":"Literal","src":"17724:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4137,"name":"Literal","src":"17729:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4138,"name":"Identifier","src":"17734:9:18"}],"id":4139,"name":"BinaryOperation","src":"17729:14:18"}],"id":4140,"name":"TupleExpression","src":"17728:16:18"}],"id":4141,"name":"BinaryOperation","src":"17724:20:18"}],"id":4142,"name":"TupleExpression","src":"17723:22:18"}],"id":4143,"name":"BinaryOperation","src":"17718:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4144,"name":"Literal","src":"17748:1:18"}],"id":4145,"name":"BinaryOperation","src":"17718:31:18"}],"id":4146,"name":"TupleExpression","src":"17717:33:18"}],"id":4147,"name":"UnaryOperation","src":"17716:34:18"}],"id":4148,"name":"FunctionCall","src":"17708:43:18"}],"id":4149,"name":"VariableDeclarationStatement","src":"17693:58:18"},{"attributes":{"assignments":[4151],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":4185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4150,"name":"ElementaryTypeName","src":"17770:7:18"}],"id":4151,"name":"VariableDeclaration","src":"17770:18:18"}],"id":4152,"name":"VariableDeclarationStatement","src":"17770:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":4151,"isOffset":false,"isSlot":false,"src":"17817:10:18","valueSize":1}},{"needleptr":{"declaration":4118,"isOffset":false,"isSlot":false,"src":"17841:9:18","valueSize":1}},{"mask":{"declaration":4133,"isOffset":false,"isSlot":false,"src":"17853:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":4153,"name":"InlineAssembly","src":"17806:54:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4154,"name":"Identifier","src":"17878:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4155,"name":"Identifier","src":"17884:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"uint256","value":"selflen"},"id":4156,"name":"Identifier","src":"17894:7:18"}],"id":4157,"name":"BinaryOperation","src":"17884:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4158,"name":"Identifier","src":"17904:9:18"}],"id":4159,"name":"BinaryOperation","src":"17884:29:18"}],"id":4160,"name":"Assignment","src":"17878:35:18"}],"id":4161,"name":"ExpressionStatement","src":"17878:35:18"},{"attributes":{"assignments":[4163],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":4185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4162,"name":"ElementaryTypeName","src":"17931:7:18"}],"id":4163,"name":"VariableDeclaration","src":"17931:15:18"}],"id":4164,"name":"VariableDeclarationStatement","src":"17931:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4163,"isOffset":false,"isSlot":false,"src":"17975:7:18","valueSize":1}},{"ptr":{"declaration":4124,"isOffset":false,"isSlot":false,"src":"17996:3:18","valueSize":1}},{"mask":{"declaration":4133,"isOffset":false,"isSlot":false,"src":"18002:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4165,"name":"InlineAssembly","src":"17964:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4163,"type":"bytes32","value":"ptrdata"},"id":4166,"name":"Identifier","src":"18034:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4151,"type":"bytes32","value":"needledata"},"id":4167,"name":"Identifier","src":"18045:10:18"}],"id":4168,"name":"BinaryOperation","src":"18034:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4169,"name":"Identifier","src":"18083:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4170,"name":"Identifier","src":"18090:7:18"}],"id":4171,"name":"BinaryOperation","src":"18083:14:18"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4172,"name":"Identifier","src":"18130:7:18"}],"id":4173,"name":"Return","src":"18123:14:18"}],"id":4174,"name":"IfStatement","src":"18079:58:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4175,"name":"Identifier","src":"18159:3:18"}],"id":4176,"name":"UnaryOperation","src":"18159:5:18"}],"id":4177,"name":"ExpressionStatement","src":"18159:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4163,"isOffset":false,"isSlot":false,"src":"18197:7:18","valueSize":1}},{"ptr":{"declaration":4124,"isOffset":false,"isSlot":false,"src":"18218:3:18","valueSize":1}},{"mask":{"declaration":4133,"isOffset":false,"isSlot":false,"src":"18224:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4178,"name":"InlineAssembly","src":"18186:45:18"}],"id":4179,"name":"Block","src":"18057:192:18"}],"id":4180,"name":"WhileStatement","src":"18027:222:18"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4181,"name":"Identifier","src":"18273:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4182,"name":"Identifier","src":"18279:9:18"}],"id":4183,"name":"BinaryOperation","src":"18273:15:18"}],"id":4184,"name":"Return","src":"18266:22:18"}],"id":4185,"name":"Block","src":"17675:628:18"},{"children":[{"attributes":{"assignments":[4187],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":4220,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4186,"name":"ElementaryTypeName","src":"18376:7:18"}],"id":4187,"name":"VariableDeclaration","src":"18376:12:18"}],"id":4188,"name":"VariableDeclarationStatement","src":"18376:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":4187,"isOffset":false,"isSlot":false,"src":"18417:4:18","valueSize":1}},{"needleptr":{"declaration":4118,"isOffset":false,"isSlot":false,"src":"18435:9:18","valueSize":1}},{"needlelen":{"declaration":4116,"isOffset":false,"isSlot":false,"src":"18446:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":4189,"name":"InlineAssembly","src":"18406:52:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4190,"name":"Identifier","src":"18475:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4191,"name":"Identifier","src":"18481:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"uint256","value":"selflen"},"id":4192,"name":"Identifier","src":"18492:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4193,"name":"Identifier","src":"18502:9:18"}],"id":4194,"name":"BinaryOperation","src":"18492:19:18"}],"id":4195,"name":"TupleExpression","src":"18491:21:18"}],"id":4196,"name":"BinaryOperation","src":"18481:31:18"}],"id":4197,"name":"Assignment","src":"18475:37:18"}],"id":4198,"name":"ExpressionStatement","src":"18475:37:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4199,"name":"Identifier","src":"18537:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4200,"name":"Identifier","src":"18544:7:18"}],"id":4201,"name":"BinaryOperation","src":"18537:14:18"},{"children":[{"attributes":{"assignments":[4203],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":4218,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4202,"name":"ElementaryTypeName","src":"18575:7:18"}],"id":4203,"name":"VariableDeclaration","src":"18575:16:18"}],"id":4204,"name":"VariableDeclarationStatement","src":"18575:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":4203,"isOffset":false,"isSlot":false,"src":"18624:8:18","valueSize":1}},{"ptr":{"declaration":4124,"isOffset":false,"isSlot":false,"src":"18646:3:18","valueSize":1}},{"needlelen":{"declaration":4116,"isOffset":false,"isSlot":false,"src":"18651:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":4205,"name":"InlineAssembly","src":"18613:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4187,"type":"bytes32","value":"hash"},"id":4206,"name":"Identifier","src":"18688:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4203,"type":"bytes32","value":"testHash"},"id":4207,"name":"Identifier","src":"18696:8:18"}],"id":4208,"name":"BinaryOperation","src":"18688:16:18"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4209,"name":"Identifier","src":"18737:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"uint256","value":"needlelen"},"id":4210,"name":"Identifier","src":"18743:9:18"}],"id":4211,"name":"BinaryOperation","src":"18737:15:18"}],"id":4212,"name":"Return","src":"18730:22:18"}],"id":4213,"name":"IfStatement","src":"18684:68:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4124,"type":"uint256","value":"ptr"},"id":4214,"name":"Identifier","src":"18774:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4215,"name":"Literal","src":"18781:1:18"}],"id":4216,"name":"Assignment","src":"18774:8:18"}],"id":4217,"name":"ExpressionStatement","src":"18774:8:18"}],"id":4218,"name":"Block","src":"18553:248:18"}],"id":4219,"name":"WhileStatement","src":"18530:271:18"}],"id":4220,"name":"Block","src":"18309:506:18"}],"id":4221,"name":"IfStatement","src":"17654:1161:18"}],"id":4222,"name":"Block","src":"17640:1185:18"}],"id":4223,"name":"IfStatement","src":"17614:1211:18"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4114,"type":"uint256","value":"selfptr"},"id":4224,"name":"Identifier","src":"18841:7:18"}],"id":4225,"name":"Return","src":"18834:14:18"}],"id":4226,"name":"Block","src":"17585:1270:18"}],"id":4227,"name":"FunctionDefinition","src":"17479:1376:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4228,"name":"UserDefinedTypeName","src":"19205:5:18"}],"id":4229,"name":"VariableDeclaration","src":"19205:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4230,"name":"UserDefinedTypeName","src":"19224:5:18"}],"id":4231,"name":"VariableDeclaration","src":"19224:19:18"}],"id":4232,"name":"ParameterList","src":"19204:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4233,"name":"UserDefinedTypeName","src":"19268:5:18"}],"id":4234,"name":"VariableDeclaration","src":"19268:12:18"}],"id":4235,"name":"ParameterList","src":"19267:14:18"},{"children":[{"attributes":{"assignments":[4237]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4266,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4236,"name":"ElementaryTypeName","src":"19292:4:18"}],"id":4237,"name":"VariableDeclaration","src":"19292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4238,"name":"Identifier","src":"19303:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4239,"name":"Identifier","src":"19311:4:18"}],"id":4240,"name":"MemberAccess","src":"19311:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4241,"name":"Identifier","src":"19322:4:18"}],"id":4242,"name":"MemberAccess","src":"19322:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4231,"type":"struct strings.slice memory","value":"needle"},"id":4243,"name":"Identifier","src":"19333:6:18"}],"id":4244,"name":"MemberAccess","src":"19333:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4231,"type":"struct strings.slice memory","value":"needle"},"id":4245,"name":"Identifier","src":"19346:6:18"}],"id":4246,"name":"MemberAccess","src":"19346:11:18"}],"id":4247,"name":"FunctionCall","src":"19303:55:18"}],"id":4248,"name":"VariableDeclarationStatement","src":"19292:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4249,"name":"Identifier","src":"19368:4:18"}],"id":4251,"name":"MemberAccess","src":"19368:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4237,"type":"uint256","value":"ptr"},"id":4252,"name":"Identifier","src":"19381:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4253,"name":"Identifier","src":"19387:4:18"}],"id":4254,"name":"MemberAccess","src":"19387:9:18"}],"id":4255,"name":"BinaryOperation","src":"19381:15:18"}],"id":4256,"name":"Assignment","src":"19368:28:18"}],"id":4257,"name":"ExpressionStatement","src":"19368:28:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4258,"name":"Identifier","src":"19406:4:18"}],"id":4260,"name":"MemberAccess","src":"19406:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4237,"type":"uint256","value":"ptr"},"id":4261,"name":"Identifier","src":"19418:3:18"}],"id":4262,"name":"Assignment","src":"19406:15:18"}],"id":4263,"name":"ExpressionStatement","src":"19406:15:18"},{"attributes":{"functionReturnParameters":4235},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"struct strings.slice memory","value":"self"},"id":4264,"name":"Identifier","src":"19438:4:18"}],"id":4265,"name":"Return","src":"19431:11:18"}],"id":4266,"name":"Block","src":"19282:167:18"}],"id":4267,"name":"FunctionDefinition","src":"19191:258:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4301,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4268,"name":"UserDefinedTypeName","src":"19823:5:18"}],"id":4269,"name":"VariableDeclaration","src":"19823:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4301,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4270,"name":"UserDefinedTypeName","src":"19842:5:18"}],"id":4271,"name":"VariableDeclaration","src":"19842:19:18"}],"id":4272,"name":"ParameterList","src":"19822:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4301,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4273,"name":"UserDefinedTypeName","src":"19886:5:18"}],"id":4274,"name":"VariableDeclaration","src":"19886:12:18"}],"id":4275,"name":"ParameterList","src":"19885:14:18"},{"children":[{"attributes":{"assignments":[4277]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4276,"name":"ElementaryTypeName","src":"19910:4:18"}],"id":4277,"name":"VariableDeclaration","src":"19910:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4278,"name":"Identifier","src":"19921:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4279,"name":"Identifier","src":"19930:4:18"}],"id":4280,"name":"MemberAccess","src":"19930:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4281,"name":"Identifier","src":"19941:4:18"}],"id":4282,"name":"MemberAccess","src":"19941:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4271,"type":"struct strings.slice memory","value":"needle"},"id":4283,"name":"Identifier","src":"19952:6:18"}],"id":4284,"name":"MemberAccess","src":"19952:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4271,"type":"struct strings.slice memory","value":"needle"},"id":4285,"name":"Identifier","src":"19965:6:18"}],"id":4286,"name":"MemberAccess","src":"19965:11:18"}],"id":4287,"name":"FunctionCall","src":"19921:56:18"}],"id":4288,"name":"VariableDeclarationStatement","src":"19910:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4289,"name":"Identifier","src":"19987:4:18"}],"id":4291,"name":"MemberAccess","src":"19987:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4277,"type":"uint256","value":"ptr"},"id":4292,"name":"Identifier","src":"19999:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4293,"name":"Identifier","src":"20005:4:18"}],"id":4294,"name":"MemberAccess","src":"20005:9:18"}],"id":4295,"name":"BinaryOperation","src":"19999:15:18"}],"id":4296,"name":"Assignment","src":"19987:27:18"}],"id":4297,"name":"ExpressionStatement","src":"19987:27:18"},{"attributes":{"functionReturnParameters":4275},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"struct strings.slice memory","value":"self"},"id":4298,"name":"Identifier","src":"20031:4:18"}],"id":4299,"name":"Return","src":"20024:11:18"}],"id":4300,"name":"Block","src":"19900:142:18"}],"id":4301,"name":"FunctionDefinition","src":"19808:234:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4379,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4302,"name":"UserDefinedTypeName","src":"20563:5:18"}],"id":4303,"name":"VariableDeclaration","src":"20563:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4379,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4304,"name":"UserDefinedTypeName","src":"20582:5:18"}],"id":4305,"name":"VariableDeclaration","src":"20582:19:18"},{"attributes":{"constant":false,"name":"token","scope":4379,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4306,"name":"UserDefinedTypeName","src":"20603:5:18"}],"id":4307,"name":"VariableDeclaration","src":"20603:18:18"}],"id":4308,"name":"ParameterList","src":"20562:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4379,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4309,"name":"UserDefinedTypeName","src":"20646:5:18"}],"id":4310,"name":"VariableDeclaration","src":"20646:12:18"}],"id":4311,"name":"ParameterList","src":"20645:14:18"},{"children":[{"attributes":{"assignments":[4313]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4378,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4312,"name":"ElementaryTypeName","src":"20670:4:18"}],"id":4313,"name":"VariableDeclaration","src":"20670:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4314,"name":"Identifier","src":"20681:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4315,"name":"Identifier","src":"20689:4:18"}],"id":4316,"name":"MemberAccess","src":"20689:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4317,"name":"Identifier","src":"20700:4:18"}],"id":4318,"name":"MemberAccess","src":"20700:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"struct strings.slice memory","value":"needle"},"id":4319,"name":"Identifier","src":"20711:6:18"}],"id":4320,"name":"MemberAccess","src":"20711:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"struct strings.slice memory","value":"needle"},"id":4321,"name":"Identifier","src":"20724:6:18"}],"id":4322,"name":"MemberAccess","src":"20724:11:18"}],"id":4323,"name":"FunctionCall","src":"20681:55:18"}],"id":4324,"name":"VariableDeclarationStatement","src":"20670:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4307,"type":"struct strings.slice memory","value":"token"},"id":4325,"name":"Identifier","src":"20746:5:18"}],"id":4327,"name":"MemberAccess","src":"20746:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4328,"name":"Identifier","src":"20759:4:18"}],"id":4329,"name":"MemberAccess","src":"20759:9:18"}],"id":4330,"name":"Assignment","src":"20746:22:18"}],"id":4331,"name":"ExpressionStatement","src":"20746:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4307,"type":"struct strings.slice memory","value":"token"},"id":4332,"name":"Identifier","src":"20778:5:18"}],"id":4334,"name":"MemberAccess","src":"20778:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4313,"type":"uint256","value":"ptr"},"id":4335,"name":"Identifier","src":"20791:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4336,"name":"Identifier","src":"20797:4:18"}],"id":4337,"name":"MemberAccess","src":"20797:9:18"}],"id":4338,"name":"BinaryOperation","src":"20791:15:18"}],"id":4339,"name":"Assignment","src":"20778:28:18"}],"id":4340,"name":"ExpressionStatement","src":"20778:28:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4313,"type":"uint256","value":"ptr"},"id":4341,"name":"Identifier","src":"20820:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4342,"name":"Identifier","src":"20827:4:18"}],"id":4343,"name":"MemberAccess","src":"20827:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4344,"name":"Identifier","src":"20839:4:18"}],"id":4345,"name":"MemberAccess","src":"20839:9:18"}],"id":4346,"name":"BinaryOperation","src":"20827:21:18"}],"id":4347,"name":"BinaryOperation","src":"20820:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4348,"name":"Identifier","src":"20889:4:18"}],"id":4350,"name":"MemberAccess","src":"20889:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4351,"name":"Literal","src":"20901:1:18"}],"id":4352,"name":"Assignment","src":"20889:13:18"}],"id":4353,"name":"ExpressionStatement","src":"20889:13:18"}],"id":4354,"name":"Block","src":"20850:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4355,"name":"Identifier","src":"20933:4:18"}],"id":4357,"name":"MemberAccess","src":"20933:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4307,"type":"struct strings.slice memory","value":"token"},"id":4358,"name":"Identifier","src":"20946:5:18"}],"id":4359,"name":"MemberAccess","src":"20946:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"struct strings.slice memory","value":"needle"},"id":4360,"name":"Identifier","src":"20959:6:18"}],"id":4361,"name":"MemberAccess","src":"20959:11:18"}],"id":4362,"name":"BinaryOperation","src":"20946:24:18"}],"id":4363,"name":"Assignment","src":"20933:37:18"}],"id":4364,"name":"ExpressionStatement","src":"20933:37:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4303,"type":"struct strings.slice memory","value":"self"},"id":4365,"name":"Identifier","src":"20984:4:18"}],"id":4367,"name":"MemberAccess","src":"20984:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4313,"type":"uint256","value":"ptr"},"id":4368,"name":"Identifier","src":"20996:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"struct strings.slice memory","value":"needle"},"id":4369,"name":"Identifier","src":"21002:6:18"}],"id":4370,"name":"MemberAccess","src":"21002:11:18"}],"id":4371,"name":"BinaryOperation","src":"20996:17:18"}],"id":4372,"name":"Assignment","src":"20984:29:18"}],"id":4373,"name":"ExpressionStatement","src":"20984:29:18"}],"id":4374,"name":"Block","src":"20919:105:18"}],"id":4375,"name":"IfStatement","src":"20816:208:18"},{"attributes":{"functionReturnParameters":4311},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4307,"type":"struct strings.slice memory","value":"token"},"id":4376,"name":"Identifier","src":"21040:5:18"}],"id":4377,"name":"Return","src":"21033:12:18"}],"id":4378,"name":"Block","src":"20660:392:18"}],"id":4379,"name":"FunctionDefinition","src":"20548:504:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4395,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4380,"name":"UserDefinedTypeName","src":"21538:5:18"}],"id":4381,"name":"VariableDeclaration","src":"21538:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4395,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4382,"name":"UserDefinedTypeName","src":"21557:5:18"}],"id":4383,"name":"VariableDeclaration","src":"21557:19:18"}],"id":4384,"name":"ParameterList","src":"21537:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":4395,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4385,"name":"UserDefinedTypeName","src":"21601:5:18"}],"id":4386,"name":"VariableDeclaration","src":"21601:18:18"}],"id":4387,"name":"ParameterList","src":"21600:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[4379,4395],"referencedDeclaration":4379,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":4388,"name":"Identifier","src":"21631:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4381,"type":"struct strings.slice memory","value":"self"},"id":4389,"name":"Identifier","src":"21637:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4383,"type":"struct strings.slice memory","value":"needle"},"id":4390,"name":"Identifier","src":"21643:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4386,"type":"struct strings.slice memory","value":"token"},"id":4391,"name":"Identifier","src":"21651:5:18"}],"id":4392,"name":"FunctionCall","src":"21631:26:18"}],"id":4393,"name":"ExpressionStatement","src":"21631:26:18"}],"id":4394,"name":"Block","src":"21621:43:18"}],"id":4395,"name":"FunctionDefinition","src":"21523:141:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4464,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4396,"name":"UserDefinedTypeName","src":"22185:5:18"}],"id":4397,"name":"VariableDeclaration","src":"22185:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4464,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4398,"name":"UserDefinedTypeName","src":"22204:5:18"}],"id":4399,"name":"VariableDeclaration","src":"22204:19:18"},{"attributes":{"constant":false,"name":"token","scope":4464,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4400,"name":"UserDefinedTypeName","src":"22225:5:18"}],"id":4401,"name":"VariableDeclaration","src":"22225:18:18"}],"id":4402,"name":"ParameterList","src":"22184:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4464,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4403,"name":"UserDefinedTypeName","src":"22268:5:18"}],"id":4404,"name":"VariableDeclaration","src":"22268:12:18"}],"id":4405,"name":"ParameterList","src":"22267:14:18"},{"children":[{"attributes":{"assignments":[4407]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4463,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4406,"name":"ElementaryTypeName","src":"22292:4:18"}],"id":4407,"name":"VariableDeclaration","src":"22292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4408,"name":"Identifier","src":"22303:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4409,"name":"Identifier","src":"22312:4:18"}],"id":4410,"name":"MemberAccess","src":"22312:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4411,"name":"Identifier","src":"22323:4:18"}],"id":4412,"name":"MemberAccess","src":"22323:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4399,"type":"struct strings.slice memory","value":"needle"},"id":4413,"name":"Identifier","src":"22334:6:18"}],"id":4414,"name":"MemberAccess","src":"22334:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4399,"type":"struct strings.slice memory","value":"needle"},"id":4415,"name":"Identifier","src":"22347:6:18"}],"id":4416,"name":"MemberAccess","src":"22347:11:18"}],"id":4417,"name":"FunctionCall","src":"22303:56:18"}],"id":4418,"name":"VariableDeclarationStatement","src":"22292:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4401,"type":"struct strings.slice memory","value":"token"},"id":4419,"name":"Identifier","src":"22369:5:18"}],"id":4421,"name":"MemberAccess","src":"22369:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4407,"type":"uint256","value":"ptr"},"id":4422,"name":"Identifier","src":"22382:3:18"}],"id":4423,"name":"Assignment","src":"22369:16:18"}],"id":4424,"name":"ExpressionStatement","src":"22369:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4401,"type":"struct strings.slice memory","value":"token"},"id":4425,"name":"Identifier","src":"22395:5:18"}],"id":4427,"name":"MemberAccess","src":"22395:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4428,"name":"Identifier","src":"22408:4:18"}],"id":4429,"name":"MemberAccess","src":"22408:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4407,"type":"uint256","value":"ptr"},"id":4430,"name":"Identifier","src":"22421:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4431,"name":"Identifier","src":"22427:4:18"}],"id":4432,"name":"MemberAccess","src":"22427:9:18"}],"id":4433,"name":"BinaryOperation","src":"22421:15:18"}],"id":4434,"name":"TupleExpression","src":"22420:17:18"}],"id":4435,"name":"BinaryOperation","src":"22408:29:18"}],"id":4436,"name":"Assignment","src":"22395:42:18"}],"id":4437,"name":"ExpressionStatement","src":"22395:42:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4407,"type":"uint256","value":"ptr"},"id":4438,"name":"Identifier","src":"22451:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4439,"name":"Identifier","src":"22458:4:18"}],"id":4440,"name":"MemberAccess","src":"22458:9:18"}],"id":4441,"name":"BinaryOperation","src":"22451:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4442,"name":"Identifier","src":"22508:4:18"}],"id":4444,"name":"MemberAccess","src":"22508:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4445,"name":"Literal","src":"22520:1:18"}],"id":4446,"name":"Assignment","src":"22508:13:18"}],"id":4447,"name":"ExpressionStatement","src":"22508:13:18"}],"id":4448,"name":"Block","src":"22469:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4397,"type":"struct strings.slice memory","value":"self"},"id":4449,"name":"Identifier","src":"22552:4:18"}],"id":4451,"name":"MemberAccess","src":"22552:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4401,"type":"struct strings.slice memory","value":"token"},"id":4452,"name":"Identifier","src":"22565:5:18"}],"id":4453,"name":"MemberAccess","src":"22565:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4399,"type":"struct strings.slice memory","value":"needle"},"id":4454,"name":"Identifier","src":"22578:6:18"}],"id":4455,"name":"MemberAccess","src":"22578:11:18"}],"id":4456,"name":"BinaryOperation","src":"22565:24:18"}],"id":4457,"name":"Assignment","src":"22552:37:18"}],"id":4458,"name":"ExpressionStatement","src":"22552:37:18"}],"id":4459,"name":"Block","src":"22538:62:18"}],"id":4460,"name":"IfStatement","src":"22447:153:18"},{"attributes":{"functionReturnParameters":4405},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4401,"type":"struct strings.slice memory","value":"token"},"id":4461,"name":"Identifier","src":"22616:5:18"}],"id":4462,"name":"Return","src":"22609:12:18"}],"id":4463,"name":"Block","src":"22282:346:18"}],"id":4464,"name":"FunctionDefinition","src":"22169:459:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4465,"name":"UserDefinedTypeName","src":"23113:5:18"}],"id":4466,"name":"VariableDeclaration","src":"23113:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4467,"name":"UserDefinedTypeName","src":"23132:5:18"}],"id":4468,"name":"VariableDeclaration","src":"23132:19:18"}],"id":4469,"name":"ParameterList","src":"23112:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":4480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4470,"name":"UserDefinedTypeName","src":"23176:5:18"}],"id":4471,"name":"VariableDeclaration","src":"23176:18:18"}],"id":4472,"name":"ParameterList","src":"23175:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3026_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[4464,4480],"referencedDeclaration":4464,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":4473,"name":"Identifier","src":"23206:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4466,"type":"struct strings.slice memory","value":"self"},"id":4474,"name":"Identifier","src":"23213:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4468,"type":"struct strings.slice memory","value":"needle"},"id":4475,"name":"Identifier","src":"23219:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4471,"type":"struct strings.slice memory","value":"token"},"id":4476,"name":"Identifier","src":"23227:5:18"}],"id":4477,"name":"FunctionCall","src":"23206:27:18"}],"id":4478,"name":"ExpressionStatement","src":"23206:27:18"}],"id":4479,"name":"Block","src":"23196:44:18"}],"id":4480,"name":"FunctionDefinition","src":"23097:143:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4539,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4481,"name":"UserDefinedTypeName","src":"23524:5:18"}],"id":4482,"name":"VariableDeclaration","src":"23524:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4539,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4483,"name":"UserDefinedTypeName","src":"23543:5:18"}],"id":4484,"name":"VariableDeclaration","src":"23543:19:18"}],"id":4485,"name":"ParameterList","src":"23523:40:18"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":4539,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4486,"name":"ElementaryTypeName","src":"23587:4:18"}],"id":4487,"name":"VariableDeclaration","src":"23587:8:18"}],"id":4488,"name":"ParameterList","src":"23586:10:18"},{"children":[{"attributes":{"assignments":[4490]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4538,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4489,"name":"ElementaryTypeName","src":"23607:4:18"}],"id":4490,"name":"VariableDeclaration","src":"23607:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4491,"name":"Identifier","src":"23618:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4492,"name":"Identifier","src":"23626:4:18"}],"id":4493,"name":"MemberAccess","src":"23626:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4494,"name":"Identifier","src":"23637:4:18"}],"id":4495,"name":"MemberAccess","src":"23637:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4496,"name":"Identifier","src":"23648:6:18"}],"id":4497,"name":"MemberAccess","src":"23648:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4498,"name":"Identifier","src":"23661:6:18"}],"id":4499,"name":"MemberAccess","src":"23661:11:18"}],"id":4500,"name":"FunctionCall","src":"23618:55:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4501,"name":"Identifier","src":"23676:6:18"}],"id":4502,"name":"MemberAccess","src":"23676:11:18"}],"id":4503,"name":"BinaryOperation","src":"23618:69:18"}],"id":4504,"name":"VariableDeclarationStatement","src":"23607:80:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4490,"type":"uint256","value":"ptr"},"id":4505,"name":"Identifier","src":"23704:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4506,"name":"Identifier","src":"23711:4:18"}],"id":4507,"name":"MemberAccess","src":"23711:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4508,"name":"Identifier","src":"23723:4:18"}],"id":4509,"name":"MemberAccess","src":"23723:9:18"}],"id":4510,"name":"BinaryOperation","src":"23711:21:18"}],"id":4511,"name":"BinaryOperation","src":"23704:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4487,"type":"uint256","value":"cnt"},"id":4512,"name":"Identifier","src":"23748:3:18"}],"id":4513,"name":"UnaryOperation","src":"23748:5:18"}],"id":4514,"name":"ExpressionStatement","src":"23748:5:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4490,"type":"uint256","value":"ptr"},"id":4515,"name":"Identifier","src":"23767:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4516,"name":"Identifier","src":"23773:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4517,"name":"Identifier","src":"23781:4:18"}],"id":4518,"name":"MemberAccess","src":"23781:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4490,"type":"uint256","value":"ptr"},"id":4519,"name":"Identifier","src":"23794:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"struct strings.slice memory","value":"self"},"id":4520,"name":"Identifier","src":"23800:4:18"}],"id":4521,"name":"MemberAccess","src":"23800:9:18"}],"id":4522,"name":"BinaryOperation","src":"23794:15:18"}],"id":4523,"name":"TupleExpression","src":"23793:17:18"}],"id":4524,"name":"BinaryOperation","src":"23781:29:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4490,"type":"uint256","value":"ptr"},"id":4525,"name":"Identifier","src":"23812:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4526,"name":"Identifier","src":"23817:6:18"}],"id":4527,"name":"MemberAccess","src":"23817:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4528,"name":"Identifier","src":"23830:6:18"}],"id":4529,"name":"MemberAccess","src":"23830:11:18"}],"id":4530,"name":"FunctionCall","src":"23773:69:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"struct strings.slice memory","value":"needle"},"id":4531,"name":"Identifier","src":"23845:6:18"}],"id":4532,"name":"MemberAccess","src":"23845:11:18"}],"id":4533,"name":"BinaryOperation","src":"23773:83:18"}],"id":4534,"name":"Assignment","src":"23767:89:18"}],"id":4535,"name":"ExpressionStatement","src":"23767:89:18"}],"id":4536,"name":"Block","src":"23734:133:18"}],"id":4537,"name":"WhileStatement","src":"23697:170:18"}],"id":4538,"name":"Block","src":"23597:276:18"}],"id":4539,"name":"FunctionDefinition","src":"23509:364:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4563,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4540,"name":"UserDefinedTypeName","src":"24130:5:18"}],"id":4541,"name":"VariableDeclaration","src":"24130:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4563,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4542,"name":"UserDefinedTypeName","src":"24149:5:18"}],"id":4543,"name":"VariableDeclaration","src":"24149:19:18"}],"id":4544,"name":"ParameterList","src":"24129:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4563,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4545,"name":"ElementaryTypeName","src":"24193:4:18"}],"id":4546,"name":"VariableDeclaration","src":"24193:4:18"}],"id":4547,"name":"ParameterList","src":"24192:6:18"},{"children":[{"attributes":{"functionReturnParameters":4547},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4548,"name":"Identifier","src":"24216:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4541,"type":"struct strings.slice memory","value":"self"},"id":4549,"name":"Identifier","src":"24225:4:18"}],"id":4550,"name":"MemberAccess","src":"24225:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4541,"type":"struct strings.slice memory","value":"self"},"id":4551,"name":"Identifier","src":"24236:4:18"}],"id":4552,"name":"MemberAccess","src":"24236:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"struct strings.slice memory","value":"needle"},"id":4553,"name":"Identifier","src":"24247:6:18"}],"id":4554,"name":"MemberAccess","src":"24247:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"struct strings.slice memory","value":"needle"},"id":4555,"name":"Identifier","src":"24260:6:18"}],"id":4556,"name":"MemberAccess","src":"24260:11:18"}],"id":4557,"name":"FunctionCall","src":"24216:56:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4541,"type":"struct strings.slice memory","value":"self"},"id":4558,"name":"Identifier","src":"24276:4:18"}],"id":4559,"name":"MemberAccess","src":"24276:9:18"}],"id":4560,"name":"BinaryOperation","src":"24216:69:18"}],"id":4561,"name":"Return","src":"24209:76:18"}],"id":4562,"name":"Block","src":"24199:93:18"}],"id":4563,"name":"FunctionDefinition","src":"24112:180:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4609,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4564,"name":"UserDefinedTypeName","src":"24595:5:18"}],"id":4565,"name":"VariableDeclaration","src":"24595:17:18"},{"attributes":{"constant":false,"name":"other","scope":4609,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4566,"name":"UserDefinedTypeName","src":"24614:5:18"}],"id":4567,"name":"VariableDeclaration","src":"24614:18:18"}],"id":4568,"name":"ParameterList","src":"24594:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4609,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4569,"name":"ElementaryTypeName","src":"24657:6:18"}],"id":4570,"name":"VariableDeclaration","src":"24657:13:18"}],"id":4571,"name":"ParameterList","src":"24656:15:18"},{"children":[{"attributes":{"assignments":[4573]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4608,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4572,"name":"ElementaryTypeName","src":"24682:6:18"}],"id":4573,"name":"VariableDeclaration","src":"24682:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":4574,"name":"ElementaryTypeName","src":"24706:6:18"}],"id":4575,"name":"NewExpression","src":"24702:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4565,"type":"struct strings.slice memory","value":"self"},"id":4576,"name":"Identifier","src":"24713:4:18"}],"id":4577,"name":"MemberAccess","src":"24713:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"struct strings.slice memory","value":"other"},"id":4578,"name":"Identifier","src":"24725:5:18"}],"id":4579,"name":"MemberAccess","src":"24725:10:18"}],"id":4580,"name":"BinaryOperation","src":"24713:22:18"}],"id":4581,"name":"FunctionCall","src":"24702:34:18"}],"id":4582,"name":"VariableDeclarationStatement","src":"24682:54:18"},{"attributes":{"assignments":[4584],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":4608,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4583,"name":"ElementaryTypeName","src":"24746:4:18"}],"id":4584,"name":"VariableDeclaration","src":"24746:11:18"}],"id":4585,"name":"VariableDeclarationStatement","src":"24746:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":4584,"isOffset":false,"isSlot":false,"src":"24778:6:18","valueSize":1}},{"ret":{"declaration":4573,"isOffset":false,"isSlot":false,"src":"24792:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":4586,"name":"InlineAssembly","src":"24767:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4587,"name":"Identifier","src":"24811:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4584,"type":"uint256","value":"retptr"},"id":4588,"name":"Identifier","src":"24818:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4565,"type":"struct strings.slice memory","value":"self"},"id":4589,"name":"Identifier","src":"24826:4:18"}],"id":4590,"name":"MemberAccess","src":"24826:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4565,"type":"struct strings.slice memory","value":"self"},"id":4591,"name":"Identifier","src":"24837:4:18"}],"id":4592,"name":"MemberAccess","src":"24837:9:18"}],"id":4593,"name":"FunctionCall","src":"24811:36:18"}],"id":4594,"name":"ExpressionStatement","src":"24811:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4595,"name":"Identifier","src":"24857:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4584,"type":"uint256","value":"retptr"},"id":4596,"name":"Identifier","src":"24864:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4565,"type":"struct strings.slice memory","value":"self"},"id":4597,"name":"Identifier","src":"24873:4:18"}],"id":4598,"name":"MemberAccess","src":"24873:9:18"}],"id":4599,"name":"BinaryOperation","src":"24864:18:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"struct strings.slice memory","value":"other"},"id":4600,"name":"Identifier","src":"24884:5:18"}],"id":4601,"name":"MemberAccess","src":"24884:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"struct strings.slice memory","value":"other"},"id":4602,"name":"Identifier","src":"24896:5:18"}],"id":4603,"name":"MemberAccess","src":"24896:10:18"}],"id":4604,"name":"FunctionCall","src":"24857:50:18"}],"id":4605,"name":"ExpressionStatement","src":"24857:50:18"},{"attributes":{"functionReturnParameters":4571},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4573,"type":"string memory","value":"ret"},"id":4606,"name":"Identifier","src":"24924:3:18"}],"id":4607,"name":"Return","src":"24917:10:18"}],"id":4608,"name":"Block","src":"24672:262:18"}],"id":4609,"name":"FunctionDefinition","src":"24579:355:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":4725,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4610,"name":"UserDefinedTypeName","src":"25284:5:18"}],"id":4611,"name":"VariableDeclaration","src":"25284:17:18"},{"attributes":{"constant":false,"name":"parts","scope":4724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3026,"type":"struct strings.slice"},"id":4612,"name":"UserDefinedTypeName","src":"25303:5:18"}],"id":4613,"name":"ArrayTypeName","src":"25303:7:18"}],"id":4614,"name":"VariableDeclaration","src":"25303:20:18"}],"id":4615,"name":"ParameterList","src":"25283:41:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4724,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4616,"name":"ElementaryTypeName","src":"25348:6:18"}],"id":4617,"name":"VariableDeclaration","src":"25348:13:18"}],"id":4618,"name":"ParameterList","src":"25347:15:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4619,"name":"Identifier","src":"25377:5:18"}],"id":4620,"name":"MemberAccess","src":"25377:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4621,"name":"Literal","src":"25393:1:18"}],"id":4622,"name":"BinaryOperation","src":"25377:17:18"},{"attributes":{"functionReturnParameters":4618},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4623,"name":"Literal","src":"25415:2:18"}],"id":4624,"name":"Return","src":"25408:9:18"}],"id":4625,"name":"IfStatement","src":"25373:44:18"},{"attributes":{"assignments":[4627]},"children":[{"attributes":{"constant":false,"name":"length","scope":4723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4626,"name":"ElementaryTypeName","src":"25428:4:18"}],"id":4627,"name":"VariableDeclaration","src":"25428:11:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4611,"type":"struct strings.slice memory","value":"self"},"id":4628,"name":"Identifier","src":"25442:4:18"}],"id":4629,"name":"MemberAccess","src":"25442:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4630,"name":"Identifier","src":"25455:5:18"}],"id":4631,"name":"MemberAccess","src":"25455:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4632,"name":"Literal","src":"25470:1:18"}],"id":4633,"name":"BinaryOperation","src":"25455:16:18"}],"id":4634,"name":"TupleExpression","src":"25454:18:18"}],"id":4635,"name":"BinaryOperation","src":"25442:30:18"}],"id":4636,"name":"VariableDeclarationStatement","src":"25428:44:18"},{"children":[{"attributes":{"assignments":[4638]},"children":[{"attributes":{"constant":false,"name":"i","scope":4656,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4637,"name":"ElementaryTypeName","src":"25487:4:18"}],"id":4638,"name":"VariableDeclaration","src":"25487:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4639,"name":"Literal","src":"25496:1:18"}],"id":4640,"name":"VariableDeclarationStatement","src":"25487:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4638,"type":"uint256","value":"i"},"id":4641,"name":"Identifier","src":"25499:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4642,"name":"Identifier","src":"25503:5:18"}],"id":4643,"name":"MemberAccess","src":"25503:12:18"}],"id":4644,"name":"BinaryOperation","src":"25499:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4638,"type":"uint256","value":"i"},"id":4645,"name":"Identifier","src":"25517:1:18"}],"id":4646,"name":"UnaryOperation","src":"25517:3:18"}],"id":4647,"name":"ExpressionStatement","src":"25517:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4627,"type":"uint256","value":"length"},"id":4648,"name":"Identifier","src":"25536:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4649,"name":"Identifier","src":"25546:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4638,"type":"uint256","value":"i"},"id":4650,"name":"Identifier","src":"25552:1:18"}],"id":4651,"name":"IndexAccess","src":"25546:8:18"}],"id":4652,"name":"MemberAccess","src":"25546:13:18"}],"id":4653,"name":"Assignment","src":"25536:23:18"}],"id":4654,"name":"ExpressionStatement","src":"25536:23:18"}],"id":4655,"name":"Block","src":"25522:48:18"}],"id":4656,"name":"ForStatement","src":"25482:88:18"},{"attributes":{"assignments":[4658]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4723,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4657,"name":"ElementaryTypeName","src":"25580:6:18"}],"id":4658,"name":"VariableDeclaration","src":"25580:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":4659,"name":"ElementaryTypeName","src":"25604:6:18"}],"id":4660,"name":"NewExpression","src":"25600:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4627,"type":"uint256","value":"length"},"id":4661,"name":"Identifier","src":"25611:6:18"}],"id":4662,"name":"FunctionCall","src":"25600:18:18"}],"id":4663,"name":"VariableDeclarationStatement","src":"25580:38:18"},{"attributes":{"assignments":[4665],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":4723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4664,"name":"ElementaryTypeName","src":"25628:4:18"}],"id":4665,"name":"VariableDeclaration","src":"25628:11:18"}],"id":4666,"name":"VariableDeclarationStatement","src":"25628:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":4665,"isOffset":false,"isSlot":false,"src":"25660:6:18","valueSize":1}},{"ret":{"declaration":4658,"isOffset":false,"isSlot":false,"src":"25674:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":4667,"name":"InlineAssembly","src":"25649:35:18"},{"children":[{"attributes":{"assignments":[4669]},"children":[{"attributes":{"constant":false,"name":"i","scope":4720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4668,"name":"ElementaryTypeName","src":"25699:4:18"}],"id":4669,"name":"VariableDeclaration","src":"25699:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4670,"name":"Literal","src":"25708:1:18"}],"id":4671,"name":"VariableDeclarationStatement","src":"25699:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4672,"name":"Identifier","src":"25711:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4673,"name":"Identifier","src":"25715:5:18"}],"id":4674,"name":"MemberAccess","src":"25715:12:18"}],"id":4675,"name":"BinaryOperation","src":"25711:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4676,"name":"Identifier","src":"25729:1:18"}],"id":4677,"name":"UnaryOperation","src":"25729:3:18"}],"id":4678,"name":"ExpressionStatement","src":"25729:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4679,"name":"Identifier","src":"25748:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4665,"type":"uint256","value":"retptr"},"id":4680,"name":"Identifier","src":"25755:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4681,"name":"Identifier","src":"25763:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4682,"name":"Identifier","src":"25769:1:18"}],"id":4683,"name":"IndexAccess","src":"25763:8:18"}],"id":4684,"name":"MemberAccess","src":"25763:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4685,"name":"Identifier","src":"25778:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4686,"name":"Identifier","src":"25784:1:18"}],"id":4687,"name":"IndexAccess","src":"25778:8:18"}],"id":4688,"name":"MemberAccess","src":"25778:13:18"}],"id":4689,"name":"FunctionCall","src":"25748:44:18"}],"id":4690,"name":"ExpressionStatement","src":"25748:44:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4665,"type":"uint256","value":"retptr"},"id":4691,"name":"Identifier","src":"25806:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4692,"name":"Identifier","src":"25816:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4693,"name":"Identifier","src":"25822:1:18"}],"id":4694,"name":"IndexAccess","src":"25816:8:18"}],"id":4695,"name":"MemberAccess","src":"25816:13:18"}],"id":4696,"name":"Assignment","src":"25806:23:18"}],"id":4697,"name":"ExpressionStatement","src":"25806:23:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"uint256","value":"i"},"id":4698,"name":"Identifier","src":"25847:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4614,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4699,"name":"Identifier","src":"25851:5:18"}],"id":4700,"name":"MemberAccess","src":"25851:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4701,"name":"Literal","src":"25866:1:18"}],"id":4702,"name":"BinaryOperation","src":"25851:16:18"}],"id":4703,"name":"BinaryOperation","src":"25847:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4704,"name":"Identifier","src":"25887:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4665,"type":"uint256","value":"retptr"},"id":4705,"name":"Identifier","src":"25894:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3025,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4611,"type":"struct strings.slice memory","value":"self"},"id":4706,"name":"Identifier","src":"25902:4:18"}],"id":4707,"name":"MemberAccess","src":"25902:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4611,"type":"struct strings.slice memory","value":"self"},"id":4708,"name":"Identifier","src":"25913:4:18"}],"id":4709,"name":"MemberAccess","src":"25913:9:18"}],"id":4710,"name":"FunctionCall","src":"25887:36:18"}],"id":4711,"name":"ExpressionStatement","src":"25887:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4665,"type":"uint256","value":"retptr"},"id":4712,"name":"Identifier","src":"25941:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3023,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4611,"type":"struct strings.slice memory","value":"self"},"id":4713,"name":"Identifier","src":"25951:4:18"}],"id":4714,"name":"MemberAccess","src":"25951:9:18"}],"id":4715,"name":"Assignment","src":"25941:19:18"}],"id":4716,"name":"ExpressionStatement","src":"25941:19:18"}],"id":4717,"name":"Block","src":"25869:106:18"}],"id":4718,"name":"IfStatement","src":"25843:132:18"}],"id":4719,"name":"Block","src":"25734:251:18"}],"id":4720,"name":"ForStatement","src":"25694:291:18"},{"attributes":{"functionReturnParameters":4618},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4658,"type":"string memory","value":"ret"},"id":4721,"name":"Identifier","src":"26002:3:18"}],"id":4722,"name":"Return","src":"25995:10:18"}],"id":4723,"name":"Block","src":"25363:649:18"}],"id":4724,"name":"FunctionDefinition","src":"25270:742:18"}],"id":4725,"name":"ContractDefinition","src":"2599:23415:18"}],"id":4726,"name":"SourceUnit","src":"2574:23441:18"}},"holder.sol":{"AST":{"attributes":{"absolutePath":"holder.sol","exportedSymbols":{"Holder":[266]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"787:24:19"},{"attributes":{"SourceUnit":320,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"813:31:19"},{"attributes":{"SourceUnit":453,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"845:34:19"},{"attributes":{"SourceUnit":846,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"880:39:19"},{"attributes":{"SourceUnit":485,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"920:37:19"},{"attributes":{"SourceUnit":493,"absolutePath":"internals/burner.sol","file":"./internals/burner.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"958:32:19"},{"attributes":{"SourceUnit":589,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":7,"name":"ImportDirective","src":"991:38:19"},{"attributes":{"SourceUnit":806,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":267,"symbolAliases":[null],"unitAlias":""},"id":8,"name":"ImportDirective","src":"1030:44:19"},{"attributes":{"contractDependencies":[484,588,805,845,1344],"contractKind":"contract","documentation":"@title Holder - The TKN Asset Contract\n @notice When the TKN contract calls the burn method, a share of the tokens held by this contract are disbursed to the burner.","fullyImplemented":true,"linearizedBaseContracts":[266,805,845,588,1344,484],"name":"Holder","scope":267},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":484,"type":"contract Balanceable"},"id":9,"name":"UserDefinedTypeName","src":"1269:11:19"}],"id":10,"name":"InheritanceSpecifier","src":"1269:11:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1344,"type":"contract ENSResolvable"},"id":11,"name":"UserDefinedTypeName","src":"1282:13:19"}],"id":12,"name":"InheritanceSpecifier","src":"1282:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":588,"type":"contract Controllable"},"id":13,"name":"UserDefinedTypeName","src":"1297:12:19"}],"id":14,"name":"InheritanceSpecifier","src":"1297:12:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":845,"type":"contract Transferrable"},"id":15,"name":"UserDefinedTypeName","src":"1311:13:19"}],"id":16,"name":"InheritanceSpecifier","src":"1311:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":805,"type":"contract TokenWhitelistable"},"id":17,"name":"UserDefinedTypeName","src":"1326:18:19"}],"id":18,"name":"InheritanceSpecifier","src":"1326:18:19"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":452,"type":"library SafeMath"},"id":19,"name":"UserDefinedTypeName","src":"1357:8:19"},{"attributes":{"name":"uint256","type":"uint256"},"id":20,"name":"ElementaryTypeName","src":"1370:7:19"}],"id":21,"name":"UsingForDirective","src":"1351:27:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":27,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":22,"name":"ElementaryTypeName","src":"1399:7:19"}],"id":23,"name":"VariableDeclaration","src":"1399:13:19"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":27,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":24,"name":"ElementaryTypeName","src":"1414:7:19"}],"id":25,"name":"VariableDeclaration","src":"1414:15:19"}],"id":26,"name":"ParameterList","src":"1398:32:19"}],"id":27,"name":"EventDefinition","src":"1384:47:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"CashAndBurned"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":35,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":28,"name":"ElementaryTypeName","src":"1456:7:19"}],"id":29,"name":"VariableDeclaration","src":"1456:11:19"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":35,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":30,"name":"ElementaryTypeName","src":"1469:7:19"}],"id":31,"name":"VariableDeclaration","src":"1469:14:19"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":35,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":32,"name":"ElementaryTypeName","src":"1485:7:19"}],"id":33,"name":"VariableDeclaration","src":"1485:15:19"}],"id":34,"name":"ParameterList","src":"1455:46:19"}],"id":35,"name":"EventDefinition","src":"1436:66:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":43,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":36,"name":"ElementaryTypeName","src":"1521:7:19"}],"id":37,"name":"VariableDeclaration","src":"1521:11:19"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":43,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":38,"name":"ElementaryTypeName","src":"1534:7:19"}],"id":39,"name":"VariableDeclaration","src":"1534:14:19"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":43,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":40,"name":"ElementaryTypeName","src":"1550:7:19"}],"id":41,"name":"VariableDeclaration","src":"1550:15:19"}],"id":42,"name":"ParameterList","src":"1520:46:19"}],"id":43,"name":"EventDefinition","src":"1507:60:19"},{"attributes":{"documentation":"@dev Check if the sender is the burner contract","name":"onlyBurner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":44,"name":"ParameterList","src":"1648:2:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e12e9dbbae30fabb8abb1f649d7c812202e6169a8d35ebd3f7b3cb8c088116f8","typeString":"literal_string \"burner contract is not the sender\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":45,"name":"Identifier","src":"1661:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":46,"name":"Identifier","src":"1669:3:19"}],"id":47,"name":"MemberAccess","src":"1669:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"address","value":"_burner"},"id":48,"name":"Identifier","src":"1683:7:19"}],"id":49,"name":"BinaryOperation","src":"1669:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6275726e657220636f6e7472616374206973206e6f74207468652073656e646572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"burner contract is not the sender\"","value":"burner contract is not the sender"},"id":50,"name":"Literal","src":"1692:35:19"}],"id":51,"name":"FunctionCall","src":"1661:67:19"}],"id":52,"name":"ExpressionStatement","src":"1661:67:19"},{"id":53,"name":"PlaceholderStatement","src":"1738:1:19"}],"id":54,"name":"Block","src":"1651:95:19"}],"id":55,"name":"ModifierDefinition","src":"1629:117:19"},{"attributes":{"constant":false,"name":"_burner","scope":266,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":56,"name":"ElementaryTypeName","src":"1810:7:19"}],"id":57,"name":"VariableDeclaration","src":"1810:23:19"},{"attributes":{"documentation":"@notice Constructor initializes the holder contract.\n @param _burnerContract_ is the address of the token contract TKN with burning functionality.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS node of the Token whitelist.\n @param _controllerNode_ is the ENS node of the Controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":266,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_burnerContract_","scope":82,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":58,"name":"ElementaryTypeName","src":"2213:7:19"}],"id":59,"name":"VariableDeclaration","src":"2213:24:19"},{"attributes":{"constant":false,"name":"_ens_","scope":82,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":60,"name":"ElementaryTypeName","src":"2239:7:19"}],"id":61,"name":"VariableDeclaration","src":"2239:13:19"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":82,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":62,"name":"ElementaryTypeName","src":"2254:7:19"}],"id":63,"name":"VariableDeclaration","src":"2254:28:19"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":82,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":64,"name":"ElementaryTypeName","src":"2284:7:19"}],"id":65,"name":"VariableDeclaration","src":"2284:24:19"}],"id":66,"name":"ParameterList","src":"2212:97:19"},{"attributes":{"parameters":[null]},"children":[],"id":76,"name":"ParameterList","src":"2446:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1344,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":67,"name":"Identifier","src":"2333:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":61,"type":"address","value":"_ens_"},"id":68,"name":"Identifier","src":"2347:5:19"}],"id":69,"name":"ModifierInvocation","src":"2333:20:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":588,"type":"type(contract Controllable)","value":"Controllable"},"id":70,"name":"Identifier","src":"2362:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":65,"type":"bytes32","value":"_controllerNode_"},"id":71,"name":"Identifier","src":"2375:16:19"}],"id":72,"name":"ModifierInvocation","src":"2362:30:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":805,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":73,"name":"Identifier","src":"2401:18:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":63,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":74,"name":"Identifier","src":"2420:20:19"}],"id":75,"name":"ModifierInvocation","src":"2401:40:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"address","value":"_burner"},"id":77,"name":"Identifier","src":"2456:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":59,"type":"address","value":"_burnerContract_"},"id":78,"name":"Identifier","src":"2466:16:19"}],"id":79,"name":"Assignment","src":"2456:26:19"}],"id":80,"name":"ExpressionStatement","src":"2456:26:19"}],"id":81,"name":"Block","src":"2446:43:19"}],"id":82,"name":"FunctionDefinition","src":"2201:288:19"},{"attributes":{"documentation":"@notice Ether may be sent from anywhere.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":266,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":83,"name":"ParameterList","src":"2552:2:19"},{"attributes":{"parameters":[null]},"children":[],"id":84,"name":"ParameterList","src":"2572:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":27,"type":"function (address,uint256)","value":"Received"},"id":85,"name":"Identifier","src":"2587:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":86,"name":"Identifier","src":"2596:3:19"}],"id":87,"name":"MemberAccess","src":"2596:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":88,"name":"Identifier","src":"2608:3:19"}],"id":89,"name":"MemberAccess","src":"2608:9:19"}],"id":90,"name":"FunctionCall","src":"2587:31:19"}],"id":91,"name":"EmitStatement","src":"2582:36:19"}],"id":92,"name":"Block","src":"2572:53:19"}],"id":93,"name":"FunctionDefinition","src":"2544:81:19"},{"attributes":{"documentation":"@notice Burn handles disbursing a share of tokens in this contract to a given address.\n @param _to The address to disburse to\n @param _amount The amount of TKN that will be burned if this succeeds","implemented":true,"isConstructor":false,"kind":"function","name":"burn","scope":266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":187,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":94,"name":"ElementaryTypeName","src":"2864:15:19"}],"id":95,"name":"VariableDeclaration","src":"2864:19:19"},{"attributes":{"constant":false,"name":"_amount","scope":187,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":96,"name":"ElementaryTypeName","src":"2885:7:19"}],"id":97,"name":"VariableDeclaration","src":"2885:15:19"}],"id":98,"name":"ParameterList","src":"2863:38:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":187,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":101,"name":"ElementaryTypeName","src":"2931:4:19"}],"id":102,"name":"VariableDeclaration","src":"2931:4:19"}],"id":103,"name":"ParameterList","src":"2930:6:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":55,"type":"modifier ()","value":"onlyBurner"},"id":99,"name":"Identifier","src":"2911:10:19"}],"id":100,"name":"ModifierInvocation","src":"2911:10:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":97,"type":"uint256","value":"_amount"},"id":104,"name":"Identifier","src":"2951:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":105,"name":"Literal","src":"2962:1:19"}],"id":106,"name":"BinaryOperation","src":"2951:12:19"},{"children":[{"attributes":{"functionReturnParameters":103},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":107,"name":"Literal","src":"2986:4:19"}],"id":108,"name":"Return","src":"2979:11:19"}],"id":109,"name":"Block","src":"2965:36:19"}],"id":110,"name":"IfStatement","src":"2947:54:19"},{"attributes":{"assignments":[112]},"children":[{"attributes":{"constant":false,"name":"supply","scope":186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":111,"name":"ElementaryTypeName","src":"3078:7:19"}],"id":112,"name":"VariableDeclaration","src":"3078:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"currentSupply","referencedDeclaration":491,"type":"function () view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IBurner","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":492,"type":"type(contract IBurner)","value":"IBurner"},"id":113,"name":"Identifier","src":"3095:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"address","value":"_burner"},"id":114,"name":"Identifier","src":"3103:7:19"}],"id":115,"name":"FunctionCall","src":"3095:16:19"}],"id":116,"name":"MemberAccess","src":"3095:30:19"}],"id":117,"name":"FunctionCall","src":"3095:32:19"}],"id":118,"name":"MemberAccess","src":"3095:36:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":97,"type":"uint256","value":"_amount"},"id":119,"name":"Identifier","src":"3132:7:19"}],"id":120,"name":"FunctionCall","src":"3095:45:19"}],"id":121,"name":"VariableDeclarationStatement","src":"3078:62:19"},{"attributes":{"assignments":[125]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":186,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":123,"name":"ElementaryTypeName","src":"3150:7:19"}],"id":124,"name":"ArrayTypeName","src":"3150:9:19"}],"id":125,"name":"VariableDeclaration","src":"3150:36:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":699,"type":"function () view returns (address[] memory)","value":"_redeemableTokens"},"id":126,"name":"Identifier","src":"3189:17:19"}],"id":127,"name":"FunctionCall","src":"3189:19:19"}],"id":128,"name":"VariableDeclarationStatement","src":"3150:58:19"},{"children":[{"attributes":{"assignments":[130]},"children":[{"attributes":{"constant":false,"name":"i","scope":183,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":129,"name":"ElementaryTypeName","src":"3223:7:19"}],"id":130,"name":"VariableDeclaration","src":"3223:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":131,"name":"Literal","src":"3235:1:19"}],"id":132,"name":"VariableDeclarationStatement","src":"3223:13:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":133,"name":"Identifier","src":"3238:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"address[] memory","value":"redeemableAddresses"},"id":134,"name":"Identifier","src":"3242:19:19"}],"id":135,"name":"MemberAccess","src":"3242:26:19"}],"id":136,"name":"BinaryOperation","src":"3238:30:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":137,"name":"Identifier","src":"3270:1:19"}],"id":138,"name":"UnaryOperation","src":"3270:3:19"}],"id":139,"name":"ExpressionStatement","src":"3270:3:19"},{"children":[{"attributes":{"assignments":[141]},"children":[{"attributes":{"constant":false,"name":"redeemableBalance","scope":182,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":140,"name":"ElementaryTypeName","src":"3289:7:19"}],"id":141,"name":"VariableDeclaration","src":"3289:25:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":483,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":142,"name":"Identifier","src":"3317:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Holder_$266","typeString":"contract Holder"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":143,"name":"ElementaryTypeNameExpression","src":"3326:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7639,"type":"contract Holder","value":"this"},"id":144,"name":"Identifier","src":"3334:4:19"}],"id":145,"name":"FunctionCall","src":"3326:13:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"address[] memory","value":"redeemableAddresses"},"id":146,"name":"Identifier","src":"3341:19:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":147,"name":"Identifier","src":"3361:1:19"}],"id":148,"name":"IndexAccess","src":"3341:22:19"}],"id":149,"name":"FunctionCall","src":"3317:47:19"}],"id":150,"name":"VariableDeclarationStatement","src":"3289:75:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":141,"type":"uint256","value":"redeemableBalance"},"id":151,"name":"Identifier","src":"3382:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":152,"name":"Literal","src":"3402:1:19"}],"id":153,"name":"BinaryOperation","src":"3382:21:19"},{"children":[{"attributes":{"assignments":[155]},"children":[{"attributes":{"constant":false,"name":"redeemableAmount","scope":180,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":154,"name":"ElementaryTypeName","src":"3423:7:19"}],"id":155,"name":"VariableDeclaration","src":"3423:24:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":430,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":405,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":141,"type":"uint256","value":"redeemableBalance"},"id":156,"name":"Identifier","src":"3450:17:19"}],"id":157,"name":"MemberAccess","src":"3450:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":97,"type":"uint256","value":"_amount"},"id":158,"name":"Identifier","src":"3472:7:19"}],"id":159,"name":"FunctionCall","src":"3450:30:19"}],"id":160,"name":"MemberAccess","src":"3450:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"uint256","value":"supply"},"id":161,"name":"Identifier","src":"3485:6:19"}],"id":162,"name":"FunctionCall","src":"3450:42:19"}],"id":163,"name":"VariableDeclarationStatement","src":"3423:69:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":844,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":164,"name":"Identifier","src":"3510:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":95,"type":"address payable","value":"_to"},"id":165,"name":"Identifier","src":"3524:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"address[] memory","value":"redeemableAddresses"},"id":166,"name":"Identifier","src":"3529:19:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":167,"name":"Identifier","src":"3549:1:19"}],"id":168,"name":"IndexAccess","src":"3529:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":155,"type":"uint256","value":"redeemableAmount"},"id":169,"name":"Identifier","src":"3553:16:19"}],"id":170,"name":"FunctionCall","src":"3510:60:19"}],"id":171,"name":"ExpressionStatement","src":"3510:60:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"function (address,address,uint256)","value":"CashAndBurned"},"id":172,"name":"Identifier","src":"3593:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":95,"type":"address payable","value":"_to"},"id":173,"name":"Identifier","src":"3607:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"address[] memory","value":"redeemableAddresses"},"id":174,"name":"Identifier","src":"3612:19:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":175,"name":"Identifier","src":"3632:1:19"}],"id":176,"name":"IndexAccess","src":"3612:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":155,"type":"uint256","value":"redeemableAmount"},"id":177,"name":"Identifier","src":"3636:16:19"}],"id":178,"name":"FunctionCall","src":"3593:60:19"}],"id":179,"name":"EmitStatement","src":"3588:65:19"}],"id":180,"name":"Block","src":"3405:263:19"}],"id":181,"name":"IfStatement","src":"3378:290:19"}],"id":182,"name":"Block","src":"3275:403:19"}],"id":183,"name":"ForStatement","src":"3218:460:19"},{"attributes":{"functionReturnParameters":103},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":184,"name":"Literal","src":"3695:4:19"}],"id":185,"name":"Return","src":"3688:11:19"}],"id":186,"name":"Block","src":"2937:769:19"}],"id":187,"name":"FunctionDefinition","src":"2850:856:19"},{"attributes":{"documentation":"@notice This allows for the admin to reclaim the non-redeemableTokens.\n @param _to this is the address which the reclaimed tokens will be sent to.\n @param _nonRedeemableAddresses this is the array of tokens to be claimed.","implemented":true,"isConstructor":false,"kind":"function","name":"nonRedeemableTokenClaim","scope":266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":257,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":188,"name":"ElementaryTypeName","src":"3989:15:19"}],"id":189,"name":"VariableDeclaration","src":"3989:19:19"},{"attributes":{"constant":false,"name":"_nonRedeemableAddresses","scope":257,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":190,"name":"ElementaryTypeName","src":"4010:7:19"}],"id":191,"name":"ArrayTypeName","src":"4010:9:19"}],"id":192,"name":"VariableDeclaration","src":"4010:42:19"}],"id":193,"name":"ParameterList","src":"3988:65:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":257,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":196,"name":"ElementaryTypeName","src":"4082:4:19"}],"id":197,"name":"VariableDeclaration","src":"4082:4:19"}],"id":198,"name":"ParameterList","src":"4081:6:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":194,"name":"Identifier","src":"4063:9:19"}],"id":195,"name":"ModifierInvocation","src":"4063:9:19"},{"children":[{"children":[{"attributes":{"assignments":[200]},"children":[{"attributes":{"constant":false,"name":"i","scope":253,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":199,"name":"ElementaryTypeName","src":"4103:7:19"}],"id":200,"name":"VariableDeclaration","src":"4103:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":201,"name":"Literal","src":"4115:1:19"}],"id":202,"name":"VariableDeclarationStatement","src":"4103:13:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":203,"name":"Identifier","src":"4118:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":204,"name":"Identifier","src":"4122:23:19"}],"id":205,"name":"MemberAccess","src":"4122:30:19"}],"id":206,"name":"BinaryOperation","src":"4118:34:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":207,"name":"Identifier","src":"4154:1:19"}],"id":208,"name":"UnaryOperation","src":"4154:3:19"}],"id":209,"name":"ExpressionStatement","src":"4154:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e46bb5c563bcc39c933e72fca90b9656d56f1b824afcf8bacd2592d9399de9bc","typeString":"literal_string \"redeemables cannot be claimed\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":210,"name":"Identifier","src":"4217:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"function (address) view returns (bool)","value":"_isTokenRedeemable"},"id":211,"name":"Identifier","src":"4226:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":212,"name":"Identifier","src":"4245:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":213,"name":"Identifier","src":"4269:1:19"}],"id":214,"name":"IndexAccess","src":"4245:26:19"}],"id":215,"name":"FunctionCall","src":"4226:46:19"}],"id":216,"name":"UnaryOperation","src":"4225:47:19"},{"attributes":{"argumentTypes":null,"hexvalue":"72656465656d61626c65732063616e6e6f7420626520636c61696d6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"redeemables cannot be claimed\"","value":"redeemables cannot be claimed"},"id":217,"name":"Literal","src":"4274:31:19"}],"id":218,"name":"FunctionCall","src":"4217:89:19"}],"id":219,"name":"ExpressionStatement","src":"4217:89:19"},{"attributes":{"assignments":[221]},"children":[{"attributes":{"constant":false,"name":"claimBalance","scope":252,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":220,"name":"ElementaryTypeName","src":"4320:7:19"}],"id":221,"name":"VariableDeclaration","src":"4320:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":483,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":222,"name":"Identifier","src":"4343:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Holder_$266","typeString":"contract Holder"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":223,"name":"ElementaryTypeNameExpression","src":"4352:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7639,"type":"contract Holder","value":"this"},"id":224,"name":"Identifier","src":"4360:4:19"}],"id":225,"name":"FunctionCall","src":"4352:13:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":226,"name":"Identifier","src":"4367:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":227,"name":"Identifier","src":"4391:1:19"}],"id":228,"name":"IndexAccess","src":"4367:26:19"}],"id":229,"name":"FunctionCall","src":"4343:51:19"}],"id":230,"name":"VariableDeclarationStatement","src":"4320:74:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":221,"type":"uint256","value":"claimBalance"},"id":231,"name":"Identifier","src":"4412:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":232,"name":"Literal","src":"4427:1:19"}],"id":233,"name":"BinaryOperation","src":"4412:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":844,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":234,"name":"Identifier","src":"4448:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":189,"type":"address payable","value":"_to"},"id":235,"name":"Identifier","src":"4462:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":236,"name":"Identifier","src":"4467:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":237,"name":"Identifier","src":"4491:1:19"}],"id":238,"name":"IndexAccess","src":"4467:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":221,"type":"uint256","value":"claimBalance"},"id":239,"name":"Identifier","src":"4495:12:19"}],"id":240,"name":"FunctionCall","src":"4448:60:19"}],"id":241,"name":"ExpressionStatement","src":"4448:60:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"function (address,address,uint256)","value":"Claimed"},"id":242,"name":"Identifier","src":"4531:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":189,"type":"address payable","value":"_to"},"id":243,"name":"Identifier","src":"4539:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":192,"type":"address[] calldata","value":"_nonRedeemableAddresses"},"id":244,"name":"Identifier","src":"4544:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"uint256","value":"i"},"id":245,"name":"Identifier","src":"4568:1:19"}],"id":246,"name":"IndexAccess","src":"4544:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":221,"type":"uint256","value":"claimBalance"},"id":247,"name":"Identifier","src":"4572:12:19"}],"id":248,"name":"FunctionCall","src":"4531:54:19"}],"id":249,"name":"EmitStatement","src":"4526:59:19"}],"id":250,"name":"Block","src":"4430:170:19"}],"id":251,"name":"IfStatement","src":"4408:192:19"}],"id":252,"name":"Block","src":"4159:451:19"}],"id":253,"name":"ForStatement","src":"4098:512:19"},{"attributes":{"functionReturnParameters":198},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":254,"name":"Literal","src":"4627:4:19"}],"id":255,"name":"Return","src":"4620:11:19"}],"id":256,"name":"Block","src":"4088:550:19"}],"id":257,"name":"FunctionDefinition","src":"3956:682:19"},{"attributes":{"documentation":"@notice Returned the address of the burner contract.\n @return the TKN address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"burner","scope":266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":258,"name":"ParameterList","src":"4753:2:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":265,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":259,"name":"ElementaryTypeName","src":"4779:7:19"}],"id":260,"name":"VariableDeclaration","src":"4779:7:19"}],"id":261,"name":"ParameterList","src":"4778:9:19"},{"children":[{"attributes":{"functionReturnParameters":261},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"address","value":"_burner"},"id":262,"name":"Identifier","src":"4805:7:19"}],"id":263,"name":"Return","src":"4798:14:19"}],"id":264,"name":"Block","src":"4788:31:19"}],"id":265,"name":"FunctionDefinition","src":"4738:81:19"}],"id":266,"name":"ContractDefinition","src":"1250:3571:19"}],"id":267,"name":"SourceUnit","src":"787:4035:19"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[484]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":454,"name":"PragmaDirective","src":"771:24:20"},{"attributes":{"SourceUnit":320,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":485,"symbolAliases":[null],"unitAlias":""},"id":455,"name":"ImportDirective","src":"797:32:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[484],"name":"Balanceable","scope":485},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":484,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":483,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":456,"name":"ElementaryTypeName","src":"1225:7:20"}],"id":457,"name":"VariableDeclaration","src":"1225:16:20"},{"attributes":{"constant":false,"name":"_asset","scope":483,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":458,"name":"ElementaryTypeName","src":"1243:7:20"}],"id":459,"name":"VariableDeclaration","src":"1243:14:20"}],"id":460,"name":"ParameterList","src":"1224:34:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":483,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":461,"name":"ElementaryTypeName","src":"1282:7:20"}],"id":462,"name":"VariableDeclaration","src":"1282:7:20"}],"id":463,"name":"ParameterList","src":"1281:9:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"address","value":"_asset"},"id":464,"name":"Identifier","src":"1305:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":465,"name":"ElementaryTypeNameExpression","src":"1315:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":466,"name":"Literal","src":"1323:1:20"}],"id":467,"name":"FunctionCall","src":"1315:10:20"}],"id":468,"name":"BinaryOperation","src":"1305:20:20"},{"children":[{"attributes":{"functionReturnParameters":463},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":293,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":319,"type":"type(contract ERC20)","value":"ERC20"},"id":469,"name":"Identifier","src":"1348:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"address","value":"_asset"},"id":470,"name":"Identifier","src":"1354:6:20"}],"id":471,"name":"FunctionCall","src":"1348:13:20"}],"id":472,"name":"MemberAccess","src":"1348:23:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address","value":"_address"},"id":473,"name":"Identifier","src":"1372:8:20"}],"id":474,"name":"FunctionCall","src":"1348:33:20"}],"id":475,"name":"Return","src":"1341:40:20"}],"id":476,"name":"Block","src":"1327:65:20"},{"children":[{"attributes":{"functionReturnParameters":463},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address","value":"_address"},"id":477,"name":"Identifier","src":"1419:8:20"}],"id":478,"name":"MemberAccess","src":"1419:16:20"}],"id":479,"name":"Return","src":"1412:23:20"}],"id":480,"name":"Block","src":"1398:48:20"}],"id":481,"name":"IfStatement","src":"1301:145:20"}],"id":482,"name":"Block","src":"1291:161:20"}],"id":483,"name":"FunctionDefinition","src":"1207:245:20"}],"id":484,"name":"ContractDefinition","src":"898:556:20"}],"id":485,"name":"SourceUnit","src":"771:684:20"}},"internals/burner.sol":{"AST":{"attributes":{"absolutePath":"internals/burner.sol","exportedSymbols":{"IBurner":[492]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":486,"name":"PragmaDirective","src":"767:24:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[492],"name":"IBurner","scope":493},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"currentSupply","scope":492,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":487,"name":"ParameterList","src":"980:2:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":491,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":488,"name":"ElementaryTypeName","src":"1006:7:21"}],"id":489,"name":"VariableDeclaration","src":"1006:7:21"}],"id":490,"name":"ParameterList","src":"1005:9:21"}],"id":491,"name":"FunctionDefinition","src":"958:57:21"}],"id":492,"name":"ContractDefinition","src":"934:83:21"}],"id":493,"name":"SourceUnit","src":"767:251:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[4836]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4727,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":453,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":4837,"symbolAliases":[null],"unitAlias":""},"id":4728,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[4836],"name":"BytesUtils","scope":4837},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":452,"type":"library SafeMath"},"id":4729,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":4730,"name":"ElementaryTypeName","src":"955:7:22"}],"id":4731,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":4836,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4767,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4732,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":4733,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":4767,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4734,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":4735,"name":"VariableDeclaration","src":"1125:13:22"}],"id":4736,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":4767,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4737,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":4738,"name":"VariableDeclaration","src":"1163:7:22"}],"id":4739,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":4740,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4733,"type":"bytes memory","value":"_bts"},"id":4741,"name":"Identifier","src":"1190:4:22"}],"id":4742,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4735,"type":"uint256","value":"_from"},"id":4743,"name":"Identifier","src":"1205:5:22"}],"id":4744,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":4745,"name":"Literal","src":"1215:2:22"}],"id":4746,"name":"FunctionCall","src":"1205:13:22"}],"id":4747,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4748,"name":"Literal","src":"1220:22:22"}],"id":4749,"name":"FunctionCall","src":"1182:61:22"}],"id":4750,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[4752],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":4766,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":4751,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":4752,"name":"VariableDeclaration","src":"1254:24:22"}],"id":4753,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[4755]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4766,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4754,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":4755,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4735,"type":"uint256","value":"_from"},"id":4756,"name":"Identifier","src":"1308:5:22"}],"id":4757,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4758,"name":"Literal","src":"1318:2:22"}],"id":4759,"name":"FunctionCall","src":"1308:13:22"}],"id":4760,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":4752,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":4733,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":4755,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":4761,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":4739},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4762,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4752,"type":"bytes20","value":"convertedAddress"},"id":4763,"name":"Identifier","src":"1478:16:22"}],"id":4764,"name":"FunctionCall","src":"1470:25:22"}],"id":4765,"name":"Return","src":"1463:32:22"}],"id":4766,"name":"Block","src":"1172:330:22"}],"id":4767,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":4836,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4801,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4768,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":4769,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":4801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4770,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":4771,"name":"VariableDeclaration","src":"1670:13:22"}],"id":4772,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":4801,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4773,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":4774,"name":"VariableDeclaration","src":"1708:6:22"}],"id":4775,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":4776,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"bytes memory","value":"_bts"},"id":4777,"name":"Identifier","src":"1734:4:22"}],"id":4778,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"uint256","value":"_from"},"id":4779,"name":"Identifier","src":"1749:5:22"}],"id":4780,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4781,"name":"Literal","src":"1759:1:22"}],"id":4782,"name":"FunctionCall","src":"1749:12:22"}],"id":4783,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4784,"name":"Literal","src":"1763:22:22"}],"id":4785,"name":"FunctionCall","src":"1726:60:22"}],"id":4786,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[4788],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":4800,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4787,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":4788,"name":"VariableDeclaration","src":"1797:19:22"}],"id":4789,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[4791]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4790,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":4791,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"uint256","value":"_from"},"id":4792,"name":"Identifier","src":"1846:5:22"}],"id":4793,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4794,"name":"Literal","src":"1856:2:22"}],"id":4795,"name":"FunctionCall","src":"1846:13:22"}],"id":4796,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":4788,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":4769,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":4791,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":4797,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":4775},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes4","value":"slicedBytes4"},"id":4798,"name":"Identifier","src":"2004:12:22"}],"id":4799,"name":"Return","src":"1997:19:22"}],"id":4800,"name":"Block","src":"1716:307:22"}],"id":4801,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":4836,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4835,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4802,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":4803,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":4835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4804,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":4805,"name":"VariableDeclaration","src":"2417:13:22"}],"id":4806,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":4835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4807,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":4808,"name":"VariableDeclaration","src":"2455:7:22"}],"id":4809,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":4810,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"bytes memory","value":"_bts"},"id":4811,"name":"Identifier","src":"2482:4:22"}],"id":4812,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4805,"type":"uint256","value":"_from"},"id":4813,"name":"Identifier","src":"2497:5:22"}],"id":4814,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4815,"name":"Literal","src":"2507:2:22"}],"id":4816,"name":"FunctionCall","src":"2497:13:22"}],"id":4817,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4818,"name":"Literal","src":"2512:22:22"}],"id":4819,"name":"FunctionCall","src":"2474:61:22"}],"id":4820,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[4822],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":4834,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4821,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":4822,"name":"VariableDeclaration","src":"2546:24:22"}],"id":4823,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[4825]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4834,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4824,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":4825,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4805,"type":"uint256","value":"_from"},"id":4826,"name":"Identifier","src":"2600:5:22"}],"id":4827,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4828,"name":"Literal","src":"2610:2:22"}],"id":4829,"name":"FunctionCall","src":"2600:13:22"}],"id":4830,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":4822,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}},{"_bts":{"declaration":4803,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":4825,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":4831,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":4809},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4822,"type":"uint256","value":"convertedUint256"},"id":4832,"name":"Identifier","src":"2762:16:22"}],"id":4833,"name":"Return","src":"2755:23:22"}],"id":4834,"name":"Block","src":"2464:321:22"}],"id":4835,"name":"FunctionDefinition","src":"2373:412:22"}],"id":4836,"name":"ContractDefinition","src":"911:1876:22"}],"id":4837,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[588]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":494,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":1300,"absolutePath":"controller.sol","file":"../controller.sol","scope":589,"symbolAliases":[null],"unitAlias":""},"id":495,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":1345,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":589,"symbolAliases":[null],"unitAlias":""},"id":496,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[1344],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[588,1344],"name":"Controllable","scope":589},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1344,"type":"contract ENSResolvable"},"id":497,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":498,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":588,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":499,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":500,"name":"Literal","src":"1122:66:23"}],"id":501,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":588,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":502,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":501,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":503,"name":"Identifier","src":"1306:24:23"}],"id":504,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":521,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":505,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":506,"name":"VariableDeclaration","src":"1571:24:23"}],"id":507,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":508,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":506,"type":"bytes32","value":"_controllerNode_"},"id":509,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":510,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":511,"name":"Literal","src":"1693:1:23"}],"id":512,"name":"FunctionCall","src":"1685:10:23"}],"id":513,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"bytes32","value":"_controllerNode"},"id":514,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":506,"type":"bytes32","value":"_controllerNode_"},"id":515,"name":"Identifier","src":"1729:16:23"}],"id":516,"name":"Assignment","src":"1711:34:23"}],"id":517,"name":"ExpressionStatement","src":"1711:34:23"}],"id":518,"name":"Block","src":"1697:59:23"}],"id":519,"name":"IfStatement","src":"1661:95:23"}],"id":520,"name":"Block","src":"1606:156:23"}],"id":521,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":522,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":523,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":570,"type":"function (address) view returns (bool)","value":"_isController"},"id":524,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":525,"name":"Identifier","src":"1884:3:23"}],"id":526,"name":"MemberAccess","src":"1884:10:23"}],"id":527,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":528,"name":"Literal","src":"1897:28:23"}],"id":529,"name":"FunctionCall","src":"1862:64:23"}],"id":530,"name":"ExpressionStatement","src":"1862:64:23"},{"id":531,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":532,"name":"Block","src":"1852:92:23"}],"id":533,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":534,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":535,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":587,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":536,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":537,"name":"Identifier","src":"2052:3:23"}],"id":538,"name":"MemberAccess","src":"2052:10:23"}],"id":539,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":540,"name":"Literal","src":"2065:24:23"}],"id":541,"name":"FunctionCall","src":"2035:55:23"}],"id":542,"name":"ExpressionStatement","src":"2035:55:23"},{"id":543,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":544,"name":"Block","src":"2025:83:23"}],"id":545,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":588,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":546,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":553,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":547,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":548,"name":"VariableDeclaration","src":"2216:7:23"}],"id":549,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":549},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"bytes32","value":"_controllerNode"},"id":550,"name":"Identifier","src":"2242:15:23"}],"id":551,"name":"Return","src":"2235:22:23"}],"id":552,"name":"Block","src":"2225:39:23"}],"id":553,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":588,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":570,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":554,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":555,"name":"VariableDeclaration","src":"2355:16:23"}],"id":556,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":570,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":557,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":558,"name":"VariableDeclaration","src":"2396:4:23"}],"id":559,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":559},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":856,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":864,"type":"type(contract IController)","value":"IController"},"id":560,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":561,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"bytes32","value":"_controllerNode"},"id":562,"name":"Identifier","src":"2443:15:23"}],"id":563,"name":"FunctionCall","src":"2431:28:23"}],"id":564,"name":"FunctionCall","src":"2419:41:23"}],"id":565,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address","value":"_account"},"id":566,"name":"Identifier","src":"2474:8:23"}],"id":567,"name":"FunctionCall","src":"2419:64:23"}],"id":568,"name":"Return","src":"2412:71:23"}],"id":569,"name":"Block","src":"2402:88:23"}],"id":570,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":588,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":587,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":571,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":572,"name":"VariableDeclaration","src":"2572:16:23"}],"id":573,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":587,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":574,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":575,"name":"VariableDeclaration","src":"2613:4:23"}],"id":576,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":576},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":863,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":864,"type":"type(contract IController)","value":"IController"},"id":577,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":578,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"bytes32","value":"_controllerNode"},"id":579,"name":"Identifier","src":"2660:15:23"}],"id":580,"name":"FunctionCall","src":"2648:28:23"}],"id":581,"name":"FunctionCall","src":"2636:41:23"}],"id":582,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":572,"type":"address","value":"_account"},"id":583,"name":"Identifier","src":"2686:8:23"}],"id":584,"name":"FunctionCall","src":"2636:59:23"}],"id":585,"name":"Return","src":"2629:66:23"}],"id":586,"name":"Block","src":"2619:83:23"}],"id":587,"name":"FunctionDefinition","src":"2554:148:23"}],"id":588,"name":"ContractDefinition","src":"955:1749:23"}],"id":589,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[1344]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1301,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":2846,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":1345,"symbolAliases":[null],"unitAlias":""},"id":1302,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":3020,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":1345,"symbolAliases":[null],"unitAlias":""},"id":1303,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[1344],"name":"ENSResolvable","scope":1345},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":1344,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1304,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":1305,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1344,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":1315,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1306,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":1307,"name":"VariableDeclaration","src":"1205:16:24"}],"id":1308,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":1309,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1305,"type":"address","value":"_ensRegistry"},"id":1310,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1307,"type":"address","value":"_ensReg_"},"id":1311,"name":"Identifier","src":"1257:8:24"}],"id":1312,"name":"Assignment","src":"1242:23:24"}],"id":1313,"name":"ExpressionStatement","src":"1242:23:24"}],"id":1314,"name":"Block","src":"1232:40:24"}],"id":1315,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":1344,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1316,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":1323,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1317,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":1318,"name":"VariableDeclaration","src":"1410:7:24"}],"id":1319,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":1319},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1305,"type":"address","value":"_ensRegistry"},"id":1320,"name":"Identifier","src":"1436:12:24"}],"id":1321,"name":"Return","src":"1429:19:24"}],"id":1322,"name":"Block","src":"1419:36:24"}],"id":1323,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":1344,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1324,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":1325,"name":"VariableDeclaration","src":"1652:13:24"}],"id":1326,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":1343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1327,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":1328,"name":"VariableDeclaration","src":"1690:7:24"}],"id":1329,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":1329},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":5073,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3019,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":1330,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":2821,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2845,"type":"type(contract ENS)","value":"ENS"},"id":1331,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1305,"type":"address","value":"_ensRegistry"},"id":1332,"name":"Identifier","src":"1735:12:24"}],"id":1333,"name":"FunctionCall","src":"1731:17:24"}],"id":1334,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1325,"type":"bytes32","value":"_node"},"id":1335,"name":"Identifier","src":"1758:5:24"}],"id":1336,"name":"FunctionCall","src":"1731:33:24"}],"id":1337,"name":"FunctionCall","src":"1716:49:24"}],"id":1338,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1325,"type":"bytes32","value":"_node"},"id":1339,"name":"Identifier","src":"1771:5:24"}],"id":1340,"name":"FunctionCall","src":"1716:61:24"}],"id":1341,"name":"Return","src":"1709:68:24"}],"id":1342,"name":"Block","src":"1699:85:24"}],"id":1343,"name":"FunctionDefinition","src":"1631:153:24"}],"id":1344,"name":"ContractDefinition","src":"1008:778:24"}],"id":1345,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[2708]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2553,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[2708],"name":"Ownable","scope":2709},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2554,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":2555,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2556,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":2557,"name":"VariableDeclaration","src":"1214:11:25"}],"id":2558,"name":"ParameterList","src":"1198:28:25"}],"id":2559,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":2563,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2560,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":2561,"name":"VariableDeclaration","src":"1254:15:25"}],"id":2562,"name":"ParameterList","src":"1253:17:25"}],"id":2563,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":2708,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2564,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":2565,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":2708,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2566,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":2567,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2708,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":2598,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2568,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":2569,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":2598,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2570,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":2571,"name":"VariableDeclaration","src":"1503:19:25"}],"id":2572,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":2573,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2574,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"address payable","value":"_account_"},"id":2575,"name":"Identifier","src":"1552:9:25"}],"id":2576,"name":"Assignment","src":"1543:18:25"}],"id":2577,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2578,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2571,"type":"bool","value":"_transferable_"},"id":2579,"name":"Identifier","src":"1589:14:25"}],"id":2580,"name":"Assignment","src":"1571:32:25"}],"id":2581,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2582,"name":"Identifier","src":"1687:15:25"}],"id":2583,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"function (address)","value":"LockedOwnership"},"id":2584,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"address payable","value":"_account_"},"id":2585,"name":"Identifier","src":"1739:9:25"}],"id":2586,"name":"FunctionCall","src":"1723:26:25"}],"id":2587,"name":"EmitStatement","src":"1718:31:25"}],"id":2588,"name":"Block","src":"1704:56:25"}],"id":2589,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"function (address,address)","value":"TransferredOwnership"},"id":2590,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2591,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2592,"name":"Literal","src":"1803:1:25"}],"id":2593,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"address payable","value":"_account_"},"id":2594,"name":"Identifier","src":"1807:9:25"}],"id":2595,"name":"FunctionCall","src":"1774:43:25"}],"id":2596,"name":"EmitStatement","src":"1769:48:25"}],"id":2597,"name":"Block","src":"1533:291:25"}],"id":2598,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2599,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2600,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2707,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2601,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2602,"name":"Identifier","src":"1949:3:25"}],"id":2603,"name":"MemberAccess","src":"1949:10:25"}],"id":2604,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":2605,"name":"Literal","src":"1962:24:25"}],"id":2606,"name":"FunctionCall","src":"1932:55:25"}],"id":2607,"name":"ExpressionStatement","src":"1932:55:25"},{"id":2608,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":2609,"name":"Block","src":"1922:83:25"}],"id":2610,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":2708,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2655,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2611,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":2612,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":2655,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2613,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":2614,"name":"VariableDeclaration","src":"2300:18:25"}],"id":2615,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":2618,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":2616,"name":"Identifier","src":"2329:9:25"}],"id":2617,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2619,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2620,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2621,"name":"Literal","src":"2429:31:25"}],"id":2622,"name":"FunctionCall","src":"2404:57:25"}],"id":2623,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2624,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2612,"type":"address payable","value":"_account"},"id":2625,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2626,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2627,"name":"Literal","src":"2562:1:25"}],"id":2628,"name":"FunctionCall","src":"2554:10:25"}],"id":2629,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":2630,"name":"Literal","src":"2566:37:25"}],"id":2631,"name":"FunctionCall","src":"2534:70:25"}],"id":2632,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2633,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2614,"type":"bool","value":"_transferable"},"id":2634,"name":"Identifier","src":"2707:13:25"}],"id":2635,"name":"Assignment","src":"2689:31:25"}],"id":2636,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2614,"type":"bool","value":"_transferable"},"id":2637,"name":"Identifier","src":"2804:13:25"}],"id":2638,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"function (address)","value":"LockedOwnership"},"id":2639,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2612,"type":"address payable","value":"_account"},"id":2640,"name":"Identifier","src":"2854:8:25"}],"id":2641,"name":"FunctionCall","src":"2838:25:25"}],"id":2642,"name":"EmitStatement","src":"2833:30:25"}],"id":2643,"name":"Block","src":"2819:55:25"}],"id":2644,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"function (address,address)","value":"TransferredOwnership"},"id":2645,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2646,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2612,"type":"address payable","value":"_account"},"id":2647,"name":"Identifier","src":"2963:8:25"}],"id":2648,"name":"FunctionCall","src":"2934:38:25"}],"id":2649,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2650,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2612,"type":"address payable","value":"_account"},"id":2651,"name":"Identifier","src":"3041:8:25"}],"id":2652,"name":"Assignment","src":"3032:17:25"}],"id":2653,"name":"ExpressionStatement","src":"3032:17:25"}],"id":2654,"name":"Block","src":"2339:717:25"}],"id":2655,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":2708,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2656,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":2663,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2657,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":2658,"name":"VariableDeclaration","src":"3222:4:25"}],"id":2659,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":2659},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2660,"name":"Identifier","src":"3245:15:25"}],"id":2661,"name":"Return","src":"3238:22:25"}],"id":2662,"name":"Block","src":"3228:39:25"}],"id":2663,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":2708,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2664,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":2667,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2610,"type":"modifier ()","value":"onlyOwner"},"id":2665,"name":"Identifier","src":"3581:9:25"}],"id":2666,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2668,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"bool","value":"_isTransferable"},"id":2669,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2670,"name":"Literal","src":"3681:31:25"}],"id":2671,"name":"FunctionCall","src":"3656:57:25"}],"id":2672,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2673,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2674,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2675,"name":"Literal","src":"3784:1:25"}],"id":2676,"name":"FunctionCall","src":"3776:10:25"}],"id":2677,"name":"Assignment","src":"3767:19:25"}],"id":2678,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"function (address,address)","value":"TransferredOwnership"},"id":2679,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2680,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2681,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2682,"name":"Literal","src":"3839:1:25"}],"id":2683,"name":"FunctionCall","src":"3831:10:25"}],"id":2684,"name":"FunctionCall","src":"3802:40:25"}],"id":2685,"name":"EmitStatement","src":"3797:45:25"}],"id":2686,"name":"Block","src":"3591:258:25"}],"id":2687,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":2708,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2688,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":2695,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2689,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":2690,"name":"VariableDeclaration","src":"3970:15:25"}],"id":2691,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":2691},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2692,"name":"Identifier","src":"4004:6:25"}],"id":2693,"name":"Return","src":"3997:13:25"}],"id":2694,"name":"Block","src":"3987:30:25"}],"id":2695,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":2708,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":2707,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2696,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":2697,"name":"VariableDeclaration","src":"4141:16:25"}],"id":2698,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":2707,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2699,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":2700,"name":"VariableDeclaration","src":"4182:4:25"}],"id":2701,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":2701},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2697,"type":"address","value":"_address"},"id":2702,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"address payable","value":"_owner"},"id":2703,"name":"Identifier","src":"4217:6:25"}],"id":2704,"name":"BinaryOperation","src":"4205:18:25"}],"id":2705,"name":"Return","src":"4198:25:25"}],"id":2706,"name":"Block","src":"4188:42:25"}],"id":2707,"name":"FunctionDefinition","src":"4123:107:25"}],"id":2708,"name":"ContractDefinition","src":"1149:3083:25"}],"id":2709,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[805]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":590,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":2333,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":806,"symbolAliases":[null],"unitAlias":""},"id":591,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":1345,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":806,"symbolAliases":[null],"unitAlias":""},"id":592,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[1344],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[805,1344],"name":"TokenWhitelistable","scope":806},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1344,"type":"contract ENSResolvable"},"id":593,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":594,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":805,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":595,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":596,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":805,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":606,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":597,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":598,"name":"VariableDeclaration","src":"1292:28:26"}],"id":599,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":600,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":601,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":598,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":602,"name":"Identifier","src":"1363:20:26"}],"id":603,"name":"Assignment","src":"1341:42:26"}],"id":604,"name":"ExpressionStatement","src":"1341:42:26"}],"id":605,"name":"Block","src":"1331:59:26"}],"id":606,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":805,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":607,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":614,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":608,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":609,"name":"VariableDeclaration","src":"1567:7:26"}],"id":610,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":610},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":611,"name":"Identifier","src":"1593:19:26"}],"id":612,"name":"Return","src":"1586:26:26"}],"id":613,"name":"Block","src":"1576:43:26"}],"id":614,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":643,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":615,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":616,"name":"VariableDeclaration","src":"2194:10:26"}],"id":617,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":618,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":619,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":620,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":621,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":622,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":623,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":624,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":625,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":626,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":627,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":628,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":629,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":630,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":631,"name":"VariableDeclaration","src":"2280:7:26"}],"id":632,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":632},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":1370,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":633,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":634,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":635,"name":"Identifier","src":"2334:19:26"}],"id":636,"name":"FunctionCall","src":"2322:32:26"}],"id":637,"name":"FunctionCall","src":"2306:49:26"}],"id":638,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":616,"type":"address","value":"_a"},"id":639,"name":"Identifier","src":"2369:2:26"}],"id":640,"name":"FunctionCall","src":"2306:66:26"}],"id":641,"name":"Return","src":"2299:73:26"}],"id":642,"name":"Block","src":"2289:90:26"}],"id":643,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":644,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":645,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":646,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":647,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":648,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":649,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":650,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":651,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":652,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":653,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":654,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":655,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":656,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":657,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":658,"name":"VariableDeclaration","src":"2991:7:26"}],"id":659,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":659},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":1387,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":660,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":661,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":662,"name":"Identifier","src":"3045:19:26"}],"id":663,"name":"FunctionCall","src":"3033:32:26"}],"id":664,"name":"FunctionCall","src":"3017:49:26"}],"id":665,"name":"MemberAccess","src":"3017:67:26"}],"id":666,"name":"FunctionCall","src":"3017:69:26"}],"id":667,"name":"Return","src":"3010:76:26"}],"id":668,"name":"Block","src":"3000:93:26"}],"id":669,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":670,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":684,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":671,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":672,"name":"ArrayTypeName","src":"3273:9:26"}],"id":673,"name":"VariableDeclaration","src":"3273:16:26"}],"id":674,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":674},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":1393,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":675,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":676,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":677,"name":"Identifier","src":"3336:19:26"}],"id":678,"name":"FunctionCall","src":"3324:32:26"}],"id":679,"name":"FunctionCall","src":"3308:49:26"}],"id":680,"name":"MemberAccess","src":"3308:67:26"}],"id":681,"name":"FunctionCall","src":"3308:69:26"}],"id":682,"name":"Return","src":"3301:76:26"}],"id":683,"name":"Block","src":"3291:93:26"}],"id":684,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":685,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":699,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":686,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":687,"name":"ArrayTypeName","src":"3563:9:26"}],"id":688,"name":"VariableDeclaration","src":"3563:16:26"}],"id":689,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":689},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":1399,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":690,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":691,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":692,"name":"Identifier","src":"3626:19:26"}],"id":693,"name":"FunctionCall","src":"3614:32:26"}],"id":694,"name":"FunctionCall","src":"3598:49:26"}],"id":695,"name":"MemberAccess","src":"3598:66:26"}],"id":696,"name":"FunctionCall","src":"3598:68:26"}],"id":697,"name":"Return","src":"3591:75:26"}],"id":698,"name":"Block","src":"3581:92:26"}],"id":699,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":805,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":720,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":700,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":701,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":702,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":703,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":704,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":705,"name":"VariableDeclaration","src":"4007:19:26"}],"id":706,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":707,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":1431,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":708,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":709,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":710,"name":"Identifier","src":"4075:19:26"}],"id":711,"name":"FunctionCall","src":"4063:32:26"}],"id":712,"name":"FunctionCall","src":"4047:49:26"}],"id":713,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":701,"type":"address","value":"_token"},"id":714,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":703,"type":"uint256","value":"_rate"},"id":715,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"_updateDate"},"id":716,"name":"Identifier","src":"4128:11:26"}],"id":717,"name":"FunctionCall","src":"4047:93:26"}],"id":718,"name":"ExpressionStatement","src":"4047:93:26"}],"id":719,"name":"Block","src":"4037:110:26"}],"id":720,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":742,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":721,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":722,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":742,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":723,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":724,"name":"VariableDeclaration","src":"4364:18:26"}],"id":725,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":742,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":726,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":727,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":742,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":728,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":729,"name":"VariableDeclaration","src":"4416:7:26"}],"id":730,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":730},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":1417,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":731,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":732,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":733,"name":"Identifier","src":"4470:19:26"}],"id":734,"name":"FunctionCall","src":"4458:32:26"}],"id":735,"name":"FunctionCall","src":"4442:49:26"}],"id":736,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":722,"type":"address","value":"_destination"},"id":737,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":724,"type":"bytes memory","value":"_data"},"id":738,"name":"Identifier","src":"4533:5:26"}],"id":739,"name":"FunctionCall","src":"4442:97:26"}],"id":740,"name":"Return","src":"4435:104:26"}],"id":741,"name":"Block","src":"4425:121:26"}],"id":742,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":758,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":743,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":744,"name":"VariableDeclaration","src":"4671:10:26"}],"id":745,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":758,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":746,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":747,"name":"VariableDeclaration","src":"4706:4:26"}],"id":748,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,750,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":757,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":749,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":750,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":643,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":751,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"address","value":"_a"},"id":752,"name":"Identifier","src":"4767:2:26"}],"id":753,"name":"FunctionCall","src":"4753:17:26"}],"id":754,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":748},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":750,"type":"bool","value":"available"},"id":755,"name":"Identifier","src":"4787:9:26"}],"id":756,"name":"Return","src":"4780:16:26"}],"id":757,"name":"Block","src":"4712:91:26"}],"id":758,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":774,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":759,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":760,"name":"VariableDeclaration","src":"4931:10:26"}],"id":761,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":774,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":762,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":763,"name":"VariableDeclaration","src":"4966:4:26"}],"id":764,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,766,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":773,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":765,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":766,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":643,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":767,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":760,"type":"address","value":"_a"},"id":768,"name":"Identifier","src":"5028:2:26"}],"id":769,"name":"FunctionCall","src":"5014:17:26"}],"id":770,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":764},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":766,"type":"bool","value":"redeemable"},"id":771,"name":"Identifier","src":"5048:10:26"}],"id":772,"name":"Return","src":"5041:17:26"}],"id":773,"name":"Block","src":"4972:93:26"}],"id":774,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":790,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":775,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":776,"name":"VariableDeclaration","src":"5187:10:26"}],"id":777,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":790,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":778,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":779,"name":"VariableDeclaration","src":"5222:4:26"}],"id":780,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,782,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":789,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":781,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":782,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":643,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":783,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":776,"type":"address","value":"_a"},"id":784,"name":"Identifier","src":"5282:2:26"}],"id":785,"name":"FunctionCall","src":"5268:17:26"}],"id":786,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":780},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":782,"type":"bool","value":"loadable"},"id":787,"name":"Identifier","src":"5302:8:26"}],"id":788,"name":"Return","src":"5295:15:26"}],"id":789,"name":"Block","src":"5228:89:26"}],"id":790,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":805,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":791,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":804,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":792,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":793,"name":"VariableDeclaration","src":"5482:7:26"}],"id":794,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":794},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":1422,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1432,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":795,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":796,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"bytes32","value":"_tokenWhitelistNode"},"id":797,"name":"Identifier","src":"5536:19:26"}],"id":798,"name":"FunctionCall","src":"5524:32:26"}],"id":799,"name":"FunctionCall","src":"5508:49:26"}],"id":800,"name":"MemberAccess","src":"5508:60:26"}],"id":801,"name":"FunctionCall","src":"5508:62:26"}],"id":802,"name":"Return","src":"5501:69:26"}],"id":803,"name":"Block","src":"5491:86:26"}],"id":804,"name":"FunctionDefinition","src":"5436:141:26"}],"id":805,"name":"ContractDefinition","src":"958:4621:26"}],"id":806,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[845]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":807,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":320,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":846,"symbolAliases":[null],"unitAlias":""},"id":808,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":2552,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":846,"symbolAliases":[null],"unitAlias":""},"id":809,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[845],"name":"Transferrable","scope":846},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2551,"type":"library SafeERC20"},"id":810,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":319,"type":"contract ERC20"},"id":811,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":812,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":845,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":844,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":813,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":814,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":844,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":815,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":816,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":817,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":818,"name":"VariableDeclaration","src":"1426:15:27"}],"id":819,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":820,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"address","value":"_asset"},"id":821,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":822,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":823,"name":"Literal","src":"1528:1:27"}],"id":824,"name":"FunctionCall","src":"1520:10:27"}],"id":825,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":814,"type":"address payable","value":"_to"},"id":826,"name":"Identifier","src":"1546:3:27"}],"id":828,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"uint256","value":"_amount"},"id":829,"name":"Identifier","src":"1559:7:27"}],"id":830,"name":"FunctionCall","src":"1546:21:27"}],"id":831,"name":"ExpressionStatement","src":"1546:21:27"}],"id":832,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":2365,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":319,"type":"type(contract ERC20)","value":"ERC20"},"id":833,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"address","value":"_asset"},"id":834,"name":"Identifier","src":"1604:6:27"}],"id":835,"name":"FunctionCall","src":"1598:13:27"}],"id":836,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":814,"type":"address payable","value":"_to"},"id":837,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"uint256","value":"_amount"},"id":838,"name":"Identifier","src":"1630:7:27"}],"id":839,"name":"FunctionCall","src":"1598:40:27"}],"id":840,"name":"ExpressionStatement","src":"1598:40:27"}],"id":841,"name":"Block","src":"1584:65:27"}],"id":842,"name":"IfStatement","src":"1506:143:27"}],"id":843,"name":"Block","src":"1452:203:27"}],"id":844,"name":"FunctionDefinition","src":"1366:289:27"}],"id":845,"name":"ContractDefinition","src":"961:696:27"}],"id":846,"name":"SourceUnit","src":"773:885:27"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[1432],"TokenWhitelist":[2332]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1346,"name":"PragmaDirective","src":"774:24:28"},{"attributes":{"SourceUnit":589,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1347,"name":"ImportDirective","src":"800:38:28"},{"attributes":{"SourceUnit":846,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1348,"name":"ImportDirective","src":"839:39:28"},{"attributes":{"SourceUnit":4837,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1349,"name":"ImportDirective","src":"879:36:28"},{"attributes":{"SourceUnit":4726,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1350,"name":"ImportDirective","src":"916:33:28"},{"attributes":{"SourceUnit":453,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2333,"symbolAliases":[null],"unitAlias":""},"id":1351,"name":"ImportDirective","src":"950:34:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[1432],"name":"ITokenWhitelist","scope":2333},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1352,"name":"ElementaryTypeName","src":"1124:7:28"}],"id":1353,"name":"VariableDeclaration","src":"1124:7:28"}],"id":1354,"name":"ParameterList","src":"1123:9:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1355,"name":"ElementaryTypeName","src":"1156:6:28"}],"id":1356,"name":"VariableDeclaration","src":"1156:13:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1357,"name":"ElementaryTypeName","src":"1171:7:28"}],"id":1358,"name":"VariableDeclaration","src":"1171:7:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1359,"name":"ElementaryTypeName","src":"1180:7:28"}],"id":1360,"name":"VariableDeclaration","src":"1180:7:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1361,"name":"ElementaryTypeName","src":"1189:4:28"}],"id":1362,"name":"VariableDeclaration","src":"1189:4:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1363,"name":"ElementaryTypeName","src":"1195:4:28"}],"id":1364,"name":"VariableDeclaration","src":"1195:4:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1365,"name":"ElementaryTypeName","src":"1201:4:28"}],"id":1366,"name":"VariableDeclaration","src":"1201:4:28"},{"attributes":{"constant":false,"name":"","scope":1370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1367,"name":"ElementaryTypeName","src":"1207:7:28"}],"id":1368,"name":"VariableDeclaration","src":"1207:7:28"}],"id":1369,"name":"ParameterList","src":"1155:60:28"}],"id":1370,"name":"FunctionDefinition","src":"1102:114:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1371,"name":"ParameterList","src":"1248:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1372,"name":"ElementaryTypeName","src":"1274:6:28"}],"id":1373,"name":"VariableDeclaration","src":"1274:13:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1374,"name":"ElementaryTypeName","src":"1289:7:28"}],"id":1375,"name":"VariableDeclaration","src":"1289:7:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1376,"name":"ElementaryTypeName","src":"1298:7:28"}],"id":1377,"name":"VariableDeclaration","src":"1298:7:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1378,"name":"ElementaryTypeName","src":"1307:4:28"}],"id":1379,"name":"VariableDeclaration","src":"1307:4:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1380,"name":"ElementaryTypeName","src":"1313:4:28"}],"id":1381,"name":"VariableDeclaration","src":"1313:4:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1382,"name":"ElementaryTypeName","src":"1319:4:28"}],"id":1383,"name":"VariableDeclaration","src":"1319:4:28"},{"attributes":{"constant":false,"name":"","scope":1387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1384,"name":"ElementaryTypeName","src":"1325:7:28"}],"id":1385,"name":"VariableDeclaration","src":"1325:7:28"}],"id":1386,"name":"ParameterList","src":"1273:60:28"}],"id":1387,"name":"FunctionDefinition","src":"1222:112:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1388,"name":"ParameterList","src":"1366:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1393,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1389,"name":"ElementaryTypeName","src":"1392:7:28"}],"id":1390,"name":"ArrayTypeName","src":"1392:9:28"}],"id":1391,"name":"VariableDeclaration","src":"1392:16:28"}],"id":1392,"name":"ParameterList","src":"1391:18:28"}],"id":1393,"name":"FunctionDefinition","src":"1340:70:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1394,"name":"ParameterList","src":"1441:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1399,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1395,"name":"ElementaryTypeName","src":"1467:7:28"}],"id":1396,"name":"ArrayTypeName","src":"1467:9:28"}],"id":1397,"name":"VariableDeclaration","src":"1467:16:28"}],"id":1398,"name":"ParameterList","src":"1466:18:28"}],"id":1399,"name":"FunctionDefinition","src":"1416:69:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1406,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1400,"name":"ElementaryTypeName","src":"1518:6:28"}],"id":1401,"name":"VariableDeclaration","src":"1518:6:28"}],"id":1402,"name":"ParameterList","src":"1517:8:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1406,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1403,"name":"ElementaryTypeName","src":"1549:4:28"}],"id":1404,"name":"VariableDeclaration","src":"1549:4:28"}],"id":1405,"name":"ParameterList","src":"1548:6:28"}],"id":1406,"name":"FunctionDefinition","src":"1491:64:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1407,"name":"ElementaryTypeName","src":"1597:7:28"}],"id":1408,"name":"VariableDeclaration","src":"1597:7:28"},{"attributes":{"constant":false,"name":"","scope":1417,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1409,"name":"ElementaryTypeName","src":"1606:5:28"}],"id":1410,"name":"VariableDeclaration","src":"1606:14:28"}],"id":1411,"name":"ParameterList","src":"1596:25:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1412,"name":"ElementaryTypeName","src":"1645:7:28"}],"id":1413,"name":"VariableDeclaration","src":"1645:7:28"},{"attributes":{"constant":false,"name":"","scope":1417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1414,"name":"ElementaryTypeName","src":"1654:7:28"}],"id":1415,"name":"VariableDeclaration","src":"1654:7:28"}],"id":1416,"name":"ParameterList","src":"1644:18:28"}],"id":1417,"name":"FunctionDefinition","src":"1561:102:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":1432,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1418,"name":"ParameterList","src":"1688:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1422,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1419,"name":"ElementaryTypeName","src":"1714:7:28"}],"id":1420,"name":"VariableDeclaration","src":"1714:7:28"}],"id":1421,"name":"ParameterList","src":"1713:9:28"}],"id":1422,"name":"FunctionDefinition","src":"1669:54:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":1432,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1431,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1423,"name":"ElementaryTypeName","src":"1754:7:28"}],"id":1424,"name":"VariableDeclaration","src":"1754:7:28"},{"attributes":{"constant":false,"name":"","scope":1431,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1425,"name":"ElementaryTypeName","src":"1763:7:28"}],"id":1426,"name":"VariableDeclaration","src":"1763:7:28"},{"attributes":{"constant":false,"name":"","scope":1431,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1427,"name":"ElementaryTypeName","src":"1772:7:28"}],"id":1428,"name":"VariableDeclaration","src":"1772:7:28"}],"id":1429,"name":"ParameterList","src":"1753:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":1430,"name":"ParameterList","src":"1789:0:28"}],"id":1431,"name":"FunctionDefinition","src":"1729:61:28"}],"id":1432,"name":"ContractDefinition","src":"1070:722:28"},{"attributes":{"contractDependencies":[588,845,1344],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[2332,845,588,1344],"name":"TokenWhitelist","scope":2333},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1344,"type":"contract ENSResolvable"},"id":1433,"name":"UserDefinedTypeName","src":"1966:13:28"}],"id":1434,"name":"InheritanceSpecifier","src":"1966:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":588,"type":"contract Controllable"},"id":1435,"name":"UserDefinedTypeName","src":"1981:12:28"}],"id":1436,"name":"InheritanceSpecifier","src":"1981:12:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":845,"type":"contract Transferrable"},"id":1437,"name":"UserDefinedTypeName","src":"1995:13:28"}],"id":1438,"name":"InheritanceSpecifier","src":"1995:13:28"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":4725,"type":"library strings"},"id":1439,"name":"UserDefinedTypeName","src":"2021:7:28"}],"id":1440,"name":"UsingForDirective","src":"2015:20:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":452,"type":"library SafeMath"},"id":1441,"name":"UserDefinedTypeName","src":"2046:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":1442,"name":"ElementaryTypeName","src":"2059:7:28"}],"id":1443,"name":"UsingForDirective","src":"2040:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":4836,"type":"library BytesUtils"},"id":1444,"name":"UserDefinedTypeName","src":"2078:10:28"},{"attributes":{"name":"bytes","type":"bytes"},"id":1445,"name":"ElementaryTypeName","src":"2093:5:28"}],"id":1446,"name":"UsingForDirective","src":"2072:27:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1447,"name":"ElementaryTypeName","src":"2128:7:28"}],"id":1448,"name":"VariableDeclaration","src":"2128:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1449,"name":"ElementaryTypeName","src":"2145:7:28"}],"id":1450,"name":"VariableDeclaration","src":"2145:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":1454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1451,"name":"ElementaryTypeName","src":"2161:7:28"}],"id":1452,"name":"VariableDeclaration","src":"2161:13:28"}],"id":1453,"name":"ParameterList","src":"2127:48:28"}],"id":1454,"name":"EventDefinition","src":"2105:71:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1462,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1455,"name":"ElementaryTypeName","src":"2209:7:28"}],"id":1456,"name":"VariableDeclaration","src":"2209:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1462,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1457,"name":"ElementaryTypeName","src":"2226:7:28"}],"id":1458,"name":"VariableDeclaration","src":"2226:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":1462,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1459,"name":"ElementaryTypeName","src":"2242:4:28"}],"id":1460,"name":"VariableDeclaration","src":"2242:14:28"}],"id":1461,"name":"ParameterList","src":"2208:49:28"}],"id":1462,"name":"EventDefinition","src":"2182:76:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1470,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1463,"name":"ElementaryTypeName","src":"2292:7:28"}],"id":1464,"name":"VariableDeclaration","src":"2292:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1470,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1465,"name":"ElementaryTypeName","src":"2309:7:28"}],"id":1466,"name":"VariableDeclaration","src":"2309:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":1470,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1467,"name":"ElementaryTypeName","src":"2325:4:28"}],"id":1468,"name":"VariableDeclaration","src":"2325:16:28"}],"id":1469,"name":"ParameterList","src":"2291:51:28"}],"id":1470,"name":"EventDefinition","src":"2263:80:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1484,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1471,"name":"ElementaryTypeName","src":"2366:7:28"}],"id":1472,"name":"VariableDeclaration","src":"2366:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1484,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1473,"name":"ElementaryTypeName","src":"2383:7:28"}],"id":1474,"name":"VariableDeclaration","src":"2383:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":1484,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1475,"name":"ElementaryTypeName","src":"2399:6:28"}],"id":1476,"name":"VariableDeclaration","src":"2399:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":1484,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1477,"name":"ElementaryTypeName","src":"2415:7:28"}],"id":1478,"name":"VariableDeclaration","src":"2415:18:28"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":1484,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1479,"name":"ElementaryTypeName","src":"2435:4:28"}],"id":1480,"name":"VariableDeclaration","src":"2435:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":1484,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1481,"name":"ElementaryTypeName","src":"2451:4:28"}],"id":1482,"name":"VariableDeclaration","src":"2451:16:28"}],"id":1483,"name":"ParameterList","src":"2365:103:28"}],"id":1484,"name":"EventDefinition","src":"2349:120:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1490,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1485,"name":"ElementaryTypeName","src":"2493:7:28"}],"id":1486,"name":"VariableDeclaration","src":"2493:15:28"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1490,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1487,"name":"ElementaryTypeName","src":"2510:7:28"}],"id":1488,"name":"VariableDeclaration","src":"2510:14:28"}],"id":1489,"name":"ParameterList","src":"2492:33:28"}],"id":1490,"name":"EventDefinition","src":"2474:52:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":1494,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1491,"name":"ElementaryTypeName","src":"2552:6:28"}],"id":1492,"name":"VariableDeclaration","src":"2552:16:28"}],"id":1493,"name":"ParameterList","src":"2551:18:28"}],"id":1494,"name":"EventDefinition","src":"2532:38:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":1498,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1495,"name":"ElementaryTypeName","src":"2597:6:28"}],"id":1496,"name":"VariableDeclaration","src":"2597:16:28"}],"id":1497,"name":"ParameterList","src":"2596:18:28"}],"id":1498,"name":"EventDefinition","src":"2575:40:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1504,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1499,"name":"ElementaryTypeName","src":"2647:7:28"}],"id":1500,"name":"VariableDeclaration","src":"2647:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":1504,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1501,"name":"ElementaryTypeName","src":"2663:6:28"}],"id":1502,"name":"VariableDeclaration","src":"2663:16:28"}],"id":1503,"name":"ParameterList","src":"2646:34:28"}],"id":1504,"name":"EventDefinition","src":"2620:61:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":1510,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1505,"name":"ElementaryTypeName","src":"2715:7:28"}],"id":1506,"name":"VariableDeclaration","src":"2715:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":1510,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1507,"name":"ElementaryTypeName","src":"2731:6:28"}],"id":1508,"name":"VariableDeclaration","src":"2731:16:28"}],"id":1509,"name":"ParameterList","src":"2714:34:28"}],"id":1510,"name":"EventDefinition","src":"2686:63:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1518,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1511,"name":"ElementaryTypeName","src":"2769:7:28"}],"id":1512,"name":"VariableDeclaration","src":"2769:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1518,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1513,"name":"ElementaryTypeName","src":"2782:7:28"}],"id":1514,"name":"VariableDeclaration","src":"2782:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1518,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1515,"name":"ElementaryTypeName","src":"2798:7:28"}],"id":1516,"name":"VariableDeclaration","src":"2798:15:28"}],"id":1517,"name":"ParameterList","src":"2768:46:28"}],"id":1518,"name":"EventDefinition","src":"2755:60:28"},{"attributes":{"constant":true,"name":"_APPROVE","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1519,"name":"ElementaryTypeName","src":"2924:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":1520,"name":"Literal","src":"2959:10:28"}],"id":1521,"name":"VariableDeclaration","src":"2924:45:28"},{"attributes":{"constant":true,"name":"_BURN","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1522,"name":"ElementaryTypeName","src":"3028:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":1523,"name":"Literal","src":"3060:10:28"}],"id":1524,"name":"VariableDeclaration","src":"3028:42:28"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1525,"name":"ElementaryTypeName","src":"3118:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":1526,"name":"Literal","src":"3154:10:28"}],"id":1527,"name":"VariableDeclaration","src":"3118:46:28"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1528,"name":"ElementaryTypeName","src":"3224:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":1529,"name":"Literal","src":"3265:10:28"}],"id":1530,"name":"VariableDeclaration","src":"3224:51:28"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":2332,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":1545,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1531,"name":"ElementaryTypeName","src":"3371:6:28"}],"id":1532,"name":"VariableDeclaration","src":"3371:13:28"},{"attributes":{"constant":false,"name":"magnitude","scope":1545,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1533,"name":"ElementaryTypeName","src":"3410:7:28"}],"id":1534,"name":"VariableDeclaration","src":"3410:17:28"},{"attributes":{"constant":false,"name":"rate","scope":1545,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1535,"name":"ElementaryTypeName","src":"3452:7:28"}],"id":1536,"name":"VariableDeclaration","src":"3452:12:28"},{"attributes":{"constant":false,"name":"available","scope":1545,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1537,"name":"ElementaryTypeName","src":"3504:4:28"}],"id":1538,"name":"VariableDeclaration","src":"3504:14:28"},{"attributes":{"constant":false,"name":"loadable","scope":1545,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1539,"name":"ElementaryTypeName","src":"3570:4:28"}],"id":1540,"name":"VariableDeclaration","src":"3570:13:28"},{"attributes":{"constant":false,"name":"redeemable","scope":1545,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1541,"name":"ElementaryTypeName","src":"3640:4:28"}],"id":1542,"name":"VariableDeclaration","src":"3640:15:28"},{"attributes":{"constant":false,"name":"lastUpdate","scope":1545,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1543,"name":"ElementaryTypeName","src":"3724:7:28"}],"id":1544,"name":"VariableDeclaration","src":"3724:18:28"}],"id":1545,"name":"StructDefinition","src":"3348:433:28"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":2332,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":1546,"name":"ElementaryTypeName","src":"3795:7:28"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":1545,"type":"struct TokenWhitelist.Token"},"id":1547,"name":"UserDefinedTypeName","src":"3806:5:28"}],"id":1548,"name":"Mapping","src":"3787:25:28"}],"id":1549,"name":"VariableDeclaration","src":"3787:47:28"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":2332,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1550,"name":"ElementaryTypeName","src":"4004:6:28"},{"attributes":{"name":"bool","type":"bool"},"id":1551,"name":"ElementaryTypeName","src":"4014:4:28"}],"id":1552,"name":"Mapping","src":"3996:23:28"}],"id":1553,"name":"VariableDeclaration","src":"3996:50:28"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":2332,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1554,"name":"ElementaryTypeName","src":"4053:7:28"}],"id":1555,"name":"ArrayTypeName","src":"4053:9:28"}],"id":1556,"name":"VariableDeclaration","src":"4053:36:28"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":2332,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1557,"name":"ElementaryTypeName","src":"4182:7:28"}],"id":1558,"name":"VariableDeclaration","src":"4182:34:28"},{"attributes":{"constant":false,"name":"_stablecoin","scope":2332,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1559,"name":"ElementaryTypeName","src":"4266:7:28"}],"id":1560,"name":"VariableDeclaration","src":"4266:27:28"},{"attributes":{"constant":false,"name":"_oracleNode","scope":2332,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1561,"name":"ElementaryTypeName","src":"4372:7:28"}],"id":1562,"name":"VariableDeclaration","src":"4372:27:28"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":1612,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1563,"name":"ElementaryTypeName","src":"4770:7:28"}],"id":1564,"name":"VariableDeclaration","src":"4770:13:28"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1565,"name":"ElementaryTypeName","src":"4785:7:28"}],"id":1566,"name":"VariableDeclaration","src":"4785:20:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1567,"name":"ElementaryTypeName","src":"4807:7:28"}],"id":1568,"name":"VariableDeclaration","src":"4807:24:28"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":1612,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1569,"name":"ElementaryTypeName","src":"4833:7:28"}],"id":1570,"name":"VariableDeclaration","src":"4833:27:28"}],"id":1571,"name":"ParameterList","src":"4769:92:28"},{"attributes":{"parameters":[null]},"children":[],"id":1578,"name":"ParameterList","src":"4949:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1344,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1572,"name":"Identifier","src":"4885:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1564,"type":"address","value":"_ens_"},"id":1573,"name":"Identifier","src":"4899:5:28"}],"id":1574,"name":"ModifierInvocation","src":"4885:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":588,"type":"type(contract Controllable)","value":"Controllable"},"id":1575,"name":"Identifier","src":"4914:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1568,"type":"bytes32","value":"_controllerNode_"},"id":1576,"name":"Identifier","src":"4927:16:28"}],"id":1577,"name":"ModifierInvocation","src":"4914:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1562,"type":"bytes32","value":"_oracleNode"},"id":1579,"name":"Identifier","src":"4959:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1566,"type":"bytes32","value":"_oracleNode_"},"id":1580,"name":"Identifier","src":"4973:12:28"}],"id":1581,"name":"Assignment","src":"4959:26:28"}],"id":1582,"name":"ExpressionStatement","src":"4959:26:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1560,"type":"address","value":"_stablecoin"},"id":1583,"name":"Identifier","src":"4995:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1570,"type":"address","value":"_stablecoinAddress_"},"id":1584,"name":"Identifier","src":"5009:19:28"}],"id":1585,"name":"Assignment","src":"4995:33:28"}],"id":1586,"name":"ExpressionStatement","src":"4995:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1587,"name":"Identifier","src":"5083:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1521,"type":"bytes4","value":"_APPROVE"},"id":1588,"name":"Identifier","src":"5102:8:28"}],"id":1589,"name":"IndexAccess","src":"5083:28:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1590,"name":"Literal","src":"5114:4:28"}],"id":1591,"name":"Assignment","src":"5083:35:28"}],"id":1592,"name":"ExpressionStatement","src":"5083:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1593,"name":"Identifier","src":"5128:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1524,"type":"bytes4","value":"_BURN"},"id":1594,"name":"Identifier","src":"5147:5:28"}],"id":1595,"name":"IndexAccess","src":"5128:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1596,"name":"Literal","src":"5156:4:28"}],"id":1597,"name":"Assignment","src":"5128:32:28"}],"id":1598,"name":"ExpressionStatement","src":"5128:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1599,"name":"Identifier","src":"5170:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"bytes4","value":"_TRANSFER"},"id":1600,"name":"Identifier","src":"5189:9:28"}],"id":1601,"name":"IndexAccess","src":"5170:29:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1602,"name":"Literal","src":"5202:4:28"}],"id":1603,"name":"Assignment","src":"5170:36:28"}],"id":1604,"name":"ExpressionStatement","src":"5170:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1605,"name":"Identifier","src":"5216:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"bytes4","value":"_TRANSFER_FROM"},"id":1606,"name":"Identifier","src":"5235:14:28"}],"id":1607,"name":"IndexAccess","src":"5216:34:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1608,"name":"Literal","src":"5253:4:28"}],"id":1609,"name":"Assignment","src":"5216:41:28"}],"id":1610,"name":"ExpressionStatement","src":"5216:41:28"}],"id":1611,"name":"Block","src":"4949:315:28"}],"id":1612,"name":"FunctionDefinition","src":"4758:506:28"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1613,"name":"ParameterList","src":"5296:2:28"},{"children":[{"attributes":{"assignments":[1615]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":1634,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1614,"name":"ElementaryTypeName","src":"5309:7:28"}],"id":1615,"name":"VariableDeclaration","src":"5309:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1616,"name":"Identifier","src":"5333:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1562,"type":"bytes32","value":"_oracleNode"},"id":1617,"name":"Identifier","src":"5345:11:28"}],"id":1618,"name":"FunctionCall","src":"5333:24:28"}],"id":1619,"name":"VariableDeclarationStatement","src":"5309:48:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1620,"name":"Identifier","src":"5367:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":587,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":1621,"name":"Identifier","src":"5375:8:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1622,"name":"Identifier","src":"5384:3:28"}],"id":1623,"name":"MemberAccess","src":"5384:10:28"}],"id":1624,"name":"FunctionCall","src":"5375:20:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1625,"name":"Identifier","src":"5399:3:28"}],"id":1626,"name":"MemberAccess","src":"5399:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1615,"type":"address","value":"oracleAddress"},"id":1627,"name":"Identifier","src":"5413:13:28"}],"id":1628,"name":"BinaryOperation","src":"5399:27:28"}],"id":1629,"name":"BinaryOperation","src":"5375:51:28"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":1630,"name":"Literal","src":"5428:24:28"}],"id":1631,"name":"FunctionCall","src":"5367:86:28"}],"id":1632,"name":"ExpressionStatement","src":"5367:86:28"},{"id":1633,"name":"PlaceholderStatement","src":"5463:1:28"}],"id":1634,"name":"Block","src":"5299:172:28"}],"id":1635,"name":"ModifierDefinition","src":"5270:201:28"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1636,"name":"ElementaryTypeName","src":"6068:7:28"}],"id":1637,"name":"ArrayTypeName","src":"6068:9:28"}],"id":1638,"name":"VariableDeclaration","src":"6068:26:28"},{"attributes":{"constant":false,"name":"_symbols","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1639,"name":"ElementaryTypeName","src":"6104:7:28"}],"id":1640,"name":"ArrayTypeName","src":"6104:9:28"}],"id":1641,"name":"VariableDeclaration","src":"6104:27:28"},{"attributes":{"constant":false,"name":"_magnitude","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1642,"name":"ElementaryTypeName","src":"6141:7:28"}],"id":1643,"name":"ArrayTypeName","src":"6141:9:28"}],"id":1644,"name":"VariableDeclaration","src":"6141:29:28"},{"attributes":{"constant":false,"name":"_loadable","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1645,"name":"ElementaryTypeName","src":"6180:4:28"}],"id":1646,"name":"ArrayTypeName","src":"6180:6:28"}],"id":1647,"name":"VariableDeclaration","src":"6180:25:28"},{"attributes":{"constant":false,"name":"_redeemable","scope":1779,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1648,"name":"ElementaryTypeName","src":"6215:4:28"}],"id":1649,"name":"ArrayTypeName","src":"6215:6:28"}],"id":1650,"name":"VariableDeclaration","src":"6215:27:28"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":1779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1651,"name":"ElementaryTypeName","src":"6252:7:28"}],"id":1652,"name":"VariableDeclaration","src":"6252:19:28"}],"id":1653,"name":"ParameterList","src":"6058:219:28"},{"attributes":{"parameters":[null]},"children":[],"id":1656,"name":"ParameterList","src":"6297:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":1654,"name":"Identifier","src":"6287:9:28"}],"id":1655,"name":"ModifierInvocation","src":"6287:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1657,"name":"Identifier","src":"6368:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1658,"name":"Identifier","src":"6389:7:28"}],"id":1659,"name":"MemberAccess","src":"6389:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1641,"type":"bytes32[] calldata","value":"_symbols"},"id":1660,"name":"Identifier","src":"6407:8:28"}],"id":1661,"name":"MemberAccess","src":"6407:15:28"}],"id":1662,"name":"BinaryOperation","src":"6389:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1663,"name":"Identifier","src":"6442:7:28"}],"id":1664,"name":"MemberAccess","src":"6442:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1644,"type":"uint256[] calldata","value":"_magnitude"},"id":1665,"name":"Identifier","src":"6460:10:28"}],"id":1666,"name":"MemberAccess","src":"6460:17:28"}],"id":1667,"name":"BinaryOperation","src":"6442:35:28"}],"id":1668,"name":"BinaryOperation","src":"6389:88:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1669,"name":"Identifier","src":"6497:7:28"}],"id":1670,"name":"MemberAccess","src":"6497:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"bool[] calldata","value":"_loadable"},"id":1671,"name":"Identifier","src":"6515:9:28"}],"id":1672,"name":"MemberAccess","src":"6515:16:28"}],"id":1673,"name":"BinaryOperation","src":"6497:34:28"}],"id":1674,"name":"BinaryOperation","src":"6389:142:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1675,"name":"Identifier","src":"6551:7:28"}],"id":1676,"name":"MemberAccess","src":"6551:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"bool[] calldata","value":"_loadable"},"id":1677,"name":"Identifier","src":"6569:9:28"}],"id":1678,"name":"MemberAccess","src":"6569:16:28"}],"id":1679,"name":"BinaryOperation","src":"6551:34:28"}],"id":1680,"name":"BinaryOperation","src":"6389:196:28"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":1681,"name":"Literal","src":"6599:32:28"}],"id":1682,"name":"FunctionCall","src":"6368:273:28"}],"id":1683,"name":"ExpressionStatement","src":"6368:273:28"},{"children":[{"attributes":{"assignments":[1685]},"children":[{"attributes":{"constant":false,"name":"i","scope":1777,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1684,"name":"ElementaryTypeName","src":"6715:7:28"}],"id":1685,"name":"VariableDeclaration","src":"6715:9:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1686,"name":"Literal","src":"6727:1:28"}],"id":1687,"name":"VariableDeclarationStatement","src":"6715:13:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1688,"name":"Identifier","src":"6730:1:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1689,"name":"Identifier","src":"6734:7:28"}],"id":1690,"name":"MemberAccess","src":"6734:14:28"}],"id":1691,"name":"BinaryOperation","src":"6730:18:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1692,"name":"Identifier","src":"6750:1:28"}],"id":1693,"name":"UnaryOperation","src":"6750:3:28"}],"id":1694,"name":"ExpressionStatement","src":"6750:3:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1695,"name":"Identifier","src":"6832:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1696,"name":"Identifier","src":"6841:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1697,"name":"Identifier","src":"6855:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1698,"name":"Identifier","src":"6863:1:28"}],"id":1699,"name":"IndexAccess","src":"6855:10:28"}],"id":1700,"name":"IndexAccess","src":"6841:25:28"}],"id":1701,"name":"MemberAccess","src":"6841:35:28"}],"id":1702,"name":"UnaryOperation","src":"6840:36:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":1703,"name":"Literal","src":"6878:25:28"}],"id":1704,"name":"FunctionCall","src":"6832:72:28"}],"id":1705,"name":"ExpressionStatement","src":"6832:72:28"},{"attributes":{"assignments":[1707]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":1776,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1706,"name":"ElementaryTypeName","src":"6964:6:28"}],"id":1707,"name":"VariableDeclaration","src":"6964:20:28"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":3274,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":3229,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1641,"type":"bytes32[] calldata","value":"_symbols"},"id":1708,"name":"Identifier","src":"6987:8:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1709,"name":"Identifier","src":"6996:1:28"}],"id":1710,"name":"IndexAccess","src":"6987:11:28"}],"id":1711,"name":"MemberAccess","src":"6987:22:28"}],"id":1712,"name":"FunctionCall","src":"6987:24:28"}],"id":1713,"name":"MemberAccess","src":"6987:33:28"}],"id":1714,"name":"FunctionCall","src":"6987:35:28"}],"id":1715,"name":"VariableDeclarationStatement","src":"6964:58:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1716,"name":"Identifier","src":"7084:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1717,"name":"Identifier","src":"7098:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1718,"name":"Identifier","src":"7106:1:28"}],"id":1719,"name":"IndexAccess","src":"7098:10:28"}],"id":1720,"name":"IndexAccess","src":"7084:25:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1545,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":1721,"name":"Identifier","src":"7112:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"string memory","value":"symbol"},"id":1722,"name":"Identifier","src":"7144:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1644,"type":"uint256[] calldata","value":"_magnitude"},"id":1723,"name":"Identifier","src":"7179:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1724,"name":"Identifier","src":"7190:1:28"}],"id":1725,"name":"IndexAccess","src":"7179:13:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1726,"name":"Literal","src":"7216:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1727,"name":"Literal","src":"7246:4:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"bool[] calldata","value":"_loadable"},"id":1728,"name":"Identifier","src":"7278:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1729,"name":"Identifier","src":"7288:1:28"}],"id":1730,"name":"IndexAccess","src":"7278:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1650,"type":"bool[] calldata","value":"_redeemable"},"id":1731,"name":"Identifier","src":"7320:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1732,"name":"Identifier","src":"7332:1:28"}],"id":1733,"name":"IndexAccess","src":"7320:14:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1652,"type":"uint256","value":"_lastUpdate"},"id":1734,"name":"Identifier","src":"7364:11:28"}],"id":1735,"name":"FunctionCall","src":"7112:278:28"}],"id":1736,"name":"Assignment","src":"7084:306:28"}],"id":1737,"name":"ExpressionStatement","src":"7084:306:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1738,"name":"Identifier","src":"7462:18:28"}],"id":1740,"name":"MemberAccess","src":"7462:23:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1741,"name":"Identifier","src":"7486:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1742,"name":"Identifier","src":"7494:1:28"}],"id":1743,"name":"IndexAccess","src":"7486:10:28"}],"id":1744,"name":"FunctionCall","src":"7462:35:28"}],"id":1745,"name":"ExpressionStatement","src":"7462:35:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1650,"type":"bool[] calldata","value":"_redeemable"},"id":1746,"name":"Identifier","src":"7587:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1747,"name":"Identifier","src":"7599:1:28"}],"id":1748,"name":"IndexAccess","src":"7587:14:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":1749,"name":"Identifier","src":"7621:18:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":346,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":1750,"name":"Identifier","src":"7642:18:28"}],"id":1751,"name":"MemberAccess","src":"7642:22:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1752,"name":"Literal","src":"7665:1:28"}],"id":1753,"name":"FunctionCall","src":"7642:25:28"}],"id":1754,"name":"Assignment","src":"7621:46:28"}],"id":1755,"name":"ExpressionStatement","src":"7621:46:28"}],"id":1756,"name":"Block","src":"7603:79:28"}],"id":1757,"name":"IfStatement","src":"7583:99:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":1484,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":1758,"name":"Identifier","src":"7742:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1759,"name":"Identifier","src":"7753:3:28"}],"id":1760,"name":"MemberAccess","src":"7753:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1638,"type":"address[] calldata","value":"_tokens"},"id":1761,"name":"Identifier","src":"7765:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1762,"name":"Identifier","src":"7773:1:28"}],"id":1763,"name":"IndexAccess","src":"7765:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"string memory","value":"symbol"},"id":1764,"name":"Identifier","src":"7777:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1644,"type":"uint256[] calldata","value":"_magnitude"},"id":1765,"name":"Identifier","src":"7785:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1766,"name":"Identifier","src":"7796:1:28"}],"id":1767,"name":"IndexAccess","src":"7785:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"bool[] calldata","value":"_loadable"},"id":1768,"name":"Identifier","src":"7800:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1769,"name":"Identifier","src":"7810:1:28"}],"id":1770,"name":"IndexAccess","src":"7800:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1650,"type":"bool[] calldata","value":"_redeemable"},"id":1771,"name":"Identifier","src":"7814:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1685,"type":"uint256","value":"i"},"id":1772,"name":"Identifier","src":"7826:1:28"}],"id":1773,"name":"IndexAccess","src":"7814:14:28"}],"id":1774,"name":"FunctionCall","src":"7742:87:28"}],"id":1775,"name":"EmitStatement","src":"7737:92:28"}],"id":1776,"name":"Block","src":"6755:1085:28"}],"id":1777,"name":"ForStatement","src":"6710:1130:28"}],"id":1778,"name":"Block","src":"6297:1549:28"}],"id":1779,"name":"FunctionDefinition","src":"6040:1806:28"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":1880,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1780,"name":"ElementaryTypeName","src":"7995:7:28"}],"id":1781,"name":"ArrayTypeName","src":"7995:9:28"}],"id":1782,"name":"VariableDeclaration","src":"7995:26:28"}],"id":1783,"name":"ParameterList","src":"7994:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":1786,"name":"ParameterList","src":"8042:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":1784,"name":"Identifier","src":"8032:9:28"}],"id":1785,"name":"ModifierInvocation","src":"8032:9:28"},{"children":[{"children":[{"attributes":{"assignments":[1788]},"children":[{"attributes":{"constant":false,"name":"i","scope":1878,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1787,"name":"ElementaryTypeName","src":"8160:7:28"}],"id":1788,"name":"VariableDeclaration","src":"8160:9:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1789,"name":"Literal","src":"8172:1:28"}],"id":1790,"name":"VariableDeclarationStatement","src":"8160:13:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1788,"type":"uint256","value":"i"},"id":1791,"name":"Identifier","src":"8175:1:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"address[] calldata","value":"_tokens"},"id":1792,"name":"Identifier","src":"8179:7:28"}],"id":1793,"name":"MemberAccess","src":"8179:14:28"}],"id":1794,"name":"BinaryOperation","src":"8175:18:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1788,"type":"uint256","value":"i"},"id":1795,"name":"Identifier","src":"8195:1:28"}],"id":1796,"name":"UnaryOperation","src":"8195:3:28"}],"id":1797,"name":"ExpressionStatement","src":"8195:3:28"},{"children":[{"attributes":{"assignments":[1799]},"children":[{"attributes":{"constant":false,"name":"token","scope":1877,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1798,"name":"ElementaryTypeName","src":"8254:7:28"}],"id":1799,"name":"VariableDeclaration","src":"8254:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"address[] calldata","value":"_tokens"},"id":1800,"name":"Identifier","src":"8270:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1788,"type":"uint256","value":"i"},"id":1801,"name":"Identifier","src":"8278:1:28"}],"id":1802,"name":"IndexAccess","src":"8270:10:28"}],"id":1803,"name":"VariableDeclarationStatement","src":"8254:26:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1804,"name":"Identifier","src":"8363:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1805,"name":"Identifier","src":"8371:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1806,"name":"Identifier","src":"8385:5:28"}],"id":1807,"name":"IndexAccess","src":"8371:20:28"}],"id":1808,"name":"MemberAccess","src":"8371:30:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1809,"name":"Literal","src":"8403:24:28"}],"id":1810,"name":"FunctionCall","src":"8363:65:28"}],"id":1811,"name":"ExpressionStatement","src":"8363:65:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1812,"name":"Identifier","src":"8518:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1813,"name":"Identifier","src":"8532:5:28"}],"id":1814,"name":"IndexAccess","src":"8518:20:28"}],"id":1815,"name":"MemberAccess","src":"8518:31:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":1816,"name":"Identifier","src":"8569:18:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":371,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":1817,"name":"Identifier","src":"8590:18:28"}],"id":1818,"name":"MemberAccess","src":"8590:22:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1819,"name":"Literal","src":"8613:1:28"}],"id":1820,"name":"FunctionCall","src":"8590:25:28"}],"id":1821,"name":"Assignment","src":"8569:46:28"}],"id":1822,"name":"ExpressionStatement","src":"8569:46:28"}],"id":1823,"name":"Block","src":"8551:79:28"}],"id":1824,"name":"IfStatement","src":"8514:116:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1825,"name":"Identifier","src":"8690:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1826,"name":"Identifier","src":"8704:5:28"}],"id":1827,"name":"IndexAccess","src":"8690:20:28"}],"id":1828,"name":"UnaryOperation","src":"8683:27:28"}],"id":1829,"name":"ExpressionStatement","src":"8683:27:28"},{"children":[{"attributes":{"assignments":[1831]},"children":[{"attributes":{"constant":false,"name":"j","scope":1865,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1830,"name":"ElementaryTypeName","src":"8792:7:28"}],"id":1831,"name":"VariableDeclaration","src":"8792:9:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1832,"name":"Literal","src":"8804:1:28"}],"id":1833,"name":"VariableDeclarationStatement","src":"8792:13:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"j"},"id":1834,"name":"Identifier","src":"8807:1:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":371,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1835,"name":"Identifier","src":"8811:18:28"}],"id":1836,"name":"MemberAccess","src":"8811:25:28"}],"id":1837,"name":"MemberAccess","src":"8811:29:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1838,"name":"Literal","src":"8841:1:28"}],"id":1839,"name":"FunctionCall","src":"8811:32:28"}],"id":1840,"name":"BinaryOperation","src":"8807:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"j"},"id":1841,"name":"Identifier","src":"8845:1:28"}],"id":1842,"name":"UnaryOperation","src":"8845:3:28"}],"id":1843,"name":"ExpressionStatement","src":"8845:3:28"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1844,"name":"Identifier","src":"8872:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"j"},"id":1845,"name":"Identifier","src":"8891:1:28"}],"id":1846,"name":"IndexAccess","src":"8872:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1847,"name":"Identifier","src":"8897:5:28"}],"id":1848,"name":"BinaryOperation","src":"8872:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1849,"name":"Identifier","src":"8926:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"j"},"id":1850,"name":"Identifier","src":"8945:1:28"}],"id":1851,"name":"IndexAccess","src":"8926:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1852,"name":"Identifier","src":"8950:18:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":371,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1853,"name":"Identifier","src":"8969:18:28"}],"id":1854,"name":"MemberAccess","src":"8969:25:28"}],"id":1855,"name":"MemberAccess","src":"8969:29:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1856,"name":"Literal","src":"8999:1:28"}],"id":1857,"name":"FunctionCall","src":"8969:32:28"}],"id":1858,"name":"IndexAccess","src":"8950:52:28"}],"id":1859,"name":"Assignment","src":"8926:76:28"}],"id":1860,"name":"ExpressionStatement","src":"8926:76:28"},{"id":1861,"name":"Break","src":"9024:5:28"}],"id":1862,"name":"Block","src":"8904:144:28"}],"id":1863,"name":"IfStatement","src":"8868:180:28"}],"id":1864,"name":"Block","src":"8850:212:28"}],"id":1865,"name":"ForStatement","src":"8787:275:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1866,"name":"Identifier","src":"9075:18:28"}],"id":1868,"name":"MemberAccess","src":"9075:25:28"}],"id":1869,"name":"UnaryOperation","src":"9075:27:28"}],"id":1870,"name":"ExpressionStatement","src":"9075:27:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1490,"type":"function (address,address)","value":"RemovedToken"},"id":1871,"name":"Identifier","src":"9162:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":1872,"name":"Identifier","src":"9175:3:28"}],"id":1873,"name":"MemberAccess","src":"9175:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"address","value":"token"},"id":1874,"name":"Identifier","src":"9187:5:28"}],"id":1875,"name":"FunctionCall","src":"9162:31:28"}],"id":1876,"name":"EmitStatement","src":"9157:36:28"}],"id":1877,"name":"Block","src":"8200:1004:28"}],"id":1878,"name":"ForStatement","src":"8155:1049:28"}],"id":1879,"name":"Block","src":"8042:1168:28"}],"id":1880,"name":"FunctionDefinition","src":"7973:1237:28"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1993,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1881,"name":"ElementaryTypeName","src":"9404:7:28"}],"id":1882,"name":"VariableDeclaration","src":"9404:14:28"},{"attributes":{"constant":false,"name":"_data","scope":1993,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1883,"name":"ElementaryTypeName","src":"9420:5:28"}],"id":1884,"name":"VariableDeclaration","src":"9420:20:28"}],"id":1885,"name":"ParameterList","src":"9403:38:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":1993,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1886,"name":"ElementaryTypeName","src":"9465:7:28"}],"id":1887,"name":"VariableDeclaration","src":"9465:7:28"},{"attributes":{"constant":false,"name":"","scope":1993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1888,"name":"ElementaryTypeName","src":"9474:7:28"}],"id":1889,"name":"VariableDeclaration","src":"9474:7:28"}],"id":1890,"name":"ParameterList","src":"9464:18:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1891,"name":"Identifier","src":"9669:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1892,"name":"Identifier","src":"9677:5:28"}],"id":1893,"name":"MemberAccess","src":"9677:12:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1894,"name":"Literal","src":"9693:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1895,"name":"Literal","src":"9697:2:28"}],"id":1896,"name":"BinaryOperation","src":"9693:6:28"}],"id":1897,"name":"BinaryOperation","src":"9677:22:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":1898,"name":"Literal","src":"9701:34:28"}],"id":1899,"name":"FunctionCall","src":"9669:67:28"}],"id":1900,"name":"ExpressionStatement","src":"9669:67:28"},{"attributes":{"assignments":[1902]},"children":[{"attributes":{"constant":false,"name":"signature","scope":1992,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1901,"name":"ElementaryTypeName","src":"9782:6:28"}],"id":1902,"name":"VariableDeclaration","src":"9782:16:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":4801,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1903,"name":"Identifier","src":"9801:5:28"}],"id":1904,"name":"MemberAccess","src":"9801:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1905,"name":"Literal","src":"9822:1:28"}],"id":1906,"name":"FunctionCall","src":"9801:23:28"}],"id":1907,"name":"VariableDeclarationStatement","src":"9782:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1908,"name":"Identifier","src":"9877:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":1909,"name":"Identifier","src":"9885:22:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1882,"type":"address","value":"_token"},"id":1910,"name":"Identifier","src":"9908:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1902,"type":"bytes4","value":"signature"},"id":1911,"name":"Identifier","src":"9916:9:28"}],"id":1912,"name":"FunctionCall","src":"9885:41:28"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":1913,"name":"Literal","src":"9928:20:28"}],"id":1914,"name":"FunctionCall","src":"9877:72:28"}],"id":1915,"name":"ExpressionStatement","src":"9877:72:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1902,"type":"bytes4","value":"signature"},"id":1916,"name":"Identifier","src":"10048:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1524,"type":"bytes4","value":"_BURN"},"id":1917,"name":"Identifier","src":"10061:5:28"}],"id":1918,"name":"BinaryOperation","src":"10048:18:28"},{"children":[{"attributes":{"functionReturnParameters":1890},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1882,"type":"address","value":"_token"},"id":1919,"name":"Identifier","src":"10133:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4835,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1920,"name":"Identifier","src":"10141:5:28"}],"id":1921,"name":"MemberAccess","src":"10141:21:28"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1922,"name":"Literal","src":"10163:1:28"}],"id":1923,"name":"FunctionCall","src":"10141:24:28"}],"id":1924,"name":"TupleExpression","src":"10132:34:28"}],"id":1925,"name":"Return","src":"10125:41:28"}],"id":1926,"name":"Block","src":"10068:109:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1902,"type":"bytes4","value":"signature"},"id":1927,"name":"Identifier","src":"10187:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"bytes4","value":"_TRANSFER_FROM"},"id":1928,"name":"Identifier","src":"10200:14:28"}],"id":1929,"name":"BinaryOperation","src":"10187:27:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1930,"name":"Identifier","src":"10301:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1931,"name":"Identifier","src":"10309:5:28"}],"id":1932,"name":"MemberAccess","src":"10309:12:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1933,"name":"Literal","src":"10325:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1934,"name":"Literal","src":"10329:2:28"}],"id":1935,"name":"BinaryOperation","src":"10325:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1936,"name":"Literal","src":"10334:2:28"}],"id":1937,"name":"BinaryOperation","src":"10325:11:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1938,"name":"Literal","src":"10339:2:28"}],"id":1939,"name":"BinaryOperation","src":"10325:16:28"}],"id":1940,"name":"BinaryOperation","src":"10309:32:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":1941,"name":"Literal","src":"10343:34:28"}],"id":1942,"name":"FunctionCall","src":"10301:77:28"}],"id":1943,"name":"ExpressionStatement","src":"10301:77:28"},{"attributes":{"functionReturnParameters":1890},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":4767,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1944,"name":"Identifier","src":"10400:5:28"}],"id":1945,"name":"MemberAccess","src":"10400:21:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1946,"name":"Literal","src":"10422:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1947,"name":"Literal","src":"10426:2:28"}],"id":1948,"name":"BinaryOperation","src":"10422:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":1949,"name":"Literal","src":"10431:2:28"}],"id":1950,"name":"BinaryOperation","src":"10422:11:28"}],"id":1951,"name":"FunctionCall","src":"10400:34:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4835,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1952,"name":"Identifier","src":"10436:5:28"}],"id":1953,"name":"MemberAccess","src":"10436:21:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1954,"name":"Literal","src":"10458:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1955,"name":"Literal","src":"10462:2:28"}],"id":1956,"name":"BinaryOperation","src":"10458:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1957,"name":"Literal","src":"10467:2:28"}],"id":1958,"name":"BinaryOperation","src":"10458:11:28"}],"id":1959,"name":"FunctionCall","src":"10436:34:28"}],"id":1960,"name":"TupleExpression","src":"10399:72:28"}],"id":1961,"name":"Return","src":"10392:79:28"}],"id":1962,"name":"Block","src":"10216:266:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":1963,"name":"Identifier","src":"10590:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1964,"name":"Identifier","src":"10598:5:28"}],"id":1965,"name":"MemberAccess","src":"10598:12:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1966,"name":"Literal","src":"10614:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1967,"name":"Literal","src":"10618:2:28"}],"id":1968,"name":"BinaryOperation","src":"10614:6:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1969,"name":"Literal","src":"10623:2:28"}],"id":1970,"name":"BinaryOperation","src":"10614:11:28"}],"id":1971,"name":"BinaryOperation","src":"10598:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":1972,"name":"Literal","src":"10627:39:28"}],"id":1973,"name":"FunctionCall","src":"10590:77:28"}],"id":1974,"name":"ExpressionStatement","src":"10590:77:28"},{"attributes":{"functionReturnParameters":1890},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":4767,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1975,"name":"Identifier","src":"10689:5:28"}],"id":1976,"name":"MemberAccess","src":"10689:21:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1977,"name":"Literal","src":"10711:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":1978,"name":"Literal","src":"10715:2:28"}],"id":1979,"name":"BinaryOperation","src":"10711:6:28"}],"id":1980,"name":"FunctionCall","src":"10689:29:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4835,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1884,"type":"bytes calldata","value":"_data"},"id":1981,"name":"Identifier","src":"10720:5:28"}],"id":1982,"name":"MemberAccess","src":"10720:21:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1983,"name":"Literal","src":"10742:1:28"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1984,"name":"Literal","src":"10746:2:28"}],"id":1985,"name":"BinaryOperation","src":"10742:6:28"}],"id":1986,"name":"FunctionCall","src":"10720:29:28"}],"id":1987,"name":"TupleExpression","src":"10688:62:28"}],"id":1988,"name":"Return","src":"10681:69:28"}],"id":1989,"name":"Block","src":"10488:273:28"}],"id":1990,"name":"IfStatement","src":"10183:578:28"}],"id":1991,"name":"IfStatement","src":"10044:717:28"}],"id":1992,"name":"Block","src":"9483:1284:28"}],"id":1993,"name":"FunctionDefinition","src":"9368:1399:28"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2025,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1994,"name":"ElementaryTypeName","src":"10866:7:28"}],"id":1995,"name":"VariableDeclaration","src":"10866:14:28"},{"attributes":{"constant":false,"name":"_loadable","scope":2025,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1996,"name":"ElementaryTypeName","src":"10882:4:28"}],"id":1997,"name":"VariableDeclaration","src":"10882:14:28"}],"id":1998,"name":"ParameterList","src":"10865:32:28"},{"attributes":{"parameters":[null]},"children":[],"id":2001,"name":"ParameterList","src":"10917:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":1999,"name":"Identifier","src":"10907:9:28"}],"id":2000,"name":"ModifierInvocation","src":"10907:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2002,"name":"Identifier","src":"10969:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2003,"name":"Identifier","src":"10977:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"address","value":"_token"},"id":2004,"name":"Identifier","src":"10991:6:28"}],"id":2005,"name":"IndexAccess","src":"10977:21:28"}],"id":2006,"name":"MemberAccess","src":"10977:31:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":2007,"name":"Literal","src":"11010:24:28"}],"id":2008,"name":"FunctionCall","src":"10969:66:28"}],"id":2009,"name":"ExpressionStatement","src":"10969:66:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":1540,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2010,"name":"Identifier","src":"11108:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"address","value":"_token"},"id":2011,"name":"Identifier","src":"11122:6:28"}],"id":2012,"name":"IndexAccess","src":"11108:21:28"}],"id":2013,"name":"MemberAccess","src":"11108:30:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"bool","value":"_loadable"},"id":2014,"name":"Identifier","src":"11141:9:28"}],"id":2015,"name":"Assignment","src":"11108:42:28"}],"id":2016,"name":"ExpressionStatement","src":"11108:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":1462,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":2017,"name":"Identifier","src":"11166:20:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2018,"name":"Identifier","src":"11187:3:28"}],"id":2019,"name":"MemberAccess","src":"11187:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"address","value":"_token"},"id":2020,"name":"Identifier","src":"11199:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"bool","value":"_loadable"},"id":2021,"name":"Identifier","src":"11207:9:28"}],"id":2022,"name":"FunctionCall","src":"11166:51:28"}],"id":2023,"name":"EmitStatement","src":"11161:56:28"}],"id":2024,"name":"Block","src":"10917:307:28"}],"id":2025,"name":"FunctionDefinition","src":"10840:384:28"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2057,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2026,"name":"ElementaryTypeName","src":"11327:7:28"}],"id":2027,"name":"VariableDeclaration","src":"11327:14:28"},{"attributes":{"constant":false,"name":"_redeemable","scope":2057,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2028,"name":"ElementaryTypeName","src":"11343:4:28"}],"id":2029,"name":"VariableDeclaration","src":"11343:16:28"}],"id":2030,"name":"ParameterList","src":"11326:34:28"},{"attributes":{"parameters":[null]},"children":[],"id":2033,"name":"ParameterList","src":"11380:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":2031,"name":"Identifier","src":"11370:9:28"}],"id":2032,"name":"ModifierInvocation","src":"11370:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2034,"name":"Identifier","src":"11432:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2035,"name":"Identifier","src":"11440:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2027,"type":"address","value":"_token"},"id":2036,"name":"Identifier","src":"11454:6:28"}],"id":2037,"name":"IndexAccess","src":"11440:21:28"}],"id":2038,"name":"MemberAccess","src":"11440:31:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":2039,"name":"Literal","src":"11473:24:28"}],"id":2040,"name":"FunctionCall","src":"11432:66:28"}],"id":2041,"name":"ExpressionStatement","src":"11432:66:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2042,"name":"Identifier","src":"11573:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2027,"type":"address","value":"_token"},"id":2043,"name":"Identifier","src":"11587:6:28"}],"id":2044,"name":"IndexAccess","src":"11573:21:28"}],"id":2045,"name":"MemberAccess","src":"11573:32:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2029,"type":"bool","value":"_redeemable"},"id":2046,"name":"Identifier","src":"11608:11:28"}],"id":2047,"name":"Assignment","src":"11573:46:28"}],"id":2048,"name":"ExpressionStatement","src":"11573:46:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":1470,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":2049,"name":"Identifier","src":"11635:22:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2050,"name":"Identifier","src":"11658:3:28"}],"id":2051,"name":"MemberAccess","src":"11658:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2027,"type":"address","value":"_token"},"id":2052,"name":"Identifier","src":"11670:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2029,"type":"bool","value":"_redeemable"},"id":2053,"name":"Identifier","src":"11678:11:28"}],"id":2054,"name":"FunctionCall","src":"11635:55:28"}],"id":2055,"name":"EmitStatement","src":"11630:60:28"}],"id":2056,"name":"Block","src":"11380:317:28"}],"id":2057,"name":"FunctionDefinition","src":"11299:398:28"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2098,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2058,"name":"ElementaryTypeName","src":"11999:7:28"}],"id":2059,"name":"VariableDeclaration","src":"11999:14:28"},{"attributes":{"constant":false,"name":"_rate","scope":2098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2060,"name":"ElementaryTypeName","src":"12015:7:28"}],"id":2061,"name":"VariableDeclaration","src":"12015:13:28"},{"attributes":{"constant":false,"name":"_updateDate","scope":2098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2062,"name":"ElementaryTypeName","src":"12030:7:28"}],"id":2063,"name":"VariableDeclaration","src":"12030:19:28"}],"id":2064,"name":"ParameterList","src":"11998:52:28"},{"attributes":{"parameters":[null]},"children":[],"id":2067,"name":"ParameterList","src":"12078:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1635,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":2065,"name":"Identifier","src":"12060:17:28"}],"id":2066,"name":"ModifierInvocation","src":"12060:17:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2068,"name":"Identifier","src":"12130:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2069,"name":"Identifier","src":"12138:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_token"},"id":2070,"name":"Identifier","src":"12152:6:28"}],"id":2071,"name":"IndexAccess","src":"12138:21:28"}],"id":2072,"name":"MemberAccess","src":"12138:31:28"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":2073,"name":"Literal","src":"12171:24:28"}],"id":2074,"name":"FunctionCall","src":"12130:66:28"}],"id":2075,"name":"ExpressionStatement","src":"12130:66:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":1536,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2076,"name":"Identifier","src":"12242:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_token"},"id":2077,"name":"Identifier","src":"12256:6:28"}],"id":2078,"name":"IndexAccess","src":"12242:21:28"}],"id":2079,"name":"MemberAccess","src":"12242:26:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2061,"type":"uint256","value":"_rate"},"id":2080,"name":"Identifier","src":"12271:5:28"}],"id":2081,"name":"Assignment","src":"12242:34:28"}],"id":2082,"name":"ExpressionStatement","src":"12242:34:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":1544,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2083,"name":"Identifier","src":"12339:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_token"},"id":2084,"name":"Identifier","src":"12353:6:28"}],"id":2085,"name":"IndexAccess","src":"12339:21:28"}],"id":2086,"name":"MemberAccess","src":"12339:32:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2063,"type":"uint256","value":"_updateDate"},"id":2087,"name":"Identifier","src":"12374:11:28"}],"id":2088,"name":"Assignment","src":"12339:46:28"}],"id":2089,"name":"ExpressionStatement","src":"12339:46:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1454,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":2090,"name":"Identifier","src":"12439:16:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"msg","value":"msg"},"id":2091,"name":"Identifier","src":"12456:3:28"}],"id":2092,"name":"MemberAccess","src":"12456:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_token"},"id":2093,"name":"Identifier","src":"12468:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2061,"type":"uint256","value":"_rate"},"id":2094,"name":"Identifier","src":"12476:5:28"}],"id":2095,"name":"FunctionCall","src":"12439:43:28"}],"id":2096,"name":"EmitStatement","src":"12434:48:28"}],"id":2097,"name":"Block","src":"12078:411:28"}],"id":2098,"name":"FunctionDefinition","src":"11974:515:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":2332,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2122,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2099,"name":"ElementaryTypeName","src":"12593:15:28"}],"id":2100,"name":"VariableDeclaration","src":"12593:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":2122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2101,"name":"ElementaryTypeName","src":"12614:7:28"}],"id":2102,"name":"VariableDeclaration","src":"12614:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":2122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2103,"name":"ElementaryTypeName","src":"12630:7:28"}],"id":2104,"name":"VariableDeclaration","src":"12630:15:28"}],"id":2105,"name":"ParameterList","src":"12592:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":2108,"name":"ParameterList","src":"12666:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":545,"type":"modifier ()","value":"onlyAdmin"},"id":2106,"name":"Identifier","src":"12656:9:28"}],"id":2107,"name":"ModifierInvocation","src":"12656:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":844,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2109,"name":"Identifier","src":"12676:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2100,"type":"address payable","value":"_to"},"id":2110,"name":"Identifier","src":"12690:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"address","value":"_asset"},"id":2111,"name":"Identifier","src":"12695:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"_amount"},"id":2112,"name":"Identifier","src":"12703:7:28"}],"id":2113,"name":"FunctionCall","src":"12676:35:28"}],"id":2114,"name":"ExpressionStatement","src":"12676:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1518,"type":"function (address,address,uint256)","value":"Claimed"},"id":2115,"name":"Identifier","src":"12726:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2100,"type":"address payable","value":"_to"},"id":2116,"name":"Identifier","src":"12734:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"address","value":"_asset"},"id":2117,"name":"Identifier","src":"12739:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"_amount"},"id":2118,"name":"Identifier","src":"12747:7:28"}],"id":2119,"name":"FunctionCall","src":"12726:29:28"}],"id":2120,"name":"EmitStatement","src":"12721:34:28"}],"id":2121,"name":"Block","src":"12666:96:28"}],"id":2122,"name":"FunctionDefinition","src":"12578:184:28"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":2164,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2123,"name":"ElementaryTypeName","src":"13336:7:28"}],"id":2124,"name":"VariableDeclaration","src":"13336:10:28"}],"id":2125,"name":"ParameterList","src":"13335:12:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2126,"name":"ElementaryTypeName","src":"13371:6:28"}],"id":2127,"name":"VariableDeclaration","src":"13371:13:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2128,"name":"ElementaryTypeName","src":"13386:7:28"}],"id":2129,"name":"VariableDeclaration","src":"13386:7:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2130,"name":"ElementaryTypeName","src":"13395:7:28"}],"id":2131,"name":"VariableDeclaration","src":"13395:7:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2132,"name":"ElementaryTypeName","src":"13404:4:28"}],"id":2133,"name":"VariableDeclaration","src":"13404:4:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2134,"name":"ElementaryTypeName","src":"13410:4:28"}],"id":2135,"name":"VariableDeclaration","src":"13410:4:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2136,"name":"ElementaryTypeName","src":"13416:4:28"}],"id":2137,"name":"VariableDeclaration","src":"13416:4:28"},{"attributes":{"constant":false,"name":"","scope":2164,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2138,"name":"ElementaryTypeName","src":"13422:7:28"}],"id":2139,"name":"VariableDeclaration","src":"13422:7:28"}],"id":2140,"name":"ParameterList","src":"13370:60:28"},{"children":[{"attributes":{"assignments":[2142]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":2163,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":1545,"type":"struct TokenWhitelist.Token"},"id":2141,"name":"UserDefinedTypeName","src":"13441:5:28"}],"id":2142,"name":"VariableDeclaration","src":"13441:23:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2143,"name":"Identifier","src":"13467:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2124,"type":"address","value":"_a"},"id":2144,"name":"Identifier","src":"13481:2:28"}],"id":2145,"name":"IndexAccess","src":"13467:17:28"}],"id":2146,"name":"VariableDeclarationStatement","src":"13441:43:28"},{"attributes":{"functionReturnParameters":2140},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":1532,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2147,"name":"Identifier","src":"13502:9:28"}],"id":2148,"name":"MemberAccess","src":"13502:16:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":1534,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2149,"name":"Identifier","src":"13520:9:28"}],"id":2150,"name":"MemberAccess","src":"13520:19:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":1536,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2151,"name":"Identifier","src":"13541:9:28"}],"id":2152,"name":"MemberAccess","src":"13541:14:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2153,"name":"Identifier","src":"13557:9:28"}],"id":2154,"name":"MemberAccess","src":"13557:19:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":1540,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2155,"name":"Identifier","src":"13578:9:28"}],"id":2156,"name":"MemberAccess","src":"13578:18:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2157,"name":"Identifier","src":"13598:9:28"}],"id":2158,"name":"MemberAccess","src":"13598:20:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":1544,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":2159,"name":"Identifier","src":"13620:9:28"}],"id":2160,"name":"MemberAccess","src":"13620:20:28"}],"id":2161,"name":"TupleExpression","src":"13501:140:28"}],"id":2162,"name":"Return","src":"13494:147:28"}],"id":2163,"name":"Block","src":"13431:217:28"}],"id":2164,"name":"FunctionDefinition","src":"13314:334:28"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2165,"name":"ParameterList","src":"14176:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2166,"name":"ElementaryTypeName","src":"14202:6:28"}],"id":2167,"name":"VariableDeclaration","src":"14202:13:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2168,"name":"ElementaryTypeName","src":"14217:7:28"}],"id":2169,"name":"VariableDeclaration","src":"14217:7:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2170,"name":"ElementaryTypeName","src":"14226:7:28"}],"id":2171,"name":"VariableDeclaration","src":"14226:7:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2172,"name":"ElementaryTypeName","src":"14235:4:28"}],"id":2173,"name":"VariableDeclaration","src":"14235:4:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2174,"name":"ElementaryTypeName","src":"14241:4:28"}],"id":2175,"name":"VariableDeclaration","src":"14241:4:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2176,"name":"ElementaryTypeName","src":"14247:4:28"}],"id":2177,"name":"VariableDeclaration","src":"14247:4:28"},{"attributes":{"constant":false,"name":"","scope":2204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2178,"name":"ElementaryTypeName","src":"14253:7:28"}],"id":2179,"name":"VariableDeclaration","src":"14253:7:28"}],"id":2180,"name":"ParameterList","src":"14201:60:28"},{"children":[{"attributes":{"assignments":[2182]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":2203,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":1545,"type":"struct TokenWhitelist.Token"},"id":2181,"name":"UserDefinedTypeName","src":"14272:5:28"}],"id":2182,"name":"VariableDeclaration","src":"14272:28:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2183,"name":"Identifier","src":"14303:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1560,"type":"address","value":"_stablecoin"},"id":2184,"name":"Identifier","src":"14317:11:28"}],"id":2185,"name":"IndexAccess","src":"14303:26:28"}],"id":2186,"name":"VariableDeclarationStatement","src":"14272:57:28"},{"attributes":{"functionReturnParameters":2180},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":1532,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2187,"name":"Identifier","src":"14360:14:28"}],"id":2188,"name":"MemberAccess","src":"14360:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":1534,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2189,"name":"Identifier","src":"14395:14:28"}],"id":2190,"name":"MemberAccess","src":"14395:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":1536,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2191,"name":"Identifier","src":"14433:14:28"}],"id":2192,"name":"MemberAccess","src":"14433:19:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2193,"name":"Identifier","src":"14466:14:28"}],"id":2194,"name":"MemberAccess","src":"14466:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":1540,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2195,"name":"Identifier","src":"14504:14:28"}],"id":2196,"name":"MemberAccess","src":"14504:23:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2197,"name":"Identifier","src":"14541:14:28"}],"id":2198,"name":"MemberAccess","src":"14541:25:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":1544,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":2199,"name":"Identifier","src":"14580:14:28"}],"id":2200,"name":"MemberAccess","src":"14580:25:28"}],"id":2201,"name":"TupleExpression","src":"14346:269:28"}],"id":2202,"name":"Return","src":"14339:276:28"}],"id":2203,"name":"Block","src":"14262:360:28"}],"id":2204,"name":"FunctionDefinition","src":"14150:472:28"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2205,"name":"ParameterList","src":"14777:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2213,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2206,"name":"ElementaryTypeName","src":"14803:7:28"}],"id":2207,"name":"ArrayTypeName","src":"14803:9:28"}],"id":2208,"name":"VariableDeclaration","src":"14803:16:28"}],"id":2209,"name":"ParameterList","src":"14802:18:28"},{"children":[{"attributes":{"functionReturnParameters":2209},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":2210,"name":"Identifier","src":"14838:18:28"}],"id":2211,"name":"Return","src":"14831:25:28"}],"id":2212,"name":"Block","src":"14821:42:28"}],"id":2213,"name":"FunctionDefinition","src":"14751:112:28"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2214,"name":"ParameterList","src":"15015:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2271,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2215,"name":"ElementaryTypeName","src":"15041:7:28"}],"id":2216,"name":"ArrayTypeName","src":"15041:9:28"}],"id":2217,"name":"VariableDeclaration","src":"15041:16:28"}],"id":2218,"name":"ParameterList","src":"15040:18:28"},{"children":[{"attributes":{"assignments":[2222]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":2270,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":2220,"name":"ElementaryTypeName","src":"15069:7:28"}],"id":2221,"name":"ArrayTypeName","src":"15069:9:28"}],"id":2222,"name":"VariableDeclaration","src":"15069:36:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2223,"name":"ElementaryTypeName","src":"15112:7:28"}],"id":2224,"name":"ArrayTypeName","src":"15112:9:28"}],"id":2225,"name":"NewExpression","src":"15108:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":2226,"name":"Identifier","src":"15122:18:28"}],"id":2227,"name":"FunctionCall","src":"15108:33:28"}],"id":2228,"name":"VariableDeclarationStatement","src":"15069:72:28"},{"attributes":{"assignments":[2230]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":2270,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2229,"name":"ElementaryTypeName","src":"15151:7:28"}],"id":2230,"name":"VariableDeclaration","src":"15151:23:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2231,"name":"Literal","src":"15177:1:28"}],"id":2232,"name":"VariableDeclarationStatement","src":"15151:27:28"},{"children":[{"attributes":{"assignments":[2234]},"children":[{"attributes":{"constant":false,"name":"i","scope":2267,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2233,"name":"ElementaryTypeName","src":"15193:7:28"}],"id":2234,"name":"VariableDeclaration","src":"15193:9:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2235,"name":"Literal","src":"15205:1:28"}],"id":2236,"name":"VariableDeclarationStatement","src":"15193:13:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"uint256","value":"i"},"id":2237,"name":"Identifier","src":"15208:1:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":2238,"name":"Identifier","src":"15212:18:28"}],"id":2239,"name":"MemberAccess","src":"15212:25:28"}],"id":2240,"name":"BinaryOperation","src":"15208:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"uint256","value":"i"},"id":2241,"name":"Identifier","src":"15239:1:28"}],"id":2242,"name":"UnaryOperation","src":"15239:3:28"}],"id":2243,"name":"ExpressionStatement","src":"15239:3:28"},{"children":[{"attributes":{"assignments":[2245]},"children":[{"attributes":{"constant":false,"name":"token","scope":2266,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2244,"name":"ElementaryTypeName","src":"15258:7:28"}],"id":2245,"name":"VariableDeclaration","src":"15258:13:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1556,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":2246,"name":"Identifier","src":"15274:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"uint256","value":"i"},"id":2247,"name":"Identifier","src":"15293:1:28"}],"id":2248,"name":"IndexAccess","src":"15274:21:28"}],"id":2249,"name":"VariableDeclarationStatement","src":"15258:37:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":1542,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2250,"name":"Identifier","src":"15313:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2245,"type":"address","value":"token"},"id":2251,"name":"Identifier","src":"15327:5:28"}],"id":2252,"name":"IndexAccess","src":"15313:20:28"}],"id":2253,"name":"MemberAccess","src":"15313:31:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2222,"type":"address[] memory","value":"redeemableAddresses"},"id":2254,"name":"Identifier","src":"15364:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2230,"type":"uint256","value":"redeemableIndex"},"id":2255,"name":"Identifier","src":"15384:15:28"}],"id":2256,"name":"IndexAccess","src":"15364:36:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2245,"type":"address","value":"token"},"id":2257,"name":"Identifier","src":"15403:5:28"}],"id":2258,"name":"Assignment","src":"15364:44:28"}],"id":2259,"name":"ExpressionStatement","src":"15364:44:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2230,"type":"uint256","value":"redeemableIndex"},"id":2260,"name":"Identifier","src":"15426:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2261,"name":"Literal","src":"15445:1:28"}],"id":2262,"name":"Assignment","src":"15426:20:28"}],"id":2263,"name":"ExpressionStatement","src":"15426:20:28"}],"id":2264,"name":"Block","src":"15346:115:28"}],"id":2265,"name":"IfStatement","src":"15309:152:28"}],"id":2266,"name":"Block","src":"15244:227:28"}],"id":2267,"name":"ForStatement","src":"15188:283:28"},{"attributes":{"functionReturnParameters":2218},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2222,"type":"address[] memory","value":"redeemableAddresses"},"id":2268,"name":"Identifier","src":"15487:19:28"}],"id":2269,"name":"Return","src":"15480:26:28"}],"id":2270,"name":"Block","src":"15059:454:28"}],"id":2271,"name":"FunctionDefinition","src":"14990:523:28"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2294,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2272,"name":"ElementaryTypeName","src":"15727:7:28"}],"id":2273,"name":"VariableDeclaration","src":"15727:14:28"},{"attributes":{"constant":false,"name":"_methodId","scope":2294,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2274,"name":"ElementaryTypeName","src":"15743:6:28"}],"id":2275,"name":"VariableDeclaration","src":"15743:16:28"}],"id":2276,"name":"ParameterList","src":"15726:34:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2294,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2277,"name":"ElementaryTypeName","src":"15782:4:28"}],"id":2278,"name":"VariableDeclaration","src":"15782:4:28"}],"id":2279,"name":"ParameterList","src":"15781:6:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[7568,7569],"referencedDeclaration":7569,"type":"function (bool,string memory) pure","value":"require"},"id":2280,"name":"Identifier","src":"15798:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":1538,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":2281,"name":"Identifier","src":"15806:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2273,"type":"address","value":"_token"},"id":2282,"name":"Identifier","src":"15820:6:28"}],"id":2283,"name":"IndexAccess","src":"15806:21:28"}],"id":2284,"name":"MemberAccess","src":"15806:31:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":2285,"name":"Literal","src":"15839:20:28"}],"id":2286,"name":"FunctionCall","src":"15798:62:28"}],"id":2287,"name":"ExpressionStatement","src":"15798:62:28"},{"attributes":{"functionReturnParameters":2279},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":2288,"name":"Identifier","src":"15878:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2275,"type":"bytes4","value":"_methodId"},"id":2289,"name":"Identifier","src":"15897:9:28"}],"id":2290,"name":"IndexAccess","src":"15878:29:28"}],"id":2291,"name":"TupleExpression","src":"15877:31:28"}],"id":2292,"name":"Return","src":"15870:38:28"}],"id":2293,"name":"Block","src":"15788:127:28"}],"id":2294,"name":"FunctionDefinition","src":"15695:220:28"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":2307,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2295,"name":"ElementaryTypeName","src":"16104:6:28"}],"id":2296,"name":"VariableDeclaration","src":"16104:16:28"}],"id":2297,"name":"ParameterList","src":"16103:18:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2307,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2298,"name":"ElementaryTypeName","src":"16145:4:28"}],"id":2299,"name":"VariableDeclaration","src":"16145:4:28"}],"id":2300,"name":"ParameterList","src":"16144:6:28"},{"children":[{"attributes":{"functionReturnParameters":2300},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":2301,"name":"Identifier","src":"16169:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2296,"type":"bytes4","value":"_methodId"},"id":2302,"name":"Identifier","src":"16188:9:28"}],"id":2303,"name":"IndexAccess","src":"16169:29:28"}],"id":2304,"name":"TupleExpression","src":"16168:31:28"}],"id":2305,"name":"Return","src":"16161:38:28"}],"id":2306,"name":"Block","src":"16151:55:28"}],"id":2307,"name":"FunctionDefinition","src":"16070:136:28"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2308,"name":"ParameterList","src":"16342:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2315,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2309,"name":"ElementaryTypeName","src":"16368:7:28"}],"id":2310,"name":"VariableDeclaration","src":"16368:7:28"}],"id":2311,"name":"ParameterList","src":"16367:9:28"},{"children":[{"attributes":{"functionReturnParameters":2311},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1558,"type":"uint256","value":"_redeemableCounter"},"id":2312,"name":"Identifier","src":"16394:18:28"}],"id":2313,"name":"Return","src":"16387:25:28"}],"id":2314,"name":"Block","src":"16377:42:28"}],"id":2315,"name":"FunctionDefinition","src":"16316:103:28"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2316,"name":"ParameterList","src":"16570:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2323,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2317,"name":"ElementaryTypeName","src":"16596:7:28"}],"id":2318,"name":"VariableDeclaration","src":"16596:7:28"}],"id":2319,"name":"ParameterList","src":"16595:9:28"},{"children":[{"attributes":{"functionReturnParameters":2319},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1560,"type":"address","value":"_stablecoin"},"id":2320,"name":"Identifier","src":"16622:11:28"}],"id":2321,"name":"Return","src":"16615:18:28"}],"id":2322,"name":"Block","src":"16605:35:28"}],"id":2323,"name":"FunctionDefinition","src":"16551:89:28"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":2332,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2324,"name":"ParameterList","src":"16774:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":2331,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2325,"name":"ElementaryTypeName","src":"16800:7:28"}],"id":2326,"name":"VariableDeclaration","src":"16800:7:28"}],"id":2327,"name":"ParameterList","src":"16799:9:28"},{"children":[{"attributes":{"functionReturnParameters":2327},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1562,"type":"bytes32","value":"_oracleNode"},"id":2328,"name":"Identifier","src":"16826:11:28"}],"id":2329,"name":"Return","src":"16819:18:28"}],"id":2330,"name":"Block","src":"16809:35:28"}],"id":2331,"name":"FunctionDefinition","src":"16755:89:28"}],"id":2332,"name":"ContractDefinition","src":"1939:14907:28"}],"id":2333,"name":"SourceUnit","src":"774:16073:28"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/licence/Controller.bin b/build/licence/Controller.bin index a69c0549..264e63ba 100644 --- a/build/licence/Controller.bin +++ b/build/licence/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/licence/Licence.bin b/build/licence/Licence.bin index 20bb2284..464341a7 100644 --- a/build/licence/Licence.bin +++ b/build/licence/Licence.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032 \ No newline at end of file diff --git a/build/licence/combined.json b/build/licence/combined.json index 6bb4cfa3..3522e415 100644 --- a/build/licence/combined.json +++ b/build/licence/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:20;;-1:-1:-1;;;;;;1543:18:20;-1:-1:-1;;;;;1543:18:20;;;-1:-1:-1;;;;1571:32:20;;;;2239:84:0;;2314:5;1571:32:20;-1:-1:-1;;;1687:15:20;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:20;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:20;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:20:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:20:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:20;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:20;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:20:-;3222:4;3245:15;-1:-1:-1;;;3245:15:20;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:20:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:20;;;;3656:57;;;;;-1:-1:-1;;;3656:57:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:20;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:20;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:20:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:20;;;;2404:57;;;;;-1:-1:-1;;;2404:57:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:20;;2534:70;;;;-1:-1:-1;;;2534:70:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:20;-1:-1:-1;;;2689:31:20;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:20;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:20;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:20;:17;;-1:-1:-1;;;;;;3032:17:20;-1:-1:-1;;;;;3032:17:20;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:20:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:20;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:21:-;-1:-1:-1;;;;;1510:20:21;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:21;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:21;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:21;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:6:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:7:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:7;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:7;-1:-1:-1;;;;;2567:10:7;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:7;;;;;;","srcmap-runtime":"1897:2174:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:13;;;;;;;;;:::i;:::-;;573:184:17;;;;;;;;;:::i;1721:953:14:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:10;;;;;;;;;:::i;:::-;;;;;;;;;612:169:16;;;;;;;;;:::i;505:166:12:-;;;;;;;;;:::i;980:228:11:-;;;;;;;;;:::i;3269:231:7:-;;;;;;;;;:::i;4901:153:13:-;;;;;;;;;:::i;974:127:17:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:13;;;;;;;;;:::i;582:292:10:-;;;;;;;;;:::i;844:101:15:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:11:-;;;;;;;;;:::i;4519:168:13:-;;;;;;;;;:::i;3703:366:7:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:13;;;;;;;;;:::i;838:108:12:-;;;;;;;;;:::i;1023:133:16:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:13;;;;;;;;;:::i;681:140:11:-;;;;;;;;;:::i;858:226:14:-;;;;;;;;;:::i;1514:127:11:-;;;;;;;;;:::i;2320:80:7:-;;;;;;;;;:::i;1107:169:17:-;1174:4;-1:-1:-1;;;;;;1197:32:17;;-1:-1:-1;;;1197:32:17;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:13:-;2932:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:13;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:13;;:18;-1:-1:-1;;3185:18:13;:15;:18;;-1:-1:-1;3185:18:13:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:13;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:13;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:13;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:13;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:13;;4052:6;;-1:-1:-1;4060:20:13;;;;-1:-1:-1;4082:17:13;4012:11;:88::i;:::-;400:1:9;;;;;2854:1263:13;;;;:::o;573:184:17:-;668:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:17;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:14:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:14;;;;;;;;;;-1:-1:-1;;;;;1849:29:14;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:14;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:14;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:14;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:14;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:14;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:14;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:14;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:14;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:14;;-1:-1:-1;2373:103:14;-1:-1:-1;2489:8:14;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:14;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:14;;-1:-1:-1;;;1721:953:14;;;;;:::o;1195:454:10:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:10;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:10;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:10;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:10;-1:-1:-1;1195:454:10;;;;;;:::o;612:169:16:-;687:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:16;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:16;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:12:-;584:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:12;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:11;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:11:o;3269:231:7:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:7;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:7;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:13:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:17:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:17;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:13:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:10:-;674:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:10;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:10;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:15:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:15;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:11;1302:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:11;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:13:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:7;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:7;-1:-1:-1;3844:6:7;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:7;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:7;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:7;;3840:199;;;-1:-1:-1;3703:366:7;;;;:::o;5193:128:13:-;5247:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:13;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:12:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:16;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:13:-;5617:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:13;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:13;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:13;;:16;-1:-1:-1;5701:4:13;;-1:-1:-1;5701:4:13;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:9;5541:225:13;;;;:::o;681:140:11:-;743:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:11;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:14:-;955:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:14;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:14;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:14;-1:-1:-1;;;;;971:43:14;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:11:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:11;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:16:-;1229:4;-1:-1:-1;;;;;;1252:34:16;;-1:-1:-1;;;1252:34:16;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:7:-;3596:3;;:15;;-1:-1:-1;;;3596:15:7;;3564:4;;;;-1:-1:-1;;;;;3596:3:7;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:7;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:7;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:7;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:7;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:7;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:8:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:6:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:13:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:13;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:13;;;;;;-1:-1:-1;;6760:43:13;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:13;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:13;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:8:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:8;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:8;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:8;;:::o;414:204:9:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:9;576:10;570:17;-1:-1:-1;;;566:36:9;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:9;87:34:-1;-1:-1;;;;;;776:20:9;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:9;743:64::o;951:169:15:-;1018:4;-1:-1:-1;;;;;;1041:32:15;;-1:-1:-1;;;1041:32:15;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:8:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:8;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:8:o;8685:393:6:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:6;87:34:-1;135:17;;-1:-1;8858:14:6;-1:-1:-1;8839:33:6;-1:-1:-1;8960:2:6;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:6;;8685:393;-1:-1:-1;;;;;8685:393:6:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:6:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:6;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:6;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:14:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:14;;:11;-1:-1:-1;;;;;2770:37:14;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:6:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:6;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:6;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:6;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:6;;513:2;499:26;489:42;;468:73::o;6035:245:13:-;6102:4;-1:-1:-1;;;;;;6125:38:13;;-1:-1:-1;;;6125:38:13;;:93;;-1:-1:-1;;;;;;;6182:36:13;;-1:-1:-1;;;6182:36:13;6125:93;:148;;;;6237:36;6261:11;1019:4:12;-1:-1:-1;;;;;;1042:40:12;;-1:-1:-1;;;1042:40:12;;:80;;;1086:36;1110:11;1714:4:11;-1:-1:-1;;;;;;1737:32:11;;-1:-1:-1;;;1737:32:11;;:71;;-1:-1:-1;;;;;;;1773:35:11;;-1:-1:-1;;;1773:35:11;1737:71;:111;;;;1812:36;1836:11;1722:4:10;-1:-1:-1;;;;;;1745:31:10;;-1:-1:-1;;;1745:31:10;;:71;;-1:-1:-1;;;;;;;;;;204:32:9;;;1780:36:10;114:129:9:o;1897:2174:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:7;;;-1:-1:-1;1897:2174:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:8:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:21;;;;;;;","srcmap-runtime":"961:696:21:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","srcmap":"1381:8954:22:-;;;1122:66:18;1272:58;;2313:80:22;;;-1:-1:-1;;;;;;2313:80:22;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:22;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:22;;;;;;;;;;;;;;;;;;;;;;;1242:12:19;:23;;-1:-1:-1;;;;;;1242:23:19;-1:-1:-1;;;;;1242:23:19;;;;;3616:558:22;;;;;;;;;1665:30:18;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:22;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:22;;;-1:-1:-1;;;;;;4012:22:22;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:22;-1:-1:-1;;;;;4123:34:22;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:22;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:22;-1:-1:-1;;;;;7354:228:22;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:22;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:22;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:22;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:22;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:22;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:22;-1:-1:-1;;;;;6678:219:22;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:22;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:22;;:::i;1364:91:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:19;;;:::i;10221:112:22:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:22;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:22;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:22;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:22;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:22;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:22;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:22;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:22;-1:-1:-1;;;;;6338:204:22;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:22;;;:::i;2169:95:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:18;;;:::i;10054:96:22:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:22;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:22;-1:-1:-1;;;;;7027:196:22;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:22;;;:::i;6106:102::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;6169:25:22;:32;;-1:-1:-1;;;;6169:32:22;-1:-1:-1;;;6169:32:22;;;6106:102::o;7354:228::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;7443:26:22;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:22;;;;;;;;;;;;-1:-1:-1;;;7434:53:22;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:22;;-1:-1:-1;;;;;;7497:29:22;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:22;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:22;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:22;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:22;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:22;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:22;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:22;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:22;;:33;;-1:-1:-1;;;;;9116:12:22;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:22;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:22;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:22;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:22;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:22;4950:91;:::o;6678:219::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;6766:14:22;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:22;;-1:-1:-1;;;;;;6820:25:22;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;5977:17:22;:24;;-1:-1:-1;;;;5977:24:22;-1:-1:-1;;;5977:24:22;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:22;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:19:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:19;1364:91;:::o;10221:112:22:-;10301:25;;-1:-1:-1;;;10301:25:22;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:22;;;;;9711:92::o;9448:184::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;9546:35:22;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:22;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:22;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;5603:18:22;:25;;-1:-1:-1;;;;5603:25:22;-1:-1:-1;;;5603:25:22;;;5553:82::o;6338:204::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;6424:13:22;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:22;;;;;;;;;;;;-1:-1:-1;;;6415:42:22;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:22;;-1:-1:-1;;;;;;6467:24:22;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;5792:18:22;:25;;-1:-1:-1;;;;5792:25:22;-1:-1:-1;;;5792:25:22;;;5741:83::o;2169:95:18:-;2242:15;;2169:95;:::o;10054:96:22:-;10126:17;;-1:-1:-1;;;10126:17:22;;;;;10054:96::o;7027:196::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;7108:18:22;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:22;;;;;;;;;;;;-1:-1:-1;;;7099:45:22;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:22;;-1:-1:-1;;;;;;7154:21:22;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:22;;;;;9882:93::o;2554:148:18:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:18;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:18;-1:-1:-1;;;;;2636:59:18;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:18;;2554:148;-1:-1:-1;;2554:148:18:o;1982:201:3:-;2107:68;;;-1:-1:-1;;;;;2107:68:3;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:3;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:4:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:4;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:4;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:21:-;-1:-1:-1;;;;;1510:20:21;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:21;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:21;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:21;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:19:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:19;;;;;;;;;;-1:-1:-1;;;;;1735:12:19;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:19;1716:61;;;-1:-1:-1;;;1716:61:19;;;;;;;;;;-1:-1:-1;;;;;1716:54:19;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:3;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/transferrable.sol","licence.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[1602],"IController":[1167]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1150,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":2071,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":1603,"symbolAliases":[null],"unitAlias":""},"id":1151,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":1077,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":1603,"symbolAliases":[null],"unitAlias":""},"id":1152,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[1167],"name":"IController","scope":1603},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":1167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1159,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1153,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":1154,"name":"VariableDeclaration","src":"1015:7:0"}],"id":1155,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1159,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1156,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":1157,"name":"VariableDeclaration","src":"1047:4:0"}],"id":1158,"name":"ParameterList","src":"1046:6:0"}],"id":1159,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":1167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1166,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1160,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":1161,"name":"VariableDeclaration","src":"1076:7:0"}],"id":1162,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1166,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1163,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":1164,"name":"VariableDeclaration","src":"1108:4:0"}],"id":1165,"name":"ParameterList","src":"1107:6:0"}],"id":1166,"name":"FunctionDefinition","src":"1059:55:0"}],"id":1167,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[1076,1167,2070],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[1602,1076,2070,1167],"name":"Controller","scope":1603},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":1167,"type":"contract IController"},"id":1168,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":1169,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":2070,"type":"contract Ownable"},"id":1170,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":1171,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":1076,"type":"contract Transferrable"},"id":1172,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":1173,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1179,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1174,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":1175,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":1179,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1176,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":1177,"name":"VariableDeclaration","src":"1564:19:0"}],"id":1178,"name":"ParameterList","src":"1546:38:0"}],"id":1179,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1185,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1180,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":1181,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":1185,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1182,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":1183,"name":"VariableDeclaration","src":"1631:19:0"}],"id":1184,"name":"ParameterList","src":"1613:38:0"}],"id":1185,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1191,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1186,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":1187,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":1191,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1188,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":1189,"name":"VariableDeclaration","src":"1692:14:0"}],"id":1190,"name":"ParameterList","src":"1674:33:0"}],"id":1191,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1197,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1192,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":1193,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":1197,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1194,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":1195,"name":"VariableDeclaration","src":"1749:14:0"}],"id":1196,"name":"ParameterList","src":"1731:33:0"}],"id":1197,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1198,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":1199,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1200,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":1201,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1205,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1202,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":1203,"name":"VariableDeclaration","src":"1814:15:0"}],"id":1204,"name":"ParameterList","src":"1784:46:0"}],"id":1205,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1209,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1206,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":1207,"name":"VariableDeclaration","src":"1851:15:0"}],"id":1208,"name":"ParameterList","src":"1850:17:0"}],"id":1209,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1213,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1210,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":1211,"name":"VariableDeclaration","src":"1887:15:0"}],"id":1212,"name":"ParameterList","src":"1886:17:0"}],"id":1213,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":1602,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":1214,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":1215,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":1216,"name":"Mapping","src":"1910:24:0"}],"id":1217,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":1602,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1218,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":1219,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":1602,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":1220,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":1221,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":1222,"name":"Mapping","src":"1991:24:0"}],"id":1223,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":1602,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1224,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":1225,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":1602,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1226,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":1227,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":1237,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1228,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":1229,"name":"VariableDeclaration","src":"2251:30:0"}],"id":1230,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":1235,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2070,"type":"type(contract Ownable)","value":"Ownable"},"id":1231,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1229,"type":"address payable","value":"_ownerAddress_"},"id":1232,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1233,"name":"Literal","src":"2314:5:0"}],"id":1234,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":1236,"name":"Block","src":"2321:2:0"}],"id":1237,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1238,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1239,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1240,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1241,"name":"Identifier","src":"2431:3:0"}],"id":1242,"name":"MemberAccess","src":"2431:10:0"}],"id":1243,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":1244,"name":"Literal","src":"2444:24:0"}],"id":1245,"name":"FunctionCall","src":"2414:55:0"}],"id":1246,"name":"ExpressionStatement","src":"2414:55:0"},{"id":1247,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":1248,"name":"Block","src":"2404:83:0"}],"id":1249,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1250,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1251,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2069,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1252,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1253,"name":"Identifier","src":"2588:3:0"}],"id":1254,"name":"MemberAccess","src":"2588:10:0"}],"id":1255,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1256,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1257,"name":"Identifier","src":"2612:3:0"}],"id":1258,"name":"MemberAccess","src":"2612:10:0"}],"id":1259,"name":"IndexAccess","src":"2603:20:0"}],"id":1260,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":1261,"name":"Literal","src":"2625:24:0"}],"id":1262,"name":"FunctionCall","src":"2571:79:0"}],"id":1263,"name":"ExpressionStatement","src":"2571:79:0"},{"id":1264,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":1265,"name":"Block","src":"2561:107:0"}],"id":1266,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1267,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1268,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1381,"type":"function () view returns (bool)","value":"isStopped"},"id":1269,"name":"Identifier","src":"2762:9:0"}],"id":1270,"name":"FunctionCall","src":"2762:11:0"}],"id":1271,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":1272,"name":"Literal","src":"2775:23:0"}],"id":1273,"name":"FunctionCall","src":"2753:46:0"}],"id":1274,"name":"ExpressionStatement","src":"2753:46:0"},{"id":1275,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":1276,"name":"Block","src":"2743:74:0"}],"id":1277,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1291,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1278,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":1279,"name":"VariableDeclaration","src":"2958:16:0"}],"id":1280,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1285,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":1281,"name":"Identifier","src":"2985:9:0"}],"id":1282,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1283,"name":"Identifier","src":"2995:10:0"}],"id":1284,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1435,"type":"function (address)","value":"_addAdmin"},"id":1286,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1279,"type":"address","value":"_account"},"id":1287,"name":"Identifier","src":"3026:8:0"}],"id":1288,"name":"FunctionCall","src":"3016:19:0"}],"id":1289,"name":"ExpressionStatement","src":"3016:19:0"}],"id":1290,"name":"Block","src":"3006:36:0"}],"id":1291,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1303,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1292,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":1293,"name":"VariableDeclaration","src":"3192:16:0"}],"id":1294,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1297,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":1295,"name":"Identifier","src":"3219:9:0"}],"id":1296,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"function (address)","value":"_removeAdmin"},"id":1298,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1293,"type":"address","value":"_account"},"id":1299,"name":"Identifier","src":"3252:8:0"}],"id":1300,"name":"FunctionCall","src":"3239:22:0"}],"id":1301,"name":"ExpressionStatement","src":"3239:22:0"}],"id":1302,"name":"Block","src":"3229:39:0"}],"id":1303,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":1602,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1304,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1311,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1305,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":1306,"name":"VariableDeclaration","src":"3365:7:0"}],"id":1307,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":1307},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1219,"type":"uint256","value":"_adminCount"},"id":1308,"name":"Identifier","src":"3391:11:0"}],"id":1309,"name":"Return","src":"3384:18:0"}],"id":1310,"name":"Block","src":"3374:35:0"}],"id":1311,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1325,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1312,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":1313,"name":"VariableDeclaration","src":"3570:16:0"}],"id":1314,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1319,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1315,"name":"Identifier","src":"3597:16:0"}],"id":1316,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1317,"name":"Identifier","src":"3614:10:0"}],"id":1318,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1517,"type":"function (address)","value":"_addController"},"id":1320,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1313,"type":"address","value":"_account"},"id":1321,"name":"Identifier","src":"3650:8:0"}],"id":1322,"name":"FunctionCall","src":"3635:24:0"}],"id":1323,"name":"ExpressionStatement","src":"3635:24:0"}],"id":1324,"name":"Block","src":"3625:41:0"}],"id":1325,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1337,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1326,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":1327,"name":"VariableDeclaration","src":"3836:16:0"}],"id":1328,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1331,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1329,"name":"Identifier","src":"3863:16:0"}],"id":1330,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1545,"type":"function (address)","value":"_removeController"},"id":1332,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1327,"type":"address","value":"_account"},"id":1333,"name":"Identifier","src":"3908:8:0"}],"id":1334,"name":"FunctionCall","src":"3890:27:0"}],"id":1335,"name":"ExpressionStatement","src":"3890:27:0"}],"id":1336,"name":"Block","src":"3880:44:0"}],"id":1337,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":1602,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1338,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1339,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":1340,"name":"VariableDeclaration","src":"4069:7:0"}],"id":1341,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":1341},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1225,"type":"uint256","value":"_controllerCount"},"id":1342,"name":"Identifier","src":"4095:16:0"}],"id":1343,"name":"Return","src":"4088:23:0"}],"id":1344,"name":"Block","src":"4078:40:0"}],"id":1345,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":1602,"stateMutability":"view","superFunction":1166,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1359,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1346,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":1347,"name":"VariableDeclaration","src":"4239:16:0"}],"id":1348,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1359,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1351,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":1352,"name":"VariableDeclaration","src":"4291:4:0"}],"id":1353,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1349,"name":"Identifier","src":"4271:10:0"}],"id":1350,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":1353},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1354,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1347,"type":"address","value":"_account"},"id":1355,"name":"Identifier","src":"4323:8:0"}],"id":1356,"name":"IndexAccess","src":"4314:18:0"}],"id":1357,"name":"Return","src":"4307:25:0"}],"id":1358,"name":"Block","src":"4297:42:0"}],"id":1359,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":1602,"stateMutability":"view","superFunction":1159,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1373,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1360,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":1361,"name":"VariableDeclaration","src":"4473:16:0"}],"id":1362,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1373,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1365,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":1366,"name":"VariableDeclaration","src":"4525:4:0"}],"id":1367,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1363,"name":"Identifier","src":"4505:10:0"}],"id":1364,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":1367},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1368,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1361,"type":"address","value":"_account"},"id":1369,"name":"Identifier","src":"4562:8:0"}],"id":1370,"name":"IndexAccess","src":"4548:23:0"}],"id":1371,"name":"Return","src":"4541:30:0"}],"id":1372,"name":"Block","src":"4531:47:0"}],"id":1373,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":1602,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1374,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1381,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1375,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":1376,"name":"VariableDeclaration","src":"4766:4:0"}],"id":1377,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":1377},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1227,"type":"bool","value":"_stopped"},"id":1378,"name":"Identifier","src":"4789:8:0"}],"id":1379,"name":"Return","src":"4782:15:0"}],"id":1380,"name":"Block","src":"4772:32:0"}],"id":1381,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1435,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1382,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":1383,"name":"VariableDeclaration","src":"4891:16:0"}],"id":1384,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1385,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1386,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1387,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1388,"name":"Identifier","src":"4945:8:0"}],"id":1389,"name":"IndexAccess","src":"4936:18:0"}],"id":1390,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":1391,"name":"Literal","src":"4956:38:0"}],"id":1392,"name":"FunctionCall","src":"4927:68:0"}],"id":1393,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1394,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1395,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1396,"name":"Identifier","src":"5028:8:0"}],"id":1397,"name":"IndexAccess","src":"5014:23:0"}],"id":1398,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":1399,"name":"Literal","src":"5039:42:0"}],"id":1400,"name":"FunctionCall","src":"5005:77:0"}],"id":1401,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1402,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2069,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1403,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1404,"name":"Identifier","src":"5110:8:0"}],"id":1405,"name":"FunctionCall","src":"5101:18:0"}],"id":1406,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":1407,"name":"Literal","src":"5121:39:0"}],"id":1408,"name":"FunctionCall","src":"5092:69:0"}],"id":1409,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1410,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1411,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1412,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1413,"name":"Literal","src":"5199:1:0"}],"id":1414,"name":"FunctionCall","src":"5191:10:0"}],"id":1415,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":1416,"name":"Literal","src":"5203:38:0"}],"id":1417,"name":"FunctionCall","src":"5171:71:0"}],"id":1418,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1419,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1420,"name":"Identifier","src":"5261:8:0"}],"id":1421,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1422,"name":"Literal","src":"5273:4:0"}],"id":1423,"name":"Assignment","src":"5252:25:0"}],"id":1424,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1219,"type":"uint256","value":"_adminCount"},"id":1425,"name":"Identifier","src":"5287:11:0"}],"id":1426,"name":"UnaryOperation","src":"5287:13:0"}],"id":1427,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1191,"type":"function (address,address)","value":"AddedAdmin"},"id":1428,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1429,"name":"Identifier","src":"5326:3:0"}],"id":1430,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1431,"name":"Identifier","src":"5338:8:0"}],"id":1432,"name":"FunctionCall","src":"5315:32:0"}],"id":1433,"name":"EmitStatement","src":"5310:37:0"}],"id":1434,"name":"Block","src":"4917:437:0"}],"id":1435,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1463,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1436,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":1437,"name":"VariableDeclaration","src":"5453:16:0"}],"id":1438,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1439,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1440,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1441,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1437,"type":"address","value":"_account"},"id":1442,"name":"Identifier","src":"5506:8:0"}],"id":1443,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":1444,"name":"Literal","src":"5517:34:0"}],"id":1445,"name":"FunctionCall","src":"5489:63:0"}],"id":1446,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1447,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1437,"type":"address","value":"_account"},"id":1448,"name":"Identifier","src":"5571:8:0"}],"id":1449,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1450,"name":"Literal","src":"5583:5:0"}],"id":1451,"name":"Assignment","src":"5562:26:0"}],"id":1452,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1219,"type":"uint256","value":"_adminCount"},"id":1453,"name":"Identifier","src":"5598:11:0"}],"id":1454,"name":"UnaryOperation","src":"5598:13:0"}],"id":1455,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1197,"type":"function (address,address)","value":"RemovedAdmin"},"id":1456,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1457,"name":"Identifier","src":"5639:3:0"}],"id":1458,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1437,"type":"address","value":"_account"},"id":1459,"name":"Identifier","src":"5651:8:0"}],"id":1460,"name":"FunctionCall","src":"5626:34:0"}],"id":1461,"name":"EmitStatement","src":"5621:39:0"}],"id":1462,"name":"Block","src":"5479:188:0"}],"id":1463,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1517,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1464,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":1465,"name":"VariableDeclaration","src":"5764:16:0"}],"id":1466,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1467,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1468,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1469,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1470,"name":"Identifier","src":"5818:8:0"}],"id":1471,"name":"IndexAccess","src":"5809:18:0"}],"id":1472,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":1473,"name":"Literal","src":"5829:38:0"}],"id":1474,"name":"FunctionCall","src":"5800:68:0"}],"id":1475,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1476,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1477,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1478,"name":"Identifier","src":"5901:8:0"}],"id":1479,"name":"IndexAccess","src":"5887:23:0"}],"id":1480,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":1481,"name":"Literal","src":"5912:42:0"}],"id":1482,"name":"FunctionCall","src":"5878:77:0"}],"id":1483,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1484,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2069,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1485,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1486,"name":"Identifier","src":"5983:8:0"}],"id":1487,"name":"FunctionCall","src":"5974:18:0"}],"id":1488,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":1489,"name":"Literal","src":"5994:39:0"}],"id":1490,"name":"FunctionCall","src":"5965:69:0"}],"id":1491,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1492,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1493,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1494,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1495,"name":"Literal","src":"6072:1:0"}],"id":1496,"name":"FunctionCall","src":"6064:10:0"}],"id":1497,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":1498,"name":"Literal","src":"6076:38:0"}],"id":1499,"name":"FunctionCall","src":"6044:71:0"}],"id":1500,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1501,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1502,"name":"Identifier","src":"6139:8:0"}],"id":1503,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1504,"name":"Literal","src":"6151:4:0"}],"id":1505,"name":"Assignment","src":"6125:30:0"}],"id":1506,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1225,"type":"uint256","value":"_controllerCount"},"id":1507,"name":"Identifier","src":"6165:16:0"}],"id":1508,"name":"UnaryOperation","src":"6165:18:0"}],"id":1509,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1179,"type":"function (address,address)","value":"AddedController"},"id":1510,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1511,"name":"Identifier","src":"6214:3:0"}],"id":1512,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1513,"name":"Identifier","src":"6226:8:0"}],"id":1514,"name":"FunctionCall","src":"6198:37:0"}],"id":1515,"name":"EmitStatement","src":"6193:42:0"}],"id":1516,"name":"Block","src":"5790:452:0"}],"id":1517,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1545,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1518,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":1519,"name":"VariableDeclaration","src":"6351:16:0"}],"id":1520,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1521,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1522,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1523,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1519,"type":"address","value":"_account"},"id":1524,"name":"Identifier","src":"6409:8:0"}],"id":1525,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":1526,"name":"Literal","src":"6420:38:0"}],"id":1527,"name":"FunctionCall","src":"6387:72:0"}],"id":1528,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1529,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1519,"type":"address","value":"_account"},"id":1530,"name":"Identifier","src":"6483:8:0"}],"id":1531,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1532,"name":"Literal","src":"6495:5:0"}],"id":1533,"name":"Assignment","src":"6469:31:0"}],"id":1534,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1225,"type":"uint256","value":"_controllerCount"},"id":1535,"name":"Identifier","src":"6510:16:0"}],"id":1536,"name":"UnaryOperation","src":"6510:18:0"}],"id":1537,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1185,"type":"function (address,address)","value":"RemovedController"},"id":1538,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1539,"name":"Identifier","src":"6561:3:0"}],"id":1540,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1519,"type":"address","value":"_account"},"id":1541,"name":"Identifier","src":"6573:8:0"}],"id":1542,"name":"FunctionCall","src":"6543:39:0"}],"id":1543,"name":"EmitStatement","src":"6538:44:0"}],"id":1544,"name":"Block","src":"6377:212:0"}],"id":1545,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1546,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":1549,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1547,"name":"Identifier","src":"6687:16:0"}],"id":1548,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1227,"type":"bool","value":"_stopped"},"id":1550,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1551,"name":"Literal","src":"6725:4:0"}],"id":1552,"name":"Assignment","src":"6714:15:0"}],"id":1553,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1209,"type":"function (address)","value":"Stopped"},"id":1554,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1555,"name":"Identifier","src":"6752:3:0"}],"id":1556,"name":"MemberAccess","src":"6752:10:0"}],"id":1557,"name":"FunctionCall","src":"6744:19:0"}],"id":1558,"name":"EmitStatement","src":"6739:24:0"}],"id":1559,"name":"Block","src":"6704:66:0"}],"id":1560,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1561,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":1564,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":1562,"name":"Identifier","src":"6845:9:0"}],"id":1563,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1227,"type":"bool","value":"_stopped"},"id":1565,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1566,"name":"Literal","src":"6876:5:0"}],"id":1567,"name":"Assignment","src":"6865:16:0"}],"id":1568,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1213,"type":"function (address)","value":"Started"},"id":1569,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1570,"name":"Identifier","src":"6904:3:0"}],"id":1571,"name":"MemberAccess","src":"6904:10:0"}],"id":1572,"name":"FunctionCall","src":"6896:19:0"}],"id":1573,"name":"EmitStatement","src":"6891:24:0"}],"id":1574,"name":"Block","src":"6855:67:0"}],"id":1575,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1601,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1576,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":1577,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":1601,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1578,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":1579,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":1601,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1580,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":1581,"name":"VariableDeclaration","src":"7063:15:0"}],"id":1582,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":1587,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1249,"type":"modifier ()","value":"onlyAdmin"},"id":1583,"name":"Identifier","src":"7089:9:0"}],"id":1584,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1585,"name":"Identifier","src":"7099:10:0"}],"id":1586,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1075,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":1588,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1577,"type":"address payable","value":"_to"},"id":1589,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1579,"type":"address","value":"_asset"},"id":1590,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1581,"type":"uint256","value":"_amount"},"id":1591,"name":"Identifier","src":"7147:7:0"}],"id":1592,"name":"FunctionCall","src":"7120:35:0"}],"id":1593,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1205,"type":"function (address,address,uint256)","value":"Claimed"},"id":1594,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1577,"type":"address payable","value":"_to"},"id":1595,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1579,"type":"address","value":"_asset"},"id":1596,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1581,"type":"uint256","value":"_amount"},"id":1597,"name":"Identifier","src":"7191:7:0"}],"id":1598,"name":"FunctionCall","src":"7170:29:0"}],"id":1599,"name":"EmitStatement","src":"7165:34:0"}],"id":1600,"name":"Block","src":"7110:96:0"}],"id":1601,"name":"FunctionDefinition","src":"7011:195:0"}],"id":1602,"name":"ContractDefinition","src":"1460:5748:0"}],"id":1603,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[1095]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1078,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[1095],"name":"Address","scope":1096},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":1095,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":1094,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1079,"name":"ElementaryTypeName","src":"562:7:1"}],"id":1080,"name":"VariableDeclaration","src":"562:15:1"}],"id":1081,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":1094,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1082,"name":"ElementaryTypeName","src":"602:4:1"}],"id":1083,"name":"VariableDeclaration","src":"602:4:1"}],"id":1084,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[1086],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":1093,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1085,"name":"ElementaryTypeName","src":"805:7:1"}],"id":1086,"name":"VariableDeclaration","src":"805:12:1"}],"id":1087,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":1086,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":1080,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":1088,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":1084},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1086,"type":"uint256","value":"size"},"id":1089,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1090,"name":"Literal","src":"947:1:1"}],"id":1091,"name":"BinaryOperation","src":"940:8:1"}],"id":1092,"name":"Return","src":"933:15:1"}],"id":1093,"name":"Block","src":"608:347:1"}],"id":1094,"name":"FunctionDefinition","src":"542:413:1"}],"id":1095,"name":"ContractDefinition","src":"94:863:1"}],"id":1096,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[1148]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":1097,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[1148],"name":"ERC20","scope":1149},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":1148,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":1106,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1098,"name":"ElementaryTypeName","src":"193:7:2"}],"id":1099,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":1106,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1100,"name":"ElementaryTypeName","src":"209:7:2"}],"id":1101,"name":"VariableDeclaration","src":"209:16:2"}],"id":1102,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1106,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1103,"name":"ElementaryTypeName","src":"250:7:2"}],"id":1104,"name":"VariableDeclaration","src":"250:7:2"}],"id":1105,"name":"ParameterList","src":"249:9:2"}],"id":1106,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":1148,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":1115,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1107,"name":"ElementaryTypeName","src":"281:7:2"}],"id":1108,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1109,"name":"ElementaryTypeName","src":"299:7:2"}],"id":1110,"name":"VariableDeclaration","src":"299:14:2"}],"id":1111,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1115,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1112,"name":"ElementaryTypeName","src":"333:4:2"}],"id":1113,"name":"VariableDeclaration","src":"333:4:2"}],"id":1114,"name":"ParameterList","src":"332:6:2"}],"id":1115,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":1148,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":1122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1116,"name":"ElementaryTypeName","src":"363:7:2"}],"id":1117,"name":"VariableDeclaration","src":"363:12:2"}],"id":1118,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1119,"name":"ElementaryTypeName","src":"400:7:2"}],"id":1120,"name":"VariableDeclaration","src":"400:7:2"}],"id":1121,"name":"ParameterList","src":"399:9:2"}],"id":1122,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":1148,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1123,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1124,"name":"ElementaryTypeName","src":"460:7:2"}],"id":1125,"name":"VariableDeclaration","src":"460:7:2"}],"id":1126,"name":"ParameterList","src":"459:9:2"}],"id":1127,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":1148,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1136,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1128,"name":"ElementaryTypeName","src":"492:7:2"}],"id":1129,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":1136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1130,"name":"ElementaryTypeName","src":"505:7:2"}],"id":1131,"name":"VariableDeclaration","src":"505:14:2"}],"id":1132,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1136,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1133,"name":"ElementaryTypeName","src":"539:4:2"}],"id":1134,"name":"VariableDeclaration","src":"539:4:2"}],"id":1135,"name":"ParameterList","src":"538:6:2"}],"id":1136,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":1148,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":1147,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1137,"name":"ElementaryTypeName","src":"572:7:2"}],"id":1138,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":1147,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1139,"name":"ElementaryTypeName","src":"587:7:2"}],"id":1140,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":1147,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1141,"name":"ElementaryTypeName","src":"600:7:2"}],"id":1142,"name":"VariableDeclaration","src":"600:14:2"}],"id":1143,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1147,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1144,"name":"ElementaryTypeName","src":"634:4:2"}],"id":1145,"name":"VariableDeclaration","src":"634:4:2"}],"id":1146,"name":"ParameterList","src":"633:6:2"}],"id":1147,"name":"FunctionDefinition","src":"550:90:2"}],"id":1148,"name":"ContractDefinition","src":"152:490:2"}],"id":1149,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[762]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":545,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":1149,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":763,"symbolAliases":[null],"unitAlias":""},"id":546,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":896,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":763,"symbolAliases":[null],"unitAlias":""},"id":547,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":1096,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":763,"symbolAliases":[null],"unitAlias":""},"id":548,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[762],"name":"SafeERC20","scope":763},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":895,"type":"library SafeMath"},"id":549,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":550,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":551,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":1095,"type":"library Address"},"id":552,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":553,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":554,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":576,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":555,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":556,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":576,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":557,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":558,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":576,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":559,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":560,"name":"VariableDeclaration","src":"1850:13:3"}],"id":561,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":562,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":563,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":556,"type":"contract ERC20","value":"token"},"id":564,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":565,"name":"Identifier","src":"1910:3:3"}],"id":566,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":1136,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":556,"type":"contract ERC20","value":"token"},"id":567,"name":"Identifier","src":"1933:5:3"}],"id":568,"name":"MemberAccess","src":"1933:14:3"}],"id":569,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":558,"type":"address","value":"to"},"id":570,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":560,"type":"uint256","value":"value"},"id":571,"name":"Identifier","src":"1962:5:3"}],"id":572,"name":"FunctionCall","src":"1910:58:3"}],"id":573,"name":"FunctionCall","src":"1884:85:3"}],"id":574,"name":"ExpressionStatement","src":"1884:85:3"}],"id":575,"name":"Block","src":"1874:102:3"}],"id":576,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":601,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":577,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":578,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":601,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":579,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":580,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":601,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":581,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":582,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":601,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":583,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":584,"name":"VariableDeclaration","src":"2047:13:3"}],"id":585,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":586,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":587,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":578,"type":"contract ERC20","value":"token"},"id":588,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":589,"name":"Identifier","src":"2107:3:3"}],"id":590,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":1147,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":578,"type":"contract ERC20","value":"token"},"id":591,"name":"Identifier","src":"2130:5:3"}],"id":592,"name":"MemberAccess","src":"2130:18:3"}],"id":593,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":580,"type":"address","value":"from"},"id":594,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":582,"type":"address","value":"to"},"id":595,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":584,"type":"uint256","value":"value"},"id":596,"name":"Identifier","src":"2169:5:3"}],"id":597,"name":"FunctionCall","src":"2107:68:3"}],"id":598,"name":"FunctionCall","src":"2081:95:3"}],"id":599,"name":"ExpressionStatement","src":"2081:95:3"}],"id":600,"name":"Block","src":"2071:112:3"}],"id":601,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":642,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":602,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":603,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":642,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":604,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":605,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":642,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":606,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":607,"name":"VariableDeclaration","src":"2240:13:3"}],"id":608,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":609,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":610,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":607,"type":"uint256","value":"value"},"id":611,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":612,"name":"Literal","src":"2562:1:3"}],"id":613,"name":"BinaryOperation","src":"2553:10:3"}],"id":614,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":1106,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":603,"type":"contract ERC20","value":"token"},"id":615,"name":"Identifier","src":"2569:5:3"}],"id":616,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$762","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":617,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4802,"type":"library SafeERC20","value":"this"},"id":618,"name":"Identifier","src":"2593:4:3"}],"id":619,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"address","value":"spender"},"id":620,"name":"Identifier","src":"2600:7:3"}],"id":621,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":622,"name":"Literal","src":"2612:1:3"}],"id":623,"name":"BinaryOperation","src":"2569:44:3"}],"id":624,"name":"TupleExpression","src":"2568:46:3"}],"id":625,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":626,"name":"Literal","src":"2628:56:3"}],"id":627,"name":"FunctionCall","src":"2544:150:3"}],"id":628,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":629,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":603,"type":"contract ERC20","value":"token"},"id":630,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":631,"name":"Identifier","src":"2730:3:3"}],"id":632,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":1115,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":603,"type":"contract ERC20","value":"token"},"id":633,"name":"Identifier","src":"2753:5:3"}],"id":634,"name":"MemberAccess","src":"2753:13:3"}],"id":635,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"address","value":"spender"},"id":636,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":607,"type":"uint256","value":"value"},"id":637,"name":"Identifier","src":"2786:5:3"}],"id":638,"name":"FunctionCall","src":"2730:62:3"}],"id":639,"name":"FunctionCall","src":"2704:89:3"}],"id":640,"name":"ExpressionStatement","src":"2704:89:3"}],"id":641,"name":"Block","src":"2264:536:3"}],"id":642,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":677,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":643,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":644,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":677,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":645,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":646,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":677,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":647,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":648,"name":"VariableDeclaration","src":"2867:13:3"}],"id":649,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":650,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[652]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":651,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":652,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":789,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":1106,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"contract ERC20","value":"token"},"id":653,"name":"Identifier","src":"2924:5:3"}],"id":654,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$762","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":655,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4802,"type":"library SafeERC20","value":"this"},"id":656,"name":"Identifier","src":"2948:4:3"}],"id":657,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":646,"type":"address","value":"spender"},"id":658,"name":"Identifier","src":"2955:7:3"}],"id":659,"name":"FunctionCall","src":"2924:39:3"}],"id":660,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":648,"type":"uint256","value":"value"},"id":661,"name":"Identifier","src":"2968:5:3"}],"id":662,"name":"FunctionCall","src":"2924:50:3"}],"id":663,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":664,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"contract ERC20","value":"token"},"id":665,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":666,"name":"Identifier","src":"3010:3:3"}],"id":667,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":1115,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"contract ERC20","value":"token"},"id":668,"name":"Identifier","src":"3033:5:3"}],"id":669,"name":"MemberAccess","src":"3033:13:3"}],"id":670,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":646,"type":"address","value":"spender"},"id":671,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":652,"type":"uint256","value":"newAllowance"},"id":672,"name":"Identifier","src":"3066:12:3"}],"id":673,"name":"FunctionCall","src":"3010:69:3"}],"id":674,"name":"FunctionCall","src":"2984:96:3"}],"id":675,"name":"ExpressionStatement","src":"2984:96:3"}],"id":676,"name":"Block","src":"2891:196:3"}],"id":677,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":712,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":678,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":679,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":712,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":680,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":681,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":712,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":682,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":683,"name":"VariableDeclaration","src":"3154:13:3"}],"id":684,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":685,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[687]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":711,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":686,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":687,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":814,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":1106,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":679,"type":"contract ERC20","value":"token"},"id":688,"name":"Identifier","src":"3211:5:3"}],"id":689,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$762","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":690,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4802,"type":"library SafeERC20","value":"this"},"id":691,"name":"Identifier","src":"3235:4:3"}],"id":692,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"address","value":"spender"},"id":693,"name":"Identifier","src":"3242:7:3"}],"id":694,"name":"FunctionCall","src":"3211:39:3"}],"id":695,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":683,"type":"uint256","value":"value"},"id":696,"name":"Identifier","src":"3255:5:3"}],"id":697,"name":"FunctionCall","src":"3211:50:3"}],"id":698,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":699,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":679,"type":"contract ERC20","value":"token"},"id":700,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":701,"name":"Identifier","src":"3297:3:3"}],"id":702,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":1115,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":679,"type":"contract ERC20","value":"token"},"id":703,"name":"Identifier","src":"3320:5:3"}],"id":704,"name":"MemberAccess","src":"3320:13:3"}],"id":705,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"address","value":"spender"},"id":706,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":687,"type":"uint256","value":"newAllowance"},"id":707,"name":"Identifier","src":"3353:12:3"}],"id":708,"name":"FunctionCall","src":"3297:69:3"}],"id":709,"name":"FunctionCall","src":"3271:96:3"}],"id":710,"name":"ExpressionStatement","src":"3271:96:3"}],"id":711,"name":"Block","src":"3178:196:3"}],"id":712,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":761,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":713,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":714,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":761,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":715,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":716,"name":"VariableDeclaration","src":"3798:17:3"}],"id":717,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":718,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":719,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":1094,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":720,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"contract ERC20","value":"token"},"id":721,"name":"Identifier","src":"4360:5:3"}],"id":722,"name":"FunctionCall","src":"4352:14:3"}],"id":723,"name":"MemberAccess","src":"4352:25:3"}],"id":724,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":725,"name":"Literal","src":"4381:33:3"}],"id":726,"name":"FunctionCall","src":"4344:71:3"}],"id":727,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[729,731]},"children":[{"attributes":{"constant":false,"name":"success","scope":760,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":728,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":729,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":760,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":730,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":731,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":732,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"contract ERC20","value":"token"},"id":733,"name":"Identifier","src":"4535:5:3"}],"id":734,"name":"FunctionCall","src":"4527:14:3"}],"id":735,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"bytes memory","value":"data"},"id":736,"name":"Identifier","src":"4547:4:3"}],"id":737,"name":"FunctionCall","src":"4527:25:3"}],"id":738,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":739,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":729,"type":"bool","value":"success"},"id":740,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":741,"name":"Literal","src":"4579:34:3"}],"id":742,"name":"FunctionCall","src":"4562:52:3"}],"id":743,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":731,"type":"bytes memory","value":"returndata"},"id":744,"name":"Identifier","src":"4629:10:3"}],"id":745,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":746,"name":"Literal","src":"4649:1:3"}],"id":747,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":748,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":749,"name":"Identifier","src":"4758:3:3"}],"id":750,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":731,"type":"bytes memory","value":"returndata"},"id":751,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":752,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":753,"name":"TupleExpression","src":"4781:6:3"}],"id":754,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":755,"name":"Literal","src":"4790:44:3"}],"id":756,"name":"FunctionCall","src":"4750:85:3"}],"id":757,"name":"ExpressionStatement","src":"4750:85:3"}],"id":758,"name":"Block","src":"4652:194:3"}],"id":759,"name":"IfStatement","src":"4625:221:3"}],"id":760,"name":"Block","src":"3826:1026:3"}],"id":761,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":762,"name":"ContractDefinition","src":"1715:3139:3"}],"id":763,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[895]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":764,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[895],"name":"SafeMath","scope":896},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":765,"name":"ElementaryTypeName","src":"847:7:4"}],"id":766,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":767,"name":"ElementaryTypeName","src":"858:7:4"}],"id":768,"name":"VariableDeclaration","src":"858:9:4"}],"id":769,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":770,"name":"ElementaryTypeName","src":"892:7:4"}],"id":771,"name":"VariableDeclaration","src":"892:7:4"}],"id":772,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[774]},"children":[{"attributes":{"constant":false,"name":"c","scope":788,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":773,"name":"ElementaryTypeName","src":"911:7:4"}],"id":774,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":766,"type":"uint256","value":"a"},"id":775,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":768,"type":"uint256","value":"b"},"id":776,"name":"Identifier","src":"927:1:4"}],"id":777,"name":"BinaryOperation","src":"923:5:4"}],"id":778,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":779,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"uint256","value":"c"},"id":780,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":766,"type":"uint256","value":"a"},"id":781,"name":"Identifier","src":"951:1:4"}],"id":782,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":783,"name":"Literal","src":"954:29:4"}],"id":784,"name":"FunctionCall","src":"938:46:4"}],"id":785,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":772},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"uint256","value":"c"},"id":786,"name":"Identifier","src":"1002:1:4"}],"id":787,"name":"Return","src":"995:8:4"}],"id":788,"name":"Block","src":"901:109:4"}],"id":789,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":814,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":790,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":791,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":814,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":792,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":793,"name":"VariableDeclaration","src":"1298:9:4"}],"id":794,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":814,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":795,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":796,"name":"VariableDeclaration","src":"1332:7:4"}],"id":797,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":798,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":793,"type":"uint256","value":"b"},"id":799,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":791,"type":"uint256","value":"a"},"id":800,"name":"Identifier","src":"1364:1:4"}],"id":801,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":802,"name":"Literal","src":"1367:32:4"}],"id":803,"name":"FunctionCall","src":"1351:49:4"}],"id":804,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[806]},"children":[{"attributes":{"constant":false,"name":"c","scope":813,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":805,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":806,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":791,"type":"uint256","value":"a"},"id":807,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":793,"type":"uint256","value":"b"},"id":808,"name":"Identifier","src":"1426:1:4"}],"id":809,"name":"BinaryOperation","src":"1422:5:4"}],"id":810,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":797},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":806,"type":"uint256","value":"c"},"id":811,"name":"Identifier","src":"1445:1:4"}],"id":812,"name":"Return","src":"1438:8:4"}],"id":813,"name":"Block","src":"1341:112:4"}],"id":814,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":848,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":815,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":816,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":848,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":817,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":818,"name":"VariableDeclaration","src":"1717:9:4"}],"id":819,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":848,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":820,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":821,"name":"VariableDeclaration","src":"1751:7:4"}],"id":822,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"uint256","value":"a"},"id":823,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":824,"name":"Literal","src":"1996:1:4"}],"id":825,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":822},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":826,"name":"Literal","src":"2020:1:4"}],"id":827,"name":"Return","src":"2013:8:4"}],"id":828,"name":"Block","src":"1999:33:4"}],"id":829,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[831]},"children":[{"attributes":{"constant":false,"name":"c","scope":847,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":830,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":831,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"uint256","value":"a"},"id":832,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"uint256","value":"b"},"id":833,"name":"Identifier","src":"2058:1:4"}],"id":834,"name":"BinaryOperation","src":"2054:5:4"}],"id":835,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":836,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":831,"type":"uint256","value":"c"},"id":837,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"uint256","value":"a"},"id":838,"name":"Identifier","src":"2081:1:4"}],"id":839,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"uint256","value":"b"},"id":840,"name":"Identifier","src":"2086:1:4"}],"id":841,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":842,"name":"Literal","src":"2089:35:4"}],"id":843,"name":"FunctionCall","src":"2069:56:4"}],"id":844,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":822},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":831,"type":"uint256","value":"c"},"id":845,"name":"Identifier","src":"2143:1:4"}],"id":846,"name":"Return","src":"2136:8:4"}],"id":847,"name":"Block","src":"1760:391:4"}],"id":848,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":873,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":849,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":850,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":873,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":851,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":852,"name":"VariableDeclaration","src":"2630:9:4"}],"id":853,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":873,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":854,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":855,"name":"VariableDeclaration","src":"2664:7:4"}],"id":856,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":857,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"uint256","value":"b"},"id":858,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":859,"name":"Literal","src":"2761:1:4"}],"id":860,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":861,"name":"Literal","src":"2764:28:4"}],"id":862,"name":"FunctionCall","src":"2749:44:4"}],"id":863,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[865]},"children":[{"attributes":{"constant":false,"name":"c","scope":872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":864,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":865,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"uint256","value":"a"},"id":866,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"uint256","value":"b"},"id":867,"name":"Identifier","src":"2819:1:4"}],"id":868,"name":"BinaryOperation","src":"2815:5:4"}],"id":869,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":856},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":865,"type":"uint256","value":"c"},"id":870,"name":"Identifier","src":"2924:1:4"}],"id":871,"name":"Return","src":"2917:8:4"}],"id":872,"name":"Block","src":"2673:259:4"}],"id":873,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":874,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":875,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":876,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":877,"name":"VariableDeclaration","src":"3400:9:4"}],"id":878,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":879,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":880,"name":"VariableDeclaration","src":"3434:7:4"}],"id":881,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":882,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"uint256","value":"b"},"id":883,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":884,"name":"Literal","src":"3466:1:4"}],"id":885,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":886,"name":"Literal","src":"3469:26:4"}],"id":887,"name":"FunctionCall","src":"3453:43:4"}],"id":888,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":881},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":875,"type":"uint256","value":"a"},"id":889,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"uint256","value":"b"},"id":890,"name":"Identifier","src":"3517:1:4"}],"id":891,"name":"BinaryOperation","src":"3513:5:4"}],"id":892,"name":"Return","src":"3506:12:4"}],"id":893,"name":"Block","src":"3443:82:4"}],"id":894,"name":"FunctionDefinition","src":"3376:149:4"}],"id":895,"name":"ContractDefinition","src":"589:2938:4"}],"id":896,"name":"SourceUnit","src":"0:3528:4"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[1739]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1604,"name":"PragmaDirective","src":"1400:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1739],"name":"ENS","scope":1740},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1605,"name":"ElementaryTypeName","src":"1534:7:5"}],"id":1606,"name":"VariableDeclaration","src":"1534:21:5"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1607,"name":"ElementaryTypeName","src":"1557:7:5"}],"id":1608,"name":"VariableDeclaration","src":"1557:22:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1612,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1609,"name":"ElementaryTypeName","src":"1581:7:5"}],"id":1610,"name":"VariableDeclaration","src":"1581:14:5"}],"id":1611,"name":"ParameterList","src":"1533:63:5"}],"id":1612,"name":"EventDefinition","src":"1519:78:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":1618,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1613,"name":"ElementaryTypeName","src":"1695:7:5"}],"id":1614,"name":"VariableDeclaration","src":"1695:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1618,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1615,"name":"ElementaryTypeName","src":"1718:7:5"}],"id":1616,"name":"VariableDeclaration","src":"1718:14:5"}],"id":1617,"name":"ParameterList","src":"1694:39:5"}],"id":1618,"name":"EventDefinition","src":"1680:54:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":1624,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1619,"name":"ElementaryTypeName","src":"1810:7:5"}],"id":1620,"name":"VariableDeclaration","src":"1810:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":1624,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1621,"name":"ElementaryTypeName","src":"1833:7:5"}],"id":1622,"name":"VariableDeclaration","src":"1833:17:5"}],"id":1623,"name":"ParameterList","src":"1809:42:5"}],"id":1624,"name":"EventDefinition","src":"1792:60:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":1630,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1625,"name":"ElementaryTypeName","src":"1916:7:5"}],"id":1626,"name":"VariableDeclaration","src":"1916:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":1630,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1627,"name":"ElementaryTypeName","src":"1939:6:5"}],"id":1628,"name":"VariableDeclaration","src":"1939:11:5"}],"id":1629,"name":"ParameterList","src":"1915:36:5"}],"id":1630,"name":"EventDefinition","src":"1903:49:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":1638,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1631,"name":"ElementaryTypeName","src":"2031:7:5"}],"id":1632,"name":"VariableDeclaration","src":"2031:22:5"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":1638,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1633,"name":"ElementaryTypeName","src":"2055:7:5"}],"id":1634,"name":"VariableDeclaration","src":"2055:25:5"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":1638,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1635,"name":"ElementaryTypeName","src":"2082:4:5"}],"id":1636,"name":"VariableDeclaration","src":"2082:14:5"}],"id":1637,"name":"ParameterList","src":"2030:67:5"}],"id":1638,"name":"EventDefinition","src":"2010:88:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1649,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1639,"name":"ElementaryTypeName","src":"2123:7:5"}],"id":1640,"name":"VariableDeclaration","src":"2123:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":1649,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1641,"name":"ElementaryTypeName","src":"2138:7:5"}],"id":1642,"name":"VariableDeclaration","src":"2138:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":1649,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1643,"name":"ElementaryTypeName","src":"2154:7:5"}],"id":1644,"name":"VariableDeclaration","src":"2154:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":1649,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1645,"name":"ElementaryTypeName","src":"2173:6:5"}],"id":1646,"name":"VariableDeclaration","src":"2173:11:5"}],"id":1647,"name":"ParameterList","src":"2122:63:5"},{"attributes":{"parameters":[null]},"children":[],"id":1648,"name":"ParameterList","src":"2194:0:5"}],"id":1649,"name":"FunctionDefinition","src":"2104:91:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1662,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1650,"name":"ElementaryTypeName","src":"2226:7:5"}],"id":1651,"name":"VariableDeclaration","src":"2226:13:5"},{"attributes":{"constant":false,"name":"_label","scope":1662,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1652,"name":"ElementaryTypeName","src":"2241:7:5"}],"id":1653,"name":"VariableDeclaration","src":"2241:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":1662,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1654,"name":"ElementaryTypeName","src":"2257:7:5"}],"id":1655,"name":"VariableDeclaration","src":"2257:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":1662,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1656,"name":"ElementaryTypeName","src":"2273:7:5"}],"id":1657,"name":"VariableDeclaration","src":"2273:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":1662,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1658,"name":"ElementaryTypeName","src":"2292:6:5"}],"id":1659,"name":"VariableDeclaration","src":"2292:11:5"}],"id":1660,"name":"ParameterList","src":"2225:79:5"},{"attributes":{"parameters":[null]},"children":[],"id":1661,"name":"ParameterList","src":"2313:0:5"}],"id":1662,"name":"FunctionDefinition","src":"2200:114:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1673,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1663,"name":"ElementaryTypeName","src":"2344:7:5"}],"id":1664,"name":"VariableDeclaration","src":"2344:13:5"},{"attributes":{"constant":false,"name":"_label","scope":1673,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1665,"name":"ElementaryTypeName","src":"2359:7:5"}],"id":1666,"name":"VariableDeclaration","src":"2359:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":1673,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1667,"name":"ElementaryTypeName","src":"2375:7:5"}],"id":1668,"name":"VariableDeclaration","src":"2375:14:5"}],"id":1669,"name":"ParameterList","src":"2343:47:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1673,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1670,"name":"ElementaryTypeName","src":"2408:7:5"}],"id":1671,"name":"VariableDeclaration","src":"2408:7:5"}],"id":1672,"name":"ParameterList","src":"2407:9:5"}],"id":1673,"name":"FunctionDefinition","src":"2319:98:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1680,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1674,"name":"ElementaryTypeName","src":"2443:7:5"}],"id":1675,"name":"VariableDeclaration","src":"2443:13:5"},{"attributes":{"constant":false,"name":"_resolver","scope":1680,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1676,"name":"ElementaryTypeName","src":"2458:7:5"}],"id":1677,"name":"VariableDeclaration","src":"2458:17:5"}],"id":1678,"name":"ParameterList","src":"2442:34:5"},{"attributes":{"parameters":[null]},"children":[],"id":1679,"name":"ParameterList","src":"2485:0:5"}],"id":1680,"name":"FunctionDefinition","src":"2422:64:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1687,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1681,"name":"ElementaryTypeName","src":"2509:7:5"}],"id":1682,"name":"VariableDeclaration","src":"2509:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":1687,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1683,"name":"ElementaryTypeName","src":"2524:7:5"}],"id":1684,"name":"VariableDeclaration","src":"2524:14:5"}],"id":1685,"name":"ParameterList","src":"2508:31:5"},{"attributes":{"parameters":[null]},"children":[],"id":1686,"name":"ParameterList","src":"2548:0:5"}],"id":1687,"name":"FunctionDefinition","src":"2491:58:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1694,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1688,"name":"ElementaryTypeName","src":"2570:7:5"}],"id":1689,"name":"VariableDeclaration","src":"2570:13:5"},{"attributes":{"constant":false,"name":"_ttl","scope":1694,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1690,"name":"ElementaryTypeName","src":"2585:6:5"}],"id":1691,"name":"VariableDeclaration","src":"2585:11:5"}],"id":1692,"name":"ParameterList","src":"2569:28:5"},{"attributes":{"parameters":[null]},"children":[],"id":1693,"name":"ParameterList","src":"2606:0:5"}],"id":1694,"name":"FunctionDefinition","src":"2554:53:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":1701,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1695,"name":"ElementaryTypeName","src":"2639:7:5"}],"id":1696,"name":"VariableDeclaration","src":"2639:17:5"},{"attributes":{"constant":false,"name":"_approved","scope":1701,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1697,"name":"ElementaryTypeName","src":"2658:4:5"}],"id":1698,"name":"VariableDeclaration","src":"2658:14:5"}],"id":1699,"name":"ParameterList","src":"2638:35:5"},{"attributes":{"parameters":[null]},"children":[],"id":1700,"name":"ParameterList","src":"2682:0:5"}],"id":1701,"name":"FunctionDefinition","src":"2612:71:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1708,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1702,"name":"ElementaryTypeName","src":"2703:7:5"}],"id":1703,"name":"VariableDeclaration","src":"2703:13:5"}],"id":1704,"name":"ParameterList","src":"2702:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1708,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1705,"name":"ElementaryTypeName","src":"2741:7:5"}],"id":1706,"name":"VariableDeclaration","src":"2741:7:5"}],"id":1707,"name":"ParameterList","src":"2740:9:5"}],"id":1708,"name":"FunctionDefinition","src":"2688:62:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1715,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1709,"name":"ElementaryTypeName","src":"2773:7:5"}],"id":1710,"name":"VariableDeclaration","src":"2773:13:5"}],"id":1711,"name":"ParameterList","src":"2772:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1715,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1712,"name":"ElementaryTypeName","src":"2811:7:5"}],"id":1713,"name":"VariableDeclaration","src":"2811:7:5"}],"id":1714,"name":"ParameterList","src":"2810:9:5"}],"id":1715,"name":"FunctionDefinition","src":"2755:65:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1722,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1716,"name":"ElementaryTypeName","src":"2838:7:5"}],"id":1717,"name":"VariableDeclaration","src":"2838:13:5"}],"id":1718,"name":"ParameterList","src":"2837:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1722,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1719,"name":"ElementaryTypeName","src":"2876:6:5"}],"id":1720,"name":"VariableDeclaration","src":"2876:6:5"}],"id":1721,"name":"ParameterList","src":"2875:8:5"}],"id":1722,"name":"FunctionDefinition","src":"2825:59:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1729,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1723,"name":"ElementaryTypeName","src":"2911:7:5"}],"id":1724,"name":"VariableDeclaration","src":"2911:13:5"}],"id":1725,"name":"ParameterList","src":"2910:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1729,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1726,"name":"ElementaryTypeName","src":"2949:4:5"}],"id":1727,"name":"VariableDeclaration","src":"2949:4:5"}],"id":1728,"name":"ParameterList","src":"2948:6:5"}],"id":1729,"name":"FunctionDefinition","src":"2889:66:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":1738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1730,"name":"ElementaryTypeName","src":"2986:7:5"}],"id":1731,"name":"VariableDeclaration","src":"2986:14:5"},{"attributes":{"constant":false,"name":"_operator","scope":1738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1732,"name":"ElementaryTypeName","src":"3002:7:5"}],"id":1733,"name":"VariableDeclaration","src":"3002:17:5"}],"id":1734,"name":"ParameterList","src":"2985:35:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1738,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1735,"name":"ElementaryTypeName","src":"3044:4:5"}],"id":1736,"name":"VariableDeclaration","src":"3044:4:5"}],"id":1737,"name":"ParameterList","src":"3043:6:5"}],"id":1738,"name":"FunctionDefinition","src":"2960:90:5"}],"id":1739,"name":"ContractDefinition","src":"1425:1627:5"}],"id":1740,"name":"SourceUnit","src":"1400:1653:5"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[4765]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":4046,"name":"PragmaDirective","src":"0:24:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[4765],"name":"ENSBytesUtils","scope":4766},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4068,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4047,"name":"ElementaryTypeName","src":"325:5:6"}],"id":4048,"name":"VariableDeclaration","src":"325:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4049,"name":"ElementaryTypeName","src":"344:4:6"}],"id":4050,"name":"VariableDeclaration","src":"344:11:6"},{"attributes":{"constant":false,"name":"len","scope":4068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4051,"name":"ElementaryTypeName","src":"357:4:6"}],"id":4052,"name":"VariableDeclaration","src":"357:8:6"}],"id":4053,"name":"ParameterList","src":"324:42:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4054,"name":"ElementaryTypeName","src":"390:7:6"}],"id":4055,"name":"VariableDeclaration","src":"390:11:6"}],"id":4056,"name":"ParameterList","src":"389:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4057,"name":"Identifier","src":"413:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4050,"type":"uint256","value":"offset"},"id":4058,"name":"Identifier","src":"421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4052,"type":"uint256","value":"len"},"id":4059,"name":"Identifier","src":"430:3:6"}],"id":4060,"name":"BinaryOperation","src":"421:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4048,"type":"bytes memory","value":"self"},"id":4061,"name":"Identifier","src":"437:4:6"}],"id":4062,"name":"MemberAccess","src":"437:11:6"}],"id":4063,"name":"BinaryOperation","src":"421:27:6"}],"id":4064,"name":"FunctionCall","src":"413:36:6"}],"id":4065,"name":"ExpressionStatement","src":"413:36:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4055,"isOffset":false,"isSlot":false,"src":"482:3:6","valueSize":1}},{"self":{"declaration":4048,"isOffset":false,"isSlot":false,"src":"507:4:6","valueSize":1}},{"offset":{"declaration":4050,"isOffset":false,"isSlot":false,"src":"518:6:6","valueSize":1}},{"len":{"declaration":4052,"isOffset":false,"isSlot":false,"src":"527:3:6","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":4066,"name":"InlineAssembly","src":"459:82:6"}],"id":4067,"name":"Block","src":"403:144:6"}],"id":4068,"name":"FunctionDefinition","src":"309:238:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4089,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4069,"name":"ElementaryTypeName","src":"920:5:6"}],"id":4070,"name":"VariableDeclaration","src":"920:17:6"},{"attributes":{"constant":false,"name":"other","scope":4089,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4071,"name":"ElementaryTypeName","src":"939:5:6"}],"id":4072,"name":"VariableDeclaration","src":"939:18:6"}],"id":4073,"name":"ParameterList","src":"919:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4089,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":4074,"name":"ElementaryTypeName","src":"982:3:6"}],"id":4075,"name":"VariableDeclaration","src":"982:3:6"}],"id":4076,"name":"ParameterList","src":"981:5:6"},{"children":[{"attributes":{"functionReturnParameters":4076},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[4089,4221],"referencedDeclaration":4221,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":4077,"name":"Identifier","src":"1004:7:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4070,"type":"bytes memory","value":"self"},"id":4078,"name":"Identifier","src":"1012:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4079,"name":"Literal","src":"1018:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4070,"type":"bytes memory","value":"self"},"id":4080,"name":"Identifier","src":"1021:4:6"}],"id":4081,"name":"MemberAccess","src":"1021:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"bytes memory","value":"other"},"id":4082,"name":"Identifier","src":"1034:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4083,"name":"Literal","src":"1041:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"bytes memory","value":"other"},"id":4084,"name":"Identifier","src":"1044:5:6"}],"id":4085,"name":"MemberAccess","src":"1044:12:6"}],"id":4086,"name":"FunctionCall","src":"1004:53:6"}],"id":4087,"name":"Return","src":"997:60:6"}],"id":4088,"name":"Block","src":"987:77:6"}],"id":4089,"name":"FunctionDefinition","src":"903:161:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4221,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4090,"name":"ElementaryTypeName","src":"1694:5:6"}],"id":4091,"name":"VariableDeclaration","src":"1694:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4092,"name":"ElementaryTypeName","src":"1713:4:6"}],"id":4093,"name":"VariableDeclaration","src":"1713:11:6"},{"attributes":{"constant":false,"name":"len","scope":4221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4094,"name":"ElementaryTypeName","src":"1726:4:6"}],"id":4095,"name":"VariableDeclaration","src":"1726:8:6"},{"attributes":{"constant":false,"name":"other","scope":4221,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4096,"name":"ElementaryTypeName","src":"1736:5:6"}],"id":4097,"name":"VariableDeclaration","src":"1736:18:6"},{"attributes":{"constant":false,"name":"otheroffset","scope":4221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4098,"name":"ElementaryTypeName","src":"1756:4:6"}],"id":4099,"name":"VariableDeclaration","src":"1756:16:6"},{"attributes":{"constant":false,"name":"otherlen","scope":4221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4100,"name":"ElementaryTypeName","src":"1774:4:6"}],"id":4101,"name":"VariableDeclaration","src":"1774:13:6"}],"id":4102,"name":"ParameterList","src":"1693:95:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4221,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":4103,"name":"ElementaryTypeName","src":"1812:3:6"}],"id":4104,"name":"VariableDeclaration","src":"1812:3:6"}],"id":4105,"name":"ParameterList","src":"1811:5:6"},{"children":[{"attributes":{"assignments":[4107]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":4220,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4106,"name":"ElementaryTypeName","src":"1827:4:6"}],"id":4107,"name":"VariableDeclaration","src":"1827:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4095,"type":"uint256","value":"len"},"id":4108,"name":"Identifier","src":"1843:3:6"}],"id":4109,"name":"VariableDeclarationStatement","src":"1827:19:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4101,"type":"uint256","value":"otherlen"},"id":4110,"name":"Identifier","src":"1860:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4095,"type":"uint256","value":"len"},"id":4111,"name":"Identifier","src":"1871:3:6"}],"id":4112,"name":"BinaryOperation","src":"1860:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4107,"type":"uint256","value":"shortest"},"id":4113,"name":"Identifier","src":"1884:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4101,"type":"uint256","value":"otherlen"},"id":4114,"name":"Identifier","src":"1895:8:6"}],"id":4115,"name":"Assignment","src":"1884:19:6"}],"id":4116,"name":"ExpressionStatement","src":"1884:19:6"}],"id":4117,"name":"IfStatement","src":"1856:47:6"},{"attributes":{"assignments":[4119],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":4220,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4118,"name":"ElementaryTypeName","src":"1914:4:6"}],"id":4119,"name":"VariableDeclaration","src":"1914:12:6"}],"id":4120,"name":"VariableDeclarationStatement","src":"1914:12:6"},{"attributes":{"assignments":[4122],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":4220,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4121,"name":"ElementaryTypeName","src":"1936:4:6"}],"id":4122,"name":"VariableDeclaration","src":"1936:13:6"}],"id":4123,"name":"VariableDeclarationStatement","src":"1936:13:6"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":4119,"isOffset":false,"isSlot":false,"src":"1983:7:6","valueSize":1}},{"offset":{"declaration":4093,"isOffset":false,"isSlot":false,"src":"2008:6:6","valueSize":1}},{"self":{"declaration":4091,"isOffset":false,"isSlot":false,"src":"1998:4:6","valueSize":1}},{"otherptr":{"declaration":4122,"isOffset":false,"isSlot":false,"src":"2033:8:6","valueSize":1}},{"otheroffset":{"declaration":4099,"isOffset":false,"isSlot":false,"src":"2060:11:6","valueSize":1}},{"other":{"declaration":4097,"isOffset":false,"isSlot":false,"src":"2049:5:6","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":4124,"name":"InlineAssembly","src":"1960:127:6"},{"children":[{"attributes":{"assignments":[4126]},"children":[{"attributes":{"constant":false,"name":"idx","scope":4211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4125,"name":"ElementaryTypeName","src":"2101:4:6"}],"id":4126,"name":"VariableDeclaration","src":"2101:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4127,"name":"Literal","src":"2112:1:6"}],"id":4128,"name":"VariableDeclarationStatement","src":"2101:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"uint256","value":"idx"},"id":4129,"name":"Identifier","src":"2115:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4107,"type":"uint256","value":"shortest"},"id":4130,"name":"Identifier","src":"2121:8:6"}],"id":4131,"name":"BinaryOperation","src":"2115:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"uint256","value":"idx"},"id":4132,"name":"Identifier","src":"2131:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4133,"name":"Literal","src":"2138:2:6"}],"id":4134,"name":"Assignment","src":"2131:9:6"}],"id":4135,"name":"ExpressionStatement","src":"2131:9:6"},{"children":[{"attributes":{"assignments":[4137],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":4210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4136,"name":"ElementaryTypeName","src":"2156:4:6"}],"id":4137,"name":"VariableDeclaration","src":"2156:6:6"}],"id":4138,"name":"VariableDeclarationStatement","src":"2156:6:6"},{"attributes":{"assignments":[4140],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":4210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4139,"name":"ElementaryTypeName","src":"2176:4:6"}],"id":4140,"name":"VariableDeclaration","src":"2176:6:6"}],"id":4141,"name":"VariableDeclarationStatement","src":"2176:6:6"},{"attributes":{"externalReferences":[{"a":{"declaration":4137,"isOffset":false,"isSlot":false,"src":"2223:1:6","valueSize":1}},{"selfptr":{"declaration":4119,"isOffset":false,"isSlot":false,"src":"2234:7:6","valueSize":1}},{"b":{"declaration":4140,"isOffset":false,"isSlot":false,"src":"2259:1:6","valueSize":1}},{"otherptr":{"declaration":4122,"isOffset":false,"isSlot":false,"src":"2270:8:6","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":4142,"name":"InlineAssembly","src":"2196:97:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4137,"type":"uint256","value":"a"},"id":4143,"name":"Identifier","src":"2310:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4140,"type":"uint256","value":"b"},"id":4144,"name":"Identifier","src":"2315:1:6"}],"id":4145,"name":"BinaryOperation","src":"2310:6:6"},{"children":[{"attributes":{"assignments":[4147],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":4200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4146,"name":"ElementaryTypeName","src":"2397:4:6"}],"id":4147,"name":"VariableDeclaration","src":"2397:9:6"}],"id":4148,"name":"VariableDeclarationStatement","src":"2397:9:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4107,"type":"uint256","value":"shortest"},"id":4149,"name":"Identifier","src":"2428:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4150,"name":"Literal","src":"2439:2:6"}],"id":4151,"name":"BinaryOperation","src":"2428:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"uint256","value":"mask"},"id":4152,"name":"Identifier","src":"2465:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":4153,"name":"ElementaryTypeNameExpression","src":"2472:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4154,"name":"Literal","src":"2482:1:6"}],"id":4155,"name":"UnaryOperation","src":"2480:3:6"}],"id":4156,"name":"FunctionCall","src":"2472:12:6"}],"id":4157,"name":"Assignment","src":"2465:19:6"}],"id":4158,"name":"ExpressionStatement","src":"2465:19:6"}],"id":4159,"name":"Block","src":"2443:80:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"uint256","value":"mask"},"id":4160,"name":"Identifier","src":"2551:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4161,"name":"Literal","src":"2560:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4162,"name":"Literal","src":"2566:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4163,"name":"Literal","src":"2571:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4107,"type":"uint256","value":"shortest"},"id":4164,"name":"Identifier","src":"2576:8:6"}],"id":4165,"name":"BinaryOperation","src":"2571:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"uint256","value":"idx"},"id":4166,"name":"Identifier","src":"2587:3:6"}],"id":4167,"name":"BinaryOperation","src":"2571:19:6"}],"id":4168,"name":"TupleExpression","src":"2570:21:6"}],"id":4169,"name":"BinaryOperation","src":"2566:25:6"}],"id":4170,"name":"TupleExpression","src":"2565:27:6"}],"id":4171,"name":"BinaryOperation","src":"2560:32:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4172,"name":"Literal","src":"2595:1:6"}],"id":4173,"name":"BinaryOperation","src":"2560:36:6"}],"id":4174,"name":"TupleExpression","src":"2559:38:6"}],"id":4175,"name":"UnaryOperation","src":"2558:39:6"}],"id":4176,"name":"Assignment","src":"2551:46:6"}],"id":4177,"name":"ExpressionStatement","src":"2551:46:6"}],"id":4178,"name":"Block","src":"2529:87:6"}],"id":4179,"name":"IfStatement","src":"2424:192:6"},{"attributes":{"assignments":[4181]},"children":[{"attributes":{"constant":false,"name":"diff","scope":4200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4180,"name":"ElementaryTypeName","src":"2633:4:6"}],"id":4181,"name":"VariableDeclaration","src":"2633:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4137,"type":"uint256","value":"a"},"id":4182,"name":"Identifier","src":"2646:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"uint256","value":"mask"},"id":4183,"name":"Identifier","src":"2650:4:6"}],"id":4184,"name":"BinaryOperation","src":"2646:8:6"}],"id":4185,"name":"TupleExpression","src":"2645:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4140,"type":"uint256","value":"b"},"id":4186,"name":"Identifier","src":"2659:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"uint256","value":"mask"},"id":4187,"name":"Identifier","src":"2663:4:6"}],"id":4188,"name":"BinaryOperation","src":"2659:8:6"}],"id":4189,"name":"TupleExpression","src":"2658:10:6"}],"id":4190,"name":"BinaryOperation","src":"2645:23:6"}],"id":4191,"name":"VariableDeclarationStatement","src":"2633:35:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4181,"type":"uint256","value":"diff"},"id":4192,"name":"Identifier","src":"2690:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4193,"name":"Literal","src":"2698:1:6"}],"id":4194,"name":"BinaryOperation","src":"2690:9:6"},{"attributes":{"functionReturnParameters":4105},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":4195,"name":"ElementaryTypeNameExpression","src":"2724:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4181,"type":"uint256","value":"diff"},"id":4196,"name":"Identifier","src":"2728:4:6"}],"id":4197,"name":"FunctionCall","src":"2724:9:6"}],"id":4198,"name":"Return","src":"2717:16:6"}],"id":4199,"name":"IfStatement","src":"2686:47:6"}],"id":4200,"name":"Block","src":"2318:430:6"}],"id":4201,"name":"IfStatement","src":"2306:442:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4119,"type":"uint256","value":"selfptr"},"id":4202,"name":"Identifier","src":"2761:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4203,"name":"Literal","src":"2772:2:6"}],"id":4204,"name":"Assignment","src":"2761:13:6"}],"id":4205,"name":"ExpressionStatement","src":"2761:13:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4122,"type":"uint256","value":"otherptr"},"id":4206,"name":"Identifier","src":"2788:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4207,"name":"Literal","src":"2800:2:6"}],"id":4208,"name":"Assignment","src":"2788:14:6"}],"id":4209,"name":"ExpressionStatement","src":"2788:14:6"}],"id":4210,"name":"Block","src":"2142:671:6"}],"id":4211,"name":"ForStatement","src":"2096:717:6"},{"attributes":{"functionReturnParameters":4105},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":4212,"name":"ElementaryTypeNameExpression","src":"2830:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4095,"type":"uint256","value":"len"},"id":4213,"name":"Identifier","src":"2834:3:6"}],"id":4214,"name":"FunctionCall","src":"2830:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":4215,"name":"ElementaryTypeNameExpression","src":"2841:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4101,"type":"uint256","value":"otherlen"},"id":4216,"name":"Identifier","src":"2845:8:6"}],"id":4217,"name":"FunctionCall","src":"2841:13:6"}],"id":4218,"name":"BinaryOperation","src":"2830:24:6"}],"id":4219,"name":"Return","src":"2823:31:6"}],"id":4220,"name":"Block","src":"1817:1044:6"}],"id":4221,"name":"FunctionDefinition","src":"1677:1184:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4249,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4222,"name":"ElementaryTypeName","src":"3295:5:6"}],"id":4223,"name":"VariableDeclaration","src":"3295:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4224,"name":"ElementaryTypeName","src":"3314:4:6"}],"id":4225,"name":"VariableDeclaration","src":"3314:11:6"},{"attributes":{"constant":false,"name":"other","scope":4249,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4226,"name":"ElementaryTypeName","src":"3327:5:6"}],"id":4227,"name":"VariableDeclaration","src":"3327:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":4249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4228,"name":"ElementaryTypeName","src":"3347:4:6"}],"id":4229,"name":"VariableDeclaration","src":"3347:16:6"},{"attributes":{"constant":false,"name":"len","scope":4249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4230,"name":"ElementaryTypeName","src":"3365:4:6"}],"id":4231,"name":"VariableDeclaration","src":"3365:8:6"}],"id":4232,"name":"ParameterList","src":"3294:80:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4249,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4233,"name":"ElementaryTypeName","src":"3398:4:6"}],"id":4234,"name":"VariableDeclaration","src":"3398:4:6"}],"id":4235,"name":"ParameterList","src":"3397:6:6"},{"children":[{"attributes":{"functionReturnParameters":4235},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4068,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":4236,"name":"Identifier","src":"3421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4223,"type":"bytes memory","value":"self"},"id":4237,"name":"Identifier","src":"3428:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4225,"type":"uint256","value":"offset"},"id":4238,"name":"Identifier","src":"3434:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4231,"type":"uint256","value":"len"},"id":4239,"name":"Identifier","src":"3442:3:6"}],"id":4240,"name":"FunctionCall","src":"3421:25:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4068,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":4241,"name":"Identifier","src":"3450:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"bytes memory","value":"other"},"id":4242,"name":"Identifier","src":"3457:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"uint256","value":"otherOffset"},"id":4243,"name":"Identifier","src":"3464:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4231,"type":"uint256","value":"len"},"id":4244,"name":"Identifier","src":"3477:3:6"}],"id":4245,"name":"FunctionCall","src":"3450:31:6"}],"id":4246,"name":"BinaryOperation","src":"3421:60:6"}],"id":4247,"name":"Return","src":"3414:67:6"}],"id":4248,"name":"Block","src":"3404:84:6"}],"id":4249,"name":"FunctionDefinition","src":"3279:209:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4281,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4250,"name":"ElementaryTypeName","src":"3887:5:6"}],"id":4251,"name":"VariableDeclaration","src":"3887:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4281,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4252,"name":"ElementaryTypeName","src":"3906:4:6"}],"id":4253,"name":"VariableDeclaration","src":"3906:11:6"},{"attributes":{"constant":false,"name":"other","scope":4281,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4254,"name":"ElementaryTypeName","src":"3919:5:6"}],"id":4255,"name":"VariableDeclaration","src":"3919:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":4281,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4256,"name":"ElementaryTypeName","src":"3939:4:6"}],"id":4257,"name":"VariableDeclaration","src":"3939:16:6"}],"id":4258,"name":"ParameterList","src":"3886:70:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4281,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4259,"name":"ElementaryTypeName","src":"3980:4:6"}],"id":4260,"name":"VariableDeclaration","src":"3980:4:6"}],"id":4261,"name":"ParameterList","src":"3979:6:6"},{"children":[{"attributes":{"functionReturnParameters":4261},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4068,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":4262,"name":"Identifier","src":"4003:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4251,"type":"bytes memory","value":"self"},"id":4263,"name":"Identifier","src":"4010:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4253,"type":"uint256","value":"offset"},"id":4264,"name":"Identifier","src":"4016:6:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4251,"type":"bytes memory","value":"self"},"id":4265,"name":"Identifier","src":"4024:4:6"}],"id":4266,"name":"MemberAccess","src":"4024:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4253,"type":"uint256","value":"offset"},"id":4267,"name":"Identifier","src":"4038:6:6"}],"id":4268,"name":"BinaryOperation","src":"4024:20:6"}],"id":4269,"name":"FunctionCall","src":"4003:42:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4068,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":4270,"name":"Identifier","src":"4049:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4255,"type":"bytes memory","value":"other"},"id":4271,"name":"Identifier","src":"4056:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"uint256","value":"otherOffset"},"id":4272,"name":"Identifier","src":"4063:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4255,"type":"bytes memory","value":"other"},"id":4273,"name":"Identifier","src":"4076:5:6"}],"id":4274,"name":"MemberAccess","src":"4076:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"uint256","value":"otherOffset"},"id":4275,"name":"Identifier","src":"4091:11:6"}],"id":4276,"name":"BinaryOperation","src":"4076:26:6"}],"id":4277,"name":"FunctionCall","src":"4049:54:6"}],"id":4278,"name":"BinaryOperation","src":"4003:100:6"}],"id":4279,"name":"Return","src":"3996:107:6"}],"id":4280,"name":"Block","src":"3986:124:6"}],"id":4281,"name":"FunctionDefinition","src":"3871:239:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4310,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4282,"name":"ElementaryTypeName","src":"4478:5:6"}],"id":4283,"name":"VariableDeclaration","src":"4478:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4310,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4284,"name":"ElementaryTypeName","src":"4497:4:6"}],"id":4285,"name":"VariableDeclaration","src":"4497:11:6"},{"attributes":{"constant":false,"name":"other","scope":4310,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4286,"name":"ElementaryTypeName","src":"4510:5:6"}],"id":4287,"name":"VariableDeclaration","src":"4510:18:6"}],"id":4288,"name":"ParameterList","src":"4477:52:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4310,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4289,"name":"ElementaryTypeName","src":"4553:4:6"}],"id":4290,"name":"VariableDeclaration","src":"4553:4:6"}],"id":4291,"name":"ParameterList","src":"4552:6:6"},{"children":[{"attributes":{"functionReturnParameters":4291},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4283,"type":"bytes memory","value":"self"},"id":4292,"name":"Identifier","src":"4576:4:6"}],"id":4293,"name":"MemberAccess","src":"4576:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4285,"type":"uint256","value":"offset"},"id":4294,"name":"Identifier","src":"4591:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4287,"type":"bytes memory","value":"other"},"id":4295,"name":"Identifier","src":"4600:5:6"}],"id":4296,"name":"MemberAccess","src":"4600:12:6"}],"id":4297,"name":"BinaryOperation","src":"4591:21:6"}],"id":4298,"name":"BinaryOperation","src":"4576:36:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[4249,4281,4310,4335],"referencedDeclaration":4249,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":4299,"name":"Identifier","src":"4616:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4283,"type":"bytes memory","value":"self"},"id":4300,"name":"Identifier","src":"4623:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4285,"type":"uint256","value":"offset"},"id":4301,"name":"Identifier","src":"4629:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4287,"type":"bytes memory","value":"other"},"id":4302,"name":"Identifier","src":"4637:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4303,"name":"Literal","src":"4644:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4287,"type":"bytes memory","value":"other"},"id":4304,"name":"Identifier","src":"4647:5:6"}],"id":4305,"name":"MemberAccess","src":"4647:12:6"}],"id":4306,"name":"FunctionCall","src":"4616:44:6"}],"id":4307,"name":"BinaryOperation","src":"4576:84:6"}],"id":4308,"name":"Return","src":"4569:91:6"}],"id":4309,"name":"Block","src":"4559:108:6"}],"id":4310,"name":"FunctionDefinition","src":"4462:205:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4335,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4311,"name":"ElementaryTypeName","src":"4931:5:6"}],"id":4312,"name":"VariableDeclaration","src":"4931:17:6"},{"attributes":{"constant":false,"name":"other","scope":4335,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4313,"name":"ElementaryTypeName","src":"4950:5:6"}],"id":4314,"name":"VariableDeclaration","src":"4950:18:6"}],"id":4315,"name":"ParameterList","src":"4930:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4335,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4316,"name":"ElementaryTypeName","src":"4992:4:6"}],"id":4317,"name":"VariableDeclaration","src":"4992:4:6"}],"id":4318,"name":"ParameterList","src":"4991:6:6"},{"children":[{"attributes":{"functionReturnParameters":4318},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4312,"type":"bytes memory","value":"self"},"id":4319,"name":"Identifier","src":"5015:4:6"}],"id":4320,"name":"MemberAccess","src":"5015:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4314,"type":"bytes memory","value":"other"},"id":4321,"name":"Identifier","src":"5030:5:6"}],"id":4322,"name":"MemberAccess","src":"5030:12:6"}],"id":4323,"name":"BinaryOperation","src":"5015:27:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[4249,4281,4310,4335],"referencedDeclaration":4249,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":4324,"name":"Identifier","src":"5046:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4312,"type":"bytes memory","value":"self"},"id":4325,"name":"Identifier","src":"5053:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4326,"name":"Literal","src":"5059:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4314,"type":"bytes memory","value":"other"},"id":4327,"name":"Identifier","src":"5062:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4328,"name":"Literal","src":"5069:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4312,"type":"bytes memory","value":"self"},"id":4329,"name":"Identifier","src":"5072:4:6"}],"id":4330,"name":"MemberAccess","src":"5072:11:6"}],"id":4331,"name":"FunctionCall","src":"5046:38:6"}],"id":4332,"name":"BinaryOperation","src":"5015:69:6"}],"id":4333,"name":"Return","src":"5008:76:6"}],"id":4334,"name":"Block","src":"4998:93:6"}],"id":4335,"name":"FunctionDefinition","src":"4915:176:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4351,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4336,"name":"ElementaryTypeName","src":"5352:5:6"}],"id":4337,"name":"VariableDeclaration","src":"5352:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4351,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4338,"name":"ElementaryTypeName","src":"5371:4:6"}],"id":4339,"name":"VariableDeclaration","src":"5371:8:6"}],"id":4340,"name":"ParameterList","src":"5351:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4351,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":4341,"name":"ElementaryTypeName","src":"5404:5:6"}],"id":4342,"name":"VariableDeclaration","src":"5404:9:6"}],"id":4343,"name":"ParameterList","src":"5403:11:6"},{"children":[{"attributes":{"functionReturnParameters":4343},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":4344,"name":"ElementaryTypeNameExpression","src":"5432:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"bytes memory","value":"self"},"id":4345,"name":"Identifier","src":"5438:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"uint256","value":"idx"},"id":4346,"name":"Identifier","src":"5443:3:6"}],"id":4347,"name":"IndexAccess","src":"5438:9:6"}],"id":4348,"name":"FunctionCall","src":"5432:16:6"}],"id":4349,"name":"Return","src":"5425:23:6"}],"id":4350,"name":"Block","src":"5415:40:6"}],"id":4351,"name":"FunctionDefinition","src":"5333:122:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4371,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4352,"name":"ElementaryTypeName","src":"5719:5:6"}],"id":4353,"name":"VariableDeclaration","src":"5719:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4371,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4354,"name":"ElementaryTypeName","src":"5738:4:6"}],"id":4355,"name":"VariableDeclaration","src":"5738:8:6"}],"id":4356,"name":"ParameterList","src":"5718:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4371,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4357,"name":"ElementaryTypeName","src":"5771:6:6"}],"id":4358,"name":"VariableDeclaration","src":"5771:10:6"}],"id":4359,"name":"ParameterList","src":"5770:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4360,"name":"Identifier","src":"5793:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"idx"},"id":4361,"name":"Identifier","src":"5801:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4362,"name":"Literal","src":"5807:1:6"}],"id":4363,"name":"BinaryOperation","src":"5801:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"bytes memory","value":"self"},"id":4364,"name":"Identifier","src":"5812:4:6"}],"id":4365,"name":"MemberAccess","src":"5812:11:6"}],"id":4366,"name":"BinaryOperation","src":"5801:22:6"}],"id":4367,"name":"FunctionCall","src":"5793:31:6"}],"id":4368,"name":"ExpressionStatement","src":"5793:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4358,"isOffset":false,"isSlot":false,"src":"5857:3:6","valueSize":1}},{"self":{"declaration":4353,"isOffset":false,"isSlot":false,"src":"5882:4:6","valueSize":1}},{"idx":{"declaration":4355,"isOffset":false,"isSlot":false,"src":"5892:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":4369,"name":"InlineAssembly","src":"5834:82:6"}],"id":4370,"name":"Block","src":"5783:139:6"}],"id":4371,"name":"FunctionDefinition","src":"5699:223:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4391,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4372,"name":"ElementaryTypeName","src":"6186:5:6"}],"id":4373,"name":"VariableDeclaration","src":"6186:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4391,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4374,"name":"ElementaryTypeName","src":"6205:4:6"}],"id":4375,"name":"VariableDeclaration","src":"6205:8:6"}],"id":4376,"name":"ParameterList","src":"6185:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4391,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":4377,"name":"ElementaryTypeName","src":"6238:6:6"}],"id":4378,"name":"VariableDeclaration","src":"6238:10:6"}],"id":4379,"name":"ParameterList","src":"6237:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4380,"name":"Identifier","src":"6260:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4375,"type":"uint256","value":"idx"},"id":4381,"name":"Identifier","src":"6268:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4382,"name":"Literal","src":"6274:1:6"}],"id":4383,"name":"BinaryOperation","src":"6268:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4373,"type":"bytes memory","value":"self"},"id":4384,"name":"Identifier","src":"6279:4:6"}],"id":4385,"name":"MemberAccess","src":"6279:11:6"}],"id":4386,"name":"BinaryOperation","src":"6268:22:6"}],"id":4387,"name":"FunctionCall","src":"6260:31:6"}],"id":4388,"name":"ExpressionStatement","src":"6260:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4378,"isOffset":false,"isSlot":false,"src":"6324:3:6","valueSize":1}},{"self":{"declaration":4373,"isOffset":false,"isSlot":false,"src":"6349:4:6","valueSize":1}},{"idx":{"declaration":4375,"isOffset":false,"isSlot":false,"src":"6359:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":4389,"name":"InlineAssembly","src":"6301:86:6"}],"id":4390,"name":"Block","src":"6250:143:6"}],"id":4391,"name":"FunctionDefinition","src":"6166:227:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4411,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4392,"name":"ElementaryTypeName","src":"6632:5:6"}],"id":4393,"name":"VariableDeclaration","src":"6632:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4411,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4394,"name":"ElementaryTypeName","src":"6651:4:6"}],"id":4395,"name":"VariableDeclaration","src":"6651:8:6"}],"id":4396,"name":"ParameterList","src":"6631:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4411,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4397,"name":"ElementaryTypeName","src":"6684:7:6"}],"id":4398,"name":"VariableDeclaration","src":"6684:11:6"}],"id":4399,"name":"ParameterList","src":"6683:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4400,"name":"Identifier","src":"6707:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4395,"type":"uint256","value":"idx"},"id":4401,"name":"Identifier","src":"6715:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4402,"name":"Literal","src":"6721:2:6"}],"id":4403,"name":"BinaryOperation","src":"6715:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4393,"type":"bytes memory","value":"self"},"id":4404,"name":"Identifier","src":"6727:4:6"}],"id":4405,"name":"MemberAccess","src":"6727:11:6"}],"id":4406,"name":"BinaryOperation","src":"6715:23:6"}],"id":4407,"name":"FunctionCall","src":"6707:32:6"}],"id":4408,"name":"ExpressionStatement","src":"6707:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4398,"isOffset":false,"isSlot":false,"src":"6772:3:6","valueSize":1}},{"self":{"declaration":4393,"isOffset":false,"isSlot":false,"src":"6793:4:6","valueSize":1}},{"idx":{"declaration":4395,"isOffset":false,"isSlot":false,"src":"6804:3:6","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":4409,"name":"InlineAssembly","src":"6749:70:6"}],"id":4410,"name":"Block","src":"6697:128:6"}],"id":4411,"name":"FunctionDefinition","src":"6611:214:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4431,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4412,"name":"ElementaryTypeName","src":"7064:5:6"}],"id":4413,"name":"VariableDeclaration","src":"7064:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4431,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4414,"name":"ElementaryTypeName","src":"7083:4:6"}],"id":4415,"name":"VariableDeclaration","src":"7083:8:6"}],"id":4416,"name":"ParameterList","src":"7063:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4431,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":4417,"name":"ElementaryTypeName","src":"7116:7:6"}],"id":4418,"name":"VariableDeclaration","src":"7116:11:6"}],"id":4419,"name":"ParameterList","src":"7115:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4420,"name":"Identifier","src":"7139:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4415,"type":"uint256","value":"idx"},"id":4421,"name":"Identifier","src":"7147:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":4422,"name":"Literal","src":"7153:2:6"}],"id":4423,"name":"BinaryOperation","src":"7147:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4413,"type":"bytes memory","value":"self"},"id":4424,"name":"Identifier","src":"7159:4:6"}],"id":4425,"name":"MemberAccess","src":"7159:11:6"}],"id":4426,"name":"BinaryOperation","src":"7147:23:6"}],"id":4427,"name":"FunctionCall","src":"7139:32:6"}],"id":4428,"name":"ExpressionStatement","src":"7139:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4418,"isOffset":false,"isSlot":false,"src":"7204:3:6","valueSize":1}},{"self":{"declaration":4413,"isOffset":false,"isSlot":false,"src":"7229:4:6","valueSize":1}},{"idx":{"declaration":4415,"isOffset":false,"isSlot":false,"src":"7240:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":4429,"name":"InlineAssembly","src":"7181:143:6"}],"id":4430,"name":"Block","src":"7129:201:6"}],"id":4431,"name":"FunctionDefinition","src":"7043:287:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4459,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4432,"name":"ElementaryTypeName","src":"7606:5:6"}],"id":4433,"name":"VariableDeclaration","src":"7606:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4459,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4434,"name":"ElementaryTypeName","src":"7625:4:6"}],"id":4435,"name":"VariableDeclaration","src":"7625:8:6"},{"attributes":{"constant":false,"name":"len","scope":4459,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4436,"name":"ElementaryTypeName","src":"7635:4:6"}],"id":4437,"name":"VariableDeclaration","src":"7635:8:6"}],"id":4438,"name":"ParameterList","src":"7605:39:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4459,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4439,"name":"ElementaryTypeName","src":"7668:7:6"}],"id":4440,"name":"VariableDeclaration","src":"7668:11:6"}],"id":4441,"name":"ParameterList","src":"7667:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4442,"name":"Identifier","src":"7691:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4437,"type":"uint256","value":"len"},"id":4443,"name":"Identifier","src":"7699:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4444,"name":"Literal","src":"7706:2:6"}],"id":4445,"name":"BinaryOperation","src":"7699:9:6"}],"id":4446,"name":"FunctionCall","src":"7691:18:6"}],"id":4447,"name":"ExpressionStatement","src":"7691:18:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4448,"name":"Identifier","src":"7719:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4435,"type":"uint256","value":"idx"},"id":4449,"name":"Identifier","src":"7727:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4437,"type":"uint256","value":"len"},"id":4450,"name":"Identifier","src":"7733:3:6"}],"id":4451,"name":"BinaryOperation","src":"7727:9:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4433,"type":"bytes memory","value":"self"},"id":4452,"name":"Identifier","src":"7740:4:6"}],"id":4453,"name":"MemberAccess","src":"7740:11:6"}],"id":4454,"name":"BinaryOperation","src":"7727:24:6"}],"id":4455,"name":"FunctionCall","src":"7719:33:6"}],"id":4456,"name":"ExpressionStatement","src":"7719:33:6"},{"attributes":{"externalReferences":[{"len":{"declaration":4437,"isOffset":false,"isSlot":false,"src":"7822:3:6","valueSize":1}},{"ret":{"declaration":4440,"isOffset":false,"isSlot":false,"src":"7845:3:6","valueSize":1}},{"self":{"declaration":4433,"isOffset":false,"isSlot":false,"src":"7870:4:6","valueSize":1}},{"idx":{"declaration":4435,"isOffset":false,"isSlot":false,"src":"7881:3:6","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":4457,"name":"InlineAssembly","src":"7762:142:6"}],"id":4458,"name":"Block","src":"7681:229:6"}],"id":4459,"name":"FunctionDefinition","src":"7586:324:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":4499,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4460,"name":"ElementaryTypeName","src":"7932:4:6"}],"id":4461,"name":"VariableDeclaration","src":"7932:9:6"},{"attributes":{"constant":false,"name":"src","scope":4499,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4462,"name":"ElementaryTypeName","src":"7943:4:6"}],"id":4463,"name":"VariableDeclaration","src":"7943:8:6"},{"attributes":{"constant":false,"name":"len","scope":4499,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4464,"name":"ElementaryTypeName","src":"7953:4:6"}],"id":4465,"name":"VariableDeclaration","src":"7953:8:6"}],"id":4466,"name":"ParameterList","src":"7931:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":4467,"name":"ParameterList","src":"7976:0:6"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4465,"type":"uint256","value":"len"},"id":4468,"name":"Identifier","src":"8043:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4469,"name":"Literal","src":"8050:2:6"}],"id":4470,"name":"BinaryOperation","src":"8043:9:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4465,"type":"uint256","value":"len"},"id":4471,"name":"Identifier","src":"8054:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4472,"name":"Literal","src":"8061:2:6"}],"id":4473,"name":"Assignment","src":"8054:9:6"}],"id":4474,"name":"ExpressionStatement","src":"8054:9:6"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":4463,"isOffset":false,"isSlot":false,"src":"8125:3:6","valueSize":1}},{"dest":{"declaration":4461,"isOffset":false,"isSlot":false,"src":"8113:4:6","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":4475,"name":"InlineAssembly","src":"8079:65:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4461,"type":"uint256","value":"dest"},"id":4476,"name":"Identifier","src":"8157:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4477,"name":"Literal","src":"8165:2:6"}],"id":4478,"name":"Assignment","src":"8157:10:6"}],"id":4479,"name":"ExpressionStatement","src":"8157:10:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4463,"type":"uint256","value":"src"},"id":4480,"name":"Identifier","src":"8181:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4481,"name":"Literal","src":"8188:2:6"}],"id":4482,"name":"Assignment","src":"8181:9:6"}],"id":4483,"name":"ExpressionStatement","src":"8181:9:6"}],"id":4484,"name":"Block","src":"8065:136:6"}],"id":4485,"name":"ForStatement","src":"8036:165:6"},{"attributes":{"assignments":[4487]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4498,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4486,"name":"ElementaryTypeName","src":"8243:4:6"}],"id":4487,"name":"VariableDeclaration","src":"8243:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":4488,"name":"Literal","src":"8255:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4489,"name":"Literal","src":"8263:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4465,"type":"uint256","value":"len"},"id":4490,"name":"Identifier","src":"8268:3:6"}],"id":4491,"name":"BinaryOperation","src":"8263:8:6"}],"id":4492,"name":"TupleExpression","src":"8262:10:6"}],"id":4493,"name":"BinaryOperation","src":"8255:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4494,"name":"Literal","src":"8275:1:6"}],"id":4495,"name":"BinaryOperation","src":"8255:21:6"}],"id":4496,"name":"VariableDeclarationStatement","src":"8243:33:6"},{"attributes":{"externalReferences":[{"src":{"declaration":4463,"isOffset":false,"isSlot":false,"src":"8334:3:6","valueSize":1}},{"mask":{"declaration":4487,"isOffset":false,"isSlot":false,"src":"8344:4:6","valueSize":1}},{"dest":{"declaration":4461,"isOffset":false,"isSlot":false,"src":"8421:4:6","valueSize":1}},{"dest":{"declaration":4461,"isOffset":false,"isSlot":false,"src":"8389:4:6","valueSize":1}},{"mask":{"declaration":4487,"isOffset":false,"isSlot":false,"src":"8396:4:6","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":4497,"name":"InlineAssembly","src":"8286:173:6"}],"id":4498,"name":"Block","src":"7976:489:6"}],"id":4499,"name":"FunctionDefinition","src":"7916:549:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4542,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4500,"name":"ElementaryTypeName","src":"8704:5:6"}],"id":4501,"name":"VariableDeclaration","src":"8704:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4542,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4502,"name":"ElementaryTypeName","src":"8723:4:6"}],"id":4503,"name":"VariableDeclaration","src":"8723:11:6"},{"attributes":{"constant":false,"name":"len","scope":4542,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4504,"name":"ElementaryTypeName","src":"8736:4:6"}],"id":4505,"name":"VariableDeclaration","src":"8736:8:6"}],"id":4506,"name":"ParameterList","src":"8703:42:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4542,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4507,"name":"ElementaryTypeName","src":"8768:5:6"}],"id":4508,"name":"VariableDeclaration","src":"8768:12:6"}],"id":4509,"name":"ParameterList","src":"8767:14:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4510,"name":"Identifier","src":"8792:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4503,"type":"uint256","value":"offset"},"id":4511,"name":"Identifier","src":"8800:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4505,"type":"uint256","value":"len"},"id":4512,"name":"Identifier","src":"8809:3:6"}],"id":4513,"name":"BinaryOperation","src":"8800:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4501,"type":"bytes memory","value":"self"},"id":4514,"name":"Identifier","src":"8816:4:6"}],"id":4515,"name":"MemberAccess","src":"8816:11:6"}],"id":4516,"name":"BinaryOperation","src":"8800:27:6"}],"id":4517,"name":"FunctionCall","src":"8792:36:6"}],"id":4518,"name":"ExpressionStatement","src":"8792:36:6"},{"attributes":{"assignments":[4520]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4541,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4519,"name":"ElementaryTypeName","src":"8839:5:6"}],"id":4520,"name":"VariableDeclaration","src":"8839:16:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4521,"name":"ElementaryTypeName","src":"8862:5:6"}],"id":4522,"name":"NewExpression","src":"8858:9:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4505,"type":"uint256","value":"len"},"id":4523,"name":"Identifier","src":"8868:3:6"}],"id":4524,"name":"FunctionCall","src":"8858:14:6"}],"id":4525,"name":"VariableDeclarationStatement","src":"8839:33:6"},{"attributes":{"assignments":[4527],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":4541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4526,"name":"ElementaryTypeName","src":"8882:4:6"}],"id":4527,"name":"VariableDeclaration","src":"8882:9:6"}],"id":4528,"name":"VariableDeclarationStatement","src":"8882:9:6"},{"attributes":{"assignments":[4530],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":4541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4529,"name":"ElementaryTypeName","src":"8901:4:6"}],"id":4530,"name":"VariableDeclaration","src":"8901:8:6"}],"id":4531,"name":"VariableDeclarationStatement","src":"8901:8:6"},{"attributes":{"externalReferences":[{"dest":{"declaration":4527,"isOffset":false,"isSlot":false,"src":"8943:4:6","valueSize":1}},{"ret":{"declaration":4520,"isOffset":false,"isSlot":false,"src":"8955:3:6","valueSize":1}},{"src":{"declaration":4530,"isOffset":false,"isSlot":false,"src":"8976:3:6","valueSize":1}},{"self":{"declaration":4501,"isOffset":false,"isSlot":false,"src":"8991:4:6","valueSize":1}},{"offset":{"declaration":4503,"isOffset":false,"isSlot":false,"src":"9002:6:6","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":4532,"name":"InlineAssembly","src":"8920:99:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4499,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4533,"name":"Identifier","src":"9028:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4527,"type":"uint256","value":"dest"},"id":4534,"name":"Identifier","src":"9035:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4530,"type":"uint256","value":"src"},"id":4535,"name":"Identifier","src":"9041:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4505,"type":"uint256","value":"len"},"id":4536,"name":"Identifier","src":"9046:3:6"}],"id":4537,"name":"FunctionCall","src":"9028:22:6"}],"id":4538,"name":"ExpressionStatement","src":"9028:22:6"},{"attributes":{"functionReturnParameters":4509},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4520,"type":"bytes memory","value":"ret"},"id":4539,"name":"Identifier","src":"9068:3:6"}],"id":4540,"name":"Return","src":"9061:10:6"}],"id":4541,"name":"Block","src":"8782:296:6"}],"id":4542,"name":"FunctionDefinition","src":"8685:393:6"},{"attributes":{"constant":true,"name":"base32HexTable","scope":4765,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4543,"name":"ElementaryTypeName","src":"9206:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":4544,"name":"Literal","src":"9238:147:6"}],"id":4545,"name":"VariableDeclaration","src":"9206:179:6"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4764,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4546,"name":"ElementaryTypeName","src":"9697:5:6"}],"id":4547,"name":"VariableDeclaration","src":"9697:17:6"},{"attributes":{"constant":false,"name":"off","scope":4764,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4548,"name":"ElementaryTypeName","src":"9716:4:6"}],"id":4549,"name":"VariableDeclaration","src":"9716:8:6"},{"attributes":{"constant":false,"name":"len","scope":4764,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4550,"name":"ElementaryTypeName","src":"9726:4:6"}],"id":4551,"name":"VariableDeclaration","src":"9726:8:6"}],"id":4552,"name":"ParameterList","src":"9696:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4764,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4553,"name":"ElementaryTypeName","src":"9758:7:6"}],"id":4554,"name":"VariableDeclaration","src":"9758:7:6"}],"id":4555,"name":"ParameterList","src":"9757:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4556,"name":"Identifier","src":"9777:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4557,"name":"Identifier","src":"9785:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":4558,"name":"Literal","src":"9792:2:6"}],"id":4559,"name":"BinaryOperation","src":"9785:9:6"}],"id":4560,"name":"FunctionCall","src":"9777:18:6"}],"id":4561,"name":"ExpressionStatement","src":"9777:18:6"},{"attributes":{"assignments":[4563]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4763,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4562,"name":"ElementaryTypeName","src":"9806:4:6"}],"id":4563,"name":"VariableDeclaration","src":"9806:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4564,"name":"Literal","src":"9817:1:6"}],"id":4565,"name":"VariableDeclarationStatement","src":"9806:12:6"},{"attributes":{"assignments":[4567],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":4763,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":4566,"name":"ElementaryTypeName","src":"9828:5:6"}],"id":4567,"name":"VariableDeclaration","src":"9828:13:6"}],"id":4568,"name":"VariableDeclarationStatement","src":"9828:13:6"},{"children":[{"attributes":{"assignments":[4570]},"children":[{"attributes":{"constant":false,"name":"i","scope":4635,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4569,"name":"ElementaryTypeName","src":"9855:4:6"}],"id":4570,"name":"VariableDeclaration","src":"9855:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4571,"name":"Literal","src":"9864:1:6"}],"id":4572,"name":"VariableDeclarationStatement","src":"9855:10:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"i"},"id":4573,"name":"Identifier","src":"9867:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4574,"name":"Identifier","src":"9871:3:6"}],"id":4575,"name":"BinaryOperation","src":"9867:7:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"i"},"id":4576,"name":"Identifier","src":"9876:1:6"}],"id":4577,"name":"UnaryOperation","src":"9876:3:6"}],"id":4578,"name":"ExpressionStatement","src":"9876:3:6"},{"children":[{"attributes":{"assignments":[4580]},"children":[{"attributes":{"constant":false,"name":"char","scope":4634,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":4579,"name":"ElementaryTypeName","src":"9895:6:6"}],"id":4580,"name":"VariableDeclaration","src":"9895:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"bytes memory","value":"self"},"id":4581,"name":"Identifier","src":"9909:4:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4549,"type":"uint256","value":"off"},"id":4582,"name":"Identifier","src":"9914:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"i"},"id":4583,"name":"Identifier","src":"9920:1:6"}],"id":4584,"name":"BinaryOperation","src":"9914:7:6"}],"id":4585,"name":"IndexAccess","src":"9909:13:6"}],"id":4586,"name":"VariableDeclarationStatement","src":"9895:27:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4587,"name":"Identifier","src":"9936:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4580,"type":"bytes1","value":"char"},"id":4588,"name":"Identifier","src":"9944:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":4589,"name":"Literal","src":"9952:4:6"}],"id":4590,"name":"BinaryOperation","src":"9944:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4580,"type":"bytes1","value":"char"},"id":4591,"name":"Identifier","src":"9960:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":4592,"name":"Literal","src":"9968:4:6"}],"id":4593,"name":"BinaryOperation","src":"9960:12:6"}],"id":4594,"name":"BinaryOperation","src":"9944:28:6"}],"id":4595,"name":"FunctionCall","src":"9936:37:6"}],"id":4596,"name":"ExpressionStatement","src":"9936:37:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4597,"name":"Identifier","src":"9987:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":4598,"name":"ElementaryTypeNameExpression","src":"9997:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"bytes memory","value":"base32HexTable"},"id":4599,"name":"Identifier","src":"10003:14:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":4600,"name":"ElementaryTypeNameExpression","src":"10018:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":4601,"name":"ElementaryTypeNameExpression","src":"10023:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4580,"type":"bytes1","value":"char"},"id":4602,"name":"Identifier","src":"10029:4:6"}],"id":4603,"name":"FunctionCall","src":"10023:11:6"}],"id":4604,"name":"FunctionCall","src":"10018:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":4605,"name":"Literal","src":"10038:4:6"}],"id":4606,"name":"BinaryOperation","src":"10018:24:6"}],"id":4607,"name":"IndexAccess","src":"10003:40:6"}],"id":4608,"name":"FunctionCall","src":"9997:47:6"}],"id":4609,"name":"Assignment","src":"9987:57:6"}],"id":4610,"name":"ExpressionStatement","src":"9987:57:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4611,"name":"Identifier","src":"10058:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4612,"name":"Identifier","src":"10066:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":4613,"name":"Literal","src":"10077:4:6"}],"id":4614,"name":"BinaryOperation","src":"10066:15:6"}],"id":4615,"name":"FunctionCall","src":"10058:24:6"}],"id":4616,"name":"ExpressionStatement","src":"10058:24:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"i"},"id":4617,"name":"Identifier","src":"10099:1:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4618,"name":"Identifier","src":"10104:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4619,"name":"Literal","src":"10110:1:6"}],"id":4620,"name":"BinaryOperation","src":"10104:7:6"}],"id":4621,"name":"BinaryOperation","src":"10099:12:6"},{"children":[{"id":4622,"name":"Break","src":"10131:5:6"}],"id":4623,"name":"Block","src":"10113:38:6"}],"id":4624,"name":"IfStatement","src":"10096:55:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4625,"name":"Identifier","src":"10164:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4626,"name":"Identifier","src":"10171:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4627,"name":"Literal","src":"10178:1:6"}],"id":4628,"name":"BinaryOperation","src":"10171:8:6"}],"id":4629,"name":"TupleExpression","src":"10170:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4630,"name":"Identifier","src":"10183:7:6"}],"id":4631,"name":"BinaryOperation","src":"10170:20:6"}],"id":4632,"name":"Assignment","src":"10164:26:6"}],"id":4633,"name":"ExpressionStatement","src":"10164:26:6"}],"id":4634,"name":"Block","src":"9881:320:6"}],"id":4635,"name":"ForStatement","src":"9851:350:6"},{"attributes":{"assignments":[4637]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":4763,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4636,"name":"ElementaryTypeName","src":"10211:4:6"}],"id":4637,"name":"VariableDeclaration","src":"10211:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4638,"name":"Identifier","src":"10225:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4639,"name":"Literal","src":"10231:1:6"}],"id":4640,"name":"BinaryOperation","src":"10225:7:6"}],"id":4641,"name":"VariableDeclarationStatement","src":"10211:21:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4642,"name":"Identifier","src":"10245:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4643,"name":"Literal","src":"10251:1:6"}],"id":4644,"name":"BinaryOperation","src":"10245:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4645,"name":"Literal","src":"10256:1:6"}],"id":4646,"name":"BinaryOperation","src":"10245:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4647,"name":"Identifier","src":"10325:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4648,"name":"Identifier","src":"10332:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4649,"name":"Literal","src":"10339:1:6"}],"id":4650,"name":"BinaryOperation","src":"10332:8:6"}],"id":4651,"name":"TupleExpression","src":"10331:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4652,"name":"Identifier","src":"10344:7:6"}],"id":4653,"name":"BinaryOperation","src":"10331:20:6"}],"id":4654,"name":"Assignment","src":"10325:26:6"}],"id":4655,"name":"ExpressionStatement","src":"10325:26:6"}],"id":4656,"name":"Block","src":"10259:103:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4657,"name":"Identifier","src":"10371:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4658,"name":"Literal","src":"10377:1:6"}],"id":4659,"name":"BinaryOperation","src":"10371:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4660,"name":"Literal","src":"10382:1:6"}],"id":4661,"name":"BinaryOperation","src":"10371:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4662,"name":"Identifier","src":"10444:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4663,"name":"Identifier","src":"10451:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4664,"name":"Literal","src":"10458:1:6"}],"id":4665,"name":"BinaryOperation","src":"10451:8:6"}],"id":4666,"name":"TupleExpression","src":"10450:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4667,"name":"Identifier","src":"10464:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4668,"name":"Literal","src":"10475:1:6"}],"id":4669,"name":"BinaryOperation","src":"10464:12:6"}],"id":4670,"name":"TupleExpression","src":"10463:14:6"}],"id":4671,"name":"BinaryOperation","src":"10450:27:6"}],"id":4672,"name":"Assignment","src":"10444:33:6"}],"id":4673,"name":"ExpressionStatement","src":"10444:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4674,"name":"Identifier","src":"10491:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4675,"name":"Literal","src":"10501:1:6"}],"id":4676,"name":"Assignment","src":"10491:11:6"}],"id":4677,"name":"ExpressionStatement","src":"10491:11:6"}],"id":4678,"name":"Block","src":"10385:128:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4679,"name":"Identifier","src":"10522:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4680,"name":"Literal","src":"10528:1:6"}],"id":4681,"name":"BinaryOperation","src":"10522:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4682,"name":"Literal","src":"10533:1:6"}],"id":4683,"name":"BinaryOperation","src":"10522:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4684,"name":"Identifier","src":"10597:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4685,"name":"Identifier","src":"10604:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4686,"name":"Literal","src":"10611:1:6"}],"id":4687,"name":"BinaryOperation","src":"10604:8:6"}],"id":4688,"name":"TupleExpression","src":"10603:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4689,"name":"Identifier","src":"10617:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4690,"name":"Literal","src":"10628:1:6"}],"id":4691,"name":"BinaryOperation","src":"10617:12:6"}],"id":4692,"name":"TupleExpression","src":"10616:14:6"}],"id":4693,"name":"BinaryOperation","src":"10603:27:6"}],"id":4694,"name":"Assignment","src":"10597:33:6"}],"id":4695,"name":"ExpressionStatement","src":"10597:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4696,"name":"Identifier","src":"10644:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4697,"name":"Literal","src":"10654:1:6"}],"id":4698,"name":"Assignment","src":"10644:11:6"}],"id":4699,"name":"ExpressionStatement","src":"10644:11:6"}],"id":4700,"name":"Block","src":"10536:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4701,"name":"Identifier","src":"10675:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4702,"name":"Literal","src":"10681:1:6"}],"id":4703,"name":"BinaryOperation","src":"10675:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4704,"name":"Literal","src":"10686:1:6"}],"id":4705,"name":"BinaryOperation","src":"10675:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4706,"name":"Identifier","src":"10750:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4707,"name":"Identifier","src":"10757:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4708,"name":"Literal","src":"10764:1:6"}],"id":4709,"name":"BinaryOperation","src":"10757:8:6"}],"id":4710,"name":"TupleExpression","src":"10756:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4711,"name":"Identifier","src":"10770:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4712,"name":"Literal","src":"10781:1:6"}],"id":4713,"name":"BinaryOperation","src":"10770:12:6"}],"id":4714,"name":"TupleExpression","src":"10769:14:6"}],"id":4715,"name":"BinaryOperation","src":"10756:27:6"}],"id":4716,"name":"Assignment","src":"10750:33:6"}],"id":4717,"name":"ExpressionStatement","src":"10750:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4718,"name":"Identifier","src":"10797:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4719,"name":"Literal","src":"10807:1:6"}],"id":4720,"name":"Assignment","src":"10797:11:6"}],"id":4721,"name":"ExpressionStatement","src":"10797:11:6"}],"id":4722,"name":"Block","src":"10689:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4723,"name":"Identifier","src":"10828:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4724,"name":"Literal","src":"10834:1:6"}],"id":4725,"name":"BinaryOperation","src":"10828:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":4726,"name":"Literal","src":"10839:1:6"}],"id":4727,"name":"BinaryOperation","src":"10828:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4728,"name":"Identifier","src":"10904:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4729,"name":"Identifier","src":"10911:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4730,"name":"Literal","src":"10918:1:6"}],"id":4731,"name":"BinaryOperation","src":"10911:8:6"}],"id":4732,"name":"TupleExpression","src":"10910:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4733,"name":"Identifier","src":"10924:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4734,"name":"Literal","src":"10935:1:6"}],"id":4735,"name":"BinaryOperation","src":"10924:12:6"}],"id":4736,"name":"TupleExpression","src":"10923:14:6"}],"id":4737,"name":"BinaryOperation","src":"10910:27:6"}],"id":4738,"name":"Assignment","src":"10904:33:6"}],"id":4739,"name":"ExpressionStatement","src":"10904:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4740,"name":"Identifier","src":"10951:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4741,"name":"Literal","src":"10961:1:6"}],"id":4742,"name":"Assignment","src":"10951:11:6"}],"id":4743,"name":"ExpressionStatement","src":"10951:11:6"}],"id":4744,"name":"Block","src":"10842:131:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[4785,4786],"referencedDeclaration":4785,"type":"function () pure","value":"revert"},"id":4745,"name":"Identifier","src":"10993:6:6"}],"id":4746,"name":"FunctionCall","src":"10993:8:6"}],"id":4747,"name":"ExpressionStatement","src":"10993:8:6"}],"id":4748,"name":"Block","src":"10979:33:6"}],"id":4749,"name":"IfStatement","src":"10825:187:6"}],"id":4750,"name":"IfStatement","src":"10672:340:6"}],"id":4751,"name":"IfStatement","src":"10519:493:6"}],"id":4752,"name":"IfStatement","src":"10368:644:6"}],"id":4753,"name":"IfStatement","src":"10242:770:6"},{"attributes":{"functionReturnParameters":4555},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4754,"name":"ElementaryTypeNameExpression","src":"11029:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4755,"name":"Identifier","src":"11037:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":4756,"name":"Literal","src":"11045:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4757,"name":"Identifier","src":"11051:6:6"}],"id":4758,"name":"BinaryOperation","src":"11045:12:6"}],"id":4759,"name":"TupleExpression","src":"11044:14:6"}],"id":4760,"name":"BinaryOperation","src":"11037:21:6"}],"id":4761,"name":"FunctionCall","src":"11029:30:6"}],"id":4762,"name":"Return","src":"11022:37:6"}],"id":4763,"name":"Block","src":"9767:1299:6"}],"id":4764,"name":"FunctionDefinition","src":"9668:1398:6"}],"id":4765,"name":"ContractDefinition","src":"26:11042:6"}],"id":4766,"name":"SourceUnit","src":"0:11069:6"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[1913]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1741,"name":"PragmaDirective","src":"1401:23:7"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":1742,"name":"PragmaDirective","src":"1425:33:7"},{"attributes":{"SourceUnit":1740,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1743,"name":"ImportDirective","src":"1460:19:7"},{"attributes":{"SourceUnit":2207,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1744,"name":"ImportDirective","src":"1480:36:7"},{"attributes":{"SourceUnit":2366,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1745,"name":"ImportDirective","src":"1517:37:7"},{"attributes":{"SourceUnit":2436,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1746,"name":"ImportDirective","src":"1555:44:7"},{"attributes":{"SourceUnit":2927,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1747,"name":"ImportDirective","src":"1600:36:7"},{"attributes":{"SourceUnit":3114,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1748,"name":"ImportDirective","src":"1637:42:7"},{"attributes":{"SourceUnit":3184,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1749,"name":"ImportDirective","src":"1680:37:7"},{"attributes":{"SourceUnit":3275,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1750,"name":"ImportDirective","src":"1718:39:7"},{"attributes":{"SourceUnit":3358,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1751,"name":"ImportDirective","src":"1758:37:7"},{"attributes":{"contractDependencies":[2206,2365,2435,2926,3113,3183,3274,3357,3426],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[1913,3357,3274,3183,3113,2926,2435,2365,2206,3426],"name":"PublicResolver","scope":1914},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":2206,"type":"contract ABIResolver"},"id":1752,"name":"UserDefinedTypeName","src":"1924:11:7"}],"id":1753,"name":"InheritanceSpecifier","src":"1924:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":2365,"type":"contract AddrResolver"},"id":1754,"name":"UserDefinedTypeName","src":"1937:12:7"}],"id":1755,"name":"InheritanceSpecifier","src":"1937:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":2435,"type":"contract ContentHashResolver"},"id":1756,"name":"UserDefinedTypeName","src":"1951:19:7"}],"id":1757,"name":"InheritanceSpecifier","src":"1951:19:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":2926,"type":"contract DNSResolver"},"id":1758,"name":"UserDefinedTypeName","src":"1972:11:7"}],"id":1759,"name":"InheritanceSpecifier","src":"1972:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":3113,"type":"contract InterfaceResolver"},"id":1760,"name":"UserDefinedTypeName","src":"1985:17:7"}],"id":1761,"name":"InheritanceSpecifier","src":"1985:17:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":3183,"type":"contract NameResolver"},"id":1762,"name":"UserDefinedTypeName","src":"2004:12:7"}],"id":1763,"name":"InheritanceSpecifier","src":"2004:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":3274,"type":"contract PubkeyResolver"},"id":1764,"name":"UserDefinedTypeName","src":"2018:14:7"}],"id":1765,"name":"InheritanceSpecifier","src":"2018:14:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":3357,"type":"contract TextResolver"},"id":1766,"name":"UserDefinedTypeName","src":"2034:12:7"}],"id":1767,"name":"InheritanceSpecifier","src":"2034:12:7"},{"attributes":{"constant":false,"name":"ens","scope":1913,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":1739,"type":"contract ENS"},"id":1768,"name":"UserDefinedTypeName","src":"2053:3:7"}],"id":1769,"name":"VariableDeclaration","src":"2053:7:7"},{"attributes":{"constant":false,"name":"authorisations","scope":1913,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1770,"name":"ElementaryTypeName","src":"2328:7:7"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":1771,"name":"ElementaryTypeName","src":"2345:7:7"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":1772,"name":"ElementaryTypeName","src":"2362:7:7"},{"attributes":{"name":"bool","type":"bool"},"id":1773,"name":"ElementaryTypeName","src":"2371:4:7"}],"id":1774,"name":"Mapping","src":"2354:22:7"}],"id":1775,"name":"Mapping","src":"2337:40:7"}],"id":1776,"name":"Mapping","src":"2320:58:7"}],"id":1777,"name":"VariableDeclaration","src":"2320:80:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":1787,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1778,"name":"ElementaryTypeName","src":"2434:7:7"}],"id":1779,"name":"VariableDeclaration","src":"2434:20:7"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":1787,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1780,"name":"ElementaryTypeName","src":"2456:7:7"}],"id":1781,"name":"VariableDeclaration","src":"2456:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":1787,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1782,"name":"ElementaryTypeName","src":"2479:7:7"}],"id":1783,"name":"VariableDeclaration","src":"2479:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":1787,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1784,"name":"ElementaryTypeName","src":"2503:4:7"}],"id":1785,"name":"VariableDeclaration","src":"2503:17:7"}],"id":1786,"name":"ParameterList","src":"2433:88:7"}],"id":1787,"name":"EventDefinition","src":"2407:115:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1913,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":1797,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":1739,"type":"contract ENS"},"id":1788,"name":"UserDefinedTypeName","src":"2540:3:7"}],"id":1789,"name":"VariableDeclaration","src":"2540:8:7"}],"id":1790,"name":"ParameterList","src":"2539:10:7"},{"attributes":{"parameters":[null]},"children":[],"id":1791,"name":"ParameterList","src":"2557:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"contract ENS","value":"ens"},"id":1792,"name":"Identifier","src":"2567:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1789,"type":"contract ENS","value":"_ens"},"id":1793,"name":"Identifier","src":"2573:4:7"}],"id":1794,"name":"Assignment","src":"2567:10:7"}],"id":1795,"name":"ExpressionStatement","src":"2567:10:7"}],"id":1796,"name":"Block","src":"2557:27:7"}],"id":1797,"name":"FunctionDefinition","src":"2528:56:7"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":1913,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1826,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1798,"name":"ElementaryTypeName","src":"3295:7:7"}],"id":1799,"name":"VariableDeclaration","src":"3295:12:7"},{"attributes":{"constant":false,"name":"target","scope":1826,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1800,"name":"ElementaryTypeName","src":"3309:7:7"}],"id":1801,"name":"VariableDeclaration","src":"3309:14:7"},{"attributes":{"constant":false,"name":"isAuthorised","scope":1826,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1802,"name":"ElementaryTypeName","src":"3325:4:7"}],"id":1803,"name":"VariableDeclaration","src":"3325:17:7"}],"id":1804,"name":"ParameterList","src":"3294:49:7"},{"attributes":{"parameters":[null]},"children":[],"id":1805,"name":"ParameterList","src":"3353:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1777,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":1806,"name":"Identifier","src":"3363:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"bytes32","value":"node"},"id":1807,"name":"Identifier","src":"3378:4:7"}],"id":1811,"name":"IndexAccess","src":"3363:20:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1808,"name":"Identifier","src":"3384:3:7"}],"id":1809,"name":"MemberAccess","src":"3384:10:7"}],"id":1812,"name":"IndexAccess","src":"3363:32:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1801,"type":"address","value":"target"},"id":1810,"name":"Identifier","src":"3396:6:7"}],"id":1813,"name":"IndexAccess","src":"3363:40:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1803,"type":"bool","value":"isAuthorised"},"id":1814,"name":"Identifier","src":"3406:12:7"}],"id":1815,"name":"Assignment","src":"3363:55:7"}],"id":1816,"name":"ExpressionStatement","src":"3363:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":1787,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":1817,"name":"Identifier","src":"3433:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"bytes32","value":"node"},"id":1818,"name":"Identifier","src":"3454:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1819,"name":"Identifier","src":"3460:3:7"}],"id":1820,"name":"MemberAccess","src":"3460:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1801,"type":"address","value":"target"},"id":1821,"name":"Identifier","src":"3472:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1803,"type":"bool","value":"isAuthorised"},"id":1822,"name":"Identifier","src":"3480:12:7"}],"id":1823,"name":"FunctionCall","src":"3433:60:7"}],"id":1824,"name":"EmitStatement","src":"3428:65:7"}],"id":1825,"name":"Block","src":"3353:147:7"}],"id":1826,"name":"FunctionDefinition","src":"3269:231:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":1913,"stateMutability":"view","superFunction":3381,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1855,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1827,"name":"ElementaryTypeName","src":"3528:7:7"}],"id":1828,"name":"VariableDeclaration","src":"3528:12:7"}],"id":1829,"name":"ParameterList","src":"3527:14:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":1855,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1830,"name":"ElementaryTypeName","src":"3564:4:7"}],"id":1831,"name":"VariableDeclaration","src":"3564:4:7"}],"id":1832,"name":"ParameterList","src":"3563:6:7"},{"children":[{"attributes":{"assignments":[1834]},"children":[{"attributes":{"constant":false,"name":"owner","scope":1854,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1833,"name":"ElementaryTypeName","src":"3580:7:7"}],"id":1834,"name":"VariableDeclaration","src":"3580:13:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":1708,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"contract ENS","value":"ens"},"id":1835,"name":"Identifier","src":"3596:3:7"}],"id":1836,"name":"MemberAccess","src":"3596:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1828,"type":"bytes32","value":"node"},"id":1837,"name":"Identifier","src":"3606:4:7"}],"id":1838,"name":"FunctionCall","src":"3596:15:7"}],"id":1839,"name":"VariableDeclarationStatement","src":"3580:31:7"},{"attributes":{"functionReturnParameters":1832},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"address","value":"owner"},"id":1840,"name":"Identifier","src":"3628:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1841,"name":"Identifier","src":"3637:3:7"}],"id":1842,"name":"MemberAccess","src":"3637:10:7"}],"id":1843,"name":"BinaryOperation","src":"3628:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1777,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":1844,"name":"Identifier","src":"3651:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1828,"type":"bytes32","value":"node"},"id":1845,"name":"Identifier","src":"3666:4:7"}],"id":1846,"name":"IndexAccess","src":"3651:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"address","value":"owner"},"id":1847,"name":"Identifier","src":"3672:5:7"}],"id":1848,"name":"IndexAccess","src":"3651:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1849,"name":"Identifier","src":"3679:3:7"}],"id":1850,"name":"MemberAccess","src":"3679:10:7"}],"id":1851,"name":"IndexAccess","src":"3651:39:7"}],"id":1852,"name":"BinaryOperation","src":"3628:62:7"}],"id":1853,"name":"Return","src":"3621:69:7"}],"id":1854,"name":"Block","src":"3570:127:7"}],"id":1855,"name":"FunctionDefinition","src":"3506:191:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":1913,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":1912,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1856,"name":"ElementaryTypeName","src":"3722:5:7"}],"id":1857,"name":"ArrayTypeName","src":"3722:7:7"}],"id":1858,"name":"VariableDeclaration","src":"3722:21:7"}],"id":1859,"name":"ParameterList","src":"3721:23:7"},{"children":[{"attributes":{"constant":false,"name":"results","scope":1912,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1860,"name":"ElementaryTypeName","src":"3762:5:7"}],"id":1861,"name":"ArrayTypeName","src":"3762:7:7"}],"id":1862,"name":"VariableDeclaration","src":"3762:22:7"}],"id":1863,"name":"ParameterList","src":"3761:24:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1862,"type":"bytes memory[] memory","value":"results"},"id":1864,"name":"Identifier","src":"3796:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1865,"name":"ElementaryTypeName","src":"3810:5:7"}],"id":1866,"name":"ArrayTypeName","src":"3810:7:7"}],"id":1867,"name":"NewExpression","src":"3806:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1858,"type":"bytes calldata[] calldata","value":"data"},"id":1868,"name":"Identifier","src":"3818:4:7"}],"id":1869,"name":"MemberAccess","src":"3818:11:7"}],"id":1870,"name":"FunctionCall","src":"3806:24:7"}],"id":1871,"name":"Assignment","src":"3796:34:7"}],"id":1872,"name":"ExpressionStatement","src":"3796:34:7"},{"children":[{"attributes":{"assignments":[1874]},"children":[{"attributes":{"constant":false,"name":"i","scope":1908,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1873,"name":"ElementaryTypeName","src":"3844:4:7"}],"id":1874,"name":"VariableDeclaration","src":"3844:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1875,"name":"Literal","src":"3853:1:7"}],"id":1876,"name":"VariableDeclarationStatement","src":"3844:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"uint256","value":"i"},"id":1877,"name":"Identifier","src":"3856:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1858,"type":"bytes calldata[] calldata","value":"data"},"id":1878,"name":"Identifier","src":"3860:4:7"}],"id":1879,"name":"MemberAccess","src":"3860:11:7"}],"id":1880,"name":"BinaryOperation","src":"3856:15:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"uint256","value":"i"},"id":1881,"name":"Identifier","src":"3873:1:7"}],"id":1882,"name":"UnaryOperation","src":"3873:3:7"}],"id":1883,"name":"ExpressionStatement","src":"3873:3:7"},{"children":[{"attributes":{"assignments":[1885,1887]},"children":[{"attributes":{"constant":false,"name":"success","scope":1907,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1884,"name":"ElementaryTypeName","src":"3893:4:7"}],"id":1885,"name":"VariableDeclaration","src":"3893:12:7"},{"attributes":{"constant":false,"name":"result","scope":1907,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1886,"name":"ElementaryTypeName","src":"3907:5:7"}],"id":1887,"name":"VariableDeclaration","src":"3907:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$1913","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1888,"name":"ElementaryTypeNameExpression","src":"3930:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4834,"type":"contract PublicResolver","value":"this"},"id":1889,"name":"Identifier","src":"3938:4:7"}],"id":1890,"name":"FunctionCall","src":"3930:13:7"}],"id":1891,"name":"MemberAccess","src":"3930:26:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1858,"type":"bytes calldata[] calldata","value":"data"},"id":1892,"name":"Identifier","src":"3957:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"uint256","value":"i"},"id":1893,"name":"Identifier","src":"3962:1:7"}],"id":1894,"name":"IndexAccess","src":"3957:7:7"}],"id":1895,"name":"FunctionCall","src":"3930:35:7"}],"id":1896,"name":"VariableDeclarationStatement","src":"3892:73:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":1897,"name":"Identifier","src":"3979:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1885,"type":"bool","value":"success"},"id":1898,"name":"Identifier","src":"3987:7:7"}],"id":1899,"name":"FunctionCall","src":"3979:16:7"}],"id":1900,"name":"ExpressionStatement","src":"3979:16:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1862,"type":"bytes memory[] memory","value":"results"},"id":1901,"name":"Identifier","src":"4009:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"uint256","value":"i"},"id":1902,"name":"Identifier","src":"4017:1:7"}],"id":1903,"name":"IndexAccess","src":"4009:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"bytes memory","value":"result"},"id":1904,"name":"Identifier","src":"4022:6:7"}],"id":1905,"name":"Assignment","src":"4009:19:7"}],"id":1906,"name":"ExpressionStatement","src":"4009:19:7"}],"id":1907,"name":"Block","src":"3878:161:7"}],"id":1908,"name":"ForStatement","src":"3840:199:7"},{"attributes":{"functionReturnParameters":1863},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1862,"type":"bytes memory[] memory","value":"results"},"id":1909,"name":"Identifier","src":"4055:7:7"}],"id":1910,"name":"Return","src":"4048:14:7"}],"id":1911,"name":"Block","src":"3786:283:7"}],"id":1912,"name":"FunctionDefinition","src":"3703:366:7"}],"id":1913,"name":"ContractDefinition","src":"1897:2174:7"}],"id":1914,"name":"SourceUnit","src":"1401:2671:7"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[4044]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":3428,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"SourceUnit":4766,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":4045,"symbolAliases":[null],"unitAlias":""},"id":3429,"name":"ImportDirective","src":"26:29:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[4044],"name":"RRUtils","scope":4045},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":4765,"type":"library ENSBytesUtils"},"id":3430,"name":"UserDefinedTypeName","src":"178:13:8"}],"id":3431,"name":"UsingForDirective","src":"172:26:8"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3478,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3432,"name":"ElementaryTypeName","src":"487:5:8"}],"id":3433,"name":"VariableDeclaration","src":"487:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3478,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3434,"name":"ElementaryTypeName","src":"506:4:8"}],"id":3435,"name":"VariableDeclaration","src":"506:11:8"}],"id":3436,"name":"ParameterList","src":"486:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3478,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3437,"name":"ElementaryTypeName","src":"541:4:8"}],"id":3438,"name":"VariableDeclaration","src":"541:4:8"}],"id":3439,"name":"ParameterList","src":"540:6:8"},{"children":[{"attributes":{"assignments":[3441]},"children":[{"attributes":{"constant":false,"name":"idx","scope":3477,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3440,"name":"ElementaryTypeName","src":"557:4:8"}],"id":3441,"name":"VariableDeclaration","src":"557:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3435,"type":"uint256","value":"offset"},"id":3442,"name":"Identifier","src":"568:6:8"}],"id":3443,"name":"VariableDeclarationStatement","src":"557:17:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3444,"name":"Literal","src":"591:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"function (bool) pure","value":"assert"},"id":3445,"name":"Identifier","src":"611:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3441,"type":"uint256","value":"idx"},"id":3446,"name":"Identifier","src":"618:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3433,"type":"bytes memory","value":"self"},"id":3447,"name":"Identifier","src":"624:4:8"}],"id":3448,"name":"MemberAccess","src":"624:11:8"}],"id":3449,"name":"BinaryOperation","src":"618:17:8"}],"id":3450,"name":"FunctionCall","src":"611:25:8"}],"id":3451,"name":"ExpressionStatement","src":"611:25:8"},{"attributes":{"assignments":[3453]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":3471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3452,"name":"ElementaryTypeName","src":"650:4:8"}],"id":3453,"name":"VariableDeclaration","src":"650:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3433,"type":"bytes memory","value":"self"},"id":3454,"name":"Identifier","src":"666:4:8"}],"id":3455,"name":"MemberAccess","src":"666:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3441,"type":"uint256","value":"idx"},"id":3456,"name":"Identifier","src":"681:3:8"}],"id":3457,"name":"FunctionCall","src":"666:19:8"}],"id":3458,"name":"VariableDeclarationStatement","src":"650:35:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3441,"type":"uint256","value":"idx"},"id":3459,"name":"Identifier","src":"699:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3453,"type":"uint256","value":"labelLen"},"id":3460,"name":"Identifier","src":"706:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3461,"name":"Literal","src":"717:1:8"}],"id":3462,"name":"BinaryOperation","src":"706:12:8"}],"id":3463,"name":"Assignment","src":"699:19:8"}],"id":3464,"name":"ExpressionStatement","src":"699:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3453,"type":"uint256","value":"labelLen"},"id":3465,"name":"Identifier","src":"736:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3466,"name":"Literal","src":"748:1:8"}],"id":3467,"name":"BinaryOperation","src":"736:13:8"},{"children":[{"id":3468,"name":"Break","src":"769:5:8"}],"id":3469,"name":"Block","src":"751:38:8"}],"id":3470,"name":"IfStatement","src":"732:57:8"}],"id":3471,"name":"Block","src":"597:202:8"}],"id":3472,"name":"WhileStatement","src":"584:215:8"},{"attributes":{"functionReturnParameters":3439},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3441,"type":"uint256","value":"idx"},"id":3473,"name":"Identifier","src":"815:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3435,"type":"uint256","value":"offset"},"id":3474,"name":"Identifier","src":"821:6:8"}],"id":3475,"name":"BinaryOperation","src":"815:12:8"}],"id":3476,"name":"Return","src":"808:19:8"}],"id":3477,"name":"Block","src":"547:287:8"}],"id":3478,"name":"FunctionDefinition","src":"467:367:8"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3501,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3479,"name":"ElementaryTypeName","src":"1073:5:8"}],"id":3480,"name":"VariableDeclaration","src":"1073:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3501,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3481,"name":"ElementaryTypeName","src":"1092:4:8"}],"id":3482,"name":"VariableDeclaration","src":"1092:11:8"}],"id":3483,"name":"ParameterList","src":"1072:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3501,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3484,"name":"ElementaryTypeName","src":"1127:5:8"}],"id":3485,"name":"VariableDeclaration","src":"1127:16:8"}],"id":3486,"name":"ParameterList","src":"1126:18:8"},{"children":[{"attributes":{"assignments":[3488]},"children":[{"attributes":{"constant":false,"name":"len","scope":3500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3487,"name":"ElementaryTypeName","src":"1155:4:8"}],"id":3488,"name":"VariableDeclaration","src":"1155:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3478,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":3489,"name":"Identifier","src":"1166:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"bytes memory","value":"self"},"id":3490,"name":"Identifier","src":"1177:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3482,"type":"uint256","value":"offset"},"id":3491,"name":"Identifier","src":"1183:6:8"}],"id":3492,"name":"FunctionCall","src":"1166:24:8"}],"id":3493,"name":"VariableDeclarationStatement","src":"1155:35:8"},{"attributes":{"functionReturnParameters":3486},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":4542,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"bytes memory","value":"self"},"id":3494,"name":"Identifier","src":"1207:4:8"}],"id":3495,"name":"MemberAccess","src":"1207:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3482,"type":"uint256","value":"offset"},"id":3496,"name":"Identifier","src":"1222:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3488,"type":"uint256","value":"len"},"id":3497,"name":"Identifier","src":"1230:3:8"}],"id":3498,"name":"FunctionCall","src":"1207:27:8"}],"id":3499,"name":"Return","src":"1200:34:8"}],"id":3500,"name":"Block","src":"1145:96:8"}],"id":3501,"name":"FunctionDefinition","src":"1055:186:8"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3550,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3502,"name":"ElementaryTypeName","src":"1541:5:8"}],"id":3503,"name":"VariableDeclaration","src":"1541:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3504,"name":"ElementaryTypeName","src":"1560:4:8"}],"id":3505,"name":"VariableDeclaration","src":"1560:11:8"}],"id":3506,"name":"ParameterList","src":"1540:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3507,"name":"ElementaryTypeName","src":"1595:4:8"}],"id":3508,"name":"VariableDeclaration","src":"1595:4:8"}],"id":3509,"name":"ParameterList","src":"1594:6:8"},{"children":[{"attributes":{"assignments":[3511]},"children":[{"attributes":{"constant":false,"name":"count","scope":3549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3510,"name":"ElementaryTypeName","src":"1611:4:8"}],"id":3511,"name":"VariableDeclaration","src":"1611:10:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3512,"name":"Literal","src":"1624:1:8"}],"id":3513,"name":"VariableDeclarationStatement","src":"1611:14:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3514,"name":"Literal","src":"1642:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"function (bool) pure","value":"assert"},"id":3515,"name":"Identifier","src":"1662:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"uint256","value":"offset"},"id":3516,"name":"Identifier","src":"1669:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"bytes memory","value":"self"},"id":3517,"name":"Identifier","src":"1678:4:8"}],"id":3518,"name":"MemberAccess","src":"1678:11:8"}],"id":3519,"name":"BinaryOperation","src":"1669:20:8"}],"id":3520,"name":"FunctionCall","src":"1662:28:8"}],"id":3521,"name":"ExpressionStatement","src":"1662:28:8"},{"attributes":{"assignments":[3523]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":3545,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3522,"name":"ElementaryTypeName","src":"1704:4:8"}],"id":3523,"name":"VariableDeclaration","src":"1704:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"bytes memory","value":"self"},"id":3524,"name":"Identifier","src":"1720:4:8"}],"id":3525,"name":"MemberAccess","src":"1720:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"uint256","value":"offset"},"id":3526,"name":"Identifier","src":"1735:6:8"}],"id":3527,"name":"FunctionCall","src":"1720:22:8"}],"id":3528,"name":"VariableDeclarationStatement","src":"1704:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"uint256","value":"offset"},"id":3529,"name":"Identifier","src":"1756:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"uint256","value":"labelLen"},"id":3530,"name":"Identifier","src":"1766:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3531,"name":"Literal","src":"1777:1:8"}],"id":3532,"name":"BinaryOperation","src":"1766:12:8"}],"id":3533,"name":"Assignment","src":"1756:22:8"}],"id":3534,"name":"ExpressionStatement","src":"1756:22:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"uint256","value":"labelLen"},"id":3535,"name":"Identifier","src":"1796:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3536,"name":"Literal","src":"1808:1:8"}],"id":3537,"name":"BinaryOperation","src":"1796:13:8"},{"children":[{"id":3538,"name":"Break","src":"1829:5:8"}],"id":3539,"name":"Block","src":"1811:38:8"}],"id":3540,"name":"IfStatement","src":"1792:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3511,"type":"uint256","value":"count"},"id":3541,"name":"Identifier","src":"1862:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3542,"name":"Literal","src":"1871:1:8"}],"id":3543,"name":"Assignment","src":"1862:10:8"}],"id":3544,"name":"ExpressionStatement","src":"1862:10:8"}],"id":3545,"name":"Block","src":"1648:235:8"}],"id":3546,"name":"WhileStatement","src":"1635:248:8"},{"attributes":{"functionReturnParameters":3509},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3511,"type":"uint256","value":"count"},"id":3547,"name":"Identifier","src":"1899:5:8"}],"id":3548,"name":"Return","src":"1892:12:8"}],"id":3549,"name":"Block","src":"1601:310:8"}],"id":3550,"name":"FunctionDefinition","src":"1521:390:8"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":4044,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":3565,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3551,"name":"ElementaryTypeName","src":"2006:5:8"}],"id":3552,"name":"VariableDeclaration","src":"2006:10:8"},{"attributes":{"constant":false,"name":"offset","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3553,"name":"ElementaryTypeName","src":"2026:4:8"}],"id":3554,"name":"VariableDeclaration","src":"2026:11:8"},{"attributes":{"constant":false,"name":"dnstype","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":3555,"name":"ElementaryTypeName","src":"2047:6:8"}],"id":3556,"name":"VariableDeclaration","src":"2047:14:8"},{"attributes":{"constant":false,"name":"class","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":3557,"name":"ElementaryTypeName","src":"2071:6:8"}],"id":3558,"name":"VariableDeclaration","src":"2071:12:8"},{"attributes":{"constant":false,"name":"ttl","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":3559,"name":"ElementaryTypeName","src":"2093:6:8"}],"id":3560,"name":"VariableDeclaration","src":"2093:10:8"},{"attributes":{"constant":false,"name":"rdataOffset","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3561,"name":"ElementaryTypeName","src":"2113:4:8"}],"id":3562,"name":"VariableDeclaration","src":"2113:16:8"},{"attributes":{"constant":false,"name":"nextOffset","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3563,"name":"ElementaryTypeName","src":"2139:4:8"}],"id":3564,"name":"VariableDeclaration","src":"2139:15:8"}],"id":3565,"name":"StructDefinition","src":"1978:183:8"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3591,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3566,"name":"ElementaryTypeName","src":"2387:5:8"}],"id":3567,"name":"VariableDeclaration","src":"2387:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3591,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3568,"name":"ElementaryTypeName","src":"2406:4:8"}],"id":3569,"name":"VariableDeclaration","src":"2406:11:8"}],"id":3570,"name":"ParameterList","src":"2386:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3591,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3571,"name":"UserDefinedTypeName","src":"2442:10:8"}],"id":3572,"name":"VariableDeclaration","src":"2442:21:8"}],"id":3573,"name":"ParameterList","src":"2441:23:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3572,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":3574,"name":"Identifier","src":"2475:3:8"}],"id":3576,"name":"MemberAccess","src":"2475:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3567,"type":"bytes memory","value":"self"},"id":3577,"name":"Identifier","src":"2486:4:8"}],"id":3578,"name":"Assignment","src":"2475:15:8"}],"id":3579,"name":"ExpressionStatement","src":"2475:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":3564,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3572,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":3580,"name":"Identifier","src":"2500:3:8"}],"id":3582,"name":"MemberAccess","src":"2500:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3569,"type":"uint256","value":"offset"},"id":3583,"name":"Identifier","src":"2517:6:8"}],"id":3584,"name":"Assignment","src":"2500:23:8"}],"id":3585,"name":"ExpressionStatement","src":"2500:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$3565_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3708,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":3586,"name":"Identifier","src":"2533:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3572,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":3587,"name":"Identifier","src":"2538:3:8"}],"id":3588,"name":"FunctionCall","src":"2533:9:8"}],"id":3589,"name":"ExpressionStatement","src":"2533:9:8"}],"id":3590,"name":"Block","src":"2465:84:8"}],"id":3591,"name":"FunctionDefinition","src":"2367:182:8"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":3606,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3592,"name":"UserDefinedTypeName","src":"2734:10:8"}],"id":3593,"name":"VariableDeclaration","src":"2734:22:8"}],"id":3594,"name":"ParameterList","src":"2733:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3595,"name":"ElementaryTypeName","src":"2780:4:8"}],"id":3596,"name":"VariableDeclaration","src":"2780:4:8"}],"id":3597,"name":"ParameterList","src":"2779:6:8"},{"children":[{"attributes":{"functionReturnParameters":3597},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3593,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3598,"name":"Identifier","src":"2803:4:8"}],"id":3599,"name":"MemberAccess","src":"2803:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3593,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3600,"name":"Identifier","src":"2818:4:8"}],"id":3601,"name":"MemberAccess","src":"2818:9:8"}],"id":3602,"name":"MemberAccess","src":"2818:16:8"}],"id":3603,"name":"BinaryOperation","src":"2803:31:8"}],"id":3604,"name":"Return","src":"2796:38:8"}],"id":3605,"name":"Block","src":"2786:55:8"}],"id":3606,"name":"FunctionDefinition","src":"2720:121:8"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":3708,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3607,"name":"UserDefinedTypeName","src":"2978:10:8"}],"id":3608,"name":"VariableDeclaration","src":"2978:22:8"}],"id":3609,"name":"ParameterList","src":"2977:24:8"},{"attributes":{"parameters":[null]},"children":[],"id":3610,"name":"ParameterList","src":"3016:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3611,"name":"Identifier","src":"3026:4:8"}],"id":3613,"name":"MemberAccess","src":"3026:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":3564,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3614,"name":"Identifier","src":"3040:4:8"}],"id":3615,"name":"MemberAccess","src":"3040:15:8"}],"id":3616,"name":"Assignment","src":"3026:29:8"}],"id":3617,"name":"ExpressionStatement","src":"3026:29:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3618,"name":"Identifier","src":"3069:4:8"}],"id":3619,"name":"MemberAccess","src":"3069:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3620,"name":"Identifier","src":"3084:4:8"}],"id":3621,"name":"MemberAccess","src":"3084:9:8"}],"id":3622,"name":"MemberAccess","src":"3084:16:8"}],"id":3623,"name":"BinaryOperation","src":"3069:31:8"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":3610},"id":3624,"name":"Return","src":"3116:7:8"}],"id":3625,"name":"Block","src":"3102:31:8"}],"id":3626,"name":"IfStatement","src":"3065:68:8"},{"attributes":{"assignments":[3628]},"children":[{"attributes":{"constant":false,"name":"off","scope":3707,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3627,"name":"ElementaryTypeName","src":"3168:4:8"}],"id":3628,"name":"VariableDeclaration","src":"3168:8:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3629,"name":"Identifier","src":"3179:4:8"}],"id":3630,"name":"MemberAccess","src":"3179:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3478,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":3631,"name":"Identifier","src":"3193:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3632,"name":"Identifier","src":"3204:4:8"}],"id":3633,"name":"MemberAccess","src":"3204:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3634,"name":"Identifier","src":"3215:4:8"}],"id":3635,"name":"MemberAccess","src":"3215:11:8"}],"id":3636,"name":"FunctionCall","src":"3193:34:8"}],"id":3637,"name":"BinaryOperation","src":"3179:48:8"}],"id":3638,"name":"VariableDeclarationStatement","src":"3168:59:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":3556,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3639,"name":"Identifier","src":"3275:4:8"}],"id":3641,"name":"MemberAccess","src":"3275:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":4371,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3642,"name":"Identifier","src":"3290:4:8"}],"id":3643,"name":"MemberAccess","src":"3290:9:8"}],"id":3644,"name":"MemberAccess","src":"3290:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3645,"name":"Identifier","src":"3311:3:8"}],"id":3646,"name":"FunctionCall","src":"3290:25:8"}],"id":3647,"name":"Assignment","src":"3275:40:8"}],"id":3648,"name":"ExpressionStatement","src":"3275:40:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3649,"name":"Identifier","src":"3325:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3650,"name":"Literal","src":"3332:1:8"}],"id":3651,"name":"Assignment","src":"3325:8:8"}],"id":3652,"name":"ExpressionStatement","src":"3325:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":3558,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3653,"name":"Identifier","src":"3343:4:8"}],"id":3655,"name":"MemberAccess","src":"3343:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":4371,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3656,"name":"Identifier","src":"3356:4:8"}],"id":3657,"name":"MemberAccess","src":"3356:9:8"}],"id":3658,"name":"MemberAccess","src":"3356:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3659,"name":"Identifier","src":"3377:3:8"}],"id":3660,"name":"FunctionCall","src":"3356:25:8"}],"id":3661,"name":"Assignment","src":"3343:38:8"}],"id":3662,"name":"ExpressionStatement","src":"3343:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3663,"name":"Identifier","src":"3391:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3664,"name":"Literal","src":"3398:1:8"}],"id":3665,"name":"Assignment","src":"3391:8:8"}],"id":3666,"name":"ExpressionStatement","src":"3391:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":3560,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3667,"name":"Identifier","src":"3409:4:8"}],"id":3669,"name":"MemberAccess","src":"3409:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":4391,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3670,"name":"Identifier","src":"3420:4:8"}],"id":3671,"name":"MemberAccess","src":"3420:9:8"}],"id":3672,"name":"MemberAccess","src":"3420:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3673,"name":"Identifier","src":"3441:3:8"}],"id":3674,"name":"FunctionCall","src":"3420:25:8"}],"id":3675,"name":"Assignment","src":"3409:36:8"}],"id":3676,"name":"ExpressionStatement","src":"3409:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3677,"name":"Identifier","src":"3455:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3678,"name":"Literal","src":"3462:1:8"}],"id":3679,"name":"Assignment","src":"3455:8:8"}],"id":3680,"name":"ExpressionStatement","src":"3455:8:8"},{"attributes":{"assignments":[3682]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":3707,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3681,"name":"ElementaryTypeName","src":"3500:4:8"}],"id":3682,"name":"VariableDeclaration","src":"3500:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":4371,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3683,"name":"Identifier","src":"3519:4:8"}],"id":3684,"name":"MemberAccess","src":"3519:9:8"}],"id":3685,"name":"MemberAccess","src":"3519:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3686,"name":"Identifier","src":"3540:3:8"}],"id":3687,"name":"FunctionCall","src":"3519:25:8"}],"id":3688,"name":"VariableDeclarationStatement","src":"3500:44:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3689,"name":"Identifier","src":"3554:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3690,"name":"Literal","src":"3561:1:8"}],"id":3691,"name":"Assignment","src":"3554:8:8"}],"id":3692,"name":"ExpressionStatement","src":"3554:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":3562,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3693,"name":"Identifier","src":"3572:4:8"}],"id":3695,"name":"MemberAccess","src":"3572:16:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3696,"name":"Identifier","src":"3591:3:8"}],"id":3697,"name":"Assignment","src":"3572:22:8"}],"id":3698,"name":"ExpressionStatement","src":"3572:22:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":3564,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3699,"name":"Identifier","src":"3604:4:8"}],"id":3701,"name":"MemberAccess","src":"3604:15:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3702,"name":"Identifier","src":"3622:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3682,"type":"uint256","value":"rdataLength"},"id":3703,"name":"Identifier","src":"3628:11:8"}],"id":3704,"name":"BinaryOperation","src":"3622:17:8"}],"id":3705,"name":"Assignment","src":"3604:35:8"}],"id":3706,"name":"ExpressionStatement","src":"3604:35:8"}],"id":3707,"name":"Block","src":"3016:630:8"}],"id":3708,"name":"FunctionDefinition","src":"2964:682:8"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":3729,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3709,"name":"UserDefinedTypeName","src":"3836:10:8"}],"id":3710,"name":"VariableDeclaration","src":"3836:22:8"}],"id":3711,"name":"ParameterList","src":"3835:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3729,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3712,"name":"ElementaryTypeName","src":"3882:5:8"}],"id":3713,"name":"VariableDeclaration","src":"3882:12:8"}],"id":3714,"name":"ParameterList","src":"3881:14:8"},{"children":[{"attributes":{"functionReturnParameters":3714},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":4542,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3710,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3715,"name":"Identifier","src":"3913:4:8"}],"id":3716,"name":"MemberAccess","src":"3913:9:8"}],"id":3717,"name":"MemberAccess","src":"3913:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3710,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3718,"name":"Identifier","src":"3933:4:8"}],"id":3719,"name":"MemberAccess","src":"3933:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3478,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":3720,"name":"Identifier","src":"3946:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3710,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3721,"name":"Identifier","src":"3957:4:8"}],"id":3722,"name":"MemberAccess","src":"3957:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3710,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3723,"name":"Identifier","src":"3968:4:8"}],"id":3724,"name":"MemberAccess","src":"3968:11:8"}],"id":3725,"name":"FunctionCall","src":"3946:34:8"}],"id":3726,"name":"FunctionCall","src":"3913:68:8"}],"id":3727,"name":"Return","src":"3906:75:8"}],"id":3728,"name":"Block","src":"3896:92:8"}],"id":3729,"name":"FunctionDefinition","src":"3822:166:8"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":3749,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3730,"name":"UserDefinedTypeName","src":"4176:10:8"}],"id":3731,"name":"VariableDeclaration","src":"4176:22:8"}],"id":3732,"name":"ParameterList","src":"4175:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3749,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3733,"name":"ElementaryTypeName","src":"4222:5:8"}],"id":3734,"name":"VariableDeclaration","src":"4222:12:8"}],"id":3735,"name":"ParameterList","src":"4221:14:8"},{"children":[{"attributes":{"functionReturnParameters":3735},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":4542,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3731,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3736,"name":"Identifier","src":"4253:4:8"}],"id":3737,"name":"MemberAccess","src":"4253:9:8"}],"id":3738,"name":"MemberAccess","src":"4253:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":3562,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3731,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3739,"name":"Identifier","src":"4273:4:8"}],"id":3740,"name":"MemberAccess","src":"4273:16:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":3564,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3731,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3741,"name":"Identifier","src":"4291:4:8"}],"id":3742,"name":"MemberAccess","src":"4291:15:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":3562,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3731,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3743,"name":"Identifier","src":"4309:4:8"}],"id":3744,"name":"MemberAccess","src":"4309:16:8"}],"id":3745,"name":"BinaryOperation","src":"4291:34:8"}],"id":3746,"name":"FunctionCall","src":"4253:73:8"}],"id":3747,"name":"Return","src":"4246:80:8"}],"id":3748,"name":"Block","src":"4236:97:8"}],"id":3749,"name":"FunctionDefinition","src":"4161:172:8"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3869,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3750,"name":"ElementaryTypeName","src":"4675:5:8"}],"id":3751,"name":"VariableDeclaration","src":"4675:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3869,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3752,"name":"ElementaryTypeName","src":"4694:4:8"}],"id":3753,"name":"VariableDeclaration","src":"4694:11:8"},{"attributes":{"constant":false,"name":"rrtype","scope":3869,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":3754,"name":"ElementaryTypeName","src":"4707:6:8"}],"id":3755,"name":"VariableDeclaration","src":"4707:13:8"}],"id":3756,"name":"ParameterList","src":"4674:47:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3869,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3757,"name":"ElementaryTypeName","src":"4745:4:8"}],"id":3758,"name":"VariableDeclaration","src":"4745:4:8"}],"id":3759,"name":"ParameterList","src":"4744:6:8"},{"children":[{"attributes":{"assignments":[3761]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":3868,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3760,"name":"ElementaryTypeName","src":"4761:5:8"}],"id":3761,"name":"VariableDeclaration","src":"4761:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3762,"name":"ElementaryTypeNameExpression","src":"4780:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3755,"type":"uint16","value":"rrtype"},"id":3763,"name":"Identifier","src":"4786:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3764,"name":"Literal","src":"4796:1:8"}],"id":3765,"name":"BinaryOperation","src":"4786:11:8"}],"id":3766,"name":"FunctionCall","src":"4780:18:8"}],"id":3767,"name":"VariableDeclarationStatement","src":"4761:37:8"},{"attributes":{"assignments":[3769]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":3868,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3768,"name":"ElementaryTypeName","src":"4808:5:8"}],"id":3769,"name":"VariableDeclaration","src":"4808:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3770,"name":"ElementaryTypeNameExpression","src":"4827:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3755,"type":"uint16","value":"rrtype"},"id":3771,"name":"Identifier","src":"4834:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":3772,"name":"Literal","src":"4843:4:8"}],"id":3773,"name":"BinaryOperation","src":"4834:13:8"}],"id":3774,"name":"TupleExpression","src":"4833:15:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3775,"name":"Literal","src":"4851:1:8"}],"id":3776,"name":"BinaryOperation","src":"4833:19:8"}],"id":3777,"name":"FunctionCall","src":"4827:26:8"}],"id":3778,"name":"VariableDeclarationStatement","src":"4808:45:8"},{"attributes":{"assignments":[3780]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":3868,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3779,"name":"ElementaryTypeName","src":"4863:5:8"}],"id":3780,"name":"VariableDeclaration","src":"4863:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3781,"name":"ElementaryTypeNameExpression","src":"4885:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3782,"name":"ElementaryTypeNameExpression","src":"4891:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3783,"name":"Literal","src":"4897:1:8"}],"id":3784,"name":"FunctionCall","src":"4891:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3785,"name":"ElementaryTypeNameExpression","src":"4904:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":3786,"name":"Literal","src":"4910:1:8"}],"id":3787,"name":"FunctionCall","src":"4904:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3788,"name":"ElementaryTypeNameExpression","src":"4915:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3755,"type":"uint16","value":"rrtype"},"id":3789,"name":"Identifier","src":"4921:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":3790,"name":"Literal","src":"4930:3:8"}],"id":3791,"name":"BinaryOperation","src":"4921:12:8"}],"id":3792,"name":"FunctionCall","src":"4915:19:8"}],"id":3793,"name":"BinaryOperation","src":"4904:30:8"}],"id":3794,"name":"TupleExpression","src":"4903:32:8"}],"id":3795,"name":"BinaryOperation","src":"4891:44:8"}],"id":3796,"name":"FunctionCall","src":"4885:51:8"}],"id":3797,"name":"VariableDeclarationStatement","src":"4863:73:8"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[3799]},"children":[{"attributes":{"constant":false,"name":"off","scope":3865,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3798,"name":"ElementaryTypeName","src":"4951:4:8"}],"id":3799,"name":"VariableDeclaration","src":"4951:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3753,"type":"uint256","value":"offset"},"id":3800,"name":"Identifier","src":"4962:6:8"}],"id":3801,"name":"VariableDeclarationStatement","src":"4951:17:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3802,"name":"Identifier","src":"4970:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3751,"type":"bytes memory","value":"self"},"id":3803,"name":"Identifier","src":"4976:4:8"}],"id":3804,"name":"MemberAccess","src":"4976:11:8"}],"id":3805,"name":"BinaryOperation","src":"4970:17:8"},{"children":[{"attributes":{"assignments":[3807]},"children":[{"attributes":{"constant":false,"name":"window","scope":3864,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3806,"name":"ElementaryTypeName","src":"5004:5:8"}],"id":3807,"name":"VariableDeclaration","src":"5004:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3751,"type":"bytes memory","value":"self"},"id":3808,"name":"Identifier","src":"5019:4:8"}],"id":3809,"name":"MemberAccess","src":"5019:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3810,"name":"Identifier","src":"5034:3:8"}],"id":3811,"name":"FunctionCall","src":"5019:19:8"}],"id":3812,"name":"VariableDeclarationStatement","src":"5004:34:8"},{"attributes":{"assignments":[3814]},"children":[{"attributes":{"constant":false,"name":"len","scope":3864,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3813,"name":"ElementaryTypeName","src":"5052:5:8"}],"id":3814,"name":"VariableDeclaration","src":"5052:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3751,"type":"bytes memory","value":"self"},"id":3815,"name":"Identifier","src":"5064:4:8"}],"id":3816,"name":"MemberAccess","src":"5064:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3817,"name":"Identifier","src":"5079:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3818,"name":"Literal","src":"5085:1:8"}],"id":3819,"name":"BinaryOperation","src":"5079:7:8"}],"id":3820,"name":"FunctionCall","src":"5064:23:8"}],"id":3821,"name":"VariableDeclarationStatement","src":"5052:35:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"uint8","value":"typeWindow"},"id":3822,"name":"Identifier","src":"5105:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3807,"type":"uint8","value":"window"},"id":3823,"name":"Identifier","src":"5118:6:8"}],"id":3824,"name":"BinaryOperation","src":"5105:19:8"},{"children":[{"attributes":{"functionReturnParameters":3759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3825,"name":"Literal","src":"5213:5:8"}],"id":3826,"name":"Return","src":"5206:12:8"}],"id":3827,"name":"Block","src":"5126:107:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"uint8","value":"typeWindow"},"id":3828,"name":"Identifier","src":"5243:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3807,"type":"uint8","value":"window"},"id":3829,"name":"Identifier","src":"5257:6:8"}],"id":3830,"name":"BinaryOperation","src":"5243:20:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"uint8","value":"len"},"id":3831,"name":"Identifier","src":"5329:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3832,"name":"Literal","src":"5335:1:8"}],"id":3833,"name":"BinaryOperation","src":"5329:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"uint8","value":"windowByte"},"id":3834,"name":"Identifier","src":"5340:10:8"}],"id":3835,"name":"BinaryOperation","src":"5329:21:8"},{"children":[{"attributes":{"functionReturnParameters":3759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3836,"name":"Literal","src":"5443:5:8"}],"id":3837,"name":"Return","src":"5436:12:8"}],"id":3838,"name":"Block","src":"5352:115:8"}],"id":3839,"name":"IfStatement","src":"5325:142:8"},{"attributes":{"functionReturnParameters":3759},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3751,"type":"bytes memory","value":"self"},"id":3840,"name":"Identifier","src":"5492:4:8"}],"id":3841,"name":"MemberAccess","src":"5492:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3842,"name":"Identifier","src":"5507:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"uint8","value":"windowByte"},"id":3843,"name":"Identifier","src":"5513:10:8"}],"id":3844,"name":"BinaryOperation","src":"5507:16:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3845,"name":"Literal","src":"5526:1:8"}],"id":3846,"name":"BinaryOperation","src":"5507:20:8"}],"id":3847,"name":"FunctionCall","src":"5492:36:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3780,"type":"uint8","value":"windowBitmask"},"id":3848,"name":"Identifier","src":"5531:13:8"}],"id":3849,"name":"BinaryOperation","src":"5492:52:8"}],"id":3850,"name":"TupleExpression","src":"5491:54:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3851,"name":"Literal","src":"5549:1:8"}],"id":3852,"name":"BinaryOperation","src":"5491:59:8"}],"id":3853,"name":"Return","src":"5484:66:8"}],"id":3854,"name":"Block","src":"5265:300:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3855,"name":"Identifier","src":"5630:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"uint8","value":"len"},"id":3856,"name":"Identifier","src":"5637:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3857,"name":"Literal","src":"5643:1:8"}],"id":3858,"name":"BinaryOperation","src":"5637:7:8"}],"id":3859,"name":"Assignment","src":"5630:14:8"}],"id":3860,"name":"ExpressionStatement","src":"5630:14:8"}],"id":3861,"name":"Block","src":"5571:88:8"}],"id":3862,"name":"IfStatement","src":"5239:420:8"}],"id":3863,"name":"IfStatement","src":"5101:558:8"}],"id":3864,"name":"Block","src":"4990:679:8"}],"id":3865,"name":"ForStatement","src":"4946:723:8"},{"attributes":{"functionReturnParameters":3759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3866,"name":"Literal","src":"5686:5:8"}],"id":3867,"name":"Return","src":"5679:12:8"}],"id":3868,"name":"Block","src":"4751:947:8"}],"id":3869,"name":"FunctionDefinition","src":"4650:1048:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4024,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3870,"name":"ElementaryTypeName","src":"5726:5:8"}],"id":3871,"name":"VariableDeclaration","src":"5726:17:8"},{"attributes":{"constant":false,"name":"other","scope":4024,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3872,"name":"ElementaryTypeName","src":"5745:5:8"}],"id":3873,"name":"VariableDeclaration","src":"5745:18:8"}],"id":3874,"name":"ParameterList","src":"5725:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":4024,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":3875,"name":"ElementaryTypeName","src":"5788:3:8"}],"id":3876,"name":"VariableDeclaration","src":"5788:3:8"}],"id":3877,"name":"ParameterList","src":"5787:5:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":4335,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3878,"name":"Identifier","src":"5807:4:8"}],"id":3879,"name":"MemberAccess","src":"5807:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3880,"name":"Identifier","src":"5819:5:8"}],"id":3881,"name":"FunctionCall","src":"5807:18:8"},{"children":[{"attributes":{"functionReturnParameters":3877},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3882,"name":"Literal","src":"5848:1:8"}],"id":3883,"name":"Return","src":"5841:8:8"}],"id":3884,"name":"Block","src":"5827:33:8"}],"id":3885,"name":"IfStatement","src":"5803:57:8"},{"attributes":{"assignments":[3887],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3886,"name":"ElementaryTypeName","src":"5870:4:8"}],"id":3887,"name":"VariableDeclaration","src":"5870:8:8"}],"id":3888,"name":"VariableDeclarationStatement","src":"5870:8:8"},{"attributes":{"assignments":[3890],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3889,"name":"ElementaryTypeName","src":"5888:4:8"}],"id":3890,"name":"VariableDeclaration","src":"5888:13:8"}],"id":3891,"name":"VariableDeclarationStatement","src":"5888:13:8"},{"attributes":{"assignments":[3893],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3892,"name":"ElementaryTypeName","src":"5911:4:8"}],"id":3893,"name":"VariableDeclaration","src":"5911:12:8"}],"id":3894,"name":"VariableDeclarationStatement","src":"5911:12:8"},{"attributes":{"assignments":[3896],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3895,"name":"ElementaryTypeName","src":"5933:4:8"}],"id":3896,"name":"VariableDeclaration","src":"5933:17:8"}],"id":3897,"name":"VariableDeclarationStatement","src":"5933:17:8"},{"attributes":{"assignments":[3899]},"children":[{"attributes":{"constant":false,"name":"counts","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3898,"name":"ElementaryTypeName","src":"5960:4:8"}],"id":3899,"name":"VariableDeclaration","src":"5960:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":3900,"name":"Identifier","src":"5974:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3901,"name":"Identifier","src":"5985:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3902,"name":"Literal","src":"5991:1:8"}],"id":3903,"name":"FunctionCall","src":"5974:19:8"}],"id":3904,"name":"VariableDeclarationStatement","src":"5960:33:8"},{"attributes":{"assignments":[3906]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3905,"name":"ElementaryTypeName","src":"6003:4:8"}],"id":3906,"name":"VariableDeclaration","src":"6003:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":3907,"name":"Identifier","src":"6022:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3908,"name":"Identifier","src":"6033:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3909,"name":"Literal","src":"6040:1:8"}],"id":3910,"name":"FunctionCall","src":"6022:20:8"}],"id":3911,"name":"VariableDeclarationStatement","src":"6003:39:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3912,"name":"Identifier","src":"6153:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"othercounts"},"id":3913,"name":"Identifier","src":"6162:11:8"}],"id":3914,"name":"BinaryOperation","src":"6153:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"uint256","value":"prevoff"},"id":3915,"name":"Identifier","src":"6189:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3916,"name":"Identifier","src":"6199:3:8"}],"id":3917,"name":"Assignment","src":"6189:13:8"}],"id":3918,"name":"ExpressionStatement","src":"6189:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3919,"name":"Identifier","src":"6216:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4043,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":3920,"name":"Identifier","src":"6222:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3921,"name":"Identifier","src":"6231:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3922,"name":"Identifier","src":"6237:3:8"}],"id":3923,"name":"FunctionCall","src":"6222:19:8"}],"id":3924,"name":"Assignment","src":"6216:25:8"}],"id":3925,"name":"ExpressionStatement","src":"6216:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3926,"name":"Identifier","src":"6255:6:8"}],"id":3927,"name":"UnaryOperation","src":"6255:8:8"}],"id":3928,"name":"ExpressionStatement","src":"6255:8:8"}],"id":3929,"name":"Block","src":"6175:99:8"}],"id":3930,"name":"WhileStatement","src":"6146:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"othercounts"},"id":3931,"name":"Identifier","src":"6291:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3932,"name":"Identifier","src":"6305:6:8"}],"id":3933,"name":"BinaryOperation","src":"6291:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"uint256","value":"otherprevoff"},"id":3934,"name":"Identifier","src":"6327:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3935,"name":"Identifier","src":"6342:8:8"}],"id":3936,"name":"Assignment","src":"6327:23:8"}],"id":3937,"name":"ExpressionStatement","src":"6327:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3938,"name":"Identifier","src":"6364:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4043,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":3939,"name":"Identifier","src":"6375:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3940,"name":"Identifier","src":"6384:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3941,"name":"Identifier","src":"6391:8:8"}],"id":3942,"name":"FunctionCall","src":"6375:25:8"}],"id":3943,"name":"Assignment","src":"6364:36:8"}],"id":3944,"name":"ExpressionStatement","src":"6364:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"othercounts"},"id":3945,"name":"Identifier","src":"6414:11:8"}],"id":3946,"name":"UnaryOperation","src":"6414:13:8"}],"id":3947,"name":"ExpressionStatement","src":"6414:13:8"}],"id":3948,"name":"Block","src":"6313:125:8"}],"id":3949,"name":"WhileStatement","src":"6284:154:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3950,"name":"Identifier","src":"6513:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3951,"name":"Literal","src":"6522:1:8"}],"id":3952,"name":"BinaryOperation","src":"6513:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":4281,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3953,"name":"Identifier","src":"6528:4:8"}],"id":3954,"name":"MemberAccess","src":"6528:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3955,"name":"Identifier","src":"6540:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3956,"name":"Identifier","src":"6545:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3957,"name":"Identifier","src":"6552:8:8"}],"id":3958,"name":"FunctionCall","src":"6528:33:8"}],"id":3959,"name":"UnaryOperation","src":"6527:34:8"}],"id":3960,"name":"BinaryOperation","src":"6513:48:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"uint256","value":"prevoff"},"id":3961,"name":"Identifier","src":"6577:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3962,"name":"Identifier","src":"6587:3:8"}],"id":3963,"name":"Assignment","src":"6577:13:8"}],"id":3964,"name":"ExpressionStatement","src":"6577:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3965,"name":"Identifier","src":"6604:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4043,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":3966,"name":"Identifier","src":"6610:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3967,"name":"Identifier","src":"6619:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3968,"name":"Identifier","src":"6625:3:8"}],"id":3969,"name":"FunctionCall","src":"6610:19:8"}],"id":3970,"name":"Assignment","src":"6604:25:8"}],"id":3971,"name":"ExpressionStatement","src":"6604:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"uint256","value":"otherprevoff"},"id":3972,"name":"Identifier","src":"6643:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3973,"name":"Identifier","src":"6658:8:8"}],"id":3974,"name":"Assignment","src":"6643:23:8"}],"id":3975,"name":"ExpressionStatement","src":"6643:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3976,"name":"Identifier","src":"6680:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4043,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":3977,"name":"Identifier","src":"6691:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3978,"name":"Identifier","src":"6700:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3979,"name":"Identifier","src":"6707:8:8"}],"id":3980,"name":"FunctionCall","src":"6691:25:8"}],"id":3981,"name":"Assignment","src":"6680:36:8"}],"id":3982,"name":"ExpressionStatement","src":"6680:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3983,"name":"Identifier","src":"6730:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3984,"name":"Literal","src":"6740:1:8"}],"id":3985,"name":"Assignment","src":"6730:11:8"}],"id":3986,"name":"ExpressionStatement","src":"6730:11:8"}],"id":3987,"name":"Block","src":"6563:189:8"}],"id":3988,"name":"WhileStatement","src":"6506:246:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3989,"name":"Identifier","src":"6766:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3990,"name":"Literal","src":"6773:1:8"}],"id":3991,"name":"BinaryOperation","src":"6766:8:8"},{"children":[{"attributes":{"functionReturnParameters":3877},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3992,"name":"Literal","src":"6798:1:8"}],"id":3993,"name":"UnaryOperation","src":"6797:2:8"}],"id":3994,"name":"Return","src":"6790:9:8"}],"id":3995,"name":"Block","src":"6776:34:8"}],"id":3996,"name":"IfStatement","src":"6762:48:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3997,"name":"Identifier","src":"6822:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3998,"name":"Literal","src":"6834:1:8"}],"id":3999,"name":"BinaryOperation","src":"6822:13:8"},{"children":[{"attributes":{"functionReturnParameters":3877},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4000,"name":"Literal","src":"6858:1:8"}],"id":4001,"name":"Return","src":"6851:8:8"}],"id":4002,"name":"Block","src":"6837:33:8"}],"id":4003,"name":"IfStatement","src":"6819:51:8"},{"attributes":{"functionReturnParameters":3877},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":4221,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":4004,"name":"Identifier","src":"6887:4:8"}],"id":4005,"name":"MemberAccess","src":"6887:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"uint256","value":"prevoff"},"id":4006,"name":"Identifier","src":"6900:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4007,"name":"Literal","src":"6910:1:8"}],"id":4008,"name":"BinaryOperation","src":"6900:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":4009,"name":"Identifier","src":"6913:4:8"}],"id":4010,"name":"MemberAccess","src":"6913:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"uint256","value":"prevoff"},"id":4011,"name":"Identifier","src":"6928:7:8"}],"id":4012,"name":"FunctionCall","src":"6913:23:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":4013,"name":"Identifier","src":"6938:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"uint256","value":"otherprevoff"},"id":4014,"name":"Identifier","src":"6945:12:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4015,"name":"Literal","src":"6960:1:8"}],"id":4016,"name":"BinaryOperation","src":"6945:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":4017,"name":"Identifier","src":"6963:5:8"}],"id":4018,"name":"MemberAccess","src":"6963:15:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"uint256","value":"otherprevoff"},"id":4019,"name":"Identifier","src":"6979:12:8"}],"id":4020,"name":"FunctionCall","src":"6963:29:8"}],"id":4021,"name":"FunctionCall","src":"6887:106:8"}],"id":4022,"name":"Return","src":"6880:113:8"}],"id":4023,"name":"Block","src":"5793:1207:8"}],"id":4024,"name":"FunctionDefinition","src":"5704:1296:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":4043,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4025,"name":"ElementaryTypeName","src":"7024:5:8"}],"id":4026,"name":"VariableDeclaration","src":"7024:17:8"},{"attributes":{"constant":false,"name":"off","scope":4043,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4027,"name":"ElementaryTypeName","src":"7043:4:8"}],"id":4028,"name":"VariableDeclaration","src":"7043:8:8"}],"id":4029,"name":"ParameterList","src":"7023:29:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":4043,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4030,"name":"ElementaryTypeName","src":"7075:4:8"}],"id":4031,"name":"VariableDeclaration","src":"7075:4:8"}],"id":4032,"name":"ParameterList","src":"7074:6:8"},{"children":[{"attributes":{"functionReturnParameters":4032},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4028,"type":"uint256","value":"off"},"id":4033,"name":"Identifier","src":"7098:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4034,"name":"Literal","src":"7104:1:8"}],"id":4035,"name":"BinaryOperation","src":"7098:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4026,"type":"bytes memory","value":"body"},"id":4036,"name":"Identifier","src":"7108:4:8"}],"id":4037,"name":"MemberAccess","src":"7108:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4028,"type":"uint256","value":"off"},"id":4038,"name":"Identifier","src":"7123:3:8"}],"id":4039,"name":"FunctionCall","src":"7108:19:8"}],"id":4040,"name":"BinaryOperation","src":"7098:29:8"}],"id":4041,"name":"Return","src":"7091:36:8"}],"id":4042,"name":"Block","src":"7081:53:8"}],"id":4043,"name":"FunctionDefinition","src":"7006:128:8"}],"id":4044,"name":"ContractDefinition","src":"150:6986:8"}],"id":4045,"name":"SourceUnit","src":"0:7137:8"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[3426]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3359,"name":"PragmaDirective","src":"0:23:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3426],"name":"ResolverBase","scope":3427},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":3426,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3360,"name":"ElementaryTypeName","src":"53:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":3361,"name":"Literal","src":"97:10:9"}],"id":3362,"name":"VariableDeclaration","src":"53:54:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3426,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3374,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3363,"name":"ElementaryTypeName","src":"141:6:9"}],"id":3364,"name":"VariableDeclaration","src":"141:18:9"}],"id":3365,"name":"ParameterList","src":"140:20:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":3374,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3366,"name":"ElementaryTypeName","src":"181:4:9"}],"id":3367,"name":"VariableDeclaration","src":"181:4:9"}],"id":3368,"name":"ParameterList","src":"180:6:9"},{"children":[{"attributes":{"functionReturnParameters":3368},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"bytes4","value":"interfaceID"},"id":3369,"name":"Identifier","src":"204:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3362,"type":"bytes4","value":"INTERFACE_META_ID"},"id":3370,"name":"Identifier","src":"219:17:9"}],"id":3371,"name":"BinaryOperation","src":"204:32:9"}],"id":3372,"name":"Return","src":"197:39:9"}],"id":3373,"name":"Block","src":"187:56:9"}],"id":3374,"name":"FunctionDefinition","src":"114:129:9"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":3426,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3381,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3375,"name":"ElementaryTypeName","src":"271:7:9"}],"id":3376,"name":"VariableDeclaration","src":"271:12:9"}],"id":3377,"name":"ParameterList","src":"270:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":3381,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3378,"name":"ElementaryTypeName","src":"307:4:9"}],"id":3379,"name":"VariableDeclaration","src":"307:4:9"}],"id":3380,"name":"ParameterList","src":"306:6:9"}],"id":3381,"name":"FunctionDefinition","src":"249:64:9"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3393,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3382,"name":"ElementaryTypeName","src":"339:7:9"}],"id":3383,"name":"VariableDeclaration","src":"339:12:9"}],"id":3384,"name":"ParameterList","src":"338:14:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":3385,"name":"Identifier","src":"363:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3381,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":3386,"name":"Identifier","src":"371:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3383,"type":"bytes32","value":"node"},"id":3387,"name":"Identifier","src":"384:4:9"}],"id":3388,"name":"FunctionCall","src":"371:18:9"}],"id":3389,"name":"FunctionCall","src":"363:27:9"}],"id":3390,"name":"ExpressionStatement","src":"363:27:9"},{"id":3391,"name":"PlaceholderStatement","src":"400:1:9"}],"id":3392,"name":"Block","src":"353:55:9"}],"id":3393,"name":"ModifierDefinition","src":"319:89:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":3426,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":3409,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3394,"name":"ElementaryTypeName","src":"438:5:9"}],"id":3395,"name":"VariableDeclaration","src":"438:14:9"}],"id":3396,"name":"ParameterList","src":"437:16:9"},{"children":[{"attributes":{"constant":false,"name":"a","scope":3409,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3397,"name":"ElementaryTypeName","src":"476:15:9"}],"id":3398,"name":"VariableDeclaration","src":"476:17:9"}],"id":3399,"name":"ParameterList","src":"475:19:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":3400,"name":"Identifier","src":"505:7:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3395,"type":"bytes memory","value":"b"},"id":3401,"name":"Identifier","src":"513:1:9"}],"id":3402,"name":"MemberAccess","src":"513:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":3403,"name":"Literal","src":"525:2:9"}],"id":3404,"name":"BinaryOperation","src":"513:14:9"}],"id":3405,"name":"FunctionCall","src":"505:23:9"}],"id":3406,"name":"ExpressionStatement","src":"505:23:9"},{"attributes":{"externalReferences":[{"a":{"declaration":3398,"isOffset":false,"isSlot":false,"src":"561:1:9","valueSize":1}},{"b":{"declaration":3395,"isOffset":false,"isSlot":false,"src":"580:1:9","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":3407,"name":"InlineAssembly","src":"538:74:9"}],"id":3408,"name":"Block","src":"495:123:9"}],"id":3409,"name":"FunctionDefinition","src":"414:204:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":3426,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3425,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3410,"name":"ElementaryTypeName","src":"648:7:9"}],"id":3411,"name":"VariableDeclaration","src":"648:9:9"}],"id":3412,"name":"ParameterList","src":"647:11:9"},{"children":[{"attributes":{"constant":false,"name":"b","scope":3425,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3413,"name":"ElementaryTypeName","src":"681:5:9"}],"id":3414,"name":"VariableDeclaration","src":"681:14:9"}],"id":3415,"name":"ParameterList","src":"680:16:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3414,"type":"bytes memory","value":"b"},"id":3416,"name":"Identifier","src":"707:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3417,"name":"ElementaryTypeName","src":"715:5:9"}],"id":3418,"name":"NewExpression","src":"711:9:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":3419,"name":"Literal","src":"721:2:9"}],"id":3420,"name":"FunctionCall","src":"711:13:9"}],"id":3421,"name":"Assignment","src":"707:17:9"}],"id":3422,"name":"ExpressionStatement","src":"707:17:9"},{"attributes":{"externalReferences":[{"b":{"declaration":3414,"isOffset":false,"isSlot":false,"src":"768:1:9","valueSize":1}},{"a":{"declaration":3411,"isOffset":false,"isSlot":false,"src":"780:1:9","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":3423,"name":"InlineAssembly","src":"734:73:9"}],"id":3424,"name":"Block","src":"697:116:9"}],"id":3425,"name":"FunctionDefinition","src":"624:189:9"}],"id":3426,"name":"ContractDefinition","src":"25:790:9"}],"id":3427,"name":"SourceUnit","src":"0:816:9"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[2206]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2072,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2207,"symbolAliases":[null],"unitAlias":""},"id":2073,"name":"ImportDirective","src":"25:29:10"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2206,3426],"name":"ABIResolver","scope":2207},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2074,"name":"UserDefinedTypeName","src":"80:12:10"}],"id":2075,"name":"InheritanceSpecifier","src":"80:12:10"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":2206,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2076,"name":"ElementaryTypeName","src":"99:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":2077,"name":"Literal","src":"142:10:10"}],"id":2078,"name":"VariableDeclaration","src":"99:53:10"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2084,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2079,"name":"ElementaryTypeName","src":"176:7:10"}],"id":2080,"name":"VariableDeclaration","src":"176:20:10"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":2084,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2081,"name":"ElementaryTypeName","src":"198:7:10"}],"id":2082,"name":"VariableDeclaration","src":"198:27:10"}],"id":2083,"name":"ParameterList","src":"175:51:10"}],"id":2084,"name":"EventDefinition","src":"159:68:10"},{"attributes":{"constant":false,"name":"abis","scope":2206,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2085,"name":"ElementaryTypeName","src":"241:7:10"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2086,"name":"ElementaryTypeName","src":"258:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":2087,"name":"ElementaryTypeName","src":"267:5:10"}],"id":2088,"name":"Mapping","src":"250:23:10"}],"id":2089,"name":"Mapping","src":"233:41:10"}],"id":2090,"name":"VariableDeclaration","src":"233:46:10"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":2206,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2128,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2091,"name":"ElementaryTypeName","src":"598:7:10"}],"id":2092,"name":"VariableDeclaration","src":"598:12:10"},{"attributes":{"constant":false,"name":"contentType","scope":2128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2093,"name":"ElementaryTypeName","src":"612:7:10"}],"id":2094,"name":"VariableDeclaration","src":"612:19:10"},{"attributes":{"constant":false,"name":"data","scope":2128,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2095,"name":"ElementaryTypeName","src":"633:5:10"}],"id":2096,"name":"VariableDeclaration","src":"633:19:10"}],"id":2097,"name":"ParameterList","src":"597:56:10"},{"attributes":{"parameters":[null]},"children":[],"id":2101,"name":"ParameterList","src":"680:0:10"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2098,"name":"Identifier","src":"663:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"bytes32","value":"node"},"id":2099,"name":"Identifier","src":"674:4:10"}],"id":2100,"name":"ModifierInvocation","src":"663:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":2102,"name":"Identifier","src":"735:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"contentType"},"id":2103,"name":"Identifier","src":"745:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2104,"name":"Literal","src":"759:1:10"}],"id":2105,"name":"BinaryOperation","src":"745:15:10"}],"id":2106,"name":"TupleExpression","src":"744:17:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"contentType"},"id":2107,"name":"Identifier","src":"764:11:10"}],"id":2108,"name":"BinaryOperation","src":"744:31:10"}],"id":2109,"name":"TupleExpression","src":"743:33:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2110,"name":"Literal","src":"780:1:10"}],"id":2111,"name":"BinaryOperation","src":"743:38:10"}],"id":2112,"name":"FunctionCall","src":"735:47:10"}],"id":2113,"name":"ExpressionStatement","src":"735:47:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":2114,"name":"Identifier","src":"793:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"bytes32","value":"node"},"id":2115,"name":"Identifier","src":"798:4:10"}],"id":2117,"name":"IndexAccess","src":"793:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"contentType"},"id":2116,"name":"Identifier","src":"804:11:10"}],"id":2118,"name":"IndexAccess","src":"793:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"bytes calldata","value":"data"},"id":2119,"name":"Identifier","src":"819:4:10"}],"id":2120,"name":"Assignment","src":"793:30:10"}],"id":2121,"name":"ExpressionStatement","src":"793:30:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2084,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":2122,"name":"Identifier","src":"838:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"bytes32","value":"node"},"id":2123,"name":"Identifier","src":"849:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"contentType"},"id":2124,"name":"Identifier","src":"855:11:10"}],"id":2125,"name":"FunctionCall","src":"838:29:10"}],"id":2126,"name":"EmitStatement","src":"833:34:10"}],"id":2127,"name":"Block","src":"680:194:10"}],"id":2128,"name":"FunctionDefinition","src":"582:292:10"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":2206,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2188,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2129,"name":"ElementaryTypeName","src":"1208:7:10"}],"id":2130,"name":"VariableDeclaration","src":"1208:12:10"},{"attributes":{"constant":false,"name":"contentTypes","scope":2188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2131,"name":"ElementaryTypeName","src":"1222:7:10"}],"id":2132,"name":"VariableDeclaration","src":"1222:20:10"}],"id":2133,"name":"ParameterList","src":"1207:36:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":2188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2134,"name":"ElementaryTypeName","src":"1267:7:10"}],"id":2135,"name":"VariableDeclaration","src":"1267:7:10"},{"attributes":{"constant":false,"name":"","scope":2188,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2136,"name":"ElementaryTypeName","src":"1276:5:10"}],"id":2137,"name":"VariableDeclaration","src":"1276:12:10"}],"id":2138,"name":"ParameterList","src":"1266:23:10"},{"children":[{"attributes":{"assignments":[2142]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":2187,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2139,"name":"ElementaryTypeName","src":"1308:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":2140,"name":"ElementaryTypeName","src":"1317:5:10"}],"id":2141,"name":"Mapping","src":"1300:23:10"}],"id":2142,"name":"VariableDeclaration","src":"1300:38:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":2143,"name":"Identifier","src":"1341:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2130,"type":"bytes32","value":"node"},"id":2144,"name":"Identifier","src":"1346:4:10"}],"id":2145,"name":"IndexAccess","src":"1341:10:10"}],"id":2146,"name":"VariableDeclarationStatement","src":"1300:51:10"},{"children":[{"attributes":{"assignments":[2148]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":2180,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2147,"name":"ElementaryTypeName","src":"1367:7:10"}],"id":2148,"name":"VariableDeclaration","src":"1367:19:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2149,"name":"Literal","src":"1389:1:10"}],"id":2150,"name":"VariableDeclarationStatement","src":"1367:23:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2151,"name":"Identifier","src":"1392:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2132,"type":"uint256","value":"contentTypes"},"id":2152,"name":"Identifier","src":"1407:12:10"}],"id":2153,"name":"BinaryOperation","src":"1392:27:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2154,"name":"Identifier","src":"1421:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2155,"name":"Literal","src":"1437:1:10"}],"id":2156,"name":"Assignment","src":"1421:17:10"}],"id":2157,"name":"ExpressionStatement","src":"1421:17:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2158,"name":"Identifier","src":"1459:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2132,"type":"uint256","value":"contentTypes"},"id":2159,"name":"Identifier","src":"1473:12:10"}],"id":2160,"name":"BinaryOperation","src":"1459:26:10"}],"id":2161,"name":"TupleExpression","src":"1458:28:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2162,"name":"Literal","src":"1490:1:10"}],"id":2163,"name":"BinaryOperation","src":"1458:33:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":2164,"name":"Identifier","src":"1495:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2165,"name":"Identifier","src":"1502:11:10"}],"id":2166,"name":"IndexAccess","src":"1495:19:10"}],"id":2167,"name":"MemberAccess","src":"1495:26:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2168,"name":"Literal","src":"1524:1:10"}],"id":2169,"name":"BinaryOperation","src":"1495:30:10"}],"id":2170,"name":"BinaryOperation","src":"1458:67:10"},{"children":[{"attributes":{"functionReturnParameters":2138},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2171,"name":"Identifier","src":"1553:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":2172,"name":"Identifier","src":"1566:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2173,"name":"Identifier","src":"1573:11:10"}],"id":2174,"name":"IndexAccess","src":"1566:19:10"}],"id":2175,"name":"TupleExpression","src":"1552:34:10"}],"id":2176,"name":"Return","src":"1545:41:10"}],"id":2177,"name":"Block","src":"1527:74:10"}],"id":2178,"name":"IfStatement","src":"1454:147:10"}],"id":2179,"name":"Block","src":"1440:171:10"}],"id":2180,"name":"ForStatement","src":"1362:249:10"},{"attributes":{"functionReturnParameters":2138},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2181,"name":"Literal","src":"1629:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2182,"name":"ElementaryTypeNameExpression","src":"1632:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":2183,"name":"Literal","src":"1638:2:10"}],"id":2184,"name":"FunctionCall","src":"1632:9:10"}],"id":2185,"name":"TupleExpression","src":"1628:14:10"}],"id":2186,"name":"Return","src":"1621:21:10"}],"id":2187,"name":"Block","src":"1290:359:10"}],"id":2188,"name":"FunctionDefinition","src":"1195:454:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2206,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2205,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2189,"name":"ElementaryTypeName","src":"1682:6:10"}],"id":2190,"name":"VariableDeclaration","src":"1682:18:10"}],"id":2191,"name":"ParameterList","src":"1681:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":2205,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2192,"name":"ElementaryTypeName","src":"1722:4:10"}],"id":2193,"name":"VariableDeclaration","src":"1722:4:10"}],"id":2194,"name":"ParameterList","src":"1721:6:10"},{"children":[{"attributes":{"functionReturnParameters":2194},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2190,"type":"bytes4","value":"interfaceID"},"id":2195,"name":"Identifier","src":"1745:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2078,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":2196,"name":"Identifier","src":"1760:16:10"}],"id":2197,"name":"BinaryOperation","src":"1745:31:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4817,"type":"contract super ABIResolver","value":"super"},"id":2198,"name":"Identifier","src":"1780:5:10"}],"id":2199,"name":"MemberAccess","src":"1780:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2190,"type":"bytes4","value":"interfaceID"},"id":2200,"name":"Identifier","src":"1804:11:10"}],"id":2201,"name":"FunctionCall","src":"1780:36:10"}],"id":2202,"name":"BinaryOperation","src":"1745:71:10"}],"id":2203,"name":"Return","src":"1738:78:10"}],"id":2204,"name":"Block","src":"1728:95:10"}],"id":2205,"name":"FunctionDefinition","src":"1655:168:10"}],"id":2206,"name":"ContractDefinition","src":"56:1769:10"}],"id":2207,"name":"SourceUnit","src":"0:1826:10"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[2365]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2208,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2366,"symbolAliases":[null],"unitAlias":""},"id":2209,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2365,3426],"name":"AddrResolver","scope":2366},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2210,"name":"UserDefinedTypeName","src":"81:12:11"}],"id":2211,"name":"InheritanceSpecifier","src":"81:12:11"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":2365,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2212,"name":"ElementaryTypeName","src":"100:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":2213,"name":"Literal","src":"144:10:11"}],"id":2214,"name":"VariableDeclaration","src":"100:54:11"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":2365,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2215,"name":"ElementaryTypeName","src":"160:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":2216,"name":"Literal","src":"207:10:11"}],"id":2217,"name":"VariableDeclaration","src":"160:57:11"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":2365,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2218,"name":"ElementaryTypeName","src":"223:4:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2219,"name":"Literal","src":"261:2:11"}],"id":2220,"name":"VariableDeclaration","src":"223:40:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2226,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2221,"name":"ElementaryTypeName","src":"288:7:11"}],"id":2222,"name":"VariableDeclaration","src":"288:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":2226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2223,"name":"ElementaryTypeName","src":"310:7:11"}],"id":2224,"name":"VariableDeclaration","src":"310:9:11"}],"id":2225,"name":"ParameterList","src":"287:33:11"}],"id":2226,"name":"EventDefinition","src":"270:51:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2234,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2227,"name":"ElementaryTypeName","src":"347:7:11"}],"id":2228,"name":"VariableDeclaration","src":"347:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":2234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2229,"name":"ElementaryTypeName","src":"369:4:11"}],"id":2230,"name":"VariableDeclaration","src":"369:13:11"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":2234,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2231,"name":"ElementaryTypeName","src":"384:5:11"}],"id":2232,"name":"VariableDeclaration","src":"384:16:11"}],"id":2233,"name":"ParameterList","src":"346:55:11"}],"id":2234,"name":"EventDefinition","src":"326:76:11"},{"attributes":{"constant":false,"name":"_addresses","scope":2365,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2235,"name":"ElementaryTypeName","src":"416:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2236,"name":"ElementaryTypeName","src":"433:4:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":2237,"name":"ElementaryTypeName","src":"439:5:11"}],"id":2238,"name":"Mapping","src":"425:20:11"}],"id":2239,"name":"Mapping","src":"408:38:11"}],"id":2240,"name":"VariableDeclaration","src":"408:49:11"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":2365,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2259,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2241,"name":"ElementaryTypeName","src":"698:7:11"}],"id":2242,"name":"VariableDeclaration","src":"698:12:11"},{"attributes":{"constant":false,"name":"a","scope":2259,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2243,"name":"ElementaryTypeName","src":"712:7:11"}],"id":2244,"name":"VariableDeclaration","src":"712:9:11"}],"id":2245,"name":"ParameterList","src":"697:25:11"},{"attributes":{"parameters":[null]},"children":[],"id":2249,"name":"ParameterList","src":"749:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2246,"name":"Identifier","src":"732:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2242,"type":"bytes32","value":"node"},"id":2247,"name":"Identifier","src":"743:4:11"}],"id":2248,"name":"ModifierInvocation","src":"732:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2327,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":2250,"name":"Identifier","src":"759:15:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2242,"type":"bytes32","value":"node"},"id":2251,"name":"Identifier","src":"775:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2220,"type":"uint256","value":"COIN_TYPE_ETH"},"id":2252,"name":"Identifier","src":"781:13:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3425,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":2253,"name":"Identifier","src":"796:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2244,"type":"address","value":"a"},"id":2254,"name":"Identifier","src":"811:1:11"}],"id":2255,"name":"FunctionCall","src":"796:17:11"}],"id":2256,"name":"FunctionCall","src":"759:55:11"}],"id":2257,"name":"ExpressionStatement","src":"759:55:11"}],"id":2258,"name":"Block","src":"749:72:11"}],"id":2259,"name":"FunctionDefinition","src":"681:140:11"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":2365,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2288,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2260,"name":"ElementaryTypeName","src":"994:7:11"}],"id":2261,"name":"VariableDeclaration","src":"994:12:11"}],"id":2262,"name":"ParameterList","src":"993:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":2288,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2263,"name":"ElementaryTypeName","src":"1029:15:11"}],"id":2264,"name":"VariableDeclaration","src":"1029:15:11"}],"id":2265,"name":"ParameterList","src":"1028:17:11"},{"children":[{"attributes":{"assignments":[2267]},"children":[{"attributes":{"constant":false,"name":"a","scope":2287,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2266,"name":"ElementaryTypeName","src":"1056:5:11"}],"id":2267,"name":"VariableDeclaration","src":"1056:14:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2288,2343],"referencedDeclaration":2343,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":2268,"name":"Identifier","src":"1073:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2261,"type":"bytes32","value":"node"},"id":2269,"name":"Identifier","src":"1078:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2220,"type":"uint256","value":"COIN_TYPE_ETH"},"id":2270,"name":"Identifier","src":"1084:13:11"}],"id":2271,"name":"FunctionCall","src":"1073:25:11"}],"id":2272,"name":"VariableDeclarationStatement","src":"1056:42:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2267,"type":"bytes memory","value":"a"},"id":2273,"name":"Identifier","src":"1111:1:11"}],"id":2274,"name":"MemberAccess","src":"1111:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2275,"name":"Literal","src":"1123:1:11"}],"id":2276,"name":"BinaryOperation","src":"1111:13:11"},{"children":[{"attributes":{"functionReturnParameters":2265},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2277,"name":"ElementaryTypeNameExpression","src":"1147:7:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2278,"name":"Literal","src":"1155:1:11"}],"id":2279,"name":"FunctionCall","src":"1147:10:11"}],"id":2280,"name":"Return","src":"1140:17:11"}],"id":2281,"name":"Block","src":"1126:42:11"}],"id":2282,"name":"IfStatement","src":"1108:60:11"},{"attributes":{"functionReturnParameters":2265},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3409,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":2283,"name":"Identifier","src":"1184:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2267,"type":"bytes memory","value":"a"},"id":2284,"name":"Identifier","src":"1199:1:11"}],"id":2285,"name":"FunctionCall","src":"1184:17:11"}],"id":2286,"name":"Return","src":"1177:24:11"}],"id":2287,"name":"Block","src":"1046:162:11"}],"id":2288,"name":"FunctionDefinition","src":"980:228:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":2365,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2327,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2289,"name":"ElementaryTypeName","src":"1239:7:11"}],"id":2290,"name":"VariableDeclaration","src":"1239:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":2327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2291,"name":"ElementaryTypeName","src":"1253:4:11"}],"id":2292,"name":"VariableDeclaration","src":"1253:13:11"},{"attributes":{"constant":false,"name":"a","scope":2327,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2293,"name":"ElementaryTypeName","src":"1268:5:11"}],"id":2294,"name":"VariableDeclaration","src":"1268:14:11"}],"id":2295,"name":"ParameterList","src":"1238:45:11"},{"attributes":{"parameters":[null]},"children":[],"id":2299,"name":"ParameterList","src":"1308:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2296,"name":"Identifier","src":"1291:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"bytes32","value":"node"},"id":2297,"name":"Identifier","src":"1302:4:11"}],"id":2298,"name":"ModifierInvocation","src":"1291:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":2300,"name":"Identifier","src":"1323:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"bytes32","value":"node"},"id":2301,"name":"Identifier","src":"1338:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"coinType"},"id":2302,"name":"Identifier","src":"1344:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"a"},"id":2303,"name":"Identifier","src":"1354:1:11"}],"id":2304,"name":"FunctionCall","src":"1323:33:11"}],"id":2305,"name":"EmitStatement","src":"1318:38:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"coinType"},"id":2306,"name":"Identifier","src":"1369:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2220,"type":"uint256","value":"COIN_TYPE_ETH"},"id":2307,"name":"Identifier","src":"1381:13:11"}],"id":2308,"name":"BinaryOperation","src":"1369:25:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2226,"type":"function (bytes32,address)","value":"AddrChanged"},"id":2309,"name":"Identifier","src":"1415:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"bytes32","value":"node"},"id":2310,"name":"Identifier","src":"1427:4:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3409,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":2311,"name":"Identifier","src":"1433:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"a"},"id":2312,"name":"Identifier","src":"1448:1:11"}],"id":2313,"name":"FunctionCall","src":"1433:17:11"}],"id":2314,"name":"FunctionCall","src":"1415:36:11"}],"id":2315,"name":"EmitStatement","src":"1410:41:11"}],"id":2316,"name":"Block","src":"1396:66:11"}],"id":2317,"name":"IfStatement","src":"1366:96:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2240,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":2318,"name":"Identifier","src":"1471:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"bytes32","value":"node"},"id":2319,"name":"Identifier","src":"1482:4:11"}],"id":2321,"name":"IndexAccess","src":"1471:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"coinType"},"id":2320,"name":"Identifier","src":"1488:8:11"}],"id":2322,"name":"IndexAccess","src":"1471:26:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"a"},"id":2323,"name":"Identifier","src":"1500:1:11"}],"id":2324,"name":"Assignment","src":"1471:30:11"}],"id":2325,"name":"ExpressionStatement","src":"1471:30:11"}],"id":2326,"name":"Block","src":"1308:200:11"}],"id":2327,"name":"FunctionDefinition","src":"1214:294:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":2365,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2328,"name":"ElementaryTypeName","src":"1528:7:11"}],"id":2329,"name":"VariableDeclaration","src":"1528:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":2343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2330,"name":"ElementaryTypeName","src":"1542:4:11"}],"id":2331,"name":"VariableDeclaration","src":"1542:13:11"}],"id":2332,"name":"ParameterList","src":"1527:29:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":2343,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2333,"name":"ElementaryTypeName","src":"1577:5:11"}],"id":2334,"name":"VariableDeclaration","src":"1577:12:11"}],"id":2335,"name":"ParameterList","src":"1576:14:11"},{"children":[{"attributes":{"functionReturnParameters":2335},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2240,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":2336,"name":"Identifier","src":"1608:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2329,"type":"bytes32","value":"node"},"id":2337,"name":"Identifier","src":"1619:4:11"}],"id":2338,"name":"IndexAccess","src":"1608:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2331,"type":"uint256","value":"coinType"},"id":2339,"name":"Identifier","src":"1625:8:11"}],"id":2340,"name":"IndexAccess","src":"1608:26:11"}],"id":2341,"name":"Return","src":"1601:33:11"}],"id":2342,"name":"Block","src":"1591:50:11"}],"id":2343,"name":"FunctionDefinition","src":"1514:127:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2365,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2364,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2344,"name":"ElementaryTypeName","src":"1674:6:11"}],"id":2345,"name":"VariableDeclaration","src":"1674:18:11"}],"id":2346,"name":"ParameterList","src":"1673:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":2364,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2347,"name":"ElementaryTypeName","src":"1714:4:11"}],"id":2348,"name":"VariableDeclaration","src":"1714:4:11"}],"id":2349,"name":"ParameterList","src":"1713:6:11"},{"children":[{"attributes":{"functionReturnParameters":2349},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"bytes4","value":"interfaceID"},"id":2350,"name":"Identifier","src":"1737:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2214,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":2351,"name":"Identifier","src":"1752:17:11"}],"id":2352,"name":"BinaryOperation","src":"1737:32:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"bytes4","value":"interfaceID"},"id":2353,"name":"Identifier","src":"1773:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":2354,"name":"Identifier","src":"1788:20:11"}],"id":2355,"name":"BinaryOperation","src":"1773:35:11"}],"id":2356,"name":"BinaryOperation","src":"1737:71:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4819,"type":"contract super AddrResolver","value":"super"},"id":2357,"name":"Identifier","src":"1812:5:11"}],"id":2358,"name":"MemberAccess","src":"1812:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"bytes4","value":"interfaceID"},"id":2359,"name":"Identifier","src":"1836:11:11"}],"id":2360,"name":"FunctionCall","src":"1812:36:11"}],"id":2361,"name":"BinaryOperation","src":"1737:111:11"}],"id":2362,"name":"Return","src":"1730:118:11"}],"id":2363,"name":"Block","src":"1720:135:11"}],"id":2364,"name":"FunctionDefinition","src":"1647:208:11"}],"id":2365,"name":"ContractDefinition","src":"56:1801:11"}],"id":2366,"name":"SourceUnit","src":"0:1857:11"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[2435]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2367,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2436,"symbolAliases":[null],"unitAlias":""},"id":2368,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2435,3426],"name":"ContentHashResolver","scope":2436},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2369,"name":"UserDefinedTypeName","src":"88:12:12"}],"id":2370,"name":"InheritanceSpecifier","src":"88:12:12"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":2435,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2371,"name":"ElementaryTypeName","src":"107:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":2372,"name":"Literal","src":"159:10:12"}],"id":2373,"name":"VariableDeclaration","src":"107:62:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2379,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2374,"name":"ElementaryTypeName","src":"201:7:12"}],"id":2375,"name":"VariableDeclaration","src":"201:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":2379,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2376,"name":"ElementaryTypeName","src":"223:5:12"}],"id":2377,"name":"VariableDeclaration","src":"223:10:12"}],"id":2378,"name":"ParameterList","src":"200:34:12"}],"id":2379,"name":"EventDefinition","src":"176:59:12"},{"attributes":{"constant":false,"name":"hashes","scope":2435,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2380,"name":"ElementaryTypeName","src":"249:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":2381,"name":"ElementaryTypeName","src":"258:5:12"}],"id":2382,"name":"Mapping","src":"241:23:12"}],"id":2383,"name":"VariableDeclaration","src":"241:30:12"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":2435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2405,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2384,"name":"ElementaryTypeName","src":"529:7:12"}],"id":2385,"name":"VariableDeclaration","src":"529:12:12"},{"attributes":{"constant":false,"name":"hash","scope":2405,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2386,"name":"ElementaryTypeName","src":"543:5:12"}],"id":2387,"name":"VariableDeclaration","src":"543:19:12"}],"id":2388,"name":"ParameterList","src":"528:35:12"},{"attributes":{"parameters":[null]},"children":[],"id":2392,"name":"ParameterList","src":"590:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2389,"name":"Identifier","src":"573:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2385,"type":"bytes32","value":"node"},"id":2390,"name":"Identifier","src":"584:4:12"}],"id":2391,"name":"ModifierInvocation","src":"573:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2383,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":2393,"name":"Identifier","src":"600:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2385,"type":"bytes32","value":"node"},"id":2394,"name":"Identifier","src":"607:4:12"}],"id":2395,"name":"IndexAccess","src":"600:12:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes calldata","value":"hash"},"id":2396,"name":"Identifier","src":"615:4:12"}],"id":2397,"name":"Assignment","src":"600:19:12"}],"id":2398,"name":"ExpressionStatement","src":"600:19:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2379,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":2399,"name":"Identifier","src":"634:18:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2385,"type":"bytes32","value":"node"},"id":2400,"name":"Identifier","src":"653:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes calldata","value":"hash"},"id":2401,"name":"Identifier","src":"659:4:12"}],"id":2402,"name":"FunctionCall","src":"634:30:12"}],"id":2403,"name":"EmitStatement","src":"629:35:12"}],"id":2404,"name":"Block","src":"590:81:12"}],"id":2405,"name":"FunctionDefinition","src":"505:166:12"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":2435,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2417,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2406,"name":"ElementaryTypeName","src":"859:7:12"}],"id":2407,"name":"VariableDeclaration","src":"859:12:12"}],"id":2408,"name":"ParameterList","src":"858:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":2417,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2409,"name":"ElementaryTypeName","src":"896:5:12"}],"id":2410,"name":"VariableDeclaration","src":"896:12:12"}],"id":2411,"name":"ParameterList","src":"895:14:12"},{"children":[{"attributes":{"functionReturnParameters":2411},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2383,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":2412,"name":"Identifier","src":"927:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2407,"type":"bytes32","value":"node"},"id":2413,"name":"Identifier","src":"934:4:12"}],"id":2414,"name":"IndexAccess","src":"927:12:12"}],"id":2415,"name":"Return","src":"920:19:12"}],"id":2416,"name":"Block","src":"910:36:12"}],"id":2417,"name":"FunctionDefinition","src":"838:108:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2435,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2434,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2418,"name":"ElementaryTypeName","src":"979:6:12"}],"id":2419,"name":"VariableDeclaration","src":"979:18:12"}],"id":2420,"name":"ParameterList","src":"978:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":2434,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2421,"name":"ElementaryTypeName","src":"1019:4:12"}],"id":2422,"name":"VariableDeclaration","src":"1019:4:12"}],"id":2423,"name":"ParameterList","src":"1018:6:12"},{"children":[{"attributes":{"functionReturnParameters":2423},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2419,"type":"bytes4","value":"interfaceID"},"id":2424,"name":"Identifier","src":"1042:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2373,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":2425,"name":"Identifier","src":"1057:25:12"}],"id":2426,"name":"BinaryOperation","src":"1042:40:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4821,"type":"contract super ContentHashResolver","value":"super"},"id":2427,"name":"Identifier","src":"1086:5:12"}],"id":2428,"name":"MemberAccess","src":"1086:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2419,"type":"bytes4","value":"interfaceID"},"id":2429,"name":"Identifier","src":"1110:11:12"}],"id":2430,"name":"FunctionCall","src":"1086:36:12"}],"id":2431,"name":"BinaryOperation","src":"1042:80:12"}],"id":2432,"name":"Return","src":"1035:87:12"}],"id":2433,"name":"Block","src":"1025:104:12"}],"id":2434,"name":"FunctionDefinition","src":"952:177:12"}],"id":2435,"name":"ContractDefinition","src":"56:1075:12"}],"id":2436,"name":"SourceUnit","src":"0:1132:12"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[2926]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2437,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2927,"symbolAliases":[null],"unitAlias":""},"id":2438,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"SourceUnit":4045,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":2927,"symbolAliases":[null],"unitAlias":""},"id":2439,"name":"ImportDirective","src":"55:24:13"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2926,3426],"name":"DNSResolver","scope":2927},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2440,"name":"UserDefinedTypeName","src":"105:12:13"}],"id":2441,"name":"InheritanceSpecifier","src":"105:12:13"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":4044,"type":"library RRUtils"},"id":2442,"name":"UserDefinedTypeName","src":"130:7:13"}],"id":2443,"name":"UsingForDirective","src":"124:20:13"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":4765,"type":"library ENSBytesUtils"},"id":2444,"name":"UserDefinedTypeName","src":"155:13:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2445,"name":"ElementaryTypeName","src":"173:5:13"}],"id":2446,"name":"UsingForDirective","src":"149:30:13"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":2926,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2447,"name":"ElementaryTypeName","src":"185:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":2448,"name":"Literal","src":"235:10:13"}],"id":2449,"name":"VariableDeclaration","src":"185:60:13"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":2926,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2450,"name":"ElementaryTypeName","src":"251:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":2451,"name":"Literal","src":"299:10:13"}],"id":2452,"name":"VariableDeclaration","src":"251:58:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2462,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2453,"name":"ElementaryTypeName","src":"430:7:13"}],"id":2454,"name":"VariableDeclaration","src":"430:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2462,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2455,"name":"ElementaryTypeName","src":"452:5:13"}],"id":2456,"name":"VariableDeclaration","src":"452:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":2462,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2457,"name":"ElementaryTypeName","src":"464:6:13"}],"id":2458,"name":"VariableDeclaration","src":"464:15:13"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":2462,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2459,"name":"ElementaryTypeName","src":"481:5:13"}],"id":2460,"name":"VariableDeclaration","src":"481:12:13"}],"id":2461,"name":"ParameterList","src":"429:65:13"}],"id":2462,"name":"EventDefinition","src":"407:88:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2470,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2463,"name":"ElementaryTypeName","src":"614:7:13"}],"id":2464,"name":"VariableDeclaration","src":"614:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2470,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2465,"name":"ElementaryTypeName","src":"636:5:13"}],"id":2466,"name":"VariableDeclaration","src":"636:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":2470,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2467,"name":"ElementaryTypeName","src":"648:6:13"}],"id":2468,"name":"VariableDeclaration","src":"648:15:13"}],"id":2469,"name":"ParameterList","src":"613:51:13"}],"id":2470,"name":"EventDefinition","src":"591:74:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2474,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2471,"name":"ElementaryTypeName","src":"777:7:13"}],"id":2472,"name":"VariableDeclaration","src":"777:20:13"}],"id":2473,"name":"ParameterList","src":"776:22:13"}],"id":2474,"name":"EventDefinition","src":"756:43:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2482,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2475,"name":"ElementaryTypeName","src":"913:7:13"}],"id":2476,"name":"VariableDeclaration","src":"913:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":2482,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2477,"name":"ElementaryTypeName","src":"935:5:13"}],"id":2478,"name":"VariableDeclaration","src":"935:18:13"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":2482,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2479,"name":"ElementaryTypeName","src":"955:5:13"}],"id":2480,"name":"VariableDeclaration","src":"955:14:13"}],"id":2481,"name":"ParameterList","src":"912:58:13"}],"id":2482,"name":"EventDefinition","src":"888:83:13"},{"attributes":{"constant":false,"name":"zonehashes","scope":2926,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2483,"name":"ElementaryTypeName","src":"1181:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2484,"name":"ElementaryTypeName","src":"1190:5:13"}],"id":2485,"name":"Mapping","src":"1173:23:13"}],"id":2486,"name":"VariableDeclaration","src":"1173:42:13"},{"attributes":{"constant":false,"name":"versions","scope":2926,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2487,"name":"ElementaryTypeName","src":"1433:7:13"},{"attributes":{"name":"uint256","type":"uint256"},"id":2488,"name":"ElementaryTypeName","src":"1442:7:13"}],"id":2489,"name":"Mapping","src":"1425:25:13"}],"id":2490,"name":"VariableDeclaration","src":"1425:42:13"},{"attributes":{"constant":false,"name":"records","scope":2926,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2491,"name":"ElementaryTypeName","src":"1589:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2492,"name":"ElementaryTypeName","src":"1606:7:13"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2493,"name":"ElementaryTypeName","src":"1623:7:13"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2494,"name":"ElementaryTypeName","src":"1640:6:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2495,"name":"ElementaryTypeName","src":"1648:5:13"}],"id":2496,"name":"Mapping","src":"1632:22:13"}],"id":2497,"name":"Mapping","src":"1615:40:13"}],"id":2498,"name":"Mapping","src":"1598:58:13"}],"id":2499,"name":"Mapping","src":"1581:76:13"}],"id":2500,"name":"VariableDeclaration","src":"1581:92:13"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":2926,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2501,"name":"ElementaryTypeName","src":"1853:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2502,"name":"ElementaryTypeName","src":"1870:7:13"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2503,"name":"ElementaryTypeName","src":"1887:7:13"},{"attributes":{"name":"uint16","type":"uint16"},"id":2504,"name":"ElementaryTypeName","src":"1896:6:13"}],"id":2505,"name":"Mapping","src":"1879:24:13"}],"id":2506,"name":"Mapping","src":"1862:42:13"}],"id":2507,"name":"Mapping","src":"1845:60:13"}],"id":2508,"name":"VariableDeclaration","src":"1845:85:13"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":2926,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2673,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2509,"name":"ElementaryTypeName","src":"2877:7:13"}],"id":2510,"name":"VariableDeclaration","src":"2877:12:13"},{"attributes":{"constant":false,"name":"data","scope":2673,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2511,"name":"ElementaryTypeName","src":"2891:5:13"}],"id":2512,"name":"VariableDeclaration","src":"2891:19:13"}],"id":2513,"name":"ParameterList","src":"2876:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":2517,"name":"ParameterList","src":"2938:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2514,"name":"Identifier","src":"2921:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2510,"type":"bytes32","value":"node"},"id":2515,"name":"Identifier","src":"2932:4:13"}],"id":2516,"name":"ModifierInvocation","src":"2921:16:13"},{"children":[{"attributes":{"assignments":[2519]},"children":[{"attributes":{"constant":false,"name":"resource","scope":2672,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2518,"name":"ElementaryTypeName","src":"2948:6:13"}],"id":2519,"name":"VariableDeclaration","src":"2948:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2520,"name":"Literal","src":"2966:1:13"}],"id":2521,"name":"VariableDeclarationStatement","src":"2948:19:13"},{"attributes":{"assignments":[2523]},"children":[{"attributes":{"constant":false,"name":"offset","scope":2672,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2522,"name":"ElementaryTypeName","src":"2977:7:13"}],"id":2523,"name":"VariableDeclaration","src":"2977:14:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2524,"name":"Literal","src":"2994:1:13"}],"id":2525,"name":"VariableDeclarationStatement","src":"2977:18:13"},{"attributes":{"assignments":[2527],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":2672,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2526,"name":"ElementaryTypeName","src":"3005:5:13"}],"id":2527,"name":"VariableDeclaration","src":"3005:17:13"}],"id":2528,"name":"VariableDeclarationStatement","src":"3005:17:13"},{"attributes":{"assignments":[2530],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":2672,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2529,"name":"ElementaryTypeName","src":"3032:5:13"}],"id":2530,"name":"VariableDeclaration","src":"3032:18:13"}],"id":2531,"name":"VariableDeclarationStatement","src":"3032:18:13"},{"attributes":{"assignments":[2533],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":2672,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2532,"name":"ElementaryTypeName","src":"3060:7:13"}],"id":2533,"name":"VariableDeclaration","src":"3060:16:13"}],"id":2534,"name":"VariableDeclarationStatement","src":"3060:16:13"},{"children":[{"attributes":{"assignments":[2538]},"children":[{"attributes":{"constant":false,"name":"iter","scope":2649,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":2537,"name":"UserDefinedTypeName","src":"3152:18:13"}],"id":2538,"name":"VariableDeclaration","src":"3152:30:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":3591,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2512,"type":"bytes calldata","value":"data"},"id":2539,"name":"Identifier","src":"3185:4:13"}],"id":2540,"name":"MemberAccess","src":"3185:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2541,"name":"Literal","src":"3201:1:13"}],"id":2542,"name":"FunctionCall","src":"3185:18:13"}],"id":2543,"name":"VariableDeclarationStatement","src":"3152:51:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":3606,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2544,"name":"Identifier","src":"3206:4:13"}],"id":2545,"name":"MemberAccess","src":"3206:9:13"}],"id":2546,"name":"FunctionCall","src":"3206:11:13"}],"id":2547,"name":"UnaryOperation","src":"3205:12:13"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":3708,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2548,"name":"Identifier","src":"3219:4:13"}],"id":2549,"name":"MemberAccess","src":"3219:9:13"}],"id":2550,"name":"FunctionCall","src":"3219:11:13"}],"id":2551,"name":"ExpressionStatement","src":"3219:11:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2552,"name":"Identifier","src":"3250:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2553,"name":"Literal","src":"3262:1:13"}],"id":2554,"name":"BinaryOperation","src":"3250:13:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2555,"name":"Identifier","src":"3283:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":3556,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2556,"name":"Identifier","src":"3294:4:13"}],"id":2557,"name":"MemberAccess","src":"3294:12:13"}],"id":2558,"name":"Assignment","src":"3283:23:13"}],"id":2559,"name":"ExpressionStatement","src":"3283:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2560,"name":"Identifier","src":"3324:4:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":3729,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2561,"name":"Identifier","src":"3331:4:13"}],"id":2562,"name":"MemberAccess","src":"3331:9:13"}],"id":2563,"name":"FunctionCall","src":"3331:11:13"}],"id":2564,"name":"Assignment","src":"3324:18:13"}],"id":2565,"name":"ExpressionStatement","src":"3324:18:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2533,"type":"bytes32","value":"nameHash"},"id":2566,"name":"Identifier","src":"3360:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2567,"name":"Identifier","src":"3371:9:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":2568,"name":"Identifier","src":"3381:3:13"}],"id":2569,"name":"MemberAccess","src":"3381:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2570,"name":"Identifier","src":"3398:4:13"}],"id":2571,"name":"FunctionCall","src":"3381:22:13"}],"id":2572,"name":"FunctionCall","src":"3371:33:13"}],"id":2573,"name":"Assignment","src":"3360:44:13"}],"id":2574,"name":"ExpressionStatement","src":"3360:44:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"bytes memory","value":"value"},"id":2575,"name":"Identifier","src":"3422:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2576,"name":"ElementaryTypeNameExpression","src":"3430:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":3749,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2577,"name":"Identifier","src":"3436:4:13"}],"id":2578,"name":"MemberAccess","src":"3436:10:13"}],"id":2579,"name":"FunctionCall","src":"3436:12:13"}],"id":2580,"name":"FunctionCall","src":"3430:19:13"}],"id":2581,"name":"Assignment","src":"3422:27:13"}],"id":2582,"name":"ExpressionStatement","src":"3422:27:13"}],"id":2583,"name":"Block","src":"3265:199:13"},{"children":[{"attributes":{"assignments":[2585]},"children":[{"attributes":{"constant":false,"name":"newName","scope":2646,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2584,"name":"ElementaryTypeName","src":"3488:5:13"}],"id":2585,"name":"VariableDeclaration","src":"3488:20:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":3729,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2586,"name":"Identifier","src":"3511:4:13"}],"id":2587,"name":"MemberAccess","src":"3511:9:13"}],"id":2588,"name":"FunctionCall","src":"3511:11:13"}],"id":2589,"name":"VariableDeclarationStatement","src":"3488:34:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2590,"name":"Identifier","src":"3544:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":3556,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2591,"name":"Identifier","src":"3556:4:13"}],"id":2592,"name":"MemberAccess","src":"3556:12:13"}],"id":2593,"name":"BinaryOperation","src":"3544:24:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":4335,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2594,"name":"Identifier","src":"3573:4:13"}],"id":2595,"name":"MemberAccess","src":"3573:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"bytes memory","value":"newName"},"id":2596,"name":"Identifier","src":"3585:7:13"}],"id":2597,"name":"FunctionCall","src":"3573:20:13"}],"id":2598,"name":"UnaryOperation","src":"3572:21:13"}],"id":2599,"name":"BinaryOperation","src":"3544:49:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2925,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":2600,"name":"Identifier","src":"3617:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2510,"type":"bytes32","value":"node"},"id":2601,"name":"Identifier","src":"3629:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2602,"name":"Identifier","src":"3635:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2603,"name":"Identifier","src":"3641:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2512,"type":"bytes calldata","value":"data"},"id":2604,"name":"Identifier","src":"3651:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2605,"name":"Identifier","src":"3657:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2606,"name":"Identifier","src":"3665:4:13"}],"id":2607,"name":"MemberAccess","src":"3665:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2608,"name":"Identifier","src":"3679:6:13"}],"id":2609,"name":"BinaryOperation","src":"3665:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"bytes memory","value":"value"},"id":2610,"name":"Identifier","src":"3687:5:13"}],"id":2611,"name":"MemberAccess","src":"3687:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2612,"name":"Literal","src":"3703:1:13"}],"id":2613,"name":"BinaryOperation","src":"3687:17:13"}],"id":2614,"name":"FunctionCall","src":"3617:88:13"}],"id":2615,"name":"ExpressionStatement","src":"3617:88:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2616,"name":"Identifier","src":"3727:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":3556,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2617,"name":"Identifier","src":"3738:4:13"}],"id":2618,"name":"MemberAccess","src":"3738:12:13"}],"id":2619,"name":"Assignment","src":"3727:23:13"}],"id":2620,"name":"ExpressionStatement","src":"3727:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2621,"name":"Identifier","src":"3772:6:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2622,"name":"Identifier","src":"3781:4:13"}],"id":2623,"name":"MemberAccess","src":"3781:11:13"}],"id":2624,"name":"Assignment","src":"3772:20:13"}],"id":2625,"name":"ExpressionStatement","src":"3772:20:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2626,"name":"Identifier","src":"3814:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"bytes memory","value":"newName"},"id":2627,"name":"Identifier","src":"3821:7:13"}],"id":2628,"name":"Assignment","src":"3814:14:13"}],"id":2629,"name":"ExpressionStatement","src":"3814:14:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2533,"type":"bytes32","value":"nameHash"},"id":2630,"name":"Identifier","src":"3850:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2631,"name":"Identifier","src":"3861:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2632,"name":"Identifier","src":"3871:4:13"}],"id":2633,"name":"FunctionCall","src":"3861:15:13"}],"id":2634,"name":"Assignment","src":"3850:26:13"}],"id":2635,"name":"ExpressionStatement","src":"3850:26:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"bytes memory","value":"value"},"id":2636,"name":"Identifier","src":"3898:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2637,"name":"ElementaryTypeNameExpression","src":"3906:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":3749,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2638,"name":"Identifier","src":"3912:4:13"}],"id":2639,"name":"MemberAccess","src":"3912:10:13"}],"id":2640,"name":"FunctionCall","src":"3912:12:13"}],"id":2641,"name":"FunctionCall","src":"3906:19:13"}],"id":2642,"name":"Assignment","src":"3898:27:13"}],"id":2643,"name":"ExpressionStatement","src":"3898:27:13"}],"id":2644,"name":"Block","src":"3595:349:13"}],"id":2645,"name":"IfStatement","src":"3540:404:13"}],"id":2646,"name":"Block","src":"3470:488:13"}],"id":2647,"name":"IfStatement","src":"3246:712:13"}],"id":2648,"name":"Block","src":"3232:736:13"}],"id":2649,"name":"ForStatement","src":"3147:821:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2650,"name":"Identifier","src":"3981:4:13"}],"id":2651,"name":"MemberAccess","src":"3981:11:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2652,"name":"Literal","src":"3995:1:13"}],"id":2653,"name":"BinaryOperation","src":"3981:15:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2925,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":2654,"name":"Identifier","src":"4012:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2510,"type":"bytes32","value":"node"},"id":2655,"name":"Identifier","src":"4024:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2656,"name":"Identifier","src":"4030:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2657,"name":"Identifier","src":"4036:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2512,"type":"bytes calldata","value":"data"},"id":2658,"name":"Identifier","src":"4046:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2659,"name":"Identifier","src":"4052:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2512,"type":"bytes calldata","value":"data"},"id":2660,"name":"Identifier","src":"4060:4:13"}],"id":2661,"name":"MemberAccess","src":"4060:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2662,"name":"Identifier","src":"4074:6:13"}],"id":2663,"name":"BinaryOperation","src":"4060:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"bytes memory","value":"value"},"id":2664,"name":"Identifier","src":"4082:5:13"}],"id":2665,"name":"MemberAccess","src":"4082:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2666,"name":"Literal","src":"4098:1:13"}],"id":2667,"name":"BinaryOperation","src":"4082:17:13"}],"id":2668,"name":"FunctionCall","src":"4012:88:13"}],"id":2669,"name":"ExpressionStatement","src":"4012:88:13"}],"id":2670,"name":"Block","src":"3998:113:13"}],"id":2671,"name":"IfStatement","src":"3977:134:13"}],"id":2672,"name":"Block","src":"2938:1179:13"}],"id":2673,"name":"FunctionDefinition","src":"2854:1263:13"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":2926,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2697,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2674,"name":"ElementaryTypeName","src":"4538:7:13"}],"id":2675,"name":"VariableDeclaration","src":"4538:12:13"},{"attributes":{"constant":false,"name":"name","scope":2697,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2676,"name":"ElementaryTypeName","src":"4552:7:13"}],"id":2677,"name":"VariableDeclaration","src":"4552:12:13"},{"attributes":{"constant":false,"name":"resource","scope":2697,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2678,"name":"ElementaryTypeName","src":"4566:6:13"}],"id":2679,"name":"VariableDeclaration","src":"4566:15:13"}],"id":2680,"name":"ParameterList","src":"4537:45:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2697,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2681,"name":"ElementaryTypeName","src":"4604:5:13"}],"id":2682,"name":"VariableDeclaration","src":"4604:12:13"}],"id":2683,"name":"ParameterList","src":"4603:14:13"},{"children":[{"attributes":{"functionReturnParameters":2683},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2684,"name":"Identifier","src":"4635:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2675,"type":"bytes32","value":"node"},"id":2685,"name":"Identifier","src":"4643:4:13"}],"id":2686,"name":"IndexAccess","src":"4635:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2687,"name":"Identifier","src":"4649:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2675,"type":"bytes32","value":"node"},"id":2688,"name":"Identifier","src":"4658:4:13"}],"id":2689,"name":"IndexAccess","src":"4649:14:13"}],"id":2690,"name":"IndexAccess","src":"4635:29:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2677,"type":"bytes32","value":"name"},"id":2691,"name":"Identifier","src":"4665:4:13"}],"id":2692,"name":"IndexAccess","src":"4635:35:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2679,"type":"uint16","value":"resource"},"id":2693,"name":"Identifier","src":"4671:8:13"}],"id":2694,"name":"IndexAccess","src":"4635:45:13"}],"id":2695,"name":"Return","src":"4628:52:13"}],"id":2696,"name":"Block","src":"4618:69:13"}],"id":2697,"name":"FunctionDefinition","src":"4519:168:13"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":2926,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2720,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2698,"name":"ElementaryTypeName","src":"4924:7:13"}],"id":2699,"name":"VariableDeclaration","src":"4924:12:13"},{"attributes":{"constant":false,"name":"name","scope":2720,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2700,"name":"ElementaryTypeName","src":"4938:7:13"}],"id":2701,"name":"VariableDeclaration","src":"4938:12:13"}],"id":2702,"name":"ParameterList","src":"4923:28:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2720,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2703,"name":"ElementaryTypeName","src":"4973:4:13"}],"id":2704,"name":"VariableDeclaration","src":"4973:4:13"}],"id":2705,"name":"ParameterList","src":"4972:6:13"},{"children":[{"attributes":{"functionReturnParameters":2705},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2706,"name":"Identifier","src":"4997:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2699,"type":"bytes32","value":"node"},"id":2707,"name":"Identifier","src":"5014:4:13"}],"id":2708,"name":"IndexAccess","src":"4997:22:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2709,"name":"Identifier","src":"5020:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2699,"type":"bytes32","value":"node"},"id":2710,"name":"Identifier","src":"5029:4:13"}],"id":2711,"name":"IndexAccess","src":"5020:14:13"}],"id":2712,"name":"IndexAccess","src":"4997:38:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2701,"type":"bytes32","value":"name"},"id":2713,"name":"Identifier","src":"5036:4:13"}],"id":2714,"name":"IndexAccess","src":"4997:44:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2715,"name":"Literal","src":"5045:1:13"}],"id":2716,"name":"BinaryOperation","src":"4997:49:13"}],"id":2717,"name":"TupleExpression","src":"4996:51:13"}],"id":2718,"name":"Return","src":"4989:58:13"}],"id":2719,"name":"Block","src":"4979:75:13"}],"id":2720,"name":"FunctionDefinition","src":"4901:153:13"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":2926,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2738,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2721,"name":"ElementaryTypeName","src":"5215:7:13"}],"id":2722,"name":"VariableDeclaration","src":"5215:12:13"}],"id":2723,"name":"ParameterList","src":"5214:14:13"},{"attributes":{"parameters":[null]},"children":[],"id":2727,"name":"ParameterList","src":"5253:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2724,"name":"Identifier","src":"5236:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2722,"type":"bytes32","value":"node"},"id":2725,"name":"Identifier","src":"5247:4:13"}],"id":2726,"name":"ModifierInvocation","src":"5236:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2728,"name":"Identifier","src":"5263:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2722,"type":"bytes32","value":"node"},"id":2729,"name":"Identifier","src":"5272:4:13"}],"id":2730,"name":"IndexAccess","src":"5263:14:13"}],"id":2731,"name":"UnaryOperation","src":"5263:16:13"}],"id":2732,"name":"ExpressionStatement","src":"5263:16:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2474,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":2733,"name":"Identifier","src":"5294:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2722,"type":"bytes32","value":"node"},"id":2734,"name":"Identifier","src":"5309:4:13"}],"id":2735,"name":"FunctionCall","src":"5294:20:13"}],"id":2736,"name":"EmitStatement","src":"5289:25:13"}],"id":2737,"name":"Block","src":"5253:68:13"}],"id":2738,"name":"FunctionDefinition","src":"5193:128:13"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":2926,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2767,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2739,"name":"ElementaryTypeName","src":"5562:7:13"}],"id":2740,"name":"VariableDeclaration","src":"5562:12:13"},{"attributes":{"constant":false,"name":"hash","scope":2767,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2741,"name":"ElementaryTypeName","src":"5576:5:13"}],"id":2742,"name":"VariableDeclaration","src":"5576:19:13"}],"id":2743,"name":"ParameterList","src":"5561:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":2747,"name":"ParameterList","src":"5623:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2744,"name":"Identifier","src":"5606:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2740,"type":"bytes32","value":"node"},"id":2745,"name":"Identifier","src":"5617:4:13"}],"id":2746,"name":"ModifierInvocation","src":"5606:16:13"},{"children":[{"attributes":{"assignments":[2749]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":2766,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2748,"name":"ElementaryTypeName","src":"5633:5:13"}],"id":2749,"name":"VariableDeclaration","src":"5633:20:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2486,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2750,"name":"Identifier","src":"5656:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2740,"type":"bytes32","value":"node"},"id":2751,"name":"Identifier","src":"5667:4:13"}],"id":2752,"name":"IndexAccess","src":"5656:16:13"}],"id":2753,"name":"VariableDeclarationStatement","src":"5633:39:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2486,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2754,"name":"Identifier","src":"5682:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2740,"type":"bytes32","value":"node"},"id":2755,"name":"Identifier","src":"5693:4:13"}],"id":2756,"name":"IndexAccess","src":"5682:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes calldata","value":"hash"},"id":2757,"name":"Identifier","src":"5701:4:13"}],"id":2758,"name":"Assignment","src":"5682:23:13"}],"id":2759,"name":"ExpressionStatement","src":"5682:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":2760,"name":"Identifier","src":"5720:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2740,"type":"bytes32","value":"node"},"id":2761,"name":"Identifier","src":"5739:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2749,"type":"bytes memory","value":"oldhash"},"id":2762,"name":"Identifier","src":"5745:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes calldata","value":"hash"},"id":2763,"name":"Identifier","src":"5754:4:13"}],"id":2764,"name":"FunctionCall","src":"5720:39:13"}],"id":2765,"name":"EmitStatement","src":"5715:44:13"}],"id":2766,"name":"Block","src":"5623:143:13"}],"id":2767,"name":"FunctionDefinition","src":"5541:225:13"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":2926,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2779,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2768,"name":"ElementaryTypeName","src":"5938:7:13"}],"id":2769,"name":"VariableDeclaration","src":"5938:12:13"}],"id":2770,"name":"ParameterList","src":"5937:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2779,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2771,"name":"ElementaryTypeName","src":"5975:5:13"}],"id":2772,"name":"VariableDeclaration","src":"5975:12:13"}],"id":2773,"name":"ParameterList","src":"5974:14:13"},{"children":[{"attributes":{"functionReturnParameters":2773},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2486,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2774,"name":"Identifier","src":"6006:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2769,"type":"bytes32","value":"node"},"id":2775,"name":"Identifier","src":"6017:4:13"}],"id":2776,"name":"IndexAccess","src":"6006:16:13"}],"id":2777,"name":"Return","src":"5999:23:13"}],"id":2778,"name":"Block","src":"5989:40:13"}],"id":2779,"name":"FunctionDefinition","src":"5920:109:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2926,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2800,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2780,"name":"ElementaryTypeName","src":"6062:6:13"}],"id":2781,"name":"VariableDeclaration","src":"6062:18:13"}],"id":2782,"name":"ParameterList","src":"6061:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2800,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2783,"name":"ElementaryTypeName","src":"6102:4:13"}],"id":2784,"name":"VariableDeclaration","src":"6102:4:13"}],"id":2785,"name":"ParameterList","src":"6101:6:13"},{"children":[{"attributes":{"functionReturnParameters":2785},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2781,"type":"bytes4","value":"interfaceID"},"id":2786,"name":"Identifier","src":"6125:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":2787,"name":"Identifier","src":"6140:23:13"}],"id":2788,"name":"BinaryOperation","src":"6125:38:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2781,"type":"bytes4","value":"interfaceID"},"id":2789,"name":"Identifier","src":"6182:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2452,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":2790,"name":"Identifier","src":"6197:21:13"}],"id":2791,"name":"BinaryOperation","src":"6182:36:13"}],"id":2792,"name":"BinaryOperation","src":"6125:93:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4825,"type":"contract super DNSResolver","value":"super"},"id":2793,"name":"Identifier","src":"6237:5:13"}],"id":2794,"name":"MemberAccess","src":"6237:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2781,"type":"bytes4","value":"interfaceID"},"id":2795,"name":"Identifier","src":"6261:11:13"}],"id":2796,"name":"FunctionCall","src":"6237:36:13"}],"id":2797,"name":"BinaryOperation","src":"6125:148:13"}],"id":2798,"name":"Return","src":"6118:155:13"}],"id":2799,"name":"Block","src":"6108:172:13"}],"id":2800,"name":"FunctionDefinition","src":"6035:245:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":2926,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2925,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2801,"name":"ElementaryTypeName","src":"6316:7:13"}],"id":2802,"name":"VariableDeclaration","src":"6316:12:13"},{"attributes":{"constant":false,"name":"name","scope":2925,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2803,"name":"ElementaryTypeName","src":"6338:5:13"}],"id":2804,"name":"VariableDeclaration","src":"6338:17:13"},{"attributes":{"constant":false,"name":"resource","scope":2925,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2805,"name":"ElementaryTypeName","src":"6365:6:13"}],"id":2806,"name":"VariableDeclaration","src":"6365:15:13"},{"attributes":{"constant":false,"name":"data","scope":2925,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2807,"name":"ElementaryTypeName","src":"6390:5:13"}],"id":2808,"name":"VariableDeclaration","src":"6390:17:13"},{"attributes":{"constant":false,"name":"offset","scope":2925,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2809,"name":"ElementaryTypeName","src":"6417:7:13"}],"id":2810,"name":"VariableDeclaration","src":"6417:14:13"},{"attributes":{"constant":false,"name":"size","scope":2925,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2811,"name":"ElementaryTypeName","src":"6441:7:13"}],"id":2812,"name":"VariableDeclaration","src":"6441:12:13"},{"attributes":{"constant":false,"name":"deleteRecord","scope":2925,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2813,"name":"ElementaryTypeName","src":"6463:4:13"}],"id":2814,"name":"VariableDeclaration","src":"6463:17:13"}],"id":2815,"name":"ParameterList","src":"6306:175:13"},{"attributes":{"parameters":[null]},"children":[],"id":2816,"name":"ParameterList","src":"6494:0:13"},{"children":[{"attributes":{"assignments":[2818]},"children":[{"attributes":{"constant":false,"name":"version","scope":2924,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2817,"name":"ElementaryTypeName","src":"6504:7:13"}],"id":2818,"name":"VariableDeclaration","src":"6504:15:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2819,"name":"Identifier","src":"6522:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2820,"name":"Identifier","src":"6531:4:13"}],"id":2821,"name":"IndexAccess","src":"6522:14:13"}],"id":2822,"name":"VariableDeclarationStatement","src":"6504:32:13"},{"attributes":{"assignments":[2824]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":2924,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2823,"name":"ElementaryTypeName","src":"6546:7:13"}],"id":2824,"name":"VariableDeclaration","src":"6546:16:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2825,"name":"Identifier","src":"6565:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2804,"type":"bytes memory","value":"name"},"id":2826,"name":"Identifier","src":"6575:4:13"}],"id":2827,"name":"FunctionCall","src":"6565:15:13"}],"id":2828,"name":"VariableDeclarationStatement","src":"6546:34:13"},{"attributes":{"assignments":[2830]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":2924,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2829,"name":"ElementaryTypeName","src":"6590:5:13"}],"id":2830,"name":"VariableDeclaration","src":"6590:19:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":4542,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2808,"type":"bytes memory","value":"data"},"id":2831,"name":"Identifier","src":"6612:4:13"}],"id":2832,"name":"MemberAccess","src":"6612:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2810,"type":"uint256","value":"offset"},"id":2833,"name":"Identifier","src":"6627:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2812,"type":"uint256","value":"size"},"id":2834,"name":"Identifier","src":"6635:4:13"}],"id":2835,"name":"FunctionCall","src":"6612:28:13"}],"id":2836,"name":"VariableDeclarationStatement","src":"6590:50:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2814,"type":"bool","value":"deleteRecord"},"id":2837,"name":"Identifier","src":"6654:12:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2838,"name":"Identifier","src":"6686:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2839,"name":"Identifier","src":"6694:4:13"}],"id":2840,"name":"IndexAccess","src":"6686:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2841,"name":"Identifier","src":"6700:7:13"}],"id":2842,"name":"IndexAccess","src":"6686:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2843,"name":"Identifier","src":"6709:8:13"}],"id":2844,"name":"IndexAccess","src":"6686:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2845,"name":"Identifier","src":"6719:8:13"}],"id":2846,"name":"IndexAccess","src":"6686:42:13"}],"id":2847,"name":"MemberAccess","src":"6686:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2848,"name":"Literal","src":"6739:1:13"}],"id":2849,"name":"BinaryOperation","src":"6686:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2850,"name":"Identifier","src":"6760:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2851,"name":"Identifier","src":"6777:4:13"}],"id":2854,"name":"IndexAccess","src":"6760:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2852,"name":"Identifier","src":"6783:7:13"}],"id":2855,"name":"IndexAccess","src":"6760:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2853,"name":"Identifier","src":"6792:8:13"}],"id":2856,"name":"IndexAccess","src":"6760:41:13"}],"id":2857,"name":"UnaryOperation","src":"6760:43:13"}],"id":2858,"name":"ExpressionStatement","src":"6760:43:13"}],"id":2859,"name":"Block","src":"6742:76:13"}],"id":2860,"name":"IfStatement","src":"6682:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2861,"name":"Identifier","src":"6838:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2862,"name":"Identifier","src":"6846:4:13"}],"id":2863,"name":"IndexAccess","src":"6838:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2864,"name":"Identifier","src":"6852:7:13"}],"id":2865,"name":"IndexAccess","src":"6838:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2866,"name":"Identifier","src":"6861:8:13"}],"id":2867,"name":"IndexAccess","src":"6838:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2868,"name":"Identifier","src":"6871:8:13"}],"id":2869,"name":"IndexAccess","src":"6838:42:13"}],"id":2870,"name":"TupleExpression","src":"6837:44:13"}],"id":2871,"name":"UnaryOperation","src":"6831:50:13"}],"id":2872,"name":"ExpressionStatement","src":"6831:50:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":2873,"name":"Identifier","src":"6900:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2874,"name":"Identifier","src":"6917:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2804,"type":"bytes memory","value":"name"},"id":2875,"name":"Identifier","src":"6923:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2876,"name":"Identifier","src":"6929:8:13"}],"id":2877,"name":"FunctionCall","src":"6900:38:13"}],"id":2878,"name":"EmitStatement","src":"6895:43:13"}],"id":2879,"name":"Block","src":"6668:281:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2880,"name":"Identifier","src":"6973:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2881,"name":"Identifier","src":"6981:4:13"}],"id":2882,"name":"IndexAccess","src":"6973:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2883,"name":"Identifier","src":"6987:7:13"}],"id":2884,"name":"IndexAccess","src":"6973:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2885,"name":"Identifier","src":"6996:8:13"}],"id":2886,"name":"IndexAccess","src":"6973:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2887,"name":"Identifier","src":"7006:8:13"}],"id":2888,"name":"IndexAccess","src":"6973:42:13"}],"id":2889,"name":"MemberAccess","src":"6973:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2890,"name":"Literal","src":"7026:1:13"}],"id":2891,"name":"BinaryOperation","src":"6973:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2892,"name":"Identifier","src":"7047:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2893,"name":"Identifier","src":"7064:4:13"}],"id":2896,"name":"IndexAccess","src":"7047:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2894,"name":"Identifier","src":"7070:7:13"}],"id":2897,"name":"IndexAccess","src":"7047:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2895,"name":"Identifier","src":"7079:8:13"}],"id":2898,"name":"IndexAccess","src":"7047:41:13"}],"id":2899,"name":"UnaryOperation","src":"7047:43:13"}],"id":2900,"name":"ExpressionStatement","src":"7047:43:13"}],"id":2901,"name":"Block","src":"7029:76:13"}],"id":2902,"name":"IfStatement","src":"6969:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2903,"name":"Identifier","src":"7118:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2904,"name":"Identifier","src":"7126:4:13"}],"id":2908,"name":"IndexAccess","src":"7118:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2905,"name":"Identifier","src":"7132:7:13"}],"id":2909,"name":"IndexAccess","src":"7118:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2906,"name":"Identifier","src":"7141:8:13"}],"id":2910,"name":"IndexAccess","src":"7118:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2907,"name":"Identifier","src":"7151:8:13"}],"id":2911,"name":"IndexAccess","src":"7118:42:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2830,"type":"bytes memory","value":"rrData"},"id":2912,"name":"Identifier","src":"7163:6:13"}],"id":2913,"name":"Assignment","src":"7118:51:13"}],"id":2914,"name":"ExpressionStatement","src":"7118:51:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2462,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":2915,"name":"Identifier","src":"7188:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2916,"name":"Identifier","src":"7205:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2804,"type":"bytes memory","value":"name"},"id":2917,"name":"Identifier","src":"7211:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2918,"name":"Identifier","src":"7217:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2830,"type":"bytes memory","value":"rrData"},"id":2919,"name":"Identifier","src":"7227:6:13"}],"id":2920,"name":"FunctionCall","src":"7188:46:13"}],"id":2921,"name":"EmitStatement","src":"7183:51:13"}],"id":2922,"name":"Block","src":"6955:290:13"}],"id":2923,"name":"IfStatement","src":"6650:595:13"}],"id":2924,"name":"Block","src":"6494:757:13"}],"id":2925,"name":"FunctionDefinition","src":"6286:965:13"}],"id":2926,"name":"ContractDefinition","src":"81:7172:13"}],"id":2927,"name":"SourceUnit","src":"0:7253:13"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[3113]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2928,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3114,"symbolAliases":[null],"unitAlias":""},"id":2929,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":2366,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":3114,"symbolAliases":[null],"unitAlias":""},"id":2930,"name":"ImportDirective","src":"55:28:14"},{"attributes":{"contractDependencies":[2365,3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3113,2365,3426],"name":"InterfaceResolver","scope":3114},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2931,"name":"UserDefinedTypeName","src":"115:12:14"}],"id":2932,"name":"InheritanceSpecifier","src":"115:12:14"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":2365,"type":"contract AddrResolver"},"id":2933,"name":"UserDefinedTypeName","src":"129:12:14"}],"id":2934,"name":"InheritanceSpecifier","src":"129:12:14"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":3113,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2935,"name":"ElementaryTypeName","src":"148:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":2936,"name":"ElementaryTypeNameExpression","src":"197:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2937,"name":"Identifier","src":"204:9:14"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":2938,"name":"Literal","src":"214:38:14"}],"id":2939,"name":"FunctionCall","src":"204:49:14"}],"id":2940,"name":"FunctionCall","src":"197:57:14"}],"id":2941,"name":"VariableDeclaration","src":"148:106:14"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":3113,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2942,"name":"ElementaryTypeName","src":"260:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":2943,"name":"Literal","src":"304:10:14"}],"id":2944,"name":"VariableDeclaration","src":"260:54:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2952,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2945,"name":"ElementaryTypeName","src":"344:7:14"}],"id":2946,"name":"VariableDeclaration","src":"344:20:14"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":2952,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2947,"name":"ElementaryTypeName","src":"366:6:14"}],"id":2948,"name":"VariableDeclaration","src":"366:26:14"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":2952,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2949,"name":"ElementaryTypeName","src":"394:7:14"}],"id":2950,"name":"VariableDeclaration","src":"394:19:14"}],"id":2951,"name":"ParameterList","src":"343:71:14"}],"id":2952,"name":"EventDefinition","src":"321:94:14"},{"attributes":{"constant":false,"name":"interfaces","scope":3113,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2953,"name":"ElementaryTypeName","src":"429:7:14"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2954,"name":"ElementaryTypeName","src":"446:6:14"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2955,"name":"ElementaryTypeName","src":"454:7:14"}],"id":2956,"name":"Mapping","src":"438:24:14"}],"id":2957,"name":"Mapping","src":"421:42:14"}],"id":2958,"name":"VariableDeclaration","src":"421:53:14"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2985,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2959,"name":"ElementaryTypeName","src":"880:7:14"}],"id":2960,"name":"VariableDeclaration","src":"880:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":2985,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2961,"name":"ElementaryTypeName","src":"894:6:14"}],"id":2962,"name":"VariableDeclaration","src":"894:18:14"},{"attributes":{"constant":false,"name":"implementer","scope":2985,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2963,"name":"ElementaryTypeName","src":"914:7:14"}],"id":2964,"name":"VariableDeclaration","src":"914:19:14"}],"id":2965,"name":"ParameterList","src":"879:55:14"},{"attributes":{"parameters":[null]},"children":[],"id":2969,"name":"ParameterList","src":"961:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2966,"name":"Identifier","src":"944:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2960,"type":"bytes32","value":"node"},"id":2967,"name":"Identifier","src":"955:4:14"}],"id":2968,"name":"ModifierInvocation","src":"944:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2958,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":2970,"name":"Identifier","src":"971:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2960,"type":"bytes32","value":"node"},"id":2971,"name":"Identifier","src":"982:4:14"}],"id":2973,"name":"IndexAccess","src":"971:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2962,"type":"bytes4","value":"interfaceID"},"id":2972,"name":"Identifier","src":"988:11:14"}],"id":2974,"name":"IndexAccess","src":"971:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"address","value":"implementer"},"id":2975,"name":"Identifier","src":"1003:11:14"}],"id":2976,"name":"Assignment","src":"971:43:14"}],"id":2977,"name":"ExpressionStatement","src":"971:43:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2952,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":2978,"name":"Identifier","src":"1029:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2960,"type":"bytes32","value":"node"},"id":2979,"name":"Identifier","src":"1046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2962,"type":"bytes4","value":"interfaceID"},"id":2980,"name":"Identifier","src":"1052:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"address","value":"implementer"},"id":2981,"name":"Identifier","src":"1065:11:14"}],"id":2982,"name":"FunctionCall","src":"1029:48:14"}],"id":2983,"name":"EmitStatement","src":"1024:53:14"}],"id":2984,"name":"Block","src":"961:123:14"}],"id":2985,"name":"FunctionDefinition","src":"858:226:14"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3095,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2986,"name":"ElementaryTypeName","src":"1751:7:14"}],"id":2987,"name":"VariableDeclaration","src":"1751:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":3095,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2988,"name":"ElementaryTypeName","src":"1765:6:14"}],"id":2989,"name":"VariableDeclaration","src":"1765:18:14"}],"id":2990,"name":"ParameterList","src":"1750:34:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":3095,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2991,"name":"ElementaryTypeName","src":"1808:7:14"}],"id":2992,"name":"VariableDeclaration","src":"1808:7:14"}],"id":2993,"name":"ParameterList","src":"1807:9:14"},{"children":[{"attributes":{"assignments":[2995]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":3094,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2994,"name":"ElementaryTypeName","src":"1827:7:14"}],"id":2995,"name":"VariableDeclaration","src":"1827:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2958,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":2996,"name":"Identifier","src":"1849:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2987,"type":"bytes32","value":"node"},"id":2997,"name":"Identifier","src":"1860:4:14"}],"id":2998,"name":"IndexAccess","src":"1849:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2989,"type":"bytes4","value":"interfaceID"},"id":2999,"name":"Identifier","src":"1866:11:14"}],"id":3000,"name":"IndexAccess","src":"1849:29:14"}],"id":3001,"name":"VariableDeclarationStatement","src":"1827:51:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2995,"type":"address","value":"implementer"},"id":3002,"name":"Identifier","src":"1891:11:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3003,"name":"ElementaryTypeNameExpression","src":"1906:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3004,"name":"Literal","src":"1914:1:14"}],"id":3005,"name":"FunctionCall","src":"1906:10:14"}],"id":3006,"name":"BinaryOperation","src":"1891:25:14"},{"children":[{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2995,"type":"address","value":"implementer"},"id":3007,"name":"Identifier","src":"1939:11:14"}],"id":3008,"name":"Return","src":"1932:18:14"}],"id":3009,"name":"Block","src":"1918:43:14"}],"id":3010,"name":"IfStatement","src":"1888:73:14"},{"attributes":{"assignments":[3012]},"children":[{"attributes":{"constant":false,"name":"a","scope":3094,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3011,"name":"ElementaryTypeName","src":"1971:7:14"}],"id":3012,"name":"VariableDeclaration","src":"1971:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[2288,2343],"referencedDeclaration":2288,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":3013,"name":"Identifier","src":"1983:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2987,"type":"bytes32","value":"node"},"id":3014,"name":"Identifier","src":"1988:4:14"}],"id":3015,"name":"FunctionCall","src":"1983:10:14"}],"id":3016,"name":"VariableDeclarationStatement","src":"1971:22:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3012,"type":"address","value":"a"},"id":3017,"name":"Identifier","src":"2006:1:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3018,"name":"ElementaryTypeNameExpression","src":"2011:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3019,"name":"Literal","src":"2019:1:14"}],"id":3020,"name":"FunctionCall","src":"2011:10:14"}],"id":3021,"name":"BinaryOperation","src":"2006:15:14"},{"children":[{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3022,"name":"ElementaryTypeNameExpression","src":"2044:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3023,"name":"Literal","src":"2052:1:14"}],"id":3024,"name":"FunctionCall","src":"2044:10:14"}],"id":3025,"name":"Return","src":"2037:17:14"}],"id":3026,"name":"Block","src":"2023:42:14"}],"id":3027,"name":"IfStatement","src":"2003:62:14"},{"attributes":{"assignments":[3029,3031]},"children":[{"attributes":{"constant":false,"name":"success","scope":3094,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3028,"name":"ElementaryTypeName","src":"2076:4:14"}],"id":3029,"name":"VariableDeclaration","src":"2076:12:14"},{"attributes":{"constant":false,"name":"returnData","scope":3094,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3030,"name":"ElementaryTypeName","src":"2090:5:14"}],"id":3031,"name":"VariableDeclaration","src":"2090:23:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3012,"type":"address","value":"a"},"id":3032,"name":"Identifier","src":"2117:1:14"}],"id":3033,"name":"MemberAccess","src":"2117:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":3034,"name":"Identifier","src":"2130:3:14"}],"id":3035,"name":"MemberAccess","src":"2130:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":3036,"name":"Literal","src":"2154:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2944,"type":"bytes4","value":"INTERFACE_META_ID"},"id":3037,"name":"Identifier","src":"2183:17:14"}],"id":3038,"name":"FunctionCall","src":"2130:71:14"}],"id":3039,"name":"FunctionCall","src":"2117:85:14"}],"id":3040,"name":"VariableDeclarationStatement","src":"2075:127:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3029,"type":"bool","value":"success"},"id":3041,"name":"Identifier","src":"2216:7:14"}],"id":3042,"name":"UnaryOperation","src":"2215:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3043,"name":"Identifier","src":"2227:10:14"}],"id":3044,"name":"MemberAccess","src":"2227:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3045,"name":"Literal","src":"2247:2:14"}],"id":3046,"name":"BinaryOperation","src":"2227:22:14"}],"id":3047,"name":"BinaryOperation","src":"2215:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3048,"name":"Identifier","src":"2253:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":3049,"name":"Literal","src":"2264:2:14"}],"id":3050,"name":"IndexAccess","src":"2253:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3051,"name":"Literal","src":"2271:1:14"}],"id":3052,"name":"BinaryOperation","src":"2253:19:14"}],"id":3053,"name":"BinaryOperation","src":"2215:57:14"},{"children":[{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3054,"name":"ElementaryTypeNameExpression","src":"2342:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3055,"name":"Literal","src":"2350:1:14"}],"id":3056,"name":"FunctionCall","src":"2342:10:14"}],"id":3057,"name":"Return","src":"2335:17:14"}],"id":3058,"name":"Block","src":"2274:89:14"}],"id":3059,"name":"IfStatement","src":"2212:151:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3029,"type":"bool","value":"success"},"id":3060,"name":"Identifier","src":"2374:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3061,"name":"Identifier","src":"2383:10:14"}],"id":3062,"name":"TupleExpression","src":"2373:21:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3012,"type":"address","value":"a"},"id":3063,"name":"Identifier","src":"2397:1:14"}],"id":3064,"name":"MemberAccess","src":"2397:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":3065,"name":"Identifier","src":"2410:3:14"}],"id":3066,"name":"MemberAccess","src":"2410:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":3067,"name":"Literal","src":"2434:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2989,"type":"bytes4","value":"interfaceID"},"id":3068,"name":"Identifier","src":"2463:11:14"}],"id":3069,"name":"FunctionCall","src":"2410:65:14"}],"id":3070,"name":"FunctionCall","src":"2397:79:14"}],"id":3071,"name":"Assignment","src":"2373:103:14"}],"id":3072,"name":"ExpressionStatement","src":"2373:103:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3029,"type":"bool","value":"success"},"id":3073,"name":"Identifier","src":"2490:7:14"}],"id":3074,"name":"UnaryOperation","src":"2489:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3075,"name":"Identifier","src":"2501:10:14"}],"id":3076,"name":"MemberAccess","src":"2501:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3077,"name":"Literal","src":"2521:2:14"}],"id":3078,"name":"BinaryOperation","src":"2501:22:14"}],"id":3079,"name":"BinaryOperation","src":"2489:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3080,"name":"Identifier","src":"2527:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":3081,"name":"Literal","src":"2538:2:14"}],"id":3082,"name":"IndexAccess","src":"2527:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3083,"name":"Literal","src":"2545:1:14"}],"id":3084,"name":"BinaryOperation","src":"2527:19:14"}],"id":3085,"name":"BinaryOperation","src":"2489:57:14"},{"children":[{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3086,"name":"ElementaryTypeNameExpression","src":"2628:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3087,"name":"Literal","src":"2636:1:14"}],"id":3088,"name":"FunctionCall","src":"2628:10:14"}],"id":3089,"name":"Return","src":"2621:17:14"}],"id":3090,"name":"Block","src":"2548:101:14"}],"id":3091,"name":"IfStatement","src":"2486:163:14"},{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3012,"type":"address","value":"a"},"id":3092,"name":"Identifier","src":"2666:1:14"}],"id":3093,"name":"Return","src":"2659:8:14"}],"id":3094,"name":"Block","src":"1817:857:14"}],"id":3095,"name":"FunctionDefinition","src":"1721:953:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3113,"stateMutability":"pure","superFunction":2364,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3112,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3096,"name":"ElementaryTypeName","src":"2707:6:14"}],"id":3097,"name":"VariableDeclaration","src":"2707:18:14"}],"id":3098,"name":"ParameterList","src":"2706:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":3112,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3099,"name":"ElementaryTypeName","src":"2747:4:14"}],"id":3100,"name":"VariableDeclaration","src":"2747:4:14"}],"id":3101,"name":"ParameterList","src":"2746:6:14"},{"children":[{"attributes":{"functionReturnParameters":3101},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3097,"type":"bytes4","value":"interfaceID"},"id":3102,"name":"Identifier","src":"2770:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2941,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":3103,"name":"Identifier","src":"2785:22:14"}],"id":3104,"name":"BinaryOperation","src":"2770:37:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":2364,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4827,"type":"contract super InterfaceResolver","value":"super"},"id":3105,"name":"Identifier","src":"2811:5:14"}],"id":3106,"name":"MemberAccess","src":"2811:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3097,"type":"bytes4","value":"interfaceID"},"id":3107,"name":"Identifier","src":"2835:11:14"}],"id":3108,"name":"FunctionCall","src":"2811:36:14"}],"id":3109,"name":"BinaryOperation","src":"2770:77:14"}],"id":3110,"name":"Return","src":"2763:84:14"}],"id":3111,"name":"Block","src":"2753:101:14"}],"id":3112,"name":"FunctionDefinition","src":"2680:174:14"}],"id":3113,"name":"ContractDefinition","src":"85:2771:14"}],"id":3114,"name":"SourceUnit","src":"0:2857:14"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[3183]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3115,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3184,"symbolAliases":[null],"unitAlias":""},"id":3116,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3183,3426],"name":"NameResolver","scope":3184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":3117,"name":"UserDefinedTypeName","src":"81:12:15"}],"id":3118,"name":"InheritanceSpecifier","src":"81:12:15"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":3183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3119,"name":"ElementaryTypeName","src":"100:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":3120,"name":"Literal","src":"144:10:15"}],"id":3121,"name":"VariableDeclaration","src":"100:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":3127,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3122,"name":"ElementaryTypeName","src":"179:7:15"}],"id":3123,"name":"VariableDeclaration","src":"179:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":3127,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3124,"name":"ElementaryTypeName","src":"201:6:15"}],"id":3125,"name":"VariableDeclaration","src":"201:11:15"}],"id":3126,"name":"ParameterList","src":"178:35:15"}],"id":3127,"name":"EventDefinition","src":"161:53:15"},{"attributes":{"constant":false,"name":"names","scope":3183,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3128,"name":"ElementaryTypeName","src":"228:7:15"},{"attributes":{"name":"string","type":"string"},"id":3129,"name":"ElementaryTypeName","src":"237:6:15"}],"id":3130,"name":"Mapping","src":"220:24:15"}],"id":3131,"name":"VariableDeclaration","src":"220:30:15"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":3183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3153,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3132,"name":"ElementaryTypeName","src":"509:7:15"}],"id":3133,"name":"VariableDeclaration","src":"509:12:15"},{"attributes":{"constant":false,"name":"name","scope":3153,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3134,"name":"ElementaryTypeName","src":"523:6:15"}],"id":3135,"name":"VariableDeclaration","src":"523:20:15"}],"id":3136,"name":"ParameterList","src":"508:36:15"},{"attributes":{"parameters":[null]},"children":[],"id":3140,"name":"ParameterList","src":"571:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":3137,"name":"Identifier","src":"554:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3133,"type":"bytes32","value":"node"},"id":3138,"name":"Identifier","src":"565:4:15"}],"id":3139,"name":"ModifierInvocation","src":"554:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3131,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":3141,"name":"Identifier","src":"581:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3133,"type":"bytes32","value":"node"},"id":3142,"name":"Identifier","src":"587:4:15"}],"id":3143,"name":"IndexAccess","src":"581:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3135,"type":"string calldata","value":"name"},"id":3144,"name":"Identifier","src":"595:4:15"}],"id":3145,"name":"Assignment","src":"581:18:15"}],"id":3146,"name":"ExpressionStatement","src":"581:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":3147,"name":"Identifier","src":"614:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3133,"type":"bytes32","value":"node"},"id":3148,"name":"Identifier","src":"626:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3135,"type":"string calldata","value":"name"},"id":3149,"name":"Identifier","src":"632:4:15"}],"id":3150,"name":"FunctionCall","src":"614:23:15"}],"id":3151,"name":"EmitStatement","src":"609:28:15"}],"id":3152,"name":"Block","src":"571:73:15"}],"id":3153,"name":"FunctionDefinition","src":"492:152:15"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":3183,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3165,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3154,"name":"ElementaryTypeName","src":"858:7:15"}],"id":3155,"name":"VariableDeclaration","src":"858:12:15"}],"id":3156,"name":"ParameterList","src":"857:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":3165,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3157,"name":"ElementaryTypeName","src":"895:6:15"}],"id":3158,"name":"VariableDeclaration","src":"895:13:15"}],"id":3159,"name":"ParameterList","src":"894:15:15"},{"children":[{"attributes":{"functionReturnParameters":3159},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3131,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":3160,"name":"Identifier","src":"927:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3155,"type":"bytes32","value":"node"},"id":3161,"name":"Identifier","src":"933:4:15"}],"id":3162,"name":"IndexAccess","src":"927:11:15"}],"id":3163,"name":"Return","src":"920:18:15"}],"id":3164,"name":"Block","src":"910:35:15"}],"id":3165,"name":"FunctionDefinition","src":"844:101:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3183,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3182,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3166,"name":"ElementaryTypeName","src":"978:6:15"}],"id":3167,"name":"VariableDeclaration","src":"978:18:15"}],"id":3168,"name":"ParameterList","src":"977:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":3182,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3169,"name":"ElementaryTypeName","src":"1018:4:15"}],"id":3170,"name":"VariableDeclaration","src":"1018:4:15"}],"id":3171,"name":"ParameterList","src":"1017:6:15"},{"children":[{"attributes":{"functionReturnParameters":3171},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"bytes4","value":"interfaceID"},"id":3172,"name":"Identifier","src":"1041:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3121,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":3173,"name":"Identifier","src":"1056:17:15"}],"id":3174,"name":"BinaryOperation","src":"1041:32:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4829,"type":"contract super NameResolver","value":"super"},"id":3175,"name":"Identifier","src":"1077:5:15"}],"id":3176,"name":"MemberAccess","src":"1077:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"bytes4","value":"interfaceID"},"id":3177,"name":"Identifier","src":"1101:11:15"}],"id":3178,"name":"FunctionCall","src":"1077:36:15"}],"id":3179,"name":"BinaryOperation","src":"1041:72:15"}],"id":3180,"name":"Return","src":"1034:79:15"}],"id":3181,"name":"Block","src":"1024:96:15"}],"id":3182,"name":"FunctionDefinition","src":"951:169:15"}],"id":3183,"name":"ContractDefinition","src":"56:1066:15"}],"id":3184,"name":"SourceUnit","src":"0:1123:15"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[3274]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3185,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3275,"symbolAliases":[null],"unitAlias":""},"id":3186,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3274,3426],"name":"PubkeyResolver","scope":3275},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":3187,"name":"UserDefinedTypeName","src":"83:12:16"}],"id":3188,"name":"InheritanceSpecifier","src":"83:12:16"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":3274,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3189,"name":"ElementaryTypeName","src":"102:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":3190,"name":"Literal","src":"148:10:16"}],"id":3191,"name":"VariableDeclaration","src":"102:56:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":3199,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3192,"name":"ElementaryTypeName","src":"185:7:16"}],"id":3193,"name":"VariableDeclaration","src":"185:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":3199,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3194,"name":"ElementaryTypeName","src":"207:7:16"}],"id":3195,"name":"VariableDeclaration","src":"207:9:16"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":3199,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3196,"name":"ElementaryTypeName","src":"218:7:16"}],"id":3197,"name":"VariableDeclaration","src":"218:9:16"}],"id":3198,"name":"ParameterList","src":"184:44:16"}],"id":3199,"name":"EventDefinition","src":"165:64:16"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":3274,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":3204,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3200,"name":"ElementaryTypeName","src":"262:7:16"}],"id":3201,"name":"VariableDeclaration","src":"262:9:16"},{"attributes":{"constant":false,"name":"y","scope":3204,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3202,"name":"ElementaryTypeName","src":"281:7:16"}],"id":3203,"name":"VariableDeclaration","src":"281:9:16"}],"id":3204,"name":"StructDefinition","src":"235:62:16"},{"attributes":{"constant":false,"name":"pubkeys","scope":3274,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3205,"name":"ElementaryTypeName","src":"311:7:16"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":3204,"type":"struct PubkeyResolver.PublicKey"},"id":3206,"name":"UserDefinedTypeName","src":"320:9:16"}],"id":3207,"name":"Mapping","src":"303:27:16"}],"id":3208,"name":"VariableDeclaration","src":"303:35:16"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":3274,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3236,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3209,"name":"ElementaryTypeName","src":"631:7:16"}],"id":3210,"name":"VariableDeclaration","src":"631:12:16"},{"attributes":{"constant":false,"name":"x","scope":3236,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3211,"name":"ElementaryTypeName","src":"645:7:16"}],"id":3212,"name":"VariableDeclaration","src":"645:9:16"},{"attributes":{"constant":false,"name":"y","scope":3236,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3213,"name":"ElementaryTypeName","src":"656:7:16"}],"id":3214,"name":"VariableDeclaration","src":"656:9:16"}],"id":3215,"name":"ParameterList","src":"630:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":3219,"name":"ParameterList","src":"693:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":3216,"name":"Identifier","src":"676:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3210,"type":"bytes32","value":"node"},"id":3217,"name":"Identifier","src":"687:4:16"}],"id":3218,"name":"ModifierInvocation","src":"676:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":3220,"name":"Identifier","src":"703:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3210,"type":"bytes32","value":"node"},"id":3221,"name":"Identifier","src":"711:4:16"}],"id":3222,"name":"IndexAccess","src":"703:13:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3204,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":3223,"name":"Identifier","src":"719:9:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"bytes32","value":"x"},"id":3224,"name":"Identifier","src":"729:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3214,"type":"bytes32","value":"y"},"id":3225,"name":"Identifier","src":"732:1:16"}],"id":3226,"name":"FunctionCall","src":"719:15:16"}],"id":3227,"name":"Assignment","src":"703:31:16"}],"id":3228,"name":"ExpressionStatement","src":"703:31:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3199,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":3229,"name":"Identifier","src":"749:13:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3210,"type":"bytes32","value":"node"},"id":3230,"name":"Identifier","src":"763:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"bytes32","value":"x"},"id":3231,"name":"Identifier","src":"769:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3214,"type":"bytes32","value":"y"},"id":3232,"name":"Identifier","src":"772:1:16"}],"id":3233,"name":"FunctionCall","src":"749:25:16"}],"id":3234,"name":"EmitStatement","src":"744:30:16"}],"id":3235,"name":"Block","src":"693:88:16"}],"id":3236,"name":"FunctionDefinition","src":"612:169:16"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":3274,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3256,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3237,"name":"ElementaryTypeName","src":"1039:7:16"}],"id":3238,"name":"VariableDeclaration","src":"1039:12:16"}],"id":3239,"name":"ParameterList","src":"1038:14:16"},{"children":[{"attributes":{"constant":false,"name":"x","scope":3256,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3240,"name":"ElementaryTypeName","src":"1076:7:16"}],"id":3241,"name":"VariableDeclaration","src":"1076:9:16"},{"attributes":{"constant":false,"name":"y","scope":3256,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3242,"name":"ElementaryTypeName","src":"1087:7:16"}],"id":3243,"name":"VariableDeclaration","src":"1087:9:16"}],"id":3244,"name":"ParameterList","src":"1075:22:16"},{"children":[{"attributes":{"functionReturnParameters":3244},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":3201,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":3245,"name":"Identifier","src":"1116:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3238,"type":"bytes32","value":"node"},"id":3246,"name":"Identifier","src":"1124:4:16"}],"id":3247,"name":"IndexAccess","src":"1116:13:16"}],"id":3248,"name":"MemberAccess","src":"1116:15:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":3203,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":3249,"name":"Identifier","src":"1133:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3238,"type":"bytes32","value":"node"},"id":3250,"name":"Identifier","src":"1141:4:16"}],"id":3251,"name":"IndexAccess","src":"1133:13:16"}],"id":3252,"name":"MemberAccess","src":"1133:15:16"}],"id":3253,"name":"TupleExpression","src":"1115:34:16"}],"id":3254,"name":"Return","src":"1108:41:16"}],"id":3255,"name":"Block","src":"1098:58:16"}],"id":3256,"name":"FunctionDefinition","src":"1023:133:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3274,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3273,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3257,"name":"ElementaryTypeName","src":"1189:6:16"}],"id":3258,"name":"VariableDeclaration","src":"1189:18:16"}],"id":3259,"name":"ParameterList","src":"1188:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":3273,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3260,"name":"ElementaryTypeName","src":"1229:4:16"}],"id":3261,"name":"VariableDeclaration","src":"1229:4:16"}],"id":3262,"name":"ParameterList","src":"1228:6:16"},{"children":[{"attributes":{"functionReturnParameters":3262},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3258,"type":"bytes4","value":"interfaceID"},"id":3263,"name":"Identifier","src":"1252:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3191,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":3264,"name":"Identifier","src":"1267:19:16"}],"id":3265,"name":"BinaryOperation","src":"1252:34:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4831,"type":"contract super PubkeyResolver","value":"super"},"id":3266,"name":"Identifier","src":"1290:5:16"}],"id":3267,"name":"MemberAccess","src":"1290:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3258,"type":"bytes4","value":"interfaceID"},"id":3268,"name":"Identifier","src":"1314:11:16"}],"id":3269,"name":"FunctionCall","src":"1290:36:16"}],"id":3270,"name":"BinaryOperation","src":"1252:74:16"}],"id":3271,"name":"Return","src":"1245:81:16"}],"id":3272,"name":"Block","src":"1235:98:16"}],"id":3273,"name":"FunctionDefinition","src":"1162:171:16"}],"id":3274,"name":"ContractDefinition","src":"56:1279:16"}],"id":3275,"name":"SourceUnit","src":"0:1336:16"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[3357]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3276,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3358,"symbolAliases":[null],"unitAlias":""},"id":3277,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3357,3426],"name":"TextResolver","scope":3358},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":3278,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":3279,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":3357,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3280,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":3281,"name":"Literal","src":"144:10:17"}],"id":3282,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":3290,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3283,"name":"ElementaryTypeName","src":"179:7:17"}],"id":3284,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":3290,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3285,"name":"ElementaryTypeName","src":"201:6:17"}],"id":3286,"name":"VariableDeclaration","src":"201:25:17"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":3290,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3287,"name":"ElementaryTypeName","src":"228:6:17"}],"id":3288,"name":"VariableDeclaration","src":"228:10:17"}],"id":3289,"name":"ParameterList","src":"178:61:17"}],"id":3290,"name":"EventDefinition","src":"161:79:17"},{"attributes":{"constant":false,"name":"texts","scope":3357,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3291,"name":"ElementaryTypeName","src":"254:7:17"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":3292,"name":"ElementaryTypeName","src":"271:6:17"},{"attributes":{"name":"string","type":"string"},"id":3293,"name":"ElementaryTypeName","src":"279:6:17"}],"id":3294,"name":"Mapping","src":"263:23:17"}],"id":3295,"name":"Mapping","src":"246:41:17"}],"id":3296,"name":"VariableDeclaration","src":"246:47:17"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":3357,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3323,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3297,"name":"ElementaryTypeName","src":"590:7:17"}],"id":3298,"name":"VariableDeclaration","src":"590:12:17"},{"attributes":{"constant":false,"name":"key","scope":3323,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3299,"name":"ElementaryTypeName","src":"604:6:17"}],"id":3300,"name":"VariableDeclaration","src":"604:19:17"},{"attributes":{"constant":false,"name":"value","scope":3323,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3301,"name":"ElementaryTypeName","src":"625:6:17"}],"id":3302,"name":"VariableDeclaration","src":"625:21:17"}],"id":3303,"name":"ParameterList","src":"589:58:17"},{"attributes":{"parameters":[null]},"children":[],"id":3307,"name":"ParameterList","src":"674:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":3304,"name":"Identifier","src":"657:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"bytes32","value":"node"},"id":3305,"name":"Identifier","src":"668:4:17"}],"id":3306,"name":"ModifierInvocation","src":"657:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3296,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":3308,"name":"Identifier","src":"684:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"bytes32","value":"node"},"id":3309,"name":"Identifier","src":"690:4:17"}],"id":3311,"name":"IndexAccess","src":"684:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"string calldata","value":"key"},"id":3310,"name":"Identifier","src":"696:3:17"}],"id":3312,"name":"IndexAccess","src":"684:16:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3302,"type":"string calldata","value":"value"},"id":3313,"name":"Identifier","src":"703:5:17"}],"id":3314,"name":"Assignment","src":"684:24:17"}],"id":3315,"name":"ExpressionStatement","src":"684:24:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":3290,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":3316,"name":"Identifier","src":"723:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"bytes32","value":"node"},"id":3317,"name":"Identifier","src":"735:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"string calldata","value":"key"},"id":3318,"name":"Identifier","src":"741:3:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"string calldata","value":"key"},"id":3319,"name":"Identifier","src":"746:3:17"}],"id":3320,"name":"FunctionCall","src":"723:27:17"}],"id":3321,"name":"EmitStatement","src":"718:32:17"}],"id":3322,"name":"Block","src":"674:83:17"}],"id":3323,"name":"FunctionDefinition","src":"573:184:17"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":3357,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3339,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3324,"name":"ElementaryTypeName","src":"988:7:17"}],"id":3325,"name":"VariableDeclaration","src":"988:12:17"},{"attributes":{"constant":false,"name":"key","scope":3339,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3326,"name":"ElementaryTypeName","src":"1002:6:17"}],"id":3327,"name":"VariableDeclaration","src":"1002:19:17"}],"id":3328,"name":"ParameterList","src":"987:35:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":3339,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3329,"name":"ElementaryTypeName","src":"1046:6:17"}],"id":3330,"name":"VariableDeclaration","src":"1046:13:17"}],"id":3331,"name":"ParameterList","src":"1045:15:17"},{"children":[{"attributes":{"functionReturnParameters":3331},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3296,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":3332,"name":"Identifier","src":"1078:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3325,"type":"bytes32","value":"node"},"id":3333,"name":"Identifier","src":"1084:4:17"}],"id":3334,"name":"IndexAccess","src":"1078:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3327,"type":"string calldata","value":"key"},"id":3335,"name":"Identifier","src":"1090:3:17"}],"id":3336,"name":"IndexAccess","src":"1078:16:17"}],"id":3337,"name":"Return","src":"1071:23:17"}],"id":3338,"name":"Block","src":"1061:40:17"}],"id":3339,"name":"FunctionDefinition","src":"974:127:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3357,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3356,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3340,"name":"ElementaryTypeName","src":"1134:6:17"}],"id":3341,"name":"VariableDeclaration","src":"1134:18:17"}],"id":3342,"name":"ParameterList","src":"1133:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":3356,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3343,"name":"ElementaryTypeName","src":"1174:4:17"}],"id":3344,"name":"VariableDeclaration","src":"1174:4:17"}],"id":3345,"name":"ParameterList","src":"1173:6:17"},{"children":[{"attributes":{"functionReturnParameters":3345},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3341,"type":"bytes4","value":"interfaceID"},"id":3346,"name":"Identifier","src":"1197:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":3347,"name":"Identifier","src":"1212:17:17"}],"id":3348,"name":"BinaryOperation","src":"1197:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4833,"type":"contract super TextResolver","value":"super"},"id":3349,"name":"Identifier","src":"1233:5:17"}],"id":3350,"name":"MemberAccess","src":"1233:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3341,"type":"bytes4","value":"interfaceID"},"id":3351,"name":"Identifier","src":"1257:11:17"}],"id":3352,"name":"FunctionCall","src":"1233:36:17"}],"id":3353,"name":"BinaryOperation","src":"1197:72:17"}],"id":3354,"name":"Return","src":"1190:79:17"}],"id":3355,"name":"Block","src":"1180:96:17"}],"id":3356,"name":"FunctionDefinition","src":"1107:169:17"}],"id":3357,"name":"ContractDefinition","src":"56:1222:17"}],"id":3358,"name":"SourceUnit","src":"0:1278:17"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[991]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":897,"name":"PragmaDirective","src":"772:24:18"},{"attributes":{"SourceUnit":1603,"absolutePath":"controller.sol","file":"../controller.sol","scope":992,"symbolAliases":[null],"unitAlias":""},"id":898,"name":"ImportDirective","src":"798:27:18"},{"attributes":{"SourceUnit":1037,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":992,"symbolAliases":[null],"unitAlias":""},"id":899,"name":"ImportDirective","src":"826:29:18"},{"attributes":{"contractDependencies":[1036],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[991,1036],"name":"Controllable","scope":992},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1036,"type":"contract ENSResolvable"},"id":900,"name":"UserDefinedTypeName","src":"980:13:18"}],"id":901,"name":"InheritanceSpecifier","src":"980:13:18"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":991,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":902,"name":"ElementaryTypeName","src":"1070:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":903,"name":"Literal","src":"1122:66:18"}],"id":904,"name":"VariableDeclaration","src":"1070:118:18"},{"attributes":{"constant":false,"name":"_controllerNode","scope":991,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":905,"name":"ElementaryTypeName","src":"1272:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":904,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":906,"name":"Identifier","src":"1306:24:18"}],"id":907,"name":"VariableDeclaration","src":"1272:58:18"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":991,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":924,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":908,"name":"ElementaryTypeName","src":"1571:7:18"}],"id":909,"name":"VariableDeclaration","src":"1571:24:18"}],"id":910,"name":"ParameterList","src":"1570:26:18"},{"attributes":{"parameters":[null]},"children":[],"id":911,"name":"ParameterList","src":"1606:0:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"bytes32","value":"_controllerNode_"},"id":912,"name":"Identifier","src":"1665:16:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":913,"name":"ElementaryTypeNameExpression","src":"1685:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":914,"name":"Literal","src":"1693:1:18"}],"id":915,"name":"FunctionCall","src":"1685:10:18"}],"id":916,"name":"BinaryOperation","src":"1665:30:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"bytes32","value":"_controllerNode"},"id":917,"name":"Identifier","src":"1711:15:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"bytes32","value":"_controllerNode_"},"id":918,"name":"Identifier","src":"1729:16:18"}],"id":919,"name":"Assignment","src":"1711:34:18"}],"id":920,"name":"ExpressionStatement","src":"1711:34:18"}],"id":921,"name":"Block","src":"1697:59:18"}],"id":922,"name":"IfStatement","src":"1661:95:18"}],"id":923,"name":"Block","src":"1606:156:18"}],"id":924,"name":"FunctionDefinition","src":"1559:203:18"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":925,"name":"ParameterList","src":"1849:2:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":926,"name":"Identifier","src":"1862:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":973,"type":"function (address) view returns (bool)","value":"_isController"},"id":927,"name":"Identifier","src":"1870:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":928,"name":"Identifier","src":"1884:3:18"}],"id":929,"name":"MemberAccess","src":"1884:10:18"}],"id":930,"name":"FunctionCall","src":"1870:25:18"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":931,"name":"Literal","src":"1897:28:18"}],"id":932,"name":"FunctionCall","src":"1862:64:18"}],"id":933,"name":"ExpressionStatement","src":"1862:64:18"},{"id":934,"name":"PlaceholderStatement","src":"1936:1:18"}],"id":935,"name":"Block","src":"1852:92:18"}],"id":936,"name":"ModifierDefinition","src":"1826:118:18"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":937,"name":"ParameterList","src":"2022:2:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":938,"name":"Identifier","src":"2035:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":990,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":939,"name":"Identifier","src":"2043:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":940,"name":"Identifier","src":"2052:3:18"}],"id":941,"name":"MemberAccess","src":"2052:10:18"}],"id":942,"name":"FunctionCall","src":"2043:20:18"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":943,"name":"Literal","src":"2065:24:18"}],"id":944,"name":"FunctionCall","src":"2035:55:18"}],"id":945,"name":"ExpressionStatement","src":"2035:55:18"},{"id":946,"name":"PlaceholderStatement","src":"2100:1:18"}],"id":947,"name":"Block","src":"2025:83:18"}],"id":948,"name":"ModifierDefinition","src":"2004:104:18"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":991,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":949,"name":"ParameterList","src":"2192:2:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":956,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":950,"name":"ElementaryTypeName","src":"2216:7:18"}],"id":951,"name":"VariableDeclaration","src":"2216:7:18"}],"id":952,"name":"ParameterList","src":"2215:9:18"},{"children":[{"attributes":{"functionReturnParameters":952},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"bytes32","value":"_controllerNode"},"id":953,"name":"Identifier","src":"2242:15:18"}],"id":954,"name":"Return","src":"2235:22:18"}],"id":955,"name":"Block","src":"2225:39:18"}],"id":956,"name":"FunctionDefinition","src":"2169:95:18"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":991,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":973,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":957,"name":"ElementaryTypeName","src":"2355:7:18"}],"id":958,"name":"VariableDeclaration","src":"2355:16:18"}],"id":959,"name":"ParameterList","src":"2354:18:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":973,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":960,"name":"ElementaryTypeName","src":"2396:4:18"}],"id":961,"name":"VariableDeclaration","src":"2396:4:18"}],"id":962,"name":"ParameterList","src":"2395:6:18"},{"children":[{"attributes":{"functionReturnParameters":962},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":1159,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"type(contract IController)","value":"IController"},"id":963,"name":"Identifier","src":"2419:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":964,"name":"Identifier","src":"2431:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"bytes32","value":"_controllerNode"},"id":965,"name":"Identifier","src":"2443:15:18"}],"id":966,"name":"FunctionCall","src":"2431:28:18"}],"id":967,"name":"FunctionCall","src":"2419:41:18"}],"id":968,"name":"MemberAccess","src":"2419:54:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":958,"type":"address","value":"_account"},"id":969,"name":"Identifier","src":"2474:8:18"}],"id":970,"name":"FunctionCall","src":"2419:64:18"}],"id":971,"name":"Return","src":"2412:71:18"}],"id":972,"name":"Block","src":"2402:88:18"}],"id":973,"name":"FunctionDefinition","src":"2332:158:18"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":991,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":990,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":974,"name":"ElementaryTypeName","src":"2572:7:18"}],"id":975,"name":"VariableDeclaration","src":"2572:16:18"}],"id":976,"name":"ParameterList","src":"2571:18:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":990,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":977,"name":"ElementaryTypeName","src":"2613:4:18"}],"id":978,"name":"VariableDeclaration","src":"2613:4:18"}],"id":979,"name":"ParameterList","src":"2612:6:18"},{"children":[{"attributes":{"functionReturnParameters":979},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":1166,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"type(contract IController)","value":"IController"},"id":980,"name":"Identifier","src":"2636:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":981,"name":"Identifier","src":"2648:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"bytes32","value":"_controllerNode"},"id":982,"name":"Identifier","src":"2660:15:18"}],"id":983,"name":"FunctionCall","src":"2648:28:18"}],"id":984,"name":"FunctionCall","src":"2636:41:18"}],"id":985,"name":"MemberAccess","src":"2636:49:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":975,"type":"address","value":"_account"},"id":986,"name":"Identifier","src":"2686:8:18"}],"id":987,"name":"FunctionCall","src":"2636:59:18"}],"id":988,"name":"Return","src":"2629:66:18"}],"id":989,"name":"Block","src":"2619:83:18"}],"id":990,"name":"FunctionDefinition","src":"2554:148:18"}],"id":991,"name":"ContractDefinition","src":"955:1749:18"}],"id":992,"name":"SourceUnit","src":"772:1933:18"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[1036]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":993,"name":"PragmaDirective","src":"773:24:19"},{"attributes":{"SourceUnit":1740,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":1037,"symbolAliases":[null],"unitAlias":""},"id":994,"name":"ImportDirective","src":"799:34:19"},{"attributes":{"SourceUnit":1914,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":1037,"symbolAliases":[null],"unitAlias":""},"id":995,"name":"ImportDirective","src":"834:45:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[1036],"name":"ENSResolvable","scope":1037},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":1036,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":996,"name":"ElementaryTypeName","src":"1109:7:19"}],"id":997,"name":"VariableDeclaration","src":"1109:28:19"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1036,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":1007,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":998,"name":"ElementaryTypeName","src":"1205:7:19"}],"id":999,"name":"VariableDeclaration","src":"1205:16:19"}],"id":1000,"name":"ParameterList","src":"1204:18:19"},{"attributes":{"parameters":[null]},"children":[],"id":1001,"name":"ParameterList","src":"1232:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"address","value":"_ensRegistry"},"id":1002,"name":"Identifier","src":"1242:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":999,"type":"address","value":"_ensReg_"},"id":1003,"name":"Identifier","src":"1257:8:19"}],"id":1004,"name":"Assignment","src":"1242:23:19"}],"id":1005,"name":"ExpressionStatement","src":"1242:23:19"}],"id":1006,"name":"Block","src":"1232:40:19"}],"id":1007,"name":"FunctionDefinition","src":"1193:79:19"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":1036,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1008,"name":"ParameterList","src":"1384:2:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":1015,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1009,"name":"ElementaryTypeName","src":"1410:7:19"}],"id":1010,"name":"VariableDeclaration","src":"1410:7:19"}],"id":1011,"name":"ParameterList","src":"1409:9:19"},{"children":[{"attributes":{"functionReturnParameters":1011},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"address","value":"_ensRegistry"},"id":1012,"name":"Identifier","src":"1436:12:19"}],"id":1013,"name":"Return","src":"1429:19:19"}],"id":1014,"name":"Block","src":"1419:36:19"}],"id":1015,"name":"FunctionDefinition","src":"1364:91:19"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":1036,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1016,"name":"ElementaryTypeName","src":"1652:7:19"}],"id":1017,"name":"VariableDeclaration","src":"1652:13:19"}],"id":1018,"name":"ParameterList","src":"1651:15:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":1035,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1019,"name":"ElementaryTypeName","src":"1690:7:19"}],"id":1020,"name":"VariableDeclaration","src":"1690:7:19"}],"id":1021,"name":"ParameterList","src":"1689:9:19"},{"children":[{"attributes":{"functionReturnParameters":1021},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":2288,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1913,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":1022,"name":"Identifier","src":"1716:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":1715,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1739,"type":"type(contract ENS)","value":"ENS"},"id":1023,"name":"Identifier","src":"1731:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"address","value":"_ensRegistry"},"id":1024,"name":"Identifier","src":"1735:12:19"}],"id":1025,"name":"FunctionCall","src":"1731:17:19"}],"id":1026,"name":"MemberAccess","src":"1731:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1017,"type":"bytes32","value":"_node"},"id":1027,"name":"Identifier","src":"1758:5:19"}],"id":1028,"name":"FunctionCall","src":"1731:33:19"}],"id":1029,"name":"FunctionCall","src":"1716:49:19"}],"id":1030,"name":"MemberAccess","src":"1716:54:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1017,"type":"bytes32","value":"_node"},"id":1031,"name":"Identifier","src":"1771:5:19"}],"id":1032,"name":"FunctionCall","src":"1716:61:19"}],"id":1033,"name":"Return","src":"1709:68:19"}],"id":1034,"name":"Block","src":"1699:85:19"}],"id":1035,"name":"FunctionDefinition","src":"1631:153:19"}],"id":1036,"name":"ContractDefinition","src":"1008:778:19"}],"id":1037,"name":"SourceUnit","src":"773:1014:19"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[2070]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1915,"name":"PragmaDirective","src":"767:24:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[2070],"name":"Ownable","scope":2071},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1921,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1916,"name":"ElementaryTypeName","src":"1199:7:20"}],"id":1917,"name":"VariableDeclaration","src":"1199:13:20"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1921,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1918,"name":"ElementaryTypeName","src":"1214:7:20"}],"id":1919,"name":"VariableDeclaration","src":"1214:11:20"}],"id":1920,"name":"ParameterList","src":"1198:28:20"}],"id":1921,"name":"EventDefinition","src":"1172:55:20"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":1925,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1922,"name":"ElementaryTypeName","src":"1254:7:20"}],"id":1923,"name":"VariableDeclaration","src":"1254:15:20"}],"id":1924,"name":"ParameterList","src":"1253:17:20"}],"id":1925,"name":"EventDefinition","src":"1232:39:20"},{"attributes":{"constant":false,"name":"_owner","scope":2070,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1926,"name":"ElementaryTypeName","src":"1277:15:20"}],"id":1927,"name":"VariableDeclaration","src":"1277:30:20"},{"attributes":{"constant":false,"name":"_isTransferable","scope":2070,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1928,"name":"ElementaryTypeName","src":"1313:4:20"}],"id":1929,"name":"VariableDeclaration","src":"1313:28:20"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2070,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":1960,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1930,"name":"ElementaryTypeName","src":"1476:15:20"}],"id":1931,"name":"VariableDeclaration","src":"1476:25:20"},{"attributes":{"constant":false,"name":"_transferable_","scope":1960,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1932,"name":"ElementaryTypeName","src":"1503:4:20"}],"id":1933,"name":"VariableDeclaration","src":"1503:19:20"}],"id":1934,"name":"ParameterList","src":"1475:48:20"},{"attributes":{"parameters":[null]},"children":[],"id":1935,"name":"ParameterList","src":"1533:0:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":1936,"name":"Identifier","src":"1543:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1931,"type":"address payable","value":"_account_"},"id":1937,"name":"Identifier","src":"1552:9:20"}],"id":1938,"name":"Assignment","src":"1543:18:20"}],"id":1939,"name":"ExpressionStatement","src":"1543:18:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":1940,"name":"Identifier","src":"1571:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1933,"type":"bool","value":"_transferable_"},"id":1941,"name":"Identifier","src":"1589:14:20"}],"id":1942,"name":"Assignment","src":"1571:32:20"}],"id":1943,"name":"ExpressionStatement","src":"1571:32:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":1944,"name":"Identifier","src":"1687:15:20"}],"id":1945,"name":"UnaryOperation","src":"1686:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1925,"type":"function (address)","value":"LockedOwnership"},"id":1946,"name":"Identifier","src":"1723:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1931,"type":"address payable","value":"_account_"},"id":1947,"name":"Identifier","src":"1739:9:20"}],"id":1948,"name":"FunctionCall","src":"1723:26:20"}],"id":1949,"name":"EmitStatement","src":"1718:31:20"}],"id":1950,"name":"Block","src":"1704:56:20"}],"id":1951,"name":"IfStatement","src":"1682:78:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1921,"type":"function (address,address)","value":"TransferredOwnership"},"id":1952,"name":"Identifier","src":"1774:20:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1953,"name":"ElementaryTypeNameExpression","src":"1795:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1954,"name":"Literal","src":"1803:1:20"}],"id":1955,"name":"FunctionCall","src":"1795:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1931,"type":"address payable","value":"_account_"},"id":1956,"name":"Identifier","src":"1807:9:20"}],"id":1957,"name":"FunctionCall","src":"1774:43:20"}],"id":1958,"name":"EmitStatement","src":"1769:48:20"}],"id":1959,"name":"Block","src":"1533:291:20"}],"id":1960,"name":"FunctionDefinition","src":"1464:360:20"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1961,"name":"ParameterList","src":"1919:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1962,"name":"Identifier","src":"1932:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2069,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1963,"name":"Identifier","src":"1940:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1964,"name":"Identifier","src":"1949:3:20"}],"id":1965,"name":"MemberAccess","src":"1949:10:20"}],"id":1966,"name":"FunctionCall","src":"1940:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":1967,"name":"Literal","src":"1962:24:20"}],"id":1968,"name":"FunctionCall","src":"1932:55:20"}],"id":1969,"name":"ExpressionStatement","src":"1932:55:20"},{"id":1970,"name":"PlaceholderStatement","src":"1997:1:20"}],"id":1971,"name":"Block","src":"1922:83:20"}],"id":1972,"name":"ModifierDefinition","src":"1901:104:20"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":2070,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2017,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1973,"name":"ElementaryTypeName","src":"2274:15:20"}],"id":1974,"name":"VariableDeclaration","src":"2274:24:20"},{"attributes":{"constant":false,"name":"_transferable","scope":2017,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1975,"name":"ElementaryTypeName","src":"2300:4:20"}],"id":1976,"name":"VariableDeclaration","src":"2300:18:20"}],"id":1977,"name":"ParameterList","src":"2273:46:20"},{"attributes":{"parameters":[null]},"children":[],"id":1980,"name":"ParameterList","src":"2339:0:20"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":1978,"name":"Identifier","src":"2329:9:20"}],"id":1979,"name":"ModifierInvocation","src":"2329:9:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1981,"name":"Identifier","src":"2404:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":1982,"name":"Identifier","src":"2412:15:20"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":1983,"name":"Literal","src":"2429:31:20"}],"id":1984,"name":"FunctionCall","src":"2404:57:20"}],"id":1985,"name":"ExpressionStatement","src":"2404:57:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1986,"name":"Identifier","src":"2534:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"address payable","value":"_account"},"id":1987,"name":"Identifier","src":"2542:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1988,"name":"ElementaryTypeNameExpression","src":"2554:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1989,"name":"Literal","src":"2562:1:20"}],"id":1990,"name":"FunctionCall","src":"2554:10:20"}],"id":1991,"name":"BinaryOperation","src":"2542:22:20"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":1992,"name":"Literal","src":"2566:37:20"}],"id":1993,"name":"FunctionCall","src":"2534:70:20"}],"id":1994,"name":"ExpressionStatement","src":"2534:70:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":1995,"name":"Identifier","src":"2689:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1976,"type":"bool","value":"_transferable"},"id":1996,"name":"Identifier","src":"2707:13:20"}],"id":1997,"name":"Assignment","src":"2689:31:20"}],"id":1998,"name":"ExpressionStatement","src":"2689:31:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1976,"type":"bool","value":"_transferable"},"id":1999,"name":"Identifier","src":"2804:13:20"}],"id":2000,"name":"UnaryOperation","src":"2803:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1925,"type":"function (address)","value":"LockedOwnership"},"id":2001,"name":"Identifier","src":"2838:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"address payable","value":"_account"},"id":2002,"name":"Identifier","src":"2854:8:20"}],"id":2003,"name":"FunctionCall","src":"2838:25:20"}],"id":2004,"name":"EmitStatement","src":"2833:30:20"}],"id":2005,"name":"Block","src":"2819:55:20"}],"id":2006,"name":"IfStatement","src":"2799:75:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1921,"type":"function (address,address)","value":"TransferredOwnership"},"id":2007,"name":"Identifier","src":"2934:20:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2008,"name":"Identifier","src":"2955:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"address payable","value":"_account"},"id":2009,"name":"Identifier","src":"2963:8:20"}],"id":2010,"name":"FunctionCall","src":"2934:38:20"}],"id":2011,"name":"EmitStatement","src":"2929:43:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2012,"name":"Identifier","src":"3032:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"address payable","value":"_account"},"id":2013,"name":"Identifier","src":"3041:8:20"}],"id":2014,"name":"Assignment","src":"3032:17:20"}],"id":2015,"name":"ExpressionStatement","src":"3032:17:20"}],"id":2016,"name":"Block","src":"2339:717:20"}],"id":2017,"name":"FunctionDefinition","src":"2247:809:20"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":2070,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2018,"name":"ParameterList","src":"3196:2:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":2025,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2019,"name":"ElementaryTypeName","src":"3222:4:20"}],"id":2020,"name":"VariableDeclaration","src":"3222:4:20"}],"id":2021,"name":"ParameterList","src":"3221:6:20"},{"children":[{"attributes":{"functionReturnParameters":2021},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":2022,"name":"Identifier","src":"3245:15:20"}],"id":2023,"name":"Return","src":"3238:22:20"}],"id":2024,"name":"Block","src":"3228:39:20"}],"id":2025,"name":"FunctionDefinition","src":"3173:94:20"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":2070,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2026,"name":"ParameterList","src":"3569:2:20"},{"attributes":{"parameters":[null]},"children":[],"id":2029,"name":"ParameterList","src":"3591:0:20"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":2027,"name":"Identifier","src":"3581:9:20"}],"id":2028,"name":"ModifierInvocation","src":"3581:9:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":2030,"name":"Identifier","src":"3656:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":2031,"name":"Identifier","src":"3664:15:20"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2032,"name":"Literal","src":"3681:31:20"}],"id":2033,"name":"FunctionCall","src":"3656:57:20"}],"id":2034,"name":"ExpressionStatement","src":"3656:57:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2035,"name":"Identifier","src":"3767:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2036,"name":"ElementaryTypeNameExpression","src":"3776:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2037,"name":"Literal","src":"3784:1:20"}],"id":2038,"name":"FunctionCall","src":"3776:10:20"}],"id":2039,"name":"Assignment","src":"3767:19:20"}],"id":2040,"name":"ExpressionStatement","src":"3767:19:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1921,"type":"function (address,address)","value":"TransferredOwnership"},"id":2041,"name":"Identifier","src":"3802:20:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2042,"name":"Identifier","src":"3823:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2043,"name":"ElementaryTypeNameExpression","src":"3831:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2044,"name":"Literal","src":"3839:1:20"}],"id":2045,"name":"FunctionCall","src":"3831:10:20"}],"id":2046,"name":"FunctionCall","src":"3802:40:20"}],"id":2047,"name":"EmitStatement","src":"3797:45:20"}],"id":2048,"name":"Block","src":"3591:258:20"}],"id":2049,"name":"FunctionDefinition","src":"3543:306:20"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":2070,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2050,"name":"ParameterList","src":"3946:2:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":2057,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2051,"name":"ElementaryTypeName","src":"3970:15:20"}],"id":2052,"name":"VariableDeclaration","src":"3970:15:20"}],"id":2053,"name":"ParameterList","src":"3969:17:20"},{"children":[{"attributes":{"functionReturnParameters":2053},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2054,"name":"Identifier","src":"4004:6:20"}],"id":2055,"name":"Return","src":"3997:13:20"}],"id":2056,"name":"Block","src":"3987:30:20"}],"id":2057,"name":"FunctionDefinition","src":"3932:85:20"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":2070,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":2069,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2058,"name":"ElementaryTypeName","src":"4141:7:20"}],"id":2059,"name":"VariableDeclaration","src":"4141:16:20"}],"id":2060,"name":"ParameterList","src":"4140:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":2069,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2061,"name":"ElementaryTypeName","src":"4182:4:20"}],"id":2062,"name":"VariableDeclaration","src":"4182:4:20"}],"id":2063,"name":"ParameterList","src":"4181:6:20"},{"children":[{"attributes":{"functionReturnParameters":2063},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_address"},"id":2064,"name":"Identifier","src":"4205:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2065,"name":"Identifier","src":"4217:6:20"}],"id":2066,"name":"BinaryOperation","src":"4205:18:20"}],"id":2067,"name":"Return","src":"4198:25:20"}],"id":2068,"name":"Block","src":"4188:42:20"}],"id":2069,"name":"FunctionDefinition","src":"4123:107:20"}],"id":2070,"name":"ContractDefinition","src":"1149:3083:20"}],"id":2071,"name":"SourceUnit","src":"767:3466:20"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[1076]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1038,"name":"PragmaDirective","src":"773:24:21"},{"attributes":{"SourceUnit":1149,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":1077,"symbolAliases":[null],"unitAlias":""},"id":1039,"name":"ImportDirective","src":"799:32:21"},{"attributes":{"SourceUnit":763,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":1077,"symbolAliases":[null],"unitAlias":""},"id":1040,"name":"ImportDirective","src":"832:36:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[1076],"name":"Transferrable","scope":1077},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":762,"type":"library SafeERC20"},"id":1041,"name":"UserDefinedTypeName","src":"996:9:21"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":1042,"name":"UserDefinedTypeName","src":"1010:5:21"}],"id":1043,"name":"UsingForDirective","src":"990:26:21"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":1076,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1075,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1044,"name":"ElementaryTypeName","src":"1389:15:21"}],"id":1045,"name":"VariableDeclaration","src":"1389:19:21"},{"attributes":{"constant":false,"name":"_asset","scope":1075,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1046,"name":"ElementaryTypeName","src":"1410:7:21"}],"id":1047,"name":"VariableDeclaration","src":"1410:14:21"},{"attributes":{"constant":false,"name":"_amount","scope":1075,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1048,"name":"ElementaryTypeName","src":"1426:7:21"}],"id":1049,"name":"VariableDeclaration","src":"1426:15:21"}],"id":1050,"name":"ParameterList","src":"1388:54:21"},{"attributes":{"parameters":[null]},"children":[],"id":1051,"name":"ParameterList","src":"1452:0:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1047,"type":"address","value":"_asset"},"id":1052,"name":"Identifier","src":"1510:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1053,"name":"ElementaryTypeNameExpression","src":"1520:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1054,"name":"Literal","src":"1528:1:21"}],"id":1055,"name":"FunctionCall","src":"1520:10:21"}],"id":1056,"name":"BinaryOperation","src":"1510:20:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1045,"type":"address payable","value":"_to"},"id":1057,"name":"Identifier","src":"1546:3:21"}],"id":1059,"name":"MemberAccess","src":"1546:12:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1049,"type":"uint256","value":"_amount"},"id":1060,"name":"Identifier","src":"1559:7:21"}],"id":1061,"name":"FunctionCall","src":"1546:21:21"}],"id":1062,"name":"ExpressionStatement","src":"1546:21:21"}],"id":1063,"name":"Block","src":"1532:46:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":576,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"type(contract ERC20)","value":"ERC20"},"id":1064,"name":"Identifier","src":"1598:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1047,"type":"address","value":"_asset"},"id":1065,"name":"Identifier","src":"1604:6:21"}],"id":1066,"name":"FunctionCall","src":"1598:13:21"}],"id":1067,"name":"MemberAccess","src":"1598:26:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1045,"type":"address payable","value":"_to"},"id":1068,"name":"Identifier","src":"1625:3:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1049,"type":"uint256","value":"_amount"},"id":1069,"name":"Identifier","src":"1630:7:21"}],"id":1070,"name":"FunctionCall","src":"1598:40:21"}],"id":1071,"name":"ExpressionStatement","src":"1598:40:21"}],"id":1072,"name":"Block","src":"1584:65:21"}],"id":1073,"name":"IfStatement","src":"1506:143:21"}],"id":1074,"name":"Block","src":"1452:203:21"}],"id":1075,"name":"FunctionDefinition","src":"1366:289:21"}],"id":1076,"name":"ContractDefinition","src":"961:696:21"}],"id":1077,"name":"SourceUnit","src":"773:885:21"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[19],"Licence":[543]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"767:24:22"},{"attributes":{"SourceUnit":896,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"793:34:22"},{"attributes":{"SourceUnit":763,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"828:35:22"},{"attributes":{"SourceUnit":992,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"864:38:22"},{"attributes":{"SourceUnit":1037,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"903:39:22"},{"attributes":{"SourceUnit":1077,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"943:39:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[19],"name":"ILicence","scope":544},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":19,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":13,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":8,"name":"VariableDeclaration","src":"1125:7:22"},{"attributes":{"constant":false,"name":"","scope":13,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9,"name":"ElementaryTypeName","src":"1134:7:22"}],"id":10,"name":"VariableDeclaration","src":"1134:7:22"}],"id":11,"name":"ParameterList","src":"1124:18:22"},{"attributes":{"parameters":[null]},"children":[],"id":12,"name":"ParameterList","src":"1159:0:22"}],"id":13,"name":"FunctionDefinition","src":"1111:49:22"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":19,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":18,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14,"name":"ElementaryTypeName","src":"1195:7:22"}],"id":15,"name":"VariableDeclaration","src":"1195:7:22"}],"id":16,"name":"ParameterList","src":"1194:9:22"},{"attributes":{"parameters":[null]},"children":[],"id":17,"name":"ParameterList","src":"1212:0:22"}],"id":18,"name":"FunctionDefinition","src":"1166:47:22"}],"id":19,"name":"ContractDefinition","src":"1086:129:22"},{"attributes":{"contractDependencies":[991,1036,1076],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[543,991,1036,1076],"name":"Licence","scope":544},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":1076,"type":"contract Transferrable"},"id":20,"name":"UserDefinedTypeName","src":"1401:13:22"}],"id":21,"name":"InheritanceSpecifier","src":"1401:13:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1036,"type":"contract ENSResolvable"},"id":22,"name":"UserDefinedTypeName","src":"1416:13:22"}],"id":23,"name":"InheritanceSpecifier","src":"1416:13:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":991,"type":"contract Controllable"},"id":24,"name":"UserDefinedTypeName","src":"1431:12:22"}],"id":25,"name":"InheritanceSpecifier","src":"1431:12:22"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":895,"type":"library SafeMath"},"id":26,"name":"UserDefinedTypeName","src":"1456:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":27,"name":"ElementaryTypeName","src":"1469:7:22"}],"id":28,"name":"UsingForDirective","src":"1450:27:22"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":762,"type":"library SafeERC20"},"id":29,"name":"UserDefinedTypeName","src":"1488:9:22"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":30,"name":"UserDefinedTypeName","src":"1502:5:22"}],"id":31,"name":"UsingForDirective","src":"1482:26:22"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":35,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":32,"name":"ElementaryTypeName","src":"1614:7:22"}],"id":33,"name":"VariableDeclaration","src":"1614:15:22"}],"id":34,"name":"ParameterList","src":"1613:17:22"}],"id":35,"name":"EventDefinition","src":"1590:41:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":39,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":36,"name":"ElementaryTypeName","src":"1661:7:22"}],"id":37,"name":"VariableDeclaration","src":"1661:17:22"}],"id":38,"name":"ParameterList","src":"1660:19:22"}],"id":39,"name":"EventDefinition","src":"1636:44:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":43,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":40,"name":"ElementaryTypeName","src":"1710:7:22"}],"id":41,"name":"VariableDeclaration","src":"1710:18:22"}],"id":42,"name":"ParameterList","src":"1709:20:22"}],"id":43,"name":"EventDefinition","src":"1685:45:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":47,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":44,"name":"ElementaryTypeName","src":"1767:7:22"}],"id":45,"name":"VariableDeclaration","src":"1767:15:22"}],"id":46,"name":"ParameterList","src":"1766:17:22"}],"id":47,"name":"EventDefinition","src":"1735:49:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":51,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":48,"name":"ElementaryTypeName","src":"1816:7:22"}],"id":49,"name":"VariableDeclaration","src":"1816:18:22"}],"id":50,"name":"ParameterList","src":"1815:20:22"}],"id":51,"name":"EventDefinition","src":"1789:47:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":61,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":52,"name":"ElementaryTypeName","src":"1873:7:22"}],"id":53,"name":"VariableDeclaration","src":"1873:13:22"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":61,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":54,"name":"ElementaryTypeName","src":"1888:7:22"}],"id":55,"name":"VariableDeclaration","src":"1888:11:22"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":61,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":56,"name":"ElementaryTypeName","src":"1901:7:22"}],"id":57,"name":"VariableDeclaration","src":"1901:14:22"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":61,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":58,"name":"ElementaryTypeName","src":"1917:7:22"}],"id":59,"name":"VariableDeclaration","src":"1917:15:22"}],"id":60,"name":"ParameterList","src":"1872:61:22"}],"id":61,"name":"EventDefinition","src":"1842:92:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":71,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":62,"name":"ElementaryTypeName","src":"1970:7:22"}],"id":63,"name":"VariableDeclaration","src":"1970:13:22"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":71,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":64,"name":"ElementaryTypeName","src":"1985:7:22"}],"id":65,"name":"VariableDeclaration","src":"1985:11:22"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":71,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":66,"name":"ElementaryTypeName","src":"1998:7:22"}],"id":67,"name":"VariableDeclaration","src":"1998:14:22"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":71,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":68,"name":"ElementaryTypeName","src":"2014:7:22"}],"id":69,"name":"VariableDeclaration","src":"2014:15:22"}],"id":70,"name":"ParameterList","src":"1969:61:22"}],"id":71,"name":"EventDefinition","src":"1939:92:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":79,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":72,"name":"ElementaryTypeName","src":"2051:7:22"}],"id":73,"name":"VariableDeclaration","src":"2051:11:22"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":79,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":74,"name":"ElementaryTypeName","src":"2064:7:22"}],"id":75,"name":"VariableDeclaration","src":"2064:14:22"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":79,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":76,"name":"ElementaryTypeName","src":"2080:7:22"}],"id":77,"name":"VariableDeclaration","src":"2080:15:22"}],"id":78,"name":"ParameterList","src":"2050:46:22"}],"id":79,"name":"EventDefinition","src":"2037:60:22"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":543,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":80,"name":"ElementaryTypeName","src":"2209:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":81,"name":"Literal","src":"2252:4:22"}],"id":82,"name":"VariableDeclaration","src":"2209:47:22"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":543,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":83,"name":"ElementaryTypeName","src":"2262:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":84,"name":"Literal","src":"2305:1:22"}],"id":85,"name":"VariableDeclaration","src":"2262:44:22"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":543,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":86,"name":"ElementaryTypeName","src":"2313:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":87,"name":"Literal","src":"2351:42:22"}],"id":88,"name":"VariableDeclaration","src":"2313:80:22"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":543,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":89,"name":"ElementaryTypeName","src":"2433:15:22"}],"id":90,"name":"VariableDeclaration","src":"2433:36:22"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":543,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":91,"name":"ElementaryTypeName","src":"2475:15:22"}],"id":92,"name":"VariableDeclaration","src":"2475:36:22"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":543,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":93,"name":"ElementaryTypeName","src":"2517:7:22"}],"id":94,"name":"VariableDeclaration","src":"2517:27:22"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":543,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":95,"name":"ElementaryTypeName","src":"2551:4:22"}],"id":96,"name":"VariableDeclaration","src":"2551:31:22"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":543,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":97,"name":"ElementaryTypeName","src":"2588:4:22"}],"id":98,"name":"VariableDeclaration","src":"2588:31:22"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":543,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":99,"name":"ElementaryTypeName","src":"2625:4:22"}],"id":100,"name":"VariableDeclaration","src":"2625:30:22"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":543,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":101,"name":"ElementaryTypeName","src":"2661:4:22"}],"id":102,"name":"VariableDeclaration","src":"2661:38:22"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":543,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":103,"name":"ElementaryTypeName","src":"2853:7:22"}],"id":104,"name":"VariableDeclaration","src":"2853:36:22"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":105,"name":"ParameterList","src":"2990:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":106,"name":"Identifier","src":"3003:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":107,"name":"Identifier","src":"3011:3:22"}],"id":108,"name":"MemberAccess","src":"3011:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":94,"type":"address","value":"_licenceDAO"},"id":109,"name":"Identifier","src":"3025:11:22"}],"id":110,"name":"BinaryOperation","src":"3011:25:22"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":111,"name":"Literal","src":"3038:26:22"}],"id":112,"name":"FunctionCall","src":"3003:62:22"}],"id":113,"name":"ExpressionStatement","src":"3003:62:22"},{"id":114,"name":"PlaceholderStatement","src":"3075:1:22"}],"id":115,"name":"Block","src":"2993:90:22"}],"id":116,"name":"ModifierDefinition","src":"2974:109:22"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":172,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":117,"name":"ElementaryTypeName","src":"3628:7:22"}],"id":118,"name":"VariableDeclaration","src":"3628:17:22"},{"attributes":{"constant":false,"name":"_float_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":119,"name":"ElementaryTypeName","src":"3647:15:22"}],"id":120,"name":"VariableDeclaration","src":"3647:23:22"},{"attributes":{"constant":false,"name":"_holder_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":121,"name":"ElementaryTypeName","src":"3672:15:22"}],"id":122,"name":"VariableDeclaration","src":"3672:24:22"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":123,"name":"ElementaryTypeName","src":"3698:7:22"}],"id":124,"name":"VariableDeclaration","src":"3698:20:22"},{"attributes":{"constant":false,"name":"_ens_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":125,"name":"ElementaryTypeName","src":"3720:7:22"}],"id":126,"name":"VariableDeclaration","src":"3720:13:22"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":172,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":127,"name":"ElementaryTypeName","src":"3735:7:22"}],"id":128,"name":"VariableDeclaration","src":"3735:24:22"}],"id":129,"name":"ParameterList","src":"3627:133:22"},{"attributes":{"parameters":[null]},"children":[],"id":136,"name":"ParameterList","src":"3848:0:22"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1036,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":130,"name":"Identifier","src":"3784:13:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":126,"type":"address","value":"_ens_"},"id":131,"name":"Identifier","src":"3798:5:22"}],"id":132,"name":"ModifierInvocation","src":"3784:20:22"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":991,"type":"type(contract Controllable)","value":"Controllable"},"id":133,"name":"Identifier","src":"3813:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"bytes32","value":"_controllerNode_"},"id":134,"name":"Identifier","src":"3826:16:22"}],"id":135,"name":"ModifierInvocation","src":"3813:30:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":137,"name":"Identifier","src":"3858:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":138,"name":"Identifier","src":"3866:16:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"uint256","value":"_licence_"},"id":139,"name":"Identifier","src":"3886:9:22"}],"id":140,"name":"BinaryOperation","src":"3866:29:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"uint256","value":"_licence_"},"id":141,"name":"Identifier","src":"3899:9:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":82,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":142,"name":"Identifier","src":"3912:16:22"}],"id":143,"name":"BinaryOperation","src":"3899:29:22"}],"id":144,"name":"BinaryOperation","src":"3866:62:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":145,"name":"Literal","src":"3930:29:22"}],"id":146,"name":"FunctionCall","src":"3858:102:22"}],"id":147,"name":"ExpressionStatement","src":"3858:102:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"uint256","value":"_licenceAmountScaled"},"id":148,"name":"Identifier","src":"3970:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"uint256","value":"_licence_"},"id":149,"name":"Identifier","src":"3993:9:22"}],"id":150,"name":"Assignment","src":"3970:32:22"}],"id":151,"name":"ExpressionStatement","src":"3970:32:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":152,"name":"Identifier","src":"4012:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"address payable","value":"_float_"},"id":153,"name":"Identifier","src":"4027:7:22"}],"id":154,"name":"Assignment","src":"4012:22:22"}],"id":155,"name":"ExpressionStatement","src":"4012:22:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":156,"name":"Identifier","src":"4044:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"address payable","value":"_holder_"},"id":157,"name":"Identifier","src":"4059:8:22"}],"id":158,"name":"Assignment","src":"4044:23:22"}],"id":159,"name":"ExpressionStatement","src":"4044:23:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"address","value":"_tknAddress_"},"id":160,"name":"Identifier","src":"4081:12:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":161,"name":"ElementaryTypeNameExpression","src":"4097:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":162,"name":"Literal","src":"4105:1:22"}],"id":163,"name":"FunctionCall","src":"4097:10:22"}],"id":164,"name":"BinaryOperation","src":"4081:26:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_tknContractAddress"},"id":165,"name":"Identifier","src":"4123:19:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"address","value":"_tknAddress_"},"id":166,"name":"Identifier","src":"4145:12:22"}],"id":167,"name":"Assignment","src":"4123:34:22"}],"id":168,"name":"ExpressionStatement","src":"4123:34:22"}],"id":169,"name":"Block","src":"4109:59:22"}],"id":170,"name":"IfStatement","src":"4077:91:22"}],"id":171,"name":"Block","src":"3848:326:22"}],"id":172,"name":"FunctionDefinition","src":"3616:558:22"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":543,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":173,"name":"ParameterList","src":"4290:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":174,"name":"ParameterList","src":"4310:0:22"},{"attributes":{"statements":[null]},"children":[],"id":175,"name":"Block","src":"4310:2:22"}],"id":176,"name":"FunctionDefinition","src":"4282:30:22"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":177,"name":"ParameterList","src":"4503:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":178,"name":"ElementaryTypeName","src":"4529:7:22"}],"id":179,"name":"VariableDeclaration","src":"4529:7:22"}],"id":180,"name":"ParameterList","src":"4528:9:22"},{"children":[{"attributes":{"functionReturnParameters":180},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"uint256","value":"_licenceAmountScaled"},"id":181,"name":"Identifier","src":"4555:20:22"}],"id":182,"name":"Return","src":"4548:27:22"}],"id":183,"name":"Block","src":"4538:44:22"}],"id":184,"name":"FunctionDefinition","src":"4475:107:22"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":185,"name":"ParameterList","src":"4749:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":192,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":186,"name":"ElementaryTypeName","src":"4775:7:22"}],"id":187,"name":"VariableDeclaration","src":"4775:7:22"}],"id":188,"name":"ParameterList","src":"4774:9:22"},{"children":[{"attributes":{"functionReturnParameters":188},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":189,"name":"Identifier","src":"4801:12:22"}],"id":190,"name":"Return","src":"4794:19:22"}],"id":191,"name":"Block","src":"4784:36:22"}],"id":192,"name":"FunctionDefinition","src":"4729:91:22"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":193,"name":"ParameterList","src":"4970:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":200,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":194,"name":"ElementaryTypeName","src":"4996:7:22"}],"id":195,"name":"VariableDeclaration","src":"4996:7:22"}],"id":196,"name":"ParameterList","src":"4995:9:22"},{"children":[{"attributes":{"functionReturnParameters":196},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":197,"name":"Identifier","src":"5022:12:22"}],"id":198,"name":"Return","src":"5015:19:22"}],"id":199,"name":"Block","src":"5005:36:22"}],"id":200,"name":"FunctionDefinition","src":"4950:91:22"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":201,"name":"ParameterList","src":"5172:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":208,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":202,"name":"ElementaryTypeName","src":"5198:7:22"}],"id":203,"name":"VariableDeclaration","src":"5198:7:22"}],"id":204,"name":"ParameterList","src":"5197:9:22"},{"children":[{"attributes":{"functionReturnParameters":204},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":94,"type":"address","value":"_licenceDAO"},"id":205,"name":"Identifier","src":"5224:11:22"}],"id":206,"name":"Return","src":"5217:18:22"}],"id":207,"name":"Block","src":"5207:35:22"}],"id":208,"name":"FunctionDefinition","src":"5153:89:22"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":209,"name":"ParameterList","src":"5369:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":216,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":210,"name":"ElementaryTypeName","src":"5395:7:22"}],"id":211,"name":"VariableDeclaration","src":"5395:7:22"}],"id":212,"name":"ParameterList","src":"5394:9:22"},{"children":[{"attributes":{"functionReturnParameters":212},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_tknContractAddress"},"id":213,"name":"Identifier","src":"5421:19:22"}],"id":214,"name":"Return","src":"5414:26:22"}],"id":215,"name":"Block","src":"5404:43:22"}],"id":216,"name":"FunctionDefinition","src":"5342:105:22"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":217,"name":"ParameterList","src":"5571:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":220,"name":"ParameterList","src":"5593:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":218,"name":"Identifier","src":"5583:9:22"}],"id":219,"name":"ModifierInvocation","src":"5583:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":96,"type":"bool","value":"_lockedCryptoFloat"},"id":221,"name":"Identifier","src":"5603:18:22"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":222,"name":"Literal","src":"5624:4:22"}],"id":223,"name":"Assignment","src":"5603:25:22"}],"id":224,"name":"ExpressionStatement","src":"5603:25:22"}],"id":225,"name":"Block","src":"5593:42:22"}],"id":226,"name":"FunctionDefinition","src":"5553:82:22"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":227,"name":"ParameterList","src":"5760:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":230,"name":"ParameterList","src":"5782:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":228,"name":"Identifier","src":"5772:9:22"}],"id":229,"name":"ModifierInvocation","src":"5772:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":98,"type":"bool","value":"_lockedTokenHolder"},"id":231,"name":"Identifier","src":"5792:18:22"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":232,"name":"Literal","src":"5813:4:22"}],"id":233,"name":"Assignment","src":"5792:25:22"}],"id":234,"name":"ExpressionStatement","src":"5792:25:22"}],"id":235,"name":"Block","src":"5782:42:22"}],"id":236,"name":"FunctionDefinition","src":"5741:83:22"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":237,"name":"ParameterList","src":"5945:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":240,"name":"ParameterList","src":"5967:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":238,"name":"Identifier","src":"5957:9:22"}],"id":239,"name":"ModifierInvocation","src":"5957:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":100,"type":"bool","value":"_lockedLicenceDAO"},"id":241,"name":"Identifier","src":"5977:17:22"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":242,"name":"Literal","src":"5997:4:22"}],"id":243,"name":"Assignment","src":"5977:24:22"}],"id":244,"name":"ExpressionStatement","src":"5977:24:22"}],"id":245,"name":"Block","src":"5967:41:22"}],"id":246,"name":"FunctionDefinition","src":"5922:86:22"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":247,"name":"ParameterList","src":"6137:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":250,"name":"ParameterList","src":"6159:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":248,"name":"Identifier","src":"6149:9:22"}],"id":249,"name":"ModifierInvocation","src":"6149:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":102,"type":"bool","value":"_lockedTKNContractAddress"},"id":251,"name":"Identifier","src":"6169:25:22"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":252,"name":"Literal","src":"6197:4:22"}],"id":253,"name":"Assignment","src":"6169:32:22"}],"id":254,"name":"ExpressionStatement","src":"6169:32:22"}],"id":255,"name":"Block","src":"6159:49:22"}],"id":256,"name":"FunctionDefinition","src":"6106:102:22"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":279,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":257,"name":"ElementaryTypeName","src":"6359:15:22"}],"id":258,"name":"VariableDeclaration","src":"6359:25:22"}],"id":259,"name":"ParameterList","src":"6358:27:22"},{"attributes":{"parameters":[null]},"children":[],"id":262,"name":"ParameterList","src":"6405:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":260,"name":"Identifier","src":"6395:9:22"}],"id":261,"name":"ModifierInvocation","src":"6395:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":263,"name":"Identifier","src":"6415:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":518,"type":"function () view returns (bool)","value":"floatLocked"},"id":264,"name":"Identifier","src":"6424:11:22"}],"id":265,"name":"FunctionCall","src":"6424:13:22"}],"id":266,"name":"UnaryOperation","src":"6423:14:22"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":267,"name":"Literal","src":"6439:17:22"}],"id":268,"name":"FunctionCall","src":"6415:42:22"}],"id":269,"name":"ExpressionStatement","src":"6415:42:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":270,"name":"Identifier","src":"6467:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":258,"type":"address payable","value":"_newFloat"},"id":271,"name":"Identifier","src":"6482:9:22"}],"id":272,"name":"Assignment","src":"6467:24:22"}],"id":273,"name":"ExpressionStatement","src":"6467:24:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":274,"name":"Identifier","src":"6506:18:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":258,"type":"address payable","value":"_newFloat"},"id":275,"name":"Identifier","src":"6525:9:22"}],"id":276,"name":"FunctionCall","src":"6506:29:22"}],"id":277,"name":"EmitStatement","src":"6501:34:22"}],"id":278,"name":"Block","src":"6405:137:22"}],"id":279,"name":"FunctionDefinition","src":"6338:204:22"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":302,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":280,"name":"ElementaryTypeName","src":"6700:15:22"}],"id":281,"name":"VariableDeclaration","src":"6700:26:22"}],"id":282,"name":"ParameterList","src":"6699:28:22"},{"attributes":{"parameters":[null]},"children":[],"id":285,"name":"ParameterList","src":"6747:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":283,"name":"Identifier","src":"6737:9:22"}],"id":284,"name":"ModifierInvocation","src":"6737:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":286,"name":"Identifier","src":"6757:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":526,"type":"function () view returns (bool)","value":"holderLocked"},"id":287,"name":"Identifier","src":"6766:12:22"}],"id":288,"name":"FunctionCall","src":"6766:14:22"}],"id":289,"name":"UnaryOperation","src":"6765:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":290,"name":"Literal","src":"6782:27:22"}],"id":291,"name":"FunctionCall","src":"6757:53:22"}],"id":292,"name":"ExpressionStatement","src":"6757:53:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":293,"name":"Identifier","src":"6820:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":281,"type":"address payable","value":"_newHolder"},"id":294,"name":"Identifier","src":"6835:10:22"}],"id":295,"name":"Assignment","src":"6820:25:22"}],"id":296,"name":"ExpressionStatement","src":"6820:25:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"function (address)","value":"UpdatedTokenHolder"},"id":297,"name":"Identifier","src":"6860:18:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":281,"type":"address payable","value":"_newHolder"},"id":298,"name":"Identifier","src":"6879:10:22"}],"id":299,"name":"FunctionCall","src":"6860:30:22"}],"id":300,"name":"EmitStatement","src":"6855:35:22"}],"id":301,"name":"Block","src":"6747:150:22"}],"id":302,"name":"FunctionDefinition","src":"6678:219:22"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":325,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":303,"name":"ElementaryTypeName","src":"7053:7:22"}],"id":304,"name":"VariableDeclaration","src":"7053:15:22"}],"id":305,"name":"ParameterList","src":"7052:17:22"},{"attributes":{"parameters":[null]},"children":[],"id":308,"name":"ParameterList","src":"7089:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":306,"name":"Identifier","src":"7079:9:22"}],"id":307,"name":"ModifierInvocation","src":"7079:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":309,"name":"Identifier","src":"7099:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":310,"name":"Identifier","src":"7108:16:22"}],"id":311,"name":"FunctionCall","src":"7108:18:22"}],"id":312,"name":"UnaryOperation","src":"7107:19:22"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":313,"name":"Literal","src":"7128:15:22"}],"id":314,"name":"FunctionCall","src":"7099:45:22"}],"id":315,"name":"ExpressionStatement","src":"7099:45:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":94,"type":"address","value":"_licenceDAO"},"id":316,"name":"Identifier","src":"7154:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":304,"type":"address","value":"_newDAO"},"id":317,"name":"Identifier","src":"7168:7:22"}],"id":318,"name":"Assignment","src":"7154:21:22"}],"id":319,"name":"ExpressionStatement","src":"7154:21:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":320,"name":"Identifier","src":"7190:17:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":304,"type":"address","value":"_newDAO"},"id":321,"name":"Identifier","src":"7208:7:22"}],"id":322,"name":"FunctionCall","src":"7190:26:22"}],"id":323,"name":"EmitStatement","src":"7185:31:22"}],"id":324,"name":"Block","src":"7089:134:22"}],"id":325,"name":"FunctionDefinition","src":"7027:196:22"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":348,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":326,"name":"ElementaryTypeName","src":"7388:7:22"}],"id":327,"name":"VariableDeclaration","src":"7388:15:22"}],"id":328,"name":"ParameterList","src":"7387:17:22"},{"attributes":{"parameters":[null]},"children":[],"id":331,"name":"ParameterList","src":"7424:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":329,"name":"Identifier","src":"7414:9:22"}],"id":330,"name":"ModifierInvocation","src":"7414:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":332,"name":"Identifier","src":"7434:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":542,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":333,"name":"Identifier","src":"7443:24:22"}],"id":334,"name":"FunctionCall","src":"7443:26:22"}],"id":335,"name":"UnaryOperation","src":"7442:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":336,"name":"Literal","src":"7471:15:22"}],"id":337,"name":"FunctionCall","src":"7434:53:22"}],"id":338,"name":"ExpressionStatement","src":"7434:53:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_tknContractAddress"},"id":339,"name":"Identifier","src":"7497:19:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":327,"type":"address","value":"_newTKN"},"id":340,"name":"Identifier","src":"7519:7:22"}],"id":341,"name":"Assignment","src":"7497:29:22"}],"id":342,"name":"ExpressionStatement","src":"7497:29:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":343,"name":"Identifier","src":"7541:25:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":327,"type":"address","value":"_newTKN"},"id":344,"name":"Identifier","src":"7567:7:22"}],"id":345,"name":"FunctionCall","src":"7541:34:22"}],"id":346,"name":"EmitStatement","src":"7536:39:22"}],"id":347,"name":"Block","src":"7424:158:22"}],"id":348,"name":"FunctionDefinition","src":"7354:228:22"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":375,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":349,"name":"ElementaryTypeName","src":"7752:7:22"}],"id":350,"name":"VariableDeclaration","src":"7752:18:22"}],"id":351,"name":"ParameterList","src":"7751:20:22"},{"attributes":{"parameters":[null]},"children":[],"id":354,"name":"ParameterList","src":"7789:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":116,"type":"modifier ()","value":"onlyDAO"},"id":352,"name":"Identifier","src":"7781:7:22"}],"id":353,"name":"ModifierInvocation","src":"7781:7:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":355,"name":"Identifier","src":"7799:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":356,"name":"Identifier","src":"7807:16:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"_newAmount"},"id":357,"name":"Identifier","src":"7827:10:22"}],"id":358,"name":"BinaryOperation","src":"7807:30:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"_newAmount"},"id":359,"name":"Identifier","src":"7841:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":82,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":360,"name":"Identifier","src":"7855:16:22"}],"id":361,"name":"BinaryOperation","src":"7841:30:22"}],"id":362,"name":"BinaryOperation","src":"7807:64:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":363,"name":"Literal","src":"7873:29:22"}],"id":364,"name":"FunctionCall","src":"7799:104:22"}],"id":365,"name":"ExpressionStatement","src":"7799:104:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"uint256","value":"_licenceAmountScaled"},"id":366,"name":"Identifier","src":"7913:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"_newAmount"},"id":367,"name":"Identifier","src":"7936:10:22"}],"id":368,"name":"Assignment","src":"7913:33:22"}],"id":369,"name":"ExpressionStatement","src":"7913:33:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":51,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":370,"name":"Identifier","src":"7961:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"_newAmount"},"id":371,"name":"Identifier","src":"7982:10:22"}],"id":372,"name":"FunctionCall","src":"7961:32:22"}],"id":373,"name":"EmitStatement","src":"7956:37:22"}],"id":374,"name":"Block","src":"7789:211:22"}],"id":375,"name":"FunctionDefinition","src":"7723:277:22"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":543,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":486,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":376,"name":"ElementaryTypeName","src":"8286:7:22"}],"id":377,"name":"VariableDeclaration","src":"8286:14:22"},{"attributes":{"constant":false,"name":"_amount","scope":486,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":378,"name":"ElementaryTypeName","src":"8302:7:22"}],"id":379,"name":"VariableDeclaration","src":"8302:15:22"}],"id":380,"name":"ParameterList","src":"8285:33:22"},{"attributes":{"parameters":[null]},"children":[],"id":381,"name":"ParameterList","src":"8336:0:22"},{"children":[{"attributes":{"assignments":[383]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":485,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":382,"name":"ElementaryTypeName","src":"8346:7:22"}],"id":383,"name":"VariableDeclaration","src":"8346:18:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"uint256","value":"_amount"},"id":384,"name":"Identifier","src":"8367:7:22"}],"id":385,"name":"VariableDeclarationStatement","src":"8346:28:22"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":386,"name":"Identifier","src":"8433:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_tknContractAddress"},"id":387,"name":"Identifier","src":"8443:19:22"}],"id":388,"name":"BinaryOperation","src":"8433:29:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":601,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"type(contract ERC20)","value":"ERC20"},"id":389,"name":"Identifier","src":"8478:5:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":390,"name":"Identifier","src":"8484:6:22"}],"id":391,"name":"FunctionCall","src":"8478:13:22"}],"id":392,"name":"MemberAccess","src":"8478:30:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":393,"name":"Identifier","src":"8509:3:22"}],"id":394,"name":"MemberAccess","src":"8509:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":395,"name":"Identifier","src":"8521:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":396,"name":"Identifier","src":"8535:10:22"}],"id":397,"name":"FunctionCall","src":"8478:68:22"}],"id":398,"name":"ExpressionStatement","src":"8478:68:22"}],"id":399,"name":"Block","src":"8464:93:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":400,"name":"Identifier","src":"8577:10:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":873,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":848,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"uint256","value":"_amount"},"id":401,"name":"Identifier","src":"8590:7:22"}],"id":402,"name":"MemberAccess","src":"8590:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":82,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":403,"name":"Identifier","src":"8602:16:22"}],"id":404,"name":"FunctionCall","src":"8590:29:22"}],"id":405,"name":"MemberAccess","src":"8590:33:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"uint256","value":"_licenceAmountScaled"},"id":406,"name":"Identifier","src":"8624:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":82,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":407,"name":"Identifier","src":"8647:16:22"}],"id":408,"name":"BinaryOperation","src":"8624:39:22"}],"id":409,"name":"FunctionCall","src":"8590:74:22"}],"id":410,"name":"Assignment","src":"8577:87:22"}],"id":411,"name":"ExpressionStatement","src":"8577:87:22"},{"attributes":{"assignments":[413]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":475,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":412,"name":"ElementaryTypeName","src":"8678:7:22"}],"id":413,"name":"VariableDeclaration","src":"8678:21:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":814,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"uint256","value":"_amount"},"id":414,"name":"Identifier","src":"8702:7:22"}],"id":415,"name":"MemberAccess","src":"8702:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":416,"name":"Identifier","src":"8714:10:22"}],"id":417,"name":"FunctionCall","src":"8702:23:22"}],"id":418,"name":"VariableDeclarationStatement","src":"8678:47:22"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":419,"name":"Identifier","src":"8744:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":420,"name":"ElementaryTypeNameExpression","src":"8754:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":421,"name":"Literal","src":"8762:1:22"}],"id":422,"name":"FunctionCall","src":"8754:10:22"}],"id":423,"name":"BinaryOperation","src":"8744:20:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":601,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"type(contract ERC20)","value":"ERC20"},"id":424,"name":"Identifier","src":"8784:5:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":425,"name":"Identifier","src":"8790:6:22"}],"id":426,"name":"FunctionCall","src":"8784:13:22"}],"id":427,"name":"MemberAccess","src":"8784:30:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":428,"name":"Identifier","src":"8815:3:22"}],"id":429,"name":"MemberAccess","src":"8815:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":430,"name":"Identifier","src":"8827:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":413,"type":"uint256","value":"licenceAmount"},"id":431,"name":"Identifier","src":"8841:13:22"}],"id":432,"name":"FunctionCall","src":"8784:71:22"}],"id":433,"name":"ExpressionStatement","src":"8784:71:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":601,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"type(contract ERC20)","value":"ERC20"},"id":434,"name":"Identifier","src":"8873:5:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":435,"name":"Identifier","src":"8879:6:22"}],"id":436,"name":"FunctionCall","src":"8873:13:22"}],"id":437,"name":"MemberAccess","src":"8873:30:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":438,"name":"Identifier","src":"8904:3:22"}],"id":439,"name":"MemberAccess","src":"8904:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":440,"name":"Identifier","src":"8916:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":441,"name":"Identifier","src":"8930:10:22"}],"id":442,"name":"FunctionCall","src":"8873:68:22"}],"id":443,"name":"ExpressionStatement","src":"8873:68:22"}],"id":444,"name":"Block","src":"8766:190:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":445,"name":"Identifier","src":"8980:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":446,"name":"Identifier","src":"8988:3:22"}],"id":447,"name":"MemberAccess","src":"8988:9:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"uint256","value":"_amount"},"id":448,"name":"Identifier","src":"9001:7:22"}],"id":449,"name":"BinaryOperation","src":"8988:20:22"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":450,"name":"Literal","src":"9010:33:22"}],"id":451,"name":"FunctionCall","src":"8980:64:22"}],"id":452,"name":"ExpressionStatement","src":"8980:64:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":453,"name":"Identifier","src":"9062:12:22"}],"id":455,"name":"MemberAccess","src":"9062:21:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":413,"type":"uint256","value":"licenceAmount"},"id":456,"name":"Identifier","src":"9084:13:22"}],"id":457,"name":"FunctionCall","src":"9062:36:22"}],"id":458,"name":"ExpressionStatement","src":"9062:36:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":459,"name":"Identifier","src":"9116:12:22"}],"id":461,"name":"MemberAccess","src":"9116:21:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":462,"name":"Identifier","src":"9138:10:22"}],"id":463,"name":"FunctionCall","src":"9116:33:22"}],"id":464,"name":"ExpressionStatement","src":"9116:33:22"}],"id":465,"name":"Block","src":"8962:202:22"}],"id":466,"name":"IfStatement","src":"8740:424:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":61,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":467,"name":"Identifier","src":"9183:24:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":468,"name":"Identifier","src":"9208:3:22"}],"id":469,"name":"MemberAccess","src":"9208:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":470,"name":"Identifier","src":"9220:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":471,"name":"Identifier","src":"9234:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":413,"type":"uint256","value":"licenceAmount"},"id":472,"name":"Identifier","src":"9242:13:22"}],"id":473,"name":"FunctionCall","src":"9183:73:22"}],"id":474,"name":"EmitStatement","src":"9178:78:22"}],"id":475,"name":"Block","src":"8563:704:22"}],"id":476,"name":"IfStatement","src":"8429:838:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":71,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":477,"name":"Identifier","src":"9282:24:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":478,"name":"Identifier","src":"9307:3:22"}],"id":479,"name":"MemberAccess","src":"9307:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":480,"name":"Identifier","src":"9319:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":481,"name":"Identifier","src":"9333:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":482,"name":"Identifier","src":"9341:10:22"}],"id":483,"name":"FunctionCall","src":"9282:70:22"}],"id":484,"name":"EmitStatement","src":"9277:75:22"}],"id":485,"name":"Block","src":"8336:1023:22"}],"id":486,"name":"FunctionDefinition","src":"8272:1087:22"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":510,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":487,"name":"ElementaryTypeName","src":"9463:15:22"}],"id":488,"name":"VariableDeclaration","src":"9463:19:22"},{"attributes":{"constant":false,"name":"_asset","scope":510,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":489,"name":"ElementaryTypeName","src":"9484:7:22"}],"id":490,"name":"VariableDeclaration","src":"9484:14:22"},{"attributes":{"constant":false,"name":"_amount","scope":510,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":491,"name":"ElementaryTypeName","src":"9500:7:22"}],"id":492,"name":"VariableDeclaration","src":"9500:15:22"}],"id":493,"name":"ParameterList","src":"9462:54:22"},{"attributes":{"parameters":[null]},"children":[],"id":496,"name":"ParameterList","src":"9536:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":494,"name":"Identifier","src":"9526:9:22"}],"id":495,"name":"ModifierInvocation","src":"9526:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1075,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":497,"name":"Identifier","src":"9546:13:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":488,"type":"address payable","value":"_to"},"id":498,"name":"Identifier","src":"9560:3:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address","value":"_asset"},"id":499,"name":"Identifier","src":"9565:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":492,"type":"uint256","value":"_amount"},"id":500,"name":"Identifier","src":"9573:7:22"}],"id":501,"name":"FunctionCall","src":"9546:35:22"}],"id":502,"name":"ExpressionStatement","src":"9546:35:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":79,"type":"function (address,address,uint256)","value":"Claimed"},"id":503,"name":"Identifier","src":"9596:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":488,"type":"address payable","value":"_to"},"id":504,"name":"Identifier","src":"9604:3:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address","value":"_asset"},"id":505,"name":"Identifier","src":"9609:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":492,"type":"uint256","value":"_amount"},"id":506,"name":"Identifier","src":"9617:7:22"}],"id":507,"name":"FunctionCall","src":"9596:29:22"}],"id":508,"name":"EmitStatement","src":"9591:34:22"}],"id":509,"name":"Block","src":"9536:96:22"}],"id":510,"name":"FunctionDefinition","src":"9448:184:22"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":543,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":511,"name":"ParameterList","src":"9731:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":518,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":512,"name":"ElementaryTypeName","src":"9755:4:22"}],"id":513,"name":"VariableDeclaration","src":"9755:4:22"}],"id":514,"name":"ParameterList","src":"9754:6:22"},{"children":[{"attributes":{"functionReturnParameters":514},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":96,"type":"bool","value":"_lockedCryptoFloat"},"id":515,"name":"Identifier","src":"9778:18:22"}],"id":516,"name":"Return","src":"9771:25:22"}],"id":517,"name":"Block","src":"9761:42:22"}],"id":518,"name":"FunctionDefinition","src":"9711:92:22"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":543,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":519,"name":"ParameterList","src":"9903:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":526,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":520,"name":"ElementaryTypeName","src":"9927:4:22"}],"id":521,"name":"VariableDeclaration","src":"9927:4:22"}],"id":522,"name":"ParameterList","src":"9926:6:22"},{"children":[{"attributes":{"functionReturnParameters":522},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":98,"type":"bool","value":"_lockedTokenHolder"},"id":523,"name":"Identifier","src":"9950:18:22"}],"id":524,"name":"Return","src":"9943:25:22"}],"id":525,"name":"Block","src":"9933:42:22"}],"id":526,"name":"FunctionDefinition","src":"9882:93:22"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":543,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":527,"name":"ParameterList","src":"10079:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":534,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":528,"name":"ElementaryTypeName","src":"10103:4:22"}],"id":529,"name":"VariableDeclaration","src":"10103:4:22"}],"id":530,"name":"ParameterList","src":"10102:6:22"},{"children":[{"attributes":{"functionReturnParameters":530},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":100,"type":"bool","value":"_lockedLicenceDAO"},"id":531,"name":"Identifier","src":"10126:17:22"}],"id":532,"name":"Return","src":"10119:24:22"}],"id":533,"name":"Block","src":"10109:41:22"}],"id":534,"name":"FunctionDefinition","src":"10054:96:22"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":543,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":535,"name":"ParameterList","src":"10254:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":542,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":536,"name":"ElementaryTypeName","src":"10278:4:22"}],"id":537,"name":"VariableDeclaration","src":"10278:4:22"}],"id":538,"name":"ParameterList","src":"10277:6:22"},{"children":[{"attributes":{"functionReturnParameters":538},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":102,"type":"bool","value":"_lockedTKNContractAddress"},"id":539,"name":"Identifier","src":"10301:25:22"}],"id":540,"name":"Return","src":"10294:32:22"}],"id":541,"name":"Block","src":"10284:49:22"}],"id":542,"name":"FunctionDefinition","src":"10221:112:22"}],"id":543,"name":"ContractDefinition","src":"1381:8954:22"}],"id":544,"name":"SourceUnit","src":"767:9569:22"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:20;;-1:-1:-1;;;;;;1543:18:20;-1:-1:-1;;;;;1543:18:20;;;-1:-1:-1;;;;1571:32:20;;;;2239:84:0;;2314:5;1571:32:20;-1:-1:-1;;;1687:15:20;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:20;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:20;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:20:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:20:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:20;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:20:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:20;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:20:-;3222:4;3245:15;-1:-1:-1;;;3245:15:20;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:20:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:20;;;;3656:57;;;;;-1:-1:-1;;;3656:57:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:20;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:20;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:20:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:20;;;;2404:57;;;;;-1:-1:-1;;;2404:57:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:20;;2534:70;;;;-1:-1:-1;;;2534:70:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:20;-1:-1:-1;;;2689:31:20;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:20;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:20;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:20;:17;;-1:-1:-1;;;;;;3032:17:20;-1:-1:-1;;;;;3032:17:20;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;-1:-1:-1;;;1932:55:20;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:20:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:20;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:21:-;-1:-1:-1;;;;;1510:20:21;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:21;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:21;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:21;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:6:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:7:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:7;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:7;-1:-1:-1;;;;;2567:10:7;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:7;;;;;;","srcmap-runtime":"1897:2174:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:13;;;;;;;;;:::i;:::-;;573:184:17;;;;;;;;;:::i;1721:953:14:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:10;;;;;;;;;:::i;:::-;;;;;;;;;612:169:16;;;;;;;;;:::i;505:166:12:-;;;;;;;;;:::i;980:228:11:-;;;;;;;;;:::i;3269:231:7:-;;;;;;;;;:::i;4901:153:13:-;;;;;;;;;:::i;974:127:17:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:13;;;;;;;;;:::i;582:292:10:-;;;;;;;;;:::i;844:101:15:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:11:-;;;;;;;;;:::i;4519:168:13:-;;;;;;;;;:::i;3703:366:7:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:13;;;;;;;;;:::i;838:108:12:-;;;;;;;;;:::i;1023:133:16:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:13;;;;;;;;;:::i;681:140:11:-;;;;;;;;;:::i;858:226:14:-;;;;;;;;;:::i;1514:127:11:-;;;;;;;;;:::i;2320:80:7:-;;;;;;;;;:::i;1107:169:17:-;1174:4;-1:-1:-1;;;;;;1197:32:17;;-1:-1:-1;;;1197:32:17;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:13:-;2932:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:13;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:13;;:18;-1:-1:-1;;3185:18:13;:15;:18;;-1:-1:-1;3185:18:13:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:13;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:13;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:13;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:13;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:13;;4052:6;;-1:-1:-1;4060:20:13;;;;-1:-1:-1;4082:17:13;4012:11;:88::i;:::-;400:1:9;;;;;2854:1263:13;;;;:::o;573:184:17:-;668:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:17;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:14:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:14;;;;;;;;;;-1:-1:-1;;;;;1849:29:14;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:14;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:14;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:14;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:14;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:14;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:14;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:14;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:14;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:14;;-1:-1:-1;2373:103:14;-1:-1:-1;2489:8:14;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:14;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:14;;-1:-1:-1;;;1721:953:14;;;;;:::o;1195:454:10:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:10;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:10;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:10;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:10;-1:-1:-1;1195:454:10;;;;;;:::o;612:169:16:-;687:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:16;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:16;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:12:-;584:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:12;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:11;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:11:o;3269:231:7:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:7;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:7;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:13:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:17:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:17;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:13:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:10:-;674:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:10;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:10;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:15:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:15;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:11;1302:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:11;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:13:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:7;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:7;-1:-1:-1;3844:6:7;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:7;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:7;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:7;;3840:199;;;-1:-1:-1;3703:366:7;;;;:::o;5193:128:13:-;5247:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:13;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:12:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:16;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:13:-;5617:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:13;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:13;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:13;;:16;-1:-1:-1;5701:4:13;;-1:-1:-1;5701:4:13;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:9;5541:225:13;;;;:::o;681:140:11:-;743:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:11;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:14:-;955:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:14;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:14;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:14;-1:-1:-1;;;;;971:43:14;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:11:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:11;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:16:-;1229:4;-1:-1:-1;;;;;;1252:34:16;;-1:-1:-1;;;1252:34:16;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:7:-;3596:3;;:15;;-1:-1:-1;;;3596:15:7;;3564:4;;;;-1:-1:-1;;;;;3596:3:7;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:7;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:7;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:7;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:7;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:7;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:8:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:6:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:13:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:13;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:13;;;;;;-1:-1:-1;;6760:43:13;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:13;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:13;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:8:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:8;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:8;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:8;;:::o;414:204:9:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:9;576:10;570:17;-1:-1:-1;;;566:36:9;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:9;87:34:-1;-1:-1;;;;;;776:20:9;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:9;743:64::o;951:169:15:-;1018:4;-1:-1:-1;;;;;;1041:32:15;;-1:-1:-1;;;1041:32:15;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:8:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:8;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:8:o;8685:393:6:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:6;87:34:-1;135:17;;-1:-1;8858:14:6;-1:-1:-1;8839:33:6;-1:-1:-1;8960:2:6;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:6;;8685:393;-1:-1:-1;;;;;8685:393:6:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:6:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:6;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:6;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:14:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:14;;:11;-1:-1:-1;;;;;2770:37:14;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:6:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:6;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:6;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:6;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:6;;513:2;499:26;489:42;;468:73::o;6035:245:13:-;6102:4;-1:-1:-1;;;;;;6125:38:13;;-1:-1:-1;;;6125:38:13;;:93;;-1:-1:-1;;;;;;;6182:36:13;;-1:-1:-1;;;6182:36:13;6125:93;:148;;;;6237:36;6261:11;1019:4:12;-1:-1:-1;;;;;;1042:40:12;;-1:-1:-1;;;1042:40:12;;:80;;;1086:36;1110:11;1714:4:11;-1:-1:-1;;;;;;1737:32:11;;-1:-1:-1;;;1737:32:11;;:71;;-1:-1:-1;;;;;;;1773:35:11;;-1:-1:-1;;;1773:35:11;1737:71;:111;;;;1812:36;1836:11;1722:4:10;-1:-1:-1;;;;;;1745:31:10;;-1:-1:-1;;;1745:31:10;;:71;;-1:-1:-1;;;;;;;;;;204:32:9;;;1780:36:10;114:129:9:o;1897:2174:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:7;;;-1:-1:-1;1897:2174:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:8:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:21;;;;;;;","srcmap-runtime":"961:696:21:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","srcmap":"1381:8954:22:-;;;1122:66:18;1272:58;;2313:80:22;;;-1:-1:-1;;;;;;2313:80:22;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:22;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:22;;;;;;;;;;;;;;;;;;;;;;;1242:12:19;:23;;-1:-1:-1;;;;;;1242:23:19;-1:-1:-1;;;;;1242:23:19;;;;;3616:558:22;;;;;;;;;1665:30:18;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:22;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:22;;;-1:-1:-1;;;;;;4012:22:22;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:22;-1:-1:-1;;;;;4123:34:22;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:22;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:22;-1:-1:-1;;;;;7354:228:22;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:22;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:22;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:22;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:22;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:22;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:22;-1:-1:-1;;;;;6678:219:22;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:22;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:22;;:::i;1364:91:19:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:19;;;:::i;10221:112:22:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:22;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:22;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:22;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:22;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:22;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:22;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:22;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:22;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:22;-1:-1:-1;;;;;6338:204:22;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:22;;;:::i;2169:95:18:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:18;;;:::i;10054:96:22:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:22;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:22;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:22;-1:-1:-1;;;;;7027:196:22;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:22;;;:::i;6106:102::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;6169:25:22;:32;;-1:-1:-1;;;;6169:32:22;-1:-1:-1;;;6169:32:22;;;6106:102::o;7354:228::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;7443:26:22;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:22;;;;;;;;;;;;-1:-1:-1;;;7434:53:22;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:22;;-1:-1:-1;;;;;;7497:29:22;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:22;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:22;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:22;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:22;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:22;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:22;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:22;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:22;;:33;;-1:-1:-1;;;;;9116:12:22;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:22;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:22;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:22;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:22;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:22;4950:91;:::o;6678:219::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;6766:14:22;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:22;;-1:-1:-1;;;;;;6820:25:22;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;5977:17:22;:24;;-1:-1:-1;;;;5977:24:22;-1:-1:-1;;;5977:24:22;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:22;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:19:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:19;1364:91;:::o;10221:112:22:-;10301:25;;-1:-1:-1;;;10301:25:22;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:22;;;;;9711:92::o;9448:184::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;9546:35:22;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:22;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:22;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;5603:18:22;:25;;-1:-1:-1;;;;5603:25:22;-1:-1:-1;;;5603:25:22;;;5553:82::o;6338:204::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;6424:13:22;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:22;;;;;;;;;;;;-1:-1:-1;;;6415:42:22;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:22;;-1:-1:-1;;;;;;6467:24:22;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;5792:18:22;:25;;-1:-1:-1;;;;5792:25:22;-1:-1:-1;;;5792:25:22;;;5741:83::o;2169:95:18:-;2242:15;;2169:95;:::o;10054:96:22:-;10126:17;;-1:-1:-1;;;10126:17:22;;;;;10054:96::o;7027:196::-;2043:20:18;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:18;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:18;;;;;;;;;;;;;;;7108:18:22;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:22;;;;;;;;;;;;-1:-1:-1;;;7099:45:22;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:22;;-1:-1:-1;;;;;;7154:21:22;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:22;;;;;9882:93::o;2554:148:18:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:18;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:18;-1:-1:-1;;;;;2636:59:18;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:18;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:18;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:18;;2554:148;-1:-1:-1;;2554:148:18:o;1982:201:3:-;2107:68;;;-1:-1:-1;;;;;2107:68:3;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:3;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:4:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:4;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:4;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:21:-;-1:-1:-1;;;;;1510:20:21;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:21;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:21;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:21;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:19:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:19;;;;;;;;;;-1:-1:-1;;;;;1735:12:19;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:19;1716:61;;;-1:-1:-1;;;1716:61:19;;;;;;;;;;-1:-1:-1;;;;;1716:54:19;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:3;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/transferrable.sol","licence.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[1602],"IController":[1167]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1150,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":2071,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":1603,"symbolAliases":[null],"unitAlias":""},"id":1151,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":1077,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":1603,"symbolAliases":[null],"unitAlias":""},"id":1152,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[1167],"name":"IController","scope":1603},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":1167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1159,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1153,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":1154,"name":"VariableDeclaration","src":"1015:7:0"}],"id":1155,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1159,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1156,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":1157,"name":"VariableDeclaration","src":"1047:4:0"}],"id":1158,"name":"ParameterList","src":"1046:6:0"}],"id":1159,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":1167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":1166,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1160,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":1161,"name":"VariableDeclaration","src":"1076:7:0"}],"id":1162,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1166,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1163,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":1164,"name":"VariableDeclaration","src":"1108:4:0"}],"id":1165,"name":"ParameterList","src":"1107:6:0"}],"id":1166,"name":"FunctionDefinition","src":"1059:55:0"}],"id":1167,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[1076,1167,2070],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[1602,1076,2070,1167],"name":"Controller","scope":1603},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":1167,"type":"contract IController"},"id":1168,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":1169,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":2070,"type":"contract Ownable"},"id":1170,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":1171,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":1076,"type":"contract Transferrable"},"id":1172,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":1173,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1179,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1174,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":1175,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":1179,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1176,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":1177,"name":"VariableDeclaration","src":"1564:19:0"}],"id":1178,"name":"ParameterList","src":"1546:38:0"}],"id":1179,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1185,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1180,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":1181,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":1185,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1182,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":1183,"name":"VariableDeclaration","src":"1631:19:0"}],"id":1184,"name":"ParameterList","src":"1613:38:0"}],"id":1185,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1191,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1186,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":1187,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":1191,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1188,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":1189,"name":"VariableDeclaration","src":"1692:14:0"}],"id":1190,"name":"ParameterList","src":"1674:33:0"}],"id":1191,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1197,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1192,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":1193,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":1197,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1194,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":1195,"name":"VariableDeclaration","src":"1749:14:0"}],"id":1196,"name":"ParameterList","src":"1731:33:0"}],"id":1197,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1198,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":1199,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1200,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":1201,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1205,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1202,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":1203,"name":"VariableDeclaration","src":"1814:15:0"}],"id":1204,"name":"ParameterList","src":"1784:46:0"}],"id":1205,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1209,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1206,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":1207,"name":"VariableDeclaration","src":"1851:15:0"}],"id":1208,"name":"ParameterList","src":"1850:17:0"}],"id":1209,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1213,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1210,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":1211,"name":"VariableDeclaration","src":"1887:15:0"}],"id":1212,"name":"ParameterList","src":"1886:17:0"}],"id":1213,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":1602,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":1214,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":1215,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":1216,"name":"Mapping","src":"1910:24:0"}],"id":1217,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":1602,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1218,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":1219,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":1602,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":1220,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":1221,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":1222,"name":"Mapping","src":"1991:24:0"}],"id":1223,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":1602,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1224,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":1225,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":1602,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1226,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":1227,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":1237,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1228,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":1229,"name":"VariableDeclaration","src":"2251:30:0"}],"id":1230,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":1235,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2070,"type":"type(contract Ownable)","value":"Ownable"},"id":1231,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1229,"type":"address payable","value":"_ownerAddress_"},"id":1232,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1233,"name":"Literal","src":"2314:5:0"}],"id":1234,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":1236,"name":"Block","src":"2321:2:0"}],"id":1237,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1238,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1239,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1240,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1241,"name":"Identifier","src":"2431:3:0"}],"id":1242,"name":"MemberAccess","src":"2431:10:0"}],"id":1243,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":1244,"name":"Literal","src":"2444:21:0"}],"id":1245,"name":"FunctionCall","src":"2414:52:0"}],"id":1246,"name":"ExpressionStatement","src":"2414:52:0"},{"id":1247,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":1248,"name":"Block","src":"2404:80:0"}],"id":1249,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1250,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1251,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2069,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1252,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1253,"name":"Identifier","src":"2585:3:0"}],"id":1254,"name":"MemberAccess","src":"2585:10:0"}],"id":1255,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1256,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1257,"name":"Identifier","src":"2609:3:0"}],"id":1258,"name":"MemberAccess","src":"2609:10:0"}],"id":1259,"name":"IndexAccess","src":"2600:20:0"}],"id":1260,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":1261,"name":"Literal","src":"2622:30:0"}],"id":1262,"name":"FunctionCall","src":"2568:85:0"}],"id":1263,"name":"ExpressionStatement","src":"2568:85:0"},{"id":1264,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":1265,"name":"Block","src":"2558:113:0"}],"id":1266,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1267,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1268,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1381,"type":"function () view returns (bool)","value":"isStopped"},"id":1269,"name":"Identifier","src":"2765:9:0"}],"id":1270,"name":"FunctionCall","src":"2765:11:0"}],"id":1271,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":1272,"name":"Literal","src":"2778:23:0"}],"id":1273,"name":"FunctionCall","src":"2756:46:0"}],"id":1274,"name":"ExpressionStatement","src":"2756:46:0"},{"id":1275,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":1276,"name":"Block","src":"2746:74:0"}],"id":1277,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1291,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1278,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":1279,"name":"VariableDeclaration","src":"2961:16:0"}],"id":1280,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1285,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":1281,"name":"Identifier","src":"2988:9:0"}],"id":1282,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1283,"name":"Identifier","src":"2998:10:0"}],"id":1284,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1435,"type":"function (address)","value":"_addAdmin"},"id":1286,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1279,"type":"address","value":"_account"},"id":1287,"name":"Identifier","src":"3029:8:0"}],"id":1288,"name":"FunctionCall","src":"3019:19:0"}],"id":1289,"name":"ExpressionStatement","src":"3019:19:0"}],"id":1290,"name":"Block","src":"3009:36:0"}],"id":1291,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1303,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1292,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":1293,"name":"VariableDeclaration","src":"3195:16:0"}],"id":1294,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1297,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":1295,"name":"Identifier","src":"3222:9:0"}],"id":1296,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"function (address)","value":"_removeAdmin"},"id":1298,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1293,"type":"address","value":"_account"},"id":1299,"name":"Identifier","src":"3255:8:0"}],"id":1300,"name":"FunctionCall","src":"3242:22:0"}],"id":1301,"name":"ExpressionStatement","src":"3242:22:0"}],"id":1302,"name":"Block","src":"3232:39:0"}],"id":1303,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":1602,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1304,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1311,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1305,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":1306,"name":"VariableDeclaration","src":"3368:7:0"}],"id":1307,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":1307},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1219,"type":"uint256","value":"_adminCount"},"id":1308,"name":"Identifier","src":"3394:11:0"}],"id":1309,"name":"Return","src":"3387:18:0"}],"id":1310,"name":"Block","src":"3377:35:0"}],"id":1311,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1325,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1312,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":1313,"name":"VariableDeclaration","src":"3573:16:0"}],"id":1314,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1319,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1315,"name":"Identifier","src":"3600:16:0"}],"id":1316,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1317,"name":"Identifier","src":"3617:10:0"}],"id":1318,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1517,"type":"function (address)","value":"_addController"},"id":1320,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1313,"type":"address","value":"_account"},"id":1321,"name":"Identifier","src":"3653:8:0"}],"id":1322,"name":"FunctionCall","src":"3638:24:0"}],"id":1323,"name":"ExpressionStatement","src":"3638:24:0"}],"id":1324,"name":"Block","src":"3628:41:0"}],"id":1325,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1337,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1326,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":1327,"name":"VariableDeclaration","src":"3839:16:0"}],"id":1328,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1331,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1329,"name":"Identifier","src":"3866:16:0"}],"id":1330,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1545,"type":"function (address)","value":"_removeController"},"id":1332,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1327,"type":"address","value":"_account"},"id":1333,"name":"Identifier","src":"3911:8:0"}],"id":1334,"name":"FunctionCall","src":"3893:27:0"}],"id":1335,"name":"ExpressionStatement","src":"3893:27:0"}],"id":1336,"name":"Block","src":"3883:44:0"}],"id":1337,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":1602,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1338,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1339,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":1340,"name":"VariableDeclaration","src":"4072:7:0"}],"id":1341,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":1341},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1225,"type":"uint256","value":"_controllerCount"},"id":1342,"name":"Identifier","src":"4098:16:0"}],"id":1343,"name":"Return","src":"4091:23:0"}],"id":1344,"name":"Block","src":"4081:40:0"}],"id":1345,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":1602,"stateMutability":"view","superFunction":1166,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1359,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1346,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":1347,"name":"VariableDeclaration","src":"4242:16:0"}],"id":1348,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1359,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1351,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":1352,"name":"VariableDeclaration","src":"4294:4:0"}],"id":1353,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1349,"name":"Identifier","src":"4274:10:0"}],"id":1350,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":1353},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1354,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1347,"type":"address","value":"_account"},"id":1355,"name":"Identifier","src":"4326:8:0"}],"id":1356,"name":"IndexAccess","src":"4317:18:0"}],"id":1357,"name":"Return","src":"4310:25:0"}],"id":1358,"name":"Block","src":"4300:42:0"}],"id":1359,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":1602,"stateMutability":"view","superFunction":1159,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1373,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1360,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":1361,"name":"VariableDeclaration","src":"4476:16:0"}],"id":1362,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1373,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1365,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":1366,"name":"VariableDeclaration","src":"4528:4:0"}],"id":1367,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1363,"name":"Identifier","src":"4508:10:0"}],"id":1364,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":1367},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1368,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1361,"type":"address","value":"_account"},"id":1369,"name":"Identifier","src":"4565:8:0"}],"id":1370,"name":"IndexAccess","src":"4551:23:0"}],"id":1371,"name":"Return","src":"4544:30:0"}],"id":1372,"name":"Block","src":"4534:47:0"}],"id":1373,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":1602,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1374,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":1381,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1375,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":1376,"name":"VariableDeclaration","src":"4769:4:0"}],"id":1377,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":1377},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1227,"type":"bool","value":"_stopped"},"id":1378,"name":"Identifier","src":"4792:8:0"}],"id":1379,"name":"Return","src":"4785:15:0"}],"id":1380,"name":"Block","src":"4775:32:0"}],"id":1381,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1435,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1382,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":1383,"name":"VariableDeclaration","src":"4894:16:0"}],"id":1384,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1385,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1386,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1387,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1388,"name":"Identifier","src":"4948:8:0"}],"id":1389,"name":"IndexAccess","src":"4939:18:0"}],"id":1390,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":1391,"name":"Literal","src":"4959:38:0"}],"id":1392,"name":"FunctionCall","src":"4930:68:0"}],"id":1393,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1394,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1395,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1396,"name":"Identifier","src":"5031:8:0"}],"id":1397,"name":"IndexAccess","src":"5017:23:0"}],"id":1398,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":1399,"name":"Literal","src":"5042:42:0"}],"id":1400,"name":"FunctionCall","src":"5008:77:0"}],"id":1401,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1402,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2069,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1403,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1404,"name":"Identifier","src":"5113:8:0"}],"id":1405,"name":"FunctionCall","src":"5104:18:0"}],"id":1406,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":1407,"name":"Literal","src":"5124:39:0"}],"id":1408,"name":"FunctionCall","src":"5095:69:0"}],"id":1409,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1410,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1411,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1412,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1413,"name":"Literal","src":"5202:1:0"}],"id":1414,"name":"FunctionCall","src":"5194:10:0"}],"id":1415,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":1416,"name":"Literal","src":"5206:38:0"}],"id":1417,"name":"FunctionCall","src":"5174:71:0"}],"id":1418,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1419,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1420,"name":"Identifier","src":"5264:8:0"}],"id":1421,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1422,"name":"Literal","src":"5276:4:0"}],"id":1423,"name":"Assignment","src":"5255:25:0"}],"id":1424,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1219,"type":"uint256","value":"_adminCount"},"id":1425,"name":"Identifier","src":"5290:11:0"}],"id":1426,"name":"UnaryOperation","src":"5290:13:0"}],"id":1427,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1191,"type":"function (address,address)","value":"AddedAdmin"},"id":1428,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1429,"name":"Identifier","src":"5329:3:0"}],"id":1430,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"address","value":"_account"},"id":1431,"name":"Identifier","src":"5341:8:0"}],"id":1432,"name":"FunctionCall","src":"5318:32:0"}],"id":1433,"name":"EmitStatement","src":"5313:37:0"}],"id":1434,"name":"Block","src":"4920:437:0"}],"id":1435,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1463,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1436,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":1437,"name":"VariableDeclaration","src":"5456:16:0"}],"id":1438,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1439,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1440,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1441,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1437,"type":"address","value":"_account"},"id":1442,"name":"Identifier","src":"5509:8:0"}],"id":1443,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":1444,"name":"Literal","src":"5520:34:0"}],"id":1445,"name":"FunctionCall","src":"5492:63:0"}],"id":1446,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1447,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1437,"type":"address","value":"_account"},"id":1448,"name":"Identifier","src":"5574:8:0"}],"id":1449,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1450,"name":"Literal","src":"5586:5:0"}],"id":1451,"name":"Assignment","src":"5565:26:0"}],"id":1452,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1219,"type":"uint256","value":"_adminCount"},"id":1453,"name":"Identifier","src":"5601:11:0"}],"id":1454,"name":"UnaryOperation","src":"5601:13:0"}],"id":1455,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1197,"type":"function (address,address)","value":"RemovedAdmin"},"id":1456,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1457,"name":"Identifier","src":"5642:3:0"}],"id":1458,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1437,"type":"address","value":"_account"},"id":1459,"name":"Identifier","src":"5654:8:0"}],"id":1460,"name":"FunctionCall","src":"5629:34:0"}],"id":1461,"name":"EmitStatement","src":"5624:39:0"}],"id":1462,"name":"Block","src":"5482:188:0"}],"id":1463,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1517,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1464,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":1465,"name":"VariableDeclaration","src":"5767:16:0"}],"id":1466,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1467,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1468,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1217,"type":"mapping(address => bool)","value":"_isAdmin"},"id":1469,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1470,"name":"Identifier","src":"5821:8:0"}],"id":1471,"name":"IndexAccess","src":"5812:18:0"}],"id":1472,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":1473,"name":"Literal","src":"5832:38:0"}],"id":1474,"name":"FunctionCall","src":"5803:68:0"}],"id":1475,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1476,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1477,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1478,"name":"Identifier","src":"5904:8:0"}],"id":1479,"name":"IndexAccess","src":"5890:23:0"}],"id":1480,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":1481,"name":"Literal","src":"5915:42:0"}],"id":1482,"name":"FunctionCall","src":"5881:77:0"}],"id":1483,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1484,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2069,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1485,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1486,"name":"Identifier","src":"5986:8:0"}],"id":1487,"name":"FunctionCall","src":"5977:18:0"}],"id":1488,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":1489,"name":"Literal","src":"5997:39:0"}],"id":1490,"name":"FunctionCall","src":"5968:69:0"}],"id":1491,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1492,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1493,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1494,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1495,"name":"Literal","src":"6075:1:0"}],"id":1496,"name":"FunctionCall","src":"6067:10:0"}],"id":1497,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":1498,"name":"Literal","src":"6079:38:0"}],"id":1499,"name":"FunctionCall","src":"6047:71:0"}],"id":1500,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1501,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1502,"name":"Identifier","src":"6142:8:0"}],"id":1503,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1504,"name":"Literal","src":"6154:4:0"}],"id":1505,"name":"Assignment","src":"6128:30:0"}],"id":1506,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1225,"type":"uint256","value":"_controllerCount"},"id":1507,"name":"Identifier","src":"6168:16:0"}],"id":1508,"name":"UnaryOperation","src":"6168:18:0"}],"id":1509,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1179,"type":"function (address,address)","value":"AddedController"},"id":1510,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1511,"name":"Identifier","src":"6217:3:0"}],"id":1512,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"address","value":"_account"},"id":1513,"name":"Identifier","src":"6229:8:0"}],"id":1514,"name":"FunctionCall","src":"6201:37:0"}],"id":1515,"name":"EmitStatement","src":"6196:42:0"}],"id":1516,"name":"Block","src":"5793:452:0"}],"id":1517,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":1545,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1518,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":1519,"name":"VariableDeclaration","src":"6354:16:0"}],"id":1520,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":1521,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1522,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1523,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1519,"type":"address","value":"_account"},"id":1524,"name":"Identifier","src":"6412:8:0"}],"id":1525,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":1526,"name":"Literal","src":"6423:38:0"}],"id":1527,"name":"FunctionCall","src":"6390:72:0"}],"id":1528,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1223,"type":"mapping(address => bool)","value":"_isController"},"id":1529,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1519,"type":"address","value":"_account"},"id":1530,"name":"Identifier","src":"6486:8:0"}],"id":1531,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1532,"name":"Literal","src":"6498:5:0"}],"id":1533,"name":"Assignment","src":"6472:31:0"}],"id":1534,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1225,"type":"uint256","value":"_controllerCount"},"id":1535,"name":"Identifier","src":"6513:16:0"}],"id":1536,"name":"UnaryOperation","src":"6513:18:0"}],"id":1537,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1185,"type":"function (address,address)","value":"RemovedController"},"id":1538,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1539,"name":"Identifier","src":"6564:3:0"}],"id":1540,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1519,"type":"address","value":"_account"},"id":1541,"name":"Identifier","src":"6576:8:0"}],"id":1542,"name":"FunctionCall","src":"6546:39:0"}],"id":1543,"name":"EmitStatement","src":"6541:44:0"}],"id":1544,"name":"Block","src":"6380:212:0"}],"id":1545,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1546,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":1549,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":1547,"name":"Identifier","src":"6690:16:0"}],"id":1548,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1227,"type":"bool","value":"_stopped"},"id":1550,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1551,"name":"Literal","src":"6728:4:0"}],"id":1552,"name":"Assignment","src":"6717:15:0"}],"id":1553,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1209,"type":"function (address)","value":"Stopped"},"id":1554,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1555,"name":"Identifier","src":"6755:3:0"}],"id":1556,"name":"MemberAccess","src":"6755:10:0"}],"id":1557,"name":"FunctionCall","src":"6747:19:0"}],"id":1558,"name":"EmitStatement","src":"6742:24:0"}],"id":1559,"name":"Block","src":"6707:66:0"}],"id":1560,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1561,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":1564,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":1562,"name":"Identifier","src":"6848:9:0"}],"id":1563,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1227,"type":"bool","value":"_stopped"},"id":1565,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1566,"name":"Literal","src":"6879:5:0"}],"id":1567,"name":"Assignment","src":"6868:16:0"}],"id":1568,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1213,"type":"function (address)","value":"Started"},"id":1569,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1570,"name":"Identifier","src":"6907:3:0"}],"id":1571,"name":"MemberAccess","src":"6907:10:0"}],"id":1572,"name":"FunctionCall","src":"6899:19:0"}],"id":1573,"name":"EmitStatement","src":"6894:24:0"}],"id":1574,"name":"Block","src":"6858:67:0"}],"id":1575,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":1602,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1601,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1576,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":1577,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":1601,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1578,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":1579,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":1601,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1580,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":1581,"name":"VariableDeclaration","src":"7066:15:0"}],"id":1582,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":1587,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1249,"type":"modifier ()","value":"onlyAdmin"},"id":1583,"name":"Identifier","src":"7092:9:0"}],"id":1584,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1277,"type":"modifier ()","value":"notStopped"},"id":1585,"name":"Identifier","src":"7102:10:0"}],"id":1586,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1075,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":1588,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1577,"type":"address payable","value":"_to"},"id":1589,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1579,"type":"address","value":"_asset"},"id":1590,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1581,"type":"uint256","value":"_amount"},"id":1591,"name":"Identifier","src":"7150:7:0"}],"id":1592,"name":"FunctionCall","src":"7123:35:0"}],"id":1593,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1205,"type":"function (address,address,uint256)","value":"Claimed"},"id":1594,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1577,"type":"address payable","value":"_to"},"id":1595,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1579,"type":"address","value":"_asset"},"id":1596,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1581,"type":"uint256","value":"_amount"},"id":1597,"name":"Identifier","src":"7194:7:0"}],"id":1598,"name":"FunctionCall","src":"7173:29:0"}],"id":1599,"name":"EmitStatement","src":"7168:34:0"}],"id":1600,"name":"Block","src":"7113:96:0"}],"id":1601,"name":"FunctionDefinition","src":"7014:195:0"}],"id":1602,"name":"ContractDefinition","src":"1460:5751:0"}],"id":1603,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[1095]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1078,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[1095],"name":"Address","scope":1096},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":1095,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":1094,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1079,"name":"ElementaryTypeName","src":"562:7:1"}],"id":1080,"name":"VariableDeclaration","src":"562:15:1"}],"id":1081,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":1094,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1082,"name":"ElementaryTypeName","src":"602:4:1"}],"id":1083,"name":"VariableDeclaration","src":"602:4:1"}],"id":1084,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[1086],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":1093,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1085,"name":"ElementaryTypeName","src":"805:7:1"}],"id":1086,"name":"VariableDeclaration","src":"805:12:1"}],"id":1087,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":1086,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":1080,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":1088,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":1084},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1086,"type":"uint256","value":"size"},"id":1089,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1090,"name":"Literal","src":"947:1:1"}],"id":1091,"name":"BinaryOperation","src":"940:8:1"}],"id":1092,"name":"Return","src":"933:15:1"}],"id":1093,"name":"Block","src":"608:347:1"}],"id":1094,"name":"FunctionDefinition","src":"542:413:1"}],"id":1095,"name":"ContractDefinition","src":"94:863:1"}],"id":1096,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[1148]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":1097,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[1148],"name":"ERC20","scope":1149},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":1148,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":1106,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1098,"name":"ElementaryTypeName","src":"193:7:2"}],"id":1099,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":1106,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1100,"name":"ElementaryTypeName","src":"209:7:2"}],"id":1101,"name":"VariableDeclaration","src":"209:16:2"}],"id":1102,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1106,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1103,"name":"ElementaryTypeName","src":"250:7:2"}],"id":1104,"name":"VariableDeclaration","src":"250:7:2"}],"id":1105,"name":"ParameterList","src":"249:9:2"}],"id":1106,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":1148,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":1115,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1107,"name":"ElementaryTypeName","src":"281:7:2"}],"id":1108,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1109,"name":"ElementaryTypeName","src":"299:7:2"}],"id":1110,"name":"VariableDeclaration","src":"299:14:2"}],"id":1111,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1115,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1112,"name":"ElementaryTypeName","src":"333:4:2"}],"id":1113,"name":"VariableDeclaration","src":"333:4:2"}],"id":1114,"name":"ParameterList","src":"332:6:2"}],"id":1115,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":1148,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":1122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1116,"name":"ElementaryTypeName","src":"363:7:2"}],"id":1117,"name":"VariableDeclaration","src":"363:12:2"}],"id":1118,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1119,"name":"ElementaryTypeName","src":"400:7:2"}],"id":1120,"name":"VariableDeclaration","src":"400:7:2"}],"id":1121,"name":"ParameterList","src":"399:9:2"}],"id":1122,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":1148,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1123,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1124,"name":"ElementaryTypeName","src":"460:7:2"}],"id":1125,"name":"VariableDeclaration","src":"460:7:2"}],"id":1126,"name":"ParameterList","src":"459:9:2"}],"id":1127,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":1148,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1136,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1128,"name":"ElementaryTypeName","src":"492:7:2"}],"id":1129,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":1136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1130,"name":"ElementaryTypeName","src":"505:7:2"}],"id":1131,"name":"VariableDeclaration","src":"505:14:2"}],"id":1132,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1136,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1133,"name":"ElementaryTypeName","src":"539:4:2"}],"id":1134,"name":"VariableDeclaration","src":"539:4:2"}],"id":1135,"name":"ParameterList","src":"538:6:2"}],"id":1136,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":1148,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":1147,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1137,"name":"ElementaryTypeName","src":"572:7:2"}],"id":1138,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":1147,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1139,"name":"ElementaryTypeName","src":"587:7:2"}],"id":1140,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":1147,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1141,"name":"ElementaryTypeName","src":"600:7:2"}],"id":1142,"name":"VariableDeclaration","src":"600:14:2"}],"id":1143,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":1147,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1144,"name":"ElementaryTypeName","src":"634:4:2"}],"id":1145,"name":"VariableDeclaration","src":"634:4:2"}],"id":1146,"name":"ParameterList","src":"633:6:2"}],"id":1147,"name":"FunctionDefinition","src":"550:90:2"}],"id":1148,"name":"ContractDefinition","src":"152:490:2"}],"id":1149,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[762]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":545,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":1149,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":763,"symbolAliases":[null],"unitAlias":""},"id":546,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":896,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":763,"symbolAliases":[null],"unitAlias":""},"id":547,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":1096,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":763,"symbolAliases":[null],"unitAlias":""},"id":548,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[762],"name":"SafeERC20","scope":763},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":895,"type":"library SafeMath"},"id":549,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":550,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":551,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":1095,"type":"library Address"},"id":552,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":553,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":554,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":576,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":555,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":556,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":576,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":557,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":558,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":576,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":559,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":560,"name":"VariableDeclaration","src":"1850:13:3"}],"id":561,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":562,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":563,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":556,"type":"contract ERC20","value":"token"},"id":564,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":565,"name":"Identifier","src":"1910:3:3"}],"id":566,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":1136,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":556,"type":"contract ERC20","value":"token"},"id":567,"name":"Identifier","src":"1933:5:3"}],"id":568,"name":"MemberAccess","src":"1933:14:3"}],"id":569,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":558,"type":"address","value":"to"},"id":570,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":560,"type":"uint256","value":"value"},"id":571,"name":"Identifier","src":"1962:5:3"}],"id":572,"name":"FunctionCall","src":"1910:58:3"}],"id":573,"name":"FunctionCall","src":"1884:85:3"}],"id":574,"name":"ExpressionStatement","src":"1884:85:3"}],"id":575,"name":"Block","src":"1874:102:3"}],"id":576,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":601,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":577,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":578,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":601,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":579,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":580,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":601,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":581,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":582,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":601,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":583,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":584,"name":"VariableDeclaration","src":"2047:13:3"}],"id":585,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":586,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":587,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":578,"type":"contract ERC20","value":"token"},"id":588,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":589,"name":"Identifier","src":"2107:3:3"}],"id":590,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":1147,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":578,"type":"contract ERC20","value":"token"},"id":591,"name":"Identifier","src":"2130:5:3"}],"id":592,"name":"MemberAccess","src":"2130:18:3"}],"id":593,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":580,"type":"address","value":"from"},"id":594,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":582,"type":"address","value":"to"},"id":595,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":584,"type":"uint256","value":"value"},"id":596,"name":"Identifier","src":"2169:5:3"}],"id":597,"name":"FunctionCall","src":"2107:68:3"}],"id":598,"name":"FunctionCall","src":"2081:95:3"}],"id":599,"name":"ExpressionStatement","src":"2081:95:3"}],"id":600,"name":"Block","src":"2071:112:3"}],"id":601,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":642,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":602,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":603,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":642,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":604,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":605,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":642,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":606,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":607,"name":"VariableDeclaration","src":"2240:13:3"}],"id":608,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":609,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":610,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":607,"type":"uint256","value":"value"},"id":611,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":612,"name":"Literal","src":"2562:1:3"}],"id":613,"name":"BinaryOperation","src":"2553:10:3"}],"id":614,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":1106,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":603,"type":"contract ERC20","value":"token"},"id":615,"name":"Identifier","src":"2569:5:3"}],"id":616,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$762","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":617,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4802,"type":"library SafeERC20","value":"this"},"id":618,"name":"Identifier","src":"2593:4:3"}],"id":619,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"address","value":"spender"},"id":620,"name":"Identifier","src":"2600:7:3"}],"id":621,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":622,"name":"Literal","src":"2612:1:3"}],"id":623,"name":"BinaryOperation","src":"2569:44:3"}],"id":624,"name":"TupleExpression","src":"2568:46:3"}],"id":625,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":626,"name":"Literal","src":"2628:56:3"}],"id":627,"name":"FunctionCall","src":"2544:150:3"}],"id":628,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":629,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":603,"type":"contract ERC20","value":"token"},"id":630,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":631,"name":"Identifier","src":"2730:3:3"}],"id":632,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":1115,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":603,"type":"contract ERC20","value":"token"},"id":633,"name":"Identifier","src":"2753:5:3"}],"id":634,"name":"MemberAccess","src":"2753:13:3"}],"id":635,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"address","value":"spender"},"id":636,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":607,"type":"uint256","value":"value"},"id":637,"name":"Identifier","src":"2786:5:3"}],"id":638,"name":"FunctionCall","src":"2730:62:3"}],"id":639,"name":"FunctionCall","src":"2704:89:3"}],"id":640,"name":"ExpressionStatement","src":"2704:89:3"}],"id":641,"name":"Block","src":"2264:536:3"}],"id":642,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":677,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":643,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":644,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":677,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":645,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":646,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":677,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":647,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":648,"name":"VariableDeclaration","src":"2867:13:3"}],"id":649,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":650,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[652]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":651,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":652,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":789,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":1106,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"contract ERC20","value":"token"},"id":653,"name":"Identifier","src":"2924:5:3"}],"id":654,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$762","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":655,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4802,"type":"library SafeERC20","value":"this"},"id":656,"name":"Identifier","src":"2948:4:3"}],"id":657,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":646,"type":"address","value":"spender"},"id":658,"name":"Identifier","src":"2955:7:3"}],"id":659,"name":"FunctionCall","src":"2924:39:3"}],"id":660,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":648,"type":"uint256","value":"value"},"id":661,"name":"Identifier","src":"2968:5:3"}],"id":662,"name":"FunctionCall","src":"2924:50:3"}],"id":663,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":664,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"contract ERC20","value":"token"},"id":665,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":666,"name":"Identifier","src":"3010:3:3"}],"id":667,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":1115,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"contract ERC20","value":"token"},"id":668,"name":"Identifier","src":"3033:5:3"}],"id":669,"name":"MemberAccess","src":"3033:13:3"}],"id":670,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":646,"type":"address","value":"spender"},"id":671,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":652,"type":"uint256","value":"newAllowance"},"id":672,"name":"Identifier","src":"3066:12:3"}],"id":673,"name":"FunctionCall","src":"3010:69:3"}],"id":674,"name":"FunctionCall","src":"2984:96:3"}],"id":675,"name":"ExpressionStatement","src":"2984:96:3"}],"id":676,"name":"Block","src":"2891:196:3"}],"id":677,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":712,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":678,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":679,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":712,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":680,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":681,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":712,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":682,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":683,"name":"VariableDeclaration","src":"3154:13:3"}],"id":684,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":685,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[687]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":711,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":686,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":687,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":814,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":1106,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":679,"type":"contract ERC20","value":"token"},"id":688,"name":"Identifier","src":"3211:5:3"}],"id":689,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$762","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":690,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4802,"type":"library SafeERC20","value":"this"},"id":691,"name":"Identifier","src":"3235:4:3"}],"id":692,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"address","value":"spender"},"id":693,"name":"Identifier","src":"3242:7:3"}],"id":694,"name":"FunctionCall","src":"3211:39:3"}],"id":695,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":683,"type":"uint256","value":"value"},"id":696,"name":"Identifier","src":"3255:5:3"}],"id":697,"name":"FunctionCall","src":"3211:50:3"}],"id":698,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":761,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":699,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":679,"type":"contract ERC20","value":"token"},"id":700,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":701,"name":"Identifier","src":"3297:3:3"}],"id":702,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":1115,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":679,"type":"contract ERC20","value":"token"},"id":703,"name":"Identifier","src":"3320:5:3"}],"id":704,"name":"MemberAccess","src":"3320:13:3"}],"id":705,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"address","value":"spender"},"id":706,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":687,"type":"uint256","value":"newAllowance"},"id":707,"name":"Identifier","src":"3353:12:3"}],"id":708,"name":"FunctionCall","src":"3297:69:3"}],"id":709,"name":"FunctionCall","src":"3271:96:3"}],"id":710,"name":"ExpressionStatement","src":"3271:96:3"}],"id":711,"name":"Block","src":"3178:196:3"}],"id":712,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":762,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":761,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":713,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":714,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":761,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":715,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":716,"name":"VariableDeclaration","src":"3798:17:3"}],"id":717,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":718,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":719,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":1094,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":720,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"contract ERC20","value":"token"},"id":721,"name":"Identifier","src":"4360:5:3"}],"id":722,"name":"FunctionCall","src":"4352:14:3"}],"id":723,"name":"MemberAccess","src":"4352:25:3"}],"id":724,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":725,"name":"Literal","src":"4381:33:3"}],"id":726,"name":"FunctionCall","src":"4344:71:3"}],"id":727,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[729,731]},"children":[{"attributes":{"constant":false,"name":"success","scope":760,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":728,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":729,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":760,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":730,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":731,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$1148","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":732,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"contract ERC20","value":"token"},"id":733,"name":"Identifier","src":"4535:5:3"}],"id":734,"name":"FunctionCall","src":"4527:14:3"}],"id":735,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"bytes memory","value":"data"},"id":736,"name":"Identifier","src":"4547:4:3"}],"id":737,"name":"FunctionCall","src":"4527:25:3"}],"id":738,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":739,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":729,"type":"bool","value":"success"},"id":740,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":741,"name":"Literal","src":"4579:34:3"}],"id":742,"name":"FunctionCall","src":"4562:52:3"}],"id":743,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":731,"type":"bytes memory","value":"returndata"},"id":744,"name":"Identifier","src":"4629:10:3"}],"id":745,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":746,"name":"Literal","src":"4649:1:3"}],"id":747,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":748,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":749,"name":"Identifier","src":"4758:3:3"}],"id":750,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":731,"type":"bytes memory","value":"returndata"},"id":751,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":752,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":753,"name":"TupleExpression","src":"4781:6:3"}],"id":754,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":755,"name":"Literal","src":"4790:44:3"}],"id":756,"name":"FunctionCall","src":"4750:85:3"}],"id":757,"name":"ExpressionStatement","src":"4750:85:3"}],"id":758,"name":"Block","src":"4652:194:3"}],"id":759,"name":"IfStatement","src":"4625:221:3"}],"id":760,"name":"Block","src":"3826:1026:3"}],"id":761,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":762,"name":"ContractDefinition","src":"1715:3139:3"}],"id":763,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[895]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":764,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[895],"name":"SafeMath","scope":896},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":765,"name":"ElementaryTypeName","src":"847:7:4"}],"id":766,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":767,"name":"ElementaryTypeName","src":"858:7:4"}],"id":768,"name":"VariableDeclaration","src":"858:9:4"}],"id":769,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":770,"name":"ElementaryTypeName","src":"892:7:4"}],"id":771,"name":"VariableDeclaration","src":"892:7:4"}],"id":772,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[774]},"children":[{"attributes":{"constant":false,"name":"c","scope":788,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":773,"name":"ElementaryTypeName","src":"911:7:4"}],"id":774,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":766,"type":"uint256","value":"a"},"id":775,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":768,"type":"uint256","value":"b"},"id":776,"name":"Identifier","src":"927:1:4"}],"id":777,"name":"BinaryOperation","src":"923:5:4"}],"id":778,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":779,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"uint256","value":"c"},"id":780,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":766,"type":"uint256","value":"a"},"id":781,"name":"Identifier","src":"951:1:4"}],"id":782,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":783,"name":"Literal","src":"954:29:4"}],"id":784,"name":"FunctionCall","src":"938:46:4"}],"id":785,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":772},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"uint256","value":"c"},"id":786,"name":"Identifier","src":"1002:1:4"}],"id":787,"name":"Return","src":"995:8:4"}],"id":788,"name":"Block","src":"901:109:4"}],"id":789,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":814,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":790,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":791,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":814,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":792,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":793,"name":"VariableDeclaration","src":"1298:9:4"}],"id":794,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":814,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":795,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":796,"name":"VariableDeclaration","src":"1332:7:4"}],"id":797,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":798,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":793,"type":"uint256","value":"b"},"id":799,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":791,"type":"uint256","value":"a"},"id":800,"name":"Identifier","src":"1364:1:4"}],"id":801,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":802,"name":"Literal","src":"1367:32:4"}],"id":803,"name":"FunctionCall","src":"1351:49:4"}],"id":804,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[806]},"children":[{"attributes":{"constant":false,"name":"c","scope":813,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":805,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":806,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":791,"type":"uint256","value":"a"},"id":807,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":793,"type":"uint256","value":"b"},"id":808,"name":"Identifier","src":"1426:1:4"}],"id":809,"name":"BinaryOperation","src":"1422:5:4"}],"id":810,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":797},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":806,"type":"uint256","value":"c"},"id":811,"name":"Identifier","src":"1445:1:4"}],"id":812,"name":"Return","src":"1438:8:4"}],"id":813,"name":"Block","src":"1341:112:4"}],"id":814,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":848,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":815,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":816,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":848,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":817,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":818,"name":"VariableDeclaration","src":"1717:9:4"}],"id":819,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":848,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":820,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":821,"name":"VariableDeclaration","src":"1751:7:4"}],"id":822,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"uint256","value":"a"},"id":823,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":824,"name":"Literal","src":"1996:1:4"}],"id":825,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":822},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":826,"name":"Literal","src":"2020:1:4"}],"id":827,"name":"Return","src":"2013:8:4"}],"id":828,"name":"Block","src":"1999:33:4"}],"id":829,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[831]},"children":[{"attributes":{"constant":false,"name":"c","scope":847,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":830,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":831,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"uint256","value":"a"},"id":832,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"uint256","value":"b"},"id":833,"name":"Identifier","src":"2058:1:4"}],"id":834,"name":"BinaryOperation","src":"2054:5:4"}],"id":835,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":836,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":831,"type":"uint256","value":"c"},"id":837,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":816,"type":"uint256","value":"a"},"id":838,"name":"Identifier","src":"2081:1:4"}],"id":839,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"uint256","value":"b"},"id":840,"name":"Identifier","src":"2086:1:4"}],"id":841,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":842,"name":"Literal","src":"2089:35:4"}],"id":843,"name":"FunctionCall","src":"2069:56:4"}],"id":844,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":822},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":831,"type":"uint256","value":"c"},"id":845,"name":"Identifier","src":"2143:1:4"}],"id":846,"name":"Return","src":"2136:8:4"}],"id":847,"name":"Block","src":"1760:391:4"}],"id":848,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":873,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":849,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":850,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":873,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":851,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":852,"name":"VariableDeclaration","src":"2630:9:4"}],"id":853,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":873,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":854,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":855,"name":"VariableDeclaration","src":"2664:7:4"}],"id":856,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":857,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"uint256","value":"b"},"id":858,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":859,"name":"Literal","src":"2761:1:4"}],"id":860,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":861,"name":"Literal","src":"2764:28:4"}],"id":862,"name":"FunctionCall","src":"2749:44:4"}],"id":863,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[865]},"children":[{"attributes":{"constant":false,"name":"c","scope":872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":864,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":865,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"uint256","value":"a"},"id":866,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"uint256","value":"b"},"id":867,"name":"Identifier","src":"2819:1:4"}],"id":868,"name":"BinaryOperation","src":"2815:5:4"}],"id":869,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":856},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":865,"type":"uint256","value":"c"},"id":870,"name":"Identifier","src":"2924:1:4"}],"id":871,"name":"Return","src":"2917:8:4"}],"id":872,"name":"Block","src":"2673:259:4"}],"id":873,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":895,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":874,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":875,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":876,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":877,"name":"VariableDeclaration","src":"3400:9:4"}],"id":878,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":879,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":880,"name":"VariableDeclaration","src":"3434:7:4"}],"id":881,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":882,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"uint256","value":"b"},"id":883,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":884,"name":"Literal","src":"3466:1:4"}],"id":885,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":886,"name":"Literal","src":"3469:26:4"}],"id":887,"name":"FunctionCall","src":"3453:43:4"}],"id":888,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":881},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":875,"type":"uint256","value":"a"},"id":889,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"uint256","value":"b"},"id":890,"name":"Identifier","src":"3517:1:4"}],"id":891,"name":"BinaryOperation","src":"3513:5:4"}],"id":892,"name":"Return","src":"3506:12:4"}],"id":893,"name":"Block","src":"3443:82:4"}],"id":894,"name":"FunctionDefinition","src":"3376:149:4"}],"id":895,"name":"ContractDefinition","src":"589:2938:4"}],"id":896,"name":"SourceUnit","src":"0:3528:4"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[1739]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1604,"name":"PragmaDirective","src":"1400:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1739],"name":"ENS","scope":1740},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1605,"name":"ElementaryTypeName","src":"1534:7:5"}],"id":1606,"name":"VariableDeclaration","src":"1534:21:5"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1607,"name":"ElementaryTypeName","src":"1557:7:5"}],"id":1608,"name":"VariableDeclaration","src":"1557:22:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1612,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1609,"name":"ElementaryTypeName","src":"1581:7:5"}],"id":1610,"name":"VariableDeclaration","src":"1581:14:5"}],"id":1611,"name":"ParameterList","src":"1533:63:5"}],"id":1612,"name":"EventDefinition","src":"1519:78:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":1618,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1613,"name":"ElementaryTypeName","src":"1695:7:5"}],"id":1614,"name":"VariableDeclaration","src":"1695:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1618,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1615,"name":"ElementaryTypeName","src":"1718:7:5"}],"id":1616,"name":"VariableDeclaration","src":"1718:14:5"}],"id":1617,"name":"ParameterList","src":"1694:39:5"}],"id":1618,"name":"EventDefinition","src":"1680:54:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":1624,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1619,"name":"ElementaryTypeName","src":"1810:7:5"}],"id":1620,"name":"VariableDeclaration","src":"1810:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":1624,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1621,"name":"ElementaryTypeName","src":"1833:7:5"}],"id":1622,"name":"VariableDeclaration","src":"1833:17:5"}],"id":1623,"name":"ParameterList","src":"1809:42:5"}],"id":1624,"name":"EventDefinition","src":"1792:60:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":1630,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1625,"name":"ElementaryTypeName","src":"1916:7:5"}],"id":1626,"name":"VariableDeclaration","src":"1916:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":1630,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1627,"name":"ElementaryTypeName","src":"1939:6:5"}],"id":1628,"name":"VariableDeclaration","src":"1939:11:5"}],"id":1629,"name":"ParameterList","src":"1915:36:5"}],"id":1630,"name":"EventDefinition","src":"1903:49:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":1638,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1631,"name":"ElementaryTypeName","src":"2031:7:5"}],"id":1632,"name":"VariableDeclaration","src":"2031:22:5"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":1638,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1633,"name":"ElementaryTypeName","src":"2055:7:5"}],"id":1634,"name":"VariableDeclaration","src":"2055:25:5"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":1638,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1635,"name":"ElementaryTypeName","src":"2082:4:5"}],"id":1636,"name":"VariableDeclaration","src":"2082:14:5"}],"id":1637,"name":"ParameterList","src":"2030:67:5"}],"id":1638,"name":"EventDefinition","src":"2010:88:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1649,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1639,"name":"ElementaryTypeName","src":"2123:7:5"}],"id":1640,"name":"VariableDeclaration","src":"2123:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":1649,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1641,"name":"ElementaryTypeName","src":"2138:7:5"}],"id":1642,"name":"VariableDeclaration","src":"2138:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":1649,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1643,"name":"ElementaryTypeName","src":"2154:7:5"}],"id":1644,"name":"VariableDeclaration","src":"2154:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":1649,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1645,"name":"ElementaryTypeName","src":"2173:6:5"}],"id":1646,"name":"VariableDeclaration","src":"2173:11:5"}],"id":1647,"name":"ParameterList","src":"2122:63:5"},{"attributes":{"parameters":[null]},"children":[],"id":1648,"name":"ParameterList","src":"2194:0:5"}],"id":1649,"name":"FunctionDefinition","src":"2104:91:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1662,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1650,"name":"ElementaryTypeName","src":"2226:7:5"}],"id":1651,"name":"VariableDeclaration","src":"2226:13:5"},{"attributes":{"constant":false,"name":"_label","scope":1662,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1652,"name":"ElementaryTypeName","src":"2241:7:5"}],"id":1653,"name":"VariableDeclaration","src":"2241:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":1662,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1654,"name":"ElementaryTypeName","src":"2257:7:5"}],"id":1655,"name":"VariableDeclaration","src":"2257:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":1662,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1656,"name":"ElementaryTypeName","src":"2273:7:5"}],"id":1657,"name":"VariableDeclaration","src":"2273:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":1662,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1658,"name":"ElementaryTypeName","src":"2292:6:5"}],"id":1659,"name":"VariableDeclaration","src":"2292:11:5"}],"id":1660,"name":"ParameterList","src":"2225:79:5"},{"attributes":{"parameters":[null]},"children":[],"id":1661,"name":"ParameterList","src":"2313:0:5"}],"id":1662,"name":"FunctionDefinition","src":"2200:114:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1673,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1663,"name":"ElementaryTypeName","src":"2344:7:5"}],"id":1664,"name":"VariableDeclaration","src":"2344:13:5"},{"attributes":{"constant":false,"name":"_label","scope":1673,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1665,"name":"ElementaryTypeName","src":"2359:7:5"}],"id":1666,"name":"VariableDeclaration","src":"2359:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":1673,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1667,"name":"ElementaryTypeName","src":"2375:7:5"}],"id":1668,"name":"VariableDeclaration","src":"2375:14:5"}],"id":1669,"name":"ParameterList","src":"2343:47:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1673,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1670,"name":"ElementaryTypeName","src":"2408:7:5"}],"id":1671,"name":"VariableDeclaration","src":"2408:7:5"}],"id":1672,"name":"ParameterList","src":"2407:9:5"}],"id":1673,"name":"FunctionDefinition","src":"2319:98:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1680,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1674,"name":"ElementaryTypeName","src":"2443:7:5"}],"id":1675,"name":"VariableDeclaration","src":"2443:13:5"},{"attributes":{"constant":false,"name":"_resolver","scope":1680,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1676,"name":"ElementaryTypeName","src":"2458:7:5"}],"id":1677,"name":"VariableDeclaration","src":"2458:17:5"}],"id":1678,"name":"ParameterList","src":"2442:34:5"},{"attributes":{"parameters":[null]},"children":[],"id":1679,"name":"ParameterList","src":"2485:0:5"}],"id":1680,"name":"FunctionDefinition","src":"2422:64:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1687,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1681,"name":"ElementaryTypeName","src":"2509:7:5"}],"id":1682,"name":"VariableDeclaration","src":"2509:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":1687,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1683,"name":"ElementaryTypeName","src":"2524:7:5"}],"id":1684,"name":"VariableDeclaration","src":"2524:14:5"}],"id":1685,"name":"ParameterList","src":"2508:31:5"},{"attributes":{"parameters":[null]},"children":[],"id":1686,"name":"ParameterList","src":"2548:0:5"}],"id":1687,"name":"FunctionDefinition","src":"2491:58:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1694,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1688,"name":"ElementaryTypeName","src":"2570:7:5"}],"id":1689,"name":"VariableDeclaration","src":"2570:13:5"},{"attributes":{"constant":false,"name":"_ttl","scope":1694,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1690,"name":"ElementaryTypeName","src":"2585:6:5"}],"id":1691,"name":"VariableDeclaration","src":"2585:11:5"}],"id":1692,"name":"ParameterList","src":"2569:28:5"},{"attributes":{"parameters":[null]},"children":[],"id":1693,"name":"ParameterList","src":"2606:0:5"}],"id":1694,"name":"FunctionDefinition","src":"2554:53:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":1739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":1701,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1695,"name":"ElementaryTypeName","src":"2639:7:5"}],"id":1696,"name":"VariableDeclaration","src":"2639:17:5"},{"attributes":{"constant":false,"name":"_approved","scope":1701,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1697,"name":"ElementaryTypeName","src":"2658:4:5"}],"id":1698,"name":"VariableDeclaration","src":"2658:14:5"}],"id":1699,"name":"ParameterList","src":"2638:35:5"},{"attributes":{"parameters":[null]},"children":[],"id":1700,"name":"ParameterList","src":"2682:0:5"}],"id":1701,"name":"FunctionDefinition","src":"2612:71:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1708,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1702,"name":"ElementaryTypeName","src":"2703:7:5"}],"id":1703,"name":"VariableDeclaration","src":"2703:13:5"}],"id":1704,"name":"ParameterList","src":"2702:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1708,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1705,"name":"ElementaryTypeName","src":"2741:7:5"}],"id":1706,"name":"VariableDeclaration","src":"2741:7:5"}],"id":1707,"name":"ParameterList","src":"2740:9:5"}],"id":1708,"name":"FunctionDefinition","src":"2688:62:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1715,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1709,"name":"ElementaryTypeName","src":"2773:7:5"}],"id":1710,"name":"VariableDeclaration","src":"2773:13:5"}],"id":1711,"name":"ParameterList","src":"2772:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1715,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1712,"name":"ElementaryTypeName","src":"2811:7:5"}],"id":1713,"name":"VariableDeclaration","src":"2811:7:5"}],"id":1714,"name":"ParameterList","src":"2810:9:5"}],"id":1715,"name":"FunctionDefinition","src":"2755:65:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1722,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1716,"name":"ElementaryTypeName","src":"2838:7:5"}],"id":1717,"name":"VariableDeclaration","src":"2838:13:5"}],"id":1718,"name":"ParameterList","src":"2837:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1722,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":1719,"name":"ElementaryTypeName","src":"2876:6:5"}],"id":1720,"name":"VariableDeclaration","src":"2876:6:5"}],"id":1721,"name":"ParameterList","src":"2875:8:5"}],"id":1722,"name":"FunctionDefinition","src":"2825:59:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1729,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1723,"name":"ElementaryTypeName","src":"2911:7:5"}],"id":1724,"name":"VariableDeclaration","src":"2911:13:5"}],"id":1725,"name":"ParameterList","src":"2910:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1729,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1726,"name":"ElementaryTypeName","src":"2949:4:5"}],"id":1727,"name":"VariableDeclaration","src":"2949:4:5"}],"id":1728,"name":"ParameterList","src":"2948:6:5"}],"id":1729,"name":"FunctionDefinition","src":"2889:66:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":1739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":1738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1730,"name":"ElementaryTypeName","src":"2986:7:5"}],"id":1731,"name":"VariableDeclaration","src":"2986:14:5"},{"attributes":{"constant":false,"name":"_operator","scope":1738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1732,"name":"ElementaryTypeName","src":"3002:7:5"}],"id":1733,"name":"VariableDeclaration","src":"3002:17:5"}],"id":1734,"name":"ParameterList","src":"2985:35:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1738,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1735,"name":"ElementaryTypeName","src":"3044:4:5"}],"id":1736,"name":"VariableDeclaration","src":"3044:4:5"}],"id":1737,"name":"ParameterList","src":"3043:6:5"}],"id":1738,"name":"FunctionDefinition","src":"2960:90:5"}],"id":1739,"name":"ContractDefinition","src":"1425:1627:5"}],"id":1740,"name":"SourceUnit","src":"1400:1653:5"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[4765]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":4046,"name":"PragmaDirective","src":"0:24:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[4765],"name":"ENSBytesUtils","scope":4766},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4068,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4047,"name":"ElementaryTypeName","src":"325:5:6"}],"id":4048,"name":"VariableDeclaration","src":"325:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4049,"name":"ElementaryTypeName","src":"344:4:6"}],"id":4050,"name":"VariableDeclaration","src":"344:11:6"},{"attributes":{"constant":false,"name":"len","scope":4068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4051,"name":"ElementaryTypeName","src":"357:4:6"}],"id":4052,"name":"VariableDeclaration","src":"357:8:6"}],"id":4053,"name":"ParameterList","src":"324:42:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4054,"name":"ElementaryTypeName","src":"390:7:6"}],"id":4055,"name":"VariableDeclaration","src":"390:11:6"}],"id":4056,"name":"ParameterList","src":"389:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4057,"name":"Identifier","src":"413:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4050,"type":"uint256","value":"offset"},"id":4058,"name":"Identifier","src":"421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4052,"type":"uint256","value":"len"},"id":4059,"name":"Identifier","src":"430:3:6"}],"id":4060,"name":"BinaryOperation","src":"421:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4048,"type":"bytes memory","value":"self"},"id":4061,"name":"Identifier","src":"437:4:6"}],"id":4062,"name":"MemberAccess","src":"437:11:6"}],"id":4063,"name":"BinaryOperation","src":"421:27:6"}],"id":4064,"name":"FunctionCall","src":"413:36:6"}],"id":4065,"name":"ExpressionStatement","src":"413:36:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4055,"isOffset":false,"isSlot":false,"src":"482:3:6","valueSize":1}},{"self":{"declaration":4048,"isOffset":false,"isSlot":false,"src":"507:4:6","valueSize":1}},{"offset":{"declaration":4050,"isOffset":false,"isSlot":false,"src":"518:6:6","valueSize":1}},{"len":{"declaration":4052,"isOffset":false,"isSlot":false,"src":"527:3:6","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":4066,"name":"InlineAssembly","src":"459:82:6"}],"id":4067,"name":"Block","src":"403:144:6"}],"id":4068,"name":"FunctionDefinition","src":"309:238:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4089,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4069,"name":"ElementaryTypeName","src":"920:5:6"}],"id":4070,"name":"VariableDeclaration","src":"920:17:6"},{"attributes":{"constant":false,"name":"other","scope":4089,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4071,"name":"ElementaryTypeName","src":"939:5:6"}],"id":4072,"name":"VariableDeclaration","src":"939:18:6"}],"id":4073,"name":"ParameterList","src":"919:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4089,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":4074,"name":"ElementaryTypeName","src":"982:3:6"}],"id":4075,"name":"VariableDeclaration","src":"982:3:6"}],"id":4076,"name":"ParameterList","src":"981:5:6"},{"children":[{"attributes":{"functionReturnParameters":4076},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[4089,4221],"referencedDeclaration":4221,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":4077,"name":"Identifier","src":"1004:7:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4070,"type":"bytes memory","value":"self"},"id":4078,"name":"Identifier","src":"1012:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4079,"name":"Literal","src":"1018:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4070,"type":"bytes memory","value":"self"},"id":4080,"name":"Identifier","src":"1021:4:6"}],"id":4081,"name":"MemberAccess","src":"1021:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"bytes memory","value":"other"},"id":4082,"name":"Identifier","src":"1034:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4083,"name":"Literal","src":"1041:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"bytes memory","value":"other"},"id":4084,"name":"Identifier","src":"1044:5:6"}],"id":4085,"name":"MemberAccess","src":"1044:12:6"}],"id":4086,"name":"FunctionCall","src":"1004:53:6"}],"id":4087,"name":"Return","src":"997:60:6"}],"id":4088,"name":"Block","src":"987:77:6"}],"id":4089,"name":"FunctionDefinition","src":"903:161:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4221,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4090,"name":"ElementaryTypeName","src":"1694:5:6"}],"id":4091,"name":"VariableDeclaration","src":"1694:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4092,"name":"ElementaryTypeName","src":"1713:4:6"}],"id":4093,"name":"VariableDeclaration","src":"1713:11:6"},{"attributes":{"constant":false,"name":"len","scope":4221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4094,"name":"ElementaryTypeName","src":"1726:4:6"}],"id":4095,"name":"VariableDeclaration","src":"1726:8:6"},{"attributes":{"constant":false,"name":"other","scope":4221,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4096,"name":"ElementaryTypeName","src":"1736:5:6"}],"id":4097,"name":"VariableDeclaration","src":"1736:18:6"},{"attributes":{"constant":false,"name":"otheroffset","scope":4221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4098,"name":"ElementaryTypeName","src":"1756:4:6"}],"id":4099,"name":"VariableDeclaration","src":"1756:16:6"},{"attributes":{"constant":false,"name":"otherlen","scope":4221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4100,"name":"ElementaryTypeName","src":"1774:4:6"}],"id":4101,"name":"VariableDeclaration","src":"1774:13:6"}],"id":4102,"name":"ParameterList","src":"1693:95:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4221,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":4103,"name":"ElementaryTypeName","src":"1812:3:6"}],"id":4104,"name":"VariableDeclaration","src":"1812:3:6"}],"id":4105,"name":"ParameterList","src":"1811:5:6"},{"children":[{"attributes":{"assignments":[4107]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":4220,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4106,"name":"ElementaryTypeName","src":"1827:4:6"}],"id":4107,"name":"VariableDeclaration","src":"1827:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4095,"type":"uint256","value":"len"},"id":4108,"name":"Identifier","src":"1843:3:6"}],"id":4109,"name":"VariableDeclarationStatement","src":"1827:19:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4101,"type":"uint256","value":"otherlen"},"id":4110,"name":"Identifier","src":"1860:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4095,"type":"uint256","value":"len"},"id":4111,"name":"Identifier","src":"1871:3:6"}],"id":4112,"name":"BinaryOperation","src":"1860:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4107,"type":"uint256","value":"shortest"},"id":4113,"name":"Identifier","src":"1884:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4101,"type":"uint256","value":"otherlen"},"id":4114,"name":"Identifier","src":"1895:8:6"}],"id":4115,"name":"Assignment","src":"1884:19:6"}],"id":4116,"name":"ExpressionStatement","src":"1884:19:6"}],"id":4117,"name":"IfStatement","src":"1856:47:6"},{"attributes":{"assignments":[4119],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":4220,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4118,"name":"ElementaryTypeName","src":"1914:4:6"}],"id":4119,"name":"VariableDeclaration","src":"1914:12:6"}],"id":4120,"name":"VariableDeclarationStatement","src":"1914:12:6"},{"attributes":{"assignments":[4122],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":4220,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4121,"name":"ElementaryTypeName","src":"1936:4:6"}],"id":4122,"name":"VariableDeclaration","src":"1936:13:6"}],"id":4123,"name":"VariableDeclarationStatement","src":"1936:13:6"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":4119,"isOffset":false,"isSlot":false,"src":"1983:7:6","valueSize":1}},{"offset":{"declaration":4093,"isOffset":false,"isSlot":false,"src":"2008:6:6","valueSize":1}},{"self":{"declaration":4091,"isOffset":false,"isSlot":false,"src":"1998:4:6","valueSize":1}},{"otherptr":{"declaration":4122,"isOffset":false,"isSlot":false,"src":"2033:8:6","valueSize":1}},{"otheroffset":{"declaration":4099,"isOffset":false,"isSlot":false,"src":"2060:11:6","valueSize":1}},{"other":{"declaration":4097,"isOffset":false,"isSlot":false,"src":"2049:5:6","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":4124,"name":"InlineAssembly","src":"1960:127:6"},{"children":[{"attributes":{"assignments":[4126]},"children":[{"attributes":{"constant":false,"name":"idx","scope":4211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4125,"name":"ElementaryTypeName","src":"2101:4:6"}],"id":4126,"name":"VariableDeclaration","src":"2101:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4127,"name":"Literal","src":"2112:1:6"}],"id":4128,"name":"VariableDeclarationStatement","src":"2101:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"uint256","value":"idx"},"id":4129,"name":"Identifier","src":"2115:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4107,"type":"uint256","value":"shortest"},"id":4130,"name":"Identifier","src":"2121:8:6"}],"id":4131,"name":"BinaryOperation","src":"2115:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"uint256","value":"idx"},"id":4132,"name":"Identifier","src":"2131:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4133,"name":"Literal","src":"2138:2:6"}],"id":4134,"name":"Assignment","src":"2131:9:6"}],"id":4135,"name":"ExpressionStatement","src":"2131:9:6"},{"children":[{"attributes":{"assignments":[4137],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":4210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4136,"name":"ElementaryTypeName","src":"2156:4:6"}],"id":4137,"name":"VariableDeclaration","src":"2156:6:6"}],"id":4138,"name":"VariableDeclarationStatement","src":"2156:6:6"},{"attributes":{"assignments":[4140],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":4210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4139,"name":"ElementaryTypeName","src":"2176:4:6"}],"id":4140,"name":"VariableDeclaration","src":"2176:6:6"}],"id":4141,"name":"VariableDeclarationStatement","src":"2176:6:6"},{"attributes":{"externalReferences":[{"a":{"declaration":4137,"isOffset":false,"isSlot":false,"src":"2223:1:6","valueSize":1}},{"selfptr":{"declaration":4119,"isOffset":false,"isSlot":false,"src":"2234:7:6","valueSize":1}},{"b":{"declaration":4140,"isOffset":false,"isSlot":false,"src":"2259:1:6","valueSize":1}},{"otherptr":{"declaration":4122,"isOffset":false,"isSlot":false,"src":"2270:8:6","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":4142,"name":"InlineAssembly","src":"2196:97:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4137,"type":"uint256","value":"a"},"id":4143,"name":"Identifier","src":"2310:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4140,"type":"uint256","value":"b"},"id":4144,"name":"Identifier","src":"2315:1:6"}],"id":4145,"name":"BinaryOperation","src":"2310:6:6"},{"children":[{"attributes":{"assignments":[4147],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":4200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4146,"name":"ElementaryTypeName","src":"2397:4:6"}],"id":4147,"name":"VariableDeclaration","src":"2397:9:6"}],"id":4148,"name":"VariableDeclarationStatement","src":"2397:9:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4107,"type":"uint256","value":"shortest"},"id":4149,"name":"Identifier","src":"2428:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4150,"name":"Literal","src":"2439:2:6"}],"id":4151,"name":"BinaryOperation","src":"2428:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"uint256","value":"mask"},"id":4152,"name":"Identifier","src":"2465:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":4153,"name":"ElementaryTypeNameExpression","src":"2472:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4154,"name":"Literal","src":"2482:1:6"}],"id":4155,"name":"UnaryOperation","src":"2480:3:6"}],"id":4156,"name":"FunctionCall","src":"2472:12:6"}],"id":4157,"name":"Assignment","src":"2465:19:6"}],"id":4158,"name":"ExpressionStatement","src":"2465:19:6"}],"id":4159,"name":"Block","src":"2443:80:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"uint256","value":"mask"},"id":4160,"name":"Identifier","src":"2551:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4161,"name":"Literal","src":"2560:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4162,"name":"Literal","src":"2566:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4163,"name":"Literal","src":"2571:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4107,"type":"uint256","value":"shortest"},"id":4164,"name":"Identifier","src":"2576:8:6"}],"id":4165,"name":"BinaryOperation","src":"2571:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"uint256","value":"idx"},"id":4166,"name":"Identifier","src":"2587:3:6"}],"id":4167,"name":"BinaryOperation","src":"2571:19:6"}],"id":4168,"name":"TupleExpression","src":"2570:21:6"}],"id":4169,"name":"BinaryOperation","src":"2566:25:6"}],"id":4170,"name":"TupleExpression","src":"2565:27:6"}],"id":4171,"name":"BinaryOperation","src":"2560:32:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4172,"name":"Literal","src":"2595:1:6"}],"id":4173,"name":"BinaryOperation","src":"2560:36:6"}],"id":4174,"name":"TupleExpression","src":"2559:38:6"}],"id":4175,"name":"UnaryOperation","src":"2558:39:6"}],"id":4176,"name":"Assignment","src":"2551:46:6"}],"id":4177,"name":"ExpressionStatement","src":"2551:46:6"}],"id":4178,"name":"Block","src":"2529:87:6"}],"id":4179,"name":"IfStatement","src":"2424:192:6"},{"attributes":{"assignments":[4181]},"children":[{"attributes":{"constant":false,"name":"diff","scope":4200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4180,"name":"ElementaryTypeName","src":"2633:4:6"}],"id":4181,"name":"VariableDeclaration","src":"2633:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4137,"type":"uint256","value":"a"},"id":4182,"name":"Identifier","src":"2646:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"uint256","value":"mask"},"id":4183,"name":"Identifier","src":"2650:4:6"}],"id":4184,"name":"BinaryOperation","src":"2646:8:6"}],"id":4185,"name":"TupleExpression","src":"2645:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4140,"type":"uint256","value":"b"},"id":4186,"name":"Identifier","src":"2659:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"uint256","value":"mask"},"id":4187,"name":"Identifier","src":"2663:4:6"}],"id":4188,"name":"BinaryOperation","src":"2659:8:6"}],"id":4189,"name":"TupleExpression","src":"2658:10:6"}],"id":4190,"name":"BinaryOperation","src":"2645:23:6"}],"id":4191,"name":"VariableDeclarationStatement","src":"2633:35:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4181,"type":"uint256","value":"diff"},"id":4192,"name":"Identifier","src":"2690:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4193,"name":"Literal","src":"2698:1:6"}],"id":4194,"name":"BinaryOperation","src":"2690:9:6"},{"attributes":{"functionReturnParameters":4105},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":4195,"name":"ElementaryTypeNameExpression","src":"2724:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4181,"type":"uint256","value":"diff"},"id":4196,"name":"Identifier","src":"2728:4:6"}],"id":4197,"name":"FunctionCall","src":"2724:9:6"}],"id":4198,"name":"Return","src":"2717:16:6"}],"id":4199,"name":"IfStatement","src":"2686:47:6"}],"id":4200,"name":"Block","src":"2318:430:6"}],"id":4201,"name":"IfStatement","src":"2306:442:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4119,"type":"uint256","value":"selfptr"},"id":4202,"name":"Identifier","src":"2761:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4203,"name":"Literal","src":"2772:2:6"}],"id":4204,"name":"Assignment","src":"2761:13:6"}],"id":4205,"name":"ExpressionStatement","src":"2761:13:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4122,"type":"uint256","value":"otherptr"},"id":4206,"name":"Identifier","src":"2788:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4207,"name":"Literal","src":"2800:2:6"}],"id":4208,"name":"Assignment","src":"2788:14:6"}],"id":4209,"name":"ExpressionStatement","src":"2788:14:6"}],"id":4210,"name":"Block","src":"2142:671:6"}],"id":4211,"name":"ForStatement","src":"2096:717:6"},{"attributes":{"functionReturnParameters":4105},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":4212,"name":"ElementaryTypeNameExpression","src":"2830:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4095,"type":"uint256","value":"len"},"id":4213,"name":"Identifier","src":"2834:3:6"}],"id":4214,"name":"FunctionCall","src":"2830:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":4215,"name":"ElementaryTypeNameExpression","src":"2841:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4101,"type":"uint256","value":"otherlen"},"id":4216,"name":"Identifier","src":"2845:8:6"}],"id":4217,"name":"FunctionCall","src":"2841:13:6"}],"id":4218,"name":"BinaryOperation","src":"2830:24:6"}],"id":4219,"name":"Return","src":"2823:31:6"}],"id":4220,"name":"Block","src":"1817:1044:6"}],"id":4221,"name":"FunctionDefinition","src":"1677:1184:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4249,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4222,"name":"ElementaryTypeName","src":"3295:5:6"}],"id":4223,"name":"VariableDeclaration","src":"3295:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4224,"name":"ElementaryTypeName","src":"3314:4:6"}],"id":4225,"name":"VariableDeclaration","src":"3314:11:6"},{"attributes":{"constant":false,"name":"other","scope":4249,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4226,"name":"ElementaryTypeName","src":"3327:5:6"}],"id":4227,"name":"VariableDeclaration","src":"3327:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":4249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4228,"name":"ElementaryTypeName","src":"3347:4:6"}],"id":4229,"name":"VariableDeclaration","src":"3347:16:6"},{"attributes":{"constant":false,"name":"len","scope":4249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4230,"name":"ElementaryTypeName","src":"3365:4:6"}],"id":4231,"name":"VariableDeclaration","src":"3365:8:6"}],"id":4232,"name":"ParameterList","src":"3294:80:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4249,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4233,"name":"ElementaryTypeName","src":"3398:4:6"}],"id":4234,"name":"VariableDeclaration","src":"3398:4:6"}],"id":4235,"name":"ParameterList","src":"3397:6:6"},{"children":[{"attributes":{"functionReturnParameters":4235},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4068,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":4236,"name":"Identifier","src":"3421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4223,"type":"bytes memory","value":"self"},"id":4237,"name":"Identifier","src":"3428:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4225,"type":"uint256","value":"offset"},"id":4238,"name":"Identifier","src":"3434:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4231,"type":"uint256","value":"len"},"id":4239,"name":"Identifier","src":"3442:3:6"}],"id":4240,"name":"FunctionCall","src":"3421:25:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4068,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":4241,"name":"Identifier","src":"3450:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"bytes memory","value":"other"},"id":4242,"name":"Identifier","src":"3457:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"uint256","value":"otherOffset"},"id":4243,"name":"Identifier","src":"3464:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4231,"type":"uint256","value":"len"},"id":4244,"name":"Identifier","src":"3477:3:6"}],"id":4245,"name":"FunctionCall","src":"3450:31:6"}],"id":4246,"name":"BinaryOperation","src":"3421:60:6"}],"id":4247,"name":"Return","src":"3414:67:6"}],"id":4248,"name":"Block","src":"3404:84:6"}],"id":4249,"name":"FunctionDefinition","src":"3279:209:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4281,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4250,"name":"ElementaryTypeName","src":"3887:5:6"}],"id":4251,"name":"VariableDeclaration","src":"3887:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4281,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4252,"name":"ElementaryTypeName","src":"3906:4:6"}],"id":4253,"name":"VariableDeclaration","src":"3906:11:6"},{"attributes":{"constant":false,"name":"other","scope":4281,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4254,"name":"ElementaryTypeName","src":"3919:5:6"}],"id":4255,"name":"VariableDeclaration","src":"3919:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":4281,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4256,"name":"ElementaryTypeName","src":"3939:4:6"}],"id":4257,"name":"VariableDeclaration","src":"3939:16:6"}],"id":4258,"name":"ParameterList","src":"3886:70:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4281,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4259,"name":"ElementaryTypeName","src":"3980:4:6"}],"id":4260,"name":"VariableDeclaration","src":"3980:4:6"}],"id":4261,"name":"ParameterList","src":"3979:6:6"},{"children":[{"attributes":{"functionReturnParameters":4261},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4068,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":4262,"name":"Identifier","src":"4003:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4251,"type":"bytes memory","value":"self"},"id":4263,"name":"Identifier","src":"4010:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4253,"type":"uint256","value":"offset"},"id":4264,"name":"Identifier","src":"4016:6:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4251,"type":"bytes memory","value":"self"},"id":4265,"name":"Identifier","src":"4024:4:6"}],"id":4266,"name":"MemberAccess","src":"4024:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4253,"type":"uint256","value":"offset"},"id":4267,"name":"Identifier","src":"4038:6:6"}],"id":4268,"name":"BinaryOperation","src":"4024:20:6"}],"id":4269,"name":"FunctionCall","src":"4003:42:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4068,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":4270,"name":"Identifier","src":"4049:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4255,"type":"bytes memory","value":"other"},"id":4271,"name":"Identifier","src":"4056:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"uint256","value":"otherOffset"},"id":4272,"name":"Identifier","src":"4063:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4255,"type":"bytes memory","value":"other"},"id":4273,"name":"Identifier","src":"4076:5:6"}],"id":4274,"name":"MemberAccess","src":"4076:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"uint256","value":"otherOffset"},"id":4275,"name":"Identifier","src":"4091:11:6"}],"id":4276,"name":"BinaryOperation","src":"4076:26:6"}],"id":4277,"name":"FunctionCall","src":"4049:54:6"}],"id":4278,"name":"BinaryOperation","src":"4003:100:6"}],"id":4279,"name":"Return","src":"3996:107:6"}],"id":4280,"name":"Block","src":"3986:124:6"}],"id":4281,"name":"FunctionDefinition","src":"3871:239:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4310,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4282,"name":"ElementaryTypeName","src":"4478:5:6"}],"id":4283,"name":"VariableDeclaration","src":"4478:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4310,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4284,"name":"ElementaryTypeName","src":"4497:4:6"}],"id":4285,"name":"VariableDeclaration","src":"4497:11:6"},{"attributes":{"constant":false,"name":"other","scope":4310,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4286,"name":"ElementaryTypeName","src":"4510:5:6"}],"id":4287,"name":"VariableDeclaration","src":"4510:18:6"}],"id":4288,"name":"ParameterList","src":"4477:52:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4310,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4289,"name":"ElementaryTypeName","src":"4553:4:6"}],"id":4290,"name":"VariableDeclaration","src":"4553:4:6"}],"id":4291,"name":"ParameterList","src":"4552:6:6"},{"children":[{"attributes":{"functionReturnParameters":4291},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4283,"type":"bytes memory","value":"self"},"id":4292,"name":"Identifier","src":"4576:4:6"}],"id":4293,"name":"MemberAccess","src":"4576:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4285,"type":"uint256","value":"offset"},"id":4294,"name":"Identifier","src":"4591:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4287,"type":"bytes memory","value":"other"},"id":4295,"name":"Identifier","src":"4600:5:6"}],"id":4296,"name":"MemberAccess","src":"4600:12:6"}],"id":4297,"name":"BinaryOperation","src":"4591:21:6"}],"id":4298,"name":"BinaryOperation","src":"4576:36:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[4249,4281,4310,4335],"referencedDeclaration":4249,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":4299,"name":"Identifier","src":"4616:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4283,"type":"bytes memory","value":"self"},"id":4300,"name":"Identifier","src":"4623:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4285,"type":"uint256","value":"offset"},"id":4301,"name":"Identifier","src":"4629:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4287,"type":"bytes memory","value":"other"},"id":4302,"name":"Identifier","src":"4637:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4303,"name":"Literal","src":"4644:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4287,"type":"bytes memory","value":"other"},"id":4304,"name":"Identifier","src":"4647:5:6"}],"id":4305,"name":"MemberAccess","src":"4647:12:6"}],"id":4306,"name":"FunctionCall","src":"4616:44:6"}],"id":4307,"name":"BinaryOperation","src":"4576:84:6"}],"id":4308,"name":"Return","src":"4569:91:6"}],"id":4309,"name":"Block","src":"4559:108:6"}],"id":4310,"name":"FunctionDefinition","src":"4462:205:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4335,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4311,"name":"ElementaryTypeName","src":"4931:5:6"}],"id":4312,"name":"VariableDeclaration","src":"4931:17:6"},{"attributes":{"constant":false,"name":"other","scope":4335,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4313,"name":"ElementaryTypeName","src":"4950:5:6"}],"id":4314,"name":"VariableDeclaration","src":"4950:18:6"}],"id":4315,"name":"ParameterList","src":"4930:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4335,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4316,"name":"ElementaryTypeName","src":"4992:4:6"}],"id":4317,"name":"VariableDeclaration","src":"4992:4:6"}],"id":4318,"name":"ParameterList","src":"4991:6:6"},{"children":[{"attributes":{"functionReturnParameters":4318},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4312,"type":"bytes memory","value":"self"},"id":4319,"name":"Identifier","src":"5015:4:6"}],"id":4320,"name":"MemberAccess","src":"5015:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4314,"type":"bytes memory","value":"other"},"id":4321,"name":"Identifier","src":"5030:5:6"}],"id":4322,"name":"MemberAccess","src":"5030:12:6"}],"id":4323,"name":"BinaryOperation","src":"5015:27:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[4249,4281,4310,4335],"referencedDeclaration":4249,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":4324,"name":"Identifier","src":"5046:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4312,"type":"bytes memory","value":"self"},"id":4325,"name":"Identifier","src":"5053:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4326,"name":"Literal","src":"5059:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4314,"type":"bytes memory","value":"other"},"id":4327,"name":"Identifier","src":"5062:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4328,"name":"Literal","src":"5069:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4312,"type":"bytes memory","value":"self"},"id":4329,"name":"Identifier","src":"5072:4:6"}],"id":4330,"name":"MemberAccess","src":"5072:11:6"}],"id":4331,"name":"FunctionCall","src":"5046:38:6"}],"id":4332,"name":"BinaryOperation","src":"5015:69:6"}],"id":4333,"name":"Return","src":"5008:76:6"}],"id":4334,"name":"Block","src":"4998:93:6"}],"id":4335,"name":"FunctionDefinition","src":"4915:176:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4351,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4336,"name":"ElementaryTypeName","src":"5352:5:6"}],"id":4337,"name":"VariableDeclaration","src":"5352:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4351,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4338,"name":"ElementaryTypeName","src":"5371:4:6"}],"id":4339,"name":"VariableDeclaration","src":"5371:8:6"}],"id":4340,"name":"ParameterList","src":"5351:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4351,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":4341,"name":"ElementaryTypeName","src":"5404:5:6"}],"id":4342,"name":"VariableDeclaration","src":"5404:9:6"}],"id":4343,"name":"ParameterList","src":"5403:11:6"},{"children":[{"attributes":{"functionReturnParameters":4343},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":4344,"name":"ElementaryTypeNameExpression","src":"5432:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"bytes memory","value":"self"},"id":4345,"name":"Identifier","src":"5438:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"uint256","value":"idx"},"id":4346,"name":"Identifier","src":"5443:3:6"}],"id":4347,"name":"IndexAccess","src":"5438:9:6"}],"id":4348,"name":"FunctionCall","src":"5432:16:6"}],"id":4349,"name":"Return","src":"5425:23:6"}],"id":4350,"name":"Block","src":"5415:40:6"}],"id":4351,"name":"FunctionDefinition","src":"5333:122:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4371,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4352,"name":"ElementaryTypeName","src":"5719:5:6"}],"id":4353,"name":"VariableDeclaration","src":"5719:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4371,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4354,"name":"ElementaryTypeName","src":"5738:4:6"}],"id":4355,"name":"VariableDeclaration","src":"5738:8:6"}],"id":4356,"name":"ParameterList","src":"5718:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4371,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4357,"name":"ElementaryTypeName","src":"5771:6:6"}],"id":4358,"name":"VariableDeclaration","src":"5771:10:6"}],"id":4359,"name":"ParameterList","src":"5770:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4360,"name":"Identifier","src":"5793:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"idx"},"id":4361,"name":"Identifier","src":"5801:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4362,"name":"Literal","src":"5807:1:6"}],"id":4363,"name":"BinaryOperation","src":"5801:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"bytes memory","value":"self"},"id":4364,"name":"Identifier","src":"5812:4:6"}],"id":4365,"name":"MemberAccess","src":"5812:11:6"}],"id":4366,"name":"BinaryOperation","src":"5801:22:6"}],"id":4367,"name":"FunctionCall","src":"5793:31:6"}],"id":4368,"name":"ExpressionStatement","src":"5793:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4358,"isOffset":false,"isSlot":false,"src":"5857:3:6","valueSize":1}},{"self":{"declaration":4353,"isOffset":false,"isSlot":false,"src":"5882:4:6","valueSize":1}},{"idx":{"declaration":4355,"isOffset":false,"isSlot":false,"src":"5892:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":4369,"name":"InlineAssembly","src":"5834:82:6"}],"id":4370,"name":"Block","src":"5783:139:6"}],"id":4371,"name":"FunctionDefinition","src":"5699:223:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4391,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4372,"name":"ElementaryTypeName","src":"6186:5:6"}],"id":4373,"name":"VariableDeclaration","src":"6186:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4391,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4374,"name":"ElementaryTypeName","src":"6205:4:6"}],"id":4375,"name":"VariableDeclaration","src":"6205:8:6"}],"id":4376,"name":"ParameterList","src":"6185:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4391,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":4377,"name":"ElementaryTypeName","src":"6238:6:6"}],"id":4378,"name":"VariableDeclaration","src":"6238:10:6"}],"id":4379,"name":"ParameterList","src":"6237:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4380,"name":"Identifier","src":"6260:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4375,"type":"uint256","value":"idx"},"id":4381,"name":"Identifier","src":"6268:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4382,"name":"Literal","src":"6274:1:6"}],"id":4383,"name":"BinaryOperation","src":"6268:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4373,"type":"bytes memory","value":"self"},"id":4384,"name":"Identifier","src":"6279:4:6"}],"id":4385,"name":"MemberAccess","src":"6279:11:6"}],"id":4386,"name":"BinaryOperation","src":"6268:22:6"}],"id":4387,"name":"FunctionCall","src":"6260:31:6"}],"id":4388,"name":"ExpressionStatement","src":"6260:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4378,"isOffset":false,"isSlot":false,"src":"6324:3:6","valueSize":1}},{"self":{"declaration":4373,"isOffset":false,"isSlot":false,"src":"6349:4:6","valueSize":1}},{"idx":{"declaration":4375,"isOffset":false,"isSlot":false,"src":"6359:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":4389,"name":"InlineAssembly","src":"6301:86:6"}],"id":4390,"name":"Block","src":"6250:143:6"}],"id":4391,"name":"FunctionDefinition","src":"6166:227:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4411,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4392,"name":"ElementaryTypeName","src":"6632:5:6"}],"id":4393,"name":"VariableDeclaration","src":"6632:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4411,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4394,"name":"ElementaryTypeName","src":"6651:4:6"}],"id":4395,"name":"VariableDeclaration","src":"6651:8:6"}],"id":4396,"name":"ParameterList","src":"6631:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4411,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4397,"name":"ElementaryTypeName","src":"6684:7:6"}],"id":4398,"name":"VariableDeclaration","src":"6684:11:6"}],"id":4399,"name":"ParameterList","src":"6683:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4400,"name":"Identifier","src":"6707:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4395,"type":"uint256","value":"idx"},"id":4401,"name":"Identifier","src":"6715:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4402,"name":"Literal","src":"6721:2:6"}],"id":4403,"name":"BinaryOperation","src":"6715:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4393,"type":"bytes memory","value":"self"},"id":4404,"name":"Identifier","src":"6727:4:6"}],"id":4405,"name":"MemberAccess","src":"6727:11:6"}],"id":4406,"name":"BinaryOperation","src":"6715:23:6"}],"id":4407,"name":"FunctionCall","src":"6707:32:6"}],"id":4408,"name":"ExpressionStatement","src":"6707:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4398,"isOffset":false,"isSlot":false,"src":"6772:3:6","valueSize":1}},{"self":{"declaration":4393,"isOffset":false,"isSlot":false,"src":"6793:4:6","valueSize":1}},{"idx":{"declaration":4395,"isOffset":false,"isSlot":false,"src":"6804:3:6","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":4409,"name":"InlineAssembly","src":"6749:70:6"}],"id":4410,"name":"Block","src":"6697:128:6"}],"id":4411,"name":"FunctionDefinition","src":"6611:214:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4431,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4412,"name":"ElementaryTypeName","src":"7064:5:6"}],"id":4413,"name":"VariableDeclaration","src":"7064:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4431,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4414,"name":"ElementaryTypeName","src":"7083:4:6"}],"id":4415,"name":"VariableDeclaration","src":"7083:8:6"}],"id":4416,"name":"ParameterList","src":"7063:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4431,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":4417,"name":"ElementaryTypeName","src":"7116:7:6"}],"id":4418,"name":"VariableDeclaration","src":"7116:11:6"}],"id":4419,"name":"ParameterList","src":"7115:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4420,"name":"Identifier","src":"7139:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4415,"type":"uint256","value":"idx"},"id":4421,"name":"Identifier","src":"7147:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":4422,"name":"Literal","src":"7153:2:6"}],"id":4423,"name":"BinaryOperation","src":"7147:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4413,"type":"bytes memory","value":"self"},"id":4424,"name":"Identifier","src":"7159:4:6"}],"id":4425,"name":"MemberAccess","src":"7159:11:6"}],"id":4426,"name":"BinaryOperation","src":"7147:23:6"}],"id":4427,"name":"FunctionCall","src":"7139:32:6"}],"id":4428,"name":"ExpressionStatement","src":"7139:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":4418,"isOffset":false,"isSlot":false,"src":"7204:3:6","valueSize":1}},{"self":{"declaration":4413,"isOffset":false,"isSlot":false,"src":"7229:4:6","valueSize":1}},{"idx":{"declaration":4415,"isOffset":false,"isSlot":false,"src":"7240:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":4429,"name":"InlineAssembly","src":"7181:143:6"}],"id":4430,"name":"Block","src":"7129:201:6"}],"id":4431,"name":"FunctionDefinition","src":"7043:287:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4459,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4432,"name":"ElementaryTypeName","src":"7606:5:6"}],"id":4433,"name":"VariableDeclaration","src":"7606:17:6"},{"attributes":{"constant":false,"name":"idx","scope":4459,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4434,"name":"ElementaryTypeName","src":"7625:4:6"}],"id":4435,"name":"VariableDeclaration","src":"7625:8:6"},{"attributes":{"constant":false,"name":"len","scope":4459,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4436,"name":"ElementaryTypeName","src":"7635:4:6"}],"id":4437,"name":"VariableDeclaration","src":"7635:8:6"}],"id":4438,"name":"ParameterList","src":"7605:39:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":4459,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4439,"name":"ElementaryTypeName","src":"7668:7:6"}],"id":4440,"name":"VariableDeclaration","src":"7668:11:6"}],"id":4441,"name":"ParameterList","src":"7667:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4442,"name":"Identifier","src":"7691:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4437,"type":"uint256","value":"len"},"id":4443,"name":"Identifier","src":"7699:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4444,"name":"Literal","src":"7706:2:6"}],"id":4445,"name":"BinaryOperation","src":"7699:9:6"}],"id":4446,"name":"FunctionCall","src":"7691:18:6"}],"id":4447,"name":"ExpressionStatement","src":"7691:18:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4448,"name":"Identifier","src":"7719:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4435,"type":"uint256","value":"idx"},"id":4449,"name":"Identifier","src":"7727:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4437,"type":"uint256","value":"len"},"id":4450,"name":"Identifier","src":"7733:3:6"}],"id":4451,"name":"BinaryOperation","src":"7727:9:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4433,"type":"bytes memory","value":"self"},"id":4452,"name":"Identifier","src":"7740:4:6"}],"id":4453,"name":"MemberAccess","src":"7740:11:6"}],"id":4454,"name":"BinaryOperation","src":"7727:24:6"}],"id":4455,"name":"FunctionCall","src":"7719:33:6"}],"id":4456,"name":"ExpressionStatement","src":"7719:33:6"},{"attributes":{"externalReferences":[{"len":{"declaration":4437,"isOffset":false,"isSlot":false,"src":"7822:3:6","valueSize":1}},{"ret":{"declaration":4440,"isOffset":false,"isSlot":false,"src":"7845:3:6","valueSize":1}},{"self":{"declaration":4433,"isOffset":false,"isSlot":false,"src":"7870:4:6","valueSize":1}},{"idx":{"declaration":4435,"isOffset":false,"isSlot":false,"src":"7881:3:6","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":4457,"name":"InlineAssembly","src":"7762:142:6"}],"id":4458,"name":"Block","src":"7681:229:6"}],"id":4459,"name":"FunctionDefinition","src":"7586:324:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":4499,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4460,"name":"ElementaryTypeName","src":"7932:4:6"}],"id":4461,"name":"VariableDeclaration","src":"7932:9:6"},{"attributes":{"constant":false,"name":"src","scope":4499,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4462,"name":"ElementaryTypeName","src":"7943:4:6"}],"id":4463,"name":"VariableDeclaration","src":"7943:8:6"},{"attributes":{"constant":false,"name":"len","scope":4499,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4464,"name":"ElementaryTypeName","src":"7953:4:6"}],"id":4465,"name":"VariableDeclaration","src":"7953:8:6"}],"id":4466,"name":"ParameterList","src":"7931:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":4467,"name":"ParameterList","src":"7976:0:6"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4465,"type":"uint256","value":"len"},"id":4468,"name":"Identifier","src":"8043:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4469,"name":"Literal","src":"8050:2:6"}],"id":4470,"name":"BinaryOperation","src":"8043:9:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4465,"type":"uint256","value":"len"},"id":4471,"name":"Identifier","src":"8054:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4472,"name":"Literal","src":"8061:2:6"}],"id":4473,"name":"Assignment","src":"8054:9:6"}],"id":4474,"name":"ExpressionStatement","src":"8054:9:6"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":4463,"isOffset":false,"isSlot":false,"src":"8125:3:6","valueSize":1}},{"dest":{"declaration":4461,"isOffset":false,"isSlot":false,"src":"8113:4:6","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":4475,"name":"InlineAssembly","src":"8079:65:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4461,"type":"uint256","value":"dest"},"id":4476,"name":"Identifier","src":"8157:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4477,"name":"Literal","src":"8165:2:6"}],"id":4478,"name":"Assignment","src":"8157:10:6"}],"id":4479,"name":"ExpressionStatement","src":"8157:10:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4463,"type":"uint256","value":"src"},"id":4480,"name":"Identifier","src":"8181:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4481,"name":"Literal","src":"8188:2:6"}],"id":4482,"name":"Assignment","src":"8181:9:6"}],"id":4483,"name":"ExpressionStatement","src":"8181:9:6"}],"id":4484,"name":"Block","src":"8065:136:6"}],"id":4485,"name":"ForStatement","src":"8036:165:6"},{"attributes":{"assignments":[4487]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4498,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4486,"name":"ElementaryTypeName","src":"8243:4:6"}],"id":4487,"name":"VariableDeclaration","src":"8243:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":4488,"name":"Literal","src":"8255:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4489,"name":"Literal","src":"8263:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4465,"type":"uint256","value":"len"},"id":4490,"name":"Identifier","src":"8268:3:6"}],"id":4491,"name":"BinaryOperation","src":"8263:8:6"}],"id":4492,"name":"TupleExpression","src":"8262:10:6"}],"id":4493,"name":"BinaryOperation","src":"8255:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4494,"name":"Literal","src":"8275:1:6"}],"id":4495,"name":"BinaryOperation","src":"8255:21:6"}],"id":4496,"name":"VariableDeclarationStatement","src":"8243:33:6"},{"attributes":{"externalReferences":[{"src":{"declaration":4463,"isOffset":false,"isSlot":false,"src":"8334:3:6","valueSize":1}},{"mask":{"declaration":4487,"isOffset":false,"isSlot":false,"src":"8344:4:6","valueSize":1}},{"dest":{"declaration":4461,"isOffset":false,"isSlot":false,"src":"8421:4:6","valueSize":1}},{"dest":{"declaration":4461,"isOffset":false,"isSlot":false,"src":"8389:4:6","valueSize":1}},{"mask":{"declaration":4487,"isOffset":false,"isSlot":false,"src":"8396:4:6","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":4497,"name":"InlineAssembly","src":"8286:173:6"}],"id":4498,"name":"Block","src":"7976:489:6"}],"id":4499,"name":"FunctionDefinition","src":"7916:549:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4542,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4500,"name":"ElementaryTypeName","src":"8704:5:6"}],"id":4501,"name":"VariableDeclaration","src":"8704:17:6"},{"attributes":{"constant":false,"name":"offset","scope":4542,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4502,"name":"ElementaryTypeName","src":"8723:4:6"}],"id":4503,"name":"VariableDeclaration","src":"8723:11:6"},{"attributes":{"constant":false,"name":"len","scope":4542,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4504,"name":"ElementaryTypeName","src":"8736:4:6"}],"id":4505,"name":"VariableDeclaration","src":"8736:8:6"}],"id":4506,"name":"ParameterList","src":"8703:42:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4542,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4507,"name":"ElementaryTypeName","src":"8768:5:6"}],"id":4508,"name":"VariableDeclaration","src":"8768:12:6"}],"id":4509,"name":"ParameterList","src":"8767:14:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4510,"name":"Identifier","src":"8792:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4503,"type":"uint256","value":"offset"},"id":4511,"name":"Identifier","src":"8800:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4505,"type":"uint256","value":"len"},"id":4512,"name":"Identifier","src":"8809:3:6"}],"id":4513,"name":"BinaryOperation","src":"8800:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4501,"type":"bytes memory","value":"self"},"id":4514,"name":"Identifier","src":"8816:4:6"}],"id":4515,"name":"MemberAccess","src":"8816:11:6"}],"id":4516,"name":"BinaryOperation","src":"8800:27:6"}],"id":4517,"name":"FunctionCall","src":"8792:36:6"}],"id":4518,"name":"ExpressionStatement","src":"8792:36:6"},{"attributes":{"assignments":[4520]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4541,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4519,"name":"ElementaryTypeName","src":"8839:5:6"}],"id":4520,"name":"VariableDeclaration","src":"8839:16:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4521,"name":"ElementaryTypeName","src":"8862:5:6"}],"id":4522,"name":"NewExpression","src":"8858:9:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4505,"type":"uint256","value":"len"},"id":4523,"name":"Identifier","src":"8868:3:6"}],"id":4524,"name":"FunctionCall","src":"8858:14:6"}],"id":4525,"name":"VariableDeclarationStatement","src":"8839:33:6"},{"attributes":{"assignments":[4527],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":4541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4526,"name":"ElementaryTypeName","src":"8882:4:6"}],"id":4527,"name":"VariableDeclaration","src":"8882:9:6"}],"id":4528,"name":"VariableDeclarationStatement","src":"8882:9:6"},{"attributes":{"assignments":[4530],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":4541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4529,"name":"ElementaryTypeName","src":"8901:4:6"}],"id":4530,"name":"VariableDeclaration","src":"8901:8:6"}],"id":4531,"name":"VariableDeclarationStatement","src":"8901:8:6"},{"attributes":{"externalReferences":[{"dest":{"declaration":4527,"isOffset":false,"isSlot":false,"src":"8943:4:6","valueSize":1}},{"ret":{"declaration":4520,"isOffset":false,"isSlot":false,"src":"8955:3:6","valueSize":1}},{"src":{"declaration":4530,"isOffset":false,"isSlot":false,"src":"8976:3:6","valueSize":1}},{"self":{"declaration":4501,"isOffset":false,"isSlot":false,"src":"8991:4:6","valueSize":1}},{"offset":{"declaration":4503,"isOffset":false,"isSlot":false,"src":"9002:6:6","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":4532,"name":"InlineAssembly","src":"8920:99:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4499,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4533,"name":"Identifier","src":"9028:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4527,"type":"uint256","value":"dest"},"id":4534,"name":"Identifier","src":"9035:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4530,"type":"uint256","value":"src"},"id":4535,"name":"Identifier","src":"9041:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4505,"type":"uint256","value":"len"},"id":4536,"name":"Identifier","src":"9046:3:6"}],"id":4537,"name":"FunctionCall","src":"9028:22:6"}],"id":4538,"name":"ExpressionStatement","src":"9028:22:6"},{"attributes":{"functionReturnParameters":4509},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4520,"type":"bytes memory","value":"ret"},"id":4539,"name":"Identifier","src":"9068:3:6"}],"id":4540,"name":"Return","src":"9061:10:6"}],"id":4541,"name":"Block","src":"8782:296:6"}],"id":4542,"name":"FunctionDefinition","src":"8685:393:6"},{"attributes":{"constant":true,"name":"base32HexTable","scope":4765,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4543,"name":"ElementaryTypeName","src":"9206:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":4544,"name":"Literal","src":"9238:147:6"}],"id":4545,"name":"VariableDeclaration","src":"9206:179:6"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":4765,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4764,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4546,"name":"ElementaryTypeName","src":"9697:5:6"}],"id":4547,"name":"VariableDeclaration","src":"9697:17:6"},{"attributes":{"constant":false,"name":"off","scope":4764,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4548,"name":"ElementaryTypeName","src":"9716:4:6"}],"id":4549,"name":"VariableDeclaration","src":"9716:8:6"},{"attributes":{"constant":false,"name":"len","scope":4764,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4550,"name":"ElementaryTypeName","src":"9726:4:6"}],"id":4551,"name":"VariableDeclaration","src":"9726:8:6"}],"id":4552,"name":"ParameterList","src":"9696:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":4764,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4553,"name":"ElementaryTypeName","src":"9758:7:6"}],"id":4554,"name":"VariableDeclaration","src":"9758:7:6"}],"id":4555,"name":"ParameterList","src":"9757:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4556,"name":"Identifier","src":"9777:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4557,"name":"Identifier","src":"9785:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":4558,"name":"Literal","src":"9792:2:6"}],"id":4559,"name":"BinaryOperation","src":"9785:9:6"}],"id":4560,"name":"FunctionCall","src":"9777:18:6"}],"id":4561,"name":"ExpressionStatement","src":"9777:18:6"},{"attributes":{"assignments":[4563]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4763,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4562,"name":"ElementaryTypeName","src":"9806:4:6"}],"id":4563,"name":"VariableDeclaration","src":"9806:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4564,"name":"Literal","src":"9817:1:6"}],"id":4565,"name":"VariableDeclarationStatement","src":"9806:12:6"},{"attributes":{"assignments":[4567],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":4763,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":4566,"name":"ElementaryTypeName","src":"9828:5:6"}],"id":4567,"name":"VariableDeclaration","src":"9828:13:6"}],"id":4568,"name":"VariableDeclarationStatement","src":"9828:13:6"},{"children":[{"attributes":{"assignments":[4570]},"children":[{"attributes":{"constant":false,"name":"i","scope":4635,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4569,"name":"ElementaryTypeName","src":"9855:4:6"}],"id":4570,"name":"VariableDeclaration","src":"9855:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4571,"name":"Literal","src":"9864:1:6"}],"id":4572,"name":"VariableDeclarationStatement","src":"9855:10:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"i"},"id":4573,"name":"Identifier","src":"9867:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4574,"name":"Identifier","src":"9871:3:6"}],"id":4575,"name":"BinaryOperation","src":"9867:7:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"i"},"id":4576,"name":"Identifier","src":"9876:1:6"}],"id":4577,"name":"UnaryOperation","src":"9876:3:6"}],"id":4578,"name":"ExpressionStatement","src":"9876:3:6"},{"children":[{"attributes":{"assignments":[4580]},"children":[{"attributes":{"constant":false,"name":"char","scope":4634,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":4579,"name":"ElementaryTypeName","src":"9895:6:6"}],"id":4580,"name":"VariableDeclaration","src":"9895:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"bytes memory","value":"self"},"id":4581,"name":"Identifier","src":"9909:4:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4549,"type":"uint256","value":"off"},"id":4582,"name":"Identifier","src":"9914:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"i"},"id":4583,"name":"Identifier","src":"9920:1:6"}],"id":4584,"name":"BinaryOperation","src":"9914:7:6"}],"id":4585,"name":"IndexAccess","src":"9909:13:6"}],"id":4586,"name":"VariableDeclarationStatement","src":"9895:27:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4587,"name":"Identifier","src":"9936:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4580,"type":"bytes1","value":"char"},"id":4588,"name":"Identifier","src":"9944:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":4589,"name":"Literal","src":"9952:4:6"}],"id":4590,"name":"BinaryOperation","src":"9944:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4580,"type":"bytes1","value":"char"},"id":4591,"name":"Identifier","src":"9960:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":4592,"name":"Literal","src":"9968:4:6"}],"id":4593,"name":"BinaryOperation","src":"9960:12:6"}],"id":4594,"name":"BinaryOperation","src":"9944:28:6"}],"id":4595,"name":"FunctionCall","src":"9936:37:6"}],"id":4596,"name":"ExpressionStatement","src":"9936:37:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4597,"name":"Identifier","src":"9987:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":4598,"name":"ElementaryTypeNameExpression","src":"9997:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"bytes memory","value":"base32HexTable"},"id":4599,"name":"Identifier","src":"10003:14:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":4600,"name":"ElementaryTypeNameExpression","src":"10018:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":4601,"name":"ElementaryTypeNameExpression","src":"10023:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4580,"type":"bytes1","value":"char"},"id":4602,"name":"Identifier","src":"10029:4:6"}],"id":4603,"name":"FunctionCall","src":"10023:11:6"}],"id":4604,"name":"FunctionCall","src":"10018:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":4605,"name":"Literal","src":"10038:4:6"}],"id":4606,"name":"BinaryOperation","src":"10018:24:6"}],"id":4607,"name":"IndexAccess","src":"10003:40:6"}],"id":4608,"name":"FunctionCall","src":"9997:47:6"}],"id":4609,"name":"Assignment","src":"9987:57:6"}],"id":4610,"name":"ExpressionStatement","src":"9987:57:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":4611,"name":"Identifier","src":"10058:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4612,"name":"Identifier","src":"10066:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":4613,"name":"Literal","src":"10077:4:6"}],"id":4614,"name":"BinaryOperation","src":"10066:15:6"}],"id":4615,"name":"FunctionCall","src":"10058:24:6"}],"id":4616,"name":"ExpressionStatement","src":"10058:24:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"i"},"id":4617,"name":"Identifier","src":"10099:1:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4618,"name":"Identifier","src":"10104:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4619,"name":"Literal","src":"10110:1:6"}],"id":4620,"name":"BinaryOperation","src":"10104:7:6"}],"id":4621,"name":"BinaryOperation","src":"10099:12:6"},{"children":[{"id":4622,"name":"Break","src":"10131:5:6"}],"id":4623,"name":"Block","src":"10113:38:6"}],"id":4624,"name":"IfStatement","src":"10096:55:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4625,"name":"Identifier","src":"10164:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4626,"name":"Identifier","src":"10171:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4627,"name":"Literal","src":"10178:1:6"}],"id":4628,"name":"BinaryOperation","src":"10171:8:6"}],"id":4629,"name":"TupleExpression","src":"10170:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4630,"name":"Identifier","src":"10183:7:6"}],"id":4631,"name":"BinaryOperation","src":"10170:20:6"}],"id":4632,"name":"Assignment","src":"10164:26:6"}],"id":4633,"name":"ExpressionStatement","src":"10164:26:6"}],"id":4634,"name":"Block","src":"9881:320:6"}],"id":4635,"name":"ForStatement","src":"9851:350:6"},{"attributes":{"assignments":[4637]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":4763,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4636,"name":"ElementaryTypeName","src":"10211:4:6"}],"id":4637,"name":"VariableDeclaration","src":"10211:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4638,"name":"Identifier","src":"10225:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4639,"name":"Literal","src":"10231:1:6"}],"id":4640,"name":"BinaryOperation","src":"10225:7:6"}],"id":4641,"name":"VariableDeclarationStatement","src":"10211:21:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4642,"name":"Identifier","src":"10245:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4643,"name":"Literal","src":"10251:1:6"}],"id":4644,"name":"BinaryOperation","src":"10245:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4645,"name":"Literal","src":"10256:1:6"}],"id":4646,"name":"BinaryOperation","src":"10245:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4647,"name":"Identifier","src":"10325:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4648,"name":"Identifier","src":"10332:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4649,"name":"Literal","src":"10339:1:6"}],"id":4650,"name":"BinaryOperation","src":"10332:8:6"}],"id":4651,"name":"TupleExpression","src":"10331:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4652,"name":"Identifier","src":"10344:7:6"}],"id":4653,"name":"BinaryOperation","src":"10331:20:6"}],"id":4654,"name":"Assignment","src":"10325:26:6"}],"id":4655,"name":"ExpressionStatement","src":"10325:26:6"}],"id":4656,"name":"Block","src":"10259:103:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4657,"name":"Identifier","src":"10371:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4658,"name":"Literal","src":"10377:1:6"}],"id":4659,"name":"BinaryOperation","src":"10371:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4660,"name":"Literal","src":"10382:1:6"}],"id":4661,"name":"BinaryOperation","src":"10371:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4662,"name":"Identifier","src":"10444:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4663,"name":"Identifier","src":"10451:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4664,"name":"Literal","src":"10458:1:6"}],"id":4665,"name":"BinaryOperation","src":"10451:8:6"}],"id":4666,"name":"TupleExpression","src":"10450:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4667,"name":"Identifier","src":"10464:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4668,"name":"Literal","src":"10475:1:6"}],"id":4669,"name":"BinaryOperation","src":"10464:12:6"}],"id":4670,"name":"TupleExpression","src":"10463:14:6"}],"id":4671,"name":"BinaryOperation","src":"10450:27:6"}],"id":4672,"name":"Assignment","src":"10444:33:6"}],"id":4673,"name":"ExpressionStatement","src":"10444:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4674,"name":"Identifier","src":"10491:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4675,"name":"Literal","src":"10501:1:6"}],"id":4676,"name":"Assignment","src":"10491:11:6"}],"id":4677,"name":"ExpressionStatement","src":"10491:11:6"}],"id":4678,"name":"Block","src":"10385:128:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4679,"name":"Identifier","src":"10522:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4680,"name":"Literal","src":"10528:1:6"}],"id":4681,"name":"BinaryOperation","src":"10522:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4682,"name":"Literal","src":"10533:1:6"}],"id":4683,"name":"BinaryOperation","src":"10522:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4684,"name":"Identifier","src":"10597:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4685,"name":"Identifier","src":"10604:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4686,"name":"Literal","src":"10611:1:6"}],"id":4687,"name":"BinaryOperation","src":"10604:8:6"}],"id":4688,"name":"TupleExpression","src":"10603:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4689,"name":"Identifier","src":"10617:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4690,"name":"Literal","src":"10628:1:6"}],"id":4691,"name":"BinaryOperation","src":"10617:12:6"}],"id":4692,"name":"TupleExpression","src":"10616:14:6"}],"id":4693,"name":"BinaryOperation","src":"10603:27:6"}],"id":4694,"name":"Assignment","src":"10597:33:6"}],"id":4695,"name":"ExpressionStatement","src":"10597:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4696,"name":"Identifier","src":"10644:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4697,"name":"Literal","src":"10654:1:6"}],"id":4698,"name":"Assignment","src":"10644:11:6"}],"id":4699,"name":"ExpressionStatement","src":"10644:11:6"}],"id":4700,"name":"Block","src":"10536:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4701,"name":"Identifier","src":"10675:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4702,"name":"Literal","src":"10681:1:6"}],"id":4703,"name":"BinaryOperation","src":"10675:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4704,"name":"Literal","src":"10686:1:6"}],"id":4705,"name":"BinaryOperation","src":"10675:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4706,"name":"Identifier","src":"10750:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4707,"name":"Identifier","src":"10757:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4708,"name":"Literal","src":"10764:1:6"}],"id":4709,"name":"BinaryOperation","src":"10757:8:6"}],"id":4710,"name":"TupleExpression","src":"10756:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4711,"name":"Identifier","src":"10770:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4712,"name":"Literal","src":"10781:1:6"}],"id":4713,"name":"BinaryOperation","src":"10770:12:6"}],"id":4714,"name":"TupleExpression","src":"10769:14:6"}],"id":4715,"name":"BinaryOperation","src":"10756:27:6"}],"id":4716,"name":"Assignment","src":"10750:33:6"}],"id":4717,"name":"ExpressionStatement","src":"10750:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4718,"name":"Identifier","src":"10797:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4719,"name":"Literal","src":"10807:1:6"}],"id":4720,"name":"Assignment","src":"10797:11:6"}],"id":4721,"name":"ExpressionStatement","src":"10797:11:6"}],"id":4722,"name":"Block","src":"10689:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"len"},"id":4723,"name":"Identifier","src":"10828:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4724,"name":"Literal","src":"10834:1:6"}],"id":4725,"name":"BinaryOperation","src":"10828:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":4726,"name":"Literal","src":"10839:1:6"}],"id":4727,"name":"BinaryOperation","src":"10828:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4728,"name":"Identifier","src":"10904:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4729,"name":"Identifier","src":"10911:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4730,"name":"Literal","src":"10918:1:6"}],"id":4731,"name":"BinaryOperation","src":"10911:8:6"}],"id":4732,"name":"TupleExpression","src":"10910:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4567,"type":"uint8","value":"decoded"},"id":4733,"name":"Identifier","src":"10924:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4734,"name":"Literal","src":"10935:1:6"}],"id":4735,"name":"BinaryOperation","src":"10924:12:6"}],"id":4736,"name":"TupleExpression","src":"10923:14:6"}],"id":4737,"name":"BinaryOperation","src":"10910:27:6"}],"id":4738,"name":"Assignment","src":"10904:33:6"}],"id":4739,"name":"ExpressionStatement","src":"10904:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4740,"name":"Identifier","src":"10951:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4741,"name":"Literal","src":"10961:1:6"}],"id":4742,"name":"Assignment","src":"10951:11:6"}],"id":4743,"name":"ExpressionStatement","src":"10951:11:6"}],"id":4744,"name":"Block","src":"10842:131:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[4785,4786],"referencedDeclaration":4785,"type":"function () pure","value":"revert"},"id":4745,"name":"Identifier","src":"10993:6:6"}],"id":4746,"name":"FunctionCall","src":"10993:8:6"}],"id":4747,"name":"ExpressionStatement","src":"10993:8:6"}],"id":4748,"name":"Block","src":"10979:33:6"}],"id":4749,"name":"IfStatement","src":"10825:187:6"}],"id":4750,"name":"IfStatement","src":"10672:340:6"}],"id":4751,"name":"IfStatement","src":"10519:493:6"}],"id":4752,"name":"IfStatement","src":"10368:644:6"}],"id":4753,"name":"IfStatement","src":"10242:770:6"},{"attributes":{"functionReturnParameters":4555},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4754,"name":"ElementaryTypeNameExpression","src":"11029:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4563,"type":"uint256","value":"ret"},"id":4755,"name":"Identifier","src":"11037:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":4756,"name":"Literal","src":"11045:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4637,"type":"uint256","value":"bitlen"},"id":4757,"name":"Identifier","src":"11051:6:6"}],"id":4758,"name":"BinaryOperation","src":"11045:12:6"}],"id":4759,"name":"TupleExpression","src":"11044:14:6"}],"id":4760,"name":"BinaryOperation","src":"11037:21:6"}],"id":4761,"name":"FunctionCall","src":"11029:30:6"}],"id":4762,"name":"Return","src":"11022:37:6"}],"id":4763,"name":"Block","src":"9767:1299:6"}],"id":4764,"name":"FunctionDefinition","src":"9668:1398:6"}],"id":4765,"name":"ContractDefinition","src":"26:11042:6"}],"id":4766,"name":"SourceUnit","src":"0:11069:6"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[1913]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1741,"name":"PragmaDirective","src":"1401:23:7"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":1742,"name":"PragmaDirective","src":"1425:33:7"},{"attributes":{"SourceUnit":1740,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1743,"name":"ImportDirective","src":"1460:19:7"},{"attributes":{"SourceUnit":2207,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1744,"name":"ImportDirective","src":"1480:36:7"},{"attributes":{"SourceUnit":2366,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1745,"name":"ImportDirective","src":"1517:37:7"},{"attributes":{"SourceUnit":2436,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1746,"name":"ImportDirective","src":"1555:44:7"},{"attributes":{"SourceUnit":2927,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1747,"name":"ImportDirective","src":"1600:36:7"},{"attributes":{"SourceUnit":3114,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1748,"name":"ImportDirective","src":"1637:42:7"},{"attributes":{"SourceUnit":3184,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1749,"name":"ImportDirective","src":"1680:37:7"},{"attributes":{"SourceUnit":3275,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1750,"name":"ImportDirective","src":"1718:39:7"},{"attributes":{"SourceUnit":3358,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":1914,"symbolAliases":[null],"unitAlias":""},"id":1751,"name":"ImportDirective","src":"1758:37:7"},{"attributes":{"contractDependencies":[2206,2365,2435,2926,3113,3183,3274,3357,3426],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[1913,3357,3274,3183,3113,2926,2435,2365,2206,3426],"name":"PublicResolver","scope":1914},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":2206,"type":"contract ABIResolver"},"id":1752,"name":"UserDefinedTypeName","src":"1924:11:7"}],"id":1753,"name":"InheritanceSpecifier","src":"1924:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":2365,"type":"contract AddrResolver"},"id":1754,"name":"UserDefinedTypeName","src":"1937:12:7"}],"id":1755,"name":"InheritanceSpecifier","src":"1937:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":2435,"type":"contract ContentHashResolver"},"id":1756,"name":"UserDefinedTypeName","src":"1951:19:7"}],"id":1757,"name":"InheritanceSpecifier","src":"1951:19:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":2926,"type":"contract DNSResolver"},"id":1758,"name":"UserDefinedTypeName","src":"1972:11:7"}],"id":1759,"name":"InheritanceSpecifier","src":"1972:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":3113,"type":"contract InterfaceResolver"},"id":1760,"name":"UserDefinedTypeName","src":"1985:17:7"}],"id":1761,"name":"InheritanceSpecifier","src":"1985:17:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":3183,"type":"contract NameResolver"},"id":1762,"name":"UserDefinedTypeName","src":"2004:12:7"}],"id":1763,"name":"InheritanceSpecifier","src":"2004:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":3274,"type":"contract PubkeyResolver"},"id":1764,"name":"UserDefinedTypeName","src":"2018:14:7"}],"id":1765,"name":"InheritanceSpecifier","src":"2018:14:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":3357,"type":"contract TextResolver"},"id":1766,"name":"UserDefinedTypeName","src":"2034:12:7"}],"id":1767,"name":"InheritanceSpecifier","src":"2034:12:7"},{"attributes":{"constant":false,"name":"ens","scope":1913,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":1739,"type":"contract ENS"},"id":1768,"name":"UserDefinedTypeName","src":"2053:3:7"}],"id":1769,"name":"VariableDeclaration","src":"2053:7:7"},{"attributes":{"constant":false,"name":"authorisations","scope":1913,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1770,"name":"ElementaryTypeName","src":"2328:7:7"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":1771,"name":"ElementaryTypeName","src":"2345:7:7"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":1772,"name":"ElementaryTypeName","src":"2362:7:7"},{"attributes":{"name":"bool","type":"bool"},"id":1773,"name":"ElementaryTypeName","src":"2371:4:7"}],"id":1774,"name":"Mapping","src":"2354:22:7"}],"id":1775,"name":"Mapping","src":"2337:40:7"}],"id":1776,"name":"Mapping","src":"2320:58:7"}],"id":1777,"name":"VariableDeclaration","src":"2320:80:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":1787,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1778,"name":"ElementaryTypeName","src":"2434:7:7"}],"id":1779,"name":"VariableDeclaration","src":"2434:20:7"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":1787,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1780,"name":"ElementaryTypeName","src":"2456:7:7"}],"id":1781,"name":"VariableDeclaration","src":"2456:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":1787,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1782,"name":"ElementaryTypeName","src":"2479:7:7"}],"id":1783,"name":"VariableDeclaration","src":"2479:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":1787,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1784,"name":"ElementaryTypeName","src":"2503:4:7"}],"id":1785,"name":"VariableDeclaration","src":"2503:17:7"}],"id":1786,"name":"ParameterList","src":"2433:88:7"}],"id":1787,"name":"EventDefinition","src":"2407:115:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1913,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":1797,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":1739,"type":"contract ENS"},"id":1788,"name":"UserDefinedTypeName","src":"2540:3:7"}],"id":1789,"name":"VariableDeclaration","src":"2540:8:7"}],"id":1790,"name":"ParameterList","src":"2539:10:7"},{"attributes":{"parameters":[null]},"children":[],"id":1791,"name":"ParameterList","src":"2557:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"contract ENS","value":"ens"},"id":1792,"name":"Identifier","src":"2567:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1789,"type":"contract ENS","value":"_ens"},"id":1793,"name":"Identifier","src":"2573:4:7"}],"id":1794,"name":"Assignment","src":"2567:10:7"}],"id":1795,"name":"ExpressionStatement","src":"2567:10:7"}],"id":1796,"name":"Block","src":"2557:27:7"}],"id":1797,"name":"FunctionDefinition","src":"2528:56:7"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":1913,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1826,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1798,"name":"ElementaryTypeName","src":"3295:7:7"}],"id":1799,"name":"VariableDeclaration","src":"3295:12:7"},{"attributes":{"constant":false,"name":"target","scope":1826,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1800,"name":"ElementaryTypeName","src":"3309:7:7"}],"id":1801,"name":"VariableDeclaration","src":"3309:14:7"},{"attributes":{"constant":false,"name":"isAuthorised","scope":1826,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1802,"name":"ElementaryTypeName","src":"3325:4:7"}],"id":1803,"name":"VariableDeclaration","src":"3325:17:7"}],"id":1804,"name":"ParameterList","src":"3294:49:7"},{"attributes":{"parameters":[null]},"children":[],"id":1805,"name":"ParameterList","src":"3353:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1777,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":1806,"name":"Identifier","src":"3363:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"bytes32","value":"node"},"id":1807,"name":"Identifier","src":"3378:4:7"}],"id":1811,"name":"IndexAccess","src":"3363:20:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1808,"name":"Identifier","src":"3384:3:7"}],"id":1809,"name":"MemberAccess","src":"3384:10:7"}],"id":1812,"name":"IndexAccess","src":"3363:32:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1801,"type":"address","value":"target"},"id":1810,"name":"Identifier","src":"3396:6:7"}],"id":1813,"name":"IndexAccess","src":"3363:40:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1803,"type":"bool","value":"isAuthorised"},"id":1814,"name":"Identifier","src":"3406:12:7"}],"id":1815,"name":"Assignment","src":"3363:55:7"}],"id":1816,"name":"ExpressionStatement","src":"3363:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":1787,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":1817,"name":"Identifier","src":"3433:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1799,"type":"bytes32","value":"node"},"id":1818,"name":"Identifier","src":"3454:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1819,"name":"Identifier","src":"3460:3:7"}],"id":1820,"name":"MemberAccess","src":"3460:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1801,"type":"address","value":"target"},"id":1821,"name":"Identifier","src":"3472:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1803,"type":"bool","value":"isAuthorised"},"id":1822,"name":"Identifier","src":"3480:12:7"}],"id":1823,"name":"FunctionCall","src":"3433:60:7"}],"id":1824,"name":"EmitStatement","src":"3428:65:7"}],"id":1825,"name":"Block","src":"3353:147:7"}],"id":1826,"name":"FunctionDefinition","src":"3269:231:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":1913,"stateMutability":"view","superFunction":3381,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1855,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1827,"name":"ElementaryTypeName","src":"3528:7:7"}],"id":1828,"name":"VariableDeclaration","src":"3528:12:7"}],"id":1829,"name":"ParameterList","src":"3527:14:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":1855,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1830,"name":"ElementaryTypeName","src":"3564:4:7"}],"id":1831,"name":"VariableDeclaration","src":"3564:4:7"}],"id":1832,"name":"ParameterList","src":"3563:6:7"},{"children":[{"attributes":{"assignments":[1834]},"children":[{"attributes":{"constant":false,"name":"owner","scope":1854,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1833,"name":"ElementaryTypeName","src":"3580:7:7"}],"id":1834,"name":"VariableDeclaration","src":"3580:13:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":1708,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"contract ENS","value":"ens"},"id":1835,"name":"Identifier","src":"3596:3:7"}],"id":1836,"name":"MemberAccess","src":"3596:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1828,"type":"bytes32","value":"node"},"id":1837,"name":"Identifier","src":"3606:4:7"}],"id":1838,"name":"FunctionCall","src":"3596:15:7"}],"id":1839,"name":"VariableDeclarationStatement","src":"3580:31:7"},{"attributes":{"functionReturnParameters":1832},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"address","value":"owner"},"id":1840,"name":"Identifier","src":"3628:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1841,"name":"Identifier","src":"3637:3:7"}],"id":1842,"name":"MemberAccess","src":"3637:10:7"}],"id":1843,"name":"BinaryOperation","src":"3628:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1777,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":1844,"name":"Identifier","src":"3651:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1828,"type":"bytes32","value":"node"},"id":1845,"name":"Identifier","src":"3666:4:7"}],"id":1846,"name":"IndexAccess","src":"3651:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"address","value":"owner"},"id":1847,"name":"Identifier","src":"3672:5:7"}],"id":1848,"name":"IndexAccess","src":"3651:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1849,"name":"Identifier","src":"3679:3:7"}],"id":1850,"name":"MemberAccess","src":"3679:10:7"}],"id":1851,"name":"IndexAccess","src":"3651:39:7"}],"id":1852,"name":"BinaryOperation","src":"3628:62:7"}],"id":1853,"name":"Return","src":"3621:69:7"}],"id":1854,"name":"Block","src":"3570:127:7"}],"id":1855,"name":"FunctionDefinition","src":"3506:191:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":1913,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":1912,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1856,"name":"ElementaryTypeName","src":"3722:5:7"}],"id":1857,"name":"ArrayTypeName","src":"3722:7:7"}],"id":1858,"name":"VariableDeclaration","src":"3722:21:7"}],"id":1859,"name":"ParameterList","src":"3721:23:7"},{"children":[{"attributes":{"constant":false,"name":"results","scope":1912,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1860,"name":"ElementaryTypeName","src":"3762:5:7"}],"id":1861,"name":"ArrayTypeName","src":"3762:7:7"}],"id":1862,"name":"VariableDeclaration","src":"3762:22:7"}],"id":1863,"name":"ParameterList","src":"3761:24:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1862,"type":"bytes memory[] memory","value":"results"},"id":1864,"name":"Identifier","src":"3796:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1865,"name":"ElementaryTypeName","src":"3810:5:7"}],"id":1866,"name":"ArrayTypeName","src":"3810:7:7"}],"id":1867,"name":"NewExpression","src":"3806:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1858,"type":"bytes calldata[] calldata","value":"data"},"id":1868,"name":"Identifier","src":"3818:4:7"}],"id":1869,"name":"MemberAccess","src":"3818:11:7"}],"id":1870,"name":"FunctionCall","src":"3806:24:7"}],"id":1871,"name":"Assignment","src":"3796:34:7"}],"id":1872,"name":"ExpressionStatement","src":"3796:34:7"},{"children":[{"attributes":{"assignments":[1874]},"children":[{"attributes":{"constant":false,"name":"i","scope":1908,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1873,"name":"ElementaryTypeName","src":"3844:4:7"}],"id":1874,"name":"VariableDeclaration","src":"3844:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1875,"name":"Literal","src":"3853:1:7"}],"id":1876,"name":"VariableDeclarationStatement","src":"3844:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"uint256","value":"i"},"id":1877,"name":"Identifier","src":"3856:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1858,"type":"bytes calldata[] calldata","value":"data"},"id":1878,"name":"Identifier","src":"3860:4:7"}],"id":1879,"name":"MemberAccess","src":"3860:11:7"}],"id":1880,"name":"BinaryOperation","src":"3856:15:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"uint256","value":"i"},"id":1881,"name":"Identifier","src":"3873:1:7"}],"id":1882,"name":"UnaryOperation","src":"3873:3:7"}],"id":1883,"name":"ExpressionStatement","src":"3873:3:7"},{"children":[{"attributes":{"assignments":[1885,1887]},"children":[{"attributes":{"constant":false,"name":"success","scope":1907,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1884,"name":"ElementaryTypeName","src":"3893:4:7"}],"id":1885,"name":"VariableDeclaration","src":"3893:12:7"},{"attributes":{"constant":false,"name":"result","scope":1907,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1886,"name":"ElementaryTypeName","src":"3907:5:7"}],"id":1887,"name":"VariableDeclaration","src":"3907:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$1913","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1888,"name":"ElementaryTypeNameExpression","src":"3930:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4834,"type":"contract PublicResolver","value":"this"},"id":1889,"name":"Identifier","src":"3938:4:7"}],"id":1890,"name":"FunctionCall","src":"3930:13:7"}],"id":1891,"name":"MemberAccess","src":"3930:26:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1858,"type":"bytes calldata[] calldata","value":"data"},"id":1892,"name":"Identifier","src":"3957:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"uint256","value":"i"},"id":1893,"name":"Identifier","src":"3962:1:7"}],"id":1894,"name":"IndexAccess","src":"3957:7:7"}],"id":1895,"name":"FunctionCall","src":"3930:35:7"}],"id":1896,"name":"VariableDeclarationStatement","src":"3892:73:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":1897,"name":"Identifier","src":"3979:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1885,"type":"bool","value":"success"},"id":1898,"name":"Identifier","src":"3987:7:7"}],"id":1899,"name":"FunctionCall","src":"3979:16:7"}],"id":1900,"name":"ExpressionStatement","src":"3979:16:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1862,"type":"bytes memory[] memory","value":"results"},"id":1901,"name":"Identifier","src":"4009:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"uint256","value":"i"},"id":1902,"name":"Identifier","src":"4017:1:7"}],"id":1903,"name":"IndexAccess","src":"4009:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"bytes memory","value":"result"},"id":1904,"name":"Identifier","src":"4022:6:7"}],"id":1905,"name":"Assignment","src":"4009:19:7"}],"id":1906,"name":"ExpressionStatement","src":"4009:19:7"}],"id":1907,"name":"Block","src":"3878:161:7"}],"id":1908,"name":"ForStatement","src":"3840:199:7"},{"attributes":{"functionReturnParameters":1863},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1862,"type":"bytes memory[] memory","value":"results"},"id":1909,"name":"Identifier","src":"4055:7:7"}],"id":1910,"name":"Return","src":"4048:14:7"}],"id":1911,"name":"Block","src":"3786:283:7"}],"id":1912,"name":"FunctionDefinition","src":"3703:366:7"}],"id":1913,"name":"ContractDefinition","src":"1897:2174:7"}],"id":1914,"name":"SourceUnit","src":"1401:2671:7"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[4044]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":3428,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"SourceUnit":4766,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":4045,"symbolAliases":[null],"unitAlias":""},"id":3429,"name":"ImportDirective","src":"26:29:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[4044],"name":"RRUtils","scope":4045},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":4765,"type":"library ENSBytesUtils"},"id":3430,"name":"UserDefinedTypeName","src":"178:13:8"}],"id":3431,"name":"UsingForDirective","src":"172:26:8"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3478,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3432,"name":"ElementaryTypeName","src":"487:5:8"}],"id":3433,"name":"VariableDeclaration","src":"487:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3478,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3434,"name":"ElementaryTypeName","src":"506:4:8"}],"id":3435,"name":"VariableDeclaration","src":"506:11:8"}],"id":3436,"name":"ParameterList","src":"486:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3478,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3437,"name":"ElementaryTypeName","src":"541:4:8"}],"id":3438,"name":"VariableDeclaration","src":"541:4:8"}],"id":3439,"name":"ParameterList","src":"540:6:8"},{"children":[{"attributes":{"assignments":[3441]},"children":[{"attributes":{"constant":false,"name":"idx","scope":3477,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3440,"name":"ElementaryTypeName","src":"557:4:8"}],"id":3441,"name":"VariableDeclaration","src":"557:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3435,"type":"uint256","value":"offset"},"id":3442,"name":"Identifier","src":"568:6:8"}],"id":3443,"name":"VariableDeclarationStatement","src":"557:17:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3444,"name":"Literal","src":"591:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"function (bool) pure","value":"assert"},"id":3445,"name":"Identifier","src":"611:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3441,"type":"uint256","value":"idx"},"id":3446,"name":"Identifier","src":"618:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3433,"type":"bytes memory","value":"self"},"id":3447,"name":"Identifier","src":"624:4:8"}],"id":3448,"name":"MemberAccess","src":"624:11:8"}],"id":3449,"name":"BinaryOperation","src":"618:17:8"}],"id":3450,"name":"FunctionCall","src":"611:25:8"}],"id":3451,"name":"ExpressionStatement","src":"611:25:8"},{"attributes":{"assignments":[3453]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":3471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3452,"name":"ElementaryTypeName","src":"650:4:8"}],"id":3453,"name":"VariableDeclaration","src":"650:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3433,"type":"bytes memory","value":"self"},"id":3454,"name":"Identifier","src":"666:4:8"}],"id":3455,"name":"MemberAccess","src":"666:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3441,"type":"uint256","value":"idx"},"id":3456,"name":"Identifier","src":"681:3:8"}],"id":3457,"name":"FunctionCall","src":"666:19:8"}],"id":3458,"name":"VariableDeclarationStatement","src":"650:35:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3441,"type":"uint256","value":"idx"},"id":3459,"name":"Identifier","src":"699:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3453,"type":"uint256","value":"labelLen"},"id":3460,"name":"Identifier","src":"706:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3461,"name":"Literal","src":"717:1:8"}],"id":3462,"name":"BinaryOperation","src":"706:12:8"}],"id":3463,"name":"Assignment","src":"699:19:8"}],"id":3464,"name":"ExpressionStatement","src":"699:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3453,"type":"uint256","value":"labelLen"},"id":3465,"name":"Identifier","src":"736:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3466,"name":"Literal","src":"748:1:8"}],"id":3467,"name":"BinaryOperation","src":"736:13:8"},{"children":[{"id":3468,"name":"Break","src":"769:5:8"}],"id":3469,"name":"Block","src":"751:38:8"}],"id":3470,"name":"IfStatement","src":"732:57:8"}],"id":3471,"name":"Block","src":"597:202:8"}],"id":3472,"name":"WhileStatement","src":"584:215:8"},{"attributes":{"functionReturnParameters":3439},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3441,"type":"uint256","value":"idx"},"id":3473,"name":"Identifier","src":"815:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3435,"type":"uint256","value":"offset"},"id":3474,"name":"Identifier","src":"821:6:8"}],"id":3475,"name":"BinaryOperation","src":"815:12:8"}],"id":3476,"name":"Return","src":"808:19:8"}],"id":3477,"name":"Block","src":"547:287:8"}],"id":3478,"name":"FunctionDefinition","src":"467:367:8"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3501,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3479,"name":"ElementaryTypeName","src":"1073:5:8"}],"id":3480,"name":"VariableDeclaration","src":"1073:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3501,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3481,"name":"ElementaryTypeName","src":"1092:4:8"}],"id":3482,"name":"VariableDeclaration","src":"1092:11:8"}],"id":3483,"name":"ParameterList","src":"1072:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3501,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3484,"name":"ElementaryTypeName","src":"1127:5:8"}],"id":3485,"name":"VariableDeclaration","src":"1127:16:8"}],"id":3486,"name":"ParameterList","src":"1126:18:8"},{"children":[{"attributes":{"assignments":[3488]},"children":[{"attributes":{"constant":false,"name":"len","scope":3500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3487,"name":"ElementaryTypeName","src":"1155:4:8"}],"id":3488,"name":"VariableDeclaration","src":"1155:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3478,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":3489,"name":"Identifier","src":"1166:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"bytes memory","value":"self"},"id":3490,"name":"Identifier","src":"1177:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3482,"type":"uint256","value":"offset"},"id":3491,"name":"Identifier","src":"1183:6:8"}],"id":3492,"name":"FunctionCall","src":"1166:24:8"}],"id":3493,"name":"VariableDeclarationStatement","src":"1155:35:8"},{"attributes":{"functionReturnParameters":3486},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":4542,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"bytes memory","value":"self"},"id":3494,"name":"Identifier","src":"1207:4:8"}],"id":3495,"name":"MemberAccess","src":"1207:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3482,"type":"uint256","value":"offset"},"id":3496,"name":"Identifier","src":"1222:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3488,"type":"uint256","value":"len"},"id":3497,"name":"Identifier","src":"1230:3:8"}],"id":3498,"name":"FunctionCall","src":"1207:27:8"}],"id":3499,"name":"Return","src":"1200:34:8"}],"id":3500,"name":"Block","src":"1145:96:8"}],"id":3501,"name":"FunctionDefinition","src":"1055:186:8"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3550,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3502,"name":"ElementaryTypeName","src":"1541:5:8"}],"id":3503,"name":"VariableDeclaration","src":"1541:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3504,"name":"ElementaryTypeName","src":"1560:4:8"}],"id":3505,"name":"VariableDeclaration","src":"1560:11:8"}],"id":3506,"name":"ParameterList","src":"1540:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3507,"name":"ElementaryTypeName","src":"1595:4:8"}],"id":3508,"name":"VariableDeclaration","src":"1595:4:8"}],"id":3509,"name":"ParameterList","src":"1594:6:8"},{"children":[{"attributes":{"assignments":[3511]},"children":[{"attributes":{"constant":false,"name":"count","scope":3549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3510,"name":"ElementaryTypeName","src":"1611:4:8"}],"id":3511,"name":"VariableDeclaration","src":"1611:10:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3512,"name":"Literal","src":"1624:1:8"}],"id":3513,"name":"VariableDeclarationStatement","src":"1611:14:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3514,"name":"Literal","src":"1642:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"function (bool) pure","value":"assert"},"id":3515,"name":"Identifier","src":"1662:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"uint256","value":"offset"},"id":3516,"name":"Identifier","src":"1669:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"bytes memory","value":"self"},"id":3517,"name":"Identifier","src":"1678:4:8"}],"id":3518,"name":"MemberAccess","src":"1678:11:8"}],"id":3519,"name":"BinaryOperation","src":"1669:20:8"}],"id":3520,"name":"FunctionCall","src":"1662:28:8"}],"id":3521,"name":"ExpressionStatement","src":"1662:28:8"},{"attributes":{"assignments":[3523]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":3545,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3522,"name":"ElementaryTypeName","src":"1704:4:8"}],"id":3523,"name":"VariableDeclaration","src":"1704:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"bytes memory","value":"self"},"id":3524,"name":"Identifier","src":"1720:4:8"}],"id":3525,"name":"MemberAccess","src":"1720:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"uint256","value":"offset"},"id":3526,"name":"Identifier","src":"1735:6:8"}],"id":3527,"name":"FunctionCall","src":"1720:22:8"}],"id":3528,"name":"VariableDeclarationStatement","src":"1704:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"uint256","value":"offset"},"id":3529,"name":"Identifier","src":"1756:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"uint256","value":"labelLen"},"id":3530,"name":"Identifier","src":"1766:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3531,"name":"Literal","src":"1777:1:8"}],"id":3532,"name":"BinaryOperation","src":"1766:12:8"}],"id":3533,"name":"Assignment","src":"1756:22:8"}],"id":3534,"name":"ExpressionStatement","src":"1756:22:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3523,"type":"uint256","value":"labelLen"},"id":3535,"name":"Identifier","src":"1796:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3536,"name":"Literal","src":"1808:1:8"}],"id":3537,"name":"BinaryOperation","src":"1796:13:8"},{"children":[{"id":3538,"name":"Break","src":"1829:5:8"}],"id":3539,"name":"Block","src":"1811:38:8"}],"id":3540,"name":"IfStatement","src":"1792:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3511,"type":"uint256","value":"count"},"id":3541,"name":"Identifier","src":"1862:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3542,"name":"Literal","src":"1871:1:8"}],"id":3543,"name":"Assignment","src":"1862:10:8"}],"id":3544,"name":"ExpressionStatement","src":"1862:10:8"}],"id":3545,"name":"Block","src":"1648:235:8"}],"id":3546,"name":"WhileStatement","src":"1635:248:8"},{"attributes":{"functionReturnParameters":3509},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3511,"type":"uint256","value":"count"},"id":3547,"name":"Identifier","src":"1899:5:8"}],"id":3548,"name":"Return","src":"1892:12:8"}],"id":3549,"name":"Block","src":"1601:310:8"}],"id":3550,"name":"FunctionDefinition","src":"1521:390:8"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":4044,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":3565,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3551,"name":"ElementaryTypeName","src":"2006:5:8"}],"id":3552,"name":"VariableDeclaration","src":"2006:10:8"},{"attributes":{"constant":false,"name":"offset","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3553,"name":"ElementaryTypeName","src":"2026:4:8"}],"id":3554,"name":"VariableDeclaration","src":"2026:11:8"},{"attributes":{"constant":false,"name":"dnstype","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":3555,"name":"ElementaryTypeName","src":"2047:6:8"}],"id":3556,"name":"VariableDeclaration","src":"2047:14:8"},{"attributes":{"constant":false,"name":"class","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":3557,"name":"ElementaryTypeName","src":"2071:6:8"}],"id":3558,"name":"VariableDeclaration","src":"2071:12:8"},{"attributes":{"constant":false,"name":"ttl","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":3559,"name":"ElementaryTypeName","src":"2093:6:8"}],"id":3560,"name":"VariableDeclaration","src":"2093:10:8"},{"attributes":{"constant":false,"name":"rdataOffset","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3561,"name":"ElementaryTypeName","src":"2113:4:8"}],"id":3562,"name":"VariableDeclaration","src":"2113:16:8"},{"attributes":{"constant":false,"name":"nextOffset","scope":3565,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3563,"name":"ElementaryTypeName","src":"2139:4:8"}],"id":3564,"name":"VariableDeclaration","src":"2139:15:8"}],"id":3565,"name":"StructDefinition","src":"1978:183:8"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3591,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3566,"name":"ElementaryTypeName","src":"2387:5:8"}],"id":3567,"name":"VariableDeclaration","src":"2387:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3591,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3568,"name":"ElementaryTypeName","src":"2406:4:8"}],"id":3569,"name":"VariableDeclaration","src":"2406:11:8"}],"id":3570,"name":"ParameterList","src":"2386:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3591,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3571,"name":"UserDefinedTypeName","src":"2442:10:8"}],"id":3572,"name":"VariableDeclaration","src":"2442:21:8"}],"id":3573,"name":"ParameterList","src":"2441:23:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3572,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":3574,"name":"Identifier","src":"2475:3:8"}],"id":3576,"name":"MemberAccess","src":"2475:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3567,"type":"bytes memory","value":"self"},"id":3577,"name":"Identifier","src":"2486:4:8"}],"id":3578,"name":"Assignment","src":"2475:15:8"}],"id":3579,"name":"ExpressionStatement","src":"2475:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":3564,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3572,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":3580,"name":"Identifier","src":"2500:3:8"}],"id":3582,"name":"MemberAccess","src":"2500:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3569,"type":"uint256","value":"offset"},"id":3583,"name":"Identifier","src":"2517:6:8"}],"id":3584,"name":"Assignment","src":"2500:23:8"}],"id":3585,"name":"ExpressionStatement","src":"2500:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$3565_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3708,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":3586,"name":"Identifier","src":"2533:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3572,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":3587,"name":"Identifier","src":"2538:3:8"}],"id":3588,"name":"FunctionCall","src":"2533:9:8"}],"id":3589,"name":"ExpressionStatement","src":"2533:9:8"}],"id":3590,"name":"Block","src":"2465:84:8"}],"id":3591,"name":"FunctionDefinition","src":"2367:182:8"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":3606,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3592,"name":"UserDefinedTypeName","src":"2734:10:8"}],"id":3593,"name":"VariableDeclaration","src":"2734:22:8"}],"id":3594,"name":"ParameterList","src":"2733:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3595,"name":"ElementaryTypeName","src":"2780:4:8"}],"id":3596,"name":"VariableDeclaration","src":"2780:4:8"}],"id":3597,"name":"ParameterList","src":"2779:6:8"},{"children":[{"attributes":{"functionReturnParameters":3597},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3593,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3598,"name":"Identifier","src":"2803:4:8"}],"id":3599,"name":"MemberAccess","src":"2803:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3593,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3600,"name":"Identifier","src":"2818:4:8"}],"id":3601,"name":"MemberAccess","src":"2818:9:8"}],"id":3602,"name":"MemberAccess","src":"2818:16:8"}],"id":3603,"name":"BinaryOperation","src":"2803:31:8"}],"id":3604,"name":"Return","src":"2796:38:8"}],"id":3605,"name":"Block","src":"2786:55:8"}],"id":3606,"name":"FunctionDefinition","src":"2720:121:8"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":3708,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3607,"name":"UserDefinedTypeName","src":"2978:10:8"}],"id":3608,"name":"VariableDeclaration","src":"2978:22:8"}],"id":3609,"name":"ParameterList","src":"2977:24:8"},{"attributes":{"parameters":[null]},"children":[],"id":3610,"name":"ParameterList","src":"3016:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3611,"name":"Identifier","src":"3026:4:8"}],"id":3613,"name":"MemberAccess","src":"3026:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":3564,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3614,"name":"Identifier","src":"3040:4:8"}],"id":3615,"name":"MemberAccess","src":"3040:15:8"}],"id":3616,"name":"Assignment","src":"3026:29:8"}],"id":3617,"name":"ExpressionStatement","src":"3026:29:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3618,"name":"Identifier","src":"3069:4:8"}],"id":3619,"name":"MemberAccess","src":"3069:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3620,"name":"Identifier","src":"3084:4:8"}],"id":3621,"name":"MemberAccess","src":"3084:9:8"}],"id":3622,"name":"MemberAccess","src":"3084:16:8"}],"id":3623,"name":"BinaryOperation","src":"3069:31:8"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":3610},"id":3624,"name":"Return","src":"3116:7:8"}],"id":3625,"name":"Block","src":"3102:31:8"}],"id":3626,"name":"IfStatement","src":"3065:68:8"},{"attributes":{"assignments":[3628]},"children":[{"attributes":{"constant":false,"name":"off","scope":3707,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3627,"name":"ElementaryTypeName","src":"3168:4:8"}],"id":3628,"name":"VariableDeclaration","src":"3168:8:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3629,"name":"Identifier","src":"3179:4:8"}],"id":3630,"name":"MemberAccess","src":"3179:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3478,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":3631,"name":"Identifier","src":"3193:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3632,"name":"Identifier","src":"3204:4:8"}],"id":3633,"name":"MemberAccess","src":"3204:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3634,"name":"Identifier","src":"3215:4:8"}],"id":3635,"name":"MemberAccess","src":"3215:11:8"}],"id":3636,"name":"FunctionCall","src":"3193:34:8"}],"id":3637,"name":"BinaryOperation","src":"3179:48:8"}],"id":3638,"name":"VariableDeclarationStatement","src":"3168:59:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":3556,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3639,"name":"Identifier","src":"3275:4:8"}],"id":3641,"name":"MemberAccess","src":"3275:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":4371,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3642,"name":"Identifier","src":"3290:4:8"}],"id":3643,"name":"MemberAccess","src":"3290:9:8"}],"id":3644,"name":"MemberAccess","src":"3290:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3645,"name":"Identifier","src":"3311:3:8"}],"id":3646,"name":"FunctionCall","src":"3290:25:8"}],"id":3647,"name":"Assignment","src":"3275:40:8"}],"id":3648,"name":"ExpressionStatement","src":"3275:40:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3649,"name":"Identifier","src":"3325:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3650,"name":"Literal","src":"3332:1:8"}],"id":3651,"name":"Assignment","src":"3325:8:8"}],"id":3652,"name":"ExpressionStatement","src":"3325:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":3558,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3653,"name":"Identifier","src":"3343:4:8"}],"id":3655,"name":"MemberAccess","src":"3343:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":4371,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3656,"name":"Identifier","src":"3356:4:8"}],"id":3657,"name":"MemberAccess","src":"3356:9:8"}],"id":3658,"name":"MemberAccess","src":"3356:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3659,"name":"Identifier","src":"3377:3:8"}],"id":3660,"name":"FunctionCall","src":"3356:25:8"}],"id":3661,"name":"Assignment","src":"3343:38:8"}],"id":3662,"name":"ExpressionStatement","src":"3343:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3663,"name":"Identifier","src":"3391:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3664,"name":"Literal","src":"3398:1:8"}],"id":3665,"name":"Assignment","src":"3391:8:8"}],"id":3666,"name":"ExpressionStatement","src":"3391:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":3560,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3667,"name":"Identifier","src":"3409:4:8"}],"id":3669,"name":"MemberAccess","src":"3409:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":4391,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3670,"name":"Identifier","src":"3420:4:8"}],"id":3671,"name":"MemberAccess","src":"3420:9:8"}],"id":3672,"name":"MemberAccess","src":"3420:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3673,"name":"Identifier","src":"3441:3:8"}],"id":3674,"name":"FunctionCall","src":"3420:25:8"}],"id":3675,"name":"Assignment","src":"3409:36:8"}],"id":3676,"name":"ExpressionStatement","src":"3409:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3677,"name":"Identifier","src":"3455:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3678,"name":"Literal","src":"3462:1:8"}],"id":3679,"name":"Assignment","src":"3455:8:8"}],"id":3680,"name":"ExpressionStatement","src":"3455:8:8"},{"attributes":{"assignments":[3682]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":3707,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3681,"name":"ElementaryTypeName","src":"3500:4:8"}],"id":3682,"name":"VariableDeclaration","src":"3500:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":4371,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3683,"name":"Identifier","src":"3519:4:8"}],"id":3684,"name":"MemberAccess","src":"3519:9:8"}],"id":3685,"name":"MemberAccess","src":"3519:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3686,"name":"Identifier","src":"3540:3:8"}],"id":3687,"name":"FunctionCall","src":"3519:25:8"}],"id":3688,"name":"VariableDeclarationStatement","src":"3500:44:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3689,"name":"Identifier","src":"3554:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3690,"name":"Literal","src":"3561:1:8"}],"id":3691,"name":"Assignment","src":"3554:8:8"}],"id":3692,"name":"ExpressionStatement","src":"3554:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":3562,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3693,"name":"Identifier","src":"3572:4:8"}],"id":3695,"name":"MemberAccess","src":"3572:16:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3696,"name":"Identifier","src":"3591:3:8"}],"id":3697,"name":"Assignment","src":"3572:22:8"}],"id":3698,"name":"ExpressionStatement","src":"3572:22:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":3564,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3608,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3699,"name":"Identifier","src":"3604:4:8"}],"id":3701,"name":"MemberAccess","src":"3604:15:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3628,"type":"uint256","value":"off"},"id":3702,"name":"Identifier","src":"3622:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3682,"type":"uint256","value":"rdataLength"},"id":3703,"name":"Identifier","src":"3628:11:8"}],"id":3704,"name":"BinaryOperation","src":"3622:17:8"}],"id":3705,"name":"Assignment","src":"3604:35:8"}],"id":3706,"name":"ExpressionStatement","src":"3604:35:8"}],"id":3707,"name":"Block","src":"3016:630:8"}],"id":3708,"name":"FunctionDefinition","src":"2964:682:8"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":3729,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3709,"name":"UserDefinedTypeName","src":"3836:10:8"}],"id":3710,"name":"VariableDeclaration","src":"3836:22:8"}],"id":3711,"name":"ParameterList","src":"3835:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3729,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3712,"name":"ElementaryTypeName","src":"3882:5:8"}],"id":3713,"name":"VariableDeclaration","src":"3882:12:8"}],"id":3714,"name":"ParameterList","src":"3881:14:8"},{"children":[{"attributes":{"functionReturnParameters":3714},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":4542,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3710,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3715,"name":"Identifier","src":"3913:4:8"}],"id":3716,"name":"MemberAccess","src":"3913:9:8"}],"id":3717,"name":"MemberAccess","src":"3913:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3710,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3718,"name":"Identifier","src":"3933:4:8"}],"id":3719,"name":"MemberAccess","src":"3933:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3478,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":3720,"name":"Identifier","src":"3946:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3710,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3721,"name":"Identifier","src":"3957:4:8"}],"id":3722,"name":"MemberAccess","src":"3957:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3710,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3723,"name":"Identifier","src":"3968:4:8"}],"id":3724,"name":"MemberAccess","src":"3968:11:8"}],"id":3725,"name":"FunctionCall","src":"3946:34:8"}],"id":3726,"name":"FunctionCall","src":"3913:68:8"}],"id":3727,"name":"Return","src":"3906:75:8"}],"id":3728,"name":"Block","src":"3896:92:8"}],"id":3729,"name":"FunctionDefinition","src":"3822:166:8"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":3749,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":3730,"name":"UserDefinedTypeName","src":"4176:10:8"}],"id":3731,"name":"VariableDeclaration","src":"4176:22:8"}],"id":3732,"name":"ParameterList","src":"4175:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3749,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3733,"name":"ElementaryTypeName","src":"4222:5:8"}],"id":3734,"name":"VariableDeclaration","src":"4222:12:8"}],"id":3735,"name":"ParameterList","src":"4221:14:8"},{"children":[{"attributes":{"functionReturnParameters":3735},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":4542,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":3552,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3731,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3736,"name":"Identifier","src":"4253:4:8"}],"id":3737,"name":"MemberAccess","src":"4253:9:8"}],"id":3738,"name":"MemberAccess","src":"4253:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":3562,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3731,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3739,"name":"Identifier","src":"4273:4:8"}],"id":3740,"name":"MemberAccess","src":"4273:16:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":3564,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3731,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3741,"name":"Identifier","src":"4291:4:8"}],"id":3742,"name":"MemberAccess","src":"4291:15:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":3562,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3731,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":3743,"name":"Identifier","src":"4309:4:8"}],"id":3744,"name":"MemberAccess","src":"4309:16:8"}],"id":3745,"name":"BinaryOperation","src":"4291:34:8"}],"id":3746,"name":"FunctionCall","src":"4253:73:8"}],"id":3747,"name":"Return","src":"4246:80:8"}],"id":3748,"name":"Block","src":"4236:97:8"}],"id":3749,"name":"FunctionDefinition","src":"4161:172:8"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3869,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3750,"name":"ElementaryTypeName","src":"4675:5:8"}],"id":3751,"name":"VariableDeclaration","src":"4675:17:8"},{"attributes":{"constant":false,"name":"offset","scope":3869,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3752,"name":"ElementaryTypeName","src":"4694:4:8"}],"id":3753,"name":"VariableDeclaration","src":"4694:11:8"},{"attributes":{"constant":false,"name":"rrtype","scope":3869,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":3754,"name":"ElementaryTypeName","src":"4707:6:8"}],"id":3755,"name":"VariableDeclaration","src":"4707:13:8"}],"id":3756,"name":"ParameterList","src":"4674:47:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":3869,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3757,"name":"ElementaryTypeName","src":"4745:4:8"}],"id":3758,"name":"VariableDeclaration","src":"4745:4:8"}],"id":3759,"name":"ParameterList","src":"4744:6:8"},{"children":[{"attributes":{"assignments":[3761]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":3868,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3760,"name":"ElementaryTypeName","src":"4761:5:8"}],"id":3761,"name":"VariableDeclaration","src":"4761:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3762,"name":"ElementaryTypeNameExpression","src":"4780:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3755,"type":"uint16","value":"rrtype"},"id":3763,"name":"Identifier","src":"4786:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3764,"name":"Literal","src":"4796:1:8"}],"id":3765,"name":"BinaryOperation","src":"4786:11:8"}],"id":3766,"name":"FunctionCall","src":"4780:18:8"}],"id":3767,"name":"VariableDeclarationStatement","src":"4761:37:8"},{"attributes":{"assignments":[3769]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":3868,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3768,"name":"ElementaryTypeName","src":"4808:5:8"}],"id":3769,"name":"VariableDeclaration","src":"4808:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3770,"name":"ElementaryTypeNameExpression","src":"4827:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3755,"type":"uint16","value":"rrtype"},"id":3771,"name":"Identifier","src":"4834:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":3772,"name":"Literal","src":"4843:4:8"}],"id":3773,"name":"BinaryOperation","src":"4834:13:8"}],"id":3774,"name":"TupleExpression","src":"4833:15:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3775,"name":"Literal","src":"4851:1:8"}],"id":3776,"name":"BinaryOperation","src":"4833:19:8"}],"id":3777,"name":"FunctionCall","src":"4827:26:8"}],"id":3778,"name":"VariableDeclarationStatement","src":"4808:45:8"},{"attributes":{"assignments":[3780]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":3868,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3779,"name":"ElementaryTypeName","src":"4863:5:8"}],"id":3780,"name":"VariableDeclaration","src":"4863:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3781,"name":"ElementaryTypeNameExpression","src":"4885:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3782,"name":"ElementaryTypeNameExpression","src":"4891:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3783,"name":"Literal","src":"4897:1:8"}],"id":3784,"name":"FunctionCall","src":"4891:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3785,"name":"ElementaryTypeNameExpression","src":"4904:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":3786,"name":"Literal","src":"4910:1:8"}],"id":3787,"name":"FunctionCall","src":"4904:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":3788,"name":"ElementaryTypeNameExpression","src":"4915:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3755,"type":"uint16","value":"rrtype"},"id":3789,"name":"Identifier","src":"4921:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":3790,"name":"Literal","src":"4930:3:8"}],"id":3791,"name":"BinaryOperation","src":"4921:12:8"}],"id":3792,"name":"FunctionCall","src":"4915:19:8"}],"id":3793,"name":"BinaryOperation","src":"4904:30:8"}],"id":3794,"name":"TupleExpression","src":"4903:32:8"}],"id":3795,"name":"BinaryOperation","src":"4891:44:8"}],"id":3796,"name":"FunctionCall","src":"4885:51:8"}],"id":3797,"name":"VariableDeclarationStatement","src":"4863:73:8"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[3799]},"children":[{"attributes":{"constant":false,"name":"off","scope":3865,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3798,"name":"ElementaryTypeName","src":"4951:4:8"}],"id":3799,"name":"VariableDeclaration","src":"4951:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3753,"type":"uint256","value":"offset"},"id":3800,"name":"Identifier","src":"4962:6:8"}],"id":3801,"name":"VariableDeclarationStatement","src":"4951:17:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3802,"name":"Identifier","src":"4970:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3751,"type":"bytes memory","value":"self"},"id":3803,"name":"Identifier","src":"4976:4:8"}],"id":3804,"name":"MemberAccess","src":"4976:11:8"}],"id":3805,"name":"BinaryOperation","src":"4970:17:8"},{"children":[{"attributes":{"assignments":[3807]},"children":[{"attributes":{"constant":false,"name":"window","scope":3864,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3806,"name":"ElementaryTypeName","src":"5004:5:8"}],"id":3807,"name":"VariableDeclaration","src":"5004:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3751,"type":"bytes memory","value":"self"},"id":3808,"name":"Identifier","src":"5019:4:8"}],"id":3809,"name":"MemberAccess","src":"5019:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3810,"name":"Identifier","src":"5034:3:8"}],"id":3811,"name":"FunctionCall","src":"5019:19:8"}],"id":3812,"name":"VariableDeclarationStatement","src":"5004:34:8"},{"attributes":{"assignments":[3814]},"children":[{"attributes":{"constant":false,"name":"len","scope":3864,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3813,"name":"ElementaryTypeName","src":"5052:5:8"}],"id":3814,"name":"VariableDeclaration","src":"5052:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3751,"type":"bytes memory","value":"self"},"id":3815,"name":"Identifier","src":"5064:4:8"}],"id":3816,"name":"MemberAccess","src":"5064:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3817,"name":"Identifier","src":"5079:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3818,"name":"Literal","src":"5085:1:8"}],"id":3819,"name":"BinaryOperation","src":"5079:7:8"}],"id":3820,"name":"FunctionCall","src":"5064:23:8"}],"id":3821,"name":"VariableDeclarationStatement","src":"5052:35:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"uint8","value":"typeWindow"},"id":3822,"name":"Identifier","src":"5105:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3807,"type":"uint8","value":"window"},"id":3823,"name":"Identifier","src":"5118:6:8"}],"id":3824,"name":"BinaryOperation","src":"5105:19:8"},{"children":[{"attributes":{"functionReturnParameters":3759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3825,"name":"Literal","src":"5213:5:8"}],"id":3826,"name":"Return","src":"5206:12:8"}],"id":3827,"name":"Block","src":"5126:107:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"uint8","value":"typeWindow"},"id":3828,"name":"Identifier","src":"5243:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3807,"type":"uint8","value":"window"},"id":3829,"name":"Identifier","src":"5257:6:8"}],"id":3830,"name":"BinaryOperation","src":"5243:20:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"uint8","value":"len"},"id":3831,"name":"Identifier","src":"5329:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3832,"name":"Literal","src":"5335:1:8"}],"id":3833,"name":"BinaryOperation","src":"5329:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"uint8","value":"windowByte"},"id":3834,"name":"Identifier","src":"5340:10:8"}],"id":3835,"name":"BinaryOperation","src":"5329:21:8"},{"children":[{"attributes":{"functionReturnParameters":3759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3836,"name":"Literal","src":"5443:5:8"}],"id":3837,"name":"Return","src":"5436:12:8"}],"id":3838,"name":"Block","src":"5352:115:8"}],"id":3839,"name":"IfStatement","src":"5325:142:8"},{"attributes":{"functionReturnParameters":3759},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3751,"type":"bytes memory","value":"self"},"id":3840,"name":"Identifier","src":"5492:4:8"}],"id":3841,"name":"MemberAccess","src":"5492:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3842,"name":"Identifier","src":"5507:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"uint8","value":"windowByte"},"id":3843,"name":"Identifier","src":"5513:10:8"}],"id":3844,"name":"BinaryOperation","src":"5507:16:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3845,"name":"Literal","src":"5526:1:8"}],"id":3846,"name":"BinaryOperation","src":"5507:20:8"}],"id":3847,"name":"FunctionCall","src":"5492:36:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3780,"type":"uint8","value":"windowBitmask"},"id":3848,"name":"Identifier","src":"5531:13:8"}],"id":3849,"name":"BinaryOperation","src":"5492:52:8"}],"id":3850,"name":"TupleExpression","src":"5491:54:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3851,"name":"Literal","src":"5549:1:8"}],"id":3852,"name":"BinaryOperation","src":"5491:59:8"}],"id":3853,"name":"Return","src":"5484:66:8"}],"id":3854,"name":"Block","src":"5265:300:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"off"},"id":3855,"name":"Identifier","src":"5630:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"uint8","value":"len"},"id":3856,"name":"Identifier","src":"5637:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3857,"name":"Literal","src":"5643:1:8"}],"id":3858,"name":"BinaryOperation","src":"5637:7:8"}],"id":3859,"name":"Assignment","src":"5630:14:8"}],"id":3860,"name":"ExpressionStatement","src":"5630:14:8"}],"id":3861,"name":"Block","src":"5571:88:8"}],"id":3862,"name":"IfStatement","src":"5239:420:8"}],"id":3863,"name":"IfStatement","src":"5101:558:8"}],"id":3864,"name":"Block","src":"4990:679:8"}],"id":3865,"name":"ForStatement","src":"4946:723:8"},{"attributes":{"functionReturnParameters":3759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3866,"name":"Literal","src":"5686:5:8"}],"id":3867,"name":"Return","src":"5679:12:8"}],"id":3868,"name":"Block","src":"4751:947:8"}],"id":3869,"name":"FunctionDefinition","src":"4650:1048:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4024,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3870,"name":"ElementaryTypeName","src":"5726:5:8"}],"id":3871,"name":"VariableDeclaration","src":"5726:17:8"},{"attributes":{"constant":false,"name":"other","scope":4024,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3872,"name":"ElementaryTypeName","src":"5745:5:8"}],"id":3873,"name":"VariableDeclaration","src":"5745:18:8"}],"id":3874,"name":"ParameterList","src":"5725:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":4024,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":3875,"name":"ElementaryTypeName","src":"5788:3:8"}],"id":3876,"name":"VariableDeclaration","src":"5788:3:8"}],"id":3877,"name":"ParameterList","src":"5787:5:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":4335,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3878,"name":"Identifier","src":"5807:4:8"}],"id":3879,"name":"MemberAccess","src":"5807:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3880,"name":"Identifier","src":"5819:5:8"}],"id":3881,"name":"FunctionCall","src":"5807:18:8"},{"children":[{"attributes":{"functionReturnParameters":3877},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3882,"name":"Literal","src":"5848:1:8"}],"id":3883,"name":"Return","src":"5841:8:8"}],"id":3884,"name":"Block","src":"5827:33:8"}],"id":3885,"name":"IfStatement","src":"5803:57:8"},{"attributes":{"assignments":[3887],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3886,"name":"ElementaryTypeName","src":"5870:4:8"}],"id":3887,"name":"VariableDeclaration","src":"5870:8:8"}],"id":3888,"name":"VariableDeclarationStatement","src":"5870:8:8"},{"attributes":{"assignments":[3890],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3889,"name":"ElementaryTypeName","src":"5888:4:8"}],"id":3890,"name":"VariableDeclaration","src":"5888:13:8"}],"id":3891,"name":"VariableDeclarationStatement","src":"5888:13:8"},{"attributes":{"assignments":[3893],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3892,"name":"ElementaryTypeName","src":"5911:4:8"}],"id":3893,"name":"VariableDeclaration","src":"5911:12:8"}],"id":3894,"name":"VariableDeclarationStatement","src":"5911:12:8"},{"attributes":{"assignments":[3896],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3895,"name":"ElementaryTypeName","src":"5933:4:8"}],"id":3896,"name":"VariableDeclaration","src":"5933:17:8"}],"id":3897,"name":"VariableDeclarationStatement","src":"5933:17:8"},{"attributes":{"assignments":[3899]},"children":[{"attributes":{"constant":false,"name":"counts","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3898,"name":"ElementaryTypeName","src":"5960:4:8"}],"id":3899,"name":"VariableDeclaration","src":"5960:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":3900,"name":"Identifier","src":"5974:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3901,"name":"Identifier","src":"5985:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3902,"name":"Literal","src":"5991:1:8"}],"id":3903,"name":"FunctionCall","src":"5974:19:8"}],"id":3904,"name":"VariableDeclarationStatement","src":"5960:33:8"},{"attributes":{"assignments":[3906]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":4023,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3905,"name":"ElementaryTypeName","src":"6003:4:8"}],"id":3906,"name":"VariableDeclaration","src":"6003:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":3907,"name":"Identifier","src":"6022:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3908,"name":"Identifier","src":"6033:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3909,"name":"Literal","src":"6040:1:8"}],"id":3910,"name":"FunctionCall","src":"6022:20:8"}],"id":3911,"name":"VariableDeclarationStatement","src":"6003:39:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3912,"name":"Identifier","src":"6153:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"othercounts"},"id":3913,"name":"Identifier","src":"6162:11:8"}],"id":3914,"name":"BinaryOperation","src":"6153:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"uint256","value":"prevoff"},"id":3915,"name":"Identifier","src":"6189:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3916,"name":"Identifier","src":"6199:3:8"}],"id":3917,"name":"Assignment","src":"6189:13:8"}],"id":3918,"name":"ExpressionStatement","src":"6189:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3919,"name":"Identifier","src":"6216:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4043,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":3920,"name":"Identifier","src":"6222:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3921,"name":"Identifier","src":"6231:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3922,"name":"Identifier","src":"6237:3:8"}],"id":3923,"name":"FunctionCall","src":"6222:19:8"}],"id":3924,"name":"Assignment","src":"6216:25:8"}],"id":3925,"name":"ExpressionStatement","src":"6216:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3926,"name":"Identifier","src":"6255:6:8"}],"id":3927,"name":"UnaryOperation","src":"6255:8:8"}],"id":3928,"name":"ExpressionStatement","src":"6255:8:8"}],"id":3929,"name":"Block","src":"6175:99:8"}],"id":3930,"name":"WhileStatement","src":"6146:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"othercounts"},"id":3931,"name":"Identifier","src":"6291:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3932,"name":"Identifier","src":"6305:6:8"}],"id":3933,"name":"BinaryOperation","src":"6291:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"uint256","value":"otherprevoff"},"id":3934,"name":"Identifier","src":"6327:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3935,"name":"Identifier","src":"6342:8:8"}],"id":3936,"name":"Assignment","src":"6327:23:8"}],"id":3937,"name":"ExpressionStatement","src":"6327:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3938,"name":"Identifier","src":"6364:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4043,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":3939,"name":"Identifier","src":"6375:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3940,"name":"Identifier","src":"6384:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3941,"name":"Identifier","src":"6391:8:8"}],"id":3942,"name":"FunctionCall","src":"6375:25:8"}],"id":3943,"name":"Assignment","src":"6364:36:8"}],"id":3944,"name":"ExpressionStatement","src":"6364:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"othercounts"},"id":3945,"name":"Identifier","src":"6414:11:8"}],"id":3946,"name":"UnaryOperation","src":"6414:13:8"}],"id":3947,"name":"ExpressionStatement","src":"6414:13:8"}],"id":3948,"name":"Block","src":"6313:125:8"}],"id":3949,"name":"WhileStatement","src":"6284:154:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3950,"name":"Identifier","src":"6513:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3951,"name":"Literal","src":"6522:1:8"}],"id":3952,"name":"BinaryOperation","src":"6513:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":4281,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3953,"name":"Identifier","src":"6528:4:8"}],"id":3954,"name":"MemberAccess","src":"6528:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3955,"name":"Identifier","src":"6540:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3956,"name":"Identifier","src":"6545:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3957,"name":"Identifier","src":"6552:8:8"}],"id":3958,"name":"FunctionCall","src":"6528:33:8"}],"id":3959,"name":"UnaryOperation","src":"6527:34:8"}],"id":3960,"name":"BinaryOperation","src":"6513:48:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"uint256","value":"prevoff"},"id":3961,"name":"Identifier","src":"6577:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3962,"name":"Identifier","src":"6587:3:8"}],"id":3963,"name":"Assignment","src":"6577:13:8"}],"id":3964,"name":"ExpressionStatement","src":"6577:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3965,"name":"Identifier","src":"6604:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4043,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":3966,"name":"Identifier","src":"6610:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":3967,"name":"Identifier","src":"6619:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3968,"name":"Identifier","src":"6625:3:8"}],"id":3969,"name":"FunctionCall","src":"6610:19:8"}],"id":3970,"name":"Assignment","src":"6604:25:8"}],"id":3971,"name":"ExpressionStatement","src":"6604:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"uint256","value":"otherprevoff"},"id":3972,"name":"Identifier","src":"6643:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3973,"name":"Identifier","src":"6658:8:8"}],"id":3974,"name":"Assignment","src":"6643:23:8"}],"id":3975,"name":"ExpressionStatement","src":"6643:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3976,"name":"Identifier","src":"6680:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4043,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":3977,"name":"Identifier","src":"6691:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":3978,"name":"Identifier","src":"6700:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3979,"name":"Identifier","src":"6707:8:8"}],"id":3980,"name":"FunctionCall","src":"6691:25:8"}],"id":3981,"name":"Assignment","src":"6680:36:8"}],"id":3982,"name":"ExpressionStatement","src":"6680:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"uint256","value":"counts"},"id":3983,"name":"Identifier","src":"6730:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3984,"name":"Literal","src":"6740:1:8"}],"id":3985,"name":"Assignment","src":"6730:11:8"}],"id":3986,"name":"ExpressionStatement","src":"6730:11:8"}],"id":3987,"name":"Block","src":"6563:189:8"}],"id":3988,"name":"WhileStatement","src":"6506:246:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3887,"type":"uint256","value":"off"},"id":3989,"name":"Identifier","src":"6766:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3990,"name":"Literal","src":"6773:1:8"}],"id":3991,"name":"BinaryOperation","src":"6766:8:8"},{"children":[{"attributes":{"functionReturnParameters":3877},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3992,"name":"Literal","src":"6798:1:8"}],"id":3993,"name":"UnaryOperation","src":"6797:2:8"}],"id":3994,"name":"Return","src":"6790:9:8"}],"id":3995,"name":"Block","src":"6776:34:8"}],"id":3996,"name":"IfStatement","src":"6762:48:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"uint256","value":"otheroff"},"id":3997,"name":"Identifier","src":"6822:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3998,"name":"Literal","src":"6834:1:8"}],"id":3999,"name":"BinaryOperation","src":"6822:13:8"},{"children":[{"attributes":{"functionReturnParameters":3877},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4000,"name":"Literal","src":"6858:1:8"}],"id":4001,"name":"Return","src":"6851:8:8"}],"id":4002,"name":"Block","src":"6837:33:8"}],"id":4003,"name":"IfStatement","src":"6819:51:8"},{"attributes":{"functionReturnParameters":3877},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":4221,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":4004,"name":"Identifier","src":"6887:4:8"}],"id":4005,"name":"MemberAccess","src":"6887:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"uint256","value":"prevoff"},"id":4006,"name":"Identifier","src":"6900:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4007,"name":"Literal","src":"6910:1:8"}],"id":4008,"name":"BinaryOperation","src":"6900:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3871,"type":"bytes memory","value":"self"},"id":4009,"name":"Identifier","src":"6913:4:8"}],"id":4010,"name":"MemberAccess","src":"6913:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"uint256","value":"prevoff"},"id":4011,"name":"Identifier","src":"6928:7:8"}],"id":4012,"name":"FunctionCall","src":"6913:23:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":4013,"name":"Identifier","src":"6938:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"uint256","value":"otherprevoff"},"id":4014,"name":"Identifier","src":"6945:12:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4015,"name":"Literal","src":"6960:1:8"}],"id":4016,"name":"BinaryOperation","src":"6945:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3873,"type":"bytes memory","value":"other"},"id":4017,"name":"Identifier","src":"6963:5:8"}],"id":4018,"name":"MemberAccess","src":"6963:15:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3896,"type":"uint256","value":"otherprevoff"},"id":4019,"name":"Identifier","src":"6979:12:8"}],"id":4020,"name":"FunctionCall","src":"6963:29:8"}],"id":4021,"name":"FunctionCall","src":"6887:106:8"}],"id":4022,"name":"Return","src":"6880:113:8"}],"id":4023,"name":"Block","src":"5793:1207:8"}],"id":4024,"name":"FunctionDefinition","src":"5704:1296:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":4044,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":4043,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4025,"name":"ElementaryTypeName","src":"7024:5:8"}],"id":4026,"name":"VariableDeclaration","src":"7024:17:8"},{"attributes":{"constant":false,"name":"off","scope":4043,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4027,"name":"ElementaryTypeName","src":"7043:4:8"}],"id":4028,"name":"VariableDeclaration","src":"7043:8:8"}],"id":4029,"name":"ParameterList","src":"7023:29:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":4043,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4030,"name":"ElementaryTypeName","src":"7075:4:8"}],"id":4031,"name":"VariableDeclaration","src":"7075:4:8"}],"id":4032,"name":"ParameterList","src":"7074:6:8"},{"children":[{"attributes":{"functionReturnParameters":4032},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4028,"type":"uint256","value":"off"},"id":4033,"name":"Identifier","src":"7098:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4034,"name":"Literal","src":"7104:1:8"}],"id":4035,"name":"BinaryOperation","src":"7098:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":4351,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4026,"type":"bytes memory","value":"body"},"id":4036,"name":"Identifier","src":"7108:4:8"}],"id":4037,"name":"MemberAccess","src":"7108:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4028,"type":"uint256","value":"off"},"id":4038,"name":"Identifier","src":"7123:3:8"}],"id":4039,"name":"FunctionCall","src":"7108:19:8"}],"id":4040,"name":"BinaryOperation","src":"7098:29:8"}],"id":4041,"name":"Return","src":"7091:36:8"}],"id":4042,"name":"Block","src":"7081:53:8"}],"id":4043,"name":"FunctionDefinition","src":"7006:128:8"}],"id":4044,"name":"ContractDefinition","src":"150:6986:8"}],"id":4045,"name":"SourceUnit","src":"0:7137:8"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[3426]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3359,"name":"PragmaDirective","src":"0:23:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3426],"name":"ResolverBase","scope":3427},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":3426,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3360,"name":"ElementaryTypeName","src":"53:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":3361,"name":"Literal","src":"97:10:9"}],"id":3362,"name":"VariableDeclaration","src":"53:54:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3426,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3374,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3363,"name":"ElementaryTypeName","src":"141:6:9"}],"id":3364,"name":"VariableDeclaration","src":"141:18:9"}],"id":3365,"name":"ParameterList","src":"140:20:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":3374,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3366,"name":"ElementaryTypeName","src":"181:4:9"}],"id":3367,"name":"VariableDeclaration","src":"181:4:9"}],"id":3368,"name":"ParameterList","src":"180:6:9"},{"children":[{"attributes":{"functionReturnParameters":3368},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"bytes4","value":"interfaceID"},"id":3369,"name":"Identifier","src":"204:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3362,"type":"bytes4","value":"INTERFACE_META_ID"},"id":3370,"name":"Identifier","src":"219:17:9"}],"id":3371,"name":"BinaryOperation","src":"204:32:9"}],"id":3372,"name":"Return","src":"197:39:9"}],"id":3373,"name":"Block","src":"187:56:9"}],"id":3374,"name":"FunctionDefinition","src":"114:129:9"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":3426,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3381,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3375,"name":"ElementaryTypeName","src":"271:7:9"}],"id":3376,"name":"VariableDeclaration","src":"271:12:9"}],"id":3377,"name":"ParameterList","src":"270:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":3381,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3378,"name":"ElementaryTypeName","src":"307:4:9"}],"id":3379,"name":"VariableDeclaration","src":"307:4:9"}],"id":3380,"name":"ParameterList","src":"306:6:9"}],"id":3381,"name":"FunctionDefinition","src":"249:64:9"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3393,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3382,"name":"ElementaryTypeName","src":"339:7:9"}],"id":3383,"name":"VariableDeclaration","src":"339:12:9"}],"id":3384,"name":"ParameterList","src":"338:14:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":3385,"name":"Identifier","src":"363:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3381,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":3386,"name":"Identifier","src":"371:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3383,"type":"bytes32","value":"node"},"id":3387,"name":"Identifier","src":"384:4:9"}],"id":3388,"name":"FunctionCall","src":"371:18:9"}],"id":3389,"name":"FunctionCall","src":"363:27:9"}],"id":3390,"name":"ExpressionStatement","src":"363:27:9"},{"id":3391,"name":"PlaceholderStatement","src":"400:1:9"}],"id":3392,"name":"Block","src":"353:55:9"}],"id":3393,"name":"ModifierDefinition","src":"319:89:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":3426,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":3409,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3394,"name":"ElementaryTypeName","src":"438:5:9"}],"id":3395,"name":"VariableDeclaration","src":"438:14:9"}],"id":3396,"name":"ParameterList","src":"437:16:9"},{"children":[{"attributes":{"constant":false,"name":"a","scope":3409,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3397,"name":"ElementaryTypeName","src":"476:15:9"}],"id":3398,"name":"VariableDeclaration","src":"476:17:9"}],"id":3399,"name":"ParameterList","src":"475:19:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":3400,"name":"Identifier","src":"505:7:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3395,"type":"bytes memory","value":"b"},"id":3401,"name":"Identifier","src":"513:1:9"}],"id":3402,"name":"MemberAccess","src":"513:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":3403,"name":"Literal","src":"525:2:9"}],"id":3404,"name":"BinaryOperation","src":"513:14:9"}],"id":3405,"name":"FunctionCall","src":"505:23:9"}],"id":3406,"name":"ExpressionStatement","src":"505:23:9"},{"attributes":{"externalReferences":[{"a":{"declaration":3398,"isOffset":false,"isSlot":false,"src":"561:1:9","valueSize":1}},{"b":{"declaration":3395,"isOffset":false,"isSlot":false,"src":"580:1:9","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":3407,"name":"InlineAssembly","src":"538:74:9"}],"id":3408,"name":"Block","src":"495:123:9"}],"id":3409,"name":"FunctionDefinition","src":"414:204:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":3426,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3425,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3410,"name":"ElementaryTypeName","src":"648:7:9"}],"id":3411,"name":"VariableDeclaration","src":"648:9:9"}],"id":3412,"name":"ParameterList","src":"647:11:9"},{"children":[{"attributes":{"constant":false,"name":"b","scope":3425,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3413,"name":"ElementaryTypeName","src":"681:5:9"}],"id":3414,"name":"VariableDeclaration","src":"681:14:9"}],"id":3415,"name":"ParameterList","src":"680:16:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3414,"type":"bytes memory","value":"b"},"id":3416,"name":"Identifier","src":"707:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3417,"name":"ElementaryTypeName","src":"715:5:9"}],"id":3418,"name":"NewExpression","src":"711:9:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":3419,"name":"Literal","src":"721:2:9"}],"id":3420,"name":"FunctionCall","src":"711:13:9"}],"id":3421,"name":"Assignment","src":"707:17:9"}],"id":3422,"name":"ExpressionStatement","src":"707:17:9"},{"attributes":{"externalReferences":[{"b":{"declaration":3414,"isOffset":false,"isSlot":false,"src":"768:1:9","valueSize":1}},{"a":{"declaration":3411,"isOffset":false,"isSlot":false,"src":"780:1:9","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":3423,"name":"InlineAssembly","src":"734:73:9"}],"id":3424,"name":"Block","src":"697:116:9"}],"id":3425,"name":"FunctionDefinition","src":"624:189:9"}],"id":3426,"name":"ContractDefinition","src":"25:790:9"}],"id":3427,"name":"SourceUnit","src":"0:816:9"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[2206]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2072,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2207,"symbolAliases":[null],"unitAlias":""},"id":2073,"name":"ImportDirective","src":"25:29:10"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2206,3426],"name":"ABIResolver","scope":2207},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2074,"name":"UserDefinedTypeName","src":"80:12:10"}],"id":2075,"name":"InheritanceSpecifier","src":"80:12:10"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":2206,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2076,"name":"ElementaryTypeName","src":"99:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":2077,"name":"Literal","src":"142:10:10"}],"id":2078,"name":"VariableDeclaration","src":"99:53:10"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2084,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2079,"name":"ElementaryTypeName","src":"176:7:10"}],"id":2080,"name":"VariableDeclaration","src":"176:20:10"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":2084,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2081,"name":"ElementaryTypeName","src":"198:7:10"}],"id":2082,"name":"VariableDeclaration","src":"198:27:10"}],"id":2083,"name":"ParameterList","src":"175:51:10"}],"id":2084,"name":"EventDefinition","src":"159:68:10"},{"attributes":{"constant":false,"name":"abis","scope":2206,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2085,"name":"ElementaryTypeName","src":"241:7:10"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2086,"name":"ElementaryTypeName","src":"258:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":2087,"name":"ElementaryTypeName","src":"267:5:10"}],"id":2088,"name":"Mapping","src":"250:23:10"}],"id":2089,"name":"Mapping","src":"233:41:10"}],"id":2090,"name":"VariableDeclaration","src":"233:46:10"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":2206,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2128,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2091,"name":"ElementaryTypeName","src":"598:7:10"}],"id":2092,"name":"VariableDeclaration","src":"598:12:10"},{"attributes":{"constant":false,"name":"contentType","scope":2128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2093,"name":"ElementaryTypeName","src":"612:7:10"}],"id":2094,"name":"VariableDeclaration","src":"612:19:10"},{"attributes":{"constant":false,"name":"data","scope":2128,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2095,"name":"ElementaryTypeName","src":"633:5:10"}],"id":2096,"name":"VariableDeclaration","src":"633:19:10"}],"id":2097,"name":"ParameterList","src":"597:56:10"},{"attributes":{"parameters":[null]},"children":[],"id":2101,"name":"ParameterList","src":"680:0:10"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2098,"name":"Identifier","src":"663:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"bytes32","value":"node"},"id":2099,"name":"Identifier","src":"674:4:10"}],"id":2100,"name":"ModifierInvocation","src":"663:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4783,"type":"function (bool) pure","value":"require"},"id":2102,"name":"Identifier","src":"735:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"contentType"},"id":2103,"name":"Identifier","src":"745:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2104,"name":"Literal","src":"759:1:10"}],"id":2105,"name":"BinaryOperation","src":"745:15:10"}],"id":2106,"name":"TupleExpression","src":"744:17:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"contentType"},"id":2107,"name":"Identifier","src":"764:11:10"}],"id":2108,"name":"BinaryOperation","src":"744:31:10"}],"id":2109,"name":"TupleExpression","src":"743:33:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2110,"name":"Literal","src":"780:1:10"}],"id":2111,"name":"BinaryOperation","src":"743:38:10"}],"id":2112,"name":"FunctionCall","src":"735:47:10"}],"id":2113,"name":"ExpressionStatement","src":"735:47:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":2114,"name":"Identifier","src":"793:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"bytes32","value":"node"},"id":2115,"name":"Identifier","src":"798:4:10"}],"id":2117,"name":"IndexAccess","src":"793:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"contentType"},"id":2116,"name":"Identifier","src":"804:11:10"}],"id":2118,"name":"IndexAccess","src":"793:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"bytes calldata","value":"data"},"id":2119,"name":"Identifier","src":"819:4:10"}],"id":2120,"name":"Assignment","src":"793:30:10"}],"id":2121,"name":"ExpressionStatement","src":"793:30:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2084,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":2122,"name":"Identifier","src":"838:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"bytes32","value":"node"},"id":2123,"name":"Identifier","src":"849:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"contentType"},"id":2124,"name":"Identifier","src":"855:11:10"}],"id":2125,"name":"FunctionCall","src":"838:29:10"}],"id":2126,"name":"EmitStatement","src":"833:34:10"}],"id":2127,"name":"Block","src":"680:194:10"}],"id":2128,"name":"FunctionDefinition","src":"582:292:10"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":2206,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2188,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2129,"name":"ElementaryTypeName","src":"1208:7:10"}],"id":2130,"name":"VariableDeclaration","src":"1208:12:10"},{"attributes":{"constant":false,"name":"contentTypes","scope":2188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2131,"name":"ElementaryTypeName","src":"1222:7:10"}],"id":2132,"name":"VariableDeclaration","src":"1222:20:10"}],"id":2133,"name":"ParameterList","src":"1207:36:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":2188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2134,"name":"ElementaryTypeName","src":"1267:7:10"}],"id":2135,"name":"VariableDeclaration","src":"1267:7:10"},{"attributes":{"constant":false,"name":"","scope":2188,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2136,"name":"ElementaryTypeName","src":"1276:5:10"}],"id":2137,"name":"VariableDeclaration","src":"1276:12:10"}],"id":2138,"name":"ParameterList","src":"1266:23:10"},{"children":[{"attributes":{"assignments":[2142]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":2187,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2139,"name":"ElementaryTypeName","src":"1308:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":2140,"name":"ElementaryTypeName","src":"1317:5:10"}],"id":2141,"name":"Mapping","src":"1300:23:10"}],"id":2142,"name":"VariableDeclaration","src":"1300:38:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":2143,"name":"Identifier","src":"1341:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2130,"type":"bytes32","value":"node"},"id":2144,"name":"Identifier","src":"1346:4:10"}],"id":2145,"name":"IndexAccess","src":"1341:10:10"}],"id":2146,"name":"VariableDeclarationStatement","src":"1300:51:10"},{"children":[{"attributes":{"assignments":[2148]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":2180,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2147,"name":"ElementaryTypeName","src":"1367:7:10"}],"id":2148,"name":"VariableDeclaration","src":"1367:19:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2149,"name":"Literal","src":"1389:1:10"}],"id":2150,"name":"VariableDeclarationStatement","src":"1367:23:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2151,"name":"Identifier","src":"1392:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2132,"type":"uint256","value":"contentTypes"},"id":2152,"name":"Identifier","src":"1407:12:10"}],"id":2153,"name":"BinaryOperation","src":"1392:27:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2154,"name":"Identifier","src":"1421:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2155,"name":"Literal","src":"1437:1:10"}],"id":2156,"name":"Assignment","src":"1421:17:10"}],"id":2157,"name":"ExpressionStatement","src":"1421:17:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2158,"name":"Identifier","src":"1459:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2132,"type":"uint256","value":"contentTypes"},"id":2159,"name":"Identifier","src":"1473:12:10"}],"id":2160,"name":"BinaryOperation","src":"1459:26:10"}],"id":2161,"name":"TupleExpression","src":"1458:28:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2162,"name":"Literal","src":"1490:1:10"}],"id":2163,"name":"BinaryOperation","src":"1458:33:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":2164,"name":"Identifier","src":"1495:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2165,"name":"Identifier","src":"1502:11:10"}],"id":2166,"name":"IndexAccess","src":"1495:19:10"}],"id":2167,"name":"MemberAccess","src":"1495:26:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2168,"name":"Literal","src":"1524:1:10"}],"id":2169,"name":"BinaryOperation","src":"1495:30:10"}],"id":2170,"name":"BinaryOperation","src":"1458:67:10"},{"children":[{"attributes":{"functionReturnParameters":2138},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2171,"name":"Identifier","src":"1553:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2142,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":2172,"name":"Identifier","src":"1566:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2148,"type":"uint256","value":"contentType"},"id":2173,"name":"Identifier","src":"1573:11:10"}],"id":2174,"name":"IndexAccess","src":"1566:19:10"}],"id":2175,"name":"TupleExpression","src":"1552:34:10"}],"id":2176,"name":"Return","src":"1545:41:10"}],"id":2177,"name":"Block","src":"1527:74:10"}],"id":2178,"name":"IfStatement","src":"1454:147:10"}],"id":2179,"name":"Block","src":"1440:171:10"}],"id":2180,"name":"ForStatement","src":"1362:249:10"},{"attributes":{"functionReturnParameters":2138},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2181,"name":"Literal","src":"1629:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2182,"name":"ElementaryTypeNameExpression","src":"1632:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":2183,"name":"Literal","src":"1638:2:10"}],"id":2184,"name":"FunctionCall","src":"1632:9:10"}],"id":2185,"name":"TupleExpression","src":"1628:14:10"}],"id":2186,"name":"Return","src":"1621:21:10"}],"id":2187,"name":"Block","src":"1290:359:10"}],"id":2188,"name":"FunctionDefinition","src":"1195:454:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2206,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2205,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2189,"name":"ElementaryTypeName","src":"1682:6:10"}],"id":2190,"name":"VariableDeclaration","src":"1682:18:10"}],"id":2191,"name":"ParameterList","src":"1681:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":2205,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2192,"name":"ElementaryTypeName","src":"1722:4:10"}],"id":2193,"name":"VariableDeclaration","src":"1722:4:10"}],"id":2194,"name":"ParameterList","src":"1721:6:10"},{"children":[{"attributes":{"functionReturnParameters":2194},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2190,"type":"bytes4","value":"interfaceID"},"id":2195,"name":"Identifier","src":"1745:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2078,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":2196,"name":"Identifier","src":"1760:16:10"}],"id":2197,"name":"BinaryOperation","src":"1745:31:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4817,"type":"contract super ABIResolver","value":"super"},"id":2198,"name":"Identifier","src":"1780:5:10"}],"id":2199,"name":"MemberAccess","src":"1780:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2190,"type":"bytes4","value":"interfaceID"},"id":2200,"name":"Identifier","src":"1804:11:10"}],"id":2201,"name":"FunctionCall","src":"1780:36:10"}],"id":2202,"name":"BinaryOperation","src":"1745:71:10"}],"id":2203,"name":"Return","src":"1738:78:10"}],"id":2204,"name":"Block","src":"1728:95:10"}],"id":2205,"name":"FunctionDefinition","src":"1655:168:10"}],"id":2206,"name":"ContractDefinition","src":"56:1769:10"}],"id":2207,"name":"SourceUnit","src":"0:1826:10"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[2365]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2208,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2366,"symbolAliases":[null],"unitAlias":""},"id":2209,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2365,3426],"name":"AddrResolver","scope":2366},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2210,"name":"UserDefinedTypeName","src":"81:12:11"}],"id":2211,"name":"InheritanceSpecifier","src":"81:12:11"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":2365,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2212,"name":"ElementaryTypeName","src":"100:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":2213,"name":"Literal","src":"144:10:11"}],"id":2214,"name":"VariableDeclaration","src":"100:54:11"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":2365,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2215,"name":"ElementaryTypeName","src":"160:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":2216,"name":"Literal","src":"207:10:11"}],"id":2217,"name":"VariableDeclaration","src":"160:57:11"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":2365,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2218,"name":"ElementaryTypeName","src":"223:4:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2219,"name":"Literal","src":"261:2:11"}],"id":2220,"name":"VariableDeclaration","src":"223:40:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2226,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2221,"name":"ElementaryTypeName","src":"288:7:11"}],"id":2222,"name":"VariableDeclaration","src":"288:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":2226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2223,"name":"ElementaryTypeName","src":"310:7:11"}],"id":2224,"name":"VariableDeclaration","src":"310:9:11"}],"id":2225,"name":"ParameterList","src":"287:33:11"}],"id":2226,"name":"EventDefinition","src":"270:51:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2234,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2227,"name":"ElementaryTypeName","src":"347:7:11"}],"id":2228,"name":"VariableDeclaration","src":"347:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":2234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2229,"name":"ElementaryTypeName","src":"369:4:11"}],"id":2230,"name":"VariableDeclaration","src":"369:13:11"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":2234,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2231,"name":"ElementaryTypeName","src":"384:5:11"}],"id":2232,"name":"VariableDeclaration","src":"384:16:11"}],"id":2233,"name":"ParameterList","src":"346:55:11"}],"id":2234,"name":"EventDefinition","src":"326:76:11"},{"attributes":{"constant":false,"name":"_addresses","scope":2365,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2235,"name":"ElementaryTypeName","src":"416:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2236,"name":"ElementaryTypeName","src":"433:4:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":2237,"name":"ElementaryTypeName","src":"439:5:11"}],"id":2238,"name":"Mapping","src":"425:20:11"}],"id":2239,"name":"Mapping","src":"408:38:11"}],"id":2240,"name":"VariableDeclaration","src":"408:49:11"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":2365,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2259,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2241,"name":"ElementaryTypeName","src":"698:7:11"}],"id":2242,"name":"VariableDeclaration","src":"698:12:11"},{"attributes":{"constant":false,"name":"a","scope":2259,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2243,"name":"ElementaryTypeName","src":"712:7:11"}],"id":2244,"name":"VariableDeclaration","src":"712:9:11"}],"id":2245,"name":"ParameterList","src":"697:25:11"},{"attributes":{"parameters":[null]},"children":[],"id":2249,"name":"ParameterList","src":"749:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2246,"name":"Identifier","src":"732:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2242,"type":"bytes32","value":"node"},"id":2247,"name":"Identifier","src":"743:4:11"}],"id":2248,"name":"ModifierInvocation","src":"732:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2327,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":2250,"name":"Identifier","src":"759:15:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2242,"type":"bytes32","value":"node"},"id":2251,"name":"Identifier","src":"775:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2220,"type":"uint256","value":"COIN_TYPE_ETH"},"id":2252,"name":"Identifier","src":"781:13:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3425,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":2253,"name":"Identifier","src":"796:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2244,"type":"address","value":"a"},"id":2254,"name":"Identifier","src":"811:1:11"}],"id":2255,"name":"FunctionCall","src":"796:17:11"}],"id":2256,"name":"FunctionCall","src":"759:55:11"}],"id":2257,"name":"ExpressionStatement","src":"759:55:11"}],"id":2258,"name":"Block","src":"749:72:11"}],"id":2259,"name":"FunctionDefinition","src":"681:140:11"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":2365,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2288,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2260,"name":"ElementaryTypeName","src":"994:7:11"}],"id":2261,"name":"VariableDeclaration","src":"994:12:11"}],"id":2262,"name":"ParameterList","src":"993:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":2288,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2263,"name":"ElementaryTypeName","src":"1029:15:11"}],"id":2264,"name":"VariableDeclaration","src":"1029:15:11"}],"id":2265,"name":"ParameterList","src":"1028:17:11"},{"children":[{"attributes":{"assignments":[2267]},"children":[{"attributes":{"constant":false,"name":"a","scope":2287,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2266,"name":"ElementaryTypeName","src":"1056:5:11"}],"id":2267,"name":"VariableDeclaration","src":"1056:14:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2288,2343],"referencedDeclaration":2343,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":2268,"name":"Identifier","src":"1073:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2261,"type":"bytes32","value":"node"},"id":2269,"name":"Identifier","src":"1078:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2220,"type":"uint256","value":"COIN_TYPE_ETH"},"id":2270,"name":"Identifier","src":"1084:13:11"}],"id":2271,"name":"FunctionCall","src":"1073:25:11"}],"id":2272,"name":"VariableDeclarationStatement","src":"1056:42:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2267,"type":"bytes memory","value":"a"},"id":2273,"name":"Identifier","src":"1111:1:11"}],"id":2274,"name":"MemberAccess","src":"1111:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2275,"name":"Literal","src":"1123:1:11"}],"id":2276,"name":"BinaryOperation","src":"1111:13:11"},{"children":[{"attributes":{"functionReturnParameters":2265},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2277,"name":"ElementaryTypeNameExpression","src":"1147:7:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2278,"name":"Literal","src":"1155:1:11"}],"id":2279,"name":"FunctionCall","src":"1147:10:11"}],"id":2280,"name":"Return","src":"1140:17:11"}],"id":2281,"name":"Block","src":"1126:42:11"}],"id":2282,"name":"IfStatement","src":"1108:60:11"},{"attributes":{"functionReturnParameters":2265},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3409,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":2283,"name":"Identifier","src":"1184:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2267,"type":"bytes memory","value":"a"},"id":2284,"name":"Identifier","src":"1199:1:11"}],"id":2285,"name":"FunctionCall","src":"1184:17:11"}],"id":2286,"name":"Return","src":"1177:24:11"}],"id":2287,"name":"Block","src":"1046:162:11"}],"id":2288,"name":"FunctionDefinition","src":"980:228:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":2365,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2327,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2289,"name":"ElementaryTypeName","src":"1239:7:11"}],"id":2290,"name":"VariableDeclaration","src":"1239:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":2327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2291,"name":"ElementaryTypeName","src":"1253:4:11"}],"id":2292,"name":"VariableDeclaration","src":"1253:13:11"},{"attributes":{"constant":false,"name":"a","scope":2327,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2293,"name":"ElementaryTypeName","src":"1268:5:11"}],"id":2294,"name":"VariableDeclaration","src":"1268:14:11"}],"id":2295,"name":"ParameterList","src":"1238:45:11"},{"attributes":{"parameters":[null]},"children":[],"id":2299,"name":"ParameterList","src":"1308:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2296,"name":"Identifier","src":"1291:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"bytes32","value":"node"},"id":2297,"name":"Identifier","src":"1302:4:11"}],"id":2298,"name":"ModifierInvocation","src":"1291:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":2300,"name":"Identifier","src":"1323:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"bytes32","value":"node"},"id":2301,"name":"Identifier","src":"1338:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"coinType"},"id":2302,"name":"Identifier","src":"1344:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"a"},"id":2303,"name":"Identifier","src":"1354:1:11"}],"id":2304,"name":"FunctionCall","src":"1323:33:11"}],"id":2305,"name":"EmitStatement","src":"1318:38:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"coinType"},"id":2306,"name":"Identifier","src":"1369:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2220,"type":"uint256","value":"COIN_TYPE_ETH"},"id":2307,"name":"Identifier","src":"1381:13:11"}],"id":2308,"name":"BinaryOperation","src":"1369:25:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2226,"type":"function (bytes32,address)","value":"AddrChanged"},"id":2309,"name":"Identifier","src":"1415:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"bytes32","value":"node"},"id":2310,"name":"Identifier","src":"1427:4:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3409,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":2311,"name":"Identifier","src":"1433:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"a"},"id":2312,"name":"Identifier","src":"1448:1:11"}],"id":2313,"name":"FunctionCall","src":"1433:17:11"}],"id":2314,"name":"FunctionCall","src":"1415:36:11"}],"id":2315,"name":"EmitStatement","src":"1410:41:11"}],"id":2316,"name":"Block","src":"1396:66:11"}],"id":2317,"name":"IfStatement","src":"1366:96:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2240,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":2318,"name":"Identifier","src":"1471:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"bytes32","value":"node"},"id":2319,"name":"Identifier","src":"1482:4:11"}],"id":2321,"name":"IndexAccess","src":"1471:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"coinType"},"id":2320,"name":"Identifier","src":"1488:8:11"}],"id":2322,"name":"IndexAccess","src":"1471:26:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"a"},"id":2323,"name":"Identifier","src":"1500:1:11"}],"id":2324,"name":"Assignment","src":"1471:30:11"}],"id":2325,"name":"ExpressionStatement","src":"1471:30:11"}],"id":2326,"name":"Block","src":"1308:200:11"}],"id":2327,"name":"FunctionDefinition","src":"1214:294:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":2365,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2328,"name":"ElementaryTypeName","src":"1528:7:11"}],"id":2329,"name":"VariableDeclaration","src":"1528:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":2343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2330,"name":"ElementaryTypeName","src":"1542:4:11"}],"id":2331,"name":"VariableDeclaration","src":"1542:13:11"}],"id":2332,"name":"ParameterList","src":"1527:29:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":2343,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2333,"name":"ElementaryTypeName","src":"1577:5:11"}],"id":2334,"name":"VariableDeclaration","src":"1577:12:11"}],"id":2335,"name":"ParameterList","src":"1576:14:11"},{"children":[{"attributes":{"functionReturnParameters":2335},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2240,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":2336,"name":"Identifier","src":"1608:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2329,"type":"bytes32","value":"node"},"id":2337,"name":"Identifier","src":"1619:4:11"}],"id":2338,"name":"IndexAccess","src":"1608:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2331,"type":"uint256","value":"coinType"},"id":2339,"name":"Identifier","src":"1625:8:11"}],"id":2340,"name":"IndexAccess","src":"1608:26:11"}],"id":2341,"name":"Return","src":"1601:33:11"}],"id":2342,"name":"Block","src":"1591:50:11"}],"id":2343,"name":"FunctionDefinition","src":"1514:127:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2365,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2364,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2344,"name":"ElementaryTypeName","src":"1674:6:11"}],"id":2345,"name":"VariableDeclaration","src":"1674:18:11"}],"id":2346,"name":"ParameterList","src":"1673:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":2364,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2347,"name":"ElementaryTypeName","src":"1714:4:11"}],"id":2348,"name":"VariableDeclaration","src":"1714:4:11"}],"id":2349,"name":"ParameterList","src":"1713:6:11"},{"children":[{"attributes":{"functionReturnParameters":2349},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"bytes4","value":"interfaceID"},"id":2350,"name":"Identifier","src":"1737:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2214,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":2351,"name":"Identifier","src":"1752:17:11"}],"id":2352,"name":"BinaryOperation","src":"1737:32:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"bytes4","value":"interfaceID"},"id":2353,"name":"Identifier","src":"1773:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":2354,"name":"Identifier","src":"1788:20:11"}],"id":2355,"name":"BinaryOperation","src":"1773:35:11"}],"id":2356,"name":"BinaryOperation","src":"1737:71:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4819,"type":"contract super AddrResolver","value":"super"},"id":2357,"name":"Identifier","src":"1812:5:11"}],"id":2358,"name":"MemberAccess","src":"1812:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2345,"type":"bytes4","value":"interfaceID"},"id":2359,"name":"Identifier","src":"1836:11:11"}],"id":2360,"name":"FunctionCall","src":"1812:36:11"}],"id":2361,"name":"BinaryOperation","src":"1737:111:11"}],"id":2362,"name":"Return","src":"1730:118:11"}],"id":2363,"name":"Block","src":"1720:135:11"}],"id":2364,"name":"FunctionDefinition","src":"1647:208:11"}],"id":2365,"name":"ContractDefinition","src":"56:1801:11"}],"id":2366,"name":"SourceUnit","src":"0:1857:11"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[2435]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2367,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2436,"symbolAliases":[null],"unitAlias":""},"id":2368,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2435,3426],"name":"ContentHashResolver","scope":2436},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2369,"name":"UserDefinedTypeName","src":"88:12:12"}],"id":2370,"name":"InheritanceSpecifier","src":"88:12:12"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":2435,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2371,"name":"ElementaryTypeName","src":"107:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":2372,"name":"Literal","src":"159:10:12"}],"id":2373,"name":"VariableDeclaration","src":"107:62:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2379,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2374,"name":"ElementaryTypeName","src":"201:7:12"}],"id":2375,"name":"VariableDeclaration","src":"201:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":2379,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2376,"name":"ElementaryTypeName","src":"223:5:12"}],"id":2377,"name":"VariableDeclaration","src":"223:10:12"}],"id":2378,"name":"ParameterList","src":"200:34:12"}],"id":2379,"name":"EventDefinition","src":"176:59:12"},{"attributes":{"constant":false,"name":"hashes","scope":2435,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2380,"name":"ElementaryTypeName","src":"249:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":2381,"name":"ElementaryTypeName","src":"258:5:12"}],"id":2382,"name":"Mapping","src":"241:23:12"}],"id":2383,"name":"VariableDeclaration","src":"241:30:12"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":2435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2405,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2384,"name":"ElementaryTypeName","src":"529:7:12"}],"id":2385,"name":"VariableDeclaration","src":"529:12:12"},{"attributes":{"constant":false,"name":"hash","scope":2405,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2386,"name":"ElementaryTypeName","src":"543:5:12"}],"id":2387,"name":"VariableDeclaration","src":"543:19:12"}],"id":2388,"name":"ParameterList","src":"528:35:12"},{"attributes":{"parameters":[null]},"children":[],"id":2392,"name":"ParameterList","src":"590:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2389,"name":"Identifier","src":"573:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2385,"type":"bytes32","value":"node"},"id":2390,"name":"Identifier","src":"584:4:12"}],"id":2391,"name":"ModifierInvocation","src":"573:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2383,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":2393,"name":"Identifier","src":"600:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2385,"type":"bytes32","value":"node"},"id":2394,"name":"Identifier","src":"607:4:12"}],"id":2395,"name":"IndexAccess","src":"600:12:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes calldata","value":"hash"},"id":2396,"name":"Identifier","src":"615:4:12"}],"id":2397,"name":"Assignment","src":"600:19:12"}],"id":2398,"name":"ExpressionStatement","src":"600:19:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2379,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":2399,"name":"Identifier","src":"634:18:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2385,"type":"bytes32","value":"node"},"id":2400,"name":"Identifier","src":"653:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes calldata","value":"hash"},"id":2401,"name":"Identifier","src":"659:4:12"}],"id":2402,"name":"FunctionCall","src":"634:30:12"}],"id":2403,"name":"EmitStatement","src":"629:35:12"}],"id":2404,"name":"Block","src":"590:81:12"}],"id":2405,"name":"FunctionDefinition","src":"505:166:12"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":2435,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2417,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2406,"name":"ElementaryTypeName","src":"859:7:12"}],"id":2407,"name":"VariableDeclaration","src":"859:12:12"}],"id":2408,"name":"ParameterList","src":"858:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":2417,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2409,"name":"ElementaryTypeName","src":"896:5:12"}],"id":2410,"name":"VariableDeclaration","src":"896:12:12"}],"id":2411,"name":"ParameterList","src":"895:14:12"},{"children":[{"attributes":{"functionReturnParameters":2411},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2383,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":2412,"name":"Identifier","src":"927:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2407,"type":"bytes32","value":"node"},"id":2413,"name":"Identifier","src":"934:4:12"}],"id":2414,"name":"IndexAccess","src":"927:12:12"}],"id":2415,"name":"Return","src":"920:19:12"}],"id":2416,"name":"Block","src":"910:36:12"}],"id":2417,"name":"FunctionDefinition","src":"838:108:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2435,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2434,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2418,"name":"ElementaryTypeName","src":"979:6:12"}],"id":2419,"name":"VariableDeclaration","src":"979:18:12"}],"id":2420,"name":"ParameterList","src":"978:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":2434,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2421,"name":"ElementaryTypeName","src":"1019:4:12"}],"id":2422,"name":"VariableDeclaration","src":"1019:4:12"}],"id":2423,"name":"ParameterList","src":"1018:6:12"},{"children":[{"attributes":{"functionReturnParameters":2423},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2419,"type":"bytes4","value":"interfaceID"},"id":2424,"name":"Identifier","src":"1042:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2373,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":2425,"name":"Identifier","src":"1057:25:12"}],"id":2426,"name":"BinaryOperation","src":"1042:40:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4821,"type":"contract super ContentHashResolver","value":"super"},"id":2427,"name":"Identifier","src":"1086:5:12"}],"id":2428,"name":"MemberAccess","src":"1086:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2419,"type":"bytes4","value":"interfaceID"},"id":2429,"name":"Identifier","src":"1110:11:12"}],"id":2430,"name":"FunctionCall","src":"1086:36:12"}],"id":2431,"name":"BinaryOperation","src":"1042:80:12"}],"id":2432,"name":"Return","src":"1035:87:12"}],"id":2433,"name":"Block","src":"1025:104:12"}],"id":2434,"name":"FunctionDefinition","src":"952:177:12"}],"id":2435,"name":"ContractDefinition","src":"56:1075:12"}],"id":2436,"name":"SourceUnit","src":"0:1132:12"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[2926]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2437,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2927,"symbolAliases":[null],"unitAlias":""},"id":2438,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"SourceUnit":4045,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":2927,"symbolAliases":[null],"unitAlias":""},"id":2439,"name":"ImportDirective","src":"55:24:13"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2926,3426],"name":"DNSResolver","scope":2927},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2440,"name":"UserDefinedTypeName","src":"105:12:13"}],"id":2441,"name":"InheritanceSpecifier","src":"105:12:13"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":4044,"type":"library RRUtils"},"id":2442,"name":"UserDefinedTypeName","src":"130:7:13"}],"id":2443,"name":"UsingForDirective","src":"124:20:13"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":4765,"type":"library ENSBytesUtils"},"id":2444,"name":"UserDefinedTypeName","src":"155:13:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2445,"name":"ElementaryTypeName","src":"173:5:13"}],"id":2446,"name":"UsingForDirective","src":"149:30:13"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":2926,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2447,"name":"ElementaryTypeName","src":"185:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":2448,"name":"Literal","src":"235:10:13"}],"id":2449,"name":"VariableDeclaration","src":"185:60:13"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":2926,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2450,"name":"ElementaryTypeName","src":"251:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":2451,"name":"Literal","src":"299:10:13"}],"id":2452,"name":"VariableDeclaration","src":"251:58:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2462,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2453,"name":"ElementaryTypeName","src":"430:7:13"}],"id":2454,"name":"VariableDeclaration","src":"430:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2462,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2455,"name":"ElementaryTypeName","src":"452:5:13"}],"id":2456,"name":"VariableDeclaration","src":"452:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":2462,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2457,"name":"ElementaryTypeName","src":"464:6:13"}],"id":2458,"name":"VariableDeclaration","src":"464:15:13"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":2462,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2459,"name":"ElementaryTypeName","src":"481:5:13"}],"id":2460,"name":"VariableDeclaration","src":"481:12:13"}],"id":2461,"name":"ParameterList","src":"429:65:13"}],"id":2462,"name":"EventDefinition","src":"407:88:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2470,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2463,"name":"ElementaryTypeName","src":"614:7:13"}],"id":2464,"name":"VariableDeclaration","src":"614:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2470,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2465,"name":"ElementaryTypeName","src":"636:5:13"}],"id":2466,"name":"VariableDeclaration","src":"636:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":2470,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2467,"name":"ElementaryTypeName","src":"648:6:13"}],"id":2468,"name":"VariableDeclaration","src":"648:15:13"}],"id":2469,"name":"ParameterList","src":"613:51:13"}],"id":2470,"name":"EventDefinition","src":"591:74:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2474,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2471,"name":"ElementaryTypeName","src":"777:7:13"}],"id":2472,"name":"VariableDeclaration","src":"777:20:13"}],"id":2473,"name":"ParameterList","src":"776:22:13"}],"id":2474,"name":"EventDefinition","src":"756:43:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2482,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2475,"name":"ElementaryTypeName","src":"913:7:13"}],"id":2476,"name":"VariableDeclaration","src":"913:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":2482,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2477,"name":"ElementaryTypeName","src":"935:5:13"}],"id":2478,"name":"VariableDeclaration","src":"935:18:13"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":2482,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2479,"name":"ElementaryTypeName","src":"955:5:13"}],"id":2480,"name":"VariableDeclaration","src":"955:14:13"}],"id":2481,"name":"ParameterList","src":"912:58:13"}],"id":2482,"name":"EventDefinition","src":"888:83:13"},{"attributes":{"constant":false,"name":"zonehashes","scope":2926,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2483,"name":"ElementaryTypeName","src":"1181:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2484,"name":"ElementaryTypeName","src":"1190:5:13"}],"id":2485,"name":"Mapping","src":"1173:23:13"}],"id":2486,"name":"VariableDeclaration","src":"1173:42:13"},{"attributes":{"constant":false,"name":"versions","scope":2926,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2487,"name":"ElementaryTypeName","src":"1433:7:13"},{"attributes":{"name":"uint256","type":"uint256"},"id":2488,"name":"ElementaryTypeName","src":"1442:7:13"}],"id":2489,"name":"Mapping","src":"1425:25:13"}],"id":2490,"name":"VariableDeclaration","src":"1425:42:13"},{"attributes":{"constant":false,"name":"records","scope":2926,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2491,"name":"ElementaryTypeName","src":"1589:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2492,"name":"ElementaryTypeName","src":"1606:7:13"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2493,"name":"ElementaryTypeName","src":"1623:7:13"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2494,"name":"ElementaryTypeName","src":"1640:6:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2495,"name":"ElementaryTypeName","src":"1648:5:13"}],"id":2496,"name":"Mapping","src":"1632:22:13"}],"id":2497,"name":"Mapping","src":"1615:40:13"}],"id":2498,"name":"Mapping","src":"1598:58:13"}],"id":2499,"name":"Mapping","src":"1581:76:13"}],"id":2500,"name":"VariableDeclaration","src":"1581:92:13"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":2926,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2501,"name":"ElementaryTypeName","src":"1853:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2502,"name":"ElementaryTypeName","src":"1870:7:13"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2503,"name":"ElementaryTypeName","src":"1887:7:13"},{"attributes":{"name":"uint16","type":"uint16"},"id":2504,"name":"ElementaryTypeName","src":"1896:6:13"}],"id":2505,"name":"Mapping","src":"1879:24:13"}],"id":2506,"name":"Mapping","src":"1862:42:13"}],"id":2507,"name":"Mapping","src":"1845:60:13"}],"id":2508,"name":"VariableDeclaration","src":"1845:85:13"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":2926,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2673,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2509,"name":"ElementaryTypeName","src":"2877:7:13"}],"id":2510,"name":"VariableDeclaration","src":"2877:12:13"},{"attributes":{"constant":false,"name":"data","scope":2673,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2511,"name":"ElementaryTypeName","src":"2891:5:13"}],"id":2512,"name":"VariableDeclaration","src":"2891:19:13"}],"id":2513,"name":"ParameterList","src":"2876:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":2517,"name":"ParameterList","src":"2938:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2514,"name":"Identifier","src":"2921:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2510,"type":"bytes32","value":"node"},"id":2515,"name":"Identifier","src":"2932:4:13"}],"id":2516,"name":"ModifierInvocation","src":"2921:16:13"},{"children":[{"attributes":{"assignments":[2519]},"children":[{"attributes":{"constant":false,"name":"resource","scope":2672,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2518,"name":"ElementaryTypeName","src":"2948:6:13"}],"id":2519,"name":"VariableDeclaration","src":"2948:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2520,"name":"Literal","src":"2966:1:13"}],"id":2521,"name":"VariableDeclarationStatement","src":"2948:19:13"},{"attributes":{"assignments":[2523]},"children":[{"attributes":{"constant":false,"name":"offset","scope":2672,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2522,"name":"ElementaryTypeName","src":"2977:7:13"}],"id":2523,"name":"VariableDeclaration","src":"2977:14:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2524,"name":"Literal","src":"2994:1:13"}],"id":2525,"name":"VariableDeclarationStatement","src":"2977:18:13"},{"attributes":{"assignments":[2527],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":2672,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2526,"name":"ElementaryTypeName","src":"3005:5:13"}],"id":2527,"name":"VariableDeclaration","src":"3005:17:13"}],"id":2528,"name":"VariableDeclarationStatement","src":"3005:17:13"},{"attributes":{"assignments":[2530],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":2672,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2529,"name":"ElementaryTypeName","src":"3032:5:13"}],"id":2530,"name":"VariableDeclaration","src":"3032:18:13"}],"id":2531,"name":"VariableDeclarationStatement","src":"3032:18:13"},{"attributes":{"assignments":[2533],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":2672,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2532,"name":"ElementaryTypeName","src":"3060:7:13"}],"id":2533,"name":"VariableDeclaration","src":"3060:16:13"}],"id":2534,"name":"VariableDeclarationStatement","src":"3060:16:13"},{"children":[{"attributes":{"assignments":[2538]},"children":[{"attributes":{"constant":false,"name":"iter","scope":2649,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":3565,"type":"struct RRUtils.RRIterator"},"id":2537,"name":"UserDefinedTypeName","src":"3152:18:13"}],"id":2538,"name":"VariableDeclaration","src":"3152:30:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":3591,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2512,"type":"bytes calldata","value":"data"},"id":2539,"name":"Identifier","src":"3185:4:13"}],"id":2540,"name":"MemberAccess","src":"3185:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2541,"name":"Literal","src":"3201:1:13"}],"id":2542,"name":"FunctionCall","src":"3185:18:13"}],"id":2543,"name":"VariableDeclarationStatement","src":"3152:51:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":3606,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2544,"name":"Identifier","src":"3206:4:13"}],"id":2545,"name":"MemberAccess","src":"3206:9:13"}],"id":2546,"name":"FunctionCall","src":"3206:11:13"}],"id":2547,"name":"UnaryOperation","src":"3205:12:13"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":3708,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2548,"name":"Identifier","src":"3219:4:13"}],"id":2549,"name":"MemberAccess","src":"3219:9:13"}],"id":2550,"name":"FunctionCall","src":"3219:11:13"}],"id":2551,"name":"ExpressionStatement","src":"3219:11:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2552,"name":"Identifier","src":"3250:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2553,"name":"Literal","src":"3262:1:13"}],"id":2554,"name":"BinaryOperation","src":"3250:13:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2555,"name":"Identifier","src":"3283:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":3556,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2556,"name":"Identifier","src":"3294:4:13"}],"id":2557,"name":"MemberAccess","src":"3294:12:13"}],"id":2558,"name":"Assignment","src":"3283:23:13"}],"id":2559,"name":"ExpressionStatement","src":"3283:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2560,"name":"Identifier","src":"3324:4:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":3729,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2561,"name":"Identifier","src":"3331:4:13"}],"id":2562,"name":"MemberAccess","src":"3331:9:13"}],"id":2563,"name":"FunctionCall","src":"3331:11:13"}],"id":2564,"name":"Assignment","src":"3324:18:13"}],"id":2565,"name":"ExpressionStatement","src":"3324:18:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2533,"type":"bytes32","value":"nameHash"},"id":2566,"name":"Identifier","src":"3360:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2567,"name":"Identifier","src":"3371:9:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":2568,"name":"Identifier","src":"3381:3:13"}],"id":2569,"name":"MemberAccess","src":"3381:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2570,"name":"Identifier","src":"3398:4:13"}],"id":2571,"name":"FunctionCall","src":"3381:22:13"}],"id":2572,"name":"FunctionCall","src":"3371:33:13"}],"id":2573,"name":"Assignment","src":"3360:44:13"}],"id":2574,"name":"ExpressionStatement","src":"3360:44:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"bytes memory","value":"value"},"id":2575,"name":"Identifier","src":"3422:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2576,"name":"ElementaryTypeNameExpression","src":"3430:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":3749,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2577,"name":"Identifier","src":"3436:4:13"}],"id":2578,"name":"MemberAccess","src":"3436:10:13"}],"id":2579,"name":"FunctionCall","src":"3436:12:13"}],"id":2580,"name":"FunctionCall","src":"3430:19:13"}],"id":2581,"name":"Assignment","src":"3422:27:13"}],"id":2582,"name":"ExpressionStatement","src":"3422:27:13"}],"id":2583,"name":"Block","src":"3265:199:13"},{"children":[{"attributes":{"assignments":[2585]},"children":[{"attributes":{"constant":false,"name":"newName","scope":2646,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2584,"name":"ElementaryTypeName","src":"3488:5:13"}],"id":2585,"name":"VariableDeclaration","src":"3488:20:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":3729,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2586,"name":"Identifier","src":"3511:4:13"}],"id":2587,"name":"MemberAccess","src":"3511:9:13"}],"id":2588,"name":"FunctionCall","src":"3511:11:13"}],"id":2589,"name":"VariableDeclarationStatement","src":"3488:34:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2590,"name":"Identifier","src":"3544:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":3556,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2591,"name":"Identifier","src":"3556:4:13"}],"id":2592,"name":"MemberAccess","src":"3556:12:13"}],"id":2593,"name":"BinaryOperation","src":"3544:24:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":4335,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2594,"name":"Identifier","src":"3573:4:13"}],"id":2595,"name":"MemberAccess","src":"3573:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"bytes memory","value":"newName"},"id":2596,"name":"Identifier","src":"3585:7:13"}],"id":2597,"name":"FunctionCall","src":"3573:20:13"}],"id":2598,"name":"UnaryOperation","src":"3572:21:13"}],"id":2599,"name":"BinaryOperation","src":"3544:49:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2925,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":2600,"name":"Identifier","src":"3617:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2510,"type":"bytes32","value":"node"},"id":2601,"name":"Identifier","src":"3629:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2602,"name":"Identifier","src":"3635:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2603,"name":"Identifier","src":"3641:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2512,"type":"bytes calldata","value":"data"},"id":2604,"name":"Identifier","src":"3651:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2605,"name":"Identifier","src":"3657:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2606,"name":"Identifier","src":"3665:4:13"}],"id":2607,"name":"MemberAccess","src":"3665:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2608,"name":"Identifier","src":"3679:6:13"}],"id":2609,"name":"BinaryOperation","src":"3665:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"bytes memory","value":"value"},"id":2610,"name":"Identifier","src":"3687:5:13"}],"id":2611,"name":"MemberAccess","src":"3687:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2612,"name":"Literal","src":"3703:1:13"}],"id":2613,"name":"BinaryOperation","src":"3687:17:13"}],"id":2614,"name":"FunctionCall","src":"3617:88:13"}],"id":2615,"name":"ExpressionStatement","src":"3617:88:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2616,"name":"Identifier","src":"3727:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":3556,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2617,"name":"Identifier","src":"3738:4:13"}],"id":2618,"name":"MemberAccess","src":"3738:12:13"}],"id":2619,"name":"Assignment","src":"3727:23:13"}],"id":2620,"name":"ExpressionStatement","src":"3727:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2621,"name":"Identifier","src":"3772:6:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":3554,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2622,"name":"Identifier","src":"3781:4:13"}],"id":2623,"name":"MemberAccess","src":"3781:11:13"}],"id":2624,"name":"Assignment","src":"3772:20:13"}],"id":2625,"name":"ExpressionStatement","src":"3772:20:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2626,"name":"Identifier","src":"3814:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"bytes memory","value":"newName"},"id":2627,"name":"Identifier","src":"3821:7:13"}],"id":2628,"name":"Assignment","src":"3814:14:13"}],"id":2629,"name":"ExpressionStatement","src":"3814:14:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2533,"type":"bytes32","value":"nameHash"},"id":2630,"name":"Identifier","src":"3850:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2631,"name":"Identifier","src":"3861:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2632,"name":"Identifier","src":"3871:4:13"}],"id":2633,"name":"FunctionCall","src":"3861:15:13"}],"id":2634,"name":"Assignment","src":"3850:26:13"}],"id":2635,"name":"ExpressionStatement","src":"3850:26:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"bytes memory","value":"value"},"id":2636,"name":"Identifier","src":"3898:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2637,"name":"ElementaryTypeNameExpression","src":"3906:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":3749,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2538,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2638,"name":"Identifier","src":"3912:4:13"}],"id":2639,"name":"MemberAccess","src":"3912:10:13"}],"id":2640,"name":"FunctionCall","src":"3912:12:13"}],"id":2641,"name":"FunctionCall","src":"3906:19:13"}],"id":2642,"name":"Assignment","src":"3898:27:13"}],"id":2643,"name":"ExpressionStatement","src":"3898:27:13"}],"id":2644,"name":"Block","src":"3595:349:13"}],"id":2645,"name":"IfStatement","src":"3540:404:13"}],"id":2646,"name":"Block","src":"3470:488:13"}],"id":2647,"name":"IfStatement","src":"3246:712:13"}],"id":2648,"name":"Block","src":"3232:736:13"}],"id":2649,"name":"ForStatement","src":"3147:821:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2650,"name":"Identifier","src":"3981:4:13"}],"id":2651,"name":"MemberAccess","src":"3981:11:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2652,"name":"Literal","src":"3995:1:13"}],"id":2653,"name":"BinaryOperation","src":"3981:15:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2925,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":2654,"name":"Identifier","src":"4012:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2510,"type":"bytes32","value":"node"},"id":2655,"name":"Identifier","src":"4024:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2527,"type":"bytes memory","value":"name"},"id":2656,"name":"Identifier","src":"4030:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"uint16","value":"resource"},"id":2657,"name":"Identifier","src":"4036:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2512,"type":"bytes calldata","value":"data"},"id":2658,"name":"Identifier","src":"4046:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2659,"name":"Identifier","src":"4052:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2512,"type":"bytes calldata","value":"data"},"id":2660,"name":"Identifier","src":"4060:4:13"}],"id":2661,"name":"MemberAccess","src":"4060:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2523,"type":"uint256","value":"offset"},"id":2662,"name":"Identifier","src":"4074:6:13"}],"id":2663,"name":"BinaryOperation","src":"4060:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"bytes memory","value":"value"},"id":2664,"name":"Identifier","src":"4082:5:13"}],"id":2665,"name":"MemberAccess","src":"4082:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2666,"name":"Literal","src":"4098:1:13"}],"id":2667,"name":"BinaryOperation","src":"4082:17:13"}],"id":2668,"name":"FunctionCall","src":"4012:88:13"}],"id":2669,"name":"ExpressionStatement","src":"4012:88:13"}],"id":2670,"name":"Block","src":"3998:113:13"}],"id":2671,"name":"IfStatement","src":"3977:134:13"}],"id":2672,"name":"Block","src":"2938:1179:13"}],"id":2673,"name":"FunctionDefinition","src":"2854:1263:13"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":2926,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2697,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2674,"name":"ElementaryTypeName","src":"4538:7:13"}],"id":2675,"name":"VariableDeclaration","src":"4538:12:13"},{"attributes":{"constant":false,"name":"name","scope":2697,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2676,"name":"ElementaryTypeName","src":"4552:7:13"}],"id":2677,"name":"VariableDeclaration","src":"4552:12:13"},{"attributes":{"constant":false,"name":"resource","scope":2697,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2678,"name":"ElementaryTypeName","src":"4566:6:13"}],"id":2679,"name":"VariableDeclaration","src":"4566:15:13"}],"id":2680,"name":"ParameterList","src":"4537:45:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2697,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2681,"name":"ElementaryTypeName","src":"4604:5:13"}],"id":2682,"name":"VariableDeclaration","src":"4604:12:13"}],"id":2683,"name":"ParameterList","src":"4603:14:13"},{"children":[{"attributes":{"functionReturnParameters":2683},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2684,"name":"Identifier","src":"4635:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2675,"type":"bytes32","value":"node"},"id":2685,"name":"Identifier","src":"4643:4:13"}],"id":2686,"name":"IndexAccess","src":"4635:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2687,"name":"Identifier","src":"4649:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2675,"type":"bytes32","value":"node"},"id":2688,"name":"Identifier","src":"4658:4:13"}],"id":2689,"name":"IndexAccess","src":"4649:14:13"}],"id":2690,"name":"IndexAccess","src":"4635:29:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2677,"type":"bytes32","value":"name"},"id":2691,"name":"Identifier","src":"4665:4:13"}],"id":2692,"name":"IndexAccess","src":"4635:35:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2679,"type":"uint16","value":"resource"},"id":2693,"name":"Identifier","src":"4671:8:13"}],"id":2694,"name":"IndexAccess","src":"4635:45:13"}],"id":2695,"name":"Return","src":"4628:52:13"}],"id":2696,"name":"Block","src":"4618:69:13"}],"id":2697,"name":"FunctionDefinition","src":"4519:168:13"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":2926,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2720,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2698,"name":"ElementaryTypeName","src":"4924:7:13"}],"id":2699,"name":"VariableDeclaration","src":"4924:12:13"},{"attributes":{"constant":false,"name":"name","scope":2720,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2700,"name":"ElementaryTypeName","src":"4938:7:13"}],"id":2701,"name":"VariableDeclaration","src":"4938:12:13"}],"id":2702,"name":"ParameterList","src":"4923:28:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2720,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2703,"name":"ElementaryTypeName","src":"4973:4:13"}],"id":2704,"name":"VariableDeclaration","src":"4973:4:13"}],"id":2705,"name":"ParameterList","src":"4972:6:13"},{"children":[{"attributes":{"functionReturnParameters":2705},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2706,"name":"Identifier","src":"4997:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2699,"type":"bytes32","value":"node"},"id":2707,"name":"Identifier","src":"5014:4:13"}],"id":2708,"name":"IndexAccess","src":"4997:22:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2709,"name":"Identifier","src":"5020:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2699,"type":"bytes32","value":"node"},"id":2710,"name":"Identifier","src":"5029:4:13"}],"id":2711,"name":"IndexAccess","src":"5020:14:13"}],"id":2712,"name":"IndexAccess","src":"4997:38:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2701,"type":"bytes32","value":"name"},"id":2713,"name":"Identifier","src":"5036:4:13"}],"id":2714,"name":"IndexAccess","src":"4997:44:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2715,"name":"Literal","src":"5045:1:13"}],"id":2716,"name":"BinaryOperation","src":"4997:49:13"}],"id":2717,"name":"TupleExpression","src":"4996:51:13"}],"id":2718,"name":"Return","src":"4989:58:13"}],"id":2719,"name":"Block","src":"4979:75:13"}],"id":2720,"name":"FunctionDefinition","src":"4901:153:13"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":2926,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2738,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2721,"name":"ElementaryTypeName","src":"5215:7:13"}],"id":2722,"name":"VariableDeclaration","src":"5215:12:13"}],"id":2723,"name":"ParameterList","src":"5214:14:13"},{"attributes":{"parameters":[null]},"children":[],"id":2727,"name":"ParameterList","src":"5253:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2724,"name":"Identifier","src":"5236:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2722,"type":"bytes32","value":"node"},"id":2725,"name":"Identifier","src":"5247:4:13"}],"id":2726,"name":"ModifierInvocation","src":"5236:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2728,"name":"Identifier","src":"5263:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2722,"type":"bytes32","value":"node"},"id":2729,"name":"Identifier","src":"5272:4:13"}],"id":2730,"name":"IndexAccess","src":"5263:14:13"}],"id":2731,"name":"UnaryOperation","src":"5263:16:13"}],"id":2732,"name":"ExpressionStatement","src":"5263:16:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2474,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":2733,"name":"Identifier","src":"5294:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2722,"type":"bytes32","value":"node"},"id":2734,"name":"Identifier","src":"5309:4:13"}],"id":2735,"name":"FunctionCall","src":"5294:20:13"}],"id":2736,"name":"EmitStatement","src":"5289:25:13"}],"id":2737,"name":"Block","src":"5253:68:13"}],"id":2738,"name":"FunctionDefinition","src":"5193:128:13"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":2926,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2767,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2739,"name":"ElementaryTypeName","src":"5562:7:13"}],"id":2740,"name":"VariableDeclaration","src":"5562:12:13"},{"attributes":{"constant":false,"name":"hash","scope":2767,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2741,"name":"ElementaryTypeName","src":"5576:5:13"}],"id":2742,"name":"VariableDeclaration","src":"5576:19:13"}],"id":2743,"name":"ParameterList","src":"5561:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":2747,"name":"ParameterList","src":"5623:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2744,"name":"Identifier","src":"5606:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2740,"type":"bytes32","value":"node"},"id":2745,"name":"Identifier","src":"5617:4:13"}],"id":2746,"name":"ModifierInvocation","src":"5606:16:13"},{"children":[{"attributes":{"assignments":[2749]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":2766,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2748,"name":"ElementaryTypeName","src":"5633:5:13"}],"id":2749,"name":"VariableDeclaration","src":"5633:20:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2486,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2750,"name":"Identifier","src":"5656:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2740,"type":"bytes32","value":"node"},"id":2751,"name":"Identifier","src":"5667:4:13"}],"id":2752,"name":"IndexAccess","src":"5656:16:13"}],"id":2753,"name":"VariableDeclarationStatement","src":"5633:39:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2486,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2754,"name":"Identifier","src":"5682:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2740,"type":"bytes32","value":"node"},"id":2755,"name":"Identifier","src":"5693:4:13"}],"id":2756,"name":"IndexAccess","src":"5682:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes calldata","value":"hash"},"id":2757,"name":"Identifier","src":"5701:4:13"}],"id":2758,"name":"Assignment","src":"5682:23:13"}],"id":2759,"name":"ExpressionStatement","src":"5682:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":2760,"name":"Identifier","src":"5720:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2740,"type":"bytes32","value":"node"},"id":2761,"name":"Identifier","src":"5739:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2749,"type":"bytes memory","value":"oldhash"},"id":2762,"name":"Identifier","src":"5745:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes calldata","value":"hash"},"id":2763,"name":"Identifier","src":"5754:4:13"}],"id":2764,"name":"FunctionCall","src":"5720:39:13"}],"id":2765,"name":"EmitStatement","src":"5715:44:13"}],"id":2766,"name":"Block","src":"5623:143:13"}],"id":2767,"name":"FunctionDefinition","src":"5541:225:13"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":2926,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2779,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2768,"name":"ElementaryTypeName","src":"5938:7:13"}],"id":2769,"name":"VariableDeclaration","src":"5938:12:13"}],"id":2770,"name":"ParameterList","src":"5937:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2779,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2771,"name":"ElementaryTypeName","src":"5975:5:13"}],"id":2772,"name":"VariableDeclaration","src":"5975:12:13"}],"id":2773,"name":"ParameterList","src":"5974:14:13"},{"children":[{"attributes":{"functionReturnParameters":2773},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2486,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2774,"name":"Identifier","src":"6006:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2769,"type":"bytes32","value":"node"},"id":2775,"name":"Identifier","src":"6017:4:13"}],"id":2776,"name":"IndexAccess","src":"6006:16:13"}],"id":2777,"name":"Return","src":"5999:23:13"}],"id":2778,"name":"Block","src":"5989:40:13"}],"id":2779,"name":"FunctionDefinition","src":"5920:109:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2926,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2800,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2780,"name":"ElementaryTypeName","src":"6062:6:13"}],"id":2781,"name":"VariableDeclaration","src":"6062:18:13"}],"id":2782,"name":"ParameterList","src":"6061:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2800,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2783,"name":"ElementaryTypeName","src":"6102:4:13"}],"id":2784,"name":"VariableDeclaration","src":"6102:4:13"}],"id":2785,"name":"ParameterList","src":"6101:6:13"},{"children":[{"attributes":{"functionReturnParameters":2785},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2781,"type":"bytes4","value":"interfaceID"},"id":2786,"name":"Identifier","src":"6125:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":2787,"name":"Identifier","src":"6140:23:13"}],"id":2788,"name":"BinaryOperation","src":"6125:38:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2781,"type":"bytes4","value":"interfaceID"},"id":2789,"name":"Identifier","src":"6182:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2452,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":2790,"name":"Identifier","src":"6197:21:13"}],"id":2791,"name":"BinaryOperation","src":"6182:36:13"}],"id":2792,"name":"BinaryOperation","src":"6125:93:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4825,"type":"contract super DNSResolver","value":"super"},"id":2793,"name":"Identifier","src":"6237:5:13"}],"id":2794,"name":"MemberAccess","src":"6237:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2781,"type":"bytes4","value":"interfaceID"},"id":2795,"name":"Identifier","src":"6261:11:13"}],"id":2796,"name":"FunctionCall","src":"6237:36:13"}],"id":2797,"name":"BinaryOperation","src":"6125:148:13"}],"id":2798,"name":"Return","src":"6118:155:13"}],"id":2799,"name":"Block","src":"6108:172:13"}],"id":2800,"name":"FunctionDefinition","src":"6035:245:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":2926,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2925,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2801,"name":"ElementaryTypeName","src":"6316:7:13"}],"id":2802,"name":"VariableDeclaration","src":"6316:12:13"},{"attributes":{"constant":false,"name":"name","scope":2925,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2803,"name":"ElementaryTypeName","src":"6338:5:13"}],"id":2804,"name":"VariableDeclaration","src":"6338:17:13"},{"attributes":{"constant":false,"name":"resource","scope":2925,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2805,"name":"ElementaryTypeName","src":"6365:6:13"}],"id":2806,"name":"VariableDeclaration","src":"6365:15:13"},{"attributes":{"constant":false,"name":"data","scope":2925,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2807,"name":"ElementaryTypeName","src":"6390:5:13"}],"id":2808,"name":"VariableDeclaration","src":"6390:17:13"},{"attributes":{"constant":false,"name":"offset","scope":2925,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2809,"name":"ElementaryTypeName","src":"6417:7:13"}],"id":2810,"name":"VariableDeclaration","src":"6417:14:13"},{"attributes":{"constant":false,"name":"size","scope":2925,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2811,"name":"ElementaryTypeName","src":"6441:7:13"}],"id":2812,"name":"VariableDeclaration","src":"6441:12:13"},{"attributes":{"constant":false,"name":"deleteRecord","scope":2925,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2813,"name":"ElementaryTypeName","src":"6463:4:13"}],"id":2814,"name":"VariableDeclaration","src":"6463:17:13"}],"id":2815,"name":"ParameterList","src":"6306:175:13"},{"attributes":{"parameters":[null]},"children":[],"id":2816,"name":"ParameterList","src":"6494:0:13"},{"children":[{"attributes":{"assignments":[2818]},"children":[{"attributes":{"constant":false,"name":"version","scope":2924,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2817,"name":"ElementaryTypeName","src":"6504:7:13"}],"id":2818,"name":"VariableDeclaration","src":"6504:15:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2819,"name":"Identifier","src":"6522:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2820,"name":"Identifier","src":"6531:4:13"}],"id":2821,"name":"IndexAccess","src":"6522:14:13"}],"id":2822,"name":"VariableDeclarationStatement","src":"6504:32:13"},{"attributes":{"assignments":[2824]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":2924,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2823,"name":"ElementaryTypeName","src":"6546:7:13"}],"id":2824,"name":"VariableDeclaration","src":"6546:16:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2825,"name":"Identifier","src":"6565:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2804,"type":"bytes memory","value":"name"},"id":2826,"name":"Identifier","src":"6575:4:13"}],"id":2827,"name":"FunctionCall","src":"6565:15:13"}],"id":2828,"name":"VariableDeclarationStatement","src":"6546:34:13"},{"attributes":{"assignments":[2830]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":2924,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2829,"name":"ElementaryTypeName","src":"6590:5:13"}],"id":2830,"name":"VariableDeclaration","src":"6590:19:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":4542,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2808,"type":"bytes memory","value":"data"},"id":2831,"name":"Identifier","src":"6612:4:13"}],"id":2832,"name":"MemberAccess","src":"6612:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2810,"type":"uint256","value":"offset"},"id":2833,"name":"Identifier","src":"6627:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2812,"type":"uint256","value":"size"},"id":2834,"name":"Identifier","src":"6635:4:13"}],"id":2835,"name":"FunctionCall","src":"6612:28:13"}],"id":2836,"name":"VariableDeclarationStatement","src":"6590:50:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2814,"type":"bool","value":"deleteRecord"},"id":2837,"name":"Identifier","src":"6654:12:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2838,"name":"Identifier","src":"6686:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2839,"name":"Identifier","src":"6694:4:13"}],"id":2840,"name":"IndexAccess","src":"6686:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2841,"name":"Identifier","src":"6700:7:13"}],"id":2842,"name":"IndexAccess","src":"6686:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2843,"name":"Identifier","src":"6709:8:13"}],"id":2844,"name":"IndexAccess","src":"6686:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2845,"name":"Identifier","src":"6719:8:13"}],"id":2846,"name":"IndexAccess","src":"6686:42:13"}],"id":2847,"name":"MemberAccess","src":"6686:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2848,"name":"Literal","src":"6739:1:13"}],"id":2849,"name":"BinaryOperation","src":"6686:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2850,"name":"Identifier","src":"6760:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2851,"name":"Identifier","src":"6777:4:13"}],"id":2854,"name":"IndexAccess","src":"6760:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2852,"name":"Identifier","src":"6783:7:13"}],"id":2855,"name":"IndexAccess","src":"6760:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2853,"name":"Identifier","src":"6792:8:13"}],"id":2856,"name":"IndexAccess","src":"6760:41:13"}],"id":2857,"name":"UnaryOperation","src":"6760:43:13"}],"id":2858,"name":"ExpressionStatement","src":"6760:43:13"}],"id":2859,"name":"Block","src":"6742:76:13"}],"id":2860,"name":"IfStatement","src":"6682:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2861,"name":"Identifier","src":"6838:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2862,"name":"Identifier","src":"6846:4:13"}],"id":2863,"name":"IndexAccess","src":"6838:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2864,"name":"Identifier","src":"6852:7:13"}],"id":2865,"name":"IndexAccess","src":"6838:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2866,"name":"Identifier","src":"6861:8:13"}],"id":2867,"name":"IndexAccess","src":"6838:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2868,"name":"Identifier","src":"6871:8:13"}],"id":2869,"name":"IndexAccess","src":"6838:42:13"}],"id":2870,"name":"TupleExpression","src":"6837:44:13"}],"id":2871,"name":"UnaryOperation","src":"6831:50:13"}],"id":2872,"name":"ExpressionStatement","src":"6831:50:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":2873,"name":"Identifier","src":"6900:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2874,"name":"Identifier","src":"6917:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2804,"type":"bytes memory","value":"name"},"id":2875,"name":"Identifier","src":"6923:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2876,"name":"Identifier","src":"6929:8:13"}],"id":2877,"name":"FunctionCall","src":"6900:38:13"}],"id":2878,"name":"EmitStatement","src":"6895:43:13"}],"id":2879,"name":"Block","src":"6668:281:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2880,"name":"Identifier","src":"6973:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2881,"name":"Identifier","src":"6981:4:13"}],"id":2882,"name":"IndexAccess","src":"6973:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2883,"name":"Identifier","src":"6987:7:13"}],"id":2884,"name":"IndexAccess","src":"6973:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2885,"name":"Identifier","src":"6996:8:13"}],"id":2886,"name":"IndexAccess","src":"6973:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2887,"name":"Identifier","src":"7006:8:13"}],"id":2888,"name":"IndexAccess","src":"6973:42:13"}],"id":2889,"name":"MemberAccess","src":"6973:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2890,"name":"Literal","src":"7026:1:13"}],"id":2891,"name":"BinaryOperation","src":"6973:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2892,"name":"Identifier","src":"7047:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2893,"name":"Identifier","src":"7064:4:13"}],"id":2896,"name":"IndexAccess","src":"7047:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2894,"name":"Identifier","src":"7070:7:13"}],"id":2897,"name":"IndexAccess","src":"7047:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2895,"name":"Identifier","src":"7079:8:13"}],"id":2898,"name":"IndexAccess","src":"7047:41:13"}],"id":2899,"name":"UnaryOperation","src":"7047:43:13"}],"id":2900,"name":"ExpressionStatement","src":"7047:43:13"}],"id":2901,"name":"Block","src":"7029:76:13"}],"id":2902,"name":"IfStatement","src":"6969:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2903,"name":"Identifier","src":"7118:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2904,"name":"Identifier","src":"7126:4:13"}],"id":2908,"name":"IndexAccess","src":"7118:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2818,"type":"uint256","value":"version"},"id":2905,"name":"Identifier","src":"7132:7:13"}],"id":2909,"name":"IndexAccess","src":"7118:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2824,"type":"bytes32","value":"nameHash"},"id":2906,"name":"Identifier","src":"7141:8:13"}],"id":2910,"name":"IndexAccess","src":"7118:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2907,"name":"Identifier","src":"7151:8:13"}],"id":2911,"name":"IndexAccess","src":"7118:42:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2830,"type":"bytes memory","value":"rrData"},"id":2912,"name":"Identifier","src":"7163:6:13"}],"id":2913,"name":"Assignment","src":"7118:51:13"}],"id":2914,"name":"ExpressionStatement","src":"7118:51:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2462,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":2915,"name":"Identifier","src":"7188:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2916,"name":"Identifier","src":"7205:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2804,"type":"bytes memory","value":"name"},"id":2917,"name":"Identifier","src":"7211:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2806,"type":"uint16","value":"resource"},"id":2918,"name":"Identifier","src":"7217:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2830,"type":"bytes memory","value":"rrData"},"id":2919,"name":"Identifier","src":"7227:6:13"}],"id":2920,"name":"FunctionCall","src":"7188:46:13"}],"id":2921,"name":"EmitStatement","src":"7183:51:13"}],"id":2922,"name":"Block","src":"6955:290:13"}],"id":2923,"name":"IfStatement","src":"6650:595:13"}],"id":2924,"name":"Block","src":"6494:757:13"}],"id":2925,"name":"FunctionDefinition","src":"6286:965:13"}],"id":2926,"name":"ContractDefinition","src":"81:7172:13"}],"id":2927,"name":"SourceUnit","src":"0:7253:13"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[3113]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2928,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3114,"symbolAliases":[null],"unitAlias":""},"id":2929,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":2366,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":3114,"symbolAliases":[null],"unitAlias":""},"id":2930,"name":"ImportDirective","src":"55:28:14"},{"attributes":{"contractDependencies":[2365,3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3113,2365,3426],"name":"InterfaceResolver","scope":3114},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":2931,"name":"UserDefinedTypeName","src":"115:12:14"}],"id":2932,"name":"InheritanceSpecifier","src":"115:12:14"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":2365,"type":"contract AddrResolver"},"id":2933,"name":"UserDefinedTypeName","src":"129:12:14"}],"id":2934,"name":"InheritanceSpecifier","src":"129:12:14"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":3113,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2935,"name":"ElementaryTypeName","src":"148:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":2936,"name":"ElementaryTypeNameExpression","src":"197:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2937,"name":"Identifier","src":"204:9:14"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":2938,"name":"Literal","src":"214:38:14"}],"id":2939,"name":"FunctionCall","src":"204:49:14"}],"id":2940,"name":"FunctionCall","src":"197:57:14"}],"id":2941,"name":"VariableDeclaration","src":"148:106:14"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":3113,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2942,"name":"ElementaryTypeName","src":"260:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":2943,"name":"Literal","src":"304:10:14"}],"id":2944,"name":"VariableDeclaration","src":"260:54:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2952,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2945,"name":"ElementaryTypeName","src":"344:7:14"}],"id":2946,"name":"VariableDeclaration","src":"344:20:14"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":2952,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2947,"name":"ElementaryTypeName","src":"366:6:14"}],"id":2948,"name":"VariableDeclaration","src":"366:26:14"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":2952,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2949,"name":"ElementaryTypeName","src":"394:7:14"}],"id":2950,"name":"VariableDeclaration","src":"394:19:14"}],"id":2951,"name":"ParameterList","src":"343:71:14"}],"id":2952,"name":"EventDefinition","src":"321:94:14"},{"attributes":{"constant":false,"name":"interfaces","scope":3113,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2953,"name":"ElementaryTypeName","src":"429:7:14"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2954,"name":"ElementaryTypeName","src":"446:6:14"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2955,"name":"ElementaryTypeName","src":"454:7:14"}],"id":2956,"name":"Mapping","src":"438:24:14"}],"id":2957,"name":"Mapping","src":"421:42:14"}],"id":2958,"name":"VariableDeclaration","src":"421:53:14"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2985,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2959,"name":"ElementaryTypeName","src":"880:7:14"}],"id":2960,"name":"VariableDeclaration","src":"880:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":2985,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2961,"name":"ElementaryTypeName","src":"894:6:14"}],"id":2962,"name":"VariableDeclaration","src":"894:18:14"},{"attributes":{"constant":false,"name":"implementer","scope":2985,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2963,"name":"ElementaryTypeName","src":"914:7:14"}],"id":2964,"name":"VariableDeclaration","src":"914:19:14"}],"id":2965,"name":"ParameterList","src":"879:55:14"},{"attributes":{"parameters":[null]},"children":[],"id":2969,"name":"ParameterList","src":"961:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":2966,"name":"Identifier","src":"944:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2960,"type":"bytes32","value":"node"},"id":2967,"name":"Identifier","src":"955:4:14"}],"id":2968,"name":"ModifierInvocation","src":"944:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2958,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":2970,"name":"Identifier","src":"971:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2960,"type":"bytes32","value":"node"},"id":2971,"name":"Identifier","src":"982:4:14"}],"id":2973,"name":"IndexAccess","src":"971:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2962,"type":"bytes4","value":"interfaceID"},"id":2972,"name":"Identifier","src":"988:11:14"}],"id":2974,"name":"IndexAccess","src":"971:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"address","value":"implementer"},"id":2975,"name":"Identifier","src":"1003:11:14"}],"id":2976,"name":"Assignment","src":"971:43:14"}],"id":2977,"name":"ExpressionStatement","src":"971:43:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2952,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":2978,"name":"Identifier","src":"1029:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2960,"type":"bytes32","value":"node"},"id":2979,"name":"Identifier","src":"1046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2962,"type":"bytes4","value":"interfaceID"},"id":2980,"name":"Identifier","src":"1052:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2964,"type":"address","value":"implementer"},"id":2981,"name":"Identifier","src":"1065:11:14"}],"id":2982,"name":"FunctionCall","src":"1029:48:14"}],"id":2983,"name":"EmitStatement","src":"1024:53:14"}],"id":2984,"name":"Block","src":"961:123:14"}],"id":2985,"name":"FunctionDefinition","src":"858:226:14"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3095,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2986,"name":"ElementaryTypeName","src":"1751:7:14"}],"id":2987,"name":"VariableDeclaration","src":"1751:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":3095,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2988,"name":"ElementaryTypeName","src":"1765:6:14"}],"id":2989,"name":"VariableDeclaration","src":"1765:18:14"}],"id":2990,"name":"ParameterList","src":"1750:34:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":3095,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2991,"name":"ElementaryTypeName","src":"1808:7:14"}],"id":2992,"name":"VariableDeclaration","src":"1808:7:14"}],"id":2993,"name":"ParameterList","src":"1807:9:14"},{"children":[{"attributes":{"assignments":[2995]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":3094,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2994,"name":"ElementaryTypeName","src":"1827:7:14"}],"id":2995,"name":"VariableDeclaration","src":"1827:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2958,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":2996,"name":"Identifier","src":"1849:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2987,"type":"bytes32","value":"node"},"id":2997,"name":"Identifier","src":"1860:4:14"}],"id":2998,"name":"IndexAccess","src":"1849:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2989,"type":"bytes4","value":"interfaceID"},"id":2999,"name":"Identifier","src":"1866:11:14"}],"id":3000,"name":"IndexAccess","src":"1849:29:14"}],"id":3001,"name":"VariableDeclarationStatement","src":"1827:51:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2995,"type":"address","value":"implementer"},"id":3002,"name":"Identifier","src":"1891:11:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3003,"name":"ElementaryTypeNameExpression","src":"1906:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3004,"name":"Literal","src":"1914:1:14"}],"id":3005,"name":"FunctionCall","src":"1906:10:14"}],"id":3006,"name":"BinaryOperation","src":"1891:25:14"},{"children":[{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2995,"type":"address","value":"implementer"},"id":3007,"name":"Identifier","src":"1939:11:14"}],"id":3008,"name":"Return","src":"1932:18:14"}],"id":3009,"name":"Block","src":"1918:43:14"}],"id":3010,"name":"IfStatement","src":"1888:73:14"},{"attributes":{"assignments":[3012]},"children":[{"attributes":{"constant":false,"name":"a","scope":3094,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3011,"name":"ElementaryTypeName","src":"1971:7:14"}],"id":3012,"name":"VariableDeclaration","src":"1971:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[2288,2343],"referencedDeclaration":2288,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":3013,"name":"Identifier","src":"1983:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2987,"type":"bytes32","value":"node"},"id":3014,"name":"Identifier","src":"1988:4:14"}],"id":3015,"name":"FunctionCall","src":"1983:10:14"}],"id":3016,"name":"VariableDeclarationStatement","src":"1971:22:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3012,"type":"address","value":"a"},"id":3017,"name":"Identifier","src":"2006:1:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3018,"name":"ElementaryTypeNameExpression","src":"2011:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3019,"name":"Literal","src":"2019:1:14"}],"id":3020,"name":"FunctionCall","src":"2011:10:14"}],"id":3021,"name":"BinaryOperation","src":"2006:15:14"},{"children":[{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3022,"name":"ElementaryTypeNameExpression","src":"2044:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3023,"name":"Literal","src":"2052:1:14"}],"id":3024,"name":"FunctionCall","src":"2044:10:14"}],"id":3025,"name":"Return","src":"2037:17:14"}],"id":3026,"name":"Block","src":"2023:42:14"}],"id":3027,"name":"IfStatement","src":"2003:62:14"},{"attributes":{"assignments":[3029,3031]},"children":[{"attributes":{"constant":false,"name":"success","scope":3094,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3028,"name":"ElementaryTypeName","src":"2076:4:14"}],"id":3029,"name":"VariableDeclaration","src":"2076:12:14"},{"attributes":{"constant":false,"name":"returnData","scope":3094,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3030,"name":"ElementaryTypeName","src":"2090:5:14"}],"id":3031,"name":"VariableDeclaration","src":"2090:23:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3012,"type":"address","value":"a"},"id":3032,"name":"Identifier","src":"2117:1:14"}],"id":3033,"name":"MemberAccess","src":"2117:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":3034,"name":"Identifier","src":"2130:3:14"}],"id":3035,"name":"MemberAccess","src":"2130:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":3036,"name":"Literal","src":"2154:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2944,"type":"bytes4","value":"INTERFACE_META_ID"},"id":3037,"name":"Identifier","src":"2183:17:14"}],"id":3038,"name":"FunctionCall","src":"2130:71:14"}],"id":3039,"name":"FunctionCall","src":"2117:85:14"}],"id":3040,"name":"VariableDeclarationStatement","src":"2075:127:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3029,"type":"bool","value":"success"},"id":3041,"name":"Identifier","src":"2216:7:14"}],"id":3042,"name":"UnaryOperation","src":"2215:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3043,"name":"Identifier","src":"2227:10:14"}],"id":3044,"name":"MemberAccess","src":"2227:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3045,"name":"Literal","src":"2247:2:14"}],"id":3046,"name":"BinaryOperation","src":"2227:22:14"}],"id":3047,"name":"BinaryOperation","src":"2215:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3048,"name":"Identifier","src":"2253:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":3049,"name":"Literal","src":"2264:2:14"}],"id":3050,"name":"IndexAccess","src":"2253:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3051,"name":"Literal","src":"2271:1:14"}],"id":3052,"name":"BinaryOperation","src":"2253:19:14"}],"id":3053,"name":"BinaryOperation","src":"2215:57:14"},{"children":[{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3054,"name":"ElementaryTypeNameExpression","src":"2342:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3055,"name":"Literal","src":"2350:1:14"}],"id":3056,"name":"FunctionCall","src":"2342:10:14"}],"id":3057,"name":"Return","src":"2335:17:14"}],"id":3058,"name":"Block","src":"2274:89:14"}],"id":3059,"name":"IfStatement","src":"2212:151:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3029,"type":"bool","value":"success"},"id":3060,"name":"Identifier","src":"2374:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3061,"name":"Identifier","src":"2383:10:14"}],"id":3062,"name":"TupleExpression","src":"2373:21:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3012,"type":"address","value":"a"},"id":3063,"name":"Identifier","src":"2397:1:14"}],"id":3064,"name":"MemberAccess","src":"2397:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"abi","value":"abi"},"id":3065,"name":"Identifier","src":"2410:3:14"}],"id":3066,"name":"MemberAccess","src":"2410:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":3067,"name":"Literal","src":"2434:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2989,"type":"bytes4","value":"interfaceID"},"id":3068,"name":"Identifier","src":"2463:11:14"}],"id":3069,"name":"FunctionCall","src":"2410:65:14"}],"id":3070,"name":"FunctionCall","src":"2397:79:14"}],"id":3071,"name":"Assignment","src":"2373:103:14"}],"id":3072,"name":"ExpressionStatement","src":"2373:103:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3029,"type":"bool","value":"success"},"id":3073,"name":"Identifier","src":"2490:7:14"}],"id":3074,"name":"UnaryOperation","src":"2489:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3075,"name":"Identifier","src":"2501:10:14"}],"id":3076,"name":"MemberAccess","src":"2501:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3077,"name":"Literal","src":"2521:2:14"}],"id":3078,"name":"BinaryOperation","src":"2501:22:14"}],"id":3079,"name":"BinaryOperation","src":"2489:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3031,"type":"bytes memory","value":"returnData"},"id":3080,"name":"Identifier","src":"2527:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":3081,"name":"Literal","src":"2538:2:14"}],"id":3082,"name":"IndexAccess","src":"2527:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3083,"name":"Literal","src":"2545:1:14"}],"id":3084,"name":"BinaryOperation","src":"2527:19:14"}],"id":3085,"name":"BinaryOperation","src":"2489:57:14"},{"children":[{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3086,"name":"ElementaryTypeNameExpression","src":"2628:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3087,"name":"Literal","src":"2636:1:14"}],"id":3088,"name":"FunctionCall","src":"2628:10:14"}],"id":3089,"name":"Return","src":"2621:17:14"}],"id":3090,"name":"Block","src":"2548:101:14"}],"id":3091,"name":"IfStatement","src":"2486:163:14"},{"attributes":{"functionReturnParameters":2993},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3012,"type":"address","value":"a"},"id":3092,"name":"Identifier","src":"2666:1:14"}],"id":3093,"name":"Return","src":"2659:8:14"}],"id":3094,"name":"Block","src":"1817:857:14"}],"id":3095,"name":"FunctionDefinition","src":"1721:953:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3113,"stateMutability":"pure","superFunction":2364,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3112,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3096,"name":"ElementaryTypeName","src":"2707:6:14"}],"id":3097,"name":"VariableDeclaration","src":"2707:18:14"}],"id":3098,"name":"ParameterList","src":"2706:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":3112,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3099,"name":"ElementaryTypeName","src":"2747:4:14"}],"id":3100,"name":"VariableDeclaration","src":"2747:4:14"}],"id":3101,"name":"ParameterList","src":"2746:6:14"},{"children":[{"attributes":{"functionReturnParameters":3101},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3097,"type":"bytes4","value":"interfaceID"},"id":3102,"name":"Identifier","src":"2770:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2941,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":3103,"name":"Identifier","src":"2785:22:14"}],"id":3104,"name":"BinaryOperation","src":"2770:37:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":2364,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4827,"type":"contract super InterfaceResolver","value":"super"},"id":3105,"name":"Identifier","src":"2811:5:14"}],"id":3106,"name":"MemberAccess","src":"2811:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3097,"type":"bytes4","value":"interfaceID"},"id":3107,"name":"Identifier","src":"2835:11:14"}],"id":3108,"name":"FunctionCall","src":"2811:36:14"}],"id":3109,"name":"BinaryOperation","src":"2770:77:14"}],"id":3110,"name":"Return","src":"2763:84:14"}],"id":3111,"name":"Block","src":"2753:101:14"}],"id":3112,"name":"FunctionDefinition","src":"2680:174:14"}],"id":3113,"name":"ContractDefinition","src":"85:2771:14"}],"id":3114,"name":"SourceUnit","src":"0:2857:14"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[3183]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3115,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3184,"symbolAliases":[null],"unitAlias":""},"id":3116,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3183,3426],"name":"NameResolver","scope":3184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":3117,"name":"UserDefinedTypeName","src":"81:12:15"}],"id":3118,"name":"InheritanceSpecifier","src":"81:12:15"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":3183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3119,"name":"ElementaryTypeName","src":"100:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":3120,"name":"Literal","src":"144:10:15"}],"id":3121,"name":"VariableDeclaration","src":"100:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":3127,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3122,"name":"ElementaryTypeName","src":"179:7:15"}],"id":3123,"name":"VariableDeclaration","src":"179:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":3127,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3124,"name":"ElementaryTypeName","src":"201:6:15"}],"id":3125,"name":"VariableDeclaration","src":"201:11:15"}],"id":3126,"name":"ParameterList","src":"178:35:15"}],"id":3127,"name":"EventDefinition","src":"161:53:15"},{"attributes":{"constant":false,"name":"names","scope":3183,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3128,"name":"ElementaryTypeName","src":"228:7:15"},{"attributes":{"name":"string","type":"string"},"id":3129,"name":"ElementaryTypeName","src":"237:6:15"}],"id":3130,"name":"Mapping","src":"220:24:15"}],"id":3131,"name":"VariableDeclaration","src":"220:30:15"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":3183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3153,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3132,"name":"ElementaryTypeName","src":"509:7:15"}],"id":3133,"name":"VariableDeclaration","src":"509:12:15"},{"attributes":{"constant":false,"name":"name","scope":3153,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3134,"name":"ElementaryTypeName","src":"523:6:15"}],"id":3135,"name":"VariableDeclaration","src":"523:20:15"}],"id":3136,"name":"ParameterList","src":"508:36:15"},{"attributes":{"parameters":[null]},"children":[],"id":3140,"name":"ParameterList","src":"571:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":3137,"name":"Identifier","src":"554:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3133,"type":"bytes32","value":"node"},"id":3138,"name":"Identifier","src":"565:4:15"}],"id":3139,"name":"ModifierInvocation","src":"554:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3131,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":3141,"name":"Identifier","src":"581:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3133,"type":"bytes32","value":"node"},"id":3142,"name":"Identifier","src":"587:4:15"}],"id":3143,"name":"IndexAccess","src":"581:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3135,"type":"string calldata","value":"name"},"id":3144,"name":"Identifier","src":"595:4:15"}],"id":3145,"name":"Assignment","src":"581:18:15"}],"id":3146,"name":"ExpressionStatement","src":"581:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":3147,"name":"Identifier","src":"614:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3133,"type":"bytes32","value":"node"},"id":3148,"name":"Identifier","src":"626:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3135,"type":"string calldata","value":"name"},"id":3149,"name":"Identifier","src":"632:4:15"}],"id":3150,"name":"FunctionCall","src":"614:23:15"}],"id":3151,"name":"EmitStatement","src":"609:28:15"}],"id":3152,"name":"Block","src":"571:73:15"}],"id":3153,"name":"FunctionDefinition","src":"492:152:15"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":3183,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3165,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3154,"name":"ElementaryTypeName","src":"858:7:15"}],"id":3155,"name":"VariableDeclaration","src":"858:12:15"}],"id":3156,"name":"ParameterList","src":"857:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":3165,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3157,"name":"ElementaryTypeName","src":"895:6:15"}],"id":3158,"name":"VariableDeclaration","src":"895:13:15"}],"id":3159,"name":"ParameterList","src":"894:15:15"},{"children":[{"attributes":{"functionReturnParameters":3159},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3131,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":3160,"name":"Identifier","src":"927:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3155,"type":"bytes32","value":"node"},"id":3161,"name":"Identifier","src":"933:4:15"}],"id":3162,"name":"IndexAccess","src":"927:11:15"}],"id":3163,"name":"Return","src":"920:18:15"}],"id":3164,"name":"Block","src":"910:35:15"}],"id":3165,"name":"FunctionDefinition","src":"844:101:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3183,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3182,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3166,"name":"ElementaryTypeName","src":"978:6:15"}],"id":3167,"name":"VariableDeclaration","src":"978:18:15"}],"id":3168,"name":"ParameterList","src":"977:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":3182,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3169,"name":"ElementaryTypeName","src":"1018:4:15"}],"id":3170,"name":"VariableDeclaration","src":"1018:4:15"}],"id":3171,"name":"ParameterList","src":"1017:6:15"},{"children":[{"attributes":{"functionReturnParameters":3171},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"bytes4","value":"interfaceID"},"id":3172,"name":"Identifier","src":"1041:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3121,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":3173,"name":"Identifier","src":"1056:17:15"}],"id":3174,"name":"BinaryOperation","src":"1041:32:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4829,"type":"contract super NameResolver","value":"super"},"id":3175,"name":"Identifier","src":"1077:5:15"}],"id":3176,"name":"MemberAccess","src":"1077:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"bytes4","value":"interfaceID"},"id":3177,"name":"Identifier","src":"1101:11:15"}],"id":3178,"name":"FunctionCall","src":"1077:36:15"}],"id":3179,"name":"BinaryOperation","src":"1041:72:15"}],"id":3180,"name":"Return","src":"1034:79:15"}],"id":3181,"name":"Block","src":"1024:96:15"}],"id":3182,"name":"FunctionDefinition","src":"951:169:15"}],"id":3183,"name":"ContractDefinition","src":"56:1066:15"}],"id":3184,"name":"SourceUnit","src":"0:1123:15"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[3274]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3185,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3275,"symbolAliases":[null],"unitAlias":""},"id":3186,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3274,3426],"name":"PubkeyResolver","scope":3275},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":3187,"name":"UserDefinedTypeName","src":"83:12:16"}],"id":3188,"name":"InheritanceSpecifier","src":"83:12:16"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":3274,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3189,"name":"ElementaryTypeName","src":"102:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":3190,"name":"Literal","src":"148:10:16"}],"id":3191,"name":"VariableDeclaration","src":"102:56:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":3199,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3192,"name":"ElementaryTypeName","src":"185:7:16"}],"id":3193,"name":"VariableDeclaration","src":"185:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":3199,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3194,"name":"ElementaryTypeName","src":"207:7:16"}],"id":3195,"name":"VariableDeclaration","src":"207:9:16"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":3199,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3196,"name":"ElementaryTypeName","src":"218:7:16"}],"id":3197,"name":"VariableDeclaration","src":"218:9:16"}],"id":3198,"name":"ParameterList","src":"184:44:16"}],"id":3199,"name":"EventDefinition","src":"165:64:16"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":3274,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":3204,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3200,"name":"ElementaryTypeName","src":"262:7:16"}],"id":3201,"name":"VariableDeclaration","src":"262:9:16"},{"attributes":{"constant":false,"name":"y","scope":3204,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3202,"name":"ElementaryTypeName","src":"281:7:16"}],"id":3203,"name":"VariableDeclaration","src":"281:9:16"}],"id":3204,"name":"StructDefinition","src":"235:62:16"},{"attributes":{"constant":false,"name":"pubkeys","scope":3274,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3205,"name":"ElementaryTypeName","src":"311:7:16"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":3204,"type":"struct PubkeyResolver.PublicKey"},"id":3206,"name":"UserDefinedTypeName","src":"320:9:16"}],"id":3207,"name":"Mapping","src":"303:27:16"}],"id":3208,"name":"VariableDeclaration","src":"303:35:16"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":3274,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3236,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3209,"name":"ElementaryTypeName","src":"631:7:16"}],"id":3210,"name":"VariableDeclaration","src":"631:12:16"},{"attributes":{"constant":false,"name":"x","scope":3236,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3211,"name":"ElementaryTypeName","src":"645:7:16"}],"id":3212,"name":"VariableDeclaration","src":"645:9:16"},{"attributes":{"constant":false,"name":"y","scope":3236,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3213,"name":"ElementaryTypeName","src":"656:7:16"}],"id":3214,"name":"VariableDeclaration","src":"656:9:16"}],"id":3215,"name":"ParameterList","src":"630:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":3219,"name":"ParameterList","src":"693:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":3216,"name":"Identifier","src":"676:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3210,"type":"bytes32","value":"node"},"id":3217,"name":"Identifier","src":"687:4:16"}],"id":3218,"name":"ModifierInvocation","src":"676:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":3220,"name":"Identifier","src":"703:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3210,"type":"bytes32","value":"node"},"id":3221,"name":"Identifier","src":"711:4:16"}],"id":3222,"name":"IndexAccess","src":"703:13:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3204,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":3223,"name":"Identifier","src":"719:9:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"bytes32","value":"x"},"id":3224,"name":"Identifier","src":"729:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3214,"type":"bytes32","value":"y"},"id":3225,"name":"Identifier","src":"732:1:16"}],"id":3226,"name":"FunctionCall","src":"719:15:16"}],"id":3227,"name":"Assignment","src":"703:31:16"}],"id":3228,"name":"ExpressionStatement","src":"703:31:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3199,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":3229,"name":"Identifier","src":"749:13:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3210,"type":"bytes32","value":"node"},"id":3230,"name":"Identifier","src":"763:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"bytes32","value":"x"},"id":3231,"name":"Identifier","src":"769:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3214,"type":"bytes32","value":"y"},"id":3232,"name":"Identifier","src":"772:1:16"}],"id":3233,"name":"FunctionCall","src":"749:25:16"}],"id":3234,"name":"EmitStatement","src":"744:30:16"}],"id":3235,"name":"Block","src":"693:88:16"}],"id":3236,"name":"FunctionDefinition","src":"612:169:16"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":3274,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3256,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3237,"name":"ElementaryTypeName","src":"1039:7:16"}],"id":3238,"name":"VariableDeclaration","src":"1039:12:16"}],"id":3239,"name":"ParameterList","src":"1038:14:16"},{"children":[{"attributes":{"constant":false,"name":"x","scope":3256,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3240,"name":"ElementaryTypeName","src":"1076:7:16"}],"id":3241,"name":"VariableDeclaration","src":"1076:9:16"},{"attributes":{"constant":false,"name":"y","scope":3256,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3242,"name":"ElementaryTypeName","src":"1087:7:16"}],"id":3243,"name":"VariableDeclaration","src":"1087:9:16"}],"id":3244,"name":"ParameterList","src":"1075:22:16"},{"children":[{"attributes":{"functionReturnParameters":3244},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":3201,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":3245,"name":"Identifier","src":"1116:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3238,"type":"bytes32","value":"node"},"id":3246,"name":"Identifier","src":"1124:4:16"}],"id":3247,"name":"IndexAccess","src":"1116:13:16"}],"id":3248,"name":"MemberAccess","src":"1116:15:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":3203,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":3249,"name":"Identifier","src":"1133:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3238,"type":"bytes32","value":"node"},"id":3250,"name":"Identifier","src":"1141:4:16"}],"id":3251,"name":"IndexAccess","src":"1133:13:16"}],"id":3252,"name":"MemberAccess","src":"1133:15:16"}],"id":3253,"name":"TupleExpression","src":"1115:34:16"}],"id":3254,"name":"Return","src":"1108:41:16"}],"id":3255,"name":"Block","src":"1098:58:16"}],"id":3256,"name":"FunctionDefinition","src":"1023:133:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3274,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3273,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3257,"name":"ElementaryTypeName","src":"1189:6:16"}],"id":3258,"name":"VariableDeclaration","src":"1189:18:16"}],"id":3259,"name":"ParameterList","src":"1188:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":3273,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3260,"name":"ElementaryTypeName","src":"1229:4:16"}],"id":3261,"name":"VariableDeclaration","src":"1229:4:16"}],"id":3262,"name":"ParameterList","src":"1228:6:16"},{"children":[{"attributes":{"functionReturnParameters":3262},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3258,"type":"bytes4","value":"interfaceID"},"id":3263,"name":"Identifier","src":"1252:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3191,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":3264,"name":"Identifier","src":"1267:19:16"}],"id":3265,"name":"BinaryOperation","src":"1252:34:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4831,"type":"contract super PubkeyResolver","value":"super"},"id":3266,"name":"Identifier","src":"1290:5:16"}],"id":3267,"name":"MemberAccess","src":"1290:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3258,"type":"bytes4","value":"interfaceID"},"id":3268,"name":"Identifier","src":"1314:11:16"}],"id":3269,"name":"FunctionCall","src":"1290:36:16"}],"id":3270,"name":"BinaryOperation","src":"1252:74:16"}],"id":3271,"name":"Return","src":"1245:81:16"}],"id":3272,"name":"Block","src":"1235:98:16"}],"id":3273,"name":"FunctionDefinition","src":"1162:171:16"}],"id":3274,"name":"ContractDefinition","src":"56:1279:16"}],"id":3275,"name":"SourceUnit","src":"0:1336:16"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[3357]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3276,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":3427,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3358,"symbolAliases":[null],"unitAlias":""},"id":3277,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[3426],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3357,3426],"name":"TextResolver","scope":3358},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":3426,"type":"contract ResolverBase"},"id":3278,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":3279,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":3357,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3280,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":3281,"name":"Literal","src":"144:10:17"}],"id":3282,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":3290,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3283,"name":"ElementaryTypeName","src":"179:7:17"}],"id":3284,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":3290,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3285,"name":"ElementaryTypeName","src":"201:6:17"}],"id":3286,"name":"VariableDeclaration","src":"201:25:17"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":3290,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3287,"name":"ElementaryTypeName","src":"228:6:17"}],"id":3288,"name":"VariableDeclaration","src":"228:10:17"}],"id":3289,"name":"ParameterList","src":"178:61:17"}],"id":3290,"name":"EventDefinition","src":"161:79:17"},{"attributes":{"constant":false,"name":"texts","scope":3357,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3291,"name":"ElementaryTypeName","src":"254:7:17"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":3292,"name":"ElementaryTypeName","src":"271:6:17"},{"attributes":{"name":"string","type":"string"},"id":3293,"name":"ElementaryTypeName","src":"279:6:17"}],"id":3294,"name":"Mapping","src":"263:23:17"}],"id":3295,"name":"Mapping","src":"246:41:17"}],"id":3296,"name":"VariableDeclaration","src":"246:47:17"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":3357,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3323,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3297,"name":"ElementaryTypeName","src":"590:7:17"}],"id":3298,"name":"VariableDeclaration","src":"590:12:17"},{"attributes":{"constant":false,"name":"key","scope":3323,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3299,"name":"ElementaryTypeName","src":"604:6:17"}],"id":3300,"name":"VariableDeclaration","src":"604:19:17"},{"attributes":{"constant":false,"name":"value","scope":3323,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3301,"name":"ElementaryTypeName","src":"625:6:17"}],"id":3302,"name":"VariableDeclaration","src":"625:21:17"}],"id":3303,"name":"ParameterList","src":"589:58:17"},{"attributes":{"parameters":[null]},"children":[],"id":3307,"name":"ParameterList","src":"674:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3393,"type":"modifier (bytes32)","value":"authorised"},"id":3304,"name":"Identifier","src":"657:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"bytes32","value":"node"},"id":3305,"name":"Identifier","src":"668:4:17"}],"id":3306,"name":"ModifierInvocation","src":"657:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3296,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":3308,"name":"Identifier","src":"684:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"bytes32","value":"node"},"id":3309,"name":"Identifier","src":"690:4:17"}],"id":3311,"name":"IndexAccess","src":"684:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"string calldata","value":"key"},"id":3310,"name":"Identifier","src":"696:3:17"}],"id":3312,"name":"IndexAccess","src":"684:16:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3302,"type":"string calldata","value":"value"},"id":3313,"name":"Identifier","src":"703:5:17"}],"id":3314,"name":"Assignment","src":"684:24:17"}],"id":3315,"name":"ExpressionStatement","src":"684:24:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":3290,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":3316,"name":"Identifier","src":"723:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"bytes32","value":"node"},"id":3317,"name":"Identifier","src":"735:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"string calldata","value":"key"},"id":3318,"name":"Identifier","src":"741:3:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"string calldata","value":"key"},"id":3319,"name":"Identifier","src":"746:3:17"}],"id":3320,"name":"FunctionCall","src":"723:27:17"}],"id":3321,"name":"EmitStatement","src":"718:32:17"}],"id":3322,"name":"Block","src":"674:83:17"}],"id":3323,"name":"FunctionDefinition","src":"573:184:17"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":3357,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3339,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3324,"name":"ElementaryTypeName","src":"988:7:17"}],"id":3325,"name":"VariableDeclaration","src":"988:12:17"},{"attributes":{"constant":false,"name":"key","scope":3339,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3326,"name":"ElementaryTypeName","src":"1002:6:17"}],"id":3327,"name":"VariableDeclaration","src":"1002:19:17"}],"id":3328,"name":"ParameterList","src":"987:35:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":3339,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3329,"name":"ElementaryTypeName","src":"1046:6:17"}],"id":3330,"name":"VariableDeclaration","src":"1046:13:17"}],"id":3331,"name":"ParameterList","src":"1045:15:17"},{"children":[{"attributes":{"functionReturnParameters":3331},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3296,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":3332,"name":"Identifier","src":"1078:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3325,"type":"bytes32","value":"node"},"id":3333,"name":"Identifier","src":"1084:4:17"}],"id":3334,"name":"IndexAccess","src":"1078:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3327,"type":"string calldata","value":"key"},"id":3335,"name":"Identifier","src":"1090:3:17"}],"id":3336,"name":"IndexAccess","src":"1078:16:17"}],"id":3337,"name":"Return","src":"1071:23:17"}],"id":3338,"name":"Block","src":"1061:40:17"}],"id":3339,"name":"FunctionDefinition","src":"974:127:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3357,"stateMutability":"pure","superFunction":3374,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3356,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3340,"name":"ElementaryTypeName","src":"1134:6:17"}],"id":3341,"name":"VariableDeclaration","src":"1134:18:17"}],"id":3342,"name":"ParameterList","src":"1133:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":3356,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3343,"name":"ElementaryTypeName","src":"1174:4:17"}],"id":3344,"name":"VariableDeclaration","src":"1174:4:17"}],"id":3345,"name":"ParameterList","src":"1173:6:17"},{"children":[{"attributes":{"functionReturnParameters":3345},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3341,"type":"bytes4","value":"interfaceID"},"id":3346,"name":"Identifier","src":"1197:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3282,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":3347,"name":"Identifier","src":"1212:17:17"}],"id":3348,"name":"BinaryOperation","src":"1197:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":3374,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4833,"type":"contract super TextResolver","value":"super"},"id":3349,"name":"Identifier","src":"1233:5:17"}],"id":3350,"name":"MemberAccess","src":"1233:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3341,"type":"bytes4","value":"interfaceID"},"id":3351,"name":"Identifier","src":"1257:11:17"}],"id":3352,"name":"FunctionCall","src":"1233:36:17"}],"id":3353,"name":"BinaryOperation","src":"1197:72:17"}],"id":3354,"name":"Return","src":"1190:79:17"}],"id":3355,"name":"Block","src":"1180:96:17"}],"id":3356,"name":"FunctionDefinition","src":"1107:169:17"}],"id":3357,"name":"ContractDefinition","src":"56:1222:17"}],"id":3358,"name":"SourceUnit","src":"0:1278:17"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[991]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":897,"name":"PragmaDirective","src":"772:24:18"},{"attributes":{"SourceUnit":1603,"absolutePath":"controller.sol","file":"../controller.sol","scope":992,"symbolAliases":[null],"unitAlias":""},"id":898,"name":"ImportDirective","src":"798:27:18"},{"attributes":{"SourceUnit":1037,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":992,"symbolAliases":[null],"unitAlias":""},"id":899,"name":"ImportDirective","src":"826:29:18"},{"attributes":{"contractDependencies":[1036],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[991,1036],"name":"Controllable","scope":992},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1036,"type":"contract ENSResolvable"},"id":900,"name":"UserDefinedTypeName","src":"980:13:18"}],"id":901,"name":"InheritanceSpecifier","src":"980:13:18"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":991,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":902,"name":"ElementaryTypeName","src":"1070:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":903,"name":"Literal","src":"1122:66:18"}],"id":904,"name":"VariableDeclaration","src":"1070:118:18"},{"attributes":{"constant":false,"name":"_controllerNode","scope":991,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":905,"name":"ElementaryTypeName","src":"1272:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":904,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":906,"name":"Identifier","src":"1306:24:18"}],"id":907,"name":"VariableDeclaration","src":"1272:58:18"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":991,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":924,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":908,"name":"ElementaryTypeName","src":"1571:7:18"}],"id":909,"name":"VariableDeclaration","src":"1571:24:18"}],"id":910,"name":"ParameterList","src":"1570:26:18"},{"attributes":{"parameters":[null]},"children":[],"id":911,"name":"ParameterList","src":"1606:0:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"bytes32","value":"_controllerNode_"},"id":912,"name":"Identifier","src":"1665:16:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":913,"name":"ElementaryTypeNameExpression","src":"1685:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":914,"name":"Literal","src":"1693:1:18"}],"id":915,"name":"FunctionCall","src":"1685:10:18"}],"id":916,"name":"BinaryOperation","src":"1665:30:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"bytes32","value":"_controllerNode"},"id":917,"name":"Identifier","src":"1711:15:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"bytes32","value":"_controllerNode_"},"id":918,"name":"Identifier","src":"1729:16:18"}],"id":919,"name":"Assignment","src":"1711:34:18"}],"id":920,"name":"ExpressionStatement","src":"1711:34:18"}],"id":921,"name":"Block","src":"1697:59:18"}],"id":922,"name":"IfStatement","src":"1661:95:18"}],"id":923,"name":"Block","src":"1606:156:18"}],"id":924,"name":"FunctionDefinition","src":"1559:203:18"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":925,"name":"ParameterList","src":"1849:2:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":926,"name":"Identifier","src":"1862:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":973,"type":"function (address) view returns (bool)","value":"_isController"},"id":927,"name":"Identifier","src":"1870:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":928,"name":"Identifier","src":"1884:3:18"}],"id":929,"name":"MemberAccess","src":"1884:10:18"}],"id":930,"name":"FunctionCall","src":"1870:25:18"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":931,"name":"Literal","src":"1897:28:18"}],"id":932,"name":"FunctionCall","src":"1862:64:18"}],"id":933,"name":"ExpressionStatement","src":"1862:64:18"},{"id":934,"name":"PlaceholderStatement","src":"1936:1:18"}],"id":935,"name":"Block","src":"1852:92:18"}],"id":936,"name":"ModifierDefinition","src":"1826:118:18"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":937,"name":"ParameterList","src":"2022:2:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":938,"name":"Identifier","src":"2035:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":990,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":939,"name":"Identifier","src":"2043:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":940,"name":"Identifier","src":"2052:3:18"}],"id":941,"name":"MemberAccess","src":"2052:10:18"}],"id":942,"name":"FunctionCall","src":"2043:20:18"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":943,"name":"Literal","src":"2065:24:18"}],"id":944,"name":"FunctionCall","src":"2035:55:18"}],"id":945,"name":"ExpressionStatement","src":"2035:55:18"},{"id":946,"name":"PlaceholderStatement","src":"2100:1:18"}],"id":947,"name":"Block","src":"2025:83:18"}],"id":948,"name":"ModifierDefinition","src":"2004:104:18"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":991,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":949,"name":"ParameterList","src":"2192:2:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":956,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":950,"name":"ElementaryTypeName","src":"2216:7:18"}],"id":951,"name":"VariableDeclaration","src":"2216:7:18"}],"id":952,"name":"ParameterList","src":"2215:9:18"},{"children":[{"attributes":{"functionReturnParameters":952},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"bytes32","value":"_controllerNode"},"id":953,"name":"Identifier","src":"2242:15:18"}],"id":954,"name":"Return","src":"2235:22:18"}],"id":955,"name":"Block","src":"2225:39:18"}],"id":956,"name":"FunctionDefinition","src":"2169:95:18"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":991,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":973,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":957,"name":"ElementaryTypeName","src":"2355:7:18"}],"id":958,"name":"VariableDeclaration","src":"2355:16:18"}],"id":959,"name":"ParameterList","src":"2354:18:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":973,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":960,"name":"ElementaryTypeName","src":"2396:4:18"}],"id":961,"name":"VariableDeclaration","src":"2396:4:18"}],"id":962,"name":"ParameterList","src":"2395:6:18"},{"children":[{"attributes":{"functionReturnParameters":962},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":1159,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"type(contract IController)","value":"IController"},"id":963,"name":"Identifier","src":"2419:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":964,"name":"Identifier","src":"2431:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"bytes32","value":"_controllerNode"},"id":965,"name":"Identifier","src":"2443:15:18"}],"id":966,"name":"FunctionCall","src":"2431:28:18"}],"id":967,"name":"FunctionCall","src":"2419:41:18"}],"id":968,"name":"MemberAccess","src":"2419:54:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":958,"type":"address","value":"_account"},"id":969,"name":"Identifier","src":"2474:8:18"}],"id":970,"name":"FunctionCall","src":"2419:64:18"}],"id":971,"name":"Return","src":"2412:71:18"}],"id":972,"name":"Block","src":"2402:88:18"}],"id":973,"name":"FunctionDefinition","src":"2332:158:18"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":991,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":990,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":974,"name":"ElementaryTypeName","src":"2572:7:18"}],"id":975,"name":"VariableDeclaration","src":"2572:16:18"}],"id":976,"name":"ParameterList","src":"2571:18:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":990,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":977,"name":"ElementaryTypeName","src":"2613:4:18"}],"id":978,"name":"VariableDeclaration","src":"2613:4:18"}],"id":979,"name":"ParameterList","src":"2612:6:18"},{"children":[{"attributes":{"functionReturnParameters":979},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":1166,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"type(contract IController)","value":"IController"},"id":980,"name":"Identifier","src":"2636:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":981,"name":"Identifier","src":"2648:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"bytes32","value":"_controllerNode"},"id":982,"name":"Identifier","src":"2660:15:18"}],"id":983,"name":"FunctionCall","src":"2648:28:18"}],"id":984,"name":"FunctionCall","src":"2636:41:18"}],"id":985,"name":"MemberAccess","src":"2636:49:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":975,"type":"address","value":"_account"},"id":986,"name":"Identifier","src":"2686:8:18"}],"id":987,"name":"FunctionCall","src":"2636:59:18"}],"id":988,"name":"Return","src":"2629:66:18"}],"id":989,"name":"Block","src":"2619:83:18"}],"id":990,"name":"FunctionDefinition","src":"2554:148:18"}],"id":991,"name":"ContractDefinition","src":"955:1749:18"}],"id":992,"name":"SourceUnit","src":"772:1933:18"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[1036]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":993,"name":"PragmaDirective","src":"773:24:19"},{"attributes":{"SourceUnit":1740,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":1037,"symbolAliases":[null],"unitAlias":""},"id":994,"name":"ImportDirective","src":"799:34:19"},{"attributes":{"SourceUnit":1914,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":1037,"symbolAliases":[null],"unitAlias":""},"id":995,"name":"ImportDirective","src":"834:45:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[1036],"name":"ENSResolvable","scope":1037},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":1036,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":996,"name":"ElementaryTypeName","src":"1109:7:19"}],"id":997,"name":"VariableDeclaration","src":"1109:28:19"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1036,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":1007,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":998,"name":"ElementaryTypeName","src":"1205:7:19"}],"id":999,"name":"VariableDeclaration","src":"1205:16:19"}],"id":1000,"name":"ParameterList","src":"1204:18:19"},{"attributes":{"parameters":[null]},"children":[],"id":1001,"name":"ParameterList","src":"1232:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"address","value":"_ensRegistry"},"id":1002,"name":"Identifier","src":"1242:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":999,"type":"address","value":"_ensReg_"},"id":1003,"name":"Identifier","src":"1257:8:19"}],"id":1004,"name":"Assignment","src":"1242:23:19"}],"id":1005,"name":"ExpressionStatement","src":"1242:23:19"}],"id":1006,"name":"Block","src":"1232:40:19"}],"id":1007,"name":"FunctionDefinition","src":"1193:79:19"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":1036,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1008,"name":"ParameterList","src":"1384:2:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":1015,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1009,"name":"ElementaryTypeName","src":"1410:7:19"}],"id":1010,"name":"VariableDeclaration","src":"1410:7:19"}],"id":1011,"name":"ParameterList","src":"1409:9:19"},{"children":[{"attributes":{"functionReturnParameters":1011},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"address","value":"_ensRegistry"},"id":1012,"name":"Identifier","src":"1436:12:19"}],"id":1013,"name":"Return","src":"1429:19:19"}],"id":1014,"name":"Block","src":"1419:36:19"}],"id":1015,"name":"FunctionDefinition","src":"1364:91:19"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":1036,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":1035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1016,"name":"ElementaryTypeName","src":"1652:7:19"}],"id":1017,"name":"VariableDeclaration","src":"1652:13:19"}],"id":1018,"name":"ParameterList","src":"1651:15:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":1035,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1019,"name":"ElementaryTypeName","src":"1690:7:19"}],"id":1020,"name":"VariableDeclaration","src":"1690:7:19"}],"id":1021,"name":"ParameterList","src":"1689:9:19"},{"children":[{"attributes":{"functionReturnParameters":1021},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":2288,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1913,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":1022,"name":"Identifier","src":"1716:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":1715,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1739,"type":"type(contract ENS)","value":"ENS"},"id":1023,"name":"Identifier","src":"1731:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":997,"type":"address","value":"_ensRegistry"},"id":1024,"name":"Identifier","src":"1735:12:19"}],"id":1025,"name":"FunctionCall","src":"1731:17:19"}],"id":1026,"name":"MemberAccess","src":"1731:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1017,"type":"bytes32","value":"_node"},"id":1027,"name":"Identifier","src":"1758:5:19"}],"id":1028,"name":"FunctionCall","src":"1731:33:19"}],"id":1029,"name":"FunctionCall","src":"1716:49:19"}],"id":1030,"name":"MemberAccess","src":"1716:54:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1017,"type":"bytes32","value":"_node"},"id":1031,"name":"Identifier","src":"1771:5:19"}],"id":1032,"name":"FunctionCall","src":"1716:61:19"}],"id":1033,"name":"Return","src":"1709:68:19"}],"id":1034,"name":"Block","src":"1699:85:19"}],"id":1035,"name":"FunctionDefinition","src":"1631:153:19"}],"id":1036,"name":"ContractDefinition","src":"1008:778:19"}],"id":1037,"name":"SourceUnit","src":"773:1014:19"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[2070]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1915,"name":"PragmaDirective","src":"767:24:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[2070],"name":"Ownable","scope":2071},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1921,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1916,"name":"ElementaryTypeName","src":"1199:7:20"}],"id":1917,"name":"VariableDeclaration","src":"1199:13:20"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1921,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1918,"name":"ElementaryTypeName","src":"1214:7:20"}],"id":1919,"name":"VariableDeclaration","src":"1214:11:20"}],"id":1920,"name":"ParameterList","src":"1198:28:20"}],"id":1921,"name":"EventDefinition","src":"1172:55:20"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":1925,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1922,"name":"ElementaryTypeName","src":"1254:7:20"}],"id":1923,"name":"VariableDeclaration","src":"1254:15:20"}],"id":1924,"name":"ParameterList","src":"1253:17:20"}],"id":1925,"name":"EventDefinition","src":"1232:39:20"},{"attributes":{"constant":false,"name":"_owner","scope":2070,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1926,"name":"ElementaryTypeName","src":"1277:15:20"}],"id":1927,"name":"VariableDeclaration","src":"1277:30:20"},{"attributes":{"constant":false,"name":"_isTransferable","scope":2070,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1928,"name":"ElementaryTypeName","src":"1313:4:20"}],"id":1929,"name":"VariableDeclaration","src":"1313:28:20"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2070,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":1960,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1930,"name":"ElementaryTypeName","src":"1476:15:20"}],"id":1931,"name":"VariableDeclaration","src":"1476:25:20"},{"attributes":{"constant":false,"name":"_transferable_","scope":1960,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1932,"name":"ElementaryTypeName","src":"1503:4:20"}],"id":1933,"name":"VariableDeclaration","src":"1503:19:20"}],"id":1934,"name":"ParameterList","src":"1475:48:20"},{"attributes":{"parameters":[null]},"children":[],"id":1935,"name":"ParameterList","src":"1533:0:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":1936,"name":"Identifier","src":"1543:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1931,"type":"address payable","value":"_account_"},"id":1937,"name":"Identifier","src":"1552:9:20"}],"id":1938,"name":"Assignment","src":"1543:18:20"}],"id":1939,"name":"ExpressionStatement","src":"1543:18:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":1940,"name":"Identifier","src":"1571:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1933,"type":"bool","value":"_transferable_"},"id":1941,"name":"Identifier","src":"1589:14:20"}],"id":1942,"name":"Assignment","src":"1571:32:20"}],"id":1943,"name":"ExpressionStatement","src":"1571:32:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":1944,"name":"Identifier","src":"1687:15:20"}],"id":1945,"name":"UnaryOperation","src":"1686:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1925,"type":"function (address)","value":"LockedOwnership"},"id":1946,"name":"Identifier","src":"1723:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1931,"type":"address payable","value":"_account_"},"id":1947,"name":"Identifier","src":"1739:9:20"}],"id":1948,"name":"FunctionCall","src":"1723:26:20"}],"id":1949,"name":"EmitStatement","src":"1718:31:20"}],"id":1950,"name":"Block","src":"1704:56:20"}],"id":1951,"name":"IfStatement","src":"1682:78:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1921,"type":"function (address,address)","value":"TransferredOwnership"},"id":1952,"name":"Identifier","src":"1774:20:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1953,"name":"ElementaryTypeNameExpression","src":"1795:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1954,"name":"Literal","src":"1803:1:20"}],"id":1955,"name":"FunctionCall","src":"1795:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1931,"type":"address payable","value":"_account_"},"id":1956,"name":"Identifier","src":"1807:9:20"}],"id":1957,"name":"FunctionCall","src":"1774:43:20"}],"id":1958,"name":"EmitStatement","src":"1769:48:20"}],"id":1959,"name":"Block","src":"1533:291:20"}],"id":1960,"name":"FunctionDefinition","src":"1464:360:20"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1961,"name":"ParameterList","src":"1919:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1962,"name":"Identifier","src":"1932:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2069,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":1963,"name":"Identifier","src":"1940:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":1964,"name":"Identifier","src":"1949:3:20"}],"id":1965,"name":"MemberAccess","src":"1949:10:20"}],"id":1966,"name":"FunctionCall","src":"1940:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":1967,"name":"Literal","src":"1962:24:20"}],"id":1968,"name":"FunctionCall","src":"1932:55:20"}],"id":1969,"name":"ExpressionStatement","src":"1932:55:20"},{"id":1970,"name":"PlaceholderStatement","src":"1997:1:20"}],"id":1971,"name":"Block","src":"1922:83:20"}],"id":1972,"name":"ModifierDefinition","src":"1901:104:20"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":2070,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2017,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1973,"name":"ElementaryTypeName","src":"2274:15:20"}],"id":1974,"name":"VariableDeclaration","src":"2274:24:20"},{"attributes":{"constant":false,"name":"_transferable","scope":2017,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1975,"name":"ElementaryTypeName","src":"2300:4:20"}],"id":1976,"name":"VariableDeclaration","src":"2300:18:20"}],"id":1977,"name":"ParameterList","src":"2273:46:20"},{"attributes":{"parameters":[null]},"children":[],"id":1980,"name":"ParameterList","src":"2339:0:20"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":1978,"name":"Identifier","src":"2329:9:20"}],"id":1979,"name":"ModifierInvocation","src":"2329:9:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1981,"name":"Identifier","src":"2404:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":1982,"name":"Identifier","src":"2412:15:20"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":1983,"name":"Literal","src":"2429:31:20"}],"id":1984,"name":"FunctionCall","src":"2404:57:20"}],"id":1985,"name":"ExpressionStatement","src":"2404:57:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":1986,"name":"Identifier","src":"2534:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"address payable","value":"_account"},"id":1987,"name":"Identifier","src":"2542:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1988,"name":"ElementaryTypeNameExpression","src":"2554:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1989,"name":"Literal","src":"2562:1:20"}],"id":1990,"name":"FunctionCall","src":"2554:10:20"}],"id":1991,"name":"BinaryOperation","src":"2542:22:20"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":1992,"name":"Literal","src":"2566:37:20"}],"id":1993,"name":"FunctionCall","src":"2534:70:20"}],"id":1994,"name":"ExpressionStatement","src":"2534:70:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":1995,"name":"Identifier","src":"2689:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1976,"type":"bool","value":"_transferable"},"id":1996,"name":"Identifier","src":"2707:13:20"}],"id":1997,"name":"Assignment","src":"2689:31:20"}],"id":1998,"name":"ExpressionStatement","src":"2689:31:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1976,"type":"bool","value":"_transferable"},"id":1999,"name":"Identifier","src":"2804:13:20"}],"id":2000,"name":"UnaryOperation","src":"2803:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1925,"type":"function (address)","value":"LockedOwnership"},"id":2001,"name":"Identifier","src":"2838:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"address payable","value":"_account"},"id":2002,"name":"Identifier","src":"2854:8:20"}],"id":2003,"name":"FunctionCall","src":"2838:25:20"}],"id":2004,"name":"EmitStatement","src":"2833:30:20"}],"id":2005,"name":"Block","src":"2819:55:20"}],"id":2006,"name":"IfStatement","src":"2799:75:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1921,"type":"function (address,address)","value":"TransferredOwnership"},"id":2007,"name":"Identifier","src":"2934:20:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2008,"name":"Identifier","src":"2955:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"address payable","value":"_account"},"id":2009,"name":"Identifier","src":"2963:8:20"}],"id":2010,"name":"FunctionCall","src":"2934:38:20"}],"id":2011,"name":"EmitStatement","src":"2929:43:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2012,"name":"Identifier","src":"3032:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"address payable","value":"_account"},"id":2013,"name":"Identifier","src":"3041:8:20"}],"id":2014,"name":"Assignment","src":"3032:17:20"}],"id":2015,"name":"ExpressionStatement","src":"3032:17:20"}],"id":2016,"name":"Block","src":"2339:717:20"}],"id":2017,"name":"FunctionDefinition","src":"2247:809:20"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":2070,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2018,"name":"ParameterList","src":"3196:2:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":2025,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2019,"name":"ElementaryTypeName","src":"3222:4:20"}],"id":2020,"name":"VariableDeclaration","src":"3222:4:20"}],"id":2021,"name":"ParameterList","src":"3221:6:20"},{"children":[{"attributes":{"functionReturnParameters":2021},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":2022,"name":"Identifier","src":"3245:15:20"}],"id":2023,"name":"Return","src":"3238:22:20"}],"id":2024,"name":"Block","src":"3228:39:20"}],"id":2025,"name":"FunctionDefinition","src":"3173:94:20"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":2070,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2026,"name":"ParameterList","src":"3569:2:20"},{"attributes":{"parameters":[null]},"children":[],"id":2029,"name":"ParameterList","src":"3591:0:20"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1972,"type":"modifier ()","value":"onlyOwner"},"id":2027,"name":"Identifier","src":"3581:9:20"}],"id":2028,"name":"ModifierInvocation","src":"3581:9:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":2030,"name":"Identifier","src":"3656:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"bool","value":"_isTransferable"},"id":2031,"name":"Identifier","src":"3664:15:20"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2032,"name":"Literal","src":"3681:31:20"}],"id":2033,"name":"FunctionCall","src":"3656:57:20"}],"id":2034,"name":"ExpressionStatement","src":"3656:57:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2035,"name":"Identifier","src":"3767:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2036,"name":"ElementaryTypeNameExpression","src":"3776:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2037,"name":"Literal","src":"3784:1:20"}],"id":2038,"name":"FunctionCall","src":"3776:10:20"}],"id":2039,"name":"Assignment","src":"3767:19:20"}],"id":2040,"name":"ExpressionStatement","src":"3767:19:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1921,"type":"function (address,address)","value":"TransferredOwnership"},"id":2041,"name":"Identifier","src":"3802:20:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2042,"name":"Identifier","src":"3823:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2043,"name":"ElementaryTypeNameExpression","src":"3831:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2044,"name":"Literal","src":"3839:1:20"}],"id":2045,"name":"FunctionCall","src":"3831:10:20"}],"id":2046,"name":"FunctionCall","src":"3802:40:20"}],"id":2047,"name":"EmitStatement","src":"3797:45:20"}],"id":2048,"name":"Block","src":"3591:258:20"}],"id":2049,"name":"FunctionDefinition","src":"3543:306:20"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":2070,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2050,"name":"ParameterList","src":"3946:2:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":2057,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2051,"name":"ElementaryTypeName","src":"3970:15:20"}],"id":2052,"name":"VariableDeclaration","src":"3970:15:20"}],"id":2053,"name":"ParameterList","src":"3969:17:20"},{"children":[{"attributes":{"functionReturnParameters":2053},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2054,"name":"Identifier","src":"4004:6:20"}],"id":2055,"name":"Return","src":"3997:13:20"}],"id":2056,"name":"Block","src":"3987:30:20"}],"id":2057,"name":"FunctionDefinition","src":"3932:85:20"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":2070,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":2069,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2058,"name":"ElementaryTypeName","src":"4141:7:20"}],"id":2059,"name":"VariableDeclaration","src":"4141:16:20"}],"id":2060,"name":"ParameterList","src":"4140:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":2069,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2061,"name":"ElementaryTypeName","src":"4182:4:20"}],"id":2062,"name":"VariableDeclaration","src":"4182:4:20"}],"id":2063,"name":"ParameterList","src":"4181:6:20"},{"children":[{"attributes":{"functionReturnParameters":2063},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"address","value":"_address"},"id":2064,"name":"Identifier","src":"4205:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"address payable","value":"_owner"},"id":2065,"name":"Identifier","src":"4217:6:20"}],"id":2066,"name":"BinaryOperation","src":"4205:18:20"}],"id":2067,"name":"Return","src":"4198:25:20"}],"id":2068,"name":"Block","src":"4188:42:20"}],"id":2069,"name":"FunctionDefinition","src":"4123:107:20"}],"id":2070,"name":"ContractDefinition","src":"1149:3083:20"}],"id":2071,"name":"SourceUnit","src":"767:3466:20"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[1076]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1038,"name":"PragmaDirective","src":"773:24:21"},{"attributes":{"SourceUnit":1149,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":1077,"symbolAliases":[null],"unitAlias":""},"id":1039,"name":"ImportDirective","src":"799:32:21"},{"attributes":{"SourceUnit":763,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":1077,"symbolAliases":[null],"unitAlias":""},"id":1040,"name":"ImportDirective","src":"832:36:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[1076],"name":"Transferrable","scope":1077},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":762,"type":"library SafeERC20"},"id":1041,"name":"UserDefinedTypeName","src":"996:9:21"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":1042,"name":"UserDefinedTypeName","src":"1010:5:21"}],"id":1043,"name":"UsingForDirective","src":"990:26:21"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":1076,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1075,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1044,"name":"ElementaryTypeName","src":"1389:15:21"}],"id":1045,"name":"VariableDeclaration","src":"1389:19:21"},{"attributes":{"constant":false,"name":"_asset","scope":1075,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1046,"name":"ElementaryTypeName","src":"1410:7:21"}],"id":1047,"name":"VariableDeclaration","src":"1410:14:21"},{"attributes":{"constant":false,"name":"_amount","scope":1075,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1048,"name":"ElementaryTypeName","src":"1426:7:21"}],"id":1049,"name":"VariableDeclaration","src":"1426:15:21"}],"id":1050,"name":"ParameterList","src":"1388:54:21"},{"attributes":{"parameters":[null]},"children":[],"id":1051,"name":"ParameterList","src":"1452:0:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1047,"type":"address","value":"_asset"},"id":1052,"name":"Identifier","src":"1510:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1053,"name":"ElementaryTypeNameExpression","src":"1520:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1054,"name":"Literal","src":"1528:1:21"}],"id":1055,"name":"FunctionCall","src":"1520:10:21"}],"id":1056,"name":"BinaryOperation","src":"1510:20:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1045,"type":"address payable","value":"_to"},"id":1057,"name":"Identifier","src":"1546:3:21"}],"id":1059,"name":"MemberAccess","src":"1546:12:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1049,"type":"uint256","value":"_amount"},"id":1060,"name":"Identifier","src":"1559:7:21"}],"id":1061,"name":"FunctionCall","src":"1546:21:21"}],"id":1062,"name":"ExpressionStatement","src":"1546:21:21"}],"id":1063,"name":"Block","src":"1532:46:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":576,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"type(contract ERC20)","value":"ERC20"},"id":1064,"name":"Identifier","src":"1598:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1047,"type":"address","value":"_asset"},"id":1065,"name":"Identifier","src":"1604:6:21"}],"id":1066,"name":"FunctionCall","src":"1598:13:21"}],"id":1067,"name":"MemberAccess","src":"1598:26:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1045,"type":"address payable","value":"_to"},"id":1068,"name":"Identifier","src":"1625:3:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1049,"type":"uint256","value":"_amount"},"id":1069,"name":"Identifier","src":"1630:7:21"}],"id":1070,"name":"FunctionCall","src":"1598:40:21"}],"id":1071,"name":"ExpressionStatement","src":"1598:40:21"}],"id":1072,"name":"Block","src":"1584:65:21"}],"id":1073,"name":"IfStatement","src":"1506:143:21"}],"id":1074,"name":"Block","src":"1452:203:21"}],"id":1075,"name":"FunctionDefinition","src":"1366:289:21"}],"id":1076,"name":"ContractDefinition","src":"961:696:21"}],"id":1077,"name":"SourceUnit","src":"773:885:21"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[19],"Licence":[543]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"767:24:22"},{"attributes":{"SourceUnit":896,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"793:34:22"},{"attributes":{"SourceUnit":763,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"828:35:22"},{"attributes":{"SourceUnit":992,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"864:38:22"},{"attributes":{"SourceUnit":1037,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"903:39:22"},{"attributes":{"SourceUnit":1077,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":544,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"943:39:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[19],"name":"ILicence","scope":544},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":19,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":13,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":8,"name":"VariableDeclaration","src":"1125:7:22"},{"attributes":{"constant":false,"name":"","scope":13,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9,"name":"ElementaryTypeName","src":"1134:7:22"}],"id":10,"name":"VariableDeclaration","src":"1134:7:22"}],"id":11,"name":"ParameterList","src":"1124:18:22"},{"attributes":{"parameters":[null]},"children":[],"id":12,"name":"ParameterList","src":"1159:0:22"}],"id":13,"name":"FunctionDefinition","src":"1111:49:22"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":19,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":18,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14,"name":"ElementaryTypeName","src":"1195:7:22"}],"id":15,"name":"VariableDeclaration","src":"1195:7:22"}],"id":16,"name":"ParameterList","src":"1194:9:22"},{"attributes":{"parameters":[null]},"children":[],"id":17,"name":"ParameterList","src":"1212:0:22"}],"id":18,"name":"FunctionDefinition","src":"1166:47:22"}],"id":19,"name":"ContractDefinition","src":"1086:129:22"},{"attributes":{"contractDependencies":[991,1036,1076],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[543,991,1036,1076],"name":"Licence","scope":544},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":1076,"type":"contract Transferrable"},"id":20,"name":"UserDefinedTypeName","src":"1401:13:22"}],"id":21,"name":"InheritanceSpecifier","src":"1401:13:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":1036,"type":"contract ENSResolvable"},"id":22,"name":"UserDefinedTypeName","src":"1416:13:22"}],"id":23,"name":"InheritanceSpecifier","src":"1416:13:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":991,"type":"contract Controllable"},"id":24,"name":"UserDefinedTypeName","src":"1431:12:22"}],"id":25,"name":"InheritanceSpecifier","src":"1431:12:22"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":895,"type":"library SafeMath"},"id":26,"name":"UserDefinedTypeName","src":"1456:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":27,"name":"ElementaryTypeName","src":"1469:7:22"}],"id":28,"name":"UsingForDirective","src":"1450:27:22"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":762,"type":"library SafeERC20"},"id":29,"name":"UserDefinedTypeName","src":"1488:9:22"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":1148,"type":"contract ERC20"},"id":30,"name":"UserDefinedTypeName","src":"1502:5:22"}],"id":31,"name":"UsingForDirective","src":"1482:26:22"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":35,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":32,"name":"ElementaryTypeName","src":"1614:7:22"}],"id":33,"name":"VariableDeclaration","src":"1614:15:22"}],"id":34,"name":"ParameterList","src":"1613:17:22"}],"id":35,"name":"EventDefinition","src":"1590:41:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":39,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":36,"name":"ElementaryTypeName","src":"1661:7:22"}],"id":37,"name":"VariableDeclaration","src":"1661:17:22"}],"id":38,"name":"ParameterList","src":"1660:19:22"}],"id":39,"name":"EventDefinition","src":"1636:44:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":43,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":40,"name":"ElementaryTypeName","src":"1710:7:22"}],"id":41,"name":"VariableDeclaration","src":"1710:18:22"}],"id":42,"name":"ParameterList","src":"1709:20:22"}],"id":43,"name":"EventDefinition","src":"1685:45:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":47,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":44,"name":"ElementaryTypeName","src":"1767:7:22"}],"id":45,"name":"VariableDeclaration","src":"1767:15:22"}],"id":46,"name":"ParameterList","src":"1766:17:22"}],"id":47,"name":"EventDefinition","src":"1735:49:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":51,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":48,"name":"ElementaryTypeName","src":"1816:7:22"}],"id":49,"name":"VariableDeclaration","src":"1816:18:22"}],"id":50,"name":"ParameterList","src":"1815:20:22"}],"id":51,"name":"EventDefinition","src":"1789:47:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":61,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":52,"name":"ElementaryTypeName","src":"1873:7:22"}],"id":53,"name":"VariableDeclaration","src":"1873:13:22"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":61,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":54,"name":"ElementaryTypeName","src":"1888:7:22"}],"id":55,"name":"VariableDeclaration","src":"1888:11:22"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":61,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":56,"name":"ElementaryTypeName","src":"1901:7:22"}],"id":57,"name":"VariableDeclaration","src":"1901:14:22"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":61,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":58,"name":"ElementaryTypeName","src":"1917:7:22"}],"id":59,"name":"VariableDeclaration","src":"1917:15:22"}],"id":60,"name":"ParameterList","src":"1872:61:22"}],"id":61,"name":"EventDefinition","src":"1842:92:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":71,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":62,"name":"ElementaryTypeName","src":"1970:7:22"}],"id":63,"name":"VariableDeclaration","src":"1970:13:22"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":71,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":64,"name":"ElementaryTypeName","src":"1985:7:22"}],"id":65,"name":"VariableDeclaration","src":"1985:11:22"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":71,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":66,"name":"ElementaryTypeName","src":"1998:7:22"}],"id":67,"name":"VariableDeclaration","src":"1998:14:22"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":71,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":68,"name":"ElementaryTypeName","src":"2014:7:22"}],"id":69,"name":"VariableDeclaration","src":"2014:15:22"}],"id":70,"name":"ParameterList","src":"1969:61:22"}],"id":71,"name":"EventDefinition","src":"1939:92:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":79,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":72,"name":"ElementaryTypeName","src":"2051:7:22"}],"id":73,"name":"VariableDeclaration","src":"2051:11:22"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":79,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":74,"name":"ElementaryTypeName","src":"2064:7:22"}],"id":75,"name":"VariableDeclaration","src":"2064:14:22"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":79,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":76,"name":"ElementaryTypeName","src":"2080:7:22"}],"id":77,"name":"VariableDeclaration","src":"2080:15:22"}],"id":78,"name":"ParameterList","src":"2050:46:22"}],"id":79,"name":"EventDefinition","src":"2037:60:22"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":543,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":80,"name":"ElementaryTypeName","src":"2209:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":81,"name":"Literal","src":"2252:4:22"}],"id":82,"name":"VariableDeclaration","src":"2209:47:22"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":543,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":83,"name":"ElementaryTypeName","src":"2262:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":84,"name":"Literal","src":"2305:1:22"}],"id":85,"name":"VariableDeclaration","src":"2262:44:22"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":543,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":86,"name":"ElementaryTypeName","src":"2313:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":87,"name":"Literal","src":"2351:42:22"}],"id":88,"name":"VariableDeclaration","src":"2313:80:22"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":543,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":89,"name":"ElementaryTypeName","src":"2433:15:22"}],"id":90,"name":"VariableDeclaration","src":"2433:36:22"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":543,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":91,"name":"ElementaryTypeName","src":"2475:15:22"}],"id":92,"name":"VariableDeclaration","src":"2475:36:22"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":543,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":93,"name":"ElementaryTypeName","src":"2517:7:22"}],"id":94,"name":"VariableDeclaration","src":"2517:27:22"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":543,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":95,"name":"ElementaryTypeName","src":"2551:4:22"}],"id":96,"name":"VariableDeclaration","src":"2551:31:22"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":543,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":97,"name":"ElementaryTypeName","src":"2588:4:22"}],"id":98,"name":"VariableDeclaration","src":"2588:31:22"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":543,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":99,"name":"ElementaryTypeName","src":"2625:4:22"}],"id":100,"name":"VariableDeclaration","src":"2625:30:22"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":543,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":101,"name":"ElementaryTypeName","src":"2661:4:22"}],"id":102,"name":"VariableDeclaration","src":"2661:38:22"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":543,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":103,"name":"ElementaryTypeName","src":"2853:7:22"}],"id":104,"name":"VariableDeclaration","src":"2853:36:22"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":105,"name":"ParameterList","src":"2990:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":106,"name":"Identifier","src":"3003:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":107,"name":"Identifier","src":"3011:3:22"}],"id":108,"name":"MemberAccess","src":"3011:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":94,"type":"address","value":"_licenceDAO"},"id":109,"name":"Identifier","src":"3025:11:22"}],"id":110,"name":"BinaryOperation","src":"3011:25:22"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":111,"name":"Literal","src":"3038:26:22"}],"id":112,"name":"FunctionCall","src":"3003:62:22"}],"id":113,"name":"ExpressionStatement","src":"3003:62:22"},{"id":114,"name":"PlaceholderStatement","src":"3075:1:22"}],"id":115,"name":"Block","src":"2993:90:22"}],"id":116,"name":"ModifierDefinition","src":"2974:109:22"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":172,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":117,"name":"ElementaryTypeName","src":"3628:7:22"}],"id":118,"name":"VariableDeclaration","src":"3628:17:22"},{"attributes":{"constant":false,"name":"_float_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":119,"name":"ElementaryTypeName","src":"3647:15:22"}],"id":120,"name":"VariableDeclaration","src":"3647:23:22"},{"attributes":{"constant":false,"name":"_holder_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":121,"name":"ElementaryTypeName","src":"3672:15:22"}],"id":122,"name":"VariableDeclaration","src":"3672:24:22"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":123,"name":"ElementaryTypeName","src":"3698:7:22"}],"id":124,"name":"VariableDeclaration","src":"3698:20:22"},{"attributes":{"constant":false,"name":"_ens_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":125,"name":"ElementaryTypeName","src":"3720:7:22"}],"id":126,"name":"VariableDeclaration","src":"3720:13:22"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":172,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":127,"name":"ElementaryTypeName","src":"3735:7:22"}],"id":128,"name":"VariableDeclaration","src":"3735:24:22"}],"id":129,"name":"ParameterList","src":"3627:133:22"},{"attributes":{"parameters":[null]},"children":[],"id":136,"name":"ParameterList","src":"3848:0:22"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1036,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":130,"name":"Identifier","src":"3784:13:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":126,"type":"address","value":"_ens_"},"id":131,"name":"Identifier","src":"3798:5:22"}],"id":132,"name":"ModifierInvocation","src":"3784:20:22"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":991,"type":"type(contract Controllable)","value":"Controllable"},"id":133,"name":"Identifier","src":"3813:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":128,"type":"bytes32","value":"_controllerNode_"},"id":134,"name":"Identifier","src":"3826:16:22"}],"id":135,"name":"ModifierInvocation","src":"3813:30:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":137,"name":"Identifier","src":"3858:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":138,"name":"Identifier","src":"3866:16:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"uint256","value":"_licence_"},"id":139,"name":"Identifier","src":"3886:9:22"}],"id":140,"name":"BinaryOperation","src":"3866:29:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"uint256","value":"_licence_"},"id":141,"name":"Identifier","src":"3899:9:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":82,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":142,"name":"Identifier","src":"3912:16:22"}],"id":143,"name":"BinaryOperation","src":"3899:29:22"}],"id":144,"name":"BinaryOperation","src":"3866:62:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":145,"name":"Literal","src":"3930:29:22"}],"id":146,"name":"FunctionCall","src":"3858:102:22"}],"id":147,"name":"ExpressionStatement","src":"3858:102:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"uint256","value":"_licenceAmountScaled"},"id":148,"name":"Identifier","src":"3970:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"uint256","value":"_licence_"},"id":149,"name":"Identifier","src":"3993:9:22"}],"id":150,"name":"Assignment","src":"3970:32:22"}],"id":151,"name":"ExpressionStatement","src":"3970:32:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":152,"name":"Identifier","src":"4012:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"address payable","value":"_float_"},"id":153,"name":"Identifier","src":"4027:7:22"}],"id":154,"name":"Assignment","src":"4012:22:22"}],"id":155,"name":"ExpressionStatement","src":"4012:22:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":156,"name":"Identifier","src":"4044:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"address payable","value":"_holder_"},"id":157,"name":"Identifier","src":"4059:8:22"}],"id":158,"name":"Assignment","src":"4044:23:22"}],"id":159,"name":"ExpressionStatement","src":"4044:23:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"address","value":"_tknAddress_"},"id":160,"name":"Identifier","src":"4081:12:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":161,"name":"ElementaryTypeNameExpression","src":"4097:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":162,"name":"Literal","src":"4105:1:22"}],"id":163,"name":"FunctionCall","src":"4097:10:22"}],"id":164,"name":"BinaryOperation","src":"4081:26:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_tknContractAddress"},"id":165,"name":"Identifier","src":"4123:19:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"address","value":"_tknAddress_"},"id":166,"name":"Identifier","src":"4145:12:22"}],"id":167,"name":"Assignment","src":"4123:34:22"}],"id":168,"name":"ExpressionStatement","src":"4123:34:22"}],"id":169,"name":"Block","src":"4109:59:22"}],"id":170,"name":"IfStatement","src":"4077:91:22"}],"id":171,"name":"Block","src":"3848:326:22"}],"id":172,"name":"FunctionDefinition","src":"3616:558:22"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":543,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":173,"name":"ParameterList","src":"4290:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":174,"name":"ParameterList","src":"4310:0:22"},{"attributes":{"statements":[null]},"children":[],"id":175,"name":"Block","src":"4310:2:22"}],"id":176,"name":"FunctionDefinition","src":"4282:30:22"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":177,"name":"ParameterList","src":"4503:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":178,"name":"ElementaryTypeName","src":"4529:7:22"}],"id":179,"name":"VariableDeclaration","src":"4529:7:22"}],"id":180,"name":"ParameterList","src":"4528:9:22"},{"children":[{"attributes":{"functionReturnParameters":180},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"uint256","value":"_licenceAmountScaled"},"id":181,"name":"Identifier","src":"4555:20:22"}],"id":182,"name":"Return","src":"4548:27:22"}],"id":183,"name":"Block","src":"4538:44:22"}],"id":184,"name":"FunctionDefinition","src":"4475:107:22"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":185,"name":"ParameterList","src":"4749:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":192,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":186,"name":"ElementaryTypeName","src":"4775:7:22"}],"id":187,"name":"VariableDeclaration","src":"4775:7:22"}],"id":188,"name":"ParameterList","src":"4774:9:22"},{"children":[{"attributes":{"functionReturnParameters":188},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":189,"name":"Identifier","src":"4801:12:22"}],"id":190,"name":"Return","src":"4794:19:22"}],"id":191,"name":"Block","src":"4784:36:22"}],"id":192,"name":"FunctionDefinition","src":"4729:91:22"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":193,"name":"ParameterList","src":"4970:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":200,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":194,"name":"ElementaryTypeName","src":"4996:7:22"}],"id":195,"name":"VariableDeclaration","src":"4996:7:22"}],"id":196,"name":"ParameterList","src":"4995:9:22"},{"children":[{"attributes":{"functionReturnParameters":196},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":197,"name":"Identifier","src":"5022:12:22"}],"id":198,"name":"Return","src":"5015:19:22"}],"id":199,"name":"Block","src":"5005:36:22"}],"id":200,"name":"FunctionDefinition","src":"4950:91:22"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":201,"name":"ParameterList","src":"5172:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":208,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":202,"name":"ElementaryTypeName","src":"5198:7:22"}],"id":203,"name":"VariableDeclaration","src":"5198:7:22"}],"id":204,"name":"ParameterList","src":"5197:9:22"},{"children":[{"attributes":{"functionReturnParameters":204},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":94,"type":"address","value":"_licenceDAO"},"id":205,"name":"Identifier","src":"5224:11:22"}],"id":206,"name":"Return","src":"5217:18:22"}],"id":207,"name":"Block","src":"5207:35:22"}],"id":208,"name":"FunctionDefinition","src":"5153:89:22"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":543,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":209,"name":"ParameterList","src":"5369:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":216,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":210,"name":"ElementaryTypeName","src":"5395:7:22"}],"id":211,"name":"VariableDeclaration","src":"5395:7:22"}],"id":212,"name":"ParameterList","src":"5394:9:22"},{"children":[{"attributes":{"functionReturnParameters":212},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_tknContractAddress"},"id":213,"name":"Identifier","src":"5421:19:22"}],"id":214,"name":"Return","src":"5414:26:22"}],"id":215,"name":"Block","src":"5404:43:22"}],"id":216,"name":"FunctionDefinition","src":"5342:105:22"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":217,"name":"ParameterList","src":"5571:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":220,"name":"ParameterList","src":"5593:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":218,"name":"Identifier","src":"5583:9:22"}],"id":219,"name":"ModifierInvocation","src":"5583:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":96,"type":"bool","value":"_lockedCryptoFloat"},"id":221,"name":"Identifier","src":"5603:18:22"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":222,"name":"Literal","src":"5624:4:22"}],"id":223,"name":"Assignment","src":"5603:25:22"}],"id":224,"name":"ExpressionStatement","src":"5603:25:22"}],"id":225,"name":"Block","src":"5593:42:22"}],"id":226,"name":"FunctionDefinition","src":"5553:82:22"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":227,"name":"ParameterList","src":"5760:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":230,"name":"ParameterList","src":"5782:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":228,"name":"Identifier","src":"5772:9:22"}],"id":229,"name":"ModifierInvocation","src":"5772:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":98,"type":"bool","value":"_lockedTokenHolder"},"id":231,"name":"Identifier","src":"5792:18:22"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":232,"name":"Literal","src":"5813:4:22"}],"id":233,"name":"Assignment","src":"5792:25:22"}],"id":234,"name":"ExpressionStatement","src":"5792:25:22"}],"id":235,"name":"Block","src":"5782:42:22"}],"id":236,"name":"FunctionDefinition","src":"5741:83:22"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":237,"name":"ParameterList","src":"5945:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":240,"name":"ParameterList","src":"5967:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":238,"name":"Identifier","src":"5957:9:22"}],"id":239,"name":"ModifierInvocation","src":"5957:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":100,"type":"bool","value":"_lockedLicenceDAO"},"id":241,"name":"Identifier","src":"5977:17:22"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":242,"name":"Literal","src":"5997:4:22"}],"id":243,"name":"Assignment","src":"5977:24:22"}],"id":244,"name":"ExpressionStatement","src":"5977:24:22"}],"id":245,"name":"Block","src":"5967:41:22"}],"id":246,"name":"FunctionDefinition","src":"5922:86:22"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":247,"name":"ParameterList","src":"6137:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":250,"name":"ParameterList","src":"6159:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":248,"name":"Identifier","src":"6149:9:22"}],"id":249,"name":"ModifierInvocation","src":"6149:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":102,"type":"bool","value":"_lockedTKNContractAddress"},"id":251,"name":"Identifier","src":"6169:25:22"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":252,"name":"Literal","src":"6197:4:22"}],"id":253,"name":"Assignment","src":"6169:32:22"}],"id":254,"name":"ExpressionStatement","src":"6169:32:22"}],"id":255,"name":"Block","src":"6159:49:22"}],"id":256,"name":"FunctionDefinition","src":"6106:102:22"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":279,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":257,"name":"ElementaryTypeName","src":"6359:15:22"}],"id":258,"name":"VariableDeclaration","src":"6359:25:22"}],"id":259,"name":"ParameterList","src":"6358:27:22"},{"attributes":{"parameters":[null]},"children":[],"id":262,"name":"ParameterList","src":"6405:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":260,"name":"Identifier","src":"6395:9:22"}],"id":261,"name":"ModifierInvocation","src":"6395:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":263,"name":"Identifier","src":"6415:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":518,"type":"function () view returns (bool)","value":"floatLocked"},"id":264,"name":"Identifier","src":"6424:11:22"}],"id":265,"name":"FunctionCall","src":"6424:13:22"}],"id":266,"name":"UnaryOperation","src":"6423:14:22"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":267,"name":"Literal","src":"6439:17:22"}],"id":268,"name":"FunctionCall","src":"6415:42:22"}],"id":269,"name":"ExpressionStatement","src":"6415:42:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":270,"name":"Identifier","src":"6467:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":258,"type":"address payable","value":"_newFloat"},"id":271,"name":"Identifier","src":"6482:9:22"}],"id":272,"name":"Assignment","src":"6467:24:22"}],"id":273,"name":"ExpressionStatement","src":"6467:24:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":274,"name":"Identifier","src":"6506:18:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":258,"type":"address payable","value":"_newFloat"},"id":275,"name":"Identifier","src":"6525:9:22"}],"id":276,"name":"FunctionCall","src":"6506:29:22"}],"id":277,"name":"EmitStatement","src":"6501:34:22"}],"id":278,"name":"Block","src":"6405:137:22"}],"id":279,"name":"FunctionDefinition","src":"6338:204:22"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":302,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":280,"name":"ElementaryTypeName","src":"6700:15:22"}],"id":281,"name":"VariableDeclaration","src":"6700:26:22"}],"id":282,"name":"ParameterList","src":"6699:28:22"},{"attributes":{"parameters":[null]},"children":[],"id":285,"name":"ParameterList","src":"6747:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":283,"name":"Identifier","src":"6737:9:22"}],"id":284,"name":"ModifierInvocation","src":"6737:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":286,"name":"Identifier","src":"6757:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":526,"type":"function () view returns (bool)","value":"holderLocked"},"id":287,"name":"Identifier","src":"6766:12:22"}],"id":288,"name":"FunctionCall","src":"6766:14:22"}],"id":289,"name":"UnaryOperation","src":"6765:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":290,"name":"Literal","src":"6782:27:22"}],"id":291,"name":"FunctionCall","src":"6757:53:22"}],"id":292,"name":"ExpressionStatement","src":"6757:53:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":293,"name":"Identifier","src":"6820:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":281,"type":"address payable","value":"_newHolder"},"id":294,"name":"Identifier","src":"6835:10:22"}],"id":295,"name":"Assignment","src":"6820:25:22"}],"id":296,"name":"ExpressionStatement","src":"6820:25:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"function (address)","value":"UpdatedTokenHolder"},"id":297,"name":"Identifier","src":"6860:18:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":281,"type":"address payable","value":"_newHolder"},"id":298,"name":"Identifier","src":"6879:10:22"}],"id":299,"name":"FunctionCall","src":"6860:30:22"}],"id":300,"name":"EmitStatement","src":"6855:35:22"}],"id":301,"name":"Block","src":"6747:150:22"}],"id":302,"name":"FunctionDefinition","src":"6678:219:22"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":325,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":303,"name":"ElementaryTypeName","src":"7053:7:22"}],"id":304,"name":"VariableDeclaration","src":"7053:15:22"}],"id":305,"name":"ParameterList","src":"7052:17:22"},{"attributes":{"parameters":[null]},"children":[],"id":308,"name":"ParameterList","src":"7089:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":306,"name":"Identifier","src":"7079:9:22"}],"id":307,"name":"ModifierInvocation","src":"7079:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":309,"name":"Identifier","src":"7099:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":310,"name":"Identifier","src":"7108:16:22"}],"id":311,"name":"FunctionCall","src":"7108:18:22"}],"id":312,"name":"UnaryOperation","src":"7107:19:22"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":313,"name":"Literal","src":"7128:15:22"}],"id":314,"name":"FunctionCall","src":"7099:45:22"}],"id":315,"name":"ExpressionStatement","src":"7099:45:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":94,"type":"address","value":"_licenceDAO"},"id":316,"name":"Identifier","src":"7154:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":304,"type":"address","value":"_newDAO"},"id":317,"name":"Identifier","src":"7168:7:22"}],"id":318,"name":"Assignment","src":"7154:21:22"}],"id":319,"name":"ExpressionStatement","src":"7154:21:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":320,"name":"Identifier","src":"7190:17:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":304,"type":"address","value":"_newDAO"},"id":321,"name":"Identifier","src":"7208:7:22"}],"id":322,"name":"FunctionCall","src":"7190:26:22"}],"id":323,"name":"EmitStatement","src":"7185:31:22"}],"id":324,"name":"Block","src":"7089:134:22"}],"id":325,"name":"FunctionDefinition","src":"7027:196:22"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":348,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":326,"name":"ElementaryTypeName","src":"7388:7:22"}],"id":327,"name":"VariableDeclaration","src":"7388:15:22"}],"id":328,"name":"ParameterList","src":"7387:17:22"},{"attributes":{"parameters":[null]},"children":[],"id":331,"name":"ParameterList","src":"7424:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":329,"name":"Identifier","src":"7414:9:22"}],"id":330,"name":"ModifierInvocation","src":"7414:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":332,"name":"Identifier","src":"7434:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":542,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":333,"name":"Identifier","src":"7443:24:22"}],"id":334,"name":"FunctionCall","src":"7443:26:22"}],"id":335,"name":"UnaryOperation","src":"7442:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":336,"name":"Literal","src":"7471:15:22"}],"id":337,"name":"FunctionCall","src":"7434:53:22"}],"id":338,"name":"ExpressionStatement","src":"7434:53:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_tknContractAddress"},"id":339,"name":"Identifier","src":"7497:19:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":327,"type":"address","value":"_newTKN"},"id":340,"name":"Identifier","src":"7519:7:22"}],"id":341,"name":"Assignment","src":"7497:29:22"}],"id":342,"name":"ExpressionStatement","src":"7497:29:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":343,"name":"Identifier","src":"7541:25:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":327,"type":"address","value":"_newTKN"},"id":344,"name":"Identifier","src":"7567:7:22"}],"id":345,"name":"FunctionCall","src":"7541:34:22"}],"id":346,"name":"EmitStatement","src":"7536:39:22"}],"id":347,"name":"Block","src":"7424:158:22"}],"id":348,"name":"FunctionDefinition","src":"7354:228:22"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":375,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":349,"name":"ElementaryTypeName","src":"7752:7:22"}],"id":350,"name":"VariableDeclaration","src":"7752:18:22"}],"id":351,"name":"ParameterList","src":"7751:20:22"},{"attributes":{"parameters":[null]},"children":[],"id":354,"name":"ParameterList","src":"7789:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":116,"type":"modifier ()","value":"onlyDAO"},"id":352,"name":"Identifier","src":"7781:7:22"}],"id":353,"name":"ModifierInvocation","src":"7781:7:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":355,"name":"Identifier","src":"7799:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":356,"name":"Identifier","src":"7807:16:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"_newAmount"},"id":357,"name":"Identifier","src":"7827:10:22"}],"id":358,"name":"BinaryOperation","src":"7807:30:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"_newAmount"},"id":359,"name":"Identifier","src":"7841:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":82,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":360,"name":"Identifier","src":"7855:16:22"}],"id":361,"name":"BinaryOperation","src":"7841:30:22"}],"id":362,"name":"BinaryOperation","src":"7807:64:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":363,"name":"Literal","src":"7873:29:22"}],"id":364,"name":"FunctionCall","src":"7799:104:22"}],"id":365,"name":"ExpressionStatement","src":"7799:104:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"uint256","value":"_licenceAmountScaled"},"id":366,"name":"Identifier","src":"7913:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"_newAmount"},"id":367,"name":"Identifier","src":"7936:10:22"}],"id":368,"name":"Assignment","src":"7913:33:22"}],"id":369,"name":"ExpressionStatement","src":"7913:33:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":51,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":370,"name":"Identifier","src":"7961:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":350,"type":"uint256","value":"_newAmount"},"id":371,"name":"Identifier","src":"7982:10:22"}],"id":372,"name":"FunctionCall","src":"7961:32:22"}],"id":373,"name":"EmitStatement","src":"7956:37:22"}],"id":374,"name":"Block","src":"7789:211:22"}],"id":375,"name":"FunctionDefinition","src":"7723:277:22"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":543,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":486,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":376,"name":"ElementaryTypeName","src":"8286:7:22"}],"id":377,"name":"VariableDeclaration","src":"8286:14:22"},{"attributes":{"constant":false,"name":"_amount","scope":486,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":378,"name":"ElementaryTypeName","src":"8302:7:22"}],"id":379,"name":"VariableDeclaration","src":"8302:15:22"}],"id":380,"name":"ParameterList","src":"8285:33:22"},{"attributes":{"parameters":[null]},"children":[],"id":381,"name":"ParameterList","src":"8336:0:22"},{"children":[{"attributes":{"assignments":[383]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":485,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":382,"name":"ElementaryTypeName","src":"8346:7:22"}],"id":383,"name":"VariableDeclaration","src":"8346:18:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"uint256","value":"_amount"},"id":384,"name":"Identifier","src":"8367:7:22"}],"id":385,"name":"VariableDeclarationStatement","src":"8346:28:22"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":386,"name":"Identifier","src":"8433:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_tknContractAddress"},"id":387,"name":"Identifier","src":"8443:19:22"}],"id":388,"name":"BinaryOperation","src":"8433:29:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":601,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"type(contract ERC20)","value":"ERC20"},"id":389,"name":"Identifier","src":"8478:5:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":390,"name":"Identifier","src":"8484:6:22"}],"id":391,"name":"FunctionCall","src":"8478:13:22"}],"id":392,"name":"MemberAccess","src":"8478:30:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":393,"name":"Identifier","src":"8509:3:22"}],"id":394,"name":"MemberAccess","src":"8509:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":395,"name":"Identifier","src":"8521:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":396,"name":"Identifier","src":"8535:10:22"}],"id":397,"name":"FunctionCall","src":"8478:68:22"}],"id":398,"name":"ExpressionStatement","src":"8478:68:22"}],"id":399,"name":"Block","src":"8464:93:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":400,"name":"Identifier","src":"8577:10:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":873,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":848,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"uint256","value":"_amount"},"id":401,"name":"Identifier","src":"8590:7:22"}],"id":402,"name":"MemberAccess","src":"8590:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":82,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":403,"name":"Identifier","src":"8602:16:22"}],"id":404,"name":"FunctionCall","src":"8590:29:22"}],"id":405,"name":"MemberAccess","src":"8590:33:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"uint256","value":"_licenceAmountScaled"},"id":406,"name":"Identifier","src":"8624:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":82,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":407,"name":"Identifier","src":"8647:16:22"}],"id":408,"name":"BinaryOperation","src":"8624:39:22"}],"id":409,"name":"FunctionCall","src":"8590:74:22"}],"id":410,"name":"Assignment","src":"8577:87:22"}],"id":411,"name":"ExpressionStatement","src":"8577:87:22"},{"attributes":{"assignments":[413]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":475,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":412,"name":"ElementaryTypeName","src":"8678:7:22"}],"id":413,"name":"VariableDeclaration","src":"8678:21:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":814,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"uint256","value":"_amount"},"id":414,"name":"Identifier","src":"8702:7:22"}],"id":415,"name":"MemberAccess","src":"8702:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":416,"name":"Identifier","src":"8714:10:22"}],"id":417,"name":"FunctionCall","src":"8702:23:22"}],"id":418,"name":"VariableDeclarationStatement","src":"8678:47:22"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":419,"name":"Identifier","src":"8744:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":420,"name":"ElementaryTypeNameExpression","src":"8754:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":421,"name":"Literal","src":"8762:1:22"}],"id":422,"name":"FunctionCall","src":"8754:10:22"}],"id":423,"name":"BinaryOperation","src":"8744:20:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":601,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"type(contract ERC20)","value":"ERC20"},"id":424,"name":"Identifier","src":"8784:5:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":425,"name":"Identifier","src":"8790:6:22"}],"id":426,"name":"FunctionCall","src":"8784:13:22"}],"id":427,"name":"MemberAccess","src":"8784:30:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":428,"name":"Identifier","src":"8815:3:22"}],"id":429,"name":"MemberAccess","src":"8815:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":430,"name":"Identifier","src":"8827:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":413,"type":"uint256","value":"licenceAmount"},"id":431,"name":"Identifier","src":"8841:13:22"}],"id":432,"name":"FunctionCall","src":"8784:71:22"}],"id":433,"name":"ExpressionStatement","src":"8784:71:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":601,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"type(contract ERC20)","value":"ERC20"},"id":434,"name":"Identifier","src":"8873:5:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":435,"name":"Identifier","src":"8879:6:22"}],"id":436,"name":"FunctionCall","src":"8873:13:22"}],"id":437,"name":"MemberAccess","src":"8873:30:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":438,"name":"Identifier","src":"8904:3:22"}],"id":439,"name":"MemberAccess","src":"8904:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":440,"name":"Identifier","src":"8916:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":441,"name":"Identifier","src":"8930:10:22"}],"id":442,"name":"FunctionCall","src":"8873:68:22"}],"id":443,"name":"ExpressionStatement","src":"8873:68:22"}],"id":444,"name":"Block","src":"8766:190:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[4783,4784],"referencedDeclaration":4784,"type":"function (bool,string memory) pure","value":"require"},"id":445,"name":"Identifier","src":"8980:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":446,"name":"Identifier","src":"8988:3:22"}],"id":447,"name":"MemberAccess","src":"8988:9:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"uint256","value":"_amount"},"id":448,"name":"Identifier","src":"9001:7:22"}],"id":449,"name":"BinaryOperation","src":"8988:20:22"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":450,"name":"Literal","src":"9010:33:22"}],"id":451,"name":"FunctionCall","src":"8980:64:22"}],"id":452,"name":"ExpressionStatement","src":"8980:64:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":453,"name":"Identifier","src":"9062:12:22"}],"id":455,"name":"MemberAccess","src":"9062:21:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":413,"type":"uint256","value":"licenceAmount"},"id":456,"name":"Identifier","src":"9084:13:22"}],"id":457,"name":"FunctionCall","src":"9062:36:22"}],"id":458,"name":"ExpressionStatement","src":"9062:36:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":459,"name":"Identifier","src":"9116:12:22"}],"id":461,"name":"MemberAccess","src":"9116:21:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":462,"name":"Identifier","src":"9138:10:22"}],"id":463,"name":"FunctionCall","src":"9116:33:22"}],"id":464,"name":"ExpressionStatement","src":"9116:33:22"}],"id":465,"name":"Block","src":"8962:202:22"}],"id":466,"name":"IfStatement","src":"8740:424:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":61,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":467,"name":"Identifier","src":"9183:24:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":468,"name":"Identifier","src":"9208:3:22"}],"id":469,"name":"MemberAccess","src":"9208:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"address payable","value":"_tokenHolder"},"id":470,"name":"Identifier","src":"9220:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":471,"name":"Identifier","src":"9234:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":413,"type":"uint256","value":"licenceAmount"},"id":472,"name":"Identifier","src":"9242:13:22"}],"id":473,"name":"FunctionCall","src":"9183:73:22"}],"id":474,"name":"EmitStatement","src":"9178:78:22"}],"id":475,"name":"Block","src":"8563:704:22"}],"id":476,"name":"IfStatement","src":"8429:838:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":71,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":477,"name":"Identifier","src":"9282:24:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"msg","value":"msg"},"id":478,"name":"Identifier","src":"9307:3:22"}],"id":479,"name":"MemberAccess","src":"9307:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"address payable","value":"_cryptoFloat"},"id":480,"name":"Identifier","src":"9319:12:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":377,"type":"address","value":"_asset"},"id":481,"name":"Identifier","src":"9333:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"uint256","value":"loadAmount"},"id":482,"name":"Identifier","src":"9341:10:22"}],"id":483,"name":"FunctionCall","src":"9282:70:22"}],"id":484,"name":"EmitStatement","src":"9277:75:22"}],"id":485,"name":"Block","src":"8336:1023:22"}],"id":486,"name":"FunctionDefinition","src":"8272:1087:22"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":543,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":510,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":487,"name":"ElementaryTypeName","src":"9463:15:22"}],"id":488,"name":"VariableDeclaration","src":"9463:19:22"},{"attributes":{"constant":false,"name":"_asset","scope":510,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":489,"name":"ElementaryTypeName","src":"9484:7:22"}],"id":490,"name":"VariableDeclaration","src":"9484:14:22"},{"attributes":{"constant":false,"name":"_amount","scope":510,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":491,"name":"ElementaryTypeName","src":"9500:7:22"}],"id":492,"name":"VariableDeclaration","src":"9500:15:22"}],"id":493,"name":"ParameterList","src":"9462:54:22"},{"attributes":{"parameters":[null]},"children":[],"id":496,"name":"ParameterList","src":"9536:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":948,"type":"modifier ()","value":"onlyAdmin"},"id":494,"name":"Identifier","src":"9526:9:22"}],"id":495,"name":"ModifierInvocation","src":"9526:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1075,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":497,"name":"Identifier","src":"9546:13:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":488,"type":"address payable","value":"_to"},"id":498,"name":"Identifier","src":"9560:3:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address","value":"_asset"},"id":499,"name":"Identifier","src":"9565:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":492,"type":"uint256","value":"_amount"},"id":500,"name":"Identifier","src":"9573:7:22"}],"id":501,"name":"FunctionCall","src":"9546:35:22"}],"id":502,"name":"ExpressionStatement","src":"9546:35:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":79,"type":"function (address,address,uint256)","value":"Claimed"},"id":503,"name":"Identifier","src":"9596:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":488,"type":"address payable","value":"_to"},"id":504,"name":"Identifier","src":"9604:3:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address","value":"_asset"},"id":505,"name":"Identifier","src":"9609:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":492,"type":"uint256","value":"_amount"},"id":506,"name":"Identifier","src":"9617:7:22"}],"id":507,"name":"FunctionCall","src":"9596:29:22"}],"id":508,"name":"EmitStatement","src":"9591:34:22"}],"id":509,"name":"Block","src":"9536:96:22"}],"id":510,"name":"FunctionDefinition","src":"9448:184:22"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":543,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":511,"name":"ParameterList","src":"9731:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":518,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":512,"name":"ElementaryTypeName","src":"9755:4:22"}],"id":513,"name":"VariableDeclaration","src":"9755:4:22"}],"id":514,"name":"ParameterList","src":"9754:6:22"},{"children":[{"attributes":{"functionReturnParameters":514},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":96,"type":"bool","value":"_lockedCryptoFloat"},"id":515,"name":"Identifier","src":"9778:18:22"}],"id":516,"name":"Return","src":"9771:25:22"}],"id":517,"name":"Block","src":"9761:42:22"}],"id":518,"name":"FunctionDefinition","src":"9711:92:22"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":543,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":519,"name":"ParameterList","src":"9903:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":526,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":520,"name":"ElementaryTypeName","src":"9927:4:22"}],"id":521,"name":"VariableDeclaration","src":"9927:4:22"}],"id":522,"name":"ParameterList","src":"9926:6:22"},{"children":[{"attributes":{"functionReturnParameters":522},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":98,"type":"bool","value":"_lockedTokenHolder"},"id":523,"name":"Identifier","src":"9950:18:22"}],"id":524,"name":"Return","src":"9943:25:22"}],"id":525,"name":"Block","src":"9933:42:22"}],"id":526,"name":"FunctionDefinition","src":"9882:93:22"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":543,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":527,"name":"ParameterList","src":"10079:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":534,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":528,"name":"ElementaryTypeName","src":"10103:4:22"}],"id":529,"name":"VariableDeclaration","src":"10103:4:22"}],"id":530,"name":"ParameterList","src":"10102:6:22"},{"children":[{"attributes":{"functionReturnParameters":530},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":100,"type":"bool","value":"_lockedLicenceDAO"},"id":531,"name":"Identifier","src":"10126:17:22"}],"id":532,"name":"Return","src":"10119:24:22"}],"id":533,"name":"Block","src":"10109:41:22"}],"id":534,"name":"FunctionDefinition","src":"10054:96:22"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":543,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":535,"name":"ParameterList","src":"10254:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":542,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":536,"name":"ElementaryTypeName","src":"10278:4:22"}],"id":537,"name":"VariableDeclaration","src":"10278:4:22"}],"id":538,"name":"ParameterList","src":"10277:6:22"},{"children":[{"attributes":{"functionReturnParameters":538},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":102,"type":"bool","value":"_lockedTKNContractAddress"},"id":539,"name":"Identifier","src":"10301:25:22"}],"id":540,"name":"Return","src":"10294:32:22"}],"id":541,"name":"Block","src":"10284:49:22"}],"id":542,"name":"FunctionDefinition","src":"10221:112:22"}],"id":543,"name":"ContractDefinition","src":"1381:8954:22"}],"id":544,"name":"SourceUnit","src":"767:9569:22"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/mocks/isValidSignatureExporter/Controller.bin b/build/mocks/isValidSignatureExporter/Controller.bin index a69c0549..264e63ba 100644 --- a/build/mocks/isValidSignatureExporter/Controller.bin +++ b/build/mocks/isValidSignatureExporter/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/isValidSignatureExporter/DailyLimitTrait.bin b/build/mocks/isValidSignatureExporter/DailyLimitTrait.bin index b38ae5c8..d7eed637 100644 --- a/build/mocks/isValidSignatureExporter/DailyLimitTrait.bin +++ b/build/mocks/isValidSignatureExporter/DailyLimitTrait.bin @@ -1 +1 @@ -60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032 \ No newline at end of file +60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/isValidSignatureExporter/IsValidSignatureExporter.bin b/build/mocks/isValidSignatureExporter/IsValidSignatureExporter.bin index 93af6ab5..6e4adb07 100644 --- a/build/mocks/isValidSignatureExporter/IsValidSignatureExporter.bin +++ b/build/mocks/isValidSignatureExporter/IsValidSignatureExporter.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516102833803806102838339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021e806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea265627a7a72315820399d6a3b7a010f6452fba56016d1d5ab70c4fdaf0c29e43b51c5d6983a85746d64736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516102833803806102838339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021e806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea265627a7a7231582039e4f876e44b1a96a45ddfa82b682c60a8efb354060a8d711722682c146c538564736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/isValidSignatureExporter/Licence.bin b/build/mocks/isValidSignatureExporter/Licence.bin index 20bb2284..464341a7 100644 --- a/build/mocks/isValidSignatureExporter/Licence.bin +++ b/build/mocks/isValidSignatureExporter/Licence.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/isValidSignatureExporter/TokenWhitelist.bin b/build/mocks/isValidSignatureExporter/TokenWhitelist.bin index 60f52176..5a283843 100644 --- a/build/mocks/isValidSignatureExporter/TokenWhitelist.bin +++ b/build/mocks/isValidSignatureExporter/TokenWhitelist.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/isValidSignatureExporter/Wallet.bin b/build/mocks/isValidSignatureExporter/Wallet.bin index f12dd9cc..550210e0 100644 --- a/build/mocks/isValidSignatureExporter/Wallet.bin +++ b/build/mocks/isValidSignatureExporter/Wallet.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/isValidSignatureExporter/combined.json b/build/mocks/isValidSignatureExporter/combined.json index 7fccadac..7f451761 100644 --- a/build/mocks/isValidSignatureExporter/combined.json +++ b/build/mocks/isValidSignatureExporter/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ECDSA.sol:ECDSA":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","srcmap":"1392:3417:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1392:3417:2:-;;;;;;;;"},"externals/ERC165.sol:ERC165":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:5:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:6:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:8:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:9:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:9;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:9;-1:-1:-1;;;;;2567:10:9;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:9;;;;;;","srcmap-runtime":"1897:2174:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:15;;;;;;;;;:::i;:::-;;573:184:19;;;;;;;;;:::i;1721:953:16:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:12;;;;;;;;;:::i;:::-;;;;;;;;;612:169:18;;;;;;;;;:::i;505:166:14:-;;;;;;;;;:::i;980:228:13:-;;;;;;;;;:::i;3269:231:9:-;;;;;;;;;:::i;4901:153:15:-;;;;;;;;;:::i;974:127:19:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:15;;;;;;;;;:::i;582:292:12:-;;;;;;;;;:::i;844:101:17:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:13:-;;;;;;;;;:::i;4519:168:15:-;;;;;;;;;:::i;3703:366:9:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:15;;;;;;;;;:::i;838:108:14:-;;;;;;;;;:::i;1023:133:18:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:15;;;;;;;;;:::i;681:140:13:-;;;;;;;;;:::i;858:226:16:-;;;;;;;;;:::i;1514:127:13:-;;;;;;;;;:::i;2320:80:9:-;;;;;;;;;:::i;1107:169:19:-;1174:4;-1:-1:-1;;;;;;1197:32:19;;-1:-1:-1;;;1197:32:19;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:15:-;2932:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:15;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:15;;:18;-1:-1:-1;;3185:18:15;:15;:18;;-1:-1:-1;3185:18:15:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:15;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:15;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:15;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:15;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:15;;4052:6;;-1:-1:-1;4060:20:15;;;;-1:-1:-1;4082:17:15;4012:11;:88::i;:::-;400:1:11;;;;;2854:1263:15;;;;:::o;573:184:19:-;668:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:19;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:16:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:16;;;;;;;;;;-1:-1:-1;;;;;1849:29:16;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:16;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:16;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:16;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:16;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:16;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:16;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:16;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:16;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:16;;-1:-1:-1;2373:103:16;-1:-1:-1;2489:8:16;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:16;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:16;;-1:-1:-1;;;1721:953:16;;;;;:::o;1195:454:12:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:12;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:12;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:12;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:12;-1:-1:-1;1195:454:12;;;;;;:::o;612:169:18:-;687:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:18;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:18;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:14:-;584:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:14;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:13;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:13:o;3269:231:9:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:9;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:9;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:15:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:19:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:19;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:15:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:12:-;674:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:12;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:12;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:17:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:17;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:13;1302:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:13;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:15:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:9;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:9;-1:-1:-1;3844:6:9;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:9;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:9;;3840:199;;;-1:-1:-1;3703:366:9;;;;:::o;5193:128:15:-;5247:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:15;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:14:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:14;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:18;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:15:-;5617:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:15;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:15;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:15;;:16;-1:-1:-1;5701:4:15;;-1:-1:-1;5701:4:15;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:11;5541:225:15;;;;:::o;681:140:13:-;743:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:13;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:16:-;955:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:16;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:16;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:16;-1:-1:-1;;;;;971:43:16;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:13:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:13;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:18:-;1229:4;-1:-1:-1;;;;;;1252:34:18;;-1:-1:-1;;;1252:34:18;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:9:-;3596:3;;:15;;-1:-1:-1;;;3596:15:9;;3564:4;;;;-1:-1:-1;;;;;3596:3:9;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:9;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:9;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:9;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:9;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:10:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:8:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:15:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:15;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:15;;;;;;-1:-1:-1;;6760:43:15;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:15;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:15;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:10:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:10;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:10;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:10;;:::o;414:204:11:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:11;576:10;570:17;-1:-1:-1;;;566:36:11;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:11;87:34:-1;-1:-1;;;;;;776:20:11;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:11;743:64::o;951:169:17:-;1018:4;-1:-1:-1;;;;;;1041:32:17;;-1:-1:-1;;;1041:32:17;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:10:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:10;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:10:o;8685:393:8:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:8;87:34:-1;135:17;;-1:-1;8858:14:8;-1:-1:-1;8839:33:8;-1:-1:-1;8960:2:8;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:8;;8685:393;-1:-1:-1;;;;;8685:393:8:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:8:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:8;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:8;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:16:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:16;;:11;-1:-1:-1;;;;;2770:37:16;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:8:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:8;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:8;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:8;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:8;;513:2;499:26;489:42;;468:73::o;6035:245:15:-;6102:4;-1:-1:-1;;;;;;6125:38:15;;-1:-1:-1;;;6125:38:15;;:93;;-1:-1:-1;;;;;;;6182:36:15;;-1:-1:-1;;;6182:36:15;6125:93;:148;;;;6237:36;6261:11;1019:4:14;-1:-1:-1;;;;;;1042:40:14;;-1:-1:-1;;;1042:40:14;;:80;;;1086:36;1110:11;1714:4:13;-1:-1:-1;;;;;;1737:32:13;;-1:-1:-1;;;1737:32:13;;:71;;-1:-1:-1;;;;;;;1773:35:13;;-1:-1:-1;;;1773:35:13;1737:71;:111;;;;1812:36;1836:11;1722:4:12;-1:-1:-1;;;;;;1745:31:12;;-1:-1:-1;;;1745:31:12;;:71;;-1:-1:-1;;;;;;;;;;204:32:11;;;1780:36:12;114:129:11:o;1897:2174:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:9;;;-1:-1:-1;1897:2174:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:10:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:10:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:21;;;;;;;","srcmap-runtime":"898:556:21:-;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","srcmap":"1381:8954:28:-;;;1122:66:23;1272:58;;2313:80:28;;;-1:-1:-1;;;;;;2313:80:28;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:28;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3616:558:28;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:28;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:28;;;-1:-1:-1;;;;;;4012:22:28;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:28;-1:-1:-1;;;;;4123:34:28;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:28;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:28;-1:-1:-1;;;;;7354:228:28;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:28;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:28;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:28;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:28;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:28;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:28;-1:-1:-1;;;;;6678:219:28;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:28;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:28;;:::i;1364:91:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;10221:112:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:28;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:28;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:28;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:28;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:28;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:28;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:28;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:28;-1:-1:-1;;;;;6338:204:28;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:28;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;10054:96:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:28;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:28;-1:-1:-1;;;;;7027:196:28;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:28;;;:::i;6106:102::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6169:25:28;:32;;-1:-1:-1;;;;6169:32:28;-1:-1:-1;;;6169:32:28;;;6106:102::o;7354:228::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7443:26:28;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:28;;-1:-1:-1;;;;;;7497:29:28;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:28;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:28;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:28;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:28;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:28;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:28;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:28;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:28;;:33;;-1:-1:-1;;;;;9116:12:28;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:28;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:28;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:28;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:28;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:28;4950:91;:::o;6678:219::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6766:14:28;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:28;;-1:-1:-1;;;;;;6820:25:28;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5977:17:28;:24;;-1:-1:-1;;;;5977:24:28;-1:-1:-1;;;5977:24:28;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:28;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;10221:112:28:-;10301:25;;-1:-1:-1;;;10301:25:28;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:28;;;;;9711:92::o;9448:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;9546:35:28;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:28;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:28;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5603:18:28;:25;;-1:-1:-1;;;;5603:25:28;-1:-1:-1;;;5603:25:28;;;5553:82::o;6338:204::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6424:13:28;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:28;;-1:-1:-1;;;;;;6467:24:28;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5792:18:28;:25;;-1:-1:-1;;;;5792:25:28;-1:-1:-1;;;5792:25:28;;;5741:83::o;2169:95:23:-;2242:15;;2169:95;:::o;10054:96:28:-;10126:17;;-1:-1:-1;;;10126:17:28;;;;;10054:96::o;7027:196::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7108:18:28;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:28;;-1:-1:-1;;;;;;7154:21:28;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:28;;;;;9882:93::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;1982:201:5:-;2107:68;;;-1:-1:-1;;;;;2107:68:5;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:5;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:6;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:5;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"},"mocks/isValidSignatureExporter.sol:IWallet":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"mocks/isValidSignatureExporter.sol:IsValidSignatureExporter":{"bin":"608060405234801561001057600080fd5b506040516102833803806102838339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021e806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea265627a7a72315820399d6a3b7a010f6452fba56016d1d5ab70c4fdaf0c29e43b51c5d6983a85746d64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea265627a7a72315820399d6a3b7a010f6452fba56016d1d5ab70c4fdaf0c29e43b51c5d6983a85746d64736f6c63430005110032","srcmap":"170:445:29:-;;;238:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:76:29;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;238:76:29;284:13;:23;;-1:-1:-1;;;;;284:23:29;;;-1:-1:-1;;;;;;284:23:29;;;;;;;;;170:445;;;;;;","srcmap-runtime":"170:445:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;170:445:29;;;;;;;;;;;;;;;;;;;425:188;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;425:188:29;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;425:188:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;425:188:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;425:188:29;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;425:188:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;425:188:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;425:188:29;;-1:-1:-1;425:188:29;-1:-1:-1;425:188:29;:::i;:::-;;;;-1:-1:-1;;;;;;425:188:29;;;;;;;;;;;;;;;523:6;556:13;;548:58;;;-1:-1:-1;;;548:58:29;;;;;;;;;;;;;;-1:-1:-1;;;;;556:13:29;;;;548:39;;588:5;;;;595:10;;;;548:58;;;;;;;;;588:5;;;;548:58;1:33:-1;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;548:58:29;;;;;;;;;;;-1:-1:-1;548:58:29;;;;;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;548:58:29;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;548:58:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;548:58:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;548:58:29;;425:188;-1:-1:-1;;;;;425:188:29:o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","srcmap":"1939:14907:30:-;;;1122:66:23;1272:58;;4758:506:30;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:30;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:30;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:30;:26;;;;-1:-1:-1;4995:11:30;:33;;-1:-1:-1;;;;;4995:33:30;;;-1:-1:-1;;;;;;4995:33:30;;;;;;;;;-1:-1:-1;5083:18:30;:28;;;:35;;-1:-1:-1;;5083:35:30;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:30;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:30;-1:-1:-1;;;;;;16070:136:30;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:30;-1:-1:-1;;;;;13314:334:30;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;-1:-1:-1;6040:1806:30;-1:-1:-1;6040:1806:30;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:30;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:30;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:30;;-1:-1:-1;;;;;15695:220:30;;;;;-1:-1:-1;;;;;;15695:220:30;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:30;;-1:-1:-1;7973:1237:30;-1:-1:-1;7973:1237:30;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:30;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:30;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:30;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:30;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:30;;-1:-1:-1;9368:1399:30;-1:-1:-1;9368:1399:30;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:30;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:30;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:30:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:30;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:30;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:30;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:30;;;:88;;;;-1:-1:-1;6442:35:30;;;6389:88;:142;;;;-1:-1:-1;6497:34:30;;;6389:142;:196;;;;-1:-1:-1;6551:34:30;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:30;6841:25;;-1:-1:-1;6841:25:30;;;;;;;;-1:-1:-1;6841:25:30;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:30;-1:-1:-1;;;;;7084:25:30;-1:-1:-1;;;;;7084:25:30;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:30;;;;;-1:-1:-1;;7084:306:30;;;-1:-1:-1;;7084:306:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:30;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:30;-1:-1:-1;;;;;7486:10:30;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:30;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:30;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:30;-1:-1:-1;;;;;7742:87:30;;;;;;-1:-1:-1;;;;;7742:87:30;-1:-1:-1;;;;;7742:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:30;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:30;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:30;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:30;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:30;-1:-1:-1;15069:72:30;-1:-1:-1;15151:23:30;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:30;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:30;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:30;;;-1:-1:-1;;;;;15364:44:30;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:30;;15188:283;;;-1:-1:-1;15487:19:30;;-1:-1:-1;;14990:523:30;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:30;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:30;;;;;;;;;;;;-1:-1:-1;;;11432:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:30;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:30;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:30;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:30;;;;;;;;;;;;-1:-1:-1;;;15798:62:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:30;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:30:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:30;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:30;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:30;;8363:65;;;;;-1:-1:-1;;;8363:65:30;;;;;;;;;;;;-1:-1:-1;;;8363:65:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:30;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:30;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:30;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:30;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:30;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:30;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:30;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:30;;;;;-1:-1:-1;;;;;8926:76:30;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:30;:27;;;;;-1:-1:-1;;9075:27:30;;;:::i;:::-;-1:-1:-1;9162:31:30;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:30;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:30:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:30;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:30;;;;;;;;;;;;-1:-1:-1;;;10969:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:30;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:30;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:30;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:30;;:23;-1:-1:-1;;9801:23:30;:20;:23;;-1:-1:-1;9801:23:30:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:30;;;;;;;;;;;;-1:-1:-1;;;9877:72:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:30;;-1:-1:-1;;;10048:18:30;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:30;;:24;-1:-1:-1;;10141:24:30;:21;:24;;-1:-1:-1;10141:24:30:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:30;;-1:-1:-1;;;10187:27:30;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:30;;:34;-1:-1:-1;;10400:34:30;:21;:34;;-1:-1:-1;10400:34:30:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:30;;:34;-1:-1:-1;;10436:34:30;:21;:34;;-1:-1:-1;10436:34:30:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:30;;:29;-1:-1:-1;;10689:29:30;:21;:29;;-1:-1:-1;10689:29:30:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:30;;:29;-1:-1:-1;;10720:29:30;:21;:29;;-1:-1:-1;10720:29:30:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:30;-1:-1:-1;;;;;5399:27:30;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:30;;;;;;;;;;;;-1:-1:-1;;;5367:86:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:30;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:30;;;;;;;;;;;;-1:-1:-1;;;12130:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:30;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:30:-;16622:11;;-1:-1:-1;;;;;16622:11:30;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:30;;;-1:-1:-1;1939:14907:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"wallet.sol:AddressWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:ControllableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:DailyLimitTrait":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032","srcmap":"11411:3455:31:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"11411:3455:31:-;;;;;;;;"},"wallet.sol:GasTopUpLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:LoadLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SelfCallableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SpendLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:Wallet":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032","bin-runtime":"60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032","srcmap":"22209:17557:31:-;;;1122:66:23;1272:58;;24474:430:31;5:2:-1;;;;30:1;27;20:12;5:2;24474:430:31;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24474:430:31;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;24474:430:31;;;;;;;;;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1543:6:25;:18;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;-1:-1:-1;;;1571:32:25;;;;;;;;;;;;;;1687:15;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17616:93:31;;;;;;;;17296:10;17616:93;;;;;;;;;17695:3;17616:93;;;;;;-1:-1:-1;17616:93:31;;;;;;;;;;;;;17599:14;:110;;;;;;;;;;;;;;;;;-1:-1:-1;;17599:110:31;;;1341:19:26;:42;;;;20179:20:31;-1:-1:-1;;;;;20179:18:31;:20;:::i;:::-;20135:64;;;;;;;;20239:1;20217:19;:23;20209:49;;;;;-1:-1:-1;;;20209:49:31;;;;;;;;;;;;-1:-1:-1;;;20209:49:31;;;;;;;;;;;;;;;19863:5;20288:52;20268:17;:72;;;20363:79;;;;;;;;;;;;;;;;;;;20428:3;20363:79;;;;;;-1:-1:-1;20363:79:31;;;;;;;;;;;;;;20350:10;:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20350:92:31;;;;;;15352:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:11;:73;;;;;;;;;;;;;;;-1:-1:-1;15338:73:31;;;;;;;;-1:-1:-1;24869:12:31;:28;-1:-1:-1;22209:17557:31;;-1:-1:-1;;;;22209:17557:31;2887:206:26;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;;;:32;;:::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;22209:17557:31:-;;;;;;;","srcmap-runtime":"22209:17557:31:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25196:31;;;25205:10;25196:31;;25217:9;25196:31;;;;;;;;;;;;;;;;;22209:17557;30101:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30101:137:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30101:137:31;-1:-1:-1;;;;;;30101:137:31;;:::i;:::-;;;;;;;;;;;;;;;;;;16199:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16199:104:31;;;:::i;:::-;;;;;;;;;;;;;;;;18820:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18820:286:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:286:31;;:::i;:::-;;3896:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:677:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3896:677:31;;:::i;23125:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23125:47:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23125:47:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38146:244:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38146:244:31;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38146:244:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38146:244:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38146:244:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38146:244:31;;-1:-1:-1;38146:244:31;;-1:-1:-1;;;;;38146:244:31:i;:::-;;;;-1:-1:-1;;;;;;38146:244:31;;;;;;;;;;;;;;25576:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25576:565:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;25576:565:31;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25576:565:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25576:565:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25576:565:31;;-1:-1:-1;25576:565:31;-1:-1:-1;25576:565:31;:::i;21466:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21466:117:31;;;:::i;28299:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28299:344:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28299:344:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28299:344:31;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28299:344:31;;-1:-1:-1;28299:344:31;-1:-1:-1;28299:344:31;:::i;3173:94:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3173:94:25;;;:::i;16806:179:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16806:179:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16806:179:31;;:::i;18606:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18606:106:31;;;:::i;3082:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3082:38:31;;;:::i;8300:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8300:124:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8300:124:31;;;;;;;;;;;;;;;;;2898:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2898:44:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2898:44:31;-1:-1:-1;;;;;2898:44:31;;:::i;29093:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;29093:943:31;;;;;;;;:::i;20579:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20579:233:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20579:233:31;;:::i;15817:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15817:161:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15817:161:31;;:::i;35929:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35929:1934:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;35929:1934:31;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;35929:1934:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;35929:1934:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35929:1934:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35929:1934:31;;-1:-1:-1;35929:1934:31;;-1:-1:-1;;;;;35929:1934:31:i;26493:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26493:1111:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26493:1111:31;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26493:1111:31;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26493:1111:31;;-1:-1:-1;26493:1111:31;-1:-1:-1;26493:1111:31;:::i;8121:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8121:126:31;;;:::i;5523:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5523:1117:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5523:1117:31;;:::i;16023:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16023:119:31;;;:::i;10340:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10340:673:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10340:673:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10340:673:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10340:673:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10340:673:31;;-1:-1:-1;10340:673:31;-1:-1:-1;10340:673:31;:::i;3543:306:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:306:25;;;:::i;19233:304:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19233:304:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19233:304:31;;:::i;28706:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:91:31;;;:::i;1364::24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;18028:125:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:125:31;;;:::i;9505:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9505:711:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9505:711:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9505:711:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9505:711:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9505:711:31;;-1:-1:-1;9505:711:31;-1:-1:-1;9505:711:31;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;3932:85:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:85:25;;;:::i;27713:87:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27713:87:31;;;:::i;16562:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16562:100:31;;;:::i;31175:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31175:2016:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31175:2016:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31175:2016:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31175:2016:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31175:2016:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31175:2016:31;;-1:-1:-1;31175:2016:31;;-1:-1:-1;;;;;31175:2016:31:i;21796:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:145:31;;;:::i;20927:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20927:251:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20927:251:31;;:::i;2247:809:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2247:809:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;33378:550:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33378:550:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33378:550:31;;;;;;;;:::i;16359:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16359:147:31;;;:::i;3169:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:26:31;;;:::i;38667:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38667:1097:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38667:1097:31;;;;;;;;;;;;;;;;;:::i;21639:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21639:102:31;;;:::i;6709:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6709:1358:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6709:1358:31;;:::i;18215:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:110:31;;;:::i;23739:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23739:25:31;;;:::i;11082:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11082:145:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11082:145:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11082:145:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11082:145:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:145:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11082:145:31;;-1:-1:-1;11082:145:31;;-1:-1:-1;;;;;11082:145:31:i;4641:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:659:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4641:659:31;;:::i;2948:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:31:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2948:31:31;;:::i;22008:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:98:31;;;:::i;3126:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3126:37:31;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;30418:425:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30418:425:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30418:425:31;;:::i;15480:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:180:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15480:180:31;;:::i;34129:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34129:1540:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34129:1540:31;;;;;;;;:::i;21239:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21239:177:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21239:177:31;;:::i;17783:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17783:189:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17783:189:31;;:::i;8555:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:827:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8555:827:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8555:827:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8555:827:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8555:827:31;;-1:-1:-1;8555:827:31;-1:-1:-1;8555:827:31;:::i;18386:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18386:153:31;;;:::i;30101:137::-;-1:-1:-1;;;;;;30195:36:31;;-1:-1:-1;;;30195:36:31;30101:137;;;;:::o;16199:104::-;16277:19;;16199:104;;:::o;18820:286::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;18934:7;17364:8;18906:35;;:74;;;;;17296:10;18945:7;:35;;18906:74;18898:106;;;;;-1:-1:-1;;;18898:106:31;;;;;;;;;;;;-1:-1:-1;;;18898:106:31;;;;;;;;;;;;;;;19014:33;:14;19039:7;19014:33;:24;:33;:::i;:::-;19062:37;;;19079:10;19062:37;;;;;;;;;;;;;;;;;;;;;18820:286;:::o;3896:677::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;;;;4043:26;;;;4035:60;;;;;-1:-1:-1;;;4035:60:31;;;;;;;;;;;;-1:-1:-1;;;4035:60:31;;;;;;;;;;;;;;;4217:40;4231:25;4217:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4217:40:31;;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4208:5;:49;4200:97;;;;-1:-1:-1;;;4200:97:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:32;4350:25;;4343:32;:::i;:::-;4432:26;:34;;-1:-1:-1;;4432:34:31;;;4521:45;;;4548:10;4521:45;;;;;;;;;;;;;;;;;;;;;3896:677;:::o;23125:47::-;;;;;;;;;;;;;;-1:-1:-1;;;23125:47:31;;;;:::o;38146:244::-;38239:6;;38272:31;:11;38292:10;38272:31;:19;:31;:::i;:::-;38257:46;;38321:14;38330:4;38321:8;:14::i;:::-;38313:44;;;;;-1:-1:-1;;;38313:44:31;;;;;;;;;;;;-1:-1:-1;;;38313:44:31;;;;;;;;;;;;;;;-1:-1:-1;;;;38374:9:31;-1:-1:-1;38146:244:31;;;;;:::o;25576:565::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;25745:19;25737:52;;;;;-1:-1:-1;;;25737:52:31;;;;;;;;;;;;-1:-1:-1;;;25737:52:31;;;;;;;;;;;;;;;25866:9;25861:229;25881:18;;;25861:229;;;25920:14;25937:35;25954:4;25961:7;;25969:1;25961:10;;;;;;;;;;;;;-1:-1:-1;;;;;25961:10:31;25937:8;:35::i;:::-;25920:52;;26046:33;26055:3;26060:7;;26068:1;26060:10;;;;;;;;;;;;;-1:-1:-1;;;;;26060:10:31;26072:6;26046:8;:33::i;:::-;-1:-1:-1;25901:3:31;;25861:229;;;;26105:29;26121:3;26126:7;;26105:29;;;;-1:-1:-1;;;;;26105:29:31;-1:-1:-1;;;;;26105:29:31;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;26105:29:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26105:29:31;;;;-1:-1:-1;26105:29:31;;-1:-1:-1;;;;;26105:29:31;25576:565;;;:::o;21466:117::-;21519:7;21545:31;:10;:29;:31::i;:::-;21538:38;;21466:117;:::o;28299:344::-;28397:6;28415:16;28461:5;;28444:23;;;;;;;30:3:-1;22:6;14;1:33;28444:23:31;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28444:23:31;;;28434:34;;49:4:-1;28434:34:31;;;;28541:38;;;;;;;;;;;;;;;;;;28434:34;;-1:-1:-1;;;;28583:9:31;-1:-1:-1;28541:38:31;;-1:-1:-1;28434:34:31;;-1:-1:-1;28568:10:31;;-1:-1:-1;28541:38:31;;;;;;28568:10;28541:38;;28568:10;28541:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28541:16:31;;-1:-1:-1;;;28541:38:31:i;:::-;-1:-1:-1;;;;;;28541:51:31;;28533:77;;;;;-1:-1:-1;;;28533:77:31;;;;;;;;;;;;-1:-1:-1;;;28533:77:31;;;;;;;;;;;;;;;-1:-1:-1;;;;28627:9:31;28299:344;-1:-1:-1;;;;;28299:344:31:o;3173:94:25:-;3245:15;;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;16806:179:31:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;16890:39;:11;16921:7;16890:39;:30;:39;:::i;:::-;16944:34;;;;;;;;;;;;;;;;;16806:179;:::o;18606:106::-;18685:14;:20;18606:106;:::o;3082:38::-;;;;;;:::o;8300:124::-;8358:16;8393:24;8386:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8386:31:31;;;;;;;;;;;;;;;;;;;;;;;8300:124;:::o;2898:44::-;;;;;;;;;;;;;;;:::o;29093:943::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;29269:24;29286:6;29269:16;:24::i;:::-;29261:55;;;;;-1:-1:-1;;;29261:55:31;;;;;;;;;;;;-1:-1:-1;;;29261:55:31;;;;;;;;;;;;;;;29379:23;29405:36;29425:6;29433:7;29405:19;:36::i;:::-;29379:62;-1:-1:-1;29571:41:31;:10;29379:62;29571:41;:24;:41;:::i;:::-;29669:22;29694:25;29706:12;;29694:11;:25::i;:::-;29669:50;-1:-1:-1;;;;;;29733:20:31;;;29729:253;;29769:50;-1:-1:-1;;;;;29769:25:31;;29795:14;29811:7;29769:50;:25;:50;:::i;:::-;29842:14;-1:-1:-1;;;;;29833:29:31;;29863:6;29871:7;29833:46;;;;;;;;;;;;;-1:-1:-1;;;;;29833:46:31;-1:-1:-1;;;;;29833:46:31;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29833:46:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29833:46:31;;;;29729:253;;;29919:14;-1:-1:-1;;;;;29910:29:31;;29946:7;29955:6;29963:7;29910:61;;;;;;;;;;;;;-1:-1:-1;;;;;29910:61:31;-1:-1:-1;;;;;29910:61:31;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29910:61:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29910:61:31;;;;;29729:253;29997:32;;;-1:-1:-1;;;;;29997:32:31;;;;;;;;;;;;;;;;;;;;;;;2129:1;;29093:943;;:::o;20579:233::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;20672:17;;20661:7;:28;;20653:65;;;;;-1:-1:-1;;;20653:65:31;;;;;;;;;;;;-1:-1:-1;;;20653:65:31;;;;;;;;;;;;;;;20728:29;:10;20749:7;20728:29;:20;:29;:::i;:::-;20772:33;;;20785:10;20772:33;;;;;;;;;;;;;;;;;;;;;20579:233;:::o;15817:161::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;15892:30;:11;15914:7;15892:30;:21;:30;:::i;:::-;15937:34;;;15951:10;15937:34;;;;;;;;;;;;;;;;;;;;;15817:161;:::o;35929:1934::-;36047:12;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;36266:26:31;;;;;;:12;:26;;;;;;;;36261:91;;36308:33;:11;36334:6;36308:33;:25;:33;:::i;:::-;36453:34;36461:12;-1:-1:-1;;;;;36453:32:31;;:34::i;:::-;:69;;;;;36491:31;36509:12;36491:17;:31::i;:::-;36449:1098;;;36625:10;36649:14;36692:48;36720:12;36734:5;36692:27;:48::i;:::-;-1:-1:-1;;;;;36759:16:31;;;;;;:12;:16;;;;;;36677:63;;-1:-1:-1;36677:63:31;-1:-1:-1;36759:16:31;;36754:335;;36962:18;36983:36;36998:12;37012:6;36983:14;:36::i;:::-;36962:57;-1:-1:-1;37037:37:31;:11;36962:57;37037:37;:25;:37;:::i;:::-;36754:335;;37238:45;-1:-1:-1;;;;;37238:38:31;;37277:5;37238:45;:38;:45;:::i;:::-;37404:13;;;37414:2;37404:13;;;;;;;;;37387:14;;37404:13;;;21:6:-1;;104:10;37404:13:31;87:34:-1;135:17;;-1:-1;37404:13:31;37387:30;;37439:4;37431:12;;:1;37433:2;37431:5;;;;;;;;;;;:12;-1:-1:-1;;;;;37431:12:31;;;;;;;;;37463:51;37483:12;37497:6;37505:5;37512:1;37463:51;;;;-1:-1:-1;;;;;37463:51:31;-1:-1:-1;;;;;37463:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37463:51:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37535:1;-1:-1:-1;37528:8:31;;-1:-1:-1;;37528:8:31;36449:1098;37558:12;37572:23;37599:12;-1:-1:-1;;;;;37599:17:31;37623:6;37631:5;37599:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37599:38:31;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37557:80:31;;;;37655:7;37671:10;37647:36;;;;;-1:-1:-1;;;37647:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37647:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37699:60;37719:12;37733:6;37741:5;37748:10;37699:60;;;;-1:-1:-1;;;;;37699:60:31;-1:-1:-1;;;;;37699:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37846:10;-1:-1:-1;;2129:1:31;35929:1934;;;;;:::o;26493:1111::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;26797:10:31;26846:9;26840:15;;26925:16;26944:99;26984:2;26996:4;27003:6;27011:5;;26954:63;;;;;;-1:-1:-1;;;26954:63:31;;;;;;;;;;;-1:-1:-1;;;;;26954:63:31;-1:-1:-1;;;;;26954:63:31;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;26954:63:31;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26954:63:31;;;26944:74;;;;;;:97;:99::i;:::-;26925:118;;23503:10;27161:9;;-1:-1:-1;;;;;27119:51:31;;:38;27136:8;27146:10;;27119:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;27119:16:31;;-1:-1:-1;;;27119:38:31:i;:::-;-1:-1:-1;;;;;;27119:51:31;;27111:77;;;;;-1:-1:-1;;;27111:77:31;;;;;;;;;;;;-1:-1:-1;;;27111:77:31;;;;;;;;;;;;;;;27301:10;;27291:6;:20;27283:42;;;;;-1:-1:-1;;;27283:42:31;;;;;;;;;;;;-1:-1:-1;;;27283:42:31;;;;;;;;;;;;;;;27335:21;:19;:21::i;:::-;27424:12;27438:23;27473:4;-1:-1:-1;;;;;27465:18:31;27484:5;;27465:25;;;;;30:3:-1;22:6;14;1:33;27465:25:31;;45:16:-1;;;-1:-1;27465:25:31;;-1:-1:-1;27465:25:31;;-1:-1:-1;;27465:25:31;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27423:67:31;;;;27508:7;27524:10;27500:36;;;;;-1:-1:-1;;;27500:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27500:36:31;;27552:45;27579:5;;27586:10;27552:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27552:45:31;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27552:45:31;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27552:45:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:1:23;;;;26493:1111:31;;;;;:::o;8121:126::-;8180:16;8215:25;8208:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8208:32:31;;;;;;;;;;;;;;;;;;;;;;8121:126;:::o;5523:1117::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;5681:26:31;;;;5673:60;;;;;-1:-1:-1;;;5673:60:31;;;;;;;;;;;;-1:-1:-1;;;5673:60:31;;;;;;;;;;;;;;;5855:40;5869:25;5855:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5855:40:31;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;5846:5;:49;5838:97;;;;-1:-1:-1;;;5838:97:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:9;5985:383;6009:25;:32;6005:36;;5985:383;;;6117:12;:42;6130:25;6156:1;6130:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6130:28:31;6117:42;;;;;;;;;;;;;;;6112:246;;6272:4;6227:12;:42;6240:25;6266:1;6240:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6240:28:31;6227:42;;;;;;;;;;;;:49;;-1:-1:-1;;6227:49:31;;;;;;;;;;6314:25;:28;;6294:14;;6314:25;6340:1;;6314:28;;;;;;;;;;;;;;;;;;27:10:-1;;6314:28:31;23:18:-1;;45:23;;6294:49:31;;;;;;;;;;-1:-1:-1;;;;;;6294:49:31;-1:-1:-1;;;;;6314:28:31;;;6294:49;;;;;;6112:246;6043:3;;5985:383;;;;6418:55;6435:10;6447:25;6418:55;;;;-1:-1:-1;;;;;6418:55:31;-1:-1:-1;;;;;6418:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6418:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:32;6526:25;;6519:32;:::i;:::-;-1:-1:-1;6599:26:31;:34;;-1:-1:-1;;6599:34:31;;;5523:1117::o;16023:119::-;16077:7;16103:32;:11;:30;:32::i;10340:673::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:31;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:14;;;;;;;10517:52;;;;;-1:-1:-1;;;10517:52:31;;;;;;;;;;;;-1:-1:-1;;;10517:52:31;;;;;;;;;;;;;;;10647:21;10639:49;;;;;-1:-1:-1;;;10639:49:31;;;;;;;;;;;;-1:-1:-1;;;10639:49:31;;;;;;;;;;;;;;;10766:37;:24;10793:10;;10766:37;:::i;:::-;-1:-1:-1;10857:25:31;:32;;-1:-1:-1;;10857:32:31;;;;;10980:25;;;;;;;;;;;;;;;;;;10942:64;;10968:10;;;;10980:25;;10968:10;;;;;;10980:25;;;10968:10;;10980:25;10968:10;10980:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10980:13:31;;-1:-1:-1;;;10980:25:31:i;:::-;10942:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10942:64:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10942:64:31;;;;-1:-1:-1;10942:64:31;;-1:-1:-1;;;;;10942:64:31;10340:673;;:::o;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:6;:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;3784:1;3802:40;;;;;;;;;;;;;;;;;;;;3543:306::o;19233:304:31:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;19356:7;17364:8;19328:35;;:74;;;;;17296:10;19367:7;:35;;19328:74;19320:106;;;;;-1:-1:-1;;;19320:106:31;;;;;;;;;;;;-1:-1:-1;;;19320:106:31;;;;;;;;;;;;;;;19436:42;:14;19470:7;19436:42;:33;:42;:::i;:::-;19493:37;;;;;;;;;;;;;;;;;19233:304;:::o;28706:91::-;28778:12;;28706:91;:::o;1364::24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;18028:125:31:-;18085:7;18111:35;:14;:33;:35::i;9505:711::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:31;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:31;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;;;;;;;;3437:8;:23::i;:::-;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:31;;;;;;;;;;;;-1:-1:-1;;;3428:59:31;;;;;;;;;;;;;;;3534:1;-1:-1:-1;;;;;3509:27:31;:10;3520:1;3509:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:31;;;3501:58;;;;;-1:-1:-1;;;3501:58:31;;;;;;;;;;;;-1:-1:-1;;;3501:58:31;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;9727:14:31;;;;;;;9719:52;;;;;-1:-1:-1;;;9719:52:31;;;;;;;;;;;;-1:-1:-1;;;9719:52:31;;;;;;;;;;;;;;;9842:21;9834:49;;;;;-1:-1:-1;;;9834:49:31;;;;;;;;;;;;-1:-1:-1;;;9834:49:31;;;;;;;;;;;;;;;9966:38;:25;9994:10;;9966:38;:::i;:::-;-1:-1:-1;10058:26:31;:33;;-1:-1:-1;;10058:33:31;10087:4;10058:33;;;10183:25;;;;;;;;;;;;;;;;;;10144:65;;10171:10;;;;10183:25;;10171:10;;;;;;10183:25;;;10171:10;;10183:25;10171:10;10183:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10183:13:31;;-1:-1:-1;;;10183:25:31:i;:::-;10144:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10144:65:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10144:65:31;;;;-1:-1:-1;10144:65:31;;-1:-1:-1;;;;;10144:65:31;3834:1;9505:711;;:::o;1514:105:26:-;1593:19;;1514:105;:::o;3932:85:25:-;4004:6;;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;27713:87:31:-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;27772:21:31;:19;:21::i;:::-;27713:87::o;16562:100::-;16638:11;:17;16562:100;:::o;31175:2016::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;31295:24;;31322:2;31295:29;;;;:24;31273:19;;;31723:17;31764:1421;31777:11;31771:3;:17;31764:1421;;;31937:28;:20;31962:2;31937:28;:24;:28;:::i;:::-;32151:27;;;32145:34;;32312:2;32280:36;;32274:43;32533:2;32501:36;;;32495:43;;31914:51;;-1:-1:-1;32141:2:31;32137:43;;;;;-1:-1:-1;32274:43:31;;-1:-1:-1;32495:43:31;;-1:-1:-1;32501:36:31;-1:-1:-1;32709:27:31;32733:2;32709:19;32174:3;32495:43;32709:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32703:33;;32856:11;32849:3;:18;;32841:44;;;;;-1:-1:-1;;;32841:44:31;;;;;;;;;;;;-1:-1:-1;;;32841:44:31;;;;;;;;;;;;;;;32956:15;32952:70;;-1:-1:-1;32998:9:31;;;;;;;;;-1:-1:-1;32998:9:31;;32952:70;33130:44;33149:11;33162:5;33169:4;33130:18;:44::i;:::-;;31764:1421;;;2129:1;;;;;;;31175:2016;:::o;21796:145::-;21893:41;;;;21796:145;:::o;20927:251::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;21029:17;;21018:7;:28;;21010:65;;;;;-1:-1:-1;;;21010:65:31;;;;;;;;;;;;-1:-1:-1;;;21010:65:31;;;;;;;;;;;;;;;21085:38;:10;21115:7;21085:38;:29;:38;:::i;:::-;21138:33;;;;;;;;;;;;;;;;;20927:251;:::o;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;33378:550:31:-;33456:7;33545:17;33564:12;33578:14;33602:21;33616:6;33602:13;:21::i;:::-;33542:81;;;;;;;;;;33703:9;33699:205;;;33736:9;33728:28;;;;;-1:-1:-1;;;33728:28:31;;;;;;;;;;;;-1:-1:-1;;;33728:28:31;;;;;;;;;;;;;;;33861:32;33883:9;33861:17;:7;33873:4;33861:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;33854:39;;;;;;;33699:205;-1:-1:-1;33920:1:31;;33378:550;-1:-1:-1;;;;;33378:550:31:o;16359:147::-;16457:42;;;;16359:147;:::o;3169:26::-;;;;;;;;;:::o;38667:1097::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;38772:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:31;;;;;;;;;;;;-1:-1:-1;;;25001:31:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;38860:17:31;;38852:43;;;;;-1:-1:-1;;;38852:43:31;;;;;;;;;;;;-1:-1:-1;;;38852:43:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;38984:17:31;;;;;;:12;:17;;;;;;;;38979:584;;39101:7;-1:-1:-1;;;;;39205:20:31;;;39201:103;;39258:31;39273:6;39281:7;39258:14;:31::i;:::-;39245:44;;39201:103;39515:37;:11;39541:10;39515:37;:25;:37;:::i;:::-;38979:584;;39638:35;39652:3;39657:6;39665:7;39638:13;:35::i;:::-;39724:33;;;-1:-1:-1;;;;;39724:33:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;38667:1097;;;:::o;21639:102::-;21716:18;;21639:102;:::o;6709:1358::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;6896:25:31;;;;;;;6888:59;;;;;-1:-1:-1;;;6888:59:31;;;;;;;;;;;;-1:-1:-1;;;6888:59:31;;;;;;;;;;;;;;;7068:39;7082:24;7068:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7068:39:31;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;7059:5;:48;7051:96;;;;-1:-1:-1;;;7051:96:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:9;7194:601;7218:24;:31;7214:35;;7194:601;;;7308:12;:41;7321:24;7346:1;7321:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7321:27:31;7308:41;;;;;;;;;;;;;;;7304:481;;;7413:5;7369:12;:41;7382:24;7407:1;7382:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7382:27:31;7369:41;;;;;;;;;;;;:49;;-1:-1:-1;;7369:49:31;;;;;;;;;;;7436:294;7460:14;:21;:28;;7486:1;7460:28;:25;:28;:::i;:::-;7456:1;:32;7436:294;;;7542:24;7567:1;7542:27;;;;;;;;;;;;;;;;;;7521:14;:17;;-1:-1:-1;;;;;7542:27:31;;;;7536:1;;7521:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:17:31;:48;7517:195;;;7617:14;7632:21;;-1:-1:-1;;7632:25:31;;;7617:41;;;;;;;;;;;;;;;;7597:14;:17;;-1:-1:-1;;;;;7617:41:31;;;;7612:1;;7597:17;;;;;;;;;;;;;;:61;;;;;-1:-1:-1;;;;;7597:61:31;;;;;-1:-1:-1;;;;;7597:61:31;;;;;;7684:5;;7517:195;7490:3;;7436:294;;;-1:-1:-1;7747:14:31;:23;;;;;-1:-1:-1;;7747:23:31;;;:::i;:::-;;7304:481;7251:3;;7194:601;;;;7844:58;7865:10;7877:24;7844:58;;;;-1:-1:-1;;;;;7844:58:31;-1:-1:-1;;;;;7844:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7844:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7948:31;7955:24;;7948:31;:::i;:::-;-1:-1:-1;8027:25:31;:33;;-1:-1:-1;;8027:33:31;;;6709:1358::o;18215:110::-;18296:22;;18215:110;:::o;23739:25::-;;;;:::o;11082:145::-;11155:7;11208:10;11191:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11191:28:31;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11191:28:31;;;11181:39;;;;;;11174:46;;11082:145;;;:::o;4641:659::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;;;;4787:25;;;;;;;4779:59;;;;;-1:-1:-1;;;4779:59:31;;;;;;;;;;;;-1:-1:-1;;;4779:59:31;;;;;;;;;;;;;;;4959:39;4973:24;4959:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4959:39:31;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;4950:5;:48;4942:96;;;;-1:-1:-1;;;4942:96:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:31;5091:24;;5084:31;:::i;:::-;5161:25;:33;;-1:-1:-1;;5161:33:31;;;5249:44;;;5275:10;5249:44;;;;;;;;;;;;;;;;;;;;;4641:659;:::o;2948:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2948:31:31;;-1:-1:-1;2948:31:31;:::o;22008:98::-;22083:10;:16;22008:98;:::o;3126:37::-;;;;;;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;30418:425:31:-;30472:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:31;;;;;;;;;;;;-1:-1:-1;;;25001:31:31;;;;;;;;;;;;;;;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;;;;30633:37;:14;30662:7;30633:37;:28;:37;:::i;:::-;30717:7;:5;:7::i;:::-;-1:-1:-1;;;;;30717:16:31;:25;30734:7;30717:25;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30717:25:31;30795:41;30807:10;30819:7;:5;:7::i;:::-;30795:41;;;-1:-1:-1;;;;;30795:41:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30418:425;;:::o;15480:180::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;15564:40:31;:11;15596:7;15564:40;:31;:40;:::i;34129:1540::-;34212:7;34342:13;:11;:13::i;:::-;-1:-1:-1;;;;;34332:23:31;:6;-1:-1:-1;;;;;34332:23:31;;34328:68;;;-1:-1:-1;34378:7:31;34371:14;;34328:68;34428:7;-1:-1:-1;;;;;34482:20:31;;;34478:600;;34654:17;34673:12;34687:14;34711:21;34725:6;34711:13;:21::i;:::-;34651:81;;;;;;;;;;34843:9;34835:41;;;;;-1:-1:-1;;;34835:41:31;;;;;;;;;;;;-1:-1:-1;;;34835:41:31;;;;;;;;;;;;;;;34898:9;34890:28;;;;;-1:-1:-1;;;34890:28:31;;;;;;;;;;;;-1:-1:-1;;;34890:28:31;;;;;;;;;;;;;;;35035:32;35057:9;35035:17;:7;35047:4;35035:17;:11;:17;:::i;:32::-;35020:47;;34478:600;;;;35195:27;35224:22;35248:24;35282:20;:18;:20::i;:::-;35192:110;;;;;;;;;;35368:19;35360:51;;;;;-1:-1:-1;;;35360:51:31;;;;;;;;;;;;-1:-1:-1;;;35360:51:31;;;;;;;;;;;;;;;35429:19;35421:49;;;;;-1:-1:-1;;;35421:49:31;;;;;;;;;;;;-1:-1:-1;;;35421:49:31;;;;;;;;;;;;;;;35605:57;35647:14;35605:37;:12;35622:19;35605:37;:16;:37;:::i;:57::-;35598:64;34129:1540;-1:-1:-1;;;;;;;34129:1540:31:o;21239:177::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;21322:39:31;:10;21353:7;21322:39;:30;:39;:::i;17783:189::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;17870:43:31;:14;17905:7;17870:43;:34;:43;:::i;8555:827::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;8657:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:31;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;3437:23;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:31;;;;;;;;;;;;-1:-1:-1;;;3428:59:31;;;;;;;;;;;;;;;3534:1;-1:-1:-1;;;;;3509:27:31;:10;3520:1;3509:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:31;;;3501:58;;;;;-1:-1:-1;;;3501:58:31;;;;;;;;;;;;-1:-1:-1;;;3501:58:31;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;8752:14:31;;;;;;;8751:15;8743:49;;;;;-1:-1:-1;;;8743:49:31;;;;;;;;;;;;-1:-1:-1;;;8743:49:31;;;;;;;;;;;;;;;8871:9;8866:384;8886:21;;;8866:384;;;8996:12;:27;9009:10;;9020:1;9009:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9009:13:31;8996:27;;-1:-1:-1;8996:27:31;;;;;;;;-1:-1:-1;8996:27:31;;;;8991:249;;9122:4;9092:12;:27;9105:10;;9116:1;9105:13;;;;;;;;;;;;;-1:-1:-1;;;;;9105:13:31;-1:-1:-1;;;;;9092:27:31;-1:-1:-1;;;;;9092:27:31;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9191:14;9211:10;;9222:1;9211:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9191:34:31;;;9211:13;9191:34;;;;;;;-1:-1:-1;;;;;;9191:34:31;-1:-1:-1;;;;;9211:13:31;;;;;;;;;;;;;9191:34;;;;;;-1:-1:-1;8991:249:31;8909:3;;8866:384;;;-1:-1:-1;9259:14:31;:21;;-1:-1:-1;;9259:21:31;;;;;9331:44;;;9348:10;9331:44;;;;;;;;;9360:14;9331:44;;;;;;;;;;9348:10;;9360:14;;9331:44;;;;;;;9360:14;;9331:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9331:44:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;8555:827;;:::o;18386:153::-;18487:45;;;;18386:153;:::o;4123:107:25:-;4217:6;;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;13567:401:31:-;13718:35;;;;;;13717:36;13709:66;;;;;-1:-1:-1;;;13709:66:31;;;;;;;;;;;;-1:-1:-1;;;13709:66:31;;;;;;;;;;;;;;;13844:27;13857:4;13863:7;13844:12;:27::i;:::-;-1:-1:-1;13919:35:31;;:42;;-1:-1:-1;;13919:42:31;13957:4;13919:42;;;13567:401::o;2332:158:23:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;-1:-1:-1;;;;;2419:54:23;;2474:8;2419:64;;;;;;;;;;;;;-1:-1:-1;;;;;2419:64:23;-1:-1:-1;;;;;2419:64:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;2387:1891;-1:-1:-1;;;;;;;2387:1891:2:o;1207:245:21:-;1282:7;-1:-1:-1;;;;;1305:20:21;;;1301:145;;1354:6;-1:-1:-1;;;;;1348:23:21;;1372:8;1348:33;;;;;;;;;;;;;-1:-1:-1;;;;;1348:33:21;-1:-1:-1;;;;;1348:33:21;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1348:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:21;;-1:-1:-1;1341:40:21;;1301:145;-1:-1:-1;;;;;;1419:16:21;;;1412:23;;12652:240:31;12757:19;;;;12728:7;;12757:33;;12781:8;12757:33;:23;:33;:::i;:::-;12751:3;:39;12747:139;;;-1:-1:-1;12813:10:31;;12806:17;;12747:139;-1:-1:-1;12861:14:31;;;;12854:21;;14103:317;14254:35;;;;;;14246:73;;;;;-1:-1:-1;;;14246:73:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:12;;;;:22;14103:317::o;5161:156:26:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:26;;5161:156;-1:-1:-1;;;;;;;;5161:156:26:o;12192:288:31:-;12328:27;12350:4;12328:21;:27::i;:::-;12391:7;12373:4;:14;;;:25;;12365:54;;;;;-1:-1:-1;;;12365:54:31;;;;;;;;;;;;-1:-1:-1;;;12365:54:31;;;;;;;;;;;;;;;12446:14;;;;:27;;12465:7;12446:27;:18;:27;:::i;:::-;12429:4;:14;;:44;;;;12192:288;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;4644:159:26:-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:26;;4644:159;-1:-1:-1;;;;;;;;4644:159:26:o;4305:241::-;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;-1:-1:-1;;;;;4442:76:26;;4519:12;4533:5;4442:97;;;;;;;;;;;;;-1:-1:-1;;;;;4442:97:26;-1:-1:-1;;;;;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:26;;;;;;;;;;;-1:-1:-1;4305:241:26;-1:-1:-1;;;4305:241:26:o;3757:1095:5:-;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;27876:128:31:-;27926:10;:12;;;;;;;;27954:43;;;27974:10;27954:43;;;;;;;;;;;;;;;;;;;;;27876:128::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:26;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:26;-1:-1:-1;;;;;2306:66:26;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;11749:338:31:-;11934:7;11918:4;:12;;;:23;11910:70;;;;-1:-1:-1;;;11910:70:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12048:32;12061:4;12067;:12;;;12048;:32::i;:::-;11749:338;;:::o;5436:141:26:-;5482:7;5524:32;5536:19;;5524:11;:32::i;:::-;-1:-1:-1;;;;;5508:60:26;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5508:62:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5508:62:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5508:62:26;;-1:-1:-1;5436:141:26;:::o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;13038:425:31:-;13172:27;13194:4;13172:21;:27::i;:::-;13264:20;;;13376:14;;;;:27;-1:-1:-1;13372:85:31;;;13436:10;;13419:14;;;:27;13038:425;;:::o;14494:370::-;14578:19;;;;:33;;14602:8;14578:33;:23;:33;:::i;:::-;14572:3;:39;14568:290;;;14694:3;14672:19;;;:25;14795:10;;14778:14;;;:27;14824:23;;;;14795:10;;14824:23;14568:290;14494:370;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22209:17557:31:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:31;-1:-1:-1;;;;;22209:17557:31;;;;;;;;;;;;;;;;;;;-1:-1:-1;22209:17557:31;;;-1:-1:-1;22209:17557:31;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:31;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ECDSA.sol","externals/ERC165.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/balanceable.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","licence.sol","mocks/isValidSignatureExporter.sol","tokenWhitelist.sol","wallet.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[4327],"IController":[3892]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3875,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":3073,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":4328,"symbolAliases":[null],"unitAlias":""},"id":3876,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":3330,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":4328,"symbolAliases":[null],"unitAlias":""},"id":3877,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[3892],"name":"IController","scope":4328},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":3892,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3884,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3878,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":3879,"name":"VariableDeclaration","src":"1015:7:0"}],"id":3880,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3884,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3881,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":3882,"name":"VariableDeclaration","src":"1047:4:0"}],"id":3883,"name":"ParameterList","src":"1046:6:0"}],"id":3884,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":3892,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3891,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3885,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":3886,"name":"VariableDeclaration","src":"1076:7:0"}],"id":3887,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3891,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3888,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":3889,"name":"VariableDeclaration","src":"1108:4:0"}],"id":3890,"name":"ParameterList","src":"1107:6:0"}],"id":3891,"name":"FunctionDefinition","src":"1059:55:0"}],"id":3892,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[3072,3329,3892],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[4327,3329,3072,3892],"name":"Controller","scope":4328},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":3892,"type":"contract IController"},"id":3893,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":3894,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3072,"type":"contract Ownable"},"id":3895,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":3896,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3329,"type":"contract Transferrable"},"id":3897,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":3898,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3904,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3899,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":3900,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3904,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3901,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":3902,"name":"VariableDeclaration","src":"1564:19:0"}],"id":3903,"name":"ParameterList","src":"1546:38:0"}],"id":3904,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3910,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3905,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":3906,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3910,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3907,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":3908,"name":"VariableDeclaration","src":"1631:19:0"}],"id":3909,"name":"ParameterList","src":"1613:38:0"}],"id":3910,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3916,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3911,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":3912,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3916,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3913,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":3914,"name":"VariableDeclaration","src":"1692:14:0"}],"id":3915,"name":"ParameterList","src":"1674:33:0"}],"id":3916,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3922,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3917,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":3918,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3922,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3919,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":3920,"name":"VariableDeclaration","src":"1749:14:0"}],"id":3921,"name":"ParameterList","src":"1731:33:0"}],"id":3922,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3930,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3923,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":3924,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3930,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3925,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":3926,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3927,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":3928,"name":"VariableDeclaration","src":"1814:15:0"}],"id":3929,"name":"ParameterList","src":"1784:46:0"}],"id":3930,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3934,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3931,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":3932,"name":"VariableDeclaration","src":"1851:15:0"}],"id":3933,"name":"ParameterList","src":"1850:17:0"}],"id":3934,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3938,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3935,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":3936,"name":"VariableDeclaration","src":"1887:15:0"}],"id":3937,"name":"ParameterList","src":"1886:17:0"}],"id":3938,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":4327,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3939,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3940,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":3941,"name":"Mapping","src":"1910:24:0"}],"id":3942,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":4327,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3943,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":3944,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":4327,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3945,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3946,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":3947,"name":"Mapping","src":"1991:24:0"}],"id":3948,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":4327,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3949,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":3950,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":4327,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3951,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":3952,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":3962,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3953,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":3954,"name":"VariableDeclaration","src":"2251:30:0"}],"id":3955,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":3960,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3072,"type":"type(contract Ownable)","value":"Ownable"},"id":3956,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3954,"type":"address payable","value":"_ownerAddress_"},"id":3957,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3958,"name":"Literal","src":"2314:5:0"}],"id":3959,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":3961,"name":"Block","src":"2321:2:0"}],"id":3962,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3963,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3964,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3965,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3966,"name":"Identifier","src":"2431:3:0"}],"id":3967,"name":"MemberAccess","src":"2431:10:0"}],"id":3968,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":3969,"name":"Literal","src":"2444:24:0"}],"id":3970,"name":"FunctionCall","src":"2414:55:0"}],"id":3971,"name":"ExpressionStatement","src":"2414:55:0"},{"id":3972,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":3973,"name":"Block","src":"2404:83:0"}],"id":3974,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3975,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3976,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3977,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3978,"name":"Identifier","src":"2588:3:0"}],"id":3979,"name":"MemberAccess","src":"2588:10:0"}],"id":3980,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3981,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3982,"name":"Identifier","src":"2612:3:0"}],"id":3983,"name":"MemberAccess","src":"2612:10:0"}],"id":3984,"name":"IndexAccess","src":"2603:20:0"}],"id":3985,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":3986,"name":"Literal","src":"2625:24:0"}],"id":3987,"name":"FunctionCall","src":"2571:79:0"}],"id":3988,"name":"ExpressionStatement","src":"2571:79:0"},{"id":3989,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":3990,"name":"Block","src":"2561:107:0"}],"id":3991,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3992,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3993,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4106,"type":"function () view returns (bool)","value":"isStopped"},"id":3994,"name":"Identifier","src":"2762:9:0"}],"id":3995,"name":"FunctionCall","src":"2762:11:0"}],"id":3996,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":3997,"name":"Literal","src":"2775:23:0"}],"id":3998,"name":"FunctionCall","src":"2753:46:0"}],"id":3999,"name":"ExpressionStatement","src":"2753:46:0"},{"id":4000,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":4001,"name":"Block","src":"2743:74:0"}],"id":4002,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4016,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4003,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":4004,"name":"VariableDeclaration","src":"2958:16:0"}],"id":4005,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4010,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":4006,"name":"Identifier","src":"2985:9:0"}],"id":4007,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4008,"name":"Identifier","src":"2995:10:0"}],"id":4009,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4160,"type":"function (address)","value":"_addAdmin"},"id":4011,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4004,"type":"address","value":"_account"},"id":4012,"name":"Identifier","src":"3026:8:0"}],"id":4013,"name":"FunctionCall","src":"3016:19:0"}],"id":4014,"name":"ExpressionStatement","src":"3016:19:0"}],"id":4015,"name":"Block","src":"3006:36:0"}],"id":4016,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4028,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4017,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":4018,"name":"VariableDeclaration","src":"3192:16:0"}],"id":4019,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4022,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":4020,"name":"Identifier","src":"3219:9:0"}],"id":4021,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"function (address)","value":"_removeAdmin"},"id":4023,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4018,"type":"address","value":"_account"},"id":4024,"name":"Identifier","src":"3252:8:0"}],"id":4025,"name":"FunctionCall","src":"3239:22:0"}],"id":4026,"name":"ExpressionStatement","src":"3239:22:0"}],"id":4027,"name":"Block","src":"3229:39:0"}],"id":4028,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":4327,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4029,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4036,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4030,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":4031,"name":"VariableDeclaration","src":"3365:7:0"}],"id":4032,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":4032},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3944,"type":"uint256","value":"_adminCount"},"id":4033,"name":"Identifier","src":"3391:11:0"}],"id":4034,"name":"Return","src":"3384:18:0"}],"id":4035,"name":"Block","src":"3374:35:0"}],"id":4036,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4050,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4037,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":4038,"name":"VariableDeclaration","src":"3570:16:0"}],"id":4039,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4044,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4040,"name":"Identifier","src":"3597:16:0"}],"id":4041,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4042,"name":"Identifier","src":"3614:10:0"}],"id":4043,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"function (address)","value":"_addController"},"id":4045,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4038,"type":"address","value":"_account"},"id":4046,"name":"Identifier","src":"3650:8:0"}],"id":4047,"name":"FunctionCall","src":"3635:24:0"}],"id":4048,"name":"ExpressionStatement","src":"3635:24:0"}],"id":4049,"name":"Block","src":"3625:41:0"}],"id":4050,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4062,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4051,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":4052,"name":"VariableDeclaration","src":"3836:16:0"}],"id":4053,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4056,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4054,"name":"Identifier","src":"3863:16:0"}],"id":4055,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4270,"type":"function (address)","value":"_removeController"},"id":4057,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4052,"type":"address","value":"_account"},"id":4058,"name":"Identifier","src":"3908:8:0"}],"id":4059,"name":"FunctionCall","src":"3890:27:0"}],"id":4060,"name":"ExpressionStatement","src":"3890:27:0"}],"id":4061,"name":"Block","src":"3880:44:0"}],"id":4062,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":4327,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4063,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4070,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4064,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":4065,"name":"VariableDeclaration","src":"4069:7:0"}],"id":4066,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":4066},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3950,"type":"uint256","value":"_controllerCount"},"id":4067,"name":"Identifier","src":"4095:16:0"}],"id":4068,"name":"Return","src":"4088:23:0"}],"id":4069,"name":"Block","src":"4078:40:0"}],"id":4070,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":4327,"stateMutability":"view","superFunction":3891,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4084,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4071,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":4072,"name":"VariableDeclaration","src":"4239:16:0"}],"id":4073,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4084,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4076,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":4077,"name":"VariableDeclaration","src":"4291:4:0"}],"id":4078,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4074,"name":"Identifier","src":"4271:10:0"}],"id":4075,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":4078},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4079,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"address","value":"_account"},"id":4080,"name":"Identifier","src":"4323:8:0"}],"id":4081,"name":"IndexAccess","src":"4314:18:0"}],"id":4082,"name":"Return","src":"4307:25:0"}],"id":4083,"name":"Block","src":"4297:42:0"}],"id":4084,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":4327,"stateMutability":"view","superFunction":3884,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4098,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4085,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":4086,"name":"VariableDeclaration","src":"4473:16:0"}],"id":4087,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4098,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4090,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":4091,"name":"VariableDeclaration","src":"4525:4:0"}],"id":4092,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4088,"name":"Identifier","src":"4505:10:0"}],"id":4089,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":4092},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4093,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4086,"type":"address","value":"_account"},"id":4094,"name":"Identifier","src":"4562:8:0"}],"id":4095,"name":"IndexAccess","src":"4548:23:0"}],"id":4096,"name":"Return","src":"4541:30:0"}],"id":4097,"name":"Block","src":"4531:47:0"}],"id":4098,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":4327,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4099,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4106,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4100,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":4101,"name":"VariableDeclaration","src":"4766:4:0"}],"id":4102,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":4102},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3952,"type":"bool","value":"_stopped"},"id":4103,"name":"Identifier","src":"4789:8:0"}],"id":4104,"name":"Return","src":"4782:15:0"}],"id":4105,"name":"Block","src":"4772:32:0"}],"id":4106,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4160,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4107,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":4108,"name":"VariableDeclaration","src":"4891:16:0"}],"id":4109,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4110,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4111,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4112,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4113,"name":"Identifier","src":"4945:8:0"}],"id":4114,"name":"IndexAccess","src":"4936:18:0"}],"id":4115,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":4116,"name":"Literal","src":"4956:38:0"}],"id":4117,"name":"FunctionCall","src":"4927:68:0"}],"id":4118,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4119,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4120,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4121,"name":"Identifier","src":"5028:8:0"}],"id":4122,"name":"IndexAccess","src":"5014:23:0"}],"id":4123,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":4124,"name":"Literal","src":"5039:42:0"}],"id":4125,"name":"FunctionCall","src":"5005:77:0"}],"id":4126,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4127,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":4128,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4129,"name":"Identifier","src":"5110:8:0"}],"id":4130,"name":"FunctionCall","src":"5101:18:0"}],"id":4131,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":4132,"name":"Literal","src":"5121:39:0"}],"id":4133,"name":"FunctionCall","src":"5092:69:0"}],"id":4134,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4135,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4136,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4137,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4138,"name":"Literal","src":"5199:1:0"}],"id":4139,"name":"FunctionCall","src":"5191:10:0"}],"id":4140,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":4141,"name":"Literal","src":"5203:38:0"}],"id":4142,"name":"FunctionCall","src":"5171:71:0"}],"id":4143,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4144,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4145,"name":"Identifier","src":"5261:8:0"}],"id":4146,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4147,"name":"Literal","src":"5273:4:0"}],"id":4148,"name":"Assignment","src":"5252:25:0"}],"id":4149,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3944,"type":"uint256","value":"_adminCount"},"id":4150,"name":"Identifier","src":"5287:11:0"}],"id":4151,"name":"UnaryOperation","src":"5287:13:0"}],"id":4152,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"function (address,address)","value":"AddedAdmin"},"id":4153,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4154,"name":"Identifier","src":"5326:3:0"}],"id":4155,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4156,"name":"Identifier","src":"5338:8:0"}],"id":4157,"name":"FunctionCall","src":"5315:32:0"}],"id":4158,"name":"EmitStatement","src":"5310:37:0"}],"id":4159,"name":"Block","src":"4917:437:0"}],"id":4160,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4188,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4161,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":4162,"name":"VariableDeclaration","src":"5453:16:0"}],"id":4163,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4164,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4165,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4166,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4162,"type":"address","value":"_account"},"id":4167,"name":"Identifier","src":"5506:8:0"}],"id":4168,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":4169,"name":"Literal","src":"5517:34:0"}],"id":4170,"name":"FunctionCall","src":"5489:63:0"}],"id":4171,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4172,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4162,"type":"address","value":"_account"},"id":4173,"name":"Identifier","src":"5571:8:0"}],"id":4174,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4175,"name":"Literal","src":"5583:5:0"}],"id":4176,"name":"Assignment","src":"5562:26:0"}],"id":4177,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3944,"type":"uint256","value":"_adminCount"},"id":4178,"name":"Identifier","src":"5598:11:0"}],"id":4179,"name":"UnaryOperation","src":"5598:13:0"}],"id":4180,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3922,"type":"function (address,address)","value":"RemovedAdmin"},"id":4181,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4182,"name":"Identifier","src":"5639:3:0"}],"id":4183,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4162,"type":"address","value":"_account"},"id":4184,"name":"Identifier","src":"5651:8:0"}],"id":4185,"name":"FunctionCall","src":"5626:34:0"}],"id":4186,"name":"EmitStatement","src":"5621:39:0"}],"id":4187,"name":"Block","src":"5479:188:0"}],"id":4188,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4189,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":4190,"name":"VariableDeclaration","src":"5764:16:0"}],"id":4191,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4192,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4193,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4194,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4195,"name":"Identifier","src":"5818:8:0"}],"id":4196,"name":"IndexAccess","src":"5809:18:0"}],"id":4197,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":4198,"name":"Literal","src":"5829:38:0"}],"id":4199,"name":"FunctionCall","src":"5800:68:0"}],"id":4200,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4201,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4202,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4203,"name":"Identifier","src":"5901:8:0"}],"id":4204,"name":"IndexAccess","src":"5887:23:0"}],"id":4205,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":4206,"name":"Literal","src":"5912:42:0"}],"id":4207,"name":"FunctionCall","src":"5878:77:0"}],"id":4208,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4209,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":4210,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4211,"name":"Identifier","src":"5983:8:0"}],"id":4212,"name":"FunctionCall","src":"5974:18:0"}],"id":4213,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":4214,"name":"Literal","src":"5994:39:0"}],"id":4215,"name":"FunctionCall","src":"5965:69:0"}],"id":4216,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4217,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4218,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4219,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4220,"name":"Literal","src":"6072:1:0"}],"id":4221,"name":"FunctionCall","src":"6064:10:0"}],"id":4222,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":4223,"name":"Literal","src":"6076:38:0"}],"id":4224,"name":"FunctionCall","src":"6044:71:0"}],"id":4225,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4226,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4227,"name":"Identifier","src":"6139:8:0"}],"id":4228,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4229,"name":"Literal","src":"6151:4:0"}],"id":4230,"name":"Assignment","src":"6125:30:0"}],"id":4231,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3950,"type":"uint256","value":"_controllerCount"},"id":4232,"name":"Identifier","src":"6165:16:0"}],"id":4233,"name":"UnaryOperation","src":"6165:18:0"}],"id":4234,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"function (address,address)","value":"AddedController"},"id":4235,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4236,"name":"Identifier","src":"6214:3:0"}],"id":4237,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4238,"name":"Identifier","src":"6226:8:0"}],"id":4239,"name":"FunctionCall","src":"6198:37:0"}],"id":4240,"name":"EmitStatement","src":"6193:42:0"}],"id":4241,"name":"Block","src":"5790:452:0"}],"id":4242,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4270,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4243,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":4244,"name":"VariableDeclaration","src":"6351:16:0"}],"id":4245,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4246,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4247,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4248,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4244,"type":"address","value":"_account"},"id":4249,"name":"Identifier","src":"6409:8:0"}],"id":4250,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":4251,"name":"Literal","src":"6420:38:0"}],"id":4252,"name":"FunctionCall","src":"6387:72:0"}],"id":4253,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4254,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4244,"type":"address","value":"_account"},"id":4255,"name":"Identifier","src":"6483:8:0"}],"id":4256,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4257,"name":"Literal","src":"6495:5:0"}],"id":4258,"name":"Assignment","src":"6469:31:0"}],"id":4259,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3950,"type":"uint256","value":"_controllerCount"},"id":4260,"name":"Identifier","src":"6510:16:0"}],"id":4261,"name":"UnaryOperation","src":"6510:18:0"}],"id":4262,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"function (address,address)","value":"RemovedController"},"id":4263,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4264,"name":"Identifier","src":"6561:3:0"}],"id":4265,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4244,"type":"address","value":"_account"},"id":4266,"name":"Identifier","src":"6573:8:0"}],"id":4267,"name":"FunctionCall","src":"6543:39:0"}],"id":4268,"name":"EmitStatement","src":"6538:44:0"}],"id":4269,"name":"Block","src":"6377:212:0"}],"id":4270,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4271,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":4274,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4272,"name":"Identifier","src":"6687:16:0"}],"id":4273,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3952,"type":"bool","value":"_stopped"},"id":4275,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4276,"name":"Literal","src":"6725:4:0"}],"id":4277,"name":"Assignment","src":"6714:15:0"}],"id":4278,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3934,"type":"function (address)","value":"Stopped"},"id":4279,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4280,"name":"Identifier","src":"6752:3:0"}],"id":4281,"name":"MemberAccess","src":"6752:10:0"}],"id":4282,"name":"FunctionCall","src":"6744:19:0"}],"id":4283,"name":"EmitStatement","src":"6739:24:0"}],"id":4284,"name":"Block","src":"6704:66:0"}],"id":4285,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4286,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":4289,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":4287,"name":"Identifier","src":"6845:9:0"}],"id":4288,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3952,"type":"bool","value":"_stopped"},"id":4290,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4291,"name":"Literal","src":"6876:5:0"}],"id":4292,"name":"Assignment","src":"6865:16:0"}],"id":4293,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"function (address)","value":"Started"},"id":4294,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4295,"name":"Identifier","src":"6904:3:0"}],"id":4296,"name":"MemberAccess","src":"6904:10:0"}],"id":4297,"name":"FunctionCall","src":"6896:19:0"}],"id":4298,"name":"EmitStatement","src":"6891:24:0"}],"id":4299,"name":"Block","src":"6855:67:0"}],"id":4300,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4326,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4301,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":4302,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":4326,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4303,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":4304,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":4326,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4305,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":4306,"name":"VariableDeclaration","src":"7063:15:0"}],"id":4307,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":4312,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3974,"type":"modifier ()","value":"onlyAdmin"},"id":4308,"name":"Identifier","src":"7089:9:0"}],"id":4309,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4310,"name":"Identifier","src":"7099:10:0"}],"id":4311,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3328,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":4313,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4302,"type":"address payable","value":"_to"},"id":4314,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4304,"type":"address","value":"_asset"},"id":4315,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4306,"type":"uint256","value":"_amount"},"id":4316,"name":"Identifier","src":"7147:7:0"}],"id":4317,"name":"FunctionCall","src":"7120:35:0"}],"id":4318,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"function (address,address,uint256)","value":"Claimed"},"id":4319,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4302,"type":"address payable","value":"_to"},"id":4320,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4304,"type":"address","value":"_asset"},"id":4321,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4306,"type":"uint256","value":"_amount"},"id":4322,"name":"Identifier","src":"7191:7:0"}],"id":4323,"name":"FunctionCall","src":"7170:29:0"}],"id":4324,"name":"EmitStatement","src":"7165:34:0"}],"id":4325,"name":"Block","src":"7110:96:0"}],"id":4326,"name":"FunctionDefinition","src":"7011:195:0"}],"id":4327,"name":"ContractDefinition","src":"1460:5748:0"}],"id":4328,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[2246]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2229,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[2246],"name":"Address","scope":2247},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":2246,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":2245,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2230,"name":"ElementaryTypeName","src":"562:7:1"}],"id":2231,"name":"VariableDeclaration","src":"562:15:1"}],"id":2232,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":2245,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2233,"name":"ElementaryTypeName","src":"602:4:1"}],"id":2234,"name":"VariableDeclaration","src":"602:4:1"}],"id":2235,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[2237],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":2244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2236,"name":"ElementaryTypeName","src":"805:7:1"}],"id":2237,"name":"VariableDeclaration","src":"805:12:1"}],"id":2238,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":2237,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":2231,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":2239,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":2235},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2237,"type":"uint256","value":"size"},"id":2240,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2241,"name":"Literal","src":"947:1:1"}],"id":2242,"name":"BinaryOperation","src":"940:8:1"}],"id":2243,"name":"Return","src":"933:15:1"}],"id":2244,"name":"Block","src":"608:347:1"}],"id":2245,"name":"FunctionDefinition","src":"542:413:1"}],"id":2246,"name":"ContractDefinition","src":"94:863:1"}],"id":2247,"name":"SourceUnit","src":"0:958:1"}},"externals/ECDSA.sol":{"AST":{"attributes":{"absolutePath":"externals/ECDSA.sol","exportedSymbols":{"ECDSA":[2327]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2248,"name":"PragmaDirective","src":"1161:23:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n * These functions can be used to verify that a message was signed by the holder\nof the private keys of a given address.","fullyImplemented":true,"linearizedBaseContracts":[2327],"name":"ECDSA","scope":2328},"children":[{"attributes":{"documentation":"@dev Returns the address that signed a hashed message (`hash`) with\n`signature`. This address can then be used for verification purposes.\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\nthis function rejects them by requiring the `s` value to be in the lower\nhalf order, and the `v` value to be either 27 or 28.\n * NOTE: This call _does not revert_ if the signature is invalid, or\nif the signer is otherwise unable to be retrieved. In those scenarios,\nthe zero address is returned.\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\nverification to be secure: it is possible to craft signatures that\nrecover to arbitrary addresses for non-hashed data. A safe way to ensure\nthis is by receiving a hash of the original message (which may otherwise\nbe too long), and then calling {toEthSignedMessageHash} on it.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recover","scope":2327,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":2310,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2249,"name":"ElementaryTypeName","src":"2404:7:2"}],"id":2250,"name":"VariableDeclaration","src":"2404:12:2"},{"attributes":{"constant":false,"name":"signature","scope":2310,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2251,"name":"ElementaryTypeName","src":"2418:5:2"}],"id":2252,"name":"VariableDeclaration","src":"2418:22:2"}],"id":2253,"name":"ParameterList","src":"2403:38:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":2310,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2254,"name":"ElementaryTypeName","src":"2465:7:2"}],"id":2255,"name":"VariableDeclaration","src":"2465:7:2"}],"id":2256,"name":"ParameterList","src":"2464:9:2"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2252,"type":"bytes memory","value":"signature"},"id":2257,"name":"Identifier","src":"2526:9:2"}],"id":2258,"name":"MemberAccess","src":"2526:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":2259,"name":"Literal","src":"2546:2:2"}],"id":2260,"name":"BinaryOperation","src":"2526:22:2"},{"children":[{"attributes":{"functionReturnParameters":2256},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2261,"name":"ElementaryTypeNameExpression","src":"2572:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2262,"name":"Literal","src":"2580:1:2"}],"id":2263,"name":"FunctionCall","src":"2572:10:2"}],"id":2264,"name":"TupleExpression","src":"2571:12:2"}],"id":2265,"name":"Return","src":"2564:19:2"}],"id":2266,"name":"Block","src":"2550:44:2"}],"id":2267,"name":"IfStatement","src":"2522:72:2"},{"attributes":{"assignments":[2269],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":2309,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2268,"name":"ElementaryTypeName","src":"2660:7:2"}],"id":2269,"name":"VariableDeclaration","src":"2660:9:2"}],"id":2270,"name":"VariableDeclarationStatement","src":"2660:9:2"},{"attributes":{"assignments":[2272],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":2309,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2271,"name":"ElementaryTypeName","src":"2679:7:2"}],"id":2272,"name":"VariableDeclaration","src":"2679:9:2"}],"id":2273,"name":"VariableDeclarationStatement","src":"2679:9:2"},{"attributes":{"assignments":[2275],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":2309,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2274,"name":"ElementaryTypeName","src":"2698:5:2"}],"id":2275,"name":"VariableDeclaration","src":"2698:7:2"}],"id":2276,"name":"VariableDeclarationStatement","src":"2698:7:2"},{"attributes":{"externalReferences":[{"r":{"declaration":2269,"isOffset":false,"isSlot":false,"src":"2918:1:2","valueSize":1}},{"signature":{"declaration":2252,"isOffset":false,"isSlot":false,"src":"2933:9:2","valueSize":1}},{"v":{"declaration":2275,"isOffset":false,"isSlot":false,"src":"3008:1:2","valueSize":1}},{"s":{"declaration":2272,"isOffset":false,"isSlot":false,"src":"2963:1:2","valueSize":1}},{"signature":{"declaration":2252,"isOffset":false,"isSlot":false,"src":"2978:9:2","valueSize":1}},{"signature":{"declaration":2252,"isOffset":false,"isSlot":false,"src":"3031:9:2","valueSize":1}}],"operations":"{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}"},"children":[],"id":2277,"name":"InlineAssembly","src":"2895:164:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":2278,"name":"ElementaryTypeNameExpression","src":"3947:7:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2272,"type":"bytes32","value":"s"},"id":2279,"name":"Identifier","src":"3955:1:2"}],"id":2280,"name":"FunctionCall","src":"3947:10:2"},{"attributes":{"argumentTypes":null,"hexvalue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5789...(69 digits omitted)...7168","value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"id":2281,"name":"Literal","src":"3960:66:2"}],"id":2282,"name":"BinaryOperation","src":"3947:79:2"},{"children":[{"attributes":{"functionReturnParameters":2256},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2283,"name":"ElementaryTypeNameExpression","src":"4049:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2284,"name":"Literal","src":"4057:1:2"}],"id":2285,"name":"FunctionCall","src":"4049:10:2"}],"id":2286,"name":"Return","src":"4042:17:2"}],"id":2287,"name":"Block","src":"4028:42:2"}],"id":2288,"name":"IfStatement","src":"3943:127:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2275,"type":"uint8","value":"v"},"id":2289,"name":"Identifier","src":"4084:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":2290,"name":"Literal","src":"4089:2:2"}],"id":2291,"name":"BinaryOperation","src":"4084:7:2"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2275,"type":"uint8","value":"v"},"id":2292,"name":"Identifier","src":"4095:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":2293,"name":"Literal","src":"4100:2:2"}],"id":2294,"name":"BinaryOperation","src":"4095:7:2"}],"id":2295,"name":"BinaryOperation","src":"4084:18:2"},{"children":[{"attributes":{"functionReturnParameters":2256},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2296,"name":"ElementaryTypeNameExpression","src":"4125:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2297,"name":"Literal","src":"4133:1:2"}],"id":2298,"name":"FunctionCall","src":"4125:10:2"}],"id":2299,"name":"Return","src":"4118:17:2"}],"id":2300,"name":"Block","src":"4104:42:2"}],"id":2301,"name":"IfStatement","src":"4080:66:2"},{"attributes":{"functionReturnParameters":2256},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":10145,"type":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)","value":"ecrecover"},"id":2302,"name":"Identifier","src":"4247:9:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2250,"type":"bytes32","value":"hash"},"id":2303,"name":"Identifier","src":"4257:4:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2275,"type":"uint8","value":"v"},"id":2304,"name":"Identifier","src":"4263:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2269,"type":"bytes32","value":"r"},"id":2305,"name":"Identifier","src":"4266:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2272,"type":"bytes32","value":"s"},"id":2306,"name":"Identifier","src":"4269:1:2"}],"id":2307,"name":"FunctionCall","src":"4247:24:2"}],"id":2308,"name":"Return","src":"4240:31:2"}],"id":2309,"name":"Block","src":"2474:1804:2"}],"id":2310,"name":"FunctionDefinition","src":"2387:1891:2"},{"attributes":{"documentation":"@dev Returns an Ethereum Signed Message, created from a `hash`. This\nreplicates the behavior of the\nhttps://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\nJSON-RPC method.\n * See {recover}.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toEthSignedMessageHash","scope":2327,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":2326,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2311,"name":"ElementaryTypeName","src":"4574:7:2"}],"id":2312,"name":"VariableDeclaration","src":"4574:12:2"}],"id":2313,"name":"ParameterList","src":"4573:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":2326,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2314,"name":"ElementaryTypeName","src":"4611:7:2"}],"id":2315,"name":"VariableDeclaration","src":"4611:7:2"}],"id":2316,"name":"ParameterList","src":"4610:9:2"},{"children":[{"attributes":{"functionReturnParameters":2316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2317,"name":"Identifier","src":"4731:9:2"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string \"\u0019Ethereum Signed Message:\n32\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2318,"name":"Identifier","src":"4741:3:2"}],"id":2319,"name":"MemberAccess","src":"4741:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"19457468657265756d205369676e6564204d6573736167653a0a3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0019Ethereum Signed Message:\n32\"","value":"\u0019Ethereum Signed Message:\n32"},"id":2320,"name":"Literal","src":"4758:34:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2312,"type":"bytes32","value":"hash"},"id":2321,"name":"Identifier","src":"4794:4:2"}],"id":2322,"name":"FunctionCall","src":"4741:58:2"}],"id":2323,"name":"FunctionCall","src":"4731:69:2"}],"id":2324,"name":"Return","src":"4724:76:2"}],"id":2325,"name":"Block","src":"4620:187:2"}],"id":2326,"name":"FunctionDefinition","src":"4542:265:2"}],"id":2327,"name":"ContractDefinition","src":"1392:3417:2"}],"id":2328,"name":"SourceUnit","src":"1161:3649:2"}},"externals/ERC165.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC165.sol","exportedSymbols":{"ERC165":[2337]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":2329,"name":"PragmaDirective","src":"0:24:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC165 interface specifies a standard way of querying if a contract implements an interface.","fullyImplemented":false,"linearizedBaseContracts":[2337],"name":"ERC165","scope":2338},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2337,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2336,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2330,"name":"ElementaryTypeName","src":"180:6:3"}],"id":2331,"name":"VariableDeclaration","src":"180:6:3"}],"id":2332,"name":"ParameterList","src":"179:8:3"},{"children":[{"attributes":{"constant":false,"name":"","scope":2336,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2333,"name":"ElementaryTypeName","src":"211:4:3"}],"id":2334,"name":"VariableDeclaration","src":"211:4:3"}],"id":2335,"name":"ParameterList","src":"210:6:3"}],"id":2336,"name":"FunctionDefinition","src":"153:64:3"}],"id":2337,"name":"ContractDefinition","src":"130:89:3"}],"id":2338,"name":"SourceUnit","src":"0:220:3"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[2390]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":2339,"name":"PragmaDirective","src":"0:24:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[2390],"name":"ERC20","scope":2391},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":2390,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":2348,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2340,"name":"ElementaryTypeName","src":"193:7:4"}],"id":2341,"name":"VariableDeclaration","src":"193:14:4"},{"attributes":{"constant":false,"name":"_spender","scope":2348,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2342,"name":"ElementaryTypeName","src":"209:7:4"}],"id":2343,"name":"VariableDeclaration","src":"209:16:4"}],"id":2344,"name":"ParameterList","src":"192:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2345,"name":"ElementaryTypeName","src":"250:7:4"}],"id":2346,"name":"VariableDeclaration","src":"250:7:4"}],"id":2347,"name":"ParameterList","src":"249:9:4"}],"id":2348,"name":"FunctionDefinition","src":"174:85:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":2390,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":2357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2349,"name":"ElementaryTypeName","src":"281:7:4"}],"id":2350,"name":"VariableDeclaration","src":"281:16:4"},{"attributes":{"constant":false,"name":"_value","scope":2357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2351,"name":"ElementaryTypeName","src":"299:7:4"}],"id":2352,"name":"VariableDeclaration","src":"299:14:4"}],"id":2353,"name":"ParameterList","src":"280:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2357,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2354,"name":"ElementaryTypeName","src":"333:4:4"}],"id":2355,"name":"VariableDeclaration","src":"333:4:4"}],"id":2356,"name":"ParameterList","src":"332:6:4"}],"id":2357,"name":"FunctionDefinition","src":"264:75:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":2390,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":2364,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2358,"name":"ElementaryTypeName","src":"363:7:4"}],"id":2359,"name":"VariableDeclaration","src":"363:12:4"}],"id":2360,"name":"ParameterList","src":"362:14:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2364,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2361,"name":"ElementaryTypeName","src":"400:7:4"}],"id":2362,"name":"VariableDeclaration","src":"400:7:4"}],"id":2363,"name":"ParameterList","src":"399:9:4"}],"id":2364,"name":"FunctionDefinition","src":"344:65:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":2390,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2365,"name":"ParameterList","src":"434:2:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2369,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2366,"name":"ElementaryTypeName","src":"460:7:4"}],"id":2367,"name":"VariableDeclaration","src":"460:7:4"}],"id":2368,"name":"ParameterList","src":"459:9:4"}],"id":2369,"name":"FunctionDefinition","src":"414:55:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":2390,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2378,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2370,"name":"ElementaryTypeName","src":"492:7:4"}],"id":2371,"name":"VariableDeclaration","src":"492:11:4"},{"attributes":{"constant":false,"name":"_value","scope":2378,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2372,"name":"ElementaryTypeName","src":"505:7:4"}],"id":2373,"name":"VariableDeclaration","src":"505:14:4"}],"id":2374,"name":"ParameterList","src":"491:29:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2378,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2375,"name":"ElementaryTypeName","src":"539:4:4"}],"id":2376,"name":"VariableDeclaration","src":"539:4:4"}],"id":2377,"name":"ParameterList","src":"538:6:4"}],"id":2378,"name":"FunctionDefinition","src":"474:71:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":2390,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":2389,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2379,"name":"ElementaryTypeName","src":"572:7:4"}],"id":2380,"name":"VariableDeclaration","src":"572:13:4"},{"attributes":{"constant":false,"name":"_to","scope":2389,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2381,"name":"ElementaryTypeName","src":"587:7:4"}],"id":2382,"name":"VariableDeclaration","src":"587:11:4"},{"attributes":{"constant":false,"name":"_value","scope":2389,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2383,"name":"ElementaryTypeName","src":"600:7:4"}],"id":2384,"name":"VariableDeclaration","src":"600:14:4"}],"id":2385,"name":"ParameterList","src":"571:44:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2389,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2386,"name":"ElementaryTypeName","src":"634:4:4"}],"id":2387,"name":"VariableDeclaration","src":"634:4:4"}],"id":2388,"name":"ParameterList","src":"633:6:4"}],"id":2389,"name":"FunctionDefinition","src":"550:90:4"}],"id":2390,"name":"ContractDefinition","src":"152:490:4"}],"id":2391,"name":"SourceUnit","src":"0:643:4"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[2609]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2392,"name":"PragmaDirective","src":"1161:23:5"},{"attributes":{"SourceUnit":2391,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":2610,"symbolAliases":[null],"unitAlias":""},"id":2393,"name":"ImportDirective","src":"1186:21:5"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":2610,"symbolAliases":[null],"unitAlias":""},"id":2394,"name":"ImportDirective","src":"1208:24:5"},{"attributes":{"SourceUnit":2247,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":2610,"symbolAliases":[null],"unitAlias":""},"id":2395,"name":"ImportDirective","src":"1233:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[2609],"name":"SafeERC20","scope":2610},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":2396,"name":"UserDefinedTypeName","src":"1745:8:5"},{"attributes":{"name":"uint256","type":"uint256"},"id":2397,"name":"ElementaryTypeName","src":"1758:7:5"}],"id":2398,"name":"UsingForDirective","src":"1739:27:5"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":2246,"type":"library Address"},"id":2399,"name":"UserDefinedTypeName","src":"1777:7:5"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2400,"name":"ElementaryTypeName","src":"1789:7:5"}],"id":2401,"name":"UsingForDirective","src":"1771:26:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2423,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2402,"name":"UserDefinedTypeName","src":"1825:5:5"}],"id":2403,"name":"VariableDeclaration","src":"1825:11:5"},{"attributes":{"constant":false,"name":"to","scope":2423,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2404,"name":"ElementaryTypeName","src":"1838:7:5"}],"id":2405,"name":"VariableDeclaration","src":"1838:10:5"},{"attributes":{"constant":false,"name":"value","scope":2423,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2406,"name":"ElementaryTypeName","src":"1850:7:5"}],"id":2407,"name":"VariableDeclaration","src":"1850:13:5"}],"id":2408,"name":"ParameterList","src":"1824:40:5"},{"attributes":{"parameters":[null]},"children":[],"id":2409,"name":"ParameterList","src":"1874:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2410,"name":"Identifier","src":"1884:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"contract ERC20","value":"token"},"id":2411,"name":"Identifier","src":"1903:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2412,"name":"Identifier","src":"1910:3:5"}],"id":2413,"name":"MemberAccess","src":"1910:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":2378,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"contract ERC20","value":"token"},"id":2414,"name":"Identifier","src":"1933:5:5"}],"id":2415,"name":"MemberAccess","src":"1933:14:5"}],"id":2416,"name":"MemberAccess","src":"1933:23:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2405,"type":"address","value":"to"},"id":2417,"name":"Identifier","src":"1958:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2407,"type":"uint256","value":"value"},"id":2418,"name":"Identifier","src":"1962:5:5"}],"id":2419,"name":"FunctionCall","src":"1910:58:5"}],"id":2420,"name":"FunctionCall","src":"1884:85:5"}],"id":2421,"name":"ExpressionStatement","src":"1884:85:5"}],"id":2422,"name":"Block","src":"1874:102:5"}],"id":2423,"name":"FunctionDefinition","src":"1803:173:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2448,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2424,"name":"UserDefinedTypeName","src":"2008:5:5"}],"id":2425,"name":"VariableDeclaration","src":"2008:11:5"},{"attributes":{"constant":false,"name":"from","scope":2448,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2426,"name":"ElementaryTypeName","src":"2021:7:5"}],"id":2427,"name":"VariableDeclaration","src":"2021:12:5"},{"attributes":{"constant":false,"name":"to","scope":2448,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2428,"name":"ElementaryTypeName","src":"2035:7:5"}],"id":2429,"name":"VariableDeclaration","src":"2035:10:5"},{"attributes":{"constant":false,"name":"value","scope":2448,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2430,"name":"ElementaryTypeName","src":"2047:7:5"}],"id":2431,"name":"VariableDeclaration","src":"2047:13:5"}],"id":2432,"name":"ParameterList","src":"2007:54:5"},{"attributes":{"parameters":[null]},"children":[],"id":2433,"name":"ParameterList","src":"2071:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2434,"name":"Identifier","src":"2081:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2425,"type":"contract ERC20","value":"token"},"id":2435,"name":"Identifier","src":"2100:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2436,"name":"Identifier","src":"2107:3:5"}],"id":2437,"name":"MemberAccess","src":"2107:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":2389,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2425,"type":"contract ERC20","value":"token"},"id":2438,"name":"Identifier","src":"2130:5:5"}],"id":2439,"name":"MemberAccess","src":"2130:18:5"}],"id":2440,"name":"MemberAccess","src":"2130:27:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2427,"type":"address","value":"from"},"id":2441,"name":"Identifier","src":"2159:4:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2429,"type":"address","value":"to"},"id":2442,"name":"Identifier","src":"2165:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2431,"type":"uint256","value":"value"},"id":2443,"name":"Identifier","src":"2169:5:5"}],"id":2444,"name":"FunctionCall","src":"2107:68:5"}],"id":2445,"name":"FunctionCall","src":"2081:95:5"}],"id":2446,"name":"ExpressionStatement","src":"2081:95:5"}],"id":2447,"name":"Block","src":"2071:112:5"}],"id":2448,"name":"FunctionDefinition","src":"1982:201:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2489,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2449,"name":"UserDefinedTypeName","src":"2210:5:5"}],"id":2450,"name":"VariableDeclaration","src":"2210:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2489,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2451,"name":"ElementaryTypeName","src":"2223:7:5"}],"id":2452,"name":"VariableDeclaration","src":"2223:15:5"},{"attributes":{"constant":false,"name":"value","scope":2489,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2453,"name":"ElementaryTypeName","src":"2240:7:5"}],"id":2454,"name":"VariableDeclaration","src":"2240:13:5"}],"id":2455,"name":"ParameterList","src":"2209:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2456,"name":"ParameterList","src":"2264:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2457,"name":"Identifier","src":"2544:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2454,"type":"uint256","value":"value"},"id":2458,"name":"Identifier","src":"2553:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2459,"name":"Literal","src":"2562:1:5"}],"id":2460,"name":"BinaryOperation","src":"2553:10:5"}],"id":2461,"name":"TupleExpression","src":"2552:12:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2348,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2450,"type":"contract ERC20","value":"token"},"id":2462,"name":"Identifier","src":"2569:5:5"}],"id":2463,"name":"MemberAccess","src":"2569:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2609","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2464,"name":"ElementaryTypeNameExpression","src":"2585:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10175,"type":"library SafeERC20","value":"this"},"id":2465,"name":"Identifier","src":"2593:4:5"}],"id":2466,"name":"FunctionCall","src":"2585:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2452,"type":"address","value":"spender"},"id":2467,"name":"Identifier","src":"2600:7:5"}],"id":2468,"name":"FunctionCall","src":"2569:39:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2469,"name":"Literal","src":"2612:1:5"}],"id":2470,"name":"BinaryOperation","src":"2569:44:5"}],"id":2471,"name":"TupleExpression","src":"2568:46:5"}],"id":2472,"name":"BinaryOperation","src":"2552:62:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":2473,"name":"Literal","src":"2628:56:5"}],"id":2474,"name":"FunctionCall","src":"2544:150:5"}],"id":2475,"name":"ExpressionStatement","src":"2544:150:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2476,"name":"Identifier","src":"2704:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2450,"type":"contract ERC20","value":"token"},"id":2477,"name":"Identifier","src":"2723:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2478,"name":"Identifier","src":"2730:3:5"}],"id":2479,"name":"MemberAccess","src":"2730:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2357,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2450,"type":"contract ERC20","value":"token"},"id":2480,"name":"Identifier","src":"2753:5:5"}],"id":2481,"name":"MemberAccess","src":"2753:13:5"}],"id":2482,"name":"MemberAccess","src":"2753:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2452,"type":"address","value":"spender"},"id":2483,"name":"Identifier","src":"2777:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2454,"type":"uint256","value":"value"},"id":2484,"name":"Identifier","src":"2786:5:5"}],"id":2485,"name":"FunctionCall","src":"2730:62:5"}],"id":2486,"name":"FunctionCall","src":"2704:89:5"}],"id":2487,"name":"ExpressionStatement","src":"2704:89:5"}],"id":2488,"name":"Block","src":"2264:536:5"}],"id":2489,"name":"FunctionDefinition","src":"2189:611:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2524,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2490,"name":"UserDefinedTypeName","src":"2837:5:5"}],"id":2491,"name":"VariableDeclaration","src":"2837:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2524,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2492,"name":"ElementaryTypeName","src":"2850:7:5"}],"id":2493,"name":"VariableDeclaration","src":"2850:15:5"},{"attributes":{"constant":false,"name":"value","scope":2524,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2494,"name":"ElementaryTypeName","src":"2867:7:5"}],"id":2495,"name":"VariableDeclaration","src":"2867:13:5"}],"id":2496,"name":"ParameterList","src":"2836:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2497,"name":"ParameterList","src":"2891:0:5"},{"children":[{"attributes":{"assignments":[2499]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2523,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2498,"name":"ElementaryTypeName","src":"2901:7:5"}],"id":2499,"name":"VariableDeclaration","src":"2901:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2348,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2491,"type":"contract ERC20","value":"token"},"id":2500,"name":"Identifier","src":"2924:5:5"}],"id":2501,"name":"MemberAccess","src":"2924:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2609","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2502,"name":"ElementaryTypeNameExpression","src":"2940:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10175,"type":"library SafeERC20","value":"this"},"id":2503,"name":"Identifier","src":"2948:4:5"}],"id":2504,"name":"FunctionCall","src":"2940:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2493,"type":"address","value":"spender"},"id":2505,"name":"Identifier","src":"2955:7:5"}],"id":2506,"name":"FunctionCall","src":"2924:39:5"}],"id":2507,"name":"MemberAccess","src":"2924:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2495,"type":"uint256","value":"value"},"id":2508,"name":"Identifier","src":"2968:5:5"}],"id":2509,"name":"FunctionCall","src":"2924:50:5"}],"id":2510,"name":"VariableDeclarationStatement","src":"2901:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2511,"name":"Identifier","src":"2984:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2491,"type":"contract ERC20","value":"token"},"id":2512,"name":"Identifier","src":"3003:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2513,"name":"Identifier","src":"3010:3:5"}],"id":2514,"name":"MemberAccess","src":"3010:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2357,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2491,"type":"contract ERC20","value":"token"},"id":2515,"name":"Identifier","src":"3033:5:5"}],"id":2516,"name":"MemberAccess","src":"3033:13:5"}],"id":2517,"name":"MemberAccess","src":"3033:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2493,"type":"address","value":"spender"},"id":2518,"name":"Identifier","src":"3057:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2499,"type":"uint256","value":"newAllowance"},"id":2519,"name":"Identifier","src":"3066:12:5"}],"id":2520,"name":"FunctionCall","src":"3010:69:5"}],"id":2521,"name":"FunctionCall","src":"2984:96:5"}],"id":2522,"name":"ExpressionStatement","src":"2984:96:5"}],"id":2523,"name":"Block","src":"2891:196:5"}],"id":2524,"name":"FunctionDefinition","src":"2806:281:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2559,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2525,"name":"UserDefinedTypeName","src":"3124:5:5"}],"id":2526,"name":"VariableDeclaration","src":"3124:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2527,"name":"ElementaryTypeName","src":"3137:7:5"}],"id":2528,"name":"VariableDeclaration","src":"3137:15:5"},{"attributes":{"constant":false,"name":"value","scope":2559,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2529,"name":"ElementaryTypeName","src":"3154:7:5"}],"id":2530,"name":"VariableDeclaration","src":"3154:13:5"}],"id":2531,"name":"ParameterList","src":"3123:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2532,"name":"ParameterList","src":"3178:0:5"},{"children":[{"attributes":{"assignments":[2534]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2558,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2533,"name":"ElementaryTypeName","src":"3188:7:5"}],"id":2534,"name":"VariableDeclaration","src":"3188:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2348,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2526,"type":"contract ERC20","value":"token"},"id":2535,"name":"Identifier","src":"3211:5:5"}],"id":2536,"name":"MemberAccess","src":"3211:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2609","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2537,"name":"ElementaryTypeNameExpression","src":"3227:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10175,"type":"library SafeERC20","value":"this"},"id":2538,"name":"Identifier","src":"3235:4:5"}],"id":2539,"name":"FunctionCall","src":"3227:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2528,"type":"address","value":"spender"},"id":2540,"name":"Identifier","src":"3242:7:5"}],"id":2541,"name":"FunctionCall","src":"3211:39:5"}],"id":2542,"name":"MemberAccess","src":"3211:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"uint256","value":"value"},"id":2543,"name":"Identifier","src":"3255:5:5"}],"id":2544,"name":"FunctionCall","src":"3211:50:5"}],"id":2545,"name":"VariableDeclarationStatement","src":"3188:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2546,"name":"Identifier","src":"3271:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2526,"type":"contract ERC20","value":"token"},"id":2547,"name":"Identifier","src":"3290:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2548,"name":"Identifier","src":"3297:3:5"}],"id":2549,"name":"MemberAccess","src":"3297:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2357,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2526,"type":"contract ERC20","value":"token"},"id":2550,"name":"Identifier","src":"3320:5:5"}],"id":2551,"name":"MemberAccess","src":"3320:13:5"}],"id":2552,"name":"MemberAccess","src":"3320:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2528,"type":"address","value":"spender"},"id":2553,"name":"Identifier","src":"3344:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2534,"type":"uint256","value":"newAllowance"},"id":2554,"name":"Identifier","src":"3353:12:5"}],"id":2555,"name":"FunctionCall","src":"3297:69:5"}],"id":2556,"name":"FunctionCall","src":"3271:96:5"}],"id":2557,"name":"ExpressionStatement","src":"3271:96:5"}],"id":2558,"name":"Block","src":"3178:196:5"}],"id":2559,"name":"FunctionDefinition","src":"3093:281:5"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2608,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2560,"name":"UserDefinedTypeName","src":"3785:5:5"}],"id":2561,"name":"VariableDeclaration","src":"3785:11:5"},{"attributes":{"constant":false,"name":"data","scope":2608,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2562,"name":"ElementaryTypeName","src":"3798:5:5"}],"id":2563,"name":"VariableDeclaration","src":"3798:17:5"}],"id":2564,"name":"ParameterList","src":"3784:32:5"},{"attributes":{"parameters":[null]},"children":[],"id":2565,"name":"ParameterList","src":"3826:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2566,"name":"Identifier","src":"4344:7:5"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":2245,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2567,"name":"ElementaryTypeNameExpression","src":"4352:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2561,"type":"contract ERC20","value":"token"},"id":2568,"name":"Identifier","src":"4360:5:5"}],"id":2569,"name":"FunctionCall","src":"4352:14:5"}],"id":2570,"name":"MemberAccess","src":"4352:25:5"}],"id":2571,"name":"FunctionCall","src":"4352:27:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":2572,"name":"Literal","src":"4381:33:5"}],"id":2573,"name":"FunctionCall","src":"4344:71:5"}],"id":2574,"name":"ExpressionStatement","src":"4344:71:5"},{"attributes":{"assignments":[2576,2578]},"children":[{"attributes":{"constant":false,"name":"success","scope":2607,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2575,"name":"ElementaryTypeName","src":"4486:4:5"}],"id":2576,"name":"VariableDeclaration","src":"4486:12:5"},{"attributes":{"constant":false,"name":"returndata","scope":2607,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2577,"name":"ElementaryTypeName","src":"4500:5:5"}],"id":2578,"name":"VariableDeclaration","src":"4500:23:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2579,"name":"ElementaryTypeNameExpression","src":"4527:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2561,"type":"contract ERC20","value":"token"},"id":2580,"name":"Identifier","src":"4535:5:5"}],"id":2581,"name":"FunctionCall","src":"4527:14:5"}],"id":2582,"name":"MemberAccess","src":"4527:19:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"bytes memory","value":"data"},"id":2583,"name":"Identifier","src":"4547:4:5"}],"id":2584,"name":"FunctionCall","src":"4527:25:5"}],"id":2585,"name":"VariableDeclarationStatement","src":"4485:67:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2586,"name":"Identifier","src":"4562:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2576,"type":"bool","value":"success"},"id":2587,"name":"Identifier","src":"4570:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":2588,"name":"Literal","src":"4579:34:5"}],"id":2589,"name":"FunctionCall","src":"4562:52:5"}],"id":2590,"name":"ExpressionStatement","src":"4562:52:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2578,"type":"bytes memory","value":"returndata"},"id":2591,"name":"Identifier","src":"4629:10:5"}],"id":2592,"name":"MemberAccess","src":"4629:17:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2593,"name":"Literal","src":"4649:1:5"}],"id":2594,"name":"BinaryOperation","src":"4629:21:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2595,"name":"Identifier","src":"4750:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2596,"name":"Identifier","src":"4758:3:5"}],"id":2597,"name":"MemberAccess","src":"4758:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2578,"type":"bytes memory","value":"returndata"},"id":2598,"name":"Identifier","src":"4769:10:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":2599,"name":"ElementaryTypeNameExpression","src":"4782:4:5"}],"id":2600,"name":"TupleExpression","src":"4781:6:5"}],"id":2601,"name":"FunctionCall","src":"4758:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":2602,"name":"Literal","src":"4790:44:5"}],"id":2603,"name":"FunctionCall","src":"4750:85:5"}],"id":2604,"name":"ExpressionStatement","src":"4750:85:5"}],"id":2605,"name":"Block","src":"4652:194:5"}],"id":2606,"name":"IfStatement","src":"4625:221:5"}],"id":2607,"name":"Block","src":"3826:1026:5"}],"id":2608,"name":"FunctionDefinition","src":"3757:1095:5"}],"id":2609,"name":"ContractDefinition","src":"1715:3139:5"}],"id":2610,"name":"SourceUnit","src":"1161:3694:5"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[2742]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2611,"name":"PragmaDirective","src":"0:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[2742],"name":"SafeMath","scope":2743},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2612,"name":"ElementaryTypeName","src":"847:7:6"}],"id":2613,"name":"VariableDeclaration","src":"847:9:6"},{"attributes":{"constant":false,"name":"b","scope":2636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2614,"name":"ElementaryTypeName","src":"858:7:6"}],"id":2615,"name":"VariableDeclaration","src":"858:9:6"}],"id":2616,"name":"ParameterList","src":"846:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2617,"name":"ElementaryTypeName","src":"892:7:6"}],"id":2618,"name":"VariableDeclaration","src":"892:7:6"}],"id":2619,"name":"ParameterList","src":"891:9:6"},{"children":[{"attributes":{"assignments":[2621]},"children":[{"attributes":{"constant":false,"name":"c","scope":2635,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2620,"name":"ElementaryTypeName","src":"911:7:6"}],"id":2621,"name":"VariableDeclaration","src":"911:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2613,"type":"uint256","value":"a"},"id":2622,"name":"Identifier","src":"923:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2615,"type":"uint256","value":"b"},"id":2623,"name":"Identifier","src":"927:1:6"}],"id":2624,"name":"BinaryOperation","src":"923:5:6"}],"id":2625,"name":"VariableDeclarationStatement","src":"911:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2626,"name":"Identifier","src":"938:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2621,"type":"uint256","value":"c"},"id":2627,"name":"Identifier","src":"946:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2613,"type":"uint256","value":"a"},"id":2628,"name":"Identifier","src":"951:1:6"}],"id":2629,"name":"BinaryOperation","src":"946:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":2630,"name":"Literal","src":"954:29:6"}],"id":2631,"name":"FunctionCall","src":"938:46:6"}],"id":2632,"name":"ExpressionStatement","src":"938:46:6"},{"attributes":{"functionReturnParameters":2619},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2621,"type":"uint256","value":"c"},"id":2633,"name":"Identifier","src":"1002:1:6"}],"id":2634,"name":"Return","src":"995:8:6"}],"id":2635,"name":"Block","src":"901:109:6"}],"id":2636,"name":"FunctionDefinition","src":"834:176:6"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2637,"name":"ElementaryTypeName","src":"1287:7:6"}],"id":2638,"name":"VariableDeclaration","src":"1287:9:6"},{"attributes":{"constant":false,"name":"b","scope":2661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2639,"name":"ElementaryTypeName","src":"1298:7:6"}],"id":2640,"name":"VariableDeclaration","src":"1298:9:6"}],"id":2641,"name":"ParameterList","src":"1286:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2642,"name":"ElementaryTypeName","src":"1332:7:6"}],"id":2643,"name":"VariableDeclaration","src":"1332:7:6"}],"id":2644,"name":"ParameterList","src":"1331:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2645,"name":"Identifier","src":"1351:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"uint256","value":"b"},"id":2646,"name":"Identifier","src":"1359:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2638,"type":"uint256","value":"a"},"id":2647,"name":"Identifier","src":"1364:1:6"}],"id":2648,"name":"BinaryOperation","src":"1359:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":2649,"name":"Literal","src":"1367:32:6"}],"id":2650,"name":"FunctionCall","src":"1351:49:6"}],"id":2651,"name":"ExpressionStatement","src":"1351:49:6"},{"attributes":{"assignments":[2653]},"children":[{"attributes":{"constant":false,"name":"c","scope":2660,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2652,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":2653,"name":"VariableDeclaration","src":"1410:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2638,"type":"uint256","value":"a"},"id":2654,"name":"Identifier","src":"1422:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"uint256","value":"b"},"id":2655,"name":"Identifier","src":"1426:1:6"}],"id":2656,"name":"BinaryOperation","src":"1422:5:6"}],"id":2657,"name":"VariableDeclarationStatement","src":"1410:17:6"},{"attributes":{"functionReturnParameters":2644},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2653,"type":"uint256","value":"c"},"id":2658,"name":"Identifier","src":"1445:1:6"}],"id":2659,"name":"Return","src":"1438:8:6"}],"id":2660,"name":"Block","src":"1341:112:6"}],"id":2661,"name":"FunctionDefinition","src":"1274:179:6"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2662,"name":"ElementaryTypeName","src":"1706:7:6"}],"id":2663,"name":"VariableDeclaration","src":"1706:9:6"},{"attributes":{"constant":false,"name":"b","scope":2695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2664,"name":"ElementaryTypeName","src":"1717:7:6"}],"id":2665,"name":"VariableDeclaration","src":"1717:9:6"}],"id":2666,"name":"ParameterList","src":"1705:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2667,"name":"ElementaryTypeName","src":"1751:7:6"}],"id":2668,"name":"VariableDeclaration","src":"1751:7:6"}],"id":2669,"name":"ParameterList","src":"1750:9:6"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2663,"type":"uint256","value":"a"},"id":2670,"name":"Identifier","src":"1991:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2671,"name":"Literal","src":"1996:1:6"}],"id":2672,"name":"BinaryOperation","src":"1991:6:6"},{"children":[{"attributes":{"functionReturnParameters":2669},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2673,"name":"Literal","src":"2020:1:6"}],"id":2674,"name":"Return","src":"2013:8:6"}],"id":2675,"name":"Block","src":"1999:33:6"}],"id":2676,"name":"IfStatement","src":"1987:45:6"},{"attributes":{"assignments":[2678]},"children":[{"attributes":{"constant":false,"name":"c","scope":2694,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2677,"name":"ElementaryTypeName","src":"2042:7:6"}],"id":2678,"name":"VariableDeclaration","src":"2042:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2663,"type":"uint256","value":"a"},"id":2679,"name":"Identifier","src":"2054:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2665,"type":"uint256","value":"b"},"id":2680,"name":"Identifier","src":"2058:1:6"}],"id":2681,"name":"BinaryOperation","src":"2054:5:6"}],"id":2682,"name":"VariableDeclarationStatement","src":"2042:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2683,"name":"Identifier","src":"2069:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"uint256","value":"c"},"id":2684,"name":"Identifier","src":"2077:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2663,"type":"uint256","value":"a"},"id":2685,"name":"Identifier","src":"2081:1:6"}],"id":2686,"name":"BinaryOperation","src":"2077:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2665,"type":"uint256","value":"b"},"id":2687,"name":"Identifier","src":"2086:1:6"}],"id":2688,"name":"BinaryOperation","src":"2077:10:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":2689,"name":"Literal","src":"2089:35:6"}],"id":2690,"name":"FunctionCall","src":"2069:56:6"}],"id":2691,"name":"ExpressionStatement","src":"2069:56:6"},{"attributes":{"functionReturnParameters":2669},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"uint256","value":"c"},"id":2692,"name":"Identifier","src":"2143:1:6"}],"id":2693,"name":"Return","src":"2136:8:6"}],"id":2694,"name":"Block","src":"1760:391:6"}],"id":2695,"name":"FunctionDefinition","src":"1693:458:6"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2696,"name":"ElementaryTypeName","src":"2619:7:6"}],"id":2697,"name":"VariableDeclaration","src":"2619:9:6"},{"attributes":{"constant":false,"name":"b","scope":2720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2698,"name":"ElementaryTypeName","src":"2630:7:6"}],"id":2699,"name":"VariableDeclaration","src":"2630:9:6"}],"id":2700,"name":"ParameterList","src":"2618:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2701,"name":"ElementaryTypeName","src":"2664:7:6"}],"id":2702,"name":"VariableDeclaration","src":"2664:7:6"}],"id":2703,"name":"ParameterList","src":"2663:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2704,"name":"Identifier","src":"2749:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2699,"type":"uint256","value":"b"},"id":2705,"name":"Identifier","src":"2757:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2706,"name":"Literal","src":"2761:1:6"}],"id":2707,"name":"BinaryOperation","src":"2757:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":2708,"name":"Literal","src":"2764:28:6"}],"id":2709,"name":"FunctionCall","src":"2749:44:6"}],"id":2710,"name":"ExpressionStatement","src":"2749:44:6"},{"attributes":{"assignments":[2712]},"children":[{"attributes":{"constant":false,"name":"c","scope":2719,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2711,"name":"ElementaryTypeName","src":"2803:7:6"}],"id":2712,"name":"VariableDeclaration","src":"2803:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2697,"type":"uint256","value":"a"},"id":2713,"name":"Identifier","src":"2815:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2699,"type":"uint256","value":"b"},"id":2714,"name":"Identifier","src":"2819:1:6"}],"id":2715,"name":"BinaryOperation","src":"2815:5:6"}],"id":2716,"name":"VariableDeclarationStatement","src":"2803:17:6"},{"attributes":{"functionReturnParameters":2703},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"uint256","value":"c"},"id":2717,"name":"Identifier","src":"2924:1:6"}],"id":2718,"name":"Return","src":"2917:8:6"}],"id":2719,"name":"Block","src":"2673:259:6"}],"id":2720,"name":"FunctionDefinition","src":"2606:326:6"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2721,"name":"ElementaryTypeName","src":"3389:7:6"}],"id":2722,"name":"VariableDeclaration","src":"3389:9:6"},{"attributes":{"constant":false,"name":"b","scope":2741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2723,"name":"ElementaryTypeName","src":"3400:7:6"}],"id":2724,"name":"VariableDeclaration","src":"3400:9:6"}],"id":2725,"name":"ParameterList","src":"3388:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2726,"name":"ElementaryTypeName","src":"3434:7:6"}],"id":2727,"name":"VariableDeclaration","src":"3434:7:6"}],"id":2728,"name":"ParameterList","src":"3433:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2729,"name":"Identifier","src":"3453:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2724,"type":"uint256","value":"b"},"id":2730,"name":"Identifier","src":"3461:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2731,"name":"Literal","src":"3466:1:6"}],"id":2732,"name":"BinaryOperation","src":"3461:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":2733,"name":"Literal","src":"3469:26:6"}],"id":2734,"name":"FunctionCall","src":"3453:43:6"}],"id":2735,"name":"ExpressionStatement","src":"3453:43:6"},{"attributes":{"functionReturnParameters":2728},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2722,"type":"uint256","value":"a"},"id":2736,"name":"Identifier","src":"3513:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2724,"type":"uint256","value":"b"},"id":2737,"name":"Identifier","src":"3517:1:6"}],"id":2738,"name":"BinaryOperation","src":"3513:5:6"}],"id":2739,"name":"Return","src":"3506:12:6"}],"id":2740,"name":"Block","src":"3443:82:6"}],"id":2741,"name":"FunctionDefinition","src":"3376:149:6"}],"id":2742,"name":"ContractDefinition","src":"589:2938:6"}],"id":2743,"name":"SourceUnit","src":"0:3528:6"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[4464]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4329,"name":"PragmaDirective","src":"1400:23:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4464],"name":"ENS","scope":4465},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4337,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4330,"name":"ElementaryTypeName","src":"1534:7:7"}],"id":4331,"name":"VariableDeclaration","src":"1534:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":4337,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4332,"name":"ElementaryTypeName","src":"1557:7:7"}],"id":4333,"name":"VariableDeclaration","src":"1557:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4337,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4334,"name":"ElementaryTypeName","src":"1581:7:7"}],"id":4335,"name":"VariableDeclaration","src":"1581:14:7"}],"id":4336,"name":"ParameterList","src":"1533:63:7"}],"id":4337,"name":"EventDefinition","src":"1519:78:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4338,"name":"ElementaryTypeName","src":"1695:7:7"}],"id":4339,"name":"VariableDeclaration","src":"1695:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4340,"name":"ElementaryTypeName","src":"1718:7:7"}],"id":4341,"name":"VariableDeclaration","src":"1718:14:7"}],"id":4342,"name":"ParameterList","src":"1694:39:7"}],"id":4343,"name":"EventDefinition","src":"1680:54:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4349,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4344,"name":"ElementaryTypeName","src":"1810:7:7"}],"id":4345,"name":"VariableDeclaration","src":"1810:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":4349,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4346,"name":"ElementaryTypeName","src":"1833:7:7"}],"id":4347,"name":"VariableDeclaration","src":"1833:17:7"}],"id":4348,"name":"ParameterList","src":"1809:42:7"}],"id":4349,"name":"EventDefinition","src":"1792:60:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4355,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4350,"name":"ElementaryTypeName","src":"1916:7:7"}],"id":4351,"name":"VariableDeclaration","src":"1916:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":4355,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4352,"name":"ElementaryTypeName","src":"1939:6:7"}],"id":4353,"name":"VariableDeclaration","src":"1939:11:7"}],"id":4354,"name":"ParameterList","src":"1915:36:7"}],"id":4355,"name":"EventDefinition","src":"1903:49:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":4363,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4356,"name":"ElementaryTypeName","src":"2031:7:7"}],"id":4357,"name":"VariableDeclaration","src":"2031:22:7"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":4363,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4358,"name":"ElementaryTypeName","src":"2055:7:7"}],"id":4359,"name":"VariableDeclaration","src":"2055:25:7"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":4363,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4360,"name":"ElementaryTypeName","src":"2082:4:7"}],"id":4361,"name":"VariableDeclaration","src":"2082:14:7"}],"id":4362,"name":"ParameterList","src":"2030:67:7"}],"id":4363,"name":"EventDefinition","src":"2010:88:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4374,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4364,"name":"ElementaryTypeName","src":"2123:7:7"}],"id":4365,"name":"VariableDeclaration","src":"2123:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4374,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4366,"name":"ElementaryTypeName","src":"2138:7:7"}],"id":4367,"name":"VariableDeclaration","src":"2138:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4374,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4368,"name":"ElementaryTypeName","src":"2154:7:7"}],"id":4369,"name":"VariableDeclaration","src":"2154:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4374,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4370,"name":"ElementaryTypeName","src":"2173:6:7"}],"id":4371,"name":"VariableDeclaration","src":"2173:11:7"}],"id":4372,"name":"ParameterList","src":"2122:63:7"},{"attributes":{"parameters":[null]},"children":[],"id":4373,"name":"ParameterList","src":"2194:0:7"}],"id":4374,"name":"FunctionDefinition","src":"2104:91:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4387,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4375,"name":"ElementaryTypeName","src":"2226:7:7"}],"id":4376,"name":"VariableDeclaration","src":"2226:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4387,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4377,"name":"ElementaryTypeName","src":"2241:7:7"}],"id":4378,"name":"VariableDeclaration","src":"2241:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4387,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4379,"name":"ElementaryTypeName","src":"2257:7:7"}],"id":4380,"name":"VariableDeclaration","src":"2257:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4387,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4381,"name":"ElementaryTypeName","src":"2273:7:7"}],"id":4382,"name":"VariableDeclaration","src":"2273:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4387,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4383,"name":"ElementaryTypeName","src":"2292:6:7"}],"id":4384,"name":"VariableDeclaration","src":"2292:11:7"}],"id":4385,"name":"ParameterList","src":"2225:79:7"},{"attributes":{"parameters":[null]},"children":[],"id":4386,"name":"ParameterList","src":"2313:0:7"}],"id":4387,"name":"FunctionDefinition","src":"2200:114:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4398,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4388,"name":"ElementaryTypeName","src":"2344:7:7"}],"id":4389,"name":"VariableDeclaration","src":"2344:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4398,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4390,"name":"ElementaryTypeName","src":"2359:7:7"}],"id":4391,"name":"VariableDeclaration","src":"2359:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4398,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4392,"name":"ElementaryTypeName","src":"2375:7:7"}],"id":4393,"name":"VariableDeclaration","src":"2375:14:7"}],"id":4394,"name":"ParameterList","src":"2343:47:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4398,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4395,"name":"ElementaryTypeName","src":"2408:7:7"}],"id":4396,"name":"VariableDeclaration","src":"2408:7:7"}],"id":4397,"name":"ParameterList","src":"2407:9:7"}],"id":4398,"name":"FunctionDefinition","src":"2319:98:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4405,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4399,"name":"ElementaryTypeName","src":"2443:7:7"}],"id":4400,"name":"VariableDeclaration","src":"2443:13:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4405,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4401,"name":"ElementaryTypeName","src":"2458:7:7"}],"id":4402,"name":"VariableDeclaration","src":"2458:17:7"}],"id":4403,"name":"ParameterList","src":"2442:34:7"},{"attributes":{"parameters":[null]},"children":[],"id":4404,"name":"ParameterList","src":"2485:0:7"}],"id":4405,"name":"FunctionDefinition","src":"2422:64:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4412,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4406,"name":"ElementaryTypeName","src":"2509:7:7"}],"id":4407,"name":"VariableDeclaration","src":"2509:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4412,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4408,"name":"ElementaryTypeName","src":"2524:7:7"}],"id":4409,"name":"VariableDeclaration","src":"2524:14:7"}],"id":4410,"name":"ParameterList","src":"2508:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":4411,"name":"ParameterList","src":"2548:0:7"}],"id":4412,"name":"FunctionDefinition","src":"2491:58:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4419,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4413,"name":"ElementaryTypeName","src":"2570:7:7"}],"id":4414,"name":"VariableDeclaration","src":"2570:13:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4419,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4415,"name":"ElementaryTypeName","src":"2585:6:7"}],"id":4416,"name":"VariableDeclaration","src":"2585:11:7"}],"id":4417,"name":"ParameterList","src":"2569:28:7"},{"attributes":{"parameters":[null]},"children":[],"id":4418,"name":"ParameterList","src":"2606:0:7"}],"id":4419,"name":"FunctionDefinition","src":"2554:53:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":4426,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4420,"name":"ElementaryTypeName","src":"2639:7:7"}],"id":4421,"name":"VariableDeclaration","src":"2639:17:7"},{"attributes":{"constant":false,"name":"_approved","scope":4426,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4422,"name":"ElementaryTypeName","src":"2658:4:7"}],"id":4423,"name":"VariableDeclaration","src":"2658:14:7"}],"id":4424,"name":"ParameterList","src":"2638:35:7"},{"attributes":{"parameters":[null]},"children":[],"id":4425,"name":"ParameterList","src":"2682:0:7"}],"id":4426,"name":"FunctionDefinition","src":"2612:71:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4433,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4427,"name":"ElementaryTypeName","src":"2703:7:7"}],"id":4428,"name":"VariableDeclaration","src":"2703:13:7"}],"id":4429,"name":"ParameterList","src":"2702:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4433,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4430,"name":"ElementaryTypeName","src":"2741:7:7"}],"id":4431,"name":"VariableDeclaration","src":"2741:7:7"}],"id":4432,"name":"ParameterList","src":"2740:9:7"}],"id":4433,"name":"FunctionDefinition","src":"2688:62:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4440,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4434,"name":"ElementaryTypeName","src":"2773:7:7"}],"id":4435,"name":"VariableDeclaration","src":"2773:13:7"}],"id":4436,"name":"ParameterList","src":"2772:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4440,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4437,"name":"ElementaryTypeName","src":"2811:7:7"}],"id":4438,"name":"VariableDeclaration","src":"2811:7:7"}],"id":4439,"name":"ParameterList","src":"2810:9:7"}],"id":4440,"name":"FunctionDefinition","src":"2755:65:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4447,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4441,"name":"ElementaryTypeName","src":"2838:7:7"}],"id":4442,"name":"VariableDeclaration","src":"2838:13:7"}],"id":4443,"name":"ParameterList","src":"2837:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4447,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4444,"name":"ElementaryTypeName","src":"2876:6:7"}],"id":4445,"name":"VariableDeclaration","src":"2876:6:7"}],"id":4446,"name":"ParameterList","src":"2875:8:7"}],"id":4447,"name":"FunctionDefinition","src":"2825:59:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4454,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4448,"name":"ElementaryTypeName","src":"2911:7:7"}],"id":4449,"name":"VariableDeclaration","src":"2911:13:7"}],"id":4450,"name":"ParameterList","src":"2910:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4451,"name":"ElementaryTypeName","src":"2949:4:7"}],"id":4452,"name":"VariableDeclaration","src":"2949:4:7"}],"id":4453,"name":"ParameterList","src":"2948:6:7"}],"id":4454,"name":"FunctionDefinition","src":"2889:66:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":4463,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4455,"name":"ElementaryTypeName","src":"2986:7:7"}],"id":4456,"name":"VariableDeclaration","src":"2986:14:7"},{"attributes":{"constant":false,"name":"_operator","scope":4463,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4457,"name":"ElementaryTypeName","src":"3002:7:7"}],"id":4458,"name":"VariableDeclaration","src":"3002:17:7"}],"id":4459,"name":"ParameterList","src":"2985:35:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4463,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4460,"name":"ElementaryTypeName","src":"3044:4:7"}],"id":4461,"name":"VariableDeclaration","src":"3044:4:7"}],"id":4462,"name":"ParameterList","src":"3043:6:7"}],"id":4463,"name":"FunctionDefinition","src":"2960:90:7"}],"id":4464,"name":"ContractDefinition","src":"1425:1627:7"}],"id":4465,"name":"SourceUnit","src":"1400:1653:7"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[10138]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9419,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[10138],"name":"ENSBytesUtils","scope":10139},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9441,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9420,"name":"ElementaryTypeName","src":"325:5:8"}],"id":9421,"name":"VariableDeclaration","src":"325:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9441,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9422,"name":"ElementaryTypeName","src":"344:4:8"}],"id":9423,"name":"VariableDeclaration","src":"344:11:8"},{"attributes":{"constant":false,"name":"len","scope":9441,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9424,"name":"ElementaryTypeName","src":"357:4:8"}],"id":9425,"name":"VariableDeclaration","src":"357:8:8"}],"id":9426,"name":"ParameterList","src":"324:42:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9441,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9427,"name":"ElementaryTypeName","src":"390:7:8"}],"id":9428,"name":"VariableDeclaration","src":"390:11:8"}],"id":9429,"name":"ParameterList","src":"389:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9430,"name":"Identifier","src":"413:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9423,"type":"uint256","value":"offset"},"id":9431,"name":"Identifier","src":"421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9425,"type":"uint256","value":"len"},"id":9432,"name":"Identifier","src":"430:3:8"}],"id":9433,"name":"BinaryOperation","src":"421:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9421,"type":"bytes memory","value":"self"},"id":9434,"name":"Identifier","src":"437:4:8"}],"id":9435,"name":"MemberAccess","src":"437:11:8"}],"id":9436,"name":"BinaryOperation","src":"421:27:8"}],"id":9437,"name":"FunctionCall","src":"413:36:8"}],"id":9438,"name":"ExpressionStatement","src":"413:36:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9428,"isOffset":false,"isSlot":false,"src":"482:3:8","valueSize":1}},{"self":{"declaration":9421,"isOffset":false,"isSlot":false,"src":"507:4:8","valueSize":1}},{"offset":{"declaration":9423,"isOffset":false,"isSlot":false,"src":"518:6:8","valueSize":1}},{"len":{"declaration":9425,"isOffset":false,"isSlot":false,"src":"527:3:8","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":9439,"name":"InlineAssembly","src":"459:82:8"}],"id":9440,"name":"Block","src":"403:144:8"}],"id":9441,"name":"FunctionDefinition","src":"309:238:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9462,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9442,"name":"ElementaryTypeName","src":"920:5:8"}],"id":9443,"name":"VariableDeclaration","src":"920:17:8"},{"attributes":{"constant":false,"name":"other","scope":9462,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9444,"name":"ElementaryTypeName","src":"939:5:8"}],"id":9445,"name":"VariableDeclaration","src":"939:18:8"}],"id":9446,"name":"ParameterList","src":"919:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9462,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9447,"name":"ElementaryTypeName","src":"982:3:8"}],"id":9448,"name":"VariableDeclaration","src":"982:3:8"}],"id":9449,"name":"ParameterList","src":"981:5:8"},{"children":[{"attributes":{"functionReturnParameters":9449},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9462,9594],"referencedDeclaration":9594,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":9450,"name":"Identifier","src":"1004:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9443,"type":"bytes memory","value":"self"},"id":9451,"name":"Identifier","src":"1012:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9452,"name":"Literal","src":"1018:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9443,"type":"bytes memory","value":"self"},"id":9453,"name":"Identifier","src":"1021:4:8"}],"id":9454,"name":"MemberAccess","src":"1021:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9445,"type":"bytes memory","value":"other"},"id":9455,"name":"Identifier","src":"1034:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9456,"name":"Literal","src":"1041:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9445,"type":"bytes memory","value":"other"},"id":9457,"name":"Identifier","src":"1044:5:8"}],"id":9458,"name":"MemberAccess","src":"1044:12:8"}],"id":9459,"name":"FunctionCall","src":"1004:53:8"}],"id":9460,"name":"Return","src":"997:60:8"}],"id":9461,"name":"Block","src":"987:77:8"}],"id":9462,"name":"FunctionDefinition","src":"903:161:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9594,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9463,"name":"ElementaryTypeName","src":"1694:5:8"}],"id":9464,"name":"VariableDeclaration","src":"1694:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9465,"name":"ElementaryTypeName","src":"1713:4:8"}],"id":9466,"name":"VariableDeclaration","src":"1713:11:8"},{"attributes":{"constant":false,"name":"len","scope":9594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9467,"name":"ElementaryTypeName","src":"1726:4:8"}],"id":9468,"name":"VariableDeclaration","src":"1726:8:8"},{"attributes":{"constant":false,"name":"other","scope":9594,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9469,"name":"ElementaryTypeName","src":"1736:5:8"}],"id":9470,"name":"VariableDeclaration","src":"1736:18:8"},{"attributes":{"constant":false,"name":"otheroffset","scope":9594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9471,"name":"ElementaryTypeName","src":"1756:4:8"}],"id":9472,"name":"VariableDeclaration","src":"1756:16:8"},{"attributes":{"constant":false,"name":"otherlen","scope":9594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9473,"name":"ElementaryTypeName","src":"1774:4:8"}],"id":9474,"name":"VariableDeclaration","src":"1774:13:8"}],"id":9475,"name":"ParameterList","src":"1693:95:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9594,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9476,"name":"ElementaryTypeName","src":"1812:3:8"}],"id":9477,"name":"VariableDeclaration","src":"1812:3:8"}],"id":9478,"name":"ParameterList","src":"1811:5:8"},{"children":[{"attributes":{"assignments":[9480]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":9593,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9479,"name":"ElementaryTypeName","src":"1827:4:8"}],"id":9480,"name":"VariableDeclaration","src":"1827:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9468,"type":"uint256","value":"len"},"id":9481,"name":"Identifier","src":"1843:3:8"}],"id":9482,"name":"VariableDeclarationStatement","src":"1827:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9474,"type":"uint256","value":"otherlen"},"id":9483,"name":"Identifier","src":"1860:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9468,"type":"uint256","value":"len"},"id":9484,"name":"Identifier","src":"1871:3:8"}],"id":9485,"name":"BinaryOperation","src":"1860:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9480,"type":"uint256","value":"shortest"},"id":9486,"name":"Identifier","src":"1884:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9474,"type":"uint256","value":"otherlen"},"id":9487,"name":"Identifier","src":"1895:8:8"}],"id":9488,"name":"Assignment","src":"1884:19:8"}],"id":9489,"name":"ExpressionStatement","src":"1884:19:8"}],"id":9490,"name":"IfStatement","src":"1856:47:8"},{"attributes":{"assignments":[9492],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":9593,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9491,"name":"ElementaryTypeName","src":"1914:4:8"}],"id":9492,"name":"VariableDeclaration","src":"1914:12:8"}],"id":9493,"name":"VariableDeclarationStatement","src":"1914:12:8"},{"attributes":{"assignments":[9495],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":9593,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9494,"name":"ElementaryTypeName","src":"1936:4:8"}],"id":9495,"name":"VariableDeclaration","src":"1936:13:8"}],"id":9496,"name":"VariableDeclarationStatement","src":"1936:13:8"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":9492,"isOffset":false,"isSlot":false,"src":"1983:7:8","valueSize":1}},{"otherptr":{"declaration":9495,"isOffset":false,"isSlot":false,"src":"2033:8:8","valueSize":1}},{"offset":{"declaration":9466,"isOffset":false,"isSlot":false,"src":"2008:6:8","valueSize":1}},{"self":{"declaration":9464,"isOffset":false,"isSlot":false,"src":"1998:4:8","valueSize":1}},{"otheroffset":{"declaration":9472,"isOffset":false,"isSlot":false,"src":"2060:11:8","valueSize":1}},{"other":{"declaration":9470,"isOffset":false,"isSlot":false,"src":"2049:5:8","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":9497,"name":"InlineAssembly","src":"1960:127:8"},{"children":[{"attributes":{"assignments":[9499]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9584,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9498,"name":"ElementaryTypeName","src":"2101:4:8"}],"id":9499,"name":"VariableDeclaration","src":"2101:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9500,"name":"Literal","src":"2112:1:8"}],"id":9501,"name":"VariableDeclarationStatement","src":"2101:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9499,"type":"uint256","value":"idx"},"id":9502,"name":"Identifier","src":"2115:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9480,"type":"uint256","value":"shortest"},"id":9503,"name":"Identifier","src":"2121:8:8"}],"id":9504,"name":"BinaryOperation","src":"2115:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9499,"type":"uint256","value":"idx"},"id":9505,"name":"Identifier","src":"2131:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9506,"name":"Literal","src":"2138:2:8"}],"id":9507,"name":"Assignment","src":"2131:9:8"}],"id":9508,"name":"ExpressionStatement","src":"2131:9:8"},{"children":[{"attributes":{"assignments":[9510],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":9583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9509,"name":"ElementaryTypeName","src":"2156:4:8"}],"id":9510,"name":"VariableDeclaration","src":"2156:6:8"}],"id":9511,"name":"VariableDeclarationStatement","src":"2156:6:8"},{"attributes":{"assignments":[9513],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":9583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9512,"name":"ElementaryTypeName","src":"2176:4:8"}],"id":9513,"name":"VariableDeclaration","src":"2176:6:8"}],"id":9514,"name":"VariableDeclarationStatement","src":"2176:6:8"},{"attributes":{"externalReferences":[{"a":{"declaration":9510,"isOffset":false,"isSlot":false,"src":"2223:1:8","valueSize":1}},{"selfptr":{"declaration":9492,"isOffset":false,"isSlot":false,"src":"2234:7:8","valueSize":1}},{"b":{"declaration":9513,"isOffset":false,"isSlot":false,"src":"2259:1:8","valueSize":1}},{"otherptr":{"declaration":9495,"isOffset":false,"isSlot":false,"src":"2270:8:8","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":9515,"name":"InlineAssembly","src":"2196:97:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"a"},"id":9516,"name":"Identifier","src":"2310:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9513,"type":"uint256","value":"b"},"id":9517,"name":"Identifier","src":"2315:1:8"}],"id":9518,"name":"BinaryOperation","src":"2310:6:8"},{"children":[{"attributes":{"assignments":[9520],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":9573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9519,"name":"ElementaryTypeName","src":"2397:4:8"}],"id":9520,"name":"VariableDeclaration","src":"2397:9:8"}],"id":9521,"name":"VariableDeclarationStatement","src":"2397:9:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9480,"type":"uint256","value":"shortest"},"id":9522,"name":"Identifier","src":"2428:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9523,"name":"Literal","src":"2439:2:8"}],"id":9524,"name":"BinaryOperation","src":"2428:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9520,"type":"uint256","value":"mask"},"id":9525,"name":"Identifier","src":"2465:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":9526,"name":"ElementaryTypeNameExpression","src":"2472:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9527,"name":"Literal","src":"2482:1:8"}],"id":9528,"name":"UnaryOperation","src":"2480:3:8"}],"id":9529,"name":"FunctionCall","src":"2472:12:8"}],"id":9530,"name":"Assignment","src":"2465:19:8"}],"id":9531,"name":"ExpressionStatement","src":"2465:19:8"}],"id":9532,"name":"Block","src":"2443:80:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9520,"type":"uint256","value":"mask"},"id":9533,"name":"Identifier","src":"2551:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9534,"name":"Literal","src":"2560:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9535,"name":"Literal","src":"2566:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9536,"name":"Literal","src":"2571:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9480,"type":"uint256","value":"shortest"},"id":9537,"name":"Identifier","src":"2576:8:8"}],"id":9538,"name":"BinaryOperation","src":"2571:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9499,"type":"uint256","value":"idx"},"id":9539,"name":"Identifier","src":"2587:3:8"}],"id":9540,"name":"BinaryOperation","src":"2571:19:8"}],"id":9541,"name":"TupleExpression","src":"2570:21:8"}],"id":9542,"name":"BinaryOperation","src":"2566:25:8"}],"id":9543,"name":"TupleExpression","src":"2565:27:8"}],"id":9544,"name":"BinaryOperation","src":"2560:32:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9545,"name":"Literal","src":"2595:1:8"}],"id":9546,"name":"BinaryOperation","src":"2560:36:8"}],"id":9547,"name":"TupleExpression","src":"2559:38:8"}],"id":9548,"name":"UnaryOperation","src":"2558:39:8"}],"id":9549,"name":"Assignment","src":"2551:46:8"}],"id":9550,"name":"ExpressionStatement","src":"2551:46:8"}],"id":9551,"name":"Block","src":"2529:87:8"}],"id":9552,"name":"IfStatement","src":"2424:192:8"},{"attributes":{"assignments":[9554]},"children":[{"attributes":{"constant":false,"name":"diff","scope":9573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9553,"name":"ElementaryTypeName","src":"2633:4:8"}],"id":9554,"name":"VariableDeclaration","src":"2633:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"a"},"id":9555,"name":"Identifier","src":"2646:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9520,"type":"uint256","value":"mask"},"id":9556,"name":"Identifier","src":"2650:4:8"}],"id":9557,"name":"BinaryOperation","src":"2646:8:8"}],"id":9558,"name":"TupleExpression","src":"2645:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9513,"type":"uint256","value":"b"},"id":9559,"name":"Identifier","src":"2659:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9520,"type":"uint256","value":"mask"},"id":9560,"name":"Identifier","src":"2663:4:8"}],"id":9561,"name":"BinaryOperation","src":"2659:8:8"}],"id":9562,"name":"TupleExpression","src":"2658:10:8"}],"id":9563,"name":"BinaryOperation","src":"2645:23:8"}],"id":9564,"name":"VariableDeclarationStatement","src":"2633:35:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9554,"type":"uint256","value":"diff"},"id":9565,"name":"Identifier","src":"2690:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9566,"name":"Literal","src":"2698:1:8"}],"id":9567,"name":"BinaryOperation","src":"2690:9:8"},{"attributes":{"functionReturnParameters":9478},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9568,"name":"ElementaryTypeNameExpression","src":"2724:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9554,"type":"uint256","value":"diff"},"id":9569,"name":"Identifier","src":"2728:4:8"}],"id":9570,"name":"FunctionCall","src":"2724:9:8"}],"id":9571,"name":"Return","src":"2717:16:8"}],"id":9572,"name":"IfStatement","src":"2686:47:8"}],"id":9573,"name":"Block","src":"2318:430:8"}],"id":9574,"name":"IfStatement","src":"2306:442:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9492,"type":"uint256","value":"selfptr"},"id":9575,"name":"Identifier","src":"2761:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9576,"name":"Literal","src":"2772:2:8"}],"id":9577,"name":"Assignment","src":"2761:13:8"}],"id":9578,"name":"ExpressionStatement","src":"2761:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9495,"type":"uint256","value":"otherptr"},"id":9579,"name":"Identifier","src":"2788:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9580,"name":"Literal","src":"2800:2:8"}],"id":9581,"name":"Assignment","src":"2788:14:8"}],"id":9582,"name":"ExpressionStatement","src":"2788:14:8"}],"id":9583,"name":"Block","src":"2142:671:8"}],"id":9584,"name":"ForStatement","src":"2096:717:8"},{"attributes":{"functionReturnParameters":9478},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9585,"name":"ElementaryTypeNameExpression","src":"2830:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9468,"type":"uint256","value":"len"},"id":9586,"name":"Identifier","src":"2834:3:8"}],"id":9587,"name":"FunctionCall","src":"2830:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9588,"name":"ElementaryTypeNameExpression","src":"2841:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9474,"type":"uint256","value":"otherlen"},"id":9589,"name":"Identifier","src":"2845:8:8"}],"id":9590,"name":"FunctionCall","src":"2841:13:8"}],"id":9591,"name":"BinaryOperation","src":"2830:24:8"}],"id":9592,"name":"Return","src":"2823:31:8"}],"id":9593,"name":"Block","src":"1817:1044:8"}],"id":9594,"name":"FunctionDefinition","src":"1677:1184:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9622,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9595,"name":"ElementaryTypeName","src":"3295:5:8"}],"id":9596,"name":"VariableDeclaration","src":"3295:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9597,"name":"ElementaryTypeName","src":"3314:4:8"}],"id":9598,"name":"VariableDeclaration","src":"3314:11:8"},{"attributes":{"constant":false,"name":"other","scope":9622,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9599,"name":"ElementaryTypeName","src":"3327:5:8"}],"id":9600,"name":"VariableDeclaration","src":"3327:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9601,"name":"ElementaryTypeName","src":"3347:4:8"}],"id":9602,"name":"VariableDeclaration","src":"3347:16:8"},{"attributes":{"constant":false,"name":"len","scope":9622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9603,"name":"ElementaryTypeName","src":"3365:4:8"}],"id":9604,"name":"VariableDeclaration","src":"3365:8:8"}],"id":9605,"name":"ParameterList","src":"3294:80:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9622,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9606,"name":"ElementaryTypeName","src":"3398:4:8"}],"id":9607,"name":"VariableDeclaration","src":"3398:4:8"}],"id":9608,"name":"ParameterList","src":"3397:6:8"},{"children":[{"attributes":{"functionReturnParameters":9608},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9441,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9609,"name":"Identifier","src":"3421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9596,"type":"bytes memory","value":"self"},"id":9610,"name":"Identifier","src":"3428:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9598,"type":"uint256","value":"offset"},"id":9611,"name":"Identifier","src":"3434:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9604,"type":"uint256","value":"len"},"id":9612,"name":"Identifier","src":"3442:3:8"}],"id":9613,"name":"FunctionCall","src":"3421:25:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9441,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9614,"name":"Identifier","src":"3450:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9600,"type":"bytes memory","value":"other"},"id":9615,"name":"Identifier","src":"3457:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9602,"type":"uint256","value":"otherOffset"},"id":9616,"name":"Identifier","src":"3464:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9604,"type":"uint256","value":"len"},"id":9617,"name":"Identifier","src":"3477:3:8"}],"id":9618,"name":"FunctionCall","src":"3450:31:8"}],"id":9619,"name":"BinaryOperation","src":"3421:60:8"}],"id":9620,"name":"Return","src":"3414:67:8"}],"id":9621,"name":"Block","src":"3404:84:8"}],"id":9622,"name":"FunctionDefinition","src":"3279:209:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9654,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9623,"name":"ElementaryTypeName","src":"3887:5:8"}],"id":9624,"name":"VariableDeclaration","src":"3887:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9654,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9625,"name":"ElementaryTypeName","src":"3906:4:8"}],"id":9626,"name":"VariableDeclaration","src":"3906:11:8"},{"attributes":{"constant":false,"name":"other","scope":9654,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9627,"name":"ElementaryTypeName","src":"3919:5:8"}],"id":9628,"name":"VariableDeclaration","src":"3919:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9654,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9629,"name":"ElementaryTypeName","src":"3939:4:8"}],"id":9630,"name":"VariableDeclaration","src":"3939:16:8"}],"id":9631,"name":"ParameterList","src":"3886:70:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9654,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9632,"name":"ElementaryTypeName","src":"3980:4:8"}],"id":9633,"name":"VariableDeclaration","src":"3980:4:8"}],"id":9634,"name":"ParameterList","src":"3979:6:8"},{"children":[{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9441,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9635,"name":"Identifier","src":"4003:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9624,"type":"bytes memory","value":"self"},"id":9636,"name":"Identifier","src":"4010:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9626,"type":"uint256","value":"offset"},"id":9637,"name":"Identifier","src":"4016:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9624,"type":"bytes memory","value":"self"},"id":9638,"name":"Identifier","src":"4024:4:8"}],"id":9639,"name":"MemberAccess","src":"4024:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9626,"type":"uint256","value":"offset"},"id":9640,"name":"Identifier","src":"4038:6:8"}],"id":9641,"name":"BinaryOperation","src":"4024:20:8"}],"id":9642,"name":"FunctionCall","src":"4003:42:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9441,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9643,"name":"Identifier","src":"4049:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"other"},"id":9644,"name":"Identifier","src":"4056:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"uint256","value":"otherOffset"},"id":9645,"name":"Identifier","src":"4063:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"other"},"id":9646,"name":"Identifier","src":"4076:5:8"}],"id":9647,"name":"MemberAccess","src":"4076:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"uint256","value":"otherOffset"},"id":9648,"name":"Identifier","src":"4091:11:8"}],"id":9649,"name":"BinaryOperation","src":"4076:26:8"}],"id":9650,"name":"FunctionCall","src":"4049:54:8"}],"id":9651,"name":"BinaryOperation","src":"4003:100:8"}],"id":9652,"name":"Return","src":"3996:107:8"}],"id":9653,"name":"Block","src":"3986:124:8"}],"id":9654,"name":"FunctionDefinition","src":"3871:239:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9683,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9655,"name":"ElementaryTypeName","src":"4478:5:8"}],"id":9656,"name":"VariableDeclaration","src":"4478:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9683,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9657,"name":"ElementaryTypeName","src":"4497:4:8"}],"id":9658,"name":"VariableDeclaration","src":"4497:11:8"},{"attributes":{"constant":false,"name":"other","scope":9683,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9659,"name":"ElementaryTypeName","src":"4510:5:8"}],"id":9660,"name":"VariableDeclaration","src":"4510:18:8"}],"id":9661,"name":"ParameterList","src":"4477:52:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9683,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9662,"name":"ElementaryTypeName","src":"4553:4:8"}],"id":9663,"name":"VariableDeclaration","src":"4553:4:8"}],"id":9664,"name":"ParameterList","src":"4552:6:8"},{"children":[{"attributes":{"functionReturnParameters":9664},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"bytes memory","value":"self"},"id":9665,"name":"Identifier","src":"4576:4:8"}],"id":9666,"name":"MemberAccess","src":"4576:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9658,"type":"uint256","value":"offset"},"id":9667,"name":"Identifier","src":"4591:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9660,"type":"bytes memory","value":"other"},"id":9668,"name":"Identifier","src":"4600:5:8"}],"id":9669,"name":"MemberAccess","src":"4600:12:8"}],"id":9670,"name":"BinaryOperation","src":"4591:21:8"}],"id":9671,"name":"BinaryOperation","src":"4576:36:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9622,9654,9683,9708],"referencedDeclaration":9622,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9672,"name":"Identifier","src":"4616:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"bytes memory","value":"self"},"id":9673,"name":"Identifier","src":"4623:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9658,"type":"uint256","value":"offset"},"id":9674,"name":"Identifier","src":"4629:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9660,"type":"bytes memory","value":"other"},"id":9675,"name":"Identifier","src":"4637:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9676,"name":"Literal","src":"4644:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9660,"type":"bytes memory","value":"other"},"id":9677,"name":"Identifier","src":"4647:5:8"}],"id":9678,"name":"MemberAccess","src":"4647:12:8"}],"id":9679,"name":"FunctionCall","src":"4616:44:8"}],"id":9680,"name":"BinaryOperation","src":"4576:84:8"}],"id":9681,"name":"Return","src":"4569:91:8"}],"id":9682,"name":"Block","src":"4559:108:8"}],"id":9683,"name":"FunctionDefinition","src":"4462:205:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9708,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9684,"name":"ElementaryTypeName","src":"4931:5:8"}],"id":9685,"name":"VariableDeclaration","src":"4931:17:8"},{"attributes":{"constant":false,"name":"other","scope":9708,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9686,"name":"ElementaryTypeName","src":"4950:5:8"}],"id":9687,"name":"VariableDeclaration","src":"4950:18:8"}],"id":9688,"name":"ParameterList","src":"4930:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9708,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9689,"name":"ElementaryTypeName","src":"4992:4:8"}],"id":9690,"name":"VariableDeclaration","src":"4992:4:8"}],"id":9691,"name":"ParameterList","src":"4991:6:8"},{"children":[{"attributes":{"functionReturnParameters":9691},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9685,"type":"bytes memory","value":"self"},"id":9692,"name":"Identifier","src":"5015:4:8"}],"id":9693,"name":"MemberAccess","src":"5015:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9687,"type":"bytes memory","value":"other"},"id":9694,"name":"Identifier","src":"5030:5:8"}],"id":9695,"name":"MemberAccess","src":"5030:12:8"}],"id":9696,"name":"BinaryOperation","src":"5015:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9622,9654,9683,9708],"referencedDeclaration":9622,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9697,"name":"Identifier","src":"5046:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9685,"type":"bytes memory","value":"self"},"id":9698,"name":"Identifier","src":"5053:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9699,"name":"Literal","src":"5059:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9687,"type":"bytes memory","value":"other"},"id":9700,"name":"Identifier","src":"5062:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9701,"name":"Literal","src":"5069:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9685,"type":"bytes memory","value":"self"},"id":9702,"name":"Identifier","src":"5072:4:8"}],"id":9703,"name":"MemberAccess","src":"5072:11:8"}],"id":9704,"name":"FunctionCall","src":"5046:38:8"}],"id":9705,"name":"BinaryOperation","src":"5015:69:8"}],"id":9706,"name":"Return","src":"5008:76:8"}],"id":9707,"name":"Block","src":"4998:93:8"}],"id":9708,"name":"FunctionDefinition","src":"4915:176:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9724,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9709,"name":"ElementaryTypeName","src":"5352:5:8"}],"id":9710,"name":"VariableDeclaration","src":"5352:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9724,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9711,"name":"ElementaryTypeName","src":"5371:4:8"}],"id":9712,"name":"VariableDeclaration","src":"5371:8:8"}],"id":9713,"name":"ParameterList","src":"5351:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9724,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9714,"name":"ElementaryTypeName","src":"5404:5:8"}],"id":9715,"name":"VariableDeclaration","src":"5404:9:8"}],"id":9716,"name":"ParameterList","src":"5403:11:8"},{"children":[{"attributes":{"functionReturnParameters":9716},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9717,"name":"ElementaryTypeNameExpression","src":"5432:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9710,"type":"bytes memory","value":"self"},"id":9718,"name":"Identifier","src":"5438:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9712,"type":"uint256","value":"idx"},"id":9719,"name":"Identifier","src":"5443:3:8"}],"id":9720,"name":"IndexAccess","src":"5438:9:8"}],"id":9721,"name":"FunctionCall","src":"5432:16:8"}],"id":9722,"name":"Return","src":"5425:23:8"}],"id":9723,"name":"Block","src":"5415:40:8"}],"id":9724,"name":"FunctionDefinition","src":"5333:122:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9744,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9725,"name":"ElementaryTypeName","src":"5719:5:8"}],"id":9726,"name":"VariableDeclaration","src":"5719:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9744,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9727,"name":"ElementaryTypeName","src":"5738:4:8"}],"id":9728,"name":"VariableDeclaration","src":"5738:8:8"}],"id":9729,"name":"ParameterList","src":"5718:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9744,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9730,"name":"ElementaryTypeName","src":"5771:6:8"}],"id":9731,"name":"VariableDeclaration","src":"5771:10:8"}],"id":9732,"name":"ParameterList","src":"5770:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9733,"name":"Identifier","src":"5793:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9728,"type":"uint256","value":"idx"},"id":9734,"name":"Identifier","src":"5801:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9735,"name":"Literal","src":"5807:1:8"}],"id":9736,"name":"BinaryOperation","src":"5801:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9726,"type":"bytes memory","value":"self"},"id":9737,"name":"Identifier","src":"5812:4:8"}],"id":9738,"name":"MemberAccess","src":"5812:11:8"}],"id":9739,"name":"BinaryOperation","src":"5801:22:8"}],"id":9740,"name":"FunctionCall","src":"5793:31:8"}],"id":9741,"name":"ExpressionStatement","src":"5793:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9731,"isOffset":false,"isSlot":false,"src":"5857:3:8","valueSize":1}},{"self":{"declaration":9726,"isOffset":false,"isSlot":false,"src":"5882:4:8","valueSize":1}},{"idx":{"declaration":9728,"isOffset":false,"isSlot":false,"src":"5892:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":9742,"name":"InlineAssembly","src":"5834:82:8"}],"id":9743,"name":"Block","src":"5783:139:8"}],"id":9744,"name":"FunctionDefinition","src":"5699:223:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9764,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9745,"name":"ElementaryTypeName","src":"6186:5:8"}],"id":9746,"name":"VariableDeclaration","src":"6186:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9764,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9747,"name":"ElementaryTypeName","src":"6205:4:8"}],"id":9748,"name":"VariableDeclaration","src":"6205:8:8"}],"id":9749,"name":"ParameterList","src":"6185:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9764,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":9750,"name":"ElementaryTypeName","src":"6238:6:8"}],"id":9751,"name":"VariableDeclaration","src":"6238:10:8"}],"id":9752,"name":"ParameterList","src":"6237:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9753,"name":"Identifier","src":"6260:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9748,"type":"uint256","value":"idx"},"id":9754,"name":"Identifier","src":"6268:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9755,"name":"Literal","src":"6274:1:8"}],"id":9756,"name":"BinaryOperation","src":"6268:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9746,"type":"bytes memory","value":"self"},"id":9757,"name":"Identifier","src":"6279:4:8"}],"id":9758,"name":"MemberAccess","src":"6279:11:8"}],"id":9759,"name":"BinaryOperation","src":"6268:22:8"}],"id":9760,"name":"FunctionCall","src":"6260:31:8"}],"id":9761,"name":"ExpressionStatement","src":"6260:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9751,"isOffset":false,"isSlot":false,"src":"6324:3:8","valueSize":1}},{"self":{"declaration":9746,"isOffset":false,"isSlot":false,"src":"6349:4:8","valueSize":1}},{"idx":{"declaration":9748,"isOffset":false,"isSlot":false,"src":"6359:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":9762,"name":"InlineAssembly","src":"6301:86:8"}],"id":9763,"name":"Block","src":"6250:143:8"}],"id":9764,"name":"FunctionDefinition","src":"6166:227:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9784,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9765,"name":"ElementaryTypeName","src":"6632:5:8"}],"id":9766,"name":"VariableDeclaration","src":"6632:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9784,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9767,"name":"ElementaryTypeName","src":"6651:4:8"}],"id":9768,"name":"VariableDeclaration","src":"6651:8:8"}],"id":9769,"name":"ParameterList","src":"6631:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9784,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9770,"name":"ElementaryTypeName","src":"6684:7:8"}],"id":9771,"name":"VariableDeclaration","src":"6684:11:8"}],"id":9772,"name":"ParameterList","src":"6683:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9773,"name":"Identifier","src":"6707:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9768,"type":"uint256","value":"idx"},"id":9774,"name":"Identifier","src":"6715:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9775,"name":"Literal","src":"6721:2:8"}],"id":9776,"name":"BinaryOperation","src":"6715:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9766,"type":"bytes memory","value":"self"},"id":9777,"name":"Identifier","src":"6727:4:8"}],"id":9778,"name":"MemberAccess","src":"6727:11:8"}],"id":9779,"name":"BinaryOperation","src":"6715:23:8"}],"id":9780,"name":"FunctionCall","src":"6707:32:8"}],"id":9781,"name":"ExpressionStatement","src":"6707:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9771,"isOffset":false,"isSlot":false,"src":"6772:3:8","valueSize":1}},{"self":{"declaration":9766,"isOffset":false,"isSlot":false,"src":"6793:4:8","valueSize":1}},{"idx":{"declaration":9768,"isOffset":false,"isSlot":false,"src":"6804:3:8","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":9782,"name":"InlineAssembly","src":"6749:70:8"}],"id":9783,"name":"Block","src":"6697:128:8"}],"id":9784,"name":"FunctionDefinition","src":"6611:214:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9804,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9785,"name":"ElementaryTypeName","src":"7064:5:8"}],"id":9786,"name":"VariableDeclaration","src":"7064:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9804,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9787,"name":"ElementaryTypeName","src":"7083:4:8"}],"id":9788,"name":"VariableDeclaration","src":"7083:8:8"}],"id":9789,"name":"ParameterList","src":"7063:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9804,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9790,"name":"ElementaryTypeName","src":"7116:7:8"}],"id":9791,"name":"VariableDeclaration","src":"7116:11:8"}],"id":9792,"name":"ParameterList","src":"7115:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9793,"name":"Identifier","src":"7139:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9788,"type":"uint256","value":"idx"},"id":9794,"name":"Identifier","src":"7147:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9795,"name":"Literal","src":"7153:2:8"}],"id":9796,"name":"BinaryOperation","src":"7147:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9786,"type":"bytes memory","value":"self"},"id":9797,"name":"Identifier","src":"7159:4:8"}],"id":9798,"name":"MemberAccess","src":"7159:11:8"}],"id":9799,"name":"BinaryOperation","src":"7147:23:8"}],"id":9800,"name":"FunctionCall","src":"7139:32:8"}],"id":9801,"name":"ExpressionStatement","src":"7139:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9791,"isOffset":false,"isSlot":false,"src":"7204:3:8","valueSize":1}},{"self":{"declaration":9786,"isOffset":false,"isSlot":false,"src":"7229:4:8","valueSize":1}},{"idx":{"declaration":9788,"isOffset":false,"isSlot":false,"src":"7240:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":9802,"name":"InlineAssembly","src":"7181:143:8"}],"id":9803,"name":"Block","src":"7129:201:8"}],"id":9804,"name":"FunctionDefinition","src":"7043:287:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9832,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9805,"name":"ElementaryTypeName","src":"7606:5:8"}],"id":9806,"name":"VariableDeclaration","src":"7606:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9832,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9807,"name":"ElementaryTypeName","src":"7625:4:8"}],"id":9808,"name":"VariableDeclaration","src":"7625:8:8"},{"attributes":{"constant":false,"name":"len","scope":9832,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9809,"name":"ElementaryTypeName","src":"7635:4:8"}],"id":9810,"name":"VariableDeclaration","src":"7635:8:8"}],"id":9811,"name":"ParameterList","src":"7605:39:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9832,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9812,"name":"ElementaryTypeName","src":"7668:7:8"}],"id":9813,"name":"VariableDeclaration","src":"7668:11:8"}],"id":9814,"name":"ParameterList","src":"7667:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9815,"name":"Identifier","src":"7691:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9810,"type":"uint256","value":"len"},"id":9816,"name":"Identifier","src":"7699:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9817,"name":"Literal","src":"7706:2:8"}],"id":9818,"name":"BinaryOperation","src":"7699:9:8"}],"id":9819,"name":"FunctionCall","src":"7691:18:8"}],"id":9820,"name":"ExpressionStatement","src":"7691:18:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9821,"name":"Identifier","src":"7719:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9808,"type":"uint256","value":"idx"},"id":9822,"name":"Identifier","src":"7727:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9810,"type":"uint256","value":"len"},"id":9823,"name":"Identifier","src":"7733:3:8"}],"id":9824,"name":"BinaryOperation","src":"7727:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9806,"type":"bytes memory","value":"self"},"id":9825,"name":"Identifier","src":"7740:4:8"}],"id":9826,"name":"MemberAccess","src":"7740:11:8"}],"id":9827,"name":"BinaryOperation","src":"7727:24:8"}],"id":9828,"name":"FunctionCall","src":"7719:33:8"}],"id":9829,"name":"ExpressionStatement","src":"7719:33:8"},{"attributes":{"externalReferences":[{"len":{"declaration":9810,"isOffset":false,"isSlot":false,"src":"7822:3:8","valueSize":1}},{"ret":{"declaration":9813,"isOffset":false,"isSlot":false,"src":"7845:3:8","valueSize":1}},{"self":{"declaration":9806,"isOffset":false,"isSlot":false,"src":"7870:4:8","valueSize":1}},{"idx":{"declaration":9808,"isOffset":false,"isSlot":false,"src":"7881:3:8","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":9830,"name":"InlineAssembly","src":"7762:142:8"}],"id":9831,"name":"Block","src":"7681:229:8"}],"id":9832,"name":"FunctionDefinition","src":"7586:324:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":9872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9833,"name":"ElementaryTypeName","src":"7932:4:8"}],"id":9834,"name":"VariableDeclaration","src":"7932:9:8"},{"attributes":{"constant":false,"name":"src","scope":9872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9835,"name":"ElementaryTypeName","src":"7943:4:8"}],"id":9836,"name":"VariableDeclaration","src":"7943:8:8"},{"attributes":{"constant":false,"name":"len","scope":9872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9837,"name":"ElementaryTypeName","src":"7953:4:8"}],"id":9838,"name":"VariableDeclaration","src":"7953:8:8"}],"id":9839,"name":"ParameterList","src":"7931:31:8"},{"attributes":{"parameters":[null]},"children":[],"id":9840,"name":"ParameterList","src":"7976:0:8"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9838,"type":"uint256","value":"len"},"id":9841,"name":"Identifier","src":"8043:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9842,"name":"Literal","src":"8050:2:8"}],"id":9843,"name":"BinaryOperation","src":"8043:9:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9838,"type":"uint256","value":"len"},"id":9844,"name":"Identifier","src":"8054:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9845,"name":"Literal","src":"8061:2:8"}],"id":9846,"name":"Assignment","src":"8054:9:8"}],"id":9847,"name":"ExpressionStatement","src":"8054:9:8"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":9836,"isOffset":false,"isSlot":false,"src":"8125:3:8","valueSize":1}},{"dest":{"declaration":9834,"isOffset":false,"isSlot":false,"src":"8113:4:8","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":9848,"name":"InlineAssembly","src":"8079:65:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"uint256","value":"dest"},"id":9849,"name":"Identifier","src":"8157:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9850,"name":"Literal","src":"8165:2:8"}],"id":9851,"name":"Assignment","src":"8157:10:8"}],"id":9852,"name":"ExpressionStatement","src":"8157:10:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9836,"type":"uint256","value":"src"},"id":9853,"name":"Identifier","src":"8181:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9854,"name":"Literal","src":"8188:2:8"}],"id":9855,"name":"Assignment","src":"8181:9:8"}],"id":9856,"name":"ExpressionStatement","src":"8181:9:8"}],"id":9857,"name":"Block","src":"8065:136:8"}],"id":9858,"name":"ForStatement","src":"8036:165:8"},{"attributes":{"assignments":[9860]},"children":[{"attributes":{"constant":false,"name":"mask","scope":9871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9859,"name":"ElementaryTypeName","src":"8243:4:8"}],"id":9860,"name":"VariableDeclaration","src":"8243:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":9861,"name":"Literal","src":"8255:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9862,"name":"Literal","src":"8263:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9838,"type":"uint256","value":"len"},"id":9863,"name":"Identifier","src":"8268:3:8"}],"id":9864,"name":"BinaryOperation","src":"8263:8:8"}],"id":9865,"name":"TupleExpression","src":"8262:10:8"}],"id":9866,"name":"BinaryOperation","src":"8255:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9867,"name":"Literal","src":"8275:1:8"}],"id":9868,"name":"BinaryOperation","src":"8255:21:8"}],"id":9869,"name":"VariableDeclarationStatement","src":"8243:33:8"},{"attributes":{"externalReferences":[{"src":{"declaration":9836,"isOffset":false,"isSlot":false,"src":"8334:3:8","valueSize":1}},{"mask":{"declaration":9860,"isOffset":false,"isSlot":false,"src":"8344:4:8","valueSize":1}},{"dest":{"declaration":9834,"isOffset":false,"isSlot":false,"src":"8421:4:8","valueSize":1}},{"dest":{"declaration":9834,"isOffset":false,"isSlot":false,"src":"8389:4:8","valueSize":1}},{"mask":{"declaration":9860,"isOffset":false,"isSlot":false,"src":"8396:4:8","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":9870,"name":"InlineAssembly","src":"8286:173:8"}],"id":9871,"name":"Block","src":"7976:489:8"}],"id":9872,"name":"FunctionDefinition","src":"7916:549:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9915,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9873,"name":"ElementaryTypeName","src":"8704:5:8"}],"id":9874,"name":"VariableDeclaration","src":"8704:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9875,"name":"ElementaryTypeName","src":"8723:4:8"}],"id":9876,"name":"VariableDeclaration","src":"8723:11:8"},{"attributes":{"constant":false,"name":"len","scope":9915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9877,"name":"ElementaryTypeName","src":"8736:4:8"}],"id":9878,"name":"VariableDeclaration","src":"8736:8:8"}],"id":9879,"name":"ParameterList","src":"8703:42:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9915,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9880,"name":"ElementaryTypeName","src":"8768:5:8"}],"id":9881,"name":"VariableDeclaration","src":"8768:12:8"}],"id":9882,"name":"ParameterList","src":"8767:14:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9883,"name":"Identifier","src":"8792:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9876,"type":"uint256","value":"offset"},"id":9884,"name":"Identifier","src":"8800:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9878,"type":"uint256","value":"len"},"id":9885,"name":"Identifier","src":"8809:3:8"}],"id":9886,"name":"BinaryOperation","src":"8800:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9874,"type":"bytes memory","value":"self"},"id":9887,"name":"Identifier","src":"8816:4:8"}],"id":9888,"name":"MemberAccess","src":"8816:11:8"}],"id":9889,"name":"BinaryOperation","src":"8800:27:8"}],"id":9890,"name":"FunctionCall","src":"8792:36:8"}],"id":9891,"name":"ExpressionStatement","src":"8792:36:8"},{"attributes":{"assignments":[9893]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9914,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9892,"name":"ElementaryTypeName","src":"8839:5:8"}],"id":9893,"name":"VariableDeclaration","src":"8839:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9894,"name":"ElementaryTypeName","src":"8862:5:8"}],"id":9895,"name":"NewExpression","src":"8858:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9878,"type":"uint256","value":"len"},"id":9896,"name":"Identifier","src":"8868:3:8"}],"id":9897,"name":"FunctionCall","src":"8858:14:8"}],"id":9898,"name":"VariableDeclarationStatement","src":"8839:33:8"},{"attributes":{"assignments":[9900],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":9914,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9899,"name":"ElementaryTypeName","src":"8882:4:8"}],"id":9900,"name":"VariableDeclaration","src":"8882:9:8"}],"id":9901,"name":"VariableDeclarationStatement","src":"8882:9:8"},{"attributes":{"assignments":[9903],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":9914,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9902,"name":"ElementaryTypeName","src":"8901:4:8"}],"id":9903,"name":"VariableDeclaration","src":"8901:8:8"}],"id":9904,"name":"VariableDeclarationStatement","src":"8901:8:8"},{"attributes":{"externalReferences":[{"dest":{"declaration":9900,"isOffset":false,"isSlot":false,"src":"8943:4:8","valueSize":1}},{"ret":{"declaration":9893,"isOffset":false,"isSlot":false,"src":"8955:3:8","valueSize":1}},{"src":{"declaration":9903,"isOffset":false,"isSlot":false,"src":"8976:3:8","valueSize":1}},{"self":{"declaration":9874,"isOffset":false,"isSlot":false,"src":"8991:4:8","valueSize":1}},{"offset":{"declaration":9876,"isOffset":false,"isSlot":false,"src":"9002:6:8","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":9905,"name":"InlineAssembly","src":"8920:99:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9872,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9906,"name":"Identifier","src":"9028:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9900,"type":"uint256","value":"dest"},"id":9907,"name":"Identifier","src":"9035:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9903,"type":"uint256","value":"src"},"id":9908,"name":"Identifier","src":"9041:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9878,"type":"uint256","value":"len"},"id":9909,"name":"Identifier","src":"9046:3:8"}],"id":9910,"name":"FunctionCall","src":"9028:22:8"}],"id":9911,"name":"ExpressionStatement","src":"9028:22:8"},{"attributes":{"functionReturnParameters":9882},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9893,"type":"bytes memory","value":"ret"},"id":9912,"name":"Identifier","src":"9068:3:8"}],"id":9913,"name":"Return","src":"9061:10:8"}],"id":9914,"name":"Block","src":"8782:296:8"}],"id":9915,"name":"FunctionDefinition","src":"8685:393:8"},{"attributes":{"constant":true,"name":"base32HexTable","scope":10138,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9916,"name":"ElementaryTypeName","src":"9206:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":9917,"name":"Literal","src":"9238:147:8"}],"id":9918,"name":"VariableDeclaration","src":"9206:179:8"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10137,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9919,"name":"ElementaryTypeName","src":"9697:5:8"}],"id":9920,"name":"VariableDeclaration","src":"9697:17:8"},{"attributes":{"constant":false,"name":"off","scope":10137,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9921,"name":"ElementaryTypeName","src":"9716:4:8"}],"id":9922,"name":"VariableDeclaration","src":"9716:8:8"},{"attributes":{"constant":false,"name":"len","scope":10137,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9923,"name":"ElementaryTypeName","src":"9726:4:8"}],"id":9924,"name":"VariableDeclaration","src":"9726:8:8"}],"id":9925,"name":"ParameterList","src":"9696:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10137,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9926,"name":"ElementaryTypeName","src":"9758:7:8"}],"id":9927,"name":"VariableDeclaration","src":"9758:7:8"}],"id":9928,"name":"ParameterList","src":"9757:9:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9929,"name":"Identifier","src":"9777:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":9930,"name":"Identifier","src":"9785:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":9931,"name":"Literal","src":"9792:2:8"}],"id":9932,"name":"BinaryOperation","src":"9785:9:8"}],"id":9933,"name":"FunctionCall","src":"9777:18:8"}],"id":9934,"name":"ExpressionStatement","src":"9777:18:8"},{"attributes":{"assignments":[9936]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9935,"name":"ElementaryTypeName","src":"9806:4:8"}],"id":9936,"name":"VariableDeclaration","src":"9806:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9937,"name":"Literal","src":"9817:1:8"}],"id":9938,"name":"VariableDeclarationStatement","src":"9806:12:8"},{"attributes":{"assignments":[9940],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":10136,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9939,"name":"ElementaryTypeName","src":"9828:5:8"}],"id":9940,"name":"VariableDeclaration","src":"9828:13:8"}],"id":9941,"name":"VariableDeclarationStatement","src":"9828:13:8"},{"children":[{"attributes":{"assignments":[9943]},"children":[{"attributes":{"constant":false,"name":"i","scope":10008,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9942,"name":"ElementaryTypeName","src":"9855:4:8"}],"id":9943,"name":"VariableDeclaration","src":"9855:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9944,"name":"Literal","src":"9864:1:8"}],"id":9945,"name":"VariableDeclarationStatement","src":"9855:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9943,"type":"uint256","value":"i"},"id":9946,"name":"Identifier","src":"9867:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":9947,"name":"Identifier","src":"9871:3:8"}],"id":9948,"name":"BinaryOperation","src":"9867:7:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9943,"type":"uint256","value":"i"},"id":9949,"name":"Identifier","src":"9876:1:8"}],"id":9950,"name":"UnaryOperation","src":"9876:3:8"}],"id":9951,"name":"ExpressionStatement","src":"9876:3:8"},{"children":[{"attributes":{"assignments":[9953]},"children":[{"attributes":{"constant":false,"name":"char","scope":10007,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":9952,"name":"ElementaryTypeName","src":"9895:6:8"}],"id":9953,"name":"VariableDeclaration","src":"9895:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9920,"type":"bytes memory","value":"self"},"id":9954,"name":"Identifier","src":"9909:4:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9922,"type":"uint256","value":"off"},"id":9955,"name":"Identifier","src":"9914:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9943,"type":"uint256","value":"i"},"id":9956,"name":"Identifier","src":"9920:1:8"}],"id":9957,"name":"BinaryOperation","src":"9914:7:8"}],"id":9958,"name":"IndexAccess","src":"9909:13:8"}],"id":9959,"name":"VariableDeclarationStatement","src":"9895:27:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9960,"name":"Identifier","src":"9936:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9953,"type":"bytes1","value":"char"},"id":9961,"name":"Identifier","src":"9944:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":9962,"name":"Literal","src":"9952:4:8"}],"id":9963,"name":"BinaryOperation","src":"9944:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9953,"type":"bytes1","value":"char"},"id":9964,"name":"Identifier","src":"9960:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":9965,"name":"Literal","src":"9968:4:8"}],"id":9966,"name":"BinaryOperation","src":"9960:12:8"}],"id":9967,"name":"BinaryOperation","src":"9944:28:8"}],"id":9968,"name":"FunctionCall","src":"9936:37:8"}],"id":9969,"name":"ExpressionStatement","src":"9936:37:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":9970,"name":"Identifier","src":"9987:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9971,"name":"ElementaryTypeNameExpression","src":"9997:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9918,"type":"bytes memory","value":"base32HexTable"},"id":9972,"name":"Identifier","src":"10003:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":9973,"name":"ElementaryTypeNameExpression","src":"10018:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9974,"name":"ElementaryTypeNameExpression","src":"10023:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9953,"type":"bytes1","value":"char"},"id":9975,"name":"Identifier","src":"10029:4:8"}],"id":9976,"name":"FunctionCall","src":"10023:11:8"}],"id":9977,"name":"FunctionCall","src":"10018:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":9978,"name":"Literal","src":"10038:4:8"}],"id":9979,"name":"BinaryOperation","src":"10018:24:8"}],"id":9980,"name":"IndexAccess","src":"10003:40:8"}],"id":9981,"name":"FunctionCall","src":"9997:47:8"}],"id":9982,"name":"Assignment","src":"9987:57:8"}],"id":9983,"name":"ExpressionStatement","src":"9987:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9984,"name":"Identifier","src":"10058:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":9985,"name":"Identifier","src":"10066:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":9986,"name":"Literal","src":"10077:4:8"}],"id":9987,"name":"BinaryOperation","src":"10066:15:8"}],"id":9988,"name":"FunctionCall","src":"10058:24:8"}],"id":9989,"name":"ExpressionStatement","src":"10058:24:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9943,"type":"uint256","value":"i"},"id":9990,"name":"Identifier","src":"10099:1:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":9991,"name":"Identifier","src":"10104:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9992,"name":"Literal","src":"10110:1:8"}],"id":9993,"name":"BinaryOperation","src":"10104:7:8"}],"id":9994,"name":"BinaryOperation","src":"10099:12:8"},{"children":[{"id":9995,"name":"Break","src":"10131:5:8"}],"id":9996,"name":"Block","src":"10113:38:8"}],"id":9997,"name":"IfStatement","src":"10096:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":9998,"name":"Identifier","src":"10164:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":9999,"name":"Identifier","src":"10171:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10000,"name":"Literal","src":"10178:1:8"}],"id":10001,"name":"BinaryOperation","src":"10171:8:8"}],"id":10002,"name":"TupleExpression","src":"10170:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10003,"name":"Identifier","src":"10183:7:8"}],"id":10004,"name":"BinaryOperation","src":"10170:20:8"}],"id":10005,"name":"Assignment","src":"10164:26:8"}],"id":10006,"name":"ExpressionStatement","src":"10164:26:8"}],"id":10007,"name":"Block","src":"9881:320:8"}],"id":10008,"name":"ForStatement","src":"9851:350:8"},{"attributes":{"assignments":[10010]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":10136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10009,"name":"ElementaryTypeName","src":"10211:4:8"}],"id":10010,"name":"VariableDeclaration","src":"10211:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10011,"name":"Identifier","src":"10225:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10012,"name":"Literal","src":"10231:1:8"}],"id":10013,"name":"BinaryOperation","src":"10225:7:8"}],"id":10014,"name":"VariableDeclarationStatement","src":"10211:21:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10015,"name":"Identifier","src":"10245:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10016,"name":"Literal","src":"10251:1:8"}],"id":10017,"name":"BinaryOperation","src":"10245:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10018,"name":"Literal","src":"10256:1:8"}],"id":10019,"name":"BinaryOperation","src":"10245:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10020,"name":"Identifier","src":"10325:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10021,"name":"Identifier","src":"10332:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10022,"name":"Literal","src":"10339:1:8"}],"id":10023,"name":"BinaryOperation","src":"10332:8:8"}],"id":10024,"name":"TupleExpression","src":"10331:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10025,"name":"Identifier","src":"10344:7:8"}],"id":10026,"name":"BinaryOperation","src":"10331:20:8"}],"id":10027,"name":"Assignment","src":"10325:26:8"}],"id":10028,"name":"ExpressionStatement","src":"10325:26:8"}],"id":10029,"name":"Block","src":"10259:103:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10030,"name":"Identifier","src":"10371:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10031,"name":"Literal","src":"10377:1:8"}],"id":10032,"name":"BinaryOperation","src":"10371:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10033,"name":"Literal","src":"10382:1:8"}],"id":10034,"name":"BinaryOperation","src":"10371:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10035,"name":"Identifier","src":"10444:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10036,"name":"Identifier","src":"10451:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10037,"name":"Literal","src":"10458:1:8"}],"id":10038,"name":"BinaryOperation","src":"10451:8:8"}],"id":10039,"name":"TupleExpression","src":"10450:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10040,"name":"Identifier","src":"10464:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10041,"name":"Literal","src":"10475:1:8"}],"id":10042,"name":"BinaryOperation","src":"10464:12:8"}],"id":10043,"name":"TupleExpression","src":"10463:14:8"}],"id":10044,"name":"BinaryOperation","src":"10450:27:8"}],"id":10045,"name":"Assignment","src":"10444:33:8"}],"id":10046,"name":"ExpressionStatement","src":"10444:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10047,"name":"Identifier","src":"10491:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10048,"name":"Literal","src":"10501:1:8"}],"id":10049,"name":"Assignment","src":"10491:11:8"}],"id":10050,"name":"ExpressionStatement","src":"10491:11:8"}],"id":10051,"name":"Block","src":"10385:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10052,"name":"Identifier","src":"10522:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10053,"name":"Literal","src":"10528:1:8"}],"id":10054,"name":"BinaryOperation","src":"10522:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10055,"name":"Literal","src":"10533:1:8"}],"id":10056,"name":"BinaryOperation","src":"10522:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10057,"name":"Identifier","src":"10597:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10058,"name":"Identifier","src":"10604:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10059,"name":"Literal","src":"10611:1:8"}],"id":10060,"name":"BinaryOperation","src":"10604:8:8"}],"id":10061,"name":"TupleExpression","src":"10603:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10062,"name":"Identifier","src":"10617:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10063,"name":"Literal","src":"10628:1:8"}],"id":10064,"name":"BinaryOperation","src":"10617:12:8"}],"id":10065,"name":"TupleExpression","src":"10616:14:8"}],"id":10066,"name":"BinaryOperation","src":"10603:27:8"}],"id":10067,"name":"Assignment","src":"10597:33:8"}],"id":10068,"name":"ExpressionStatement","src":"10597:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10069,"name":"Identifier","src":"10644:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10070,"name":"Literal","src":"10654:1:8"}],"id":10071,"name":"Assignment","src":"10644:11:8"}],"id":10072,"name":"ExpressionStatement","src":"10644:11:8"}],"id":10073,"name":"Block","src":"10536:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10074,"name":"Identifier","src":"10675:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10075,"name":"Literal","src":"10681:1:8"}],"id":10076,"name":"BinaryOperation","src":"10675:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10077,"name":"Literal","src":"10686:1:8"}],"id":10078,"name":"BinaryOperation","src":"10675:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10079,"name":"Identifier","src":"10750:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10080,"name":"Identifier","src":"10757:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10081,"name":"Literal","src":"10764:1:8"}],"id":10082,"name":"BinaryOperation","src":"10757:8:8"}],"id":10083,"name":"TupleExpression","src":"10756:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10084,"name":"Identifier","src":"10770:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10085,"name":"Literal","src":"10781:1:8"}],"id":10086,"name":"BinaryOperation","src":"10770:12:8"}],"id":10087,"name":"TupleExpression","src":"10769:14:8"}],"id":10088,"name":"BinaryOperation","src":"10756:27:8"}],"id":10089,"name":"Assignment","src":"10750:33:8"}],"id":10090,"name":"ExpressionStatement","src":"10750:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10091,"name":"Identifier","src":"10797:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10092,"name":"Literal","src":"10807:1:8"}],"id":10093,"name":"Assignment","src":"10797:11:8"}],"id":10094,"name":"ExpressionStatement","src":"10797:11:8"}],"id":10095,"name":"Block","src":"10689:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10096,"name":"Identifier","src":"10828:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10097,"name":"Literal","src":"10834:1:8"}],"id":10098,"name":"BinaryOperation","src":"10828:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":10099,"name":"Literal","src":"10839:1:8"}],"id":10100,"name":"BinaryOperation","src":"10828:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10101,"name":"Identifier","src":"10904:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10102,"name":"Identifier","src":"10911:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10103,"name":"Literal","src":"10918:1:8"}],"id":10104,"name":"BinaryOperation","src":"10911:8:8"}],"id":10105,"name":"TupleExpression","src":"10910:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10106,"name":"Identifier","src":"10924:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10107,"name":"Literal","src":"10935:1:8"}],"id":10108,"name":"BinaryOperation","src":"10924:12:8"}],"id":10109,"name":"TupleExpression","src":"10923:14:8"}],"id":10110,"name":"BinaryOperation","src":"10910:27:8"}],"id":10111,"name":"Assignment","src":"10904:33:8"}],"id":10112,"name":"ExpressionStatement","src":"10904:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10113,"name":"Identifier","src":"10951:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10114,"name":"Literal","src":"10961:1:8"}],"id":10115,"name":"Assignment","src":"10951:11:8"}],"id":10116,"name":"ExpressionStatement","src":"10951:11:8"}],"id":10117,"name":"Block","src":"10842:131:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[10158,10159],"referencedDeclaration":10158,"type":"function () pure","value":"revert"},"id":10118,"name":"Identifier","src":"10993:6:8"}],"id":10119,"name":"FunctionCall","src":"10993:8:8"}],"id":10120,"name":"ExpressionStatement","src":"10993:8:8"}],"id":10121,"name":"Block","src":"10979:33:8"}],"id":10122,"name":"IfStatement","src":"10825:187:8"}],"id":10123,"name":"IfStatement","src":"10672:340:8"}],"id":10124,"name":"IfStatement","src":"10519:493:8"}],"id":10125,"name":"IfStatement","src":"10368:644:8"}],"id":10126,"name":"IfStatement","src":"10242:770:8"},{"attributes":{"functionReturnParameters":9928},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":10127,"name":"ElementaryTypeNameExpression","src":"11029:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10128,"name":"Identifier","src":"11037:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10129,"name":"Literal","src":"11045:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10130,"name":"Identifier","src":"11051:6:8"}],"id":10131,"name":"BinaryOperation","src":"11045:12:8"}],"id":10132,"name":"TupleExpression","src":"11044:14:8"}],"id":10133,"name":"BinaryOperation","src":"11037:21:8"}],"id":10134,"name":"FunctionCall","src":"11029:30:8"}],"id":10135,"name":"Return","src":"11022:37:8"}],"id":10136,"name":"Block","src":"9767:1299:8"}],"id":10137,"name":"FunctionDefinition","src":"9668:1398:8"}],"id":10138,"name":"ContractDefinition","src":"26:11042:8"}],"id":10139,"name":"SourceUnit","src":"0:11069:8"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[4638]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4466,"name":"PragmaDirective","src":"1401:23:9"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":4467,"name":"PragmaDirective","src":"1425:33:9"},{"attributes":{"SourceUnit":4465,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4468,"name":"ImportDirective","src":"1460:19:9"},{"attributes":{"SourceUnit":5763,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4469,"name":"ImportDirective","src":"1480:36:9"},{"attributes":{"SourceUnit":5922,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4470,"name":"ImportDirective","src":"1517:37:9"},{"attributes":{"SourceUnit":5992,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4471,"name":"ImportDirective","src":"1555:44:9"},{"attributes":{"SourceUnit":6483,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4472,"name":"ImportDirective","src":"1600:36:9"},{"attributes":{"SourceUnit":6670,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4473,"name":"ImportDirective","src":"1637:42:9"},{"attributes":{"SourceUnit":6740,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4474,"name":"ImportDirective","src":"1680:37:9"},{"attributes":{"SourceUnit":6831,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4475,"name":"ImportDirective","src":"1718:39:9"},{"attributes":{"SourceUnit":6914,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4476,"name":"ImportDirective","src":"1758:37:9"},{"attributes":{"contractDependencies":[5762,5921,5991,6482,6669,6739,6830,6913,8799],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[4638,6913,6830,6739,6669,6482,5991,5921,5762,8799],"name":"PublicResolver","scope":4639},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":5762,"type":"contract ABIResolver"},"id":4477,"name":"UserDefinedTypeName","src":"1924:11:9"}],"id":4478,"name":"InheritanceSpecifier","src":"1924:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5921,"type":"contract AddrResolver"},"id":4479,"name":"UserDefinedTypeName","src":"1937:12:9"}],"id":4480,"name":"InheritanceSpecifier","src":"1937:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":5991,"type":"contract ContentHashResolver"},"id":4481,"name":"UserDefinedTypeName","src":"1951:19:9"}],"id":4482,"name":"InheritanceSpecifier","src":"1951:19:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":6482,"type":"contract DNSResolver"},"id":4483,"name":"UserDefinedTypeName","src":"1972:11:9"}],"id":4484,"name":"InheritanceSpecifier","src":"1972:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":6669,"type":"contract InterfaceResolver"},"id":4485,"name":"UserDefinedTypeName","src":"1985:17:9"}],"id":4486,"name":"InheritanceSpecifier","src":"1985:17:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":6739,"type":"contract NameResolver"},"id":4487,"name":"UserDefinedTypeName","src":"2004:12:9"}],"id":4488,"name":"InheritanceSpecifier","src":"2004:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":6830,"type":"contract PubkeyResolver"},"id":4489,"name":"UserDefinedTypeName","src":"2018:14:9"}],"id":4490,"name":"InheritanceSpecifier","src":"2018:14:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":6913,"type":"contract TextResolver"},"id":4491,"name":"UserDefinedTypeName","src":"2034:12:9"}],"id":4492,"name":"InheritanceSpecifier","src":"2034:12:9"},{"attributes":{"constant":false,"name":"ens","scope":4638,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4464,"type":"contract ENS"},"id":4493,"name":"UserDefinedTypeName","src":"2053:3:9"}],"id":4494,"name":"VariableDeclaration","src":"2053:7:9"},{"attributes":{"constant":false,"name":"authorisations","scope":4638,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4495,"name":"ElementaryTypeName","src":"2328:7:9"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":4496,"name":"ElementaryTypeName","src":"2345:7:9"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4497,"name":"ElementaryTypeName","src":"2362:7:9"},{"attributes":{"name":"bool","type":"bool"},"id":4498,"name":"ElementaryTypeName","src":"2371:4:9"}],"id":4499,"name":"Mapping","src":"2354:22:9"}],"id":4500,"name":"Mapping","src":"2337:40:9"}],"id":4501,"name":"Mapping","src":"2320:58:9"}],"id":4502,"name":"VariableDeclaration","src":"2320:80:9"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4512,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4503,"name":"ElementaryTypeName","src":"2434:7:9"}],"id":4504,"name":"VariableDeclaration","src":"2434:20:9"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":4512,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4505,"name":"ElementaryTypeName","src":"2456:7:9"}],"id":4506,"name":"VariableDeclaration","src":"2456:21:9"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":4512,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4507,"name":"ElementaryTypeName","src":"2479:7:9"}],"id":4508,"name":"VariableDeclaration","src":"2479:22:9"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":4512,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4509,"name":"ElementaryTypeName","src":"2503:4:9"}],"id":4510,"name":"VariableDeclaration","src":"2503:17:9"}],"id":4511,"name":"ParameterList","src":"2433:88:9"}],"id":4512,"name":"EventDefinition","src":"2407:115:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4638,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":4522,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4464,"type":"contract ENS"},"id":4513,"name":"UserDefinedTypeName","src":"2540:3:9"}],"id":4514,"name":"VariableDeclaration","src":"2540:8:9"}],"id":4515,"name":"ParameterList","src":"2539:10:9"},{"attributes":{"parameters":[null]},"children":[],"id":4516,"name":"ParameterList","src":"2557:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4494,"type":"contract ENS","value":"ens"},"id":4517,"name":"Identifier","src":"2567:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4514,"type":"contract ENS","value":"_ens"},"id":4518,"name":"Identifier","src":"2573:4:9"}],"id":4519,"name":"Assignment","src":"2567:10:9"}],"id":4520,"name":"ExpressionStatement","src":"2567:10:9"}],"id":4521,"name":"Block","src":"2557:27:9"}],"id":4522,"name":"FunctionDefinition","src":"2528:56:9"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":4638,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4551,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4523,"name":"ElementaryTypeName","src":"3295:7:9"}],"id":4524,"name":"VariableDeclaration","src":"3295:12:9"},{"attributes":{"constant":false,"name":"target","scope":4551,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4525,"name":"ElementaryTypeName","src":"3309:7:9"}],"id":4526,"name":"VariableDeclaration","src":"3309:14:9"},{"attributes":{"constant":false,"name":"isAuthorised","scope":4551,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4527,"name":"ElementaryTypeName","src":"3325:4:9"}],"id":4528,"name":"VariableDeclaration","src":"3325:17:9"}],"id":4529,"name":"ParameterList","src":"3294:49:9"},{"attributes":{"parameters":[null]},"children":[],"id":4530,"name":"ParameterList","src":"3353:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4502,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4531,"name":"Identifier","src":"3363:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4524,"type":"bytes32","value":"node"},"id":4532,"name":"Identifier","src":"3378:4:9"}],"id":4536,"name":"IndexAccess","src":"3363:20:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4533,"name":"Identifier","src":"3384:3:9"}],"id":4534,"name":"MemberAccess","src":"3384:10:9"}],"id":4537,"name":"IndexAccess","src":"3363:32:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4526,"type":"address","value":"target"},"id":4535,"name":"Identifier","src":"3396:6:9"}],"id":4538,"name":"IndexAccess","src":"3363:40:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4528,"type":"bool","value":"isAuthorised"},"id":4539,"name":"Identifier","src":"3406:12:9"}],"id":4540,"name":"Assignment","src":"3363:55:9"}],"id":4541,"name":"ExpressionStatement","src":"3363:55:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4512,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":4542,"name":"Identifier","src":"3433:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4524,"type":"bytes32","value":"node"},"id":4543,"name":"Identifier","src":"3454:4:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4544,"name":"Identifier","src":"3460:3:9"}],"id":4545,"name":"MemberAccess","src":"3460:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4526,"type":"address","value":"target"},"id":4546,"name":"Identifier","src":"3472:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4528,"type":"bool","value":"isAuthorised"},"id":4547,"name":"Identifier","src":"3480:12:9"}],"id":4548,"name":"FunctionCall","src":"3433:60:9"}],"id":4549,"name":"EmitStatement","src":"3428:65:9"}],"id":4550,"name":"Block","src":"3353:147:9"}],"id":4551,"name":"FunctionDefinition","src":"3269:231:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":4638,"stateMutability":"view","superFunction":8754,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4580,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4552,"name":"ElementaryTypeName","src":"3528:7:9"}],"id":4553,"name":"VariableDeclaration","src":"3528:12:9"}],"id":4554,"name":"ParameterList","src":"3527:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":4580,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4555,"name":"ElementaryTypeName","src":"3564:4:9"}],"id":4556,"name":"VariableDeclaration","src":"3564:4:9"}],"id":4557,"name":"ParameterList","src":"3563:6:9"},{"children":[{"attributes":{"assignments":[4559]},"children":[{"attributes":{"constant":false,"name":"owner","scope":4579,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4558,"name":"ElementaryTypeName","src":"3580:7:9"}],"id":4559,"name":"VariableDeclaration","src":"3580:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":4433,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4494,"type":"contract ENS","value":"ens"},"id":4560,"name":"Identifier","src":"3596:3:9"}],"id":4561,"name":"MemberAccess","src":"3596:9:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"bytes32","value":"node"},"id":4562,"name":"Identifier","src":"3606:4:9"}],"id":4563,"name":"FunctionCall","src":"3596:15:9"}],"id":4564,"name":"VariableDeclarationStatement","src":"3580:31:9"},{"attributes":{"functionReturnParameters":4557},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4559,"type":"address","value":"owner"},"id":4565,"name":"Identifier","src":"3628:5:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4566,"name":"Identifier","src":"3637:3:9"}],"id":4567,"name":"MemberAccess","src":"3637:10:9"}],"id":4568,"name":"BinaryOperation","src":"3628:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4502,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4569,"name":"Identifier","src":"3651:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"bytes32","value":"node"},"id":4570,"name":"Identifier","src":"3666:4:9"}],"id":4571,"name":"IndexAccess","src":"3651:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4559,"type":"address","value":"owner"},"id":4572,"name":"Identifier","src":"3672:5:9"}],"id":4573,"name":"IndexAccess","src":"3651:27:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4574,"name":"Identifier","src":"3679:3:9"}],"id":4575,"name":"MemberAccess","src":"3679:10:9"}],"id":4576,"name":"IndexAccess","src":"3651:39:9"}],"id":4577,"name":"BinaryOperation","src":"3628:62:9"}],"id":4578,"name":"Return","src":"3621:69:9"}],"id":4579,"name":"Block","src":"3570:127:9"}],"id":4580,"name":"FunctionDefinition","src":"3506:191:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":4638,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":4637,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4581,"name":"ElementaryTypeName","src":"3722:5:9"}],"id":4582,"name":"ArrayTypeName","src":"3722:7:9"}],"id":4583,"name":"VariableDeclaration","src":"3722:21:9"}],"id":4584,"name":"ParameterList","src":"3721:23:9"},{"children":[{"attributes":{"constant":false,"name":"results","scope":4637,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4585,"name":"ElementaryTypeName","src":"3762:5:9"}],"id":4586,"name":"ArrayTypeName","src":"3762:7:9"}],"id":4587,"name":"VariableDeclaration","src":"3762:22:9"}],"id":4588,"name":"ParameterList","src":"3761:24:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4587,"type":"bytes memory[] memory","value":"results"},"id":4589,"name":"Identifier","src":"3796:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4590,"name":"ElementaryTypeName","src":"3810:5:9"}],"id":4591,"name":"ArrayTypeName","src":"3810:7:9"}],"id":4592,"name":"NewExpression","src":"3806:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4583,"type":"bytes calldata[] calldata","value":"data"},"id":4593,"name":"Identifier","src":"3818:4:9"}],"id":4594,"name":"MemberAccess","src":"3818:11:9"}],"id":4595,"name":"FunctionCall","src":"3806:24:9"}],"id":4596,"name":"Assignment","src":"3796:34:9"}],"id":4597,"name":"ExpressionStatement","src":"3796:34:9"},{"children":[{"attributes":{"assignments":[4599]},"children":[{"attributes":{"constant":false,"name":"i","scope":4633,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4598,"name":"ElementaryTypeName","src":"3844:4:9"}],"id":4599,"name":"VariableDeclaration","src":"3844:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4600,"name":"Literal","src":"3853:1:9"}],"id":4601,"name":"VariableDeclarationStatement","src":"3844:10:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"i"},"id":4602,"name":"Identifier","src":"3856:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4583,"type":"bytes calldata[] calldata","value":"data"},"id":4603,"name":"Identifier","src":"3860:4:9"}],"id":4604,"name":"MemberAccess","src":"3860:11:9"}],"id":4605,"name":"BinaryOperation","src":"3856:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"i"},"id":4606,"name":"Identifier","src":"3873:1:9"}],"id":4607,"name":"UnaryOperation","src":"3873:3:9"}],"id":4608,"name":"ExpressionStatement","src":"3873:3:9"},{"children":[{"attributes":{"assignments":[4610,4612]},"children":[{"attributes":{"constant":false,"name":"success","scope":4632,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4609,"name":"ElementaryTypeName","src":"3893:4:9"}],"id":4610,"name":"VariableDeclaration","src":"3893:12:9"},{"attributes":{"constant":false,"name":"result","scope":4632,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4611,"name":"ElementaryTypeName","src":"3907:5:9"}],"id":4612,"name":"VariableDeclaration","src":"3907:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$4638","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4613,"name":"ElementaryTypeNameExpression","src":"3930:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10211,"type":"contract PublicResolver","value":"this"},"id":4614,"name":"Identifier","src":"3938:4:9"}],"id":4615,"name":"FunctionCall","src":"3930:13:9"}],"id":4616,"name":"MemberAccess","src":"3930:26:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4583,"type":"bytes calldata[] calldata","value":"data"},"id":4617,"name":"Identifier","src":"3957:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"i"},"id":4618,"name":"Identifier","src":"3962:1:9"}],"id":4619,"name":"IndexAccess","src":"3957:7:9"}],"id":4620,"name":"FunctionCall","src":"3930:35:9"}],"id":4621,"name":"VariableDeclarationStatement","src":"3892:73:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":4622,"name":"Identifier","src":"3979:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4610,"type":"bool","value":"success"},"id":4623,"name":"Identifier","src":"3987:7:9"}],"id":4624,"name":"FunctionCall","src":"3979:16:9"}],"id":4625,"name":"ExpressionStatement","src":"3979:16:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4587,"type":"bytes memory[] memory","value":"results"},"id":4626,"name":"Identifier","src":"4009:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"i"},"id":4627,"name":"Identifier","src":"4017:1:9"}],"id":4628,"name":"IndexAccess","src":"4009:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4612,"type":"bytes memory","value":"result"},"id":4629,"name":"Identifier","src":"4022:6:9"}],"id":4630,"name":"Assignment","src":"4009:19:9"}],"id":4631,"name":"ExpressionStatement","src":"4009:19:9"}],"id":4632,"name":"Block","src":"3878:161:9"}],"id":4633,"name":"ForStatement","src":"3840:199:9"},{"attributes":{"functionReturnParameters":4588},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4587,"type":"bytes memory[] memory","value":"results"},"id":4634,"name":"Identifier","src":"4055:7:9"}],"id":4635,"name":"Return","src":"4048:14:9"}],"id":4636,"name":"Block","src":"3786:283:9"}],"id":4637,"name":"FunctionDefinition","src":"3703:366:9"}],"id":4638,"name":"ContractDefinition","src":"1897:2174:9"}],"id":4639,"name":"SourceUnit","src":"1401:2671:9"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[9417]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":8801,"name":"PragmaDirective","src":"0:24:10"},{"attributes":{"SourceUnit":10139,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":9418,"symbolAliases":[null],"unitAlias":""},"id":8802,"name":"ImportDirective","src":"26:29:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[9417],"name":"RRUtils","scope":9418},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10138,"type":"library ENSBytesUtils"},"id":8803,"name":"UserDefinedTypeName","src":"178:13:10"}],"id":8804,"name":"UsingForDirective","src":"172:26:10"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8851,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8805,"name":"ElementaryTypeName","src":"487:5:10"}],"id":8806,"name":"VariableDeclaration","src":"487:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8851,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8807,"name":"ElementaryTypeName","src":"506:4:10"}],"id":8808,"name":"VariableDeclaration","src":"506:11:10"}],"id":8809,"name":"ParameterList","src":"486:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8851,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8810,"name":"ElementaryTypeName","src":"541:4:10"}],"id":8811,"name":"VariableDeclaration","src":"541:4:10"}],"id":8812,"name":"ParameterList","src":"540:6:10"},{"children":[{"attributes":{"assignments":[8814]},"children":[{"attributes":{"constant":false,"name":"idx","scope":8850,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8813,"name":"ElementaryTypeName","src":"557:4:10"}],"id":8814,"name":"VariableDeclaration","src":"557:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8808,"type":"uint256","value":"offset"},"id":8815,"name":"Identifier","src":"568:6:10"}],"id":8816,"name":"VariableDeclarationStatement","src":"557:17:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8817,"name":"Literal","src":"591:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10142,"type":"function (bool) pure","value":"assert"},"id":8818,"name":"Identifier","src":"611:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8814,"type":"uint256","value":"idx"},"id":8819,"name":"Identifier","src":"618:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8806,"type":"bytes memory","value":"self"},"id":8820,"name":"Identifier","src":"624:4:10"}],"id":8821,"name":"MemberAccess","src":"624:11:10"}],"id":8822,"name":"BinaryOperation","src":"618:17:10"}],"id":8823,"name":"FunctionCall","src":"611:25:10"}],"id":8824,"name":"ExpressionStatement","src":"611:25:10"},{"attributes":{"assignments":[8826]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":8844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8825,"name":"ElementaryTypeName","src":"650:4:10"}],"id":8826,"name":"VariableDeclaration","src":"650:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8806,"type":"bytes memory","value":"self"},"id":8827,"name":"Identifier","src":"666:4:10"}],"id":8828,"name":"MemberAccess","src":"666:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8814,"type":"uint256","value":"idx"},"id":8829,"name":"Identifier","src":"681:3:10"}],"id":8830,"name":"FunctionCall","src":"666:19:10"}],"id":8831,"name":"VariableDeclarationStatement","src":"650:35:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8814,"type":"uint256","value":"idx"},"id":8832,"name":"Identifier","src":"699:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8826,"type":"uint256","value":"labelLen"},"id":8833,"name":"Identifier","src":"706:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8834,"name":"Literal","src":"717:1:10"}],"id":8835,"name":"BinaryOperation","src":"706:12:10"}],"id":8836,"name":"Assignment","src":"699:19:10"}],"id":8837,"name":"ExpressionStatement","src":"699:19:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8826,"type":"uint256","value":"labelLen"},"id":8838,"name":"Identifier","src":"736:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8839,"name":"Literal","src":"748:1:10"}],"id":8840,"name":"BinaryOperation","src":"736:13:10"},{"children":[{"id":8841,"name":"Break","src":"769:5:10"}],"id":8842,"name":"Block","src":"751:38:10"}],"id":8843,"name":"IfStatement","src":"732:57:10"}],"id":8844,"name":"Block","src":"597:202:10"}],"id":8845,"name":"WhileStatement","src":"584:215:10"},{"attributes":{"functionReturnParameters":8812},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8814,"type":"uint256","value":"idx"},"id":8846,"name":"Identifier","src":"815:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8808,"type":"uint256","value":"offset"},"id":8847,"name":"Identifier","src":"821:6:10"}],"id":8848,"name":"BinaryOperation","src":"815:12:10"}],"id":8849,"name":"Return","src":"808:19:10"}],"id":8850,"name":"Block","src":"547:287:10"}],"id":8851,"name":"FunctionDefinition","src":"467:367:10"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8874,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8852,"name":"ElementaryTypeName","src":"1073:5:10"}],"id":8853,"name":"VariableDeclaration","src":"1073:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8874,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8854,"name":"ElementaryTypeName","src":"1092:4:10"}],"id":8855,"name":"VariableDeclaration","src":"1092:11:10"}],"id":8856,"name":"ParameterList","src":"1072:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8874,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8857,"name":"ElementaryTypeName","src":"1127:5:10"}],"id":8858,"name":"VariableDeclaration","src":"1127:16:10"}],"id":8859,"name":"ParameterList","src":"1126:18:10"},{"children":[{"attributes":{"assignments":[8861]},"children":[{"attributes":{"constant":false,"name":"len","scope":8873,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8860,"name":"ElementaryTypeName","src":"1155:4:10"}],"id":8861,"name":"VariableDeclaration","src":"1155:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":8862,"name":"Identifier","src":"1166:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8853,"type":"bytes memory","value":"self"},"id":8863,"name":"Identifier","src":"1177:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8855,"type":"uint256","value":"offset"},"id":8864,"name":"Identifier","src":"1183:6:10"}],"id":8865,"name":"FunctionCall","src":"1166:24:10"}],"id":8866,"name":"VariableDeclarationStatement","src":"1155:35:10"},{"attributes":{"functionReturnParameters":8859},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9915,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8853,"type":"bytes memory","value":"self"},"id":8867,"name":"Identifier","src":"1207:4:10"}],"id":8868,"name":"MemberAccess","src":"1207:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8855,"type":"uint256","value":"offset"},"id":8869,"name":"Identifier","src":"1222:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8861,"type":"uint256","value":"len"},"id":8870,"name":"Identifier","src":"1230:3:10"}],"id":8871,"name":"FunctionCall","src":"1207:27:10"}],"id":8872,"name":"Return","src":"1200:34:10"}],"id":8873,"name":"Block","src":"1145:96:10"}],"id":8874,"name":"FunctionDefinition","src":"1055:186:10"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8923,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8875,"name":"ElementaryTypeName","src":"1541:5:10"}],"id":8876,"name":"VariableDeclaration","src":"1541:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8923,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8877,"name":"ElementaryTypeName","src":"1560:4:10"}],"id":8878,"name":"VariableDeclaration","src":"1560:11:10"}],"id":8879,"name":"ParameterList","src":"1540:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8923,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8880,"name":"ElementaryTypeName","src":"1595:4:10"}],"id":8881,"name":"VariableDeclaration","src":"1595:4:10"}],"id":8882,"name":"ParameterList","src":"1594:6:10"},{"children":[{"attributes":{"assignments":[8884]},"children":[{"attributes":{"constant":false,"name":"count","scope":8922,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8883,"name":"ElementaryTypeName","src":"1611:4:10"}],"id":8884,"name":"VariableDeclaration","src":"1611:10:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8885,"name":"Literal","src":"1624:1:10"}],"id":8886,"name":"VariableDeclarationStatement","src":"1611:14:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8887,"name":"Literal","src":"1642:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10142,"type":"function (bool) pure","value":"assert"},"id":8888,"name":"Identifier","src":"1662:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8878,"type":"uint256","value":"offset"},"id":8889,"name":"Identifier","src":"1669:6:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8876,"type":"bytes memory","value":"self"},"id":8890,"name":"Identifier","src":"1678:4:10"}],"id":8891,"name":"MemberAccess","src":"1678:11:10"}],"id":8892,"name":"BinaryOperation","src":"1669:20:10"}],"id":8893,"name":"FunctionCall","src":"1662:28:10"}],"id":8894,"name":"ExpressionStatement","src":"1662:28:10"},{"attributes":{"assignments":[8896]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":8918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8895,"name":"ElementaryTypeName","src":"1704:4:10"}],"id":8896,"name":"VariableDeclaration","src":"1704:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8876,"type":"bytes memory","value":"self"},"id":8897,"name":"Identifier","src":"1720:4:10"}],"id":8898,"name":"MemberAccess","src":"1720:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8878,"type":"uint256","value":"offset"},"id":8899,"name":"Identifier","src":"1735:6:10"}],"id":8900,"name":"FunctionCall","src":"1720:22:10"}],"id":8901,"name":"VariableDeclarationStatement","src":"1704:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8878,"type":"uint256","value":"offset"},"id":8902,"name":"Identifier","src":"1756:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8896,"type":"uint256","value":"labelLen"},"id":8903,"name":"Identifier","src":"1766:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8904,"name":"Literal","src":"1777:1:10"}],"id":8905,"name":"BinaryOperation","src":"1766:12:10"}],"id":8906,"name":"Assignment","src":"1756:22:10"}],"id":8907,"name":"ExpressionStatement","src":"1756:22:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8896,"type":"uint256","value":"labelLen"},"id":8908,"name":"Identifier","src":"1796:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8909,"name":"Literal","src":"1808:1:10"}],"id":8910,"name":"BinaryOperation","src":"1796:13:10"},{"children":[{"id":8911,"name":"Break","src":"1829:5:10"}],"id":8912,"name":"Block","src":"1811:38:10"}],"id":8913,"name":"IfStatement","src":"1792:57:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8884,"type":"uint256","value":"count"},"id":8914,"name":"Identifier","src":"1862:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8915,"name":"Literal","src":"1871:1:10"}],"id":8916,"name":"Assignment","src":"1862:10:10"}],"id":8917,"name":"ExpressionStatement","src":"1862:10:10"}],"id":8918,"name":"Block","src":"1648:235:10"}],"id":8919,"name":"WhileStatement","src":"1635:248:10"},{"attributes":{"functionReturnParameters":8882},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8884,"type":"uint256","value":"count"},"id":8920,"name":"Identifier","src":"1899:5:10"}],"id":8921,"name":"Return","src":"1892:12:10"}],"id":8922,"name":"Block","src":"1601:310:10"}],"id":8923,"name":"FunctionDefinition","src":"1521:390:10"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":9417,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":8938,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8924,"name":"ElementaryTypeName","src":"2006:5:10"}],"id":8925,"name":"VariableDeclaration","src":"2006:10:10"},{"attributes":{"constant":false,"name":"offset","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8926,"name":"ElementaryTypeName","src":"2026:4:10"}],"id":8927,"name":"VariableDeclaration","src":"2026:11:10"},{"attributes":{"constant":false,"name":"dnstype","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":8928,"name":"ElementaryTypeName","src":"2047:6:10"}],"id":8929,"name":"VariableDeclaration","src":"2047:14:10"},{"attributes":{"constant":false,"name":"class","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":8930,"name":"ElementaryTypeName","src":"2071:6:10"}],"id":8931,"name":"VariableDeclaration","src":"2071:12:10"},{"attributes":{"constant":false,"name":"ttl","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":8932,"name":"ElementaryTypeName","src":"2093:6:10"}],"id":8933,"name":"VariableDeclaration","src":"2093:10:10"},{"attributes":{"constant":false,"name":"rdataOffset","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8934,"name":"ElementaryTypeName","src":"2113:4:10"}],"id":8935,"name":"VariableDeclaration","src":"2113:16:10"},{"attributes":{"constant":false,"name":"nextOffset","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8936,"name":"ElementaryTypeName","src":"2139:4:10"}],"id":8937,"name":"VariableDeclaration","src":"2139:15:10"}],"id":8938,"name":"StructDefinition","src":"1978:183:10"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8964,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8939,"name":"ElementaryTypeName","src":"2387:5:10"}],"id":8940,"name":"VariableDeclaration","src":"2387:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8964,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8941,"name":"ElementaryTypeName","src":"2406:4:10"}],"id":8942,"name":"VariableDeclaration","src":"2406:11:10"}],"id":8943,"name":"ParameterList","src":"2386:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8964,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":8944,"name":"UserDefinedTypeName","src":"2442:10:10"}],"id":8945,"name":"VariableDeclaration","src":"2442:21:10"}],"id":8946,"name":"ParameterList","src":"2441:23:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8945,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8947,"name":"Identifier","src":"2475:3:10"}],"id":8949,"name":"MemberAccess","src":"2475:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8940,"type":"bytes memory","value":"self"},"id":8950,"name":"Identifier","src":"2486:4:10"}],"id":8951,"name":"Assignment","src":"2475:15:10"}],"id":8952,"name":"ExpressionStatement","src":"2475:15:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":8937,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8945,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8953,"name":"Identifier","src":"2500:3:10"}],"id":8955,"name":"MemberAccess","src":"2500:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8942,"type":"uint256","value":"offset"},"id":8956,"name":"Identifier","src":"2517:6:10"}],"id":8957,"name":"Assignment","src":"2500:23:10"}],"id":8958,"name":"ExpressionStatement","src":"2500:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$8938_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9081,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":8959,"name":"Identifier","src":"2533:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8945,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8960,"name":"Identifier","src":"2538:3:10"}],"id":8961,"name":"FunctionCall","src":"2533:9:10"}],"id":8962,"name":"ExpressionStatement","src":"2533:9:10"}],"id":8963,"name":"Block","src":"2465:84:10"}],"id":8964,"name":"FunctionDefinition","src":"2367:182:10"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":8979,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":8965,"name":"UserDefinedTypeName","src":"2734:10:10"}],"id":8966,"name":"VariableDeclaration","src":"2734:22:10"}],"id":8967,"name":"ParameterList","src":"2733:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8979,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8968,"name":"ElementaryTypeName","src":"2780:4:10"}],"id":8969,"name":"VariableDeclaration","src":"2780:4:10"}],"id":8970,"name":"ParameterList","src":"2779:6:10"},{"children":[{"attributes":{"functionReturnParameters":8970},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8966,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8971,"name":"Identifier","src":"2803:4:10"}],"id":8972,"name":"MemberAccess","src":"2803:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8966,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8973,"name":"Identifier","src":"2818:4:10"}],"id":8974,"name":"MemberAccess","src":"2818:9:10"}],"id":8975,"name":"MemberAccess","src":"2818:16:10"}],"id":8976,"name":"BinaryOperation","src":"2803:31:10"}],"id":8977,"name":"Return","src":"2796:38:10"}],"id":8978,"name":"Block","src":"2786:55:10"}],"id":8979,"name":"FunctionDefinition","src":"2720:121:10"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9081,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":8980,"name":"UserDefinedTypeName","src":"2978:10:10"}],"id":8981,"name":"VariableDeclaration","src":"2978:22:10"}],"id":8982,"name":"ParameterList","src":"2977:24:10"},{"attributes":{"parameters":[null]},"children":[],"id":8983,"name":"ParameterList","src":"3016:0:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8984,"name":"Identifier","src":"3026:4:10"}],"id":8986,"name":"MemberAccess","src":"3026:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":8937,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8987,"name":"Identifier","src":"3040:4:10"}],"id":8988,"name":"MemberAccess","src":"3040:15:10"}],"id":8989,"name":"Assignment","src":"3026:29:10"}],"id":8990,"name":"ExpressionStatement","src":"3026:29:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8991,"name":"Identifier","src":"3069:4:10"}],"id":8992,"name":"MemberAccess","src":"3069:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8993,"name":"Identifier","src":"3084:4:10"}],"id":8994,"name":"MemberAccess","src":"3084:9:10"}],"id":8995,"name":"MemberAccess","src":"3084:16:10"}],"id":8996,"name":"BinaryOperation","src":"3069:31:10"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":8983},"id":8997,"name":"Return","src":"3116:7:10"}],"id":8998,"name":"Block","src":"3102:31:10"}],"id":8999,"name":"IfStatement","src":"3065:68:10"},{"attributes":{"assignments":[9001]},"children":[{"attributes":{"constant":false,"name":"off","scope":9080,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9000,"name":"ElementaryTypeName","src":"3168:4:10"}],"id":9001,"name":"VariableDeclaration","src":"3168:8:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9002,"name":"Identifier","src":"3179:4:10"}],"id":9003,"name":"MemberAccess","src":"3179:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9004,"name":"Identifier","src":"3193:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9005,"name":"Identifier","src":"3204:4:10"}],"id":9006,"name":"MemberAccess","src":"3204:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9007,"name":"Identifier","src":"3215:4:10"}],"id":9008,"name":"MemberAccess","src":"3215:11:10"}],"id":9009,"name":"FunctionCall","src":"3193:34:10"}],"id":9010,"name":"BinaryOperation","src":"3179:48:10"}],"id":9011,"name":"VariableDeclarationStatement","src":"3168:59:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":8929,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9012,"name":"Identifier","src":"3275:4:10"}],"id":9014,"name":"MemberAccess","src":"3275:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9744,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9015,"name":"Identifier","src":"3290:4:10"}],"id":9016,"name":"MemberAccess","src":"3290:9:10"}],"id":9017,"name":"MemberAccess","src":"3290:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9018,"name":"Identifier","src":"3311:3:10"}],"id":9019,"name":"FunctionCall","src":"3290:25:10"}],"id":9020,"name":"Assignment","src":"3275:40:10"}],"id":9021,"name":"ExpressionStatement","src":"3275:40:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9022,"name":"Identifier","src":"3325:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9023,"name":"Literal","src":"3332:1:10"}],"id":9024,"name":"Assignment","src":"3325:8:10"}],"id":9025,"name":"ExpressionStatement","src":"3325:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":8931,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9026,"name":"Identifier","src":"3343:4:10"}],"id":9028,"name":"MemberAccess","src":"3343:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9744,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9029,"name":"Identifier","src":"3356:4:10"}],"id":9030,"name":"MemberAccess","src":"3356:9:10"}],"id":9031,"name":"MemberAccess","src":"3356:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9032,"name":"Identifier","src":"3377:3:10"}],"id":9033,"name":"FunctionCall","src":"3356:25:10"}],"id":9034,"name":"Assignment","src":"3343:38:10"}],"id":9035,"name":"ExpressionStatement","src":"3343:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9036,"name":"Identifier","src":"3391:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9037,"name":"Literal","src":"3398:1:10"}],"id":9038,"name":"Assignment","src":"3391:8:10"}],"id":9039,"name":"ExpressionStatement","src":"3391:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":8933,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9040,"name":"Identifier","src":"3409:4:10"}],"id":9042,"name":"MemberAccess","src":"3409:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":9764,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9043,"name":"Identifier","src":"3420:4:10"}],"id":9044,"name":"MemberAccess","src":"3420:9:10"}],"id":9045,"name":"MemberAccess","src":"3420:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9046,"name":"Identifier","src":"3441:3:10"}],"id":9047,"name":"FunctionCall","src":"3420:25:10"}],"id":9048,"name":"Assignment","src":"3409:36:10"}],"id":9049,"name":"ExpressionStatement","src":"3409:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9050,"name":"Identifier","src":"3455:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9051,"name":"Literal","src":"3462:1:10"}],"id":9052,"name":"Assignment","src":"3455:8:10"}],"id":9053,"name":"ExpressionStatement","src":"3455:8:10"},{"attributes":{"assignments":[9055]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":9080,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9054,"name":"ElementaryTypeName","src":"3500:4:10"}],"id":9055,"name":"VariableDeclaration","src":"3500:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9744,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9056,"name":"Identifier","src":"3519:4:10"}],"id":9057,"name":"MemberAccess","src":"3519:9:10"}],"id":9058,"name":"MemberAccess","src":"3519:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9059,"name":"Identifier","src":"3540:3:10"}],"id":9060,"name":"FunctionCall","src":"3519:25:10"}],"id":9061,"name":"VariableDeclarationStatement","src":"3500:44:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9062,"name":"Identifier","src":"3554:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9063,"name":"Literal","src":"3561:1:10"}],"id":9064,"name":"Assignment","src":"3554:8:10"}],"id":9065,"name":"ExpressionStatement","src":"3554:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":8935,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9066,"name":"Identifier","src":"3572:4:10"}],"id":9068,"name":"MemberAccess","src":"3572:16:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9069,"name":"Identifier","src":"3591:3:10"}],"id":9070,"name":"Assignment","src":"3572:22:10"}],"id":9071,"name":"ExpressionStatement","src":"3572:22:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":8937,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9072,"name":"Identifier","src":"3604:4:10"}],"id":9074,"name":"MemberAccess","src":"3604:15:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9075,"name":"Identifier","src":"3622:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9055,"type":"uint256","value":"rdataLength"},"id":9076,"name":"Identifier","src":"3628:11:10"}],"id":9077,"name":"BinaryOperation","src":"3622:17:10"}],"id":9078,"name":"Assignment","src":"3604:35:10"}],"id":9079,"name":"ExpressionStatement","src":"3604:35:10"}],"id":9080,"name":"Block","src":"3016:630:10"}],"id":9081,"name":"FunctionDefinition","src":"2964:682:10"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9102,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":9082,"name":"UserDefinedTypeName","src":"3836:10:10"}],"id":9083,"name":"VariableDeclaration","src":"3836:22:10"}],"id":9084,"name":"ParameterList","src":"3835:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9102,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9085,"name":"ElementaryTypeName","src":"3882:5:10"}],"id":9086,"name":"VariableDeclaration","src":"3882:12:10"}],"id":9087,"name":"ParameterList","src":"3881:14:10"},{"children":[{"attributes":{"functionReturnParameters":9087},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9915,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9088,"name":"Identifier","src":"3913:4:10"}],"id":9089,"name":"MemberAccess","src":"3913:9:10"}],"id":9090,"name":"MemberAccess","src":"3913:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9091,"name":"Identifier","src":"3933:4:10"}],"id":9092,"name":"MemberAccess","src":"3933:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9093,"name":"Identifier","src":"3946:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9094,"name":"Identifier","src":"3957:4:10"}],"id":9095,"name":"MemberAccess","src":"3957:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9096,"name":"Identifier","src":"3968:4:10"}],"id":9097,"name":"MemberAccess","src":"3968:11:10"}],"id":9098,"name":"FunctionCall","src":"3946:34:10"}],"id":9099,"name":"FunctionCall","src":"3913:68:10"}],"id":9100,"name":"Return","src":"3906:75:10"}],"id":9101,"name":"Block","src":"3896:92:10"}],"id":9102,"name":"FunctionDefinition","src":"3822:166:10"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9122,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":9103,"name":"UserDefinedTypeName","src":"4176:10:10"}],"id":9104,"name":"VariableDeclaration","src":"4176:22:10"}],"id":9105,"name":"ParameterList","src":"4175:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9122,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9106,"name":"ElementaryTypeName","src":"4222:5:10"}],"id":9107,"name":"VariableDeclaration","src":"4222:12:10"}],"id":9108,"name":"ParameterList","src":"4221:14:10"},{"children":[{"attributes":{"functionReturnParameters":9108},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9915,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9104,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9109,"name":"Identifier","src":"4253:4:10"}],"id":9110,"name":"MemberAccess","src":"4253:9:10"}],"id":9111,"name":"MemberAccess","src":"4253:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":8935,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9104,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9112,"name":"Identifier","src":"4273:4:10"}],"id":9113,"name":"MemberAccess","src":"4273:16:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":8937,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9104,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9114,"name":"Identifier","src":"4291:4:10"}],"id":9115,"name":"MemberAccess","src":"4291:15:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":8935,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9104,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9116,"name":"Identifier","src":"4309:4:10"}],"id":9117,"name":"MemberAccess","src":"4309:16:10"}],"id":9118,"name":"BinaryOperation","src":"4291:34:10"}],"id":9119,"name":"FunctionCall","src":"4253:73:10"}],"id":9120,"name":"Return","src":"4246:80:10"}],"id":9121,"name":"Block","src":"4236:97:10"}],"id":9122,"name":"FunctionDefinition","src":"4161:172:10"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9242,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9123,"name":"ElementaryTypeName","src":"4675:5:10"}],"id":9124,"name":"VariableDeclaration","src":"4675:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9242,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9125,"name":"ElementaryTypeName","src":"4694:4:10"}],"id":9126,"name":"VariableDeclaration","src":"4694:11:10"},{"attributes":{"constant":false,"name":"rrtype","scope":9242,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9127,"name":"ElementaryTypeName","src":"4707:6:10"}],"id":9128,"name":"VariableDeclaration","src":"4707:13:10"}],"id":9129,"name":"ParameterList","src":"4674:47:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9242,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9130,"name":"ElementaryTypeName","src":"4745:4:10"}],"id":9131,"name":"VariableDeclaration","src":"4745:4:10"}],"id":9132,"name":"ParameterList","src":"4744:6:10"},{"children":[{"attributes":{"assignments":[9134]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":9241,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9133,"name":"ElementaryTypeName","src":"4761:5:10"}],"id":9134,"name":"VariableDeclaration","src":"4761:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9135,"name":"ElementaryTypeNameExpression","src":"4780:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint16","value":"rrtype"},"id":9136,"name":"Identifier","src":"4786:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9137,"name":"Literal","src":"4796:1:10"}],"id":9138,"name":"BinaryOperation","src":"4786:11:10"}],"id":9139,"name":"FunctionCall","src":"4780:18:10"}],"id":9140,"name":"VariableDeclarationStatement","src":"4761:37:10"},{"attributes":{"assignments":[9142]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":9241,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9141,"name":"ElementaryTypeName","src":"4808:5:10"}],"id":9142,"name":"VariableDeclaration","src":"4808:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9143,"name":"ElementaryTypeNameExpression","src":"4827:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint16","value":"rrtype"},"id":9144,"name":"Identifier","src":"4834:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":9145,"name":"Literal","src":"4843:4:10"}],"id":9146,"name":"BinaryOperation","src":"4834:13:10"}],"id":9147,"name":"TupleExpression","src":"4833:15:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9148,"name":"Literal","src":"4851:1:10"}],"id":9149,"name":"BinaryOperation","src":"4833:19:10"}],"id":9150,"name":"FunctionCall","src":"4827:26:10"}],"id":9151,"name":"VariableDeclarationStatement","src":"4808:45:10"},{"attributes":{"assignments":[9153]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":9241,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9152,"name":"ElementaryTypeName","src":"4863:5:10"}],"id":9153,"name":"VariableDeclaration","src":"4863:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9154,"name":"ElementaryTypeNameExpression","src":"4885:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9155,"name":"ElementaryTypeNameExpression","src":"4891:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9156,"name":"Literal","src":"4897:1:10"}],"id":9157,"name":"FunctionCall","src":"4891:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9158,"name":"ElementaryTypeNameExpression","src":"4904:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":9159,"name":"Literal","src":"4910:1:10"}],"id":9160,"name":"FunctionCall","src":"4904:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9161,"name":"ElementaryTypeNameExpression","src":"4915:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint16","value":"rrtype"},"id":9162,"name":"Identifier","src":"4921:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":9163,"name":"Literal","src":"4930:3:10"}],"id":9164,"name":"BinaryOperation","src":"4921:12:10"}],"id":9165,"name":"FunctionCall","src":"4915:19:10"}],"id":9166,"name":"BinaryOperation","src":"4904:30:10"}],"id":9167,"name":"TupleExpression","src":"4903:32:10"}],"id":9168,"name":"BinaryOperation","src":"4891:44:10"}],"id":9169,"name":"FunctionCall","src":"4885:51:10"}],"id":9170,"name":"VariableDeclarationStatement","src":"4863:73:10"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[9172]},"children":[{"attributes":{"constant":false,"name":"off","scope":9238,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9171,"name":"ElementaryTypeName","src":"4951:4:10"}],"id":9172,"name":"VariableDeclaration","src":"4951:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9126,"type":"uint256","value":"offset"},"id":9173,"name":"Identifier","src":"4962:6:10"}],"id":9174,"name":"VariableDeclarationStatement","src":"4951:17:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9175,"name":"Identifier","src":"4970:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9124,"type":"bytes memory","value":"self"},"id":9176,"name":"Identifier","src":"4976:4:10"}],"id":9177,"name":"MemberAccess","src":"4976:11:10"}],"id":9178,"name":"BinaryOperation","src":"4970:17:10"},{"children":[{"attributes":{"assignments":[9180]},"children":[{"attributes":{"constant":false,"name":"window","scope":9237,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9179,"name":"ElementaryTypeName","src":"5004:5:10"}],"id":9180,"name":"VariableDeclaration","src":"5004:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9124,"type":"bytes memory","value":"self"},"id":9181,"name":"Identifier","src":"5019:4:10"}],"id":9182,"name":"MemberAccess","src":"5019:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9183,"name":"Identifier","src":"5034:3:10"}],"id":9184,"name":"FunctionCall","src":"5019:19:10"}],"id":9185,"name":"VariableDeclarationStatement","src":"5004:34:10"},{"attributes":{"assignments":[9187]},"children":[{"attributes":{"constant":false,"name":"len","scope":9237,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9186,"name":"ElementaryTypeName","src":"5052:5:10"}],"id":9187,"name":"VariableDeclaration","src":"5052:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9124,"type":"bytes memory","value":"self"},"id":9188,"name":"Identifier","src":"5064:4:10"}],"id":9189,"name":"MemberAccess","src":"5064:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9190,"name":"Identifier","src":"5079:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9191,"name":"Literal","src":"5085:1:10"}],"id":9192,"name":"BinaryOperation","src":"5079:7:10"}],"id":9193,"name":"FunctionCall","src":"5064:23:10"}],"id":9194,"name":"VariableDeclarationStatement","src":"5052:35:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"uint8","value":"typeWindow"},"id":9195,"name":"Identifier","src":"5105:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9180,"type":"uint8","value":"window"},"id":9196,"name":"Identifier","src":"5118:6:10"}],"id":9197,"name":"BinaryOperation","src":"5105:19:10"},{"children":[{"attributes":{"functionReturnParameters":9132},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9198,"name":"Literal","src":"5213:5:10"}],"id":9199,"name":"Return","src":"5206:12:10"}],"id":9200,"name":"Block","src":"5126:107:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"uint8","value":"typeWindow"},"id":9201,"name":"Identifier","src":"5243:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9180,"type":"uint8","value":"window"},"id":9202,"name":"Identifier","src":"5257:6:10"}],"id":9203,"name":"BinaryOperation","src":"5243:20:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9187,"type":"uint8","value":"len"},"id":9204,"name":"Identifier","src":"5329:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9205,"name":"Literal","src":"5335:1:10"}],"id":9206,"name":"BinaryOperation","src":"5329:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint8","value":"windowByte"},"id":9207,"name":"Identifier","src":"5340:10:10"}],"id":9208,"name":"BinaryOperation","src":"5329:21:10"},{"children":[{"attributes":{"functionReturnParameters":9132},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9209,"name":"Literal","src":"5443:5:10"}],"id":9210,"name":"Return","src":"5436:12:10"}],"id":9211,"name":"Block","src":"5352:115:10"}],"id":9212,"name":"IfStatement","src":"5325:142:10"},{"attributes":{"functionReturnParameters":9132},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9124,"type":"bytes memory","value":"self"},"id":9213,"name":"Identifier","src":"5492:4:10"}],"id":9214,"name":"MemberAccess","src":"5492:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9215,"name":"Identifier","src":"5507:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint8","value":"windowByte"},"id":9216,"name":"Identifier","src":"5513:10:10"}],"id":9217,"name":"BinaryOperation","src":"5507:16:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9218,"name":"Literal","src":"5526:1:10"}],"id":9219,"name":"BinaryOperation","src":"5507:20:10"}],"id":9220,"name":"FunctionCall","src":"5492:36:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9153,"type":"uint8","value":"windowBitmask"},"id":9221,"name":"Identifier","src":"5531:13:10"}],"id":9222,"name":"BinaryOperation","src":"5492:52:10"}],"id":9223,"name":"TupleExpression","src":"5491:54:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9224,"name":"Literal","src":"5549:1:10"}],"id":9225,"name":"BinaryOperation","src":"5491:59:10"}],"id":9226,"name":"Return","src":"5484:66:10"}],"id":9227,"name":"Block","src":"5265:300:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9228,"name":"Identifier","src":"5630:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9187,"type":"uint8","value":"len"},"id":9229,"name":"Identifier","src":"5637:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9230,"name":"Literal","src":"5643:1:10"}],"id":9231,"name":"BinaryOperation","src":"5637:7:10"}],"id":9232,"name":"Assignment","src":"5630:14:10"}],"id":9233,"name":"ExpressionStatement","src":"5630:14:10"}],"id":9234,"name":"Block","src":"5571:88:10"}],"id":9235,"name":"IfStatement","src":"5239:420:10"}],"id":9236,"name":"IfStatement","src":"5101:558:10"}],"id":9237,"name":"Block","src":"4990:679:10"}],"id":9238,"name":"ForStatement","src":"4946:723:10"},{"attributes":{"functionReturnParameters":9132},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9239,"name":"Literal","src":"5686:5:10"}],"id":9240,"name":"Return","src":"5679:12:10"}],"id":9241,"name":"Block","src":"4751:947:10"}],"id":9242,"name":"FunctionDefinition","src":"4650:1048:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9397,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9243,"name":"ElementaryTypeName","src":"5726:5:10"}],"id":9244,"name":"VariableDeclaration","src":"5726:17:10"},{"attributes":{"constant":false,"name":"other","scope":9397,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9245,"name":"ElementaryTypeName","src":"5745:5:10"}],"id":9246,"name":"VariableDeclaration","src":"5745:18:10"}],"id":9247,"name":"ParameterList","src":"5725:39:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9397,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9248,"name":"ElementaryTypeName","src":"5788:3:10"}],"id":9249,"name":"VariableDeclaration","src":"5788:3:10"}],"id":9250,"name":"ParameterList","src":"5787:5:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9708,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9251,"name":"Identifier","src":"5807:4:10"}],"id":9252,"name":"MemberAccess","src":"5807:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9253,"name":"Identifier","src":"5819:5:10"}],"id":9254,"name":"FunctionCall","src":"5807:18:10"},{"children":[{"attributes":{"functionReturnParameters":9250},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9255,"name":"Literal","src":"5848:1:10"}],"id":9256,"name":"Return","src":"5841:8:10"}],"id":9257,"name":"Block","src":"5827:33:10"}],"id":9258,"name":"IfStatement","src":"5803:57:10"},{"attributes":{"assignments":[9260],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9259,"name":"ElementaryTypeName","src":"5870:4:10"}],"id":9260,"name":"VariableDeclaration","src":"5870:8:10"}],"id":9261,"name":"VariableDeclarationStatement","src":"5870:8:10"},{"attributes":{"assignments":[9263],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9262,"name":"ElementaryTypeName","src":"5888:4:10"}],"id":9263,"name":"VariableDeclaration","src":"5888:13:10"}],"id":9264,"name":"VariableDeclarationStatement","src":"5888:13:10"},{"attributes":{"assignments":[9266],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9265,"name":"ElementaryTypeName","src":"5911:4:10"}],"id":9266,"name":"VariableDeclaration","src":"5911:12:10"}],"id":9267,"name":"VariableDeclarationStatement","src":"5911:12:10"},{"attributes":{"assignments":[9269],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9268,"name":"ElementaryTypeName","src":"5933:4:10"}],"id":9269,"name":"VariableDeclaration","src":"5933:17:10"}],"id":9270,"name":"VariableDeclarationStatement","src":"5933:17:10"},{"attributes":{"assignments":[9272]},"children":[{"attributes":{"constant":false,"name":"counts","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9271,"name":"ElementaryTypeName","src":"5960:4:10"}],"id":9272,"name":"VariableDeclaration","src":"5960:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":8923,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9273,"name":"Identifier","src":"5974:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9274,"name":"Identifier","src":"5985:4:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9275,"name":"Literal","src":"5991:1:10"}],"id":9276,"name":"FunctionCall","src":"5974:19:10"}],"id":9277,"name":"VariableDeclarationStatement","src":"5960:33:10"},{"attributes":{"assignments":[9279]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9278,"name":"ElementaryTypeName","src":"6003:4:10"}],"id":9279,"name":"VariableDeclaration","src":"6003:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":8923,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9280,"name":"Identifier","src":"6022:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9281,"name":"Identifier","src":"6033:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9282,"name":"Literal","src":"6040:1:10"}],"id":9283,"name":"FunctionCall","src":"6022:20:10"}],"id":9284,"name":"VariableDeclarationStatement","src":"6003:39:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9285,"name":"Identifier","src":"6153:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9279,"type":"uint256","value":"othercounts"},"id":9286,"name":"Identifier","src":"6162:11:10"}],"id":9287,"name":"BinaryOperation","src":"6153:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9266,"type":"uint256","value":"prevoff"},"id":9288,"name":"Identifier","src":"6189:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9289,"name":"Identifier","src":"6199:3:10"}],"id":9290,"name":"Assignment","src":"6189:13:10"}],"id":9291,"name":"ExpressionStatement","src":"6189:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9292,"name":"Identifier","src":"6216:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9416,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9293,"name":"Identifier","src":"6222:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9294,"name":"Identifier","src":"6231:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9295,"name":"Identifier","src":"6237:3:10"}],"id":9296,"name":"FunctionCall","src":"6222:19:10"}],"id":9297,"name":"Assignment","src":"6216:25:10"}],"id":9298,"name":"ExpressionStatement","src":"6216:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9299,"name":"Identifier","src":"6255:6:10"}],"id":9300,"name":"UnaryOperation","src":"6255:8:10"}],"id":9301,"name":"ExpressionStatement","src":"6255:8:10"}],"id":9302,"name":"Block","src":"6175:99:10"}],"id":9303,"name":"WhileStatement","src":"6146:128:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9279,"type":"uint256","value":"othercounts"},"id":9304,"name":"Identifier","src":"6291:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9305,"name":"Identifier","src":"6305:6:10"}],"id":9306,"name":"BinaryOperation","src":"6291:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9269,"type":"uint256","value":"otherprevoff"},"id":9307,"name":"Identifier","src":"6327:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9308,"name":"Identifier","src":"6342:8:10"}],"id":9309,"name":"Assignment","src":"6327:23:10"}],"id":9310,"name":"ExpressionStatement","src":"6327:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9311,"name":"Identifier","src":"6364:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9416,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9312,"name":"Identifier","src":"6375:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9313,"name":"Identifier","src":"6384:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9314,"name":"Identifier","src":"6391:8:10"}],"id":9315,"name":"FunctionCall","src":"6375:25:10"}],"id":9316,"name":"Assignment","src":"6364:36:10"}],"id":9317,"name":"ExpressionStatement","src":"6364:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9279,"type":"uint256","value":"othercounts"},"id":9318,"name":"Identifier","src":"6414:11:10"}],"id":9319,"name":"UnaryOperation","src":"6414:13:10"}],"id":9320,"name":"ExpressionStatement","src":"6414:13:10"}],"id":9321,"name":"Block","src":"6313:125:10"}],"id":9322,"name":"WhileStatement","src":"6284:154:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9323,"name":"Identifier","src":"6513:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9324,"name":"Literal","src":"6522:1:10"}],"id":9325,"name":"BinaryOperation","src":"6513:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9654,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9326,"name":"Identifier","src":"6528:4:10"}],"id":9327,"name":"MemberAccess","src":"6528:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9328,"name":"Identifier","src":"6540:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9329,"name":"Identifier","src":"6545:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9330,"name":"Identifier","src":"6552:8:10"}],"id":9331,"name":"FunctionCall","src":"6528:33:10"}],"id":9332,"name":"UnaryOperation","src":"6527:34:10"}],"id":9333,"name":"BinaryOperation","src":"6513:48:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9266,"type":"uint256","value":"prevoff"},"id":9334,"name":"Identifier","src":"6577:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9335,"name":"Identifier","src":"6587:3:10"}],"id":9336,"name":"Assignment","src":"6577:13:10"}],"id":9337,"name":"ExpressionStatement","src":"6577:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9338,"name":"Identifier","src":"6604:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9416,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9339,"name":"Identifier","src":"6610:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9340,"name":"Identifier","src":"6619:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9341,"name":"Identifier","src":"6625:3:10"}],"id":9342,"name":"FunctionCall","src":"6610:19:10"}],"id":9343,"name":"Assignment","src":"6604:25:10"}],"id":9344,"name":"ExpressionStatement","src":"6604:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9269,"type":"uint256","value":"otherprevoff"},"id":9345,"name":"Identifier","src":"6643:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9346,"name":"Identifier","src":"6658:8:10"}],"id":9347,"name":"Assignment","src":"6643:23:10"}],"id":9348,"name":"ExpressionStatement","src":"6643:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9349,"name":"Identifier","src":"6680:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9416,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9350,"name":"Identifier","src":"6691:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9351,"name":"Identifier","src":"6700:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9352,"name":"Identifier","src":"6707:8:10"}],"id":9353,"name":"FunctionCall","src":"6691:25:10"}],"id":9354,"name":"Assignment","src":"6680:36:10"}],"id":9355,"name":"ExpressionStatement","src":"6680:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9356,"name":"Identifier","src":"6730:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9357,"name":"Literal","src":"6740:1:10"}],"id":9358,"name":"Assignment","src":"6730:11:10"}],"id":9359,"name":"ExpressionStatement","src":"6730:11:10"}],"id":9360,"name":"Block","src":"6563:189:10"}],"id":9361,"name":"WhileStatement","src":"6506:246:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9362,"name":"Identifier","src":"6766:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9363,"name":"Literal","src":"6773:1:10"}],"id":9364,"name":"BinaryOperation","src":"6766:8:10"},{"children":[{"attributes":{"functionReturnParameters":9250},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9365,"name":"Literal","src":"6798:1:10"}],"id":9366,"name":"UnaryOperation","src":"6797:2:10"}],"id":9367,"name":"Return","src":"6790:9:10"}],"id":9368,"name":"Block","src":"6776:34:10"}],"id":9369,"name":"IfStatement","src":"6762:48:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9370,"name":"Identifier","src":"6822:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9371,"name":"Literal","src":"6834:1:10"}],"id":9372,"name":"BinaryOperation","src":"6822:13:10"},{"children":[{"attributes":{"functionReturnParameters":9250},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9373,"name":"Literal","src":"6858:1:10"}],"id":9374,"name":"Return","src":"6851:8:10"}],"id":9375,"name":"Block","src":"6837:33:10"}],"id":9376,"name":"IfStatement","src":"6819:51:10"},{"attributes":{"functionReturnParameters":9250},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":9594,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9377,"name":"Identifier","src":"6887:4:10"}],"id":9378,"name":"MemberAccess","src":"6887:12:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9266,"type":"uint256","value":"prevoff"},"id":9379,"name":"Identifier","src":"6900:7:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9380,"name":"Literal","src":"6910:1:10"}],"id":9381,"name":"BinaryOperation","src":"6900:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9382,"name":"Identifier","src":"6913:4:10"}],"id":9383,"name":"MemberAccess","src":"6913:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9266,"type":"uint256","value":"prevoff"},"id":9384,"name":"Identifier","src":"6928:7:10"}],"id":9385,"name":"FunctionCall","src":"6913:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9386,"name":"Identifier","src":"6938:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9269,"type":"uint256","value":"otherprevoff"},"id":9387,"name":"Identifier","src":"6945:12:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9388,"name":"Literal","src":"6960:1:10"}],"id":9389,"name":"BinaryOperation","src":"6945:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9390,"name":"Identifier","src":"6963:5:10"}],"id":9391,"name":"MemberAccess","src":"6963:15:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9269,"type":"uint256","value":"otherprevoff"},"id":9392,"name":"Identifier","src":"6979:12:10"}],"id":9393,"name":"FunctionCall","src":"6963:29:10"}],"id":9394,"name":"FunctionCall","src":"6887:106:10"}],"id":9395,"name":"Return","src":"6880:113:10"}],"id":9396,"name":"Block","src":"5793:1207:10"}],"id":9397,"name":"FunctionDefinition","src":"5704:1296:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":9416,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9398,"name":"ElementaryTypeName","src":"7024:5:10"}],"id":9399,"name":"VariableDeclaration","src":"7024:17:10"},{"attributes":{"constant":false,"name":"off","scope":9416,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9400,"name":"ElementaryTypeName","src":"7043:4:10"}],"id":9401,"name":"VariableDeclaration","src":"7043:8:10"}],"id":9402,"name":"ParameterList","src":"7023:29:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9416,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9403,"name":"ElementaryTypeName","src":"7075:4:10"}],"id":9404,"name":"VariableDeclaration","src":"7075:4:10"}],"id":9405,"name":"ParameterList","src":"7074:6:10"},{"children":[{"attributes":{"functionReturnParameters":9405},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9401,"type":"uint256","value":"off"},"id":9406,"name":"Identifier","src":"7098:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9407,"name":"Literal","src":"7104:1:10"}],"id":9408,"name":"BinaryOperation","src":"7098:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9399,"type":"bytes memory","value":"body"},"id":9409,"name":"Identifier","src":"7108:4:10"}],"id":9410,"name":"MemberAccess","src":"7108:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9401,"type":"uint256","value":"off"},"id":9411,"name":"Identifier","src":"7123:3:10"}],"id":9412,"name":"FunctionCall","src":"7108:19:10"}],"id":9413,"name":"BinaryOperation","src":"7098:29:10"}],"id":9414,"name":"Return","src":"7091:36:10"}],"id":9415,"name":"Block","src":"7081:53:10"}],"id":9416,"name":"FunctionDefinition","src":"7006:128:10"}],"id":9417,"name":"ContractDefinition","src":"150:6986:10"}],"id":9418,"name":"SourceUnit","src":"0:7137:10"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[8799]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":8732,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[8799],"name":"ResolverBase","scope":8800},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":8799,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8733,"name":"ElementaryTypeName","src":"53:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":8734,"name":"Literal","src":"97:10:11"}],"id":8735,"name":"VariableDeclaration","src":"53:54:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":8799,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":8747,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8736,"name":"ElementaryTypeName","src":"141:6:11"}],"id":8737,"name":"VariableDeclaration","src":"141:18:11"}],"id":8738,"name":"ParameterList","src":"140:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":8747,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8739,"name":"ElementaryTypeName","src":"181:4:11"}],"id":8740,"name":"VariableDeclaration","src":"181:4:11"}],"id":8741,"name":"ParameterList","src":"180:6:11"},{"children":[{"attributes":{"functionReturnParameters":8741},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8737,"type":"bytes4","value":"interfaceID"},"id":8742,"name":"Identifier","src":"204:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8735,"type":"bytes4","value":"INTERFACE_META_ID"},"id":8743,"name":"Identifier","src":"219:17:11"}],"id":8744,"name":"BinaryOperation","src":"204:32:11"}],"id":8745,"name":"Return","src":"197:39:11"}],"id":8746,"name":"Block","src":"187:56:11"}],"id":8747,"name":"FunctionDefinition","src":"114:129:11"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":8799,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":8754,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8748,"name":"ElementaryTypeName","src":"271:7:11"}],"id":8749,"name":"VariableDeclaration","src":"271:12:11"}],"id":8750,"name":"ParameterList","src":"270:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":8754,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8751,"name":"ElementaryTypeName","src":"307:4:11"}],"id":8752,"name":"VariableDeclaration","src":"307:4:11"}],"id":8753,"name":"ParameterList","src":"306:6:11"}],"id":8754,"name":"FunctionDefinition","src":"249:64:11"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":8766,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8755,"name":"ElementaryTypeName","src":"339:7:11"}],"id":8756,"name":"VariableDeclaration","src":"339:12:11"}],"id":8757,"name":"ParameterList","src":"338:14:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":8758,"name":"Identifier","src":"363:7:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8754,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":8759,"name":"Identifier","src":"371:12:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8756,"type":"bytes32","value":"node"},"id":8760,"name":"Identifier","src":"384:4:11"}],"id":8761,"name":"FunctionCall","src":"371:18:11"}],"id":8762,"name":"FunctionCall","src":"363:27:11"}],"id":8763,"name":"ExpressionStatement","src":"363:27:11"},{"id":8764,"name":"PlaceholderStatement","src":"400:1:11"}],"id":8765,"name":"Block","src":"353:55:11"}],"id":8766,"name":"ModifierDefinition","src":"319:89:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":8799,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":8782,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8767,"name":"ElementaryTypeName","src":"438:5:11"}],"id":8768,"name":"VariableDeclaration","src":"438:14:11"}],"id":8769,"name":"ParameterList","src":"437:16:11"},{"children":[{"attributes":{"constant":false,"name":"a","scope":8782,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":8770,"name":"ElementaryTypeName","src":"476:15:11"}],"id":8771,"name":"VariableDeclaration","src":"476:17:11"}],"id":8772,"name":"ParameterList","src":"475:19:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":8773,"name":"Identifier","src":"505:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"bytes memory","value":"b"},"id":8774,"name":"Identifier","src":"513:1:11"}],"id":8775,"name":"MemberAccess","src":"513:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8776,"name":"Literal","src":"525:2:11"}],"id":8777,"name":"BinaryOperation","src":"513:14:11"}],"id":8778,"name":"FunctionCall","src":"505:23:11"}],"id":8779,"name":"ExpressionStatement","src":"505:23:11"},{"attributes":{"externalReferences":[{"a":{"declaration":8771,"isOffset":false,"isSlot":false,"src":"561:1:11","valueSize":1}},{"b":{"declaration":8768,"isOffset":false,"isSlot":false,"src":"580:1:11","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":8780,"name":"InlineAssembly","src":"538:74:11"}],"id":8781,"name":"Block","src":"495:123:11"}],"id":8782,"name":"FunctionDefinition","src":"414:204:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":8799,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":8798,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8783,"name":"ElementaryTypeName","src":"648:7:11"}],"id":8784,"name":"VariableDeclaration","src":"648:9:11"}],"id":8785,"name":"ParameterList","src":"647:11:11"},{"children":[{"attributes":{"constant":false,"name":"b","scope":8798,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8786,"name":"ElementaryTypeName","src":"681:5:11"}],"id":8787,"name":"VariableDeclaration","src":"681:14:11"}],"id":8788,"name":"ParameterList","src":"680:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8787,"type":"bytes memory","value":"b"},"id":8789,"name":"Identifier","src":"707:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8790,"name":"ElementaryTypeName","src":"715:5:11"}],"id":8791,"name":"NewExpression","src":"711:9:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8792,"name":"Literal","src":"721:2:11"}],"id":8793,"name":"FunctionCall","src":"711:13:11"}],"id":8794,"name":"Assignment","src":"707:17:11"}],"id":8795,"name":"ExpressionStatement","src":"707:17:11"},{"attributes":{"externalReferences":[{"b":{"declaration":8787,"isOffset":false,"isSlot":false,"src":"768:1:11","valueSize":1}},{"a":{"declaration":8784,"isOffset":false,"isSlot":false,"src":"780:1:11","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":8796,"name":"InlineAssembly","src":"734:73:11"}],"id":8797,"name":"Block","src":"697:116:11"}],"id":8798,"name":"FunctionDefinition","src":"624:189:11"}],"id":8799,"name":"ContractDefinition","src":"25:790:11"}],"id":8800,"name":"SourceUnit","src":"0:816:11"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[5762]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5628,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5763,"symbolAliases":[null],"unitAlias":""},"id":5629,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5762,8799],"name":"ABIResolver","scope":5763},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":5630,"name":"UserDefinedTypeName","src":"80:12:12"}],"id":5631,"name":"InheritanceSpecifier","src":"80:12:12"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":5762,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5632,"name":"ElementaryTypeName","src":"99:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":5633,"name":"Literal","src":"142:10:12"}],"id":5634,"name":"VariableDeclaration","src":"99:53:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5640,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5635,"name":"ElementaryTypeName","src":"176:7:12"}],"id":5636,"name":"VariableDeclaration","src":"176:20:12"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":5640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5637,"name":"ElementaryTypeName","src":"198:7:12"}],"id":5638,"name":"VariableDeclaration","src":"198:27:12"}],"id":5639,"name":"ParameterList","src":"175:51:12"}],"id":5640,"name":"EventDefinition","src":"159:68:12"},{"attributes":{"constant":false,"name":"abis","scope":5762,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5641,"name":"ElementaryTypeName","src":"241:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5642,"name":"ElementaryTypeName","src":"258:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5643,"name":"ElementaryTypeName","src":"267:5:12"}],"id":5644,"name":"Mapping","src":"250:23:12"}],"id":5645,"name":"Mapping","src":"233:41:12"}],"id":5646,"name":"VariableDeclaration","src":"233:46:12"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":5762,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5684,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5647,"name":"ElementaryTypeName","src":"598:7:12"}],"id":5648,"name":"VariableDeclaration","src":"598:12:12"},{"attributes":{"constant":false,"name":"contentType","scope":5684,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5649,"name":"ElementaryTypeName","src":"612:7:12"}],"id":5650,"name":"VariableDeclaration","src":"612:19:12"},{"attributes":{"constant":false,"name":"data","scope":5684,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5651,"name":"ElementaryTypeName","src":"633:5:12"}],"id":5652,"name":"VariableDeclaration","src":"633:19:12"}],"id":5653,"name":"ParameterList","src":"597:56:12"},{"attributes":{"parameters":[null]},"children":[],"id":5657,"name":"ParameterList","src":"680:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":5654,"name":"Identifier","src":"663:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5648,"type":"bytes32","value":"node"},"id":5655,"name":"Identifier","src":"674:4:12"}],"id":5656,"name":"ModifierInvocation","src":"663:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":5658,"name":"Identifier","src":"735:7:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5650,"type":"uint256","value":"contentType"},"id":5659,"name":"Identifier","src":"745:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5660,"name":"Literal","src":"759:1:12"}],"id":5661,"name":"BinaryOperation","src":"745:15:12"}],"id":5662,"name":"TupleExpression","src":"744:17:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5650,"type":"uint256","value":"contentType"},"id":5663,"name":"Identifier","src":"764:11:12"}],"id":5664,"name":"BinaryOperation","src":"744:31:12"}],"id":5665,"name":"TupleExpression","src":"743:33:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5666,"name":"Literal","src":"780:1:12"}],"id":5667,"name":"BinaryOperation","src":"743:38:12"}],"id":5668,"name":"FunctionCall","src":"735:47:12"}],"id":5669,"name":"ExpressionStatement","src":"735:47:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5646,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":5670,"name":"Identifier","src":"793:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5648,"type":"bytes32","value":"node"},"id":5671,"name":"Identifier","src":"798:4:12"}],"id":5673,"name":"IndexAccess","src":"793:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5650,"type":"uint256","value":"contentType"},"id":5672,"name":"Identifier","src":"804:11:12"}],"id":5674,"name":"IndexAccess","src":"793:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5652,"type":"bytes calldata","value":"data"},"id":5675,"name":"Identifier","src":"819:4:12"}],"id":5676,"name":"Assignment","src":"793:30:12"}],"id":5677,"name":"ExpressionStatement","src":"793:30:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5640,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":5678,"name":"Identifier","src":"838:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5648,"type":"bytes32","value":"node"},"id":5679,"name":"Identifier","src":"849:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5650,"type":"uint256","value":"contentType"},"id":5680,"name":"Identifier","src":"855:11:12"}],"id":5681,"name":"FunctionCall","src":"838:29:12"}],"id":5682,"name":"EmitStatement","src":"833:34:12"}],"id":5683,"name":"Block","src":"680:194:12"}],"id":5684,"name":"FunctionDefinition","src":"582:292:12"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":5762,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5744,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5685,"name":"ElementaryTypeName","src":"1208:7:12"}],"id":5686,"name":"VariableDeclaration","src":"1208:12:12"},{"attributes":{"constant":false,"name":"contentTypes","scope":5744,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5687,"name":"ElementaryTypeName","src":"1222:7:12"}],"id":5688,"name":"VariableDeclaration","src":"1222:20:12"}],"id":5689,"name":"ParameterList","src":"1207:36:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5744,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5690,"name":"ElementaryTypeName","src":"1267:7:12"}],"id":5691,"name":"VariableDeclaration","src":"1267:7:12"},{"attributes":{"constant":false,"name":"","scope":5744,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5692,"name":"ElementaryTypeName","src":"1276:5:12"}],"id":5693,"name":"VariableDeclaration","src":"1276:12:12"}],"id":5694,"name":"ParameterList","src":"1266:23:12"},{"children":[{"attributes":{"assignments":[5698]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":5743,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5695,"name":"ElementaryTypeName","src":"1308:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5696,"name":"ElementaryTypeName","src":"1317:5:12"}],"id":5697,"name":"Mapping","src":"1300:23:12"}],"id":5698,"name":"VariableDeclaration","src":"1300:38:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5646,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":5699,"name":"Identifier","src":"1341:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5686,"type":"bytes32","value":"node"},"id":5700,"name":"Identifier","src":"1346:4:12"}],"id":5701,"name":"IndexAccess","src":"1341:10:12"}],"id":5702,"name":"VariableDeclarationStatement","src":"1300:51:12"},{"children":[{"attributes":{"assignments":[5704]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":5736,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5703,"name":"ElementaryTypeName","src":"1367:7:12"}],"id":5704,"name":"VariableDeclaration","src":"1367:19:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5705,"name":"Literal","src":"1389:1:12"}],"id":5706,"name":"VariableDeclarationStatement","src":"1367:23:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5707,"name":"Identifier","src":"1392:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5688,"type":"uint256","value":"contentTypes"},"id":5708,"name":"Identifier","src":"1407:12:12"}],"id":5709,"name":"BinaryOperation","src":"1392:27:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5710,"name":"Identifier","src":"1421:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5711,"name":"Literal","src":"1437:1:12"}],"id":5712,"name":"Assignment","src":"1421:17:12"}],"id":5713,"name":"ExpressionStatement","src":"1421:17:12"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5714,"name":"Identifier","src":"1459:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5688,"type":"uint256","value":"contentTypes"},"id":5715,"name":"Identifier","src":"1473:12:12"}],"id":5716,"name":"BinaryOperation","src":"1459:26:12"}],"id":5717,"name":"TupleExpression","src":"1458:28:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5718,"name":"Literal","src":"1490:1:12"}],"id":5719,"name":"BinaryOperation","src":"1458:33:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5698,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":5720,"name":"Identifier","src":"1495:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5721,"name":"Identifier","src":"1502:11:12"}],"id":5722,"name":"IndexAccess","src":"1495:19:12"}],"id":5723,"name":"MemberAccess","src":"1495:26:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5724,"name":"Literal","src":"1524:1:12"}],"id":5725,"name":"BinaryOperation","src":"1495:30:12"}],"id":5726,"name":"BinaryOperation","src":"1458:67:12"},{"children":[{"attributes":{"functionReturnParameters":5694},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5727,"name":"Identifier","src":"1553:11:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5698,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":5728,"name":"Identifier","src":"1566:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5729,"name":"Identifier","src":"1573:11:12"}],"id":5730,"name":"IndexAccess","src":"1566:19:12"}],"id":5731,"name":"TupleExpression","src":"1552:34:12"}],"id":5732,"name":"Return","src":"1545:41:12"}],"id":5733,"name":"Block","src":"1527:74:12"}],"id":5734,"name":"IfStatement","src":"1454:147:12"}],"id":5735,"name":"Block","src":"1440:171:12"}],"id":5736,"name":"ForStatement","src":"1362:249:12"},{"attributes":{"functionReturnParameters":5694},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5737,"name":"Literal","src":"1629:1:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5738,"name":"ElementaryTypeNameExpression","src":"1632:5:12"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":5739,"name":"Literal","src":"1638:2:12"}],"id":5740,"name":"FunctionCall","src":"1632:9:12"}],"id":5741,"name":"TupleExpression","src":"1628:14:12"}],"id":5742,"name":"Return","src":"1621:21:12"}],"id":5743,"name":"Block","src":"1290:359:12"}],"id":5744,"name":"FunctionDefinition","src":"1195:454:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5762,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5761,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5745,"name":"ElementaryTypeName","src":"1682:6:12"}],"id":5746,"name":"VariableDeclaration","src":"1682:18:12"}],"id":5747,"name":"ParameterList","src":"1681:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5761,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5748,"name":"ElementaryTypeName","src":"1722:4:12"}],"id":5749,"name":"VariableDeclaration","src":"1722:4:12"}],"id":5750,"name":"ParameterList","src":"1721:6:12"},{"children":[{"attributes":{"functionReturnParameters":5750},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5746,"type":"bytes4","value":"interfaceID"},"id":5751,"name":"Identifier","src":"1745:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5634,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":5752,"name":"Identifier","src":"1760:16:12"}],"id":5753,"name":"BinaryOperation","src":"1745:31:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10194,"type":"contract super ABIResolver","value":"super"},"id":5754,"name":"Identifier","src":"1780:5:12"}],"id":5755,"name":"MemberAccess","src":"1780:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5746,"type":"bytes4","value":"interfaceID"},"id":5756,"name":"Identifier","src":"1804:11:12"}],"id":5757,"name":"FunctionCall","src":"1780:36:12"}],"id":5758,"name":"BinaryOperation","src":"1745:71:12"}],"id":5759,"name":"Return","src":"1738:78:12"}],"id":5760,"name":"Block","src":"1728:95:12"}],"id":5761,"name":"FunctionDefinition","src":"1655:168:12"}],"id":5762,"name":"ContractDefinition","src":"56:1769:12"}],"id":5763,"name":"SourceUnit","src":"0:1826:12"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[5921]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5764,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5922,"symbolAliases":[null],"unitAlias":""},"id":5765,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5921,8799],"name":"AddrResolver","scope":5922},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":5766,"name":"UserDefinedTypeName","src":"81:12:13"}],"id":5767,"name":"InheritanceSpecifier","src":"81:12:13"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":5921,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5768,"name":"ElementaryTypeName","src":"100:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":5769,"name":"Literal","src":"144:10:13"}],"id":5770,"name":"VariableDeclaration","src":"100:54:13"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":5921,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5771,"name":"ElementaryTypeName","src":"160:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":5772,"name":"Literal","src":"207:10:13"}],"id":5773,"name":"VariableDeclaration","src":"160:57:13"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":5921,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5774,"name":"ElementaryTypeName","src":"223:4:13"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":5775,"name":"Literal","src":"261:2:13"}],"id":5776,"name":"VariableDeclaration","src":"223:40:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5777,"name":"ElementaryTypeName","src":"288:7:13"}],"id":5778,"name":"VariableDeclaration","src":"288:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":5782,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5779,"name":"ElementaryTypeName","src":"310:7:13"}],"id":5780,"name":"VariableDeclaration","src":"310:9:13"}],"id":5781,"name":"ParameterList","src":"287:33:13"}],"id":5782,"name":"EventDefinition","src":"270:51:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5790,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5783,"name":"ElementaryTypeName","src":"347:7:13"}],"id":5784,"name":"VariableDeclaration","src":"347:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":5790,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5785,"name":"ElementaryTypeName","src":"369:4:13"}],"id":5786,"name":"VariableDeclaration","src":"369:13:13"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":5790,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5787,"name":"ElementaryTypeName","src":"384:5:13"}],"id":5788,"name":"VariableDeclaration","src":"384:16:13"}],"id":5789,"name":"ParameterList","src":"346:55:13"}],"id":5790,"name":"EventDefinition","src":"326:76:13"},{"attributes":{"constant":false,"name":"_addresses","scope":5921,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5791,"name":"ElementaryTypeName","src":"416:7:13"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5792,"name":"ElementaryTypeName","src":"433:4:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5793,"name":"ElementaryTypeName","src":"439:5:13"}],"id":5794,"name":"Mapping","src":"425:20:13"}],"id":5795,"name":"Mapping","src":"408:38:13"}],"id":5796,"name":"VariableDeclaration","src":"408:49:13"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":5921,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5815,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5797,"name":"ElementaryTypeName","src":"698:7:13"}],"id":5798,"name":"VariableDeclaration","src":"698:12:13"},{"attributes":{"constant":false,"name":"a","scope":5815,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5799,"name":"ElementaryTypeName","src":"712:7:13"}],"id":5800,"name":"VariableDeclaration","src":"712:9:13"}],"id":5801,"name":"ParameterList","src":"697:25:13"},{"attributes":{"parameters":[null]},"children":[],"id":5805,"name":"ParameterList","src":"749:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":5802,"name":"Identifier","src":"732:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5798,"type":"bytes32","value":"node"},"id":5803,"name":"Identifier","src":"743:4:13"}],"id":5804,"name":"ModifierInvocation","src":"732:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5883,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":5806,"name":"Identifier","src":"759:15:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5798,"type":"bytes32","value":"node"},"id":5807,"name":"Identifier","src":"775:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5808,"name":"Identifier","src":"781:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8798,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":5809,"name":"Identifier","src":"796:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5800,"type":"address","value":"a"},"id":5810,"name":"Identifier","src":"811:1:13"}],"id":5811,"name":"FunctionCall","src":"796:17:13"}],"id":5812,"name":"FunctionCall","src":"759:55:13"}],"id":5813,"name":"ExpressionStatement","src":"759:55:13"}],"id":5814,"name":"Block","src":"749:72:13"}],"id":5815,"name":"FunctionDefinition","src":"681:140:13"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5921,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5844,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5816,"name":"ElementaryTypeName","src":"994:7:13"}],"id":5817,"name":"VariableDeclaration","src":"994:12:13"}],"id":5818,"name":"ParameterList","src":"993:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5844,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5819,"name":"ElementaryTypeName","src":"1029:15:13"}],"id":5820,"name":"VariableDeclaration","src":"1029:15:13"}],"id":5821,"name":"ParameterList","src":"1028:17:13"},{"children":[{"attributes":{"assignments":[5823]},"children":[{"attributes":{"constant":false,"name":"a","scope":5843,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5822,"name":"ElementaryTypeName","src":"1056:5:13"}],"id":5823,"name":"VariableDeclaration","src":"1056:14:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[5844,5899],"referencedDeclaration":5899,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":5824,"name":"Identifier","src":"1073:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5817,"type":"bytes32","value":"node"},"id":5825,"name":"Identifier","src":"1078:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5826,"name":"Identifier","src":"1084:13:13"}],"id":5827,"name":"FunctionCall","src":"1073:25:13"}],"id":5828,"name":"VariableDeclarationStatement","src":"1056:42:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5823,"type":"bytes memory","value":"a"},"id":5829,"name":"Identifier","src":"1111:1:13"}],"id":5830,"name":"MemberAccess","src":"1111:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5831,"name":"Literal","src":"1123:1:13"}],"id":5832,"name":"BinaryOperation","src":"1111:13:13"},{"children":[{"attributes":{"functionReturnParameters":5821},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5833,"name":"ElementaryTypeNameExpression","src":"1147:7:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5834,"name":"Literal","src":"1155:1:13"}],"id":5835,"name":"FunctionCall","src":"1147:10:13"}],"id":5836,"name":"Return","src":"1140:17:13"}],"id":5837,"name":"Block","src":"1126:42:13"}],"id":5838,"name":"IfStatement","src":"1108:60:13"},{"attributes":{"functionReturnParameters":5821},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8782,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5839,"name":"Identifier","src":"1184:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5823,"type":"bytes memory","value":"a"},"id":5840,"name":"Identifier","src":"1199:1:13"}],"id":5841,"name":"FunctionCall","src":"1184:17:13"}],"id":5842,"name":"Return","src":"1177:24:13"}],"id":5843,"name":"Block","src":"1046:162:13"}],"id":5844,"name":"FunctionDefinition","src":"980:228:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":5921,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5845,"name":"ElementaryTypeName","src":"1239:7:13"}],"id":5846,"name":"VariableDeclaration","src":"1239:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5883,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5847,"name":"ElementaryTypeName","src":"1253:4:13"}],"id":5848,"name":"VariableDeclaration","src":"1253:13:13"},{"attributes":{"constant":false,"name":"a","scope":5883,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5849,"name":"ElementaryTypeName","src":"1268:5:13"}],"id":5850,"name":"VariableDeclaration","src":"1268:14:13"}],"id":5851,"name":"ParameterList","src":"1238:45:13"},{"attributes":{"parameters":[null]},"children":[],"id":5855,"name":"ParameterList","src":"1308:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":5852,"name":"Identifier","src":"1291:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"bytes32","value":"node"},"id":5853,"name":"Identifier","src":"1302:4:13"}],"id":5854,"name":"ModifierInvocation","src":"1291:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5790,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":5856,"name":"Identifier","src":"1323:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"bytes32","value":"node"},"id":5857,"name":"Identifier","src":"1338:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"coinType"},"id":5858,"name":"Identifier","src":"1344:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5850,"type":"bytes memory","value":"a"},"id":5859,"name":"Identifier","src":"1354:1:13"}],"id":5860,"name":"FunctionCall","src":"1323:33:13"}],"id":5861,"name":"EmitStatement","src":"1318:38:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"coinType"},"id":5862,"name":"Identifier","src":"1369:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5863,"name":"Identifier","src":"1381:13:13"}],"id":5864,"name":"BinaryOperation","src":"1369:25:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5782,"type":"function (bytes32,address)","value":"AddrChanged"},"id":5865,"name":"Identifier","src":"1415:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"bytes32","value":"node"},"id":5866,"name":"Identifier","src":"1427:4:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8782,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5867,"name":"Identifier","src":"1433:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5850,"type":"bytes memory","value":"a"},"id":5868,"name":"Identifier","src":"1448:1:13"}],"id":5869,"name":"FunctionCall","src":"1433:17:13"}],"id":5870,"name":"FunctionCall","src":"1415:36:13"}],"id":5871,"name":"EmitStatement","src":"1410:41:13"}],"id":5872,"name":"Block","src":"1396:66:13"}],"id":5873,"name":"IfStatement","src":"1366:96:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5796,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5874,"name":"Identifier","src":"1471:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"bytes32","value":"node"},"id":5875,"name":"Identifier","src":"1482:4:13"}],"id":5877,"name":"IndexAccess","src":"1471:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"coinType"},"id":5876,"name":"Identifier","src":"1488:8:13"}],"id":5878,"name":"IndexAccess","src":"1471:26:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5850,"type":"bytes memory","value":"a"},"id":5879,"name":"Identifier","src":"1500:1:13"}],"id":5880,"name":"Assignment","src":"1471:30:13"}],"id":5881,"name":"ExpressionStatement","src":"1471:30:13"}],"id":5882,"name":"Block","src":"1308:200:13"}],"id":5883,"name":"FunctionDefinition","src":"1214:294:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5921,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5899,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5884,"name":"ElementaryTypeName","src":"1528:7:13"}],"id":5885,"name":"VariableDeclaration","src":"1528:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5886,"name":"ElementaryTypeName","src":"1542:4:13"}],"id":5887,"name":"VariableDeclaration","src":"1542:13:13"}],"id":5888,"name":"ParameterList","src":"1527:29:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5899,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5889,"name":"ElementaryTypeName","src":"1577:5:13"}],"id":5890,"name":"VariableDeclaration","src":"1577:12:13"}],"id":5891,"name":"ParameterList","src":"1576:14:13"},{"children":[{"attributes":{"functionReturnParameters":5891},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5796,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5892,"name":"Identifier","src":"1608:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5885,"type":"bytes32","value":"node"},"id":5893,"name":"Identifier","src":"1619:4:13"}],"id":5894,"name":"IndexAccess","src":"1608:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5887,"type":"uint256","value":"coinType"},"id":5895,"name":"Identifier","src":"1625:8:13"}],"id":5896,"name":"IndexAccess","src":"1608:26:13"}],"id":5897,"name":"Return","src":"1601:33:13"}],"id":5898,"name":"Block","src":"1591:50:13"}],"id":5899,"name":"FunctionDefinition","src":"1514:127:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5921,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5920,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5900,"name":"ElementaryTypeName","src":"1674:6:13"}],"id":5901,"name":"VariableDeclaration","src":"1674:18:13"}],"id":5902,"name":"ParameterList","src":"1673:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5920,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5903,"name":"ElementaryTypeName","src":"1714:4:13"}],"id":5904,"name":"VariableDeclaration","src":"1714:4:13"}],"id":5905,"name":"ParameterList","src":"1713:6:13"},{"children":[{"attributes":{"functionReturnParameters":5905},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5901,"type":"bytes4","value":"interfaceID"},"id":5906,"name":"Identifier","src":"1737:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5770,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":5907,"name":"Identifier","src":"1752:17:13"}],"id":5908,"name":"BinaryOperation","src":"1737:32:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5901,"type":"bytes4","value":"interfaceID"},"id":5909,"name":"Identifier","src":"1773:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5773,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":5910,"name":"Identifier","src":"1788:20:13"}],"id":5911,"name":"BinaryOperation","src":"1773:35:13"}],"id":5912,"name":"BinaryOperation","src":"1737:71:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10196,"type":"contract super AddrResolver","value":"super"},"id":5913,"name":"Identifier","src":"1812:5:13"}],"id":5914,"name":"MemberAccess","src":"1812:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5901,"type":"bytes4","value":"interfaceID"},"id":5915,"name":"Identifier","src":"1836:11:13"}],"id":5916,"name":"FunctionCall","src":"1812:36:13"}],"id":5917,"name":"BinaryOperation","src":"1737:111:13"}],"id":5918,"name":"Return","src":"1730:118:13"}],"id":5919,"name":"Block","src":"1720:135:13"}],"id":5920,"name":"FunctionDefinition","src":"1647:208:13"}],"id":5921,"name":"ContractDefinition","src":"56:1801:13"}],"id":5922,"name":"SourceUnit","src":"0:1857:13"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[5991]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5923,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5992,"symbolAliases":[null],"unitAlias":""},"id":5924,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5991,8799],"name":"ContentHashResolver","scope":5992},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":5925,"name":"UserDefinedTypeName","src":"88:12:14"}],"id":5926,"name":"InheritanceSpecifier","src":"88:12:14"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":5991,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5927,"name":"ElementaryTypeName","src":"107:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":5928,"name":"Literal","src":"159:10:14"}],"id":5929,"name":"VariableDeclaration","src":"107:62:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5935,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5930,"name":"ElementaryTypeName","src":"201:7:14"}],"id":5931,"name":"VariableDeclaration","src":"201:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":5935,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5932,"name":"ElementaryTypeName","src":"223:5:14"}],"id":5933,"name":"VariableDeclaration","src":"223:10:14"}],"id":5934,"name":"ParameterList","src":"200:34:14"}],"id":5935,"name":"EventDefinition","src":"176:59:14"},{"attributes":{"constant":false,"name":"hashes","scope":5991,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5936,"name":"ElementaryTypeName","src":"249:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":5937,"name":"ElementaryTypeName","src":"258:5:14"}],"id":5938,"name":"Mapping","src":"241:23:14"}],"id":5939,"name":"VariableDeclaration","src":"241:30:14"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":5991,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5961,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5940,"name":"ElementaryTypeName","src":"529:7:14"}],"id":5941,"name":"VariableDeclaration","src":"529:12:14"},{"attributes":{"constant":false,"name":"hash","scope":5961,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5942,"name":"ElementaryTypeName","src":"543:5:14"}],"id":5943,"name":"VariableDeclaration","src":"543:19:14"}],"id":5944,"name":"ParameterList","src":"528:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":5948,"name":"ParameterList","src":"590:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":5945,"name":"Identifier","src":"573:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5941,"type":"bytes32","value":"node"},"id":5946,"name":"Identifier","src":"584:4:14"}],"id":5947,"name":"ModifierInvocation","src":"573:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5939,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5949,"name":"Identifier","src":"600:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5941,"type":"bytes32","value":"node"},"id":5950,"name":"Identifier","src":"607:4:14"}],"id":5951,"name":"IndexAccess","src":"600:12:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5943,"type":"bytes calldata","value":"hash"},"id":5952,"name":"Identifier","src":"615:4:14"}],"id":5953,"name":"Assignment","src":"600:19:14"}],"id":5954,"name":"ExpressionStatement","src":"600:19:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5935,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":5955,"name":"Identifier","src":"634:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5941,"type":"bytes32","value":"node"},"id":5956,"name":"Identifier","src":"653:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5943,"type":"bytes calldata","value":"hash"},"id":5957,"name":"Identifier","src":"659:4:14"}],"id":5958,"name":"FunctionCall","src":"634:30:14"}],"id":5959,"name":"EmitStatement","src":"629:35:14"}],"id":5960,"name":"Block","src":"590:81:14"}],"id":5961,"name":"FunctionDefinition","src":"505:166:14"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":5991,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5973,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5962,"name":"ElementaryTypeName","src":"859:7:14"}],"id":5963,"name":"VariableDeclaration","src":"859:12:14"}],"id":5964,"name":"ParameterList","src":"858:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5973,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5965,"name":"ElementaryTypeName","src":"896:5:14"}],"id":5966,"name":"VariableDeclaration","src":"896:12:14"}],"id":5967,"name":"ParameterList","src":"895:14:14"},{"children":[{"attributes":{"functionReturnParameters":5967},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5939,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5968,"name":"Identifier","src":"927:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5963,"type":"bytes32","value":"node"},"id":5969,"name":"Identifier","src":"934:4:14"}],"id":5970,"name":"IndexAccess","src":"927:12:14"}],"id":5971,"name":"Return","src":"920:19:14"}],"id":5972,"name":"Block","src":"910:36:14"}],"id":5973,"name":"FunctionDefinition","src":"838:108:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5991,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5990,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5974,"name":"ElementaryTypeName","src":"979:6:14"}],"id":5975,"name":"VariableDeclaration","src":"979:18:14"}],"id":5976,"name":"ParameterList","src":"978:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5990,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5977,"name":"ElementaryTypeName","src":"1019:4:14"}],"id":5978,"name":"VariableDeclaration","src":"1019:4:14"}],"id":5979,"name":"ParameterList","src":"1018:6:14"},{"children":[{"attributes":{"functionReturnParameters":5979},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5975,"type":"bytes4","value":"interfaceID"},"id":5980,"name":"Identifier","src":"1042:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5929,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":5981,"name":"Identifier","src":"1057:25:14"}],"id":5982,"name":"BinaryOperation","src":"1042:40:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10198,"type":"contract super ContentHashResolver","value":"super"},"id":5983,"name":"Identifier","src":"1086:5:14"}],"id":5984,"name":"MemberAccess","src":"1086:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5975,"type":"bytes4","value":"interfaceID"},"id":5985,"name":"Identifier","src":"1110:11:14"}],"id":5986,"name":"FunctionCall","src":"1086:36:14"}],"id":5987,"name":"BinaryOperation","src":"1042:80:14"}],"id":5988,"name":"Return","src":"1035:87:14"}],"id":5989,"name":"Block","src":"1025:104:14"}],"id":5990,"name":"FunctionDefinition","src":"952:177:14"}],"id":5991,"name":"ContractDefinition","src":"56:1075:14"}],"id":5992,"name":"SourceUnit","src":"0:1132:14"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[6482]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5993,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6483,"symbolAliases":[null],"unitAlias":""},"id":5994,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":9418,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":6483,"symbolAliases":[null],"unitAlias":""},"id":5995,"name":"ImportDirective","src":"55:24:15"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6482,8799],"name":"DNSResolver","scope":6483},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":5996,"name":"UserDefinedTypeName","src":"105:12:15"}],"id":5997,"name":"InheritanceSpecifier","src":"105:12:15"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":9417,"type":"library RRUtils"},"id":5998,"name":"UserDefinedTypeName","src":"130:7:15"}],"id":5999,"name":"UsingForDirective","src":"124:20:15"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10138,"type":"library ENSBytesUtils"},"id":6000,"name":"UserDefinedTypeName","src":"155:13:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6001,"name":"ElementaryTypeName","src":"173:5:15"}],"id":6002,"name":"UsingForDirective","src":"149:30:15"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":6482,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6003,"name":"ElementaryTypeName","src":"185:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":6004,"name":"Literal","src":"235:10:15"}],"id":6005,"name":"VariableDeclaration","src":"185:60:15"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":6482,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6006,"name":"ElementaryTypeName","src":"251:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":6007,"name":"Literal","src":"299:10:15"}],"id":6008,"name":"VariableDeclaration","src":"251:58:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6018,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6009,"name":"ElementaryTypeName","src":"430:7:15"}],"id":6010,"name":"VariableDeclaration","src":"430:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6018,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6011,"name":"ElementaryTypeName","src":"452:5:15"}],"id":6012,"name":"VariableDeclaration","src":"452:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":6018,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6013,"name":"ElementaryTypeName","src":"464:6:15"}],"id":6014,"name":"VariableDeclaration","src":"464:15:15"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":6018,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6015,"name":"ElementaryTypeName","src":"481:5:15"}],"id":6016,"name":"VariableDeclaration","src":"481:12:15"}],"id":6017,"name":"ParameterList","src":"429:65:15"}],"id":6018,"name":"EventDefinition","src":"407:88:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6026,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6019,"name":"ElementaryTypeName","src":"614:7:15"}],"id":6020,"name":"VariableDeclaration","src":"614:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6026,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6021,"name":"ElementaryTypeName","src":"636:5:15"}],"id":6022,"name":"VariableDeclaration","src":"636:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":6026,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6023,"name":"ElementaryTypeName","src":"648:6:15"}],"id":6024,"name":"VariableDeclaration","src":"648:15:15"}],"id":6025,"name":"ParameterList","src":"613:51:15"}],"id":6026,"name":"EventDefinition","src":"591:74:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6030,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6027,"name":"ElementaryTypeName","src":"777:7:15"}],"id":6028,"name":"VariableDeclaration","src":"777:20:15"}],"id":6029,"name":"ParameterList","src":"776:22:15"}],"id":6030,"name":"EventDefinition","src":"756:43:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6038,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6031,"name":"ElementaryTypeName","src":"913:7:15"}],"id":6032,"name":"VariableDeclaration","src":"913:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":6038,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6033,"name":"ElementaryTypeName","src":"935:5:15"}],"id":6034,"name":"VariableDeclaration","src":"935:18:15"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":6038,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6035,"name":"ElementaryTypeName","src":"955:5:15"}],"id":6036,"name":"VariableDeclaration","src":"955:14:15"}],"id":6037,"name":"ParameterList","src":"912:58:15"}],"id":6038,"name":"EventDefinition","src":"888:83:15"},{"attributes":{"constant":false,"name":"zonehashes","scope":6482,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6039,"name":"ElementaryTypeName","src":"1181:7:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6040,"name":"ElementaryTypeName","src":"1190:5:15"}],"id":6041,"name":"Mapping","src":"1173:23:15"}],"id":6042,"name":"VariableDeclaration","src":"1173:42:15"},{"attributes":{"constant":false,"name":"versions","scope":6482,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6043,"name":"ElementaryTypeName","src":"1433:7:15"},{"attributes":{"name":"uint256","type":"uint256"},"id":6044,"name":"ElementaryTypeName","src":"1442:7:15"}],"id":6045,"name":"Mapping","src":"1425:25:15"}],"id":6046,"name":"VariableDeclaration","src":"1425:42:15"},{"attributes":{"constant":false,"name":"records","scope":6482,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6047,"name":"ElementaryTypeName","src":"1589:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6048,"name":"ElementaryTypeName","src":"1606:7:15"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6049,"name":"ElementaryTypeName","src":"1623:7:15"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6050,"name":"ElementaryTypeName","src":"1640:6:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6051,"name":"ElementaryTypeName","src":"1648:5:15"}],"id":6052,"name":"Mapping","src":"1632:22:15"}],"id":6053,"name":"Mapping","src":"1615:40:15"}],"id":6054,"name":"Mapping","src":"1598:58:15"}],"id":6055,"name":"Mapping","src":"1581:76:15"}],"id":6056,"name":"VariableDeclaration","src":"1581:92:15"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":6482,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6057,"name":"ElementaryTypeName","src":"1853:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6058,"name":"ElementaryTypeName","src":"1870:7:15"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6059,"name":"ElementaryTypeName","src":"1887:7:15"},{"attributes":{"name":"uint16","type":"uint16"},"id":6060,"name":"ElementaryTypeName","src":"1896:6:15"}],"id":6061,"name":"Mapping","src":"1879:24:15"}],"id":6062,"name":"Mapping","src":"1862:42:15"}],"id":6063,"name":"Mapping","src":"1845:60:15"}],"id":6064,"name":"VariableDeclaration","src":"1845:85:15"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":6482,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6229,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6065,"name":"ElementaryTypeName","src":"2877:7:15"}],"id":6066,"name":"VariableDeclaration","src":"2877:12:15"},{"attributes":{"constant":false,"name":"data","scope":6229,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6067,"name":"ElementaryTypeName","src":"2891:5:15"}],"id":6068,"name":"VariableDeclaration","src":"2891:19:15"}],"id":6069,"name":"ParameterList","src":"2876:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6073,"name":"ParameterList","src":"2938:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6070,"name":"Identifier","src":"2921:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"bytes32","value":"node"},"id":6071,"name":"Identifier","src":"2932:4:15"}],"id":6072,"name":"ModifierInvocation","src":"2921:16:15"},{"children":[{"attributes":{"assignments":[6075]},"children":[{"attributes":{"constant":false,"name":"resource","scope":6228,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6074,"name":"ElementaryTypeName","src":"2948:6:15"}],"id":6075,"name":"VariableDeclaration","src":"2948:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6076,"name":"Literal","src":"2966:1:15"}],"id":6077,"name":"VariableDeclarationStatement","src":"2948:19:15"},{"attributes":{"assignments":[6079]},"children":[{"attributes":{"constant":false,"name":"offset","scope":6228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6078,"name":"ElementaryTypeName","src":"2977:7:15"}],"id":6079,"name":"VariableDeclaration","src":"2977:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6080,"name":"Literal","src":"2994:1:15"}],"id":6081,"name":"VariableDeclarationStatement","src":"2977:18:15"},{"attributes":{"assignments":[6083],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":6228,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6082,"name":"ElementaryTypeName","src":"3005:5:15"}],"id":6083,"name":"VariableDeclaration","src":"3005:17:15"}],"id":6084,"name":"VariableDeclarationStatement","src":"3005:17:15"},{"attributes":{"assignments":[6086],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":6228,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6085,"name":"ElementaryTypeName","src":"3032:5:15"}],"id":6086,"name":"VariableDeclaration","src":"3032:18:15"}],"id":6087,"name":"VariableDeclarationStatement","src":"3032:18:15"},{"attributes":{"assignments":[6089],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6228,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6088,"name":"ElementaryTypeName","src":"3060:7:15"}],"id":6089,"name":"VariableDeclaration","src":"3060:16:15"}],"id":6090,"name":"VariableDeclarationStatement","src":"3060:16:15"},{"children":[{"attributes":{"assignments":[6094]},"children":[{"attributes":{"constant":false,"name":"iter","scope":6205,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":6093,"name":"UserDefinedTypeName","src":"3152:18:15"}],"id":6094,"name":"VariableDeclaration","src":"3152:30:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":8964,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"bytes calldata","value":"data"},"id":6095,"name":"Identifier","src":"3185:4:15"}],"id":6096,"name":"MemberAccess","src":"3185:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6097,"name":"Literal","src":"3201:1:15"}],"id":6098,"name":"FunctionCall","src":"3185:18:15"}],"id":6099,"name":"VariableDeclarationStatement","src":"3152:51:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":8979,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6100,"name":"Identifier","src":"3206:4:15"}],"id":6101,"name":"MemberAccess","src":"3206:9:15"}],"id":6102,"name":"FunctionCall","src":"3206:11:15"}],"id":6103,"name":"UnaryOperation","src":"3205:12:15"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":9081,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6104,"name":"Identifier","src":"3219:4:15"}],"id":6105,"name":"MemberAccess","src":"3219:9:15"}],"id":6106,"name":"FunctionCall","src":"3219:11:15"}],"id":6107,"name":"ExpressionStatement","src":"3219:11:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6108,"name":"Identifier","src":"3250:8:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6109,"name":"Literal","src":"3262:1:15"}],"id":6110,"name":"BinaryOperation","src":"3250:13:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6111,"name":"Identifier","src":"3283:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8929,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6112,"name":"Identifier","src":"3294:4:15"}],"id":6113,"name":"MemberAccess","src":"3294:12:15"}],"id":6114,"name":"Assignment","src":"3283:23:15"}],"id":6115,"name":"ExpressionStatement","src":"3283:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6116,"name":"Identifier","src":"3324:4:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9102,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6117,"name":"Identifier","src":"3331:4:15"}],"id":6118,"name":"MemberAccess","src":"3331:9:15"}],"id":6119,"name":"FunctionCall","src":"3331:11:15"}],"id":6120,"name":"Assignment","src":"3324:18:15"}],"id":6121,"name":"ExpressionStatement","src":"3324:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6089,"type":"bytes32","value":"nameHash"},"id":6122,"name":"Identifier","src":"3360:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6123,"name":"Identifier","src":"3371:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":6124,"name":"Identifier","src":"3381:3:15"}],"id":6125,"name":"MemberAccess","src":"3381:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6126,"name":"Identifier","src":"3398:4:15"}],"id":6127,"name":"FunctionCall","src":"3381:22:15"}],"id":6128,"name":"FunctionCall","src":"3371:33:15"}],"id":6129,"name":"Assignment","src":"3360:44:15"}],"id":6130,"name":"ExpressionStatement","src":"3360:44:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6086,"type":"bytes memory","value":"value"},"id":6131,"name":"Identifier","src":"3422:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6132,"name":"ElementaryTypeNameExpression","src":"3430:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9122,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6133,"name":"Identifier","src":"3436:4:15"}],"id":6134,"name":"MemberAccess","src":"3436:10:15"}],"id":6135,"name":"FunctionCall","src":"3436:12:15"}],"id":6136,"name":"FunctionCall","src":"3430:19:15"}],"id":6137,"name":"Assignment","src":"3422:27:15"}],"id":6138,"name":"ExpressionStatement","src":"3422:27:15"}],"id":6139,"name":"Block","src":"3265:199:15"},{"children":[{"attributes":{"assignments":[6141]},"children":[{"attributes":{"constant":false,"name":"newName","scope":6202,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6140,"name":"ElementaryTypeName","src":"3488:5:15"}],"id":6141,"name":"VariableDeclaration","src":"3488:20:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9102,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6142,"name":"Identifier","src":"3511:4:15"}],"id":6143,"name":"MemberAccess","src":"3511:9:15"}],"id":6144,"name":"FunctionCall","src":"3511:11:15"}],"id":6145,"name":"VariableDeclarationStatement","src":"3488:34:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6146,"name":"Identifier","src":"3544:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8929,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6147,"name":"Identifier","src":"3556:4:15"}],"id":6148,"name":"MemberAccess","src":"3556:12:15"}],"id":6149,"name":"BinaryOperation","src":"3544:24:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9708,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6150,"name":"Identifier","src":"3573:4:15"}],"id":6151,"name":"MemberAccess","src":"3573:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6141,"type":"bytes memory","value":"newName"},"id":6152,"name":"Identifier","src":"3585:7:15"}],"id":6153,"name":"FunctionCall","src":"3573:20:15"}],"id":6154,"name":"UnaryOperation","src":"3572:21:15"}],"id":6155,"name":"BinaryOperation","src":"3544:49:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6481,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6156,"name":"Identifier","src":"3617:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"bytes32","value":"node"},"id":6157,"name":"Identifier","src":"3629:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6158,"name":"Identifier","src":"3635:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6159,"name":"Identifier","src":"3641:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"bytes calldata","value":"data"},"id":6160,"name":"Identifier","src":"3651:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6161,"name":"Identifier","src":"3657:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6162,"name":"Identifier","src":"3665:4:15"}],"id":6163,"name":"MemberAccess","src":"3665:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6164,"name":"Identifier","src":"3679:6:15"}],"id":6165,"name":"BinaryOperation","src":"3665:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6086,"type":"bytes memory","value":"value"},"id":6166,"name":"Identifier","src":"3687:5:15"}],"id":6167,"name":"MemberAccess","src":"3687:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6168,"name":"Literal","src":"3703:1:15"}],"id":6169,"name":"BinaryOperation","src":"3687:17:15"}],"id":6170,"name":"FunctionCall","src":"3617:88:15"}],"id":6171,"name":"ExpressionStatement","src":"3617:88:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6172,"name":"Identifier","src":"3727:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8929,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6173,"name":"Identifier","src":"3738:4:15"}],"id":6174,"name":"MemberAccess","src":"3738:12:15"}],"id":6175,"name":"Assignment","src":"3727:23:15"}],"id":6176,"name":"ExpressionStatement","src":"3727:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6177,"name":"Identifier","src":"3772:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6178,"name":"Identifier","src":"3781:4:15"}],"id":6179,"name":"MemberAccess","src":"3781:11:15"}],"id":6180,"name":"Assignment","src":"3772:20:15"}],"id":6181,"name":"ExpressionStatement","src":"3772:20:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6182,"name":"Identifier","src":"3814:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6141,"type":"bytes memory","value":"newName"},"id":6183,"name":"Identifier","src":"3821:7:15"}],"id":6184,"name":"Assignment","src":"3814:14:15"}],"id":6185,"name":"ExpressionStatement","src":"3814:14:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6089,"type":"bytes32","value":"nameHash"},"id":6186,"name":"Identifier","src":"3850:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6187,"name":"Identifier","src":"3861:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6188,"name":"Identifier","src":"3871:4:15"}],"id":6189,"name":"FunctionCall","src":"3861:15:15"}],"id":6190,"name":"Assignment","src":"3850:26:15"}],"id":6191,"name":"ExpressionStatement","src":"3850:26:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6086,"type":"bytes memory","value":"value"},"id":6192,"name":"Identifier","src":"3898:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6193,"name":"ElementaryTypeNameExpression","src":"3906:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9122,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6194,"name":"Identifier","src":"3912:4:15"}],"id":6195,"name":"MemberAccess","src":"3912:10:15"}],"id":6196,"name":"FunctionCall","src":"3912:12:15"}],"id":6197,"name":"FunctionCall","src":"3906:19:15"}],"id":6198,"name":"Assignment","src":"3898:27:15"}],"id":6199,"name":"ExpressionStatement","src":"3898:27:15"}],"id":6200,"name":"Block","src":"3595:349:15"}],"id":6201,"name":"IfStatement","src":"3540:404:15"}],"id":6202,"name":"Block","src":"3470:488:15"}],"id":6203,"name":"IfStatement","src":"3246:712:15"}],"id":6204,"name":"Block","src":"3232:736:15"}],"id":6205,"name":"ForStatement","src":"3147:821:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6206,"name":"Identifier","src":"3981:4:15"}],"id":6207,"name":"MemberAccess","src":"3981:11:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6208,"name":"Literal","src":"3995:1:15"}],"id":6209,"name":"BinaryOperation","src":"3981:15:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6481,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6210,"name":"Identifier","src":"4012:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"bytes32","value":"node"},"id":6211,"name":"Identifier","src":"4024:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6212,"name":"Identifier","src":"4030:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6213,"name":"Identifier","src":"4036:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"bytes calldata","value":"data"},"id":6214,"name":"Identifier","src":"4046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6215,"name":"Identifier","src":"4052:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"bytes calldata","value":"data"},"id":6216,"name":"Identifier","src":"4060:4:15"}],"id":6217,"name":"MemberAccess","src":"4060:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6218,"name":"Identifier","src":"4074:6:15"}],"id":6219,"name":"BinaryOperation","src":"4060:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6086,"type":"bytes memory","value":"value"},"id":6220,"name":"Identifier","src":"4082:5:15"}],"id":6221,"name":"MemberAccess","src":"4082:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6222,"name":"Literal","src":"4098:1:15"}],"id":6223,"name":"BinaryOperation","src":"4082:17:15"}],"id":6224,"name":"FunctionCall","src":"4012:88:15"}],"id":6225,"name":"ExpressionStatement","src":"4012:88:15"}],"id":6226,"name":"Block","src":"3998:113:15"}],"id":6227,"name":"IfStatement","src":"3977:134:15"}],"id":6228,"name":"Block","src":"2938:1179:15"}],"id":6229,"name":"FunctionDefinition","src":"2854:1263:15"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":6482,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6253,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6230,"name":"ElementaryTypeName","src":"4538:7:15"}],"id":6231,"name":"VariableDeclaration","src":"4538:12:15"},{"attributes":{"constant":false,"name":"name","scope":6253,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6232,"name":"ElementaryTypeName","src":"4552:7:15"}],"id":6233,"name":"VariableDeclaration","src":"4552:12:15"},{"attributes":{"constant":false,"name":"resource","scope":6253,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6234,"name":"ElementaryTypeName","src":"4566:6:15"}],"id":6235,"name":"VariableDeclaration","src":"4566:15:15"}],"id":6236,"name":"ParameterList","src":"4537:45:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6253,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6237,"name":"ElementaryTypeName","src":"4604:5:15"}],"id":6238,"name":"VariableDeclaration","src":"4604:12:15"}],"id":6239,"name":"ParameterList","src":"4603:14:15"},{"children":[{"attributes":{"functionReturnParameters":6239},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6240,"name":"Identifier","src":"4635:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6231,"type":"bytes32","value":"node"},"id":6241,"name":"Identifier","src":"4643:4:15"}],"id":6242,"name":"IndexAccess","src":"4635:13:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6046,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6243,"name":"Identifier","src":"4649:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6231,"type":"bytes32","value":"node"},"id":6244,"name":"Identifier","src":"4658:4:15"}],"id":6245,"name":"IndexAccess","src":"4649:14:15"}],"id":6246,"name":"IndexAccess","src":"4635:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6233,"type":"bytes32","value":"name"},"id":6247,"name":"Identifier","src":"4665:4:15"}],"id":6248,"name":"IndexAccess","src":"4635:35:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint16","value":"resource"},"id":6249,"name":"Identifier","src":"4671:8:15"}],"id":6250,"name":"IndexAccess","src":"4635:45:15"}],"id":6251,"name":"Return","src":"4628:52:15"}],"id":6252,"name":"Block","src":"4618:69:15"}],"id":6253,"name":"FunctionDefinition","src":"4519:168:15"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":6482,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6276,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6254,"name":"ElementaryTypeName","src":"4924:7:15"}],"id":6255,"name":"VariableDeclaration","src":"4924:12:15"},{"attributes":{"constant":false,"name":"name","scope":6276,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6256,"name":"ElementaryTypeName","src":"4938:7:15"}],"id":6257,"name":"VariableDeclaration","src":"4938:12:15"}],"id":6258,"name":"ParameterList","src":"4923:28:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6276,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6259,"name":"ElementaryTypeName","src":"4973:4:15"}],"id":6260,"name":"VariableDeclaration","src":"4973:4:15"}],"id":6261,"name":"ParameterList","src":"4972:6:15"},{"children":[{"attributes":{"functionReturnParameters":6261},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6064,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6262,"name":"Identifier","src":"4997:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6255,"type":"bytes32","value":"node"},"id":6263,"name":"Identifier","src":"5014:4:15"}],"id":6264,"name":"IndexAccess","src":"4997:22:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6046,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6265,"name":"Identifier","src":"5020:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6255,"type":"bytes32","value":"node"},"id":6266,"name":"Identifier","src":"5029:4:15"}],"id":6267,"name":"IndexAccess","src":"5020:14:15"}],"id":6268,"name":"IndexAccess","src":"4997:38:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6257,"type":"bytes32","value":"name"},"id":6269,"name":"Identifier","src":"5036:4:15"}],"id":6270,"name":"IndexAccess","src":"4997:44:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6271,"name":"Literal","src":"5045:1:15"}],"id":6272,"name":"BinaryOperation","src":"4997:49:15"}],"id":6273,"name":"TupleExpression","src":"4996:51:15"}],"id":6274,"name":"Return","src":"4989:58:15"}],"id":6275,"name":"Block","src":"4979:75:15"}],"id":6276,"name":"FunctionDefinition","src":"4901:153:15"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":6482,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6294,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6277,"name":"ElementaryTypeName","src":"5215:7:15"}],"id":6278,"name":"VariableDeclaration","src":"5215:12:15"}],"id":6279,"name":"ParameterList","src":"5214:14:15"},{"attributes":{"parameters":[null]},"children":[],"id":6283,"name":"ParameterList","src":"5253:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6280,"name":"Identifier","src":"5236:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6278,"type":"bytes32","value":"node"},"id":6281,"name":"Identifier","src":"5247:4:15"}],"id":6282,"name":"ModifierInvocation","src":"5236:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6046,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6284,"name":"Identifier","src":"5263:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6278,"type":"bytes32","value":"node"},"id":6285,"name":"Identifier","src":"5272:4:15"}],"id":6286,"name":"IndexAccess","src":"5263:14:15"}],"id":6287,"name":"UnaryOperation","src":"5263:16:15"}],"id":6288,"name":"ExpressionStatement","src":"5263:16:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":6289,"name":"Identifier","src":"5294:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6278,"type":"bytes32","value":"node"},"id":6290,"name":"Identifier","src":"5309:4:15"}],"id":6291,"name":"FunctionCall","src":"5294:20:15"}],"id":6292,"name":"EmitStatement","src":"5289:25:15"}],"id":6293,"name":"Block","src":"5253:68:15"}],"id":6294,"name":"FunctionDefinition","src":"5193:128:15"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":6482,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6323,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6295,"name":"ElementaryTypeName","src":"5562:7:15"}],"id":6296,"name":"VariableDeclaration","src":"5562:12:15"},{"attributes":{"constant":false,"name":"hash","scope":6323,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6297,"name":"ElementaryTypeName","src":"5576:5:15"}],"id":6298,"name":"VariableDeclaration","src":"5576:19:15"}],"id":6299,"name":"ParameterList","src":"5561:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6303,"name":"ParameterList","src":"5623:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6300,"name":"Identifier","src":"5606:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"bytes32","value":"node"},"id":6301,"name":"Identifier","src":"5617:4:15"}],"id":6302,"name":"ModifierInvocation","src":"5606:16:15"},{"children":[{"attributes":{"assignments":[6305]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":6322,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6304,"name":"ElementaryTypeName","src":"5633:5:15"}],"id":6305,"name":"VariableDeclaration","src":"5633:20:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6306,"name":"Identifier","src":"5656:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"bytes32","value":"node"},"id":6307,"name":"Identifier","src":"5667:4:15"}],"id":6308,"name":"IndexAccess","src":"5656:16:15"}],"id":6309,"name":"VariableDeclarationStatement","src":"5633:39:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6310,"name":"Identifier","src":"5682:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"bytes32","value":"node"},"id":6311,"name":"Identifier","src":"5693:4:15"}],"id":6312,"name":"IndexAccess","src":"5682:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6298,"type":"bytes calldata","value":"hash"},"id":6313,"name":"Identifier","src":"5701:4:15"}],"id":6314,"name":"Assignment","src":"5682:23:15"}],"id":6315,"name":"ExpressionStatement","src":"5682:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6038,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":6316,"name":"Identifier","src":"5720:18:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"bytes32","value":"node"},"id":6317,"name":"Identifier","src":"5739:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6305,"type":"bytes memory","value":"oldhash"},"id":6318,"name":"Identifier","src":"5745:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6298,"type":"bytes calldata","value":"hash"},"id":6319,"name":"Identifier","src":"5754:4:15"}],"id":6320,"name":"FunctionCall","src":"5720:39:15"}],"id":6321,"name":"EmitStatement","src":"5715:44:15"}],"id":6322,"name":"Block","src":"5623:143:15"}],"id":6323,"name":"FunctionDefinition","src":"5541:225:15"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":6482,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6335,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6324,"name":"ElementaryTypeName","src":"5938:7:15"}],"id":6325,"name":"VariableDeclaration","src":"5938:12:15"}],"id":6326,"name":"ParameterList","src":"5937:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6335,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6327,"name":"ElementaryTypeName","src":"5975:5:15"}],"id":6328,"name":"VariableDeclaration","src":"5975:12:15"}],"id":6329,"name":"ParameterList","src":"5974:14:15"},{"children":[{"attributes":{"functionReturnParameters":6329},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6330,"name":"Identifier","src":"6006:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"bytes32","value":"node"},"id":6331,"name":"Identifier","src":"6017:4:15"}],"id":6332,"name":"IndexAccess","src":"6006:16:15"}],"id":6333,"name":"Return","src":"5999:23:15"}],"id":6334,"name":"Block","src":"5989:40:15"}],"id":6335,"name":"FunctionDefinition","src":"5920:109:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6482,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6356,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6336,"name":"ElementaryTypeName","src":"6062:6:15"}],"id":6337,"name":"VariableDeclaration","src":"6062:18:15"}],"id":6338,"name":"ParameterList","src":"6061:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6356,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6339,"name":"ElementaryTypeName","src":"6102:4:15"}],"id":6340,"name":"VariableDeclaration","src":"6102:4:15"}],"id":6341,"name":"ParameterList","src":"6101:6:15"},{"children":[{"attributes":{"functionReturnParameters":6341},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6337,"type":"bytes4","value":"interfaceID"},"id":6342,"name":"Identifier","src":"6125:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6005,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":6343,"name":"Identifier","src":"6140:23:15"}],"id":6344,"name":"BinaryOperation","src":"6125:38:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6337,"type":"bytes4","value":"interfaceID"},"id":6345,"name":"Identifier","src":"6182:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6008,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":6346,"name":"Identifier","src":"6197:21:15"}],"id":6347,"name":"BinaryOperation","src":"6182:36:15"}],"id":6348,"name":"BinaryOperation","src":"6125:93:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10202,"type":"contract super DNSResolver","value":"super"},"id":6349,"name":"Identifier","src":"6237:5:15"}],"id":6350,"name":"MemberAccess","src":"6237:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6337,"type":"bytes4","value":"interfaceID"},"id":6351,"name":"Identifier","src":"6261:11:15"}],"id":6352,"name":"FunctionCall","src":"6237:36:15"}],"id":6353,"name":"BinaryOperation","src":"6125:148:15"}],"id":6354,"name":"Return","src":"6118:155:15"}],"id":6355,"name":"Block","src":"6108:172:15"}],"id":6356,"name":"FunctionDefinition","src":"6035:245:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":6482,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6481,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6357,"name":"ElementaryTypeName","src":"6316:7:15"}],"id":6358,"name":"VariableDeclaration","src":"6316:12:15"},{"attributes":{"constant":false,"name":"name","scope":6481,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6359,"name":"ElementaryTypeName","src":"6338:5:15"}],"id":6360,"name":"VariableDeclaration","src":"6338:17:15"},{"attributes":{"constant":false,"name":"resource","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6361,"name":"ElementaryTypeName","src":"6365:6:15"}],"id":6362,"name":"VariableDeclaration","src":"6365:15:15"},{"attributes":{"constant":false,"name":"data","scope":6481,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6363,"name":"ElementaryTypeName","src":"6390:5:15"}],"id":6364,"name":"VariableDeclaration","src":"6390:17:15"},{"attributes":{"constant":false,"name":"offset","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6365,"name":"ElementaryTypeName","src":"6417:7:15"}],"id":6366,"name":"VariableDeclaration","src":"6417:14:15"},{"attributes":{"constant":false,"name":"size","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6367,"name":"ElementaryTypeName","src":"6441:7:15"}],"id":6368,"name":"VariableDeclaration","src":"6441:12:15"},{"attributes":{"constant":false,"name":"deleteRecord","scope":6481,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6369,"name":"ElementaryTypeName","src":"6463:4:15"}],"id":6370,"name":"VariableDeclaration","src":"6463:17:15"}],"id":6371,"name":"ParameterList","src":"6306:175:15"},{"attributes":{"parameters":[null]},"children":[],"id":6372,"name":"ParameterList","src":"6494:0:15"},{"children":[{"attributes":{"assignments":[6374]},"children":[{"attributes":{"constant":false,"name":"version","scope":6480,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6373,"name":"ElementaryTypeName","src":"6504:7:15"}],"id":6374,"name":"VariableDeclaration","src":"6504:15:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6046,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6375,"name":"Identifier","src":"6522:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6376,"name":"Identifier","src":"6531:4:15"}],"id":6377,"name":"IndexAccess","src":"6522:14:15"}],"id":6378,"name":"VariableDeclarationStatement","src":"6504:32:15"},{"attributes":{"assignments":[6380]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6480,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6379,"name":"ElementaryTypeName","src":"6546:7:15"}],"id":6380,"name":"VariableDeclaration","src":"6546:16:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6381,"name":"Identifier","src":"6565:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6360,"type":"bytes memory","value":"name"},"id":6382,"name":"Identifier","src":"6575:4:15"}],"id":6383,"name":"FunctionCall","src":"6565:15:15"}],"id":6384,"name":"VariableDeclarationStatement","src":"6546:34:15"},{"attributes":{"assignments":[6386]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":6480,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6385,"name":"ElementaryTypeName","src":"6590:5:15"}],"id":6386,"name":"VariableDeclaration","src":"6590:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9915,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6364,"type":"bytes memory","value":"data"},"id":6387,"name":"Identifier","src":"6612:4:15"}],"id":6388,"name":"MemberAccess","src":"6612:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6366,"type":"uint256","value":"offset"},"id":6389,"name":"Identifier","src":"6627:6:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"size"},"id":6390,"name":"Identifier","src":"6635:4:15"}],"id":6391,"name":"FunctionCall","src":"6612:28:15"}],"id":6392,"name":"VariableDeclarationStatement","src":"6590:50:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6370,"type":"bool","value":"deleteRecord"},"id":6393,"name":"Identifier","src":"6654:12:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6394,"name":"Identifier","src":"6686:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6395,"name":"Identifier","src":"6694:4:15"}],"id":6396,"name":"IndexAccess","src":"6686:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6397,"name":"Identifier","src":"6700:7:15"}],"id":6398,"name":"IndexAccess","src":"6686:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6399,"name":"Identifier","src":"6709:8:15"}],"id":6400,"name":"IndexAccess","src":"6686:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6401,"name":"Identifier","src":"6719:8:15"}],"id":6402,"name":"IndexAccess","src":"6686:42:15"}],"id":6403,"name":"MemberAccess","src":"6686:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6404,"name":"Literal","src":"6739:1:15"}],"id":6405,"name":"BinaryOperation","src":"6686:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6064,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6406,"name":"Identifier","src":"6760:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6407,"name":"Identifier","src":"6777:4:15"}],"id":6410,"name":"IndexAccess","src":"6760:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6408,"name":"Identifier","src":"6783:7:15"}],"id":6411,"name":"IndexAccess","src":"6760:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6409,"name":"Identifier","src":"6792:8:15"}],"id":6412,"name":"IndexAccess","src":"6760:41:15"}],"id":6413,"name":"UnaryOperation","src":"6760:43:15"}],"id":6414,"name":"ExpressionStatement","src":"6760:43:15"}],"id":6415,"name":"Block","src":"6742:76:15"}],"id":6416,"name":"IfStatement","src":"6682:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6417,"name":"Identifier","src":"6838:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6418,"name":"Identifier","src":"6846:4:15"}],"id":6419,"name":"IndexAccess","src":"6838:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6420,"name":"Identifier","src":"6852:7:15"}],"id":6421,"name":"IndexAccess","src":"6838:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6422,"name":"Identifier","src":"6861:8:15"}],"id":6423,"name":"IndexAccess","src":"6838:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6424,"name":"Identifier","src":"6871:8:15"}],"id":6425,"name":"IndexAccess","src":"6838:42:15"}],"id":6426,"name":"TupleExpression","src":"6837:44:15"}],"id":6427,"name":"UnaryOperation","src":"6831:50:15"}],"id":6428,"name":"ExpressionStatement","src":"6831:50:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":6026,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":6429,"name":"Identifier","src":"6900:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6430,"name":"Identifier","src":"6917:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6360,"type":"bytes memory","value":"name"},"id":6431,"name":"Identifier","src":"6923:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6432,"name":"Identifier","src":"6929:8:15"}],"id":6433,"name":"FunctionCall","src":"6900:38:15"}],"id":6434,"name":"EmitStatement","src":"6895:43:15"}],"id":6435,"name":"Block","src":"6668:281:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6436,"name":"Identifier","src":"6973:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6437,"name":"Identifier","src":"6981:4:15"}],"id":6438,"name":"IndexAccess","src":"6973:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6439,"name":"Identifier","src":"6987:7:15"}],"id":6440,"name":"IndexAccess","src":"6973:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6441,"name":"Identifier","src":"6996:8:15"}],"id":6442,"name":"IndexAccess","src":"6973:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6443,"name":"Identifier","src":"7006:8:15"}],"id":6444,"name":"IndexAccess","src":"6973:42:15"}],"id":6445,"name":"MemberAccess","src":"6973:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6446,"name":"Literal","src":"7026:1:15"}],"id":6447,"name":"BinaryOperation","src":"6973:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6064,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6448,"name":"Identifier","src":"7047:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6449,"name":"Identifier","src":"7064:4:15"}],"id":6452,"name":"IndexAccess","src":"7047:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6450,"name":"Identifier","src":"7070:7:15"}],"id":6453,"name":"IndexAccess","src":"7047:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6451,"name":"Identifier","src":"7079:8:15"}],"id":6454,"name":"IndexAccess","src":"7047:41:15"}],"id":6455,"name":"UnaryOperation","src":"7047:43:15"}],"id":6456,"name":"ExpressionStatement","src":"7047:43:15"}],"id":6457,"name":"Block","src":"7029:76:15"}],"id":6458,"name":"IfStatement","src":"6969:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6459,"name":"Identifier","src":"7118:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6460,"name":"Identifier","src":"7126:4:15"}],"id":6464,"name":"IndexAccess","src":"7118:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6461,"name":"Identifier","src":"7132:7:15"}],"id":6465,"name":"IndexAccess","src":"7118:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6462,"name":"Identifier","src":"7141:8:15"}],"id":6466,"name":"IndexAccess","src":"7118:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6463,"name":"Identifier","src":"7151:8:15"}],"id":6467,"name":"IndexAccess","src":"7118:42:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"bytes memory","value":"rrData"},"id":6468,"name":"Identifier","src":"7163:6:15"}],"id":6469,"name":"Assignment","src":"7118:51:15"}],"id":6470,"name":"ExpressionStatement","src":"7118:51:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6018,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":6471,"name":"Identifier","src":"7188:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6472,"name":"Identifier","src":"7205:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6360,"type":"bytes memory","value":"name"},"id":6473,"name":"Identifier","src":"7211:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6474,"name":"Identifier","src":"7217:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"bytes memory","value":"rrData"},"id":6475,"name":"Identifier","src":"7227:6:15"}],"id":6476,"name":"FunctionCall","src":"7188:46:15"}],"id":6477,"name":"EmitStatement","src":"7183:51:15"}],"id":6478,"name":"Block","src":"6955:290:15"}],"id":6479,"name":"IfStatement","src":"6650:595:15"}],"id":6480,"name":"Block","src":"6494:757:15"}],"id":6481,"name":"FunctionDefinition","src":"6286:965:15"}],"id":6482,"name":"ContractDefinition","src":"81:7172:15"}],"id":6483,"name":"SourceUnit","src":"0:7253:15"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[6669]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6484,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6670,"symbolAliases":[null],"unitAlias":""},"id":6485,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"SourceUnit":5922,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":6670,"symbolAliases":[null],"unitAlias":""},"id":6486,"name":"ImportDirective","src":"55:28:16"},{"attributes":{"contractDependencies":[5921,8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6669,5921,8799],"name":"InterfaceResolver","scope":6670},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":6487,"name":"UserDefinedTypeName","src":"115:12:16"}],"id":6488,"name":"InheritanceSpecifier","src":"115:12:16"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5921,"type":"contract AddrResolver"},"id":6489,"name":"UserDefinedTypeName","src":"129:12:16"}],"id":6490,"name":"InheritanceSpecifier","src":"129:12:16"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":6669,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6491,"name":"ElementaryTypeName","src":"148:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":6492,"name":"ElementaryTypeNameExpression","src":"197:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6493,"name":"Identifier","src":"204:9:16"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":6494,"name":"Literal","src":"214:38:16"}],"id":6495,"name":"FunctionCall","src":"204:49:16"}],"id":6496,"name":"FunctionCall","src":"197:57:16"}],"id":6497,"name":"VariableDeclaration","src":"148:106:16"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":6669,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6498,"name":"ElementaryTypeName","src":"260:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":6499,"name":"Literal","src":"304:10:16"}],"id":6500,"name":"VariableDeclaration","src":"260:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6508,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6501,"name":"ElementaryTypeName","src":"344:7:16"}],"id":6502,"name":"VariableDeclaration","src":"344:20:16"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":6508,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6503,"name":"ElementaryTypeName","src":"366:6:16"}],"id":6504,"name":"VariableDeclaration","src":"366:26:16"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":6508,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6505,"name":"ElementaryTypeName","src":"394:7:16"}],"id":6506,"name":"VariableDeclaration","src":"394:19:16"}],"id":6507,"name":"ParameterList","src":"343:71:16"}],"id":6508,"name":"EventDefinition","src":"321:94:16"},{"attributes":{"constant":false,"name":"interfaces","scope":6669,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6509,"name":"ElementaryTypeName","src":"429:7:16"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6510,"name":"ElementaryTypeName","src":"446:6:16"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6511,"name":"ElementaryTypeName","src":"454:7:16"}],"id":6512,"name":"Mapping","src":"438:24:16"}],"id":6513,"name":"Mapping","src":"421:42:16"}],"id":6514,"name":"VariableDeclaration","src":"421:53:16"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":6669,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6541,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6515,"name":"ElementaryTypeName","src":"880:7:16"}],"id":6516,"name":"VariableDeclaration","src":"880:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6541,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6517,"name":"ElementaryTypeName","src":"894:6:16"}],"id":6518,"name":"VariableDeclaration","src":"894:18:16"},{"attributes":{"constant":false,"name":"implementer","scope":6541,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6519,"name":"ElementaryTypeName","src":"914:7:16"}],"id":6520,"name":"VariableDeclaration","src":"914:19:16"}],"id":6521,"name":"ParameterList","src":"879:55:16"},{"attributes":{"parameters":[null]},"children":[],"id":6525,"name":"ParameterList","src":"961:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6522,"name":"Identifier","src":"944:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes32","value":"node"},"id":6523,"name":"Identifier","src":"955:4:16"}],"id":6524,"name":"ModifierInvocation","src":"944:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6514,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6526,"name":"Identifier","src":"971:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes32","value":"node"},"id":6527,"name":"Identifier","src":"982:4:16"}],"id":6529,"name":"IndexAccess","src":"971:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6518,"type":"bytes4","value":"interfaceID"},"id":6528,"name":"Identifier","src":"988:11:16"}],"id":6530,"name":"IndexAccess","src":"971:29:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6520,"type":"address","value":"implementer"},"id":6531,"name":"Identifier","src":"1003:11:16"}],"id":6532,"name":"Assignment","src":"971:43:16"}],"id":6533,"name":"ExpressionStatement","src":"971:43:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6508,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":6534,"name":"Identifier","src":"1029:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes32","value":"node"},"id":6535,"name":"Identifier","src":"1046:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6518,"type":"bytes4","value":"interfaceID"},"id":6536,"name":"Identifier","src":"1052:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6520,"type":"address","value":"implementer"},"id":6537,"name":"Identifier","src":"1065:11:16"}],"id":6538,"name":"FunctionCall","src":"1029:48:16"}],"id":6539,"name":"EmitStatement","src":"1024:53:16"}],"id":6540,"name":"Block","src":"961:123:16"}],"id":6541,"name":"FunctionDefinition","src":"858:226:16"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":6669,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6651,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6542,"name":"ElementaryTypeName","src":"1751:7:16"}],"id":6543,"name":"VariableDeclaration","src":"1751:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6651,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6544,"name":"ElementaryTypeName","src":"1765:6:16"}],"id":6545,"name":"VariableDeclaration","src":"1765:18:16"}],"id":6546,"name":"ParameterList","src":"1750:34:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6651,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6547,"name":"ElementaryTypeName","src":"1808:7:16"}],"id":6548,"name":"VariableDeclaration","src":"1808:7:16"}],"id":6549,"name":"ParameterList","src":"1807:9:16"},{"children":[{"attributes":{"assignments":[6551]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":6650,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6550,"name":"ElementaryTypeName","src":"1827:7:16"}],"id":6551,"name":"VariableDeclaration","src":"1827:19:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6514,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6552,"name":"Identifier","src":"1849:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes32","value":"node"},"id":6553,"name":"Identifier","src":"1860:4:16"}],"id":6554,"name":"IndexAccess","src":"1849:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6545,"type":"bytes4","value":"interfaceID"},"id":6555,"name":"Identifier","src":"1866:11:16"}],"id":6556,"name":"IndexAccess","src":"1849:29:16"}],"id":6557,"name":"VariableDeclarationStatement","src":"1827:51:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6551,"type":"address","value":"implementer"},"id":6558,"name":"Identifier","src":"1891:11:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6559,"name":"ElementaryTypeNameExpression","src":"1906:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6560,"name":"Literal","src":"1914:1:16"}],"id":6561,"name":"FunctionCall","src":"1906:10:16"}],"id":6562,"name":"BinaryOperation","src":"1891:25:16"},{"children":[{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6551,"type":"address","value":"implementer"},"id":6563,"name":"Identifier","src":"1939:11:16"}],"id":6564,"name":"Return","src":"1932:18:16"}],"id":6565,"name":"Block","src":"1918:43:16"}],"id":6566,"name":"IfStatement","src":"1888:73:16"},{"attributes":{"assignments":[6568]},"children":[{"attributes":{"constant":false,"name":"a","scope":6650,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6567,"name":"ElementaryTypeName","src":"1971:7:16"}],"id":6568,"name":"VariableDeclaration","src":"1971:9:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[5844,5899],"referencedDeclaration":5844,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":6569,"name":"Identifier","src":"1983:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes32","value":"node"},"id":6570,"name":"Identifier","src":"1988:4:16"}],"id":6571,"name":"FunctionCall","src":"1983:10:16"}],"id":6572,"name":"VariableDeclarationStatement","src":"1971:22:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6568,"type":"address","value":"a"},"id":6573,"name":"Identifier","src":"2006:1:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6574,"name":"ElementaryTypeNameExpression","src":"2011:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6575,"name":"Literal","src":"2019:1:16"}],"id":6576,"name":"FunctionCall","src":"2011:10:16"}],"id":6577,"name":"BinaryOperation","src":"2006:15:16"},{"children":[{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6578,"name":"ElementaryTypeNameExpression","src":"2044:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6579,"name":"Literal","src":"2052:1:16"}],"id":6580,"name":"FunctionCall","src":"2044:10:16"}],"id":6581,"name":"Return","src":"2037:17:16"}],"id":6582,"name":"Block","src":"2023:42:16"}],"id":6583,"name":"IfStatement","src":"2003:62:16"},{"attributes":{"assignments":[6585,6587]},"children":[{"attributes":{"constant":false,"name":"success","scope":6650,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6584,"name":"ElementaryTypeName","src":"2076:4:16"}],"id":6585,"name":"VariableDeclaration","src":"2076:12:16"},{"attributes":{"constant":false,"name":"returnData","scope":6650,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6586,"name":"ElementaryTypeName","src":"2090:5:16"}],"id":6587,"name":"VariableDeclaration","src":"2090:23:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6568,"type":"address","value":"a"},"id":6588,"name":"Identifier","src":"2117:1:16"}],"id":6589,"name":"MemberAccess","src":"2117:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":6590,"name":"Identifier","src":"2130:3:16"}],"id":6591,"name":"MemberAccess","src":"2130:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6592,"name":"Literal","src":"2154:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6500,"type":"bytes4","value":"INTERFACE_META_ID"},"id":6593,"name":"Identifier","src":"2183:17:16"}],"id":6594,"name":"FunctionCall","src":"2130:71:16"}],"id":6595,"name":"FunctionCall","src":"2117:85:16"}],"id":6596,"name":"VariableDeclarationStatement","src":"2075:127:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"bool","value":"success"},"id":6597,"name":"Identifier","src":"2216:7:16"}],"id":6598,"name":"UnaryOperation","src":"2215:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6599,"name":"Identifier","src":"2227:10:16"}],"id":6600,"name":"MemberAccess","src":"2227:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6601,"name":"Literal","src":"2247:2:16"}],"id":6602,"name":"BinaryOperation","src":"2227:22:16"}],"id":6603,"name":"BinaryOperation","src":"2215:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6604,"name":"Identifier","src":"2253:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6605,"name":"Literal","src":"2264:2:16"}],"id":6606,"name":"IndexAccess","src":"2253:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6607,"name":"Literal","src":"2271:1:16"}],"id":6608,"name":"BinaryOperation","src":"2253:19:16"}],"id":6609,"name":"BinaryOperation","src":"2215:57:16"},{"children":[{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6610,"name":"ElementaryTypeNameExpression","src":"2342:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6611,"name":"Literal","src":"2350:1:16"}],"id":6612,"name":"FunctionCall","src":"2342:10:16"}],"id":6613,"name":"Return","src":"2335:17:16"}],"id":6614,"name":"Block","src":"2274:89:16"}],"id":6615,"name":"IfStatement","src":"2212:151:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"bool","value":"success"},"id":6616,"name":"Identifier","src":"2374:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6617,"name":"Identifier","src":"2383:10:16"}],"id":6618,"name":"TupleExpression","src":"2373:21:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6568,"type":"address","value":"a"},"id":6619,"name":"Identifier","src":"2397:1:16"}],"id":6620,"name":"MemberAccess","src":"2397:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":6621,"name":"Identifier","src":"2410:3:16"}],"id":6622,"name":"MemberAccess","src":"2410:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6623,"name":"Literal","src":"2434:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6545,"type":"bytes4","value":"interfaceID"},"id":6624,"name":"Identifier","src":"2463:11:16"}],"id":6625,"name":"FunctionCall","src":"2410:65:16"}],"id":6626,"name":"FunctionCall","src":"2397:79:16"}],"id":6627,"name":"Assignment","src":"2373:103:16"}],"id":6628,"name":"ExpressionStatement","src":"2373:103:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"bool","value":"success"},"id":6629,"name":"Identifier","src":"2490:7:16"}],"id":6630,"name":"UnaryOperation","src":"2489:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6631,"name":"Identifier","src":"2501:10:16"}],"id":6632,"name":"MemberAccess","src":"2501:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6633,"name":"Literal","src":"2521:2:16"}],"id":6634,"name":"BinaryOperation","src":"2501:22:16"}],"id":6635,"name":"BinaryOperation","src":"2489:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6636,"name":"Identifier","src":"2527:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6637,"name":"Literal","src":"2538:2:16"}],"id":6638,"name":"IndexAccess","src":"2527:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6639,"name":"Literal","src":"2545:1:16"}],"id":6640,"name":"BinaryOperation","src":"2527:19:16"}],"id":6641,"name":"BinaryOperation","src":"2489:57:16"},{"children":[{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6642,"name":"ElementaryTypeNameExpression","src":"2628:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6643,"name":"Literal","src":"2636:1:16"}],"id":6644,"name":"FunctionCall","src":"2628:10:16"}],"id":6645,"name":"Return","src":"2621:17:16"}],"id":6646,"name":"Block","src":"2548:101:16"}],"id":6647,"name":"IfStatement","src":"2486:163:16"},{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6568,"type":"address","value":"a"},"id":6648,"name":"Identifier","src":"2666:1:16"}],"id":6649,"name":"Return","src":"2659:8:16"}],"id":6650,"name":"Block","src":"1817:857:16"}],"id":6651,"name":"FunctionDefinition","src":"1721:953:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6669,"stateMutability":"pure","superFunction":5920,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6668,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6652,"name":"ElementaryTypeName","src":"2707:6:16"}],"id":6653,"name":"VariableDeclaration","src":"2707:18:16"}],"id":6654,"name":"ParameterList","src":"2706:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6668,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6655,"name":"ElementaryTypeName","src":"2747:4:16"}],"id":6656,"name":"VariableDeclaration","src":"2747:4:16"}],"id":6657,"name":"ParameterList","src":"2746:6:16"},{"children":[{"attributes":{"functionReturnParameters":6657},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6653,"type":"bytes4","value":"interfaceID"},"id":6658,"name":"Identifier","src":"2770:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6497,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":6659,"name":"Identifier","src":"2785:22:16"}],"id":6660,"name":"BinaryOperation","src":"2770:37:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5920,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10204,"type":"contract super InterfaceResolver","value":"super"},"id":6661,"name":"Identifier","src":"2811:5:16"}],"id":6662,"name":"MemberAccess","src":"2811:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6653,"type":"bytes4","value":"interfaceID"},"id":6663,"name":"Identifier","src":"2835:11:16"}],"id":6664,"name":"FunctionCall","src":"2811:36:16"}],"id":6665,"name":"BinaryOperation","src":"2770:77:16"}],"id":6666,"name":"Return","src":"2763:84:16"}],"id":6667,"name":"Block","src":"2753:101:16"}],"id":6668,"name":"FunctionDefinition","src":"2680:174:16"}],"id":6669,"name":"ContractDefinition","src":"85:2771:16"}],"id":6670,"name":"SourceUnit","src":"0:2857:16"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[6739]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6671,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6740,"symbolAliases":[null],"unitAlias":""},"id":6672,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6739,8799],"name":"NameResolver","scope":6740},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":6673,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":6674,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":6739,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6675,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":6676,"name":"Literal","src":"144:10:17"}],"id":6677,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6683,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6678,"name":"ElementaryTypeName","src":"179:7:17"}],"id":6679,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6683,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6680,"name":"ElementaryTypeName","src":"201:6:17"}],"id":6681,"name":"VariableDeclaration","src":"201:11:17"}],"id":6682,"name":"ParameterList","src":"178:35:17"}],"id":6683,"name":"EventDefinition","src":"161:53:17"},{"attributes":{"constant":false,"name":"names","scope":6739,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6684,"name":"ElementaryTypeName","src":"228:7:17"},{"attributes":{"name":"string","type":"string"},"id":6685,"name":"ElementaryTypeName","src":"237:6:17"}],"id":6686,"name":"Mapping","src":"220:24:17"}],"id":6687,"name":"VariableDeclaration","src":"220:30:17"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":6739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6709,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6688,"name":"ElementaryTypeName","src":"509:7:17"}],"id":6689,"name":"VariableDeclaration","src":"509:12:17"},{"attributes":{"constant":false,"name":"name","scope":6709,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6690,"name":"ElementaryTypeName","src":"523:6:17"}],"id":6691,"name":"VariableDeclaration","src":"523:20:17"}],"id":6692,"name":"ParameterList","src":"508:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":6696,"name":"ParameterList","src":"571:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6693,"name":"Identifier","src":"554:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6689,"type":"bytes32","value":"node"},"id":6694,"name":"Identifier","src":"565:4:17"}],"id":6695,"name":"ModifierInvocation","src":"554:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6687,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":6697,"name":"Identifier","src":"581:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6689,"type":"bytes32","value":"node"},"id":6698,"name":"Identifier","src":"587:4:17"}],"id":6699,"name":"IndexAccess","src":"581:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"string calldata","value":"name"},"id":6700,"name":"Identifier","src":"595:4:17"}],"id":6701,"name":"Assignment","src":"581:18:17"}],"id":6702,"name":"ExpressionStatement","src":"581:18:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6683,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":6703,"name":"Identifier","src":"614:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6689,"type":"bytes32","value":"node"},"id":6704,"name":"Identifier","src":"626:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"string calldata","value":"name"},"id":6705,"name":"Identifier","src":"632:4:17"}],"id":6706,"name":"FunctionCall","src":"614:23:17"}],"id":6707,"name":"EmitStatement","src":"609:28:17"}],"id":6708,"name":"Block","src":"571:73:17"}],"id":6709,"name":"FunctionDefinition","src":"492:152:17"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":6739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6721,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6710,"name":"ElementaryTypeName","src":"858:7:17"}],"id":6711,"name":"VariableDeclaration","src":"858:12:17"}],"id":6712,"name":"ParameterList","src":"857:14:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6721,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6713,"name":"ElementaryTypeName","src":"895:6:17"}],"id":6714,"name":"VariableDeclaration","src":"895:13:17"}],"id":6715,"name":"ParameterList","src":"894:15:17"},{"children":[{"attributes":{"functionReturnParameters":6715},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6687,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":6716,"name":"Identifier","src":"927:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6711,"type":"bytes32","value":"node"},"id":6717,"name":"Identifier","src":"933:4:17"}],"id":6718,"name":"IndexAccess","src":"927:11:17"}],"id":6719,"name":"Return","src":"920:18:17"}],"id":6720,"name":"Block","src":"910:35:17"}],"id":6721,"name":"FunctionDefinition","src":"844:101:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6739,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6738,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6722,"name":"ElementaryTypeName","src":"978:6:17"}],"id":6723,"name":"VariableDeclaration","src":"978:18:17"}],"id":6724,"name":"ParameterList","src":"977:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6738,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6725,"name":"ElementaryTypeName","src":"1018:4:17"}],"id":6726,"name":"VariableDeclaration","src":"1018:4:17"}],"id":6727,"name":"ParameterList","src":"1017:6:17"},{"children":[{"attributes":{"functionReturnParameters":6727},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6723,"type":"bytes4","value":"interfaceID"},"id":6728,"name":"Identifier","src":"1041:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6677,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":6729,"name":"Identifier","src":"1056:17:17"}],"id":6730,"name":"BinaryOperation","src":"1041:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10206,"type":"contract super NameResolver","value":"super"},"id":6731,"name":"Identifier","src":"1077:5:17"}],"id":6732,"name":"MemberAccess","src":"1077:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6723,"type":"bytes4","value":"interfaceID"},"id":6733,"name":"Identifier","src":"1101:11:17"}],"id":6734,"name":"FunctionCall","src":"1077:36:17"}],"id":6735,"name":"BinaryOperation","src":"1041:72:17"}],"id":6736,"name":"Return","src":"1034:79:17"}],"id":6737,"name":"Block","src":"1024:96:17"}],"id":6738,"name":"FunctionDefinition","src":"951:169:17"}],"id":6739,"name":"ContractDefinition","src":"56:1066:17"}],"id":6740,"name":"SourceUnit","src":"0:1123:17"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[6830]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6741,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6831,"symbolAliases":[null],"unitAlias":""},"id":6742,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6830,8799],"name":"PubkeyResolver","scope":6831},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":6743,"name":"UserDefinedTypeName","src":"83:12:18"}],"id":6744,"name":"InheritanceSpecifier","src":"83:12:18"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":6830,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6745,"name":"ElementaryTypeName","src":"102:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":6746,"name":"Literal","src":"148:10:18"}],"id":6747,"name":"VariableDeclaration","src":"102:56:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6755,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6748,"name":"ElementaryTypeName","src":"185:7:18"}],"id":6749,"name":"VariableDeclaration","src":"185:20:18"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":6755,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6750,"name":"ElementaryTypeName","src":"207:7:18"}],"id":6751,"name":"VariableDeclaration","src":"207:9:18"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":6755,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6752,"name":"ElementaryTypeName","src":"218:7:18"}],"id":6753,"name":"VariableDeclaration","src":"218:9:18"}],"id":6754,"name":"ParameterList","src":"184:44:18"}],"id":6755,"name":"EventDefinition","src":"165:64:18"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":6830,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":6760,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6756,"name":"ElementaryTypeName","src":"262:7:18"}],"id":6757,"name":"VariableDeclaration","src":"262:9:18"},{"attributes":{"constant":false,"name":"y","scope":6760,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6758,"name":"ElementaryTypeName","src":"281:7:18"}],"id":6759,"name":"VariableDeclaration","src":"281:9:18"}],"id":6760,"name":"StructDefinition","src":"235:62:18"},{"attributes":{"constant":false,"name":"pubkeys","scope":6830,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6761,"name":"ElementaryTypeName","src":"311:7:18"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":6760,"type":"struct PubkeyResolver.PublicKey"},"id":6762,"name":"UserDefinedTypeName","src":"320:9:18"}],"id":6763,"name":"Mapping","src":"303:27:18"}],"id":6764,"name":"VariableDeclaration","src":"303:35:18"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":6830,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6792,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6765,"name":"ElementaryTypeName","src":"631:7:18"}],"id":6766,"name":"VariableDeclaration","src":"631:12:18"},{"attributes":{"constant":false,"name":"x","scope":6792,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6767,"name":"ElementaryTypeName","src":"645:7:18"}],"id":6768,"name":"VariableDeclaration","src":"645:9:18"},{"attributes":{"constant":false,"name":"y","scope":6792,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6769,"name":"ElementaryTypeName","src":"656:7:18"}],"id":6770,"name":"VariableDeclaration","src":"656:9:18"}],"id":6771,"name":"ParameterList","src":"630:36:18"},{"attributes":{"parameters":[null]},"children":[],"id":6775,"name":"ParameterList","src":"693:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6772,"name":"Identifier","src":"676:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"bytes32","value":"node"},"id":6773,"name":"Identifier","src":"687:4:18"}],"id":6774,"name":"ModifierInvocation","src":"676:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6776,"name":"Identifier","src":"703:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"bytes32","value":"node"},"id":6777,"name":"Identifier","src":"711:4:18"}],"id":6778,"name":"IndexAccess","src":"703:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6760,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":6779,"name":"Identifier","src":"719:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6768,"type":"bytes32","value":"x"},"id":6780,"name":"Identifier","src":"729:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes32","value":"y"},"id":6781,"name":"Identifier","src":"732:1:18"}],"id":6782,"name":"FunctionCall","src":"719:15:18"}],"id":6783,"name":"Assignment","src":"703:31:18"}],"id":6784,"name":"ExpressionStatement","src":"703:31:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6755,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":6785,"name":"Identifier","src":"749:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"bytes32","value":"node"},"id":6786,"name":"Identifier","src":"763:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6768,"type":"bytes32","value":"x"},"id":6787,"name":"Identifier","src":"769:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes32","value":"y"},"id":6788,"name":"Identifier","src":"772:1:18"}],"id":6789,"name":"FunctionCall","src":"749:25:18"}],"id":6790,"name":"EmitStatement","src":"744:30:18"}],"id":6791,"name":"Block","src":"693:88:18"}],"id":6792,"name":"FunctionDefinition","src":"612:169:18"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":6830,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6812,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6793,"name":"ElementaryTypeName","src":"1039:7:18"}],"id":6794,"name":"VariableDeclaration","src":"1039:12:18"}],"id":6795,"name":"ParameterList","src":"1038:14:18"},{"children":[{"attributes":{"constant":false,"name":"x","scope":6812,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6796,"name":"ElementaryTypeName","src":"1076:7:18"}],"id":6797,"name":"VariableDeclaration","src":"1076:9:18"},{"attributes":{"constant":false,"name":"y","scope":6812,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6798,"name":"ElementaryTypeName","src":"1087:7:18"}],"id":6799,"name":"VariableDeclaration","src":"1087:9:18"}],"id":6800,"name":"ParameterList","src":"1075:22:18"},{"children":[{"attributes":{"functionReturnParameters":6800},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":6757,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6801,"name":"Identifier","src":"1116:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"bytes32","value":"node"},"id":6802,"name":"Identifier","src":"1124:4:18"}],"id":6803,"name":"IndexAccess","src":"1116:13:18"}],"id":6804,"name":"MemberAccess","src":"1116:15:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":6759,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6805,"name":"Identifier","src":"1133:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"bytes32","value":"node"},"id":6806,"name":"Identifier","src":"1141:4:18"}],"id":6807,"name":"IndexAccess","src":"1133:13:18"}],"id":6808,"name":"MemberAccess","src":"1133:15:18"}],"id":6809,"name":"TupleExpression","src":"1115:34:18"}],"id":6810,"name":"Return","src":"1108:41:18"}],"id":6811,"name":"Block","src":"1098:58:18"}],"id":6812,"name":"FunctionDefinition","src":"1023:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6830,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6829,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6813,"name":"ElementaryTypeName","src":"1189:6:18"}],"id":6814,"name":"VariableDeclaration","src":"1189:18:18"}],"id":6815,"name":"ParameterList","src":"1188:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":6829,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6816,"name":"ElementaryTypeName","src":"1229:4:18"}],"id":6817,"name":"VariableDeclaration","src":"1229:4:18"}],"id":6818,"name":"ParameterList","src":"1228:6:18"},{"children":[{"attributes":{"functionReturnParameters":6818},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6814,"type":"bytes4","value":"interfaceID"},"id":6819,"name":"Identifier","src":"1252:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6747,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":6820,"name":"Identifier","src":"1267:19:18"}],"id":6821,"name":"BinaryOperation","src":"1252:34:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10208,"type":"contract super PubkeyResolver","value":"super"},"id":6822,"name":"Identifier","src":"1290:5:18"}],"id":6823,"name":"MemberAccess","src":"1290:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6814,"type":"bytes4","value":"interfaceID"},"id":6824,"name":"Identifier","src":"1314:11:18"}],"id":6825,"name":"FunctionCall","src":"1290:36:18"}],"id":6826,"name":"BinaryOperation","src":"1252:74:18"}],"id":6827,"name":"Return","src":"1245:81:18"}],"id":6828,"name":"Block","src":"1235:98:18"}],"id":6829,"name":"FunctionDefinition","src":"1162:171:18"}],"id":6830,"name":"ContractDefinition","src":"56:1279:18"}],"id":6831,"name":"SourceUnit","src":"0:1336:18"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[6913]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6832,"name":"PragmaDirective","src":"0:23:19"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6914,"symbolAliases":[null],"unitAlias":""},"id":6833,"name":"ImportDirective","src":"25:29:19"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6913,8799],"name":"TextResolver","scope":6914},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":6834,"name":"UserDefinedTypeName","src":"81:12:19"}],"id":6835,"name":"InheritanceSpecifier","src":"81:12:19"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":6913,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6836,"name":"ElementaryTypeName","src":"100:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":6837,"name":"Literal","src":"144:10:19"}],"id":6838,"name":"VariableDeclaration","src":"100:54:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6839,"name":"ElementaryTypeName","src":"179:7:19"}],"id":6840,"name":"VariableDeclaration","src":"179:20:19"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":6846,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6841,"name":"ElementaryTypeName","src":"201:6:19"}],"id":6842,"name":"VariableDeclaration","src":"201:25:19"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":6846,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6843,"name":"ElementaryTypeName","src":"228:6:19"}],"id":6844,"name":"VariableDeclaration","src":"228:10:19"}],"id":6845,"name":"ParameterList","src":"178:61:19"}],"id":6846,"name":"EventDefinition","src":"161:79:19"},{"attributes":{"constant":false,"name":"texts","scope":6913,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6847,"name":"ElementaryTypeName","src":"254:7:19"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6848,"name":"ElementaryTypeName","src":"271:6:19"},{"attributes":{"name":"string","type":"string"},"id":6849,"name":"ElementaryTypeName","src":"279:6:19"}],"id":6850,"name":"Mapping","src":"263:23:19"}],"id":6851,"name":"Mapping","src":"246:41:19"}],"id":6852,"name":"VariableDeclaration","src":"246:47:19"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":6913,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6879,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6853,"name":"ElementaryTypeName","src":"590:7:19"}],"id":6854,"name":"VariableDeclaration","src":"590:12:19"},{"attributes":{"constant":false,"name":"key","scope":6879,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6855,"name":"ElementaryTypeName","src":"604:6:19"}],"id":6856,"name":"VariableDeclaration","src":"604:19:19"},{"attributes":{"constant":false,"name":"value","scope":6879,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6857,"name":"ElementaryTypeName","src":"625:6:19"}],"id":6858,"name":"VariableDeclaration","src":"625:21:19"}],"id":6859,"name":"ParameterList","src":"589:58:19"},{"attributes":{"parameters":[null]},"children":[],"id":6863,"name":"ParameterList","src":"674:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6860,"name":"Identifier","src":"657:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6854,"type":"bytes32","value":"node"},"id":6861,"name":"Identifier","src":"668:4:19"}],"id":6862,"name":"ModifierInvocation","src":"657:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6852,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6864,"name":"Identifier","src":"684:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6854,"type":"bytes32","value":"node"},"id":6865,"name":"Identifier","src":"690:4:19"}],"id":6867,"name":"IndexAccess","src":"684:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6856,"type":"string calldata","value":"key"},"id":6866,"name":"Identifier","src":"696:3:19"}],"id":6868,"name":"IndexAccess","src":"684:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6858,"type":"string calldata","value":"value"},"id":6869,"name":"Identifier","src":"703:5:19"}],"id":6870,"name":"Assignment","src":"684:24:19"}],"id":6871,"name":"ExpressionStatement","src":"684:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6846,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":6872,"name":"Identifier","src":"723:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6854,"type":"bytes32","value":"node"},"id":6873,"name":"Identifier","src":"735:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6856,"type":"string calldata","value":"key"},"id":6874,"name":"Identifier","src":"741:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6856,"type":"string calldata","value":"key"},"id":6875,"name":"Identifier","src":"746:3:19"}],"id":6876,"name":"FunctionCall","src":"723:27:19"}],"id":6877,"name":"EmitStatement","src":"718:32:19"}],"id":6878,"name":"Block","src":"674:83:19"}],"id":6879,"name":"FunctionDefinition","src":"573:184:19"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":6913,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6895,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6880,"name":"ElementaryTypeName","src":"988:7:19"}],"id":6881,"name":"VariableDeclaration","src":"988:12:19"},{"attributes":{"constant":false,"name":"key","scope":6895,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6882,"name":"ElementaryTypeName","src":"1002:6:19"}],"id":6883,"name":"VariableDeclaration","src":"1002:19:19"}],"id":6884,"name":"ParameterList","src":"987:35:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6895,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6885,"name":"ElementaryTypeName","src":"1046:6:19"}],"id":6886,"name":"VariableDeclaration","src":"1046:13:19"}],"id":6887,"name":"ParameterList","src":"1045:15:19"},{"children":[{"attributes":{"functionReturnParameters":6887},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6852,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6888,"name":"Identifier","src":"1078:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6881,"type":"bytes32","value":"node"},"id":6889,"name":"Identifier","src":"1084:4:19"}],"id":6890,"name":"IndexAccess","src":"1078:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6883,"type":"string calldata","value":"key"},"id":6891,"name":"Identifier","src":"1090:3:19"}],"id":6892,"name":"IndexAccess","src":"1078:16:19"}],"id":6893,"name":"Return","src":"1071:23:19"}],"id":6894,"name":"Block","src":"1061:40:19"}],"id":6895,"name":"FunctionDefinition","src":"974:127:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6913,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6912,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6896,"name":"ElementaryTypeName","src":"1134:6:19"}],"id":6897,"name":"VariableDeclaration","src":"1134:18:19"}],"id":6898,"name":"ParameterList","src":"1133:20:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6912,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6899,"name":"ElementaryTypeName","src":"1174:4:19"}],"id":6900,"name":"VariableDeclaration","src":"1174:4:19"}],"id":6901,"name":"ParameterList","src":"1173:6:19"},{"children":[{"attributes":{"functionReturnParameters":6901},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6897,"type":"bytes4","value":"interfaceID"},"id":6902,"name":"Identifier","src":"1197:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6838,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":6903,"name":"Identifier","src":"1212:17:19"}],"id":6904,"name":"BinaryOperation","src":"1197:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10210,"type":"contract super TextResolver","value":"super"},"id":6905,"name":"Identifier","src":"1233:5:19"}],"id":6906,"name":"MemberAccess","src":"1233:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6897,"type":"bytes4","value":"interfaceID"},"id":6907,"name":"Identifier","src":"1257:11:19"}],"id":6908,"name":"FunctionCall","src":"1233:36:19"}],"id":6909,"name":"BinaryOperation","src":"1197:72:19"}],"id":6910,"name":"Return","src":"1190:79:19"}],"id":6911,"name":"Block","src":"1180:96:19"}],"id":6912,"name":"FunctionDefinition","src":"1107:169:19"}],"id":6913,"name":"ContractDefinition","src":"56:1222:19"}],"id":6914,"name":"SourceUnit","src":"0:1278:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[8619]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6915,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[8619],"name":"strings","scope":8620},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":8619,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":6920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6916,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":6917,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":6920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6918,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":6919,"name":"VariableDeclaration","src":"2663:9:20"}],"id":6920,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":6960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6921,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":6922,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":6960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6923,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":6924,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":6960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6925,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":6926,"name":"VariableDeclaration","src":"2722:8:20"}],"id":6927,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":6928,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6926,"type":"uint256","value":"len"},"id":6929,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6930,"name":"Literal","src":"2818:2:20"}],"id":6931,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6926,"type":"uint256","value":"len"},"id":6932,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6933,"name":"Literal","src":"2829:2:20"}],"id":6934,"name":"Assignment","src":"2822:9:20"}],"id":6935,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":6936,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6922,"type":"uint256","value":"dest"},"id":6937,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6938,"name":"Literal","src":"2933:2:20"}],"id":6939,"name":"Assignment","src":"2925:10:20"}],"id":6940,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"src"},"id":6941,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6942,"name":"Literal","src":"2956:2:20"}],"id":6943,"name":"Assignment","src":"2949:9:20"}],"id":6944,"name":"ExpressionStatement","src":"2949:9:20"}],"id":6945,"name":"Block","src":"2833:136:20"}],"id":6946,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[6948]},"children":[{"attributes":{"constant":false,"name":"mask","scope":6959,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6947,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":6948,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":6949,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6950,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6926,"type":"uint256","value":"len"},"id":6951,"name":"Identifier","src":"3036:3:20"}],"id":6952,"name":"BinaryOperation","src":"3031:8:20"}],"id":6953,"name":"TupleExpression","src":"3030:10:20"}],"id":6954,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6955,"name":"Literal","src":"3043:1:20"}],"id":6956,"name":"BinaryOperation","src":"3023:21:20"}],"id":6957,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":6948,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":6948,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":6958,"name":"InlineAssembly","src":"3054:173:20"}],"id":6959,"name":"Block","src":"2745:488:20"}],"id":6960,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6980,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6961,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":6962,"name":"VariableDeclaration","src":"3450:18:20"}],"id":6963,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":6980,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":6964,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":6965,"name":"VariableDeclaration","src":"3493:12:20"}],"id":6966,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[6968],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":6979,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6967,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":6968,"name":"VariableDeclaration","src":"3517:8:20"}],"id":6969,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":6968,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":6962,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":6970,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":6966},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6920,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":6971,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6972,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6962,"type":"string memory","value":"self"},"id":6973,"name":"Identifier","src":"3618:4:20"}],"id":6974,"name":"FunctionCall","src":"3612:11:20"}],"id":6975,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6968,"type":"uint256","value":"ptr"},"id":6976,"name":"Identifier","src":"3632:3:20"}],"id":6977,"name":"FunctionCall","src":"3606:30:20"}],"id":6978,"name":"Return","src":"3599:37:20"}],"id":6979,"name":"Block","src":"3507:136:20"}],"id":6980,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6981,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":6982,"name":"VariableDeclaration","src":"3852:12:20"}],"id":6983,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7106,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6984,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":6985,"name":"VariableDeclaration","src":"3889:4:20"}],"id":6986,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[6988],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7105,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6987,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":6988,"name":"VariableDeclaration","src":"3905:8:20"}],"id":6989,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":6990,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6991,"name":"Literal","src":"3935:1:20"}],"id":6992,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":6986},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6993,"name":"Literal","src":"3957:1:20"}],"id":6994,"name":"Return","src":"3950:8:20"}],"id":6995,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6996,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":6997,"name":"Identifier","src":"3977:4:20"}],"id":6998,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":6999,"name":"Literal","src":"3985:34:20"}],"id":7000,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7001,"name":"Literal","src":"4023:1:20"}],"id":7002,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7003,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":7004,"name":"Literal","src":"4047:2:20"}],"id":7005,"name":"Assignment","src":"4040:9:20"}],"id":7006,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7007,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7008,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7009,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7010,"name":"Identifier","src":"4083:4:20"}],"id":7011,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":7012,"name":"Literal","src":"4091:35:20"}],"id":7013,"name":"BinaryOperation","src":"4078:48:20"}],"id":7014,"name":"FunctionCall","src":"4070:57:20"}],"id":7015,"name":"Assignment","src":"4063:64:20"}],"id":7016,"name":"ExpressionStatement","src":"4063:64:20"}],"id":7017,"name":"Block","src":"4026:112:20"}],"id":7018,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7019,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7020,"name":"Identifier","src":"4156:4:20"}],"id":7021,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":7022,"name":"Literal","src":"4164:18:20"}],"id":7023,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7024,"name":"Literal","src":"4186:1:20"}],"id":7025,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7026,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7027,"name":"Literal","src":"4210:1:20"}],"id":7028,"name":"Assignment","src":"4203:8:20"}],"id":7029,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7030,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7031,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7032,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7033,"name":"Identifier","src":"4245:4:20"}],"id":7034,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":7035,"name":"Literal","src":"4253:19:20"}],"id":7036,"name":"BinaryOperation","src":"4240:32:20"}],"id":7037,"name":"FunctionCall","src":"4232:41:20"}],"id":7038,"name":"Assignment","src":"4225:48:20"}],"id":7039,"name":"ExpressionStatement","src":"4225:48:20"}],"id":7040,"name":"Block","src":"4189:95:20"}],"id":7041,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7042,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7043,"name":"Identifier","src":"4302:4:20"}],"id":7044,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":7045,"name":"Literal","src":"4310:10:20"}],"id":7046,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7047,"name":"Literal","src":"4324:1:20"}],"id":7048,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7049,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7050,"name":"Literal","src":"4348:1:20"}],"id":7051,"name":"Assignment","src":"4341:8:20"}],"id":7052,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7053,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7054,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7055,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7056,"name":"Identifier","src":"4383:4:20"}],"id":7057,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":7058,"name":"Literal","src":"4391:11:20"}],"id":7059,"name":"BinaryOperation","src":"4378:24:20"}],"id":7060,"name":"FunctionCall","src":"4370:33:20"}],"id":7061,"name":"Assignment","src":"4363:40:20"}],"id":7062,"name":"ExpressionStatement","src":"4363:40:20"}],"id":7063,"name":"Block","src":"4327:87:20"}],"id":7064,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7065,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7066,"name":"Identifier","src":"4432:4:20"}],"id":7067,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":7068,"name":"Literal","src":"4440:6:20"}],"id":7069,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7070,"name":"Literal","src":"4450:1:20"}],"id":7071,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7072,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7073,"name":"Literal","src":"4474:1:20"}],"id":7074,"name":"Assignment","src":"4467:8:20"}],"id":7075,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7076,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7077,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7078,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7079,"name":"Identifier","src":"4509:4:20"}],"id":7080,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":7081,"name":"Literal","src":"4517:7:20"}],"id":7082,"name":"BinaryOperation","src":"4504:20:20"}],"id":7083,"name":"FunctionCall","src":"4496:29:20"}],"id":7084,"name":"Assignment","src":"4489:36:20"}],"id":7085,"name":"ExpressionStatement","src":"4489:36:20"}],"id":7086,"name":"Block","src":"4453:83:20"}],"id":7087,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7088,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7089,"name":"Identifier","src":"4554:4:20"}],"id":7090,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7091,"name":"Literal","src":"4562:4:20"}],"id":7092,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7093,"name":"Literal","src":"4570:1:20"}],"id":7094,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7095,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7096,"name":"Literal","src":"4594:1:20"}],"id":7097,"name":"Assignment","src":"4587:8:20"}],"id":7098,"name":"ExpressionStatement","src":"4587:8:20"}],"id":7099,"name":"Block","src":"4573:33:20"}],"id":7100,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":6986},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7101,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7102,"name":"Identifier","src":"4627:3:20"}],"id":7103,"name":"BinaryOperation","src":"4622:8:20"}],"id":7104,"name":"Return","src":"4615:15:20"}],"id":7105,"name":"Block","src":"3895:742:20"}],"id":7106,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7123,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7107,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":7108,"name":"VariableDeclaration","src":"4963:12:20"}],"id":7109,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7123,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7110,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":7111,"name":"VariableDeclaration","src":"5000:16:20"}],"id":7112,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":7108,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":7111,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":7113,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7111,"type":"struct strings.slice memory","value":"ret"},"id":7114,"name":"Identifier","src":"5286:3:20"}],"id":7116,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[7106,7256],"referencedDeclaration":7106,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":7117,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7108,"type":"bytes32","value":"self"},"id":7118,"name":"Identifier","src":"5301:4:20"}],"id":7119,"name":"FunctionCall","src":"5297:9:20"}],"id":7120,"name":"Assignment","src":"5286:20:20"}],"id":7121,"name":"ExpressionStatement","src":"5286:20:20"}],"id":7122,"name":"Block","src":"5018:295:20"}],"id":7123,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7138,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7124,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":7125,"name":"VariableDeclaration","src":"5528:17:20"}],"id":7126,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7138,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7127,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":7128,"name":"VariableDeclaration","src":"5570:12:20"}],"id":7129,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":7129},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6920,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7130,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7125,"type":"struct strings.slice memory","value":"self"},"id":7131,"name":"Identifier","src":"5607:4:20"}],"id":7132,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7125,"type":"struct strings.slice memory","value":"self"},"id":7133,"name":"Identifier","src":"5618:4:20"}],"id":7134,"name":"MemberAccess","src":"5618:9:20"}],"id":7135,"name":"FunctionCall","src":"5601:27:20"}],"id":7136,"name":"Return","src":"5594:34:20"}],"id":7137,"name":"Block","src":"5584:51:20"}],"id":7138,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7168,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7139,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":7140,"name":"VariableDeclaration","src":"5825:17:20"}],"id":7141,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7168,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7142,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":7143,"name":"VariableDeclaration","src":"5867:13:20"}],"id":7144,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[7146]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7167,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7145,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":7146,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7147,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":7148,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7140,"type":"struct strings.slice memory","value":"self"},"id":7149,"name":"Identifier","src":"5923:4:20"}],"id":7150,"name":"MemberAccess","src":"5923:9:20"}],"id":7151,"name":"FunctionCall","src":"5912:21:20"}],"id":7152,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[7154],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":7167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7153,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":7154,"name":"VariableDeclaration","src":"5943:11:20"}],"id":7155,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":7154,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":7146,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":7156,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7157,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7154,"type":"uint256","value":"retptr"},"id":7158,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7140,"type":"struct strings.slice memory","value":"self"},"id":7159,"name":"Identifier","src":"6024:4:20"}],"id":7160,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7140,"type":"struct strings.slice memory","value":"self"},"id":7161,"name":"Identifier","src":"6035:4:20"}],"id":7162,"name":"MemberAccess","src":"6035:9:20"}],"id":7163,"name":"FunctionCall","src":"6009:36:20"}],"id":7164,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":7144},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7146,"type":"string memory","value":"ret"},"id":7165,"name":"Identifier","src":"6062:3:20"}],"id":7166,"name":"Return","src":"6055:10:20"}],"id":7167,"name":"Block","src":"5882:190:20"}],"id":7168,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7256,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7169,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":7170,"name":"VariableDeclaration","src":"6476:17:20"}],"id":7171,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":7256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7172,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":7173,"name":"VariableDeclaration","src":"6518:6:20"}],"id":7174,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[7176]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7175,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":7176,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7170,"type":"struct strings.slice memory","value":"self"},"id":7177,"name":"Identifier","src":"6622:4:20"}],"id":7178,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":7179,"name":"Literal","src":"6634:2:20"}],"id":7180,"name":"BinaryOperation","src":"6622:14:20"}],"id":7181,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[7183]},"children":[{"attributes":{"constant":false,"name":"end","scope":7255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7182,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":7183,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7184,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7170,"type":"struct strings.slice memory","value":"self"},"id":7185,"name":"Identifier","src":"6663:4:20"}],"id":7186,"name":"MemberAccess","src":"6663:9:20"}],"id":7187,"name":"BinaryOperation","src":"6657:15:20"}],"id":7188,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7173,"type":"uint256","value":"l"},"id":7189,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7190,"name":"Literal","src":"6691:1:20"}],"id":7191,"name":"Assignment","src":"6687:5:20"}],"id":7192,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7193,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7183,"type":"uint256","value":"end"},"id":7194,"name":"Identifier","src":"6700:3:20"}],"id":7195,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7173,"type":"uint256","value":"l"},"id":7196,"name":"Identifier","src":"6705:1:20"}],"id":7197,"name":"UnaryOperation","src":"6705:3:20"}],"id":7198,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[7200],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7253,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7199,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":7200,"name":"VariableDeclaration","src":"6724:7:20"}],"id":7201,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7200,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":7176,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":7202,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7203,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7204,"name":"Literal","src":"6805:4:20"}],"id":7205,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7206,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7207,"name":"Literal","src":"6836:1:20"}],"id":7208,"name":"Assignment","src":"6829:8:20"}],"id":7209,"name":"ExpressionStatement","src":"6829:8:20"}],"id":7210,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7211,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7212,"name":"Literal","src":"6866:4:20"}],"id":7213,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7214,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7215,"name":"Literal","src":"6897:1:20"}],"id":7216,"name":"Assignment","src":"6890:8:20"}],"id":7217,"name":"ExpressionStatement","src":"6890:8:20"}],"id":7218,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7219,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7220,"name":"Literal","src":"6927:4:20"}],"id":7221,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7222,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7223,"name":"Literal","src":"6958:1:20"}],"id":7224,"name":"Assignment","src":"6951:8:20"}],"id":7225,"name":"ExpressionStatement","src":"6951:8:20"}],"id":7226,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7227,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":7228,"name":"Literal","src":"6988:4:20"}],"id":7229,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7230,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7231,"name":"Literal","src":"7019:1:20"}],"id":7232,"name":"Assignment","src":"7012:8:20"}],"id":7233,"name":"ExpressionStatement","src":"7012:8:20"}],"id":7234,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7235,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":7236,"name":"Literal","src":"7049:4:20"}],"id":7237,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7238,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7239,"name":"Literal","src":"7080:1:20"}],"id":7240,"name":"Assignment","src":"7073:8:20"}],"id":7241,"name":"ExpressionStatement","src":"7073:8:20"}],"id":7242,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7243,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":7244,"name":"Literal","src":"7127:1:20"}],"id":7245,"name":"Assignment","src":"7120:8:20"}],"id":7246,"name":"ExpressionStatement","src":"7120:8:20"}],"id":7247,"name":"Block","src":"7102:41:20"}],"id":7248,"name":"IfStatement","src":"7041:102:20"}],"id":7249,"name":"IfStatement","src":"6980:163:20"}],"id":7250,"name":"IfStatement","src":"6919:224:20"}],"id":7251,"name":"IfStatement","src":"6858:285:20"}],"id":7252,"name":"IfStatement","src":"6797:346:20"}],"id":7253,"name":"Block","src":"6710:443:20"}],"id":7254,"name":"ForStatement","src":"6682:471:20"}],"id":7255,"name":"Block","src":"6526:633:20"}],"id":7256,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7269,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7257,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":7258,"name":"VariableDeclaration","src":"7367:17:20"}],"id":7259,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7269,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7260,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":7261,"name":"VariableDeclaration","src":"7409:4:20"}],"id":7262,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":7262},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7258,"type":"struct strings.slice memory","value":"self"},"id":7263,"name":"Identifier","src":"7432:4:20"}],"id":7264,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7265,"name":"Literal","src":"7445:1:20"}],"id":7266,"name":"BinaryOperation","src":"7432:14:20"}],"id":7267,"name":"Return","src":"7425:21:20"}],"id":7268,"name":"Block","src":"7415:38:20"}],"id":7269,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7398,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7270,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":7271,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":7398,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7272,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":7273,"name":"VariableDeclaration","src":"7917:18:20"}],"id":7274,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7398,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":7275,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":7276,"name":"VariableDeclaration","src":"7960:3:20"}],"id":7277,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[7279]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":7397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7278,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":7279,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7271,"type":"struct strings.slice memory","value":"self"},"id":7280,"name":"Identifier","src":"7991:4:20"}],"id":7281,"name":"MemberAccess","src":"7991:9:20"}],"id":7282,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7273,"type":"struct strings.slice memory","value":"other"},"id":7283,"name":"Identifier","src":"8014:5:20"}],"id":7284,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7271,"type":"struct strings.slice memory","value":"self"},"id":7285,"name":"Identifier","src":"8027:4:20"}],"id":7286,"name":"MemberAccess","src":"8027:9:20"}],"id":7287,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"shortest"},"id":7288,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7273,"type":"struct strings.slice memory","value":"other"},"id":7289,"name":"Identifier","src":"8061:5:20"}],"id":7290,"name":"MemberAccess","src":"8061:10:20"}],"id":7291,"name":"Assignment","src":"8050:21:20"}],"id":7292,"name":"ExpressionStatement","src":"8050:21:20"}],"id":7293,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[7295]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7294,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":7295,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7271,"type":"struct strings.slice memory","value":"self"},"id":7296,"name":"Identifier","src":"8097:4:20"}],"id":7297,"name":"MemberAccess","src":"8097:9:20"}],"id":7298,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[7300]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":7397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7299,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":7300,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7273,"type":"struct strings.slice memory","value":"other"},"id":7301,"name":"Identifier","src":"8132:5:20"}],"id":7302,"name":"MemberAccess","src":"8132:10:20"}],"id":7303,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[7305]},"children":[{"attributes":{"constant":false,"name":"idx","scope":7386,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7304,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":7305,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7306,"name":"Literal","src":"8168:1:20"}],"id":7307,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"uint256","value":"idx"},"id":7308,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"shortest"},"id":7309,"name":"Identifier","src":"8177:8:20"}],"id":7310,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"uint256","value":"idx"},"id":7311,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7312,"name":"Literal","src":"8194:2:20"}],"id":7313,"name":"Assignment","src":"8187:9:20"}],"id":7314,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[7316],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":7385,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7315,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":7316,"name":"VariableDeclaration","src":"8212:6:20"}],"id":7317,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[7319],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7385,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7318,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":7319,"name":"VariableDeclaration","src":"8232:6:20"}],"id":7320,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":7316,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":7295,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":7319,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":7300,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":7321,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7316,"type":"uint256","value":"a"},"id":7322,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7319,"type":"uint256","value":"b"},"id":7323,"name":"Identifier","src":"8371:1:20"}],"id":7324,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[7326]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7375,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7325,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":7326,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7327,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7328,"name":"Literal","src":"8477:1:20"}],"id":7329,"name":"UnaryOperation","src":"8476:2:20"}],"id":7330,"name":"FunctionCall","src":"8468:11:20"}],"id":7331,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"shortest"},"id":7332,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7333,"name":"Literal","src":"8525:2:20"}],"id":7334,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7326,"type":"uint256","value":"mask"},"id":7335,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7336,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7337,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7338,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"shortest"},"id":7339,"name":"Identifier","src":"8576:8:20"}],"id":7340,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"uint256","value":"idx"},"id":7341,"name":"Identifier","src":"8587:3:20"}],"id":7342,"name":"BinaryOperation","src":"8571:19:20"}],"id":7343,"name":"TupleExpression","src":"8570:21:20"}],"id":7344,"name":"BinaryOperation","src":"8566:25:20"}],"id":7345,"name":"TupleExpression","src":"8565:27:20"}],"id":7346,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7347,"name":"Literal","src":"8595:1:20"}],"id":7348,"name":"BinaryOperation","src":"8560:36:20"}],"id":7349,"name":"TupleExpression","src":"8559:38:20"}],"id":7350,"name":"UnaryOperation","src":"8558:39:20"}],"id":7351,"name":"Assignment","src":"8551:46:20"}],"id":7352,"name":"ExpressionStatement","src":"8551:46:20"}],"id":7353,"name":"Block","src":"8529:87:20"}],"id":7354,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[7356]},"children":[{"attributes":{"constant":false,"name":"diff","scope":7375,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7355,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":7356,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7316,"type":"uint256","value":"a"},"id":7357,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7326,"type":"uint256","value":"mask"},"id":7358,"name":"Identifier","src":"8653:4:20"}],"id":7359,"name":"BinaryOperation","src":"8649:8:20"}],"id":7360,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7319,"type":"uint256","value":"b"},"id":7361,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7326,"type":"uint256","value":"mask"},"id":7362,"name":"Identifier","src":"8666:4:20"}],"id":7363,"name":"BinaryOperation","src":"8662:8:20"}],"id":7364,"name":"TupleExpression","src":"8661:10:20"}],"id":7365,"name":"BinaryOperation","src":"8648:23:20"}],"id":7366,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7356,"type":"uint256","value":"diff"},"id":7367,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7368,"name":"Literal","src":"8701:1:20"}],"id":7369,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":7277},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7370,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7356,"type":"uint256","value":"diff"},"id":7371,"name":"Identifier","src":"8735:4:20"}],"id":7372,"name":"FunctionCall","src":"8731:9:20"}],"id":7373,"name":"Return","src":"8724:16:20"}],"id":7374,"name":"IfStatement","src":"8689:51:20"}],"id":7375,"name":"Block","src":"8374:381:20"}],"id":7376,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7295,"type":"uint256","value":"selfptr"},"id":7377,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7378,"name":"Literal","src":"8779:2:20"}],"id":7379,"name":"Assignment","src":"8768:13:20"}],"id":7380,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7300,"type":"uint256","value":"otherptr"},"id":7381,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7382,"name":"Literal","src":"8807:2:20"}],"id":7383,"name":"Assignment","src":"8795:14:20"}],"id":7384,"name":"ExpressionStatement","src":"8795:14:20"}],"id":7385,"name":"Block","src":"8198:622:20"}],"id":7386,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":7277},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7387,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7271,"type":"struct strings.slice memory","value":"self"},"id":7388,"name":"Identifier","src":"8840:4:20"}],"id":7389,"name":"MemberAccess","src":"8840:9:20"}],"id":7390,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7391,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7273,"type":"struct strings.slice memory","value":"other"},"id":7392,"name":"Identifier","src":"8857:5:20"}],"id":7393,"name":"MemberAccess","src":"8857:10:20"}],"id":7394,"name":"FunctionCall","src":"8853:15:20"}],"id":7395,"name":"BinaryOperation","src":"8836:32:20"}],"id":7396,"name":"Return","src":"8829:39:20"}],"id":7397,"name":"Block","src":"7965:910:20"}],"id":7398,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7415,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7399,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":7400,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":7415,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7401,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":7402,"name":"VariableDeclaration","src":"9154:18:20"}],"id":7403,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7415,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7404,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":7405,"name":"VariableDeclaration","src":"9197:4:20"}],"id":7406,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":7406},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7398,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":7407,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7400,"type":"struct strings.slice memory","value":"self"},"id":7408,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"struct strings.slice memory","value":"other"},"id":7409,"name":"Identifier","src":"9234:5:20"}],"id":7410,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7411,"name":"Literal","src":"9244:1:20"}],"id":7412,"name":"BinaryOperation","src":"9220:25:20"}],"id":7413,"name":"Return","src":"9213:32:20"}],"id":7414,"name":"Block","src":"9203:49:20"}],"id":7415,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7533,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7416,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":7417,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":7533,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7418,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":7419,"name":"VariableDeclaration","src":"9582:17:20"}],"id":7420,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7533,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7421,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":7422,"name":"VariableDeclaration","src":"9624:12:20"}],"id":7423,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7424,"name":"Identifier","src":"9648:4:20"}],"id":7426,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7427,"name":"Identifier","src":"9660:4:20"}],"id":7428,"name":"MemberAccess","src":"9660:9:20"}],"id":7429,"name":"Assignment","src":"9648:21:20"}],"id":7430,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7431,"name":"Identifier","src":"9684:4:20"}],"id":7432,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7433,"name":"Literal","src":"9697:1:20"}],"id":7434,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7435,"name":"Identifier","src":"9714:4:20"}],"id":7437,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7438,"name":"Literal","src":"9726:1:20"}],"id":7439,"name":"Assignment","src":"9714:13:20"}],"id":7440,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":7423},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7441,"name":"Identifier","src":"9748:4:20"}],"id":7442,"name":"Return","src":"9741:11:20"}],"id":7443,"name":"Block","src":"9700:63:20"}],"id":7444,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[7446],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":7532,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7445,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":7446,"name":"VariableDeclaration","src":"9773:6:20"}],"id":7447,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[7449],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7532,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7448,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":7449,"name":"VariableDeclaration","src":"9789:6:20"}],"id":7450,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7449,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":7417,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":7451,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7449,"type":"uint256","value":"b"},"id":7452,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7453,"name":"Literal","src":"9949:4:20"}],"id":7454,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7455,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7456,"name":"Literal","src":"9973:1:20"}],"id":7457,"name":"Assignment","src":"9969:5:20"}],"id":7458,"name":"ExpressionStatement","src":"9969:5:20"}],"id":7459,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7449,"type":"uint256","value":"b"},"id":7460,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7461,"name":"Literal","src":"9999:4:20"}],"id":7462,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7463,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7464,"name":"Literal","src":"10023:1:20"}],"id":7465,"name":"Assignment","src":"10019:5:20"}],"id":7466,"name":"ExpressionStatement","src":"10019:5:20"}],"id":7467,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7449,"type":"uint256","value":"b"},"id":7468,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7469,"name":"Literal","src":"10049:4:20"}],"id":7470,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7471,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7472,"name":"Literal","src":"10073:1:20"}],"id":7473,"name":"Assignment","src":"10069:5:20"}],"id":7474,"name":"ExpressionStatement","src":"10069:5:20"}],"id":7475,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7476,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7477,"name":"Literal","src":"10109:1:20"}],"id":7478,"name":"Assignment","src":"10105:5:20"}],"id":7479,"name":"ExpressionStatement","src":"10105:5:20"}],"id":7480,"name":"Block","src":"10091:30:20"}],"id":7481,"name":"IfStatement","src":"10041:80:20"}],"id":7482,"name":"IfStatement","src":"9991:130:20"}],"id":7483,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7484,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7485,"name":"Identifier","src":"10181:4:20"}],"id":7486,"name":"MemberAccess","src":"10181:9:20"}],"id":7487,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7488,"name":"Identifier","src":"10206:4:20"}],"id":7490,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7491,"name":"Identifier","src":"10218:4:20"}],"id":7492,"name":"MemberAccess","src":"10218:9:20"}],"id":7493,"name":"Assignment","src":"10206:21:20"}],"id":7494,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7495,"name":"Identifier","src":"10241:4:20"}],"id":7497,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7498,"name":"Identifier","src":"10254:4:20"}],"id":7499,"name":"MemberAccess","src":"10254:9:20"}],"id":7500,"name":"Assignment","src":"10241:22:20"}],"id":7501,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7502,"name":"Identifier","src":"10277:4:20"}],"id":7504,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7505,"name":"Literal","src":"10289:1:20"}],"id":7506,"name":"Assignment","src":"10277:13:20"}],"id":7507,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":7423},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7508,"name":"Identifier","src":"10311:4:20"}],"id":7509,"name":"Return","src":"10304:11:20"}],"id":7510,"name":"Block","src":"10192:134:20"}],"id":7511,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7512,"name":"Identifier","src":"10336:4:20"}],"id":7514,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7515,"name":"Identifier","src":"10349:1:20"}],"id":7516,"name":"Assignment","src":"10336:14:20"}],"id":7517,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7518,"name":"Identifier","src":"10360:4:20"}],"id":7520,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7521,"name":"Identifier","src":"10373:1:20"}],"id":7522,"name":"Assignment","src":"10360:14:20"}],"id":7523,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7524,"name":"Identifier","src":"10384:4:20"}],"id":7526,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7527,"name":"Identifier","src":"10396:1:20"}],"id":7528,"name":"Assignment","src":"10384:13:20"}],"id":7529,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":7423},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7530,"name":"Identifier","src":"10414:4:20"}],"id":7531,"name":"Return","src":"10407:11:20"}],"id":7532,"name":"Block","src":"9638:787:20"}],"id":7533,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7546,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7534,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":7535,"name":"VariableDeclaration","src":"10683:17:20"}],"id":7536,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7546,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7537,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":7538,"name":"VariableDeclaration","src":"10725:16:20"}],"id":7539,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[7533,7546],"referencedDeclaration":7533,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":7540,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7535,"type":"struct strings.slice memory","value":"self"},"id":7541,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7538,"type":"struct strings.slice memory","value":"ret"},"id":7542,"name":"Identifier","src":"10768:3:20"}],"id":7543,"name":"FunctionCall","src":"10753:19:20"}],"id":7544,"name":"ExpressionStatement","src":"10753:19:20"}],"id":7545,"name":"Block","src":"10743:36:20"}],"id":7546,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7693,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7547,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":7548,"name":"VariableDeclaration","src":"10988:17:20"}],"id":7549,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7693,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7550,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":7551,"name":"VariableDeclaration","src":"11030:8:20"}],"id":7552,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7548,"type":"struct strings.slice memory","value":"self"},"id":7553,"name":"Identifier","src":"11054:4:20"}],"id":7554,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7555,"name":"Literal","src":"11067:1:20"}],"id":7556,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":7552},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7557,"name":"Literal","src":"11091:1:20"}],"id":7558,"name":"Return","src":"11084:8:20"}],"id":7559,"name":"Block","src":"11070:33:20"}],"id":7560,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[7562],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7561,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":7562,"name":"VariableDeclaration","src":"11113:9:20"}],"id":7563,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[7565],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7564,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":7565,"name":"VariableDeclaration","src":"11132:11:20"}],"id":7566,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[7568]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7567,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":7568,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7569,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":7570,"name":"Literal","src":"11173:3:20"}],"id":7571,"name":"BinaryOperation","src":"11168:8:20"}],"id":7572,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":7562,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":7548,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":7573,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[7575]},"children":[{"attributes":{"constant":false,"name":"b","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7574,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":7575,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7562,"type":"uint256","value":"word"},"id":7576,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7568,"type":"uint256","value":"divisor"},"id":7577,"name":"Identifier","src":"11303:7:20"}],"id":7578,"name":"BinaryOperation","src":"11296:14:20"}],"id":7579,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7580,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7581,"name":"Literal","src":"11328:4:20"}],"id":7582,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7583,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7584,"name":"Identifier","src":"11354:1:20"}],"id":7585,"name":"Assignment","src":"11348:7:20"}],"id":7586,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7587,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7588,"name":"Literal","src":"11378:1:20"}],"id":7589,"name":"Assignment","src":"11369:10:20"}],"id":7590,"name":"ExpressionStatement","src":"11369:10:20"}],"id":7591,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7592,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7593,"name":"Literal","src":"11404:4:20"}],"id":7594,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7595,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7596,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":7597,"name":"Literal","src":"11434:4:20"}],"id":7598,"name":"BinaryOperation","src":"11430:8:20"}],"id":7599,"name":"Assignment","src":"11424:14:20"}],"id":7600,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7601,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7602,"name":"Literal","src":"11461:1:20"}],"id":7603,"name":"Assignment","src":"11452:10:20"}],"id":7604,"name":"ExpressionStatement","src":"11452:10:20"}],"id":7605,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7606,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7607,"name":"Literal","src":"11487:4:20"}],"id":7608,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7609,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7610,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":7611,"name":"Literal","src":"11517:4:20"}],"id":7612,"name":"BinaryOperation","src":"11513:8:20"}],"id":7613,"name":"Assignment","src":"11507:14:20"}],"id":7614,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7615,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7616,"name":"Literal","src":"11544:1:20"}],"id":7617,"name":"Assignment","src":"11535:10:20"}],"id":7618,"name":"ExpressionStatement","src":"11535:10:20"}],"id":7619,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7620,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7621,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":7622,"name":"Literal","src":"11586:4:20"}],"id":7623,"name":"BinaryOperation","src":"11582:8:20"}],"id":7624,"name":"Assignment","src":"11576:14:20"}],"id":7625,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7626,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7627,"name":"Literal","src":"11613:1:20"}],"id":7628,"name":"Assignment","src":"11604:10:20"}],"id":7629,"name":"ExpressionStatement","src":"11604:10:20"}],"id":7630,"name":"Block","src":"11562:63:20"}],"id":7631,"name":"IfStatement","src":"11479:146:20"}],"id":7632,"name":"IfStatement","src":"11396:229:20"}],"id":7633,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7634,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7548,"type":"struct strings.slice memory","value":"self"},"id":7635,"name":"Identifier","src":"11690:4:20"}],"id":7636,"name":"MemberAccess","src":"11690:9:20"}],"id":7637,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":7552},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7638,"name":"Literal","src":"11722:1:20"}],"id":7639,"name":"Return","src":"11715:8:20"}],"id":7640,"name":"Block","src":"11701:33:20"}],"id":7641,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[7643]},"children":[{"attributes":{"constant":false,"name":"i","scope":7689,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7642,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":7643,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7644,"name":"Literal","src":"11758:1:20"}],"id":7645,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7643,"type":"uint256","value":"i"},"id":7646,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7647,"name":"Identifier","src":"11765:6:20"}],"id":7648,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7643,"type":"uint256","value":"i"},"id":7649,"name":"Identifier","src":"11773:1:20"}],"id":7650,"name":"UnaryOperation","src":"11773:3:20"}],"id":7651,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7568,"type":"uint256","value":"divisor"},"id":7652,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7568,"type":"uint256","value":"divisor"},"id":7653,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7654,"name":"Literal","src":"11812:3:20"}],"id":7655,"name":"BinaryOperation","src":"11802:13:20"}],"id":7656,"name":"Assignment","src":"11792:23:20"}],"id":7657,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7658,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7562,"type":"uint256","value":"word"},"id":7659,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7568,"type":"uint256","value":"divisor"},"id":7660,"name":"Identifier","src":"11841:7:20"}],"id":7661,"name":"BinaryOperation","src":"11834:14:20"}],"id":7662,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":7663,"name":"Literal","src":"11852:4:20"}],"id":7664,"name":"BinaryOperation","src":"11833:23:20"}],"id":7665,"name":"Assignment","src":"11829:27:20"}],"id":7666,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7667,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":7668,"name":"Literal","src":"11878:4:20"}],"id":7669,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7670,"name":"Literal","src":"11886:4:20"}],"id":7671,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":7552},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7672,"name":"Literal","src":"11959:1:20"}],"id":7673,"name":"Return","src":"11952:8:20"}],"id":7674,"name":"Block","src":"11892:83:20"}],"id":7675,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7676,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7677,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7678,"name":"Literal","src":"12001:2:20"}],"id":7679,"name":"BinaryOperation","src":"11995:8:20"}],"id":7680,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7681,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":7682,"name":"Literal","src":"12012:4:20"}],"id":7683,"name":"BinaryOperation","src":"12008:8:20"}],"id":7684,"name":"TupleExpression","src":"12007:10:20"}],"id":7685,"name":"BinaryOperation","src":"11994:23:20"}],"id":7686,"name":"Assignment","src":"11988:29:20"}],"id":7687,"name":"ExpressionStatement","src":"11988:29:20"}],"id":7688,"name":"Block","src":"11778:250:20"}],"id":7689,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":7552},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7690,"name":"Identifier","src":"12045:3:20"}],"id":7691,"name":"Return","src":"12038:10:20"}],"id":7692,"name":"Block","src":"11040:1015:20"}],"id":7693,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7702,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7694,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":7695,"name":"VariableDeclaration","src":"12222:17:20"}],"id":7696,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7702,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7697,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":7698,"name":"VariableDeclaration","src":"12264:11:20"}],"id":7699,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":7698,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":7695,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":7695,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":7700,"name":"InlineAssembly","src":"12287:84:20"}],"id":7701,"name":"Block","src":"12277:100:20"}],"id":7702,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7736,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7703,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":7704,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7736,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7705,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":7706,"name":"VariableDeclaration","src":"12665:19:20"}],"id":7707,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7736,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7708,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":7709,"name":"VariableDeclaration","src":"12709:4:20"}],"id":7710,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7704,"type":"struct strings.slice memory","value":"self"},"id":7711,"name":"Identifier","src":"12729:4:20"}],"id":7712,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7706,"type":"struct strings.slice memory","value":"needle"},"id":7713,"name":"Identifier","src":"12741:6:20"}],"id":7714,"name":"MemberAccess","src":"12741:11:20"}],"id":7715,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":7710},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7716,"name":"Literal","src":"12775:5:20"}],"id":7717,"name":"Return","src":"12768:12:20"}],"id":7718,"name":"Block","src":"12754:37:20"}],"id":7719,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7704,"type":"struct strings.slice memory","value":"self"},"id":7720,"name":"Identifier","src":"12805:4:20"}],"id":7721,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7706,"type":"struct strings.slice memory","value":"needle"},"id":7722,"name":"Identifier","src":"12818:6:20"}],"id":7723,"name":"MemberAccess","src":"12818:11:20"}],"id":7724,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":7710},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7725,"name":"Literal","src":"12852:4:20"}],"id":7726,"name":"Return","src":"12845:11:20"}],"id":7727,"name":"Block","src":"12831:36:20"}],"id":7728,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[7730],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":7735,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7729,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":7730,"name":"VariableDeclaration","src":"12877:10:20"}],"id":7731,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":7706,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":7704,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":7730,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":7706,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7732,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":7710},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7730,"type":"bool","value":"equal"},"id":7733,"name":"Identifier","src":"13159:5:20"}],"id":7734,"name":"Return","src":"13152:12:20"}],"id":7735,"name":"Block","src":"12715:456:20"}],"id":7736,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7737,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":7738,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7739,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":7740,"name":"VariableDeclaration","src":"13478:19:20"}],"id":7741,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7742,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":7743,"name":"VariableDeclaration","src":"13522:12:20"}],"id":7744,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7745,"name":"Identifier","src":"13550:4:20"}],"id":7746,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"struct strings.slice memory","value":"needle"},"id":7747,"name":"Identifier","src":"13562:6:20"}],"id":7748,"name":"MemberAccess","src":"13562:11:20"}],"id":7749,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":7744},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7750,"name":"Identifier","src":"13596:4:20"}],"id":7751,"name":"Return","src":"13589:11:20"}],"id":7752,"name":"Block","src":"13575:36:20"}],"id":7753,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[7755]},"children":[{"attributes":{"constant":false,"name":"equal","scope":7785,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7754,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":7755,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7756,"name":"Literal","src":"13634:4:20"}],"id":7757,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7758,"name":"Identifier","src":"13652:4:20"}],"id":7759,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"struct strings.slice memory","value":"needle"},"id":7760,"name":"Identifier","src":"13665:6:20"}],"id":7761,"name":"MemberAccess","src":"13665:11:20"}],"id":7762,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":7740,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":7738,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"equal":{"declaration":7755,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}},{"needle":{"declaration":7740,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7763,"name":"InlineAssembly","src":"13692:266:20"}],"id":7764,"name":"Block","src":"13678:290:20"}],"id":7765,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"bool","value":"equal"},"id":7766,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7767,"name":"Identifier","src":"14003:4:20"}],"id":7769,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"struct strings.slice memory","value":"needle"},"id":7770,"name":"Identifier","src":"14016:6:20"}],"id":7771,"name":"MemberAccess","src":"14016:11:20"}],"id":7772,"name":"Assignment","src":"14003:24:20"}],"id":7773,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7774,"name":"Identifier","src":"14041:4:20"}],"id":7776,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"struct strings.slice memory","value":"needle"},"id":7777,"name":"Identifier","src":"14054:6:20"}],"id":7778,"name":"MemberAccess","src":"14054:11:20"}],"id":7779,"name":"Assignment","src":"14041:24:20"}],"id":7780,"name":"ExpressionStatement","src":"14041:24:20"}],"id":7781,"name":"Block","src":"13989:87:20"}],"id":7782,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":7744},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7783,"name":"Identifier","src":"14093:4:20"}],"id":7784,"name":"Return","src":"14086:11:20"}],"id":7785,"name":"Block","src":"13536:568:20"}],"id":7786,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7830,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7787,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":7788,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7830,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7789,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":7790,"name":"VariableDeclaration","src":"14391:19:20"}],"id":7791,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7830,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7792,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":7793,"name":"VariableDeclaration","src":"14435:4:20"}],"id":7794,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7795,"name":"Identifier","src":"14455:4:20"}],"id":7796,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7797,"name":"Identifier","src":"14467:6:20"}],"id":7798,"name":"MemberAccess","src":"14467:11:20"}],"id":7799,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7800,"name":"Literal","src":"14501:5:20"}],"id":7801,"name":"Return","src":"14494:12:20"}],"id":7802,"name":"Block","src":"14480:37:20"}],"id":7803,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[7805]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7829,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7804,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":7805,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7806,"name":"Identifier","src":"14542:4:20"}],"id":7807,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7808,"name":"Identifier","src":"14554:4:20"}],"id":7809,"name":"MemberAccess","src":"14554:9:20"}],"id":7810,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7811,"name":"Identifier","src":"14566:6:20"}],"id":7812,"name":"MemberAccess","src":"14566:11:20"}],"id":7813,"name":"BinaryOperation","src":"14542:35:20"}],"id":7814,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7805,"type":"uint256","value":"selfptr"},"id":7815,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7816,"name":"Identifier","src":"14603:6:20"}],"id":7817,"name":"MemberAccess","src":"14603:11:20"}],"id":7818,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7819,"name":"Literal","src":"14637:4:20"}],"id":7820,"name":"Return","src":"14630:11:20"}],"id":7821,"name":"Block","src":"14616:36:20"}],"id":7822,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[7824],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":7829,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7823,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":7824,"name":"VariableDeclaration","src":"14662:10:20"}],"id":7825,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":7790,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":7824,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":7790,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":7805,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7826,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7824,"type":"bool","value":"equal"},"id":7827,"name":"Identifier","src":"14895:5:20"}],"id":7828,"name":"Return","src":"14888:12:20"}],"id":7829,"name":"Block","src":"14441:466:20"}],"id":7830,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7883,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7831,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":7832,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7883,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7833,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":7834,"name":"VariableDeclaration","src":"15205:19:20"}],"id":7835,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7883,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7836,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":7837,"name":"VariableDeclaration","src":"15249:12:20"}],"id":7838,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7839,"name":"Identifier","src":"15277:4:20"}],"id":7840,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7834,"type":"struct strings.slice memory","value":"needle"},"id":7841,"name":"Identifier","src":"15289:6:20"}],"id":7842,"name":"MemberAccess","src":"15289:11:20"}],"id":7843,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":7838},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7844,"name":"Identifier","src":"15323:4:20"}],"id":7845,"name":"Return","src":"15316:11:20"}],"id":7846,"name":"Block","src":"15302:36:20"}],"id":7847,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[7849]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7882,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7848,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":7849,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7850,"name":"Identifier","src":"15363:4:20"}],"id":7851,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7852,"name":"Identifier","src":"15375:4:20"}],"id":7853,"name":"MemberAccess","src":"15375:9:20"}],"id":7854,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7834,"type":"struct strings.slice memory","value":"needle"},"id":7855,"name":"Identifier","src":"15387:6:20"}],"id":7856,"name":"MemberAccess","src":"15387:11:20"}],"id":7857,"name":"BinaryOperation","src":"15363:35:20"}],"id":7858,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[7860]},"children":[{"attributes":{"constant":false,"name":"equal","scope":7882,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7859,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":7860,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7861,"name":"Literal","src":"15421:4:20"}],"id":7862,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7849,"type":"uint256","value":"selfptr"},"id":7863,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7834,"type":"struct strings.slice memory","value":"needle"},"id":7864,"name":"Identifier","src":"15450:6:20"}],"id":7865,"name":"MemberAccess","src":"15450:11:20"}],"id":7866,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":7834,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":7860,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":7834,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":7849,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7867,"name":"InlineAssembly","src":"15477:212:20"}],"id":7868,"name":"Block","src":"15463:236:20"}],"id":7869,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7860,"type":"bool","value":"equal"},"id":7870,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7871,"name":"Identifier","src":"15734:4:20"}],"id":7873,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7834,"type":"struct strings.slice memory","value":"needle"},"id":7874,"name":"Identifier","src":"15747:6:20"}],"id":7875,"name":"MemberAccess","src":"15747:11:20"}],"id":7876,"name":"Assignment","src":"15734:24:20"}],"id":7877,"name":"ExpressionStatement","src":"15734:24:20"}],"id":7878,"name":"Block","src":"15720:49:20"}],"id":7879,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":7838},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7880,"name":"Identifier","src":"15786:4:20"}],"id":7881,"name":"Return","src":"15779:11:20"}],"id":7882,"name":"Block","src":"15263:534:20"}],"id":7883,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7884,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":7885,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7886,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":7887,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7888,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":7889,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7890,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":7891,"name":"VariableDeclaration","src":"16015:14:20"}],"id":7892,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7893,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":7894,"name":"VariableDeclaration","src":"16053:4:20"}],"id":7895,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[7897]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8003,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7896,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":7897,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7887,"type":"uint256","value":"selfptr"},"id":7898,"name":"Identifier","src":"16080:7:20"}],"id":7899,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[7901],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":8003,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7900,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":7901,"name":"VariableDeclaration","src":"16097:8:20"}],"id":7902,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7903,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":7904,"name":"Identifier","src":"16133:7:20"}],"id":7905,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7906,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7907,"name":"Literal","src":"16173:2:20"}],"id":7908,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[7910]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7962,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7909,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":7910,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7911,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7912,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7913,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7914,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7915,"name":"Identifier","src":"16236:9:20"}],"id":7916,"name":"BinaryOperation","src":"16231:14:20"}],"id":7917,"name":"TupleExpression","src":"16230:16:20"}],"id":7918,"name":"BinaryOperation","src":"16226:20:20"}],"id":7919,"name":"TupleExpression","src":"16225:22:20"}],"id":7920,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7921,"name":"Literal","src":"16250:1:20"}],"id":7922,"name":"BinaryOperation","src":"16220:31:20"}],"id":7923,"name":"TupleExpression","src":"16219:33:20"}],"id":7924,"name":"UnaryOperation","src":"16218:34:20"}],"id":7925,"name":"FunctionCall","src":"16210:43:20"}],"id":7926,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[7928],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":7962,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7927,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":7928,"name":"VariableDeclaration","src":"16272:18:20"}],"id":7929,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":7928,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":7891,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":7910,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":7930,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[7932]},"children":[{"attributes":{"constant":false,"name":"end","scope":7962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7931,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":7932,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7887,"type":"uint256","value":"selfptr"},"id":7933,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":7934,"name":"Identifier","src":"16401:7:20"}],"id":7935,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7936,"name":"Identifier","src":"16411:9:20"}],"id":7937,"name":"BinaryOperation","src":"16391:29:20"}],"id":7938,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[7940],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":7962,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7939,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":7940,"name":"VariableDeclaration","src":"16438:15:20"}],"id":7941,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":7940,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":7897,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":7910,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":7942,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7940,"type":"bytes32","value":"ptrdata"},"id":7943,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7928,"type":"bytes32","value":"needledata"},"id":7944,"name":"Identifier","src":"16552:10:20"}],"id":7945,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7946,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7932,"type":"uint256","value":"end"},"id":7947,"name":"Identifier","src":"16597:3:20"}],"id":7948,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":7895},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7887,"type":"uint256","value":"selfptr"},"id":7949,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":7950,"name":"Identifier","src":"16643:7:20"}],"id":7951,"name":"BinaryOperation","src":"16633:17:20"}],"id":7952,"name":"Return","src":"16626:24:20"}],"id":7953,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7954,"name":"Identifier","src":"16672:3:20"}],"id":7955,"name":"UnaryOperation","src":"16672:5:20"}],"id":7956,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":7940,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":7897,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":7910,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":7957,"name":"InlineAssembly","src":"16699:45:20"}],"id":7958,"name":"Block","src":"16564:198:20"}],"id":7959,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":7895},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7960,"name":"Identifier","src":"16786:3:20"}],"id":7961,"name":"Return","src":"16779:10:20"}],"id":7962,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[7964],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":7995,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7963,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":7964,"name":"VariableDeclaration","src":"16877:12:20"}],"id":7965,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":7964,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":7891,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":7889,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":7966,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7901,"type":"uint256","value":"idx"},"id":7967,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7968,"name":"Literal","src":"16988:1:20"}],"id":7969,"name":"Assignment","src":"16982:7:20"}],"id":7970,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7901,"type":"uint256","value":"idx"},"id":7971,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":7972,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7973,"name":"Identifier","src":"17008:9:20"}],"id":7974,"name":"BinaryOperation","src":"16998:19:20"}],"id":7975,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7901,"type":"uint256","value":"idx"},"id":7976,"name":"Identifier","src":"17019:3:20"}],"id":7977,"name":"UnaryOperation","src":"17019:5:20"}],"id":7978,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[7980],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":7993,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7979,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":7980,"name":"VariableDeclaration","src":"17048:16:20"}],"id":7981,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":7980,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":7897,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":7889,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":7982,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"bytes32","value":"hash"},"id":7983,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7980,"type":"bytes32","value":"testHash"},"id":7984,"name":"Identifier","src":"17169:8:20"}],"id":7985,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":7895},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7986,"name":"Identifier","src":"17210:3:20"}],"id":7987,"name":"Return","src":"17203:10:20"}],"id":7988,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7989,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7990,"name":"Literal","src":"17242:1:20"}],"id":7991,"name":"Assignment","src":"17235:8:20"}],"id":7992,"name":"ExpressionStatement","src":"17235:8:20"}],"id":7993,"name":"Block","src":"17026:236:20"}],"id":7994,"name":"ForStatement","src":"16977:285:20"}],"id":7995,"name":"Block","src":"16810:466:20"}],"id":7996,"name":"IfStatement","src":"16156:1120:20"}],"id":7997,"name":"Block","src":"16142:1144:20"}],"id":7998,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":7895},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7887,"type":"uint256","value":"selfptr"},"id":7999,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":8000,"name":"Identifier","src":"17312:7:20"}],"id":8001,"name":"BinaryOperation","src":"17302:17:20"}],"id":8002,"name":"Return","src":"17295:24:20"}],"id":8003,"name":"Block","src":"16059:1267:20"}],"id":8004,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8005,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":8006,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8007,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":8008,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8009,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":8010,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8011,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":8012,"name":"VariableDeclaration","src":"17541:14:20"}],"id":8013,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8014,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":8015,"name":"VariableDeclaration","src":"17579:4:20"}],"id":8016,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[8018],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8120,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8017,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":8018,"name":"VariableDeclaration","src":"17595:8:20"}],"id":8019,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8020,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8006,"type":"uint256","value":"selflen"},"id":8021,"name":"Identifier","src":"17631:7:20"}],"id":8022,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8023,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8024,"name":"Literal","src":"17671:2:20"}],"id":8025,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[8027]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8026,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":8027,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8028,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8029,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8030,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8031,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8032,"name":"Identifier","src":"17734:9:20"}],"id":8033,"name":"BinaryOperation","src":"17729:14:20"}],"id":8034,"name":"TupleExpression","src":"17728:16:20"}],"id":8035,"name":"BinaryOperation","src":"17724:20:20"}],"id":8036,"name":"TupleExpression","src":"17723:22:20"}],"id":8037,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8038,"name":"Literal","src":"17748:1:20"}],"id":8039,"name":"BinaryOperation","src":"17718:31:20"}],"id":8040,"name":"TupleExpression","src":"17717:33:20"}],"id":8041,"name":"UnaryOperation","src":"17716:34:20"}],"id":8042,"name":"FunctionCall","src":"17708:43:20"}],"id":8043,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[8045],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8044,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":8045,"name":"VariableDeclaration","src":"17770:18:20"}],"id":8046,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8045,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":8012,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":8027,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8047,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8048,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8049,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8006,"type":"uint256","value":"selflen"},"id":8050,"name":"Identifier","src":"17894:7:20"}],"id":8051,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8052,"name":"Identifier","src":"17904:9:20"}],"id":8053,"name":"BinaryOperation","src":"17884:29:20"}],"id":8054,"name":"Assignment","src":"17878:35:20"}],"id":8055,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[8057],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8056,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":8057,"name":"VariableDeclaration","src":"17931:15:20"}],"id":8058,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8057,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":8018,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":8027,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8059,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8057,"type":"bytes32","value":"ptrdata"},"id":8060,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8045,"type":"bytes32","value":"needledata"},"id":8061,"name":"Identifier","src":"18045:10:20"}],"id":8062,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8063,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8064,"name":"Identifier","src":"18090:7:20"}],"id":8065,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":8016},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8066,"name":"Identifier","src":"18130:7:20"}],"id":8067,"name":"Return","src":"18123:14:20"}],"id":8068,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8069,"name":"Identifier","src":"18159:3:20"}],"id":8070,"name":"UnaryOperation","src":"18159:5:20"}],"id":8071,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8057,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":8018,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":8027,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8072,"name":"InlineAssembly","src":"18186:45:20"}],"id":8073,"name":"Block","src":"18057:192:20"}],"id":8074,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":8016},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8075,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8076,"name":"Identifier","src":"18279:9:20"}],"id":8077,"name":"BinaryOperation","src":"18273:15:20"}],"id":8078,"name":"Return","src":"18266:22:20"}],"id":8079,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[8081],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8114,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8080,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":8081,"name":"VariableDeclaration","src":"18376:12:20"}],"id":8082,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8081,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":8012,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":8010,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8083,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8084,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8085,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8006,"type":"uint256","value":"selflen"},"id":8086,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8087,"name":"Identifier","src":"18502:9:20"}],"id":8088,"name":"BinaryOperation","src":"18492:19:20"}],"id":8089,"name":"TupleExpression","src":"18491:21:20"}],"id":8090,"name":"BinaryOperation","src":"18481:31:20"}],"id":8091,"name":"Assignment","src":"18475:37:20"}],"id":8092,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8093,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8094,"name":"Identifier","src":"18544:7:20"}],"id":8095,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[8097],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8112,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8096,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":8097,"name":"VariableDeclaration","src":"18575:16:20"}],"id":8098,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8097,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":8018,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":8010,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8099,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8081,"type":"bytes32","value":"hash"},"id":8100,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8097,"type":"bytes32","value":"testHash"},"id":8101,"name":"Identifier","src":"18696:8:20"}],"id":8102,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":8016},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8103,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8104,"name":"Identifier","src":"18743:9:20"}],"id":8105,"name":"BinaryOperation","src":"18737:15:20"}],"id":8106,"name":"Return","src":"18730:22:20"}],"id":8107,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8108,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8109,"name":"Literal","src":"18781:1:20"}],"id":8110,"name":"Assignment","src":"18774:8:20"}],"id":8111,"name":"ExpressionStatement","src":"18774:8:20"}],"id":8112,"name":"Block","src":"18553:248:20"}],"id":8113,"name":"WhileStatement","src":"18530:271:20"}],"id":8114,"name":"Block","src":"18309:506:20"}],"id":8115,"name":"IfStatement","src":"17654:1161:20"}],"id":8116,"name":"Block","src":"17640:1185:20"}],"id":8117,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":8016},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8118,"name":"Identifier","src":"18841:7:20"}],"id":8119,"name":"Return","src":"18834:14:20"}],"id":8120,"name":"Block","src":"17585:1270:20"}],"id":8121,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8161,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8122,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":8123,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8161,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8124,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":8125,"name":"VariableDeclaration","src":"19224:19:20"}],"id":8126,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8161,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8127,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":8128,"name":"VariableDeclaration","src":"19268:12:20"}],"id":8129,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[8131]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8160,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8130,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":8131,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8004,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8132,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8133,"name":"Identifier","src":"19311:4:20"}],"id":8134,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8135,"name":"Identifier","src":"19322:4:20"}],"id":8136,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8125,"type":"struct strings.slice memory","value":"needle"},"id":8137,"name":"Identifier","src":"19333:6:20"}],"id":8138,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8125,"type":"struct strings.slice memory","value":"needle"},"id":8139,"name":"Identifier","src":"19346:6:20"}],"id":8140,"name":"MemberAccess","src":"19346:11:20"}],"id":8141,"name":"FunctionCall","src":"19303:55:20"}],"id":8142,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8143,"name":"Identifier","src":"19368:4:20"}],"id":8145,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8131,"type":"uint256","value":"ptr"},"id":8146,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8147,"name":"Identifier","src":"19387:4:20"}],"id":8148,"name":"MemberAccess","src":"19387:9:20"}],"id":8149,"name":"BinaryOperation","src":"19381:15:20"}],"id":8150,"name":"Assignment","src":"19368:28:20"}],"id":8151,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8152,"name":"Identifier","src":"19406:4:20"}],"id":8154,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8131,"type":"uint256","value":"ptr"},"id":8155,"name":"Identifier","src":"19418:3:20"}],"id":8156,"name":"Assignment","src":"19406:15:20"}],"id":8157,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":8129},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8158,"name":"Identifier","src":"19438:4:20"}],"id":8159,"name":"Return","src":"19431:11:20"}],"id":8160,"name":"Block","src":"19282:167:20"}],"id":8161,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8195,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8162,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":8163,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8195,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8164,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":8165,"name":"VariableDeclaration","src":"19842:19:20"}],"id":8166,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8195,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8167,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":8168,"name":"VariableDeclaration","src":"19886:12:20"}],"id":8169,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[8171]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8194,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8170,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":8171,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8172,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8173,"name":"Identifier","src":"19930:4:20"}],"id":8174,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8175,"name":"Identifier","src":"19941:4:20"}],"id":8176,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8165,"type":"struct strings.slice memory","value":"needle"},"id":8177,"name":"Identifier","src":"19952:6:20"}],"id":8178,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8165,"type":"struct strings.slice memory","value":"needle"},"id":8179,"name":"Identifier","src":"19965:6:20"}],"id":8180,"name":"MemberAccess","src":"19965:11:20"}],"id":8181,"name":"FunctionCall","src":"19921:56:20"}],"id":8182,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8183,"name":"Identifier","src":"19987:4:20"}],"id":8185,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8171,"type":"uint256","value":"ptr"},"id":8186,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8187,"name":"Identifier","src":"20005:4:20"}],"id":8188,"name":"MemberAccess","src":"20005:9:20"}],"id":8189,"name":"BinaryOperation","src":"19999:15:20"}],"id":8190,"name":"Assignment","src":"19987:27:20"}],"id":8191,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":8169},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8192,"name":"Identifier","src":"20031:4:20"}],"id":8193,"name":"Return","src":"20024:11:20"}],"id":8194,"name":"Block","src":"19900:142:20"}],"id":8195,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8196,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":8197,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8198,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":8199,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":8273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8200,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":8201,"name":"VariableDeclaration","src":"20603:18:20"}],"id":8202,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8203,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":8204,"name":"VariableDeclaration","src":"20646:12:20"}],"id":8205,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[8207]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8272,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8206,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":8207,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8004,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8208,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8209,"name":"Identifier","src":"20689:4:20"}],"id":8210,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8211,"name":"Identifier","src":"20700:4:20"}],"id":8212,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8199,"type":"struct strings.slice memory","value":"needle"},"id":8213,"name":"Identifier","src":"20711:6:20"}],"id":8214,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8199,"type":"struct strings.slice memory","value":"needle"},"id":8215,"name":"Identifier","src":"20724:6:20"}],"id":8216,"name":"MemberAccess","src":"20724:11:20"}],"id":8217,"name":"FunctionCall","src":"20681:55:20"}],"id":8218,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8201,"type":"struct strings.slice memory","value":"token"},"id":8219,"name":"Identifier","src":"20746:5:20"}],"id":8221,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8222,"name":"Identifier","src":"20759:4:20"}],"id":8223,"name":"MemberAccess","src":"20759:9:20"}],"id":8224,"name":"Assignment","src":"20746:22:20"}],"id":8225,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8201,"type":"struct strings.slice memory","value":"token"},"id":8226,"name":"Identifier","src":"20778:5:20"}],"id":8228,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8207,"type":"uint256","value":"ptr"},"id":8229,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8230,"name":"Identifier","src":"20797:4:20"}],"id":8231,"name":"MemberAccess","src":"20797:9:20"}],"id":8232,"name":"BinaryOperation","src":"20791:15:20"}],"id":8233,"name":"Assignment","src":"20778:28:20"}],"id":8234,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8207,"type":"uint256","value":"ptr"},"id":8235,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8236,"name":"Identifier","src":"20827:4:20"}],"id":8237,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8238,"name":"Identifier","src":"20839:4:20"}],"id":8239,"name":"MemberAccess","src":"20839:9:20"}],"id":8240,"name":"BinaryOperation","src":"20827:21:20"}],"id":8241,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8242,"name":"Identifier","src":"20889:4:20"}],"id":8244,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8245,"name":"Literal","src":"20901:1:20"}],"id":8246,"name":"Assignment","src":"20889:13:20"}],"id":8247,"name":"ExpressionStatement","src":"20889:13:20"}],"id":8248,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8249,"name":"Identifier","src":"20933:4:20"}],"id":8251,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8201,"type":"struct strings.slice memory","value":"token"},"id":8252,"name":"Identifier","src":"20946:5:20"}],"id":8253,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8199,"type":"struct strings.slice memory","value":"needle"},"id":8254,"name":"Identifier","src":"20959:6:20"}],"id":8255,"name":"MemberAccess","src":"20959:11:20"}],"id":8256,"name":"BinaryOperation","src":"20946:24:20"}],"id":8257,"name":"Assignment","src":"20933:37:20"}],"id":8258,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8259,"name":"Identifier","src":"20984:4:20"}],"id":8261,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8207,"type":"uint256","value":"ptr"},"id":8262,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8199,"type":"struct strings.slice memory","value":"needle"},"id":8263,"name":"Identifier","src":"21002:6:20"}],"id":8264,"name":"MemberAccess","src":"21002:11:20"}],"id":8265,"name":"BinaryOperation","src":"20996:17:20"}],"id":8266,"name":"Assignment","src":"20984:29:20"}],"id":8267,"name":"ExpressionStatement","src":"20984:29:20"}],"id":8268,"name":"Block","src":"20919:105:20"}],"id":8269,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":8205},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8201,"type":"struct strings.slice memory","value":"token"},"id":8270,"name":"Identifier","src":"21040:5:20"}],"id":8271,"name":"Return","src":"21033:12:20"}],"id":8272,"name":"Block","src":"20660:392:20"}],"id":8273,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8289,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8274,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":8275,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8289,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8276,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":8277,"name":"VariableDeclaration","src":"21557:19:20"}],"id":8278,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8289,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8279,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":8280,"name":"VariableDeclaration","src":"21601:18:20"}],"id":8281,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8273,8289],"referencedDeclaration":8273,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":8282,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8275,"type":"struct strings.slice memory","value":"self"},"id":8283,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8277,"type":"struct strings.slice memory","value":"needle"},"id":8284,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8280,"type":"struct strings.slice memory","value":"token"},"id":8285,"name":"Identifier","src":"21651:5:20"}],"id":8286,"name":"FunctionCall","src":"21631:26:20"}],"id":8287,"name":"ExpressionStatement","src":"21631:26:20"}],"id":8288,"name":"Block","src":"21621:43:20"}],"id":8289,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8358,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8290,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":8291,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8358,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8292,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":8293,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":8358,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8294,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":8295,"name":"VariableDeclaration","src":"22225:18:20"}],"id":8296,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8358,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8297,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":8298,"name":"VariableDeclaration","src":"22268:12:20"}],"id":8299,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[8301]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8300,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":8301,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8302,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8303,"name":"Identifier","src":"22312:4:20"}],"id":8304,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8305,"name":"Identifier","src":"22323:4:20"}],"id":8306,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8293,"type":"struct strings.slice memory","value":"needle"},"id":8307,"name":"Identifier","src":"22334:6:20"}],"id":8308,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8293,"type":"struct strings.slice memory","value":"needle"},"id":8309,"name":"Identifier","src":"22347:6:20"}],"id":8310,"name":"MemberAccess","src":"22347:11:20"}],"id":8311,"name":"FunctionCall","src":"22303:56:20"}],"id":8312,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8295,"type":"struct strings.slice memory","value":"token"},"id":8313,"name":"Identifier","src":"22369:5:20"}],"id":8315,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8301,"type":"uint256","value":"ptr"},"id":8316,"name":"Identifier","src":"22382:3:20"}],"id":8317,"name":"Assignment","src":"22369:16:20"}],"id":8318,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8295,"type":"struct strings.slice memory","value":"token"},"id":8319,"name":"Identifier","src":"22395:5:20"}],"id":8321,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8322,"name":"Identifier","src":"22408:4:20"}],"id":8323,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8301,"type":"uint256","value":"ptr"},"id":8324,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8325,"name":"Identifier","src":"22427:4:20"}],"id":8326,"name":"MemberAccess","src":"22427:9:20"}],"id":8327,"name":"BinaryOperation","src":"22421:15:20"}],"id":8328,"name":"TupleExpression","src":"22420:17:20"}],"id":8329,"name":"BinaryOperation","src":"22408:29:20"}],"id":8330,"name":"Assignment","src":"22395:42:20"}],"id":8331,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8301,"type":"uint256","value":"ptr"},"id":8332,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8333,"name":"Identifier","src":"22458:4:20"}],"id":8334,"name":"MemberAccess","src":"22458:9:20"}],"id":8335,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8336,"name":"Identifier","src":"22508:4:20"}],"id":8338,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8339,"name":"Literal","src":"22520:1:20"}],"id":8340,"name":"Assignment","src":"22508:13:20"}],"id":8341,"name":"ExpressionStatement","src":"22508:13:20"}],"id":8342,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8343,"name":"Identifier","src":"22552:4:20"}],"id":8345,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8295,"type":"struct strings.slice memory","value":"token"},"id":8346,"name":"Identifier","src":"22565:5:20"}],"id":8347,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8293,"type":"struct strings.slice memory","value":"needle"},"id":8348,"name":"Identifier","src":"22578:6:20"}],"id":8349,"name":"MemberAccess","src":"22578:11:20"}],"id":8350,"name":"BinaryOperation","src":"22565:24:20"}],"id":8351,"name":"Assignment","src":"22552:37:20"}],"id":8352,"name":"ExpressionStatement","src":"22552:37:20"}],"id":8353,"name":"Block","src":"22538:62:20"}],"id":8354,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":8299},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8295,"type":"struct strings.slice memory","value":"token"},"id":8355,"name":"Identifier","src":"22616:5:20"}],"id":8356,"name":"Return","src":"22609:12:20"}],"id":8357,"name":"Block","src":"22282:346:20"}],"id":8358,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8359,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":8360,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8361,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":8362,"name":"VariableDeclaration","src":"23132:19:20"}],"id":8363,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8364,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":8365,"name":"VariableDeclaration","src":"23176:18:20"}],"id":8366,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8358,8374],"referencedDeclaration":8358,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":8367,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8360,"type":"struct strings.slice memory","value":"self"},"id":8368,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8362,"type":"struct strings.slice memory","value":"needle"},"id":8369,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8365,"type":"struct strings.slice memory","value":"token"},"id":8370,"name":"Identifier","src":"23227:5:20"}],"id":8371,"name":"FunctionCall","src":"23206:27:20"}],"id":8372,"name":"ExpressionStatement","src":"23206:27:20"}],"id":8373,"name":"Block","src":"23196:44:20"}],"id":8374,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8433,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8375,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":8376,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8433,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8377,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":8378,"name":"VariableDeclaration","src":"23543:19:20"}],"id":8379,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":8433,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8380,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":8381,"name":"VariableDeclaration","src":"23587:8:20"}],"id":8382,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[8384]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8432,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8383,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":8384,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8004,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8385,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8386,"name":"Identifier","src":"23626:4:20"}],"id":8387,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8388,"name":"Identifier","src":"23637:4:20"}],"id":8389,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8390,"name":"Identifier","src":"23648:6:20"}],"id":8391,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8392,"name":"Identifier","src":"23661:6:20"}],"id":8393,"name":"MemberAccess","src":"23661:11:20"}],"id":8394,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8395,"name":"Identifier","src":"23676:6:20"}],"id":8396,"name":"MemberAccess","src":"23676:11:20"}],"id":8397,"name":"BinaryOperation","src":"23618:69:20"}],"id":8398,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8384,"type":"uint256","value":"ptr"},"id":8399,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8400,"name":"Identifier","src":"23711:4:20"}],"id":8401,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8402,"name":"Identifier","src":"23723:4:20"}],"id":8403,"name":"MemberAccess","src":"23723:9:20"}],"id":8404,"name":"BinaryOperation","src":"23711:21:20"}],"id":8405,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8381,"type":"uint256","value":"cnt"},"id":8406,"name":"Identifier","src":"23748:3:20"}],"id":8407,"name":"UnaryOperation","src":"23748:5:20"}],"id":8408,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8384,"type":"uint256","value":"ptr"},"id":8409,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8004,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8410,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8411,"name":"Identifier","src":"23781:4:20"}],"id":8412,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8384,"type":"uint256","value":"ptr"},"id":8413,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8414,"name":"Identifier","src":"23800:4:20"}],"id":8415,"name":"MemberAccess","src":"23800:9:20"}],"id":8416,"name":"BinaryOperation","src":"23794:15:20"}],"id":8417,"name":"TupleExpression","src":"23793:17:20"}],"id":8418,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8384,"type":"uint256","value":"ptr"},"id":8419,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8420,"name":"Identifier","src":"23817:6:20"}],"id":8421,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8422,"name":"Identifier","src":"23830:6:20"}],"id":8423,"name":"MemberAccess","src":"23830:11:20"}],"id":8424,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8425,"name":"Identifier","src":"23845:6:20"}],"id":8426,"name":"MemberAccess","src":"23845:11:20"}],"id":8427,"name":"BinaryOperation","src":"23773:83:20"}],"id":8428,"name":"Assignment","src":"23767:89:20"}],"id":8429,"name":"ExpressionStatement","src":"23767:89:20"}],"id":8430,"name":"Block","src":"23734:133:20"}],"id":8431,"name":"WhileStatement","src":"23697:170:20"}],"id":8432,"name":"Block","src":"23597:276:20"}],"id":8433,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8457,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8434,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":8435,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8457,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8436,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":8437,"name":"VariableDeclaration","src":"24149:19:20"}],"id":8438,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8457,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8439,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":8440,"name":"VariableDeclaration","src":"24193:4:20"}],"id":8441,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":8441},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8442,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8435,"type":"struct strings.slice memory","value":"self"},"id":8443,"name":"Identifier","src":"24225:4:20"}],"id":8444,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8435,"type":"struct strings.slice memory","value":"self"},"id":8445,"name":"Identifier","src":"24236:4:20"}],"id":8446,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8437,"type":"struct strings.slice memory","value":"needle"},"id":8447,"name":"Identifier","src":"24247:6:20"}],"id":8448,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8437,"type":"struct strings.slice memory","value":"needle"},"id":8449,"name":"Identifier","src":"24260:6:20"}],"id":8450,"name":"MemberAccess","src":"24260:11:20"}],"id":8451,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8435,"type":"struct strings.slice memory","value":"self"},"id":8452,"name":"Identifier","src":"24276:4:20"}],"id":8453,"name":"MemberAccess","src":"24276:9:20"}],"id":8454,"name":"BinaryOperation","src":"24216:69:20"}],"id":8455,"name":"Return","src":"24209:76:20"}],"id":8456,"name":"Block","src":"24199:93:20"}],"id":8457,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8503,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8458,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":8459,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":8503,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8460,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":8461,"name":"VariableDeclaration","src":"24614:18:20"}],"id":8462,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8503,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8463,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":8464,"name":"VariableDeclaration","src":"24657:13:20"}],"id":8465,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[8467]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8502,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8466,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":8467,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8468,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":8469,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8459,"type":"struct strings.slice memory","value":"self"},"id":8470,"name":"Identifier","src":"24713:4:20"}],"id":8471,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"other"},"id":8472,"name":"Identifier","src":"24725:5:20"}],"id":8473,"name":"MemberAccess","src":"24725:10:20"}],"id":8474,"name":"BinaryOperation","src":"24713:22:20"}],"id":8475,"name":"FunctionCall","src":"24702:34:20"}],"id":8476,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[8478],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8502,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8477,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":8478,"name":"VariableDeclaration","src":"24746:11:20"}],"id":8479,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8478,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":8467,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8480,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8481,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8478,"type":"uint256","value":"retptr"},"id":8482,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8459,"type":"struct strings.slice memory","value":"self"},"id":8483,"name":"Identifier","src":"24826:4:20"}],"id":8484,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8459,"type":"struct strings.slice memory","value":"self"},"id":8485,"name":"Identifier","src":"24837:4:20"}],"id":8486,"name":"MemberAccess","src":"24837:9:20"}],"id":8487,"name":"FunctionCall","src":"24811:36:20"}],"id":8488,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8489,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8478,"type":"uint256","value":"retptr"},"id":8490,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8459,"type":"struct strings.slice memory","value":"self"},"id":8491,"name":"Identifier","src":"24873:4:20"}],"id":8492,"name":"MemberAccess","src":"24873:9:20"}],"id":8493,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"other"},"id":8494,"name":"Identifier","src":"24884:5:20"}],"id":8495,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"other"},"id":8496,"name":"Identifier","src":"24896:5:20"}],"id":8497,"name":"MemberAccess","src":"24896:10:20"}],"id":8498,"name":"FunctionCall","src":"24857:50:20"}],"id":8499,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":8465},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8467,"type":"string memory","value":"ret"},"id":8500,"name":"Identifier","src":"24924:3:20"}],"id":8501,"name":"Return","src":"24917:10:20"}],"id":8502,"name":"Block","src":"24672:262:20"}],"id":8503,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8618,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8504,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":8505,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":8618,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8506,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":8507,"name":"ArrayTypeName","src":"25303:7:20"}],"id":8508,"name":"VariableDeclaration","src":"25303:20:20"}],"id":8509,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8618,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8510,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":8511,"name":"VariableDeclaration","src":"25348:13:20"}],"id":8512,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8513,"name":"Identifier","src":"25377:5:20"}],"id":8514,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8515,"name":"Literal","src":"25393:1:20"}],"id":8516,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":8512},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":8517,"name":"Literal","src":"25415:2:20"}],"id":8518,"name":"Return","src":"25408:9:20"}],"id":8519,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[8521]},"children":[{"attributes":{"constant":false,"name":"length","scope":8617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8520,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":8521,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"struct strings.slice memory","value":"self"},"id":8522,"name":"Identifier","src":"25442:4:20"}],"id":8523,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8524,"name":"Identifier","src":"25455:5:20"}],"id":8525,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8526,"name":"Literal","src":"25470:1:20"}],"id":8527,"name":"BinaryOperation","src":"25455:16:20"}],"id":8528,"name":"TupleExpression","src":"25454:18:20"}],"id":8529,"name":"BinaryOperation","src":"25442:30:20"}],"id":8530,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[8532]},"children":[{"attributes":{"constant":false,"name":"i","scope":8550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8531,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":8532,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8533,"name":"Literal","src":"25496:1:20"}],"id":8534,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8532,"type":"uint256","value":"i"},"id":8535,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8536,"name":"Identifier","src":"25503:5:20"}],"id":8537,"name":"MemberAccess","src":"25503:12:20"}],"id":8538,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8532,"type":"uint256","value":"i"},"id":8539,"name":"Identifier","src":"25517:1:20"}],"id":8540,"name":"UnaryOperation","src":"25517:3:20"}],"id":8541,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8521,"type":"uint256","value":"length"},"id":8542,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8543,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8532,"type":"uint256","value":"i"},"id":8544,"name":"Identifier","src":"25552:1:20"}],"id":8545,"name":"IndexAccess","src":"25546:8:20"}],"id":8546,"name":"MemberAccess","src":"25546:13:20"}],"id":8547,"name":"Assignment","src":"25536:23:20"}],"id":8548,"name":"ExpressionStatement","src":"25536:23:20"}],"id":8549,"name":"Block","src":"25522:48:20"}],"id":8550,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[8552]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8617,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8551,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":8552,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8553,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":8554,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8521,"type":"uint256","value":"length"},"id":8555,"name":"Identifier","src":"25611:6:20"}],"id":8556,"name":"FunctionCall","src":"25600:18:20"}],"id":8557,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[8559],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8558,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":8559,"name":"VariableDeclaration","src":"25628:11:20"}],"id":8560,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8559,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":8552,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8561,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[8563]},"children":[{"attributes":{"constant":false,"name":"i","scope":8614,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8562,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":8563,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8564,"name":"Literal","src":"25708:1:20"}],"id":8565,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8566,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8567,"name":"Identifier","src":"25715:5:20"}],"id":8568,"name":"MemberAccess","src":"25715:12:20"}],"id":8569,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8570,"name":"Identifier","src":"25729:1:20"}],"id":8571,"name":"UnaryOperation","src":"25729:3:20"}],"id":8572,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8573,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8559,"type":"uint256","value":"retptr"},"id":8574,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8575,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8576,"name":"Identifier","src":"25769:1:20"}],"id":8577,"name":"IndexAccess","src":"25763:8:20"}],"id":8578,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8579,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8580,"name":"Identifier","src":"25784:1:20"}],"id":8581,"name":"IndexAccess","src":"25778:8:20"}],"id":8582,"name":"MemberAccess","src":"25778:13:20"}],"id":8583,"name":"FunctionCall","src":"25748:44:20"}],"id":8584,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8559,"type":"uint256","value":"retptr"},"id":8585,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8586,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8587,"name":"Identifier","src":"25822:1:20"}],"id":8588,"name":"IndexAccess","src":"25816:8:20"}],"id":8589,"name":"MemberAccess","src":"25816:13:20"}],"id":8590,"name":"Assignment","src":"25806:23:20"}],"id":8591,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8592,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8593,"name":"Identifier","src":"25851:5:20"}],"id":8594,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8595,"name":"Literal","src":"25866:1:20"}],"id":8596,"name":"BinaryOperation","src":"25851:16:20"}],"id":8597,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8598,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8559,"type":"uint256","value":"retptr"},"id":8599,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"struct strings.slice memory","value":"self"},"id":8600,"name":"Identifier","src":"25902:4:20"}],"id":8601,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"struct strings.slice memory","value":"self"},"id":8602,"name":"Identifier","src":"25913:4:20"}],"id":8603,"name":"MemberAccess","src":"25913:9:20"}],"id":8604,"name":"FunctionCall","src":"25887:36:20"}],"id":8605,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8559,"type":"uint256","value":"retptr"},"id":8606,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"struct strings.slice memory","value":"self"},"id":8607,"name":"Identifier","src":"25951:4:20"}],"id":8608,"name":"MemberAccess","src":"25951:9:20"}],"id":8609,"name":"Assignment","src":"25941:19:20"}],"id":8610,"name":"ExpressionStatement","src":"25941:19:20"}],"id":8611,"name":"Block","src":"25869:106:20"}],"id":8612,"name":"IfStatement","src":"25843:132:20"}],"id":8613,"name":"Block","src":"25734:251:20"}],"id":8614,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":8512},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8552,"type":"string memory","value":"ret"},"id":8615,"name":"Identifier","src":"26002:3:20"}],"id":8616,"name":"Return","src":"25995:10:20"}],"id":8617,"name":"Block","src":"25363:649:20"}],"id":8618,"name":"FunctionDefinition","src":"25270:742:20"}],"id":8619,"name":"ContractDefinition","src":"2599:23415:20"}],"id":8620,"name":"SourceUnit","src":"2574:23441:20"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[2774]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2744,"name":"PragmaDirective","src":"771:24:21"},{"attributes":{"SourceUnit":2391,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":2775,"symbolAliases":[null],"unitAlias":""},"id":2745,"name":"ImportDirective","src":"797:32:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[2774],"name":"Balanceable","scope":2775},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":2774,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":2773,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2746,"name":"ElementaryTypeName","src":"1225:7:21"}],"id":2747,"name":"VariableDeclaration","src":"1225:16:21"},{"attributes":{"constant":false,"name":"_asset","scope":2773,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2748,"name":"ElementaryTypeName","src":"1243:7:21"}],"id":2749,"name":"VariableDeclaration","src":"1243:14:21"}],"id":2750,"name":"ParameterList","src":"1224:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":2773,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2751,"name":"ElementaryTypeName","src":"1282:7:21"}],"id":2752,"name":"VariableDeclaration","src":"1282:7:21"}],"id":2753,"name":"ParameterList","src":"1281:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2749,"type":"address","value":"_asset"},"id":2754,"name":"Identifier","src":"1305:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2755,"name":"ElementaryTypeNameExpression","src":"1315:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2756,"name":"Literal","src":"1323:1:21"}],"id":2757,"name":"FunctionCall","src":"1315:10:21"}],"id":2758,"name":"BinaryOperation","src":"1305:20:21"},{"children":[{"attributes":{"functionReturnParameters":2753},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":2364,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":2759,"name":"Identifier","src":"1348:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2749,"type":"address","value":"_asset"},"id":2760,"name":"Identifier","src":"1354:6:21"}],"id":2761,"name":"FunctionCall","src":"1348:13:21"}],"id":2762,"name":"MemberAccess","src":"1348:23:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2747,"type":"address","value":"_address"},"id":2763,"name":"Identifier","src":"1372:8:21"}],"id":2764,"name":"FunctionCall","src":"1348:33:21"}],"id":2765,"name":"Return","src":"1341:40:21"}],"id":2766,"name":"Block","src":"1327:65:21"},{"children":[{"attributes":{"functionReturnParameters":2753},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2747,"type":"address","value":"_address"},"id":2767,"name":"Identifier","src":"1419:8:21"}],"id":2768,"name":"MemberAccess","src":"1419:16:21"}],"id":2769,"name":"Return","src":"1412:23:21"}],"id":2770,"name":"Block","src":"1398:48:21"}],"id":2771,"name":"IfStatement","src":"1301:145:21"}],"id":2772,"name":"Block","src":"1291:161:21"}],"id":2773,"name":"FunctionDefinition","src":"1207:245:21"}],"id":2774,"name":"ContractDefinition","src":"898:556:21"}],"id":2775,"name":"SourceUnit","src":"771:684:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[8730]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8621,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":8731,"symbolAliases":[null],"unitAlias":""},"id":8622,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[8730],"name":"BytesUtils","scope":8731},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":8623,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":8624,"name":"ElementaryTypeName","src":"955:7:22"}],"id":8625,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":8730,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8661,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8626,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":8627,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8628,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":8629,"name":"VariableDeclaration","src":"1125:13:22"}],"id":8630,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8661,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8631,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":8632,"name":"VariableDeclaration","src":"1163:7:22"}],"id":8633,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":8634,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8627,"type":"bytes memory","value":"_bts"},"id":8635,"name":"Identifier","src":"1190:4:22"}],"id":8636,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"uint256","value":"_from"},"id":8637,"name":"Identifier","src":"1205:5:22"}],"id":8638,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8639,"name":"Literal","src":"1215:2:22"}],"id":8640,"name":"FunctionCall","src":"1205:13:22"}],"id":8641,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8642,"name":"Literal","src":"1220:22:22"}],"id":8643,"name":"FunctionCall","src":"1182:61:22"}],"id":8644,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[8646],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":8660,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":8645,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":8646,"name":"VariableDeclaration","src":"1254:24:22"}],"id":8647,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[8649]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8660,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8648,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":8649,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"uint256","value":"_from"},"id":8650,"name":"Identifier","src":"1308:5:22"}],"id":8651,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8652,"name":"Literal","src":"1318:2:22"}],"id":8653,"name":"FunctionCall","src":"1308:13:22"}],"id":8654,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":8646,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":8627,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":8649,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":8655,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":8633},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":8656,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8646,"type":"bytes20","value":"convertedAddress"},"id":8657,"name":"Identifier","src":"1478:16:22"}],"id":8658,"name":"FunctionCall","src":"1470:25:22"}],"id":8659,"name":"Return","src":"1463:32:22"}],"id":8660,"name":"Block","src":"1172:330:22"}],"id":8661,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":8730,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8695,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8662,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":8663,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8664,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":8665,"name":"VariableDeclaration","src":"1670:13:22"}],"id":8666,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8695,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8667,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":8668,"name":"VariableDeclaration","src":"1708:6:22"}],"id":8669,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":8670,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8663,"type":"bytes memory","value":"_bts"},"id":8671,"name":"Identifier","src":"1734:4:22"}],"id":8672,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8665,"type":"uint256","value":"_from"},"id":8673,"name":"Identifier","src":"1749:5:22"}],"id":8674,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8675,"name":"Literal","src":"1759:1:22"}],"id":8676,"name":"FunctionCall","src":"1749:12:22"}],"id":8677,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8678,"name":"Literal","src":"1763:22:22"}],"id":8679,"name":"FunctionCall","src":"1726:60:22"}],"id":8680,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[8682],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":8694,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8681,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":8682,"name":"VariableDeclaration","src":"1797:19:22"}],"id":8683,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[8685]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8694,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8684,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":8685,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8665,"type":"uint256","value":"_from"},"id":8686,"name":"Identifier","src":"1846:5:22"}],"id":8687,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8688,"name":"Literal","src":"1856:2:22"}],"id":8689,"name":"FunctionCall","src":"1846:13:22"}],"id":8690,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":8682,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":8663,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":8685,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":8691,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":8669},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8682,"type":"bytes4","value":"slicedBytes4"},"id":8692,"name":"Identifier","src":"2004:12:22"}],"id":8693,"name":"Return","src":"1997:19:22"}],"id":8694,"name":"Block","src":"1716:307:22"}],"id":8695,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":8730,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8729,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8696,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":8697,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8729,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8698,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":8699,"name":"VariableDeclaration","src":"2417:13:22"}],"id":8700,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8729,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8701,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":8702,"name":"VariableDeclaration","src":"2455:7:22"}],"id":8703,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":8704,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8697,"type":"bytes memory","value":"_bts"},"id":8705,"name":"Identifier","src":"2482:4:22"}],"id":8706,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8699,"type":"uint256","value":"_from"},"id":8707,"name":"Identifier","src":"2497:5:22"}],"id":8708,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8709,"name":"Literal","src":"2507:2:22"}],"id":8710,"name":"FunctionCall","src":"2497:13:22"}],"id":8711,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8712,"name":"Literal","src":"2512:22:22"}],"id":8713,"name":"FunctionCall","src":"2474:61:22"}],"id":8714,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[8716],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":8728,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8715,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":8716,"name":"VariableDeclaration","src":"2546:24:22"}],"id":8717,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[8719]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8728,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8718,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":8719,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8699,"type":"uint256","value":"_from"},"id":8720,"name":"Identifier","src":"2600:5:22"}],"id":8721,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8722,"name":"Literal","src":"2610:2:22"}],"id":8723,"name":"FunctionCall","src":"2600:13:22"}],"id":8724,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":8716,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}},{"_bts":{"declaration":8697,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":8719,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":8725,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":8703},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8716,"type":"uint256","value":"convertedUint256"},"id":8726,"name":"Identifier","src":"2762:16:22"}],"id":8727,"name":"Return","src":"2755:23:22"}],"id":8728,"name":"Block","src":"2464:321:22"}],"id":8729,"name":"FunctionDefinition","src":"2373:412:22"}],"id":8730,"name":"ContractDefinition","src":"911:1876:22"}],"id":8731,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[2870]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2776,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":4328,"absolutePath":"controller.sol","file":"../controller.sol","scope":2871,"symbolAliases":[null],"unitAlias":""},"id":2777,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":2916,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":2871,"symbolAliases":[null],"unitAlias":""},"id":2778,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[2915],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[2870,2915],"name":"Controllable","scope":2871},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":2779,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":2780,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":2870,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2781,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":2782,"name":"Literal","src":"1122:66:23"}],"id":2783,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":2870,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2784,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":2785,"name":"Identifier","src":"1306:24:23"}],"id":2786,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2870,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":2803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2787,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":2788,"name":"VariableDeclaration","src":"1571:24:23"}],"id":2789,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":2790,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2788,"type":"bytes32","value":"_controllerNode_"},"id":2791,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2792,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2793,"name":"Literal","src":"1693:1:23"}],"id":2794,"name":"FunctionCall","src":"1685:10:23"}],"id":2795,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bytes32","value":"_controllerNode"},"id":2796,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2788,"type":"bytes32","value":"_controllerNode_"},"id":2797,"name":"Identifier","src":"1729:16:23"}],"id":2798,"name":"Assignment","src":"1711:34:23"}],"id":2799,"name":"ExpressionStatement","src":"1711:34:23"}],"id":2800,"name":"Block","src":"1697:59:23"}],"id":2801,"name":"IfStatement","src":"1661:95:23"}],"id":2802,"name":"Block","src":"1606:156:23"}],"id":2803,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2804,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2805,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"function (address) view returns (bool)","value":"_isController"},"id":2806,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":2807,"name":"Identifier","src":"1884:3:23"}],"id":2808,"name":"MemberAccess","src":"1884:10:23"}],"id":2809,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":2810,"name":"Literal","src":"1897:28:23"}],"id":2811,"name":"FunctionCall","src":"1862:64:23"}],"id":2812,"name":"ExpressionStatement","src":"1862:64:23"},{"id":2813,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":2814,"name":"Block","src":"1852:92:23"}],"id":2815,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2816,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2817,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2869,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":2818,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":2819,"name":"Identifier","src":"2052:3:23"}],"id":2820,"name":"MemberAccess","src":"2052:10:23"}],"id":2821,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2822,"name":"Literal","src":"2065:24:23"}],"id":2823,"name":"FunctionCall","src":"2035:55:23"}],"id":2824,"name":"ExpressionStatement","src":"2035:55:23"},{"id":2825,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":2826,"name":"Block","src":"2025:83:23"}],"id":2827,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":2870,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2828,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2829,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":2830,"name":"VariableDeclaration","src":"2216:7:23"}],"id":2831,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":2831},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bytes32","value":"_controllerNode"},"id":2832,"name":"Identifier","src":"2242:15:23"}],"id":2833,"name":"Return","src":"2235:22:23"}],"id":2834,"name":"Block","src":"2225:39:23"}],"id":2835,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":2870,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2852,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2836,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":2837,"name":"VariableDeclaration","src":"2355:16:23"}],"id":2838,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2852,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2839,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":2840,"name":"VariableDeclaration","src":"2396:4:23"}],"id":2841,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":2841},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":3884,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3892,"type":"type(contract IController)","value":"IController"},"id":2842,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2843,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bytes32","value":"_controllerNode"},"id":2844,"name":"Identifier","src":"2443:15:23"}],"id":2845,"name":"FunctionCall","src":"2431:28:23"}],"id":2846,"name":"FunctionCall","src":"2419:41:23"}],"id":2847,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2837,"type":"address","value":"_account"},"id":2848,"name":"Identifier","src":"2474:8:23"}],"id":2849,"name":"FunctionCall","src":"2419:64:23"}],"id":2850,"name":"Return","src":"2412:71:23"}],"id":2851,"name":"Block","src":"2402:88:23"}],"id":2852,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":2870,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2869,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2853,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":2854,"name":"VariableDeclaration","src":"2572:16:23"}],"id":2855,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2869,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2856,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":2857,"name":"VariableDeclaration","src":"2613:4:23"}],"id":2858,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":2858},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":3891,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3892,"type":"type(contract IController)","value":"IController"},"id":2859,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2860,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bytes32","value":"_controllerNode"},"id":2861,"name":"Identifier","src":"2660:15:23"}],"id":2862,"name":"FunctionCall","src":"2648:28:23"}],"id":2863,"name":"FunctionCall","src":"2636:41:23"}],"id":2864,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2854,"type":"address","value":"_account"},"id":2865,"name":"Identifier","src":"2686:8:23"}],"id":2866,"name":"FunctionCall","src":"2636:59:23"}],"id":2867,"name":"Return","src":"2629:66:23"}],"id":2868,"name":"Block","src":"2619:83:23"}],"id":2869,"name":"FunctionDefinition","src":"2554:148:23"}],"id":2870,"name":"ContractDefinition","src":"955:1749:23"}],"id":2871,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[2915]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2872,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":4465,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":2916,"symbolAliases":[null],"unitAlias":""},"id":2873,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":4639,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":2916,"symbolAliases":[null],"unitAlias":""},"id":2874,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[2915],"name":"ENSResolvable","scope":2916},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":2915,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2875,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":2876,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2915,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":2886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2877,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":2878,"name":"VariableDeclaration","src":"1205:16:24"}],"id":2879,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":2880,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2876,"type":"address","value":"_ensRegistry"},"id":2881,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2878,"type":"address","value":"_ensReg_"},"id":2882,"name":"Identifier","src":"1257:8:24"}],"id":2883,"name":"Assignment","src":"1242:23:24"}],"id":2884,"name":"ExpressionStatement","src":"1242:23:24"}],"id":2885,"name":"Block","src":"1232:40:24"}],"id":2886,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":2915,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2887,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":2894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2888,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":2889,"name":"VariableDeclaration","src":"1410:7:24"}],"id":2890,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":2890},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2876,"type":"address","value":"_ensRegistry"},"id":2891,"name":"Identifier","src":"1436:12:24"}],"id":2892,"name":"Return","src":"1429:19:24"}],"id":2893,"name":"Block","src":"1419:36:24"}],"id":2894,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":2915,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2914,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2895,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":2896,"name":"VariableDeclaration","src":"1652:13:24"}],"id":2897,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":2914,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2898,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":2899,"name":"VariableDeclaration","src":"1690:7:24"}],"id":2900,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":2900},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":5844,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4638,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":2901,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":4440,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4464,"type":"type(contract ENS)","value":"ENS"},"id":2902,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2876,"type":"address","value":"_ensRegistry"},"id":2903,"name":"Identifier","src":"1735:12:24"}],"id":2904,"name":"FunctionCall","src":"1731:17:24"}],"id":2905,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2896,"type":"bytes32","value":"_node"},"id":2906,"name":"Identifier","src":"1758:5:24"}],"id":2907,"name":"FunctionCall","src":"1731:33:24"}],"id":2908,"name":"FunctionCall","src":"1716:49:24"}],"id":2909,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2896,"type":"bytes32","value":"_node"},"id":2910,"name":"Identifier","src":"1771:5:24"}],"id":2911,"name":"FunctionCall","src":"1716:61:24"}],"id":2912,"name":"Return","src":"1709:68:24"}],"id":2913,"name":"Block","src":"1699:85:24"}],"id":2914,"name":"FunctionDefinition","src":"1631:153:24"}],"id":2915,"name":"ContractDefinition","src":"1008:778:24"}],"id":2916,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[3072]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2917,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[3072],"name":"Ownable","scope":3073},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":2923,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2918,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":2919,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2923,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2920,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":2921,"name":"VariableDeclaration","src":"1214:11:25"}],"id":2922,"name":"ParameterList","src":"1198:28:25"}],"id":2923,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":2927,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2924,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":2925,"name":"VariableDeclaration","src":"1254:15:25"}],"id":2926,"name":"ParameterList","src":"1253:17:25"}],"id":2927,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":3072,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2928,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":2929,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":3072,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2930,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":2931,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3072,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":2962,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2932,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":2933,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":2962,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2934,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":2935,"name":"VariableDeclaration","src":"1503:19:25"}],"id":2936,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":2937,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":2938,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2933,"type":"address payable","value":"_account_"},"id":2939,"name":"Identifier","src":"1552:9:25"}],"id":2940,"name":"Assignment","src":"1543:18:25"}],"id":2941,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":2942,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2935,"type":"bool","value":"_transferable_"},"id":2943,"name":"Identifier","src":"1589:14:25"}],"id":2944,"name":"Assignment","src":"1571:32:25"}],"id":2945,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":2946,"name":"Identifier","src":"1687:15:25"}],"id":2947,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2927,"type":"function (address)","value":"LockedOwnership"},"id":2948,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2933,"type":"address payable","value":"_account_"},"id":2949,"name":"Identifier","src":"1739:9:25"}],"id":2950,"name":"FunctionCall","src":"1723:26:25"}],"id":2951,"name":"EmitStatement","src":"1718:31:25"}],"id":2952,"name":"Block","src":"1704:56:25"}],"id":2953,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"function (address,address)","value":"TransferredOwnership"},"id":2954,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2955,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2956,"name":"Literal","src":"1803:1:25"}],"id":2957,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2933,"type":"address payable","value":"_account_"},"id":2958,"name":"Identifier","src":"1807:9:25"}],"id":2959,"name":"FunctionCall","src":"1774:43:25"}],"id":2960,"name":"EmitStatement","src":"1769:48:25"}],"id":2961,"name":"Block","src":"1533:291:25"}],"id":2962,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2963,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2964,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2965,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":2966,"name":"Identifier","src":"1949:3:25"}],"id":2967,"name":"MemberAccess","src":"1949:10:25"}],"id":2968,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":2969,"name":"Literal","src":"1962:24:25"}],"id":2970,"name":"FunctionCall","src":"1932:55:25"}],"id":2971,"name":"ExpressionStatement","src":"1932:55:25"},{"id":2972,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":2973,"name":"Block","src":"1922:83:25"}],"id":2974,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":3072,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3019,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2975,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":2976,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":3019,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2977,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":2978,"name":"VariableDeclaration","src":"2300:18:25"}],"id":2979,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":2982,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":2980,"name":"Identifier","src":"2329:9:25"}],"id":2981,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2983,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":2984,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2985,"name":"Literal","src":"2429:31:25"}],"id":2986,"name":"FunctionCall","src":"2404:57:25"}],"id":2987,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2988,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2976,"type":"address payable","value":"_account"},"id":2989,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2990,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2991,"name":"Literal","src":"2562:1:25"}],"id":2992,"name":"FunctionCall","src":"2554:10:25"}],"id":2993,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":2994,"name":"Literal","src":"2566:37:25"}],"id":2995,"name":"FunctionCall","src":"2534:70:25"}],"id":2996,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":2997,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2978,"type":"bool","value":"_transferable"},"id":2998,"name":"Identifier","src":"2707:13:25"}],"id":2999,"name":"Assignment","src":"2689:31:25"}],"id":3000,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2978,"type":"bool","value":"_transferable"},"id":3001,"name":"Identifier","src":"2804:13:25"}],"id":3002,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2927,"type":"function (address)","value":"LockedOwnership"},"id":3003,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2976,"type":"address payable","value":"_account"},"id":3004,"name":"Identifier","src":"2854:8:25"}],"id":3005,"name":"FunctionCall","src":"2838:25:25"}],"id":3006,"name":"EmitStatement","src":"2833:30:25"}],"id":3007,"name":"Block","src":"2819:55:25"}],"id":3008,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"function (address,address)","value":"TransferredOwnership"},"id":3009,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3010,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2976,"type":"address payable","value":"_account"},"id":3011,"name":"Identifier","src":"2963:8:25"}],"id":3012,"name":"FunctionCall","src":"2934:38:25"}],"id":3013,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3014,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2976,"type":"address payable","value":"_account"},"id":3015,"name":"Identifier","src":"3041:8:25"}],"id":3016,"name":"Assignment","src":"3032:17:25"}],"id":3017,"name":"ExpressionStatement","src":"3032:17:25"}],"id":3018,"name":"Block","src":"2339:717:25"}],"id":3019,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":3072,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3020,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3027,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3021,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":3022,"name":"VariableDeclaration","src":"3222:4:25"}],"id":3023,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":3023},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":3024,"name":"Identifier","src":"3245:15:25"}],"id":3025,"name":"Return","src":"3238:22:25"}],"id":3026,"name":"Block","src":"3228:39:25"}],"id":3027,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":3072,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3028,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":3031,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":3029,"name":"Identifier","src":"3581:9:25"}],"id":3030,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3032,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":3033,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3034,"name":"Literal","src":"3681:31:25"}],"id":3035,"name":"FunctionCall","src":"3656:57:25"}],"id":3036,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3037,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3038,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3039,"name":"Literal","src":"3784:1:25"}],"id":3040,"name":"FunctionCall","src":"3776:10:25"}],"id":3041,"name":"Assignment","src":"3767:19:25"}],"id":3042,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"function (address,address)","value":"TransferredOwnership"},"id":3043,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3044,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3045,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3046,"name":"Literal","src":"3839:1:25"}],"id":3047,"name":"FunctionCall","src":"3831:10:25"}],"id":3048,"name":"FunctionCall","src":"3802:40:25"}],"id":3049,"name":"EmitStatement","src":"3797:45:25"}],"id":3050,"name":"Block","src":"3591:258:25"}],"id":3051,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3072,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3052,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3059,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3053,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":3054,"name":"VariableDeclaration","src":"3970:15:25"}],"id":3055,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":3055},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3056,"name":"Identifier","src":"4004:6:25"}],"id":3057,"name":"Return","src":"3997:13:25"}],"id":3058,"name":"Block","src":"3987:30:25"}],"id":3059,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":3072,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3071,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3060,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":3061,"name":"VariableDeclaration","src":"4141:16:25"}],"id":3062,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3071,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3063,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":3064,"name":"VariableDeclaration","src":"4182:4:25"}],"id":3065,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":3065},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3061,"type":"address","value":"_address"},"id":3066,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3067,"name":"Identifier","src":"4217:6:25"}],"id":3068,"name":"BinaryOperation","src":"4205:18:25"}],"id":3069,"name":"Return","src":"4198:25:25"}],"id":3070,"name":"Block","src":"4188:42:25"}],"id":3071,"name":"FunctionDefinition","src":"4123:107:25"}],"id":3072,"name":"ContractDefinition","src":"1149:3083:25"}],"id":3073,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[3289]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3074,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":5627,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":3290,"symbolAliases":[null],"unitAlias":""},"id":3075,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":2916,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":3290,"symbolAliases":[null],"unitAlias":""},"id":3076,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[2915],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[3289,2915],"name":"TokenWhitelistable","scope":3290},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":3077,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":3078,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":3289,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3079,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":3080,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3289,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":3090,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3081,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":3082,"name":"VariableDeclaration","src":"1292:28:26"}],"id":3083,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":3084,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3085,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3082,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":3086,"name":"Identifier","src":"1363:20:26"}],"id":3087,"name":"Assignment","src":"1341:42:26"}],"id":3088,"name":"ExpressionStatement","src":"1341:42:26"}],"id":3089,"name":"Block","src":"1331:59:26"}],"id":3090,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3091,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3098,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3092,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":3093,"name":"VariableDeclaration","src":"1567:7:26"}],"id":3094,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":3094},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3095,"name":"Identifier","src":"1593:19:26"}],"id":3096,"name":"Return","src":"1586:26:26"}],"id":3097,"name":"Block","src":"1576:43:26"}],"id":3098,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3127,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3099,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":3100,"name":"VariableDeclaration","src":"2194:10:26"}],"id":3101,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3102,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":3103,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3104,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":3105,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3106,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":3107,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3108,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":3109,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3110,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":3111,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3112,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":3113,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3114,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":3115,"name":"VariableDeclaration","src":"2280:7:26"}],"id":3116,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":3116},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":4664,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3117,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3118,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3119,"name":"Identifier","src":"2334:19:26"}],"id":3120,"name":"FunctionCall","src":"2322:32:26"}],"id":3121,"name":"FunctionCall","src":"2306:49:26"}],"id":3122,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3100,"type":"address","value":"_a"},"id":3123,"name":"Identifier","src":"2369:2:26"}],"id":3124,"name":"FunctionCall","src":"2306:66:26"}],"id":3125,"name":"Return","src":"2299:73:26"}],"id":3126,"name":"Block","src":"2289:90:26"}],"id":3127,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3128,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3129,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":3130,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3131,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":3132,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3133,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":3134,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3135,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":3136,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3137,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":3138,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3139,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":3140,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3141,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":3142,"name":"VariableDeclaration","src":"2991:7:26"}],"id":3143,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":3143},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":4681,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3144,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3145,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3146,"name":"Identifier","src":"3045:19:26"}],"id":3147,"name":"FunctionCall","src":"3033:32:26"}],"id":3148,"name":"FunctionCall","src":"3017:49:26"}],"id":3149,"name":"MemberAccess","src":"3017:67:26"}],"id":3150,"name":"FunctionCall","src":"3017:69:26"}],"id":3151,"name":"Return","src":"3010:76:26"}],"id":3152,"name":"Block","src":"3000:93:26"}],"id":3153,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3154,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3168,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3155,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":3156,"name":"ArrayTypeName","src":"3273:9:26"}],"id":3157,"name":"VariableDeclaration","src":"3273:16:26"}],"id":3158,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":3158},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":4687,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3159,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3160,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3161,"name":"Identifier","src":"3336:19:26"}],"id":3162,"name":"FunctionCall","src":"3324:32:26"}],"id":3163,"name":"FunctionCall","src":"3308:49:26"}],"id":3164,"name":"MemberAccess","src":"3308:67:26"}],"id":3165,"name":"FunctionCall","src":"3308:69:26"}],"id":3166,"name":"Return","src":"3301:76:26"}],"id":3167,"name":"Block","src":"3291:93:26"}],"id":3168,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3169,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3183,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3170,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":3171,"name":"ArrayTypeName","src":"3563:9:26"}],"id":3172,"name":"VariableDeclaration","src":"3563:16:26"}],"id":3173,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":3173},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":4693,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3174,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3175,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3176,"name":"Identifier","src":"3626:19:26"}],"id":3177,"name":"FunctionCall","src":"3614:32:26"}],"id":3178,"name":"FunctionCall","src":"3598:49:26"}],"id":3179,"name":"MemberAccess","src":"3598:66:26"}],"id":3180,"name":"FunctionCall","src":"3598:68:26"}],"id":3181,"name":"Return","src":"3591:75:26"}],"id":3182,"name":"Block","src":"3581:92:26"}],"id":3183,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":3289,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":3204,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3184,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":3185,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":3204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3186,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":3187,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":3204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3188,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":3189,"name":"VariableDeclaration","src":"4007:19:26"}],"id":3190,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":3191,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":4725,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3192,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3193,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3194,"name":"Identifier","src":"4075:19:26"}],"id":3195,"name":"FunctionCall","src":"4063:32:26"}],"id":3196,"name":"FunctionCall","src":"4047:49:26"}],"id":3197,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3185,"type":"address","value":"_token"},"id":3198,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3187,"type":"uint256","value":"_rate"},"id":3199,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3189,"type":"uint256","value":"_updateDate"},"id":3200,"name":"Identifier","src":"4128:11:26"}],"id":3201,"name":"FunctionCall","src":"4047:93:26"}],"id":3202,"name":"ExpressionStatement","src":"4047:93:26"}],"id":3203,"name":"Block","src":"4037:110:26"}],"id":3204,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":3226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3205,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":3206,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":3226,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3207,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":3208,"name":"VariableDeclaration","src":"4364:18:26"}],"id":3209,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3210,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":3211,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":3226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3212,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":3213,"name":"VariableDeclaration","src":"4416:7:26"}],"id":3214,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":3214},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":4711,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3215,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3216,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3217,"name":"Identifier","src":"4470:19:26"}],"id":3218,"name":"FunctionCall","src":"4458:32:26"}],"id":3219,"name":"FunctionCall","src":"4442:49:26"}],"id":3220,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"address","value":"_destination"},"id":3221,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"bytes memory","value":"_data"},"id":3222,"name":"Identifier","src":"4533:5:26"}],"id":3223,"name":"FunctionCall","src":"4442:97:26"}],"id":3224,"name":"Return","src":"4435:104:26"}],"id":3225,"name":"Block","src":"4425:121:26"}],"id":3226,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3227,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":3228,"name":"VariableDeclaration","src":"4671:10:26"}],"id":3229,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3242,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3230,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":3231,"name":"VariableDeclaration","src":"4706:4:26"}],"id":3232,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,3234,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":3241,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3233,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":3234,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3235,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3228,"type":"address","value":"_a"},"id":3236,"name":"Identifier","src":"4767:2:26"}],"id":3237,"name":"FunctionCall","src":"4753:17:26"}],"id":3238,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":3232},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3234,"type":"bool","value":"available"},"id":3239,"name":"Identifier","src":"4787:9:26"}],"id":3240,"name":"Return","src":"4780:16:26"}],"id":3241,"name":"Block","src":"4712:91:26"}],"id":3242,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3258,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3243,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":3244,"name":"VariableDeclaration","src":"4931:10:26"}],"id":3245,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3258,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3246,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":3247,"name":"VariableDeclaration","src":"4966:4:26"}],"id":3248,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,3250,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":3257,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3249,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":3250,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3251,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3244,"type":"address","value":"_a"},"id":3252,"name":"Identifier","src":"5028:2:26"}],"id":3253,"name":"FunctionCall","src":"5014:17:26"}],"id":3254,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":3248},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3250,"type":"bool","value":"redeemable"},"id":3255,"name":"Identifier","src":"5048:10:26"}],"id":3256,"name":"Return","src":"5041:17:26"}],"id":3257,"name":"Block","src":"4972:93:26"}],"id":3258,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3274,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3259,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":3260,"name":"VariableDeclaration","src":"5187:10:26"}],"id":3261,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3274,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3262,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":3263,"name":"VariableDeclaration","src":"5222:4:26"}],"id":3264,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,3266,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":3273,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3265,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":3266,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3267,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3260,"type":"address","value":"_a"},"id":3268,"name":"Identifier","src":"5282:2:26"}],"id":3269,"name":"FunctionCall","src":"5268:17:26"}],"id":3270,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":3264},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3266,"type":"bool","value":"loadable"},"id":3271,"name":"Identifier","src":"5302:8:26"}],"id":3272,"name":"Return","src":"5295:15:26"}],"id":3273,"name":"Block","src":"5228:89:26"}],"id":3274,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3275,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3288,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3276,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":3277,"name":"VariableDeclaration","src":"5482:7:26"}],"id":3278,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":3278},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":4716,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3279,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3280,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3281,"name":"Identifier","src":"5536:19:26"}],"id":3282,"name":"FunctionCall","src":"5524:32:26"}],"id":3283,"name":"FunctionCall","src":"5508:49:26"}],"id":3284,"name":"MemberAccess","src":"5508:60:26"}],"id":3285,"name":"FunctionCall","src":"5508:62:26"}],"id":3286,"name":"Return","src":"5501:69:26"}],"id":3287,"name":"Block","src":"5491:86:26"}],"id":3288,"name":"FunctionDefinition","src":"5436:141:26"}],"id":3289,"name":"ContractDefinition","src":"958:4621:26"}],"id":3290,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[3329]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3291,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":2391,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3330,"symbolAliases":[null],"unitAlias":""},"id":3292,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":2610,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":3330,"symbolAliases":[null],"unitAlias":""},"id":3293,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[3329],"name":"Transferrable","scope":3330},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2609,"type":"library SafeERC20"},"id":3294,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":3295,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":3296,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":3329,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3328,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3297,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":3298,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":3328,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3299,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":3300,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":3328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3301,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":3302,"name":"VariableDeclaration","src":"1426:15:27"}],"id":3303,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":3304,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"address","value":"_asset"},"id":3305,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3306,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3307,"name":"Literal","src":"1528:1:27"}],"id":3308,"name":"FunctionCall","src":"1520:10:27"}],"id":3309,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"address payable","value":"_to"},"id":3310,"name":"Identifier","src":"1546:3:27"}],"id":3312,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3302,"type":"uint256","value":"_amount"},"id":3313,"name":"Identifier","src":"1559:7:27"}],"id":3314,"name":"FunctionCall","src":"1546:21:27"}],"id":3315,"name":"ExpressionStatement","src":"1546:21:27"}],"id":3316,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":2423,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":3317,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"address","value":"_asset"},"id":3318,"name":"Identifier","src":"1604:6:27"}],"id":3319,"name":"FunctionCall","src":"1598:13:27"}],"id":3320,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"address payable","value":"_to"},"id":3321,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3302,"type":"uint256","value":"_amount"},"id":3322,"name":"Identifier","src":"1630:7:27"}],"id":3323,"name":"FunctionCall","src":"1598:40:27"}],"id":3324,"name":"ExpressionStatement","src":"1598:40:27"}],"id":3325,"name":"Block","src":"1584:65:27"}],"id":3326,"name":"IfStatement","src":"1506:143:27"}],"id":3327,"name":"Block","src":"1452:203:27"}],"id":3328,"name":"FunctionDefinition","src":"1366:289:27"}],"id":3329,"name":"ContractDefinition","src":"961:696:27"}],"id":3330,"name":"SourceUnit","src":"773:885:27"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[3349],"Licence":[3873]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3331,"name":"PragmaDirective","src":"767:24:28"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3332,"name":"ImportDirective","src":"793:34:28"},{"attributes":{"SourceUnit":2610,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3333,"name":"ImportDirective","src":"828:35:28"},{"attributes":{"SourceUnit":2871,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3334,"name":"ImportDirective","src":"864:38:28"},{"attributes":{"SourceUnit":2916,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3335,"name":"ImportDirective","src":"903:39:28"},{"attributes":{"SourceUnit":3330,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3336,"name":"ImportDirective","src":"943:39:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[3349],"name":"ILicence","scope":3874},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":3349,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3337,"name":"ElementaryTypeName","src":"1125:7:28"}],"id":3338,"name":"VariableDeclaration","src":"1125:7:28"},{"attributes":{"constant":false,"name":"","scope":3343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3339,"name":"ElementaryTypeName","src":"1134:7:28"}],"id":3340,"name":"VariableDeclaration","src":"1134:7:28"}],"id":3341,"name":"ParameterList","src":"1124:18:28"},{"attributes":{"parameters":[null]},"children":[],"id":3342,"name":"ParameterList","src":"1159:0:28"}],"id":3343,"name":"FunctionDefinition","src":"1111:49:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":3349,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3344,"name":"ElementaryTypeName","src":"1195:7:28"}],"id":3345,"name":"VariableDeclaration","src":"1195:7:28"}],"id":3346,"name":"ParameterList","src":"1194:9:28"},{"attributes":{"parameters":[null]},"children":[],"id":3347,"name":"ParameterList","src":"1212:0:28"}],"id":3348,"name":"FunctionDefinition","src":"1166:47:28"}],"id":3349,"name":"ContractDefinition","src":"1086:129:28"},{"attributes":{"contractDependencies":[2870,2915,3329],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[3873,2870,2915,3329],"name":"Licence","scope":3874},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3329,"type":"contract Transferrable"},"id":3350,"name":"UserDefinedTypeName","src":"1401:13:28"}],"id":3351,"name":"InheritanceSpecifier","src":"1401:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":3352,"name":"UserDefinedTypeName","src":"1416:13:28"}],"id":3353,"name":"InheritanceSpecifier","src":"1416:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2870,"type":"contract Controllable"},"id":3354,"name":"UserDefinedTypeName","src":"1431:12:28"}],"id":3355,"name":"InheritanceSpecifier","src":"1431:12:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":3356,"name":"UserDefinedTypeName","src":"1456:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":3357,"name":"ElementaryTypeName","src":"1469:7:28"}],"id":3358,"name":"UsingForDirective","src":"1450:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2609,"type":"library SafeERC20"},"id":3359,"name":"UserDefinedTypeName","src":"1488:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":3360,"name":"UserDefinedTypeName","src":"1502:5:28"}],"id":3361,"name":"UsingForDirective","src":"1482:26:28"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":3365,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3362,"name":"ElementaryTypeName","src":"1614:7:28"}],"id":3363,"name":"VariableDeclaration","src":"1614:15:28"}],"id":3364,"name":"ParameterList","src":"1613:17:28"}],"id":3365,"name":"EventDefinition","src":"1590:41:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":3369,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3366,"name":"ElementaryTypeName","src":"1661:7:28"}],"id":3367,"name":"VariableDeclaration","src":"1661:17:28"}],"id":3368,"name":"ParameterList","src":"1660:19:28"}],"id":3369,"name":"EventDefinition","src":"1636:44:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":3373,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3370,"name":"ElementaryTypeName","src":"1710:7:28"}],"id":3371,"name":"VariableDeclaration","src":"1710:18:28"}],"id":3372,"name":"ParameterList","src":"1709:20:28"}],"id":3373,"name":"EventDefinition","src":"1685:45:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":3377,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3374,"name":"ElementaryTypeName","src":"1767:7:28"}],"id":3375,"name":"VariableDeclaration","src":"1767:15:28"}],"id":3376,"name":"ParameterList","src":"1766:17:28"}],"id":3377,"name":"EventDefinition","src":"1735:49:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":3381,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3378,"name":"ElementaryTypeName","src":"1816:7:28"}],"id":3379,"name":"VariableDeclaration","src":"1816:18:28"}],"id":3380,"name":"ParameterList","src":"1815:20:28"}],"id":3381,"name":"EventDefinition","src":"1789:47:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3391,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3382,"name":"ElementaryTypeName","src":"1873:7:28"}],"id":3383,"name":"VariableDeclaration","src":"1873:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3391,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3384,"name":"ElementaryTypeName","src":"1888:7:28"}],"id":3385,"name":"VariableDeclaration","src":"1888:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3391,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3386,"name":"ElementaryTypeName","src":"1901:7:28"}],"id":3387,"name":"VariableDeclaration","src":"1901:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3391,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3388,"name":"ElementaryTypeName","src":"1917:7:28"}],"id":3389,"name":"VariableDeclaration","src":"1917:15:28"}],"id":3390,"name":"ParameterList","src":"1872:61:28"}],"id":3391,"name":"EventDefinition","src":"1842:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3392,"name":"ElementaryTypeName","src":"1970:7:28"}],"id":3393,"name":"VariableDeclaration","src":"1970:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3394,"name":"ElementaryTypeName","src":"1985:7:28"}],"id":3395,"name":"VariableDeclaration","src":"1985:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3396,"name":"ElementaryTypeName","src":"1998:7:28"}],"id":3397,"name":"VariableDeclaration","src":"1998:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3401,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3398,"name":"ElementaryTypeName","src":"2014:7:28"}],"id":3399,"name":"VariableDeclaration","src":"2014:15:28"}],"id":3400,"name":"ParameterList","src":"1969:61:28"}],"id":3401,"name":"EventDefinition","src":"1939:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3409,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3402,"name":"ElementaryTypeName","src":"2051:7:28"}],"id":3403,"name":"VariableDeclaration","src":"2051:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3409,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3404,"name":"ElementaryTypeName","src":"2064:7:28"}],"id":3405,"name":"VariableDeclaration","src":"2064:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3409,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3406,"name":"ElementaryTypeName","src":"2080:7:28"}],"id":3407,"name":"VariableDeclaration","src":"2080:15:28"}],"id":3408,"name":"ParameterList","src":"2050:46:28"}],"id":3409,"name":"EventDefinition","src":"2037:60:28"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":3873,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3410,"name":"ElementaryTypeName","src":"2209:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":3411,"name":"Literal","src":"2252:4:28"}],"id":3412,"name":"VariableDeclaration","src":"2209:47:28"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":3873,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3413,"name":"ElementaryTypeName","src":"2262:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3414,"name":"Literal","src":"2305:1:28"}],"id":3415,"name":"VariableDeclaration","src":"2262:44:28"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":3873,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3416,"name":"ElementaryTypeName","src":"2313:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":3417,"name":"Literal","src":"2351:42:28"}],"id":3418,"name":"VariableDeclaration","src":"2313:80:28"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":3873,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3419,"name":"ElementaryTypeName","src":"2433:15:28"}],"id":3420,"name":"VariableDeclaration","src":"2433:36:28"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":3873,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3421,"name":"ElementaryTypeName","src":"2475:15:28"}],"id":3422,"name":"VariableDeclaration","src":"2475:36:28"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":3873,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3423,"name":"ElementaryTypeName","src":"2517:7:28"}],"id":3424,"name":"VariableDeclaration","src":"2517:27:28"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":3873,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3425,"name":"ElementaryTypeName","src":"2551:4:28"}],"id":3426,"name":"VariableDeclaration","src":"2551:31:28"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":3873,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3427,"name":"ElementaryTypeName","src":"2588:4:28"}],"id":3428,"name":"VariableDeclaration","src":"2588:31:28"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":3873,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3429,"name":"ElementaryTypeName","src":"2625:4:28"}],"id":3430,"name":"VariableDeclaration","src":"2625:30:28"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":3873,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3431,"name":"ElementaryTypeName","src":"2661:4:28"}],"id":3432,"name":"VariableDeclaration","src":"2661:38:28"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":3873,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3433,"name":"ElementaryTypeName","src":"2853:7:28"}],"id":3434,"name":"VariableDeclaration","src":"2853:36:28"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3435,"name":"ParameterList","src":"2990:2:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3436,"name":"Identifier","src":"3003:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3437,"name":"Identifier","src":"3011:3:28"}],"id":3438,"name":"MemberAccess","src":"3011:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"address","value":"_licenceDAO"},"id":3439,"name":"Identifier","src":"3025:11:28"}],"id":3440,"name":"BinaryOperation","src":"3011:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":3441,"name":"Literal","src":"3038:26:28"}],"id":3442,"name":"FunctionCall","src":"3003:62:28"}],"id":3443,"name":"ExpressionStatement","src":"3003:62:28"},{"id":3444,"name":"PlaceholderStatement","src":"3075:1:28"}],"id":3445,"name":"Block","src":"2993:90:28"}],"id":3446,"name":"ModifierDefinition","src":"2974:109:28"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3447,"name":"ElementaryTypeName","src":"3628:7:28"}],"id":3448,"name":"VariableDeclaration","src":"3628:17:28"},{"attributes":{"constant":false,"name":"_float_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3449,"name":"ElementaryTypeName","src":"3647:15:28"}],"id":3450,"name":"VariableDeclaration","src":"3647:23:28"},{"attributes":{"constant":false,"name":"_holder_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3451,"name":"ElementaryTypeName","src":"3672:15:28"}],"id":3452,"name":"VariableDeclaration","src":"3672:24:28"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3453,"name":"ElementaryTypeName","src":"3698:7:28"}],"id":3454,"name":"VariableDeclaration","src":"3698:20:28"},{"attributes":{"constant":false,"name":"_ens_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3455,"name":"ElementaryTypeName","src":"3720:7:28"}],"id":3456,"name":"VariableDeclaration","src":"3720:13:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3457,"name":"ElementaryTypeName","src":"3735:7:28"}],"id":3458,"name":"VariableDeclaration","src":"3735:24:28"}],"id":3459,"name":"ParameterList","src":"3627:133:28"},{"attributes":{"parameters":[null]},"children":[],"id":3466,"name":"ParameterList","src":"3848:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":3460,"name":"Identifier","src":"3784:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3456,"type":"address","value":"_ens_"},"id":3461,"name":"Identifier","src":"3798:5:28"}],"id":3462,"name":"ModifierInvocation","src":"3784:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"type(contract Controllable)","value":"Controllable"},"id":3463,"name":"Identifier","src":"3813:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3458,"type":"bytes32","value":"_controllerNode_"},"id":3464,"name":"Identifier","src":"3826:16:28"}],"id":3465,"name":"ModifierInvocation","src":"3813:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3467,"name":"Identifier","src":"3858:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3415,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":3468,"name":"Identifier","src":"3866:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3448,"type":"uint256","value":"_licence_"},"id":3469,"name":"Identifier","src":"3886:9:28"}],"id":3470,"name":"BinaryOperation","src":"3866:29:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3448,"type":"uint256","value":"_licence_"},"id":3471,"name":"Identifier","src":"3899:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3472,"name":"Identifier","src":"3912:16:28"}],"id":3473,"name":"BinaryOperation","src":"3899:29:28"}],"id":3474,"name":"BinaryOperation","src":"3866:62:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":3475,"name":"Literal","src":"3930:29:28"}],"id":3476,"name":"FunctionCall","src":"3858:102:28"}],"id":3477,"name":"ExpressionStatement","src":"3858:102:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3434,"type":"uint256","value":"_licenceAmountScaled"},"id":3478,"name":"Identifier","src":"3970:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3448,"type":"uint256","value":"_licence_"},"id":3479,"name":"Identifier","src":"3993:9:28"}],"id":3480,"name":"Assignment","src":"3970:32:28"}],"id":3481,"name":"ExpressionStatement","src":"3970:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3482,"name":"Identifier","src":"4012:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"address payable","value":"_float_"},"id":3483,"name":"Identifier","src":"4027:7:28"}],"id":3484,"name":"Assignment","src":"4012:22:28"}],"id":3485,"name":"ExpressionStatement","src":"4012:22:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3486,"name":"Identifier","src":"4044:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3452,"type":"address payable","value":"_holder_"},"id":3487,"name":"Identifier","src":"4059:8:28"}],"id":3488,"name":"Assignment","src":"4044:23:28"}],"id":3489,"name":"ExpressionStatement","src":"4044:23:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3454,"type":"address","value":"_tknAddress_"},"id":3490,"name":"Identifier","src":"4081:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3491,"name":"ElementaryTypeNameExpression","src":"4097:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3492,"name":"Literal","src":"4105:1:28"}],"id":3493,"name":"FunctionCall","src":"4097:10:28"}],"id":3494,"name":"BinaryOperation","src":"4081:26:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3418,"type":"address","value":"_tknContractAddress"},"id":3495,"name":"Identifier","src":"4123:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3454,"type":"address","value":"_tknAddress_"},"id":3496,"name":"Identifier","src":"4145:12:28"}],"id":3497,"name":"Assignment","src":"4123:34:28"}],"id":3498,"name":"ExpressionStatement","src":"4123:34:28"}],"id":3499,"name":"Block","src":"4109:59:28"}],"id":3500,"name":"IfStatement","src":"4077:91:28"}],"id":3501,"name":"Block","src":"3848:326:28"}],"id":3502,"name":"FunctionDefinition","src":"3616:558:28"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":3873,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3503,"name":"ParameterList","src":"4290:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3504,"name":"ParameterList","src":"4310:0:28"},{"attributes":{"statements":[null]},"children":[],"id":3505,"name":"Block","src":"4310:2:28"}],"id":3506,"name":"FunctionDefinition","src":"4282:30:28"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3507,"name":"ParameterList","src":"4503:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3514,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3508,"name":"ElementaryTypeName","src":"4529:7:28"}],"id":3509,"name":"VariableDeclaration","src":"4529:7:28"}],"id":3510,"name":"ParameterList","src":"4528:9:28"},{"children":[{"attributes":{"functionReturnParameters":3510},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3434,"type":"uint256","value":"_licenceAmountScaled"},"id":3511,"name":"Identifier","src":"4555:20:28"}],"id":3512,"name":"Return","src":"4548:27:28"}],"id":3513,"name":"Block","src":"4538:44:28"}],"id":3514,"name":"FunctionDefinition","src":"4475:107:28"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3515,"name":"ParameterList","src":"4749:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3522,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3516,"name":"ElementaryTypeName","src":"4775:7:28"}],"id":3517,"name":"VariableDeclaration","src":"4775:7:28"}],"id":3518,"name":"ParameterList","src":"4774:9:28"},{"children":[{"attributes":{"functionReturnParameters":3518},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3519,"name":"Identifier","src":"4801:12:28"}],"id":3520,"name":"Return","src":"4794:19:28"}],"id":3521,"name":"Block","src":"4784:36:28"}],"id":3522,"name":"FunctionDefinition","src":"4729:91:28"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3523,"name":"ParameterList","src":"4970:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3530,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3524,"name":"ElementaryTypeName","src":"4996:7:28"}],"id":3525,"name":"VariableDeclaration","src":"4996:7:28"}],"id":3526,"name":"ParameterList","src":"4995:9:28"},{"children":[{"attributes":{"functionReturnParameters":3526},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3527,"name":"Identifier","src":"5022:12:28"}],"id":3528,"name":"Return","src":"5015:19:28"}],"id":3529,"name":"Block","src":"5005:36:28"}],"id":3530,"name":"FunctionDefinition","src":"4950:91:28"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3531,"name":"ParameterList","src":"5172:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3538,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3532,"name":"ElementaryTypeName","src":"5198:7:28"}],"id":3533,"name":"VariableDeclaration","src":"5198:7:28"}],"id":3534,"name":"ParameterList","src":"5197:9:28"},{"children":[{"attributes":{"functionReturnParameters":3534},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"address","value":"_licenceDAO"},"id":3535,"name":"Identifier","src":"5224:11:28"}],"id":3536,"name":"Return","src":"5217:18:28"}],"id":3537,"name":"Block","src":"5207:35:28"}],"id":3538,"name":"FunctionDefinition","src":"5153:89:28"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3539,"name":"ParameterList","src":"5369:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3546,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3540,"name":"ElementaryTypeName","src":"5395:7:28"}],"id":3541,"name":"VariableDeclaration","src":"5395:7:28"}],"id":3542,"name":"ParameterList","src":"5394:9:28"},{"children":[{"attributes":{"functionReturnParameters":3542},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3418,"type":"address","value":"_tknContractAddress"},"id":3543,"name":"Identifier","src":"5421:19:28"}],"id":3544,"name":"Return","src":"5414:26:28"}],"id":3545,"name":"Block","src":"5404:43:28"}],"id":3546,"name":"FunctionDefinition","src":"5342:105:28"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3547,"name":"ParameterList","src":"5571:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3550,"name":"ParameterList","src":"5593:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3548,"name":"Identifier","src":"5583:9:28"}],"id":3549,"name":"ModifierInvocation","src":"5583:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3426,"type":"bool","value":"_lockedCryptoFloat"},"id":3551,"name":"Identifier","src":"5603:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3552,"name":"Literal","src":"5624:4:28"}],"id":3553,"name":"Assignment","src":"5603:25:28"}],"id":3554,"name":"ExpressionStatement","src":"5603:25:28"}],"id":3555,"name":"Block","src":"5593:42:28"}],"id":3556,"name":"FunctionDefinition","src":"5553:82:28"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3557,"name":"ParameterList","src":"5760:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3560,"name":"ParameterList","src":"5782:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3558,"name":"Identifier","src":"5772:9:28"}],"id":3559,"name":"ModifierInvocation","src":"5772:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3428,"type":"bool","value":"_lockedTokenHolder"},"id":3561,"name":"Identifier","src":"5792:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3562,"name":"Literal","src":"5813:4:28"}],"id":3563,"name":"Assignment","src":"5792:25:28"}],"id":3564,"name":"ExpressionStatement","src":"5792:25:28"}],"id":3565,"name":"Block","src":"5782:42:28"}],"id":3566,"name":"FunctionDefinition","src":"5741:83:28"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3567,"name":"ParameterList","src":"5945:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3570,"name":"ParameterList","src":"5967:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3568,"name":"Identifier","src":"5957:9:28"}],"id":3569,"name":"ModifierInvocation","src":"5957:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"bool","value":"_lockedLicenceDAO"},"id":3571,"name":"Identifier","src":"5977:17:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3572,"name":"Literal","src":"5997:4:28"}],"id":3573,"name":"Assignment","src":"5977:24:28"}],"id":3574,"name":"ExpressionStatement","src":"5977:24:28"}],"id":3575,"name":"Block","src":"5967:41:28"}],"id":3576,"name":"FunctionDefinition","src":"5922:86:28"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3577,"name":"ParameterList","src":"6137:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3580,"name":"ParameterList","src":"6159:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3578,"name":"Identifier","src":"6149:9:28"}],"id":3579,"name":"ModifierInvocation","src":"6149:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"bool","value":"_lockedTKNContractAddress"},"id":3581,"name":"Identifier","src":"6169:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3582,"name":"Literal","src":"6197:4:28"}],"id":3583,"name":"Assignment","src":"6169:32:28"}],"id":3584,"name":"ExpressionStatement","src":"6169:32:28"}],"id":3585,"name":"Block","src":"6159:49:28"}],"id":3586,"name":"FunctionDefinition","src":"6106:102:28"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":3609,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3587,"name":"ElementaryTypeName","src":"6359:15:28"}],"id":3588,"name":"VariableDeclaration","src":"6359:25:28"}],"id":3589,"name":"ParameterList","src":"6358:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":3592,"name":"ParameterList","src":"6405:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3590,"name":"Identifier","src":"6395:9:28"}],"id":3591,"name":"ModifierInvocation","src":"6395:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3593,"name":"Identifier","src":"6415:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"function () view returns (bool)","value":"floatLocked"},"id":3594,"name":"Identifier","src":"6424:11:28"}],"id":3595,"name":"FunctionCall","src":"6424:13:28"}],"id":3596,"name":"UnaryOperation","src":"6423:14:28"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":3597,"name":"Literal","src":"6439:17:28"}],"id":3598,"name":"FunctionCall","src":"6415:42:28"}],"id":3599,"name":"ExpressionStatement","src":"6415:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3600,"name":"Identifier","src":"6467:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3588,"type":"address payable","value":"_newFloat"},"id":3601,"name":"Identifier","src":"6482:9:28"}],"id":3602,"name":"Assignment","src":"6467:24:28"}],"id":3603,"name":"ExpressionStatement","src":"6467:24:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":3604,"name":"Identifier","src":"6506:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3588,"type":"address payable","value":"_newFloat"},"id":3605,"name":"Identifier","src":"6525:9:28"}],"id":3606,"name":"FunctionCall","src":"6506:29:28"}],"id":3607,"name":"EmitStatement","src":"6501:34:28"}],"id":3608,"name":"Block","src":"6405:137:28"}],"id":3609,"name":"FunctionDefinition","src":"6338:204:28"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":3632,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3610,"name":"ElementaryTypeName","src":"6700:15:28"}],"id":3611,"name":"VariableDeclaration","src":"6700:26:28"}],"id":3612,"name":"ParameterList","src":"6699:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":3615,"name":"ParameterList","src":"6747:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3613,"name":"Identifier","src":"6737:9:28"}],"id":3614,"name":"ModifierInvocation","src":"6737:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3616,"name":"Identifier","src":"6757:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3856,"type":"function () view returns (bool)","value":"holderLocked"},"id":3617,"name":"Identifier","src":"6766:12:28"}],"id":3618,"name":"FunctionCall","src":"6766:14:28"}],"id":3619,"name":"UnaryOperation","src":"6765:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":3620,"name":"Literal","src":"6782:27:28"}],"id":3621,"name":"FunctionCall","src":"6757:53:28"}],"id":3622,"name":"ExpressionStatement","src":"6757:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3623,"name":"Identifier","src":"6820:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3611,"type":"address payable","value":"_newHolder"},"id":3624,"name":"Identifier","src":"6835:10:28"}],"id":3625,"name":"Assignment","src":"6820:25:28"}],"id":3626,"name":"ExpressionStatement","src":"6820:25:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3373,"type":"function (address)","value":"UpdatedTokenHolder"},"id":3627,"name":"Identifier","src":"6860:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3611,"type":"address payable","value":"_newHolder"},"id":3628,"name":"Identifier","src":"6879:10:28"}],"id":3629,"name":"FunctionCall","src":"6860:30:28"}],"id":3630,"name":"EmitStatement","src":"6855:35:28"}],"id":3631,"name":"Block","src":"6747:150:28"}],"id":3632,"name":"FunctionDefinition","src":"6678:219:28"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":3655,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3633,"name":"ElementaryTypeName","src":"7053:7:28"}],"id":3634,"name":"VariableDeclaration","src":"7053:15:28"}],"id":3635,"name":"ParameterList","src":"7052:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":3638,"name":"ParameterList","src":"7089:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3636,"name":"Identifier","src":"7079:9:28"}],"id":3637,"name":"ModifierInvocation","src":"7079:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3639,"name":"Identifier","src":"7099:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3864,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":3640,"name":"Identifier","src":"7108:16:28"}],"id":3641,"name":"FunctionCall","src":"7108:18:28"}],"id":3642,"name":"UnaryOperation","src":"7107:19:28"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":3643,"name":"Literal","src":"7128:15:28"}],"id":3644,"name":"FunctionCall","src":"7099:45:28"}],"id":3645,"name":"ExpressionStatement","src":"7099:45:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"address","value":"_licenceDAO"},"id":3646,"name":"Identifier","src":"7154:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3634,"type":"address","value":"_newDAO"},"id":3647,"name":"Identifier","src":"7168:7:28"}],"id":3648,"name":"Assignment","src":"7154:21:28"}],"id":3649,"name":"ExpressionStatement","src":"7154:21:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3365,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":3650,"name":"Identifier","src":"7190:17:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3634,"type":"address","value":"_newDAO"},"id":3651,"name":"Identifier","src":"7208:7:28"}],"id":3652,"name":"FunctionCall","src":"7190:26:28"}],"id":3653,"name":"EmitStatement","src":"7185:31:28"}],"id":3654,"name":"Block","src":"7089:134:28"}],"id":3655,"name":"FunctionDefinition","src":"7027:196:28"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":3678,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3656,"name":"ElementaryTypeName","src":"7388:7:28"}],"id":3657,"name":"VariableDeclaration","src":"7388:15:28"}],"id":3658,"name":"ParameterList","src":"7387:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":3661,"name":"ParameterList","src":"7424:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3659,"name":"Identifier","src":"7414:9:28"}],"id":3660,"name":"ModifierInvocation","src":"7414:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3662,"name":"Identifier","src":"7434:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3872,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":3663,"name":"Identifier","src":"7443:24:28"}],"id":3664,"name":"FunctionCall","src":"7443:26:28"}],"id":3665,"name":"UnaryOperation","src":"7442:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":3666,"name":"Literal","src":"7471:15:28"}],"id":3667,"name":"FunctionCall","src":"7434:53:28"}],"id":3668,"name":"ExpressionStatement","src":"7434:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3418,"type":"address","value":"_tknContractAddress"},"id":3669,"name":"Identifier","src":"7497:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"address","value":"_newTKN"},"id":3670,"name":"Identifier","src":"7519:7:28"}],"id":3671,"name":"Assignment","src":"7497:29:28"}],"id":3672,"name":"ExpressionStatement","src":"7497:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":3673,"name":"Identifier","src":"7541:25:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"address","value":"_newTKN"},"id":3674,"name":"Identifier","src":"7567:7:28"}],"id":3675,"name":"FunctionCall","src":"7541:34:28"}],"id":3676,"name":"EmitStatement","src":"7536:39:28"}],"id":3677,"name":"Block","src":"7424:158:28"}],"id":3678,"name":"FunctionDefinition","src":"7354:228:28"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":3705,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3679,"name":"ElementaryTypeName","src":"7752:7:28"}],"id":3680,"name":"VariableDeclaration","src":"7752:18:28"}],"id":3681,"name":"ParameterList","src":"7751:20:28"},{"attributes":{"parameters":[null]},"children":[],"id":3684,"name":"ParameterList","src":"7789:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3446,"type":"modifier ()","value":"onlyDAO"},"id":3682,"name":"Identifier","src":"7781:7:28"}],"id":3683,"name":"ModifierInvocation","src":"7781:7:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3685,"name":"Identifier","src":"7799:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3415,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":3686,"name":"Identifier","src":"7807:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3680,"type":"uint256","value":"_newAmount"},"id":3687,"name":"Identifier","src":"7827:10:28"}],"id":3688,"name":"BinaryOperation","src":"7807:30:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3680,"type":"uint256","value":"_newAmount"},"id":3689,"name":"Identifier","src":"7841:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3690,"name":"Identifier","src":"7855:16:28"}],"id":3691,"name":"BinaryOperation","src":"7841:30:28"}],"id":3692,"name":"BinaryOperation","src":"7807:64:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":3693,"name":"Literal","src":"7873:29:28"}],"id":3694,"name":"FunctionCall","src":"7799:104:28"}],"id":3695,"name":"ExpressionStatement","src":"7799:104:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3434,"type":"uint256","value":"_licenceAmountScaled"},"id":3696,"name":"Identifier","src":"7913:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3680,"type":"uint256","value":"_newAmount"},"id":3697,"name":"Identifier","src":"7936:10:28"}],"id":3698,"name":"Assignment","src":"7913:33:28"}],"id":3699,"name":"ExpressionStatement","src":"7913:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3381,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":3700,"name":"Identifier","src":"7961:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3680,"type":"uint256","value":"_newAmount"},"id":3701,"name":"Identifier","src":"7982:10:28"}],"id":3702,"name":"FunctionCall","src":"7961:32:28"}],"id":3703,"name":"EmitStatement","src":"7956:37:28"}],"id":3704,"name":"Block","src":"7789:211:28"}],"id":3705,"name":"FunctionDefinition","src":"7723:277:28"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":3873,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":3816,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3706,"name":"ElementaryTypeName","src":"8286:7:28"}],"id":3707,"name":"VariableDeclaration","src":"8286:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":3816,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3708,"name":"ElementaryTypeName","src":"8302:7:28"}],"id":3709,"name":"VariableDeclaration","src":"8302:15:28"}],"id":3710,"name":"ParameterList","src":"8285:33:28"},{"attributes":{"parameters":[null]},"children":[],"id":3711,"name":"ParameterList","src":"8336:0:28"},{"children":[{"attributes":{"assignments":[3713]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":3815,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3712,"name":"ElementaryTypeName","src":"8346:7:28"}],"id":3713,"name":"VariableDeclaration","src":"8346:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3709,"type":"uint256","value":"_amount"},"id":3714,"name":"Identifier","src":"8367:7:28"}],"id":3715,"name":"VariableDeclarationStatement","src":"8346:28:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3716,"name":"Identifier","src":"8433:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3418,"type":"address","value":"_tknContractAddress"},"id":3717,"name":"Identifier","src":"8443:19:28"}],"id":3718,"name":"BinaryOperation","src":"8433:29:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2448,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":3719,"name":"Identifier","src":"8478:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3720,"name":"Identifier","src":"8484:6:28"}],"id":3721,"name":"FunctionCall","src":"8478:13:28"}],"id":3722,"name":"MemberAccess","src":"8478:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3723,"name":"Identifier","src":"8509:3:28"}],"id":3724,"name":"MemberAccess","src":"8509:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3725,"name":"Identifier","src":"8521:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3726,"name":"Identifier","src":"8535:10:28"}],"id":3727,"name":"FunctionCall","src":"8478:68:28"}],"id":3728,"name":"ExpressionStatement","src":"8478:68:28"}],"id":3729,"name":"Block","src":"8464:93:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3730,"name":"Identifier","src":"8577:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2720,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2695,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3709,"type":"uint256","value":"_amount"},"id":3731,"name":"Identifier","src":"8590:7:28"}],"id":3732,"name":"MemberAccess","src":"8590:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3733,"name":"Identifier","src":"8602:16:28"}],"id":3734,"name":"FunctionCall","src":"8590:29:28"}],"id":3735,"name":"MemberAccess","src":"8590:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3434,"type":"uint256","value":"_licenceAmountScaled"},"id":3736,"name":"Identifier","src":"8624:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3737,"name":"Identifier","src":"8647:16:28"}],"id":3738,"name":"BinaryOperation","src":"8624:39:28"}],"id":3739,"name":"FunctionCall","src":"8590:74:28"}],"id":3740,"name":"Assignment","src":"8577:87:28"}],"id":3741,"name":"ExpressionStatement","src":"8577:87:28"},{"attributes":{"assignments":[3743]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":3805,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3742,"name":"ElementaryTypeName","src":"8678:7:28"}],"id":3743,"name":"VariableDeclaration","src":"8678:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3709,"type":"uint256","value":"_amount"},"id":3744,"name":"Identifier","src":"8702:7:28"}],"id":3745,"name":"MemberAccess","src":"8702:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3746,"name":"Identifier","src":"8714:10:28"}],"id":3747,"name":"FunctionCall","src":"8702:23:28"}],"id":3748,"name":"VariableDeclarationStatement","src":"8678:47:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3749,"name":"Identifier","src":"8744:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3750,"name":"ElementaryTypeNameExpression","src":"8754:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3751,"name":"Literal","src":"8762:1:28"}],"id":3752,"name":"FunctionCall","src":"8754:10:28"}],"id":3753,"name":"BinaryOperation","src":"8744:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2448,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":3754,"name":"Identifier","src":"8784:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3755,"name":"Identifier","src":"8790:6:28"}],"id":3756,"name":"FunctionCall","src":"8784:13:28"}],"id":3757,"name":"MemberAccess","src":"8784:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3758,"name":"Identifier","src":"8815:3:28"}],"id":3759,"name":"MemberAccess","src":"8815:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3760,"name":"Identifier","src":"8827:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3743,"type":"uint256","value":"licenceAmount"},"id":3761,"name":"Identifier","src":"8841:13:28"}],"id":3762,"name":"FunctionCall","src":"8784:71:28"}],"id":3763,"name":"ExpressionStatement","src":"8784:71:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2448,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":3764,"name":"Identifier","src":"8873:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3765,"name":"Identifier","src":"8879:6:28"}],"id":3766,"name":"FunctionCall","src":"8873:13:28"}],"id":3767,"name":"MemberAccess","src":"8873:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3768,"name":"Identifier","src":"8904:3:28"}],"id":3769,"name":"MemberAccess","src":"8904:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3770,"name":"Identifier","src":"8916:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3771,"name":"Identifier","src":"8930:10:28"}],"id":3772,"name":"FunctionCall","src":"8873:68:28"}],"id":3773,"name":"ExpressionStatement","src":"8873:68:28"}],"id":3774,"name":"Block","src":"8766:190:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3775,"name":"Identifier","src":"8980:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3776,"name":"Identifier","src":"8988:3:28"}],"id":3777,"name":"MemberAccess","src":"8988:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3709,"type":"uint256","value":"_amount"},"id":3778,"name":"Identifier","src":"9001:7:28"}],"id":3779,"name":"BinaryOperation","src":"8988:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":3780,"name":"Literal","src":"9010:33:28"}],"id":3781,"name":"FunctionCall","src":"8980:64:28"}],"id":3782,"name":"ExpressionStatement","src":"8980:64:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3783,"name":"Identifier","src":"9062:12:28"}],"id":3785,"name":"MemberAccess","src":"9062:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3743,"type":"uint256","value":"licenceAmount"},"id":3786,"name":"Identifier","src":"9084:13:28"}],"id":3787,"name":"FunctionCall","src":"9062:36:28"}],"id":3788,"name":"ExpressionStatement","src":"9062:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3789,"name":"Identifier","src":"9116:12:28"}],"id":3791,"name":"MemberAccess","src":"9116:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3792,"name":"Identifier","src":"9138:10:28"}],"id":3793,"name":"FunctionCall","src":"9116:33:28"}],"id":3794,"name":"ExpressionStatement","src":"9116:33:28"}],"id":3795,"name":"Block","src":"8962:202:28"}],"id":3796,"name":"IfStatement","src":"8740:424:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3391,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":3797,"name":"Identifier","src":"9183:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3798,"name":"Identifier","src":"9208:3:28"}],"id":3799,"name":"MemberAccess","src":"9208:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3800,"name":"Identifier","src":"9220:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3801,"name":"Identifier","src":"9234:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3743,"type":"uint256","value":"licenceAmount"},"id":3802,"name":"Identifier","src":"9242:13:28"}],"id":3803,"name":"FunctionCall","src":"9183:73:28"}],"id":3804,"name":"EmitStatement","src":"9178:78:28"}],"id":3805,"name":"Block","src":"8563:704:28"}],"id":3806,"name":"IfStatement","src":"8429:838:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3401,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":3807,"name":"Identifier","src":"9282:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3808,"name":"Identifier","src":"9307:3:28"}],"id":3809,"name":"MemberAccess","src":"9307:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3810,"name":"Identifier","src":"9319:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3811,"name":"Identifier","src":"9333:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3812,"name":"Identifier","src":"9341:10:28"}],"id":3813,"name":"FunctionCall","src":"9282:70:28"}],"id":3814,"name":"EmitStatement","src":"9277:75:28"}],"id":3815,"name":"Block","src":"8336:1023:28"}],"id":3816,"name":"FunctionDefinition","src":"8272:1087:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3840,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3817,"name":"ElementaryTypeName","src":"9463:15:28"}],"id":3818,"name":"VariableDeclaration","src":"9463:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":3840,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3819,"name":"ElementaryTypeName","src":"9484:7:28"}],"id":3820,"name":"VariableDeclaration","src":"9484:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":3840,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3821,"name":"ElementaryTypeName","src":"9500:7:28"}],"id":3822,"name":"VariableDeclaration","src":"9500:15:28"}],"id":3823,"name":"ParameterList","src":"9462:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":3826,"name":"ParameterList","src":"9536:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3824,"name":"Identifier","src":"9526:9:28"}],"id":3825,"name":"ModifierInvocation","src":"9526:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3328,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":3827,"name":"Identifier","src":"9546:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3818,"type":"address payable","value":"_to"},"id":3828,"name":"Identifier","src":"9560:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3820,"type":"address","value":"_asset"},"id":3829,"name":"Identifier","src":"9565:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3822,"type":"uint256","value":"_amount"},"id":3830,"name":"Identifier","src":"9573:7:28"}],"id":3831,"name":"FunctionCall","src":"9546:35:28"}],"id":3832,"name":"ExpressionStatement","src":"9546:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3409,"type":"function (address,address,uint256)","value":"Claimed"},"id":3833,"name":"Identifier","src":"9596:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3818,"type":"address payable","value":"_to"},"id":3834,"name":"Identifier","src":"9604:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3820,"type":"address","value":"_asset"},"id":3835,"name":"Identifier","src":"9609:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3822,"type":"uint256","value":"_amount"},"id":3836,"name":"Identifier","src":"9617:7:28"}],"id":3837,"name":"FunctionCall","src":"9596:29:28"}],"id":3838,"name":"EmitStatement","src":"9591:34:28"}],"id":3839,"name":"Block","src":"9536:96:28"}],"id":3840,"name":"FunctionDefinition","src":"9448:184:28"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3841,"name":"ParameterList","src":"9731:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3848,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3842,"name":"ElementaryTypeName","src":"9755:4:28"}],"id":3843,"name":"VariableDeclaration","src":"9755:4:28"}],"id":3844,"name":"ParameterList","src":"9754:6:28"},{"children":[{"attributes":{"functionReturnParameters":3844},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3426,"type":"bool","value":"_lockedCryptoFloat"},"id":3845,"name":"Identifier","src":"9778:18:28"}],"id":3846,"name":"Return","src":"9771:25:28"}],"id":3847,"name":"Block","src":"9761:42:28"}],"id":3848,"name":"FunctionDefinition","src":"9711:92:28"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3849,"name":"ParameterList","src":"9903:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3856,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3850,"name":"ElementaryTypeName","src":"9927:4:28"}],"id":3851,"name":"VariableDeclaration","src":"9927:4:28"}],"id":3852,"name":"ParameterList","src":"9926:6:28"},{"children":[{"attributes":{"functionReturnParameters":3852},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3428,"type":"bool","value":"_lockedTokenHolder"},"id":3853,"name":"Identifier","src":"9950:18:28"}],"id":3854,"name":"Return","src":"9943:25:28"}],"id":3855,"name":"Block","src":"9933:42:28"}],"id":3856,"name":"FunctionDefinition","src":"9882:93:28"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3857,"name":"ParameterList","src":"10079:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3864,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3858,"name":"ElementaryTypeName","src":"10103:4:28"}],"id":3859,"name":"VariableDeclaration","src":"10103:4:28"}],"id":3860,"name":"ParameterList","src":"10102:6:28"},{"children":[{"attributes":{"functionReturnParameters":3860},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"bool","value":"_lockedLicenceDAO"},"id":3861,"name":"Identifier","src":"10126:17:28"}],"id":3862,"name":"Return","src":"10119:24:28"}],"id":3863,"name":"Block","src":"10109:41:28"}],"id":3864,"name":"FunctionDefinition","src":"10054:96:28"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3865,"name":"ParameterList","src":"10254:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3872,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3866,"name":"ElementaryTypeName","src":"10278:4:28"}],"id":3867,"name":"VariableDeclaration","src":"10278:4:28"}],"id":3868,"name":"ParameterList","src":"10277:6:28"},{"children":[{"attributes":{"functionReturnParameters":3868},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"bool","value":"_lockedTKNContractAddress"},"id":3869,"name":"Identifier","src":"10301:25:28"}],"id":3870,"name":"Return","src":"10294:32:28"}],"id":3871,"name":"Block","src":"10284:49:28"}],"id":3872,"name":"FunctionDefinition","src":"10221:112:28"}],"id":3873,"name":"ContractDefinition","src":"1381:8954:28"}],"id":3874,"name":"SourceUnit","src":"767:9569:28"}},"mocks/isValidSignatureExporter.sol":{"AST":{"attributes":{"absolutePath":"mocks/isValidSignatureExporter.sol","exportedSymbols":{"IWallet":[12],"IsValidSignatureExporter":[43]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"0:24:29"},{"attributes":{"SourceUnit":2228,"absolutePath":"wallet.sol","file":"../wallet.sol","scope":44,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"26:23:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12],"name":"IWallet","scope":44},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":12,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":11,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3,"name":"ElementaryTypeName","src":"102:5:29"}],"id":4,"name":"VariableDeclaration","src":"102:14:29"},{"attributes":{"constant":false,"name":"","scope":11,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5,"name":"ElementaryTypeName","src":"118:5:29"}],"id":6,"name":"VariableDeclaration","src":"118:14:29"}],"id":7,"name":"ParameterList","src":"101:32:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":11,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8,"name":"ElementaryTypeName","src":"157:6:29"}],"id":9,"name":"VariableDeclaration","src":"157:6:29"}],"id":10,"name":"ParameterList","src":"156:8:29"}],"id":11,"name":"FunctionDefinition","src":"76:89:29"}],"id":12,"name":"ContractDefinition","src":"52:115:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[43],"name":"IsValidSignatureExporter","scope":44},"children":[{"attributes":{"constant":false,"name":"walletAddress","scope":43,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":13,"name":"ElementaryTypeName","src":"210:7:29"}],"id":14,"name":"VariableDeclaration","src":"210:21:29"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":43,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_wallet","scope":24,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":15,"name":"ElementaryTypeName","src":"250:7:29"}],"id":16,"name":"VariableDeclaration","src":"250:15:29"}],"id":17,"name":"ParameterList","src":"249:17:29"},{"attributes":{"parameters":[null]},"children":[],"id":18,"name":"ParameterList","src":"274:0:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14,"type":"address","value":"walletAddress"},"id":19,"name":"Identifier","src":"284:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":16,"type":"address","value":"_wallet"},"id":20,"name":"Identifier","src":"300:7:29"}],"id":21,"name":"Assignment","src":"284:23:29"}],"id":22,"name":"ExpressionStatement","src":"284:23:29"}],"id":23,"name":"Block","src":"274:40:29"}],"id":24,"name":"FunctionDefinition","src":"238:76:29"},{"attributes":{"documentation":"@dev exports isValidSignature(bytes,bytes) aka EIP-1271, so it can tested (no overloading in Go)","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":43,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":42,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":25,"name":"ElementaryTypeName","src":"451:5:29"}],"id":26,"name":"VariableDeclaration","src":"451:20:29"},{"attributes":{"constant":false,"name":"_signature","scope":42,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":27,"name":"ElementaryTypeName","src":"473:5:29"}],"id":28,"name":"VariableDeclaration","src":"473:25:29"}],"id":29,"name":"ParameterList","src":"450:49:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":30,"name":"ElementaryTypeName","src":"523:6:29"}],"id":31,"name":"VariableDeclaration","src":"523:6:29"}],"id":32,"name":"ParameterList","src":"522:8:29"},{"children":[{"attributes":{"functionReturnParameters":32},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isValidSignature","referencedDeclaration":11,"type":"function (bytes memory,bytes memory) view external returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IWallet","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":12,"type":"type(contract IWallet)","value":"IWallet"},"id":33,"name":"Identifier","src":"548:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14,"type":"address","value":"walletAddress"},"id":34,"name":"Identifier","src":"556:13:29"}],"id":35,"name":"FunctionCall","src":"548:22:29"}],"id":36,"name":"MemberAccess","src":"548:39:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":26,"type":"bytes calldata","value":"_data"},"id":37,"name":"Identifier","src":"588:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":28,"type":"bytes calldata","value":"_signature"},"id":38,"name":"Identifier","src":"595:10:29"}],"id":39,"name":"FunctionCall","src":"548:58:29"}],"id":40,"name":"Return","src":"541:65:29"}],"id":41,"name":"Block","src":"531:82:29"}],"id":42,"name":"FunctionDefinition","src":"425:188:29"}],"id":43,"name":"ContractDefinition","src":"170:445:29"}],"id":44,"name":"SourceUnit","src":"0:616:29"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[4726],"TokenWhitelist":[5626]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4640,"name":"PragmaDirective","src":"774:24:30"},{"attributes":{"SourceUnit":2871,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4641,"name":"ImportDirective","src":"800:38:30"},{"attributes":{"SourceUnit":3330,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4642,"name":"ImportDirective","src":"839:39:30"},{"attributes":{"SourceUnit":8731,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4643,"name":"ImportDirective","src":"879:36:30"},{"attributes":{"SourceUnit":8620,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4644,"name":"ImportDirective","src":"916:33:30"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4645,"name":"ImportDirective","src":"950:34:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[4726],"name":"ITokenWhitelist","scope":5627},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4646,"name":"ElementaryTypeName","src":"1124:7:30"}],"id":4647,"name":"VariableDeclaration","src":"1124:7:30"}],"id":4648,"name":"ParameterList","src":"1123:9:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4649,"name":"ElementaryTypeName","src":"1156:6:30"}],"id":4650,"name":"VariableDeclaration","src":"1156:13:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4651,"name":"ElementaryTypeName","src":"1171:7:30"}],"id":4652,"name":"VariableDeclaration","src":"1171:7:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4653,"name":"ElementaryTypeName","src":"1180:7:30"}],"id":4654,"name":"VariableDeclaration","src":"1180:7:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4655,"name":"ElementaryTypeName","src":"1189:4:30"}],"id":4656,"name":"VariableDeclaration","src":"1189:4:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4657,"name":"ElementaryTypeName","src":"1195:4:30"}],"id":4658,"name":"VariableDeclaration","src":"1195:4:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4659,"name":"ElementaryTypeName","src":"1201:4:30"}],"id":4660,"name":"VariableDeclaration","src":"1201:4:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4661,"name":"ElementaryTypeName","src":"1207:7:30"}],"id":4662,"name":"VariableDeclaration","src":"1207:7:30"}],"id":4663,"name":"ParameterList","src":"1155:60:30"}],"id":4664,"name":"FunctionDefinition","src":"1102:114:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4665,"name":"ParameterList","src":"1248:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4666,"name":"ElementaryTypeName","src":"1274:6:30"}],"id":4667,"name":"VariableDeclaration","src":"1274:13:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4668,"name":"ElementaryTypeName","src":"1289:7:30"}],"id":4669,"name":"VariableDeclaration","src":"1289:7:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4670,"name":"ElementaryTypeName","src":"1298:7:30"}],"id":4671,"name":"VariableDeclaration","src":"1298:7:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4672,"name":"ElementaryTypeName","src":"1307:4:30"}],"id":4673,"name":"VariableDeclaration","src":"1307:4:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4674,"name":"ElementaryTypeName","src":"1313:4:30"}],"id":4675,"name":"VariableDeclaration","src":"1313:4:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4676,"name":"ElementaryTypeName","src":"1319:4:30"}],"id":4677,"name":"VariableDeclaration","src":"1319:4:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4678,"name":"ElementaryTypeName","src":"1325:7:30"}],"id":4679,"name":"VariableDeclaration","src":"1325:7:30"}],"id":4680,"name":"ParameterList","src":"1273:60:30"}],"id":4681,"name":"FunctionDefinition","src":"1222:112:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4682,"name":"ParameterList","src":"1366:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4687,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4683,"name":"ElementaryTypeName","src":"1392:7:30"}],"id":4684,"name":"ArrayTypeName","src":"1392:9:30"}],"id":4685,"name":"VariableDeclaration","src":"1392:16:30"}],"id":4686,"name":"ParameterList","src":"1391:18:30"}],"id":4687,"name":"FunctionDefinition","src":"1340:70:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4688,"name":"ParameterList","src":"1441:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4693,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4689,"name":"ElementaryTypeName","src":"1467:7:30"}],"id":4690,"name":"ArrayTypeName","src":"1467:9:30"}],"id":4691,"name":"VariableDeclaration","src":"1467:16:30"}],"id":4692,"name":"ParameterList","src":"1466:18:30"}],"id":4693,"name":"FunctionDefinition","src":"1416:69:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4700,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4694,"name":"ElementaryTypeName","src":"1518:6:30"}],"id":4695,"name":"VariableDeclaration","src":"1518:6:30"}],"id":4696,"name":"ParameterList","src":"1517:8:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4700,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4697,"name":"ElementaryTypeName","src":"1549:4:30"}],"id":4698,"name":"VariableDeclaration","src":"1549:4:30"}],"id":4699,"name":"ParameterList","src":"1548:6:30"}],"id":4700,"name":"FunctionDefinition","src":"1491:64:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4711,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4701,"name":"ElementaryTypeName","src":"1597:7:30"}],"id":4702,"name":"VariableDeclaration","src":"1597:7:30"},{"attributes":{"constant":false,"name":"","scope":4711,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4703,"name":"ElementaryTypeName","src":"1606:5:30"}],"id":4704,"name":"VariableDeclaration","src":"1606:14:30"}],"id":4705,"name":"ParameterList","src":"1596:25:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4711,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4706,"name":"ElementaryTypeName","src":"1645:7:30"}],"id":4707,"name":"VariableDeclaration","src":"1645:7:30"},{"attributes":{"constant":false,"name":"","scope":4711,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4708,"name":"ElementaryTypeName","src":"1654:7:30"}],"id":4709,"name":"VariableDeclaration","src":"1654:7:30"}],"id":4710,"name":"ParameterList","src":"1644:18:30"}],"id":4711,"name":"FunctionDefinition","src":"1561:102:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4712,"name":"ParameterList","src":"1688:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4716,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4713,"name":"ElementaryTypeName","src":"1714:7:30"}],"id":4714,"name":"VariableDeclaration","src":"1714:7:30"}],"id":4715,"name":"ParameterList","src":"1713:9:30"}],"id":4716,"name":"FunctionDefinition","src":"1669:54:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":4726,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4725,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4717,"name":"ElementaryTypeName","src":"1754:7:30"}],"id":4718,"name":"VariableDeclaration","src":"1754:7:30"},{"attributes":{"constant":false,"name":"","scope":4725,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4719,"name":"ElementaryTypeName","src":"1763:7:30"}],"id":4720,"name":"VariableDeclaration","src":"1763:7:30"},{"attributes":{"constant":false,"name":"","scope":4725,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4721,"name":"ElementaryTypeName","src":"1772:7:30"}],"id":4722,"name":"VariableDeclaration","src":"1772:7:30"}],"id":4723,"name":"ParameterList","src":"1753:27:30"},{"attributes":{"parameters":[null]},"children":[],"id":4724,"name":"ParameterList","src":"1789:0:30"}],"id":4725,"name":"FunctionDefinition","src":"1729:61:30"}],"id":4726,"name":"ContractDefinition","src":"1070:722:30"},{"attributes":{"contractDependencies":[2870,2915,3329],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[5626,3329,2870,2915],"name":"TokenWhitelist","scope":5627},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":4727,"name":"UserDefinedTypeName","src":"1966:13:30"}],"id":4728,"name":"InheritanceSpecifier","src":"1966:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2870,"type":"contract Controllable"},"id":4729,"name":"UserDefinedTypeName","src":"1981:12:30"}],"id":4730,"name":"InheritanceSpecifier","src":"1981:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3329,"type":"contract Transferrable"},"id":4731,"name":"UserDefinedTypeName","src":"1995:13:30"}],"id":4732,"name":"InheritanceSpecifier","src":"1995:13:30"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":8619,"type":"library strings"},"id":4733,"name":"UserDefinedTypeName","src":"2021:7:30"}],"id":4734,"name":"UsingForDirective","src":"2015:20:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":4735,"name":"UserDefinedTypeName","src":"2046:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":4736,"name":"ElementaryTypeName","src":"2059:7:30"}],"id":4737,"name":"UsingForDirective","src":"2040:27:30"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":8730,"type":"library BytesUtils"},"id":4738,"name":"UserDefinedTypeName","src":"2078:10:30"},{"attributes":{"name":"bytes","type":"bytes"},"id":4739,"name":"ElementaryTypeName","src":"2093:5:30"}],"id":4740,"name":"UsingForDirective","src":"2072:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4748,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4741,"name":"ElementaryTypeName","src":"2128:7:30"}],"id":4742,"name":"VariableDeclaration","src":"2128:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4748,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4743,"name":"ElementaryTypeName","src":"2145:7:30"}],"id":4744,"name":"VariableDeclaration","src":"2145:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":4748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4745,"name":"ElementaryTypeName","src":"2161:7:30"}],"id":4746,"name":"VariableDeclaration","src":"2161:13:30"}],"id":4747,"name":"ParameterList","src":"2127:48:30"}],"id":4748,"name":"EventDefinition","src":"2105:71:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4756,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4749,"name":"ElementaryTypeName","src":"2209:7:30"}],"id":4750,"name":"VariableDeclaration","src":"2209:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4756,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4751,"name":"ElementaryTypeName","src":"2226:7:30"}],"id":4752,"name":"VariableDeclaration","src":"2226:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":4756,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4753,"name":"ElementaryTypeName","src":"2242:4:30"}],"id":4754,"name":"VariableDeclaration","src":"2242:14:30"}],"id":4755,"name":"ParameterList","src":"2208:49:30"}],"id":4756,"name":"EventDefinition","src":"2182:76:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4764,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4757,"name":"ElementaryTypeName","src":"2292:7:30"}],"id":4758,"name":"VariableDeclaration","src":"2292:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4764,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4759,"name":"ElementaryTypeName","src":"2309:7:30"}],"id":4760,"name":"VariableDeclaration","src":"2309:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":4764,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4761,"name":"ElementaryTypeName","src":"2325:4:30"}],"id":4762,"name":"VariableDeclaration","src":"2325:16:30"}],"id":4763,"name":"ParameterList","src":"2291:51:30"}],"id":4764,"name":"EventDefinition","src":"2263:80:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4778,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4765,"name":"ElementaryTypeName","src":"2366:7:30"}],"id":4766,"name":"VariableDeclaration","src":"2366:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4778,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4767,"name":"ElementaryTypeName","src":"2383:7:30"}],"id":4768,"name":"VariableDeclaration","src":"2383:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":4778,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4769,"name":"ElementaryTypeName","src":"2399:6:30"}],"id":4770,"name":"VariableDeclaration","src":"2399:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":4778,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4771,"name":"ElementaryTypeName","src":"2415:7:30"}],"id":4772,"name":"VariableDeclaration","src":"2415:18:30"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":4778,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4773,"name":"ElementaryTypeName","src":"2435:4:30"}],"id":4774,"name":"VariableDeclaration","src":"2435:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":4778,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4775,"name":"ElementaryTypeName","src":"2451:4:30"}],"id":4776,"name":"VariableDeclaration","src":"2451:16:30"}],"id":4777,"name":"ParameterList","src":"2365:103:30"}],"id":4778,"name":"EventDefinition","src":"2349:120:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4784,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4779,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":4780,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4784,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4781,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":4782,"name":"VariableDeclaration","src":"2510:14:30"}],"id":4783,"name":"ParameterList","src":"2492:33:30"}],"id":4784,"name":"EventDefinition","src":"2474:52:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4788,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4785,"name":"ElementaryTypeName","src":"2552:6:30"}],"id":4786,"name":"VariableDeclaration","src":"2552:16:30"}],"id":4787,"name":"ParameterList","src":"2551:18:30"}],"id":4788,"name":"EventDefinition","src":"2532:38:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4792,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4789,"name":"ElementaryTypeName","src":"2597:6:30"}],"id":4790,"name":"VariableDeclaration","src":"2597:16:30"}],"id":4791,"name":"ParameterList","src":"2596:18:30"}],"id":4792,"name":"EventDefinition","src":"2575:40:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4798,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4793,"name":"ElementaryTypeName","src":"2647:7:30"}],"id":4794,"name":"VariableDeclaration","src":"2647:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4798,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4795,"name":"ElementaryTypeName","src":"2663:6:30"}],"id":4796,"name":"VariableDeclaration","src":"2663:16:30"}],"id":4797,"name":"ParameterList","src":"2646:34:30"}],"id":4798,"name":"EventDefinition","src":"2620:61:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4804,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4799,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":4800,"name":"VariableDeclaration","src":"2715:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4804,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4801,"name":"ElementaryTypeName","src":"2731:6:30"}],"id":4802,"name":"VariableDeclaration","src":"2731:16:30"}],"id":4803,"name":"ParameterList","src":"2714:34:30"}],"id":4804,"name":"EventDefinition","src":"2686:63:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4812,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4805,"name":"ElementaryTypeName","src":"2769:7:30"}],"id":4806,"name":"VariableDeclaration","src":"2769:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4812,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4807,"name":"ElementaryTypeName","src":"2782:7:30"}],"id":4808,"name":"VariableDeclaration","src":"2782:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4812,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4809,"name":"ElementaryTypeName","src":"2798:7:30"}],"id":4810,"name":"VariableDeclaration","src":"2798:15:30"}],"id":4811,"name":"ParameterList","src":"2768:46:30"}],"id":4812,"name":"EventDefinition","src":"2755:60:30"},{"attributes":{"constant":true,"name":"_APPROVE","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4813,"name":"ElementaryTypeName","src":"2924:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":4814,"name":"Literal","src":"2959:10:30"}],"id":4815,"name":"VariableDeclaration","src":"2924:45:30"},{"attributes":{"constant":true,"name":"_BURN","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4816,"name":"ElementaryTypeName","src":"3028:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":4817,"name":"Literal","src":"3060:10:30"}],"id":4818,"name":"VariableDeclaration","src":"3028:42:30"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4819,"name":"ElementaryTypeName","src":"3118:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":4820,"name":"Literal","src":"3154:10:30"}],"id":4821,"name":"VariableDeclaration","src":"3118:46:30"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4822,"name":"ElementaryTypeName","src":"3224:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":4823,"name":"Literal","src":"3265:10:30"}],"id":4824,"name":"VariableDeclaration","src":"3224:51:30"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":5626,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":4839,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4825,"name":"ElementaryTypeName","src":"3371:6:30"}],"id":4826,"name":"VariableDeclaration","src":"3371:13:30"},{"attributes":{"constant":false,"name":"magnitude","scope":4839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4827,"name":"ElementaryTypeName","src":"3410:7:30"}],"id":4828,"name":"VariableDeclaration","src":"3410:17:30"},{"attributes":{"constant":false,"name":"rate","scope":4839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4829,"name":"ElementaryTypeName","src":"3452:7:30"}],"id":4830,"name":"VariableDeclaration","src":"3452:12:30"},{"attributes":{"constant":false,"name":"available","scope":4839,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4831,"name":"ElementaryTypeName","src":"3504:4:30"}],"id":4832,"name":"VariableDeclaration","src":"3504:14:30"},{"attributes":{"constant":false,"name":"loadable","scope":4839,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4833,"name":"ElementaryTypeName","src":"3570:4:30"}],"id":4834,"name":"VariableDeclaration","src":"3570:13:30"},{"attributes":{"constant":false,"name":"redeemable","scope":4839,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4835,"name":"ElementaryTypeName","src":"3640:4:30"}],"id":4836,"name":"VariableDeclaration","src":"3640:15:30"},{"attributes":{"constant":false,"name":"lastUpdate","scope":4839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4837,"name":"ElementaryTypeName","src":"3724:7:30"}],"id":4838,"name":"VariableDeclaration","src":"3724:18:30"}],"id":4839,"name":"StructDefinition","src":"3348:433:30"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":5626,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4840,"name":"ElementaryTypeName","src":"3795:7:30"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4839,"type":"struct TokenWhitelist.Token"},"id":4841,"name":"UserDefinedTypeName","src":"3806:5:30"}],"id":4842,"name":"Mapping","src":"3787:25:30"}],"id":4843,"name":"VariableDeclaration","src":"3787:47:30"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":5626,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4844,"name":"ElementaryTypeName","src":"4004:6:30"},{"attributes":{"name":"bool","type":"bool"},"id":4845,"name":"ElementaryTypeName","src":"4014:4:30"}],"id":4846,"name":"Mapping","src":"3996:23:30"}],"id":4847,"name":"VariableDeclaration","src":"3996:50:30"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":5626,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4848,"name":"ElementaryTypeName","src":"4053:7:30"}],"id":4849,"name":"ArrayTypeName","src":"4053:9:30"}],"id":4850,"name":"VariableDeclaration","src":"4053:36:30"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":5626,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4851,"name":"ElementaryTypeName","src":"4182:7:30"}],"id":4852,"name":"VariableDeclaration","src":"4182:34:30"},{"attributes":{"constant":false,"name":"_stablecoin","scope":5626,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4853,"name":"ElementaryTypeName","src":"4266:7:30"}],"id":4854,"name":"VariableDeclaration","src":"4266:27:30"},{"attributes":{"constant":false,"name":"_oracleNode","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4855,"name":"ElementaryTypeName","src":"4372:7:30"}],"id":4856,"name":"VariableDeclaration","src":"4372:27:30"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":4906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4857,"name":"ElementaryTypeName","src":"4770:7:30"}],"id":4858,"name":"VariableDeclaration","src":"4770:13:30"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":4906,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4859,"name":"ElementaryTypeName","src":"4785:7:30"}],"id":4860,"name":"VariableDeclaration","src":"4785:20:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":4906,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4861,"name":"ElementaryTypeName","src":"4807:7:30"}],"id":4862,"name":"VariableDeclaration","src":"4807:24:30"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":4906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4863,"name":"ElementaryTypeName","src":"4833:7:30"}],"id":4864,"name":"VariableDeclaration","src":"4833:27:30"}],"id":4865,"name":"ParameterList","src":"4769:92:30"},{"attributes":{"parameters":[null]},"children":[],"id":4872,"name":"ParameterList","src":"4949:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":4866,"name":"Identifier","src":"4885:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4858,"type":"address","value":"_ens_"},"id":4867,"name":"Identifier","src":"4899:5:30"}],"id":4868,"name":"ModifierInvocation","src":"4885:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"type(contract Controllable)","value":"Controllable"},"id":4869,"name":"Identifier","src":"4914:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4862,"type":"bytes32","value":"_controllerNode_"},"id":4870,"name":"Identifier","src":"4927:16:30"}],"id":4871,"name":"ModifierInvocation","src":"4914:30:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4856,"type":"bytes32","value":"_oracleNode"},"id":4873,"name":"Identifier","src":"4959:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4860,"type":"bytes32","value":"_oracleNode_"},"id":4874,"name":"Identifier","src":"4973:12:30"}],"id":4875,"name":"Assignment","src":"4959:26:30"}],"id":4876,"name":"ExpressionStatement","src":"4959:26:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"address","value":"_stablecoin"},"id":4877,"name":"Identifier","src":"4995:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4864,"type":"address","value":"_stablecoinAddress_"},"id":4878,"name":"Identifier","src":"5009:19:30"}],"id":4879,"name":"Assignment","src":"4995:33:30"}],"id":4880,"name":"ExpressionStatement","src":"4995:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4881,"name":"Identifier","src":"5083:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4815,"type":"bytes4","value":"_APPROVE"},"id":4882,"name":"Identifier","src":"5102:8:30"}],"id":4883,"name":"IndexAccess","src":"5083:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4884,"name":"Literal","src":"5114:4:30"}],"id":4885,"name":"Assignment","src":"5083:35:30"}],"id":4886,"name":"ExpressionStatement","src":"5083:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4887,"name":"Identifier","src":"5128:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4818,"type":"bytes4","value":"_BURN"},"id":4888,"name":"Identifier","src":"5147:5:30"}],"id":4889,"name":"IndexAccess","src":"5128:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4890,"name":"Literal","src":"5156:4:30"}],"id":4891,"name":"Assignment","src":"5128:32:30"}],"id":4892,"name":"ExpressionStatement","src":"5128:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4893,"name":"Identifier","src":"5170:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4821,"type":"bytes4","value":"_TRANSFER"},"id":4894,"name":"Identifier","src":"5189:9:30"}],"id":4895,"name":"IndexAccess","src":"5170:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4896,"name":"Literal","src":"5202:4:30"}],"id":4897,"name":"Assignment","src":"5170:36:30"}],"id":4898,"name":"ExpressionStatement","src":"5170:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4899,"name":"Identifier","src":"5216:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4824,"type":"bytes4","value":"_TRANSFER_FROM"},"id":4900,"name":"Identifier","src":"5235:14:30"}],"id":4901,"name":"IndexAccess","src":"5216:34:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4902,"name":"Literal","src":"5253:4:30"}],"id":4903,"name":"Assignment","src":"5216:41:30"}],"id":4904,"name":"ExpressionStatement","src":"5216:41:30"}],"id":4905,"name":"Block","src":"4949:315:30"}],"id":4906,"name":"FunctionDefinition","src":"4758:506:30"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4907,"name":"ParameterList","src":"5296:2:30"},{"children":[{"attributes":{"assignments":[4909]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":4928,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4908,"name":"ElementaryTypeName","src":"5309:7:30"}],"id":4909,"name":"VariableDeclaration","src":"5309:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4910,"name":"Identifier","src":"5333:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4856,"type":"bytes32","value":"_oracleNode"},"id":4911,"name":"Identifier","src":"5345:11:30"}],"id":4912,"name":"FunctionCall","src":"5333:24:30"}],"id":4913,"name":"VariableDeclarationStatement","src":"5309:48:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4914,"name":"Identifier","src":"5367:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2869,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":4915,"name":"Identifier","src":"5375:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4916,"name":"Identifier","src":"5384:3:30"}],"id":4917,"name":"MemberAccess","src":"5384:10:30"}],"id":4918,"name":"FunctionCall","src":"5375:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4919,"name":"Identifier","src":"5399:3:30"}],"id":4920,"name":"MemberAccess","src":"5399:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4909,"type":"address","value":"oracleAddress"},"id":4921,"name":"Identifier","src":"5413:13:30"}],"id":4922,"name":"BinaryOperation","src":"5399:27:30"}],"id":4923,"name":"BinaryOperation","src":"5375:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":4924,"name":"Literal","src":"5428:24:30"}],"id":4925,"name":"FunctionCall","src":"5367:86:30"}],"id":4926,"name":"ExpressionStatement","src":"5367:86:30"},{"id":4927,"name":"PlaceholderStatement","src":"5463:1:30"}],"id":4928,"name":"Block","src":"5299:172:30"}],"id":4929,"name":"ModifierDefinition","src":"5270:201:30"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4930,"name":"ElementaryTypeName","src":"6068:7:30"}],"id":4931,"name":"ArrayTypeName","src":"6068:9:30"}],"id":4932,"name":"VariableDeclaration","src":"6068:26:30"},{"attributes":{"constant":false,"name":"_symbols","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4933,"name":"ElementaryTypeName","src":"6104:7:30"}],"id":4934,"name":"ArrayTypeName","src":"6104:9:30"}],"id":4935,"name":"VariableDeclaration","src":"6104:27:30"},{"attributes":{"constant":false,"name":"_magnitude","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4936,"name":"ElementaryTypeName","src":"6141:7:30"}],"id":4937,"name":"ArrayTypeName","src":"6141:9:30"}],"id":4938,"name":"VariableDeclaration","src":"6141:29:30"},{"attributes":{"constant":false,"name":"_loadable","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4939,"name":"ElementaryTypeName","src":"6180:4:30"}],"id":4940,"name":"ArrayTypeName","src":"6180:6:30"}],"id":4941,"name":"VariableDeclaration","src":"6180:25:30"},{"attributes":{"constant":false,"name":"_redeemable","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4942,"name":"ElementaryTypeName","src":"6215:4:30"}],"id":4943,"name":"ArrayTypeName","src":"6215:6:30"}],"id":4944,"name":"VariableDeclaration","src":"6215:27:30"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":5073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4945,"name":"ElementaryTypeName","src":"6252:7:30"}],"id":4946,"name":"VariableDeclaration","src":"6252:19:30"}],"id":4947,"name":"ParameterList","src":"6058:219:30"},{"attributes":{"parameters":[null]},"children":[],"id":4950,"name":"ParameterList","src":"6297:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":4948,"name":"Identifier","src":"6287:9:30"}],"id":4949,"name":"ModifierInvocation","src":"6287:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4951,"name":"Identifier","src":"6368:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4952,"name":"Identifier","src":"6389:7:30"}],"id":4953,"name":"MemberAccess","src":"6389:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"bytes32[] calldata","value":"_symbols"},"id":4954,"name":"Identifier","src":"6407:8:30"}],"id":4955,"name":"MemberAccess","src":"6407:15:30"}],"id":4956,"name":"BinaryOperation","src":"6389:33:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4957,"name":"Identifier","src":"6442:7:30"}],"id":4958,"name":"MemberAccess","src":"6442:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"uint256[] calldata","value":"_magnitude"},"id":4959,"name":"Identifier","src":"6460:10:30"}],"id":4960,"name":"MemberAccess","src":"6460:17:30"}],"id":4961,"name":"BinaryOperation","src":"6442:35:30"}],"id":4962,"name":"BinaryOperation","src":"6389:88:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4963,"name":"Identifier","src":"6497:7:30"}],"id":4964,"name":"MemberAccess","src":"6497:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4941,"type":"bool[] calldata","value":"_loadable"},"id":4965,"name":"Identifier","src":"6515:9:30"}],"id":4966,"name":"MemberAccess","src":"6515:16:30"}],"id":4967,"name":"BinaryOperation","src":"6497:34:30"}],"id":4968,"name":"BinaryOperation","src":"6389:142:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4969,"name":"Identifier","src":"6551:7:30"}],"id":4970,"name":"MemberAccess","src":"6551:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4941,"type":"bool[] calldata","value":"_loadable"},"id":4971,"name":"Identifier","src":"6569:9:30"}],"id":4972,"name":"MemberAccess","src":"6569:16:30"}],"id":4973,"name":"BinaryOperation","src":"6551:34:30"}],"id":4974,"name":"BinaryOperation","src":"6389:196:30"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":4975,"name":"Literal","src":"6599:32:30"}],"id":4976,"name":"FunctionCall","src":"6368:273:30"}],"id":4977,"name":"ExpressionStatement","src":"6368:273:30"},{"children":[{"attributes":{"assignments":[4979]},"children":[{"attributes":{"constant":false,"name":"i","scope":5071,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4978,"name":"ElementaryTypeName","src":"6715:7:30"}],"id":4979,"name":"VariableDeclaration","src":"6715:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4980,"name":"Literal","src":"6727:1:30"}],"id":4981,"name":"VariableDeclarationStatement","src":"6715:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":4982,"name":"Identifier","src":"6730:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4983,"name":"Identifier","src":"6734:7:30"}],"id":4984,"name":"MemberAccess","src":"6734:14:30"}],"id":4985,"name":"BinaryOperation","src":"6730:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":4986,"name":"Identifier","src":"6750:1:30"}],"id":4987,"name":"UnaryOperation","src":"6750:3:30"}],"id":4988,"name":"ExpressionStatement","src":"6750:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4989,"name":"Identifier","src":"6832:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":4990,"name":"Identifier","src":"6841:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4991,"name":"Identifier","src":"6855:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":4992,"name":"Identifier","src":"6863:1:30"}],"id":4993,"name":"IndexAccess","src":"6855:10:30"}],"id":4994,"name":"IndexAccess","src":"6841:25:30"}],"id":4995,"name":"MemberAccess","src":"6841:35:30"}],"id":4996,"name":"UnaryOperation","src":"6840:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":4997,"name":"Literal","src":"6878:25:30"}],"id":4998,"name":"FunctionCall","src":"6832:72:30"}],"id":4999,"name":"ExpressionStatement","src":"6832:72:30"},{"attributes":{"assignments":[5001]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":5070,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5000,"name":"ElementaryTypeName","src":"6964:6:30"}],"id":5001,"name":"VariableDeclaration","src":"6964:20:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":7168,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":7123,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"bytes32[] calldata","value":"_symbols"},"id":5002,"name":"Identifier","src":"6987:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5003,"name":"Identifier","src":"6996:1:30"}],"id":5004,"name":"IndexAccess","src":"6987:11:30"}],"id":5005,"name":"MemberAccess","src":"6987:22:30"}],"id":5006,"name":"FunctionCall","src":"6987:24:30"}],"id":5007,"name":"MemberAccess","src":"6987:33:30"}],"id":5008,"name":"FunctionCall","src":"6987:35:30"}],"id":5009,"name":"VariableDeclarationStatement","src":"6964:58:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5010,"name":"Identifier","src":"7084:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":5011,"name":"Identifier","src":"7098:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5012,"name":"Identifier","src":"7106:1:30"}],"id":5013,"name":"IndexAccess","src":"7098:10:30"}],"id":5014,"name":"IndexAccess","src":"7084:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4839,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":5015,"name":"Identifier","src":"7112:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"string memory","value":"symbol"},"id":5016,"name":"Identifier","src":"7144:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"uint256[] calldata","value":"_magnitude"},"id":5017,"name":"Identifier","src":"7179:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5018,"name":"Identifier","src":"7190:1:30"}],"id":5019,"name":"IndexAccess","src":"7179:13:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5020,"name":"Literal","src":"7216:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5021,"name":"Literal","src":"7246:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4941,"type":"bool[] calldata","value":"_loadable"},"id":5022,"name":"Identifier","src":"7278:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5023,"name":"Identifier","src":"7288:1:30"}],"id":5024,"name":"IndexAccess","src":"7278:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bool[] calldata","value":"_redeemable"},"id":5025,"name":"Identifier","src":"7320:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5026,"name":"Identifier","src":"7332:1:30"}],"id":5027,"name":"IndexAccess","src":"7320:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4946,"type":"uint256","value":"_lastUpdate"},"id":5028,"name":"Identifier","src":"7364:11:30"}],"id":5029,"name":"FunctionCall","src":"7112:278:30"}],"id":5030,"name":"Assignment","src":"7084:306:30"}],"id":5031,"name":"ExpressionStatement","src":"7084:306:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5032,"name":"Identifier","src":"7462:18:30"}],"id":5034,"name":"MemberAccess","src":"7462:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":5035,"name":"Identifier","src":"7486:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5036,"name":"Identifier","src":"7494:1:30"}],"id":5037,"name":"IndexAccess","src":"7486:10:30"}],"id":5038,"name":"FunctionCall","src":"7462:35:30"}],"id":5039,"name":"ExpressionStatement","src":"7462:35:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bool[] calldata","value":"_redeemable"},"id":5040,"name":"Identifier","src":"7587:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5041,"name":"Identifier","src":"7599:1:30"}],"id":5042,"name":"IndexAccess","src":"7587:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5043,"name":"Identifier","src":"7621:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5044,"name":"Identifier","src":"7642:18:30"}],"id":5045,"name":"MemberAccess","src":"7642:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5046,"name":"Literal","src":"7665:1:30"}],"id":5047,"name":"FunctionCall","src":"7642:25:30"}],"id":5048,"name":"Assignment","src":"7621:46:30"}],"id":5049,"name":"ExpressionStatement","src":"7621:46:30"}],"id":5050,"name":"Block","src":"7603:79:30"}],"id":5051,"name":"IfStatement","src":"7583:99:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4778,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":5052,"name":"Identifier","src":"7742:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5053,"name":"Identifier","src":"7753:3:30"}],"id":5054,"name":"MemberAccess","src":"7753:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":5055,"name":"Identifier","src":"7765:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5056,"name":"Identifier","src":"7773:1:30"}],"id":5057,"name":"IndexAccess","src":"7765:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"string memory","value":"symbol"},"id":5058,"name":"Identifier","src":"7777:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"uint256[] calldata","value":"_magnitude"},"id":5059,"name":"Identifier","src":"7785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5060,"name":"Identifier","src":"7796:1:30"}],"id":5061,"name":"IndexAccess","src":"7785:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4941,"type":"bool[] calldata","value":"_loadable"},"id":5062,"name":"Identifier","src":"7800:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5063,"name":"Identifier","src":"7810:1:30"}],"id":5064,"name":"IndexAccess","src":"7800:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bool[] calldata","value":"_redeemable"},"id":5065,"name":"Identifier","src":"7814:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5066,"name":"Identifier","src":"7826:1:30"}],"id":5067,"name":"IndexAccess","src":"7814:14:30"}],"id":5068,"name":"FunctionCall","src":"7742:87:30"}],"id":5069,"name":"EmitStatement","src":"7737:92:30"}],"id":5070,"name":"Block","src":"6755:1085:30"}],"id":5071,"name":"ForStatement","src":"6710:1130:30"}],"id":5072,"name":"Block","src":"6297:1549:30"}],"id":5073,"name":"FunctionDefinition","src":"6040:1806:30"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5174,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5074,"name":"ElementaryTypeName","src":"7995:7:30"}],"id":5075,"name":"ArrayTypeName","src":"7995:9:30"}],"id":5076,"name":"VariableDeclaration","src":"7995:26:30"}],"id":5077,"name":"ParameterList","src":"7994:28:30"},{"attributes":{"parameters":[null]},"children":[],"id":5080,"name":"ParameterList","src":"8042:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":5078,"name":"Identifier","src":"8032:9:30"}],"id":5079,"name":"ModifierInvocation","src":"8032:9:30"},{"children":[{"children":[{"attributes":{"assignments":[5082]},"children":[{"attributes":{"constant":false,"name":"i","scope":5172,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5081,"name":"ElementaryTypeName","src":"8160:7:30"}],"id":5082,"name":"VariableDeclaration","src":"8160:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5083,"name":"Literal","src":"8172:1:30"}],"id":5084,"name":"VariableDeclarationStatement","src":"8160:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5082,"type":"uint256","value":"i"},"id":5085,"name":"Identifier","src":"8175:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5076,"type":"address[] calldata","value":"_tokens"},"id":5086,"name":"Identifier","src":"8179:7:30"}],"id":5087,"name":"MemberAccess","src":"8179:14:30"}],"id":5088,"name":"BinaryOperation","src":"8175:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5082,"type":"uint256","value":"i"},"id":5089,"name":"Identifier","src":"8195:1:30"}],"id":5090,"name":"UnaryOperation","src":"8195:3:30"}],"id":5091,"name":"ExpressionStatement","src":"8195:3:30"},{"children":[{"attributes":{"assignments":[5093]},"children":[{"attributes":{"constant":false,"name":"token","scope":5171,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5092,"name":"ElementaryTypeName","src":"8254:7:30"}],"id":5093,"name":"VariableDeclaration","src":"8254:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5076,"type":"address[] calldata","value":"_tokens"},"id":5094,"name":"Identifier","src":"8270:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5082,"type":"uint256","value":"i"},"id":5095,"name":"Identifier","src":"8278:1:30"}],"id":5096,"name":"IndexAccess","src":"8270:10:30"}],"id":5097,"name":"VariableDeclarationStatement","src":"8254:26:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5098,"name":"Identifier","src":"8363:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5099,"name":"Identifier","src":"8371:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5100,"name":"Identifier","src":"8385:5:30"}],"id":5101,"name":"IndexAccess","src":"8371:20:30"}],"id":5102,"name":"MemberAccess","src":"8371:30:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5103,"name":"Literal","src":"8403:24:30"}],"id":5104,"name":"FunctionCall","src":"8363:65:30"}],"id":5105,"name":"ExpressionStatement","src":"8363:65:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5106,"name":"Identifier","src":"8518:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5107,"name":"Identifier","src":"8532:5:30"}],"id":5108,"name":"IndexAccess","src":"8518:20:30"}],"id":5109,"name":"MemberAccess","src":"8518:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5110,"name":"Identifier","src":"8569:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5111,"name":"Identifier","src":"8590:18:30"}],"id":5112,"name":"MemberAccess","src":"8590:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5113,"name":"Literal","src":"8613:1:30"}],"id":5114,"name":"FunctionCall","src":"8590:25:30"}],"id":5115,"name":"Assignment","src":"8569:46:30"}],"id":5116,"name":"ExpressionStatement","src":"8569:46:30"}],"id":5117,"name":"Block","src":"8551:79:30"}],"id":5118,"name":"IfStatement","src":"8514:116:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5119,"name":"Identifier","src":"8690:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5120,"name":"Identifier","src":"8704:5:30"}],"id":5121,"name":"IndexAccess","src":"8690:20:30"}],"id":5122,"name":"UnaryOperation","src":"8683:27:30"}],"id":5123,"name":"ExpressionStatement","src":"8683:27:30"},{"children":[{"attributes":{"assignments":[5125]},"children":[{"attributes":{"constant":false,"name":"j","scope":5159,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5124,"name":"ElementaryTypeName","src":"8792:7:30"}],"id":5125,"name":"VariableDeclaration","src":"8792:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5126,"name":"Literal","src":"8804:1:30"}],"id":5127,"name":"VariableDeclarationStatement","src":"8792:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5125,"type":"uint256","value":"j"},"id":5128,"name":"Identifier","src":"8807:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5129,"name":"Identifier","src":"8811:18:30"}],"id":5130,"name":"MemberAccess","src":"8811:25:30"}],"id":5131,"name":"MemberAccess","src":"8811:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5132,"name":"Literal","src":"8841:1:30"}],"id":5133,"name":"FunctionCall","src":"8811:32:30"}],"id":5134,"name":"BinaryOperation","src":"8807:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5125,"type":"uint256","value":"j"},"id":5135,"name":"Identifier","src":"8845:1:30"}],"id":5136,"name":"UnaryOperation","src":"8845:3:30"}],"id":5137,"name":"ExpressionStatement","src":"8845:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5138,"name":"Identifier","src":"8872:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5125,"type":"uint256","value":"j"},"id":5139,"name":"Identifier","src":"8891:1:30"}],"id":5140,"name":"IndexAccess","src":"8872:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5141,"name":"Identifier","src":"8897:5:30"}],"id":5142,"name":"BinaryOperation","src":"8872:30:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5143,"name":"Identifier","src":"8926:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5125,"type":"uint256","value":"j"},"id":5144,"name":"Identifier","src":"8945:1:30"}],"id":5145,"name":"IndexAccess","src":"8926:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5146,"name":"Identifier","src":"8950:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5147,"name":"Identifier","src":"8969:18:30"}],"id":5148,"name":"MemberAccess","src":"8969:25:30"}],"id":5149,"name":"MemberAccess","src":"8969:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5150,"name":"Literal","src":"8999:1:30"}],"id":5151,"name":"FunctionCall","src":"8969:32:30"}],"id":5152,"name":"IndexAccess","src":"8950:52:30"}],"id":5153,"name":"Assignment","src":"8926:76:30"}],"id":5154,"name":"ExpressionStatement","src":"8926:76:30"},{"id":5155,"name":"Break","src":"9024:5:30"}],"id":5156,"name":"Block","src":"8904:144:30"}],"id":5157,"name":"IfStatement","src":"8868:180:30"}],"id":5158,"name":"Block","src":"8850:212:30"}],"id":5159,"name":"ForStatement","src":"8787:275:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5160,"name":"Identifier","src":"9075:18:30"}],"id":5162,"name":"MemberAccess","src":"9075:25:30"}],"id":5163,"name":"UnaryOperation","src":"9075:27:30"}],"id":5164,"name":"ExpressionStatement","src":"9075:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"function (address,address)","value":"RemovedToken"},"id":5165,"name":"Identifier","src":"9162:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5166,"name":"Identifier","src":"9175:3:30"}],"id":5167,"name":"MemberAccess","src":"9175:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5168,"name":"Identifier","src":"9187:5:30"}],"id":5169,"name":"FunctionCall","src":"9162:31:30"}],"id":5170,"name":"EmitStatement","src":"9157:36:30"}],"id":5171,"name":"Block","src":"8200:1004:30"}],"id":5172,"name":"ForStatement","src":"8155:1049:30"}],"id":5173,"name":"Block","src":"8042:1168:30"}],"id":5174,"name":"FunctionDefinition","src":"7973:1237:30"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5287,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5175,"name":"ElementaryTypeName","src":"9404:7:30"}],"id":5176,"name":"VariableDeclaration","src":"9404:14:30"},{"attributes":{"constant":false,"name":"_data","scope":5287,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5177,"name":"ElementaryTypeName","src":"9420:5:30"}],"id":5178,"name":"VariableDeclaration","src":"9420:20:30"}],"id":5179,"name":"ParameterList","src":"9403:38:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5287,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5180,"name":"ElementaryTypeName","src":"9465:7:30"}],"id":5181,"name":"VariableDeclaration","src":"9465:7:30"},{"attributes":{"constant":false,"name":"","scope":5287,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5182,"name":"ElementaryTypeName","src":"9474:7:30"}],"id":5183,"name":"VariableDeclaration","src":"9474:7:30"}],"id":5184,"name":"ParameterList","src":"9464:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5185,"name":"Identifier","src":"9669:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5186,"name":"Identifier","src":"9677:5:30"}],"id":5187,"name":"MemberAccess","src":"9677:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5188,"name":"Literal","src":"9693:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5189,"name":"Literal","src":"9697:2:30"}],"id":5190,"name":"BinaryOperation","src":"9693:6:30"}],"id":5191,"name":"BinaryOperation","src":"9677:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":5192,"name":"Literal","src":"9701:34:30"}],"id":5193,"name":"FunctionCall","src":"9669:67:30"}],"id":5194,"name":"ExpressionStatement","src":"9669:67:30"},{"attributes":{"assignments":[5196]},"children":[{"attributes":{"constant":false,"name":"signature","scope":5286,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5195,"name":"ElementaryTypeName","src":"9782:6:30"}],"id":5196,"name":"VariableDeclaration","src":"9782:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":8695,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5197,"name":"Identifier","src":"9801:5:30"}],"id":5198,"name":"MemberAccess","src":"9801:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5199,"name":"Literal","src":"9822:1:30"}],"id":5200,"name":"FunctionCall","src":"9801:23:30"}],"id":5201,"name":"VariableDeclarationStatement","src":"9782:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5202,"name":"Identifier","src":"9877:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":5588,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":5203,"name":"Identifier","src":"9885:22:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"address","value":"_token"},"id":5204,"name":"Identifier","src":"9908:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"bytes4","value":"signature"},"id":5205,"name":"Identifier","src":"9916:9:30"}],"id":5206,"name":"FunctionCall","src":"9885:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":5207,"name":"Literal","src":"9928:20:30"}],"id":5208,"name":"FunctionCall","src":"9877:72:30"}],"id":5209,"name":"ExpressionStatement","src":"9877:72:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"bytes4","value":"signature"},"id":5210,"name":"Identifier","src":"10048:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4818,"type":"bytes4","value":"_BURN"},"id":5211,"name":"Identifier","src":"10061:5:30"}],"id":5212,"name":"BinaryOperation","src":"10048:18:30"},{"children":[{"attributes":{"functionReturnParameters":5184},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"address","value":"_token"},"id":5213,"name":"Identifier","src":"10133:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8729,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5214,"name":"Identifier","src":"10141:5:30"}],"id":5215,"name":"MemberAccess","src":"10141:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5216,"name":"Literal","src":"10163:1:30"}],"id":5217,"name":"FunctionCall","src":"10141:24:30"}],"id":5218,"name":"TupleExpression","src":"10132:34:30"}],"id":5219,"name":"Return","src":"10125:41:30"}],"id":5220,"name":"Block","src":"10068:109:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"bytes4","value":"signature"},"id":5221,"name":"Identifier","src":"10187:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4824,"type":"bytes4","value":"_TRANSFER_FROM"},"id":5222,"name":"Identifier","src":"10200:14:30"}],"id":5223,"name":"BinaryOperation","src":"10187:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5224,"name":"Identifier","src":"10301:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5225,"name":"Identifier","src":"10309:5:30"}],"id":5226,"name":"MemberAccess","src":"10309:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5227,"name":"Literal","src":"10325:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5228,"name":"Literal","src":"10329:2:30"}],"id":5229,"name":"BinaryOperation","src":"10325:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5230,"name":"Literal","src":"10334:2:30"}],"id":5231,"name":"BinaryOperation","src":"10325:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5232,"name":"Literal","src":"10339:2:30"}],"id":5233,"name":"BinaryOperation","src":"10325:16:30"}],"id":5234,"name":"BinaryOperation","src":"10309:32:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":5235,"name":"Literal","src":"10343:34:30"}],"id":5236,"name":"FunctionCall","src":"10301:77:30"}],"id":5237,"name":"ExpressionStatement","src":"10301:77:30"},{"attributes":{"functionReturnParameters":5184},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":8661,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5238,"name":"Identifier","src":"10400:5:30"}],"id":5239,"name":"MemberAccess","src":"10400:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5240,"name":"Literal","src":"10422:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5241,"name":"Literal","src":"10426:2:30"}],"id":5242,"name":"BinaryOperation","src":"10422:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5243,"name":"Literal","src":"10431:2:30"}],"id":5244,"name":"BinaryOperation","src":"10422:11:30"}],"id":5245,"name":"FunctionCall","src":"10400:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8729,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5246,"name":"Identifier","src":"10436:5:30"}],"id":5247,"name":"MemberAccess","src":"10436:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5248,"name":"Literal","src":"10458:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5249,"name":"Literal","src":"10462:2:30"}],"id":5250,"name":"BinaryOperation","src":"10458:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5251,"name":"Literal","src":"10467:2:30"}],"id":5252,"name":"BinaryOperation","src":"10458:11:30"}],"id":5253,"name":"FunctionCall","src":"10436:34:30"}],"id":5254,"name":"TupleExpression","src":"10399:72:30"}],"id":5255,"name":"Return","src":"10392:79:30"}],"id":5256,"name":"Block","src":"10216:266:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5257,"name":"Identifier","src":"10590:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5258,"name":"Identifier","src":"10598:5:30"}],"id":5259,"name":"MemberAccess","src":"10598:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5260,"name":"Literal","src":"10614:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5261,"name":"Literal","src":"10618:2:30"}],"id":5262,"name":"BinaryOperation","src":"10614:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5263,"name":"Literal","src":"10623:2:30"}],"id":5264,"name":"BinaryOperation","src":"10614:11:30"}],"id":5265,"name":"BinaryOperation","src":"10598:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":5266,"name":"Literal","src":"10627:39:30"}],"id":5267,"name":"FunctionCall","src":"10590:77:30"}],"id":5268,"name":"ExpressionStatement","src":"10590:77:30"},{"attributes":{"functionReturnParameters":5184},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":8661,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5269,"name":"Identifier","src":"10689:5:30"}],"id":5270,"name":"MemberAccess","src":"10689:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5271,"name":"Literal","src":"10711:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5272,"name":"Literal","src":"10715:2:30"}],"id":5273,"name":"BinaryOperation","src":"10711:6:30"}],"id":5274,"name":"FunctionCall","src":"10689:29:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8729,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5275,"name":"Identifier","src":"10720:5:30"}],"id":5276,"name":"MemberAccess","src":"10720:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5277,"name":"Literal","src":"10742:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5278,"name":"Literal","src":"10746:2:30"}],"id":5279,"name":"BinaryOperation","src":"10742:6:30"}],"id":5280,"name":"FunctionCall","src":"10720:29:30"}],"id":5281,"name":"TupleExpression","src":"10688:62:30"}],"id":5282,"name":"Return","src":"10681:69:30"}],"id":5283,"name":"Block","src":"10488:273:30"}],"id":5284,"name":"IfStatement","src":"10183:578:30"}],"id":5285,"name":"IfStatement","src":"10044:717:30"}],"id":5286,"name":"Block","src":"9483:1284:30"}],"id":5287,"name":"FunctionDefinition","src":"9368:1399:30"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5319,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5288,"name":"ElementaryTypeName","src":"10866:7:30"}],"id":5289,"name":"VariableDeclaration","src":"10866:14:30"},{"attributes":{"constant":false,"name":"_loadable","scope":5319,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5290,"name":"ElementaryTypeName","src":"10882:4:30"}],"id":5291,"name":"VariableDeclaration","src":"10882:14:30"}],"id":5292,"name":"ParameterList","src":"10865:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":5295,"name":"ParameterList","src":"10917:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":5293,"name":"Identifier","src":"10907:9:30"}],"id":5294,"name":"ModifierInvocation","src":"10907:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5296,"name":"Identifier","src":"10969:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5297,"name":"Identifier","src":"10977:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5289,"type":"address","value":"_token"},"id":5298,"name":"Identifier","src":"10991:6:30"}],"id":5299,"name":"IndexAccess","src":"10977:21:30"}],"id":5300,"name":"MemberAccess","src":"10977:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5301,"name":"Literal","src":"11010:24:30"}],"id":5302,"name":"FunctionCall","src":"10969:66:30"}],"id":5303,"name":"ExpressionStatement","src":"10969:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":4834,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5304,"name":"Identifier","src":"11108:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5289,"type":"address","value":"_token"},"id":5305,"name":"Identifier","src":"11122:6:30"}],"id":5306,"name":"IndexAccess","src":"11108:21:30"}],"id":5307,"name":"MemberAccess","src":"11108:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5291,"type":"bool","value":"_loadable"},"id":5308,"name":"Identifier","src":"11141:9:30"}],"id":5309,"name":"Assignment","src":"11108:42:30"}],"id":5310,"name":"ExpressionStatement","src":"11108:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4756,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":5311,"name":"Identifier","src":"11166:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5312,"name":"Identifier","src":"11187:3:30"}],"id":5313,"name":"MemberAccess","src":"11187:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5289,"type":"address","value":"_token"},"id":5314,"name":"Identifier","src":"11199:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5291,"type":"bool","value":"_loadable"},"id":5315,"name":"Identifier","src":"11207:9:30"}],"id":5316,"name":"FunctionCall","src":"11166:51:30"}],"id":5317,"name":"EmitStatement","src":"11161:56:30"}],"id":5318,"name":"Block","src":"10917:307:30"}],"id":5319,"name":"FunctionDefinition","src":"10840:384:30"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5351,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5320,"name":"ElementaryTypeName","src":"11327:7:30"}],"id":5321,"name":"VariableDeclaration","src":"11327:14:30"},{"attributes":{"constant":false,"name":"_redeemable","scope":5351,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5322,"name":"ElementaryTypeName","src":"11343:4:30"}],"id":5323,"name":"VariableDeclaration","src":"11343:16:30"}],"id":5324,"name":"ParameterList","src":"11326:34:30"},{"attributes":{"parameters":[null]},"children":[],"id":5327,"name":"ParameterList","src":"11380:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":5325,"name":"Identifier","src":"11370:9:30"}],"id":5326,"name":"ModifierInvocation","src":"11370:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5328,"name":"Identifier","src":"11432:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5329,"name":"Identifier","src":"11440:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5321,"type":"address","value":"_token"},"id":5330,"name":"Identifier","src":"11454:6:30"}],"id":5331,"name":"IndexAccess","src":"11440:21:30"}],"id":5332,"name":"MemberAccess","src":"11440:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5333,"name":"Literal","src":"11473:24:30"}],"id":5334,"name":"FunctionCall","src":"11432:66:30"}],"id":5335,"name":"ExpressionStatement","src":"11432:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5336,"name":"Identifier","src":"11573:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5321,"type":"address","value":"_token"},"id":5337,"name":"Identifier","src":"11587:6:30"}],"id":5338,"name":"IndexAccess","src":"11573:21:30"}],"id":5339,"name":"MemberAccess","src":"11573:32:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"bool","value":"_redeemable"},"id":5340,"name":"Identifier","src":"11608:11:30"}],"id":5341,"name":"Assignment","src":"11573:46:30"}],"id":5342,"name":"ExpressionStatement","src":"11573:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4764,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":5343,"name":"Identifier","src":"11635:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5344,"name":"Identifier","src":"11658:3:30"}],"id":5345,"name":"MemberAccess","src":"11658:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5321,"type":"address","value":"_token"},"id":5346,"name":"Identifier","src":"11670:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"bool","value":"_redeemable"},"id":5347,"name":"Identifier","src":"11678:11:30"}],"id":5348,"name":"FunctionCall","src":"11635:55:30"}],"id":5349,"name":"EmitStatement","src":"11630:60:30"}],"id":5350,"name":"Block","src":"11380:317:30"}],"id":5351,"name":"FunctionDefinition","src":"11299:398:30"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5392,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5352,"name":"ElementaryTypeName","src":"11999:7:30"}],"id":5353,"name":"VariableDeclaration","src":"11999:14:30"},{"attributes":{"constant":false,"name":"_rate","scope":5392,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5354,"name":"ElementaryTypeName","src":"12015:7:30"}],"id":5355,"name":"VariableDeclaration","src":"12015:13:30"},{"attributes":{"constant":false,"name":"_updateDate","scope":5392,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5356,"name":"ElementaryTypeName","src":"12030:7:30"}],"id":5357,"name":"VariableDeclaration","src":"12030:19:30"}],"id":5358,"name":"ParameterList","src":"11998:52:30"},{"attributes":{"parameters":[null]},"children":[],"id":5361,"name":"ParameterList","src":"12078:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4929,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":5359,"name":"Identifier","src":"12060:17:30"}],"id":5360,"name":"ModifierInvocation","src":"12060:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5362,"name":"Identifier","src":"12130:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5363,"name":"Identifier","src":"12138:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5353,"type":"address","value":"_token"},"id":5364,"name":"Identifier","src":"12152:6:30"}],"id":5365,"name":"IndexAccess","src":"12138:21:30"}],"id":5366,"name":"MemberAccess","src":"12138:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5367,"name":"Literal","src":"12171:24:30"}],"id":5368,"name":"FunctionCall","src":"12130:66:30"}],"id":5369,"name":"ExpressionStatement","src":"12130:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":4830,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5370,"name":"Identifier","src":"12242:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5353,"type":"address","value":"_token"},"id":5371,"name":"Identifier","src":"12256:6:30"}],"id":5372,"name":"IndexAccess","src":"12242:21:30"}],"id":5373,"name":"MemberAccess","src":"12242:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5355,"type":"uint256","value":"_rate"},"id":5374,"name":"Identifier","src":"12271:5:30"}],"id":5375,"name":"Assignment","src":"12242:34:30"}],"id":5376,"name":"ExpressionStatement","src":"12242:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":4838,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5377,"name":"Identifier","src":"12339:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5353,"type":"address","value":"_token"},"id":5378,"name":"Identifier","src":"12353:6:30"}],"id":5379,"name":"IndexAccess","src":"12339:21:30"}],"id":5380,"name":"MemberAccess","src":"12339:32:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5357,"type":"uint256","value":"_updateDate"},"id":5381,"name":"Identifier","src":"12374:11:30"}],"id":5382,"name":"Assignment","src":"12339:46:30"}],"id":5383,"name":"ExpressionStatement","src":"12339:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4748,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":5384,"name":"Identifier","src":"12439:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5385,"name":"Identifier","src":"12456:3:30"}],"id":5386,"name":"MemberAccess","src":"12456:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5353,"type":"address","value":"_token"},"id":5387,"name":"Identifier","src":"12468:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5355,"type":"uint256","value":"_rate"},"id":5388,"name":"Identifier","src":"12476:5:30"}],"id":5389,"name":"FunctionCall","src":"12439:43:30"}],"id":5390,"name":"EmitStatement","src":"12434:48:30"}],"id":5391,"name":"Block","src":"12078:411:30"}],"id":5392,"name":"FunctionDefinition","src":"11974:515:30"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":5416,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5393,"name":"ElementaryTypeName","src":"12593:15:30"}],"id":5394,"name":"VariableDeclaration","src":"12593:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":5416,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5395,"name":"ElementaryTypeName","src":"12614:7:30"}],"id":5396,"name":"VariableDeclaration","src":"12614:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":5416,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5397,"name":"ElementaryTypeName","src":"12630:7:30"}],"id":5398,"name":"VariableDeclaration","src":"12630:15:30"}],"id":5399,"name":"ParameterList","src":"12592:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":5402,"name":"ParameterList","src":"12666:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":5400,"name":"Identifier","src":"12656:9:30"}],"id":5401,"name":"ModifierInvocation","src":"12656:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3328,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":5403,"name":"Identifier","src":"12676:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"address payable","value":"_to"},"id":5404,"name":"Identifier","src":"12690:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5396,"type":"address","value":"_asset"},"id":5405,"name":"Identifier","src":"12695:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5398,"type":"uint256","value":"_amount"},"id":5406,"name":"Identifier","src":"12703:7:30"}],"id":5407,"name":"FunctionCall","src":"12676:35:30"}],"id":5408,"name":"ExpressionStatement","src":"12676:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"function (address,address,uint256)","value":"Claimed"},"id":5409,"name":"Identifier","src":"12726:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"address payable","value":"_to"},"id":5410,"name":"Identifier","src":"12734:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5396,"type":"address","value":"_asset"},"id":5411,"name":"Identifier","src":"12739:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5398,"type":"uint256","value":"_amount"},"id":5412,"name":"Identifier","src":"12747:7:30"}],"id":5413,"name":"FunctionCall","src":"12726:29:30"}],"id":5414,"name":"EmitStatement","src":"12721:34:30"}],"id":5415,"name":"Block","src":"12666:96:30"}],"id":5416,"name":"FunctionDefinition","src":"12578:184:30"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5458,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5417,"name":"ElementaryTypeName","src":"13336:7:30"}],"id":5418,"name":"VariableDeclaration","src":"13336:10:30"}],"id":5419,"name":"ParameterList","src":"13335:12:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5420,"name":"ElementaryTypeName","src":"13371:6:30"}],"id":5421,"name":"VariableDeclaration","src":"13371:13:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5422,"name":"ElementaryTypeName","src":"13386:7:30"}],"id":5423,"name":"VariableDeclaration","src":"13386:7:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5424,"name":"ElementaryTypeName","src":"13395:7:30"}],"id":5425,"name":"VariableDeclaration","src":"13395:7:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5426,"name":"ElementaryTypeName","src":"13404:4:30"}],"id":5427,"name":"VariableDeclaration","src":"13404:4:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5428,"name":"ElementaryTypeName","src":"13410:4:30"}],"id":5429,"name":"VariableDeclaration","src":"13410:4:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5430,"name":"ElementaryTypeName","src":"13416:4:30"}],"id":5431,"name":"VariableDeclaration","src":"13416:4:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5432,"name":"ElementaryTypeName","src":"13422:7:30"}],"id":5433,"name":"VariableDeclaration","src":"13422:7:30"}],"id":5434,"name":"ParameterList","src":"13370:60:30"},{"children":[{"attributes":{"assignments":[5436]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":5457,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4839,"type":"struct TokenWhitelist.Token"},"id":5435,"name":"UserDefinedTypeName","src":"13441:5:30"}],"id":5436,"name":"VariableDeclaration","src":"13441:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5437,"name":"Identifier","src":"13467:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5418,"type":"address","value":"_a"},"id":5438,"name":"Identifier","src":"13481:2:30"}],"id":5439,"name":"IndexAccess","src":"13467:17:30"}],"id":5440,"name":"VariableDeclarationStatement","src":"13441:43:30"},{"attributes":{"functionReturnParameters":5434},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":4826,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5441,"name":"Identifier","src":"13502:9:30"}],"id":5442,"name":"MemberAccess","src":"13502:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":4828,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5443,"name":"Identifier","src":"13520:9:30"}],"id":5444,"name":"MemberAccess","src":"13520:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":4830,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5445,"name":"Identifier","src":"13541:9:30"}],"id":5446,"name":"MemberAccess","src":"13541:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5447,"name":"Identifier","src":"13557:9:30"}],"id":5448,"name":"MemberAccess","src":"13557:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":4834,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5449,"name":"Identifier","src":"13578:9:30"}],"id":5450,"name":"MemberAccess","src":"13578:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5451,"name":"Identifier","src":"13598:9:30"}],"id":5452,"name":"MemberAccess","src":"13598:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":4838,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5453,"name":"Identifier","src":"13620:9:30"}],"id":5454,"name":"MemberAccess","src":"13620:20:30"}],"id":5455,"name":"TupleExpression","src":"13501:140:30"}],"id":5456,"name":"Return","src":"13494:147:30"}],"id":5457,"name":"Block","src":"13431:217:30"}],"id":5458,"name":"FunctionDefinition","src":"13314:334:30"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5459,"name":"ParameterList","src":"14176:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5460,"name":"ElementaryTypeName","src":"14202:6:30"}],"id":5461,"name":"VariableDeclaration","src":"14202:13:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5462,"name":"ElementaryTypeName","src":"14217:7:30"}],"id":5463,"name":"VariableDeclaration","src":"14217:7:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5464,"name":"ElementaryTypeName","src":"14226:7:30"}],"id":5465,"name":"VariableDeclaration","src":"14226:7:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5466,"name":"ElementaryTypeName","src":"14235:4:30"}],"id":5467,"name":"VariableDeclaration","src":"14235:4:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5468,"name":"ElementaryTypeName","src":"14241:4:30"}],"id":5469,"name":"VariableDeclaration","src":"14241:4:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5470,"name":"ElementaryTypeName","src":"14247:4:30"}],"id":5471,"name":"VariableDeclaration","src":"14247:4:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5472,"name":"ElementaryTypeName","src":"14253:7:30"}],"id":5473,"name":"VariableDeclaration","src":"14253:7:30"}],"id":5474,"name":"ParameterList","src":"14201:60:30"},{"children":[{"attributes":{"assignments":[5476]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":5497,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4839,"type":"struct TokenWhitelist.Token"},"id":5475,"name":"UserDefinedTypeName","src":"14272:5:30"}],"id":5476,"name":"VariableDeclaration","src":"14272:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5477,"name":"Identifier","src":"14303:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"address","value":"_stablecoin"},"id":5478,"name":"Identifier","src":"14317:11:30"}],"id":5479,"name":"IndexAccess","src":"14303:26:30"}],"id":5480,"name":"VariableDeclarationStatement","src":"14272:57:30"},{"attributes":{"functionReturnParameters":5474},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":4826,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5481,"name":"Identifier","src":"14360:14:30"}],"id":5482,"name":"MemberAccess","src":"14360:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":4828,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5483,"name":"Identifier","src":"14395:14:30"}],"id":5484,"name":"MemberAccess","src":"14395:24:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":4830,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5485,"name":"Identifier","src":"14433:14:30"}],"id":5486,"name":"MemberAccess","src":"14433:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5487,"name":"Identifier","src":"14466:14:30"}],"id":5488,"name":"MemberAccess","src":"14466:24:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":4834,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5489,"name":"Identifier","src":"14504:14:30"}],"id":5490,"name":"MemberAccess","src":"14504:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5491,"name":"Identifier","src":"14541:14:30"}],"id":5492,"name":"MemberAccess","src":"14541:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":4838,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5493,"name":"Identifier","src":"14580:14:30"}],"id":5494,"name":"MemberAccess","src":"14580:25:30"}],"id":5495,"name":"TupleExpression","src":"14346:269:30"}],"id":5496,"name":"Return","src":"14339:276:30"}],"id":5497,"name":"Block","src":"14262:360:30"}],"id":5498,"name":"FunctionDefinition","src":"14150:472:30"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5499,"name":"ParameterList","src":"14777:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5507,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5500,"name":"ElementaryTypeName","src":"14803:7:30"}],"id":5501,"name":"ArrayTypeName","src":"14803:9:30"}],"id":5502,"name":"VariableDeclaration","src":"14803:16:30"}],"id":5503,"name":"ParameterList","src":"14802:18:30"},{"children":[{"attributes":{"functionReturnParameters":5503},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5504,"name":"Identifier","src":"14838:18:30"}],"id":5505,"name":"Return","src":"14831:25:30"}],"id":5506,"name":"Block","src":"14821:42:30"}],"id":5507,"name":"FunctionDefinition","src":"14751:112:30"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5508,"name":"ParameterList","src":"15015:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5565,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5509,"name":"ElementaryTypeName","src":"15041:7:30"}],"id":5510,"name":"ArrayTypeName","src":"15041:9:30"}],"id":5511,"name":"VariableDeclaration","src":"15041:16:30"}],"id":5512,"name":"ParameterList","src":"15040:18:30"},{"children":[{"attributes":{"assignments":[5516]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":5564,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":5514,"name":"ElementaryTypeName","src":"15069:7:30"}],"id":5515,"name":"ArrayTypeName","src":"15069:9:30"}],"id":5516,"name":"VariableDeclaration","src":"15069:36:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5517,"name":"ElementaryTypeName","src":"15112:7:30"}],"id":5518,"name":"ArrayTypeName","src":"15112:9:30"}],"id":5519,"name":"NewExpression","src":"15108:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5520,"name":"Identifier","src":"15122:18:30"}],"id":5521,"name":"FunctionCall","src":"15108:33:30"}],"id":5522,"name":"VariableDeclarationStatement","src":"15069:72:30"},{"attributes":{"assignments":[5524]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":5564,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5523,"name":"ElementaryTypeName","src":"15151:7:30"}],"id":5524,"name":"VariableDeclaration","src":"15151:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5525,"name":"Literal","src":"15177:1:30"}],"id":5526,"name":"VariableDeclarationStatement","src":"15151:27:30"},{"children":[{"attributes":{"assignments":[5528]},"children":[{"attributes":{"constant":false,"name":"i","scope":5561,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5527,"name":"ElementaryTypeName","src":"15193:7:30"}],"id":5528,"name":"VariableDeclaration","src":"15193:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5529,"name":"Literal","src":"15205:1:30"}],"id":5530,"name":"VariableDeclarationStatement","src":"15193:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint256","value":"i"},"id":5531,"name":"Identifier","src":"15208:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5532,"name":"Identifier","src":"15212:18:30"}],"id":5533,"name":"MemberAccess","src":"15212:25:30"}],"id":5534,"name":"BinaryOperation","src":"15208:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint256","value":"i"},"id":5535,"name":"Identifier","src":"15239:1:30"}],"id":5536,"name":"UnaryOperation","src":"15239:3:30"}],"id":5537,"name":"ExpressionStatement","src":"15239:3:30"},{"children":[{"attributes":{"assignments":[5539]},"children":[{"attributes":{"constant":false,"name":"token","scope":5560,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5538,"name":"ElementaryTypeName","src":"15258:7:30"}],"id":5539,"name":"VariableDeclaration","src":"15258:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5540,"name":"Identifier","src":"15274:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint256","value":"i"},"id":5541,"name":"Identifier","src":"15293:1:30"}],"id":5542,"name":"IndexAccess","src":"15274:21:30"}],"id":5543,"name":"VariableDeclarationStatement","src":"15258:37:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5544,"name":"Identifier","src":"15313:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5539,"type":"address","value":"token"},"id":5545,"name":"Identifier","src":"15327:5:30"}],"id":5546,"name":"IndexAccess","src":"15313:20:30"}],"id":5547,"name":"MemberAccess","src":"15313:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5516,"type":"address[] memory","value":"redeemableAddresses"},"id":5548,"name":"Identifier","src":"15364:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"uint256","value":"redeemableIndex"},"id":5549,"name":"Identifier","src":"15384:15:30"}],"id":5550,"name":"IndexAccess","src":"15364:36:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5539,"type":"address","value":"token"},"id":5551,"name":"Identifier","src":"15403:5:30"}],"id":5552,"name":"Assignment","src":"15364:44:30"}],"id":5553,"name":"ExpressionStatement","src":"15364:44:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"uint256","value":"redeemableIndex"},"id":5554,"name":"Identifier","src":"15426:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5555,"name":"Literal","src":"15445:1:30"}],"id":5556,"name":"Assignment","src":"15426:20:30"}],"id":5557,"name":"ExpressionStatement","src":"15426:20:30"}],"id":5558,"name":"Block","src":"15346:115:30"}],"id":5559,"name":"IfStatement","src":"15309:152:30"}],"id":5560,"name":"Block","src":"15244:227:30"}],"id":5561,"name":"ForStatement","src":"15188:283:30"},{"attributes":{"functionReturnParameters":5512},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5516,"type":"address[] memory","value":"redeemableAddresses"},"id":5562,"name":"Identifier","src":"15487:19:30"}],"id":5563,"name":"Return","src":"15480:26:30"}],"id":5564,"name":"Block","src":"15059:454:30"}],"id":5565,"name":"FunctionDefinition","src":"14990:523:30"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5588,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5566,"name":"ElementaryTypeName","src":"15727:7:30"}],"id":5567,"name":"VariableDeclaration","src":"15727:14:30"},{"attributes":{"constant":false,"name":"_methodId","scope":5588,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5568,"name":"ElementaryTypeName","src":"15743:6:30"}],"id":5569,"name":"VariableDeclaration","src":"15743:16:30"}],"id":5570,"name":"ParameterList","src":"15726:34:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5588,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5571,"name":"ElementaryTypeName","src":"15782:4:30"}],"id":5572,"name":"VariableDeclaration","src":"15782:4:30"}],"id":5573,"name":"ParameterList","src":"15781:6:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5574,"name":"Identifier","src":"15798:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5575,"name":"Identifier","src":"15806:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5567,"type":"address","value":"_token"},"id":5576,"name":"Identifier","src":"15820:6:30"}],"id":5577,"name":"IndexAccess","src":"15806:21:30"}],"id":5578,"name":"MemberAccess","src":"15806:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":5579,"name":"Literal","src":"15839:20:30"}],"id":5580,"name":"FunctionCall","src":"15798:62:30"}],"id":5581,"name":"ExpressionStatement","src":"15798:62:30"},{"attributes":{"functionReturnParameters":5573},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5582,"name":"Identifier","src":"15878:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5569,"type":"bytes4","value":"_methodId"},"id":5583,"name":"Identifier","src":"15897:9:30"}],"id":5584,"name":"IndexAccess","src":"15878:29:30"}],"id":5585,"name":"TupleExpression","src":"15877:31:30"}],"id":5586,"name":"Return","src":"15870:38:30"}],"id":5587,"name":"Block","src":"15788:127:30"}],"id":5588,"name":"FunctionDefinition","src":"15695:220:30"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":5601,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5589,"name":"ElementaryTypeName","src":"16104:6:30"}],"id":5590,"name":"VariableDeclaration","src":"16104:16:30"}],"id":5591,"name":"ParameterList","src":"16103:18:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5601,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5592,"name":"ElementaryTypeName","src":"16145:4:30"}],"id":5593,"name":"VariableDeclaration","src":"16145:4:30"}],"id":5594,"name":"ParameterList","src":"16144:6:30"},{"children":[{"attributes":{"functionReturnParameters":5594},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5595,"name":"Identifier","src":"16169:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5590,"type":"bytes4","value":"_methodId"},"id":5596,"name":"Identifier","src":"16188:9:30"}],"id":5597,"name":"IndexAccess","src":"16169:29:30"}],"id":5598,"name":"TupleExpression","src":"16168:31:30"}],"id":5599,"name":"Return","src":"16161:38:30"}],"id":5600,"name":"Block","src":"16151:55:30"}],"id":5601,"name":"FunctionDefinition","src":"16070:136:30"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5602,"name":"ParameterList","src":"16342:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5609,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5603,"name":"ElementaryTypeName","src":"16368:7:30"}],"id":5604,"name":"VariableDeclaration","src":"16368:7:30"}],"id":5605,"name":"ParameterList","src":"16367:9:30"},{"children":[{"attributes":{"functionReturnParameters":5605},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5606,"name":"Identifier","src":"16394:18:30"}],"id":5607,"name":"Return","src":"16387:25:30"}],"id":5608,"name":"Block","src":"16377:42:30"}],"id":5609,"name":"FunctionDefinition","src":"16316:103:30"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5610,"name":"ParameterList","src":"16570:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5617,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5611,"name":"ElementaryTypeName","src":"16596:7:30"}],"id":5612,"name":"VariableDeclaration","src":"16596:7:30"}],"id":5613,"name":"ParameterList","src":"16595:9:30"},{"children":[{"attributes":{"functionReturnParameters":5613},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"address","value":"_stablecoin"},"id":5614,"name":"Identifier","src":"16622:11:30"}],"id":5615,"name":"Return","src":"16615:18:30"}],"id":5616,"name":"Block","src":"16605:35:30"}],"id":5617,"name":"FunctionDefinition","src":"16551:89:30"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5618,"name":"ParameterList","src":"16774:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5625,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5619,"name":"ElementaryTypeName","src":"16800:7:30"}],"id":5620,"name":"VariableDeclaration","src":"16800:7:30"}],"id":5621,"name":"ParameterList","src":"16799:9:30"},{"children":[{"attributes":{"functionReturnParameters":5621},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4856,"type":"bytes32","value":"_oracleNode"},"id":5622,"name":"Identifier","src":"16826:11:30"}],"id":5623,"name":"Return","src":"16819:18:30"}],"id":5624,"name":"Block","src":"16809:35:30"}],"id":5625,"name":"FunctionDefinition","src":"16755:89:30"}],"id":5626,"name":"ContractDefinition","src":"1939:14907:30"}],"id":5627,"name":"SourceUnit","src":"774:16073:30"}},"wallet.sol":{"AST":{"attributes":{"absolutePath":"wallet.sol","exportedSymbols":{"AddressWhitelist":[650],"ControllableOwnable":[80],"DailyLimitTrait":[852],"GasTopUpLimit":[1142],"LoadLimit":[1316],"SelfCallableOwnable":[102],"SpendLimit":[984],"Wallet":[2227]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":45,"name":"PragmaDirective","src":"757:24:31"},{"attributes":{"SourceUnit":3874,"absolutePath":"licence.sol","file":"./licence.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":46,"name":"ImportDirective","src":"783:23:31"},{"attributes":{"SourceUnit":3073,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":47,"name":"ImportDirective","src":"807:33:31"},{"attributes":{"SourceUnit":2871,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":48,"name":"ImportDirective","src":"841:38:31"},{"attributes":{"SourceUnit":2775,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":49,"name":"ImportDirective","src":"880:37:31"},{"attributes":{"SourceUnit":3330,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":50,"name":"ImportDirective","src":"918:39:31"},{"attributes":{"SourceUnit":2916,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":51,"name":"ImportDirective","src":"958:39:31"},{"attributes":{"SourceUnit":3290,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":52,"name":"ImportDirective","src":"998:44:31"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":53,"name":"ImportDirective","src":"1043:34:31"},{"attributes":{"SourceUnit":2247,"absolutePath":"externals/Address.sol","file":"./externals/Address.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":54,"name":"ImportDirective","src":"1078:33:31"},{"attributes":{"SourceUnit":2391,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":55,"name":"ImportDirective","src":"1112:31:31"},{"attributes":{"SourceUnit":2610,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":56,"name":"ImportDirective","src":"1144:35:31"},{"attributes":{"SourceUnit":2338,"absolutePath":"externals/ERC165.sol","file":"./externals/ERC165.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":57,"name":"ImportDirective","src":"1180:32:31"},{"attributes":{"SourceUnit":2328,"absolutePath":"externals/ECDSA.sol","file":"./externals/ECDSA.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":58,"name":"ImportDirective","src":"1213:31:31"},{"attributes":{"contractDependencies":[2870,2915,3072],"contractKind":"contract","documentation":"@title ControllableOwnable combines Controllable and Ownable\n @dev providing an additional modifier to check if Owner or Controller","fullyImplemented":false,"linearizedBaseContracts":[80,3072,2870,2915],"name":"ControllableOwnable","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2870,"type":"contract Controllable"},"id":59,"name":"UserDefinedTypeName","src":"1418:12:31"}],"id":60,"name":"InheritanceSpecifier","src":"1418:12:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3072,"type":"contract Ownable"},"id":61,"name":"UserDefinedTypeName","src":"1432:7:31"}],"id":62,"name":"InheritanceSpecifier","src":"1432:7:31"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or one of the Controllers","name":"onlyOwnerOrController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":63,"name":"ParameterList","src":"1548:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a244313930a94a6f5de4548387c8c245a5d11002ac47a2e54f96214a9879106","typeString":"literal_string \"only owner||controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":64,"name":"Identifier","src":"1561:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":65,"name":"Identifier","src":"1569:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":66,"name":"Identifier","src":"1578:3:31"}],"id":67,"name":"MemberAccess","src":"1578:10:31"}],"id":68,"name":"FunctionCall","src":"1569:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"function (address) view returns (bool)","value":"_isController"},"id":69,"name":"Identifier","src":"1593:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":70,"name":"Identifier","src":"1607:3:31"}],"id":71,"name":"MemberAccess","src":"1607:10:31"}],"id":72,"name":"FunctionCall","src":"1593:25:31"}],"id":73,"name":"BinaryOperation","src":"1569:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||controller\"","value":"only owner||controller"},"id":74,"name":"Literal","src":"1620:24:31"}],"id":75,"name":"FunctionCall","src":"1561:84:31"}],"id":76,"name":"ExpressionStatement","src":"1561:84:31"},{"id":77,"name":"PlaceholderStatement","src":"1655:1:31"}],"id":78,"name":"Block","src":"1551:112:31"}],"id":79,"name":"ModifierDefinition","src":"1518:145:31"}],"id":80,"name":"ContractDefinition","src":"1386:279:31"},{"attributes":{"contractDependencies":[3072],"contractKind":"contract","documentation":"@title SelfCallableOwnable allows either owner or the contract itself to call its functions\n @dev providing an additional modifier to check if Owner or self is calling\n @dev the \"self\" here is used for the meta transactions","fullyImplemented":false,"linearizedBaseContracts":[102,3072],"name":"SelfCallableOwnable","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3072,"type":"contract Ownable"},"id":81,"name":"UserDefinedTypeName","src":"1934:7:31"}],"id":82,"name":"InheritanceSpecifier","src":"1934:7:31"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or self","name":"onlyOwnerOrSelf","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":83,"name":"ParameterList","src":"2026:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c98ff749bed2b5f266d255ad845f8a2a0dba28f389ec62046d9aad839ae2d6","typeString":"literal_string \"only owner||self\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":84,"name":"Identifier","src":"2039:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":85,"name":"Identifier","src":"2047:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":86,"name":"Identifier","src":"2056:3:31"}],"id":87,"name":"MemberAccess","src":"2056:10:31"}],"id":88,"name":"FunctionCall","src":"2047:20:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":89,"name":"Identifier","src":"2071:3:31"}],"id":90,"name":"MemberAccess","src":"2071:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfCallableOwnable_$102","typeString":"contract SelfCallableOwnable"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":91,"name":"ElementaryTypeNameExpression","src":"2085:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10235,"type":"contract SelfCallableOwnable","value":"this"},"id":92,"name":"Identifier","src":"2093:4:31"}],"id":93,"name":"FunctionCall","src":"2085:13:31"}],"id":94,"name":"BinaryOperation","src":"2071:27:31"}],"id":95,"name":"BinaryOperation","src":"2047:51:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c73656c66","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||self\"","value":"only owner||self"},"id":96,"name":"Literal","src":"2100:18:31"}],"id":97,"name":"FunctionCall","src":"2039:80:31"}],"id":98,"name":"ExpressionStatement","src":"2039:80:31"},{"id":99,"name":"PlaceholderStatement","src":"2129:1:31"}],"id":100,"name":"Block","src":"2029:108:31"}],"id":101,"name":"ModifierDefinition","src":"2002:135:31"}],"id":102,"name":"ContractDefinition","src":"1902:237:31"},{"attributes":{"contractDependencies":[80,102,2870,2915,3072],"contractKind":"contract","documentation":"@title AddressWhitelist provides payee-whitelist functionality.\n @dev This contract will allow the user to maintain a whitelist of addresses\n @dev These addresses will live outside of the various spend limits","fullyImplemented":false,"linearizedBaseContracts":[650,102,80,3072,2870,2915],"name":"AddressWhitelist","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":80,"type":"contract ControllableOwnable"},"id":103,"name":"UserDefinedTypeName","src":"2390:19:31"}],"id":104,"name":"InheritanceSpecifier","src":"2390:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":102,"type":"contract SelfCallableOwnable"},"id":105,"name":"UserDefinedTypeName","src":"2411:19:31"}],"id":106,"name":"InheritanceSpecifier","src":"2411:19:31"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":107,"name":"UserDefinedTypeName","src":"2443:8:31"},{"attributes":{"name":"uint256","type":"uint256"},"id":108,"name":"ElementaryTypeName","src":"2456:7:31"}],"id":109,"name":"UsingForDirective","src":"2437:27:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":116,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":110,"name":"ElementaryTypeName","src":"2493:7:31"}],"id":111,"name":"VariableDeclaration","src":"2493:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":116,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":112,"name":"ElementaryTypeName","src":"2510:7:31"}],"id":113,"name":"ArrayTypeName","src":"2510:9:31"}],"id":114,"name":"VariableDeclaration","src":"2510:20:31"}],"id":115,"name":"ParameterList","src":"2492:39:31"}],"id":116,"name":"EventDefinition","src":"2470:62:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":117,"name":"ElementaryTypeName","src":"2570:7:31"}],"id":118,"name":"VariableDeclaration","src":"2570:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":122,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":119,"name":"ElementaryTypeName","src":"2587:7:31"}],"id":120,"name":"VariableDeclaration","src":"2587:13:31"}],"id":121,"name":"ParameterList","src":"2569:32:31"}],"id":122,"name":"EventDefinition","src":"2537:65:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":129,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":123,"name":"ElementaryTypeName","src":"2640:7:31"}],"id":124,"name":"ArrayTypeName","src":"2640:9:31"}],"id":125,"name":"VariableDeclaration","src":"2640:20:31"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":129,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":126,"name":"ElementaryTypeName","src":"2662:7:31"}],"id":127,"name":"VariableDeclaration","src":"2662:13:31"}],"id":128,"name":"ParameterList","src":"2639:37:31"}],"id":129,"name":"EventDefinition","src":"2607:70:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":135,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":130,"name":"ElementaryTypeName","src":"2715:7:31"}],"id":131,"name":"VariableDeclaration","src":"2715:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":135,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":132,"name":"ElementaryTypeName","src":"2732:7:31"}],"id":133,"name":"VariableDeclaration","src":"2732:13:31"}],"id":134,"name":"ParameterList","src":"2714:32:31"}],"id":135,"name":"EventDefinition","src":"2683:64:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedFromWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":142,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":136,"name":"ElementaryTypeName","src":"2779:7:31"}],"id":137,"name":"VariableDeclaration","src":"2779:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":142,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":138,"name":"ElementaryTypeName","src":"2796:7:31"}],"id":139,"name":"ArrayTypeName","src":"2796:9:31"}],"id":140,"name":"VariableDeclaration","src":"2796:20:31"}],"id":141,"name":"ParameterList","src":"2778:39:31"}],"id":142,"name":"EventDefinition","src":"2752:66:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":149,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":143,"name":"ElementaryTypeName","src":"2855:7:31"}],"id":144,"name":"ArrayTypeName","src":"2855:9:31"}],"id":145,"name":"VariableDeclaration","src":"2855:20:31"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":149,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":146,"name":"ElementaryTypeName","src":"2877:7:31"}],"id":147,"name":"VariableDeclaration","src":"2877:13:31"}],"id":148,"name":"ParameterList","src":"2854:37:31"}],"id":149,"name":"EventDefinition","src":"2823:69:31"},{"attributes":{"constant":false,"name":"whitelistMap","scope":650,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":150,"name":"ElementaryTypeName","src":"2906:7:31"},{"attributes":{"name":"bool","type":"bool"},"id":151,"name":"ElementaryTypeName","src":"2917:4:31"}],"id":152,"name":"Mapping","src":"2898:24:31"}],"id":153,"name":"VariableDeclaration","src":"2898:44:31"},{"attributes":{"constant":false,"name":"whitelistArray","scope":650,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":154,"name":"ElementaryTypeName","src":"2948:7:31"}],"id":155,"name":"ArrayTypeName","src":"2948:9:31"}],"id":156,"name":"VariableDeclaration","src":"2948:31:31"},{"attributes":{"constant":false,"name":"_pendingWhitelistAddition","scope":650,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":157,"name":"ElementaryTypeName","src":"2985:7:31"}],"id":158,"name":"ArrayTypeName","src":"2985:9:31"}],"id":159,"name":"VariableDeclaration","src":"2985:43:31"},{"attributes":{"constant":false,"name":"_pendingWhitelistRemoval","scope":650,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":160,"name":"ElementaryTypeName","src":"3034:7:31"}],"id":161,"name":"ArrayTypeName","src":"3034:9:31"}],"id":162,"name":"VariableDeclaration","src":"3034:42:31"},{"attributes":{"constant":false,"name":"submittedWhitelistAddition","scope":650,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":163,"name":"ElementaryTypeName","src":"3082:4:31"}],"id":164,"name":"VariableDeclaration","src":"3082:38:31"},{"attributes":{"constant":false,"name":"submittedWhitelistRemoval","scope":650,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":165,"name":"ElementaryTypeName","src":"3126:4:31"}],"id":166,"name":"VariableDeclaration","src":"3126:37:31"},{"attributes":{"constant":false,"name":"isSetWhitelist","scope":650,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":167,"name":"ElementaryTypeName","src":"3169:4:31"}],"id":168,"name":"VariableDeclaration","src":"3169:26:31"},{"attributes":{"documentation":"@dev Check if the provided addresses contain the owner or the zero-address address.","name":"hasNoOwnerOrZeroAddress","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":209,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":169,"name":"ElementaryTypeName","src":"3327:7:31"}],"id":170,"name":"ArrayTypeName","src":"3327:9:31"}],"id":171,"name":"VariableDeclaration","src":"3327:27:31"}],"id":172,"name":"ParameterList","src":"3326:29:31"},{"children":[{"children":[{"attributes":{"assignments":[174]},"children":[{"attributes":{"constant":false,"name":"i","scope":206,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":173,"name":"ElementaryTypeName","src":"3371:7:31"}],"id":174,"name":"VariableDeclaration","src":"3371:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":175,"name":"Literal","src":"3383:1:31"}],"id":176,"name":"VariableDeclarationStatement","src":"3371:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":174,"type":"uint256","value":"i"},"id":177,"name":"Identifier","src":"3386:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":171,"type":"address[] memory","value":"_addresses"},"id":178,"name":"Identifier","src":"3390:10:31"}],"id":179,"name":"MemberAccess","src":"3390:17:31"}],"id":180,"name":"BinaryOperation","src":"3386:21:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":174,"type":"uint256","value":"i"},"id":181,"name":"Identifier","src":"3409:1:31"}],"id":182,"name":"UnaryOperation","src":"3409:3:31"}],"id":183,"name":"ExpressionStatement","src":"3409:3:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83144f57b92473167e9ce74530b82e833e4f010b46d8a2562f84cdc754bd4967","typeString":"literal_string \"contains owner address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":184,"name":"Identifier","src":"3428:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":185,"name":"Identifier","src":"3437:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":171,"type":"address[] memory","value":"_addresses"},"id":186,"name":"Identifier","src":"3446:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":174,"type":"uint256","value":"i"},"id":187,"name":"Identifier","src":"3457:1:31"}],"id":188,"name":"IndexAccess","src":"3446:13:31"}],"id":189,"name":"FunctionCall","src":"3437:23:31"}],"id":190,"name":"UnaryOperation","src":"3436:24:31"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e73206f776e65722061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains owner address\"","value":"contains owner address"},"id":191,"name":"Literal","src":"3462:24:31"}],"id":192,"name":"FunctionCall","src":"3428:59:31"}],"id":193,"name":"ExpressionStatement","src":"3428:59:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab14c1506b1b0c03aad2feb5e5b965df7dffe18036562732ceabd49019d58098","typeString":"literal_string \"contains 0 address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":194,"name":"Identifier","src":"3501:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":171,"type":"address[] memory","value":"_addresses"},"id":195,"name":"Identifier","src":"3509:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":174,"type":"uint256","value":"i"},"id":196,"name":"Identifier","src":"3520:1:31"}],"id":197,"name":"IndexAccess","src":"3509:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":198,"name":"ElementaryTypeNameExpression","src":"3526:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":199,"name":"Literal","src":"3534:1:31"}],"id":200,"name":"FunctionCall","src":"3526:10:31"}],"id":201,"name":"BinaryOperation","src":"3509:27:31"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e7320302061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains 0 address\"","value":"contains 0 address"},"id":202,"name":"Literal","src":"3538:20:31"}],"id":203,"name":"FunctionCall","src":"3501:58:31"}],"id":204,"name":"ExpressionStatement","src":"3501:58:31"}],"id":205,"name":"Block","src":"3414:156:31"}],"id":206,"name":"ForStatement","src":"3366:204:31"},{"id":207,"name":"PlaceholderStatement","src":"3579:1:31"}],"id":208,"name":"Block","src":"3356:231:31"}],"id":209,"name":"ModifierDefinition","src":"3294:293:31"},{"attributes":{"documentation":"@dev Check that neither addition nor removal operations have already been submitted.","name":"noActiveSubmission","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":210,"name":"ParameterList","src":"3713:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_218a99457edaa7c4d6a4ca4023db54cf2e31e2ca8b9a350a6c9ab56a1ea1df99","typeString":"literal_string \"whitelist sumbission pending\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":211,"name":"Identifier","src":"3726:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":212,"name":"Identifier","src":"3735:26:31"}],"id":213,"name":"UnaryOperation","src":"3734:27:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":214,"name":"Identifier","src":"3766:25:31"}],"id":215,"name":"UnaryOperation","src":"3765:26:31"}],"id":216,"name":"BinaryOperation","src":"3734:57:31"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c6973742073756d62697373696f6e2070656e64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist sumbission pending\"","value":"whitelist sumbission pending"},"id":217,"name":"Literal","src":"3793:30:31"}],"id":218,"name":"FunctionCall","src":"3726:98:31"}],"id":219,"name":"ExpressionStatement","src":"3726:98:31"},{"id":220,"name":"PlaceholderStatement","src":"3834:1:31"}],"id":221,"name":"Block","src":"3716:126:31"}],"id":222,"name":"ModifierDefinition","src":"3686:156:31"},{"attributes":{"documentation":"@dev Cancel pending whitelist addition.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistAddition","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":257,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":223,"name":"ElementaryTypeName","src":"3929:7:31"}],"id":224,"name":"VariableDeclaration","src":"3929:13:31"}],"id":225,"name":"ParameterList","src":"3928:15:31"},{"attributes":{"parameters":[null]},"children":[],"id":228,"name":"ParameterList","src":"3975:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":79,"type":"modifier ()","value":"onlyOwnerOrController"},"id":226,"name":"Identifier","src":"3953:21:31"}],"id":227,"name":"ModifierInvocation","src":"3953:21:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":229,"name":"Identifier","src":"4035:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":230,"name":"Identifier","src":"4043:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":231,"name":"Literal","src":"4071:23:31"}],"id":232,"name":"FunctionCall","src":"4035:60:31"}],"id":233,"name":"ExpressionStatement","src":"4035:60:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":234,"name":"Identifier","src":"4200:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":224,"type":"bytes32","value":"_hash"},"id":235,"name":"Identifier","src":"4208:5:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":236,"name":"Identifier","src":"4217:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":237,"name":"Identifier","src":"4231:25:31"}],"id":238,"name":"FunctionCall","src":"4217:40:31"}],"id":239,"name":"BinaryOperation","src":"4208:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":240,"name":"Literal","src":"4259:37:31"}],"id":241,"name":"FunctionCall","src":"4200:97:31"}],"id":242,"name":"ExpressionStatement","src":"4200:97:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":243,"name":"Identifier","src":"4350:25:31"}],"id":244,"name":"UnaryOperation","src":"4343:32:31"}],"id":245,"name":"ExpressionStatement","src":"4343:32:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":246,"name":"Identifier","src":"4432:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":247,"name":"Literal","src":"4461:5:31"}],"id":248,"name":"Assignment","src":"4432:34:31"}],"id":249,"name":"ExpressionStatement","src":"4432:34:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"function (address,bytes32)","value":"CancelledWhitelistAddition"},"id":250,"name":"Identifier","src":"4521:26:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":251,"name":"Identifier","src":"4548:3:31"}],"id":252,"name":"MemberAccess","src":"4548:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":224,"type":"bytes32","value":"_hash"},"id":253,"name":"Identifier","src":"4560:5:31"}],"id":254,"name":"FunctionCall","src":"4521:45:31"}],"id":255,"name":"EmitStatement","src":"4516:50:31"}],"id":256,"name":"Block","src":"3975:598:31"}],"id":257,"name":"FunctionDefinition","src":"3896:677:31"},{"attributes":{"documentation":"@dev Cancel pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistRemoval","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":292,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":258,"name":"ElementaryTypeName","src":"4673:7:31"}],"id":259,"name":"VariableDeclaration","src":"4673:13:31"}],"id":260,"name":"ParameterList","src":"4672:15:31"},{"attributes":{"parameters":[null]},"children":[],"id":263,"name":"ParameterList","src":"4719:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":79,"type":"modifier ()","value":"onlyOwnerOrController"},"id":261,"name":"Identifier","src":"4697:21:31"}],"id":262,"name":"ModifierInvocation","src":"4697:21:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":264,"name":"Identifier","src":"4779:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":265,"name":"Identifier","src":"4787:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":266,"name":"Literal","src":"4814:23:31"}],"id":267,"name":"FunctionCall","src":"4779:59:31"}],"id":268,"name":"ExpressionStatement","src":"4779:59:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":269,"name":"Identifier","src":"4942:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":259,"type":"bytes32","value":"_hash"},"id":270,"name":"Identifier","src":"4950:5:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":271,"name":"Identifier","src":"4959:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":272,"name":"Identifier","src":"4973:24:31"}],"id":273,"name":"FunctionCall","src":"4959:39:31"}],"id":274,"name":"BinaryOperation","src":"4950:48:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":275,"name":"Literal","src":"5000:37:31"}],"id":276,"name":"FunctionCall","src":"4942:96:31"}],"id":277,"name":"ExpressionStatement","src":"4942:96:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":278,"name":"Identifier","src":"5091:24:31"}],"id":279,"name":"UnaryOperation","src":"5084:31:31"}],"id":280,"name":"ExpressionStatement","src":"5084:31:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":281,"name":"Identifier","src":"5161:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":282,"name":"Literal","src":"5189:5:31"}],"id":283,"name":"Assignment","src":"5161:33:31"}],"id":284,"name":"ExpressionStatement","src":"5161:33:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":135,"type":"function (address,bytes32)","value":"CancelledWhitelistRemoval"},"id":285,"name":"Identifier","src":"5249:25:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":286,"name":"Identifier","src":"5275:3:31"}],"id":287,"name":"MemberAccess","src":"5275:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":259,"type":"bytes32","value":"_hash"},"id":288,"name":"Identifier","src":"5287:5:31"}],"id":289,"name":"FunctionCall","src":"5249:44:31"}],"id":290,"name":"EmitStatement","src":"5244:49:31"}],"id":291,"name":"Block","src":"4719:581:31"}],"id":292,"name":"FunctionDefinition","src":"4641:659:31"},{"attributes":{"documentation":"@dev Confirm pending whitelist addition.\n @dev This will only ever be applied post 2FA, by one of the Controllers\n @param _hash is the hash of the pending whitelist array, a form of lamport lock","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistAddition","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":364,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":293,"name":"ElementaryTypeName","src":"5557:7:31"}],"id":294,"name":"VariableDeclaration","src":"5557:13:31"}],"id":295,"name":"ParameterList","src":"5556:15:31"},{"attributes":{"parameters":[null]},"children":[],"id":298,"name":"ParameterList","src":"5596:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":296,"name":"Identifier","src":"5581:14:31"}],"id":297,"name":"ModifierInvocation","src":"5581:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":299,"name":"Identifier","src":"5673:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":300,"name":"Identifier","src":"5681:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":301,"name":"Literal","src":"5709:23:31"}],"id":302,"name":"FunctionCall","src":"5673:60:31"}],"id":303,"name":"ExpressionStatement","src":"5673:60:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":304,"name":"Identifier","src":"5838:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":294,"type":"bytes32","value":"_hash"},"id":305,"name":"Identifier","src":"5846:5:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":306,"name":"Identifier","src":"5855:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":307,"name":"Identifier","src":"5869:25:31"}],"id":308,"name":"FunctionCall","src":"5855:40:31"}],"id":309,"name":"BinaryOperation","src":"5846:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":310,"name":"Literal","src":"5897:37:31"}],"id":311,"name":"FunctionCall","src":"5838:97:31"}],"id":312,"name":"ExpressionStatement","src":"5838:97:31"},{"children":[{"attributes":{"assignments":[314]},"children":[{"attributes":{"constant":false,"name":"i","scope":349,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":313,"name":"ElementaryTypeName","src":"5990:7:31"}],"id":314,"name":"VariableDeclaration","src":"5990:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":315,"name":"Literal","src":"6002:1:31"}],"id":316,"name":"VariableDeclarationStatement","src":"5990:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":317,"name":"Identifier","src":"6005:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":318,"name":"Identifier","src":"6009:25:31"}],"id":319,"name":"MemberAccess","src":"6009:32:31"}],"id":320,"name":"BinaryOperation","src":"6005:36:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":321,"name":"Identifier","src":"6043:1:31"}],"id":322,"name":"UnaryOperation","src":"6043:3:31"}],"id":323,"name":"ExpressionStatement","src":"6043:3:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":324,"name":"Identifier","src":"6117:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":325,"name":"Identifier","src":"6130:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":326,"name":"Identifier","src":"6156:1:31"}],"id":327,"name":"IndexAccess","src":"6130:28:31"}],"id":328,"name":"IndexAccess","src":"6117:42:31"}],"id":329,"name":"UnaryOperation","src":"6116:43:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":330,"name":"Identifier","src":"6227:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":331,"name":"Identifier","src":"6240:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":332,"name":"Identifier","src":"6266:1:31"}],"id":333,"name":"IndexAccess","src":"6240:28:31"}],"id":334,"name":"IndexAccess","src":"6227:42:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":335,"name":"Literal","src":"6272:4:31"}],"id":336,"name":"Assignment","src":"6227:49:31"}],"id":337,"name":"ExpressionStatement","src":"6227:49:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":338,"name":"Identifier","src":"6294:14:31"}],"id":340,"name":"MemberAccess","src":"6294:19:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":341,"name":"Identifier","src":"6314:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":342,"name":"Identifier","src":"6340:1:31"}],"id":343,"name":"IndexAccess","src":"6314:28:31"}],"id":344,"name":"FunctionCall","src":"6294:49:31"}],"id":345,"name":"ExpressionStatement","src":"6294:49:31"}],"id":346,"name":"Block","src":"6161:197:31"}],"id":347,"name":"IfStatement","src":"6112:246:31"}],"id":348,"name":"Block","src":"6048:320:31"}],"id":349,"name":"ForStatement","src":"5985:383:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":116,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":350,"name":"Identifier","src":"6418:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":351,"name":"Identifier","src":"6435:3:31"}],"id":352,"name":"MemberAccess","src":"6435:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":353,"name":"Identifier","src":"6447:25:31"}],"id":354,"name":"FunctionCall","src":"6418:55:31"}],"id":355,"name":"EmitStatement","src":"6413:60:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":356,"name":"Identifier","src":"6526:25:31"}],"id":357,"name":"UnaryOperation","src":"6519:32:31"}],"id":358,"name":"ExpressionStatement","src":"6519:32:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":359,"name":"Identifier","src":"6599:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":360,"name":"Literal","src":"6628:5:31"}],"id":361,"name":"Assignment","src":"6599:34:31"}],"id":362,"name":"ExpressionStatement","src":"6599:34:31"}],"id":363,"name":"Block","src":"5596:1044:31"}],"id":364,"name":"FunctionDefinition","src":"5523:1117:31"},{"attributes":{"documentation":"@dev Confirm pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistRemoval","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":469,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":365,"name":"ElementaryTypeName","src":"6742:7:31"}],"id":366,"name":"VariableDeclaration","src":"6742:13:31"}],"id":367,"name":"ParameterList","src":"6741:15:31"},{"attributes":{"parameters":[null]},"children":[],"id":370,"name":"ParameterList","src":"6781:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":368,"name":"Identifier","src":"6766:14:31"}],"id":369,"name":"ModifierInvocation","src":"6766:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":371,"name":"Identifier","src":"6888:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":372,"name":"Identifier","src":"6896:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":373,"name":"Literal","src":"6923:23:31"}],"id":374,"name":"FunctionCall","src":"6888:59:31"}],"id":375,"name":"ExpressionStatement","src":"6888:59:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":376,"name":"Identifier","src":"7051:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"bytes32","value":"_hash"},"id":377,"name":"Identifier","src":"7059:5:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":378,"name":"Identifier","src":"7068:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":379,"name":"Identifier","src":"7082:24:31"}],"id":380,"name":"FunctionCall","src":"7068:39:31"}],"id":381,"name":"BinaryOperation","src":"7059:48:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":382,"name":"Literal","src":"7109:37:31"}],"id":383,"name":"FunctionCall","src":"7051:96:31"}],"id":384,"name":"ExpressionStatement","src":"7051:96:31"},{"children":[{"attributes":{"assignments":[386]},"children":[{"attributes":{"constant":false,"name":"i","scope":454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":385,"name":"ElementaryTypeName","src":"7199:7:31"}],"id":386,"name":"VariableDeclaration","src":"7199:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":387,"name":"Literal","src":"7211:1:31"}],"id":388,"name":"VariableDeclarationStatement","src":"7199:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":389,"name":"Identifier","src":"7214:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":390,"name":"Identifier","src":"7218:24:31"}],"id":391,"name":"MemberAccess","src":"7218:31:31"}],"id":392,"name":"BinaryOperation","src":"7214:35:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":393,"name":"Identifier","src":"7251:1:31"}],"id":394,"name":"UnaryOperation","src":"7251:3:31"}],"id":395,"name":"ExpressionStatement","src":"7251:3:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":396,"name":"Identifier","src":"7308:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":397,"name":"Identifier","src":"7321:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":398,"name":"Identifier","src":"7346:1:31"}],"id":399,"name":"IndexAccess","src":"7321:27:31"}],"id":400,"name":"IndexAccess","src":"7308:41:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":401,"name":"Identifier","src":"7369:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":402,"name":"Identifier","src":"7382:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":403,"name":"Identifier","src":"7407:1:31"}],"id":404,"name":"IndexAccess","src":"7382:27:31"}],"id":405,"name":"IndexAccess","src":"7369:41:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":406,"name":"Literal","src":"7413:5:31"}],"id":407,"name":"Assignment","src":"7369:49:31"}],"id":408,"name":"ExpressionStatement","src":"7369:49:31"},{"children":[{"attributes":{"assignments":[410]},"children":[{"attributes":{"constant":false,"name":"j","scope":445,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":409,"name":"ElementaryTypeName","src":"7441:7:31"}],"id":410,"name":"VariableDeclaration","src":"7441:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":411,"name":"Literal","src":"7453:1:31"}],"id":412,"name":"VariableDeclarationStatement","src":"7441:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":410,"type":"uint256","value":"j"},"id":413,"name":"Identifier","src":"7456:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":414,"name":"Identifier","src":"7460:14:31"}],"id":415,"name":"MemberAccess","src":"7460:21:31"}],"id":416,"name":"MemberAccess","src":"7460:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":417,"name":"Literal","src":"7486:1:31"}],"id":418,"name":"FunctionCall","src":"7460:28:31"}],"id":419,"name":"BinaryOperation","src":"7456:32:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":410,"type":"uint256","value":"j"},"id":420,"name":"Identifier","src":"7490:1:31"}],"id":421,"name":"UnaryOperation","src":"7490:3:31"}],"id":422,"name":"ExpressionStatement","src":"7490:3:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":423,"name":"Identifier","src":"7521:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":410,"type":"uint256","value":"j"},"id":424,"name":"Identifier","src":"7536:1:31"}],"id":425,"name":"IndexAccess","src":"7521:17:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":426,"name":"Identifier","src":"7542:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":427,"name":"Identifier","src":"7567:1:31"}],"id":428,"name":"IndexAccess","src":"7542:27:31"}],"id":429,"name":"BinaryOperation","src":"7521:48:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":430,"name":"Identifier","src":"7597:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":410,"type":"uint256","value":"j"},"id":431,"name":"Identifier","src":"7612:1:31"}],"id":432,"name":"IndexAccess","src":"7597:17:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":433,"name":"Identifier","src":"7617:14:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":434,"name":"Identifier","src":"7632:14:31"}],"id":435,"name":"MemberAccess","src":"7632:21:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":436,"name":"Literal","src":"7656:1:31"}],"id":437,"name":"BinaryOperation","src":"7632:25:31"}],"id":438,"name":"IndexAccess","src":"7617:41:31"}],"id":439,"name":"Assignment","src":"7597:61:31"}],"id":440,"name":"ExpressionStatement","src":"7597:61:31"},{"id":441,"name":"Break","src":"7684:5:31"}],"id":442,"name":"Block","src":"7571:141:31"}],"id":443,"name":"IfStatement","src":"7517:195:31"}],"id":444,"name":"Block","src":"7495:235:31"}],"id":445,"name":"ForStatement","src":"7436:294:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":446,"name":"Identifier","src":"7747:14:31"}],"id":448,"name":"MemberAccess","src":"7747:21:31"}],"id":449,"name":"UnaryOperation","src":"7747:23:31"}],"id":450,"name":"ExpressionStatement","src":"7747:23:31"}],"id":451,"name":"Block","src":"7351:434:31"}],"id":452,"name":"IfStatement","src":"7304:481:31"}],"id":453,"name":"Block","src":"7256:539:31"}],"id":454,"name":"ForStatement","src":"7194:601:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":142,"type":"function (address,address[] memory)","value":"RemovedFromWhitelist"},"id":455,"name":"Identifier","src":"7844:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":456,"name":"Identifier","src":"7865:3:31"}],"id":457,"name":"MemberAccess","src":"7865:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":458,"name":"Identifier","src":"7877:24:31"}],"id":459,"name":"FunctionCall","src":"7844:58:31"}],"id":460,"name":"EmitStatement","src":"7839:63:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":461,"name":"Identifier","src":"7955:24:31"}],"id":462,"name":"UnaryOperation","src":"7948:31:31"}],"id":463,"name":"ExpressionStatement","src":"7948:31:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":464,"name":"Identifier","src":"8027:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":465,"name":"Literal","src":"8055:5:31"}],"id":466,"name":"Assignment","src":"8027:33:31"}],"id":467,"name":"ExpressionStatement","src":"8027:33:31"}],"id":468,"name":"Block","src":"6781:1286:31"}],"id":469,"name":"FunctionDefinition","src":"6709:1358:31"},{"attributes":{"documentation":"@dev Getter for pending addition array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistAddition","scope":650,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":470,"name":"ParameterList","src":"8154:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":478,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":471,"name":"ElementaryTypeName","src":"8180:7:31"}],"id":472,"name":"ArrayTypeName","src":"8180:9:31"}],"id":473,"name":"VariableDeclaration","src":"8180:16:31"}],"id":474,"name":"ParameterList","src":"8179:18:31"},{"children":[{"attributes":{"functionReturnParameters":474},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":475,"name":"Identifier","src":"8215:25:31"}],"id":476,"name":"Return","src":"8208:32:31"}],"id":477,"name":"Block","src":"8198:49:31"}],"id":478,"name":"FunctionDefinition","src":"8121:126:31"},{"attributes":{"documentation":"@dev Getter for pending removal array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistRemoval","scope":650,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":479,"name":"ParameterList","src":"8332:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":487,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":480,"name":"ElementaryTypeName","src":"8358:7:31"}],"id":481,"name":"ArrayTypeName","src":"8358:9:31"}],"id":482,"name":"VariableDeclaration","src":"8358:16:31"}],"id":483,"name":"ParameterList","src":"8357:18:31"},{"children":[{"attributes":{"functionReturnParameters":483},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":484,"name":"Identifier","src":"8393:24:31"}],"id":485,"name":"Return","src":"8386:31:31"}],"id":486,"name":"Block","src":"8376:48:31"}],"id":487,"name":"FunctionDefinition","src":"8300:124:31"},{"attributes":{"documentation":"@dev Add initial addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"setWhitelist","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":552,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":488,"name":"ElementaryTypeName","src":"8577:7:31"}],"id":489,"name":"ArrayTypeName","src":"8577:9:31"}],"id":490,"name":"VariableDeclaration","src":"8577:29:31"}],"id":491,"name":"ParameterList","src":"8576:31:31"},{"attributes":{"parameters":[null]},"children":[],"id":497,"name":"ParameterList","src":"8669:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":492,"name":"Identifier","src":"8617:15:31"}],"id":493,"name":"ModifierInvocation","src":"8617:15:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":494,"name":"Identifier","src":"8633:23:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":495,"name":"Identifier","src":"8657:10:31"}],"id":496,"name":"ModifierInvocation","src":"8633:35:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_072b1c10273a06de91a80d81d357e8bd73084529b5cc99d2ec03a7bf6d5fb2b9","typeString":"literal_string \"whitelist initialized\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":498,"name":"Identifier","src":"8743:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":168,"type":"bool","value":"isSetWhitelist"},"id":499,"name":"Identifier","src":"8752:14:31"}],"id":500,"name":"UnaryOperation","src":"8751:15:31"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c69737420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist initialized\"","value":"whitelist initialized"},"id":501,"name":"Literal","src":"8768:23:31"}],"id":502,"name":"FunctionCall","src":"8743:49:31"}],"id":503,"name":"ExpressionStatement","src":"8743:49:31"},{"children":[{"attributes":{"assignments":[505]},"children":[{"attributes":{"constant":false,"name":"i","scope":540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":504,"name":"ElementaryTypeName","src":"8871:7:31"}],"id":505,"name":"VariableDeclaration","src":"8871:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":506,"name":"Literal","src":"8883:1:31"}],"id":507,"name":"VariableDeclarationStatement","src":"8871:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":508,"name":"Identifier","src":"8886:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":509,"name":"Identifier","src":"8890:10:31"}],"id":510,"name":"MemberAccess","src":"8890:17:31"}],"id":511,"name":"BinaryOperation","src":"8886:21:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":512,"name":"Identifier","src":"8909:1:31"}],"id":513,"name":"UnaryOperation","src":"8909:3:31"}],"id":514,"name":"ExpressionStatement","src":"8909:3:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":515,"name":"Identifier","src":"8996:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":516,"name":"Identifier","src":"9009:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":517,"name":"Identifier","src":"9020:1:31"}],"id":518,"name":"IndexAccess","src":"9009:13:31"}],"id":519,"name":"IndexAccess","src":"8996:27:31"}],"id":520,"name":"UnaryOperation","src":"8995:28:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":521,"name":"Identifier","src":"9092:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":522,"name":"Identifier","src":"9105:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":523,"name":"Identifier","src":"9116:1:31"}],"id":524,"name":"IndexAccess","src":"9105:13:31"}],"id":525,"name":"IndexAccess","src":"9092:27:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":526,"name":"Literal","src":"9122:4:31"}],"id":527,"name":"Assignment","src":"9092:34:31"}],"id":528,"name":"ExpressionStatement","src":"9092:34:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":529,"name":"Identifier","src":"9191:14:31"}],"id":531,"name":"MemberAccess","src":"9191:19:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":532,"name":"Identifier","src":"9211:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":533,"name":"Identifier","src":"9222:1:31"}],"id":534,"name":"IndexAccess","src":"9211:13:31"}],"id":535,"name":"FunctionCall","src":"9191:34:31"}],"id":536,"name":"ExpressionStatement","src":"9191:34:31"}],"id":537,"name":"Block","src":"9025:215:31"}],"id":538,"name":"IfStatement","src":"8991:249:31"}],"id":539,"name":"Block","src":"8914:336:31"}],"id":540,"name":"ForStatement","src":"8866:384:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":168,"type":"bool","value":"isSetWhitelist"},"id":541,"name":"Identifier","src":"9259:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":542,"name":"Literal","src":"9276:4:31"}],"id":543,"name":"Assignment","src":"9259:21:31"}],"id":544,"name":"ExpressionStatement","src":"9259:21:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":116,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":545,"name":"Identifier","src":"9331:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":546,"name":"Identifier","src":"9348:3:31"}],"id":547,"name":"MemberAccess","src":"9348:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":548,"name":"Identifier","src":"9360:14:31"}],"id":549,"name":"FunctionCall","src":"9331:44:31"}],"id":550,"name":"EmitStatement","src":"9326:49:31"}],"id":551,"name":"Block","src":"8669:713:31"}],"id":552,"name":"FunctionDefinition","src":"8555:827:31"},{"attributes":{"documentation":"@dev Add addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistAddition","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":594,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":553,"name":"ElementaryTypeName","src":"9538:7:31"}],"id":554,"name":"ArrayTypeName","src":"9538:9:31"}],"id":555,"name":"VariableDeclaration","src":"9538:29:31"}],"id":556,"name":"ParameterList","src":"9537:31:31"},{"attributes":{"parameters":[null]},"children":[],"id":564,"name":"ParameterList","src":"9649:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":557,"name":"Identifier","src":"9578:15:31"}],"id":558,"name":"ModifierInvocation","src":"9578:15:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":222,"type":"modifier ()","value":"noActiveSubmission"},"id":559,"name":"Identifier","src":"9594:18:31"}],"id":560,"name":"ModifierInvocation","src":"9594:18:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":561,"name":"Identifier","src":"9613:23:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":562,"name":"Identifier","src":"9637:10:31"}],"id":563,"name":"ModifierInvocation","src":"9613:35:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":565,"name":"Identifier","src":"9719:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":168,"type":"bool","value":"isSetWhitelist"},"id":566,"name":"Identifier","src":"9727:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":567,"name":"Literal","src":"9743:27:31"}],"id":568,"name":"FunctionCall","src":"9719:52:31"}],"id":569,"name":"ExpressionStatement","src":"9719:52:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":570,"name":"Identifier","src":"9834:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":571,"name":"Identifier","src":"9842:10:31"}],"id":572,"name":"MemberAccess","src":"9842:17:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":573,"name":"Literal","src":"9862:1:31"}],"id":574,"name":"BinaryOperation","src":"9842:21:31"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":575,"name":"Literal","src":"9865:17:31"}],"id":576,"name":"FunctionCall","src":"9834:49:31"}],"id":577,"name":"ExpressionStatement","src":"9834:49:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":578,"name":"Identifier","src":"9966:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":579,"name":"Identifier","src":"9994:10:31"}],"id":580,"name":"Assignment","src":"9966:38:31"}],"id":581,"name":"ExpressionStatement","src":"9966:38:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":582,"name":"Identifier","src":"10058:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":583,"name":"Literal","src":"10087:4:31"}],"id":584,"name":"Assignment","src":"10058:33:31"}],"id":585,"name":"ExpressionStatement","src":"10058:33:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":129,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistAddition"},"id":586,"name":"Identifier","src":"10144:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":587,"name":"Identifier","src":"10171:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":588,"name":"Identifier","src":"10183:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":589,"name":"Identifier","src":"10197:10:31"}],"id":590,"name":"FunctionCall","src":"10183:25:31"}],"id":591,"name":"FunctionCall","src":"10144:65:31"}],"id":592,"name":"EmitStatement","src":"10139:70:31"}],"id":593,"name":"Block","src":"9649:567:31"}],"id":594,"name":"FunctionDefinition","src":"9505:711:31"},{"attributes":{"documentation":"@dev Remove addresses from the whitelist.\n @param _addresses are the Ethereum addresses to be removed.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistRemoval","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":633,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":595,"name":"ElementaryTypeName","src":"10372:7:31"}],"id":596,"name":"ArrayTypeName","src":"10372:9:31"}],"id":597,"name":"VariableDeclaration","src":"10372:29:31"}],"id":598,"name":"ParameterList","src":"10371:31:31"},{"attributes":{"parameters":[null]},"children":[],"id":603,"name":"ParameterList","src":"10447:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":599,"name":"Identifier","src":"10412:15:31"}],"id":600,"name":"ModifierInvocation","src":"10412:15:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":222,"type":"modifier ()","value":"noActiveSubmission"},"id":601,"name":"Identifier","src":"10428:18:31"}],"id":602,"name":"ModifierInvocation","src":"10428:18:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":604,"name":"Identifier","src":"10517:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":168,"type":"bool","value":"isSetWhitelist"},"id":605,"name":"Identifier","src":"10525:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":606,"name":"Literal","src":"10541:27:31"}],"id":607,"name":"FunctionCall","src":"10517:52:31"}],"id":608,"name":"ExpressionStatement","src":"10517:52:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":609,"name":"Identifier","src":"10639:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":597,"type":"address[] calldata","value":"_addresses"},"id":610,"name":"Identifier","src":"10647:10:31"}],"id":611,"name":"MemberAccess","src":"10647:17:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":612,"name":"Literal","src":"10667:1:31"}],"id":613,"name":"BinaryOperation","src":"10647:21:31"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":614,"name":"Literal","src":"10670:17:31"}],"id":615,"name":"FunctionCall","src":"10639:49:31"}],"id":616,"name":"ExpressionStatement","src":"10639:49:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":617,"name":"Identifier","src":"10766:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":597,"type":"address[] calldata","value":"_addresses"},"id":618,"name":"Identifier","src":"10793:10:31"}],"id":619,"name":"Assignment","src":"10766:37:31"}],"id":620,"name":"ExpressionStatement","src":"10766:37:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":621,"name":"Identifier","src":"10857:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":622,"name":"Literal","src":"10885:4:31"}],"id":623,"name":"Assignment","src":"10857:32:31"}],"id":624,"name":"ExpressionStatement","src":"10857:32:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":149,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistRemoval"},"id":625,"name":"Identifier","src":"10942:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":597,"type":"address[] calldata","value":"_addresses"},"id":626,"name":"Identifier","src":"10968:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":627,"name":"Identifier","src":"10980:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":597,"type":"address[] calldata","value":"_addresses"},"id":628,"name":"Identifier","src":"10994:10:31"}],"id":629,"name":"FunctionCall","src":"10980:25:31"}],"id":630,"name":"FunctionCall","src":"10942:64:31"}],"id":631,"name":"EmitStatement","src":"10937:69:31"}],"id":632,"name":"Block","src":"10447:566:31"}],"id":633,"name":"FunctionDefinition","src":"10340:673:31"},{"attributes":{"documentation":"@dev Method used to hash our whitelist address arrays.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"calculateHash","scope":650,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":649,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":634,"name":"ElementaryTypeName","src":"11105:7:31"}],"id":635,"name":"ArrayTypeName","src":"11105:9:31"}],"id":636,"name":"VariableDeclaration","src":"11105:27:31"}],"id":637,"name":"ParameterList","src":"11104:29:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":649,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":638,"name":"ElementaryTypeName","src":"11155:7:31"}],"id":639,"name":"VariableDeclaration","src":"11155:7:31"}],"id":640,"name":"ParameterList","src":"11154:9:31"},{"children":[{"attributes":{"functionReturnParameters":640},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":641,"name":"Identifier","src":"11181:9:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":642,"name":"Identifier","src":"11191:3:31"}],"id":643,"name":"MemberAccess","src":"11191:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":636,"type":"address[] memory","value":"_addresses"},"id":644,"name":"Identifier","src":"11208:10:31"}],"id":645,"name":"FunctionCall","src":"11191:28:31"}],"id":646,"name":"FunctionCall","src":"11181:39:31"}],"id":647,"name":"Return","src":"11174:46:31"}],"id":648,"name":"Block","src":"11164:63:31"}],"id":649,"name":"FunctionDefinition","src":"11082:145:31"}],"id":650,"name":"ContractDefinition","src":"2361:8868:31"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title DailyLimitTrait This trait allows for daily limits to be included in other contracts.\n This contract will allow for a DailyLimit object to be instantiated and used.","fullyImplemented":true,"linearizedBaseContracts":[852],"name":"DailyLimitTrait","scope":2228},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":651,"name":"UserDefinedTypeName","src":"11447:8:31"},{"attributes":{"name":"uint256","type":"uint256"},"id":652,"name":"ElementaryTypeName","src":"11460:7:31"}],"id":653,"name":"UsingForDirective","src":"11441:27:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":654,"name":"ParameterList","src":"11501:2:31"}],"id":655,"name":"EventDefinition","src":"11474:30:31"},{"attributes":{"canonicalName":"DailyLimitTrait.DailyLimit","name":"DailyLimit","scope":852,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"value","scope":666,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":656,"name":"ElementaryTypeName","src":"11538:7:31"}],"id":657,"name":"VariableDeclaration","src":"11538:13:31"},{"attributes":{"constant":false,"name":"available","scope":666,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":658,"name":"ElementaryTypeName","src":"11561:7:31"}],"id":659,"name":"VariableDeclaration","src":"11561:17:31"},{"attributes":{"constant":false,"name":"limitTimestamp","scope":666,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":660,"name":"ElementaryTypeName","src":"11588:7:31"}],"id":661,"name":"VariableDeclaration","src":"11588:22:31"},{"attributes":{"constant":false,"name":"pending","scope":666,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":662,"name":"ElementaryTypeName","src":"11620:7:31"}],"id":663,"name":"VariableDeclaration","src":"11620:15:31"},{"attributes":{"constant":false,"name":"controllerConfirmationRequired","scope":666,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":664,"name":"ElementaryTypeName","src":"11645:4:31"}],"id":665,"name":"VariableDeclaration","src":"11645:35:31"}],"id":666,"name":"StructDefinition","src":"11510:177:31"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_confirmLimitUpdate","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":688,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":667,"name":"UserDefinedTypeName","src":"11778:10:31"}],"id":668,"name":"VariableDeclaration","src":"11778:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":688,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":669,"name":"ElementaryTypeName","src":"11803:7:31"}],"id":670,"name":"VariableDeclaration","src":"11803:15:31"}],"id":671,"name":"ParameterList","src":"11777:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":672,"name":"ParameterList","src":"11829:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51a99e4fe0e7ccb76d7b5ddb649e7516f5e27e1195b905cd87f22fbc56fc219b","typeString":"literal_string \"confirmed/submitted limit mismatch\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":673,"name":"Identifier","src":"11910:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":674,"name":"Identifier","src":"11918:4:31"}],"id":675,"name":"MemberAccess","src":"11918:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":670,"type":"uint256","value":"_amount"},"id":676,"name":"Identifier","src":"11934:7:31"}],"id":677,"name":"BinaryOperation","src":"11918:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"confirmed/submitted limit mismatch\"","value":"confirmed/submitted limit mismatch"},"id":678,"name":"Literal","src":"11943:36:31"}],"id":679,"name":"FunctionCall","src":"11910:70:31"}],"id":680,"name":"ExpressionStatement","src":"11910:70:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$666_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":681,"name":"Identifier","src":"12048:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":682,"name":"Identifier","src":"12061:4:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":683,"name":"Identifier","src":"12067:4:31"}],"id":684,"name":"MemberAccess","src":"12067:12:31"}],"id":685,"name":"FunctionCall","src":"12048:32:31"}],"id":686,"name":"ExpressionStatement","src":"12048:32:31"}],"id":687,"name":"Block","src":"11829:258:31"}],"id":688,"name":"FunctionDefinition","src":"11749:338:31"},{"attributes":{"documentation":"@dev Use up amount within the daily limit. Will fail if amount is larger than daily limit.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_enforceLimit","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":718,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":689,"name":"UserDefinedTypeName","src":"12215:10:31"}],"id":690,"name":"VariableDeclaration","src":"12215:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":718,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":691,"name":"ElementaryTypeName","src":"12240:7:31"}],"id":692,"name":"VariableDeclaration","src":"12240:15:31"}],"id":693,"name":"ParameterList","src":"12214:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":694,"name":"ParameterList","src":"12266:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$666_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":851,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":695,"name":"Identifier","src":"12328:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":696,"name":"Identifier","src":"12350:4:31"}],"id":697,"name":"FunctionCall","src":"12328:27:31"}],"id":698,"name":"ExpressionStatement","src":"12328:27:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76fdd6ba40b4885ab45b8708dbc1ff56b4ee0a701903e21ff02ec4fc90e97cfd","typeString":"literal_string \"available=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":700,"name":"Identifier","src":"12373:4:31"}],"id":701,"name":"MemberAccess","src":"12373:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"_amount"},"id":702,"name":"Identifier","src":"12391:7:31"}],"id":703,"name":"BinaryOperation","src":"12373:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"617661696c61626c653c616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"available","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":725,"name":"Identifier","src":"12751:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":661,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":720,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":726,"name":"Identifier","src":"12757:4:31"}],"id":727,"name":"MemberAccess","src":"12757:19:31"}],"id":728,"name":"MemberAccess","src":"12757:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":729,"name":"Literal","src":"12781:8:31"}],"id":730,"name":"FunctionCall","src":"12757:33:31"}],"id":731,"name":"BinaryOperation","src":"12751:39:31"},{"children":[{"attributes":{"functionReturnParameters":724},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":720,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":732,"name":"Identifier","src":"12813:4:31"}],"id":733,"name":"MemberAccess","src":"12813:10:31"}],"id":734,"name":"Return","src":"12806:17:31"}],"id":735,"name":"Block","src":"12792:42:31"},{"children":[{"attributes":{"functionReturnParameters":724},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":720,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":736,"name":"Identifier","src":"12861:4:31"}],"id":737,"name":"MemberAccess","src":"12861:14:31"}],"id":738,"name":"Return","src":"12854:21:31"}],"id":739,"name":"Block","src":"12840:46:31"}],"id":740,"name":"IfStatement","src":"12747:139:31"}],"id":741,"name":"Block","src":"12737:155:31"}],"id":742,"name":"FunctionDefinition","src":"12652:240:31"},{"attributes":{"documentation":"@dev Modify the spend limit and spend available based on the provided value.\n @dev _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_modifyLimit","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":774,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":743,"name":"UserDefinedTypeName","src":"13060:10:31"}],"id":744,"name":"VariableDeclaration","src":"13060:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":774,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":745,"name":"ElementaryTypeName","src":"13085:7:31"}],"id":746,"name":"VariableDeclaration","src":"13085:15:31"}],"id":747,"name":"ParameterList","src":"13059:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":748,"name":"ParameterList","src":"13110:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$666_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":851,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":749,"name":"Identifier","src":"13172:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":750,"name":"Identifier","src":"13194:4:31"}],"id":751,"name":"FunctionCall","src":"13172:27:31"}],"id":752,"name":"ExpressionStatement","src":"13172:27:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":753,"name":"Identifier","src":"13264:4:31"}],"id":755,"name":"MemberAccess","src":"13264:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":746,"type":"uint256","value":"_amount"},"id":756,"name":"Identifier","src":"13277:7:31"}],"id":757,"name":"Assignment","src":"13264:20:31"}],"id":758,"name":"ExpressionStatement","src":"13264:20:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":759,"name":"Identifier","src":"13376:4:31"}],"id":760,"name":"MemberAccess","src":"13376:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":761,"name":"Identifier","src":"13393:4:31"}],"id":762,"name":"MemberAccess","src":"13393:10:31"}],"id":763,"name":"BinaryOperation","src":"13376:27:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":764,"name":"Identifier","src":"13419:4:31"}],"id":766,"name":"MemberAccess","src":"13419:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":767,"name":"Identifier","src":"13436:4:31"}],"id":768,"name":"MemberAccess","src":"13436:10:31"}],"id":769,"name":"Assignment","src":"13419:27:31"}],"id":770,"name":"ExpressionStatement","src":"13419:27:31"}],"id":771,"name":"Block","src":"13405:52:31"}],"id":772,"name":"IfStatement","src":"13372:85:31"}],"id":773,"name":"Block","src":"13110:353:31"}],"id":774,"name":"FunctionDefinition","src":"13038:425:31"},{"attributes":{"documentation":"@dev Set the daily limit.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_setLimit","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":800,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":775,"name":"UserDefinedTypeName","src":"13586:10:31"}],"id":776,"name":"VariableDeclaration","src":"13586:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":777,"name":"ElementaryTypeName","src":"13611:7:31"}],"id":778,"name":"VariableDeclaration","src":"13611:15:31"}],"id":779,"name":"ParameterList","src":"13585:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":780,"name":"ParameterList","src":"13637:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5515161ef75a198a2c79d5b0927b7d4cad620073ea22f64fc9faac79dbcba501","typeString":"literal_string \"limit already set\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":781,"name":"Identifier","src":"13709:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":776,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":782,"name":"Identifier","src":"13718:4:31"}],"id":783,"name":"MemberAccess","src":"13718:35:31"}],"id":784,"name":"UnaryOperation","src":"13717:36:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d697420616c726561647920736574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit already set\"","value":"limit already set"},"id":785,"name":"Literal","src":"13755:19:31"}],"id":786,"name":"FunctionCall","src":"13709:66:31"}],"id":787,"name":"ExpressionStatement","src":"13709:66:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$666_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":788,"name":"Identifier","src":"13844:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":776,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":789,"name":"Identifier","src":"13857:4:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"uint256","value":"_amount"},"id":790,"name":"Identifier","src":"13863:7:31"}],"id":791,"name":"FunctionCall","src":"13844:27:31"}],"id":792,"name":"ExpressionStatement","src":"13844:27:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":776,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":793,"name":"Identifier","src":"13919:4:31"}],"id":795,"name":"MemberAccess","src":"13919:35:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":796,"name":"Literal","src":"13957:4:31"}],"id":797,"name":"Assignment","src":"13919:42:31"}],"id":798,"name":"ExpressionStatement","src":"13919:42:31"}],"id":799,"name":"Block","src":"13637:331:31"}],"id":800,"name":"FunctionDefinition","src":"13567:401:31"},{"attributes":{"documentation":"@dev Submit a daily limit update, needs to be confirmed.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_submitLimitUpdate","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":820,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":801,"name":"UserDefinedTypeName","src":"14131:10:31"}],"id":802,"name":"VariableDeclaration","src":"14131:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":820,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":803,"name":"ElementaryTypeName","src":"14156:7:31"}],"id":804,"name":"VariableDeclaration","src":"14156:15:31"}],"id":805,"name":"ParameterList","src":"14130:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":806,"name":"ParameterList","src":"14182:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d667d750d47924f17f0479d6107ac25f4e8879366a2d600f6b5ea07705c561f3","typeString":"literal_string \"limit hasn't been set yet\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":807,"name":"Identifier","src":"14246:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":802,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":808,"name":"Identifier","src":"14254:4:31"}],"id":809,"name":"MemberAccess","src":"14254:35:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d6974206861736e2774206265656e2073657420796574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit hasn't been set yet\"","value":"limit hasn't been set yet"},"id":810,"name":"Literal","src":"14291:27:31"}],"id":811,"name":"FunctionCall","src":"14246:73:31"}],"id":812,"name":"ExpressionStatement","src":"14246:73:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":802,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":813,"name":"Identifier","src":"14391:4:31"}],"id":815,"name":"MemberAccess","src":"14391:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":804,"type":"uint256","value":"_amount"},"id":816,"name":"Identifier","src":"14406:7:31"}],"id":817,"name":"Assignment","src":"14391:22:31"}],"id":818,"name":"ExpressionStatement","src":"14391:22:31"}],"id":819,"name":"Block","src":"14182:238:31"}],"id":820,"name":"FunctionDefinition","src":"14103:317:31"},{"attributes":{"documentation":"@dev Update available spend limit based on the daily reset.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateAvailableLimit","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":851,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":821,"name":"UserDefinedTypeName","src":"14525:10:31"}],"id":822,"name":"VariableDeclaration","src":"14525:23:31"}],"id":823,"name":"ParameterList","src":"14524:25:31"},{"attributes":{"parameters":[null]},"children":[],"id":824,"name":"ParameterList","src":"14558:0:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":825,"name":"Identifier","src":"14572:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":661,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":826,"name":"Identifier","src":"14578:4:31"}],"id":827,"name":"MemberAccess","src":"14578:19:31"}],"id":828,"name":"MemberAccess","src":"14578:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":829,"name":"Literal","src":"14602:8:31"}],"id":830,"name":"FunctionCall","src":"14578:33:31"}],"id":831,"name":"BinaryOperation","src":"14572:39:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"limitTimestamp","referencedDeclaration":661,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":832,"name":"Identifier","src":"14672:4:31"}],"id":834,"name":"MemberAccess","src":"14672:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":835,"name":"Identifier","src":"14694:3:31"}],"id":836,"name":"Assignment","src":"14672:25:31"}],"id":837,"name":"ExpressionStatement","src":"14672:25:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":838,"name":"Identifier","src":"14778:4:31"}],"id":840,"name":"MemberAccess","src":"14778:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":841,"name":"Identifier","src":"14795:4:31"}],"id":842,"name":"MemberAccess","src":"14795:10:31"}],"id":843,"name":"Assignment","src":"14778:27:31"}],"id":844,"name":"ExpressionStatement","src":"14778:27:31"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":655,"type":"function ()","value":"UpdatedAvailableLimit"},"id":845,"name":"Identifier","src":"14824:21:31"}],"id":846,"name":"FunctionCall","src":"14824:23:31"}],"id":847,"name":"EmitStatement","src":"14819:28:31"}],"id":848,"name":"Block","src":"14613:245:31"}],"id":849,"name":"IfStatement","src":"14568:290:31"}],"id":850,"name":"Block","src":"14558:306:31"}],"id":851,"name":"FunctionDefinition","src":"14494:370:31"}],"id":852,"name":"ContractDefinition","src":"11411:3455:31"},{"attributes":{"contractDependencies":[80,102,2870,2915,3072],"contractKind":"contract","documentation":"@title it provides daily spend limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[984,102,80,3072,2870,2915],"name":"SpendLimit","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":80,"type":"contract ControllableOwnable"},"id":853,"name":"UserDefinedTypeName","src":"14949:19:31"}],"id":854,"name":"InheritanceSpecifier","src":"14949:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":102,"type":"contract SelfCallableOwnable"},"id":855,"name":"UserDefinedTypeName","src":"14970:19:31"}],"id":856,"name":"InheritanceSpecifier","src":"14970:19:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetSpendLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":862,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":857,"name":"ElementaryTypeName","src":"15016:7:31"}],"id":858,"name":"VariableDeclaration","src":"15016:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":862,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":859,"name":"ElementaryTypeName","src":"15033:7:31"}],"id":860,"name":"VariableDeclaration","src":"15033:15:31"}],"id":861,"name":"ParameterList","src":"15015:34:31"}],"id":862,"name":"EventDefinition","src":"14996:54:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedSpendLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":866,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":863,"name":"ElementaryTypeName","src":"15087:7:31"}],"id":864,"name":"VariableDeclaration","src":"15087:15:31"}],"id":865,"name":"ParameterList","src":"15086:17:31"}],"id":866,"name":"EventDefinition","src":"15055:49:31"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":852,"type":"library DailyLimitTrait"},"id":867,"name":"UserDefinedTypeName","src":"15116:15:31"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":868,"name":"UserDefinedTypeName","src":"15136:26:31"}],"id":869,"name":"UsingForDirective","src":"15110:53:31"},{"attributes":{"constant":false,"name":"_spendLimit","scope":984,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":870,"name":"UserDefinedTypeName","src":"15169:26:31"}],"id":871,"name":"VariableDeclaration","src":"15169:47:31"},{"attributes":{"documentation":"@dev Constructor initializes the daily spend limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":984,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_limit_","scope":888,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":872,"name":"ElementaryTypeName","src":"15302:7:31"}],"id":873,"name":"VariableDeclaration","src":"15302:15:31"}],"id":874,"name":"ParameterList","src":"15301:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":875,"name":"ParameterList","src":"15328:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":876,"name":"Identifier","src":"15338:11:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":666,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":877,"name":"Identifier","src":"15352:15:31"}],"id":878,"name":"MemberAccess","src":"15352:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":873,"type":"uint256","value":"_limit_"},"id":879,"name":"Identifier","src":"15379:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":873,"type":"uint256","value":"_limit_"},"id":880,"name":"Identifier","src":"15388:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":881,"name":"Identifier","src":"15397:3:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":882,"name":"Literal","src":"15402:1:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":883,"name":"Literal","src":"15405:5:31"}],"id":884,"name":"FunctionCall","src":"15352:59:31"}],"id":885,"name":"Assignment","src":"15338:73:31"}],"id":886,"name":"ExpressionStatement","src":"15338:73:31"}],"id":887,"name":"Block","src":"15328:90:31"}],"id":888,"name":"FunctionDefinition","src":"15290:128:31"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmSpendLimitUpdate","scope":984,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":908,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":889,"name":"ElementaryTypeName","src":"15513:7:31"}],"id":890,"name":"VariableDeclaration","src":"15513:15:31"}],"id":891,"name":"ParameterList","src":"15512:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":894,"name":"ParameterList","src":"15554:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":892,"name":"Identifier","src":"15539:14:31"}],"id":893,"name":"ModifierInvocation","src":"15539:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":688,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":895,"name":"Identifier","src":"15564:11:31"}],"id":897,"name":"MemberAccess","src":"15564:31:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":890,"type":"uint256","value":"_amount"},"id":898,"name":"Identifier","src":"15596:7:31"}],"id":899,"name":"FunctionCall","src":"15564:40:31"}],"id":900,"name":"ExpressionStatement","src":"15564:40:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":862,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":901,"name":"Identifier","src":"15619:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":902,"name":"Identifier","src":"15633:3:31"}],"id":903,"name":"MemberAccess","src":"15633:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":890,"type":"uint256","value":"_amount"},"id":904,"name":"Identifier","src":"15645:7:31"}],"id":905,"name":"FunctionCall","src":"15619:34:31"}],"id":906,"name":"EmitStatement","src":"15614:39:31"}],"id":907,"name":"Block","src":"15554:106:31"}],"id":908,"name":"FunctionDefinition","src":"15480:180:31"},{"attributes":{"documentation":"@dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setSpendLimit","scope":984,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":928,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":909,"name":"ElementaryTypeName","src":"15840:7:31"}],"id":910,"name":"VariableDeclaration","src":"15840:15:31"}],"id":911,"name":"ParameterList","src":"15839:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":914,"name":"ParameterList","src":"15882:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":912,"name":"Identifier","src":"15866:15:31"}],"id":913,"name":"ModifierInvocation","src":"15866:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":800,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":915,"name":"Identifier","src":"15892:11:31"}],"id":917,"name":"MemberAccess","src":"15892:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":910,"type":"uint256","value":"_amount"},"id":918,"name":"Identifier","src":"15914:7:31"}],"id":919,"name":"FunctionCall","src":"15892:30:31"}],"id":920,"name":"ExpressionStatement","src":"15892:30:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":862,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":921,"name":"Identifier","src":"15937:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":922,"name":"Identifier","src":"15951:3:31"}],"id":923,"name":"MemberAccess","src":"15951:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":910,"type":"uint256","value":"_amount"},"id":924,"name":"Identifier","src":"15963:7:31"}],"id":925,"name":"FunctionCall","src":"15937:34:31"}],"id":926,"name":"EmitStatement","src":"15932:39:31"}],"id":927,"name":"Block","src":"15882:96:31"}],"id":928,"name":"FunctionDefinition","src":"15817:161:31"},{"attributes":{"documentation":"@dev View your available limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitAvailable","scope":984,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":929,"name":"ParameterList","src":"16051:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":930,"name":"ElementaryTypeName","src":"16077:7:31"}],"id":931,"name":"VariableDeclaration","src":"16077:7:31"}],"id":932,"name":"ParameterList","src":"16076:9:31"},{"children":[{"attributes":{"functionReturnParameters":932},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":742,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":933,"name":"Identifier","src":"16103:11:31"}],"id":934,"name":"MemberAccess","src":"16103:30:31"}],"id":935,"name":"FunctionCall","src":"16103:32:31"}],"id":936,"name":"Return","src":"16096:39:31"}],"id":937,"name":"Block","src":"16086:56:31"}],"id":938,"name":"FunctionDefinition","src":"16023:119:31"},{"attributes":{"documentation":"@dev Is there an active spend limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitPending","scope":984,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":939,"name":"ParameterList","src":"16225:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":940,"name":"ElementaryTypeName","src":"16251:7:31"}],"id":941,"name":"VariableDeclaration","src":"16251:7:31"}],"id":942,"name":"ParameterList","src":"16250:9:31"},{"children":[{"attributes":{"functionReturnParameters":942},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":943,"name":"Identifier","src":"16277:11:31"}],"id":944,"name":"MemberAccess","src":"16277:19:31"}],"id":945,"name":"Return","src":"16270:26:31"}],"id":946,"name":"Block","src":"16260:43:31"}],"id":947,"name":"FunctionDefinition","src":"16199:104:31"},{"attributes":{"documentation":"@dev Has the spend limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitControllerConfirmationRequired","scope":984,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":948,"name":"ParameterList","src":"16408:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":956,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":949,"name":"ElementaryTypeName","src":"16434:4:31"}],"id":950,"name":"VariableDeclaration","src":"16434:4:31"}],"id":951,"name":"ParameterList","src":"16433:6:31"},{"children":[{"attributes":{"functionReturnParameters":951},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":952,"name":"Identifier","src":"16457:11:31"}],"id":953,"name":"MemberAccess","src":"16457:42:31"}],"id":954,"name":"Return","src":"16450:49:31"}],"id":955,"name":"Block","src":"16440:66:31"}],"id":956,"name":"FunctionDefinition","src":"16359:147:31"},{"attributes":{"documentation":"@dev View how much has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitValue","scope":984,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":957,"name":"ParameterList","src":"16586:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":958,"name":"ElementaryTypeName","src":"16612:7:31"}],"id":959,"name":"VariableDeclaration","src":"16612:7:31"}],"id":960,"name":"ParameterList","src":"16611:9:31"},{"children":[{"attributes":{"functionReturnParameters":960},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":961,"name":"Identifier","src":"16638:11:31"}],"id":962,"name":"MemberAccess","src":"16638:17:31"}],"id":963,"name":"Return","src":"16631:24:31"}],"id":964,"name":"Block","src":"16621:41:31"}],"id":965,"name":"FunctionDefinition","src":"16562:100:31"},{"attributes":{"documentation":"@dev Submit a daily transfer limit update for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitSpendLimitUpdate","scope":984,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":983,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":966,"name":"ElementaryTypeName","src":"16838:7:31"}],"id":967,"name":"VariableDeclaration","src":"16838:15:31"}],"id":968,"name":"ParameterList","src":"16837:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":971,"name":"ParameterList","src":"16880:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":969,"name":"Identifier","src":"16864:15:31"}],"id":970,"name":"ModifierInvocation","src":"16864:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":820,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":972,"name":"Identifier","src":"16890:11:31"}],"id":974,"name":"MemberAccess","src":"16890:30:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":967,"type":"uint256","value":"_amount"},"id":975,"name":"Identifier","src":"16921:7:31"}],"id":976,"name":"FunctionCall","src":"16890:39:31"}],"id":977,"name":"ExpressionStatement","src":"16890:39:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":866,"type":"function (uint256)","value":"SubmittedSpendLimitUpdate"},"id":978,"name":"Identifier","src":"16944:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":967,"type":"uint256","value":"_amount"},"id":979,"name":"Identifier","src":"16970:7:31"}],"id":980,"name":"FunctionCall","src":"16944:34:31"}],"id":981,"name":"EmitStatement","src":"16939:39:31"}],"id":982,"name":"Block","src":"16880:105:31"}],"id":983,"name":"FunctionDefinition","src":"16806:179:31"}],"id":984,"name":"ContractDefinition","src":"14926:2061:31"},{"attributes":{"contractDependencies":[80,102,2870,2915,3072],"contractKind":"contract","documentation":"@title GasTopUpLimit provides daily limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1142,102,80,3072,2870,2915],"name":"GasTopUpLimit","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":80,"type":"contract ControllableOwnable"},"id":985,"name":"UserDefinedTypeName","src":"17077:19:31"}],"id":986,"name":"InheritanceSpecifier","src":"17077:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":102,"type":"contract SelfCallableOwnable"},"id":987,"name":"UserDefinedTypeName","src":"17098:19:31"}],"id":988,"name":"InheritanceSpecifier","src":"17098:19:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetGasTopUpLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":994,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":989,"name":"ElementaryTypeName","src":"17147:7:31"}],"id":990,"name":"VariableDeclaration","src":"17147:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":994,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":991,"name":"ElementaryTypeName","src":"17164:7:31"}],"id":992,"name":"VariableDeclaration","src":"17164:15:31"}],"id":993,"name":"ParameterList","src":"17146:34:31"}],"id":994,"name":"EventDefinition","src":"17124:57:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedGasTopUpLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":998,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":995,"name":"ElementaryTypeName","src":"17221:7:31"}],"id":996,"name":"VariableDeclaration","src":"17221:15:31"}],"id":997,"name":"ParameterList","src":"17220:17:31"}],"id":998,"name":"EventDefinition","src":"17186:52:31"},{"attributes":{"constant":true,"name":"_MAXIMUM_GAS_TOPUP_LIMIT","scope":1142,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":999,"name":"ElementaryTypeName","src":"17244:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"353030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 500000000000000000","value":"500"},"id":1000,"name":"Literal","src":"17296:10:31"}],"id":1001,"name":"VariableDeclaration","src":"17244:62:31"},{"attributes":{"constant":true,"name":"_MINIMUM_GAS_TOPUP_LIMIT","scope":1142,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1002,"name":"ElementaryTypeName","src":"17312:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 1000000000000000","value":"1"},"id":1003,"name":"Literal","src":"17364:8:31"}],"id":1004,"name":"VariableDeclaration","src":"17312:60:31"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":852,"type":"library DailyLimitTrait"},"id":1005,"name":"UserDefinedTypeName","src":"17385:15:31"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":1006,"name":"UserDefinedTypeName","src":"17405:26:31"}],"id":1007,"name":"UsingForDirective","src":"17379:53:31"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":1142,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":1008,"name":"UserDefinedTypeName","src":"17438:26:31"}],"id":1009,"name":"VariableDeclaration","src":"17438:50:31"},{"attributes":{"documentation":"@dev Constructor initializes the daily gas topup limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1142,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1010,"name":"ParameterList","src":"17577:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":1011,"name":"ParameterList","src":"17589:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1012,"name":"Identifier","src":"17599:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":666,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1013,"name":"Identifier","src":"17616:15:31"}],"id":1014,"name":"MemberAccess","src":"17616:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1001,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1015,"name":"Identifier","src":"17643:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1001,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1016,"name":"Identifier","src":"17669:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":1017,"name":"Identifier","src":"17695:3:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1018,"name":"Literal","src":"17700:1:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1019,"name":"Literal","src":"17703:5:31"}],"id":1020,"name":"FunctionCall","src":"17616:93:31"}],"id":1021,"name":"Assignment","src":"17599:110:31"}],"id":1022,"name":"ExpressionStatement","src":"17599:110:31"}],"id":1023,"name":"Block","src":"17589:127:31"}],"id":1024,"name":"FunctionDefinition","src":"17566:150:31"},{"attributes":{"documentation":"@dev Confirm pending set top up gas limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmGasTopUpLimitUpdate","scope":1142,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1044,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1025,"name":"ElementaryTypeName","src":"17819:7:31"}],"id":1026,"name":"VariableDeclaration","src":"17819:15:31"}],"id":1027,"name":"ParameterList","src":"17818:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1030,"name":"ParameterList","src":"17860:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":1028,"name":"Identifier","src":"17845:14:31"}],"id":1029,"name":"ModifierInvocation","src":"17845:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":688,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1031,"name":"Identifier","src":"17870:14:31"}],"id":1033,"name":"MemberAccess","src":"17870:34:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"uint256","value":"_amount"},"id":1034,"name":"Identifier","src":"17905:7:31"}],"id":1035,"name":"FunctionCall","src":"17870:43:31"}],"id":1036,"name":"ExpressionStatement","src":"17870:43:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":994,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1037,"name":"Identifier","src":"17928:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1038,"name":"Identifier","src":"17945:3:31"}],"id":1039,"name":"MemberAccess","src":"17945:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"uint256","value":"_amount"},"id":1040,"name":"Identifier","src":"17957:7:31"}],"id":1041,"name":"FunctionCall","src":"17928:37:31"}],"id":1042,"name":"EmitStatement","src":"17923:42:31"}],"id":1043,"name":"Block","src":"17860:112:31"}],"id":1044,"name":"FunctionDefinition","src":"17783:189:31"},{"attributes":{"documentation":"@dev View your available gas top-up limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitAvailable","scope":1142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1045,"name":"ParameterList","src":"18059:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1054,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1046,"name":"ElementaryTypeName","src":"18085:7:31"}],"id":1047,"name":"VariableDeclaration","src":"18085:7:31"}],"id":1048,"name":"ParameterList","src":"18084:9:31"},{"children":[{"attributes":{"functionReturnParameters":1048},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":742,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1049,"name":"Identifier","src":"18111:14:31"}],"id":1050,"name":"MemberAccess","src":"18111:33:31"}],"id":1051,"name":"FunctionCall","src":"18111:35:31"}],"id":1052,"name":"Return","src":"18104:42:31"}],"id":1053,"name":"Block","src":"18094:59:31"}],"id":1054,"name":"FunctionDefinition","src":"18028:125:31"},{"attributes":{"documentation":"@dev Is there an active gas top-up limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitPending","scope":1142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1055,"name":"ParameterList","src":"18244:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1063,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1056,"name":"ElementaryTypeName","src":"18270:7:31"}],"id":1057,"name":"VariableDeclaration","src":"18270:7:31"}],"id":1058,"name":"ParameterList","src":"18269:9:31"},{"children":[{"attributes":{"functionReturnParameters":1058},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1059,"name":"Identifier","src":"18296:14:31"}],"id":1060,"name":"MemberAccess","src":"18296:22:31"}],"id":1061,"name":"Return","src":"18289:29:31"}],"id":1062,"name":"Block","src":"18279:46:31"}],"id":1063,"name":"FunctionDefinition","src":"18215:110:31"},{"attributes":{"documentation":"@dev Has the gas top-up limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitControllerConfirmationRequired","scope":1142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1064,"name":"ParameterList","src":"18438:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1072,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1065,"name":"ElementaryTypeName","src":"18464:4:31"}],"id":1066,"name":"VariableDeclaration","src":"18464:4:31"}],"id":1067,"name":"ParameterList","src":"18463:6:31"},{"children":[{"attributes":{"functionReturnParameters":1067},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1068,"name":"Identifier","src":"18487:14:31"}],"id":1069,"name":"MemberAccess","src":"18487:45:31"}],"id":1070,"name":"Return","src":"18480:52:31"}],"id":1071,"name":"Block","src":"18470:69:31"}],"id":1072,"name":"FunctionDefinition","src":"18386:153:31"},{"attributes":{"documentation":"@dev View how much gas top-up has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitValue","scope":1142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1073,"name":"ParameterList","src":"18633:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1081,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1074,"name":"ElementaryTypeName","src":"18659:7:31"}],"id":1075,"name":"VariableDeclaration","src":"18659:7:31"}],"id":1076,"name":"ParameterList","src":"18658:9:31"},{"children":[{"attributes":{"functionReturnParameters":1076},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1077,"name":"Identifier","src":"18685:14:31"}],"id":1078,"name":"MemberAccess","src":"18685:20:31"}],"id":1079,"name":"Return","src":"18678:27:31"}],"id":1080,"name":"Block","src":"18668:44:31"}],"id":1081,"name":"FunctionDefinition","src":"18606:106:31"},{"attributes":{"documentation":"@dev Sets the daily gas top up limit.\n @param _amount is the gas top up amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setGasTopUpLimit","scope":1142,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1082,"name":"ElementaryTypeName","src":"18846:7:31"}],"id":1083,"name":"VariableDeclaration","src":"18846:15:31"}],"id":1084,"name":"ParameterList","src":"18845:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1087,"name":"ParameterList","src":"18888:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1085,"name":"Identifier","src":"18872:15:31"}],"id":1086,"name":"ModifierInvocation","src":"18872:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1088,"name":"Identifier","src":"18898:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1004,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1089,"name":"Identifier","src":"18906:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1083,"type":"uint256","value":"_amount"},"id":1090,"name":"Identifier","src":"18934:7:31"}],"id":1091,"name":"BinaryOperation","src":"18906:35:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1083,"type":"uint256","value":"_amount"},"id":1092,"name":"Identifier","src":"18945:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1001,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1093,"name":"Identifier","src":"18956:24:31"}],"id":1094,"name":"BinaryOperation","src":"18945:35:31"}],"id":1095,"name":"BinaryOperation","src":"18906:74:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1096,"name":"Literal","src":"18982:21:31"}],"id":1097,"name":"FunctionCall","src":"18898:106:31"}],"id":1098,"name":"ExpressionStatement","src":"18898:106:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":800,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1099,"name":"Identifier","src":"19014:14:31"}],"id":1101,"name":"MemberAccess","src":"19014:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1083,"type":"uint256","value":"_amount"},"id":1102,"name":"Identifier","src":"19039:7:31"}],"id":1103,"name":"FunctionCall","src":"19014:33:31"}],"id":1104,"name":"ExpressionStatement","src":"19014:33:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":994,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1105,"name":"Identifier","src":"19062:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1106,"name":"Identifier","src":"19079:3:31"}],"id":1107,"name":"MemberAccess","src":"19079:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1083,"type":"uint256","value":"_amount"},"id":1108,"name":"Identifier","src":"19091:7:31"}],"id":1109,"name":"FunctionCall","src":"19062:37:31"}],"id":1110,"name":"EmitStatement","src":"19057:42:31"}],"id":1111,"name":"Block","src":"18888:218:31"}],"id":1112,"name":"FunctionDefinition","src":"18820:286:31"},{"attributes":{"documentation":"@dev Submit a daily gas top up limit update.\n @param _amount is the daily top up gas limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitGasTopUpLimitUpdate","scope":1142,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1141,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1113,"name":"ElementaryTypeName","src":"19268:7:31"}],"id":1114,"name":"VariableDeclaration","src":"19268:15:31"}],"id":1115,"name":"ParameterList","src":"19267:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1118,"name":"ParameterList","src":"19310:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1116,"name":"Identifier","src":"19294:15:31"}],"id":1117,"name":"ModifierInvocation","src":"19294:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1119,"name":"Identifier","src":"19320:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1004,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1120,"name":"Identifier","src":"19328:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"uint256","value":"_amount"},"id":1121,"name":"Identifier","src":"19356:7:31"}],"id":1122,"name":"BinaryOperation","src":"19328:35:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"uint256","value":"_amount"},"id":1123,"name":"Identifier","src":"19367:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1001,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1124,"name":"Identifier","src":"19378:24:31"}],"id":1125,"name":"BinaryOperation","src":"19367:35:31"}],"id":1126,"name":"BinaryOperation","src":"19328:74:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1127,"name":"Literal","src":"19404:21:31"}],"id":1128,"name":"FunctionCall","src":"19320:106:31"}],"id":1129,"name":"ExpressionStatement","src":"19320:106:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":820,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1130,"name":"Identifier","src":"19436:14:31"}],"id":1132,"name":"MemberAccess","src":"19436:33:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"uint256","value":"_amount"},"id":1133,"name":"Identifier","src":"19470:7:31"}],"id":1134,"name":"FunctionCall","src":"19436:42:31"}],"id":1135,"name":"ExpressionStatement","src":"19436:42:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":998,"type":"function (uint256)","value":"SubmittedGasTopUpLimitUpdate"},"id":1136,"name":"Identifier","src":"19493:28:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"uint256","value":"_amount"},"id":1137,"name":"Identifier","src":"19522:7:31"}],"id":1138,"name":"FunctionCall","src":"19493:37:31"}],"id":1139,"name":"EmitStatement","src":"19488:42:31"}],"id":1140,"name":"Block","src":"19310:227:31"}],"id":1141,"name":"FunctionDefinition","src":"19233:304:31"}],"id":1142,"name":"ContractDefinition","src":"17051:2488:31"},{"attributes":{"contractDependencies":[80,102,2870,2915,3072,3289],"contractKind":"contract","documentation":"@title LoadLimit provides daily load limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1316,3289,102,80,3072,2870,2915],"name":"LoadLimit","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":80,"type":"contract ControllableOwnable"},"id":1143,"name":"UserDefinedTypeName","src":"19626:19:31"}],"id":1144,"name":"InheritanceSpecifier","src":"19626:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":102,"type":"contract SelfCallableOwnable"},"id":1145,"name":"UserDefinedTypeName","src":"19647:19:31"}],"id":1146,"name":"InheritanceSpecifier","src":"19647:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":3289,"type":"contract TokenWhitelistable"},"id":1147,"name":"UserDefinedTypeName","src":"19668:18:31"}],"id":1148,"name":"InheritanceSpecifier","src":"19668:18:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetLoadLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1154,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1149,"name":"ElementaryTypeName","src":"19712:7:31"}],"id":1150,"name":"VariableDeclaration","src":"19712:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1154,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1151,"name":"ElementaryTypeName","src":"19729:7:31"}],"id":1152,"name":"VariableDeclaration","src":"19729:15:31"}],"id":1153,"name":"ParameterList","src":"19711:34:31"}],"id":1154,"name":"EventDefinition","src":"19693:53:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedLoadLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1158,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1155,"name":"ElementaryTypeName","src":"19782:7:31"}],"id":1156,"name":"VariableDeclaration","src":"19782:15:31"}],"id":1157,"name":"ParameterList","src":"19781:17:31"}],"id":1158,"name":"EventDefinition","src":"19751:48:31"},{"attributes":{"constant":true,"name":"_MAXIMUM_STABLECOIN_LOAD_LIMIT","scope":1316,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1159,"name":"ElementaryTypeName","src":"19805:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000","value":"10000"},"id":1160,"name":"Literal","src":"19863:5:31"}],"id":1161,"name":"VariableDeclaration","src":"19805:63:31"},{"attributes":{"constant":false,"name":"_maximumLoadLimit","scope":1316,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1162,"name":"ElementaryTypeName","src":"19881:7:31"}],"id":1163,"name":"VariableDeclaration","src":"19881:33:31"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":852,"type":"library DailyLimitTrait"},"id":1164,"name":"UserDefinedTypeName","src":"19927:15:31"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":1165,"name":"UserDefinedTypeName","src":"19947:26:31"}],"id":1166,"name":"UsingForDirective","src":"19921:53:31"},{"attributes":{"constant":false,"name":"_loadLimit","scope":1316,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":1167,"name":"UserDefinedTypeName","src":"19980:26:31"}],"id":1168,"name":"VariableDeclaration","src":"19980:46:31"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1316,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1206,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1169,"name":"ElementaryTypeName","src":"20045:7:31"}],"id":1170,"name":"VariableDeclaration","src":"20045:28:31"}],"id":1171,"name":"ParameterList","src":"20044:30:31"},{"attributes":{"parameters":[null]},"children":[],"id":1175,"name":"ParameterList","src":"20125:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3289,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":1172,"name":"Identifier","src":"20084:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1170,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1173,"name":"Identifier","src":"20103:20:31"}],"id":1174,"name":"ModifierInvocation","src":"20084:40:31"},{"children":[{"attributes":{"assignments":[null,1177,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1205,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1176,"name":"ElementaryTypeName","src":"20138:7:31"}],"id":1177,"name":"VariableDeclaration","src":"20138:27:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3153,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1178,"name":"Identifier","src":"20179:18:31"}],"id":1179,"name":"FunctionCall","src":"20179:20:31"}],"id":1180,"name":"VariableDeclarationStatement","src":"20135:64:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e91ed084014006e202586b158c3035ec40db0f637c146d3fdad49cda6c7a17a","typeString":"literal_string \"no stablecoin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1181,"name":"Identifier","src":"20209:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1177,"type":"uint256","value":"stablecoinMagnitude"},"id":1182,"name":"Identifier","src":"20217:19:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1183,"name":"Literal","src":"20239:1:31"}],"id":1184,"name":"BinaryOperation","src":"20217:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20737461626c65636f696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no stablecoin\"","value":"no stablecoin"},"id":1185,"name":"Literal","src":"20242:15:31"}],"id":1186,"name":"FunctionCall","src":"20209:49:31"}],"id":1187,"name":"ExpressionStatement","src":"20209:49:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1188,"name":"Identifier","src":"20268:17:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1161,"type":"uint256","value":"_MAXIMUM_STABLECOIN_LOAD_LIMIT"},"id":1189,"name":"Identifier","src":"20288:30:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1177,"type":"uint256","value":"stablecoinMagnitude"},"id":1190,"name":"Identifier","src":"20321:19:31"}],"id":1191,"name":"BinaryOperation","src":"20288:52:31"}],"id":1192,"name":"Assignment","src":"20268:72:31"}],"id":1193,"name":"ExpressionStatement","src":"20268:72:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1194,"name":"Identifier","src":"20350:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":666,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1195,"name":"Identifier","src":"20363:15:31"}],"id":1196,"name":"MemberAccess","src":"20363:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1197,"name":"Identifier","src":"20390:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1198,"name":"Identifier","src":"20409:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":1199,"name":"Identifier","src":"20428:3:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1200,"name":"Literal","src":"20433:1:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1201,"name":"Literal","src":"20436:5:31"}],"id":1202,"name":"FunctionCall","src":"20363:79:31"}],"id":1203,"name":"Assignment","src":"20350:92:31"}],"id":1204,"name":"ExpressionStatement","src":"20350:92:31"}],"id":1205,"name":"Block","src":"20125:324:31"}],"id":1206,"name":"FunctionDefinition","src":"20033:416:31"},{"attributes":{"documentation":"@dev Sets a daily card load limit.\n @param _amount is the card load amount in current stablecoin base units.","implemented":true,"isConstructor":false,"kind":"function","name":"setLoadLimit","scope":1316,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1233,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1207,"name":"ElementaryTypeName","src":"20601:7:31"}],"id":1208,"name":"VariableDeclaration","src":"20601:15:31"}],"id":1209,"name":"ParameterList","src":"20600:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1212,"name":"ParameterList","src":"20643:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1210,"name":"Identifier","src":"20627:15:31"}],"id":1211,"name":"ModifierInvocation","src":"20627:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1213,"name":"Identifier","src":"20653:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1208,"type":"uint256","value":"_amount"},"id":1214,"name":"Identifier","src":"20661:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1215,"name":"Identifier","src":"20672:17:31"}],"id":1216,"name":"BinaryOperation","src":"20661:28:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1217,"name":"Literal","src":"20691:26:31"}],"id":1218,"name":"FunctionCall","src":"20653:65:31"}],"id":1219,"name":"ExpressionStatement","src":"20653:65:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":800,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1220,"name":"Identifier","src":"20728:10:31"}],"id":1222,"name":"MemberAccess","src":"20728:20:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1208,"type":"uint256","value":"_amount"},"id":1223,"name":"Identifier","src":"20749:7:31"}],"id":1224,"name":"FunctionCall","src":"20728:29:31"}],"id":1225,"name":"ExpressionStatement","src":"20728:29:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1154,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1226,"name":"Identifier","src":"20772:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1227,"name":"Identifier","src":"20785:3:31"}],"id":1228,"name":"MemberAccess","src":"20785:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1208,"type":"uint256","value":"_amount"},"id":1229,"name":"Identifier","src":"20797:7:31"}],"id":1230,"name":"FunctionCall","src":"20772:33:31"}],"id":1231,"name":"EmitStatement","src":"20767:38:31"}],"id":1232,"name":"Block","src":"20643:169:31"}],"id":1233,"name":"FunctionDefinition","src":"20579:233:31"},{"attributes":{"documentation":"@dev Submit a daily load limit update.\n @param _amount is the daily load limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitLoadLimitUpdate","scope":1316,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1258,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1234,"name":"ElementaryTypeName","src":"20958:7:31"}],"id":1235,"name":"VariableDeclaration","src":"20958:15:31"}],"id":1236,"name":"ParameterList","src":"20957:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1239,"name":"ParameterList","src":"21000:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1237,"name":"Identifier","src":"20984:15:31"}],"id":1238,"name":"ModifierInvocation","src":"20984:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1240,"name":"Identifier","src":"21010:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1235,"type":"uint256","value":"_amount"},"id":1241,"name":"Identifier","src":"21018:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1242,"name":"Identifier","src":"21029:17:31"}],"id":1243,"name":"BinaryOperation","src":"21018:28:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1244,"name":"Literal","src":"21048:26:31"}],"id":1245,"name":"FunctionCall","src":"21010:65:31"}],"id":1246,"name":"ExpressionStatement","src":"21010:65:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":820,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1247,"name":"Identifier","src":"21085:10:31"}],"id":1249,"name":"MemberAccess","src":"21085:29:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1235,"type":"uint256","value":"_amount"},"id":1250,"name":"Identifier","src":"21115:7:31"}],"id":1251,"name":"FunctionCall","src":"21085:38:31"}],"id":1252,"name":"ExpressionStatement","src":"21085:38:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1158,"type":"function (uint256)","value":"SubmittedLoadLimitUpdate"},"id":1253,"name":"Identifier","src":"21138:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1235,"type":"uint256","value":"_amount"},"id":1254,"name":"Identifier","src":"21163:7:31"}],"id":1255,"name":"FunctionCall","src":"21138:33:31"}],"id":1256,"name":"EmitStatement","src":"21133:38:31"}],"id":1257,"name":"Block","src":"21000:178:31"}],"id":1258,"name":"FunctionDefinition","src":"20927:251:31"},{"attributes":{"documentation":"@dev Confirm pending set load limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmLoadLimitUpdate","scope":1316,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1278,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1259,"name":"ElementaryTypeName","src":"21271:7:31"}],"id":1260,"name":"VariableDeclaration","src":"21271:15:31"}],"id":1261,"name":"ParameterList","src":"21270:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1264,"name":"ParameterList","src":"21312:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":1262,"name":"Identifier","src":"21297:14:31"}],"id":1263,"name":"ModifierInvocation","src":"21297:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":688,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1265,"name":"Identifier","src":"21322:10:31"}],"id":1267,"name":"MemberAccess","src":"21322:30:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1260,"type":"uint256","value":"_amount"},"id":1268,"name":"Identifier","src":"21353:7:31"}],"id":1269,"name":"FunctionCall","src":"21322:39:31"}],"id":1270,"name":"ExpressionStatement","src":"21322:39:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1154,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1271,"name":"Identifier","src":"21376:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1272,"name":"Identifier","src":"21389:3:31"}],"id":1273,"name":"MemberAccess","src":"21389:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1260,"type":"uint256","value":"_amount"},"id":1274,"name":"Identifier","src":"21401:7:31"}],"id":1275,"name":"FunctionCall","src":"21376:33:31"}],"id":1276,"name":"EmitStatement","src":"21371:38:31"}],"id":1277,"name":"Block","src":"21312:104:31"}],"id":1278,"name":"FunctionDefinition","src":"21239:177:31"},{"attributes":{"documentation":"@dev View your available load limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitAvailable","scope":1316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1279,"name":"ParameterList","src":"21493:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1288,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1280,"name":"ElementaryTypeName","src":"21519:7:31"}],"id":1281,"name":"VariableDeclaration","src":"21519:7:31"}],"id":1282,"name":"ParameterList","src":"21518:9:31"},{"children":[{"attributes":{"functionReturnParameters":1282},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":742,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1283,"name":"Identifier","src":"21545:10:31"}],"id":1284,"name":"MemberAccess","src":"21545:29:31"}],"id":1285,"name":"FunctionCall","src":"21545:31:31"}],"id":1286,"name":"Return","src":"21538:38:31"}],"id":1287,"name":"Block","src":"21528:55:31"}],"id":1288,"name":"FunctionDefinition","src":"21466:117:31"},{"attributes":{"documentation":"@dev Is there an active load limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitPending","scope":1316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1289,"name":"ParameterList","src":"21664:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1297,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1290,"name":"ElementaryTypeName","src":"21690:7:31"}],"id":1291,"name":"VariableDeclaration","src":"21690:7:31"}],"id":1292,"name":"ParameterList","src":"21689:9:31"},{"children":[{"attributes":{"functionReturnParameters":1292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1293,"name":"Identifier","src":"21716:10:31"}],"id":1294,"name":"MemberAccess","src":"21716:18:31"}],"id":1295,"name":"Return","src":"21709:25:31"}],"id":1296,"name":"Block","src":"21699:42:31"}],"id":1297,"name":"FunctionDefinition","src":"21639:102:31"},{"attributes":{"documentation":"@dev Has the load limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitControllerConfirmationRequired","scope":1316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1298,"name":"ParameterList","src":"21844:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1306,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1299,"name":"ElementaryTypeName","src":"21870:4:31"}],"id":1300,"name":"VariableDeclaration","src":"21870:4:31"}],"id":1301,"name":"ParameterList","src":"21869:6:31"},{"children":[{"attributes":{"functionReturnParameters":1301},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1302,"name":"Identifier","src":"21893:10:31"}],"id":1303,"name":"MemberAccess","src":"21893:41:31"}],"id":1304,"name":"Return","src":"21886:48:31"}],"id":1305,"name":"Block","src":"21876:65:31"}],"id":1306,"name":"FunctionDefinition","src":"21796:145:31"},{"attributes":{"documentation":"@dev View how much laod limit has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitValue","scope":1316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1307,"name":"ParameterList","src":"22031:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1315,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1308,"name":"ElementaryTypeName","src":"22057:7:31"}],"id":1309,"name":"VariableDeclaration","src":"22057:7:31"}],"id":1310,"name":"ParameterList","src":"22056:9:31"},{"children":[{"attributes":{"functionReturnParameters":1310},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1311,"name":"Identifier","src":"22083:10:31"}],"id":1312,"name":"MemberAccess","src":"22083:16:31"}],"id":1313,"name":"Return","src":"22076:23:31"}],"id":1314,"name":"Block","src":"22066:40:31"}],"id":1315,"name":"FunctionDefinition","src":"22008:98:31"}],"id":1316,"name":"ContractDefinition","src":"19604:2504:31"},{"attributes":{"contractDependencies":[80,102,650,984,1142,1316,2337,2774,2870,2915,3072,3289,3329],"contractKind":"contract","documentation":"@title Asset wallet with extra security features, gas top up management and card integration.","fullyImplemented":true,"linearizedBaseContracts":[2227,2774,3329,2337,984,650,1316,3289,1142,102,80,3072,2870,2915],"name":"Wallet","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":1317,"name":"UserDefinedTypeName","src":"22228:13:31"}],"id":1318,"name":"InheritanceSpecifier","src":"22228:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"GasTopUpLimit","referencedDeclaration":1142,"type":"contract GasTopUpLimit"},"id":1319,"name":"UserDefinedTypeName","src":"22243:13:31"}],"id":1320,"name":"InheritanceSpecifier","src":"22243:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"LoadLimit","referencedDeclaration":1316,"type":"contract LoadLimit"},"id":1321,"name":"UserDefinedTypeName","src":"22258:9:31"}],"id":1322,"name":"InheritanceSpecifier","src":"22258:9:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddressWhitelist","referencedDeclaration":650,"type":"contract AddressWhitelist"},"id":1323,"name":"UserDefinedTypeName","src":"22269:16:31"}],"id":1324,"name":"InheritanceSpecifier","src":"22269:16:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SpendLimit","referencedDeclaration":984,"type":"contract SpendLimit"},"id":1325,"name":"UserDefinedTypeName","src":"22287:10:31"}],"id":1326,"name":"InheritanceSpecifier","src":"22287:10:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ERC165","referencedDeclaration":2337,"type":"contract ERC165"},"id":1327,"name":"UserDefinedTypeName","src":"22299:6:31"}],"id":1328,"name":"InheritanceSpecifier","src":"22299:6:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3329,"type":"contract Transferrable"},"id":1329,"name":"UserDefinedTypeName","src":"22307:13:31"}],"id":1330,"name":"InheritanceSpecifier","src":"22307:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":2774,"type":"contract Balanceable"},"id":1331,"name":"UserDefinedTypeName","src":"22322:11:31"}],"id":1332,"name":"InheritanceSpecifier","src":"22322:11:31"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":2246,"type":"library Address"},"id":1333,"name":"UserDefinedTypeName","src":"22346:7:31"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1334,"name":"ElementaryTypeName","src":"22358:7:31"}],"id":1335,"name":"UsingForDirective","src":"22340:26:31"},{"children":[{"attributes":{"contractScope":null,"name":"ECDSA","referencedDeclaration":2327,"type":"library ECDSA"},"id":1336,"name":"UserDefinedTypeName","src":"22377:5:31"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":1337,"name":"ElementaryTypeName","src":"22387:7:31"}],"id":1338,"name":"UsingForDirective","src":"22371:24:31"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2609,"type":"library SafeERC20"},"id":1339,"name":"UserDefinedTypeName","src":"22406:9:31"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":1340,"name":"UserDefinedTypeName","src":"22420:5:31"}],"id":1341,"name":"UsingForDirective","src":"22400:26:31"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":1342,"name":"UserDefinedTypeName","src":"22437:8:31"},{"attributes":{"name":"uint256","type":"uint256"},"id":1343,"name":"ElementaryTypeName","src":"22450:7:31"}],"id":1344,"name":"UsingForDirective","src":"22431:27:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"BulkTransferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1351,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1345,"name":"ElementaryTypeName","src":"22486:7:31"}],"id":1346,"name":"VariableDeclaration","src":"22486:11:31"},{"attributes":{"constant":false,"indexed":false,"name":"_assets","scope":1351,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1347,"name":"ElementaryTypeName","src":"22499:7:31"}],"id":1348,"name":"ArrayTypeName","src":"22499:9:31"}],"id":1349,"name":"VariableDeclaration","src":"22499:17:31"}],"id":1350,"name":"ParameterList","src":"22485:32:31"}],"id":1351,"name":"EventDefinition","src":"22464:54:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedRelayedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1357,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1352,"name":"ElementaryTypeName","src":"22556:5:31"}],"id":1353,"name":"VariableDeclaration","src":"22556:11:31"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1357,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1354,"name":"ElementaryTypeName","src":"22569:5:31"}],"id":1355,"name":"VariableDeclaration","src":"22569:17:31"}],"id":1356,"name":"ParameterList","src":"22555:32:31"}],"id":1357,"name":"EventDefinition","src":"22523:65:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_destination","scope":1367,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1358,"name":"ElementaryTypeName","src":"22619:7:31"}],"id":1359,"name":"VariableDeclaration","src":"22619:20:31"},{"attributes":{"constant":false,"indexed":false,"name":"_value","scope":1367,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1360,"name":"ElementaryTypeName","src":"22641:7:31"}],"id":1361,"name":"VariableDeclaration","src":"22641:14:31"},{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1367,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1362,"name":"ElementaryTypeName","src":"22657:5:31"}],"id":1363,"name":"VariableDeclaration","src":"22657:11:31"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1367,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1364,"name":"ElementaryTypeName","src":"22670:5:31"}],"id":1365,"name":"VariableDeclaration","src":"22670:17:31"}],"id":1366,"name":"ParameterList","src":"22618:70:31"}],"id":1367,"name":"EventDefinition","src":"22593:96:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"IncreasedRelayNonce"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1373,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1368,"name":"ElementaryTypeName","src":"22720:7:31"}],"id":1369,"name":"VariableDeclaration","src":"22720:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_currentNonce","scope":1373,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1370,"name":"ElementaryTypeName","src":"22737:7:31"}],"id":1371,"name":"VariableDeclaration","src":"22737:21:31"}],"id":1372,"name":"ParameterList","src":"22719:40:31"}],"id":1373,"name":"EventDefinition","src":"22694:66:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"LoadedTokenCard"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1379,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1374,"name":"ElementaryTypeName","src":"22787:7:31"}],"id":1375,"name":"VariableDeclaration","src":"22787:14:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1379,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1376,"name":"ElementaryTypeName","src":"22803:7:31"}],"id":1377,"name":"VariableDeclaration","src":"22803:15:31"}],"id":1378,"name":"ParameterList","src":"22786:33:31"}],"id":1379,"name":"EventDefinition","src":"22765:55:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1385,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1380,"name":"ElementaryTypeName","src":"22840:7:31"}],"id":1381,"name":"VariableDeclaration","src":"22840:13:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1385,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1382,"name":"ElementaryTypeName","src":"22855:7:31"}],"id":1383,"name":"VariableDeclaration","src":"22855:15:31"}],"id":1384,"name":"ParameterList","src":"22839:32:31"}],"id":1385,"name":"EventDefinition","src":"22825:47:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"ToppedUpGas"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1393,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1386,"name":"ElementaryTypeName","src":"22895:7:31"}],"id":1387,"name":"VariableDeclaration","src":"22895:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1393,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1388,"name":"ElementaryTypeName","src":"22912:7:31"}],"id":1389,"name":"VariableDeclaration","src":"22912:14:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1393,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1390,"name":"ElementaryTypeName","src":"22928:7:31"}],"id":1391,"name":"VariableDeclaration","src":"22928:15:31"}],"id":1392,"name":"ParameterList","src":"22894:50:31"}],"id":1393,"name":"EventDefinition","src":"22877:68:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1394,"name":"ElementaryTypeName","src":"22968:7:31"}],"id":1395,"name":"VariableDeclaration","src":"22968:11:31"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1396,"name":"ElementaryTypeName","src":"22981:7:31"}],"id":1397,"name":"VariableDeclaration","src":"22981:14:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1401,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1398,"name":"ElementaryTypeName","src":"22997:7:31"}],"id":1399,"name":"VariableDeclaration","src":"22997:15:31"}],"id":1400,"name":"ParameterList","src":"22967:46:31"}],"id":1401,"name":"EventDefinition","src":"22950:64:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1402,"name":"ParameterList","src":"23046:2:31"}],"id":1403,"name":"EventDefinition","src":"23019:30:31"},{"attributes":{"constant":true,"name":"WALLET_VERSION","scope":2227,"stateVariable":true,"storageLocation":"default","type":"string","visibility":"public"},"children":[{"attributes":{"name":"string","type":"string"},"id":1404,"name":"ElementaryTypeName","src":"23125:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"332e322e30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"3.2.0\"","value":"3.2.0"},"id":1405,"name":"Literal","src":"23165:7:31"}],"id":1406,"name":"VariableDeclaration","src":"23125:47:31"},{"attributes":{"constant":true,"name":"_EIP_1271","scope":2227,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1407,"name":"ElementaryTypeName","src":"23296:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230633133623062","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 549534475","value":"0x20c13b0b"},"id":1408,"name":"Literal","src":"23332:10:31"}],"id":1409,"name":"VariableDeclaration","src":"23296:46:31"},{"attributes":{"constant":true,"name":"_EIP_1654","scope":2227,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1410,"name":"ElementaryTypeName","src":"23467:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30783136323662613765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 371636862","value":"0x1626ba7e"},"id":1411,"name":"Literal","src":"23503:10:31"}],"id":1412,"name":"VariableDeclaration","src":"23467:46:31"},{"attributes":{"constant":true,"name":"_ERC165_INTERFACE_ID","scope":2227,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1413,"name":"ElementaryTypeName","src":"23564:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":1414,"name":"Literal","src":"23611:10:31"}],"id":1415,"name":"VariableDeclaration","src":"23564:57:31"},{"attributes":{"constant":false,"name":"relayNonce","scope":2227,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1416,"name":"ElementaryTypeName","src":"23739:7:31"}],"id":1417,"name":"VariableDeclaration","src":"23739:25:31"},{"attributes":{"constant":false,"name":"_licenceNode","scope":2227,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1418,"name":"ElementaryTypeName","src":"23845:7:31"}],"id":1419,"name":"VariableDeclaration","src":"23845:28:31"},{"attributes":{"documentation":"@dev Constructor initializes the wallet top up limit and the vault contract.\n @param _owner_ is the owner account of the wallet contract.\n @param _transferable_ indicates whether the contract ownership can be transferred.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist.\n @param _controllerNode_ is the ENS name node of the Controller contract.\n @param _licenceNode_ is the ENS name node of the Licence contract.\n @param _spendLimit_ is the initial spend limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1420,"name":"ElementaryTypeName","src":"24495:15:31"}],"id":1421,"name":"VariableDeclaration","src":"24495:23:31"},{"attributes":{"constant":false,"name":"_transferable_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1422,"name":"ElementaryTypeName","src":"24528:4:31"}],"id":1423,"name":"VariableDeclaration","src":"24528:19:31"},{"attributes":{"constant":false,"name":"_ens_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1424,"name":"ElementaryTypeName","src":"24557:7:31"}],"id":1425,"name":"VariableDeclaration","src":"24557:13:31"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1426,"name":"ElementaryTypeName","src":"24580:7:31"}],"id":1427,"name":"VariableDeclaration","src":"24580:28:31"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1428,"name":"ElementaryTypeName","src":"24618:7:31"}],"id":1429,"name":"VariableDeclaration","src":"24618:24:31"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1430,"name":"ElementaryTypeName","src":"24652:7:31"}],"id":1431,"name":"VariableDeclaration","src":"24652:21:31"},{"attributes":{"constant":false,"name":"_spendLimit_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1432,"name":"ElementaryTypeName","src":"24683:7:31"}],"id":1433,"name":"VariableDeclaration","src":"24683:20:31"}],"id":1434,"name":"ParameterList","src":"24485:224:31"},{"attributes":{"parameters":[null]},"children":[],"id":1451,"name":"ParameterList","src":"24859:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1435,"name":"Identifier","src":"24717:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1425,"type":"address","value":"_ens_"},"id":1436,"name":"Identifier","src":"24731:5:31"}],"id":1437,"name":"ModifierInvocation","src":"24717:20:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":984,"type":"type(contract SpendLimit)","value":"SpendLimit"},"id":1438,"name":"Identifier","src":"24738:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1433,"type":"uint256","value":"_spendLimit_"},"id":1439,"name":"Identifier","src":"24749:12:31"}],"id":1440,"name":"ModifierInvocation","src":"24738:24:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3072,"type":"type(contract Ownable)","value":"Ownable"},"id":1441,"name":"Identifier","src":"24763:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1421,"type":"address payable","value":"_owner_"},"id":1442,"name":"Identifier","src":"24771:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1423,"type":"bool","value":"_transferable_"},"id":1443,"name":"Identifier","src":"24780:14:31"}],"id":1444,"name":"ModifierInvocation","src":"24763:32:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"type(contract Controllable)","value":"Controllable"},"id":1445,"name":"Identifier","src":"24796:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1429,"type":"bytes32","value":"_controllerNode_"},"id":1446,"name":"Identifier","src":"24809:16:31"}],"id":1447,"name":"ModifierInvocation","src":"24796:30:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1316,"type":"type(contract LoadLimit)","value":"LoadLimit"},"id":1448,"name":"Identifier","src":"24827:9:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1427,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1449,"name":"Identifier","src":"24837:20:31"}],"id":1450,"name":"ModifierInvocation","src":"24827:31:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1419,"type":"bytes32","value":"_licenceNode"},"id":1452,"name":"Identifier","src":"24869:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1431,"type":"bytes32","value":"_licenceNode_"},"id":1453,"name":"Identifier","src":"24884:13:31"}],"id":1454,"name":"Assignment","src":"24869:28:31"}],"id":1455,"name":"ExpressionStatement","src":"24869:28:31"}],"id":1456,"name":"Block","src":"24859:45:31"}],"id":1457,"name":"FunctionDefinition","src":"24474:430:31"},{"attributes":{"documentation":"@dev Checks if the value is not zero.","name":"isNotZero","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_value","scope":1470,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1458,"name":"ElementaryTypeName","src":"24975:7:31"}],"id":1459,"name":"VariableDeclaration","src":"24975:14:31"}],"id":1460,"name":"ParameterList","src":"24974:16:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d553a348030c1ee763b9cde2d3cc60fc831e78f559cd3758c25113c454c7f3","typeString":"literal_string \"value=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1461,"name":"Identifier","src":"25001:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1459,"type":"uint256","value":"_value"},"id":1462,"name":"Identifier","src":"25009:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1463,"name":"Literal","src":"25019:1:31"}],"id":1464,"name":"BinaryOperation","src":"25009:11:31"},{"attributes":{"argumentTypes":null,"hexvalue":"76616c75653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"value=0\"","value":"value=0"},"id":1465,"name":"Literal","src":"25022:9:31"}],"id":1466,"name":"FunctionCall","src":"25001:31:31"}],"id":1467,"name":"ExpressionStatement","src":"25001:31:31"},{"id":1468,"name":"PlaceholderStatement","src":"25042:1:31"}],"id":1469,"name":"Block","src":"24991:59:31"}],"id":1470,"name":"ModifierDefinition","src":"24956:94:31"},{"attributes":{"documentation":"@dev Ether can be deposited from any source, so this contract must be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":2227,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1471,"name":"ParameterList","src":"25161:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":1472,"name":"ParameterList","src":"25181:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1385,"type":"function (address,uint256)","value":"Received"},"id":1473,"name":"Identifier","src":"25196:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1474,"name":"Identifier","src":"25205:3:31"}],"id":1475,"name":"MemberAccess","src":"25205:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1476,"name":"Identifier","src":"25217:3:31"}],"id":1477,"name":"MemberAccess","src":"25217:9:31"}],"id":1478,"name":"FunctionCall","src":"25196:31:31"}],"id":1479,"name":"EmitStatement","src":"25191:36:31"}],"id":1480,"name":"Block","src":"25181:53:31"}],"id":1481,"name":"FunctionDefinition","src":"25153:81:31"},{"attributes":{"documentation":"@dev This is a bulk transfer convenience function, used to migrate contracts.\n @notice If any of the transfers fail, this will revert.\n @param _to is the recipient's address, can't be the zero (0x0) address: transfer() will revert.\n @param _assets is an array of addresses of ERC20 tokens or 0x0 for ether.","implemented":true,"isConstructor":false,"kind":"function","name":"bulkTransfer","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1537,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1482,"name":"ElementaryTypeName","src":"25598:15:31"}],"id":1483,"name":"VariableDeclaration","src":"25598:19:31"},{"attributes":{"constant":false,"name":"_assets","scope":1537,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1484,"name":"ElementaryTypeName","src":"25619:7:31"}],"id":1485,"name":"ArrayTypeName","src":"25619:9:31"}],"id":1486,"name":"VariableDeclaration","src":"25619:26:31"}],"id":1487,"name":"ParameterList","src":"25597:49:31"},{"attributes":{"parameters":[null]},"children":[],"id":1490,"name":"ParameterList","src":"25672:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1488,"name":"Identifier","src":"25656:15:31"}],"id":1489,"name":"ModifierInvocation","src":"25656:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc6fe91796d2ae20b0ff36bc5dfbb8543f76fc0a4077e7ae85858f799173eb60","typeString":"literal_string \"asset array is empty\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1491,"name":"Identifier","src":"25737:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1492,"name":"Identifier","src":"25745:7:31"}],"id":1493,"name":"MemberAccess","src":"25745:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1494,"name":"Literal","src":"25763:1:31"}],"id":1495,"name":"BinaryOperation","src":"25745:19:31"},{"attributes":{"argumentTypes":null,"hexvalue":"617373657420617272617920697320656d707479","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"asset array is empty\"","value":"asset array is empty"},"id":1496,"name":"Literal","src":"25766:22:31"}],"id":1497,"name":"FunctionCall","src":"25737:52:31"}],"id":1498,"name":"ExpressionStatement","src":"25737:52:31"},{"children":[{"attributes":{"assignments":[1500]},"children":[{"attributes":{"constant":false,"name":"i","scope":1530,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1499,"name":"ElementaryTypeName","src":"25866:7:31"}],"id":1500,"name":"VariableDeclaration","src":"25866:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1501,"name":"Literal","src":"25878:1:31"}],"id":1502,"name":"VariableDeclarationStatement","src":"25866:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1500,"type":"uint256","value":"i"},"id":1503,"name":"Identifier","src":"25881:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1504,"name":"Identifier","src":"25885:7:31"}],"id":1505,"name":"MemberAccess","src":"25885:14:31"}],"id":1506,"name":"BinaryOperation","src":"25881:18:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1500,"type":"uint256","value":"i"},"id":1507,"name":"Identifier","src":"25901:1:31"}],"id":1508,"name":"UnaryOperation","src":"25901:3:31"}],"id":1509,"name":"ExpressionStatement","src":"25901:3:31"},{"children":[{"attributes":{"assignments":[1511]},"children":[{"attributes":{"constant":false,"name":"amount","scope":1529,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1510,"name":"ElementaryTypeName","src":"25920:7:31"}],"id":1511,"name":"VariableDeclaration","src":"25920:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2773,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":1512,"name":"Identifier","src":"25937:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2227","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1513,"name":"ElementaryTypeNameExpression","src":"25946:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10247,"type":"contract Wallet","value":"this"},"id":1514,"name":"Identifier","src":"25954:4:31"}],"id":1515,"name":"FunctionCall","src":"25946:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1516,"name":"Identifier","src":"25961:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1500,"type":"uint256","value":"i"},"id":1517,"name":"Identifier","src":"25969:1:31"}],"id":1518,"name":"IndexAccess","src":"25961:10:31"}],"id":1519,"name":"FunctionCall","src":"25937:35:31"}],"id":1520,"name":"VariableDeclarationStatement","src":"25920:52:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2226,"type":"function (address payable,address,uint256)","value":"transfer"},"id":1521,"name":"Identifier","src":"26046:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1483,"type":"address payable","value":"_to"},"id":1522,"name":"Identifier","src":"26055:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1523,"name":"Identifier","src":"26060:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1500,"type":"uint256","value":"i"},"id":1524,"name":"Identifier","src":"26068:1:31"}],"id":1525,"name":"IndexAccess","src":"26060:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1511,"type":"uint256","value":"amount"},"id":1526,"name":"Identifier","src":"26072:6:31"}],"id":1527,"name":"FunctionCall","src":"26046:33:31"}],"id":1528,"name":"ExpressionStatement","src":"26046:33:31"}],"id":1529,"name":"Block","src":"25906:184:31"}],"id":1530,"name":"ForStatement","src":"25861:229:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"function (address,address[] memory)","value":"BulkTransferred"},"id":1531,"name":"Identifier","src":"26105:15:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1483,"type":"address payable","value":"_to"},"id":1532,"name":"Identifier","src":"26121:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1533,"name":"Identifier","src":"26126:7:31"}],"id":1534,"name":"FunctionCall","src":"26105:29:31"}],"id":1535,"name":"EmitStatement","src":"26100:34:31"}],"id":1536,"name":"Block","src":"25672:469:31"}],"id":1537,"name":"FunctionDefinition","src":"25576:565:31"},{"attributes":{"documentation":"@dev This function allows for the controller to relay transactions on the owner's behalf,\n the relayed message has to be signed by the owner.\n @param _nonce only used for relayed transactions, must match the wallet's relayNonce.\n @param _data abi encoded data payload.\n @param _signature signed prefix + data.","implemented":true,"isConstructor":false,"kind":"function","name":"executeRelayedTransaction","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_nonce","scope":1613,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1538,"name":"ElementaryTypeName","src":"26528:7:31"}],"id":1539,"name":"VariableDeclaration","src":"26528:14:31"},{"attributes":{"constant":false,"name":"_data","scope":1613,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1540,"name":"ElementaryTypeName","src":"26544:5:31"}],"id":1541,"name":"VariableDeclaration","src":"26544:20:31"},{"attributes":{"constant":false,"name":"_signature","scope":1613,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1542,"name":"ElementaryTypeName","src":"26566:5:31"}],"id":1543,"name":"VariableDeclaration","src":"26566:25:31"}],"id":1544,"name":"ParameterList","src":"26527:65:31"},{"attributes":{"parameters":[null]},"children":[],"id":1547,"name":"ParameterList","src":"26617:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":1545,"name":"Identifier","src":"26602:14:31"}],"id":1546,"name":"ModifierInvocation","src":"26602:14:31"},{"children":[{"attributes":{"assignments":[1549],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"id","scope":1612,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1548,"name":"ElementaryTypeName","src":"26797:7:31"}],"id":1549,"name":"VariableDeclaration","src":"26797:10:31"}],"id":1550,"name":"VariableDeclarationStatement","src":"26797:10:31"},{"attributes":{"externalReferences":[{"id":{"declaration":1549,"isOffset":false,"isSlot":false,"src":"26840:2:31","valueSize":1}}],"operations":"{ id := chainid() }"},"children":[],"id":1551,"name":"InlineAssembly","src":"26817:99:31"},{"attributes":{"assignments":[1553]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1552,"name":"ElementaryTypeName","src":"26925:7:31"}],"id":1553,"name":"VariableDeclaration","src":"26925:16:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toEthSignedMessageHash","referencedDeclaration":2326,"type":"function (bytes32) pure returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1554,"name":"Identifier","src":"26944:9:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_64973292d287a9bdfbf2540b56114a2ccf5255f1a0f38436d52dc69f44e83d8d","typeString":"literal_string \"monolith:\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":1555,"name":"Identifier","src":"26954:3:31"}],"id":1556,"name":"MemberAccess","src":"26954:16:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e6f6c6974683a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"monolith:\"","value":"monolith:"},"id":1557,"name":"Literal","src":"26971:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"uint256","value":"id"},"id":1558,"name":"Identifier","src":"26984:2:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2227","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1559,"name":"ElementaryTypeNameExpression","src":"26988:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10247,"type":"contract Wallet","value":"this"},"id":1560,"name":"Identifier","src":"26996:4:31"}],"id":1561,"name":"FunctionCall","src":"26988:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1539,"type":"uint256","value":"_nonce"},"id":1562,"name":"Identifier","src":"27003:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1541,"type":"bytes calldata","value":"_data"},"id":1563,"name":"Identifier","src":"27011:5:31"}],"id":1564,"name":"FunctionCall","src":"26954:63:31"}],"id":1565,"name":"FunctionCall","src":"26944:74:31"}],"id":1566,"name":"MemberAccess","src":"26944:97:31"}],"id":1567,"name":"FunctionCall","src":"26944:99:31"}],"id":1568,"name":"VariableDeclarationStatement","src":"26925:118:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1569,"name":"Identifier","src":"27111:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2160,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1570,"name":"Identifier","src":"27119:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"bytes32","value":"dataHash"},"id":1571,"name":"Identifier","src":"27136:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1543,"type":"bytes calldata","value":"_signature"},"id":1572,"name":"Identifier","src":"27146:10:31"}],"id":1573,"name":"FunctionCall","src":"27119:38:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"bytes4","value":"_EIP_1654"},"id":1574,"name":"Identifier","src":"27161:9:31"}],"id":1575,"name":"BinaryOperation","src":"27119:51:31"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1576,"name":"Literal","src":"27172:15:31"}],"id":1577,"name":"FunctionCall","src":"27111:77:31"}],"id":1578,"name":"ExpressionStatement","src":"27111:77:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_34adcd0a74b814374d2f97634e18f1e1bbbc6244d3bcc4bf9469772fc5d9d0ea","typeString":"literal_string \"tx replay\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1579,"name":"Identifier","src":"27283:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1539,"type":"uint256","value":"_nonce"},"id":1580,"name":"Identifier","src":"27291:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1417,"type":"uint256","value":"relayNonce"},"id":1581,"name":"Identifier","src":"27301:10:31"}],"id":1582,"name":"BinaryOperation","src":"27291:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"7478207265706c6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"tx replay\"","value":"tx replay"},"id":1583,"name":"Literal","src":"27313:11:31"}],"id":1584,"name":"FunctionCall","src":"27283:42:31"}],"id":1585,"name":"ExpressionStatement","src":"27283:42:31"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1635,"type":"function ()","value":"_increaseRelayNonce"},"id":1586,"name":"Identifier","src":"27335:19:31"}],"id":1587,"name":"FunctionCall","src":"27335:21:31"}],"id":1588,"name":"ExpressionStatement","src":"27335:21:31"},{"attributes":{"assignments":[1590,1592]},"children":[{"attributes":{"constant":false,"name":"success","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1589,"name":"ElementaryTypeName","src":"27424:4:31"}],"id":1590,"name":"VariableDeclaration","src":"27424:12:31"},{"attributes":{"constant":false,"name":"returndata","scope":1612,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1591,"name":"ElementaryTypeName","src":"27438:5:31"}],"id":1592,"name":"VariableDeclaration","src":"27438:23:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2227","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1593,"name":"ElementaryTypeNameExpression","src":"27465:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10247,"type":"contract Wallet","value":"this"},"id":1594,"name":"Identifier","src":"27473:4:31"}],"id":1595,"name":"FunctionCall","src":"27465:13:31"}],"id":1596,"name":"MemberAccess","src":"27465:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1541,"type":"bytes calldata","value":"_data"},"id":1597,"name":"Identifier","src":"27484:5:31"}],"id":1598,"name":"FunctionCall","src":"27465:25:31"}],"id":1599,"name":"VariableDeclarationStatement","src":"27423:67:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1600,"name":"Identifier","src":"27500:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1590,"type":"bool","value":"success"},"id":1601,"name":"Identifier","src":"27508:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":1602,"name":"ElementaryTypeNameExpression","src":"27517:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1592,"type":"bytes memory","value":"returndata"},"id":1603,"name":"Identifier","src":"27524:10:31"}],"id":1604,"name":"FunctionCall","src":"27517:18:31"}],"id":1605,"name":"FunctionCall","src":"27500:36:31"}],"id":1606,"name":"ExpressionStatement","src":"27500:36:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1357,"type":"function (bytes memory,bytes memory)","value":"ExecutedRelayedTransaction"},"id":1607,"name":"Identifier","src":"27552:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1541,"type":"bytes calldata","value":"_data"},"id":1608,"name":"Identifier","src":"27579:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1592,"type":"bytes memory","value":"returndata"},"id":1609,"name":"Identifier","src":"27586:10:31"}],"id":1610,"name":"FunctionCall","src":"27552:45:31"}],"id":1611,"name":"EmitStatement","src":"27547:50:31"}],"id":1612,"name":"Block","src":"26617:987:31"}],"id":1613,"name":"FunctionDefinition","src":"26493:1111:31"},{"attributes":{"documentation":"@dev This allows the user to cancel a transaction that was unexpectedly delayed by the relayer","implemented":true,"isConstructor":false,"kind":"function","name":"increaseRelayNonce","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1614,"name":"ParameterList","src":"27740:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":1617,"name":"ParameterList","src":"27762:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":1615,"name":"Identifier","src":"27752:9:31"}],"id":1616,"name":"ModifierInvocation","src":"27752:9:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1635,"type":"function ()","value":"_increaseRelayNonce"},"id":1618,"name":"Identifier","src":"27772:19:31"}],"id":1619,"name":"FunctionCall","src":"27772:21:31"}],"id":1620,"name":"ExpressionStatement","src":"27772:21:31"}],"id":1621,"name":"Block","src":"27762:38:31"}],"id":1622,"name":"FunctionDefinition","src":"27713:87:31"},{"attributes":{"documentation":"@dev This bumps the relayNonce and emits an event accordingly","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_increaseRelayNonce","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1623,"name":"ParameterList","src":"27904:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":1624,"name":"ParameterList","src":"27916:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1417,"type":"uint256","value":"relayNonce"},"id":1625,"name":"Identifier","src":"27926:10:31"}],"id":1626,"name":"UnaryOperation","src":"27926:12:31"}],"id":1627,"name":"ExpressionStatement","src":"27926:12:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1373,"type":"function (address,uint256)","value":"IncreasedRelayNonce"},"id":1628,"name":"Identifier","src":"27954:19:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1629,"name":"Identifier","src":"27974:3:31"}],"id":1630,"name":"MemberAccess","src":"27974:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1417,"type":"uint256","value":"relayNonce"},"id":1631,"name":"Identifier","src":"27986:10:31"}],"id":1632,"name":"FunctionCall","src":"27954:43:31"}],"id":1633,"name":"EmitStatement","src":"27949:48:31"}],"id":1634,"name":"Block","src":"27916:88:31"}],"id":1635,"name":"FunctionDefinition","src":"27876:128:31"},{"attributes":{"documentation":"@dev Implements EIP-1271: receives the raw data (bytes)\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":1666,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1636,"name":"ElementaryTypeName","src":"28325:5:31"}],"id":1637,"name":"VariableDeclaration","src":"28325:20:31"},{"attributes":{"constant":false,"name":"_signature","scope":1666,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1638,"name":"ElementaryTypeName","src":"28347:5:31"}],"id":1639,"name":"VariableDeclaration","src":"28347:25:31"}],"id":1640,"name":"ParameterList","src":"28324:49:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1666,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1641,"name":"ElementaryTypeName","src":"28397:6:31"}],"id":1642,"name":"VariableDeclaration","src":"28397:6:31"}],"id":1643,"name":"ParameterList","src":"28396:8:31"},{"children":[{"attributes":{"assignments":[1645]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1665,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1644,"name":"ElementaryTypeName","src":"28415:7:31"}],"id":1645,"name":"VariableDeclaration","src":"28415:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1646,"name":"Identifier","src":"28434:9:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":1647,"name":"Identifier","src":"28444:3:31"}],"id":1648,"name":"MemberAccess","src":"28444:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1637,"type":"bytes calldata","value":"_data"},"id":1649,"name":"Identifier","src":"28461:5:31"}],"id":1650,"name":"FunctionCall","src":"28444:23:31"}],"id":1651,"name":"FunctionCall","src":"28434:34:31"}],"id":1652,"name":"VariableDeclarationStatement","src":"28415:53:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1653,"name":"Identifier","src":"28533:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2160,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1654,"name":"Identifier","src":"28541:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1645,"type":"bytes32","value":"dataHash"},"id":1655,"name":"Identifier","src":"28558:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1639,"type":"bytes calldata","value":"_signature"},"id":1656,"name":"Identifier","src":"28568:10:31"}],"id":1657,"name":"FunctionCall","src":"28541:38:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"bytes4","value":"_EIP_1654"},"id":1658,"name":"Identifier","src":"28583:9:31"}],"id":1659,"name":"BinaryOperation","src":"28541:51:31"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1660,"name":"Literal","src":"28594:15:31"}],"id":1661,"name":"FunctionCall","src":"28533:77:31"}],"id":1662,"name":"ExpressionStatement","src":"28533:77:31"},{"attributes":{"functionReturnParameters":1643},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"bytes4","value":"_EIP_1271"},"id":1663,"name":"Identifier","src":"28627:9:31"}],"id":1664,"name":"Return","src":"28620:16:31"}],"id":1665,"name":"Block","src":"28405:238:31"}],"id":1666,"name":"FunctionDefinition","src":"28299:344:31"},{"attributes":{"documentation":"@return licence contract node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceNode","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1667,"name":"ParameterList","src":"28726:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1674,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1668,"name":"ElementaryTypeName","src":"28752:7:31"}],"id":1669,"name":"VariableDeclaration","src":"28752:7:31"}],"id":1670,"name":"ParameterList","src":"28751:9:31"},{"children":[{"attributes":{"functionReturnParameters":1670},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1419,"type":"bytes32","value":"_licenceNode"},"id":1671,"name":"Identifier","src":"28778:12:31"}],"id":1672,"name":"Return","src":"28771:19:31"}],"id":1673,"name":"Block","src":"28761:36:31"}],"id":1674,"name":"FunctionDefinition","src":"28706:91:31"},{"attributes":{"documentation":"@dev Load a token card with the specified asset amount.\n @dev the amount send should be inclusive of the percent licence.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"loadTokenCard","scope":2227,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":1750,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1675,"name":"ElementaryTypeName","src":"29116:7:31"}],"id":1676,"name":"VariableDeclaration","src":"29116:14:31"},{"attributes":{"constant":false,"name":"_amount","scope":1750,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1677,"name":"ElementaryTypeName","src":"29132:7:31"}],"id":1678,"name":"VariableDeclaration","src":"29132:15:31"}],"id":1679,"name":"ParameterList","src":"29115:33:31"},{"attributes":{"parameters":[null]},"children":[],"id":1682,"name":"ParameterList","src":"29182:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1680,"name":"Identifier","src":"29166:15:31"}],"id":1681,"name":"ModifierInvocation","src":"29166:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96e30e7359d705e51778d9ae05179a78cb34ab813d824e29a3cd9fe209b16a67","typeString":"literal_string \"token not loadable\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1683,"name":"Identifier","src":"29261:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3274,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":1684,"name":"Identifier","src":"29269:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1685,"name":"Identifier","src":"29286:6:31"}],"id":1686,"name":"FunctionCall","src":"29269:24:31"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f74206c6f616461626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not loadable\"","value":"token not loadable"},"id":1687,"name":"Literal","src":"29295:20:31"}],"id":1688,"name":"FunctionCall","src":"29261:55:31"}],"id":1689,"name":"ExpressionStatement","src":"29261:55:31"},{"attributes":{"assignments":[1691]},"children":[{"attributes":{"constant":false,"name":"stablecoinValue","scope":1749,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1690,"name":"ElementaryTypeName","src":"29379:7:31"}],"id":1691,"name":"VariableDeclaration","src":"29379:23:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2006,"type":"function (address,uint256) view returns (uint256)","value":"convertToStablecoin"},"id":1692,"name":"Identifier","src":"29405:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1693,"name":"Identifier","src":"29425:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1694,"name":"Identifier","src":"29433:7:31"}],"id":1695,"name":"FunctionCall","src":"29405:36:31"}],"id":1696,"name":"VariableDeclarationStatement","src":"29379:62:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1697,"name":"Identifier","src":"29571:10:31"}],"id":1699,"name":"MemberAccess","src":"29571:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1691,"type":"uint256","value":"stablecoinValue"},"id":1700,"name":"Identifier","src":"29596:15:31"}],"id":1701,"name":"FunctionCall","src":"29571:41:31"}],"id":1702,"name":"ExpressionStatement","src":"29571:41:31"},{"attributes":{"assignments":[1704]},"children":[{"attributes":{"constant":false,"name":"licenceAddress","scope":1749,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1703,"name":"ElementaryTypeName","src":"29669:7:31"}],"id":1704,"name":"VariableDeclaration","src":"29669:22:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1705,"name":"Identifier","src":"29694:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1419,"type":"bytes32","value":"_licenceNode"},"id":1706,"name":"Identifier","src":"29706:12:31"}],"id":1707,"name":"FunctionCall","src":"29694:25:31"}],"id":1708,"name":"VariableDeclarationStatement","src":"29669:50:31"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1709,"name":"Identifier","src":"29733:6:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1710,"name":"ElementaryTypeNameExpression","src":"29743:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1711,"name":"Literal","src":"29751:1:31"}],"id":1712,"name":"FunctionCall","src":"29743:10:31"}],"id":1713,"name":"BinaryOperation","src":"29733:20:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeApprove","referencedDeclaration":2489,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":1714,"name":"Identifier","src":"29769:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1715,"name":"Identifier","src":"29775:6:31"}],"id":1716,"name":"FunctionCall","src":"29769:13:31"}],"id":1717,"name":"MemberAccess","src":"29769:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1704,"type":"address","value":"licenceAddress"},"id":1718,"name":"Identifier","src":"29795:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1719,"name":"Identifier","src":"29811:7:31"}],"id":1720,"name":"FunctionCall","src":"29769:50:31"}],"id":1721,"name":"ExpressionStatement","src":"29769:50:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":3343,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3349,"type":"type(contract ILicence)","value":"ILicence"},"id":1722,"name":"Identifier","src":"29833:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1704,"type":"address","value":"licenceAddress"},"id":1723,"name":"Identifier","src":"29842:14:31"}],"id":1724,"name":"FunctionCall","src":"29833:24:31"}],"id":1725,"name":"MemberAccess","src":"29833:29:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1726,"name":"Identifier","src":"29863:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1727,"name":"Identifier","src":"29871:7:31"}],"id":1728,"name":"FunctionCall","src":"29833:46:31"}],"id":1729,"name":"ExpressionStatement","src":"29833:46:31"}],"id":1730,"name":"Block","src":"29755:135:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (address,uint256) payable external","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (address,uint256) payable external)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":3343,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3349,"type":"type(contract ILicence)","value":"ILicence"},"id":1731,"name":"Identifier","src":"29910:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1704,"type":"address","value":"licenceAddress"},"id":1732,"name":"Identifier","src":"29919:14:31"}],"id":1733,"name":"FunctionCall","src":"29910:24:31"}],"id":1734,"name":"MemberAccess","src":"29910:29:31"}],"id":1735,"name":"MemberAccess","src":"29910:35:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1736,"name":"Identifier","src":"29946:7:31"}],"id":1737,"name":"FunctionCall","src":"29910:44:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1738,"name":"Identifier","src":"29955:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1739,"name":"Identifier","src":"29963:7:31"}],"id":1740,"name":"FunctionCall","src":"29910:61:31"}],"id":1741,"name":"ExpressionStatement","src":"29910:61:31"}],"id":1742,"name":"Block","src":"29896:86:31"}],"id":1743,"name":"IfStatement","src":"29729:253:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1379,"type":"function (address,uint256)","value":"LoadedTokenCard"},"id":1744,"name":"Identifier","src":"29997:15:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1745,"name":"Identifier","src":"30013:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1746,"name":"Identifier","src":"30021:7:31"}],"id":1747,"name":"FunctionCall","src":"29997:32:31"}],"id":1748,"name":"EmitStatement","src":"29992:37:31"}],"id":1749,"name":"Block","src":"29182:854:31"}],"id":1750,"name":"FunctionDefinition","src":"29093:943:31"},{"attributes":{"documentation":"@dev Checks for interface support based on ERC165.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2227,"stateMutability":"view","superFunction":2336,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_interfaceID","scope":1762,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1751,"name":"ElementaryTypeName","src":"30128:6:31"}],"id":1752,"name":"VariableDeclaration","src":"30128:19:31"}],"id":1753,"name":"ParameterList","src":"30127:21:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1762,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1754,"name":"ElementaryTypeName","src":"30172:4:31"}],"id":1755,"name":"VariableDeclaration","src":"30172:4:31"}],"id":1756,"name":"ParameterList","src":"30171:6:31"},{"children":[{"attributes":{"functionReturnParameters":1756},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1752,"type":"bytes4","value":"_interfaceID"},"id":1757,"name":"Identifier","src":"30195:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1415,"type":"bytes4","value":"_ERC165_INTERFACE_ID"},"id":1758,"name":"Identifier","src":"30211:20:31"}],"id":1759,"name":"BinaryOperation","src":"30195:36:31"}],"id":1760,"name":"Return","src":"30188:43:31"}],"id":1761,"name":"Block","src":"30178:60:31"}],"id":1762,"name":"FunctionDefinition","src":"30101:137:31"},{"attributes":{"documentation":"@dev Refill owner's gas balance, revert if the transaction amount is too large\n @param _amount is the amount of ether to transfer to the owner account in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"topUpGas","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1793,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1763,"name":"ElementaryTypeName","src":"30436:7:31"}],"id":1764,"name":"VariableDeclaration","src":"30436:15:31"}],"id":1765,"name":"ParameterList","src":"30435:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1771,"name":"ParameterList","src":"30503:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1470,"type":"modifier (uint256)","value":"isNotZero"},"id":1766,"name":"Identifier","src":"30462:9:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"_amount"},"id":1767,"name":"Identifier","src":"30472:7:31"}],"id":1768,"name":"ModifierInvocation","src":"30462:18:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":79,"type":"modifier ()","value":"onlyOwnerOrController"},"id":1769,"name":"Identifier","src":"30481:21:31"}],"id":1770,"name":"ModifierInvocation","src":"30481:21:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1772,"name":"Identifier","src":"30633:14:31"}],"id":1774,"name":"MemberAccess","src":"30633:28:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"_amount"},"id":1775,"name":"Identifier","src":"30662:7:31"}],"id":1776,"name":"FunctionCall","src":"30633:37:31"}],"id":1777,"name":"ExpressionStatement","src":"30633:37:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3059,"type":"function () view returns (address payable)","value":"owner"},"id":1778,"name":"Identifier","src":"30717:5:31"}],"id":1779,"name":"FunctionCall","src":"30717:7:31"}],"id":1780,"name":"MemberAccess","src":"30717:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"_amount"},"id":1781,"name":"Identifier","src":"30734:7:31"}],"id":1782,"name":"FunctionCall","src":"30717:25:31"}],"id":1783,"name":"ExpressionStatement","src":"30717:25:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1393,"type":"function (address,address,uint256)","value":"ToppedUpGas"},"id":1784,"name":"Identifier","src":"30795:11:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1785,"name":"Identifier","src":"30807:3:31"}],"id":1786,"name":"MemberAccess","src":"30807:10:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3059,"type":"function () view returns (address payable)","value":"owner"},"id":1787,"name":"Identifier","src":"30819:5:31"}],"id":1788,"name":"FunctionCall","src":"30819:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"_amount"},"id":1789,"name":"Identifier","src":"30828:7:31"}],"id":1790,"name":"FunctionCall","src":"30795:41:31"}],"id":1791,"name":"EmitStatement","src":"30790:46:31"}],"id":1792,"name":"Block","src":"30503:340:31"}],"id":1793,"name":"FunctionDefinition","src":"30418:425:31"},{"attributes":{"documentation":"@dev This function allows for the wallet to send a batch of transactions instead of one,\n it calls executeTransaction() so that the daily limit is enforced.\n @param _transactionBatch data encoding the transactions to be sent,\n following executeTransaction's format i.e. (destination, value, data)","implemented":true,"isConstructor":false,"kind":"function","name":"batchExecuteTransaction","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_transactionBatch","scope":1876,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1794,"name":"ElementaryTypeName","src":"31208:5:31"}],"id":1795,"name":"VariableDeclaration","src":"31208:30:31"}],"id":1796,"name":"ParameterList","src":"31207:32:31"},{"attributes":{"parameters":[null]},"children":[],"id":1799,"name":"ParameterList","src":"31263:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1797,"name":"Identifier","src":"31247:15:31"}],"id":1798,"name":"ModifierInvocation","src":"31247:15:31"},{"children":[{"attributes":{"assignments":[1801]},"children":[{"attributes":{"constant":false,"name":"batchLength","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1800,"name":"ElementaryTypeName","src":"31273:7:31"}],"id":1801,"name":"VariableDeclaration","src":"31273:19:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"bytes memory","value":"_transactionBatch"},"id":1802,"name":"Identifier","src":"31295:17:31"}],"id":1803,"name":"MemberAccess","src":"31295:24:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1804,"name":"Literal","src":"31322:2:31"}],"id":1805,"name":"BinaryOperation","src":"31295:29:31"}],"id":1806,"name":"VariableDeclarationStatement","src":"31273:51:31"},{"attributes":{"assignments":[1808]},"children":[{"attributes":{"constant":false,"name":"remainingBytesLength","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1807,"name":"ElementaryTypeName","src":"31368:7:31"}],"id":1808,"name":"VariableDeclaration","src":"31368:28:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"bytes memory","value":"_transactionBatch"},"id":1809,"name":"Identifier","src":"31399:17:31"}],"id":1810,"name":"MemberAccess","src":"31399:24:31"}],"id":1811,"name":"VariableDeclarationStatement","src":"31368:55:31"},{"attributes":{"assignments":[1813]},"children":[{"attributes":{"constant":false,"name":"pos","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1812,"name":"ElementaryTypeName","src":"31468:7:31"}],"id":1813,"name":"VariableDeclaration","src":"31468:11:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1814,"name":"Literal","src":"31482:2:31"}],"id":1815,"name":"VariableDeclarationStatement","src":"31468:16:31"},{"attributes":{"assignments":[1817],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"destination","scope":1875,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1816,"name":"ElementaryTypeName","src":"31569:7:31"}],"id":1817,"name":"VariableDeclaration","src":"31569:19:31"}],"id":1818,"name":"VariableDeclarationStatement","src":"31569:19:31"},{"attributes":{"assignments":[1820],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1819,"name":"ElementaryTypeName","src":"31621:7:31"}],"id":1820,"name":"VariableDeclaration","src":"31621:13:31"}],"id":1821,"name":"VariableDeclarationStatement","src":"31621:13:31"},{"attributes":{"assignments":[1823],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dataLength","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1822,"name":"ElementaryTypeName","src":"31665:7:31"}],"id":1823,"name":"VariableDeclaration","src":"31665:18:31"}],"id":1824,"name":"VariableDeclarationStatement","src":"31665:18:31"},{"attributes":{"assignments":[1826],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"data","scope":1875,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1825,"name":"ElementaryTypeName","src":"31723:5:31"}],"id":1826,"name":"VariableDeclaration","src":"31723:17:31"}],"id":1827,"name":"VariableDeclarationStatement","src":"31723:17:31"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"pos"},"id":1828,"name":"Identifier","src":"31771:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1801,"type":"uint256","value":"batchLength"},"id":1829,"name":"Identifier","src":"31777:11:31"}],"id":1830,"name":"BinaryOperation","src":"31771:17:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1808,"type":"uint256","value":"remainingBytesLength"},"id":1831,"name":"Identifier","src":"31914:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1808,"type":"uint256","value":"remainingBytesLength"},"id":1832,"name":"Identifier","src":"31937:20:31"}],"id":1833,"name":"MemberAccess","src":"31937:24:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":1834,"name":"Literal","src":"31962:2:31"}],"id":1835,"name":"FunctionCall","src":"31937:28:31"}],"id":1836,"name":"Assignment","src":"31914:51:31"}],"id":1837,"name":"ExpressionStatement","src":"31914:51:31"},{"attributes":{"externalReferences":[{"destination":{"declaration":1817,"isOffset":false,"isSlot":false,"src":"32122:11:31","valueSize":1}},{"_transactionBatch":{"declaration":1795,"isOffset":false,"isSlot":false,"src":"32155:17:31","valueSize":1}},{"pos":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"32174:3:31","valueSize":1}},{"dataLength":{"declaration":1823,"isOffset":false,"isSlot":false,"src":"32481:10:31","valueSize":1}},{"value":{"declaration":1820,"isOffset":false,"isSlot":false,"src":"32265:5:31","valueSize":1}},{"pos":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"32307:3:31","valueSize":1}},{"_transactionBatch":{"declaration":1795,"isOffset":false,"isSlot":false,"src":"32284:17:31","valueSize":1}},{"data":{"declaration":1826,"isOffset":false,"isSlot":false,"src":"32555:4:31","valueSize":1}},{"pos":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"32528:3:31","valueSize":1}},{"_transactionBatch":{"declaration":1795,"isOffset":false,"isSlot":false,"src":"32505:17:31","valueSize":1}},{"pos":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"32590:3:31","valueSize":1}},{"_transactionBatch":{"declaration":1795,"isOffset":false,"isSlot":false,"src":"32567:17:31","valueSize":1}}],"operations":"{\n destination := shr(96, mload(add(_transactionBatch, pos)))\n value := mload(add(_transactionBatch, add(pos, 20)))\n dataLength := mload(add(_transactionBatch, add(pos, 52)))\n data := add(_transactionBatch, add(pos, 52))\n}"},"children":[],"id":1838,"name":"InlineAssembly","src":"31979:634:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"pos"},"id":1839,"name":"Identifier","src":"32703:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"pos"},"id":1840,"name":"Identifier","src":"32709:3:31"}],"id":1841,"name":"MemberAccess","src":"32709:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"uint256","value":"dataLength"},"id":1842,"name":"Identifier","src":"32717:10:31"}],"id":1843,"name":"FunctionCall","src":"32709:19:31"}],"id":1844,"name":"MemberAccess","src":"32709:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":1845,"name":"Literal","src":"32733:2:31"}],"id":1846,"name":"FunctionCall","src":"32709:27:31"}],"id":1847,"name":"Assignment","src":"32703:33:31"}],"id":1848,"name":"ExpressionStatement","src":"32703:33:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d4d7e869602fd07d121f8992a03b812eac20f2f3831f876bce9993aae915a2b","typeString":"literal_string \"out of bounds\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1849,"name":"Identifier","src":"32841:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"pos"},"id":1850,"name":"Identifier","src":"32849:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1801,"type":"uint256","value":"batchLength"},"id":1851,"name":"Identifier","src":"32856:11:31"}],"id":1852,"name":"BinaryOperation","src":"32849:18:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f6620626f756e6473","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of bounds\"","value":"out of bounds"},"id":1853,"name":"Literal","src":"32869:15:31"}],"id":1854,"name":"FunctionCall","src":"32841:44:31"}],"id":1855,"name":"ExpressionStatement","src":"32841:44:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"uint256","value":"dataLength"},"id":1856,"name":"Identifier","src":"32956:10:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1857,"name":"Literal","src":"32970:1:31"}],"id":1858,"name":"BinaryOperation","src":"32956:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1826,"type":"bytes memory","value":"data"},"id":1859,"name":"Identifier","src":"32991:4:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":1860,"name":"ElementaryTypeNameExpression","src":"32998:5:31"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":1861,"name":"Literal","src":"33004:2:31"}],"id":1862,"name":"FunctionCall","src":"32998:9:31"}],"id":1863,"name":"Assignment","src":"32991:16:31"}],"id":1864,"name":"ExpressionStatement","src":"32991:16:31"}],"id":1865,"name":"Block","src":"32973:49:31"}],"id":1866,"name":"IfStatement","src":"32952:70:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2134,"type":"function (address,uint256,bytes memory) returns (bytes memory)","value":"executeTransaction"},"id":1867,"name":"Identifier","src":"33130:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1817,"type":"address","value":"destination"},"id":1868,"name":"Identifier","src":"33149:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1820,"type":"uint256","value":"value"},"id":1869,"name":"Identifier","src":"33162:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1826,"type":"bytes memory","value":"data"},"id":1870,"name":"Identifier","src":"33169:4:31"}],"id":1871,"name":"FunctionCall","src":"33130:44:31"}],"id":1872,"name":"ExpressionStatement","src":"33130:44:31"}],"id":1873,"name":"Block","src":"31790:1395:31"}],"id":1874,"name":"WhileStatement","src":"31764:1421:31"}],"id":1875,"name":"Block","src":"31263:1928:31"}],"id":1876,"name":"FunctionDefinition","src":"31175:2016:31"},{"attributes":{"documentation":"@dev Convert ERC20 token amount to the corresponding ether amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToEther","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1916,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1877,"name":"ElementaryTypeName","src":"33402:7:31"}],"id":1878,"name":"VariableDeclaration","src":"33402:14:31"},{"attributes":{"constant":false,"name":"_amount","scope":1916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1879,"name":"ElementaryTypeName","src":"33418:7:31"}],"id":1880,"name":"VariableDeclaration","src":"33418:15:31"}],"id":1881,"name":"ParameterList","src":"33401:33:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1882,"name":"ElementaryTypeName","src":"33456:7:31"}],"id":1883,"name":"VariableDeclaration","src":"33456:7:31"}],"id":1884,"name":"ParameterList","src":"33455:9:31"},{"children":[{"attributes":{"assignments":[null,1886,1888,1890,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":1915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1885,"name":"ElementaryTypeName","src":"33545:7:31"}],"id":1886,"name":"VariableDeclaration","src":"33545:17:31"},{"attributes":{"constant":false,"name":"rate","scope":1915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1887,"name":"ElementaryTypeName","src":"33564:7:31"}],"id":1888,"name":"VariableDeclaration","src":"33564:12:31"},{"attributes":{"constant":false,"name":"available","scope":1915,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1889,"name":"ElementaryTypeName","src":"33578:4:31"}],"id":1890,"name":"VariableDeclaration","src":"33578:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":1891,"name":"Identifier","src":"33602:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1878,"type":"address","value":"_token"},"id":1892,"name":"Identifier","src":"33616:6:31"}],"id":1893,"name":"FunctionCall","src":"33602:21:31"}],"id":1894,"name":"VariableDeclarationStatement","src":"33542:81:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"bool","value":"available"},"id":1895,"name":"Identifier","src":"33703:9:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1896,"name":"Identifier","src":"33728:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1888,"type":"uint256","value":"rate"},"id":1897,"name":"Identifier","src":"33736:4:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1898,"name":"Literal","src":"33744:1:31"}],"id":1899,"name":"BinaryOperation","src":"33736:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":1900,"name":"Literal","src":"33747:8:31"}],"id":1901,"name":"FunctionCall","src":"33728:28:31"}],"id":1902,"name":"ExpressionStatement","src":"33728:28:31"},{"attributes":{"functionReturnParameters":1884},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2720,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2695,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1880,"type":"uint256","value":"_amount"},"id":1903,"name":"Identifier","src":"33861:7:31"}],"id":1904,"name":"MemberAccess","src":"33861:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1888,"type":"uint256","value":"rate"},"id":1905,"name":"Identifier","src":"33873:4:31"}],"id":1906,"name":"FunctionCall","src":"33861:17:31"}],"id":1907,"name":"MemberAccess","src":"33861:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"uint256","value":"magnitude"},"id":1908,"name":"Identifier","src":"33883:9:31"}],"id":1909,"name":"FunctionCall","src":"33861:32:31"}],"id":1910,"name":"Return","src":"33854:39:31"}],"id":1911,"name":"Block","src":"33714:190:31"}],"id":1912,"name":"IfStatement","src":"33699:205:31"},{"attributes":{"functionReturnParameters":1884},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1913,"name":"Literal","src":"33920:1:31"}],"id":1914,"name":"Return","src":"33913:8:31"}],"id":1915,"name":"Block","src":"33465:463:31"}],"id":1916,"name":"FunctionDefinition","src":"33378:550:31"},{"attributes":{"documentation":"@dev Convert ether or ERC20 token amount to the corresponding stablecoin amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToStablecoin","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2006,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1917,"name":"ElementaryTypeName","src":"34158:7:31"}],"id":1918,"name":"VariableDeclaration","src":"34158:14:31"},{"attributes":{"constant":false,"name":"_amount","scope":2006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1919,"name":"ElementaryTypeName","src":"34174:7:31"}],"id":1920,"name":"VariableDeclaration","src":"34174:15:31"}],"id":1921,"name":"ParameterList","src":"34157:33:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1922,"name":"ElementaryTypeName","src":"34212:7:31"}],"id":1923,"name":"VariableDeclaration","src":"34212:7:31"}],"id":1924,"name":"ParameterList","src":"34211:9:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1918,"type":"address","value":"_token"},"id":1925,"name":"Identifier","src":"34332:6:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3288,"type":"function () view returns (address)","value":"_stablecoin"},"id":1926,"name":"Identifier","src":"34342:11:31"}],"id":1927,"name":"FunctionCall","src":"34342:13:31"}],"id":1928,"name":"BinaryOperation","src":"34332:23:31"},{"children":[{"attributes":{"functionReturnParameters":1924},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1920,"type":"uint256","value":"_amount"},"id":1929,"name":"Identifier","src":"34378:7:31"}],"id":1930,"name":"Return","src":"34371:14:31"}],"id":1931,"name":"Block","src":"34357:39:31"}],"id":1932,"name":"IfStatement","src":"34328:68:31"},{"attributes":{"assignments":[1934]},"children":[{"attributes":{"constant":false,"name":"amountToSend","scope":2005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1933,"name":"ElementaryTypeName","src":"34405:7:31"}],"id":1934,"name":"VariableDeclaration","src":"34405:20:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1920,"type":"uint256","value":"_amount"},"id":1935,"name":"Identifier","src":"34428:7:31"}],"id":1936,"name":"VariableDeclarationStatement","src":"34405:30:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1918,"type":"address","value":"_token"},"id":1937,"name":"Identifier","src":"34482:6:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1938,"name":"ElementaryTypeNameExpression","src":"34492:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1939,"name":"Literal","src":"34500:1:31"}],"id":1940,"name":"FunctionCall","src":"34492:10:31"}],"id":1941,"name":"BinaryOperation","src":"34482:20:31"},{"children":[{"attributes":{"assignments":[null,1943,1945,1947,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":1974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1942,"name":"ElementaryTypeName","src":"34654:7:31"}],"id":1943,"name":"VariableDeclaration","src":"34654:17:31"},{"attributes":{"constant":false,"name":"rate","scope":1974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1944,"name":"ElementaryTypeName","src":"34673:7:31"}],"id":1945,"name":"VariableDeclaration","src":"34673:12:31"},{"attributes":{"constant":false,"name":"available","scope":1974,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1946,"name":"ElementaryTypeName","src":"34687:4:31"}],"id":1947,"name":"VariableDeclaration","src":"34687:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":1948,"name":"Identifier","src":"34711:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1918,"type":"address","value":"_token"},"id":1949,"name":"Identifier","src":"34725:6:31"}],"id":1950,"name":"FunctionCall","src":"34711:21:31"}],"id":1951,"name":"VariableDeclarationStatement","src":"34651:81:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1952,"name":"Identifier","src":"34835:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"bool","value":"available"},"id":1953,"name":"Identifier","src":"34843:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":1954,"name":"Literal","src":"34854:21:31"}],"id":1955,"name":"FunctionCall","src":"34835:41:31"}],"id":1956,"name":"ExpressionStatement","src":"34835:41:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1957,"name":"Identifier","src":"34890:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"uint256","value":"rate"},"id":1958,"name":"Identifier","src":"34898:4:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1959,"name":"Literal","src":"34906:1:31"}],"id":1960,"name":"BinaryOperation","src":"34898:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":1961,"name":"Literal","src":"34909:8:31"}],"id":1962,"name":"FunctionCall","src":"34890:28:31"}],"id":1963,"name":"ExpressionStatement","src":"34890:28:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1934,"type":"uint256","value":"amountToSend"},"id":1964,"name":"Identifier","src":"35020:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2720,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2695,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1920,"type":"uint256","value":"_amount"},"id":1965,"name":"Identifier","src":"35035:7:31"}],"id":1966,"name":"MemberAccess","src":"35035:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"uint256","value":"rate"},"id":1967,"name":"Identifier","src":"35047:4:31"}],"id":1968,"name":"FunctionCall","src":"35035:17:31"}],"id":1969,"name":"MemberAccess","src":"35035:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1943,"type":"uint256","value":"magnitude"},"id":1970,"name":"Identifier","src":"35057:9:31"}],"id":1971,"name":"FunctionCall","src":"35035:32:31"}],"id":1972,"name":"Assignment","src":"35020:47:31"}],"id":1973,"name":"ExpressionStatement","src":"35020:47:31"}],"id":1974,"name":"Block","src":"34504:574:31"}],"id":1975,"name":"IfStatement","src":"34478:600:31"},{"attributes":{"assignments":[null,1977,1979,1981,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":2005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1976,"name":"ElementaryTypeName","src":"35195:7:31"}],"id":1977,"name":"VariableDeclaration","src":"35195:27:31"},{"attributes":{"constant":false,"name":"stablecoinRate","scope":2005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1978,"name":"ElementaryTypeName","src":"35224:7:31"}],"id":1979,"name":"VariableDeclaration","src":"35224:22:31"},{"attributes":{"constant":false,"name":"stablecoinAvailable","scope":2005,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1980,"name":"ElementaryTypeName","src":"35248:4:31"}],"id":1981,"name":"VariableDeclaration","src":"35248:24:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3153,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1982,"name":"Identifier","src":"35282:18:31"}],"id":1983,"name":"FunctionCall","src":"35282:20:31"}],"id":1984,"name":"VariableDeclarationStatement","src":"35192:110:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1985,"name":"Identifier","src":"35360:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1981,"type":"bool","value":"stablecoinAvailable"},"id":1986,"name":"Identifier","src":"35368:19:31"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":1987,"name":"Literal","src":"35389:21:31"}],"id":1988,"name":"FunctionCall","src":"35360:51:31"}],"id":1989,"name":"ExpressionStatement","src":"35360:51:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18bfbbfdaee82cb0eebcce67c25e7747234386e0bcace876720c3090918b5d3f","typeString":"literal_string \"stablecoin rate=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1990,"name":"Identifier","src":"35421:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1979,"type":"uint256","value":"stablecoinRate"},"id":1991,"name":"Identifier","src":"35429:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1992,"name":"Literal","src":"35447:1:31"}],"id":1993,"name":"BinaryOperation","src":"35429:19:31"},{"attributes":{"argumentTypes":null,"hexvalue":"737461626c65636f696e20726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"stablecoin rate=0\"","value":"stablecoin rate=0"},"id":1994,"name":"Literal","src":"35450:19:31"}],"id":1995,"name":"FunctionCall","src":"35421:49:31"}],"id":1996,"name":"ExpressionStatement","src":"35421:49:31"},{"attributes":{"functionReturnParameters":1924},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2720,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2695,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1934,"type":"uint256","value":"amountToSend"},"id":1997,"name":"Identifier","src":"35605:12:31"}],"id":1998,"name":"MemberAccess","src":"35605:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1977,"type":"uint256","value":"stablecoinMagnitude"},"id":1999,"name":"Identifier","src":"35622:19:31"}],"id":2000,"name":"FunctionCall","src":"35605:37:31"}],"id":2001,"name":"MemberAccess","src":"35605:41:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1979,"type":"uint256","value":"stablecoinRate"},"id":2002,"name":"Identifier","src":"35647:14:31"}],"id":2003,"name":"FunctionCall","src":"35605:57:31"}],"id":2004,"name":"Return","src":"35598:64:31"}],"id":2005,"name":"Block","src":"34221:1448:31"}],"id":2006,"name":"FunctionDefinition","src":"34129:1540:31"},{"attributes":{"documentation":"@dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses\n @param _destination address of the transaction\n @param _value ETH amount in wei\n @param _data transaction payload binary","implemented":true,"isConstructor":false,"kind":"function","name":"executeTransaction","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":2134,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2007,"name":"ElementaryTypeName","src":"35957:7:31"}],"id":2008,"name":"VariableDeclaration","src":"35957:20:31"},{"attributes":{"constant":false,"name":"_value","scope":2134,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2009,"name":"ElementaryTypeName","src":"35979:7:31"}],"id":2010,"name":"VariableDeclaration","src":"35979:14:31"},{"attributes":{"constant":false,"name":"_data","scope":2134,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2011,"name":"ElementaryTypeName","src":"35995:5:31"}],"id":2012,"name":"VariableDeclaration","src":"35995:18:31"}],"id":2013,"name":"ParameterList","src":"35956:58:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2134,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2016,"name":"ElementaryTypeName","src":"36047:5:31"}],"id":2017,"name":"VariableDeclaration","src":"36047:12:31"}],"id":2018,"name":"ParameterList","src":"36046:14:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2014,"name":"Identifier","src":"36022:15:31"}],"id":2015,"name":"ModifierInvocation","src":"36022:15:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2019,"name":"Identifier","src":"36266:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2020,"name":"Identifier","src":"36279:12:31"}],"id":2021,"name":"IndexAccess","src":"36266:26:31"}],"id":2022,"name":"UnaryOperation","src":"36265:27:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2023,"name":"Identifier","src":"36308:11:31"}],"id":2025,"name":"MemberAccess","src":"36308:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2010,"type":"uint256","value":"_value"},"id":2026,"name":"Identifier","src":"36334:6:31"}],"id":2027,"name":"FunctionCall","src":"36308:33:31"}],"id":2028,"name":"ExpressionStatement","src":"36308:33:31"}],"id":2029,"name":"Block","src":"36294:58:31"}],"id":2030,"name":"IfStatement","src":"36261:91:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":2245,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2031,"name":"ElementaryTypeNameExpression","src":"36453:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2032,"name":"Identifier","src":"36461:12:31"}],"id":2033,"name":"FunctionCall","src":"36453:21:31"}],"id":2034,"name":"MemberAccess","src":"36453:32:31"}],"id":2035,"name":"FunctionCall","src":"36453:34:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3242,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":2036,"name":"Identifier","src":"36491:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2037,"name":"Identifier","src":"36509:12:31"}],"id":2038,"name":"FunctionCall","src":"36491:31:31"}],"id":2039,"name":"BinaryOperation","src":"36453:69:31"},{"children":[{"attributes":{"assignments":[2041],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"to","scope":2103,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2040,"name":"ElementaryTypeName","src":"36625:7:31"}],"id":2041,"name":"VariableDeclaration","src":"36625:10:31"}],"id":2042,"name":"VariableDeclarationStatement","src":"36625:10:31"},{"attributes":{"assignments":[2044],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"amount","scope":2103,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2043,"name":"ElementaryTypeName","src":"36649:7:31"}],"id":2044,"name":"VariableDeclaration","src":"36649:14:31"}],"id":2045,"name":"VariableDeclarationStatement","src":"36649:14:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"address","value":"to"},"id":2046,"name":"Identifier","src":"36678:2:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2044,"type":"uint256","value":"amount"},"id":2047,"name":"Identifier","src":"36682:6:31"}],"id":2048,"name":"TupleExpression","src":"36677:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3226,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":2049,"name":"Identifier","src":"36692:27:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2050,"name":"Identifier","src":"36720:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2051,"name":"Identifier","src":"36734:5:31"}],"id":2052,"name":"FunctionCall","src":"36692:48:31"}],"id":2053,"name":"Assignment","src":"36677:63:31"}],"id":2054,"name":"ExpressionStatement","src":"36677:63:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2055,"name":"Identifier","src":"36759:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"address","value":"to"},"id":2056,"name":"Identifier","src":"36772:2:31"}],"id":2057,"name":"IndexAccess","src":"36759:16:31"}],"id":2058,"name":"UnaryOperation","src":"36758:17:31"},{"children":[{"attributes":{"assignments":[2060]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2059,"name":"ElementaryTypeName","src":"36962:7:31"}],"id":2060,"name":"VariableDeclaration","src":"36962:18:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1916,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2061,"name":"Identifier","src":"36983:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2062,"name":"Identifier","src":"36998:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2044,"type":"uint256","value":"amount"},"id":2063,"name":"Identifier","src":"37012:6:31"}],"id":2064,"name":"FunctionCall","src":"36983:36:31"}],"id":2065,"name":"VariableDeclarationStatement","src":"36962:57:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2066,"name":"Identifier","src":"37037:11:31"}],"id":2068,"name":"MemberAccess","src":"37037:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2060,"type":"uint256","value":"etherValue"},"id":2069,"name":"Identifier","src":"37063:10:31"}],"id":2070,"name":"FunctionCall","src":"37037:37:31"}],"id":2071,"name":"ExpressionStatement","src":"37037:37:31"}],"id":2072,"name":"Block","src":"36777:312:31"}],"id":2073,"name":"IfStatement","src":"36754:335:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"callOptionalReturn","referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":2074,"name":"Identifier","src":"37238:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2075,"name":"Identifier","src":"37244:12:31"}],"id":2076,"name":"FunctionCall","src":"37238:19:31"}],"id":2077,"name":"MemberAccess","src":"37238:38:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2078,"name":"Identifier","src":"37277:5:31"}],"id":2079,"name":"FunctionCall","src":"37238:45:31"}],"id":2080,"name":"ExpressionStatement","src":"37238:45:31"},{"attributes":{"assignments":[2082]},"children":[{"attributes":{"constant":false,"name":"b","scope":2103,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2081,"name":"ElementaryTypeName","src":"37387:5:31"}],"id":2082,"name":"VariableDeclaration","src":"37387:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2083,"name":"ElementaryTypeName","src":"37408:5:31"}],"id":2084,"name":"NewExpression","src":"37404:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2085,"name":"Literal","src":"37414:2:31"}],"id":2086,"name":"FunctionCall","src":"37404:13:31"}],"id":2087,"name":"VariableDeclarationStatement","src":"37387:30:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2082,"type":"bytes memory","value":"b"},"id":2088,"name":"Identifier","src":"37431:1:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2089,"name":"Literal","src":"37433:2:31"}],"id":2090,"name":"IndexAccess","src":"37431:5:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2091,"name":"Literal","src":"37439:4:31"}],"id":2092,"name":"Assignment","src":"37431:12:31"}],"id":2093,"name":"ExpressionStatement","src":"37431:12:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1367,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2094,"name":"Identifier","src":"37463:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2095,"name":"Identifier","src":"37483:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2010,"type":"uint256","value":"_value"},"id":2096,"name":"Identifier","src":"37497:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2097,"name":"Identifier","src":"37505:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2082,"type":"bytes memory","value":"b"},"id":2098,"name":"Identifier","src":"37512:1:31"}],"id":2099,"name":"FunctionCall","src":"37463:51:31"}],"id":2100,"name":"EmitStatement","src":"37458:56:31"},{"attributes":{"functionReturnParameters":2018},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2082,"type":"bytes memory","value":"b"},"id":2101,"name":"Identifier","src":"37535:1:31"}],"id":2102,"name":"Return","src":"37528:8:31"}],"id":2103,"name":"Block","src":"36524:1023:31"}],"id":2104,"name":"IfStatement","src":"36449:1098:31"},{"attributes":{"assignments":[2106,2108]},"children":[{"attributes":{"constant":false,"name":"success","scope":2133,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2105,"name":"ElementaryTypeName","src":"37558:4:31"}],"id":2106,"name":"VariableDeclaration","src":"37558:12:31"},{"attributes":{"constant":false,"name":"returndata","scope":2133,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2107,"name":"ElementaryTypeName","src":"37572:5:31"}],"id":2108,"name":"VariableDeclaration","src":"37572:23:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (bytes memory) payable returns (bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2109,"name":"Identifier","src":"37599:12:31"}],"id":2110,"name":"MemberAccess","src":"37599:17:31"}],"id":2111,"name":"MemberAccess","src":"37599:23:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2010,"type":"uint256","value":"_value"},"id":2112,"name":"Identifier","src":"37623:6:31"}],"id":2113,"name":"FunctionCall","src":"37599:31:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2114,"name":"Identifier","src":"37631:5:31"}],"id":2115,"name":"FunctionCall","src":"37599:38:31"}],"id":2116,"name":"VariableDeclarationStatement","src":"37557:80:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2117,"name":"Identifier","src":"37647:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2106,"type":"bool","value":"success"},"id":2118,"name":"Identifier","src":"37655:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":2119,"name":"ElementaryTypeNameExpression","src":"37664:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"returndata"},"id":2120,"name":"Identifier","src":"37671:10:31"}],"id":2121,"name":"FunctionCall","src":"37664:18:31"}],"id":2122,"name":"FunctionCall","src":"37647:36:31"}],"id":2123,"name":"ExpressionStatement","src":"37647:36:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1367,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2124,"name":"Identifier","src":"37699:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2125,"name":"Identifier","src":"37719:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2010,"type":"uint256","value":"_value"},"id":2126,"name":"Identifier","src":"37733:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2127,"name":"Identifier","src":"37741:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"returndata"},"id":2128,"name":"Identifier","src":"37748:10:31"}],"id":2129,"name":"FunctionCall","src":"37699:60:31"}],"id":2130,"name":"EmitStatement","src":"37694:65:31"},{"attributes":{"functionReturnParameters":2018},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"returndata"},"id":2131,"name":"Identifier","src":"37846:10:31"}],"id":2132,"name":"Return","src":"37839:17:31"}],"id":2133,"name":"Block","src":"36061:1802:31"}],"id":2134,"name":"FunctionDefinition","src":"35929:1934:31"},{"attributes":{"documentation":"@dev Implements EIP-1654: receives the hashed message(bytes32)\n https://github.com/ethereum/EIPs/issues/1654.md\n @param _hashedData Hashed data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _dataHash","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hashedData","scope":2160,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2135,"name":"ElementaryTypeName","src":"38172:7:31"}],"id":2136,"name":"VariableDeclaration","src":"38172:19:31"},{"attributes":{"constant":false,"name":"_signature","scope":2160,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2137,"name":"ElementaryTypeName","src":"38193:5:31"}],"id":2138,"name":"VariableDeclaration","src":"38193:23:31"}],"id":2139,"name":"ParameterList","src":"38171:46:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2160,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2140,"name":"ElementaryTypeName","src":"38239:6:31"}],"id":2141,"name":"VariableDeclaration","src":"38239:6:31"}],"id":2142,"name":"ParameterList","src":"38238:8:31"},{"children":[{"attributes":{"assignments":[2144]},"children":[{"attributes":{"constant":false,"name":"from","scope":2159,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2143,"name":"ElementaryTypeName","src":"38257:7:31"}],"id":2144,"name":"VariableDeclaration","src":"38257:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"recover","referencedDeclaration":2310,"type":"function (bytes32,bytes memory) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2136,"type":"bytes32","value":"_hashedData"},"id":2145,"name":"Identifier","src":"38272:11:31"}],"id":2146,"name":"MemberAccess","src":"38272:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2138,"type":"bytes memory","value":"_signature"},"id":2147,"name":"Identifier","src":"38292:10:31"}],"id":2148,"name":"FunctionCall","src":"38272:31:31"}],"id":2149,"name":"VariableDeclarationStatement","src":"38257:46:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2150,"name":"Identifier","src":"38313:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2151,"name":"Identifier","src":"38321:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2144,"type":"address","value":"from"},"id":2152,"name":"Identifier","src":"38330:4:31"}],"id":2153,"name":"FunctionCall","src":"38321:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":2154,"name":"Literal","src":"38337:19:31"}],"id":2155,"name":"FunctionCall","src":"38313:44:31"}],"id":2156,"name":"ExpressionStatement","src":"38313:44:31"},{"attributes":{"functionReturnParameters":2142},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"bytes4","value":"_EIP_1654"},"id":2157,"name":"Identifier","src":"38374:9:31"}],"id":2158,"name":"Return","src":"38367:16:31"}],"id":2159,"name":"Block","src":"38247:143:31"}],"id":2160,"name":"FunctionDefinition","src":"38146:244:31"},{"attributes":{"documentation":"@dev Transfers the specified asset to the recipient's address.\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"transfer","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2226,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2161,"name":"ElementaryTypeName","src":"38685:15:31"}],"id":2162,"name":"VariableDeclaration","src":"38685:19:31"},{"attributes":{"constant":false,"name":"_asset","scope":2226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2163,"name":"ElementaryTypeName","src":"38706:7:31"}],"id":2164,"name":"VariableDeclaration","src":"38706:14:31"},{"attributes":{"constant":false,"name":"_amount","scope":2226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2165,"name":"ElementaryTypeName","src":"38722:7:31"}],"id":2166,"name":"VariableDeclaration","src":"38722:15:31"}],"id":2167,"name":"ParameterList","src":"38684:54:31"},{"attributes":{"parameters":[null]},"children":[],"id":2173,"name":"ParameterList","src":"38781:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2168,"name":"Identifier","src":"38746:15:31"}],"id":2169,"name":"ModifierInvocation","src":"38746:15:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1470,"type":"modifier (uint256)","value":"isNotZero"},"id":2170,"name":"Identifier","src":"38762:9:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2171,"name":"Identifier","src":"38772:7:31"}],"id":2172,"name":"ModifierInvocation","src":"38762:18:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_680f6a32e9231c9e20746c0afa2d6c3a5c617d8ed04badee4157b674b70920f8","typeString":"literal_string \"destination=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2174,"name":"Identifier","src":"38852:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"address payable","value":"_to"},"id":2175,"name":"Identifier","src":"38860:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2176,"name":"ElementaryTypeNameExpression","src":"38867:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2177,"name":"Literal","src":"38875:1:31"}],"id":2178,"name":"FunctionCall","src":"38867:10:31"}],"id":2179,"name":"BinaryOperation","src":"38860:17:31"},{"attributes":{"argumentTypes":null,"hexvalue":"64657374696e6174696f6e3d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"destination=0\"","value":"destination=0"},"id":2180,"name":"Literal","src":"38879:15:31"}],"id":2181,"name":"FunctionCall","src":"38852:43:31"}],"id":2182,"name":"ExpressionStatement","src":"38852:43:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2183,"name":"Identifier","src":"38984:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"address payable","value":"_to"},"id":2184,"name":"Identifier","src":"38997:3:31"}],"id":2185,"name":"IndexAccess","src":"38984:17:31"}],"id":2186,"name":"UnaryOperation","src":"38983:18:31"},{"children":[{"attributes":{"assignments":[2188]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2187,"name":"ElementaryTypeName","src":"39080:7:31"}],"id":2188,"name":"VariableDeclaration","src":"39080:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2189,"name":"Identifier","src":"39101:7:31"}],"id":2190,"name":"VariableDeclarationStatement","src":"39080:28:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2164,"type":"address","value":"_asset"},"id":2191,"name":"Identifier","src":"39205:6:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2192,"name":"ElementaryTypeNameExpression","src":"39215:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2193,"name":"Literal","src":"39223:1:31"}],"id":2194,"name":"FunctionCall","src":"39215:10:31"}],"id":2195,"name":"BinaryOperation","src":"39205:20:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2188,"type":"uint256","value":"etherValue"},"id":2196,"name":"Identifier","src":"39245:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1916,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2197,"name":"Identifier","src":"39258:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2164,"type":"address","value":"_asset"},"id":2198,"name":"Identifier","src":"39273:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2199,"name":"Identifier","src":"39281:7:31"}],"id":2200,"name":"FunctionCall","src":"39258:31:31"}],"id":2201,"name":"Assignment","src":"39245:44:31"}],"id":2202,"name":"ExpressionStatement","src":"39245:44:31"}],"id":2203,"name":"Block","src":"39227:77:31"}],"id":2204,"name":"IfStatement","src":"39201:103:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2205,"name":"Identifier","src":"39515:11:31"}],"id":2207,"name":"MemberAccess","src":"39515:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2188,"type":"uint256","value":"etherValue"},"id":2208,"name":"Identifier","src":"39541:10:31"}],"id":2209,"name":"FunctionCall","src":"39515:37:31"}],"id":2210,"name":"ExpressionStatement","src":"39515:37:31"}],"id":2211,"name":"Block","src":"39003:560:31"}],"id":2212,"name":"IfStatement","src":"38979:584:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3328,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2213,"name":"Identifier","src":"39638:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"address payable","value":"_to"},"id":2214,"name":"Identifier","src":"39652:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2164,"type":"address","value":"_asset"},"id":2215,"name":"Identifier","src":"39657:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2216,"name":"Identifier","src":"39665:7:31"}],"id":2217,"name":"FunctionCall","src":"39638:35:31"}],"id":2218,"name":"ExpressionStatement","src":"39638:35:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1401,"type":"function (address,address,uint256)","value":"Transferred"},"id":2219,"name":"Identifier","src":"39724:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"address payable","value":"_to"},"id":2220,"name":"Identifier","src":"39736:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2164,"type":"address","value":"_asset"},"id":2221,"name":"Identifier","src":"39741:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2222,"name":"Identifier","src":"39749:7:31"}],"id":2223,"name":"FunctionCall","src":"39724:33:31"}],"id":2224,"name":"EmitStatement","src":"39719:38:31"}],"id":2225,"name":"Block","src":"38781:983:31"}],"id":2226,"name":"FunctionDefinition","src":"38667:1097:31"}],"id":2227,"name":"ContractDefinition","src":"22209:17557:31"}],"id":2228,"name":"SourceUnit","src":"757:39010:31"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ECDSA.sol:ECDSA":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","srcmap":"1392:3417:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1392:3417:2:-;;;;;;;;"},"externals/ERC165.sol:ERC165":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:5:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:6:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:8:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:9:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:9;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:9;-1:-1:-1;;;;;2567:10:9;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:9;;;;;;","srcmap-runtime":"1897:2174:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:15;;;;;;;;;:::i;:::-;;573:184:19;;;;;;;;;:::i;1721:953:16:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:12;;;;;;;;;:::i;:::-;;;;;;;;;612:169:18;;;;;;;;;:::i;505:166:14:-;;;;;;;;;:::i;980:228:13:-;;;;;;;;;:::i;3269:231:9:-;;;;;;;;;:::i;4901:153:15:-;;;;;;;;;:::i;974:127:19:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:15;;;;;;;;;:::i;582:292:12:-;;;;;;;;;:::i;844:101:17:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:13:-;;;;;;;;;:::i;4519:168:15:-;;;;;;;;;:::i;3703:366:9:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:15;;;;;;;;;:::i;838:108:14:-;;;;;;;;;:::i;1023:133:18:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:15;;;;;;;;;:::i;681:140:13:-;;;;;;;;;:::i;858:226:16:-;;;;;;;;;:::i;1514:127:13:-;;;;;;;;;:::i;2320:80:9:-;;;;;;;;;:::i;1107:169:19:-;1174:4;-1:-1:-1;;;;;;1197:32:19;;-1:-1:-1;;;1197:32:19;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:15:-;2932:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:15;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:15;;:18;-1:-1:-1;;3185:18:15;:15;:18;;-1:-1:-1;3185:18:15:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:15;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:15;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:15;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:15;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:15;;4052:6;;-1:-1:-1;4060:20:15;;;;-1:-1:-1;4082:17:15;4012:11;:88::i;:::-;400:1:11;;;;;2854:1263:15;;;;:::o;573:184:19:-;668:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:19;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:16:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:16;;;;;;;;;;-1:-1:-1;;;;;1849:29:16;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:16;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:16;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:16;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:16;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:16;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:16;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:16;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:16;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:16;;-1:-1:-1;2373:103:16;-1:-1:-1;2489:8:16;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:16;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:16;;-1:-1:-1;;;1721:953:16;;;;;:::o;1195:454:12:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:12;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:12;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:12;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:12;-1:-1:-1;1195:454:12;;;;;;:::o;612:169:18:-;687:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:18;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:18;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:14:-;584:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:14;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:13;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:13:o;3269:231:9:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:9;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:9;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:15:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:19:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:19;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:15:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:12:-;674:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:12;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:12;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:17:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:17;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:13;1302:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:13;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:15:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:9;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:9;-1:-1:-1;3844:6:9;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:9;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:9;;3840:199;;;-1:-1:-1;3703:366:9;;;;:::o;5193:128:15:-;5247:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:15;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:14:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:14;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:18;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:15:-;5617:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:15;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:15;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:15;;:16;-1:-1:-1;5701:4:15;;-1:-1:-1;5701:4:15;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:11;5541:225:15;;;;:::o;681:140:13:-;743:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:13;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:16:-;955:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:16;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:16;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:16;-1:-1:-1;;;;;971:43:16;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:13:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:13;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:18:-;1229:4;-1:-1:-1;;;;;;1252:34:18;;-1:-1:-1;;;1252:34:18;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:9:-;3596:3;;:15;;-1:-1:-1;;;3596:15:9;;3564:4;;;;-1:-1:-1;;;;;3596:3:9;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:9;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:9;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:9;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:9;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:10:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:8:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:15:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:15;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:15;;;;;;-1:-1:-1;;6760:43:15;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:15;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:15;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:10:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:10;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:10;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:10;;:::o;414:204:11:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:11;576:10;570:17;-1:-1:-1;;;566:36:11;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:11;87:34:-1;-1:-1;;;;;;776:20:11;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:11;743:64::o;951:169:17:-;1018:4;-1:-1:-1;;;;;;1041:32:17;;-1:-1:-1;;;1041:32:17;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:10:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:10;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:10:o;8685:393:8:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:8;87:34:-1;135:17;;-1:-1;8858:14:8;-1:-1:-1;8839:33:8;-1:-1:-1;8960:2:8;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:8;;8685:393;-1:-1:-1;;;;;8685:393:8:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:8:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:8;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:8;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:16:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:16;;:11;-1:-1:-1;;;;;2770:37:16;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:8:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:8;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:8;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:8;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:8;;513:2;499:26;489:42;;468:73::o;6035:245:15:-;6102:4;-1:-1:-1;;;;;;6125:38:15;;-1:-1:-1;;;6125:38:15;;:93;;-1:-1:-1;;;;;;;6182:36:15;;-1:-1:-1;;;6182:36:15;6125:93;:148;;;;6237:36;6261:11;1019:4:14;-1:-1:-1;;;;;;1042:40:14;;-1:-1:-1;;;1042:40:14;;:80;;;1086:36;1110:11;1714:4:13;-1:-1:-1;;;;;;1737:32:13;;-1:-1:-1;;;1737:32:13;;:71;;-1:-1:-1;;;;;;;1773:35:13;;-1:-1:-1;;;1773:35:13;1737:71;:111;;;;1812:36;1836:11;1722:4:12;-1:-1:-1;;;;;;1745:31:12;;-1:-1:-1;;;1745:31:12;;:71;;-1:-1:-1;;;;;;;;;;204:32:11;;;1780:36:12;114:129:11:o;1897:2174:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:9;;;-1:-1:-1;1897:2174:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:10:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:10:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:21;;;;;;;","srcmap-runtime":"898:556:21:-;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","srcmap":"1381:8954:28:-;;;1122:66:23;1272:58;;2313:80:28;;;-1:-1:-1;;;;;;2313:80:28;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:28;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3616:558:28;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:28;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:28;;;-1:-1:-1;;;;;;4012:22:28;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:28;-1:-1:-1;;;;;4123:34:28;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:28;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:28;-1:-1:-1;;;;;7354:228:28;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:28;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:28;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:28;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:28;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:28;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:28;-1:-1:-1;;;;;6678:219:28;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:28;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:28;;:::i;1364:91:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;10221:112:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:28;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:28;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:28;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:28;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:28;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:28;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:28;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:28;-1:-1:-1;;;;;6338:204:28;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:28;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;10054:96:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:28;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:28;-1:-1:-1;;;;;7027:196:28;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:28;;;:::i;6106:102::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6169:25:28;:32;;-1:-1:-1;;;;6169:32:28;-1:-1:-1;;;6169:32:28;;;6106:102::o;7354:228::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7443:26:28;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:28;;-1:-1:-1;;;;;;7497:29:28;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:28;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:28;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:28;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:28;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:28;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:28;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:28;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:28;;:33;;-1:-1:-1;;;;;9116:12:28;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:28;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:28;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:28;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:28;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:28;4950:91;:::o;6678:219::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6766:14:28;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:28;;-1:-1:-1;;;;;;6820:25:28;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5977:17:28;:24;;-1:-1:-1;;;;5977:24:28;-1:-1:-1;;;5977:24:28;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:28;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;10221:112:28:-;10301:25;;-1:-1:-1;;;10301:25:28;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:28;;;;;9711:92::o;9448:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;9546:35:28;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:28;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:28;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5603:18:28;:25;;-1:-1:-1;;;;5603:25:28;-1:-1:-1;;;5603:25:28;;;5553:82::o;6338:204::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6424:13:28;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:28;;-1:-1:-1;;;;;;6467:24:28;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5792:18:28;:25;;-1:-1:-1;;;;5792:25:28;-1:-1:-1;;;5792:25:28;;;5741:83::o;2169:95:23:-;2242:15;;2169:95;:::o;10054:96:28:-;10126:17;;-1:-1:-1;;;10126:17:28;;;;;10054:96::o;7027:196::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7108:18:28;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:28;;-1:-1:-1;;;;;;7154:21:28;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:28;;;;;9882:93::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;1982:201:5:-;2107:68;;;-1:-1:-1;;;;;2107:68:5;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:5;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:6;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:5;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"},"mocks/isValidSignatureExporter.sol:IWallet":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"mocks/isValidSignatureExporter.sol:IsValidSignatureExporter":{"bin":"608060405234801561001057600080fd5b506040516102833803806102838339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021e806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea265627a7a7231582039e4f876e44b1a96a45ddfa82b682c60a8efb354060a8d711722682c146c538564736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea265627a7a7231582039e4f876e44b1a96a45ddfa82b682c60a8efb354060a8d711722682c146c538564736f6c63430005110032","srcmap":"170:445:29:-;;;238:76;8:9:-1;5:2;;;30:1;27;20:12;5:2;238:76:29;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;238:76:29;284:13;:23;;-1:-1:-1;;;;;284:23:29;;;-1:-1:-1;;;;;;284:23:29;;;;;;;;;170:445;;;;;;","srcmap-runtime":"170:445:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;170:445:29;;;;;;;;;;;;;;;;;;;425:188;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;425:188:29;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;425:188:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;425:188:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;425:188:29;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;425:188:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;425:188:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;425:188:29;;-1:-1:-1;425:188:29;-1:-1:-1;425:188:29;:::i;:::-;;;;-1:-1:-1;;;;;;425:188:29;;;;;;;;;;;;;;;523:6;556:13;;548:58;;;-1:-1:-1;;;548:58:29;;;;;;;;;;;;;;-1:-1:-1;;;;;556:13:29;;;;548:39;;588:5;;;;595:10;;;;548:58;;;;;;;;;588:5;;;;548:58;1:33:-1;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;548:58:29;;;;;;;;;;;-1:-1:-1;548:58:29;;;;;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;548:58:29;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;548:58:29;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;548:58:29;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;548:58:29;;425:188;-1:-1:-1;;;;;425:188:29:o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","srcmap":"1939:14907:30:-;;;1122:66:23;1272:58;;4758:506:30;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:30;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:30;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:30;:26;;;;-1:-1:-1;4995:11:30;:33;;-1:-1:-1;;;;;4995:33:30;;;-1:-1:-1;;;;;;4995:33:30;;;;;;;;;-1:-1:-1;5083:18:30;:28;;;:35;;-1:-1:-1;;5083:35:30;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:30;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:30;-1:-1:-1;;;;;;16070:136:30;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:30;-1:-1:-1;;;;;13314:334:30;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;-1:-1:-1;6040:1806:30;-1:-1:-1;6040:1806:30;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:30;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:30;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:30;;-1:-1:-1;;;;;15695:220:30;;;;;-1:-1:-1;;;;;;15695:220:30;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:30;;-1:-1:-1;7973:1237:30;-1:-1:-1;7973:1237:30;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:30;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:30;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:30;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:30;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:30;;-1:-1:-1;9368:1399:30;-1:-1:-1;9368:1399:30;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:30;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:30;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:30:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:30;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:30;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:30;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:30;;;:88;;;;-1:-1:-1;6442:35:30;;;6389:88;:142;;;;-1:-1:-1;6497:34:30;;;6389:142;:196;;;;-1:-1:-1;6551:34:30;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:30;6841:25;;-1:-1:-1;6841:25:30;;;;;;;;-1:-1:-1;6841:25:30;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:30;-1:-1:-1;;;;;7084:25:30;-1:-1:-1;;;;;7084:25:30;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:30;;;;;-1:-1:-1;;7084:306:30;;;-1:-1:-1;;7084:306:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:30;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:30;-1:-1:-1;;;;;7486:10:30;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:30;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:30;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:30;-1:-1:-1;;;;;7742:87:30;;;;;;-1:-1:-1;;;;;7742:87:30;-1:-1:-1;;;;;7742:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:30;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:30;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:30;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:30;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:30;-1:-1:-1;15069:72:30;-1:-1:-1;15151:23:30;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:30;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:30;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:30;;;-1:-1:-1;;;;;15364:44:30;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:30;;15188:283;;;-1:-1:-1;15487:19:30;;-1:-1:-1;;14990:523:30;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:30;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:30;;;;;;;;;;;;-1:-1:-1;;;11432:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:30;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:30;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:30;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:30;;;;;;;;;;;;-1:-1:-1;;;15798:62:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:30;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:30:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:30;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:30;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:30;;8363:65;;;;;-1:-1:-1;;;8363:65:30;;;;;;;;;;;;-1:-1:-1;;;8363:65:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:30;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:30;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:30;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:30;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:30;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:30;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:30;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:30;;;;;-1:-1:-1;;;;;8926:76:30;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:30;:27;;;;;-1:-1:-1;;9075:27:30;;;:::i;:::-;-1:-1:-1;9162:31:30;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:30;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:30:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:30;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:30;;;;;;;;;;;;-1:-1:-1;;;10969:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:30;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:30;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:30;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:30;;:23;-1:-1:-1;;9801:23:30;:20;:23;;-1:-1:-1;9801:23:30:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:30;;;;;;;;;;;;-1:-1:-1;;;9877:72:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:30;;-1:-1:-1;;;10048:18:30;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:30;;:24;-1:-1:-1;;10141:24:30;:21;:24;;-1:-1:-1;10141:24:30:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:30;;-1:-1:-1;;;10187:27:30;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:30;;:34;-1:-1:-1;;10400:34:30;:21;:34;;-1:-1:-1;10400:34:30:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:30;;:34;-1:-1:-1;;10436:34:30;:21;:34;;-1:-1:-1;10436:34:30:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:30;;:29;-1:-1:-1;;10689:29:30;:21;:29;;-1:-1:-1;10689:29:30:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:30;;:29;-1:-1:-1;;10720:29:30;:21;:29;;-1:-1:-1;10720:29:30:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:30;-1:-1:-1;;;;;5399:27:30;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:30;;;;;;;;;;;;-1:-1:-1;;;5367:86:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:30;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:30;;;;;;;;;;;;-1:-1:-1;;;12130:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:30;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:30:-;16622:11;;-1:-1:-1;;;;;16622:11:30;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:30;;;-1:-1:-1;1939:14907:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"wallet.sol:AddressWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:ControllableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:DailyLimitTrait":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032","srcmap":"11411:3455:31:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"11411:3455:31:-;;;;;;;;"},"wallet.sol:GasTopUpLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:LoadLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SelfCallableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SpendLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:Wallet":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032","bin-runtime":"60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032","srcmap":"22209:17557:31:-;;;1122:66:23;1272:58;;24474:430:31;5:2:-1;;;;30:1;27;20:12;5:2;24474:430:31;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24474:430:31;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;24474:430:31;;;;;;;;;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1543:6:25;:18;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;-1:-1:-1;;;1571:32:25;;;;;;;;;;;;;;1687:15;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17616:93:31;;;;;;;;17296:10;17616:93;;;;;;;;;17695:3;17616:93;;;;;;-1:-1:-1;17616:93:31;;;;;;;;;;;;;17599:14;:110;;;;;;;;;;;;;;;;;-1:-1:-1;;17599:110:31;;;1341:19:26;:42;;;;20179:20:31;-1:-1:-1;;;;;20179:18:31;:20;:::i;:::-;20135:64;;;;;;;;20239:1;20217:19;:23;20209:49;;;;;-1:-1:-1;;;20209:49:31;;;;;;;;;;;;-1:-1:-1;;;20209:49:31;;;;;;;;;;;;;;;19863:5;20288:52;20268:17;:72;;;20363:79;;;;;;;;;;;;;;;;;;;20428:3;20363:79;;;;;;-1:-1:-1;20363:79:31;;;;;;;;;;;;;;20350:10;:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20350:92:31;;;;;;15352:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:11;:73;;;;;;;;;;;;;;;-1:-1:-1;15338:73:31;;;;;;;;-1:-1:-1;24869:12:31;:28;-1:-1:-1;22209:17557:31;;-1:-1:-1;;;;22209:17557:31;2887:206:26;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;;;:32;;:::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;22209:17557:31:-;;;;;;;","srcmap-runtime":"22209:17557:31:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25196:31;;;25205:10;25196:31;;25217:9;25196:31;;;;;;;;;;;;;;;;;22209:17557;30101:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30101:137:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30101:137:31;-1:-1:-1;;;;;;30101:137:31;;:::i;:::-;;;;;;;;;;;;;;;;;;16199:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16199:104:31;;;:::i;:::-;;;;;;;;;;;;;;;;18820:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18820:286:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:286:31;;:::i;:::-;;3896:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:677:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3896:677:31;;:::i;23125:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23125:47:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23125:47:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38146:244:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38146:244:31;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38146:244:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38146:244:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38146:244:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38146:244:31;;-1:-1:-1;38146:244:31;;-1:-1:-1;;;;;38146:244:31:i;:::-;;;;-1:-1:-1;;;;;;38146:244:31;;;;;;;;;;;;;;25576:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25576:565:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;25576:565:31;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25576:565:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25576:565:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25576:565:31;;-1:-1:-1;25576:565:31;-1:-1:-1;25576:565:31;:::i;21466:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21466:117:31;;;:::i;28299:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28299:344:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28299:344:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28299:344:31;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28299:344:31;;-1:-1:-1;28299:344:31;-1:-1:-1;28299:344:31;:::i;3173:94:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3173:94:25;;;:::i;16806:179:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16806:179:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16806:179:31;;:::i;18606:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18606:106:31;;;:::i;3082:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3082:38:31;;;:::i;8300:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8300:124:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8300:124:31;;;;;;;;;;;;;;;;;2898:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2898:44:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2898:44:31;-1:-1:-1;;;;;2898:44:31;;:::i;29093:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;29093:943:31;;;;;;;;:::i;20579:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20579:233:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20579:233:31;;:::i;15817:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15817:161:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15817:161:31;;:::i;35929:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35929:1934:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;35929:1934:31;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;35929:1934:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;35929:1934:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35929:1934:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35929:1934:31;;-1:-1:-1;35929:1934:31;;-1:-1:-1;;;;;35929:1934:31:i;26493:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26493:1111:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26493:1111:31;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26493:1111:31;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26493:1111:31;;-1:-1:-1;26493:1111:31;-1:-1:-1;26493:1111:31;:::i;8121:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8121:126:31;;;:::i;5523:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5523:1117:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5523:1117:31;;:::i;16023:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16023:119:31;;;:::i;10340:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10340:673:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10340:673:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10340:673:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10340:673:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10340:673:31;;-1:-1:-1;10340:673:31;-1:-1:-1;10340:673:31;:::i;3543:306:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:306:25;;;:::i;19233:304:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19233:304:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19233:304:31;;:::i;28706:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:91:31;;;:::i;1364::24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;18028:125:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:125:31;;;:::i;9505:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9505:711:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9505:711:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9505:711:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9505:711:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9505:711:31;;-1:-1:-1;9505:711:31;-1:-1:-1;9505:711:31;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;3932:85:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:85:25;;;:::i;27713:87:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27713:87:31;;;:::i;16562:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16562:100:31;;;:::i;31175:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31175:2016:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31175:2016:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31175:2016:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31175:2016:31;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31175:2016:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31175:2016:31;;-1:-1:-1;31175:2016:31;;-1:-1:-1;;;;;31175:2016:31:i;21796:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:145:31;;;:::i;20927:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20927:251:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20927:251:31;;:::i;2247:809:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2247:809:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;33378:550:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33378:550:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33378:550:31;;;;;;;;:::i;16359:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16359:147:31;;;:::i;3169:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:26:31;;;:::i;38667:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38667:1097:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38667:1097:31;;;;;;;;;;;;;;;;;:::i;21639:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21639:102:31;;;:::i;6709:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6709:1358:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6709:1358:31;;:::i;18215:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:110:31;;;:::i;23739:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23739:25:31;;;:::i;11082:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11082:145:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11082:145:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11082:145:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11082:145:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:145:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11082:145:31;;-1:-1:-1;11082:145:31;;-1:-1:-1;;;;;11082:145:31:i;4641:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:659:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4641:659:31;;:::i;2948:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:31:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2948:31:31;;:::i;22008:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:98:31;;;:::i;3126:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3126:37:31;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;30418:425:31:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30418:425:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30418:425:31;;:::i;15480:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:180:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15480:180:31;;:::i;34129:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34129:1540:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34129:1540:31;;;;;;;;:::i;21239:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21239:177:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21239:177:31;;:::i;17783:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17783:189:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17783:189:31;;:::i;8555:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:827:31;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8555:827:31;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8555:827:31;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8555:827:31;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8555:827:31;;-1:-1:-1;8555:827:31;-1:-1:-1;8555:827:31;:::i;18386:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18386:153:31;;;:::i;30101:137::-;-1:-1:-1;;;;;;30195:36:31;;-1:-1:-1;;;30195:36:31;30101:137;;;;:::o;16199:104::-;16277:19;;16199:104;;:::o;18820:286::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;18934:7;17364:8;18906:35;;:74;;;;;17296:10;18945:7;:35;;18906:74;18898:106;;;;;-1:-1:-1;;;18898:106:31;;;;;;;;;;;;-1:-1:-1;;;18898:106:31;;;;;;;;;;;;;;;19014:33;:14;19039:7;19014:33;:24;:33;:::i;:::-;19062:37;;;19079:10;19062:37;;;;;;;;;;;;;;;;;;;;;18820:286;:::o;3896:677::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;;;;4043:26;;;;4035:60;;;;;-1:-1:-1;;;4035:60:31;;;;;;;;;;;;-1:-1:-1;;;4035:60:31;;;;;;;;;;;;;;;4217:40;4231:25;4217:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4217:40:31;;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4208:5;:49;4200:97;;;;-1:-1:-1;;;4200:97:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:32;4350:25;;4343:32;:::i;:::-;4432:26;:34;;-1:-1:-1;;4432:34:31;;;4521:45;;;4548:10;4521:45;;;;;;;;;;;;;;;;;;;;;3896:677;:::o;23125:47::-;;;;;;;;;;;;;;-1:-1:-1;;;23125:47:31;;;;:::o;38146:244::-;38239:6;;38272:31;:11;38292:10;38272:31;:19;:31;:::i;:::-;38257:46;;38321:14;38330:4;38321:8;:14::i;:::-;38313:44;;;;;-1:-1:-1;;;38313:44:31;;;;;;;;;;;;-1:-1:-1;;;38313:44:31;;;;;;;;;;;;;;;-1:-1:-1;;;;38374:9:31;-1:-1:-1;38146:244:31;;;;;:::o;25576:565::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;25745:19;25737:52;;;;;-1:-1:-1;;;25737:52:31;;;;;;;;;;;;-1:-1:-1;;;25737:52:31;;;;;;;;;;;;;;;25866:9;25861:229;25881:18;;;25861:229;;;25920:14;25937:35;25954:4;25961:7;;25969:1;25961:10;;;;;;;;;;;;;-1:-1:-1;;;;;25961:10:31;25937:8;:35::i;:::-;25920:52;;26046:33;26055:3;26060:7;;26068:1;26060:10;;;;;;;;;;;;;-1:-1:-1;;;;;26060:10:31;26072:6;26046:8;:33::i;:::-;-1:-1:-1;25901:3:31;;25861:229;;;;26105:29;26121:3;26126:7;;26105:29;;;;-1:-1:-1;;;;;26105:29:31;-1:-1:-1;;;;;26105:29:31;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;26105:29:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26105:29:31;;;;-1:-1:-1;26105:29:31;;-1:-1:-1;;;;;26105:29:31;25576:565;;;:::o;21466:117::-;21519:7;21545:31;:10;:29;:31::i;:::-;21538:38;;21466:117;:::o;28299:344::-;28397:6;28415:16;28461:5;;28444:23;;;;;;;30:3:-1;22:6;14;1:33;28444:23:31;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28444:23:31;;;28434:34;;49:4:-1;28434:34:31;;;;28541:38;;;;;;;;;;;;;;;;;;28434:34;;-1:-1:-1;;;;28583:9:31;-1:-1:-1;28541:38:31;;-1:-1:-1;28434:34:31;;-1:-1:-1;28568:10:31;;-1:-1:-1;28541:38:31;;;;;;28568:10;28541:38;;28568:10;28541:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28541:16:31;;-1:-1:-1;;;28541:38:31:i;:::-;-1:-1:-1;;;;;;28541:51:31;;28533:77;;;;;-1:-1:-1;;;28533:77:31;;;;;;;;;;;;-1:-1:-1;;;28533:77:31;;;;;;;;;;;;;;;-1:-1:-1;;;;28627:9:31;28299:344;-1:-1:-1;;;;;28299:344:31:o;3173:94:25:-;3245:15;;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;16806:179:31:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;16890:39;:11;16921:7;16890:39;:30;:39;:::i;:::-;16944:34;;;;;;;;;;;;;;;;;16806:179;:::o;18606:106::-;18685:14;:20;18606:106;:::o;3082:38::-;;;;;;:::o;8300:124::-;8358:16;8393:24;8386:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8386:31:31;;;;;;;;;;;;;;;;;;;;;;;8300:124;:::o;2898:44::-;;;;;;;;;;;;;;;:::o;29093:943::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;29269:24;29286:6;29269:16;:24::i;:::-;29261:55;;;;;-1:-1:-1;;;29261:55:31;;;;;;;;;;;;-1:-1:-1;;;29261:55:31;;;;;;;;;;;;;;;29379:23;29405:36;29425:6;29433:7;29405:19;:36::i;:::-;29379:62;-1:-1:-1;29571:41:31;:10;29379:62;29571:41;:24;:41;:::i;:::-;29669:22;29694:25;29706:12;;29694:11;:25::i;:::-;29669:50;-1:-1:-1;;;;;;29733:20:31;;;29729:253;;29769:50;-1:-1:-1;;;;;29769:25:31;;29795:14;29811:7;29769:50;:25;:50;:::i;:::-;29842:14;-1:-1:-1;;;;;29833:29:31;;29863:6;29871:7;29833:46;;;;;;;;;;;;;-1:-1:-1;;;;;29833:46:31;-1:-1:-1;;;;;29833:46:31;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29833:46:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29833:46:31;;;;29729:253;;;29919:14;-1:-1:-1;;;;;29910:29:31;;29946:7;29955:6;29963:7;29910:61;;;;;;;;;;;;;-1:-1:-1;;;;;29910:61:31;-1:-1:-1;;;;;29910:61:31;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29910:61:31;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29910:61:31;;;;;29729:253;29997:32;;;-1:-1:-1;;;;;29997:32:31;;;;;;;;;;;;;;;;;;;;;;;2129:1;;29093:943;;:::o;20579:233::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;20672:17;;20661:7;:28;;20653:65;;;;;-1:-1:-1;;;20653:65:31;;;;;;;;;;;;-1:-1:-1;;;20653:65:31;;;;;;;;;;;;;;;20728:29;:10;20749:7;20728:29;:20;:29;:::i;:::-;20772:33;;;20785:10;20772:33;;;;;;;;;;;;;;;;;;;;;20579:233;:::o;15817:161::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;15892:30;:11;15914:7;15892:30;:21;:30;:::i;:::-;15937:34;;;15951:10;15937:34;;;;;;;;;;;;;;;;;;;;;15817:161;:::o;35929:1934::-;36047:12;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;36266:26:31;;;;;;:12;:26;;;;;;;;36261:91;;36308:33;:11;36334:6;36308:33;:25;:33;:::i;:::-;36453:34;36461:12;-1:-1:-1;;;;;36453:32:31;;:34::i;:::-;:69;;;;;36491:31;36509:12;36491:17;:31::i;:::-;36449:1098;;;36625:10;36649:14;36692:48;36720:12;36734:5;36692:27;:48::i;:::-;-1:-1:-1;;;;;36759:16:31;;;;;;:12;:16;;;;;;36677:63;;-1:-1:-1;36677:63:31;-1:-1:-1;36759:16:31;;36754:335;;36962:18;36983:36;36998:12;37012:6;36983:14;:36::i;:::-;36962:57;-1:-1:-1;37037:37:31;:11;36962:57;37037:37;:25;:37;:::i;:::-;36754:335;;37238:45;-1:-1:-1;;;;;37238:38:31;;37277:5;37238:45;:38;:45;:::i;:::-;37404:13;;;37414:2;37404:13;;;;;;;;;37387:14;;37404:13;;;21:6:-1;;104:10;37404:13:31;87:34:-1;135:17;;-1:-1;37404:13:31;37387:30;;37439:4;37431:12;;:1;37433:2;37431:5;;;;;;;;;;;:12;-1:-1:-1;;;;;37431:12:31;;;;;;;;;37463:51;37483:12;37497:6;37505:5;37512:1;37463:51;;;;-1:-1:-1;;;;;37463:51:31;-1:-1:-1;;;;;37463:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37463:51:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37535:1;-1:-1:-1;37528:8:31;;-1:-1:-1;;37528:8:31;36449:1098;37558:12;37572:23;37599:12;-1:-1:-1;;;;;37599:17:31;37623:6;37631:5;37599:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37599:38:31;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37557:80:31;;;;37655:7;37671:10;37647:36;;;;;-1:-1:-1;;;37647:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37647:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37699:60;37719:12;37733:6;37741:5;37748:10;37699:60;;;;-1:-1:-1;;;;;37699:60:31;-1:-1:-1;;;;;37699:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:31;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37846:10;-1:-1:-1;;2129:1:31;35929:1934;;;;;:::o;26493:1111::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;26797:10:31;26846:9;26840:15;;26925:16;26944:99;26984:2;26996:4;27003:6;27011:5;;26954:63;;;;;;-1:-1:-1;;;26954:63:31;;;;;;;;;;;-1:-1:-1;;;;;26954:63:31;-1:-1:-1;;;;;26954:63:31;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;26954:63:31;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26954:63:31;;;26944:74;;;;;;:97;:99::i;:::-;26925:118;;23503:10;27161:9;;-1:-1:-1;;;;;27119:51:31;;:38;27136:8;27146:10;;27119:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;27119:16:31;;-1:-1:-1;;;27119:38:31:i;:::-;-1:-1:-1;;;;;;27119:51:31;;27111:77;;;;;-1:-1:-1;;;27111:77:31;;;;;;;;;;;;-1:-1:-1;;;27111:77:31;;;;;;;;;;;;;;;27301:10;;27291:6;:20;27283:42;;;;;-1:-1:-1;;;27283:42:31;;;;;;;;;;;;-1:-1:-1;;;27283:42:31;;;;;;;;;;;;;;;27335:21;:19;:21::i;:::-;27424:12;27438:23;27473:4;-1:-1:-1;;;;;27465:18:31;27484:5;;27465:25;;;;;30:3:-1;22:6;14;1:33;27465:25:31;;45:16:-1;;;-1:-1;27465:25:31;;-1:-1:-1;27465:25:31;;-1:-1:-1;;27465:25:31;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27423:67:31;;;;27508:7;27524:10;27500:36;;;;;-1:-1:-1;;;27500:36:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27500:36:31;;27552:45;27579:5;;27586:10;27552:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27552:45:31;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27552:45:31;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27552:45:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:1:23;;;;26493:1111:31;;;;;:::o;8121:126::-;8180:16;8215:25;8208:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8208:32:31;;;;;;;;;;;;;;;;;;;;;;8121:126;:::o;5523:1117::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;5681:26:31;;;;5673:60;;;;;-1:-1:-1;;;5673:60:31;;;;;;;;;;;;-1:-1:-1;;;5673:60:31;;;;;;;;;;;;;;;5855:40;5869:25;5855:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5855:40:31;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;5846:5;:49;5838:97;;;;-1:-1:-1;;;5838:97:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:9;5985:383;6009:25;:32;6005:36;;5985:383;;;6117:12;:42;6130:25;6156:1;6130:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6130:28:31;6117:42;;;;;;;;;;;;;;;6112:246;;6272:4;6227:12;:42;6240:25;6266:1;6240:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6240:28:31;6227:42;;;;;;;;;;;;:49;;-1:-1:-1;;6227:49:31;;;;;;;;;;6314:25;:28;;6294:14;;6314:25;6340:1;;6314:28;;;;;;;;;;;;;;;;;;27:10:-1;;6314:28:31;23:18:-1;;45:23;;6294:49:31;;;;;;;;;;-1:-1:-1;;;;;;6294:49:31;-1:-1:-1;;;;;6314:28:31;;;6294:49;;;;;;6112:246;6043:3;;5985:383;;;;6418:55;6435:10;6447:25;6418:55;;;;-1:-1:-1;;;;;6418:55:31;-1:-1:-1;;;;;6418:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6418:55:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:32;6526:25;;6519:32;:::i;:::-;-1:-1:-1;6599:26:31;:34;;-1:-1:-1;;6599:34:31;;;5523:1117::o;16023:119::-;16077:7;16103:32;:11;:30;:32::i;10340:673::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:31;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:14;;;;;;;10517:52;;;;;-1:-1:-1;;;10517:52:31;;;;;;;;;;;;-1:-1:-1;;;10517:52:31;;;;;;;;;;;;;;;10647:21;10639:49;;;;;-1:-1:-1;;;10639:49:31;;;;;;;;;;;;-1:-1:-1;;;10639:49:31;;;;;;;;;;;;;;;10766:37;:24;10793:10;;10766:37;:::i;:::-;-1:-1:-1;10857:25:31;:32;;-1:-1:-1;;10857:32:31;;;;;10980:25;;;;;;;;;;;;;;;;;;10942:64;;10968:10;;;;10980:25;;10968:10;;;;;;10980:25;;;10968:10;;10980:25;10968:10;10980:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10980:13:31;;-1:-1:-1;;;10980:25:31:i;:::-;10942:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10942:64:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10942:64:31;;;;-1:-1:-1;10942:64:31;;-1:-1:-1;;;;;10942:64:31;10340:673;;:::o;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:6;:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;3784:1;3802:40;;;;;;;;;;;;;;;;;;;;3543:306::o;19233:304:31:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;19356:7;17364:8;19328:35;;:74;;;;;17296:10;19367:7;:35;;19328:74;19320:106;;;;;-1:-1:-1;;;19320:106:31;;;;;;;;;;;;-1:-1:-1;;;19320:106:31;;;;;;;;;;;;;;;19436:42;:14;19470:7;19436:42;:33;:42;:::i;:::-;19493:37;;;;;;;;;;;;;;;;;19233:304;:::o;28706:91::-;28778:12;;28706:91;:::o;1364::24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;18028:125:31:-;18085:7;18111:35;:14;:33;:35::i;9505:711::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:31;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:31;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;;;;;;;;3437:8;:23::i;:::-;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:31;;;;;;;;;;;;-1:-1:-1;;;3428:59:31;;;;;;;;;;;;;;;3534:1;-1:-1:-1;;;;;3509:27:31;:10;3520:1;3509:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:31;;;3501:58;;;;;-1:-1:-1;;;3501:58:31;;;;;;;;;;;;-1:-1:-1;;;3501:58:31;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;9727:14:31;;;;;;;9719:52;;;;;-1:-1:-1;;;9719:52:31;;;;;;;;;;;;-1:-1:-1;;;9719:52:31;;;;;;;;;;;;;;;9842:21;9834:49;;;;;-1:-1:-1;;;9834:49:31;;;;;;;;;;;;-1:-1:-1;;;9834:49:31;;;;;;;;;;;;;;;9966:38;:25;9994:10;;9966:38;:::i;:::-;-1:-1:-1;10058:26:31;:33;;-1:-1:-1;;10058:33:31;10087:4;10058:33;;;10183:25;;;;;;;;;;;;;;;;;;10144:65;;10171:10;;;;10183:25;;10171:10;;;;;;10183:25;;;10171:10;;10183:25;10171:10;10183:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10183:13:31;;-1:-1:-1;;;10183:25:31:i;:::-;10144:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10144:65:31;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10144:65:31;;;;-1:-1:-1;10144:65:31;;-1:-1:-1;;;;;10144:65:31;3834:1;9505:711;;:::o;1514:105:26:-;1593:19;;1514:105;:::o;3932:85:25:-;4004:6;;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;27713:87:31:-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;27772:21:31;:19;:21::i;:::-;27713:87::o;16562:100::-;16638:11;:17;16562:100;:::o;31175:2016::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;31295:24;;31322:2;31295:29;;;;:24;31273:19;;;31723:17;31764:1421;31777:11;31771:3;:17;31764:1421;;;31937:28;:20;31962:2;31937:28;:24;:28;:::i;:::-;32151:27;;;32145:34;;32312:2;32280:36;;32274:43;32533:2;32501:36;;;32495:43;;31914:51;;-1:-1:-1;32141:2:31;32137:43;;;;;-1:-1:-1;32274:43:31;;-1:-1:-1;32495:43:31;;-1:-1:-1;32501:36:31;-1:-1:-1;32709:27:31;32733:2;32709:19;32174:3;32495:43;32709:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32703:33;;32856:11;32849:3;:18;;32841:44;;;;;-1:-1:-1;;;32841:44:31;;;;;;;;;;;;-1:-1:-1;;;32841:44:31;;;;;;;;;;;;;;;32956:15;32952:70;;-1:-1:-1;32998:9:31;;;;;;;;;-1:-1:-1;32998:9:31;;32952:70;33130:44;33149:11;33162:5;33169:4;33130:18;:44::i;:::-;;31764:1421;;;2129:1;;;;;;;31175:2016;:::o;21796:145::-;21893:41;;;;21796:145;:::o;20927:251::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;21029:17;;21018:7;:28;;21010:65;;;;;-1:-1:-1;;;21010:65:31;;;;;;;;;;;;-1:-1:-1;;;21010:65:31;;;;;;;;;;;;;;;21085:38;:10;21115:7;21085:38;:29;:38;:::i;:::-;21138:33;;;;;;;;;;;;;;;;;20927:251;:::o;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;33378:550:31:-;33456:7;33545:17;33564:12;33578:14;33602:21;33616:6;33602:13;:21::i;:::-;33542:81;;;;;;;;;;33703:9;33699:205;;;33736:9;33728:28;;;;;-1:-1:-1;;;33728:28:31;;;;;;;;;;;;-1:-1:-1;;;33728:28:31;;;;;;;;;;;;;;;33861:32;33883:9;33861:17;:7;33873:4;33861:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;33854:39;;;;;;;33699:205;-1:-1:-1;33920:1:31;;33378:550;-1:-1:-1;;;;;33378:550:31:o;16359:147::-;16457:42;;;;16359:147;:::o;3169:26::-;;;;;;;;;:::o;38667:1097::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;38772:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:31;;;;;;;;;;;;-1:-1:-1;;;25001:31:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;38860:17:31;;38852:43;;;;;-1:-1:-1;;;38852:43:31;;;;;;;;;;;;-1:-1:-1;;;38852:43:31;;;;;;;;;;;;;;;-1:-1:-1;;;;;38984:17:31;;;;;;:12;:17;;;;;;;;38979:584;;39101:7;-1:-1:-1;;;;;39205:20:31;;;39201:103;;39258:31;39273:6;39281:7;39258:14;:31::i;:::-;39245:44;;39201:103;39515:37;:11;39541:10;39515:37;:25;:37;:::i;:::-;38979:584;;39638:35;39652:3;39657:6;39665:7;39638:13;:35::i;:::-;39724:33;;;-1:-1:-1;;;;;39724:33:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;38667:1097;;;:::o;21639:102::-;21716:18;;21639:102;:::o;6709:1358::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;6896:25:31;;;;;;;6888:59;;;;;-1:-1:-1;;;6888:59:31;;;;;;;;;;;;-1:-1:-1;;;6888:59:31;;;;;;;;;;;;;;;7068:39;7082:24;7068:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7068:39:31;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;7059:5;:48;7051:96;;;;-1:-1:-1;;;7051:96:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:9;7194:601;7218:24;:31;7214:35;;7194:601;;;7308:12;:41;7321:24;7346:1;7321:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7321:27:31;7308:41;;;;;;;;;;;;;;;7304:481;;;7413:5;7369:12;:41;7382:24;7407:1;7382:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7382:27:31;7369:41;;;;;;;;;;;;:49;;-1:-1:-1;;7369:49:31;;;;;;;;;;;7436:294;7460:14;:21;:28;;7486:1;7460:28;:25;:28;:::i;:::-;7456:1;:32;7436:294;;;7542:24;7567:1;7542:27;;;;;;;;;;;;;;;;;;7521:14;:17;;-1:-1:-1;;;;;7542:27:31;;;;7536:1;;7521:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:17:31;:48;7517:195;;;7617:14;7632:21;;-1:-1:-1;;7632:25:31;;;7617:41;;;;;;;;;;;;;;;;7597:14;:17;;-1:-1:-1;;;;;7617:41:31;;;;7612:1;;7597:17;;;;;;;;;;;;;;:61;;;;;-1:-1:-1;;;;;7597:61:31;;;;;-1:-1:-1;;;;;7597:61:31;;;;;;7684:5;;7517:195;7490:3;;7436:294;;;-1:-1:-1;7747:14:31;:23;;;;;-1:-1:-1;;7747:23:31;;;:::i;:::-;;7304:481;7251:3;;7194:601;;;;7844:58;7865:10;7877:24;7844:58;;;;-1:-1:-1;;;;;7844:58:31;-1:-1:-1;;;;;7844:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7844:58:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7948:31;7955:24;;7948:31;:::i;:::-;-1:-1:-1;8027:25:31;:33;;-1:-1:-1;;8027:33:31;;;6709:1358::o;18215:110::-;18296:22;;18215:110;:::o;23739:25::-;;;;:::o;11082:145::-;11155:7;11208:10;11191:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11191:28:31;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11191:28:31;;;11181:39;;;;;;11174:46;;11082:145;;;:::o;4641:659::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;;;;4787:25;;;;;;;4779:59;;;;;-1:-1:-1;;;4779:59:31;;;;;;;;;;;;-1:-1:-1;;;4779:59:31;;;;;;;;;;;;;;;4959:39;4973:24;4959:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4959:39:31;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;4950:5;:48;4942:96;;;;-1:-1:-1;;;4942:96:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:31;5091:24;;5084:31;:::i;:::-;5161:25;:33;;-1:-1:-1;;5161:33:31;;;5249:44;;;5275:10;5249:44;;;;;;;;;;;;;;;;;;;;;4641:659;:::o;2948:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2948:31:31;;-1:-1:-1;2948:31:31;:::o;22008:98::-;22083:10;:16;22008:98;:::o;3126:37::-;;;;;;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;30418:425:31:-;30472:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:31;;;;;;;;;;;;-1:-1:-1;;;25001:31:31;;;;;;;;;;;;;;;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;-1:-1:-1;;;1561:84:31;;;;;;;;;;;;;;;30633:37;:14;30662:7;30633:37;:28;:37;:::i;:::-;30717:7;:5;:7::i;:::-;-1:-1:-1;;;;;30717:16:31;:25;30734:7;30717:25;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30717:25:31;30795:41;30807:10;30819:7;:5;:7::i;:::-;30795:41;;;-1:-1:-1;;;;;30795:41:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30418:425;;:::o;15480:180::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;15564:40:31;:11;15596:7;15564:40;:31;:40;:::i;34129:1540::-;34212:7;34342:13;:11;:13::i;:::-;-1:-1:-1;;;;;34332:23:31;:6;-1:-1:-1;;;;;34332:23:31;;34328:68;;;-1:-1:-1;34378:7:31;34371:14;;34328:68;34428:7;-1:-1:-1;;;;;34482:20:31;;;34478:600;;34654:17;34673:12;34687:14;34711:21;34725:6;34711:13;:21::i;:::-;34651:81;;;;;;;;;;34843:9;34835:41;;;;;-1:-1:-1;;;34835:41:31;;;;;;;;;;;;-1:-1:-1;;;34835:41:31;;;;;;;;;;;;;;;34898:9;34890:28;;;;;-1:-1:-1;;;34890:28:31;;;;;;;;;;;;-1:-1:-1;;;34890:28:31;;;;;;;;;;;;;;;35035:32;35057:9;35035:17;:7;35047:4;35035:17;:11;:17;:::i;:32::-;35020:47;;34478:600;;;;35195:27;35224:22;35248:24;35282:20;:18;:20::i;:::-;35192:110;;;;;;;;;;35368:19;35360:51;;;;;-1:-1:-1;;;35360:51:31;;;;;;;;;;;;-1:-1:-1;;;35360:51:31;;;;;;;;;;;;;;;35429:19;35421:49;;;;;-1:-1:-1;;;35421:49:31;;;;;;;;;;;;-1:-1:-1;;;35421:49:31;;;;;;;;;;;;;;;35605:57;35647:14;35605:37;:12;35622:19;35605:37;:16;:37;:::i;:57::-;35598:64;34129:1540;-1:-1:-1;;;;;;;34129:1540:31:o;21239:177::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;21322:39:31;:10;21353:7;21322:39;:30;:39;:::i;17783:189::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;17870:43:31;:14;17905:7;17870:43;:34;:43;:::i;8555:827::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:31;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;-1:-1:-1;;;2039:80:31;;;;;;;;;;;;;;;8657:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:31;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;3437:23;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:31;;;;;;;;;;;;-1:-1:-1;;;3428:59:31;;;;;;;;;;;;;;;3534:1;-1:-1:-1;;;;;3509:27:31;:10;3520:1;3509:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:31;;;3501:58;;;;;-1:-1:-1;;;3501:58:31;;;;;;;;;;;;-1:-1:-1;;;3501:58:31;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;8752:14:31;;;;;;;8751:15;8743:49;;;;;-1:-1:-1;;;8743:49:31;;;;;;;;;;;;-1:-1:-1;;;8743:49:31;;;;;;;;;;;;;;;8871:9;8866:384;8886:21;;;8866:384;;;8996:12;:27;9009:10;;9020:1;9009:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9009:13:31;8996:27;;-1:-1:-1;8996:27:31;;;;;;;;-1:-1:-1;8996:27:31;;;;8991:249;;9122:4;9092:12;:27;9105:10;;9116:1;9105:13;;;;;;;;;;;;;-1:-1:-1;;;;;9105:13:31;-1:-1:-1;;;;;9092:27:31;-1:-1:-1;;;;;9092:27:31;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9191:14;9211:10;;9222:1;9211:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9191:34:31;;;9211:13;9191:34;;;;;;;-1:-1:-1;;;;;;9191:34:31;-1:-1:-1;;;;;9211:13:31;;;;;;;;;;;;;9191:34;;;;;;-1:-1:-1;8991:249:31;8909:3;;8866:384;;;-1:-1:-1;9259:14:31;:21;;-1:-1:-1;;9259:21:31;;;;;9331:44;;;9348:10;9331:44;;;;;;;;;9360:14;9331:44;;;;;;;;;;9348:10;;9360:14;;9331:44;;;;;;;9360:14;;9331:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9331:44:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;8555:827;;:::o;18386:153::-;18487:45;;;;18386:153;:::o;4123:107:25:-;4217:6;;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;13567:401:31:-;13718:35;;;;;;13717:36;13709:66;;;;;-1:-1:-1;;;13709:66:31;;;;;;;;;;;;-1:-1:-1;;;13709:66:31;;;;;;;;;;;;;;;13844:27;13857:4;13863:7;13844:12;:27::i;:::-;-1:-1:-1;13919:35:31;;:42;;-1:-1:-1;;13919:42:31;13957:4;13919:42;;;13567:401::o;2332:158:23:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;-1:-1:-1;;;;;2419:54:23;;2474:8;2419:64;;;;;;;;;;;;;-1:-1:-1;;;;;2419:64:23;-1:-1:-1;;;;;2419:64:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;2387:1891;-1:-1:-1;;;;;;;2387:1891:2:o;1207:245:21:-;1282:7;-1:-1:-1;;;;;1305:20:21;;;1301:145;;1354:6;-1:-1:-1;;;;;1348:23:21;;1372:8;1348:33;;;;;;;;;;;;;-1:-1:-1;;;;;1348:33:21;-1:-1:-1;;;;;1348:33:21;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1348:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:21;;-1:-1:-1;1341:40:21;;1301:145;-1:-1:-1;;;;;;1419:16:21;;;1412:23;;12652:240:31;12757:19;;;;12728:7;;12757:33;;12781:8;12757:33;:23;:33;:::i;:::-;12751:3;:39;12747:139;;;-1:-1:-1;12813:10:31;;12806:17;;12747:139;-1:-1:-1;12861:14:31;;;;12854:21;;14103:317;14254:35;;;;;;14246:73;;;;;-1:-1:-1;;;14246:73:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:12;;;;:22;14103:317::o;5161:156:26:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:26;;5161:156;-1:-1:-1;;;;;;;;5161:156:26:o;12192:288:31:-;12328:27;12350:4;12328:21;:27::i;:::-;12391:7;12373:4;:14;;;:25;;12365:54;;;;;-1:-1:-1;;;12365:54:31;;;;;;;;;;;;-1:-1:-1;;;12365:54:31;;;;;;;;;;;;;;;12446:14;;;;:27;;12465:7;12446:27;:18;:27;:::i;:::-;12429:4;:14;;:44;;;;12192:288;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;4644:159:26:-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:26;;4644:159;-1:-1:-1;;;;;;;;4644:159:26:o;4305:241::-;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;-1:-1:-1;;;;;4442:76:26;;4519:12;4533:5;4442:97;;;;;;;;;;;;;-1:-1:-1;;;;;4442:97:26;-1:-1:-1;;;;;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:26;;;;;;;;;;;-1:-1:-1;4305:241:26;-1:-1:-1;;;4305:241:26:o;3757:1095:5:-;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;27876:128:31:-;27926:10;:12;;;;;;;;27954:43;;;27974:10;27954:43;;;;;;;;;;;;;;;;;;;;;27876:128::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:26;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:26;-1:-1:-1;;;;;2306:66:26;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;11749:338:31:-;11934:7;11918:4;:12;;;:23;11910:70;;;;-1:-1:-1;;;11910:70:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12048:32;12061:4;12067;:12;;;12048;:32::i;:::-;11749:338;;:::o;5436:141:26:-;5482:7;5524:32;5536:19;;5524:11;:32::i;:::-;-1:-1:-1;;;;;5508:60:26;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5508:62:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5508:62:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5508:62:26;;-1:-1:-1;5436:141:26;:::o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;13038:425:31:-;13172:27;13194:4;13172:21;:27::i;:::-;13264:20;;;13376:14;;;;:27;-1:-1:-1;13372:85:31;;;13436:10;;13419:14;;;:27;13038:425;;:::o;14494:370::-;14578:19;;;;:33;;14602:8;14578:33;:23;:33;:::i;:::-;14572:3;:39;14568:290;;;14694:3;14672:19;;;:25;14795:10;;14778:14;;;:27;14824:23;;;;14795:10;;14824:23;14568:290;14494:370;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22209:17557:31:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:31;-1:-1:-1;;;;;22209:17557:31;;;;;;;;;;;;;;;;;;;-1:-1:-1;22209:17557:31;;;-1:-1:-1;22209:17557:31;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:31;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ECDSA.sol","externals/ERC165.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/balanceable.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","licence.sol","mocks/isValidSignatureExporter.sol","tokenWhitelist.sol","wallet.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[4327],"IController":[3892]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3875,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":3073,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":4328,"symbolAliases":[null],"unitAlias":""},"id":3876,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":3330,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":4328,"symbolAliases":[null],"unitAlias":""},"id":3877,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[3892],"name":"IController","scope":4328},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":3892,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3884,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3878,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":3879,"name":"VariableDeclaration","src":"1015:7:0"}],"id":3880,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3884,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3881,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":3882,"name":"VariableDeclaration","src":"1047:4:0"}],"id":3883,"name":"ParameterList","src":"1046:6:0"}],"id":3884,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":3892,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3891,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3885,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":3886,"name":"VariableDeclaration","src":"1076:7:0"}],"id":3887,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3891,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3888,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":3889,"name":"VariableDeclaration","src":"1108:4:0"}],"id":3890,"name":"ParameterList","src":"1107:6:0"}],"id":3891,"name":"FunctionDefinition","src":"1059:55:0"}],"id":3892,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[3072,3329,3892],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[4327,3329,3072,3892],"name":"Controller","scope":4328},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":3892,"type":"contract IController"},"id":3893,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":3894,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3072,"type":"contract Ownable"},"id":3895,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":3896,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3329,"type":"contract Transferrable"},"id":3897,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":3898,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3904,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3899,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":3900,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3904,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3901,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":3902,"name":"VariableDeclaration","src":"1564:19:0"}],"id":3903,"name":"ParameterList","src":"1546:38:0"}],"id":3904,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3910,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3905,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":3906,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3910,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3907,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":3908,"name":"VariableDeclaration","src":"1631:19:0"}],"id":3909,"name":"ParameterList","src":"1613:38:0"}],"id":3910,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3916,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3911,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":3912,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3916,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3913,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":3914,"name":"VariableDeclaration","src":"1692:14:0"}],"id":3915,"name":"ParameterList","src":"1674:33:0"}],"id":3916,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3922,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3917,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":3918,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3922,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3919,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":3920,"name":"VariableDeclaration","src":"1749:14:0"}],"id":3921,"name":"ParameterList","src":"1731:33:0"}],"id":3922,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3930,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3923,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":3924,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3930,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3925,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":3926,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3927,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":3928,"name":"VariableDeclaration","src":"1814:15:0"}],"id":3929,"name":"ParameterList","src":"1784:46:0"}],"id":3930,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3934,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3931,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":3932,"name":"VariableDeclaration","src":"1851:15:0"}],"id":3933,"name":"ParameterList","src":"1850:17:0"}],"id":3934,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3938,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3935,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":3936,"name":"VariableDeclaration","src":"1887:15:0"}],"id":3937,"name":"ParameterList","src":"1886:17:0"}],"id":3938,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":4327,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3939,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3940,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":3941,"name":"Mapping","src":"1910:24:0"}],"id":3942,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":4327,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3943,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":3944,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":4327,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3945,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3946,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":3947,"name":"Mapping","src":"1991:24:0"}],"id":3948,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":4327,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3949,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":3950,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":4327,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3951,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":3952,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":3962,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3953,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":3954,"name":"VariableDeclaration","src":"2251:30:0"}],"id":3955,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":3960,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3072,"type":"type(contract Ownable)","value":"Ownable"},"id":3956,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3954,"type":"address payable","value":"_ownerAddress_"},"id":3957,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3958,"name":"Literal","src":"2314:5:0"}],"id":3959,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":3961,"name":"Block","src":"2321:2:0"}],"id":3962,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3963,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3964,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3965,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3966,"name":"Identifier","src":"2431:3:0"}],"id":3967,"name":"MemberAccess","src":"2431:10:0"}],"id":3968,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":3969,"name":"Literal","src":"2444:21:0"}],"id":3970,"name":"FunctionCall","src":"2414:52:0"}],"id":3971,"name":"ExpressionStatement","src":"2414:52:0"},{"id":3972,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":3973,"name":"Block","src":"2404:80:0"}],"id":3974,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3975,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3976,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3977,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3978,"name":"Identifier","src":"2585:3:0"}],"id":3979,"name":"MemberAccess","src":"2585:10:0"}],"id":3980,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3981,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3982,"name":"Identifier","src":"2609:3:0"}],"id":3983,"name":"MemberAccess","src":"2609:10:0"}],"id":3984,"name":"IndexAccess","src":"2600:20:0"}],"id":3985,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":3986,"name":"Literal","src":"2622:30:0"}],"id":3987,"name":"FunctionCall","src":"2568:85:0"}],"id":3988,"name":"ExpressionStatement","src":"2568:85:0"},{"id":3989,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":3990,"name":"Block","src":"2558:113:0"}],"id":3991,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3992,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3993,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4106,"type":"function () view returns (bool)","value":"isStopped"},"id":3994,"name":"Identifier","src":"2765:9:0"}],"id":3995,"name":"FunctionCall","src":"2765:11:0"}],"id":3996,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":3997,"name":"Literal","src":"2778:23:0"}],"id":3998,"name":"FunctionCall","src":"2756:46:0"}],"id":3999,"name":"ExpressionStatement","src":"2756:46:0"},{"id":4000,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":4001,"name":"Block","src":"2746:74:0"}],"id":4002,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4016,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4003,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":4004,"name":"VariableDeclaration","src":"2961:16:0"}],"id":4005,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4010,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":4006,"name":"Identifier","src":"2988:9:0"}],"id":4007,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4008,"name":"Identifier","src":"2998:10:0"}],"id":4009,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4160,"type":"function (address)","value":"_addAdmin"},"id":4011,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4004,"type":"address","value":"_account"},"id":4012,"name":"Identifier","src":"3029:8:0"}],"id":4013,"name":"FunctionCall","src":"3019:19:0"}],"id":4014,"name":"ExpressionStatement","src":"3019:19:0"}],"id":4015,"name":"Block","src":"3009:36:0"}],"id":4016,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4028,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4017,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":4018,"name":"VariableDeclaration","src":"3195:16:0"}],"id":4019,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4022,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":4020,"name":"Identifier","src":"3222:9:0"}],"id":4021,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"function (address)","value":"_removeAdmin"},"id":4023,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4018,"type":"address","value":"_account"},"id":4024,"name":"Identifier","src":"3255:8:0"}],"id":4025,"name":"FunctionCall","src":"3242:22:0"}],"id":4026,"name":"ExpressionStatement","src":"3242:22:0"}],"id":4027,"name":"Block","src":"3232:39:0"}],"id":4028,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":4327,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4029,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4036,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4030,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":4031,"name":"VariableDeclaration","src":"3368:7:0"}],"id":4032,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":4032},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3944,"type":"uint256","value":"_adminCount"},"id":4033,"name":"Identifier","src":"3394:11:0"}],"id":4034,"name":"Return","src":"3387:18:0"}],"id":4035,"name":"Block","src":"3377:35:0"}],"id":4036,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4050,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4037,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":4038,"name":"VariableDeclaration","src":"3573:16:0"}],"id":4039,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4044,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4040,"name":"Identifier","src":"3600:16:0"}],"id":4041,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4042,"name":"Identifier","src":"3617:10:0"}],"id":4043,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"function (address)","value":"_addController"},"id":4045,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4038,"type":"address","value":"_account"},"id":4046,"name":"Identifier","src":"3653:8:0"}],"id":4047,"name":"FunctionCall","src":"3638:24:0"}],"id":4048,"name":"ExpressionStatement","src":"3638:24:0"}],"id":4049,"name":"Block","src":"3628:41:0"}],"id":4050,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4062,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4051,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":4052,"name":"VariableDeclaration","src":"3839:16:0"}],"id":4053,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4056,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4054,"name":"Identifier","src":"3866:16:0"}],"id":4055,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4270,"type":"function (address)","value":"_removeController"},"id":4057,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4052,"type":"address","value":"_account"},"id":4058,"name":"Identifier","src":"3911:8:0"}],"id":4059,"name":"FunctionCall","src":"3893:27:0"}],"id":4060,"name":"ExpressionStatement","src":"3893:27:0"}],"id":4061,"name":"Block","src":"3883:44:0"}],"id":4062,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":4327,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4063,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4070,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4064,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":4065,"name":"VariableDeclaration","src":"4072:7:0"}],"id":4066,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":4066},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3950,"type":"uint256","value":"_controllerCount"},"id":4067,"name":"Identifier","src":"4098:16:0"}],"id":4068,"name":"Return","src":"4091:23:0"}],"id":4069,"name":"Block","src":"4081:40:0"}],"id":4070,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":4327,"stateMutability":"view","superFunction":3891,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4084,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4071,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":4072,"name":"VariableDeclaration","src":"4242:16:0"}],"id":4073,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4084,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4076,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":4077,"name":"VariableDeclaration","src":"4294:4:0"}],"id":4078,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4074,"name":"Identifier","src":"4274:10:0"}],"id":4075,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":4078},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4079,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"address","value":"_account"},"id":4080,"name":"Identifier","src":"4326:8:0"}],"id":4081,"name":"IndexAccess","src":"4317:18:0"}],"id":4082,"name":"Return","src":"4310:25:0"}],"id":4083,"name":"Block","src":"4300:42:0"}],"id":4084,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":4327,"stateMutability":"view","superFunction":3884,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4098,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4085,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":4086,"name":"VariableDeclaration","src":"4476:16:0"}],"id":4087,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4098,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4090,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":4091,"name":"VariableDeclaration","src":"4528:4:0"}],"id":4092,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4088,"name":"Identifier","src":"4508:10:0"}],"id":4089,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":4092},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4093,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4086,"type":"address","value":"_account"},"id":4094,"name":"Identifier","src":"4565:8:0"}],"id":4095,"name":"IndexAccess","src":"4551:23:0"}],"id":4096,"name":"Return","src":"4544:30:0"}],"id":4097,"name":"Block","src":"4534:47:0"}],"id":4098,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":4327,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4099,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4106,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4100,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":4101,"name":"VariableDeclaration","src":"4769:4:0"}],"id":4102,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":4102},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3952,"type":"bool","value":"_stopped"},"id":4103,"name":"Identifier","src":"4792:8:0"}],"id":4104,"name":"Return","src":"4785:15:0"}],"id":4105,"name":"Block","src":"4775:32:0"}],"id":4106,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4160,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4107,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":4108,"name":"VariableDeclaration","src":"4894:16:0"}],"id":4109,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4110,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4111,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4112,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4113,"name":"Identifier","src":"4948:8:0"}],"id":4114,"name":"IndexAccess","src":"4939:18:0"}],"id":4115,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":4116,"name":"Literal","src":"4959:38:0"}],"id":4117,"name":"FunctionCall","src":"4930:68:0"}],"id":4118,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4119,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4120,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4121,"name":"Identifier","src":"5031:8:0"}],"id":4122,"name":"IndexAccess","src":"5017:23:0"}],"id":4123,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":4124,"name":"Literal","src":"5042:42:0"}],"id":4125,"name":"FunctionCall","src":"5008:77:0"}],"id":4126,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4127,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":4128,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4129,"name":"Identifier","src":"5113:8:0"}],"id":4130,"name":"FunctionCall","src":"5104:18:0"}],"id":4131,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":4132,"name":"Literal","src":"5124:39:0"}],"id":4133,"name":"FunctionCall","src":"5095:69:0"}],"id":4134,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4135,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4136,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4137,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4138,"name":"Literal","src":"5202:1:0"}],"id":4139,"name":"FunctionCall","src":"5194:10:0"}],"id":4140,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":4141,"name":"Literal","src":"5206:38:0"}],"id":4142,"name":"FunctionCall","src":"5174:71:0"}],"id":4143,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4144,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4145,"name":"Identifier","src":"5264:8:0"}],"id":4146,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4147,"name":"Literal","src":"5276:4:0"}],"id":4148,"name":"Assignment","src":"5255:25:0"}],"id":4149,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3944,"type":"uint256","value":"_adminCount"},"id":4150,"name":"Identifier","src":"5290:11:0"}],"id":4151,"name":"UnaryOperation","src":"5290:13:0"}],"id":4152,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"function (address,address)","value":"AddedAdmin"},"id":4153,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4154,"name":"Identifier","src":"5329:3:0"}],"id":4155,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"address","value":"_account"},"id":4156,"name":"Identifier","src":"5341:8:0"}],"id":4157,"name":"FunctionCall","src":"5318:32:0"}],"id":4158,"name":"EmitStatement","src":"5313:37:0"}],"id":4159,"name":"Block","src":"4920:437:0"}],"id":4160,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4188,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4161,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":4162,"name":"VariableDeclaration","src":"5456:16:0"}],"id":4163,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4164,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4165,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4166,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4162,"type":"address","value":"_account"},"id":4167,"name":"Identifier","src":"5509:8:0"}],"id":4168,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":4169,"name":"Literal","src":"5520:34:0"}],"id":4170,"name":"FunctionCall","src":"5492:63:0"}],"id":4171,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4172,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4162,"type":"address","value":"_account"},"id":4173,"name":"Identifier","src":"5574:8:0"}],"id":4174,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4175,"name":"Literal","src":"5586:5:0"}],"id":4176,"name":"Assignment","src":"5565:26:0"}],"id":4177,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3944,"type":"uint256","value":"_adminCount"},"id":4178,"name":"Identifier","src":"5601:11:0"}],"id":4179,"name":"UnaryOperation","src":"5601:13:0"}],"id":4180,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3922,"type":"function (address,address)","value":"RemovedAdmin"},"id":4181,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4182,"name":"Identifier","src":"5642:3:0"}],"id":4183,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4162,"type":"address","value":"_account"},"id":4184,"name":"Identifier","src":"5654:8:0"}],"id":4185,"name":"FunctionCall","src":"5629:34:0"}],"id":4186,"name":"EmitStatement","src":"5624:39:0"}],"id":4187,"name":"Block","src":"5482:188:0"}],"id":4188,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4189,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":4190,"name":"VariableDeclaration","src":"5767:16:0"}],"id":4191,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4192,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4193,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3942,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4194,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4195,"name":"Identifier","src":"5821:8:0"}],"id":4196,"name":"IndexAccess","src":"5812:18:0"}],"id":4197,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":4198,"name":"Literal","src":"5832:38:0"}],"id":4199,"name":"FunctionCall","src":"5803:68:0"}],"id":4200,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4201,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4202,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4203,"name":"Identifier","src":"5904:8:0"}],"id":4204,"name":"IndexAccess","src":"5890:23:0"}],"id":4205,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":4206,"name":"Literal","src":"5915:42:0"}],"id":4207,"name":"FunctionCall","src":"5881:77:0"}],"id":4208,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4209,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":4210,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4211,"name":"Identifier","src":"5986:8:0"}],"id":4212,"name":"FunctionCall","src":"5977:18:0"}],"id":4213,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":4214,"name":"Literal","src":"5997:39:0"}],"id":4215,"name":"FunctionCall","src":"5968:69:0"}],"id":4216,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4217,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4218,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4219,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4220,"name":"Literal","src":"6075:1:0"}],"id":4221,"name":"FunctionCall","src":"6067:10:0"}],"id":4222,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":4223,"name":"Literal","src":"6079:38:0"}],"id":4224,"name":"FunctionCall","src":"6047:71:0"}],"id":4225,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4226,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4227,"name":"Identifier","src":"6142:8:0"}],"id":4228,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4229,"name":"Literal","src":"6154:4:0"}],"id":4230,"name":"Assignment","src":"6128:30:0"}],"id":4231,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3950,"type":"uint256","value":"_controllerCount"},"id":4232,"name":"Identifier","src":"6168:16:0"}],"id":4233,"name":"UnaryOperation","src":"6168:18:0"}],"id":4234,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"function (address,address)","value":"AddedController"},"id":4235,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4236,"name":"Identifier","src":"6217:3:0"}],"id":4237,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"address","value":"_account"},"id":4238,"name":"Identifier","src":"6229:8:0"}],"id":4239,"name":"FunctionCall","src":"6201:37:0"}],"id":4240,"name":"EmitStatement","src":"6196:42:0"}],"id":4241,"name":"Block","src":"5793:452:0"}],"id":4242,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4270,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4243,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":4244,"name":"VariableDeclaration","src":"6354:16:0"}],"id":4245,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4246,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4247,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4248,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4244,"type":"address","value":"_account"},"id":4249,"name":"Identifier","src":"6412:8:0"}],"id":4250,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":4251,"name":"Literal","src":"6423:38:0"}],"id":4252,"name":"FunctionCall","src":"6390:72:0"}],"id":4253,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3948,"type":"mapping(address => bool)","value":"_isController"},"id":4254,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4244,"type":"address","value":"_account"},"id":4255,"name":"Identifier","src":"6486:8:0"}],"id":4256,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4257,"name":"Literal","src":"6498:5:0"}],"id":4258,"name":"Assignment","src":"6472:31:0"}],"id":4259,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3950,"type":"uint256","value":"_controllerCount"},"id":4260,"name":"Identifier","src":"6513:16:0"}],"id":4261,"name":"UnaryOperation","src":"6513:18:0"}],"id":4262,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"function (address,address)","value":"RemovedController"},"id":4263,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4264,"name":"Identifier","src":"6564:3:0"}],"id":4265,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4244,"type":"address","value":"_account"},"id":4266,"name":"Identifier","src":"6576:8:0"}],"id":4267,"name":"FunctionCall","src":"6546:39:0"}],"id":4268,"name":"EmitStatement","src":"6541:44:0"}],"id":4269,"name":"Block","src":"6380:212:0"}],"id":4270,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4271,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":4274,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4272,"name":"Identifier","src":"6690:16:0"}],"id":4273,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3952,"type":"bool","value":"_stopped"},"id":4275,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4276,"name":"Literal","src":"6728:4:0"}],"id":4277,"name":"Assignment","src":"6717:15:0"}],"id":4278,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3934,"type":"function (address)","value":"Stopped"},"id":4279,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4280,"name":"Identifier","src":"6755:3:0"}],"id":4281,"name":"MemberAccess","src":"6755:10:0"}],"id":4282,"name":"FunctionCall","src":"6747:19:0"}],"id":4283,"name":"EmitStatement","src":"6742:24:0"}],"id":4284,"name":"Block","src":"6707:66:0"}],"id":4285,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4286,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":4289,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":4287,"name":"Identifier","src":"6848:9:0"}],"id":4288,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3952,"type":"bool","value":"_stopped"},"id":4290,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4291,"name":"Literal","src":"6879:5:0"}],"id":4292,"name":"Assignment","src":"6868:16:0"}],"id":4293,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"function (address)","value":"Started"},"id":4294,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4295,"name":"Identifier","src":"6907:3:0"}],"id":4296,"name":"MemberAccess","src":"6907:10:0"}],"id":4297,"name":"FunctionCall","src":"6899:19:0"}],"id":4298,"name":"EmitStatement","src":"6894:24:0"}],"id":4299,"name":"Block","src":"6858:67:0"}],"id":4300,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":4327,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4326,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4301,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":4302,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":4326,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4303,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":4304,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":4326,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4305,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":4306,"name":"VariableDeclaration","src":"7066:15:0"}],"id":4307,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":4312,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3974,"type":"modifier ()","value":"onlyAdmin"},"id":4308,"name":"Identifier","src":"7092:9:0"}],"id":4309,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4002,"type":"modifier ()","value":"notStopped"},"id":4310,"name":"Identifier","src":"7102:10:0"}],"id":4311,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3328,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":4313,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4302,"type":"address payable","value":"_to"},"id":4314,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4304,"type":"address","value":"_asset"},"id":4315,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4306,"type":"uint256","value":"_amount"},"id":4316,"name":"Identifier","src":"7150:7:0"}],"id":4317,"name":"FunctionCall","src":"7123:35:0"}],"id":4318,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"function (address,address,uint256)","value":"Claimed"},"id":4319,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4302,"type":"address payable","value":"_to"},"id":4320,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4304,"type":"address","value":"_asset"},"id":4321,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4306,"type":"uint256","value":"_amount"},"id":4322,"name":"Identifier","src":"7194:7:0"}],"id":4323,"name":"FunctionCall","src":"7173:29:0"}],"id":4324,"name":"EmitStatement","src":"7168:34:0"}],"id":4325,"name":"Block","src":"7113:96:0"}],"id":4326,"name":"FunctionDefinition","src":"7014:195:0"}],"id":4327,"name":"ContractDefinition","src":"1460:5751:0"}],"id":4328,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[2246]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2229,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[2246],"name":"Address","scope":2247},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":2246,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":2245,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2230,"name":"ElementaryTypeName","src":"562:7:1"}],"id":2231,"name":"VariableDeclaration","src":"562:15:1"}],"id":2232,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":2245,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2233,"name":"ElementaryTypeName","src":"602:4:1"}],"id":2234,"name":"VariableDeclaration","src":"602:4:1"}],"id":2235,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[2237],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":2244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2236,"name":"ElementaryTypeName","src":"805:7:1"}],"id":2237,"name":"VariableDeclaration","src":"805:12:1"}],"id":2238,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":2237,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":2231,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":2239,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":2235},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2237,"type":"uint256","value":"size"},"id":2240,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2241,"name":"Literal","src":"947:1:1"}],"id":2242,"name":"BinaryOperation","src":"940:8:1"}],"id":2243,"name":"Return","src":"933:15:1"}],"id":2244,"name":"Block","src":"608:347:1"}],"id":2245,"name":"FunctionDefinition","src":"542:413:1"}],"id":2246,"name":"ContractDefinition","src":"94:863:1"}],"id":2247,"name":"SourceUnit","src":"0:958:1"}},"externals/ECDSA.sol":{"AST":{"attributes":{"absolutePath":"externals/ECDSA.sol","exportedSymbols":{"ECDSA":[2327]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2248,"name":"PragmaDirective","src":"1161:23:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n * These functions can be used to verify that a message was signed by the holder\nof the private keys of a given address.","fullyImplemented":true,"linearizedBaseContracts":[2327],"name":"ECDSA","scope":2328},"children":[{"attributes":{"documentation":"@dev Returns the address that signed a hashed message (`hash`) with\n`signature`. This address can then be used for verification purposes.\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\nthis function rejects them by requiring the `s` value to be in the lower\nhalf order, and the `v` value to be either 27 or 28.\n * NOTE: This call _does not revert_ if the signature is invalid, or\nif the signer is otherwise unable to be retrieved. In those scenarios,\nthe zero address is returned.\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\nverification to be secure: it is possible to craft signatures that\nrecover to arbitrary addresses for non-hashed data. A safe way to ensure\nthis is by receiving a hash of the original message (which may otherwise\nbe too long), and then calling {toEthSignedMessageHash} on it.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recover","scope":2327,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":2310,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2249,"name":"ElementaryTypeName","src":"2404:7:2"}],"id":2250,"name":"VariableDeclaration","src":"2404:12:2"},{"attributes":{"constant":false,"name":"signature","scope":2310,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2251,"name":"ElementaryTypeName","src":"2418:5:2"}],"id":2252,"name":"VariableDeclaration","src":"2418:22:2"}],"id":2253,"name":"ParameterList","src":"2403:38:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":2310,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2254,"name":"ElementaryTypeName","src":"2465:7:2"}],"id":2255,"name":"VariableDeclaration","src":"2465:7:2"}],"id":2256,"name":"ParameterList","src":"2464:9:2"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2252,"type":"bytes memory","value":"signature"},"id":2257,"name":"Identifier","src":"2526:9:2"}],"id":2258,"name":"MemberAccess","src":"2526:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":2259,"name":"Literal","src":"2546:2:2"}],"id":2260,"name":"BinaryOperation","src":"2526:22:2"},{"children":[{"attributes":{"functionReturnParameters":2256},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2261,"name":"ElementaryTypeNameExpression","src":"2572:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2262,"name":"Literal","src":"2580:1:2"}],"id":2263,"name":"FunctionCall","src":"2572:10:2"}],"id":2264,"name":"TupleExpression","src":"2571:12:2"}],"id":2265,"name":"Return","src":"2564:19:2"}],"id":2266,"name":"Block","src":"2550:44:2"}],"id":2267,"name":"IfStatement","src":"2522:72:2"},{"attributes":{"assignments":[2269],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":2309,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2268,"name":"ElementaryTypeName","src":"2660:7:2"}],"id":2269,"name":"VariableDeclaration","src":"2660:9:2"}],"id":2270,"name":"VariableDeclarationStatement","src":"2660:9:2"},{"attributes":{"assignments":[2272],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":2309,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2271,"name":"ElementaryTypeName","src":"2679:7:2"}],"id":2272,"name":"VariableDeclaration","src":"2679:9:2"}],"id":2273,"name":"VariableDeclarationStatement","src":"2679:9:2"},{"attributes":{"assignments":[2275],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":2309,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2274,"name":"ElementaryTypeName","src":"2698:5:2"}],"id":2275,"name":"VariableDeclaration","src":"2698:7:2"}],"id":2276,"name":"VariableDeclarationStatement","src":"2698:7:2"},{"attributes":{"externalReferences":[{"r":{"declaration":2269,"isOffset":false,"isSlot":false,"src":"2918:1:2","valueSize":1}},{"signature":{"declaration":2252,"isOffset":false,"isSlot":false,"src":"2933:9:2","valueSize":1}},{"v":{"declaration":2275,"isOffset":false,"isSlot":false,"src":"3008:1:2","valueSize":1}},{"s":{"declaration":2272,"isOffset":false,"isSlot":false,"src":"2963:1:2","valueSize":1}},{"signature":{"declaration":2252,"isOffset":false,"isSlot":false,"src":"2978:9:2","valueSize":1}},{"signature":{"declaration":2252,"isOffset":false,"isSlot":false,"src":"3031:9:2","valueSize":1}}],"operations":"{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}"},"children":[],"id":2277,"name":"InlineAssembly","src":"2895:164:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":2278,"name":"ElementaryTypeNameExpression","src":"3947:7:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2272,"type":"bytes32","value":"s"},"id":2279,"name":"Identifier","src":"3955:1:2"}],"id":2280,"name":"FunctionCall","src":"3947:10:2"},{"attributes":{"argumentTypes":null,"hexvalue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5789...(69 digits omitted)...7168","value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"id":2281,"name":"Literal","src":"3960:66:2"}],"id":2282,"name":"BinaryOperation","src":"3947:79:2"},{"children":[{"attributes":{"functionReturnParameters":2256},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2283,"name":"ElementaryTypeNameExpression","src":"4049:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2284,"name":"Literal","src":"4057:1:2"}],"id":2285,"name":"FunctionCall","src":"4049:10:2"}],"id":2286,"name":"Return","src":"4042:17:2"}],"id":2287,"name":"Block","src":"4028:42:2"}],"id":2288,"name":"IfStatement","src":"3943:127:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2275,"type":"uint8","value":"v"},"id":2289,"name":"Identifier","src":"4084:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":2290,"name":"Literal","src":"4089:2:2"}],"id":2291,"name":"BinaryOperation","src":"4084:7:2"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2275,"type":"uint8","value":"v"},"id":2292,"name":"Identifier","src":"4095:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":2293,"name":"Literal","src":"4100:2:2"}],"id":2294,"name":"BinaryOperation","src":"4095:7:2"}],"id":2295,"name":"BinaryOperation","src":"4084:18:2"},{"children":[{"attributes":{"functionReturnParameters":2256},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2296,"name":"ElementaryTypeNameExpression","src":"4125:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2297,"name":"Literal","src":"4133:1:2"}],"id":2298,"name":"FunctionCall","src":"4125:10:2"}],"id":2299,"name":"Return","src":"4118:17:2"}],"id":2300,"name":"Block","src":"4104:42:2"}],"id":2301,"name":"IfStatement","src":"4080:66:2"},{"attributes":{"functionReturnParameters":2256},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":10145,"type":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)","value":"ecrecover"},"id":2302,"name":"Identifier","src":"4247:9:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2250,"type":"bytes32","value":"hash"},"id":2303,"name":"Identifier","src":"4257:4:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2275,"type":"uint8","value":"v"},"id":2304,"name":"Identifier","src":"4263:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2269,"type":"bytes32","value":"r"},"id":2305,"name":"Identifier","src":"4266:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2272,"type":"bytes32","value":"s"},"id":2306,"name":"Identifier","src":"4269:1:2"}],"id":2307,"name":"FunctionCall","src":"4247:24:2"}],"id":2308,"name":"Return","src":"4240:31:2"}],"id":2309,"name":"Block","src":"2474:1804:2"}],"id":2310,"name":"FunctionDefinition","src":"2387:1891:2"},{"attributes":{"documentation":"@dev Returns an Ethereum Signed Message, created from a `hash`. This\nreplicates the behavior of the\nhttps://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\nJSON-RPC method.\n * See {recover}.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toEthSignedMessageHash","scope":2327,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":2326,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2311,"name":"ElementaryTypeName","src":"4574:7:2"}],"id":2312,"name":"VariableDeclaration","src":"4574:12:2"}],"id":2313,"name":"ParameterList","src":"4573:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":2326,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2314,"name":"ElementaryTypeName","src":"4611:7:2"}],"id":2315,"name":"VariableDeclaration","src":"4611:7:2"}],"id":2316,"name":"ParameterList","src":"4610:9:2"},{"children":[{"attributes":{"functionReturnParameters":2316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2317,"name":"Identifier","src":"4731:9:2"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string \"\u0019Ethereum Signed Message:\n32\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2318,"name":"Identifier","src":"4741:3:2"}],"id":2319,"name":"MemberAccess","src":"4741:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"19457468657265756d205369676e6564204d6573736167653a0a3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0019Ethereum Signed Message:\n32\"","value":"\u0019Ethereum Signed Message:\n32"},"id":2320,"name":"Literal","src":"4758:34:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2312,"type":"bytes32","value":"hash"},"id":2321,"name":"Identifier","src":"4794:4:2"}],"id":2322,"name":"FunctionCall","src":"4741:58:2"}],"id":2323,"name":"FunctionCall","src":"4731:69:2"}],"id":2324,"name":"Return","src":"4724:76:2"}],"id":2325,"name":"Block","src":"4620:187:2"}],"id":2326,"name":"FunctionDefinition","src":"4542:265:2"}],"id":2327,"name":"ContractDefinition","src":"1392:3417:2"}],"id":2328,"name":"SourceUnit","src":"1161:3649:2"}},"externals/ERC165.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC165.sol","exportedSymbols":{"ERC165":[2337]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":2329,"name":"PragmaDirective","src":"0:24:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC165 interface specifies a standard way of querying if a contract implements an interface.","fullyImplemented":false,"linearizedBaseContracts":[2337],"name":"ERC165","scope":2338},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2337,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2336,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2330,"name":"ElementaryTypeName","src":"180:6:3"}],"id":2331,"name":"VariableDeclaration","src":"180:6:3"}],"id":2332,"name":"ParameterList","src":"179:8:3"},{"children":[{"attributes":{"constant":false,"name":"","scope":2336,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2333,"name":"ElementaryTypeName","src":"211:4:3"}],"id":2334,"name":"VariableDeclaration","src":"211:4:3"}],"id":2335,"name":"ParameterList","src":"210:6:3"}],"id":2336,"name":"FunctionDefinition","src":"153:64:3"}],"id":2337,"name":"ContractDefinition","src":"130:89:3"}],"id":2338,"name":"SourceUnit","src":"0:220:3"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[2390]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":2339,"name":"PragmaDirective","src":"0:24:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[2390],"name":"ERC20","scope":2391},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":2390,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":2348,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2340,"name":"ElementaryTypeName","src":"193:7:4"}],"id":2341,"name":"VariableDeclaration","src":"193:14:4"},{"attributes":{"constant":false,"name":"_spender","scope":2348,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2342,"name":"ElementaryTypeName","src":"209:7:4"}],"id":2343,"name":"VariableDeclaration","src":"209:16:4"}],"id":2344,"name":"ParameterList","src":"192:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2345,"name":"ElementaryTypeName","src":"250:7:4"}],"id":2346,"name":"VariableDeclaration","src":"250:7:4"}],"id":2347,"name":"ParameterList","src":"249:9:4"}],"id":2348,"name":"FunctionDefinition","src":"174:85:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":2390,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":2357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2349,"name":"ElementaryTypeName","src":"281:7:4"}],"id":2350,"name":"VariableDeclaration","src":"281:16:4"},{"attributes":{"constant":false,"name":"_value","scope":2357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2351,"name":"ElementaryTypeName","src":"299:7:4"}],"id":2352,"name":"VariableDeclaration","src":"299:14:4"}],"id":2353,"name":"ParameterList","src":"280:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2357,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2354,"name":"ElementaryTypeName","src":"333:4:4"}],"id":2355,"name":"VariableDeclaration","src":"333:4:4"}],"id":2356,"name":"ParameterList","src":"332:6:4"}],"id":2357,"name":"FunctionDefinition","src":"264:75:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":2390,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":2364,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2358,"name":"ElementaryTypeName","src":"363:7:4"}],"id":2359,"name":"VariableDeclaration","src":"363:12:4"}],"id":2360,"name":"ParameterList","src":"362:14:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2364,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2361,"name":"ElementaryTypeName","src":"400:7:4"}],"id":2362,"name":"VariableDeclaration","src":"400:7:4"}],"id":2363,"name":"ParameterList","src":"399:9:4"}],"id":2364,"name":"FunctionDefinition","src":"344:65:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":2390,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2365,"name":"ParameterList","src":"434:2:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2369,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2366,"name":"ElementaryTypeName","src":"460:7:4"}],"id":2367,"name":"VariableDeclaration","src":"460:7:4"}],"id":2368,"name":"ParameterList","src":"459:9:4"}],"id":2369,"name":"FunctionDefinition","src":"414:55:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":2390,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2378,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2370,"name":"ElementaryTypeName","src":"492:7:4"}],"id":2371,"name":"VariableDeclaration","src":"492:11:4"},{"attributes":{"constant":false,"name":"_value","scope":2378,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2372,"name":"ElementaryTypeName","src":"505:7:4"}],"id":2373,"name":"VariableDeclaration","src":"505:14:4"}],"id":2374,"name":"ParameterList","src":"491:29:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2378,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2375,"name":"ElementaryTypeName","src":"539:4:4"}],"id":2376,"name":"VariableDeclaration","src":"539:4:4"}],"id":2377,"name":"ParameterList","src":"538:6:4"}],"id":2378,"name":"FunctionDefinition","src":"474:71:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":2390,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":2389,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2379,"name":"ElementaryTypeName","src":"572:7:4"}],"id":2380,"name":"VariableDeclaration","src":"572:13:4"},{"attributes":{"constant":false,"name":"_to","scope":2389,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2381,"name":"ElementaryTypeName","src":"587:7:4"}],"id":2382,"name":"VariableDeclaration","src":"587:11:4"},{"attributes":{"constant":false,"name":"_value","scope":2389,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2383,"name":"ElementaryTypeName","src":"600:7:4"}],"id":2384,"name":"VariableDeclaration","src":"600:14:4"}],"id":2385,"name":"ParameterList","src":"571:44:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2389,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2386,"name":"ElementaryTypeName","src":"634:4:4"}],"id":2387,"name":"VariableDeclaration","src":"634:4:4"}],"id":2388,"name":"ParameterList","src":"633:6:4"}],"id":2389,"name":"FunctionDefinition","src":"550:90:4"}],"id":2390,"name":"ContractDefinition","src":"152:490:4"}],"id":2391,"name":"SourceUnit","src":"0:643:4"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[2609]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2392,"name":"PragmaDirective","src":"1161:23:5"},{"attributes":{"SourceUnit":2391,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":2610,"symbolAliases":[null],"unitAlias":""},"id":2393,"name":"ImportDirective","src":"1186:21:5"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":2610,"symbolAliases":[null],"unitAlias":""},"id":2394,"name":"ImportDirective","src":"1208:24:5"},{"attributes":{"SourceUnit":2247,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":2610,"symbolAliases":[null],"unitAlias":""},"id":2395,"name":"ImportDirective","src":"1233:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[2609],"name":"SafeERC20","scope":2610},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":2396,"name":"UserDefinedTypeName","src":"1745:8:5"},{"attributes":{"name":"uint256","type":"uint256"},"id":2397,"name":"ElementaryTypeName","src":"1758:7:5"}],"id":2398,"name":"UsingForDirective","src":"1739:27:5"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":2246,"type":"library Address"},"id":2399,"name":"UserDefinedTypeName","src":"1777:7:5"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2400,"name":"ElementaryTypeName","src":"1789:7:5"}],"id":2401,"name":"UsingForDirective","src":"1771:26:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2423,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2402,"name":"UserDefinedTypeName","src":"1825:5:5"}],"id":2403,"name":"VariableDeclaration","src":"1825:11:5"},{"attributes":{"constant":false,"name":"to","scope":2423,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2404,"name":"ElementaryTypeName","src":"1838:7:5"}],"id":2405,"name":"VariableDeclaration","src":"1838:10:5"},{"attributes":{"constant":false,"name":"value","scope":2423,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2406,"name":"ElementaryTypeName","src":"1850:7:5"}],"id":2407,"name":"VariableDeclaration","src":"1850:13:5"}],"id":2408,"name":"ParameterList","src":"1824:40:5"},{"attributes":{"parameters":[null]},"children":[],"id":2409,"name":"ParameterList","src":"1874:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2410,"name":"Identifier","src":"1884:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"contract ERC20","value":"token"},"id":2411,"name":"Identifier","src":"1903:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2412,"name":"Identifier","src":"1910:3:5"}],"id":2413,"name":"MemberAccess","src":"1910:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":2378,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"contract ERC20","value":"token"},"id":2414,"name":"Identifier","src":"1933:5:5"}],"id":2415,"name":"MemberAccess","src":"1933:14:5"}],"id":2416,"name":"MemberAccess","src":"1933:23:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2405,"type":"address","value":"to"},"id":2417,"name":"Identifier","src":"1958:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2407,"type":"uint256","value":"value"},"id":2418,"name":"Identifier","src":"1962:5:5"}],"id":2419,"name":"FunctionCall","src":"1910:58:5"}],"id":2420,"name":"FunctionCall","src":"1884:85:5"}],"id":2421,"name":"ExpressionStatement","src":"1884:85:5"}],"id":2422,"name":"Block","src":"1874:102:5"}],"id":2423,"name":"FunctionDefinition","src":"1803:173:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2448,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2424,"name":"UserDefinedTypeName","src":"2008:5:5"}],"id":2425,"name":"VariableDeclaration","src":"2008:11:5"},{"attributes":{"constant":false,"name":"from","scope":2448,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2426,"name":"ElementaryTypeName","src":"2021:7:5"}],"id":2427,"name":"VariableDeclaration","src":"2021:12:5"},{"attributes":{"constant":false,"name":"to","scope":2448,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2428,"name":"ElementaryTypeName","src":"2035:7:5"}],"id":2429,"name":"VariableDeclaration","src":"2035:10:5"},{"attributes":{"constant":false,"name":"value","scope":2448,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2430,"name":"ElementaryTypeName","src":"2047:7:5"}],"id":2431,"name":"VariableDeclaration","src":"2047:13:5"}],"id":2432,"name":"ParameterList","src":"2007:54:5"},{"attributes":{"parameters":[null]},"children":[],"id":2433,"name":"ParameterList","src":"2071:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2434,"name":"Identifier","src":"2081:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2425,"type":"contract ERC20","value":"token"},"id":2435,"name":"Identifier","src":"2100:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2436,"name":"Identifier","src":"2107:3:5"}],"id":2437,"name":"MemberAccess","src":"2107:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":2389,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2425,"type":"contract ERC20","value":"token"},"id":2438,"name":"Identifier","src":"2130:5:5"}],"id":2439,"name":"MemberAccess","src":"2130:18:5"}],"id":2440,"name":"MemberAccess","src":"2130:27:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2427,"type":"address","value":"from"},"id":2441,"name":"Identifier","src":"2159:4:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2429,"type":"address","value":"to"},"id":2442,"name":"Identifier","src":"2165:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2431,"type":"uint256","value":"value"},"id":2443,"name":"Identifier","src":"2169:5:5"}],"id":2444,"name":"FunctionCall","src":"2107:68:5"}],"id":2445,"name":"FunctionCall","src":"2081:95:5"}],"id":2446,"name":"ExpressionStatement","src":"2081:95:5"}],"id":2447,"name":"Block","src":"2071:112:5"}],"id":2448,"name":"FunctionDefinition","src":"1982:201:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2489,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2449,"name":"UserDefinedTypeName","src":"2210:5:5"}],"id":2450,"name":"VariableDeclaration","src":"2210:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2489,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2451,"name":"ElementaryTypeName","src":"2223:7:5"}],"id":2452,"name":"VariableDeclaration","src":"2223:15:5"},{"attributes":{"constant":false,"name":"value","scope":2489,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2453,"name":"ElementaryTypeName","src":"2240:7:5"}],"id":2454,"name":"VariableDeclaration","src":"2240:13:5"}],"id":2455,"name":"ParameterList","src":"2209:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2456,"name":"ParameterList","src":"2264:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2457,"name":"Identifier","src":"2544:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2454,"type":"uint256","value":"value"},"id":2458,"name":"Identifier","src":"2553:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2459,"name":"Literal","src":"2562:1:5"}],"id":2460,"name":"BinaryOperation","src":"2553:10:5"}],"id":2461,"name":"TupleExpression","src":"2552:12:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2348,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2450,"type":"contract ERC20","value":"token"},"id":2462,"name":"Identifier","src":"2569:5:5"}],"id":2463,"name":"MemberAccess","src":"2569:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2609","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2464,"name":"ElementaryTypeNameExpression","src":"2585:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10175,"type":"library SafeERC20","value":"this"},"id":2465,"name":"Identifier","src":"2593:4:5"}],"id":2466,"name":"FunctionCall","src":"2585:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2452,"type":"address","value":"spender"},"id":2467,"name":"Identifier","src":"2600:7:5"}],"id":2468,"name":"FunctionCall","src":"2569:39:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2469,"name":"Literal","src":"2612:1:5"}],"id":2470,"name":"BinaryOperation","src":"2569:44:5"}],"id":2471,"name":"TupleExpression","src":"2568:46:5"}],"id":2472,"name":"BinaryOperation","src":"2552:62:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":2473,"name":"Literal","src":"2628:56:5"}],"id":2474,"name":"FunctionCall","src":"2544:150:5"}],"id":2475,"name":"ExpressionStatement","src":"2544:150:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2476,"name":"Identifier","src":"2704:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2450,"type":"contract ERC20","value":"token"},"id":2477,"name":"Identifier","src":"2723:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2478,"name":"Identifier","src":"2730:3:5"}],"id":2479,"name":"MemberAccess","src":"2730:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2357,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2450,"type":"contract ERC20","value":"token"},"id":2480,"name":"Identifier","src":"2753:5:5"}],"id":2481,"name":"MemberAccess","src":"2753:13:5"}],"id":2482,"name":"MemberAccess","src":"2753:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2452,"type":"address","value":"spender"},"id":2483,"name":"Identifier","src":"2777:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2454,"type":"uint256","value":"value"},"id":2484,"name":"Identifier","src":"2786:5:5"}],"id":2485,"name":"FunctionCall","src":"2730:62:5"}],"id":2486,"name":"FunctionCall","src":"2704:89:5"}],"id":2487,"name":"ExpressionStatement","src":"2704:89:5"}],"id":2488,"name":"Block","src":"2264:536:5"}],"id":2489,"name":"FunctionDefinition","src":"2189:611:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2524,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2490,"name":"UserDefinedTypeName","src":"2837:5:5"}],"id":2491,"name":"VariableDeclaration","src":"2837:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2524,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2492,"name":"ElementaryTypeName","src":"2850:7:5"}],"id":2493,"name":"VariableDeclaration","src":"2850:15:5"},{"attributes":{"constant":false,"name":"value","scope":2524,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2494,"name":"ElementaryTypeName","src":"2867:7:5"}],"id":2495,"name":"VariableDeclaration","src":"2867:13:5"}],"id":2496,"name":"ParameterList","src":"2836:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2497,"name":"ParameterList","src":"2891:0:5"},{"children":[{"attributes":{"assignments":[2499]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2523,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2498,"name":"ElementaryTypeName","src":"2901:7:5"}],"id":2499,"name":"VariableDeclaration","src":"2901:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2348,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2491,"type":"contract ERC20","value":"token"},"id":2500,"name":"Identifier","src":"2924:5:5"}],"id":2501,"name":"MemberAccess","src":"2924:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2609","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2502,"name":"ElementaryTypeNameExpression","src":"2940:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10175,"type":"library SafeERC20","value":"this"},"id":2503,"name":"Identifier","src":"2948:4:5"}],"id":2504,"name":"FunctionCall","src":"2940:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2493,"type":"address","value":"spender"},"id":2505,"name":"Identifier","src":"2955:7:5"}],"id":2506,"name":"FunctionCall","src":"2924:39:5"}],"id":2507,"name":"MemberAccess","src":"2924:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2495,"type":"uint256","value":"value"},"id":2508,"name":"Identifier","src":"2968:5:5"}],"id":2509,"name":"FunctionCall","src":"2924:50:5"}],"id":2510,"name":"VariableDeclarationStatement","src":"2901:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2511,"name":"Identifier","src":"2984:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2491,"type":"contract ERC20","value":"token"},"id":2512,"name":"Identifier","src":"3003:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2513,"name":"Identifier","src":"3010:3:5"}],"id":2514,"name":"MemberAccess","src":"3010:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2357,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2491,"type":"contract ERC20","value":"token"},"id":2515,"name":"Identifier","src":"3033:5:5"}],"id":2516,"name":"MemberAccess","src":"3033:13:5"}],"id":2517,"name":"MemberAccess","src":"3033:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2493,"type":"address","value":"spender"},"id":2518,"name":"Identifier","src":"3057:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2499,"type":"uint256","value":"newAllowance"},"id":2519,"name":"Identifier","src":"3066:12:5"}],"id":2520,"name":"FunctionCall","src":"3010:69:5"}],"id":2521,"name":"FunctionCall","src":"2984:96:5"}],"id":2522,"name":"ExpressionStatement","src":"2984:96:5"}],"id":2523,"name":"Block","src":"2891:196:5"}],"id":2524,"name":"FunctionDefinition","src":"2806:281:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2559,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2525,"name":"UserDefinedTypeName","src":"3124:5:5"}],"id":2526,"name":"VariableDeclaration","src":"3124:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2527,"name":"ElementaryTypeName","src":"3137:7:5"}],"id":2528,"name":"VariableDeclaration","src":"3137:15:5"},{"attributes":{"constant":false,"name":"value","scope":2559,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2529,"name":"ElementaryTypeName","src":"3154:7:5"}],"id":2530,"name":"VariableDeclaration","src":"3154:13:5"}],"id":2531,"name":"ParameterList","src":"3123:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2532,"name":"ParameterList","src":"3178:0:5"},{"children":[{"attributes":{"assignments":[2534]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2558,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2533,"name":"ElementaryTypeName","src":"3188:7:5"}],"id":2534,"name":"VariableDeclaration","src":"3188:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2348,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2526,"type":"contract ERC20","value":"token"},"id":2535,"name":"Identifier","src":"3211:5:5"}],"id":2536,"name":"MemberAccess","src":"3211:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2609","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2537,"name":"ElementaryTypeNameExpression","src":"3227:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10175,"type":"library SafeERC20","value":"this"},"id":2538,"name":"Identifier","src":"3235:4:5"}],"id":2539,"name":"FunctionCall","src":"3227:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2528,"type":"address","value":"spender"},"id":2540,"name":"Identifier","src":"3242:7:5"}],"id":2541,"name":"FunctionCall","src":"3211:39:5"}],"id":2542,"name":"MemberAccess","src":"3211:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2530,"type":"uint256","value":"value"},"id":2543,"name":"Identifier","src":"3255:5:5"}],"id":2544,"name":"FunctionCall","src":"3211:50:5"}],"id":2545,"name":"VariableDeclarationStatement","src":"3188:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2546,"name":"Identifier","src":"3271:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2526,"type":"contract ERC20","value":"token"},"id":2547,"name":"Identifier","src":"3290:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2548,"name":"Identifier","src":"3297:3:5"}],"id":2549,"name":"MemberAccess","src":"3297:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2357,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2526,"type":"contract ERC20","value":"token"},"id":2550,"name":"Identifier","src":"3320:5:5"}],"id":2551,"name":"MemberAccess","src":"3320:13:5"}],"id":2552,"name":"MemberAccess","src":"3320:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2528,"type":"address","value":"spender"},"id":2553,"name":"Identifier","src":"3344:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2534,"type":"uint256","value":"newAllowance"},"id":2554,"name":"Identifier","src":"3353:12:5"}],"id":2555,"name":"FunctionCall","src":"3297:69:5"}],"id":2556,"name":"FunctionCall","src":"3271:96:5"}],"id":2557,"name":"ExpressionStatement","src":"3271:96:5"}],"id":2558,"name":"Block","src":"3178:196:5"}],"id":2559,"name":"FunctionDefinition","src":"3093:281:5"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":2609,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2608,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":2560,"name":"UserDefinedTypeName","src":"3785:5:5"}],"id":2561,"name":"VariableDeclaration","src":"3785:11:5"},{"attributes":{"constant":false,"name":"data","scope":2608,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2562,"name":"ElementaryTypeName","src":"3798:5:5"}],"id":2563,"name":"VariableDeclaration","src":"3798:17:5"}],"id":2564,"name":"ParameterList","src":"3784:32:5"},{"attributes":{"parameters":[null]},"children":[],"id":2565,"name":"ParameterList","src":"3826:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2566,"name":"Identifier","src":"4344:7:5"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":2245,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2567,"name":"ElementaryTypeNameExpression","src":"4352:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2561,"type":"contract ERC20","value":"token"},"id":2568,"name":"Identifier","src":"4360:5:5"}],"id":2569,"name":"FunctionCall","src":"4352:14:5"}],"id":2570,"name":"MemberAccess","src":"4352:25:5"}],"id":2571,"name":"FunctionCall","src":"4352:27:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":2572,"name":"Literal","src":"4381:33:5"}],"id":2573,"name":"FunctionCall","src":"4344:71:5"}],"id":2574,"name":"ExpressionStatement","src":"4344:71:5"},{"attributes":{"assignments":[2576,2578]},"children":[{"attributes":{"constant":false,"name":"success","scope":2607,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2575,"name":"ElementaryTypeName","src":"4486:4:5"}],"id":2576,"name":"VariableDeclaration","src":"4486:12:5"},{"attributes":{"constant":false,"name":"returndata","scope":2607,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2577,"name":"ElementaryTypeName","src":"4500:5:5"}],"id":2578,"name":"VariableDeclaration","src":"4500:23:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2390","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2579,"name":"ElementaryTypeNameExpression","src":"4527:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2561,"type":"contract ERC20","value":"token"},"id":2580,"name":"Identifier","src":"4535:5:5"}],"id":2581,"name":"FunctionCall","src":"4527:14:5"}],"id":2582,"name":"MemberAccess","src":"4527:19:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"bytes memory","value":"data"},"id":2583,"name":"Identifier","src":"4547:4:5"}],"id":2584,"name":"FunctionCall","src":"4527:25:5"}],"id":2585,"name":"VariableDeclarationStatement","src":"4485:67:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2586,"name":"Identifier","src":"4562:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2576,"type":"bool","value":"success"},"id":2587,"name":"Identifier","src":"4570:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":2588,"name":"Literal","src":"4579:34:5"}],"id":2589,"name":"FunctionCall","src":"4562:52:5"}],"id":2590,"name":"ExpressionStatement","src":"4562:52:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2578,"type":"bytes memory","value":"returndata"},"id":2591,"name":"Identifier","src":"4629:10:5"}],"id":2592,"name":"MemberAccess","src":"4629:17:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2593,"name":"Literal","src":"4649:1:5"}],"id":2594,"name":"BinaryOperation","src":"4629:21:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2595,"name":"Identifier","src":"4750:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":2596,"name":"Identifier","src":"4758:3:5"}],"id":2597,"name":"MemberAccess","src":"4758:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2578,"type":"bytes memory","value":"returndata"},"id":2598,"name":"Identifier","src":"4769:10:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":2599,"name":"ElementaryTypeNameExpression","src":"4782:4:5"}],"id":2600,"name":"TupleExpression","src":"4781:6:5"}],"id":2601,"name":"FunctionCall","src":"4758:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":2602,"name":"Literal","src":"4790:44:5"}],"id":2603,"name":"FunctionCall","src":"4750:85:5"}],"id":2604,"name":"ExpressionStatement","src":"4750:85:5"}],"id":2605,"name":"Block","src":"4652:194:5"}],"id":2606,"name":"IfStatement","src":"4625:221:5"}],"id":2607,"name":"Block","src":"3826:1026:5"}],"id":2608,"name":"FunctionDefinition","src":"3757:1095:5"}],"id":2609,"name":"ContractDefinition","src":"1715:3139:5"}],"id":2610,"name":"SourceUnit","src":"1161:3694:5"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[2742]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2611,"name":"PragmaDirective","src":"0:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[2742],"name":"SafeMath","scope":2743},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2612,"name":"ElementaryTypeName","src":"847:7:6"}],"id":2613,"name":"VariableDeclaration","src":"847:9:6"},{"attributes":{"constant":false,"name":"b","scope":2636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2614,"name":"ElementaryTypeName","src":"858:7:6"}],"id":2615,"name":"VariableDeclaration","src":"858:9:6"}],"id":2616,"name":"ParameterList","src":"846:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2617,"name":"ElementaryTypeName","src":"892:7:6"}],"id":2618,"name":"VariableDeclaration","src":"892:7:6"}],"id":2619,"name":"ParameterList","src":"891:9:6"},{"children":[{"attributes":{"assignments":[2621]},"children":[{"attributes":{"constant":false,"name":"c","scope":2635,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2620,"name":"ElementaryTypeName","src":"911:7:6"}],"id":2621,"name":"VariableDeclaration","src":"911:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2613,"type":"uint256","value":"a"},"id":2622,"name":"Identifier","src":"923:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2615,"type":"uint256","value":"b"},"id":2623,"name":"Identifier","src":"927:1:6"}],"id":2624,"name":"BinaryOperation","src":"923:5:6"}],"id":2625,"name":"VariableDeclarationStatement","src":"911:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2626,"name":"Identifier","src":"938:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2621,"type":"uint256","value":"c"},"id":2627,"name":"Identifier","src":"946:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2613,"type":"uint256","value":"a"},"id":2628,"name":"Identifier","src":"951:1:6"}],"id":2629,"name":"BinaryOperation","src":"946:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":2630,"name":"Literal","src":"954:29:6"}],"id":2631,"name":"FunctionCall","src":"938:46:6"}],"id":2632,"name":"ExpressionStatement","src":"938:46:6"},{"attributes":{"functionReturnParameters":2619},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2621,"type":"uint256","value":"c"},"id":2633,"name":"Identifier","src":"1002:1:6"}],"id":2634,"name":"Return","src":"995:8:6"}],"id":2635,"name":"Block","src":"901:109:6"}],"id":2636,"name":"FunctionDefinition","src":"834:176:6"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2637,"name":"ElementaryTypeName","src":"1287:7:6"}],"id":2638,"name":"VariableDeclaration","src":"1287:9:6"},{"attributes":{"constant":false,"name":"b","scope":2661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2639,"name":"ElementaryTypeName","src":"1298:7:6"}],"id":2640,"name":"VariableDeclaration","src":"1298:9:6"}],"id":2641,"name":"ParameterList","src":"1286:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2642,"name":"ElementaryTypeName","src":"1332:7:6"}],"id":2643,"name":"VariableDeclaration","src":"1332:7:6"}],"id":2644,"name":"ParameterList","src":"1331:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2645,"name":"Identifier","src":"1351:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"uint256","value":"b"},"id":2646,"name":"Identifier","src":"1359:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2638,"type":"uint256","value":"a"},"id":2647,"name":"Identifier","src":"1364:1:6"}],"id":2648,"name":"BinaryOperation","src":"1359:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":2649,"name":"Literal","src":"1367:32:6"}],"id":2650,"name":"FunctionCall","src":"1351:49:6"}],"id":2651,"name":"ExpressionStatement","src":"1351:49:6"},{"attributes":{"assignments":[2653]},"children":[{"attributes":{"constant":false,"name":"c","scope":2660,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2652,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":2653,"name":"VariableDeclaration","src":"1410:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2638,"type":"uint256","value":"a"},"id":2654,"name":"Identifier","src":"1422:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"uint256","value":"b"},"id":2655,"name":"Identifier","src":"1426:1:6"}],"id":2656,"name":"BinaryOperation","src":"1422:5:6"}],"id":2657,"name":"VariableDeclarationStatement","src":"1410:17:6"},{"attributes":{"functionReturnParameters":2644},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2653,"type":"uint256","value":"c"},"id":2658,"name":"Identifier","src":"1445:1:6"}],"id":2659,"name":"Return","src":"1438:8:6"}],"id":2660,"name":"Block","src":"1341:112:6"}],"id":2661,"name":"FunctionDefinition","src":"1274:179:6"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2662,"name":"ElementaryTypeName","src":"1706:7:6"}],"id":2663,"name":"VariableDeclaration","src":"1706:9:6"},{"attributes":{"constant":false,"name":"b","scope":2695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2664,"name":"ElementaryTypeName","src":"1717:7:6"}],"id":2665,"name":"VariableDeclaration","src":"1717:9:6"}],"id":2666,"name":"ParameterList","src":"1705:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2667,"name":"ElementaryTypeName","src":"1751:7:6"}],"id":2668,"name":"VariableDeclaration","src":"1751:7:6"}],"id":2669,"name":"ParameterList","src":"1750:9:6"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2663,"type":"uint256","value":"a"},"id":2670,"name":"Identifier","src":"1991:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2671,"name":"Literal","src":"1996:1:6"}],"id":2672,"name":"BinaryOperation","src":"1991:6:6"},{"children":[{"attributes":{"functionReturnParameters":2669},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2673,"name":"Literal","src":"2020:1:6"}],"id":2674,"name":"Return","src":"2013:8:6"}],"id":2675,"name":"Block","src":"1999:33:6"}],"id":2676,"name":"IfStatement","src":"1987:45:6"},{"attributes":{"assignments":[2678]},"children":[{"attributes":{"constant":false,"name":"c","scope":2694,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2677,"name":"ElementaryTypeName","src":"2042:7:6"}],"id":2678,"name":"VariableDeclaration","src":"2042:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2663,"type":"uint256","value":"a"},"id":2679,"name":"Identifier","src":"2054:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2665,"type":"uint256","value":"b"},"id":2680,"name":"Identifier","src":"2058:1:6"}],"id":2681,"name":"BinaryOperation","src":"2054:5:6"}],"id":2682,"name":"VariableDeclarationStatement","src":"2042:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2683,"name":"Identifier","src":"2069:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"uint256","value":"c"},"id":2684,"name":"Identifier","src":"2077:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2663,"type":"uint256","value":"a"},"id":2685,"name":"Identifier","src":"2081:1:6"}],"id":2686,"name":"BinaryOperation","src":"2077:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2665,"type":"uint256","value":"b"},"id":2687,"name":"Identifier","src":"2086:1:6"}],"id":2688,"name":"BinaryOperation","src":"2077:10:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":2689,"name":"Literal","src":"2089:35:6"}],"id":2690,"name":"FunctionCall","src":"2069:56:6"}],"id":2691,"name":"ExpressionStatement","src":"2069:56:6"},{"attributes":{"functionReturnParameters":2669},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"uint256","value":"c"},"id":2692,"name":"Identifier","src":"2143:1:6"}],"id":2693,"name":"Return","src":"2136:8:6"}],"id":2694,"name":"Block","src":"1760:391:6"}],"id":2695,"name":"FunctionDefinition","src":"1693:458:6"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2696,"name":"ElementaryTypeName","src":"2619:7:6"}],"id":2697,"name":"VariableDeclaration","src":"2619:9:6"},{"attributes":{"constant":false,"name":"b","scope":2720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2698,"name":"ElementaryTypeName","src":"2630:7:6"}],"id":2699,"name":"VariableDeclaration","src":"2630:9:6"}],"id":2700,"name":"ParameterList","src":"2618:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2701,"name":"ElementaryTypeName","src":"2664:7:6"}],"id":2702,"name":"VariableDeclaration","src":"2664:7:6"}],"id":2703,"name":"ParameterList","src":"2663:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2704,"name":"Identifier","src":"2749:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2699,"type":"uint256","value":"b"},"id":2705,"name":"Identifier","src":"2757:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2706,"name":"Literal","src":"2761:1:6"}],"id":2707,"name":"BinaryOperation","src":"2757:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":2708,"name":"Literal","src":"2764:28:6"}],"id":2709,"name":"FunctionCall","src":"2749:44:6"}],"id":2710,"name":"ExpressionStatement","src":"2749:44:6"},{"attributes":{"assignments":[2712]},"children":[{"attributes":{"constant":false,"name":"c","scope":2719,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2711,"name":"ElementaryTypeName","src":"2803:7:6"}],"id":2712,"name":"VariableDeclaration","src":"2803:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2697,"type":"uint256","value":"a"},"id":2713,"name":"Identifier","src":"2815:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2699,"type":"uint256","value":"b"},"id":2714,"name":"Identifier","src":"2819:1:6"}],"id":2715,"name":"BinaryOperation","src":"2815:5:6"}],"id":2716,"name":"VariableDeclarationStatement","src":"2803:17:6"},{"attributes":{"functionReturnParameters":2703},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"uint256","value":"c"},"id":2717,"name":"Identifier","src":"2924:1:6"}],"id":2718,"name":"Return","src":"2917:8:6"}],"id":2719,"name":"Block","src":"2673:259:6"}],"id":2720,"name":"FunctionDefinition","src":"2606:326:6"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":2742,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2721,"name":"ElementaryTypeName","src":"3389:7:6"}],"id":2722,"name":"VariableDeclaration","src":"3389:9:6"},{"attributes":{"constant":false,"name":"b","scope":2741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2723,"name":"ElementaryTypeName","src":"3400:7:6"}],"id":2724,"name":"VariableDeclaration","src":"3400:9:6"}],"id":2725,"name":"ParameterList","src":"3388:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2726,"name":"ElementaryTypeName","src":"3434:7:6"}],"id":2727,"name":"VariableDeclaration","src":"3434:7:6"}],"id":2728,"name":"ParameterList","src":"3433:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2729,"name":"Identifier","src":"3453:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2724,"type":"uint256","value":"b"},"id":2730,"name":"Identifier","src":"3461:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2731,"name":"Literal","src":"3466:1:6"}],"id":2732,"name":"BinaryOperation","src":"3461:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":2733,"name":"Literal","src":"3469:26:6"}],"id":2734,"name":"FunctionCall","src":"3453:43:6"}],"id":2735,"name":"ExpressionStatement","src":"3453:43:6"},{"attributes":{"functionReturnParameters":2728},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2722,"type":"uint256","value":"a"},"id":2736,"name":"Identifier","src":"3513:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2724,"type":"uint256","value":"b"},"id":2737,"name":"Identifier","src":"3517:1:6"}],"id":2738,"name":"BinaryOperation","src":"3513:5:6"}],"id":2739,"name":"Return","src":"3506:12:6"}],"id":2740,"name":"Block","src":"3443:82:6"}],"id":2741,"name":"FunctionDefinition","src":"3376:149:6"}],"id":2742,"name":"ContractDefinition","src":"589:2938:6"}],"id":2743,"name":"SourceUnit","src":"0:3528:6"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[4464]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4329,"name":"PragmaDirective","src":"1400:23:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4464],"name":"ENS","scope":4465},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4337,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4330,"name":"ElementaryTypeName","src":"1534:7:7"}],"id":4331,"name":"VariableDeclaration","src":"1534:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":4337,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4332,"name":"ElementaryTypeName","src":"1557:7:7"}],"id":4333,"name":"VariableDeclaration","src":"1557:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4337,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4334,"name":"ElementaryTypeName","src":"1581:7:7"}],"id":4335,"name":"VariableDeclaration","src":"1581:14:7"}],"id":4336,"name":"ParameterList","src":"1533:63:7"}],"id":4337,"name":"EventDefinition","src":"1519:78:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4338,"name":"ElementaryTypeName","src":"1695:7:7"}],"id":4339,"name":"VariableDeclaration","src":"1695:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4340,"name":"ElementaryTypeName","src":"1718:7:7"}],"id":4341,"name":"VariableDeclaration","src":"1718:14:7"}],"id":4342,"name":"ParameterList","src":"1694:39:7"}],"id":4343,"name":"EventDefinition","src":"1680:54:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4349,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4344,"name":"ElementaryTypeName","src":"1810:7:7"}],"id":4345,"name":"VariableDeclaration","src":"1810:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":4349,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4346,"name":"ElementaryTypeName","src":"1833:7:7"}],"id":4347,"name":"VariableDeclaration","src":"1833:17:7"}],"id":4348,"name":"ParameterList","src":"1809:42:7"}],"id":4349,"name":"EventDefinition","src":"1792:60:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4355,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4350,"name":"ElementaryTypeName","src":"1916:7:7"}],"id":4351,"name":"VariableDeclaration","src":"1916:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":4355,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4352,"name":"ElementaryTypeName","src":"1939:6:7"}],"id":4353,"name":"VariableDeclaration","src":"1939:11:7"}],"id":4354,"name":"ParameterList","src":"1915:36:7"}],"id":4355,"name":"EventDefinition","src":"1903:49:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":4363,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4356,"name":"ElementaryTypeName","src":"2031:7:7"}],"id":4357,"name":"VariableDeclaration","src":"2031:22:7"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":4363,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4358,"name":"ElementaryTypeName","src":"2055:7:7"}],"id":4359,"name":"VariableDeclaration","src":"2055:25:7"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":4363,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4360,"name":"ElementaryTypeName","src":"2082:4:7"}],"id":4361,"name":"VariableDeclaration","src":"2082:14:7"}],"id":4362,"name":"ParameterList","src":"2030:67:7"}],"id":4363,"name":"EventDefinition","src":"2010:88:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4374,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4364,"name":"ElementaryTypeName","src":"2123:7:7"}],"id":4365,"name":"VariableDeclaration","src":"2123:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4374,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4366,"name":"ElementaryTypeName","src":"2138:7:7"}],"id":4367,"name":"VariableDeclaration","src":"2138:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4374,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4368,"name":"ElementaryTypeName","src":"2154:7:7"}],"id":4369,"name":"VariableDeclaration","src":"2154:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4374,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4370,"name":"ElementaryTypeName","src":"2173:6:7"}],"id":4371,"name":"VariableDeclaration","src":"2173:11:7"}],"id":4372,"name":"ParameterList","src":"2122:63:7"},{"attributes":{"parameters":[null]},"children":[],"id":4373,"name":"ParameterList","src":"2194:0:7"}],"id":4374,"name":"FunctionDefinition","src":"2104:91:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4387,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4375,"name":"ElementaryTypeName","src":"2226:7:7"}],"id":4376,"name":"VariableDeclaration","src":"2226:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4387,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4377,"name":"ElementaryTypeName","src":"2241:7:7"}],"id":4378,"name":"VariableDeclaration","src":"2241:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4387,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4379,"name":"ElementaryTypeName","src":"2257:7:7"}],"id":4380,"name":"VariableDeclaration","src":"2257:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4387,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4381,"name":"ElementaryTypeName","src":"2273:7:7"}],"id":4382,"name":"VariableDeclaration","src":"2273:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4387,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4383,"name":"ElementaryTypeName","src":"2292:6:7"}],"id":4384,"name":"VariableDeclaration","src":"2292:11:7"}],"id":4385,"name":"ParameterList","src":"2225:79:7"},{"attributes":{"parameters":[null]},"children":[],"id":4386,"name":"ParameterList","src":"2313:0:7"}],"id":4387,"name":"FunctionDefinition","src":"2200:114:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4398,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4388,"name":"ElementaryTypeName","src":"2344:7:7"}],"id":4389,"name":"VariableDeclaration","src":"2344:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4398,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4390,"name":"ElementaryTypeName","src":"2359:7:7"}],"id":4391,"name":"VariableDeclaration","src":"2359:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4398,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4392,"name":"ElementaryTypeName","src":"2375:7:7"}],"id":4393,"name":"VariableDeclaration","src":"2375:14:7"}],"id":4394,"name":"ParameterList","src":"2343:47:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4398,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4395,"name":"ElementaryTypeName","src":"2408:7:7"}],"id":4396,"name":"VariableDeclaration","src":"2408:7:7"}],"id":4397,"name":"ParameterList","src":"2407:9:7"}],"id":4398,"name":"FunctionDefinition","src":"2319:98:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4405,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4399,"name":"ElementaryTypeName","src":"2443:7:7"}],"id":4400,"name":"VariableDeclaration","src":"2443:13:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4405,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4401,"name":"ElementaryTypeName","src":"2458:7:7"}],"id":4402,"name":"VariableDeclaration","src":"2458:17:7"}],"id":4403,"name":"ParameterList","src":"2442:34:7"},{"attributes":{"parameters":[null]},"children":[],"id":4404,"name":"ParameterList","src":"2485:0:7"}],"id":4405,"name":"FunctionDefinition","src":"2422:64:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4412,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4406,"name":"ElementaryTypeName","src":"2509:7:7"}],"id":4407,"name":"VariableDeclaration","src":"2509:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4412,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4408,"name":"ElementaryTypeName","src":"2524:7:7"}],"id":4409,"name":"VariableDeclaration","src":"2524:14:7"}],"id":4410,"name":"ParameterList","src":"2508:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":4411,"name":"ParameterList","src":"2548:0:7"}],"id":4412,"name":"FunctionDefinition","src":"2491:58:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4419,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4413,"name":"ElementaryTypeName","src":"2570:7:7"}],"id":4414,"name":"VariableDeclaration","src":"2570:13:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4419,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4415,"name":"ElementaryTypeName","src":"2585:6:7"}],"id":4416,"name":"VariableDeclaration","src":"2585:11:7"}],"id":4417,"name":"ParameterList","src":"2569:28:7"},{"attributes":{"parameters":[null]},"children":[],"id":4418,"name":"ParameterList","src":"2606:0:7"}],"id":4419,"name":"FunctionDefinition","src":"2554:53:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":4464,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":4426,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4420,"name":"ElementaryTypeName","src":"2639:7:7"}],"id":4421,"name":"VariableDeclaration","src":"2639:17:7"},{"attributes":{"constant":false,"name":"_approved","scope":4426,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4422,"name":"ElementaryTypeName","src":"2658:4:7"}],"id":4423,"name":"VariableDeclaration","src":"2658:14:7"}],"id":4424,"name":"ParameterList","src":"2638:35:7"},{"attributes":{"parameters":[null]},"children":[],"id":4425,"name":"ParameterList","src":"2682:0:7"}],"id":4426,"name":"FunctionDefinition","src":"2612:71:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4433,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4427,"name":"ElementaryTypeName","src":"2703:7:7"}],"id":4428,"name":"VariableDeclaration","src":"2703:13:7"}],"id":4429,"name":"ParameterList","src":"2702:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4433,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4430,"name":"ElementaryTypeName","src":"2741:7:7"}],"id":4431,"name":"VariableDeclaration","src":"2741:7:7"}],"id":4432,"name":"ParameterList","src":"2740:9:7"}],"id":4433,"name":"FunctionDefinition","src":"2688:62:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4440,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4434,"name":"ElementaryTypeName","src":"2773:7:7"}],"id":4435,"name":"VariableDeclaration","src":"2773:13:7"}],"id":4436,"name":"ParameterList","src":"2772:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4440,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4437,"name":"ElementaryTypeName","src":"2811:7:7"}],"id":4438,"name":"VariableDeclaration","src":"2811:7:7"}],"id":4439,"name":"ParameterList","src":"2810:9:7"}],"id":4440,"name":"FunctionDefinition","src":"2755:65:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4447,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4441,"name":"ElementaryTypeName","src":"2838:7:7"}],"id":4442,"name":"VariableDeclaration","src":"2838:13:7"}],"id":4443,"name":"ParameterList","src":"2837:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4447,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4444,"name":"ElementaryTypeName","src":"2876:6:7"}],"id":4445,"name":"VariableDeclaration","src":"2876:6:7"}],"id":4446,"name":"ParameterList","src":"2875:8:7"}],"id":4447,"name":"FunctionDefinition","src":"2825:59:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4454,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4448,"name":"ElementaryTypeName","src":"2911:7:7"}],"id":4449,"name":"VariableDeclaration","src":"2911:13:7"}],"id":4450,"name":"ParameterList","src":"2910:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4451,"name":"ElementaryTypeName","src":"2949:4:7"}],"id":4452,"name":"VariableDeclaration","src":"2949:4:7"}],"id":4453,"name":"ParameterList","src":"2948:6:7"}],"id":4454,"name":"FunctionDefinition","src":"2889:66:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":4464,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":4463,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4455,"name":"ElementaryTypeName","src":"2986:7:7"}],"id":4456,"name":"VariableDeclaration","src":"2986:14:7"},{"attributes":{"constant":false,"name":"_operator","scope":4463,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4457,"name":"ElementaryTypeName","src":"3002:7:7"}],"id":4458,"name":"VariableDeclaration","src":"3002:17:7"}],"id":4459,"name":"ParameterList","src":"2985:35:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4463,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4460,"name":"ElementaryTypeName","src":"3044:4:7"}],"id":4461,"name":"VariableDeclaration","src":"3044:4:7"}],"id":4462,"name":"ParameterList","src":"3043:6:7"}],"id":4463,"name":"FunctionDefinition","src":"2960:90:7"}],"id":4464,"name":"ContractDefinition","src":"1425:1627:7"}],"id":4465,"name":"SourceUnit","src":"1400:1653:7"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[10138]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9419,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[10138],"name":"ENSBytesUtils","scope":10139},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9441,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9420,"name":"ElementaryTypeName","src":"325:5:8"}],"id":9421,"name":"VariableDeclaration","src":"325:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9441,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9422,"name":"ElementaryTypeName","src":"344:4:8"}],"id":9423,"name":"VariableDeclaration","src":"344:11:8"},{"attributes":{"constant":false,"name":"len","scope":9441,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9424,"name":"ElementaryTypeName","src":"357:4:8"}],"id":9425,"name":"VariableDeclaration","src":"357:8:8"}],"id":9426,"name":"ParameterList","src":"324:42:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9441,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9427,"name":"ElementaryTypeName","src":"390:7:8"}],"id":9428,"name":"VariableDeclaration","src":"390:11:8"}],"id":9429,"name":"ParameterList","src":"389:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9430,"name":"Identifier","src":"413:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9423,"type":"uint256","value":"offset"},"id":9431,"name":"Identifier","src":"421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9425,"type":"uint256","value":"len"},"id":9432,"name":"Identifier","src":"430:3:8"}],"id":9433,"name":"BinaryOperation","src":"421:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9421,"type":"bytes memory","value":"self"},"id":9434,"name":"Identifier","src":"437:4:8"}],"id":9435,"name":"MemberAccess","src":"437:11:8"}],"id":9436,"name":"BinaryOperation","src":"421:27:8"}],"id":9437,"name":"FunctionCall","src":"413:36:8"}],"id":9438,"name":"ExpressionStatement","src":"413:36:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9428,"isOffset":false,"isSlot":false,"src":"482:3:8","valueSize":1}},{"self":{"declaration":9421,"isOffset":false,"isSlot":false,"src":"507:4:8","valueSize":1}},{"offset":{"declaration":9423,"isOffset":false,"isSlot":false,"src":"518:6:8","valueSize":1}},{"len":{"declaration":9425,"isOffset":false,"isSlot":false,"src":"527:3:8","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":9439,"name":"InlineAssembly","src":"459:82:8"}],"id":9440,"name":"Block","src":"403:144:8"}],"id":9441,"name":"FunctionDefinition","src":"309:238:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9462,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9442,"name":"ElementaryTypeName","src":"920:5:8"}],"id":9443,"name":"VariableDeclaration","src":"920:17:8"},{"attributes":{"constant":false,"name":"other","scope":9462,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9444,"name":"ElementaryTypeName","src":"939:5:8"}],"id":9445,"name":"VariableDeclaration","src":"939:18:8"}],"id":9446,"name":"ParameterList","src":"919:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9462,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9447,"name":"ElementaryTypeName","src":"982:3:8"}],"id":9448,"name":"VariableDeclaration","src":"982:3:8"}],"id":9449,"name":"ParameterList","src":"981:5:8"},{"children":[{"attributes":{"functionReturnParameters":9449},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9462,9594],"referencedDeclaration":9594,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":9450,"name":"Identifier","src":"1004:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9443,"type":"bytes memory","value":"self"},"id":9451,"name":"Identifier","src":"1012:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9452,"name":"Literal","src":"1018:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9443,"type":"bytes memory","value":"self"},"id":9453,"name":"Identifier","src":"1021:4:8"}],"id":9454,"name":"MemberAccess","src":"1021:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9445,"type":"bytes memory","value":"other"},"id":9455,"name":"Identifier","src":"1034:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9456,"name":"Literal","src":"1041:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9445,"type":"bytes memory","value":"other"},"id":9457,"name":"Identifier","src":"1044:5:8"}],"id":9458,"name":"MemberAccess","src":"1044:12:8"}],"id":9459,"name":"FunctionCall","src":"1004:53:8"}],"id":9460,"name":"Return","src":"997:60:8"}],"id":9461,"name":"Block","src":"987:77:8"}],"id":9462,"name":"FunctionDefinition","src":"903:161:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9594,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9463,"name":"ElementaryTypeName","src":"1694:5:8"}],"id":9464,"name":"VariableDeclaration","src":"1694:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9465,"name":"ElementaryTypeName","src":"1713:4:8"}],"id":9466,"name":"VariableDeclaration","src":"1713:11:8"},{"attributes":{"constant":false,"name":"len","scope":9594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9467,"name":"ElementaryTypeName","src":"1726:4:8"}],"id":9468,"name":"VariableDeclaration","src":"1726:8:8"},{"attributes":{"constant":false,"name":"other","scope":9594,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9469,"name":"ElementaryTypeName","src":"1736:5:8"}],"id":9470,"name":"VariableDeclaration","src":"1736:18:8"},{"attributes":{"constant":false,"name":"otheroffset","scope":9594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9471,"name":"ElementaryTypeName","src":"1756:4:8"}],"id":9472,"name":"VariableDeclaration","src":"1756:16:8"},{"attributes":{"constant":false,"name":"otherlen","scope":9594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9473,"name":"ElementaryTypeName","src":"1774:4:8"}],"id":9474,"name":"VariableDeclaration","src":"1774:13:8"}],"id":9475,"name":"ParameterList","src":"1693:95:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9594,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9476,"name":"ElementaryTypeName","src":"1812:3:8"}],"id":9477,"name":"VariableDeclaration","src":"1812:3:8"}],"id":9478,"name":"ParameterList","src":"1811:5:8"},{"children":[{"attributes":{"assignments":[9480]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":9593,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9479,"name":"ElementaryTypeName","src":"1827:4:8"}],"id":9480,"name":"VariableDeclaration","src":"1827:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9468,"type":"uint256","value":"len"},"id":9481,"name":"Identifier","src":"1843:3:8"}],"id":9482,"name":"VariableDeclarationStatement","src":"1827:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9474,"type":"uint256","value":"otherlen"},"id":9483,"name":"Identifier","src":"1860:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9468,"type":"uint256","value":"len"},"id":9484,"name":"Identifier","src":"1871:3:8"}],"id":9485,"name":"BinaryOperation","src":"1860:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9480,"type":"uint256","value":"shortest"},"id":9486,"name":"Identifier","src":"1884:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9474,"type":"uint256","value":"otherlen"},"id":9487,"name":"Identifier","src":"1895:8:8"}],"id":9488,"name":"Assignment","src":"1884:19:8"}],"id":9489,"name":"ExpressionStatement","src":"1884:19:8"}],"id":9490,"name":"IfStatement","src":"1856:47:8"},{"attributes":{"assignments":[9492],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":9593,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9491,"name":"ElementaryTypeName","src":"1914:4:8"}],"id":9492,"name":"VariableDeclaration","src":"1914:12:8"}],"id":9493,"name":"VariableDeclarationStatement","src":"1914:12:8"},{"attributes":{"assignments":[9495],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":9593,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9494,"name":"ElementaryTypeName","src":"1936:4:8"}],"id":9495,"name":"VariableDeclaration","src":"1936:13:8"}],"id":9496,"name":"VariableDeclarationStatement","src":"1936:13:8"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":9492,"isOffset":false,"isSlot":false,"src":"1983:7:8","valueSize":1}},{"otherptr":{"declaration":9495,"isOffset":false,"isSlot":false,"src":"2033:8:8","valueSize":1}},{"offset":{"declaration":9466,"isOffset":false,"isSlot":false,"src":"2008:6:8","valueSize":1}},{"self":{"declaration":9464,"isOffset":false,"isSlot":false,"src":"1998:4:8","valueSize":1}},{"otheroffset":{"declaration":9472,"isOffset":false,"isSlot":false,"src":"2060:11:8","valueSize":1}},{"other":{"declaration":9470,"isOffset":false,"isSlot":false,"src":"2049:5:8","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":9497,"name":"InlineAssembly","src":"1960:127:8"},{"children":[{"attributes":{"assignments":[9499]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9584,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9498,"name":"ElementaryTypeName","src":"2101:4:8"}],"id":9499,"name":"VariableDeclaration","src":"2101:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9500,"name":"Literal","src":"2112:1:8"}],"id":9501,"name":"VariableDeclarationStatement","src":"2101:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9499,"type":"uint256","value":"idx"},"id":9502,"name":"Identifier","src":"2115:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9480,"type":"uint256","value":"shortest"},"id":9503,"name":"Identifier","src":"2121:8:8"}],"id":9504,"name":"BinaryOperation","src":"2115:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9499,"type":"uint256","value":"idx"},"id":9505,"name":"Identifier","src":"2131:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9506,"name":"Literal","src":"2138:2:8"}],"id":9507,"name":"Assignment","src":"2131:9:8"}],"id":9508,"name":"ExpressionStatement","src":"2131:9:8"},{"children":[{"attributes":{"assignments":[9510],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":9583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9509,"name":"ElementaryTypeName","src":"2156:4:8"}],"id":9510,"name":"VariableDeclaration","src":"2156:6:8"}],"id":9511,"name":"VariableDeclarationStatement","src":"2156:6:8"},{"attributes":{"assignments":[9513],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":9583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9512,"name":"ElementaryTypeName","src":"2176:4:8"}],"id":9513,"name":"VariableDeclaration","src":"2176:6:8"}],"id":9514,"name":"VariableDeclarationStatement","src":"2176:6:8"},{"attributes":{"externalReferences":[{"a":{"declaration":9510,"isOffset":false,"isSlot":false,"src":"2223:1:8","valueSize":1}},{"selfptr":{"declaration":9492,"isOffset":false,"isSlot":false,"src":"2234:7:8","valueSize":1}},{"b":{"declaration":9513,"isOffset":false,"isSlot":false,"src":"2259:1:8","valueSize":1}},{"otherptr":{"declaration":9495,"isOffset":false,"isSlot":false,"src":"2270:8:8","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":9515,"name":"InlineAssembly","src":"2196:97:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"a"},"id":9516,"name":"Identifier","src":"2310:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9513,"type":"uint256","value":"b"},"id":9517,"name":"Identifier","src":"2315:1:8"}],"id":9518,"name":"BinaryOperation","src":"2310:6:8"},{"children":[{"attributes":{"assignments":[9520],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":9573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9519,"name":"ElementaryTypeName","src":"2397:4:8"}],"id":9520,"name":"VariableDeclaration","src":"2397:9:8"}],"id":9521,"name":"VariableDeclarationStatement","src":"2397:9:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9480,"type":"uint256","value":"shortest"},"id":9522,"name":"Identifier","src":"2428:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9523,"name":"Literal","src":"2439:2:8"}],"id":9524,"name":"BinaryOperation","src":"2428:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9520,"type":"uint256","value":"mask"},"id":9525,"name":"Identifier","src":"2465:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":9526,"name":"ElementaryTypeNameExpression","src":"2472:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9527,"name":"Literal","src":"2482:1:8"}],"id":9528,"name":"UnaryOperation","src":"2480:3:8"}],"id":9529,"name":"FunctionCall","src":"2472:12:8"}],"id":9530,"name":"Assignment","src":"2465:19:8"}],"id":9531,"name":"ExpressionStatement","src":"2465:19:8"}],"id":9532,"name":"Block","src":"2443:80:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9520,"type":"uint256","value":"mask"},"id":9533,"name":"Identifier","src":"2551:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9534,"name":"Literal","src":"2560:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9535,"name":"Literal","src":"2566:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9536,"name":"Literal","src":"2571:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9480,"type":"uint256","value":"shortest"},"id":9537,"name":"Identifier","src":"2576:8:8"}],"id":9538,"name":"BinaryOperation","src":"2571:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9499,"type":"uint256","value":"idx"},"id":9539,"name":"Identifier","src":"2587:3:8"}],"id":9540,"name":"BinaryOperation","src":"2571:19:8"}],"id":9541,"name":"TupleExpression","src":"2570:21:8"}],"id":9542,"name":"BinaryOperation","src":"2566:25:8"}],"id":9543,"name":"TupleExpression","src":"2565:27:8"}],"id":9544,"name":"BinaryOperation","src":"2560:32:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9545,"name":"Literal","src":"2595:1:8"}],"id":9546,"name":"BinaryOperation","src":"2560:36:8"}],"id":9547,"name":"TupleExpression","src":"2559:38:8"}],"id":9548,"name":"UnaryOperation","src":"2558:39:8"}],"id":9549,"name":"Assignment","src":"2551:46:8"}],"id":9550,"name":"ExpressionStatement","src":"2551:46:8"}],"id":9551,"name":"Block","src":"2529:87:8"}],"id":9552,"name":"IfStatement","src":"2424:192:8"},{"attributes":{"assignments":[9554]},"children":[{"attributes":{"constant":false,"name":"diff","scope":9573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9553,"name":"ElementaryTypeName","src":"2633:4:8"}],"id":9554,"name":"VariableDeclaration","src":"2633:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"a"},"id":9555,"name":"Identifier","src":"2646:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9520,"type":"uint256","value":"mask"},"id":9556,"name":"Identifier","src":"2650:4:8"}],"id":9557,"name":"BinaryOperation","src":"2646:8:8"}],"id":9558,"name":"TupleExpression","src":"2645:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9513,"type":"uint256","value":"b"},"id":9559,"name":"Identifier","src":"2659:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9520,"type":"uint256","value":"mask"},"id":9560,"name":"Identifier","src":"2663:4:8"}],"id":9561,"name":"BinaryOperation","src":"2659:8:8"}],"id":9562,"name":"TupleExpression","src":"2658:10:8"}],"id":9563,"name":"BinaryOperation","src":"2645:23:8"}],"id":9564,"name":"VariableDeclarationStatement","src":"2633:35:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9554,"type":"uint256","value":"diff"},"id":9565,"name":"Identifier","src":"2690:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9566,"name":"Literal","src":"2698:1:8"}],"id":9567,"name":"BinaryOperation","src":"2690:9:8"},{"attributes":{"functionReturnParameters":9478},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9568,"name":"ElementaryTypeNameExpression","src":"2724:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9554,"type":"uint256","value":"diff"},"id":9569,"name":"Identifier","src":"2728:4:8"}],"id":9570,"name":"FunctionCall","src":"2724:9:8"}],"id":9571,"name":"Return","src":"2717:16:8"}],"id":9572,"name":"IfStatement","src":"2686:47:8"}],"id":9573,"name":"Block","src":"2318:430:8"}],"id":9574,"name":"IfStatement","src":"2306:442:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9492,"type":"uint256","value":"selfptr"},"id":9575,"name":"Identifier","src":"2761:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9576,"name":"Literal","src":"2772:2:8"}],"id":9577,"name":"Assignment","src":"2761:13:8"}],"id":9578,"name":"ExpressionStatement","src":"2761:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9495,"type":"uint256","value":"otherptr"},"id":9579,"name":"Identifier","src":"2788:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9580,"name":"Literal","src":"2800:2:8"}],"id":9581,"name":"Assignment","src":"2788:14:8"}],"id":9582,"name":"ExpressionStatement","src":"2788:14:8"}],"id":9583,"name":"Block","src":"2142:671:8"}],"id":9584,"name":"ForStatement","src":"2096:717:8"},{"attributes":{"functionReturnParameters":9478},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9585,"name":"ElementaryTypeNameExpression","src":"2830:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9468,"type":"uint256","value":"len"},"id":9586,"name":"Identifier","src":"2834:3:8"}],"id":9587,"name":"FunctionCall","src":"2830:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9588,"name":"ElementaryTypeNameExpression","src":"2841:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9474,"type":"uint256","value":"otherlen"},"id":9589,"name":"Identifier","src":"2845:8:8"}],"id":9590,"name":"FunctionCall","src":"2841:13:8"}],"id":9591,"name":"BinaryOperation","src":"2830:24:8"}],"id":9592,"name":"Return","src":"2823:31:8"}],"id":9593,"name":"Block","src":"1817:1044:8"}],"id":9594,"name":"FunctionDefinition","src":"1677:1184:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9622,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9595,"name":"ElementaryTypeName","src":"3295:5:8"}],"id":9596,"name":"VariableDeclaration","src":"3295:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9597,"name":"ElementaryTypeName","src":"3314:4:8"}],"id":9598,"name":"VariableDeclaration","src":"3314:11:8"},{"attributes":{"constant":false,"name":"other","scope":9622,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9599,"name":"ElementaryTypeName","src":"3327:5:8"}],"id":9600,"name":"VariableDeclaration","src":"3327:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9601,"name":"ElementaryTypeName","src":"3347:4:8"}],"id":9602,"name":"VariableDeclaration","src":"3347:16:8"},{"attributes":{"constant":false,"name":"len","scope":9622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9603,"name":"ElementaryTypeName","src":"3365:4:8"}],"id":9604,"name":"VariableDeclaration","src":"3365:8:8"}],"id":9605,"name":"ParameterList","src":"3294:80:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9622,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9606,"name":"ElementaryTypeName","src":"3398:4:8"}],"id":9607,"name":"VariableDeclaration","src":"3398:4:8"}],"id":9608,"name":"ParameterList","src":"3397:6:8"},{"children":[{"attributes":{"functionReturnParameters":9608},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9441,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9609,"name":"Identifier","src":"3421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9596,"type":"bytes memory","value":"self"},"id":9610,"name":"Identifier","src":"3428:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9598,"type":"uint256","value":"offset"},"id":9611,"name":"Identifier","src":"3434:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9604,"type":"uint256","value":"len"},"id":9612,"name":"Identifier","src":"3442:3:8"}],"id":9613,"name":"FunctionCall","src":"3421:25:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9441,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9614,"name":"Identifier","src":"3450:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9600,"type":"bytes memory","value":"other"},"id":9615,"name":"Identifier","src":"3457:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9602,"type":"uint256","value":"otherOffset"},"id":9616,"name":"Identifier","src":"3464:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9604,"type":"uint256","value":"len"},"id":9617,"name":"Identifier","src":"3477:3:8"}],"id":9618,"name":"FunctionCall","src":"3450:31:8"}],"id":9619,"name":"BinaryOperation","src":"3421:60:8"}],"id":9620,"name":"Return","src":"3414:67:8"}],"id":9621,"name":"Block","src":"3404:84:8"}],"id":9622,"name":"FunctionDefinition","src":"3279:209:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9654,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9623,"name":"ElementaryTypeName","src":"3887:5:8"}],"id":9624,"name":"VariableDeclaration","src":"3887:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9654,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9625,"name":"ElementaryTypeName","src":"3906:4:8"}],"id":9626,"name":"VariableDeclaration","src":"3906:11:8"},{"attributes":{"constant":false,"name":"other","scope":9654,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9627,"name":"ElementaryTypeName","src":"3919:5:8"}],"id":9628,"name":"VariableDeclaration","src":"3919:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9654,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9629,"name":"ElementaryTypeName","src":"3939:4:8"}],"id":9630,"name":"VariableDeclaration","src":"3939:16:8"}],"id":9631,"name":"ParameterList","src":"3886:70:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9654,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9632,"name":"ElementaryTypeName","src":"3980:4:8"}],"id":9633,"name":"VariableDeclaration","src":"3980:4:8"}],"id":9634,"name":"ParameterList","src":"3979:6:8"},{"children":[{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9441,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9635,"name":"Identifier","src":"4003:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9624,"type":"bytes memory","value":"self"},"id":9636,"name":"Identifier","src":"4010:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9626,"type":"uint256","value":"offset"},"id":9637,"name":"Identifier","src":"4016:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9624,"type":"bytes memory","value":"self"},"id":9638,"name":"Identifier","src":"4024:4:8"}],"id":9639,"name":"MemberAccess","src":"4024:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9626,"type":"uint256","value":"offset"},"id":9640,"name":"Identifier","src":"4038:6:8"}],"id":9641,"name":"BinaryOperation","src":"4024:20:8"}],"id":9642,"name":"FunctionCall","src":"4003:42:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9441,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9643,"name":"Identifier","src":"4049:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"other"},"id":9644,"name":"Identifier","src":"4056:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"uint256","value":"otherOffset"},"id":9645,"name":"Identifier","src":"4063:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"other"},"id":9646,"name":"Identifier","src":"4076:5:8"}],"id":9647,"name":"MemberAccess","src":"4076:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"uint256","value":"otherOffset"},"id":9648,"name":"Identifier","src":"4091:11:8"}],"id":9649,"name":"BinaryOperation","src":"4076:26:8"}],"id":9650,"name":"FunctionCall","src":"4049:54:8"}],"id":9651,"name":"BinaryOperation","src":"4003:100:8"}],"id":9652,"name":"Return","src":"3996:107:8"}],"id":9653,"name":"Block","src":"3986:124:8"}],"id":9654,"name":"FunctionDefinition","src":"3871:239:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9683,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9655,"name":"ElementaryTypeName","src":"4478:5:8"}],"id":9656,"name":"VariableDeclaration","src":"4478:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9683,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9657,"name":"ElementaryTypeName","src":"4497:4:8"}],"id":9658,"name":"VariableDeclaration","src":"4497:11:8"},{"attributes":{"constant":false,"name":"other","scope":9683,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9659,"name":"ElementaryTypeName","src":"4510:5:8"}],"id":9660,"name":"VariableDeclaration","src":"4510:18:8"}],"id":9661,"name":"ParameterList","src":"4477:52:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9683,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9662,"name":"ElementaryTypeName","src":"4553:4:8"}],"id":9663,"name":"VariableDeclaration","src":"4553:4:8"}],"id":9664,"name":"ParameterList","src":"4552:6:8"},{"children":[{"attributes":{"functionReturnParameters":9664},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"bytes memory","value":"self"},"id":9665,"name":"Identifier","src":"4576:4:8"}],"id":9666,"name":"MemberAccess","src":"4576:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9658,"type":"uint256","value":"offset"},"id":9667,"name":"Identifier","src":"4591:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9660,"type":"bytes memory","value":"other"},"id":9668,"name":"Identifier","src":"4600:5:8"}],"id":9669,"name":"MemberAccess","src":"4600:12:8"}],"id":9670,"name":"BinaryOperation","src":"4591:21:8"}],"id":9671,"name":"BinaryOperation","src":"4576:36:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9622,9654,9683,9708],"referencedDeclaration":9622,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9672,"name":"Identifier","src":"4616:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"bytes memory","value":"self"},"id":9673,"name":"Identifier","src":"4623:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9658,"type":"uint256","value":"offset"},"id":9674,"name":"Identifier","src":"4629:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9660,"type":"bytes memory","value":"other"},"id":9675,"name":"Identifier","src":"4637:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9676,"name":"Literal","src":"4644:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9660,"type":"bytes memory","value":"other"},"id":9677,"name":"Identifier","src":"4647:5:8"}],"id":9678,"name":"MemberAccess","src":"4647:12:8"}],"id":9679,"name":"FunctionCall","src":"4616:44:8"}],"id":9680,"name":"BinaryOperation","src":"4576:84:8"}],"id":9681,"name":"Return","src":"4569:91:8"}],"id":9682,"name":"Block","src":"4559:108:8"}],"id":9683,"name":"FunctionDefinition","src":"4462:205:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9708,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9684,"name":"ElementaryTypeName","src":"4931:5:8"}],"id":9685,"name":"VariableDeclaration","src":"4931:17:8"},{"attributes":{"constant":false,"name":"other","scope":9708,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9686,"name":"ElementaryTypeName","src":"4950:5:8"}],"id":9687,"name":"VariableDeclaration","src":"4950:18:8"}],"id":9688,"name":"ParameterList","src":"4930:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9708,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9689,"name":"ElementaryTypeName","src":"4992:4:8"}],"id":9690,"name":"VariableDeclaration","src":"4992:4:8"}],"id":9691,"name":"ParameterList","src":"4991:6:8"},{"children":[{"attributes":{"functionReturnParameters":9691},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9685,"type":"bytes memory","value":"self"},"id":9692,"name":"Identifier","src":"5015:4:8"}],"id":9693,"name":"MemberAccess","src":"5015:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9687,"type":"bytes memory","value":"other"},"id":9694,"name":"Identifier","src":"5030:5:8"}],"id":9695,"name":"MemberAccess","src":"5030:12:8"}],"id":9696,"name":"BinaryOperation","src":"5015:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9622,9654,9683,9708],"referencedDeclaration":9622,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9697,"name":"Identifier","src":"5046:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9685,"type":"bytes memory","value":"self"},"id":9698,"name":"Identifier","src":"5053:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9699,"name":"Literal","src":"5059:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9687,"type":"bytes memory","value":"other"},"id":9700,"name":"Identifier","src":"5062:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9701,"name":"Literal","src":"5069:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9685,"type":"bytes memory","value":"self"},"id":9702,"name":"Identifier","src":"5072:4:8"}],"id":9703,"name":"MemberAccess","src":"5072:11:8"}],"id":9704,"name":"FunctionCall","src":"5046:38:8"}],"id":9705,"name":"BinaryOperation","src":"5015:69:8"}],"id":9706,"name":"Return","src":"5008:76:8"}],"id":9707,"name":"Block","src":"4998:93:8"}],"id":9708,"name":"FunctionDefinition","src":"4915:176:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9724,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9709,"name":"ElementaryTypeName","src":"5352:5:8"}],"id":9710,"name":"VariableDeclaration","src":"5352:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9724,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9711,"name":"ElementaryTypeName","src":"5371:4:8"}],"id":9712,"name":"VariableDeclaration","src":"5371:8:8"}],"id":9713,"name":"ParameterList","src":"5351:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9724,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9714,"name":"ElementaryTypeName","src":"5404:5:8"}],"id":9715,"name":"VariableDeclaration","src":"5404:9:8"}],"id":9716,"name":"ParameterList","src":"5403:11:8"},{"children":[{"attributes":{"functionReturnParameters":9716},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9717,"name":"ElementaryTypeNameExpression","src":"5432:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9710,"type":"bytes memory","value":"self"},"id":9718,"name":"Identifier","src":"5438:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9712,"type":"uint256","value":"idx"},"id":9719,"name":"Identifier","src":"5443:3:8"}],"id":9720,"name":"IndexAccess","src":"5438:9:8"}],"id":9721,"name":"FunctionCall","src":"5432:16:8"}],"id":9722,"name":"Return","src":"5425:23:8"}],"id":9723,"name":"Block","src":"5415:40:8"}],"id":9724,"name":"FunctionDefinition","src":"5333:122:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9744,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9725,"name":"ElementaryTypeName","src":"5719:5:8"}],"id":9726,"name":"VariableDeclaration","src":"5719:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9744,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9727,"name":"ElementaryTypeName","src":"5738:4:8"}],"id":9728,"name":"VariableDeclaration","src":"5738:8:8"}],"id":9729,"name":"ParameterList","src":"5718:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9744,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9730,"name":"ElementaryTypeName","src":"5771:6:8"}],"id":9731,"name":"VariableDeclaration","src":"5771:10:8"}],"id":9732,"name":"ParameterList","src":"5770:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9733,"name":"Identifier","src":"5793:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9728,"type":"uint256","value":"idx"},"id":9734,"name":"Identifier","src":"5801:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9735,"name":"Literal","src":"5807:1:8"}],"id":9736,"name":"BinaryOperation","src":"5801:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9726,"type":"bytes memory","value":"self"},"id":9737,"name":"Identifier","src":"5812:4:8"}],"id":9738,"name":"MemberAccess","src":"5812:11:8"}],"id":9739,"name":"BinaryOperation","src":"5801:22:8"}],"id":9740,"name":"FunctionCall","src":"5793:31:8"}],"id":9741,"name":"ExpressionStatement","src":"5793:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9731,"isOffset":false,"isSlot":false,"src":"5857:3:8","valueSize":1}},{"self":{"declaration":9726,"isOffset":false,"isSlot":false,"src":"5882:4:8","valueSize":1}},{"idx":{"declaration":9728,"isOffset":false,"isSlot":false,"src":"5892:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":9742,"name":"InlineAssembly","src":"5834:82:8"}],"id":9743,"name":"Block","src":"5783:139:8"}],"id":9744,"name":"FunctionDefinition","src":"5699:223:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9764,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9745,"name":"ElementaryTypeName","src":"6186:5:8"}],"id":9746,"name":"VariableDeclaration","src":"6186:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9764,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9747,"name":"ElementaryTypeName","src":"6205:4:8"}],"id":9748,"name":"VariableDeclaration","src":"6205:8:8"}],"id":9749,"name":"ParameterList","src":"6185:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9764,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":9750,"name":"ElementaryTypeName","src":"6238:6:8"}],"id":9751,"name":"VariableDeclaration","src":"6238:10:8"}],"id":9752,"name":"ParameterList","src":"6237:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9753,"name":"Identifier","src":"6260:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9748,"type":"uint256","value":"idx"},"id":9754,"name":"Identifier","src":"6268:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9755,"name":"Literal","src":"6274:1:8"}],"id":9756,"name":"BinaryOperation","src":"6268:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9746,"type":"bytes memory","value":"self"},"id":9757,"name":"Identifier","src":"6279:4:8"}],"id":9758,"name":"MemberAccess","src":"6279:11:8"}],"id":9759,"name":"BinaryOperation","src":"6268:22:8"}],"id":9760,"name":"FunctionCall","src":"6260:31:8"}],"id":9761,"name":"ExpressionStatement","src":"6260:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9751,"isOffset":false,"isSlot":false,"src":"6324:3:8","valueSize":1}},{"self":{"declaration":9746,"isOffset":false,"isSlot":false,"src":"6349:4:8","valueSize":1}},{"idx":{"declaration":9748,"isOffset":false,"isSlot":false,"src":"6359:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":9762,"name":"InlineAssembly","src":"6301:86:8"}],"id":9763,"name":"Block","src":"6250:143:8"}],"id":9764,"name":"FunctionDefinition","src":"6166:227:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9784,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9765,"name":"ElementaryTypeName","src":"6632:5:8"}],"id":9766,"name":"VariableDeclaration","src":"6632:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9784,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9767,"name":"ElementaryTypeName","src":"6651:4:8"}],"id":9768,"name":"VariableDeclaration","src":"6651:8:8"}],"id":9769,"name":"ParameterList","src":"6631:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9784,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9770,"name":"ElementaryTypeName","src":"6684:7:8"}],"id":9771,"name":"VariableDeclaration","src":"6684:11:8"}],"id":9772,"name":"ParameterList","src":"6683:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9773,"name":"Identifier","src":"6707:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9768,"type":"uint256","value":"idx"},"id":9774,"name":"Identifier","src":"6715:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9775,"name":"Literal","src":"6721:2:8"}],"id":9776,"name":"BinaryOperation","src":"6715:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9766,"type":"bytes memory","value":"self"},"id":9777,"name":"Identifier","src":"6727:4:8"}],"id":9778,"name":"MemberAccess","src":"6727:11:8"}],"id":9779,"name":"BinaryOperation","src":"6715:23:8"}],"id":9780,"name":"FunctionCall","src":"6707:32:8"}],"id":9781,"name":"ExpressionStatement","src":"6707:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9771,"isOffset":false,"isSlot":false,"src":"6772:3:8","valueSize":1}},{"self":{"declaration":9766,"isOffset":false,"isSlot":false,"src":"6793:4:8","valueSize":1}},{"idx":{"declaration":9768,"isOffset":false,"isSlot":false,"src":"6804:3:8","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":9782,"name":"InlineAssembly","src":"6749:70:8"}],"id":9783,"name":"Block","src":"6697:128:8"}],"id":9784,"name":"FunctionDefinition","src":"6611:214:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9804,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9785,"name":"ElementaryTypeName","src":"7064:5:8"}],"id":9786,"name":"VariableDeclaration","src":"7064:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9804,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9787,"name":"ElementaryTypeName","src":"7083:4:8"}],"id":9788,"name":"VariableDeclaration","src":"7083:8:8"}],"id":9789,"name":"ParameterList","src":"7063:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9804,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9790,"name":"ElementaryTypeName","src":"7116:7:8"}],"id":9791,"name":"VariableDeclaration","src":"7116:11:8"}],"id":9792,"name":"ParameterList","src":"7115:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9793,"name":"Identifier","src":"7139:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9788,"type":"uint256","value":"idx"},"id":9794,"name":"Identifier","src":"7147:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9795,"name":"Literal","src":"7153:2:8"}],"id":9796,"name":"BinaryOperation","src":"7147:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9786,"type":"bytes memory","value":"self"},"id":9797,"name":"Identifier","src":"7159:4:8"}],"id":9798,"name":"MemberAccess","src":"7159:11:8"}],"id":9799,"name":"BinaryOperation","src":"7147:23:8"}],"id":9800,"name":"FunctionCall","src":"7139:32:8"}],"id":9801,"name":"ExpressionStatement","src":"7139:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9791,"isOffset":false,"isSlot":false,"src":"7204:3:8","valueSize":1}},{"self":{"declaration":9786,"isOffset":false,"isSlot":false,"src":"7229:4:8","valueSize":1}},{"idx":{"declaration":9788,"isOffset":false,"isSlot":false,"src":"7240:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":9802,"name":"InlineAssembly","src":"7181:143:8"}],"id":9803,"name":"Block","src":"7129:201:8"}],"id":9804,"name":"FunctionDefinition","src":"7043:287:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9832,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9805,"name":"ElementaryTypeName","src":"7606:5:8"}],"id":9806,"name":"VariableDeclaration","src":"7606:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9832,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9807,"name":"ElementaryTypeName","src":"7625:4:8"}],"id":9808,"name":"VariableDeclaration","src":"7625:8:8"},{"attributes":{"constant":false,"name":"len","scope":9832,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9809,"name":"ElementaryTypeName","src":"7635:4:8"}],"id":9810,"name":"VariableDeclaration","src":"7635:8:8"}],"id":9811,"name":"ParameterList","src":"7605:39:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9832,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9812,"name":"ElementaryTypeName","src":"7668:7:8"}],"id":9813,"name":"VariableDeclaration","src":"7668:11:8"}],"id":9814,"name":"ParameterList","src":"7667:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9815,"name":"Identifier","src":"7691:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9810,"type":"uint256","value":"len"},"id":9816,"name":"Identifier","src":"7699:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9817,"name":"Literal","src":"7706:2:8"}],"id":9818,"name":"BinaryOperation","src":"7699:9:8"}],"id":9819,"name":"FunctionCall","src":"7691:18:8"}],"id":9820,"name":"ExpressionStatement","src":"7691:18:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9821,"name":"Identifier","src":"7719:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9808,"type":"uint256","value":"idx"},"id":9822,"name":"Identifier","src":"7727:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9810,"type":"uint256","value":"len"},"id":9823,"name":"Identifier","src":"7733:3:8"}],"id":9824,"name":"BinaryOperation","src":"7727:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9806,"type":"bytes memory","value":"self"},"id":9825,"name":"Identifier","src":"7740:4:8"}],"id":9826,"name":"MemberAccess","src":"7740:11:8"}],"id":9827,"name":"BinaryOperation","src":"7727:24:8"}],"id":9828,"name":"FunctionCall","src":"7719:33:8"}],"id":9829,"name":"ExpressionStatement","src":"7719:33:8"},{"attributes":{"externalReferences":[{"len":{"declaration":9810,"isOffset":false,"isSlot":false,"src":"7822:3:8","valueSize":1}},{"ret":{"declaration":9813,"isOffset":false,"isSlot":false,"src":"7845:3:8","valueSize":1}},{"self":{"declaration":9806,"isOffset":false,"isSlot":false,"src":"7870:4:8","valueSize":1}},{"idx":{"declaration":9808,"isOffset":false,"isSlot":false,"src":"7881:3:8","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":9830,"name":"InlineAssembly","src":"7762:142:8"}],"id":9831,"name":"Block","src":"7681:229:8"}],"id":9832,"name":"FunctionDefinition","src":"7586:324:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":9872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9833,"name":"ElementaryTypeName","src":"7932:4:8"}],"id":9834,"name":"VariableDeclaration","src":"7932:9:8"},{"attributes":{"constant":false,"name":"src","scope":9872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9835,"name":"ElementaryTypeName","src":"7943:4:8"}],"id":9836,"name":"VariableDeclaration","src":"7943:8:8"},{"attributes":{"constant":false,"name":"len","scope":9872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9837,"name":"ElementaryTypeName","src":"7953:4:8"}],"id":9838,"name":"VariableDeclaration","src":"7953:8:8"}],"id":9839,"name":"ParameterList","src":"7931:31:8"},{"attributes":{"parameters":[null]},"children":[],"id":9840,"name":"ParameterList","src":"7976:0:8"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9838,"type":"uint256","value":"len"},"id":9841,"name":"Identifier","src":"8043:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9842,"name":"Literal","src":"8050:2:8"}],"id":9843,"name":"BinaryOperation","src":"8043:9:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9838,"type":"uint256","value":"len"},"id":9844,"name":"Identifier","src":"8054:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9845,"name":"Literal","src":"8061:2:8"}],"id":9846,"name":"Assignment","src":"8054:9:8"}],"id":9847,"name":"ExpressionStatement","src":"8054:9:8"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":9836,"isOffset":false,"isSlot":false,"src":"8125:3:8","valueSize":1}},{"dest":{"declaration":9834,"isOffset":false,"isSlot":false,"src":"8113:4:8","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":9848,"name":"InlineAssembly","src":"8079:65:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"uint256","value":"dest"},"id":9849,"name":"Identifier","src":"8157:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9850,"name":"Literal","src":"8165:2:8"}],"id":9851,"name":"Assignment","src":"8157:10:8"}],"id":9852,"name":"ExpressionStatement","src":"8157:10:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9836,"type":"uint256","value":"src"},"id":9853,"name":"Identifier","src":"8181:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9854,"name":"Literal","src":"8188:2:8"}],"id":9855,"name":"Assignment","src":"8181:9:8"}],"id":9856,"name":"ExpressionStatement","src":"8181:9:8"}],"id":9857,"name":"Block","src":"8065:136:8"}],"id":9858,"name":"ForStatement","src":"8036:165:8"},{"attributes":{"assignments":[9860]},"children":[{"attributes":{"constant":false,"name":"mask","scope":9871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9859,"name":"ElementaryTypeName","src":"8243:4:8"}],"id":9860,"name":"VariableDeclaration","src":"8243:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":9861,"name":"Literal","src":"8255:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9862,"name":"Literal","src":"8263:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9838,"type":"uint256","value":"len"},"id":9863,"name":"Identifier","src":"8268:3:8"}],"id":9864,"name":"BinaryOperation","src":"8263:8:8"}],"id":9865,"name":"TupleExpression","src":"8262:10:8"}],"id":9866,"name":"BinaryOperation","src":"8255:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9867,"name":"Literal","src":"8275:1:8"}],"id":9868,"name":"BinaryOperation","src":"8255:21:8"}],"id":9869,"name":"VariableDeclarationStatement","src":"8243:33:8"},{"attributes":{"externalReferences":[{"src":{"declaration":9836,"isOffset":false,"isSlot":false,"src":"8334:3:8","valueSize":1}},{"mask":{"declaration":9860,"isOffset":false,"isSlot":false,"src":"8344:4:8","valueSize":1}},{"dest":{"declaration":9834,"isOffset":false,"isSlot":false,"src":"8421:4:8","valueSize":1}},{"dest":{"declaration":9834,"isOffset":false,"isSlot":false,"src":"8389:4:8","valueSize":1}},{"mask":{"declaration":9860,"isOffset":false,"isSlot":false,"src":"8396:4:8","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":9870,"name":"InlineAssembly","src":"8286:173:8"}],"id":9871,"name":"Block","src":"7976:489:8"}],"id":9872,"name":"FunctionDefinition","src":"7916:549:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9915,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9873,"name":"ElementaryTypeName","src":"8704:5:8"}],"id":9874,"name":"VariableDeclaration","src":"8704:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9875,"name":"ElementaryTypeName","src":"8723:4:8"}],"id":9876,"name":"VariableDeclaration","src":"8723:11:8"},{"attributes":{"constant":false,"name":"len","scope":9915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9877,"name":"ElementaryTypeName","src":"8736:4:8"}],"id":9878,"name":"VariableDeclaration","src":"8736:8:8"}],"id":9879,"name":"ParameterList","src":"8703:42:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9915,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9880,"name":"ElementaryTypeName","src":"8768:5:8"}],"id":9881,"name":"VariableDeclaration","src":"8768:12:8"}],"id":9882,"name":"ParameterList","src":"8767:14:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9883,"name":"Identifier","src":"8792:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9876,"type":"uint256","value":"offset"},"id":9884,"name":"Identifier","src":"8800:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9878,"type":"uint256","value":"len"},"id":9885,"name":"Identifier","src":"8809:3:8"}],"id":9886,"name":"BinaryOperation","src":"8800:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9874,"type":"bytes memory","value":"self"},"id":9887,"name":"Identifier","src":"8816:4:8"}],"id":9888,"name":"MemberAccess","src":"8816:11:8"}],"id":9889,"name":"BinaryOperation","src":"8800:27:8"}],"id":9890,"name":"FunctionCall","src":"8792:36:8"}],"id":9891,"name":"ExpressionStatement","src":"8792:36:8"},{"attributes":{"assignments":[9893]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9914,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9892,"name":"ElementaryTypeName","src":"8839:5:8"}],"id":9893,"name":"VariableDeclaration","src":"8839:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9894,"name":"ElementaryTypeName","src":"8862:5:8"}],"id":9895,"name":"NewExpression","src":"8858:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9878,"type":"uint256","value":"len"},"id":9896,"name":"Identifier","src":"8868:3:8"}],"id":9897,"name":"FunctionCall","src":"8858:14:8"}],"id":9898,"name":"VariableDeclarationStatement","src":"8839:33:8"},{"attributes":{"assignments":[9900],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":9914,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9899,"name":"ElementaryTypeName","src":"8882:4:8"}],"id":9900,"name":"VariableDeclaration","src":"8882:9:8"}],"id":9901,"name":"VariableDeclarationStatement","src":"8882:9:8"},{"attributes":{"assignments":[9903],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":9914,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9902,"name":"ElementaryTypeName","src":"8901:4:8"}],"id":9903,"name":"VariableDeclaration","src":"8901:8:8"}],"id":9904,"name":"VariableDeclarationStatement","src":"8901:8:8"},{"attributes":{"externalReferences":[{"dest":{"declaration":9900,"isOffset":false,"isSlot":false,"src":"8943:4:8","valueSize":1}},{"ret":{"declaration":9893,"isOffset":false,"isSlot":false,"src":"8955:3:8","valueSize":1}},{"src":{"declaration":9903,"isOffset":false,"isSlot":false,"src":"8976:3:8","valueSize":1}},{"self":{"declaration":9874,"isOffset":false,"isSlot":false,"src":"8991:4:8","valueSize":1}},{"offset":{"declaration":9876,"isOffset":false,"isSlot":false,"src":"9002:6:8","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":9905,"name":"InlineAssembly","src":"8920:99:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9872,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9906,"name":"Identifier","src":"9028:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9900,"type":"uint256","value":"dest"},"id":9907,"name":"Identifier","src":"9035:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9903,"type":"uint256","value":"src"},"id":9908,"name":"Identifier","src":"9041:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9878,"type":"uint256","value":"len"},"id":9909,"name":"Identifier","src":"9046:3:8"}],"id":9910,"name":"FunctionCall","src":"9028:22:8"}],"id":9911,"name":"ExpressionStatement","src":"9028:22:8"},{"attributes":{"functionReturnParameters":9882},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9893,"type":"bytes memory","value":"ret"},"id":9912,"name":"Identifier","src":"9068:3:8"}],"id":9913,"name":"Return","src":"9061:10:8"}],"id":9914,"name":"Block","src":"8782:296:8"}],"id":9915,"name":"FunctionDefinition","src":"8685:393:8"},{"attributes":{"constant":true,"name":"base32HexTable","scope":10138,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9916,"name":"ElementaryTypeName","src":"9206:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":9917,"name":"Literal","src":"9238:147:8"}],"id":9918,"name":"VariableDeclaration","src":"9206:179:8"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":10138,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10137,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9919,"name":"ElementaryTypeName","src":"9697:5:8"}],"id":9920,"name":"VariableDeclaration","src":"9697:17:8"},{"attributes":{"constant":false,"name":"off","scope":10137,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9921,"name":"ElementaryTypeName","src":"9716:4:8"}],"id":9922,"name":"VariableDeclaration","src":"9716:8:8"},{"attributes":{"constant":false,"name":"len","scope":10137,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9923,"name":"ElementaryTypeName","src":"9726:4:8"}],"id":9924,"name":"VariableDeclaration","src":"9726:8:8"}],"id":9925,"name":"ParameterList","src":"9696:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10137,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9926,"name":"ElementaryTypeName","src":"9758:7:8"}],"id":9927,"name":"VariableDeclaration","src":"9758:7:8"}],"id":9928,"name":"ParameterList","src":"9757:9:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9929,"name":"Identifier","src":"9777:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":9930,"name":"Identifier","src":"9785:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":9931,"name":"Literal","src":"9792:2:8"}],"id":9932,"name":"BinaryOperation","src":"9785:9:8"}],"id":9933,"name":"FunctionCall","src":"9777:18:8"}],"id":9934,"name":"ExpressionStatement","src":"9777:18:8"},{"attributes":{"assignments":[9936]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9935,"name":"ElementaryTypeName","src":"9806:4:8"}],"id":9936,"name":"VariableDeclaration","src":"9806:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9937,"name":"Literal","src":"9817:1:8"}],"id":9938,"name":"VariableDeclarationStatement","src":"9806:12:8"},{"attributes":{"assignments":[9940],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":10136,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9939,"name":"ElementaryTypeName","src":"9828:5:8"}],"id":9940,"name":"VariableDeclaration","src":"9828:13:8"}],"id":9941,"name":"VariableDeclarationStatement","src":"9828:13:8"},{"children":[{"attributes":{"assignments":[9943]},"children":[{"attributes":{"constant":false,"name":"i","scope":10008,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9942,"name":"ElementaryTypeName","src":"9855:4:8"}],"id":9943,"name":"VariableDeclaration","src":"9855:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9944,"name":"Literal","src":"9864:1:8"}],"id":9945,"name":"VariableDeclarationStatement","src":"9855:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9943,"type":"uint256","value":"i"},"id":9946,"name":"Identifier","src":"9867:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":9947,"name":"Identifier","src":"9871:3:8"}],"id":9948,"name":"BinaryOperation","src":"9867:7:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9943,"type":"uint256","value":"i"},"id":9949,"name":"Identifier","src":"9876:1:8"}],"id":9950,"name":"UnaryOperation","src":"9876:3:8"}],"id":9951,"name":"ExpressionStatement","src":"9876:3:8"},{"children":[{"attributes":{"assignments":[9953]},"children":[{"attributes":{"constant":false,"name":"char","scope":10007,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":9952,"name":"ElementaryTypeName","src":"9895:6:8"}],"id":9953,"name":"VariableDeclaration","src":"9895:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9920,"type":"bytes memory","value":"self"},"id":9954,"name":"Identifier","src":"9909:4:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9922,"type":"uint256","value":"off"},"id":9955,"name":"Identifier","src":"9914:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9943,"type":"uint256","value":"i"},"id":9956,"name":"Identifier","src":"9920:1:8"}],"id":9957,"name":"BinaryOperation","src":"9914:7:8"}],"id":9958,"name":"IndexAccess","src":"9909:13:8"}],"id":9959,"name":"VariableDeclarationStatement","src":"9895:27:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9960,"name":"Identifier","src":"9936:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9953,"type":"bytes1","value":"char"},"id":9961,"name":"Identifier","src":"9944:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":9962,"name":"Literal","src":"9952:4:8"}],"id":9963,"name":"BinaryOperation","src":"9944:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9953,"type":"bytes1","value":"char"},"id":9964,"name":"Identifier","src":"9960:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":9965,"name":"Literal","src":"9968:4:8"}],"id":9966,"name":"BinaryOperation","src":"9960:12:8"}],"id":9967,"name":"BinaryOperation","src":"9944:28:8"}],"id":9968,"name":"FunctionCall","src":"9936:37:8"}],"id":9969,"name":"ExpressionStatement","src":"9936:37:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":9970,"name":"Identifier","src":"9987:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9971,"name":"ElementaryTypeNameExpression","src":"9997:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9918,"type":"bytes memory","value":"base32HexTable"},"id":9972,"name":"Identifier","src":"10003:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":9973,"name":"ElementaryTypeNameExpression","src":"10018:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9974,"name":"ElementaryTypeNameExpression","src":"10023:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9953,"type":"bytes1","value":"char"},"id":9975,"name":"Identifier","src":"10029:4:8"}],"id":9976,"name":"FunctionCall","src":"10023:11:8"}],"id":9977,"name":"FunctionCall","src":"10018:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":9978,"name":"Literal","src":"10038:4:8"}],"id":9979,"name":"BinaryOperation","src":"10018:24:8"}],"id":9980,"name":"IndexAccess","src":"10003:40:8"}],"id":9981,"name":"FunctionCall","src":"9997:47:8"}],"id":9982,"name":"Assignment","src":"9987:57:8"}],"id":9983,"name":"ExpressionStatement","src":"9987:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":9984,"name":"Identifier","src":"10058:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":9985,"name":"Identifier","src":"10066:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":9986,"name":"Literal","src":"10077:4:8"}],"id":9987,"name":"BinaryOperation","src":"10066:15:8"}],"id":9988,"name":"FunctionCall","src":"10058:24:8"}],"id":9989,"name":"ExpressionStatement","src":"10058:24:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9943,"type":"uint256","value":"i"},"id":9990,"name":"Identifier","src":"10099:1:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":9991,"name":"Identifier","src":"10104:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9992,"name":"Literal","src":"10110:1:8"}],"id":9993,"name":"BinaryOperation","src":"10104:7:8"}],"id":9994,"name":"BinaryOperation","src":"10099:12:8"},{"children":[{"id":9995,"name":"Break","src":"10131:5:8"}],"id":9996,"name":"Block","src":"10113:38:8"}],"id":9997,"name":"IfStatement","src":"10096:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":9998,"name":"Identifier","src":"10164:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":9999,"name":"Identifier","src":"10171:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10000,"name":"Literal","src":"10178:1:8"}],"id":10001,"name":"BinaryOperation","src":"10171:8:8"}],"id":10002,"name":"TupleExpression","src":"10170:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10003,"name":"Identifier","src":"10183:7:8"}],"id":10004,"name":"BinaryOperation","src":"10170:20:8"}],"id":10005,"name":"Assignment","src":"10164:26:8"}],"id":10006,"name":"ExpressionStatement","src":"10164:26:8"}],"id":10007,"name":"Block","src":"9881:320:8"}],"id":10008,"name":"ForStatement","src":"9851:350:8"},{"attributes":{"assignments":[10010]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":10136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10009,"name":"ElementaryTypeName","src":"10211:4:8"}],"id":10010,"name":"VariableDeclaration","src":"10211:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10011,"name":"Identifier","src":"10225:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10012,"name":"Literal","src":"10231:1:8"}],"id":10013,"name":"BinaryOperation","src":"10225:7:8"}],"id":10014,"name":"VariableDeclarationStatement","src":"10211:21:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10015,"name":"Identifier","src":"10245:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10016,"name":"Literal","src":"10251:1:8"}],"id":10017,"name":"BinaryOperation","src":"10245:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10018,"name":"Literal","src":"10256:1:8"}],"id":10019,"name":"BinaryOperation","src":"10245:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10020,"name":"Identifier","src":"10325:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10021,"name":"Identifier","src":"10332:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10022,"name":"Literal","src":"10339:1:8"}],"id":10023,"name":"BinaryOperation","src":"10332:8:8"}],"id":10024,"name":"TupleExpression","src":"10331:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10025,"name":"Identifier","src":"10344:7:8"}],"id":10026,"name":"BinaryOperation","src":"10331:20:8"}],"id":10027,"name":"Assignment","src":"10325:26:8"}],"id":10028,"name":"ExpressionStatement","src":"10325:26:8"}],"id":10029,"name":"Block","src":"10259:103:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10030,"name":"Identifier","src":"10371:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10031,"name":"Literal","src":"10377:1:8"}],"id":10032,"name":"BinaryOperation","src":"10371:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10033,"name":"Literal","src":"10382:1:8"}],"id":10034,"name":"BinaryOperation","src":"10371:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10035,"name":"Identifier","src":"10444:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10036,"name":"Identifier","src":"10451:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10037,"name":"Literal","src":"10458:1:8"}],"id":10038,"name":"BinaryOperation","src":"10451:8:8"}],"id":10039,"name":"TupleExpression","src":"10450:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10040,"name":"Identifier","src":"10464:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10041,"name":"Literal","src":"10475:1:8"}],"id":10042,"name":"BinaryOperation","src":"10464:12:8"}],"id":10043,"name":"TupleExpression","src":"10463:14:8"}],"id":10044,"name":"BinaryOperation","src":"10450:27:8"}],"id":10045,"name":"Assignment","src":"10444:33:8"}],"id":10046,"name":"ExpressionStatement","src":"10444:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10047,"name":"Identifier","src":"10491:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10048,"name":"Literal","src":"10501:1:8"}],"id":10049,"name":"Assignment","src":"10491:11:8"}],"id":10050,"name":"ExpressionStatement","src":"10491:11:8"}],"id":10051,"name":"Block","src":"10385:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10052,"name":"Identifier","src":"10522:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10053,"name":"Literal","src":"10528:1:8"}],"id":10054,"name":"BinaryOperation","src":"10522:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10055,"name":"Literal","src":"10533:1:8"}],"id":10056,"name":"BinaryOperation","src":"10522:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10057,"name":"Identifier","src":"10597:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10058,"name":"Identifier","src":"10604:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10059,"name":"Literal","src":"10611:1:8"}],"id":10060,"name":"BinaryOperation","src":"10604:8:8"}],"id":10061,"name":"TupleExpression","src":"10603:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10062,"name":"Identifier","src":"10617:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10063,"name":"Literal","src":"10628:1:8"}],"id":10064,"name":"BinaryOperation","src":"10617:12:8"}],"id":10065,"name":"TupleExpression","src":"10616:14:8"}],"id":10066,"name":"BinaryOperation","src":"10603:27:8"}],"id":10067,"name":"Assignment","src":"10597:33:8"}],"id":10068,"name":"ExpressionStatement","src":"10597:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10069,"name":"Identifier","src":"10644:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10070,"name":"Literal","src":"10654:1:8"}],"id":10071,"name":"Assignment","src":"10644:11:8"}],"id":10072,"name":"ExpressionStatement","src":"10644:11:8"}],"id":10073,"name":"Block","src":"10536:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10074,"name":"Identifier","src":"10675:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10075,"name":"Literal","src":"10681:1:8"}],"id":10076,"name":"BinaryOperation","src":"10675:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10077,"name":"Literal","src":"10686:1:8"}],"id":10078,"name":"BinaryOperation","src":"10675:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10079,"name":"Identifier","src":"10750:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10080,"name":"Identifier","src":"10757:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10081,"name":"Literal","src":"10764:1:8"}],"id":10082,"name":"BinaryOperation","src":"10757:8:8"}],"id":10083,"name":"TupleExpression","src":"10756:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10084,"name":"Identifier","src":"10770:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10085,"name":"Literal","src":"10781:1:8"}],"id":10086,"name":"BinaryOperation","src":"10770:12:8"}],"id":10087,"name":"TupleExpression","src":"10769:14:8"}],"id":10088,"name":"BinaryOperation","src":"10756:27:8"}],"id":10089,"name":"Assignment","src":"10750:33:8"}],"id":10090,"name":"ExpressionStatement","src":"10750:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10091,"name":"Identifier","src":"10797:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10092,"name":"Literal","src":"10807:1:8"}],"id":10093,"name":"Assignment","src":"10797:11:8"}],"id":10094,"name":"ExpressionStatement","src":"10797:11:8"}],"id":10095,"name":"Block","src":"10689:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9924,"type":"uint256","value":"len"},"id":10096,"name":"Identifier","src":"10828:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10097,"name":"Literal","src":"10834:1:8"}],"id":10098,"name":"BinaryOperation","src":"10828:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":10099,"name":"Literal","src":"10839:1:8"}],"id":10100,"name":"BinaryOperation","src":"10828:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10101,"name":"Identifier","src":"10904:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10102,"name":"Identifier","src":"10911:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10103,"name":"Literal","src":"10918:1:8"}],"id":10104,"name":"BinaryOperation","src":"10911:8:8"}],"id":10105,"name":"TupleExpression","src":"10910:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"uint8","value":"decoded"},"id":10106,"name":"Identifier","src":"10924:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10107,"name":"Literal","src":"10935:1:8"}],"id":10108,"name":"BinaryOperation","src":"10924:12:8"}],"id":10109,"name":"TupleExpression","src":"10923:14:8"}],"id":10110,"name":"BinaryOperation","src":"10910:27:8"}],"id":10111,"name":"Assignment","src":"10904:33:8"}],"id":10112,"name":"ExpressionStatement","src":"10904:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10113,"name":"Identifier","src":"10951:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10114,"name":"Literal","src":"10961:1:8"}],"id":10115,"name":"Assignment","src":"10951:11:8"}],"id":10116,"name":"ExpressionStatement","src":"10951:11:8"}],"id":10117,"name":"Block","src":"10842:131:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[10158,10159],"referencedDeclaration":10158,"type":"function () pure","value":"revert"},"id":10118,"name":"Identifier","src":"10993:6:8"}],"id":10119,"name":"FunctionCall","src":"10993:8:8"}],"id":10120,"name":"ExpressionStatement","src":"10993:8:8"}],"id":10121,"name":"Block","src":"10979:33:8"}],"id":10122,"name":"IfStatement","src":"10825:187:8"}],"id":10123,"name":"IfStatement","src":"10672:340:8"}],"id":10124,"name":"IfStatement","src":"10519:493:8"}],"id":10125,"name":"IfStatement","src":"10368:644:8"}],"id":10126,"name":"IfStatement","src":"10242:770:8"},{"attributes":{"functionReturnParameters":9928},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":10127,"name":"ElementaryTypeNameExpression","src":"11029:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9936,"type":"uint256","value":"ret"},"id":10128,"name":"Identifier","src":"11037:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10129,"name":"Literal","src":"11045:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"bitlen"},"id":10130,"name":"Identifier","src":"11051:6:8"}],"id":10131,"name":"BinaryOperation","src":"11045:12:8"}],"id":10132,"name":"TupleExpression","src":"11044:14:8"}],"id":10133,"name":"BinaryOperation","src":"11037:21:8"}],"id":10134,"name":"FunctionCall","src":"11029:30:8"}],"id":10135,"name":"Return","src":"11022:37:8"}],"id":10136,"name":"Block","src":"9767:1299:8"}],"id":10137,"name":"FunctionDefinition","src":"9668:1398:8"}],"id":10138,"name":"ContractDefinition","src":"26:11042:8"}],"id":10139,"name":"SourceUnit","src":"0:11069:8"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[4638]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4466,"name":"PragmaDirective","src":"1401:23:9"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":4467,"name":"PragmaDirective","src":"1425:33:9"},{"attributes":{"SourceUnit":4465,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4468,"name":"ImportDirective","src":"1460:19:9"},{"attributes":{"SourceUnit":5763,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4469,"name":"ImportDirective","src":"1480:36:9"},{"attributes":{"SourceUnit":5922,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4470,"name":"ImportDirective","src":"1517:37:9"},{"attributes":{"SourceUnit":5992,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4471,"name":"ImportDirective","src":"1555:44:9"},{"attributes":{"SourceUnit":6483,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4472,"name":"ImportDirective","src":"1600:36:9"},{"attributes":{"SourceUnit":6670,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4473,"name":"ImportDirective","src":"1637:42:9"},{"attributes":{"SourceUnit":6740,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4474,"name":"ImportDirective","src":"1680:37:9"},{"attributes":{"SourceUnit":6831,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4475,"name":"ImportDirective","src":"1718:39:9"},{"attributes":{"SourceUnit":6914,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":4639,"symbolAliases":[null],"unitAlias":""},"id":4476,"name":"ImportDirective","src":"1758:37:9"},{"attributes":{"contractDependencies":[5762,5921,5991,6482,6669,6739,6830,6913,8799],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[4638,6913,6830,6739,6669,6482,5991,5921,5762,8799],"name":"PublicResolver","scope":4639},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":5762,"type":"contract ABIResolver"},"id":4477,"name":"UserDefinedTypeName","src":"1924:11:9"}],"id":4478,"name":"InheritanceSpecifier","src":"1924:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5921,"type":"contract AddrResolver"},"id":4479,"name":"UserDefinedTypeName","src":"1937:12:9"}],"id":4480,"name":"InheritanceSpecifier","src":"1937:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":5991,"type":"contract ContentHashResolver"},"id":4481,"name":"UserDefinedTypeName","src":"1951:19:9"}],"id":4482,"name":"InheritanceSpecifier","src":"1951:19:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":6482,"type":"contract DNSResolver"},"id":4483,"name":"UserDefinedTypeName","src":"1972:11:9"}],"id":4484,"name":"InheritanceSpecifier","src":"1972:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":6669,"type":"contract InterfaceResolver"},"id":4485,"name":"UserDefinedTypeName","src":"1985:17:9"}],"id":4486,"name":"InheritanceSpecifier","src":"1985:17:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":6739,"type":"contract NameResolver"},"id":4487,"name":"UserDefinedTypeName","src":"2004:12:9"}],"id":4488,"name":"InheritanceSpecifier","src":"2004:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":6830,"type":"contract PubkeyResolver"},"id":4489,"name":"UserDefinedTypeName","src":"2018:14:9"}],"id":4490,"name":"InheritanceSpecifier","src":"2018:14:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":6913,"type":"contract TextResolver"},"id":4491,"name":"UserDefinedTypeName","src":"2034:12:9"}],"id":4492,"name":"InheritanceSpecifier","src":"2034:12:9"},{"attributes":{"constant":false,"name":"ens","scope":4638,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4464,"type":"contract ENS"},"id":4493,"name":"UserDefinedTypeName","src":"2053:3:9"}],"id":4494,"name":"VariableDeclaration","src":"2053:7:9"},{"attributes":{"constant":false,"name":"authorisations","scope":4638,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4495,"name":"ElementaryTypeName","src":"2328:7:9"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":4496,"name":"ElementaryTypeName","src":"2345:7:9"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4497,"name":"ElementaryTypeName","src":"2362:7:9"},{"attributes":{"name":"bool","type":"bool"},"id":4498,"name":"ElementaryTypeName","src":"2371:4:9"}],"id":4499,"name":"Mapping","src":"2354:22:9"}],"id":4500,"name":"Mapping","src":"2337:40:9"}],"id":4501,"name":"Mapping","src":"2320:58:9"}],"id":4502,"name":"VariableDeclaration","src":"2320:80:9"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4512,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4503,"name":"ElementaryTypeName","src":"2434:7:9"}],"id":4504,"name":"VariableDeclaration","src":"2434:20:9"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":4512,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4505,"name":"ElementaryTypeName","src":"2456:7:9"}],"id":4506,"name":"VariableDeclaration","src":"2456:21:9"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":4512,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4507,"name":"ElementaryTypeName","src":"2479:7:9"}],"id":4508,"name":"VariableDeclaration","src":"2479:22:9"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":4512,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4509,"name":"ElementaryTypeName","src":"2503:4:9"}],"id":4510,"name":"VariableDeclaration","src":"2503:17:9"}],"id":4511,"name":"ParameterList","src":"2433:88:9"}],"id":4512,"name":"EventDefinition","src":"2407:115:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4638,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":4522,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4464,"type":"contract ENS"},"id":4513,"name":"UserDefinedTypeName","src":"2540:3:9"}],"id":4514,"name":"VariableDeclaration","src":"2540:8:9"}],"id":4515,"name":"ParameterList","src":"2539:10:9"},{"attributes":{"parameters":[null]},"children":[],"id":4516,"name":"ParameterList","src":"2557:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4494,"type":"contract ENS","value":"ens"},"id":4517,"name":"Identifier","src":"2567:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4514,"type":"contract ENS","value":"_ens"},"id":4518,"name":"Identifier","src":"2573:4:9"}],"id":4519,"name":"Assignment","src":"2567:10:9"}],"id":4520,"name":"ExpressionStatement","src":"2567:10:9"}],"id":4521,"name":"Block","src":"2557:27:9"}],"id":4522,"name":"FunctionDefinition","src":"2528:56:9"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":4638,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4551,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4523,"name":"ElementaryTypeName","src":"3295:7:9"}],"id":4524,"name":"VariableDeclaration","src":"3295:12:9"},{"attributes":{"constant":false,"name":"target","scope":4551,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4525,"name":"ElementaryTypeName","src":"3309:7:9"}],"id":4526,"name":"VariableDeclaration","src":"3309:14:9"},{"attributes":{"constant":false,"name":"isAuthorised","scope":4551,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4527,"name":"ElementaryTypeName","src":"3325:4:9"}],"id":4528,"name":"VariableDeclaration","src":"3325:17:9"}],"id":4529,"name":"ParameterList","src":"3294:49:9"},{"attributes":{"parameters":[null]},"children":[],"id":4530,"name":"ParameterList","src":"3353:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4502,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4531,"name":"Identifier","src":"3363:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4524,"type":"bytes32","value":"node"},"id":4532,"name":"Identifier","src":"3378:4:9"}],"id":4536,"name":"IndexAccess","src":"3363:20:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4533,"name":"Identifier","src":"3384:3:9"}],"id":4534,"name":"MemberAccess","src":"3384:10:9"}],"id":4537,"name":"IndexAccess","src":"3363:32:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4526,"type":"address","value":"target"},"id":4535,"name":"Identifier","src":"3396:6:9"}],"id":4538,"name":"IndexAccess","src":"3363:40:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4528,"type":"bool","value":"isAuthorised"},"id":4539,"name":"Identifier","src":"3406:12:9"}],"id":4540,"name":"Assignment","src":"3363:55:9"}],"id":4541,"name":"ExpressionStatement","src":"3363:55:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4512,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":4542,"name":"Identifier","src":"3433:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4524,"type":"bytes32","value":"node"},"id":4543,"name":"Identifier","src":"3454:4:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4544,"name":"Identifier","src":"3460:3:9"}],"id":4545,"name":"MemberAccess","src":"3460:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4526,"type":"address","value":"target"},"id":4546,"name":"Identifier","src":"3472:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4528,"type":"bool","value":"isAuthorised"},"id":4547,"name":"Identifier","src":"3480:12:9"}],"id":4548,"name":"FunctionCall","src":"3433:60:9"}],"id":4549,"name":"EmitStatement","src":"3428:65:9"}],"id":4550,"name":"Block","src":"3353:147:9"}],"id":4551,"name":"FunctionDefinition","src":"3269:231:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":4638,"stateMutability":"view","superFunction":8754,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4580,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4552,"name":"ElementaryTypeName","src":"3528:7:9"}],"id":4553,"name":"VariableDeclaration","src":"3528:12:9"}],"id":4554,"name":"ParameterList","src":"3527:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":4580,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4555,"name":"ElementaryTypeName","src":"3564:4:9"}],"id":4556,"name":"VariableDeclaration","src":"3564:4:9"}],"id":4557,"name":"ParameterList","src":"3563:6:9"},{"children":[{"attributes":{"assignments":[4559]},"children":[{"attributes":{"constant":false,"name":"owner","scope":4579,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4558,"name":"ElementaryTypeName","src":"3580:7:9"}],"id":4559,"name":"VariableDeclaration","src":"3580:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":4433,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4494,"type":"contract ENS","value":"ens"},"id":4560,"name":"Identifier","src":"3596:3:9"}],"id":4561,"name":"MemberAccess","src":"3596:9:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"bytes32","value":"node"},"id":4562,"name":"Identifier","src":"3606:4:9"}],"id":4563,"name":"FunctionCall","src":"3596:15:9"}],"id":4564,"name":"VariableDeclarationStatement","src":"3580:31:9"},{"attributes":{"functionReturnParameters":4557},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4559,"type":"address","value":"owner"},"id":4565,"name":"Identifier","src":"3628:5:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4566,"name":"Identifier","src":"3637:3:9"}],"id":4567,"name":"MemberAccess","src":"3637:10:9"}],"id":4568,"name":"BinaryOperation","src":"3628:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4502,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4569,"name":"Identifier","src":"3651:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"bytes32","value":"node"},"id":4570,"name":"Identifier","src":"3666:4:9"}],"id":4571,"name":"IndexAccess","src":"3651:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4559,"type":"address","value":"owner"},"id":4572,"name":"Identifier","src":"3672:5:9"}],"id":4573,"name":"IndexAccess","src":"3651:27:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4574,"name":"Identifier","src":"3679:3:9"}],"id":4575,"name":"MemberAccess","src":"3679:10:9"}],"id":4576,"name":"IndexAccess","src":"3651:39:9"}],"id":4577,"name":"BinaryOperation","src":"3628:62:9"}],"id":4578,"name":"Return","src":"3621:69:9"}],"id":4579,"name":"Block","src":"3570:127:9"}],"id":4580,"name":"FunctionDefinition","src":"3506:191:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":4638,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":4637,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4581,"name":"ElementaryTypeName","src":"3722:5:9"}],"id":4582,"name":"ArrayTypeName","src":"3722:7:9"}],"id":4583,"name":"VariableDeclaration","src":"3722:21:9"}],"id":4584,"name":"ParameterList","src":"3721:23:9"},{"children":[{"attributes":{"constant":false,"name":"results","scope":4637,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4585,"name":"ElementaryTypeName","src":"3762:5:9"}],"id":4586,"name":"ArrayTypeName","src":"3762:7:9"}],"id":4587,"name":"VariableDeclaration","src":"3762:22:9"}],"id":4588,"name":"ParameterList","src":"3761:24:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4587,"type":"bytes memory[] memory","value":"results"},"id":4589,"name":"Identifier","src":"3796:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4590,"name":"ElementaryTypeName","src":"3810:5:9"}],"id":4591,"name":"ArrayTypeName","src":"3810:7:9"}],"id":4592,"name":"NewExpression","src":"3806:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4583,"type":"bytes calldata[] calldata","value":"data"},"id":4593,"name":"Identifier","src":"3818:4:9"}],"id":4594,"name":"MemberAccess","src":"3818:11:9"}],"id":4595,"name":"FunctionCall","src":"3806:24:9"}],"id":4596,"name":"Assignment","src":"3796:34:9"}],"id":4597,"name":"ExpressionStatement","src":"3796:34:9"},{"children":[{"attributes":{"assignments":[4599]},"children":[{"attributes":{"constant":false,"name":"i","scope":4633,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4598,"name":"ElementaryTypeName","src":"3844:4:9"}],"id":4599,"name":"VariableDeclaration","src":"3844:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4600,"name":"Literal","src":"3853:1:9"}],"id":4601,"name":"VariableDeclarationStatement","src":"3844:10:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"i"},"id":4602,"name":"Identifier","src":"3856:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4583,"type":"bytes calldata[] calldata","value":"data"},"id":4603,"name":"Identifier","src":"3860:4:9"}],"id":4604,"name":"MemberAccess","src":"3860:11:9"}],"id":4605,"name":"BinaryOperation","src":"3856:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"i"},"id":4606,"name":"Identifier","src":"3873:1:9"}],"id":4607,"name":"UnaryOperation","src":"3873:3:9"}],"id":4608,"name":"ExpressionStatement","src":"3873:3:9"},{"children":[{"attributes":{"assignments":[4610,4612]},"children":[{"attributes":{"constant":false,"name":"success","scope":4632,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4609,"name":"ElementaryTypeName","src":"3893:4:9"}],"id":4610,"name":"VariableDeclaration","src":"3893:12:9"},{"attributes":{"constant":false,"name":"result","scope":4632,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4611,"name":"ElementaryTypeName","src":"3907:5:9"}],"id":4612,"name":"VariableDeclaration","src":"3907:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$4638","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4613,"name":"ElementaryTypeNameExpression","src":"3930:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10211,"type":"contract PublicResolver","value":"this"},"id":4614,"name":"Identifier","src":"3938:4:9"}],"id":4615,"name":"FunctionCall","src":"3930:13:9"}],"id":4616,"name":"MemberAccess","src":"3930:26:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4583,"type":"bytes calldata[] calldata","value":"data"},"id":4617,"name":"Identifier","src":"3957:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"i"},"id":4618,"name":"Identifier","src":"3962:1:9"}],"id":4619,"name":"IndexAccess","src":"3957:7:9"}],"id":4620,"name":"FunctionCall","src":"3930:35:9"}],"id":4621,"name":"VariableDeclarationStatement","src":"3892:73:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":4622,"name":"Identifier","src":"3979:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4610,"type":"bool","value":"success"},"id":4623,"name":"Identifier","src":"3987:7:9"}],"id":4624,"name":"FunctionCall","src":"3979:16:9"}],"id":4625,"name":"ExpressionStatement","src":"3979:16:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4587,"type":"bytes memory[] memory","value":"results"},"id":4626,"name":"Identifier","src":"4009:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"i"},"id":4627,"name":"Identifier","src":"4017:1:9"}],"id":4628,"name":"IndexAccess","src":"4009:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4612,"type":"bytes memory","value":"result"},"id":4629,"name":"Identifier","src":"4022:6:9"}],"id":4630,"name":"Assignment","src":"4009:19:9"}],"id":4631,"name":"ExpressionStatement","src":"4009:19:9"}],"id":4632,"name":"Block","src":"3878:161:9"}],"id":4633,"name":"ForStatement","src":"3840:199:9"},{"attributes":{"functionReturnParameters":4588},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4587,"type":"bytes memory[] memory","value":"results"},"id":4634,"name":"Identifier","src":"4055:7:9"}],"id":4635,"name":"Return","src":"4048:14:9"}],"id":4636,"name":"Block","src":"3786:283:9"}],"id":4637,"name":"FunctionDefinition","src":"3703:366:9"}],"id":4638,"name":"ContractDefinition","src":"1897:2174:9"}],"id":4639,"name":"SourceUnit","src":"1401:2671:9"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[9417]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":8801,"name":"PragmaDirective","src":"0:24:10"},{"attributes":{"SourceUnit":10139,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":9418,"symbolAliases":[null],"unitAlias":""},"id":8802,"name":"ImportDirective","src":"26:29:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[9417],"name":"RRUtils","scope":9418},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10138,"type":"library ENSBytesUtils"},"id":8803,"name":"UserDefinedTypeName","src":"178:13:10"}],"id":8804,"name":"UsingForDirective","src":"172:26:10"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8851,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8805,"name":"ElementaryTypeName","src":"487:5:10"}],"id":8806,"name":"VariableDeclaration","src":"487:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8851,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8807,"name":"ElementaryTypeName","src":"506:4:10"}],"id":8808,"name":"VariableDeclaration","src":"506:11:10"}],"id":8809,"name":"ParameterList","src":"486:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8851,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8810,"name":"ElementaryTypeName","src":"541:4:10"}],"id":8811,"name":"VariableDeclaration","src":"541:4:10"}],"id":8812,"name":"ParameterList","src":"540:6:10"},{"children":[{"attributes":{"assignments":[8814]},"children":[{"attributes":{"constant":false,"name":"idx","scope":8850,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8813,"name":"ElementaryTypeName","src":"557:4:10"}],"id":8814,"name":"VariableDeclaration","src":"557:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8808,"type":"uint256","value":"offset"},"id":8815,"name":"Identifier","src":"568:6:10"}],"id":8816,"name":"VariableDeclarationStatement","src":"557:17:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8817,"name":"Literal","src":"591:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10142,"type":"function (bool) pure","value":"assert"},"id":8818,"name":"Identifier","src":"611:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8814,"type":"uint256","value":"idx"},"id":8819,"name":"Identifier","src":"618:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8806,"type":"bytes memory","value":"self"},"id":8820,"name":"Identifier","src":"624:4:10"}],"id":8821,"name":"MemberAccess","src":"624:11:10"}],"id":8822,"name":"BinaryOperation","src":"618:17:10"}],"id":8823,"name":"FunctionCall","src":"611:25:10"}],"id":8824,"name":"ExpressionStatement","src":"611:25:10"},{"attributes":{"assignments":[8826]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":8844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8825,"name":"ElementaryTypeName","src":"650:4:10"}],"id":8826,"name":"VariableDeclaration","src":"650:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8806,"type":"bytes memory","value":"self"},"id":8827,"name":"Identifier","src":"666:4:10"}],"id":8828,"name":"MemberAccess","src":"666:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8814,"type":"uint256","value":"idx"},"id":8829,"name":"Identifier","src":"681:3:10"}],"id":8830,"name":"FunctionCall","src":"666:19:10"}],"id":8831,"name":"VariableDeclarationStatement","src":"650:35:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8814,"type":"uint256","value":"idx"},"id":8832,"name":"Identifier","src":"699:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8826,"type":"uint256","value":"labelLen"},"id":8833,"name":"Identifier","src":"706:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8834,"name":"Literal","src":"717:1:10"}],"id":8835,"name":"BinaryOperation","src":"706:12:10"}],"id":8836,"name":"Assignment","src":"699:19:10"}],"id":8837,"name":"ExpressionStatement","src":"699:19:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8826,"type":"uint256","value":"labelLen"},"id":8838,"name":"Identifier","src":"736:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8839,"name":"Literal","src":"748:1:10"}],"id":8840,"name":"BinaryOperation","src":"736:13:10"},{"children":[{"id":8841,"name":"Break","src":"769:5:10"}],"id":8842,"name":"Block","src":"751:38:10"}],"id":8843,"name":"IfStatement","src":"732:57:10"}],"id":8844,"name":"Block","src":"597:202:10"}],"id":8845,"name":"WhileStatement","src":"584:215:10"},{"attributes":{"functionReturnParameters":8812},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8814,"type":"uint256","value":"idx"},"id":8846,"name":"Identifier","src":"815:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8808,"type":"uint256","value":"offset"},"id":8847,"name":"Identifier","src":"821:6:10"}],"id":8848,"name":"BinaryOperation","src":"815:12:10"}],"id":8849,"name":"Return","src":"808:19:10"}],"id":8850,"name":"Block","src":"547:287:10"}],"id":8851,"name":"FunctionDefinition","src":"467:367:10"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8874,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8852,"name":"ElementaryTypeName","src":"1073:5:10"}],"id":8853,"name":"VariableDeclaration","src":"1073:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8874,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8854,"name":"ElementaryTypeName","src":"1092:4:10"}],"id":8855,"name":"VariableDeclaration","src":"1092:11:10"}],"id":8856,"name":"ParameterList","src":"1072:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8874,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8857,"name":"ElementaryTypeName","src":"1127:5:10"}],"id":8858,"name":"VariableDeclaration","src":"1127:16:10"}],"id":8859,"name":"ParameterList","src":"1126:18:10"},{"children":[{"attributes":{"assignments":[8861]},"children":[{"attributes":{"constant":false,"name":"len","scope":8873,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8860,"name":"ElementaryTypeName","src":"1155:4:10"}],"id":8861,"name":"VariableDeclaration","src":"1155:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":8862,"name":"Identifier","src":"1166:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8853,"type":"bytes memory","value":"self"},"id":8863,"name":"Identifier","src":"1177:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8855,"type":"uint256","value":"offset"},"id":8864,"name":"Identifier","src":"1183:6:10"}],"id":8865,"name":"FunctionCall","src":"1166:24:10"}],"id":8866,"name":"VariableDeclarationStatement","src":"1155:35:10"},{"attributes":{"functionReturnParameters":8859},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9915,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8853,"type":"bytes memory","value":"self"},"id":8867,"name":"Identifier","src":"1207:4:10"}],"id":8868,"name":"MemberAccess","src":"1207:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8855,"type":"uint256","value":"offset"},"id":8869,"name":"Identifier","src":"1222:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8861,"type":"uint256","value":"len"},"id":8870,"name":"Identifier","src":"1230:3:10"}],"id":8871,"name":"FunctionCall","src":"1207:27:10"}],"id":8872,"name":"Return","src":"1200:34:10"}],"id":8873,"name":"Block","src":"1145:96:10"}],"id":8874,"name":"FunctionDefinition","src":"1055:186:10"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8923,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8875,"name":"ElementaryTypeName","src":"1541:5:10"}],"id":8876,"name":"VariableDeclaration","src":"1541:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8923,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8877,"name":"ElementaryTypeName","src":"1560:4:10"}],"id":8878,"name":"VariableDeclaration","src":"1560:11:10"}],"id":8879,"name":"ParameterList","src":"1540:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8923,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8880,"name":"ElementaryTypeName","src":"1595:4:10"}],"id":8881,"name":"VariableDeclaration","src":"1595:4:10"}],"id":8882,"name":"ParameterList","src":"1594:6:10"},{"children":[{"attributes":{"assignments":[8884]},"children":[{"attributes":{"constant":false,"name":"count","scope":8922,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8883,"name":"ElementaryTypeName","src":"1611:4:10"}],"id":8884,"name":"VariableDeclaration","src":"1611:10:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8885,"name":"Literal","src":"1624:1:10"}],"id":8886,"name":"VariableDeclarationStatement","src":"1611:14:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8887,"name":"Literal","src":"1642:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10142,"type":"function (bool) pure","value":"assert"},"id":8888,"name":"Identifier","src":"1662:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8878,"type":"uint256","value":"offset"},"id":8889,"name":"Identifier","src":"1669:6:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8876,"type":"bytes memory","value":"self"},"id":8890,"name":"Identifier","src":"1678:4:10"}],"id":8891,"name":"MemberAccess","src":"1678:11:10"}],"id":8892,"name":"BinaryOperation","src":"1669:20:10"}],"id":8893,"name":"FunctionCall","src":"1662:28:10"}],"id":8894,"name":"ExpressionStatement","src":"1662:28:10"},{"attributes":{"assignments":[8896]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":8918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8895,"name":"ElementaryTypeName","src":"1704:4:10"}],"id":8896,"name":"VariableDeclaration","src":"1704:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8876,"type":"bytes memory","value":"self"},"id":8897,"name":"Identifier","src":"1720:4:10"}],"id":8898,"name":"MemberAccess","src":"1720:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8878,"type":"uint256","value":"offset"},"id":8899,"name":"Identifier","src":"1735:6:10"}],"id":8900,"name":"FunctionCall","src":"1720:22:10"}],"id":8901,"name":"VariableDeclarationStatement","src":"1704:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8878,"type":"uint256","value":"offset"},"id":8902,"name":"Identifier","src":"1756:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8896,"type":"uint256","value":"labelLen"},"id":8903,"name":"Identifier","src":"1766:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8904,"name":"Literal","src":"1777:1:10"}],"id":8905,"name":"BinaryOperation","src":"1766:12:10"}],"id":8906,"name":"Assignment","src":"1756:22:10"}],"id":8907,"name":"ExpressionStatement","src":"1756:22:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8896,"type":"uint256","value":"labelLen"},"id":8908,"name":"Identifier","src":"1796:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8909,"name":"Literal","src":"1808:1:10"}],"id":8910,"name":"BinaryOperation","src":"1796:13:10"},{"children":[{"id":8911,"name":"Break","src":"1829:5:10"}],"id":8912,"name":"Block","src":"1811:38:10"}],"id":8913,"name":"IfStatement","src":"1792:57:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8884,"type":"uint256","value":"count"},"id":8914,"name":"Identifier","src":"1862:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8915,"name":"Literal","src":"1871:1:10"}],"id":8916,"name":"Assignment","src":"1862:10:10"}],"id":8917,"name":"ExpressionStatement","src":"1862:10:10"}],"id":8918,"name":"Block","src":"1648:235:10"}],"id":8919,"name":"WhileStatement","src":"1635:248:10"},{"attributes":{"functionReturnParameters":8882},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8884,"type":"uint256","value":"count"},"id":8920,"name":"Identifier","src":"1899:5:10"}],"id":8921,"name":"Return","src":"1892:12:10"}],"id":8922,"name":"Block","src":"1601:310:10"}],"id":8923,"name":"FunctionDefinition","src":"1521:390:10"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":9417,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":8938,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8924,"name":"ElementaryTypeName","src":"2006:5:10"}],"id":8925,"name":"VariableDeclaration","src":"2006:10:10"},{"attributes":{"constant":false,"name":"offset","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8926,"name":"ElementaryTypeName","src":"2026:4:10"}],"id":8927,"name":"VariableDeclaration","src":"2026:11:10"},{"attributes":{"constant":false,"name":"dnstype","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":8928,"name":"ElementaryTypeName","src":"2047:6:10"}],"id":8929,"name":"VariableDeclaration","src":"2047:14:10"},{"attributes":{"constant":false,"name":"class","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":8930,"name":"ElementaryTypeName","src":"2071:6:10"}],"id":8931,"name":"VariableDeclaration","src":"2071:12:10"},{"attributes":{"constant":false,"name":"ttl","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":8932,"name":"ElementaryTypeName","src":"2093:6:10"}],"id":8933,"name":"VariableDeclaration","src":"2093:10:10"},{"attributes":{"constant":false,"name":"rdataOffset","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8934,"name":"ElementaryTypeName","src":"2113:4:10"}],"id":8935,"name":"VariableDeclaration","src":"2113:16:10"},{"attributes":{"constant":false,"name":"nextOffset","scope":8938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8936,"name":"ElementaryTypeName","src":"2139:4:10"}],"id":8937,"name":"VariableDeclaration","src":"2139:15:10"}],"id":8938,"name":"StructDefinition","src":"1978:183:10"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8964,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8939,"name":"ElementaryTypeName","src":"2387:5:10"}],"id":8940,"name":"VariableDeclaration","src":"2387:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8964,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8941,"name":"ElementaryTypeName","src":"2406:4:10"}],"id":8942,"name":"VariableDeclaration","src":"2406:11:10"}],"id":8943,"name":"ParameterList","src":"2386:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8964,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":8944,"name":"UserDefinedTypeName","src":"2442:10:10"}],"id":8945,"name":"VariableDeclaration","src":"2442:21:10"}],"id":8946,"name":"ParameterList","src":"2441:23:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8945,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8947,"name":"Identifier","src":"2475:3:10"}],"id":8949,"name":"MemberAccess","src":"2475:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8940,"type":"bytes memory","value":"self"},"id":8950,"name":"Identifier","src":"2486:4:10"}],"id":8951,"name":"Assignment","src":"2475:15:10"}],"id":8952,"name":"ExpressionStatement","src":"2475:15:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":8937,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8945,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8953,"name":"Identifier","src":"2500:3:10"}],"id":8955,"name":"MemberAccess","src":"2500:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8942,"type":"uint256","value":"offset"},"id":8956,"name":"Identifier","src":"2517:6:10"}],"id":8957,"name":"Assignment","src":"2500:23:10"}],"id":8958,"name":"ExpressionStatement","src":"2500:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$8938_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9081,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":8959,"name":"Identifier","src":"2533:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8945,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8960,"name":"Identifier","src":"2538:3:10"}],"id":8961,"name":"FunctionCall","src":"2533:9:10"}],"id":8962,"name":"ExpressionStatement","src":"2533:9:10"}],"id":8963,"name":"Block","src":"2465:84:10"}],"id":8964,"name":"FunctionDefinition","src":"2367:182:10"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":8979,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":8965,"name":"UserDefinedTypeName","src":"2734:10:10"}],"id":8966,"name":"VariableDeclaration","src":"2734:22:10"}],"id":8967,"name":"ParameterList","src":"2733:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8979,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8968,"name":"ElementaryTypeName","src":"2780:4:10"}],"id":8969,"name":"VariableDeclaration","src":"2780:4:10"}],"id":8970,"name":"ParameterList","src":"2779:6:10"},{"children":[{"attributes":{"functionReturnParameters":8970},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8966,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8971,"name":"Identifier","src":"2803:4:10"}],"id":8972,"name":"MemberAccess","src":"2803:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8966,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8973,"name":"Identifier","src":"2818:4:10"}],"id":8974,"name":"MemberAccess","src":"2818:9:10"}],"id":8975,"name":"MemberAccess","src":"2818:16:10"}],"id":8976,"name":"BinaryOperation","src":"2803:31:10"}],"id":8977,"name":"Return","src":"2796:38:10"}],"id":8978,"name":"Block","src":"2786:55:10"}],"id":8979,"name":"FunctionDefinition","src":"2720:121:10"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9081,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":8980,"name":"UserDefinedTypeName","src":"2978:10:10"}],"id":8981,"name":"VariableDeclaration","src":"2978:22:10"}],"id":8982,"name":"ParameterList","src":"2977:24:10"},{"attributes":{"parameters":[null]},"children":[],"id":8983,"name":"ParameterList","src":"3016:0:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8984,"name":"Identifier","src":"3026:4:10"}],"id":8986,"name":"MemberAccess","src":"3026:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":8937,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8987,"name":"Identifier","src":"3040:4:10"}],"id":8988,"name":"MemberAccess","src":"3040:15:10"}],"id":8989,"name":"Assignment","src":"3026:29:10"}],"id":8990,"name":"ExpressionStatement","src":"3026:29:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8991,"name":"Identifier","src":"3069:4:10"}],"id":8992,"name":"MemberAccess","src":"3069:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8993,"name":"Identifier","src":"3084:4:10"}],"id":8994,"name":"MemberAccess","src":"3084:9:10"}],"id":8995,"name":"MemberAccess","src":"3084:16:10"}],"id":8996,"name":"BinaryOperation","src":"3069:31:10"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":8983},"id":8997,"name":"Return","src":"3116:7:10"}],"id":8998,"name":"Block","src":"3102:31:10"}],"id":8999,"name":"IfStatement","src":"3065:68:10"},{"attributes":{"assignments":[9001]},"children":[{"attributes":{"constant":false,"name":"off","scope":9080,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9000,"name":"ElementaryTypeName","src":"3168:4:10"}],"id":9001,"name":"VariableDeclaration","src":"3168:8:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9002,"name":"Identifier","src":"3179:4:10"}],"id":9003,"name":"MemberAccess","src":"3179:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9004,"name":"Identifier","src":"3193:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9005,"name":"Identifier","src":"3204:4:10"}],"id":9006,"name":"MemberAccess","src":"3204:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9007,"name":"Identifier","src":"3215:4:10"}],"id":9008,"name":"MemberAccess","src":"3215:11:10"}],"id":9009,"name":"FunctionCall","src":"3193:34:10"}],"id":9010,"name":"BinaryOperation","src":"3179:48:10"}],"id":9011,"name":"VariableDeclarationStatement","src":"3168:59:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":8929,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9012,"name":"Identifier","src":"3275:4:10"}],"id":9014,"name":"MemberAccess","src":"3275:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9744,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9015,"name":"Identifier","src":"3290:4:10"}],"id":9016,"name":"MemberAccess","src":"3290:9:10"}],"id":9017,"name":"MemberAccess","src":"3290:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9018,"name":"Identifier","src":"3311:3:10"}],"id":9019,"name":"FunctionCall","src":"3290:25:10"}],"id":9020,"name":"Assignment","src":"3275:40:10"}],"id":9021,"name":"ExpressionStatement","src":"3275:40:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9022,"name":"Identifier","src":"3325:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9023,"name":"Literal","src":"3332:1:10"}],"id":9024,"name":"Assignment","src":"3325:8:10"}],"id":9025,"name":"ExpressionStatement","src":"3325:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":8931,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9026,"name":"Identifier","src":"3343:4:10"}],"id":9028,"name":"MemberAccess","src":"3343:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9744,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9029,"name":"Identifier","src":"3356:4:10"}],"id":9030,"name":"MemberAccess","src":"3356:9:10"}],"id":9031,"name":"MemberAccess","src":"3356:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9032,"name":"Identifier","src":"3377:3:10"}],"id":9033,"name":"FunctionCall","src":"3356:25:10"}],"id":9034,"name":"Assignment","src":"3343:38:10"}],"id":9035,"name":"ExpressionStatement","src":"3343:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9036,"name":"Identifier","src":"3391:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9037,"name":"Literal","src":"3398:1:10"}],"id":9038,"name":"Assignment","src":"3391:8:10"}],"id":9039,"name":"ExpressionStatement","src":"3391:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":8933,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9040,"name":"Identifier","src":"3409:4:10"}],"id":9042,"name":"MemberAccess","src":"3409:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":9764,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9043,"name":"Identifier","src":"3420:4:10"}],"id":9044,"name":"MemberAccess","src":"3420:9:10"}],"id":9045,"name":"MemberAccess","src":"3420:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9046,"name":"Identifier","src":"3441:3:10"}],"id":9047,"name":"FunctionCall","src":"3420:25:10"}],"id":9048,"name":"Assignment","src":"3409:36:10"}],"id":9049,"name":"ExpressionStatement","src":"3409:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9050,"name":"Identifier","src":"3455:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9051,"name":"Literal","src":"3462:1:10"}],"id":9052,"name":"Assignment","src":"3455:8:10"}],"id":9053,"name":"ExpressionStatement","src":"3455:8:10"},{"attributes":{"assignments":[9055]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":9080,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9054,"name":"ElementaryTypeName","src":"3500:4:10"}],"id":9055,"name":"VariableDeclaration","src":"3500:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9744,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9056,"name":"Identifier","src":"3519:4:10"}],"id":9057,"name":"MemberAccess","src":"3519:9:10"}],"id":9058,"name":"MemberAccess","src":"3519:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9059,"name":"Identifier","src":"3540:3:10"}],"id":9060,"name":"FunctionCall","src":"3519:25:10"}],"id":9061,"name":"VariableDeclarationStatement","src":"3500:44:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9062,"name":"Identifier","src":"3554:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9063,"name":"Literal","src":"3561:1:10"}],"id":9064,"name":"Assignment","src":"3554:8:10"}],"id":9065,"name":"ExpressionStatement","src":"3554:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":8935,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9066,"name":"Identifier","src":"3572:4:10"}],"id":9068,"name":"MemberAccess","src":"3572:16:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9069,"name":"Identifier","src":"3591:3:10"}],"id":9070,"name":"Assignment","src":"3572:22:10"}],"id":9071,"name":"ExpressionStatement","src":"3572:22:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":8937,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8981,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9072,"name":"Identifier","src":"3604:4:10"}],"id":9074,"name":"MemberAccess","src":"3604:15:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9001,"type":"uint256","value":"off"},"id":9075,"name":"Identifier","src":"3622:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9055,"type":"uint256","value":"rdataLength"},"id":9076,"name":"Identifier","src":"3628:11:10"}],"id":9077,"name":"BinaryOperation","src":"3622:17:10"}],"id":9078,"name":"Assignment","src":"3604:35:10"}],"id":9079,"name":"ExpressionStatement","src":"3604:35:10"}],"id":9080,"name":"Block","src":"3016:630:10"}],"id":9081,"name":"FunctionDefinition","src":"2964:682:10"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9102,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":9082,"name":"UserDefinedTypeName","src":"3836:10:10"}],"id":9083,"name":"VariableDeclaration","src":"3836:22:10"}],"id":9084,"name":"ParameterList","src":"3835:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9102,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9085,"name":"ElementaryTypeName","src":"3882:5:10"}],"id":9086,"name":"VariableDeclaration","src":"3882:12:10"}],"id":9087,"name":"ParameterList","src":"3881:14:10"},{"children":[{"attributes":{"functionReturnParameters":9087},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9915,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9088,"name":"Identifier","src":"3913:4:10"}],"id":9089,"name":"MemberAccess","src":"3913:9:10"}],"id":9090,"name":"MemberAccess","src":"3913:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9091,"name":"Identifier","src":"3933:4:10"}],"id":9092,"name":"MemberAccess","src":"3933:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9093,"name":"Identifier","src":"3946:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9094,"name":"Identifier","src":"3957:4:10"}],"id":9095,"name":"MemberAccess","src":"3957:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9096,"name":"Identifier","src":"3968:4:10"}],"id":9097,"name":"MemberAccess","src":"3968:11:10"}],"id":9098,"name":"FunctionCall","src":"3946:34:10"}],"id":9099,"name":"FunctionCall","src":"3913:68:10"}],"id":9100,"name":"Return","src":"3906:75:10"}],"id":9101,"name":"Block","src":"3896:92:10"}],"id":9102,"name":"FunctionDefinition","src":"3822:166:10"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9122,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":9103,"name":"UserDefinedTypeName","src":"4176:10:10"}],"id":9104,"name":"VariableDeclaration","src":"4176:22:10"}],"id":9105,"name":"ParameterList","src":"4175:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9122,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9106,"name":"ElementaryTypeName","src":"4222:5:10"}],"id":9107,"name":"VariableDeclaration","src":"4222:12:10"}],"id":9108,"name":"ParameterList","src":"4221:14:10"},{"children":[{"attributes":{"functionReturnParameters":9108},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9915,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8925,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9104,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9109,"name":"Identifier","src":"4253:4:10"}],"id":9110,"name":"MemberAccess","src":"4253:9:10"}],"id":9111,"name":"MemberAccess","src":"4253:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":8935,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9104,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9112,"name":"Identifier","src":"4273:4:10"}],"id":9113,"name":"MemberAccess","src":"4273:16:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":8937,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9104,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9114,"name":"Identifier","src":"4291:4:10"}],"id":9115,"name":"MemberAccess","src":"4291:15:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":8935,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9104,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9116,"name":"Identifier","src":"4309:4:10"}],"id":9117,"name":"MemberAccess","src":"4309:16:10"}],"id":9118,"name":"BinaryOperation","src":"4291:34:10"}],"id":9119,"name":"FunctionCall","src":"4253:73:10"}],"id":9120,"name":"Return","src":"4246:80:10"}],"id":9121,"name":"Block","src":"4236:97:10"}],"id":9122,"name":"FunctionDefinition","src":"4161:172:10"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9242,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9123,"name":"ElementaryTypeName","src":"4675:5:10"}],"id":9124,"name":"VariableDeclaration","src":"4675:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9242,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9125,"name":"ElementaryTypeName","src":"4694:4:10"}],"id":9126,"name":"VariableDeclaration","src":"4694:11:10"},{"attributes":{"constant":false,"name":"rrtype","scope":9242,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9127,"name":"ElementaryTypeName","src":"4707:6:10"}],"id":9128,"name":"VariableDeclaration","src":"4707:13:10"}],"id":9129,"name":"ParameterList","src":"4674:47:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9242,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9130,"name":"ElementaryTypeName","src":"4745:4:10"}],"id":9131,"name":"VariableDeclaration","src":"4745:4:10"}],"id":9132,"name":"ParameterList","src":"4744:6:10"},{"children":[{"attributes":{"assignments":[9134]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":9241,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9133,"name":"ElementaryTypeName","src":"4761:5:10"}],"id":9134,"name":"VariableDeclaration","src":"4761:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9135,"name":"ElementaryTypeNameExpression","src":"4780:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint16","value":"rrtype"},"id":9136,"name":"Identifier","src":"4786:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9137,"name":"Literal","src":"4796:1:10"}],"id":9138,"name":"BinaryOperation","src":"4786:11:10"}],"id":9139,"name":"FunctionCall","src":"4780:18:10"}],"id":9140,"name":"VariableDeclarationStatement","src":"4761:37:10"},{"attributes":{"assignments":[9142]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":9241,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9141,"name":"ElementaryTypeName","src":"4808:5:10"}],"id":9142,"name":"VariableDeclaration","src":"4808:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9143,"name":"ElementaryTypeNameExpression","src":"4827:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint16","value":"rrtype"},"id":9144,"name":"Identifier","src":"4834:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":9145,"name":"Literal","src":"4843:4:10"}],"id":9146,"name":"BinaryOperation","src":"4834:13:10"}],"id":9147,"name":"TupleExpression","src":"4833:15:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9148,"name":"Literal","src":"4851:1:10"}],"id":9149,"name":"BinaryOperation","src":"4833:19:10"}],"id":9150,"name":"FunctionCall","src":"4827:26:10"}],"id":9151,"name":"VariableDeclarationStatement","src":"4808:45:10"},{"attributes":{"assignments":[9153]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":9241,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9152,"name":"ElementaryTypeName","src":"4863:5:10"}],"id":9153,"name":"VariableDeclaration","src":"4863:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9154,"name":"ElementaryTypeNameExpression","src":"4885:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9155,"name":"ElementaryTypeNameExpression","src":"4891:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9156,"name":"Literal","src":"4897:1:10"}],"id":9157,"name":"FunctionCall","src":"4891:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9158,"name":"ElementaryTypeNameExpression","src":"4904:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":9159,"name":"Literal","src":"4910:1:10"}],"id":9160,"name":"FunctionCall","src":"4904:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9161,"name":"ElementaryTypeNameExpression","src":"4915:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint16","value":"rrtype"},"id":9162,"name":"Identifier","src":"4921:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":9163,"name":"Literal","src":"4930:3:10"}],"id":9164,"name":"BinaryOperation","src":"4921:12:10"}],"id":9165,"name":"FunctionCall","src":"4915:19:10"}],"id":9166,"name":"BinaryOperation","src":"4904:30:10"}],"id":9167,"name":"TupleExpression","src":"4903:32:10"}],"id":9168,"name":"BinaryOperation","src":"4891:44:10"}],"id":9169,"name":"FunctionCall","src":"4885:51:10"}],"id":9170,"name":"VariableDeclarationStatement","src":"4863:73:10"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[9172]},"children":[{"attributes":{"constant":false,"name":"off","scope":9238,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9171,"name":"ElementaryTypeName","src":"4951:4:10"}],"id":9172,"name":"VariableDeclaration","src":"4951:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9126,"type":"uint256","value":"offset"},"id":9173,"name":"Identifier","src":"4962:6:10"}],"id":9174,"name":"VariableDeclarationStatement","src":"4951:17:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9175,"name":"Identifier","src":"4970:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9124,"type":"bytes memory","value":"self"},"id":9176,"name":"Identifier","src":"4976:4:10"}],"id":9177,"name":"MemberAccess","src":"4976:11:10"}],"id":9178,"name":"BinaryOperation","src":"4970:17:10"},{"children":[{"attributes":{"assignments":[9180]},"children":[{"attributes":{"constant":false,"name":"window","scope":9237,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9179,"name":"ElementaryTypeName","src":"5004:5:10"}],"id":9180,"name":"VariableDeclaration","src":"5004:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9124,"type":"bytes memory","value":"self"},"id":9181,"name":"Identifier","src":"5019:4:10"}],"id":9182,"name":"MemberAccess","src":"5019:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9183,"name":"Identifier","src":"5034:3:10"}],"id":9184,"name":"FunctionCall","src":"5019:19:10"}],"id":9185,"name":"VariableDeclarationStatement","src":"5004:34:10"},{"attributes":{"assignments":[9187]},"children":[{"attributes":{"constant":false,"name":"len","scope":9237,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9186,"name":"ElementaryTypeName","src":"5052:5:10"}],"id":9187,"name":"VariableDeclaration","src":"5052:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9124,"type":"bytes memory","value":"self"},"id":9188,"name":"Identifier","src":"5064:4:10"}],"id":9189,"name":"MemberAccess","src":"5064:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9190,"name":"Identifier","src":"5079:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9191,"name":"Literal","src":"5085:1:10"}],"id":9192,"name":"BinaryOperation","src":"5079:7:10"}],"id":9193,"name":"FunctionCall","src":"5064:23:10"}],"id":9194,"name":"VariableDeclarationStatement","src":"5052:35:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"uint8","value":"typeWindow"},"id":9195,"name":"Identifier","src":"5105:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9180,"type":"uint8","value":"window"},"id":9196,"name":"Identifier","src":"5118:6:10"}],"id":9197,"name":"BinaryOperation","src":"5105:19:10"},{"children":[{"attributes":{"functionReturnParameters":9132},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9198,"name":"Literal","src":"5213:5:10"}],"id":9199,"name":"Return","src":"5206:12:10"}],"id":9200,"name":"Block","src":"5126:107:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"uint8","value":"typeWindow"},"id":9201,"name":"Identifier","src":"5243:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9180,"type":"uint8","value":"window"},"id":9202,"name":"Identifier","src":"5257:6:10"}],"id":9203,"name":"BinaryOperation","src":"5243:20:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9187,"type":"uint8","value":"len"},"id":9204,"name":"Identifier","src":"5329:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9205,"name":"Literal","src":"5335:1:10"}],"id":9206,"name":"BinaryOperation","src":"5329:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint8","value":"windowByte"},"id":9207,"name":"Identifier","src":"5340:10:10"}],"id":9208,"name":"BinaryOperation","src":"5329:21:10"},{"children":[{"attributes":{"functionReturnParameters":9132},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9209,"name":"Literal","src":"5443:5:10"}],"id":9210,"name":"Return","src":"5436:12:10"}],"id":9211,"name":"Block","src":"5352:115:10"}],"id":9212,"name":"IfStatement","src":"5325:142:10"},{"attributes":{"functionReturnParameters":9132},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9124,"type":"bytes memory","value":"self"},"id":9213,"name":"Identifier","src":"5492:4:10"}],"id":9214,"name":"MemberAccess","src":"5492:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9215,"name":"Identifier","src":"5507:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint8","value":"windowByte"},"id":9216,"name":"Identifier","src":"5513:10:10"}],"id":9217,"name":"BinaryOperation","src":"5507:16:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9218,"name":"Literal","src":"5526:1:10"}],"id":9219,"name":"BinaryOperation","src":"5507:20:10"}],"id":9220,"name":"FunctionCall","src":"5492:36:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9153,"type":"uint8","value":"windowBitmask"},"id":9221,"name":"Identifier","src":"5531:13:10"}],"id":9222,"name":"BinaryOperation","src":"5492:52:10"}],"id":9223,"name":"TupleExpression","src":"5491:54:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9224,"name":"Literal","src":"5549:1:10"}],"id":9225,"name":"BinaryOperation","src":"5491:59:10"}],"id":9226,"name":"Return","src":"5484:66:10"}],"id":9227,"name":"Block","src":"5265:300:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9172,"type":"uint256","value":"off"},"id":9228,"name":"Identifier","src":"5630:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9187,"type":"uint8","value":"len"},"id":9229,"name":"Identifier","src":"5637:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9230,"name":"Literal","src":"5643:1:10"}],"id":9231,"name":"BinaryOperation","src":"5637:7:10"}],"id":9232,"name":"Assignment","src":"5630:14:10"}],"id":9233,"name":"ExpressionStatement","src":"5630:14:10"}],"id":9234,"name":"Block","src":"5571:88:10"}],"id":9235,"name":"IfStatement","src":"5239:420:10"}],"id":9236,"name":"IfStatement","src":"5101:558:10"}],"id":9237,"name":"Block","src":"4990:679:10"}],"id":9238,"name":"ForStatement","src":"4946:723:10"},{"attributes":{"functionReturnParameters":9132},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9239,"name":"Literal","src":"5686:5:10"}],"id":9240,"name":"Return","src":"5679:12:10"}],"id":9241,"name":"Block","src":"4751:947:10"}],"id":9242,"name":"FunctionDefinition","src":"4650:1048:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9397,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9243,"name":"ElementaryTypeName","src":"5726:5:10"}],"id":9244,"name":"VariableDeclaration","src":"5726:17:10"},{"attributes":{"constant":false,"name":"other","scope":9397,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9245,"name":"ElementaryTypeName","src":"5745:5:10"}],"id":9246,"name":"VariableDeclaration","src":"5745:18:10"}],"id":9247,"name":"ParameterList","src":"5725:39:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9397,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9248,"name":"ElementaryTypeName","src":"5788:3:10"}],"id":9249,"name":"VariableDeclaration","src":"5788:3:10"}],"id":9250,"name":"ParameterList","src":"5787:5:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9708,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9251,"name":"Identifier","src":"5807:4:10"}],"id":9252,"name":"MemberAccess","src":"5807:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9253,"name":"Identifier","src":"5819:5:10"}],"id":9254,"name":"FunctionCall","src":"5807:18:10"},{"children":[{"attributes":{"functionReturnParameters":9250},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9255,"name":"Literal","src":"5848:1:10"}],"id":9256,"name":"Return","src":"5841:8:10"}],"id":9257,"name":"Block","src":"5827:33:10"}],"id":9258,"name":"IfStatement","src":"5803:57:10"},{"attributes":{"assignments":[9260],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9259,"name":"ElementaryTypeName","src":"5870:4:10"}],"id":9260,"name":"VariableDeclaration","src":"5870:8:10"}],"id":9261,"name":"VariableDeclarationStatement","src":"5870:8:10"},{"attributes":{"assignments":[9263],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9262,"name":"ElementaryTypeName","src":"5888:4:10"}],"id":9263,"name":"VariableDeclaration","src":"5888:13:10"}],"id":9264,"name":"VariableDeclarationStatement","src":"5888:13:10"},{"attributes":{"assignments":[9266],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9265,"name":"ElementaryTypeName","src":"5911:4:10"}],"id":9266,"name":"VariableDeclaration","src":"5911:12:10"}],"id":9267,"name":"VariableDeclarationStatement","src":"5911:12:10"},{"attributes":{"assignments":[9269],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9268,"name":"ElementaryTypeName","src":"5933:4:10"}],"id":9269,"name":"VariableDeclaration","src":"5933:17:10"}],"id":9270,"name":"VariableDeclarationStatement","src":"5933:17:10"},{"attributes":{"assignments":[9272]},"children":[{"attributes":{"constant":false,"name":"counts","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9271,"name":"ElementaryTypeName","src":"5960:4:10"}],"id":9272,"name":"VariableDeclaration","src":"5960:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":8923,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9273,"name":"Identifier","src":"5974:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9274,"name":"Identifier","src":"5985:4:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9275,"name":"Literal","src":"5991:1:10"}],"id":9276,"name":"FunctionCall","src":"5974:19:10"}],"id":9277,"name":"VariableDeclarationStatement","src":"5960:33:10"},{"attributes":{"assignments":[9279]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":9396,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9278,"name":"ElementaryTypeName","src":"6003:4:10"}],"id":9279,"name":"VariableDeclaration","src":"6003:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":8923,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9280,"name":"Identifier","src":"6022:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9281,"name":"Identifier","src":"6033:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9282,"name":"Literal","src":"6040:1:10"}],"id":9283,"name":"FunctionCall","src":"6022:20:10"}],"id":9284,"name":"VariableDeclarationStatement","src":"6003:39:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9285,"name":"Identifier","src":"6153:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9279,"type":"uint256","value":"othercounts"},"id":9286,"name":"Identifier","src":"6162:11:10"}],"id":9287,"name":"BinaryOperation","src":"6153:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9266,"type":"uint256","value":"prevoff"},"id":9288,"name":"Identifier","src":"6189:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9289,"name":"Identifier","src":"6199:3:10"}],"id":9290,"name":"Assignment","src":"6189:13:10"}],"id":9291,"name":"ExpressionStatement","src":"6189:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9292,"name":"Identifier","src":"6216:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9416,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9293,"name":"Identifier","src":"6222:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9294,"name":"Identifier","src":"6231:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9295,"name":"Identifier","src":"6237:3:10"}],"id":9296,"name":"FunctionCall","src":"6222:19:10"}],"id":9297,"name":"Assignment","src":"6216:25:10"}],"id":9298,"name":"ExpressionStatement","src":"6216:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9299,"name":"Identifier","src":"6255:6:10"}],"id":9300,"name":"UnaryOperation","src":"6255:8:10"}],"id":9301,"name":"ExpressionStatement","src":"6255:8:10"}],"id":9302,"name":"Block","src":"6175:99:10"}],"id":9303,"name":"WhileStatement","src":"6146:128:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9279,"type":"uint256","value":"othercounts"},"id":9304,"name":"Identifier","src":"6291:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9305,"name":"Identifier","src":"6305:6:10"}],"id":9306,"name":"BinaryOperation","src":"6291:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9269,"type":"uint256","value":"otherprevoff"},"id":9307,"name":"Identifier","src":"6327:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9308,"name":"Identifier","src":"6342:8:10"}],"id":9309,"name":"Assignment","src":"6327:23:10"}],"id":9310,"name":"ExpressionStatement","src":"6327:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9311,"name":"Identifier","src":"6364:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9416,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9312,"name":"Identifier","src":"6375:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9313,"name":"Identifier","src":"6384:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9314,"name":"Identifier","src":"6391:8:10"}],"id":9315,"name":"FunctionCall","src":"6375:25:10"}],"id":9316,"name":"Assignment","src":"6364:36:10"}],"id":9317,"name":"ExpressionStatement","src":"6364:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9279,"type":"uint256","value":"othercounts"},"id":9318,"name":"Identifier","src":"6414:11:10"}],"id":9319,"name":"UnaryOperation","src":"6414:13:10"}],"id":9320,"name":"ExpressionStatement","src":"6414:13:10"}],"id":9321,"name":"Block","src":"6313:125:10"}],"id":9322,"name":"WhileStatement","src":"6284:154:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9323,"name":"Identifier","src":"6513:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9324,"name":"Literal","src":"6522:1:10"}],"id":9325,"name":"BinaryOperation","src":"6513:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9654,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9326,"name":"Identifier","src":"6528:4:10"}],"id":9327,"name":"MemberAccess","src":"6528:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9328,"name":"Identifier","src":"6540:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9329,"name":"Identifier","src":"6545:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9330,"name":"Identifier","src":"6552:8:10"}],"id":9331,"name":"FunctionCall","src":"6528:33:10"}],"id":9332,"name":"UnaryOperation","src":"6527:34:10"}],"id":9333,"name":"BinaryOperation","src":"6513:48:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9266,"type":"uint256","value":"prevoff"},"id":9334,"name":"Identifier","src":"6577:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9335,"name":"Identifier","src":"6587:3:10"}],"id":9336,"name":"Assignment","src":"6577:13:10"}],"id":9337,"name":"ExpressionStatement","src":"6577:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9338,"name":"Identifier","src":"6604:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9416,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9339,"name":"Identifier","src":"6610:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9340,"name":"Identifier","src":"6619:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9341,"name":"Identifier","src":"6625:3:10"}],"id":9342,"name":"FunctionCall","src":"6610:19:10"}],"id":9343,"name":"Assignment","src":"6604:25:10"}],"id":9344,"name":"ExpressionStatement","src":"6604:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9269,"type":"uint256","value":"otherprevoff"},"id":9345,"name":"Identifier","src":"6643:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9346,"name":"Identifier","src":"6658:8:10"}],"id":9347,"name":"Assignment","src":"6643:23:10"}],"id":9348,"name":"ExpressionStatement","src":"6643:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9349,"name":"Identifier","src":"6680:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9416,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9350,"name":"Identifier","src":"6691:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9351,"name":"Identifier","src":"6700:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9352,"name":"Identifier","src":"6707:8:10"}],"id":9353,"name":"FunctionCall","src":"6691:25:10"}],"id":9354,"name":"Assignment","src":"6680:36:10"}],"id":9355,"name":"ExpressionStatement","src":"6680:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9272,"type":"uint256","value":"counts"},"id":9356,"name":"Identifier","src":"6730:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9357,"name":"Literal","src":"6740:1:10"}],"id":9358,"name":"Assignment","src":"6730:11:10"}],"id":9359,"name":"ExpressionStatement","src":"6730:11:10"}],"id":9360,"name":"Block","src":"6563:189:10"}],"id":9361,"name":"WhileStatement","src":"6506:246:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"uint256","value":"off"},"id":9362,"name":"Identifier","src":"6766:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9363,"name":"Literal","src":"6773:1:10"}],"id":9364,"name":"BinaryOperation","src":"6766:8:10"},{"children":[{"attributes":{"functionReturnParameters":9250},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9365,"name":"Literal","src":"6798:1:10"}],"id":9366,"name":"UnaryOperation","src":"6797:2:10"}],"id":9367,"name":"Return","src":"6790:9:10"}],"id":9368,"name":"Block","src":"6776:34:10"}],"id":9369,"name":"IfStatement","src":"6762:48:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9263,"type":"uint256","value":"otheroff"},"id":9370,"name":"Identifier","src":"6822:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9371,"name":"Literal","src":"6834:1:10"}],"id":9372,"name":"BinaryOperation","src":"6822:13:10"},{"children":[{"attributes":{"functionReturnParameters":9250},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9373,"name":"Literal","src":"6858:1:10"}],"id":9374,"name":"Return","src":"6851:8:10"}],"id":9375,"name":"Block","src":"6837:33:10"}],"id":9376,"name":"IfStatement","src":"6819:51:10"},{"attributes":{"functionReturnParameters":9250},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":9594,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9377,"name":"Identifier","src":"6887:4:10"}],"id":9378,"name":"MemberAccess","src":"6887:12:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9266,"type":"uint256","value":"prevoff"},"id":9379,"name":"Identifier","src":"6900:7:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9380,"name":"Literal","src":"6910:1:10"}],"id":9381,"name":"BinaryOperation","src":"6900:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9244,"type":"bytes memory","value":"self"},"id":9382,"name":"Identifier","src":"6913:4:10"}],"id":9383,"name":"MemberAccess","src":"6913:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9266,"type":"uint256","value":"prevoff"},"id":9384,"name":"Identifier","src":"6928:7:10"}],"id":9385,"name":"FunctionCall","src":"6913:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9386,"name":"Identifier","src":"6938:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9269,"type":"uint256","value":"otherprevoff"},"id":9387,"name":"Identifier","src":"6945:12:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9388,"name":"Literal","src":"6960:1:10"}],"id":9389,"name":"BinaryOperation","src":"6945:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9246,"type":"bytes memory","value":"other"},"id":9390,"name":"Identifier","src":"6963:5:10"}],"id":9391,"name":"MemberAccess","src":"6963:15:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9269,"type":"uint256","value":"otherprevoff"},"id":9392,"name":"Identifier","src":"6979:12:10"}],"id":9393,"name":"FunctionCall","src":"6963:29:10"}],"id":9394,"name":"FunctionCall","src":"6887:106:10"}],"id":9395,"name":"Return","src":"6880:113:10"}],"id":9396,"name":"Block","src":"5793:1207:10"}],"id":9397,"name":"FunctionDefinition","src":"5704:1296:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":9417,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":9416,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9398,"name":"ElementaryTypeName","src":"7024:5:10"}],"id":9399,"name":"VariableDeclaration","src":"7024:17:10"},{"attributes":{"constant":false,"name":"off","scope":9416,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9400,"name":"ElementaryTypeName","src":"7043:4:10"}],"id":9401,"name":"VariableDeclaration","src":"7043:8:10"}],"id":9402,"name":"ParameterList","src":"7023:29:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9416,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9403,"name":"ElementaryTypeName","src":"7075:4:10"}],"id":9404,"name":"VariableDeclaration","src":"7075:4:10"}],"id":9405,"name":"ParameterList","src":"7074:6:10"},{"children":[{"attributes":{"functionReturnParameters":9405},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9401,"type":"uint256","value":"off"},"id":9406,"name":"Identifier","src":"7098:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9407,"name":"Literal","src":"7104:1:10"}],"id":9408,"name":"BinaryOperation","src":"7098:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9724,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9399,"type":"bytes memory","value":"body"},"id":9409,"name":"Identifier","src":"7108:4:10"}],"id":9410,"name":"MemberAccess","src":"7108:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9401,"type":"uint256","value":"off"},"id":9411,"name":"Identifier","src":"7123:3:10"}],"id":9412,"name":"FunctionCall","src":"7108:19:10"}],"id":9413,"name":"BinaryOperation","src":"7098:29:10"}],"id":9414,"name":"Return","src":"7091:36:10"}],"id":9415,"name":"Block","src":"7081:53:10"}],"id":9416,"name":"FunctionDefinition","src":"7006:128:10"}],"id":9417,"name":"ContractDefinition","src":"150:6986:10"}],"id":9418,"name":"SourceUnit","src":"0:7137:10"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[8799]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":8732,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[8799],"name":"ResolverBase","scope":8800},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":8799,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8733,"name":"ElementaryTypeName","src":"53:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":8734,"name":"Literal","src":"97:10:11"}],"id":8735,"name":"VariableDeclaration","src":"53:54:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":8799,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":8747,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8736,"name":"ElementaryTypeName","src":"141:6:11"}],"id":8737,"name":"VariableDeclaration","src":"141:18:11"}],"id":8738,"name":"ParameterList","src":"140:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":8747,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8739,"name":"ElementaryTypeName","src":"181:4:11"}],"id":8740,"name":"VariableDeclaration","src":"181:4:11"}],"id":8741,"name":"ParameterList","src":"180:6:11"},{"children":[{"attributes":{"functionReturnParameters":8741},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8737,"type":"bytes4","value":"interfaceID"},"id":8742,"name":"Identifier","src":"204:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8735,"type":"bytes4","value":"INTERFACE_META_ID"},"id":8743,"name":"Identifier","src":"219:17:11"}],"id":8744,"name":"BinaryOperation","src":"204:32:11"}],"id":8745,"name":"Return","src":"197:39:11"}],"id":8746,"name":"Block","src":"187:56:11"}],"id":8747,"name":"FunctionDefinition","src":"114:129:11"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":8799,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":8754,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8748,"name":"ElementaryTypeName","src":"271:7:11"}],"id":8749,"name":"VariableDeclaration","src":"271:12:11"}],"id":8750,"name":"ParameterList","src":"270:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":8754,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8751,"name":"ElementaryTypeName","src":"307:4:11"}],"id":8752,"name":"VariableDeclaration","src":"307:4:11"}],"id":8753,"name":"ParameterList","src":"306:6:11"}],"id":8754,"name":"FunctionDefinition","src":"249:64:11"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":8766,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8755,"name":"ElementaryTypeName","src":"339:7:11"}],"id":8756,"name":"VariableDeclaration","src":"339:12:11"}],"id":8757,"name":"ParameterList","src":"338:14:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":8758,"name":"Identifier","src":"363:7:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8754,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":8759,"name":"Identifier","src":"371:12:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8756,"type":"bytes32","value":"node"},"id":8760,"name":"Identifier","src":"384:4:11"}],"id":8761,"name":"FunctionCall","src":"371:18:11"}],"id":8762,"name":"FunctionCall","src":"363:27:11"}],"id":8763,"name":"ExpressionStatement","src":"363:27:11"},{"id":8764,"name":"PlaceholderStatement","src":"400:1:11"}],"id":8765,"name":"Block","src":"353:55:11"}],"id":8766,"name":"ModifierDefinition","src":"319:89:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":8799,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":8782,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8767,"name":"ElementaryTypeName","src":"438:5:11"}],"id":8768,"name":"VariableDeclaration","src":"438:14:11"}],"id":8769,"name":"ParameterList","src":"437:16:11"},{"children":[{"attributes":{"constant":false,"name":"a","scope":8782,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":8770,"name":"ElementaryTypeName","src":"476:15:11"}],"id":8771,"name":"VariableDeclaration","src":"476:17:11"}],"id":8772,"name":"ParameterList","src":"475:19:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":8773,"name":"Identifier","src":"505:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"bytes memory","value":"b"},"id":8774,"name":"Identifier","src":"513:1:11"}],"id":8775,"name":"MemberAccess","src":"513:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8776,"name":"Literal","src":"525:2:11"}],"id":8777,"name":"BinaryOperation","src":"513:14:11"}],"id":8778,"name":"FunctionCall","src":"505:23:11"}],"id":8779,"name":"ExpressionStatement","src":"505:23:11"},{"attributes":{"externalReferences":[{"a":{"declaration":8771,"isOffset":false,"isSlot":false,"src":"561:1:11","valueSize":1}},{"b":{"declaration":8768,"isOffset":false,"isSlot":false,"src":"580:1:11","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":8780,"name":"InlineAssembly","src":"538:74:11"}],"id":8781,"name":"Block","src":"495:123:11"}],"id":8782,"name":"FunctionDefinition","src":"414:204:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":8799,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":8798,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8783,"name":"ElementaryTypeName","src":"648:7:11"}],"id":8784,"name":"VariableDeclaration","src":"648:9:11"}],"id":8785,"name":"ParameterList","src":"647:11:11"},{"children":[{"attributes":{"constant":false,"name":"b","scope":8798,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8786,"name":"ElementaryTypeName","src":"681:5:11"}],"id":8787,"name":"VariableDeclaration","src":"681:14:11"}],"id":8788,"name":"ParameterList","src":"680:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8787,"type":"bytes memory","value":"b"},"id":8789,"name":"Identifier","src":"707:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8790,"name":"ElementaryTypeName","src":"715:5:11"}],"id":8791,"name":"NewExpression","src":"711:9:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8792,"name":"Literal","src":"721:2:11"}],"id":8793,"name":"FunctionCall","src":"711:13:11"}],"id":8794,"name":"Assignment","src":"707:17:11"}],"id":8795,"name":"ExpressionStatement","src":"707:17:11"},{"attributes":{"externalReferences":[{"b":{"declaration":8787,"isOffset":false,"isSlot":false,"src":"768:1:11","valueSize":1}},{"a":{"declaration":8784,"isOffset":false,"isSlot":false,"src":"780:1:11","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":8796,"name":"InlineAssembly","src":"734:73:11"}],"id":8797,"name":"Block","src":"697:116:11"}],"id":8798,"name":"FunctionDefinition","src":"624:189:11"}],"id":8799,"name":"ContractDefinition","src":"25:790:11"}],"id":8800,"name":"SourceUnit","src":"0:816:11"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[5762]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5628,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5763,"symbolAliases":[null],"unitAlias":""},"id":5629,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5762,8799],"name":"ABIResolver","scope":5763},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":5630,"name":"UserDefinedTypeName","src":"80:12:12"}],"id":5631,"name":"InheritanceSpecifier","src":"80:12:12"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":5762,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5632,"name":"ElementaryTypeName","src":"99:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":5633,"name":"Literal","src":"142:10:12"}],"id":5634,"name":"VariableDeclaration","src":"99:53:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5640,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5635,"name":"ElementaryTypeName","src":"176:7:12"}],"id":5636,"name":"VariableDeclaration","src":"176:20:12"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":5640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5637,"name":"ElementaryTypeName","src":"198:7:12"}],"id":5638,"name":"VariableDeclaration","src":"198:27:12"}],"id":5639,"name":"ParameterList","src":"175:51:12"}],"id":5640,"name":"EventDefinition","src":"159:68:12"},{"attributes":{"constant":false,"name":"abis","scope":5762,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5641,"name":"ElementaryTypeName","src":"241:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5642,"name":"ElementaryTypeName","src":"258:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5643,"name":"ElementaryTypeName","src":"267:5:12"}],"id":5644,"name":"Mapping","src":"250:23:12"}],"id":5645,"name":"Mapping","src":"233:41:12"}],"id":5646,"name":"VariableDeclaration","src":"233:46:12"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":5762,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5684,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5647,"name":"ElementaryTypeName","src":"598:7:12"}],"id":5648,"name":"VariableDeclaration","src":"598:12:12"},{"attributes":{"constant":false,"name":"contentType","scope":5684,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5649,"name":"ElementaryTypeName","src":"612:7:12"}],"id":5650,"name":"VariableDeclaration","src":"612:19:12"},{"attributes":{"constant":false,"name":"data","scope":5684,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5651,"name":"ElementaryTypeName","src":"633:5:12"}],"id":5652,"name":"VariableDeclaration","src":"633:19:12"}],"id":5653,"name":"ParameterList","src":"597:56:12"},{"attributes":{"parameters":[null]},"children":[],"id":5657,"name":"ParameterList","src":"680:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":5654,"name":"Identifier","src":"663:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5648,"type":"bytes32","value":"node"},"id":5655,"name":"Identifier","src":"674:4:12"}],"id":5656,"name":"ModifierInvocation","src":"663:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10156,"type":"function (bool) pure","value":"require"},"id":5658,"name":"Identifier","src":"735:7:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5650,"type":"uint256","value":"contentType"},"id":5659,"name":"Identifier","src":"745:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5660,"name":"Literal","src":"759:1:12"}],"id":5661,"name":"BinaryOperation","src":"745:15:12"}],"id":5662,"name":"TupleExpression","src":"744:17:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5650,"type":"uint256","value":"contentType"},"id":5663,"name":"Identifier","src":"764:11:12"}],"id":5664,"name":"BinaryOperation","src":"744:31:12"}],"id":5665,"name":"TupleExpression","src":"743:33:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5666,"name":"Literal","src":"780:1:12"}],"id":5667,"name":"BinaryOperation","src":"743:38:12"}],"id":5668,"name":"FunctionCall","src":"735:47:12"}],"id":5669,"name":"ExpressionStatement","src":"735:47:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5646,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":5670,"name":"Identifier","src":"793:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5648,"type":"bytes32","value":"node"},"id":5671,"name":"Identifier","src":"798:4:12"}],"id":5673,"name":"IndexAccess","src":"793:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5650,"type":"uint256","value":"contentType"},"id":5672,"name":"Identifier","src":"804:11:12"}],"id":5674,"name":"IndexAccess","src":"793:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5652,"type":"bytes calldata","value":"data"},"id":5675,"name":"Identifier","src":"819:4:12"}],"id":5676,"name":"Assignment","src":"793:30:12"}],"id":5677,"name":"ExpressionStatement","src":"793:30:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5640,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":5678,"name":"Identifier","src":"838:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5648,"type":"bytes32","value":"node"},"id":5679,"name":"Identifier","src":"849:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5650,"type":"uint256","value":"contentType"},"id":5680,"name":"Identifier","src":"855:11:12"}],"id":5681,"name":"FunctionCall","src":"838:29:12"}],"id":5682,"name":"EmitStatement","src":"833:34:12"}],"id":5683,"name":"Block","src":"680:194:12"}],"id":5684,"name":"FunctionDefinition","src":"582:292:12"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":5762,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5744,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5685,"name":"ElementaryTypeName","src":"1208:7:12"}],"id":5686,"name":"VariableDeclaration","src":"1208:12:12"},{"attributes":{"constant":false,"name":"contentTypes","scope":5744,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5687,"name":"ElementaryTypeName","src":"1222:7:12"}],"id":5688,"name":"VariableDeclaration","src":"1222:20:12"}],"id":5689,"name":"ParameterList","src":"1207:36:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5744,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5690,"name":"ElementaryTypeName","src":"1267:7:12"}],"id":5691,"name":"VariableDeclaration","src":"1267:7:12"},{"attributes":{"constant":false,"name":"","scope":5744,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5692,"name":"ElementaryTypeName","src":"1276:5:12"}],"id":5693,"name":"VariableDeclaration","src":"1276:12:12"}],"id":5694,"name":"ParameterList","src":"1266:23:12"},{"children":[{"attributes":{"assignments":[5698]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":5743,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5695,"name":"ElementaryTypeName","src":"1308:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5696,"name":"ElementaryTypeName","src":"1317:5:12"}],"id":5697,"name":"Mapping","src":"1300:23:12"}],"id":5698,"name":"VariableDeclaration","src":"1300:38:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5646,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":5699,"name":"Identifier","src":"1341:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5686,"type":"bytes32","value":"node"},"id":5700,"name":"Identifier","src":"1346:4:12"}],"id":5701,"name":"IndexAccess","src":"1341:10:12"}],"id":5702,"name":"VariableDeclarationStatement","src":"1300:51:12"},{"children":[{"attributes":{"assignments":[5704]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":5736,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5703,"name":"ElementaryTypeName","src":"1367:7:12"}],"id":5704,"name":"VariableDeclaration","src":"1367:19:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5705,"name":"Literal","src":"1389:1:12"}],"id":5706,"name":"VariableDeclarationStatement","src":"1367:23:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5707,"name":"Identifier","src":"1392:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5688,"type":"uint256","value":"contentTypes"},"id":5708,"name":"Identifier","src":"1407:12:12"}],"id":5709,"name":"BinaryOperation","src":"1392:27:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5710,"name":"Identifier","src":"1421:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5711,"name":"Literal","src":"1437:1:12"}],"id":5712,"name":"Assignment","src":"1421:17:12"}],"id":5713,"name":"ExpressionStatement","src":"1421:17:12"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5714,"name":"Identifier","src":"1459:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5688,"type":"uint256","value":"contentTypes"},"id":5715,"name":"Identifier","src":"1473:12:12"}],"id":5716,"name":"BinaryOperation","src":"1459:26:12"}],"id":5717,"name":"TupleExpression","src":"1458:28:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5718,"name":"Literal","src":"1490:1:12"}],"id":5719,"name":"BinaryOperation","src":"1458:33:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5698,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":5720,"name":"Identifier","src":"1495:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5721,"name":"Identifier","src":"1502:11:12"}],"id":5722,"name":"IndexAccess","src":"1495:19:12"}],"id":5723,"name":"MemberAccess","src":"1495:26:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5724,"name":"Literal","src":"1524:1:12"}],"id":5725,"name":"BinaryOperation","src":"1495:30:12"}],"id":5726,"name":"BinaryOperation","src":"1458:67:12"},{"children":[{"attributes":{"functionReturnParameters":5694},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5727,"name":"Identifier","src":"1553:11:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5698,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":5728,"name":"Identifier","src":"1566:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5704,"type":"uint256","value":"contentType"},"id":5729,"name":"Identifier","src":"1573:11:12"}],"id":5730,"name":"IndexAccess","src":"1566:19:12"}],"id":5731,"name":"TupleExpression","src":"1552:34:12"}],"id":5732,"name":"Return","src":"1545:41:12"}],"id":5733,"name":"Block","src":"1527:74:12"}],"id":5734,"name":"IfStatement","src":"1454:147:12"}],"id":5735,"name":"Block","src":"1440:171:12"}],"id":5736,"name":"ForStatement","src":"1362:249:12"},{"attributes":{"functionReturnParameters":5694},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5737,"name":"Literal","src":"1629:1:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5738,"name":"ElementaryTypeNameExpression","src":"1632:5:12"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":5739,"name":"Literal","src":"1638:2:12"}],"id":5740,"name":"FunctionCall","src":"1632:9:12"}],"id":5741,"name":"TupleExpression","src":"1628:14:12"}],"id":5742,"name":"Return","src":"1621:21:12"}],"id":5743,"name":"Block","src":"1290:359:12"}],"id":5744,"name":"FunctionDefinition","src":"1195:454:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5762,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5761,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5745,"name":"ElementaryTypeName","src":"1682:6:12"}],"id":5746,"name":"VariableDeclaration","src":"1682:18:12"}],"id":5747,"name":"ParameterList","src":"1681:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5761,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5748,"name":"ElementaryTypeName","src":"1722:4:12"}],"id":5749,"name":"VariableDeclaration","src":"1722:4:12"}],"id":5750,"name":"ParameterList","src":"1721:6:12"},{"children":[{"attributes":{"functionReturnParameters":5750},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5746,"type":"bytes4","value":"interfaceID"},"id":5751,"name":"Identifier","src":"1745:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5634,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":5752,"name":"Identifier","src":"1760:16:12"}],"id":5753,"name":"BinaryOperation","src":"1745:31:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10194,"type":"contract super ABIResolver","value":"super"},"id":5754,"name":"Identifier","src":"1780:5:12"}],"id":5755,"name":"MemberAccess","src":"1780:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5746,"type":"bytes4","value":"interfaceID"},"id":5756,"name":"Identifier","src":"1804:11:12"}],"id":5757,"name":"FunctionCall","src":"1780:36:12"}],"id":5758,"name":"BinaryOperation","src":"1745:71:12"}],"id":5759,"name":"Return","src":"1738:78:12"}],"id":5760,"name":"Block","src":"1728:95:12"}],"id":5761,"name":"FunctionDefinition","src":"1655:168:12"}],"id":5762,"name":"ContractDefinition","src":"56:1769:12"}],"id":5763,"name":"SourceUnit","src":"0:1826:12"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[5921]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5764,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5922,"symbolAliases":[null],"unitAlias":""},"id":5765,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5921,8799],"name":"AddrResolver","scope":5922},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":5766,"name":"UserDefinedTypeName","src":"81:12:13"}],"id":5767,"name":"InheritanceSpecifier","src":"81:12:13"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":5921,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5768,"name":"ElementaryTypeName","src":"100:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":5769,"name":"Literal","src":"144:10:13"}],"id":5770,"name":"VariableDeclaration","src":"100:54:13"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":5921,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5771,"name":"ElementaryTypeName","src":"160:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":5772,"name":"Literal","src":"207:10:13"}],"id":5773,"name":"VariableDeclaration","src":"160:57:13"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":5921,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5774,"name":"ElementaryTypeName","src":"223:4:13"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":5775,"name":"Literal","src":"261:2:13"}],"id":5776,"name":"VariableDeclaration","src":"223:40:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5777,"name":"ElementaryTypeName","src":"288:7:13"}],"id":5778,"name":"VariableDeclaration","src":"288:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":5782,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5779,"name":"ElementaryTypeName","src":"310:7:13"}],"id":5780,"name":"VariableDeclaration","src":"310:9:13"}],"id":5781,"name":"ParameterList","src":"287:33:13"}],"id":5782,"name":"EventDefinition","src":"270:51:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5790,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5783,"name":"ElementaryTypeName","src":"347:7:13"}],"id":5784,"name":"VariableDeclaration","src":"347:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":5790,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5785,"name":"ElementaryTypeName","src":"369:4:13"}],"id":5786,"name":"VariableDeclaration","src":"369:13:13"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":5790,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5787,"name":"ElementaryTypeName","src":"384:5:13"}],"id":5788,"name":"VariableDeclaration","src":"384:16:13"}],"id":5789,"name":"ParameterList","src":"346:55:13"}],"id":5790,"name":"EventDefinition","src":"326:76:13"},{"attributes":{"constant":false,"name":"_addresses","scope":5921,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5791,"name":"ElementaryTypeName","src":"416:7:13"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5792,"name":"ElementaryTypeName","src":"433:4:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5793,"name":"ElementaryTypeName","src":"439:5:13"}],"id":5794,"name":"Mapping","src":"425:20:13"}],"id":5795,"name":"Mapping","src":"408:38:13"}],"id":5796,"name":"VariableDeclaration","src":"408:49:13"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":5921,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5815,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5797,"name":"ElementaryTypeName","src":"698:7:13"}],"id":5798,"name":"VariableDeclaration","src":"698:12:13"},{"attributes":{"constant":false,"name":"a","scope":5815,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5799,"name":"ElementaryTypeName","src":"712:7:13"}],"id":5800,"name":"VariableDeclaration","src":"712:9:13"}],"id":5801,"name":"ParameterList","src":"697:25:13"},{"attributes":{"parameters":[null]},"children":[],"id":5805,"name":"ParameterList","src":"749:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":5802,"name":"Identifier","src":"732:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5798,"type":"bytes32","value":"node"},"id":5803,"name":"Identifier","src":"743:4:13"}],"id":5804,"name":"ModifierInvocation","src":"732:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5883,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":5806,"name":"Identifier","src":"759:15:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5798,"type":"bytes32","value":"node"},"id":5807,"name":"Identifier","src":"775:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5808,"name":"Identifier","src":"781:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8798,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":5809,"name":"Identifier","src":"796:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5800,"type":"address","value":"a"},"id":5810,"name":"Identifier","src":"811:1:13"}],"id":5811,"name":"FunctionCall","src":"796:17:13"}],"id":5812,"name":"FunctionCall","src":"759:55:13"}],"id":5813,"name":"ExpressionStatement","src":"759:55:13"}],"id":5814,"name":"Block","src":"749:72:13"}],"id":5815,"name":"FunctionDefinition","src":"681:140:13"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5921,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5844,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5816,"name":"ElementaryTypeName","src":"994:7:13"}],"id":5817,"name":"VariableDeclaration","src":"994:12:13"}],"id":5818,"name":"ParameterList","src":"993:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5844,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5819,"name":"ElementaryTypeName","src":"1029:15:13"}],"id":5820,"name":"VariableDeclaration","src":"1029:15:13"}],"id":5821,"name":"ParameterList","src":"1028:17:13"},{"children":[{"attributes":{"assignments":[5823]},"children":[{"attributes":{"constant":false,"name":"a","scope":5843,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5822,"name":"ElementaryTypeName","src":"1056:5:13"}],"id":5823,"name":"VariableDeclaration","src":"1056:14:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[5844,5899],"referencedDeclaration":5899,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":5824,"name":"Identifier","src":"1073:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5817,"type":"bytes32","value":"node"},"id":5825,"name":"Identifier","src":"1078:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5826,"name":"Identifier","src":"1084:13:13"}],"id":5827,"name":"FunctionCall","src":"1073:25:13"}],"id":5828,"name":"VariableDeclarationStatement","src":"1056:42:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5823,"type":"bytes memory","value":"a"},"id":5829,"name":"Identifier","src":"1111:1:13"}],"id":5830,"name":"MemberAccess","src":"1111:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5831,"name":"Literal","src":"1123:1:13"}],"id":5832,"name":"BinaryOperation","src":"1111:13:13"},{"children":[{"attributes":{"functionReturnParameters":5821},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5833,"name":"ElementaryTypeNameExpression","src":"1147:7:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5834,"name":"Literal","src":"1155:1:13"}],"id":5835,"name":"FunctionCall","src":"1147:10:13"}],"id":5836,"name":"Return","src":"1140:17:13"}],"id":5837,"name":"Block","src":"1126:42:13"}],"id":5838,"name":"IfStatement","src":"1108:60:13"},{"attributes":{"functionReturnParameters":5821},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8782,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5839,"name":"Identifier","src":"1184:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5823,"type":"bytes memory","value":"a"},"id":5840,"name":"Identifier","src":"1199:1:13"}],"id":5841,"name":"FunctionCall","src":"1184:17:13"}],"id":5842,"name":"Return","src":"1177:24:13"}],"id":5843,"name":"Block","src":"1046:162:13"}],"id":5844,"name":"FunctionDefinition","src":"980:228:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":5921,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5845,"name":"ElementaryTypeName","src":"1239:7:13"}],"id":5846,"name":"VariableDeclaration","src":"1239:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5883,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5847,"name":"ElementaryTypeName","src":"1253:4:13"}],"id":5848,"name":"VariableDeclaration","src":"1253:13:13"},{"attributes":{"constant":false,"name":"a","scope":5883,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5849,"name":"ElementaryTypeName","src":"1268:5:13"}],"id":5850,"name":"VariableDeclaration","src":"1268:14:13"}],"id":5851,"name":"ParameterList","src":"1238:45:13"},{"attributes":{"parameters":[null]},"children":[],"id":5855,"name":"ParameterList","src":"1308:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":5852,"name":"Identifier","src":"1291:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"bytes32","value":"node"},"id":5853,"name":"Identifier","src":"1302:4:13"}],"id":5854,"name":"ModifierInvocation","src":"1291:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5790,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":5856,"name":"Identifier","src":"1323:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"bytes32","value":"node"},"id":5857,"name":"Identifier","src":"1338:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"coinType"},"id":5858,"name":"Identifier","src":"1344:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5850,"type":"bytes memory","value":"a"},"id":5859,"name":"Identifier","src":"1354:1:13"}],"id":5860,"name":"FunctionCall","src":"1323:33:13"}],"id":5861,"name":"EmitStatement","src":"1318:38:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"coinType"},"id":5862,"name":"Identifier","src":"1369:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5863,"name":"Identifier","src":"1381:13:13"}],"id":5864,"name":"BinaryOperation","src":"1369:25:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5782,"type":"function (bytes32,address)","value":"AddrChanged"},"id":5865,"name":"Identifier","src":"1415:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"bytes32","value":"node"},"id":5866,"name":"Identifier","src":"1427:4:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8782,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5867,"name":"Identifier","src":"1433:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5850,"type":"bytes memory","value":"a"},"id":5868,"name":"Identifier","src":"1448:1:13"}],"id":5869,"name":"FunctionCall","src":"1433:17:13"}],"id":5870,"name":"FunctionCall","src":"1415:36:13"}],"id":5871,"name":"EmitStatement","src":"1410:41:13"}],"id":5872,"name":"Block","src":"1396:66:13"}],"id":5873,"name":"IfStatement","src":"1366:96:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5796,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5874,"name":"Identifier","src":"1471:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"bytes32","value":"node"},"id":5875,"name":"Identifier","src":"1482:4:13"}],"id":5877,"name":"IndexAccess","src":"1471:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"coinType"},"id":5876,"name":"Identifier","src":"1488:8:13"}],"id":5878,"name":"IndexAccess","src":"1471:26:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5850,"type":"bytes memory","value":"a"},"id":5879,"name":"Identifier","src":"1500:1:13"}],"id":5880,"name":"Assignment","src":"1471:30:13"}],"id":5881,"name":"ExpressionStatement","src":"1471:30:13"}],"id":5882,"name":"Block","src":"1308:200:13"}],"id":5883,"name":"FunctionDefinition","src":"1214:294:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5921,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5899,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5884,"name":"ElementaryTypeName","src":"1528:7:13"}],"id":5885,"name":"VariableDeclaration","src":"1528:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5886,"name":"ElementaryTypeName","src":"1542:4:13"}],"id":5887,"name":"VariableDeclaration","src":"1542:13:13"}],"id":5888,"name":"ParameterList","src":"1527:29:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5899,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5889,"name":"ElementaryTypeName","src":"1577:5:13"}],"id":5890,"name":"VariableDeclaration","src":"1577:12:13"}],"id":5891,"name":"ParameterList","src":"1576:14:13"},{"children":[{"attributes":{"functionReturnParameters":5891},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5796,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5892,"name":"Identifier","src":"1608:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5885,"type":"bytes32","value":"node"},"id":5893,"name":"Identifier","src":"1619:4:13"}],"id":5894,"name":"IndexAccess","src":"1608:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5887,"type":"uint256","value":"coinType"},"id":5895,"name":"Identifier","src":"1625:8:13"}],"id":5896,"name":"IndexAccess","src":"1608:26:13"}],"id":5897,"name":"Return","src":"1601:33:13"}],"id":5898,"name":"Block","src":"1591:50:13"}],"id":5899,"name":"FunctionDefinition","src":"1514:127:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5921,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5920,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5900,"name":"ElementaryTypeName","src":"1674:6:13"}],"id":5901,"name":"VariableDeclaration","src":"1674:18:13"}],"id":5902,"name":"ParameterList","src":"1673:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5920,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5903,"name":"ElementaryTypeName","src":"1714:4:13"}],"id":5904,"name":"VariableDeclaration","src":"1714:4:13"}],"id":5905,"name":"ParameterList","src":"1713:6:13"},{"children":[{"attributes":{"functionReturnParameters":5905},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5901,"type":"bytes4","value":"interfaceID"},"id":5906,"name":"Identifier","src":"1737:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5770,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":5907,"name":"Identifier","src":"1752:17:13"}],"id":5908,"name":"BinaryOperation","src":"1737:32:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5901,"type":"bytes4","value":"interfaceID"},"id":5909,"name":"Identifier","src":"1773:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5773,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":5910,"name":"Identifier","src":"1788:20:13"}],"id":5911,"name":"BinaryOperation","src":"1773:35:13"}],"id":5912,"name":"BinaryOperation","src":"1737:71:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10196,"type":"contract super AddrResolver","value":"super"},"id":5913,"name":"Identifier","src":"1812:5:13"}],"id":5914,"name":"MemberAccess","src":"1812:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5901,"type":"bytes4","value":"interfaceID"},"id":5915,"name":"Identifier","src":"1836:11:13"}],"id":5916,"name":"FunctionCall","src":"1812:36:13"}],"id":5917,"name":"BinaryOperation","src":"1737:111:13"}],"id":5918,"name":"Return","src":"1730:118:13"}],"id":5919,"name":"Block","src":"1720:135:13"}],"id":5920,"name":"FunctionDefinition","src":"1647:208:13"}],"id":5921,"name":"ContractDefinition","src":"56:1801:13"}],"id":5922,"name":"SourceUnit","src":"0:1857:13"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[5991]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5923,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5992,"symbolAliases":[null],"unitAlias":""},"id":5924,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5991,8799],"name":"ContentHashResolver","scope":5992},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":5925,"name":"UserDefinedTypeName","src":"88:12:14"}],"id":5926,"name":"InheritanceSpecifier","src":"88:12:14"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":5991,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5927,"name":"ElementaryTypeName","src":"107:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":5928,"name":"Literal","src":"159:10:14"}],"id":5929,"name":"VariableDeclaration","src":"107:62:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5935,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5930,"name":"ElementaryTypeName","src":"201:7:14"}],"id":5931,"name":"VariableDeclaration","src":"201:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":5935,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5932,"name":"ElementaryTypeName","src":"223:5:14"}],"id":5933,"name":"VariableDeclaration","src":"223:10:14"}],"id":5934,"name":"ParameterList","src":"200:34:14"}],"id":5935,"name":"EventDefinition","src":"176:59:14"},{"attributes":{"constant":false,"name":"hashes","scope":5991,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5936,"name":"ElementaryTypeName","src":"249:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":5937,"name":"ElementaryTypeName","src":"258:5:14"}],"id":5938,"name":"Mapping","src":"241:23:14"}],"id":5939,"name":"VariableDeclaration","src":"241:30:14"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":5991,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5961,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5940,"name":"ElementaryTypeName","src":"529:7:14"}],"id":5941,"name":"VariableDeclaration","src":"529:12:14"},{"attributes":{"constant":false,"name":"hash","scope":5961,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5942,"name":"ElementaryTypeName","src":"543:5:14"}],"id":5943,"name":"VariableDeclaration","src":"543:19:14"}],"id":5944,"name":"ParameterList","src":"528:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":5948,"name":"ParameterList","src":"590:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":5945,"name":"Identifier","src":"573:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5941,"type":"bytes32","value":"node"},"id":5946,"name":"Identifier","src":"584:4:14"}],"id":5947,"name":"ModifierInvocation","src":"573:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5939,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5949,"name":"Identifier","src":"600:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5941,"type":"bytes32","value":"node"},"id":5950,"name":"Identifier","src":"607:4:14"}],"id":5951,"name":"IndexAccess","src":"600:12:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5943,"type":"bytes calldata","value":"hash"},"id":5952,"name":"Identifier","src":"615:4:14"}],"id":5953,"name":"Assignment","src":"600:19:14"}],"id":5954,"name":"ExpressionStatement","src":"600:19:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5935,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":5955,"name":"Identifier","src":"634:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5941,"type":"bytes32","value":"node"},"id":5956,"name":"Identifier","src":"653:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5943,"type":"bytes calldata","value":"hash"},"id":5957,"name":"Identifier","src":"659:4:14"}],"id":5958,"name":"FunctionCall","src":"634:30:14"}],"id":5959,"name":"EmitStatement","src":"629:35:14"}],"id":5960,"name":"Block","src":"590:81:14"}],"id":5961,"name":"FunctionDefinition","src":"505:166:14"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":5991,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5973,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5962,"name":"ElementaryTypeName","src":"859:7:14"}],"id":5963,"name":"VariableDeclaration","src":"859:12:14"}],"id":5964,"name":"ParameterList","src":"858:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5973,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5965,"name":"ElementaryTypeName","src":"896:5:14"}],"id":5966,"name":"VariableDeclaration","src":"896:12:14"}],"id":5967,"name":"ParameterList","src":"895:14:14"},{"children":[{"attributes":{"functionReturnParameters":5967},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5939,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5968,"name":"Identifier","src":"927:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5963,"type":"bytes32","value":"node"},"id":5969,"name":"Identifier","src":"934:4:14"}],"id":5970,"name":"IndexAccess","src":"927:12:14"}],"id":5971,"name":"Return","src":"920:19:14"}],"id":5972,"name":"Block","src":"910:36:14"}],"id":5973,"name":"FunctionDefinition","src":"838:108:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5991,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5990,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5974,"name":"ElementaryTypeName","src":"979:6:14"}],"id":5975,"name":"VariableDeclaration","src":"979:18:14"}],"id":5976,"name":"ParameterList","src":"978:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5990,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5977,"name":"ElementaryTypeName","src":"1019:4:14"}],"id":5978,"name":"VariableDeclaration","src":"1019:4:14"}],"id":5979,"name":"ParameterList","src":"1018:6:14"},{"children":[{"attributes":{"functionReturnParameters":5979},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5975,"type":"bytes4","value":"interfaceID"},"id":5980,"name":"Identifier","src":"1042:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5929,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":5981,"name":"Identifier","src":"1057:25:14"}],"id":5982,"name":"BinaryOperation","src":"1042:40:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10198,"type":"contract super ContentHashResolver","value":"super"},"id":5983,"name":"Identifier","src":"1086:5:14"}],"id":5984,"name":"MemberAccess","src":"1086:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5975,"type":"bytes4","value":"interfaceID"},"id":5985,"name":"Identifier","src":"1110:11:14"}],"id":5986,"name":"FunctionCall","src":"1086:36:14"}],"id":5987,"name":"BinaryOperation","src":"1042:80:14"}],"id":5988,"name":"Return","src":"1035:87:14"}],"id":5989,"name":"Block","src":"1025:104:14"}],"id":5990,"name":"FunctionDefinition","src":"952:177:14"}],"id":5991,"name":"ContractDefinition","src":"56:1075:14"}],"id":5992,"name":"SourceUnit","src":"0:1132:14"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[6482]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5993,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6483,"symbolAliases":[null],"unitAlias":""},"id":5994,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":9418,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":6483,"symbolAliases":[null],"unitAlias":""},"id":5995,"name":"ImportDirective","src":"55:24:15"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6482,8799],"name":"DNSResolver","scope":6483},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":5996,"name":"UserDefinedTypeName","src":"105:12:15"}],"id":5997,"name":"InheritanceSpecifier","src":"105:12:15"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":9417,"type":"library RRUtils"},"id":5998,"name":"UserDefinedTypeName","src":"130:7:15"}],"id":5999,"name":"UsingForDirective","src":"124:20:15"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10138,"type":"library ENSBytesUtils"},"id":6000,"name":"UserDefinedTypeName","src":"155:13:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6001,"name":"ElementaryTypeName","src":"173:5:15"}],"id":6002,"name":"UsingForDirective","src":"149:30:15"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":6482,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6003,"name":"ElementaryTypeName","src":"185:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":6004,"name":"Literal","src":"235:10:15"}],"id":6005,"name":"VariableDeclaration","src":"185:60:15"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":6482,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6006,"name":"ElementaryTypeName","src":"251:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":6007,"name":"Literal","src":"299:10:15"}],"id":6008,"name":"VariableDeclaration","src":"251:58:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6018,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6009,"name":"ElementaryTypeName","src":"430:7:15"}],"id":6010,"name":"VariableDeclaration","src":"430:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6018,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6011,"name":"ElementaryTypeName","src":"452:5:15"}],"id":6012,"name":"VariableDeclaration","src":"452:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":6018,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6013,"name":"ElementaryTypeName","src":"464:6:15"}],"id":6014,"name":"VariableDeclaration","src":"464:15:15"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":6018,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6015,"name":"ElementaryTypeName","src":"481:5:15"}],"id":6016,"name":"VariableDeclaration","src":"481:12:15"}],"id":6017,"name":"ParameterList","src":"429:65:15"}],"id":6018,"name":"EventDefinition","src":"407:88:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6026,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6019,"name":"ElementaryTypeName","src":"614:7:15"}],"id":6020,"name":"VariableDeclaration","src":"614:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6026,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6021,"name":"ElementaryTypeName","src":"636:5:15"}],"id":6022,"name":"VariableDeclaration","src":"636:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":6026,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6023,"name":"ElementaryTypeName","src":"648:6:15"}],"id":6024,"name":"VariableDeclaration","src":"648:15:15"}],"id":6025,"name":"ParameterList","src":"613:51:15"}],"id":6026,"name":"EventDefinition","src":"591:74:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6030,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6027,"name":"ElementaryTypeName","src":"777:7:15"}],"id":6028,"name":"VariableDeclaration","src":"777:20:15"}],"id":6029,"name":"ParameterList","src":"776:22:15"}],"id":6030,"name":"EventDefinition","src":"756:43:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6038,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6031,"name":"ElementaryTypeName","src":"913:7:15"}],"id":6032,"name":"VariableDeclaration","src":"913:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":6038,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6033,"name":"ElementaryTypeName","src":"935:5:15"}],"id":6034,"name":"VariableDeclaration","src":"935:18:15"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":6038,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6035,"name":"ElementaryTypeName","src":"955:5:15"}],"id":6036,"name":"VariableDeclaration","src":"955:14:15"}],"id":6037,"name":"ParameterList","src":"912:58:15"}],"id":6038,"name":"EventDefinition","src":"888:83:15"},{"attributes":{"constant":false,"name":"zonehashes","scope":6482,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6039,"name":"ElementaryTypeName","src":"1181:7:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6040,"name":"ElementaryTypeName","src":"1190:5:15"}],"id":6041,"name":"Mapping","src":"1173:23:15"}],"id":6042,"name":"VariableDeclaration","src":"1173:42:15"},{"attributes":{"constant":false,"name":"versions","scope":6482,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6043,"name":"ElementaryTypeName","src":"1433:7:15"},{"attributes":{"name":"uint256","type":"uint256"},"id":6044,"name":"ElementaryTypeName","src":"1442:7:15"}],"id":6045,"name":"Mapping","src":"1425:25:15"}],"id":6046,"name":"VariableDeclaration","src":"1425:42:15"},{"attributes":{"constant":false,"name":"records","scope":6482,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6047,"name":"ElementaryTypeName","src":"1589:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6048,"name":"ElementaryTypeName","src":"1606:7:15"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6049,"name":"ElementaryTypeName","src":"1623:7:15"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6050,"name":"ElementaryTypeName","src":"1640:6:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6051,"name":"ElementaryTypeName","src":"1648:5:15"}],"id":6052,"name":"Mapping","src":"1632:22:15"}],"id":6053,"name":"Mapping","src":"1615:40:15"}],"id":6054,"name":"Mapping","src":"1598:58:15"}],"id":6055,"name":"Mapping","src":"1581:76:15"}],"id":6056,"name":"VariableDeclaration","src":"1581:92:15"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":6482,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6057,"name":"ElementaryTypeName","src":"1853:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6058,"name":"ElementaryTypeName","src":"1870:7:15"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6059,"name":"ElementaryTypeName","src":"1887:7:15"},{"attributes":{"name":"uint16","type":"uint16"},"id":6060,"name":"ElementaryTypeName","src":"1896:6:15"}],"id":6061,"name":"Mapping","src":"1879:24:15"}],"id":6062,"name":"Mapping","src":"1862:42:15"}],"id":6063,"name":"Mapping","src":"1845:60:15"}],"id":6064,"name":"VariableDeclaration","src":"1845:85:15"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":6482,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6229,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6065,"name":"ElementaryTypeName","src":"2877:7:15"}],"id":6066,"name":"VariableDeclaration","src":"2877:12:15"},{"attributes":{"constant":false,"name":"data","scope":6229,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6067,"name":"ElementaryTypeName","src":"2891:5:15"}],"id":6068,"name":"VariableDeclaration","src":"2891:19:15"}],"id":6069,"name":"ParameterList","src":"2876:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6073,"name":"ParameterList","src":"2938:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6070,"name":"Identifier","src":"2921:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"bytes32","value":"node"},"id":6071,"name":"Identifier","src":"2932:4:15"}],"id":6072,"name":"ModifierInvocation","src":"2921:16:15"},{"children":[{"attributes":{"assignments":[6075]},"children":[{"attributes":{"constant":false,"name":"resource","scope":6228,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6074,"name":"ElementaryTypeName","src":"2948:6:15"}],"id":6075,"name":"VariableDeclaration","src":"2948:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6076,"name":"Literal","src":"2966:1:15"}],"id":6077,"name":"VariableDeclarationStatement","src":"2948:19:15"},{"attributes":{"assignments":[6079]},"children":[{"attributes":{"constant":false,"name":"offset","scope":6228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6078,"name":"ElementaryTypeName","src":"2977:7:15"}],"id":6079,"name":"VariableDeclaration","src":"2977:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6080,"name":"Literal","src":"2994:1:15"}],"id":6081,"name":"VariableDeclarationStatement","src":"2977:18:15"},{"attributes":{"assignments":[6083],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":6228,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6082,"name":"ElementaryTypeName","src":"3005:5:15"}],"id":6083,"name":"VariableDeclaration","src":"3005:17:15"}],"id":6084,"name":"VariableDeclarationStatement","src":"3005:17:15"},{"attributes":{"assignments":[6086],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":6228,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6085,"name":"ElementaryTypeName","src":"3032:5:15"}],"id":6086,"name":"VariableDeclaration","src":"3032:18:15"}],"id":6087,"name":"VariableDeclarationStatement","src":"3032:18:15"},{"attributes":{"assignments":[6089],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6228,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6088,"name":"ElementaryTypeName","src":"3060:7:15"}],"id":6089,"name":"VariableDeclaration","src":"3060:16:15"}],"id":6090,"name":"VariableDeclarationStatement","src":"3060:16:15"},{"children":[{"attributes":{"assignments":[6094]},"children":[{"attributes":{"constant":false,"name":"iter","scope":6205,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":8938,"type":"struct RRUtils.RRIterator"},"id":6093,"name":"UserDefinedTypeName","src":"3152:18:15"}],"id":6094,"name":"VariableDeclaration","src":"3152:30:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":8964,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"bytes calldata","value":"data"},"id":6095,"name":"Identifier","src":"3185:4:15"}],"id":6096,"name":"MemberAccess","src":"3185:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6097,"name":"Literal","src":"3201:1:15"}],"id":6098,"name":"FunctionCall","src":"3185:18:15"}],"id":6099,"name":"VariableDeclarationStatement","src":"3152:51:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":8979,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6100,"name":"Identifier","src":"3206:4:15"}],"id":6101,"name":"MemberAccess","src":"3206:9:15"}],"id":6102,"name":"FunctionCall","src":"3206:11:15"}],"id":6103,"name":"UnaryOperation","src":"3205:12:15"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":9081,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6104,"name":"Identifier","src":"3219:4:15"}],"id":6105,"name":"MemberAccess","src":"3219:9:15"}],"id":6106,"name":"FunctionCall","src":"3219:11:15"}],"id":6107,"name":"ExpressionStatement","src":"3219:11:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6108,"name":"Identifier","src":"3250:8:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6109,"name":"Literal","src":"3262:1:15"}],"id":6110,"name":"BinaryOperation","src":"3250:13:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6111,"name":"Identifier","src":"3283:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8929,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6112,"name":"Identifier","src":"3294:4:15"}],"id":6113,"name":"MemberAccess","src":"3294:12:15"}],"id":6114,"name":"Assignment","src":"3283:23:15"}],"id":6115,"name":"ExpressionStatement","src":"3283:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6116,"name":"Identifier","src":"3324:4:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9102,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6117,"name":"Identifier","src":"3331:4:15"}],"id":6118,"name":"MemberAccess","src":"3331:9:15"}],"id":6119,"name":"FunctionCall","src":"3331:11:15"}],"id":6120,"name":"Assignment","src":"3324:18:15"}],"id":6121,"name":"ExpressionStatement","src":"3324:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6089,"type":"bytes32","value":"nameHash"},"id":6122,"name":"Identifier","src":"3360:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6123,"name":"Identifier","src":"3371:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":6124,"name":"Identifier","src":"3381:3:15"}],"id":6125,"name":"MemberAccess","src":"3381:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6126,"name":"Identifier","src":"3398:4:15"}],"id":6127,"name":"FunctionCall","src":"3381:22:15"}],"id":6128,"name":"FunctionCall","src":"3371:33:15"}],"id":6129,"name":"Assignment","src":"3360:44:15"}],"id":6130,"name":"ExpressionStatement","src":"3360:44:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6086,"type":"bytes memory","value":"value"},"id":6131,"name":"Identifier","src":"3422:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6132,"name":"ElementaryTypeNameExpression","src":"3430:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9122,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6133,"name":"Identifier","src":"3436:4:15"}],"id":6134,"name":"MemberAccess","src":"3436:10:15"}],"id":6135,"name":"FunctionCall","src":"3436:12:15"}],"id":6136,"name":"FunctionCall","src":"3430:19:15"}],"id":6137,"name":"Assignment","src":"3422:27:15"}],"id":6138,"name":"ExpressionStatement","src":"3422:27:15"}],"id":6139,"name":"Block","src":"3265:199:15"},{"children":[{"attributes":{"assignments":[6141]},"children":[{"attributes":{"constant":false,"name":"newName","scope":6202,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6140,"name":"ElementaryTypeName","src":"3488:5:15"}],"id":6141,"name":"VariableDeclaration","src":"3488:20:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9102,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6142,"name":"Identifier","src":"3511:4:15"}],"id":6143,"name":"MemberAccess","src":"3511:9:15"}],"id":6144,"name":"FunctionCall","src":"3511:11:15"}],"id":6145,"name":"VariableDeclarationStatement","src":"3488:34:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6146,"name":"Identifier","src":"3544:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8929,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6147,"name":"Identifier","src":"3556:4:15"}],"id":6148,"name":"MemberAccess","src":"3556:12:15"}],"id":6149,"name":"BinaryOperation","src":"3544:24:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9708,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6150,"name":"Identifier","src":"3573:4:15"}],"id":6151,"name":"MemberAccess","src":"3573:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6141,"type":"bytes memory","value":"newName"},"id":6152,"name":"Identifier","src":"3585:7:15"}],"id":6153,"name":"FunctionCall","src":"3573:20:15"}],"id":6154,"name":"UnaryOperation","src":"3572:21:15"}],"id":6155,"name":"BinaryOperation","src":"3544:49:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6481,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6156,"name":"Identifier","src":"3617:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"bytes32","value":"node"},"id":6157,"name":"Identifier","src":"3629:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6158,"name":"Identifier","src":"3635:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6159,"name":"Identifier","src":"3641:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"bytes calldata","value":"data"},"id":6160,"name":"Identifier","src":"3651:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6161,"name":"Identifier","src":"3657:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6162,"name":"Identifier","src":"3665:4:15"}],"id":6163,"name":"MemberAccess","src":"3665:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6164,"name":"Identifier","src":"3679:6:15"}],"id":6165,"name":"BinaryOperation","src":"3665:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6086,"type":"bytes memory","value":"value"},"id":6166,"name":"Identifier","src":"3687:5:15"}],"id":6167,"name":"MemberAccess","src":"3687:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6168,"name":"Literal","src":"3703:1:15"}],"id":6169,"name":"BinaryOperation","src":"3687:17:15"}],"id":6170,"name":"FunctionCall","src":"3617:88:15"}],"id":6171,"name":"ExpressionStatement","src":"3617:88:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6172,"name":"Identifier","src":"3727:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8929,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6173,"name":"Identifier","src":"3738:4:15"}],"id":6174,"name":"MemberAccess","src":"3738:12:15"}],"id":6175,"name":"Assignment","src":"3727:23:15"}],"id":6176,"name":"ExpressionStatement","src":"3727:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6177,"name":"Identifier","src":"3772:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8927,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6178,"name":"Identifier","src":"3781:4:15"}],"id":6179,"name":"MemberAccess","src":"3781:11:15"}],"id":6180,"name":"Assignment","src":"3772:20:15"}],"id":6181,"name":"ExpressionStatement","src":"3772:20:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6182,"name":"Identifier","src":"3814:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6141,"type":"bytes memory","value":"newName"},"id":6183,"name":"Identifier","src":"3821:7:15"}],"id":6184,"name":"Assignment","src":"3814:14:15"}],"id":6185,"name":"ExpressionStatement","src":"3814:14:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6089,"type":"bytes32","value":"nameHash"},"id":6186,"name":"Identifier","src":"3850:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6187,"name":"Identifier","src":"3861:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6188,"name":"Identifier","src":"3871:4:15"}],"id":6189,"name":"FunctionCall","src":"3861:15:15"}],"id":6190,"name":"Assignment","src":"3850:26:15"}],"id":6191,"name":"ExpressionStatement","src":"3850:26:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6086,"type":"bytes memory","value":"value"},"id":6192,"name":"Identifier","src":"3898:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6193,"name":"ElementaryTypeNameExpression","src":"3906:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9122,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6194,"name":"Identifier","src":"3912:4:15"}],"id":6195,"name":"MemberAccess","src":"3912:10:15"}],"id":6196,"name":"FunctionCall","src":"3912:12:15"}],"id":6197,"name":"FunctionCall","src":"3906:19:15"}],"id":6198,"name":"Assignment","src":"3898:27:15"}],"id":6199,"name":"ExpressionStatement","src":"3898:27:15"}],"id":6200,"name":"Block","src":"3595:349:15"}],"id":6201,"name":"IfStatement","src":"3540:404:15"}],"id":6202,"name":"Block","src":"3470:488:15"}],"id":6203,"name":"IfStatement","src":"3246:712:15"}],"id":6204,"name":"Block","src":"3232:736:15"}],"id":6205,"name":"ForStatement","src":"3147:821:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6206,"name":"Identifier","src":"3981:4:15"}],"id":6207,"name":"MemberAccess","src":"3981:11:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6208,"name":"Literal","src":"3995:1:15"}],"id":6209,"name":"BinaryOperation","src":"3981:15:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6481,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6210,"name":"Identifier","src":"4012:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"bytes32","value":"node"},"id":6211,"name":"Identifier","src":"4024:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6083,"type":"bytes memory","value":"name"},"id":6212,"name":"Identifier","src":"4030:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint16","value":"resource"},"id":6213,"name":"Identifier","src":"4036:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"bytes calldata","value":"data"},"id":6214,"name":"Identifier","src":"4046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6215,"name":"Identifier","src":"4052:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"bytes calldata","value":"data"},"id":6216,"name":"Identifier","src":"4060:4:15"}],"id":6217,"name":"MemberAccess","src":"4060:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6079,"type":"uint256","value":"offset"},"id":6218,"name":"Identifier","src":"4074:6:15"}],"id":6219,"name":"BinaryOperation","src":"4060:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6086,"type":"bytes memory","value":"value"},"id":6220,"name":"Identifier","src":"4082:5:15"}],"id":6221,"name":"MemberAccess","src":"4082:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6222,"name":"Literal","src":"4098:1:15"}],"id":6223,"name":"BinaryOperation","src":"4082:17:15"}],"id":6224,"name":"FunctionCall","src":"4012:88:15"}],"id":6225,"name":"ExpressionStatement","src":"4012:88:15"}],"id":6226,"name":"Block","src":"3998:113:15"}],"id":6227,"name":"IfStatement","src":"3977:134:15"}],"id":6228,"name":"Block","src":"2938:1179:15"}],"id":6229,"name":"FunctionDefinition","src":"2854:1263:15"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":6482,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6253,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6230,"name":"ElementaryTypeName","src":"4538:7:15"}],"id":6231,"name":"VariableDeclaration","src":"4538:12:15"},{"attributes":{"constant":false,"name":"name","scope":6253,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6232,"name":"ElementaryTypeName","src":"4552:7:15"}],"id":6233,"name":"VariableDeclaration","src":"4552:12:15"},{"attributes":{"constant":false,"name":"resource","scope":6253,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6234,"name":"ElementaryTypeName","src":"4566:6:15"}],"id":6235,"name":"VariableDeclaration","src":"4566:15:15"}],"id":6236,"name":"ParameterList","src":"4537:45:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6253,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6237,"name":"ElementaryTypeName","src":"4604:5:15"}],"id":6238,"name":"VariableDeclaration","src":"4604:12:15"}],"id":6239,"name":"ParameterList","src":"4603:14:15"},{"children":[{"attributes":{"functionReturnParameters":6239},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6240,"name":"Identifier","src":"4635:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6231,"type":"bytes32","value":"node"},"id":6241,"name":"Identifier","src":"4643:4:15"}],"id":6242,"name":"IndexAccess","src":"4635:13:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6046,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6243,"name":"Identifier","src":"4649:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6231,"type":"bytes32","value":"node"},"id":6244,"name":"Identifier","src":"4658:4:15"}],"id":6245,"name":"IndexAccess","src":"4649:14:15"}],"id":6246,"name":"IndexAccess","src":"4635:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6233,"type":"bytes32","value":"name"},"id":6247,"name":"Identifier","src":"4665:4:15"}],"id":6248,"name":"IndexAccess","src":"4635:35:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint16","value":"resource"},"id":6249,"name":"Identifier","src":"4671:8:15"}],"id":6250,"name":"IndexAccess","src":"4635:45:15"}],"id":6251,"name":"Return","src":"4628:52:15"}],"id":6252,"name":"Block","src":"4618:69:15"}],"id":6253,"name":"FunctionDefinition","src":"4519:168:15"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":6482,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6276,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6254,"name":"ElementaryTypeName","src":"4924:7:15"}],"id":6255,"name":"VariableDeclaration","src":"4924:12:15"},{"attributes":{"constant":false,"name":"name","scope":6276,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6256,"name":"ElementaryTypeName","src":"4938:7:15"}],"id":6257,"name":"VariableDeclaration","src":"4938:12:15"}],"id":6258,"name":"ParameterList","src":"4923:28:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6276,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6259,"name":"ElementaryTypeName","src":"4973:4:15"}],"id":6260,"name":"VariableDeclaration","src":"4973:4:15"}],"id":6261,"name":"ParameterList","src":"4972:6:15"},{"children":[{"attributes":{"functionReturnParameters":6261},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6064,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6262,"name":"Identifier","src":"4997:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6255,"type":"bytes32","value":"node"},"id":6263,"name":"Identifier","src":"5014:4:15"}],"id":6264,"name":"IndexAccess","src":"4997:22:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6046,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6265,"name":"Identifier","src":"5020:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6255,"type":"bytes32","value":"node"},"id":6266,"name":"Identifier","src":"5029:4:15"}],"id":6267,"name":"IndexAccess","src":"5020:14:15"}],"id":6268,"name":"IndexAccess","src":"4997:38:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6257,"type":"bytes32","value":"name"},"id":6269,"name":"Identifier","src":"5036:4:15"}],"id":6270,"name":"IndexAccess","src":"4997:44:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6271,"name":"Literal","src":"5045:1:15"}],"id":6272,"name":"BinaryOperation","src":"4997:49:15"}],"id":6273,"name":"TupleExpression","src":"4996:51:15"}],"id":6274,"name":"Return","src":"4989:58:15"}],"id":6275,"name":"Block","src":"4979:75:15"}],"id":6276,"name":"FunctionDefinition","src":"4901:153:15"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":6482,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6294,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6277,"name":"ElementaryTypeName","src":"5215:7:15"}],"id":6278,"name":"VariableDeclaration","src":"5215:12:15"}],"id":6279,"name":"ParameterList","src":"5214:14:15"},{"attributes":{"parameters":[null]},"children":[],"id":6283,"name":"ParameterList","src":"5253:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6280,"name":"Identifier","src":"5236:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6278,"type":"bytes32","value":"node"},"id":6281,"name":"Identifier","src":"5247:4:15"}],"id":6282,"name":"ModifierInvocation","src":"5236:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6046,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6284,"name":"Identifier","src":"5263:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6278,"type":"bytes32","value":"node"},"id":6285,"name":"Identifier","src":"5272:4:15"}],"id":6286,"name":"IndexAccess","src":"5263:14:15"}],"id":6287,"name":"UnaryOperation","src":"5263:16:15"}],"id":6288,"name":"ExpressionStatement","src":"5263:16:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":6289,"name":"Identifier","src":"5294:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6278,"type":"bytes32","value":"node"},"id":6290,"name":"Identifier","src":"5309:4:15"}],"id":6291,"name":"FunctionCall","src":"5294:20:15"}],"id":6292,"name":"EmitStatement","src":"5289:25:15"}],"id":6293,"name":"Block","src":"5253:68:15"}],"id":6294,"name":"FunctionDefinition","src":"5193:128:15"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":6482,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6323,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6295,"name":"ElementaryTypeName","src":"5562:7:15"}],"id":6296,"name":"VariableDeclaration","src":"5562:12:15"},{"attributes":{"constant":false,"name":"hash","scope":6323,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6297,"name":"ElementaryTypeName","src":"5576:5:15"}],"id":6298,"name":"VariableDeclaration","src":"5576:19:15"}],"id":6299,"name":"ParameterList","src":"5561:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6303,"name":"ParameterList","src":"5623:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6300,"name":"Identifier","src":"5606:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"bytes32","value":"node"},"id":6301,"name":"Identifier","src":"5617:4:15"}],"id":6302,"name":"ModifierInvocation","src":"5606:16:15"},{"children":[{"attributes":{"assignments":[6305]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":6322,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6304,"name":"ElementaryTypeName","src":"5633:5:15"}],"id":6305,"name":"VariableDeclaration","src":"5633:20:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6306,"name":"Identifier","src":"5656:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"bytes32","value":"node"},"id":6307,"name":"Identifier","src":"5667:4:15"}],"id":6308,"name":"IndexAccess","src":"5656:16:15"}],"id":6309,"name":"VariableDeclarationStatement","src":"5633:39:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6310,"name":"Identifier","src":"5682:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"bytes32","value":"node"},"id":6311,"name":"Identifier","src":"5693:4:15"}],"id":6312,"name":"IndexAccess","src":"5682:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6298,"type":"bytes calldata","value":"hash"},"id":6313,"name":"Identifier","src":"5701:4:15"}],"id":6314,"name":"Assignment","src":"5682:23:15"}],"id":6315,"name":"ExpressionStatement","src":"5682:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6038,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":6316,"name":"Identifier","src":"5720:18:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6296,"type":"bytes32","value":"node"},"id":6317,"name":"Identifier","src":"5739:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6305,"type":"bytes memory","value":"oldhash"},"id":6318,"name":"Identifier","src":"5745:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6298,"type":"bytes calldata","value":"hash"},"id":6319,"name":"Identifier","src":"5754:4:15"}],"id":6320,"name":"FunctionCall","src":"5720:39:15"}],"id":6321,"name":"EmitStatement","src":"5715:44:15"}],"id":6322,"name":"Block","src":"5623:143:15"}],"id":6323,"name":"FunctionDefinition","src":"5541:225:15"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":6482,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6335,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6324,"name":"ElementaryTypeName","src":"5938:7:15"}],"id":6325,"name":"VariableDeclaration","src":"5938:12:15"}],"id":6326,"name":"ParameterList","src":"5937:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6335,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6327,"name":"ElementaryTypeName","src":"5975:5:15"}],"id":6328,"name":"VariableDeclaration","src":"5975:12:15"}],"id":6329,"name":"ParameterList","src":"5974:14:15"},{"children":[{"attributes":{"functionReturnParameters":6329},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6330,"name":"Identifier","src":"6006:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"bytes32","value":"node"},"id":6331,"name":"Identifier","src":"6017:4:15"}],"id":6332,"name":"IndexAccess","src":"6006:16:15"}],"id":6333,"name":"Return","src":"5999:23:15"}],"id":6334,"name":"Block","src":"5989:40:15"}],"id":6335,"name":"FunctionDefinition","src":"5920:109:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6482,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6356,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6336,"name":"ElementaryTypeName","src":"6062:6:15"}],"id":6337,"name":"VariableDeclaration","src":"6062:18:15"}],"id":6338,"name":"ParameterList","src":"6061:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6356,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6339,"name":"ElementaryTypeName","src":"6102:4:15"}],"id":6340,"name":"VariableDeclaration","src":"6102:4:15"}],"id":6341,"name":"ParameterList","src":"6101:6:15"},{"children":[{"attributes":{"functionReturnParameters":6341},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6337,"type":"bytes4","value":"interfaceID"},"id":6342,"name":"Identifier","src":"6125:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6005,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":6343,"name":"Identifier","src":"6140:23:15"}],"id":6344,"name":"BinaryOperation","src":"6125:38:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6337,"type":"bytes4","value":"interfaceID"},"id":6345,"name":"Identifier","src":"6182:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6008,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":6346,"name":"Identifier","src":"6197:21:15"}],"id":6347,"name":"BinaryOperation","src":"6182:36:15"}],"id":6348,"name":"BinaryOperation","src":"6125:93:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10202,"type":"contract super DNSResolver","value":"super"},"id":6349,"name":"Identifier","src":"6237:5:15"}],"id":6350,"name":"MemberAccess","src":"6237:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6337,"type":"bytes4","value":"interfaceID"},"id":6351,"name":"Identifier","src":"6261:11:15"}],"id":6352,"name":"FunctionCall","src":"6237:36:15"}],"id":6353,"name":"BinaryOperation","src":"6125:148:15"}],"id":6354,"name":"Return","src":"6118:155:15"}],"id":6355,"name":"Block","src":"6108:172:15"}],"id":6356,"name":"FunctionDefinition","src":"6035:245:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":6482,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6481,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6357,"name":"ElementaryTypeName","src":"6316:7:15"}],"id":6358,"name":"VariableDeclaration","src":"6316:12:15"},{"attributes":{"constant":false,"name":"name","scope":6481,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6359,"name":"ElementaryTypeName","src":"6338:5:15"}],"id":6360,"name":"VariableDeclaration","src":"6338:17:15"},{"attributes":{"constant":false,"name":"resource","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6361,"name":"ElementaryTypeName","src":"6365:6:15"}],"id":6362,"name":"VariableDeclaration","src":"6365:15:15"},{"attributes":{"constant":false,"name":"data","scope":6481,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6363,"name":"ElementaryTypeName","src":"6390:5:15"}],"id":6364,"name":"VariableDeclaration","src":"6390:17:15"},{"attributes":{"constant":false,"name":"offset","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6365,"name":"ElementaryTypeName","src":"6417:7:15"}],"id":6366,"name":"VariableDeclaration","src":"6417:14:15"},{"attributes":{"constant":false,"name":"size","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6367,"name":"ElementaryTypeName","src":"6441:7:15"}],"id":6368,"name":"VariableDeclaration","src":"6441:12:15"},{"attributes":{"constant":false,"name":"deleteRecord","scope":6481,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6369,"name":"ElementaryTypeName","src":"6463:4:15"}],"id":6370,"name":"VariableDeclaration","src":"6463:17:15"}],"id":6371,"name":"ParameterList","src":"6306:175:15"},{"attributes":{"parameters":[null]},"children":[],"id":6372,"name":"ParameterList","src":"6494:0:15"},{"children":[{"attributes":{"assignments":[6374]},"children":[{"attributes":{"constant":false,"name":"version","scope":6480,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6373,"name":"ElementaryTypeName","src":"6504:7:15"}],"id":6374,"name":"VariableDeclaration","src":"6504:15:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6046,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6375,"name":"Identifier","src":"6522:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6376,"name":"Identifier","src":"6531:4:15"}],"id":6377,"name":"IndexAccess","src":"6522:14:15"}],"id":6378,"name":"VariableDeclarationStatement","src":"6504:32:15"},{"attributes":{"assignments":[6380]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6480,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6379,"name":"ElementaryTypeName","src":"6546:7:15"}],"id":6380,"name":"VariableDeclaration","src":"6546:16:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6381,"name":"Identifier","src":"6565:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6360,"type":"bytes memory","value":"name"},"id":6382,"name":"Identifier","src":"6575:4:15"}],"id":6383,"name":"FunctionCall","src":"6565:15:15"}],"id":6384,"name":"VariableDeclarationStatement","src":"6546:34:15"},{"attributes":{"assignments":[6386]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":6480,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6385,"name":"ElementaryTypeName","src":"6590:5:15"}],"id":6386,"name":"VariableDeclaration","src":"6590:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9915,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6364,"type":"bytes memory","value":"data"},"id":6387,"name":"Identifier","src":"6612:4:15"}],"id":6388,"name":"MemberAccess","src":"6612:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6366,"type":"uint256","value":"offset"},"id":6389,"name":"Identifier","src":"6627:6:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"size"},"id":6390,"name":"Identifier","src":"6635:4:15"}],"id":6391,"name":"FunctionCall","src":"6612:28:15"}],"id":6392,"name":"VariableDeclarationStatement","src":"6590:50:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6370,"type":"bool","value":"deleteRecord"},"id":6393,"name":"Identifier","src":"6654:12:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6394,"name":"Identifier","src":"6686:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6395,"name":"Identifier","src":"6694:4:15"}],"id":6396,"name":"IndexAccess","src":"6686:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6397,"name":"Identifier","src":"6700:7:15"}],"id":6398,"name":"IndexAccess","src":"6686:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6399,"name":"Identifier","src":"6709:8:15"}],"id":6400,"name":"IndexAccess","src":"6686:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6401,"name":"Identifier","src":"6719:8:15"}],"id":6402,"name":"IndexAccess","src":"6686:42:15"}],"id":6403,"name":"MemberAccess","src":"6686:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6404,"name":"Literal","src":"6739:1:15"}],"id":6405,"name":"BinaryOperation","src":"6686:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6064,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6406,"name":"Identifier","src":"6760:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6407,"name":"Identifier","src":"6777:4:15"}],"id":6410,"name":"IndexAccess","src":"6760:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6408,"name":"Identifier","src":"6783:7:15"}],"id":6411,"name":"IndexAccess","src":"6760:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6409,"name":"Identifier","src":"6792:8:15"}],"id":6412,"name":"IndexAccess","src":"6760:41:15"}],"id":6413,"name":"UnaryOperation","src":"6760:43:15"}],"id":6414,"name":"ExpressionStatement","src":"6760:43:15"}],"id":6415,"name":"Block","src":"6742:76:15"}],"id":6416,"name":"IfStatement","src":"6682:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6417,"name":"Identifier","src":"6838:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6418,"name":"Identifier","src":"6846:4:15"}],"id":6419,"name":"IndexAccess","src":"6838:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6420,"name":"Identifier","src":"6852:7:15"}],"id":6421,"name":"IndexAccess","src":"6838:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6422,"name":"Identifier","src":"6861:8:15"}],"id":6423,"name":"IndexAccess","src":"6838:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6424,"name":"Identifier","src":"6871:8:15"}],"id":6425,"name":"IndexAccess","src":"6838:42:15"}],"id":6426,"name":"TupleExpression","src":"6837:44:15"}],"id":6427,"name":"UnaryOperation","src":"6831:50:15"}],"id":6428,"name":"ExpressionStatement","src":"6831:50:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":6026,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":6429,"name":"Identifier","src":"6900:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6430,"name":"Identifier","src":"6917:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6360,"type":"bytes memory","value":"name"},"id":6431,"name":"Identifier","src":"6923:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6432,"name":"Identifier","src":"6929:8:15"}],"id":6433,"name":"FunctionCall","src":"6900:38:15"}],"id":6434,"name":"EmitStatement","src":"6895:43:15"}],"id":6435,"name":"Block","src":"6668:281:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6436,"name":"Identifier","src":"6973:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6437,"name":"Identifier","src":"6981:4:15"}],"id":6438,"name":"IndexAccess","src":"6973:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6439,"name":"Identifier","src":"6987:7:15"}],"id":6440,"name":"IndexAccess","src":"6973:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6441,"name":"Identifier","src":"6996:8:15"}],"id":6442,"name":"IndexAccess","src":"6973:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6443,"name":"Identifier","src":"7006:8:15"}],"id":6444,"name":"IndexAccess","src":"6973:42:15"}],"id":6445,"name":"MemberAccess","src":"6973:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6446,"name":"Literal","src":"7026:1:15"}],"id":6447,"name":"BinaryOperation","src":"6973:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6064,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6448,"name":"Identifier","src":"7047:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6449,"name":"Identifier","src":"7064:4:15"}],"id":6452,"name":"IndexAccess","src":"7047:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6450,"name":"Identifier","src":"7070:7:15"}],"id":6453,"name":"IndexAccess","src":"7047:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6451,"name":"Identifier","src":"7079:8:15"}],"id":6454,"name":"IndexAccess","src":"7047:41:15"}],"id":6455,"name":"UnaryOperation","src":"7047:43:15"}],"id":6456,"name":"ExpressionStatement","src":"7047:43:15"}],"id":6457,"name":"Block","src":"7029:76:15"}],"id":6458,"name":"IfStatement","src":"6969:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6056,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6459,"name":"Identifier","src":"7118:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6460,"name":"Identifier","src":"7126:4:15"}],"id":6464,"name":"IndexAccess","src":"7118:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"version"},"id":6461,"name":"Identifier","src":"7132:7:15"}],"id":6465,"name":"IndexAccess","src":"7118:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes32","value":"nameHash"},"id":6462,"name":"Identifier","src":"7141:8:15"}],"id":6466,"name":"IndexAccess","src":"7118:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6463,"name":"Identifier","src":"7151:8:15"}],"id":6467,"name":"IndexAccess","src":"7118:42:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"bytes memory","value":"rrData"},"id":6468,"name":"Identifier","src":"7163:6:15"}],"id":6469,"name":"Assignment","src":"7118:51:15"}],"id":6470,"name":"ExpressionStatement","src":"7118:51:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6018,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":6471,"name":"Identifier","src":"7188:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6358,"type":"bytes32","value":"node"},"id":6472,"name":"Identifier","src":"7205:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6360,"type":"bytes memory","value":"name"},"id":6473,"name":"Identifier","src":"7211:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint16","value":"resource"},"id":6474,"name":"Identifier","src":"7217:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"bytes memory","value":"rrData"},"id":6475,"name":"Identifier","src":"7227:6:15"}],"id":6476,"name":"FunctionCall","src":"7188:46:15"}],"id":6477,"name":"EmitStatement","src":"7183:51:15"}],"id":6478,"name":"Block","src":"6955:290:15"}],"id":6479,"name":"IfStatement","src":"6650:595:15"}],"id":6480,"name":"Block","src":"6494:757:15"}],"id":6481,"name":"FunctionDefinition","src":"6286:965:15"}],"id":6482,"name":"ContractDefinition","src":"81:7172:15"}],"id":6483,"name":"SourceUnit","src":"0:7253:15"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[6669]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6484,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6670,"symbolAliases":[null],"unitAlias":""},"id":6485,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"SourceUnit":5922,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":6670,"symbolAliases":[null],"unitAlias":""},"id":6486,"name":"ImportDirective","src":"55:28:16"},{"attributes":{"contractDependencies":[5921,8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6669,5921,8799],"name":"InterfaceResolver","scope":6670},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":6487,"name":"UserDefinedTypeName","src":"115:12:16"}],"id":6488,"name":"InheritanceSpecifier","src":"115:12:16"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5921,"type":"contract AddrResolver"},"id":6489,"name":"UserDefinedTypeName","src":"129:12:16"}],"id":6490,"name":"InheritanceSpecifier","src":"129:12:16"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":6669,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6491,"name":"ElementaryTypeName","src":"148:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":6492,"name":"ElementaryTypeNameExpression","src":"197:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6493,"name":"Identifier","src":"204:9:16"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":6494,"name":"Literal","src":"214:38:16"}],"id":6495,"name":"FunctionCall","src":"204:49:16"}],"id":6496,"name":"FunctionCall","src":"197:57:16"}],"id":6497,"name":"VariableDeclaration","src":"148:106:16"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":6669,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6498,"name":"ElementaryTypeName","src":"260:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":6499,"name":"Literal","src":"304:10:16"}],"id":6500,"name":"VariableDeclaration","src":"260:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6508,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6501,"name":"ElementaryTypeName","src":"344:7:16"}],"id":6502,"name":"VariableDeclaration","src":"344:20:16"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":6508,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6503,"name":"ElementaryTypeName","src":"366:6:16"}],"id":6504,"name":"VariableDeclaration","src":"366:26:16"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":6508,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6505,"name":"ElementaryTypeName","src":"394:7:16"}],"id":6506,"name":"VariableDeclaration","src":"394:19:16"}],"id":6507,"name":"ParameterList","src":"343:71:16"}],"id":6508,"name":"EventDefinition","src":"321:94:16"},{"attributes":{"constant":false,"name":"interfaces","scope":6669,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6509,"name":"ElementaryTypeName","src":"429:7:16"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6510,"name":"ElementaryTypeName","src":"446:6:16"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6511,"name":"ElementaryTypeName","src":"454:7:16"}],"id":6512,"name":"Mapping","src":"438:24:16"}],"id":6513,"name":"Mapping","src":"421:42:16"}],"id":6514,"name":"VariableDeclaration","src":"421:53:16"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":6669,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6541,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6515,"name":"ElementaryTypeName","src":"880:7:16"}],"id":6516,"name":"VariableDeclaration","src":"880:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6541,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6517,"name":"ElementaryTypeName","src":"894:6:16"}],"id":6518,"name":"VariableDeclaration","src":"894:18:16"},{"attributes":{"constant":false,"name":"implementer","scope":6541,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6519,"name":"ElementaryTypeName","src":"914:7:16"}],"id":6520,"name":"VariableDeclaration","src":"914:19:16"}],"id":6521,"name":"ParameterList","src":"879:55:16"},{"attributes":{"parameters":[null]},"children":[],"id":6525,"name":"ParameterList","src":"961:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6522,"name":"Identifier","src":"944:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes32","value":"node"},"id":6523,"name":"Identifier","src":"955:4:16"}],"id":6524,"name":"ModifierInvocation","src":"944:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6514,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6526,"name":"Identifier","src":"971:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes32","value":"node"},"id":6527,"name":"Identifier","src":"982:4:16"}],"id":6529,"name":"IndexAccess","src":"971:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6518,"type":"bytes4","value":"interfaceID"},"id":6528,"name":"Identifier","src":"988:11:16"}],"id":6530,"name":"IndexAccess","src":"971:29:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6520,"type":"address","value":"implementer"},"id":6531,"name":"Identifier","src":"1003:11:16"}],"id":6532,"name":"Assignment","src":"971:43:16"}],"id":6533,"name":"ExpressionStatement","src":"971:43:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6508,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":6534,"name":"Identifier","src":"1029:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes32","value":"node"},"id":6535,"name":"Identifier","src":"1046:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6518,"type":"bytes4","value":"interfaceID"},"id":6536,"name":"Identifier","src":"1052:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6520,"type":"address","value":"implementer"},"id":6537,"name":"Identifier","src":"1065:11:16"}],"id":6538,"name":"FunctionCall","src":"1029:48:16"}],"id":6539,"name":"EmitStatement","src":"1024:53:16"}],"id":6540,"name":"Block","src":"961:123:16"}],"id":6541,"name":"FunctionDefinition","src":"858:226:16"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":6669,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6651,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6542,"name":"ElementaryTypeName","src":"1751:7:16"}],"id":6543,"name":"VariableDeclaration","src":"1751:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6651,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6544,"name":"ElementaryTypeName","src":"1765:6:16"}],"id":6545,"name":"VariableDeclaration","src":"1765:18:16"}],"id":6546,"name":"ParameterList","src":"1750:34:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6651,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6547,"name":"ElementaryTypeName","src":"1808:7:16"}],"id":6548,"name":"VariableDeclaration","src":"1808:7:16"}],"id":6549,"name":"ParameterList","src":"1807:9:16"},{"children":[{"attributes":{"assignments":[6551]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":6650,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6550,"name":"ElementaryTypeName","src":"1827:7:16"}],"id":6551,"name":"VariableDeclaration","src":"1827:19:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6514,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6552,"name":"Identifier","src":"1849:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes32","value":"node"},"id":6553,"name":"Identifier","src":"1860:4:16"}],"id":6554,"name":"IndexAccess","src":"1849:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6545,"type":"bytes4","value":"interfaceID"},"id":6555,"name":"Identifier","src":"1866:11:16"}],"id":6556,"name":"IndexAccess","src":"1849:29:16"}],"id":6557,"name":"VariableDeclarationStatement","src":"1827:51:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6551,"type":"address","value":"implementer"},"id":6558,"name":"Identifier","src":"1891:11:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6559,"name":"ElementaryTypeNameExpression","src":"1906:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6560,"name":"Literal","src":"1914:1:16"}],"id":6561,"name":"FunctionCall","src":"1906:10:16"}],"id":6562,"name":"BinaryOperation","src":"1891:25:16"},{"children":[{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6551,"type":"address","value":"implementer"},"id":6563,"name":"Identifier","src":"1939:11:16"}],"id":6564,"name":"Return","src":"1932:18:16"}],"id":6565,"name":"Block","src":"1918:43:16"}],"id":6566,"name":"IfStatement","src":"1888:73:16"},{"attributes":{"assignments":[6568]},"children":[{"attributes":{"constant":false,"name":"a","scope":6650,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6567,"name":"ElementaryTypeName","src":"1971:7:16"}],"id":6568,"name":"VariableDeclaration","src":"1971:9:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[5844,5899],"referencedDeclaration":5844,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":6569,"name":"Identifier","src":"1983:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes32","value":"node"},"id":6570,"name":"Identifier","src":"1988:4:16"}],"id":6571,"name":"FunctionCall","src":"1983:10:16"}],"id":6572,"name":"VariableDeclarationStatement","src":"1971:22:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6568,"type":"address","value":"a"},"id":6573,"name":"Identifier","src":"2006:1:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6574,"name":"ElementaryTypeNameExpression","src":"2011:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6575,"name":"Literal","src":"2019:1:16"}],"id":6576,"name":"FunctionCall","src":"2011:10:16"}],"id":6577,"name":"BinaryOperation","src":"2006:15:16"},{"children":[{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6578,"name":"ElementaryTypeNameExpression","src":"2044:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6579,"name":"Literal","src":"2052:1:16"}],"id":6580,"name":"FunctionCall","src":"2044:10:16"}],"id":6581,"name":"Return","src":"2037:17:16"}],"id":6582,"name":"Block","src":"2023:42:16"}],"id":6583,"name":"IfStatement","src":"2003:62:16"},{"attributes":{"assignments":[6585,6587]},"children":[{"attributes":{"constant":false,"name":"success","scope":6650,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6584,"name":"ElementaryTypeName","src":"2076:4:16"}],"id":6585,"name":"VariableDeclaration","src":"2076:12:16"},{"attributes":{"constant":false,"name":"returnData","scope":6650,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6586,"name":"ElementaryTypeName","src":"2090:5:16"}],"id":6587,"name":"VariableDeclaration","src":"2090:23:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6568,"type":"address","value":"a"},"id":6588,"name":"Identifier","src":"2117:1:16"}],"id":6589,"name":"MemberAccess","src":"2117:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":6590,"name":"Identifier","src":"2130:3:16"}],"id":6591,"name":"MemberAccess","src":"2130:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6592,"name":"Literal","src":"2154:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6500,"type":"bytes4","value":"INTERFACE_META_ID"},"id":6593,"name":"Identifier","src":"2183:17:16"}],"id":6594,"name":"FunctionCall","src":"2130:71:16"}],"id":6595,"name":"FunctionCall","src":"2117:85:16"}],"id":6596,"name":"VariableDeclarationStatement","src":"2075:127:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"bool","value":"success"},"id":6597,"name":"Identifier","src":"2216:7:16"}],"id":6598,"name":"UnaryOperation","src":"2215:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6599,"name":"Identifier","src":"2227:10:16"}],"id":6600,"name":"MemberAccess","src":"2227:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6601,"name":"Literal","src":"2247:2:16"}],"id":6602,"name":"BinaryOperation","src":"2227:22:16"}],"id":6603,"name":"BinaryOperation","src":"2215:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6604,"name":"Identifier","src":"2253:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6605,"name":"Literal","src":"2264:2:16"}],"id":6606,"name":"IndexAccess","src":"2253:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6607,"name":"Literal","src":"2271:1:16"}],"id":6608,"name":"BinaryOperation","src":"2253:19:16"}],"id":6609,"name":"BinaryOperation","src":"2215:57:16"},{"children":[{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6610,"name":"ElementaryTypeNameExpression","src":"2342:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6611,"name":"Literal","src":"2350:1:16"}],"id":6612,"name":"FunctionCall","src":"2342:10:16"}],"id":6613,"name":"Return","src":"2335:17:16"}],"id":6614,"name":"Block","src":"2274:89:16"}],"id":6615,"name":"IfStatement","src":"2212:151:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"bool","value":"success"},"id":6616,"name":"Identifier","src":"2374:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6617,"name":"Identifier","src":"2383:10:16"}],"id":6618,"name":"TupleExpression","src":"2373:21:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6568,"type":"address","value":"a"},"id":6619,"name":"Identifier","src":"2397:1:16"}],"id":6620,"name":"MemberAccess","src":"2397:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":6621,"name":"Identifier","src":"2410:3:16"}],"id":6622,"name":"MemberAccess","src":"2410:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6623,"name":"Literal","src":"2434:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6545,"type":"bytes4","value":"interfaceID"},"id":6624,"name":"Identifier","src":"2463:11:16"}],"id":6625,"name":"FunctionCall","src":"2410:65:16"}],"id":6626,"name":"FunctionCall","src":"2397:79:16"}],"id":6627,"name":"Assignment","src":"2373:103:16"}],"id":6628,"name":"ExpressionStatement","src":"2373:103:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"bool","value":"success"},"id":6629,"name":"Identifier","src":"2490:7:16"}],"id":6630,"name":"UnaryOperation","src":"2489:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6631,"name":"Identifier","src":"2501:10:16"}],"id":6632,"name":"MemberAccess","src":"2501:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6633,"name":"Literal","src":"2521:2:16"}],"id":6634,"name":"BinaryOperation","src":"2501:22:16"}],"id":6635,"name":"BinaryOperation","src":"2489:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6587,"type":"bytes memory","value":"returnData"},"id":6636,"name":"Identifier","src":"2527:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6637,"name":"Literal","src":"2538:2:16"}],"id":6638,"name":"IndexAccess","src":"2527:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6639,"name":"Literal","src":"2545:1:16"}],"id":6640,"name":"BinaryOperation","src":"2527:19:16"}],"id":6641,"name":"BinaryOperation","src":"2489:57:16"},{"children":[{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6642,"name":"ElementaryTypeNameExpression","src":"2628:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6643,"name":"Literal","src":"2636:1:16"}],"id":6644,"name":"FunctionCall","src":"2628:10:16"}],"id":6645,"name":"Return","src":"2621:17:16"}],"id":6646,"name":"Block","src":"2548:101:16"}],"id":6647,"name":"IfStatement","src":"2486:163:16"},{"attributes":{"functionReturnParameters":6549},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6568,"type":"address","value":"a"},"id":6648,"name":"Identifier","src":"2666:1:16"}],"id":6649,"name":"Return","src":"2659:8:16"}],"id":6650,"name":"Block","src":"1817:857:16"}],"id":6651,"name":"FunctionDefinition","src":"1721:953:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6669,"stateMutability":"pure","superFunction":5920,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6668,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6652,"name":"ElementaryTypeName","src":"2707:6:16"}],"id":6653,"name":"VariableDeclaration","src":"2707:18:16"}],"id":6654,"name":"ParameterList","src":"2706:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6668,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6655,"name":"ElementaryTypeName","src":"2747:4:16"}],"id":6656,"name":"VariableDeclaration","src":"2747:4:16"}],"id":6657,"name":"ParameterList","src":"2746:6:16"},{"children":[{"attributes":{"functionReturnParameters":6657},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6653,"type":"bytes4","value":"interfaceID"},"id":6658,"name":"Identifier","src":"2770:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6497,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":6659,"name":"Identifier","src":"2785:22:16"}],"id":6660,"name":"BinaryOperation","src":"2770:37:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5920,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10204,"type":"contract super InterfaceResolver","value":"super"},"id":6661,"name":"Identifier","src":"2811:5:16"}],"id":6662,"name":"MemberAccess","src":"2811:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6653,"type":"bytes4","value":"interfaceID"},"id":6663,"name":"Identifier","src":"2835:11:16"}],"id":6664,"name":"FunctionCall","src":"2811:36:16"}],"id":6665,"name":"BinaryOperation","src":"2770:77:16"}],"id":6666,"name":"Return","src":"2763:84:16"}],"id":6667,"name":"Block","src":"2753:101:16"}],"id":6668,"name":"FunctionDefinition","src":"2680:174:16"}],"id":6669,"name":"ContractDefinition","src":"85:2771:16"}],"id":6670,"name":"SourceUnit","src":"0:2857:16"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[6739]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6671,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6740,"symbolAliases":[null],"unitAlias":""},"id":6672,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6739,8799],"name":"NameResolver","scope":6740},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":6673,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":6674,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":6739,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6675,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":6676,"name":"Literal","src":"144:10:17"}],"id":6677,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6683,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6678,"name":"ElementaryTypeName","src":"179:7:17"}],"id":6679,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6683,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6680,"name":"ElementaryTypeName","src":"201:6:17"}],"id":6681,"name":"VariableDeclaration","src":"201:11:17"}],"id":6682,"name":"ParameterList","src":"178:35:17"}],"id":6683,"name":"EventDefinition","src":"161:53:17"},{"attributes":{"constant":false,"name":"names","scope":6739,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6684,"name":"ElementaryTypeName","src":"228:7:17"},{"attributes":{"name":"string","type":"string"},"id":6685,"name":"ElementaryTypeName","src":"237:6:17"}],"id":6686,"name":"Mapping","src":"220:24:17"}],"id":6687,"name":"VariableDeclaration","src":"220:30:17"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":6739,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6709,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6688,"name":"ElementaryTypeName","src":"509:7:17"}],"id":6689,"name":"VariableDeclaration","src":"509:12:17"},{"attributes":{"constant":false,"name":"name","scope":6709,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6690,"name":"ElementaryTypeName","src":"523:6:17"}],"id":6691,"name":"VariableDeclaration","src":"523:20:17"}],"id":6692,"name":"ParameterList","src":"508:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":6696,"name":"ParameterList","src":"571:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6693,"name":"Identifier","src":"554:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6689,"type":"bytes32","value":"node"},"id":6694,"name":"Identifier","src":"565:4:17"}],"id":6695,"name":"ModifierInvocation","src":"554:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6687,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":6697,"name":"Identifier","src":"581:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6689,"type":"bytes32","value":"node"},"id":6698,"name":"Identifier","src":"587:4:17"}],"id":6699,"name":"IndexAccess","src":"581:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"string calldata","value":"name"},"id":6700,"name":"Identifier","src":"595:4:17"}],"id":6701,"name":"Assignment","src":"581:18:17"}],"id":6702,"name":"ExpressionStatement","src":"581:18:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6683,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":6703,"name":"Identifier","src":"614:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6689,"type":"bytes32","value":"node"},"id":6704,"name":"Identifier","src":"626:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6691,"type":"string calldata","value":"name"},"id":6705,"name":"Identifier","src":"632:4:17"}],"id":6706,"name":"FunctionCall","src":"614:23:17"}],"id":6707,"name":"EmitStatement","src":"609:28:17"}],"id":6708,"name":"Block","src":"571:73:17"}],"id":6709,"name":"FunctionDefinition","src":"492:152:17"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":6739,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6721,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6710,"name":"ElementaryTypeName","src":"858:7:17"}],"id":6711,"name":"VariableDeclaration","src":"858:12:17"}],"id":6712,"name":"ParameterList","src":"857:14:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6721,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6713,"name":"ElementaryTypeName","src":"895:6:17"}],"id":6714,"name":"VariableDeclaration","src":"895:13:17"}],"id":6715,"name":"ParameterList","src":"894:15:17"},{"children":[{"attributes":{"functionReturnParameters":6715},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6687,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":6716,"name":"Identifier","src":"927:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6711,"type":"bytes32","value":"node"},"id":6717,"name":"Identifier","src":"933:4:17"}],"id":6718,"name":"IndexAccess","src":"927:11:17"}],"id":6719,"name":"Return","src":"920:18:17"}],"id":6720,"name":"Block","src":"910:35:17"}],"id":6721,"name":"FunctionDefinition","src":"844:101:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6739,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6738,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6722,"name":"ElementaryTypeName","src":"978:6:17"}],"id":6723,"name":"VariableDeclaration","src":"978:18:17"}],"id":6724,"name":"ParameterList","src":"977:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6738,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6725,"name":"ElementaryTypeName","src":"1018:4:17"}],"id":6726,"name":"VariableDeclaration","src":"1018:4:17"}],"id":6727,"name":"ParameterList","src":"1017:6:17"},{"children":[{"attributes":{"functionReturnParameters":6727},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6723,"type":"bytes4","value":"interfaceID"},"id":6728,"name":"Identifier","src":"1041:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6677,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":6729,"name":"Identifier","src":"1056:17:17"}],"id":6730,"name":"BinaryOperation","src":"1041:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10206,"type":"contract super NameResolver","value":"super"},"id":6731,"name":"Identifier","src":"1077:5:17"}],"id":6732,"name":"MemberAccess","src":"1077:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6723,"type":"bytes4","value":"interfaceID"},"id":6733,"name":"Identifier","src":"1101:11:17"}],"id":6734,"name":"FunctionCall","src":"1077:36:17"}],"id":6735,"name":"BinaryOperation","src":"1041:72:17"}],"id":6736,"name":"Return","src":"1034:79:17"}],"id":6737,"name":"Block","src":"1024:96:17"}],"id":6738,"name":"FunctionDefinition","src":"951:169:17"}],"id":6739,"name":"ContractDefinition","src":"56:1066:17"}],"id":6740,"name":"SourceUnit","src":"0:1123:17"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[6830]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6741,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6831,"symbolAliases":[null],"unitAlias":""},"id":6742,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6830,8799],"name":"PubkeyResolver","scope":6831},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":6743,"name":"UserDefinedTypeName","src":"83:12:18"}],"id":6744,"name":"InheritanceSpecifier","src":"83:12:18"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":6830,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6745,"name":"ElementaryTypeName","src":"102:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":6746,"name":"Literal","src":"148:10:18"}],"id":6747,"name":"VariableDeclaration","src":"102:56:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6755,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6748,"name":"ElementaryTypeName","src":"185:7:18"}],"id":6749,"name":"VariableDeclaration","src":"185:20:18"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":6755,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6750,"name":"ElementaryTypeName","src":"207:7:18"}],"id":6751,"name":"VariableDeclaration","src":"207:9:18"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":6755,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6752,"name":"ElementaryTypeName","src":"218:7:18"}],"id":6753,"name":"VariableDeclaration","src":"218:9:18"}],"id":6754,"name":"ParameterList","src":"184:44:18"}],"id":6755,"name":"EventDefinition","src":"165:64:18"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":6830,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":6760,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6756,"name":"ElementaryTypeName","src":"262:7:18"}],"id":6757,"name":"VariableDeclaration","src":"262:9:18"},{"attributes":{"constant":false,"name":"y","scope":6760,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6758,"name":"ElementaryTypeName","src":"281:7:18"}],"id":6759,"name":"VariableDeclaration","src":"281:9:18"}],"id":6760,"name":"StructDefinition","src":"235:62:18"},{"attributes":{"constant":false,"name":"pubkeys","scope":6830,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6761,"name":"ElementaryTypeName","src":"311:7:18"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":6760,"type":"struct PubkeyResolver.PublicKey"},"id":6762,"name":"UserDefinedTypeName","src":"320:9:18"}],"id":6763,"name":"Mapping","src":"303:27:18"}],"id":6764,"name":"VariableDeclaration","src":"303:35:18"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":6830,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6792,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6765,"name":"ElementaryTypeName","src":"631:7:18"}],"id":6766,"name":"VariableDeclaration","src":"631:12:18"},{"attributes":{"constant":false,"name":"x","scope":6792,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6767,"name":"ElementaryTypeName","src":"645:7:18"}],"id":6768,"name":"VariableDeclaration","src":"645:9:18"},{"attributes":{"constant":false,"name":"y","scope":6792,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6769,"name":"ElementaryTypeName","src":"656:7:18"}],"id":6770,"name":"VariableDeclaration","src":"656:9:18"}],"id":6771,"name":"ParameterList","src":"630:36:18"},{"attributes":{"parameters":[null]},"children":[],"id":6775,"name":"ParameterList","src":"693:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6772,"name":"Identifier","src":"676:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"bytes32","value":"node"},"id":6773,"name":"Identifier","src":"687:4:18"}],"id":6774,"name":"ModifierInvocation","src":"676:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6776,"name":"Identifier","src":"703:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"bytes32","value":"node"},"id":6777,"name":"Identifier","src":"711:4:18"}],"id":6778,"name":"IndexAccess","src":"703:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6760,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":6779,"name":"Identifier","src":"719:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6768,"type":"bytes32","value":"x"},"id":6780,"name":"Identifier","src":"729:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes32","value":"y"},"id":6781,"name":"Identifier","src":"732:1:18"}],"id":6782,"name":"FunctionCall","src":"719:15:18"}],"id":6783,"name":"Assignment","src":"703:31:18"}],"id":6784,"name":"ExpressionStatement","src":"703:31:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6755,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":6785,"name":"Identifier","src":"749:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"bytes32","value":"node"},"id":6786,"name":"Identifier","src":"763:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6768,"type":"bytes32","value":"x"},"id":6787,"name":"Identifier","src":"769:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes32","value":"y"},"id":6788,"name":"Identifier","src":"772:1:18"}],"id":6789,"name":"FunctionCall","src":"749:25:18"}],"id":6790,"name":"EmitStatement","src":"744:30:18"}],"id":6791,"name":"Block","src":"693:88:18"}],"id":6792,"name":"FunctionDefinition","src":"612:169:18"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":6830,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6812,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6793,"name":"ElementaryTypeName","src":"1039:7:18"}],"id":6794,"name":"VariableDeclaration","src":"1039:12:18"}],"id":6795,"name":"ParameterList","src":"1038:14:18"},{"children":[{"attributes":{"constant":false,"name":"x","scope":6812,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6796,"name":"ElementaryTypeName","src":"1076:7:18"}],"id":6797,"name":"VariableDeclaration","src":"1076:9:18"},{"attributes":{"constant":false,"name":"y","scope":6812,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6798,"name":"ElementaryTypeName","src":"1087:7:18"}],"id":6799,"name":"VariableDeclaration","src":"1087:9:18"}],"id":6800,"name":"ParameterList","src":"1075:22:18"},{"children":[{"attributes":{"functionReturnParameters":6800},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":6757,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6801,"name":"Identifier","src":"1116:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"bytes32","value":"node"},"id":6802,"name":"Identifier","src":"1124:4:18"}],"id":6803,"name":"IndexAccess","src":"1116:13:18"}],"id":6804,"name":"MemberAccess","src":"1116:15:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":6759,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6805,"name":"Identifier","src":"1133:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"bytes32","value":"node"},"id":6806,"name":"Identifier","src":"1141:4:18"}],"id":6807,"name":"IndexAccess","src":"1133:13:18"}],"id":6808,"name":"MemberAccess","src":"1133:15:18"}],"id":6809,"name":"TupleExpression","src":"1115:34:18"}],"id":6810,"name":"Return","src":"1108:41:18"}],"id":6811,"name":"Block","src":"1098:58:18"}],"id":6812,"name":"FunctionDefinition","src":"1023:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6830,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6829,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6813,"name":"ElementaryTypeName","src":"1189:6:18"}],"id":6814,"name":"VariableDeclaration","src":"1189:18:18"}],"id":6815,"name":"ParameterList","src":"1188:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":6829,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6816,"name":"ElementaryTypeName","src":"1229:4:18"}],"id":6817,"name":"VariableDeclaration","src":"1229:4:18"}],"id":6818,"name":"ParameterList","src":"1228:6:18"},{"children":[{"attributes":{"functionReturnParameters":6818},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6814,"type":"bytes4","value":"interfaceID"},"id":6819,"name":"Identifier","src":"1252:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6747,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":6820,"name":"Identifier","src":"1267:19:18"}],"id":6821,"name":"BinaryOperation","src":"1252:34:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10208,"type":"contract super PubkeyResolver","value":"super"},"id":6822,"name":"Identifier","src":"1290:5:18"}],"id":6823,"name":"MemberAccess","src":"1290:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6814,"type":"bytes4","value":"interfaceID"},"id":6824,"name":"Identifier","src":"1314:11:18"}],"id":6825,"name":"FunctionCall","src":"1290:36:18"}],"id":6826,"name":"BinaryOperation","src":"1252:74:18"}],"id":6827,"name":"Return","src":"1245:81:18"}],"id":6828,"name":"Block","src":"1235:98:18"}],"id":6829,"name":"FunctionDefinition","src":"1162:171:18"}],"id":6830,"name":"ContractDefinition","src":"56:1279:18"}],"id":6831,"name":"SourceUnit","src":"0:1336:18"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[6913]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6832,"name":"PragmaDirective","src":"0:23:19"},{"attributes":{"SourceUnit":8800,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6914,"symbolAliases":[null],"unitAlias":""},"id":6833,"name":"ImportDirective","src":"25:29:19"},{"attributes":{"contractDependencies":[8799],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6913,8799],"name":"TextResolver","scope":6914},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8799,"type":"contract ResolverBase"},"id":6834,"name":"UserDefinedTypeName","src":"81:12:19"}],"id":6835,"name":"InheritanceSpecifier","src":"81:12:19"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":6913,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6836,"name":"ElementaryTypeName","src":"100:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":6837,"name":"Literal","src":"144:10:19"}],"id":6838,"name":"VariableDeclaration","src":"100:54:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6839,"name":"ElementaryTypeName","src":"179:7:19"}],"id":6840,"name":"VariableDeclaration","src":"179:20:19"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":6846,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6841,"name":"ElementaryTypeName","src":"201:6:19"}],"id":6842,"name":"VariableDeclaration","src":"201:25:19"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":6846,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6843,"name":"ElementaryTypeName","src":"228:6:19"}],"id":6844,"name":"VariableDeclaration","src":"228:10:19"}],"id":6845,"name":"ParameterList","src":"178:61:19"}],"id":6846,"name":"EventDefinition","src":"161:79:19"},{"attributes":{"constant":false,"name":"texts","scope":6913,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6847,"name":"ElementaryTypeName","src":"254:7:19"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6848,"name":"ElementaryTypeName","src":"271:6:19"},{"attributes":{"name":"string","type":"string"},"id":6849,"name":"ElementaryTypeName","src":"279:6:19"}],"id":6850,"name":"Mapping","src":"263:23:19"}],"id":6851,"name":"Mapping","src":"246:41:19"}],"id":6852,"name":"VariableDeclaration","src":"246:47:19"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":6913,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6879,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6853,"name":"ElementaryTypeName","src":"590:7:19"}],"id":6854,"name":"VariableDeclaration","src":"590:12:19"},{"attributes":{"constant":false,"name":"key","scope":6879,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6855,"name":"ElementaryTypeName","src":"604:6:19"}],"id":6856,"name":"VariableDeclaration","src":"604:19:19"},{"attributes":{"constant":false,"name":"value","scope":6879,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6857,"name":"ElementaryTypeName","src":"625:6:19"}],"id":6858,"name":"VariableDeclaration","src":"625:21:19"}],"id":6859,"name":"ParameterList","src":"589:58:19"},{"attributes":{"parameters":[null]},"children":[],"id":6863,"name":"ParameterList","src":"674:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8766,"type":"modifier (bytes32)","value":"authorised"},"id":6860,"name":"Identifier","src":"657:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6854,"type":"bytes32","value":"node"},"id":6861,"name":"Identifier","src":"668:4:19"}],"id":6862,"name":"ModifierInvocation","src":"657:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6852,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6864,"name":"Identifier","src":"684:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6854,"type":"bytes32","value":"node"},"id":6865,"name":"Identifier","src":"690:4:19"}],"id":6867,"name":"IndexAccess","src":"684:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6856,"type":"string calldata","value":"key"},"id":6866,"name":"Identifier","src":"696:3:19"}],"id":6868,"name":"IndexAccess","src":"684:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6858,"type":"string calldata","value":"value"},"id":6869,"name":"Identifier","src":"703:5:19"}],"id":6870,"name":"Assignment","src":"684:24:19"}],"id":6871,"name":"ExpressionStatement","src":"684:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6846,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":6872,"name":"Identifier","src":"723:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6854,"type":"bytes32","value":"node"},"id":6873,"name":"Identifier","src":"735:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6856,"type":"string calldata","value":"key"},"id":6874,"name":"Identifier","src":"741:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6856,"type":"string calldata","value":"key"},"id":6875,"name":"Identifier","src":"746:3:19"}],"id":6876,"name":"FunctionCall","src":"723:27:19"}],"id":6877,"name":"EmitStatement","src":"718:32:19"}],"id":6878,"name":"Block","src":"674:83:19"}],"id":6879,"name":"FunctionDefinition","src":"573:184:19"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":6913,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6895,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6880,"name":"ElementaryTypeName","src":"988:7:19"}],"id":6881,"name":"VariableDeclaration","src":"988:12:19"},{"attributes":{"constant":false,"name":"key","scope":6895,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6882,"name":"ElementaryTypeName","src":"1002:6:19"}],"id":6883,"name":"VariableDeclaration","src":"1002:19:19"}],"id":6884,"name":"ParameterList","src":"987:35:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6895,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6885,"name":"ElementaryTypeName","src":"1046:6:19"}],"id":6886,"name":"VariableDeclaration","src":"1046:13:19"}],"id":6887,"name":"ParameterList","src":"1045:15:19"},{"children":[{"attributes":{"functionReturnParameters":6887},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6852,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6888,"name":"Identifier","src":"1078:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6881,"type":"bytes32","value":"node"},"id":6889,"name":"Identifier","src":"1084:4:19"}],"id":6890,"name":"IndexAccess","src":"1078:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6883,"type":"string calldata","value":"key"},"id":6891,"name":"Identifier","src":"1090:3:19"}],"id":6892,"name":"IndexAccess","src":"1078:16:19"}],"id":6893,"name":"Return","src":"1071:23:19"}],"id":6894,"name":"Block","src":"1061:40:19"}],"id":6895,"name":"FunctionDefinition","src":"974:127:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6913,"stateMutability":"pure","superFunction":8747,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6912,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6896,"name":"ElementaryTypeName","src":"1134:6:19"}],"id":6897,"name":"VariableDeclaration","src":"1134:18:19"}],"id":6898,"name":"ParameterList","src":"1133:20:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6912,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6899,"name":"ElementaryTypeName","src":"1174:4:19"}],"id":6900,"name":"VariableDeclaration","src":"1174:4:19"}],"id":6901,"name":"ParameterList","src":"1173:6:19"},{"children":[{"attributes":{"functionReturnParameters":6901},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6897,"type":"bytes4","value":"interfaceID"},"id":6902,"name":"Identifier","src":"1197:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6838,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":6903,"name":"Identifier","src":"1212:17:19"}],"id":6904,"name":"BinaryOperation","src":"1197:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8747,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10210,"type":"contract super TextResolver","value":"super"},"id":6905,"name":"Identifier","src":"1233:5:19"}],"id":6906,"name":"MemberAccess","src":"1233:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6897,"type":"bytes4","value":"interfaceID"},"id":6907,"name":"Identifier","src":"1257:11:19"}],"id":6908,"name":"FunctionCall","src":"1233:36:19"}],"id":6909,"name":"BinaryOperation","src":"1197:72:19"}],"id":6910,"name":"Return","src":"1190:79:19"}],"id":6911,"name":"Block","src":"1180:96:19"}],"id":6912,"name":"FunctionDefinition","src":"1107:169:19"}],"id":6913,"name":"ContractDefinition","src":"56:1222:19"}],"id":6914,"name":"SourceUnit","src":"0:1278:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[8619]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6915,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[8619],"name":"strings","scope":8620},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":8619,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":6920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6916,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":6917,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":6920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6918,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":6919,"name":"VariableDeclaration","src":"2663:9:20"}],"id":6920,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":6960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6921,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":6922,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":6960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6923,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":6924,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":6960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6925,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":6926,"name":"VariableDeclaration","src":"2722:8:20"}],"id":6927,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":6928,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6926,"type":"uint256","value":"len"},"id":6929,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6930,"name":"Literal","src":"2818:2:20"}],"id":6931,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6926,"type":"uint256","value":"len"},"id":6932,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6933,"name":"Literal","src":"2829:2:20"}],"id":6934,"name":"Assignment","src":"2822:9:20"}],"id":6935,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":6936,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6922,"type":"uint256","value":"dest"},"id":6937,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6938,"name":"Literal","src":"2933:2:20"}],"id":6939,"name":"Assignment","src":"2925:10:20"}],"id":6940,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"src"},"id":6941,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6942,"name":"Literal","src":"2956:2:20"}],"id":6943,"name":"Assignment","src":"2949:9:20"}],"id":6944,"name":"ExpressionStatement","src":"2949:9:20"}],"id":6945,"name":"Block","src":"2833:136:20"}],"id":6946,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[6948]},"children":[{"attributes":{"constant":false,"name":"mask","scope":6959,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6947,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":6948,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":6949,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6950,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6926,"type":"uint256","value":"len"},"id":6951,"name":"Identifier","src":"3036:3:20"}],"id":6952,"name":"BinaryOperation","src":"3031:8:20"}],"id":6953,"name":"TupleExpression","src":"3030:10:20"}],"id":6954,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6955,"name":"Literal","src":"3043:1:20"}],"id":6956,"name":"BinaryOperation","src":"3023:21:20"}],"id":6957,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":6948,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":6948,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":6958,"name":"InlineAssembly","src":"3054:173:20"}],"id":6959,"name":"Block","src":"2745:488:20"}],"id":6960,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6980,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6961,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":6962,"name":"VariableDeclaration","src":"3450:18:20"}],"id":6963,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":6980,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":6964,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":6965,"name":"VariableDeclaration","src":"3493:12:20"}],"id":6966,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[6968],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":6979,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6967,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":6968,"name":"VariableDeclaration","src":"3517:8:20"}],"id":6969,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":6968,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":6962,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":6970,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":6966},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6920,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":6971,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6972,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6962,"type":"string memory","value":"self"},"id":6973,"name":"Identifier","src":"3618:4:20"}],"id":6974,"name":"FunctionCall","src":"3612:11:20"}],"id":6975,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6968,"type":"uint256","value":"ptr"},"id":6976,"name":"Identifier","src":"3632:3:20"}],"id":6977,"name":"FunctionCall","src":"3606:30:20"}],"id":6978,"name":"Return","src":"3599:37:20"}],"id":6979,"name":"Block","src":"3507:136:20"}],"id":6980,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6981,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":6982,"name":"VariableDeclaration","src":"3852:12:20"}],"id":6983,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7106,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6984,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":6985,"name":"VariableDeclaration","src":"3889:4:20"}],"id":6986,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[6988],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7105,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6987,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":6988,"name":"VariableDeclaration","src":"3905:8:20"}],"id":6989,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":6990,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6991,"name":"Literal","src":"3935:1:20"}],"id":6992,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":6986},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6993,"name":"Literal","src":"3957:1:20"}],"id":6994,"name":"Return","src":"3950:8:20"}],"id":6995,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6996,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":6997,"name":"Identifier","src":"3977:4:20"}],"id":6998,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":6999,"name":"Literal","src":"3985:34:20"}],"id":7000,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7001,"name":"Literal","src":"4023:1:20"}],"id":7002,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7003,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":7004,"name":"Literal","src":"4047:2:20"}],"id":7005,"name":"Assignment","src":"4040:9:20"}],"id":7006,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7007,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7008,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7009,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7010,"name":"Identifier","src":"4083:4:20"}],"id":7011,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":7012,"name":"Literal","src":"4091:35:20"}],"id":7013,"name":"BinaryOperation","src":"4078:48:20"}],"id":7014,"name":"FunctionCall","src":"4070:57:20"}],"id":7015,"name":"Assignment","src":"4063:64:20"}],"id":7016,"name":"ExpressionStatement","src":"4063:64:20"}],"id":7017,"name":"Block","src":"4026:112:20"}],"id":7018,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7019,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7020,"name":"Identifier","src":"4156:4:20"}],"id":7021,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":7022,"name":"Literal","src":"4164:18:20"}],"id":7023,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7024,"name":"Literal","src":"4186:1:20"}],"id":7025,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7026,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7027,"name":"Literal","src":"4210:1:20"}],"id":7028,"name":"Assignment","src":"4203:8:20"}],"id":7029,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7030,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7031,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7032,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7033,"name":"Identifier","src":"4245:4:20"}],"id":7034,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":7035,"name":"Literal","src":"4253:19:20"}],"id":7036,"name":"BinaryOperation","src":"4240:32:20"}],"id":7037,"name":"FunctionCall","src":"4232:41:20"}],"id":7038,"name":"Assignment","src":"4225:48:20"}],"id":7039,"name":"ExpressionStatement","src":"4225:48:20"}],"id":7040,"name":"Block","src":"4189:95:20"}],"id":7041,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7042,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7043,"name":"Identifier","src":"4302:4:20"}],"id":7044,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":7045,"name":"Literal","src":"4310:10:20"}],"id":7046,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7047,"name":"Literal","src":"4324:1:20"}],"id":7048,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7049,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7050,"name":"Literal","src":"4348:1:20"}],"id":7051,"name":"Assignment","src":"4341:8:20"}],"id":7052,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7053,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7054,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7055,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7056,"name":"Identifier","src":"4383:4:20"}],"id":7057,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":7058,"name":"Literal","src":"4391:11:20"}],"id":7059,"name":"BinaryOperation","src":"4378:24:20"}],"id":7060,"name":"FunctionCall","src":"4370:33:20"}],"id":7061,"name":"Assignment","src":"4363:40:20"}],"id":7062,"name":"ExpressionStatement","src":"4363:40:20"}],"id":7063,"name":"Block","src":"4327:87:20"}],"id":7064,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7065,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7066,"name":"Identifier","src":"4432:4:20"}],"id":7067,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":7068,"name":"Literal","src":"4440:6:20"}],"id":7069,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7070,"name":"Literal","src":"4450:1:20"}],"id":7071,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7072,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7073,"name":"Literal","src":"4474:1:20"}],"id":7074,"name":"Assignment","src":"4467:8:20"}],"id":7075,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7076,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7077,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7078,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7079,"name":"Identifier","src":"4509:4:20"}],"id":7080,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":7081,"name":"Literal","src":"4517:7:20"}],"id":7082,"name":"BinaryOperation","src":"4504:20:20"}],"id":7083,"name":"FunctionCall","src":"4496:29:20"}],"id":7084,"name":"Assignment","src":"4489:36:20"}],"id":7085,"name":"ExpressionStatement","src":"4489:36:20"}],"id":7086,"name":"Block","src":"4453:83:20"}],"id":7087,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7088,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6982,"type":"bytes32","value":"self"},"id":7089,"name":"Identifier","src":"4554:4:20"}],"id":7090,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7091,"name":"Literal","src":"4562:4:20"}],"id":7092,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7093,"name":"Literal","src":"4570:1:20"}],"id":7094,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7095,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7096,"name":"Literal","src":"4594:1:20"}],"id":7097,"name":"Assignment","src":"4587:8:20"}],"id":7098,"name":"ExpressionStatement","src":"4587:8:20"}],"id":7099,"name":"Block","src":"4573:33:20"}],"id":7100,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":6986},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7101,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6988,"type":"uint256","value":"ret"},"id":7102,"name":"Identifier","src":"4627:3:20"}],"id":7103,"name":"BinaryOperation","src":"4622:8:20"}],"id":7104,"name":"Return","src":"4615:15:20"}],"id":7105,"name":"Block","src":"3895:742:20"}],"id":7106,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7123,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7107,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":7108,"name":"VariableDeclaration","src":"4963:12:20"}],"id":7109,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7123,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7110,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":7111,"name":"VariableDeclaration","src":"5000:16:20"}],"id":7112,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":7108,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":7111,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":7113,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7111,"type":"struct strings.slice memory","value":"ret"},"id":7114,"name":"Identifier","src":"5286:3:20"}],"id":7116,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[7106,7256],"referencedDeclaration":7106,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":7117,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7108,"type":"bytes32","value":"self"},"id":7118,"name":"Identifier","src":"5301:4:20"}],"id":7119,"name":"FunctionCall","src":"5297:9:20"}],"id":7120,"name":"Assignment","src":"5286:20:20"}],"id":7121,"name":"ExpressionStatement","src":"5286:20:20"}],"id":7122,"name":"Block","src":"5018:295:20"}],"id":7123,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7138,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7124,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":7125,"name":"VariableDeclaration","src":"5528:17:20"}],"id":7126,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7138,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7127,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":7128,"name":"VariableDeclaration","src":"5570:12:20"}],"id":7129,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":7129},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6920,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7130,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7125,"type":"struct strings.slice memory","value":"self"},"id":7131,"name":"Identifier","src":"5607:4:20"}],"id":7132,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7125,"type":"struct strings.slice memory","value":"self"},"id":7133,"name":"Identifier","src":"5618:4:20"}],"id":7134,"name":"MemberAccess","src":"5618:9:20"}],"id":7135,"name":"FunctionCall","src":"5601:27:20"}],"id":7136,"name":"Return","src":"5594:34:20"}],"id":7137,"name":"Block","src":"5584:51:20"}],"id":7138,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7168,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7139,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":7140,"name":"VariableDeclaration","src":"5825:17:20"}],"id":7141,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7168,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7142,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":7143,"name":"VariableDeclaration","src":"5867:13:20"}],"id":7144,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[7146]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7167,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7145,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":7146,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7147,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":7148,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7140,"type":"struct strings.slice memory","value":"self"},"id":7149,"name":"Identifier","src":"5923:4:20"}],"id":7150,"name":"MemberAccess","src":"5923:9:20"}],"id":7151,"name":"FunctionCall","src":"5912:21:20"}],"id":7152,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[7154],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":7167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7153,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":7154,"name":"VariableDeclaration","src":"5943:11:20"}],"id":7155,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":7154,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":7146,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":7156,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7157,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7154,"type":"uint256","value":"retptr"},"id":7158,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7140,"type":"struct strings.slice memory","value":"self"},"id":7159,"name":"Identifier","src":"6024:4:20"}],"id":7160,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7140,"type":"struct strings.slice memory","value":"self"},"id":7161,"name":"Identifier","src":"6035:4:20"}],"id":7162,"name":"MemberAccess","src":"6035:9:20"}],"id":7163,"name":"FunctionCall","src":"6009:36:20"}],"id":7164,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":7144},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7146,"type":"string memory","value":"ret"},"id":7165,"name":"Identifier","src":"6062:3:20"}],"id":7166,"name":"Return","src":"6055:10:20"}],"id":7167,"name":"Block","src":"5882:190:20"}],"id":7168,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7256,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7169,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":7170,"name":"VariableDeclaration","src":"6476:17:20"}],"id":7171,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":7256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7172,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":7173,"name":"VariableDeclaration","src":"6518:6:20"}],"id":7174,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[7176]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7175,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":7176,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7170,"type":"struct strings.slice memory","value":"self"},"id":7177,"name":"Identifier","src":"6622:4:20"}],"id":7178,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":7179,"name":"Literal","src":"6634:2:20"}],"id":7180,"name":"BinaryOperation","src":"6622:14:20"}],"id":7181,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[7183]},"children":[{"attributes":{"constant":false,"name":"end","scope":7255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7182,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":7183,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7184,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7170,"type":"struct strings.slice memory","value":"self"},"id":7185,"name":"Identifier","src":"6663:4:20"}],"id":7186,"name":"MemberAccess","src":"6663:9:20"}],"id":7187,"name":"BinaryOperation","src":"6657:15:20"}],"id":7188,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7173,"type":"uint256","value":"l"},"id":7189,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7190,"name":"Literal","src":"6691:1:20"}],"id":7191,"name":"Assignment","src":"6687:5:20"}],"id":7192,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7193,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7183,"type":"uint256","value":"end"},"id":7194,"name":"Identifier","src":"6700:3:20"}],"id":7195,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7173,"type":"uint256","value":"l"},"id":7196,"name":"Identifier","src":"6705:1:20"}],"id":7197,"name":"UnaryOperation","src":"6705:3:20"}],"id":7198,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[7200],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7253,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7199,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":7200,"name":"VariableDeclaration","src":"6724:7:20"}],"id":7201,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7200,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":7176,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":7202,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7203,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7204,"name":"Literal","src":"6805:4:20"}],"id":7205,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7206,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7207,"name":"Literal","src":"6836:1:20"}],"id":7208,"name":"Assignment","src":"6829:8:20"}],"id":7209,"name":"ExpressionStatement","src":"6829:8:20"}],"id":7210,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7211,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7212,"name":"Literal","src":"6866:4:20"}],"id":7213,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7214,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7215,"name":"Literal","src":"6897:1:20"}],"id":7216,"name":"Assignment","src":"6890:8:20"}],"id":7217,"name":"ExpressionStatement","src":"6890:8:20"}],"id":7218,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7219,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7220,"name":"Literal","src":"6927:4:20"}],"id":7221,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7222,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7223,"name":"Literal","src":"6958:1:20"}],"id":7224,"name":"Assignment","src":"6951:8:20"}],"id":7225,"name":"ExpressionStatement","src":"6951:8:20"}],"id":7226,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7227,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":7228,"name":"Literal","src":"6988:4:20"}],"id":7229,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7230,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7231,"name":"Literal","src":"7019:1:20"}],"id":7232,"name":"Assignment","src":"7012:8:20"}],"id":7233,"name":"ExpressionStatement","src":"7012:8:20"}],"id":7234,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"uint8","value":"b"},"id":7235,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":7236,"name":"Literal","src":"7049:4:20"}],"id":7237,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7238,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7239,"name":"Literal","src":"7080:1:20"}],"id":7240,"name":"Assignment","src":"7073:8:20"}],"id":7241,"name":"ExpressionStatement","src":"7073:8:20"}],"id":7242,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7176,"type":"uint256","value":"ptr"},"id":7243,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":7244,"name":"Literal","src":"7127:1:20"}],"id":7245,"name":"Assignment","src":"7120:8:20"}],"id":7246,"name":"ExpressionStatement","src":"7120:8:20"}],"id":7247,"name":"Block","src":"7102:41:20"}],"id":7248,"name":"IfStatement","src":"7041:102:20"}],"id":7249,"name":"IfStatement","src":"6980:163:20"}],"id":7250,"name":"IfStatement","src":"6919:224:20"}],"id":7251,"name":"IfStatement","src":"6858:285:20"}],"id":7252,"name":"IfStatement","src":"6797:346:20"}],"id":7253,"name":"Block","src":"6710:443:20"}],"id":7254,"name":"ForStatement","src":"6682:471:20"}],"id":7255,"name":"Block","src":"6526:633:20"}],"id":7256,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7269,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7257,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":7258,"name":"VariableDeclaration","src":"7367:17:20"}],"id":7259,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7269,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7260,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":7261,"name":"VariableDeclaration","src":"7409:4:20"}],"id":7262,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":7262},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7258,"type":"struct strings.slice memory","value":"self"},"id":7263,"name":"Identifier","src":"7432:4:20"}],"id":7264,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7265,"name":"Literal","src":"7445:1:20"}],"id":7266,"name":"BinaryOperation","src":"7432:14:20"}],"id":7267,"name":"Return","src":"7425:21:20"}],"id":7268,"name":"Block","src":"7415:38:20"}],"id":7269,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7398,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7270,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":7271,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":7398,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7272,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":7273,"name":"VariableDeclaration","src":"7917:18:20"}],"id":7274,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7398,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":7275,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":7276,"name":"VariableDeclaration","src":"7960:3:20"}],"id":7277,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[7279]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":7397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7278,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":7279,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7271,"type":"struct strings.slice memory","value":"self"},"id":7280,"name":"Identifier","src":"7991:4:20"}],"id":7281,"name":"MemberAccess","src":"7991:9:20"}],"id":7282,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7273,"type":"struct strings.slice memory","value":"other"},"id":7283,"name":"Identifier","src":"8014:5:20"}],"id":7284,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7271,"type":"struct strings.slice memory","value":"self"},"id":7285,"name":"Identifier","src":"8027:4:20"}],"id":7286,"name":"MemberAccess","src":"8027:9:20"}],"id":7287,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"shortest"},"id":7288,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7273,"type":"struct strings.slice memory","value":"other"},"id":7289,"name":"Identifier","src":"8061:5:20"}],"id":7290,"name":"MemberAccess","src":"8061:10:20"}],"id":7291,"name":"Assignment","src":"8050:21:20"}],"id":7292,"name":"ExpressionStatement","src":"8050:21:20"}],"id":7293,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[7295]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7294,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":7295,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7271,"type":"struct strings.slice memory","value":"self"},"id":7296,"name":"Identifier","src":"8097:4:20"}],"id":7297,"name":"MemberAccess","src":"8097:9:20"}],"id":7298,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[7300]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":7397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7299,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":7300,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7273,"type":"struct strings.slice memory","value":"other"},"id":7301,"name":"Identifier","src":"8132:5:20"}],"id":7302,"name":"MemberAccess","src":"8132:10:20"}],"id":7303,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[7305]},"children":[{"attributes":{"constant":false,"name":"idx","scope":7386,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7304,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":7305,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7306,"name":"Literal","src":"8168:1:20"}],"id":7307,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"uint256","value":"idx"},"id":7308,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"shortest"},"id":7309,"name":"Identifier","src":"8177:8:20"}],"id":7310,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"uint256","value":"idx"},"id":7311,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7312,"name":"Literal","src":"8194:2:20"}],"id":7313,"name":"Assignment","src":"8187:9:20"}],"id":7314,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[7316],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":7385,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7315,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":7316,"name":"VariableDeclaration","src":"8212:6:20"}],"id":7317,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[7319],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7385,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7318,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":7319,"name":"VariableDeclaration","src":"8232:6:20"}],"id":7320,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":7316,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":7295,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":7319,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":7300,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":7321,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7316,"type":"uint256","value":"a"},"id":7322,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7319,"type":"uint256","value":"b"},"id":7323,"name":"Identifier","src":"8371:1:20"}],"id":7324,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[7326]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7375,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7325,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":7326,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7327,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7328,"name":"Literal","src":"8477:1:20"}],"id":7329,"name":"UnaryOperation","src":"8476:2:20"}],"id":7330,"name":"FunctionCall","src":"8468:11:20"}],"id":7331,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"shortest"},"id":7332,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7333,"name":"Literal","src":"8525:2:20"}],"id":7334,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7326,"type":"uint256","value":"mask"},"id":7335,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7336,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7337,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7338,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"shortest"},"id":7339,"name":"Identifier","src":"8576:8:20"}],"id":7340,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"uint256","value":"idx"},"id":7341,"name":"Identifier","src":"8587:3:20"}],"id":7342,"name":"BinaryOperation","src":"8571:19:20"}],"id":7343,"name":"TupleExpression","src":"8570:21:20"}],"id":7344,"name":"BinaryOperation","src":"8566:25:20"}],"id":7345,"name":"TupleExpression","src":"8565:27:20"}],"id":7346,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7347,"name":"Literal","src":"8595:1:20"}],"id":7348,"name":"BinaryOperation","src":"8560:36:20"}],"id":7349,"name":"TupleExpression","src":"8559:38:20"}],"id":7350,"name":"UnaryOperation","src":"8558:39:20"}],"id":7351,"name":"Assignment","src":"8551:46:20"}],"id":7352,"name":"ExpressionStatement","src":"8551:46:20"}],"id":7353,"name":"Block","src":"8529:87:20"}],"id":7354,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[7356]},"children":[{"attributes":{"constant":false,"name":"diff","scope":7375,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7355,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":7356,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7316,"type":"uint256","value":"a"},"id":7357,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7326,"type":"uint256","value":"mask"},"id":7358,"name":"Identifier","src":"8653:4:20"}],"id":7359,"name":"BinaryOperation","src":"8649:8:20"}],"id":7360,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7319,"type":"uint256","value":"b"},"id":7361,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7326,"type":"uint256","value":"mask"},"id":7362,"name":"Identifier","src":"8666:4:20"}],"id":7363,"name":"BinaryOperation","src":"8662:8:20"}],"id":7364,"name":"TupleExpression","src":"8661:10:20"}],"id":7365,"name":"BinaryOperation","src":"8648:23:20"}],"id":7366,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7356,"type":"uint256","value":"diff"},"id":7367,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7368,"name":"Literal","src":"8701:1:20"}],"id":7369,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":7277},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7370,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7356,"type":"uint256","value":"diff"},"id":7371,"name":"Identifier","src":"8735:4:20"}],"id":7372,"name":"FunctionCall","src":"8731:9:20"}],"id":7373,"name":"Return","src":"8724:16:20"}],"id":7374,"name":"IfStatement","src":"8689:51:20"}],"id":7375,"name":"Block","src":"8374:381:20"}],"id":7376,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7295,"type":"uint256","value":"selfptr"},"id":7377,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7378,"name":"Literal","src":"8779:2:20"}],"id":7379,"name":"Assignment","src":"8768:13:20"}],"id":7380,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7300,"type":"uint256","value":"otherptr"},"id":7381,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7382,"name":"Literal","src":"8807:2:20"}],"id":7383,"name":"Assignment","src":"8795:14:20"}],"id":7384,"name":"ExpressionStatement","src":"8795:14:20"}],"id":7385,"name":"Block","src":"8198:622:20"}],"id":7386,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":7277},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7387,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7271,"type":"struct strings.slice memory","value":"self"},"id":7388,"name":"Identifier","src":"8840:4:20"}],"id":7389,"name":"MemberAccess","src":"8840:9:20"}],"id":7390,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7391,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7273,"type":"struct strings.slice memory","value":"other"},"id":7392,"name":"Identifier","src":"8857:5:20"}],"id":7393,"name":"MemberAccess","src":"8857:10:20"}],"id":7394,"name":"FunctionCall","src":"8853:15:20"}],"id":7395,"name":"BinaryOperation","src":"8836:32:20"}],"id":7396,"name":"Return","src":"8829:39:20"}],"id":7397,"name":"Block","src":"7965:910:20"}],"id":7398,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7415,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7399,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":7400,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":7415,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7401,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":7402,"name":"VariableDeclaration","src":"9154:18:20"}],"id":7403,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7415,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7404,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":7405,"name":"VariableDeclaration","src":"9197:4:20"}],"id":7406,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":7406},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7398,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":7407,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7400,"type":"struct strings.slice memory","value":"self"},"id":7408,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"struct strings.slice memory","value":"other"},"id":7409,"name":"Identifier","src":"9234:5:20"}],"id":7410,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7411,"name":"Literal","src":"9244:1:20"}],"id":7412,"name":"BinaryOperation","src":"9220:25:20"}],"id":7413,"name":"Return","src":"9213:32:20"}],"id":7414,"name":"Block","src":"9203:49:20"}],"id":7415,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7533,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7416,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":7417,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":7533,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7418,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":7419,"name":"VariableDeclaration","src":"9582:17:20"}],"id":7420,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7533,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7421,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":7422,"name":"VariableDeclaration","src":"9624:12:20"}],"id":7423,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7424,"name":"Identifier","src":"9648:4:20"}],"id":7426,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7427,"name":"Identifier","src":"9660:4:20"}],"id":7428,"name":"MemberAccess","src":"9660:9:20"}],"id":7429,"name":"Assignment","src":"9648:21:20"}],"id":7430,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7431,"name":"Identifier","src":"9684:4:20"}],"id":7432,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7433,"name":"Literal","src":"9697:1:20"}],"id":7434,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7435,"name":"Identifier","src":"9714:4:20"}],"id":7437,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7438,"name":"Literal","src":"9726:1:20"}],"id":7439,"name":"Assignment","src":"9714:13:20"}],"id":7440,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":7423},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7441,"name":"Identifier","src":"9748:4:20"}],"id":7442,"name":"Return","src":"9741:11:20"}],"id":7443,"name":"Block","src":"9700:63:20"}],"id":7444,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[7446],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":7532,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7445,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":7446,"name":"VariableDeclaration","src":"9773:6:20"}],"id":7447,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[7449],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7532,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7448,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":7449,"name":"VariableDeclaration","src":"9789:6:20"}],"id":7450,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7449,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":7417,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":7451,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7449,"type":"uint256","value":"b"},"id":7452,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7453,"name":"Literal","src":"9949:4:20"}],"id":7454,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7455,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7456,"name":"Literal","src":"9973:1:20"}],"id":7457,"name":"Assignment","src":"9969:5:20"}],"id":7458,"name":"ExpressionStatement","src":"9969:5:20"}],"id":7459,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7449,"type":"uint256","value":"b"},"id":7460,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7461,"name":"Literal","src":"9999:4:20"}],"id":7462,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7463,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7464,"name":"Literal","src":"10023:1:20"}],"id":7465,"name":"Assignment","src":"10019:5:20"}],"id":7466,"name":"ExpressionStatement","src":"10019:5:20"}],"id":7467,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7449,"type":"uint256","value":"b"},"id":7468,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7469,"name":"Literal","src":"10049:4:20"}],"id":7470,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7471,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7472,"name":"Literal","src":"10073:1:20"}],"id":7473,"name":"Assignment","src":"10069:5:20"}],"id":7474,"name":"ExpressionStatement","src":"10069:5:20"}],"id":7475,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7476,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7477,"name":"Literal","src":"10109:1:20"}],"id":7478,"name":"Assignment","src":"10105:5:20"}],"id":7479,"name":"ExpressionStatement","src":"10105:5:20"}],"id":7480,"name":"Block","src":"10091:30:20"}],"id":7481,"name":"IfStatement","src":"10041:80:20"}],"id":7482,"name":"IfStatement","src":"9991:130:20"}],"id":7483,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7484,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7485,"name":"Identifier","src":"10181:4:20"}],"id":7486,"name":"MemberAccess","src":"10181:9:20"}],"id":7487,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7488,"name":"Identifier","src":"10206:4:20"}],"id":7490,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7491,"name":"Identifier","src":"10218:4:20"}],"id":7492,"name":"MemberAccess","src":"10218:9:20"}],"id":7493,"name":"Assignment","src":"10206:21:20"}],"id":7494,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7495,"name":"Identifier","src":"10241:4:20"}],"id":7497,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7498,"name":"Identifier","src":"10254:4:20"}],"id":7499,"name":"MemberAccess","src":"10254:9:20"}],"id":7500,"name":"Assignment","src":"10241:22:20"}],"id":7501,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7502,"name":"Identifier","src":"10277:4:20"}],"id":7504,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7505,"name":"Literal","src":"10289:1:20"}],"id":7506,"name":"Assignment","src":"10277:13:20"}],"id":7507,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":7423},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7508,"name":"Identifier","src":"10311:4:20"}],"id":7509,"name":"Return","src":"10304:11:20"}],"id":7510,"name":"Block","src":"10192:134:20"}],"id":7511,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7512,"name":"Identifier","src":"10336:4:20"}],"id":7514,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7515,"name":"Identifier","src":"10349:1:20"}],"id":7516,"name":"Assignment","src":"10336:14:20"}],"id":7517,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"struct strings.slice memory","value":"self"},"id":7518,"name":"Identifier","src":"10360:4:20"}],"id":7520,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7521,"name":"Identifier","src":"10373:1:20"}],"id":7522,"name":"Assignment","src":"10360:14:20"}],"id":7523,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7524,"name":"Identifier","src":"10384:4:20"}],"id":7526,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"uint256","value":"l"},"id":7527,"name":"Identifier","src":"10396:1:20"}],"id":7528,"name":"Assignment","src":"10384:13:20"}],"id":7529,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":7423},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7419,"type":"struct strings.slice memory","value":"rune"},"id":7530,"name":"Identifier","src":"10414:4:20"}],"id":7531,"name":"Return","src":"10407:11:20"}],"id":7532,"name":"Block","src":"9638:787:20"}],"id":7533,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7546,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7534,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":7535,"name":"VariableDeclaration","src":"10683:17:20"}],"id":7536,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7546,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7537,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":7538,"name":"VariableDeclaration","src":"10725:16:20"}],"id":7539,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[7533,7546],"referencedDeclaration":7533,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":7540,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7535,"type":"struct strings.slice memory","value":"self"},"id":7541,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7538,"type":"struct strings.slice memory","value":"ret"},"id":7542,"name":"Identifier","src":"10768:3:20"}],"id":7543,"name":"FunctionCall","src":"10753:19:20"}],"id":7544,"name":"ExpressionStatement","src":"10753:19:20"}],"id":7545,"name":"Block","src":"10743:36:20"}],"id":7546,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7693,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7547,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":7548,"name":"VariableDeclaration","src":"10988:17:20"}],"id":7549,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7693,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7550,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":7551,"name":"VariableDeclaration","src":"11030:8:20"}],"id":7552,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7548,"type":"struct strings.slice memory","value":"self"},"id":7553,"name":"Identifier","src":"11054:4:20"}],"id":7554,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7555,"name":"Literal","src":"11067:1:20"}],"id":7556,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":7552},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7557,"name":"Literal","src":"11091:1:20"}],"id":7558,"name":"Return","src":"11084:8:20"}],"id":7559,"name":"Block","src":"11070:33:20"}],"id":7560,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[7562],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7561,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":7562,"name":"VariableDeclaration","src":"11113:9:20"}],"id":7563,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[7565],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7564,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":7565,"name":"VariableDeclaration","src":"11132:11:20"}],"id":7566,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[7568]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7567,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":7568,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7569,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":7570,"name":"Literal","src":"11173:3:20"}],"id":7571,"name":"BinaryOperation","src":"11168:8:20"}],"id":7572,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":7562,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":7548,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":7573,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[7575]},"children":[{"attributes":{"constant":false,"name":"b","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7574,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":7575,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7562,"type":"uint256","value":"word"},"id":7576,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7568,"type":"uint256","value":"divisor"},"id":7577,"name":"Identifier","src":"11303:7:20"}],"id":7578,"name":"BinaryOperation","src":"11296:14:20"}],"id":7579,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7580,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7581,"name":"Literal","src":"11328:4:20"}],"id":7582,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7583,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7584,"name":"Identifier","src":"11354:1:20"}],"id":7585,"name":"Assignment","src":"11348:7:20"}],"id":7586,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7587,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7588,"name":"Literal","src":"11378:1:20"}],"id":7589,"name":"Assignment","src":"11369:10:20"}],"id":7590,"name":"ExpressionStatement","src":"11369:10:20"}],"id":7591,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7592,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7593,"name":"Literal","src":"11404:4:20"}],"id":7594,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7595,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7596,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":7597,"name":"Literal","src":"11434:4:20"}],"id":7598,"name":"BinaryOperation","src":"11430:8:20"}],"id":7599,"name":"Assignment","src":"11424:14:20"}],"id":7600,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7601,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7602,"name":"Literal","src":"11461:1:20"}],"id":7603,"name":"Assignment","src":"11452:10:20"}],"id":7604,"name":"ExpressionStatement","src":"11452:10:20"}],"id":7605,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7606,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7607,"name":"Literal","src":"11487:4:20"}],"id":7608,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7609,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7610,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":7611,"name":"Literal","src":"11517:4:20"}],"id":7612,"name":"BinaryOperation","src":"11513:8:20"}],"id":7613,"name":"Assignment","src":"11507:14:20"}],"id":7614,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7615,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7616,"name":"Literal","src":"11544:1:20"}],"id":7617,"name":"Assignment","src":"11535:10:20"}],"id":7618,"name":"ExpressionStatement","src":"11535:10:20"}],"id":7619,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7620,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7621,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":7622,"name":"Literal","src":"11586:4:20"}],"id":7623,"name":"BinaryOperation","src":"11582:8:20"}],"id":7624,"name":"Assignment","src":"11576:14:20"}],"id":7625,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7626,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7627,"name":"Literal","src":"11613:1:20"}],"id":7628,"name":"Assignment","src":"11604:10:20"}],"id":7629,"name":"ExpressionStatement","src":"11604:10:20"}],"id":7630,"name":"Block","src":"11562:63:20"}],"id":7631,"name":"IfStatement","src":"11479:146:20"}],"id":7632,"name":"IfStatement","src":"11396:229:20"}],"id":7633,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7634,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7548,"type":"struct strings.slice memory","value":"self"},"id":7635,"name":"Identifier","src":"11690:4:20"}],"id":7636,"name":"MemberAccess","src":"11690:9:20"}],"id":7637,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":7552},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7638,"name":"Literal","src":"11722:1:20"}],"id":7639,"name":"Return","src":"11715:8:20"}],"id":7640,"name":"Block","src":"11701:33:20"}],"id":7641,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[7643]},"children":[{"attributes":{"constant":false,"name":"i","scope":7689,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7642,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":7643,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7644,"name":"Literal","src":"11758:1:20"}],"id":7645,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7643,"type":"uint256","value":"i"},"id":7646,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7565,"type":"uint256","value":"length"},"id":7647,"name":"Identifier","src":"11765:6:20"}],"id":7648,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7643,"type":"uint256","value":"i"},"id":7649,"name":"Identifier","src":"11773:1:20"}],"id":7650,"name":"UnaryOperation","src":"11773:3:20"}],"id":7651,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7568,"type":"uint256","value":"divisor"},"id":7652,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7568,"type":"uint256","value":"divisor"},"id":7653,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7654,"name":"Literal","src":"11812:3:20"}],"id":7655,"name":"BinaryOperation","src":"11802:13:20"}],"id":7656,"name":"Assignment","src":"11792:23:20"}],"id":7657,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7658,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7562,"type":"uint256","value":"word"},"id":7659,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7568,"type":"uint256","value":"divisor"},"id":7660,"name":"Identifier","src":"11841:7:20"}],"id":7661,"name":"BinaryOperation","src":"11834:14:20"}],"id":7662,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":7663,"name":"Literal","src":"11852:4:20"}],"id":7664,"name":"BinaryOperation","src":"11833:23:20"}],"id":7665,"name":"Assignment","src":"11829:27:20"}],"id":7666,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7667,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":7668,"name":"Literal","src":"11878:4:20"}],"id":7669,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7670,"name":"Literal","src":"11886:4:20"}],"id":7671,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":7552},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7672,"name":"Literal","src":"11959:1:20"}],"id":7673,"name":"Return","src":"11952:8:20"}],"id":7674,"name":"Block","src":"11892:83:20"}],"id":7675,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7676,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7677,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7678,"name":"Literal","src":"12001:2:20"}],"id":7679,"name":"BinaryOperation","src":"11995:8:20"}],"id":7680,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7575,"type":"uint256","value":"b"},"id":7681,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":7682,"name":"Literal","src":"12012:4:20"}],"id":7683,"name":"BinaryOperation","src":"12008:8:20"}],"id":7684,"name":"TupleExpression","src":"12007:10:20"}],"id":7685,"name":"BinaryOperation","src":"11994:23:20"}],"id":7686,"name":"Assignment","src":"11988:29:20"}],"id":7687,"name":"ExpressionStatement","src":"11988:29:20"}],"id":7688,"name":"Block","src":"11778:250:20"}],"id":7689,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":7552},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7551,"type":"uint256","value":"ret"},"id":7690,"name":"Identifier","src":"12045:3:20"}],"id":7691,"name":"Return","src":"12038:10:20"}],"id":7692,"name":"Block","src":"11040:1015:20"}],"id":7693,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7702,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7694,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":7695,"name":"VariableDeclaration","src":"12222:17:20"}],"id":7696,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7702,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7697,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":7698,"name":"VariableDeclaration","src":"12264:11:20"}],"id":7699,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":7698,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":7695,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":7695,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":7700,"name":"InlineAssembly","src":"12287:84:20"}],"id":7701,"name":"Block","src":"12277:100:20"}],"id":7702,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7736,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7703,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":7704,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7736,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7705,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":7706,"name":"VariableDeclaration","src":"12665:19:20"}],"id":7707,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7736,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7708,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":7709,"name":"VariableDeclaration","src":"12709:4:20"}],"id":7710,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7704,"type":"struct strings.slice memory","value":"self"},"id":7711,"name":"Identifier","src":"12729:4:20"}],"id":7712,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7706,"type":"struct strings.slice memory","value":"needle"},"id":7713,"name":"Identifier","src":"12741:6:20"}],"id":7714,"name":"MemberAccess","src":"12741:11:20"}],"id":7715,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":7710},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7716,"name":"Literal","src":"12775:5:20"}],"id":7717,"name":"Return","src":"12768:12:20"}],"id":7718,"name":"Block","src":"12754:37:20"}],"id":7719,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7704,"type":"struct strings.slice memory","value":"self"},"id":7720,"name":"Identifier","src":"12805:4:20"}],"id":7721,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7706,"type":"struct strings.slice memory","value":"needle"},"id":7722,"name":"Identifier","src":"12818:6:20"}],"id":7723,"name":"MemberAccess","src":"12818:11:20"}],"id":7724,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":7710},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7725,"name":"Literal","src":"12852:4:20"}],"id":7726,"name":"Return","src":"12845:11:20"}],"id":7727,"name":"Block","src":"12831:36:20"}],"id":7728,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[7730],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":7735,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7729,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":7730,"name":"VariableDeclaration","src":"12877:10:20"}],"id":7731,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":7706,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":7704,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":7730,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":7706,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7732,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":7710},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7730,"type":"bool","value":"equal"},"id":7733,"name":"Identifier","src":"13159:5:20"}],"id":7734,"name":"Return","src":"13152:12:20"}],"id":7735,"name":"Block","src":"12715:456:20"}],"id":7736,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7737,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":7738,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7739,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":7740,"name":"VariableDeclaration","src":"13478:19:20"}],"id":7741,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7742,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":7743,"name":"VariableDeclaration","src":"13522:12:20"}],"id":7744,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7745,"name":"Identifier","src":"13550:4:20"}],"id":7746,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"struct strings.slice memory","value":"needle"},"id":7747,"name":"Identifier","src":"13562:6:20"}],"id":7748,"name":"MemberAccess","src":"13562:11:20"}],"id":7749,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":7744},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7750,"name":"Identifier","src":"13596:4:20"}],"id":7751,"name":"Return","src":"13589:11:20"}],"id":7752,"name":"Block","src":"13575:36:20"}],"id":7753,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[7755]},"children":[{"attributes":{"constant":false,"name":"equal","scope":7785,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7754,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":7755,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7756,"name":"Literal","src":"13634:4:20"}],"id":7757,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7758,"name":"Identifier","src":"13652:4:20"}],"id":7759,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"struct strings.slice memory","value":"needle"},"id":7760,"name":"Identifier","src":"13665:6:20"}],"id":7761,"name":"MemberAccess","src":"13665:11:20"}],"id":7762,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":7740,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":7738,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"equal":{"declaration":7755,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}},{"needle":{"declaration":7740,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7763,"name":"InlineAssembly","src":"13692:266:20"}],"id":7764,"name":"Block","src":"13678:290:20"}],"id":7765,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"bool","value":"equal"},"id":7766,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7767,"name":"Identifier","src":"14003:4:20"}],"id":7769,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"struct strings.slice memory","value":"needle"},"id":7770,"name":"Identifier","src":"14016:6:20"}],"id":7771,"name":"MemberAccess","src":"14016:11:20"}],"id":7772,"name":"Assignment","src":"14003:24:20"}],"id":7773,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7774,"name":"Identifier","src":"14041:4:20"}],"id":7776,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"struct strings.slice memory","value":"needle"},"id":7777,"name":"Identifier","src":"14054:6:20"}],"id":7778,"name":"MemberAccess","src":"14054:11:20"}],"id":7779,"name":"Assignment","src":"14041:24:20"}],"id":7780,"name":"ExpressionStatement","src":"14041:24:20"}],"id":7781,"name":"Block","src":"13989:87:20"}],"id":7782,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":7744},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"struct strings.slice memory","value":"self"},"id":7783,"name":"Identifier","src":"14093:4:20"}],"id":7784,"name":"Return","src":"14086:11:20"}],"id":7785,"name":"Block","src":"13536:568:20"}],"id":7786,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7830,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7787,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":7788,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7830,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7789,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":7790,"name":"VariableDeclaration","src":"14391:19:20"}],"id":7791,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7830,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7792,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":7793,"name":"VariableDeclaration","src":"14435:4:20"}],"id":7794,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7795,"name":"Identifier","src":"14455:4:20"}],"id":7796,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7797,"name":"Identifier","src":"14467:6:20"}],"id":7798,"name":"MemberAccess","src":"14467:11:20"}],"id":7799,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7800,"name":"Literal","src":"14501:5:20"}],"id":7801,"name":"Return","src":"14494:12:20"}],"id":7802,"name":"Block","src":"14480:37:20"}],"id":7803,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[7805]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7829,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7804,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":7805,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7806,"name":"Identifier","src":"14542:4:20"}],"id":7807,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7808,"name":"Identifier","src":"14554:4:20"}],"id":7809,"name":"MemberAccess","src":"14554:9:20"}],"id":7810,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7811,"name":"Identifier","src":"14566:6:20"}],"id":7812,"name":"MemberAccess","src":"14566:11:20"}],"id":7813,"name":"BinaryOperation","src":"14542:35:20"}],"id":7814,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7805,"type":"uint256","value":"selfptr"},"id":7815,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7816,"name":"Identifier","src":"14603:6:20"}],"id":7817,"name":"MemberAccess","src":"14603:11:20"}],"id":7818,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7819,"name":"Literal","src":"14637:4:20"}],"id":7820,"name":"Return","src":"14630:11:20"}],"id":7821,"name":"Block","src":"14616:36:20"}],"id":7822,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[7824],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":7829,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7823,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":7824,"name":"VariableDeclaration","src":"14662:10:20"}],"id":7825,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":7790,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":7824,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":7790,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":7805,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7826,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7824,"type":"bool","value":"equal"},"id":7827,"name":"Identifier","src":"14895:5:20"}],"id":7828,"name":"Return","src":"14888:12:20"}],"id":7829,"name":"Block","src":"14441:466:20"}],"id":7830,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7883,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7831,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":7832,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7883,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7833,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":7834,"name":"VariableDeclaration","src":"15205:19:20"}],"id":7835,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7883,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":7836,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":7837,"name":"VariableDeclaration","src":"15249:12:20"}],"id":7838,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7839,"name":"Identifier","src":"15277:4:20"}],"id":7840,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7834,"type":"struct strings.slice memory","value":"needle"},"id":7841,"name":"Identifier","src":"15289:6:20"}],"id":7842,"name":"MemberAccess","src":"15289:11:20"}],"id":7843,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":7838},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7844,"name":"Identifier","src":"15323:4:20"}],"id":7845,"name":"Return","src":"15316:11:20"}],"id":7846,"name":"Block","src":"15302:36:20"}],"id":7847,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[7849]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7882,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7848,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":7849,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7850,"name":"Identifier","src":"15363:4:20"}],"id":7851,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7852,"name":"Identifier","src":"15375:4:20"}],"id":7853,"name":"MemberAccess","src":"15375:9:20"}],"id":7854,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7834,"type":"struct strings.slice memory","value":"needle"},"id":7855,"name":"Identifier","src":"15387:6:20"}],"id":7856,"name":"MemberAccess","src":"15387:11:20"}],"id":7857,"name":"BinaryOperation","src":"15363:35:20"}],"id":7858,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[7860]},"children":[{"attributes":{"constant":false,"name":"equal","scope":7882,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7859,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":7860,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7861,"name":"Literal","src":"15421:4:20"}],"id":7862,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7849,"type":"uint256","value":"selfptr"},"id":7863,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7834,"type":"struct strings.slice memory","value":"needle"},"id":7864,"name":"Identifier","src":"15450:6:20"}],"id":7865,"name":"MemberAccess","src":"15450:11:20"}],"id":7866,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":7834,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":7860,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":7834,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":7849,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7867,"name":"InlineAssembly","src":"15477:212:20"}],"id":7868,"name":"Block","src":"15463:236:20"}],"id":7869,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7860,"type":"bool","value":"equal"},"id":7870,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7871,"name":"Identifier","src":"15734:4:20"}],"id":7873,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7834,"type":"struct strings.slice memory","value":"needle"},"id":7874,"name":"Identifier","src":"15747:6:20"}],"id":7875,"name":"MemberAccess","src":"15747:11:20"}],"id":7876,"name":"Assignment","src":"15734:24:20"}],"id":7877,"name":"ExpressionStatement","src":"15734:24:20"}],"id":7878,"name":"Block","src":"15720:49:20"}],"id":7879,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":7838},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7832,"type":"struct strings.slice memory","value":"self"},"id":7880,"name":"Identifier","src":"15786:4:20"}],"id":7881,"name":"Return","src":"15779:11:20"}],"id":7882,"name":"Block","src":"15263:534:20"}],"id":7883,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7884,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":7885,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7886,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":7887,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7888,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":7889,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7890,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":7891,"name":"VariableDeclaration","src":"16015:14:20"}],"id":7892,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8004,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7893,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":7894,"name":"VariableDeclaration","src":"16053:4:20"}],"id":7895,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[7897]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8003,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7896,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":7897,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7887,"type":"uint256","value":"selfptr"},"id":7898,"name":"Identifier","src":"16080:7:20"}],"id":7899,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[7901],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":8003,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7900,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":7901,"name":"VariableDeclaration","src":"16097:8:20"}],"id":7902,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7903,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":7904,"name":"Identifier","src":"16133:7:20"}],"id":7905,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7906,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7907,"name":"Literal","src":"16173:2:20"}],"id":7908,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[7910]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7962,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7909,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":7910,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7911,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7912,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7913,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7914,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7915,"name":"Identifier","src":"16236:9:20"}],"id":7916,"name":"BinaryOperation","src":"16231:14:20"}],"id":7917,"name":"TupleExpression","src":"16230:16:20"}],"id":7918,"name":"BinaryOperation","src":"16226:20:20"}],"id":7919,"name":"TupleExpression","src":"16225:22:20"}],"id":7920,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7921,"name":"Literal","src":"16250:1:20"}],"id":7922,"name":"BinaryOperation","src":"16220:31:20"}],"id":7923,"name":"TupleExpression","src":"16219:33:20"}],"id":7924,"name":"UnaryOperation","src":"16218:34:20"}],"id":7925,"name":"FunctionCall","src":"16210:43:20"}],"id":7926,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[7928],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":7962,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7927,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":7928,"name":"VariableDeclaration","src":"16272:18:20"}],"id":7929,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":7928,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":7891,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":7910,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":7930,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[7932]},"children":[{"attributes":{"constant":false,"name":"end","scope":7962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7931,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":7932,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7887,"type":"uint256","value":"selfptr"},"id":7933,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":7934,"name":"Identifier","src":"16401:7:20"}],"id":7935,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7936,"name":"Identifier","src":"16411:9:20"}],"id":7937,"name":"BinaryOperation","src":"16391:29:20"}],"id":7938,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[7940],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":7962,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7939,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":7940,"name":"VariableDeclaration","src":"16438:15:20"}],"id":7941,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":7940,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":7897,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":7910,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":7942,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7940,"type":"bytes32","value":"ptrdata"},"id":7943,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7928,"type":"bytes32","value":"needledata"},"id":7944,"name":"Identifier","src":"16552:10:20"}],"id":7945,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7946,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7932,"type":"uint256","value":"end"},"id":7947,"name":"Identifier","src":"16597:3:20"}],"id":7948,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":7895},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7887,"type":"uint256","value":"selfptr"},"id":7949,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":7950,"name":"Identifier","src":"16643:7:20"}],"id":7951,"name":"BinaryOperation","src":"16633:17:20"}],"id":7952,"name":"Return","src":"16626:24:20"}],"id":7953,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7954,"name":"Identifier","src":"16672:3:20"}],"id":7955,"name":"UnaryOperation","src":"16672:5:20"}],"id":7956,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":7940,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":7897,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":7910,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":7957,"name":"InlineAssembly","src":"16699:45:20"}],"id":7958,"name":"Block","src":"16564:198:20"}],"id":7959,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":7895},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7960,"name":"Identifier","src":"16786:3:20"}],"id":7961,"name":"Return","src":"16779:10:20"}],"id":7962,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[7964],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":7995,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7963,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":7964,"name":"VariableDeclaration","src":"16877:12:20"}],"id":7965,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":7964,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":7891,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":7889,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":7966,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7901,"type":"uint256","value":"idx"},"id":7967,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7968,"name":"Literal","src":"16988:1:20"}],"id":7969,"name":"Assignment","src":"16982:7:20"}],"id":7970,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7901,"type":"uint256","value":"idx"},"id":7971,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":7972,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7889,"type":"uint256","value":"needlelen"},"id":7973,"name":"Identifier","src":"17008:9:20"}],"id":7974,"name":"BinaryOperation","src":"16998:19:20"}],"id":7975,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7901,"type":"uint256","value":"idx"},"id":7976,"name":"Identifier","src":"17019:3:20"}],"id":7977,"name":"UnaryOperation","src":"17019:5:20"}],"id":7978,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[7980],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":7993,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7979,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":7980,"name":"VariableDeclaration","src":"17048:16:20"}],"id":7981,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":7980,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":7897,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":7889,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":7982,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"bytes32","value":"hash"},"id":7983,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7980,"type":"bytes32","value":"testHash"},"id":7984,"name":"Identifier","src":"17169:8:20"}],"id":7985,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":7895},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7986,"name":"Identifier","src":"17210:3:20"}],"id":7987,"name":"Return","src":"17203:10:20"}],"id":7988,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7897,"type":"uint256","value":"ptr"},"id":7989,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7990,"name":"Literal","src":"17242:1:20"}],"id":7991,"name":"Assignment","src":"17235:8:20"}],"id":7992,"name":"ExpressionStatement","src":"17235:8:20"}],"id":7993,"name":"Block","src":"17026:236:20"}],"id":7994,"name":"ForStatement","src":"16977:285:20"}],"id":7995,"name":"Block","src":"16810:466:20"}],"id":7996,"name":"IfStatement","src":"16156:1120:20"}],"id":7997,"name":"Block","src":"16142:1144:20"}],"id":7998,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":7895},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7887,"type":"uint256","value":"selfptr"},"id":7999,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7885,"type":"uint256","value":"selflen"},"id":8000,"name":"Identifier","src":"17312:7:20"}],"id":8001,"name":"BinaryOperation","src":"17302:17:20"}],"id":8002,"name":"Return","src":"17295:24:20"}],"id":8003,"name":"Block","src":"16059:1267:20"}],"id":8004,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8005,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":8006,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8007,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":8008,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8009,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":8010,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8011,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":8012,"name":"VariableDeclaration","src":"17541:14:20"}],"id":8013,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8121,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8014,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":8015,"name":"VariableDeclaration","src":"17579:4:20"}],"id":8016,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[8018],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8120,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8017,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":8018,"name":"VariableDeclaration","src":"17595:8:20"}],"id":8019,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8020,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8006,"type":"uint256","value":"selflen"},"id":8021,"name":"Identifier","src":"17631:7:20"}],"id":8022,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8023,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8024,"name":"Literal","src":"17671:2:20"}],"id":8025,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[8027]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8026,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":8027,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8028,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8029,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8030,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8031,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8032,"name":"Identifier","src":"17734:9:20"}],"id":8033,"name":"BinaryOperation","src":"17729:14:20"}],"id":8034,"name":"TupleExpression","src":"17728:16:20"}],"id":8035,"name":"BinaryOperation","src":"17724:20:20"}],"id":8036,"name":"TupleExpression","src":"17723:22:20"}],"id":8037,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8038,"name":"Literal","src":"17748:1:20"}],"id":8039,"name":"BinaryOperation","src":"17718:31:20"}],"id":8040,"name":"TupleExpression","src":"17717:33:20"}],"id":8041,"name":"UnaryOperation","src":"17716:34:20"}],"id":8042,"name":"FunctionCall","src":"17708:43:20"}],"id":8043,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[8045],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8044,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":8045,"name":"VariableDeclaration","src":"17770:18:20"}],"id":8046,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8045,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":8012,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":8027,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8047,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8048,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8049,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8006,"type":"uint256","value":"selflen"},"id":8050,"name":"Identifier","src":"17894:7:20"}],"id":8051,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8052,"name":"Identifier","src":"17904:9:20"}],"id":8053,"name":"BinaryOperation","src":"17884:29:20"}],"id":8054,"name":"Assignment","src":"17878:35:20"}],"id":8055,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[8057],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8056,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":8057,"name":"VariableDeclaration","src":"17931:15:20"}],"id":8058,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8057,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":8018,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":8027,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8059,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8057,"type":"bytes32","value":"ptrdata"},"id":8060,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8045,"type":"bytes32","value":"needledata"},"id":8061,"name":"Identifier","src":"18045:10:20"}],"id":8062,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8063,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8064,"name":"Identifier","src":"18090:7:20"}],"id":8065,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":8016},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8066,"name":"Identifier","src":"18130:7:20"}],"id":8067,"name":"Return","src":"18123:14:20"}],"id":8068,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8069,"name":"Identifier","src":"18159:3:20"}],"id":8070,"name":"UnaryOperation","src":"18159:5:20"}],"id":8071,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8057,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":8018,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":8027,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8072,"name":"InlineAssembly","src":"18186:45:20"}],"id":8073,"name":"Block","src":"18057:192:20"}],"id":8074,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":8016},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8075,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8076,"name":"Identifier","src":"18279:9:20"}],"id":8077,"name":"BinaryOperation","src":"18273:15:20"}],"id":8078,"name":"Return","src":"18266:22:20"}],"id":8079,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[8081],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8114,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8080,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":8081,"name":"VariableDeclaration","src":"18376:12:20"}],"id":8082,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8081,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":8012,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":8010,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8083,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8084,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8085,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8006,"type":"uint256","value":"selflen"},"id":8086,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8087,"name":"Identifier","src":"18502:9:20"}],"id":8088,"name":"BinaryOperation","src":"18492:19:20"}],"id":8089,"name":"TupleExpression","src":"18491:21:20"}],"id":8090,"name":"BinaryOperation","src":"18481:31:20"}],"id":8091,"name":"Assignment","src":"18475:37:20"}],"id":8092,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8093,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8094,"name":"Identifier","src":"18544:7:20"}],"id":8095,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[8097],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8112,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8096,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":8097,"name":"VariableDeclaration","src":"18575:16:20"}],"id":8098,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8097,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":8018,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":8010,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8099,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8081,"type":"bytes32","value":"hash"},"id":8100,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8097,"type":"bytes32","value":"testHash"},"id":8101,"name":"Identifier","src":"18696:8:20"}],"id":8102,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":8016},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8103,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8010,"type":"uint256","value":"needlelen"},"id":8104,"name":"Identifier","src":"18743:9:20"}],"id":8105,"name":"BinaryOperation","src":"18737:15:20"}],"id":8106,"name":"Return","src":"18730:22:20"}],"id":8107,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8018,"type":"uint256","value":"ptr"},"id":8108,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8109,"name":"Literal","src":"18781:1:20"}],"id":8110,"name":"Assignment","src":"18774:8:20"}],"id":8111,"name":"ExpressionStatement","src":"18774:8:20"}],"id":8112,"name":"Block","src":"18553:248:20"}],"id":8113,"name":"WhileStatement","src":"18530:271:20"}],"id":8114,"name":"Block","src":"18309:506:20"}],"id":8115,"name":"IfStatement","src":"17654:1161:20"}],"id":8116,"name":"Block","src":"17640:1185:20"}],"id":8117,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":8016},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8008,"type":"uint256","value":"selfptr"},"id":8118,"name":"Identifier","src":"18841:7:20"}],"id":8119,"name":"Return","src":"18834:14:20"}],"id":8120,"name":"Block","src":"17585:1270:20"}],"id":8121,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8161,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8122,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":8123,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8161,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8124,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":8125,"name":"VariableDeclaration","src":"19224:19:20"}],"id":8126,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8161,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8127,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":8128,"name":"VariableDeclaration","src":"19268:12:20"}],"id":8129,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[8131]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8160,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8130,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":8131,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8004,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8132,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8133,"name":"Identifier","src":"19311:4:20"}],"id":8134,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8135,"name":"Identifier","src":"19322:4:20"}],"id":8136,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8125,"type":"struct strings.slice memory","value":"needle"},"id":8137,"name":"Identifier","src":"19333:6:20"}],"id":8138,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8125,"type":"struct strings.slice memory","value":"needle"},"id":8139,"name":"Identifier","src":"19346:6:20"}],"id":8140,"name":"MemberAccess","src":"19346:11:20"}],"id":8141,"name":"FunctionCall","src":"19303:55:20"}],"id":8142,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8143,"name":"Identifier","src":"19368:4:20"}],"id":8145,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8131,"type":"uint256","value":"ptr"},"id":8146,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8147,"name":"Identifier","src":"19387:4:20"}],"id":8148,"name":"MemberAccess","src":"19387:9:20"}],"id":8149,"name":"BinaryOperation","src":"19381:15:20"}],"id":8150,"name":"Assignment","src":"19368:28:20"}],"id":8151,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8152,"name":"Identifier","src":"19406:4:20"}],"id":8154,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8131,"type":"uint256","value":"ptr"},"id":8155,"name":"Identifier","src":"19418:3:20"}],"id":8156,"name":"Assignment","src":"19406:15:20"}],"id":8157,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":8129},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8123,"type":"struct strings.slice memory","value":"self"},"id":8158,"name":"Identifier","src":"19438:4:20"}],"id":8159,"name":"Return","src":"19431:11:20"}],"id":8160,"name":"Block","src":"19282:167:20"}],"id":8161,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8195,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8162,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":8163,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8195,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8164,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":8165,"name":"VariableDeclaration","src":"19842:19:20"}],"id":8166,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8195,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8167,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":8168,"name":"VariableDeclaration","src":"19886:12:20"}],"id":8169,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[8171]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8194,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8170,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":8171,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8172,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8173,"name":"Identifier","src":"19930:4:20"}],"id":8174,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8175,"name":"Identifier","src":"19941:4:20"}],"id":8176,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8165,"type":"struct strings.slice memory","value":"needle"},"id":8177,"name":"Identifier","src":"19952:6:20"}],"id":8178,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8165,"type":"struct strings.slice memory","value":"needle"},"id":8179,"name":"Identifier","src":"19965:6:20"}],"id":8180,"name":"MemberAccess","src":"19965:11:20"}],"id":8181,"name":"FunctionCall","src":"19921:56:20"}],"id":8182,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8183,"name":"Identifier","src":"19987:4:20"}],"id":8185,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8171,"type":"uint256","value":"ptr"},"id":8186,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8187,"name":"Identifier","src":"20005:4:20"}],"id":8188,"name":"MemberAccess","src":"20005:9:20"}],"id":8189,"name":"BinaryOperation","src":"19999:15:20"}],"id":8190,"name":"Assignment","src":"19987:27:20"}],"id":8191,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":8169},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"struct strings.slice memory","value":"self"},"id":8192,"name":"Identifier","src":"20031:4:20"}],"id":8193,"name":"Return","src":"20024:11:20"}],"id":8194,"name":"Block","src":"19900:142:20"}],"id":8195,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8196,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":8197,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8198,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":8199,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":8273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8200,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":8201,"name":"VariableDeclaration","src":"20603:18:20"}],"id":8202,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8203,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":8204,"name":"VariableDeclaration","src":"20646:12:20"}],"id":8205,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[8207]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8272,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8206,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":8207,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8004,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8208,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8209,"name":"Identifier","src":"20689:4:20"}],"id":8210,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8211,"name":"Identifier","src":"20700:4:20"}],"id":8212,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8199,"type":"struct strings.slice memory","value":"needle"},"id":8213,"name":"Identifier","src":"20711:6:20"}],"id":8214,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8199,"type":"struct strings.slice memory","value":"needle"},"id":8215,"name":"Identifier","src":"20724:6:20"}],"id":8216,"name":"MemberAccess","src":"20724:11:20"}],"id":8217,"name":"FunctionCall","src":"20681:55:20"}],"id":8218,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8201,"type":"struct strings.slice memory","value":"token"},"id":8219,"name":"Identifier","src":"20746:5:20"}],"id":8221,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8222,"name":"Identifier","src":"20759:4:20"}],"id":8223,"name":"MemberAccess","src":"20759:9:20"}],"id":8224,"name":"Assignment","src":"20746:22:20"}],"id":8225,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8201,"type":"struct strings.slice memory","value":"token"},"id":8226,"name":"Identifier","src":"20778:5:20"}],"id":8228,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8207,"type":"uint256","value":"ptr"},"id":8229,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8230,"name":"Identifier","src":"20797:4:20"}],"id":8231,"name":"MemberAccess","src":"20797:9:20"}],"id":8232,"name":"BinaryOperation","src":"20791:15:20"}],"id":8233,"name":"Assignment","src":"20778:28:20"}],"id":8234,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8207,"type":"uint256","value":"ptr"},"id":8235,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8236,"name":"Identifier","src":"20827:4:20"}],"id":8237,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8238,"name":"Identifier","src":"20839:4:20"}],"id":8239,"name":"MemberAccess","src":"20839:9:20"}],"id":8240,"name":"BinaryOperation","src":"20827:21:20"}],"id":8241,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8242,"name":"Identifier","src":"20889:4:20"}],"id":8244,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8245,"name":"Literal","src":"20901:1:20"}],"id":8246,"name":"Assignment","src":"20889:13:20"}],"id":8247,"name":"ExpressionStatement","src":"20889:13:20"}],"id":8248,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8249,"name":"Identifier","src":"20933:4:20"}],"id":8251,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8201,"type":"struct strings.slice memory","value":"token"},"id":8252,"name":"Identifier","src":"20946:5:20"}],"id":8253,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8199,"type":"struct strings.slice memory","value":"needle"},"id":8254,"name":"Identifier","src":"20959:6:20"}],"id":8255,"name":"MemberAccess","src":"20959:11:20"}],"id":8256,"name":"BinaryOperation","src":"20946:24:20"}],"id":8257,"name":"Assignment","src":"20933:37:20"}],"id":8258,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"struct strings.slice memory","value":"self"},"id":8259,"name":"Identifier","src":"20984:4:20"}],"id":8261,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8207,"type":"uint256","value":"ptr"},"id":8262,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8199,"type":"struct strings.slice memory","value":"needle"},"id":8263,"name":"Identifier","src":"21002:6:20"}],"id":8264,"name":"MemberAccess","src":"21002:11:20"}],"id":8265,"name":"BinaryOperation","src":"20996:17:20"}],"id":8266,"name":"Assignment","src":"20984:29:20"}],"id":8267,"name":"ExpressionStatement","src":"20984:29:20"}],"id":8268,"name":"Block","src":"20919:105:20"}],"id":8269,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":8205},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8201,"type":"struct strings.slice memory","value":"token"},"id":8270,"name":"Identifier","src":"21040:5:20"}],"id":8271,"name":"Return","src":"21033:12:20"}],"id":8272,"name":"Block","src":"20660:392:20"}],"id":8273,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8289,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8274,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":8275,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8289,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8276,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":8277,"name":"VariableDeclaration","src":"21557:19:20"}],"id":8278,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8289,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8279,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":8280,"name":"VariableDeclaration","src":"21601:18:20"}],"id":8281,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8273,8289],"referencedDeclaration":8273,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":8282,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8275,"type":"struct strings.slice memory","value":"self"},"id":8283,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8277,"type":"struct strings.slice memory","value":"needle"},"id":8284,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8280,"type":"struct strings.slice memory","value":"token"},"id":8285,"name":"Identifier","src":"21651:5:20"}],"id":8286,"name":"FunctionCall","src":"21631:26:20"}],"id":8287,"name":"ExpressionStatement","src":"21631:26:20"}],"id":8288,"name":"Block","src":"21621:43:20"}],"id":8289,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8358,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8290,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":8291,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8358,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8292,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":8293,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":8358,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8294,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":8295,"name":"VariableDeclaration","src":"22225:18:20"}],"id":8296,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8358,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8297,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":8298,"name":"VariableDeclaration","src":"22268:12:20"}],"id":8299,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[8301]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8300,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":8301,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8302,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8303,"name":"Identifier","src":"22312:4:20"}],"id":8304,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8305,"name":"Identifier","src":"22323:4:20"}],"id":8306,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8293,"type":"struct strings.slice memory","value":"needle"},"id":8307,"name":"Identifier","src":"22334:6:20"}],"id":8308,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8293,"type":"struct strings.slice memory","value":"needle"},"id":8309,"name":"Identifier","src":"22347:6:20"}],"id":8310,"name":"MemberAccess","src":"22347:11:20"}],"id":8311,"name":"FunctionCall","src":"22303:56:20"}],"id":8312,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8295,"type":"struct strings.slice memory","value":"token"},"id":8313,"name":"Identifier","src":"22369:5:20"}],"id":8315,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8301,"type":"uint256","value":"ptr"},"id":8316,"name":"Identifier","src":"22382:3:20"}],"id":8317,"name":"Assignment","src":"22369:16:20"}],"id":8318,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8295,"type":"struct strings.slice memory","value":"token"},"id":8319,"name":"Identifier","src":"22395:5:20"}],"id":8321,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8322,"name":"Identifier","src":"22408:4:20"}],"id":8323,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8301,"type":"uint256","value":"ptr"},"id":8324,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8325,"name":"Identifier","src":"22427:4:20"}],"id":8326,"name":"MemberAccess","src":"22427:9:20"}],"id":8327,"name":"BinaryOperation","src":"22421:15:20"}],"id":8328,"name":"TupleExpression","src":"22420:17:20"}],"id":8329,"name":"BinaryOperation","src":"22408:29:20"}],"id":8330,"name":"Assignment","src":"22395:42:20"}],"id":8331,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8301,"type":"uint256","value":"ptr"},"id":8332,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8333,"name":"Identifier","src":"22458:4:20"}],"id":8334,"name":"MemberAccess","src":"22458:9:20"}],"id":8335,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8336,"name":"Identifier","src":"22508:4:20"}],"id":8338,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8339,"name":"Literal","src":"22520:1:20"}],"id":8340,"name":"Assignment","src":"22508:13:20"}],"id":8341,"name":"ExpressionStatement","src":"22508:13:20"}],"id":8342,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8291,"type":"struct strings.slice memory","value":"self"},"id":8343,"name":"Identifier","src":"22552:4:20"}],"id":8345,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8295,"type":"struct strings.slice memory","value":"token"},"id":8346,"name":"Identifier","src":"22565:5:20"}],"id":8347,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8293,"type":"struct strings.slice memory","value":"needle"},"id":8348,"name":"Identifier","src":"22578:6:20"}],"id":8349,"name":"MemberAccess","src":"22578:11:20"}],"id":8350,"name":"BinaryOperation","src":"22565:24:20"}],"id":8351,"name":"Assignment","src":"22552:37:20"}],"id":8352,"name":"ExpressionStatement","src":"22552:37:20"}],"id":8353,"name":"Block","src":"22538:62:20"}],"id":8354,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":8299},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8295,"type":"struct strings.slice memory","value":"token"},"id":8355,"name":"Identifier","src":"22616:5:20"}],"id":8356,"name":"Return","src":"22609:12:20"}],"id":8357,"name":"Block","src":"22282:346:20"}],"id":8358,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8359,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":8360,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8361,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":8362,"name":"VariableDeclaration","src":"23132:19:20"}],"id":8363,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8364,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":8365,"name":"VariableDeclaration","src":"23176:18:20"}],"id":8366,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6920_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8358,8374],"referencedDeclaration":8358,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":8367,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8360,"type":"struct strings.slice memory","value":"self"},"id":8368,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8362,"type":"struct strings.slice memory","value":"needle"},"id":8369,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8365,"type":"struct strings.slice memory","value":"token"},"id":8370,"name":"Identifier","src":"23227:5:20"}],"id":8371,"name":"FunctionCall","src":"23206:27:20"}],"id":8372,"name":"ExpressionStatement","src":"23206:27:20"}],"id":8373,"name":"Block","src":"23196:44:20"}],"id":8374,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8433,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8375,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":8376,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8433,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8377,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":8378,"name":"VariableDeclaration","src":"23543:19:20"}],"id":8379,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":8433,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8380,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":8381,"name":"VariableDeclaration","src":"23587:8:20"}],"id":8382,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[8384]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8432,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8383,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":8384,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8004,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8385,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8386,"name":"Identifier","src":"23626:4:20"}],"id":8387,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8388,"name":"Identifier","src":"23637:4:20"}],"id":8389,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8390,"name":"Identifier","src":"23648:6:20"}],"id":8391,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8392,"name":"Identifier","src":"23661:6:20"}],"id":8393,"name":"MemberAccess","src":"23661:11:20"}],"id":8394,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8395,"name":"Identifier","src":"23676:6:20"}],"id":8396,"name":"MemberAccess","src":"23676:11:20"}],"id":8397,"name":"BinaryOperation","src":"23618:69:20"}],"id":8398,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8384,"type":"uint256","value":"ptr"},"id":8399,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8400,"name":"Identifier","src":"23711:4:20"}],"id":8401,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8402,"name":"Identifier","src":"23723:4:20"}],"id":8403,"name":"MemberAccess","src":"23723:9:20"}],"id":8404,"name":"BinaryOperation","src":"23711:21:20"}],"id":8405,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8381,"type":"uint256","value":"cnt"},"id":8406,"name":"Identifier","src":"23748:3:20"}],"id":8407,"name":"UnaryOperation","src":"23748:5:20"}],"id":8408,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8384,"type":"uint256","value":"ptr"},"id":8409,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8004,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8410,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8411,"name":"Identifier","src":"23781:4:20"}],"id":8412,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8384,"type":"uint256","value":"ptr"},"id":8413,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8414,"name":"Identifier","src":"23800:4:20"}],"id":8415,"name":"MemberAccess","src":"23800:9:20"}],"id":8416,"name":"BinaryOperation","src":"23794:15:20"}],"id":8417,"name":"TupleExpression","src":"23793:17:20"}],"id":8418,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8384,"type":"uint256","value":"ptr"},"id":8419,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8420,"name":"Identifier","src":"23817:6:20"}],"id":8421,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8422,"name":"Identifier","src":"23830:6:20"}],"id":8423,"name":"MemberAccess","src":"23830:11:20"}],"id":8424,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8378,"type":"struct strings.slice memory","value":"needle"},"id":8425,"name":"Identifier","src":"23845:6:20"}],"id":8426,"name":"MemberAccess","src":"23845:11:20"}],"id":8427,"name":"BinaryOperation","src":"23773:83:20"}],"id":8428,"name":"Assignment","src":"23767:89:20"}],"id":8429,"name":"ExpressionStatement","src":"23767:89:20"}],"id":8430,"name":"Block","src":"23734:133:20"}],"id":8431,"name":"WhileStatement","src":"23697:170:20"}],"id":8432,"name":"Block","src":"23597:276:20"}],"id":8433,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8457,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8434,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":8435,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8457,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8436,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":8437,"name":"VariableDeclaration","src":"24149:19:20"}],"id":8438,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8457,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8439,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":8440,"name":"VariableDeclaration","src":"24193:4:20"}],"id":8441,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":8441},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8442,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8435,"type":"struct strings.slice memory","value":"self"},"id":8443,"name":"Identifier","src":"24225:4:20"}],"id":8444,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8435,"type":"struct strings.slice memory","value":"self"},"id":8445,"name":"Identifier","src":"24236:4:20"}],"id":8446,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8437,"type":"struct strings.slice memory","value":"needle"},"id":8447,"name":"Identifier","src":"24247:6:20"}],"id":8448,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8437,"type":"struct strings.slice memory","value":"needle"},"id":8449,"name":"Identifier","src":"24260:6:20"}],"id":8450,"name":"MemberAccess","src":"24260:11:20"}],"id":8451,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8435,"type":"struct strings.slice memory","value":"self"},"id":8452,"name":"Identifier","src":"24276:4:20"}],"id":8453,"name":"MemberAccess","src":"24276:9:20"}],"id":8454,"name":"BinaryOperation","src":"24216:69:20"}],"id":8455,"name":"Return","src":"24209:76:20"}],"id":8456,"name":"Block","src":"24199:93:20"}],"id":8457,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8503,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8458,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":8459,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":8503,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8460,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":8461,"name":"VariableDeclaration","src":"24614:18:20"}],"id":8462,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8503,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8463,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":8464,"name":"VariableDeclaration","src":"24657:13:20"}],"id":8465,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[8467]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8502,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8466,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":8467,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8468,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":8469,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8459,"type":"struct strings.slice memory","value":"self"},"id":8470,"name":"Identifier","src":"24713:4:20"}],"id":8471,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"other"},"id":8472,"name":"Identifier","src":"24725:5:20"}],"id":8473,"name":"MemberAccess","src":"24725:10:20"}],"id":8474,"name":"BinaryOperation","src":"24713:22:20"}],"id":8475,"name":"FunctionCall","src":"24702:34:20"}],"id":8476,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[8478],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8502,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8477,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":8478,"name":"VariableDeclaration","src":"24746:11:20"}],"id":8479,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8478,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":8467,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8480,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8481,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8478,"type":"uint256","value":"retptr"},"id":8482,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8459,"type":"struct strings.slice memory","value":"self"},"id":8483,"name":"Identifier","src":"24826:4:20"}],"id":8484,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8459,"type":"struct strings.slice memory","value":"self"},"id":8485,"name":"Identifier","src":"24837:4:20"}],"id":8486,"name":"MemberAccess","src":"24837:9:20"}],"id":8487,"name":"FunctionCall","src":"24811:36:20"}],"id":8488,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8489,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8478,"type":"uint256","value":"retptr"},"id":8490,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8459,"type":"struct strings.slice memory","value":"self"},"id":8491,"name":"Identifier","src":"24873:4:20"}],"id":8492,"name":"MemberAccess","src":"24873:9:20"}],"id":8493,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"other"},"id":8494,"name":"Identifier","src":"24884:5:20"}],"id":8495,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"other"},"id":8496,"name":"Identifier","src":"24896:5:20"}],"id":8497,"name":"MemberAccess","src":"24896:10:20"}],"id":8498,"name":"FunctionCall","src":"24857:50:20"}],"id":8499,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":8465},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8467,"type":"string memory","value":"ret"},"id":8500,"name":"Identifier","src":"24924:3:20"}],"id":8501,"name":"Return","src":"24917:10:20"}],"id":8502,"name":"Block","src":"24672:262:20"}],"id":8503,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":8619,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8618,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8504,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":8505,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":8618,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6920,"type":"struct strings.slice"},"id":8506,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":8507,"name":"ArrayTypeName","src":"25303:7:20"}],"id":8508,"name":"VariableDeclaration","src":"25303:20:20"}],"id":8509,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8618,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8510,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":8511,"name":"VariableDeclaration","src":"25348:13:20"}],"id":8512,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8513,"name":"Identifier","src":"25377:5:20"}],"id":8514,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8515,"name":"Literal","src":"25393:1:20"}],"id":8516,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":8512},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":8517,"name":"Literal","src":"25415:2:20"}],"id":8518,"name":"Return","src":"25408:9:20"}],"id":8519,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[8521]},"children":[{"attributes":{"constant":false,"name":"length","scope":8617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8520,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":8521,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"struct strings.slice memory","value":"self"},"id":8522,"name":"Identifier","src":"25442:4:20"}],"id":8523,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8524,"name":"Identifier","src":"25455:5:20"}],"id":8525,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8526,"name":"Literal","src":"25470:1:20"}],"id":8527,"name":"BinaryOperation","src":"25455:16:20"}],"id":8528,"name":"TupleExpression","src":"25454:18:20"}],"id":8529,"name":"BinaryOperation","src":"25442:30:20"}],"id":8530,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[8532]},"children":[{"attributes":{"constant":false,"name":"i","scope":8550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8531,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":8532,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8533,"name":"Literal","src":"25496:1:20"}],"id":8534,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8532,"type":"uint256","value":"i"},"id":8535,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8536,"name":"Identifier","src":"25503:5:20"}],"id":8537,"name":"MemberAccess","src":"25503:12:20"}],"id":8538,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8532,"type":"uint256","value":"i"},"id":8539,"name":"Identifier","src":"25517:1:20"}],"id":8540,"name":"UnaryOperation","src":"25517:3:20"}],"id":8541,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8521,"type":"uint256","value":"length"},"id":8542,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8543,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8532,"type":"uint256","value":"i"},"id":8544,"name":"Identifier","src":"25552:1:20"}],"id":8545,"name":"IndexAccess","src":"25546:8:20"}],"id":8546,"name":"MemberAccess","src":"25546:13:20"}],"id":8547,"name":"Assignment","src":"25536:23:20"}],"id":8548,"name":"ExpressionStatement","src":"25536:23:20"}],"id":8549,"name":"Block","src":"25522:48:20"}],"id":8550,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[8552]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8617,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8551,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":8552,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8553,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":8554,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8521,"type":"uint256","value":"length"},"id":8555,"name":"Identifier","src":"25611:6:20"}],"id":8556,"name":"FunctionCall","src":"25600:18:20"}],"id":8557,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[8559],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8558,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":8559,"name":"VariableDeclaration","src":"25628:11:20"}],"id":8560,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8559,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":8552,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8561,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[8563]},"children":[{"attributes":{"constant":false,"name":"i","scope":8614,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8562,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":8563,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8564,"name":"Literal","src":"25708:1:20"}],"id":8565,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8566,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8567,"name":"Identifier","src":"25715:5:20"}],"id":8568,"name":"MemberAccess","src":"25715:12:20"}],"id":8569,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8570,"name":"Identifier","src":"25729:1:20"}],"id":8571,"name":"UnaryOperation","src":"25729:3:20"}],"id":8572,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8573,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8559,"type":"uint256","value":"retptr"},"id":8574,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8575,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8576,"name":"Identifier","src":"25769:1:20"}],"id":8577,"name":"IndexAccess","src":"25763:8:20"}],"id":8578,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8579,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8580,"name":"Identifier","src":"25784:1:20"}],"id":8581,"name":"IndexAccess","src":"25778:8:20"}],"id":8582,"name":"MemberAccess","src":"25778:13:20"}],"id":8583,"name":"FunctionCall","src":"25748:44:20"}],"id":8584,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8559,"type":"uint256","value":"retptr"},"id":8585,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8586,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8587,"name":"Identifier","src":"25822:1:20"}],"id":8588,"name":"IndexAccess","src":"25816:8:20"}],"id":8589,"name":"MemberAccess","src":"25816:13:20"}],"id":8590,"name":"Assignment","src":"25806:23:20"}],"id":8591,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8563,"type":"uint256","value":"i"},"id":8592,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8593,"name":"Identifier","src":"25851:5:20"}],"id":8594,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8595,"name":"Literal","src":"25866:1:20"}],"id":8596,"name":"BinaryOperation","src":"25851:16:20"}],"id":8597,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8598,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8559,"type":"uint256","value":"retptr"},"id":8599,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"struct strings.slice memory","value":"self"},"id":8600,"name":"Identifier","src":"25902:4:20"}],"id":8601,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"struct strings.slice memory","value":"self"},"id":8602,"name":"Identifier","src":"25913:4:20"}],"id":8603,"name":"MemberAccess","src":"25913:9:20"}],"id":8604,"name":"FunctionCall","src":"25887:36:20"}],"id":8605,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8559,"type":"uint256","value":"retptr"},"id":8606,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6917,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"struct strings.slice memory","value":"self"},"id":8607,"name":"Identifier","src":"25951:4:20"}],"id":8608,"name":"MemberAccess","src":"25951:9:20"}],"id":8609,"name":"Assignment","src":"25941:19:20"}],"id":8610,"name":"ExpressionStatement","src":"25941:19:20"}],"id":8611,"name":"Block","src":"25869:106:20"}],"id":8612,"name":"IfStatement","src":"25843:132:20"}],"id":8613,"name":"Block","src":"25734:251:20"}],"id":8614,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":8512},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8552,"type":"string memory","value":"ret"},"id":8615,"name":"Identifier","src":"26002:3:20"}],"id":8616,"name":"Return","src":"25995:10:20"}],"id":8617,"name":"Block","src":"25363:649:20"}],"id":8618,"name":"FunctionDefinition","src":"25270:742:20"}],"id":8619,"name":"ContractDefinition","src":"2599:23415:20"}],"id":8620,"name":"SourceUnit","src":"2574:23441:20"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[2774]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2744,"name":"PragmaDirective","src":"771:24:21"},{"attributes":{"SourceUnit":2391,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":2775,"symbolAliases":[null],"unitAlias":""},"id":2745,"name":"ImportDirective","src":"797:32:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[2774],"name":"Balanceable","scope":2775},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":2774,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":2773,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2746,"name":"ElementaryTypeName","src":"1225:7:21"}],"id":2747,"name":"VariableDeclaration","src":"1225:16:21"},{"attributes":{"constant":false,"name":"_asset","scope":2773,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2748,"name":"ElementaryTypeName","src":"1243:7:21"}],"id":2749,"name":"VariableDeclaration","src":"1243:14:21"}],"id":2750,"name":"ParameterList","src":"1224:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":2773,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2751,"name":"ElementaryTypeName","src":"1282:7:21"}],"id":2752,"name":"VariableDeclaration","src":"1282:7:21"}],"id":2753,"name":"ParameterList","src":"1281:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2749,"type":"address","value":"_asset"},"id":2754,"name":"Identifier","src":"1305:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2755,"name":"ElementaryTypeNameExpression","src":"1315:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2756,"name":"Literal","src":"1323:1:21"}],"id":2757,"name":"FunctionCall","src":"1315:10:21"}],"id":2758,"name":"BinaryOperation","src":"1305:20:21"},{"children":[{"attributes":{"functionReturnParameters":2753},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":2364,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":2759,"name":"Identifier","src":"1348:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2749,"type":"address","value":"_asset"},"id":2760,"name":"Identifier","src":"1354:6:21"}],"id":2761,"name":"FunctionCall","src":"1348:13:21"}],"id":2762,"name":"MemberAccess","src":"1348:23:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2747,"type":"address","value":"_address"},"id":2763,"name":"Identifier","src":"1372:8:21"}],"id":2764,"name":"FunctionCall","src":"1348:33:21"}],"id":2765,"name":"Return","src":"1341:40:21"}],"id":2766,"name":"Block","src":"1327:65:21"},{"children":[{"attributes":{"functionReturnParameters":2753},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2747,"type":"address","value":"_address"},"id":2767,"name":"Identifier","src":"1419:8:21"}],"id":2768,"name":"MemberAccess","src":"1419:16:21"}],"id":2769,"name":"Return","src":"1412:23:21"}],"id":2770,"name":"Block","src":"1398:48:21"}],"id":2771,"name":"IfStatement","src":"1301:145:21"}],"id":2772,"name":"Block","src":"1291:161:21"}],"id":2773,"name":"FunctionDefinition","src":"1207:245:21"}],"id":2774,"name":"ContractDefinition","src":"898:556:21"}],"id":2775,"name":"SourceUnit","src":"771:684:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[8730]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8621,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":8731,"symbolAliases":[null],"unitAlias":""},"id":8622,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[8730],"name":"BytesUtils","scope":8731},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":8623,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":8624,"name":"ElementaryTypeName","src":"955:7:22"}],"id":8625,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":8730,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8661,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8626,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":8627,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8628,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":8629,"name":"VariableDeclaration","src":"1125:13:22"}],"id":8630,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8661,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8631,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":8632,"name":"VariableDeclaration","src":"1163:7:22"}],"id":8633,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":8634,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8627,"type":"bytes memory","value":"_bts"},"id":8635,"name":"Identifier","src":"1190:4:22"}],"id":8636,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"uint256","value":"_from"},"id":8637,"name":"Identifier","src":"1205:5:22"}],"id":8638,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8639,"name":"Literal","src":"1215:2:22"}],"id":8640,"name":"FunctionCall","src":"1205:13:22"}],"id":8641,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8642,"name":"Literal","src":"1220:22:22"}],"id":8643,"name":"FunctionCall","src":"1182:61:22"}],"id":8644,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[8646],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":8660,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":8645,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":8646,"name":"VariableDeclaration","src":"1254:24:22"}],"id":8647,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[8649]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8660,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8648,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":8649,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"uint256","value":"_from"},"id":8650,"name":"Identifier","src":"1308:5:22"}],"id":8651,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8652,"name":"Literal","src":"1318:2:22"}],"id":8653,"name":"FunctionCall","src":"1308:13:22"}],"id":8654,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":8646,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":8627,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":8649,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":8655,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":8633},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":8656,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8646,"type":"bytes20","value":"convertedAddress"},"id":8657,"name":"Identifier","src":"1478:16:22"}],"id":8658,"name":"FunctionCall","src":"1470:25:22"}],"id":8659,"name":"Return","src":"1463:32:22"}],"id":8660,"name":"Block","src":"1172:330:22"}],"id":8661,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":8730,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8695,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8662,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":8663,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8664,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":8665,"name":"VariableDeclaration","src":"1670:13:22"}],"id":8666,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8695,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8667,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":8668,"name":"VariableDeclaration","src":"1708:6:22"}],"id":8669,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":8670,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8663,"type":"bytes memory","value":"_bts"},"id":8671,"name":"Identifier","src":"1734:4:22"}],"id":8672,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8665,"type":"uint256","value":"_from"},"id":8673,"name":"Identifier","src":"1749:5:22"}],"id":8674,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8675,"name":"Literal","src":"1759:1:22"}],"id":8676,"name":"FunctionCall","src":"1749:12:22"}],"id":8677,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8678,"name":"Literal","src":"1763:22:22"}],"id":8679,"name":"FunctionCall","src":"1726:60:22"}],"id":8680,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[8682],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":8694,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8681,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":8682,"name":"VariableDeclaration","src":"1797:19:22"}],"id":8683,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[8685]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8694,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8684,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":8685,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8665,"type":"uint256","value":"_from"},"id":8686,"name":"Identifier","src":"1846:5:22"}],"id":8687,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8688,"name":"Literal","src":"1856:2:22"}],"id":8689,"name":"FunctionCall","src":"1846:13:22"}],"id":8690,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":8682,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":8663,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":8685,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":8691,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":8669},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8682,"type":"bytes4","value":"slicedBytes4"},"id":8692,"name":"Identifier","src":"2004:12:22"}],"id":8693,"name":"Return","src":"1997:19:22"}],"id":8694,"name":"Block","src":"1716:307:22"}],"id":8695,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":8730,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8729,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8696,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":8697,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8729,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8698,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":8699,"name":"VariableDeclaration","src":"2417:13:22"}],"id":8700,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8729,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8701,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":8702,"name":"VariableDeclaration","src":"2455:7:22"}],"id":8703,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":8704,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8697,"type":"bytes memory","value":"_bts"},"id":8705,"name":"Identifier","src":"2482:4:22"}],"id":8706,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8699,"type":"uint256","value":"_from"},"id":8707,"name":"Identifier","src":"2497:5:22"}],"id":8708,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8709,"name":"Literal","src":"2507:2:22"}],"id":8710,"name":"FunctionCall","src":"2497:13:22"}],"id":8711,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8712,"name":"Literal","src":"2512:22:22"}],"id":8713,"name":"FunctionCall","src":"2474:61:22"}],"id":8714,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[8716],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":8728,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8715,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":8716,"name":"VariableDeclaration","src":"2546:24:22"}],"id":8717,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[8719]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8728,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8718,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":8719,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8699,"type":"uint256","value":"_from"},"id":8720,"name":"Identifier","src":"2600:5:22"}],"id":8721,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8722,"name":"Literal","src":"2610:2:22"}],"id":8723,"name":"FunctionCall","src":"2600:13:22"}],"id":8724,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":8716,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}},{"_bts":{"declaration":8697,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":8719,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":8725,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":8703},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8716,"type":"uint256","value":"convertedUint256"},"id":8726,"name":"Identifier","src":"2762:16:22"}],"id":8727,"name":"Return","src":"2755:23:22"}],"id":8728,"name":"Block","src":"2464:321:22"}],"id":8729,"name":"FunctionDefinition","src":"2373:412:22"}],"id":8730,"name":"ContractDefinition","src":"911:1876:22"}],"id":8731,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[2870]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2776,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":4328,"absolutePath":"controller.sol","file":"../controller.sol","scope":2871,"symbolAliases":[null],"unitAlias":""},"id":2777,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":2916,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":2871,"symbolAliases":[null],"unitAlias":""},"id":2778,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[2915],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[2870,2915],"name":"Controllable","scope":2871},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":2779,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":2780,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":2870,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2781,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":2782,"name":"Literal","src":"1122:66:23"}],"id":2783,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":2870,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2784,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":2785,"name":"Identifier","src":"1306:24:23"}],"id":2786,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2870,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":2803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2787,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":2788,"name":"VariableDeclaration","src":"1571:24:23"}],"id":2789,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":2790,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2788,"type":"bytes32","value":"_controllerNode_"},"id":2791,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2792,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2793,"name":"Literal","src":"1693:1:23"}],"id":2794,"name":"FunctionCall","src":"1685:10:23"}],"id":2795,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bytes32","value":"_controllerNode"},"id":2796,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2788,"type":"bytes32","value":"_controllerNode_"},"id":2797,"name":"Identifier","src":"1729:16:23"}],"id":2798,"name":"Assignment","src":"1711:34:23"}],"id":2799,"name":"ExpressionStatement","src":"1711:34:23"}],"id":2800,"name":"Block","src":"1697:59:23"}],"id":2801,"name":"IfStatement","src":"1661:95:23"}],"id":2802,"name":"Block","src":"1606:156:23"}],"id":2803,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2804,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2805,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"function (address) view returns (bool)","value":"_isController"},"id":2806,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":2807,"name":"Identifier","src":"1884:3:23"}],"id":2808,"name":"MemberAccess","src":"1884:10:23"}],"id":2809,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":2810,"name":"Literal","src":"1897:28:23"}],"id":2811,"name":"FunctionCall","src":"1862:64:23"}],"id":2812,"name":"ExpressionStatement","src":"1862:64:23"},{"id":2813,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":2814,"name":"Block","src":"1852:92:23"}],"id":2815,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2816,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2817,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2869,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":2818,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":2819,"name":"Identifier","src":"2052:3:23"}],"id":2820,"name":"MemberAccess","src":"2052:10:23"}],"id":2821,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2822,"name":"Literal","src":"2065:24:23"}],"id":2823,"name":"FunctionCall","src":"2035:55:23"}],"id":2824,"name":"ExpressionStatement","src":"2035:55:23"},{"id":2825,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":2826,"name":"Block","src":"2025:83:23"}],"id":2827,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":2870,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2828,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2829,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":2830,"name":"VariableDeclaration","src":"2216:7:23"}],"id":2831,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":2831},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bytes32","value":"_controllerNode"},"id":2832,"name":"Identifier","src":"2242:15:23"}],"id":2833,"name":"Return","src":"2235:22:23"}],"id":2834,"name":"Block","src":"2225:39:23"}],"id":2835,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":2870,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2852,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2836,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":2837,"name":"VariableDeclaration","src":"2355:16:23"}],"id":2838,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2852,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2839,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":2840,"name":"VariableDeclaration","src":"2396:4:23"}],"id":2841,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":2841},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":3884,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3892,"type":"type(contract IController)","value":"IController"},"id":2842,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2843,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bytes32","value":"_controllerNode"},"id":2844,"name":"Identifier","src":"2443:15:23"}],"id":2845,"name":"FunctionCall","src":"2431:28:23"}],"id":2846,"name":"FunctionCall","src":"2419:41:23"}],"id":2847,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2837,"type":"address","value":"_account"},"id":2848,"name":"Identifier","src":"2474:8:23"}],"id":2849,"name":"FunctionCall","src":"2419:64:23"}],"id":2850,"name":"Return","src":"2412:71:23"}],"id":2851,"name":"Block","src":"2402:88:23"}],"id":2852,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":2870,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2869,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2853,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":2854,"name":"VariableDeclaration","src":"2572:16:23"}],"id":2855,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2869,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2856,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":2857,"name":"VariableDeclaration","src":"2613:4:23"}],"id":2858,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":2858},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":3891,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3892,"type":"type(contract IController)","value":"IController"},"id":2859,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2860,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bytes32","value":"_controllerNode"},"id":2861,"name":"Identifier","src":"2660:15:23"}],"id":2862,"name":"FunctionCall","src":"2648:28:23"}],"id":2863,"name":"FunctionCall","src":"2636:41:23"}],"id":2864,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2854,"type":"address","value":"_account"},"id":2865,"name":"Identifier","src":"2686:8:23"}],"id":2866,"name":"FunctionCall","src":"2636:59:23"}],"id":2867,"name":"Return","src":"2629:66:23"}],"id":2868,"name":"Block","src":"2619:83:23"}],"id":2869,"name":"FunctionDefinition","src":"2554:148:23"}],"id":2870,"name":"ContractDefinition","src":"955:1749:23"}],"id":2871,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[2915]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2872,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":4465,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":2916,"symbolAliases":[null],"unitAlias":""},"id":2873,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":4639,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":2916,"symbolAliases":[null],"unitAlias":""},"id":2874,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[2915],"name":"ENSResolvable","scope":2916},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":2915,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2875,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":2876,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2915,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":2886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2877,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":2878,"name":"VariableDeclaration","src":"1205:16:24"}],"id":2879,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":2880,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2876,"type":"address","value":"_ensRegistry"},"id":2881,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2878,"type":"address","value":"_ensReg_"},"id":2882,"name":"Identifier","src":"1257:8:24"}],"id":2883,"name":"Assignment","src":"1242:23:24"}],"id":2884,"name":"ExpressionStatement","src":"1242:23:24"}],"id":2885,"name":"Block","src":"1232:40:24"}],"id":2886,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":2915,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2887,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":2894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2888,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":2889,"name":"VariableDeclaration","src":"1410:7:24"}],"id":2890,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":2890},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2876,"type":"address","value":"_ensRegistry"},"id":2891,"name":"Identifier","src":"1436:12:24"}],"id":2892,"name":"Return","src":"1429:19:24"}],"id":2893,"name":"Block","src":"1419:36:24"}],"id":2894,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":2915,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2914,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2895,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":2896,"name":"VariableDeclaration","src":"1652:13:24"}],"id":2897,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":2914,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2898,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":2899,"name":"VariableDeclaration","src":"1690:7:24"}],"id":2900,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":2900},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":5844,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4638,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":2901,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":4440,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4464,"type":"type(contract ENS)","value":"ENS"},"id":2902,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2876,"type":"address","value":"_ensRegistry"},"id":2903,"name":"Identifier","src":"1735:12:24"}],"id":2904,"name":"FunctionCall","src":"1731:17:24"}],"id":2905,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2896,"type":"bytes32","value":"_node"},"id":2906,"name":"Identifier","src":"1758:5:24"}],"id":2907,"name":"FunctionCall","src":"1731:33:24"}],"id":2908,"name":"FunctionCall","src":"1716:49:24"}],"id":2909,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2896,"type":"bytes32","value":"_node"},"id":2910,"name":"Identifier","src":"1771:5:24"}],"id":2911,"name":"FunctionCall","src":"1716:61:24"}],"id":2912,"name":"Return","src":"1709:68:24"}],"id":2913,"name":"Block","src":"1699:85:24"}],"id":2914,"name":"FunctionDefinition","src":"1631:153:24"}],"id":2915,"name":"ContractDefinition","src":"1008:778:24"}],"id":2916,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[3072]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2917,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[3072],"name":"Ownable","scope":3073},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":2923,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2918,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":2919,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2923,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2920,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":2921,"name":"VariableDeclaration","src":"1214:11:25"}],"id":2922,"name":"ParameterList","src":"1198:28:25"}],"id":2923,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":2927,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2924,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":2925,"name":"VariableDeclaration","src":"1254:15:25"}],"id":2926,"name":"ParameterList","src":"1253:17:25"}],"id":2927,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":3072,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2928,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":2929,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":3072,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2930,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":2931,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3072,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":2962,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2932,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":2933,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":2962,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2934,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":2935,"name":"VariableDeclaration","src":"1503:19:25"}],"id":2936,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":2937,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":2938,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2933,"type":"address payable","value":"_account_"},"id":2939,"name":"Identifier","src":"1552:9:25"}],"id":2940,"name":"Assignment","src":"1543:18:25"}],"id":2941,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":2942,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2935,"type":"bool","value":"_transferable_"},"id":2943,"name":"Identifier","src":"1589:14:25"}],"id":2944,"name":"Assignment","src":"1571:32:25"}],"id":2945,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":2946,"name":"Identifier","src":"1687:15:25"}],"id":2947,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2927,"type":"function (address)","value":"LockedOwnership"},"id":2948,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2933,"type":"address payable","value":"_account_"},"id":2949,"name":"Identifier","src":"1739:9:25"}],"id":2950,"name":"FunctionCall","src":"1723:26:25"}],"id":2951,"name":"EmitStatement","src":"1718:31:25"}],"id":2952,"name":"Block","src":"1704:56:25"}],"id":2953,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"function (address,address)","value":"TransferredOwnership"},"id":2954,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2955,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2956,"name":"Literal","src":"1803:1:25"}],"id":2957,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2933,"type":"address payable","value":"_account_"},"id":2958,"name":"Identifier","src":"1807:9:25"}],"id":2959,"name":"FunctionCall","src":"1774:43:25"}],"id":2960,"name":"EmitStatement","src":"1769:48:25"}],"id":2961,"name":"Block","src":"1533:291:25"}],"id":2962,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2963,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2964,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2965,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":2966,"name":"Identifier","src":"1949:3:25"}],"id":2967,"name":"MemberAccess","src":"1949:10:25"}],"id":2968,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":2969,"name":"Literal","src":"1962:24:25"}],"id":2970,"name":"FunctionCall","src":"1932:55:25"}],"id":2971,"name":"ExpressionStatement","src":"1932:55:25"},{"id":2972,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":2973,"name":"Block","src":"1922:83:25"}],"id":2974,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":3072,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3019,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2975,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":2976,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":3019,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2977,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":2978,"name":"VariableDeclaration","src":"2300:18:25"}],"id":2979,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":2982,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":2980,"name":"Identifier","src":"2329:9:25"}],"id":2981,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2983,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":2984,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2985,"name":"Literal","src":"2429:31:25"}],"id":2986,"name":"FunctionCall","src":"2404:57:25"}],"id":2987,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2988,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2976,"type":"address payable","value":"_account"},"id":2989,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2990,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2991,"name":"Literal","src":"2562:1:25"}],"id":2992,"name":"FunctionCall","src":"2554:10:25"}],"id":2993,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":2994,"name":"Literal","src":"2566:37:25"}],"id":2995,"name":"FunctionCall","src":"2534:70:25"}],"id":2996,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":2997,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2978,"type":"bool","value":"_transferable"},"id":2998,"name":"Identifier","src":"2707:13:25"}],"id":2999,"name":"Assignment","src":"2689:31:25"}],"id":3000,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2978,"type":"bool","value":"_transferable"},"id":3001,"name":"Identifier","src":"2804:13:25"}],"id":3002,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2927,"type":"function (address)","value":"LockedOwnership"},"id":3003,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2976,"type":"address payable","value":"_account"},"id":3004,"name":"Identifier","src":"2854:8:25"}],"id":3005,"name":"FunctionCall","src":"2838:25:25"}],"id":3006,"name":"EmitStatement","src":"2833:30:25"}],"id":3007,"name":"Block","src":"2819:55:25"}],"id":3008,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"function (address,address)","value":"TransferredOwnership"},"id":3009,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3010,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2976,"type":"address payable","value":"_account"},"id":3011,"name":"Identifier","src":"2963:8:25"}],"id":3012,"name":"FunctionCall","src":"2934:38:25"}],"id":3013,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3014,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2976,"type":"address payable","value":"_account"},"id":3015,"name":"Identifier","src":"3041:8:25"}],"id":3016,"name":"Assignment","src":"3032:17:25"}],"id":3017,"name":"ExpressionStatement","src":"3032:17:25"}],"id":3018,"name":"Block","src":"2339:717:25"}],"id":3019,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":3072,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3020,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3027,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3021,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":3022,"name":"VariableDeclaration","src":"3222:4:25"}],"id":3023,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":3023},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":3024,"name":"Identifier","src":"3245:15:25"}],"id":3025,"name":"Return","src":"3238:22:25"}],"id":3026,"name":"Block","src":"3228:39:25"}],"id":3027,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":3072,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3028,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":3031,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":3029,"name":"Identifier","src":"3581:9:25"}],"id":3030,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3032,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2931,"type":"bool","value":"_isTransferable"},"id":3033,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3034,"name":"Literal","src":"3681:31:25"}],"id":3035,"name":"FunctionCall","src":"3656:57:25"}],"id":3036,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3037,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3038,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3039,"name":"Literal","src":"3784:1:25"}],"id":3040,"name":"FunctionCall","src":"3776:10:25"}],"id":3041,"name":"Assignment","src":"3767:19:25"}],"id":3042,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"function (address,address)","value":"TransferredOwnership"},"id":3043,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3044,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3045,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3046,"name":"Literal","src":"3839:1:25"}],"id":3047,"name":"FunctionCall","src":"3831:10:25"}],"id":3048,"name":"FunctionCall","src":"3802:40:25"}],"id":3049,"name":"EmitStatement","src":"3797:45:25"}],"id":3050,"name":"Block","src":"3591:258:25"}],"id":3051,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3072,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3052,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3059,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3053,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":3054,"name":"VariableDeclaration","src":"3970:15:25"}],"id":3055,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":3055},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3056,"name":"Identifier","src":"4004:6:25"}],"id":3057,"name":"Return","src":"3997:13:25"}],"id":3058,"name":"Block","src":"3987:30:25"}],"id":3059,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":3072,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3071,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3060,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":3061,"name":"VariableDeclaration","src":"4141:16:25"}],"id":3062,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3071,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3063,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":3064,"name":"VariableDeclaration","src":"4182:4:25"}],"id":3065,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":3065},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3061,"type":"address","value":"_address"},"id":3066,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"address payable","value":"_owner"},"id":3067,"name":"Identifier","src":"4217:6:25"}],"id":3068,"name":"BinaryOperation","src":"4205:18:25"}],"id":3069,"name":"Return","src":"4198:25:25"}],"id":3070,"name":"Block","src":"4188:42:25"}],"id":3071,"name":"FunctionDefinition","src":"4123:107:25"}],"id":3072,"name":"ContractDefinition","src":"1149:3083:25"}],"id":3073,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[3289]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3074,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":5627,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":3290,"symbolAliases":[null],"unitAlias":""},"id":3075,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":2916,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":3290,"symbolAliases":[null],"unitAlias":""},"id":3076,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[2915],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[3289,2915],"name":"TokenWhitelistable","scope":3290},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":3077,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":3078,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":3289,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3079,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":3080,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3289,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":3090,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3081,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":3082,"name":"VariableDeclaration","src":"1292:28:26"}],"id":3083,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":3084,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3085,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3082,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":3086,"name":"Identifier","src":"1363:20:26"}],"id":3087,"name":"Assignment","src":"1341:42:26"}],"id":3088,"name":"ExpressionStatement","src":"1341:42:26"}],"id":3089,"name":"Block","src":"1331:59:26"}],"id":3090,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3091,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3098,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3092,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":3093,"name":"VariableDeclaration","src":"1567:7:26"}],"id":3094,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":3094},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3095,"name":"Identifier","src":"1593:19:26"}],"id":3096,"name":"Return","src":"1586:26:26"}],"id":3097,"name":"Block","src":"1576:43:26"}],"id":3098,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3127,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3099,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":3100,"name":"VariableDeclaration","src":"2194:10:26"}],"id":3101,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3102,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":3103,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3104,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":3105,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3106,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":3107,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3108,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":3109,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3110,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":3111,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3112,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":3113,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":3127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3114,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":3115,"name":"VariableDeclaration","src":"2280:7:26"}],"id":3116,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":3116},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":4664,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3117,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3118,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3119,"name":"Identifier","src":"2334:19:26"}],"id":3120,"name":"FunctionCall","src":"2322:32:26"}],"id":3121,"name":"FunctionCall","src":"2306:49:26"}],"id":3122,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3100,"type":"address","value":"_a"},"id":3123,"name":"Identifier","src":"2369:2:26"}],"id":3124,"name":"FunctionCall","src":"2306:66:26"}],"id":3125,"name":"Return","src":"2299:73:26"}],"id":3126,"name":"Block","src":"2289:90:26"}],"id":3127,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3128,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3129,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":3130,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3131,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":3132,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3133,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":3134,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3135,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":3136,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3137,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":3138,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3139,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":3140,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":3153,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3141,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":3142,"name":"VariableDeclaration","src":"2991:7:26"}],"id":3143,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":3143},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":4681,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3144,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3145,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3146,"name":"Identifier","src":"3045:19:26"}],"id":3147,"name":"FunctionCall","src":"3033:32:26"}],"id":3148,"name":"FunctionCall","src":"3017:49:26"}],"id":3149,"name":"MemberAccess","src":"3017:67:26"}],"id":3150,"name":"FunctionCall","src":"3017:69:26"}],"id":3151,"name":"Return","src":"3010:76:26"}],"id":3152,"name":"Block","src":"3000:93:26"}],"id":3153,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3154,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3168,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3155,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":3156,"name":"ArrayTypeName","src":"3273:9:26"}],"id":3157,"name":"VariableDeclaration","src":"3273:16:26"}],"id":3158,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":3158},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":4687,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3159,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3160,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3161,"name":"Identifier","src":"3336:19:26"}],"id":3162,"name":"FunctionCall","src":"3324:32:26"}],"id":3163,"name":"FunctionCall","src":"3308:49:26"}],"id":3164,"name":"MemberAccess","src":"3308:67:26"}],"id":3165,"name":"FunctionCall","src":"3308:69:26"}],"id":3166,"name":"Return","src":"3301:76:26"}],"id":3167,"name":"Block","src":"3291:93:26"}],"id":3168,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3169,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3183,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3170,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":3171,"name":"ArrayTypeName","src":"3563:9:26"}],"id":3172,"name":"VariableDeclaration","src":"3563:16:26"}],"id":3173,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":3173},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":4693,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3174,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3175,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3176,"name":"Identifier","src":"3626:19:26"}],"id":3177,"name":"FunctionCall","src":"3614:32:26"}],"id":3178,"name":"FunctionCall","src":"3598:49:26"}],"id":3179,"name":"MemberAccess","src":"3598:66:26"}],"id":3180,"name":"FunctionCall","src":"3598:68:26"}],"id":3181,"name":"Return","src":"3591:75:26"}],"id":3182,"name":"Block","src":"3581:92:26"}],"id":3183,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":3289,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":3204,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3184,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":3185,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":3204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3186,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":3187,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":3204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3188,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":3189,"name":"VariableDeclaration","src":"4007:19:26"}],"id":3190,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":3191,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":4725,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3192,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3193,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3194,"name":"Identifier","src":"4075:19:26"}],"id":3195,"name":"FunctionCall","src":"4063:32:26"}],"id":3196,"name":"FunctionCall","src":"4047:49:26"}],"id":3197,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3185,"type":"address","value":"_token"},"id":3198,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3187,"type":"uint256","value":"_rate"},"id":3199,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3189,"type":"uint256","value":"_updateDate"},"id":3200,"name":"Identifier","src":"4128:11:26"}],"id":3201,"name":"FunctionCall","src":"4047:93:26"}],"id":3202,"name":"ExpressionStatement","src":"4047:93:26"}],"id":3203,"name":"Block","src":"4037:110:26"}],"id":3204,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":3226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3205,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":3206,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":3226,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3207,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":3208,"name":"VariableDeclaration","src":"4364:18:26"}],"id":3209,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3210,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":3211,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":3226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3212,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":3213,"name":"VariableDeclaration","src":"4416:7:26"}],"id":3214,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":3214},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":4711,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3215,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3216,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3217,"name":"Identifier","src":"4470:19:26"}],"id":3218,"name":"FunctionCall","src":"4458:32:26"}],"id":3219,"name":"FunctionCall","src":"4442:49:26"}],"id":3220,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"address","value":"_destination"},"id":3221,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"bytes memory","value":"_data"},"id":3222,"name":"Identifier","src":"4533:5:26"}],"id":3223,"name":"FunctionCall","src":"4442:97:26"}],"id":3224,"name":"Return","src":"4435:104:26"}],"id":3225,"name":"Block","src":"4425:121:26"}],"id":3226,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3227,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":3228,"name":"VariableDeclaration","src":"4671:10:26"}],"id":3229,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3242,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3230,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":3231,"name":"VariableDeclaration","src":"4706:4:26"}],"id":3232,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,3234,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":3241,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3233,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":3234,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3235,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3228,"type":"address","value":"_a"},"id":3236,"name":"Identifier","src":"4767:2:26"}],"id":3237,"name":"FunctionCall","src":"4753:17:26"}],"id":3238,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":3232},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3234,"type":"bool","value":"available"},"id":3239,"name":"Identifier","src":"4787:9:26"}],"id":3240,"name":"Return","src":"4780:16:26"}],"id":3241,"name":"Block","src":"4712:91:26"}],"id":3242,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3258,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3243,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":3244,"name":"VariableDeclaration","src":"4931:10:26"}],"id":3245,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3258,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3246,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":3247,"name":"VariableDeclaration","src":"4966:4:26"}],"id":3248,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,3250,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":3257,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3249,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":3250,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3251,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3244,"type":"address","value":"_a"},"id":3252,"name":"Identifier","src":"5028:2:26"}],"id":3253,"name":"FunctionCall","src":"5014:17:26"}],"id":3254,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":3248},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3250,"type":"bool","value":"redeemable"},"id":3255,"name":"Identifier","src":"5048:10:26"}],"id":3256,"name":"Return","src":"5041:17:26"}],"id":3257,"name":"Block","src":"4972:93:26"}],"id":3258,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3274,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3259,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":3260,"name":"VariableDeclaration","src":"5187:10:26"}],"id":3261,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3274,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3262,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":3263,"name":"VariableDeclaration","src":"5222:4:26"}],"id":3264,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,3266,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":3273,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3265,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":3266,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3267,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3260,"type":"address","value":"_a"},"id":3268,"name":"Identifier","src":"5282:2:26"}],"id":3269,"name":"FunctionCall","src":"5268:17:26"}],"id":3270,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":3264},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3266,"type":"bool","value":"loadable"},"id":3271,"name":"Identifier","src":"5302:8:26"}],"id":3272,"name":"Return","src":"5295:15:26"}],"id":3273,"name":"Block","src":"5228:89:26"}],"id":3274,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":3289,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3275,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3288,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3276,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":3277,"name":"VariableDeclaration","src":"5482:7:26"}],"id":3278,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":3278},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":4716,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4726,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3279,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3280,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3080,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3281,"name":"Identifier","src":"5536:19:26"}],"id":3282,"name":"FunctionCall","src":"5524:32:26"}],"id":3283,"name":"FunctionCall","src":"5508:49:26"}],"id":3284,"name":"MemberAccess","src":"5508:60:26"}],"id":3285,"name":"FunctionCall","src":"5508:62:26"}],"id":3286,"name":"Return","src":"5501:69:26"}],"id":3287,"name":"Block","src":"5491:86:26"}],"id":3288,"name":"FunctionDefinition","src":"5436:141:26"}],"id":3289,"name":"ContractDefinition","src":"958:4621:26"}],"id":3290,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[3329]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3291,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":2391,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3330,"symbolAliases":[null],"unitAlias":""},"id":3292,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":2610,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":3330,"symbolAliases":[null],"unitAlias":""},"id":3293,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[3329],"name":"Transferrable","scope":3330},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2609,"type":"library SafeERC20"},"id":3294,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":3295,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":3296,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":3329,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3328,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3297,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":3298,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":3328,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3299,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":3300,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":3328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3301,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":3302,"name":"VariableDeclaration","src":"1426:15:27"}],"id":3303,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":3304,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"address","value":"_asset"},"id":3305,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3306,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3307,"name":"Literal","src":"1528:1:27"}],"id":3308,"name":"FunctionCall","src":"1520:10:27"}],"id":3309,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"address payable","value":"_to"},"id":3310,"name":"Identifier","src":"1546:3:27"}],"id":3312,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3302,"type":"uint256","value":"_amount"},"id":3313,"name":"Identifier","src":"1559:7:27"}],"id":3314,"name":"FunctionCall","src":"1546:21:27"}],"id":3315,"name":"ExpressionStatement","src":"1546:21:27"}],"id":3316,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":2423,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":3317,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3300,"type":"address","value":"_asset"},"id":3318,"name":"Identifier","src":"1604:6:27"}],"id":3319,"name":"FunctionCall","src":"1598:13:27"}],"id":3320,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3298,"type":"address payable","value":"_to"},"id":3321,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3302,"type":"uint256","value":"_amount"},"id":3322,"name":"Identifier","src":"1630:7:27"}],"id":3323,"name":"FunctionCall","src":"1598:40:27"}],"id":3324,"name":"ExpressionStatement","src":"1598:40:27"}],"id":3325,"name":"Block","src":"1584:65:27"}],"id":3326,"name":"IfStatement","src":"1506:143:27"}],"id":3327,"name":"Block","src":"1452:203:27"}],"id":3328,"name":"FunctionDefinition","src":"1366:289:27"}],"id":3329,"name":"ContractDefinition","src":"961:696:27"}],"id":3330,"name":"SourceUnit","src":"773:885:27"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[3349],"Licence":[3873]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3331,"name":"PragmaDirective","src":"767:24:28"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3332,"name":"ImportDirective","src":"793:34:28"},{"attributes":{"SourceUnit":2610,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3333,"name":"ImportDirective","src":"828:35:28"},{"attributes":{"SourceUnit":2871,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3334,"name":"ImportDirective","src":"864:38:28"},{"attributes":{"SourceUnit":2916,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3335,"name":"ImportDirective","src":"903:39:28"},{"attributes":{"SourceUnit":3330,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":3874,"symbolAliases":[null],"unitAlias":""},"id":3336,"name":"ImportDirective","src":"943:39:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[3349],"name":"ILicence","scope":3874},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":3349,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3337,"name":"ElementaryTypeName","src":"1125:7:28"}],"id":3338,"name":"VariableDeclaration","src":"1125:7:28"},{"attributes":{"constant":false,"name":"","scope":3343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3339,"name":"ElementaryTypeName","src":"1134:7:28"}],"id":3340,"name":"VariableDeclaration","src":"1134:7:28"}],"id":3341,"name":"ParameterList","src":"1124:18:28"},{"attributes":{"parameters":[null]},"children":[],"id":3342,"name":"ParameterList","src":"1159:0:28"}],"id":3343,"name":"FunctionDefinition","src":"1111:49:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":3349,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3344,"name":"ElementaryTypeName","src":"1195:7:28"}],"id":3345,"name":"VariableDeclaration","src":"1195:7:28"}],"id":3346,"name":"ParameterList","src":"1194:9:28"},{"attributes":{"parameters":[null]},"children":[],"id":3347,"name":"ParameterList","src":"1212:0:28"}],"id":3348,"name":"FunctionDefinition","src":"1166:47:28"}],"id":3349,"name":"ContractDefinition","src":"1086:129:28"},{"attributes":{"contractDependencies":[2870,2915,3329],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[3873,2870,2915,3329],"name":"Licence","scope":3874},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3329,"type":"contract Transferrable"},"id":3350,"name":"UserDefinedTypeName","src":"1401:13:28"}],"id":3351,"name":"InheritanceSpecifier","src":"1401:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":3352,"name":"UserDefinedTypeName","src":"1416:13:28"}],"id":3353,"name":"InheritanceSpecifier","src":"1416:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2870,"type":"contract Controllable"},"id":3354,"name":"UserDefinedTypeName","src":"1431:12:28"}],"id":3355,"name":"InheritanceSpecifier","src":"1431:12:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":3356,"name":"UserDefinedTypeName","src":"1456:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":3357,"name":"ElementaryTypeName","src":"1469:7:28"}],"id":3358,"name":"UsingForDirective","src":"1450:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2609,"type":"library SafeERC20"},"id":3359,"name":"UserDefinedTypeName","src":"1488:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":3360,"name":"UserDefinedTypeName","src":"1502:5:28"}],"id":3361,"name":"UsingForDirective","src":"1482:26:28"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":3365,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3362,"name":"ElementaryTypeName","src":"1614:7:28"}],"id":3363,"name":"VariableDeclaration","src":"1614:15:28"}],"id":3364,"name":"ParameterList","src":"1613:17:28"}],"id":3365,"name":"EventDefinition","src":"1590:41:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":3369,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3366,"name":"ElementaryTypeName","src":"1661:7:28"}],"id":3367,"name":"VariableDeclaration","src":"1661:17:28"}],"id":3368,"name":"ParameterList","src":"1660:19:28"}],"id":3369,"name":"EventDefinition","src":"1636:44:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":3373,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3370,"name":"ElementaryTypeName","src":"1710:7:28"}],"id":3371,"name":"VariableDeclaration","src":"1710:18:28"}],"id":3372,"name":"ParameterList","src":"1709:20:28"}],"id":3373,"name":"EventDefinition","src":"1685:45:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":3377,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3374,"name":"ElementaryTypeName","src":"1767:7:28"}],"id":3375,"name":"VariableDeclaration","src":"1767:15:28"}],"id":3376,"name":"ParameterList","src":"1766:17:28"}],"id":3377,"name":"EventDefinition","src":"1735:49:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":3381,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3378,"name":"ElementaryTypeName","src":"1816:7:28"}],"id":3379,"name":"VariableDeclaration","src":"1816:18:28"}],"id":3380,"name":"ParameterList","src":"1815:20:28"}],"id":3381,"name":"EventDefinition","src":"1789:47:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3391,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3382,"name":"ElementaryTypeName","src":"1873:7:28"}],"id":3383,"name":"VariableDeclaration","src":"1873:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3391,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3384,"name":"ElementaryTypeName","src":"1888:7:28"}],"id":3385,"name":"VariableDeclaration","src":"1888:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3391,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3386,"name":"ElementaryTypeName","src":"1901:7:28"}],"id":3387,"name":"VariableDeclaration","src":"1901:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3391,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3388,"name":"ElementaryTypeName","src":"1917:7:28"}],"id":3389,"name":"VariableDeclaration","src":"1917:15:28"}],"id":3390,"name":"ParameterList","src":"1872:61:28"}],"id":3391,"name":"EventDefinition","src":"1842:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3392,"name":"ElementaryTypeName","src":"1970:7:28"}],"id":3393,"name":"VariableDeclaration","src":"1970:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3394,"name":"ElementaryTypeName","src":"1985:7:28"}],"id":3395,"name":"VariableDeclaration","src":"1985:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3396,"name":"ElementaryTypeName","src":"1998:7:28"}],"id":3397,"name":"VariableDeclaration","src":"1998:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3401,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3398,"name":"ElementaryTypeName","src":"2014:7:28"}],"id":3399,"name":"VariableDeclaration","src":"2014:15:28"}],"id":3400,"name":"ParameterList","src":"1969:61:28"}],"id":3401,"name":"EventDefinition","src":"1939:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3409,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3402,"name":"ElementaryTypeName","src":"2051:7:28"}],"id":3403,"name":"VariableDeclaration","src":"2051:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3409,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3404,"name":"ElementaryTypeName","src":"2064:7:28"}],"id":3405,"name":"VariableDeclaration","src":"2064:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3409,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3406,"name":"ElementaryTypeName","src":"2080:7:28"}],"id":3407,"name":"VariableDeclaration","src":"2080:15:28"}],"id":3408,"name":"ParameterList","src":"2050:46:28"}],"id":3409,"name":"EventDefinition","src":"2037:60:28"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":3873,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3410,"name":"ElementaryTypeName","src":"2209:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":3411,"name":"Literal","src":"2252:4:28"}],"id":3412,"name":"VariableDeclaration","src":"2209:47:28"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":3873,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3413,"name":"ElementaryTypeName","src":"2262:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3414,"name":"Literal","src":"2305:1:28"}],"id":3415,"name":"VariableDeclaration","src":"2262:44:28"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":3873,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3416,"name":"ElementaryTypeName","src":"2313:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":3417,"name":"Literal","src":"2351:42:28"}],"id":3418,"name":"VariableDeclaration","src":"2313:80:28"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":3873,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3419,"name":"ElementaryTypeName","src":"2433:15:28"}],"id":3420,"name":"VariableDeclaration","src":"2433:36:28"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":3873,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3421,"name":"ElementaryTypeName","src":"2475:15:28"}],"id":3422,"name":"VariableDeclaration","src":"2475:36:28"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":3873,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3423,"name":"ElementaryTypeName","src":"2517:7:28"}],"id":3424,"name":"VariableDeclaration","src":"2517:27:28"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":3873,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3425,"name":"ElementaryTypeName","src":"2551:4:28"}],"id":3426,"name":"VariableDeclaration","src":"2551:31:28"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":3873,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3427,"name":"ElementaryTypeName","src":"2588:4:28"}],"id":3428,"name":"VariableDeclaration","src":"2588:31:28"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":3873,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3429,"name":"ElementaryTypeName","src":"2625:4:28"}],"id":3430,"name":"VariableDeclaration","src":"2625:30:28"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":3873,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3431,"name":"ElementaryTypeName","src":"2661:4:28"}],"id":3432,"name":"VariableDeclaration","src":"2661:38:28"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":3873,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3433,"name":"ElementaryTypeName","src":"2853:7:28"}],"id":3434,"name":"VariableDeclaration","src":"2853:36:28"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3435,"name":"ParameterList","src":"2990:2:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3436,"name":"Identifier","src":"3003:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3437,"name":"Identifier","src":"3011:3:28"}],"id":3438,"name":"MemberAccess","src":"3011:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"address","value":"_licenceDAO"},"id":3439,"name":"Identifier","src":"3025:11:28"}],"id":3440,"name":"BinaryOperation","src":"3011:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":3441,"name":"Literal","src":"3038:26:28"}],"id":3442,"name":"FunctionCall","src":"3003:62:28"}],"id":3443,"name":"ExpressionStatement","src":"3003:62:28"},{"id":3444,"name":"PlaceholderStatement","src":"3075:1:28"}],"id":3445,"name":"Block","src":"2993:90:28"}],"id":3446,"name":"ModifierDefinition","src":"2974:109:28"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3447,"name":"ElementaryTypeName","src":"3628:7:28"}],"id":3448,"name":"VariableDeclaration","src":"3628:17:28"},{"attributes":{"constant":false,"name":"_float_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3449,"name":"ElementaryTypeName","src":"3647:15:28"}],"id":3450,"name":"VariableDeclaration","src":"3647:23:28"},{"attributes":{"constant":false,"name":"_holder_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3451,"name":"ElementaryTypeName","src":"3672:15:28"}],"id":3452,"name":"VariableDeclaration","src":"3672:24:28"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3453,"name":"ElementaryTypeName","src":"3698:7:28"}],"id":3454,"name":"VariableDeclaration","src":"3698:20:28"},{"attributes":{"constant":false,"name":"_ens_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3455,"name":"ElementaryTypeName","src":"3720:7:28"}],"id":3456,"name":"VariableDeclaration","src":"3720:13:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":3502,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3457,"name":"ElementaryTypeName","src":"3735:7:28"}],"id":3458,"name":"VariableDeclaration","src":"3735:24:28"}],"id":3459,"name":"ParameterList","src":"3627:133:28"},{"attributes":{"parameters":[null]},"children":[],"id":3466,"name":"ParameterList","src":"3848:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":3460,"name":"Identifier","src":"3784:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3456,"type":"address","value":"_ens_"},"id":3461,"name":"Identifier","src":"3798:5:28"}],"id":3462,"name":"ModifierInvocation","src":"3784:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"type(contract Controllable)","value":"Controllable"},"id":3463,"name":"Identifier","src":"3813:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3458,"type":"bytes32","value":"_controllerNode_"},"id":3464,"name":"Identifier","src":"3826:16:28"}],"id":3465,"name":"ModifierInvocation","src":"3813:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3467,"name":"Identifier","src":"3858:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3415,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":3468,"name":"Identifier","src":"3866:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3448,"type":"uint256","value":"_licence_"},"id":3469,"name":"Identifier","src":"3886:9:28"}],"id":3470,"name":"BinaryOperation","src":"3866:29:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3448,"type":"uint256","value":"_licence_"},"id":3471,"name":"Identifier","src":"3899:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3472,"name":"Identifier","src":"3912:16:28"}],"id":3473,"name":"BinaryOperation","src":"3899:29:28"}],"id":3474,"name":"BinaryOperation","src":"3866:62:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":3475,"name":"Literal","src":"3930:29:28"}],"id":3476,"name":"FunctionCall","src":"3858:102:28"}],"id":3477,"name":"ExpressionStatement","src":"3858:102:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3434,"type":"uint256","value":"_licenceAmountScaled"},"id":3478,"name":"Identifier","src":"3970:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3448,"type":"uint256","value":"_licence_"},"id":3479,"name":"Identifier","src":"3993:9:28"}],"id":3480,"name":"Assignment","src":"3970:32:28"}],"id":3481,"name":"ExpressionStatement","src":"3970:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3482,"name":"Identifier","src":"4012:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"address payable","value":"_float_"},"id":3483,"name":"Identifier","src":"4027:7:28"}],"id":3484,"name":"Assignment","src":"4012:22:28"}],"id":3485,"name":"ExpressionStatement","src":"4012:22:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3486,"name":"Identifier","src":"4044:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3452,"type":"address payable","value":"_holder_"},"id":3487,"name":"Identifier","src":"4059:8:28"}],"id":3488,"name":"Assignment","src":"4044:23:28"}],"id":3489,"name":"ExpressionStatement","src":"4044:23:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3454,"type":"address","value":"_tknAddress_"},"id":3490,"name":"Identifier","src":"4081:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3491,"name":"ElementaryTypeNameExpression","src":"4097:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3492,"name":"Literal","src":"4105:1:28"}],"id":3493,"name":"FunctionCall","src":"4097:10:28"}],"id":3494,"name":"BinaryOperation","src":"4081:26:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3418,"type":"address","value":"_tknContractAddress"},"id":3495,"name":"Identifier","src":"4123:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3454,"type":"address","value":"_tknAddress_"},"id":3496,"name":"Identifier","src":"4145:12:28"}],"id":3497,"name":"Assignment","src":"4123:34:28"}],"id":3498,"name":"ExpressionStatement","src":"4123:34:28"}],"id":3499,"name":"Block","src":"4109:59:28"}],"id":3500,"name":"IfStatement","src":"4077:91:28"}],"id":3501,"name":"Block","src":"3848:326:28"}],"id":3502,"name":"FunctionDefinition","src":"3616:558:28"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":3873,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3503,"name":"ParameterList","src":"4290:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3504,"name":"ParameterList","src":"4310:0:28"},{"attributes":{"statements":[null]},"children":[],"id":3505,"name":"Block","src":"4310:2:28"}],"id":3506,"name":"FunctionDefinition","src":"4282:30:28"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3507,"name":"ParameterList","src":"4503:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3514,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3508,"name":"ElementaryTypeName","src":"4529:7:28"}],"id":3509,"name":"VariableDeclaration","src":"4529:7:28"}],"id":3510,"name":"ParameterList","src":"4528:9:28"},{"children":[{"attributes":{"functionReturnParameters":3510},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3434,"type":"uint256","value":"_licenceAmountScaled"},"id":3511,"name":"Identifier","src":"4555:20:28"}],"id":3512,"name":"Return","src":"4548:27:28"}],"id":3513,"name":"Block","src":"4538:44:28"}],"id":3514,"name":"FunctionDefinition","src":"4475:107:28"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3515,"name":"ParameterList","src":"4749:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3522,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3516,"name":"ElementaryTypeName","src":"4775:7:28"}],"id":3517,"name":"VariableDeclaration","src":"4775:7:28"}],"id":3518,"name":"ParameterList","src":"4774:9:28"},{"children":[{"attributes":{"functionReturnParameters":3518},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3519,"name":"Identifier","src":"4801:12:28"}],"id":3520,"name":"Return","src":"4794:19:28"}],"id":3521,"name":"Block","src":"4784:36:28"}],"id":3522,"name":"FunctionDefinition","src":"4729:91:28"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3523,"name":"ParameterList","src":"4970:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3530,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3524,"name":"ElementaryTypeName","src":"4996:7:28"}],"id":3525,"name":"VariableDeclaration","src":"4996:7:28"}],"id":3526,"name":"ParameterList","src":"4995:9:28"},{"children":[{"attributes":{"functionReturnParameters":3526},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3527,"name":"Identifier","src":"5022:12:28"}],"id":3528,"name":"Return","src":"5015:19:28"}],"id":3529,"name":"Block","src":"5005:36:28"}],"id":3530,"name":"FunctionDefinition","src":"4950:91:28"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3531,"name":"ParameterList","src":"5172:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3538,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3532,"name":"ElementaryTypeName","src":"5198:7:28"}],"id":3533,"name":"VariableDeclaration","src":"5198:7:28"}],"id":3534,"name":"ParameterList","src":"5197:9:28"},{"children":[{"attributes":{"functionReturnParameters":3534},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"address","value":"_licenceDAO"},"id":3535,"name":"Identifier","src":"5224:11:28"}],"id":3536,"name":"Return","src":"5217:18:28"}],"id":3537,"name":"Block","src":"5207:35:28"}],"id":3538,"name":"FunctionDefinition","src":"5153:89:28"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3539,"name":"ParameterList","src":"5369:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3546,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3540,"name":"ElementaryTypeName","src":"5395:7:28"}],"id":3541,"name":"VariableDeclaration","src":"5395:7:28"}],"id":3542,"name":"ParameterList","src":"5394:9:28"},{"children":[{"attributes":{"functionReturnParameters":3542},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3418,"type":"address","value":"_tknContractAddress"},"id":3543,"name":"Identifier","src":"5421:19:28"}],"id":3544,"name":"Return","src":"5414:26:28"}],"id":3545,"name":"Block","src":"5404:43:28"}],"id":3546,"name":"FunctionDefinition","src":"5342:105:28"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3547,"name":"ParameterList","src":"5571:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3550,"name":"ParameterList","src":"5593:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3548,"name":"Identifier","src":"5583:9:28"}],"id":3549,"name":"ModifierInvocation","src":"5583:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3426,"type":"bool","value":"_lockedCryptoFloat"},"id":3551,"name":"Identifier","src":"5603:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3552,"name":"Literal","src":"5624:4:28"}],"id":3553,"name":"Assignment","src":"5603:25:28"}],"id":3554,"name":"ExpressionStatement","src":"5603:25:28"}],"id":3555,"name":"Block","src":"5593:42:28"}],"id":3556,"name":"FunctionDefinition","src":"5553:82:28"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3557,"name":"ParameterList","src":"5760:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3560,"name":"ParameterList","src":"5782:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3558,"name":"Identifier","src":"5772:9:28"}],"id":3559,"name":"ModifierInvocation","src":"5772:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3428,"type":"bool","value":"_lockedTokenHolder"},"id":3561,"name":"Identifier","src":"5792:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3562,"name":"Literal","src":"5813:4:28"}],"id":3563,"name":"Assignment","src":"5792:25:28"}],"id":3564,"name":"ExpressionStatement","src":"5792:25:28"}],"id":3565,"name":"Block","src":"5782:42:28"}],"id":3566,"name":"FunctionDefinition","src":"5741:83:28"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3567,"name":"ParameterList","src":"5945:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3570,"name":"ParameterList","src":"5967:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3568,"name":"Identifier","src":"5957:9:28"}],"id":3569,"name":"ModifierInvocation","src":"5957:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"bool","value":"_lockedLicenceDAO"},"id":3571,"name":"Identifier","src":"5977:17:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3572,"name":"Literal","src":"5997:4:28"}],"id":3573,"name":"Assignment","src":"5977:24:28"}],"id":3574,"name":"ExpressionStatement","src":"5977:24:28"}],"id":3575,"name":"Block","src":"5967:41:28"}],"id":3576,"name":"FunctionDefinition","src":"5922:86:28"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3577,"name":"ParameterList","src":"6137:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3580,"name":"ParameterList","src":"6159:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3578,"name":"Identifier","src":"6149:9:28"}],"id":3579,"name":"ModifierInvocation","src":"6149:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"bool","value":"_lockedTKNContractAddress"},"id":3581,"name":"Identifier","src":"6169:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3582,"name":"Literal","src":"6197:4:28"}],"id":3583,"name":"Assignment","src":"6169:32:28"}],"id":3584,"name":"ExpressionStatement","src":"6169:32:28"}],"id":3585,"name":"Block","src":"6159:49:28"}],"id":3586,"name":"FunctionDefinition","src":"6106:102:28"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":3609,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3587,"name":"ElementaryTypeName","src":"6359:15:28"}],"id":3588,"name":"VariableDeclaration","src":"6359:25:28"}],"id":3589,"name":"ParameterList","src":"6358:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":3592,"name":"ParameterList","src":"6405:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3590,"name":"Identifier","src":"6395:9:28"}],"id":3591,"name":"ModifierInvocation","src":"6395:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3593,"name":"Identifier","src":"6415:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"function () view returns (bool)","value":"floatLocked"},"id":3594,"name":"Identifier","src":"6424:11:28"}],"id":3595,"name":"FunctionCall","src":"6424:13:28"}],"id":3596,"name":"UnaryOperation","src":"6423:14:28"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":3597,"name":"Literal","src":"6439:17:28"}],"id":3598,"name":"FunctionCall","src":"6415:42:28"}],"id":3599,"name":"ExpressionStatement","src":"6415:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3600,"name":"Identifier","src":"6467:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3588,"type":"address payable","value":"_newFloat"},"id":3601,"name":"Identifier","src":"6482:9:28"}],"id":3602,"name":"Assignment","src":"6467:24:28"}],"id":3603,"name":"ExpressionStatement","src":"6467:24:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":3604,"name":"Identifier","src":"6506:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3588,"type":"address payable","value":"_newFloat"},"id":3605,"name":"Identifier","src":"6525:9:28"}],"id":3606,"name":"FunctionCall","src":"6506:29:28"}],"id":3607,"name":"EmitStatement","src":"6501:34:28"}],"id":3608,"name":"Block","src":"6405:137:28"}],"id":3609,"name":"FunctionDefinition","src":"6338:204:28"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":3632,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3610,"name":"ElementaryTypeName","src":"6700:15:28"}],"id":3611,"name":"VariableDeclaration","src":"6700:26:28"}],"id":3612,"name":"ParameterList","src":"6699:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":3615,"name":"ParameterList","src":"6747:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3613,"name":"Identifier","src":"6737:9:28"}],"id":3614,"name":"ModifierInvocation","src":"6737:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3616,"name":"Identifier","src":"6757:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3856,"type":"function () view returns (bool)","value":"holderLocked"},"id":3617,"name":"Identifier","src":"6766:12:28"}],"id":3618,"name":"FunctionCall","src":"6766:14:28"}],"id":3619,"name":"UnaryOperation","src":"6765:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":3620,"name":"Literal","src":"6782:27:28"}],"id":3621,"name":"FunctionCall","src":"6757:53:28"}],"id":3622,"name":"ExpressionStatement","src":"6757:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3623,"name":"Identifier","src":"6820:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3611,"type":"address payable","value":"_newHolder"},"id":3624,"name":"Identifier","src":"6835:10:28"}],"id":3625,"name":"Assignment","src":"6820:25:28"}],"id":3626,"name":"ExpressionStatement","src":"6820:25:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3373,"type":"function (address)","value":"UpdatedTokenHolder"},"id":3627,"name":"Identifier","src":"6860:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3611,"type":"address payable","value":"_newHolder"},"id":3628,"name":"Identifier","src":"6879:10:28"}],"id":3629,"name":"FunctionCall","src":"6860:30:28"}],"id":3630,"name":"EmitStatement","src":"6855:35:28"}],"id":3631,"name":"Block","src":"6747:150:28"}],"id":3632,"name":"FunctionDefinition","src":"6678:219:28"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":3655,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3633,"name":"ElementaryTypeName","src":"7053:7:28"}],"id":3634,"name":"VariableDeclaration","src":"7053:15:28"}],"id":3635,"name":"ParameterList","src":"7052:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":3638,"name":"ParameterList","src":"7089:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3636,"name":"Identifier","src":"7079:9:28"}],"id":3637,"name":"ModifierInvocation","src":"7079:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3639,"name":"Identifier","src":"7099:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3864,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":3640,"name":"Identifier","src":"7108:16:28"}],"id":3641,"name":"FunctionCall","src":"7108:18:28"}],"id":3642,"name":"UnaryOperation","src":"7107:19:28"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":3643,"name":"Literal","src":"7128:15:28"}],"id":3644,"name":"FunctionCall","src":"7099:45:28"}],"id":3645,"name":"ExpressionStatement","src":"7099:45:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"address","value":"_licenceDAO"},"id":3646,"name":"Identifier","src":"7154:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3634,"type":"address","value":"_newDAO"},"id":3647,"name":"Identifier","src":"7168:7:28"}],"id":3648,"name":"Assignment","src":"7154:21:28"}],"id":3649,"name":"ExpressionStatement","src":"7154:21:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3365,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":3650,"name":"Identifier","src":"7190:17:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3634,"type":"address","value":"_newDAO"},"id":3651,"name":"Identifier","src":"7208:7:28"}],"id":3652,"name":"FunctionCall","src":"7190:26:28"}],"id":3653,"name":"EmitStatement","src":"7185:31:28"}],"id":3654,"name":"Block","src":"7089:134:28"}],"id":3655,"name":"FunctionDefinition","src":"7027:196:28"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":3678,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3656,"name":"ElementaryTypeName","src":"7388:7:28"}],"id":3657,"name":"VariableDeclaration","src":"7388:15:28"}],"id":3658,"name":"ParameterList","src":"7387:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":3661,"name":"ParameterList","src":"7424:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3659,"name":"Identifier","src":"7414:9:28"}],"id":3660,"name":"ModifierInvocation","src":"7414:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3662,"name":"Identifier","src":"7434:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3872,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":3663,"name":"Identifier","src":"7443:24:28"}],"id":3664,"name":"FunctionCall","src":"7443:26:28"}],"id":3665,"name":"UnaryOperation","src":"7442:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":3666,"name":"Literal","src":"7471:15:28"}],"id":3667,"name":"FunctionCall","src":"7434:53:28"}],"id":3668,"name":"ExpressionStatement","src":"7434:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3418,"type":"address","value":"_tknContractAddress"},"id":3669,"name":"Identifier","src":"7497:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"address","value":"_newTKN"},"id":3670,"name":"Identifier","src":"7519:7:28"}],"id":3671,"name":"Assignment","src":"7497:29:28"}],"id":3672,"name":"ExpressionStatement","src":"7497:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3377,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":3673,"name":"Identifier","src":"7541:25:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"address","value":"_newTKN"},"id":3674,"name":"Identifier","src":"7567:7:28"}],"id":3675,"name":"FunctionCall","src":"7541:34:28"}],"id":3676,"name":"EmitStatement","src":"7536:39:28"}],"id":3677,"name":"Block","src":"7424:158:28"}],"id":3678,"name":"FunctionDefinition","src":"7354:228:28"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":3705,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3679,"name":"ElementaryTypeName","src":"7752:7:28"}],"id":3680,"name":"VariableDeclaration","src":"7752:18:28"}],"id":3681,"name":"ParameterList","src":"7751:20:28"},{"attributes":{"parameters":[null]},"children":[],"id":3684,"name":"ParameterList","src":"7789:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3446,"type":"modifier ()","value":"onlyDAO"},"id":3682,"name":"Identifier","src":"7781:7:28"}],"id":3683,"name":"ModifierInvocation","src":"7781:7:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3685,"name":"Identifier","src":"7799:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3415,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":3686,"name":"Identifier","src":"7807:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3680,"type":"uint256","value":"_newAmount"},"id":3687,"name":"Identifier","src":"7827:10:28"}],"id":3688,"name":"BinaryOperation","src":"7807:30:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3680,"type":"uint256","value":"_newAmount"},"id":3689,"name":"Identifier","src":"7841:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3690,"name":"Identifier","src":"7855:16:28"}],"id":3691,"name":"BinaryOperation","src":"7841:30:28"}],"id":3692,"name":"BinaryOperation","src":"7807:64:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":3693,"name":"Literal","src":"7873:29:28"}],"id":3694,"name":"FunctionCall","src":"7799:104:28"}],"id":3695,"name":"ExpressionStatement","src":"7799:104:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3434,"type":"uint256","value":"_licenceAmountScaled"},"id":3696,"name":"Identifier","src":"7913:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3680,"type":"uint256","value":"_newAmount"},"id":3697,"name":"Identifier","src":"7936:10:28"}],"id":3698,"name":"Assignment","src":"7913:33:28"}],"id":3699,"name":"ExpressionStatement","src":"7913:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3381,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":3700,"name":"Identifier","src":"7961:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3680,"type":"uint256","value":"_newAmount"},"id":3701,"name":"Identifier","src":"7982:10:28"}],"id":3702,"name":"FunctionCall","src":"7961:32:28"}],"id":3703,"name":"EmitStatement","src":"7956:37:28"}],"id":3704,"name":"Block","src":"7789:211:28"}],"id":3705,"name":"FunctionDefinition","src":"7723:277:28"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":3873,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":3816,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3706,"name":"ElementaryTypeName","src":"8286:7:28"}],"id":3707,"name":"VariableDeclaration","src":"8286:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":3816,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3708,"name":"ElementaryTypeName","src":"8302:7:28"}],"id":3709,"name":"VariableDeclaration","src":"8302:15:28"}],"id":3710,"name":"ParameterList","src":"8285:33:28"},{"attributes":{"parameters":[null]},"children":[],"id":3711,"name":"ParameterList","src":"8336:0:28"},{"children":[{"attributes":{"assignments":[3713]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":3815,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3712,"name":"ElementaryTypeName","src":"8346:7:28"}],"id":3713,"name":"VariableDeclaration","src":"8346:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3709,"type":"uint256","value":"_amount"},"id":3714,"name":"Identifier","src":"8367:7:28"}],"id":3715,"name":"VariableDeclarationStatement","src":"8346:28:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3716,"name":"Identifier","src":"8433:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3418,"type":"address","value":"_tknContractAddress"},"id":3717,"name":"Identifier","src":"8443:19:28"}],"id":3718,"name":"BinaryOperation","src":"8433:29:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2448,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":3719,"name":"Identifier","src":"8478:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3720,"name":"Identifier","src":"8484:6:28"}],"id":3721,"name":"FunctionCall","src":"8478:13:28"}],"id":3722,"name":"MemberAccess","src":"8478:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3723,"name":"Identifier","src":"8509:3:28"}],"id":3724,"name":"MemberAccess","src":"8509:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3725,"name":"Identifier","src":"8521:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3726,"name":"Identifier","src":"8535:10:28"}],"id":3727,"name":"FunctionCall","src":"8478:68:28"}],"id":3728,"name":"ExpressionStatement","src":"8478:68:28"}],"id":3729,"name":"Block","src":"8464:93:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3730,"name":"Identifier","src":"8577:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2720,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2695,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3709,"type":"uint256","value":"_amount"},"id":3731,"name":"Identifier","src":"8590:7:28"}],"id":3732,"name":"MemberAccess","src":"8590:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3733,"name":"Identifier","src":"8602:16:28"}],"id":3734,"name":"FunctionCall","src":"8590:29:28"}],"id":3735,"name":"MemberAccess","src":"8590:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3434,"type":"uint256","value":"_licenceAmountScaled"},"id":3736,"name":"Identifier","src":"8624:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3737,"name":"Identifier","src":"8647:16:28"}],"id":3738,"name":"BinaryOperation","src":"8624:39:28"}],"id":3739,"name":"FunctionCall","src":"8590:74:28"}],"id":3740,"name":"Assignment","src":"8577:87:28"}],"id":3741,"name":"ExpressionStatement","src":"8577:87:28"},{"attributes":{"assignments":[3743]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":3805,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3742,"name":"ElementaryTypeName","src":"8678:7:28"}],"id":3743,"name":"VariableDeclaration","src":"8678:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3709,"type":"uint256","value":"_amount"},"id":3744,"name":"Identifier","src":"8702:7:28"}],"id":3745,"name":"MemberAccess","src":"8702:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3746,"name":"Identifier","src":"8714:10:28"}],"id":3747,"name":"FunctionCall","src":"8702:23:28"}],"id":3748,"name":"VariableDeclarationStatement","src":"8678:47:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3749,"name":"Identifier","src":"8744:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3750,"name":"ElementaryTypeNameExpression","src":"8754:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3751,"name":"Literal","src":"8762:1:28"}],"id":3752,"name":"FunctionCall","src":"8754:10:28"}],"id":3753,"name":"BinaryOperation","src":"8744:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2448,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":3754,"name":"Identifier","src":"8784:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3755,"name":"Identifier","src":"8790:6:28"}],"id":3756,"name":"FunctionCall","src":"8784:13:28"}],"id":3757,"name":"MemberAccess","src":"8784:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3758,"name":"Identifier","src":"8815:3:28"}],"id":3759,"name":"MemberAccess","src":"8815:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3760,"name":"Identifier","src":"8827:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3743,"type":"uint256","value":"licenceAmount"},"id":3761,"name":"Identifier","src":"8841:13:28"}],"id":3762,"name":"FunctionCall","src":"8784:71:28"}],"id":3763,"name":"ExpressionStatement","src":"8784:71:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2448,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":3764,"name":"Identifier","src":"8873:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3765,"name":"Identifier","src":"8879:6:28"}],"id":3766,"name":"FunctionCall","src":"8873:13:28"}],"id":3767,"name":"MemberAccess","src":"8873:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3768,"name":"Identifier","src":"8904:3:28"}],"id":3769,"name":"MemberAccess","src":"8904:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3770,"name":"Identifier","src":"8916:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3771,"name":"Identifier","src":"8930:10:28"}],"id":3772,"name":"FunctionCall","src":"8873:68:28"}],"id":3773,"name":"ExpressionStatement","src":"8873:68:28"}],"id":3774,"name":"Block","src":"8766:190:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":3775,"name":"Identifier","src":"8980:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3776,"name":"Identifier","src":"8988:3:28"}],"id":3777,"name":"MemberAccess","src":"8988:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3709,"type":"uint256","value":"_amount"},"id":3778,"name":"Identifier","src":"9001:7:28"}],"id":3779,"name":"BinaryOperation","src":"8988:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":3780,"name":"Literal","src":"9010:33:28"}],"id":3781,"name":"FunctionCall","src":"8980:64:28"}],"id":3782,"name":"ExpressionStatement","src":"8980:64:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3783,"name":"Identifier","src":"9062:12:28"}],"id":3785,"name":"MemberAccess","src":"9062:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3743,"type":"uint256","value":"licenceAmount"},"id":3786,"name":"Identifier","src":"9084:13:28"}],"id":3787,"name":"FunctionCall","src":"9062:36:28"}],"id":3788,"name":"ExpressionStatement","src":"9062:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3789,"name":"Identifier","src":"9116:12:28"}],"id":3791,"name":"MemberAccess","src":"9116:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3792,"name":"Identifier","src":"9138:10:28"}],"id":3793,"name":"FunctionCall","src":"9116:33:28"}],"id":3794,"name":"ExpressionStatement","src":"9116:33:28"}],"id":3795,"name":"Block","src":"8962:202:28"}],"id":3796,"name":"IfStatement","src":"8740:424:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3391,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":3797,"name":"Identifier","src":"9183:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3798,"name":"Identifier","src":"9208:3:28"}],"id":3799,"name":"MemberAccess","src":"9208:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3422,"type":"address payable","value":"_tokenHolder"},"id":3800,"name":"Identifier","src":"9220:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3801,"name":"Identifier","src":"9234:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3743,"type":"uint256","value":"licenceAmount"},"id":3802,"name":"Identifier","src":"9242:13:28"}],"id":3803,"name":"FunctionCall","src":"9183:73:28"}],"id":3804,"name":"EmitStatement","src":"9178:78:28"}],"id":3805,"name":"Block","src":"8563:704:28"}],"id":3806,"name":"IfStatement","src":"8429:838:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3401,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":3807,"name":"Identifier","src":"9282:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":3808,"name":"Identifier","src":"9307:3:28"}],"id":3809,"name":"MemberAccess","src":"9307:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"address payable","value":"_cryptoFloat"},"id":3810,"name":"Identifier","src":"9319:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3707,"type":"address","value":"_asset"},"id":3811,"name":"Identifier","src":"9333:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"loadAmount"},"id":3812,"name":"Identifier","src":"9341:10:28"}],"id":3813,"name":"FunctionCall","src":"9282:70:28"}],"id":3814,"name":"EmitStatement","src":"9277:75:28"}],"id":3815,"name":"Block","src":"8336:1023:28"}],"id":3816,"name":"FunctionDefinition","src":"8272:1087:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":3873,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3840,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3817,"name":"ElementaryTypeName","src":"9463:15:28"}],"id":3818,"name":"VariableDeclaration","src":"9463:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":3840,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3819,"name":"ElementaryTypeName","src":"9484:7:28"}],"id":3820,"name":"VariableDeclaration","src":"9484:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":3840,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3821,"name":"ElementaryTypeName","src":"9500:7:28"}],"id":3822,"name":"VariableDeclaration","src":"9500:15:28"}],"id":3823,"name":"ParameterList","src":"9462:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":3826,"name":"ParameterList","src":"9536:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":3824,"name":"Identifier","src":"9526:9:28"}],"id":3825,"name":"ModifierInvocation","src":"9526:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3328,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":3827,"name":"Identifier","src":"9546:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3818,"type":"address payable","value":"_to"},"id":3828,"name":"Identifier","src":"9560:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3820,"type":"address","value":"_asset"},"id":3829,"name":"Identifier","src":"9565:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3822,"type":"uint256","value":"_amount"},"id":3830,"name":"Identifier","src":"9573:7:28"}],"id":3831,"name":"FunctionCall","src":"9546:35:28"}],"id":3832,"name":"ExpressionStatement","src":"9546:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3409,"type":"function (address,address,uint256)","value":"Claimed"},"id":3833,"name":"Identifier","src":"9596:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3818,"type":"address payable","value":"_to"},"id":3834,"name":"Identifier","src":"9604:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3820,"type":"address","value":"_asset"},"id":3835,"name":"Identifier","src":"9609:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3822,"type":"uint256","value":"_amount"},"id":3836,"name":"Identifier","src":"9617:7:28"}],"id":3837,"name":"FunctionCall","src":"9596:29:28"}],"id":3838,"name":"EmitStatement","src":"9591:34:28"}],"id":3839,"name":"Block","src":"9536:96:28"}],"id":3840,"name":"FunctionDefinition","src":"9448:184:28"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3841,"name":"ParameterList","src":"9731:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3848,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3842,"name":"ElementaryTypeName","src":"9755:4:28"}],"id":3843,"name":"VariableDeclaration","src":"9755:4:28"}],"id":3844,"name":"ParameterList","src":"9754:6:28"},{"children":[{"attributes":{"functionReturnParameters":3844},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3426,"type":"bool","value":"_lockedCryptoFloat"},"id":3845,"name":"Identifier","src":"9778:18:28"}],"id":3846,"name":"Return","src":"9771:25:28"}],"id":3847,"name":"Block","src":"9761:42:28"}],"id":3848,"name":"FunctionDefinition","src":"9711:92:28"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3849,"name":"ParameterList","src":"9903:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3856,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3850,"name":"ElementaryTypeName","src":"9927:4:28"}],"id":3851,"name":"VariableDeclaration","src":"9927:4:28"}],"id":3852,"name":"ParameterList","src":"9926:6:28"},{"children":[{"attributes":{"functionReturnParameters":3852},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3428,"type":"bool","value":"_lockedTokenHolder"},"id":3853,"name":"Identifier","src":"9950:18:28"}],"id":3854,"name":"Return","src":"9943:25:28"}],"id":3855,"name":"Block","src":"9933:42:28"}],"id":3856,"name":"FunctionDefinition","src":"9882:93:28"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3857,"name":"ParameterList","src":"10079:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3864,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3858,"name":"ElementaryTypeName","src":"10103:4:28"}],"id":3859,"name":"VariableDeclaration","src":"10103:4:28"}],"id":3860,"name":"ParameterList","src":"10102:6:28"},{"children":[{"attributes":{"functionReturnParameters":3860},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"bool","value":"_lockedLicenceDAO"},"id":3861,"name":"Identifier","src":"10126:17:28"}],"id":3862,"name":"Return","src":"10119:24:28"}],"id":3863,"name":"Block","src":"10109:41:28"}],"id":3864,"name":"FunctionDefinition","src":"10054:96:28"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":3873,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3865,"name":"ParameterList","src":"10254:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3872,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3866,"name":"ElementaryTypeName","src":"10278:4:28"}],"id":3867,"name":"VariableDeclaration","src":"10278:4:28"}],"id":3868,"name":"ParameterList","src":"10277:6:28"},{"children":[{"attributes":{"functionReturnParameters":3868},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3432,"type":"bool","value":"_lockedTKNContractAddress"},"id":3869,"name":"Identifier","src":"10301:25:28"}],"id":3870,"name":"Return","src":"10294:32:28"}],"id":3871,"name":"Block","src":"10284:49:28"}],"id":3872,"name":"FunctionDefinition","src":"10221:112:28"}],"id":3873,"name":"ContractDefinition","src":"1381:8954:28"}],"id":3874,"name":"SourceUnit","src":"767:9569:28"}},"mocks/isValidSignatureExporter.sol":{"AST":{"attributes":{"absolutePath":"mocks/isValidSignatureExporter.sol","exportedSymbols":{"IWallet":[12],"IsValidSignatureExporter":[43]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"0:24:29"},{"attributes":{"SourceUnit":2228,"absolutePath":"wallet.sol","file":"../wallet.sol","scope":44,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"26:23:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12],"name":"IWallet","scope":44},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":12,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":11,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3,"name":"ElementaryTypeName","src":"102:5:29"}],"id":4,"name":"VariableDeclaration","src":"102:14:29"},{"attributes":{"constant":false,"name":"","scope":11,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5,"name":"ElementaryTypeName","src":"118:5:29"}],"id":6,"name":"VariableDeclaration","src":"118:14:29"}],"id":7,"name":"ParameterList","src":"101:32:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":11,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8,"name":"ElementaryTypeName","src":"157:6:29"}],"id":9,"name":"VariableDeclaration","src":"157:6:29"}],"id":10,"name":"ParameterList","src":"156:8:29"}],"id":11,"name":"FunctionDefinition","src":"76:89:29"}],"id":12,"name":"ContractDefinition","src":"52:115:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[43],"name":"IsValidSignatureExporter","scope":44},"children":[{"attributes":{"constant":false,"name":"walletAddress","scope":43,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":13,"name":"ElementaryTypeName","src":"210:7:29"}],"id":14,"name":"VariableDeclaration","src":"210:21:29"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":43,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_wallet","scope":24,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":15,"name":"ElementaryTypeName","src":"250:7:29"}],"id":16,"name":"VariableDeclaration","src":"250:15:29"}],"id":17,"name":"ParameterList","src":"249:17:29"},{"attributes":{"parameters":[null]},"children":[],"id":18,"name":"ParameterList","src":"274:0:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14,"type":"address","value":"walletAddress"},"id":19,"name":"Identifier","src":"284:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":16,"type":"address","value":"_wallet"},"id":20,"name":"Identifier","src":"300:7:29"}],"id":21,"name":"Assignment","src":"284:23:29"}],"id":22,"name":"ExpressionStatement","src":"284:23:29"}],"id":23,"name":"Block","src":"274:40:29"}],"id":24,"name":"FunctionDefinition","src":"238:76:29"},{"attributes":{"documentation":"@dev exports isValidSignature(bytes,bytes) aka EIP-1271, so it can tested (no overloading in Go)","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":43,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":42,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":25,"name":"ElementaryTypeName","src":"451:5:29"}],"id":26,"name":"VariableDeclaration","src":"451:20:29"},{"attributes":{"constant":false,"name":"_signature","scope":42,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":27,"name":"ElementaryTypeName","src":"473:5:29"}],"id":28,"name":"VariableDeclaration","src":"473:25:29"}],"id":29,"name":"ParameterList","src":"450:49:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":30,"name":"ElementaryTypeName","src":"523:6:29"}],"id":31,"name":"VariableDeclaration","src":"523:6:29"}],"id":32,"name":"ParameterList","src":"522:8:29"},{"children":[{"attributes":{"functionReturnParameters":32},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isValidSignature","referencedDeclaration":11,"type":"function (bytes memory,bytes memory) view external returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IWallet","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":12,"type":"type(contract IWallet)","value":"IWallet"},"id":33,"name":"Identifier","src":"548:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14,"type":"address","value":"walletAddress"},"id":34,"name":"Identifier","src":"556:13:29"}],"id":35,"name":"FunctionCall","src":"548:22:29"}],"id":36,"name":"MemberAccess","src":"548:39:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":26,"type":"bytes calldata","value":"_data"},"id":37,"name":"Identifier","src":"588:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":28,"type":"bytes calldata","value":"_signature"},"id":38,"name":"Identifier","src":"595:10:29"}],"id":39,"name":"FunctionCall","src":"548:58:29"}],"id":40,"name":"Return","src":"541:65:29"}],"id":41,"name":"Block","src":"531:82:29"}],"id":42,"name":"FunctionDefinition","src":"425:188:29"}],"id":43,"name":"ContractDefinition","src":"170:445:29"}],"id":44,"name":"SourceUnit","src":"0:616:29"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[4726],"TokenWhitelist":[5626]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4640,"name":"PragmaDirective","src":"774:24:30"},{"attributes":{"SourceUnit":2871,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4641,"name":"ImportDirective","src":"800:38:30"},{"attributes":{"SourceUnit":3330,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4642,"name":"ImportDirective","src":"839:39:30"},{"attributes":{"SourceUnit":8731,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4643,"name":"ImportDirective","src":"879:36:30"},{"attributes":{"SourceUnit":8620,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4644,"name":"ImportDirective","src":"916:33:30"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":5627,"symbolAliases":[null],"unitAlias":""},"id":4645,"name":"ImportDirective","src":"950:34:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[4726],"name":"ITokenWhitelist","scope":5627},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4646,"name":"ElementaryTypeName","src":"1124:7:30"}],"id":4647,"name":"VariableDeclaration","src":"1124:7:30"}],"id":4648,"name":"ParameterList","src":"1123:9:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4649,"name":"ElementaryTypeName","src":"1156:6:30"}],"id":4650,"name":"VariableDeclaration","src":"1156:13:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4651,"name":"ElementaryTypeName","src":"1171:7:30"}],"id":4652,"name":"VariableDeclaration","src":"1171:7:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4653,"name":"ElementaryTypeName","src":"1180:7:30"}],"id":4654,"name":"VariableDeclaration","src":"1180:7:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4655,"name":"ElementaryTypeName","src":"1189:4:30"}],"id":4656,"name":"VariableDeclaration","src":"1189:4:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4657,"name":"ElementaryTypeName","src":"1195:4:30"}],"id":4658,"name":"VariableDeclaration","src":"1195:4:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4659,"name":"ElementaryTypeName","src":"1201:4:30"}],"id":4660,"name":"VariableDeclaration","src":"1201:4:30"},{"attributes":{"constant":false,"name":"","scope":4664,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4661,"name":"ElementaryTypeName","src":"1207:7:30"}],"id":4662,"name":"VariableDeclaration","src":"1207:7:30"}],"id":4663,"name":"ParameterList","src":"1155:60:30"}],"id":4664,"name":"FunctionDefinition","src":"1102:114:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4665,"name":"ParameterList","src":"1248:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4666,"name":"ElementaryTypeName","src":"1274:6:30"}],"id":4667,"name":"VariableDeclaration","src":"1274:13:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4668,"name":"ElementaryTypeName","src":"1289:7:30"}],"id":4669,"name":"VariableDeclaration","src":"1289:7:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4670,"name":"ElementaryTypeName","src":"1298:7:30"}],"id":4671,"name":"VariableDeclaration","src":"1298:7:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4672,"name":"ElementaryTypeName","src":"1307:4:30"}],"id":4673,"name":"VariableDeclaration","src":"1307:4:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4674,"name":"ElementaryTypeName","src":"1313:4:30"}],"id":4675,"name":"VariableDeclaration","src":"1313:4:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4676,"name":"ElementaryTypeName","src":"1319:4:30"}],"id":4677,"name":"VariableDeclaration","src":"1319:4:30"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4678,"name":"ElementaryTypeName","src":"1325:7:30"}],"id":4679,"name":"VariableDeclaration","src":"1325:7:30"}],"id":4680,"name":"ParameterList","src":"1273:60:30"}],"id":4681,"name":"FunctionDefinition","src":"1222:112:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4682,"name":"ParameterList","src":"1366:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4687,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4683,"name":"ElementaryTypeName","src":"1392:7:30"}],"id":4684,"name":"ArrayTypeName","src":"1392:9:30"}],"id":4685,"name":"VariableDeclaration","src":"1392:16:30"}],"id":4686,"name":"ParameterList","src":"1391:18:30"}],"id":4687,"name":"FunctionDefinition","src":"1340:70:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4688,"name":"ParameterList","src":"1441:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4693,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4689,"name":"ElementaryTypeName","src":"1467:7:30"}],"id":4690,"name":"ArrayTypeName","src":"1467:9:30"}],"id":4691,"name":"VariableDeclaration","src":"1467:16:30"}],"id":4692,"name":"ParameterList","src":"1466:18:30"}],"id":4693,"name":"FunctionDefinition","src":"1416:69:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4700,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4694,"name":"ElementaryTypeName","src":"1518:6:30"}],"id":4695,"name":"VariableDeclaration","src":"1518:6:30"}],"id":4696,"name":"ParameterList","src":"1517:8:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4700,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4697,"name":"ElementaryTypeName","src":"1549:4:30"}],"id":4698,"name":"VariableDeclaration","src":"1549:4:30"}],"id":4699,"name":"ParameterList","src":"1548:6:30"}],"id":4700,"name":"FunctionDefinition","src":"1491:64:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4711,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4701,"name":"ElementaryTypeName","src":"1597:7:30"}],"id":4702,"name":"VariableDeclaration","src":"1597:7:30"},{"attributes":{"constant":false,"name":"","scope":4711,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4703,"name":"ElementaryTypeName","src":"1606:5:30"}],"id":4704,"name":"VariableDeclaration","src":"1606:14:30"}],"id":4705,"name":"ParameterList","src":"1596:25:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4711,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4706,"name":"ElementaryTypeName","src":"1645:7:30"}],"id":4707,"name":"VariableDeclaration","src":"1645:7:30"},{"attributes":{"constant":false,"name":"","scope":4711,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4708,"name":"ElementaryTypeName","src":"1654:7:30"}],"id":4709,"name":"VariableDeclaration","src":"1654:7:30"}],"id":4710,"name":"ParameterList","src":"1644:18:30"}],"id":4711,"name":"FunctionDefinition","src":"1561:102:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":4726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4712,"name":"ParameterList","src":"1688:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":4716,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4713,"name":"ElementaryTypeName","src":"1714:7:30"}],"id":4714,"name":"VariableDeclaration","src":"1714:7:30"}],"id":4715,"name":"ParameterList","src":"1713:9:30"}],"id":4716,"name":"FunctionDefinition","src":"1669:54:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":4726,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4725,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4717,"name":"ElementaryTypeName","src":"1754:7:30"}],"id":4718,"name":"VariableDeclaration","src":"1754:7:30"},{"attributes":{"constant":false,"name":"","scope":4725,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4719,"name":"ElementaryTypeName","src":"1763:7:30"}],"id":4720,"name":"VariableDeclaration","src":"1763:7:30"},{"attributes":{"constant":false,"name":"","scope":4725,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4721,"name":"ElementaryTypeName","src":"1772:7:30"}],"id":4722,"name":"VariableDeclaration","src":"1772:7:30"}],"id":4723,"name":"ParameterList","src":"1753:27:30"},{"attributes":{"parameters":[null]},"children":[],"id":4724,"name":"ParameterList","src":"1789:0:30"}],"id":4725,"name":"FunctionDefinition","src":"1729:61:30"}],"id":4726,"name":"ContractDefinition","src":"1070:722:30"},{"attributes":{"contractDependencies":[2870,2915,3329],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[5626,3329,2870,2915],"name":"TokenWhitelist","scope":5627},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":4727,"name":"UserDefinedTypeName","src":"1966:13:30"}],"id":4728,"name":"InheritanceSpecifier","src":"1966:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2870,"type":"contract Controllable"},"id":4729,"name":"UserDefinedTypeName","src":"1981:12:30"}],"id":4730,"name":"InheritanceSpecifier","src":"1981:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3329,"type":"contract Transferrable"},"id":4731,"name":"UserDefinedTypeName","src":"1995:13:30"}],"id":4732,"name":"InheritanceSpecifier","src":"1995:13:30"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":8619,"type":"library strings"},"id":4733,"name":"UserDefinedTypeName","src":"2021:7:30"}],"id":4734,"name":"UsingForDirective","src":"2015:20:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":4735,"name":"UserDefinedTypeName","src":"2046:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":4736,"name":"ElementaryTypeName","src":"2059:7:30"}],"id":4737,"name":"UsingForDirective","src":"2040:27:30"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":8730,"type":"library BytesUtils"},"id":4738,"name":"UserDefinedTypeName","src":"2078:10:30"},{"attributes":{"name":"bytes","type":"bytes"},"id":4739,"name":"ElementaryTypeName","src":"2093:5:30"}],"id":4740,"name":"UsingForDirective","src":"2072:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4748,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4741,"name":"ElementaryTypeName","src":"2128:7:30"}],"id":4742,"name":"VariableDeclaration","src":"2128:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4748,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4743,"name":"ElementaryTypeName","src":"2145:7:30"}],"id":4744,"name":"VariableDeclaration","src":"2145:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":4748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4745,"name":"ElementaryTypeName","src":"2161:7:30"}],"id":4746,"name":"VariableDeclaration","src":"2161:13:30"}],"id":4747,"name":"ParameterList","src":"2127:48:30"}],"id":4748,"name":"EventDefinition","src":"2105:71:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4756,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4749,"name":"ElementaryTypeName","src":"2209:7:30"}],"id":4750,"name":"VariableDeclaration","src":"2209:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4756,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4751,"name":"ElementaryTypeName","src":"2226:7:30"}],"id":4752,"name":"VariableDeclaration","src":"2226:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":4756,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4753,"name":"ElementaryTypeName","src":"2242:4:30"}],"id":4754,"name":"VariableDeclaration","src":"2242:14:30"}],"id":4755,"name":"ParameterList","src":"2208:49:30"}],"id":4756,"name":"EventDefinition","src":"2182:76:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4764,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4757,"name":"ElementaryTypeName","src":"2292:7:30"}],"id":4758,"name":"VariableDeclaration","src":"2292:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4764,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4759,"name":"ElementaryTypeName","src":"2309:7:30"}],"id":4760,"name":"VariableDeclaration","src":"2309:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":4764,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4761,"name":"ElementaryTypeName","src":"2325:4:30"}],"id":4762,"name":"VariableDeclaration","src":"2325:16:30"}],"id":4763,"name":"ParameterList","src":"2291:51:30"}],"id":4764,"name":"EventDefinition","src":"2263:80:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4778,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4765,"name":"ElementaryTypeName","src":"2366:7:30"}],"id":4766,"name":"VariableDeclaration","src":"2366:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4778,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4767,"name":"ElementaryTypeName","src":"2383:7:30"}],"id":4768,"name":"VariableDeclaration","src":"2383:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":4778,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4769,"name":"ElementaryTypeName","src":"2399:6:30"}],"id":4770,"name":"VariableDeclaration","src":"2399:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":4778,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4771,"name":"ElementaryTypeName","src":"2415:7:30"}],"id":4772,"name":"VariableDeclaration","src":"2415:18:30"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":4778,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4773,"name":"ElementaryTypeName","src":"2435:4:30"}],"id":4774,"name":"VariableDeclaration","src":"2435:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":4778,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4775,"name":"ElementaryTypeName","src":"2451:4:30"}],"id":4776,"name":"VariableDeclaration","src":"2451:16:30"}],"id":4777,"name":"ParameterList","src":"2365:103:30"}],"id":4778,"name":"EventDefinition","src":"2349:120:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4784,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4779,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":4780,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4784,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4781,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":4782,"name":"VariableDeclaration","src":"2510:14:30"}],"id":4783,"name":"ParameterList","src":"2492:33:30"}],"id":4784,"name":"EventDefinition","src":"2474:52:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4788,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4785,"name":"ElementaryTypeName","src":"2552:6:30"}],"id":4786,"name":"VariableDeclaration","src":"2552:16:30"}],"id":4787,"name":"ParameterList","src":"2551:18:30"}],"id":4788,"name":"EventDefinition","src":"2532:38:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4792,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4789,"name":"ElementaryTypeName","src":"2597:6:30"}],"id":4790,"name":"VariableDeclaration","src":"2597:16:30"}],"id":4791,"name":"ParameterList","src":"2596:18:30"}],"id":4792,"name":"EventDefinition","src":"2575:40:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4798,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4793,"name":"ElementaryTypeName","src":"2647:7:30"}],"id":4794,"name":"VariableDeclaration","src":"2647:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4798,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4795,"name":"ElementaryTypeName","src":"2663:6:30"}],"id":4796,"name":"VariableDeclaration","src":"2663:16:30"}],"id":4797,"name":"ParameterList","src":"2646:34:30"}],"id":4798,"name":"EventDefinition","src":"2620:61:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4804,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4799,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":4800,"name":"VariableDeclaration","src":"2715:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4804,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4801,"name":"ElementaryTypeName","src":"2731:6:30"}],"id":4802,"name":"VariableDeclaration","src":"2731:16:30"}],"id":4803,"name":"ParameterList","src":"2714:34:30"}],"id":4804,"name":"EventDefinition","src":"2686:63:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4812,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4805,"name":"ElementaryTypeName","src":"2769:7:30"}],"id":4806,"name":"VariableDeclaration","src":"2769:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4812,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4807,"name":"ElementaryTypeName","src":"2782:7:30"}],"id":4808,"name":"VariableDeclaration","src":"2782:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4812,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4809,"name":"ElementaryTypeName","src":"2798:7:30"}],"id":4810,"name":"VariableDeclaration","src":"2798:15:30"}],"id":4811,"name":"ParameterList","src":"2768:46:30"}],"id":4812,"name":"EventDefinition","src":"2755:60:30"},{"attributes":{"constant":true,"name":"_APPROVE","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4813,"name":"ElementaryTypeName","src":"2924:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":4814,"name":"Literal","src":"2959:10:30"}],"id":4815,"name":"VariableDeclaration","src":"2924:45:30"},{"attributes":{"constant":true,"name":"_BURN","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4816,"name":"ElementaryTypeName","src":"3028:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":4817,"name":"Literal","src":"3060:10:30"}],"id":4818,"name":"VariableDeclaration","src":"3028:42:30"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4819,"name":"ElementaryTypeName","src":"3118:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":4820,"name":"Literal","src":"3154:10:30"}],"id":4821,"name":"VariableDeclaration","src":"3118:46:30"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4822,"name":"ElementaryTypeName","src":"3224:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":4823,"name":"Literal","src":"3265:10:30"}],"id":4824,"name":"VariableDeclaration","src":"3224:51:30"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":5626,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":4839,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4825,"name":"ElementaryTypeName","src":"3371:6:30"}],"id":4826,"name":"VariableDeclaration","src":"3371:13:30"},{"attributes":{"constant":false,"name":"magnitude","scope":4839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4827,"name":"ElementaryTypeName","src":"3410:7:30"}],"id":4828,"name":"VariableDeclaration","src":"3410:17:30"},{"attributes":{"constant":false,"name":"rate","scope":4839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4829,"name":"ElementaryTypeName","src":"3452:7:30"}],"id":4830,"name":"VariableDeclaration","src":"3452:12:30"},{"attributes":{"constant":false,"name":"available","scope":4839,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4831,"name":"ElementaryTypeName","src":"3504:4:30"}],"id":4832,"name":"VariableDeclaration","src":"3504:14:30"},{"attributes":{"constant":false,"name":"loadable","scope":4839,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4833,"name":"ElementaryTypeName","src":"3570:4:30"}],"id":4834,"name":"VariableDeclaration","src":"3570:13:30"},{"attributes":{"constant":false,"name":"redeemable","scope":4839,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4835,"name":"ElementaryTypeName","src":"3640:4:30"}],"id":4836,"name":"VariableDeclaration","src":"3640:15:30"},{"attributes":{"constant":false,"name":"lastUpdate","scope":4839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4837,"name":"ElementaryTypeName","src":"3724:7:30"}],"id":4838,"name":"VariableDeclaration","src":"3724:18:30"}],"id":4839,"name":"StructDefinition","src":"3348:433:30"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":5626,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4840,"name":"ElementaryTypeName","src":"3795:7:30"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4839,"type":"struct TokenWhitelist.Token"},"id":4841,"name":"UserDefinedTypeName","src":"3806:5:30"}],"id":4842,"name":"Mapping","src":"3787:25:30"}],"id":4843,"name":"VariableDeclaration","src":"3787:47:30"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":5626,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4844,"name":"ElementaryTypeName","src":"4004:6:30"},{"attributes":{"name":"bool","type":"bool"},"id":4845,"name":"ElementaryTypeName","src":"4014:4:30"}],"id":4846,"name":"Mapping","src":"3996:23:30"}],"id":4847,"name":"VariableDeclaration","src":"3996:50:30"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":5626,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4848,"name":"ElementaryTypeName","src":"4053:7:30"}],"id":4849,"name":"ArrayTypeName","src":"4053:9:30"}],"id":4850,"name":"VariableDeclaration","src":"4053:36:30"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":5626,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4851,"name":"ElementaryTypeName","src":"4182:7:30"}],"id":4852,"name":"VariableDeclaration","src":"4182:34:30"},{"attributes":{"constant":false,"name":"_stablecoin","scope":5626,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4853,"name":"ElementaryTypeName","src":"4266:7:30"}],"id":4854,"name":"VariableDeclaration","src":"4266:27:30"},{"attributes":{"constant":false,"name":"_oracleNode","scope":5626,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4855,"name":"ElementaryTypeName","src":"4372:7:30"}],"id":4856,"name":"VariableDeclaration","src":"4372:27:30"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":4906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4857,"name":"ElementaryTypeName","src":"4770:7:30"}],"id":4858,"name":"VariableDeclaration","src":"4770:13:30"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":4906,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4859,"name":"ElementaryTypeName","src":"4785:7:30"}],"id":4860,"name":"VariableDeclaration","src":"4785:20:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":4906,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4861,"name":"ElementaryTypeName","src":"4807:7:30"}],"id":4862,"name":"VariableDeclaration","src":"4807:24:30"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":4906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4863,"name":"ElementaryTypeName","src":"4833:7:30"}],"id":4864,"name":"VariableDeclaration","src":"4833:27:30"}],"id":4865,"name":"ParameterList","src":"4769:92:30"},{"attributes":{"parameters":[null]},"children":[],"id":4872,"name":"ParameterList","src":"4949:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":4866,"name":"Identifier","src":"4885:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4858,"type":"address","value":"_ens_"},"id":4867,"name":"Identifier","src":"4899:5:30"}],"id":4868,"name":"ModifierInvocation","src":"4885:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"type(contract Controllable)","value":"Controllable"},"id":4869,"name":"Identifier","src":"4914:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4862,"type":"bytes32","value":"_controllerNode_"},"id":4870,"name":"Identifier","src":"4927:16:30"}],"id":4871,"name":"ModifierInvocation","src":"4914:30:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4856,"type":"bytes32","value":"_oracleNode"},"id":4873,"name":"Identifier","src":"4959:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4860,"type":"bytes32","value":"_oracleNode_"},"id":4874,"name":"Identifier","src":"4973:12:30"}],"id":4875,"name":"Assignment","src":"4959:26:30"}],"id":4876,"name":"ExpressionStatement","src":"4959:26:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"address","value":"_stablecoin"},"id":4877,"name":"Identifier","src":"4995:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4864,"type":"address","value":"_stablecoinAddress_"},"id":4878,"name":"Identifier","src":"5009:19:30"}],"id":4879,"name":"Assignment","src":"4995:33:30"}],"id":4880,"name":"ExpressionStatement","src":"4995:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4881,"name":"Identifier","src":"5083:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4815,"type":"bytes4","value":"_APPROVE"},"id":4882,"name":"Identifier","src":"5102:8:30"}],"id":4883,"name":"IndexAccess","src":"5083:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4884,"name":"Literal","src":"5114:4:30"}],"id":4885,"name":"Assignment","src":"5083:35:30"}],"id":4886,"name":"ExpressionStatement","src":"5083:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4887,"name":"Identifier","src":"5128:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4818,"type":"bytes4","value":"_BURN"},"id":4888,"name":"Identifier","src":"5147:5:30"}],"id":4889,"name":"IndexAccess","src":"5128:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4890,"name":"Literal","src":"5156:4:30"}],"id":4891,"name":"Assignment","src":"5128:32:30"}],"id":4892,"name":"ExpressionStatement","src":"5128:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4893,"name":"Identifier","src":"5170:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4821,"type":"bytes4","value":"_TRANSFER"},"id":4894,"name":"Identifier","src":"5189:9:30"}],"id":4895,"name":"IndexAccess","src":"5170:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4896,"name":"Literal","src":"5202:4:30"}],"id":4897,"name":"Assignment","src":"5170:36:30"}],"id":4898,"name":"ExpressionStatement","src":"5170:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4899,"name":"Identifier","src":"5216:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4824,"type":"bytes4","value":"_TRANSFER_FROM"},"id":4900,"name":"Identifier","src":"5235:14:30"}],"id":4901,"name":"IndexAccess","src":"5216:34:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4902,"name":"Literal","src":"5253:4:30"}],"id":4903,"name":"Assignment","src":"5216:41:30"}],"id":4904,"name":"ExpressionStatement","src":"5216:41:30"}],"id":4905,"name":"Block","src":"4949:315:30"}],"id":4906,"name":"FunctionDefinition","src":"4758:506:30"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4907,"name":"ParameterList","src":"5296:2:30"},{"children":[{"attributes":{"assignments":[4909]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":4928,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4908,"name":"ElementaryTypeName","src":"5309:7:30"}],"id":4909,"name":"VariableDeclaration","src":"5309:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4910,"name":"Identifier","src":"5333:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4856,"type":"bytes32","value":"_oracleNode"},"id":4911,"name":"Identifier","src":"5345:11:30"}],"id":4912,"name":"FunctionCall","src":"5333:24:30"}],"id":4913,"name":"VariableDeclarationStatement","src":"5309:48:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4914,"name":"Identifier","src":"5367:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2869,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":4915,"name":"Identifier","src":"5375:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4916,"name":"Identifier","src":"5384:3:30"}],"id":4917,"name":"MemberAccess","src":"5384:10:30"}],"id":4918,"name":"FunctionCall","src":"5375:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":4919,"name":"Identifier","src":"5399:3:30"}],"id":4920,"name":"MemberAccess","src":"5399:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4909,"type":"address","value":"oracleAddress"},"id":4921,"name":"Identifier","src":"5413:13:30"}],"id":4922,"name":"BinaryOperation","src":"5399:27:30"}],"id":4923,"name":"BinaryOperation","src":"5375:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":4924,"name":"Literal","src":"5428:24:30"}],"id":4925,"name":"FunctionCall","src":"5367:86:30"}],"id":4926,"name":"ExpressionStatement","src":"5367:86:30"},{"id":4927,"name":"PlaceholderStatement","src":"5463:1:30"}],"id":4928,"name":"Block","src":"5299:172:30"}],"id":4929,"name":"ModifierDefinition","src":"5270:201:30"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4930,"name":"ElementaryTypeName","src":"6068:7:30"}],"id":4931,"name":"ArrayTypeName","src":"6068:9:30"}],"id":4932,"name":"VariableDeclaration","src":"6068:26:30"},{"attributes":{"constant":false,"name":"_symbols","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4933,"name":"ElementaryTypeName","src":"6104:7:30"}],"id":4934,"name":"ArrayTypeName","src":"6104:9:30"}],"id":4935,"name":"VariableDeclaration","src":"6104:27:30"},{"attributes":{"constant":false,"name":"_magnitude","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4936,"name":"ElementaryTypeName","src":"6141:7:30"}],"id":4937,"name":"ArrayTypeName","src":"6141:9:30"}],"id":4938,"name":"VariableDeclaration","src":"6141:29:30"},{"attributes":{"constant":false,"name":"_loadable","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4939,"name":"ElementaryTypeName","src":"6180:4:30"}],"id":4940,"name":"ArrayTypeName","src":"6180:6:30"}],"id":4941,"name":"VariableDeclaration","src":"6180:25:30"},{"attributes":{"constant":false,"name":"_redeemable","scope":5073,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4942,"name":"ElementaryTypeName","src":"6215:4:30"}],"id":4943,"name":"ArrayTypeName","src":"6215:6:30"}],"id":4944,"name":"VariableDeclaration","src":"6215:27:30"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":5073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4945,"name":"ElementaryTypeName","src":"6252:7:30"}],"id":4946,"name":"VariableDeclaration","src":"6252:19:30"}],"id":4947,"name":"ParameterList","src":"6058:219:30"},{"attributes":{"parameters":[null]},"children":[],"id":4950,"name":"ParameterList","src":"6297:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":4948,"name":"Identifier","src":"6287:9:30"}],"id":4949,"name":"ModifierInvocation","src":"6287:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4951,"name":"Identifier","src":"6368:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4952,"name":"Identifier","src":"6389:7:30"}],"id":4953,"name":"MemberAccess","src":"6389:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"bytes32[] calldata","value":"_symbols"},"id":4954,"name":"Identifier","src":"6407:8:30"}],"id":4955,"name":"MemberAccess","src":"6407:15:30"}],"id":4956,"name":"BinaryOperation","src":"6389:33:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4957,"name":"Identifier","src":"6442:7:30"}],"id":4958,"name":"MemberAccess","src":"6442:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"uint256[] calldata","value":"_magnitude"},"id":4959,"name":"Identifier","src":"6460:10:30"}],"id":4960,"name":"MemberAccess","src":"6460:17:30"}],"id":4961,"name":"BinaryOperation","src":"6442:35:30"}],"id":4962,"name":"BinaryOperation","src":"6389:88:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4963,"name":"Identifier","src":"6497:7:30"}],"id":4964,"name":"MemberAccess","src":"6497:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4941,"type":"bool[] calldata","value":"_loadable"},"id":4965,"name":"Identifier","src":"6515:9:30"}],"id":4966,"name":"MemberAccess","src":"6515:16:30"}],"id":4967,"name":"BinaryOperation","src":"6497:34:30"}],"id":4968,"name":"BinaryOperation","src":"6389:142:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4969,"name":"Identifier","src":"6551:7:30"}],"id":4970,"name":"MemberAccess","src":"6551:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4941,"type":"bool[] calldata","value":"_loadable"},"id":4971,"name":"Identifier","src":"6569:9:30"}],"id":4972,"name":"MemberAccess","src":"6569:16:30"}],"id":4973,"name":"BinaryOperation","src":"6551:34:30"}],"id":4974,"name":"BinaryOperation","src":"6389:196:30"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":4975,"name":"Literal","src":"6599:32:30"}],"id":4976,"name":"FunctionCall","src":"6368:273:30"}],"id":4977,"name":"ExpressionStatement","src":"6368:273:30"},{"children":[{"attributes":{"assignments":[4979]},"children":[{"attributes":{"constant":false,"name":"i","scope":5071,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4978,"name":"ElementaryTypeName","src":"6715:7:30"}],"id":4979,"name":"VariableDeclaration","src":"6715:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4980,"name":"Literal","src":"6727:1:30"}],"id":4981,"name":"VariableDeclarationStatement","src":"6715:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":4982,"name":"Identifier","src":"6730:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4983,"name":"Identifier","src":"6734:7:30"}],"id":4984,"name":"MemberAccess","src":"6734:14:30"}],"id":4985,"name":"BinaryOperation","src":"6730:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":4986,"name":"Identifier","src":"6750:1:30"}],"id":4987,"name":"UnaryOperation","src":"6750:3:30"}],"id":4988,"name":"ExpressionStatement","src":"6750:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":4989,"name":"Identifier","src":"6832:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":4990,"name":"Identifier","src":"6841:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":4991,"name":"Identifier","src":"6855:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":4992,"name":"Identifier","src":"6863:1:30"}],"id":4993,"name":"IndexAccess","src":"6855:10:30"}],"id":4994,"name":"IndexAccess","src":"6841:25:30"}],"id":4995,"name":"MemberAccess","src":"6841:35:30"}],"id":4996,"name":"UnaryOperation","src":"6840:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":4997,"name":"Literal","src":"6878:25:30"}],"id":4998,"name":"FunctionCall","src":"6832:72:30"}],"id":4999,"name":"ExpressionStatement","src":"6832:72:30"},{"attributes":{"assignments":[5001]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":5070,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5000,"name":"ElementaryTypeName","src":"6964:6:30"}],"id":5001,"name":"VariableDeclaration","src":"6964:20:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":7168,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":7123,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"bytes32[] calldata","value":"_symbols"},"id":5002,"name":"Identifier","src":"6987:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5003,"name":"Identifier","src":"6996:1:30"}],"id":5004,"name":"IndexAccess","src":"6987:11:30"}],"id":5005,"name":"MemberAccess","src":"6987:22:30"}],"id":5006,"name":"FunctionCall","src":"6987:24:30"}],"id":5007,"name":"MemberAccess","src":"6987:33:30"}],"id":5008,"name":"FunctionCall","src":"6987:35:30"}],"id":5009,"name":"VariableDeclarationStatement","src":"6964:58:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5010,"name":"Identifier","src":"7084:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":5011,"name":"Identifier","src":"7098:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5012,"name":"Identifier","src":"7106:1:30"}],"id":5013,"name":"IndexAccess","src":"7098:10:30"}],"id":5014,"name":"IndexAccess","src":"7084:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4839,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":5015,"name":"Identifier","src":"7112:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"string memory","value":"symbol"},"id":5016,"name":"Identifier","src":"7144:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"uint256[] calldata","value":"_magnitude"},"id":5017,"name":"Identifier","src":"7179:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5018,"name":"Identifier","src":"7190:1:30"}],"id":5019,"name":"IndexAccess","src":"7179:13:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5020,"name":"Literal","src":"7216:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5021,"name":"Literal","src":"7246:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4941,"type":"bool[] calldata","value":"_loadable"},"id":5022,"name":"Identifier","src":"7278:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5023,"name":"Identifier","src":"7288:1:30"}],"id":5024,"name":"IndexAccess","src":"7278:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bool[] calldata","value":"_redeemable"},"id":5025,"name":"Identifier","src":"7320:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5026,"name":"Identifier","src":"7332:1:30"}],"id":5027,"name":"IndexAccess","src":"7320:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4946,"type":"uint256","value":"_lastUpdate"},"id":5028,"name":"Identifier","src":"7364:11:30"}],"id":5029,"name":"FunctionCall","src":"7112:278:30"}],"id":5030,"name":"Assignment","src":"7084:306:30"}],"id":5031,"name":"ExpressionStatement","src":"7084:306:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5032,"name":"Identifier","src":"7462:18:30"}],"id":5034,"name":"MemberAccess","src":"7462:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":5035,"name":"Identifier","src":"7486:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5036,"name":"Identifier","src":"7494:1:30"}],"id":5037,"name":"IndexAccess","src":"7486:10:30"}],"id":5038,"name":"FunctionCall","src":"7462:35:30"}],"id":5039,"name":"ExpressionStatement","src":"7462:35:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bool[] calldata","value":"_redeemable"},"id":5040,"name":"Identifier","src":"7587:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5041,"name":"Identifier","src":"7599:1:30"}],"id":5042,"name":"IndexAccess","src":"7587:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5043,"name":"Identifier","src":"7621:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5044,"name":"Identifier","src":"7642:18:30"}],"id":5045,"name":"MemberAccess","src":"7642:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5046,"name":"Literal","src":"7665:1:30"}],"id":5047,"name":"FunctionCall","src":"7642:25:30"}],"id":5048,"name":"Assignment","src":"7621:46:30"}],"id":5049,"name":"ExpressionStatement","src":"7621:46:30"}],"id":5050,"name":"Block","src":"7603:79:30"}],"id":5051,"name":"IfStatement","src":"7583:99:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4778,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":5052,"name":"Identifier","src":"7742:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5053,"name":"Identifier","src":"7753:3:30"}],"id":5054,"name":"MemberAccess","src":"7753:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4932,"type":"address[] calldata","value":"_tokens"},"id":5055,"name":"Identifier","src":"7765:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5056,"name":"Identifier","src":"7773:1:30"}],"id":5057,"name":"IndexAccess","src":"7765:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"string memory","value":"symbol"},"id":5058,"name":"Identifier","src":"7777:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"uint256[] calldata","value":"_magnitude"},"id":5059,"name":"Identifier","src":"7785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5060,"name":"Identifier","src":"7796:1:30"}],"id":5061,"name":"IndexAccess","src":"7785:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4941,"type":"bool[] calldata","value":"_loadable"},"id":5062,"name":"Identifier","src":"7800:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5063,"name":"Identifier","src":"7810:1:30"}],"id":5064,"name":"IndexAccess","src":"7800:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bool[] calldata","value":"_redeemable"},"id":5065,"name":"Identifier","src":"7814:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4979,"type":"uint256","value":"i"},"id":5066,"name":"Identifier","src":"7826:1:30"}],"id":5067,"name":"IndexAccess","src":"7814:14:30"}],"id":5068,"name":"FunctionCall","src":"7742:87:30"}],"id":5069,"name":"EmitStatement","src":"7737:92:30"}],"id":5070,"name":"Block","src":"6755:1085:30"}],"id":5071,"name":"ForStatement","src":"6710:1130:30"}],"id":5072,"name":"Block","src":"6297:1549:30"}],"id":5073,"name":"FunctionDefinition","src":"6040:1806:30"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5174,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5074,"name":"ElementaryTypeName","src":"7995:7:30"}],"id":5075,"name":"ArrayTypeName","src":"7995:9:30"}],"id":5076,"name":"VariableDeclaration","src":"7995:26:30"}],"id":5077,"name":"ParameterList","src":"7994:28:30"},{"attributes":{"parameters":[null]},"children":[],"id":5080,"name":"ParameterList","src":"8042:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":5078,"name":"Identifier","src":"8032:9:30"}],"id":5079,"name":"ModifierInvocation","src":"8032:9:30"},{"children":[{"children":[{"attributes":{"assignments":[5082]},"children":[{"attributes":{"constant":false,"name":"i","scope":5172,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5081,"name":"ElementaryTypeName","src":"8160:7:30"}],"id":5082,"name":"VariableDeclaration","src":"8160:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5083,"name":"Literal","src":"8172:1:30"}],"id":5084,"name":"VariableDeclarationStatement","src":"8160:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5082,"type":"uint256","value":"i"},"id":5085,"name":"Identifier","src":"8175:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5076,"type":"address[] calldata","value":"_tokens"},"id":5086,"name":"Identifier","src":"8179:7:30"}],"id":5087,"name":"MemberAccess","src":"8179:14:30"}],"id":5088,"name":"BinaryOperation","src":"8175:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5082,"type":"uint256","value":"i"},"id":5089,"name":"Identifier","src":"8195:1:30"}],"id":5090,"name":"UnaryOperation","src":"8195:3:30"}],"id":5091,"name":"ExpressionStatement","src":"8195:3:30"},{"children":[{"attributes":{"assignments":[5093]},"children":[{"attributes":{"constant":false,"name":"token","scope":5171,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5092,"name":"ElementaryTypeName","src":"8254:7:30"}],"id":5093,"name":"VariableDeclaration","src":"8254:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5076,"type":"address[] calldata","value":"_tokens"},"id":5094,"name":"Identifier","src":"8270:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5082,"type":"uint256","value":"i"},"id":5095,"name":"Identifier","src":"8278:1:30"}],"id":5096,"name":"IndexAccess","src":"8270:10:30"}],"id":5097,"name":"VariableDeclarationStatement","src":"8254:26:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5098,"name":"Identifier","src":"8363:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5099,"name":"Identifier","src":"8371:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5100,"name":"Identifier","src":"8385:5:30"}],"id":5101,"name":"IndexAccess","src":"8371:20:30"}],"id":5102,"name":"MemberAccess","src":"8371:30:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5103,"name":"Literal","src":"8403:24:30"}],"id":5104,"name":"FunctionCall","src":"8363:65:30"}],"id":5105,"name":"ExpressionStatement","src":"8363:65:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5106,"name":"Identifier","src":"8518:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5107,"name":"Identifier","src":"8532:5:30"}],"id":5108,"name":"IndexAccess","src":"8518:20:30"}],"id":5109,"name":"MemberAccess","src":"8518:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5110,"name":"Identifier","src":"8569:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5111,"name":"Identifier","src":"8590:18:30"}],"id":5112,"name":"MemberAccess","src":"8590:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5113,"name":"Literal","src":"8613:1:30"}],"id":5114,"name":"FunctionCall","src":"8590:25:30"}],"id":5115,"name":"Assignment","src":"8569:46:30"}],"id":5116,"name":"ExpressionStatement","src":"8569:46:30"}],"id":5117,"name":"Block","src":"8551:79:30"}],"id":5118,"name":"IfStatement","src":"8514:116:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5119,"name":"Identifier","src":"8690:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5120,"name":"Identifier","src":"8704:5:30"}],"id":5121,"name":"IndexAccess","src":"8690:20:30"}],"id":5122,"name":"UnaryOperation","src":"8683:27:30"}],"id":5123,"name":"ExpressionStatement","src":"8683:27:30"},{"children":[{"attributes":{"assignments":[5125]},"children":[{"attributes":{"constant":false,"name":"j","scope":5159,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5124,"name":"ElementaryTypeName","src":"8792:7:30"}],"id":5125,"name":"VariableDeclaration","src":"8792:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5126,"name":"Literal","src":"8804:1:30"}],"id":5127,"name":"VariableDeclarationStatement","src":"8792:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5125,"type":"uint256","value":"j"},"id":5128,"name":"Identifier","src":"8807:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5129,"name":"Identifier","src":"8811:18:30"}],"id":5130,"name":"MemberAccess","src":"8811:25:30"}],"id":5131,"name":"MemberAccess","src":"8811:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5132,"name":"Literal","src":"8841:1:30"}],"id":5133,"name":"FunctionCall","src":"8811:32:30"}],"id":5134,"name":"BinaryOperation","src":"8807:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5125,"type":"uint256","value":"j"},"id":5135,"name":"Identifier","src":"8845:1:30"}],"id":5136,"name":"UnaryOperation","src":"8845:3:30"}],"id":5137,"name":"ExpressionStatement","src":"8845:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5138,"name":"Identifier","src":"8872:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5125,"type":"uint256","value":"j"},"id":5139,"name":"Identifier","src":"8891:1:30"}],"id":5140,"name":"IndexAccess","src":"8872:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5141,"name":"Identifier","src":"8897:5:30"}],"id":5142,"name":"BinaryOperation","src":"8872:30:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5143,"name":"Identifier","src":"8926:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5125,"type":"uint256","value":"j"},"id":5144,"name":"Identifier","src":"8945:1:30"}],"id":5145,"name":"IndexAccess","src":"8926:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5146,"name":"Identifier","src":"8950:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5147,"name":"Identifier","src":"8969:18:30"}],"id":5148,"name":"MemberAccess","src":"8969:25:30"}],"id":5149,"name":"MemberAccess","src":"8969:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5150,"name":"Literal","src":"8999:1:30"}],"id":5151,"name":"FunctionCall","src":"8969:32:30"}],"id":5152,"name":"IndexAccess","src":"8950:52:30"}],"id":5153,"name":"Assignment","src":"8926:76:30"}],"id":5154,"name":"ExpressionStatement","src":"8926:76:30"},{"id":5155,"name":"Break","src":"9024:5:30"}],"id":5156,"name":"Block","src":"8904:144:30"}],"id":5157,"name":"IfStatement","src":"8868:180:30"}],"id":5158,"name":"Block","src":"8850:212:30"}],"id":5159,"name":"ForStatement","src":"8787:275:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5160,"name":"Identifier","src":"9075:18:30"}],"id":5162,"name":"MemberAccess","src":"9075:25:30"}],"id":5163,"name":"UnaryOperation","src":"9075:27:30"}],"id":5164,"name":"ExpressionStatement","src":"9075:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"function (address,address)","value":"RemovedToken"},"id":5165,"name":"Identifier","src":"9162:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5166,"name":"Identifier","src":"9175:3:30"}],"id":5167,"name":"MemberAccess","src":"9175:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5093,"type":"address","value":"token"},"id":5168,"name":"Identifier","src":"9187:5:30"}],"id":5169,"name":"FunctionCall","src":"9162:31:30"}],"id":5170,"name":"EmitStatement","src":"9157:36:30"}],"id":5171,"name":"Block","src":"8200:1004:30"}],"id":5172,"name":"ForStatement","src":"8155:1049:30"}],"id":5173,"name":"Block","src":"8042:1168:30"}],"id":5174,"name":"FunctionDefinition","src":"7973:1237:30"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5287,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5175,"name":"ElementaryTypeName","src":"9404:7:30"}],"id":5176,"name":"VariableDeclaration","src":"9404:14:30"},{"attributes":{"constant":false,"name":"_data","scope":5287,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5177,"name":"ElementaryTypeName","src":"9420:5:30"}],"id":5178,"name":"VariableDeclaration","src":"9420:20:30"}],"id":5179,"name":"ParameterList","src":"9403:38:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5287,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5180,"name":"ElementaryTypeName","src":"9465:7:30"}],"id":5181,"name":"VariableDeclaration","src":"9465:7:30"},{"attributes":{"constant":false,"name":"","scope":5287,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5182,"name":"ElementaryTypeName","src":"9474:7:30"}],"id":5183,"name":"VariableDeclaration","src":"9474:7:30"}],"id":5184,"name":"ParameterList","src":"9464:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5185,"name":"Identifier","src":"9669:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5186,"name":"Identifier","src":"9677:5:30"}],"id":5187,"name":"MemberAccess","src":"9677:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5188,"name":"Literal","src":"9693:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5189,"name":"Literal","src":"9697:2:30"}],"id":5190,"name":"BinaryOperation","src":"9693:6:30"}],"id":5191,"name":"BinaryOperation","src":"9677:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":5192,"name":"Literal","src":"9701:34:30"}],"id":5193,"name":"FunctionCall","src":"9669:67:30"}],"id":5194,"name":"ExpressionStatement","src":"9669:67:30"},{"attributes":{"assignments":[5196]},"children":[{"attributes":{"constant":false,"name":"signature","scope":5286,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5195,"name":"ElementaryTypeName","src":"9782:6:30"}],"id":5196,"name":"VariableDeclaration","src":"9782:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":8695,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5197,"name":"Identifier","src":"9801:5:30"}],"id":5198,"name":"MemberAccess","src":"9801:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5199,"name":"Literal","src":"9822:1:30"}],"id":5200,"name":"FunctionCall","src":"9801:23:30"}],"id":5201,"name":"VariableDeclarationStatement","src":"9782:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5202,"name":"Identifier","src":"9877:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":5588,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":5203,"name":"Identifier","src":"9885:22:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"address","value":"_token"},"id":5204,"name":"Identifier","src":"9908:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"bytes4","value":"signature"},"id":5205,"name":"Identifier","src":"9916:9:30"}],"id":5206,"name":"FunctionCall","src":"9885:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":5207,"name":"Literal","src":"9928:20:30"}],"id":5208,"name":"FunctionCall","src":"9877:72:30"}],"id":5209,"name":"ExpressionStatement","src":"9877:72:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"bytes4","value":"signature"},"id":5210,"name":"Identifier","src":"10048:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4818,"type":"bytes4","value":"_BURN"},"id":5211,"name":"Identifier","src":"10061:5:30"}],"id":5212,"name":"BinaryOperation","src":"10048:18:30"},{"children":[{"attributes":{"functionReturnParameters":5184},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"address","value":"_token"},"id":5213,"name":"Identifier","src":"10133:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8729,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5214,"name":"Identifier","src":"10141:5:30"}],"id":5215,"name":"MemberAccess","src":"10141:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5216,"name":"Literal","src":"10163:1:30"}],"id":5217,"name":"FunctionCall","src":"10141:24:30"}],"id":5218,"name":"TupleExpression","src":"10132:34:30"}],"id":5219,"name":"Return","src":"10125:41:30"}],"id":5220,"name":"Block","src":"10068:109:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"bytes4","value":"signature"},"id":5221,"name":"Identifier","src":"10187:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4824,"type":"bytes4","value":"_TRANSFER_FROM"},"id":5222,"name":"Identifier","src":"10200:14:30"}],"id":5223,"name":"BinaryOperation","src":"10187:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5224,"name":"Identifier","src":"10301:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5225,"name":"Identifier","src":"10309:5:30"}],"id":5226,"name":"MemberAccess","src":"10309:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5227,"name":"Literal","src":"10325:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5228,"name":"Literal","src":"10329:2:30"}],"id":5229,"name":"BinaryOperation","src":"10325:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5230,"name":"Literal","src":"10334:2:30"}],"id":5231,"name":"BinaryOperation","src":"10325:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5232,"name":"Literal","src":"10339:2:30"}],"id":5233,"name":"BinaryOperation","src":"10325:16:30"}],"id":5234,"name":"BinaryOperation","src":"10309:32:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":5235,"name":"Literal","src":"10343:34:30"}],"id":5236,"name":"FunctionCall","src":"10301:77:30"}],"id":5237,"name":"ExpressionStatement","src":"10301:77:30"},{"attributes":{"functionReturnParameters":5184},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":8661,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5238,"name":"Identifier","src":"10400:5:30"}],"id":5239,"name":"MemberAccess","src":"10400:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5240,"name":"Literal","src":"10422:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5241,"name":"Literal","src":"10426:2:30"}],"id":5242,"name":"BinaryOperation","src":"10422:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5243,"name":"Literal","src":"10431:2:30"}],"id":5244,"name":"BinaryOperation","src":"10422:11:30"}],"id":5245,"name":"FunctionCall","src":"10400:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8729,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5246,"name":"Identifier","src":"10436:5:30"}],"id":5247,"name":"MemberAccess","src":"10436:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5248,"name":"Literal","src":"10458:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5249,"name":"Literal","src":"10462:2:30"}],"id":5250,"name":"BinaryOperation","src":"10458:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5251,"name":"Literal","src":"10467:2:30"}],"id":5252,"name":"BinaryOperation","src":"10458:11:30"}],"id":5253,"name":"FunctionCall","src":"10436:34:30"}],"id":5254,"name":"TupleExpression","src":"10399:72:30"}],"id":5255,"name":"Return","src":"10392:79:30"}],"id":5256,"name":"Block","src":"10216:266:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5257,"name":"Identifier","src":"10590:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5258,"name":"Identifier","src":"10598:5:30"}],"id":5259,"name":"MemberAccess","src":"10598:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5260,"name":"Literal","src":"10614:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5261,"name":"Literal","src":"10618:2:30"}],"id":5262,"name":"BinaryOperation","src":"10614:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5263,"name":"Literal","src":"10623:2:30"}],"id":5264,"name":"BinaryOperation","src":"10614:11:30"}],"id":5265,"name":"BinaryOperation","src":"10598:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":5266,"name":"Literal","src":"10627:39:30"}],"id":5267,"name":"FunctionCall","src":"10590:77:30"}],"id":5268,"name":"ExpressionStatement","src":"10590:77:30"},{"attributes":{"functionReturnParameters":5184},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":8661,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5269,"name":"Identifier","src":"10689:5:30"}],"id":5270,"name":"MemberAccess","src":"10689:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5271,"name":"Literal","src":"10711:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5272,"name":"Literal","src":"10715:2:30"}],"id":5273,"name":"BinaryOperation","src":"10711:6:30"}],"id":5274,"name":"FunctionCall","src":"10689:29:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8729,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5178,"type":"bytes calldata","value":"_data"},"id":5275,"name":"Identifier","src":"10720:5:30"}],"id":5276,"name":"MemberAccess","src":"10720:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5277,"name":"Literal","src":"10742:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5278,"name":"Literal","src":"10746:2:30"}],"id":5279,"name":"BinaryOperation","src":"10742:6:30"}],"id":5280,"name":"FunctionCall","src":"10720:29:30"}],"id":5281,"name":"TupleExpression","src":"10688:62:30"}],"id":5282,"name":"Return","src":"10681:69:30"}],"id":5283,"name":"Block","src":"10488:273:30"}],"id":5284,"name":"IfStatement","src":"10183:578:30"}],"id":5285,"name":"IfStatement","src":"10044:717:30"}],"id":5286,"name":"Block","src":"9483:1284:30"}],"id":5287,"name":"FunctionDefinition","src":"9368:1399:30"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5319,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5288,"name":"ElementaryTypeName","src":"10866:7:30"}],"id":5289,"name":"VariableDeclaration","src":"10866:14:30"},{"attributes":{"constant":false,"name":"_loadable","scope":5319,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5290,"name":"ElementaryTypeName","src":"10882:4:30"}],"id":5291,"name":"VariableDeclaration","src":"10882:14:30"}],"id":5292,"name":"ParameterList","src":"10865:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":5295,"name":"ParameterList","src":"10917:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":5293,"name":"Identifier","src":"10907:9:30"}],"id":5294,"name":"ModifierInvocation","src":"10907:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5296,"name":"Identifier","src":"10969:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5297,"name":"Identifier","src":"10977:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5289,"type":"address","value":"_token"},"id":5298,"name":"Identifier","src":"10991:6:30"}],"id":5299,"name":"IndexAccess","src":"10977:21:30"}],"id":5300,"name":"MemberAccess","src":"10977:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5301,"name":"Literal","src":"11010:24:30"}],"id":5302,"name":"FunctionCall","src":"10969:66:30"}],"id":5303,"name":"ExpressionStatement","src":"10969:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":4834,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5304,"name":"Identifier","src":"11108:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5289,"type":"address","value":"_token"},"id":5305,"name":"Identifier","src":"11122:6:30"}],"id":5306,"name":"IndexAccess","src":"11108:21:30"}],"id":5307,"name":"MemberAccess","src":"11108:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5291,"type":"bool","value":"_loadable"},"id":5308,"name":"Identifier","src":"11141:9:30"}],"id":5309,"name":"Assignment","src":"11108:42:30"}],"id":5310,"name":"ExpressionStatement","src":"11108:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4756,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":5311,"name":"Identifier","src":"11166:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5312,"name":"Identifier","src":"11187:3:30"}],"id":5313,"name":"MemberAccess","src":"11187:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5289,"type":"address","value":"_token"},"id":5314,"name":"Identifier","src":"11199:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5291,"type":"bool","value":"_loadable"},"id":5315,"name":"Identifier","src":"11207:9:30"}],"id":5316,"name":"FunctionCall","src":"11166:51:30"}],"id":5317,"name":"EmitStatement","src":"11161:56:30"}],"id":5318,"name":"Block","src":"10917:307:30"}],"id":5319,"name":"FunctionDefinition","src":"10840:384:30"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5351,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5320,"name":"ElementaryTypeName","src":"11327:7:30"}],"id":5321,"name":"VariableDeclaration","src":"11327:14:30"},{"attributes":{"constant":false,"name":"_redeemable","scope":5351,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5322,"name":"ElementaryTypeName","src":"11343:4:30"}],"id":5323,"name":"VariableDeclaration","src":"11343:16:30"}],"id":5324,"name":"ParameterList","src":"11326:34:30"},{"attributes":{"parameters":[null]},"children":[],"id":5327,"name":"ParameterList","src":"11380:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":5325,"name":"Identifier","src":"11370:9:30"}],"id":5326,"name":"ModifierInvocation","src":"11370:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5328,"name":"Identifier","src":"11432:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5329,"name":"Identifier","src":"11440:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5321,"type":"address","value":"_token"},"id":5330,"name":"Identifier","src":"11454:6:30"}],"id":5331,"name":"IndexAccess","src":"11440:21:30"}],"id":5332,"name":"MemberAccess","src":"11440:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5333,"name":"Literal","src":"11473:24:30"}],"id":5334,"name":"FunctionCall","src":"11432:66:30"}],"id":5335,"name":"ExpressionStatement","src":"11432:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5336,"name":"Identifier","src":"11573:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5321,"type":"address","value":"_token"},"id":5337,"name":"Identifier","src":"11587:6:30"}],"id":5338,"name":"IndexAccess","src":"11573:21:30"}],"id":5339,"name":"MemberAccess","src":"11573:32:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"bool","value":"_redeemable"},"id":5340,"name":"Identifier","src":"11608:11:30"}],"id":5341,"name":"Assignment","src":"11573:46:30"}],"id":5342,"name":"ExpressionStatement","src":"11573:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4764,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":5343,"name":"Identifier","src":"11635:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5344,"name":"Identifier","src":"11658:3:30"}],"id":5345,"name":"MemberAccess","src":"11658:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5321,"type":"address","value":"_token"},"id":5346,"name":"Identifier","src":"11670:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5323,"type":"bool","value":"_redeemable"},"id":5347,"name":"Identifier","src":"11678:11:30"}],"id":5348,"name":"FunctionCall","src":"11635:55:30"}],"id":5349,"name":"EmitStatement","src":"11630:60:30"}],"id":5350,"name":"Block","src":"11380:317:30"}],"id":5351,"name":"FunctionDefinition","src":"11299:398:30"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5392,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5352,"name":"ElementaryTypeName","src":"11999:7:30"}],"id":5353,"name":"VariableDeclaration","src":"11999:14:30"},{"attributes":{"constant":false,"name":"_rate","scope":5392,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5354,"name":"ElementaryTypeName","src":"12015:7:30"}],"id":5355,"name":"VariableDeclaration","src":"12015:13:30"},{"attributes":{"constant":false,"name":"_updateDate","scope":5392,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5356,"name":"ElementaryTypeName","src":"12030:7:30"}],"id":5357,"name":"VariableDeclaration","src":"12030:19:30"}],"id":5358,"name":"ParameterList","src":"11998:52:30"},{"attributes":{"parameters":[null]},"children":[],"id":5361,"name":"ParameterList","src":"12078:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4929,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":5359,"name":"Identifier","src":"12060:17:30"}],"id":5360,"name":"ModifierInvocation","src":"12060:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5362,"name":"Identifier","src":"12130:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5363,"name":"Identifier","src":"12138:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5353,"type":"address","value":"_token"},"id":5364,"name":"Identifier","src":"12152:6:30"}],"id":5365,"name":"IndexAccess","src":"12138:21:30"}],"id":5366,"name":"MemberAccess","src":"12138:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5367,"name":"Literal","src":"12171:24:30"}],"id":5368,"name":"FunctionCall","src":"12130:66:30"}],"id":5369,"name":"ExpressionStatement","src":"12130:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":4830,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5370,"name":"Identifier","src":"12242:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5353,"type":"address","value":"_token"},"id":5371,"name":"Identifier","src":"12256:6:30"}],"id":5372,"name":"IndexAccess","src":"12242:21:30"}],"id":5373,"name":"MemberAccess","src":"12242:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5355,"type":"uint256","value":"_rate"},"id":5374,"name":"Identifier","src":"12271:5:30"}],"id":5375,"name":"Assignment","src":"12242:34:30"}],"id":5376,"name":"ExpressionStatement","src":"12242:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":4838,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5377,"name":"Identifier","src":"12339:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5353,"type":"address","value":"_token"},"id":5378,"name":"Identifier","src":"12353:6:30"}],"id":5379,"name":"IndexAccess","src":"12339:21:30"}],"id":5380,"name":"MemberAccess","src":"12339:32:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5357,"type":"uint256","value":"_updateDate"},"id":5381,"name":"Identifier","src":"12374:11:30"}],"id":5382,"name":"Assignment","src":"12339:46:30"}],"id":5383,"name":"ExpressionStatement","src":"12339:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4748,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":5384,"name":"Identifier","src":"12439:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":5385,"name":"Identifier","src":"12456:3:30"}],"id":5386,"name":"MemberAccess","src":"12456:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5353,"type":"address","value":"_token"},"id":5387,"name":"Identifier","src":"12468:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5355,"type":"uint256","value":"_rate"},"id":5388,"name":"Identifier","src":"12476:5:30"}],"id":5389,"name":"FunctionCall","src":"12439:43:30"}],"id":5390,"name":"EmitStatement","src":"12434:48:30"}],"id":5391,"name":"Block","src":"12078:411:30"}],"id":5392,"name":"FunctionDefinition","src":"11974:515:30"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":5626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":5416,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5393,"name":"ElementaryTypeName","src":"12593:15:30"}],"id":5394,"name":"VariableDeclaration","src":"12593:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":5416,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5395,"name":"ElementaryTypeName","src":"12614:7:30"}],"id":5396,"name":"VariableDeclaration","src":"12614:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":5416,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5397,"name":"ElementaryTypeName","src":"12630:7:30"}],"id":5398,"name":"VariableDeclaration","src":"12630:15:30"}],"id":5399,"name":"ParameterList","src":"12592:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":5402,"name":"ParameterList","src":"12666:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2827,"type":"modifier ()","value":"onlyAdmin"},"id":5400,"name":"Identifier","src":"12656:9:30"}],"id":5401,"name":"ModifierInvocation","src":"12656:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3328,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":5403,"name":"Identifier","src":"12676:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"address payable","value":"_to"},"id":5404,"name":"Identifier","src":"12690:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5396,"type":"address","value":"_asset"},"id":5405,"name":"Identifier","src":"12695:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5398,"type":"uint256","value":"_amount"},"id":5406,"name":"Identifier","src":"12703:7:30"}],"id":5407,"name":"FunctionCall","src":"12676:35:30"}],"id":5408,"name":"ExpressionStatement","src":"12676:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"function (address,address,uint256)","value":"Claimed"},"id":5409,"name":"Identifier","src":"12726:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"address payable","value":"_to"},"id":5410,"name":"Identifier","src":"12734:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5396,"type":"address","value":"_asset"},"id":5411,"name":"Identifier","src":"12739:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5398,"type":"uint256","value":"_amount"},"id":5412,"name":"Identifier","src":"12747:7:30"}],"id":5413,"name":"FunctionCall","src":"12726:29:30"}],"id":5414,"name":"EmitStatement","src":"12721:34:30"}],"id":5415,"name":"Block","src":"12666:96:30"}],"id":5416,"name":"FunctionDefinition","src":"12578:184:30"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5458,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5417,"name":"ElementaryTypeName","src":"13336:7:30"}],"id":5418,"name":"VariableDeclaration","src":"13336:10:30"}],"id":5419,"name":"ParameterList","src":"13335:12:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5420,"name":"ElementaryTypeName","src":"13371:6:30"}],"id":5421,"name":"VariableDeclaration","src":"13371:13:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5422,"name":"ElementaryTypeName","src":"13386:7:30"}],"id":5423,"name":"VariableDeclaration","src":"13386:7:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5424,"name":"ElementaryTypeName","src":"13395:7:30"}],"id":5425,"name":"VariableDeclaration","src":"13395:7:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5426,"name":"ElementaryTypeName","src":"13404:4:30"}],"id":5427,"name":"VariableDeclaration","src":"13404:4:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5428,"name":"ElementaryTypeName","src":"13410:4:30"}],"id":5429,"name":"VariableDeclaration","src":"13410:4:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5430,"name":"ElementaryTypeName","src":"13416:4:30"}],"id":5431,"name":"VariableDeclaration","src":"13416:4:30"},{"attributes":{"constant":false,"name":"","scope":5458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5432,"name":"ElementaryTypeName","src":"13422:7:30"}],"id":5433,"name":"VariableDeclaration","src":"13422:7:30"}],"id":5434,"name":"ParameterList","src":"13370:60:30"},{"children":[{"attributes":{"assignments":[5436]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":5457,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4839,"type":"struct TokenWhitelist.Token"},"id":5435,"name":"UserDefinedTypeName","src":"13441:5:30"}],"id":5436,"name":"VariableDeclaration","src":"13441:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5437,"name":"Identifier","src":"13467:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5418,"type":"address","value":"_a"},"id":5438,"name":"Identifier","src":"13481:2:30"}],"id":5439,"name":"IndexAccess","src":"13467:17:30"}],"id":5440,"name":"VariableDeclarationStatement","src":"13441:43:30"},{"attributes":{"functionReturnParameters":5434},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":4826,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5441,"name":"Identifier","src":"13502:9:30"}],"id":5442,"name":"MemberAccess","src":"13502:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":4828,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5443,"name":"Identifier","src":"13520:9:30"}],"id":5444,"name":"MemberAccess","src":"13520:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":4830,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5445,"name":"Identifier","src":"13541:9:30"}],"id":5446,"name":"MemberAccess","src":"13541:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5447,"name":"Identifier","src":"13557:9:30"}],"id":5448,"name":"MemberAccess","src":"13557:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":4834,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5449,"name":"Identifier","src":"13578:9:30"}],"id":5450,"name":"MemberAccess","src":"13578:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5451,"name":"Identifier","src":"13598:9:30"}],"id":5452,"name":"MemberAccess","src":"13598:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":4838,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5453,"name":"Identifier","src":"13620:9:30"}],"id":5454,"name":"MemberAccess","src":"13620:20:30"}],"id":5455,"name":"TupleExpression","src":"13501:140:30"}],"id":5456,"name":"Return","src":"13494:147:30"}],"id":5457,"name":"Block","src":"13431:217:30"}],"id":5458,"name":"FunctionDefinition","src":"13314:334:30"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5459,"name":"ParameterList","src":"14176:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5460,"name":"ElementaryTypeName","src":"14202:6:30"}],"id":5461,"name":"VariableDeclaration","src":"14202:13:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5462,"name":"ElementaryTypeName","src":"14217:7:30"}],"id":5463,"name":"VariableDeclaration","src":"14217:7:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5464,"name":"ElementaryTypeName","src":"14226:7:30"}],"id":5465,"name":"VariableDeclaration","src":"14226:7:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5466,"name":"ElementaryTypeName","src":"14235:4:30"}],"id":5467,"name":"VariableDeclaration","src":"14235:4:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5468,"name":"ElementaryTypeName","src":"14241:4:30"}],"id":5469,"name":"VariableDeclaration","src":"14241:4:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5470,"name":"ElementaryTypeName","src":"14247:4:30"}],"id":5471,"name":"VariableDeclaration","src":"14247:4:30"},{"attributes":{"constant":false,"name":"","scope":5498,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5472,"name":"ElementaryTypeName","src":"14253:7:30"}],"id":5473,"name":"VariableDeclaration","src":"14253:7:30"}],"id":5474,"name":"ParameterList","src":"14201:60:30"},{"children":[{"attributes":{"assignments":[5476]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":5497,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4839,"type":"struct TokenWhitelist.Token"},"id":5475,"name":"UserDefinedTypeName","src":"14272:5:30"}],"id":5476,"name":"VariableDeclaration","src":"14272:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5477,"name":"Identifier","src":"14303:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"address","value":"_stablecoin"},"id":5478,"name":"Identifier","src":"14317:11:30"}],"id":5479,"name":"IndexAccess","src":"14303:26:30"}],"id":5480,"name":"VariableDeclarationStatement","src":"14272:57:30"},{"attributes":{"functionReturnParameters":5474},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":4826,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5481,"name":"Identifier","src":"14360:14:30"}],"id":5482,"name":"MemberAccess","src":"14360:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":4828,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5483,"name":"Identifier","src":"14395:14:30"}],"id":5484,"name":"MemberAccess","src":"14395:24:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":4830,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5485,"name":"Identifier","src":"14433:14:30"}],"id":5486,"name":"MemberAccess","src":"14433:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5487,"name":"Identifier","src":"14466:14:30"}],"id":5488,"name":"MemberAccess","src":"14466:24:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":4834,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5489,"name":"Identifier","src":"14504:14:30"}],"id":5490,"name":"MemberAccess","src":"14504:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5491,"name":"Identifier","src":"14541:14:30"}],"id":5492,"name":"MemberAccess","src":"14541:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":4838,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5476,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5493,"name":"Identifier","src":"14580:14:30"}],"id":5494,"name":"MemberAccess","src":"14580:25:30"}],"id":5495,"name":"TupleExpression","src":"14346:269:30"}],"id":5496,"name":"Return","src":"14339:276:30"}],"id":5497,"name":"Block","src":"14262:360:30"}],"id":5498,"name":"FunctionDefinition","src":"14150:472:30"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5499,"name":"ParameterList","src":"14777:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5507,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5500,"name":"ElementaryTypeName","src":"14803:7:30"}],"id":5501,"name":"ArrayTypeName","src":"14803:9:30"}],"id":5502,"name":"VariableDeclaration","src":"14803:16:30"}],"id":5503,"name":"ParameterList","src":"14802:18:30"},{"children":[{"attributes":{"functionReturnParameters":5503},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5504,"name":"Identifier","src":"14838:18:30"}],"id":5505,"name":"Return","src":"14831:25:30"}],"id":5506,"name":"Block","src":"14821:42:30"}],"id":5507,"name":"FunctionDefinition","src":"14751:112:30"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5508,"name":"ParameterList","src":"15015:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5565,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5509,"name":"ElementaryTypeName","src":"15041:7:30"}],"id":5510,"name":"ArrayTypeName","src":"15041:9:30"}],"id":5511,"name":"VariableDeclaration","src":"15041:16:30"}],"id":5512,"name":"ParameterList","src":"15040:18:30"},{"children":[{"attributes":{"assignments":[5516]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":5564,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":5514,"name":"ElementaryTypeName","src":"15069:7:30"}],"id":5515,"name":"ArrayTypeName","src":"15069:9:30"}],"id":5516,"name":"VariableDeclaration","src":"15069:36:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5517,"name":"ElementaryTypeName","src":"15112:7:30"}],"id":5518,"name":"ArrayTypeName","src":"15112:9:30"}],"id":5519,"name":"NewExpression","src":"15108:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5520,"name":"Identifier","src":"15122:18:30"}],"id":5521,"name":"FunctionCall","src":"15108:33:30"}],"id":5522,"name":"VariableDeclarationStatement","src":"15069:72:30"},{"attributes":{"assignments":[5524]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":5564,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5523,"name":"ElementaryTypeName","src":"15151:7:30"}],"id":5524,"name":"VariableDeclaration","src":"15151:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5525,"name":"Literal","src":"15177:1:30"}],"id":5526,"name":"VariableDeclarationStatement","src":"15151:27:30"},{"children":[{"attributes":{"assignments":[5528]},"children":[{"attributes":{"constant":false,"name":"i","scope":5561,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5527,"name":"ElementaryTypeName","src":"15193:7:30"}],"id":5528,"name":"VariableDeclaration","src":"15193:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5529,"name":"Literal","src":"15205:1:30"}],"id":5530,"name":"VariableDeclarationStatement","src":"15193:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint256","value":"i"},"id":5531,"name":"Identifier","src":"15208:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5532,"name":"Identifier","src":"15212:18:30"}],"id":5533,"name":"MemberAccess","src":"15212:25:30"}],"id":5534,"name":"BinaryOperation","src":"15208:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint256","value":"i"},"id":5535,"name":"Identifier","src":"15239:1:30"}],"id":5536,"name":"UnaryOperation","src":"15239:3:30"}],"id":5537,"name":"ExpressionStatement","src":"15239:3:30"},{"children":[{"attributes":{"assignments":[5539]},"children":[{"attributes":{"constant":false,"name":"token","scope":5560,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5538,"name":"ElementaryTypeName","src":"15258:7:30"}],"id":5539,"name":"VariableDeclaration","src":"15258:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4850,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5540,"name":"Identifier","src":"15274:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint256","value":"i"},"id":5541,"name":"Identifier","src":"15293:1:30"}],"id":5542,"name":"IndexAccess","src":"15274:21:30"}],"id":5543,"name":"VariableDeclarationStatement","src":"15258:37:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4836,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5544,"name":"Identifier","src":"15313:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5539,"type":"address","value":"token"},"id":5545,"name":"Identifier","src":"15327:5:30"}],"id":5546,"name":"IndexAccess","src":"15313:20:30"}],"id":5547,"name":"MemberAccess","src":"15313:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5516,"type":"address[] memory","value":"redeemableAddresses"},"id":5548,"name":"Identifier","src":"15364:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"uint256","value":"redeemableIndex"},"id":5549,"name":"Identifier","src":"15384:15:30"}],"id":5550,"name":"IndexAccess","src":"15364:36:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5539,"type":"address","value":"token"},"id":5551,"name":"Identifier","src":"15403:5:30"}],"id":5552,"name":"Assignment","src":"15364:44:30"}],"id":5553,"name":"ExpressionStatement","src":"15364:44:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"uint256","value":"redeemableIndex"},"id":5554,"name":"Identifier","src":"15426:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5555,"name":"Literal","src":"15445:1:30"}],"id":5556,"name":"Assignment","src":"15426:20:30"}],"id":5557,"name":"ExpressionStatement","src":"15426:20:30"}],"id":5558,"name":"Block","src":"15346:115:30"}],"id":5559,"name":"IfStatement","src":"15309:152:30"}],"id":5560,"name":"Block","src":"15244:227:30"}],"id":5561,"name":"ForStatement","src":"15188:283:30"},{"attributes":{"functionReturnParameters":5512},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5516,"type":"address[] memory","value":"redeemableAddresses"},"id":5562,"name":"Identifier","src":"15487:19:30"}],"id":5563,"name":"Return","src":"15480:26:30"}],"id":5564,"name":"Block","src":"15059:454:30"}],"id":5565,"name":"FunctionDefinition","src":"14990:523:30"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5588,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5566,"name":"ElementaryTypeName","src":"15727:7:30"}],"id":5567,"name":"VariableDeclaration","src":"15727:14:30"},{"attributes":{"constant":false,"name":"_methodId","scope":5588,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5568,"name":"ElementaryTypeName","src":"15743:6:30"}],"id":5569,"name":"VariableDeclaration","src":"15743:16:30"}],"id":5570,"name":"ParameterList","src":"15726:34:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5588,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5571,"name":"ElementaryTypeName","src":"15782:4:30"}],"id":5572,"name":"VariableDeclaration","src":"15782:4:30"}],"id":5573,"name":"ParameterList","src":"15781:6:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":5574,"name":"Identifier","src":"15798:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4832,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5575,"name":"Identifier","src":"15806:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5567,"type":"address","value":"_token"},"id":5576,"name":"Identifier","src":"15820:6:30"}],"id":5577,"name":"IndexAccess","src":"15806:21:30"}],"id":5578,"name":"MemberAccess","src":"15806:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":5579,"name":"Literal","src":"15839:20:30"}],"id":5580,"name":"FunctionCall","src":"15798:62:30"}],"id":5581,"name":"ExpressionStatement","src":"15798:62:30"},{"attributes":{"functionReturnParameters":5573},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5582,"name":"Identifier","src":"15878:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5569,"type":"bytes4","value":"_methodId"},"id":5583,"name":"Identifier","src":"15897:9:30"}],"id":5584,"name":"IndexAccess","src":"15878:29:30"}],"id":5585,"name":"TupleExpression","src":"15877:31:30"}],"id":5586,"name":"Return","src":"15870:38:30"}],"id":5587,"name":"Block","src":"15788:127:30"}],"id":5588,"name":"FunctionDefinition","src":"15695:220:30"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":5601,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5589,"name":"ElementaryTypeName","src":"16104:6:30"}],"id":5590,"name":"VariableDeclaration","src":"16104:16:30"}],"id":5591,"name":"ParameterList","src":"16103:18:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5601,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5592,"name":"ElementaryTypeName","src":"16145:4:30"}],"id":5593,"name":"VariableDeclaration","src":"16145:4:30"}],"id":5594,"name":"ParameterList","src":"16144:6:30"},{"children":[{"attributes":{"functionReturnParameters":5594},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4847,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5595,"name":"Identifier","src":"16169:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5590,"type":"bytes4","value":"_methodId"},"id":5596,"name":"Identifier","src":"16188:9:30"}],"id":5597,"name":"IndexAccess","src":"16169:29:30"}],"id":5598,"name":"TupleExpression","src":"16168:31:30"}],"id":5599,"name":"Return","src":"16161:38:30"}],"id":5600,"name":"Block","src":"16151:55:30"}],"id":5601,"name":"FunctionDefinition","src":"16070:136:30"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5602,"name":"ParameterList","src":"16342:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5609,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5603,"name":"ElementaryTypeName","src":"16368:7:30"}],"id":5604,"name":"VariableDeclaration","src":"16368:7:30"}],"id":5605,"name":"ParameterList","src":"16367:9:30"},{"children":[{"attributes":{"functionReturnParameters":5605},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"uint256","value":"_redeemableCounter"},"id":5606,"name":"Identifier","src":"16394:18:30"}],"id":5607,"name":"Return","src":"16387:25:30"}],"id":5608,"name":"Block","src":"16377:42:30"}],"id":5609,"name":"FunctionDefinition","src":"16316:103:30"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5610,"name":"ParameterList","src":"16570:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5617,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5611,"name":"ElementaryTypeName","src":"16596:7:30"}],"id":5612,"name":"VariableDeclaration","src":"16596:7:30"}],"id":5613,"name":"ParameterList","src":"16595:9:30"},{"children":[{"attributes":{"functionReturnParameters":5613},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"address","value":"_stablecoin"},"id":5614,"name":"Identifier","src":"16622:11:30"}],"id":5615,"name":"Return","src":"16615:18:30"}],"id":5616,"name":"Block","src":"16605:35:30"}],"id":5617,"name":"FunctionDefinition","src":"16551:89:30"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":5626,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5618,"name":"ParameterList","src":"16774:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":5625,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5619,"name":"ElementaryTypeName","src":"16800:7:30"}],"id":5620,"name":"VariableDeclaration","src":"16800:7:30"}],"id":5621,"name":"ParameterList","src":"16799:9:30"},{"children":[{"attributes":{"functionReturnParameters":5621},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4856,"type":"bytes32","value":"_oracleNode"},"id":5622,"name":"Identifier","src":"16826:11:30"}],"id":5623,"name":"Return","src":"16819:18:30"}],"id":5624,"name":"Block","src":"16809:35:30"}],"id":5625,"name":"FunctionDefinition","src":"16755:89:30"}],"id":5626,"name":"ContractDefinition","src":"1939:14907:30"}],"id":5627,"name":"SourceUnit","src":"774:16073:30"}},"wallet.sol":{"AST":{"attributes":{"absolutePath":"wallet.sol","exportedSymbols":{"AddressWhitelist":[650],"ControllableOwnable":[80],"DailyLimitTrait":[852],"GasTopUpLimit":[1142],"LoadLimit":[1316],"SelfCallableOwnable":[102],"SpendLimit":[984],"Wallet":[2227]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":45,"name":"PragmaDirective","src":"757:24:31"},{"attributes":{"SourceUnit":3874,"absolutePath":"licence.sol","file":"./licence.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":46,"name":"ImportDirective","src":"783:23:31"},{"attributes":{"SourceUnit":3073,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":47,"name":"ImportDirective","src":"807:33:31"},{"attributes":{"SourceUnit":2871,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":48,"name":"ImportDirective","src":"841:38:31"},{"attributes":{"SourceUnit":2775,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":49,"name":"ImportDirective","src":"880:37:31"},{"attributes":{"SourceUnit":3330,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":50,"name":"ImportDirective","src":"918:39:31"},{"attributes":{"SourceUnit":2916,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":51,"name":"ImportDirective","src":"958:39:31"},{"attributes":{"SourceUnit":3290,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":52,"name":"ImportDirective","src":"998:44:31"},{"attributes":{"SourceUnit":2743,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":53,"name":"ImportDirective","src":"1043:34:31"},{"attributes":{"SourceUnit":2247,"absolutePath":"externals/Address.sol","file":"./externals/Address.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":54,"name":"ImportDirective","src":"1078:33:31"},{"attributes":{"SourceUnit":2391,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":55,"name":"ImportDirective","src":"1112:31:31"},{"attributes":{"SourceUnit":2610,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":56,"name":"ImportDirective","src":"1144:35:31"},{"attributes":{"SourceUnit":2338,"absolutePath":"externals/ERC165.sol","file":"./externals/ERC165.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":57,"name":"ImportDirective","src":"1180:32:31"},{"attributes":{"SourceUnit":2328,"absolutePath":"externals/ECDSA.sol","file":"./externals/ECDSA.sol","scope":2228,"symbolAliases":[null],"unitAlias":""},"id":58,"name":"ImportDirective","src":"1213:31:31"},{"attributes":{"contractDependencies":[2870,2915,3072],"contractKind":"contract","documentation":"@title ControllableOwnable combines Controllable and Ownable\n @dev providing an additional modifier to check if Owner or Controller","fullyImplemented":false,"linearizedBaseContracts":[80,3072,2870,2915],"name":"ControllableOwnable","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2870,"type":"contract Controllable"},"id":59,"name":"UserDefinedTypeName","src":"1418:12:31"}],"id":60,"name":"InheritanceSpecifier","src":"1418:12:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3072,"type":"contract Ownable"},"id":61,"name":"UserDefinedTypeName","src":"1432:7:31"}],"id":62,"name":"InheritanceSpecifier","src":"1432:7:31"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or one of the Controllers","name":"onlyOwnerOrController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":63,"name":"ParameterList","src":"1548:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a244313930a94a6f5de4548387c8c245a5d11002ac47a2e54f96214a9879106","typeString":"literal_string \"only owner||controller\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":64,"name":"Identifier","src":"1561:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":65,"name":"Identifier","src":"1569:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":66,"name":"Identifier","src":"1578:3:31"}],"id":67,"name":"MemberAccess","src":"1578:10:31"}],"id":68,"name":"FunctionCall","src":"1569:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"function (address) view returns (bool)","value":"_isController"},"id":69,"name":"Identifier","src":"1593:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":70,"name":"Identifier","src":"1607:3:31"}],"id":71,"name":"MemberAccess","src":"1607:10:31"}],"id":72,"name":"FunctionCall","src":"1593:25:31"}],"id":73,"name":"BinaryOperation","src":"1569:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||controller\"","value":"only owner||controller"},"id":74,"name":"Literal","src":"1620:24:31"}],"id":75,"name":"FunctionCall","src":"1561:84:31"}],"id":76,"name":"ExpressionStatement","src":"1561:84:31"},{"id":77,"name":"PlaceholderStatement","src":"1655:1:31"}],"id":78,"name":"Block","src":"1551:112:31"}],"id":79,"name":"ModifierDefinition","src":"1518:145:31"}],"id":80,"name":"ContractDefinition","src":"1386:279:31"},{"attributes":{"contractDependencies":[3072],"contractKind":"contract","documentation":"@title SelfCallableOwnable allows either owner or the contract itself to call its functions\n @dev providing an additional modifier to check if Owner or self is calling\n @dev the \"self\" here is used for the meta transactions","fullyImplemented":false,"linearizedBaseContracts":[102,3072],"name":"SelfCallableOwnable","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3072,"type":"contract Ownable"},"id":81,"name":"UserDefinedTypeName","src":"1934:7:31"}],"id":82,"name":"InheritanceSpecifier","src":"1934:7:31"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or self","name":"onlyOwnerOrSelf","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":83,"name":"ParameterList","src":"2026:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c98ff749bed2b5f266d255ad845f8a2a0dba28f389ec62046d9aad839ae2d6","typeString":"literal_string \"only owner||self\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":84,"name":"Identifier","src":"2039:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":85,"name":"Identifier","src":"2047:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":86,"name":"Identifier","src":"2056:3:31"}],"id":87,"name":"MemberAccess","src":"2056:10:31"}],"id":88,"name":"FunctionCall","src":"2047:20:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":89,"name":"Identifier","src":"2071:3:31"}],"id":90,"name":"MemberAccess","src":"2071:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfCallableOwnable_$102","typeString":"contract SelfCallableOwnable"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":91,"name":"ElementaryTypeNameExpression","src":"2085:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10235,"type":"contract SelfCallableOwnable","value":"this"},"id":92,"name":"Identifier","src":"2093:4:31"}],"id":93,"name":"FunctionCall","src":"2085:13:31"}],"id":94,"name":"BinaryOperation","src":"2071:27:31"}],"id":95,"name":"BinaryOperation","src":"2047:51:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c73656c66","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||self\"","value":"only owner||self"},"id":96,"name":"Literal","src":"2100:18:31"}],"id":97,"name":"FunctionCall","src":"2039:80:31"}],"id":98,"name":"ExpressionStatement","src":"2039:80:31"},{"id":99,"name":"PlaceholderStatement","src":"2129:1:31"}],"id":100,"name":"Block","src":"2029:108:31"}],"id":101,"name":"ModifierDefinition","src":"2002:135:31"}],"id":102,"name":"ContractDefinition","src":"1902:237:31"},{"attributes":{"contractDependencies":[80,102,2870,2915,3072],"contractKind":"contract","documentation":"@title AddressWhitelist provides payee-whitelist functionality.\n @dev This contract will allow the user to maintain a whitelist of addresses\n @dev These addresses will live outside of the various spend limits","fullyImplemented":false,"linearizedBaseContracts":[650,102,80,3072,2870,2915],"name":"AddressWhitelist","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":80,"type":"contract ControllableOwnable"},"id":103,"name":"UserDefinedTypeName","src":"2390:19:31"}],"id":104,"name":"InheritanceSpecifier","src":"2390:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":102,"type":"contract SelfCallableOwnable"},"id":105,"name":"UserDefinedTypeName","src":"2411:19:31"}],"id":106,"name":"InheritanceSpecifier","src":"2411:19:31"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":107,"name":"UserDefinedTypeName","src":"2443:8:31"},{"attributes":{"name":"uint256","type":"uint256"},"id":108,"name":"ElementaryTypeName","src":"2456:7:31"}],"id":109,"name":"UsingForDirective","src":"2437:27:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":116,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":110,"name":"ElementaryTypeName","src":"2493:7:31"}],"id":111,"name":"VariableDeclaration","src":"2493:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":116,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":112,"name":"ElementaryTypeName","src":"2510:7:31"}],"id":113,"name":"ArrayTypeName","src":"2510:9:31"}],"id":114,"name":"VariableDeclaration","src":"2510:20:31"}],"id":115,"name":"ParameterList","src":"2492:39:31"}],"id":116,"name":"EventDefinition","src":"2470:62:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":117,"name":"ElementaryTypeName","src":"2570:7:31"}],"id":118,"name":"VariableDeclaration","src":"2570:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":122,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":119,"name":"ElementaryTypeName","src":"2587:7:31"}],"id":120,"name":"VariableDeclaration","src":"2587:13:31"}],"id":121,"name":"ParameterList","src":"2569:32:31"}],"id":122,"name":"EventDefinition","src":"2537:65:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":129,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":123,"name":"ElementaryTypeName","src":"2640:7:31"}],"id":124,"name":"ArrayTypeName","src":"2640:9:31"}],"id":125,"name":"VariableDeclaration","src":"2640:20:31"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":129,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":126,"name":"ElementaryTypeName","src":"2662:7:31"}],"id":127,"name":"VariableDeclaration","src":"2662:13:31"}],"id":128,"name":"ParameterList","src":"2639:37:31"}],"id":129,"name":"EventDefinition","src":"2607:70:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":135,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":130,"name":"ElementaryTypeName","src":"2715:7:31"}],"id":131,"name":"VariableDeclaration","src":"2715:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":135,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":132,"name":"ElementaryTypeName","src":"2732:7:31"}],"id":133,"name":"VariableDeclaration","src":"2732:13:31"}],"id":134,"name":"ParameterList","src":"2714:32:31"}],"id":135,"name":"EventDefinition","src":"2683:64:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedFromWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":142,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":136,"name":"ElementaryTypeName","src":"2779:7:31"}],"id":137,"name":"VariableDeclaration","src":"2779:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":142,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":138,"name":"ElementaryTypeName","src":"2796:7:31"}],"id":139,"name":"ArrayTypeName","src":"2796:9:31"}],"id":140,"name":"VariableDeclaration","src":"2796:20:31"}],"id":141,"name":"ParameterList","src":"2778:39:31"}],"id":142,"name":"EventDefinition","src":"2752:66:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":149,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":143,"name":"ElementaryTypeName","src":"2855:7:31"}],"id":144,"name":"ArrayTypeName","src":"2855:9:31"}],"id":145,"name":"VariableDeclaration","src":"2855:20:31"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":149,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":146,"name":"ElementaryTypeName","src":"2877:7:31"}],"id":147,"name":"VariableDeclaration","src":"2877:13:31"}],"id":148,"name":"ParameterList","src":"2854:37:31"}],"id":149,"name":"EventDefinition","src":"2823:69:31"},{"attributes":{"constant":false,"name":"whitelistMap","scope":650,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":150,"name":"ElementaryTypeName","src":"2906:7:31"},{"attributes":{"name":"bool","type":"bool"},"id":151,"name":"ElementaryTypeName","src":"2917:4:31"}],"id":152,"name":"Mapping","src":"2898:24:31"}],"id":153,"name":"VariableDeclaration","src":"2898:44:31"},{"attributes":{"constant":false,"name":"whitelistArray","scope":650,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":154,"name":"ElementaryTypeName","src":"2948:7:31"}],"id":155,"name":"ArrayTypeName","src":"2948:9:31"}],"id":156,"name":"VariableDeclaration","src":"2948:31:31"},{"attributes":{"constant":false,"name":"_pendingWhitelistAddition","scope":650,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":157,"name":"ElementaryTypeName","src":"2985:7:31"}],"id":158,"name":"ArrayTypeName","src":"2985:9:31"}],"id":159,"name":"VariableDeclaration","src":"2985:43:31"},{"attributes":{"constant":false,"name":"_pendingWhitelistRemoval","scope":650,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":160,"name":"ElementaryTypeName","src":"3034:7:31"}],"id":161,"name":"ArrayTypeName","src":"3034:9:31"}],"id":162,"name":"VariableDeclaration","src":"3034:42:31"},{"attributes":{"constant":false,"name":"submittedWhitelistAddition","scope":650,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":163,"name":"ElementaryTypeName","src":"3082:4:31"}],"id":164,"name":"VariableDeclaration","src":"3082:38:31"},{"attributes":{"constant":false,"name":"submittedWhitelistRemoval","scope":650,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":165,"name":"ElementaryTypeName","src":"3126:4:31"}],"id":166,"name":"VariableDeclaration","src":"3126:37:31"},{"attributes":{"constant":false,"name":"isSetWhitelist","scope":650,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":167,"name":"ElementaryTypeName","src":"3169:4:31"}],"id":168,"name":"VariableDeclaration","src":"3169:26:31"},{"attributes":{"documentation":"@dev Check if the provided addresses contain the owner or the zero-address address.","name":"hasNoOwnerOrZeroAddress","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":209,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":169,"name":"ElementaryTypeName","src":"3327:7:31"}],"id":170,"name":"ArrayTypeName","src":"3327:9:31"}],"id":171,"name":"VariableDeclaration","src":"3327:27:31"}],"id":172,"name":"ParameterList","src":"3326:29:31"},{"children":[{"children":[{"attributes":{"assignments":[174]},"children":[{"attributes":{"constant":false,"name":"i","scope":206,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":173,"name":"ElementaryTypeName","src":"3371:7:31"}],"id":174,"name":"VariableDeclaration","src":"3371:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":175,"name":"Literal","src":"3383:1:31"}],"id":176,"name":"VariableDeclarationStatement","src":"3371:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":174,"type":"uint256","value":"i"},"id":177,"name":"Identifier","src":"3386:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":171,"type":"address[] memory","value":"_addresses"},"id":178,"name":"Identifier","src":"3390:10:31"}],"id":179,"name":"MemberAccess","src":"3390:17:31"}],"id":180,"name":"BinaryOperation","src":"3386:21:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":174,"type":"uint256","value":"i"},"id":181,"name":"Identifier","src":"3409:1:31"}],"id":182,"name":"UnaryOperation","src":"3409:3:31"}],"id":183,"name":"ExpressionStatement","src":"3409:3:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83144f57b92473167e9ce74530b82e833e4f010b46d8a2562f84cdc754bd4967","typeString":"literal_string \"contains owner address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":184,"name":"Identifier","src":"3428:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":185,"name":"Identifier","src":"3437:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":171,"type":"address[] memory","value":"_addresses"},"id":186,"name":"Identifier","src":"3446:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":174,"type":"uint256","value":"i"},"id":187,"name":"Identifier","src":"3457:1:31"}],"id":188,"name":"IndexAccess","src":"3446:13:31"}],"id":189,"name":"FunctionCall","src":"3437:23:31"}],"id":190,"name":"UnaryOperation","src":"3436:24:31"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e73206f776e65722061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains owner address\"","value":"contains owner address"},"id":191,"name":"Literal","src":"3462:24:31"}],"id":192,"name":"FunctionCall","src":"3428:59:31"}],"id":193,"name":"ExpressionStatement","src":"3428:59:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab14c1506b1b0c03aad2feb5e5b965df7dffe18036562732ceabd49019d58098","typeString":"literal_string \"contains 0 address\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":194,"name":"Identifier","src":"3501:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":171,"type":"address[] memory","value":"_addresses"},"id":195,"name":"Identifier","src":"3509:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":174,"type":"uint256","value":"i"},"id":196,"name":"Identifier","src":"3520:1:31"}],"id":197,"name":"IndexAccess","src":"3509:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":198,"name":"ElementaryTypeNameExpression","src":"3526:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":199,"name":"Literal","src":"3534:1:31"}],"id":200,"name":"FunctionCall","src":"3526:10:31"}],"id":201,"name":"BinaryOperation","src":"3509:27:31"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e7320302061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains 0 address\"","value":"contains 0 address"},"id":202,"name":"Literal","src":"3538:20:31"}],"id":203,"name":"FunctionCall","src":"3501:58:31"}],"id":204,"name":"ExpressionStatement","src":"3501:58:31"}],"id":205,"name":"Block","src":"3414:156:31"}],"id":206,"name":"ForStatement","src":"3366:204:31"},{"id":207,"name":"PlaceholderStatement","src":"3579:1:31"}],"id":208,"name":"Block","src":"3356:231:31"}],"id":209,"name":"ModifierDefinition","src":"3294:293:31"},{"attributes":{"documentation":"@dev Check that neither addition nor removal operations have already been submitted.","name":"noActiveSubmission","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":210,"name":"ParameterList","src":"3713:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_218a99457edaa7c4d6a4ca4023db54cf2e31e2ca8b9a350a6c9ab56a1ea1df99","typeString":"literal_string \"whitelist sumbission pending\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":211,"name":"Identifier","src":"3726:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":212,"name":"Identifier","src":"3735:26:31"}],"id":213,"name":"UnaryOperation","src":"3734:27:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":214,"name":"Identifier","src":"3766:25:31"}],"id":215,"name":"UnaryOperation","src":"3765:26:31"}],"id":216,"name":"BinaryOperation","src":"3734:57:31"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c6973742073756d62697373696f6e2070656e64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist sumbission pending\"","value":"whitelist sumbission pending"},"id":217,"name":"Literal","src":"3793:30:31"}],"id":218,"name":"FunctionCall","src":"3726:98:31"}],"id":219,"name":"ExpressionStatement","src":"3726:98:31"},{"id":220,"name":"PlaceholderStatement","src":"3834:1:31"}],"id":221,"name":"Block","src":"3716:126:31"}],"id":222,"name":"ModifierDefinition","src":"3686:156:31"},{"attributes":{"documentation":"@dev Cancel pending whitelist addition.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistAddition","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":257,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":223,"name":"ElementaryTypeName","src":"3929:7:31"}],"id":224,"name":"VariableDeclaration","src":"3929:13:31"}],"id":225,"name":"ParameterList","src":"3928:15:31"},{"attributes":{"parameters":[null]},"children":[],"id":228,"name":"ParameterList","src":"3975:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":79,"type":"modifier ()","value":"onlyOwnerOrController"},"id":226,"name":"Identifier","src":"3953:21:31"}],"id":227,"name":"ModifierInvocation","src":"3953:21:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":229,"name":"Identifier","src":"4035:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":230,"name":"Identifier","src":"4043:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":231,"name":"Literal","src":"4071:23:31"}],"id":232,"name":"FunctionCall","src":"4035:60:31"}],"id":233,"name":"ExpressionStatement","src":"4035:60:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":234,"name":"Identifier","src":"4200:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":224,"type":"bytes32","value":"_hash"},"id":235,"name":"Identifier","src":"4208:5:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":236,"name":"Identifier","src":"4217:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":237,"name":"Identifier","src":"4231:25:31"}],"id":238,"name":"FunctionCall","src":"4217:40:31"}],"id":239,"name":"BinaryOperation","src":"4208:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":240,"name":"Literal","src":"4259:37:31"}],"id":241,"name":"FunctionCall","src":"4200:97:31"}],"id":242,"name":"ExpressionStatement","src":"4200:97:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":243,"name":"Identifier","src":"4350:25:31"}],"id":244,"name":"UnaryOperation","src":"4343:32:31"}],"id":245,"name":"ExpressionStatement","src":"4343:32:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":246,"name":"Identifier","src":"4432:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":247,"name":"Literal","src":"4461:5:31"}],"id":248,"name":"Assignment","src":"4432:34:31"}],"id":249,"name":"ExpressionStatement","src":"4432:34:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"function (address,bytes32)","value":"CancelledWhitelistAddition"},"id":250,"name":"Identifier","src":"4521:26:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":251,"name":"Identifier","src":"4548:3:31"}],"id":252,"name":"MemberAccess","src":"4548:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":224,"type":"bytes32","value":"_hash"},"id":253,"name":"Identifier","src":"4560:5:31"}],"id":254,"name":"FunctionCall","src":"4521:45:31"}],"id":255,"name":"EmitStatement","src":"4516:50:31"}],"id":256,"name":"Block","src":"3975:598:31"}],"id":257,"name":"FunctionDefinition","src":"3896:677:31"},{"attributes":{"documentation":"@dev Cancel pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistRemoval","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":292,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":258,"name":"ElementaryTypeName","src":"4673:7:31"}],"id":259,"name":"VariableDeclaration","src":"4673:13:31"}],"id":260,"name":"ParameterList","src":"4672:15:31"},{"attributes":{"parameters":[null]},"children":[],"id":263,"name":"ParameterList","src":"4719:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":79,"type":"modifier ()","value":"onlyOwnerOrController"},"id":261,"name":"Identifier","src":"4697:21:31"}],"id":262,"name":"ModifierInvocation","src":"4697:21:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":264,"name":"Identifier","src":"4779:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":265,"name":"Identifier","src":"4787:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":266,"name":"Literal","src":"4814:23:31"}],"id":267,"name":"FunctionCall","src":"4779:59:31"}],"id":268,"name":"ExpressionStatement","src":"4779:59:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":269,"name":"Identifier","src":"4942:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":259,"type":"bytes32","value":"_hash"},"id":270,"name":"Identifier","src":"4950:5:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":271,"name":"Identifier","src":"4959:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":272,"name":"Identifier","src":"4973:24:31"}],"id":273,"name":"FunctionCall","src":"4959:39:31"}],"id":274,"name":"BinaryOperation","src":"4950:48:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":275,"name":"Literal","src":"5000:37:31"}],"id":276,"name":"FunctionCall","src":"4942:96:31"}],"id":277,"name":"ExpressionStatement","src":"4942:96:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":278,"name":"Identifier","src":"5091:24:31"}],"id":279,"name":"UnaryOperation","src":"5084:31:31"}],"id":280,"name":"ExpressionStatement","src":"5084:31:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":281,"name":"Identifier","src":"5161:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":282,"name":"Literal","src":"5189:5:31"}],"id":283,"name":"Assignment","src":"5161:33:31"}],"id":284,"name":"ExpressionStatement","src":"5161:33:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":135,"type":"function (address,bytes32)","value":"CancelledWhitelistRemoval"},"id":285,"name":"Identifier","src":"5249:25:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":286,"name":"Identifier","src":"5275:3:31"}],"id":287,"name":"MemberAccess","src":"5275:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":259,"type":"bytes32","value":"_hash"},"id":288,"name":"Identifier","src":"5287:5:31"}],"id":289,"name":"FunctionCall","src":"5249:44:31"}],"id":290,"name":"EmitStatement","src":"5244:49:31"}],"id":291,"name":"Block","src":"4719:581:31"}],"id":292,"name":"FunctionDefinition","src":"4641:659:31"},{"attributes":{"documentation":"@dev Confirm pending whitelist addition.\n @dev This will only ever be applied post 2FA, by one of the Controllers\n @param _hash is the hash of the pending whitelist array, a form of lamport lock","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistAddition","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":364,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":293,"name":"ElementaryTypeName","src":"5557:7:31"}],"id":294,"name":"VariableDeclaration","src":"5557:13:31"}],"id":295,"name":"ParameterList","src":"5556:15:31"},{"attributes":{"parameters":[null]},"children":[],"id":298,"name":"ParameterList","src":"5596:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":296,"name":"Identifier","src":"5581:14:31"}],"id":297,"name":"ModifierInvocation","src":"5581:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":299,"name":"Identifier","src":"5673:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":300,"name":"Identifier","src":"5681:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":301,"name":"Literal","src":"5709:23:31"}],"id":302,"name":"FunctionCall","src":"5673:60:31"}],"id":303,"name":"ExpressionStatement","src":"5673:60:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":304,"name":"Identifier","src":"5838:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":294,"type":"bytes32","value":"_hash"},"id":305,"name":"Identifier","src":"5846:5:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":306,"name":"Identifier","src":"5855:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":307,"name":"Identifier","src":"5869:25:31"}],"id":308,"name":"FunctionCall","src":"5855:40:31"}],"id":309,"name":"BinaryOperation","src":"5846:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":310,"name":"Literal","src":"5897:37:31"}],"id":311,"name":"FunctionCall","src":"5838:97:31"}],"id":312,"name":"ExpressionStatement","src":"5838:97:31"},{"children":[{"attributes":{"assignments":[314]},"children":[{"attributes":{"constant":false,"name":"i","scope":349,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":313,"name":"ElementaryTypeName","src":"5990:7:31"}],"id":314,"name":"VariableDeclaration","src":"5990:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":315,"name":"Literal","src":"6002:1:31"}],"id":316,"name":"VariableDeclarationStatement","src":"5990:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":317,"name":"Identifier","src":"6005:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":318,"name":"Identifier","src":"6009:25:31"}],"id":319,"name":"MemberAccess","src":"6009:32:31"}],"id":320,"name":"BinaryOperation","src":"6005:36:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":321,"name":"Identifier","src":"6043:1:31"}],"id":322,"name":"UnaryOperation","src":"6043:3:31"}],"id":323,"name":"ExpressionStatement","src":"6043:3:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":324,"name":"Identifier","src":"6117:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":325,"name":"Identifier","src":"6130:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":326,"name":"Identifier","src":"6156:1:31"}],"id":327,"name":"IndexAccess","src":"6130:28:31"}],"id":328,"name":"IndexAccess","src":"6117:42:31"}],"id":329,"name":"UnaryOperation","src":"6116:43:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":330,"name":"Identifier","src":"6227:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":331,"name":"Identifier","src":"6240:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":332,"name":"Identifier","src":"6266:1:31"}],"id":333,"name":"IndexAccess","src":"6240:28:31"}],"id":334,"name":"IndexAccess","src":"6227:42:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":335,"name":"Literal","src":"6272:4:31"}],"id":336,"name":"Assignment","src":"6227:49:31"}],"id":337,"name":"ExpressionStatement","src":"6227:49:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":338,"name":"Identifier","src":"6294:14:31"}],"id":340,"name":"MemberAccess","src":"6294:19:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":341,"name":"Identifier","src":"6314:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"uint256","value":"i"},"id":342,"name":"Identifier","src":"6340:1:31"}],"id":343,"name":"IndexAccess","src":"6314:28:31"}],"id":344,"name":"FunctionCall","src":"6294:49:31"}],"id":345,"name":"ExpressionStatement","src":"6294:49:31"}],"id":346,"name":"Block","src":"6161:197:31"}],"id":347,"name":"IfStatement","src":"6112:246:31"}],"id":348,"name":"Block","src":"6048:320:31"}],"id":349,"name":"ForStatement","src":"5985:383:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":116,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":350,"name":"Identifier","src":"6418:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":351,"name":"Identifier","src":"6435:3:31"}],"id":352,"name":"MemberAccess","src":"6435:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":353,"name":"Identifier","src":"6447:25:31"}],"id":354,"name":"FunctionCall","src":"6418:55:31"}],"id":355,"name":"EmitStatement","src":"6413:60:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":356,"name":"Identifier","src":"6526:25:31"}],"id":357,"name":"UnaryOperation","src":"6519:32:31"}],"id":358,"name":"ExpressionStatement","src":"6519:32:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":359,"name":"Identifier","src":"6599:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":360,"name":"Literal","src":"6628:5:31"}],"id":361,"name":"Assignment","src":"6599:34:31"}],"id":362,"name":"ExpressionStatement","src":"6599:34:31"}],"id":363,"name":"Block","src":"5596:1044:31"}],"id":364,"name":"FunctionDefinition","src":"5523:1117:31"},{"attributes":{"documentation":"@dev Confirm pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistRemoval","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":469,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":365,"name":"ElementaryTypeName","src":"6742:7:31"}],"id":366,"name":"VariableDeclaration","src":"6742:13:31"}],"id":367,"name":"ParameterList","src":"6741:15:31"},{"attributes":{"parameters":[null]},"children":[],"id":370,"name":"ParameterList","src":"6781:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":368,"name":"Identifier","src":"6766:14:31"}],"id":369,"name":"ModifierInvocation","src":"6766:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":371,"name":"Identifier","src":"6888:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":372,"name":"Identifier","src":"6896:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":373,"name":"Literal","src":"6923:23:31"}],"id":374,"name":"FunctionCall","src":"6888:59:31"}],"id":375,"name":"ExpressionStatement","src":"6888:59:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":376,"name":"Identifier","src":"7051:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"bytes32","value":"_hash"},"id":377,"name":"Identifier","src":"7059:5:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":378,"name":"Identifier","src":"7068:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":379,"name":"Identifier","src":"7082:24:31"}],"id":380,"name":"FunctionCall","src":"7068:39:31"}],"id":381,"name":"BinaryOperation","src":"7059:48:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":382,"name":"Literal","src":"7109:37:31"}],"id":383,"name":"FunctionCall","src":"7051:96:31"}],"id":384,"name":"ExpressionStatement","src":"7051:96:31"},{"children":[{"attributes":{"assignments":[386]},"children":[{"attributes":{"constant":false,"name":"i","scope":454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":385,"name":"ElementaryTypeName","src":"7199:7:31"}],"id":386,"name":"VariableDeclaration","src":"7199:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":387,"name":"Literal","src":"7211:1:31"}],"id":388,"name":"VariableDeclarationStatement","src":"7199:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":389,"name":"Identifier","src":"7214:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":390,"name":"Identifier","src":"7218:24:31"}],"id":391,"name":"MemberAccess","src":"7218:31:31"}],"id":392,"name":"BinaryOperation","src":"7214:35:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":393,"name":"Identifier","src":"7251:1:31"}],"id":394,"name":"UnaryOperation","src":"7251:3:31"}],"id":395,"name":"ExpressionStatement","src":"7251:3:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":396,"name":"Identifier","src":"7308:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":397,"name":"Identifier","src":"7321:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":398,"name":"Identifier","src":"7346:1:31"}],"id":399,"name":"IndexAccess","src":"7321:27:31"}],"id":400,"name":"IndexAccess","src":"7308:41:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":401,"name":"Identifier","src":"7369:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":402,"name":"Identifier","src":"7382:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":403,"name":"Identifier","src":"7407:1:31"}],"id":404,"name":"IndexAccess","src":"7382:27:31"}],"id":405,"name":"IndexAccess","src":"7369:41:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":406,"name":"Literal","src":"7413:5:31"}],"id":407,"name":"Assignment","src":"7369:49:31"}],"id":408,"name":"ExpressionStatement","src":"7369:49:31"},{"children":[{"attributes":{"assignments":[410]},"children":[{"attributes":{"constant":false,"name":"j","scope":445,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":409,"name":"ElementaryTypeName","src":"7441:7:31"}],"id":410,"name":"VariableDeclaration","src":"7441:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":411,"name":"Literal","src":"7453:1:31"}],"id":412,"name":"VariableDeclarationStatement","src":"7441:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":410,"type":"uint256","value":"j"},"id":413,"name":"Identifier","src":"7456:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":414,"name":"Identifier","src":"7460:14:31"}],"id":415,"name":"MemberAccess","src":"7460:21:31"}],"id":416,"name":"MemberAccess","src":"7460:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":417,"name":"Literal","src":"7486:1:31"}],"id":418,"name":"FunctionCall","src":"7460:28:31"}],"id":419,"name":"BinaryOperation","src":"7456:32:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":410,"type":"uint256","value":"j"},"id":420,"name":"Identifier","src":"7490:1:31"}],"id":421,"name":"UnaryOperation","src":"7490:3:31"}],"id":422,"name":"ExpressionStatement","src":"7490:3:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":423,"name":"Identifier","src":"7521:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":410,"type":"uint256","value":"j"},"id":424,"name":"Identifier","src":"7536:1:31"}],"id":425,"name":"IndexAccess","src":"7521:17:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":426,"name":"Identifier","src":"7542:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":386,"type":"uint256","value":"i"},"id":427,"name":"Identifier","src":"7567:1:31"}],"id":428,"name":"IndexAccess","src":"7542:27:31"}],"id":429,"name":"BinaryOperation","src":"7521:48:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":430,"name":"Identifier","src":"7597:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":410,"type":"uint256","value":"j"},"id":431,"name":"Identifier","src":"7612:1:31"}],"id":432,"name":"IndexAccess","src":"7597:17:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":433,"name":"Identifier","src":"7617:14:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":434,"name":"Identifier","src":"7632:14:31"}],"id":435,"name":"MemberAccess","src":"7632:21:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":436,"name":"Literal","src":"7656:1:31"}],"id":437,"name":"BinaryOperation","src":"7632:25:31"}],"id":438,"name":"IndexAccess","src":"7617:41:31"}],"id":439,"name":"Assignment","src":"7597:61:31"}],"id":440,"name":"ExpressionStatement","src":"7597:61:31"},{"id":441,"name":"Break","src":"7684:5:31"}],"id":442,"name":"Block","src":"7571:141:31"}],"id":443,"name":"IfStatement","src":"7517:195:31"}],"id":444,"name":"Block","src":"7495:235:31"}],"id":445,"name":"ForStatement","src":"7436:294:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":446,"name":"Identifier","src":"7747:14:31"}],"id":448,"name":"MemberAccess","src":"7747:21:31"}],"id":449,"name":"UnaryOperation","src":"7747:23:31"}],"id":450,"name":"ExpressionStatement","src":"7747:23:31"}],"id":451,"name":"Block","src":"7351:434:31"}],"id":452,"name":"IfStatement","src":"7304:481:31"}],"id":453,"name":"Block","src":"7256:539:31"}],"id":454,"name":"ForStatement","src":"7194:601:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":142,"type":"function (address,address[] memory)","value":"RemovedFromWhitelist"},"id":455,"name":"Identifier","src":"7844:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":456,"name":"Identifier","src":"7865:3:31"}],"id":457,"name":"MemberAccess","src":"7865:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":458,"name":"Identifier","src":"7877:24:31"}],"id":459,"name":"FunctionCall","src":"7844:58:31"}],"id":460,"name":"EmitStatement","src":"7839:63:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":461,"name":"Identifier","src":"7955:24:31"}],"id":462,"name":"UnaryOperation","src":"7948:31:31"}],"id":463,"name":"ExpressionStatement","src":"7948:31:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":464,"name":"Identifier","src":"8027:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":465,"name":"Literal","src":"8055:5:31"}],"id":466,"name":"Assignment","src":"8027:33:31"}],"id":467,"name":"ExpressionStatement","src":"8027:33:31"}],"id":468,"name":"Block","src":"6781:1286:31"}],"id":469,"name":"FunctionDefinition","src":"6709:1358:31"},{"attributes":{"documentation":"@dev Getter for pending addition array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistAddition","scope":650,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":470,"name":"ParameterList","src":"8154:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":478,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":471,"name":"ElementaryTypeName","src":"8180:7:31"}],"id":472,"name":"ArrayTypeName","src":"8180:9:31"}],"id":473,"name":"VariableDeclaration","src":"8180:16:31"}],"id":474,"name":"ParameterList","src":"8179:18:31"},{"children":[{"attributes":{"functionReturnParameters":474},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":475,"name":"Identifier","src":"8215:25:31"}],"id":476,"name":"Return","src":"8208:32:31"}],"id":477,"name":"Block","src":"8198:49:31"}],"id":478,"name":"FunctionDefinition","src":"8121:126:31"},{"attributes":{"documentation":"@dev Getter for pending removal array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistRemoval","scope":650,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":479,"name":"ParameterList","src":"8332:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":487,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":480,"name":"ElementaryTypeName","src":"8358:7:31"}],"id":481,"name":"ArrayTypeName","src":"8358:9:31"}],"id":482,"name":"VariableDeclaration","src":"8358:16:31"}],"id":483,"name":"ParameterList","src":"8357:18:31"},{"children":[{"attributes":{"functionReturnParameters":483},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":484,"name":"Identifier","src":"8393:24:31"}],"id":485,"name":"Return","src":"8386:31:31"}],"id":486,"name":"Block","src":"8376:48:31"}],"id":487,"name":"FunctionDefinition","src":"8300:124:31"},{"attributes":{"documentation":"@dev Add initial addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"setWhitelist","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":552,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":488,"name":"ElementaryTypeName","src":"8577:7:31"}],"id":489,"name":"ArrayTypeName","src":"8577:9:31"}],"id":490,"name":"VariableDeclaration","src":"8577:29:31"}],"id":491,"name":"ParameterList","src":"8576:31:31"},{"attributes":{"parameters":[null]},"children":[],"id":497,"name":"ParameterList","src":"8669:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":492,"name":"Identifier","src":"8617:15:31"}],"id":493,"name":"ModifierInvocation","src":"8617:15:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":494,"name":"Identifier","src":"8633:23:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":495,"name":"Identifier","src":"8657:10:31"}],"id":496,"name":"ModifierInvocation","src":"8633:35:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_072b1c10273a06de91a80d81d357e8bd73084529b5cc99d2ec03a7bf6d5fb2b9","typeString":"literal_string \"whitelist initialized\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":498,"name":"Identifier","src":"8743:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":168,"type":"bool","value":"isSetWhitelist"},"id":499,"name":"Identifier","src":"8752:14:31"}],"id":500,"name":"UnaryOperation","src":"8751:15:31"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c69737420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist initialized\"","value":"whitelist initialized"},"id":501,"name":"Literal","src":"8768:23:31"}],"id":502,"name":"FunctionCall","src":"8743:49:31"}],"id":503,"name":"ExpressionStatement","src":"8743:49:31"},{"children":[{"attributes":{"assignments":[505]},"children":[{"attributes":{"constant":false,"name":"i","scope":540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":504,"name":"ElementaryTypeName","src":"8871:7:31"}],"id":505,"name":"VariableDeclaration","src":"8871:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":506,"name":"Literal","src":"8883:1:31"}],"id":507,"name":"VariableDeclarationStatement","src":"8871:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":508,"name":"Identifier","src":"8886:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":509,"name":"Identifier","src":"8890:10:31"}],"id":510,"name":"MemberAccess","src":"8890:17:31"}],"id":511,"name":"BinaryOperation","src":"8886:21:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":512,"name":"Identifier","src":"8909:1:31"}],"id":513,"name":"UnaryOperation","src":"8909:3:31"}],"id":514,"name":"ExpressionStatement","src":"8909:3:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":515,"name":"Identifier","src":"8996:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":516,"name":"Identifier","src":"9009:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":517,"name":"Identifier","src":"9020:1:31"}],"id":518,"name":"IndexAccess","src":"9009:13:31"}],"id":519,"name":"IndexAccess","src":"8996:27:31"}],"id":520,"name":"UnaryOperation","src":"8995:28:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":521,"name":"Identifier","src":"9092:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":522,"name":"Identifier","src":"9105:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":523,"name":"Identifier","src":"9116:1:31"}],"id":524,"name":"IndexAccess","src":"9105:13:31"}],"id":525,"name":"IndexAccess","src":"9092:27:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":526,"name":"Literal","src":"9122:4:31"}],"id":527,"name":"Assignment","src":"9092:34:31"}],"id":528,"name":"ExpressionStatement","src":"9092:34:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":529,"name":"Identifier","src":"9191:14:31"}],"id":531,"name":"MemberAccess","src":"9191:19:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":490,"type":"address[] calldata","value":"_addresses"},"id":532,"name":"Identifier","src":"9211:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":505,"type":"uint256","value":"i"},"id":533,"name":"Identifier","src":"9222:1:31"}],"id":534,"name":"IndexAccess","src":"9211:13:31"}],"id":535,"name":"FunctionCall","src":"9191:34:31"}],"id":536,"name":"ExpressionStatement","src":"9191:34:31"}],"id":537,"name":"Block","src":"9025:215:31"}],"id":538,"name":"IfStatement","src":"8991:249:31"}],"id":539,"name":"Block","src":"8914:336:31"}],"id":540,"name":"ForStatement","src":"8866:384:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":168,"type":"bool","value":"isSetWhitelist"},"id":541,"name":"Identifier","src":"9259:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":542,"name":"Literal","src":"9276:4:31"}],"id":543,"name":"Assignment","src":"9259:21:31"}],"id":544,"name":"ExpressionStatement","src":"9259:21:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":116,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":545,"name":"Identifier","src":"9331:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":546,"name":"Identifier","src":"9348:3:31"}],"id":547,"name":"MemberAccess","src":"9348:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":156,"type":"address[] storage ref","value":"whitelistArray"},"id":548,"name":"Identifier","src":"9360:14:31"}],"id":549,"name":"FunctionCall","src":"9331:44:31"}],"id":550,"name":"EmitStatement","src":"9326:49:31"}],"id":551,"name":"Block","src":"8669:713:31"}],"id":552,"name":"FunctionDefinition","src":"8555:827:31"},{"attributes":{"documentation":"@dev Add addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistAddition","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":594,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":553,"name":"ElementaryTypeName","src":"9538:7:31"}],"id":554,"name":"ArrayTypeName","src":"9538:9:31"}],"id":555,"name":"VariableDeclaration","src":"9538:29:31"}],"id":556,"name":"ParameterList","src":"9537:31:31"},{"attributes":{"parameters":[null]},"children":[],"id":564,"name":"ParameterList","src":"9649:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":557,"name":"Identifier","src":"9578:15:31"}],"id":558,"name":"ModifierInvocation","src":"9578:15:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":222,"type":"modifier ()","value":"noActiveSubmission"},"id":559,"name":"Identifier","src":"9594:18:31"}],"id":560,"name":"ModifierInvocation","src":"9594:18:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":561,"name":"Identifier","src":"9613:23:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":562,"name":"Identifier","src":"9637:10:31"}],"id":563,"name":"ModifierInvocation","src":"9613:35:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":565,"name":"Identifier","src":"9719:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":168,"type":"bool","value":"isSetWhitelist"},"id":566,"name":"Identifier","src":"9727:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":567,"name":"Literal","src":"9743:27:31"}],"id":568,"name":"FunctionCall","src":"9719:52:31"}],"id":569,"name":"ExpressionStatement","src":"9719:52:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":570,"name":"Identifier","src":"9834:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":571,"name":"Identifier","src":"9842:10:31"}],"id":572,"name":"MemberAccess","src":"9842:17:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":573,"name":"Literal","src":"9862:1:31"}],"id":574,"name":"BinaryOperation","src":"9842:21:31"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":575,"name":"Literal","src":"9865:17:31"}],"id":576,"name":"FunctionCall","src":"9834:49:31"}],"id":577,"name":"ExpressionStatement","src":"9834:49:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":159,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":578,"name":"Identifier","src":"9966:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":579,"name":"Identifier","src":"9994:10:31"}],"id":580,"name":"Assignment","src":"9966:38:31"}],"id":581,"name":"ExpressionStatement","src":"9966:38:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"bool","value":"submittedWhitelistAddition"},"id":582,"name":"Identifier","src":"10058:26:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":583,"name":"Literal","src":"10087:4:31"}],"id":584,"name":"Assignment","src":"10058:33:31"}],"id":585,"name":"ExpressionStatement","src":"10058:33:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":129,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistAddition"},"id":586,"name":"Identifier","src":"10144:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":587,"name":"Identifier","src":"10171:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":588,"name":"Identifier","src":"10183:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"address[] calldata","value":"_addresses"},"id":589,"name":"Identifier","src":"10197:10:31"}],"id":590,"name":"FunctionCall","src":"10183:25:31"}],"id":591,"name":"FunctionCall","src":"10144:65:31"}],"id":592,"name":"EmitStatement","src":"10139:70:31"}],"id":593,"name":"Block","src":"9649:567:31"}],"id":594,"name":"FunctionDefinition","src":"9505:711:31"},{"attributes":{"documentation":"@dev Remove addresses from the whitelist.\n @param _addresses are the Ethereum addresses to be removed.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistRemoval","scope":650,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":633,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":595,"name":"ElementaryTypeName","src":"10372:7:31"}],"id":596,"name":"ArrayTypeName","src":"10372:9:31"}],"id":597,"name":"VariableDeclaration","src":"10372:29:31"}],"id":598,"name":"ParameterList","src":"10371:31:31"},{"attributes":{"parameters":[null]},"children":[],"id":603,"name":"ParameterList","src":"10447:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":599,"name":"Identifier","src":"10412:15:31"}],"id":600,"name":"ModifierInvocation","src":"10412:15:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":222,"type":"modifier ()","value":"noActiveSubmission"},"id":601,"name":"Identifier","src":"10428:18:31"}],"id":602,"name":"ModifierInvocation","src":"10428:18:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":604,"name":"Identifier","src":"10517:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":168,"type":"bool","value":"isSetWhitelist"},"id":605,"name":"Identifier","src":"10525:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":606,"name":"Literal","src":"10541:27:31"}],"id":607,"name":"FunctionCall","src":"10517:52:31"}],"id":608,"name":"ExpressionStatement","src":"10517:52:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":609,"name":"Identifier","src":"10639:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":597,"type":"address[] calldata","value":"_addresses"},"id":610,"name":"Identifier","src":"10647:10:31"}],"id":611,"name":"MemberAccess","src":"10647:17:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":612,"name":"Literal","src":"10667:1:31"}],"id":613,"name":"BinaryOperation","src":"10647:21:31"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":614,"name":"Literal","src":"10670:17:31"}],"id":615,"name":"FunctionCall","src":"10639:49:31"}],"id":616,"name":"ExpressionStatement","src":"10639:49:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":617,"name":"Identifier","src":"10766:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":597,"type":"address[] calldata","value":"_addresses"},"id":618,"name":"Identifier","src":"10793:10:31"}],"id":619,"name":"Assignment","src":"10766:37:31"}],"id":620,"name":"ExpressionStatement","src":"10766:37:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"bool","value":"submittedWhitelistRemoval"},"id":621,"name":"Identifier","src":"10857:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":622,"name":"Literal","src":"10885:4:31"}],"id":623,"name":"Assignment","src":"10857:32:31"}],"id":624,"name":"ExpressionStatement","src":"10857:32:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":149,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistRemoval"},"id":625,"name":"Identifier","src":"10942:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":597,"type":"address[] calldata","value":"_addresses"},"id":626,"name":"Identifier","src":"10968:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":627,"name":"Identifier","src":"10980:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":597,"type":"address[] calldata","value":"_addresses"},"id":628,"name":"Identifier","src":"10994:10:31"}],"id":629,"name":"FunctionCall","src":"10980:25:31"}],"id":630,"name":"FunctionCall","src":"10942:64:31"}],"id":631,"name":"EmitStatement","src":"10937:69:31"}],"id":632,"name":"Block","src":"10447:566:31"}],"id":633,"name":"FunctionDefinition","src":"10340:673:31"},{"attributes":{"documentation":"@dev Method used to hash our whitelist address arrays.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"calculateHash","scope":650,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":649,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":634,"name":"ElementaryTypeName","src":"11105:7:31"}],"id":635,"name":"ArrayTypeName","src":"11105:9:31"}],"id":636,"name":"VariableDeclaration","src":"11105:27:31"}],"id":637,"name":"ParameterList","src":"11104:29:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":649,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":638,"name":"ElementaryTypeName","src":"11155:7:31"}],"id":639,"name":"VariableDeclaration","src":"11155:7:31"}],"id":640,"name":"ParameterList","src":"11154:9:31"},{"children":[{"attributes":{"functionReturnParameters":640},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":641,"name":"Identifier","src":"11181:9:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":642,"name":"Identifier","src":"11191:3:31"}],"id":643,"name":"MemberAccess","src":"11191:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":636,"type":"address[] memory","value":"_addresses"},"id":644,"name":"Identifier","src":"11208:10:31"}],"id":645,"name":"FunctionCall","src":"11191:28:31"}],"id":646,"name":"FunctionCall","src":"11181:39:31"}],"id":647,"name":"Return","src":"11174:46:31"}],"id":648,"name":"Block","src":"11164:63:31"}],"id":649,"name":"FunctionDefinition","src":"11082:145:31"}],"id":650,"name":"ContractDefinition","src":"2361:8868:31"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title DailyLimitTrait This trait allows for daily limits to be included in other contracts.\n This contract will allow for a DailyLimit object to be instantiated and used.","fullyImplemented":true,"linearizedBaseContracts":[852],"name":"DailyLimitTrait","scope":2228},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":651,"name":"UserDefinedTypeName","src":"11447:8:31"},{"attributes":{"name":"uint256","type":"uint256"},"id":652,"name":"ElementaryTypeName","src":"11460:7:31"}],"id":653,"name":"UsingForDirective","src":"11441:27:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":654,"name":"ParameterList","src":"11501:2:31"}],"id":655,"name":"EventDefinition","src":"11474:30:31"},{"attributes":{"canonicalName":"DailyLimitTrait.DailyLimit","name":"DailyLimit","scope":852,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"value","scope":666,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":656,"name":"ElementaryTypeName","src":"11538:7:31"}],"id":657,"name":"VariableDeclaration","src":"11538:13:31"},{"attributes":{"constant":false,"name":"available","scope":666,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":658,"name":"ElementaryTypeName","src":"11561:7:31"}],"id":659,"name":"VariableDeclaration","src":"11561:17:31"},{"attributes":{"constant":false,"name":"limitTimestamp","scope":666,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":660,"name":"ElementaryTypeName","src":"11588:7:31"}],"id":661,"name":"VariableDeclaration","src":"11588:22:31"},{"attributes":{"constant":false,"name":"pending","scope":666,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":662,"name":"ElementaryTypeName","src":"11620:7:31"}],"id":663,"name":"VariableDeclaration","src":"11620:15:31"},{"attributes":{"constant":false,"name":"controllerConfirmationRequired","scope":666,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":664,"name":"ElementaryTypeName","src":"11645:4:31"}],"id":665,"name":"VariableDeclaration","src":"11645:35:31"}],"id":666,"name":"StructDefinition","src":"11510:177:31"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_confirmLimitUpdate","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":688,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":667,"name":"UserDefinedTypeName","src":"11778:10:31"}],"id":668,"name":"VariableDeclaration","src":"11778:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":688,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":669,"name":"ElementaryTypeName","src":"11803:7:31"}],"id":670,"name":"VariableDeclaration","src":"11803:15:31"}],"id":671,"name":"ParameterList","src":"11777:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":672,"name":"ParameterList","src":"11829:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51a99e4fe0e7ccb76d7b5ddb649e7516f5e27e1195b905cd87f22fbc56fc219b","typeString":"literal_string \"confirmed/submitted limit mismatch\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":673,"name":"Identifier","src":"11910:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":674,"name":"Identifier","src":"11918:4:31"}],"id":675,"name":"MemberAccess","src":"11918:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":670,"type":"uint256","value":"_amount"},"id":676,"name":"Identifier","src":"11934:7:31"}],"id":677,"name":"BinaryOperation","src":"11918:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"confirmed/submitted limit mismatch\"","value":"confirmed/submitted limit mismatch"},"id":678,"name":"Literal","src":"11943:36:31"}],"id":679,"name":"FunctionCall","src":"11910:70:31"}],"id":680,"name":"ExpressionStatement","src":"11910:70:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$666_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":681,"name":"Identifier","src":"12048:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":682,"name":"Identifier","src":"12061:4:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":683,"name":"Identifier","src":"12067:4:31"}],"id":684,"name":"MemberAccess","src":"12067:12:31"}],"id":685,"name":"FunctionCall","src":"12048:32:31"}],"id":686,"name":"ExpressionStatement","src":"12048:32:31"}],"id":687,"name":"Block","src":"11829:258:31"}],"id":688,"name":"FunctionDefinition","src":"11749:338:31"},{"attributes":{"documentation":"@dev Use up amount within the daily limit. Will fail if amount is larger than daily limit.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_enforceLimit","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":718,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":689,"name":"UserDefinedTypeName","src":"12215:10:31"}],"id":690,"name":"VariableDeclaration","src":"12215:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":718,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":691,"name":"ElementaryTypeName","src":"12240:7:31"}],"id":692,"name":"VariableDeclaration","src":"12240:15:31"}],"id":693,"name":"ParameterList","src":"12214:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":694,"name":"ParameterList","src":"12266:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$666_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":851,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":695,"name":"Identifier","src":"12328:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":696,"name":"Identifier","src":"12350:4:31"}],"id":697,"name":"FunctionCall","src":"12328:27:31"}],"id":698,"name":"ExpressionStatement","src":"12328:27:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76fdd6ba40b4885ab45b8708dbc1ff56b4ee0a701903e21ff02ec4fc90e97cfd","typeString":"literal_string \"available=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":700,"name":"Identifier","src":"12373:4:31"}],"id":701,"name":"MemberAccess","src":"12373:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"_amount"},"id":702,"name":"Identifier","src":"12391:7:31"}],"id":703,"name":"BinaryOperation","src":"12373:25:31"},{"attributes":{"argumentTypes":null,"hexvalue":"617661696c61626c653c616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"available","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":725,"name":"Identifier","src":"12751:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":661,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":720,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":726,"name":"Identifier","src":"12757:4:31"}],"id":727,"name":"MemberAccess","src":"12757:19:31"}],"id":728,"name":"MemberAccess","src":"12757:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":729,"name":"Literal","src":"12781:8:31"}],"id":730,"name":"FunctionCall","src":"12757:33:31"}],"id":731,"name":"BinaryOperation","src":"12751:39:31"},{"children":[{"attributes":{"functionReturnParameters":724},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":720,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":732,"name":"Identifier","src":"12813:4:31"}],"id":733,"name":"MemberAccess","src":"12813:10:31"}],"id":734,"name":"Return","src":"12806:17:31"}],"id":735,"name":"Block","src":"12792:42:31"},{"children":[{"attributes":{"functionReturnParameters":724},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":720,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":736,"name":"Identifier","src":"12861:4:31"}],"id":737,"name":"MemberAccess","src":"12861:14:31"}],"id":738,"name":"Return","src":"12854:21:31"}],"id":739,"name":"Block","src":"12840:46:31"}],"id":740,"name":"IfStatement","src":"12747:139:31"}],"id":741,"name":"Block","src":"12737:155:31"}],"id":742,"name":"FunctionDefinition","src":"12652:240:31"},{"attributes":{"documentation":"@dev Modify the spend limit and spend available based on the provided value.\n @dev _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_modifyLimit","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":774,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":743,"name":"UserDefinedTypeName","src":"13060:10:31"}],"id":744,"name":"VariableDeclaration","src":"13060:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":774,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":745,"name":"ElementaryTypeName","src":"13085:7:31"}],"id":746,"name":"VariableDeclaration","src":"13085:15:31"}],"id":747,"name":"ParameterList","src":"13059:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":748,"name":"ParameterList","src":"13110:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$666_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":851,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":749,"name":"Identifier","src":"13172:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":750,"name":"Identifier","src":"13194:4:31"}],"id":751,"name":"FunctionCall","src":"13172:27:31"}],"id":752,"name":"ExpressionStatement","src":"13172:27:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":753,"name":"Identifier","src":"13264:4:31"}],"id":755,"name":"MemberAccess","src":"13264:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":746,"type":"uint256","value":"_amount"},"id":756,"name":"Identifier","src":"13277:7:31"}],"id":757,"name":"Assignment","src":"13264:20:31"}],"id":758,"name":"ExpressionStatement","src":"13264:20:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":759,"name":"Identifier","src":"13376:4:31"}],"id":760,"name":"MemberAccess","src":"13376:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":761,"name":"Identifier","src":"13393:4:31"}],"id":762,"name":"MemberAccess","src":"13393:10:31"}],"id":763,"name":"BinaryOperation","src":"13376:27:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":764,"name":"Identifier","src":"13419:4:31"}],"id":766,"name":"MemberAccess","src":"13419:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":744,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":767,"name":"Identifier","src":"13436:4:31"}],"id":768,"name":"MemberAccess","src":"13436:10:31"}],"id":769,"name":"Assignment","src":"13419:27:31"}],"id":770,"name":"ExpressionStatement","src":"13419:27:31"}],"id":771,"name":"Block","src":"13405:52:31"}],"id":772,"name":"IfStatement","src":"13372:85:31"}],"id":773,"name":"Block","src":"13110:353:31"}],"id":774,"name":"FunctionDefinition","src":"13038:425:31"},{"attributes":{"documentation":"@dev Set the daily limit.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_setLimit","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":800,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":775,"name":"UserDefinedTypeName","src":"13586:10:31"}],"id":776,"name":"VariableDeclaration","src":"13586:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":777,"name":"ElementaryTypeName","src":"13611:7:31"}],"id":778,"name":"VariableDeclaration","src":"13611:15:31"}],"id":779,"name":"ParameterList","src":"13585:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":780,"name":"ParameterList","src":"13637:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5515161ef75a198a2c79d5b0927b7d4cad620073ea22f64fc9faac79dbcba501","typeString":"literal_string \"limit already set\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":781,"name":"Identifier","src":"13709:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":776,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":782,"name":"Identifier","src":"13718:4:31"}],"id":783,"name":"MemberAccess","src":"13718:35:31"}],"id":784,"name":"UnaryOperation","src":"13717:36:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d697420616c726561647920736574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit already set\"","value":"limit already set"},"id":785,"name":"Literal","src":"13755:19:31"}],"id":786,"name":"FunctionCall","src":"13709:66:31"}],"id":787,"name":"ExpressionStatement","src":"13709:66:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$666_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":774,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":788,"name":"Identifier","src":"13844:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":776,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":789,"name":"Identifier","src":"13857:4:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"uint256","value":"_amount"},"id":790,"name":"Identifier","src":"13863:7:31"}],"id":791,"name":"FunctionCall","src":"13844:27:31"}],"id":792,"name":"ExpressionStatement","src":"13844:27:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":776,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":793,"name":"Identifier","src":"13919:4:31"}],"id":795,"name":"MemberAccess","src":"13919:35:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":796,"name":"Literal","src":"13957:4:31"}],"id":797,"name":"Assignment","src":"13919:42:31"}],"id":798,"name":"ExpressionStatement","src":"13919:42:31"}],"id":799,"name":"Block","src":"13637:331:31"}],"id":800,"name":"FunctionDefinition","src":"13567:401:31"},{"attributes":{"documentation":"@dev Submit a daily limit update, needs to be confirmed.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_submitLimitUpdate","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":820,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":801,"name":"UserDefinedTypeName","src":"14131:10:31"}],"id":802,"name":"VariableDeclaration","src":"14131:23:31"},{"attributes":{"constant":false,"name":"_amount","scope":820,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":803,"name":"ElementaryTypeName","src":"14156:7:31"}],"id":804,"name":"VariableDeclaration","src":"14156:15:31"}],"id":805,"name":"ParameterList","src":"14130:42:31"},{"attributes":{"parameters":[null]},"children":[],"id":806,"name":"ParameterList","src":"14182:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d667d750d47924f17f0479d6107ac25f4e8879366a2d600f6b5ea07705c561f3","typeString":"literal_string \"limit hasn't been set yet\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":807,"name":"Identifier","src":"14246:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":802,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":808,"name":"Identifier","src":"14254:4:31"}],"id":809,"name":"MemberAccess","src":"14254:35:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d6974206861736e2774206265656e2073657420796574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit hasn't been set yet\"","value":"limit hasn't been set yet"},"id":810,"name":"Literal","src":"14291:27:31"}],"id":811,"name":"FunctionCall","src":"14246:73:31"}],"id":812,"name":"ExpressionStatement","src":"14246:73:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":802,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":813,"name":"Identifier","src":"14391:4:31"}],"id":815,"name":"MemberAccess","src":"14391:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":804,"type":"uint256","value":"_amount"},"id":816,"name":"Identifier","src":"14406:7:31"}],"id":817,"name":"Assignment","src":"14391:22:31"}],"id":818,"name":"ExpressionStatement","src":"14391:22:31"}],"id":819,"name":"Block","src":"14182:238:31"}],"id":820,"name":"FunctionDefinition","src":"14103:317:31"},{"attributes":{"documentation":"@dev Update available spend limit based on the daily reset.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateAvailableLimit","scope":852,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":851,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":821,"name":"UserDefinedTypeName","src":"14525:10:31"}],"id":822,"name":"VariableDeclaration","src":"14525:23:31"}],"id":823,"name":"ParameterList","src":"14524:25:31"},{"attributes":{"parameters":[null]},"children":[],"id":824,"name":"ParameterList","src":"14558:0:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":825,"name":"Identifier","src":"14572:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":661,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":826,"name":"Identifier","src":"14578:4:31"}],"id":827,"name":"MemberAccess","src":"14578:19:31"}],"id":828,"name":"MemberAccess","src":"14578:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":829,"name":"Literal","src":"14602:8:31"}],"id":830,"name":"FunctionCall","src":"14578:33:31"}],"id":831,"name":"BinaryOperation","src":"14572:39:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"limitTimestamp","referencedDeclaration":661,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":832,"name":"Identifier","src":"14672:4:31"}],"id":834,"name":"MemberAccess","src":"14672:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":835,"name":"Identifier","src":"14694:3:31"}],"id":836,"name":"Assignment","src":"14672:25:31"}],"id":837,"name":"ExpressionStatement","src":"14672:25:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":659,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":838,"name":"Identifier","src":"14778:4:31"}],"id":840,"name":"MemberAccess","src":"14778:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":841,"name":"Identifier","src":"14795:4:31"}],"id":842,"name":"MemberAccess","src":"14795:10:31"}],"id":843,"name":"Assignment","src":"14778:27:31"}],"id":844,"name":"ExpressionStatement","src":"14778:27:31"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":655,"type":"function ()","value":"UpdatedAvailableLimit"},"id":845,"name":"Identifier","src":"14824:21:31"}],"id":846,"name":"FunctionCall","src":"14824:23:31"}],"id":847,"name":"EmitStatement","src":"14819:28:31"}],"id":848,"name":"Block","src":"14613:245:31"}],"id":849,"name":"IfStatement","src":"14568:290:31"}],"id":850,"name":"Block","src":"14558:306:31"}],"id":851,"name":"FunctionDefinition","src":"14494:370:31"}],"id":852,"name":"ContractDefinition","src":"11411:3455:31"},{"attributes":{"contractDependencies":[80,102,2870,2915,3072],"contractKind":"contract","documentation":"@title it provides daily spend limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[984,102,80,3072,2870,2915],"name":"SpendLimit","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":80,"type":"contract ControllableOwnable"},"id":853,"name":"UserDefinedTypeName","src":"14949:19:31"}],"id":854,"name":"InheritanceSpecifier","src":"14949:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":102,"type":"contract SelfCallableOwnable"},"id":855,"name":"UserDefinedTypeName","src":"14970:19:31"}],"id":856,"name":"InheritanceSpecifier","src":"14970:19:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetSpendLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":862,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":857,"name":"ElementaryTypeName","src":"15016:7:31"}],"id":858,"name":"VariableDeclaration","src":"15016:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":862,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":859,"name":"ElementaryTypeName","src":"15033:7:31"}],"id":860,"name":"VariableDeclaration","src":"15033:15:31"}],"id":861,"name":"ParameterList","src":"15015:34:31"}],"id":862,"name":"EventDefinition","src":"14996:54:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedSpendLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":866,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":863,"name":"ElementaryTypeName","src":"15087:7:31"}],"id":864,"name":"VariableDeclaration","src":"15087:15:31"}],"id":865,"name":"ParameterList","src":"15086:17:31"}],"id":866,"name":"EventDefinition","src":"15055:49:31"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":852,"type":"library DailyLimitTrait"},"id":867,"name":"UserDefinedTypeName","src":"15116:15:31"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":868,"name":"UserDefinedTypeName","src":"15136:26:31"}],"id":869,"name":"UsingForDirective","src":"15110:53:31"},{"attributes":{"constant":false,"name":"_spendLimit","scope":984,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":870,"name":"UserDefinedTypeName","src":"15169:26:31"}],"id":871,"name":"VariableDeclaration","src":"15169:47:31"},{"attributes":{"documentation":"@dev Constructor initializes the daily spend limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":984,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_limit_","scope":888,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":872,"name":"ElementaryTypeName","src":"15302:7:31"}],"id":873,"name":"VariableDeclaration","src":"15302:15:31"}],"id":874,"name":"ParameterList","src":"15301:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":875,"name":"ParameterList","src":"15328:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":876,"name":"Identifier","src":"15338:11:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":666,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":877,"name":"Identifier","src":"15352:15:31"}],"id":878,"name":"MemberAccess","src":"15352:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":873,"type":"uint256","value":"_limit_"},"id":879,"name":"Identifier","src":"15379:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":873,"type":"uint256","value":"_limit_"},"id":880,"name":"Identifier","src":"15388:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":881,"name":"Identifier","src":"15397:3:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":882,"name":"Literal","src":"15402:1:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":883,"name":"Literal","src":"15405:5:31"}],"id":884,"name":"FunctionCall","src":"15352:59:31"}],"id":885,"name":"Assignment","src":"15338:73:31"}],"id":886,"name":"ExpressionStatement","src":"15338:73:31"}],"id":887,"name":"Block","src":"15328:90:31"}],"id":888,"name":"FunctionDefinition","src":"15290:128:31"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmSpendLimitUpdate","scope":984,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":908,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":889,"name":"ElementaryTypeName","src":"15513:7:31"}],"id":890,"name":"VariableDeclaration","src":"15513:15:31"}],"id":891,"name":"ParameterList","src":"15512:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":894,"name":"ParameterList","src":"15554:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":892,"name":"Identifier","src":"15539:14:31"}],"id":893,"name":"ModifierInvocation","src":"15539:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":688,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":895,"name":"Identifier","src":"15564:11:31"}],"id":897,"name":"MemberAccess","src":"15564:31:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":890,"type":"uint256","value":"_amount"},"id":898,"name":"Identifier","src":"15596:7:31"}],"id":899,"name":"FunctionCall","src":"15564:40:31"}],"id":900,"name":"ExpressionStatement","src":"15564:40:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":862,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":901,"name":"Identifier","src":"15619:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":902,"name":"Identifier","src":"15633:3:31"}],"id":903,"name":"MemberAccess","src":"15633:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":890,"type":"uint256","value":"_amount"},"id":904,"name":"Identifier","src":"15645:7:31"}],"id":905,"name":"FunctionCall","src":"15619:34:31"}],"id":906,"name":"EmitStatement","src":"15614:39:31"}],"id":907,"name":"Block","src":"15554:106:31"}],"id":908,"name":"FunctionDefinition","src":"15480:180:31"},{"attributes":{"documentation":"@dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setSpendLimit","scope":984,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":928,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":909,"name":"ElementaryTypeName","src":"15840:7:31"}],"id":910,"name":"VariableDeclaration","src":"15840:15:31"}],"id":911,"name":"ParameterList","src":"15839:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":914,"name":"ParameterList","src":"15882:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":912,"name":"Identifier","src":"15866:15:31"}],"id":913,"name":"ModifierInvocation","src":"15866:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":800,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":915,"name":"Identifier","src":"15892:11:31"}],"id":917,"name":"MemberAccess","src":"15892:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":910,"type":"uint256","value":"_amount"},"id":918,"name":"Identifier","src":"15914:7:31"}],"id":919,"name":"FunctionCall","src":"15892:30:31"}],"id":920,"name":"ExpressionStatement","src":"15892:30:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":862,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":921,"name":"Identifier","src":"15937:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":922,"name":"Identifier","src":"15951:3:31"}],"id":923,"name":"MemberAccess","src":"15951:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":910,"type":"uint256","value":"_amount"},"id":924,"name":"Identifier","src":"15963:7:31"}],"id":925,"name":"FunctionCall","src":"15937:34:31"}],"id":926,"name":"EmitStatement","src":"15932:39:31"}],"id":927,"name":"Block","src":"15882:96:31"}],"id":928,"name":"FunctionDefinition","src":"15817:161:31"},{"attributes":{"documentation":"@dev View your available limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitAvailable","scope":984,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":929,"name":"ParameterList","src":"16051:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":930,"name":"ElementaryTypeName","src":"16077:7:31"}],"id":931,"name":"VariableDeclaration","src":"16077:7:31"}],"id":932,"name":"ParameterList","src":"16076:9:31"},{"children":[{"attributes":{"functionReturnParameters":932},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":742,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":933,"name":"Identifier","src":"16103:11:31"}],"id":934,"name":"MemberAccess","src":"16103:30:31"}],"id":935,"name":"FunctionCall","src":"16103:32:31"}],"id":936,"name":"Return","src":"16096:39:31"}],"id":937,"name":"Block","src":"16086:56:31"}],"id":938,"name":"FunctionDefinition","src":"16023:119:31"},{"attributes":{"documentation":"@dev Is there an active spend limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitPending","scope":984,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":939,"name":"ParameterList","src":"16225:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":940,"name":"ElementaryTypeName","src":"16251:7:31"}],"id":941,"name":"VariableDeclaration","src":"16251:7:31"}],"id":942,"name":"ParameterList","src":"16250:9:31"},{"children":[{"attributes":{"functionReturnParameters":942},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":943,"name":"Identifier","src":"16277:11:31"}],"id":944,"name":"MemberAccess","src":"16277:19:31"}],"id":945,"name":"Return","src":"16270:26:31"}],"id":946,"name":"Block","src":"16260:43:31"}],"id":947,"name":"FunctionDefinition","src":"16199:104:31"},{"attributes":{"documentation":"@dev Has the spend limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitControllerConfirmationRequired","scope":984,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":948,"name":"ParameterList","src":"16408:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":956,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":949,"name":"ElementaryTypeName","src":"16434:4:31"}],"id":950,"name":"VariableDeclaration","src":"16434:4:31"}],"id":951,"name":"ParameterList","src":"16433:6:31"},{"children":[{"attributes":{"functionReturnParameters":951},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":952,"name":"Identifier","src":"16457:11:31"}],"id":953,"name":"MemberAccess","src":"16457:42:31"}],"id":954,"name":"Return","src":"16450:49:31"}],"id":955,"name":"Block","src":"16440:66:31"}],"id":956,"name":"FunctionDefinition","src":"16359:147:31"},{"attributes":{"documentation":"@dev View how much has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitValue","scope":984,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":957,"name":"ParameterList","src":"16586:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":958,"name":"ElementaryTypeName","src":"16612:7:31"}],"id":959,"name":"VariableDeclaration","src":"16612:7:31"}],"id":960,"name":"ParameterList","src":"16611:9:31"},{"children":[{"attributes":{"functionReturnParameters":960},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":961,"name":"Identifier","src":"16638:11:31"}],"id":962,"name":"MemberAccess","src":"16638:17:31"}],"id":963,"name":"Return","src":"16631:24:31"}],"id":964,"name":"Block","src":"16621:41:31"}],"id":965,"name":"FunctionDefinition","src":"16562:100:31"},{"attributes":{"documentation":"@dev Submit a daily transfer limit update for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitSpendLimitUpdate","scope":984,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":983,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":966,"name":"ElementaryTypeName","src":"16838:7:31"}],"id":967,"name":"VariableDeclaration","src":"16838:15:31"}],"id":968,"name":"ParameterList","src":"16837:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":971,"name":"ParameterList","src":"16880:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":969,"name":"Identifier","src":"16864:15:31"}],"id":970,"name":"ModifierInvocation","src":"16864:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":820,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":972,"name":"Identifier","src":"16890:11:31"}],"id":974,"name":"MemberAccess","src":"16890:30:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":967,"type":"uint256","value":"_amount"},"id":975,"name":"Identifier","src":"16921:7:31"}],"id":976,"name":"FunctionCall","src":"16890:39:31"}],"id":977,"name":"ExpressionStatement","src":"16890:39:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":866,"type":"function (uint256)","value":"SubmittedSpendLimitUpdate"},"id":978,"name":"Identifier","src":"16944:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":967,"type":"uint256","value":"_amount"},"id":979,"name":"Identifier","src":"16970:7:31"}],"id":980,"name":"FunctionCall","src":"16944:34:31"}],"id":981,"name":"EmitStatement","src":"16939:39:31"}],"id":982,"name":"Block","src":"16880:105:31"}],"id":983,"name":"FunctionDefinition","src":"16806:179:31"}],"id":984,"name":"ContractDefinition","src":"14926:2061:31"},{"attributes":{"contractDependencies":[80,102,2870,2915,3072],"contractKind":"contract","documentation":"@title GasTopUpLimit provides daily limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1142,102,80,3072,2870,2915],"name":"GasTopUpLimit","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":80,"type":"contract ControllableOwnable"},"id":985,"name":"UserDefinedTypeName","src":"17077:19:31"}],"id":986,"name":"InheritanceSpecifier","src":"17077:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":102,"type":"contract SelfCallableOwnable"},"id":987,"name":"UserDefinedTypeName","src":"17098:19:31"}],"id":988,"name":"InheritanceSpecifier","src":"17098:19:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetGasTopUpLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":994,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":989,"name":"ElementaryTypeName","src":"17147:7:31"}],"id":990,"name":"VariableDeclaration","src":"17147:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":994,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":991,"name":"ElementaryTypeName","src":"17164:7:31"}],"id":992,"name":"VariableDeclaration","src":"17164:15:31"}],"id":993,"name":"ParameterList","src":"17146:34:31"}],"id":994,"name":"EventDefinition","src":"17124:57:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedGasTopUpLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":998,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":995,"name":"ElementaryTypeName","src":"17221:7:31"}],"id":996,"name":"VariableDeclaration","src":"17221:15:31"}],"id":997,"name":"ParameterList","src":"17220:17:31"}],"id":998,"name":"EventDefinition","src":"17186:52:31"},{"attributes":{"constant":true,"name":"_MAXIMUM_GAS_TOPUP_LIMIT","scope":1142,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":999,"name":"ElementaryTypeName","src":"17244:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"353030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 500000000000000000","value":"500"},"id":1000,"name":"Literal","src":"17296:10:31"}],"id":1001,"name":"VariableDeclaration","src":"17244:62:31"},{"attributes":{"constant":true,"name":"_MINIMUM_GAS_TOPUP_LIMIT","scope":1142,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1002,"name":"ElementaryTypeName","src":"17312:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 1000000000000000","value":"1"},"id":1003,"name":"Literal","src":"17364:8:31"}],"id":1004,"name":"VariableDeclaration","src":"17312:60:31"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":852,"type":"library DailyLimitTrait"},"id":1005,"name":"UserDefinedTypeName","src":"17385:15:31"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":1006,"name":"UserDefinedTypeName","src":"17405:26:31"}],"id":1007,"name":"UsingForDirective","src":"17379:53:31"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":1142,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":1008,"name":"UserDefinedTypeName","src":"17438:26:31"}],"id":1009,"name":"VariableDeclaration","src":"17438:50:31"},{"attributes":{"documentation":"@dev Constructor initializes the daily gas topup limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1142,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1010,"name":"ParameterList","src":"17577:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":1011,"name":"ParameterList","src":"17589:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1012,"name":"Identifier","src":"17599:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":666,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1013,"name":"Identifier","src":"17616:15:31"}],"id":1014,"name":"MemberAccess","src":"17616:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1001,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1015,"name":"Identifier","src":"17643:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1001,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1016,"name":"Identifier","src":"17669:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":1017,"name":"Identifier","src":"17695:3:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1018,"name":"Literal","src":"17700:1:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1019,"name":"Literal","src":"17703:5:31"}],"id":1020,"name":"FunctionCall","src":"17616:93:31"}],"id":1021,"name":"Assignment","src":"17599:110:31"}],"id":1022,"name":"ExpressionStatement","src":"17599:110:31"}],"id":1023,"name":"Block","src":"17589:127:31"}],"id":1024,"name":"FunctionDefinition","src":"17566:150:31"},{"attributes":{"documentation":"@dev Confirm pending set top up gas limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmGasTopUpLimitUpdate","scope":1142,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1044,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1025,"name":"ElementaryTypeName","src":"17819:7:31"}],"id":1026,"name":"VariableDeclaration","src":"17819:15:31"}],"id":1027,"name":"ParameterList","src":"17818:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1030,"name":"ParameterList","src":"17860:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":1028,"name":"Identifier","src":"17845:14:31"}],"id":1029,"name":"ModifierInvocation","src":"17845:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":688,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1031,"name":"Identifier","src":"17870:14:31"}],"id":1033,"name":"MemberAccess","src":"17870:34:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"uint256","value":"_amount"},"id":1034,"name":"Identifier","src":"17905:7:31"}],"id":1035,"name":"FunctionCall","src":"17870:43:31"}],"id":1036,"name":"ExpressionStatement","src":"17870:43:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":994,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1037,"name":"Identifier","src":"17928:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1038,"name":"Identifier","src":"17945:3:31"}],"id":1039,"name":"MemberAccess","src":"17945:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"uint256","value":"_amount"},"id":1040,"name":"Identifier","src":"17957:7:31"}],"id":1041,"name":"FunctionCall","src":"17928:37:31"}],"id":1042,"name":"EmitStatement","src":"17923:42:31"}],"id":1043,"name":"Block","src":"17860:112:31"}],"id":1044,"name":"FunctionDefinition","src":"17783:189:31"},{"attributes":{"documentation":"@dev View your available gas top-up limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitAvailable","scope":1142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1045,"name":"ParameterList","src":"18059:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1054,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1046,"name":"ElementaryTypeName","src":"18085:7:31"}],"id":1047,"name":"VariableDeclaration","src":"18085:7:31"}],"id":1048,"name":"ParameterList","src":"18084:9:31"},{"children":[{"attributes":{"functionReturnParameters":1048},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":742,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1049,"name":"Identifier","src":"18111:14:31"}],"id":1050,"name":"MemberAccess","src":"18111:33:31"}],"id":1051,"name":"FunctionCall","src":"18111:35:31"}],"id":1052,"name":"Return","src":"18104:42:31"}],"id":1053,"name":"Block","src":"18094:59:31"}],"id":1054,"name":"FunctionDefinition","src":"18028:125:31"},{"attributes":{"documentation":"@dev Is there an active gas top-up limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitPending","scope":1142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1055,"name":"ParameterList","src":"18244:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1063,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1056,"name":"ElementaryTypeName","src":"18270:7:31"}],"id":1057,"name":"VariableDeclaration","src":"18270:7:31"}],"id":1058,"name":"ParameterList","src":"18269:9:31"},{"children":[{"attributes":{"functionReturnParameters":1058},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1059,"name":"Identifier","src":"18296:14:31"}],"id":1060,"name":"MemberAccess","src":"18296:22:31"}],"id":1061,"name":"Return","src":"18289:29:31"}],"id":1062,"name":"Block","src":"18279:46:31"}],"id":1063,"name":"FunctionDefinition","src":"18215:110:31"},{"attributes":{"documentation":"@dev Has the gas top-up limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitControllerConfirmationRequired","scope":1142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1064,"name":"ParameterList","src":"18438:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1072,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1065,"name":"ElementaryTypeName","src":"18464:4:31"}],"id":1066,"name":"VariableDeclaration","src":"18464:4:31"}],"id":1067,"name":"ParameterList","src":"18463:6:31"},{"children":[{"attributes":{"functionReturnParameters":1067},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1068,"name":"Identifier","src":"18487:14:31"}],"id":1069,"name":"MemberAccess","src":"18487:45:31"}],"id":1070,"name":"Return","src":"18480:52:31"}],"id":1071,"name":"Block","src":"18470:69:31"}],"id":1072,"name":"FunctionDefinition","src":"18386:153:31"},{"attributes":{"documentation":"@dev View how much gas top-up has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitValue","scope":1142,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1073,"name":"ParameterList","src":"18633:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1081,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1074,"name":"ElementaryTypeName","src":"18659:7:31"}],"id":1075,"name":"VariableDeclaration","src":"18659:7:31"}],"id":1076,"name":"ParameterList","src":"18658:9:31"},{"children":[{"attributes":{"functionReturnParameters":1076},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1077,"name":"Identifier","src":"18685:14:31"}],"id":1078,"name":"MemberAccess","src":"18685:20:31"}],"id":1079,"name":"Return","src":"18678:27:31"}],"id":1080,"name":"Block","src":"18668:44:31"}],"id":1081,"name":"FunctionDefinition","src":"18606:106:31"},{"attributes":{"documentation":"@dev Sets the daily gas top up limit.\n @param _amount is the gas top up amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setGasTopUpLimit","scope":1142,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1082,"name":"ElementaryTypeName","src":"18846:7:31"}],"id":1083,"name":"VariableDeclaration","src":"18846:15:31"}],"id":1084,"name":"ParameterList","src":"18845:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1087,"name":"ParameterList","src":"18888:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1085,"name":"Identifier","src":"18872:15:31"}],"id":1086,"name":"ModifierInvocation","src":"18872:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1088,"name":"Identifier","src":"18898:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1004,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1089,"name":"Identifier","src":"18906:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1083,"type":"uint256","value":"_amount"},"id":1090,"name":"Identifier","src":"18934:7:31"}],"id":1091,"name":"BinaryOperation","src":"18906:35:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1083,"type":"uint256","value":"_amount"},"id":1092,"name":"Identifier","src":"18945:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1001,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1093,"name":"Identifier","src":"18956:24:31"}],"id":1094,"name":"BinaryOperation","src":"18945:35:31"}],"id":1095,"name":"BinaryOperation","src":"18906:74:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1096,"name":"Literal","src":"18982:21:31"}],"id":1097,"name":"FunctionCall","src":"18898:106:31"}],"id":1098,"name":"ExpressionStatement","src":"18898:106:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":800,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1099,"name":"Identifier","src":"19014:14:31"}],"id":1101,"name":"MemberAccess","src":"19014:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1083,"type":"uint256","value":"_amount"},"id":1102,"name":"Identifier","src":"19039:7:31"}],"id":1103,"name":"FunctionCall","src":"19014:33:31"}],"id":1104,"name":"ExpressionStatement","src":"19014:33:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":994,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1105,"name":"Identifier","src":"19062:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1106,"name":"Identifier","src":"19079:3:31"}],"id":1107,"name":"MemberAccess","src":"19079:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1083,"type":"uint256","value":"_amount"},"id":1108,"name":"Identifier","src":"19091:7:31"}],"id":1109,"name":"FunctionCall","src":"19062:37:31"}],"id":1110,"name":"EmitStatement","src":"19057:42:31"}],"id":1111,"name":"Block","src":"18888:218:31"}],"id":1112,"name":"FunctionDefinition","src":"18820:286:31"},{"attributes":{"documentation":"@dev Submit a daily gas top up limit update.\n @param _amount is the daily top up gas limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitGasTopUpLimitUpdate","scope":1142,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1141,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1113,"name":"ElementaryTypeName","src":"19268:7:31"}],"id":1114,"name":"VariableDeclaration","src":"19268:15:31"}],"id":1115,"name":"ParameterList","src":"19267:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1118,"name":"ParameterList","src":"19310:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1116,"name":"Identifier","src":"19294:15:31"}],"id":1117,"name":"ModifierInvocation","src":"19294:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1119,"name":"Identifier","src":"19320:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1004,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1120,"name":"Identifier","src":"19328:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"uint256","value":"_amount"},"id":1121,"name":"Identifier","src":"19356:7:31"}],"id":1122,"name":"BinaryOperation","src":"19328:35:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"uint256","value":"_amount"},"id":1123,"name":"Identifier","src":"19367:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1001,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1124,"name":"Identifier","src":"19378:24:31"}],"id":1125,"name":"BinaryOperation","src":"19367:35:31"}],"id":1126,"name":"BinaryOperation","src":"19328:74:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1127,"name":"Literal","src":"19404:21:31"}],"id":1128,"name":"FunctionCall","src":"19320:106:31"}],"id":1129,"name":"ExpressionStatement","src":"19320:106:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":820,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1130,"name":"Identifier","src":"19436:14:31"}],"id":1132,"name":"MemberAccess","src":"19436:33:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"uint256","value":"_amount"},"id":1133,"name":"Identifier","src":"19470:7:31"}],"id":1134,"name":"FunctionCall","src":"19436:42:31"}],"id":1135,"name":"ExpressionStatement","src":"19436:42:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":998,"type":"function (uint256)","value":"SubmittedGasTopUpLimitUpdate"},"id":1136,"name":"Identifier","src":"19493:28:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"uint256","value":"_amount"},"id":1137,"name":"Identifier","src":"19522:7:31"}],"id":1138,"name":"FunctionCall","src":"19493:37:31"}],"id":1139,"name":"EmitStatement","src":"19488:42:31"}],"id":1140,"name":"Block","src":"19310:227:31"}],"id":1141,"name":"FunctionDefinition","src":"19233:304:31"}],"id":1142,"name":"ContractDefinition","src":"17051:2488:31"},{"attributes":{"contractDependencies":[80,102,2870,2915,3072,3289],"contractKind":"contract","documentation":"@title LoadLimit provides daily load limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1316,3289,102,80,3072,2870,2915],"name":"LoadLimit","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":80,"type":"contract ControllableOwnable"},"id":1143,"name":"UserDefinedTypeName","src":"19626:19:31"}],"id":1144,"name":"InheritanceSpecifier","src":"19626:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":102,"type":"contract SelfCallableOwnable"},"id":1145,"name":"UserDefinedTypeName","src":"19647:19:31"}],"id":1146,"name":"InheritanceSpecifier","src":"19647:19:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":3289,"type":"contract TokenWhitelistable"},"id":1147,"name":"UserDefinedTypeName","src":"19668:18:31"}],"id":1148,"name":"InheritanceSpecifier","src":"19668:18:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetLoadLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1154,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1149,"name":"ElementaryTypeName","src":"19712:7:31"}],"id":1150,"name":"VariableDeclaration","src":"19712:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1154,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1151,"name":"ElementaryTypeName","src":"19729:7:31"}],"id":1152,"name":"VariableDeclaration","src":"19729:15:31"}],"id":1153,"name":"ParameterList","src":"19711:34:31"}],"id":1154,"name":"EventDefinition","src":"19693:53:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedLoadLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1158,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1155,"name":"ElementaryTypeName","src":"19782:7:31"}],"id":1156,"name":"VariableDeclaration","src":"19782:15:31"}],"id":1157,"name":"ParameterList","src":"19781:17:31"}],"id":1158,"name":"EventDefinition","src":"19751:48:31"},{"attributes":{"constant":true,"name":"_MAXIMUM_STABLECOIN_LOAD_LIMIT","scope":1316,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1159,"name":"ElementaryTypeName","src":"19805:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000","value":"10000"},"id":1160,"name":"Literal","src":"19863:5:31"}],"id":1161,"name":"VariableDeclaration","src":"19805:63:31"},{"attributes":{"constant":false,"name":"_maximumLoadLimit","scope":1316,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1162,"name":"ElementaryTypeName","src":"19881:7:31"}],"id":1163,"name":"VariableDeclaration","src":"19881:33:31"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":852,"type":"library DailyLimitTrait"},"id":1164,"name":"UserDefinedTypeName","src":"19927:15:31"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":1165,"name":"UserDefinedTypeName","src":"19947:26:31"}],"id":1166,"name":"UsingForDirective","src":"19921:53:31"},{"attributes":{"constant":false,"name":"_loadLimit","scope":1316,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":666,"type":"struct DailyLimitTrait.DailyLimit"},"id":1167,"name":"UserDefinedTypeName","src":"19980:26:31"}],"id":1168,"name":"VariableDeclaration","src":"19980:46:31"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1316,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1206,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1169,"name":"ElementaryTypeName","src":"20045:7:31"}],"id":1170,"name":"VariableDeclaration","src":"20045:28:31"}],"id":1171,"name":"ParameterList","src":"20044:30:31"},{"attributes":{"parameters":[null]},"children":[],"id":1175,"name":"ParameterList","src":"20125:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3289,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":1172,"name":"Identifier","src":"20084:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1170,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1173,"name":"Identifier","src":"20103:20:31"}],"id":1174,"name":"ModifierInvocation","src":"20084:40:31"},{"children":[{"attributes":{"assignments":[null,1177,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1205,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1176,"name":"ElementaryTypeName","src":"20138:7:31"}],"id":1177,"name":"VariableDeclaration","src":"20138:27:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3153,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1178,"name":"Identifier","src":"20179:18:31"}],"id":1179,"name":"FunctionCall","src":"20179:20:31"}],"id":1180,"name":"VariableDeclarationStatement","src":"20135:64:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e91ed084014006e202586b158c3035ec40db0f637c146d3fdad49cda6c7a17a","typeString":"literal_string \"no stablecoin\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1181,"name":"Identifier","src":"20209:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1177,"type":"uint256","value":"stablecoinMagnitude"},"id":1182,"name":"Identifier","src":"20217:19:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1183,"name":"Literal","src":"20239:1:31"}],"id":1184,"name":"BinaryOperation","src":"20217:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20737461626c65636f696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no stablecoin\"","value":"no stablecoin"},"id":1185,"name":"Literal","src":"20242:15:31"}],"id":1186,"name":"FunctionCall","src":"20209:49:31"}],"id":1187,"name":"ExpressionStatement","src":"20209:49:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1188,"name":"Identifier","src":"20268:17:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1161,"type":"uint256","value":"_MAXIMUM_STABLECOIN_LOAD_LIMIT"},"id":1189,"name":"Identifier","src":"20288:30:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1177,"type":"uint256","value":"stablecoinMagnitude"},"id":1190,"name":"Identifier","src":"20321:19:31"}],"id":1191,"name":"BinaryOperation","src":"20288:52:31"}],"id":1192,"name":"Assignment","src":"20268:72:31"}],"id":1193,"name":"ExpressionStatement","src":"20268:72:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1194,"name":"Identifier","src":"20350:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":666,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":852,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1195,"name":"Identifier","src":"20363:15:31"}],"id":1196,"name":"MemberAccess","src":"20363:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1197,"name":"Identifier","src":"20390:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1198,"name":"Identifier","src":"20409:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10155,"type":"uint256","value":"now"},"id":1199,"name":"Identifier","src":"20428:3:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1200,"name":"Literal","src":"20433:1:31"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1201,"name":"Literal","src":"20436:5:31"}],"id":1202,"name":"FunctionCall","src":"20363:79:31"}],"id":1203,"name":"Assignment","src":"20350:92:31"}],"id":1204,"name":"ExpressionStatement","src":"20350:92:31"}],"id":1205,"name":"Block","src":"20125:324:31"}],"id":1206,"name":"FunctionDefinition","src":"20033:416:31"},{"attributes":{"documentation":"@dev Sets a daily card load limit.\n @param _amount is the card load amount in current stablecoin base units.","implemented":true,"isConstructor":false,"kind":"function","name":"setLoadLimit","scope":1316,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1233,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1207,"name":"ElementaryTypeName","src":"20601:7:31"}],"id":1208,"name":"VariableDeclaration","src":"20601:15:31"}],"id":1209,"name":"ParameterList","src":"20600:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1212,"name":"ParameterList","src":"20643:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1210,"name":"Identifier","src":"20627:15:31"}],"id":1211,"name":"ModifierInvocation","src":"20627:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1213,"name":"Identifier","src":"20653:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1208,"type":"uint256","value":"_amount"},"id":1214,"name":"Identifier","src":"20661:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1215,"name":"Identifier","src":"20672:17:31"}],"id":1216,"name":"BinaryOperation","src":"20661:28:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1217,"name":"Literal","src":"20691:26:31"}],"id":1218,"name":"FunctionCall","src":"20653:65:31"}],"id":1219,"name":"ExpressionStatement","src":"20653:65:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":800,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1220,"name":"Identifier","src":"20728:10:31"}],"id":1222,"name":"MemberAccess","src":"20728:20:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1208,"type":"uint256","value":"_amount"},"id":1223,"name":"Identifier","src":"20749:7:31"}],"id":1224,"name":"FunctionCall","src":"20728:29:31"}],"id":1225,"name":"ExpressionStatement","src":"20728:29:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1154,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1226,"name":"Identifier","src":"20772:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1227,"name":"Identifier","src":"20785:3:31"}],"id":1228,"name":"MemberAccess","src":"20785:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1208,"type":"uint256","value":"_amount"},"id":1229,"name":"Identifier","src":"20797:7:31"}],"id":1230,"name":"FunctionCall","src":"20772:33:31"}],"id":1231,"name":"EmitStatement","src":"20767:38:31"}],"id":1232,"name":"Block","src":"20643:169:31"}],"id":1233,"name":"FunctionDefinition","src":"20579:233:31"},{"attributes":{"documentation":"@dev Submit a daily load limit update.\n @param _amount is the daily load limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitLoadLimitUpdate","scope":1316,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1258,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1234,"name":"ElementaryTypeName","src":"20958:7:31"}],"id":1235,"name":"VariableDeclaration","src":"20958:15:31"}],"id":1236,"name":"ParameterList","src":"20957:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1239,"name":"ParameterList","src":"21000:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1237,"name":"Identifier","src":"20984:15:31"}],"id":1238,"name":"ModifierInvocation","src":"20984:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1240,"name":"Identifier","src":"21010:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1235,"type":"uint256","value":"_amount"},"id":1241,"name":"Identifier","src":"21018:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1163,"type":"uint256","value":"_maximumLoadLimit"},"id":1242,"name":"Identifier","src":"21029:17:31"}],"id":1243,"name":"BinaryOperation","src":"21018:28:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1244,"name":"Literal","src":"21048:26:31"}],"id":1245,"name":"FunctionCall","src":"21010:65:31"}],"id":1246,"name":"ExpressionStatement","src":"21010:65:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":820,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1247,"name":"Identifier","src":"21085:10:31"}],"id":1249,"name":"MemberAccess","src":"21085:29:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1235,"type":"uint256","value":"_amount"},"id":1250,"name":"Identifier","src":"21115:7:31"}],"id":1251,"name":"FunctionCall","src":"21085:38:31"}],"id":1252,"name":"ExpressionStatement","src":"21085:38:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1158,"type":"function (uint256)","value":"SubmittedLoadLimitUpdate"},"id":1253,"name":"Identifier","src":"21138:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1235,"type":"uint256","value":"_amount"},"id":1254,"name":"Identifier","src":"21163:7:31"}],"id":1255,"name":"FunctionCall","src":"21138:33:31"}],"id":1256,"name":"EmitStatement","src":"21133:38:31"}],"id":1257,"name":"Block","src":"21000:178:31"}],"id":1258,"name":"FunctionDefinition","src":"20927:251:31"},{"attributes":{"documentation":"@dev Confirm pending set load limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmLoadLimitUpdate","scope":1316,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1278,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1259,"name":"ElementaryTypeName","src":"21271:7:31"}],"id":1260,"name":"VariableDeclaration","src":"21271:15:31"}],"id":1261,"name":"ParameterList","src":"21270:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1264,"name":"ParameterList","src":"21312:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":1262,"name":"Identifier","src":"21297:14:31"}],"id":1263,"name":"ModifierInvocation","src":"21297:14:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":688,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1265,"name":"Identifier","src":"21322:10:31"}],"id":1267,"name":"MemberAccess","src":"21322:30:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1260,"type":"uint256","value":"_amount"},"id":1268,"name":"Identifier","src":"21353:7:31"}],"id":1269,"name":"FunctionCall","src":"21322:39:31"}],"id":1270,"name":"ExpressionStatement","src":"21322:39:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1154,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1271,"name":"Identifier","src":"21376:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1272,"name":"Identifier","src":"21389:3:31"}],"id":1273,"name":"MemberAccess","src":"21389:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1260,"type":"uint256","value":"_amount"},"id":1274,"name":"Identifier","src":"21401:7:31"}],"id":1275,"name":"FunctionCall","src":"21376:33:31"}],"id":1276,"name":"EmitStatement","src":"21371:38:31"}],"id":1277,"name":"Block","src":"21312:104:31"}],"id":1278,"name":"FunctionDefinition","src":"21239:177:31"},{"attributes":{"documentation":"@dev View your available load limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitAvailable","scope":1316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1279,"name":"ParameterList","src":"21493:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1288,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1280,"name":"ElementaryTypeName","src":"21519:7:31"}],"id":1281,"name":"VariableDeclaration","src":"21519:7:31"}],"id":1282,"name":"ParameterList","src":"21518:9:31"},{"children":[{"attributes":{"functionReturnParameters":1282},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":742,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1283,"name":"Identifier","src":"21545:10:31"}],"id":1284,"name":"MemberAccess","src":"21545:29:31"}],"id":1285,"name":"FunctionCall","src":"21545:31:31"}],"id":1286,"name":"Return","src":"21538:38:31"}],"id":1287,"name":"Block","src":"21528:55:31"}],"id":1288,"name":"FunctionDefinition","src":"21466:117:31"},{"attributes":{"documentation":"@dev Is there an active load limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitPending","scope":1316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1289,"name":"ParameterList","src":"21664:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1297,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1290,"name":"ElementaryTypeName","src":"21690:7:31"}],"id":1291,"name":"VariableDeclaration","src":"21690:7:31"}],"id":1292,"name":"ParameterList","src":"21689:9:31"},{"children":[{"attributes":{"functionReturnParameters":1292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":663,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1293,"name":"Identifier","src":"21716:10:31"}],"id":1294,"name":"MemberAccess","src":"21716:18:31"}],"id":1295,"name":"Return","src":"21709:25:31"}],"id":1296,"name":"Block","src":"21699:42:31"}],"id":1297,"name":"FunctionDefinition","src":"21639:102:31"},{"attributes":{"documentation":"@dev Has the load limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitControllerConfirmationRequired","scope":1316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1298,"name":"ParameterList","src":"21844:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1306,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1299,"name":"ElementaryTypeName","src":"21870:4:31"}],"id":1300,"name":"VariableDeclaration","src":"21870:4:31"}],"id":1301,"name":"ParameterList","src":"21869:6:31"},{"children":[{"attributes":{"functionReturnParameters":1301},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":665,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1302,"name":"Identifier","src":"21893:10:31"}],"id":1303,"name":"MemberAccess","src":"21893:41:31"}],"id":1304,"name":"Return","src":"21886:48:31"}],"id":1305,"name":"Block","src":"21876:65:31"}],"id":1306,"name":"FunctionDefinition","src":"21796:145:31"},{"attributes":{"documentation":"@dev View how much laod limit has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitValue","scope":1316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1307,"name":"ParameterList","src":"22031:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1315,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1308,"name":"ElementaryTypeName","src":"22057:7:31"}],"id":1309,"name":"VariableDeclaration","src":"22057:7:31"}],"id":1310,"name":"ParameterList","src":"22056:9:31"},{"children":[{"attributes":{"functionReturnParameters":1310},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":657,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1311,"name":"Identifier","src":"22083:10:31"}],"id":1312,"name":"MemberAccess","src":"22083:16:31"}],"id":1313,"name":"Return","src":"22076:23:31"}],"id":1314,"name":"Block","src":"22066:40:31"}],"id":1315,"name":"FunctionDefinition","src":"22008:98:31"}],"id":1316,"name":"ContractDefinition","src":"19604:2504:31"},{"attributes":{"contractDependencies":[80,102,650,984,1142,1316,2337,2774,2870,2915,3072,3289,3329],"contractKind":"contract","documentation":"@title Asset wallet with extra security features, gas top up management and card integration.","fullyImplemented":true,"linearizedBaseContracts":[2227,2774,3329,2337,984,650,1316,3289,1142,102,80,3072,2870,2915],"name":"Wallet","scope":2228},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2915,"type":"contract ENSResolvable"},"id":1317,"name":"UserDefinedTypeName","src":"22228:13:31"}],"id":1318,"name":"InheritanceSpecifier","src":"22228:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"GasTopUpLimit","referencedDeclaration":1142,"type":"contract GasTopUpLimit"},"id":1319,"name":"UserDefinedTypeName","src":"22243:13:31"}],"id":1320,"name":"InheritanceSpecifier","src":"22243:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"LoadLimit","referencedDeclaration":1316,"type":"contract LoadLimit"},"id":1321,"name":"UserDefinedTypeName","src":"22258:9:31"}],"id":1322,"name":"InheritanceSpecifier","src":"22258:9:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddressWhitelist","referencedDeclaration":650,"type":"contract AddressWhitelist"},"id":1323,"name":"UserDefinedTypeName","src":"22269:16:31"}],"id":1324,"name":"InheritanceSpecifier","src":"22269:16:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SpendLimit","referencedDeclaration":984,"type":"contract SpendLimit"},"id":1325,"name":"UserDefinedTypeName","src":"22287:10:31"}],"id":1326,"name":"InheritanceSpecifier","src":"22287:10:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ERC165","referencedDeclaration":2337,"type":"contract ERC165"},"id":1327,"name":"UserDefinedTypeName","src":"22299:6:31"}],"id":1328,"name":"InheritanceSpecifier","src":"22299:6:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3329,"type":"contract Transferrable"},"id":1329,"name":"UserDefinedTypeName","src":"22307:13:31"}],"id":1330,"name":"InheritanceSpecifier","src":"22307:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":2774,"type":"contract Balanceable"},"id":1331,"name":"UserDefinedTypeName","src":"22322:11:31"}],"id":1332,"name":"InheritanceSpecifier","src":"22322:11:31"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":2246,"type":"library Address"},"id":1333,"name":"UserDefinedTypeName","src":"22346:7:31"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1334,"name":"ElementaryTypeName","src":"22358:7:31"}],"id":1335,"name":"UsingForDirective","src":"22340:26:31"},{"children":[{"attributes":{"contractScope":null,"name":"ECDSA","referencedDeclaration":2327,"type":"library ECDSA"},"id":1336,"name":"UserDefinedTypeName","src":"22377:5:31"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":1337,"name":"ElementaryTypeName","src":"22387:7:31"}],"id":1338,"name":"UsingForDirective","src":"22371:24:31"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2609,"type":"library SafeERC20"},"id":1339,"name":"UserDefinedTypeName","src":"22406:9:31"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2390,"type":"contract ERC20"},"id":1340,"name":"UserDefinedTypeName","src":"22420:5:31"}],"id":1341,"name":"UsingForDirective","src":"22400:26:31"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2742,"type":"library SafeMath"},"id":1342,"name":"UserDefinedTypeName","src":"22437:8:31"},{"attributes":{"name":"uint256","type":"uint256"},"id":1343,"name":"ElementaryTypeName","src":"22450:7:31"}],"id":1344,"name":"UsingForDirective","src":"22431:27:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"BulkTransferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1351,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1345,"name":"ElementaryTypeName","src":"22486:7:31"}],"id":1346,"name":"VariableDeclaration","src":"22486:11:31"},{"attributes":{"constant":false,"indexed":false,"name":"_assets","scope":1351,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1347,"name":"ElementaryTypeName","src":"22499:7:31"}],"id":1348,"name":"ArrayTypeName","src":"22499:9:31"}],"id":1349,"name":"VariableDeclaration","src":"22499:17:31"}],"id":1350,"name":"ParameterList","src":"22485:32:31"}],"id":1351,"name":"EventDefinition","src":"22464:54:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedRelayedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1357,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1352,"name":"ElementaryTypeName","src":"22556:5:31"}],"id":1353,"name":"VariableDeclaration","src":"22556:11:31"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1357,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1354,"name":"ElementaryTypeName","src":"22569:5:31"}],"id":1355,"name":"VariableDeclaration","src":"22569:17:31"}],"id":1356,"name":"ParameterList","src":"22555:32:31"}],"id":1357,"name":"EventDefinition","src":"22523:65:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_destination","scope":1367,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1358,"name":"ElementaryTypeName","src":"22619:7:31"}],"id":1359,"name":"VariableDeclaration","src":"22619:20:31"},{"attributes":{"constant":false,"indexed":false,"name":"_value","scope":1367,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1360,"name":"ElementaryTypeName","src":"22641:7:31"}],"id":1361,"name":"VariableDeclaration","src":"22641:14:31"},{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1367,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1362,"name":"ElementaryTypeName","src":"22657:5:31"}],"id":1363,"name":"VariableDeclaration","src":"22657:11:31"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1367,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1364,"name":"ElementaryTypeName","src":"22670:5:31"}],"id":1365,"name":"VariableDeclaration","src":"22670:17:31"}],"id":1366,"name":"ParameterList","src":"22618:70:31"}],"id":1367,"name":"EventDefinition","src":"22593:96:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"IncreasedRelayNonce"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1373,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1368,"name":"ElementaryTypeName","src":"22720:7:31"}],"id":1369,"name":"VariableDeclaration","src":"22720:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_currentNonce","scope":1373,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1370,"name":"ElementaryTypeName","src":"22737:7:31"}],"id":1371,"name":"VariableDeclaration","src":"22737:21:31"}],"id":1372,"name":"ParameterList","src":"22719:40:31"}],"id":1373,"name":"EventDefinition","src":"22694:66:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"LoadedTokenCard"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1379,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1374,"name":"ElementaryTypeName","src":"22787:7:31"}],"id":1375,"name":"VariableDeclaration","src":"22787:14:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1379,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1376,"name":"ElementaryTypeName","src":"22803:7:31"}],"id":1377,"name":"VariableDeclaration","src":"22803:15:31"}],"id":1378,"name":"ParameterList","src":"22786:33:31"}],"id":1379,"name":"EventDefinition","src":"22765:55:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1385,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1380,"name":"ElementaryTypeName","src":"22840:7:31"}],"id":1381,"name":"VariableDeclaration","src":"22840:13:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1385,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1382,"name":"ElementaryTypeName","src":"22855:7:31"}],"id":1383,"name":"VariableDeclaration","src":"22855:15:31"}],"id":1384,"name":"ParameterList","src":"22839:32:31"}],"id":1385,"name":"EventDefinition","src":"22825:47:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"ToppedUpGas"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1393,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1386,"name":"ElementaryTypeName","src":"22895:7:31"}],"id":1387,"name":"VariableDeclaration","src":"22895:15:31"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1393,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1388,"name":"ElementaryTypeName","src":"22912:7:31"}],"id":1389,"name":"VariableDeclaration","src":"22912:14:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1393,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1390,"name":"ElementaryTypeName","src":"22928:7:31"}],"id":1391,"name":"VariableDeclaration","src":"22928:15:31"}],"id":1392,"name":"ParameterList","src":"22894:50:31"}],"id":1393,"name":"EventDefinition","src":"22877:68:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1394,"name":"ElementaryTypeName","src":"22968:7:31"}],"id":1395,"name":"VariableDeclaration","src":"22968:11:31"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1401,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1396,"name":"ElementaryTypeName","src":"22981:7:31"}],"id":1397,"name":"VariableDeclaration","src":"22981:14:31"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1401,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1398,"name":"ElementaryTypeName","src":"22997:7:31"}],"id":1399,"name":"VariableDeclaration","src":"22997:15:31"}],"id":1400,"name":"ParameterList","src":"22967:46:31"}],"id":1401,"name":"EventDefinition","src":"22950:64:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1402,"name":"ParameterList","src":"23046:2:31"}],"id":1403,"name":"EventDefinition","src":"23019:30:31"},{"attributes":{"constant":true,"name":"WALLET_VERSION","scope":2227,"stateVariable":true,"storageLocation":"default","type":"string","visibility":"public"},"children":[{"attributes":{"name":"string","type":"string"},"id":1404,"name":"ElementaryTypeName","src":"23125:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"332e322e30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"3.2.0\"","value":"3.2.0"},"id":1405,"name":"Literal","src":"23165:7:31"}],"id":1406,"name":"VariableDeclaration","src":"23125:47:31"},{"attributes":{"constant":true,"name":"_EIP_1271","scope":2227,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1407,"name":"ElementaryTypeName","src":"23296:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230633133623062","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 549534475","value":"0x20c13b0b"},"id":1408,"name":"Literal","src":"23332:10:31"}],"id":1409,"name":"VariableDeclaration","src":"23296:46:31"},{"attributes":{"constant":true,"name":"_EIP_1654","scope":2227,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1410,"name":"ElementaryTypeName","src":"23467:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30783136323662613765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 371636862","value":"0x1626ba7e"},"id":1411,"name":"Literal","src":"23503:10:31"}],"id":1412,"name":"VariableDeclaration","src":"23467:46:31"},{"attributes":{"constant":true,"name":"_ERC165_INTERFACE_ID","scope":2227,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1413,"name":"ElementaryTypeName","src":"23564:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":1414,"name":"Literal","src":"23611:10:31"}],"id":1415,"name":"VariableDeclaration","src":"23564:57:31"},{"attributes":{"constant":false,"name":"relayNonce","scope":2227,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1416,"name":"ElementaryTypeName","src":"23739:7:31"}],"id":1417,"name":"VariableDeclaration","src":"23739:25:31"},{"attributes":{"constant":false,"name":"_licenceNode","scope":2227,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1418,"name":"ElementaryTypeName","src":"23845:7:31"}],"id":1419,"name":"VariableDeclaration","src":"23845:28:31"},{"attributes":{"documentation":"@dev Constructor initializes the wallet top up limit and the vault contract.\n @param _owner_ is the owner account of the wallet contract.\n @param _transferable_ indicates whether the contract ownership can be transferred.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist.\n @param _controllerNode_ is the ENS name node of the Controller contract.\n @param _licenceNode_ is the ENS name node of the Licence contract.\n @param _spendLimit_ is the initial spend limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1420,"name":"ElementaryTypeName","src":"24495:15:31"}],"id":1421,"name":"VariableDeclaration","src":"24495:23:31"},{"attributes":{"constant":false,"name":"_transferable_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1422,"name":"ElementaryTypeName","src":"24528:4:31"}],"id":1423,"name":"VariableDeclaration","src":"24528:19:31"},{"attributes":{"constant":false,"name":"_ens_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1424,"name":"ElementaryTypeName","src":"24557:7:31"}],"id":1425,"name":"VariableDeclaration","src":"24557:13:31"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1426,"name":"ElementaryTypeName","src":"24580:7:31"}],"id":1427,"name":"VariableDeclaration","src":"24580:28:31"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1428,"name":"ElementaryTypeName","src":"24618:7:31"}],"id":1429,"name":"VariableDeclaration","src":"24618:24:31"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1430,"name":"ElementaryTypeName","src":"24652:7:31"}],"id":1431,"name":"VariableDeclaration","src":"24652:21:31"},{"attributes":{"constant":false,"name":"_spendLimit_","scope":1457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1432,"name":"ElementaryTypeName","src":"24683:7:31"}],"id":1433,"name":"VariableDeclaration","src":"24683:20:31"}],"id":1434,"name":"ParameterList","src":"24485:224:31"},{"attributes":{"parameters":[null]},"children":[],"id":1451,"name":"ParameterList","src":"24859:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1435,"name":"Identifier","src":"24717:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1425,"type":"address","value":"_ens_"},"id":1436,"name":"Identifier","src":"24731:5:31"}],"id":1437,"name":"ModifierInvocation","src":"24717:20:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":984,"type":"type(contract SpendLimit)","value":"SpendLimit"},"id":1438,"name":"Identifier","src":"24738:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1433,"type":"uint256","value":"_spendLimit_"},"id":1439,"name":"Identifier","src":"24749:12:31"}],"id":1440,"name":"ModifierInvocation","src":"24738:24:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3072,"type":"type(contract Ownable)","value":"Ownable"},"id":1441,"name":"Identifier","src":"24763:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1421,"type":"address payable","value":"_owner_"},"id":1442,"name":"Identifier","src":"24771:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1423,"type":"bool","value":"_transferable_"},"id":1443,"name":"Identifier","src":"24780:14:31"}],"id":1444,"name":"ModifierInvocation","src":"24763:32:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"type(contract Controllable)","value":"Controllable"},"id":1445,"name":"Identifier","src":"24796:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1429,"type":"bytes32","value":"_controllerNode_"},"id":1446,"name":"Identifier","src":"24809:16:31"}],"id":1447,"name":"ModifierInvocation","src":"24796:30:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1316,"type":"type(contract LoadLimit)","value":"LoadLimit"},"id":1448,"name":"Identifier","src":"24827:9:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1427,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1449,"name":"Identifier","src":"24837:20:31"}],"id":1450,"name":"ModifierInvocation","src":"24827:31:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1419,"type":"bytes32","value":"_licenceNode"},"id":1452,"name":"Identifier","src":"24869:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1431,"type":"bytes32","value":"_licenceNode_"},"id":1453,"name":"Identifier","src":"24884:13:31"}],"id":1454,"name":"Assignment","src":"24869:28:31"}],"id":1455,"name":"ExpressionStatement","src":"24869:28:31"}],"id":1456,"name":"Block","src":"24859:45:31"}],"id":1457,"name":"FunctionDefinition","src":"24474:430:31"},{"attributes":{"documentation":"@dev Checks if the value is not zero.","name":"isNotZero","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_value","scope":1470,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1458,"name":"ElementaryTypeName","src":"24975:7:31"}],"id":1459,"name":"VariableDeclaration","src":"24975:14:31"}],"id":1460,"name":"ParameterList","src":"24974:16:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d553a348030c1ee763b9cde2d3cc60fc831e78f559cd3758c25113c454c7f3","typeString":"literal_string \"value=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1461,"name":"Identifier","src":"25001:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1459,"type":"uint256","value":"_value"},"id":1462,"name":"Identifier","src":"25009:6:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1463,"name":"Literal","src":"25019:1:31"}],"id":1464,"name":"BinaryOperation","src":"25009:11:31"},{"attributes":{"argumentTypes":null,"hexvalue":"76616c75653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"value=0\"","value":"value=0"},"id":1465,"name":"Literal","src":"25022:9:31"}],"id":1466,"name":"FunctionCall","src":"25001:31:31"}],"id":1467,"name":"ExpressionStatement","src":"25001:31:31"},{"id":1468,"name":"PlaceholderStatement","src":"25042:1:31"}],"id":1469,"name":"Block","src":"24991:59:31"}],"id":1470,"name":"ModifierDefinition","src":"24956:94:31"},{"attributes":{"documentation":"@dev Ether can be deposited from any source, so this contract must be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":2227,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1471,"name":"ParameterList","src":"25161:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":1472,"name":"ParameterList","src":"25181:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1385,"type":"function (address,uint256)","value":"Received"},"id":1473,"name":"Identifier","src":"25196:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1474,"name":"Identifier","src":"25205:3:31"}],"id":1475,"name":"MemberAccess","src":"25205:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1476,"name":"Identifier","src":"25217:3:31"}],"id":1477,"name":"MemberAccess","src":"25217:9:31"}],"id":1478,"name":"FunctionCall","src":"25196:31:31"}],"id":1479,"name":"EmitStatement","src":"25191:36:31"}],"id":1480,"name":"Block","src":"25181:53:31"}],"id":1481,"name":"FunctionDefinition","src":"25153:81:31"},{"attributes":{"documentation":"@dev This is a bulk transfer convenience function, used to migrate contracts.\n @notice If any of the transfers fail, this will revert.\n @param _to is the recipient's address, can't be the zero (0x0) address: transfer() will revert.\n @param _assets is an array of addresses of ERC20 tokens or 0x0 for ether.","implemented":true,"isConstructor":false,"kind":"function","name":"bulkTransfer","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1537,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1482,"name":"ElementaryTypeName","src":"25598:15:31"}],"id":1483,"name":"VariableDeclaration","src":"25598:19:31"},{"attributes":{"constant":false,"name":"_assets","scope":1537,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1484,"name":"ElementaryTypeName","src":"25619:7:31"}],"id":1485,"name":"ArrayTypeName","src":"25619:9:31"}],"id":1486,"name":"VariableDeclaration","src":"25619:26:31"}],"id":1487,"name":"ParameterList","src":"25597:49:31"},{"attributes":{"parameters":[null]},"children":[],"id":1490,"name":"ParameterList","src":"25672:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1488,"name":"Identifier","src":"25656:15:31"}],"id":1489,"name":"ModifierInvocation","src":"25656:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc6fe91796d2ae20b0ff36bc5dfbb8543f76fc0a4077e7ae85858f799173eb60","typeString":"literal_string \"asset array is empty\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1491,"name":"Identifier","src":"25737:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1492,"name":"Identifier","src":"25745:7:31"}],"id":1493,"name":"MemberAccess","src":"25745:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1494,"name":"Literal","src":"25763:1:31"}],"id":1495,"name":"BinaryOperation","src":"25745:19:31"},{"attributes":{"argumentTypes":null,"hexvalue":"617373657420617272617920697320656d707479","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"asset array is empty\"","value":"asset array is empty"},"id":1496,"name":"Literal","src":"25766:22:31"}],"id":1497,"name":"FunctionCall","src":"25737:52:31"}],"id":1498,"name":"ExpressionStatement","src":"25737:52:31"},{"children":[{"attributes":{"assignments":[1500]},"children":[{"attributes":{"constant":false,"name":"i","scope":1530,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1499,"name":"ElementaryTypeName","src":"25866:7:31"}],"id":1500,"name":"VariableDeclaration","src":"25866:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1501,"name":"Literal","src":"25878:1:31"}],"id":1502,"name":"VariableDeclarationStatement","src":"25866:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1500,"type":"uint256","value":"i"},"id":1503,"name":"Identifier","src":"25881:1:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1504,"name":"Identifier","src":"25885:7:31"}],"id":1505,"name":"MemberAccess","src":"25885:14:31"}],"id":1506,"name":"BinaryOperation","src":"25881:18:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1500,"type":"uint256","value":"i"},"id":1507,"name":"Identifier","src":"25901:1:31"}],"id":1508,"name":"UnaryOperation","src":"25901:3:31"}],"id":1509,"name":"ExpressionStatement","src":"25901:3:31"},{"children":[{"attributes":{"assignments":[1511]},"children":[{"attributes":{"constant":false,"name":"amount","scope":1529,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1510,"name":"ElementaryTypeName","src":"25920:7:31"}],"id":1511,"name":"VariableDeclaration","src":"25920:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2773,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":1512,"name":"Identifier","src":"25937:8:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2227","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1513,"name":"ElementaryTypeNameExpression","src":"25946:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10247,"type":"contract Wallet","value":"this"},"id":1514,"name":"Identifier","src":"25954:4:31"}],"id":1515,"name":"FunctionCall","src":"25946:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1516,"name":"Identifier","src":"25961:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1500,"type":"uint256","value":"i"},"id":1517,"name":"Identifier","src":"25969:1:31"}],"id":1518,"name":"IndexAccess","src":"25961:10:31"}],"id":1519,"name":"FunctionCall","src":"25937:35:31"}],"id":1520,"name":"VariableDeclarationStatement","src":"25920:52:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2226,"type":"function (address payable,address,uint256)","value":"transfer"},"id":1521,"name":"Identifier","src":"26046:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1483,"type":"address payable","value":"_to"},"id":1522,"name":"Identifier","src":"26055:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1523,"name":"Identifier","src":"26060:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1500,"type":"uint256","value":"i"},"id":1524,"name":"Identifier","src":"26068:1:31"}],"id":1525,"name":"IndexAccess","src":"26060:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1511,"type":"uint256","value":"amount"},"id":1526,"name":"Identifier","src":"26072:6:31"}],"id":1527,"name":"FunctionCall","src":"26046:33:31"}],"id":1528,"name":"ExpressionStatement","src":"26046:33:31"}],"id":1529,"name":"Block","src":"25906:184:31"}],"id":1530,"name":"ForStatement","src":"25861:229:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"function (address,address[] memory)","value":"BulkTransferred"},"id":1531,"name":"Identifier","src":"26105:15:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1483,"type":"address payable","value":"_to"},"id":1532,"name":"Identifier","src":"26121:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"address[] calldata","value":"_assets"},"id":1533,"name":"Identifier","src":"26126:7:31"}],"id":1534,"name":"FunctionCall","src":"26105:29:31"}],"id":1535,"name":"EmitStatement","src":"26100:34:31"}],"id":1536,"name":"Block","src":"25672:469:31"}],"id":1537,"name":"FunctionDefinition","src":"25576:565:31"},{"attributes":{"documentation":"@dev This function allows for the controller to relay transactions on the owner's behalf,\n the relayed message has to be signed by the owner.\n @param _nonce only used for relayed transactions, must match the wallet's relayNonce.\n @param _data abi encoded data payload.\n @param _signature signed prefix + data.","implemented":true,"isConstructor":false,"kind":"function","name":"executeRelayedTransaction","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_nonce","scope":1613,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1538,"name":"ElementaryTypeName","src":"26528:7:31"}],"id":1539,"name":"VariableDeclaration","src":"26528:14:31"},{"attributes":{"constant":false,"name":"_data","scope":1613,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1540,"name":"ElementaryTypeName","src":"26544:5:31"}],"id":1541,"name":"VariableDeclaration","src":"26544:20:31"},{"attributes":{"constant":false,"name":"_signature","scope":1613,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1542,"name":"ElementaryTypeName","src":"26566:5:31"}],"id":1543,"name":"VariableDeclaration","src":"26566:25:31"}],"id":1544,"name":"ParameterList","src":"26527:65:31"},{"attributes":{"parameters":[null]},"children":[],"id":1547,"name":"ParameterList","src":"26617:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2815,"type":"modifier ()","value":"onlyController"},"id":1545,"name":"Identifier","src":"26602:14:31"}],"id":1546,"name":"ModifierInvocation","src":"26602:14:31"},{"children":[{"attributes":{"assignments":[1549],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"id","scope":1612,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1548,"name":"ElementaryTypeName","src":"26797:7:31"}],"id":1549,"name":"VariableDeclaration","src":"26797:10:31"}],"id":1550,"name":"VariableDeclarationStatement","src":"26797:10:31"},{"attributes":{"externalReferences":[{"id":{"declaration":1549,"isOffset":false,"isSlot":false,"src":"26840:2:31","valueSize":1}}],"operations":"{ id := chainid() }"},"children":[],"id":1551,"name":"InlineAssembly","src":"26817:99:31"},{"attributes":{"assignments":[1553]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1552,"name":"ElementaryTypeName","src":"26925:7:31"}],"id":1553,"name":"VariableDeclaration","src":"26925:16:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toEthSignedMessageHash","referencedDeclaration":2326,"type":"function (bytes32) pure returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1554,"name":"Identifier","src":"26944:9:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_64973292d287a9bdfbf2540b56114a2ccf5255f1a0f38436d52dc69f44e83d8d","typeString":"literal_string \"monolith:\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":1555,"name":"Identifier","src":"26954:3:31"}],"id":1556,"name":"MemberAccess","src":"26954:16:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e6f6c6974683a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"monolith:\"","value":"monolith:"},"id":1557,"name":"Literal","src":"26971:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1549,"type":"uint256","value":"id"},"id":1558,"name":"Identifier","src":"26984:2:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2227","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1559,"name":"ElementaryTypeNameExpression","src":"26988:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10247,"type":"contract Wallet","value":"this"},"id":1560,"name":"Identifier","src":"26996:4:31"}],"id":1561,"name":"FunctionCall","src":"26988:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1539,"type":"uint256","value":"_nonce"},"id":1562,"name":"Identifier","src":"27003:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1541,"type":"bytes calldata","value":"_data"},"id":1563,"name":"Identifier","src":"27011:5:31"}],"id":1564,"name":"FunctionCall","src":"26954:63:31"}],"id":1565,"name":"FunctionCall","src":"26944:74:31"}],"id":1566,"name":"MemberAccess","src":"26944:97:31"}],"id":1567,"name":"FunctionCall","src":"26944:99:31"}],"id":1568,"name":"VariableDeclarationStatement","src":"26925:118:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1569,"name":"Identifier","src":"27111:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2160,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1570,"name":"Identifier","src":"27119:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1553,"type":"bytes32","value":"dataHash"},"id":1571,"name":"Identifier","src":"27136:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1543,"type":"bytes calldata","value":"_signature"},"id":1572,"name":"Identifier","src":"27146:10:31"}],"id":1573,"name":"FunctionCall","src":"27119:38:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"bytes4","value":"_EIP_1654"},"id":1574,"name":"Identifier","src":"27161:9:31"}],"id":1575,"name":"BinaryOperation","src":"27119:51:31"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1576,"name":"Literal","src":"27172:15:31"}],"id":1577,"name":"FunctionCall","src":"27111:77:31"}],"id":1578,"name":"ExpressionStatement","src":"27111:77:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_34adcd0a74b814374d2f97634e18f1e1bbbc6244d3bcc4bf9469772fc5d9d0ea","typeString":"literal_string \"tx replay\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1579,"name":"Identifier","src":"27283:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1539,"type":"uint256","value":"_nonce"},"id":1580,"name":"Identifier","src":"27291:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1417,"type":"uint256","value":"relayNonce"},"id":1581,"name":"Identifier","src":"27301:10:31"}],"id":1582,"name":"BinaryOperation","src":"27291:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"7478207265706c6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"tx replay\"","value":"tx replay"},"id":1583,"name":"Literal","src":"27313:11:31"}],"id":1584,"name":"FunctionCall","src":"27283:42:31"}],"id":1585,"name":"ExpressionStatement","src":"27283:42:31"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1635,"type":"function ()","value":"_increaseRelayNonce"},"id":1586,"name":"Identifier","src":"27335:19:31"}],"id":1587,"name":"FunctionCall","src":"27335:21:31"}],"id":1588,"name":"ExpressionStatement","src":"27335:21:31"},{"attributes":{"assignments":[1590,1592]},"children":[{"attributes":{"constant":false,"name":"success","scope":1612,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1589,"name":"ElementaryTypeName","src":"27424:4:31"}],"id":1590,"name":"VariableDeclaration","src":"27424:12:31"},{"attributes":{"constant":false,"name":"returndata","scope":1612,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1591,"name":"ElementaryTypeName","src":"27438:5:31"}],"id":1592,"name":"VariableDeclaration","src":"27438:23:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2227","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1593,"name":"ElementaryTypeNameExpression","src":"27465:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10247,"type":"contract Wallet","value":"this"},"id":1594,"name":"Identifier","src":"27473:4:31"}],"id":1595,"name":"FunctionCall","src":"27465:13:31"}],"id":1596,"name":"MemberAccess","src":"27465:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1541,"type":"bytes calldata","value":"_data"},"id":1597,"name":"Identifier","src":"27484:5:31"}],"id":1598,"name":"FunctionCall","src":"27465:25:31"}],"id":1599,"name":"VariableDeclarationStatement","src":"27423:67:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1600,"name":"Identifier","src":"27500:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1590,"type":"bool","value":"success"},"id":1601,"name":"Identifier","src":"27508:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":1602,"name":"ElementaryTypeNameExpression","src":"27517:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1592,"type":"bytes memory","value":"returndata"},"id":1603,"name":"Identifier","src":"27524:10:31"}],"id":1604,"name":"FunctionCall","src":"27517:18:31"}],"id":1605,"name":"FunctionCall","src":"27500:36:31"}],"id":1606,"name":"ExpressionStatement","src":"27500:36:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1357,"type":"function (bytes memory,bytes memory)","value":"ExecutedRelayedTransaction"},"id":1607,"name":"Identifier","src":"27552:26:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1541,"type":"bytes calldata","value":"_data"},"id":1608,"name":"Identifier","src":"27579:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1592,"type":"bytes memory","value":"returndata"},"id":1609,"name":"Identifier","src":"27586:10:31"}],"id":1610,"name":"FunctionCall","src":"27552:45:31"}],"id":1611,"name":"EmitStatement","src":"27547:50:31"}],"id":1612,"name":"Block","src":"26617:987:31"}],"id":1613,"name":"FunctionDefinition","src":"26493:1111:31"},{"attributes":{"documentation":"@dev This allows the user to cancel a transaction that was unexpectedly delayed by the relayer","implemented":true,"isConstructor":false,"kind":"function","name":"increaseRelayNonce","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1614,"name":"ParameterList","src":"27740:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":1617,"name":"ParameterList","src":"27762:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"modifier ()","value":"onlyOwner"},"id":1615,"name":"Identifier","src":"27752:9:31"}],"id":1616,"name":"ModifierInvocation","src":"27752:9:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1635,"type":"function ()","value":"_increaseRelayNonce"},"id":1618,"name":"Identifier","src":"27772:19:31"}],"id":1619,"name":"FunctionCall","src":"27772:21:31"}],"id":1620,"name":"ExpressionStatement","src":"27772:21:31"}],"id":1621,"name":"Block","src":"27762:38:31"}],"id":1622,"name":"FunctionDefinition","src":"27713:87:31"},{"attributes":{"documentation":"@dev This bumps the relayNonce and emits an event accordingly","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_increaseRelayNonce","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1623,"name":"ParameterList","src":"27904:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":1624,"name":"ParameterList","src":"27916:0:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1417,"type":"uint256","value":"relayNonce"},"id":1625,"name":"Identifier","src":"27926:10:31"}],"id":1626,"name":"UnaryOperation","src":"27926:12:31"}],"id":1627,"name":"ExpressionStatement","src":"27926:12:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1373,"type":"function (address,uint256)","value":"IncreasedRelayNonce"},"id":1628,"name":"Identifier","src":"27954:19:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1629,"name":"Identifier","src":"27974:3:31"}],"id":1630,"name":"MemberAccess","src":"27974:10:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1417,"type":"uint256","value":"relayNonce"},"id":1631,"name":"Identifier","src":"27986:10:31"}],"id":1632,"name":"FunctionCall","src":"27954:43:31"}],"id":1633,"name":"EmitStatement","src":"27949:48:31"}],"id":1634,"name":"Block","src":"27916:88:31"}],"id":1635,"name":"FunctionDefinition","src":"27876:128:31"},{"attributes":{"documentation":"@dev Implements EIP-1271: receives the raw data (bytes)\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":1666,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1636,"name":"ElementaryTypeName","src":"28325:5:31"}],"id":1637,"name":"VariableDeclaration","src":"28325:20:31"},{"attributes":{"constant":false,"name":"_signature","scope":1666,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1638,"name":"ElementaryTypeName","src":"28347:5:31"}],"id":1639,"name":"VariableDeclaration","src":"28347:25:31"}],"id":1640,"name":"ParameterList","src":"28324:49:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1666,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1641,"name":"ElementaryTypeName","src":"28397:6:31"}],"id":1642,"name":"VariableDeclaration","src":"28397:6:31"}],"id":1643,"name":"ParameterList","src":"28396:8:31"},{"children":[{"attributes":{"assignments":[1645]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1665,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1644,"name":"ElementaryTypeName","src":"28415:7:31"}],"id":1645,"name":"VariableDeclaration","src":"28415:16:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10147,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1646,"name":"Identifier","src":"28434:9:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10140,"type":"abi","value":"abi"},"id":1647,"name":"Identifier","src":"28444:3:31"}],"id":1648,"name":"MemberAccess","src":"28444:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1637,"type":"bytes calldata","value":"_data"},"id":1649,"name":"Identifier","src":"28461:5:31"}],"id":1650,"name":"FunctionCall","src":"28444:23:31"}],"id":1651,"name":"FunctionCall","src":"28434:34:31"}],"id":1652,"name":"VariableDeclarationStatement","src":"28415:53:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1653,"name":"Identifier","src":"28533:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2160,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1654,"name":"Identifier","src":"28541:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1645,"type":"bytes32","value":"dataHash"},"id":1655,"name":"Identifier","src":"28558:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1639,"type":"bytes calldata","value":"_signature"},"id":1656,"name":"Identifier","src":"28568:10:31"}],"id":1657,"name":"FunctionCall","src":"28541:38:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"bytes4","value":"_EIP_1654"},"id":1658,"name":"Identifier","src":"28583:9:31"}],"id":1659,"name":"BinaryOperation","src":"28541:51:31"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1660,"name":"Literal","src":"28594:15:31"}],"id":1661,"name":"FunctionCall","src":"28533:77:31"}],"id":1662,"name":"ExpressionStatement","src":"28533:77:31"},{"attributes":{"functionReturnParameters":1643},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"bytes4","value":"_EIP_1271"},"id":1663,"name":"Identifier","src":"28627:9:31"}],"id":1664,"name":"Return","src":"28620:16:31"}],"id":1665,"name":"Block","src":"28405:238:31"}],"id":1666,"name":"FunctionDefinition","src":"28299:344:31"},{"attributes":{"documentation":"@return licence contract node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceNode","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1667,"name":"ParameterList","src":"28726:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1674,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1668,"name":"ElementaryTypeName","src":"28752:7:31"}],"id":1669,"name":"VariableDeclaration","src":"28752:7:31"}],"id":1670,"name":"ParameterList","src":"28751:9:31"},{"children":[{"attributes":{"functionReturnParameters":1670},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1419,"type":"bytes32","value":"_licenceNode"},"id":1671,"name":"Identifier","src":"28778:12:31"}],"id":1672,"name":"Return","src":"28771:19:31"}],"id":1673,"name":"Block","src":"28761:36:31"}],"id":1674,"name":"FunctionDefinition","src":"28706:91:31"},{"attributes":{"documentation":"@dev Load a token card with the specified asset amount.\n @dev the amount send should be inclusive of the percent licence.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"loadTokenCard","scope":2227,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":1750,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1675,"name":"ElementaryTypeName","src":"29116:7:31"}],"id":1676,"name":"VariableDeclaration","src":"29116:14:31"},{"attributes":{"constant":false,"name":"_amount","scope":1750,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1677,"name":"ElementaryTypeName","src":"29132:7:31"}],"id":1678,"name":"VariableDeclaration","src":"29132:15:31"}],"id":1679,"name":"ParameterList","src":"29115:33:31"},{"attributes":{"parameters":[null]},"children":[],"id":1682,"name":"ParameterList","src":"29182:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1680,"name":"Identifier","src":"29166:15:31"}],"id":1681,"name":"ModifierInvocation","src":"29166:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96e30e7359d705e51778d9ae05179a78cb34ab813d824e29a3cd9fe209b16a67","typeString":"literal_string \"token not loadable\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1683,"name":"Identifier","src":"29261:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3274,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":1684,"name":"Identifier","src":"29269:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1685,"name":"Identifier","src":"29286:6:31"}],"id":1686,"name":"FunctionCall","src":"29269:24:31"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f74206c6f616461626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not loadable\"","value":"token not loadable"},"id":1687,"name":"Literal","src":"29295:20:31"}],"id":1688,"name":"FunctionCall","src":"29261:55:31"}],"id":1689,"name":"ExpressionStatement","src":"29261:55:31"},{"attributes":{"assignments":[1691]},"children":[{"attributes":{"constant":false,"name":"stablecoinValue","scope":1749,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1690,"name":"ElementaryTypeName","src":"29379:7:31"}],"id":1691,"name":"VariableDeclaration","src":"29379:23:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2006,"type":"function (address,uint256) view returns (uint256)","value":"convertToStablecoin"},"id":1692,"name":"Identifier","src":"29405:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1693,"name":"Identifier","src":"29425:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1694,"name":"Identifier","src":"29433:7:31"}],"id":1695,"name":"FunctionCall","src":"29405:36:31"}],"id":1696,"name":"VariableDeclarationStatement","src":"29379:62:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1697,"name":"Identifier","src":"29571:10:31"}],"id":1699,"name":"MemberAccess","src":"29571:24:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1691,"type":"uint256","value":"stablecoinValue"},"id":1700,"name":"Identifier","src":"29596:15:31"}],"id":1701,"name":"FunctionCall","src":"29571:41:31"}],"id":1702,"name":"ExpressionStatement","src":"29571:41:31"},{"attributes":{"assignments":[1704]},"children":[{"attributes":{"constant":false,"name":"licenceAddress","scope":1749,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1703,"name":"ElementaryTypeName","src":"29669:7:31"}],"id":1704,"name":"VariableDeclaration","src":"29669:22:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2914,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1705,"name":"Identifier","src":"29694:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1419,"type":"bytes32","value":"_licenceNode"},"id":1706,"name":"Identifier","src":"29706:12:31"}],"id":1707,"name":"FunctionCall","src":"29694:25:31"}],"id":1708,"name":"VariableDeclarationStatement","src":"29669:50:31"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1709,"name":"Identifier","src":"29733:6:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1710,"name":"ElementaryTypeNameExpression","src":"29743:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1711,"name":"Literal","src":"29751:1:31"}],"id":1712,"name":"FunctionCall","src":"29743:10:31"}],"id":1713,"name":"BinaryOperation","src":"29733:20:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeApprove","referencedDeclaration":2489,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":1714,"name":"Identifier","src":"29769:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1715,"name":"Identifier","src":"29775:6:31"}],"id":1716,"name":"FunctionCall","src":"29769:13:31"}],"id":1717,"name":"MemberAccess","src":"29769:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1704,"type":"address","value":"licenceAddress"},"id":1718,"name":"Identifier","src":"29795:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1719,"name":"Identifier","src":"29811:7:31"}],"id":1720,"name":"FunctionCall","src":"29769:50:31"}],"id":1721,"name":"ExpressionStatement","src":"29769:50:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":3343,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3349,"type":"type(contract ILicence)","value":"ILicence"},"id":1722,"name":"Identifier","src":"29833:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1704,"type":"address","value":"licenceAddress"},"id":1723,"name":"Identifier","src":"29842:14:31"}],"id":1724,"name":"FunctionCall","src":"29833:24:31"}],"id":1725,"name":"MemberAccess","src":"29833:29:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1726,"name":"Identifier","src":"29863:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1727,"name":"Identifier","src":"29871:7:31"}],"id":1728,"name":"FunctionCall","src":"29833:46:31"}],"id":1729,"name":"ExpressionStatement","src":"29833:46:31"}],"id":1730,"name":"Block","src":"29755:135:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (address,uint256) payable external","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (address,uint256) payable external)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":3343,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3349,"type":"type(contract ILicence)","value":"ILicence"},"id":1731,"name":"Identifier","src":"29910:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1704,"type":"address","value":"licenceAddress"},"id":1732,"name":"Identifier","src":"29919:14:31"}],"id":1733,"name":"FunctionCall","src":"29910:24:31"}],"id":1734,"name":"MemberAccess","src":"29910:29:31"}],"id":1735,"name":"MemberAccess","src":"29910:35:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1736,"name":"Identifier","src":"29946:7:31"}],"id":1737,"name":"FunctionCall","src":"29910:44:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1738,"name":"Identifier","src":"29955:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1739,"name":"Identifier","src":"29963:7:31"}],"id":1740,"name":"FunctionCall","src":"29910:61:31"}],"id":1741,"name":"ExpressionStatement","src":"29910:61:31"}],"id":1742,"name":"Block","src":"29896:86:31"}],"id":1743,"name":"IfStatement","src":"29729:253:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1379,"type":"function (address,uint256)","value":"LoadedTokenCard"},"id":1744,"name":"Identifier","src":"29997:15:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1676,"type":"address","value":"_asset"},"id":1745,"name":"Identifier","src":"30013:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1678,"type":"uint256","value":"_amount"},"id":1746,"name":"Identifier","src":"30021:7:31"}],"id":1747,"name":"FunctionCall","src":"29997:32:31"}],"id":1748,"name":"EmitStatement","src":"29992:37:31"}],"id":1749,"name":"Block","src":"29182:854:31"}],"id":1750,"name":"FunctionDefinition","src":"29093:943:31"},{"attributes":{"documentation":"@dev Checks for interface support based on ERC165.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2227,"stateMutability":"view","superFunction":2336,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_interfaceID","scope":1762,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1751,"name":"ElementaryTypeName","src":"30128:6:31"}],"id":1752,"name":"VariableDeclaration","src":"30128:19:31"}],"id":1753,"name":"ParameterList","src":"30127:21:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1762,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1754,"name":"ElementaryTypeName","src":"30172:4:31"}],"id":1755,"name":"VariableDeclaration","src":"30172:4:31"}],"id":1756,"name":"ParameterList","src":"30171:6:31"},{"children":[{"attributes":{"functionReturnParameters":1756},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1752,"type":"bytes4","value":"_interfaceID"},"id":1757,"name":"Identifier","src":"30195:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1415,"type":"bytes4","value":"_ERC165_INTERFACE_ID"},"id":1758,"name":"Identifier","src":"30211:20:31"}],"id":1759,"name":"BinaryOperation","src":"30195:36:31"}],"id":1760,"name":"Return","src":"30188:43:31"}],"id":1761,"name":"Block","src":"30178:60:31"}],"id":1762,"name":"FunctionDefinition","src":"30101:137:31"},{"attributes":{"documentation":"@dev Refill owner's gas balance, revert if the transaction amount is too large\n @param _amount is the amount of ether to transfer to the owner account in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"topUpGas","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1793,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1763,"name":"ElementaryTypeName","src":"30436:7:31"}],"id":1764,"name":"VariableDeclaration","src":"30436:15:31"}],"id":1765,"name":"ParameterList","src":"30435:17:31"},{"attributes":{"parameters":[null]},"children":[],"id":1771,"name":"ParameterList","src":"30503:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1470,"type":"modifier (uint256)","value":"isNotZero"},"id":1766,"name":"Identifier","src":"30462:9:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"_amount"},"id":1767,"name":"Identifier","src":"30472:7:31"}],"id":1768,"name":"ModifierInvocation","src":"30462:18:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":79,"type":"modifier ()","value":"onlyOwnerOrController"},"id":1769,"name":"Identifier","src":"30481:21:31"}],"id":1770,"name":"ModifierInvocation","src":"30481:21:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1009,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1772,"name":"Identifier","src":"30633:14:31"}],"id":1774,"name":"MemberAccess","src":"30633:28:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"_amount"},"id":1775,"name":"Identifier","src":"30662:7:31"}],"id":1776,"name":"FunctionCall","src":"30633:37:31"}],"id":1777,"name":"ExpressionStatement","src":"30633:37:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3059,"type":"function () view returns (address payable)","value":"owner"},"id":1778,"name":"Identifier","src":"30717:5:31"}],"id":1779,"name":"FunctionCall","src":"30717:7:31"}],"id":1780,"name":"MemberAccess","src":"30717:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"_amount"},"id":1781,"name":"Identifier","src":"30734:7:31"}],"id":1782,"name":"FunctionCall","src":"30717:25:31"}],"id":1783,"name":"ExpressionStatement","src":"30717:25:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1393,"type":"function (address,address,uint256)","value":"ToppedUpGas"},"id":1784,"name":"Identifier","src":"30795:11:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10153,"type":"msg","value":"msg"},"id":1785,"name":"Identifier","src":"30807:3:31"}],"id":1786,"name":"MemberAccess","src":"30807:10:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3059,"type":"function () view returns (address payable)","value":"owner"},"id":1787,"name":"Identifier","src":"30819:5:31"}],"id":1788,"name":"FunctionCall","src":"30819:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"_amount"},"id":1789,"name":"Identifier","src":"30828:7:31"}],"id":1790,"name":"FunctionCall","src":"30795:41:31"}],"id":1791,"name":"EmitStatement","src":"30790:46:31"}],"id":1792,"name":"Block","src":"30503:340:31"}],"id":1793,"name":"FunctionDefinition","src":"30418:425:31"},{"attributes":{"documentation":"@dev This function allows for the wallet to send a batch of transactions instead of one,\n it calls executeTransaction() so that the daily limit is enforced.\n @param _transactionBatch data encoding the transactions to be sent,\n following executeTransaction's format i.e. (destination, value, data)","implemented":true,"isConstructor":false,"kind":"function","name":"batchExecuteTransaction","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_transactionBatch","scope":1876,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1794,"name":"ElementaryTypeName","src":"31208:5:31"}],"id":1795,"name":"VariableDeclaration","src":"31208:30:31"}],"id":1796,"name":"ParameterList","src":"31207:32:31"},{"attributes":{"parameters":[null]},"children":[],"id":1799,"name":"ParameterList","src":"31263:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1797,"name":"Identifier","src":"31247:15:31"}],"id":1798,"name":"ModifierInvocation","src":"31247:15:31"},{"children":[{"attributes":{"assignments":[1801]},"children":[{"attributes":{"constant":false,"name":"batchLength","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1800,"name":"ElementaryTypeName","src":"31273:7:31"}],"id":1801,"name":"VariableDeclaration","src":"31273:19:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"bytes memory","value":"_transactionBatch"},"id":1802,"name":"Identifier","src":"31295:17:31"}],"id":1803,"name":"MemberAccess","src":"31295:24:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1804,"name":"Literal","src":"31322:2:31"}],"id":1805,"name":"BinaryOperation","src":"31295:29:31"}],"id":1806,"name":"VariableDeclarationStatement","src":"31273:51:31"},{"attributes":{"assignments":[1808]},"children":[{"attributes":{"constant":false,"name":"remainingBytesLength","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1807,"name":"ElementaryTypeName","src":"31368:7:31"}],"id":1808,"name":"VariableDeclaration","src":"31368:28:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"bytes memory","value":"_transactionBatch"},"id":1809,"name":"Identifier","src":"31399:17:31"}],"id":1810,"name":"MemberAccess","src":"31399:24:31"}],"id":1811,"name":"VariableDeclarationStatement","src":"31368:55:31"},{"attributes":{"assignments":[1813]},"children":[{"attributes":{"constant":false,"name":"pos","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1812,"name":"ElementaryTypeName","src":"31468:7:31"}],"id":1813,"name":"VariableDeclaration","src":"31468:11:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1814,"name":"Literal","src":"31482:2:31"}],"id":1815,"name":"VariableDeclarationStatement","src":"31468:16:31"},{"attributes":{"assignments":[1817],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"destination","scope":1875,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1816,"name":"ElementaryTypeName","src":"31569:7:31"}],"id":1817,"name":"VariableDeclaration","src":"31569:19:31"}],"id":1818,"name":"VariableDeclarationStatement","src":"31569:19:31"},{"attributes":{"assignments":[1820],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1819,"name":"ElementaryTypeName","src":"31621:7:31"}],"id":1820,"name":"VariableDeclaration","src":"31621:13:31"}],"id":1821,"name":"VariableDeclarationStatement","src":"31621:13:31"},{"attributes":{"assignments":[1823],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dataLength","scope":1875,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1822,"name":"ElementaryTypeName","src":"31665:7:31"}],"id":1823,"name":"VariableDeclaration","src":"31665:18:31"}],"id":1824,"name":"VariableDeclarationStatement","src":"31665:18:31"},{"attributes":{"assignments":[1826],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"data","scope":1875,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1825,"name":"ElementaryTypeName","src":"31723:5:31"}],"id":1826,"name":"VariableDeclaration","src":"31723:17:31"}],"id":1827,"name":"VariableDeclarationStatement","src":"31723:17:31"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"pos"},"id":1828,"name":"Identifier","src":"31771:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1801,"type":"uint256","value":"batchLength"},"id":1829,"name":"Identifier","src":"31777:11:31"}],"id":1830,"name":"BinaryOperation","src":"31771:17:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1808,"type":"uint256","value":"remainingBytesLength"},"id":1831,"name":"Identifier","src":"31914:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2661,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1808,"type":"uint256","value":"remainingBytesLength"},"id":1832,"name":"Identifier","src":"31937:20:31"}],"id":1833,"name":"MemberAccess","src":"31937:24:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":1834,"name":"Literal","src":"31962:2:31"}],"id":1835,"name":"FunctionCall","src":"31937:28:31"}],"id":1836,"name":"Assignment","src":"31914:51:31"}],"id":1837,"name":"ExpressionStatement","src":"31914:51:31"},{"attributes":{"externalReferences":[{"destination":{"declaration":1817,"isOffset":false,"isSlot":false,"src":"32122:11:31","valueSize":1}},{"_transactionBatch":{"declaration":1795,"isOffset":false,"isSlot":false,"src":"32155:17:31","valueSize":1}},{"pos":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"32174:3:31","valueSize":1}},{"dataLength":{"declaration":1823,"isOffset":false,"isSlot":false,"src":"32481:10:31","valueSize":1}},{"value":{"declaration":1820,"isOffset":false,"isSlot":false,"src":"32265:5:31","valueSize":1}},{"pos":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"32307:3:31","valueSize":1}},{"_transactionBatch":{"declaration":1795,"isOffset":false,"isSlot":false,"src":"32284:17:31","valueSize":1}},{"data":{"declaration":1826,"isOffset":false,"isSlot":false,"src":"32555:4:31","valueSize":1}},{"pos":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"32528:3:31","valueSize":1}},{"_transactionBatch":{"declaration":1795,"isOffset":false,"isSlot":false,"src":"32505:17:31","valueSize":1}},{"pos":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"32590:3:31","valueSize":1}},{"_transactionBatch":{"declaration":1795,"isOffset":false,"isSlot":false,"src":"32567:17:31","valueSize":1}}],"operations":"{\n destination := shr(96, mload(add(_transactionBatch, pos)))\n value := mload(add(_transactionBatch, add(pos, 20)))\n dataLength := mload(add(_transactionBatch, add(pos, 52)))\n data := add(_transactionBatch, add(pos, 52))\n}"},"children":[],"id":1838,"name":"InlineAssembly","src":"31979:634:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"pos"},"id":1839,"name":"Identifier","src":"32703:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2636,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"pos"},"id":1840,"name":"Identifier","src":"32709:3:31"}],"id":1841,"name":"MemberAccess","src":"32709:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"uint256","value":"dataLength"},"id":1842,"name":"Identifier","src":"32717:10:31"}],"id":1843,"name":"FunctionCall","src":"32709:19:31"}],"id":1844,"name":"MemberAccess","src":"32709:23:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":1845,"name":"Literal","src":"32733:2:31"}],"id":1846,"name":"FunctionCall","src":"32709:27:31"}],"id":1847,"name":"Assignment","src":"32703:33:31"}],"id":1848,"name":"ExpressionStatement","src":"32703:33:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d4d7e869602fd07d121f8992a03b812eac20f2f3831f876bce9993aae915a2b","typeString":"literal_string \"out of bounds\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1849,"name":"Identifier","src":"32841:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"pos"},"id":1850,"name":"Identifier","src":"32849:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1801,"type":"uint256","value":"batchLength"},"id":1851,"name":"Identifier","src":"32856:11:31"}],"id":1852,"name":"BinaryOperation","src":"32849:18:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f6620626f756e6473","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of bounds\"","value":"out of bounds"},"id":1853,"name":"Literal","src":"32869:15:31"}],"id":1854,"name":"FunctionCall","src":"32841:44:31"}],"id":1855,"name":"ExpressionStatement","src":"32841:44:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"uint256","value":"dataLength"},"id":1856,"name":"Identifier","src":"32956:10:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1857,"name":"Literal","src":"32970:1:31"}],"id":1858,"name":"BinaryOperation","src":"32956:15:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1826,"type":"bytes memory","value":"data"},"id":1859,"name":"Identifier","src":"32991:4:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":1860,"name":"ElementaryTypeNameExpression","src":"32998:5:31"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":1861,"name":"Literal","src":"33004:2:31"}],"id":1862,"name":"FunctionCall","src":"32998:9:31"}],"id":1863,"name":"Assignment","src":"32991:16:31"}],"id":1864,"name":"ExpressionStatement","src":"32991:16:31"}],"id":1865,"name":"Block","src":"32973:49:31"}],"id":1866,"name":"IfStatement","src":"32952:70:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2134,"type":"function (address,uint256,bytes memory) returns (bytes memory)","value":"executeTransaction"},"id":1867,"name":"Identifier","src":"33130:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1817,"type":"address","value":"destination"},"id":1868,"name":"Identifier","src":"33149:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1820,"type":"uint256","value":"value"},"id":1869,"name":"Identifier","src":"33162:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1826,"type":"bytes memory","value":"data"},"id":1870,"name":"Identifier","src":"33169:4:31"}],"id":1871,"name":"FunctionCall","src":"33130:44:31"}],"id":1872,"name":"ExpressionStatement","src":"33130:44:31"}],"id":1873,"name":"Block","src":"31790:1395:31"}],"id":1874,"name":"WhileStatement","src":"31764:1421:31"}],"id":1875,"name":"Block","src":"31263:1928:31"}],"id":1876,"name":"FunctionDefinition","src":"31175:2016:31"},{"attributes":{"documentation":"@dev Convert ERC20 token amount to the corresponding ether amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToEther","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1916,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1877,"name":"ElementaryTypeName","src":"33402:7:31"}],"id":1878,"name":"VariableDeclaration","src":"33402:14:31"},{"attributes":{"constant":false,"name":"_amount","scope":1916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1879,"name":"ElementaryTypeName","src":"33418:7:31"}],"id":1880,"name":"VariableDeclaration","src":"33418:15:31"}],"id":1881,"name":"ParameterList","src":"33401:33:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":1916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1882,"name":"ElementaryTypeName","src":"33456:7:31"}],"id":1883,"name":"VariableDeclaration","src":"33456:7:31"}],"id":1884,"name":"ParameterList","src":"33455:9:31"},{"children":[{"attributes":{"assignments":[null,1886,1888,1890,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":1915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1885,"name":"ElementaryTypeName","src":"33545:7:31"}],"id":1886,"name":"VariableDeclaration","src":"33545:17:31"},{"attributes":{"constant":false,"name":"rate","scope":1915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1887,"name":"ElementaryTypeName","src":"33564:7:31"}],"id":1888,"name":"VariableDeclaration","src":"33564:12:31"},{"attributes":{"constant":false,"name":"available","scope":1915,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1889,"name":"ElementaryTypeName","src":"33578:4:31"}],"id":1890,"name":"VariableDeclaration","src":"33578:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":1891,"name":"Identifier","src":"33602:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1878,"type":"address","value":"_token"},"id":1892,"name":"Identifier","src":"33616:6:31"}],"id":1893,"name":"FunctionCall","src":"33602:21:31"}],"id":1894,"name":"VariableDeclarationStatement","src":"33542:81:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"bool","value":"available"},"id":1895,"name":"Identifier","src":"33703:9:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1896,"name":"Identifier","src":"33728:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1888,"type":"uint256","value":"rate"},"id":1897,"name":"Identifier","src":"33736:4:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1898,"name":"Literal","src":"33744:1:31"}],"id":1899,"name":"BinaryOperation","src":"33736:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":1900,"name":"Literal","src":"33747:8:31"}],"id":1901,"name":"FunctionCall","src":"33728:28:31"}],"id":1902,"name":"ExpressionStatement","src":"33728:28:31"},{"attributes":{"functionReturnParameters":1884},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2720,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2695,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1880,"type":"uint256","value":"_amount"},"id":1903,"name":"Identifier","src":"33861:7:31"}],"id":1904,"name":"MemberAccess","src":"33861:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1888,"type":"uint256","value":"rate"},"id":1905,"name":"Identifier","src":"33873:4:31"}],"id":1906,"name":"FunctionCall","src":"33861:17:31"}],"id":1907,"name":"MemberAccess","src":"33861:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"uint256","value":"magnitude"},"id":1908,"name":"Identifier","src":"33883:9:31"}],"id":1909,"name":"FunctionCall","src":"33861:32:31"}],"id":1910,"name":"Return","src":"33854:39:31"}],"id":1911,"name":"Block","src":"33714:190:31"}],"id":1912,"name":"IfStatement","src":"33699:205:31"},{"attributes":{"functionReturnParameters":1884},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1913,"name":"Literal","src":"33920:1:31"}],"id":1914,"name":"Return","src":"33913:8:31"}],"id":1915,"name":"Block","src":"33465:463:31"}],"id":1916,"name":"FunctionDefinition","src":"33378:550:31"},{"attributes":{"documentation":"@dev Convert ether or ERC20 token amount to the corresponding stablecoin amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToStablecoin","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2006,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1917,"name":"ElementaryTypeName","src":"34158:7:31"}],"id":1918,"name":"VariableDeclaration","src":"34158:14:31"},{"attributes":{"constant":false,"name":"_amount","scope":2006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1919,"name":"ElementaryTypeName","src":"34174:7:31"}],"id":1920,"name":"VariableDeclaration","src":"34174:15:31"}],"id":1921,"name":"ParameterList","src":"34157:33:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1922,"name":"ElementaryTypeName","src":"34212:7:31"}],"id":1923,"name":"VariableDeclaration","src":"34212:7:31"}],"id":1924,"name":"ParameterList","src":"34211:9:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1918,"type":"address","value":"_token"},"id":1925,"name":"Identifier","src":"34332:6:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3288,"type":"function () view returns (address)","value":"_stablecoin"},"id":1926,"name":"Identifier","src":"34342:11:31"}],"id":1927,"name":"FunctionCall","src":"34342:13:31"}],"id":1928,"name":"BinaryOperation","src":"34332:23:31"},{"children":[{"attributes":{"functionReturnParameters":1924},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1920,"type":"uint256","value":"_amount"},"id":1929,"name":"Identifier","src":"34378:7:31"}],"id":1930,"name":"Return","src":"34371:14:31"}],"id":1931,"name":"Block","src":"34357:39:31"}],"id":1932,"name":"IfStatement","src":"34328:68:31"},{"attributes":{"assignments":[1934]},"children":[{"attributes":{"constant":false,"name":"amountToSend","scope":2005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1933,"name":"ElementaryTypeName","src":"34405:7:31"}],"id":1934,"name":"VariableDeclaration","src":"34405:20:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1920,"type":"uint256","value":"_amount"},"id":1935,"name":"Identifier","src":"34428:7:31"}],"id":1936,"name":"VariableDeclarationStatement","src":"34405:30:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1918,"type":"address","value":"_token"},"id":1937,"name":"Identifier","src":"34482:6:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1938,"name":"ElementaryTypeNameExpression","src":"34492:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1939,"name":"Literal","src":"34500:1:31"}],"id":1940,"name":"FunctionCall","src":"34492:10:31"}],"id":1941,"name":"BinaryOperation","src":"34482:20:31"},{"children":[{"attributes":{"assignments":[null,1943,1945,1947,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":1974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1942,"name":"ElementaryTypeName","src":"34654:7:31"}],"id":1943,"name":"VariableDeclaration","src":"34654:17:31"},{"attributes":{"constant":false,"name":"rate","scope":1974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1944,"name":"ElementaryTypeName","src":"34673:7:31"}],"id":1945,"name":"VariableDeclaration","src":"34673:12:31"},{"attributes":{"constant":false,"name":"available","scope":1974,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1946,"name":"ElementaryTypeName","src":"34687:4:31"}],"id":1947,"name":"VariableDeclaration","src":"34687:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3127,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":1948,"name":"Identifier","src":"34711:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1918,"type":"address","value":"_token"},"id":1949,"name":"Identifier","src":"34725:6:31"}],"id":1950,"name":"FunctionCall","src":"34711:21:31"}],"id":1951,"name":"VariableDeclarationStatement","src":"34651:81:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1952,"name":"Identifier","src":"34835:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"bool","value":"available"},"id":1953,"name":"Identifier","src":"34843:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":1954,"name":"Literal","src":"34854:21:31"}],"id":1955,"name":"FunctionCall","src":"34835:41:31"}],"id":1956,"name":"ExpressionStatement","src":"34835:41:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1957,"name":"Identifier","src":"34890:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"uint256","value":"rate"},"id":1958,"name":"Identifier","src":"34898:4:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1959,"name":"Literal","src":"34906:1:31"}],"id":1960,"name":"BinaryOperation","src":"34898:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":1961,"name":"Literal","src":"34909:8:31"}],"id":1962,"name":"FunctionCall","src":"34890:28:31"}],"id":1963,"name":"ExpressionStatement","src":"34890:28:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1934,"type":"uint256","value":"amountToSend"},"id":1964,"name":"Identifier","src":"35020:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2720,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2695,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1920,"type":"uint256","value":"_amount"},"id":1965,"name":"Identifier","src":"35035:7:31"}],"id":1966,"name":"MemberAccess","src":"35035:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"uint256","value":"rate"},"id":1967,"name":"Identifier","src":"35047:4:31"}],"id":1968,"name":"FunctionCall","src":"35035:17:31"}],"id":1969,"name":"MemberAccess","src":"35035:21:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1943,"type":"uint256","value":"magnitude"},"id":1970,"name":"Identifier","src":"35057:9:31"}],"id":1971,"name":"FunctionCall","src":"35035:32:31"}],"id":1972,"name":"Assignment","src":"35020:47:31"}],"id":1973,"name":"ExpressionStatement","src":"35020:47:31"}],"id":1974,"name":"Block","src":"34504:574:31"}],"id":1975,"name":"IfStatement","src":"34478:600:31"},{"attributes":{"assignments":[null,1977,1979,1981,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":2005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1976,"name":"ElementaryTypeName","src":"35195:7:31"}],"id":1977,"name":"VariableDeclaration","src":"35195:27:31"},{"attributes":{"constant":false,"name":"stablecoinRate","scope":2005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1978,"name":"ElementaryTypeName","src":"35224:7:31"}],"id":1979,"name":"VariableDeclaration","src":"35224:22:31"},{"attributes":{"constant":false,"name":"stablecoinAvailable","scope":2005,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1980,"name":"ElementaryTypeName","src":"35248:4:31"}],"id":1981,"name":"VariableDeclaration","src":"35248:24:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3153,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1982,"name":"Identifier","src":"35282:18:31"}],"id":1983,"name":"FunctionCall","src":"35282:20:31"}],"id":1984,"name":"VariableDeclarationStatement","src":"35192:110:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1985,"name":"Identifier","src":"35360:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1981,"type":"bool","value":"stablecoinAvailable"},"id":1986,"name":"Identifier","src":"35368:19:31"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":1987,"name":"Literal","src":"35389:21:31"}],"id":1988,"name":"FunctionCall","src":"35360:51:31"}],"id":1989,"name":"ExpressionStatement","src":"35360:51:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18bfbbfdaee82cb0eebcce67c25e7747234386e0bcace876720c3090918b5d3f","typeString":"literal_string \"stablecoin rate=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":1990,"name":"Identifier","src":"35421:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1979,"type":"uint256","value":"stablecoinRate"},"id":1991,"name":"Identifier","src":"35429:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1992,"name":"Literal","src":"35447:1:31"}],"id":1993,"name":"BinaryOperation","src":"35429:19:31"},{"attributes":{"argumentTypes":null,"hexvalue":"737461626c65636f696e20726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"stablecoin rate=0\"","value":"stablecoin rate=0"},"id":1994,"name":"Literal","src":"35450:19:31"}],"id":1995,"name":"FunctionCall","src":"35421:49:31"}],"id":1996,"name":"ExpressionStatement","src":"35421:49:31"},{"attributes":{"functionReturnParameters":1924},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2720,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2695,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1934,"type":"uint256","value":"amountToSend"},"id":1997,"name":"Identifier","src":"35605:12:31"}],"id":1998,"name":"MemberAccess","src":"35605:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1977,"type":"uint256","value":"stablecoinMagnitude"},"id":1999,"name":"Identifier","src":"35622:19:31"}],"id":2000,"name":"FunctionCall","src":"35605:37:31"}],"id":2001,"name":"MemberAccess","src":"35605:41:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1979,"type":"uint256","value":"stablecoinRate"},"id":2002,"name":"Identifier","src":"35647:14:31"}],"id":2003,"name":"FunctionCall","src":"35605:57:31"}],"id":2004,"name":"Return","src":"35598:64:31"}],"id":2005,"name":"Block","src":"34221:1448:31"}],"id":2006,"name":"FunctionDefinition","src":"34129:1540:31"},{"attributes":{"documentation":"@dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses\n @param _destination address of the transaction\n @param _value ETH amount in wei\n @param _data transaction payload binary","implemented":true,"isConstructor":false,"kind":"function","name":"executeTransaction","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":2134,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2007,"name":"ElementaryTypeName","src":"35957:7:31"}],"id":2008,"name":"VariableDeclaration","src":"35957:20:31"},{"attributes":{"constant":false,"name":"_value","scope":2134,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2009,"name":"ElementaryTypeName","src":"35979:7:31"}],"id":2010,"name":"VariableDeclaration","src":"35979:14:31"},{"attributes":{"constant":false,"name":"_data","scope":2134,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2011,"name":"ElementaryTypeName","src":"35995:5:31"}],"id":2012,"name":"VariableDeclaration","src":"35995:18:31"}],"id":2013,"name":"ParameterList","src":"35956:58:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2134,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2016,"name":"ElementaryTypeName","src":"36047:5:31"}],"id":2017,"name":"VariableDeclaration","src":"36047:12:31"}],"id":2018,"name":"ParameterList","src":"36046:14:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2014,"name":"Identifier","src":"36022:15:31"}],"id":2015,"name":"ModifierInvocation","src":"36022:15:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2019,"name":"Identifier","src":"36266:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2020,"name":"Identifier","src":"36279:12:31"}],"id":2021,"name":"IndexAccess","src":"36266:26:31"}],"id":2022,"name":"UnaryOperation","src":"36265:27:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2023,"name":"Identifier","src":"36308:11:31"}],"id":2025,"name":"MemberAccess","src":"36308:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2010,"type":"uint256","value":"_value"},"id":2026,"name":"Identifier","src":"36334:6:31"}],"id":2027,"name":"FunctionCall","src":"36308:33:31"}],"id":2028,"name":"ExpressionStatement","src":"36308:33:31"}],"id":2029,"name":"Block","src":"36294:58:31"}],"id":2030,"name":"IfStatement","src":"36261:91:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":2245,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2031,"name":"ElementaryTypeNameExpression","src":"36453:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2032,"name":"Identifier","src":"36461:12:31"}],"id":2033,"name":"FunctionCall","src":"36453:21:31"}],"id":2034,"name":"MemberAccess","src":"36453:32:31"}],"id":2035,"name":"FunctionCall","src":"36453:34:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3242,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":2036,"name":"Identifier","src":"36491:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2037,"name":"Identifier","src":"36509:12:31"}],"id":2038,"name":"FunctionCall","src":"36491:31:31"}],"id":2039,"name":"BinaryOperation","src":"36453:69:31"},{"children":[{"attributes":{"assignments":[2041],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"to","scope":2103,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2040,"name":"ElementaryTypeName","src":"36625:7:31"}],"id":2041,"name":"VariableDeclaration","src":"36625:10:31"}],"id":2042,"name":"VariableDeclarationStatement","src":"36625:10:31"},{"attributes":{"assignments":[2044],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"amount","scope":2103,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2043,"name":"ElementaryTypeName","src":"36649:7:31"}],"id":2044,"name":"VariableDeclaration","src":"36649:14:31"}],"id":2045,"name":"VariableDeclarationStatement","src":"36649:14:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"address","value":"to"},"id":2046,"name":"Identifier","src":"36678:2:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2044,"type":"uint256","value":"amount"},"id":2047,"name":"Identifier","src":"36682:6:31"}],"id":2048,"name":"TupleExpression","src":"36677:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3226,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":2049,"name":"Identifier","src":"36692:27:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2050,"name":"Identifier","src":"36720:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2051,"name":"Identifier","src":"36734:5:31"}],"id":2052,"name":"FunctionCall","src":"36692:48:31"}],"id":2053,"name":"Assignment","src":"36677:63:31"}],"id":2054,"name":"ExpressionStatement","src":"36677:63:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2055,"name":"Identifier","src":"36759:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"address","value":"to"},"id":2056,"name":"Identifier","src":"36772:2:31"}],"id":2057,"name":"IndexAccess","src":"36759:16:31"}],"id":2058,"name":"UnaryOperation","src":"36758:17:31"},{"children":[{"attributes":{"assignments":[2060]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2059,"name":"ElementaryTypeName","src":"36962:7:31"}],"id":2060,"name":"VariableDeclaration","src":"36962:18:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1916,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2061,"name":"Identifier","src":"36983:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2062,"name":"Identifier","src":"36998:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2044,"type":"uint256","value":"amount"},"id":2063,"name":"Identifier","src":"37012:6:31"}],"id":2064,"name":"FunctionCall","src":"36983:36:31"}],"id":2065,"name":"VariableDeclarationStatement","src":"36962:57:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2066,"name":"Identifier","src":"37037:11:31"}],"id":2068,"name":"MemberAccess","src":"37037:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2060,"type":"uint256","value":"etherValue"},"id":2069,"name":"Identifier","src":"37063:10:31"}],"id":2070,"name":"FunctionCall","src":"37037:37:31"}],"id":2071,"name":"ExpressionStatement","src":"37037:37:31"}],"id":2072,"name":"Block","src":"36777:312:31"}],"id":2073,"name":"IfStatement","src":"36754:335:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"callOptionalReturn","referencedDeclaration":2608,"type":"function (contract ERC20,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"type(contract ERC20)","value":"ERC20"},"id":2074,"name":"Identifier","src":"37238:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2075,"name":"Identifier","src":"37244:12:31"}],"id":2076,"name":"FunctionCall","src":"37238:19:31"}],"id":2077,"name":"MemberAccess","src":"37238:38:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2078,"name":"Identifier","src":"37277:5:31"}],"id":2079,"name":"FunctionCall","src":"37238:45:31"}],"id":2080,"name":"ExpressionStatement","src":"37238:45:31"},{"attributes":{"assignments":[2082]},"children":[{"attributes":{"constant":false,"name":"b","scope":2103,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2081,"name":"ElementaryTypeName","src":"37387:5:31"}],"id":2082,"name":"VariableDeclaration","src":"37387:14:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2083,"name":"ElementaryTypeName","src":"37408:5:31"}],"id":2084,"name":"NewExpression","src":"37404:9:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2085,"name":"Literal","src":"37414:2:31"}],"id":2086,"name":"FunctionCall","src":"37404:13:31"}],"id":2087,"name":"VariableDeclarationStatement","src":"37387:30:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2082,"type":"bytes memory","value":"b"},"id":2088,"name":"Identifier","src":"37431:1:31"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2089,"name":"Literal","src":"37433:2:31"}],"id":2090,"name":"IndexAccess","src":"37431:5:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2091,"name":"Literal","src":"37439:4:31"}],"id":2092,"name":"Assignment","src":"37431:12:31"}],"id":2093,"name":"ExpressionStatement","src":"37431:12:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1367,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2094,"name":"Identifier","src":"37463:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2095,"name":"Identifier","src":"37483:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2010,"type":"uint256","value":"_value"},"id":2096,"name":"Identifier","src":"37497:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2097,"name":"Identifier","src":"37505:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2082,"type":"bytes memory","value":"b"},"id":2098,"name":"Identifier","src":"37512:1:31"}],"id":2099,"name":"FunctionCall","src":"37463:51:31"}],"id":2100,"name":"EmitStatement","src":"37458:56:31"},{"attributes":{"functionReturnParameters":2018},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2082,"type":"bytes memory","value":"b"},"id":2101,"name":"Identifier","src":"37535:1:31"}],"id":2102,"name":"Return","src":"37528:8:31"}],"id":2103,"name":"Block","src":"36524:1023:31"}],"id":2104,"name":"IfStatement","src":"36449:1098:31"},{"attributes":{"assignments":[2106,2108]},"children":[{"attributes":{"constant":false,"name":"success","scope":2133,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2105,"name":"ElementaryTypeName","src":"37558:4:31"}],"id":2106,"name":"VariableDeclaration","src":"37558:12:31"},{"attributes":{"constant":false,"name":"returndata","scope":2133,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2107,"name":"ElementaryTypeName","src":"37572:5:31"}],"id":2108,"name":"VariableDeclaration","src":"37572:23:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (bytes memory) payable returns (bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2109,"name":"Identifier","src":"37599:12:31"}],"id":2110,"name":"MemberAccess","src":"37599:17:31"}],"id":2111,"name":"MemberAccess","src":"37599:23:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2010,"type":"uint256","value":"_value"},"id":2112,"name":"Identifier","src":"37623:6:31"}],"id":2113,"name":"FunctionCall","src":"37599:31:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2114,"name":"Identifier","src":"37631:5:31"}],"id":2115,"name":"FunctionCall","src":"37599:38:31"}],"id":2116,"name":"VariableDeclarationStatement","src":"37557:80:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2117,"name":"Identifier","src":"37647:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2106,"type":"bool","value":"success"},"id":2118,"name":"Identifier","src":"37655:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":2119,"name":"ElementaryTypeNameExpression","src":"37664:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"returndata"},"id":2120,"name":"Identifier","src":"37671:10:31"}],"id":2121,"name":"FunctionCall","src":"37664:18:31"}],"id":2122,"name":"FunctionCall","src":"37647:36:31"}],"id":2123,"name":"ExpressionStatement","src":"37647:36:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1367,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2124,"name":"Identifier","src":"37699:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2008,"type":"address","value":"_destination"},"id":2125,"name":"Identifier","src":"37719:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2010,"type":"uint256","value":"_value"},"id":2126,"name":"Identifier","src":"37733:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"bytes memory","value":"_data"},"id":2127,"name":"Identifier","src":"37741:5:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"returndata"},"id":2128,"name":"Identifier","src":"37748:10:31"}],"id":2129,"name":"FunctionCall","src":"37699:60:31"}],"id":2130,"name":"EmitStatement","src":"37694:65:31"},{"attributes":{"functionReturnParameters":2018},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"returndata"},"id":2131,"name":"Identifier","src":"37846:10:31"}],"id":2132,"name":"Return","src":"37839:17:31"}],"id":2133,"name":"Block","src":"36061:1802:31"}],"id":2134,"name":"FunctionDefinition","src":"35929:1934:31"},{"attributes":{"documentation":"@dev Implements EIP-1654: receives the hashed message(bytes32)\n https://github.com/ethereum/EIPs/issues/1654.md\n @param _hashedData Hashed data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _dataHash","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2227,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hashedData","scope":2160,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2135,"name":"ElementaryTypeName","src":"38172:7:31"}],"id":2136,"name":"VariableDeclaration","src":"38172:19:31"},{"attributes":{"constant":false,"name":"_signature","scope":2160,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2137,"name":"ElementaryTypeName","src":"38193:5:31"}],"id":2138,"name":"VariableDeclaration","src":"38193:23:31"}],"id":2139,"name":"ParameterList","src":"38171:46:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2160,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2140,"name":"ElementaryTypeName","src":"38239:6:31"}],"id":2141,"name":"VariableDeclaration","src":"38239:6:31"}],"id":2142,"name":"ParameterList","src":"38238:8:31"},{"children":[{"attributes":{"assignments":[2144]},"children":[{"attributes":{"constant":false,"name":"from","scope":2159,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2143,"name":"ElementaryTypeName","src":"38257:7:31"}],"id":2144,"name":"VariableDeclaration","src":"38257:12:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"recover","referencedDeclaration":2310,"type":"function (bytes32,bytes memory) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2136,"type":"bytes32","value":"_hashedData"},"id":2145,"name":"Identifier","src":"38272:11:31"}],"id":2146,"name":"MemberAccess","src":"38272:19:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2138,"type":"bytes memory","value":"_signature"},"id":2147,"name":"Identifier","src":"38292:10:31"}],"id":2148,"name":"FunctionCall","src":"38272:31:31"}],"id":2149,"name":"VariableDeclarationStatement","src":"38257:46:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2150,"name":"Identifier","src":"38313:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3071,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2151,"name":"Identifier","src":"38321:8:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2144,"type":"address","value":"from"},"id":2152,"name":"Identifier","src":"38330:4:31"}],"id":2153,"name":"FunctionCall","src":"38321:14:31"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":2154,"name":"Literal","src":"38337:19:31"}],"id":2155,"name":"FunctionCall","src":"38313:44:31"}],"id":2156,"name":"ExpressionStatement","src":"38313:44:31"},{"attributes":{"functionReturnParameters":2142},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"bytes4","value":"_EIP_1654"},"id":2157,"name":"Identifier","src":"38374:9:31"}],"id":2158,"name":"Return","src":"38367:16:31"}],"id":2159,"name":"Block","src":"38247:143:31"}],"id":2160,"name":"FunctionDefinition","src":"38146:244:31"},{"attributes":{"documentation":"@dev Transfers the specified asset to the recipient's address.\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"transfer","scope":2227,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2226,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2161,"name":"ElementaryTypeName","src":"38685:15:31"}],"id":2162,"name":"VariableDeclaration","src":"38685:19:31"},{"attributes":{"constant":false,"name":"_asset","scope":2226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2163,"name":"ElementaryTypeName","src":"38706:7:31"}],"id":2164,"name":"VariableDeclaration","src":"38706:14:31"},{"attributes":{"constant":false,"name":"_amount","scope":2226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2165,"name":"ElementaryTypeName","src":"38722:7:31"}],"id":2166,"name":"VariableDeclaration","src":"38722:15:31"}],"id":2167,"name":"ParameterList","src":"38684:54:31"},{"attributes":{"parameters":[null]},"children":[],"id":2173,"name":"ParameterList","src":"38781:0:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2168,"name":"Identifier","src":"38746:15:31"}],"id":2169,"name":"ModifierInvocation","src":"38746:15:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1470,"type":"modifier (uint256)","value":"isNotZero"},"id":2170,"name":"Identifier","src":"38762:9:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2171,"name":"Identifier","src":"38772:7:31"}],"id":2172,"name":"ModifierInvocation","src":"38762:18:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_680f6a32e9231c9e20746c0afa2d6c3a5c617d8ed04badee4157b674b70920f8","typeString":"literal_string \"destination=0\""}],"overloadedDeclarations":[10156,10157],"referencedDeclaration":10157,"type":"function (bool,string memory) pure","value":"require"},"id":2174,"name":"Identifier","src":"38852:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"address payable","value":"_to"},"id":2175,"name":"Identifier","src":"38860:3:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2176,"name":"ElementaryTypeNameExpression","src":"38867:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2177,"name":"Literal","src":"38875:1:31"}],"id":2178,"name":"FunctionCall","src":"38867:10:31"}],"id":2179,"name":"BinaryOperation","src":"38860:17:31"},{"attributes":{"argumentTypes":null,"hexvalue":"64657374696e6174696f6e3d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"destination=0\"","value":"destination=0"},"id":2180,"name":"Literal","src":"38879:15:31"}],"id":2181,"name":"FunctionCall","src":"38852:43:31"}],"id":2182,"name":"ExpressionStatement","src":"38852:43:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":153,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2183,"name":"Identifier","src":"38984:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"address payable","value":"_to"},"id":2184,"name":"Identifier","src":"38997:3:31"}],"id":2185,"name":"IndexAccess","src":"38984:17:31"}],"id":2186,"name":"UnaryOperation","src":"38983:18:31"},{"children":[{"attributes":{"assignments":[2188]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2187,"name":"ElementaryTypeName","src":"39080:7:31"}],"id":2188,"name":"VariableDeclaration","src":"39080:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2189,"name":"Identifier","src":"39101:7:31"}],"id":2190,"name":"VariableDeclarationStatement","src":"39080:28:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2164,"type":"address","value":"_asset"},"id":2191,"name":"Identifier","src":"39205:6:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2192,"name":"ElementaryTypeNameExpression","src":"39215:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2193,"name":"Literal","src":"39223:1:31"}],"id":2194,"name":"FunctionCall","src":"39215:10:31"}],"id":2195,"name":"BinaryOperation","src":"39205:20:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2188,"type":"uint256","value":"etherValue"},"id":2196,"name":"Identifier","src":"39245:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1916,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2197,"name":"Identifier","src":"39258:14:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2164,"type":"address","value":"_asset"},"id":2198,"name":"Identifier","src":"39273:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2199,"name":"Identifier","src":"39281:7:31"}],"id":2200,"name":"FunctionCall","src":"39258:31:31"}],"id":2201,"name":"Assignment","src":"39245:44:31"}],"id":2202,"name":"ExpressionStatement","src":"39245:44:31"}],"id":2203,"name":"Block","src":"39227:77:31"}],"id":2204,"name":"IfStatement","src":"39201:103:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":718,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":871,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2205,"name":"Identifier","src":"39515:11:31"}],"id":2207,"name":"MemberAccess","src":"39515:25:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2188,"type":"uint256","value":"etherValue"},"id":2208,"name":"Identifier","src":"39541:10:31"}],"id":2209,"name":"FunctionCall","src":"39515:37:31"}],"id":2210,"name":"ExpressionStatement","src":"39515:37:31"}],"id":2211,"name":"Block","src":"39003:560:31"}],"id":2212,"name":"IfStatement","src":"38979:584:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3328,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2213,"name":"Identifier","src":"39638:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"address payable","value":"_to"},"id":2214,"name":"Identifier","src":"39652:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2164,"type":"address","value":"_asset"},"id":2215,"name":"Identifier","src":"39657:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2216,"name":"Identifier","src":"39665:7:31"}],"id":2217,"name":"FunctionCall","src":"39638:35:31"}],"id":2218,"name":"ExpressionStatement","src":"39638:35:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1401,"type":"function (address,address,uint256)","value":"Transferred"},"id":2219,"name":"Identifier","src":"39724:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"address payable","value":"_to"},"id":2220,"name":"Identifier","src":"39736:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2164,"type":"address","value":"_asset"},"id":2221,"name":"Identifier","src":"39741:6:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint256","value":"_amount"},"id":2222,"name":"Identifier","src":"39749:7:31"}],"id":2223,"name":"FunctionCall","src":"39724:33:31"}],"id":2224,"name":"EmitStatement","src":"39719:38:31"}],"id":2225,"name":"Block","src":"38781:983:31"}],"id":2226,"name":"FunctionDefinition","src":"38667:1097:31"}],"id":2227,"name":"ContractDefinition","src":"22209:17557:31"}],"id":2228,"name":"SourceUnit","src":"757:39010:31"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/mocks/tokenWhitelistableExporter/Controller.bin b/build/mocks/tokenWhitelistableExporter/Controller.bin index a69c0549..264e63ba 100644 --- a/build/mocks/tokenWhitelistableExporter/Controller.bin +++ b/build/mocks/tokenWhitelistableExporter/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/tokenWhitelistableExporter/TokenWhitelist.bin b/build/mocks/tokenWhitelistableExporter/TokenWhitelist.bin index 60f52176..5a283843 100644 --- a/build/mocks/tokenWhitelistableExporter/TokenWhitelist.bin +++ b/build/mocks/tokenWhitelistableExporter/TokenWhitelist.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/tokenWhitelistableExporter/TokenWhitelistableExporter.bin b/build/mocks/tokenWhitelistableExporter/TokenWhitelistableExporter.bin index 94a4920e..5f38eb5b 100644 --- a/build/mocks/tokenWhitelistableExporter/TokenWhitelistableExporter.bin +++ b/build/mocks/tokenWhitelistableExporter/TokenWhitelistableExporter.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b50604051610c5b380380610c5b8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03909316929092178255600155610bed90819061006e90396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023e5780637d73b23114610246578063877337b01461026a578063afc72e9314610284578063d545782e14610325578063dcc922bc14610359576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b85780633efec5e9146101de578063443dd2a4146101e6575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b0316610390565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101ce57600080fd5b50356001600160a01b03166103bb565b61010e6103c6565b6101ee6103ef565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022a578181015183820152602001610212565b505050509050019250505060405180910390f35b6101ee6103fe565b61024e610408565b604080516001600160a01b039092168252519081900360200190f35b610272610417565b60408051918252519081900360200190f35b6103026004803603604081101561029a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111600160201b831117156102f757600080fd5b50909250905061041d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103576004803603606081101561033b57600080fd5b506001600160a01b03813516906020810135906040013561046c565b005b6100d46004803603602081101561036f57600080fd5b50356001600160a01b031661047c565b600061038a82610487565b92915050565b60606000806000806000806103a4886104a1565b959e949d50929b5090995097509550909350915050565b600061038a82610633565b60606000806000806000806103d961064d565b959d949c50929a50909850965094509092509050565b60606103f96107bc565b905090565b60606103f96108cd565b6000546001600160a01b031690565b60015490565b6000806104608585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091292505050565b91509150935093915050565b610477838383610a1c565b505050565b600061038a82610aab565b600080610493836104a1565b509098975050505050505050565b60606000806000806000806104b7600154610ac4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561054957600080fd5b8101908080516040519392919084600160201b82111561056857600080fd5b90830190602082018581111561057d57600080fd5b8251600160201b81118282018810171561059657600080fd5b82525081516020918201929091019080838360005b838110156105c35781810151838201526020016105ab565b50505050905090810190601f1680156105f05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008061063f836104a1565b509198975050505050505050565b6060600080600080600080610663600154610ac4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106d857600080fd5b8101908080516040519392919084600160201b8211156106f757600080fd5b90830190602082018581111561070c57600080fd5b8251600160201b81118282018810171561072557600080fd5b82525081516020918201929091019080838360005b8381101561075257818101518382015260200161073a565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107c9600154610ac4565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b505afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083e57600080fd5b8101908080516040519392919084600160201b82111561085d57600080fd5b90830190602082018581111561087257600080fd5b82518660208202830111600160201b8211171561088e57600080fd5b82525081516020918201928201910280838360005b838110156108bb5781810151838201526020016108a3565b50505050905001604052505050905090565b60606108da600154610ac4565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b600080610920600154610ac4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561099457818101518382015260200161097c565b50505050905090810190601f1680156109c15780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6040811015610a0857600080fd5b508051602090910151909590945092505050565b610a27600154610ac4565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050505050565b600080610ab7836104a1565b5098975050505050505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b50519291505056fea265627a7a72315820c8a9bb766fbea3e09f289ae209a6d25cc23ef9106d55903a66a3bf5c3a908e3864736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b50604051610c5b380380610c5b8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03909316929092178255600155610bed90819061006e90396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023e5780637d73b23114610246578063877337b01461026a578063afc72e9314610284578063d545782e14610325578063dcc922bc14610359576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b85780633efec5e9146101de578063443dd2a4146101e6575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b0316610390565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101ce57600080fd5b50356001600160a01b03166103bb565b61010e6103c6565b6101ee6103ef565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022a578181015183820152602001610212565b505050509050019250505060405180910390f35b6101ee6103fe565b61024e610408565b604080516001600160a01b039092168252519081900360200190f35b610272610417565b60408051918252519081900360200190f35b6103026004803603604081101561029a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111600160201b831117156102f757600080fd5b50909250905061041d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103576004803603606081101561033b57600080fd5b506001600160a01b03813516906020810135906040013561046c565b005b6100d46004803603602081101561036f57600080fd5b50356001600160a01b031661047c565b600061038a82610487565b92915050565b60606000806000806000806103a4886104a1565b959e949d50929b5090995097509550909350915050565b600061038a82610633565b60606000806000806000806103d961064d565b959d949c50929a50909850965094509092509050565b60606103f96107bc565b905090565b60606103f96108cd565b6000546001600160a01b031690565b60015490565b6000806104608585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091292505050565b91509150935093915050565b610477838383610a1c565b505050565b600061038a82610aab565b600080610493836104a1565b509098975050505050505050565b60606000806000806000806104b7600154610ac4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561054957600080fd5b8101908080516040519392919084600160201b82111561056857600080fd5b90830190602082018581111561057d57600080fd5b8251600160201b81118282018810171561059657600080fd5b82525081516020918201929091019080838360005b838110156105c35781810151838201526020016105ab565b50505050905090810190601f1680156105f05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008061063f836104a1565b509198975050505050505050565b6060600080600080600080610663600154610ac4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106d857600080fd5b8101908080516040519392919084600160201b8211156106f757600080fd5b90830190602082018581111561070c57600080fd5b8251600160201b81118282018810171561072557600080fd5b82525081516020918201929091019080838360005b8381101561075257818101518382015260200161073a565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107c9600154610ac4565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b505afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083e57600080fd5b8101908080516040519392919084600160201b82111561085d57600080fd5b90830190602082018581111561087257600080fd5b82518660208202830111600160201b8211171561088e57600080fd5b82525081516020918201928201910280838360005b838110156108bb5781810151838201526020016108a3565b50505050905001604052505050905090565b60606108da600154610ac4565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b600080610920600154610ac4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561099457818101518382015260200161097c565b50505050905090810190601f1680156109c15780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6040811015610a0857600080fd5b508051602090910151909590945092505050565b610a27600154610ac4565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050505050565b600080610ab7836104a1565b5098975050505050505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b50519291505056fea265627a7a723158208d79ad83799e7c42f88edcf7f17a55faa1c8dc1456368c6cceb02d0dfb3601ce64736f6c63430005110032 \ No newline at end of file diff --git a/build/mocks/tokenWhitelistableExporter/combined.json b/build/mocks/tokenWhitelistableExporter/combined.json index 815ae586..6d0b71d4 100644 --- a/build/mocks/tokenWhitelistableExporter/combined.json +++ b/build/mocks/tokenWhitelistableExporter/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:22;;-1:-1:-1;;;;;;1543:18:22;-1:-1:-1;;;;;1543:18:22;;;-1:-1:-1;;;;1571:32:22;;;;2239:84:0;;2314:5;1571:32:22;-1:-1:-1;;;1687:15:22;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:22;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:22;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:22:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:22:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:22;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:22:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:22;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:22:-;3222:4;3245:15;-1:-1:-1;;;3245:15:22;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:22:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:22;;;;3656:57;;;;;-1:-1:-1;;;3656:57:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:22;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:22;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:22:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:22;;;;2404:57;;;;;-1:-1:-1;;;2404:57:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:22;;2534:70;;;;-1:-1:-1;;;2534:70:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:22;-1:-1:-1;;;2689:31:22;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:22;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:22;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:22;:17;;-1:-1:-1;;;;;;3032:17:22;-1:-1:-1;;;;;3032:17:22;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:22:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:22;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:24:-;-1:-1:-1;;;;;1510:20:24;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:24;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:24;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:24;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:6:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:7:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:7;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:7;-1:-1:-1;;;;;2567:10:7;;;;;;;;;;1897:2174;;5:156:-1;94:13;;112:44;94:13;112:44;;;79:82;;;;;168:285;;294:2;282:9;273:7;269:23;265:32;262:2;;;310:1;307;300:12;262:2;345:1;362:75;429:7;409:9;362:75;;;352:85;256:197;-1:-1;;;;256:197;460:91;;522:24;540:5;522:24;;558:102;;631:24;649:5;631:24;;667:121;-1:-1;;;;;729:54;;712:76;795:139;875:35;904:5;875:35;;;868:5;865:46;855:2;;925:1;922;915:12;855:2;849:85;;;1897:2174:7;;;;;;","srcmap-runtime":"1897:2174:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:13;;;;;;;;;:::i;:::-;;573:184:17;;;;;;;;;:::i;1721:953:14:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:10;;;;;;;;;:::i;:::-;;;;;;;;;612:169:16;;;;;;;;;:::i;505:166:12:-;;;;;;;;;:::i;980:228:11:-;;;;;;;;;:::i;3269:231:7:-;;;;;;;;;:::i;4901:153:13:-;;;;;;;;;:::i;974:127:17:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:13;;;;;;;;;:::i;582:292:10:-;;;;;;;;;:::i;844:101:15:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:11:-;;;;;;;;;:::i;4519:168:13:-;;;;;;;;;:::i;3703:366:7:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:13;;;;;;;;;:::i;838:108:12:-;;;;;;;;;:::i;1023:133:16:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:13;;;;;;;;;:::i;681:140:11:-;;;;;;;;;:::i;858:226:14:-;;;;;;;;;:::i;1514:127:11:-;;;;;;;;;:::i;2320:80:7:-;;;;;;;;;:::i;1107:169:17:-;1174:4;-1:-1:-1;;;;;;1197:32:17;;-1:-1:-1;;;1197:32:17;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:13:-;2932:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:13;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:13;;:18;-1:-1:-1;;3185:18:13;:15;:18;;-1:-1:-1;3185:18:13:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:13;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:13;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:13;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:13;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:13;;4052:6;;-1:-1:-1;4060:20:13;;;;-1:-1:-1;4082:17:13;4012:11;:88::i;:::-;400:1:9;;;;;2854:1263:13;;;;:::o;573:184:17:-;668:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:17;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:14:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:14;;;;;;;;;;-1:-1:-1;;;;;1849:29:14;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:14;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:14;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:14;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:14;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:14;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:14;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:14;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:14;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:14;;-1:-1:-1;2373:103:14;-1:-1:-1;2489:8:14;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:14;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:14;;-1:-1:-1;;;1721:953:14;;;;;:::o;1195:454:10:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:10;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:10;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:10;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:10;-1:-1:-1;1195:454:10;;;;;;:::o;612:169:16:-;687:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:16;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:16;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:12:-;584:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:12;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:11;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:11:o;3269:231:7:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:7;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:7;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:13:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:17:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:17;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:13:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:10:-;674:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:10;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:10;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:15:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:15;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:11;1302:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:11;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:13:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:7;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:7;-1:-1:-1;3844:6:7;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:7;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:7;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:7;;3840:199;;;-1:-1:-1;3703:366:7;;;;:::o;5193:128:13:-;5247:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:13;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:12:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:16;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:13:-;5617:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:13;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:13;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:13;;:16;-1:-1:-1;5701:4:13;;-1:-1:-1;5701:4:13;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:9;5541:225:13;;;;:::o;681:140:11:-;743:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:11;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:14:-;955:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:14;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:14;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:14;-1:-1:-1;;;;;971:43:14;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:11:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:11;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:16:-;1229:4;-1:-1:-1;;;;;;1252:34:16;;-1:-1:-1;;;1252:34:16;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:7:-;3596:3;;:15;;-1:-1:-1;;;3596:15:7;;3564:4;;;;-1:-1:-1;;;;;3596:3:7;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:7;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:7;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:7;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:7;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:7;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:8:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:6:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:13:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:13;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:13;;;;;;-1:-1:-1;;6760:43:13;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:13;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:13;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:8:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:8;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:8;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:8;;:::o;414:204:9:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:9;576:10;570:17;-1:-1:-1;;;566:36:9;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:9;87:34:-1;-1:-1;;;;;;776:20:9;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:9;743:64::o;951:169:15:-;1018:4;-1:-1:-1;;;;;;1041:32:15;;-1:-1:-1;;;1041:32:15;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:8:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:8;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:8:o;8685:393:6:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:6;87:34:-1;135:17;;-1:-1;8858:14:6;-1:-1:-1;8839:33:6;-1:-1:-1;8960:2:6;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:6;;8685:393;-1:-1:-1;;;;;8685:393:6:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:6:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:6;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:6;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:14:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:14;;:11;-1:-1:-1;;;;;2770:37:14;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:6:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:6;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:6;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:6;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:6;;513:2;499:26;489:42;;468:73::o;6035:245:13:-;6102:4;-1:-1:-1;;;;;;6125:38:13;;-1:-1:-1;;;6125:38:13;;:93;;-1:-1:-1;;;;;;;6182:36:13;;-1:-1:-1;;;6182:36:13;6125:93;:148;;;;6237:36;6261:11;1019:4:12;-1:-1:-1;;;;;;1042:40:12;;-1:-1:-1;;;1042:40:12;;:80;;;1086:36;1110:11;1714:4:11;-1:-1:-1;;;;;;1737:32:11;;-1:-1:-1;;;1737:32:11;;:71;;-1:-1:-1;;;;;;;1773:35:11;;-1:-1:-1;;;1773:35:11;1737:71;:111;;;;1812:36;1836:11;1722:4:10;-1:-1:-1;;;;;;1745:31:10;;-1:-1:-1;;;1745:31:10;;:71;;-1:-1:-1;;;;;;;;;;204:32:9;;;1780:36:10;114:129:9:o;1897:2174:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:7;;;-1:-1:-1;1897:2174:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:8:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:18:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:18:-;;;;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:19:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:24;;;;;;;","srcmap-runtime":"961:696:24:-;;;;;"},"mocks/tokenWhitelistableExporter.sol:TokenWhitelistableExporter":{"bin":"608060405234801561001057600080fd5b50604051610c5b380380610c5b8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03909316929092178255600155610bed90819061006e90396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023e5780637d73b23114610246578063877337b01461026a578063afc72e9314610284578063d545782e14610325578063dcc922bc14610359576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b85780633efec5e9146101de578063443dd2a4146101e6575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b0316610390565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101ce57600080fd5b50356001600160a01b03166103bb565b61010e6103c6565b6101ee6103ef565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022a578181015183820152602001610212565b505050509050019250505060405180910390f35b6101ee6103fe565b61024e610408565b604080516001600160a01b039092168252519081900360200190f35b610272610417565b60408051918252519081900360200190f35b6103026004803603604081101561029a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111600160201b831117156102f757600080fd5b50909250905061041d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103576004803603606081101561033b57600080fd5b506001600160a01b03813516906020810135906040013561046c565b005b6100d46004803603602081101561036f57600080fd5b50356001600160a01b031661047c565b600061038a82610487565b92915050565b60606000806000806000806103a4886104a1565b959e949d50929b5090995097509550909350915050565b600061038a82610633565b60606000806000806000806103d961064d565b959d949c50929a50909850965094509092509050565b60606103f96107bc565b905090565b60606103f96108cd565b6000546001600160a01b031690565b60015490565b6000806104608585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091292505050565b91509150935093915050565b610477838383610a1c565b505050565b600061038a82610aab565b600080610493836104a1565b509098975050505050505050565b60606000806000806000806104b7600154610ac4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561054957600080fd5b8101908080516040519392919084600160201b82111561056857600080fd5b90830190602082018581111561057d57600080fd5b8251600160201b81118282018810171561059657600080fd5b82525081516020918201929091019080838360005b838110156105c35781810151838201526020016105ab565b50505050905090810190601f1680156105f05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008061063f836104a1565b509198975050505050505050565b6060600080600080600080610663600154610ac4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106d857600080fd5b8101908080516040519392919084600160201b8211156106f757600080fd5b90830190602082018581111561070c57600080fd5b8251600160201b81118282018810171561072557600080fd5b82525081516020918201929091019080838360005b8381101561075257818101518382015260200161073a565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107c9600154610ac4565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b505afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083e57600080fd5b8101908080516040519392919084600160201b82111561085d57600080fd5b90830190602082018581111561087257600080fd5b82518660208202830111600160201b8211171561088e57600080fd5b82525081516020918201928201910280838360005b838110156108bb5781810151838201526020016108a3565b50505050905001604052505050905090565b60606108da600154610ac4565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b600080610920600154610ac4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561099457818101518382015260200161097c565b50505050905090810190601f1680156109c15780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6040811015610a0857600080fd5b508051602090910151909590945092505050565b610a27600154610ac4565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050505050565b600080610ab7836104a1565b5098975050505050505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b50519291505056fea265627a7a72315820c8a9bb766fbea3e09f289ae209a6d25cc23ef9106d55903a66a3bf5c3a908e3864736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023e5780637d73b23114610246578063877337b01461026a578063afc72e9314610284578063d545782e14610325578063dcc922bc14610359576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b85780633efec5e9146101de578063443dd2a4146101e6575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b0316610390565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101ce57600080fd5b50356001600160a01b03166103bb565b61010e6103c6565b6101ee6103ef565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022a578181015183820152602001610212565b505050509050019250505060405180910390f35b6101ee6103fe565b61024e610408565b604080516001600160a01b039092168252519081900360200190f35b610272610417565b60408051918252519081900360200190f35b6103026004803603604081101561029a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111600160201b831117156102f757600080fd5b50909250905061041d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103576004803603606081101561033b57600080fd5b506001600160a01b03813516906020810135906040013561046c565b005b6100d46004803603602081101561036f57600080fd5b50356001600160a01b031661047c565b600061038a82610487565b92915050565b60606000806000806000806103a4886104a1565b959e949d50929b5090995097509550909350915050565b600061038a82610633565b60606000806000806000806103d961064d565b959d949c50929a50909850965094509092509050565b60606103f96107bc565b905090565b60606103f96108cd565b6000546001600160a01b031690565b60015490565b6000806104608585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091292505050565b91509150935093915050565b610477838383610a1c565b505050565b600061038a82610aab565b600080610493836104a1565b509098975050505050505050565b60606000806000806000806104b7600154610ac4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561054957600080fd5b8101908080516040519392919084600160201b82111561056857600080fd5b90830190602082018581111561057d57600080fd5b8251600160201b81118282018810171561059657600080fd5b82525081516020918201929091019080838360005b838110156105c35781810151838201526020016105ab565b50505050905090810190601f1680156105f05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008061063f836104a1565b509198975050505050505050565b6060600080600080600080610663600154610ac4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106d857600080fd5b8101908080516040519392919084600160201b8211156106f757600080fd5b90830190602082018581111561070c57600080fd5b8251600160201b81118282018810171561072557600080fd5b82525081516020918201929091019080838360005b8381101561075257818101518382015260200161073a565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107c9600154610ac4565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b505afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083e57600080fd5b8101908080516040519392919084600160201b82111561085d57600080fd5b90830190602082018581111561087257600080fd5b82518660208202830111600160201b8211171561088e57600080fd5b82525081516020918201928201910280838360005b838110156108bb5781810151838201526020016108a3565b50505050905001604052505050905090565b60606108da600154610ac4565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b600080610920600154610ac4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561099457818101518382015260200161097c565b50505050905090810190601f1680156109c15780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6040811015610a0857600080fd5b508051602090910151909590945092505050565b610a27600154610ac4565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050505050565b600080610ab7836104a1565b5098975050505050505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b50519291505056fea265627a7a72315820c8a9bb766fbea3e09f289ae209a6d25cc23ef9106d55903a66a3bf5c3a908e3864736f6c63430005110032","srcmap":"115:1486:25:-;;;194:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;194:128:25;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;194:128:25;;;;;;;1242:12:21;:23;;-1:-1:-1;;;;;;1242:23:21;-1:-1:-1;;;;;1242:23:21;;;;;;;;;-1:-1:-1;1341:42:23;115:1486:25;;;;;;;;","srcmap-runtime":"115:1486:25:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:1486:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1251:110:25;-1:-1:-1;;;;;1251:110:25;;:::i;:::-;;;;;;;;;;;;;;;;;;328:158;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;328:158:25;-1:-1:-1;;;;;328:158:25;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;328:158:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1367:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1367:112:25;-1:-1:-1;;;;;1367:112:25;;:::i;492:156::-;;;:::i;654:114::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;654:114:25;;;;;;;;;;;;;;;;;774:112;;;:::i;1364:91:21:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:21;;;;;;;;;;;;;;1514:105:23;;;:::i;:::-;;;;;;;;;;;;;;;;1052:193:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;1052:193:25;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1052:193:25;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1052:193:25;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1052:193:25;;-1:-1:-1;1052:193:25;-1:-1:-1;1052:193:25;:::i;:::-;;;;-1:-1:-1;;;;;1052:193:25;;;;;;;;;;;;;;;;;;;;;892:154;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;892:154:25;;;;;;;;;;;;;:::i;:::-;;1485:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1485:114:25;-1:-1:-1;;;;;1485:114:25;;:::i;1251:110::-;1311:4;1334:20;1351:2;1334:16;:20::i;:::-;1327:27;1251:110;-1:-1:-1;;1251:110:25:o;328:158::-;385:13;400:7;409;418:4;424;430;436:7;462:17;476:2;462:13;:17::i;:::-;455:24;;;;-1:-1:-1;455:24:25;;-1:-1:-1;455:24:25;;-1:-1:-1;455:24:25;-1:-1:-1;455:24:25;-1:-1:-1;455:24:25;;-1:-1:-1;328:158:25;-1:-1:-1;;328:158:25:o;1367:112::-;1428:4;1451:21;1469:2;1451:17;:21::i;492:156::-;544:13;559:7;568;577:4;583;589;595:7;621:20;:18;:20::i;:::-;614:27;;;;-1:-1:-1;614:27:25;;-1:-1:-1;614:27:25;;-1:-1:-1;614:27:25;-1:-1:-1;614:27:25;-1:-1:-1;614:27:25;;-1:-1:-1;492:156:25;-1:-1:-1;492:156:25:o;654:114::-;706:16;741:20;:18;:20::i;:::-;734:27;;654:114;:::o;774:112::-;825:16;860:19;:17;:19::i;1364:91:21:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:21;1364:91;:::o;1514:105:23:-;1593:19;;1514:105;:::o;1052:193:25:-;1155:7;1164;1190:48;1218:12;1232:5;;1190:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1190:27:25;;-1:-1:-1;;;1190:48:25:i;:::-;1183:55;;;;1052:193;;;;;;:::o;892:154::-;995:44;1012:6;1020:5;1027:11;995:16;:44::i;:::-;892:154;;;:::o;1485:114::-;1547:4;1570:22;1589:2;1570:18;:22::i;5161:156:23:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:23;;5161:156;-1:-1:-1;;;;;;;;5161:156:23:o;2171:208::-;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:23;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:23;-1:-1:-1;;;;;2306:66:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:23;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:23;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:23;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:23;;420:4:-1;411:14;;;;2306:66:23;;;;;411:14:-1;2306:66:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:23;;-1:-1:-1;2306:66:23;;-1:-1:-1;2306:66:23;-1:-1:-1;2306:66:23;-1:-1:-1;2306:66:23;-1:-1:-1;2306:66:23;;-1:-1:-1;;;2171:208:23;;;;;;;;;:::o;4644:159::-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:23;;4644:159;-1:-1:-1;;;;;;;;4644:159:23:o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:23;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:23;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:23;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:23;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:23;;420:4:-1;411:14;;;;3017:69:23;;;;;411:14:-1;3017:69:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:23;;-1:-1:-1;3017:69:23;-1:-1:-1;3017:69:23;-1:-1:-1;3017:69:23;;-1:-1:-1;3017:69:23;;-1:-1:-1;2887:206:23;;-1:-1:-1;;;2887:206:23:o;3220:164::-;3273:16;3324:32;3336:19;;3324:11;:32::i;:::-;-1:-1:-1;;;;;3308:67:23;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:69:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3308:69:23;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3308:69:23;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3308:69:23;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3308:69:23;;421:4:-1;412:14;;;;3308:69:23;;;;;412:14:-1;3308:69:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3308:69:23;;;;;;;;;;;3301:76;;3220:164;:::o;3511:162::-;3563:16;3614:32;3626:19;;3614:11;:32::i;:::-;-1:-1:-1;;;;;3598:66:23;;:68;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;4305:241:23;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;-1:-1:-1;;;;;4442:76:23;;4519:12;4533:5;4442:97;;;;;;;;;;;;;-1:-1:-1;;;;;4442:97:23;-1:-1:-1;;;;;4442:97:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:23;;;;;;;;;;;-1:-1:-1;4305:241:23;-1:-1:-1;;;4305:241:23:o;3950:197::-;4063:32;4075:19;;4063:11;:32::i;:::-;-1:-1:-1;;;;;4047:65:23;;4113:6;4121:5;4128:11;4047:93;;;;;;;;;;;;;-1:-1:-1;;;;;4047:93:23;-1:-1:-1;;;;;4047:93:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4047:93:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4047:93:23;;;;3950:197;;;:::o;4903:162::-;4966:4;4993:15;5014:17;5028:2;5014:13;:17::i;:::-;-1:-1:-1;4982:49:23;4903:162;-1:-1:-1;;;;;;;;4903:162:23:o;1631:153:21:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:21;;;;;;;;;;-1:-1:-1;;;;;1735:12:21;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:21;1716:61;;;-1:-1:-1;;;1716:61:21;;;;;;;;;;-1:-1:-1;;;;;1716:54:21;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:21;;1631:153;-1:-1:-1;;1631:153:21:o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","srcmap":"1939:14907:26:-;;;1122:66:20;1272:58;;4758:506:26;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:26;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:26;;;;;;;;;;;;;;;1242:12:21;:23;;-1:-1:-1;;;;;;1242:23:21;-1:-1:-1;;;;;1242:23:21;;;;;4758:506:26;;;;;1665:30:20;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:26;:26;;;;-1:-1:-1;4995:11:26;:33;;-1:-1:-1;;;;;4995:33:26;;;-1:-1:-1;;;;;;4995:33:26;;;;;;;;;-1:-1:-1;5083:18:26;:28;;;:35;;-1:-1:-1;;5083:35:26;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:26;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:26;-1:-1:-1;;;;;;16070:136:26;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:26;-1:-1:-1;;;;;13314:334:26;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:26;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;-1:-1:-1;6040:1806:26;-1:-1:-1;6040:1806:26;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:26;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:26;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:26;;-1:-1:-1;;;;;15695:220:26;;;;;-1:-1:-1;;;;;;15695:220:26;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:26;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:26;;-1:-1:-1;7973:1237:26;-1:-1:-1;7973:1237:26;:::i;1364:91:21:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:21;;;;;;;;;;;;;;16755:89:26;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:26;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:26;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:26;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:26;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:26;;-1:-1:-1;9368:1399:26;-1:-1:-1;9368:1399:26;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:26;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:26;;;;;;;;;;;;;:::i;2169:95:20:-;;;:::i;16551:89:26:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:26;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:26;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:26;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;6389:33:26;;;:88;;;;-1:-1:-1;6442:35:26;;;6389:88;:142;;;;-1:-1:-1;6497:34:26;;;6389:142;:196;;;;-1:-1:-1;6551:34:26;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:26;6841:25;;-1:-1:-1;6841:25:26;;;;;;;;-1:-1:-1;6841:25:26;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:26;-1:-1:-1;;;;;7084:25:26;-1:-1:-1;;;;;7084:25:26;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:26;;;;;-1:-1:-1;;7084:306:26;;;-1:-1:-1;;7084:306:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:26;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:26;-1:-1:-1;;;;;7486:10:26;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:26;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:26;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:26;-1:-1:-1;;;;;7742:87:26;;;;;;-1:-1:-1;;;;;7742:87:26;-1:-1:-1;;;;;7742:87:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:26;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:26;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:26;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:26;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:26;-1:-1:-1;15069:72:26;-1:-1:-1;15151:23:26;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:26;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:26;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:26;;;-1:-1:-1;;;;;15364:44:26;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:26;;15188:283;;;-1:-1:-1;15487:19:26;;-1:-1:-1;;14990:523:26;:::o;11299:398::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:26;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:26;;;;;;;;;;;;-1:-1:-1;;;11432:66:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:26;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:26;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:26;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:26;;;;;;;;;;;;-1:-1:-1;;;15798:62:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:26;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:26:o;7973:1237::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;8160:9:26;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:26;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:26;;8363:65;;;;;-1:-1:-1;;;8363:65:26;;;;;;;;;;;;-1:-1:-1;;;8363:65:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:26;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:26;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:26;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:26;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:26;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:26;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:26;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:26;;;;;-1:-1:-1;;;;;8926:76:26;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:26;:27;;;;;-1:-1:-1;;9075:27:26;;;:::i;:::-;-1:-1:-1;9162:31:26;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:26;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:26;;8155:1049;;;;7973:1237;;:::o;1364:91:21:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:21;1364:91;:::o;16755:89:26:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:26;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:26;;;;;;;;;;;;-1:-1:-1;;;10969:66:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:26;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:26;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;12676:35:26;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:26;;:23;-1:-1:-1;;9801:23:26;:20;:23;;-1:-1:-1;9801:23:26:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:26;;;;;;;;;;;;-1:-1:-1;;;9877:72:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:26;;-1:-1:-1;;;10048:18:26;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:26;;:24;-1:-1:-1;;10141:24:26;:21;:24;;-1:-1:-1;10141:24:26:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:26;;-1:-1:-1;;;10187:27:26;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:26;;:34;-1:-1:-1;;10400:34:26;:21;:34;;-1:-1:-1;10400:34:26:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:26;;:34;-1:-1:-1;;10436:34:26;:21;:34;;-1:-1:-1;10436:34:26:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:26;;:29;-1:-1:-1;;10689:29:26;:21;:29;;-1:-1:-1;10689:29:26:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:26;;:29;-1:-1:-1;;10720:29:26;:21;:29;;-1:-1:-1;10720:29:26:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:26;-1:-1:-1;;;;;5399:27:26;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:26;;;;;;;;;;;;-1:-1:-1;;;5367:86:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:26;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:26;;;;;;;;;;;;-1:-1:-1;;;12130:66:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:26;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:20:-;2242:15;;2169:95;:::o;16551:89:26:-;16622:11;;-1:-1:-1;;;;;16622:11:26;16551:89;:::o;2554:148:20:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:20;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:20;-1:-1:-1;;;;;2636:59:20;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:20;;2554:148;-1:-1:-1;;2554:148:20:o;4943:370:18:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:18:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:18;87:34:-1;135:17;;-1:-1;5912:21:18;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:18;5807:265;-1:-1:-1;;5807:265:18:o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:24:-;-1:-1:-1;;;;;1510:20:24;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:24;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:24;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:24;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:19:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:19;;;;;;;;;;;;-1:-1:-1;;;1726:60:19;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:19:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:19;;;;;;;;;;;;-1:-1:-1;;;1182:61:19;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:19:o;1631:153:21:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:21;;;;;;;;;;-1:-1:-1;;;;;1735:12:21;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:21;1716:61;;;-1:-1:-1;;;1716:61:21;;;;;;;;;;-1:-1:-1;;;;;1716:54:21;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:18;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:18;4078:48;;-1:-1:-1;3968:170:18;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:18;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:18;4378:24;;-1:-1:-1;4293:121:18;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:18;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:18:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:18;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:18;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:26;;;-1:-1:-1;1939:14907:26;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","mocks/tokenWhitelistableExporter.sol","tokenWhitelist.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[6231],"IController":[5796]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":5779,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":7382,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":6232,"symbolAliases":[null],"unitAlias":""},"id":5780,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":5091,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":6232,"symbolAliases":[null],"unitAlias":""},"id":5781,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[5796],"name":"IController","scope":6232},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":5796,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5788,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5782,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":5783,"name":"VariableDeclaration","src":"1015:7:0"}],"id":5784,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5788,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5785,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":5786,"name":"VariableDeclaration","src":"1047:4:0"}],"id":5787,"name":"ParameterList","src":"1046:6:0"}],"id":5788,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":5796,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5795,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5789,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":5790,"name":"VariableDeclaration","src":"1076:7:0"}],"id":5791,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5795,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5792,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":5793,"name":"VariableDeclaration","src":"1108:4:0"}],"id":5794,"name":"ParameterList","src":"1107:6:0"}],"id":5795,"name":"FunctionDefinition","src":"1059:55:0"}],"id":5796,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[5090,5796,7381],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[6231,5090,7381,5796],"name":"Controller","scope":6232},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":5796,"type":"contract IController"},"id":5797,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":5798,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":7381,"type":"contract Ownable"},"id":5799,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":5800,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":5090,"type":"contract Transferrable"},"id":5801,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":5802,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5808,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5803,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":5804,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":5808,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5805,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":5806,"name":"VariableDeclaration","src":"1564:19:0"}],"id":5807,"name":"ParameterList","src":"1546:38:0"}],"id":5808,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5814,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5809,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":5810,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":5814,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5811,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":5812,"name":"VariableDeclaration","src":"1631:19:0"}],"id":5813,"name":"ParameterList","src":"1613:38:0"}],"id":5814,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5820,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5815,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":5816,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":5820,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5817,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":5818,"name":"VariableDeclaration","src":"1692:14:0"}],"id":5819,"name":"ParameterList","src":"1674:33:0"}],"id":5820,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5826,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5821,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":5822,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":5826,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5823,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":5824,"name":"VariableDeclaration","src":"1749:14:0"}],"id":5825,"name":"ParameterList","src":"1731:33:0"}],"id":5826,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":5834,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5827,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":5828,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":5834,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5829,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":5830,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":5834,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5831,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":5832,"name":"VariableDeclaration","src":"1814:15:0"}],"id":5833,"name":"ParameterList","src":"1784:46:0"}],"id":5834,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5838,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5835,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":5836,"name":"VariableDeclaration","src":"1851:15:0"}],"id":5837,"name":"ParameterList","src":"1850:17:0"}],"id":5838,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5839,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":5840,"name":"VariableDeclaration","src":"1887:15:0"}],"id":5841,"name":"ParameterList","src":"1886:17:0"}],"id":5842,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":6231,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":5843,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":5844,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":5845,"name":"Mapping","src":"1910:24:0"}],"id":5846,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":6231,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5847,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":5848,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":6231,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":5849,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":5850,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":5851,"name":"Mapping","src":"1991:24:0"}],"id":5852,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":6231,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5853,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":5854,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":6231,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5855,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":5856,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":5866,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5857,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":5858,"name":"VariableDeclaration","src":"2251:30:0"}],"id":5859,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":5864,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7381,"type":"type(contract Ownable)","value":"Ownable"},"id":5860,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5858,"type":"address payable","value":"_ownerAddress_"},"id":5861,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":5862,"name":"Literal","src":"2314:5:0"}],"id":5863,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":5865,"name":"Block","src":"2321:2:0"}],"id":5866,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5867,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":5868,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":5869,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":5870,"name":"Identifier","src":"2431:3:0"}],"id":5871,"name":"MemberAccess","src":"2431:10:0"}],"id":5872,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":5873,"name":"Literal","src":"2444:24:0"}],"id":5874,"name":"FunctionCall","src":"2414:55:0"}],"id":5875,"name":"ExpressionStatement","src":"2414:55:0"},{"id":5876,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":5877,"name":"Block","src":"2404:83:0"}],"id":5878,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5879,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":5880,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7380,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":5881,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":5882,"name":"Identifier","src":"2588:3:0"}],"id":5883,"name":"MemberAccess","src":"2588:10:0"}],"id":5884,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":5885,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":5886,"name":"Identifier","src":"2612:3:0"}],"id":5887,"name":"MemberAccess","src":"2612:10:0"}],"id":5888,"name":"IndexAccess","src":"2603:20:0"}],"id":5889,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":5890,"name":"Literal","src":"2625:24:0"}],"id":5891,"name":"FunctionCall","src":"2571:79:0"}],"id":5892,"name":"ExpressionStatement","src":"2571:79:0"},{"id":5893,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":5894,"name":"Block","src":"2561:107:0"}],"id":5895,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5896,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":5897,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":6010,"type":"function () view returns (bool)","value":"isStopped"},"id":5898,"name":"Identifier","src":"2762:9:0"}],"id":5899,"name":"FunctionCall","src":"2762:11:0"}],"id":5900,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":5901,"name":"Literal","src":"2775:23:0"}],"id":5902,"name":"FunctionCall","src":"2753:46:0"}],"id":5903,"name":"ExpressionStatement","src":"2753:46:0"},{"id":5904,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":5905,"name":"Block","src":"2743:74:0"}],"id":5906,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5920,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5907,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":5908,"name":"VariableDeclaration","src":"2958:16:0"}],"id":5909,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":5914,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":5910,"name":"Identifier","src":"2985:9:0"}],"id":5911,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":5912,"name":"Identifier","src":"2995:10:0"}],"id":5913,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6064,"type":"function (address)","value":"_addAdmin"},"id":5915,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5908,"type":"address","value":"_account"},"id":5916,"name":"Identifier","src":"3026:8:0"}],"id":5917,"name":"FunctionCall","src":"3016:19:0"}],"id":5918,"name":"ExpressionStatement","src":"3016:19:0"}],"id":5919,"name":"Block","src":"3006:36:0"}],"id":5920,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5932,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5921,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":5922,"name":"VariableDeclaration","src":"3192:16:0"}],"id":5923,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":5926,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":5924,"name":"Identifier","src":"3219:9:0"}],"id":5925,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6092,"type":"function (address)","value":"_removeAdmin"},"id":5927,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5922,"type":"address","value":"_account"},"id":5928,"name":"Identifier","src":"3252:8:0"}],"id":5929,"name":"FunctionCall","src":"3239:22:0"}],"id":5930,"name":"ExpressionStatement","src":"3239:22:0"}],"id":5931,"name":"Block","src":"3229:39:0"}],"id":5932,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":6231,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5933,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5940,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5934,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":5935,"name":"VariableDeclaration","src":"3365:7:0"}],"id":5936,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":5936},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"_adminCount"},"id":5937,"name":"Identifier","src":"3391:11:0"}],"id":5938,"name":"Return","src":"3384:18:0"}],"id":5939,"name":"Block","src":"3374:35:0"}],"id":5940,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5954,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5941,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":5942,"name":"VariableDeclaration","src":"3570:16:0"}],"id":5943,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":5948,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":5944,"name":"Identifier","src":"3597:16:0"}],"id":5945,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":5946,"name":"Identifier","src":"3614:10:0"}],"id":5947,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6146,"type":"function (address)","value":"_addController"},"id":5949,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5942,"type":"address","value":"_account"},"id":5950,"name":"Identifier","src":"3650:8:0"}],"id":5951,"name":"FunctionCall","src":"3635:24:0"}],"id":5952,"name":"ExpressionStatement","src":"3635:24:0"}],"id":5953,"name":"Block","src":"3625:41:0"}],"id":5954,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5966,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5955,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":5956,"name":"VariableDeclaration","src":"3836:16:0"}],"id":5957,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":5960,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":5958,"name":"Identifier","src":"3863:16:0"}],"id":5959,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6174,"type":"function (address)","value":"_removeController"},"id":5961,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5956,"type":"address","value":"_account"},"id":5962,"name":"Identifier","src":"3908:8:0"}],"id":5963,"name":"FunctionCall","src":"3890:27:0"}],"id":5964,"name":"ExpressionStatement","src":"3890:27:0"}],"id":5965,"name":"Block","src":"3880:44:0"}],"id":5966,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":6231,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5967,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5968,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":5969,"name":"VariableDeclaration","src":"4069:7:0"}],"id":5970,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":5970},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"uint256","value":"_controllerCount"},"id":5971,"name":"Identifier","src":"4095:16:0"}],"id":5972,"name":"Return","src":"4088:23:0"}],"id":5973,"name":"Block","src":"4078:40:0"}],"id":5974,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":6231,"stateMutability":"view","superFunction":5795,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5988,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5975,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":5976,"name":"VariableDeclaration","src":"4239:16:0"}],"id":5977,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5988,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5980,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":5981,"name":"VariableDeclaration","src":"4291:4:0"}],"id":5982,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":5978,"name":"Identifier","src":"4271:10:0"}],"id":5979,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":5982},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":5983,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5976,"type":"address","value":"_account"},"id":5984,"name":"Identifier","src":"4323:8:0"}],"id":5985,"name":"IndexAccess","src":"4314:18:0"}],"id":5986,"name":"Return","src":"4307:25:0"}],"id":5987,"name":"Block","src":"4297:42:0"}],"id":5988,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":6231,"stateMutability":"view","superFunction":5788,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6002,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5989,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":5990,"name":"VariableDeclaration","src":"4473:16:0"}],"id":5991,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":6002,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5994,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":5995,"name":"VariableDeclaration","src":"4525:4:0"}],"id":5996,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":5992,"name":"Identifier","src":"4505:10:0"}],"id":5993,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":5996},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":5997,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5990,"type":"address","value":"_account"},"id":5998,"name":"Identifier","src":"4562:8:0"}],"id":5999,"name":"IndexAccess","src":"4548:23:0"}],"id":6000,"name":"Return","src":"4541:30:0"}],"id":6001,"name":"Block","src":"4531:47:0"}],"id":6002,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":6231,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6003,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":6010,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6004,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":6005,"name":"VariableDeclaration","src":"4766:4:0"}],"id":6006,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":6006},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5856,"type":"bool","value":"_stopped"},"id":6007,"name":"Identifier","src":"4789:8:0"}],"id":6008,"name":"Return","src":"4782:15:0"}],"id":6009,"name":"Block","src":"4772:32:0"}],"id":6010,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6064,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6011,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":6012,"name":"VariableDeclaration","src":"4891:16:0"}],"id":6013,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":6014,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6015,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6016,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6017,"name":"Identifier","src":"4945:8:0"}],"id":6018,"name":"IndexAccess","src":"4936:18:0"}],"id":6019,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":6020,"name":"Literal","src":"4956:38:0"}],"id":6021,"name":"FunctionCall","src":"4927:68:0"}],"id":6022,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6023,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6024,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6025,"name":"Identifier","src":"5028:8:0"}],"id":6026,"name":"IndexAccess","src":"5014:23:0"}],"id":6027,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":6028,"name":"Literal","src":"5039:42:0"}],"id":6029,"name":"FunctionCall","src":"5005:77:0"}],"id":6030,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6031,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":7380,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":6032,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6033,"name":"Identifier","src":"5110:8:0"}],"id":6034,"name":"FunctionCall","src":"5101:18:0"}],"id":6035,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":6036,"name":"Literal","src":"5121:39:0"}],"id":6037,"name":"FunctionCall","src":"5092:69:0"}],"id":6038,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6039,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6040,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6041,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6042,"name":"Literal","src":"5199:1:0"}],"id":6043,"name":"FunctionCall","src":"5191:10:0"}],"id":6044,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":6045,"name":"Literal","src":"5203:38:0"}],"id":6046,"name":"FunctionCall","src":"5171:71:0"}],"id":6047,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6048,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6049,"name":"Identifier","src":"5261:8:0"}],"id":6050,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6051,"name":"Literal","src":"5273:4:0"}],"id":6052,"name":"Assignment","src":"5252:25:0"}],"id":6053,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"_adminCount"},"id":6054,"name":"Identifier","src":"5287:11:0"}],"id":6055,"name":"UnaryOperation","src":"5287:13:0"}],"id":6056,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"function (address,address)","value":"AddedAdmin"},"id":6057,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6058,"name":"Identifier","src":"5326:3:0"}],"id":6059,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6060,"name":"Identifier","src":"5338:8:0"}],"id":6061,"name":"FunctionCall","src":"5315:32:0"}],"id":6062,"name":"EmitStatement","src":"5310:37:0"}],"id":6063,"name":"Block","src":"4917:437:0"}],"id":6064,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6092,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6065,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":6066,"name":"VariableDeclaration","src":"5453:16:0"}],"id":6067,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":6068,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6069,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6070,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"address","value":"_account"},"id":6071,"name":"Identifier","src":"5506:8:0"}],"id":6072,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":6073,"name":"Literal","src":"5517:34:0"}],"id":6074,"name":"FunctionCall","src":"5489:63:0"}],"id":6075,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6076,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"address","value":"_account"},"id":6077,"name":"Identifier","src":"5571:8:0"}],"id":6078,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6079,"name":"Literal","src":"5583:5:0"}],"id":6080,"name":"Assignment","src":"5562:26:0"}],"id":6081,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"_adminCount"},"id":6082,"name":"Identifier","src":"5598:11:0"}],"id":6083,"name":"UnaryOperation","src":"5598:13:0"}],"id":6084,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5826,"type":"function (address,address)","value":"RemovedAdmin"},"id":6085,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6086,"name":"Identifier","src":"5639:3:0"}],"id":6087,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"address","value":"_account"},"id":6088,"name":"Identifier","src":"5651:8:0"}],"id":6089,"name":"FunctionCall","src":"5626:34:0"}],"id":6090,"name":"EmitStatement","src":"5621:39:0"}],"id":6091,"name":"Block","src":"5479:188:0"}],"id":6092,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6146,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6093,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":6094,"name":"VariableDeclaration","src":"5764:16:0"}],"id":6095,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":6096,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6097,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6098,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6099,"name":"Identifier","src":"5818:8:0"}],"id":6100,"name":"IndexAccess","src":"5809:18:0"}],"id":6101,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":6102,"name":"Literal","src":"5829:38:0"}],"id":6103,"name":"FunctionCall","src":"5800:68:0"}],"id":6104,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6105,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6106,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6107,"name":"Identifier","src":"5901:8:0"}],"id":6108,"name":"IndexAccess","src":"5887:23:0"}],"id":6109,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":6110,"name":"Literal","src":"5912:42:0"}],"id":6111,"name":"FunctionCall","src":"5878:77:0"}],"id":6112,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6113,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":7380,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":6114,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6115,"name":"Identifier","src":"5983:8:0"}],"id":6116,"name":"FunctionCall","src":"5974:18:0"}],"id":6117,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":6118,"name":"Literal","src":"5994:39:0"}],"id":6119,"name":"FunctionCall","src":"5965:69:0"}],"id":6120,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6121,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6122,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6123,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6124,"name":"Literal","src":"6072:1:0"}],"id":6125,"name":"FunctionCall","src":"6064:10:0"}],"id":6126,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":6127,"name":"Literal","src":"6076:38:0"}],"id":6128,"name":"FunctionCall","src":"6044:71:0"}],"id":6129,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6130,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6131,"name":"Identifier","src":"6139:8:0"}],"id":6132,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6133,"name":"Literal","src":"6151:4:0"}],"id":6134,"name":"Assignment","src":"6125:30:0"}],"id":6135,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"uint256","value":"_controllerCount"},"id":6136,"name":"Identifier","src":"6165:16:0"}],"id":6137,"name":"UnaryOperation","src":"6165:18:0"}],"id":6138,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5808,"type":"function (address,address)","value":"AddedController"},"id":6139,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6140,"name":"Identifier","src":"6214:3:0"}],"id":6141,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6142,"name":"Identifier","src":"6226:8:0"}],"id":6143,"name":"FunctionCall","src":"6198:37:0"}],"id":6144,"name":"EmitStatement","src":"6193:42:0"}],"id":6145,"name":"Block","src":"5790:452:0"}],"id":6146,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6174,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6147,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":6148,"name":"VariableDeclaration","src":"6351:16:0"}],"id":6149,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":6150,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6151,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6152,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"address","value":"_account"},"id":6153,"name":"Identifier","src":"6409:8:0"}],"id":6154,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":6155,"name":"Literal","src":"6420:38:0"}],"id":6156,"name":"FunctionCall","src":"6387:72:0"}],"id":6157,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6158,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"address","value":"_account"},"id":6159,"name":"Identifier","src":"6483:8:0"}],"id":6160,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6161,"name":"Literal","src":"6495:5:0"}],"id":6162,"name":"Assignment","src":"6469:31:0"}],"id":6163,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"uint256","value":"_controllerCount"},"id":6164,"name":"Identifier","src":"6510:16:0"}],"id":6165,"name":"UnaryOperation","src":"6510:18:0"}],"id":6166,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5814,"type":"function (address,address)","value":"RemovedController"},"id":6167,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6168,"name":"Identifier","src":"6561:3:0"}],"id":6169,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"address","value":"_account"},"id":6170,"name":"Identifier","src":"6573:8:0"}],"id":6171,"name":"FunctionCall","src":"6543:39:0"}],"id":6172,"name":"EmitStatement","src":"6538:44:0"}],"id":6173,"name":"Block","src":"6377:212:0"}],"id":6174,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6175,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":6178,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":6176,"name":"Identifier","src":"6687:16:0"}],"id":6177,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5856,"type":"bool","value":"_stopped"},"id":6179,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6180,"name":"Literal","src":"6725:4:0"}],"id":6181,"name":"Assignment","src":"6714:15:0"}],"id":6182,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5838,"type":"function (address)","value":"Stopped"},"id":6183,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6184,"name":"Identifier","src":"6752:3:0"}],"id":6185,"name":"MemberAccess","src":"6752:10:0"}],"id":6186,"name":"FunctionCall","src":"6744:19:0"}],"id":6187,"name":"EmitStatement","src":"6739:24:0"}],"id":6188,"name":"Block","src":"6704:66:0"}],"id":6189,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6190,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":6193,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":6191,"name":"Identifier","src":"6845:9:0"}],"id":6192,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5856,"type":"bool","value":"_stopped"},"id":6194,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6195,"name":"Literal","src":"6876:5:0"}],"id":6196,"name":"Assignment","src":"6865:16:0"}],"id":6197,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5842,"type":"function (address)","value":"Started"},"id":6198,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6199,"name":"Identifier","src":"6904:3:0"}],"id":6200,"name":"MemberAccess","src":"6904:10:0"}],"id":6201,"name":"FunctionCall","src":"6896:19:0"}],"id":6202,"name":"EmitStatement","src":"6891:24:0"}],"id":6203,"name":"Block","src":"6855:67:0"}],"id":6204,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":6230,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":6205,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":6206,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":6230,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6207,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":6208,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":6230,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6209,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":6210,"name":"VariableDeclaration","src":"7063:15:0"}],"id":6211,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":6216,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5878,"type":"modifier ()","value":"onlyAdmin"},"id":6212,"name":"Identifier","src":"7089:9:0"}],"id":6213,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":6214,"name":"Identifier","src":"7099:10:0"}],"id":6215,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5089,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":6217,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6206,"type":"address payable","value":"_to"},"id":6218,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6208,"type":"address","value":"_asset"},"id":6219,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6210,"type":"uint256","value":"_amount"},"id":6220,"name":"Identifier","src":"7147:7:0"}],"id":6221,"name":"FunctionCall","src":"7120:35:0"}],"id":6222,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5834,"type":"function (address,address,uint256)","value":"Claimed"},"id":6223,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6206,"type":"address payable","value":"_to"},"id":6224,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6208,"type":"address","value":"_asset"},"id":6225,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6210,"type":"uint256","value":"_amount"},"id":6226,"name":"Identifier","src":"7191:7:0"}],"id":6227,"name":"FunctionCall","src":"7170:29:0"}],"id":6228,"name":"EmitStatement","src":"7165:34:0"}],"id":6229,"name":"Block","src":"7110:96:0"}],"id":6230,"name":"FunctionDefinition","src":"7011:195:0"}],"id":6231,"name":"ContractDefinition","src":"1460:5748:0"}],"id":6232,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[7400]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7383,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[7400],"name":"Address","scope":7401},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":7400,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":7399,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7384,"name":"ElementaryTypeName","src":"562:7:1"}],"id":7385,"name":"VariableDeclaration","src":"562:15:1"}],"id":7386,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":7399,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7387,"name":"ElementaryTypeName","src":"602:4:1"}],"id":7388,"name":"VariableDeclaration","src":"602:4:1"}],"id":7389,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[7391],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":7398,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7390,"name":"ElementaryTypeName","src":"805:7:1"}],"id":7391,"name":"VariableDeclaration","src":"805:12:1"}],"id":7392,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":7391,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":7385,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":7393,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":7389},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7391,"type":"uint256","value":"size"},"id":7394,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7395,"name":"Literal","src":"947:1:1"}],"id":7396,"name":"BinaryOperation","src":"940:8:1"}],"id":7397,"name":"Return","src":"933:15:1"}],"id":7398,"name":"Block","src":"608:347:1"}],"id":7399,"name":"FunctionDefinition","src":"542:413:1"}],"id":7400,"name":"ContractDefinition","src":"94:863:1"}],"id":7401,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[6284]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":6233,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[6284],"name":"ERC20","scope":6285},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":6284,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":6242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6234,"name":"ElementaryTypeName","src":"193:7:2"}],"id":6235,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":6242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6236,"name":"ElementaryTypeName","src":"209:7:2"}],"id":6237,"name":"VariableDeclaration","src":"209:16:2"}],"id":6238,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6242,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6239,"name":"ElementaryTypeName","src":"250:7:2"}],"id":6240,"name":"VariableDeclaration","src":"250:7:2"}],"id":6241,"name":"ParameterList","src":"249:9:2"}],"id":6242,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":6284,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":6251,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6243,"name":"ElementaryTypeName","src":"281:7:2"}],"id":6244,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":6251,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6245,"name":"ElementaryTypeName","src":"299:7:2"}],"id":6246,"name":"VariableDeclaration","src":"299:14:2"}],"id":6247,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6251,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6248,"name":"ElementaryTypeName","src":"333:4:2"}],"id":6249,"name":"VariableDeclaration","src":"333:4:2"}],"id":6250,"name":"ParameterList","src":"332:6:2"}],"id":6251,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":6284,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":6258,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6252,"name":"ElementaryTypeName","src":"363:7:2"}],"id":6253,"name":"VariableDeclaration","src":"363:12:2"}],"id":6254,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6258,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6255,"name":"ElementaryTypeName","src":"400:7:2"}],"id":6256,"name":"VariableDeclaration","src":"400:7:2"}],"id":6257,"name":"ParameterList","src":"399:9:2"}],"id":6258,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":6284,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6259,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6263,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6260,"name":"ElementaryTypeName","src":"460:7:2"}],"id":6261,"name":"VariableDeclaration","src":"460:7:2"}],"id":6262,"name":"ParameterList","src":"459:9:2"}],"id":6263,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":6284,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":6272,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6264,"name":"ElementaryTypeName","src":"492:7:2"}],"id":6265,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":6272,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6266,"name":"ElementaryTypeName","src":"505:7:2"}],"id":6267,"name":"VariableDeclaration","src":"505:14:2"}],"id":6268,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6272,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6269,"name":"ElementaryTypeName","src":"539:4:2"}],"id":6270,"name":"VariableDeclaration","src":"539:4:2"}],"id":6271,"name":"ParameterList","src":"538:6:2"}],"id":6272,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":6284,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":6283,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6273,"name":"ElementaryTypeName","src":"572:7:2"}],"id":6274,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":6283,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6275,"name":"ElementaryTypeName","src":"587:7:2"}],"id":6276,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":6283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6277,"name":"ElementaryTypeName","src":"600:7:2"}],"id":6278,"name":"VariableDeclaration","src":"600:14:2"}],"id":6279,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6283,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6280,"name":"ElementaryTypeName","src":"634:4:2"}],"id":6281,"name":"VariableDeclaration","src":"634:4:2"}],"id":6282,"name":"ParameterList","src":"633:6:2"}],"id":6283,"name":"FunctionDefinition","src":"550:90:2"}],"id":6284,"name":"ContractDefinition","src":"152:490:2"}],"id":6285,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[6503]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6286,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":6285,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":6504,"symbolAliases":[null],"unitAlias":""},"id":6287,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":3138,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":6504,"symbolAliases":[null],"unitAlias":""},"id":6288,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":7401,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":6504,"symbolAliases":[null],"unitAlias":""},"id":6289,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[6503],"name":"SafeERC20","scope":6504},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3137,"type":"library SafeMath"},"id":6290,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":6291,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":6292,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":7400,"type":"library Address"},"id":6293,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6294,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":6295,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6317,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6296,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":6297,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":6317,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6298,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":6299,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":6317,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6300,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":6301,"name":"VariableDeclaration","src":"1850:13:3"}],"id":6302,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":6303,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6304,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"contract ERC20","value":"token"},"id":6305,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6306,"name":"Identifier","src":"1910:3:3"}],"id":6307,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":6272,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"contract ERC20","value":"token"},"id":6308,"name":"Identifier","src":"1933:5:3"}],"id":6309,"name":"MemberAccess","src":"1933:14:3"}],"id":6310,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6299,"type":"address","value":"to"},"id":6311,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6301,"type":"uint256","value":"value"},"id":6312,"name":"Identifier","src":"1962:5:3"}],"id":6313,"name":"FunctionCall","src":"1910:58:3"}],"id":6314,"name":"FunctionCall","src":"1884:85:3"}],"id":6315,"name":"ExpressionStatement","src":"1884:85:3"}],"id":6316,"name":"Block","src":"1874:102:3"}],"id":6317,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6342,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6318,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":6319,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":6342,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6320,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":6321,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":6342,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6322,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":6323,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":6342,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6324,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":6325,"name":"VariableDeclaration","src":"2047:13:3"}],"id":6326,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":6327,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6328,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6319,"type":"contract ERC20","value":"token"},"id":6329,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6330,"name":"Identifier","src":"2107:3:3"}],"id":6331,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":6283,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6319,"type":"contract ERC20","value":"token"},"id":6332,"name":"Identifier","src":"2130:5:3"}],"id":6333,"name":"MemberAccess","src":"2130:18:3"}],"id":6334,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6321,"type":"address","value":"from"},"id":6335,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6323,"type":"address","value":"to"},"id":6336,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"uint256","value":"value"},"id":6337,"name":"Identifier","src":"2169:5:3"}],"id":6338,"name":"FunctionCall","src":"2107:68:3"}],"id":6339,"name":"FunctionCall","src":"2081:95:3"}],"id":6340,"name":"ExpressionStatement","src":"2081:95:3"}],"id":6341,"name":"Block","src":"2071:112:3"}],"id":6342,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6383,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6343,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":6344,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":6383,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6345,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":6346,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":6383,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6347,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":6348,"name":"VariableDeclaration","src":"2240:13:3"}],"id":6349,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":6350,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6351,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6348,"type":"uint256","value":"value"},"id":6352,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6353,"name":"Literal","src":"2562:1:3"}],"id":6354,"name":"BinaryOperation","src":"2553:10:3"}],"id":6355,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":6242,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6344,"type":"contract ERC20","value":"token"},"id":6356,"name":"Identifier","src":"2569:5:3"}],"id":6357,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$6503","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6358,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7437,"type":"library SafeERC20","value":"this"},"id":6359,"name":"Identifier","src":"2593:4:3"}],"id":6360,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6346,"type":"address","value":"spender"},"id":6361,"name":"Identifier","src":"2600:7:3"}],"id":6362,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6363,"name":"Literal","src":"2612:1:3"}],"id":6364,"name":"BinaryOperation","src":"2569:44:3"}],"id":6365,"name":"TupleExpression","src":"2568:46:3"}],"id":6366,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":6367,"name":"Literal","src":"2628:56:3"}],"id":6368,"name":"FunctionCall","src":"2544:150:3"}],"id":6369,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6370,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6344,"type":"contract ERC20","value":"token"},"id":6371,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6372,"name":"Identifier","src":"2730:3:3"}],"id":6373,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":6251,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6344,"type":"contract ERC20","value":"token"},"id":6374,"name":"Identifier","src":"2753:5:3"}],"id":6375,"name":"MemberAccess","src":"2753:13:3"}],"id":6376,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6346,"type":"address","value":"spender"},"id":6377,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6348,"type":"uint256","value":"value"},"id":6378,"name":"Identifier","src":"2786:5:3"}],"id":6379,"name":"FunctionCall","src":"2730:62:3"}],"id":6380,"name":"FunctionCall","src":"2704:89:3"}],"id":6381,"name":"ExpressionStatement","src":"2704:89:3"}],"id":6382,"name":"Block","src":"2264:536:3"}],"id":6383,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6418,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6384,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":6385,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":6418,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6386,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":6387,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":6418,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6388,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":6389,"name":"VariableDeclaration","src":"2867:13:3"}],"id":6390,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":6391,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[6393]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":6417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6392,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":6393,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":6242,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"contract ERC20","value":"token"},"id":6394,"name":"Identifier","src":"2924:5:3"}],"id":6395,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$6503","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6396,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7437,"type":"library SafeERC20","value":"this"},"id":6397,"name":"Identifier","src":"2948:4:3"}],"id":6398,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"address","value":"spender"},"id":6399,"name":"Identifier","src":"2955:7:3"}],"id":6400,"name":"FunctionCall","src":"2924:39:3"}],"id":6401,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6389,"type":"uint256","value":"value"},"id":6402,"name":"Identifier","src":"2968:5:3"}],"id":6403,"name":"FunctionCall","src":"2924:50:3"}],"id":6404,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6405,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"contract ERC20","value":"token"},"id":6406,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6407,"name":"Identifier","src":"3010:3:3"}],"id":6408,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":6251,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"contract ERC20","value":"token"},"id":6409,"name":"Identifier","src":"3033:5:3"}],"id":6410,"name":"MemberAccess","src":"3033:13:3"}],"id":6411,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"address","value":"spender"},"id":6412,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"uint256","value":"newAllowance"},"id":6413,"name":"Identifier","src":"3066:12:3"}],"id":6414,"name":"FunctionCall","src":"3010:69:3"}],"id":6415,"name":"FunctionCall","src":"2984:96:3"}],"id":6416,"name":"ExpressionStatement","src":"2984:96:3"}],"id":6417,"name":"Block","src":"2891:196:3"}],"id":6418,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6453,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6419,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":6420,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":6453,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6421,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":6422,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":6453,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6423,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":6424,"name":"VariableDeclaration","src":"3154:13:3"}],"id":6425,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":6426,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[6428]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":6452,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6427,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":6428,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3056,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":6242,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"contract ERC20","value":"token"},"id":6429,"name":"Identifier","src":"3211:5:3"}],"id":6430,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$6503","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6431,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7437,"type":"library SafeERC20","value":"this"},"id":6432,"name":"Identifier","src":"3235:4:3"}],"id":6433,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6422,"type":"address","value":"spender"},"id":6434,"name":"Identifier","src":"3242:7:3"}],"id":6435,"name":"FunctionCall","src":"3211:39:3"}],"id":6436,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6424,"type":"uint256","value":"value"},"id":6437,"name":"Identifier","src":"3255:5:3"}],"id":6438,"name":"FunctionCall","src":"3211:50:3"}],"id":6439,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6440,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"contract ERC20","value":"token"},"id":6441,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6442,"name":"Identifier","src":"3297:3:3"}],"id":6443,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":6251,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"contract ERC20","value":"token"},"id":6444,"name":"Identifier","src":"3320:5:3"}],"id":6445,"name":"MemberAccess","src":"3320:13:3"}],"id":6446,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6422,"type":"address","value":"spender"},"id":6447,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6428,"type":"uint256","value":"newAllowance"},"id":6448,"name":"Identifier","src":"3353:12:3"}],"id":6449,"name":"FunctionCall","src":"3297:69:3"}],"id":6450,"name":"FunctionCall","src":"3271:96:3"}],"id":6451,"name":"ExpressionStatement","src":"3271:96:3"}],"id":6452,"name":"Block","src":"3178:196:3"}],"id":6453,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6502,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6454,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":6455,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":6502,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6456,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":6457,"name":"VariableDeclaration","src":"3798:17:3"}],"id":6458,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":6459,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6460,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":7399,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6461,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6455,"type":"contract ERC20","value":"token"},"id":6462,"name":"Identifier","src":"4360:5:3"}],"id":6463,"name":"FunctionCall","src":"4352:14:3"}],"id":6464,"name":"MemberAccess","src":"4352:25:3"}],"id":6465,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":6466,"name":"Literal","src":"4381:33:3"}],"id":6467,"name":"FunctionCall","src":"4344:71:3"}],"id":6468,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[6470,6472]},"children":[{"attributes":{"constant":false,"name":"success","scope":6501,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6469,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":6470,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":6501,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6471,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":6472,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6473,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6455,"type":"contract ERC20","value":"token"},"id":6474,"name":"Identifier","src":"4535:5:3"}],"id":6475,"name":"FunctionCall","src":"4527:14:3"}],"id":6476,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6457,"type":"bytes memory","value":"data"},"id":6477,"name":"Identifier","src":"4547:4:3"}],"id":6478,"name":"FunctionCall","src":"4527:25:3"}],"id":6479,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6480,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bool","value":"success"},"id":6481,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":6482,"name":"Literal","src":"4579:34:3"}],"id":6483,"name":"FunctionCall","src":"4562:52:3"}],"id":6484,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes memory","value":"returndata"},"id":6485,"name":"Identifier","src":"4629:10:3"}],"id":6486,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6487,"name":"Literal","src":"4649:1:3"}],"id":6488,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6489,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6490,"name":"Identifier","src":"4758:3:3"}],"id":6491,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes memory","value":"returndata"},"id":6492,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":6493,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":6494,"name":"TupleExpression","src":"4781:6:3"}],"id":6495,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":6496,"name":"Literal","src":"4790:44:3"}],"id":6497,"name":"FunctionCall","src":"4750:85:3"}],"id":6498,"name":"ExpressionStatement","src":"4750:85:3"}],"id":6499,"name":"Block","src":"4652:194:3"}],"id":6500,"name":"IfStatement","src":"4625:221:3"}],"id":6501,"name":"Block","src":"3826:1026:3"}],"id":6502,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":6503,"name":"ContractDefinition","src":"1715:3139:3"}],"id":6504,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[3137]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3006,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[3137],"name":"SafeMath","scope":3138},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3031,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3007,"name":"ElementaryTypeName","src":"847:7:4"}],"id":3008,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":3031,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3009,"name":"ElementaryTypeName","src":"858:7:4"}],"id":3010,"name":"VariableDeclaration","src":"858:9:4"}],"id":3011,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3031,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3012,"name":"ElementaryTypeName","src":"892:7:4"}],"id":3013,"name":"VariableDeclaration","src":"892:7:4"}],"id":3014,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[3016]},"children":[{"attributes":{"constant":false,"name":"c","scope":3030,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3015,"name":"ElementaryTypeName","src":"911:7:4"}],"id":3016,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3008,"type":"uint256","value":"a"},"id":3017,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3010,"type":"uint256","value":"b"},"id":3018,"name":"Identifier","src":"927:1:4"}],"id":3019,"name":"BinaryOperation","src":"923:5:4"}],"id":3020,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3021,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3016,"type":"uint256","value":"c"},"id":3022,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3008,"type":"uint256","value":"a"},"id":3023,"name":"Identifier","src":"951:1:4"}],"id":3024,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":3025,"name":"Literal","src":"954:29:4"}],"id":3026,"name":"FunctionCall","src":"938:46:4"}],"id":3027,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":3014},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3016,"type":"uint256","value":"c"},"id":3028,"name":"Identifier","src":"1002:1:4"}],"id":3029,"name":"Return","src":"995:8:4"}],"id":3030,"name":"Block","src":"901:109:4"}],"id":3031,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3056,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3032,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":3033,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":3056,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3034,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":3035,"name":"VariableDeclaration","src":"1298:9:4"}],"id":3036,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3056,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3037,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":3038,"name":"VariableDeclaration","src":"1332:7:4"}],"id":3039,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3040,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3035,"type":"uint256","value":"b"},"id":3041,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3033,"type":"uint256","value":"a"},"id":3042,"name":"Identifier","src":"1364:1:4"}],"id":3043,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":3044,"name":"Literal","src":"1367:32:4"}],"id":3045,"name":"FunctionCall","src":"1351:49:4"}],"id":3046,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[3048]},"children":[{"attributes":{"constant":false,"name":"c","scope":3055,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3047,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":3048,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3033,"type":"uint256","value":"a"},"id":3049,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3035,"type":"uint256","value":"b"},"id":3050,"name":"Identifier","src":"1426:1:4"}],"id":3051,"name":"BinaryOperation","src":"1422:5:4"}],"id":3052,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":3039},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3048,"type":"uint256","value":"c"},"id":3053,"name":"Identifier","src":"1445:1:4"}],"id":3054,"name":"Return","src":"1438:8:4"}],"id":3055,"name":"Block","src":"1341:112:4"}],"id":3056,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3090,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3057,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":3058,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":3090,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3059,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":3060,"name":"VariableDeclaration","src":"1717:9:4"}],"id":3061,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3090,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3062,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":3063,"name":"VariableDeclaration","src":"1751:7:4"}],"id":3064,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3058,"type":"uint256","value":"a"},"id":3065,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3066,"name":"Literal","src":"1996:1:4"}],"id":3067,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":3064},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3068,"name":"Literal","src":"2020:1:4"}],"id":3069,"name":"Return","src":"2013:8:4"}],"id":3070,"name":"Block","src":"1999:33:4"}],"id":3071,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[3073]},"children":[{"attributes":{"constant":false,"name":"c","scope":3089,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3072,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":3073,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3058,"type":"uint256","value":"a"},"id":3074,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3060,"type":"uint256","value":"b"},"id":3075,"name":"Identifier","src":"2058:1:4"}],"id":3076,"name":"BinaryOperation","src":"2054:5:4"}],"id":3077,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3078,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3073,"type":"uint256","value":"c"},"id":3079,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3058,"type":"uint256","value":"a"},"id":3080,"name":"Identifier","src":"2081:1:4"}],"id":3081,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3060,"type":"uint256","value":"b"},"id":3082,"name":"Identifier","src":"2086:1:4"}],"id":3083,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":3084,"name":"Literal","src":"2089:35:4"}],"id":3085,"name":"FunctionCall","src":"2069:56:4"}],"id":3086,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":3064},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3073,"type":"uint256","value":"c"},"id":3087,"name":"Identifier","src":"2143:1:4"}],"id":3088,"name":"Return","src":"2136:8:4"}],"id":3089,"name":"Block","src":"1760:391:4"}],"id":3090,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3091,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":3092,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":3115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3093,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":3094,"name":"VariableDeclaration","src":"2630:9:4"}],"id":3095,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3096,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":3097,"name":"VariableDeclaration","src":"2664:7:4"}],"id":3098,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3099,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"b"},"id":3100,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3101,"name":"Literal","src":"2761:1:4"}],"id":3102,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":3103,"name":"Literal","src":"2764:28:4"}],"id":3104,"name":"FunctionCall","src":"2749:44:4"}],"id":3105,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[3107]},"children":[{"attributes":{"constant":false,"name":"c","scope":3114,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3106,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":3107,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3092,"type":"uint256","value":"a"},"id":3108,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"b"},"id":3109,"name":"Identifier","src":"2819:1:4"}],"id":3110,"name":"BinaryOperation","src":"2815:5:4"}],"id":3111,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":3098},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3107,"type":"uint256","value":"c"},"id":3112,"name":"Identifier","src":"2924:1:4"}],"id":3113,"name":"Return","src":"2917:8:4"}],"id":3114,"name":"Block","src":"2673:259:4"}],"id":3115,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3116,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":3117,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":3136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3118,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":3119,"name":"VariableDeclaration","src":"3400:9:4"}],"id":3120,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3121,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":3122,"name":"VariableDeclaration","src":"3434:7:4"}],"id":3123,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3124,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3119,"type":"uint256","value":"b"},"id":3125,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3126,"name":"Literal","src":"3466:1:4"}],"id":3127,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":3128,"name":"Literal","src":"3469:26:4"}],"id":3129,"name":"FunctionCall","src":"3453:43:4"}],"id":3130,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":3123},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3117,"type":"uint256","value":"a"},"id":3131,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3119,"type":"uint256","value":"b"},"id":3132,"name":"Identifier","src":"3517:1:4"}],"id":3133,"name":"BinaryOperation","src":"3513:5:4"}],"id":3134,"name":"Return","src":"3506:12:4"}],"id":3135,"name":"Block","src":"3443:82:4"}],"id":3136,"name":"FunctionDefinition","src":"3376:149:4"}],"id":3137,"name":"ContractDefinition","src":"589:2938:4"}],"id":3138,"name":"SourceUnit","src":"0:3528:4"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[555]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":420,"name":"PragmaDirective","src":"1400:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[555],"name":"ENS","scope":556},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":428,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":421,"name":"ElementaryTypeName","src":"1534:7:5"}],"id":422,"name":"VariableDeclaration","src":"1534:21:5"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":428,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":423,"name":"ElementaryTypeName","src":"1557:7:5"}],"id":424,"name":"VariableDeclaration","src":"1557:22:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":428,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":425,"name":"ElementaryTypeName","src":"1581:7:5"}],"id":426,"name":"VariableDeclaration","src":"1581:14:5"}],"id":427,"name":"ParameterList","src":"1533:63:5"}],"id":428,"name":"EventDefinition","src":"1519:78:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":434,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":429,"name":"ElementaryTypeName","src":"1695:7:5"}],"id":430,"name":"VariableDeclaration","src":"1695:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":434,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":431,"name":"ElementaryTypeName","src":"1718:7:5"}],"id":432,"name":"VariableDeclaration","src":"1718:14:5"}],"id":433,"name":"ParameterList","src":"1694:39:5"}],"id":434,"name":"EventDefinition","src":"1680:54:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":440,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":435,"name":"ElementaryTypeName","src":"1810:7:5"}],"id":436,"name":"VariableDeclaration","src":"1810:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":440,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":437,"name":"ElementaryTypeName","src":"1833:7:5"}],"id":438,"name":"VariableDeclaration","src":"1833:17:5"}],"id":439,"name":"ParameterList","src":"1809:42:5"}],"id":440,"name":"EventDefinition","src":"1792:60:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":446,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":441,"name":"ElementaryTypeName","src":"1916:7:5"}],"id":442,"name":"VariableDeclaration","src":"1916:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":446,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":443,"name":"ElementaryTypeName","src":"1939:6:5"}],"id":444,"name":"VariableDeclaration","src":"1939:11:5"}],"id":445,"name":"ParameterList","src":"1915:36:5"}],"id":446,"name":"EventDefinition","src":"1903:49:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":447,"name":"ElementaryTypeName","src":"2031:7:5"}],"id":448,"name":"VariableDeclaration","src":"2031:22:5"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":449,"name":"ElementaryTypeName","src":"2055:7:5"}],"id":450,"name":"VariableDeclaration","src":"2055:25:5"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":451,"name":"ElementaryTypeName","src":"2082:4:5"}],"id":452,"name":"VariableDeclaration","src":"2082:14:5"}],"id":453,"name":"ParameterList","src":"2030:67:5"}],"id":454,"name":"EventDefinition","src":"2010:88:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":465,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":455,"name":"ElementaryTypeName","src":"2123:7:5"}],"id":456,"name":"VariableDeclaration","src":"2123:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":465,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":457,"name":"ElementaryTypeName","src":"2138:7:5"}],"id":458,"name":"VariableDeclaration","src":"2138:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":465,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":459,"name":"ElementaryTypeName","src":"2154:7:5"}],"id":460,"name":"VariableDeclaration","src":"2154:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":465,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":461,"name":"ElementaryTypeName","src":"2173:6:5"}],"id":462,"name":"VariableDeclaration","src":"2173:11:5"}],"id":463,"name":"ParameterList","src":"2122:63:5"},{"attributes":{"parameters":[null]},"children":[],"id":464,"name":"ParameterList","src":"2194:0:5"}],"id":465,"name":"FunctionDefinition","src":"2104:91:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":478,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":466,"name":"ElementaryTypeName","src":"2226:7:5"}],"id":467,"name":"VariableDeclaration","src":"2226:13:5"},{"attributes":{"constant":false,"name":"_label","scope":478,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":468,"name":"ElementaryTypeName","src":"2241:7:5"}],"id":469,"name":"VariableDeclaration","src":"2241:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":478,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":470,"name":"ElementaryTypeName","src":"2257:7:5"}],"id":471,"name":"VariableDeclaration","src":"2257:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":478,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":472,"name":"ElementaryTypeName","src":"2273:7:5"}],"id":473,"name":"VariableDeclaration","src":"2273:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":478,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":474,"name":"ElementaryTypeName","src":"2292:6:5"}],"id":475,"name":"VariableDeclaration","src":"2292:11:5"}],"id":476,"name":"ParameterList","src":"2225:79:5"},{"attributes":{"parameters":[null]},"children":[],"id":477,"name":"ParameterList","src":"2313:0:5"}],"id":478,"name":"FunctionDefinition","src":"2200:114:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":489,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":479,"name":"ElementaryTypeName","src":"2344:7:5"}],"id":480,"name":"VariableDeclaration","src":"2344:13:5"},{"attributes":{"constant":false,"name":"_label","scope":489,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":481,"name":"ElementaryTypeName","src":"2359:7:5"}],"id":482,"name":"VariableDeclaration","src":"2359:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":489,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":483,"name":"ElementaryTypeName","src":"2375:7:5"}],"id":484,"name":"VariableDeclaration","src":"2375:14:5"}],"id":485,"name":"ParameterList","src":"2343:47:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":489,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":486,"name":"ElementaryTypeName","src":"2408:7:5"}],"id":487,"name":"VariableDeclaration","src":"2408:7:5"}],"id":488,"name":"ParameterList","src":"2407:9:5"}],"id":489,"name":"FunctionDefinition","src":"2319:98:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":496,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":490,"name":"ElementaryTypeName","src":"2443:7:5"}],"id":491,"name":"VariableDeclaration","src":"2443:13:5"},{"attributes":{"constant":false,"name":"_resolver","scope":496,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":492,"name":"ElementaryTypeName","src":"2458:7:5"}],"id":493,"name":"VariableDeclaration","src":"2458:17:5"}],"id":494,"name":"ParameterList","src":"2442:34:5"},{"attributes":{"parameters":[null]},"children":[],"id":495,"name":"ParameterList","src":"2485:0:5"}],"id":496,"name":"FunctionDefinition","src":"2422:64:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":503,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":497,"name":"ElementaryTypeName","src":"2509:7:5"}],"id":498,"name":"VariableDeclaration","src":"2509:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":503,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":499,"name":"ElementaryTypeName","src":"2524:7:5"}],"id":500,"name":"VariableDeclaration","src":"2524:14:5"}],"id":501,"name":"ParameterList","src":"2508:31:5"},{"attributes":{"parameters":[null]},"children":[],"id":502,"name":"ParameterList","src":"2548:0:5"}],"id":503,"name":"FunctionDefinition","src":"2491:58:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":510,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":504,"name":"ElementaryTypeName","src":"2570:7:5"}],"id":505,"name":"VariableDeclaration","src":"2570:13:5"},{"attributes":{"constant":false,"name":"_ttl","scope":510,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":506,"name":"ElementaryTypeName","src":"2585:6:5"}],"id":507,"name":"VariableDeclaration","src":"2585:11:5"}],"id":508,"name":"ParameterList","src":"2569:28:5"},{"attributes":{"parameters":[null]},"children":[],"id":509,"name":"ParameterList","src":"2606:0:5"}],"id":510,"name":"FunctionDefinition","src":"2554:53:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":517,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":511,"name":"ElementaryTypeName","src":"2639:7:5"}],"id":512,"name":"VariableDeclaration","src":"2639:17:5"},{"attributes":{"constant":false,"name":"_approved","scope":517,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":513,"name":"ElementaryTypeName","src":"2658:4:5"}],"id":514,"name":"VariableDeclaration","src":"2658:14:5"}],"id":515,"name":"ParameterList","src":"2638:35:5"},{"attributes":{"parameters":[null]},"children":[],"id":516,"name":"ParameterList","src":"2682:0:5"}],"id":517,"name":"FunctionDefinition","src":"2612:71:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":524,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":518,"name":"ElementaryTypeName","src":"2703:7:5"}],"id":519,"name":"VariableDeclaration","src":"2703:13:5"}],"id":520,"name":"ParameterList","src":"2702:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":524,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":521,"name":"ElementaryTypeName","src":"2741:7:5"}],"id":522,"name":"VariableDeclaration","src":"2741:7:5"}],"id":523,"name":"ParameterList","src":"2740:9:5"}],"id":524,"name":"FunctionDefinition","src":"2688:62:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":531,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":525,"name":"ElementaryTypeName","src":"2773:7:5"}],"id":526,"name":"VariableDeclaration","src":"2773:13:5"}],"id":527,"name":"ParameterList","src":"2772:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":531,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":528,"name":"ElementaryTypeName","src":"2811:7:5"}],"id":529,"name":"VariableDeclaration","src":"2811:7:5"}],"id":530,"name":"ParameterList","src":"2810:9:5"}],"id":531,"name":"FunctionDefinition","src":"2755:65:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":538,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":532,"name":"ElementaryTypeName","src":"2838:7:5"}],"id":533,"name":"VariableDeclaration","src":"2838:13:5"}],"id":534,"name":"ParameterList","src":"2837:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":538,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":535,"name":"ElementaryTypeName","src":"2876:6:5"}],"id":536,"name":"VariableDeclaration","src":"2876:6:5"}],"id":537,"name":"ParameterList","src":"2875:8:5"}],"id":538,"name":"FunctionDefinition","src":"2825:59:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":545,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":539,"name":"ElementaryTypeName","src":"2911:7:5"}],"id":540,"name":"VariableDeclaration","src":"2911:13:5"}],"id":541,"name":"ParameterList","src":"2910:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":545,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":542,"name":"ElementaryTypeName","src":"2949:4:5"}],"id":543,"name":"VariableDeclaration","src":"2949:4:5"}],"id":544,"name":"ParameterList","src":"2948:6:5"}],"id":545,"name":"FunctionDefinition","src":"2889:66:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":554,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":546,"name":"ElementaryTypeName","src":"2986:7:5"}],"id":547,"name":"VariableDeclaration","src":"2986:14:5"},{"attributes":{"constant":false,"name":"_operator","scope":554,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":548,"name":"ElementaryTypeName","src":"3002:7:5"}],"id":549,"name":"VariableDeclaration","src":"3002:17:5"}],"id":550,"name":"ParameterList","src":"2985:35:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":554,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":551,"name":"ElementaryTypeName","src":"3044:4:5"}],"id":552,"name":"VariableDeclaration","src":"3044:4:5"}],"id":553,"name":"ParameterList","src":"3043:6:5"}],"id":554,"name":"FunctionDefinition","src":"2960:90:5"}],"id":555,"name":"ContractDefinition","src":"1425:1627:5"}],"id":556,"name":"SourceUnit","src":"1400:1653:5"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[7224]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":6505,"name":"PragmaDirective","src":"0:24:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[7224],"name":"ENSBytesUtils","scope":7225},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6527,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6506,"name":"ElementaryTypeName","src":"325:5:6"}],"id":6507,"name":"VariableDeclaration","src":"325:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6527,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6508,"name":"ElementaryTypeName","src":"344:4:6"}],"id":6509,"name":"VariableDeclaration","src":"344:11:6"},{"attributes":{"constant":false,"name":"len","scope":6527,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6510,"name":"ElementaryTypeName","src":"357:4:6"}],"id":6511,"name":"VariableDeclaration","src":"357:8:6"}],"id":6512,"name":"ParameterList","src":"324:42:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6527,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6513,"name":"ElementaryTypeName","src":"390:7:6"}],"id":6514,"name":"VariableDeclaration","src":"390:11:6"}],"id":6515,"name":"ParameterList","src":"389:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6516,"name":"Identifier","src":"413:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6509,"type":"uint256","value":"offset"},"id":6517,"name":"Identifier","src":"421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6511,"type":"uint256","value":"len"},"id":6518,"name":"Identifier","src":"430:3:6"}],"id":6519,"name":"BinaryOperation","src":"421:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6507,"type":"bytes memory","value":"self"},"id":6520,"name":"Identifier","src":"437:4:6"}],"id":6521,"name":"MemberAccess","src":"437:11:6"}],"id":6522,"name":"BinaryOperation","src":"421:27:6"}],"id":6523,"name":"FunctionCall","src":"413:36:6"}],"id":6524,"name":"ExpressionStatement","src":"413:36:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6514,"isOffset":false,"isSlot":false,"src":"482:3:6","valueSize":1}},{"self":{"declaration":6507,"isOffset":false,"isSlot":false,"src":"507:4:6","valueSize":1}},{"offset":{"declaration":6509,"isOffset":false,"isSlot":false,"src":"518:6:6","valueSize":1}},{"len":{"declaration":6511,"isOffset":false,"isSlot":false,"src":"527:3:6","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":6525,"name":"InlineAssembly","src":"459:82:6"}],"id":6526,"name":"Block","src":"403:144:6"}],"id":6527,"name":"FunctionDefinition","src":"309:238:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6548,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6528,"name":"ElementaryTypeName","src":"920:5:6"}],"id":6529,"name":"VariableDeclaration","src":"920:17:6"},{"attributes":{"constant":false,"name":"other","scope":6548,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6530,"name":"ElementaryTypeName","src":"939:5:6"}],"id":6531,"name":"VariableDeclaration","src":"939:18:6"}],"id":6532,"name":"ParameterList","src":"919:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6548,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6533,"name":"ElementaryTypeName","src":"982:3:6"}],"id":6534,"name":"VariableDeclaration","src":"982:3:6"}],"id":6535,"name":"ParameterList","src":"981:5:6"},{"children":[{"attributes":{"functionReturnParameters":6535},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6548,6680],"referencedDeclaration":6680,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":6536,"name":"Identifier","src":"1004:7:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6529,"type":"bytes memory","value":"self"},"id":6537,"name":"Identifier","src":"1012:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6538,"name":"Literal","src":"1018:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6529,"type":"bytes memory","value":"self"},"id":6539,"name":"Identifier","src":"1021:4:6"}],"id":6540,"name":"MemberAccess","src":"1021:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6531,"type":"bytes memory","value":"other"},"id":6541,"name":"Identifier","src":"1034:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6542,"name":"Literal","src":"1041:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6531,"type":"bytes memory","value":"other"},"id":6543,"name":"Identifier","src":"1044:5:6"}],"id":6544,"name":"MemberAccess","src":"1044:12:6"}],"id":6545,"name":"FunctionCall","src":"1004:53:6"}],"id":6546,"name":"Return","src":"997:60:6"}],"id":6547,"name":"Block","src":"987:77:6"}],"id":6548,"name":"FunctionDefinition","src":"903:161:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6680,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6549,"name":"ElementaryTypeName","src":"1694:5:6"}],"id":6550,"name":"VariableDeclaration","src":"1694:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6551,"name":"ElementaryTypeName","src":"1713:4:6"}],"id":6552,"name":"VariableDeclaration","src":"1713:11:6"},{"attributes":{"constant":false,"name":"len","scope":6680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6553,"name":"ElementaryTypeName","src":"1726:4:6"}],"id":6554,"name":"VariableDeclaration","src":"1726:8:6"},{"attributes":{"constant":false,"name":"other","scope":6680,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6555,"name":"ElementaryTypeName","src":"1736:5:6"}],"id":6556,"name":"VariableDeclaration","src":"1736:18:6"},{"attributes":{"constant":false,"name":"otheroffset","scope":6680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6557,"name":"ElementaryTypeName","src":"1756:4:6"}],"id":6558,"name":"VariableDeclaration","src":"1756:16:6"},{"attributes":{"constant":false,"name":"otherlen","scope":6680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6559,"name":"ElementaryTypeName","src":"1774:4:6"}],"id":6560,"name":"VariableDeclaration","src":"1774:13:6"}],"id":6561,"name":"ParameterList","src":"1693:95:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6680,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6562,"name":"ElementaryTypeName","src":"1812:3:6"}],"id":6563,"name":"VariableDeclaration","src":"1812:3:6"}],"id":6564,"name":"ParameterList","src":"1811:5:6"},{"children":[{"attributes":{"assignments":[6566]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":6679,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6565,"name":"ElementaryTypeName","src":"1827:4:6"}],"id":6566,"name":"VariableDeclaration","src":"1827:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint256","value":"len"},"id":6567,"name":"Identifier","src":"1843:3:6"}],"id":6568,"name":"VariableDeclarationStatement","src":"1827:19:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6560,"type":"uint256","value":"otherlen"},"id":6569,"name":"Identifier","src":"1860:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint256","value":"len"},"id":6570,"name":"Identifier","src":"1871:3:6"}],"id":6571,"name":"BinaryOperation","src":"1860:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"shortest"},"id":6572,"name":"Identifier","src":"1884:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6560,"type":"uint256","value":"otherlen"},"id":6573,"name":"Identifier","src":"1895:8:6"}],"id":6574,"name":"Assignment","src":"1884:19:6"}],"id":6575,"name":"ExpressionStatement","src":"1884:19:6"}],"id":6576,"name":"IfStatement","src":"1856:47:6"},{"attributes":{"assignments":[6578],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":6679,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6577,"name":"ElementaryTypeName","src":"1914:4:6"}],"id":6578,"name":"VariableDeclaration","src":"1914:12:6"}],"id":6579,"name":"VariableDeclarationStatement","src":"1914:12:6"},{"attributes":{"assignments":[6581],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":6679,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6580,"name":"ElementaryTypeName","src":"1936:4:6"}],"id":6581,"name":"VariableDeclaration","src":"1936:13:6"}],"id":6582,"name":"VariableDeclarationStatement","src":"1936:13:6"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":6578,"isOffset":false,"isSlot":false,"src":"1983:7:6","valueSize":1}},{"otherptr":{"declaration":6581,"isOffset":false,"isSlot":false,"src":"2033:8:6","valueSize":1}},{"offset":{"declaration":6552,"isOffset":false,"isSlot":false,"src":"2008:6:6","valueSize":1}},{"self":{"declaration":6550,"isOffset":false,"isSlot":false,"src":"1998:4:6","valueSize":1}},{"otheroffset":{"declaration":6558,"isOffset":false,"isSlot":false,"src":"2060:11:6","valueSize":1}},{"other":{"declaration":6556,"isOffset":false,"isSlot":false,"src":"2049:5:6","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":6583,"name":"InlineAssembly","src":"1960:127:6"},{"children":[{"attributes":{"assignments":[6585]},"children":[{"attributes":{"constant":false,"name":"idx","scope":6670,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6584,"name":"ElementaryTypeName","src":"2101:4:6"}],"id":6585,"name":"VariableDeclaration","src":"2101:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6586,"name":"Literal","src":"2112:1:6"}],"id":6587,"name":"VariableDeclarationStatement","src":"2101:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"uint256","value":"idx"},"id":6588,"name":"Identifier","src":"2115:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"shortest"},"id":6589,"name":"Identifier","src":"2121:8:6"}],"id":6590,"name":"BinaryOperation","src":"2115:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"uint256","value":"idx"},"id":6591,"name":"Identifier","src":"2131:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6592,"name":"Literal","src":"2138:2:6"}],"id":6593,"name":"Assignment","src":"2131:9:6"}],"id":6594,"name":"ExpressionStatement","src":"2131:9:6"},{"children":[{"attributes":{"assignments":[6596],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":6669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6595,"name":"ElementaryTypeName","src":"2156:4:6"}],"id":6596,"name":"VariableDeclaration","src":"2156:6:6"}],"id":6597,"name":"VariableDeclarationStatement","src":"2156:6:6"},{"attributes":{"assignments":[6599],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":6669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6598,"name":"ElementaryTypeName","src":"2176:4:6"}],"id":6599,"name":"VariableDeclaration","src":"2176:6:6"}],"id":6600,"name":"VariableDeclarationStatement","src":"2176:6:6"},{"attributes":{"externalReferences":[{"a":{"declaration":6596,"isOffset":false,"isSlot":false,"src":"2223:1:6","valueSize":1}},{"selfptr":{"declaration":6578,"isOffset":false,"isSlot":false,"src":"2234:7:6","valueSize":1}},{"b":{"declaration":6599,"isOffset":false,"isSlot":false,"src":"2259:1:6","valueSize":1}},{"otherptr":{"declaration":6581,"isOffset":false,"isSlot":false,"src":"2270:8:6","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":6601,"name":"InlineAssembly","src":"2196:97:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6596,"type":"uint256","value":"a"},"id":6602,"name":"Identifier","src":"2310:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6599,"type":"uint256","value":"b"},"id":6603,"name":"Identifier","src":"2315:1:6"}],"id":6604,"name":"BinaryOperation","src":"2310:6:6"},{"children":[{"attributes":{"assignments":[6606],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":6659,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6605,"name":"ElementaryTypeName","src":"2397:4:6"}],"id":6606,"name":"VariableDeclaration","src":"2397:9:6"}],"id":6607,"name":"VariableDeclarationStatement","src":"2397:9:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"shortest"},"id":6608,"name":"Identifier","src":"2428:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6609,"name":"Literal","src":"2439:2:6"}],"id":6610,"name":"BinaryOperation","src":"2428:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6606,"type":"uint256","value":"mask"},"id":6611,"name":"Identifier","src":"2465:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":6612,"name":"ElementaryTypeNameExpression","src":"2472:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6613,"name":"Literal","src":"2482:1:6"}],"id":6614,"name":"UnaryOperation","src":"2480:3:6"}],"id":6615,"name":"FunctionCall","src":"2472:12:6"}],"id":6616,"name":"Assignment","src":"2465:19:6"}],"id":6617,"name":"ExpressionStatement","src":"2465:19:6"}],"id":6618,"name":"Block","src":"2443:80:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6606,"type":"uint256","value":"mask"},"id":6619,"name":"Identifier","src":"2551:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6620,"name":"Literal","src":"2560:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6621,"name":"Literal","src":"2566:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6622,"name":"Literal","src":"2571:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"shortest"},"id":6623,"name":"Identifier","src":"2576:8:6"}],"id":6624,"name":"BinaryOperation","src":"2571:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"uint256","value":"idx"},"id":6625,"name":"Identifier","src":"2587:3:6"}],"id":6626,"name":"BinaryOperation","src":"2571:19:6"}],"id":6627,"name":"TupleExpression","src":"2570:21:6"}],"id":6628,"name":"BinaryOperation","src":"2566:25:6"}],"id":6629,"name":"TupleExpression","src":"2565:27:6"}],"id":6630,"name":"BinaryOperation","src":"2560:32:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6631,"name":"Literal","src":"2595:1:6"}],"id":6632,"name":"BinaryOperation","src":"2560:36:6"}],"id":6633,"name":"TupleExpression","src":"2559:38:6"}],"id":6634,"name":"UnaryOperation","src":"2558:39:6"}],"id":6635,"name":"Assignment","src":"2551:46:6"}],"id":6636,"name":"ExpressionStatement","src":"2551:46:6"}],"id":6637,"name":"Block","src":"2529:87:6"}],"id":6638,"name":"IfStatement","src":"2424:192:6"},{"attributes":{"assignments":[6640]},"children":[{"attributes":{"constant":false,"name":"diff","scope":6659,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6639,"name":"ElementaryTypeName","src":"2633:4:6"}],"id":6640,"name":"VariableDeclaration","src":"2633:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6596,"type":"uint256","value":"a"},"id":6641,"name":"Identifier","src":"2646:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6606,"type":"uint256","value":"mask"},"id":6642,"name":"Identifier","src":"2650:4:6"}],"id":6643,"name":"BinaryOperation","src":"2646:8:6"}],"id":6644,"name":"TupleExpression","src":"2645:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6599,"type":"uint256","value":"b"},"id":6645,"name":"Identifier","src":"2659:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6606,"type":"uint256","value":"mask"},"id":6646,"name":"Identifier","src":"2663:4:6"}],"id":6647,"name":"BinaryOperation","src":"2659:8:6"}],"id":6648,"name":"TupleExpression","src":"2658:10:6"}],"id":6649,"name":"BinaryOperation","src":"2645:23:6"}],"id":6650,"name":"VariableDeclarationStatement","src":"2633:35:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6640,"type":"uint256","value":"diff"},"id":6651,"name":"Identifier","src":"2690:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6652,"name":"Literal","src":"2698:1:6"}],"id":6653,"name":"BinaryOperation","src":"2690:9:6"},{"attributes":{"functionReturnParameters":6564},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6654,"name":"ElementaryTypeNameExpression","src":"2724:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6640,"type":"uint256","value":"diff"},"id":6655,"name":"Identifier","src":"2728:4:6"}],"id":6656,"name":"FunctionCall","src":"2724:9:6"}],"id":6657,"name":"Return","src":"2717:16:6"}],"id":6658,"name":"IfStatement","src":"2686:47:6"}],"id":6659,"name":"Block","src":"2318:430:6"}],"id":6660,"name":"IfStatement","src":"2306:442:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6578,"type":"uint256","value":"selfptr"},"id":6661,"name":"Identifier","src":"2761:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6662,"name":"Literal","src":"2772:2:6"}],"id":6663,"name":"Assignment","src":"2761:13:6"}],"id":6664,"name":"ExpressionStatement","src":"2761:13:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6581,"type":"uint256","value":"otherptr"},"id":6665,"name":"Identifier","src":"2788:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6666,"name":"Literal","src":"2800:2:6"}],"id":6667,"name":"Assignment","src":"2788:14:6"}],"id":6668,"name":"ExpressionStatement","src":"2788:14:6"}],"id":6669,"name":"Block","src":"2142:671:6"}],"id":6670,"name":"ForStatement","src":"2096:717:6"},{"attributes":{"functionReturnParameters":6564},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6671,"name":"ElementaryTypeNameExpression","src":"2830:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint256","value":"len"},"id":6672,"name":"Identifier","src":"2834:3:6"}],"id":6673,"name":"FunctionCall","src":"2830:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6674,"name":"ElementaryTypeNameExpression","src":"2841:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6560,"type":"uint256","value":"otherlen"},"id":6675,"name":"Identifier","src":"2845:8:6"}],"id":6676,"name":"FunctionCall","src":"2841:13:6"}],"id":6677,"name":"BinaryOperation","src":"2830:24:6"}],"id":6678,"name":"Return","src":"2823:31:6"}],"id":6679,"name":"Block","src":"1817:1044:6"}],"id":6680,"name":"FunctionDefinition","src":"1677:1184:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6708,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6681,"name":"ElementaryTypeName","src":"3295:5:6"}],"id":6682,"name":"VariableDeclaration","src":"3295:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6708,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6683,"name":"ElementaryTypeName","src":"3314:4:6"}],"id":6684,"name":"VariableDeclaration","src":"3314:11:6"},{"attributes":{"constant":false,"name":"other","scope":6708,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6685,"name":"ElementaryTypeName","src":"3327:5:6"}],"id":6686,"name":"VariableDeclaration","src":"3327:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":6708,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6687,"name":"ElementaryTypeName","src":"3347:4:6"}],"id":6688,"name":"VariableDeclaration","src":"3347:16:6"},{"attributes":{"constant":false,"name":"len","scope":6708,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6689,"name":"ElementaryTypeName","src":"3365:4:6"}],"id":6690,"name":"VariableDeclaration","src":"3365:8:6"}],"id":6691,"name":"ParameterList","src":"3294:80:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6708,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6692,"name":"ElementaryTypeName","src":"3398:4:6"}],"id":6693,"name":"VariableDeclaration","src":"3398:4:6"}],"id":6694,"name":"ParameterList","src":"3397:6:6"},{"children":[{"attributes":{"functionReturnParameters":6694},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6527,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6695,"name":"Identifier","src":"3421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6682,"type":"bytes memory","value":"self"},"id":6696,"name":"Identifier","src":"3428:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"offset"},"id":6697,"name":"Identifier","src":"3434:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6690,"type":"uint256","value":"len"},"id":6698,"name":"Identifier","src":"3442:3:6"}],"id":6699,"name":"FunctionCall","src":"3421:25:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6527,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6700,"name":"Identifier","src":"3450:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6686,"type":"bytes memory","value":"other"},"id":6701,"name":"Identifier","src":"3457:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6688,"type":"uint256","value":"otherOffset"},"id":6702,"name":"Identifier","src":"3464:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6690,"type":"uint256","value":"len"},"id":6703,"name":"Identifier","src":"3477:3:6"}],"id":6704,"name":"FunctionCall","src":"3450:31:6"}],"id":6705,"name":"BinaryOperation","src":"3421:60:6"}],"id":6706,"name":"Return","src":"3414:67:6"}],"id":6707,"name":"Block","src":"3404:84:6"}],"id":6708,"name":"FunctionDefinition","src":"3279:209:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6740,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6709,"name":"ElementaryTypeName","src":"3887:5:6"}],"id":6710,"name":"VariableDeclaration","src":"3887:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6740,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6711,"name":"ElementaryTypeName","src":"3906:4:6"}],"id":6712,"name":"VariableDeclaration","src":"3906:11:6"},{"attributes":{"constant":false,"name":"other","scope":6740,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6713,"name":"ElementaryTypeName","src":"3919:5:6"}],"id":6714,"name":"VariableDeclaration","src":"3919:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":6740,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6715,"name":"ElementaryTypeName","src":"3939:4:6"}],"id":6716,"name":"VariableDeclaration","src":"3939:16:6"}],"id":6717,"name":"ParameterList","src":"3886:70:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6740,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6718,"name":"ElementaryTypeName","src":"3980:4:6"}],"id":6719,"name":"VariableDeclaration","src":"3980:4:6"}],"id":6720,"name":"ParameterList","src":"3979:6:6"},{"children":[{"attributes":{"functionReturnParameters":6720},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6527,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6721,"name":"Identifier","src":"4003:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6710,"type":"bytes memory","value":"self"},"id":6722,"name":"Identifier","src":"4010:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6712,"type":"uint256","value":"offset"},"id":6723,"name":"Identifier","src":"4016:6:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6710,"type":"bytes memory","value":"self"},"id":6724,"name":"Identifier","src":"4024:4:6"}],"id":6725,"name":"MemberAccess","src":"4024:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6712,"type":"uint256","value":"offset"},"id":6726,"name":"Identifier","src":"4038:6:6"}],"id":6727,"name":"BinaryOperation","src":"4024:20:6"}],"id":6728,"name":"FunctionCall","src":"4003:42:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6527,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6729,"name":"Identifier","src":"4049:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6714,"type":"bytes memory","value":"other"},"id":6730,"name":"Identifier","src":"4056:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6716,"type":"uint256","value":"otherOffset"},"id":6731,"name":"Identifier","src":"4063:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6714,"type":"bytes memory","value":"other"},"id":6732,"name":"Identifier","src":"4076:5:6"}],"id":6733,"name":"MemberAccess","src":"4076:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6716,"type":"uint256","value":"otherOffset"},"id":6734,"name":"Identifier","src":"4091:11:6"}],"id":6735,"name":"BinaryOperation","src":"4076:26:6"}],"id":6736,"name":"FunctionCall","src":"4049:54:6"}],"id":6737,"name":"BinaryOperation","src":"4003:100:6"}],"id":6738,"name":"Return","src":"3996:107:6"}],"id":6739,"name":"Block","src":"3986:124:6"}],"id":6740,"name":"FunctionDefinition","src":"3871:239:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6769,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6741,"name":"ElementaryTypeName","src":"4478:5:6"}],"id":6742,"name":"VariableDeclaration","src":"4478:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6769,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6743,"name":"ElementaryTypeName","src":"4497:4:6"}],"id":6744,"name":"VariableDeclaration","src":"4497:11:6"},{"attributes":{"constant":false,"name":"other","scope":6769,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6745,"name":"ElementaryTypeName","src":"4510:5:6"}],"id":6746,"name":"VariableDeclaration","src":"4510:18:6"}],"id":6747,"name":"ParameterList","src":"4477:52:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6769,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6748,"name":"ElementaryTypeName","src":"4553:4:6"}],"id":6749,"name":"VariableDeclaration","src":"4553:4:6"}],"id":6750,"name":"ParameterList","src":"4552:6:6"},{"children":[{"attributes":{"functionReturnParameters":6750},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes memory","value":"self"},"id":6751,"name":"Identifier","src":"4576:4:6"}],"id":6752,"name":"MemberAccess","src":"4576:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"uint256","value":"offset"},"id":6753,"name":"Identifier","src":"4591:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"bytes memory","value":"other"},"id":6754,"name":"Identifier","src":"4600:5:6"}],"id":6755,"name":"MemberAccess","src":"4600:12:6"}],"id":6756,"name":"BinaryOperation","src":"4591:21:6"}],"id":6757,"name":"BinaryOperation","src":"4576:36:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6708,6740,6769,6794],"referencedDeclaration":6708,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":6758,"name":"Identifier","src":"4616:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes memory","value":"self"},"id":6759,"name":"Identifier","src":"4623:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"uint256","value":"offset"},"id":6760,"name":"Identifier","src":"4629:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"bytes memory","value":"other"},"id":6761,"name":"Identifier","src":"4637:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6762,"name":"Literal","src":"4644:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"bytes memory","value":"other"},"id":6763,"name":"Identifier","src":"4647:5:6"}],"id":6764,"name":"MemberAccess","src":"4647:12:6"}],"id":6765,"name":"FunctionCall","src":"4616:44:6"}],"id":6766,"name":"BinaryOperation","src":"4576:84:6"}],"id":6767,"name":"Return","src":"4569:91:6"}],"id":6768,"name":"Block","src":"4559:108:6"}],"id":6769,"name":"FunctionDefinition","src":"4462:205:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6794,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6770,"name":"ElementaryTypeName","src":"4931:5:6"}],"id":6771,"name":"VariableDeclaration","src":"4931:17:6"},{"attributes":{"constant":false,"name":"other","scope":6794,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6772,"name":"ElementaryTypeName","src":"4950:5:6"}],"id":6773,"name":"VariableDeclaration","src":"4950:18:6"}],"id":6774,"name":"ParameterList","src":"4930:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6794,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6775,"name":"ElementaryTypeName","src":"4992:4:6"}],"id":6776,"name":"VariableDeclaration","src":"4992:4:6"}],"id":6777,"name":"ParameterList","src":"4991:6:6"},{"children":[{"attributes":{"functionReturnParameters":6777},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6771,"type":"bytes memory","value":"self"},"id":6778,"name":"Identifier","src":"5015:4:6"}],"id":6779,"name":"MemberAccess","src":"5015:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"bytes memory","value":"other"},"id":6780,"name":"Identifier","src":"5030:5:6"}],"id":6781,"name":"MemberAccess","src":"5030:12:6"}],"id":6782,"name":"BinaryOperation","src":"5015:27:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6708,6740,6769,6794],"referencedDeclaration":6708,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":6783,"name":"Identifier","src":"5046:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6771,"type":"bytes memory","value":"self"},"id":6784,"name":"Identifier","src":"5053:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6785,"name":"Literal","src":"5059:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"bytes memory","value":"other"},"id":6786,"name":"Identifier","src":"5062:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6787,"name":"Literal","src":"5069:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6771,"type":"bytes memory","value":"self"},"id":6788,"name":"Identifier","src":"5072:4:6"}],"id":6789,"name":"MemberAccess","src":"5072:11:6"}],"id":6790,"name":"FunctionCall","src":"5046:38:6"}],"id":6791,"name":"BinaryOperation","src":"5015:69:6"}],"id":6792,"name":"Return","src":"5008:76:6"}],"id":6793,"name":"Block","src":"4998:93:6"}],"id":6794,"name":"FunctionDefinition","src":"4915:176:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6810,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6795,"name":"ElementaryTypeName","src":"5352:5:6"}],"id":6796,"name":"VariableDeclaration","src":"5352:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6810,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6797,"name":"ElementaryTypeName","src":"5371:4:6"}],"id":6798,"name":"VariableDeclaration","src":"5371:8:6"}],"id":6799,"name":"ParameterList","src":"5351:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6810,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6800,"name":"ElementaryTypeName","src":"5404:5:6"}],"id":6801,"name":"VariableDeclaration","src":"5404:9:6"}],"id":6802,"name":"ParameterList","src":"5403:11:6"},{"children":[{"attributes":{"functionReturnParameters":6802},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6803,"name":"ElementaryTypeNameExpression","src":"5432:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6796,"type":"bytes memory","value":"self"},"id":6804,"name":"Identifier","src":"5438:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6798,"type":"uint256","value":"idx"},"id":6805,"name":"Identifier","src":"5443:3:6"}],"id":6806,"name":"IndexAccess","src":"5438:9:6"}],"id":6807,"name":"FunctionCall","src":"5432:16:6"}],"id":6808,"name":"Return","src":"5425:23:6"}],"id":6809,"name":"Block","src":"5415:40:6"}],"id":6810,"name":"FunctionDefinition","src":"5333:122:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6830,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6811,"name":"ElementaryTypeName","src":"5719:5:6"}],"id":6812,"name":"VariableDeclaration","src":"5719:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6830,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6813,"name":"ElementaryTypeName","src":"5738:4:6"}],"id":6814,"name":"VariableDeclaration","src":"5738:8:6"}],"id":6815,"name":"ParameterList","src":"5718:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6830,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6816,"name":"ElementaryTypeName","src":"5771:6:6"}],"id":6817,"name":"VariableDeclaration","src":"5771:10:6"}],"id":6818,"name":"ParameterList","src":"5770:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6819,"name":"Identifier","src":"5793:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6814,"type":"uint256","value":"idx"},"id":6820,"name":"Identifier","src":"5801:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6821,"name":"Literal","src":"5807:1:6"}],"id":6822,"name":"BinaryOperation","src":"5801:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"bytes memory","value":"self"},"id":6823,"name":"Identifier","src":"5812:4:6"}],"id":6824,"name":"MemberAccess","src":"5812:11:6"}],"id":6825,"name":"BinaryOperation","src":"5801:22:6"}],"id":6826,"name":"FunctionCall","src":"5793:31:6"}],"id":6827,"name":"ExpressionStatement","src":"5793:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6817,"isOffset":false,"isSlot":false,"src":"5857:3:6","valueSize":1}},{"self":{"declaration":6812,"isOffset":false,"isSlot":false,"src":"5882:4:6","valueSize":1}},{"idx":{"declaration":6814,"isOffset":false,"isSlot":false,"src":"5892:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":6828,"name":"InlineAssembly","src":"5834:82:6"}],"id":6829,"name":"Block","src":"5783:139:6"}],"id":6830,"name":"FunctionDefinition","src":"5699:223:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6850,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6831,"name":"ElementaryTypeName","src":"6186:5:6"}],"id":6832,"name":"VariableDeclaration","src":"6186:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6850,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6833,"name":"ElementaryTypeName","src":"6205:4:6"}],"id":6834,"name":"VariableDeclaration","src":"6205:8:6"}],"id":6835,"name":"ParameterList","src":"6185:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6850,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":6836,"name":"ElementaryTypeName","src":"6238:6:6"}],"id":6837,"name":"VariableDeclaration","src":"6238:10:6"}],"id":6838,"name":"ParameterList","src":"6237:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6839,"name":"Identifier","src":"6260:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6834,"type":"uint256","value":"idx"},"id":6840,"name":"Identifier","src":"6268:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6841,"name":"Literal","src":"6274:1:6"}],"id":6842,"name":"BinaryOperation","src":"6268:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6832,"type":"bytes memory","value":"self"},"id":6843,"name":"Identifier","src":"6279:4:6"}],"id":6844,"name":"MemberAccess","src":"6279:11:6"}],"id":6845,"name":"BinaryOperation","src":"6268:22:6"}],"id":6846,"name":"FunctionCall","src":"6260:31:6"}],"id":6847,"name":"ExpressionStatement","src":"6260:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6837,"isOffset":false,"isSlot":false,"src":"6324:3:6","valueSize":1}},{"self":{"declaration":6832,"isOffset":false,"isSlot":false,"src":"6349:4:6","valueSize":1}},{"idx":{"declaration":6834,"isOffset":false,"isSlot":false,"src":"6359:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":6848,"name":"InlineAssembly","src":"6301:86:6"}],"id":6849,"name":"Block","src":"6250:143:6"}],"id":6850,"name":"FunctionDefinition","src":"6166:227:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6870,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6851,"name":"ElementaryTypeName","src":"6632:5:6"}],"id":6852,"name":"VariableDeclaration","src":"6632:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6870,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6853,"name":"ElementaryTypeName","src":"6651:4:6"}],"id":6854,"name":"VariableDeclaration","src":"6651:8:6"}],"id":6855,"name":"ParameterList","src":"6631:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6870,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6856,"name":"ElementaryTypeName","src":"6684:7:6"}],"id":6857,"name":"VariableDeclaration","src":"6684:11:6"}],"id":6858,"name":"ParameterList","src":"6683:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6859,"name":"Identifier","src":"6707:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6854,"type":"uint256","value":"idx"},"id":6860,"name":"Identifier","src":"6715:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6861,"name":"Literal","src":"6721:2:6"}],"id":6862,"name":"BinaryOperation","src":"6715:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6852,"type":"bytes memory","value":"self"},"id":6863,"name":"Identifier","src":"6727:4:6"}],"id":6864,"name":"MemberAccess","src":"6727:11:6"}],"id":6865,"name":"BinaryOperation","src":"6715:23:6"}],"id":6866,"name":"FunctionCall","src":"6707:32:6"}],"id":6867,"name":"ExpressionStatement","src":"6707:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6857,"isOffset":false,"isSlot":false,"src":"6772:3:6","valueSize":1}},{"self":{"declaration":6852,"isOffset":false,"isSlot":false,"src":"6793:4:6","valueSize":1}},{"idx":{"declaration":6854,"isOffset":false,"isSlot":false,"src":"6804:3:6","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":6868,"name":"InlineAssembly","src":"6749:70:6"}],"id":6869,"name":"Block","src":"6697:128:6"}],"id":6870,"name":"FunctionDefinition","src":"6611:214:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6890,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6871,"name":"ElementaryTypeName","src":"7064:5:6"}],"id":6872,"name":"VariableDeclaration","src":"7064:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6890,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6873,"name":"ElementaryTypeName","src":"7083:4:6"}],"id":6874,"name":"VariableDeclaration","src":"7083:8:6"}],"id":6875,"name":"ParameterList","src":"7063:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6890,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":6876,"name":"ElementaryTypeName","src":"7116:7:6"}],"id":6877,"name":"VariableDeclaration","src":"7116:11:6"}],"id":6878,"name":"ParameterList","src":"7115:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6879,"name":"Identifier","src":"7139:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6874,"type":"uint256","value":"idx"},"id":6880,"name":"Identifier","src":"7147:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":6881,"name":"Literal","src":"7153:2:6"}],"id":6882,"name":"BinaryOperation","src":"7147:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6872,"type":"bytes memory","value":"self"},"id":6883,"name":"Identifier","src":"7159:4:6"}],"id":6884,"name":"MemberAccess","src":"7159:11:6"}],"id":6885,"name":"BinaryOperation","src":"7147:23:6"}],"id":6886,"name":"FunctionCall","src":"7139:32:6"}],"id":6887,"name":"ExpressionStatement","src":"7139:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6877,"isOffset":false,"isSlot":false,"src":"7204:3:6","valueSize":1}},{"self":{"declaration":6872,"isOffset":false,"isSlot":false,"src":"7229:4:6","valueSize":1}},{"idx":{"declaration":6874,"isOffset":false,"isSlot":false,"src":"7240:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":6888,"name":"InlineAssembly","src":"7181:143:6"}],"id":6889,"name":"Block","src":"7129:201:6"}],"id":6890,"name":"FunctionDefinition","src":"7043:287:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6918,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6891,"name":"ElementaryTypeName","src":"7606:5:6"}],"id":6892,"name":"VariableDeclaration","src":"7606:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6893,"name":"ElementaryTypeName","src":"7625:4:6"}],"id":6894,"name":"VariableDeclaration","src":"7625:8:6"},{"attributes":{"constant":false,"name":"len","scope":6918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6895,"name":"ElementaryTypeName","src":"7635:4:6"}],"id":6896,"name":"VariableDeclaration","src":"7635:8:6"}],"id":6897,"name":"ParameterList","src":"7605:39:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6918,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6898,"name":"ElementaryTypeName","src":"7668:7:6"}],"id":6899,"name":"VariableDeclaration","src":"7668:11:6"}],"id":6900,"name":"ParameterList","src":"7667:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6901,"name":"Identifier","src":"7691:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6896,"type":"uint256","value":"len"},"id":6902,"name":"Identifier","src":"7699:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6903,"name":"Literal","src":"7706:2:6"}],"id":6904,"name":"BinaryOperation","src":"7699:9:6"}],"id":6905,"name":"FunctionCall","src":"7691:18:6"}],"id":6906,"name":"ExpressionStatement","src":"7691:18:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6907,"name":"Identifier","src":"7719:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6894,"type":"uint256","value":"idx"},"id":6908,"name":"Identifier","src":"7727:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6896,"type":"uint256","value":"len"},"id":6909,"name":"Identifier","src":"7733:3:6"}],"id":6910,"name":"BinaryOperation","src":"7727:9:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"bytes memory","value":"self"},"id":6911,"name":"Identifier","src":"7740:4:6"}],"id":6912,"name":"MemberAccess","src":"7740:11:6"}],"id":6913,"name":"BinaryOperation","src":"7727:24:6"}],"id":6914,"name":"FunctionCall","src":"7719:33:6"}],"id":6915,"name":"ExpressionStatement","src":"7719:33:6"},{"attributes":{"externalReferences":[{"len":{"declaration":6896,"isOffset":false,"isSlot":false,"src":"7822:3:6","valueSize":1}},{"ret":{"declaration":6899,"isOffset":false,"isSlot":false,"src":"7845:3:6","valueSize":1}},{"self":{"declaration":6892,"isOffset":false,"isSlot":false,"src":"7870:4:6","valueSize":1}},{"idx":{"declaration":6894,"isOffset":false,"isSlot":false,"src":"7881:3:6","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":6916,"name":"InlineAssembly","src":"7762:142:6"}],"id":6917,"name":"Block","src":"7681:229:6"}],"id":6918,"name":"FunctionDefinition","src":"7586:324:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":6958,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6919,"name":"ElementaryTypeName","src":"7932:4:6"}],"id":6920,"name":"VariableDeclaration","src":"7932:9:6"},{"attributes":{"constant":false,"name":"src","scope":6958,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6921,"name":"ElementaryTypeName","src":"7943:4:6"}],"id":6922,"name":"VariableDeclaration","src":"7943:8:6"},{"attributes":{"constant":false,"name":"len","scope":6958,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6923,"name":"ElementaryTypeName","src":"7953:4:6"}],"id":6924,"name":"VariableDeclaration","src":"7953:8:6"}],"id":6925,"name":"ParameterList","src":"7931:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":6926,"name":"ParameterList","src":"7976:0:6"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"len"},"id":6927,"name":"Identifier","src":"8043:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6928,"name":"Literal","src":"8050:2:6"}],"id":6929,"name":"BinaryOperation","src":"8043:9:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"len"},"id":6930,"name":"Identifier","src":"8054:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6931,"name":"Literal","src":"8061:2:6"}],"id":6932,"name":"Assignment","src":"8054:9:6"}],"id":6933,"name":"ExpressionStatement","src":"8054:9:6"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"8125:3:6","valueSize":1}},{"dest":{"declaration":6920,"isOffset":false,"isSlot":false,"src":"8113:4:6","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":6934,"name":"InlineAssembly","src":"8079:65:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6920,"type":"uint256","value":"dest"},"id":6935,"name":"Identifier","src":"8157:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6936,"name":"Literal","src":"8165:2:6"}],"id":6937,"name":"Assignment","src":"8157:10:6"}],"id":6938,"name":"ExpressionStatement","src":"8157:10:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6922,"type":"uint256","value":"src"},"id":6939,"name":"Identifier","src":"8181:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6940,"name":"Literal","src":"8188:2:6"}],"id":6941,"name":"Assignment","src":"8181:9:6"}],"id":6942,"name":"ExpressionStatement","src":"8181:9:6"}],"id":6943,"name":"Block","src":"8065:136:6"}],"id":6944,"name":"ForStatement","src":"8036:165:6"},{"attributes":{"assignments":[6946]},"children":[{"attributes":{"constant":false,"name":"mask","scope":6957,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6945,"name":"ElementaryTypeName","src":"8243:4:6"}],"id":6946,"name":"VariableDeclaration","src":"8243:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":6947,"name":"Literal","src":"8255:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6948,"name":"Literal","src":"8263:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"len"},"id":6949,"name":"Identifier","src":"8268:3:6"}],"id":6950,"name":"BinaryOperation","src":"8263:8:6"}],"id":6951,"name":"TupleExpression","src":"8262:10:6"}],"id":6952,"name":"BinaryOperation","src":"8255:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6953,"name":"Literal","src":"8275:1:6"}],"id":6954,"name":"BinaryOperation","src":"8255:21:6"}],"id":6955,"name":"VariableDeclarationStatement","src":"8243:33:6"},{"attributes":{"externalReferences":[{"src":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"8334:3:6","valueSize":1}},{"mask":{"declaration":6946,"isOffset":false,"isSlot":false,"src":"8344:4:6","valueSize":1}},{"dest":{"declaration":6920,"isOffset":false,"isSlot":false,"src":"8421:4:6","valueSize":1}},{"dest":{"declaration":6920,"isOffset":false,"isSlot":false,"src":"8389:4:6","valueSize":1}},{"mask":{"declaration":6946,"isOffset":false,"isSlot":false,"src":"8396:4:6","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":6956,"name":"InlineAssembly","src":"8286:173:6"}],"id":6957,"name":"Block","src":"7976:489:6"}],"id":6958,"name":"FunctionDefinition","src":"7916:549:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7001,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6959,"name":"ElementaryTypeName","src":"8704:5:6"}],"id":6960,"name":"VariableDeclaration","src":"8704:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6961,"name":"ElementaryTypeName","src":"8723:4:6"}],"id":6962,"name":"VariableDeclaration","src":"8723:11:6"},{"attributes":{"constant":false,"name":"len","scope":7001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6963,"name":"ElementaryTypeName","src":"8736:4:6"}],"id":6964,"name":"VariableDeclaration","src":"8736:8:6"}],"id":6965,"name":"ParameterList","src":"8703:42:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7001,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6966,"name":"ElementaryTypeName","src":"8768:5:6"}],"id":6967,"name":"VariableDeclaration","src":"8768:12:6"}],"id":6968,"name":"ParameterList","src":"8767:14:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6969,"name":"Identifier","src":"8792:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6962,"type":"uint256","value":"offset"},"id":6970,"name":"Identifier","src":"8800:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6964,"type":"uint256","value":"len"},"id":6971,"name":"Identifier","src":"8809:3:6"}],"id":6972,"name":"BinaryOperation","src":"8800:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"bytes memory","value":"self"},"id":6973,"name":"Identifier","src":"8816:4:6"}],"id":6974,"name":"MemberAccess","src":"8816:11:6"}],"id":6975,"name":"BinaryOperation","src":"8800:27:6"}],"id":6976,"name":"FunctionCall","src":"8792:36:6"}],"id":6977,"name":"ExpressionStatement","src":"8792:36:6"},{"attributes":{"assignments":[6979]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7000,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6978,"name":"ElementaryTypeName","src":"8839:5:6"}],"id":6979,"name":"VariableDeclaration","src":"8839:16:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6980,"name":"ElementaryTypeName","src":"8862:5:6"}],"id":6981,"name":"NewExpression","src":"8858:9:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6964,"type":"uint256","value":"len"},"id":6982,"name":"Identifier","src":"8868:3:6"}],"id":6983,"name":"FunctionCall","src":"8858:14:6"}],"id":6984,"name":"VariableDeclarationStatement","src":"8839:33:6"},{"attributes":{"assignments":[6986],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":7000,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6985,"name":"ElementaryTypeName","src":"8882:4:6"}],"id":6986,"name":"VariableDeclaration","src":"8882:9:6"}],"id":6987,"name":"VariableDeclarationStatement","src":"8882:9:6"},{"attributes":{"assignments":[6989],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":7000,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6988,"name":"ElementaryTypeName","src":"8901:4:6"}],"id":6989,"name":"VariableDeclaration","src":"8901:8:6"}],"id":6990,"name":"VariableDeclarationStatement","src":"8901:8:6"},{"attributes":{"externalReferences":[{"dest":{"declaration":6986,"isOffset":false,"isSlot":false,"src":"8943:4:6","valueSize":1}},{"ret":{"declaration":6979,"isOffset":false,"isSlot":false,"src":"8955:3:6","valueSize":1}},{"src":{"declaration":6989,"isOffset":false,"isSlot":false,"src":"8976:3:6","valueSize":1}},{"self":{"declaration":6960,"isOffset":false,"isSlot":false,"src":"8991:4:6","valueSize":1}},{"offset":{"declaration":6962,"isOffset":false,"isSlot":false,"src":"9002:6:6","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":6991,"name":"InlineAssembly","src":"8920:99:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6958,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":6992,"name":"Identifier","src":"9028:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6986,"type":"uint256","value":"dest"},"id":6993,"name":"Identifier","src":"9035:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6989,"type":"uint256","value":"src"},"id":6994,"name":"Identifier","src":"9041:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6964,"type":"uint256","value":"len"},"id":6995,"name":"Identifier","src":"9046:3:6"}],"id":6996,"name":"FunctionCall","src":"9028:22:6"}],"id":6997,"name":"ExpressionStatement","src":"9028:22:6"},{"attributes":{"functionReturnParameters":6968},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6979,"type":"bytes memory","value":"ret"},"id":6998,"name":"Identifier","src":"9068:3:6"}],"id":6999,"name":"Return","src":"9061:10:6"}],"id":7000,"name":"Block","src":"8782:296:6"}],"id":7001,"name":"FunctionDefinition","src":"8685:393:6"},{"attributes":{"constant":true,"name":"base32HexTable","scope":7224,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7002,"name":"ElementaryTypeName","src":"9206:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":7003,"name":"Literal","src":"9238:147:6"}],"id":7004,"name":"VariableDeclaration","src":"9206:179:6"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7223,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7005,"name":"ElementaryTypeName","src":"9697:5:6"}],"id":7006,"name":"VariableDeclaration","src":"9697:17:6"},{"attributes":{"constant":false,"name":"off","scope":7223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7007,"name":"ElementaryTypeName","src":"9716:4:6"}],"id":7008,"name":"VariableDeclaration","src":"9716:8:6"},{"attributes":{"constant":false,"name":"len","scope":7223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7009,"name":"ElementaryTypeName","src":"9726:4:6"}],"id":7010,"name":"VariableDeclaration","src":"9726:8:6"}],"id":7011,"name":"ParameterList","src":"9696:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7223,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7012,"name":"ElementaryTypeName","src":"9758:7:6"}],"id":7013,"name":"VariableDeclaration","src":"9758:7:6"}],"id":7014,"name":"ParameterList","src":"9757:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":7015,"name":"Identifier","src":"9777:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7016,"name":"Identifier","src":"9785:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":7017,"name":"Literal","src":"9792:2:6"}],"id":7018,"name":"BinaryOperation","src":"9785:9:6"}],"id":7019,"name":"FunctionCall","src":"9777:18:6"}],"id":7020,"name":"ExpressionStatement","src":"9777:18:6"},{"attributes":{"assignments":[7022]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7222,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7021,"name":"ElementaryTypeName","src":"9806:4:6"}],"id":7022,"name":"VariableDeclaration","src":"9806:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7023,"name":"Literal","src":"9817:1:6"}],"id":7024,"name":"VariableDeclarationStatement","src":"9806:12:6"},{"attributes":{"assignments":[7026],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":7222,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7025,"name":"ElementaryTypeName","src":"9828:5:6"}],"id":7026,"name":"VariableDeclaration","src":"9828:13:6"}],"id":7027,"name":"VariableDeclarationStatement","src":"9828:13:6"},{"children":[{"attributes":{"assignments":[7029]},"children":[{"attributes":{"constant":false,"name":"i","scope":7094,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7028,"name":"ElementaryTypeName","src":"9855:4:6"}],"id":7029,"name":"VariableDeclaration","src":"9855:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7030,"name":"Literal","src":"9864:1:6"}],"id":7031,"name":"VariableDeclarationStatement","src":"9855:10:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"uint256","value":"i"},"id":7032,"name":"Identifier","src":"9867:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7033,"name":"Identifier","src":"9871:3:6"}],"id":7034,"name":"BinaryOperation","src":"9867:7:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"uint256","value":"i"},"id":7035,"name":"Identifier","src":"9876:1:6"}],"id":7036,"name":"UnaryOperation","src":"9876:3:6"}],"id":7037,"name":"ExpressionStatement","src":"9876:3:6"},{"children":[{"attributes":{"assignments":[7039]},"children":[{"attributes":{"constant":false,"name":"char","scope":7093,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":7038,"name":"ElementaryTypeName","src":"9895:6:6"}],"id":7039,"name":"VariableDeclaration","src":"9895:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7006,"type":"bytes memory","value":"self"},"id":7040,"name":"Identifier","src":"9909:4:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7008,"type":"uint256","value":"off"},"id":7041,"name":"Identifier","src":"9914:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"uint256","value":"i"},"id":7042,"name":"Identifier","src":"9920:1:6"}],"id":7043,"name":"BinaryOperation","src":"9914:7:6"}],"id":7044,"name":"IndexAccess","src":"9909:13:6"}],"id":7045,"name":"VariableDeclarationStatement","src":"9895:27:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":7046,"name":"Identifier","src":"9936:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7039,"type":"bytes1","value":"char"},"id":7047,"name":"Identifier","src":"9944:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":7048,"name":"Literal","src":"9952:4:6"}],"id":7049,"name":"BinaryOperation","src":"9944:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7039,"type":"bytes1","value":"char"},"id":7050,"name":"Identifier","src":"9960:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":7051,"name":"Literal","src":"9968:4:6"}],"id":7052,"name":"BinaryOperation","src":"9960:12:6"}],"id":7053,"name":"BinaryOperation","src":"9944:28:6"}],"id":7054,"name":"FunctionCall","src":"9936:37:6"}],"id":7055,"name":"ExpressionStatement","src":"9936:37:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7056,"name":"Identifier","src":"9987:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7057,"name":"ElementaryTypeNameExpression","src":"9997:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7004,"type":"bytes memory","value":"base32HexTable"},"id":7058,"name":"Identifier","src":"10003:14:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7059,"name":"ElementaryTypeNameExpression","src":"10018:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7060,"name":"ElementaryTypeNameExpression","src":"10023:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7039,"type":"bytes1","value":"char"},"id":7061,"name":"Identifier","src":"10029:4:6"}],"id":7062,"name":"FunctionCall","src":"10023:11:6"}],"id":7063,"name":"FunctionCall","src":"10018:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":7064,"name":"Literal","src":"10038:4:6"}],"id":7065,"name":"BinaryOperation","src":"10018:24:6"}],"id":7066,"name":"IndexAccess","src":"10003:40:6"}],"id":7067,"name":"FunctionCall","src":"9997:47:6"}],"id":7068,"name":"Assignment","src":"9987:57:6"}],"id":7069,"name":"ExpressionStatement","src":"9987:57:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":7070,"name":"Identifier","src":"10058:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7071,"name":"Identifier","src":"10066:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":7072,"name":"Literal","src":"10077:4:6"}],"id":7073,"name":"BinaryOperation","src":"10066:15:6"}],"id":7074,"name":"FunctionCall","src":"10058:24:6"}],"id":7075,"name":"ExpressionStatement","src":"10058:24:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"uint256","value":"i"},"id":7076,"name":"Identifier","src":"10099:1:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7077,"name":"Identifier","src":"10104:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7078,"name":"Literal","src":"10110:1:6"}],"id":7079,"name":"BinaryOperation","src":"10104:7:6"}],"id":7080,"name":"BinaryOperation","src":"10099:12:6"},{"children":[{"id":7081,"name":"Break","src":"10131:5:6"}],"id":7082,"name":"Block","src":"10113:38:6"}],"id":7083,"name":"IfStatement","src":"10096:55:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7084,"name":"Identifier","src":"10164:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7085,"name":"Identifier","src":"10171:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7086,"name":"Literal","src":"10178:1:6"}],"id":7087,"name":"BinaryOperation","src":"10171:8:6"}],"id":7088,"name":"TupleExpression","src":"10170:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7089,"name":"Identifier","src":"10183:7:6"}],"id":7090,"name":"BinaryOperation","src":"10170:20:6"}],"id":7091,"name":"Assignment","src":"10164:26:6"}],"id":7092,"name":"ExpressionStatement","src":"10164:26:6"}],"id":7093,"name":"Block","src":"9881:320:6"}],"id":7094,"name":"ForStatement","src":"9851:350:6"},{"attributes":{"assignments":[7096]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":7222,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7095,"name":"ElementaryTypeName","src":"10211:4:6"}],"id":7096,"name":"VariableDeclaration","src":"10211:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7097,"name":"Identifier","src":"10225:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7098,"name":"Literal","src":"10231:1:6"}],"id":7099,"name":"BinaryOperation","src":"10225:7:6"}],"id":7100,"name":"VariableDeclarationStatement","src":"10211:21:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7101,"name":"Identifier","src":"10245:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7102,"name":"Literal","src":"10251:1:6"}],"id":7103,"name":"BinaryOperation","src":"10245:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7104,"name":"Literal","src":"10256:1:6"}],"id":7105,"name":"BinaryOperation","src":"10245:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7106,"name":"Identifier","src":"10325:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7107,"name":"Identifier","src":"10332:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7108,"name":"Literal","src":"10339:1:6"}],"id":7109,"name":"BinaryOperation","src":"10332:8:6"}],"id":7110,"name":"TupleExpression","src":"10331:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7111,"name":"Identifier","src":"10344:7:6"}],"id":7112,"name":"BinaryOperation","src":"10331:20:6"}],"id":7113,"name":"Assignment","src":"10325:26:6"}],"id":7114,"name":"ExpressionStatement","src":"10325:26:6"}],"id":7115,"name":"Block","src":"10259:103:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7116,"name":"Identifier","src":"10371:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7117,"name":"Literal","src":"10377:1:6"}],"id":7118,"name":"BinaryOperation","src":"10371:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7119,"name":"Literal","src":"10382:1:6"}],"id":7120,"name":"BinaryOperation","src":"10371:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7121,"name":"Identifier","src":"10444:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7122,"name":"Identifier","src":"10451:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7123,"name":"Literal","src":"10458:1:6"}],"id":7124,"name":"BinaryOperation","src":"10451:8:6"}],"id":7125,"name":"TupleExpression","src":"10450:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7126,"name":"Identifier","src":"10464:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7127,"name":"Literal","src":"10475:1:6"}],"id":7128,"name":"BinaryOperation","src":"10464:12:6"}],"id":7129,"name":"TupleExpression","src":"10463:14:6"}],"id":7130,"name":"BinaryOperation","src":"10450:27:6"}],"id":7131,"name":"Assignment","src":"10444:33:6"}],"id":7132,"name":"ExpressionStatement","src":"10444:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7133,"name":"Identifier","src":"10491:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7134,"name":"Literal","src":"10501:1:6"}],"id":7135,"name":"Assignment","src":"10491:11:6"}],"id":7136,"name":"ExpressionStatement","src":"10491:11:6"}],"id":7137,"name":"Block","src":"10385:128:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7138,"name":"Identifier","src":"10522:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7139,"name":"Literal","src":"10528:1:6"}],"id":7140,"name":"BinaryOperation","src":"10522:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7141,"name":"Literal","src":"10533:1:6"}],"id":7142,"name":"BinaryOperation","src":"10522:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7143,"name":"Identifier","src":"10597:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7144,"name":"Identifier","src":"10604:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7145,"name":"Literal","src":"10611:1:6"}],"id":7146,"name":"BinaryOperation","src":"10604:8:6"}],"id":7147,"name":"TupleExpression","src":"10603:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7148,"name":"Identifier","src":"10617:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7149,"name":"Literal","src":"10628:1:6"}],"id":7150,"name":"BinaryOperation","src":"10617:12:6"}],"id":7151,"name":"TupleExpression","src":"10616:14:6"}],"id":7152,"name":"BinaryOperation","src":"10603:27:6"}],"id":7153,"name":"Assignment","src":"10597:33:6"}],"id":7154,"name":"ExpressionStatement","src":"10597:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7155,"name":"Identifier","src":"10644:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7156,"name":"Literal","src":"10654:1:6"}],"id":7157,"name":"Assignment","src":"10644:11:6"}],"id":7158,"name":"ExpressionStatement","src":"10644:11:6"}],"id":7159,"name":"Block","src":"10536:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7160,"name":"Identifier","src":"10675:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7161,"name":"Literal","src":"10681:1:6"}],"id":7162,"name":"BinaryOperation","src":"10675:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7163,"name":"Literal","src":"10686:1:6"}],"id":7164,"name":"BinaryOperation","src":"10675:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7165,"name":"Identifier","src":"10750:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7166,"name":"Identifier","src":"10757:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7167,"name":"Literal","src":"10764:1:6"}],"id":7168,"name":"BinaryOperation","src":"10757:8:6"}],"id":7169,"name":"TupleExpression","src":"10756:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7170,"name":"Identifier","src":"10770:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7171,"name":"Literal","src":"10781:1:6"}],"id":7172,"name":"BinaryOperation","src":"10770:12:6"}],"id":7173,"name":"TupleExpression","src":"10769:14:6"}],"id":7174,"name":"BinaryOperation","src":"10756:27:6"}],"id":7175,"name":"Assignment","src":"10750:33:6"}],"id":7176,"name":"ExpressionStatement","src":"10750:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7177,"name":"Identifier","src":"10797:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7178,"name":"Literal","src":"10807:1:6"}],"id":7179,"name":"Assignment","src":"10797:11:6"}],"id":7180,"name":"ExpressionStatement","src":"10797:11:6"}],"id":7181,"name":"Block","src":"10689:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7182,"name":"Identifier","src":"10828:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7183,"name":"Literal","src":"10834:1:6"}],"id":7184,"name":"BinaryOperation","src":"10828:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":7185,"name":"Literal","src":"10839:1:6"}],"id":7186,"name":"BinaryOperation","src":"10828:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7187,"name":"Identifier","src":"10904:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7188,"name":"Identifier","src":"10911:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7189,"name":"Literal","src":"10918:1:6"}],"id":7190,"name":"BinaryOperation","src":"10911:8:6"}],"id":7191,"name":"TupleExpression","src":"10910:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7192,"name":"Identifier","src":"10924:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7193,"name":"Literal","src":"10935:1:6"}],"id":7194,"name":"BinaryOperation","src":"10924:12:6"}],"id":7195,"name":"TupleExpression","src":"10923:14:6"}],"id":7196,"name":"BinaryOperation","src":"10910:27:6"}],"id":7197,"name":"Assignment","src":"10904:33:6"}],"id":7198,"name":"ExpressionStatement","src":"10904:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7199,"name":"Identifier","src":"10951:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7200,"name":"Literal","src":"10961:1:6"}],"id":7201,"name":"Assignment","src":"10951:11:6"}],"id":7202,"name":"ExpressionStatement","src":"10951:11:6"}],"id":7203,"name":"Block","src":"10842:131:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[7420,7421],"referencedDeclaration":7420,"type":"function () pure","value":"revert"},"id":7204,"name":"Identifier","src":"10993:6:6"}],"id":7205,"name":"FunctionCall","src":"10993:8:6"}],"id":7206,"name":"ExpressionStatement","src":"10993:8:6"}],"id":7207,"name":"Block","src":"10979:33:6"}],"id":7208,"name":"IfStatement","src":"10825:187:6"}],"id":7209,"name":"IfStatement","src":"10672:340:6"}],"id":7210,"name":"IfStatement","src":"10519:493:6"}],"id":7211,"name":"IfStatement","src":"10368:644:6"}],"id":7212,"name":"IfStatement","src":"10242:770:6"},{"attributes":{"functionReturnParameters":7014},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7213,"name":"ElementaryTypeNameExpression","src":"11029:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7214,"name":"Identifier","src":"11037:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7215,"name":"Literal","src":"11045:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7216,"name":"Identifier","src":"11051:6:6"}],"id":7217,"name":"BinaryOperation","src":"11045:12:6"}],"id":7218,"name":"TupleExpression","src":"11044:14:6"}],"id":7219,"name":"BinaryOperation","src":"11037:21:6"}],"id":7220,"name":"FunctionCall","src":"11029:30:6"}],"id":7221,"name":"Return","src":"11022:37:6"}],"id":7222,"name":"Block","src":"9767:1299:6"}],"id":7223,"name":"FunctionDefinition","src":"9668:1398:6"}],"id":7224,"name":"ContractDefinition","src":"26:11042:6"}],"id":7225,"name":"SourceUnit","src":"0:11069:6"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[729]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":557,"name":"PragmaDirective","src":"1401:23:7"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":558,"name":"PragmaDirective","src":"1425:33:7"},{"attributes":{"SourceUnit":556,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":559,"name":"ImportDirective","src":"1460:19:7"},{"attributes":{"SourceUnit":1854,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":560,"name":"ImportDirective","src":"1480:36:7"},{"attributes":{"SourceUnit":2013,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":561,"name":"ImportDirective","src":"1517:37:7"},{"attributes":{"SourceUnit":2083,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":562,"name":"ImportDirective","src":"1555:44:7"},{"attributes":{"SourceUnit":2574,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":563,"name":"ImportDirective","src":"1600:36:7"},{"attributes":{"SourceUnit":2761,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":564,"name":"ImportDirective","src":"1637:42:7"},{"attributes":{"SourceUnit":2831,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":565,"name":"ImportDirective","src":"1680:37:7"},{"attributes":{"SourceUnit":2922,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":566,"name":"ImportDirective","src":"1718:39:7"},{"attributes":{"SourceUnit":3005,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":567,"name":"ImportDirective","src":"1758:37:7"},{"attributes":{"contractDependencies":[1853,2012,2082,2573,2760,2830,2921,3004,5159],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[729,3004,2921,2830,2760,2573,2082,2012,1853,5159],"name":"PublicResolver","scope":730},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":1853,"type":"contract ABIResolver"},"id":568,"name":"UserDefinedTypeName","src":"1924:11:7"}],"id":569,"name":"InheritanceSpecifier","src":"1924:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":2012,"type":"contract AddrResolver"},"id":570,"name":"UserDefinedTypeName","src":"1937:12:7"}],"id":571,"name":"InheritanceSpecifier","src":"1937:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":2082,"type":"contract ContentHashResolver"},"id":572,"name":"UserDefinedTypeName","src":"1951:19:7"}],"id":573,"name":"InheritanceSpecifier","src":"1951:19:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":2573,"type":"contract DNSResolver"},"id":574,"name":"UserDefinedTypeName","src":"1972:11:7"}],"id":575,"name":"InheritanceSpecifier","src":"1972:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":2760,"type":"contract InterfaceResolver"},"id":576,"name":"UserDefinedTypeName","src":"1985:17:7"}],"id":577,"name":"InheritanceSpecifier","src":"1985:17:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":2830,"type":"contract NameResolver"},"id":578,"name":"UserDefinedTypeName","src":"2004:12:7"}],"id":579,"name":"InheritanceSpecifier","src":"2004:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":2921,"type":"contract PubkeyResolver"},"id":580,"name":"UserDefinedTypeName","src":"2018:14:7"}],"id":581,"name":"InheritanceSpecifier","src":"2018:14:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":3004,"type":"contract TextResolver"},"id":582,"name":"UserDefinedTypeName","src":"2034:12:7"}],"id":583,"name":"InheritanceSpecifier","src":"2034:12:7"},{"attributes":{"constant":false,"name":"ens","scope":729,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":555,"type":"contract ENS"},"id":584,"name":"UserDefinedTypeName","src":"2053:3:7"}],"id":585,"name":"VariableDeclaration","src":"2053:7:7"},{"attributes":{"constant":false,"name":"authorisations","scope":729,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":586,"name":"ElementaryTypeName","src":"2328:7:7"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":587,"name":"ElementaryTypeName","src":"2345:7:7"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":588,"name":"ElementaryTypeName","src":"2362:7:7"},{"attributes":{"name":"bool","type":"bool"},"id":589,"name":"ElementaryTypeName","src":"2371:4:7"}],"id":590,"name":"Mapping","src":"2354:22:7"}],"id":591,"name":"Mapping","src":"2337:40:7"}],"id":592,"name":"Mapping","src":"2320:58:7"}],"id":593,"name":"VariableDeclaration","src":"2320:80:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":603,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":594,"name":"ElementaryTypeName","src":"2434:7:7"}],"id":595,"name":"VariableDeclaration","src":"2434:20:7"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":603,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":596,"name":"ElementaryTypeName","src":"2456:7:7"}],"id":597,"name":"VariableDeclaration","src":"2456:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":603,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":598,"name":"ElementaryTypeName","src":"2479:7:7"}],"id":599,"name":"VariableDeclaration","src":"2479:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":603,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":600,"name":"ElementaryTypeName","src":"2503:4:7"}],"id":601,"name":"VariableDeclaration","src":"2503:17:7"}],"id":602,"name":"ParameterList","src":"2433:88:7"}],"id":603,"name":"EventDefinition","src":"2407:115:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":729,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":613,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":555,"type":"contract ENS"},"id":604,"name":"UserDefinedTypeName","src":"2540:3:7"}],"id":605,"name":"VariableDeclaration","src":"2540:8:7"}],"id":606,"name":"ParameterList","src":"2539:10:7"},{"attributes":{"parameters":[null]},"children":[],"id":607,"name":"ParameterList","src":"2557:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":585,"type":"contract ENS","value":"ens"},"id":608,"name":"Identifier","src":"2567:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"contract ENS","value":"_ens"},"id":609,"name":"Identifier","src":"2573:4:7"}],"id":610,"name":"Assignment","src":"2567:10:7"}],"id":611,"name":"ExpressionStatement","src":"2567:10:7"}],"id":612,"name":"Block","src":"2557:27:7"}],"id":613,"name":"FunctionDefinition","src":"2528:56:7"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":729,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":642,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":614,"name":"ElementaryTypeName","src":"3295:7:7"}],"id":615,"name":"VariableDeclaration","src":"3295:12:7"},{"attributes":{"constant":false,"name":"target","scope":642,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":616,"name":"ElementaryTypeName","src":"3309:7:7"}],"id":617,"name":"VariableDeclaration","src":"3309:14:7"},{"attributes":{"constant":false,"name":"isAuthorised","scope":642,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":618,"name":"ElementaryTypeName","src":"3325:4:7"}],"id":619,"name":"VariableDeclaration","src":"3325:17:7"}],"id":620,"name":"ParameterList","src":"3294:49:7"},{"attributes":{"parameters":[null]},"children":[],"id":621,"name":"ParameterList","src":"3353:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":593,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":622,"name":"Identifier","src":"3363:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":615,"type":"bytes32","value":"node"},"id":623,"name":"Identifier","src":"3378:4:7"}],"id":627,"name":"IndexAccess","src":"3363:20:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":624,"name":"Identifier","src":"3384:3:7"}],"id":625,"name":"MemberAccess","src":"3384:10:7"}],"id":628,"name":"IndexAccess","src":"3363:32:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":617,"type":"address","value":"target"},"id":626,"name":"Identifier","src":"3396:6:7"}],"id":629,"name":"IndexAccess","src":"3363:40:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":619,"type":"bool","value":"isAuthorised"},"id":630,"name":"Identifier","src":"3406:12:7"}],"id":631,"name":"Assignment","src":"3363:55:7"}],"id":632,"name":"ExpressionStatement","src":"3363:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":603,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":633,"name":"Identifier","src":"3433:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":615,"type":"bytes32","value":"node"},"id":634,"name":"Identifier","src":"3454:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":635,"name":"Identifier","src":"3460:3:7"}],"id":636,"name":"MemberAccess","src":"3460:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":617,"type":"address","value":"target"},"id":637,"name":"Identifier","src":"3472:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":619,"type":"bool","value":"isAuthorised"},"id":638,"name":"Identifier","src":"3480:12:7"}],"id":639,"name":"FunctionCall","src":"3433:60:7"}],"id":640,"name":"EmitStatement","src":"3428:65:7"}],"id":641,"name":"Block","src":"3353:147:7"}],"id":642,"name":"FunctionDefinition","src":"3269:231:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":729,"stateMutability":"view","superFunction":5114,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":671,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":643,"name":"ElementaryTypeName","src":"3528:7:7"}],"id":644,"name":"VariableDeclaration","src":"3528:12:7"}],"id":645,"name":"ParameterList","src":"3527:14:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":671,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":646,"name":"ElementaryTypeName","src":"3564:4:7"}],"id":647,"name":"VariableDeclaration","src":"3564:4:7"}],"id":648,"name":"ParameterList","src":"3563:6:7"},{"children":[{"attributes":{"assignments":[650]},"children":[{"attributes":{"constant":false,"name":"owner","scope":670,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":649,"name":"ElementaryTypeName","src":"3580:7:7"}],"id":650,"name":"VariableDeclaration","src":"3580:13:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":524,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":585,"type":"contract ENS","value":"ens"},"id":651,"name":"Identifier","src":"3596:3:7"}],"id":652,"name":"MemberAccess","src":"3596:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"bytes32","value":"node"},"id":653,"name":"Identifier","src":"3606:4:7"}],"id":654,"name":"FunctionCall","src":"3596:15:7"}],"id":655,"name":"VariableDeclarationStatement","src":"3580:31:7"},{"attributes":{"functionReturnParameters":648},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"owner"},"id":656,"name":"Identifier","src":"3628:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":657,"name":"Identifier","src":"3637:3:7"}],"id":658,"name":"MemberAccess","src":"3637:10:7"}],"id":659,"name":"BinaryOperation","src":"3628:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":593,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":660,"name":"Identifier","src":"3651:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"bytes32","value":"node"},"id":661,"name":"Identifier","src":"3666:4:7"}],"id":662,"name":"IndexAccess","src":"3651:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"owner"},"id":663,"name":"Identifier","src":"3672:5:7"}],"id":664,"name":"IndexAccess","src":"3651:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":665,"name":"Identifier","src":"3679:3:7"}],"id":666,"name":"MemberAccess","src":"3679:10:7"}],"id":667,"name":"IndexAccess","src":"3651:39:7"}],"id":668,"name":"BinaryOperation","src":"3628:62:7"}],"id":669,"name":"Return","src":"3621:69:7"}],"id":670,"name":"Block","src":"3570:127:7"}],"id":671,"name":"FunctionDefinition","src":"3506:191:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":729,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":728,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":672,"name":"ElementaryTypeName","src":"3722:5:7"}],"id":673,"name":"ArrayTypeName","src":"3722:7:7"}],"id":674,"name":"VariableDeclaration","src":"3722:21:7"}],"id":675,"name":"ParameterList","src":"3721:23:7"},{"children":[{"attributes":{"constant":false,"name":"results","scope":728,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":676,"name":"ElementaryTypeName","src":"3762:5:7"}],"id":677,"name":"ArrayTypeName","src":"3762:7:7"}],"id":678,"name":"VariableDeclaration","src":"3762:22:7"}],"id":679,"name":"ParameterList","src":"3761:24:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":678,"type":"bytes memory[] memory","value":"results"},"id":680,"name":"Identifier","src":"3796:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":681,"name":"ElementaryTypeName","src":"3810:5:7"}],"id":682,"name":"ArrayTypeName","src":"3810:7:7"}],"id":683,"name":"NewExpression","src":"3806:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":674,"type":"bytes calldata[] calldata","value":"data"},"id":684,"name":"Identifier","src":"3818:4:7"}],"id":685,"name":"MemberAccess","src":"3818:11:7"}],"id":686,"name":"FunctionCall","src":"3806:24:7"}],"id":687,"name":"Assignment","src":"3796:34:7"}],"id":688,"name":"ExpressionStatement","src":"3796:34:7"},{"children":[{"attributes":{"assignments":[690]},"children":[{"attributes":{"constant":false,"name":"i","scope":724,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":689,"name":"ElementaryTypeName","src":"3844:4:7"}],"id":690,"name":"VariableDeclaration","src":"3844:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":691,"name":"Literal","src":"3853:1:7"}],"id":692,"name":"VariableDeclarationStatement","src":"3844:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"uint256","value":"i"},"id":693,"name":"Identifier","src":"3856:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":674,"type":"bytes calldata[] calldata","value":"data"},"id":694,"name":"Identifier","src":"3860:4:7"}],"id":695,"name":"MemberAccess","src":"3860:11:7"}],"id":696,"name":"BinaryOperation","src":"3856:15:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"uint256","value":"i"},"id":697,"name":"Identifier","src":"3873:1:7"}],"id":698,"name":"UnaryOperation","src":"3873:3:7"}],"id":699,"name":"ExpressionStatement","src":"3873:3:7"},{"children":[{"attributes":{"assignments":[701,703]},"children":[{"attributes":{"constant":false,"name":"success","scope":723,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":700,"name":"ElementaryTypeName","src":"3893:4:7"}],"id":701,"name":"VariableDeclaration","src":"3893:12:7"},{"attributes":{"constant":false,"name":"result","scope":723,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":702,"name":"ElementaryTypeName","src":"3907:5:7"}],"id":703,"name":"VariableDeclaration","src":"3907:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$729","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":704,"name":"ElementaryTypeNameExpression","src":"3930:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7469,"type":"contract PublicResolver","value":"this"},"id":705,"name":"Identifier","src":"3938:4:7"}],"id":706,"name":"FunctionCall","src":"3930:13:7"}],"id":707,"name":"MemberAccess","src":"3930:26:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":674,"type":"bytes calldata[] calldata","value":"data"},"id":708,"name":"Identifier","src":"3957:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"uint256","value":"i"},"id":709,"name":"Identifier","src":"3962:1:7"}],"id":710,"name":"IndexAccess","src":"3957:7:7"}],"id":711,"name":"FunctionCall","src":"3930:35:7"}],"id":712,"name":"VariableDeclarationStatement","src":"3892:73:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":713,"name":"Identifier","src":"3979:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":701,"type":"bool","value":"success"},"id":714,"name":"Identifier","src":"3987:7:7"}],"id":715,"name":"FunctionCall","src":"3979:16:7"}],"id":716,"name":"ExpressionStatement","src":"3979:16:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":678,"type":"bytes memory[] memory","value":"results"},"id":717,"name":"Identifier","src":"4009:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"uint256","value":"i"},"id":718,"name":"Identifier","src":"4017:1:7"}],"id":719,"name":"IndexAccess","src":"4009:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":703,"type":"bytes memory","value":"result"},"id":720,"name":"Identifier","src":"4022:6:7"}],"id":721,"name":"Assignment","src":"4009:19:7"}],"id":722,"name":"ExpressionStatement","src":"4009:19:7"}],"id":723,"name":"Block","src":"3878:161:7"}],"id":724,"name":"ForStatement","src":"3840:199:7"},{"attributes":{"functionReturnParameters":679},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":678,"type":"bytes memory[] memory","value":"results"},"id":725,"name":"Identifier","src":"4055:7:7"}],"id":726,"name":"Return","src":"4048:14:7"}],"id":727,"name":"Block","src":"3786:283:7"}],"id":728,"name":"FunctionDefinition","src":"3703:366:7"}],"id":729,"name":"ContractDefinition","src":"1897:2174:7"}],"id":730,"name":"SourceUnit","src":"1401:2671:7"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[5777]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":5161,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"SourceUnit":7225,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":5778,"symbolAliases":[null],"unitAlias":""},"id":5162,"name":"ImportDirective","src":"26:29:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[5777],"name":"RRUtils","scope":5778},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7224,"type":"library ENSBytesUtils"},"id":5163,"name":"UserDefinedTypeName","src":"178:13:8"}],"id":5164,"name":"UsingForDirective","src":"172:26:8"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5211,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5165,"name":"ElementaryTypeName","src":"487:5:8"}],"id":5166,"name":"VariableDeclaration","src":"487:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5167,"name":"ElementaryTypeName","src":"506:4:8"}],"id":5168,"name":"VariableDeclaration","src":"506:11:8"}],"id":5169,"name":"ParameterList","src":"486:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5170,"name":"ElementaryTypeName","src":"541:4:8"}],"id":5171,"name":"VariableDeclaration","src":"541:4:8"}],"id":5172,"name":"ParameterList","src":"540:6:8"},{"children":[{"attributes":{"assignments":[5174]},"children":[{"attributes":{"constant":false,"name":"idx","scope":5210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5173,"name":"ElementaryTypeName","src":"557:4:8"}],"id":5174,"name":"VariableDeclaration","src":"557:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"uint256","value":"offset"},"id":5175,"name":"Identifier","src":"568:6:8"}],"id":5176,"name":"VariableDeclarationStatement","src":"557:17:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5177,"name":"Literal","src":"591:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7404,"type":"function (bool) pure","value":"assert"},"id":5178,"name":"Identifier","src":"611:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"uint256","value":"idx"},"id":5179,"name":"Identifier","src":"618:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5166,"type":"bytes memory","value":"self"},"id":5180,"name":"Identifier","src":"624:4:8"}],"id":5181,"name":"MemberAccess","src":"624:11:8"}],"id":5182,"name":"BinaryOperation","src":"618:17:8"}],"id":5183,"name":"FunctionCall","src":"611:25:8"}],"id":5184,"name":"ExpressionStatement","src":"611:25:8"},{"attributes":{"assignments":[5186]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":5204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5185,"name":"ElementaryTypeName","src":"650:4:8"}],"id":5186,"name":"VariableDeclaration","src":"650:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5166,"type":"bytes memory","value":"self"},"id":5187,"name":"Identifier","src":"666:4:8"}],"id":5188,"name":"MemberAccess","src":"666:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"uint256","value":"idx"},"id":5189,"name":"Identifier","src":"681:3:8"}],"id":5190,"name":"FunctionCall","src":"666:19:8"}],"id":5191,"name":"VariableDeclarationStatement","src":"650:35:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"uint256","value":"idx"},"id":5192,"name":"Identifier","src":"699:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"uint256","value":"labelLen"},"id":5193,"name":"Identifier","src":"706:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5194,"name":"Literal","src":"717:1:8"}],"id":5195,"name":"BinaryOperation","src":"706:12:8"}],"id":5196,"name":"Assignment","src":"699:19:8"}],"id":5197,"name":"ExpressionStatement","src":"699:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"uint256","value":"labelLen"},"id":5198,"name":"Identifier","src":"736:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5199,"name":"Literal","src":"748:1:8"}],"id":5200,"name":"BinaryOperation","src":"736:13:8"},{"children":[{"id":5201,"name":"Break","src":"769:5:8"}],"id":5202,"name":"Block","src":"751:38:8"}],"id":5203,"name":"IfStatement","src":"732:57:8"}],"id":5204,"name":"Block","src":"597:202:8"}],"id":5205,"name":"WhileStatement","src":"584:215:8"},{"attributes":{"functionReturnParameters":5172},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"uint256","value":"idx"},"id":5206,"name":"Identifier","src":"815:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"uint256","value":"offset"},"id":5207,"name":"Identifier","src":"821:6:8"}],"id":5208,"name":"BinaryOperation","src":"815:12:8"}],"id":5209,"name":"Return","src":"808:19:8"}],"id":5210,"name":"Block","src":"547:287:8"}],"id":5211,"name":"FunctionDefinition","src":"467:367:8"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5234,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5212,"name":"ElementaryTypeName","src":"1073:5:8"}],"id":5213,"name":"VariableDeclaration","src":"1073:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5214,"name":"ElementaryTypeName","src":"1092:4:8"}],"id":5215,"name":"VariableDeclaration","src":"1092:11:8"}],"id":5216,"name":"ParameterList","src":"1072:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":5234,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5217,"name":"ElementaryTypeName","src":"1127:5:8"}],"id":5218,"name":"VariableDeclaration","src":"1127:16:8"}],"id":5219,"name":"ParameterList","src":"1126:18:8"},{"children":[{"attributes":{"assignments":[5221]},"children":[{"attributes":{"constant":false,"name":"len","scope":5233,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5220,"name":"ElementaryTypeName","src":"1155:4:8"}],"id":5221,"name":"VariableDeclaration","src":"1155:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5211,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5222,"name":"Identifier","src":"1166:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5213,"type":"bytes memory","value":"self"},"id":5223,"name":"Identifier","src":"1177:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5215,"type":"uint256","value":"offset"},"id":5224,"name":"Identifier","src":"1183:6:8"}],"id":5225,"name":"FunctionCall","src":"1166:24:8"}],"id":5226,"name":"VariableDeclarationStatement","src":"1155:35:8"},{"attributes":{"functionReturnParameters":5219},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7001,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5213,"type":"bytes memory","value":"self"},"id":5227,"name":"Identifier","src":"1207:4:8"}],"id":5228,"name":"MemberAccess","src":"1207:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5215,"type":"uint256","value":"offset"},"id":5229,"name":"Identifier","src":"1222:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5221,"type":"uint256","value":"len"},"id":5230,"name":"Identifier","src":"1230:3:8"}],"id":5231,"name":"FunctionCall","src":"1207:27:8"}],"id":5232,"name":"Return","src":"1200:34:8"}],"id":5233,"name":"Block","src":"1145:96:8"}],"id":5234,"name":"FunctionDefinition","src":"1055:186:8"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5283,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5235,"name":"ElementaryTypeName","src":"1541:5:8"}],"id":5236,"name":"VariableDeclaration","src":"1541:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5237,"name":"ElementaryTypeName","src":"1560:4:8"}],"id":5238,"name":"VariableDeclaration","src":"1560:11:8"}],"id":5239,"name":"ParameterList","src":"1540:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5240,"name":"ElementaryTypeName","src":"1595:4:8"}],"id":5241,"name":"VariableDeclaration","src":"1595:4:8"}],"id":5242,"name":"ParameterList","src":"1594:6:8"},{"children":[{"attributes":{"assignments":[5244]},"children":[{"attributes":{"constant":false,"name":"count","scope":5282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5243,"name":"ElementaryTypeName","src":"1611:4:8"}],"id":5244,"name":"VariableDeclaration","src":"1611:10:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5245,"name":"Literal","src":"1624:1:8"}],"id":5246,"name":"VariableDeclarationStatement","src":"1611:14:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5247,"name":"Literal","src":"1642:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7404,"type":"function (bool) pure","value":"assert"},"id":5248,"name":"Identifier","src":"1662:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"uint256","value":"offset"},"id":5249,"name":"Identifier","src":"1669:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"bytes memory","value":"self"},"id":5250,"name":"Identifier","src":"1678:4:8"}],"id":5251,"name":"MemberAccess","src":"1678:11:8"}],"id":5252,"name":"BinaryOperation","src":"1669:20:8"}],"id":5253,"name":"FunctionCall","src":"1662:28:8"}],"id":5254,"name":"ExpressionStatement","src":"1662:28:8"},{"attributes":{"assignments":[5256]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":5278,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5255,"name":"ElementaryTypeName","src":"1704:4:8"}],"id":5256,"name":"VariableDeclaration","src":"1704:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"bytes memory","value":"self"},"id":5257,"name":"Identifier","src":"1720:4:8"}],"id":5258,"name":"MemberAccess","src":"1720:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"uint256","value":"offset"},"id":5259,"name":"Identifier","src":"1735:6:8"}],"id":5260,"name":"FunctionCall","src":"1720:22:8"}],"id":5261,"name":"VariableDeclarationStatement","src":"1704:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"uint256","value":"offset"},"id":5262,"name":"Identifier","src":"1756:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5256,"type":"uint256","value":"labelLen"},"id":5263,"name":"Identifier","src":"1766:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5264,"name":"Literal","src":"1777:1:8"}],"id":5265,"name":"BinaryOperation","src":"1766:12:8"}],"id":5266,"name":"Assignment","src":"1756:22:8"}],"id":5267,"name":"ExpressionStatement","src":"1756:22:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5256,"type":"uint256","value":"labelLen"},"id":5268,"name":"Identifier","src":"1796:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5269,"name":"Literal","src":"1808:1:8"}],"id":5270,"name":"BinaryOperation","src":"1796:13:8"},{"children":[{"id":5271,"name":"Break","src":"1829:5:8"}],"id":5272,"name":"Block","src":"1811:38:8"}],"id":5273,"name":"IfStatement","src":"1792:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5244,"type":"uint256","value":"count"},"id":5274,"name":"Identifier","src":"1862:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5275,"name":"Literal","src":"1871:1:8"}],"id":5276,"name":"Assignment","src":"1862:10:8"}],"id":5277,"name":"ExpressionStatement","src":"1862:10:8"}],"id":5278,"name":"Block","src":"1648:235:8"}],"id":5279,"name":"WhileStatement","src":"1635:248:8"},{"attributes":{"functionReturnParameters":5242},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5244,"type":"uint256","value":"count"},"id":5280,"name":"Identifier","src":"1899:5:8"}],"id":5281,"name":"Return","src":"1892:12:8"}],"id":5282,"name":"Block","src":"1601:310:8"}],"id":5283,"name":"FunctionDefinition","src":"1521:390:8"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":5777,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":5298,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5284,"name":"ElementaryTypeName","src":"2006:5:8"}],"id":5285,"name":"VariableDeclaration","src":"2006:10:8"},{"attributes":{"constant":false,"name":"offset","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5286,"name":"ElementaryTypeName","src":"2026:4:8"}],"id":5287,"name":"VariableDeclaration","src":"2026:11:8"},{"attributes":{"constant":false,"name":"dnstype","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5288,"name":"ElementaryTypeName","src":"2047:6:8"}],"id":5289,"name":"VariableDeclaration","src":"2047:14:8"},{"attributes":{"constant":false,"name":"class","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5290,"name":"ElementaryTypeName","src":"2071:6:8"}],"id":5291,"name":"VariableDeclaration","src":"2071:12:8"},{"attributes":{"constant":false,"name":"ttl","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":5292,"name":"ElementaryTypeName","src":"2093:6:8"}],"id":5293,"name":"VariableDeclaration","src":"2093:10:8"},{"attributes":{"constant":false,"name":"rdataOffset","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5294,"name":"ElementaryTypeName","src":"2113:4:8"}],"id":5295,"name":"VariableDeclaration","src":"2113:16:8"},{"attributes":{"constant":false,"name":"nextOffset","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5296,"name":"ElementaryTypeName","src":"2139:4:8"}],"id":5297,"name":"VariableDeclaration","src":"2139:15:8"}],"id":5298,"name":"StructDefinition","src":"1978:183:8"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5324,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5299,"name":"ElementaryTypeName","src":"2387:5:8"}],"id":5300,"name":"VariableDeclaration","src":"2387:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5324,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5301,"name":"ElementaryTypeName","src":"2406:4:8"}],"id":5302,"name":"VariableDeclaration","src":"2406:11:8"}],"id":5303,"name":"ParameterList","src":"2386:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":5324,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5304,"name":"UserDefinedTypeName","src":"2442:10:8"}],"id":5305,"name":"VariableDeclaration","src":"2442:21:8"}],"id":5306,"name":"ParameterList","src":"2441:23:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5307,"name":"Identifier","src":"2475:3:8"}],"id":5309,"name":"MemberAccess","src":"2475:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5300,"type":"bytes memory","value":"self"},"id":5310,"name":"Identifier","src":"2486:4:8"}],"id":5311,"name":"Assignment","src":"2475:15:8"}],"id":5312,"name":"ExpressionStatement","src":"2475:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":5297,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5313,"name":"Identifier","src":"2500:3:8"}],"id":5315,"name":"MemberAccess","src":"2500:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5302,"type":"uint256","value":"offset"},"id":5316,"name":"Identifier","src":"2517:6:8"}],"id":5317,"name":"Assignment","src":"2500:23:8"}],"id":5318,"name":"ExpressionStatement","src":"2500:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$5298_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5441,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":5319,"name":"Identifier","src":"2533:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5320,"name":"Identifier","src":"2538:3:8"}],"id":5321,"name":"FunctionCall","src":"2533:9:8"}],"id":5322,"name":"ExpressionStatement","src":"2533:9:8"}],"id":5323,"name":"Block","src":"2465:84:8"}],"id":5324,"name":"FunctionDefinition","src":"2367:182:8"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5339,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5325,"name":"UserDefinedTypeName","src":"2734:10:8"}],"id":5326,"name":"VariableDeclaration","src":"2734:22:8"}],"id":5327,"name":"ParameterList","src":"2733:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5339,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5328,"name":"ElementaryTypeName","src":"2780:4:8"}],"id":5329,"name":"VariableDeclaration","src":"2780:4:8"}],"id":5330,"name":"ParameterList","src":"2779:6:8"},{"children":[{"attributes":{"functionReturnParameters":5330},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5326,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5331,"name":"Identifier","src":"2803:4:8"}],"id":5332,"name":"MemberAccess","src":"2803:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5326,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5333,"name":"Identifier","src":"2818:4:8"}],"id":5334,"name":"MemberAccess","src":"2818:9:8"}],"id":5335,"name":"MemberAccess","src":"2818:16:8"}],"id":5336,"name":"BinaryOperation","src":"2803:31:8"}],"id":5337,"name":"Return","src":"2796:38:8"}],"id":5338,"name":"Block","src":"2786:55:8"}],"id":5339,"name":"FunctionDefinition","src":"2720:121:8"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5441,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5340,"name":"UserDefinedTypeName","src":"2978:10:8"}],"id":5341,"name":"VariableDeclaration","src":"2978:22:8"}],"id":5342,"name":"ParameterList","src":"2977:24:8"},{"attributes":{"parameters":[null]},"children":[],"id":5343,"name":"ParameterList","src":"3016:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5344,"name":"Identifier","src":"3026:4:8"}],"id":5346,"name":"MemberAccess","src":"3026:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":5297,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5347,"name":"Identifier","src":"3040:4:8"}],"id":5348,"name":"MemberAccess","src":"3040:15:8"}],"id":5349,"name":"Assignment","src":"3026:29:8"}],"id":5350,"name":"ExpressionStatement","src":"3026:29:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5351,"name":"Identifier","src":"3069:4:8"}],"id":5352,"name":"MemberAccess","src":"3069:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5353,"name":"Identifier","src":"3084:4:8"}],"id":5354,"name":"MemberAccess","src":"3084:9:8"}],"id":5355,"name":"MemberAccess","src":"3084:16:8"}],"id":5356,"name":"BinaryOperation","src":"3069:31:8"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":5343},"id":5357,"name":"Return","src":"3116:7:8"}],"id":5358,"name":"Block","src":"3102:31:8"}],"id":5359,"name":"IfStatement","src":"3065:68:8"},{"attributes":{"assignments":[5361]},"children":[{"attributes":{"constant":false,"name":"off","scope":5440,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5360,"name":"ElementaryTypeName","src":"3168:4:8"}],"id":5361,"name":"VariableDeclaration","src":"3168:8:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5362,"name":"Identifier","src":"3179:4:8"}],"id":5363,"name":"MemberAccess","src":"3179:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5211,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5364,"name":"Identifier","src":"3193:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5365,"name":"Identifier","src":"3204:4:8"}],"id":5366,"name":"MemberAccess","src":"3204:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5367,"name":"Identifier","src":"3215:4:8"}],"id":5368,"name":"MemberAccess","src":"3215:11:8"}],"id":5369,"name":"FunctionCall","src":"3193:34:8"}],"id":5370,"name":"BinaryOperation","src":"3179:48:8"}],"id":5371,"name":"VariableDeclarationStatement","src":"3168:59:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":5289,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5372,"name":"Identifier","src":"3275:4:8"}],"id":5374,"name":"MemberAccess","src":"3275:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6830,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5375,"name":"Identifier","src":"3290:4:8"}],"id":5376,"name":"MemberAccess","src":"3290:9:8"}],"id":5377,"name":"MemberAccess","src":"3290:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5378,"name":"Identifier","src":"3311:3:8"}],"id":5379,"name":"FunctionCall","src":"3290:25:8"}],"id":5380,"name":"Assignment","src":"3275:40:8"}],"id":5381,"name":"ExpressionStatement","src":"3275:40:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5382,"name":"Identifier","src":"3325:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5383,"name":"Literal","src":"3332:1:8"}],"id":5384,"name":"Assignment","src":"3325:8:8"}],"id":5385,"name":"ExpressionStatement","src":"3325:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":5291,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5386,"name":"Identifier","src":"3343:4:8"}],"id":5388,"name":"MemberAccess","src":"3343:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6830,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5389,"name":"Identifier","src":"3356:4:8"}],"id":5390,"name":"MemberAccess","src":"3356:9:8"}],"id":5391,"name":"MemberAccess","src":"3356:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5392,"name":"Identifier","src":"3377:3:8"}],"id":5393,"name":"FunctionCall","src":"3356:25:8"}],"id":5394,"name":"Assignment","src":"3343:38:8"}],"id":5395,"name":"ExpressionStatement","src":"3343:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5396,"name":"Identifier","src":"3391:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5397,"name":"Literal","src":"3398:1:8"}],"id":5398,"name":"Assignment","src":"3391:8:8"}],"id":5399,"name":"ExpressionStatement","src":"3391:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":5293,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5400,"name":"Identifier","src":"3409:4:8"}],"id":5402,"name":"MemberAccess","src":"3409:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":6850,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5403,"name":"Identifier","src":"3420:4:8"}],"id":5404,"name":"MemberAccess","src":"3420:9:8"}],"id":5405,"name":"MemberAccess","src":"3420:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5406,"name":"Identifier","src":"3441:3:8"}],"id":5407,"name":"FunctionCall","src":"3420:25:8"}],"id":5408,"name":"Assignment","src":"3409:36:8"}],"id":5409,"name":"ExpressionStatement","src":"3409:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5410,"name":"Identifier","src":"3455:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5411,"name":"Literal","src":"3462:1:8"}],"id":5412,"name":"Assignment","src":"3455:8:8"}],"id":5413,"name":"ExpressionStatement","src":"3455:8:8"},{"attributes":{"assignments":[5415]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":5440,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5414,"name":"ElementaryTypeName","src":"3500:4:8"}],"id":5415,"name":"VariableDeclaration","src":"3500:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6830,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5416,"name":"Identifier","src":"3519:4:8"}],"id":5417,"name":"MemberAccess","src":"3519:9:8"}],"id":5418,"name":"MemberAccess","src":"3519:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5419,"name":"Identifier","src":"3540:3:8"}],"id":5420,"name":"FunctionCall","src":"3519:25:8"}],"id":5421,"name":"VariableDeclarationStatement","src":"3500:44:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5422,"name":"Identifier","src":"3554:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5423,"name":"Literal","src":"3561:1:8"}],"id":5424,"name":"Assignment","src":"3554:8:8"}],"id":5425,"name":"ExpressionStatement","src":"3554:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":5295,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5426,"name":"Identifier","src":"3572:4:8"}],"id":5428,"name":"MemberAccess","src":"3572:16:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5429,"name":"Identifier","src":"3591:3:8"}],"id":5430,"name":"Assignment","src":"3572:22:8"}],"id":5431,"name":"ExpressionStatement","src":"3572:22:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":5297,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5432,"name":"Identifier","src":"3604:4:8"}],"id":5434,"name":"MemberAccess","src":"3604:15:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5435,"name":"Identifier","src":"3622:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5415,"type":"uint256","value":"rdataLength"},"id":5436,"name":"Identifier","src":"3628:11:8"}],"id":5437,"name":"BinaryOperation","src":"3622:17:8"}],"id":5438,"name":"Assignment","src":"3604:35:8"}],"id":5439,"name":"ExpressionStatement","src":"3604:35:8"}],"id":5440,"name":"Block","src":"3016:630:8"}],"id":5441,"name":"FunctionDefinition","src":"2964:682:8"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5462,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5442,"name":"UserDefinedTypeName","src":"3836:10:8"}],"id":5443,"name":"VariableDeclaration","src":"3836:22:8"}],"id":5444,"name":"ParameterList","src":"3835:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5462,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5445,"name":"ElementaryTypeName","src":"3882:5:8"}],"id":5446,"name":"VariableDeclaration","src":"3882:12:8"}],"id":5447,"name":"ParameterList","src":"3881:14:8"},{"children":[{"attributes":{"functionReturnParameters":5447},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7001,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5443,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5448,"name":"Identifier","src":"3913:4:8"}],"id":5449,"name":"MemberAccess","src":"3913:9:8"}],"id":5450,"name":"MemberAccess","src":"3913:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5443,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5451,"name":"Identifier","src":"3933:4:8"}],"id":5452,"name":"MemberAccess","src":"3933:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5211,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5453,"name":"Identifier","src":"3946:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5443,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5454,"name":"Identifier","src":"3957:4:8"}],"id":5455,"name":"MemberAccess","src":"3957:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5443,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5456,"name":"Identifier","src":"3968:4:8"}],"id":5457,"name":"MemberAccess","src":"3968:11:8"}],"id":5458,"name":"FunctionCall","src":"3946:34:8"}],"id":5459,"name":"FunctionCall","src":"3913:68:8"}],"id":5460,"name":"Return","src":"3906:75:8"}],"id":5461,"name":"Block","src":"3896:92:8"}],"id":5462,"name":"FunctionDefinition","src":"3822:166:8"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5482,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5463,"name":"UserDefinedTypeName","src":"4176:10:8"}],"id":5464,"name":"VariableDeclaration","src":"4176:22:8"}],"id":5465,"name":"ParameterList","src":"4175:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5482,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5466,"name":"ElementaryTypeName","src":"4222:5:8"}],"id":5467,"name":"VariableDeclaration","src":"4222:12:8"}],"id":5468,"name":"ParameterList","src":"4221:14:8"},{"children":[{"attributes":{"functionReturnParameters":5468},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7001,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5469,"name":"Identifier","src":"4253:4:8"}],"id":5470,"name":"MemberAccess","src":"4253:9:8"}],"id":5471,"name":"MemberAccess","src":"4253:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":5295,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5472,"name":"Identifier","src":"4273:4:8"}],"id":5473,"name":"MemberAccess","src":"4273:16:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":5297,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5474,"name":"Identifier","src":"4291:4:8"}],"id":5475,"name":"MemberAccess","src":"4291:15:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":5295,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5476,"name":"Identifier","src":"4309:4:8"}],"id":5477,"name":"MemberAccess","src":"4309:16:8"}],"id":5478,"name":"BinaryOperation","src":"4291:34:8"}],"id":5479,"name":"FunctionCall","src":"4253:73:8"}],"id":5480,"name":"Return","src":"4246:80:8"}],"id":5481,"name":"Block","src":"4236:97:8"}],"id":5482,"name":"FunctionDefinition","src":"4161:172:8"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5602,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5483,"name":"ElementaryTypeName","src":"4675:5:8"}],"id":5484,"name":"VariableDeclaration","src":"4675:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5602,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5485,"name":"ElementaryTypeName","src":"4694:4:8"}],"id":5486,"name":"VariableDeclaration","src":"4694:11:8"},{"attributes":{"constant":false,"name":"rrtype","scope":5602,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5487,"name":"ElementaryTypeName","src":"4707:6:8"}],"id":5488,"name":"VariableDeclaration","src":"4707:13:8"}],"id":5489,"name":"ParameterList","src":"4674:47:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5602,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5490,"name":"ElementaryTypeName","src":"4745:4:8"}],"id":5491,"name":"VariableDeclaration","src":"4745:4:8"}],"id":5492,"name":"ParameterList","src":"4744:6:8"},{"children":[{"attributes":{"assignments":[5494]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":5601,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5493,"name":"ElementaryTypeName","src":"4761:5:8"}],"id":5494,"name":"VariableDeclaration","src":"4761:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5495,"name":"ElementaryTypeNameExpression","src":"4780:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5488,"type":"uint16","value":"rrtype"},"id":5496,"name":"Identifier","src":"4786:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":5497,"name":"Literal","src":"4796:1:8"}],"id":5498,"name":"BinaryOperation","src":"4786:11:8"}],"id":5499,"name":"FunctionCall","src":"4780:18:8"}],"id":5500,"name":"VariableDeclarationStatement","src":"4761:37:8"},{"attributes":{"assignments":[5502]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":5601,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5501,"name":"ElementaryTypeName","src":"4808:5:8"}],"id":5502,"name":"VariableDeclaration","src":"4808:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5503,"name":"ElementaryTypeNameExpression","src":"4827:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5488,"type":"uint16","value":"rrtype"},"id":5504,"name":"Identifier","src":"4834:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":5505,"name":"Literal","src":"4843:4:8"}],"id":5506,"name":"BinaryOperation","src":"4834:13:8"}],"id":5507,"name":"TupleExpression","src":"4833:15:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":5508,"name":"Literal","src":"4851:1:8"}],"id":5509,"name":"BinaryOperation","src":"4833:19:8"}],"id":5510,"name":"FunctionCall","src":"4827:26:8"}],"id":5511,"name":"VariableDeclarationStatement","src":"4808:45:8"},{"attributes":{"assignments":[5513]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":5601,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5512,"name":"ElementaryTypeName","src":"4863:5:8"}],"id":5513,"name":"VariableDeclaration","src":"4863:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5514,"name":"ElementaryTypeNameExpression","src":"4885:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5515,"name":"ElementaryTypeNameExpression","src":"4891:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5516,"name":"Literal","src":"4897:1:8"}],"id":5517,"name":"FunctionCall","src":"4891:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5518,"name":"ElementaryTypeNameExpression","src":"4904:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":5519,"name":"Literal","src":"4910:1:8"}],"id":5520,"name":"FunctionCall","src":"4904:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5521,"name":"ElementaryTypeNameExpression","src":"4915:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5488,"type":"uint16","value":"rrtype"},"id":5522,"name":"Identifier","src":"4921:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":5523,"name":"Literal","src":"4930:3:8"}],"id":5524,"name":"BinaryOperation","src":"4921:12:8"}],"id":5525,"name":"FunctionCall","src":"4915:19:8"}],"id":5526,"name":"BinaryOperation","src":"4904:30:8"}],"id":5527,"name":"TupleExpression","src":"4903:32:8"}],"id":5528,"name":"BinaryOperation","src":"4891:44:8"}],"id":5529,"name":"FunctionCall","src":"4885:51:8"}],"id":5530,"name":"VariableDeclarationStatement","src":"4863:73:8"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[5532]},"children":[{"attributes":{"constant":false,"name":"off","scope":5598,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5531,"name":"ElementaryTypeName","src":"4951:4:8"}],"id":5532,"name":"VariableDeclaration","src":"4951:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5486,"type":"uint256","value":"offset"},"id":5533,"name":"Identifier","src":"4962:6:8"}],"id":5534,"name":"VariableDeclarationStatement","src":"4951:17:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5535,"name":"Identifier","src":"4970:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes memory","value":"self"},"id":5536,"name":"Identifier","src":"4976:4:8"}],"id":5537,"name":"MemberAccess","src":"4976:11:8"}],"id":5538,"name":"BinaryOperation","src":"4970:17:8"},{"children":[{"attributes":{"assignments":[5540]},"children":[{"attributes":{"constant":false,"name":"window","scope":5597,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5539,"name":"ElementaryTypeName","src":"5004:5:8"}],"id":5540,"name":"VariableDeclaration","src":"5004:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes memory","value":"self"},"id":5541,"name":"Identifier","src":"5019:4:8"}],"id":5542,"name":"MemberAccess","src":"5019:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5543,"name":"Identifier","src":"5034:3:8"}],"id":5544,"name":"FunctionCall","src":"5019:19:8"}],"id":5545,"name":"VariableDeclarationStatement","src":"5004:34:8"},{"attributes":{"assignments":[5547]},"children":[{"attributes":{"constant":false,"name":"len","scope":5597,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5546,"name":"ElementaryTypeName","src":"5052:5:8"}],"id":5547,"name":"VariableDeclaration","src":"5052:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes memory","value":"self"},"id":5548,"name":"Identifier","src":"5064:4:8"}],"id":5549,"name":"MemberAccess","src":"5064:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5550,"name":"Identifier","src":"5079:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5551,"name":"Literal","src":"5085:1:8"}],"id":5552,"name":"BinaryOperation","src":"5079:7:8"}],"id":5553,"name":"FunctionCall","src":"5064:23:8"}],"id":5554,"name":"VariableDeclarationStatement","src":"5052:35:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5494,"type":"uint8","value":"typeWindow"},"id":5555,"name":"Identifier","src":"5105:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint8","value":"window"},"id":5556,"name":"Identifier","src":"5118:6:8"}],"id":5557,"name":"BinaryOperation","src":"5105:19:8"},{"children":[{"attributes":{"functionReturnParameters":5492},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":5558,"name":"Literal","src":"5213:5:8"}],"id":5559,"name":"Return","src":"5206:12:8"}],"id":5560,"name":"Block","src":"5126:107:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5494,"type":"uint8","value":"typeWindow"},"id":5561,"name":"Identifier","src":"5243:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint8","value":"window"},"id":5562,"name":"Identifier","src":"5257:6:8"}],"id":5563,"name":"BinaryOperation","src":"5243:20:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5547,"type":"uint8","value":"len"},"id":5564,"name":"Identifier","src":"5329:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":5565,"name":"Literal","src":"5335:1:8"}],"id":5566,"name":"BinaryOperation","src":"5329:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5502,"type":"uint8","value":"windowByte"},"id":5567,"name":"Identifier","src":"5340:10:8"}],"id":5568,"name":"BinaryOperation","src":"5329:21:8"},{"children":[{"attributes":{"functionReturnParameters":5492},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":5569,"name":"Literal","src":"5443:5:8"}],"id":5570,"name":"Return","src":"5436:12:8"}],"id":5571,"name":"Block","src":"5352:115:8"}],"id":5572,"name":"IfStatement","src":"5325:142:8"},{"attributes":{"functionReturnParameters":5492},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes memory","value":"self"},"id":5573,"name":"Identifier","src":"5492:4:8"}],"id":5574,"name":"MemberAccess","src":"5492:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5575,"name":"Identifier","src":"5507:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5502,"type":"uint8","value":"windowByte"},"id":5576,"name":"Identifier","src":"5513:10:8"}],"id":5577,"name":"BinaryOperation","src":"5507:16:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5578,"name":"Literal","src":"5526:1:8"}],"id":5579,"name":"BinaryOperation","src":"5507:20:8"}],"id":5580,"name":"FunctionCall","src":"5492:36:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5513,"type":"uint8","value":"windowBitmask"},"id":5581,"name":"Identifier","src":"5531:13:8"}],"id":5582,"name":"BinaryOperation","src":"5492:52:8"}],"id":5583,"name":"TupleExpression","src":"5491:54:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5584,"name":"Literal","src":"5549:1:8"}],"id":5585,"name":"BinaryOperation","src":"5491:59:8"}],"id":5586,"name":"Return","src":"5484:66:8"}],"id":5587,"name":"Block","src":"5265:300:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5588,"name":"Identifier","src":"5630:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5547,"type":"uint8","value":"len"},"id":5589,"name":"Identifier","src":"5637:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5590,"name":"Literal","src":"5643:1:8"}],"id":5591,"name":"BinaryOperation","src":"5637:7:8"}],"id":5592,"name":"Assignment","src":"5630:14:8"}],"id":5593,"name":"ExpressionStatement","src":"5630:14:8"}],"id":5594,"name":"Block","src":"5571:88:8"}],"id":5595,"name":"IfStatement","src":"5239:420:8"}],"id":5596,"name":"IfStatement","src":"5101:558:8"}],"id":5597,"name":"Block","src":"4990:679:8"}],"id":5598,"name":"ForStatement","src":"4946:723:8"},{"attributes":{"functionReturnParameters":5492},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":5599,"name":"Literal","src":"5686:5:8"}],"id":5600,"name":"Return","src":"5679:12:8"}],"id":5601,"name":"Block","src":"4751:947:8"}],"id":5602,"name":"FunctionDefinition","src":"4650:1048:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5757,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5603,"name":"ElementaryTypeName","src":"5726:5:8"}],"id":5604,"name":"VariableDeclaration","src":"5726:17:8"},{"attributes":{"constant":false,"name":"other","scope":5757,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5605,"name":"ElementaryTypeName","src":"5745:5:8"}],"id":5606,"name":"VariableDeclaration","src":"5745:18:8"}],"id":5607,"name":"ParameterList","src":"5725:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5757,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":5608,"name":"ElementaryTypeName","src":"5788:3:8"}],"id":5609,"name":"VariableDeclaration","src":"5788:3:8"}],"id":5610,"name":"ParameterList","src":"5787:5:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6794,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5611,"name":"Identifier","src":"5807:4:8"}],"id":5612,"name":"MemberAccess","src":"5807:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5613,"name":"Identifier","src":"5819:5:8"}],"id":5614,"name":"FunctionCall","src":"5807:18:8"},{"children":[{"attributes":{"functionReturnParameters":5610},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5615,"name":"Literal","src":"5848:1:8"}],"id":5616,"name":"Return","src":"5841:8:8"}],"id":5617,"name":"Block","src":"5827:33:8"}],"id":5618,"name":"IfStatement","src":"5803:57:8"},{"attributes":{"assignments":[5620],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5619,"name":"ElementaryTypeName","src":"5870:4:8"}],"id":5620,"name":"VariableDeclaration","src":"5870:8:8"}],"id":5621,"name":"VariableDeclarationStatement","src":"5870:8:8"},{"attributes":{"assignments":[5623],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5622,"name":"ElementaryTypeName","src":"5888:4:8"}],"id":5623,"name":"VariableDeclaration","src":"5888:13:8"}],"id":5624,"name":"VariableDeclarationStatement","src":"5888:13:8"},{"attributes":{"assignments":[5626],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5625,"name":"ElementaryTypeName","src":"5911:4:8"}],"id":5626,"name":"VariableDeclaration","src":"5911:12:8"}],"id":5627,"name":"VariableDeclarationStatement","src":"5911:12:8"},{"attributes":{"assignments":[5629],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5628,"name":"ElementaryTypeName","src":"5933:4:8"}],"id":5629,"name":"VariableDeclaration","src":"5933:17:8"}],"id":5630,"name":"VariableDeclarationStatement","src":"5933:17:8"},{"attributes":{"assignments":[5632]},"children":[{"attributes":{"constant":false,"name":"counts","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5631,"name":"ElementaryTypeName","src":"5960:4:8"}],"id":5632,"name":"VariableDeclaration","src":"5960:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":5283,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":5633,"name":"Identifier","src":"5974:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5634,"name":"Identifier","src":"5985:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5635,"name":"Literal","src":"5991:1:8"}],"id":5636,"name":"FunctionCall","src":"5974:19:8"}],"id":5637,"name":"VariableDeclarationStatement","src":"5960:33:8"},{"attributes":{"assignments":[5639]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5638,"name":"ElementaryTypeName","src":"6003:4:8"}],"id":5639,"name":"VariableDeclaration","src":"6003:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":5283,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":5640,"name":"Identifier","src":"6022:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5641,"name":"Identifier","src":"6033:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5642,"name":"Literal","src":"6040:1:8"}],"id":5643,"name":"FunctionCall","src":"6022:20:8"}],"id":5644,"name":"VariableDeclarationStatement","src":"6003:39:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5645,"name":"Identifier","src":"6153:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5639,"type":"uint256","value":"othercounts"},"id":5646,"name":"Identifier","src":"6162:11:8"}],"id":5647,"name":"BinaryOperation","src":"6153:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5626,"type":"uint256","value":"prevoff"},"id":5648,"name":"Identifier","src":"6189:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5649,"name":"Identifier","src":"6199:3:8"}],"id":5650,"name":"Assignment","src":"6189:13:8"}],"id":5651,"name":"ExpressionStatement","src":"6189:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5652,"name":"Identifier","src":"6216:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":5653,"name":"Identifier","src":"6222:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5654,"name":"Identifier","src":"6231:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5655,"name":"Identifier","src":"6237:3:8"}],"id":5656,"name":"FunctionCall","src":"6222:19:8"}],"id":5657,"name":"Assignment","src":"6216:25:8"}],"id":5658,"name":"ExpressionStatement","src":"6216:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5659,"name":"Identifier","src":"6255:6:8"}],"id":5660,"name":"UnaryOperation","src":"6255:8:8"}],"id":5661,"name":"ExpressionStatement","src":"6255:8:8"}],"id":5662,"name":"Block","src":"6175:99:8"}],"id":5663,"name":"WhileStatement","src":"6146:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5639,"type":"uint256","value":"othercounts"},"id":5664,"name":"Identifier","src":"6291:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5665,"name":"Identifier","src":"6305:6:8"}],"id":5666,"name":"BinaryOperation","src":"6291:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5629,"type":"uint256","value":"otherprevoff"},"id":5667,"name":"Identifier","src":"6327:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5668,"name":"Identifier","src":"6342:8:8"}],"id":5669,"name":"Assignment","src":"6327:23:8"}],"id":5670,"name":"ExpressionStatement","src":"6327:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5671,"name":"Identifier","src":"6364:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":5672,"name":"Identifier","src":"6375:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5673,"name":"Identifier","src":"6384:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5674,"name":"Identifier","src":"6391:8:8"}],"id":5675,"name":"FunctionCall","src":"6375:25:8"}],"id":5676,"name":"Assignment","src":"6364:36:8"}],"id":5677,"name":"ExpressionStatement","src":"6364:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5639,"type":"uint256","value":"othercounts"},"id":5678,"name":"Identifier","src":"6414:11:8"}],"id":5679,"name":"UnaryOperation","src":"6414:13:8"}],"id":5680,"name":"ExpressionStatement","src":"6414:13:8"}],"id":5681,"name":"Block","src":"6313:125:8"}],"id":5682,"name":"WhileStatement","src":"6284:154:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5683,"name":"Identifier","src":"6513:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5684,"name":"Literal","src":"6522:1:8"}],"id":5685,"name":"BinaryOperation","src":"6513:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6740,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5686,"name":"Identifier","src":"6528:4:8"}],"id":5687,"name":"MemberAccess","src":"6528:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5688,"name":"Identifier","src":"6540:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5689,"name":"Identifier","src":"6545:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5690,"name":"Identifier","src":"6552:8:8"}],"id":5691,"name":"FunctionCall","src":"6528:33:8"}],"id":5692,"name":"UnaryOperation","src":"6527:34:8"}],"id":5693,"name":"BinaryOperation","src":"6513:48:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5626,"type":"uint256","value":"prevoff"},"id":5694,"name":"Identifier","src":"6577:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5695,"name":"Identifier","src":"6587:3:8"}],"id":5696,"name":"Assignment","src":"6577:13:8"}],"id":5697,"name":"ExpressionStatement","src":"6577:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5698,"name":"Identifier","src":"6604:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":5699,"name":"Identifier","src":"6610:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5700,"name":"Identifier","src":"6619:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5701,"name":"Identifier","src":"6625:3:8"}],"id":5702,"name":"FunctionCall","src":"6610:19:8"}],"id":5703,"name":"Assignment","src":"6604:25:8"}],"id":5704,"name":"ExpressionStatement","src":"6604:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5629,"type":"uint256","value":"otherprevoff"},"id":5705,"name":"Identifier","src":"6643:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5706,"name":"Identifier","src":"6658:8:8"}],"id":5707,"name":"Assignment","src":"6643:23:8"}],"id":5708,"name":"ExpressionStatement","src":"6643:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5709,"name":"Identifier","src":"6680:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":5710,"name":"Identifier","src":"6691:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5711,"name":"Identifier","src":"6700:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5712,"name":"Identifier","src":"6707:8:8"}],"id":5713,"name":"FunctionCall","src":"6691:25:8"}],"id":5714,"name":"Assignment","src":"6680:36:8"}],"id":5715,"name":"ExpressionStatement","src":"6680:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5716,"name":"Identifier","src":"6730:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5717,"name":"Literal","src":"6740:1:8"}],"id":5718,"name":"Assignment","src":"6730:11:8"}],"id":5719,"name":"ExpressionStatement","src":"6730:11:8"}],"id":5720,"name":"Block","src":"6563:189:8"}],"id":5721,"name":"WhileStatement","src":"6506:246:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5722,"name":"Identifier","src":"6766:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5723,"name":"Literal","src":"6773:1:8"}],"id":5724,"name":"BinaryOperation","src":"6766:8:8"},{"children":[{"attributes":{"functionReturnParameters":5610},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5725,"name":"Literal","src":"6798:1:8"}],"id":5726,"name":"UnaryOperation","src":"6797:2:8"}],"id":5727,"name":"Return","src":"6790:9:8"}],"id":5728,"name":"Block","src":"6776:34:8"}],"id":5729,"name":"IfStatement","src":"6762:48:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5730,"name":"Identifier","src":"6822:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5731,"name":"Literal","src":"6834:1:8"}],"id":5732,"name":"BinaryOperation","src":"6822:13:8"},{"children":[{"attributes":{"functionReturnParameters":5610},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5733,"name":"Literal","src":"6858:1:8"}],"id":5734,"name":"Return","src":"6851:8:8"}],"id":5735,"name":"Block","src":"6837:33:8"}],"id":5736,"name":"IfStatement","src":"6819:51:8"},{"attributes":{"functionReturnParameters":5610},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":6680,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5737,"name":"Identifier","src":"6887:4:8"}],"id":5738,"name":"MemberAccess","src":"6887:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5626,"type":"uint256","value":"prevoff"},"id":5739,"name":"Identifier","src":"6900:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5740,"name":"Literal","src":"6910:1:8"}],"id":5741,"name":"BinaryOperation","src":"6900:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5742,"name":"Identifier","src":"6913:4:8"}],"id":5743,"name":"MemberAccess","src":"6913:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5626,"type":"uint256","value":"prevoff"},"id":5744,"name":"Identifier","src":"6928:7:8"}],"id":5745,"name":"FunctionCall","src":"6913:23:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5746,"name":"Identifier","src":"6938:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5629,"type":"uint256","value":"otherprevoff"},"id":5747,"name":"Identifier","src":"6945:12:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5748,"name":"Literal","src":"6960:1:8"}],"id":5749,"name":"BinaryOperation","src":"6945:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5750,"name":"Identifier","src":"6963:5:8"}],"id":5751,"name":"MemberAccess","src":"6963:15:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5629,"type":"uint256","value":"otherprevoff"},"id":5752,"name":"Identifier","src":"6979:12:8"}],"id":5753,"name":"FunctionCall","src":"6963:29:8"}],"id":5754,"name":"FunctionCall","src":"6887:106:8"}],"id":5755,"name":"Return","src":"6880:113:8"}],"id":5756,"name":"Block","src":"5793:1207:8"}],"id":5757,"name":"FunctionDefinition","src":"5704:1296:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":5776,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5758,"name":"ElementaryTypeName","src":"7024:5:8"}],"id":5759,"name":"VariableDeclaration","src":"7024:17:8"},{"attributes":{"constant":false,"name":"off","scope":5776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5760,"name":"ElementaryTypeName","src":"7043:4:8"}],"id":5761,"name":"VariableDeclaration","src":"7043:8:8"}],"id":5762,"name":"ParameterList","src":"7023:29:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5763,"name":"ElementaryTypeName","src":"7075:4:8"}],"id":5764,"name":"VariableDeclaration","src":"7075:4:8"}],"id":5765,"name":"ParameterList","src":"7074:6:8"},{"children":[{"attributes":{"functionReturnParameters":5765},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5761,"type":"uint256","value":"off"},"id":5766,"name":"Identifier","src":"7098:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5767,"name":"Literal","src":"7104:1:8"}],"id":5768,"name":"BinaryOperation","src":"7098:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5759,"type":"bytes memory","value":"body"},"id":5769,"name":"Identifier","src":"7108:4:8"}],"id":5770,"name":"MemberAccess","src":"7108:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5761,"type":"uint256","value":"off"},"id":5771,"name":"Identifier","src":"7123:3:8"}],"id":5772,"name":"FunctionCall","src":"7108:19:8"}],"id":5773,"name":"BinaryOperation","src":"7098:29:8"}],"id":5774,"name":"Return","src":"7091:36:8"}],"id":5775,"name":"Block","src":"7081:53:8"}],"id":5776,"name":"FunctionDefinition","src":"7006:128:8"}],"id":5777,"name":"ContractDefinition","src":"150:6986:8"}],"id":5778,"name":"SourceUnit","src":"0:7137:8"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[5159]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5092,"name":"PragmaDirective","src":"0:23:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5159],"name":"ResolverBase","scope":5160},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5159,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5093,"name":"ElementaryTypeName","src":"53:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5094,"name":"Literal","src":"97:10:9"}],"id":5095,"name":"VariableDeclaration","src":"53:54:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5159,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5107,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5096,"name":"ElementaryTypeName","src":"141:6:9"}],"id":5097,"name":"VariableDeclaration","src":"141:18:9"}],"id":5098,"name":"ParameterList","src":"140:20:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":5107,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5099,"name":"ElementaryTypeName","src":"181:4:9"}],"id":5100,"name":"VariableDeclaration","src":"181:4:9"}],"id":5101,"name":"ParameterList","src":"180:6:9"},{"children":[{"attributes":{"functionReturnParameters":5101},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5097,"type":"bytes4","value":"interfaceID"},"id":5102,"name":"Identifier","src":"204:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5095,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5103,"name":"Identifier","src":"219:17:9"}],"id":5104,"name":"BinaryOperation","src":"204:32:9"}],"id":5105,"name":"Return","src":"197:39:9"}],"id":5106,"name":"Block","src":"187:56:9"}],"id":5107,"name":"FunctionDefinition","src":"114:129:9"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":5159,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5114,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5108,"name":"ElementaryTypeName","src":"271:7:9"}],"id":5109,"name":"VariableDeclaration","src":"271:12:9"}],"id":5110,"name":"ParameterList","src":"270:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":5114,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5111,"name":"ElementaryTypeName","src":"307:4:9"}],"id":5112,"name":"VariableDeclaration","src":"307:4:9"}],"id":5113,"name":"ParameterList","src":"306:6:9"}],"id":5114,"name":"FunctionDefinition","src":"249:64:9"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5126,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5115,"name":"ElementaryTypeName","src":"339:7:9"}],"id":5116,"name":"VariableDeclaration","src":"339:12:9"}],"id":5117,"name":"ParameterList","src":"338:14:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":5118,"name":"Identifier","src":"363:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5114,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":5119,"name":"Identifier","src":"371:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5116,"type":"bytes32","value":"node"},"id":5120,"name":"Identifier","src":"384:4:9"}],"id":5121,"name":"FunctionCall","src":"371:18:9"}],"id":5122,"name":"FunctionCall","src":"363:27:9"}],"id":5123,"name":"ExpressionStatement","src":"363:27:9"},{"id":5124,"name":"PlaceholderStatement","src":"400:1:9"}],"id":5125,"name":"Block","src":"353:55:9"}],"id":5126,"name":"ModifierDefinition","src":"319:89:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":5159,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":5142,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5127,"name":"ElementaryTypeName","src":"438:5:9"}],"id":5128,"name":"VariableDeclaration","src":"438:14:9"}],"id":5129,"name":"ParameterList","src":"437:16:9"},{"children":[{"attributes":{"constant":false,"name":"a","scope":5142,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5130,"name":"ElementaryTypeName","src":"476:15:9"}],"id":5131,"name":"VariableDeclaration","src":"476:17:9"}],"id":5132,"name":"ParameterList","src":"475:19:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":5133,"name":"Identifier","src":"505:7:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5128,"type":"bytes memory","value":"b"},"id":5134,"name":"Identifier","src":"513:1:9"}],"id":5135,"name":"MemberAccess","src":"513:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5136,"name":"Literal","src":"525:2:9"}],"id":5137,"name":"BinaryOperation","src":"513:14:9"}],"id":5138,"name":"FunctionCall","src":"505:23:9"}],"id":5139,"name":"ExpressionStatement","src":"505:23:9"},{"attributes":{"externalReferences":[{"a":{"declaration":5131,"isOffset":false,"isSlot":false,"src":"561:1:9","valueSize":1}},{"b":{"declaration":5128,"isOffset":false,"isSlot":false,"src":"580:1:9","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":5140,"name":"InlineAssembly","src":"538:74:9"}],"id":5141,"name":"Block","src":"495:123:9"}],"id":5142,"name":"FunctionDefinition","src":"414:204:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":5159,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":5158,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5143,"name":"ElementaryTypeName","src":"648:7:9"}],"id":5144,"name":"VariableDeclaration","src":"648:9:9"}],"id":5145,"name":"ParameterList","src":"647:11:9"},{"children":[{"attributes":{"constant":false,"name":"b","scope":5158,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5146,"name":"ElementaryTypeName","src":"681:5:9"}],"id":5147,"name":"VariableDeclaration","src":"681:14:9"}],"id":5148,"name":"ParameterList","src":"680:16:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5147,"type":"bytes memory","value":"b"},"id":5149,"name":"Identifier","src":"707:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5150,"name":"ElementaryTypeName","src":"715:5:9"}],"id":5151,"name":"NewExpression","src":"711:9:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5152,"name":"Literal","src":"721:2:9"}],"id":5153,"name":"FunctionCall","src":"711:13:9"}],"id":5154,"name":"Assignment","src":"707:17:9"}],"id":5155,"name":"ExpressionStatement","src":"707:17:9"},{"attributes":{"externalReferences":[{"b":{"declaration":5147,"isOffset":false,"isSlot":false,"src":"768:1:9","valueSize":1}},{"a":{"declaration":5144,"isOffset":false,"isSlot":false,"src":"780:1:9","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":5156,"name":"InlineAssembly","src":"734:73:9"}],"id":5157,"name":"Block","src":"697:116:9"}],"id":5158,"name":"FunctionDefinition","src":"624:189:9"}],"id":5159,"name":"ContractDefinition","src":"25:790:9"}],"id":5160,"name":"SourceUnit","src":"0:816:9"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[1853]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1719,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":1854,"symbolAliases":[null],"unitAlias":""},"id":1720,"name":"ImportDirective","src":"25:29:10"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1853,5159],"name":"ABIResolver","scope":1854},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":1721,"name":"UserDefinedTypeName","src":"80:12:10"}],"id":1722,"name":"InheritanceSpecifier","src":"80:12:10"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":1853,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1723,"name":"ElementaryTypeName","src":"99:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":1724,"name":"Literal","src":"142:10:10"}],"id":1725,"name":"VariableDeclaration","src":"99:53:10"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":1731,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1726,"name":"ElementaryTypeName","src":"176:7:10"}],"id":1727,"name":"VariableDeclaration","src":"176:20:10"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":1731,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1728,"name":"ElementaryTypeName","src":"198:7:10"}],"id":1729,"name":"VariableDeclaration","src":"198:27:10"}],"id":1730,"name":"ParameterList","src":"175:51:10"}],"id":1731,"name":"EventDefinition","src":"159:68:10"},{"attributes":{"constant":false,"name":"abis","scope":1853,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1732,"name":"ElementaryTypeName","src":"241:7:10"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1733,"name":"ElementaryTypeName","src":"258:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":1734,"name":"ElementaryTypeName","src":"267:5:10"}],"id":1735,"name":"Mapping","src":"250:23:10"}],"id":1736,"name":"Mapping","src":"233:41:10"}],"id":1737,"name":"VariableDeclaration","src":"233:46:10"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":1853,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1775,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1738,"name":"ElementaryTypeName","src":"598:7:10"}],"id":1739,"name":"VariableDeclaration","src":"598:12:10"},{"attributes":{"constant":false,"name":"contentType","scope":1775,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1740,"name":"ElementaryTypeName","src":"612:7:10"}],"id":1741,"name":"VariableDeclaration","src":"612:19:10"},{"attributes":{"constant":false,"name":"data","scope":1775,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1742,"name":"ElementaryTypeName","src":"633:5:10"}],"id":1743,"name":"VariableDeclaration","src":"633:19:10"}],"id":1744,"name":"ParameterList","src":"597:56:10"},{"attributes":{"parameters":[null]},"children":[],"id":1748,"name":"ParameterList","src":"680:0:10"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":1745,"name":"Identifier","src":"663:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1739,"type":"bytes32","value":"node"},"id":1746,"name":"Identifier","src":"674:4:10"}],"id":1747,"name":"ModifierInvocation","src":"663:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":1749,"name":"Identifier","src":"735:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"contentType"},"id":1750,"name":"Identifier","src":"745:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1751,"name":"Literal","src":"759:1:10"}],"id":1752,"name":"BinaryOperation","src":"745:15:10"}],"id":1753,"name":"TupleExpression","src":"744:17:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"contentType"},"id":1754,"name":"Identifier","src":"764:11:10"}],"id":1755,"name":"BinaryOperation","src":"744:31:10"}],"id":1756,"name":"TupleExpression","src":"743:33:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1757,"name":"Literal","src":"780:1:10"}],"id":1758,"name":"BinaryOperation","src":"743:38:10"}],"id":1759,"name":"FunctionCall","src":"735:47:10"}],"id":1760,"name":"ExpressionStatement","src":"735:47:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1737,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":1761,"name":"Identifier","src":"793:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1739,"type":"bytes32","value":"node"},"id":1762,"name":"Identifier","src":"798:4:10"}],"id":1764,"name":"IndexAccess","src":"793:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"contentType"},"id":1763,"name":"Identifier","src":"804:11:10"}],"id":1765,"name":"IndexAccess","src":"793:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1743,"type":"bytes calldata","value":"data"},"id":1766,"name":"Identifier","src":"819:4:10"}],"id":1767,"name":"Assignment","src":"793:30:10"}],"id":1768,"name":"ExpressionStatement","src":"793:30:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1731,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":1769,"name":"Identifier","src":"838:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1739,"type":"bytes32","value":"node"},"id":1770,"name":"Identifier","src":"849:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"contentType"},"id":1771,"name":"Identifier","src":"855:11:10"}],"id":1772,"name":"FunctionCall","src":"838:29:10"}],"id":1773,"name":"EmitStatement","src":"833:34:10"}],"id":1774,"name":"Block","src":"680:194:10"}],"id":1775,"name":"FunctionDefinition","src":"582:292:10"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":1853,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1776,"name":"ElementaryTypeName","src":"1208:7:10"}],"id":1777,"name":"VariableDeclaration","src":"1208:12:10"},{"attributes":{"constant":false,"name":"contentTypes","scope":1835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1778,"name":"ElementaryTypeName","src":"1222:7:10"}],"id":1779,"name":"VariableDeclaration","src":"1222:20:10"}],"id":1780,"name":"ParameterList","src":"1207:36:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":1835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1781,"name":"ElementaryTypeName","src":"1267:7:10"}],"id":1782,"name":"VariableDeclaration","src":"1267:7:10"},{"attributes":{"constant":false,"name":"","scope":1835,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1783,"name":"ElementaryTypeName","src":"1276:5:10"}],"id":1784,"name":"VariableDeclaration","src":"1276:12:10"}],"id":1785,"name":"ParameterList","src":"1266:23:10"},{"children":[{"attributes":{"assignments":[1789]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":1834,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1786,"name":"ElementaryTypeName","src":"1308:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":1787,"name":"ElementaryTypeName","src":"1317:5:10"}],"id":1788,"name":"Mapping","src":"1300:23:10"}],"id":1789,"name":"VariableDeclaration","src":"1300:38:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1737,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":1790,"name":"Identifier","src":"1341:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1777,"type":"bytes32","value":"node"},"id":1791,"name":"Identifier","src":"1346:4:10"}],"id":1792,"name":"IndexAccess","src":"1341:10:10"}],"id":1793,"name":"VariableDeclarationStatement","src":"1300:51:10"},{"children":[{"attributes":{"assignments":[1795]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":1827,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1794,"name":"ElementaryTypeName","src":"1367:7:10"}],"id":1795,"name":"VariableDeclaration","src":"1367:19:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1796,"name":"Literal","src":"1389:1:10"}],"id":1797,"name":"VariableDeclarationStatement","src":"1367:23:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1798,"name":"Identifier","src":"1392:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1779,"type":"uint256","value":"contentTypes"},"id":1799,"name":"Identifier","src":"1407:12:10"}],"id":1800,"name":"BinaryOperation","src":"1392:27:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1801,"name":"Identifier","src":"1421:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1802,"name":"Literal","src":"1437:1:10"}],"id":1803,"name":"Assignment","src":"1421:17:10"}],"id":1804,"name":"ExpressionStatement","src":"1421:17:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1805,"name":"Identifier","src":"1459:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1779,"type":"uint256","value":"contentTypes"},"id":1806,"name":"Identifier","src":"1473:12:10"}],"id":1807,"name":"BinaryOperation","src":"1459:26:10"}],"id":1808,"name":"TupleExpression","src":"1458:28:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1809,"name":"Literal","src":"1490:1:10"}],"id":1810,"name":"BinaryOperation","src":"1458:33:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1789,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":1811,"name":"Identifier","src":"1495:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1812,"name":"Identifier","src":"1502:11:10"}],"id":1813,"name":"IndexAccess","src":"1495:19:10"}],"id":1814,"name":"MemberAccess","src":"1495:26:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1815,"name":"Literal","src":"1524:1:10"}],"id":1816,"name":"BinaryOperation","src":"1495:30:10"}],"id":1817,"name":"BinaryOperation","src":"1458:67:10"},{"children":[{"attributes":{"functionReturnParameters":1785},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1818,"name":"Identifier","src":"1553:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1789,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":1819,"name":"Identifier","src":"1566:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1820,"name":"Identifier","src":"1573:11:10"}],"id":1821,"name":"IndexAccess","src":"1566:19:10"}],"id":1822,"name":"TupleExpression","src":"1552:34:10"}],"id":1823,"name":"Return","src":"1545:41:10"}],"id":1824,"name":"Block","src":"1527:74:10"}],"id":1825,"name":"IfStatement","src":"1454:147:10"}],"id":1826,"name":"Block","src":"1440:171:10"}],"id":1827,"name":"ForStatement","src":"1362:249:10"},{"attributes":{"functionReturnParameters":1785},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1828,"name":"Literal","src":"1629:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":1829,"name":"ElementaryTypeNameExpression","src":"1632:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":1830,"name":"Literal","src":"1638:2:10"}],"id":1831,"name":"FunctionCall","src":"1632:9:10"}],"id":1832,"name":"TupleExpression","src":"1628:14:10"}],"id":1833,"name":"Return","src":"1621:21:10"}],"id":1834,"name":"Block","src":"1290:359:10"}],"id":1835,"name":"FunctionDefinition","src":"1195:454:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":1853,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":1852,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1836,"name":"ElementaryTypeName","src":"1682:6:10"}],"id":1837,"name":"VariableDeclaration","src":"1682:18:10"}],"id":1838,"name":"ParameterList","src":"1681:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":1852,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1839,"name":"ElementaryTypeName","src":"1722:4:10"}],"id":1840,"name":"VariableDeclaration","src":"1722:4:10"}],"id":1841,"name":"ParameterList","src":"1721:6:10"},{"children":[{"attributes":{"functionReturnParameters":1841},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1837,"type":"bytes4","value":"interfaceID"},"id":1842,"name":"Identifier","src":"1745:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1725,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":1843,"name":"Identifier","src":"1760:16:10"}],"id":1844,"name":"BinaryOperation","src":"1745:31:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7452,"type":"contract super ABIResolver","value":"super"},"id":1845,"name":"Identifier","src":"1780:5:10"}],"id":1846,"name":"MemberAccess","src":"1780:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1837,"type":"bytes4","value":"interfaceID"},"id":1847,"name":"Identifier","src":"1804:11:10"}],"id":1848,"name":"FunctionCall","src":"1780:36:10"}],"id":1849,"name":"BinaryOperation","src":"1745:71:10"}],"id":1850,"name":"Return","src":"1738:78:10"}],"id":1851,"name":"Block","src":"1728:95:10"}],"id":1852,"name":"FunctionDefinition","src":"1655:168:10"}],"id":1853,"name":"ContractDefinition","src":"56:1769:10"}],"id":1854,"name":"SourceUnit","src":"0:1826:10"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[2012]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1855,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2013,"symbolAliases":[null],"unitAlias":""},"id":1856,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2012,5159],"name":"AddrResolver","scope":2013},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":1857,"name":"UserDefinedTypeName","src":"81:12:11"}],"id":1858,"name":"InheritanceSpecifier","src":"81:12:11"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":2012,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1859,"name":"ElementaryTypeName","src":"100:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":1860,"name":"Literal","src":"144:10:11"}],"id":1861,"name":"VariableDeclaration","src":"100:54:11"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":2012,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1862,"name":"ElementaryTypeName","src":"160:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":1863,"name":"Literal","src":"207:10:11"}],"id":1864,"name":"VariableDeclaration","src":"160:57:11"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":2012,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1865,"name":"ElementaryTypeName","src":"223:4:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":1866,"name":"Literal","src":"261:2:11"}],"id":1867,"name":"VariableDeclaration","src":"223:40:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":1873,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1868,"name":"ElementaryTypeName","src":"288:7:11"}],"id":1869,"name":"VariableDeclaration","src":"288:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":1873,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1870,"name":"ElementaryTypeName","src":"310:7:11"}],"id":1871,"name":"VariableDeclaration","src":"310:9:11"}],"id":1872,"name":"ParameterList","src":"287:33:11"}],"id":1873,"name":"EventDefinition","src":"270:51:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":1881,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1874,"name":"ElementaryTypeName","src":"347:7:11"}],"id":1875,"name":"VariableDeclaration","src":"347:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":1881,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1876,"name":"ElementaryTypeName","src":"369:4:11"}],"id":1877,"name":"VariableDeclaration","src":"369:13:11"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":1881,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1878,"name":"ElementaryTypeName","src":"384:5:11"}],"id":1879,"name":"VariableDeclaration","src":"384:16:11"}],"id":1880,"name":"ParameterList","src":"346:55:11"}],"id":1881,"name":"EventDefinition","src":"326:76:11"},{"attributes":{"constant":false,"name":"_addresses","scope":2012,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1882,"name":"ElementaryTypeName","src":"416:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1883,"name":"ElementaryTypeName","src":"433:4:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":1884,"name":"ElementaryTypeName","src":"439:5:11"}],"id":1885,"name":"Mapping","src":"425:20:11"}],"id":1886,"name":"Mapping","src":"408:38:11"}],"id":1887,"name":"VariableDeclaration","src":"408:49:11"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":2012,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1906,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1888,"name":"ElementaryTypeName","src":"698:7:11"}],"id":1889,"name":"VariableDeclaration","src":"698:12:11"},{"attributes":{"constant":false,"name":"a","scope":1906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1890,"name":"ElementaryTypeName","src":"712:7:11"}],"id":1891,"name":"VariableDeclaration","src":"712:9:11"}],"id":1892,"name":"ParameterList","src":"697:25:11"},{"attributes":{"parameters":[null]},"children":[],"id":1896,"name":"ParameterList","src":"749:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":1893,"name":"Identifier","src":"732:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1889,"type":"bytes32","value":"node"},"id":1894,"name":"Identifier","src":"743:4:11"}],"id":1895,"name":"ModifierInvocation","src":"732:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":1897,"name":"Identifier","src":"759:15:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1889,"type":"bytes32","value":"node"},"id":1898,"name":"Identifier","src":"775:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1867,"type":"uint256","value":"COIN_TYPE_ETH"},"id":1899,"name":"Identifier","src":"781:13:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5158,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":1900,"name":"Identifier","src":"796:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1891,"type":"address","value":"a"},"id":1901,"name":"Identifier","src":"811:1:11"}],"id":1902,"name":"FunctionCall","src":"796:17:11"}],"id":1903,"name":"FunctionCall","src":"759:55:11"}],"id":1904,"name":"ExpressionStatement","src":"759:55:11"}],"id":1905,"name":"Block","src":"749:72:11"}],"id":1906,"name":"FunctionDefinition","src":"681:140:11"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":2012,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1935,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1907,"name":"ElementaryTypeName","src":"994:7:11"}],"id":1908,"name":"VariableDeclaration","src":"994:12:11"}],"id":1909,"name":"ParameterList","src":"993:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":1935,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1910,"name":"ElementaryTypeName","src":"1029:15:11"}],"id":1911,"name":"VariableDeclaration","src":"1029:15:11"}],"id":1912,"name":"ParameterList","src":"1028:17:11"},{"children":[{"attributes":{"assignments":[1914]},"children":[{"attributes":{"constant":false,"name":"a","scope":1934,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1913,"name":"ElementaryTypeName","src":"1056:5:11"}],"id":1914,"name":"VariableDeclaration","src":"1056:14:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[1935,1990],"referencedDeclaration":1990,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":1915,"name":"Identifier","src":"1073:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1908,"type":"bytes32","value":"node"},"id":1916,"name":"Identifier","src":"1078:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1867,"type":"uint256","value":"COIN_TYPE_ETH"},"id":1917,"name":"Identifier","src":"1084:13:11"}],"id":1918,"name":"FunctionCall","src":"1073:25:11"}],"id":1919,"name":"VariableDeclarationStatement","src":"1056:42:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1914,"type":"bytes memory","value":"a"},"id":1920,"name":"Identifier","src":"1111:1:11"}],"id":1921,"name":"MemberAccess","src":"1111:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1922,"name":"Literal","src":"1123:1:11"}],"id":1923,"name":"BinaryOperation","src":"1111:13:11"},{"children":[{"attributes":{"functionReturnParameters":1912},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1924,"name":"ElementaryTypeNameExpression","src":"1147:7:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1925,"name":"Literal","src":"1155:1:11"}],"id":1926,"name":"FunctionCall","src":"1147:10:11"}],"id":1927,"name":"Return","src":"1140:17:11"}],"id":1928,"name":"Block","src":"1126:42:11"}],"id":1929,"name":"IfStatement","src":"1108:60:11"},{"attributes":{"functionReturnParameters":1912},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5142,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":1930,"name":"Identifier","src":"1184:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1914,"type":"bytes memory","value":"a"},"id":1931,"name":"Identifier","src":"1199:1:11"}],"id":1932,"name":"FunctionCall","src":"1184:17:11"}],"id":1933,"name":"Return","src":"1177:24:11"}],"id":1934,"name":"Block","src":"1046:162:11"}],"id":1935,"name":"FunctionDefinition","src":"980:228:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":2012,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1974,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1936,"name":"ElementaryTypeName","src":"1239:7:11"}],"id":1937,"name":"VariableDeclaration","src":"1239:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":1974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1938,"name":"ElementaryTypeName","src":"1253:4:11"}],"id":1939,"name":"VariableDeclaration","src":"1253:13:11"},{"attributes":{"constant":false,"name":"a","scope":1974,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1940,"name":"ElementaryTypeName","src":"1268:5:11"}],"id":1941,"name":"VariableDeclaration","src":"1268:14:11"}],"id":1942,"name":"ParameterList","src":"1238:45:11"},{"attributes":{"parameters":[null]},"children":[],"id":1946,"name":"ParameterList","src":"1308:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":1943,"name":"Identifier","src":"1291:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bytes32","value":"node"},"id":1944,"name":"Identifier","src":"1302:4:11"}],"id":1945,"name":"ModifierInvocation","src":"1291:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1881,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":1947,"name":"Identifier","src":"1323:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bytes32","value":"node"},"id":1948,"name":"Identifier","src":"1338:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1939,"type":"uint256","value":"coinType"},"id":1949,"name":"Identifier","src":"1344:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1941,"type":"bytes memory","value":"a"},"id":1950,"name":"Identifier","src":"1354:1:11"}],"id":1951,"name":"FunctionCall","src":"1323:33:11"}],"id":1952,"name":"EmitStatement","src":"1318:38:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1939,"type":"uint256","value":"coinType"},"id":1953,"name":"Identifier","src":"1369:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1867,"type":"uint256","value":"COIN_TYPE_ETH"},"id":1954,"name":"Identifier","src":"1381:13:11"}],"id":1955,"name":"BinaryOperation","src":"1369:25:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1873,"type":"function (bytes32,address)","value":"AddrChanged"},"id":1956,"name":"Identifier","src":"1415:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bytes32","value":"node"},"id":1957,"name":"Identifier","src":"1427:4:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5142,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":1958,"name":"Identifier","src":"1433:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1941,"type":"bytes memory","value":"a"},"id":1959,"name":"Identifier","src":"1448:1:11"}],"id":1960,"name":"FunctionCall","src":"1433:17:11"}],"id":1961,"name":"FunctionCall","src":"1415:36:11"}],"id":1962,"name":"EmitStatement","src":"1410:41:11"}],"id":1963,"name":"Block","src":"1396:66:11"}],"id":1964,"name":"IfStatement","src":"1366:96:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":1965,"name":"Identifier","src":"1471:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bytes32","value":"node"},"id":1966,"name":"Identifier","src":"1482:4:11"}],"id":1968,"name":"IndexAccess","src":"1471:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1939,"type":"uint256","value":"coinType"},"id":1967,"name":"Identifier","src":"1488:8:11"}],"id":1969,"name":"IndexAccess","src":"1471:26:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1941,"type":"bytes memory","value":"a"},"id":1970,"name":"Identifier","src":"1500:1:11"}],"id":1971,"name":"Assignment","src":"1471:30:11"}],"id":1972,"name":"ExpressionStatement","src":"1471:30:11"}],"id":1973,"name":"Block","src":"1308:200:11"}],"id":1974,"name":"FunctionDefinition","src":"1214:294:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":2012,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1990,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1975,"name":"ElementaryTypeName","src":"1528:7:11"}],"id":1976,"name":"VariableDeclaration","src":"1528:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":1990,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1977,"name":"ElementaryTypeName","src":"1542:4:11"}],"id":1978,"name":"VariableDeclaration","src":"1542:13:11"}],"id":1979,"name":"ParameterList","src":"1527:29:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":1990,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1980,"name":"ElementaryTypeName","src":"1577:5:11"}],"id":1981,"name":"VariableDeclaration","src":"1577:12:11"}],"id":1982,"name":"ParameterList","src":"1576:14:11"},{"children":[{"attributes":{"functionReturnParameters":1982},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":1983,"name":"Identifier","src":"1608:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1976,"type":"bytes32","value":"node"},"id":1984,"name":"Identifier","src":"1619:4:11"}],"id":1985,"name":"IndexAccess","src":"1608:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1978,"type":"uint256","value":"coinType"},"id":1986,"name":"Identifier","src":"1625:8:11"}],"id":1987,"name":"IndexAccess","src":"1608:26:11"}],"id":1988,"name":"Return","src":"1601:33:11"}],"id":1989,"name":"Block","src":"1591:50:11"}],"id":1990,"name":"FunctionDefinition","src":"1514:127:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2012,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2011,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1991,"name":"ElementaryTypeName","src":"1674:6:11"}],"id":1992,"name":"VariableDeclaration","src":"1674:18:11"}],"id":1993,"name":"ParameterList","src":"1673:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":2011,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1994,"name":"ElementaryTypeName","src":"1714:4:11"}],"id":1995,"name":"VariableDeclaration","src":"1714:4:11"}],"id":1996,"name":"ParameterList","src":"1713:6:11"},{"children":[{"attributes":{"functionReturnParameters":1996},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1992,"type":"bytes4","value":"interfaceID"},"id":1997,"name":"Identifier","src":"1737:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1861,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":1998,"name":"Identifier","src":"1752:17:11"}],"id":1999,"name":"BinaryOperation","src":"1737:32:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1992,"type":"bytes4","value":"interfaceID"},"id":2000,"name":"Identifier","src":"1773:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1864,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":2001,"name":"Identifier","src":"1788:20:11"}],"id":2002,"name":"BinaryOperation","src":"1773:35:11"}],"id":2003,"name":"BinaryOperation","src":"1737:71:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7454,"type":"contract super AddrResolver","value":"super"},"id":2004,"name":"Identifier","src":"1812:5:11"}],"id":2005,"name":"MemberAccess","src":"1812:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1992,"type":"bytes4","value":"interfaceID"},"id":2006,"name":"Identifier","src":"1836:11:11"}],"id":2007,"name":"FunctionCall","src":"1812:36:11"}],"id":2008,"name":"BinaryOperation","src":"1737:111:11"}],"id":2009,"name":"Return","src":"1730:118:11"}],"id":2010,"name":"Block","src":"1720:135:11"}],"id":2011,"name":"FunctionDefinition","src":"1647:208:11"}],"id":2012,"name":"ContractDefinition","src":"56:1801:11"}],"id":2013,"name":"SourceUnit","src":"0:1857:11"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[2082]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2014,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2083,"symbolAliases":[null],"unitAlias":""},"id":2015,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2082,5159],"name":"ContentHashResolver","scope":2083},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2016,"name":"UserDefinedTypeName","src":"88:12:12"}],"id":2017,"name":"InheritanceSpecifier","src":"88:12:12"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":2082,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2018,"name":"ElementaryTypeName","src":"107:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":2019,"name":"Literal","src":"159:10:12"}],"id":2020,"name":"VariableDeclaration","src":"107:62:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2026,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2021,"name":"ElementaryTypeName","src":"201:7:12"}],"id":2022,"name":"VariableDeclaration","src":"201:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":2026,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2023,"name":"ElementaryTypeName","src":"223:5:12"}],"id":2024,"name":"VariableDeclaration","src":"223:10:12"}],"id":2025,"name":"ParameterList","src":"200:34:12"}],"id":2026,"name":"EventDefinition","src":"176:59:12"},{"attributes":{"constant":false,"name":"hashes","scope":2082,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2027,"name":"ElementaryTypeName","src":"249:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":2028,"name":"ElementaryTypeName","src":"258:5:12"}],"id":2029,"name":"Mapping","src":"241:23:12"}],"id":2030,"name":"VariableDeclaration","src":"241:30:12"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":2082,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2052,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2031,"name":"ElementaryTypeName","src":"529:7:12"}],"id":2032,"name":"VariableDeclaration","src":"529:12:12"},{"attributes":{"constant":false,"name":"hash","scope":2052,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2033,"name":"ElementaryTypeName","src":"543:5:12"}],"id":2034,"name":"VariableDeclaration","src":"543:19:12"}],"id":2035,"name":"ParameterList","src":"528:35:12"},{"attributes":{"parameters":[null]},"children":[],"id":2039,"name":"ParameterList","src":"590:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2036,"name":"Identifier","src":"573:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2032,"type":"bytes32","value":"node"},"id":2037,"name":"Identifier","src":"584:4:12"}],"id":2038,"name":"ModifierInvocation","src":"573:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2030,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":2040,"name":"Identifier","src":"600:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2032,"type":"bytes32","value":"node"},"id":2041,"name":"Identifier","src":"607:4:12"}],"id":2042,"name":"IndexAccess","src":"600:12:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2034,"type":"bytes calldata","value":"hash"},"id":2043,"name":"Identifier","src":"615:4:12"}],"id":2044,"name":"Assignment","src":"600:19:12"}],"id":2045,"name":"ExpressionStatement","src":"600:19:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2026,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":2046,"name":"Identifier","src":"634:18:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2032,"type":"bytes32","value":"node"},"id":2047,"name":"Identifier","src":"653:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2034,"type":"bytes calldata","value":"hash"},"id":2048,"name":"Identifier","src":"659:4:12"}],"id":2049,"name":"FunctionCall","src":"634:30:12"}],"id":2050,"name":"EmitStatement","src":"629:35:12"}],"id":2051,"name":"Block","src":"590:81:12"}],"id":2052,"name":"FunctionDefinition","src":"505:166:12"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":2082,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2064,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2053,"name":"ElementaryTypeName","src":"859:7:12"}],"id":2054,"name":"VariableDeclaration","src":"859:12:12"}],"id":2055,"name":"ParameterList","src":"858:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":2064,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2056,"name":"ElementaryTypeName","src":"896:5:12"}],"id":2057,"name":"VariableDeclaration","src":"896:12:12"}],"id":2058,"name":"ParameterList","src":"895:14:12"},{"children":[{"attributes":{"functionReturnParameters":2058},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2030,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":2059,"name":"Identifier","src":"927:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2054,"type":"bytes32","value":"node"},"id":2060,"name":"Identifier","src":"934:4:12"}],"id":2061,"name":"IndexAccess","src":"927:12:12"}],"id":2062,"name":"Return","src":"920:19:12"}],"id":2063,"name":"Block","src":"910:36:12"}],"id":2064,"name":"FunctionDefinition","src":"838:108:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2082,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2081,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2065,"name":"ElementaryTypeName","src":"979:6:12"}],"id":2066,"name":"VariableDeclaration","src":"979:18:12"}],"id":2067,"name":"ParameterList","src":"978:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":2081,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2068,"name":"ElementaryTypeName","src":"1019:4:12"}],"id":2069,"name":"VariableDeclaration","src":"1019:4:12"}],"id":2070,"name":"ParameterList","src":"1018:6:12"},{"children":[{"attributes":{"functionReturnParameters":2070},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2066,"type":"bytes4","value":"interfaceID"},"id":2071,"name":"Identifier","src":"1042:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2020,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":2072,"name":"Identifier","src":"1057:25:12"}],"id":2073,"name":"BinaryOperation","src":"1042:40:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7456,"type":"contract super ContentHashResolver","value":"super"},"id":2074,"name":"Identifier","src":"1086:5:12"}],"id":2075,"name":"MemberAccess","src":"1086:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2066,"type":"bytes4","value":"interfaceID"},"id":2076,"name":"Identifier","src":"1110:11:12"}],"id":2077,"name":"FunctionCall","src":"1086:36:12"}],"id":2078,"name":"BinaryOperation","src":"1042:80:12"}],"id":2079,"name":"Return","src":"1035:87:12"}],"id":2080,"name":"Block","src":"1025:104:12"}],"id":2081,"name":"FunctionDefinition","src":"952:177:12"}],"id":2082,"name":"ContractDefinition","src":"56:1075:12"}],"id":2083,"name":"SourceUnit","src":"0:1132:12"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[2573]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2084,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2574,"symbolAliases":[null],"unitAlias":""},"id":2085,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"SourceUnit":5778,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":2574,"symbolAliases":[null],"unitAlias":""},"id":2086,"name":"ImportDirective","src":"55:24:13"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2573,5159],"name":"DNSResolver","scope":2574},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2087,"name":"UserDefinedTypeName","src":"105:12:13"}],"id":2088,"name":"InheritanceSpecifier","src":"105:12:13"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":5777,"type":"library RRUtils"},"id":2089,"name":"UserDefinedTypeName","src":"130:7:13"}],"id":2090,"name":"UsingForDirective","src":"124:20:13"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7224,"type":"library ENSBytesUtils"},"id":2091,"name":"UserDefinedTypeName","src":"155:13:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2092,"name":"ElementaryTypeName","src":"173:5:13"}],"id":2093,"name":"UsingForDirective","src":"149:30:13"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":2573,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2094,"name":"ElementaryTypeName","src":"185:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":2095,"name":"Literal","src":"235:10:13"}],"id":2096,"name":"VariableDeclaration","src":"185:60:13"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":2573,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2097,"name":"ElementaryTypeName","src":"251:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":2098,"name":"Literal","src":"299:10:13"}],"id":2099,"name":"VariableDeclaration","src":"251:58:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2109,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2100,"name":"ElementaryTypeName","src":"430:7:13"}],"id":2101,"name":"VariableDeclaration","src":"430:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2109,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2102,"name":"ElementaryTypeName","src":"452:5:13"}],"id":2103,"name":"VariableDeclaration","src":"452:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":2109,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2104,"name":"ElementaryTypeName","src":"464:6:13"}],"id":2105,"name":"VariableDeclaration","src":"464:15:13"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":2109,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2106,"name":"ElementaryTypeName","src":"481:5:13"}],"id":2107,"name":"VariableDeclaration","src":"481:12:13"}],"id":2108,"name":"ParameterList","src":"429:65:13"}],"id":2109,"name":"EventDefinition","src":"407:88:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2117,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2110,"name":"ElementaryTypeName","src":"614:7:13"}],"id":2111,"name":"VariableDeclaration","src":"614:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2117,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2112,"name":"ElementaryTypeName","src":"636:5:13"}],"id":2113,"name":"VariableDeclaration","src":"636:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":2117,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2114,"name":"ElementaryTypeName","src":"648:6:13"}],"id":2115,"name":"VariableDeclaration","src":"648:15:13"}],"id":2116,"name":"ParameterList","src":"613:51:13"}],"id":2117,"name":"EventDefinition","src":"591:74:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2121,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2118,"name":"ElementaryTypeName","src":"777:7:13"}],"id":2119,"name":"VariableDeclaration","src":"777:20:13"}],"id":2120,"name":"ParameterList","src":"776:22:13"}],"id":2121,"name":"EventDefinition","src":"756:43:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2129,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2122,"name":"ElementaryTypeName","src":"913:7:13"}],"id":2123,"name":"VariableDeclaration","src":"913:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":2129,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2124,"name":"ElementaryTypeName","src":"935:5:13"}],"id":2125,"name":"VariableDeclaration","src":"935:18:13"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":2129,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2126,"name":"ElementaryTypeName","src":"955:5:13"}],"id":2127,"name":"VariableDeclaration","src":"955:14:13"}],"id":2128,"name":"ParameterList","src":"912:58:13"}],"id":2129,"name":"EventDefinition","src":"888:83:13"},{"attributes":{"constant":false,"name":"zonehashes","scope":2573,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2130,"name":"ElementaryTypeName","src":"1181:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2131,"name":"ElementaryTypeName","src":"1190:5:13"}],"id":2132,"name":"Mapping","src":"1173:23:13"}],"id":2133,"name":"VariableDeclaration","src":"1173:42:13"},{"attributes":{"constant":false,"name":"versions","scope":2573,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2134,"name":"ElementaryTypeName","src":"1433:7:13"},{"attributes":{"name":"uint256","type":"uint256"},"id":2135,"name":"ElementaryTypeName","src":"1442:7:13"}],"id":2136,"name":"Mapping","src":"1425:25:13"}],"id":2137,"name":"VariableDeclaration","src":"1425:42:13"},{"attributes":{"constant":false,"name":"records","scope":2573,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2138,"name":"ElementaryTypeName","src":"1589:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2139,"name":"ElementaryTypeName","src":"1606:7:13"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2140,"name":"ElementaryTypeName","src":"1623:7:13"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2141,"name":"ElementaryTypeName","src":"1640:6:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2142,"name":"ElementaryTypeName","src":"1648:5:13"}],"id":2143,"name":"Mapping","src":"1632:22:13"}],"id":2144,"name":"Mapping","src":"1615:40:13"}],"id":2145,"name":"Mapping","src":"1598:58:13"}],"id":2146,"name":"Mapping","src":"1581:76:13"}],"id":2147,"name":"VariableDeclaration","src":"1581:92:13"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":2573,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2148,"name":"ElementaryTypeName","src":"1853:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2149,"name":"ElementaryTypeName","src":"1870:7:13"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2150,"name":"ElementaryTypeName","src":"1887:7:13"},{"attributes":{"name":"uint16","type":"uint16"},"id":2151,"name":"ElementaryTypeName","src":"1896:6:13"}],"id":2152,"name":"Mapping","src":"1879:24:13"}],"id":2153,"name":"Mapping","src":"1862:42:13"}],"id":2154,"name":"Mapping","src":"1845:60:13"}],"id":2155,"name":"VariableDeclaration","src":"1845:85:13"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":2573,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2320,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2156,"name":"ElementaryTypeName","src":"2877:7:13"}],"id":2157,"name":"VariableDeclaration","src":"2877:12:13"},{"attributes":{"constant":false,"name":"data","scope":2320,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2158,"name":"ElementaryTypeName","src":"2891:5:13"}],"id":2159,"name":"VariableDeclaration","src":"2891:19:13"}],"id":2160,"name":"ParameterList","src":"2876:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":2164,"name":"ParameterList","src":"2938:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2161,"name":"Identifier","src":"2921:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2157,"type":"bytes32","value":"node"},"id":2162,"name":"Identifier","src":"2932:4:13"}],"id":2163,"name":"ModifierInvocation","src":"2921:16:13"},{"children":[{"attributes":{"assignments":[2166]},"children":[{"attributes":{"constant":false,"name":"resource","scope":2319,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2165,"name":"ElementaryTypeName","src":"2948:6:13"}],"id":2166,"name":"VariableDeclaration","src":"2948:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2167,"name":"Literal","src":"2966:1:13"}],"id":2168,"name":"VariableDeclarationStatement","src":"2948:19:13"},{"attributes":{"assignments":[2170]},"children":[{"attributes":{"constant":false,"name":"offset","scope":2319,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2169,"name":"ElementaryTypeName","src":"2977:7:13"}],"id":2170,"name":"VariableDeclaration","src":"2977:14:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2171,"name":"Literal","src":"2994:1:13"}],"id":2172,"name":"VariableDeclarationStatement","src":"2977:18:13"},{"attributes":{"assignments":[2174],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":2319,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2173,"name":"ElementaryTypeName","src":"3005:5:13"}],"id":2174,"name":"VariableDeclaration","src":"3005:17:13"}],"id":2175,"name":"VariableDeclarationStatement","src":"3005:17:13"},{"attributes":{"assignments":[2177],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":2319,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2176,"name":"ElementaryTypeName","src":"3032:5:13"}],"id":2177,"name":"VariableDeclaration","src":"3032:18:13"}],"id":2178,"name":"VariableDeclarationStatement","src":"3032:18:13"},{"attributes":{"assignments":[2180],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":2319,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2179,"name":"ElementaryTypeName","src":"3060:7:13"}],"id":2180,"name":"VariableDeclaration","src":"3060:16:13"}],"id":2181,"name":"VariableDeclarationStatement","src":"3060:16:13"},{"children":[{"attributes":{"assignments":[2185]},"children":[{"attributes":{"constant":false,"name":"iter","scope":2296,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":2184,"name":"UserDefinedTypeName","src":"3152:18:13"}],"id":2185,"name":"VariableDeclaration","src":"3152:30:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":5324,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2159,"type":"bytes calldata","value":"data"},"id":2186,"name":"Identifier","src":"3185:4:13"}],"id":2187,"name":"MemberAccess","src":"3185:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2188,"name":"Literal","src":"3201:1:13"}],"id":2189,"name":"FunctionCall","src":"3185:18:13"}],"id":2190,"name":"VariableDeclarationStatement","src":"3152:51:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":5339,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2191,"name":"Identifier","src":"3206:4:13"}],"id":2192,"name":"MemberAccess","src":"3206:9:13"}],"id":2193,"name":"FunctionCall","src":"3206:11:13"}],"id":2194,"name":"UnaryOperation","src":"3205:12:13"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":5441,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2195,"name":"Identifier","src":"3219:4:13"}],"id":2196,"name":"MemberAccess","src":"3219:9:13"}],"id":2197,"name":"FunctionCall","src":"3219:11:13"}],"id":2198,"name":"ExpressionStatement","src":"3219:11:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2199,"name":"Identifier","src":"3250:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2200,"name":"Literal","src":"3262:1:13"}],"id":2201,"name":"BinaryOperation","src":"3250:13:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2202,"name":"Identifier","src":"3283:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5289,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2203,"name":"Identifier","src":"3294:4:13"}],"id":2204,"name":"MemberAccess","src":"3294:12:13"}],"id":2205,"name":"Assignment","src":"3283:23:13"}],"id":2206,"name":"ExpressionStatement","src":"3283:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2207,"name":"Identifier","src":"3324:4:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":5462,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2208,"name":"Identifier","src":"3331:4:13"}],"id":2209,"name":"MemberAccess","src":"3331:9:13"}],"id":2210,"name":"FunctionCall","src":"3331:11:13"}],"id":2211,"name":"Assignment","src":"3324:18:13"}],"id":2212,"name":"ExpressionStatement","src":"3324:18:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2180,"type":"bytes32","value":"nameHash"},"id":2213,"name":"Identifier","src":"3360:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2214,"name":"Identifier","src":"3371:9:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":2215,"name":"Identifier","src":"3381:3:13"}],"id":2216,"name":"MemberAccess","src":"3381:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2217,"name":"Identifier","src":"3398:4:13"}],"id":2218,"name":"FunctionCall","src":"3381:22:13"}],"id":2219,"name":"FunctionCall","src":"3371:33:13"}],"id":2220,"name":"Assignment","src":"3360:44:13"}],"id":2221,"name":"ExpressionStatement","src":"3360:44:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2177,"type":"bytes memory","value":"value"},"id":2222,"name":"Identifier","src":"3422:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2223,"name":"ElementaryTypeNameExpression","src":"3430:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":5482,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2224,"name":"Identifier","src":"3436:4:13"}],"id":2225,"name":"MemberAccess","src":"3436:10:13"}],"id":2226,"name":"FunctionCall","src":"3436:12:13"}],"id":2227,"name":"FunctionCall","src":"3430:19:13"}],"id":2228,"name":"Assignment","src":"3422:27:13"}],"id":2229,"name":"ExpressionStatement","src":"3422:27:13"}],"id":2230,"name":"Block","src":"3265:199:13"},{"children":[{"attributes":{"assignments":[2232]},"children":[{"attributes":{"constant":false,"name":"newName","scope":2293,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2231,"name":"ElementaryTypeName","src":"3488:5:13"}],"id":2232,"name":"VariableDeclaration","src":"3488:20:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":5462,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2233,"name":"Identifier","src":"3511:4:13"}],"id":2234,"name":"MemberAccess","src":"3511:9:13"}],"id":2235,"name":"FunctionCall","src":"3511:11:13"}],"id":2236,"name":"VariableDeclarationStatement","src":"3488:34:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2237,"name":"Identifier","src":"3544:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5289,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2238,"name":"Identifier","src":"3556:4:13"}],"id":2239,"name":"MemberAccess","src":"3556:12:13"}],"id":2240,"name":"BinaryOperation","src":"3544:24:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6794,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2241,"name":"Identifier","src":"3573:4:13"}],"id":2242,"name":"MemberAccess","src":"3573:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2232,"type":"bytes memory","value":"newName"},"id":2243,"name":"Identifier","src":"3585:7:13"}],"id":2244,"name":"FunctionCall","src":"3573:20:13"}],"id":2245,"name":"UnaryOperation","src":"3572:21:13"}],"id":2246,"name":"BinaryOperation","src":"3544:49:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2572,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":2247,"name":"Identifier","src":"3617:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2157,"type":"bytes32","value":"node"},"id":2248,"name":"Identifier","src":"3629:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2249,"name":"Identifier","src":"3635:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2250,"name":"Identifier","src":"3641:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2159,"type":"bytes calldata","value":"data"},"id":2251,"name":"Identifier","src":"3651:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2252,"name":"Identifier","src":"3657:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2253,"name":"Identifier","src":"3665:4:13"}],"id":2254,"name":"MemberAccess","src":"3665:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2255,"name":"Identifier","src":"3679:6:13"}],"id":2256,"name":"BinaryOperation","src":"3665:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2177,"type":"bytes memory","value":"value"},"id":2257,"name":"Identifier","src":"3687:5:13"}],"id":2258,"name":"MemberAccess","src":"3687:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2259,"name":"Literal","src":"3703:1:13"}],"id":2260,"name":"BinaryOperation","src":"3687:17:13"}],"id":2261,"name":"FunctionCall","src":"3617:88:13"}],"id":2262,"name":"ExpressionStatement","src":"3617:88:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2263,"name":"Identifier","src":"3727:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5289,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2264,"name":"Identifier","src":"3738:4:13"}],"id":2265,"name":"MemberAccess","src":"3738:12:13"}],"id":2266,"name":"Assignment","src":"3727:23:13"}],"id":2267,"name":"ExpressionStatement","src":"3727:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2268,"name":"Identifier","src":"3772:6:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2269,"name":"Identifier","src":"3781:4:13"}],"id":2270,"name":"MemberAccess","src":"3781:11:13"}],"id":2271,"name":"Assignment","src":"3772:20:13"}],"id":2272,"name":"ExpressionStatement","src":"3772:20:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2273,"name":"Identifier","src":"3814:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2232,"type":"bytes memory","value":"newName"},"id":2274,"name":"Identifier","src":"3821:7:13"}],"id":2275,"name":"Assignment","src":"3814:14:13"}],"id":2276,"name":"ExpressionStatement","src":"3814:14:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2180,"type":"bytes32","value":"nameHash"},"id":2277,"name":"Identifier","src":"3850:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2278,"name":"Identifier","src":"3861:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2279,"name":"Identifier","src":"3871:4:13"}],"id":2280,"name":"FunctionCall","src":"3861:15:13"}],"id":2281,"name":"Assignment","src":"3850:26:13"}],"id":2282,"name":"ExpressionStatement","src":"3850:26:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2177,"type":"bytes memory","value":"value"},"id":2283,"name":"Identifier","src":"3898:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2284,"name":"ElementaryTypeNameExpression","src":"3906:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":5482,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2285,"name":"Identifier","src":"3912:4:13"}],"id":2286,"name":"MemberAccess","src":"3912:10:13"}],"id":2287,"name":"FunctionCall","src":"3912:12:13"}],"id":2288,"name":"FunctionCall","src":"3906:19:13"}],"id":2289,"name":"Assignment","src":"3898:27:13"}],"id":2290,"name":"ExpressionStatement","src":"3898:27:13"}],"id":2291,"name":"Block","src":"3595:349:13"}],"id":2292,"name":"IfStatement","src":"3540:404:13"}],"id":2293,"name":"Block","src":"3470:488:13"}],"id":2294,"name":"IfStatement","src":"3246:712:13"}],"id":2295,"name":"Block","src":"3232:736:13"}],"id":2296,"name":"ForStatement","src":"3147:821:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2297,"name":"Identifier","src":"3981:4:13"}],"id":2298,"name":"MemberAccess","src":"3981:11:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2299,"name":"Literal","src":"3995:1:13"}],"id":2300,"name":"BinaryOperation","src":"3981:15:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2572,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":2301,"name":"Identifier","src":"4012:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2157,"type":"bytes32","value":"node"},"id":2302,"name":"Identifier","src":"4024:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2303,"name":"Identifier","src":"4030:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2304,"name":"Identifier","src":"4036:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2159,"type":"bytes calldata","value":"data"},"id":2305,"name":"Identifier","src":"4046:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2306,"name":"Identifier","src":"4052:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2159,"type":"bytes calldata","value":"data"},"id":2307,"name":"Identifier","src":"4060:4:13"}],"id":2308,"name":"MemberAccess","src":"4060:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2309,"name":"Identifier","src":"4074:6:13"}],"id":2310,"name":"BinaryOperation","src":"4060:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2177,"type":"bytes memory","value":"value"},"id":2311,"name":"Identifier","src":"4082:5:13"}],"id":2312,"name":"MemberAccess","src":"4082:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2313,"name":"Literal","src":"4098:1:13"}],"id":2314,"name":"BinaryOperation","src":"4082:17:13"}],"id":2315,"name":"FunctionCall","src":"4012:88:13"}],"id":2316,"name":"ExpressionStatement","src":"4012:88:13"}],"id":2317,"name":"Block","src":"3998:113:13"}],"id":2318,"name":"IfStatement","src":"3977:134:13"}],"id":2319,"name":"Block","src":"2938:1179:13"}],"id":2320,"name":"FunctionDefinition","src":"2854:1263:13"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":2573,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2344,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2321,"name":"ElementaryTypeName","src":"4538:7:13"}],"id":2322,"name":"VariableDeclaration","src":"4538:12:13"},{"attributes":{"constant":false,"name":"name","scope":2344,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2323,"name":"ElementaryTypeName","src":"4552:7:13"}],"id":2324,"name":"VariableDeclaration","src":"4552:12:13"},{"attributes":{"constant":false,"name":"resource","scope":2344,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2325,"name":"ElementaryTypeName","src":"4566:6:13"}],"id":2326,"name":"VariableDeclaration","src":"4566:15:13"}],"id":2327,"name":"ParameterList","src":"4537:45:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2344,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2328,"name":"ElementaryTypeName","src":"4604:5:13"}],"id":2329,"name":"VariableDeclaration","src":"4604:12:13"}],"id":2330,"name":"ParameterList","src":"4603:14:13"},{"children":[{"attributes":{"functionReturnParameters":2330},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2331,"name":"Identifier","src":"4635:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2322,"type":"bytes32","value":"node"},"id":2332,"name":"Identifier","src":"4643:4:13"}],"id":2333,"name":"IndexAccess","src":"4635:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2137,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2334,"name":"Identifier","src":"4649:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2322,"type":"bytes32","value":"node"},"id":2335,"name":"Identifier","src":"4658:4:13"}],"id":2336,"name":"IndexAccess","src":"4649:14:13"}],"id":2337,"name":"IndexAccess","src":"4635:29:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2324,"type":"bytes32","value":"name"},"id":2338,"name":"Identifier","src":"4665:4:13"}],"id":2339,"name":"IndexAccess","src":"4635:35:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2326,"type":"uint16","value":"resource"},"id":2340,"name":"Identifier","src":"4671:8:13"}],"id":2341,"name":"IndexAccess","src":"4635:45:13"}],"id":2342,"name":"Return","src":"4628:52:13"}],"id":2343,"name":"Block","src":"4618:69:13"}],"id":2344,"name":"FunctionDefinition","src":"4519:168:13"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":2573,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2367,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2345,"name":"ElementaryTypeName","src":"4924:7:13"}],"id":2346,"name":"VariableDeclaration","src":"4924:12:13"},{"attributes":{"constant":false,"name":"name","scope":2367,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2347,"name":"ElementaryTypeName","src":"4938:7:13"}],"id":2348,"name":"VariableDeclaration","src":"4938:12:13"}],"id":2349,"name":"ParameterList","src":"4923:28:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2367,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2350,"name":"ElementaryTypeName","src":"4973:4:13"}],"id":2351,"name":"VariableDeclaration","src":"4973:4:13"}],"id":2352,"name":"ParameterList","src":"4972:6:13"},{"children":[{"attributes":{"functionReturnParameters":2352},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2155,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2353,"name":"Identifier","src":"4997:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"bytes32","value":"node"},"id":2354,"name":"Identifier","src":"5014:4:13"}],"id":2355,"name":"IndexAccess","src":"4997:22:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2137,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2356,"name":"Identifier","src":"5020:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"bytes32","value":"node"},"id":2357,"name":"Identifier","src":"5029:4:13"}],"id":2358,"name":"IndexAccess","src":"5020:14:13"}],"id":2359,"name":"IndexAccess","src":"4997:38:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"bytes32","value":"name"},"id":2360,"name":"Identifier","src":"5036:4:13"}],"id":2361,"name":"IndexAccess","src":"4997:44:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2362,"name":"Literal","src":"5045:1:13"}],"id":2363,"name":"BinaryOperation","src":"4997:49:13"}],"id":2364,"name":"TupleExpression","src":"4996:51:13"}],"id":2365,"name":"Return","src":"4989:58:13"}],"id":2366,"name":"Block","src":"4979:75:13"}],"id":2367,"name":"FunctionDefinition","src":"4901:153:13"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":2573,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2385,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2368,"name":"ElementaryTypeName","src":"5215:7:13"}],"id":2369,"name":"VariableDeclaration","src":"5215:12:13"}],"id":2370,"name":"ParameterList","src":"5214:14:13"},{"attributes":{"parameters":[null]},"children":[],"id":2374,"name":"ParameterList","src":"5253:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2371,"name":"Identifier","src":"5236:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2369,"type":"bytes32","value":"node"},"id":2372,"name":"Identifier","src":"5247:4:13"}],"id":2373,"name":"ModifierInvocation","src":"5236:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2137,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2375,"name":"Identifier","src":"5263:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2369,"type":"bytes32","value":"node"},"id":2376,"name":"Identifier","src":"5272:4:13"}],"id":2377,"name":"IndexAccess","src":"5263:14:13"}],"id":2378,"name":"UnaryOperation","src":"5263:16:13"}],"id":2379,"name":"ExpressionStatement","src":"5263:16:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2121,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":2380,"name":"Identifier","src":"5294:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2369,"type":"bytes32","value":"node"},"id":2381,"name":"Identifier","src":"5309:4:13"}],"id":2382,"name":"FunctionCall","src":"5294:20:13"}],"id":2383,"name":"EmitStatement","src":"5289:25:13"}],"id":2384,"name":"Block","src":"5253:68:13"}],"id":2385,"name":"FunctionDefinition","src":"5193:128:13"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":2573,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2414,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2386,"name":"ElementaryTypeName","src":"5562:7:13"}],"id":2387,"name":"VariableDeclaration","src":"5562:12:13"},{"attributes":{"constant":false,"name":"hash","scope":2414,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2388,"name":"ElementaryTypeName","src":"5576:5:13"}],"id":2389,"name":"VariableDeclaration","src":"5576:19:13"}],"id":2390,"name":"ParameterList","src":"5561:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":2394,"name":"ParameterList","src":"5623:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2391,"name":"Identifier","src":"5606:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes32","value":"node"},"id":2392,"name":"Identifier","src":"5617:4:13"}],"id":2393,"name":"ModifierInvocation","src":"5606:16:13"},{"children":[{"attributes":{"assignments":[2396]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":2413,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2395,"name":"ElementaryTypeName","src":"5633:5:13"}],"id":2396,"name":"VariableDeclaration","src":"5633:20:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2133,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2397,"name":"Identifier","src":"5656:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes32","value":"node"},"id":2398,"name":"Identifier","src":"5667:4:13"}],"id":2399,"name":"IndexAccess","src":"5656:16:13"}],"id":2400,"name":"VariableDeclarationStatement","src":"5633:39:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2133,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2401,"name":"Identifier","src":"5682:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes32","value":"node"},"id":2402,"name":"Identifier","src":"5693:4:13"}],"id":2403,"name":"IndexAccess","src":"5682:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2389,"type":"bytes calldata","value":"hash"},"id":2404,"name":"Identifier","src":"5701:4:13"}],"id":2405,"name":"Assignment","src":"5682:23:13"}],"id":2406,"name":"ExpressionStatement","src":"5682:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2129,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":2407,"name":"Identifier","src":"5720:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes32","value":"node"},"id":2408,"name":"Identifier","src":"5739:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2396,"type":"bytes memory","value":"oldhash"},"id":2409,"name":"Identifier","src":"5745:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2389,"type":"bytes calldata","value":"hash"},"id":2410,"name":"Identifier","src":"5754:4:13"}],"id":2411,"name":"FunctionCall","src":"5720:39:13"}],"id":2412,"name":"EmitStatement","src":"5715:44:13"}],"id":2413,"name":"Block","src":"5623:143:13"}],"id":2414,"name":"FunctionDefinition","src":"5541:225:13"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":2573,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2426,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2415,"name":"ElementaryTypeName","src":"5938:7:13"}],"id":2416,"name":"VariableDeclaration","src":"5938:12:13"}],"id":2417,"name":"ParameterList","src":"5937:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2426,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2418,"name":"ElementaryTypeName","src":"5975:5:13"}],"id":2419,"name":"VariableDeclaration","src":"5975:12:13"}],"id":2420,"name":"ParameterList","src":"5974:14:13"},{"children":[{"attributes":{"functionReturnParameters":2420},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2133,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2421,"name":"Identifier","src":"6006:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2416,"type":"bytes32","value":"node"},"id":2422,"name":"Identifier","src":"6017:4:13"}],"id":2423,"name":"IndexAccess","src":"6006:16:13"}],"id":2424,"name":"Return","src":"5999:23:13"}],"id":2425,"name":"Block","src":"5989:40:13"}],"id":2426,"name":"FunctionDefinition","src":"5920:109:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2573,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2447,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2427,"name":"ElementaryTypeName","src":"6062:6:13"}],"id":2428,"name":"VariableDeclaration","src":"6062:18:13"}],"id":2429,"name":"ParameterList","src":"6061:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2447,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2430,"name":"ElementaryTypeName","src":"6102:4:13"}],"id":2431,"name":"VariableDeclaration","src":"6102:4:13"}],"id":2432,"name":"ParameterList","src":"6101:6:13"},{"children":[{"attributes":{"functionReturnParameters":2432},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2428,"type":"bytes4","value":"interfaceID"},"id":2433,"name":"Identifier","src":"6125:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":2434,"name":"Identifier","src":"6140:23:13"}],"id":2435,"name":"BinaryOperation","src":"6125:38:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2428,"type":"bytes4","value":"interfaceID"},"id":2436,"name":"Identifier","src":"6182:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2099,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":2437,"name":"Identifier","src":"6197:21:13"}],"id":2438,"name":"BinaryOperation","src":"6182:36:13"}],"id":2439,"name":"BinaryOperation","src":"6125:93:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7460,"type":"contract super DNSResolver","value":"super"},"id":2440,"name":"Identifier","src":"6237:5:13"}],"id":2441,"name":"MemberAccess","src":"6237:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2428,"type":"bytes4","value":"interfaceID"},"id":2442,"name":"Identifier","src":"6261:11:13"}],"id":2443,"name":"FunctionCall","src":"6237:36:13"}],"id":2444,"name":"BinaryOperation","src":"6125:148:13"}],"id":2445,"name":"Return","src":"6118:155:13"}],"id":2446,"name":"Block","src":"6108:172:13"}],"id":2447,"name":"FunctionDefinition","src":"6035:245:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":2573,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2572,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2448,"name":"ElementaryTypeName","src":"6316:7:13"}],"id":2449,"name":"VariableDeclaration","src":"6316:12:13"},{"attributes":{"constant":false,"name":"name","scope":2572,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2450,"name":"ElementaryTypeName","src":"6338:5:13"}],"id":2451,"name":"VariableDeclaration","src":"6338:17:13"},{"attributes":{"constant":false,"name":"resource","scope":2572,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2452,"name":"ElementaryTypeName","src":"6365:6:13"}],"id":2453,"name":"VariableDeclaration","src":"6365:15:13"},{"attributes":{"constant":false,"name":"data","scope":2572,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2454,"name":"ElementaryTypeName","src":"6390:5:13"}],"id":2455,"name":"VariableDeclaration","src":"6390:17:13"},{"attributes":{"constant":false,"name":"offset","scope":2572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2456,"name":"ElementaryTypeName","src":"6417:7:13"}],"id":2457,"name":"VariableDeclaration","src":"6417:14:13"},{"attributes":{"constant":false,"name":"size","scope":2572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2458,"name":"ElementaryTypeName","src":"6441:7:13"}],"id":2459,"name":"VariableDeclaration","src":"6441:12:13"},{"attributes":{"constant":false,"name":"deleteRecord","scope":2572,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2460,"name":"ElementaryTypeName","src":"6463:4:13"}],"id":2461,"name":"VariableDeclaration","src":"6463:17:13"}],"id":2462,"name":"ParameterList","src":"6306:175:13"},{"attributes":{"parameters":[null]},"children":[],"id":2463,"name":"ParameterList","src":"6494:0:13"},{"children":[{"attributes":{"assignments":[2465]},"children":[{"attributes":{"constant":false,"name":"version","scope":2571,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2464,"name":"ElementaryTypeName","src":"6504:7:13"}],"id":2465,"name":"VariableDeclaration","src":"6504:15:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2137,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2466,"name":"Identifier","src":"6522:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2467,"name":"Identifier","src":"6531:4:13"}],"id":2468,"name":"IndexAccess","src":"6522:14:13"}],"id":2469,"name":"VariableDeclarationStatement","src":"6504:32:13"},{"attributes":{"assignments":[2471]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":2571,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2470,"name":"ElementaryTypeName","src":"6546:7:13"}],"id":2471,"name":"VariableDeclaration","src":"6546:16:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2472,"name":"Identifier","src":"6565:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2451,"type":"bytes memory","value":"name"},"id":2473,"name":"Identifier","src":"6575:4:13"}],"id":2474,"name":"FunctionCall","src":"6565:15:13"}],"id":2475,"name":"VariableDeclarationStatement","src":"6546:34:13"},{"attributes":{"assignments":[2477]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":2571,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2476,"name":"ElementaryTypeName","src":"6590:5:13"}],"id":2477,"name":"VariableDeclaration","src":"6590:19:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7001,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2455,"type":"bytes memory","value":"data"},"id":2478,"name":"Identifier","src":"6612:4:13"}],"id":2479,"name":"MemberAccess","src":"6612:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"uint256","value":"offset"},"id":2480,"name":"Identifier","src":"6627:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"uint256","value":"size"},"id":2481,"name":"Identifier","src":"6635:4:13"}],"id":2482,"name":"FunctionCall","src":"6612:28:13"}],"id":2483,"name":"VariableDeclarationStatement","src":"6590:50:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"bool","value":"deleteRecord"},"id":2484,"name":"Identifier","src":"6654:12:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2485,"name":"Identifier","src":"6686:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2486,"name":"Identifier","src":"6694:4:13"}],"id":2487,"name":"IndexAccess","src":"6686:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2488,"name":"Identifier","src":"6700:7:13"}],"id":2489,"name":"IndexAccess","src":"6686:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2490,"name":"Identifier","src":"6709:8:13"}],"id":2491,"name":"IndexAccess","src":"6686:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2492,"name":"Identifier","src":"6719:8:13"}],"id":2493,"name":"IndexAccess","src":"6686:42:13"}],"id":2494,"name":"MemberAccess","src":"6686:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2495,"name":"Literal","src":"6739:1:13"}],"id":2496,"name":"BinaryOperation","src":"6686:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2155,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2497,"name":"Identifier","src":"6760:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2498,"name":"Identifier","src":"6777:4:13"}],"id":2501,"name":"IndexAccess","src":"6760:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2499,"name":"Identifier","src":"6783:7:13"}],"id":2502,"name":"IndexAccess","src":"6760:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2500,"name":"Identifier","src":"6792:8:13"}],"id":2503,"name":"IndexAccess","src":"6760:41:13"}],"id":2504,"name":"UnaryOperation","src":"6760:43:13"}],"id":2505,"name":"ExpressionStatement","src":"6760:43:13"}],"id":2506,"name":"Block","src":"6742:76:13"}],"id":2507,"name":"IfStatement","src":"6682:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2508,"name":"Identifier","src":"6838:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2509,"name":"Identifier","src":"6846:4:13"}],"id":2510,"name":"IndexAccess","src":"6838:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2511,"name":"Identifier","src":"6852:7:13"}],"id":2512,"name":"IndexAccess","src":"6838:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2513,"name":"Identifier","src":"6861:8:13"}],"id":2514,"name":"IndexAccess","src":"6838:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2515,"name":"Identifier","src":"6871:8:13"}],"id":2516,"name":"IndexAccess","src":"6838:42:13"}],"id":2517,"name":"TupleExpression","src":"6837:44:13"}],"id":2518,"name":"UnaryOperation","src":"6831:50:13"}],"id":2519,"name":"ExpressionStatement","src":"6831:50:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":2117,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":2520,"name":"Identifier","src":"6900:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2521,"name":"Identifier","src":"6917:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2451,"type":"bytes memory","value":"name"},"id":2522,"name":"Identifier","src":"6923:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2523,"name":"Identifier","src":"6929:8:13"}],"id":2524,"name":"FunctionCall","src":"6900:38:13"}],"id":2525,"name":"EmitStatement","src":"6895:43:13"}],"id":2526,"name":"Block","src":"6668:281:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2527,"name":"Identifier","src":"6973:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2528,"name":"Identifier","src":"6981:4:13"}],"id":2529,"name":"IndexAccess","src":"6973:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2530,"name":"Identifier","src":"6987:7:13"}],"id":2531,"name":"IndexAccess","src":"6973:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2532,"name":"Identifier","src":"6996:8:13"}],"id":2533,"name":"IndexAccess","src":"6973:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2534,"name":"Identifier","src":"7006:8:13"}],"id":2535,"name":"IndexAccess","src":"6973:42:13"}],"id":2536,"name":"MemberAccess","src":"6973:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2537,"name":"Literal","src":"7026:1:13"}],"id":2538,"name":"BinaryOperation","src":"6973:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2155,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2539,"name":"Identifier","src":"7047:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2540,"name":"Identifier","src":"7064:4:13"}],"id":2543,"name":"IndexAccess","src":"7047:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2541,"name":"Identifier","src":"7070:7:13"}],"id":2544,"name":"IndexAccess","src":"7047:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2542,"name":"Identifier","src":"7079:8:13"}],"id":2545,"name":"IndexAccess","src":"7047:41:13"}],"id":2546,"name":"UnaryOperation","src":"7047:43:13"}],"id":2547,"name":"ExpressionStatement","src":"7047:43:13"}],"id":2548,"name":"Block","src":"7029:76:13"}],"id":2549,"name":"IfStatement","src":"6969:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2550,"name":"Identifier","src":"7118:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2551,"name":"Identifier","src":"7126:4:13"}],"id":2555,"name":"IndexAccess","src":"7118:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2552,"name":"Identifier","src":"7132:7:13"}],"id":2556,"name":"IndexAccess","src":"7118:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2553,"name":"Identifier","src":"7141:8:13"}],"id":2557,"name":"IndexAccess","src":"7118:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2554,"name":"Identifier","src":"7151:8:13"}],"id":2558,"name":"IndexAccess","src":"7118:42:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2477,"type":"bytes memory","value":"rrData"},"id":2559,"name":"Identifier","src":"7163:6:13"}],"id":2560,"name":"Assignment","src":"7118:51:13"}],"id":2561,"name":"ExpressionStatement","src":"7118:51:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2109,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":2562,"name":"Identifier","src":"7188:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2563,"name":"Identifier","src":"7205:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2451,"type":"bytes memory","value":"name"},"id":2564,"name":"Identifier","src":"7211:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2565,"name":"Identifier","src":"7217:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2477,"type":"bytes memory","value":"rrData"},"id":2566,"name":"Identifier","src":"7227:6:13"}],"id":2567,"name":"FunctionCall","src":"7188:46:13"}],"id":2568,"name":"EmitStatement","src":"7183:51:13"}],"id":2569,"name":"Block","src":"6955:290:13"}],"id":2570,"name":"IfStatement","src":"6650:595:13"}],"id":2571,"name":"Block","src":"6494:757:13"}],"id":2572,"name":"FunctionDefinition","src":"6286:965:13"}],"id":2573,"name":"ContractDefinition","src":"81:7172:13"}],"id":2574,"name":"SourceUnit","src":"0:7253:13"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[2760]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2575,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2761,"symbolAliases":[null],"unitAlias":""},"id":2576,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":2013,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":2761,"symbolAliases":[null],"unitAlias":""},"id":2577,"name":"ImportDirective","src":"55:28:14"},{"attributes":{"contractDependencies":[2012,5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2760,2012,5159],"name":"InterfaceResolver","scope":2761},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2578,"name":"UserDefinedTypeName","src":"115:12:14"}],"id":2579,"name":"InheritanceSpecifier","src":"115:12:14"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":2012,"type":"contract AddrResolver"},"id":2580,"name":"UserDefinedTypeName","src":"129:12:14"}],"id":2581,"name":"InheritanceSpecifier","src":"129:12:14"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":2760,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2582,"name":"ElementaryTypeName","src":"148:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":2583,"name":"ElementaryTypeNameExpression","src":"197:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2584,"name":"Identifier","src":"204:9:14"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":2585,"name":"Literal","src":"214:38:14"}],"id":2586,"name":"FunctionCall","src":"204:49:14"}],"id":2587,"name":"FunctionCall","src":"197:57:14"}],"id":2588,"name":"VariableDeclaration","src":"148:106:14"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":2760,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2589,"name":"ElementaryTypeName","src":"260:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":2590,"name":"Literal","src":"304:10:14"}],"id":2591,"name":"VariableDeclaration","src":"260:54:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2599,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2592,"name":"ElementaryTypeName","src":"344:7:14"}],"id":2593,"name":"VariableDeclaration","src":"344:20:14"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":2599,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2594,"name":"ElementaryTypeName","src":"366:6:14"}],"id":2595,"name":"VariableDeclaration","src":"366:26:14"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":2599,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2596,"name":"ElementaryTypeName","src":"394:7:14"}],"id":2597,"name":"VariableDeclaration","src":"394:19:14"}],"id":2598,"name":"ParameterList","src":"343:71:14"}],"id":2599,"name":"EventDefinition","src":"321:94:14"},{"attributes":{"constant":false,"name":"interfaces","scope":2760,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2600,"name":"ElementaryTypeName","src":"429:7:14"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2601,"name":"ElementaryTypeName","src":"446:6:14"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2602,"name":"ElementaryTypeName","src":"454:7:14"}],"id":2603,"name":"Mapping","src":"438:24:14"}],"id":2604,"name":"Mapping","src":"421:42:14"}],"id":2605,"name":"VariableDeclaration","src":"421:53:14"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":2760,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2632,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2606,"name":"ElementaryTypeName","src":"880:7:14"}],"id":2607,"name":"VariableDeclaration","src":"880:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":2632,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2608,"name":"ElementaryTypeName","src":"894:6:14"}],"id":2609,"name":"VariableDeclaration","src":"894:18:14"},{"attributes":{"constant":false,"name":"implementer","scope":2632,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2610,"name":"ElementaryTypeName","src":"914:7:14"}],"id":2611,"name":"VariableDeclaration","src":"914:19:14"}],"id":2612,"name":"ParameterList","src":"879:55:14"},{"attributes":{"parameters":[null]},"children":[],"id":2616,"name":"ParameterList","src":"961:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2613,"name":"Identifier","src":"944:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2607,"type":"bytes32","value":"node"},"id":2614,"name":"Identifier","src":"955:4:14"}],"id":2615,"name":"ModifierInvocation","src":"944:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2605,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":2617,"name":"Identifier","src":"971:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2607,"type":"bytes32","value":"node"},"id":2618,"name":"Identifier","src":"982:4:14"}],"id":2620,"name":"IndexAccess","src":"971:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2609,"type":"bytes4","value":"interfaceID"},"id":2619,"name":"Identifier","src":"988:11:14"}],"id":2621,"name":"IndexAccess","src":"971:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2611,"type":"address","value":"implementer"},"id":2622,"name":"Identifier","src":"1003:11:14"}],"id":2623,"name":"Assignment","src":"971:43:14"}],"id":2624,"name":"ExpressionStatement","src":"971:43:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2599,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":2625,"name":"Identifier","src":"1029:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2607,"type":"bytes32","value":"node"},"id":2626,"name":"Identifier","src":"1046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2609,"type":"bytes4","value":"interfaceID"},"id":2627,"name":"Identifier","src":"1052:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2611,"type":"address","value":"implementer"},"id":2628,"name":"Identifier","src":"1065:11:14"}],"id":2629,"name":"FunctionCall","src":"1029:48:14"}],"id":2630,"name":"EmitStatement","src":"1024:53:14"}],"id":2631,"name":"Block","src":"961:123:14"}],"id":2632,"name":"FunctionDefinition","src":"858:226:14"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":2760,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2742,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2633,"name":"ElementaryTypeName","src":"1751:7:14"}],"id":2634,"name":"VariableDeclaration","src":"1751:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":2742,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2635,"name":"ElementaryTypeName","src":"1765:6:14"}],"id":2636,"name":"VariableDeclaration","src":"1765:18:14"}],"id":2637,"name":"ParameterList","src":"1750:34:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":2742,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2638,"name":"ElementaryTypeName","src":"1808:7:14"}],"id":2639,"name":"VariableDeclaration","src":"1808:7:14"}],"id":2640,"name":"ParameterList","src":"1807:9:14"},{"children":[{"attributes":{"assignments":[2642]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":2741,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2641,"name":"ElementaryTypeName","src":"1827:7:14"}],"id":2642,"name":"VariableDeclaration","src":"1827:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2605,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":2643,"name":"Identifier","src":"1849:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"bytes32","value":"node"},"id":2644,"name":"Identifier","src":"1860:4:14"}],"id":2645,"name":"IndexAccess","src":"1849:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2636,"type":"bytes4","value":"interfaceID"},"id":2646,"name":"Identifier","src":"1866:11:14"}],"id":2647,"name":"IndexAccess","src":"1849:29:14"}],"id":2648,"name":"VariableDeclarationStatement","src":"1827:51:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"address","value":"implementer"},"id":2649,"name":"Identifier","src":"1891:11:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2650,"name":"ElementaryTypeNameExpression","src":"1906:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2651,"name":"Literal","src":"1914:1:14"}],"id":2652,"name":"FunctionCall","src":"1906:10:14"}],"id":2653,"name":"BinaryOperation","src":"1891:25:14"},{"children":[{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"address","value":"implementer"},"id":2654,"name":"Identifier","src":"1939:11:14"}],"id":2655,"name":"Return","src":"1932:18:14"}],"id":2656,"name":"Block","src":"1918:43:14"}],"id":2657,"name":"IfStatement","src":"1888:73:14"},{"attributes":{"assignments":[2659]},"children":[{"attributes":{"constant":false,"name":"a","scope":2741,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2658,"name":"ElementaryTypeName","src":"1971:7:14"}],"id":2659,"name":"VariableDeclaration","src":"1971:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[1935,1990],"referencedDeclaration":1935,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":2660,"name":"Identifier","src":"1983:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"bytes32","value":"node"},"id":2661,"name":"Identifier","src":"1988:4:14"}],"id":2662,"name":"FunctionCall","src":"1983:10:14"}],"id":2663,"name":"VariableDeclarationStatement","src":"1971:22:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2659,"type":"address","value":"a"},"id":2664,"name":"Identifier","src":"2006:1:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2665,"name":"ElementaryTypeNameExpression","src":"2011:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2666,"name":"Literal","src":"2019:1:14"}],"id":2667,"name":"FunctionCall","src":"2011:10:14"}],"id":2668,"name":"BinaryOperation","src":"2006:15:14"},{"children":[{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2669,"name":"ElementaryTypeNameExpression","src":"2044:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2670,"name":"Literal","src":"2052:1:14"}],"id":2671,"name":"FunctionCall","src":"2044:10:14"}],"id":2672,"name":"Return","src":"2037:17:14"}],"id":2673,"name":"Block","src":"2023:42:14"}],"id":2674,"name":"IfStatement","src":"2003:62:14"},{"attributes":{"assignments":[2676,2678]},"children":[{"attributes":{"constant":false,"name":"success","scope":2741,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2675,"name":"ElementaryTypeName","src":"2076:4:14"}],"id":2676,"name":"VariableDeclaration","src":"2076:12:14"},{"attributes":{"constant":false,"name":"returnData","scope":2741,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2677,"name":"ElementaryTypeName","src":"2090:5:14"}],"id":2678,"name":"VariableDeclaration","src":"2090:23:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2659,"type":"address","value":"a"},"id":2679,"name":"Identifier","src":"2117:1:14"}],"id":2680,"name":"MemberAccess","src":"2117:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":2681,"name":"Identifier","src":"2130:3:14"}],"id":2682,"name":"MemberAccess","src":"2130:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":2683,"name":"Literal","src":"2154:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"bytes4","value":"INTERFACE_META_ID"},"id":2684,"name":"Identifier","src":"2183:17:14"}],"id":2685,"name":"FunctionCall","src":"2130:71:14"}],"id":2686,"name":"FunctionCall","src":"2117:85:14"}],"id":2687,"name":"VariableDeclarationStatement","src":"2075:127:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2676,"type":"bool","value":"success"},"id":2688,"name":"Identifier","src":"2216:7:14"}],"id":2689,"name":"UnaryOperation","src":"2215:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2690,"name":"Identifier","src":"2227:10:14"}],"id":2691,"name":"MemberAccess","src":"2227:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2692,"name":"Literal","src":"2247:2:14"}],"id":2693,"name":"BinaryOperation","src":"2227:22:14"}],"id":2694,"name":"BinaryOperation","src":"2215:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2695,"name":"Identifier","src":"2253:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2696,"name":"Literal","src":"2264:2:14"}],"id":2697,"name":"IndexAccess","src":"2253:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2698,"name":"Literal","src":"2271:1:14"}],"id":2699,"name":"BinaryOperation","src":"2253:19:14"}],"id":2700,"name":"BinaryOperation","src":"2215:57:14"},{"children":[{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2701,"name":"ElementaryTypeNameExpression","src":"2342:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2702,"name":"Literal","src":"2350:1:14"}],"id":2703,"name":"FunctionCall","src":"2342:10:14"}],"id":2704,"name":"Return","src":"2335:17:14"}],"id":2705,"name":"Block","src":"2274:89:14"}],"id":2706,"name":"IfStatement","src":"2212:151:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2676,"type":"bool","value":"success"},"id":2707,"name":"Identifier","src":"2374:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2708,"name":"Identifier","src":"2383:10:14"}],"id":2709,"name":"TupleExpression","src":"2373:21:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2659,"type":"address","value":"a"},"id":2710,"name":"Identifier","src":"2397:1:14"}],"id":2711,"name":"MemberAccess","src":"2397:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":2712,"name":"Identifier","src":"2410:3:14"}],"id":2713,"name":"MemberAccess","src":"2410:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":2714,"name":"Literal","src":"2434:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2636,"type":"bytes4","value":"interfaceID"},"id":2715,"name":"Identifier","src":"2463:11:14"}],"id":2716,"name":"FunctionCall","src":"2410:65:14"}],"id":2717,"name":"FunctionCall","src":"2397:79:14"}],"id":2718,"name":"Assignment","src":"2373:103:14"}],"id":2719,"name":"ExpressionStatement","src":"2373:103:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2676,"type":"bool","value":"success"},"id":2720,"name":"Identifier","src":"2490:7:14"}],"id":2721,"name":"UnaryOperation","src":"2489:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2722,"name":"Identifier","src":"2501:10:14"}],"id":2723,"name":"MemberAccess","src":"2501:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2724,"name":"Literal","src":"2521:2:14"}],"id":2725,"name":"BinaryOperation","src":"2501:22:14"}],"id":2726,"name":"BinaryOperation","src":"2489:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2727,"name":"Identifier","src":"2527:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2728,"name":"Literal","src":"2538:2:14"}],"id":2729,"name":"IndexAccess","src":"2527:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2730,"name":"Literal","src":"2545:1:14"}],"id":2731,"name":"BinaryOperation","src":"2527:19:14"}],"id":2732,"name":"BinaryOperation","src":"2489:57:14"},{"children":[{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2733,"name":"ElementaryTypeNameExpression","src":"2628:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2734,"name":"Literal","src":"2636:1:14"}],"id":2735,"name":"FunctionCall","src":"2628:10:14"}],"id":2736,"name":"Return","src":"2621:17:14"}],"id":2737,"name":"Block","src":"2548:101:14"}],"id":2738,"name":"IfStatement","src":"2486:163:14"},{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2659,"type":"address","value":"a"},"id":2739,"name":"Identifier","src":"2666:1:14"}],"id":2740,"name":"Return","src":"2659:8:14"}],"id":2741,"name":"Block","src":"1817:857:14"}],"id":2742,"name":"FunctionDefinition","src":"1721:953:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2760,"stateMutability":"pure","superFunction":2011,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2759,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2743,"name":"ElementaryTypeName","src":"2707:6:14"}],"id":2744,"name":"VariableDeclaration","src":"2707:18:14"}],"id":2745,"name":"ParameterList","src":"2706:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":2759,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2746,"name":"ElementaryTypeName","src":"2747:4:14"}],"id":2747,"name":"VariableDeclaration","src":"2747:4:14"}],"id":2748,"name":"ParameterList","src":"2746:6:14"},{"children":[{"attributes":{"functionReturnParameters":2748},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"bytes4","value":"interfaceID"},"id":2749,"name":"Identifier","src":"2770:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2588,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":2750,"name":"Identifier","src":"2785:22:14"}],"id":2751,"name":"BinaryOperation","src":"2770:37:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":2011,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7462,"type":"contract super InterfaceResolver","value":"super"},"id":2752,"name":"Identifier","src":"2811:5:14"}],"id":2753,"name":"MemberAccess","src":"2811:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"bytes4","value":"interfaceID"},"id":2754,"name":"Identifier","src":"2835:11:14"}],"id":2755,"name":"FunctionCall","src":"2811:36:14"}],"id":2756,"name":"BinaryOperation","src":"2770:77:14"}],"id":2757,"name":"Return","src":"2763:84:14"}],"id":2758,"name":"Block","src":"2753:101:14"}],"id":2759,"name":"FunctionDefinition","src":"2680:174:14"}],"id":2760,"name":"ContractDefinition","src":"85:2771:14"}],"id":2761,"name":"SourceUnit","src":"0:2857:14"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[2830]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2762,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2831,"symbolAliases":[null],"unitAlias":""},"id":2763,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2830,5159],"name":"NameResolver","scope":2831},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2764,"name":"UserDefinedTypeName","src":"81:12:15"}],"id":2765,"name":"InheritanceSpecifier","src":"81:12:15"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":2830,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2766,"name":"ElementaryTypeName","src":"100:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":2767,"name":"Literal","src":"144:10:15"}],"id":2768,"name":"VariableDeclaration","src":"100:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2774,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2769,"name":"ElementaryTypeName","src":"179:7:15"}],"id":2770,"name":"VariableDeclaration","src":"179:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2774,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2771,"name":"ElementaryTypeName","src":"201:6:15"}],"id":2772,"name":"VariableDeclaration","src":"201:11:15"}],"id":2773,"name":"ParameterList","src":"178:35:15"}],"id":2774,"name":"EventDefinition","src":"161:53:15"},{"attributes":{"constant":false,"name":"names","scope":2830,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2775,"name":"ElementaryTypeName","src":"228:7:15"},{"attributes":{"name":"string","type":"string"},"id":2776,"name":"ElementaryTypeName","src":"237:6:15"}],"id":2777,"name":"Mapping","src":"220:24:15"}],"id":2778,"name":"VariableDeclaration","src":"220:30:15"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":2830,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2800,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2779,"name":"ElementaryTypeName","src":"509:7:15"}],"id":2780,"name":"VariableDeclaration","src":"509:12:15"},{"attributes":{"constant":false,"name":"name","scope":2800,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2781,"name":"ElementaryTypeName","src":"523:6:15"}],"id":2782,"name":"VariableDeclaration","src":"523:20:15"}],"id":2783,"name":"ParameterList","src":"508:36:15"},{"attributes":{"parameters":[null]},"children":[],"id":2787,"name":"ParameterList","src":"571:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2784,"name":"Identifier","src":"554:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2780,"type":"bytes32","value":"node"},"id":2785,"name":"Identifier","src":"565:4:15"}],"id":2786,"name":"ModifierInvocation","src":"554:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":2788,"name":"Identifier","src":"581:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2780,"type":"bytes32","value":"node"},"id":2789,"name":"Identifier","src":"587:4:15"}],"id":2790,"name":"IndexAccess","src":"581:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"string calldata","value":"name"},"id":2791,"name":"Identifier","src":"595:4:15"}],"id":2792,"name":"Assignment","src":"581:18:15"}],"id":2793,"name":"ExpressionStatement","src":"581:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2774,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":2794,"name":"Identifier","src":"614:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2780,"type":"bytes32","value":"node"},"id":2795,"name":"Identifier","src":"626:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"string calldata","value":"name"},"id":2796,"name":"Identifier","src":"632:4:15"}],"id":2797,"name":"FunctionCall","src":"614:23:15"}],"id":2798,"name":"EmitStatement","src":"609:28:15"}],"id":2799,"name":"Block","src":"571:73:15"}],"id":2800,"name":"FunctionDefinition","src":"492:152:15"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":2830,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2812,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2801,"name":"ElementaryTypeName","src":"858:7:15"}],"id":2802,"name":"VariableDeclaration","src":"858:12:15"}],"id":2803,"name":"ParameterList","src":"857:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":2812,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2804,"name":"ElementaryTypeName","src":"895:6:15"}],"id":2805,"name":"VariableDeclaration","src":"895:13:15"}],"id":2806,"name":"ParameterList","src":"894:15:15"},{"children":[{"attributes":{"functionReturnParameters":2806},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":2807,"name":"Identifier","src":"927:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2808,"name":"Identifier","src":"933:4:15"}],"id":2809,"name":"IndexAccess","src":"927:11:15"}],"id":2810,"name":"Return","src":"920:18:15"}],"id":2811,"name":"Block","src":"910:35:15"}],"id":2812,"name":"FunctionDefinition","src":"844:101:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2830,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2829,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2813,"name":"ElementaryTypeName","src":"978:6:15"}],"id":2814,"name":"VariableDeclaration","src":"978:18:15"}],"id":2815,"name":"ParameterList","src":"977:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":2829,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2816,"name":"ElementaryTypeName","src":"1018:4:15"}],"id":2817,"name":"VariableDeclaration","src":"1018:4:15"}],"id":2818,"name":"ParameterList","src":"1017:6:15"},{"children":[{"attributes":{"functionReturnParameters":2818},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2814,"type":"bytes4","value":"interfaceID"},"id":2819,"name":"Identifier","src":"1041:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2768,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":2820,"name":"Identifier","src":"1056:17:15"}],"id":2821,"name":"BinaryOperation","src":"1041:32:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7464,"type":"contract super NameResolver","value":"super"},"id":2822,"name":"Identifier","src":"1077:5:15"}],"id":2823,"name":"MemberAccess","src":"1077:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2814,"type":"bytes4","value":"interfaceID"},"id":2824,"name":"Identifier","src":"1101:11:15"}],"id":2825,"name":"FunctionCall","src":"1077:36:15"}],"id":2826,"name":"BinaryOperation","src":"1041:72:15"}],"id":2827,"name":"Return","src":"1034:79:15"}],"id":2828,"name":"Block","src":"1024:96:15"}],"id":2829,"name":"FunctionDefinition","src":"951:169:15"}],"id":2830,"name":"ContractDefinition","src":"56:1066:15"}],"id":2831,"name":"SourceUnit","src":"0:1123:15"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[2921]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2832,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2922,"symbolAliases":[null],"unitAlias":""},"id":2833,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2921,5159],"name":"PubkeyResolver","scope":2922},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2834,"name":"UserDefinedTypeName","src":"83:12:16"}],"id":2835,"name":"InheritanceSpecifier","src":"83:12:16"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":2921,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2836,"name":"ElementaryTypeName","src":"102:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":2837,"name":"Literal","src":"148:10:16"}],"id":2838,"name":"VariableDeclaration","src":"102:56:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2839,"name":"ElementaryTypeName","src":"185:7:16"}],"id":2840,"name":"VariableDeclaration","src":"185:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":2846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2841,"name":"ElementaryTypeName","src":"207:7:16"}],"id":2842,"name":"VariableDeclaration","src":"207:9:16"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":2846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2843,"name":"ElementaryTypeName","src":"218:7:16"}],"id":2844,"name":"VariableDeclaration","src":"218:9:16"}],"id":2845,"name":"ParameterList","src":"184:44:16"}],"id":2846,"name":"EventDefinition","src":"165:64:16"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":2921,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":2851,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2847,"name":"ElementaryTypeName","src":"262:7:16"}],"id":2848,"name":"VariableDeclaration","src":"262:9:16"},{"attributes":{"constant":false,"name":"y","scope":2851,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2849,"name":"ElementaryTypeName","src":"281:7:16"}],"id":2850,"name":"VariableDeclaration","src":"281:9:16"}],"id":2851,"name":"StructDefinition","src":"235:62:16"},{"attributes":{"constant":false,"name":"pubkeys","scope":2921,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2852,"name":"ElementaryTypeName","src":"311:7:16"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":2851,"type":"struct PubkeyResolver.PublicKey"},"id":2853,"name":"UserDefinedTypeName","src":"320:9:16"}],"id":2854,"name":"Mapping","src":"303:27:16"}],"id":2855,"name":"VariableDeclaration","src":"303:35:16"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":2921,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2856,"name":"ElementaryTypeName","src":"631:7:16"}],"id":2857,"name":"VariableDeclaration","src":"631:12:16"},{"attributes":{"constant":false,"name":"x","scope":2883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2858,"name":"ElementaryTypeName","src":"645:7:16"}],"id":2859,"name":"VariableDeclaration","src":"645:9:16"},{"attributes":{"constant":false,"name":"y","scope":2883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2860,"name":"ElementaryTypeName","src":"656:7:16"}],"id":2861,"name":"VariableDeclaration","src":"656:9:16"}],"id":2862,"name":"ParameterList","src":"630:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":2866,"name":"ParameterList","src":"693:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2863,"name":"Identifier","src":"676:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2857,"type":"bytes32","value":"node"},"id":2864,"name":"Identifier","src":"687:4:16"}],"id":2865,"name":"ModifierInvocation","src":"676:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2855,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":2867,"name":"Identifier","src":"703:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2857,"type":"bytes32","value":"node"},"id":2868,"name":"Identifier","src":"711:4:16"}],"id":2869,"name":"IndexAccess","src":"703:13:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2851,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":2870,"name":"Identifier","src":"719:9:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2859,"type":"bytes32","value":"x"},"id":2871,"name":"Identifier","src":"729:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2861,"type":"bytes32","value":"y"},"id":2872,"name":"Identifier","src":"732:1:16"}],"id":2873,"name":"FunctionCall","src":"719:15:16"}],"id":2874,"name":"Assignment","src":"703:31:16"}],"id":2875,"name":"ExpressionStatement","src":"703:31:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2846,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":2876,"name":"Identifier","src":"749:13:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2857,"type":"bytes32","value":"node"},"id":2877,"name":"Identifier","src":"763:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2859,"type":"bytes32","value":"x"},"id":2878,"name":"Identifier","src":"769:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2861,"type":"bytes32","value":"y"},"id":2879,"name":"Identifier","src":"772:1:16"}],"id":2880,"name":"FunctionCall","src":"749:25:16"}],"id":2881,"name":"EmitStatement","src":"744:30:16"}],"id":2882,"name":"Block","src":"693:88:16"}],"id":2883,"name":"FunctionDefinition","src":"612:169:16"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":2921,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2903,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2884,"name":"ElementaryTypeName","src":"1039:7:16"}],"id":2885,"name":"VariableDeclaration","src":"1039:12:16"}],"id":2886,"name":"ParameterList","src":"1038:14:16"},{"children":[{"attributes":{"constant":false,"name":"x","scope":2903,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2887,"name":"ElementaryTypeName","src":"1076:7:16"}],"id":2888,"name":"VariableDeclaration","src":"1076:9:16"},{"attributes":{"constant":false,"name":"y","scope":2903,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2889,"name":"ElementaryTypeName","src":"1087:7:16"}],"id":2890,"name":"VariableDeclaration","src":"1087:9:16"}],"id":2891,"name":"ParameterList","src":"1075:22:16"},{"children":[{"attributes":{"functionReturnParameters":2891},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":2848,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2855,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":2892,"name":"Identifier","src":"1116:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"bytes32","value":"node"},"id":2893,"name":"Identifier","src":"1124:4:16"}],"id":2894,"name":"IndexAccess","src":"1116:13:16"}],"id":2895,"name":"MemberAccess","src":"1116:15:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":2850,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2855,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":2896,"name":"Identifier","src":"1133:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"bytes32","value":"node"},"id":2897,"name":"Identifier","src":"1141:4:16"}],"id":2898,"name":"IndexAccess","src":"1133:13:16"}],"id":2899,"name":"MemberAccess","src":"1133:15:16"}],"id":2900,"name":"TupleExpression","src":"1115:34:16"}],"id":2901,"name":"Return","src":"1108:41:16"}],"id":2902,"name":"Block","src":"1098:58:16"}],"id":2903,"name":"FunctionDefinition","src":"1023:133:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2921,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2920,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2904,"name":"ElementaryTypeName","src":"1189:6:16"}],"id":2905,"name":"VariableDeclaration","src":"1189:18:16"}],"id":2906,"name":"ParameterList","src":"1188:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":2920,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2907,"name":"ElementaryTypeName","src":"1229:4:16"}],"id":2908,"name":"VariableDeclaration","src":"1229:4:16"}],"id":2909,"name":"ParameterList","src":"1228:6:16"},{"children":[{"attributes":{"functionReturnParameters":2909},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2905,"type":"bytes4","value":"interfaceID"},"id":2910,"name":"Identifier","src":"1252:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2838,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":2911,"name":"Identifier","src":"1267:19:16"}],"id":2912,"name":"BinaryOperation","src":"1252:34:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7466,"type":"contract super PubkeyResolver","value":"super"},"id":2913,"name":"Identifier","src":"1290:5:16"}],"id":2914,"name":"MemberAccess","src":"1290:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2905,"type":"bytes4","value":"interfaceID"},"id":2915,"name":"Identifier","src":"1314:11:16"}],"id":2916,"name":"FunctionCall","src":"1290:36:16"}],"id":2917,"name":"BinaryOperation","src":"1252:74:16"}],"id":2918,"name":"Return","src":"1245:81:16"}],"id":2919,"name":"Block","src":"1235:98:16"}],"id":2920,"name":"FunctionDefinition","src":"1162:171:16"}],"id":2921,"name":"ContractDefinition","src":"56:1279:16"}],"id":2922,"name":"SourceUnit","src":"0:1336:16"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[3004]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2923,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3005,"symbolAliases":[null],"unitAlias":""},"id":2924,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3004,5159],"name":"TextResolver","scope":3005},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2925,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":2926,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":3004,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2927,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":2928,"name":"Literal","src":"144:10:17"}],"id":2929,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2937,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2930,"name":"ElementaryTypeName","src":"179:7:17"}],"id":2931,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":2937,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2932,"name":"ElementaryTypeName","src":"201:6:17"}],"id":2933,"name":"VariableDeclaration","src":"201:25:17"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":2937,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2934,"name":"ElementaryTypeName","src":"228:6:17"}],"id":2935,"name":"VariableDeclaration","src":"228:10:17"}],"id":2936,"name":"ParameterList","src":"178:61:17"}],"id":2937,"name":"EventDefinition","src":"161:79:17"},{"attributes":{"constant":false,"name":"texts","scope":3004,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2938,"name":"ElementaryTypeName","src":"254:7:17"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":2939,"name":"ElementaryTypeName","src":"271:6:17"},{"attributes":{"name":"string","type":"string"},"id":2940,"name":"ElementaryTypeName","src":"279:6:17"}],"id":2941,"name":"Mapping","src":"263:23:17"}],"id":2942,"name":"Mapping","src":"246:41:17"}],"id":2943,"name":"VariableDeclaration","src":"246:47:17"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":3004,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2970,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2944,"name":"ElementaryTypeName","src":"590:7:17"}],"id":2945,"name":"VariableDeclaration","src":"590:12:17"},{"attributes":{"constant":false,"name":"key","scope":2970,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2946,"name":"ElementaryTypeName","src":"604:6:17"}],"id":2947,"name":"VariableDeclaration","src":"604:19:17"},{"attributes":{"constant":false,"name":"value","scope":2970,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2948,"name":"ElementaryTypeName","src":"625:6:17"}],"id":2949,"name":"VariableDeclaration","src":"625:21:17"}],"id":2950,"name":"ParameterList","src":"589:58:17"},{"attributes":{"parameters":[null]},"children":[],"id":2954,"name":"ParameterList","src":"674:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2951,"name":"Identifier","src":"657:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2945,"type":"bytes32","value":"node"},"id":2952,"name":"Identifier","src":"668:4:17"}],"id":2953,"name":"ModifierInvocation","src":"657:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2943,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":2955,"name":"Identifier","src":"684:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2945,"type":"bytes32","value":"node"},"id":2956,"name":"Identifier","src":"690:4:17"}],"id":2958,"name":"IndexAccess","src":"684:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2947,"type":"string calldata","value":"key"},"id":2957,"name":"Identifier","src":"696:3:17"}],"id":2959,"name":"IndexAccess","src":"684:16:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"string calldata","value":"value"},"id":2960,"name":"Identifier","src":"703:5:17"}],"id":2961,"name":"Assignment","src":"684:24:17"}],"id":2962,"name":"ExpressionStatement","src":"684:24:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2937,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":2963,"name":"Identifier","src":"723:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2945,"type":"bytes32","value":"node"},"id":2964,"name":"Identifier","src":"735:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2947,"type":"string calldata","value":"key"},"id":2965,"name":"Identifier","src":"741:3:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2947,"type":"string calldata","value":"key"},"id":2966,"name":"Identifier","src":"746:3:17"}],"id":2967,"name":"FunctionCall","src":"723:27:17"}],"id":2968,"name":"EmitStatement","src":"718:32:17"}],"id":2969,"name":"Block","src":"674:83:17"}],"id":2970,"name":"FunctionDefinition","src":"573:184:17"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":3004,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2971,"name":"ElementaryTypeName","src":"988:7:17"}],"id":2972,"name":"VariableDeclaration","src":"988:12:17"},{"attributes":{"constant":false,"name":"key","scope":2986,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2973,"name":"ElementaryTypeName","src":"1002:6:17"}],"id":2974,"name":"VariableDeclaration","src":"1002:19:17"}],"id":2975,"name":"ParameterList","src":"987:35:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":2986,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2976,"name":"ElementaryTypeName","src":"1046:6:17"}],"id":2977,"name":"VariableDeclaration","src":"1046:13:17"}],"id":2978,"name":"ParameterList","src":"1045:15:17"},{"children":[{"attributes":{"functionReturnParameters":2978},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2943,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":2979,"name":"Identifier","src":"1078:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2972,"type":"bytes32","value":"node"},"id":2980,"name":"Identifier","src":"1084:4:17"}],"id":2981,"name":"IndexAccess","src":"1078:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"string calldata","value":"key"},"id":2982,"name":"Identifier","src":"1090:3:17"}],"id":2983,"name":"IndexAccess","src":"1078:16:17"}],"id":2984,"name":"Return","src":"1071:23:17"}],"id":2985,"name":"Block","src":"1061:40:17"}],"id":2986,"name":"FunctionDefinition","src":"974:127:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3004,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3003,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2987,"name":"ElementaryTypeName","src":"1134:6:17"}],"id":2988,"name":"VariableDeclaration","src":"1134:18:17"}],"id":2989,"name":"ParameterList","src":"1133:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":3003,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2990,"name":"ElementaryTypeName","src":"1174:4:17"}],"id":2991,"name":"VariableDeclaration","src":"1174:4:17"}],"id":2992,"name":"ParameterList","src":"1173:6:17"},{"children":[{"attributes":{"functionReturnParameters":2992},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2988,"type":"bytes4","value":"interfaceID"},"id":2993,"name":"Identifier","src":"1197:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":2994,"name":"Identifier","src":"1212:17:17"}],"id":2995,"name":"BinaryOperation","src":"1197:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7468,"type":"contract super TextResolver","value":"super"},"id":2996,"name":"Identifier","src":"1233:5:17"}],"id":2997,"name":"MemberAccess","src":"1233:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2988,"type":"bytes4","value":"interfaceID"},"id":2998,"name":"Identifier","src":"1257:11:17"}],"id":2999,"name":"FunctionCall","src":"1233:36:17"}],"id":3000,"name":"BinaryOperation","src":"1197:72:17"}],"id":3001,"name":"Return","src":"1190:79:17"}],"id":3002,"name":"Block","src":"1180:96:17"}],"id":3003,"name":"FunctionDefinition","src":"1107:169:17"}],"id":3004,"name":"ContractDefinition","src":"56:1222:17"}],"id":3005,"name":"SourceUnit","src":"0:1278:17"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[4843]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3139,"name":"PragmaDirective","src":"2574:23:18"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[4843],"name":"strings","scope":4844},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":4843,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":3144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3140,"name":"ElementaryTypeName","src":"2644:4:18"}],"id":3141,"name":"VariableDeclaration","src":"2644:9:18"},{"attributes":{"constant":false,"name":"_ptr","scope":3144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3142,"name":"ElementaryTypeName","src":"2663:4:18"}],"id":3143,"name":"VariableDeclaration","src":"2663:9:18"}],"id":3144,"name":"StructDefinition","src":"2621:58:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":3184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3145,"name":"ElementaryTypeName","src":"2701:4:18"}],"id":3146,"name":"VariableDeclaration","src":"2701:9:18"},{"attributes":{"constant":false,"name":"src","scope":3184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3147,"name":"ElementaryTypeName","src":"2712:4:18"}],"id":3148,"name":"VariableDeclaration","src":"2712:8:18"},{"attributes":{"constant":false,"name":"len","scope":3184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3149,"name":"ElementaryTypeName","src":"2722:4:18"}],"id":3150,"name":"VariableDeclaration","src":"2722:8:18"}],"id":3151,"name":"ParameterList","src":"2700:31:18"},{"attributes":{"parameters":[null]},"children":[],"id":3152,"name":"ParameterList","src":"2745:0:18"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"len"},"id":3153,"name":"Identifier","src":"2811:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3154,"name":"Literal","src":"2818:2:18"}],"id":3155,"name":"BinaryOperation","src":"2811:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"len"},"id":3156,"name":"Identifier","src":"2822:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3157,"name":"Literal","src":"2829:2:18"}],"id":3158,"name":"Assignment","src":"2822:9:18"}],"id":3159,"name":"ExpressionStatement","src":"2822:9:18"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":3148,"isOffset":false,"isSlot":false,"src":"2893:3:18","valueSize":1}},{"dest":{"declaration":3146,"isOffset":false,"isSlot":false,"src":"2881:4:18","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":3160,"name":"InlineAssembly","src":"2847:65:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3146,"type":"uint256","value":"dest"},"id":3161,"name":"Identifier","src":"2925:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3162,"name":"Literal","src":"2933:2:18"}],"id":3163,"name":"Assignment","src":"2925:10:18"}],"id":3164,"name":"ExpressionStatement","src":"2925:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"uint256","value":"src"},"id":3165,"name":"Identifier","src":"2949:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3166,"name":"Literal","src":"2956:2:18"}],"id":3167,"name":"Assignment","src":"2949:9:18"}],"id":3168,"name":"ExpressionStatement","src":"2949:9:18"}],"id":3169,"name":"Block","src":"2833:136:18"}],"id":3170,"name":"ForStatement","src":"2805:164:18"},{"attributes":{"assignments":[3172]},"children":[{"attributes":{"constant":false,"name":"mask","scope":3183,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3171,"name":"ElementaryTypeName","src":"3011:4:18"}],"id":3172,"name":"VariableDeclaration","src":"3011:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":3173,"name":"Literal","src":"3023:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3174,"name":"Literal","src":"3031:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"len"},"id":3175,"name":"Identifier","src":"3036:3:18"}],"id":3176,"name":"BinaryOperation","src":"3031:8:18"}],"id":3177,"name":"TupleExpression","src":"3030:10:18"}],"id":3178,"name":"BinaryOperation","src":"3023:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3179,"name":"Literal","src":"3043:1:18"}],"id":3180,"name":"BinaryOperation","src":"3023:21:18"}],"id":3181,"name":"VariableDeclarationStatement","src":"3011:33:18"},{"attributes":{"externalReferences":[{"src":{"declaration":3148,"isOffset":false,"isSlot":false,"src":"3102:3:18","valueSize":1}},{"mask":{"declaration":3172,"isOffset":false,"isSlot":false,"src":"3112:4:18","valueSize":1}},{"dest":{"declaration":3146,"isOffset":false,"isSlot":false,"src":"3189:4:18","valueSize":1}},{"dest":{"declaration":3146,"isOffset":false,"isSlot":false,"src":"3157:4:18","valueSize":1}},{"mask":{"declaration":3172,"isOffset":false,"isSlot":false,"src":"3164:4:18","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":3182,"name":"InlineAssembly","src":"3054:173:18"}],"id":3183,"name":"Block","src":"2745:488:18"}],"id":3184,"name":"FunctionDefinition","src":"2685:548:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3204,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3185,"name":"ElementaryTypeName","src":"3450:6:18"}],"id":3186,"name":"VariableDeclaration","src":"3450:18:18"}],"id":3187,"name":"ParameterList","src":"3449:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3204,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3188,"name":"UserDefinedTypeName","src":"3493:5:18"}],"id":3189,"name":"VariableDeclaration","src":"3493:12:18"}],"id":3190,"name":"ParameterList","src":"3492:14:18"},{"children":[{"attributes":{"assignments":[3192],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":3203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3191,"name":"ElementaryTypeName","src":"3517:4:18"}],"id":3192,"name":"VariableDeclaration","src":"3517:8:18"}],"id":3193,"name":"VariableDeclarationStatement","src":"3517:8:18"},{"attributes":{"externalReferences":[{"ptr":{"declaration":3192,"isOffset":false,"isSlot":false,"src":"3558:3:18","valueSize":1}},{"self":{"declaration":3186,"isOffset":false,"isSlot":false,"src":"3569:4:18","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":3194,"name":"InlineAssembly","src":"3535:55:18"},{"attributes":{"functionReturnParameters":3190},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":3195,"name":"Identifier","src":"3606:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":3196,"name":"ElementaryTypeNameExpression","src":"3612:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3186,"type":"string memory","value":"self"},"id":3197,"name":"Identifier","src":"3618:4:18"}],"id":3198,"name":"FunctionCall","src":"3612:11:18"}],"id":3199,"name":"MemberAccess","src":"3612:18:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3192,"type":"uint256","value":"ptr"},"id":3200,"name":"Identifier","src":"3632:3:18"}],"id":3201,"name":"FunctionCall","src":"3606:30:18"}],"id":3202,"name":"Return","src":"3599:37:18"}],"id":3203,"name":"Block","src":"3507:136:18"}],"id":3204,"name":"FunctionDefinition","src":"3433:210:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3330,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3205,"name":"ElementaryTypeName","src":"3852:7:18"}],"id":3206,"name":"VariableDeclaration","src":"3852:12:18"}],"id":3207,"name":"ParameterList","src":"3851:14:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3330,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3208,"name":"ElementaryTypeName","src":"3889:4:18"}],"id":3209,"name":"VariableDeclaration","src":"3889:4:18"}],"id":3210,"name":"ParameterList","src":"3888:6:18"},{"children":[{"attributes":{"assignments":[3212],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":3329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3211,"name":"ElementaryTypeName","src":"3905:4:18"}],"id":3212,"name":"VariableDeclaration","src":"3905:8:18"}],"id":3213,"name":"VariableDeclarationStatement","src":"3905:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3214,"name":"Identifier","src":"3927:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3215,"name":"Literal","src":"3935:1:18"}],"id":3216,"name":"BinaryOperation","src":"3927:9:18"},{"attributes":{"functionReturnParameters":3210},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3217,"name":"Literal","src":"3957:1:18"}],"id":3218,"name":"Return","src":"3950:8:18"}],"id":3219,"name":"IfStatement","src":"3923:35:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3220,"name":"ElementaryTypeNameExpression","src":"3972:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3221,"name":"Identifier","src":"3977:4:18"}],"id":3222,"name":"FunctionCall","src":"3972:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":3223,"name":"Literal","src":"3985:34:18"}],"id":3224,"name":"BinaryOperation","src":"3972:47:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3225,"name":"Literal","src":"4023:1:18"}],"id":3226,"name":"BinaryOperation","src":"3972:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3227,"name":"Identifier","src":"4040:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":3228,"name":"Literal","src":"4047:2:18"}],"id":3229,"name":"Assignment","src":"4040:9:18"}],"id":3230,"name":"ExpressionStatement","src":"4040:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3231,"name":"Identifier","src":"4063:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3232,"name":"ElementaryTypeNameExpression","src":"4070:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3233,"name":"ElementaryTypeNameExpression","src":"4078:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3234,"name":"Identifier","src":"4083:4:18"}],"id":3235,"name":"FunctionCall","src":"4078:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":3236,"name":"Literal","src":"4091:35:18"}],"id":3237,"name":"BinaryOperation","src":"4078:48:18"}],"id":3238,"name":"FunctionCall","src":"4070:57:18"}],"id":3239,"name":"Assignment","src":"4063:64:18"}],"id":3240,"name":"ExpressionStatement","src":"4063:64:18"}],"id":3241,"name":"Block","src":"4026:112:18"}],"id":3242,"name":"IfStatement","src":"3968:170:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3243,"name":"ElementaryTypeNameExpression","src":"4151:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3244,"name":"Identifier","src":"4156:4:18"}],"id":3245,"name":"FunctionCall","src":"4151:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":3246,"name":"Literal","src":"4164:18:18"}],"id":3247,"name":"BinaryOperation","src":"4151:31:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3248,"name":"Literal","src":"4186:1:18"}],"id":3249,"name":"BinaryOperation","src":"4151:36:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3250,"name":"Identifier","src":"4203:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3251,"name":"Literal","src":"4210:1:18"}],"id":3252,"name":"Assignment","src":"4203:8:18"}],"id":3253,"name":"ExpressionStatement","src":"4203:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3254,"name":"Identifier","src":"4225:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3255,"name":"ElementaryTypeNameExpression","src":"4232:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3256,"name":"ElementaryTypeNameExpression","src":"4240:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3257,"name":"Identifier","src":"4245:4:18"}],"id":3258,"name":"FunctionCall","src":"4240:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":3259,"name":"Literal","src":"4253:19:18"}],"id":3260,"name":"BinaryOperation","src":"4240:32:18"}],"id":3261,"name":"FunctionCall","src":"4232:41:18"}],"id":3262,"name":"Assignment","src":"4225:48:18"}],"id":3263,"name":"ExpressionStatement","src":"4225:48:18"}],"id":3264,"name":"Block","src":"4189:95:18"}],"id":3265,"name":"IfStatement","src":"4147:137:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3266,"name":"ElementaryTypeNameExpression","src":"4297:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3267,"name":"Identifier","src":"4302:4:18"}],"id":3268,"name":"FunctionCall","src":"4297:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":3269,"name":"Literal","src":"4310:10:18"}],"id":3270,"name":"BinaryOperation","src":"4297:23:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3271,"name":"Literal","src":"4324:1:18"}],"id":3272,"name":"BinaryOperation","src":"4297:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3273,"name":"Identifier","src":"4341:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3274,"name":"Literal","src":"4348:1:18"}],"id":3275,"name":"Assignment","src":"4341:8:18"}],"id":3276,"name":"ExpressionStatement","src":"4341:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3277,"name":"Identifier","src":"4363:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3278,"name":"ElementaryTypeNameExpression","src":"4370:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3279,"name":"ElementaryTypeNameExpression","src":"4378:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3280,"name":"Identifier","src":"4383:4:18"}],"id":3281,"name":"FunctionCall","src":"4378:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":3282,"name":"Literal","src":"4391:11:18"}],"id":3283,"name":"BinaryOperation","src":"4378:24:18"}],"id":3284,"name":"FunctionCall","src":"4370:33:18"}],"id":3285,"name":"Assignment","src":"4363:40:18"}],"id":3286,"name":"ExpressionStatement","src":"4363:40:18"}],"id":3287,"name":"Block","src":"4327:87:18"}],"id":3288,"name":"IfStatement","src":"4293:121:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3289,"name":"ElementaryTypeNameExpression","src":"4427:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3290,"name":"Identifier","src":"4432:4:18"}],"id":3291,"name":"FunctionCall","src":"4427:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":3292,"name":"Literal","src":"4440:6:18"}],"id":3293,"name":"BinaryOperation","src":"4427:19:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3294,"name":"Literal","src":"4450:1:18"}],"id":3295,"name":"BinaryOperation","src":"4427:24:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3296,"name":"Identifier","src":"4467:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3297,"name":"Literal","src":"4474:1:18"}],"id":3298,"name":"Assignment","src":"4467:8:18"}],"id":3299,"name":"ExpressionStatement","src":"4467:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3300,"name":"Identifier","src":"4489:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3301,"name":"ElementaryTypeNameExpression","src":"4496:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3302,"name":"ElementaryTypeNameExpression","src":"4504:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3303,"name":"Identifier","src":"4509:4:18"}],"id":3304,"name":"FunctionCall","src":"4504:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":3305,"name":"Literal","src":"4517:7:18"}],"id":3306,"name":"BinaryOperation","src":"4504:20:18"}],"id":3307,"name":"FunctionCall","src":"4496:29:18"}],"id":3308,"name":"Assignment","src":"4489:36:18"}],"id":3309,"name":"ExpressionStatement","src":"4489:36:18"}],"id":3310,"name":"Block","src":"4453:83:18"}],"id":3311,"name":"IfStatement","src":"4423:113:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3312,"name":"ElementaryTypeNameExpression","src":"4549:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3313,"name":"Identifier","src":"4554:4:18"}],"id":3314,"name":"FunctionCall","src":"4549:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":3315,"name":"Literal","src":"4562:4:18"}],"id":3316,"name":"BinaryOperation","src":"4549:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3317,"name":"Literal","src":"4570:1:18"}],"id":3318,"name":"BinaryOperation","src":"4549:22:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3319,"name":"Identifier","src":"4587:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3320,"name":"Literal","src":"4594:1:18"}],"id":3321,"name":"Assignment","src":"4587:8:18"}],"id":3322,"name":"ExpressionStatement","src":"4587:8:18"}],"id":3323,"name":"Block","src":"4573:33:18"}],"id":3324,"name":"IfStatement","src":"4545:61:18"},{"attributes":{"functionReturnParameters":3210},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3325,"name":"Literal","src":"4622:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3326,"name":"Identifier","src":"4627:3:18"}],"id":3327,"name":"BinaryOperation","src":"4622:8:18"}],"id":3328,"name":"Return","src":"4615:15:18"}],"id":3329,"name":"Block","src":"3895:742:18"}],"id":3330,"name":"FunctionDefinition","src":"3839:798:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3347,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3331,"name":"ElementaryTypeName","src":"4963:7:18"}],"id":3332,"name":"VariableDeclaration","src":"4963:12:18"}],"id":3333,"name":"ParameterList","src":"4962:14:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3347,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3334,"name":"UserDefinedTypeName","src":"5000:5:18"}],"id":3335,"name":"VariableDeclaration","src":"5000:16:18"}],"id":3336,"name":"ParameterList","src":"4999:18:18"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":3332,"isOffset":false,"isSlot":false,"src":"5222:4:18","valueSize":1}},{"ret":{"declaration":3335,"isOffset":false,"isSlot":false,"src":"5251:3:18","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":3337,"name":"InlineAssembly","src":"5111:166:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"struct strings.slice memory","value":"ret"},"id":3338,"name":"Identifier","src":"5286:3:18"}],"id":3340,"name":"MemberAccess","src":"5286:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[3330,3480],"referencedDeclaration":3330,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":3341,"name":"Identifier","src":"5297:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3332,"type":"bytes32","value":"self"},"id":3342,"name":"Identifier","src":"5301:4:18"}],"id":3343,"name":"FunctionCall","src":"5297:9:18"}],"id":3344,"name":"Assignment","src":"5286:20:18"}],"id":3345,"name":"ExpressionStatement","src":"5286:20:18"}],"id":3346,"name":"Block","src":"5018:295:18"}],"id":3347,"name":"FunctionDefinition","src":"4943:370:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3362,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3348,"name":"UserDefinedTypeName","src":"5528:5:18"}],"id":3349,"name":"VariableDeclaration","src":"5528:17:18"}],"id":3350,"name":"ParameterList","src":"5527:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3362,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3351,"name":"UserDefinedTypeName","src":"5570:5:18"}],"id":3352,"name":"VariableDeclaration","src":"5570:12:18"}],"id":3353,"name":"ParameterList","src":"5569:14:18"},{"children":[{"attributes":{"functionReturnParameters":3353},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":3354,"name":"Identifier","src":"5601:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3349,"type":"struct strings.slice memory","value":"self"},"id":3355,"name":"Identifier","src":"5607:4:18"}],"id":3356,"name":"MemberAccess","src":"5607:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3349,"type":"struct strings.slice memory","value":"self"},"id":3357,"name":"Identifier","src":"5618:4:18"}],"id":3358,"name":"MemberAccess","src":"5618:9:18"}],"id":3359,"name":"FunctionCall","src":"5601:27:18"}],"id":3360,"name":"Return","src":"5594:34:18"}],"id":3361,"name":"Block","src":"5584:51:18"}],"id":3362,"name":"FunctionDefinition","src":"5514:121:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3392,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3363,"name":"UserDefinedTypeName","src":"5825:5:18"}],"id":3364,"name":"VariableDeclaration","src":"5825:17:18"}],"id":3365,"name":"ParameterList","src":"5824:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3392,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3366,"name":"ElementaryTypeName","src":"5867:6:18"}],"id":3367,"name":"VariableDeclaration","src":"5867:13:18"}],"id":3368,"name":"ParameterList","src":"5866:15:18"},{"children":[{"attributes":{"assignments":[3370]},"children":[{"attributes":{"constant":false,"name":"ret","scope":3391,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3369,"name":"ElementaryTypeName","src":"5892:6:18"}],"id":3370,"name":"VariableDeclaration","src":"5892:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":3371,"name":"ElementaryTypeName","src":"5916:6:18"}],"id":3372,"name":"NewExpression","src":"5912:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"struct strings.slice memory","value":"self"},"id":3373,"name":"Identifier","src":"5923:4:18"}],"id":3374,"name":"MemberAccess","src":"5923:9:18"}],"id":3375,"name":"FunctionCall","src":"5912:21:18"}],"id":3376,"name":"VariableDeclarationStatement","src":"5892:41:18"},{"attributes":{"assignments":[3378],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":3391,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3377,"name":"ElementaryTypeName","src":"5943:4:18"}],"id":3378,"name":"VariableDeclaration","src":"5943:11:18"}],"id":3379,"name":"VariableDeclarationStatement","src":"5943:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":3378,"isOffset":false,"isSlot":false,"src":"5975:6:18","valueSize":1}},{"ret":{"declaration":3370,"isOffset":false,"isSlot":false,"src":"5989:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":3380,"name":"InlineAssembly","src":"5964:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":3381,"name":"Identifier","src":"6009:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"uint256","value":"retptr"},"id":3382,"name":"Identifier","src":"6016:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"struct strings.slice memory","value":"self"},"id":3383,"name":"Identifier","src":"6024:4:18"}],"id":3384,"name":"MemberAccess","src":"6024:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"struct strings.slice memory","value":"self"},"id":3385,"name":"Identifier","src":"6035:4:18"}],"id":3386,"name":"MemberAccess","src":"6035:9:18"}],"id":3387,"name":"FunctionCall","src":"6009:36:18"}],"id":3388,"name":"ExpressionStatement","src":"6009:36:18"},{"attributes":{"functionReturnParameters":3368},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3370,"type":"string memory","value":"ret"},"id":3389,"name":"Identifier","src":"6062:3:18"}],"id":3390,"name":"Return","src":"6055:10:18"}],"id":3391,"name":"Block","src":"5882:190:18"}],"id":3392,"name":"FunctionDefinition","src":"5807:265:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3393,"name":"UserDefinedTypeName","src":"6476:5:18"}],"id":3394,"name":"VariableDeclaration","src":"6476:17:18"}],"id":3395,"name":"ParameterList","src":"6475:19:18"},{"children":[{"attributes":{"constant":false,"name":"l","scope":3480,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3396,"name":"ElementaryTypeName","src":"6518:4:18"}],"id":3397,"name":"VariableDeclaration","src":"6518:6:18"}],"id":3398,"name":"ParameterList","src":"6517:8:18"},{"children":[{"attributes":{"assignments":[3400]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":3479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3399,"name":"ElementaryTypeName","src":"6611:4:18"}],"id":3400,"name":"VariableDeclaration","src":"6611:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3394,"type":"struct strings.slice memory","value":"self"},"id":3401,"name":"Identifier","src":"6622:4:18"}],"id":3402,"name":"MemberAccess","src":"6622:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":3403,"name":"Literal","src":"6634:2:18"}],"id":3404,"name":"BinaryOperation","src":"6622:14:18"}],"id":3405,"name":"VariableDeclarationStatement","src":"6611:25:18"},{"attributes":{"assignments":[3407]},"children":[{"attributes":{"constant":false,"name":"end","scope":3479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3406,"name":"ElementaryTypeName","src":"6646:4:18"}],"id":3407,"name":"VariableDeclaration","src":"6646:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3408,"name":"Identifier","src":"6657:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3394,"type":"struct strings.slice memory","value":"self"},"id":3409,"name":"Identifier","src":"6663:4:18"}],"id":3410,"name":"MemberAccess","src":"6663:9:18"}],"id":3411,"name":"BinaryOperation","src":"6657:15:18"}],"id":3412,"name":"VariableDeclarationStatement","src":"6646:26:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3397,"type":"uint256","value":"l"},"id":3413,"name":"Identifier","src":"6687:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3414,"name":"Literal","src":"6691:1:18"}],"id":3415,"name":"Assignment","src":"6687:5:18"}],"id":3416,"name":"ExpressionStatement","src":"6687:5:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3417,"name":"Identifier","src":"6694:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3407,"type":"uint256","value":"end"},"id":3418,"name":"Identifier","src":"6700:3:18"}],"id":3419,"name":"BinaryOperation","src":"6694:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3397,"type":"uint256","value":"l"},"id":3420,"name":"Identifier","src":"6705:1:18"}],"id":3421,"name":"UnaryOperation","src":"6705:3:18"}],"id":3422,"name":"ExpressionStatement","src":"6705:3:18"},{"children":[{"attributes":{"assignments":[3424],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3477,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3423,"name":"ElementaryTypeName","src":"6724:5:18"}],"id":3424,"name":"VariableDeclaration","src":"6724:7:18"}],"id":3425,"name":"VariableDeclarationStatement","src":"6724:7:18"},{"attributes":{"externalReferences":[{"b":{"declaration":3424,"isOffset":false,"isSlot":false,"src":"6756:1:18","valueSize":1}},{"ptr":{"declaration":3400,"isOffset":false,"isSlot":false,"src":"6771:3:18","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":3426,"name":"InlineAssembly","src":"6745:39:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3427,"name":"Identifier","src":"6801:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3428,"name":"Literal","src":"6805:4:18"}],"id":3429,"name":"BinaryOperation","src":"6801:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3430,"name":"Identifier","src":"6829:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3431,"name":"Literal","src":"6836:1:18"}],"id":3432,"name":"Assignment","src":"6829:8:18"}],"id":3433,"name":"ExpressionStatement","src":"6829:8:18"}],"id":3434,"name":"Block","src":"6811:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3435,"name":"Identifier","src":"6862:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3436,"name":"Literal","src":"6866:4:18"}],"id":3437,"name":"BinaryOperation","src":"6862:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3438,"name":"Identifier","src":"6890:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3439,"name":"Literal","src":"6897:1:18"}],"id":3440,"name":"Assignment","src":"6890:8:18"}],"id":3441,"name":"ExpressionStatement","src":"6890:8:18"}],"id":3442,"name":"Block","src":"6872:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3443,"name":"Identifier","src":"6923:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3444,"name":"Literal","src":"6927:4:18"}],"id":3445,"name":"BinaryOperation","src":"6923:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3446,"name":"Identifier","src":"6951:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3447,"name":"Literal","src":"6958:1:18"}],"id":3448,"name":"Assignment","src":"6951:8:18"}],"id":3449,"name":"ExpressionStatement","src":"6951:8:18"}],"id":3450,"name":"Block","src":"6933:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3451,"name":"Identifier","src":"6984:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":3452,"name":"Literal","src":"6988:4:18"}],"id":3453,"name":"BinaryOperation","src":"6984:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3454,"name":"Identifier","src":"7012:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3455,"name":"Literal","src":"7019:1:18"}],"id":3456,"name":"Assignment","src":"7012:8:18"}],"id":3457,"name":"ExpressionStatement","src":"7012:8:18"}],"id":3458,"name":"Block","src":"6994:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3459,"name":"Identifier","src":"7045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":3460,"name":"Literal","src":"7049:4:18"}],"id":3461,"name":"BinaryOperation","src":"7045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3462,"name":"Identifier","src":"7073:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":3463,"name":"Literal","src":"7080:1:18"}],"id":3464,"name":"Assignment","src":"7073:8:18"}],"id":3465,"name":"ExpressionStatement","src":"7073:8:18"}],"id":3466,"name":"Block","src":"7055:41:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3467,"name":"Identifier","src":"7120:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":3468,"name":"Literal","src":"7127:1:18"}],"id":3469,"name":"Assignment","src":"7120:8:18"}],"id":3470,"name":"ExpressionStatement","src":"7120:8:18"}],"id":3471,"name":"Block","src":"7102:41:18"}],"id":3472,"name":"IfStatement","src":"7041:102:18"}],"id":3473,"name":"IfStatement","src":"6980:163:18"}],"id":3474,"name":"IfStatement","src":"6919:224:18"}],"id":3475,"name":"IfStatement","src":"6858:285:18"}],"id":3476,"name":"IfStatement","src":"6797:346:18"}],"id":3477,"name":"Block","src":"6710:443:18"}],"id":3478,"name":"ForStatement","src":"6682:471:18"}],"id":3479,"name":"Block","src":"6526:633:18"}],"id":3480,"name":"FunctionDefinition","src":"6463:696:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3493,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3481,"name":"UserDefinedTypeName","src":"7367:5:18"}],"id":3482,"name":"VariableDeclaration","src":"7367:17:18"}],"id":3483,"name":"ParameterList","src":"7366:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3493,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3484,"name":"ElementaryTypeName","src":"7409:4:18"}],"id":3485,"name":"VariableDeclaration","src":"7409:4:18"}],"id":3486,"name":"ParameterList","src":"7408:6:18"},{"children":[{"attributes":{"functionReturnParameters":3486},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3482,"type":"struct strings.slice memory","value":"self"},"id":3487,"name":"Identifier","src":"7432:4:18"}],"id":3488,"name":"MemberAccess","src":"7432:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3489,"name":"Literal","src":"7445:1:18"}],"id":3490,"name":"BinaryOperation","src":"7432:14:18"}],"id":3491,"name":"Return","src":"7425:21:18"}],"id":3492,"name":"Block","src":"7415:38:18"}],"id":3493,"name":"FunctionDefinition","src":"7352:101:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3622,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3494,"name":"UserDefinedTypeName","src":"7898:5:18"}],"id":3495,"name":"VariableDeclaration","src":"7898:17:18"},{"attributes":{"constant":false,"name":"other","scope":3622,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3496,"name":"UserDefinedTypeName","src":"7917:5:18"}],"id":3497,"name":"VariableDeclaration","src":"7917:18:18"}],"id":3498,"name":"ParameterList","src":"7897:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3622,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":3499,"name":"ElementaryTypeName","src":"7960:3:18"}],"id":3500,"name":"VariableDeclaration","src":"7960:3:18"}],"id":3501,"name":"ParameterList","src":"7959:5:18"},{"children":[{"attributes":{"assignments":[3503]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":3621,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3502,"name":"ElementaryTypeName","src":"7975:4:18"}],"id":3503,"name":"VariableDeclaration","src":"7975:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3495,"type":"struct strings.slice memory","value":"self"},"id":3504,"name":"Identifier","src":"7991:4:18"}],"id":3505,"name":"MemberAccess","src":"7991:9:18"}],"id":3506,"name":"VariableDeclarationStatement","src":"7975:25:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3497,"type":"struct strings.slice memory","value":"other"},"id":3507,"name":"Identifier","src":"8014:5:18"}],"id":3508,"name":"MemberAccess","src":"8014:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3495,"type":"struct strings.slice memory","value":"self"},"id":3509,"name":"Identifier","src":"8027:4:18"}],"id":3510,"name":"MemberAccess","src":"8027:9:18"}],"id":3511,"name":"BinaryOperation","src":"8014:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"uint256","value":"shortest"},"id":3512,"name":"Identifier","src":"8050:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3497,"type":"struct strings.slice memory","value":"other"},"id":3513,"name":"Identifier","src":"8061:5:18"}],"id":3514,"name":"MemberAccess","src":"8061:10:18"}],"id":3515,"name":"Assignment","src":"8050:21:18"}],"id":3516,"name":"ExpressionStatement","src":"8050:21:18"}],"id":3517,"name":"IfStatement","src":"8010:61:18"},{"attributes":{"assignments":[3519]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":3621,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3518,"name":"ElementaryTypeName","src":"8082:4:18"}],"id":3519,"name":"VariableDeclaration","src":"8082:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3495,"type":"struct strings.slice memory","value":"self"},"id":3520,"name":"Identifier","src":"8097:4:18"}],"id":3521,"name":"MemberAccess","src":"8097:9:18"}],"id":3522,"name":"VariableDeclarationStatement","src":"8082:24:18"},{"attributes":{"assignments":[3524]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":3621,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3523,"name":"ElementaryTypeName","src":"8116:4:18"}],"id":3524,"name":"VariableDeclaration","src":"8116:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3497,"type":"struct strings.slice memory","value":"other"},"id":3525,"name":"Identifier","src":"8132:5:18"}],"id":3526,"name":"MemberAccess","src":"8132:10:18"}],"id":3527,"name":"VariableDeclarationStatement","src":"8116:26:18"},{"children":[{"attributes":{"assignments":[3529]},"children":[{"attributes":{"constant":false,"name":"idx","scope":3610,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3528,"name":"ElementaryTypeName","src":"8157:4:18"}],"id":3529,"name":"VariableDeclaration","src":"8157:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3530,"name":"Literal","src":"8168:1:18"}],"id":3531,"name":"VariableDeclarationStatement","src":"8157:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"uint256","value":"idx"},"id":3532,"name":"Identifier","src":"8171:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"uint256","value":"shortest"},"id":3533,"name":"Identifier","src":"8177:8:18"}],"id":3534,"name":"BinaryOperation","src":"8171:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"uint256","value":"idx"},"id":3535,"name":"Identifier","src":"8187:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3536,"name":"Literal","src":"8194:2:18"}],"id":3537,"name":"Assignment","src":"8187:9:18"}],"id":3538,"name":"ExpressionStatement","src":"8187:9:18"},{"children":[{"attributes":{"assignments":[3540],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":3609,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3539,"name":"ElementaryTypeName","src":"8212:4:18"}],"id":3540,"name":"VariableDeclaration","src":"8212:6:18"}],"id":3541,"name":"VariableDeclarationStatement","src":"8212:6:18"},{"attributes":{"assignments":[3543],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3609,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3542,"name":"ElementaryTypeName","src":"8232:4:18"}],"id":3543,"name":"VariableDeclaration","src":"8232:6:18"}],"id":3544,"name":"VariableDeclarationStatement","src":"8232:6:18"},{"attributes":{"externalReferences":[{"a":{"declaration":3540,"isOffset":false,"isSlot":false,"src":"8279:1:18","valueSize":1}},{"selfptr":{"declaration":3519,"isOffset":false,"isSlot":false,"src":"8290:7:18","valueSize":1}},{"b":{"declaration":3543,"isOffset":false,"isSlot":false,"src":"8315:1:18","valueSize":1}},{"otherptr":{"declaration":3524,"isOffset":false,"isSlot":false,"src":"8326:8:18","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":3545,"name":"InlineAssembly","src":"8252:97:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3540,"type":"uint256","value":"a"},"id":3546,"name":"Identifier","src":"8366:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3543,"type":"uint256","value":"b"},"id":3547,"name":"Identifier","src":"8371:1:18"}],"id":3548,"name":"BinaryOperation","src":"8366:6:18"},{"children":[{"attributes":{"assignments":[3550]},"children":[{"attributes":{"constant":false,"name":"mask","scope":3599,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3549,"name":"ElementaryTypeName","src":"8453:7:18"}],"id":3550,"name":"VariableDeclaration","src":"8453:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":3551,"name":"ElementaryTypeNameExpression","src":"8468:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3552,"name":"Literal","src":"8477:1:18"}],"id":3553,"name":"UnaryOperation","src":"8476:2:18"}],"id":3554,"name":"FunctionCall","src":"8468:11:18"}],"id":3555,"name":"VariableDeclarationStatement","src":"8453:26:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"uint256","value":"shortest"},"id":3556,"name":"Identifier","src":"8514:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3557,"name":"Literal","src":"8525:2:18"}],"id":3558,"name":"BinaryOperation","src":"8514:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"uint256","value":"mask"},"id":3559,"name":"Identifier","src":"8551:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3560,"name":"Literal","src":"8560:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3561,"name":"Literal","src":"8566:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3562,"name":"Literal","src":"8571:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"uint256","value":"shortest"},"id":3563,"name":"Identifier","src":"8576:8:18"}],"id":3564,"name":"BinaryOperation","src":"8571:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"uint256","value":"idx"},"id":3565,"name":"Identifier","src":"8587:3:18"}],"id":3566,"name":"BinaryOperation","src":"8571:19:18"}],"id":3567,"name":"TupleExpression","src":"8570:21:18"}],"id":3568,"name":"BinaryOperation","src":"8566:25:18"}],"id":3569,"name":"TupleExpression","src":"8565:27:18"}],"id":3570,"name":"BinaryOperation","src":"8560:32:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3571,"name":"Literal","src":"8595:1:18"}],"id":3572,"name":"BinaryOperation","src":"8560:36:18"}],"id":3573,"name":"TupleExpression","src":"8559:38:18"}],"id":3574,"name":"UnaryOperation","src":"8558:39:18"}],"id":3575,"name":"Assignment","src":"8551:46:18"}],"id":3576,"name":"ExpressionStatement","src":"8551:46:18"}],"id":3577,"name":"Block","src":"8529:87:18"}],"id":3578,"name":"IfStatement","src":"8510:106:18"},{"attributes":{"assignments":[3580]},"children":[{"attributes":{"constant":false,"name":"diff","scope":3599,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3579,"name":"ElementaryTypeName","src":"8633:7:18"}],"id":3580,"name":"VariableDeclaration","src":"8633:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3540,"type":"uint256","value":"a"},"id":3581,"name":"Identifier","src":"8649:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"uint256","value":"mask"},"id":3582,"name":"Identifier","src":"8653:4:18"}],"id":3583,"name":"BinaryOperation","src":"8649:8:18"}],"id":3584,"name":"TupleExpression","src":"8648:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3543,"type":"uint256","value":"b"},"id":3585,"name":"Identifier","src":"8662:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"uint256","value":"mask"},"id":3586,"name":"Identifier","src":"8666:4:18"}],"id":3587,"name":"BinaryOperation","src":"8662:8:18"}],"id":3588,"name":"TupleExpression","src":"8661:10:18"}],"id":3589,"name":"BinaryOperation","src":"8648:23:18"}],"id":3590,"name":"VariableDeclarationStatement","src":"8633:38:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3580,"type":"uint256","value":"diff"},"id":3591,"name":"Identifier","src":"8693:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3592,"name":"Literal","src":"8701:1:18"}],"id":3593,"name":"BinaryOperation","src":"8693:9:18"},{"attributes":{"functionReturnParameters":3501},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3594,"name":"ElementaryTypeNameExpression","src":"8731:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3580,"type":"uint256","value":"diff"},"id":3595,"name":"Identifier","src":"8735:4:18"}],"id":3596,"name":"FunctionCall","src":"8731:9:18"}],"id":3597,"name":"Return","src":"8724:16:18"}],"id":3598,"name":"IfStatement","src":"8689:51:18"}],"id":3599,"name":"Block","src":"8374:381:18"}],"id":3600,"name":"IfStatement","src":"8362:393:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3519,"type":"uint256","value":"selfptr"},"id":3601,"name":"Identifier","src":"8768:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3602,"name":"Literal","src":"8779:2:18"}],"id":3603,"name":"Assignment","src":"8768:13:18"}],"id":3604,"name":"ExpressionStatement","src":"8768:13:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3524,"type":"uint256","value":"otherptr"},"id":3605,"name":"Identifier","src":"8795:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3606,"name":"Literal","src":"8807:2:18"}],"id":3607,"name":"Assignment","src":"8795:14:18"}],"id":3608,"name":"ExpressionStatement","src":"8795:14:18"}],"id":3609,"name":"Block","src":"8198:622:18"}],"id":3610,"name":"ForStatement","src":"8152:668:18"},{"attributes":{"functionReturnParameters":3501},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3611,"name":"ElementaryTypeNameExpression","src":"8836:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3495,"type":"struct strings.slice memory","value":"self"},"id":3612,"name":"Identifier","src":"8840:4:18"}],"id":3613,"name":"MemberAccess","src":"8840:9:18"}],"id":3614,"name":"FunctionCall","src":"8836:14:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3615,"name":"ElementaryTypeNameExpression","src":"8853:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3497,"type":"struct strings.slice memory","value":"other"},"id":3616,"name":"Identifier","src":"8857:5:18"}],"id":3617,"name":"MemberAccess","src":"8857:10:18"}],"id":3618,"name":"FunctionCall","src":"8853:15:18"}],"id":3619,"name":"BinaryOperation","src":"8836:32:18"}],"id":3620,"name":"Return","src":"8829:39:18"}],"id":3621,"name":"Block","src":"7965:910:18"}],"id":3622,"name":"FunctionDefinition","src":"7881:994:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3623,"name":"UserDefinedTypeName","src":"9135:5:18"}],"id":3624,"name":"VariableDeclaration","src":"9135:17:18"},{"attributes":{"constant":false,"name":"other","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3625,"name":"UserDefinedTypeName","src":"9154:5:18"}],"id":3626,"name":"VariableDeclaration","src":"9154:18:18"}],"id":3627,"name":"ParameterList","src":"9134:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3639,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3628,"name":"ElementaryTypeName","src":"9197:4:18"}],"id":3629,"name":"VariableDeclaration","src":"9197:4:18"}],"id":3630,"name":"ParameterList","src":"9196:6:18"},{"children":[{"attributes":{"functionReturnParameters":3630},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3622,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":3631,"name":"Identifier","src":"9220:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3624,"type":"struct strings.slice memory","value":"self"},"id":3632,"name":"Identifier","src":"9228:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3626,"type":"struct strings.slice memory","value":"other"},"id":3633,"name":"Identifier","src":"9234:5:18"}],"id":3634,"name":"FunctionCall","src":"9220:20:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3635,"name":"Literal","src":"9244:1:18"}],"id":3636,"name":"BinaryOperation","src":"9220:25:18"}],"id":3637,"name":"Return","src":"9213:32:18"}],"id":3638,"name":"Block","src":"9203:49:18"}],"id":3639,"name":"FunctionDefinition","src":"9119:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3757,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3640,"name":"UserDefinedTypeName","src":"9563:5:18"}],"id":3641,"name":"VariableDeclaration","src":"9563:17:18"},{"attributes":{"constant":false,"name":"rune","scope":3757,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3642,"name":"UserDefinedTypeName","src":"9582:5:18"}],"id":3643,"name":"VariableDeclaration","src":"9582:17:18"}],"id":3644,"name":"ParameterList","src":"9562:38:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3757,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3645,"name":"UserDefinedTypeName","src":"9624:5:18"}],"id":3646,"name":"VariableDeclaration","src":"9624:12:18"}],"id":3647,"name":"ParameterList","src":"9623:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3648,"name":"Identifier","src":"9648:4:18"}],"id":3650,"name":"MemberAccess","src":"9648:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3651,"name":"Identifier","src":"9660:4:18"}],"id":3652,"name":"MemberAccess","src":"9660:9:18"}],"id":3653,"name":"Assignment","src":"9648:21:18"}],"id":3654,"name":"ExpressionStatement","src":"9648:21:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3655,"name":"Identifier","src":"9684:4:18"}],"id":3656,"name":"MemberAccess","src":"9684:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3657,"name":"Literal","src":"9697:1:18"}],"id":3658,"name":"BinaryOperation","src":"9684:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3659,"name":"Identifier","src":"9714:4:18"}],"id":3661,"name":"MemberAccess","src":"9714:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3662,"name":"Literal","src":"9726:1:18"}],"id":3663,"name":"Assignment","src":"9714:13:18"}],"id":3664,"name":"ExpressionStatement","src":"9714:13:18"},{"attributes":{"functionReturnParameters":3647},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3665,"name":"Identifier","src":"9748:4:18"}],"id":3666,"name":"Return","src":"9741:11:18"}],"id":3667,"name":"Block","src":"9700:63:18"}],"id":3668,"name":"IfStatement","src":"9680:83:18"},{"attributes":{"assignments":[3670],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":3756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3669,"name":"ElementaryTypeName","src":"9773:4:18"}],"id":3670,"name":"VariableDeclaration","src":"9773:6:18"}],"id":3671,"name":"VariableDeclarationStatement","src":"9773:6:18"},{"attributes":{"assignments":[3673],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3672,"name":"ElementaryTypeName","src":"9789:4:18"}],"id":3673,"name":"VariableDeclaration","src":"9789:6:18"}],"id":3674,"name":"VariableDeclarationStatement","src":"9789:6:18"},{"attributes":{"externalReferences":[{"b":{"declaration":3673,"isOffset":false,"isSlot":false,"src":"9878:1:18","valueSize":1}},{"self":{"declaration":3641,"isOffset":false,"isSlot":false,"src":"9907:4:18","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":3675,"name":"InlineAssembly","src":"9867:65:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"b"},"id":3676,"name":"Identifier","src":"9945:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3677,"name":"Literal","src":"9949:4:18"}],"id":3678,"name":"BinaryOperation","src":"9945:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3679,"name":"Identifier","src":"9969:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3680,"name":"Literal","src":"9973:1:18"}],"id":3681,"name":"Assignment","src":"9969:5:18"}],"id":3682,"name":"ExpressionStatement","src":"9969:5:18"}],"id":3683,"name":"Block","src":"9955:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"b"},"id":3684,"name":"Identifier","src":"9995:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3685,"name":"Literal","src":"9999:4:18"}],"id":3686,"name":"BinaryOperation","src":"9995:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3687,"name":"Identifier","src":"10019:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3688,"name":"Literal","src":"10023:1:18"}],"id":3689,"name":"Assignment","src":"10019:5:18"}],"id":3690,"name":"ExpressionStatement","src":"10019:5:18"}],"id":3691,"name":"Block","src":"10005:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"b"},"id":3692,"name":"Identifier","src":"10045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3693,"name":"Literal","src":"10049:4:18"}],"id":3694,"name":"BinaryOperation","src":"10045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3695,"name":"Identifier","src":"10069:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3696,"name":"Literal","src":"10073:1:18"}],"id":3697,"name":"Assignment","src":"10069:5:18"}],"id":3698,"name":"ExpressionStatement","src":"10069:5:18"}],"id":3699,"name":"Block","src":"10055:30:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3700,"name":"Identifier","src":"10105:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3701,"name":"Literal","src":"10109:1:18"}],"id":3702,"name":"Assignment","src":"10105:5:18"}],"id":3703,"name":"ExpressionStatement","src":"10105:5:18"}],"id":3704,"name":"Block","src":"10091:30:18"}],"id":3705,"name":"IfStatement","src":"10041:80:18"}],"id":3706,"name":"IfStatement","src":"9991:130:18"}],"id":3707,"name":"IfStatement","src":"9941:180:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3708,"name":"Identifier","src":"10177:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3709,"name":"Identifier","src":"10181:4:18"}],"id":3710,"name":"MemberAccess","src":"10181:9:18"}],"id":3711,"name":"BinaryOperation","src":"10177:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3712,"name":"Identifier","src":"10206:4:18"}],"id":3714,"name":"MemberAccess","src":"10206:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3715,"name":"Identifier","src":"10218:4:18"}],"id":3716,"name":"MemberAccess","src":"10218:9:18"}],"id":3717,"name":"Assignment","src":"10206:21:18"}],"id":3718,"name":"ExpressionStatement","src":"10206:21:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3719,"name":"Identifier","src":"10241:4:18"}],"id":3721,"name":"MemberAccess","src":"10241:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3722,"name":"Identifier","src":"10254:4:18"}],"id":3723,"name":"MemberAccess","src":"10254:9:18"}],"id":3724,"name":"Assignment","src":"10241:22:18"}],"id":3725,"name":"ExpressionStatement","src":"10241:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3726,"name":"Identifier","src":"10277:4:18"}],"id":3728,"name":"MemberAccess","src":"10277:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3729,"name":"Literal","src":"10289:1:18"}],"id":3730,"name":"Assignment","src":"10277:13:18"}],"id":3731,"name":"ExpressionStatement","src":"10277:13:18"},{"attributes":{"functionReturnParameters":3647},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3732,"name":"Identifier","src":"10311:4:18"}],"id":3733,"name":"Return","src":"10304:11:18"}],"id":3734,"name":"Block","src":"10192:134:18"}],"id":3735,"name":"IfStatement","src":"10173:153:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3736,"name":"Identifier","src":"10336:4:18"}],"id":3738,"name":"MemberAccess","src":"10336:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3739,"name":"Identifier","src":"10349:1:18"}],"id":3740,"name":"Assignment","src":"10336:14:18"}],"id":3741,"name":"ExpressionStatement","src":"10336:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3742,"name":"Identifier","src":"10360:4:18"}],"id":3744,"name":"MemberAccess","src":"10360:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3745,"name":"Identifier","src":"10373:1:18"}],"id":3746,"name":"Assignment","src":"10360:14:18"}],"id":3747,"name":"ExpressionStatement","src":"10360:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3748,"name":"Identifier","src":"10384:4:18"}],"id":3750,"name":"MemberAccess","src":"10384:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3751,"name":"Identifier","src":"10396:1:18"}],"id":3752,"name":"Assignment","src":"10384:13:18"}],"id":3753,"name":"ExpressionStatement","src":"10384:13:18"},{"attributes":{"functionReturnParameters":3647},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3754,"name":"Identifier","src":"10414:4:18"}],"id":3755,"name":"Return","src":"10407:11:18"}],"id":3756,"name":"Block","src":"9638:787:18"}],"id":3757,"name":"FunctionDefinition","src":"9545:880:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3770,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3758,"name":"UserDefinedTypeName","src":"10683:5:18"}],"id":3759,"name":"VariableDeclaration","src":"10683:17:18"}],"id":3760,"name":"ParameterList","src":"10682:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3770,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3761,"name":"UserDefinedTypeName","src":"10725:5:18"}],"id":3762,"name":"VariableDeclaration","src":"10725:16:18"}],"id":3763,"name":"ParameterList","src":"10724:18:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[3757,3770],"referencedDeclaration":3757,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":3764,"name":"Identifier","src":"10753:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3759,"type":"struct strings.slice memory","value":"self"},"id":3765,"name":"Identifier","src":"10762:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3762,"type":"struct strings.slice memory","value":"ret"},"id":3766,"name":"Identifier","src":"10768:3:18"}],"id":3767,"name":"FunctionCall","src":"10753:19:18"}],"id":3768,"name":"ExpressionStatement","src":"10753:19:18"}],"id":3769,"name":"Block","src":"10743:36:18"}],"id":3770,"name":"FunctionDefinition","src":"10665:114:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3917,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3771,"name":"UserDefinedTypeName","src":"10988:5:18"}],"id":3772,"name":"VariableDeclaration","src":"10988:17:18"}],"id":3773,"name":"ParameterList","src":"10987:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3917,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3774,"name":"ElementaryTypeName","src":"11030:4:18"}],"id":3775,"name":"VariableDeclaration","src":"11030:8:18"}],"id":3776,"name":"ParameterList","src":"11029:10:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3772,"type":"struct strings.slice memory","value":"self"},"id":3777,"name":"Identifier","src":"11054:4:18"}],"id":3778,"name":"MemberAccess","src":"11054:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3779,"name":"Literal","src":"11067:1:18"}],"id":3780,"name":"BinaryOperation","src":"11054:14:18"},{"children":[{"attributes":{"functionReturnParameters":3776},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3781,"name":"Literal","src":"11091:1:18"}],"id":3782,"name":"Return","src":"11084:8:18"}],"id":3783,"name":"Block","src":"11070:33:18"}],"id":3784,"name":"IfStatement","src":"11050:53:18"},{"attributes":{"assignments":[3786],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":3916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3785,"name":"ElementaryTypeName","src":"11113:4:18"}],"id":3786,"name":"VariableDeclaration","src":"11113:9:18"}],"id":3787,"name":"VariableDeclarationStatement","src":"11113:9:18"},{"attributes":{"assignments":[3789],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":3916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3788,"name":"ElementaryTypeName","src":"11132:4:18"}],"id":3789,"name":"VariableDeclaration","src":"11132:11:18"}],"id":3790,"name":"VariableDeclarationStatement","src":"11132:11:18"},{"attributes":{"assignments":[3792]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":3916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3791,"name":"ElementaryTypeName","src":"11153:4:18"}],"id":3792,"name":"VariableDeclaration","src":"11153:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3793,"name":"Literal","src":"11168:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":3794,"name":"Literal","src":"11173:3:18"}],"id":3795,"name":"BinaryOperation","src":"11168:8:18"}],"id":3796,"name":"VariableDeclarationStatement","src":"11153:23:18"},{"attributes":{"externalReferences":[{"word":{"declaration":3786,"isOffset":false,"isSlot":false,"src":"11242:4:18","valueSize":1}},{"self":{"declaration":3772,"isOffset":false,"isSlot":false,"src":"11265:4:18","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":3797,"name":"InlineAssembly","src":"11231:47:18"},{"attributes":{"assignments":[3799]},"children":[{"attributes":{"constant":false,"name":"b","scope":3916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3798,"name":"ElementaryTypeName","src":"11287:4:18"}],"id":3799,"name":"VariableDeclaration","src":"11287:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3786,"type":"uint256","value":"word"},"id":3800,"name":"Identifier","src":"11296:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3792,"type":"uint256","value":"divisor"},"id":3801,"name":"Identifier","src":"11303:7:18"}],"id":3802,"name":"BinaryOperation","src":"11296:14:18"}],"id":3803,"name":"VariableDeclarationStatement","src":"11287:23:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3804,"name":"Identifier","src":"11324:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3805,"name":"Literal","src":"11328:4:18"}],"id":3806,"name":"BinaryOperation","src":"11324:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3807,"name":"Identifier","src":"11348:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3808,"name":"Identifier","src":"11354:1:18"}],"id":3809,"name":"Assignment","src":"11348:7:18"}],"id":3810,"name":"ExpressionStatement","src":"11348:7:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3811,"name":"Identifier","src":"11369:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3812,"name":"Literal","src":"11378:1:18"}],"id":3813,"name":"Assignment","src":"11369:10:18"}],"id":3814,"name":"ExpressionStatement","src":"11369:10:18"}],"id":3815,"name":"Block","src":"11334:56:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3816,"name":"Identifier","src":"11400:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3817,"name":"Literal","src":"11404:4:18"}],"id":3818,"name":"BinaryOperation","src":"11400:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3819,"name":"Identifier","src":"11424:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3820,"name":"Identifier","src":"11430:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":3821,"name":"Literal","src":"11434:4:18"}],"id":3822,"name":"BinaryOperation","src":"11430:8:18"}],"id":3823,"name":"Assignment","src":"11424:14:18"}],"id":3824,"name":"ExpressionStatement","src":"11424:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3825,"name":"Identifier","src":"11452:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3826,"name":"Literal","src":"11461:1:18"}],"id":3827,"name":"Assignment","src":"11452:10:18"}],"id":3828,"name":"ExpressionStatement","src":"11452:10:18"}],"id":3829,"name":"Block","src":"11410:63:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3830,"name":"Identifier","src":"11483:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3831,"name":"Literal","src":"11487:4:18"}],"id":3832,"name":"BinaryOperation","src":"11483:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3833,"name":"Identifier","src":"11507:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3834,"name":"Identifier","src":"11513:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":3835,"name":"Literal","src":"11517:4:18"}],"id":3836,"name":"BinaryOperation","src":"11513:8:18"}],"id":3837,"name":"Assignment","src":"11507:14:18"}],"id":3838,"name":"ExpressionStatement","src":"11507:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3839,"name":"Identifier","src":"11535:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3840,"name":"Literal","src":"11544:1:18"}],"id":3841,"name":"Assignment","src":"11535:10:18"}],"id":3842,"name":"ExpressionStatement","src":"11535:10:18"}],"id":3843,"name":"Block","src":"11493:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3844,"name":"Identifier","src":"11576:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3845,"name":"Identifier","src":"11582:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":3846,"name":"Literal","src":"11586:4:18"}],"id":3847,"name":"BinaryOperation","src":"11582:8:18"}],"id":3848,"name":"Assignment","src":"11576:14:18"}],"id":3849,"name":"ExpressionStatement","src":"11576:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3850,"name":"Identifier","src":"11604:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3851,"name":"Literal","src":"11613:1:18"}],"id":3852,"name":"Assignment","src":"11604:10:18"}],"id":3853,"name":"ExpressionStatement","src":"11604:10:18"}],"id":3854,"name":"Block","src":"11562:63:18"}],"id":3855,"name":"IfStatement","src":"11479:146:18"}],"id":3856,"name":"IfStatement","src":"11396:229:18"}],"id":3857,"name":"IfStatement","src":"11320:305:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3858,"name":"Identifier","src":"11681:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3772,"type":"struct strings.slice memory","value":"self"},"id":3859,"name":"Identifier","src":"11690:4:18"}],"id":3860,"name":"MemberAccess","src":"11690:9:18"}],"id":3861,"name":"BinaryOperation","src":"11681:18:18"},{"children":[{"attributes":{"functionReturnParameters":3776},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3862,"name":"Literal","src":"11722:1:18"}],"id":3863,"name":"Return","src":"11715:8:18"}],"id":3864,"name":"Block","src":"11701:33:18"}],"id":3865,"name":"IfStatement","src":"11677:57:18"},{"children":[{"attributes":{"assignments":[3867]},"children":[{"attributes":{"constant":false,"name":"i","scope":3913,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3866,"name":"ElementaryTypeName","src":"11749:4:18"}],"id":3867,"name":"VariableDeclaration","src":"11749:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3868,"name":"Literal","src":"11758:1:18"}],"id":3869,"name":"VariableDeclarationStatement","src":"11749:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3867,"type":"uint256","value":"i"},"id":3870,"name":"Identifier","src":"11761:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3871,"name":"Identifier","src":"11765:6:18"}],"id":3872,"name":"BinaryOperation","src":"11761:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3867,"type":"uint256","value":"i"},"id":3873,"name":"Identifier","src":"11773:1:18"}],"id":3874,"name":"UnaryOperation","src":"11773:3:18"}],"id":3875,"name":"ExpressionStatement","src":"11773:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3792,"type":"uint256","value":"divisor"},"id":3876,"name":"Identifier","src":"11792:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3792,"type":"uint256","value":"divisor"},"id":3877,"name":"Identifier","src":"11802:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":3878,"name":"Literal","src":"11812:3:18"}],"id":3879,"name":"BinaryOperation","src":"11802:13:18"}],"id":3880,"name":"Assignment","src":"11792:23:18"}],"id":3881,"name":"ExpressionStatement","src":"11792:23:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3882,"name":"Identifier","src":"11829:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3786,"type":"uint256","value":"word"},"id":3883,"name":"Identifier","src":"11834:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3792,"type":"uint256","value":"divisor"},"id":3884,"name":"Identifier","src":"11841:7:18"}],"id":3885,"name":"BinaryOperation","src":"11834:14:18"}],"id":3886,"name":"TupleExpression","src":"11833:16:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":3887,"name":"Literal","src":"11852:4:18"}],"id":3888,"name":"BinaryOperation","src":"11833:23:18"}],"id":3889,"name":"Assignment","src":"11829:27:18"}],"id":3890,"name":"ExpressionStatement","src":"11829:27:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3891,"name":"Identifier","src":"11874:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":3892,"name":"Literal","src":"11878:4:18"}],"id":3893,"name":"BinaryOperation","src":"11874:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3894,"name":"Literal","src":"11886:4:18"}],"id":3895,"name":"BinaryOperation","src":"11874:16:18"},{"children":[{"attributes":{"functionReturnParameters":3776},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3896,"name":"Literal","src":"11959:1:18"}],"id":3897,"name":"Return","src":"11952:8:18"}],"id":3898,"name":"Block","src":"11892:83:18"}],"id":3899,"name":"IfStatement","src":"11870:105:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3900,"name":"Identifier","src":"11988:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3901,"name":"Identifier","src":"11995:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":3902,"name":"Literal","src":"12001:2:18"}],"id":3903,"name":"BinaryOperation","src":"11995:8:18"}],"id":3904,"name":"TupleExpression","src":"11994:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3905,"name":"Identifier","src":"12008:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":3906,"name":"Literal","src":"12012:4:18"}],"id":3907,"name":"BinaryOperation","src":"12008:8:18"}],"id":3908,"name":"TupleExpression","src":"12007:10:18"}],"id":3909,"name":"BinaryOperation","src":"11994:23:18"}],"id":3910,"name":"Assignment","src":"11988:29:18"}],"id":3911,"name":"ExpressionStatement","src":"11988:29:18"}],"id":3912,"name":"Block","src":"11778:250:18"}],"id":3913,"name":"ForStatement","src":"11744:284:18"},{"attributes":{"functionReturnParameters":3776},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3914,"name":"Identifier","src":"12045:3:18"}],"id":3915,"name":"Return","src":"12038:10:18"}],"id":3916,"name":"Block","src":"11040:1015:18"}],"id":3917,"name":"FunctionDefinition","src":"10975:1080:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3926,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3918,"name":"UserDefinedTypeName","src":"12222:5:18"}],"id":3919,"name":"VariableDeclaration","src":"12222:17:18"}],"id":3920,"name":"ParameterList","src":"12221:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3926,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3921,"name":"ElementaryTypeName","src":"12264:7:18"}],"id":3922,"name":"VariableDeclaration","src":"12264:11:18"}],"id":3923,"name":"ParameterList","src":"12263:13:18"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":3922,"isOffset":false,"isSlot":false,"src":"12310:3:18","valueSize":1}},{"self":{"declaration":3919,"isOffset":false,"isSlot":false,"src":"12337:4:18","valueSize":1}},{"self":{"declaration":3919,"isOffset":false,"isSlot":false,"src":"12355:4:18","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":3924,"name":"InlineAssembly","src":"12287:84:18"}],"id":3925,"name":"Block","src":"12277:100:18"}],"id":3926,"name":"FunctionDefinition","src":"12206:171:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3960,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3927,"name":"UserDefinedTypeName","src":"12646:5:18"}],"id":3928,"name":"VariableDeclaration","src":"12646:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3960,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3929,"name":"UserDefinedTypeName","src":"12665:5:18"}],"id":3930,"name":"VariableDeclaration","src":"12665:19:18"}],"id":3931,"name":"ParameterList","src":"12645:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3960,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3932,"name":"ElementaryTypeName","src":"12709:4:18"}],"id":3933,"name":"VariableDeclaration","src":"12709:4:18"}],"id":3934,"name":"ParameterList","src":"12708:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"struct strings.slice memory","value":"self"},"id":3935,"name":"Identifier","src":"12729:4:18"}],"id":3936,"name":"MemberAccess","src":"12729:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"struct strings.slice memory","value":"needle"},"id":3937,"name":"Identifier","src":"12741:6:18"}],"id":3938,"name":"MemberAccess","src":"12741:11:18"}],"id":3939,"name":"BinaryOperation","src":"12729:23:18"},{"children":[{"attributes":{"functionReturnParameters":3934},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3940,"name":"Literal","src":"12775:5:18"}],"id":3941,"name":"Return","src":"12768:12:18"}],"id":3942,"name":"Block","src":"12754:37:18"}],"id":3943,"name":"IfStatement","src":"12725:66:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"struct strings.slice memory","value":"self"},"id":3944,"name":"Identifier","src":"12805:4:18"}],"id":3945,"name":"MemberAccess","src":"12805:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"struct strings.slice memory","value":"needle"},"id":3946,"name":"Identifier","src":"12818:6:18"}],"id":3947,"name":"MemberAccess","src":"12818:11:18"}],"id":3948,"name":"BinaryOperation","src":"12805:24:18"},{"children":[{"attributes":{"functionReturnParameters":3934},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3949,"name":"Literal","src":"12852:4:18"}],"id":3950,"name":"Return","src":"12845:11:18"}],"id":3951,"name":"Block","src":"12831:36:18"}],"id":3952,"name":"IfStatement","src":"12801:66:18"},{"attributes":{"assignments":[3954],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":3959,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3953,"name":"ElementaryTypeName","src":"12877:4:18"}],"id":3954,"name":"VariableDeclaration","src":"12877:10:18"}],"id":3955,"name":"VariableDeclarationStatement","src":"12877:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":3930,"isOffset":false,"isSlot":false,"src":"12940:6:18","valueSize":1}},{"self":{"declaration":3928,"isOffset":false,"isSlot":false,"src":"12985:4:18","valueSize":1}},{"equal":{"declaration":3954,"isOffset":false,"isSlot":false,"src":"13064:5:18","valueSize":1}},{"needle":{"declaration":3930,"isOffset":false,"isSlot":false,"src":"13037:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3956,"name":"InlineAssembly","src":"12897:246:18"},{"attributes":{"functionReturnParameters":3934},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3954,"type":"bool","value":"equal"},"id":3957,"name":"Identifier","src":"13159:5:18"}],"id":3958,"name":"Return","src":"13152:12:18"}],"id":3959,"name":"Block","src":"12715:456:18"}],"id":3960,"name":"FunctionDefinition","src":"12626:545:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4010,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3961,"name":"UserDefinedTypeName","src":"13459:5:18"}],"id":3962,"name":"VariableDeclaration","src":"13459:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4010,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3963,"name":"UserDefinedTypeName","src":"13478:5:18"}],"id":3964,"name":"VariableDeclaration","src":"13478:19:18"}],"id":3965,"name":"ParameterList","src":"13458:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4010,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3966,"name":"UserDefinedTypeName","src":"13522:5:18"}],"id":3967,"name":"VariableDeclaration","src":"13522:12:18"}],"id":3968,"name":"ParameterList","src":"13521:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3969,"name":"Identifier","src":"13550:4:18"}],"id":3970,"name":"MemberAccess","src":"13550:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3964,"type":"struct strings.slice memory","value":"needle"},"id":3971,"name":"Identifier","src":"13562:6:18"}],"id":3972,"name":"MemberAccess","src":"13562:11:18"}],"id":3973,"name":"BinaryOperation","src":"13550:23:18"},{"children":[{"attributes":{"functionReturnParameters":3968},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3974,"name":"Identifier","src":"13596:4:18"}],"id":3975,"name":"Return","src":"13589:11:18"}],"id":3976,"name":"Block","src":"13575:36:18"}],"id":3977,"name":"IfStatement","src":"13546:65:18"},{"attributes":{"assignments":[3979]},"children":[{"attributes":{"constant":false,"name":"equal","scope":4009,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3978,"name":"ElementaryTypeName","src":"13621:4:18"}],"id":3979,"name":"VariableDeclaration","src":"13621:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3980,"name":"Literal","src":"13634:4:18"}],"id":3981,"name":"VariableDeclarationStatement","src":"13621:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3982,"name":"Identifier","src":"13652:4:18"}],"id":3983,"name":"MemberAccess","src":"13652:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3964,"type":"struct strings.slice memory","value":"needle"},"id":3984,"name":"Identifier","src":"13665:6:18"}],"id":3985,"name":"MemberAccess","src":"13665:11:18"}],"id":3986,"name":"BinaryOperation","src":"13652:24:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":3964,"isOffset":false,"isSlot":false,"src":"13739:6:18","valueSize":1}},{"self":{"declaration":3962,"isOffset":false,"isSlot":false,"src":"13788:4:18","valueSize":1}},{"equal":{"declaration":3979,"isOffset":false,"isSlot":false,"src":"13875:5:18","valueSize":1}},{"needle":{"declaration":3964,"isOffset":false,"isSlot":false,"src":"13844:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3987,"name":"InlineAssembly","src":"13692:266:18"}],"id":3988,"name":"Block","src":"13678:290:18"}],"id":3989,"name":"IfStatement","src":"13648:320:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3979,"type":"bool","value":"equal"},"id":3990,"name":"Identifier","src":"13982:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3991,"name":"Identifier","src":"14003:4:18"}],"id":3993,"name":"MemberAccess","src":"14003:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3964,"type":"struct strings.slice memory","value":"needle"},"id":3994,"name":"Identifier","src":"14016:6:18"}],"id":3995,"name":"MemberAccess","src":"14016:11:18"}],"id":3996,"name":"Assignment","src":"14003:24:18"}],"id":3997,"name":"ExpressionStatement","src":"14003:24:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3998,"name":"Identifier","src":"14041:4:18"}],"id":4000,"name":"MemberAccess","src":"14041:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3964,"type":"struct strings.slice memory","value":"needle"},"id":4001,"name":"Identifier","src":"14054:6:18"}],"id":4002,"name":"MemberAccess","src":"14054:11:18"}],"id":4003,"name":"Assignment","src":"14041:24:18"}],"id":4004,"name":"ExpressionStatement","src":"14041:24:18"}],"id":4005,"name":"Block","src":"13989:87:18"}],"id":4006,"name":"IfStatement","src":"13978:98:18"},{"attributes":{"functionReturnParameters":3968},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":4007,"name":"Identifier","src":"14093:4:18"}],"id":4008,"name":"Return","src":"14086:11:18"}],"id":4009,"name":"Block","src":"13536:568:18"}],"id":4010,"name":"FunctionDefinition","src":"13443:661:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4054,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4011,"name":"UserDefinedTypeName","src":"14372:5:18"}],"id":4012,"name":"VariableDeclaration","src":"14372:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4054,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4013,"name":"UserDefinedTypeName","src":"14391:5:18"}],"id":4014,"name":"VariableDeclaration","src":"14391:19:18"}],"id":4015,"name":"ParameterList","src":"14371:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4054,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4016,"name":"ElementaryTypeName","src":"14435:4:18"}],"id":4017,"name":"VariableDeclaration","src":"14435:4:18"}],"id":4018,"name":"ParameterList","src":"14434:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4012,"type":"struct strings.slice memory","value":"self"},"id":4019,"name":"Identifier","src":"14455:4:18"}],"id":4020,"name":"MemberAccess","src":"14455:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4014,"type":"struct strings.slice memory","value":"needle"},"id":4021,"name":"Identifier","src":"14467:6:18"}],"id":4022,"name":"MemberAccess","src":"14467:11:18"}],"id":4023,"name":"BinaryOperation","src":"14455:23:18"},{"children":[{"attributes":{"functionReturnParameters":4018},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4024,"name":"Literal","src":"14501:5:18"}],"id":4025,"name":"Return","src":"14494:12:18"}],"id":4026,"name":"Block","src":"14480:37:18"}],"id":4027,"name":"IfStatement","src":"14451:66:18"},{"attributes":{"assignments":[4029]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":4053,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4028,"name":"ElementaryTypeName","src":"14527:4:18"}],"id":4029,"name":"VariableDeclaration","src":"14527:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4012,"type":"struct strings.slice memory","value":"self"},"id":4030,"name":"Identifier","src":"14542:4:18"}],"id":4031,"name":"MemberAccess","src":"14542:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4012,"type":"struct strings.slice memory","value":"self"},"id":4032,"name":"Identifier","src":"14554:4:18"}],"id":4033,"name":"MemberAccess","src":"14554:9:18"}],"id":4034,"name":"BinaryOperation","src":"14542:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4014,"type":"struct strings.slice memory","value":"needle"},"id":4035,"name":"Identifier","src":"14566:6:18"}],"id":4036,"name":"MemberAccess","src":"14566:11:18"}],"id":4037,"name":"BinaryOperation","src":"14542:35:18"}],"id":4038,"name":"VariableDeclarationStatement","src":"14527:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4029,"type":"uint256","value":"selfptr"},"id":4039,"name":"Identifier","src":"14592:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4014,"type":"struct strings.slice memory","value":"needle"},"id":4040,"name":"Identifier","src":"14603:6:18"}],"id":4041,"name":"MemberAccess","src":"14603:11:18"}],"id":4042,"name":"BinaryOperation","src":"14592:22:18"},{"children":[{"attributes":{"functionReturnParameters":4018},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4043,"name":"Literal","src":"14637:4:18"}],"id":4044,"name":"Return","src":"14630:11:18"}],"id":4045,"name":"Block","src":"14616:36:18"}],"id":4046,"name":"IfStatement","src":"14588:64:18"},{"attributes":{"assignments":[4048],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":4053,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4047,"name":"ElementaryTypeName","src":"14662:4:18"}],"id":4048,"name":"VariableDeclaration","src":"14662:10:18"}],"id":4049,"name":"VariableDeclarationStatement","src":"14662:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":4014,"isOffset":false,"isSlot":false,"src":"14725:6:18","valueSize":1}},{"equal":{"declaration":4048,"isOffset":false,"isSlot":false,"src":"14799:5:18","valueSize":1}},{"needle":{"declaration":4014,"isOffset":false,"isSlot":false,"src":"14772:6:18","valueSize":1}},{"selfptr":{"declaration":4029,"isOffset":false,"isSlot":false,"src":"14821:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":4050,"name":"InlineAssembly","src":"14682:196:18"},{"attributes":{"functionReturnParameters":4018},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4048,"type":"bool","value":"equal"},"id":4051,"name":"Identifier","src":"14895:5:18"}],"id":4052,"name":"Return","src":"14888:12:18"}],"id":4053,"name":"Block","src":"14441:466:18"}],"id":4054,"name":"FunctionDefinition","src":"14354:553:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4107,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4055,"name":"UserDefinedTypeName","src":"15186:5:18"}],"id":4056,"name":"VariableDeclaration","src":"15186:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4107,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4057,"name":"UserDefinedTypeName","src":"15205:5:18"}],"id":4058,"name":"VariableDeclaration","src":"15205:19:18"}],"id":4059,"name":"ParameterList","src":"15185:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4107,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4060,"name":"UserDefinedTypeName","src":"15249:5:18"}],"id":4061,"name":"VariableDeclaration","src":"15249:12:18"}],"id":4062,"name":"ParameterList","src":"15248:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4063,"name":"Identifier","src":"15277:4:18"}],"id":4064,"name":"MemberAccess","src":"15277:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4058,"type":"struct strings.slice memory","value":"needle"},"id":4065,"name":"Identifier","src":"15289:6:18"}],"id":4066,"name":"MemberAccess","src":"15289:11:18"}],"id":4067,"name":"BinaryOperation","src":"15277:23:18"},{"children":[{"attributes":{"functionReturnParameters":4062},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4068,"name":"Identifier","src":"15323:4:18"}],"id":4069,"name":"Return","src":"15316:11:18"}],"id":4070,"name":"Block","src":"15302:36:18"}],"id":4071,"name":"IfStatement","src":"15273:65:18"},{"attributes":{"assignments":[4073]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":4106,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4072,"name":"ElementaryTypeName","src":"15348:4:18"}],"id":4073,"name":"VariableDeclaration","src":"15348:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4074,"name":"Identifier","src":"15363:4:18"}],"id":4075,"name":"MemberAccess","src":"15363:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4076,"name":"Identifier","src":"15375:4:18"}],"id":4077,"name":"MemberAccess","src":"15375:9:18"}],"id":4078,"name":"BinaryOperation","src":"15363:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4058,"type":"struct strings.slice memory","value":"needle"},"id":4079,"name":"Identifier","src":"15387:6:18"}],"id":4080,"name":"MemberAccess","src":"15387:11:18"}],"id":4081,"name":"BinaryOperation","src":"15363:35:18"}],"id":4082,"name":"VariableDeclarationStatement","src":"15348:50:18"},{"attributes":{"assignments":[4084]},"children":[{"attributes":{"constant":false,"name":"equal","scope":4106,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4083,"name":"ElementaryTypeName","src":"15408:4:18"}],"id":4084,"name":"VariableDeclaration","src":"15408:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4085,"name":"Literal","src":"15421:4:18"}],"id":4086,"name":"VariableDeclarationStatement","src":"15408:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4073,"type":"uint256","value":"selfptr"},"id":4087,"name":"Identifier","src":"15439:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4058,"type":"struct strings.slice memory","value":"needle"},"id":4088,"name":"Identifier","src":"15450:6:18"}],"id":4089,"name":"MemberAccess","src":"15450:11:18"}],"id":4090,"name":"BinaryOperation","src":"15439:22:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":4058,"isOffset":false,"isSlot":false,"src":"15524:6:18","valueSize":1}},{"equal":{"declaration":4084,"isOffset":false,"isSlot":false,"src":"15606:5:18","valueSize":1}},{"needle":{"declaration":4058,"isOffset":false,"isSlot":false,"src":"15575:6:18","valueSize":1}},{"selfptr":{"declaration":4073,"isOffset":false,"isSlot":false,"src":"15628:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":4091,"name":"InlineAssembly","src":"15477:212:18"}],"id":4092,"name":"Block","src":"15463:236:18"}],"id":4093,"name":"IfStatement","src":"15435:264:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4084,"type":"bool","value":"equal"},"id":4094,"name":"Identifier","src":"15713:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4095,"name":"Identifier","src":"15734:4:18"}],"id":4097,"name":"MemberAccess","src":"15734:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4058,"type":"struct strings.slice memory","value":"needle"},"id":4098,"name":"Identifier","src":"15747:6:18"}],"id":4099,"name":"MemberAccess","src":"15747:11:18"}],"id":4100,"name":"Assignment","src":"15734:24:18"}],"id":4101,"name":"ExpressionStatement","src":"15734:24:18"}],"id":4102,"name":"Block","src":"15720:49:18"}],"id":4103,"name":"IfStatement","src":"15709:60:18"},{"attributes":{"functionReturnParameters":4062},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4104,"name":"Identifier","src":"15786:4:18"}],"id":4105,"name":"Return","src":"15779:11:18"}],"id":4106,"name":"Block","src":"15263:534:18"}],"id":4107,"name":"FunctionDefinition","src":"15171:626:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4108,"name":"ElementaryTypeName","src":"15971:4:18"}],"id":4109,"name":"VariableDeclaration","src":"15971:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4110,"name":"ElementaryTypeName","src":"15985:4:18"}],"id":4111,"name":"VariableDeclaration","src":"15985:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4112,"name":"ElementaryTypeName","src":"15999:4:18"}],"id":4113,"name":"VariableDeclaration","src":"15999:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4114,"name":"ElementaryTypeName","src":"16015:4:18"}],"id":4115,"name":"VariableDeclaration","src":"16015:14:18"}],"id":4116,"name":"ParameterList","src":"15970:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4117,"name":"ElementaryTypeName","src":"16053:4:18"}],"id":4118,"name":"VariableDeclaration","src":"16053:4:18"}],"id":4119,"name":"ParameterList","src":"16052:6:18"},{"children":[{"attributes":{"assignments":[4121]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4120,"name":"ElementaryTypeName","src":"16069:4:18"}],"id":4121,"name":"VariableDeclaration","src":"16069:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4111,"type":"uint256","value":"selfptr"},"id":4122,"name":"Identifier","src":"16080:7:18"}],"id":4123,"name":"VariableDeclarationStatement","src":"16069:18:18"},{"attributes":{"assignments":[4125],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4124,"name":"ElementaryTypeName","src":"16097:4:18"}],"id":4125,"name":"VariableDeclaration","src":"16097:8:18"}],"id":4126,"name":"VariableDeclarationStatement","src":"16097:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4127,"name":"Identifier","src":"16120:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4128,"name":"Identifier","src":"16133:7:18"}],"id":4129,"name":"BinaryOperation","src":"16120:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4130,"name":"Identifier","src":"16160:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4131,"name":"Literal","src":"16173:2:18"}],"id":4132,"name":"BinaryOperation","src":"16160:15:18"},{"children":[{"attributes":{"assignments":[4134]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4133,"name":"ElementaryTypeName","src":"16195:7:18"}],"id":4134,"name":"VariableDeclaration","src":"16195:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4135,"name":"ElementaryTypeNameExpression","src":"16210:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4136,"name":"Literal","src":"16220:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4137,"name":"Literal","src":"16226:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4138,"name":"Literal","src":"16231:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4139,"name":"Identifier","src":"16236:9:18"}],"id":4140,"name":"BinaryOperation","src":"16231:14:18"}],"id":4141,"name":"TupleExpression","src":"16230:16:18"}],"id":4142,"name":"BinaryOperation","src":"16226:20:18"}],"id":4143,"name":"TupleExpression","src":"16225:22:18"}],"id":4144,"name":"BinaryOperation","src":"16220:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4145,"name":"Literal","src":"16250:1:18"}],"id":4146,"name":"BinaryOperation","src":"16220:31:18"}],"id":4147,"name":"TupleExpression","src":"16219:33:18"}],"id":4148,"name":"UnaryOperation","src":"16218:34:18"}],"id":4149,"name":"FunctionCall","src":"16210:43:18"}],"id":4150,"name":"VariableDeclarationStatement","src":"16195:58:18"},{"attributes":{"assignments":[4152],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4151,"name":"ElementaryTypeName","src":"16272:7:18"}],"id":4152,"name":"VariableDeclaration","src":"16272:18:18"}],"id":4153,"name":"VariableDeclarationStatement","src":"16272:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":4152,"isOffset":false,"isSlot":false,"src":"16319:10:18","valueSize":1}},{"needleptr":{"declaration":4115,"isOffset":false,"isSlot":false,"src":"16343:9:18","valueSize":1}},{"mask":{"declaration":4134,"isOffset":false,"isSlot":false,"src":"16355:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":4154,"name":"InlineAssembly","src":"16308:54:18"},{"attributes":{"assignments":[4156]},"children":[{"attributes":{"constant":false,"name":"end","scope":4186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4155,"name":"ElementaryTypeName","src":"16380:4:18"}],"id":4156,"name":"VariableDeclaration","src":"16380:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4111,"type":"uint256","value":"selfptr"},"id":4157,"name":"Identifier","src":"16391:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4158,"name":"Identifier","src":"16401:7:18"}],"id":4159,"name":"BinaryOperation","src":"16391:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4160,"name":"Identifier","src":"16411:9:18"}],"id":4161,"name":"BinaryOperation","src":"16391:29:18"}],"id":4162,"name":"VariableDeclarationStatement","src":"16380:40:18"},{"attributes":{"assignments":[4164],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4163,"name":"ElementaryTypeName","src":"16438:7:18"}],"id":4164,"name":"VariableDeclaration","src":"16438:15:18"}],"id":4165,"name":"VariableDeclarationStatement","src":"16438:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4164,"isOffset":false,"isSlot":false,"src":"16482:7:18","valueSize":1}},{"ptr":{"declaration":4121,"isOffset":false,"isSlot":false,"src":"16503:3:18","valueSize":1}},{"mask":{"declaration":4134,"isOffset":false,"isSlot":false,"src":"16509:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4166,"name":"InlineAssembly","src":"16471:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4164,"type":"bytes32","value":"ptrdata"},"id":4167,"name":"Identifier","src":"16541:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4152,"type":"bytes32","value":"needledata"},"id":4168,"name":"Identifier","src":"16552:10:18"}],"id":4169,"name":"BinaryOperation","src":"16541:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4170,"name":"Identifier","src":"16590:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4156,"type":"uint256","value":"end"},"id":4171,"name":"Identifier","src":"16597:3:18"}],"id":4172,"name":"BinaryOperation","src":"16590:10:18"},{"attributes":{"functionReturnParameters":4119},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4111,"type":"uint256","value":"selfptr"},"id":4173,"name":"Identifier","src":"16633:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4174,"name":"Identifier","src":"16643:7:18"}],"id":4175,"name":"BinaryOperation","src":"16633:17:18"}],"id":4176,"name":"Return","src":"16626:24:18"}],"id":4177,"name":"IfStatement","src":"16586:64:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4178,"name":"Identifier","src":"16672:3:18"}],"id":4179,"name":"UnaryOperation","src":"16672:5:18"}],"id":4180,"name":"ExpressionStatement","src":"16672:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4164,"isOffset":false,"isSlot":false,"src":"16710:7:18","valueSize":1}},{"ptr":{"declaration":4121,"isOffset":false,"isSlot":false,"src":"16731:3:18","valueSize":1}},{"mask":{"declaration":4134,"isOffset":false,"isSlot":false,"src":"16737:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4181,"name":"InlineAssembly","src":"16699:45:18"}],"id":4182,"name":"Block","src":"16564:198:18"}],"id":4183,"name":"WhileStatement","src":"16534:228:18"},{"attributes":{"functionReturnParameters":4119},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4184,"name":"Identifier","src":"16786:3:18"}],"id":4185,"name":"Return","src":"16779:10:18"}],"id":4186,"name":"Block","src":"16177:627:18"},{"children":[{"attributes":{"assignments":[4188],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":4219,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4187,"name":"ElementaryTypeName","src":"16877:7:18"}],"id":4188,"name":"VariableDeclaration","src":"16877:12:18"}],"id":4189,"name":"VariableDeclarationStatement","src":"16877:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":4188,"isOffset":false,"isSlot":false,"src":"16918:4:18","valueSize":1}},{"needleptr":{"declaration":4115,"isOffset":false,"isSlot":false,"src":"16936:9:18","valueSize":1}},{"needlelen":{"declaration":4113,"isOffset":false,"isSlot":false,"src":"16947:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":4190,"name":"InlineAssembly","src":"16907:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4125,"type":"uint256","value":"idx"},"id":4191,"name":"Identifier","src":"16982:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4192,"name":"Literal","src":"16988:1:18"}],"id":4193,"name":"Assignment","src":"16982:7:18"}],"id":4194,"name":"ExpressionStatement","src":"16982:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4125,"type":"uint256","value":"idx"},"id":4195,"name":"Identifier","src":"16991:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4196,"name":"Identifier","src":"16998:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4197,"name":"Identifier","src":"17008:9:18"}],"id":4198,"name":"BinaryOperation","src":"16998:19:18"}],"id":4199,"name":"BinaryOperation","src":"16991:26:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4125,"type":"uint256","value":"idx"},"id":4200,"name":"Identifier","src":"17019:3:18"}],"id":4201,"name":"UnaryOperation","src":"17019:5:18"}],"id":4202,"name":"ExpressionStatement","src":"17019:5:18"},{"children":[{"attributes":{"assignments":[4204],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":4217,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4203,"name":"ElementaryTypeName","src":"17048:7:18"}],"id":4204,"name":"VariableDeclaration","src":"17048:16:18"}],"id":4205,"name":"VariableDeclarationStatement","src":"17048:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":4204,"isOffset":false,"isSlot":false,"src":"17097:8:18","valueSize":1}},{"ptr":{"declaration":4121,"isOffset":false,"isSlot":false,"src":"17119:3:18","valueSize":1}},{"needlelen":{"declaration":4113,"isOffset":false,"isSlot":false,"src":"17124:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":4206,"name":"InlineAssembly","src":"17086:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"bytes32","value":"hash"},"id":4207,"name":"Identifier","src":"17161:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4204,"type":"bytes32","value":"testHash"},"id":4208,"name":"Identifier","src":"17169:8:18"}],"id":4209,"name":"BinaryOperation","src":"17161:16:18"},{"attributes":{"functionReturnParameters":4119},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4210,"name":"Identifier","src":"17210:3:18"}],"id":4211,"name":"Return","src":"17203:10:18"}],"id":4212,"name":"IfStatement","src":"17157:56:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4213,"name":"Identifier","src":"17235:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4214,"name":"Literal","src":"17242:1:18"}],"id":4215,"name":"Assignment","src":"17235:8:18"}],"id":4216,"name":"ExpressionStatement","src":"17235:8:18"}],"id":4217,"name":"Block","src":"17026:236:18"}],"id":4218,"name":"ForStatement","src":"16977:285:18"}],"id":4219,"name":"Block","src":"16810:466:18"}],"id":4220,"name":"IfStatement","src":"16156:1120:18"}],"id":4221,"name":"Block","src":"16142:1144:18"}],"id":4222,"name":"IfStatement","src":"16116:1170:18"},{"attributes":{"functionReturnParameters":4119},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4111,"type":"uint256","value":"selfptr"},"id":4223,"name":"Identifier","src":"17302:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4224,"name":"Identifier","src":"17312:7:18"}],"id":4225,"name":"BinaryOperation","src":"17302:17:18"}],"id":4226,"name":"Return","src":"17295:24:18"}],"id":4227,"name":"Block","src":"16059:1267:18"}],"id":4228,"name":"FunctionDefinition","src":"15954:1372:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4229,"name":"ElementaryTypeName","src":"17497:4:18"}],"id":4230,"name":"VariableDeclaration","src":"17497:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4231,"name":"ElementaryTypeName","src":"17511:4:18"}],"id":4232,"name":"VariableDeclaration","src":"17511:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4233,"name":"ElementaryTypeName","src":"17525:4:18"}],"id":4234,"name":"VariableDeclaration","src":"17525:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4235,"name":"ElementaryTypeName","src":"17541:4:18"}],"id":4236,"name":"VariableDeclaration","src":"17541:14:18"}],"id":4237,"name":"ParameterList","src":"17496:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4238,"name":"ElementaryTypeName","src":"17579:4:18"}],"id":4239,"name":"VariableDeclaration","src":"17579:4:18"}],"id":4240,"name":"ParameterList","src":"17578:6:18"},{"children":[{"attributes":{"assignments":[4242],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4344,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4241,"name":"ElementaryTypeName","src":"17595:4:18"}],"id":4242,"name":"VariableDeclaration","src":"17595:8:18"}],"id":4243,"name":"VariableDeclarationStatement","src":"17595:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4244,"name":"Identifier","src":"17618:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4230,"type":"uint256","value":"selflen"},"id":4245,"name":"Identifier","src":"17631:7:18"}],"id":4246,"name":"BinaryOperation","src":"17618:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4247,"name":"Identifier","src":"17658:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4248,"name":"Literal","src":"17671:2:18"}],"id":4249,"name":"BinaryOperation","src":"17658:15:18"},{"children":[{"attributes":{"assignments":[4251]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4303,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4250,"name":"ElementaryTypeName","src":"17693:7:18"}],"id":4251,"name":"VariableDeclaration","src":"17693:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4252,"name":"ElementaryTypeNameExpression","src":"17708:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4253,"name":"Literal","src":"17718:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4254,"name":"Literal","src":"17724:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4255,"name":"Literal","src":"17729:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4256,"name":"Identifier","src":"17734:9:18"}],"id":4257,"name":"BinaryOperation","src":"17729:14:18"}],"id":4258,"name":"TupleExpression","src":"17728:16:18"}],"id":4259,"name":"BinaryOperation","src":"17724:20:18"}],"id":4260,"name":"TupleExpression","src":"17723:22:18"}],"id":4261,"name":"BinaryOperation","src":"17718:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4262,"name":"Literal","src":"17748:1:18"}],"id":4263,"name":"BinaryOperation","src":"17718:31:18"}],"id":4264,"name":"TupleExpression","src":"17717:33:18"}],"id":4265,"name":"UnaryOperation","src":"17716:34:18"}],"id":4266,"name":"FunctionCall","src":"17708:43:18"}],"id":4267,"name":"VariableDeclarationStatement","src":"17693:58:18"},{"attributes":{"assignments":[4269],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":4303,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4268,"name":"ElementaryTypeName","src":"17770:7:18"}],"id":4269,"name":"VariableDeclaration","src":"17770:18:18"}],"id":4270,"name":"VariableDeclarationStatement","src":"17770:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":4269,"isOffset":false,"isSlot":false,"src":"17817:10:18","valueSize":1}},{"needleptr":{"declaration":4236,"isOffset":false,"isSlot":false,"src":"17841:9:18","valueSize":1}},{"mask":{"declaration":4251,"isOffset":false,"isSlot":false,"src":"17853:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":4271,"name":"InlineAssembly","src":"17806:54:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4272,"name":"Identifier","src":"17878:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4273,"name":"Identifier","src":"17884:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4230,"type":"uint256","value":"selflen"},"id":4274,"name":"Identifier","src":"17894:7:18"}],"id":4275,"name":"BinaryOperation","src":"17884:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4276,"name":"Identifier","src":"17904:9:18"}],"id":4277,"name":"BinaryOperation","src":"17884:29:18"}],"id":4278,"name":"Assignment","src":"17878:35:18"}],"id":4279,"name":"ExpressionStatement","src":"17878:35:18"},{"attributes":{"assignments":[4281],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":4303,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4280,"name":"ElementaryTypeName","src":"17931:7:18"}],"id":4281,"name":"VariableDeclaration","src":"17931:15:18"}],"id":4282,"name":"VariableDeclarationStatement","src":"17931:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4281,"isOffset":false,"isSlot":false,"src":"17975:7:18","valueSize":1}},{"ptr":{"declaration":4242,"isOffset":false,"isSlot":false,"src":"17996:3:18","valueSize":1}},{"mask":{"declaration":4251,"isOffset":false,"isSlot":false,"src":"18002:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4283,"name":"InlineAssembly","src":"17964:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4281,"type":"bytes32","value":"ptrdata"},"id":4284,"name":"Identifier","src":"18034:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"bytes32","value":"needledata"},"id":4285,"name":"Identifier","src":"18045:10:18"}],"id":4286,"name":"BinaryOperation","src":"18034:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4287,"name":"Identifier","src":"18083:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4288,"name":"Identifier","src":"18090:7:18"}],"id":4289,"name":"BinaryOperation","src":"18083:14:18"},{"attributes":{"functionReturnParameters":4240},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4290,"name":"Identifier","src":"18130:7:18"}],"id":4291,"name":"Return","src":"18123:14:18"}],"id":4292,"name":"IfStatement","src":"18079:58:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4293,"name":"Identifier","src":"18159:3:18"}],"id":4294,"name":"UnaryOperation","src":"18159:5:18"}],"id":4295,"name":"ExpressionStatement","src":"18159:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4281,"isOffset":false,"isSlot":false,"src":"18197:7:18","valueSize":1}},{"ptr":{"declaration":4242,"isOffset":false,"isSlot":false,"src":"18218:3:18","valueSize":1}},{"mask":{"declaration":4251,"isOffset":false,"isSlot":false,"src":"18224:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4296,"name":"InlineAssembly","src":"18186:45:18"}],"id":4297,"name":"Block","src":"18057:192:18"}],"id":4298,"name":"WhileStatement","src":"18027:222:18"},{"attributes":{"functionReturnParameters":4240},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4299,"name":"Identifier","src":"18273:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4300,"name":"Identifier","src":"18279:9:18"}],"id":4301,"name":"BinaryOperation","src":"18273:15:18"}],"id":4302,"name":"Return","src":"18266:22:18"}],"id":4303,"name":"Block","src":"17675:628:18"},{"children":[{"attributes":{"assignments":[4305],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":4338,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4304,"name":"ElementaryTypeName","src":"18376:7:18"}],"id":4305,"name":"VariableDeclaration","src":"18376:12:18"}],"id":4306,"name":"VariableDeclarationStatement","src":"18376:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":4305,"isOffset":false,"isSlot":false,"src":"18417:4:18","valueSize":1}},{"needleptr":{"declaration":4236,"isOffset":false,"isSlot":false,"src":"18435:9:18","valueSize":1}},{"needlelen":{"declaration":4234,"isOffset":false,"isSlot":false,"src":"18446:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":4307,"name":"InlineAssembly","src":"18406:52:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4308,"name":"Identifier","src":"18475:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4309,"name":"Identifier","src":"18481:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4230,"type":"uint256","value":"selflen"},"id":4310,"name":"Identifier","src":"18492:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4311,"name":"Identifier","src":"18502:9:18"}],"id":4312,"name":"BinaryOperation","src":"18492:19:18"}],"id":4313,"name":"TupleExpression","src":"18491:21:18"}],"id":4314,"name":"BinaryOperation","src":"18481:31:18"}],"id":4315,"name":"Assignment","src":"18475:37:18"}],"id":4316,"name":"ExpressionStatement","src":"18475:37:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4317,"name":"Identifier","src":"18537:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4318,"name":"Identifier","src":"18544:7:18"}],"id":4319,"name":"BinaryOperation","src":"18537:14:18"},{"children":[{"attributes":{"assignments":[4321],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":4336,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4320,"name":"ElementaryTypeName","src":"18575:7:18"}],"id":4321,"name":"VariableDeclaration","src":"18575:16:18"}],"id":4322,"name":"VariableDeclarationStatement","src":"18575:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":4321,"isOffset":false,"isSlot":false,"src":"18624:8:18","valueSize":1}},{"ptr":{"declaration":4242,"isOffset":false,"isSlot":false,"src":"18646:3:18","valueSize":1}},{"needlelen":{"declaration":4234,"isOffset":false,"isSlot":false,"src":"18651:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":4323,"name":"InlineAssembly","src":"18613:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"bytes32","value":"hash"},"id":4324,"name":"Identifier","src":"18688:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4321,"type":"bytes32","value":"testHash"},"id":4325,"name":"Identifier","src":"18696:8:18"}],"id":4326,"name":"BinaryOperation","src":"18688:16:18"},{"attributes":{"functionReturnParameters":4240},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4327,"name":"Identifier","src":"18737:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4328,"name":"Identifier","src":"18743:9:18"}],"id":4329,"name":"BinaryOperation","src":"18737:15:18"}],"id":4330,"name":"Return","src":"18730:22:18"}],"id":4331,"name":"IfStatement","src":"18684:68:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4332,"name":"Identifier","src":"18774:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4333,"name":"Literal","src":"18781:1:18"}],"id":4334,"name":"Assignment","src":"18774:8:18"}],"id":4335,"name":"ExpressionStatement","src":"18774:8:18"}],"id":4336,"name":"Block","src":"18553:248:18"}],"id":4337,"name":"WhileStatement","src":"18530:271:18"}],"id":4338,"name":"Block","src":"18309:506:18"}],"id":4339,"name":"IfStatement","src":"17654:1161:18"}],"id":4340,"name":"Block","src":"17640:1185:18"}],"id":4341,"name":"IfStatement","src":"17614:1211:18"},{"attributes":{"functionReturnParameters":4240},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4342,"name":"Identifier","src":"18841:7:18"}],"id":4343,"name":"Return","src":"18834:14:18"}],"id":4344,"name":"Block","src":"17585:1270:18"}],"id":4345,"name":"FunctionDefinition","src":"17479:1376:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4385,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4346,"name":"UserDefinedTypeName","src":"19205:5:18"}],"id":4347,"name":"VariableDeclaration","src":"19205:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4385,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4348,"name":"UserDefinedTypeName","src":"19224:5:18"}],"id":4349,"name":"VariableDeclaration","src":"19224:19:18"}],"id":4350,"name":"ParameterList","src":"19204:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4385,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4351,"name":"UserDefinedTypeName","src":"19268:5:18"}],"id":4352,"name":"VariableDeclaration","src":"19268:12:18"}],"id":4353,"name":"ParameterList","src":"19267:14:18"},{"children":[{"attributes":{"assignments":[4355]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4384,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4354,"name":"ElementaryTypeName","src":"19292:4:18"}],"id":4355,"name":"VariableDeclaration","src":"19292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4228,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4356,"name":"Identifier","src":"19303:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4357,"name":"Identifier","src":"19311:4:18"}],"id":4358,"name":"MemberAccess","src":"19311:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4359,"name":"Identifier","src":"19322:4:18"}],"id":4360,"name":"MemberAccess","src":"19322:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4349,"type":"struct strings.slice memory","value":"needle"},"id":4361,"name":"Identifier","src":"19333:6:18"}],"id":4362,"name":"MemberAccess","src":"19333:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4349,"type":"struct strings.slice memory","value":"needle"},"id":4363,"name":"Identifier","src":"19346:6:18"}],"id":4364,"name":"MemberAccess","src":"19346:11:18"}],"id":4365,"name":"FunctionCall","src":"19303:55:18"}],"id":4366,"name":"VariableDeclarationStatement","src":"19292:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4367,"name":"Identifier","src":"19368:4:18"}],"id":4369,"name":"MemberAccess","src":"19368:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"ptr"},"id":4370,"name":"Identifier","src":"19381:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4371,"name":"Identifier","src":"19387:4:18"}],"id":4372,"name":"MemberAccess","src":"19387:9:18"}],"id":4373,"name":"BinaryOperation","src":"19381:15:18"}],"id":4374,"name":"Assignment","src":"19368:28:18"}],"id":4375,"name":"ExpressionStatement","src":"19368:28:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4376,"name":"Identifier","src":"19406:4:18"}],"id":4378,"name":"MemberAccess","src":"19406:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"ptr"},"id":4379,"name":"Identifier","src":"19418:3:18"}],"id":4380,"name":"Assignment","src":"19406:15:18"}],"id":4381,"name":"ExpressionStatement","src":"19406:15:18"},{"attributes":{"functionReturnParameters":4353},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4382,"name":"Identifier","src":"19438:4:18"}],"id":4383,"name":"Return","src":"19431:11:18"}],"id":4384,"name":"Block","src":"19282:167:18"}],"id":4385,"name":"FunctionDefinition","src":"19191:258:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4419,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4386,"name":"UserDefinedTypeName","src":"19823:5:18"}],"id":4387,"name":"VariableDeclaration","src":"19823:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4419,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4388,"name":"UserDefinedTypeName","src":"19842:5:18"}],"id":4389,"name":"VariableDeclaration","src":"19842:19:18"}],"id":4390,"name":"ParameterList","src":"19822:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4419,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4391,"name":"UserDefinedTypeName","src":"19886:5:18"}],"id":4392,"name":"VariableDeclaration","src":"19886:12:18"}],"id":4393,"name":"ParameterList","src":"19885:14:18"},{"children":[{"attributes":{"assignments":[4395]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4418,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4394,"name":"ElementaryTypeName","src":"19910:4:18"}],"id":4395,"name":"VariableDeclaration","src":"19910:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4396,"name":"Identifier","src":"19921:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4397,"name":"Identifier","src":"19930:4:18"}],"id":4398,"name":"MemberAccess","src":"19930:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4399,"name":"Identifier","src":"19941:4:18"}],"id":4400,"name":"MemberAccess","src":"19941:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4389,"type":"struct strings.slice memory","value":"needle"},"id":4401,"name":"Identifier","src":"19952:6:18"}],"id":4402,"name":"MemberAccess","src":"19952:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4389,"type":"struct strings.slice memory","value":"needle"},"id":4403,"name":"Identifier","src":"19965:6:18"}],"id":4404,"name":"MemberAccess","src":"19965:11:18"}],"id":4405,"name":"FunctionCall","src":"19921:56:18"}],"id":4406,"name":"VariableDeclarationStatement","src":"19910:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4407,"name":"Identifier","src":"19987:4:18"}],"id":4409,"name":"MemberAccess","src":"19987:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4395,"type":"uint256","value":"ptr"},"id":4410,"name":"Identifier","src":"19999:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4411,"name":"Identifier","src":"20005:4:18"}],"id":4412,"name":"MemberAccess","src":"20005:9:18"}],"id":4413,"name":"BinaryOperation","src":"19999:15:18"}],"id":4414,"name":"Assignment","src":"19987:27:18"}],"id":4415,"name":"ExpressionStatement","src":"19987:27:18"},{"attributes":{"functionReturnParameters":4393},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4416,"name":"Identifier","src":"20031:4:18"}],"id":4417,"name":"Return","src":"20024:11:18"}],"id":4418,"name":"Block","src":"19900:142:18"}],"id":4419,"name":"FunctionDefinition","src":"19808:234:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4497,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4420,"name":"UserDefinedTypeName","src":"20563:5:18"}],"id":4421,"name":"VariableDeclaration","src":"20563:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4497,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4422,"name":"UserDefinedTypeName","src":"20582:5:18"}],"id":4423,"name":"VariableDeclaration","src":"20582:19:18"},{"attributes":{"constant":false,"name":"token","scope":4497,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4424,"name":"UserDefinedTypeName","src":"20603:5:18"}],"id":4425,"name":"VariableDeclaration","src":"20603:18:18"}],"id":4426,"name":"ParameterList","src":"20562:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4497,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4427,"name":"UserDefinedTypeName","src":"20646:5:18"}],"id":4428,"name":"VariableDeclaration","src":"20646:12:18"}],"id":4429,"name":"ParameterList","src":"20645:14:18"},{"children":[{"attributes":{"assignments":[4431]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4430,"name":"ElementaryTypeName","src":"20670:4:18"}],"id":4431,"name":"VariableDeclaration","src":"20670:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4228,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4432,"name":"Identifier","src":"20681:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4433,"name":"Identifier","src":"20689:4:18"}],"id":4434,"name":"MemberAccess","src":"20689:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4435,"name":"Identifier","src":"20700:4:18"}],"id":4436,"name":"MemberAccess","src":"20700:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4423,"type":"struct strings.slice memory","value":"needle"},"id":4437,"name":"Identifier","src":"20711:6:18"}],"id":4438,"name":"MemberAccess","src":"20711:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4423,"type":"struct strings.slice memory","value":"needle"},"id":4439,"name":"Identifier","src":"20724:6:18"}],"id":4440,"name":"MemberAccess","src":"20724:11:18"}],"id":4441,"name":"FunctionCall","src":"20681:55:18"}],"id":4442,"name":"VariableDeclarationStatement","src":"20670:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4425,"type":"struct strings.slice memory","value":"token"},"id":4443,"name":"Identifier","src":"20746:5:18"}],"id":4445,"name":"MemberAccess","src":"20746:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4446,"name":"Identifier","src":"20759:4:18"}],"id":4447,"name":"MemberAccess","src":"20759:9:18"}],"id":4448,"name":"Assignment","src":"20746:22:18"}],"id":4449,"name":"ExpressionStatement","src":"20746:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4425,"type":"struct strings.slice memory","value":"token"},"id":4450,"name":"Identifier","src":"20778:5:18"}],"id":4452,"name":"MemberAccess","src":"20778:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4431,"type":"uint256","value":"ptr"},"id":4453,"name":"Identifier","src":"20791:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4454,"name":"Identifier","src":"20797:4:18"}],"id":4455,"name":"MemberAccess","src":"20797:9:18"}],"id":4456,"name":"BinaryOperation","src":"20791:15:18"}],"id":4457,"name":"Assignment","src":"20778:28:18"}],"id":4458,"name":"ExpressionStatement","src":"20778:28:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4431,"type":"uint256","value":"ptr"},"id":4459,"name":"Identifier","src":"20820:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4460,"name":"Identifier","src":"20827:4:18"}],"id":4461,"name":"MemberAccess","src":"20827:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4462,"name":"Identifier","src":"20839:4:18"}],"id":4463,"name":"MemberAccess","src":"20839:9:18"}],"id":4464,"name":"BinaryOperation","src":"20827:21:18"}],"id":4465,"name":"BinaryOperation","src":"20820:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4466,"name":"Identifier","src":"20889:4:18"}],"id":4468,"name":"MemberAccess","src":"20889:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4469,"name":"Literal","src":"20901:1:18"}],"id":4470,"name":"Assignment","src":"20889:13:18"}],"id":4471,"name":"ExpressionStatement","src":"20889:13:18"}],"id":4472,"name":"Block","src":"20850:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4473,"name":"Identifier","src":"20933:4:18"}],"id":4475,"name":"MemberAccess","src":"20933:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4425,"type":"struct strings.slice memory","value":"token"},"id":4476,"name":"Identifier","src":"20946:5:18"}],"id":4477,"name":"MemberAccess","src":"20946:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4423,"type":"struct strings.slice memory","value":"needle"},"id":4478,"name":"Identifier","src":"20959:6:18"}],"id":4479,"name":"MemberAccess","src":"20959:11:18"}],"id":4480,"name":"BinaryOperation","src":"20946:24:18"}],"id":4481,"name":"Assignment","src":"20933:37:18"}],"id":4482,"name":"ExpressionStatement","src":"20933:37:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4483,"name":"Identifier","src":"20984:4:18"}],"id":4485,"name":"MemberAccess","src":"20984:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4431,"type":"uint256","value":"ptr"},"id":4486,"name":"Identifier","src":"20996:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4423,"type":"struct strings.slice memory","value":"needle"},"id":4487,"name":"Identifier","src":"21002:6:18"}],"id":4488,"name":"MemberAccess","src":"21002:11:18"}],"id":4489,"name":"BinaryOperation","src":"20996:17:18"}],"id":4490,"name":"Assignment","src":"20984:29:18"}],"id":4491,"name":"ExpressionStatement","src":"20984:29:18"}],"id":4492,"name":"Block","src":"20919:105:18"}],"id":4493,"name":"IfStatement","src":"20816:208:18"},{"attributes":{"functionReturnParameters":4429},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4425,"type":"struct strings.slice memory","value":"token"},"id":4494,"name":"Identifier","src":"21040:5:18"}],"id":4495,"name":"Return","src":"21033:12:18"}],"id":4496,"name":"Block","src":"20660:392:18"}],"id":4497,"name":"FunctionDefinition","src":"20548:504:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4513,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4498,"name":"UserDefinedTypeName","src":"21538:5:18"}],"id":4499,"name":"VariableDeclaration","src":"21538:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4513,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4500,"name":"UserDefinedTypeName","src":"21557:5:18"}],"id":4501,"name":"VariableDeclaration","src":"21557:19:18"}],"id":4502,"name":"ParameterList","src":"21537:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":4513,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4503,"name":"UserDefinedTypeName","src":"21601:5:18"}],"id":4504,"name":"VariableDeclaration","src":"21601:18:18"}],"id":4505,"name":"ParameterList","src":"21600:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[4497,4513],"referencedDeclaration":4497,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":4506,"name":"Identifier","src":"21631:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4499,"type":"struct strings.slice memory","value":"self"},"id":4507,"name":"Identifier","src":"21637:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4501,"type":"struct strings.slice memory","value":"needle"},"id":4508,"name":"Identifier","src":"21643:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4504,"type":"struct strings.slice memory","value":"token"},"id":4509,"name":"Identifier","src":"21651:5:18"}],"id":4510,"name":"FunctionCall","src":"21631:26:18"}],"id":4511,"name":"ExpressionStatement","src":"21631:26:18"}],"id":4512,"name":"Block","src":"21621:43:18"}],"id":4513,"name":"FunctionDefinition","src":"21523:141:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4582,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4514,"name":"UserDefinedTypeName","src":"22185:5:18"}],"id":4515,"name":"VariableDeclaration","src":"22185:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4582,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4516,"name":"UserDefinedTypeName","src":"22204:5:18"}],"id":4517,"name":"VariableDeclaration","src":"22204:19:18"},{"attributes":{"constant":false,"name":"token","scope":4582,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4518,"name":"UserDefinedTypeName","src":"22225:5:18"}],"id":4519,"name":"VariableDeclaration","src":"22225:18:18"}],"id":4520,"name":"ParameterList","src":"22184:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4582,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4521,"name":"UserDefinedTypeName","src":"22268:5:18"}],"id":4522,"name":"VariableDeclaration","src":"22268:12:18"}],"id":4523,"name":"ParameterList","src":"22267:14:18"},{"children":[{"attributes":{"assignments":[4525]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4581,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4524,"name":"ElementaryTypeName","src":"22292:4:18"}],"id":4525,"name":"VariableDeclaration","src":"22292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4526,"name":"Identifier","src":"22303:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4527,"name":"Identifier","src":"22312:4:18"}],"id":4528,"name":"MemberAccess","src":"22312:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4529,"name":"Identifier","src":"22323:4:18"}],"id":4530,"name":"MemberAccess","src":"22323:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4517,"type":"struct strings.slice memory","value":"needle"},"id":4531,"name":"Identifier","src":"22334:6:18"}],"id":4532,"name":"MemberAccess","src":"22334:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4517,"type":"struct strings.slice memory","value":"needle"},"id":4533,"name":"Identifier","src":"22347:6:18"}],"id":4534,"name":"MemberAccess","src":"22347:11:18"}],"id":4535,"name":"FunctionCall","src":"22303:56:18"}],"id":4536,"name":"VariableDeclarationStatement","src":"22292:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4519,"type":"struct strings.slice memory","value":"token"},"id":4537,"name":"Identifier","src":"22369:5:18"}],"id":4539,"name":"MemberAccess","src":"22369:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4525,"type":"uint256","value":"ptr"},"id":4540,"name":"Identifier","src":"22382:3:18"}],"id":4541,"name":"Assignment","src":"22369:16:18"}],"id":4542,"name":"ExpressionStatement","src":"22369:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4519,"type":"struct strings.slice memory","value":"token"},"id":4543,"name":"Identifier","src":"22395:5:18"}],"id":4545,"name":"MemberAccess","src":"22395:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4546,"name":"Identifier","src":"22408:4:18"}],"id":4547,"name":"MemberAccess","src":"22408:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4525,"type":"uint256","value":"ptr"},"id":4548,"name":"Identifier","src":"22421:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4549,"name":"Identifier","src":"22427:4:18"}],"id":4550,"name":"MemberAccess","src":"22427:9:18"}],"id":4551,"name":"BinaryOperation","src":"22421:15:18"}],"id":4552,"name":"TupleExpression","src":"22420:17:18"}],"id":4553,"name":"BinaryOperation","src":"22408:29:18"}],"id":4554,"name":"Assignment","src":"22395:42:18"}],"id":4555,"name":"ExpressionStatement","src":"22395:42:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4525,"type":"uint256","value":"ptr"},"id":4556,"name":"Identifier","src":"22451:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4557,"name":"Identifier","src":"22458:4:18"}],"id":4558,"name":"MemberAccess","src":"22458:9:18"}],"id":4559,"name":"BinaryOperation","src":"22451:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4560,"name":"Identifier","src":"22508:4:18"}],"id":4562,"name":"MemberAccess","src":"22508:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4563,"name":"Literal","src":"22520:1:18"}],"id":4564,"name":"Assignment","src":"22508:13:18"}],"id":4565,"name":"ExpressionStatement","src":"22508:13:18"}],"id":4566,"name":"Block","src":"22469:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4567,"name":"Identifier","src":"22552:4:18"}],"id":4569,"name":"MemberAccess","src":"22552:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4519,"type":"struct strings.slice memory","value":"token"},"id":4570,"name":"Identifier","src":"22565:5:18"}],"id":4571,"name":"MemberAccess","src":"22565:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4517,"type":"struct strings.slice memory","value":"needle"},"id":4572,"name":"Identifier","src":"22578:6:18"}],"id":4573,"name":"MemberAccess","src":"22578:11:18"}],"id":4574,"name":"BinaryOperation","src":"22565:24:18"}],"id":4575,"name":"Assignment","src":"22552:37:18"}],"id":4576,"name":"ExpressionStatement","src":"22552:37:18"}],"id":4577,"name":"Block","src":"22538:62:18"}],"id":4578,"name":"IfStatement","src":"22447:153:18"},{"attributes":{"functionReturnParameters":4523},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4519,"type":"struct strings.slice memory","value":"token"},"id":4579,"name":"Identifier","src":"22616:5:18"}],"id":4580,"name":"Return","src":"22609:12:18"}],"id":4581,"name":"Block","src":"22282:346:18"}],"id":4582,"name":"FunctionDefinition","src":"22169:459:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4598,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4583,"name":"UserDefinedTypeName","src":"23113:5:18"}],"id":4584,"name":"VariableDeclaration","src":"23113:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4598,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4585,"name":"UserDefinedTypeName","src":"23132:5:18"}],"id":4586,"name":"VariableDeclaration","src":"23132:19:18"}],"id":4587,"name":"ParameterList","src":"23112:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":4598,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4588,"name":"UserDefinedTypeName","src":"23176:5:18"}],"id":4589,"name":"VariableDeclaration","src":"23176:18:18"}],"id":4590,"name":"ParameterList","src":"23175:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[4582,4598],"referencedDeclaration":4582,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":4591,"name":"Identifier","src":"23206:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4584,"type":"struct strings.slice memory","value":"self"},"id":4592,"name":"Identifier","src":"23213:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4586,"type":"struct strings.slice memory","value":"needle"},"id":4593,"name":"Identifier","src":"23219:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4589,"type":"struct strings.slice memory","value":"token"},"id":4594,"name":"Identifier","src":"23227:5:18"}],"id":4595,"name":"FunctionCall","src":"23206:27:18"}],"id":4596,"name":"ExpressionStatement","src":"23206:27:18"}],"id":4597,"name":"Block","src":"23196:44:18"}],"id":4598,"name":"FunctionDefinition","src":"23097:143:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4599,"name":"UserDefinedTypeName","src":"23524:5:18"}],"id":4600,"name":"VariableDeclaration","src":"23524:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4601,"name":"UserDefinedTypeName","src":"23543:5:18"}],"id":4602,"name":"VariableDeclaration","src":"23543:19:18"}],"id":4603,"name":"ParameterList","src":"23523:40:18"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":4657,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4604,"name":"ElementaryTypeName","src":"23587:4:18"}],"id":4605,"name":"VariableDeclaration","src":"23587:8:18"}],"id":4606,"name":"ParameterList","src":"23586:10:18"},{"children":[{"attributes":{"assignments":[4608]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4656,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4607,"name":"ElementaryTypeName","src":"23607:4:18"}],"id":4608,"name":"VariableDeclaration","src":"23607:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4228,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4609,"name":"Identifier","src":"23618:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4610,"name":"Identifier","src":"23626:4:18"}],"id":4611,"name":"MemberAccess","src":"23626:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4612,"name":"Identifier","src":"23637:4:18"}],"id":4613,"name":"MemberAccess","src":"23637:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4614,"name":"Identifier","src":"23648:6:18"}],"id":4615,"name":"MemberAccess","src":"23648:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4616,"name":"Identifier","src":"23661:6:18"}],"id":4617,"name":"MemberAccess","src":"23661:11:18"}],"id":4618,"name":"FunctionCall","src":"23618:55:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4619,"name":"Identifier","src":"23676:6:18"}],"id":4620,"name":"MemberAccess","src":"23676:11:18"}],"id":4621,"name":"BinaryOperation","src":"23618:69:18"}],"id":4622,"name":"VariableDeclarationStatement","src":"23607:80:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4608,"type":"uint256","value":"ptr"},"id":4623,"name":"Identifier","src":"23704:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4624,"name":"Identifier","src":"23711:4:18"}],"id":4625,"name":"MemberAccess","src":"23711:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4626,"name":"Identifier","src":"23723:4:18"}],"id":4627,"name":"MemberAccess","src":"23723:9:18"}],"id":4628,"name":"BinaryOperation","src":"23711:21:18"}],"id":4629,"name":"BinaryOperation","src":"23704:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4605,"type":"uint256","value":"cnt"},"id":4630,"name":"Identifier","src":"23748:3:18"}],"id":4631,"name":"UnaryOperation","src":"23748:5:18"}],"id":4632,"name":"ExpressionStatement","src":"23748:5:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4608,"type":"uint256","value":"ptr"},"id":4633,"name":"Identifier","src":"23767:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4228,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4634,"name":"Identifier","src":"23773:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4635,"name":"Identifier","src":"23781:4:18"}],"id":4636,"name":"MemberAccess","src":"23781:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4608,"type":"uint256","value":"ptr"},"id":4637,"name":"Identifier","src":"23794:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4638,"name":"Identifier","src":"23800:4:18"}],"id":4639,"name":"MemberAccess","src":"23800:9:18"}],"id":4640,"name":"BinaryOperation","src":"23794:15:18"}],"id":4641,"name":"TupleExpression","src":"23793:17:18"}],"id":4642,"name":"BinaryOperation","src":"23781:29:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4608,"type":"uint256","value":"ptr"},"id":4643,"name":"Identifier","src":"23812:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4644,"name":"Identifier","src":"23817:6:18"}],"id":4645,"name":"MemberAccess","src":"23817:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4646,"name":"Identifier","src":"23830:6:18"}],"id":4647,"name":"MemberAccess","src":"23830:11:18"}],"id":4648,"name":"FunctionCall","src":"23773:69:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4649,"name":"Identifier","src":"23845:6:18"}],"id":4650,"name":"MemberAccess","src":"23845:11:18"}],"id":4651,"name":"BinaryOperation","src":"23773:83:18"}],"id":4652,"name":"Assignment","src":"23767:89:18"}],"id":4653,"name":"ExpressionStatement","src":"23767:89:18"}],"id":4654,"name":"Block","src":"23734:133:18"}],"id":4655,"name":"WhileStatement","src":"23697:170:18"}],"id":4656,"name":"Block","src":"23597:276:18"}],"id":4657,"name":"FunctionDefinition","src":"23509:364:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4681,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4658,"name":"UserDefinedTypeName","src":"24130:5:18"}],"id":4659,"name":"VariableDeclaration","src":"24130:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4681,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4660,"name":"UserDefinedTypeName","src":"24149:5:18"}],"id":4661,"name":"VariableDeclaration","src":"24149:19:18"}],"id":4662,"name":"ParameterList","src":"24129:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4663,"name":"ElementaryTypeName","src":"24193:4:18"}],"id":4664,"name":"VariableDeclaration","src":"24193:4:18"}],"id":4665,"name":"ParameterList","src":"24192:6:18"},{"children":[{"attributes":{"functionReturnParameters":4665},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4666,"name":"Identifier","src":"24216:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4659,"type":"struct strings.slice memory","value":"self"},"id":4667,"name":"Identifier","src":"24225:4:18"}],"id":4668,"name":"MemberAccess","src":"24225:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4659,"type":"struct strings.slice memory","value":"self"},"id":4669,"name":"Identifier","src":"24236:4:18"}],"id":4670,"name":"MemberAccess","src":"24236:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4661,"type":"struct strings.slice memory","value":"needle"},"id":4671,"name":"Identifier","src":"24247:6:18"}],"id":4672,"name":"MemberAccess","src":"24247:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4661,"type":"struct strings.slice memory","value":"needle"},"id":4673,"name":"Identifier","src":"24260:6:18"}],"id":4674,"name":"MemberAccess","src":"24260:11:18"}],"id":4675,"name":"FunctionCall","src":"24216:56:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4659,"type":"struct strings.slice memory","value":"self"},"id":4676,"name":"Identifier","src":"24276:4:18"}],"id":4677,"name":"MemberAccess","src":"24276:9:18"}],"id":4678,"name":"BinaryOperation","src":"24216:69:18"}],"id":4679,"name":"Return","src":"24209:76:18"}],"id":4680,"name":"Block","src":"24199:93:18"}],"id":4681,"name":"FunctionDefinition","src":"24112:180:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4727,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4682,"name":"UserDefinedTypeName","src":"24595:5:18"}],"id":4683,"name":"VariableDeclaration","src":"24595:17:18"},{"attributes":{"constant":false,"name":"other","scope":4727,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4684,"name":"UserDefinedTypeName","src":"24614:5:18"}],"id":4685,"name":"VariableDeclaration","src":"24614:18:18"}],"id":4686,"name":"ParameterList","src":"24594:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4727,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4687,"name":"ElementaryTypeName","src":"24657:6:18"}],"id":4688,"name":"VariableDeclaration","src":"24657:13:18"}],"id":4689,"name":"ParameterList","src":"24656:15:18"},{"children":[{"attributes":{"assignments":[4691]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4726,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4690,"name":"ElementaryTypeName","src":"24682:6:18"}],"id":4691,"name":"VariableDeclaration","src":"24682:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":4692,"name":"ElementaryTypeName","src":"24706:6:18"}],"id":4693,"name":"NewExpression","src":"24702:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4683,"type":"struct strings.slice memory","value":"self"},"id":4694,"name":"Identifier","src":"24713:4:18"}],"id":4695,"name":"MemberAccess","src":"24713:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4685,"type":"struct strings.slice memory","value":"other"},"id":4696,"name":"Identifier","src":"24725:5:18"}],"id":4697,"name":"MemberAccess","src":"24725:10:18"}],"id":4698,"name":"BinaryOperation","src":"24713:22:18"}],"id":4699,"name":"FunctionCall","src":"24702:34:18"}],"id":4700,"name":"VariableDeclarationStatement","src":"24682:54:18"},{"attributes":{"assignments":[4702],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":4726,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4701,"name":"ElementaryTypeName","src":"24746:4:18"}],"id":4702,"name":"VariableDeclaration","src":"24746:11:18"}],"id":4703,"name":"VariableDeclarationStatement","src":"24746:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":4702,"isOffset":false,"isSlot":false,"src":"24778:6:18","valueSize":1}},{"ret":{"declaration":4691,"isOffset":false,"isSlot":false,"src":"24792:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":4704,"name":"InlineAssembly","src":"24767:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4705,"name":"Identifier","src":"24811:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4702,"type":"uint256","value":"retptr"},"id":4706,"name":"Identifier","src":"24818:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4683,"type":"struct strings.slice memory","value":"self"},"id":4707,"name":"Identifier","src":"24826:4:18"}],"id":4708,"name":"MemberAccess","src":"24826:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4683,"type":"struct strings.slice memory","value":"self"},"id":4709,"name":"Identifier","src":"24837:4:18"}],"id":4710,"name":"MemberAccess","src":"24837:9:18"}],"id":4711,"name":"FunctionCall","src":"24811:36:18"}],"id":4712,"name":"ExpressionStatement","src":"24811:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4713,"name":"Identifier","src":"24857:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4702,"type":"uint256","value":"retptr"},"id":4714,"name":"Identifier","src":"24864:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4683,"type":"struct strings.slice memory","value":"self"},"id":4715,"name":"Identifier","src":"24873:4:18"}],"id":4716,"name":"MemberAccess","src":"24873:9:18"}],"id":4717,"name":"BinaryOperation","src":"24864:18:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4685,"type":"struct strings.slice memory","value":"other"},"id":4718,"name":"Identifier","src":"24884:5:18"}],"id":4719,"name":"MemberAccess","src":"24884:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4685,"type":"struct strings.slice memory","value":"other"},"id":4720,"name":"Identifier","src":"24896:5:18"}],"id":4721,"name":"MemberAccess","src":"24896:10:18"}],"id":4722,"name":"FunctionCall","src":"24857:50:18"}],"id":4723,"name":"ExpressionStatement","src":"24857:50:18"},{"attributes":{"functionReturnParameters":4689},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4691,"type":"string memory","value":"ret"},"id":4724,"name":"Identifier","src":"24924:3:18"}],"id":4725,"name":"Return","src":"24917:10:18"}],"id":4726,"name":"Block","src":"24672:262:18"}],"id":4727,"name":"FunctionDefinition","src":"24579:355:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4842,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4728,"name":"UserDefinedTypeName","src":"25284:5:18"}],"id":4729,"name":"VariableDeclaration","src":"25284:17:18"},{"attributes":{"constant":false,"name":"parts","scope":4842,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4730,"name":"UserDefinedTypeName","src":"25303:5:18"}],"id":4731,"name":"ArrayTypeName","src":"25303:7:18"}],"id":4732,"name":"VariableDeclaration","src":"25303:20:18"}],"id":4733,"name":"ParameterList","src":"25283:41:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4842,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4734,"name":"ElementaryTypeName","src":"25348:6:18"}],"id":4735,"name":"VariableDeclaration","src":"25348:13:18"}],"id":4736,"name":"ParameterList","src":"25347:15:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4737,"name":"Identifier","src":"25377:5:18"}],"id":4738,"name":"MemberAccess","src":"25377:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4739,"name":"Literal","src":"25393:1:18"}],"id":4740,"name":"BinaryOperation","src":"25377:17:18"},{"attributes":{"functionReturnParameters":4736},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4741,"name":"Literal","src":"25415:2:18"}],"id":4742,"name":"Return","src":"25408:9:18"}],"id":4743,"name":"IfStatement","src":"25373:44:18"},{"attributes":{"assignments":[4745]},"children":[{"attributes":{"constant":false,"name":"length","scope":4841,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4744,"name":"ElementaryTypeName","src":"25428:4:18"}],"id":4745,"name":"VariableDeclaration","src":"25428:11:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4729,"type":"struct strings.slice memory","value":"self"},"id":4746,"name":"Identifier","src":"25442:4:18"}],"id":4747,"name":"MemberAccess","src":"25442:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4748,"name":"Identifier","src":"25455:5:18"}],"id":4749,"name":"MemberAccess","src":"25455:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4750,"name":"Literal","src":"25470:1:18"}],"id":4751,"name":"BinaryOperation","src":"25455:16:18"}],"id":4752,"name":"TupleExpression","src":"25454:18:18"}],"id":4753,"name":"BinaryOperation","src":"25442:30:18"}],"id":4754,"name":"VariableDeclarationStatement","src":"25428:44:18"},{"children":[{"attributes":{"assignments":[4756]},"children":[{"attributes":{"constant":false,"name":"i","scope":4774,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4755,"name":"ElementaryTypeName","src":"25487:4:18"}],"id":4756,"name":"VariableDeclaration","src":"25487:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4757,"name":"Literal","src":"25496:1:18"}],"id":4758,"name":"VariableDeclarationStatement","src":"25487:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4756,"type":"uint256","value":"i"},"id":4759,"name":"Identifier","src":"25499:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4760,"name":"Identifier","src":"25503:5:18"}],"id":4761,"name":"MemberAccess","src":"25503:12:18"}],"id":4762,"name":"BinaryOperation","src":"25499:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4756,"type":"uint256","value":"i"},"id":4763,"name":"Identifier","src":"25517:1:18"}],"id":4764,"name":"UnaryOperation","src":"25517:3:18"}],"id":4765,"name":"ExpressionStatement","src":"25517:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4745,"type":"uint256","value":"length"},"id":4766,"name":"Identifier","src":"25536:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4767,"name":"Identifier","src":"25546:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4756,"type":"uint256","value":"i"},"id":4768,"name":"Identifier","src":"25552:1:18"}],"id":4769,"name":"IndexAccess","src":"25546:8:18"}],"id":4770,"name":"MemberAccess","src":"25546:13:18"}],"id":4771,"name":"Assignment","src":"25536:23:18"}],"id":4772,"name":"ExpressionStatement","src":"25536:23:18"}],"id":4773,"name":"Block","src":"25522:48:18"}],"id":4774,"name":"ForStatement","src":"25482:88:18"},{"attributes":{"assignments":[4776]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4841,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4775,"name":"ElementaryTypeName","src":"25580:6:18"}],"id":4776,"name":"VariableDeclaration","src":"25580:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":4777,"name":"ElementaryTypeName","src":"25604:6:18"}],"id":4778,"name":"NewExpression","src":"25600:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4745,"type":"uint256","value":"length"},"id":4779,"name":"Identifier","src":"25611:6:18"}],"id":4780,"name":"FunctionCall","src":"25600:18:18"}],"id":4781,"name":"VariableDeclarationStatement","src":"25580:38:18"},{"attributes":{"assignments":[4783],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":4841,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4782,"name":"ElementaryTypeName","src":"25628:4:18"}],"id":4783,"name":"VariableDeclaration","src":"25628:11:18"}],"id":4784,"name":"VariableDeclarationStatement","src":"25628:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":4783,"isOffset":false,"isSlot":false,"src":"25660:6:18","valueSize":1}},{"ret":{"declaration":4776,"isOffset":false,"isSlot":false,"src":"25674:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":4785,"name":"InlineAssembly","src":"25649:35:18"},{"children":[{"attributes":{"assignments":[4787]},"children":[{"attributes":{"constant":false,"name":"i","scope":4838,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4786,"name":"ElementaryTypeName","src":"25699:4:18"}],"id":4787,"name":"VariableDeclaration","src":"25699:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4788,"name":"Literal","src":"25708:1:18"}],"id":4789,"name":"VariableDeclarationStatement","src":"25699:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4790,"name":"Identifier","src":"25711:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4791,"name":"Identifier","src":"25715:5:18"}],"id":4792,"name":"MemberAccess","src":"25715:12:18"}],"id":4793,"name":"BinaryOperation","src":"25711:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4794,"name":"Identifier","src":"25729:1:18"}],"id":4795,"name":"UnaryOperation","src":"25729:3:18"}],"id":4796,"name":"ExpressionStatement","src":"25729:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4797,"name":"Identifier","src":"25748:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"uint256","value":"retptr"},"id":4798,"name":"Identifier","src":"25755:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4799,"name":"Identifier","src":"25763:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4800,"name":"Identifier","src":"25769:1:18"}],"id":4801,"name":"IndexAccess","src":"25763:8:18"}],"id":4802,"name":"MemberAccess","src":"25763:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4803,"name":"Identifier","src":"25778:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4804,"name":"Identifier","src":"25784:1:18"}],"id":4805,"name":"IndexAccess","src":"25778:8:18"}],"id":4806,"name":"MemberAccess","src":"25778:13:18"}],"id":4807,"name":"FunctionCall","src":"25748:44:18"}],"id":4808,"name":"ExpressionStatement","src":"25748:44:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"uint256","value":"retptr"},"id":4809,"name":"Identifier","src":"25806:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4810,"name":"Identifier","src":"25816:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4811,"name":"Identifier","src":"25822:1:18"}],"id":4812,"name":"IndexAccess","src":"25816:8:18"}],"id":4813,"name":"MemberAccess","src":"25816:13:18"}],"id":4814,"name":"Assignment","src":"25806:23:18"}],"id":4815,"name":"ExpressionStatement","src":"25806:23:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4816,"name":"Identifier","src":"25847:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4817,"name":"Identifier","src":"25851:5:18"}],"id":4818,"name":"MemberAccess","src":"25851:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4819,"name":"Literal","src":"25866:1:18"}],"id":4820,"name":"BinaryOperation","src":"25851:16:18"}],"id":4821,"name":"BinaryOperation","src":"25847:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4822,"name":"Identifier","src":"25887:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"uint256","value":"retptr"},"id":4823,"name":"Identifier","src":"25894:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4729,"type":"struct strings.slice memory","value":"self"},"id":4824,"name":"Identifier","src":"25902:4:18"}],"id":4825,"name":"MemberAccess","src":"25902:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4729,"type":"struct strings.slice memory","value":"self"},"id":4826,"name":"Identifier","src":"25913:4:18"}],"id":4827,"name":"MemberAccess","src":"25913:9:18"}],"id":4828,"name":"FunctionCall","src":"25887:36:18"}],"id":4829,"name":"ExpressionStatement","src":"25887:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"uint256","value":"retptr"},"id":4830,"name":"Identifier","src":"25941:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4729,"type":"struct strings.slice memory","value":"self"},"id":4831,"name":"Identifier","src":"25951:4:18"}],"id":4832,"name":"MemberAccess","src":"25951:9:18"}],"id":4833,"name":"Assignment","src":"25941:19:18"}],"id":4834,"name":"ExpressionStatement","src":"25941:19:18"}],"id":4835,"name":"Block","src":"25869:106:18"}],"id":4836,"name":"IfStatement","src":"25843:132:18"}],"id":4837,"name":"Block","src":"25734:251:18"}],"id":4838,"name":"ForStatement","src":"25694:291:18"},{"attributes":{"functionReturnParameters":4736},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4776,"type":"string memory","value":"ret"},"id":4839,"name":"Identifier","src":"26002:3:18"}],"id":4840,"name":"Return","src":"25995:10:18"}],"id":4841,"name":"Block","src":"25363:649:18"}],"id":4842,"name":"FunctionDefinition","src":"25270:742:18"}],"id":4843,"name":"ContractDefinition","src":"2599:23415:18"}],"id":4844,"name":"SourceUnit","src":"2574:23441:18"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[4954]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4845,"name":"PragmaDirective","src":"770:24:19"},{"attributes":{"SourceUnit":3138,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":4955,"symbolAliases":[null],"unitAlias":""},"id":4846,"name":"ImportDirective","src":"796:35:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[4954],"name":"BytesUtils","scope":4955},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3137,"type":"library SafeMath"},"id":4847,"name":"UserDefinedTypeName","src":"942:8:19"},{"attributes":{"name":"uint256","type":"uint256"},"id":4848,"name":"ElementaryTypeName","src":"955:7:19"}],"id":4849,"name":"UsingForDirective","src":"936:27:19"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":4954,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4885,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4850,"name":"ElementaryTypeName","src":"1106:5:19"}],"id":4851,"name":"VariableDeclaration","src":"1106:17:19"},{"attributes":{"constant":false,"name":"_from","scope":4885,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4852,"name":"ElementaryTypeName","src":"1125:7:19"}],"id":4853,"name":"VariableDeclaration","src":"1125:13:19"}],"id":4854,"name":"ParameterList","src":"1105:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":4885,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4855,"name":"ElementaryTypeName","src":"1163:7:19"}],"id":4856,"name":"VariableDeclaration","src":"1163:7:19"}],"id":4857,"name":"ParameterList","src":"1162:9:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4858,"name":"Identifier","src":"1182:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4851,"type":"bytes memory","value":"_bts"},"id":4859,"name":"Identifier","src":"1190:4:19"}],"id":4860,"name":"MemberAccess","src":"1190:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"uint256","value":"_from"},"id":4861,"name":"Identifier","src":"1205:5:19"}],"id":4862,"name":"MemberAccess","src":"1205:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":4863,"name":"Literal","src":"1215:2:19"}],"id":4864,"name":"FunctionCall","src":"1205:13:19"}],"id":4865,"name":"BinaryOperation","src":"1190:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4866,"name":"Literal","src":"1220:22:19"}],"id":4867,"name":"FunctionCall","src":"1182:61:19"}],"id":4868,"name":"ExpressionStatement","src":"1182:61:19"},{"attributes":{"assignments":[4870],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":4884,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":4869,"name":"ElementaryTypeName","src":"1254:7:19"}],"id":4870,"name":"VariableDeclaration","src":"1254:24:19"}],"id":4871,"name":"VariableDeclarationStatement","src":"1254:24:19"},{"attributes":{"assignments":[4873]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4884,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4872,"name":"ElementaryTypeName","src":"1288:7:19"}],"id":4873,"name":"VariableDeclaration","src":"1288:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"uint256","value":"_from"},"id":4874,"name":"Identifier","src":"1308:5:19"}],"id":4875,"name":"MemberAccess","src":"1308:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4876,"name":"Literal","src":"1318:2:19"}],"id":4877,"name":"FunctionCall","src":"1308:13:19"}],"id":4878,"name":"VariableDeclarationStatement","src":"1288:33:19"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":4870,"isOffset":false,"isSlot":false,"src":"1396:16:19","valueSize":1}},{"_bts":{"declaration":4851,"isOffset":false,"isSlot":false,"src":"1426:4:19","valueSize":1}},{"startByte":{"declaration":4873,"isOffset":false,"isSlot":false,"src":"1432:9:19","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":4879,"name":"InlineAssembly","src":"1373:80:19"},{"attributes":{"functionReturnParameters":4857},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4880,"name":"ElementaryTypeNameExpression","src":"1470:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"bytes20","value":"convertedAddress"},"id":4881,"name":"Identifier","src":"1478:16:19"}],"id":4882,"name":"FunctionCall","src":"1470:25:19"}],"id":4883,"name":"Return","src":"1463:32:19"}],"id":4884,"name":"Block","src":"1172:330:19"}],"id":4885,"name":"FunctionDefinition","src":"1081:421:19"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":4954,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4919,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4886,"name":"ElementaryTypeName","src":"1651:5:19"}],"id":4887,"name":"VariableDeclaration","src":"1651:17:19"},{"attributes":{"constant":false,"name":"_from","scope":4919,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4888,"name":"ElementaryTypeName","src":"1670:7:19"}],"id":4889,"name":"VariableDeclaration","src":"1670:13:19"}],"id":4890,"name":"ParameterList","src":"1650:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":4919,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4891,"name":"ElementaryTypeName","src":"1708:6:19"}],"id":4892,"name":"VariableDeclaration","src":"1708:6:19"}],"id":4893,"name":"ParameterList","src":"1707:8:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4894,"name":"Identifier","src":"1726:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4887,"type":"bytes memory","value":"_bts"},"id":4895,"name":"Identifier","src":"1734:4:19"}],"id":4896,"name":"MemberAccess","src":"1734:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"uint256","value":"_from"},"id":4897,"name":"Identifier","src":"1749:5:19"}],"id":4898,"name":"MemberAccess","src":"1749:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4899,"name":"Literal","src":"1759:1:19"}],"id":4900,"name":"FunctionCall","src":"1749:12:19"}],"id":4901,"name":"BinaryOperation","src":"1734:27:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4902,"name":"Literal","src":"1763:22:19"}],"id":4903,"name":"FunctionCall","src":"1726:60:19"}],"id":4904,"name":"ExpressionStatement","src":"1726:60:19"},{"attributes":{"assignments":[4906],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":4918,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4905,"name":"ElementaryTypeName","src":"1797:6:19"}],"id":4906,"name":"VariableDeclaration","src":"1797:19:19"}],"id":4907,"name":"VariableDeclarationStatement","src":"1797:19:19"},{"attributes":{"assignments":[4909]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4908,"name":"ElementaryTypeName","src":"1826:7:19"}],"id":4909,"name":"VariableDeclaration","src":"1826:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"uint256","value":"_from"},"id":4910,"name":"Identifier","src":"1846:5:19"}],"id":4911,"name":"MemberAccess","src":"1846:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4912,"name":"Literal","src":"1856:2:19"}],"id":4913,"name":"FunctionCall","src":"1846:13:19"}],"id":4914,"name":"VariableDeclarationStatement","src":"1826:33:19"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":4906,"isOffset":false,"isSlot":false,"src":"1934:12:19","valueSize":1}},{"_bts":{"declaration":4887,"isOffset":false,"isSlot":false,"src":"1960:4:19","valueSize":1}},{"startByte":{"declaration":4909,"isOffset":false,"isSlot":false,"src":"1966:9:19","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":4915,"name":"InlineAssembly","src":"1911:76:19"},{"attributes":{"functionReturnParameters":4893},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4906,"type":"bytes4","value":"slicedBytes4"},"id":4916,"name":"Identifier","src":"2004:12:19"}],"id":4917,"name":"Return","src":"1997:19:19"}],"id":4918,"name":"Block","src":"1716:307:19"}],"id":4919,"name":"FunctionDefinition","src":"1627:396:19"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":4954,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4953,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4920,"name":"ElementaryTypeName","src":"2398:5:19"}],"id":4921,"name":"VariableDeclaration","src":"2398:17:19"},{"attributes":{"constant":false,"name":"_from","scope":4953,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4922,"name":"ElementaryTypeName","src":"2417:7:19"}],"id":4923,"name":"VariableDeclaration","src":"2417:13:19"}],"id":4924,"name":"ParameterList","src":"2397:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":4953,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4925,"name":"ElementaryTypeName","src":"2455:7:19"}],"id":4926,"name":"VariableDeclaration","src":"2455:7:19"}],"id":4927,"name":"ParameterList","src":"2454:9:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4928,"name":"Identifier","src":"2474:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4921,"type":"bytes memory","value":"_bts"},"id":4929,"name":"Identifier","src":"2482:4:19"}],"id":4930,"name":"MemberAccess","src":"2482:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4923,"type":"uint256","value":"_from"},"id":4931,"name":"Identifier","src":"2497:5:19"}],"id":4932,"name":"MemberAccess","src":"2497:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4933,"name":"Literal","src":"2507:2:19"}],"id":4934,"name":"FunctionCall","src":"2497:13:19"}],"id":4935,"name":"BinaryOperation","src":"2482:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4936,"name":"Literal","src":"2512:22:19"}],"id":4937,"name":"FunctionCall","src":"2474:61:19"}],"id":4938,"name":"ExpressionStatement","src":"2474:61:19"},{"attributes":{"assignments":[4940],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":4952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4939,"name":"ElementaryTypeName","src":"2546:7:19"}],"id":4940,"name":"VariableDeclaration","src":"2546:24:19"}],"id":4941,"name":"VariableDeclarationStatement","src":"2546:24:19"},{"attributes":{"assignments":[4943]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4942,"name":"ElementaryTypeName","src":"2580:7:19"}],"id":4943,"name":"VariableDeclaration","src":"2580:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4923,"type":"uint256","value":"_from"},"id":4944,"name":"Identifier","src":"2600:5:19"}],"id":4945,"name":"MemberAccess","src":"2600:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4946,"name":"Literal","src":"2610:2:19"}],"id":4947,"name":"FunctionCall","src":"2600:13:19"}],"id":4948,"name":"VariableDeclarationStatement","src":"2580:33:19"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":4940,"isOffset":false,"isSlot":false,"src":"2688:16:19","valueSize":1}},{"_bts":{"declaration":4921,"isOffset":false,"isSlot":false,"src":"2718:4:19","valueSize":1}},{"startByte":{"declaration":4943,"isOffset":false,"isSlot":false,"src":"2724:9:19","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":4949,"name":"InlineAssembly","src":"2665:80:19"},{"attributes":{"functionReturnParameters":4927},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4940,"type":"uint256","value":"convertedUint256"},"id":4950,"name":"Identifier","src":"2762:16:19"}],"id":4951,"name":"Return","src":"2755:23:19"}],"id":4952,"name":"Block","src":"2464:321:19"}],"id":4953,"name":"FunctionDefinition","src":"2373:412:19"}],"id":4954,"name":"ContractDefinition","src":"911:1876:19"}],"id":4955,"name":"SourceUnit","src":"770:2018:19"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[5050]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4956,"name":"PragmaDirective","src":"772:24:20"},{"attributes":{"SourceUnit":6232,"absolutePath":"controller.sol","file":"../controller.sol","scope":5051,"symbolAliases":[null],"unitAlias":""},"id":4957,"name":"ImportDirective","src":"798:27:20"},{"attributes":{"SourceUnit":202,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":5051,"symbolAliases":[null],"unitAlias":""},"id":4958,"name":"ImportDirective","src":"826:29:20"},{"attributes":{"contractDependencies":[201],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[5050,201],"name":"Controllable","scope":5051},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":201,"type":"contract ENSResolvable"},"id":4959,"name":"UserDefinedTypeName","src":"980:13:20"}],"id":4960,"name":"InheritanceSpecifier","src":"980:13:20"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":5050,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4961,"name":"ElementaryTypeName","src":"1070:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":4962,"name":"Literal","src":"1122:66:20"}],"id":4963,"name":"VariableDeclaration","src":"1070:118:20"},{"attributes":{"constant":false,"name":"_controllerNode","scope":5050,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4964,"name":"ElementaryTypeName","src":"1272:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4963,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":4965,"name":"Identifier","src":"1306:24:20"}],"id":4966,"name":"VariableDeclaration","src":"1272:58:20"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":5050,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":4983,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4967,"name":"ElementaryTypeName","src":"1571:7:20"}],"id":4968,"name":"VariableDeclaration","src":"1571:24:20"}],"id":4969,"name":"ParameterList","src":"1570:26:20"},{"attributes":{"parameters":[null]},"children":[],"id":4970,"name":"ParameterList","src":"1606:0:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4968,"type":"bytes32","value":"_controllerNode_"},"id":4971,"name":"Identifier","src":"1665:16:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4972,"name":"ElementaryTypeNameExpression","src":"1685:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4973,"name":"Literal","src":"1693:1:20"}],"id":4974,"name":"FunctionCall","src":"1685:10:20"}],"id":4975,"name":"BinaryOperation","src":"1665:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"bytes32","value":"_controllerNode"},"id":4976,"name":"Identifier","src":"1711:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4968,"type":"bytes32","value":"_controllerNode_"},"id":4977,"name":"Identifier","src":"1729:16:20"}],"id":4978,"name":"Assignment","src":"1711:34:20"}],"id":4979,"name":"ExpressionStatement","src":"1711:34:20"}],"id":4980,"name":"Block","src":"1697:59:20"}],"id":4981,"name":"IfStatement","src":"1661:95:20"}],"id":4982,"name":"Block","src":"1606:156:20"}],"id":4983,"name":"FunctionDefinition","src":"1559:203:20"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4984,"name":"ParameterList","src":"1849:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4985,"name":"Identifier","src":"1862:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5032,"type":"function (address) view returns (bool)","value":"_isController"},"id":4986,"name":"Identifier","src":"1870:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":4987,"name":"Identifier","src":"1884:3:20"}],"id":4988,"name":"MemberAccess","src":"1884:10:20"}],"id":4989,"name":"FunctionCall","src":"1870:25:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":4990,"name":"Literal","src":"1897:28:20"}],"id":4991,"name":"FunctionCall","src":"1862:64:20"}],"id":4992,"name":"ExpressionStatement","src":"1862:64:20"},{"id":4993,"name":"PlaceholderStatement","src":"1936:1:20"}],"id":4994,"name":"Block","src":"1852:92:20"}],"id":4995,"name":"ModifierDefinition","src":"1826:118:20"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4996,"name":"ParameterList","src":"2022:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4997,"name":"Identifier","src":"2035:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":4998,"name":"Identifier","src":"2043:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":4999,"name":"Identifier","src":"2052:3:20"}],"id":5000,"name":"MemberAccess","src":"2052:10:20"}],"id":5001,"name":"FunctionCall","src":"2043:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":5002,"name":"Literal","src":"2065:24:20"}],"id":5003,"name":"FunctionCall","src":"2035:55:20"}],"id":5004,"name":"ExpressionStatement","src":"2035:55:20"},{"id":5005,"name":"PlaceholderStatement","src":"2100:1:20"}],"id":5006,"name":"Block","src":"2025:83:20"}],"id":5007,"name":"ModifierDefinition","src":"2004:104:20"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":5050,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5008,"name":"ParameterList","src":"2192:2:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":5015,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5009,"name":"ElementaryTypeName","src":"2216:7:20"}],"id":5010,"name":"VariableDeclaration","src":"2216:7:20"}],"id":5011,"name":"ParameterList","src":"2215:9:20"},{"children":[{"attributes":{"functionReturnParameters":5011},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"bytes32","value":"_controllerNode"},"id":5012,"name":"Identifier","src":"2242:15:20"}],"id":5013,"name":"Return","src":"2235:22:20"}],"id":5014,"name":"Block","src":"2225:39:20"}],"id":5015,"name":"FunctionDefinition","src":"2169:95:20"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":5050,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5032,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5016,"name":"ElementaryTypeName","src":"2355:7:20"}],"id":5017,"name":"VariableDeclaration","src":"2355:16:20"}],"id":5018,"name":"ParameterList","src":"2354:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":5032,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5019,"name":"ElementaryTypeName","src":"2396:4:20"}],"id":5020,"name":"VariableDeclaration","src":"2396:4:20"}],"id":5021,"name":"ParameterList","src":"2395:6:20"},{"children":[{"attributes":{"functionReturnParameters":5021},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":5788,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5796,"type":"type(contract IController)","value":"IController"},"id":5022,"name":"Identifier","src":"2419:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":5023,"name":"Identifier","src":"2431:11:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"bytes32","value":"_controllerNode"},"id":5024,"name":"Identifier","src":"2443:15:20"}],"id":5025,"name":"FunctionCall","src":"2431:28:20"}],"id":5026,"name":"FunctionCall","src":"2419:41:20"}],"id":5027,"name":"MemberAccess","src":"2419:54:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5017,"type":"address","value":"_account"},"id":5028,"name":"Identifier","src":"2474:8:20"}],"id":5029,"name":"FunctionCall","src":"2419:64:20"}],"id":5030,"name":"Return","src":"2412:71:20"}],"id":5031,"name":"Block","src":"2402:88:20"}],"id":5032,"name":"FunctionDefinition","src":"2332:158:20"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":5050,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5049,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5033,"name":"ElementaryTypeName","src":"2572:7:20"}],"id":5034,"name":"VariableDeclaration","src":"2572:16:20"}],"id":5035,"name":"ParameterList","src":"2571:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":5049,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5036,"name":"ElementaryTypeName","src":"2613:4:20"}],"id":5037,"name":"VariableDeclaration","src":"2613:4:20"}],"id":5038,"name":"ParameterList","src":"2612:6:20"},{"children":[{"attributes":{"functionReturnParameters":5038},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":5795,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5796,"type":"type(contract IController)","value":"IController"},"id":5039,"name":"Identifier","src":"2636:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":5040,"name":"Identifier","src":"2648:11:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"bytes32","value":"_controllerNode"},"id":5041,"name":"Identifier","src":"2660:15:20"}],"id":5042,"name":"FunctionCall","src":"2648:28:20"}],"id":5043,"name":"FunctionCall","src":"2636:41:20"}],"id":5044,"name":"MemberAccess","src":"2636:49:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5034,"type":"address","value":"_account"},"id":5045,"name":"Identifier","src":"2686:8:20"}],"id":5046,"name":"FunctionCall","src":"2636:59:20"}],"id":5047,"name":"Return","src":"2629:66:20"}],"id":5048,"name":"Block","src":"2619:83:20"}],"id":5049,"name":"FunctionDefinition","src":"2554:148:20"}],"id":5050,"name":"ContractDefinition","src":"955:1749:20"}],"id":5051,"name":"SourceUnit","src":"772:1933:20"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[201]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":158,"name":"PragmaDirective","src":"773:24:21"},{"attributes":{"SourceUnit":556,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":202,"symbolAliases":[null],"unitAlias":""},"id":159,"name":"ImportDirective","src":"799:34:21"},{"attributes":{"SourceUnit":730,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":202,"symbolAliases":[null],"unitAlias":""},"id":160,"name":"ImportDirective","src":"834:45:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[201],"name":"ENSResolvable","scope":202},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":201,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":161,"name":"ElementaryTypeName","src":"1109:7:21"}],"id":162,"name":"VariableDeclaration","src":"1109:28:21"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":201,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":163,"name":"ElementaryTypeName","src":"1205:7:21"}],"id":164,"name":"VariableDeclaration","src":"1205:16:21"}],"id":165,"name":"ParameterList","src":"1204:18:21"},{"attributes":{"parameters":[null]},"children":[],"id":166,"name":"ParameterList","src":"1232:0:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address","value":"_ensRegistry"},"id":167,"name":"Identifier","src":"1242:12:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"address","value":"_ensReg_"},"id":168,"name":"Identifier","src":"1257:8:21"}],"id":169,"name":"Assignment","src":"1242:23:21"}],"id":170,"name":"ExpressionStatement","src":"1242:23:21"}],"id":171,"name":"Block","src":"1232:40:21"}],"id":172,"name":"FunctionDefinition","src":"1193:79:21"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":201,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":173,"name":"ParameterList","src":"1384:2:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":180,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":174,"name":"ElementaryTypeName","src":"1410:7:21"}],"id":175,"name":"VariableDeclaration","src":"1410:7:21"}],"id":176,"name":"ParameterList","src":"1409:9:21"},{"children":[{"attributes":{"functionReturnParameters":176},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address","value":"_ensRegistry"},"id":177,"name":"Identifier","src":"1436:12:21"}],"id":178,"name":"Return","src":"1429:19:21"}],"id":179,"name":"Block","src":"1419:36:21"}],"id":180,"name":"FunctionDefinition","src":"1364:91:21"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":201,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":200,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":181,"name":"ElementaryTypeName","src":"1652:7:21"}],"id":182,"name":"VariableDeclaration","src":"1652:13:21"}],"id":183,"name":"ParameterList","src":"1651:15:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":200,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":184,"name":"ElementaryTypeName","src":"1690:7:21"}],"id":185,"name":"VariableDeclaration","src":"1690:7:21"}],"id":186,"name":"ParameterList","src":"1689:9:21"},{"children":[{"attributes":{"functionReturnParameters":186},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":1935,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":729,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":187,"name":"Identifier","src":"1716:14:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":531,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"type(contract ENS)","value":"ENS"},"id":188,"name":"Identifier","src":"1731:3:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address","value":"_ensRegistry"},"id":189,"name":"Identifier","src":"1735:12:21"}],"id":190,"name":"FunctionCall","src":"1731:17:21"}],"id":191,"name":"MemberAccess","src":"1731:26:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":182,"type":"bytes32","value":"_node"},"id":192,"name":"Identifier","src":"1758:5:21"}],"id":193,"name":"FunctionCall","src":"1731:33:21"}],"id":194,"name":"FunctionCall","src":"1716:49:21"}],"id":195,"name":"MemberAccess","src":"1716:54:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":182,"type":"bytes32","value":"_node"},"id":196,"name":"Identifier","src":"1771:5:21"}],"id":197,"name":"FunctionCall","src":"1716:61:21"}],"id":198,"name":"Return","src":"1709:68:21"}],"id":199,"name":"Block","src":"1699:85:21"}],"id":200,"name":"FunctionDefinition","src":"1631:153:21"}],"id":201,"name":"ContractDefinition","src":"1008:778:21"}],"id":202,"name":"SourceUnit","src":"773:1014:21"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[7381]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":7226,"name":"PragmaDirective","src":"767:24:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[7381],"name":"Ownable","scope":7382},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":7232,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7227,"name":"ElementaryTypeName","src":"1199:7:22"}],"id":7228,"name":"VariableDeclaration","src":"1199:13:22"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":7232,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7229,"name":"ElementaryTypeName","src":"1214:7:22"}],"id":7230,"name":"VariableDeclaration","src":"1214:11:22"}],"id":7231,"name":"ParameterList","src":"1198:28:22"}],"id":7232,"name":"EventDefinition","src":"1172:55:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":7236,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7233,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":7234,"name":"VariableDeclaration","src":"1254:15:22"}],"id":7235,"name":"ParameterList","src":"1253:17:22"}],"id":7236,"name":"EventDefinition","src":"1232:39:22"},{"attributes":{"constant":false,"name":"_owner","scope":7381,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7237,"name":"ElementaryTypeName","src":"1277:15:22"}],"id":7238,"name":"VariableDeclaration","src":"1277:30:22"},{"attributes":{"constant":false,"name":"_isTransferable","scope":7381,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7239,"name":"ElementaryTypeName","src":"1313:4:22"}],"id":7240,"name":"VariableDeclaration","src":"1313:28:22"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":7381,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":7271,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7241,"name":"ElementaryTypeName","src":"1476:15:22"}],"id":7242,"name":"VariableDeclaration","src":"1476:25:22"},{"attributes":{"constant":false,"name":"_transferable_","scope":7271,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7243,"name":"ElementaryTypeName","src":"1503:4:22"}],"id":7244,"name":"VariableDeclaration","src":"1503:19:22"}],"id":7245,"name":"ParameterList","src":"1475:48:22"},{"attributes":{"parameters":[null]},"children":[],"id":7246,"name":"ParameterList","src":"1533:0:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7247,"name":"Identifier","src":"1543:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7242,"type":"address payable","value":"_account_"},"id":7248,"name":"Identifier","src":"1552:9:22"}],"id":7249,"name":"Assignment","src":"1543:18:22"}],"id":7250,"name":"ExpressionStatement","src":"1543:18:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7251,"name":"Identifier","src":"1571:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7244,"type":"bool","value":"_transferable_"},"id":7252,"name":"Identifier","src":"1589:14:22"}],"id":7253,"name":"Assignment","src":"1571:32:22"}],"id":7254,"name":"ExpressionStatement","src":"1571:32:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7255,"name":"Identifier","src":"1687:15:22"}],"id":7256,"name":"UnaryOperation","src":"1686:16:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7236,"type":"function (address)","value":"LockedOwnership"},"id":7257,"name":"Identifier","src":"1723:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7242,"type":"address payable","value":"_account_"},"id":7258,"name":"Identifier","src":"1739:9:22"}],"id":7259,"name":"FunctionCall","src":"1723:26:22"}],"id":7260,"name":"EmitStatement","src":"1718:31:22"}],"id":7261,"name":"Block","src":"1704:56:22"}],"id":7262,"name":"IfStatement","src":"1682:78:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7232,"type":"function (address,address)","value":"TransferredOwnership"},"id":7263,"name":"Identifier","src":"1774:20:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7264,"name":"ElementaryTypeNameExpression","src":"1795:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7265,"name":"Literal","src":"1803:1:22"}],"id":7266,"name":"FunctionCall","src":"1795:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7242,"type":"address payable","value":"_account_"},"id":7267,"name":"Identifier","src":"1807:9:22"}],"id":7268,"name":"FunctionCall","src":"1774:43:22"}],"id":7269,"name":"EmitStatement","src":"1769:48:22"}],"id":7270,"name":"Block","src":"1533:291:22"}],"id":7271,"name":"FunctionDefinition","src":"1464:360:22"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7272,"name":"ParameterList","src":"1919:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":7273,"name":"Identifier","src":"1932:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7380,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":7274,"name":"Identifier","src":"1940:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":7275,"name":"Identifier","src":"1949:3:22"}],"id":7276,"name":"MemberAccess","src":"1949:10:22"}],"id":7277,"name":"FunctionCall","src":"1940:20:22"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":7278,"name":"Literal","src":"1962:24:22"}],"id":7279,"name":"FunctionCall","src":"1932:55:22"}],"id":7280,"name":"ExpressionStatement","src":"1932:55:22"},{"id":7281,"name":"PlaceholderStatement","src":"1997:1:22"}],"id":7282,"name":"Block","src":"1922:83:22"}],"id":7283,"name":"ModifierDefinition","src":"1901:104:22"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":7381,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":7328,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7284,"name":"ElementaryTypeName","src":"2274:15:22"}],"id":7285,"name":"VariableDeclaration","src":"2274:24:22"},{"attributes":{"constant":false,"name":"_transferable","scope":7328,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7286,"name":"ElementaryTypeName","src":"2300:4:22"}],"id":7287,"name":"VariableDeclaration","src":"2300:18:22"}],"id":7288,"name":"ParameterList","src":"2273:46:22"},{"attributes":{"parameters":[null]},"children":[],"id":7291,"name":"ParameterList","src":"2339:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":7289,"name":"Identifier","src":"2329:9:22"}],"id":7290,"name":"ModifierInvocation","src":"2329:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":7292,"name":"Identifier","src":"2404:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7293,"name":"Identifier","src":"2412:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":7294,"name":"Literal","src":"2429:31:22"}],"id":7295,"name":"FunctionCall","src":"2404:57:22"}],"id":7296,"name":"ExpressionStatement","src":"2404:57:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":7297,"name":"Identifier","src":"2534:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7285,"type":"address payable","value":"_account"},"id":7298,"name":"Identifier","src":"2542:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7299,"name":"ElementaryTypeNameExpression","src":"2554:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7300,"name":"Literal","src":"2562:1:22"}],"id":7301,"name":"FunctionCall","src":"2554:10:22"}],"id":7302,"name":"BinaryOperation","src":"2542:22:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":7303,"name":"Literal","src":"2566:37:22"}],"id":7304,"name":"FunctionCall","src":"2534:70:22"}],"id":7305,"name":"ExpressionStatement","src":"2534:70:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7306,"name":"Identifier","src":"2689:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7287,"type":"bool","value":"_transferable"},"id":7307,"name":"Identifier","src":"2707:13:22"}],"id":7308,"name":"Assignment","src":"2689:31:22"}],"id":7309,"name":"ExpressionStatement","src":"2689:31:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7287,"type":"bool","value":"_transferable"},"id":7310,"name":"Identifier","src":"2804:13:22"}],"id":7311,"name":"UnaryOperation","src":"2803:14:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7236,"type":"function (address)","value":"LockedOwnership"},"id":7312,"name":"Identifier","src":"2838:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7285,"type":"address payable","value":"_account"},"id":7313,"name":"Identifier","src":"2854:8:22"}],"id":7314,"name":"FunctionCall","src":"2838:25:22"}],"id":7315,"name":"EmitStatement","src":"2833:30:22"}],"id":7316,"name":"Block","src":"2819:55:22"}],"id":7317,"name":"IfStatement","src":"2799:75:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7232,"type":"function (address,address)","value":"TransferredOwnership"},"id":7318,"name":"Identifier","src":"2934:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7319,"name":"Identifier","src":"2955:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7285,"type":"address payable","value":"_account"},"id":7320,"name":"Identifier","src":"2963:8:22"}],"id":7321,"name":"FunctionCall","src":"2934:38:22"}],"id":7322,"name":"EmitStatement","src":"2929:43:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7323,"name":"Identifier","src":"3032:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7285,"type":"address payable","value":"_account"},"id":7324,"name":"Identifier","src":"3041:8:22"}],"id":7325,"name":"Assignment","src":"3032:17:22"}],"id":7326,"name":"ExpressionStatement","src":"3032:17:22"}],"id":7327,"name":"Block","src":"2339:717:22"}],"id":7328,"name":"FunctionDefinition","src":"2247:809:22"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":7381,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7329,"name":"ParameterList","src":"3196:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7336,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7330,"name":"ElementaryTypeName","src":"3222:4:22"}],"id":7331,"name":"VariableDeclaration","src":"3222:4:22"}],"id":7332,"name":"ParameterList","src":"3221:6:22"},{"children":[{"attributes":{"functionReturnParameters":7332},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7333,"name":"Identifier","src":"3245:15:22"}],"id":7334,"name":"Return","src":"3238:22:22"}],"id":7335,"name":"Block","src":"3228:39:22"}],"id":7336,"name":"FunctionDefinition","src":"3173:94:22"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":7381,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7337,"name":"ParameterList","src":"3569:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":7340,"name":"ParameterList","src":"3591:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":7338,"name":"Identifier","src":"3581:9:22"}],"id":7339,"name":"ModifierInvocation","src":"3581:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":7341,"name":"Identifier","src":"3656:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7342,"name":"Identifier","src":"3664:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":7343,"name":"Literal","src":"3681:31:22"}],"id":7344,"name":"FunctionCall","src":"3656:57:22"}],"id":7345,"name":"ExpressionStatement","src":"3656:57:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7346,"name":"Identifier","src":"3767:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7347,"name":"ElementaryTypeNameExpression","src":"3776:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7348,"name":"Literal","src":"3784:1:22"}],"id":7349,"name":"FunctionCall","src":"3776:10:22"}],"id":7350,"name":"Assignment","src":"3767:19:22"}],"id":7351,"name":"ExpressionStatement","src":"3767:19:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7232,"type":"function (address,address)","value":"TransferredOwnership"},"id":7352,"name":"Identifier","src":"3802:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7353,"name":"Identifier","src":"3823:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7354,"name":"ElementaryTypeNameExpression","src":"3831:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7355,"name":"Literal","src":"3839:1:22"}],"id":7356,"name":"FunctionCall","src":"3831:10:22"}],"id":7357,"name":"FunctionCall","src":"3802:40:22"}],"id":7358,"name":"EmitStatement","src":"3797:45:22"}],"id":7359,"name":"Block","src":"3591:258:22"}],"id":7360,"name":"FunctionDefinition","src":"3543:306:22"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":7381,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7361,"name":"ParameterList","src":"3946:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7368,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7362,"name":"ElementaryTypeName","src":"3970:15:22"}],"id":7363,"name":"VariableDeclaration","src":"3970:15:22"}],"id":7364,"name":"ParameterList","src":"3969:17:22"},{"children":[{"attributes":{"functionReturnParameters":7364},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7365,"name":"Identifier","src":"4004:6:22"}],"id":7366,"name":"Return","src":"3997:13:22"}],"id":7367,"name":"Block","src":"3987:30:22"}],"id":7368,"name":"FunctionDefinition","src":"3932:85:22"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":7381,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":7380,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7369,"name":"ElementaryTypeName","src":"4141:7:22"}],"id":7370,"name":"VariableDeclaration","src":"4141:16:22"}],"id":7371,"name":"ParameterList","src":"4140:18:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7380,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7372,"name":"ElementaryTypeName","src":"4182:4:22"}],"id":7373,"name":"VariableDeclaration","src":"4182:4:22"}],"id":7374,"name":"ParameterList","src":"4181:6:22"},{"children":[{"attributes":{"functionReturnParameters":7374},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7370,"type":"address","value":"_address"},"id":7375,"name":"Identifier","src":"4205:8:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7376,"name":"Identifier","src":"4217:6:22"}],"id":7377,"name":"BinaryOperation","src":"4205:18:22"}],"id":7378,"name":"Return","src":"4198:25:22"}],"id":7379,"name":"Block","src":"4188:42:22"}],"id":7380,"name":"FunctionDefinition","src":"4123:107:22"}],"id":7381,"name":"ContractDefinition","src":"1149:3083:22"}],"id":7382,"name":"SourceUnit","src":"767:3466:22"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[418]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":203,"name":"PragmaDirective","src":"778:24:23"},{"attributes":{"SourceUnit":1718,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":419,"symbolAliases":[null],"unitAlias":""},"id":204,"name":"ImportDirective","src":"804:31:23"},{"attributes":{"SourceUnit":202,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":419,"symbolAliases":[null],"unitAlias":""},"id":205,"name":"ImportDirective","src":"836:29:23"},{"attributes":{"contractDependencies":[201],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[418,201],"name":"TokenWhitelistable","scope":419},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":201,"type":"contract ENSResolvable"},"id":206,"name":"UserDefinedTypeName","src":"989:13:23"}],"id":207,"name":"InheritanceSpecifier","src":"989:13:23"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":418,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":208,"name":"ElementaryTypeName","src":"1092:7:23"}],"id":209,"name":"VariableDeclaration","src":"1092:35:23"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":418,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":219,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":210,"name":"ElementaryTypeName","src":"1292:7:23"}],"id":211,"name":"VariableDeclaration","src":"1292:28:23"}],"id":212,"name":"ParameterList","src":"1291:30:23"},{"attributes":{"parameters":[null]},"children":[],"id":213,"name":"ParameterList","src":"1331:0:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":214,"name":"Identifier","src":"1341:19:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":215,"name":"Identifier","src":"1363:20:23"}],"id":216,"name":"Assignment","src":"1341:42:23"}],"id":217,"name":"ExpressionStatement","src":"1341:42:23"}],"id":218,"name":"Block","src":"1331:59:23"}],"id":219,"name":"FunctionDefinition","src":"1280:110:23"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":418,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":220,"name":"ParameterList","src":"1541:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":227,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":221,"name":"ElementaryTypeName","src":"1567:7:23"}],"id":222,"name":"VariableDeclaration","src":"1567:7:23"}],"id":223,"name":"ParameterList","src":"1566:9:23"},{"children":[{"attributes":{"functionReturnParameters":223},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":224,"name":"Identifier","src":"1593:19:23"}],"id":225,"name":"Return","src":"1586:26:23"}],"id":226,"name":"Block","src":"1576:43:23"}],"id":227,"name":"FunctionDefinition","src":"1514:105:23"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":256,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":228,"name":"ElementaryTypeName","src":"2194:7:23"}],"id":229,"name":"VariableDeclaration","src":"2194:10:23"}],"id":230,"name":"ParameterList","src":"2193:12:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":231,"name":"ElementaryTypeName","src":"2229:6:23"}],"id":232,"name":"VariableDeclaration","src":"2229:13:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":233,"name":"ElementaryTypeName","src":"2244:7:23"}],"id":234,"name":"VariableDeclaration","src":"2244:7:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":235,"name":"ElementaryTypeName","src":"2253:7:23"}],"id":236,"name":"VariableDeclaration","src":"2253:7:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":237,"name":"ElementaryTypeName","src":"2262:4:23"}],"id":238,"name":"VariableDeclaration","src":"2262:4:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":239,"name":"ElementaryTypeName","src":"2268:4:23"}],"id":240,"name":"VariableDeclaration","src":"2268:4:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":241,"name":"ElementaryTypeName","src":"2274:4:23"}],"id":242,"name":"VariableDeclaration","src":"2274:4:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":243,"name":"ElementaryTypeName","src":"2280:7:23"}],"id":244,"name":"VariableDeclaration","src":"2280:7:23"}],"id":245,"name":"ParameterList","src":"2228:60:23"},{"children":[{"attributes":{"functionReturnParameters":245},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":755,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":246,"name":"Identifier","src":"2306:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":247,"name":"Identifier","src":"2322:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":248,"name":"Identifier","src":"2334:19:23"}],"id":249,"name":"FunctionCall","src":"2322:32:23"}],"id":250,"name":"FunctionCall","src":"2306:49:23"}],"id":251,"name":"MemberAccess","src":"2306:62:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":229,"type":"address","value":"_a"},"id":252,"name":"Identifier","src":"2369:2:23"}],"id":253,"name":"FunctionCall","src":"2306:66:23"}],"id":254,"name":"Return","src":"2299:73:23"}],"id":255,"name":"Block","src":"2289:90:23"}],"id":256,"name":"FunctionDefinition","src":"2171:208:23"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":257,"name":"ParameterList","src":"2914:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":258,"name":"ElementaryTypeName","src":"2940:6:23"}],"id":259,"name":"VariableDeclaration","src":"2940:13:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":260,"name":"ElementaryTypeName","src":"2955:7:23"}],"id":261,"name":"VariableDeclaration","src":"2955:7:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":262,"name":"ElementaryTypeName","src":"2964:7:23"}],"id":263,"name":"VariableDeclaration","src":"2964:7:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":264,"name":"ElementaryTypeName","src":"2973:4:23"}],"id":265,"name":"VariableDeclaration","src":"2973:4:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":266,"name":"ElementaryTypeName","src":"2979:4:23"}],"id":267,"name":"VariableDeclaration","src":"2979:4:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":268,"name":"ElementaryTypeName","src":"2985:4:23"}],"id":269,"name":"VariableDeclaration","src":"2985:4:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":270,"name":"ElementaryTypeName","src":"2991:7:23"}],"id":271,"name":"VariableDeclaration","src":"2991:7:23"}],"id":272,"name":"ParameterList","src":"2939:60:23"},{"children":[{"attributes":{"functionReturnParameters":272},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":772,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":273,"name":"Identifier","src":"3017:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":274,"name":"Identifier","src":"3033:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":275,"name":"Identifier","src":"3045:19:23"}],"id":276,"name":"FunctionCall","src":"3033:32:23"}],"id":277,"name":"FunctionCall","src":"3017:49:23"}],"id":278,"name":"MemberAccess","src":"3017:67:23"}],"id":279,"name":"FunctionCall","src":"3017:69:23"}],"id":280,"name":"Return","src":"3010:76:23"}],"id":281,"name":"Block","src":"3000:93:23"}],"id":282,"name":"FunctionDefinition","src":"2887:206:23"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":283,"name":"ParameterList","src":"3247:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":297,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":284,"name":"ElementaryTypeName","src":"3273:7:23"}],"id":285,"name":"ArrayTypeName","src":"3273:9:23"}],"id":286,"name":"VariableDeclaration","src":"3273:16:23"}],"id":287,"name":"ParameterList","src":"3272:18:23"},{"children":[{"attributes":{"functionReturnParameters":287},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":778,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":288,"name":"Identifier","src":"3308:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":289,"name":"Identifier","src":"3324:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":290,"name":"Identifier","src":"3336:19:23"}],"id":291,"name":"FunctionCall","src":"3324:32:23"}],"id":292,"name":"FunctionCall","src":"3308:49:23"}],"id":293,"name":"MemberAccess","src":"3308:67:23"}],"id":294,"name":"FunctionCall","src":"3308:69:23"}],"id":295,"name":"Return","src":"3301:76:23"}],"id":296,"name":"Block","src":"3291:93:23"}],"id":297,"name":"FunctionDefinition","src":"3220:164:23"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":298,"name":"ParameterList","src":"3537:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":312,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":299,"name":"ElementaryTypeName","src":"3563:7:23"}],"id":300,"name":"ArrayTypeName","src":"3563:9:23"}],"id":301,"name":"VariableDeclaration","src":"3563:16:23"}],"id":302,"name":"ParameterList","src":"3562:18:23"},{"children":[{"attributes":{"functionReturnParameters":302},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":784,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":303,"name":"Identifier","src":"3598:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":304,"name":"Identifier","src":"3614:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":305,"name":"Identifier","src":"3626:19:23"}],"id":306,"name":"FunctionCall","src":"3614:32:23"}],"id":307,"name":"FunctionCall","src":"3598:49:23"}],"id":308,"name":"MemberAccess","src":"3598:66:23"}],"id":309,"name":"FunctionCall","src":"3598:68:23"}],"id":310,"name":"Return","src":"3591:75:23"}],"id":311,"name":"Block","src":"3581:92:23"}],"id":312,"name":"FunctionDefinition","src":"3511:162:23"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":418,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":333,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":313,"name":"ElementaryTypeName","src":"3976:7:23"}],"id":314,"name":"VariableDeclaration","src":"3976:14:23"},{"attributes":{"constant":false,"name":"_rate","scope":333,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":315,"name":"ElementaryTypeName","src":"3992:7:23"}],"id":316,"name":"VariableDeclaration","src":"3992:13:23"},{"attributes":{"constant":false,"name":"_updateDate","scope":333,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":317,"name":"ElementaryTypeName","src":"4007:7:23"}],"id":318,"name":"VariableDeclaration","src":"4007:19:23"}],"id":319,"name":"ParameterList","src":"3975:52:23"},{"attributes":{"parameters":[null]},"children":[],"id":320,"name":"ParameterList","src":"4037:0:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":816,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":321,"name":"Identifier","src":"4047:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":322,"name":"Identifier","src":"4063:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":323,"name":"Identifier","src":"4075:19:23"}],"id":324,"name":"FunctionCall","src":"4063:32:23"}],"id":325,"name":"FunctionCall","src":"4047:49:23"}],"id":326,"name":"MemberAccess","src":"4047:65:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"address","value":"_token"},"id":327,"name":"Identifier","src":"4113:6:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"uint256","value":"_rate"},"id":328,"name":"Identifier","src":"4121:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":318,"type":"uint256","value":"_updateDate"},"id":329,"name":"Identifier","src":"4128:11:23"}],"id":330,"name":"FunctionCall","src":"4047:93:23"}],"id":331,"name":"ExpressionStatement","src":"4047:93:23"}],"id":332,"name":"Block","src":"4037:110:23"}],"id":333,"name":"FunctionDefinition","src":"3950:197:23"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":355,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":334,"name":"ElementaryTypeName","src":"4342:7:23"}],"id":335,"name":"VariableDeclaration","src":"4342:20:23"},{"attributes":{"constant":false,"name":"_data","scope":355,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":336,"name":"ElementaryTypeName","src":"4364:5:23"}],"id":337,"name":"VariableDeclaration","src":"4364:18:23"}],"id":338,"name":"ParameterList","src":"4341:42:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":355,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":339,"name":"ElementaryTypeName","src":"4407:7:23"}],"id":340,"name":"VariableDeclaration","src":"4407:7:23"},{"attributes":{"constant":false,"name":"","scope":355,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":341,"name":"ElementaryTypeName","src":"4416:7:23"}],"id":342,"name":"VariableDeclaration","src":"4416:7:23"}],"id":343,"name":"ParameterList","src":"4406:18:23"},{"children":[{"attributes":{"functionReturnParameters":343},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":802,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":344,"name":"Identifier","src":"4442:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":345,"name":"Identifier","src":"4458:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":346,"name":"Identifier","src":"4470:19:23"}],"id":347,"name":"FunctionCall","src":"4458:32:23"}],"id":348,"name":"FunctionCall","src":"4442:49:23"}],"id":349,"name":"MemberAccess","src":"4442:76:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":335,"type":"address","value":"_destination"},"id":350,"name":"Identifier","src":"4519:12:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"bytes memory","value":"_data"},"id":351,"name":"Identifier","src":"4533:5:23"}],"id":352,"name":"FunctionCall","src":"4442:97:23"}],"id":353,"name":"Return","src":"4435:104:23"}],"id":354,"name":"Block","src":"4425:121:23"}],"id":355,"name":"FunctionDefinition","src":"4305:241:23"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":371,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":356,"name":"ElementaryTypeName","src":"4671:7:23"}],"id":357,"name":"VariableDeclaration","src":"4671:10:23"}],"id":358,"name":"ParameterList","src":"4670:12:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":371,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":359,"name":"ElementaryTypeName","src":"4706:4:23"}],"id":360,"name":"VariableDeclaration","src":"4706:4:23"}],"id":361,"name":"ParameterList","src":"4705:6:23"},{"children":[{"attributes":{"assignments":[null,null,null,363,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":370,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":362,"name":"ElementaryTypeName","src":"4729:4:23"}],"id":363,"name":"VariableDeclaration","src":"4729:14:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":256,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":364,"name":"Identifier","src":"4753:13:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":357,"type":"address","value":"_a"},"id":365,"name":"Identifier","src":"4767:2:23"}],"id":366,"name":"FunctionCall","src":"4753:17:23"}],"id":367,"name":"VariableDeclarationStatement","src":"4722:48:23"},{"attributes":{"functionReturnParameters":361},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":363,"type":"bool","value":"available"},"id":368,"name":"Identifier","src":"4787:9:23"}],"id":369,"name":"Return","src":"4780:16:23"}],"id":370,"name":"Block","src":"4712:91:23"}],"id":371,"name":"FunctionDefinition","src":"4644:159:23"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":387,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":372,"name":"ElementaryTypeName","src":"4931:7:23"}],"id":373,"name":"VariableDeclaration","src":"4931:10:23"}],"id":374,"name":"ParameterList","src":"4930:12:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":387,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":375,"name":"ElementaryTypeName","src":"4966:4:23"}],"id":376,"name":"VariableDeclaration","src":"4966:4:23"}],"id":377,"name":"ParameterList","src":"4965:6:23"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,379,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":386,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":378,"name":"ElementaryTypeName","src":"4993:4:23"}],"id":379,"name":"VariableDeclaration","src":"4993:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":256,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":380,"name":"Identifier","src":"5014:13:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":373,"type":"address","value":"_a"},"id":381,"name":"Identifier","src":"5028:2:23"}],"id":382,"name":"FunctionCall","src":"5014:17:23"}],"id":383,"name":"VariableDeclarationStatement","src":"4982:49:23"},{"attributes":{"functionReturnParameters":377},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"bool","value":"redeemable"},"id":384,"name":"Identifier","src":"5048:10:23"}],"id":385,"name":"Return","src":"5041:17:23"}],"id":386,"name":"Block","src":"4972:93:23"}],"id":387,"name":"FunctionDefinition","src":"4903:162:23"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":403,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":388,"name":"ElementaryTypeName","src":"5187:7:23"}],"id":389,"name":"VariableDeclaration","src":"5187:10:23"}],"id":390,"name":"ParameterList","src":"5186:12:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":403,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":391,"name":"ElementaryTypeName","src":"5222:4:23"}],"id":392,"name":"VariableDeclaration","src":"5222:4:23"}],"id":393,"name":"ParameterList","src":"5221:6:23"},{"children":[{"attributes":{"assignments":[null,null,null,null,395,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":402,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":394,"name":"ElementaryTypeName","src":"5247:4:23"}],"id":395,"name":"VariableDeclaration","src":"5247:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":256,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":396,"name":"Identifier","src":"5268:13:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":389,"type":"address","value":"_a"},"id":397,"name":"Identifier","src":"5282:2:23"}],"id":398,"name":"FunctionCall","src":"5268:17:23"}],"id":399,"name":"VariableDeclarationStatement","src":"5238:47:23"},{"attributes":{"functionReturnParameters":393},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":395,"type":"bool","value":"loadable"},"id":400,"name":"Identifier","src":"5302:8:23"}],"id":401,"name":"Return","src":"5295:15:23"}],"id":402,"name":"Block","src":"5228:89:23"}],"id":403,"name":"FunctionDefinition","src":"5161:156:23"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":404,"name":"ParameterList","src":"5456:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":405,"name":"ElementaryTypeName","src":"5482:7:23"}],"id":406,"name":"VariableDeclaration","src":"5482:7:23"}],"id":407,"name":"ParameterList","src":"5481:9:23"},{"children":[{"attributes":{"functionReturnParameters":407},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":807,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":408,"name":"Identifier","src":"5508:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":409,"name":"Identifier","src":"5524:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":410,"name":"Identifier","src":"5536:19:23"}],"id":411,"name":"FunctionCall","src":"5524:32:23"}],"id":412,"name":"FunctionCall","src":"5508:49:23"}],"id":413,"name":"MemberAccess","src":"5508:60:23"}],"id":414,"name":"FunctionCall","src":"5508:62:23"}],"id":415,"name":"Return","src":"5501:69:23"}],"id":416,"name":"Block","src":"5491:86:23"}],"id":417,"name":"FunctionDefinition","src":"5436:141:23"}],"id":418,"name":"ContractDefinition","src":"958:4621:23"}],"id":419,"name":"SourceUnit","src":"778:4802:23"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[5090]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":5052,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":6285,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":5091,"symbolAliases":[null],"unitAlias":""},"id":5053,"name":"ImportDirective","src":"799:32:24"},{"attributes":{"SourceUnit":6504,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":5091,"symbolAliases":[null],"unitAlias":""},"id":5054,"name":"ImportDirective","src":"832:36:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[5090],"name":"Transferrable","scope":5091},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":6503,"type":"library SafeERC20"},"id":5055,"name":"UserDefinedTypeName","src":"996:9:24"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":5056,"name":"UserDefinedTypeName","src":"1010:5:24"}],"id":5057,"name":"UsingForDirective","src":"990:26:24"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":5090,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":5089,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5058,"name":"ElementaryTypeName","src":"1389:15:24"}],"id":5059,"name":"VariableDeclaration","src":"1389:19:24"},{"attributes":{"constant":false,"name":"_asset","scope":5089,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5060,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":5061,"name":"VariableDeclaration","src":"1410:14:24"},{"attributes":{"constant":false,"name":"_amount","scope":5089,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5062,"name":"ElementaryTypeName","src":"1426:7:24"}],"id":5063,"name":"VariableDeclaration","src":"1426:15:24"}],"id":5064,"name":"ParameterList","src":"1388:54:24"},{"attributes":{"parameters":[null]},"children":[],"id":5065,"name":"ParameterList","src":"1452:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5061,"type":"address","value":"_asset"},"id":5066,"name":"Identifier","src":"1510:6:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5067,"name":"ElementaryTypeNameExpression","src":"1520:7:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5068,"name":"Literal","src":"1528:1:24"}],"id":5069,"name":"FunctionCall","src":"1520:10:24"}],"id":5070,"name":"BinaryOperation","src":"1510:20:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5059,"type":"address payable","value":"_to"},"id":5071,"name":"Identifier","src":"1546:3:24"}],"id":5073,"name":"MemberAccess","src":"1546:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"uint256","value":"_amount"},"id":5074,"name":"Identifier","src":"1559:7:24"}],"id":5075,"name":"FunctionCall","src":"1546:21:24"}],"id":5076,"name":"ExpressionStatement","src":"1546:21:24"}],"id":5077,"name":"Block","src":"1532:46:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":6317,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"type(contract ERC20)","value":"ERC20"},"id":5078,"name":"Identifier","src":"1598:5:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5061,"type":"address","value":"_asset"},"id":5079,"name":"Identifier","src":"1604:6:24"}],"id":5080,"name":"FunctionCall","src":"1598:13:24"}],"id":5081,"name":"MemberAccess","src":"1598:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5059,"type":"address payable","value":"_to"},"id":5082,"name":"Identifier","src":"1625:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"uint256","value":"_amount"},"id":5083,"name":"Identifier","src":"1630:7:24"}],"id":5084,"name":"FunctionCall","src":"1598:40:24"}],"id":5085,"name":"ExpressionStatement","src":"1598:40:24"}],"id":5086,"name":"Block","src":"1584:65:24"}],"id":5087,"name":"IfStatement","src":"1506:143:24"}],"id":5088,"name":"Block","src":"1452:203:24"}],"id":5089,"name":"FunctionDefinition","src":"1366:289:24"}],"id":5090,"name":"ContractDefinition","src":"961:696:24"}],"id":5091,"name":"SourceUnit","src":"773:885:24"}},"mocks/tokenWhitelistableExporter.sol":{"AST":{"attributes":{"absolutePath":"mocks/tokenWhitelistableExporter.sol","exportedSymbols":{"TokenWhitelistableExporter":[156]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"0:24:25"},{"attributes":{"SourceUnit":419,"absolutePath":"internals/tokenWhitelistable.sol","file":"../internals/tokenWhitelistable.sol","scope":157,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"26:45:25"},{"attributes":{"SourceUnit":202,"absolutePath":"internals/ensResolvable.sol","file":"../internals/ensResolvable.sol","scope":157,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"72:40:25"},{"attributes":{"contractDependencies":[201,418],"contractKind":"contract","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[156,418,201],"name":"TokenWhitelistableExporter","scope":157},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":201,"type":"contract ENSResolvable"},"id":4,"name":"UserDefinedTypeName","src":"154:13:25"}],"id":5,"name":"InheritanceSpecifier","src":"154:13:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":418,"type":"contract TokenWhitelistable"},"id":6,"name":"UserDefinedTypeName","src":"169:18:25"}],"id":7,"name":"InheritanceSpecifier","src":"169:18:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":156,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":21,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8,"name":"ElementaryTypeName","src":"206:7:25"}],"id":9,"name":"VariableDeclaration","src":"206:13:25"},{"attributes":{"constant":false,"name":"_tokenWhitelistName_","scope":21,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10,"name":"ElementaryTypeName","src":"221:7:25"}],"id":11,"name":"VariableDeclaration","src":"221:28:25"}],"id":12,"name":"ParameterList","src":"205:45:25"},{"attributes":{"parameters":[null]},"children":[],"id":19,"name":"ParameterList","src":"320:0:25"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":201,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":13,"name":"Identifier","src":"258:13:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9,"type":"address","value":"_ens_"},"id":14,"name":"Identifier","src":"272:5:25"}],"id":15,"name":"ModifierInvocation","src":"258:20:25"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":418,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":16,"name":"Identifier","src":"279:18:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11,"type":"bytes32","value":"_tokenWhitelistName_"},"id":17,"name":"Identifier","src":"298:20:25"}],"id":18,"name":"ModifierInvocation","src":"279:40:25"},{"attributes":{"statements":[null]},"children":[],"id":20,"name":"Block","src":"320:2:25"}],"id":21,"name":"FunctionDefinition","src":"194:128:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":45,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":22,"name":"ElementaryTypeName","src":"350:7:25"}],"id":23,"name":"VariableDeclaration","src":"350:10:25"}],"id":24,"name":"ParameterList","src":"349:12:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":25,"name":"ElementaryTypeName","src":"385:6:25"}],"id":26,"name":"VariableDeclaration","src":"385:13:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":27,"name":"ElementaryTypeName","src":"400:7:25"}],"id":28,"name":"VariableDeclaration","src":"400:7:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":29,"name":"ElementaryTypeName","src":"409:7:25"}],"id":30,"name":"VariableDeclaration","src":"409:7:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":31,"name":"ElementaryTypeName","src":"418:4:25"}],"id":32,"name":"VariableDeclaration","src":"418:4:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":33,"name":"ElementaryTypeName","src":"424:4:25"}],"id":34,"name":"VariableDeclaration","src":"424:4:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":35,"name":"ElementaryTypeName","src":"430:4:25"}],"id":36,"name":"VariableDeclaration","src":"430:4:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":37,"name":"ElementaryTypeName","src":"436:7:25"}],"id":38,"name":"VariableDeclaration","src":"436:7:25"}],"id":39,"name":"ParameterList","src":"384:60:25"},{"children":[{"attributes":{"functionReturnParameters":39},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":256,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":40,"name":"Identifier","src":"462:13:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":23,"type":"address","value":"_a"},"id":41,"name":"Identifier","src":"476:2:25"}],"id":42,"name":"FunctionCall","src":"462:17:25"}],"id":43,"name":"Return","src":"455:24:25"}],"id":44,"name":"Block","src":"445:41:25"}],"id":45,"name":"FunctionDefinition","src":"328:158:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":46,"name":"ParameterList","src":"518:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":47,"name":"ElementaryTypeName","src":"544:6:25"}],"id":48,"name":"VariableDeclaration","src":"544:13:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":49,"name":"ElementaryTypeName","src":"559:7:25"}],"id":50,"name":"VariableDeclaration","src":"559:7:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":51,"name":"ElementaryTypeName","src":"568:7:25"}],"id":52,"name":"VariableDeclaration","src":"568:7:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":53,"name":"ElementaryTypeName","src":"577:4:25"}],"id":54,"name":"VariableDeclaration","src":"577:4:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":55,"name":"ElementaryTypeName","src":"583:4:25"}],"id":56,"name":"VariableDeclaration","src":"583:4:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":57,"name":"ElementaryTypeName","src":"589:4:25"}],"id":58,"name":"VariableDeclaration","src":"589:4:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":59,"name":"ElementaryTypeName","src":"595:7:25"}],"id":60,"name":"VariableDeclaration","src":"595:7:25"}],"id":61,"name":"ParameterList","src":"543:60:25"},{"children":[{"attributes":{"functionReturnParameters":61},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":62,"name":"Identifier","src":"621:18:25"}],"id":63,"name":"FunctionCall","src":"621:20:25"}],"id":64,"name":"Return","src":"614:27:25"}],"id":65,"name":"Block","src":"604:44:25"}],"id":66,"name":"FunctionDefinition","src":"492:156:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":67,"name":"ParameterList","src":"680:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":76,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":68,"name":"ElementaryTypeName","src":"706:7:25"}],"id":69,"name":"ArrayTypeName","src":"706:9:25"}],"id":70,"name":"VariableDeclaration","src":"706:16:25"}],"id":71,"name":"ParameterList","src":"705:18:25"},{"children":[{"attributes":{"functionReturnParameters":71},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":297,"type":"function () view returns (address[] memory)","value":"_tokenAddressArray"},"id":72,"name":"Identifier","src":"741:18:25"}],"id":73,"name":"FunctionCall","src":"741:20:25"}],"id":74,"name":"Return","src":"734:27:25"}],"id":75,"name":"Block","src":"724:44:25"}],"id":76,"name":"FunctionDefinition","src":"654:114:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":77,"name":"ParameterList","src":"799:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":86,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":78,"name":"ElementaryTypeName","src":"825:7:25"}],"id":79,"name":"ArrayTypeName","src":"825:9:25"}],"id":80,"name":"VariableDeclaration","src":"825:16:25"}],"id":81,"name":"ParameterList","src":"824:18:25"},{"children":[{"attributes":{"functionReturnParameters":81},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":312,"type":"function () view returns (address[] memory)","value":"_redeemableTokens"},"id":82,"name":"Identifier","src":"860:17:25"}],"id":83,"name":"FunctionCall","src":"860:19:25"}],"id":84,"name":"Return","src":"853:26:25"}],"id":85,"name":"Block","src":"843:43:25"}],"id":86,"name":"FunctionDefinition","src":"774:112:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":156,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":102,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":87,"name":"ElementaryTypeName","src":"917:7:25"}],"id":88,"name":"VariableDeclaration","src":"917:14:25"},{"attributes":{"constant":false,"name":"_rate","scope":102,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":89,"name":"ElementaryTypeName","src":"933:7:25"}],"id":90,"name":"VariableDeclaration","src":"933:13:25"},{"attributes":{"constant":false,"name":"_updateDate","scope":102,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":91,"name":"ElementaryTypeName","src":"948:7:25"}],"id":92,"name":"VariableDeclaration","src":"948:19:25"}],"id":93,"name":"ParameterList","src":"916:52:25"},{"attributes":{"parameters":[null]},"children":[],"id":94,"name":"ParameterList","src":"978:0:25"},{"children":[{"attributes":{"functionReturnParameters":94},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":333,"type":"function (address,uint256,uint256)","value":"_updateTokenRate"},"id":95,"name":"Identifier","src":"995:16:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_token"},"id":96,"name":"Identifier","src":"1012:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"uint256","value":"_rate"},"id":97,"name":"Identifier","src":"1020:5:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"uint256","value":"_updateDate"},"id":98,"name":"Identifier","src":"1027:11:25"}],"id":99,"name":"FunctionCall","src":"995:44:25"}],"id":100,"name":"Return","src":"988:51:25"}],"id":101,"name":"Block","src":"978:68:25"}],"id":102,"name":"FunctionDefinition","src":"892:154:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":119,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":103,"name":"ElementaryTypeName","src":"1088:7:25"}],"id":104,"name":"VariableDeclaration","src":"1088:20:25"},{"attributes":{"constant":false,"name":"_data","scope":119,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":105,"name":"ElementaryTypeName","src":"1110:5:25"}],"id":106,"name":"VariableDeclaration","src":"1110:20:25"}],"id":107,"name":"ParameterList","src":"1087:44:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":119,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":108,"name":"ElementaryTypeName","src":"1155:7:25"}],"id":109,"name":"VariableDeclaration","src":"1155:7:25"},{"attributes":{"constant":false,"name":"","scope":119,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":110,"name":"ElementaryTypeName","src":"1164:7:25"}],"id":111,"name":"VariableDeclaration","src":"1164:7:25"}],"id":112,"name":"ParameterList","src":"1154:18:25"},{"children":[{"attributes":{"functionReturnParameters":112},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":355,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":113,"name":"Identifier","src":"1190:27:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"address","value":"_destination"},"id":114,"name":"Identifier","src":"1218:12:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":106,"type":"bytes calldata","value":"_data"},"id":115,"name":"Identifier","src":"1232:5:25"}],"id":116,"name":"FunctionCall","src":"1190:48:25"}],"id":117,"name":"Return","src":"1183:55:25"}],"id":118,"name":"Block","src":"1173:72:25"}],"id":119,"name":"FunctionDefinition","src":"1052:193:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTokenLoadable","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":131,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":120,"name":"ElementaryTypeName","src":"1276:7:25"}],"id":121,"name":"VariableDeclaration","src":"1276:10:25"}],"id":122,"name":"ParameterList","src":"1275:12:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":131,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":123,"name":"ElementaryTypeName","src":"1311:4:25"}],"id":124,"name":"VariableDeclaration","src":"1311:4:25"}],"id":125,"name":"ParameterList","src":"1310:6:25"},{"children":[{"attributes":{"functionReturnParameters":125},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":403,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":126,"name":"Identifier","src":"1334:16:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":121,"type":"address","value":"_a"},"id":127,"name":"Identifier","src":"1351:2:25"}],"id":128,"name":"FunctionCall","src":"1334:20:25"}],"id":129,"name":"Return","src":"1327:27:25"}],"id":130,"name":"Block","src":"1317:44:25"}],"id":131,"name":"FunctionDefinition","src":"1251:110:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTokenAvailable","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":143,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":132,"name":"ElementaryTypeName","src":"1393:7:25"}],"id":133,"name":"VariableDeclaration","src":"1393:10:25"}],"id":134,"name":"ParameterList","src":"1392:12:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":143,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":135,"name":"ElementaryTypeName","src":"1428:4:25"}],"id":136,"name":"VariableDeclaration","src":"1428:4:25"}],"id":137,"name":"ParameterList","src":"1427:6:25"},{"children":[{"attributes":{"functionReturnParameters":137},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":138,"name":"Identifier","src":"1451:17:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":133,"type":"address","value":"_a"},"id":139,"name":"Identifier","src":"1469:2:25"}],"id":140,"name":"FunctionCall","src":"1451:21:25"}],"id":141,"name":"Return","src":"1444:28:25"}],"id":142,"name":"Block","src":"1434:45:25"}],"id":143,"name":"FunctionDefinition","src":"1367:112:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTokenRedeemable","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":155,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":144,"name":"ElementaryTypeName","src":"1512:7:25"}],"id":145,"name":"VariableDeclaration","src":"1512:10:25"}],"id":146,"name":"ParameterList","src":"1511:12:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":155,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":147,"name":"ElementaryTypeName","src":"1547:4:25"}],"id":148,"name":"VariableDeclaration","src":"1547:4:25"}],"id":149,"name":"ParameterList","src":"1546:6:25"},{"children":[{"attributes":{"functionReturnParameters":149},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":387,"type":"function (address) view returns (bool)","value":"_isTokenRedeemable"},"id":150,"name":"Identifier","src":"1570:18:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":145,"type":"address","value":"_a"},"id":151,"name":"Identifier","src":"1589:2:25"}],"id":152,"name":"FunctionCall","src":"1570:22:25"}],"id":153,"name":"Return","src":"1563:29:25"}],"id":154,"name":"Block","src":"1553:46:25"}],"id":155,"name":"FunctionDefinition","src":"1485:114:25"}],"id":156,"name":"ContractDefinition","src":"115:1486:25"}],"id":157,"name":"SourceUnit","src":"0:1602:25"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[817],"TokenWhitelist":[1717]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":731,"name":"PragmaDirective","src":"774:24:26"},{"attributes":{"SourceUnit":5051,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":732,"name":"ImportDirective","src":"800:38:26"},{"attributes":{"SourceUnit":5091,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":733,"name":"ImportDirective","src":"839:39:26"},{"attributes":{"SourceUnit":4955,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":734,"name":"ImportDirective","src":"879:36:26"},{"attributes":{"SourceUnit":4844,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":735,"name":"ImportDirective","src":"916:33:26"},{"attributes":{"SourceUnit":3138,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":736,"name":"ImportDirective","src":"950:34:26"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[817],"name":"ITokenWhitelist","scope":1718},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":737,"name":"ElementaryTypeName","src":"1124:7:26"}],"id":738,"name":"VariableDeclaration","src":"1124:7:26"}],"id":739,"name":"ParameterList","src":"1123:9:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":740,"name":"ElementaryTypeName","src":"1156:6:26"}],"id":741,"name":"VariableDeclaration","src":"1156:13:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":742,"name":"ElementaryTypeName","src":"1171:7:26"}],"id":743,"name":"VariableDeclaration","src":"1171:7:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":744,"name":"ElementaryTypeName","src":"1180:7:26"}],"id":745,"name":"VariableDeclaration","src":"1180:7:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":746,"name":"ElementaryTypeName","src":"1189:4:26"}],"id":747,"name":"VariableDeclaration","src":"1189:4:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":748,"name":"ElementaryTypeName","src":"1195:4:26"}],"id":749,"name":"VariableDeclaration","src":"1195:4:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":750,"name":"ElementaryTypeName","src":"1201:4:26"}],"id":751,"name":"VariableDeclaration","src":"1201:4:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":752,"name":"ElementaryTypeName","src":"1207:7:26"}],"id":753,"name":"VariableDeclaration","src":"1207:7:26"}],"id":754,"name":"ParameterList","src":"1155:60:26"}],"id":755,"name":"FunctionDefinition","src":"1102:114:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":756,"name":"ParameterList","src":"1248:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":757,"name":"ElementaryTypeName","src":"1274:6:26"}],"id":758,"name":"VariableDeclaration","src":"1274:13:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":759,"name":"ElementaryTypeName","src":"1289:7:26"}],"id":760,"name":"VariableDeclaration","src":"1289:7:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":761,"name":"ElementaryTypeName","src":"1298:7:26"}],"id":762,"name":"VariableDeclaration","src":"1298:7:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":763,"name":"ElementaryTypeName","src":"1307:4:26"}],"id":764,"name":"VariableDeclaration","src":"1307:4:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":765,"name":"ElementaryTypeName","src":"1313:4:26"}],"id":766,"name":"VariableDeclaration","src":"1313:4:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":767,"name":"ElementaryTypeName","src":"1319:4:26"}],"id":768,"name":"VariableDeclaration","src":"1319:4:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":769,"name":"ElementaryTypeName","src":"1325:7:26"}],"id":770,"name":"VariableDeclaration","src":"1325:7:26"}],"id":771,"name":"ParameterList","src":"1273:60:26"}],"id":772,"name":"FunctionDefinition","src":"1222:112:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":773,"name":"ParameterList","src":"1366:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":778,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":774,"name":"ElementaryTypeName","src":"1392:7:26"}],"id":775,"name":"ArrayTypeName","src":"1392:9:26"}],"id":776,"name":"VariableDeclaration","src":"1392:16:26"}],"id":777,"name":"ParameterList","src":"1391:18:26"}],"id":778,"name":"FunctionDefinition","src":"1340:70:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":779,"name":"ParameterList","src":"1441:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":784,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":780,"name":"ElementaryTypeName","src":"1467:7:26"}],"id":781,"name":"ArrayTypeName","src":"1467:9:26"}],"id":782,"name":"VariableDeclaration","src":"1467:16:26"}],"id":783,"name":"ParameterList","src":"1466:18:26"}],"id":784,"name":"FunctionDefinition","src":"1416:69:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":791,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":785,"name":"ElementaryTypeName","src":"1518:6:26"}],"id":786,"name":"VariableDeclaration","src":"1518:6:26"}],"id":787,"name":"ParameterList","src":"1517:8:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":791,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":788,"name":"ElementaryTypeName","src":"1549:4:26"}],"id":789,"name":"VariableDeclaration","src":"1549:4:26"}],"id":790,"name":"ParameterList","src":"1548:6:26"}],"id":791,"name":"FunctionDefinition","src":"1491:64:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":802,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":792,"name":"ElementaryTypeName","src":"1597:7:26"}],"id":793,"name":"VariableDeclaration","src":"1597:7:26"},{"attributes":{"constant":false,"name":"","scope":802,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":794,"name":"ElementaryTypeName","src":"1606:5:26"}],"id":795,"name":"VariableDeclaration","src":"1606:14:26"}],"id":796,"name":"ParameterList","src":"1596:25:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":802,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":797,"name":"ElementaryTypeName","src":"1645:7:26"}],"id":798,"name":"VariableDeclaration","src":"1645:7:26"},{"attributes":{"constant":false,"name":"","scope":802,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":799,"name":"ElementaryTypeName","src":"1654:7:26"}],"id":800,"name":"VariableDeclaration","src":"1654:7:26"}],"id":801,"name":"ParameterList","src":"1644:18:26"}],"id":802,"name":"FunctionDefinition","src":"1561:102:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":803,"name":"ParameterList","src":"1688:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":807,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":804,"name":"ElementaryTypeName","src":"1714:7:26"}],"id":805,"name":"VariableDeclaration","src":"1714:7:26"}],"id":806,"name":"ParameterList","src":"1713:9:26"}],"id":807,"name":"FunctionDefinition","src":"1669:54:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":817,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":816,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":808,"name":"ElementaryTypeName","src":"1754:7:26"}],"id":809,"name":"VariableDeclaration","src":"1754:7:26"},{"attributes":{"constant":false,"name":"","scope":816,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":810,"name":"ElementaryTypeName","src":"1763:7:26"}],"id":811,"name":"VariableDeclaration","src":"1763:7:26"},{"attributes":{"constant":false,"name":"","scope":816,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":812,"name":"ElementaryTypeName","src":"1772:7:26"}],"id":813,"name":"VariableDeclaration","src":"1772:7:26"}],"id":814,"name":"ParameterList","src":"1753:27:26"},{"attributes":{"parameters":[null]},"children":[],"id":815,"name":"ParameterList","src":"1789:0:26"}],"id":816,"name":"FunctionDefinition","src":"1729:61:26"}],"id":817,"name":"ContractDefinition","src":"1070:722:26"},{"attributes":{"contractDependencies":[201,5050,5090],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[1717,5090,5050,201],"name":"TokenWhitelist","scope":1718},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":201,"type":"contract ENSResolvable"},"id":818,"name":"UserDefinedTypeName","src":"1966:13:26"}],"id":819,"name":"InheritanceSpecifier","src":"1966:13:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":5050,"type":"contract Controllable"},"id":820,"name":"UserDefinedTypeName","src":"1981:12:26"}],"id":821,"name":"InheritanceSpecifier","src":"1981:12:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":5090,"type":"contract Transferrable"},"id":822,"name":"UserDefinedTypeName","src":"1995:13:26"}],"id":823,"name":"InheritanceSpecifier","src":"1995:13:26"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":4843,"type":"library strings"},"id":824,"name":"UserDefinedTypeName","src":"2021:7:26"}],"id":825,"name":"UsingForDirective","src":"2015:20:26"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3137,"type":"library SafeMath"},"id":826,"name":"UserDefinedTypeName","src":"2046:8:26"},{"attributes":{"name":"uint256","type":"uint256"},"id":827,"name":"ElementaryTypeName","src":"2059:7:26"}],"id":828,"name":"UsingForDirective","src":"2040:27:26"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":4954,"type":"library BytesUtils"},"id":829,"name":"UserDefinedTypeName","src":"2078:10:26"},{"attributes":{"name":"bytes","type":"bytes"},"id":830,"name":"ElementaryTypeName","src":"2093:5:26"}],"id":831,"name":"UsingForDirective","src":"2072:27:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":839,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":832,"name":"ElementaryTypeName","src":"2128:7:26"}],"id":833,"name":"VariableDeclaration","src":"2128:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":839,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":834,"name":"ElementaryTypeName","src":"2145:7:26"}],"id":835,"name":"VariableDeclaration","src":"2145:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":836,"name":"ElementaryTypeName","src":"2161:7:26"}],"id":837,"name":"VariableDeclaration","src":"2161:13:26"}],"id":838,"name":"ParameterList","src":"2127:48:26"}],"id":839,"name":"EventDefinition","src":"2105:71:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":840,"name":"ElementaryTypeName","src":"2209:7:26"}],"id":841,"name":"VariableDeclaration","src":"2209:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":842,"name":"ElementaryTypeName","src":"2226:7:26"}],"id":843,"name":"VariableDeclaration","src":"2226:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":847,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":844,"name":"ElementaryTypeName","src":"2242:4:26"}],"id":845,"name":"VariableDeclaration","src":"2242:14:26"}],"id":846,"name":"ParameterList","src":"2208:49:26"}],"id":847,"name":"EventDefinition","src":"2182:76:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":855,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":848,"name":"ElementaryTypeName","src":"2292:7:26"}],"id":849,"name":"VariableDeclaration","src":"2292:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":855,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":850,"name":"ElementaryTypeName","src":"2309:7:26"}],"id":851,"name":"VariableDeclaration","src":"2309:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":855,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":852,"name":"ElementaryTypeName","src":"2325:4:26"}],"id":853,"name":"VariableDeclaration","src":"2325:16:26"}],"id":854,"name":"ParameterList","src":"2291:51:26"}],"id":855,"name":"EventDefinition","src":"2263:80:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":869,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":856,"name":"ElementaryTypeName","src":"2366:7:26"}],"id":857,"name":"VariableDeclaration","src":"2366:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":869,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":858,"name":"ElementaryTypeName","src":"2383:7:26"}],"id":859,"name":"VariableDeclaration","src":"2383:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":869,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":860,"name":"ElementaryTypeName","src":"2399:6:26"}],"id":861,"name":"VariableDeclaration","src":"2399:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":869,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":862,"name":"ElementaryTypeName","src":"2415:7:26"}],"id":863,"name":"VariableDeclaration","src":"2415:18:26"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":869,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":864,"name":"ElementaryTypeName","src":"2435:4:26"}],"id":865,"name":"VariableDeclaration","src":"2435:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":869,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":866,"name":"ElementaryTypeName","src":"2451:4:26"}],"id":867,"name":"VariableDeclaration","src":"2451:16:26"}],"id":868,"name":"ParameterList","src":"2365:103:26"}],"id":869,"name":"EventDefinition","src":"2349:120:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":875,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":870,"name":"ElementaryTypeName","src":"2493:7:26"}],"id":871,"name":"VariableDeclaration","src":"2493:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":875,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":872,"name":"ElementaryTypeName","src":"2510:7:26"}],"id":873,"name":"VariableDeclaration","src":"2510:14:26"}],"id":874,"name":"ParameterList","src":"2492:33:26"}],"id":875,"name":"EventDefinition","src":"2474:52:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":879,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":876,"name":"ElementaryTypeName","src":"2552:6:26"}],"id":877,"name":"VariableDeclaration","src":"2552:16:26"}],"id":878,"name":"ParameterList","src":"2551:18:26"}],"id":879,"name":"EventDefinition","src":"2532:38:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":883,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":880,"name":"ElementaryTypeName","src":"2597:6:26"}],"id":881,"name":"VariableDeclaration","src":"2597:16:26"}],"id":882,"name":"ParameterList","src":"2596:18:26"}],"id":883,"name":"EventDefinition","src":"2575:40:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":889,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":884,"name":"ElementaryTypeName","src":"2647:7:26"}],"id":885,"name":"VariableDeclaration","src":"2647:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":889,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":886,"name":"ElementaryTypeName","src":"2663:6:26"}],"id":887,"name":"VariableDeclaration","src":"2663:16:26"}],"id":888,"name":"ParameterList","src":"2646:34:26"}],"id":889,"name":"EventDefinition","src":"2620:61:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":895,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":890,"name":"ElementaryTypeName","src":"2715:7:26"}],"id":891,"name":"VariableDeclaration","src":"2715:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":895,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":892,"name":"ElementaryTypeName","src":"2731:6:26"}],"id":893,"name":"VariableDeclaration","src":"2731:16:26"}],"id":894,"name":"ParameterList","src":"2714:34:26"}],"id":895,"name":"EventDefinition","src":"2686:63:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":903,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":896,"name":"ElementaryTypeName","src":"2769:7:26"}],"id":897,"name":"VariableDeclaration","src":"2769:11:26"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":903,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":898,"name":"ElementaryTypeName","src":"2782:7:26"}],"id":899,"name":"VariableDeclaration","src":"2782:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":903,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":900,"name":"ElementaryTypeName","src":"2798:7:26"}],"id":901,"name":"VariableDeclaration","src":"2798:15:26"}],"id":902,"name":"ParameterList","src":"2768:46:26"}],"id":903,"name":"EventDefinition","src":"2755:60:26"},{"attributes":{"constant":true,"name":"_APPROVE","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":904,"name":"ElementaryTypeName","src":"2924:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":905,"name":"Literal","src":"2959:10:26"}],"id":906,"name":"VariableDeclaration","src":"2924:45:26"},{"attributes":{"constant":true,"name":"_BURN","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":907,"name":"ElementaryTypeName","src":"3028:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":908,"name":"Literal","src":"3060:10:26"}],"id":909,"name":"VariableDeclaration","src":"3028:42:26"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":910,"name":"ElementaryTypeName","src":"3118:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":911,"name":"Literal","src":"3154:10:26"}],"id":912,"name":"VariableDeclaration","src":"3118:46:26"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":913,"name":"ElementaryTypeName","src":"3224:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":914,"name":"Literal","src":"3265:10:26"}],"id":915,"name":"VariableDeclaration","src":"3224:51:26"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":1717,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":930,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":916,"name":"ElementaryTypeName","src":"3371:6:26"}],"id":917,"name":"VariableDeclaration","src":"3371:13:26"},{"attributes":{"constant":false,"name":"magnitude","scope":930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":918,"name":"ElementaryTypeName","src":"3410:7:26"}],"id":919,"name":"VariableDeclaration","src":"3410:17:26"},{"attributes":{"constant":false,"name":"rate","scope":930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":920,"name":"ElementaryTypeName","src":"3452:7:26"}],"id":921,"name":"VariableDeclaration","src":"3452:12:26"},{"attributes":{"constant":false,"name":"available","scope":930,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":922,"name":"ElementaryTypeName","src":"3504:4:26"}],"id":923,"name":"VariableDeclaration","src":"3504:14:26"},{"attributes":{"constant":false,"name":"loadable","scope":930,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":924,"name":"ElementaryTypeName","src":"3570:4:26"}],"id":925,"name":"VariableDeclaration","src":"3570:13:26"},{"attributes":{"constant":false,"name":"redeemable","scope":930,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":926,"name":"ElementaryTypeName","src":"3640:4:26"}],"id":927,"name":"VariableDeclaration","src":"3640:15:26"},{"attributes":{"constant":false,"name":"lastUpdate","scope":930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":928,"name":"ElementaryTypeName","src":"3724:7:26"}],"id":929,"name":"VariableDeclaration","src":"3724:18:26"}],"id":930,"name":"StructDefinition","src":"3348:433:26"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":1717,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":931,"name":"ElementaryTypeName","src":"3795:7:26"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":930,"type":"struct TokenWhitelist.Token"},"id":932,"name":"UserDefinedTypeName","src":"3806:5:26"}],"id":933,"name":"Mapping","src":"3787:25:26"}],"id":934,"name":"VariableDeclaration","src":"3787:47:26"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":1717,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":935,"name":"ElementaryTypeName","src":"4004:6:26"},{"attributes":{"name":"bool","type":"bool"},"id":936,"name":"ElementaryTypeName","src":"4014:4:26"}],"id":937,"name":"Mapping","src":"3996:23:26"}],"id":938,"name":"VariableDeclaration","src":"3996:50:26"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":1717,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":939,"name":"ElementaryTypeName","src":"4053:7:26"}],"id":940,"name":"ArrayTypeName","src":"4053:9:26"}],"id":941,"name":"VariableDeclaration","src":"4053:36:26"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":1717,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":942,"name":"ElementaryTypeName","src":"4182:7:26"}],"id":943,"name":"VariableDeclaration","src":"4182:34:26"},{"attributes":{"constant":false,"name":"_stablecoin","scope":1717,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":944,"name":"ElementaryTypeName","src":"4266:7:26"}],"id":945,"name":"VariableDeclaration","src":"4266:27:26"},{"attributes":{"constant":false,"name":"_oracleNode","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":946,"name":"ElementaryTypeName","src":"4372:7:26"}],"id":947,"name":"VariableDeclaration","src":"4372:27:26"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":997,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":948,"name":"ElementaryTypeName","src":"4770:7:26"}],"id":949,"name":"VariableDeclaration","src":"4770:13:26"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":997,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":950,"name":"ElementaryTypeName","src":"4785:7:26"}],"id":951,"name":"VariableDeclaration","src":"4785:20:26"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":997,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":952,"name":"ElementaryTypeName","src":"4807:7:26"}],"id":953,"name":"VariableDeclaration","src":"4807:24:26"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":997,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":954,"name":"ElementaryTypeName","src":"4833:7:26"}],"id":955,"name":"VariableDeclaration","src":"4833:27:26"}],"id":956,"name":"ParameterList","src":"4769:92:26"},{"attributes":{"parameters":[null]},"children":[],"id":963,"name":"ParameterList","src":"4949:0:26"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":201,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":957,"name":"Identifier","src":"4885:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":949,"type":"address","value":"_ens_"},"id":958,"name":"Identifier","src":"4899:5:26"}],"id":959,"name":"ModifierInvocation","src":"4885:20:26"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5050,"type":"type(contract Controllable)","value":"Controllable"},"id":960,"name":"Identifier","src":"4914:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":953,"type":"bytes32","value":"_controllerNode_"},"id":961,"name":"Identifier","src":"4927:16:26"}],"id":962,"name":"ModifierInvocation","src":"4914:30:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":947,"type":"bytes32","value":"_oracleNode"},"id":964,"name":"Identifier","src":"4959:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"bytes32","value":"_oracleNode_"},"id":965,"name":"Identifier","src":"4973:12:26"}],"id":966,"name":"Assignment","src":"4959:26:26"}],"id":967,"name":"ExpressionStatement","src":"4959:26:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"address","value":"_stablecoin"},"id":968,"name":"Identifier","src":"4995:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":955,"type":"address","value":"_stablecoinAddress_"},"id":969,"name":"Identifier","src":"5009:19:26"}],"id":970,"name":"Assignment","src":"4995:33:26"}],"id":971,"name":"ExpressionStatement","src":"4995:33:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":972,"name":"Identifier","src":"5083:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":906,"type":"bytes4","value":"_APPROVE"},"id":973,"name":"Identifier","src":"5102:8:26"}],"id":974,"name":"IndexAccess","src":"5083:28:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":975,"name":"Literal","src":"5114:4:26"}],"id":976,"name":"Assignment","src":"5083:35:26"}],"id":977,"name":"ExpressionStatement","src":"5083:35:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":978,"name":"Identifier","src":"5128:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"bytes4","value":"_BURN"},"id":979,"name":"Identifier","src":"5147:5:26"}],"id":980,"name":"IndexAccess","src":"5128:25:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":981,"name":"Literal","src":"5156:4:26"}],"id":982,"name":"Assignment","src":"5128:32:26"}],"id":983,"name":"ExpressionStatement","src":"5128:32:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":984,"name":"Identifier","src":"5170:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":912,"type":"bytes4","value":"_TRANSFER"},"id":985,"name":"Identifier","src":"5189:9:26"}],"id":986,"name":"IndexAccess","src":"5170:29:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":987,"name":"Literal","src":"5202:4:26"}],"id":988,"name":"Assignment","src":"5170:36:26"}],"id":989,"name":"ExpressionStatement","src":"5170:36:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":990,"name":"Identifier","src":"5216:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":915,"type":"bytes4","value":"_TRANSFER_FROM"},"id":991,"name":"Identifier","src":"5235:14:26"}],"id":992,"name":"IndexAccess","src":"5216:34:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":993,"name":"Literal","src":"5253:4:26"}],"id":994,"name":"Assignment","src":"5216:41:26"}],"id":995,"name":"ExpressionStatement","src":"5216:41:26"}],"id":996,"name":"Block","src":"4949:315:26"}],"id":997,"name":"FunctionDefinition","src":"4758:506:26"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":998,"name":"ParameterList","src":"5296:2:26"},{"children":[{"attributes":{"assignments":[1000]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":1019,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":999,"name":"ElementaryTypeName","src":"5309:7:26"}],"id":1000,"name":"VariableDeclaration","src":"5309:21:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1001,"name":"Identifier","src":"5333:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":947,"type":"bytes32","value":"_oracleNode"},"id":1002,"name":"Identifier","src":"5345:11:26"}],"id":1003,"name":"FunctionCall","src":"5333:24:26"}],"id":1004,"name":"VariableDeclarationStatement","src":"5309:48:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1005,"name":"Identifier","src":"5367:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":1006,"name":"Identifier","src":"5375:8:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1007,"name":"Identifier","src":"5384:3:26"}],"id":1008,"name":"MemberAccess","src":"5384:10:26"}],"id":1009,"name":"FunctionCall","src":"5375:20:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1010,"name":"Identifier","src":"5399:3:26"}],"id":1011,"name":"MemberAccess","src":"5399:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1000,"type":"address","value":"oracleAddress"},"id":1012,"name":"Identifier","src":"5413:13:26"}],"id":1013,"name":"BinaryOperation","src":"5399:27:26"}],"id":1014,"name":"BinaryOperation","src":"5375:51:26"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":1015,"name":"Literal","src":"5428:24:26"}],"id":1016,"name":"FunctionCall","src":"5367:86:26"}],"id":1017,"name":"ExpressionStatement","src":"5367:86:26"},{"id":1018,"name":"PlaceholderStatement","src":"5463:1:26"}],"id":1019,"name":"Block","src":"5299:172:26"}],"id":1020,"name":"ModifierDefinition","src":"5270:201:26"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1021,"name":"ElementaryTypeName","src":"6068:7:26"}],"id":1022,"name":"ArrayTypeName","src":"6068:9:26"}],"id":1023,"name":"VariableDeclaration","src":"6068:26:26"},{"attributes":{"constant":false,"name":"_symbols","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1024,"name":"ElementaryTypeName","src":"6104:7:26"}],"id":1025,"name":"ArrayTypeName","src":"6104:9:26"}],"id":1026,"name":"VariableDeclaration","src":"6104:27:26"},{"attributes":{"constant":false,"name":"_magnitude","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1027,"name":"ElementaryTypeName","src":"6141:7:26"}],"id":1028,"name":"ArrayTypeName","src":"6141:9:26"}],"id":1029,"name":"VariableDeclaration","src":"6141:29:26"},{"attributes":{"constant":false,"name":"_loadable","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1030,"name":"ElementaryTypeName","src":"6180:4:26"}],"id":1031,"name":"ArrayTypeName","src":"6180:6:26"}],"id":1032,"name":"VariableDeclaration","src":"6180:25:26"},{"attributes":{"constant":false,"name":"_redeemable","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1033,"name":"ElementaryTypeName","src":"6215:4:26"}],"id":1034,"name":"ArrayTypeName","src":"6215:6:26"}],"id":1035,"name":"VariableDeclaration","src":"6215:27:26"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":1164,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1036,"name":"ElementaryTypeName","src":"6252:7:26"}],"id":1037,"name":"VariableDeclaration","src":"6252:19:26"}],"id":1038,"name":"ParameterList","src":"6058:219:26"},{"attributes":{"parameters":[null]},"children":[],"id":1041,"name":"ParameterList","src":"6297:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1039,"name":"Identifier","src":"6287:9:26"}],"id":1040,"name":"ModifierInvocation","src":"6287:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1042,"name":"Identifier","src":"6368:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1043,"name":"Identifier","src":"6389:7:26"}],"id":1044,"name":"MemberAccess","src":"6389:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"bytes32[] calldata","value":"_symbols"},"id":1045,"name":"Identifier","src":"6407:8:26"}],"id":1046,"name":"MemberAccess","src":"6407:15:26"}],"id":1047,"name":"BinaryOperation","src":"6389:33:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1048,"name":"Identifier","src":"6442:7:26"}],"id":1049,"name":"MemberAccess","src":"6442:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1029,"type":"uint256[] calldata","value":"_magnitude"},"id":1050,"name":"Identifier","src":"6460:10:26"}],"id":1051,"name":"MemberAccess","src":"6460:17:26"}],"id":1052,"name":"BinaryOperation","src":"6442:35:26"}],"id":1053,"name":"BinaryOperation","src":"6389:88:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1054,"name":"Identifier","src":"6497:7:26"}],"id":1055,"name":"MemberAccess","src":"6497:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1032,"type":"bool[] calldata","value":"_loadable"},"id":1056,"name":"Identifier","src":"6515:9:26"}],"id":1057,"name":"MemberAccess","src":"6515:16:26"}],"id":1058,"name":"BinaryOperation","src":"6497:34:26"}],"id":1059,"name":"BinaryOperation","src":"6389:142:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1060,"name":"Identifier","src":"6551:7:26"}],"id":1061,"name":"MemberAccess","src":"6551:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1032,"type":"bool[] calldata","value":"_loadable"},"id":1062,"name":"Identifier","src":"6569:9:26"}],"id":1063,"name":"MemberAccess","src":"6569:16:26"}],"id":1064,"name":"BinaryOperation","src":"6551:34:26"}],"id":1065,"name":"BinaryOperation","src":"6389:196:26"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":1066,"name":"Literal","src":"6599:32:26"}],"id":1067,"name":"FunctionCall","src":"6368:273:26"}],"id":1068,"name":"ExpressionStatement","src":"6368:273:26"},{"children":[{"attributes":{"assignments":[1070]},"children":[{"attributes":{"constant":false,"name":"i","scope":1162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1069,"name":"ElementaryTypeName","src":"6715:7:26"}],"id":1070,"name":"VariableDeclaration","src":"6715:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1071,"name":"Literal","src":"6727:1:26"}],"id":1072,"name":"VariableDeclarationStatement","src":"6715:13:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1073,"name":"Identifier","src":"6730:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1074,"name":"Identifier","src":"6734:7:26"}],"id":1075,"name":"MemberAccess","src":"6734:14:26"}],"id":1076,"name":"BinaryOperation","src":"6730:18:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1077,"name":"Identifier","src":"6750:1:26"}],"id":1078,"name":"UnaryOperation","src":"6750:3:26"}],"id":1079,"name":"ExpressionStatement","src":"6750:3:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1080,"name":"Identifier","src":"6832:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1081,"name":"Identifier","src":"6841:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1082,"name":"Identifier","src":"6855:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1083,"name":"Identifier","src":"6863:1:26"}],"id":1084,"name":"IndexAccess","src":"6855:10:26"}],"id":1085,"name":"IndexAccess","src":"6841:25:26"}],"id":1086,"name":"MemberAccess","src":"6841:35:26"}],"id":1087,"name":"UnaryOperation","src":"6840:36:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":1088,"name":"Literal","src":"6878:25:26"}],"id":1089,"name":"FunctionCall","src":"6832:72:26"}],"id":1090,"name":"ExpressionStatement","src":"6832:72:26"},{"attributes":{"assignments":[1092]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":1161,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1091,"name":"ElementaryTypeName","src":"6964:6:26"}],"id":1092,"name":"VariableDeclaration","src":"6964:20:26"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":3392,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":3347,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"bytes32[] calldata","value":"_symbols"},"id":1093,"name":"Identifier","src":"6987:8:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1094,"name":"Identifier","src":"6996:1:26"}],"id":1095,"name":"IndexAccess","src":"6987:11:26"}],"id":1096,"name":"MemberAccess","src":"6987:22:26"}],"id":1097,"name":"FunctionCall","src":"6987:24:26"}],"id":1098,"name":"MemberAccess","src":"6987:33:26"}],"id":1099,"name":"FunctionCall","src":"6987:35:26"}],"id":1100,"name":"VariableDeclarationStatement","src":"6964:58:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1101,"name":"Identifier","src":"7084:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1102,"name":"Identifier","src":"7098:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1103,"name":"Identifier","src":"7106:1:26"}],"id":1104,"name":"IndexAccess","src":"7098:10:26"}],"id":1105,"name":"IndexAccess","src":"7084:25:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":930,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":1106,"name":"Identifier","src":"7112:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1092,"type":"string memory","value":"symbol"},"id":1107,"name":"Identifier","src":"7144:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1029,"type":"uint256[] calldata","value":"_magnitude"},"id":1108,"name":"Identifier","src":"7179:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1109,"name":"Identifier","src":"7190:1:26"}],"id":1110,"name":"IndexAccess","src":"7179:13:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1111,"name":"Literal","src":"7216:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1112,"name":"Literal","src":"7246:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1032,"type":"bool[] calldata","value":"_loadable"},"id":1113,"name":"Identifier","src":"7278:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1114,"name":"Identifier","src":"7288:1:26"}],"id":1115,"name":"IndexAccess","src":"7278:12:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"bool[] calldata","value":"_redeemable"},"id":1116,"name":"Identifier","src":"7320:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1117,"name":"Identifier","src":"7332:1:26"}],"id":1118,"name":"IndexAccess","src":"7320:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1037,"type":"uint256","value":"_lastUpdate"},"id":1119,"name":"Identifier","src":"7364:11:26"}],"id":1120,"name":"FunctionCall","src":"7112:278:26"}],"id":1121,"name":"Assignment","src":"7084:306:26"}],"id":1122,"name":"ExpressionStatement","src":"7084:306:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1123,"name":"Identifier","src":"7462:18:26"}],"id":1125,"name":"MemberAccess","src":"7462:23:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1126,"name":"Identifier","src":"7486:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1127,"name":"Identifier","src":"7494:1:26"}],"id":1128,"name":"IndexAccess","src":"7486:10:26"}],"id":1129,"name":"FunctionCall","src":"7462:35:26"}],"id":1130,"name":"ExpressionStatement","src":"7462:35:26"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"bool[] calldata","value":"_redeemable"},"id":1131,"name":"Identifier","src":"7587:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1132,"name":"Identifier","src":"7599:1:26"}],"id":1133,"name":"IndexAccess","src":"7587:14:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1134,"name":"Identifier","src":"7621:18:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1135,"name":"Identifier","src":"7642:18:26"}],"id":1136,"name":"MemberAccess","src":"7642:22:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1137,"name":"Literal","src":"7665:1:26"}],"id":1138,"name":"FunctionCall","src":"7642:25:26"}],"id":1139,"name":"Assignment","src":"7621:46:26"}],"id":1140,"name":"ExpressionStatement","src":"7621:46:26"}],"id":1141,"name":"Block","src":"7603:79:26"}],"id":1142,"name":"IfStatement","src":"7583:99:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":869,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":1143,"name":"Identifier","src":"7742:10:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1144,"name":"Identifier","src":"7753:3:26"}],"id":1145,"name":"MemberAccess","src":"7753:10:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1146,"name":"Identifier","src":"7765:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1147,"name":"Identifier","src":"7773:1:26"}],"id":1148,"name":"IndexAccess","src":"7765:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1092,"type":"string memory","value":"symbol"},"id":1149,"name":"Identifier","src":"7777:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1029,"type":"uint256[] calldata","value":"_magnitude"},"id":1150,"name":"Identifier","src":"7785:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1151,"name":"Identifier","src":"7796:1:26"}],"id":1152,"name":"IndexAccess","src":"7785:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1032,"type":"bool[] calldata","value":"_loadable"},"id":1153,"name":"Identifier","src":"7800:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1154,"name":"Identifier","src":"7810:1:26"}],"id":1155,"name":"IndexAccess","src":"7800:12:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"bool[] calldata","value":"_redeemable"},"id":1156,"name":"Identifier","src":"7814:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1157,"name":"Identifier","src":"7826:1:26"}],"id":1158,"name":"IndexAccess","src":"7814:14:26"}],"id":1159,"name":"FunctionCall","src":"7742:87:26"}],"id":1160,"name":"EmitStatement","src":"7737:92:26"}],"id":1161,"name":"Block","src":"6755:1085:26"}],"id":1162,"name":"ForStatement","src":"6710:1130:26"}],"id":1163,"name":"Block","src":"6297:1549:26"}],"id":1164,"name":"FunctionDefinition","src":"6040:1806:26"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":1265,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1165,"name":"ElementaryTypeName","src":"7995:7:26"}],"id":1166,"name":"ArrayTypeName","src":"7995:9:26"}],"id":1167,"name":"VariableDeclaration","src":"7995:26:26"}],"id":1168,"name":"ParameterList","src":"7994:28:26"},{"attributes":{"parameters":[null]},"children":[],"id":1171,"name":"ParameterList","src":"8042:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1169,"name":"Identifier","src":"8032:9:26"}],"id":1170,"name":"ModifierInvocation","src":"8032:9:26"},{"children":[{"children":[{"attributes":{"assignments":[1173]},"children":[{"attributes":{"constant":false,"name":"i","scope":1263,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1172,"name":"ElementaryTypeName","src":"8160:7:26"}],"id":1173,"name":"VariableDeclaration","src":"8160:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1174,"name":"Literal","src":"8172:1:26"}],"id":1175,"name":"VariableDeclarationStatement","src":"8160:13:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"i"},"id":1176,"name":"Identifier","src":"8175:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"address[] calldata","value":"_tokens"},"id":1177,"name":"Identifier","src":"8179:7:26"}],"id":1178,"name":"MemberAccess","src":"8179:14:26"}],"id":1179,"name":"BinaryOperation","src":"8175:18:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"i"},"id":1180,"name":"Identifier","src":"8195:1:26"}],"id":1181,"name":"UnaryOperation","src":"8195:3:26"}],"id":1182,"name":"ExpressionStatement","src":"8195:3:26"},{"children":[{"attributes":{"assignments":[1184]},"children":[{"attributes":{"constant":false,"name":"token","scope":1262,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1183,"name":"ElementaryTypeName","src":"8254:7:26"}],"id":1184,"name":"VariableDeclaration","src":"8254:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"address[] calldata","value":"_tokens"},"id":1185,"name":"Identifier","src":"8270:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"i"},"id":1186,"name":"Identifier","src":"8278:1:26"}],"id":1187,"name":"IndexAccess","src":"8270:10:26"}],"id":1188,"name":"VariableDeclarationStatement","src":"8254:26:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1189,"name":"Identifier","src":"8363:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1190,"name":"Identifier","src":"8371:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1191,"name":"Identifier","src":"8385:5:26"}],"id":1192,"name":"IndexAccess","src":"8371:20:26"}],"id":1193,"name":"MemberAccess","src":"8371:30:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1194,"name":"Literal","src":"8403:24:26"}],"id":1195,"name":"FunctionCall","src":"8363:65:26"}],"id":1196,"name":"ExpressionStatement","src":"8363:65:26"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1197,"name":"Identifier","src":"8518:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1198,"name":"Identifier","src":"8532:5:26"}],"id":1199,"name":"IndexAccess","src":"8518:20:26"}],"id":1200,"name":"MemberAccess","src":"8518:31:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1201,"name":"Identifier","src":"8569:18:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3056,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1202,"name":"Identifier","src":"8590:18:26"}],"id":1203,"name":"MemberAccess","src":"8590:22:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1204,"name":"Literal","src":"8613:1:26"}],"id":1205,"name":"FunctionCall","src":"8590:25:26"}],"id":1206,"name":"Assignment","src":"8569:46:26"}],"id":1207,"name":"ExpressionStatement","src":"8569:46:26"}],"id":1208,"name":"Block","src":"8551:79:26"}],"id":1209,"name":"IfStatement","src":"8514:116:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1210,"name":"Identifier","src":"8690:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1211,"name":"Identifier","src":"8704:5:26"}],"id":1212,"name":"IndexAccess","src":"8690:20:26"}],"id":1213,"name":"UnaryOperation","src":"8683:27:26"}],"id":1214,"name":"ExpressionStatement","src":"8683:27:26"},{"children":[{"attributes":{"assignments":[1216]},"children":[{"attributes":{"constant":false,"name":"j","scope":1250,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1215,"name":"ElementaryTypeName","src":"8792:7:26"}],"id":1216,"name":"VariableDeclaration","src":"8792:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1217,"name":"Literal","src":"8804:1:26"}],"id":1218,"name":"VariableDeclarationStatement","src":"8792:13:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"j"},"id":1219,"name":"Identifier","src":"8807:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3056,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1220,"name":"Identifier","src":"8811:18:26"}],"id":1221,"name":"MemberAccess","src":"8811:25:26"}],"id":1222,"name":"MemberAccess","src":"8811:29:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1223,"name":"Literal","src":"8841:1:26"}],"id":1224,"name":"FunctionCall","src":"8811:32:26"}],"id":1225,"name":"BinaryOperation","src":"8807:36:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"j"},"id":1226,"name":"Identifier","src":"8845:1:26"}],"id":1227,"name":"UnaryOperation","src":"8845:3:26"}],"id":1228,"name":"ExpressionStatement","src":"8845:3:26"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1229,"name":"Identifier","src":"8872:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"j"},"id":1230,"name":"Identifier","src":"8891:1:26"}],"id":1231,"name":"IndexAccess","src":"8872:21:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1232,"name":"Identifier","src":"8897:5:26"}],"id":1233,"name":"BinaryOperation","src":"8872:30:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1234,"name":"Identifier","src":"8926:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"j"},"id":1235,"name":"Identifier","src":"8945:1:26"}],"id":1236,"name":"IndexAccess","src":"8926:21:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1237,"name":"Identifier","src":"8950:18:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3056,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1238,"name":"Identifier","src":"8969:18:26"}],"id":1239,"name":"MemberAccess","src":"8969:25:26"}],"id":1240,"name":"MemberAccess","src":"8969:29:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1241,"name":"Literal","src":"8999:1:26"}],"id":1242,"name":"FunctionCall","src":"8969:32:26"}],"id":1243,"name":"IndexAccess","src":"8950:52:26"}],"id":1244,"name":"Assignment","src":"8926:76:26"}],"id":1245,"name":"ExpressionStatement","src":"8926:76:26"},{"id":1246,"name":"Break","src":"9024:5:26"}],"id":1247,"name":"Block","src":"8904:144:26"}],"id":1248,"name":"IfStatement","src":"8868:180:26"}],"id":1249,"name":"Block","src":"8850:212:26"}],"id":1250,"name":"ForStatement","src":"8787:275:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1251,"name":"Identifier","src":"9075:18:26"}],"id":1253,"name":"MemberAccess","src":"9075:25:26"}],"id":1254,"name":"UnaryOperation","src":"9075:27:26"}],"id":1255,"name":"ExpressionStatement","src":"9075:27:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":875,"type":"function (address,address)","value":"RemovedToken"},"id":1256,"name":"Identifier","src":"9162:12:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1257,"name":"Identifier","src":"9175:3:26"}],"id":1258,"name":"MemberAccess","src":"9175:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1259,"name":"Identifier","src":"9187:5:26"}],"id":1260,"name":"FunctionCall","src":"9162:31:26"}],"id":1261,"name":"EmitStatement","src":"9157:36:26"}],"id":1262,"name":"Block","src":"8200:1004:26"}],"id":1263,"name":"ForStatement","src":"8155:1049:26"}],"id":1264,"name":"Block","src":"8042:1168:26"}],"id":1265,"name":"FunctionDefinition","src":"7973:1237:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1378,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1266,"name":"ElementaryTypeName","src":"9404:7:26"}],"id":1267,"name":"VariableDeclaration","src":"9404:14:26"},{"attributes":{"constant":false,"name":"_data","scope":1378,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1268,"name":"ElementaryTypeName","src":"9420:5:26"}],"id":1269,"name":"VariableDeclaration","src":"9420:20:26"}],"id":1270,"name":"ParameterList","src":"9403:38:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1378,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1271,"name":"ElementaryTypeName","src":"9465:7:26"}],"id":1272,"name":"VariableDeclaration","src":"9465:7:26"},{"attributes":{"constant":false,"name":"","scope":1378,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1273,"name":"ElementaryTypeName","src":"9474:7:26"}],"id":1274,"name":"VariableDeclaration","src":"9474:7:26"}],"id":1275,"name":"ParameterList","src":"9464:18:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1276,"name":"Identifier","src":"9669:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1277,"name":"Identifier","src":"9677:5:26"}],"id":1278,"name":"MemberAccess","src":"9677:12:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1279,"name":"Literal","src":"9693:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1280,"name":"Literal","src":"9697:2:26"}],"id":1281,"name":"BinaryOperation","src":"9693:6:26"}],"id":1282,"name":"BinaryOperation","src":"9677:22:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":1283,"name":"Literal","src":"9701:34:26"}],"id":1284,"name":"FunctionCall","src":"9669:67:26"}],"id":1285,"name":"ExpressionStatement","src":"9669:67:26"},{"attributes":{"assignments":[1287]},"children":[{"attributes":{"constant":false,"name":"signature","scope":1377,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1286,"name":"ElementaryTypeName","src":"9782:6:26"}],"id":1287,"name":"VariableDeclaration","src":"9782:16:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":4919,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1288,"name":"Identifier","src":"9801:5:26"}],"id":1289,"name":"MemberAccess","src":"9801:20:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1290,"name":"Literal","src":"9822:1:26"}],"id":1291,"name":"FunctionCall","src":"9801:23:26"}],"id":1292,"name":"VariableDeclarationStatement","src":"9782:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1293,"name":"Identifier","src":"9877:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":1679,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":1294,"name":"Identifier","src":"9885:22:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1267,"type":"address","value":"_token"},"id":1295,"name":"Identifier","src":"9908:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"bytes4","value":"signature"},"id":1296,"name":"Identifier","src":"9916:9:26"}],"id":1297,"name":"FunctionCall","src":"9885:41:26"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":1298,"name":"Literal","src":"9928:20:26"}],"id":1299,"name":"FunctionCall","src":"9877:72:26"}],"id":1300,"name":"ExpressionStatement","src":"9877:72:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"bytes4","value":"signature"},"id":1301,"name":"Identifier","src":"10048:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"bytes4","value":"_BURN"},"id":1302,"name":"Identifier","src":"10061:5:26"}],"id":1303,"name":"BinaryOperation","src":"10048:18:26"},{"children":[{"attributes":{"functionReturnParameters":1275},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1267,"type":"address","value":"_token"},"id":1304,"name":"Identifier","src":"10133:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4953,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1305,"name":"Identifier","src":"10141:5:26"}],"id":1306,"name":"MemberAccess","src":"10141:21:26"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1307,"name":"Literal","src":"10163:1:26"}],"id":1308,"name":"FunctionCall","src":"10141:24:26"}],"id":1309,"name":"TupleExpression","src":"10132:34:26"}],"id":1310,"name":"Return","src":"10125:41:26"}],"id":1311,"name":"Block","src":"10068:109:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"bytes4","value":"signature"},"id":1312,"name":"Identifier","src":"10187:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":915,"type":"bytes4","value":"_TRANSFER_FROM"},"id":1313,"name":"Identifier","src":"10200:14:26"}],"id":1314,"name":"BinaryOperation","src":"10187:27:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1315,"name":"Identifier","src":"10301:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1316,"name":"Identifier","src":"10309:5:26"}],"id":1317,"name":"MemberAccess","src":"10309:12:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1318,"name":"Literal","src":"10325:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1319,"name":"Literal","src":"10329:2:26"}],"id":1320,"name":"BinaryOperation","src":"10325:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1321,"name":"Literal","src":"10334:2:26"}],"id":1322,"name":"BinaryOperation","src":"10325:11:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1323,"name":"Literal","src":"10339:2:26"}],"id":1324,"name":"BinaryOperation","src":"10325:16:26"}],"id":1325,"name":"BinaryOperation","src":"10309:32:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":1326,"name":"Literal","src":"10343:34:26"}],"id":1327,"name":"FunctionCall","src":"10301:77:26"}],"id":1328,"name":"ExpressionStatement","src":"10301:77:26"},{"attributes":{"functionReturnParameters":1275},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":4885,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1329,"name":"Identifier","src":"10400:5:26"}],"id":1330,"name":"MemberAccess","src":"10400:21:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1331,"name":"Literal","src":"10422:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1332,"name":"Literal","src":"10426:2:26"}],"id":1333,"name":"BinaryOperation","src":"10422:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":1334,"name":"Literal","src":"10431:2:26"}],"id":1335,"name":"BinaryOperation","src":"10422:11:26"}],"id":1336,"name":"FunctionCall","src":"10400:34:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4953,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1337,"name":"Identifier","src":"10436:5:26"}],"id":1338,"name":"MemberAccess","src":"10436:21:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1339,"name":"Literal","src":"10458:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1340,"name":"Literal","src":"10462:2:26"}],"id":1341,"name":"BinaryOperation","src":"10458:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1342,"name":"Literal","src":"10467:2:26"}],"id":1343,"name":"BinaryOperation","src":"10458:11:26"}],"id":1344,"name":"FunctionCall","src":"10436:34:26"}],"id":1345,"name":"TupleExpression","src":"10399:72:26"}],"id":1346,"name":"Return","src":"10392:79:26"}],"id":1347,"name":"Block","src":"10216:266:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1348,"name":"Identifier","src":"10590:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1349,"name":"Identifier","src":"10598:5:26"}],"id":1350,"name":"MemberAccess","src":"10598:12:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1351,"name":"Literal","src":"10614:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1352,"name":"Literal","src":"10618:2:26"}],"id":1353,"name":"BinaryOperation","src":"10614:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1354,"name":"Literal","src":"10623:2:26"}],"id":1355,"name":"BinaryOperation","src":"10614:11:26"}],"id":1356,"name":"BinaryOperation","src":"10598:27:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":1357,"name":"Literal","src":"10627:39:26"}],"id":1358,"name":"FunctionCall","src":"10590:77:26"}],"id":1359,"name":"ExpressionStatement","src":"10590:77:26"},{"attributes":{"functionReturnParameters":1275},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":4885,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1360,"name":"Identifier","src":"10689:5:26"}],"id":1361,"name":"MemberAccess","src":"10689:21:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1362,"name":"Literal","src":"10711:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":1363,"name":"Literal","src":"10715:2:26"}],"id":1364,"name":"BinaryOperation","src":"10711:6:26"}],"id":1365,"name":"FunctionCall","src":"10689:29:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4953,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1366,"name":"Identifier","src":"10720:5:26"}],"id":1367,"name":"MemberAccess","src":"10720:21:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1368,"name":"Literal","src":"10742:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1369,"name":"Literal","src":"10746:2:26"}],"id":1370,"name":"BinaryOperation","src":"10742:6:26"}],"id":1371,"name":"FunctionCall","src":"10720:29:26"}],"id":1372,"name":"TupleExpression","src":"10688:62:26"}],"id":1373,"name":"Return","src":"10681:69:26"}],"id":1374,"name":"Block","src":"10488:273:26"}],"id":1375,"name":"IfStatement","src":"10183:578:26"}],"id":1376,"name":"IfStatement","src":"10044:717:26"}],"id":1377,"name":"Block","src":"9483:1284:26"}],"id":1378,"name":"FunctionDefinition","src":"9368:1399:26"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1410,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1379,"name":"ElementaryTypeName","src":"10866:7:26"}],"id":1380,"name":"VariableDeclaration","src":"10866:14:26"},{"attributes":{"constant":false,"name":"_loadable","scope":1410,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1381,"name":"ElementaryTypeName","src":"10882:4:26"}],"id":1382,"name":"VariableDeclaration","src":"10882:14:26"}],"id":1383,"name":"ParameterList","src":"10865:32:26"},{"attributes":{"parameters":[null]},"children":[],"id":1386,"name":"ParameterList","src":"10917:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1384,"name":"Identifier","src":"10907:9:26"}],"id":1385,"name":"ModifierInvocation","src":"10907:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1387,"name":"Identifier","src":"10969:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1388,"name":"Identifier","src":"10977:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"address","value":"_token"},"id":1389,"name":"Identifier","src":"10991:6:26"}],"id":1390,"name":"IndexAccess","src":"10977:21:26"}],"id":1391,"name":"MemberAccess","src":"10977:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1392,"name":"Literal","src":"11010:24:26"}],"id":1393,"name":"FunctionCall","src":"10969:66:26"}],"id":1394,"name":"ExpressionStatement","src":"10969:66:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":925,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1395,"name":"Identifier","src":"11108:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"address","value":"_token"},"id":1396,"name":"Identifier","src":"11122:6:26"}],"id":1397,"name":"IndexAccess","src":"11108:21:26"}],"id":1398,"name":"MemberAccess","src":"11108:30:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1382,"type":"bool","value":"_loadable"},"id":1399,"name":"Identifier","src":"11141:9:26"}],"id":1400,"name":"Assignment","src":"11108:42:26"}],"id":1401,"name":"ExpressionStatement","src":"11108:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":847,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":1402,"name":"Identifier","src":"11166:20:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1403,"name":"Identifier","src":"11187:3:26"}],"id":1404,"name":"MemberAccess","src":"11187:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"address","value":"_token"},"id":1405,"name":"Identifier","src":"11199:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1382,"type":"bool","value":"_loadable"},"id":1406,"name":"Identifier","src":"11207:9:26"}],"id":1407,"name":"FunctionCall","src":"11166:51:26"}],"id":1408,"name":"EmitStatement","src":"11161:56:26"}],"id":1409,"name":"Block","src":"10917:307:26"}],"id":1410,"name":"FunctionDefinition","src":"10840:384:26"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1442,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1411,"name":"ElementaryTypeName","src":"11327:7:26"}],"id":1412,"name":"VariableDeclaration","src":"11327:14:26"},{"attributes":{"constant":false,"name":"_redeemable","scope":1442,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1413,"name":"ElementaryTypeName","src":"11343:4:26"}],"id":1414,"name":"VariableDeclaration","src":"11343:16:26"}],"id":1415,"name":"ParameterList","src":"11326:34:26"},{"attributes":{"parameters":[null]},"children":[],"id":1418,"name":"ParameterList","src":"11380:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1416,"name":"Identifier","src":"11370:9:26"}],"id":1417,"name":"ModifierInvocation","src":"11370:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1419,"name":"Identifier","src":"11432:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1420,"name":"Identifier","src":"11440:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"address","value":"_token"},"id":1421,"name":"Identifier","src":"11454:6:26"}],"id":1422,"name":"IndexAccess","src":"11440:21:26"}],"id":1423,"name":"MemberAccess","src":"11440:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1424,"name":"Literal","src":"11473:24:26"}],"id":1425,"name":"FunctionCall","src":"11432:66:26"}],"id":1426,"name":"ExpressionStatement","src":"11432:66:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1427,"name":"Identifier","src":"11573:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"address","value":"_token"},"id":1428,"name":"Identifier","src":"11587:6:26"}],"id":1429,"name":"IndexAccess","src":"11573:21:26"}],"id":1430,"name":"MemberAccess","src":"11573:32:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1414,"type":"bool","value":"_redeemable"},"id":1431,"name":"Identifier","src":"11608:11:26"}],"id":1432,"name":"Assignment","src":"11573:46:26"}],"id":1433,"name":"ExpressionStatement","src":"11573:46:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":855,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":1434,"name":"Identifier","src":"11635:22:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1435,"name":"Identifier","src":"11658:3:26"}],"id":1436,"name":"MemberAccess","src":"11658:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"address","value":"_token"},"id":1437,"name":"Identifier","src":"11670:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1414,"type":"bool","value":"_redeemable"},"id":1438,"name":"Identifier","src":"11678:11:26"}],"id":1439,"name":"FunctionCall","src":"11635:55:26"}],"id":1440,"name":"EmitStatement","src":"11630:60:26"}],"id":1441,"name":"Block","src":"11380:317:26"}],"id":1442,"name":"FunctionDefinition","src":"11299:398:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1483,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1443,"name":"ElementaryTypeName","src":"11999:7:26"}],"id":1444,"name":"VariableDeclaration","src":"11999:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":1483,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1445,"name":"ElementaryTypeName","src":"12015:7:26"}],"id":1446,"name":"VariableDeclaration","src":"12015:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":1483,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1447,"name":"ElementaryTypeName","src":"12030:7:26"}],"id":1448,"name":"VariableDeclaration","src":"12030:19:26"}],"id":1449,"name":"ParameterList","src":"11998:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":1452,"name":"ParameterList","src":"12078:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1020,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":1450,"name":"Identifier","src":"12060:17:26"}],"id":1451,"name":"ModifierInvocation","src":"12060:17:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1453,"name":"Identifier","src":"12130:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1454,"name":"Identifier","src":"12138:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1444,"type":"address","value":"_token"},"id":1455,"name":"Identifier","src":"12152:6:26"}],"id":1456,"name":"IndexAccess","src":"12138:21:26"}],"id":1457,"name":"MemberAccess","src":"12138:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1458,"name":"Literal","src":"12171:24:26"}],"id":1459,"name":"FunctionCall","src":"12130:66:26"}],"id":1460,"name":"ExpressionStatement","src":"12130:66:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":921,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1461,"name":"Identifier","src":"12242:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1444,"type":"address","value":"_token"},"id":1462,"name":"Identifier","src":"12256:6:26"}],"id":1463,"name":"IndexAccess","src":"12242:21:26"}],"id":1464,"name":"MemberAccess","src":"12242:26:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1446,"type":"uint256","value":"_rate"},"id":1465,"name":"Identifier","src":"12271:5:26"}],"id":1466,"name":"Assignment","src":"12242:34:26"}],"id":1467,"name":"ExpressionStatement","src":"12242:34:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":929,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1468,"name":"Identifier","src":"12339:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1444,"type":"address","value":"_token"},"id":1469,"name":"Identifier","src":"12353:6:26"}],"id":1470,"name":"IndexAccess","src":"12339:21:26"}],"id":1471,"name":"MemberAccess","src":"12339:32:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1448,"type":"uint256","value":"_updateDate"},"id":1472,"name":"Identifier","src":"12374:11:26"}],"id":1473,"name":"Assignment","src":"12339:46:26"}],"id":1474,"name":"ExpressionStatement","src":"12339:46:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":839,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":1475,"name":"Identifier","src":"12439:16:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1476,"name":"Identifier","src":"12456:3:26"}],"id":1477,"name":"MemberAccess","src":"12456:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1444,"type":"address","value":"_token"},"id":1478,"name":"Identifier","src":"12468:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1446,"type":"uint256","value":"_rate"},"id":1479,"name":"Identifier","src":"12476:5:26"}],"id":1480,"name":"FunctionCall","src":"12439:43:26"}],"id":1481,"name":"EmitStatement","src":"12434:48:26"}],"id":1482,"name":"Block","src":"12078:411:26"}],"id":1483,"name":"FunctionDefinition","src":"11974:515:26"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1507,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1484,"name":"ElementaryTypeName","src":"12593:15:26"}],"id":1485,"name":"VariableDeclaration","src":"12593:19:26"},{"attributes":{"constant":false,"name":"_asset","scope":1507,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1486,"name":"ElementaryTypeName","src":"12614:7:26"}],"id":1487,"name":"VariableDeclaration","src":"12614:14:26"},{"attributes":{"constant":false,"name":"_amount","scope":1507,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1488,"name":"ElementaryTypeName","src":"12630:7:26"}],"id":1489,"name":"VariableDeclaration","src":"12630:15:26"}],"id":1490,"name":"ParameterList","src":"12592:54:26"},{"attributes":{"parameters":[null]},"children":[],"id":1493,"name":"ParameterList","src":"12666:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1491,"name":"Identifier","src":"12656:9:26"}],"id":1492,"name":"ModifierInvocation","src":"12656:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5089,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":1494,"name":"Identifier","src":"12676:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1485,"type":"address payable","value":"_to"},"id":1495,"name":"Identifier","src":"12690:3:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1487,"type":"address","value":"_asset"},"id":1496,"name":"Identifier","src":"12695:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1489,"type":"uint256","value":"_amount"},"id":1497,"name":"Identifier","src":"12703:7:26"}],"id":1498,"name":"FunctionCall","src":"12676:35:26"}],"id":1499,"name":"ExpressionStatement","src":"12676:35:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":903,"type":"function (address,address,uint256)","value":"Claimed"},"id":1500,"name":"Identifier","src":"12726:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1485,"type":"address payable","value":"_to"},"id":1501,"name":"Identifier","src":"12734:3:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1487,"type":"address","value":"_asset"},"id":1502,"name":"Identifier","src":"12739:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1489,"type":"uint256","value":"_amount"},"id":1503,"name":"Identifier","src":"12747:7:26"}],"id":1504,"name":"FunctionCall","src":"12726:29:26"}],"id":1505,"name":"EmitStatement","src":"12721:34:26"}],"id":1506,"name":"Block","src":"12666:96:26"}],"id":1507,"name":"FunctionDefinition","src":"12578:184:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":1549,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1508,"name":"ElementaryTypeName","src":"13336:7:26"}],"id":1509,"name":"VariableDeclaration","src":"13336:10:26"}],"id":1510,"name":"ParameterList","src":"13335:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1511,"name":"ElementaryTypeName","src":"13371:6:26"}],"id":1512,"name":"VariableDeclaration","src":"13371:13:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1513,"name":"ElementaryTypeName","src":"13386:7:26"}],"id":1514,"name":"VariableDeclaration","src":"13386:7:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1515,"name":"ElementaryTypeName","src":"13395:7:26"}],"id":1516,"name":"VariableDeclaration","src":"13395:7:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1517,"name":"ElementaryTypeName","src":"13404:4:26"}],"id":1518,"name":"VariableDeclaration","src":"13404:4:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1519,"name":"ElementaryTypeName","src":"13410:4:26"}],"id":1520,"name":"VariableDeclaration","src":"13410:4:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1521,"name":"ElementaryTypeName","src":"13416:4:26"}],"id":1522,"name":"VariableDeclaration","src":"13416:4:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1523,"name":"ElementaryTypeName","src":"13422:7:26"}],"id":1524,"name":"VariableDeclaration","src":"13422:7:26"}],"id":1525,"name":"ParameterList","src":"13370:60:26"},{"children":[{"attributes":{"assignments":[1527]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":1548,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":930,"type":"struct TokenWhitelist.Token"},"id":1526,"name":"UserDefinedTypeName","src":"13441:5:26"}],"id":1527,"name":"VariableDeclaration","src":"13441:23:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1528,"name":"Identifier","src":"13467:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1509,"type":"address","value":"_a"},"id":1529,"name":"Identifier","src":"13481:2:26"}],"id":1530,"name":"IndexAccess","src":"13467:17:26"}],"id":1531,"name":"VariableDeclarationStatement","src":"13441:43:26"},{"attributes":{"functionReturnParameters":1525},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":917,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1532,"name":"Identifier","src":"13502:9:26"}],"id":1533,"name":"MemberAccess","src":"13502:16:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1534,"name":"Identifier","src":"13520:9:26"}],"id":1535,"name":"MemberAccess","src":"13520:19:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":921,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1536,"name":"Identifier","src":"13541:9:26"}],"id":1537,"name":"MemberAccess","src":"13541:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1538,"name":"Identifier","src":"13557:9:26"}],"id":1539,"name":"MemberAccess","src":"13557:19:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":925,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1540,"name":"Identifier","src":"13578:9:26"}],"id":1541,"name":"MemberAccess","src":"13578:18:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1542,"name":"Identifier","src":"13598:9:26"}],"id":1543,"name":"MemberAccess","src":"13598:20:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":929,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1544,"name":"Identifier","src":"13620:9:26"}],"id":1545,"name":"MemberAccess","src":"13620:20:26"}],"id":1546,"name":"TupleExpression","src":"13501:140:26"}],"id":1547,"name":"Return","src":"13494:147:26"}],"id":1548,"name":"Block","src":"13431:217:26"}],"id":1549,"name":"FunctionDefinition","src":"13314:334:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1550,"name":"ParameterList","src":"14176:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1551,"name":"ElementaryTypeName","src":"14202:6:26"}],"id":1552,"name":"VariableDeclaration","src":"14202:13:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1553,"name":"ElementaryTypeName","src":"14217:7:26"}],"id":1554,"name":"VariableDeclaration","src":"14217:7:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1555,"name":"ElementaryTypeName","src":"14226:7:26"}],"id":1556,"name":"VariableDeclaration","src":"14226:7:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1557,"name":"ElementaryTypeName","src":"14235:4:26"}],"id":1558,"name":"VariableDeclaration","src":"14235:4:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1559,"name":"ElementaryTypeName","src":"14241:4:26"}],"id":1560,"name":"VariableDeclaration","src":"14241:4:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1561,"name":"ElementaryTypeName","src":"14247:4:26"}],"id":1562,"name":"VariableDeclaration","src":"14247:4:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1563,"name":"ElementaryTypeName","src":"14253:7:26"}],"id":1564,"name":"VariableDeclaration","src":"14253:7:26"}],"id":1565,"name":"ParameterList","src":"14201:60:26"},{"children":[{"attributes":{"assignments":[1567]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":1588,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":930,"type":"struct TokenWhitelist.Token"},"id":1566,"name":"UserDefinedTypeName","src":"14272:5:26"}],"id":1567,"name":"VariableDeclaration","src":"14272:28:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1568,"name":"Identifier","src":"14303:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"address","value":"_stablecoin"},"id":1569,"name":"Identifier","src":"14317:11:26"}],"id":1570,"name":"IndexAccess","src":"14303:26:26"}],"id":1571,"name":"VariableDeclarationStatement","src":"14272:57:26"},{"attributes":{"functionReturnParameters":1565},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":917,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1572,"name":"Identifier","src":"14360:14:26"}],"id":1573,"name":"MemberAccess","src":"14360:21:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1574,"name":"Identifier","src":"14395:14:26"}],"id":1575,"name":"MemberAccess","src":"14395:24:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":921,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1576,"name":"Identifier","src":"14433:14:26"}],"id":1577,"name":"MemberAccess","src":"14433:19:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1578,"name":"Identifier","src":"14466:14:26"}],"id":1579,"name":"MemberAccess","src":"14466:24:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":925,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1580,"name":"Identifier","src":"14504:14:26"}],"id":1581,"name":"MemberAccess","src":"14504:23:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1582,"name":"Identifier","src":"14541:14:26"}],"id":1583,"name":"MemberAccess","src":"14541:25:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":929,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1584,"name":"Identifier","src":"14580:14:26"}],"id":1585,"name":"MemberAccess","src":"14580:25:26"}],"id":1586,"name":"TupleExpression","src":"14346:269:26"}],"id":1587,"name":"Return","src":"14339:276:26"}],"id":1588,"name":"Block","src":"14262:360:26"}],"id":1589,"name":"FunctionDefinition","src":"14150:472:26"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1590,"name":"ParameterList","src":"14777:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1598,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1591,"name":"ElementaryTypeName","src":"14803:7:26"}],"id":1592,"name":"ArrayTypeName","src":"14803:9:26"}],"id":1593,"name":"VariableDeclaration","src":"14803:16:26"}],"id":1594,"name":"ParameterList","src":"14802:18:26"},{"children":[{"attributes":{"functionReturnParameters":1594},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1595,"name":"Identifier","src":"14838:18:26"}],"id":1596,"name":"Return","src":"14831:25:26"}],"id":1597,"name":"Block","src":"14821:42:26"}],"id":1598,"name":"FunctionDefinition","src":"14751:112:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1599,"name":"ParameterList","src":"15015:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1656,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1600,"name":"ElementaryTypeName","src":"15041:7:26"}],"id":1601,"name":"ArrayTypeName","src":"15041:9:26"}],"id":1602,"name":"VariableDeclaration","src":"15041:16:26"}],"id":1603,"name":"ParameterList","src":"15040:18:26"},{"children":[{"attributes":{"assignments":[1607]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":1655,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":1605,"name":"ElementaryTypeName","src":"15069:7:26"}],"id":1606,"name":"ArrayTypeName","src":"15069:9:26"}],"id":1607,"name":"VariableDeclaration","src":"15069:36:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1608,"name":"ElementaryTypeName","src":"15112:7:26"}],"id":1609,"name":"ArrayTypeName","src":"15112:9:26"}],"id":1610,"name":"NewExpression","src":"15108:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1611,"name":"Identifier","src":"15122:18:26"}],"id":1612,"name":"FunctionCall","src":"15108:33:26"}],"id":1613,"name":"VariableDeclarationStatement","src":"15069:72:26"},{"attributes":{"assignments":[1615]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":1655,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1614,"name":"ElementaryTypeName","src":"15151:7:26"}],"id":1615,"name":"VariableDeclaration","src":"15151:23:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1616,"name":"Literal","src":"15177:1:26"}],"id":1617,"name":"VariableDeclarationStatement","src":"15151:27:26"},{"children":[{"attributes":{"assignments":[1619]},"children":[{"attributes":{"constant":false,"name":"i","scope":1652,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1618,"name":"ElementaryTypeName","src":"15193:7:26"}],"id":1619,"name":"VariableDeclaration","src":"15193:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1620,"name":"Literal","src":"15205:1:26"}],"id":1621,"name":"VariableDeclarationStatement","src":"15193:13:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1619,"type":"uint256","value":"i"},"id":1622,"name":"Identifier","src":"15208:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1623,"name":"Identifier","src":"15212:18:26"}],"id":1624,"name":"MemberAccess","src":"15212:25:26"}],"id":1625,"name":"BinaryOperation","src":"15208:29:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1619,"type":"uint256","value":"i"},"id":1626,"name":"Identifier","src":"15239:1:26"}],"id":1627,"name":"UnaryOperation","src":"15239:3:26"}],"id":1628,"name":"ExpressionStatement","src":"15239:3:26"},{"children":[{"attributes":{"assignments":[1630]},"children":[{"attributes":{"constant":false,"name":"token","scope":1651,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1629,"name":"ElementaryTypeName","src":"15258:7:26"}],"id":1630,"name":"VariableDeclaration","src":"15258:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1631,"name":"Identifier","src":"15274:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1619,"type":"uint256","value":"i"},"id":1632,"name":"Identifier","src":"15293:1:26"}],"id":1633,"name":"IndexAccess","src":"15274:21:26"}],"id":1634,"name":"VariableDeclarationStatement","src":"15258:37:26"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1635,"name":"Identifier","src":"15313:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1630,"type":"address","value":"token"},"id":1636,"name":"Identifier","src":"15327:5:26"}],"id":1637,"name":"IndexAccess","src":"15313:20:26"}],"id":1638,"name":"MemberAccess","src":"15313:31:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1607,"type":"address[] memory","value":"redeemableAddresses"},"id":1639,"name":"Identifier","src":"15364:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1615,"type":"uint256","value":"redeemableIndex"},"id":1640,"name":"Identifier","src":"15384:15:26"}],"id":1641,"name":"IndexAccess","src":"15364:36:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1630,"type":"address","value":"token"},"id":1642,"name":"Identifier","src":"15403:5:26"}],"id":1643,"name":"Assignment","src":"15364:44:26"}],"id":1644,"name":"ExpressionStatement","src":"15364:44:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1615,"type":"uint256","value":"redeemableIndex"},"id":1645,"name":"Identifier","src":"15426:15:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1646,"name":"Literal","src":"15445:1:26"}],"id":1647,"name":"Assignment","src":"15426:20:26"}],"id":1648,"name":"ExpressionStatement","src":"15426:20:26"}],"id":1649,"name":"Block","src":"15346:115:26"}],"id":1650,"name":"IfStatement","src":"15309:152:26"}],"id":1651,"name":"Block","src":"15244:227:26"}],"id":1652,"name":"ForStatement","src":"15188:283:26"},{"attributes":{"functionReturnParameters":1603},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1607,"type":"address[] memory","value":"redeemableAddresses"},"id":1653,"name":"Identifier","src":"15487:19:26"}],"id":1654,"name":"Return","src":"15480:26:26"}],"id":1655,"name":"Block","src":"15059:454:26"}],"id":1656,"name":"FunctionDefinition","src":"14990:523:26"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1679,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1657,"name":"ElementaryTypeName","src":"15727:7:26"}],"id":1658,"name":"VariableDeclaration","src":"15727:14:26"},{"attributes":{"constant":false,"name":"_methodId","scope":1679,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1659,"name":"ElementaryTypeName","src":"15743:6:26"}],"id":1660,"name":"VariableDeclaration","src":"15743:16:26"}],"id":1661,"name":"ParameterList","src":"15726:34:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1679,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1662,"name":"ElementaryTypeName","src":"15782:4:26"}],"id":1663,"name":"VariableDeclaration","src":"15782:4:26"}],"id":1664,"name":"ParameterList","src":"15781:6:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1665,"name":"Identifier","src":"15798:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1666,"name":"Identifier","src":"15806:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1658,"type":"address","value":"_token"},"id":1667,"name":"Identifier","src":"15820:6:26"}],"id":1668,"name":"IndexAccess","src":"15806:21:26"}],"id":1669,"name":"MemberAccess","src":"15806:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":1670,"name":"Literal","src":"15839:20:26"}],"id":1671,"name":"FunctionCall","src":"15798:62:26"}],"id":1672,"name":"ExpressionStatement","src":"15798:62:26"},{"attributes":{"functionReturnParameters":1664},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1673,"name":"Identifier","src":"15878:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1660,"type":"bytes4","value":"_methodId"},"id":1674,"name":"Identifier","src":"15897:9:26"}],"id":1675,"name":"IndexAccess","src":"15878:29:26"}],"id":1676,"name":"TupleExpression","src":"15877:31:26"}],"id":1677,"name":"Return","src":"15870:38:26"}],"id":1678,"name":"Block","src":"15788:127:26"}],"id":1679,"name":"FunctionDefinition","src":"15695:220:26"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":1692,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1680,"name":"ElementaryTypeName","src":"16104:6:26"}],"id":1681,"name":"VariableDeclaration","src":"16104:16:26"}],"id":1682,"name":"ParameterList","src":"16103:18:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1692,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1683,"name":"ElementaryTypeName","src":"16145:4:26"}],"id":1684,"name":"VariableDeclaration","src":"16145:4:26"}],"id":1685,"name":"ParameterList","src":"16144:6:26"},{"children":[{"attributes":{"functionReturnParameters":1685},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1686,"name":"Identifier","src":"16169:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1681,"type":"bytes4","value":"_methodId"},"id":1687,"name":"Identifier","src":"16188:9:26"}],"id":1688,"name":"IndexAccess","src":"16169:29:26"}],"id":1689,"name":"TupleExpression","src":"16168:31:26"}],"id":1690,"name":"Return","src":"16161:38:26"}],"id":1691,"name":"Block","src":"16151:55:26"}],"id":1692,"name":"FunctionDefinition","src":"16070:136:26"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1693,"name":"ParameterList","src":"16342:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1694,"name":"ElementaryTypeName","src":"16368:7:26"}],"id":1695,"name":"VariableDeclaration","src":"16368:7:26"}],"id":1696,"name":"ParameterList","src":"16367:9:26"},{"children":[{"attributes":{"functionReturnParameters":1696},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1697,"name":"Identifier","src":"16394:18:26"}],"id":1698,"name":"Return","src":"16387:25:26"}],"id":1699,"name":"Block","src":"16377:42:26"}],"id":1700,"name":"FunctionDefinition","src":"16316:103:26"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1701,"name":"ParameterList","src":"16570:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1708,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1702,"name":"ElementaryTypeName","src":"16596:7:26"}],"id":1703,"name":"VariableDeclaration","src":"16596:7:26"}],"id":1704,"name":"ParameterList","src":"16595:9:26"},{"children":[{"attributes":{"functionReturnParameters":1704},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"address","value":"_stablecoin"},"id":1705,"name":"Identifier","src":"16622:11:26"}],"id":1706,"name":"Return","src":"16615:18:26"}],"id":1707,"name":"Block","src":"16605:35:26"}],"id":1708,"name":"FunctionDefinition","src":"16551:89:26"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1709,"name":"ParameterList","src":"16774:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1716,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1710,"name":"ElementaryTypeName","src":"16800:7:26"}],"id":1711,"name":"VariableDeclaration","src":"16800:7:26"}],"id":1712,"name":"ParameterList","src":"16799:9:26"},{"children":[{"attributes":{"functionReturnParameters":1712},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":947,"type":"bytes32","value":"_oracleNode"},"id":1713,"name":"Identifier","src":"16826:11:26"}],"id":1714,"name":"Return","src":"16819:18:26"}],"id":1715,"name":"Block","src":"16809:35:26"}],"id":1716,"name":"FunctionDefinition","src":"16755:89:26"}],"id":1717,"name":"ContractDefinition","src":"1939:14907:26"}],"id":1718,"name":"SourceUnit","src":"774:16073:26"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:22;;-1:-1:-1;;;;;;1543:18:22;-1:-1:-1;;;;;1543:18:22;;;-1:-1:-1;;;;1571:32:22;;;;2239:84:0;;2314:5;1571:32:22;-1:-1:-1;;;1687:15:22;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:22;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:22;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:22:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:22:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:22;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:22:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:22;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:22:-;3222:4;3245:15;-1:-1:-1;;;3245:15:22;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:22:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:22;;;;3656:57;;;;;-1:-1:-1;;;3656:57:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:22;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:22;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:22:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:22;;;;2404:57;;;;;-1:-1:-1;;;2404:57:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:22;;2534:70;;;;-1:-1:-1;;;2534:70:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:22;-1:-1:-1;;;2689:31:22;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:22;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:22;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:22;:17;;-1:-1:-1;;;;;;3032:17:22;-1:-1:-1;;;;;3032:17:22;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:22:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:22;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:24:-;-1:-1:-1;;;;;1510:20:24;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:24;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:24;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:24;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:6:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:7:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:7;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:7;-1:-1:-1;;;;;2567:10:7;;;;;;;;;;1897:2174;;5:156:-1;94:13;;112:44;94:13;112:44;;;79:82;;;;;168:285;;294:2;282:9;273:7;269:23;265:32;262:2;;;310:1;307;300:12;262:2;345:1;362:75;429:7;409:9;362:75;;;352:85;256:197;-1:-1;;;;256:197;460:91;;522:24;540:5;522:24;;558:102;;631:24;649:5;631:24;;667:121;-1:-1;;;;;729:54;;712:76;795:139;875:35;904:5;875:35;;;868:5;865:46;855:2;;925:1;922;915:12;855:2;849:85;;;1897:2174:7;;;;;;","srcmap-runtime":"1897:2174:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:13;;;;;;;;;:::i;:::-;;573:184:17;;;;;;;;;:::i;1721:953:14:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:10;;;;;;;;;:::i;:::-;;;;;;;;;612:169:16;;;;;;;;;:::i;505:166:12:-;;;;;;;;;:::i;980:228:11:-;;;;;;;;;:::i;3269:231:7:-;;;;;;;;;:::i;4901:153:13:-;;;;;;;;;:::i;974:127:17:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:13;;;;;;;;;:::i;582:292:10:-;;;;;;;;;:::i;844:101:15:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:11:-;;;;;;;;;:::i;4519:168:13:-;;;;;;;;;:::i;3703:366:7:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:13;;;;;;;;;:::i;838:108:12:-;;;;;;;;;:::i;1023:133:16:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:13;;;;;;;;;:::i;681:140:11:-;;;;;;;;;:::i;858:226:14:-;;;;;;;;;:::i;1514:127:11:-;;;;;;;;;:::i;2320:80:7:-;;;;;;;;;:::i;1107:169:17:-;1174:4;-1:-1:-1;;;;;;1197:32:17;;-1:-1:-1;;;1197:32:17;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:13:-;2932:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:13;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:13;;:18;-1:-1:-1;;3185:18:13;:15;:18;;-1:-1:-1;3185:18:13:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:13;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:13;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:13;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:13;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:13;;4052:6;;-1:-1:-1;4060:20:13;;;;-1:-1:-1;4082:17:13;4012:11;:88::i;:::-;400:1:9;;;;;2854:1263:13;;;;:::o;573:184:17:-;668:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:17;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:14:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:14;;;;;;;;;;-1:-1:-1;;;;;1849:29:14;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:14;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:14;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:14;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:14;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:14;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:14;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:14;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:14;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:14;;-1:-1:-1;2373:103:14;-1:-1:-1;2489:8:14;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:14;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:14;;-1:-1:-1;;;1721:953:14;;;;;:::o;1195:454:10:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:10;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:10;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:10;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:10;-1:-1:-1;1195:454:10;;;;;;:::o;612:169:16:-;687:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:16;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:16;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:12:-;584:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:12;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:11;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:11:o;3269:231:7:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:7;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:7;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:13:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:17:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:17;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:13:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:10:-;674:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:10;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:10;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:15:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:15;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:11;1302:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:11;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:13:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:7;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:7;-1:-1:-1;3844:6:7;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:7;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:7;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:7;;3840:199;;;-1:-1:-1;3703:366:7;;;;:::o;5193:128:13:-;5247:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:13;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:12:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:16;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:13:-;5617:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:13;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:13;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:13;;:16;-1:-1:-1;5701:4:13;;-1:-1:-1;5701:4:13;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:9;5541:225:13;;;;:::o;681:140:11:-;743:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:11;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:14:-;955:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:14;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:14;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:14;-1:-1:-1;;;;;971:43:14;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:11:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:11;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:16:-;1229:4;-1:-1:-1;;;;;;1252:34:16;;-1:-1:-1;;;1252:34:16;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:7:-;3596:3;;:15;;-1:-1:-1;;;3596:15:7;;3564:4;;;;-1:-1:-1;;;;;3596:3:7;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:7;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:7;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:7;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:7;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:7;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:8:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:6:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:13:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:13;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:13;;;;;;-1:-1:-1;;6760:43:13;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:13;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:13;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:8:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:8;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:8;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:8;;:::o;414:204:9:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:9;576:10;570:17;-1:-1:-1;;;566:36:9;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:9;87:34:-1;-1:-1;;;;;;776:20:9;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:9;743:64::o;951:169:15:-;1018:4;-1:-1:-1;;;;;;1041:32:15;;-1:-1:-1;;;1041:32:15;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:8:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:8;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:8:o;8685:393:6:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:6;87:34:-1;135:17;;-1:-1;8858:14:6;-1:-1:-1;8839:33:6;-1:-1:-1;8960:2:6;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:6;;8685:393;-1:-1:-1;;;;;8685:393:6:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:6:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:6;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:6;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:14:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:14;;:11;-1:-1:-1;;;;;2770:37:14;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:6:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:6;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:6;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:6;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:6;;513:2;499:26;489:42;;468:73::o;6035:245:13:-;6102:4;-1:-1:-1;;;;;;6125:38:13;;-1:-1:-1;;;6125:38:13;;:93;;-1:-1:-1;;;;;;;6182:36:13;;-1:-1:-1;;;6182:36:13;6125:93;:148;;;;6237:36;6261:11;1019:4:12;-1:-1:-1;;;;;;1042:40:12;;-1:-1:-1;;;1042:40:12;;:80;;;1086:36;1110:11;1714:4:11;-1:-1:-1;;;;;;1737:32:11;;-1:-1:-1;;;1737:32:11;;:71;;-1:-1:-1;;;;;;;1773:35:11;;-1:-1:-1;;;1773:35:11;1737:71;:111;;;;1812:36;1836:11;1722:4:10;-1:-1:-1;;;;;;1745:31:10;;-1:-1:-1;;;1745:31:10;;:71;;-1:-1:-1;;;;;;;;;;204:32:9;;;1780:36:10;114:129:9:o;1897:2174:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:7;;;-1:-1:-1;1897:2174:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:8:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:18:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:18:-;;;;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:19:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:24;;;;;;;","srcmap-runtime":"961:696:24:-;;;;;"},"mocks/tokenWhitelistableExporter.sol:TokenWhitelistableExporter":{"bin":"608060405234801561001057600080fd5b50604051610c5b380380610c5b8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03909316929092178255600155610bed90819061006e90396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023e5780637d73b23114610246578063877337b01461026a578063afc72e9314610284578063d545782e14610325578063dcc922bc14610359576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b85780633efec5e9146101de578063443dd2a4146101e6575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b0316610390565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101ce57600080fd5b50356001600160a01b03166103bb565b61010e6103c6565b6101ee6103ef565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022a578181015183820152602001610212565b505050509050019250505060405180910390f35b6101ee6103fe565b61024e610408565b604080516001600160a01b039092168252519081900360200190f35b610272610417565b60408051918252519081900360200190f35b6103026004803603604081101561029a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111600160201b831117156102f757600080fd5b50909250905061041d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103576004803603606081101561033b57600080fd5b506001600160a01b03813516906020810135906040013561046c565b005b6100d46004803603602081101561036f57600080fd5b50356001600160a01b031661047c565b600061038a82610487565b92915050565b60606000806000806000806103a4886104a1565b959e949d50929b5090995097509550909350915050565b600061038a82610633565b60606000806000806000806103d961064d565b959d949c50929a50909850965094509092509050565b60606103f96107bc565b905090565b60606103f96108cd565b6000546001600160a01b031690565b60015490565b6000806104608585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091292505050565b91509150935093915050565b610477838383610a1c565b505050565b600061038a82610aab565b600080610493836104a1565b509098975050505050505050565b60606000806000806000806104b7600154610ac4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561054957600080fd5b8101908080516040519392919084600160201b82111561056857600080fd5b90830190602082018581111561057d57600080fd5b8251600160201b81118282018810171561059657600080fd5b82525081516020918201929091019080838360005b838110156105c35781810151838201526020016105ab565b50505050905090810190601f1680156105f05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008061063f836104a1565b509198975050505050505050565b6060600080600080600080610663600154610ac4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106d857600080fd5b8101908080516040519392919084600160201b8211156106f757600080fd5b90830190602082018581111561070c57600080fd5b8251600160201b81118282018810171561072557600080fd5b82525081516020918201929091019080838360005b8381101561075257818101518382015260200161073a565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107c9600154610ac4565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b505afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083e57600080fd5b8101908080516040519392919084600160201b82111561085d57600080fd5b90830190602082018581111561087257600080fd5b82518660208202830111600160201b8211171561088e57600080fd5b82525081516020918201928201910280838360005b838110156108bb5781810151838201526020016108a3565b50505050905001604052505050905090565b60606108da600154610ac4565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b600080610920600154610ac4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561099457818101518382015260200161097c565b50505050905090810190601f1680156109c15780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6040811015610a0857600080fd5b508051602090910151909590945092505050565b610a27600154610ac4565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050505050565b600080610ab7836104a1565b5098975050505050505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b50519291505056fea265627a7a723158208d79ad83799e7c42f88edcf7f17a55faa1c8dc1456368c6cceb02d0dfb3601ce64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023e5780637d73b23114610246578063877337b01461026a578063afc72e9314610284578063d545782e14610325578063dcc922bc14610359576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b85780633efec5e9146101de578063443dd2a4146101e6575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b0316610390565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101ce57600080fd5b50356001600160a01b03166103bb565b61010e6103c6565b6101ee6103ef565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022a578181015183820152602001610212565b505050509050019250505060405180910390f35b6101ee6103fe565b61024e610408565b604080516001600160a01b039092168252519081900360200190f35b610272610417565b60408051918252519081900360200190f35b6103026004803603604081101561029a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111600160201b831117156102f757600080fd5b50909250905061041d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103576004803603606081101561033b57600080fd5b506001600160a01b03813516906020810135906040013561046c565b005b6100d46004803603602081101561036f57600080fd5b50356001600160a01b031661047c565b600061038a82610487565b92915050565b60606000806000806000806103a4886104a1565b959e949d50929b5090995097509550909350915050565b600061038a82610633565b60606000806000806000806103d961064d565b959d949c50929a50909850965094509092509050565b60606103f96107bc565b905090565b60606103f96108cd565b6000546001600160a01b031690565b60015490565b6000806104608585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091292505050565b91509150935093915050565b610477838383610a1c565b505050565b600061038a82610aab565b600080610493836104a1565b509098975050505050505050565b60606000806000806000806104b7600154610ac4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561054957600080fd5b8101908080516040519392919084600160201b82111561056857600080fd5b90830190602082018581111561057d57600080fd5b8251600160201b81118282018810171561059657600080fd5b82525081516020918201929091019080838360005b838110156105c35781810151838201526020016105ab565b50505050905090810190601f1680156105f05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008061063f836104a1565b509198975050505050505050565b6060600080600080600080610663600154610ac4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106d857600080fd5b8101908080516040519392919084600160201b8211156106f757600080fd5b90830190602082018581111561070c57600080fd5b8251600160201b81118282018810171561072557600080fd5b82525081516020918201929091019080838360005b8381101561075257818101518382015260200161073a565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107c9600154610ac4565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b505afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083e57600080fd5b8101908080516040519392919084600160201b82111561085d57600080fd5b90830190602082018581111561087257600080fd5b82518660208202830111600160201b8211171561088e57600080fd5b82525081516020918201928201910280838360005b838110156108bb5781810151838201526020016108a3565b50505050905001604052505050905090565b60606108da600154610ac4565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b600080610920600154610ac4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561099457818101518382015260200161097c565b50505050905090810190601f1680156109c15780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6040811015610a0857600080fd5b508051602090910151909590945092505050565b610a27600154610ac4565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050505050565b600080610ab7836104a1565b5098975050505050505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b50519291505056fea265627a7a723158208d79ad83799e7c42f88edcf7f17a55faa1c8dc1456368c6cceb02d0dfb3601ce64736f6c63430005110032","srcmap":"115:1486:25:-;;;194:128;8:9:-1;5:2;;;30:1;27;20:12;5:2;194:128:25;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;194:128:25;;;;;;;1242:12:21;:23;;-1:-1:-1;;;;;;1242:23:21;-1:-1:-1;;;;;1242:23:21;;;;;;;;;-1:-1:-1;1341:42:23;115:1486:25;;;;;;;;","srcmap-runtime":"115:1486:25:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;115:1486:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1251:110;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1251:110:25;-1:-1:-1;;;;;1251:110:25;;:::i;:::-;;;;;;;;;;;;;;;;;;328:158;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;328:158:25;-1:-1:-1;;;;;328:158:25;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;328:158:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1367:112;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1367:112:25;-1:-1:-1;;;;;1367:112:25;;:::i;492:156::-;;;:::i;654:114::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;654:114:25;;;;;;;;;;;;;;;;;774:112;;;:::i;1364:91:21:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:21;;;;;;;;;;;;;;1514:105:23;;;:::i;:::-;;;;;;;;;;;;;;;;1052:193:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;1052:193:25;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;1052:193:25;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;1052:193:25;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;1052:193:25;;-1:-1:-1;1052:193:25;-1:-1:-1;1052:193:25;:::i;:::-;;;;-1:-1:-1;;;;;1052:193:25;;;;;;;;;;;;;;;;;;;;;892:154;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;892:154:25;;;;;;;;;;;;;:::i;:::-;;1485:114;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1485:114:25;-1:-1:-1;;;;;1485:114:25;;:::i;1251:110::-;1311:4;1334:20;1351:2;1334:16;:20::i;:::-;1327:27;1251:110;-1:-1:-1;;1251:110:25:o;328:158::-;385:13;400:7;409;418:4;424;430;436:7;462:17;476:2;462:13;:17::i;:::-;455:24;;;;-1:-1:-1;455:24:25;;-1:-1:-1;455:24:25;;-1:-1:-1;455:24:25;-1:-1:-1;455:24:25;-1:-1:-1;455:24:25;;-1:-1:-1;328:158:25;-1:-1:-1;;328:158:25:o;1367:112::-;1428:4;1451:21;1469:2;1451:17;:21::i;492:156::-;544:13;559:7;568;577:4;583;589;595:7;621:20;:18;:20::i;:::-;614:27;;;;-1:-1:-1;614:27:25;;-1:-1:-1;614:27:25;;-1:-1:-1;614:27:25;-1:-1:-1;614:27:25;-1:-1:-1;614:27:25;;-1:-1:-1;492:156:25;-1:-1:-1;492:156:25:o;654:114::-;706:16;741:20;:18;:20::i;:::-;734:27;;654:114;:::o;774:112::-;825:16;860:19;:17;:19::i;1364:91:21:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:21;1364:91;:::o;1514:105:23:-;1593:19;;1514:105;:::o;1052:193:25:-;1155:7;1164;1190:48;1218:12;1232:5;;1190:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;1190:27:25;;-1:-1:-1;;;1190:48:25:i;:::-;1183:55;;;;1052:193;;;;;;:::o;892:154::-;995:44;1012:6;1020:5;1027:11;995:16;:44::i;:::-;892:154;;;:::o;1485:114::-;1547:4;1570:22;1589:2;1570:18;:22::i;5161:156:23:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:23;;5161:156;-1:-1:-1;;;;;;;;5161:156:23:o;2171:208::-;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:23;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:23;-1:-1:-1;;;;;2306:66:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:23;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:23;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:23;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:23;;420:4:-1;411:14;;;;2306:66:23;;;;;411:14:-1;2306:66:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:23;;-1:-1:-1;2306:66:23;;-1:-1:-1;2306:66:23;-1:-1:-1;2306:66:23;-1:-1:-1;2306:66:23;-1:-1:-1;2306:66:23;;-1:-1:-1;;;2171:208:23;;;;;;;;;:::o;4644:159::-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:23;;4644:159;-1:-1:-1;;;;;;;;4644:159:23:o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:23;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:23;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:23;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:23;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:23;;420:4:-1;411:14;;;;3017:69:23;;;;;411:14:-1;3017:69:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:23;;-1:-1:-1;3017:69:23;-1:-1:-1;3017:69:23;-1:-1:-1;3017:69:23;;-1:-1:-1;3017:69:23;;-1:-1:-1;2887:206:23;;-1:-1:-1;;;2887:206:23:o;3220:164::-;3273:16;3324:32;3336:19;;3324:11;:32::i;:::-;-1:-1:-1;;;;;3308:67:23;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:69:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3308:69:23;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3308:69:23;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3308:69:23;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3308:69:23;;421:4:-1;412:14;;;;3308:69:23;;;;;412:14:-1;3308:69:23;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3308:69:23;;;;;;;;;;;3301:76;;3220:164;:::o;3511:162::-;3563:16;3614:32;3626:19;;3614:11;:32::i;:::-;-1:-1:-1;;;;;3598:66:23;;:68;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;4305:241:23;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;-1:-1:-1;;;;;4442:76:23;;4519:12;4533:5;4442:97;;;;;;;;;;;;;-1:-1:-1;;;;;4442:97:23;-1:-1:-1;;;;;4442:97:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:23;;;;;;;;;;;-1:-1:-1;4305:241:23;-1:-1:-1;;;4305:241:23:o;3950:197::-;4063:32;4075:19;;4063:11;:32::i;:::-;-1:-1:-1;;;;;4047:65:23;;4113:6;4121:5;4128:11;4047:93;;;;;;;;;;;;;-1:-1:-1;;;;;4047:93:23;-1:-1:-1;;;;;4047:93:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4047:93:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4047:93:23;;;;3950:197;;;:::o;4903:162::-;4966:4;4993:15;5014:17;5028:2;5014:13;:17::i;:::-;-1:-1:-1;4982:49:23;4903:162;-1:-1:-1;;;;;;;;4903:162:23:o;1631:153:21:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:21;;;;;;;;;;-1:-1:-1;;;;;1735:12:21;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:21;1716:61;;;-1:-1:-1;;;1716:61:21;;;;;;;;;;-1:-1:-1;;;;;1716:54:21;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:21;;1631:153;-1:-1:-1;;1631:153:21:o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","srcmap":"1939:14907:26:-;;;1122:66:20;1272:58;;4758:506:26;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:26;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:26;;;;;;;;;;;;;;;1242:12:21;:23;;-1:-1:-1;;;;;;1242:23:21;-1:-1:-1;;;;;1242:23:21;;;;;4758:506:26;;;;;1665:30:20;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:26;:26;;;;-1:-1:-1;4995:11:26;:33;;-1:-1:-1;;;;;4995:33:26;;;-1:-1:-1;;;;;;4995:33:26;;;;;;;;;-1:-1:-1;5083:18:26;:28;;;:35;;-1:-1:-1;;5083:35:26;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:26;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:26;-1:-1:-1;;;;;;16070:136:26;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:26;-1:-1:-1;;;;;13314:334:26;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:26;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:26;;-1:-1:-1;6040:1806:26;-1:-1:-1;6040:1806:26;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:26;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:26;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:26;;-1:-1:-1;;;;;15695:220:26;;;;;-1:-1:-1;;;;;;15695:220:26;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:26;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:26;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:26;;-1:-1:-1;7973:1237:26;-1:-1:-1;7973:1237:26;:::i;1364:91:21:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:21;;;;;;;;;;;;;;16755:89:26;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:26;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:26;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:26;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:26;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:26;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:26;;-1:-1:-1;9368:1399:26;-1:-1:-1;9368:1399:26;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:26;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:26;;;;;;;;;;;;;:::i;2169:95:20:-;;;:::i;16551:89:26:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:26;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:26;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:26;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;6389:33:26;;;:88;;;;-1:-1:-1;6442:35:26;;;6389:88;:142;;;;-1:-1:-1;6497:34:26;;;6389:142;:196;;;;-1:-1:-1;6551:34:26;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:26;6841:25;;-1:-1:-1;6841:25:26;;;;;;;;-1:-1:-1;6841:25:26;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:26;-1:-1:-1;;;;;7084:25:26;-1:-1:-1;;;;;7084:25:26;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:26;;;;;-1:-1:-1;;7084:306:26;;;-1:-1:-1;;7084:306:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:26;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:26;-1:-1:-1;;;;;7486:10:26;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:26;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:26;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:26;-1:-1:-1;;;;;7742:87:26;;;;;;-1:-1:-1;;;;;7742:87:26;-1:-1:-1;;;;;7742:87:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:26;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:26;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:26;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:26;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:26;-1:-1:-1;15069:72:26;-1:-1:-1;15151:23:26;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:26;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:26;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:26;;;-1:-1:-1;;;;;15364:44:26;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:26;;15188:283;;;-1:-1:-1;15487:19:26;;-1:-1:-1;;14990:523:26;:::o;11299:398::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:26;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:26;;;;;;;;;;;;-1:-1:-1;;;11432:66:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:26;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:26;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:26;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:26;;;;;;;;;;;;-1:-1:-1;;;15798:62:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:26;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:26:o;7973:1237::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;8160:9:26;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:26;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:26;;8363:65;;;;;-1:-1:-1;;;8363:65:26;;;;;;;;;;;;-1:-1:-1;;;8363:65:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:26;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:26;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:26;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:26;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:26;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:26;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:26;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:26;;;;;-1:-1:-1;;;;;8926:76:26;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:26;:27;;;;;-1:-1:-1;;9075:27:26;;;:::i;:::-;-1:-1:-1;9162:31:26;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:26;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:26;;8155:1049;;;;7973:1237;;:::o;1364:91:21:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:21;1364:91;:::o;16755:89:26:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:26;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:26;;;;;;;;;;;;-1:-1:-1;;;10969:66:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:26;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:26;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;12676:35:26;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:26;;:23;-1:-1:-1;;9801:23:26;:20;:23;;-1:-1:-1;9801:23:26:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:26;;;;;;;;;;;;-1:-1:-1;;;9877:72:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:26;;-1:-1:-1;;;10048:18:26;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:26;;:24;-1:-1:-1;;10141:24:26;:21;:24;;-1:-1:-1;10141:24:26:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:26;;-1:-1:-1;;;10187:27:26;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:26;;:34;-1:-1:-1;;10400:34:26;:21;:34;;-1:-1:-1;10400:34:26:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:26;;:34;-1:-1:-1;;10436:34:26;:21;:34;;-1:-1:-1;10436:34:26:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:26;;:29;-1:-1:-1;;10689:29:26;:21;:29;;-1:-1:-1;10689:29:26:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:26;;:29;-1:-1:-1;;10720:29:26;:21;:29;;-1:-1:-1;10720:29:26:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:26;-1:-1:-1;;;;;5399:27:26;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:26;;;;;;;;;;;;-1:-1:-1;;;5367:86:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:26;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:26;;;;;;;;;;;;-1:-1:-1;;;12130:66:26;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:26;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:20:-;2242:15;;2169:95;:::o;16551:89:26:-;16622:11;;-1:-1:-1;;;;;16622:11:26;16551:89;:::o;2554:148:20:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:20;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:20;-1:-1:-1;;;;;2636:59:20;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:20;;2554:148;-1:-1:-1;;2554:148:20:o;4943:370:18:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:18:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:18;87:34:-1;135:17;;-1:-1;5912:21:18;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:18;5807:265;-1:-1:-1;;5807:265:18:o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:24:-;-1:-1:-1;;;;;1510:20:24;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:24;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:24;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:24;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:19:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:19;;;;;;;;;;;;-1:-1:-1;;;1726:60:19;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:19:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:19;;;;;;;;;;;;-1:-1:-1;;;1182:61:19;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:19:o;1631:153:21:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:21;;;;;;;;;;-1:-1:-1;;;;;1735:12:21;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:21;1716:61;;;-1:-1:-1;;;1716:61:21;;;;;;;;;;-1:-1:-1;;;;;1716:54:21;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:18;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:18;4078:48;;-1:-1:-1;3968:170:18;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:18;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:18;4378:24;;-1:-1:-1;4293:121:18;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:18;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:18:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:18;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:18;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:26:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:26;;;-1:-1:-1;1939:14907:26;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","mocks/tokenWhitelistableExporter.sol","tokenWhitelist.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[6231],"IController":[5796]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":5779,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":7382,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":6232,"symbolAliases":[null],"unitAlias":""},"id":5780,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":5091,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":6232,"symbolAliases":[null],"unitAlias":""},"id":5781,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[5796],"name":"IController","scope":6232},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":5796,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5788,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5782,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":5783,"name":"VariableDeclaration","src":"1015:7:0"}],"id":5784,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5788,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5785,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":5786,"name":"VariableDeclaration","src":"1047:4:0"}],"id":5787,"name":"ParameterList","src":"1046:6:0"}],"id":5788,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":5796,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5795,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5789,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":5790,"name":"VariableDeclaration","src":"1076:7:0"}],"id":5791,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5795,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5792,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":5793,"name":"VariableDeclaration","src":"1108:4:0"}],"id":5794,"name":"ParameterList","src":"1107:6:0"}],"id":5795,"name":"FunctionDefinition","src":"1059:55:0"}],"id":5796,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[5090,5796,7381],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[6231,5090,7381,5796],"name":"Controller","scope":6232},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":5796,"type":"contract IController"},"id":5797,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":5798,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":7381,"type":"contract Ownable"},"id":5799,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":5800,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":5090,"type":"contract Transferrable"},"id":5801,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":5802,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5808,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5803,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":5804,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":5808,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5805,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":5806,"name":"VariableDeclaration","src":"1564:19:0"}],"id":5807,"name":"ParameterList","src":"1546:38:0"}],"id":5808,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5814,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5809,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":5810,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":5814,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5811,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":5812,"name":"VariableDeclaration","src":"1631:19:0"}],"id":5813,"name":"ParameterList","src":"1613:38:0"}],"id":5814,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5820,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5815,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":5816,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":5820,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5817,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":5818,"name":"VariableDeclaration","src":"1692:14:0"}],"id":5819,"name":"ParameterList","src":"1674:33:0"}],"id":5820,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5826,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5821,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":5822,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":5826,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5823,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":5824,"name":"VariableDeclaration","src":"1749:14:0"}],"id":5825,"name":"ParameterList","src":"1731:33:0"}],"id":5826,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":5834,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5827,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":5828,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":5834,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5829,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":5830,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":5834,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5831,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":5832,"name":"VariableDeclaration","src":"1814:15:0"}],"id":5833,"name":"ParameterList","src":"1784:46:0"}],"id":5834,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5838,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5835,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":5836,"name":"VariableDeclaration","src":"1851:15:0"}],"id":5837,"name":"ParameterList","src":"1850:17:0"}],"id":5838,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5839,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":5840,"name":"VariableDeclaration","src":"1887:15:0"}],"id":5841,"name":"ParameterList","src":"1886:17:0"}],"id":5842,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":6231,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":5843,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":5844,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":5845,"name":"Mapping","src":"1910:24:0"}],"id":5846,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":6231,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5847,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":5848,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":6231,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":5849,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":5850,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":5851,"name":"Mapping","src":"1991:24:0"}],"id":5852,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":6231,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5853,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":5854,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":6231,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5855,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":5856,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":5866,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5857,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":5858,"name":"VariableDeclaration","src":"2251:30:0"}],"id":5859,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":5864,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7381,"type":"type(contract Ownable)","value":"Ownable"},"id":5860,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5858,"type":"address payable","value":"_ownerAddress_"},"id":5861,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":5862,"name":"Literal","src":"2314:5:0"}],"id":5863,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":5865,"name":"Block","src":"2321:2:0"}],"id":5866,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5867,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":5868,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":5869,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":5870,"name":"Identifier","src":"2431:3:0"}],"id":5871,"name":"MemberAccess","src":"2431:10:0"}],"id":5872,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":5873,"name":"Literal","src":"2444:21:0"}],"id":5874,"name":"FunctionCall","src":"2414:52:0"}],"id":5875,"name":"ExpressionStatement","src":"2414:52:0"},{"id":5876,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":5877,"name":"Block","src":"2404:80:0"}],"id":5878,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5879,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":5880,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7380,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":5881,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":5882,"name":"Identifier","src":"2585:3:0"}],"id":5883,"name":"MemberAccess","src":"2585:10:0"}],"id":5884,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":5885,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":5886,"name":"Identifier","src":"2609:3:0"}],"id":5887,"name":"MemberAccess","src":"2609:10:0"}],"id":5888,"name":"IndexAccess","src":"2600:20:0"}],"id":5889,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":5890,"name":"Literal","src":"2622:30:0"}],"id":5891,"name":"FunctionCall","src":"2568:85:0"}],"id":5892,"name":"ExpressionStatement","src":"2568:85:0"},{"id":5893,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":5894,"name":"Block","src":"2558:113:0"}],"id":5895,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5896,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":5897,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":6010,"type":"function () view returns (bool)","value":"isStopped"},"id":5898,"name":"Identifier","src":"2765:9:0"}],"id":5899,"name":"FunctionCall","src":"2765:11:0"}],"id":5900,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":5901,"name":"Literal","src":"2778:23:0"}],"id":5902,"name":"FunctionCall","src":"2756:46:0"}],"id":5903,"name":"ExpressionStatement","src":"2756:46:0"},{"id":5904,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":5905,"name":"Block","src":"2746:74:0"}],"id":5906,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5920,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5907,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":5908,"name":"VariableDeclaration","src":"2961:16:0"}],"id":5909,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":5914,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":5910,"name":"Identifier","src":"2988:9:0"}],"id":5911,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":5912,"name":"Identifier","src":"2998:10:0"}],"id":5913,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6064,"type":"function (address)","value":"_addAdmin"},"id":5915,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5908,"type":"address","value":"_account"},"id":5916,"name":"Identifier","src":"3029:8:0"}],"id":5917,"name":"FunctionCall","src":"3019:19:0"}],"id":5918,"name":"ExpressionStatement","src":"3019:19:0"}],"id":5919,"name":"Block","src":"3009:36:0"}],"id":5920,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5932,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5921,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":5922,"name":"VariableDeclaration","src":"3195:16:0"}],"id":5923,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":5926,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":5924,"name":"Identifier","src":"3222:9:0"}],"id":5925,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6092,"type":"function (address)","value":"_removeAdmin"},"id":5927,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5922,"type":"address","value":"_account"},"id":5928,"name":"Identifier","src":"3255:8:0"}],"id":5929,"name":"FunctionCall","src":"3242:22:0"}],"id":5930,"name":"ExpressionStatement","src":"3242:22:0"}],"id":5931,"name":"Block","src":"3232:39:0"}],"id":5932,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":6231,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5933,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5940,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5934,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":5935,"name":"VariableDeclaration","src":"3368:7:0"}],"id":5936,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":5936},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"_adminCount"},"id":5937,"name":"Identifier","src":"3394:11:0"}],"id":5938,"name":"Return","src":"3387:18:0"}],"id":5939,"name":"Block","src":"3377:35:0"}],"id":5940,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5954,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5941,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":5942,"name":"VariableDeclaration","src":"3573:16:0"}],"id":5943,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":5948,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":5944,"name":"Identifier","src":"3600:16:0"}],"id":5945,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":5946,"name":"Identifier","src":"3617:10:0"}],"id":5947,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6146,"type":"function (address)","value":"_addController"},"id":5949,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5942,"type":"address","value":"_account"},"id":5950,"name":"Identifier","src":"3653:8:0"}],"id":5951,"name":"FunctionCall","src":"3638:24:0"}],"id":5952,"name":"ExpressionStatement","src":"3638:24:0"}],"id":5953,"name":"Block","src":"3628:41:0"}],"id":5954,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5966,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5955,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":5956,"name":"VariableDeclaration","src":"3839:16:0"}],"id":5957,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":5960,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":5958,"name":"Identifier","src":"3866:16:0"}],"id":5959,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6174,"type":"function (address)","value":"_removeController"},"id":5961,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5956,"type":"address","value":"_account"},"id":5962,"name":"Identifier","src":"3911:8:0"}],"id":5963,"name":"FunctionCall","src":"3893:27:0"}],"id":5964,"name":"ExpressionStatement","src":"3893:27:0"}],"id":5965,"name":"Block","src":"3883:44:0"}],"id":5966,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":6231,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5967,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5968,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":5969,"name":"VariableDeclaration","src":"4072:7:0"}],"id":5970,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":5970},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"uint256","value":"_controllerCount"},"id":5971,"name":"Identifier","src":"4098:16:0"}],"id":5972,"name":"Return","src":"4091:23:0"}],"id":5973,"name":"Block","src":"4081:40:0"}],"id":5974,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":6231,"stateMutability":"view","superFunction":5795,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5988,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5975,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":5976,"name":"VariableDeclaration","src":"4242:16:0"}],"id":5977,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":5988,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5980,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":5981,"name":"VariableDeclaration","src":"4294:4:0"}],"id":5982,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":5978,"name":"Identifier","src":"4274:10:0"}],"id":5979,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":5982},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":5983,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5976,"type":"address","value":"_account"},"id":5984,"name":"Identifier","src":"4326:8:0"}],"id":5985,"name":"IndexAccess","src":"4317:18:0"}],"id":5986,"name":"Return","src":"4310:25:0"}],"id":5987,"name":"Block","src":"4300:42:0"}],"id":5988,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":6231,"stateMutability":"view","superFunction":5788,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6002,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5989,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":5990,"name":"VariableDeclaration","src":"4476:16:0"}],"id":5991,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":6002,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5994,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":5995,"name":"VariableDeclaration","src":"4528:4:0"}],"id":5996,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":5992,"name":"Identifier","src":"4508:10:0"}],"id":5993,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":5996},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":5997,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5990,"type":"address","value":"_account"},"id":5998,"name":"Identifier","src":"4565:8:0"}],"id":5999,"name":"IndexAccess","src":"4551:23:0"}],"id":6000,"name":"Return","src":"4544:30:0"}],"id":6001,"name":"Block","src":"4534:47:0"}],"id":6002,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":6231,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6003,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":6010,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6004,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":6005,"name":"VariableDeclaration","src":"4769:4:0"}],"id":6006,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":6006},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5856,"type":"bool","value":"_stopped"},"id":6007,"name":"Identifier","src":"4792:8:0"}],"id":6008,"name":"Return","src":"4785:15:0"}],"id":6009,"name":"Block","src":"4775:32:0"}],"id":6010,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6064,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6011,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":6012,"name":"VariableDeclaration","src":"4894:16:0"}],"id":6013,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":6014,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6015,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6016,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6017,"name":"Identifier","src":"4948:8:0"}],"id":6018,"name":"IndexAccess","src":"4939:18:0"}],"id":6019,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":6020,"name":"Literal","src":"4959:38:0"}],"id":6021,"name":"FunctionCall","src":"4930:68:0"}],"id":6022,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6023,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6024,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6025,"name":"Identifier","src":"5031:8:0"}],"id":6026,"name":"IndexAccess","src":"5017:23:0"}],"id":6027,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":6028,"name":"Literal","src":"5042:42:0"}],"id":6029,"name":"FunctionCall","src":"5008:77:0"}],"id":6030,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6031,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":7380,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":6032,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6033,"name":"Identifier","src":"5113:8:0"}],"id":6034,"name":"FunctionCall","src":"5104:18:0"}],"id":6035,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":6036,"name":"Literal","src":"5124:39:0"}],"id":6037,"name":"FunctionCall","src":"5095:69:0"}],"id":6038,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6039,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6040,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6041,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6042,"name":"Literal","src":"5202:1:0"}],"id":6043,"name":"FunctionCall","src":"5194:10:0"}],"id":6044,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":6045,"name":"Literal","src":"5206:38:0"}],"id":6046,"name":"FunctionCall","src":"5174:71:0"}],"id":6047,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6048,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6049,"name":"Identifier","src":"5264:8:0"}],"id":6050,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6051,"name":"Literal","src":"5276:4:0"}],"id":6052,"name":"Assignment","src":"5255:25:0"}],"id":6053,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"_adminCount"},"id":6054,"name":"Identifier","src":"5290:11:0"}],"id":6055,"name":"UnaryOperation","src":"5290:13:0"}],"id":6056,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"function (address,address)","value":"AddedAdmin"},"id":6057,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6058,"name":"Identifier","src":"5329:3:0"}],"id":6059,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"address","value":"_account"},"id":6060,"name":"Identifier","src":"5341:8:0"}],"id":6061,"name":"FunctionCall","src":"5318:32:0"}],"id":6062,"name":"EmitStatement","src":"5313:37:0"}],"id":6063,"name":"Block","src":"4920:437:0"}],"id":6064,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6092,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6065,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":6066,"name":"VariableDeclaration","src":"5456:16:0"}],"id":6067,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":6068,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6069,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6070,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"address","value":"_account"},"id":6071,"name":"Identifier","src":"5509:8:0"}],"id":6072,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":6073,"name":"Literal","src":"5520:34:0"}],"id":6074,"name":"FunctionCall","src":"5492:63:0"}],"id":6075,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6076,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"address","value":"_account"},"id":6077,"name":"Identifier","src":"5574:8:0"}],"id":6078,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6079,"name":"Literal","src":"5586:5:0"}],"id":6080,"name":"Assignment","src":"5565:26:0"}],"id":6081,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5848,"type":"uint256","value":"_adminCount"},"id":6082,"name":"Identifier","src":"5601:11:0"}],"id":6083,"name":"UnaryOperation","src":"5601:13:0"}],"id":6084,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5826,"type":"function (address,address)","value":"RemovedAdmin"},"id":6085,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6086,"name":"Identifier","src":"5642:3:0"}],"id":6087,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6066,"type":"address","value":"_account"},"id":6088,"name":"Identifier","src":"5654:8:0"}],"id":6089,"name":"FunctionCall","src":"5629:34:0"}],"id":6090,"name":"EmitStatement","src":"5624:39:0"}],"id":6091,"name":"Block","src":"5482:188:0"}],"id":6092,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6146,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6093,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":6094,"name":"VariableDeclaration","src":"5767:16:0"}],"id":6095,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":6096,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6097,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5846,"type":"mapping(address => bool)","value":"_isAdmin"},"id":6098,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6099,"name":"Identifier","src":"5821:8:0"}],"id":6100,"name":"IndexAccess","src":"5812:18:0"}],"id":6101,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":6102,"name":"Literal","src":"5832:38:0"}],"id":6103,"name":"FunctionCall","src":"5803:68:0"}],"id":6104,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6105,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6106,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6107,"name":"Identifier","src":"5904:8:0"}],"id":6108,"name":"IndexAccess","src":"5890:23:0"}],"id":6109,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":6110,"name":"Literal","src":"5915:42:0"}],"id":6111,"name":"FunctionCall","src":"5881:77:0"}],"id":6112,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6113,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":7380,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":6114,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6115,"name":"Identifier","src":"5986:8:0"}],"id":6116,"name":"FunctionCall","src":"5977:18:0"}],"id":6117,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":6118,"name":"Literal","src":"5997:39:0"}],"id":6119,"name":"FunctionCall","src":"5968:69:0"}],"id":6120,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6121,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6122,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6123,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6124,"name":"Literal","src":"6075:1:0"}],"id":6125,"name":"FunctionCall","src":"6067:10:0"}],"id":6126,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":6127,"name":"Literal","src":"6079:38:0"}],"id":6128,"name":"FunctionCall","src":"6047:71:0"}],"id":6129,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6130,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6131,"name":"Identifier","src":"6142:8:0"}],"id":6132,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6133,"name":"Literal","src":"6154:4:0"}],"id":6134,"name":"Assignment","src":"6128:30:0"}],"id":6135,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"uint256","value":"_controllerCount"},"id":6136,"name":"Identifier","src":"6168:16:0"}],"id":6137,"name":"UnaryOperation","src":"6168:18:0"}],"id":6138,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5808,"type":"function (address,address)","value":"AddedController"},"id":6139,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6140,"name":"Identifier","src":"6217:3:0"}],"id":6141,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6094,"type":"address","value":"_account"},"id":6142,"name":"Identifier","src":"6229:8:0"}],"id":6143,"name":"FunctionCall","src":"6201:37:0"}],"id":6144,"name":"EmitStatement","src":"6196:42:0"}],"id":6145,"name":"Block","src":"5793:452:0"}],"id":6146,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":6174,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6147,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":6148,"name":"VariableDeclaration","src":"6354:16:0"}],"id":6149,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":6150,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6151,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6152,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"address","value":"_account"},"id":6153,"name":"Identifier","src":"6412:8:0"}],"id":6154,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":6155,"name":"Literal","src":"6423:38:0"}],"id":6156,"name":"FunctionCall","src":"6390:72:0"}],"id":6157,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5852,"type":"mapping(address => bool)","value":"_isController"},"id":6158,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"address","value":"_account"},"id":6159,"name":"Identifier","src":"6486:8:0"}],"id":6160,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6161,"name":"Literal","src":"6498:5:0"}],"id":6162,"name":"Assignment","src":"6472:31:0"}],"id":6163,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"uint256","value":"_controllerCount"},"id":6164,"name":"Identifier","src":"6513:16:0"}],"id":6165,"name":"UnaryOperation","src":"6513:18:0"}],"id":6166,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5814,"type":"function (address,address)","value":"RemovedController"},"id":6167,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6168,"name":"Identifier","src":"6564:3:0"}],"id":6169,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"address","value":"_account"},"id":6170,"name":"Identifier","src":"6576:8:0"}],"id":6171,"name":"FunctionCall","src":"6546:39:0"}],"id":6172,"name":"EmitStatement","src":"6541:44:0"}],"id":6173,"name":"Block","src":"6380:212:0"}],"id":6174,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6175,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":6178,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":6176,"name":"Identifier","src":"6690:16:0"}],"id":6177,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5856,"type":"bool","value":"_stopped"},"id":6179,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6180,"name":"Literal","src":"6728:4:0"}],"id":6181,"name":"Assignment","src":"6717:15:0"}],"id":6182,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5838,"type":"function (address)","value":"Stopped"},"id":6183,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6184,"name":"Identifier","src":"6755:3:0"}],"id":6185,"name":"MemberAccess","src":"6755:10:0"}],"id":6186,"name":"FunctionCall","src":"6747:19:0"}],"id":6187,"name":"EmitStatement","src":"6742:24:0"}],"id":6188,"name":"Block","src":"6707:66:0"}],"id":6189,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6190,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":6193,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":6191,"name":"Identifier","src":"6848:9:0"}],"id":6192,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5856,"type":"bool","value":"_stopped"},"id":6194,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6195,"name":"Literal","src":"6879:5:0"}],"id":6196,"name":"Assignment","src":"6868:16:0"}],"id":6197,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5842,"type":"function (address)","value":"Started"},"id":6198,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":6199,"name":"Identifier","src":"6907:3:0"}],"id":6200,"name":"MemberAccess","src":"6907:10:0"}],"id":6201,"name":"FunctionCall","src":"6899:19:0"}],"id":6202,"name":"EmitStatement","src":"6894:24:0"}],"id":6203,"name":"Block","src":"6858:67:0"}],"id":6204,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":6231,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":6230,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":6205,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":6206,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":6230,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6207,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":6208,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":6230,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6209,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":6210,"name":"VariableDeclaration","src":"7066:15:0"}],"id":6211,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":6216,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5878,"type":"modifier ()","value":"onlyAdmin"},"id":6212,"name":"Identifier","src":"7092:9:0"}],"id":6213,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5906,"type":"modifier ()","value":"notStopped"},"id":6214,"name":"Identifier","src":"7102:10:0"}],"id":6215,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5089,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":6217,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6206,"type":"address payable","value":"_to"},"id":6218,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6208,"type":"address","value":"_asset"},"id":6219,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6210,"type":"uint256","value":"_amount"},"id":6220,"name":"Identifier","src":"7150:7:0"}],"id":6221,"name":"FunctionCall","src":"7123:35:0"}],"id":6222,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5834,"type":"function (address,address,uint256)","value":"Claimed"},"id":6223,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6206,"type":"address payable","value":"_to"},"id":6224,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6208,"type":"address","value":"_asset"},"id":6225,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6210,"type":"uint256","value":"_amount"},"id":6226,"name":"Identifier","src":"7194:7:0"}],"id":6227,"name":"FunctionCall","src":"7173:29:0"}],"id":6228,"name":"EmitStatement","src":"7168:34:0"}],"id":6229,"name":"Block","src":"7113:96:0"}],"id":6230,"name":"FunctionDefinition","src":"7014:195:0"}],"id":6231,"name":"ContractDefinition","src":"1460:5751:0"}],"id":6232,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[7400]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7383,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[7400],"name":"Address","scope":7401},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":7400,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":7399,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7384,"name":"ElementaryTypeName","src":"562:7:1"}],"id":7385,"name":"VariableDeclaration","src":"562:15:1"}],"id":7386,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":7399,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7387,"name":"ElementaryTypeName","src":"602:4:1"}],"id":7388,"name":"VariableDeclaration","src":"602:4:1"}],"id":7389,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[7391],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":7398,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7390,"name":"ElementaryTypeName","src":"805:7:1"}],"id":7391,"name":"VariableDeclaration","src":"805:12:1"}],"id":7392,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":7391,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":7385,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":7393,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":7389},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7391,"type":"uint256","value":"size"},"id":7394,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7395,"name":"Literal","src":"947:1:1"}],"id":7396,"name":"BinaryOperation","src":"940:8:1"}],"id":7397,"name":"Return","src":"933:15:1"}],"id":7398,"name":"Block","src":"608:347:1"}],"id":7399,"name":"FunctionDefinition","src":"542:413:1"}],"id":7400,"name":"ContractDefinition","src":"94:863:1"}],"id":7401,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[6284]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":6233,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[6284],"name":"ERC20","scope":6285},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":6284,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":6242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6234,"name":"ElementaryTypeName","src":"193:7:2"}],"id":6235,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":6242,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6236,"name":"ElementaryTypeName","src":"209:7:2"}],"id":6237,"name":"VariableDeclaration","src":"209:16:2"}],"id":6238,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6242,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6239,"name":"ElementaryTypeName","src":"250:7:2"}],"id":6240,"name":"VariableDeclaration","src":"250:7:2"}],"id":6241,"name":"ParameterList","src":"249:9:2"}],"id":6242,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":6284,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":6251,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6243,"name":"ElementaryTypeName","src":"281:7:2"}],"id":6244,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":6251,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6245,"name":"ElementaryTypeName","src":"299:7:2"}],"id":6246,"name":"VariableDeclaration","src":"299:14:2"}],"id":6247,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6251,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6248,"name":"ElementaryTypeName","src":"333:4:2"}],"id":6249,"name":"VariableDeclaration","src":"333:4:2"}],"id":6250,"name":"ParameterList","src":"332:6:2"}],"id":6251,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":6284,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":6258,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6252,"name":"ElementaryTypeName","src":"363:7:2"}],"id":6253,"name":"VariableDeclaration","src":"363:12:2"}],"id":6254,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6258,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6255,"name":"ElementaryTypeName","src":"400:7:2"}],"id":6256,"name":"VariableDeclaration","src":"400:7:2"}],"id":6257,"name":"ParameterList","src":"399:9:2"}],"id":6258,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":6284,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6259,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6263,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6260,"name":"ElementaryTypeName","src":"460:7:2"}],"id":6261,"name":"VariableDeclaration","src":"460:7:2"}],"id":6262,"name":"ParameterList","src":"459:9:2"}],"id":6263,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":6284,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":6272,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6264,"name":"ElementaryTypeName","src":"492:7:2"}],"id":6265,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":6272,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6266,"name":"ElementaryTypeName","src":"505:7:2"}],"id":6267,"name":"VariableDeclaration","src":"505:14:2"}],"id":6268,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6272,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6269,"name":"ElementaryTypeName","src":"539:4:2"}],"id":6270,"name":"VariableDeclaration","src":"539:4:2"}],"id":6271,"name":"ParameterList","src":"538:6:2"}],"id":6272,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":6284,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":6283,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6273,"name":"ElementaryTypeName","src":"572:7:2"}],"id":6274,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":6283,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6275,"name":"ElementaryTypeName","src":"587:7:2"}],"id":6276,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":6283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6277,"name":"ElementaryTypeName","src":"600:7:2"}],"id":6278,"name":"VariableDeclaration","src":"600:14:2"}],"id":6279,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":6283,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6280,"name":"ElementaryTypeName","src":"634:4:2"}],"id":6281,"name":"VariableDeclaration","src":"634:4:2"}],"id":6282,"name":"ParameterList","src":"633:6:2"}],"id":6283,"name":"FunctionDefinition","src":"550:90:2"}],"id":6284,"name":"ContractDefinition","src":"152:490:2"}],"id":6285,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[6503]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6286,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":6285,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":6504,"symbolAliases":[null],"unitAlias":""},"id":6287,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":3138,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":6504,"symbolAliases":[null],"unitAlias":""},"id":6288,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":7401,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":6504,"symbolAliases":[null],"unitAlias":""},"id":6289,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[6503],"name":"SafeERC20","scope":6504},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3137,"type":"library SafeMath"},"id":6290,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":6291,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":6292,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":7400,"type":"library Address"},"id":6293,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6294,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":6295,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6317,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6296,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":6297,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":6317,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6298,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":6299,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":6317,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6300,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":6301,"name":"VariableDeclaration","src":"1850:13:3"}],"id":6302,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":6303,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6304,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"contract ERC20","value":"token"},"id":6305,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6306,"name":"Identifier","src":"1910:3:3"}],"id":6307,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":6272,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"contract ERC20","value":"token"},"id":6308,"name":"Identifier","src":"1933:5:3"}],"id":6309,"name":"MemberAccess","src":"1933:14:3"}],"id":6310,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6299,"type":"address","value":"to"},"id":6311,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6301,"type":"uint256","value":"value"},"id":6312,"name":"Identifier","src":"1962:5:3"}],"id":6313,"name":"FunctionCall","src":"1910:58:3"}],"id":6314,"name":"FunctionCall","src":"1884:85:3"}],"id":6315,"name":"ExpressionStatement","src":"1884:85:3"}],"id":6316,"name":"Block","src":"1874:102:3"}],"id":6317,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6342,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6318,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":6319,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":6342,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6320,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":6321,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":6342,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6322,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":6323,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":6342,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6324,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":6325,"name":"VariableDeclaration","src":"2047:13:3"}],"id":6326,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":6327,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6328,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6319,"type":"contract ERC20","value":"token"},"id":6329,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6330,"name":"Identifier","src":"2107:3:3"}],"id":6331,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":6283,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6319,"type":"contract ERC20","value":"token"},"id":6332,"name":"Identifier","src":"2130:5:3"}],"id":6333,"name":"MemberAccess","src":"2130:18:3"}],"id":6334,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6321,"type":"address","value":"from"},"id":6335,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6323,"type":"address","value":"to"},"id":6336,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"uint256","value":"value"},"id":6337,"name":"Identifier","src":"2169:5:3"}],"id":6338,"name":"FunctionCall","src":"2107:68:3"}],"id":6339,"name":"FunctionCall","src":"2081:95:3"}],"id":6340,"name":"ExpressionStatement","src":"2081:95:3"}],"id":6341,"name":"Block","src":"2071:112:3"}],"id":6342,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6383,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6343,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":6344,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":6383,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6345,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":6346,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":6383,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6347,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":6348,"name":"VariableDeclaration","src":"2240:13:3"}],"id":6349,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":6350,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6351,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6348,"type":"uint256","value":"value"},"id":6352,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6353,"name":"Literal","src":"2562:1:3"}],"id":6354,"name":"BinaryOperation","src":"2553:10:3"}],"id":6355,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":6242,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6344,"type":"contract ERC20","value":"token"},"id":6356,"name":"Identifier","src":"2569:5:3"}],"id":6357,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$6503","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6358,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7437,"type":"library SafeERC20","value":"this"},"id":6359,"name":"Identifier","src":"2593:4:3"}],"id":6360,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6346,"type":"address","value":"spender"},"id":6361,"name":"Identifier","src":"2600:7:3"}],"id":6362,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6363,"name":"Literal","src":"2612:1:3"}],"id":6364,"name":"BinaryOperation","src":"2569:44:3"}],"id":6365,"name":"TupleExpression","src":"2568:46:3"}],"id":6366,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":6367,"name":"Literal","src":"2628:56:3"}],"id":6368,"name":"FunctionCall","src":"2544:150:3"}],"id":6369,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6370,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6344,"type":"contract ERC20","value":"token"},"id":6371,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6372,"name":"Identifier","src":"2730:3:3"}],"id":6373,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":6251,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6344,"type":"contract ERC20","value":"token"},"id":6374,"name":"Identifier","src":"2753:5:3"}],"id":6375,"name":"MemberAccess","src":"2753:13:3"}],"id":6376,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6346,"type":"address","value":"spender"},"id":6377,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6348,"type":"uint256","value":"value"},"id":6378,"name":"Identifier","src":"2786:5:3"}],"id":6379,"name":"FunctionCall","src":"2730:62:3"}],"id":6380,"name":"FunctionCall","src":"2704:89:3"}],"id":6381,"name":"ExpressionStatement","src":"2704:89:3"}],"id":6382,"name":"Block","src":"2264:536:3"}],"id":6383,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6418,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6384,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":6385,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":6418,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6386,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":6387,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":6418,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6388,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":6389,"name":"VariableDeclaration","src":"2867:13:3"}],"id":6390,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":6391,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[6393]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":6417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6392,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":6393,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":6242,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"contract ERC20","value":"token"},"id":6394,"name":"Identifier","src":"2924:5:3"}],"id":6395,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$6503","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6396,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7437,"type":"library SafeERC20","value":"this"},"id":6397,"name":"Identifier","src":"2948:4:3"}],"id":6398,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"address","value":"spender"},"id":6399,"name":"Identifier","src":"2955:7:3"}],"id":6400,"name":"FunctionCall","src":"2924:39:3"}],"id":6401,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6389,"type":"uint256","value":"value"},"id":6402,"name":"Identifier","src":"2968:5:3"}],"id":6403,"name":"FunctionCall","src":"2924:50:3"}],"id":6404,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6405,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"contract ERC20","value":"token"},"id":6406,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6407,"name":"Identifier","src":"3010:3:3"}],"id":6408,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":6251,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"contract ERC20","value":"token"},"id":6409,"name":"Identifier","src":"3033:5:3"}],"id":6410,"name":"MemberAccess","src":"3033:13:3"}],"id":6411,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"address","value":"spender"},"id":6412,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6393,"type":"uint256","value":"newAllowance"},"id":6413,"name":"Identifier","src":"3066:12:3"}],"id":6414,"name":"FunctionCall","src":"3010:69:3"}],"id":6415,"name":"FunctionCall","src":"2984:96:3"}],"id":6416,"name":"ExpressionStatement","src":"2984:96:3"}],"id":6417,"name":"Block","src":"2891:196:3"}],"id":6418,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6453,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6419,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":6420,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":6453,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6421,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":6422,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":6453,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6423,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":6424,"name":"VariableDeclaration","src":"3154:13:3"}],"id":6425,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":6426,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[6428]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":6452,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6427,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":6428,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3056,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":6242,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"contract ERC20","value":"token"},"id":6429,"name":"Identifier","src":"3211:5:3"}],"id":6430,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$6503","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6431,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7437,"type":"library SafeERC20","value":"this"},"id":6432,"name":"Identifier","src":"3235:4:3"}],"id":6433,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6422,"type":"address","value":"spender"},"id":6434,"name":"Identifier","src":"3242:7:3"}],"id":6435,"name":"FunctionCall","src":"3211:39:3"}],"id":6436,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6424,"type":"uint256","value":"value"},"id":6437,"name":"Identifier","src":"3255:5:3"}],"id":6438,"name":"FunctionCall","src":"3211:50:3"}],"id":6439,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6502,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":6440,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"contract ERC20","value":"token"},"id":6441,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6442,"name":"Identifier","src":"3297:3:3"}],"id":6443,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":6251,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"contract ERC20","value":"token"},"id":6444,"name":"Identifier","src":"3320:5:3"}],"id":6445,"name":"MemberAccess","src":"3320:13:3"}],"id":6446,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6422,"type":"address","value":"spender"},"id":6447,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6428,"type":"uint256","value":"newAllowance"},"id":6448,"name":"Identifier","src":"3353:12:3"}],"id":6449,"name":"FunctionCall","src":"3297:69:3"}],"id":6450,"name":"FunctionCall","src":"3271:96:3"}],"id":6451,"name":"ExpressionStatement","src":"3271:96:3"}],"id":6452,"name":"Block","src":"3178:196:3"}],"id":6453,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":6503,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":6502,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":6454,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":6455,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":6502,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6456,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":6457,"name":"VariableDeclaration","src":"3798:17:3"}],"id":6458,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":6459,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6460,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":7399,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6461,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6455,"type":"contract ERC20","value":"token"},"id":6462,"name":"Identifier","src":"4360:5:3"}],"id":6463,"name":"FunctionCall","src":"4352:14:3"}],"id":6464,"name":"MemberAccess","src":"4352:25:3"}],"id":6465,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":6466,"name":"Literal","src":"4381:33:3"}],"id":6467,"name":"FunctionCall","src":"4344:71:3"}],"id":6468,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[6470,6472]},"children":[{"attributes":{"constant":false,"name":"success","scope":6501,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6469,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":6470,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":6501,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6471,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":6472,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$6284","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6473,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6455,"type":"contract ERC20","value":"token"},"id":6474,"name":"Identifier","src":"4535:5:3"}],"id":6475,"name":"FunctionCall","src":"4527:14:3"}],"id":6476,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6457,"type":"bytes memory","value":"data"},"id":6477,"name":"Identifier","src":"4547:4:3"}],"id":6478,"name":"FunctionCall","src":"4527:25:3"}],"id":6479,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6480,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bool","value":"success"},"id":6481,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":6482,"name":"Literal","src":"4579:34:3"}],"id":6483,"name":"FunctionCall","src":"4562:52:3"}],"id":6484,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes memory","value":"returndata"},"id":6485,"name":"Identifier","src":"4629:10:3"}],"id":6486,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6487,"name":"Literal","src":"4649:1:3"}],"id":6488,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":6489,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":6490,"name":"Identifier","src":"4758:3:3"}],"id":6491,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes memory","value":"returndata"},"id":6492,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":6493,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":6494,"name":"TupleExpression","src":"4781:6:3"}],"id":6495,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":6496,"name":"Literal","src":"4790:44:3"}],"id":6497,"name":"FunctionCall","src":"4750:85:3"}],"id":6498,"name":"ExpressionStatement","src":"4750:85:3"}],"id":6499,"name":"Block","src":"4652:194:3"}],"id":6500,"name":"IfStatement","src":"4625:221:3"}],"id":6501,"name":"Block","src":"3826:1026:3"}],"id":6502,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":6503,"name":"ContractDefinition","src":"1715:3139:3"}],"id":6504,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[3137]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3006,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[3137],"name":"SafeMath","scope":3138},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3031,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3007,"name":"ElementaryTypeName","src":"847:7:4"}],"id":3008,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":3031,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3009,"name":"ElementaryTypeName","src":"858:7:4"}],"id":3010,"name":"VariableDeclaration","src":"858:9:4"}],"id":3011,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3031,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3012,"name":"ElementaryTypeName","src":"892:7:4"}],"id":3013,"name":"VariableDeclaration","src":"892:7:4"}],"id":3014,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[3016]},"children":[{"attributes":{"constant":false,"name":"c","scope":3030,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3015,"name":"ElementaryTypeName","src":"911:7:4"}],"id":3016,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3008,"type":"uint256","value":"a"},"id":3017,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3010,"type":"uint256","value":"b"},"id":3018,"name":"Identifier","src":"927:1:4"}],"id":3019,"name":"BinaryOperation","src":"923:5:4"}],"id":3020,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3021,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3016,"type":"uint256","value":"c"},"id":3022,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3008,"type":"uint256","value":"a"},"id":3023,"name":"Identifier","src":"951:1:4"}],"id":3024,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":3025,"name":"Literal","src":"954:29:4"}],"id":3026,"name":"FunctionCall","src":"938:46:4"}],"id":3027,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":3014},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3016,"type":"uint256","value":"c"},"id":3028,"name":"Identifier","src":"1002:1:4"}],"id":3029,"name":"Return","src":"995:8:4"}],"id":3030,"name":"Block","src":"901:109:4"}],"id":3031,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3056,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3032,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":3033,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":3056,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3034,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":3035,"name":"VariableDeclaration","src":"1298:9:4"}],"id":3036,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3056,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3037,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":3038,"name":"VariableDeclaration","src":"1332:7:4"}],"id":3039,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3040,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3035,"type":"uint256","value":"b"},"id":3041,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3033,"type":"uint256","value":"a"},"id":3042,"name":"Identifier","src":"1364:1:4"}],"id":3043,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":3044,"name":"Literal","src":"1367:32:4"}],"id":3045,"name":"FunctionCall","src":"1351:49:4"}],"id":3046,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[3048]},"children":[{"attributes":{"constant":false,"name":"c","scope":3055,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3047,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":3048,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3033,"type":"uint256","value":"a"},"id":3049,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3035,"type":"uint256","value":"b"},"id":3050,"name":"Identifier","src":"1426:1:4"}],"id":3051,"name":"BinaryOperation","src":"1422:5:4"}],"id":3052,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":3039},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3048,"type":"uint256","value":"c"},"id":3053,"name":"Identifier","src":"1445:1:4"}],"id":3054,"name":"Return","src":"1438:8:4"}],"id":3055,"name":"Block","src":"1341:112:4"}],"id":3056,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3090,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3057,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":3058,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":3090,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3059,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":3060,"name":"VariableDeclaration","src":"1717:9:4"}],"id":3061,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3090,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3062,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":3063,"name":"VariableDeclaration","src":"1751:7:4"}],"id":3064,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3058,"type":"uint256","value":"a"},"id":3065,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3066,"name":"Literal","src":"1996:1:4"}],"id":3067,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":3064},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3068,"name":"Literal","src":"2020:1:4"}],"id":3069,"name":"Return","src":"2013:8:4"}],"id":3070,"name":"Block","src":"1999:33:4"}],"id":3071,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[3073]},"children":[{"attributes":{"constant":false,"name":"c","scope":3089,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3072,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":3073,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3058,"type":"uint256","value":"a"},"id":3074,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3060,"type":"uint256","value":"b"},"id":3075,"name":"Identifier","src":"2058:1:4"}],"id":3076,"name":"BinaryOperation","src":"2054:5:4"}],"id":3077,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3078,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3073,"type":"uint256","value":"c"},"id":3079,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3058,"type":"uint256","value":"a"},"id":3080,"name":"Identifier","src":"2081:1:4"}],"id":3081,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3060,"type":"uint256","value":"b"},"id":3082,"name":"Identifier","src":"2086:1:4"}],"id":3083,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":3084,"name":"Literal","src":"2089:35:4"}],"id":3085,"name":"FunctionCall","src":"2069:56:4"}],"id":3086,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":3064},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3073,"type":"uint256","value":"c"},"id":3087,"name":"Identifier","src":"2143:1:4"}],"id":3088,"name":"Return","src":"2136:8:4"}],"id":3089,"name":"Block","src":"1760:391:4"}],"id":3090,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3091,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":3092,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":3115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3093,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":3094,"name":"VariableDeclaration","src":"2630:9:4"}],"id":3095,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3096,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":3097,"name":"VariableDeclaration","src":"2664:7:4"}],"id":3098,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3099,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"b"},"id":3100,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3101,"name":"Literal","src":"2761:1:4"}],"id":3102,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":3103,"name":"Literal","src":"2764:28:4"}],"id":3104,"name":"FunctionCall","src":"2749:44:4"}],"id":3105,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[3107]},"children":[{"attributes":{"constant":false,"name":"c","scope":3114,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3106,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":3107,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3092,"type":"uint256","value":"a"},"id":3108,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3094,"type":"uint256","value":"b"},"id":3109,"name":"Identifier","src":"2819:1:4"}],"id":3110,"name":"BinaryOperation","src":"2815:5:4"}],"id":3111,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":3098},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3107,"type":"uint256","value":"c"},"id":3112,"name":"Identifier","src":"2924:1:4"}],"id":3113,"name":"Return","src":"2917:8:4"}],"id":3114,"name":"Block","src":"2673:259:4"}],"id":3115,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":3137,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3116,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":3117,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":3136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3118,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":3119,"name":"VariableDeclaration","src":"3400:9:4"}],"id":3120,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3136,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3121,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":3122,"name":"VariableDeclaration","src":"3434:7:4"}],"id":3123,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":3124,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3119,"type":"uint256","value":"b"},"id":3125,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3126,"name":"Literal","src":"3466:1:4"}],"id":3127,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":3128,"name":"Literal","src":"3469:26:4"}],"id":3129,"name":"FunctionCall","src":"3453:43:4"}],"id":3130,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":3123},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3117,"type":"uint256","value":"a"},"id":3131,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3119,"type":"uint256","value":"b"},"id":3132,"name":"Identifier","src":"3517:1:4"}],"id":3133,"name":"BinaryOperation","src":"3513:5:4"}],"id":3134,"name":"Return","src":"3506:12:4"}],"id":3135,"name":"Block","src":"3443:82:4"}],"id":3136,"name":"FunctionDefinition","src":"3376:149:4"}],"id":3137,"name":"ContractDefinition","src":"589:2938:4"}],"id":3138,"name":"SourceUnit","src":"0:3528:4"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[555]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":420,"name":"PragmaDirective","src":"1400:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[555],"name":"ENS","scope":556},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":428,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":421,"name":"ElementaryTypeName","src":"1534:7:5"}],"id":422,"name":"VariableDeclaration","src":"1534:21:5"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":428,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":423,"name":"ElementaryTypeName","src":"1557:7:5"}],"id":424,"name":"VariableDeclaration","src":"1557:22:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":428,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":425,"name":"ElementaryTypeName","src":"1581:7:5"}],"id":426,"name":"VariableDeclaration","src":"1581:14:5"}],"id":427,"name":"ParameterList","src":"1533:63:5"}],"id":428,"name":"EventDefinition","src":"1519:78:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":434,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":429,"name":"ElementaryTypeName","src":"1695:7:5"}],"id":430,"name":"VariableDeclaration","src":"1695:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":434,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":431,"name":"ElementaryTypeName","src":"1718:7:5"}],"id":432,"name":"VariableDeclaration","src":"1718:14:5"}],"id":433,"name":"ParameterList","src":"1694:39:5"}],"id":434,"name":"EventDefinition","src":"1680:54:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":440,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":435,"name":"ElementaryTypeName","src":"1810:7:5"}],"id":436,"name":"VariableDeclaration","src":"1810:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":440,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":437,"name":"ElementaryTypeName","src":"1833:7:5"}],"id":438,"name":"VariableDeclaration","src":"1833:17:5"}],"id":439,"name":"ParameterList","src":"1809:42:5"}],"id":440,"name":"EventDefinition","src":"1792:60:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":446,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":441,"name":"ElementaryTypeName","src":"1916:7:5"}],"id":442,"name":"VariableDeclaration","src":"1916:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":446,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":443,"name":"ElementaryTypeName","src":"1939:6:5"}],"id":444,"name":"VariableDeclaration","src":"1939:11:5"}],"id":445,"name":"ParameterList","src":"1915:36:5"}],"id":446,"name":"EventDefinition","src":"1903:49:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":447,"name":"ElementaryTypeName","src":"2031:7:5"}],"id":448,"name":"VariableDeclaration","src":"2031:22:5"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":449,"name":"ElementaryTypeName","src":"2055:7:5"}],"id":450,"name":"VariableDeclaration","src":"2055:25:5"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":451,"name":"ElementaryTypeName","src":"2082:4:5"}],"id":452,"name":"VariableDeclaration","src":"2082:14:5"}],"id":453,"name":"ParameterList","src":"2030:67:5"}],"id":454,"name":"EventDefinition","src":"2010:88:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":465,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":455,"name":"ElementaryTypeName","src":"2123:7:5"}],"id":456,"name":"VariableDeclaration","src":"2123:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":465,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":457,"name":"ElementaryTypeName","src":"2138:7:5"}],"id":458,"name":"VariableDeclaration","src":"2138:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":465,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":459,"name":"ElementaryTypeName","src":"2154:7:5"}],"id":460,"name":"VariableDeclaration","src":"2154:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":465,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":461,"name":"ElementaryTypeName","src":"2173:6:5"}],"id":462,"name":"VariableDeclaration","src":"2173:11:5"}],"id":463,"name":"ParameterList","src":"2122:63:5"},{"attributes":{"parameters":[null]},"children":[],"id":464,"name":"ParameterList","src":"2194:0:5"}],"id":465,"name":"FunctionDefinition","src":"2104:91:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":478,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":466,"name":"ElementaryTypeName","src":"2226:7:5"}],"id":467,"name":"VariableDeclaration","src":"2226:13:5"},{"attributes":{"constant":false,"name":"_label","scope":478,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":468,"name":"ElementaryTypeName","src":"2241:7:5"}],"id":469,"name":"VariableDeclaration","src":"2241:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":478,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":470,"name":"ElementaryTypeName","src":"2257:7:5"}],"id":471,"name":"VariableDeclaration","src":"2257:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":478,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":472,"name":"ElementaryTypeName","src":"2273:7:5"}],"id":473,"name":"VariableDeclaration","src":"2273:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":478,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":474,"name":"ElementaryTypeName","src":"2292:6:5"}],"id":475,"name":"VariableDeclaration","src":"2292:11:5"}],"id":476,"name":"ParameterList","src":"2225:79:5"},{"attributes":{"parameters":[null]},"children":[],"id":477,"name":"ParameterList","src":"2313:0:5"}],"id":478,"name":"FunctionDefinition","src":"2200:114:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":489,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":479,"name":"ElementaryTypeName","src":"2344:7:5"}],"id":480,"name":"VariableDeclaration","src":"2344:13:5"},{"attributes":{"constant":false,"name":"_label","scope":489,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":481,"name":"ElementaryTypeName","src":"2359:7:5"}],"id":482,"name":"VariableDeclaration","src":"2359:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":489,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":483,"name":"ElementaryTypeName","src":"2375:7:5"}],"id":484,"name":"VariableDeclaration","src":"2375:14:5"}],"id":485,"name":"ParameterList","src":"2343:47:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":489,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":486,"name":"ElementaryTypeName","src":"2408:7:5"}],"id":487,"name":"VariableDeclaration","src":"2408:7:5"}],"id":488,"name":"ParameterList","src":"2407:9:5"}],"id":489,"name":"FunctionDefinition","src":"2319:98:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":496,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":490,"name":"ElementaryTypeName","src":"2443:7:5"}],"id":491,"name":"VariableDeclaration","src":"2443:13:5"},{"attributes":{"constant":false,"name":"_resolver","scope":496,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":492,"name":"ElementaryTypeName","src":"2458:7:5"}],"id":493,"name":"VariableDeclaration","src":"2458:17:5"}],"id":494,"name":"ParameterList","src":"2442:34:5"},{"attributes":{"parameters":[null]},"children":[],"id":495,"name":"ParameterList","src":"2485:0:5"}],"id":496,"name":"FunctionDefinition","src":"2422:64:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":503,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":497,"name":"ElementaryTypeName","src":"2509:7:5"}],"id":498,"name":"VariableDeclaration","src":"2509:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":503,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":499,"name":"ElementaryTypeName","src":"2524:7:5"}],"id":500,"name":"VariableDeclaration","src":"2524:14:5"}],"id":501,"name":"ParameterList","src":"2508:31:5"},{"attributes":{"parameters":[null]},"children":[],"id":502,"name":"ParameterList","src":"2548:0:5"}],"id":503,"name":"FunctionDefinition","src":"2491:58:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":510,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":504,"name":"ElementaryTypeName","src":"2570:7:5"}],"id":505,"name":"VariableDeclaration","src":"2570:13:5"},{"attributes":{"constant":false,"name":"_ttl","scope":510,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":506,"name":"ElementaryTypeName","src":"2585:6:5"}],"id":507,"name":"VariableDeclaration","src":"2585:11:5"}],"id":508,"name":"ParameterList","src":"2569:28:5"},{"attributes":{"parameters":[null]},"children":[],"id":509,"name":"ParameterList","src":"2606:0:5"}],"id":510,"name":"FunctionDefinition","src":"2554:53:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":555,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":517,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":511,"name":"ElementaryTypeName","src":"2639:7:5"}],"id":512,"name":"VariableDeclaration","src":"2639:17:5"},{"attributes":{"constant":false,"name":"_approved","scope":517,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":513,"name":"ElementaryTypeName","src":"2658:4:5"}],"id":514,"name":"VariableDeclaration","src":"2658:14:5"}],"id":515,"name":"ParameterList","src":"2638:35:5"},{"attributes":{"parameters":[null]},"children":[],"id":516,"name":"ParameterList","src":"2682:0:5"}],"id":517,"name":"FunctionDefinition","src":"2612:71:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":524,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":518,"name":"ElementaryTypeName","src":"2703:7:5"}],"id":519,"name":"VariableDeclaration","src":"2703:13:5"}],"id":520,"name":"ParameterList","src":"2702:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":524,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":521,"name":"ElementaryTypeName","src":"2741:7:5"}],"id":522,"name":"VariableDeclaration","src":"2741:7:5"}],"id":523,"name":"ParameterList","src":"2740:9:5"}],"id":524,"name":"FunctionDefinition","src":"2688:62:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":531,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":525,"name":"ElementaryTypeName","src":"2773:7:5"}],"id":526,"name":"VariableDeclaration","src":"2773:13:5"}],"id":527,"name":"ParameterList","src":"2772:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":531,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":528,"name":"ElementaryTypeName","src":"2811:7:5"}],"id":529,"name":"VariableDeclaration","src":"2811:7:5"}],"id":530,"name":"ParameterList","src":"2810:9:5"}],"id":531,"name":"FunctionDefinition","src":"2755:65:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":538,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":532,"name":"ElementaryTypeName","src":"2838:7:5"}],"id":533,"name":"VariableDeclaration","src":"2838:13:5"}],"id":534,"name":"ParameterList","src":"2837:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":538,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":535,"name":"ElementaryTypeName","src":"2876:6:5"}],"id":536,"name":"VariableDeclaration","src":"2876:6:5"}],"id":537,"name":"ParameterList","src":"2875:8:5"}],"id":538,"name":"FunctionDefinition","src":"2825:59:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":545,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":539,"name":"ElementaryTypeName","src":"2911:7:5"}],"id":540,"name":"VariableDeclaration","src":"2911:13:5"}],"id":541,"name":"ParameterList","src":"2910:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":545,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":542,"name":"ElementaryTypeName","src":"2949:4:5"}],"id":543,"name":"VariableDeclaration","src":"2949:4:5"}],"id":544,"name":"ParameterList","src":"2948:6:5"}],"id":545,"name":"FunctionDefinition","src":"2889:66:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":555,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":554,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":546,"name":"ElementaryTypeName","src":"2986:7:5"}],"id":547,"name":"VariableDeclaration","src":"2986:14:5"},{"attributes":{"constant":false,"name":"_operator","scope":554,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":548,"name":"ElementaryTypeName","src":"3002:7:5"}],"id":549,"name":"VariableDeclaration","src":"3002:17:5"}],"id":550,"name":"ParameterList","src":"2985:35:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":554,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":551,"name":"ElementaryTypeName","src":"3044:4:5"}],"id":552,"name":"VariableDeclaration","src":"3044:4:5"}],"id":553,"name":"ParameterList","src":"3043:6:5"}],"id":554,"name":"FunctionDefinition","src":"2960:90:5"}],"id":555,"name":"ContractDefinition","src":"1425:1627:5"}],"id":556,"name":"SourceUnit","src":"1400:1653:5"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[7224]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":6505,"name":"PragmaDirective","src":"0:24:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[7224],"name":"ENSBytesUtils","scope":7225},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6527,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6506,"name":"ElementaryTypeName","src":"325:5:6"}],"id":6507,"name":"VariableDeclaration","src":"325:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6527,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6508,"name":"ElementaryTypeName","src":"344:4:6"}],"id":6509,"name":"VariableDeclaration","src":"344:11:6"},{"attributes":{"constant":false,"name":"len","scope":6527,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6510,"name":"ElementaryTypeName","src":"357:4:6"}],"id":6511,"name":"VariableDeclaration","src":"357:8:6"}],"id":6512,"name":"ParameterList","src":"324:42:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6527,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6513,"name":"ElementaryTypeName","src":"390:7:6"}],"id":6514,"name":"VariableDeclaration","src":"390:11:6"}],"id":6515,"name":"ParameterList","src":"389:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6516,"name":"Identifier","src":"413:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6509,"type":"uint256","value":"offset"},"id":6517,"name":"Identifier","src":"421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6511,"type":"uint256","value":"len"},"id":6518,"name":"Identifier","src":"430:3:6"}],"id":6519,"name":"BinaryOperation","src":"421:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6507,"type":"bytes memory","value":"self"},"id":6520,"name":"Identifier","src":"437:4:6"}],"id":6521,"name":"MemberAccess","src":"437:11:6"}],"id":6522,"name":"BinaryOperation","src":"421:27:6"}],"id":6523,"name":"FunctionCall","src":"413:36:6"}],"id":6524,"name":"ExpressionStatement","src":"413:36:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6514,"isOffset":false,"isSlot":false,"src":"482:3:6","valueSize":1}},{"self":{"declaration":6507,"isOffset":false,"isSlot":false,"src":"507:4:6","valueSize":1}},{"offset":{"declaration":6509,"isOffset":false,"isSlot":false,"src":"518:6:6","valueSize":1}},{"len":{"declaration":6511,"isOffset":false,"isSlot":false,"src":"527:3:6","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":6525,"name":"InlineAssembly","src":"459:82:6"}],"id":6526,"name":"Block","src":"403:144:6"}],"id":6527,"name":"FunctionDefinition","src":"309:238:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6548,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6528,"name":"ElementaryTypeName","src":"920:5:6"}],"id":6529,"name":"VariableDeclaration","src":"920:17:6"},{"attributes":{"constant":false,"name":"other","scope":6548,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6530,"name":"ElementaryTypeName","src":"939:5:6"}],"id":6531,"name":"VariableDeclaration","src":"939:18:6"}],"id":6532,"name":"ParameterList","src":"919:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6548,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6533,"name":"ElementaryTypeName","src":"982:3:6"}],"id":6534,"name":"VariableDeclaration","src":"982:3:6"}],"id":6535,"name":"ParameterList","src":"981:5:6"},{"children":[{"attributes":{"functionReturnParameters":6535},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6548,6680],"referencedDeclaration":6680,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":6536,"name":"Identifier","src":"1004:7:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6529,"type":"bytes memory","value":"self"},"id":6537,"name":"Identifier","src":"1012:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6538,"name":"Literal","src":"1018:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6529,"type":"bytes memory","value":"self"},"id":6539,"name":"Identifier","src":"1021:4:6"}],"id":6540,"name":"MemberAccess","src":"1021:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6531,"type":"bytes memory","value":"other"},"id":6541,"name":"Identifier","src":"1034:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6542,"name":"Literal","src":"1041:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6531,"type":"bytes memory","value":"other"},"id":6543,"name":"Identifier","src":"1044:5:6"}],"id":6544,"name":"MemberAccess","src":"1044:12:6"}],"id":6545,"name":"FunctionCall","src":"1004:53:6"}],"id":6546,"name":"Return","src":"997:60:6"}],"id":6547,"name":"Block","src":"987:77:6"}],"id":6548,"name":"FunctionDefinition","src":"903:161:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6680,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6549,"name":"ElementaryTypeName","src":"1694:5:6"}],"id":6550,"name":"VariableDeclaration","src":"1694:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6551,"name":"ElementaryTypeName","src":"1713:4:6"}],"id":6552,"name":"VariableDeclaration","src":"1713:11:6"},{"attributes":{"constant":false,"name":"len","scope":6680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6553,"name":"ElementaryTypeName","src":"1726:4:6"}],"id":6554,"name":"VariableDeclaration","src":"1726:8:6"},{"attributes":{"constant":false,"name":"other","scope":6680,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6555,"name":"ElementaryTypeName","src":"1736:5:6"}],"id":6556,"name":"VariableDeclaration","src":"1736:18:6"},{"attributes":{"constant":false,"name":"otheroffset","scope":6680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6557,"name":"ElementaryTypeName","src":"1756:4:6"}],"id":6558,"name":"VariableDeclaration","src":"1756:16:6"},{"attributes":{"constant":false,"name":"otherlen","scope":6680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6559,"name":"ElementaryTypeName","src":"1774:4:6"}],"id":6560,"name":"VariableDeclaration","src":"1774:13:6"}],"id":6561,"name":"ParameterList","src":"1693:95:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6680,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6562,"name":"ElementaryTypeName","src":"1812:3:6"}],"id":6563,"name":"VariableDeclaration","src":"1812:3:6"}],"id":6564,"name":"ParameterList","src":"1811:5:6"},{"children":[{"attributes":{"assignments":[6566]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":6679,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6565,"name":"ElementaryTypeName","src":"1827:4:6"}],"id":6566,"name":"VariableDeclaration","src":"1827:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint256","value":"len"},"id":6567,"name":"Identifier","src":"1843:3:6"}],"id":6568,"name":"VariableDeclarationStatement","src":"1827:19:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6560,"type":"uint256","value":"otherlen"},"id":6569,"name":"Identifier","src":"1860:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint256","value":"len"},"id":6570,"name":"Identifier","src":"1871:3:6"}],"id":6571,"name":"BinaryOperation","src":"1860:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"shortest"},"id":6572,"name":"Identifier","src":"1884:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6560,"type":"uint256","value":"otherlen"},"id":6573,"name":"Identifier","src":"1895:8:6"}],"id":6574,"name":"Assignment","src":"1884:19:6"}],"id":6575,"name":"ExpressionStatement","src":"1884:19:6"}],"id":6576,"name":"IfStatement","src":"1856:47:6"},{"attributes":{"assignments":[6578],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":6679,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6577,"name":"ElementaryTypeName","src":"1914:4:6"}],"id":6578,"name":"VariableDeclaration","src":"1914:12:6"}],"id":6579,"name":"VariableDeclarationStatement","src":"1914:12:6"},{"attributes":{"assignments":[6581],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":6679,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6580,"name":"ElementaryTypeName","src":"1936:4:6"}],"id":6581,"name":"VariableDeclaration","src":"1936:13:6"}],"id":6582,"name":"VariableDeclarationStatement","src":"1936:13:6"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":6578,"isOffset":false,"isSlot":false,"src":"1983:7:6","valueSize":1}},{"otherptr":{"declaration":6581,"isOffset":false,"isSlot":false,"src":"2033:8:6","valueSize":1}},{"offset":{"declaration":6552,"isOffset":false,"isSlot":false,"src":"2008:6:6","valueSize":1}},{"self":{"declaration":6550,"isOffset":false,"isSlot":false,"src":"1998:4:6","valueSize":1}},{"otheroffset":{"declaration":6558,"isOffset":false,"isSlot":false,"src":"2060:11:6","valueSize":1}},{"other":{"declaration":6556,"isOffset":false,"isSlot":false,"src":"2049:5:6","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":6583,"name":"InlineAssembly","src":"1960:127:6"},{"children":[{"attributes":{"assignments":[6585]},"children":[{"attributes":{"constant":false,"name":"idx","scope":6670,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6584,"name":"ElementaryTypeName","src":"2101:4:6"}],"id":6585,"name":"VariableDeclaration","src":"2101:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6586,"name":"Literal","src":"2112:1:6"}],"id":6587,"name":"VariableDeclarationStatement","src":"2101:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"uint256","value":"idx"},"id":6588,"name":"Identifier","src":"2115:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"shortest"},"id":6589,"name":"Identifier","src":"2121:8:6"}],"id":6590,"name":"BinaryOperation","src":"2115:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"uint256","value":"idx"},"id":6591,"name":"Identifier","src":"2131:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6592,"name":"Literal","src":"2138:2:6"}],"id":6593,"name":"Assignment","src":"2131:9:6"}],"id":6594,"name":"ExpressionStatement","src":"2131:9:6"},{"children":[{"attributes":{"assignments":[6596],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":6669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6595,"name":"ElementaryTypeName","src":"2156:4:6"}],"id":6596,"name":"VariableDeclaration","src":"2156:6:6"}],"id":6597,"name":"VariableDeclarationStatement","src":"2156:6:6"},{"attributes":{"assignments":[6599],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":6669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6598,"name":"ElementaryTypeName","src":"2176:4:6"}],"id":6599,"name":"VariableDeclaration","src":"2176:6:6"}],"id":6600,"name":"VariableDeclarationStatement","src":"2176:6:6"},{"attributes":{"externalReferences":[{"a":{"declaration":6596,"isOffset":false,"isSlot":false,"src":"2223:1:6","valueSize":1}},{"selfptr":{"declaration":6578,"isOffset":false,"isSlot":false,"src":"2234:7:6","valueSize":1}},{"b":{"declaration":6599,"isOffset":false,"isSlot":false,"src":"2259:1:6","valueSize":1}},{"otherptr":{"declaration":6581,"isOffset":false,"isSlot":false,"src":"2270:8:6","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":6601,"name":"InlineAssembly","src":"2196:97:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6596,"type":"uint256","value":"a"},"id":6602,"name":"Identifier","src":"2310:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6599,"type":"uint256","value":"b"},"id":6603,"name":"Identifier","src":"2315:1:6"}],"id":6604,"name":"BinaryOperation","src":"2310:6:6"},{"children":[{"attributes":{"assignments":[6606],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":6659,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6605,"name":"ElementaryTypeName","src":"2397:4:6"}],"id":6606,"name":"VariableDeclaration","src":"2397:9:6"}],"id":6607,"name":"VariableDeclarationStatement","src":"2397:9:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"shortest"},"id":6608,"name":"Identifier","src":"2428:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6609,"name":"Literal","src":"2439:2:6"}],"id":6610,"name":"BinaryOperation","src":"2428:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6606,"type":"uint256","value":"mask"},"id":6611,"name":"Identifier","src":"2465:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":6612,"name":"ElementaryTypeNameExpression","src":"2472:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6613,"name":"Literal","src":"2482:1:6"}],"id":6614,"name":"UnaryOperation","src":"2480:3:6"}],"id":6615,"name":"FunctionCall","src":"2472:12:6"}],"id":6616,"name":"Assignment","src":"2465:19:6"}],"id":6617,"name":"ExpressionStatement","src":"2465:19:6"}],"id":6618,"name":"Block","src":"2443:80:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6606,"type":"uint256","value":"mask"},"id":6619,"name":"Identifier","src":"2551:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6620,"name":"Literal","src":"2560:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6621,"name":"Literal","src":"2566:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6622,"name":"Literal","src":"2571:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"shortest"},"id":6623,"name":"Identifier","src":"2576:8:6"}],"id":6624,"name":"BinaryOperation","src":"2571:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6585,"type":"uint256","value":"idx"},"id":6625,"name":"Identifier","src":"2587:3:6"}],"id":6626,"name":"BinaryOperation","src":"2571:19:6"}],"id":6627,"name":"TupleExpression","src":"2570:21:6"}],"id":6628,"name":"BinaryOperation","src":"2566:25:6"}],"id":6629,"name":"TupleExpression","src":"2565:27:6"}],"id":6630,"name":"BinaryOperation","src":"2560:32:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6631,"name":"Literal","src":"2595:1:6"}],"id":6632,"name":"BinaryOperation","src":"2560:36:6"}],"id":6633,"name":"TupleExpression","src":"2559:38:6"}],"id":6634,"name":"UnaryOperation","src":"2558:39:6"}],"id":6635,"name":"Assignment","src":"2551:46:6"}],"id":6636,"name":"ExpressionStatement","src":"2551:46:6"}],"id":6637,"name":"Block","src":"2529:87:6"}],"id":6638,"name":"IfStatement","src":"2424:192:6"},{"attributes":{"assignments":[6640]},"children":[{"attributes":{"constant":false,"name":"diff","scope":6659,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6639,"name":"ElementaryTypeName","src":"2633:4:6"}],"id":6640,"name":"VariableDeclaration","src":"2633:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6596,"type":"uint256","value":"a"},"id":6641,"name":"Identifier","src":"2646:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6606,"type":"uint256","value":"mask"},"id":6642,"name":"Identifier","src":"2650:4:6"}],"id":6643,"name":"BinaryOperation","src":"2646:8:6"}],"id":6644,"name":"TupleExpression","src":"2645:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6599,"type":"uint256","value":"b"},"id":6645,"name":"Identifier","src":"2659:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6606,"type":"uint256","value":"mask"},"id":6646,"name":"Identifier","src":"2663:4:6"}],"id":6647,"name":"BinaryOperation","src":"2659:8:6"}],"id":6648,"name":"TupleExpression","src":"2658:10:6"}],"id":6649,"name":"BinaryOperation","src":"2645:23:6"}],"id":6650,"name":"VariableDeclarationStatement","src":"2633:35:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6640,"type":"uint256","value":"diff"},"id":6651,"name":"Identifier","src":"2690:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6652,"name":"Literal","src":"2698:1:6"}],"id":6653,"name":"BinaryOperation","src":"2690:9:6"},{"attributes":{"functionReturnParameters":6564},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6654,"name":"ElementaryTypeNameExpression","src":"2724:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6640,"type":"uint256","value":"diff"},"id":6655,"name":"Identifier","src":"2728:4:6"}],"id":6656,"name":"FunctionCall","src":"2724:9:6"}],"id":6657,"name":"Return","src":"2717:16:6"}],"id":6658,"name":"IfStatement","src":"2686:47:6"}],"id":6659,"name":"Block","src":"2318:430:6"}],"id":6660,"name":"IfStatement","src":"2306:442:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6578,"type":"uint256","value":"selfptr"},"id":6661,"name":"Identifier","src":"2761:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6662,"name":"Literal","src":"2772:2:6"}],"id":6663,"name":"Assignment","src":"2761:13:6"}],"id":6664,"name":"ExpressionStatement","src":"2761:13:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6581,"type":"uint256","value":"otherptr"},"id":6665,"name":"Identifier","src":"2788:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6666,"name":"Literal","src":"2800:2:6"}],"id":6667,"name":"Assignment","src":"2788:14:6"}],"id":6668,"name":"ExpressionStatement","src":"2788:14:6"}],"id":6669,"name":"Block","src":"2142:671:6"}],"id":6670,"name":"ForStatement","src":"2096:717:6"},{"attributes":{"functionReturnParameters":6564},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6671,"name":"ElementaryTypeNameExpression","src":"2830:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6554,"type":"uint256","value":"len"},"id":6672,"name":"Identifier","src":"2834:3:6"}],"id":6673,"name":"FunctionCall","src":"2830:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6674,"name":"ElementaryTypeNameExpression","src":"2841:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6560,"type":"uint256","value":"otherlen"},"id":6675,"name":"Identifier","src":"2845:8:6"}],"id":6676,"name":"FunctionCall","src":"2841:13:6"}],"id":6677,"name":"BinaryOperation","src":"2830:24:6"}],"id":6678,"name":"Return","src":"2823:31:6"}],"id":6679,"name":"Block","src":"1817:1044:6"}],"id":6680,"name":"FunctionDefinition","src":"1677:1184:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6708,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6681,"name":"ElementaryTypeName","src":"3295:5:6"}],"id":6682,"name":"VariableDeclaration","src":"3295:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6708,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6683,"name":"ElementaryTypeName","src":"3314:4:6"}],"id":6684,"name":"VariableDeclaration","src":"3314:11:6"},{"attributes":{"constant":false,"name":"other","scope":6708,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6685,"name":"ElementaryTypeName","src":"3327:5:6"}],"id":6686,"name":"VariableDeclaration","src":"3327:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":6708,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6687,"name":"ElementaryTypeName","src":"3347:4:6"}],"id":6688,"name":"VariableDeclaration","src":"3347:16:6"},{"attributes":{"constant":false,"name":"len","scope":6708,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6689,"name":"ElementaryTypeName","src":"3365:4:6"}],"id":6690,"name":"VariableDeclaration","src":"3365:8:6"}],"id":6691,"name":"ParameterList","src":"3294:80:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6708,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6692,"name":"ElementaryTypeName","src":"3398:4:6"}],"id":6693,"name":"VariableDeclaration","src":"3398:4:6"}],"id":6694,"name":"ParameterList","src":"3397:6:6"},{"children":[{"attributes":{"functionReturnParameters":6694},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6527,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6695,"name":"Identifier","src":"3421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6682,"type":"bytes memory","value":"self"},"id":6696,"name":"Identifier","src":"3428:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6684,"type":"uint256","value":"offset"},"id":6697,"name":"Identifier","src":"3434:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6690,"type":"uint256","value":"len"},"id":6698,"name":"Identifier","src":"3442:3:6"}],"id":6699,"name":"FunctionCall","src":"3421:25:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6527,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6700,"name":"Identifier","src":"3450:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6686,"type":"bytes memory","value":"other"},"id":6701,"name":"Identifier","src":"3457:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6688,"type":"uint256","value":"otherOffset"},"id":6702,"name":"Identifier","src":"3464:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6690,"type":"uint256","value":"len"},"id":6703,"name":"Identifier","src":"3477:3:6"}],"id":6704,"name":"FunctionCall","src":"3450:31:6"}],"id":6705,"name":"BinaryOperation","src":"3421:60:6"}],"id":6706,"name":"Return","src":"3414:67:6"}],"id":6707,"name":"Block","src":"3404:84:6"}],"id":6708,"name":"FunctionDefinition","src":"3279:209:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6740,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6709,"name":"ElementaryTypeName","src":"3887:5:6"}],"id":6710,"name":"VariableDeclaration","src":"3887:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6740,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6711,"name":"ElementaryTypeName","src":"3906:4:6"}],"id":6712,"name":"VariableDeclaration","src":"3906:11:6"},{"attributes":{"constant":false,"name":"other","scope":6740,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6713,"name":"ElementaryTypeName","src":"3919:5:6"}],"id":6714,"name":"VariableDeclaration","src":"3919:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":6740,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6715,"name":"ElementaryTypeName","src":"3939:4:6"}],"id":6716,"name":"VariableDeclaration","src":"3939:16:6"}],"id":6717,"name":"ParameterList","src":"3886:70:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6740,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6718,"name":"ElementaryTypeName","src":"3980:4:6"}],"id":6719,"name":"VariableDeclaration","src":"3980:4:6"}],"id":6720,"name":"ParameterList","src":"3979:6:6"},{"children":[{"attributes":{"functionReturnParameters":6720},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6527,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6721,"name":"Identifier","src":"4003:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6710,"type":"bytes memory","value":"self"},"id":6722,"name":"Identifier","src":"4010:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6712,"type":"uint256","value":"offset"},"id":6723,"name":"Identifier","src":"4016:6:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6710,"type":"bytes memory","value":"self"},"id":6724,"name":"Identifier","src":"4024:4:6"}],"id":6725,"name":"MemberAccess","src":"4024:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6712,"type":"uint256","value":"offset"},"id":6726,"name":"Identifier","src":"4038:6:6"}],"id":6727,"name":"BinaryOperation","src":"4024:20:6"}],"id":6728,"name":"FunctionCall","src":"4003:42:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6527,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6729,"name":"Identifier","src":"4049:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6714,"type":"bytes memory","value":"other"},"id":6730,"name":"Identifier","src":"4056:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6716,"type":"uint256","value":"otherOffset"},"id":6731,"name":"Identifier","src":"4063:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6714,"type":"bytes memory","value":"other"},"id":6732,"name":"Identifier","src":"4076:5:6"}],"id":6733,"name":"MemberAccess","src":"4076:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6716,"type":"uint256","value":"otherOffset"},"id":6734,"name":"Identifier","src":"4091:11:6"}],"id":6735,"name":"BinaryOperation","src":"4076:26:6"}],"id":6736,"name":"FunctionCall","src":"4049:54:6"}],"id":6737,"name":"BinaryOperation","src":"4003:100:6"}],"id":6738,"name":"Return","src":"3996:107:6"}],"id":6739,"name":"Block","src":"3986:124:6"}],"id":6740,"name":"FunctionDefinition","src":"3871:239:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6769,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6741,"name":"ElementaryTypeName","src":"4478:5:6"}],"id":6742,"name":"VariableDeclaration","src":"4478:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6769,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6743,"name":"ElementaryTypeName","src":"4497:4:6"}],"id":6744,"name":"VariableDeclaration","src":"4497:11:6"},{"attributes":{"constant":false,"name":"other","scope":6769,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6745,"name":"ElementaryTypeName","src":"4510:5:6"}],"id":6746,"name":"VariableDeclaration","src":"4510:18:6"}],"id":6747,"name":"ParameterList","src":"4477:52:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6769,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6748,"name":"ElementaryTypeName","src":"4553:4:6"}],"id":6749,"name":"VariableDeclaration","src":"4553:4:6"}],"id":6750,"name":"ParameterList","src":"4552:6:6"},{"children":[{"attributes":{"functionReturnParameters":6750},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes memory","value":"self"},"id":6751,"name":"Identifier","src":"4576:4:6"}],"id":6752,"name":"MemberAccess","src":"4576:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"uint256","value":"offset"},"id":6753,"name":"Identifier","src":"4591:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"bytes memory","value":"other"},"id":6754,"name":"Identifier","src":"4600:5:6"}],"id":6755,"name":"MemberAccess","src":"4600:12:6"}],"id":6756,"name":"BinaryOperation","src":"4591:21:6"}],"id":6757,"name":"BinaryOperation","src":"4576:36:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6708,6740,6769,6794],"referencedDeclaration":6708,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":6758,"name":"Identifier","src":"4616:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes memory","value":"self"},"id":6759,"name":"Identifier","src":"4623:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"uint256","value":"offset"},"id":6760,"name":"Identifier","src":"4629:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"bytes memory","value":"other"},"id":6761,"name":"Identifier","src":"4637:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6762,"name":"Literal","src":"4644:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"bytes memory","value":"other"},"id":6763,"name":"Identifier","src":"4647:5:6"}],"id":6764,"name":"MemberAccess","src":"4647:12:6"}],"id":6765,"name":"FunctionCall","src":"4616:44:6"}],"id":6766,"name":"BinaryOperation","src":"4576:84:6"}],"id":6767,"name":"Return","src":"4569:91:6"}],"id":6768,"name":"Block","src":"4559:108:6"}],"id":6769,"name":"FunctionDefinition","src":"4462:205:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6794,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6770,"name":"ElementaryTypeName","src":"4931:5:6"}],"id":6771,"name":"VariableDeclaration","src":"4931:17:6"},{"attributes":{"constant":false,"name":"other","scope":6794,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6772,"name":"ElementaryTypeName","src":"4950:5:6"}],"id":6773,"name":"VariableDeclaration","src":"4950:18:6"}],"id":6774,"name":"ParameterList","src":"4930:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6794,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6775,"name":"ElementaryTypeName","src":"4992:4:6"}],"id":6776,"name":"VariableDeclaration","src":"4992:4:6"}],"id":6777,"name":"ParameterList","src":"4991:6:6"},{"children":[{"attributes":{"functionReturnParameters":6777},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6771,"type":"bytes memory","value":"self"},"id":6778,"name":"Identifier","src":"5015:4:6"}],"id":6779,"name":"MemberAccess","src":"5015:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"bytes memory","value":"other"},"id":6780,"name":"Identifier","src":"5030:5:6"}],"id":6781,"name":"MemberAccess","src":"5030:12:6"}],"id":6782,"name":"BinaryOperation","src":"5015:27:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6708,6740,6769,6794],"referencedDeclaration":6708,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":6783,"name":"Identifier","src":"5046:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6771,"type":"bytes memory","value":"self"},"id":6784,"name":"Identifier","src":"5053:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6785,"name":"Literal","src":"5059:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"bytes memory","value":"other"},"id":6786,"name":"Identifier","src":"5062:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6787,"name":"Literal","src":"5069:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6771,"type":"bytes memory","value":"self"},"id":6788,"name":"Identifier","src":"5072:4:6"}],"id":6789,"name":"MemberAccess","src":"5072:11:6"}],"id":6790,"name":"FunctionCall","src":"5046:38:6"}],"id":6791,"name":"BinaryOperation","src":"5015:69:6"}],"id":6792,"name":"Return","src":"5008:76:6"}],"id":6793,"name":"Block","src":"4998:93:6"}],"id":6794,"name":"FunctionDefinition","src":"4915:176:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6810,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6795,"name":"ElementaryTypeName","src":"5352:5:6"}],"id":6796,"name":"VariableDeclaration","src":"5352:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6810,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6797,"name":"ElementaryTypeName","src":"5371:4:6"}],"id":6798,"name":"VariableDeclaration","src":"5371:8:6"}],"id":6799,"name":"ParameterList","src":"5351:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6810,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6800,"name":"ElementaryTypeName","src":"5404:5:6"}],"id":6801,"name":"VariableDeclaration","src":"5404:9:6"}],"id":6802,"name":"ParameterList","src":"5403:11:6"},{"children":[{"attributes":{"functionReturnParameters":6802},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6803,"name":"ElementaryTypeNameExpression","src":"5432:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6796,"type":"bytes memory","value":"self"},"id":6804,"name":"Identifier","src":"5438:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6798,"type":"uint256","value":"idx"},"id":6805,"name":"Identifier","src":"5443:3:6"}],"id":6806,"name":"IndexAccess","src":"5438:9:6"}],"id":6807,"name":"FunctionCall","src":"5432:16:6"}],"id":6808,"name":"Return","src":"5425:23:6"}],"id":6809,"name":"Block","src":"5415:40:6"}],"id":6810,"name":"FunctionDefinition","src":"5333:122:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6830,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6811,"name":"ElementaryTypeName","src":"5719:5:6"}],"id":6812,"name":"VariableDeclaration","src":"5719:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6830,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6813,"name":"ElementaryTypeName","src":"5738:4:6"}],"id":6814,"name":"VariableDeclaration","src":"5738:8:6"}],"id":6815,"name":"ParameterList","src":"5718:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6830,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6816,"name":"ElementaryTypeName","src":"5771:6:6"}],"id":6817,"name":"VariableDeclaration","src":"5771:10:6"}],"id":6818,"name":"ParameterList","src":"5770:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6819,"name":"Identifier","src":"5793:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6814,"type":"uint256","value":"idx"},"id":6820,"name":"Identifier","src":"5801:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6821,"name":"Literal","src":"5807:1:6"}],"id":6822,"name":"BinaryOperation","src":"5801:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"bytes memory","value":"self"},"id":6823,"name":"Identifier","src":"5812:4:6"}],"id":6824,"name":"MemberAccess","src":"5812:11:6"}],"id":6825,"name":"BinaryOperation","src":"5801:22:6"}],"id":6826,"name":"FunctionCall","src":"5793:31:6"}],"id":6827,"name":"ExpressionStatement","src":"5793:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6817,"isOffset":false,"isSlot":false,"src":"5857:3:6","valueSize":1}},{"self":{"declaration":6812,"isOffset":false,"isSlot":false,"src":"5882:4:6","valueSize":1}},{"idx":{"declaration":6814,"isOffset":false,"isSlot":false,"src":"5892:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":6828,"name":"InlineAssembly","src":"5834:82:6"}],"id":6829,"name":"Block","src":"5783:139:6"}],"id":6830,"name":"FunctionDefinition","src":"5699:223:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6850,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6831,"name":"ElementaryTypeName","src":"6186:5:6"}],"id":6832,"name":"VariableDeclaration","src":"6186:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6850,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6833,"name":"ElementaryTypeName","src":"6205:4:6"}],"id":6834,"name":"VariableDeclaration","src":"6205:8:6"}],"id":6835,"name":"ParameterList","src":"6185:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6850,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":6836,"name":"ElementaryTypeName","src":"6238:6:6"}],"id":6837,"name":"VariableDeclaration","src":"6238:10:6"}],"id":6838,"name":"ParameterList","src":"6237:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6839,"name":"Identifier","src":"6260:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6834,"type":"uint256","value":"idx"},"id":6840,"name":"Identifier","src":"6268:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6841,"name":"Literal","src":"6274:1:6"}],"id":6842,"name":"BinaryOperation","src":"6268:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6832,"type":"bytes memory","value":"self"},"id":6843,"name":"Identifier","src":"6279:4:6"}],"id":6844,"name":"MemberAccess","src":"6279:11:6"}],"id":6845,"name":"BinaryOperation","src":"6268:22:6"}],"id":6846,"name":"FunctionCall","src":"6260:31:6"}],"id":6847,"name":"ExpressionStatement","src":"6260:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6837,"isOffset":false,"isSlot":false,"src":"6324:3:6","valueSize":1}},{"self":{"declaration":6832,"isOffset":false,"isSlot":false,"src":"6349:4:6","valueSize":1}},{"idx":{"declaration":6834,"isOffset":false,"isSlot":false,"src":"6359:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":6848,"name":"InlineAssembly","src":"6301:86:6"}],"id":6849,"name":"Block","src":"6250:143:6"}],"id":6850,"name":"FunctionDefinition","src":"6166:227:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6870,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6851,"name":"ElementaryTypeName","src":"6632:5:6"}],"id":6852,"name":"VariableDeclaration","src":"6632:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6870,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6853,"name":"ElementaryTypeName","src":"6651:4:6"}],"id":6854,"name":"VariableDeclaration","src":"6651:8:6"}],"id":6855,"name":"ParameterList","src":"6631:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6870,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6856,"name":"ElementaryTypeName","src":"6684:7:6"}],"id":6857,"name":"VariableDeclaration","src":"6684:11:6"}],"id":6858,"name":"ParameterList","src":"6683:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6859,"name":"Identifier","src":"6707:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6854,"type":"uint256","value":"idx"},"id":6860,"name":"Identifier","src":"6715:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6861,"name":"Literal","src":"6721:2:6"}],"id":6862,"name":"BinaryOperation","src":"6715:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6852,"type":"bytes memory","value":"self"},"id":6863,"name":"Identifier","src":"6727:4:6"}],"id":6864,"name":"MemberAccess","src":"6727:11:6"}],"id":6865,"name":"BinaryOperation","src":"6715:23:6"}],"id":6866,"name":"FunctionCall","src":"6707:32:6"}],"id":6867,"name":"ExpressionStatement","src":"6707:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6857,"isOffset":false,"isSlot":false,"src":"6772:3:6","valueSize":1}},{"self":{"declaration":6852,"isOffset":false,"isSlot":false,"src":"6793:4:6","valueSize":1}},{"idx":{"declaration":6854,"isOffset":false,"isSlot":false,"src":"6804:3:6","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":6868,"name":"InlineAssembly","src":"6749:70:6"}],"id":6869,"name":"Block","src":"6697:128:6"}],"id":6870,"name":"FunctionDefinition","src":"6611:214:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6890,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6871,"name":"ElementaryTypeName","src":"7064:5:6"}],"id":6872,"name":"VariableDeclaration","src":"7064:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6890,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6873,"name":"ElementaryTypeName","src":"7083:4:6"}],"id":6874,"name":"VariableDeclaration","src":"7083:8:6"}],"id":6875,"name":"ParameterList","src":"7063:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6890,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":6876,"name":"ElementaryTypeName","src":"7116:7:6"}],"id":6877,"name":"VariableDeclaration","src":"7116:11:6"}],"id":6878,"name":"ParameterList","src":"7115:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6879,"name":"Identifier","src":"7139:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6874,"type":"uint256","value":"idx"},"id":6880,"name":"Identifier","src":"7147:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":6881,"name":"Literal","src":"7153:2:6"}],"id":6882,"name":"BinaryOperation","src":"7147:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6872,"type":"bytes memory","value":"self"},"id":6883,"name":"Identifier","src":"7159:4:6"}],"id":6884,"name":"MemberAccess","src":"7159:11:6"}],"id":6885,"name":"BinaryOperation","src":"7147:23:6"}],"id":6886,"name":"FunctionCall","src":"7139:32:6"}],"id":6887,"name":"ExpressionStatement","src":"7139:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6877,"isOffset":false,"isSlot":false,"src":"7204:3:6","valueSize":1}},{"self":{"declaration":6872,"isOffset":false,"isSlot":false,"src":"7229:4:6","valueSize":1}},{"idx":{"declaration":6874,"isOffset":false,"isSlot":false,"src":"7240:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":6888,"name":"InlineAssembly","src":"7181:143:6"}],"id":6889,"name":"Block","src":"7129:201:6"}],"id":6890,"name":"FunctionDefinition","src":"7043:287:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6918,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6891,"name":"ElementaryTypeName","src":"7606:5:6"}],"id":6892,"name":"VariableDeclaration","src":"7606:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6893,"name":"ElementaryTypeName","src":"7625:4:6"}],"id":6894,"name":"VariableDeclaration","src":"7625:8:6"},{"attributes":{"constant":false,"name":"len","scope":6918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6895,"name":"ElementaryTypeName","src":"7635:4:6"}],"id":6896,"name":"VariableDeclaration","src":"7635:8:6"}],"id":6897,"name":"ParameterList","src":"7605:39:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6918,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6898,"name":"ElementaryTypeName","src":"7668:7:6"}],"id":6899,"name":"VariableDeclaration","src":"7668:11:6"}],"id":6900,"name":"ParameterList","src":"7667:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6901,"name":"Identifier","src":"7691:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6896,"type":"uint256","value":"len"},"id":6902,"name":"Identifier","src":"7699:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6903,"name":"Literal","src":"7706:2:6"}],"id":6904,"name":"BinaryOperation","src":"7699:9:6"}],"id":6905,"name":"FunctionCall","src":"7691:18:6"}],"id":6906,"name":"ExpressionStatement","src":"7691:18:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6907,"name":"Identifier","src":"7719:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6894,"type":"uint256","value":"idx"},"id":6908,"name":"Identifier","src":"7727:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6896,"type":"uint256","value":"len"},"id":6909,"name":"Identifier","src":"7733:3:6"}],"id":6910,"name":"BinaryOperation","src":"7727:9:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"bytes memory","value":"self"},"id":6911,"name":"Identifier","src":"7740:4:6"}],"id":6912,"name":"MemberAccess","src":"7740:11:6"}],"id":6913,"name":"BinaryOperation","src":"7727:24:6"}],"id":6914,"name":"FunctionCall","src":"7719:33:6"}],"id":6915,"name":"ExpressionStatement","src":"7719:33:6"},{"attributes":{"externalReferences":[{"len":{"declaration":6896,"isOffset":false,"isSlot":false,"src":"7822:3:6","valueSize":1}},{"ret":{"declaration":6899,"isOffset":false,"isSlot":false,"src":"7845:3:6","valueSize":1}},{"self":{"declaration":6892,"isOffset":false,"isSlot":false,"src":"7870:4:6","valueSize":1}},{"idx":{"declaration":6894,"isOffset":false,"isSlot":false,"src":"7881:3:6","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":6916,"name":"InlineAssembly","src":"7762:142:6"}],"id":6917,"name":"Block","src":"7681:229:6"}],"id":6918,"name":"FunctionDefinition","src":"7586:324:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":6958,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6919,"name":"ElementaryTypeName","src":"7932:4:6"}],"id":6920,"name":"VariableDeclaration","src":"7932:9:6"},{"attributes":{"constant":false,"name":"src","scope":6958,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6921,"name":"ElementaryTypeName","src":"7943:4:6"}],"id":6922,"name":"VariableDeclaration","src":"7943:8:6"},{"attributes":{"constant":false,"name":"len","scope":6958,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6923,"name":"ElementaryTypeName","src":"7953:4:6"}],"id":6924,"name":"VariableDeclaration","src":"7953:8:6"}],"id":6925,"name":"ParameterList","src":"7931:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":6926,"name":"ParameterList","src":"7976:0:6"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"len"},"id":6927,"name":"Identifier","src":"8043:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6928,"name":"Literal","src":"8050:2:6"}],"id":6929,"name":"BinaryOperation","src":"8043:9:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"len"},"id":6930,"name":"Identifier","src":"8054:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6931,"name":"Literal","src":"8061:2:6"}],"id":6932,"name":"Assignment","src":"8054:9:6"}],"id":6933,"name":"ExpressionStatement","src":"8054:9:6"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"8125:3:6","valueSize":1}},{"dest":{"declaration":6920,"isOffset":false,"isSlot":false,"src":"8113:4:6","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":6934,"name":"InlineAssembly","src":"8079:65:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6920,"type":"uint256","value":"dest"},"id":6935,"name":"Identifier","src":"8157:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6936,"name":"Literal","src":"8165:2:6"}],"id":6937,"name":"Assignment","src":"8157:10:6"}],"id":6938,"name":"ExpressionStatement","src":"8157:10:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6922,"type":"uint256","value":"src"},"id":6939,"name":"Identifier","src":"8181:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6940,"name":"Literal","src":"8188:2:6"}],"id":6941,"name":"Assignment","src":"8181:9:6"}],"id":6942,"name":"ExpressionStatement","src":"8181:9:6"}],"id":6943,"name":"Block","src":"8065:136:6"}],"id":6944,"name":"ForStatement","src":"8036:165:6"},{"attributes":{"assignments":[6946]},"children":[{"attributes":{"constant":false,"name":"mask","scope":6957,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6945,"name":"ElementaryTypeName","src":"8243:4:6"}],"id":6946,"name":"VariableDeclaration","src":"8243:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":6947,"name":"Literal","src":"8255:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6948,"name":"Literal","src":"8263:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"len"},"id":6949,"name":"Identifier","src":"8268:3:6"}],"id":6950,"name":"BinaryOperation","src":"8263:8:6"}],"id":6951,"name":"TupleExpression","src":"8262:10:6"}],"id":6952,"name":"BinaryOperation","src":"8255:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6953,"name":"Literal","src":"8275:1:6"}],"id":6954,"name":"BinaryOperation","src":"8255:21:6"}],"id":6955,"name":"VariableDeclarationStatement","src":"8243:33:6"},{"attributes":{"externalReferences":[{"src":{"declaration":6922,"isOffset":false,"isSlot":false,"src":"8334:3:6","valueSize":1}},{"mask":{"declaration":6946,"isOffset":false,"isSlot":false,"src":"8344:4:6","valueSize":1}},{"dest":{"declaration":6920,"isOffset":false,"isSlot":false,"src":"8421:4:6","valueSize":1}},{"dest":{"declaration":6920,"isOffset":false,"isSlot":false,"src":"8389:4:6","valueSize":1}},{"mask":{"declaration":6946,"isOffset":false,"isSlot":false,"src":"8396:4:6","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":6956,"name":"InlineAssembly","src":"8286:173:6"}],"id":6957,"name":"Block","src":"7976:489:6"}],"id":6958,"name":"FunctionDefinition","src":"7916:549:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7001,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6959,"name":"ElementaryTypeName","src":"8704:5:6"}],"id":6960,"name":"VariableDeclaration","src":"8704:17:6"},{"attributes":{"constant":false,"name":"offset","scope":7001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6961,"name":"ElementaryTypeName","src":"8723:4:6"}],"id":6962,"name":"VariableDeclaration","src":"8723:11:6"},{"attributes":{"constant":false,"name":"len","scope":7001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6963,"name":"ElementaryTypeName","src":"8736:4:6"}],"id":6964,"name":"VariableDeclaration","src":"8736:8:6"}],"id":6965,"name":"ParameterList","src":"8703:42:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7001,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6966,"name":"ElementaryTypeName","src":"8768:5:6"}],"id":6967,"name":"VariableDeclaration","src":"8768:12:6"}],"id":6968,"name":"ParameterList","src":"8767:14:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":6969,"name":"Identifier","src":"8792:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6962,"type":"uint256","value":"offset"},"id":6970,"name":"Identifier","src":"8800:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6964,"type":"uint256","value":"len"},"id":6971,"name":"Identifier","src":"8809:3:6"}],"id":6972,"name":"BinaryOperation","src":"8800:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6960,"type":"bytes memory","value":"self"},"id":6973,"name":"Identifier","src":"8816:4:6"}],"id":6974,"name":"MemberAccess","src":"8816:11:6"}],"id":6975,"name":"BinaryOperation","src":"8800:27:6"}],"id":6976,"name":"FunctionCall","src":"8792:36:6"}],"id":6977,"name":"ExpressionStatement","src":"8792:36:6"},{"attributes":{"assignments":[6979]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7000,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6978,"name":"ElementaryTypeName","src":"8839:5:6"}],"id":6979,"name":"VariableDeclaration","src":"8839:16:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6980,"name":"ElementaryTypeName","src":"8862:5:6"}],"id":6981,"name":"NewExpression","src":"8858:9:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6964,"type":"uint256","value":"len"},"id":6982,"name":"Identifier","src":"8868:3:6"}],"id":6983,"name":"FunctionCall","src":"8858:14:6"}],"id":6984,"name":"VariableDeclarationStatement","src":"8839:33:6"},{"attributes":{"assignments":[6986],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":7000,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6985,"name":"ElementaryTypeName","src":"8882:4:6"}],"id":6986,"name":"VariableDeclaration","src":"8882:9:6"}],"id":6987,"name":"VariableDeclarationStatement","src":"8882:9:6"},{"attributes":{"assignments":[6989],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":7000,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6988,"name":"ElementaryTypeName","src":"8901:4:6"}],"id":6989,"name":"VariableDeclaration","src":"8901:8:6"}],"id":6990,"name":"VariableDeclarationStatement","src":"8901:8:6"},{"attributes":{"externalReferences":[{"dest":{"declaration":6986,"isOffset":false,"isSlot":false,"src":"8943:4:6","valueSize":1}},{"ret":{"declaration":6979,"isOffset":false,"isSlot":false,"src":"8955:3:6","valueSize":1}},{"src":{"declaration":6989,"isOffset":false,"isSlot":false,"src":"8976:3:6","valueSize":1}},{"self":{"declaration":6960,"isOffset":false,"isSlot":false,"src":"8991:4:6","valueSize":1}},{"offset":{"declaration":6962,"isOffset":false,"isSlot":false,"src":"9002:6:6","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":6991,"name":"InlineAssembly","src":"8920:99:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6958,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":6992,"name":"Identifier","src":"9028:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6986,"type":"uint256","value":"dest"},"id":6993,"name":"Identifier","src":"9035:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6989,"type":"uint256","value":"src"},"id":6994,"name":"Identifier","src":"9041:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6964,"type":"uint256","value":"len"},"id":6995,"name":"Identifier","src":"9046:3:6"}],"id":6996,"name":"FunctionCall","src":"9028:22:6"}],"id":6997,"name":"ExpressionStatement","src":"9028:22:6"},{"attributes":{"functionReturnParameters":6968},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6979,"type":"bytes memory","value":"ret"},"id":6998,"name":"Identifier","src":"9068:3:6"}],"id":6999,"name":"Return","src":"9061:10:6"}],"id":7000,"name":"Block","src":"8782:296:6"}],"id":7001,"name":"FunctionDefinition","src":"8685:393:6"},{"attributes":{"constant":true,"name":"base32HexTable","scope":7224,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7002,"name":"ElementaryTypeName","src":"9206:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":7003,"name":"Literal","src":"9238:147:6"}],"id":7004,"name":"VariableDeclaration","src":"9206:179:6"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":7224,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7223,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7005,"name":"ElementaryTypeName","src":"9697:5:6"}],"id":7006,"name":"VariableDeclaration","src":"9697:17:6"},{"attributes":{"constant":false,"name":"off","scope":7223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7007,"name":"ElementaryTypeName","src":"9716:4:6"}],"id":7008,"name":"VariableDeclaration","src":"9716:8:6"},{"attributes":{"constant":false,"name":"len","scope":7223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7009,"name":"ElementaryTypeName","src":"9726:4:6"}],"id":7010,"name":"VariableDeclaration","src":"9726:8:6"}],"id":7011,"name":"ParameterList","src":"9696:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7223,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7012,"name":"ElementaryTypeName","src":"9758:7:6"}],"id":7013,"name":"VariableDeclaration","src":"9758:7:6"}],"id":7014,"name":"ParameterList","src":"9757:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":7015,"name":"Identifier","src":"9777:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7016,"name":"Identifier","src":"9785:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":7017,"name":"Literal","src":"9792:2:6"}],"id":7018,"name":"BinaryOperation","src":"9785:9:6"}],"id":7019,"name":"FunctionCall","src":"9777:18:6"}],"id":7020,"name":"ExpressionStatement","src":"9777:18:6"},{"attributes":{"assignments":[7022]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7222,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7021,"name":"ElementaryTypeName","src":"9806:4:6"}],"id":7022,"name":"VariableDeclaration","src":"9806:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7023,"name":"Literal","src":"9817:1:6"}],"id":7024,"name":"VariableDeclarationStatement","src":"9806:12:6"},{"attributes":{"assignments":[7026],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":7222,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7025,"name":"ElementaryTypeName","src":"9828:5:6"}],"id":7026,"name":"VariableDeclaration","src":"9828:13:6"}],"id":7027,"name":"VariableDeclarationStatement","src":"9828:13:6"},{"children":[{"attributes":{"assignments":[7029]},"children":[{"attributes":{"constant":false,"name":"i","scope":7094,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7028,"name":"ElementaryTypeName","src":"9855:4:6"}],"id":7029,"name":"VariableDeclaration","src":"9855:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7030,"name":"Literal","src":"9864:1:6"}],"id":7031,"name":"VariableDeclarationStatement","src":"9855:10:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"uint256","value":"i"},"id":7032,"name":"Identifier","src":"9867:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7033,"name":"Identifier","src":"9871:3:6"}],"id":7034,"name":"BinaryOperation","src":"9867:7:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"uint256","value":"i"},"id":7035,"name":"Identifier","src":"9876:1:6"}],"id":7036,"name":"UnaryOperation","src":"9876:3:6"}],"id":7037,"name":"ExpressionStatement","src":"9876:3:6"},{"children":[{"attributes":{"assignments":[7039]},"children":[{"attributes":{"constant":false,"name":"char","scope":7093,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":7038,"name":"ElementaryTypeName","src":"9895:6:6"}],"id":7039,"name":"VariableDeclaration","src":"9895:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7006,"type":"bytes memory","value":"self"},"id":7040,"name":"Identifier","src":"9909:4:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7008,"type":"uint256","value":"off"},"id":7041,"name":"Identifier","src":"9914:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"uint256","value":"i"},"id":7042,"name":"Identifier","src":"9920:1:6"}],"id":7043,"name":"BinaryOperation","src":"9914:7:6"}],"id":7044,"name":"IndexAccess","src":"9909:13:6"}],"id":7045,"name":"VariableDeclarationStatement","src":"9895:27:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":7046,"name":"Identifier","src":"9936:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7039,"type":"bytes1","value":"char"},"id":7047,"name":"Identifier","src":"9944:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":7048,"name":"Literal","src":"9952:4:6"}],"id":7049,"name":"BinaryOperation","src":"9944:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7039,"type":"bytes1","value":"char"},"id":7050,"name":"Identifier","src":"9960:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":7051,"name":"Literal","src":"9968:4:6"}],"id":7052,"name":"BinaryOperation","src":"9960:12:6"}],"id":7053,"name":"BinaryOperation","src":"9944:28:6"}],"id":7054,"name":"FunctionCall","src":"9936:37:6"}],"id":7055,"name":"ExpressionStatement","src":"9936:37:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7056,"name":"Identifier","src":"9987:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7057,"name":"ElementaryTypeNameExpression","src":"9997:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7004,"type":"bytes memory","value":"base32HexTable"},"id":7058,"name":"Identifier","src":"10003:14:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7059,"name":"ElementaryTypeNameExpression","src":"10018:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7060,"name":"ElementaryTypeNameExpression","src":"10023:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7039,"type":"bytes1","value":"char"},"id":7061,"name":"Identifier","src":"10029:4:6"}],"id":7062,"name":"FunctionCall","src":"10023:11:6"}],"id":7063,"name":"FunctionCall","src":"10018:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":7064,"name":"Literal","src":"10038:4:6"}],"id":7065,"name":"BinaryOperation","src":"10018:24:6"}],"id":7066,"name":"IndexAccess","src":"10003:40:6"}],"id":7067,"name":"FunctionCall","src":"9997:47:6"}],"id":7068,"name":"Assignment","src":"9987:57:6"}],"id":7069,"name":"ExpressionStatement","src":"9987:57:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":7070,"name":"Identifier","src":"10058:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7071,"name":"Identifier","src":"10066:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":7072,"name":"Literal","src":"10077:4:6"}],"id":7073,"name":"BinaryOperation","src":"10066:15:6"}],"id":7074,"name":"FunctionCall","src":"10058:24:6"}],"id":7075,"name":"ExpressionStatement","src":"10058:24:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"uint256","value":"i"},"id":7076,"name":"Identifier","src":"10099:1:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7077,"name":"Identifier","src":"10104:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7078,"name":"Literal","src":"10110:1:6"}],"id":7079,"name":"BinaryOperation","src":"10104:7:6"}],"id":7080,"name":"BinaryOperation","src":"10099:12:6"},{"children":[{"id":7081,"name":"Break","src":"10131:5:6"}],"id":7082,"name":"Block","src":"10113:38:6"}],"id":7083,"name":"IfStatement","src":"10096:55:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7084,"name":"Identifier","src":"10164:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7085,"name":"Identifier","src":"10171:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7086,"name":"Literal","src":"10178:1:6"}],"id":7087,"name":"BinaryOperation","src":"10171:8:6"}],"id":7088,"name":"TupleExpression","src":"10170:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7089,"name":"Identifier","src":"10183:7:6"}],"id":7090,"name":"BinaryOperation","src":"10170:20:6"}],"id":7091,"name":"Assignment","src":"10164:26:6"}],"id":7092,"name":"ExpressionStatement","src":"10164:26:6"}],"id":7093,"name":"Block","src":"9881:320:6"}],"id":7094,"name":"ForStatement","src":"9851:350:6"},{"attributes":{"assignments":[7096]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":7222,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7095,"name":"ElementaryTypeName","src":"10211:4:6"}],"id":7096,"name":"VariableDeclaration","src":"10211:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7097,"name":"Identifier","src":"10225:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7098,"name":"Literal","src":"10231:1:6"}],"id":7099,"name":"BinaryOperation","src":"10225:7:6"}],"id":7100,"name":"VariableDeclarationStatement","src":"10211:21:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7101,"name":"Identifier","src":"10245:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7102,"name":"Literal","src":"10251:1:6"}],"id":7103,"name":"BinaryOperation","src":"10245:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7104,"name":"Literal","src":"10256:1:6"}],"id":7105,"name":"BinaryOperation","src":"10245:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7106,"name":"Identifier","src":"10325:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7107,"name":"Identifier","src":"10332:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7108,"name":"Literal","src":"10339:1:6"}],"id":7109,"name":"BinaryOperation","src":"10332:8:6"}],"id":7110,"name":"TupleExpression","src":"10331:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7111,"name":"Identifier","src":"10344:7:6"}],"id":7112,"name":"BinaryOperation","src":"10331:20:6"}],"id":7113,"name":"Assignment","src":"10325:26:6"}],"id":7114,"name":"ExpressionStatement","src":"10325:26:6"}],"id":7115,"name":"Block","src":"10259:103:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7116,"name":"Identifier","src":"10371:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7117,"name":"Literal","src":"10377:1:6"}],"id":7118,"name":"BinaryOperation","src":"10371:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7119,"name":"Literal","src":"10382:1:6"}],"id":7120,"name":"BinaryOperation","src":"10371:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7121,"name":"Identifier","src":"10444:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7122,"name":"Identifier","src":"10451:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7123,"name":"Literal","src":"10458:1:6"}],"id":7124,"name":"BinaryOperation","src":"10451:8:6"}],"id":7125,"name":"TupleExpression","src":"10450:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7126,"name":"Identifier","src":"10464:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7127,"name":"Literal","src":"10475:1:6"}],"id":7128,"name":"BinaryOperation","src":"10464:12:6"}],"id":7129,"name":"TupleExpression","src":"10463:14:6"}],"id":7130,"name":"BinaryOperation","src":"10450:27:6"}],"id":7131,"name":"Assignment","src":"10444:33:6"}],"id":7132,"name":"ExpressionStatement","src":"10444:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7133,"name":"Identifier","src":"10491:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7134,"name":"Literal","src":"10501:1:6"}],"id":7135,"name":"Assignment","src":"10491:11:6"}],"id":7136,"name":"ExpressionStatement","src":"10491:11:6"}],"id":7137,"name":"Block","src":"10385:128:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7138,"name":"Identifier","src":"10522:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7139,"name":"Literal","src":"10528:1:6"}],"id":7140,"name":"BinaryOperation","src":"10522:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7141,"name":"Literal","src":"10533:1:6"}],"id":7142,"name":"BinaryOperation","src":"10522:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7143,"name":"Identifier","src":"10597:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7144,"name":"Identifier","src":"10604:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7145,"name":"Literal","src":"10611:1:6"}],"id":7146,"name":"BinaryOperation","src":"10604:8:6"}],"id":7147,"name":"TupleExpression","src":"10603:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7148,"name":"Identifier","src":"10617:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7149,"name":"Literal","src":"10628:1:6"}],"id":7150,"name":"BinaryOperation","src":"10617:12:6"}],"id":7151,"name":"TupleExpression","src":"10616:14:6"}],"id":7152,"name":"BinaryOperation","src":"10603:27:6"}],"id":7153,"name":"Assignment","src":"10597:33:6"}],"id":7154,"name":"ExpressionStatement","src":"10597:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7155,"name":"Identifier","src":"10644:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7156,"name":"Literal","src":"10654:1:6"}],"id":7157,"name":"Assignment","src":"10644:11:6"}],"id":7158,"name":"ExpressionStatement","src":"10644:11:6"}],"id":7159,"name":"Block","src":"10536:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7160,"name":"Identifier","src":"10675:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7161,"name":"Literal","src":"10681:1:6"}],"id":7162,"name":"BinaryOperation","src":"10675:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7163,"name":"Literal","src":"10686:1:6"}],"id":7164,"name":"BinaryOperation","src":"10675:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7165,"name":"Identifier","src":"10750:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7166,"name":"Identifier","src":"10757:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7167,"name":"Literal","src":"10764:1:6"}],"id":7168,"name":"BinaryOperation","src":"10757:8:6"}],"id":7169,"name":"TupleExpression","src":"10756:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7170,"name":"Identifier","src":"10770:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7171,"name":"Literal","src":"10781:1:6"}],"id":7172,"name":"BinaryOperation","src":"10770:12:6"}],"id":7173,"name":"TupleExpression","src":"10769:14:6"}],"id":7174,"name":"BinaryOperation","src":"10756:27:6"}],"id":7175,"name":"Assignment","src":"10750:33:6"}],"id":7176,"name":"ExpressionStatement","src":"10750:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7177,"name":"Identifier","src":"10797:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7178,"name":"Literal","src":"10807:1:6"}],"id":7179,"name":"Assignment","src":"10797:11:6"}],"id":7180,"name":"ExpressionStatement","src":"10797:11:6"}],"id":7181,"name":"Block","src":"10689:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"uint256","value":"len"},"id":7182,"name":"Identifier","src":"10828:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7183,"name":"Literal","src":"10834:1:6"}],"id":7184,"name":"BinaryOperation","src":"10828:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":7185,"name":"Literal","src":"10839:1:6"}],"id":7186,"name":"BinaryOperation","src":"10828:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7187,"name":"Identifier","src":"10904:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7188,"name":"Identifier","src":"10911:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7189,"name":"Literal","src":"10918:1:6"}],"id":7190,"name":"BinaryOperation","src":"10911:8:6"}],"id":7191,"name":"TupleExpression","src":"10910:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7026,"type":"uint8","value":"decoded"},"id":7192,"name":"Identifier","src":"10924:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7193,"name":"Literal","src":"10935:1:6"}],"id":7194,"name":"BinaryOperation","src":"10924:12:6"}],"id":7195,"name":"TupleExpression","src":"10923:14:6"}],"id":7196,"name":"BinaryOperation","src":"10910:27:6"}],"id":7197,"name":"Assignment","src":"10904:33:6"}],"id":7198,"name":"ExpressionStatement","src":"10904:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7199,"name":"Identifier","src":"10951:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7200,"name":"Literal","src":"10961:1:6"}],"id":7201,"name":"Assignment","src":"10951:11:6"}],"id":7202,"name":"ExpressionStatement","src":"10951:11:6"}],"id":7203,"name":"Block","src":"10842:131:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[7420,7421],"referencedDeclaration":7420,"type":"function () pure","value":"revert"},"id":7204,"name":"Identifier","src":"10993:6:6"}],"id":7205,"name":"FunctionCall","src":"10993:8:6"}],"id":7206,"name":"ExpressionStatement","src":"10993:8:6"}],"id":7207,"name":"Block","src":"10979:33:6"}],"id":7208,"name":"IfStatement","src":"10825:187:6"}],"id":7209,"name":"IfStatement","src":"10672:340:6"}],"id":7210,"name":"IfStatement","src":"10519:493:6"}],"id":7211,"name":"IfStatement","src":"10368:644:6"}],"id":7212,"name":"IfStatement","src":"10242:770:6"},{"attributes":{"functionReturnParameters":7014},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7213,"name":"ElementaryTypeNameExpression","src":"11029:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7022,"type":"uint256","value":"ret"},"id":7214,"name":"Identifier","src":"11037:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7215,"name":"Literal","src":"11045:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"uint256","value":"bitlen"},"id":7216,"name":"Identifier","src":"11051:6:6"}],"id":7217,"name":"BinaryOperation","src":"11045:12:6"}],"id":7218,"name":"TupleExpression","src":"11044:14:6"}],"id":7219,"name":"BinaryOperation","src":"11037:21:6"}],"id":7220,"name":"FunctionCall","src":"11029:30:6"}],"id":7221,"name":"Return","src":"11022:37:6"}],"id":7222,"name":"Block","src":"9767:1299:6"}],"id":7223,"name":"FunctionDefinition","src":"9668:1398:6"}],"id":7224,"name":"ContractDefinition","src":"26:11042:6"}],"id":7225,"name":"SourceUnit","src":"0:11069:6"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[729]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":557,"name":"PragmaDirective","src":"1401:23:7"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":558,"name":"PragmaDirective","src":"1425:33:7"},{"attributes":{"SourceUnit":556,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":559,"name":"ImportDirective","src":"1460:19:7"},{"attributes":{"SourceUnit":1854,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":560,"name":"ImportDirective","src":"1480:36:7"},{"attributes":{"SourceUnit":2013,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":561,"name":"ImportDirective","src":"1517:37:7"},{"attributes":{"SourceUnit":2083,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":562,"name":"ImportDirective","src":"1555:44:7"},{"attributes":{"SourceUnit":2574,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":563,"name":"ImportDirective","src":"1600:36:7"},{"attributes":{"SourceUnit":2761,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":564,"name":"ImportDirective","src":"1637:42:7"},{"attributes":{"SourceUnit":2831,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":565,"name":"ImportDirective","src":"1680:37:7"},{"attributes":{"SourceUnit":2922,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":566,"name":"ImportDirective","src":"1718:39:7"},{"attributes":{"SourceUnit":3005,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":730,"symbolAliases":[null],"unitAlias":""},"id":567,"name":"ImportDirective","src":"1758:37:7"},{"attributes":{"contractDependencies":[1853,2012,2082,2573,2760,2830,2921,3004,5159],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[729,3004,2921,2830,2760,2573,2082,2012,1853,5159],"name":"PublicResolver","scope":730},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":1853,"type":"contract ABIResolver"},"id":568,"name":"UserDefinedTypeName","src":"1924:11:7"}],"id":569,"name":"InheritanceSpecifier","src":"1924:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":2012,"type":"contract AddrResolver"},"id":570,"name":"UserDefinedTypeName","src":"1937:12:7"}],"id":571,"name":"InheritanceSpecifier","src":"1937:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":2082,"type":"contract ContentHashResolver"},"id":572,"name":"UserDefinedTypeName","src":"1951:19:7"}],"id":573,"name":"InheritanceSpecifier","src":"1951:19:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":2573,"type":"contract DNSResolver"},"id":574,"name":"UserDefinedTypeName","src":"1972:11:7"}],"id":575,"name":"InheritanceSpecifier","src":"1972:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":2760,"type":"contract InterfaceResolver"},"id":576,"name":"UserDefinedTypeName","src":"1985:17:7"}],"id":577,"name":"InheritanceSpecifier","src":"1985:17:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":2830,"type":"contract NameResolver"},"id":578,"name":"UserDefinedTypeName","src":"2004:12:7"}],"id":579,"name":"InheritanceSpecifier","src":"2004:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":2921,"type":"contract PubkeyResolver"},"id":580,"name":"UserDefinedTypeName","src":"2018:14:7"}],"id":581,"name":"InheritanceSpecifier","src":"2018:14:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":3004,"type":"contract TextResolver"},"id":582,"name":"UserDefinedTypeName","src":"2034:12:7"}],"id":583,"name":"InheritanceSpecifier","src":"2034:12:7"},{"attributes":{"constant":false,"name":"ens","scope":729,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":555,"type":"contract ENS"},"id":584,"name":"UserDefinedTypeName","src":"2053:3:7"}],"id":585,"name":"VariableDeclaration","src":"2053:7:7"},{"attributes":{"constant":false,"name":"authorisations","scope":729,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":586,"name":"ElementaryTypeName","src":"2328:7:7"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":587,"name":"ElementaryTypeName","src":"2345:7:7"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":588,"name":"ElementaryTypeName","src":"2362:7:7"},{"attributes":{"name":"bool","type":"bool"},"id":589,"name":"ElementaryTypeName","src":"2371:4:7"}],"id":590,"name":"Mapping","src":"2354:22:7"}],"id":591,"name":"Mapping","src":"2337:40:7"}],"id":592,"name":"Mapping","src":"2320:58:7"}],"id":593,"name":"VariableDeclaration","src":"2320:80:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":603,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":594,"name":"ElementaryTypeName","src":"2434:7:7"}],"id":595,"name":"VariableDeclaration","src":"2434:20:7"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":603,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":596,"name":"ElementaryTypeName","src":"2456:7:7"}],"id":597,"name":"VariableDeclaration","src":"2456:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":603,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":598,"name":"ElementaryTypeName","src":"2479:7:7"}],"id":599,"name":"VariableDeclaration","src":"2479:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":603,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":600,"name":"ElementaryTypeName","src":"2503:4:7"}],"id":601,"name":"VariableDeclaration","src":"2503:17:7"}],"id":602,"name":"ParameterList","src":"2433:88:7"}],"id":603,"name":"EventDefinition","src":"2407:115:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":729,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":613,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":555,"type":"contract ENS"},"id":604,"name":"UserDefinedTypeName","src":"2540:3:7"}],"id":605,"name":"VariableDeclaration","src":"2540:8:7"}],"id":606,"name":"ParameterList","src":"2539:10:7"},{"attributes":{"parameters":[null]},"children":[],"id":607,"name":"ParameterList","src":"2557:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":585,"type":"contract ENS","value":"ens"},"id":608,"name":"Identifier","src":"2567:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"contract ENS","value":"_ens"},"id":609,"name":"Identifier","src":"2573:4:7"}],"id":610,"name":"Assignment","src":"2567:10:7"}],"id":611,"name":"ExpressionStatement","src":"2567:10:7"}],"id":612,"name":"Block","src":"2557:27:7"}],"id":613,"name":"FunctionDefinition","src":"2528:56:7"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":729,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":642,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":614,"name":"ElementaryTypeName","src":"3295:7:7"}],"id":615,"name":"VariableDeclaration","src":"3295:12:7"},{"attributes":{"constant":false,"name":"target","scope":642,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":616,"name":"ElementaryTypeName","src":"3309:7:7"}],"id":617,"name":"VariableDeclaration","src":"3309:14:7"},{"attributes":{"constant":false,"name":"isAuthorised","scope":642,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":618,"name":"ElementaryTypeName","src":"3325:4:7"}],"id":619,"name":"VariableDeclaration","src":"3325:17:7"}],"id":620,"name":"ParameterList","src":"3294:49:7"},{"attributes":{"parameters":[null]},"children":[],"id":621,"name":"ParameterList","src":"3353:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":593,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":622,"name":"Identifier","src":"3363:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":615,"type":"bytes32","value":"node"},"id":623,"name":"Identifier","src":"3378:4:7"}],"id":627,"name":"IndexAccess","src":"3363:20:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":624,"name":"Identifier","src":"3384:3:7"}],"id":625,"name":"MemberAccess","src":"3384:10:7"}],"id":628,"name":"IndexAccess","src":"3363:32:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":617,"type":"address","value":"target"},"id":626,"name":"Identifier","src":"3396:6:7"}],"id":629,"name":"IndexAccess","src":"3363:40:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":619,"type":"bool","value":"isAuthorised"},"id":630,"name":"Identifier","src":"3406:12:7"}],"id":631,"name":"Assignment","src":"3363:55:7"}],"id":632,"name":"ExpressionStatement","src":"3363:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":603,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":633,"name":"Identifier","src":"3433:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":615,"type":"bytes32","value":"node"},"id":634,"name":"Identifier","src":"3454:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":635,"name":"Identifier","src":"3460:3:7"}],"id":636,"name":"MemberAccess","src":"3460:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":617,"type":"address","value":"target"},"id":637,"name":"Identifier","src":"3472:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":619,"type":"bool","value":"isAuthorised"},"id":638,"name":"Identifier","src":"3480:12:7"}],"id":639,"name":"FunctionCall","src":"3433:60:7"}],"id":640,"name":"EmitStatement","src":"3428:65:7"}],"id":641,"name":"Block","src":"3353:147:7"}],"id":642,"name":"FunctionDefinition","src":"3269:231:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":729,"stateMutability":"view","superFunction":5114,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":671,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":643,"name":"ElementaryTypeName","src":"3528:7:7"}],"id":644,"name":"VariableDeclaration","src":"3528:12:7"}],"id":645,"name":"ParameterList","src":"3527:14:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":671,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":646,"name":"ElementaryTypeName","src":"3564:4:7"}],"id":647,"name":"VariableDeclaration","src":"3564:4:7"}],"id":648,"name":"ParameterList","src":"3563:6:7"},{"children":[{"attributes":{"assignments":[650]},"children":[{"attributes":{"constant":false,"name":"owner","scope":670,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":649,"name":"ElementaryTypeName","src":"3580:7:7"}],"id":650,"name":"VariableDeclaration","src":"3580:13:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":524,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":585,"type":"contract ENS","value":"ens"},"id":651,"name":"Identifier","src":"3596:3:7"}],"id":652,"name":"MemberAccess","src":"3596:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"bytes32","value":"node"},"id":653,"name":"Identifier","src":"3606:4:7"}],"id":654,"name":"FunctionCall","src":"3596:15:7"}],"id":655,"name":"VariableDeclarationStatement","src":"3580:31:7"},{"attributes":{"functionReturnParameters":648},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"owner"},"id":656,"name":"Identifier","src":"3628:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":657,"name":"Identifier","src":"3637:3:7"}],"id":658,"name":"MemberAccess","src":"3637:10:7"}],"id":659,"name":"BinaryOperation","src":"3628:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":593,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":660,"name":"Identifier","src":"3651:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":644,"type":"bytes32","value":"node"},"id":661,"name":"Identifier","src":"3666:4:7"}],"id":662,"name":"IndexAccess","src":"3651:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"owner"},"id":663,"name":"Identifier","src":"3672:5:7"}],"id":664,"name":"IndexAccess","src":"3651:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":665,"name":"Identifier","src":"3679:3:7"}],"id":666,"name":"MemberAccess","src":"3679:10:7"}],"id":667,"name":"IndexAccess","src":"3651:39:7"}],"id":668,"name":"BinaryOperation","src":"3628:62:7"}],"id":669,"name":"Return","src":"3621:69:7"}],"id":670,"name":"Block","src":"3570:127:7"}],"id":671,"name":"FunctionDefinition","src":"3506:191:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":729,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":728,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":672,"name":"ElementaryTypeName","src":"3722:5:7"}],"id":673,"name":"ArrayTypeName","src":"3722:7:7"}],"id":674,"name":"VariableDeclaration","src":"3722:21:7"}],"id":675,"name":"ParameterList","src":"3721:23:7"},{"children":[{"attributes":{"constant":false,"name":"results","scope":728,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":676,"name":"ElementaryTypeName","src":"3762:5:7"}],"id":677,"name":"ArrayTypeName","src":"3762:7:7"}],"id":678,"name":"VariableDeclaration","src":"3762:22:7"}],"id":679,"name":"ParameterList","src":"3761:24:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":678,"type":"bytes memory[] memory","value":"results"},"id":680,"name":"Identifier","src":"3796:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":681,"name":"ElementaryTypeName","src":"3810:5:7"}],"id":682,"name":"ArrayTypeName","src":"3810:7:7"}],"id":683,"name":"NewExpression","src":"3806:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":674,"type":"bytes calldata[] calldata","value":"data"},"id":684,"name":"Identifier","src":"3818:4:7"}],"id":685,"name":"MemberAccess","src":"3818:11:7"}],"id":686,"name":"FunctionCall","src":"3806:24:7"}],"id":687,"name":"Assignment","src":"3796:34:7"}],"id":688,"name":"ExpressionStatement","src":"3796:34:7"},{"children":[{"attributes":{"assignments":[690]},"children":[{"attributes":{"constant":false,"name":"i","scope":724,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":689,"name":"ElementaryTypeName","src":"3844:4:7"}],"id":690,"name":"VariableDeclaration","src":"3844:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":691,"name":"Literal","src":"3853:1:7"}],"id":692,"name":"VariableDeclarationStatement","src":"3844:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"uint256","value":"i"},"id":693,"name":"Identifier","src":"3856:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":674,"type":"bytes calldata[] calldata","value":"data"},"id":694,"name":"Identifier","src":"3860:4:7"}],"id":695,"name":"MemberAccess","src":"3860:11:7"}],"id":696,"name":"BinaryOperation","src":"3856:15:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"uint256","value":"i"},"id":697,"name":"Identifier","src":"3873:1:7"}],"id":698,"name":"UnaryOperation","src":"3873:3:7"}],"id":699,"name":"ExpressionStatement","src":"3873:3:7"},{"children":[{"attributes":{"assignments":[701,703]},"children":[{"attributes":{"constant":false,"name":"success","scope":723,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":700,"name":"ElementaryTypeName","src":"3893:4:7"}],"id":701,"name":"VariableDeclaration","src":"3893:12:7"},{"attributes":{"constant":false,"name":"result","scope":723,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":702,"name":"ElementaryTypeName","src":"3907:5:7"}],"id":703,"name":"VariableDeclaration","src":"3907:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$729","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":704,"name":"ElementaryTypeNameExpression","src":"3930:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7469,"type":"contract PublicResolver","value":"this"},"id":705,"name":"Identifier","src":"3938:4:7"}],"id":706,"name":"FunctionCall","src":"3930:13:7"}],"id":707,"name":"MemberAccess","src":"3930:26:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":674,"type":"bytes calldata[] calldata","value":"data"},"id":708,"name":"Identifier","src":"3957:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"uint256","value":"i"},"id":709,"name":"Identifier","src":"3962:1:7"}],"id":710,"name":"IndexAccess","src":"3957:7:7"}],"id":711,"name":"FunctionCall","src":"3930:35:7"}],"id":712,"name":"VariableDeclarationStatement","src":"3892:73:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":713,"name":"Identifier","src":"3979:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":701,"type":"bool","value":"success"},"id":714,"name":"Identifier","src":"3987:7:7"}],"id":715,"name":"FunctionCall","src":"3979:16:7"}],"id":716,"name":"ExpressionStatement","src":"3979:16:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":678,"type":"bytes memory[] memory","value":"results"},"id":717,"name":"Identifier","src":"4009:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"uint256","value":"i"},"id":718,"name":"Identifier","src":"4017:1:7"}],"id":719,"name":"IndexAccess","src":"4009:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":703,"type":"bytes memory","value":"result"},"id":720,"name":"Identifier","src":"4022:6:7"}],"id":721,"name":"Assignment","src":"4009:19:7"}],"id":722,"name":"ExpressionStatement","src":"4009:19:7"}],"id":723,"name":"Block","src":"3878:161:7"}],"id":724,"name":"ForStatement","src":"3840:199:7"},{"attributes":{"functionReturnParameters":679},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":678,"type":"bytes memory[] memory","value":"results"},"id":725,"name":"Identifier","src":"4055:7:7"}],"id":726,"name":"Return","src":"4048:14:7"}],"id":727,"name":"Block","src":"3786:283:7"}],"id":728,"name":"FunctionDefinition","src":"3703:366:7"}],"id":729,"name":"ContractDefinition","src":"1897:2174:7"}],"id":730,"name":"SourceUnit","src":"1401:2671:7"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[5777]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":5161,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"SourceUnit":7225,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":5778,"symbolAliases":[null],"unitAlias":""},"id":5162,"name":"ImportDirective","src":"26:29:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[5777],"name":"RRUtils","scope":5778},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7224,"type":"library ENSBytesUtils"},"id":5163,"name":"UserDefinedTypeName","src":"178:13:8"}],"id":5164,"name":"UsingForDirective","src":"172:26:8"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5211,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5165,"name":"ElementaryTypeName","src":"487:5:8"}],"id":5166,"name":"VariableDeclaration","src":"487:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5167,"name":"ElementaryTypeName","src":"506:4:8"}],"id":5168,"name":"VariableDeclaration","src":"506:11:8"}],"id":5169,"name":"ParameterList","src":"486:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5170,"name":"ElementaryTypeName","src":"541:4:8"}],"id":5171,"name":"VariableDeclaration","src":"541:4:8"}],"id":5172,"name":"ParameterList","src":"540:6:8"},{"children":[{"attributes":{"assignments":[5174]},"children":[{"attributes":{"constant":false,"name":"idx","scope":5210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5173,"name":"ElementaryTypeName","src":"557:4:8"}],"id":5174,"name":"VariableDeclaration","src":"557:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"uint256","value":"offset"},"id":5175,"name":"Identifier","src":"568:6:8"}],"id":5176,"name":"VariableDeclarationStatement","src":"557:17:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5177,"name":"Literal","src":"591:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7404,"type":"function (bool) pure","value":"assert"},"id":5178,"name":"Identifier","src":"611:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"uint256","value":"idx"},"id":5179,"name":"Identifier","src":"618:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5166,"type":"bytes memory","value":"self"},"id":5180,"name":"Identifier","src":"624:4:8"}],"id":5181,"name":"MemberAccess","src":"624:11:8"}],"id":5182,"name":"BinaryOperation","src":"618:17:8"}],"id":5183,"name":"FunctionCall","src":"611:25:8"}],"id":5184,"name":"ExpressionStatement","src":"611:25:8"},{"attributes":{"assignments":[5186]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":5204,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5185,"name":"ElementaryTypeName","src":"650:4:8"}],"id":5186,"name":"VariableDeclaration","src":"650:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5166,"type":"bytes memory","value":"self"},"id":5187,"name":"Identifier","src":"666:4:8"}],"id":5188,"name":"MemberAccess","src":"666:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"uint256","value":"idx"},"id":5189,"name":"Identifier","src":"681:3:8"}],"id":5190,"name":"FunctionCall","src":"666:19:8"}],"id":5191,"name":"VariableDeclarationStatement","src":"650:35:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"uint256","value":"idx"},"id":5192,"name":"Identifier","src":"699:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"uint256","value":"labelLen"},"id":5193,"name":"Identifier","src":"706:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5194,"name":"Literal","src":"717:1:8"}],"id":5195,"name":"BinaryOperation","src":"706:12:8"}],"id":5196,"name":"Assignment","src":"699:19:8"}],"id":5197,"name":"ExpressionStatement","src":"699:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"uint256","value":"labelLen"},"id":5198,"name":"Identifier","src":"736:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5199,"name":"Literal","src":"748:1:8"}],"id":5200,"name":"BinaryOperation","src":"736:13:8"},{"children":[{"id":5201,"name":"Break","src":"769:5:8"}],"id":5202,"name":"Block","src":"751:38:8"}],"id":5203,"name":"IfStatement","src":"732:57:8"}],"id":5204,"name":"Block","src":"597:202:8"}],"id":5205,"name":"WhileStatement","src":"584:215:8"},{"attributes":{"functionReturnParameters":5172},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"uint256","value":"idx"},"id":5206,"name":"Identifier","src":"815:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"uint256","value":"offset"},"id":5207,"name":"Identifier","src":"821:6:8"}],"id":5208,"name":"BinaryOperation","src":"815:12:8"}],"id":5209,"name":"Return","src":"808:19:8"}],"id":5210,"name":"Block","src":"547:287:8"}],"id":5211,"name":"FunctionDefinition","src":"467:367:8"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5234,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5212,"name":"ElementaryTypeName","src":"1073:5:8"}],"id":5213,"name":"VariableDeclaration","src":"1073:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5214,"name":"ElementaryTypeName","src":"1092:4:8"}],"id":5215,"name":"VariableDeclaration","src":"1092:11:8"}],"id":5216,"name":"ParameterList","src":"1072:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":5234,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5217,"name":"ElementaryTypeName","src":"1127:5:8"}],"id":5218,"name":"VariableDeclaration","src":"1127:16:8"}],"id":5219,"name":"ParameterList","src":"1126:18:8"},{"children":[{"attributes":{"assignments":[5221]},"children":[{"attributes":{"constant":false,"name":"len","scope":5233,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5220,"name":"ElementaryTypeName","src":"1155:4:8"}],"id":5221,"name":"VariableDeclaration","src":"1155:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5211,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5222,"name":"Identifier","src":"1166:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5213,"type":"bytes memory","value":"self"},"id":5223,"name":"Identifier","src":"1177:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5215,"type":"uint256","value":"offset"},"id":5224,"name":"Identifier","src":"1183:6:8"}],"id":5225,"name":"FunctionCall","src":"1166:24:8"}],"id":5226,"name":"VariableDeclarationStatement","src":"1155:35:8"},{"attributes":{"functionReturnParameters":5219},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7001,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5213,"type":"bytes memory","value":"self"},"id":5227,"name":"Identifier","src":"1207:4:8"}],"id":5228,"name":"MemberAccess","src":"1207:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5215,"type":"uint256","value":"offset"},"id":5229,"name":"Identifier","src":"1222:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5221,"type":"uint256","value":"len"},"id":5230,"name":"Identifier","src":"1230:3:8"}],"id":5231,"name":"FunctionCall","src":"1207:27:8"}],"id":5232,"name":"Return","src":"1200:34:8"}],"id":5233,"name":"Block","src":"1145:96:8"}],"id":5234,"name":"FunctionDefinition","src":"1055:186:8"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5283,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5235,"name":"ElementaryTypeName","src":"1541:5:8"}],"id":5236,"name":"VariableDeclaration","src":"1541:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5237,"name":"ElementaryTypeName","src":"1560:4:8"}],"id":5238,"name":"VariableDeclaration","src":"1560:11:8"}],"id":5239,"name":"ParameterList","src":"1540:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5240,"name":"ElementaryTypeName","src":"1595:4:8"}],"id":5241,"name":"VariableDeclaration","src":"1595:4:8"}],"id":5242,"name":"ParameterList","src":"1594:6:8"},{"children":[{"attributes":{"assignments":[5244]},"children":[{"attributes":{"constant":false,"name":"count","scope":5282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5243,"name":"ElementaryTypeName","src":"1611:4:8"}],"id":5244,"name":"VariableDeclaration","src":"1611:10:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5245,"name":"Literal","src":"1624:1:8"}],"id":5246,"name":"VariableDeclarationStatement","src":"1611:14:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5247,"name":"Literal","src":"1642:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7404,"type":"function (bool) pure","value":"assert"},"id":5248,"name":"Identifier","src":"1662:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"uint256","value":"offset"},"id":5249,"name":"Identifier","src":"1669:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"bytes memory","value":"self"},"id":5250,"name":"Identifier","src":"1678:4:8"}],"id":5251,"name":"MemberAccess","src":"1678:11:8"}],"id":5252,"name":"BinaryOperation","src":"1669:20:8"}],"id":5253,"name":"FunctionCall","src":"1662:28:8"}],"id":5254,"name":"ExpressionStatement","src":"1662:28:8"},{"attributes":{"assignments":[5256]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":5278,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5255,"name":"ElementaryTypeName","src":"1704:4:8"}],"id":5256,"name":"VariableDeclaration","src":"1704:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"bytes memory","value":"self"},"id":5257,"name":"Identifier","src":"1720:4:8"}],"id":5258,"name":"MemberAccess","src":"1720:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"uint256","value":"offset"},"id":5259,"name":"Identifier","src":"1735:6:8"}],"id":5260,"name":"FunctionCall","src":"1720:22:8"}],"id":5261,"name":"VariableDeclarationStatement","src":"1704:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"uint256","value":"offset"},"id":5262,"name":"Identifier","src":"1756:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5256,"type":"uint256","value":"labelLen"},"id":5263,"name":"Identifier","src":"1766:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5264,"name":"Literal","src":"1777:1:8"}],"id":5265,"name":"BinaryOperation","src":"1766:12:8"}],"id":5266,"name":"Assignment","src":"1756:22:8"}],"id":5267,"name":"ExpressionStatement","src":"1756:22:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5256,"type":"uint256","value":"labelLen"},"id":5268,"name":"Identifier","src":"1796:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5269,"name":"Literal","src":"1808:1:8"}],"id":5270,"name":"BinaryOperation","src":"1796:13:8"},{"children":[{"id":5271,"name":"Break","src":"1829:5:8"}],"id":5272,"name":"Block","src":"1811:38:8"}],"id":5273,"name":"IfStatement","src":"1792:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5244,"type":"uint256","value":"count"},"id":5274,"name":"Identifier","src":"1862:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5275,"name":"Literal","src":"1871:1:8"}],"id":5276,"name":"Assignment","src":"1862:10:8"}],"id":5277,"name":"ExpressionStatement","src":"1862:10:8"}],"id":5278,"name":"Block","src":"1648:235:8"}],"id":5279,"name":"WhileStatement","src":"1635:248:8"},{"attributes":{"functionReturnParameters":5242},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5244,"type":"uint256","value":"count"},"id":5280,"name":"Identifier","src":"1899:5:8"}],"id":5281,"name":"Return","src":"1892:12:8"}],"id":5282,"name":"Block","src":"1601:310:8"}],"id":5283,"name":"FunctionDefinition","src":"1521:390:8"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":5777,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":5298,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5284,"name":"ElementaryTypeName","src":"2006:5:8"}],"id":5285,"name":"VariableDeclaration","src":"2006:10:8"},{"attributes":{"constant":false,"name":"offset","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5286,"name":"ElementaryTypeName","src":"2026:4:8"}],"id":5287,"name":"VariableDeclaration","src":"2026:11:8"},{"attributes":{"constant":false,"name":"dnstype","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5288,"name":"ElementaryTypeName","src":"2047:6:8"}],"id":5289,"name":"VariableDeclaration","src":"2047:14:8"},{"attributes":{"constant":false,"name":"class","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5290,"name":"ElementaryTypeName","src":"2071:6:8"}],"id":5291,"name":"VariableDeclaration","src":"2071:12:8"},{"attributes":{"constant":false,"name":"ttl","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":5292,"name":"ElementaryTypeName","src":"2093:6:8"}],"id":5293,"name":"VariableDeclaration","src":"2093:10:8"},{"attributes":{"constant":false,"name":"rdataOffset","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5294,"name":"ElementaryTypeName","src":"2113:4:8"}],"id":5295,"name":"VariableDeclaration","src":"2113:16:8"},{"attributes":{"constant":false,"name":"nextOffset","scope":5298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5296,"name":"ElementaryTypeName","src":"2139:4:8"}],"id":5297,"name":"VariableDeclaration","src":"2139:15:8"}],"id":5298,"name":"StructDefinition","src":"1978:183:8"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5324,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5299,"name":"ElementaryTypeName","src":"2387:5:8"}],"id":5300,"name":"VariableDeclaration","src":"2387:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5324,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5301,"name":"ElementaryTypeName","src":"2406:4:8"}],"id":5302,"name":"VariableDeclaration","src":"2406:11:8"}],"id":5303,"name":"ParameterList","src":"2386:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":5324,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5304,"name":"UserDefinedTypeName","src":"2442:10:8"}],"id":5305,"name":"VariableDeclaration","src":"2442:21:8"}],"id":5306,"name":"ParameterList","src":"2441:23:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5307,"name":"Identifier","src":"2475:3:8"}],"id":5309,"name":"MemberAccess","src":"2475:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5300,"type":"bytes memory","value":"self"},"id":5310,"name":"Identifier","src":"2486:4:8"}],"id":5311,"name":"Assignment","src":"2475:15:8"}],"id":5312,"name":"ExpressionStatement","src":"2475:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":5297,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5313,"name":"Identifier","src":"2500:3:8"}],"id":5315,"name":"MemberAccess","src":"2500:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5302,"type":"uint256","value":"offset"},"id":5316,"name":"Identifier","src":"2517:6:8"}],"id":5317,"name":"Assignment","src":"2500:23:8"}],"id":5318,"name":"ExpressionStatement","src":"2500:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$5298_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5441,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":5319,"name":"Identifier","src":"2533:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5320,"name":"Identifier","src":"2538:3:8"}],"id":5321,"name":"FunctionCall","src":"2533:9:8"}],"id":5322,"name":"ExpressionStatement","src":"2533:9:8"}],"id":5323,"name":"Block","src":"2465:84:8"}],"id":5324,"name":"FunctionDefinition","src":"2367:182:8"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5339,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5325,"name":"UserDefinedTypeName","src":"2734:10:8"}],"id":5326,"name":"VariableDeclaration","src":"2734:22:8"}],"id":5327,"name":"ParameterList","src":"2733:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5339,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5328,"name":"ElementaryTypeName","src":"2780:4:8"}],"id":5329,"name":"VariableDeclaration","src":"2780:4:8"}],"id":5330,"name":"ParameterList","src":"2779:6:8"},{"children":[{"attributes":{"functionReturnParameters":5330},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5326,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5331,"name":"Identifier","src":"2803:4:8"}],"id":5332,"name":"MemberAccess","src":"2803:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5326,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5333,"name":"Identifier","src":"2818:4:8"}],"id":5334,"name":"MemberAccess","src":"2818:9:8"}],"id":5335,"name":"MemberAccess","src":"2818:16:8"}],"id":5336,"name":"BinaryOperation","src":"2803:31:8"}],"id":5337,"name":"Return","src":"2796:38:8"}],"id":5338,"name":"Block","src":"2786:55:8"}],"id":5339,"name":"FunctionDefinition","src":"2720:121:8"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5441,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5340,"name":"UserDefinedTypeName","src":"2978:10:8"}],"id":5341,"name":"VariableDeclaration","src":"2978:22:8"}],"id":5342,"name":"ParameterList","src":"2977:24:8"},{"attributes":{"parameters":[null]},"children":[],"id":5343,"name":"ParameterList","src":"3016:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5344,"name":"Identifier","src":"3026:4:8"}],"id":5346,"name":"MemberAccess","src":"3026:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":5297,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5347,"name":"Identifier","src":"3040:4:8"}],"id":5348,"name":"MemberAccess","src":"3040:15:8"}],"id":5349,"name":"Assignment","src":"3026:29:8"}],"id":5350,"name":"ExpressionStatement","src":"3026:29:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5351,"name":"Identifier","src":"3069:4:8"}],"id":5352,"name":"MemberAccess","src":"3069:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5353,"name":"Identifier","src":"3084:4:8"}],"id":5354,"name":"MemberAccess","src":"3084:9:8"}],"id":5355,"name":"MemberAccess","src":"3084:16:8"}],"id":5356,"name":"BinaryOperation","src":"3069:31:8"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":5343},"id":5357,"name":"Return","src":"3116:7:8"}],"id":5358,"name":"Block","src":"3102:31:8"}],"id":5359,"name":"IfStatement","src":"3065:68:8"},{"attributes":{"assignments":[5361]},"children":[{"attributes":{"constant":false,"name":"off","scope":5440,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5360,"name":"ElementaryTypeName","src":"3168:4:8"}],"id":5361,"name":"VariableDeclaration","src":"3168:8:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5362,"name":"Identifier","src":"3179:4:8"}],"id":5363,"name":"MemberAccess","src":"3179:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5211,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5364,"name":"Identifier","src":"3193:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5365,"name":"Identifier","src":"3204:4:8"}],"id":5366,"name":"MemberAccess","src":"3204:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5367,"name":"Identifier","src":"3215:4:8"}],"id":5368,"name":"MemberAccess","src":"3215:11:8"}],"id":5369,"name":"FunctionCall","src":"3193:34:8"}],"id":5370,"name":"BinaryOperation","src":"3179:48:8"}],"id":5371,"name":"VariableDeclarationStatement","src":"3168:59:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":5289,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5372,"name":"Identifier","src":"3275:4:8"}],"id":5374,"name":"MemberAccess","src":"3275:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6830,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5375,"name":"Identifier","src":"3290:4:8"}],"id":5376,"name":"MemberAccess","src":"3290:9:8"}],"id":5377,"name":"MemberAccess","src":"3290:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5378,"name":"Identifier","src":"3311:3:8"}],"id":5379,"name":"FunctionCall","src":"3290:25:8"}],"id":5380,"name":"Assignment","src":"3275:40:8"}],"id":5381,"name":"ExpressionStatement","src":"3275:40:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5382,"name":"Identifier","src":"3325:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5383,"name":"Literal","src":"3332:1:8"}],"id":5384,"name":"Assignment","src":"3325:8:8"}],"id":5385,"name":"ExpressionStatement","src":"3325:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":5291,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5386,"name":"Identifier","src":"3343:4:8"}],"id":5388,"name":"MemberAccess","src":"3343:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6830,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5389,"name":"Identifier","src":"3356:4:8"}],"id":5390,"name":"MemberAccess","src":"3356:9:8"}],"id":5391,"name":"MemberAccess","src":"3356:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5392,"name":"Identifier","src":"3377:3:8"}],"id":5393,"name":"FunctionCall","src":"3356:25:8"}],"id":5394,"name":"Assignment","src":"3343:38:8"}],"id":5395,"name":"ExpressionStatement","src":"3343:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5396,"name":"Identifier","src":"3391:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5397,"name":"Literal","src":"3398:1:8"}],"id":5398,"name":"Assignment","src":"3391:8:8"}],"id":5399,"name":"ExpressionStatement","src":"3391:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":5293,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5400,"name":"Identifier","src":"3409:4:8"}],"id":5402,"name":"MemberAccess","src":"3409:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":6850,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5403,"name":"Identifier","src":"3420:4:8"}],"id":5404,"name":"MemberAccess","src":"3420:9:8"}],"id":5405,"name":"MemberAccess","src":"3420:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5406,"name":"Identifier","src":"3441:3:8"}],"id":5407,"name":"FunctionCall","src":"3420:25:8"}],"id":5408,"name":"Assignment","src":"3409:36:8"}],"id":5409,"name":"ExpressionStatement","src":"3409:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5410,"name":"Identifier","src":"3455:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5411,"name":"Literal","src":"3462:1:8"}],"id":5412,"name":"Assignment","src":"3455:8:8"}],"id":5413,"name":"ExpressionStatement","src":"3455:8:8"},{"attributes":{"assignments":[5415]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":5440,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5414,"name":"ElementaryTypeName","src":"3500:4:8"}],"id":5415,"name":"VariableDeclaration","src":"3500:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6830,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5416,"name":"Identifier","src":"3519:4:8"}],"id":5417,"name":"MemberAccess","src":"3519:9:8"}],"id":5418,"name":"MemberAccess","src":"3519:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5419,"name":"Identifier","src":"3540:3:8"}],"id":5420,"name":"FunctionCall","src":"3519:25:8"}],"id":5421,"name":"VariableDeclarationStatement","src":"3500:44:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5422,"name":"Identifier","src":"3554:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5423,"name":"Literal","src":"3561:1:8"}],"id":5424,"name":"Assignment","src":"3554:8:8"}],"id":5425,"name":"ExpressionStatement","src":"3554:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":5295,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5426,"name":"Identifier","src":"3572:4:8"}],"id":5428,"name":"MemberAccess","src":"3572:16:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5429,"name":"Identifier","src":"3591:3:8"}],"id":5430,"name":"Assignment","src":"3572:22:8"}],"id":5431,"name":"ExpressionStatement","src":"3572:22:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":5297,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5341,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5432,"name":"Identifier","src":"3604:4:8"}],"id":5434,"name":"MemberAccess","src":"3604:15:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5361,"type":"uint256","value":"off"},"id":5435,"name":"Identifier","src":"3622:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5415,"type":"uint256","value":"rdataLength"},"id":5436,"name":"Identifier","src":"3628:11:8"}],"id":5437,"name":"BinaryOperation","src":"3622:17:8"}],"id":5438,"name":"Assignment","src":"3604:35:8"}],"id":5439,"name":"ExpressionStatement","src":"3604:35:8"}],"id":5440,"name":"Block","src":"3016:630:8"}],"id":5441,"name":"FunctionDefinition","src":"2964:682:8"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5462,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5442,"name":"UserDefinedTypeName","src":"3836:10:8"}],"id":5443,"name":"VariableDeclaration","src":"3836:22:8"}],"id":5444,"name":"ParameterList","src":"3835:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5462,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5445,"name":"ElementaryTypeName","src":"3882:5:8"}],"id":5446,"name":"VariableDeclaration","src":"3882:12:8"}],"id":5447,"name":"ParameterList","src":"3881:14:8"},{"children":[{"attributes":{"functionReturnParameters":5447},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7001,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5443,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5448,"name":"Identifier","src":"3913:4:8"}],"id":5449,"name":"MemberAccess","src":"3913:9:8"}],"id":5450,"name":"MemberAccess","src":"3913:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5443,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5451,"name":"Identifier","src":"3933:4:8"}],"id":5452,"name":"MemberAccess","src":"3933:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5211,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5453,"name":"Identifier","src":"3946:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5443,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5454,"name":"Identifier","src":"3957:4:8"}],"id":5455,"name":"MemberAccess","src":"3957:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5443,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5456,"name":"Identifier","src":"3968:4:8"}],"id":5457,"name":"MemberAccess","src":"3968:11:8"}],"id":5458,"name":"FunctionCall","src":"3946:34:8"}],"id":5459,"name":"FunctionCall","src":"3913:68:8"}],"id":5460,"name":"Return","src":"3906:75:8"}],"id":5461,"name":"Block","src":"3896:92:8"}],"id":5462,"name":"FunctionDefinition","src":"3822:166:8"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5482,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":5463,"name":"UserDefinedTypeName","src":"4176:10:8"}],"id":5464,"name":"VariableDeclaration","src":"4176:22:8"}],"id":5465,"name":"ParameterList","src":"4175:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5482,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5466,"name":"ElementaryTypeName","src":"4222:5:8"}],"id":5467,"name":"VariableDeclaration","src":"4222:12:8"}],"id":5468,"name":"ParameterList","src":"4221:14:8"},{"children":[{"attributes":{"functionReturnParameters":5468},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7001,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5285,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5469,"name":"Identifier","src":"4253:4:8"}],"id":5470,"name":"MemberAccess","src":"4253:9:8"}],"id":5471,"name":"MemberAccess","src":"4253:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":5295,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5472,"name":"Identifier","src":"4273:4:8"}],"id":5473,"name":"MemberAccess","src":"4273:16:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":5297,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5474,"name":"Identifier","src":"4291:4:8"}],"id":5475,"name":"MemberAccess","src":"4291:15:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":5295,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5476,"name":"Identifier","src":"4309:4:8"}],"id":5477,"name":"MemberAccess","src":"4309:16:8"}],"id":5478,"name":"BinaryOperation","src":"4291:34:8"}],"id":5479,"name":"FunctionCall","src":"4253:73:8"}],"id":5480,"name":"Return","src":"4246:80:8"}],"id":5481,"name":"Block","src":"4236:97:8"}],"id":5482,"name":"FunctionDefinition","src":"4161:172:8"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5602,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5483,"name":"ElementaryTypeName","src":"4675:5:8"}],"id":5484,"name":"VariableDeclaration","src":"4675:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5602,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5485,"name":"ElementaryTypeName","src":"4694:4:8"}],"id":5486,"name":"VariableDeclaration","src":"4694:11:8"},{"attributes":{"constant":false,"name":"rrtype","scope":5602,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5487,"name":"ElementaryTypeName","src":"4707:6:8"}],"id":5488,"name":"VariableDeclaration","src":"4707:13:8"}],"id":5489,"name":"ParameterList","src":"4674:47:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5602,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5490,"name":"ElementaryTypeName","src":"4745:4:8"}],"id":5491,"name":"VariableDeclaration","src":"4745:4:8"}],"id":5492,"name":"ParameterList","src":"4744:6:8"},{"children":[{"attributes":{"assignments":[5494]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":5601,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5493,"name":"ElementaryTypeName","src":"4761:5:8"}],"id":5494,"name":"VariableDeclaration","src":"4761:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5495,"name":"ElementaryTypeNameExpression","src":"4780:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5488,"type":"uint16","value":"rrtype"},"id":5496,"name":"Identifier","src":"4786:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":5497,"name":"Literal","src":"4796:1:8"}],"id":5498,"name":"BinaryOperation","src":"4786:11:8"}],"id":5499,"name":"FunctionCall","src":"4780:18:8"}],"id":5500,"name":"VariableDeclarationStatement","src":"4761:37:8"},{"attributes":{"assignments":[5502]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":5601,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5501,"name":"ElementaryTypeName","src":"4808:5:8"}],"id":5502,"name":"VariableDeclaration","src":"4808:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5503,"name":"ElementaryTypeNameExpression","src":"4827:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5488,"type":"uint16","value":"rrtype"},"id":5504,"name":"Identifier","src":"4834:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":5505,"name":"Literal","src":"4843:4:8"}],"id":5506,"name":"BinaryOperation","src":"4834:13:8"}],"id":5507,"name":"TupleExpression","src":"4833:15:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":5508,"name":"Literal","src":"4851:1:8"}],"id":5509,"name":"BinaryOperation","src":"4833:19:8"}],"id":5510,"name":"FunctionCall","src":"4827:26:8"}],"id":5511,"name":"VariableDeclarationStatement","src":"4808:45:8"},{"attributes":{"assignments":[5513]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":5601,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5512,"name":"ElementaryTypeName","src":"4863:5:8"}],"id":5513,"name":"VariableDeclaration","src":"4863:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5514,"name":"ElementaryTypeNameExpression","src":"4885:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5515,"name":"ElementaryTypeNameExpression","src":"4891:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5516,"name":"Literal","src":"4897:1:8"}],"id":5517,"name":"FunctionCall","src":"4891:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5518,"name":"ElementaryTypeNameExpression","src":"4904:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":5519,"name":"Literal","src":"4910:1:8"}],"id":5520,"name":"FunctionCall","src":"4904:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5521,"name":"ElementaryTypeNameExpression","src":"4915:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5488,"type":"uint16","value":"rrtype"},"id":5522,"name":"Identifier","src":"4921:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":5523,"name":"Literal","src":"4930:3:8"}],"id":5524,"name":"BinaryOperation","src":"4921:12:8"}],"id":5525,"name":"FunctionCall","src":"4915:19:8"}],"id":5526,"name":"BinaryOperation","src":"4904:30:8"}],"id":5527,"name":"TupleExpression","src":"4903:32:8"}],"id":5528,"name":"BinaryOperation","src":"4891:44:8"}],"id":5529,"name":"FunctionCall","src":"4885:51:8"}],"id":5530,"name":"VariableDeclarationStatement","src":"4863:73:8"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[5532]},"children":[{"attributes":{"constant":false,"name":"off","scope":5598,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5531,"name":"ElementaryTypeName","src":"4951:4:8"}],"id":5532,"name":"VariableDeclaration","src":"4951:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5486,"type":"uint256","value":"offset"},"id":5533,"name":"Identifier","src":"4962:6:8"}],"id":5534,"name":"VariableDeclarationStatement","src":"4951:17:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5535,"name":"Identifier","src":"4970:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes memory","value":"self"},"id":5536,"name":"Identifier","src":"4976:4:8"}],"id":5537,"name":"MemberAccess","src":"4976:11:8"}],"id":5538,"name":"BinaryOperation","src":"4970:17:8"},{"children":[{"attributes":{"assignments":[5540]},"children":[{"attributes":{"constant":false,"name":"window","scope":5597,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5539,"name":"ElementaryTypeName","src":"5004:5:8"}],"id":5540,"name":"VariableDeclaration","src":"5004:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes memory","value":"self"},"id":5541,"name":"Identifier","src":"5019:4:8"}],"id":5542,"name":"MemberAccess","src":"5019:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5543,"name":"Identifier","src":"5034:3:8"}],"id":5544,"name":"FunctionCall","src":"5019:19:8"}],"id":5545,"name":"VariableDeclarationStatement","src":"5004:34:8"},{"attributes":{"assignments":[5547]},"children":[{"attributes":{"constant":false,"name":"len","scope":5597,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":5546,"name":"ElementaryTypeName","src":"5052:5:8"}],"id":5547,"name":"VariableDeclaration","src":"5052:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes memory","value":"self"},"id":5548,"name":"Identifier","src":"5064:4:8"}],"id":5549,"name":"MemberAccess","src":"5064:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5550,"name":"Identifier","src":"5079:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5551,"name":"Literal","src":"5085:1:8"}],"id":5552,"name":"BinaryOperation","src":"5079:7:8"}],"id":5553,"name":"FunctionCall","src":"5064:23:8"}],"id":5554,"name":"VariableDeclarationStatement","src":"5052:35:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5494,"type":"uint8","value":"typeWindow"},"id":5555,"name":"Identifier","src":"5105:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint8","value":"window"},"id":5556,"name":"Identifier","src":"5118:6:8"}],"id":5557,"name":"BinaryOperation","src":"5105:19:8"},{"children":[{"attributes":{"functionReturnParameters":5492},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":5558,"name":"Literal","src":"5213:5:8"}],"id":5559,"name":"Return","src":"5206:12:8"}],"id":5560,"name":"Block","src":"5126:107:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5494,"type":"uint8","value":"typeWindow"},"id":5561,"name":"Identifier","src":"5243:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint8","value":"window"},"id":5562,"name":"Identifier","src":"5257:6:8"}],"id":5563,"name":"BinaryOperation","src":"5243:20:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5547,"type":"uint8","value":"len"},"id":5564,"name":"Identifier","src":"5329:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":5565,"name":"Literal","src":"5335:1:8"}],"id":5566,"name":"BinaryOperation","src":"5329:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5502,"type":"uint8","value":"windowByte"},"id":5567,"name":"Identifier","src":"5340:10:8"}],"id":5568,"name":"BinaryOperation","src":"5329:21:8"},{"children":[{"attributes":{"functionReturnParameters":5492},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":5569,"name":"Literal","src":"5443:5:8"}],"id":5570,"name":"Return","src":"5436:12:8"}],"id":5571,"name":"Block","src":"5352:115:8"}],"id":5572,"name":"IfStatement","src":"5325:142:8"},{"attributes":{"functionReturnParameters":5492},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"bytes memory","value":"self"},"id":5573,"name":"Identifier","src":"5492:4:8"}],"id":5574,"name":"MemberAccess","src":"5492:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5575,"name":"Identifier","src":"5507:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5502,"type":"uint8","value":"windowByte"},"id":5576,"name":"Identifier","src":"5513:10:8"}],"id":5577,"name":"BinaryOperation","src":"5507:16:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5578,"name":"Literal","src":"5526:1:8"}],"id":5579,"name":"BinaryOperation","src":"5507:20:8"}],"id":5580,"name":"FunctionCall","src":"5492:36:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5513,"type":"uint8","value":"windowBitmask"},"id":5581,"name":"Identifier","src":"5531:13:8"}],"id":5582,"name":"BinaryOperation","src":"5492:52:8"}],"id":5583,"name":"TupleExpression","src":"5491:54:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5584,"name":"Literal","src":"5549:1:8"}],"id":5585,"name":"BinaryOperation","src":"5491:59:8"}],"id":5586,"name":"Return","src":"5484:66:8"}],"id":5587,"name":"Block","src":"5265:300:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"off"},"id":5588,"name":"Identifier","src":"5630:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5547,"type":"uint8","value":"len"},"id":5589,"name":"Identifier","src":"5637:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5590,"name":"Literal","src":"5643:1:8"}],"id":5591,"name":"BinaryOperation","src":"5637:7:8"}],"id":5592,"name":"Assignment","src":"5630:14:8"}],"id":5593,"name":"ExpressionStatement","src":"5630:14:8"}],"id":5594,"name":"Block","src":"5571:88:8"}],"id":5595,"name":"IfStatement","src":"5239:420:8"}],"id":5596,"name":"IfStatement","src":"5101:558:8"}],"id":5597,"name":"Block","src":"4990:679:8"}],"id":5598,"name":"ForStatement","src":"4946:723:8"},{"attributes":{"functionReturnParameters":5492},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":5599,"name":"Literal","src":"5686:5:8"}],"id":5600,"name":"Return","src":"5679:12:8"}],"id":5601,"name":"Block","src":"4751:947:8"}],"id":5602,"name":"FunctionDefinition","src":"4650:1048:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5757,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5603,"name":"ElementaryTypeName","src":"5726:5:8"}],"id":5604,"name":"VariableDeclaration","src":"5726:17:8"},{"attributes":{"constant":false,"name":"other","scope":5757,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5605,"name":"ElementaryTypeName","src":"5745:5:8"}],"id":5606,"name":"VariableDeclaration","src":"5745:18:8"}],"id":5607,"name":"ParameterList","src":"5725:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5757,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":5608,"name":"ElementaryTypeName","src":"5788:3:8"}],"id":5609,"name":"VariableDeclaration","src":"5788:3:8"}],"id":5610,"name":"ParameterList","src":"5787:5:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6794,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5611,"name":"Identifier","src":"5807:4:8"}],"id":5612,"name":"MemberAccess","src":"5807:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5613,"name":"Identifier","src":"5819:5:8"}],"id":5614,"name":"FunctionCall","src":"5807:18:8"},{"children":[{"attributes":{"functionReturnParameters":5610},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5615,"name":"Literal","src":"5848:1:8"}],"id":5616,"name":"Return","src":"5841:8:8"}],"id":5617,"name":"Block","src":"5827:33:8"}],"id":5618,"name":"IfStatement","src":"5803:57:8"},{"attributes":{"assignments":[5620],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5619,"name":"ElementaryTypeName","src":"5870:4:8"}],"id":5620,"name":"VariableDeclaration","src":"5870:8:8"}],"id":5621,"name":"VariableDeclarationStatement","src":"5870:8:8"},{"attributes":{"assignments":[5623],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5622,"name":"ElementaryTypeName","src":"5888:4:8"}],"id":5623,"name":"VariableDeclaration","src":"5888:13:8"}],"id":5624,"name":"VariableDeclarationStatement","src":"5888:13:8"},{"attributes":{"assignments":[5626],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5625,"name":"ElementaryTypeName","src":"5911:4:8"}],"id":5626,"name":"VariableDeclaration","src":"5911:12:8"}],"id":5627,"name":"VariableDeclarationStatement","src":"5911:12:8"},{"attributes":{"assignments":[5629],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5628,"name":"ElementaryTypeName","src":"5933:4:8"}],"id":5629,"name":"VariableDeclaration","src":"5933:17:8"}],"id":5630,"name":"VariableDeclarationStatement","src":"5933:17:8"},{"attributes":{"assignments":[5632]},"children":[{"attributes":{"constant":false,"name":"counts","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5631,"name":"ElementaryTypeName","src":"5960:4:8"}],"id":5632,"name":"VariableDeclaration","src":"5960:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":5283,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":5633,"name":"Identifier","src":"5974:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5634,"name":"Identifier","src":"5985:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5635,"name":"Literal","src":"5991:1:8"}],"id":5636,"name":"FunctionCall","src":"5974:19:8"}],"id":5637,"name":"VariableDeclarationStatement","src":"5960:33:8"},{"attributes":{"assignments":[5639]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":5756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5638,"name":"ElementaryTypeName","src":"6003:4:8"}],"id":5639,"name":"VariableDeclaration","src":"6003:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":5283,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":5640,"name":"Identifier","src":"6022:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5641,"name":"Identifier","src":"6033:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5642,"name":"Literal","src":"6040:1:8"}],"id":5643,"name":"FunctionCall","src":"6022:20:8"}],"id":5644,"name":"VariableDeclarationStatement","src":"6003:39:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5645,"name":"Identifier","src":"6153:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5639,"type":"uint256","value":"othercounts"},"id":5646,"name":"Identifier","src":"6162:11:8"}],"id":5647,"name":"BinaryOperation","src":"6153:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5626,"type":"uint256","value":"prevoff"},"id":5648,"name":"Identifier","src":"6189:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5649,"name":"Identifier","src":"6199:3:8"}],"id":5650,"name":"Assignment","src":"6189:13:8"}],"id":5651,"name":"ExpressionStatement","src":"6189:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5652,"name":"Identifier","src":"6216:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":5653,"name":"Identifier","src":"6222:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5654,"name":"Identifier","src":"6231:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5655,"name":"Identifier","src":"6237:3:8"}],"id":5656,"name":"FunctionCall","src":"6222:19:8"}],"id":5657,"name":"Assignment","src":"6216:25:8"}],"id":5658,"name":"ExpressionStatement","src":"6216:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5659,"name":"Identifier","src":"6255:6:8"}],"id":5660,"name":"UnaryOperation","src":"6255:8:8"}],"id":5661,"name":"ExpressionStatement","src":"6255:8:8"}],"id":5662,"name":"Block","src":"6175:99:8"}],"id":5663,"name":"WhileStatement","src":"6146:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5639,"type":"uint256","value":"othercounts"},"id":5664,"name":"Identifier","src":"6291:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5665,"name":"Identifier","src":"6305:6:8"}],"id":5666,"name":"BinaryOperation","src":"6291:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5629,"type":"uint256","value":"otherprevoff"},"id":5667,"name":"Identifier","src":"6327:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5668,"name":"Identifier","src":"6342:8:8"}],"id":5669,"name":"Assignment","src":"6327:23:8"}],"id":5670,"name":"ExpressionStatement","src":"6327:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5671,"name":"Identifier","src":"6364:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":5672,"name":"Identifier","src":"6375:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5673,"name":"Identifier","src":"6384:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5674,"name":"Identifier","src":"6391:8:8"}],"id":5675,"name":"FunctionCall","src":"6375:25:8"}],"id":5676,"name":"Assignment","src":"6364:36:8"}],"id":5677,"name":"ExpressionStatement","src":"6364:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5639,"type":"uint256","value":"othercounts"},"id":5678,"name":"Identifier","src":"6414:11:8"}],"id":5679,"name":"UnaryOperation","src":"6414:13:8"}],"id":5680,"name":"ExpressionStatement","src":"6414:13:8"}],"id":5681,"name":"Block","src":"6313:125:8"}],"id":5682,"name":"WhileStatement","src":"6284:154:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5683,"name":"Identifier","src":"6513:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5684,"name":"Literal","src":"6522:1:8"}],"id":5685,"name":"BinaryOperation","src":"6513:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6740,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5686,"name":"Identifier","src":"6528:4:8"}],"id":5687,"name":"MemberAccess","src":"6528:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5688,"name":"Identifier","src":"6540:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5689,"name":"Identifier","src":"6545:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5690,"name":"Identifier","src":"6552:8:8"}],"id":5691,"name":"FunctionCall","src":"6528:33:8"}],"id":5692,"name":"UnaryOperation","src":"6527:34:8"}],"id":5693,"name":"BinaryOperation","src":"6513:48:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5626,"type":"uint256","value":"prevoff"},"id":5694,"name":"Identifier","src":"6577:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5695,"name":"Identifier","src":"6587:3:8"}],"id":5696,"name":"Assignment","src":"6577:13:8"}],"id":5697,"name":"ExpressionStatement","src":"6577:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5698,"name":"Identifier","src":"6604:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":5699,"name":"Identifier","src":"6610:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5700,"name":"Identifier","src":"6619:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5701,"name":"Identifier","src":"6625:3:8"}],"id":5702,"name":"FunctionCall","src":"6610:19:8"}],"id":5703,"name":"Assignment","src":"6604:25:8"}],"id":5704,"name":"ExpressionStatement","src":"6604:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5629,"type":"uint256","value":"otherprevoff"},"id":5705,"name":"Identifier","src":"6643:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5706,"name":"Identifier","src":"6658:8:8"}],"id":5707,"name":"Assignment","src":"6643:23:8"}],"id":5708,"name":"ExpressionStatement","src":"6643:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5709,"name":"Identifier","src":"6680:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5776,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":5710,"name":"Identifier","src":"6691:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5711,"name":"Identifier","src":"6700:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5712,"name":"Identifier","src":"6707:8:8"}],"id":5713,"name":"FunctionCall","src":"6691:25:8"}],"id":5714,"name":"Assignment","src":"6680:36:8"}],"id":5715,"name":"ExpressionStatement","src":"6680:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5632,"type":"uint256","value":"counts"},"id":5716,"name":"Identifier","src":"6730:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5717,"name":"Literal","src":"6740:1:8"}],"id":5718,"name":"Assignment","src":"6730:11:8"}],"id":5719,"name":"ExpressionStatement","src":"6730:11:8"}],"id":5720,"name":"Block","src":"6563:189:8"}],"id":5721,"name":"WhileStatement","src":"6506:246:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5620,"type":"uint256","value":"off"},"id":5722,"name":"Identifier","src":"6766:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5723,"name":"Literal","src":"6773:1:8"}],"id":5724,"name":"BinaryOperation","src":"6766:8:8"},{"children":[{"attributes":{"functionReturnParameters":5610},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5725,"name":"Literal","src":"6798:1:8"}],"id":5726,"name":"UnaryOperation","src":"6797:2:8"}],"id":5727,"name":"Return","src":"6790:9:8"}],"id":5728,"name":"Block","src":"6776:34:8"}],"id":5729,"name":"IfStatement","src":"6762:48:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"uint256","value":"otheroff"},"id":5730,"name":"Identifier","src":"6822:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5731,"name":"Literal","src":"6834:1:8"}],"id":5732,"name":"BinaryOperation","src":"6822:13:8"},{"children":[{"attributes":{"functionReturnParameters":5610},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5733,"name":"Literal","src":"6858:1:8"}],"id":5734,"name":"Return","src":"6851:8:8"}],"id":5735,"name":"Block","src":"6837:33:8"}],"id":5736,"name":"IfStatement","src":"6819:51:8"},{"attributes":{"functionReturnParameters":5610},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":6680,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5737,"name":"Identifier","src":"6887:4:8"}],"id":5738,"name":"MemberAccess","src":"6887:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5626,"type":"uint256","value":"prevoff"},"id":5739,"name":"Identifier","src":"6900:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5740,"name":"Literal","src":"6910:1:8"}],"id":5741,"name":"BinaryOperation","src":"6900:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes memory","value":"self"},"id":5742,"name":"Identifier","src":"6913:4:8"}],"id":5743,"name":"MemberAccess","src":"6913:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5626,"type":"uint256","value":"prevoff"},"id":5744,"name":"Identifier","src":"6928:7:8"}],"id":5745,"name":"FunctionCall","src":"6913:23:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5746,"name":"Identifier","src":"6938:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5629,"type":"uint256","value":"otherprevoff"},"id":5747,"name":"Identifier","src":"6945:12:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5748,"name":"Literal","src":"6960:1:8"}],"id":5749,"name":"BinaryOperation","src":"6945:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"bytes memory","value":"other"},"id":5750,"name":"Identifier","src":"6963:5:8"}],"id":5751,"name":"MemberAccess","src":"6963:15:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5629,"type":"uint256","value":"otherprevoff"},"id":5752,"name":"Identifier","src":"6979:12:8"}],"id":5753,"name":"FunctionCall","src":"6963:29:8"}],"id":5754,"name":"FunctionCall","src":"6887:106:8"}],"id":5755,"name":"Return","src":"6880:113:8"}],"id":5756,"name":"Block","src":"5793:1207:8"}],"id":5757,"name":"FunctionDefinition","src":"5704:1296:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":5777,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":5776,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5758,"name":"ElementaryTypeName","src":"7024:5:8"}],"id":5759,"name":"VariableDeclaration","src":"7024:17:8"},{"attributes":{"constant":false,"name":"off","scope":5776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5760,"name":"ElementaryTypeName","src":"7043:4:8"}],"id":5761,"name":"VariableDeclaration","src":"7043:8:8"}],"id":5762,"name":"ParameterList","src":"7023:29:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5763,"name":"ElementaryTypeName","src":"7075:4:8"}],"id":5764,"name":"VariableDeclaration","src":"7075:4:8"}],"id":5765,"name":"ParameterList","src":"7074:6:8"},{"children":[{"attributes":{"functionReturnParameters":5765},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5761,"type":"uint256","value":"off"},"id":5766,"name":"Identifier","src":"7098:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5767,"name":"Literal","src":"7104:1:8"}],"id":5768,"name":"BinaryOperation","src":"7098:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6810,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5759,"type":"bytes memory","value":"body"},"id":5769,"name":"Identifier","src":"7108:4:8"}],"id":5770,"name":"MemberAccess","src":"7108:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5761,"type":"uint256","value":"off"},"id":5771,"name":"Identifier","src":"7123:3:8"}],"id":5772,"name":"FunctionCall","src":"7108:19:8"}],"id":5773,"name":"BinaryOperation","src":"7098:29:8"}],"id":5774,"name":"Return","src":"7091:36:8"}],"id":5775,"name":"Block","src":"7081:53:8"}],"id":5776,"name":"FunctionDefinition","src":"7006:128:8"}],"id":5777,"name":"ContractDefinition","src":"150:6986:8"}],"id":5778,"name":"SourceUnit","src":"0:7137:8"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[5159]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5092,"name":"PragmaDirective","src":"0:23:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5159],"name":"ResolverBase","scope":5160},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5159,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5093,"name":"ElementaryTypeName","src":"53:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5094,"name":"Literal","src":"97:10:9"}],"id":5095,"name":"VariableDeclaration","src":"53:54:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5159,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5107,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5096,"name":"ElementaryTypeName","src":"141:6:9"}],"id":5097,"name":"VariableDeclaration","src":"141:18:9"}],"id":5098,"name":"ParameterList","src":"140:20:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":5107,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5099,"name":"ElementaryTypeName","src":"181:4:9"}],"id":5100,"name":"VariableDeclaration","src":"181:4:9"}],"id":5101,"name":"ParameterList","src":"180:6:9"},{"children":[{"attributes":{"functionReturnParameters":5101},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5097,"type":"bytes4","value":"interfaceID"},"id":5102,"name":"Identifier","src":"204:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5095,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5103,"name":"Identifier","src":"219:17:9"}],"id":5104,"name":"BinaryOperation","src":"204:32:9"}],"id":5105,"name":"Return","src":"197:39:9"}],"id":5106,"name":"Block","src":"187:56:9"}],"id":5107,"name":"FunctionDefinition","src":"114:129:9"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":5159,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5114,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5108,"name":"ElementaryTypeName","src":"271:7:9"}],"id":5109,"name":"VariableDeclaration","src":"271:12:9"}],"id":5110,"name":"ParameterList","src":"270:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":5114,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5111,"name":"ElementaryTypeName","src":"307:4:9"}],"id":5112,"name":"VariableDeclaration","src":"307:4:9"}],"id":5113,"name":"ParameterList","src":"306:6:9"}],"id":5114,"name":"FunctionDefinition","src":"249:64:9"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5126,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5115,"name":"ElementaryTypeName","src":"339:7:9"}],"id":5116,"name":"VariableDeclaration","src":"339:12:9"}],"id":5117,"name":"ParameterList","src":"338:14:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":5118,"name":"Identifier","src":"363:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5114,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":5119,"name":"Identifier","src":"371:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5116,"type":"bytes32","value":"node"},"id":5120,"name":"Identifier","src":"384:4:9"}],"id":5121,"name":"FunctionCall","src":"371:18:9"}],"id":5122,"name":"FunctionCall","src":"363:27:9"}],"id":5123,"name":"ExpressionStatement","src":"363:27:9"},{"id":5124,"name":"PlaceholderStatement","src":"400:1:9"}],"id":5125,"name":"Block","src":"353:55:9"}],"id":5126,"name":"ModifierDefinition","src":"319:89:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":5159,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":5142,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5127,"name":"ElementaryTypeName","src":"438:5:9"}],"id":5128,"name":"VariableDeclaration","src":"438:14:9"}],"id":5129,"name":"ParameterList","src":"437:16:9"},{"children":[{"attributes":{"constant":false,"name":"a","scope":5142,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5130,"name":"ElementaryTypeName","src":"476:15:9"}],"id":5131,"name":"VariableDeclaration","src":"476:17:9"}],"id":5132,"name":"ParameterList","src":"475:19:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":5133,"name":"Identifier","src":"505:7:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5128,"type":"bytes memory","value":"b"},"id":5134,"name":"Identifier","src":"513:1:9"}],"id":5135,"name":"MemberAccess","src":"513:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5136,"name":"Literal","src":"525:2:9"}],"id":5137,"name":"BinaryOperation","src":"513:14:9"}],"id":5138,"name":"FunctionCall","src":"505:23:9"}],"id":5139,"name":"ExpressionStatement","src":"505:23:9"},{"attributes":{"externalReferences":[{"a":{"declaration":5131,"isOffset":false,"isSlot":false,"src":"561:1:9","valueSize":1}},{"b":{"declaration":5128,"isOffset":false,"isSlot":false,"src":"580:1:9","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":5140,"name":"InlineAssembly","src":"538:74:9"}],"id":5141,"name":"Block","src":"495:123:9"}],"id":5142,"name":"FunctionDefinition","src":"414:204:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":5159,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":5158,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5143,"name":"ElementaryTypeName","src":"648:7:9"}],"id":5144,"name":"VariableDeclaration","src":"648:9:9"}],"id":5145,"name":"ParameterList","src":"647:11:9"},{"children":[{"attributes":{"constant":false,"name":"b","scope":5158,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5146,"name":"ElementaryTypeName","src":"681:5:9"}],"id":5147,"name":"VariableDeclaration","src":"681:14:9"}],"id":5148,"name":"ParameterList","src":"680:16:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5147,"type":"bytes memory","value":"b"},"id":5149,"name":"Identifier","src":"707:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5150,"name":"ElementaryTypeName","src":"715:5:9"}],"id":5151,"name":"NewExpression","src":"711:9:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5152,"name":"Literal","src":"721:2:9"}],"id":5153,"name":"FunctionCall","src":"711:13:9"}],"id":5154,"name":"Assignment","src":"707:17:9"}],"id":5155,"name":"ExpressionStatement","src":"707:17:9"},{"attributes":{"externalReferences":[{"b":{"declaration":5147,"isOffset":false,"isSlot":false,"src":"768:1:9","valueSize":1}},{"a":{"declaration":5144,"isOffset":false,"isSlot":false,"src":"780:1:9","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":5156,"name":"InlineAssembly","src":"734:73:9"}],"id":5157,"name":"Block","src":"697:116:9"}],"id":5158,"name":"FunctionDefinition","src":"624:189:9"}],"id":5159,"name":"ContractDefinition","src":"25:790:9"}],"id":5160,"name":"SourceUnit","src":"0:816:9"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[1853]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1719,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":1854,"symbolAliases":[null],"unitAlias":""},"id":1720,"name":"ImportDirective","src":"25:29:10"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1853,5159],"name":"ABIResolver","scope":1854},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":1721,"name":"UserDefinedTypeName","src":"80:12:10"}],"id":1722,"name":"InheritanceSpecifier","src":"80:12:10"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":1853,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1723,"name":"ElementaryTypeName","src":"99:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":1724,"name":"Literal","src":"142:10:10"}],"id":1725,"name":"VariableDeclaration","src":"99:53:10"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":1731,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1726,"name":"ElementaryTypeName","src":"176:7:10"}],"id":1727,"name":"VariableDeclaration","src":"176:20:10"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":1731,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1728,"name":"ElementaryTypeName","src":"198:7:10"}],"id":1729,"name":"VariableDeclaration","src":"198:27:10"}],"id":1730,"name":"ParameterList","src":"175:51:10"}],"id":1731,"name":"EventDefinition","src":"159:68:10"},{"attributes":{"constant":false,"name":"abis","scope":1853,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1732,"name":"ElementaryTypeName","src":"241:7:10"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1733,"name":"ElementaryTypeName","src":"258:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":1734,"name":"ElementaryTypeName","src":"267:5:10"}],"id":1735,"name":"Mapping","src":"250:23:10"}],"id":1736,"name":"Mapping","src":"233:41:10"}],"id":1737,"name":"VariableDeclaration","src":"233:46:10"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":1853,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1775,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1738,"name":"ElementaryTypeName","src":"598:7:10"}],"id":1739,"name":"VariableDeclaration","src":"598:12:10"},{"attributes":{"constant":false,"name":"contentType","scope":1775,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1740,"name":"ElementaryTypeName","src":"612:7:10"}],"id":1741,"name":"VariableDeclaration","src":"612:19:10"},{"attributes":{"constant":false,"name":"data","scope":1775,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1742,"name":"ElementaryTypeName","src":"633:5:10"}],"id":1743,"name":"VariableDeclaration","src":"633:19:10"}],"id":1744,"name":"ParameterList","src":"597:56:10"},{"attributes":{"parameters":[null]},"children":[],"id":1748,"name":"ParameterList","src":"680:0:10"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":1745,"name":"Identifier","src":"663:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1739,"type":"bytes32","value":"node"},"id":1746,"name":"Identifier","src":"674:4:10"}],"id":1747,"name":"ModifierInvocation","src":"663:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7418,"type":"function (bool) pure","value":"require"},"id":1749,"name":"Identifier","src":"735:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"contentType"},"id":1750,"name":"Identifier","src":"745:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1751,"name":"Literal","src":"759:1:10"}],"id":1752,"name":"BinaryOperation","src":"745:15:10"}],"id":1753,"name":"TupleExpression","src":"744:17:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"contentType"},"id":1754,"name":"Identifier","src":"764:11:10"}],"id":1755,"name":"BinaryOperation","src":"744:31:10"}],"id":1756,"name":"TupleExpression","src":"743:33:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1757,"name":"Literal","src":"780:1:10"}],"id":1758,"name":"BinaryOperation","src":"743:38:10"}],"id":1759,"name":"FunctionCall","src":"735:47:10"}],"id":1760,"name":"ExpressionStatement","src":"735:47:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1737,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":1761,"name":"Identifier","src":"793:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1739,"type":"bytes32","value":"node"},"id":1762,"name":"Identifier","src":"798:4:10"}],"id":1764,"name":"IndexAccess","src":"793:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"contentType"},"id":1763,"name":"Identifier","src":"804:11:10"}],"id":1765,"name":"IndexAccess","src":"793:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1743,"type":"bytes calldata","value":"data"},"id":1766,"name":"Identifier","src":"819:4:10"}],"id":1767,"name":"Assignment","src":"793:30:10"}],"id":1768,"name":"ExpressionStatement","src":"793:30:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1731,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":1769,"name":"Identifier","src":"838:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1739,"type":"bytes32","value":"node"},"id":1770,"name":"Identifier","src":"849:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"contentType"},"id":1771,"name":"Identifier","src":"855:11:10"}],"id":1772,"name":"FunctionCall","src":"838:29:10"}],"id":1773,"name":"EmitStatement","src":"833:34:10"}],"id":1774,"name":"Block","src":"680:194:10"}],"id":1775,"name":"FunctionDefinition","src":"582:292:10"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":1853,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1776,"name":"ElementaryTypeName","src":"1208:7:10"}],"id":1777,"name":"VariableDeclaration","src":"1208:12:10"},{"attributes":{"constant":false,"name":"contentTypes","scope":1835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1778,"name":"ElementaryTypeName","src":"1222:7:10"}],"id":1779,"name":"VariableDeclaration","src":"1222:20:10"}],"id":1780,"name":"ParameterList","src":"1207:36:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":1835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1781,"name":"ElementaryTypeName","src":"1267:7:10"}],"id":1782,"name":"VariableDeclaration","src":"1267:7:10"},{"attributes":{"constant":false,"name":"","scope":1835,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1783,"name":"ElementaryTypeName","src":"1276:5:10"}],"id":1784,"name":"VariableDeclaration","src":"1276:12:10"}],"id":1785,"name":"ParameterList","src":"1266:23:10"},{"children":[{"attributes":{"assignments":[1789]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":1834,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1786,"name":"ElementaryTypeName","src":"1308:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":1787,"name":"ElementaryTypeName","src":"1317:5:10"}],"id":1788,"name":"Mapping","src":"1300:23:10"}],"id":1789,"name":"VariableDeclaration","src":"1300:38:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1737,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":1790,"name":"Identifier","src":"1341:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1777,"type":"bytes32","value":"node"},"id":1791,"name":"Identifier","src":"1346:4:10"}],"id":1792,"name":"IndexAccess","src":"1341:10:10"}],"id":1793,"name":"VariableDeclarationStatement","src":"1300:51:10"},{"children":[{"attributes":{"assignments":[1795]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":1827,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1794,"name":"ElementaryTypeName","src":"1367:7:10"}],"id":1795,"name":"VariableDeclaration","src":"1367:19:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1796,"name":"Literal","src":"1389:1:10"}],"id":1797,"name":"VariableDeclarationStatement","src":"1367:23:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1798,"name":"Identifier","src":"1392:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1779,"type":"uint256","value":"contentTypes"},"id":1799,"name":"Identifier","src":"1407:12:10"}],"id":1800,"name":"BinaryOperation","src":"1392:27:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1801,"name":"Identifier","src":"1421:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1802,"name":"Literal","src":"1437:1:10"}],"id":1803,"name":"Assignment","src":"1421:17:10"}],"id":1804,"name":"ExpressionStatement","src":"1421:17:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1805,"name":"Identifier","src":"1459:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1779,"type":"uint256","value":"contentTypes"},"id":1806,"name":"Identifier","src":"1473:12:10"}],"id":1807,"name":"BinaryOperation","src":"1459:26:10"}],"id":1808,"name":"TupleExpression","src":"1458:28:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1809,"name":"Literal","src":"1490:1:10"}],"id":1810,"name":"BinaryOperation","src":"1458:33:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1789,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":1811,"name":"Identifier","src":"1495:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1812,"name":"Identifier","src":"1502:11:10"}],"id":1813,"name":"IndexAccess","src":"1495:19:10"}],"id":1814,"name":"MemberAccess","src":"1495:26:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1815,"name":"Literal","src":"1524:1:10"}],"id":1816,"name":"BinaryOperation","src":"1495:30:10"}],"id":1817,"name":"BinaryOperation","src":"1458:67:10"},{"children":[{"attributes":{"functionReturnParameters":1785},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1818,"name":"Identifier","src":"1553:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1789,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":1819,"name":"Identifier","src":"1566:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"contentType"},"id":1820,"name":"Identifier","src":"1573:11:10"}],"id":1821,"name":"IndexAccess","src":"1566:19:10"}],"id":1822,"name":"TupleExpression","src":"1552:34:10"}],"id":1823,"name":"Return","src":"1545:41:10"}],"id":1824,"name":"Block","src":"1527:74:10"}],"id":1825,"name":"IfStatement","src":"1454:147:10"}],"id":1826,"name":"Block","src":"1440:171:10"}],"id":1827,"name":"ForStatement","src":"1362:249:10"},{"attributes":{"functionReturnParameters":1785},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1828,"name":"Literal","src":"1629:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":1829,"name":"ElementaryTypeNameExpression","src":"1632:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":1830,"name":"Literal","src":"1638:2:10"}],"id":1831,"name":"FunctionCall","src":"1632:9:10"}],"id":1832,"name":"TupleExpression","src":"1628:14:10"}],"id":1833,"name":"Return","src":"1621:21:10"}],"id":1834,"name":"Block","src":"1290:359:10"}],"id":1835,"name":"FunctionDefinition","src":"1195:454:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":1853,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":1852,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1836,"name":"ElementaryTypeName","src":"1682:6:10"}],"id":1837,"name":"VariableDeclaration","src":"1682:18:10"}],"id":1838,"name":"ParameterList","src":"1681:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":1852,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1839,"name":"ElementaryTypeName","src":"1722:4:10"}],"id":1840,"name":"VariableDeclaration","src":"1722:4:10"}],"id":1841,"name":"ParameterList","src":"1721:6:10"},{"children":[{"attributes":{"functionReturnParameters":1841},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1837,"type":"bytes4","value":"interfaceID"},"id":1842,"name":"Identifier","src":"1745:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1725,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":1843,"name":"Identifier","src":"1760:16:10"}],"id":1844,"name":"BinaryOperation","src":"1745:31:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7452,"type":"contract super ABIResolver","value":"super"},"id":1845,"name":"Identifier","src":"1780:5:10"}],"id":1846,"name":"MemberAccess","src":"1780:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1837,"type":"bytes4","value":"interfaceID"},"id":1847,"name":"Identifier","src":"1804:11:10"}],"id":1848,"name":"FunctionCall","src":"1780:36:10"}],"id":1849,"name":"BinaryOperation","src":"1745:71:10"}],"id":1850,"name":"Return","src":"1738:78:10"}],"id":1851,"name":"Block","src":"1728:95:10"}],"id":1852,"name":"FunctionDefinition","src":"1655:168:10"}],"id":1853,"name":"ContractDefinition","src":"56:1769:10"}],"id":1854,"name":"SourceUnit","src":"0:1826:10"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[2012]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1855,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2013,"symbolAliases":[null],"unitAlias":""},"id":1856,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2012,5159],"name":"AddrResolver","scope":2013},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":1857,"name":"UserDefinedTypeName","src":"81:12:11"}],"id":1858,"name":"InheritanceSpecifier","src":"81:12:11"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":2012,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1859,"name":"ElementaryTypeName","src":"100:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":1860,"name":"Literal","src":"144:10:11"}],"id":1861,"name":"VariableDeclaration","src":"100:54:11"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":2012,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1862,"name":"ElementaryTypeName","src":"160:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":1863,"name":"Literal","src":"207:10:11"}],"id":1864,"name":"VariableDeclaration","src":"160:57:11"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":2012,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1865,"name":"ElementaryTypeName","src":"223:4:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":1866,"name":"Literal","src":"261:2:11"}],"id":1867,"name":"VariableDeclaration","src":"223:40:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":1873,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1868,"name":"ElementaryTypeName","src":"288:7:11"}],"id":1869,"name":"VariableDeclaration","src":"288:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":1873,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1870,"name":"ElementaryTypeName","src":"310:7:11"}],"id":1871,"name":"VariableDeclaration","src":"310:9:11"}],"id":1872,"name":"ParameterList","src":"287:33:11"}],"id":1873,"name":"EventDefinition","src":"270:51:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":1881,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1874,"name":"ElementaryTypeName","src":"347:7:11"}],"id":1875,"name":"VariableDeclaration","src":"347:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":1881,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1876,"name":"ElementaryTypeName","src":"369:4:11"}],"id":1877,"name":"VariableDeclaration","src":"369:13:11"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":1881,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1878,"name":"ElementaryTypeName","src":"384:5:11"}],"id":1879,"name":"VariableDeclaration","src":"384:16:11"}],"id":1880,"name":"ParameterList","src":"346:55:11"}],"id":1881,"name":"EventDefinition","src":"326:76:11"},{"attributes":{"constant":false,"name":"_addresses","scope":2012,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1882,"name":"ElementaryTypeName","src":"416:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1883,"name":"ElementaryTypeName","src":"433:4:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":1884,"name":"ElementaryTypeName","src":"439:5:11"}],"id":1885,"name":"Mapping","src":"425:20:11"}],"id":1886,"name":"Mapping","src":"408:38:11"}],"id":1887,"name":"VariableDeclaration","src":"408:49:11"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":2012,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1906,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1888,"name":"ElementaryTypeName","src":"698:7:11"}],"id":1889,"name":"VariableDeclaration","src":"698:12:11"},{"attributes":{"constant":false,"name":"a","scope":1906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1890,"name":"ElementaryTypeName","src":"712:7:11"}],"id":1891,"name":"VariableDeclaration","src":"712:9:11"}],"id":1892,"name":"ParameterList","src":"697:25:11"},{"attributes":{"parameters":[null]},"children":[],"id":1896,"name":"ParameterList","src":"749:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":1893,"name":"Identifier","src":"732:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1889,"type":"bytes32","value":"node"},"id":1894,"name":"Identifier","src":"743:4:11"}],"id":1895,"name":"ModifierInvocation","src":"732:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1974,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":1897,"name":"Identifier","src":"759:15:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1889,"type":"bytes32","value":"node"},"id":1898,"name":"Identifier","src":"775:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1867,"type":"uint256","value":"COIN_TYPE_ETH"},"id":1899,"name":"Identifier","src":"781:13:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5158,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":1900,"name":"Identifier","src":"796:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1891,"type":"address","value":"a"},"id":1901,"name":"Identifier","src":"811:1:11"}],"id":1902,"name":"FunctionCall","src":"796:17:11"}],"id":1903,"name":"FunctionCall","src":"759:55:11"}],"id":1904,"name":"ExpressionStatement","src":"759:55:11"}],"id":1905,"name":"Block","src":"749:72:11"}],"id":1906,"name":"FunctionDefinition","src":"681:140:11"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":2012,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1935,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1907,"name":"ElementaryTypeName","src":"994:7:11"}],"id":1908,"name":"VariableDeclaration","src":"994:12:11"}],"id":1909,"name":"ParameterList","src":"993:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":1935,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1910,"name":"ElementaryTypeName","src":"1029:15:11"}],"id":1911,"name":"VariableDeclaration","src":"1029:15:11"}],"id":1912,"name":"ParameterList","src":"1028:17:11"},{"children":[{"attributes":{"assignments":[1914]},"children":[{"attributes":{"constant":false,"name":"a","scope":1934,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1913,"name":"ElementaryTypeName","src":"1056:5:11"}],"id":1914,"name":"VariableDeclaration","src":"1056:14:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[1935,1990],"referencedDeclaration":1990,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":1915,"name":"Identifier","src":"1073:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1908,"type":"bytes32","value":"node"},"id":1916,"name":"Identifier","src":"1078:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1867,"type":"uint256","value":"COIN_TYPE_ETH"},"id":1917,"name":"Identifier","src":"1084:13:11"}],"id":1918,"name":"FunctionCall","src":"1073:25:11"}],"id":1919,"name":"VariableDeclarationStatement","src":"1056:42:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1914,"type":"bytes memory","value":"a"},"id":1920,"name":"Identifier","src":"1111:1:11"}],"id":1921,"name":"MemberAccess","src":"1111:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1922,"name":"Literal","src":"1123:1:11"}],"id":1923,"name":"BinaryOperation","src":"1111:13:11"},{"children":[{"attributes":{"functionReturnParameters":1912},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1924,"name":"ElementaryTypeNameExpression","src":"1147:7:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1925,"name":"Literal","src":"1155:1:11"}],"id":1926,"name":"FunctionCall","src":"1147:10:11"}],"id":1927,"name":"Return","src":"1140:17:11"}],"id":1928,"name":"Block","src":"1126:42:11"}],"id":1929,"name":"IfStatement","src":"1108:60:11"},{"attributes":{"functionReturnParameters":1912},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5142,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":1930,"name":"Identifier","src":"1184:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1914,"type":"bytes memory","value":"a"},"id":1931,"name":"Identifier","src":"1199:1:11"}],"id":1932,"name":"FunctionCall","src":"1184:17:11"}],"id":1933,"name":"Return","src":"1177:24:11"}],"id":1934,"name":"Block","src":"1046:162:11"}],"id":1935,"name":"FunctionDefinition","src":"980:228:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":2012,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1974,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1936,"name":"ElementaryTypeName","src":"1239:7:11"}],"id":1937,"name":"VariableDeclaration","src":"1239:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":1974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1938,"name":"ElementaryTypeName","src":"1253:4:11"}],"id":1939,"name":"VariableDeclaration","src":"1253:13:11"},{"attributes":{"constant":false,"name":"a","scope":1974,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1940,"name":"ElementaryTypeName","src":"1268:5:11"}],"id":1941,"name":"VariableDeclaration","src":"1268:14:11"}],"id":1942,"name":"ParameterList","src":"1238:45:11"},{"attributes":{"parameters":[null]},"children":[],"id":1946,"name":"ParameterList","src":"1308:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":1943,"name":"Identifier","src":"1291:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bytes32","value":"node"},"id":1944,"name":"Identifier","src":"1302:4:11"}],"id":1945,"name":"ModifierInvocation","src":"1291:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1881,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":1947,"name":"Identifier","src":"1323:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bytes32","value":"node"},"id":1948,"name":"Identifier","src":"1338:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1939,"type":"uint256","value":"coinType"},"id":1949,"name":"Identifier","src":"1344:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1941,"type":"bytes memory","value":"a"},"id":1950,"name":"Identifier","src":"1354:1:11"}],"id":1951,"name":"FunctionCall","src":"1323:33:11"}],"id":1952,"name":"EmitStatement","src":"1318:38:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1939,"type":"uint256","value":"coinType"},"id":1953,"name":"Identifier","src":"1369:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1867,"type":"uint256","value":"COIN_TYPE_ETH"},"id":1954,"name":"Identifier","src":"1381:13:11"}],"id":1955,"name":"BinaryOperation","src":"1369:25:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1873,"type":"function (bytes32,address)","value":"AddrChanged"},"id":1956,"name":"Identifier","src":"1415:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bytes32","value":"node"},"id":1957,"name":"Identifier","src":"1427:4:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5142,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":1958,"name":"Identifier","src":"1433:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1941,"type":"bytes memory","value":"a"},"id":1959,"name":"Identifier","src":"1448:1:11"}],"id":1960,"name":"FunctionCall","src":"1433:17:11"}],"id":1961,"name":"FunctionCall","src":"1415:36:11"}],"id":1962,"name":"EmitStatement","src":"1410:41:11"}],"id":1963,"name":"Block","src":"1396:66:11"}],"id":1964,"name":"IfStatement","src":"1366:96:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":1965,"name":"Identifier","src":"1471:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bytes32","value":"node"},"id":1966,"name":"Identifier","src":"1482:4:11"}],"id":1968,"name":"IndexAccess","src":"1471:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1939,"type":"uint256","value":"coinType"},"id":1967,"name":"Identifier","src":"1488:8:11"}],"id":1969,"name":"IndexAccess","src":"1471:26:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1941,"type":"bytes memory","value":"a"},"id":1970,"name":"Identifier","src":"1500:1:11"}],"id":1971,"name":"Assignment","src":"1471:30:11"}],"id":1972,"name":"ExpressionStatement","src":"1471:30:11"}],"id":1973,"name":"Block","src":"1308:200:11"}],"id":1974,"name":"FunctionDefinition","src":"1214:294:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":2012,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":1990,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1975,"name":"ElementaryTypeName","src":"1528:7:11"}],"id":1976,"name":"VariableDeclaration","src":"1528:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":1990,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1977,"name":"ElementaryTypeName","src":"1542:4:11"}],"id":1978,"name":"VariableDeclaration","src":"1542:13:11"}],"id":1979,"name":"ParameterList","src":"1527:29:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":1990,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1980,"name":"ElementaryTypeName","src":"1577:5:11"}],"id":1981,"name":"VariableDeclaration","src":"1577:12:11"}],"id":1982,"name":"ParameterList","src":"1576:14:11"},{"children":[{"attributes":{"functionReturnParameters":1982},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":1983,"name":"Identifier","src":"1608:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1976,"type":"bytes32","value":"node"},"id":1984,"name":"Identifier","src":"1619:4:11"}],"id":1985,"name":"IndexAccess","src":"1608:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1978,"type":"uint256","value":"coinType"},"id":1986,"name":"Identifier","src":"1625:8:11"}],"id":1987,"name":"IndexAccess","src":"1608:26:11"}],"id":1988,"name":"Return","src":"1601:33:11"}],"id":1989,"name":"Block","src":"1591:50:11"}],"id":1990,"name":"FunctionDefinition","src":"1514:127:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2012,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2011,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1991,"name":"ElementaryTypeName","src":"1674:6:11"}],"id":1992,"name":"VariableDeclaration","src":"1674:18:11"}],"id":1993,"name":"ParameterList","src":"1673:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":2011,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1994,"name":"ElementaryTypeName","src":"1714:4:11"}],"id":1995,"name":"VariableDeclaration","src":"1714:4:11"}],"id":1996,"name":"ParameterList","src":"1713:6:11"},{"children":[{"attributes":{"functionReturnParameters":1996},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1992,"type":"bytes4","value":"interfaceID"},"id":1997,"name":"Identifier","src":"1737:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1861,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":1998,"name":"Identifier","src":"1752:17:11"}],"id":1999,"name":"BinaryOperation","src":"1737:32:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1992,"type":"bytes4","value":"interfaceID"},"id":2000,"name":"Identifier","src":"1773:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1864,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":2001,"name":"Identifier","src":"1788:20:11"}],"id":2002,"name":"BinaryOperation","src":"1773:35:11"}],"id":2003,"name":"BinaryOperation","src":"1737:71:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7454,"type":"contract super AddrResolver","value":"super"},"id":2004,"name":"Identifier","src":"1812:5:11"}],"id":2005,"name":"MemberAccess","src":"1812:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1992,"type":"bytes4","value":"interfaceID"},"id":2006,"name":"Identifier","src":"1836:11:11"}],"id":2007,"name":"FunctionCall","src":"1812:36:11"}],"id":2008,"name":"BinaryOperation","src":"1737:111:11"}],"id":2009,"name":"Return","src":"1730:118:11"}],"id":2010,"name":"Block","src":"1720:135:11"}],"id":2011,"name":"FunctionDefinition","src":"1647:208:11"}],"id":2012,"name":"ContractDefinition","src":"56:1801:11"}],"id":2013,"name":"SourceUnit","src":"0:1857:11"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[2082]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2014,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2083,"symbolAliases":[null],"unitAlias":""},"id":2015,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2082,5159],"name":"ContentHashResolver","scope":2083},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2016,"name":"UserDefinedTypeName","src":"88:12:12"}],"id":2017,"name":"InheritanceSpecifier","src":"88:12:12"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":2082,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2018,"name":"ElementaryTypeName","src":"107:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":2019,"name":"Literal","src":"159:10:12"}],"id":2020,"name":"VariableDeclaration","src":"107:62:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2026,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2021,"name":"ElementaryTypeName","src":"201:7:12"}],"id":2022,"name":"VariableDeclaration","src":"201:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":2026,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2023,"name":"ElementaryTypeName","src":"223:5:12"}],"id":2024,"name":"VariableDeclaration","src":"223:10:12"}],"id":2025,"name":"ParameterList","src":"200:34:12"}],"id":2026,"name":"EventDefinition","src":"176:59:12"},{"attributes":{"constant":false,"name":"hashes","scope":2082,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2027,"name":"ElementaryTypeName","src":"249:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":2028,"name":"ElementaryTypeName","src":"258:5:12"}],"id":2029,"name":"Mapping","src":"241:23:12"}],"id":2030,"name":"VariableDeclaration","src":"241:30:12"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":2082,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2052,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2031,"name":"ElementaryTypeName","src":"529:7:12"}],"id":2032,"name":"VariableDeclaration","src":"529:12:12"},{"attributes":{"constant":false,"name":"hash","scope":2052,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2033,"name":"ElementaryTypeName","src":"543:5:12"}],"id":2034,"name":"VariableDeclaration","src":"543:19:12"}],"id":2035,"name":"ParameterList","src":"528:35:12"},{"attributes":{"parameters":[null]},"children":[],"id":2039,"name":"ParameterList","src":"590:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2036,"name":"Identifier","src":"573:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2032,"type":"bytes32","value":"node"},"id":2037,"name":"Identifier","src":"584:4:12"}],"id":2038,"name":"ModifierInvocation","src":"573:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2030,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":2040,"name":"Identifier","src":"600:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2032,"type":"bytes32","value":"node"},"id":2041,"name":"Identifier","src":"607:4:12"}],"id":2042,"name":"IndexAccess","src":"600:12:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2034,"type":"bytes calldata","value":"hash"},"id":2043,"name":"Identifier","src":"615:4:12"}],"id":2044,"name":"Assignment","src":"600:19:12"}],"id":2045,"name":"ExpressionStatement","src":"600:19:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2026,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":2046,"name":"Identifier","src":"634:18:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2032,"type":"bytes32","value":"node"},"id":2047,"name":"Identifier","src":"653:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2034,"type":"bytes calldata","value":"hash"},"id":2048,"name":"Identifier","src":"659:4:12"}],"id":2049,"name":"FunctionCall","src":"634:30:12"}],"id":2050,"name":"EmitStatement","src":"629:35:12"}],"id":2051,"name":"Block","src":"590:81:12"}],"id":2052,"name":"FunctionDefinition","src":"505:166:12"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":2082,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2064,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2053,"name":"ElementaryTypeName","src":"859:7:12"}],"id":2054,"name":"VariableDeclaration","src":"859:12:12"}],"id":2055,"name":"ParameterList","src":"858:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":2064,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2056,"name":"ElementaryTypeName","src":"896:5:12"}],"id":2057,"name":"VariableDeclaration","src":"896:12:12"}],"id":2058,"name":"ParameterList","src":"895:14:12"},{"children":[{"attributes":{"functionReturnParameters":2058},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2030,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":2059,"name":"Identifier","src":"927:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2054,"type":"bytes32","value":"node"},"id":2060,"name":"Identifier","src":"934:4:12"}],"id":2061,"name":"IndexAccess","src":"927:12:12"}],"id":2062,"name":"Return","src":"920:19:12"}],"id":2063,"name":"Block","src":"910:36:12"}],"id":2064,"name":"FunctionDefinition","src":"838:108:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2082,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2081,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2065,"name":"ElementaryTypeName","src":"979:6:12"}],"id":2066,"name":"VariableDeclaration","src":"979:18:12"}],"id":2067,"name":"ParameterList","src":"978:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":2081,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2068,"name":"ElementaryTypeName","src":"1019:4:12"}],"id":2069,"name":"VariableDeclaration","src":"1019:4:12"}],"id":2070,"name":"ParameterList","src":"1018:6:12"},{"children":[{"attributes":{"functionReturnParameters":2070},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2066,"type":"bytes4","value":"interfaceID"},"id":2071,"name":"Identifier","src":"1042:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2020,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":2072,"name":"Identifier","src":"1057:25:12"}],"id":2073,"name":"BinaryOperation","src":"1042:40:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7456,"type":"contract super ContentHashResolver","value":"super"},"id":2074,"name":"Identifier","src":"1086:5:12"}],"id":2075,"name":"MemberAccess","src":"1086:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2066,"type":"bytes4","value":"interfaceID"},"id":2076,"name":"Identifier","src":"1110:11:12"}],"id":2077,"name":"FunctionCall","src":"1086:36:12"}],"id":2078,"name":"BinaryOperation","src":"1042:80:12"}],"id":2079,"name":"Return","src":"1035:87:12"}],"id":2080,"name":"Block","src":"1025:104:12"}],"id":2081,"name":"FunctionDefinition","src":"952:177:12"}],"id":2082,"name":"ContractDefinition","src":"56:1075:12"}],"id":2083,"name":"SourceUnit","src":"0:1132:12"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[2573]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2084,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2574,"symbolAliases":[null],"unitAlias":""},"id":2085,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"SourceUnit":5778,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":2574,"symbolAliases":[null],"unitAlias":""},"id":2086,"name":"ImportDirective","src":"55:24:13"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2573,5159],"name":"DNSResolver","scope":2574},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2087,"name":"UserDefinedTypeName","src":"105:12:13"}],"id":2088,"name":"InheritanceSpecifier","src":"105:12:13"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":5777,"type":"library RRUtils"},"id":2089,"name":"UserDefinedTypeName","src":"130:7:13"}],"id":2090,"name":"UsingForDirective","src":"124:20:13"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7224,"type":"library ENSBytesUtils"},"id":2091,"name":"UserDefinedTypeName","src":"155:13:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2092,"name":"ElementaryTypeName","src":"173:5:13"}],"id":2093,"name":"UsingForDirective","src":"149:30:13"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":2573,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2094,"name":"ElementaryTypeName","src":"185:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":2095,"name":"Literal","src":"235:10:13"}],"id":2096,"name":"VariableDeclaration","src":"185:60:13"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":2573,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2097,"name":"ElementaryTypeName","src":"251:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":2098,"name":"Literal","src":"299:10:13"}],"id":2099,"name":"VariableDeclaration","src":"251:58:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2109,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2100,"name":"ElementaryTypeName","src":"430:7:13"}],"id":2101,"name":"VariableDeclaration","src":"430:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2109,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2102,"name":"ElementaryTypeName","src":"452:5:13"}],"id":2103,"name":"VariableDeclaration","src":"452:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":2109,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2104,"name":"ElementaryTypeName","src":"464:6:13"}],"id":2105,"name":"VariableDeclaration","src":"464:15:13"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":2109,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2106,"name":"ElementaryTypeName","src":"481:5:13"}],"id":2107,"name":"VariableDeclaration","src":"481:12:13"}],"id":2108,"name":"ParameterList","src":"429:65:13"}],"id":2109,"name":"EventDefinition","src":"407:88:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2117,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2110,"name":"ElementaryTypeName","src":"614:7:13"}],"id":2111,"name":"VariableDeclaration","src":"614:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2117,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2112,"name":"ElementaryTypeName","src":"636:5:13"}],"id":2113,"name":"VariableDeclaration","src":"636:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":2117,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2114,"name":"ElementaryTypeName","src":"648:6:13"}],"id":2115,"name":"VariableDeclaration","src":"648:15:13"}],"id":2116,"name":"ParameterList","src":"613:51:13"}],"id":2117,"name":"EventDefinition","src":"591:74:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2121,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2118,"name":"ElementaryTypeName","src":"777:7:13"}],"id":2119,"name":"VariableDeclaration","src":"777:20:13"}],"id":2120,"name":"ParameterList","src":"776:22:13"}],"id":2121,"name":"EventDefinition","src":"756:43:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2129,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2122,"name":"ElementaryTypeName","src":"913:7:13"}],"id":2123,"name":"VariableDeclaration","src":"913:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":2129,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2124,"name":"ElementaryTypeName","src":"935:5:13"}],"id":2125,"name":"VariableDeclaration","src":"935:18:13"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":2129,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2126,"name":"ElementaryTypeName","src":"955:5:13"}],"id":2127,"name":"VariableDeclaration","src":"955:14:13"}],"id":2128,"name":"ParameterList","src":"912:58:13"}],"id":2129,"name":"EventDefinition","src":"888:83:13"},{"attributes":{"constant":false,"name":"zonehashes","scope":2573,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2130,"name":"ElementaryTypeName","src":"1181:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2131,"name":"ElementaryTypeName","src":"1190:5:13"}],"id":2132,"name":"Mapping","src":"1173:23:13"}],"id":2133,"name":"VariableDeclaration","src":"1173:42:13"},{"attributes":{"constant":false,"name":"versions","scope":2573,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2134,"name":"ElementaryTypeName","src":"1433:7:13"},{"attributes":{"name":"uint256","type":"uint256"},"id":2135,"name":"ElementaryTypeName","src":"1442:7:13"}],"id":2136,"name":"Mapping","src":"1425:25:13"}],"id":2137,"name":"VariableDeclaration","src":"1425:42:13"},{"attributes":{"constant":false,"name":"records","scope":2573,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2138,"name":"ElementaryTypeName","src":"1589:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2139,"name":"ElementaryTypeName","src":"1606:7:13"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2140,"name":"ElementaryTypeName","src":"1623:7:13"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2141,"name":"ElementaryTypeName","src":"1640:6:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":2142,"name":"ElementaryTypeName","src":"1648:5:13"}],"id":2143,"name":"Mapping","src":"1632:22:13"}],"id":2144,"name":"Mapping","src":"1615:40:13"}],"id":2145,"name":"Mapping","src":"1598:58:13"}],"id":2146,"name":"Mapping","src":"1581:76:13"}],"id":2147,"name":"VariableDeclaration","src":"1581:92:13"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":2573,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2148,"name":"ElementaryTypeName","src":"1853:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2149,"name":"ElementaryTypeName","src":"1870:7:13"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2150,"name":"ElementaryTypeName","src":"1887:7:13"},{"attributes":{"name":"uint16","type":"uint16"},"id":2151,"name":"ElementaryTypeName","src":"1896:6:13"}],"id":2152,"name":"Mapping","src":"1879:24:13"}],"id":2153,"name":"Mapping","src":"1862:42:13"}],"id":2154,"name":"Mapping","src":"1845:60:13"}],"id":2155,"name":"VariableDeclaration","src":"1845:85:13"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":2573,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2320,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2156,"name":"ElementaryTypeName","src":"2877:7:13"}],"id":2157,"name":"VariableDeclaration","src":"2877:12:13"},{"attributes":{"constant":false,"name":"data","scope":2320,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2158,"name":"ElementaryTypeName","src":"2891:5:13"}],"id":2159,"name":"VariableDeclaration","src":"2891:19:13"}],"id":2160,"name":"ParameterList","src":"2876:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":2164,"name":"ParameterList","src":"2938:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2161,"name":"Identifier","src":"2921:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2157,"type":"bytes32","value":"node"},"id":2162,"name":"Identifier","src":"2932:4:13"}],"id":2163,"name":"ModifierInvocation","src":"2921:16:13"},{"children":[{"attributes":{"assignments":[2166]},"children":[{"attributes":{"constant":false,"name":"resource","scope":2319,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2165,"name":"ElementaryTypeName","src":"2948:6:13"}],"id":2166,"name":"VariableDeclaration","src":"2948:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2167,"name":"Literal","src":"2966:1:13"}],"id":2168,"name":"VariableDeclarationStatement","src":"2948:19:13"},{"attributes":{"assignments":[2170]},"children":[{"attributes":{"constant":false,"name":"offset","scope":2319,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2169,"name":"ElementaryTypeName","src":"2977:7:13"}],"id":2170,"name":"VariableDeclaration","src":"2977:14:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2171,"name":"Literal","src":"2994:1:13"}],"id":2172,"name":"VariableDeclarationStatement","src":"2977:18:13"},{"attributes":{"assignments":[2174],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":2319,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2173,"name":"ElementaryTypeName","src":"3005:5:13"}],"id":2174,"name":"VariableDeclaration","src":"3005:17:13"}],"id":2175,"name":"VariableDeclarationStatement","src":"3005:17:13"},{"attributes":{"assignments":[2177],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":2319,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2176,"name":"ElementaryTypeName","src":"3032:5:13"}],"id":2177,"name":"VariableDeclaration","src":"3032:18:13"}],"id":2178,"name":"VariableDeclarationStatement","src":"3032:18:13"},{"attributes":{"assignments":[2180],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":2319,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2179,"name":"ElementaryTypeName","src":"3060:7:13"}],"id":2180,"name":"VariableDeclaration","src":"3060:16:13"}],"id":2181,"name":"VariableDeclarationStatement","src":"3060:16:13"},{"children":[{"attributes":{"assignments":[2185]},"children":[{"attributes":{"constant":false,"name":"iter","scope":2296,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":5298,"type":"struct RRUtils.RRIterator"},"id":2184,"name":"UserDefinedTypeName","src":"3152:18:13"}],"id":2185,"name":"VariableDeclaration","src":"3152:30:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":5324,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2159,"type":"bytes calldata","value":"data"},"id":2186,"name":"Identifier","src":"3185:4:13"}],"id":2187,"name":"MemberAccess","src":"3185:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2188,"name":"Literal","src":"3201:1:13"}],"id":2189,"name":"FunctionCall","src":"3185:18:13"}],"id":2190,"name":"VariableDeclarationStatement","src":"3152:51:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":5339,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2191,"name":"Identifier","src":"3206:4:13"}],"id":2192,"name":"MemberAccess","src":"3206:9:13"}],"id":2193,"name":"FunctionCall","src":"3206:11:13"}],"id":2194,"name":"UnaryOperation","src":"3205:12:13"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":5441,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2195,"name":"Identifier","src":"3219:4:13"}],"id":2196,"name":"MemberAccess","src":"3219:9:13"}],"id":2197,"name":"FunctionCall","src":"3219:11:13"}],"id":2198,"name":"ExpressionStatement","src":"3219:11:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2199,"name":"Identifier","src":"3250:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2200,"name":"Literal","src":"3262:1:13"}],"id":2201,"name":"BinaryOperation","src":"3250:13:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2202,"name":"Identifier","src":"3283:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5289,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2203,"name":"Identifier","src":"3294:4:13"}],"id":2204,"name":"MemberAccess","src":"3294:12:13"}],"id":2205,"name":"Assignment","src":"3283:23:13"}],"id":2206,"name":"ExpressionStatement","src":"3283:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2207,"name":"Identifier","src":"3324:4:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":5462,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2208,"name":"Identifier","src":"3331:4:13"}],"id":2209,"name":"MemberAccess","src":"3331:9:13"}],"id":2210,"name":"FunctionCall","src":"3331:11:13"}],"id":2211,"name":"Assignment","src":"3324:18:13"}],"id":2212,"name":"ExpressionStatement","src":"3324:18:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2180,"type":"bytes32","value":"nameHash"},"id":2213,"name":"Identifier","src":"3360:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2214,"name":"Identifier","src":"3371:9:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":2215,"name":"Identifier","src":"3381:3:13"}],"id":2216,"name":"MemberAccess","src":"3381:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2217,"name":"Identifier","src":"3398:4:13"}],"id":2218,"name":"FunctionCall","src":"3381:22:13"}],"id":2219,"name":"FunctionCall","src":"3371:33:13"}],"id":2220,"name":"Assignment","src":"3360:44:13"}],"id":2221,"name":"ExpressionStatement","src":"3360:44:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2177,"type":"bytes memory","value":"value"},"id":2222,"name":"Identifier","src":"3422:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2223,"name":"ElementaryTypeNameExpression","src":"3430:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":5482,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2224,"name":"Identifier","src":"3436:4:13"}],"id":2225,"name":"MemberAccess","src":"3436:10:13"}],"id":2226,"name":"FunctionCall","src":"3436:12:13"}],"id":2227,"name":"FunctionCall","src":"3430:19:13"}],"id":2228,"name":"Assignment","src":"3422:27:13"}],"id":2229,"name":"ExpressionStatement","src":"3422:27:13"}],"id":2230,"name":"Block","src":"3265:199:13"},{"children":[{"attributes":{"assignments":[2232]},"children":[{"attributes":{"constant":false,"name":"newName","scope":2293,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2231,"name":"ElementaryTypeName","src":"3488:5:13"}],"id":2232,"name":"VariableDeclaration","src":"3488:20:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":5462,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2233,"name":"Identifier","src":"3511:4:13"}],"id":2234,"name":"MemberAccess","src":"3511:9:13"}],"id":2235,"name":"FunctionCall","src":"3511:11:13"}],"id":2236,"name":"VariableDeclarationStatement","src":"3488:34:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2237,"name":"Identifier","src":"3544:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5289,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2238,"name":"Identifier","src":"3556:4:13"}],"id":2239,"name":"MemberAccess","src":"3556:12:13"}],"id":2240,"name":"BinaryOperation","src":"3544:24:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6794,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2241,"name":"Identifier","src":"3573:4:13"}],"id":2242,"name":"MemberAccess","src":"3573:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2232,"type":"bytes memory","value":"newName"},"id":2243,"name":"Identifier","src":"3585:7:13"}],"id":2244,"name":"FunctionCall","src":"3573:20:13"}],"id":2245,"name":"UnaryOperation","src":"3572:21:13"}],"id":2246,"name":"BinaryOperation","src":"3544:49:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2572,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":2247,"name":"Identifier","src":"3617:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2157,"type":"bytes32","value":"node"},"id":2248,"name":"Identifier","src":"3629:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2249,"name":"Identifier","src":"3635:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2250,"name":"Identifier","src":"3641:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2159,"type":"bytes calldata","value":"data"},"id":2251,"name":"Identifier","src":"3651:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2252,"name":"Identifier","src":"3657:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2253,"name":"Identifier","src":"3665:4:13"}],"id":2254,"name":"MemberAccess","src":"3665:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2255,"name":"Identifier","src":"3679:6:13"}],"id":2256,"name":"BinaryOperation","src":"3665:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2177,"type":"bytes memory","value":"value"},"id":2257,"name":"Identifier","src":"3687:5:13"}],"id":2258,"name":"MemberAccess","src":"3687:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2259,"name":"Literal","src":"3703:1:13"}],"id":2260,"name":"BinaryOperation","src":"3687:17:13"}],"id":2261,"name":"FunctionCall","src":"3617:88:13"}],"id":2262,"name":"ExpressionStatement","src":"3617:88:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2263,"name":"Identifier","src":"3727:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5289,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2264,"name":"Identifier","src":"3738:4:13"}],"id":2265,"name":"MemberAccess","src":"3738:12:13"}],"id":2266,"name":"Assignment","src":"3727:23:13"}],"id":2267,"name":"ExpressionStatement","src":"3727:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2268,"name":"Identifier","src":"3772:6:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5287,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2269,"name":"Identifier","src":"3781:4:13"}],"id":2270,"name":"MemberAccess","src":"3781:11:13"}],"id":2271,"name":"Assignment","src":"3772:20:13"}],"id":2272,"name":"ExpressionStatement","src":"3772:20:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2273,"name":"Identifier","src":"3814:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2232,"type":"bytes memory","value":"newName"},"id":2274,"name":"Identifier","src":"3821:7:13"}],"id":2275,"name":"Assignment","src":"3814:14:13"}],"id":2276,"name":"ExpressionStatement","src":"3814:14:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2180,"type":"bytes32","value":"nameHash"},"id":2277,"name":"Identifier","src":"3850:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2278,"name":"Identifier","src":"3861:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2279,"name":"Identifier","src":"3871:4:13"}],"id":2280,"name":"FunctionCall","src":"3861:15:13"}],"id":2281,"name":"Assignment","src":"3850:26:13"}],"id":2282,"name":"ExpressionStatement","src":"3850:26:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2177,"type":"bytes memory","value":"value"},"id":2283,"name":"Identifier","src":"3898:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2284,"name":"ElementaryTypeNameExpression","src":"3906:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":5482,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":2285,"name":"Identifier","src":"3912:4:13"}],"id":2286,"name":"MemberAccess","src":"3912:10:13"}],"id":2287,"name":"FunctionCall","src":"3912:12:13"}],"id":2288,"name":"FunctionCall","src":"3906:19:13"}],"id":2289,"name":"Assignment","src":"3898:27:13"}],"id":2290,"name":"ExpressionStatement","src":"3898:27:13"}],"id":2291,"name":"Block","src":"3595:349:13"}],"id":2292,"name":"IfStatement","src":"3540:404:13"}],"id":2293,"name":"Block","src":"3470:488:13"}],"id":2294,"name":"IfStatement","src":"3246:712:13"}],"id":2295,"name":"Block","src":"3232:736:13"}],"id":2296,"name":"ForStatement","src":"3147:821:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2297,"name":"Identifier","src":"3981:4:13"}],"id":2298,"name":"MemberAccess","src":"3981:11:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2299,"name":"Literal","src":"3995:1:13"}],"id":2300,"name":"BinaryOperation","src":"3981:15:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":2572,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":2301,"name":"Identifier","src":"4012:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2157,"type":"bytes32","value":"node"},"id":2302,"name":"Identifier","src":"4024:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"bytes memory","value":"name"},"id":2303,"name":"Identifier","src":"4030:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2166,"type":"uint16","value":"resource"},"id":2304,"name":"Identifier","src":"4036:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2159,"type":"bytes calldata","value":"data"},"id":2305,"name":"Identifier","src":"4046:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2306,"name":"Identifier","src":"4052:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2159,"type":"bytes calldata","value":"data"},"id":2307,"name":"Identifier","src":"4060:4:13"}],"id":2308,"name":"MemberAccess","src":"4060:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"offset"},"id":2309,"name":"Identifier","src":"4074:6:13"}],"id":2310,"name":"BinaryOperation","src":"4060:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2177,"type":"bytes memory","value":"value"},"id":2311,"name":"Identifier","src":"4082:5:13"}],"id":2312,"name":"MemberAccess","src":"4082:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2313,"name":"Literal","src":"4098:1:13"}],"id":2314,"name":"BinaryOperation","src":"4082:17:13"}],"id":2315,"name":"FunctionCall","src":"4012:88:13"}],"id":2316,"name":"ExpressionStatement","src":"4012:88:13"}],"id":2317,"name":"Block","src":"3998:113:13"}],"id":2318,"name":"IfStatement","src":"3977:134:13"}],"id":2319,"name":"Block","src":"2938:1179:13"}],"id":2320,"name":"FunctionDefinition","src":"2854:1263:13"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":2573,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2344,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2321,"name":"ElementaryTypeName","src":"4538:7:13"}],"id":2322,"name":"VariableDeclaration","src":"4538:12:13"},{"attributes":{"constant":false,"name":"name","scope":2344,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2323,"name":"ElementaryTypeName","src":"4552:7:13"}],"id":2324,"name":"VariableDeclaration","src":"4552:12:13"},{"attributes":{"constant":false,"name":"resource","scope":2344,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2325,"name":"ElementaryTypeName","src":"4566:6:13"}],"id":2326,"name":"VariableDeclaration","src":"4566:15:13"}],"id":2327,"name":"ParameterList","src":"4537:45:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2344,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2328,"name":"ElementaryTypeName","src":"4604:5:13"}],"id":2329,"name":"VariableDeclaration","src":"4604:12:13"}],"id":2330,"name":"ParameterList","src":"4603:14:13"},{"children":[{"attributes":{"functionReturnParameters":2330},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2331,"name":"Identifier","src":"4635:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2322,"type":"bytes32","value":"node"},"id":2332,"name":"Identifier","src":"4643:4:13"}],"id":2333,"name":"IndexAccess","src":"4635:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2137,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2334,"name":"Identifier","src":"4649:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2322,"type":"bytes32","value":"node"},"id":2335,"name":"Identifier","src":"4658:4:13"}],"id":2336,"name":"IndexAccess","src":"4649:14:13"}],"id":2337,"name":"IndexAccess","src":"4635:29:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2324,"type":"bytes32","value":"name"},"id":2338,"name":"Identifier","src":"4665:4:13"}],"id":2339,"name":"IndexAccess","src":"4635:35:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2326,"type":"uint16","value":"resource"},"id":2340,"name":"Identifier","src":"4671:8:13"}],"id":2341,"name":"IndexAccess","src":"4635:45:13"}],"id":2342,"name":"Return","src":"4628:52:13"}],"id":2343,"name":"Block","src":"4618:69:13"}],"id":2344,"name":"FunctionDefinition","src":"4519:168:13"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":2573,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2367,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2345,"name":"ElementaryTypeName","src":"4924:7:13"}],"id":2346,"name":"VariableDeclaration","src":"4924:12:13"},{"attributes":{"constant":false,"name":"name","scope":2367,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2347,"name":"ElementaryTypeName","src":"4938:7:13"}],"id":2348,"name":"VariableDeclaration","src":"4938:12:13"}],"id":2349,"name":"ParameterList","src":"4923:28:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2367,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2350,"name":"ElementaryTypeName","src":"4973:4:13"}],"id":2351,"name":"VariableDeclaration","src":"4973:4:13"}],"id":2352,"name":"ParameterList","src":"4972:6:13"},{"children":[{"attributes":{"functionReturnParameters":2352},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2155,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2353,"name":"Identifier","src":"4997:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"bytes32","value":"node"},"id":2354,"name":"Identifier","src":"5014:4:13"}],"id":2355,"name":"IndexAccess","src":"4997:22:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2137,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2356,"name":"Identifier","src":"5020:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"bytes32","value":"node"},"id":2357,"name":"Identifier","src":"5029:4:13"}],"id":2358,"name":"IndexAccess","src":"5020:14:13"}],"id":2359,"name":"IndexAccess","src":"4997:38:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"bytes32","value":"name"},"id":2360,"name":"Identifier","src":"5036:4:13"}],"id":2361,"name":"IndexAccess","src":"4997:44:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2362,"name":"Literal","src":"5045:1:13"}],"id":2363,"name":"BinaryOperation","src":"4997:49:13"}],"id":2364,"name":"TupleExpression","src":"4996:51:13"}],"id":2365,"name":"Return","src":"4989:58:13"}],"id":2366,"name":"Block","src":"4979:75:13"}],"id":2367,"name":"FunctionDefinition","src":"4901:153:13"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":2573,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2385,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2368,"name":"ElementaryTypeName","src":"5215:7:13"}],"id":2369,"name":"VariableDeclaration","src":"5215:12:13"}],"id":2370,"name":"ParameterList","src":"5214:14:13"},{"attributes":{"parameters":[null]},"children":[],"id":2374,"name":"ParameterList","src":"5253:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2371,"name":"Identifier","src":"5236:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2369,"type":"bytes32","value":"node"},"id":2372,"name":"Identifier","src":"5247:4:13"}],"id":2373,"name":"ModifierInvocation","src":"5236:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2137,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2375,"name":"Identifier","src":"5263:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2369,"type":"bytes32","value":"node"},"id":2376,"name":"Identifier","src":"5272:4:13"}],"id":2377,"name":"IndexAccess","src":"5263:14:13"}],"id":2378,"name":"UnaryOperation","src":"5263:16:13"}],"id":2379,"name":"ExpressionStatement","src":"5263:16:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2121,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":2380,"name":"Identifier","src":"5294:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2369,"type":"bytes32","value":"node"},"id":2381,"name":"Identifier","src":"5309:4:13"}],"id":2382,"name":"FunctionCall","src":"5294:20:13"}],"id":2383,"name":"EmitStatement","src":"5289:25:13"}],"id":2384,"name":"Block","src":"5253:68:13"}],"id":2385,"name":"FunctionDefinition","src":"5193:128:13"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":2573,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2414,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2386,"name":"ElementaryTypeName","src":"5562:7:13"}],"id":2387,"name":"VariableDeclaration","src":"5562:12:13"},{"attributes":{"constant":false,"name":"hash","scope":2414,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2388,"name":"ElementaryTypeName","src":"5576:5:13"}],"id":2389,"name":"VariableDeclaration","src":"5576:19:13"}],"id":2390,"name":"ParameterList","src":"5561:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":2394,"name":"ParameterList","src":"5623:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2391,"name":"Identifier","src":"5606:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes32","value":"node"},"id":2392,"name":"Identifier","src":"5617:4:13"}],"id":2393,"name":"ModifierInvocation","src":"5606:16:13"},{"children":[{"attributes":{"assignments":[2396]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":2413,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2395,"name":"ElementaryTypeName","src":"5633:5:13"}],"id":2396,"name":"VariableDeclaration","src":"5633:20:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2133,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2397,"name":"Identifier","src":"5656:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes32","value":"node"},"id":2398,"name":"Identifier","src":"5667:4:13"}],"id":2399,"name":"IndexAccess","src":"5656:16:13"}],"id":2400,"name":"VariableDeclarationStatement","src":"5633:39:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2133,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2401,"name":"Identifier","src":"5682:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes32","value":"node"},"id":2402,"name":"Identifier","src":"5693:4:13"}],"id":2403,"name":"IndexAccess","src":"5682:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2389,"type":"bytes calldata","value":"hash"},"id":2404,"name":"Identifier","src":"5701:4:13"}],"id":2405,"name":"Assignment","src":"5682:23:13"}],"id":2406,"name":"ExpressionStatement","src":"5682:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2129,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":2407,"name":"Identifier","src":"5720:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"bytes32","value":"node"},"id":2408,"name":"Identifier","src":"5739:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2396,"type":"bytes memory","value":"oldhash"},"id":2409,"name":"Identifier","src":"5745:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2389,"type":"bytes calldata","value":"hash"},"id":2410,"name":"Identifier","src":"5754:4:13"}],"id":2411,"name":"FunctionCall","src":"5720:39:13"}],"id":2412,"name":"EmitStatement","src":"5715:44:13"}],"id":2413,"name":"Block","src":"5623:143:13"}],"id":2414,"name":"FunctionDefinition","src":"5541:225:13"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":2573,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2426,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2415,"name":"ElementaryTypeName","src":"5938:7:13"}],"id":2416,"name":"VariableDeclaration","src":"5938:12:13"}],"id":2417,"name":"ParameterList","src":"5937:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2426,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2418,"name":"ElementaryTypeName","src":"5975:5:13"}],"id":2419,"name":"VariableDeclaration","src":"5975:12:13"}],"id":2420,"name":"ParameterList","src":"5974:14:13"},{"children":[{"attributes":{"functionReturnParameters":2420},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2133,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":2421,"name":"Identifier","src":"6006:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2416,"type":"bytes32","value":"node"},"id":2422,"name":"Identifier","src":"6017:4:13"}],"id":2423,"name":"IndexAccess","src":"6006:16:13"}],"id":2424,"name":"Return","src":"5999:23:13"}],"id":2425,"name":"Block","src":"5989:40:13"}],"id":2426,"name":"FunctionDefinition","src":"5920:109:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2573,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2447,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2427,"name":"ElementaryTypeName","src":"6062:6:13"}],"id":2428,"name":"VariableDeclaration","src":"6062:18:13"}],"id":2429,"name":"ParameterList","src":"6061:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":2447,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2430,"name":"ElementaryTypeName","src":"6102:4:13"}],"id":2431,"name":"VariableDeclaration","src":"6102:4:13"}],"id":2432,"name":"ParameterList","src":"6101:6:13"},{"children":[{"attributes":{"functionReturnParameters":2432},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2428,"type":"bytes4","value":"interfaceID"},"id":2433,"name":"Identifier","src":"6125:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":2434,"name":"Identifier","src":"6140:23:13"}],"id":2435,"name":"BinaryOperation","src":"6125:38:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2428,"type":"bytes4","value":"interfaceID"},"id":2436,"name":"Identifier","src":"6182:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2099,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":2437,"name":"Identifier","src":"6197:21:13"}],"id":2438,"name":"BinaryOperation","src":"6182:36:13"}],"id":2439,"name":"BinaryOperation","src":"6125:93:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7460,"type":"contract super DNSResolver","value":"super"},"id":2440,"name":"Identifier","src":"6237:5:13"}],"id":2441,"name":"MemberAccess","src":"6237:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2428,"type":"bytes4","value":"interfaceID"},"id":2442,"name":"Identifier","src":"6261:11:13"}],"id":2443,"name":"FunctionCall","src":"6237:36:13"}],"id":2444,"name":"BinaryOperation","src":"6125:148:13"}],"id":2445,"name":"Return","src":"6118:155:13"}],"id":2446,"name":"Block","src":"6108:172:13"}],"id":2447,"name":"FunctionDefinition","src":"6035:245:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":2573,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2572,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2448,"name":"ElementaryTypeName","src":"6316:7:13"}],"id":2449,"name":"VariableDeclaration","src":"6316:12:13"},{"attributes":{"constant":false,"name":"name","scope":2572,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2450,"name":"ElementaryTypeName","src":"6338:5:13"}],"id":2451,"name":"VariableDeclaration","src":"6338:17:13"},{"attributes":{"constant":false,"name":"resource","scope":2572,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":2452,"name":"ElementaryTypeName","src":"6365:6:13"}],"id":2453,"name":"VariableDeclaration","src":"6365:15:13"},{"attributes":{"constant":false,"name":"data","scope":2572,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2454,"name":"ElementaryTypeName","src":"6390:5:13"}],"id":2455,"name":"VariableDeclaration","src":"6390:17:13"},{"attributes":{"constant":false,"name":"offset","scope":2572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2456,"name":"ElementaryTypeName","src":"6417:7:13"}],"id":2457,"name":"VariableDeclaration","src":"6417:14:13"},{"attributes":{"constant":false,"name":"size","scope":2572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2458,"name":"ElementaryTypeName","src":"6441:7:13"}],"id":2459,"name":"VariableDeclaration","src":"6441:12:13"},{"attributes":{"constant":false,"name":"deleteRecord","scope":2572,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2460,"name":"ElementaryTypeName","src":"6463:4:13"}],"id":2461,"name":"VariableDeclaration","src":"6463:17:13"}],"id":2462,"name":"ParameterList","src":"6306:175:13"},{"attributes":{"parameters":[null]},"children":[],"id":2463,"name":"ParameterList","src":"6494:0:13"},{"children":[{"attributes":{"assignments":[2465]},"children":[{"attributes":{"constant":false,"name":"version","scope":2571,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2464,"name":"ElementaryTypeName","src":"6504:7:13"}],"id":2465,"name":"VariableDeclaration","src":"6504:15:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2137,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":2466,"name":"Identifier","src":"6522:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2467,"name":"Identifier","src":"6531:4:13"}],"id":2468,"name":"IndexAccess","src":"6522:14:13"}],"id":2469,"name":"VariableDeclarationStatement","src":"6504:32:13"},{"attributes":{"assignments":[2471]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":2571,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2470,"name":"ElementaryTypeName","src":"6546:7:13"}],"id":2471,"name":"VariableDeclaration","src":"6546:16:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2472,"name":"Identifier","src":"6565:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2451,"type":"bytes memory","value":"name"},"id":2473,"name":"Identifier","src":"6575:4:13"}],"id":2474,"name":"FunctionCall","src":"6565:15:13"}],"id":2475,"name":"VariableDeclarationStatement","src":"6546:34:13"},{"attributes":{"assignments":[2477]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":2571,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2476,"name":"ElementaryTypeName","src":"6590:5:13"}],"id":2477,"name":"VariableDeclaration","src":"6590:19:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":7001,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2455,"type":"bytes memory","value":"data"},"id":2478,"name":"Identifier","src":"6612:4:13"}],"id":2479,"name":"MemberAccess","src":"6612:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"uint256","value":"offset"},"id":2480,"name":"Identifier","src":"6627:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"uint256","value":"size"},"id":2481,"name":"Identifier","src":"6635:4:13"}],"id":2482,"name":"FunctionCall","src":"6612:28:13"}],"id":2483,"name":"VariableDeclarationStatement","src":"6590:50:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"bool","value":"deleteRecord"},"id":2484,"name":"Identifier","src":"6654:12:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2485,"name":"Identifier","src":"6686:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2486,"name":"Identifier","src":"6694:4:13"}],"id":2487,"name":"IndexAccess","src":"6686:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2488,"name":"Identifier","src":"6700:7:13"}],"id":2489,"name":"IndexAccess","src":"6686:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2490,"name":"Identifier","src":"6709:8:13"}],"id":2491,"name":"IndexAccess","src":"6686:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2492,"name":"Identifier","src":"6719:8:13"}],"id":2493,"name":"IndexAccess","src":"6686:42:13"}],"id":2494,"name":"MemberAccess","src":"6686:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2495,"name":"Literal","src":"6739:1:13"}],"id":2496,"name":"BinaryOperation","src":"6686:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2155,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2497,"name":"Identifier","src":"6760:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2498,"name":"Identifier","src":"6777:4:13"}],"id":2501,"name":"IndexAccess","src":"6760:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2499,"name":"Identifier","src":"6783:7:13"}],"id":2502,"name":"IndexAccess","src":"6760:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2500,"name":"Identifier","src":"6792:8:13"}],"id":2503,"name":"IndexAccess","src":"6760:41:13"}],"id":2504,"name":"UnaryOperation","src":"6760:43:13"}],"id":2505,"name":"ExpressionStatement","src":"6760:43:13"}],"id":2506,"name":"Block","src":"6742:76:13"}],"id":2507,"name":"IfStatement","src":"6682:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2508,"name":"Identifier","src":"6838:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2509,"name":"Identifier","src":"6846:4:13"}],"id":2510,"name":"IndexAccess","src":"6838:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2511,"name":"Identifier","src":"6852:7:13"}],"id":2512,"name":"IndexAccess","src":"6838:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2513,"name":"Identifier","src":"6861:8:13"}],"id":2514,"name":"IndexAccess","src":"6838:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2515,"name":"Identifier","src":"6871:8:13"}],"id":2516,"name":"IndexAccess","src":"6838:42:13"}],"id":2517,"name":"TupleExpression","src":"6837:44:13"}],"id":2518,"name":"UnaryOperation","src":"6831:50:13"}],"id":2519,"name":"ExpressionStatement","src":"6831:50:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":2117,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":2520,"name":"Identifier","src":"6900:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2521,"name":"Identifier","src":"6917:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2451,"type":"bytes memory","value":"name"},"id":2522,"name":"Identifier","src":"6923:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2523,"name":"Identifier","src":"6929:8:13"}],"id":2524,"name":"FunctionCall","src":"6900:38:13"}],"id":2525,"name":"EmitStatement","src":"6895:43:13"}],"id":2526,"name":"Block","src":"6668:281:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2527,"name":"Identifier","src":"6973:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2528,"name":"Identifier","src":"6981:4:13"}],"id":2529,"name":"IndexAccess","src":"6973:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2530,"name":"Identifier","src":"6987:7:13"}],"id":2531,"name":"IndexAccess","src":"6973:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2532,"name":"Identifier","src":"6996:8:13"}],"id":2533,"name":"IndexAccess","src":"6973:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2534,"name":"Identifier","src":"7006:8:13"}],"id":2535,"name":"IndexAccess","src":"6973:42:13"}],"id":2536,"name":"MemberAccess","src":"6973:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2537,"name":"Literal","src":"7026:1:13"}],"id":2538,"name":"BinaryOperation","src":"6973:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2155,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":2539,"name":"Identifier","src":"7047:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2540,"name":"Identifier","src":"7064:4:13"}],"id":2543,"name":"IndexAccess","src":"7047:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2541,"name":"Identifier","src":"7070:7:13"}],"id":2544,"name":"IndexAccess","src":"7047:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2542,"name":"Identifier","src":"7079:8:13"}],"id":2545,"name":"IndexAccess","src":"7047:41:13"}],"id":2546,"name":"UnaryOperation","src":"7047:43:13"}],"id":2547,"name":"ExpressionStatement","src":"7047:43:13"}],"id":2548,"name":"Block","src":"7029:76:13"}],"id":2549,"name":"IfStatement","src":"6969:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":2550,"name":"Identifier","src":"7118:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2551,"name":"Identifier","src":"7126:4:13"}],"id":2555,"name":"IndexAccess","src":"7118:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2465,"type":"uint256","value":"version"},"id":2552,"name":"Identifier","src":"7132:7:13"}],"id":2556,"name":"IndexAccess","src":"7118:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2471,"type":"bytes32","value":"nameHash"},"id":2553,"name":"Identifier","src":"7141:8:13"}],"id":2557,"name":"IndexAccess","src":"7118:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2554,"name":"Identifier","src":"7151:8:13"}],"id":2558,"name":"IndexAccess","src":"7118:42:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2477,"type":"bytes memory","value":"rrData"},"id":2559,"name":"Identifier","src":"7163:6:13"}],"id":2560,"name":"Assignment","src":"7118:51:13"}],"id":2561,"name":"ExpressionStatement","src":"7118:51:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2109,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":2562,"name":"Identifier","src":"7188:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"bytes32","value":"node"},"id":2563,"name":"Identifier","src":"7205:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2451,"type":"bytes memory","value":"name"},"id":2564,"name":"Identifier","src":"7211:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2453,"type":"uint16","value":"resource"},"id":2565,"name":"Identifier","src":"7217:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2477,"type":"bytes memory","value":"rrData"},"id":2566,"name":"Identifier","src":"7227:6:13"}],"id":2567,"name":"FunctionCall","src":"7188:46:13"}],"id":2568,"name":"EmitStatement","src":"7183:51:13"}],"id":2569,"name":"Block","src":"6955:290:13"}],"id":2570,"name":"IfStatement","src":"6650:595:13"}],"id":2571,"name":"Block","src":"6494:757:13"}],"id":2572,"name":"FunctionDefinition","src":"6286:965:13"}],"id":2573,"name":"ContractDefinition","src":"81:7172:13"}],"id":2574,"name":"SourceUnit","src":"0:7253:13"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[2760]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2575,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2761,"symbolAliases":[null],"unitAlias":""},"id":2576,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":2013,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":2761,"symbolAliases":[null],"unitAlias":""},"id":2577,"name":"ImportDirective","src":"55:28:14"},{"attributes":{"contractDependencies":[2012,5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2760,2012,5159],"name":"InterfaceResolver","scope":2761},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2578,"name":"UserDefinedTypeName","src":"115:12:14"}],"id":2579,"name":"InheritanceSpecifier","src":"115:12:14"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":2012,"type":"contract AddrResolver"},"id":2580,"name":"UserDefinedTypeName","src":"129:12:14"}],"id":2581,"name":"InheritanceSpecifier","src":"129:12:14"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":2760,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2582,"name":"ElementaryTypeName","src":"148:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":2583,"name":"ElementaryTypeNameExpression","src":"197:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2584,"name":"Identifier","src":"204:9:14"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":2585,"name":"Literal","src":"214:38:14"}],"id":2586,"name":"FunctionCall","src":"204:49:14"}],"id":2587,"name":"FunctionCall","src":"197:57:14"}],"id":2588,"name":"VariableDeclaration","src":"148:106:14"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":2760,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2589,"name":"ElementaryTypeName","src":"260:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":2590,"name":"Literal","src":"304:10:14"}],"id":2591,"name":"VariableDeclaration","src":"260:54:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2599,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2592,"name":"ElementaryTypeName","src":"344:7:14"}],"id":2593,"name":"VariableDeclaration","src":"344:20:14"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":2599,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2594,"name":"ElementaryTypeName","src":"366:6:14"}],"id":2595,"name":"VariableDeclaration","src":"366:26:14"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":2599,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2596,"name":"ElementaryTypeName","src":"394:7:14"}],"id":2597,"name":"VariableDeclaration","src":"394:19:14"}],"id":2598,"name":"ParameterList","src":"343:71:14"}],"id":2599,"name":"EventDefinition","src":"321:94:14"},{"attributes":{"constant":false,"name":"interfaces","scope":2760,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2600,"name":"ElementaryTypeName","src":"429:7:14"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2601,"name":"ElementaryTypeName","src":"446:6:14"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2602,"name":"ElementaryTypeName","src":"454:7:14"}],"id":2603,"name":"Mapping","src":"438:24:14"}],"id":2604,"name":"Mapping","src":"421:42:14"}],"id":2605,"name":"VariableDeclaration","src":"421:53:14"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":2760,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2632,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2606,"name":"ElementaryTypeName","src":"880:7:14"}],"id":2607,"name":"VariableDeclaration","src":"880:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":2632,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2608,"name":"ElementaryTypeName","src":"894:6:14"}],"id":2609,"name":"VariableDeclaration","src":"894:18:14"},{"attributes":{"constant":false,"name":"implementer","scope":2632,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2610,"name":"ElementaryTypeName","src":"914:7:14"}],"id":2611,"name":"VariableDeclaration","src":"914:19:14"}],"id":2612,"name":"ParameterList","src":"879:55:14"},{"attributes":{"parameters":[null]},"children":[],"id":2616,"name":"ParameterList","src":"961:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2613,"name":"Identifier","src":"944:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2607,"type":"bytes32","value":"node"},"id":2614,"name":"Identifier","src":"955:4:14"}],"id":2615,"name":"ModifierInvocation","src":"944:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2605,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":2617,"name":"Identifier","src":"971:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2607,"type":"bytes32","value":"node"},"id":2618,"name":"Identifier","src":"982:4:14"}],"id":2620,"name":"IndexAccess","src":"971:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2609,"type":"bytes4","value":"interfaceID"},"id":2619,"name":"Identifier","src":"988:11:14"}],"id":2621,"name":"IndexAccess","src":"971:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2611,"type":"address","value":"implementer"},"id":2622,"name":"Identifier","src":"1003:11:14"}],"id":2623,"name":"Assignment","src":"971:43:14"}],"id":2624,"name":"ExpressionStatement","src":"971:43:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2599,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":2625,"name":"Identifier","src":"1029:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2607,"type":"bytes32","value":"node"},"id":2626,"name":"Identifier","src":"1046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2609,"type":"bytes4","value":"interfaceID"},"id":2627,"name":"Identifier","src":"1052:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2611,"type":"address","value":"implementer"},"id":2628,"name":"Identifier","src":"1065:11:14"}],"id":2629,"name":"FunctionCall","src":"1029:48:14"}],"id":2630,"name":"EmitStatement","src":"1024:53:14"}],"id":2631,"name":"Block","src":"961:123:14"}],"id":2632,"name":"FunctionDefinition","src":"858:226:14"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":2760,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2742,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2633,"name":"ElementaryTypeName","src":"1751:7:14"}],"id":2634,"name":"VariableDeclaration","src":"1751:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":2742,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2635,"name":"ElementaryTypeName","src":"1765:6:14"}],"id":2636,"name":"VariableDeclaration","src":"1765:18:14"}],"id":2637,"name":"ParameterList","src":"1750:34:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":2742,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2638,"name":"ElementaryTypeName","src":"1808:7:14"}],"id":2639,"name":"VariableDeclaration","src":"1808:7:14"}],"id":2640,"name":"ParameterList","src":"1807:9:14"},{"children":[{"attributes":{"assignments":[2642]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":2741,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2641,"name":"ElementaryTypeName","src":"1827:7:14"}],"id":2642,"name":"VariableDeclaration","src":"1827:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2605,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":2643,"name":"Identifier","src":"1849:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"bytes32","value":"node"},"id":2644,"name":"Identifier","src":"1860:4:14"}],"id":2645,"name":"IndexAccess","src":"1849:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2636,"type":"bytes4","value":"interfaceID"},"id":2646,"name":"Identifier","src":"1866:11:14"}],"id":2647,"name":"IndexAccess","src":"1849:29:14"}],"id":2648,"name":"VariableDeclarationStatement","src":"1827:51:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"address","value":"implementer"},"id":2649,"name":"Identifier","src":"1891:11:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2650,"name":"ElementaryTypeNameExpression","src":"1906:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2651,"name":"Literal","src":"1914:1:14"}],"id":2652,"name":"FunctionCall","src":"1906:10:14"}],"id":2653,"name":"BinaryOperation","src":"1891:25:14"},{"children":[{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"address","value":"implementer"},"id":2654,"name":"Identifier","src":"1939:11:14"}],"id":2655,"name":"Return","src":"1932:18:14"}],"id":2656,"name":"Block","src":"1918:43:14"}],"id":2657,"name":"IfStatement","src":"1888:73:14"},{"attributes":{"assignments":[2659]},"children":[{"attributes":{"constant":false,"name":"a","scope":2741,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2658,"name":"ElementaryTypeName","src":"1971:7:14"}],"id":2659,"name":"VariableDeclaration","src":"1971:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[1935,1990],"referencedDeclaration":1935,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":2660,"name":"Identifier","src":"1983:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"bytes32","value":"node"},"id":2661,"name":"Identifier","src":"1988:4:14"}],"id":2662,"name":"FunctionCall","src":"1983:10:14"}],"id":2663,"name":"VariableDeclarationStatement","src":"1971:22:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2659,"type":"address","value":"a"},"id":2664,"name":"Identifier","src":"2006:1:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2665,"name":"ElementaryTypeNameExpression","src":"2011:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2666,"name":"Literal","src":"2019:1:14"}],"id":2667,"name":"FunctionCall","src":"2011:10:14"}],"id":2668,"name":"BinaryOperation","src":"2006:15:14"},{"children":[{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2669,"name":"ElementaryTypeNameExpression","src":"2044:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2670,"name":"Literal","src":"2052:1:14"}],"id":2671,"name":"FunctionCall","src":"2044:10:14"}],"id":2672,"name":"Return","src":"2037:17:14"}],"id":2673,"name":"Block","src":"2023:42:14"}],"id":2674,"name":"IfStatement","src":"2003:62:14"},{"attributes":{"assignments":[2676,2678]},"children":[{"attributes":{"constant":false,"name":"success","scope":2741,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2675,"name":"ElementaryTypeName","src":"2076:4:14"}],"id":2676,"name":"VariableDeclaration","src":"2076:12:14"},{"attributes":{"constant":false,"name":"returnData","scope":2741,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2677,"name":"ElementaryTypeName","src":"2090:5:14"}],"id":2678,"name":"VariableDeclaration","src":"2090:23:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2659,"type":"address","value":"a"},"id":2679,"name":"Identifier","src":"2117:1:14"}],"id":2680,"name":"MemberAccess","src":"2117:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":2681,"name":"Identifier","src":"2130:3:14"}],"id":2682,"name":"MemberAccess","src":"2130:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":2683,"name":"Literal","src":"2154:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"bytes4","value":"INTERFACE_META_ID"},"id":2684,"name":"Identifier","src":"2183:17:14"}],"id":2685,"name":"FunctionCall","src":"2130:71:14"}],"id":2686,"name":"FunctionCall","src":"2117:85:14"}],"id":2687,"name":"VariableDeclarationStatement","src":"2075:127:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2676,"type":"bool","value":"success"},"id":2688,"name":"Identifier","src":"2216:7:14"}],"id":2689,"name":"UnaryOperation","src":"2215:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2690,"name":"Identifier","src":"2227:10:14"}],"id":2691,"name":"MemberAccess","src":"2227:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2692,"name":"Literal","src":"2247:2:14"}],"id":2693,"name":"BinaryOperation","src":"2227:22:14"}],"id":2694,"name":"BinaryOperation","src":"2215:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2695,"name":"Identifier","src":"2253:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2696,"name":"Literal","src":"2264:2:14"}],"id":2697,"name":"IndexAccess","src":"2253:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2698,"name":"Literal","src":"2271:1:14"}],"id":2699,"name":"BinaryOperation","src":"2253:19:14"}],"id":2700,"name":"BinaryOperation","src":"2215:57:14"},{"children":[{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2701,"name":"ElementaryTypeNameExpression","src":"2342:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2702,"name":"Literal","src":"2350:1:14"}],"id":2703,"name":"FunctionCall","src":"2342:10:14"}],"id":2704,"name":"Return","src":"2335:17:14"}],"id":2705,"name":"Block","src":"2274:89:14"}],"id":2706,"name":"IfStatement","src":"2212:151:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2676,"type":"bool","value":"success"},"id":2707,"name":"Identifier","src":"2374:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2708,"name":"Identifier","src":"2383:10:14"}],"id":2709,"name":"TupleExpression","src":"2373:21:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2659,"type":"address","value":"a"},"id":2710,"name":"Identifier","src":"2397:1:14"}],"id":2711,"name":"MemberAccess","src":"2397:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"abi","value":"abi"},"id":2712,"name":"Identifier","src":"2410:3:14"}],"id":2713,"name":"MemberAccess","src":"2410:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":2714,"name":"Literal","src":"2434:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2636,"type":"bytes4","value":"interfaceID"},"id":2715,"name":"Identifier","src":"2463:11:14"}],"id":2716,"name":"FunctionCall","src":"2410:65:14"}],"id":2717,"name":"FunctionCall","src":"2397:79:14"}],"id":2718,"name":"Assignment","src":"2373:103:14"}],"id":2719,"name":"ExpressionStatement","src":"2373:103:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2676,"type":"bool","value":"success"},"id":2720,"name":"Identifier","src":"2490:7:14"}],"id":2721,"name":"UnaryOperation","src":"2489:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2722,"name":"Identifier","src":"2501:10:14"}],"id":2723,"name":"MemberAccess","src":"2501:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2724,"name":"Literal","src":"2521:2:14"}],"id":2725,"name":"BinaryOperation","src":"2501:22:14"}],"id":2726,"name":"BinaryOperation","src":"2489:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"bytes memory","value":"returnData"},"id":2727,"name":"Identifier","src":"2527:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2728,"name":"Literal","src":"2538:2:14"}],"id":2729,"name":"IndexAccess","src":"2527:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2730,"name":"Literal","src":"2545:1:14"}],"id":2731,"name":"BinaryOperation","src":"2527:19:14"}],"id":2732,"name":"BinaryOperation","src":"2489:57:14"},{"children":[{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2733,"name":"ElementaryTypeNameExpression","src":"2628:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2734,"name":"Literal","src":"2636:1:14"}],"id":2735,"name":"FunctionCall","src":"2628:10:14"}],"id":2736,"name":"Return","src":"2621:17:14"}],"id":2737,"name":"Block","src":"2548:101:14"}],"id":2738,"name":"IfStatement","src":"2486:163:14"},{"attributes":{"functionReturnParameters":2640},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2659,"type":"address","value":"a"},"id":2739,"name":"Identifier","src":"2666:1:14"}],"id":2740,"name":"Return","src":"2659:8:14"}],"id":2741,"name":"Block","src":"1817:857:14"}],"id":2742,"name":"FunctionDefinition","src":"1721:953:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2760,"stateMutability":"pure","superFunction":2011,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2759,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2743,"name":"ElementaryTypeName","src":"2707:6:14"}],"id":2744,"name":"VariableDeclaration","src":"2707:18:14"}],"id":2745,"name":"ParameterList","src":"2706:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":2759,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2746,"name":"ElementaryTypeName","src":"2747:4:14"}],"id":2747,"name":"VariableDeclaration","src":"2747:4:14"}],"id":2748,"name":"ParameterList","src":"2746:6:14"},{"children":[{"attributes":{"functionReturnParameters":2748},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"bytes4","value":"interfaceID"},"id":2749,"name":"Identifier","src":"2770:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2588,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":2750,"name":"Identifier","src":"2785:22:14"}],"id":2751,"name":"BinaryOperation","src":"2770:37:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":2011,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7462,"type":"contract super InterfaceResolver","value":"super"},"id":2752,"name":"Identifier","src":"2811:5:14"}],"id":2753,"name":"MemberAccess","src":"2811:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"bytes4","value":"interfaceID"},"id":2754,"name":"Identifier","src":"2835:11:14"}],"id":2755,"name":"FunctionCall","src":"2811:36:14"}],"id":2756,"name":"BinaryOperation","src":"2770:77:14"}],"id":2757,"name":"Return","src":"2763:84:14"}],"id":2758,"name":"Block","src":"2753:101:14"}],"id":2759,"name":"FunctionDefinition","src":"2680:174:14"}],"id":2760,"name":"ContractDefinition","src":"85:2771:14"}],"id":2761,"name":"SourceUnit","src":"0:2857:14"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[2830]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2762,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2831,"symbolAliases":[null],"unitAlias":""},"id":2763,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2830,5159],"name":"NameResolver","scope":2831},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2764,"name":"UserDefinedTypeName","src":"81:12:15"}],"id":2765,"name":"InheritanceSpecifier","src":"81:12:15"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":2830,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2766,"name":"ElementaryTypeName","src":"100:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":2767,"name":"Literal","src":"144:10:15"}],"id":2768,"name":"VariableDeclaration","src":"100:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2774,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2769,"name":"ElementaryTypeName","src":"179:7:15"}],"id":2770,"name":"VariableDeclaration","src":"179:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":2774,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2771,"name":"ElementaryTypeName","src":"201:6:15"}],"id":2772,"name":"VariableDeclaration","src":"201:11:15"}],"id":2773,"name":"ParameterList","src":"178:35:15"}],"id":2774,"name":"EventDefinition","src":"161:53:15"},{"attributes":{"constant":false,"name":"names","scope":2830,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2775,"name":"ElementaryTypeName","src":"228:7:15"},{"attributes":{"name":"string","type":"string"},"id":2776,"name":"ElementaryTypeName","src":"237:6:15"}],"id":2777,"name":"Mapping","src":"220:24:15"}],"id":2778,"name":"VariableDeclaration","src":"220:30:15"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":2830,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2800,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2779,"name":"ElementaryTypeName","src":"509:7:15"}],"id":2780,"name":"VariableDeclaration","src":"509:12:15"},{"attributes":{"constant":false,"name":"name","scope":2800,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2781,"name":"ElementaryTypeName","src":"523:6:15"}],"id":2782,"name":"VariableDeclaration","src":"523:20:15"}],"id":2783,"name":"ParameterList","src":"508:36:15"},{"attributes":{"parameters":[null]},"children":[],"id":2787,"name":"ParameterList","src":"571:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2784,"name":"Identifier","src":"554:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2780,"type":"bytes32","value":"node"},"id":2785,"name":"Identifier","src":"565:4:15"}],"id":2786,"name":"ModifierInvocation","src":"554:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":2788,"name":"Identifier","src":"581:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2780,"type":"bytes32","value":"node"},"id":2789,"name":"Identifier","src":"587:4:15"}],"id":2790,"name":"IndexAccess","src":"581:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"string calldata","value":"name"},"id":2791,"name":"Identifier","src":"595:4:15"}],"id":2792,"name":"Assignment","src":"581:18:15"}],"id":2793,"name":"ExpressionStatement","src":"581:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2774,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":2794,"name":"Identifier","src":"614:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2780,"type":"bytes32","value":"node"},"id":2795,"name":"Identifier","src":"626:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"string calldata","value":"name"},"id":2796,"name":"Identifier","src":"632:4:15"}],"id":2797,"name":"FunctionCall","src":"614:23:15"}],"id":2798,"name":"EmitStatement","src":"609:28:15"}],"id":2799,"name":"Block","src":"571:73:15"}],"id":2800,"name":"FunctionDefinition","src":"492:152:15"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":2830,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2812,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2801,"name":"ElementaryTypeName","src":"858:7:15"}],"id":2802,"name":"VariableDeclaration","src":"858:12:15"}],"id":2803,"name":"ParameterList","src":"857:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":2812,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2804,"name":"ElementaryTypeName","src":"895:6:15"}],"id":2805,"name":"VariableDeclaration","src":"895:13:15"}],"id":2806,"name":"ParameterList","src":"894:15:15"},{"children":[{"attributes":{"functionReturnParameters":2806},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":2807,"name":"Identifier","src":"927:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2802,"type":"bytes32","value":"node"},"id":2808,"name":"Identifier","src":"933:4:15"}],"id":2809,"name":"IndexAccess","src":"927:11:15"}],"id":2810,"name":"Return","src":"920:18:15"}],"id":2811,"name":"Block","src":"910:35:15"}],"id":2812,"name":"FunctionDefinition","src":"844:101:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2830,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2829,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2813,"name":"ElementaryTypeName","src":"978:6:15"}],"id":2814,"name":"VariableDeclaration","src":"978:18:15"}],"id":2815,"name":"ParameterList","src":"977:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":2829,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2816,"name":"ElementaryTypeName","src":"1018:4:15"}],"id":2817,"name":"VariableDeclaration","src":"1018:4:15"}],"id":2818,"name":"ParameterList","src":"1017:6:15"},{"children":[{"attributes":{"functionReturnParameters":2818},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2814,"type":"bytes4","value":"interfaceID"},"id":2819,"name":"Identifier","src":"1041:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2768,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":2820,"name":"Identifier","src":"1056:17:15"}],"id":2821,"name":"BinaryOperation","src":"1041:32:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7464,"type":"contract super NameResolver","value":"super"},"id":2822,"name":"Identifier","src":"1077:5:15"}],"id":2823,"name":"MemberAccess","src":"1077:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2814,"type":"bytes4","value":"interfaceID"},"id":2824,"name":"Identifier","src":"1101:11:15"}],"id":2825,"name":"FunctionCall","src":"1077:36:15"}],"id":2826,"name":"BinaryOperation","src":"1041:72:15"}],"id":2827,"name":"Return","src":"1034:79:15"}],"id":2828,"name":"Block","src":"1024:96:15"}],"id":2829,"name":"FunctionDefinition","src":"951:169:15"}],"id":2830,"name":"ContractDefinition","src":"56:1066:15"}],"id":2831,"name":"SourceUnit","src":"0:1123:15"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[2921]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2832,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":2922,"symbolAliases":[null],"unitAlias":""},"id":2833,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[2921,5159],"name":"PubkeyResolver","scope":2922},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2834,"name":"UserDefinedTypeName","src":"83:12:16"}],"id":2835,"name":"InheritanceSpecifier","src":"83:12:16"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":2921,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2836,"name":"ElementaryTypeName","src":"102:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":2837,"name":"Literal","src":"148:10:16"}],"id":2838,"name":"VariableDeclaration","src":"102:56:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2839,"name":"ElementaryTypeName","src":"185:7:16"}],"id":2840,"name":"VariableDeclaration","src":"185:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":2846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2841,"name":"ElementaryTypeName","src":"207:7:16"}],"id":2842,"name":"VariableDeclaration","src":"207:9:16"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":2846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2843,"name":"ElementaryTypeName","src":"218:7:16"}],"id":2844,"name":"VariableDeclaration","src":"218:9:16"}],"id":2845,"name":"ParameterList","src":"184:44:16"}],"id":2846,"name":"EventDefinition","src":"165:64:16"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":2921,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":2851,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2847,"name":"ElementaryTypeName","src":"262:7:16"}],"id":2848,"name":"VariableDeclaration","src":"262:9:16"},{"attributes":{"constant":false,"name":"y","scope":2851,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2849,"name":"ElementaryTypeName","src":"281:7:16"}],"id":2850,"name":"VariableDeclaration","src":"281:9:16"}],"id":2851,"name":"StructDefinition","src":"235:62:16"},{"attributes":{"constant":false,"name":"pubkeys","scope":2921,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2852,"name":"ElementaryTypeName","src":"311:7:16"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":2851,"type":"struct PubkeyResolver.PublicKey"},"id":2853,"name":"UserDefinedTypeName","src":"320:9:16"}],"id":2854,"name":"Mapping","src":"303:27:16"}],"id":2855,"name":"VariableDeclaration","src":"303:35:16"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":2921,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2856,"name":"ElementaryTypeName","src":"631:7:16"}],"id":2857,"name":"VariableDeclaration","src":"631:12:16"},{"attributes":{"constant":false,"name":"x","scope":2883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2858,"name":"ElementaryTypeName","src":"645:7:16"}],"id":2859,"name":"VariableDeclaration","src":"645:9:16"},{"attributes":{"constant":false,"name":"y","scope":2883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2860,"name":"ElementaryTypeName","src":"656:7:16"}],"id":2861,"name":"VariableDeclaration","src":"656:9:16"}],"id":2862,"name":"ParameterList","src":"630:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":2866,"name":"ParameterList","src":"693:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2863,"name":"Identifier","src":"676:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2857,"type":"bytes32","value":"node"},"id":2864,"name":"Identifier","src":"687:4:16"}],"id":2865,"name":"ModifierInvocation","src":"676:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2855,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":2867,"name":"Identifier","src":"703:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2857,"type":"bytes32","value":"node"},"id":2868,"name":"Identifier","src":"711:4:16"}],"id":2869,"name":"IndexAccess","src":"703:13:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2851,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":2870,"name":"Identifier","src":"719:9:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2859,"type":"bytes32","value":"x"},"id":2871,"name":"Identifier","src":"729:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2861,"type":"bytes32","value":"y"},"id":2872,"name":"Identifier","src":"732:1:16"}],"id":2873,"name":"FunctionCall","src":"719:15:16"}],"id":2874,"name":"Assignment","src":"703:31:16"}],"id":2875,"name":"ExpressionStatement","src":"703:31:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2846,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":2876,"name":"Identifier","src":"749:13:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2857,"type":"bytes32","value":"node"},"id":2877,"name":"Identifier","src":"763:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2859,"type":"bytes32","value":"x"},"id":2878,"name":"Identifier","src":"769:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2861,"type":"bytes32","value":"y"},"id":2879,"name":"Identifier","src":"772:1:16"}],"id":2880,"name":"FunctionCall","src":"749:25:16"}],"id":2881,"name":"EmitStatement","src":"744:30:16"}],"id":2882,"name":"Block","src":"693:88:16"}],"id":2883,"name":"FunctionDefinition","src":"612:169:16"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":2921,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2903,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2884,"name":"ElementaryTypeName","src":"1039:7:16"}],"id":2885,"name":"VariableDeclaration","src":"1039:12:16"}],"id":2886,"name":"ParameterList","src":"1038:14:16"},{"children":[{"attributes":{"constant":false,"name":"x","scope":2903,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2887,"name":"ElementaryTypeName","src":"1076:7:16"}],"id":2888,"name":"VariableDeclaration","src":"1076:9:16"},{"attributes":{"constant":false,"name":"y","scope":2903,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2889,"name":"ElementaryTypeName","src":"1087:7:16"}],"id":2890,"name":"VariableDeclaration","src":"1087:9:16"}],"id":2891,"name":"ParameterList","src":"1075:22:16"},{"children":[{"attributes":{"functionReturnParameters":2891},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":2848,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2855,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":2892,"name":"Identifier","src":"1116:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"bytes32","value":"node"},"id":2893,"name":"Identifier","src":"1124:4:16"}],"id":2894,"name":"IndexAccess","src":"1116:13:16"}],"id":2895,"name":"MemberAccess","src":"1116:15:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":2850,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2855,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":2896,"name":"Identifier","src":"1133:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"bytes32","value":"node"},"id":2897,"name":"Identifier","src":"1141:4:16"}],"id":2898,"name":"IndexAccess","src":"1133:13:16"}],"id":2899,"name":"MemberAccess","src":"1133:15:16"}],"id":2900,"name":"TupleExpression","src":"1115:34:16"}],"id":2901,"name":"Return","src":"1108:41:16"}],"id":2902,"name":"Block","src":"1098:58:16"}],"id":2903,"name":"FunctionDefinition","src":"1023:133:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2921,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":2920,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2904,"name":"ElementaryTypeName","src":"1189:6:16"}],"id":2905,"name":"VariableDeclaration","src":"1189:18:16"}],"id":2906,"name":"ParameterList","src":"1188:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":2920,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2907,"name":"ElementaryTypeName","src":"1229:4:16"}],"id":2908,"name":"VariableDeclaration","src":"1229:4:16"}],"id":2909,"name":"ParameterList","src":"1228:6:16"},{"children":[{"attributes":{"functionReturnParameters":2909},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2905,"type":"bytes4","value":"interfaceID"},"id":2910,"name":"Identifier","src":"1252:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2838,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":2911,"name":"Identifier","src":"1267:19:16"}],"id":2912,"name":"BinaryOperation","src":"1252:34:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7466,"type":"contract super PubkeyResolver","value":"super"},"id":2913,"name":"Identifier","src":"1290:5:16"}],"id":2914,"name":"MemberAccess","src":"1290:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2905,"type":"bytes4","value":"interfaceID"},"id":2915,"name":"Identifier","src":"1314:11:16"}],"id":2916,"name":"FunctionCall","src":"1290:36:16"}],"id":2917,"name":"BinaryOperation","src":"1252:74:16"}],"id":2918,"name":"Return","src":"1245:81:16"}],"id":2919,"name":"Block","src":"1235:98:16"}],"id":2920,"name":"FunctionDefinition","src":"1162:171:16"}],"id":2921,"name":"ContractDefinition","src":"56:1279:16"}],"id":2922,"name":"SourceUnit","src":"0:1336:16"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[3004]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2923,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":5160,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":3005,"symbolAliases":[null],"unitAlias":""},"id":2924,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[5159],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3004,5159],"name":"TextResolver","scope":3005},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5159,"type":"contract ResolverBase"},"id":2925,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":2926,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":3004,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2927,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":2928,"name":"Literal","src":"144:10:17"}],"id":2929,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":2937,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2930,"name":"ElementaryTypeName","src":"179:7:17"}],"id":2931,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":2937,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2932,"name":"ElementaryTypeName","src":"201:6:17"}],"id":2933,"name":"VariableDeclaration","src":"201:25:17"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":2937,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2934,"name":"ElementaryTypeName","src":"228:6:17"}],"id":2935,"name":"VariableDeclaration","src":"228:10:17"}],"id":2936,"name":"ParameterList","src":"178:61:17"}],"id":2937,"name":"EventDefinition","src":"161:79:17"},{"attributes":{"constant":false,"name":"texts","scope":3004,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2938,"name":"ElementaryTypeName","src":"254:7:17"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":2939,"name":"ElementaryTypeName","src":"271:6:17"},{"attributes":{"name":"string","type":"string"},"id":2940,"name":"ElementaryTypeName","src":"279:6:17"}],"id":2941,"name":"Mapping","src":"263:23:17"}],"id":2942,"name":"Mapping","src":"246:41:17"}],"id":2943,"name":"VariableDeclaration","src":"246:47:17"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":3004,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2970,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2944,"name":"ElementaryTypeName","src":"590:7:17"}],"id":2945,"name":"VariableDeclaration","src":"590:12:17"},{"attributes":{"constant":false,"name":"key","scope":2970,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2946,"name":"ElementaryTypeName","src":"604:6:17"}],"id":2947,"name":"VariableDeclaration","src":"604:19:17"},{"attributes":{"constant":false,"name":"value","scope":2970,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2948,"name":"ElementaryTypeName","src":"625:6:17"}],"id":2949,"name":"VariableDeclaration","src":"625:21:17"}],"id":2950,"name":"ParameterList","src":"589:58:17"},{"attributes":{"parameters":[null]},"children":[],"id":2954,"name":"ParameterList","src":"674:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5126,"type":"modifier (bytes32)","value":"authorised"},"id":2951,"name":"Identifier","src":"657:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2945,"type":"bytes32","value":"node"},"id":2952,"name":"Identifier","src":"668:4:17"}],"id":2953,"name":"ModifierInvocation","src":"657:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2943,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":2955,"name":"Identifier","src":"684:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2945,"type":"bytes32","value":"node"},"id":2956,"name":"Identifier","src":"690:4:17"}],"id":2958,"name":"IndexAccess","src":"684:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2947,"type":"string calldata","value":"key"},"id":2957,"name":"Identifier","src":"696:3:17"}],"id":2959,"name":"IndexAccess","src":"684:16:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"string calldata","value":"value"},"id":2960,"name":"Identifier","src":"703:5:17"}],"id":2961,"name":"Assignment","src":"684:24:17"}],"id":2962,"name":"ExpressionStatement","src":"684:24:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2937,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":2963,"name":"Identifier","src":"723:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2945,"type":"bytes32","value":"node"},"id":2964,"name":"Identifier","src":"735:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2947,"type":"string calldata","value":"key"},"id":2965,"name":"Identifier","src":"741:3:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2947,"type":"string calldata","value":"key"},"id":2966,"name":"Identifier","src":"746:3:17"}],"id":2967,"name":"FunctionCall","src":"723:27:17"}],"id":2968,"name":"EmitStatement","src":"718:32:17"}],"id":2969,"name":"Block","src":"674:83:17"}],"id":2970,"name":"FunctionDefinition","src":"573:184:17"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":3004,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":2986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2971,"name":"ElementaryTypeName","src":"988:7:17"}],"id":2972,"name":"VariableDeclaration","src":"988:12:17"},{"attributes":{"constant":false,"name":"key","scope":2986,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2973,"name":"ElementaryTypeName","src":"1002:6:17"}],"id":2974,"name":"VariableDeclaration","src":"1002:19:17"}],"id":2975,"name":"ParameterList","src":"987:35:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":2986,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2976,"name":"ElementaryTypeName","src":"1046:6:17"}],"id":2977,"name":"VariableDeclaration","src":"1046:13:17"}],"id":2978,"name":"ParameterList","src":"1045:15:17"},{"children":[{"attributes":{"functionReturnParameters":2978},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2943,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":2979,"name":"Identifier","src":"1078:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2972,"type":"bytes32","value":"node"},"id":2980,"name":"Identifier","src":"1084:4:17"}],"id":2981,"name":"IndexAccess","src":"1078:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2974,"type":"string calldata","value":"key"},"id":2982,"name":"Identifier","src":"1090:3:17"}],"id":2983,"name":"IndexAccess","src":"1078:16:17"}],"id":2984,"name":"Return","src":"1071:23:17"}],"id":2985,"name":"Block","src":"1061:40:17"}],"id":2986,"name":"FunctionDefinition","src":"974:127:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3004,"stateMutability":"pure","superFunction":5107,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":3003,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2987,"name":"ElementaryTypeName","src":"1134:6:17"}],"id":2988,"name":"VariableDeclaration","src":"1134:18:17"}],"id":2989,"name":"ParameterList","src":"1133:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":3003,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2990,"name":"ElementaryTypeName","src":"1174:4:17"}],"id":2991,"name":"VariableDeclaration","src":"1174:4:17"}],"id":2992,"name":"ParameterList","src":"1173:6:17"},{"children":[{"attributes":{"functionReturnParameters":2992},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2988,"type":"bytes4","value":"interfaceID"},"id":2993,"name":"Identifier","src":"1197:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2929,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":2994,"name":"Identifier","src":"1212:17:17"}],"id":2995,"name":"BinaryOperation","src":"1197:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5107,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7468,"type":"contract super TextResolver","value":"super"},"id":2996,"name":"Identifier","src":"1233:5:17"}],"id":2997,"name":"MemberAccess","src":"1233:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2988,"type":"bytes4","value":"interfaceID"},"id":2998,"name":"Identifier","src":"1257:11:17"}],"id":2999,"name":"FunctionCall","src":"1233:36:17"}],"id":3000,"name":"BinaryOperation","src":"1197:72:17"}],"id":3001,"name":"Return","src":"1190:79:17"}],"id":3002,"name":"Block","src":"1180:96:17"}],"id":3003,"name":"FunctionDefinition","src":"1107:169:17"}],"id":3004,"name":"ContractDefinition","src":"56:1222:17"}],"id":3005,"name":"SourceUnit","src":"0:1278:17"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[4843]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3139,"name":"PragmaDirective","src":"2574:23:18"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[4843],"name":"strings","scope":4844},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":4843,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":3144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3140,"name":"ElementaryTypeName","src":"2644:4:18"}],"id":3141,"name":"VariableDeclaration","src":"2644:9:18"},{"attributes":{"constant":false,"name":"_ptr","scope":3144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3142,"name":"ElementaryTypeName","src":"2663:4:18"}],"id":3143,"name":"VariableDeclaration","src":"2663:9:18"}],"id":3144,"name":"StructDefinition","src":"2621:58:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":3184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3145,"name":"ElementaryTypeName","src":"2701:4:18"}],"id":3146,"name":"VariableDeclaration","src":"2701:9:18"},{"attributes":{"constant":false,"name":"src","scope":3184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3147,"name":"ElementaryTypeName","src":"2712:4:18"}],"id":3148,"name":"VariableDeclaration","src":"2712:8:18"},{"attributes":{"constant":false,"name":"len","scope":3184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3149,"name":"ElementaryTypeName","src":"2722:4:18"}],"id":3150,"name":"VariableDeclaration","src":"2722:8:18"}],"id":3151,"name":"ParameterList","src":"2700:31:18"},{"attributes":{"parameters":[null]},"children":[],"id":3152,"name":"ParameterList","src":"2745:0:18"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"len"},"id":3153,"name":"Identifier","src":"2811:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3154,"name":"Literal","src":"2818:2:18"}],"id":3155,"name":"BinaryOperation","src":"2811:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"len"},"id":3156,"name":"Identifier","src":"2822:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3157,"name":"Literal","src":"2829:2:18"}],"id":3158,"name":"Assignment","src":"2822:9:18"}],"id":3159,"name":"ExpressionStatement","src":"2822:9:18"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":3148,"isOffset":false,"isSlot":false,"src":"2893:3:18","valueSize":1}},{"dest":{"declaration":3146,"isOffset":false,"isSlot":false,"src":"2881:4:18","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":3160,"name":"InlineAssembly","src":"2847:65:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3146,"type":"uint256","value":"dest"},"id":3161,"name":"Identifier","src":"2925:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3162,"name":"Literal","src":"2933:2:18"}],"id":3163,"name":"Assignment","src":"2925:10:18"}],"id":3164,"name":"ExpressionStatement","src":"2925:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"uint256","value":"src"},"id":3165,"name":"Identifier","src":"2949:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3166,"name":"Literal","src":"2956:2:18"}],"id":3167,"name":"Assignment","src":"2949:9:18"}],"id":3168,"name":"ExpressionStatement","src":"2949:9:18"}],"id":3169,"name":"Block","src":"2833:136:18"}],"id":3170,"name":"ForStatement","src":"2805:164:18"},{"attributes":{"assignments":[3172]},"children":[{"attributes":{"constant":false,"name":"mask","scope":3183,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3171,"name":"ElementaryTypeName","src":"3011:4:18"}],"id":3172,"name":"VariableDeclaration","src":"3011:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":3173,"name":"Literal","src":"3023:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3174,"name":"Literal","src":"3031:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"len"},"id":3175,"name":"Identifier","src":"3036:3:18"}],"id":3176,"name":"BinaryOperation","src":"3031:8:18"}],"id":3177,"name":"TupleExpression","src":"3030:10:18"}],"id":3178,"name":"BinaryOperation","src":"3023:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3179,"name":"Literal","src":"3043:1:18"}],"id":3180,"name":"BinaryOperation","src":"3023:21:18"}],"id":3181,"name":"VariableDeclarationStatement","src":"3011:33:18"},{"attributes":{"externalReferences":[{"src":{"declaration":3148,"isOffset":false,"isSlot":false,"src":"3102:3:18","valueSize":1}},{"mask":{"declaration":3172,"isOffset":false,"isSlot":false,"src":"3112:4:18","valueSize":1}},{"dest":{"declaration":3146,"isOffset":false,"isSlot":false,"src":"3189:4:18","valueSize":1}},{"dest":{"declaration":3146,"isOffset":false,"isSlot":false,"src":"3157:4:18","valueSize":1}},{"mask":{"declaration":3172,"isOffset":false,"isSlot":false,"src":"3164:4:18","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":3182,"name":"InlineAssembly","src":"3054:173:18"}],"id":3183,"name":"Block","src":"2745:488:18"}],"id":3184,"name":"FunctionDefinition","src":"2685:548:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3204,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3185,"name":"ElementaryTypeName","src":"3450:6:18"}],"id":3186,"name":"VariableDeclaration","src":"3450:18:18"}],"id":3187,"name":"ParameterList","src":"3449:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3204,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3188,"name":"UserDefinedTypeName","src":"3493:5:18"}],"id":3189,"name":"VariableDeclaration","src":"3493:12:18"}],"id":3190,"name":"ParameterList","src":"3492:14:18"},{"children":[{"attributes":{"assignments":[3192],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":3203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3191,"name":"ElementaryTypeName","src":"3517:4:18"}],"id":3192,"name":"VariableDeclaration","src":"3517:8:18"}],"id":3193,"name":"VariableDeclarationStatement","src":"3517:8:18"},{"attributes":{"externalReferences":[{"ptr":{"declaration":3192,"isOffset":false,"isSlot":false,"src":"3558:3:18","valueSize":1}},{"self":{"declaration":3186,"isOffset":false,"isSlot":false,"src":"3569:4:18","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":3194,"name":"InlineAssembly","src":"3535:55:18"},{"attributes":{"functionReturnParameters":3190},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":3195,"name":"Identifier","src":"3606:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":3196,"name":"ElementaryTypeNameExpression","src":"3612:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3186,"type":"string memory","value":"self"},"id":3197,"name":"Identifier","src":"3618:4:18"}],"id":3198,"name":"FunctionCall","src":"3612:11:18"}],"id":3199,"name":"MemberAccess","src":"3612:18:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3192,"type":"uint256","value":"ptr"},"id":3200,"name":"Identifier","src":"3632:3:18"}],"id":3201,"name":"FunctionCall","src":"3606:30:18"}],"id":3202,"name":"Return","src":"3599:37:18"}],"id":3203,"name":"Block","src":"3507:136:18"}],"id":3204,"name":"FunctionDefinition","src":"3433:210:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3330,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3205,"name":"ElementaryTypeName","src":"3852:7:18"}],"id":3206,"name":"VariableDeclaration","src":"3852:12:18"}],"id":3207,"name":"ParameterList","src":"3851:14:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3330,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3208,"name":"ElementaryTypeName","src":"3889:4:18"}],"id":3209,"name":"VariableDeclaration","src":"3889:4:18"}],"id":3210,"name":"ParameterList","src":"3888:6:18"},{"children":[{"attributes":{"assignments":[3212],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":3329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3211,"name":"ElementaryTypeName","src":"3905:4:18"}],"id":3212,"name":"VariableDeclaration","src":"3905:8:18"}],"id":3213,"name":"VariableDeclarationStatement","src":"3905:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3214,"name":"Identifier","src":"3927:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3215,"name":"Literal","src":"3935:1:18"}],"id":3216,"name":"BinaryOperation","src":"3927:9:18"},{"attributes":{"functionReturnParameters":3210},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3217,"name":"Literal","src":"3957:1:18"}],"id":3218,"name":"Return","src":"3950:8:18"}],"id":3219,"name":"IfStatement","src":"3923:35:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3220,"name":"ElementaryTypeNameExpression","src":"3972:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3221,"name":"Identifier","src":"3977:4:18"}],"id":3222,"name":"FunctionCall","src":"3972:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":3223,"name":"Literal","src":"3985:34:18"}],"id":3224,"name":"BinaryOperation","src":"3972:47:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3225,"name":"Literal","src":"4023:1:18"}],"id":3226,"name":"BinaryOperation","src":"3972:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3227,"name":"Identifier","src":"4040:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":3228,"name":"Literal","src":"4047:2:18"}],"id":3229,"name":"Assignment","src":"4040:9:18"}],"id":3230,"name":"ExpressionStatement","src":"4040:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3231,"name":"Identifier","src":"4063:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3232,"name":"ElementaryTypeNameExpression","src":"4070:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3233,"name":"ElementaryTypeNameExpression","src":"4078:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3234,"name":"Identifier","src":"4083:4:18"}],"id":3235,"name":"FunctionCall","src":"4078:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":3236,"name":"Literal","src":"4091:35:18"}],"id":3237,"name":"BinaryOperation","src":"4078:48:18"}],"id":3238,"name":"FunctionCall","src":"4070:57:18"}],"id":3239,"name":"Assignment","src":"4063:64:18"}],"id":3240,"name":"ExpressionStatement","src":"4063:64:18"}],"id":3241,"name":"Block","src":"4026:112:18"}],"id":3242,"name":"IfStatement","src":"3968:170:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3243,"name":"ElementaryTypeNameExpression","src":"4151:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3244,"name":"Identifier","src":"4156:4:18"}],"id":3245,"name":"FunctionCall","src":"4151:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":3246,"name":"Literal","src":"4164:18:18"}],"id":3247,"name":"BinaryOperation","src":"4151:31:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3248,"name":"Literal","src":"4186:1:18"}],"id":3249,"name":"BinaryOperation","src":"4151:36:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3250,"name":"Identifier","src":"4203:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3251,"name":"Literal","src":"4210:1:18"}],"id":3252,"name":"Assignment","src":"4203:8:18"}],"id":3253,"name":"ExpressionStatement","src":"4203:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3254,"name":"Identifier","src":"4225:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3255,"name":"ElementaryTypeNameExpression","src":"4232:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3256,"name":"ElementaryTypeNameExpression","src":"4240:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3257,"name":"Identifier","src":"4245:4:18"}],"id":3258,"name":"FunctionCall","src":"4240:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":3259,"name":"Literal","src":"4253:19:18"}],"id":3260,"name":"BinaryOperation","src":"4240:32:18"}],"id":3261,"name":"FunctionCall","src":"4232:41:18"}],"id":3262,"name":"Assignment","src":"4225:48:18"}],"id":3263,"name":"ExpressionStatement","src":"4225:48:18"}],"id":3264,"name":"Block","src":"4189:95:18"}],"id":3265,"name":"IfStatement","src":"4147:137:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3266,"name":"ElementaryTypeNameExpression","src":"4297:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3267,"name":"Identifier","src":"4302:4:18"}],"id":3268,"name":"FunctionCall","src":"4297:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":3269,"name":"Literal","src":"4310:10:18"}],"id":3270,"name":"BinaryOperation","src":"4297:23:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3271,"name":"Literal","src":"4324:1:18"}],"id":3272,"name":"BinaryOperation","src":"4297:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3273,"name":"Identifier","src":"4341:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3274,"name":"Literal","src":"4348:1:18"}],"id":3275,"name":"Assignment","src":"4341:8:18"}],"id":3276,"name":"ExpressionStatement","src":"4341:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3277,"name":"Identifier","src":"4363:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3278,"name":"ElementaryTypeNameExpression","src":"4370:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3279,"name":"ElementaryTypeNameExpression","src":"4378:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3280,"name":"Identifier","src":"4383:4:18"}],"id":3281,"name":"FunctionCall","src":"4378:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":3282,"name":"Literal","src":"4391:11:18"}],"id":3283,"name":"BinaryOperation","src":"4378:24:18"}],"id":3284,"name":"FunctionCall","src":"4370:33:18"}],"id":3285,"name":"Assignment","src":"4363:40:18"}],"id":3286,"name":"ExpressionStatement","src":"4363:40:18"}],"id":3287,"name":"Block","src":"4327:87:18"}],"id":3288,"name":"IfStatement","src":"4293:121:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3289,"name":"ElementaryTypeNameExpression","src":"4427:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3290,"name":"Identifier","src":"4432:4:18"}],"id":3291,"name":"FunctionCall","src":"4427:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":3292,"name":"Literal","src":"4440:6:18"}],"id":3293,"name":"BinaryOperation","src":"4427:19:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3294,"name":"Literal","src":"4450:1:18"}],"id":3295,"name":"BinaryOperation","src":"4427:24:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3296,"name":"Identifier","src":"4467:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3297,"name":"Literal","src":"4474:1:18"}],"id":3298,"name":"Assignment","src":"4467:8:18"}],"id":3299,"name":"ExpressionStatement","src":"4467:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3300,"name":"Identifier","src":"4489:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":3301,"name":"ElementaryTypeNameExpression","src":"4496:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3302,"name":"ElementaryTypeNameExpression","src":"4504:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3303,"name":"Identifier","src":"4509:4:18"}],"id":3304,"name":"FunctionCall","src":"4504:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":3305,"name":"Literal","src":"4517:7:18"}],"id":3306,"name":"BinaryOperation","src":"4504:20:18"}],"id":3307,"name":"FunctionCall","src":"4496:29:18"}],"id":3308,"name":"Assignment","src":"4489:36:18"}],"id":3309,"name":"ExpressionStatement","src":"4489:36:18"}],"id":3310,"name":"Block","src":"4453:83:18"}],"id":3311,"name":"IfStatement","src":"4423:113:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":3312,"name":"ElementaryTypeNameExpression","src":"4549:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bytes32","value":"self"},"id":3313,"name":"Identifier","src":"4554:4:18"}],"id":3314,"name":"FunctionCall","src":"4549:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":3315,"name":"Literal","src":"4562:4:18"}],"id":3316,"name":"BinaryOperation","src":"4549:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3317,"name":"Literal","src":"4570:1:18"}],"id":3318,"name":"BinaryOperation","src":"4549:22:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3319,"name":"Identifier","src":"4587:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3320,"name":"Literal","src":"4594:1:18"}],"id":3321,"name":"Assignment","src":"4587:8:18"}],"id":3322,"name":"ExpressionStatement","src":"4587:8:18"}],"id":3323,"name":"Block","src":"4573:33:18"}],"id":3324,"name":"IfStatement","src":"4545:61:18"},{"attributes":{"functionReturnParameters":3210},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3325,"name":"Literal","src":"4622:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3212,"type":"uint256","value":"ret"},"id":3326,"name":"Identifier","src":"4627:3:18"}],"id":3327,"name":"BinaryOperation","src":"4622:8:18"}],"id":3328,"name":"Return","src":"4615:15:18"}],"id":3329,"name":"Block","src":"3895:742:18"}],"id":3330,"name":"FunctionDefinition","src":"3839:798:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3347,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3331,"name":"ElementaryTypeName","src":"4963:7:18"}],"id":3332,"name":"VariableDeclaration","src":"4963:12:18"}],"id":3333,"name":"ParameterList","src":"4962:14:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3347,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3334,"name":"UserDefinedTypeName","src":"5000:5:18"}],"id":3335,"name":"VariableDeclaration","src":"5000:16:18"}],"id":3336,"name":"ParameterList","src":"4999:18:18"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":3332,"isOffset":false,"isSlot":false,"src":"5222:4:18","valueSize":1}},{"ret":{"declaration":3335,"isOffset":false,"isSlot":false,"src":"5251:3:18","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":3337,"name":"InlineAssembly","src":"5111:166:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"struct strings.slice memory","value":"ret"},"id":3338,"name":"Identifier","src":"5286:3:18"}],"id":3340,"name":"MemberAccess","src":"5286:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[3330,3480],"referencedDeclaration":3330,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":3341,"name":"Identifier","src":"5297:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3332,"type":"bytes32","value":"self"},"id":3342,"name":"Identifier","src":"5301:4:18"}],"id":3343,"name":"FunctionCall","src":"5297:9:18"}],"id":3344,"name":"Assignment","src":"5286:20:18"}],"id":3345,"name":"ExpressionStatement","src":"5286:20:18"}],"id":3346,"name":"Block","src":"5018:295:18"}],"id":3347,"name":"FunctionDefinition","src":"4943:370:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3362,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3348,"name":"UserDefinedTypeName","src":"5528:5:18"}],"id":3349,"name":"VariableDeclaration","src":"5528:17:18"}],"id":3350,"name":"ParameterList","src":"5527:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3362,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3351,"name":"UserDefinedTypeName","src":"5570:5:18"}],"id":3352,"name":"VariableDeclaration","src":"5570:12:18"}],"id":3353,"name":"ParameterList","src":"5569:14:18"},{"children":[{"attributes":{"functionReturnParameters":3353},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":3354,"name":"Identifier","src":"5601:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3349,"type":"struct strings.slice memory","value":"self"},"id":3355,"name":"Identifier","src":"5607:4:18"}],"id":3356,"name":"MemberAccess","src":"5607:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3349,"type":"struct strings.slice memory","value":"self"},"id":3357,"name":"Identifier","src":"5618:4:18"}],"id":3358,"name":"MemberAccess","src":"5618:9:18"}],"id":3359,"name":"FunctionCall","src":"5601:27:18"}],"id":3360,"name":"Return","src":"5594:34:18"}],"id":3361,"name":"Block","src":"5584:51:18"}],"id":3362,"name":"FunctionDefinition","src":"5514:121:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3392,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3363,"name":"UserDefinedTypeName","src":"5825:5:18"}],"id":3364,"name":"VariableDeclaration","src":"5825:17:18"}],"id":3365,"name":"ParameterList","src":"5824:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3392,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3366,"name":"ElementaryTypeName","src":"5867:6:18"}],"id":3367,"name":"VariableDeclaration","src":"5867:13:18"}],"id":3368,"name":"ParameterList","src":"5866:15:18"},{"children":[{"attributes":{"assignments":[3370]},"children":[{"attributes":{"constant":false,"name":"ret","scope":3391,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3369,"name":"ElementaryTypeName","src":"5892:6:18"}],"id":3370,"name":"VariableDeclaration","src":"5892:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":3371,"name":"ElementaryTypeName","src":"5916:6:18"}],"id":3372,"name":"NewExpression","src":"5912:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"struct strings.slice memory","value":"self"},"id":3373,"name":"Identifier","src":"5923:4:18"}],"id":3374,"name":"MemberAccess","src":"5923:9:18"}],"id":3375,"name":"FunctionCall","src":"5912:21:18"}],"id":3376,"name":"VariableDeclarationStatement","src":"5892:41:18"},{"attributes":{"assignments":[3378],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":3391,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3377,"name":"ElementaryTypeName","src":"5943:4:18"}],"id":3378,"name":"VariableDeclaration","src":"5943:11:18"}],"id":3379,"name":"VariableDeclarationStatement","src":"5943:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":3378,"isOffset":false,"isSlot":false,"src":"5975:6:18","valueSize":1}},{"ret":{"declaration":3370,"isOffset":false,"isSlot":false,"src":"5989:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":3380,"name":"InlineAssembly","src":"5964:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":3381,"name":"Identifier","src":"6009:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"uint256","value":"retptr"},"id":3382,"name":"Identifier","src":"6016:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"struct strings.slice memory","value":"self"},"id":3383,"name":"Identifier","src":"6024:4:18"}],"id":3384,"name":"MemberAccess","src":"6024:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3364,"type":"struct strings.slice memory","value":"self"},"id":3385,"name":"Identifier","src":"6035:4:18"}],"id":3386,"name":"MemberAccess","src":"6035:9:18"}],"id":3387,"name":"FunctionCall","src":"6009:36:18"}],"id":3388,"name":"ExpressionStatement","src":"6009:36:18"},{"attributes":{"functionReturnParameters":3368},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3370,"type":"string memory","value":"ret"},"id":3389,"name":"Identifier","src":"6062:3:18"}],"id":3390,"name":"Return","src":"6055:10:18"}],"id":3391,"name":"Block","src":"5882:190:18"}],"id":3392,"name":"FunctionDefinition","src":"5807:265:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3393,"name":"UserDefinedTypeName","src":"6476:5:18"}],"id":3394,"name":"VariableDeclaration","src":"6476:17:18"}],"id":3395,"name":"ParameterList","src":"6475:19:18"},{"children":[{"attributes":{"constant":false,"name":"l","scope":3480,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3396,"name":"ElementaryTypeName","src":"6518:4:18"}],"id":3397,"name":"VariableDeclaration","src":"6518:6:18"}],"id":3398,"name":"ParameterList","src":"6517:8:18"},{"children":[{"attributes":{"assignments":[3400]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":3479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3399,"name":"ElementaryTypeName","src":"6611:4:18"}],"id":3400,"name":"VariableDeclaration","src":"6611:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3394,"type":"struct strings.slice memory","value":"self"},"id":3401,"name":"Identifier","src":"6622:4:18"}],"id":3402,"name":"MemberAccess","src":"6622:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":3403,"name":"Literal","src":"6634:2:18"}],"id":3404,"name":"BinaryOperation","src":"6622:14:18"}],"id":3405,"name":"VariableDeclarationStatement","src":"6611:25:18"},{"attributes":{"assignments":[3407]},"children":[{"attributes":{"constant":false,"name":"end","scope":3479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3406,"name":"ElementaryTypeName","src":"6646:4:18"}],"id":3407,"name":"VariableDeclaration","src":"6646:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3408,"name":"Identifier","src":"6657:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3394,"type":"struct strings.slice memory","value":"self"},"id":3409,"name":"Identifier","src":"6663:4:18"}],"id":3410,"name":"MemberAccess","src":"6663:9:18"}],"id":3411,"name":"BinaryOperation","src":"6657:15:18"}],"id":3412,"name":"VariableDeclarationStatement","src":"6646:26:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3397,"type":"uint256","value":"l"},"id":3413,"name":"Identifier","src":"6687:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3414,"name":"Literal","src":"6691:1:18"}],"id":3415,"name":"Assignment","src":"6687:5:18"}],"id":3416,"name":"ExpressionStatement","src":"6687:5:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3417,"name":"Identifier","src":"6694:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3407,"type":"uint256","value":"end"},"id":3418,"name":"Identifier","src":"6700:3:18"}],"id":3419,"name":"BinaryOperation","src":"6694:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3397,"type":"uint256","value":"l"},"id":3420,"name":"Identifier","src":"6705:1:18"}],"id":3421,"name":"UnaryOperation","src":"6705:3:18"}],"id":3422,"name":"ExpressionStatement","src":"6705:3:18"},{"children":[{"attributes":{"assignments":[3424],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3477,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3423,"name":"ElementaryTypeName","src":"6724:5:18"}],"id":3424,"name":"VariableDeclaration","src":"6724:7:18"}],"id":3425,"name":"VariableDeclarationStatement","src":"6724:7:18"},{"attributes":{"externalReferences":[{"b":{"declaration":3424,"isOffset":false,"isSlot":false,"src":"6756:1:18","valueSize":1}},{"ptr":{"declaration":3400,"isOffset":false,"isSlot":false,"src":"6771:3:18","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":3426,"name":"InlineAssembly","src":"6745:39:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3427,"name":"Identifier","src":"6801:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3428,"name":"Literal","src":"6805:4:18"}],"id":3429,"name":"BinaryOperation","src":"6801:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3430,"name":"Identifier","src":"6829:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3431,"name":"Literal","src":"6836:1:18"}],"id":3432,"name":"Assignment","src":"6829:8:18"}],"id":3433,"name":"ExpressionStatement","src":"6829:8:18"}],"id":3434,"name":"Block","src":"6811:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3435,"name":"Identifier","src":"6862:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3436,"name":"Literal","src":"6866:4:18"}],"id":3437,"name":"BinaryOperation","src":"6862:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3438,"name":"Identifier","src":"6890:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3439,"name":"Literal","src":"6897:1:18"}],"id":3440,"name":"Assignment","src":"6890:8:18"}],"id":3441,"name":"ExpressionStatement","src":"6890:8:18"}],"id":3442,"name":"Block","src":"6872:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3443,"name":"Identifier","src":"6923:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3444,"name":"Literal","src":"6927:4:18"}],"id":3445,"name":"BinaryOperation","src":"6923:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3446,"name":"Identifier","src":"6951:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3447,"name":"Literal","src":"6958:1:18"}],"id":3448,"name":"Assignment","src":"6951:8:18"}],"id":3449,"name":"ExpressionStatement","src":"6951:8:18"}],"id":3450,"name":"Block","src":"6933:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3451,"name":"Identifier","src":"6984:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":3452,"name":"Literal","src":"6988:4:18"}],"id":3453,"name":"BinaryOperation","src":"6984:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3454,"name":"Identifier","src":"7012:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3455,"name":"Literal","src":"7019:1:18"}],"id":3456,"name":"Assignment","src":"7012:8:18"}],"id":3457,"name":"ExpressionStatement","src":"7012:8:18"}],"id":3458,"name":"Block","src":"6994:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3424,"type":"uint8","value":"b"},"id":3459,"name":"Identifier","src":"7045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":3460,"name":"Literal","src":"7049:4:18"}],"id":3461,"name":"BinaryOperation","src":"7045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3462,"name":"Identifier","src":"7073:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":3463,"name":"Literal","src":"7080:1:18"}],"id":3464,"name":"Assignment","src":"7073:8:18"}],"id":3465,"name":"ExpressionStatement","src":"7073:8:18"}],"id":3466,"name":"Block","src":"7055:41:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3400,"type":"uint256","value":"ptr"},"id":3467,"name":"Identifier","src":"7120:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":3468,"name":"Literal","src":"7127:1:18"}],"id":3469,"name":"Assignment","src":"7120:8:18"}],"id":3470,"name":"ExpressionStatement","src":"7120:8:18"}],"id":3471,"name":"Block","src":"7102:41:18"}],"id":3472,"name":"IfStatement","src":"7041:102:18"}],"id":3473,"name":"IfStatement","src":"6980:163:18"}],"id":3474,"name":"IfStatement","src":"6919:224:18"}],"id":3475,"name":"IfStatement","src":"6858:285:18"}],"id":3476,"name":"IfStatement","src":"6797:346:18"}],"id":3477,"name":"Block","src":"6710:443:18"}],"id":3478,"name":"ForStatement","src":"6682:471:18"}],"id":3479,"name":"Block","src":"6526:633:18"}],"id":3480,"name":"FunctionDefinition","src":"6463:696:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3493,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3481,"name":"UserDefinedTypeName","src":"7367:5:18"}],"id":3482,"name":"VariableDeclaration","src":"7367:17:18"}],"id":3483,"name":"ParameterList","src":"7366:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3493,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3484,"name":"ElementaryTypeName","src":"7409:4:18"}],"id":3485,"name":"VariableDeclaration","src":"7409:4:18"}],"id":3486,"name":"ParameterList","src":"7408:6:18"},{"children":[{"attributes":{"functionReturnParameters":3486},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3482,"type":"struct strings.slice memory","value":"self"},"id":3487,"name":"Identifier","src":"7432:4:18"}],"id":3488,"name":"MemberAccess","src":"7432:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3489,"name":"Literal","src":"7445:1:18"}],"id":3490,"name":"BinaryOperation","src":"7432:14:18"}],"id":3491,"name":"Return","src":"7425:21:18"}],"id":3492,"name":"Block","src":"7415:38:18"}],"id":3493,"name":"FunctionDefinition","src":"7352:101:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3622,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3494,"name":"UserDefinedTypeName","src":"7898:5:18"}],"id":3495,"name":"VariableDeclaration","src":"7898:17:18"},{"attributes":{"constant":false,"name":"other","scope":3622,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3496,"name":"UserDefinedTypeName","src":"7917:5:18"}],"id":3497,"name":"VariableDeclaration","src":"7917:18:18"}],"id":3498,"name":"ParameterList","src":"7897:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3622,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":3499,"name":"ElementaryTypeName","src":"7960:3:18"}],"id":3500,"name":"VariableDeclaration","src":"7960:3:18"}],"id":3501,"name":"ParameterList","src":"7959:5:18"},{"children":[{"attributes":{"assignments":[3503]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":3621,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3502,"name":"ElementaryTypeName","src":"7975:4:18"}],"id":3503,"name":"VariableDeclaration","src":"7975:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3495,"type":"struct strings.slice memory","value":"self"},"id":3504,"name":"Identifier","src":"7991:4:18"}],"id":3505,"name":"MemberAccess","src":"7991:9:18"}],"id":3506,"name":"VariableDeclarationStatement","src":"7975:25:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3497,"type":"struct strings.slice memory","value":"other"},"id":3507,"name":"Identifier","src":"8014:5:18"}],"id":3508,"name":"MemberAccess","src":"8014:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3495,"type":"struct strings.slice memory","value":"self"},"id":3509,"name":"Identifier","src":"8027:4:18"}],"id":3510,"name":"MemberAccess","src":"8027:9:18"}],"id":3511,"name":"BinaryOperation","src":"8014:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"uint256","value":"shortest"},"id":3512,"name":"Identifier","src":"8050:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3497,"type":"struct strings.slice memory","value":"other"},"id":3513,"name":"Identifier","src":"8061:5:18"}],"id":3514,"name":"MemberAccess","src":"8061:10:18"}],"id":3515,"name":"Assignment","src":"8050:21:18"}],"id":3516,"name":"ExpressionStatement","src":"8050:21:18"}],"id":3517,"name":"IfStatement","src":"8010:61:18"},{"attributes":{"assignments":[3519]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":3621,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3518,"name":"ElementaryTypeName","src":"8082:4:18"}],"id":3519,"name":"VariableDeclaration","src":"8082:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3495,"type":"struct strings.slice memory","value":"self"},"id":3520,"name":"Identifier","src":"8097:4:18"}],"id":3521,"name":"MemberAccess","src":"8097:9:18"}],"id":3522,"name":"VariableDeclarationStatement","src":"8082:24:18"},{"attributes":{"assignments":[3524]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":3621,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3523,"name":"ElementaryTypeName","src":"8116:4:18"}],"id":3524,"name":"VariableDeclaration","src":"8116:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3497,"type":"struct strings.slice memory","value":"other"},"id":3525,"name":"Identifier","src":"8132:5:18"}],"id":3526,"name":"MemberAccess","src":"8132:10:18"}],"id":3527,"name":"VariableDeclarationStatement","src":"8116:26:18"},{"children":[{"attributes":{"assignments":[3529]},"children":[{"attributes":{"constant":false,"name":"idx","scope":3610,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3528,"name":"ElementaryTypeName","src":"8157:4:18"}],"id":3529,"name":"VariableDeclaration","src":"8157:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3530,"name":"Literal","src":"8168:1:18"}],"id":3531,"name":"VariableDeclarationStatement","src":"8157:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"uint256","value":"idx"},"id":3532,"name":"Identifier","src":"8171:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"uint256","value":"shortest"},"id":3533,"name":"Identifier","src":"8177:8:18"}],"id":3534,"name":"BinaryOperation","src":"8171:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"uint256","value":"idx"},"id":3535,"name":"Identifier","src":"8187:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3536,"name":"Literal","src":"8194:2:18"}],"id":3537,"name":"Assignment","src":"8187:9:18"}],"id":3538,"name":"ExpressionStatement","src":"8187:9:18"},{"children":[{"attributes":{"assignments":[3540],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":3609,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3539,"name":"ElementaryTypeName","src":"8212:4:18"}],"id":3540,"name":"VariableDeclaration","src":"8212:6:18"}],"id":3541,"name":"VariableDeclarationStatement","src":"8212:6:18"},{"attributes":{"assignments":[3543],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3609,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3542,"name":"ElementaryTypeName","src":"8232:4:18"}],"id":3543,"name":"VariableDeclaration","src":"8232:6:18"}],"id":3544,"name":"VariableDeclarationStatement","src":"8232:6:18"},{"attributes":{"externalReferences":[{"a":{"declaration":3540,"isOffset":false,"isSlot":false,"src":"8279:1:18","valueSize":1}},{"selfptr":{"declaration":3519,"isOffset":false,"isSlot":false,"src":"8290:7:18","valueSize":1}},{"b":{"declaration":3543,"isOffset":false,"isSlot":false,"src":"8315:1:18","valueSize":1}},{"otherptr":{"declaration":3524,"isOffset":false,"isSlot":false,"src":"8326:8:18","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":3545,"name":"InlineAssembly","src":"8252:97:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3540,"type":"uint256","value":"a"},"id":3546,"name":"Identifier","src":"8366:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3543,"type":"uint256","value":"b"},"id":3547,"name":"Identifier","src":"8371:1:18"}],"id":3548,"name":"BinaryOperation","src":"8366:6:18"},{"children":[{"attributes":{"assignments":[3550]},"children":[{"attributes":{"constant":false,"name":"mask","scope":3599,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3549,"name":"ElementaryTypeName","src":"8453:7:18"}],"id":3550,"name":"VariableDeclaration","src":"8453:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":3551,"name":"ElementaryTypeNameExpression","src":"8468:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3552,"name":"Literal","src":"8477:1:18"}],"id":3553,"name":"UnaryOperation","src":"8476:2:18"}],"id":3554,"name":"FunctionCall","src":"8468:11:18"}],"id":3555,"name":"VariableDeclarationStatement","src":"8453:26:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"uint256","value":"shortest"},"id":3556,"name":"Identifier","src":"8514:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3557,"name":"Literal","src":"8525:2:18"}],"id":3558,"name":"BinaryOperation","src":"8514:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"uint256","value":"mask"},"id":3559,"name":"Identifier","src":"8551:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3560,"name":"Literal","src":"8560:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":3561,"name":"Literal","src":"8566:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3562,"name":"Literal","src":"8571:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3503,"type":"uint256","value":"shortest"},"id":3563,"name":"Identifier","src":"8576:8:18"}],"id":3564,"name":"BinaryOperation","src":"8571:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"uint256","value":"idx"},"id":3565,"name":"Identifier","src":"8587:3:18"}],"id":3566,"name":"BinaryOperation","src":"8571:19:18"}],"id":3567,"name":"TupleExpression","src":"8570:21:18"}],"id":3568,"name":"BinaryOperation","src":"8566:25:18"}],"id":3569,"name":"TupleExpression","src":"8565:27:18"}],"id":3570,"name":"BinaryOperation","src":"8560:32:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3571,"name":"Literal","src":"8595:1:18"}],"id":3572,"name":"BinaryOperation","src":"8560:36:18"}],"id":3573,"name":"TupleExpression","src":"8559:38:18"}],"id":3574,"name":"UnaryOperation","src":"8558:39:18"}],"id":3575,"name":"Assignment","src":"8551:46:18"}],"id":3576,"name":"ExpressionStatement","src":"8551:46:18"}],"id":3577,"name":"Block","src":"8529:87:18"}],"id":3578,"name":"IfStatement","src":"8510:106:18"},{"attributes":{"assignments":[3580]},"children":[{"attributes":{"constant":false,"name":"diff","scope":3599,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3579,"name":"ElementaryTypeName","src":"8633:7:18"}],"id":3580,"name":"VariableDeclaration","src":"8633:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3540,"type":"uint256","value":"a"},"id":3581,"name":"Identifier","src":"8649:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"uint256","value":"mask"},"id":3582,"name":"Identifier","src":"8653:4:18"}],"id":3583,"name":"BinaryOperation","src":"8649:8:18"}],"id":3584,"name":"TupleExpression","src":"8648:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3543,"type":"uint256","value":"b"},"id":3585,"name":"Identifier","src":"8662:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3550,"type":"uint256","value":"mask"},"id":3586,"name":"Identifier","src":"8666:4:18"}],"id":3587,"name":"BinaryOperation","src":"8662:8:18"}],"id":3588,"name":"TupleExpression","src":"8661:10:18"}],"id":3589,"name":"BinaryOperation","src":"8648:23:18"}],"id":3590,"name":"VariableDeclarationStatement","src":"8633:38:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3580,"type":"uint256","value":"diff"},"id":3591,"name":"Identifier","src":"8693:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3592,"name":"Literal","src":"8701:1:18"}],"id":3593,"name":"BinaryOperation","src":"8693:9:18"},{"attributes":{"functionReturnParameters":3501},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3594,"name":"ElementaryTypeNameExpression","src":"8731:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3580,"type":"uint256","value":"diff"},"id":3595,"name":"Identifier","src":"8735:4:18"}],"id":3596,"name":"FunctionCall","src":"8731:9:18"}],"id":3597,"name":"Return","src":"8724:16:18"}],"id":3598,"name":"IfStatement","src":"8689:51:18"}],"id":3599,"name":"Block","src":"8374:381:18"}],"id":3600,"name":"IfStatement","src":"8362:393:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3519,"type":"uint256","value":"selfptr"},"id":3601,"name":"Identifier","src":"8768:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3602,"name":"Literal","src":"8779:2:18"}],"id":3603,"name":"Assignment","src":"8768:13:18"}],"id":3604,"name":"ExpressionStatement","src":"8768:13:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3524,"type":"uint256","value":"otherptr"},"id":3605,"name":"Identifier","src":"8795:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":3606,"name":"Literal","src":"8807:2:18"}],"id":3607,"name":"Assignment","src":"8795:14:18"}],"id":3608,"name":"ExpressionStatement","src":"8795:14:18"}],"id":3609,"name":"Block","src":"8198:622:18"}],"id":3610,"name":"ForStatement","src":"8152:668:18"},{"attributes":{"functionReturnParameters":3501},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3611,"name":"ElementaryTypeNameExpression","src":"8836:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3495,"type":"struct strings.slice memory","value":"self"},"id":3612,"name":"Identifier","src":"8840:4:18"}],"id":3613,"name":"MemberAccess","src":"8840:9:18"}],"id":3614,"name":"FunctionCall","src":"8836:14:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":3615,"name":"ElementaryTypeNameExpression","src":"8853:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3497,"type":"struct strings.slice memory","value":"other"},"id":3616,"name":"Identifier","src":"8857:5:18"}],"id":3617,"name":"MemberAccess","src":"8857:10:18"}],"id":3618,"name":"FunctionCall","src":"8853:15:18"}],"id":3619,"name":"BinaryOperation","src":"8836:32:18"}],"id":3620,"name":"Return","src":"8829:39:18"}],"id":3621,"name":"Block","src":"7965:910:18"}],"id":3622,"name":"FunctionDefinition","src":"7881:994:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3623,"name":"UserDefinedTypeName","src":"9135:5:18"}],"id":3624,"name":"VariableDeclaration","src":"9135:17:18"},{"attributes":{"constant":false,"name":"other","scope":3639,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3625,"name":"UserDefinedTypeName","src":"9154:5:18"}],"id":3626,"name":"VariableDeclaration","src":"9154:18:18"}],"id":3627,"name":"ParameterList","src":"9134:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3639,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3628,"name":"ElementaryTypeName","src":"9197:4:18"}],"id":3629,"name":"VariableDeclaration","src":"9197:4:18"}],"id":3630,"name":"ParameterList","src":"9196:6:18"},{"children":[{"attributes":{"functionReturnParameters":3630},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3622,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":3631,"name":"Identifier","src":"9220:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3624,"type":"struct strings.slice memory","value":"self"},"id":3632,"name":"Identifier","src":"9228:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3626,"type":"struct strings.slice memory","value":"other"},"id":3633,"name":"Identifier","src":"9234:5:18"}],"id":3634,"name":"FunctionCall","src":"9220:20:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3635,"name":"Literal","src":"9244:1:18"}],"id":3636,"name":"BinaryOperation","src":"9220:25:18"}],"id":3637,"name":"Return","src":"9213:32:18"}],"id":3638,"name":"Block","src":"9203:49:18"}],"id":3639,"name":"FunctionDefinition","src":"9119:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3757,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3640,"name":"UserDefinedTypeName","src":"9563:5:18"}],"id":3641,"name":"VariableDeclaration","src":"9563:17:18"},{"attributes":{"constant":false,"name":"rune","scope":3757,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3642,"name":"UserDefinedTypeName","src":"9582:5:18"}],"id":3643,"name":"VariableDeclaration","src":"9582:17:18"}],"id":3644,"name":"ParameterList","src":"9562:38:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3757,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3645,"name":"UserDefinedTypeName","src":"9624:5:18"}],"id":3646,"name":"VariableDeclaration","src":"9624:12:18"}],"id":3647,"name":"ParameterList","src":"9623:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3648,"name":"Identifier","src":"9648:4:18"}],"id":3650,"name":"MemberAccess","src":"9648:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3651,"name":"Identifier","src":"9660:4:18"}],"id":3652,"name":"MemberAccess","src":"9660:9:18"}],"id":3653,"name":"Assignment","src":"9648:21:18"}],"id":3654,"name":"ExpressionStatement","src":"9648:21:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3655,"name":"Identifier","src":"9684:4:18"}],"id":3656,"name":"MemberAccess","src":"9684:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3657,"name":"Literal","src":"9697:1:18"}],"id":3658,"name":"BinaryOperation","src":"9684:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3659,"name":"Identifier","src":"9714:4:18"}],"id":3661,"name":"MemberAccess","src":"9714:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3662,"name":"Literal","src":"9726:1:18"}],"id":3663,"name":"Assignment","src":"9714:13:18"}],"id":3664,"name":"ExpressionStatement","src":"9714:13:18"},{"attributes":{"functionReturnParameters":3647},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3665,"name":"Identifier","src":"9748:4:18"}],"id":3666,"name":"Return","src":"9741:11:18"}],"id":3667,"name":"Block","src":"9700:63:18"}],"id":3668,"name":"IfStatement","src":"9680:83:18"},{"attributes":{"assignments":[3670],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":3756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3669,"name":"ElementaryTypeName","src":"9773:4:18"}],"id":3670,"name":"VariableDeclaration","src":"9773:6:18"}],"id":3671,"name":"VariableDeclarationStatement","src":"9773:6:18"},{"attributes":{"assignments":[3673],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":3756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3672,"name":"ElementaryTypeName","src":"9789:4:18"}],"id":3673,"name":"VariableDeclaration","src":"9789:6:18"}],"id":3674,"name":"VariableDeclarationStatement","src":"9789:6:18"},{"attributes":{"externalReferences":[{"b":{"declaration":3673,"isOffset":false,"isSlot":false,"src":"9878:1:18","valueSize":1}},{"self":{"declaration":3641,"isOffset":false,"isSlot":false,"src":"9907:4:18","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":3675,"name":"InlineAssembly","src":"9867:65:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"b"},"id":3676,"name":"Identifier","src":"9945:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3677,"name":"Literal","src":"9949:4:18"}],"id":3678,"name":"BinaryOperation","src":"9945:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3679,"name":"Identifier","src":"9969:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3680,"name":"Literal","src":"9973:1:18"}],"id":3681,"name":"Assignment","src":"9969:5:18"}],"id":3682,"name":"ExpressionStatement","src":"9969:5:18"}],"id":3683,"name":"Block","src":"9955:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"b"},"id":3684,"name":"Identifier","src":"9995:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3685,"name":"Literal","src":"9999:4:18"}],"id":3686,"name":"BinaryOperation","src":"9995:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3687,"name":"Identifier","src":"10019:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3688,"name":"Literal","src":"10023:1:18"}],"id":3689,"name":"Assignment","src":"10019:5:18"}],"id":3690,"name":"ExpressionStatement","src":"10019:5:18"}],"id":3691,"name":"Block","src":"10005:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"b"},"id":3692,"name":"Identifier","src":"10045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3693,"name":"Literal","src":"10049:4:18"}],"id":3694,"name":"BinaryOperation","src":"10045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3695,"name":"Identifier","src":"10069:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3696,"name":"Literal","src":"10073:1:18"}],"id":3697,"name":"Assignment","src":"10069:5:18"}],"id":3698,"name":"ExpressionStatement","src":"10069:5:18"}],"id":3699,"name":"Block","src":"10055:30:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3700,"name":"Identifier","src":"10105:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3701,"name":"Literal","src":"10109:1:18"}],"id":3702,"name":"Assignment","src":"10105:5:18"}],"id":3703,"name":"ExpressionStatement","src":"10105:5:18"}],"id":3704,"name":"Block","src":"10091:30:18"}],"id":3705,"name":"IfStatement","src":"10041:80:18"}],"id":3706,"name":"IfStatement","src":"9991:130:18"}],"id":3707,"name":"IfStatement","src":"9941:180:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3708,"name":"Identifier","src":"10177:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3709,"name":"Identifier","src":"10181:4:18"}],"id":3710,"name":"MemberAccess","src":"10181:9:18"}],"id":3711,"name":"BinaryOperation","src":"10177:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3712,"name":"Identifier","src":"10206:4:18"}],"id":3714,"name":"MemberAccess","src":"10206:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3715,"name":"Identifier","src":"10218:4:18"}],"id":3716,"name":"MemberAccess","src":"10218:9:18"}],"id":3717,"name":"Assignment","src":"10206:21:18"}],"id":3718,"name":"ExpressionStatement","src":"10206:21:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3719,"name":"Identifier","src":"10241:4:18"}],"id":3721,"name":"MemberAccess","src":"10241:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3722,"name":"Identifier","src":"10254:4:18"}],"id":3723,"name":"MemberAccess","src":"10254:9:18"}],"id":3724,"name":"Assignment","src":"10241:22:18"}],"id":3725,"name":"ExpressionStatement","src":"10241:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3726,"name":"Identifier","src":"10277:4:18"}],"id":3728,"name":"MemberAccess","src":"10277:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3729,"name":"Literal","src":"10289:1:18"}],"id":3730,"name":"Assignment","src":"10277:13:18"}],"id":3731,"name":"ExpressionStatement","src":"10277:13:18"},{"attributes":{"functionReturnParameters":3647},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3732,"name":"Identifier","src":"10311:4:18"}],"id":3733,"name":"Return","src":"10304:11:18"}],"id":3734,"name":"Block","src":"10192:134:18"}],"id":3735,"name":"IfStatement","src":"10173:153:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3736,"name":"Identifier","src":"10336:4:18"}],"id":3738,"name":"MemberAccess","src":"10336:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3739,"name":"Identifier","src":"10349:1:18"}],"id":3740,"name":"Assignment","src":"10336:14:18"}],"id":3741,"name":"ExpressionStatement","src":"10336:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3641,"type":"struct strings.slice memory","value":"self"},"id":3742,"name":"Identifier","src":"10360:4:18"}],"id":3744,"name":"MemberAccess","src":"10360:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3745,"name":"Identifier","src":"10373:1:18"}],"id":3746,"name":"Assignment","src":"10360:14:18"}],"id":3747,"name":"ExpressionStatement","src":"10360:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3748,"name":"Identifier","src":"10384:4:18"}],"id":3750,"name":"MemberAccess","src":"10384:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"l"},"id":3751,"name":"Identifier","src":"10396:1:18"}],"id":3752,"name":"Assignment","src":"10384:13:18"}],"id":3753,"name":"ExpressionStatement","src":"10384:13:18"},{"attributes":{"functionReturnParameters":3647},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3643,"type":"struct strings.slice memory","value":"rune"},"id":3754,"name":"Identifier","src":"10414:4:18"}],"id":3755,"name":"Return","src":"10407:11:18"}],"id":3756,"name":"Block","src":"9638:787:18"}],"id":3757,"name":"FunctionDefinition","src":"9545:880:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3770,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3758,"name":"UserDefinedTypeName","src":"10683:5:18"}],"id":3759,"name":"VariableDeclaration","src":"10683:17:18"}],"id":3760,"name":"ParameterList","src":"10682:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3770,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3761,"name":"UserDefinedTypeName","src":"10725:5:18"}],"id":3762,"name":"VariableDeclaration","src":"10725:16:18"}],"id":3763,"name":"ParameterList","src":"10724:18:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[3757,3770],"referencedDeclaration":3757,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":3764,"name":"Identifier","src":"10753:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3759,"type":"struct strings.slice memory","value":"self"},"id":3765,"name":"Identifier","src":"10762:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3762,"type":"struct strings.slice memory","value":"ret"},"id":3766,"name":"Identifier","src":"10768:3:18"}],"id":3767,"name":"FunctionCall","src":"10753:19:18"}],"id":3768,"name":"ExpressionStatement","src":"10753:19:18"}],"id":3769,"name":"Block","src":"10743:36:18"}],"id":3770,"name":"FunctionDefinition","src":"10665:114:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3917,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3771,"name":"UserDefinedTypeName","src":"10988:5:18"}],"id":3772,"name":"VariableDeclaration","src":"10988:17:18"}],"id":3773,"name":"ParameterList","src":"10987:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3917,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3774,"name":"ElementaryTypeName","src":"11030:4:18"}],"id":3775,"name":"VariableDeclaration","src":"11030:8:18"}],"id":3776,"name":"ParameterList","src":"11029:10:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3772,"type":"struct strings.slice memory","value":"self"},"id":3777,"name":"Identifier","src":"11054:4:18"}],"id":3778,"name":"MemberAccess","src":"11054:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3779,"name":"Literal","src":"11067:1:18"}],"id":3780,"name":"BinaryOperation","src":"11054:14:18"},{"children":[{"attributes":{"functionReturnParameters":3776},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3781,"name":"Literal","src":"11091:1:18"}],"id":3782,"name":"Return","src":"11084:8:18"}],"id":3783,"name":"Block","src":"11070:33:18"}],"id":3784,"name":"IfStatement","src":"11050:53:18"},{"attributes":{"assignments":[3786],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":3916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3785,"name":"ElementaryTypeName","src":"11113:4:18"}],"id":3786,"name":"VariableDeclaration","src":"11113:9:18"}],"id":3787,"name":"VariableDeclarationStatement","src":"11113:9:18"},{"attributes":{"assignments":[3789],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":3916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3788,"name":"ElementaryTypeName","src":"11132:4:18"}],"id":3789,"name":"VariableDeclaration","src":"11132:11:18"}],"id":3790,"name":"VariableDeclarationStatement","src":"11132:11:18"},{"attributes":{"assignments":[3792]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":3916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3791,"name":"ElementaryTypeName","src":"11153:4:18"}],"id":3792,"name":"VariableDeclaration","src":"11153:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3793,"name":"Literal","src":"11168:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":3794,"name":"Literal","src":"11173:3:18"}],"id":3795,"name":"BinaryOperation","src":"11168:8:18"}],"id":3796,"name":"VariableDeclarationStatement","src":"11153:23:18"},{"attributes":{"externalReferences":[{"word":{"declaration":3786,"isOffset":false,"isSlot":false,"src":"11242:4:18","valueSize":1}},{"self":{"declaration":3772,"isOffset":false,"isSlot":false,"src":"11265:4:18","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":3797,"name":"InlineAssembly","src":"11231:47:18"},{"attributes":{"assignments":[3799]},"children":[{"attributes":{"constant":false,"name":"b","scope":3916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3798,"name":"ElementaryTypeName","src":"11287:4:18"}],"id":3799,"name":"VariableDeclaration","src":"11287:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3786,"type":"uint256","value":"word"},"id":3800,"name":"Identifier","src":"11296:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3792,"type":"uint256","value":"divisor"},"id":3801,"name":"Identifier","src":"11303:7:18"}],"id":3802,"name":"BinaryOperation","src":"11296:14:18"}],"id":3803,"name":"VariableDeclarationStatement","src":"11287:23:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3804,"name":"Identifier","src":"11324:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3805,"name":"Literal","src":"11328:4:18"}],"id":3806,"name":"BinaryOperation","src":"11324:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3807,"name":"Identifier","src":"11348:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3808,"name":"Identifier","src":"11354:1:18"}],"id":3809,"name":"Assignment","src":"11348:7:18"}],"id":3810,"name":"ExpressionStatement","src":"11348:7:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3811,"name":"Identifier","src":"11369:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3812,"name":"Literal","src":"11378:1:18"}],"id":3813,"name":"Assignment","src":"11369:10:18"}],"id":3814,"name":"ExpressionStatement","src":"11369:10:18"}],"id":3815,"name":"Block","src":"11334:56:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3816,"name":"Identifier","src":"11400:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":3817,"name":"Literal","src":"11404:4:18"}],"id":3818,"name":"BinaryOperation","src":"11400:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3819,"name":"Identifier","src":"11424:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3820,"name":"Identifier","src":"11430:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":3821,"name":"Literal","src":"11434:4:18"}],"id":3822,"name":"BinaryOperation","src":"11430:8:18"}],"id":3823,"name":"Assignment","src":"11424:14:18"}],"id":3824,"name":"ExpressionStatement","src":"11424:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3825,"name":"Identifier","src":"11452:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3826,"name":"Literal","src":"11461:1:18"}],"id":3827,"name":"Assignment","src":"11452:10:18"}],"id":3828,"name":"ExpressionStatement","src":"11452:10:18"}],"id":3829,"name":"Block","src":"11410:63:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3830,"name":"Identifier","src":"11483:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":3831,"name":"Literal","src":"11487:4:18"}],"id":3832,"name":"BinaryOperation","src":"11483:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3833,"name":"Identifier","src":"11507:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3834,"name":"Identifier","src":"11513:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":3835,"name":"Literal","src":"11517:4:18"}],"id":3836,"name":"BinaryOperation","src":"11513:8:18"}],"id":3837,"name":"Assignment","src":"11507:14:18"}],"id":3838,"name":"ExpressionStatement","src":"11507:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3839,"name":"Identifier","src":"11535:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3840,"name":"Literal","src":"11544:1:18"}],"id":3841,"name":"Assignment","src":"11535:10:18"}],"id":3842,"name":"ExpressionStatement","src":"11535:10:18"}],"id":3843,"name":"Block","src":"11493:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3844,"name":"Identifier","src":"11576:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3845,"name":"Identifier","src":"11582:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":3846,"name":"Literal","src":"11586:4:18"}],"id":3847,"name":"BinaryOperation","src":"11582:8:18"}],"id":3848,"name":"Assignment","src":"11576:14:18"}],"id":3849,"name":"ExpressionStatement","src":"11576:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3850,"name":"Identifier","src":"11604:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3851,"name":"Literal","src":"11613:1:18"}],"id":3852,"name":"Assignment","src":"11604:10:18"}],"id":3853,"name":"ExpressionStatement","src":"11604:10:18"}],"id":3854,"name":"Block","src":"11562:63:18"}],"id":3855,"name":"IfStatement","src":"11479:146:18"}],"id":3856,"name":"IfStatement","src":"11396:229:18"}],"id":3857,"name":"IfStatement","src":"11320:305:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3858,"name":"Identifier","src":"11681:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3772,"type":"struct strings.slice memory","value":"self"},"id":3859,"name":"Identifier","src":"11690:4:18"}],"id":3860,"name":"MemberAccess","src":"11690:9:18"}],"id":3861,"name":"BinaryOperation","src":"11681:18:18"},{"children":[{"attributes":{"functionReturnParameters":3776},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3862,"name":"Literal","src":"11722:1:18"}],"id":3863,"name":"Return","src":"11715:8:18"}],"id":3864,"name":"Block","src":"11701:33:18"}],"id":3865,"name":"IfStatement","src":"11677:57:18"},{"children":[{"attributes":{"assignments":[3867]},"children":[{"attributes":{"constant":false,"name":"i","scope":3913,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3866,"name":"ElementaryTypeName","src":"11749:4:18"}],"id":3867,"name":"VariableDeclaration","src":"11749:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3868,"name":"Literal","src":"11758:1:18"}],"id":3869,"name":"VariableDeclarationStatement","src":"11749:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3867,"type":"uint256","value":"i"},"id":3870,"name":"Identifier","src":"11761:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"uint256","value":"length"},"id":3871,"name":"Identifier","src":"11765:6:18"}],"id":3872,"name":"BinaryOperation","src":"11761:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3867,"type":"uint256","value":"i"},"id":3873,"name":"Identifier","src":"11773:1:18"}],"id":3874,"name":"UnaryOperation","src":"11773:3:18"}],"id":3875,"name":"ExpressionStatement","src":"11773:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3792,"type":"uint256","value":"divisor"},"id":3876,"name":"Identifier","src":"11792:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3792,"type":"uint256","value":"divisor"},"id":3877,"name":"Identifier","src":"11802:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":3878,"name":"Literal","src":"11812:3:18"}],"id":3879,"name":"BinaryOperation","src":"11802:13:18"}],"id":3880,"name":"Assignment","src":"11792:23:18"}],"id":3881,"name":"ExpressionStatement","src":"11792:23:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3882,"name":"Identifier","src":"11829:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3786,"type":"uint256","value":"word"},"id":3883,"name":"Identifier","src":"11834:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3792,"type":"uint256","value":"divisor"},"id":3884,"name":"Identifier","src":"11841:7:18"}],"id":3885,"name":"BinaryOperation","src":"11834:14:18"}],"id":3886,"name":"TupleExpression","src":"11833:16:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":3887,"name":"Literal","src":"11852:4:18"}],"id":3888,"name":"BinaryOperation","src":"11833:23:18"}],"id":3889,"name":"Assignment","src":"11829:27:18"}],"id":3890,"name":"ExpressionStatement","src":"11829:27:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3891,"name":"Identifier","src":"11874:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":3892,"name":"Literal","src":"11878:4:18"}],"id":3893,"name":"BinaryOperation","src":"11874:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":3894,"name":"Literal","src":"11886:4:18"}],"id":3895,"name":"BinaryOperation","src":"11874:16:18"},{"children":[{"attributes":{"functionReturnParameters":3776},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3896,"name":"Literal","src":"11959:1:18"}],"id":3897,"name":"Return","src":"11952:8:18"}],"id":3898,"name":"Block","src":"11892:83:18"}],"id":3899,"name":"IfStatement","src":"11870:105:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3900,"name":"Identifier","src":"11988:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3901,"name":"Identifier","src":"11995:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":3902,"name":"Literal","src":"12001:2:18"}],"id":3903,"name":"BinaryOperation","src":"11995:8:18"}],"id":3904,"name":"TupleExpression","src":"11994:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"uint256","value":"b"},"id":3905,"name":"Identifier","src":"12008:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":3906,"name":"Literal","src":"12012:4:18"}],"id":3907,"name":"BinaryOperation","src":"12008:8:18"}],"id":3908,"name":"TupleExpression","src":"12007:10:18"}],"id":3909,"name":"BinaryOperation","src":"11994:23:18"}],"id":3910,"name":"Assignment","src":"11988:29:18"}],"id":3911,"name":"ExpressionStatement","src":"11988:29:18"}],"id":3912,"name":"Block","src":"11778:250:18"}],"id":3913,"name":"ForStatement","src":"11744:284:18"},{"attributes":{"functionReturnParameters":3776},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3775,"type":"uint256","value":"ret"},"id":3914,"name":"Identifier","src":"12045:3:18"}],"id":3915,"name":"Return","src":"12038:10:18"}],"id":3916,"name":"Block","src":"11040:1015:18"}],"id":3917,"name":"FunctionDefinition","src":"10975:1080:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3926,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3918,"name":"UserDefinedTypeName","src":"12222:5:18"}],"id":3919,"name":"VariableDeclaration","src":"12222:17:18"}],"id":3920,"name":"ParameterList","src":"12221:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":3926,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3921,"name":"ElementaryTypeName","src":"12264:7:18"}],"id":3922,"name":"VariableDeclaration","src":"12264:11:18"}],"id":3923,"name":"ParameterList","src":"12263:13:18"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":3922,"isOffset":false,"isSlot":false,"src":"12310:3:18","valueSize":1}},{"self":{"declaration":3919,"isOffset":false,"isSlot":false,"src":"12337:4:18","valueSize":1}},{"self":{"declaration":3919,"isOffset":false,"isSlot":false,"src":"12355:4:18","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":3924,"name":"InlineAssembly","src":"12287:84:18"}],"id":3925,"name":"Block","src":"12277:100:18"}],"id":3926,"name":"FunctionDefinition","src":"12206:171:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":3960,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3927,"name":"UserDefinedTypeName","src":"12646:5:18"}],"id":3928,"name":"VariableDeclaration","src":"12646:17:18"},{"attributes":{"constant":false,"name":"needle","scope":3960,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3929,"name":"UserDefinedTypeName","src":"12665:5:18"}],"id":3930,"name":"VariableDeclaration","src":"12665:19:18"}],"id":3931,"name":"ParameterList","src":"12645:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":3960,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3932,"name":"ElementaryTypeName","src":"12709:4:18"}],"id":3933,"name":"VariableDeclaration","src":"12709:4:18"}],"id":3934,"name":"ParameterList","src":"12708:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"struct strings.slice memory","value":"self"},"id":3935,"name":"Identifier","src":"12729:4:18"}],"id":3936,"name":"MemberAccess","src":"12729:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"struct strings.slice memory","value":"needle"},"id":3937,"name":"Identifier","src":"12741:6:18"}],"id":3938,"name":"MemberAccess","src":"12741:11:18"}],"id":3939,"name":"BinaryOperation","src":"12729:23:18"},{"children":[{"attributes":{"functionReturnParameters":3934},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3940,"name":"Literal","src":"12775:5:18"}],"id":3941,"name":"Return","src":"12768:12:18"}],"id":3942,"name":"Block","src":"12754:37:18"}],"id":3943,"name":"IfStatement","src":"12725:66:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"struct strings.slice memory","value":"self"},"id":3944,"name":"Identifier","src":"12805:4:18"}],"id":3945,"name":"MemberAccess","src":"12805:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"struct strings.slice memory","value":"needle"},"id":3946,"name":"Identifier","src":"12818:6:18"}],"id":3947,"name":"MemberAccess","src":"12818:11:18"}],"id":3948,"name":"BinaryOperation","src":"12805:24:18"},{"children":[{"attributes":{"functionReturnParameters":3934},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3949,"name":"Literal","src":"12852:4:18"}],"id":3950,"name":"Return","src":"12845:11:18"}],"id":3951,"name":"Block","src":"12831:36:18"}],"id":3952,"name":"IfStatement","src":"12801:66:18"},{"attributes":{"assignments":[3954],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":3959,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3953,"name":"ElementaryTypeName","src":"12877:4:18"}],"id":3954,"name":"VariableDeclaration","src":"12877:10:18"}],"id":3955,"name":"VariableDeclarationStatement","src":"12877:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":3930,"isOffset":false,"isSlot":false,"src":"12940:6:18","valueSize":1}},{"self":{"declaration":3928,"isOffset":false,"isSlot":false,"src":"12985:4:18","valueSize":1}},{"equal":{"declaration":3954,"isOffset":false,"isSlot":false,"src":"13064:5:18","valueSize":1}},{"needle":{"declaration":3930,"isOffset":false,"isSlot":false,"src":"13037:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3956,"name":"InlineAssembly","src":"12897:246:18"},{"attributes":{"functionReturnParameters":3934},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3954,"type":"bool","value":"equal"},"id":3957,"name":"Identifier","src":"13159:5:18"}],"id":3958,"name":"Return","src":"13152:12:18"}],"id":3959,"name":"Block","src":"12715:456:18"}],"id":3960,"name":"FunctionDefinition","src":"12626:545:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4010,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3961,"name":"UserDefinedTypeName","src":"13459:5:18"}],"id":3962,"name":"VariableDeclaration","src":"13459:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4010,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3963,"name":"UserDefinedTypeName","src":"13478:5:18"}],"id":3964,"name":"VariableDeclaration","src":"13478:19:18"}],"id":3965,"name":"ParameterList","src":"13458:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4010,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":3966,"name":"UserDefinedTypeName","src":"13522:5:18"}],"id":3967,"name":"VariableDeclaration","src":"13522:12:18"}],"id":3968,"name":"ParameterList","src":"13521:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3969,"name":"Identifier","src":"13550:4:18"}],"id":3970,"name":"MemberAccess","src":"13550:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3964,"type":"struct strings.slice memory","value":"needle"},"id":3971,"name":"Identifier","src":"13562:6:18"}],"id":3972,"name":"MemberAccess","src":"13562:11:18"}],"id":3973,"name":"BinaryOperation","src":"13550:23:18"},{"children":[{"attributes":{"functionReturnParameters":3968},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3974,"name":"Identifier","src":"13596:4:18"}],"id":3975,"name":"Return","src":"13589:11:18"}],"id":3976,"name":"Block","src":"13575:36:18"}],"id":3977,"name":"IfStatement","src":"13546:65:18"},{"attributes":{"assignments":[3979]},"children":[{"attributes":{"constant":false,"name":"equal","scope":4009,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3978,"name":"ElementaryTypeName","src":"13621:4:18"}],"id":3979,"name":"VariableDeclaration","src":"13621:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3980,"name":"Literal","src":"13634:4:18"}],"id":3981,"name":"VariableDeclarationStatement","src":"13621:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3982,"name":"Identifier","src":"13652:4:18"}],"id":3983,"name":"MemberAccess","src":"13652:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3964,"type":"struct strings.slice memory","value":"needle"},"id":3984,"name":"Identifier","src":"13665:6:18"}],"id":3985,"name":"MemberAccess","src":"13665:11:18"}],"id":3986,"name":"BinaryOperation","src":"13652:24:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":3964,"isOffset":false,"isSlot":false,"src":"13739:6:18","valueSize":1}},{"self":{"declaration":3962,"isOffset":false,"isSlot":false,"src":"13788:4:18","valueSize":1}},{"equal":{"declaration":3979,"isOffset":false,"isSlot":false,"src":"13875:5:18","valueSize":1}},{"needle":{"declaration":3964,"isOffset":false,"isSlot":false,"src":"13844:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":3987,"name":"InlineAssembly","src":"13692:266:18"}],"id":3988,"name":"Block","src":"13678:290:18"}],"id":3989,"name":"IfStatement","src":"13648:320:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3979,"type":"bool","value":"equal"},"id":3990,"name":"Identifier","src":"13982:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3991,"name":"Identifier","src":"14003:4:18"}],"id":3993,"name":"MemberAccess","src":"14003:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3964,"type":"struct strings.slice memory","value":"needle"},"id":3994,"name":"Identifier","src":"14016:6:18"}],"id":3995,"name":"MemberAccess","src":"14016:11:18"}],"id":3996,"name":"Assignment","src":"14003:24:18"}],"id":3997,"name":"ExpressionStatement","src":"14003:24:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":3998,"name":"Identifier","src":"14041:4:18"}],"id":4000,"name":"MemberAccess","src":"14041:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3964,"type":"struct strings.slice memory","value":"needle"},"id":4001,"name":"Identifier","src":"14054:6:18"}],"id":4002,"name":"MemberAccess","src":"14054:11:18"}],"id":4003,"name":"Assignment","src":"14041:24:18"}],"id":4004,"name":"ExpressionStatement","src":"14041:24:18"}],"id":4005,"name":"Block","src":"13989:87:18"}],"id":4006,"name":"IfStatement","src":"13978:98:18"},{"attributes":{"functionReturnParameters":3968},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3962,"type":"struct strings.slice memory","value":"self"},"id":4007,"name":"Identifier","src":"14093:4:18"}],"id":4008,"name":"Return","src":"14086:11:18"}],"id":4009,"name":"Block","src":"13536:568:18"}],"id":4010,"name":"FunctionDefinition","src":"13443:661:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4054,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4011,"name":"UserDefinedTypeName","src":"14372:5:18"}],"id":4012,"name":"VariableDeclaration","src":"14372:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4054,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4013,"name":"UserDefinedTypeName","src":"14391:5:18"}],"id":4014,"name":"VariableDeclaration","src":"14391:19:18"}],"id":4015,"name":"ParameterList","src":"14371:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4054,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4016,"name":"ElementaryTypeName","src":"14435:4:18"}],"id":4017,"name":"VariableDeclaration","src":"14435:4:18"}],"id":4018,"name":"ParameterList","src":"14434:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4012,"type":"struct strings.slice memory","value":"self"},"id":4019,"name":"Identifier","src":"14455:4:18"}],"id":4020,"name":"MemberAccess","src":"14455:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4014,"type":"struct strings.slice memory","value":"needle"},"id":4021,"name":"Identifier","src":"14467:6:18"}],"id":4022,"name":"MemberAccess","src":"14467:11:18"}],"id":4023,"name":"BinaryOperation","src":"14455:23:18"},{"children":[{"attributes":{"functionReturnParameters":4018},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4024,"name":"Literal","src":"14501:5:18"}],"id":4025,"name":"Return","src":"14494:12:18"}],"id":4026,"name":"Block","src":"14480:37:18"}],"id":4027,"name":"IfStatement","src":"14451:66:18"},{"attributes":{"assignments":[4029]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":4053,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4028,"name":"ElementaryTypeName","src":"14527:4:18"}],"id":4029,"name":"VariableDeclaration","src":"14527:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4012,"type":"struct strings.slice memory","value":"self"},"id":4030,"name":"Identifier","src":"14542:4:18"}],"id":4031,"name":"MemberAccess","src":"14542:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4012,"type":"struct strings.slice memory","value":"self"},"id":4032,"name":"Identifier","src":"14554:4:18"}],"id":4033,"name":"MemberAccess","src":"14554:9:18"}],"id":4034,"name":"BinaryOperation","src":"14542:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4014,"type":"struct strings.slice memory","value":"needle"},"id":4035,"name":"Identifier","src":"14566:6:18"}],"id":4036,"name":"MemberAccess","src":"14566:11:18"}],"id":4037,"name":"BinaryOperation","src":"14542:35:18"}],"id":4038,"name":"VariableDeclarationStatement","src":"14527:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4029,"type":"uint256","value":"selfptr"},"id":4039,"name":"Identifier","src":"14592:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4014,"type":"struct strings.slice memory","value":"needle"},"id":4040,"name":"Identifier","src":"14603:6:18"}],"id":4041,"name":"MemberAccess","src":"14603:11:18"}],"id":4042,"name":"BinaryOperation","src":"14592:22:18"},{"children":[{"attributes":{"functionReturnParameters":4018},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4043,"name":"Literal","src":"14637:4:18"}],"id":4044,"name":"Return","src":"14630:11:18"}],"id":4045,"name":"Block","src":"14616:36:18"}],"id":4046,"name":"IfStatement","src":"14588:64:18"},{"attributes":{"assignments":[4048],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":4053,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4047,"name":"ElementaryTypeName","src":"14662:4:18"}],"id":4048,"name":"VariableDeclaration","src":"14662:10:18"}],"id":4049,"name":"VariableDeclarationStatement","src":"14662:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":4014,"isOffset":false,"isSlot":false,"src":"14725:6:18","valueSize":1}},{"equal":{"declaration":4048,"isOffset":false,"isSlot":false,"src":"14799:5:18","valueSize":1}},{"needle":{"declaration":4014,"isOffset":false,"isSlot":false,"src":"14772:6:18","valueSize":1}},{"selfptr":{"declaration":4029,"isOffset":false,"isSlot":false,"src":"14821:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":4050,"name":"InlineAssembly","src":"14682:196:18"},{"attributes":{"functionReturnParameters":4018},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4048,"type":"bool","value":"equal"},"id":4051,"name":"Identifier","src":"14895:5:18"}],"id":4052,"name":"Return","src":"14888:12:18"}],"id":4053,"name":"Block","src":"14441:466:18"}],"id":4054,"name":"FunctionDefinition","src":"14354:553:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4107,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4055,"name":"UserDefinedTypeName","src":"15186:5:18"}],"id":4056,"name":"VariableDeclaration","src":"15186:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4107,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4057,"name":"UserDefinedTypeName","src":"15205:5:18"}],"id":4058,"name":"VariableDeclaration","src":"15205:19:18"}],"id":4059,"name":"ParameterList","src":"15185:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4107,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4060,"name":"UserDefinedTypeName","src":"15249:5:18"}],"id":4061,"name":"VariableDeclaration","src":"15249:12:18"}],"id":4062,"name":"ParameterList","src":"15248:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4063,"name":"Identifier","src":"15277:4:18"}],"id":4064,"name":"MemberAccess","src":"15277:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4058,"type":"struct strings.slice memory","value":"needle"},"id":4065,"name":"Identifier","src":"15289:6:18"}],"id":4066,"name":"MemberAccess","src":"15289:11:18"}],"id":4067,"name":"BinaryOperation","src":"15277:23:18"},{"children":[{"attributes":{"functionReturnParameters":4062},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4068,"name":"Identifier","src":"15323:4:18"}],"id":4069,"name":"Return","src":"15316:11:18"}],"id":4070,"name":"Block","src":"15302:36:18"}],"id":4071,"name":"IfStatement","src":"15273:65:18"},{"attributes":{"assignments":[4073]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":4106,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4072,"name":"ElementaryTypeName","src":"15348:4:18"}],"id":4073,"name":"VariableDeclaration","src":"15348:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4074,"name":"Identifier","src":"15363:4:18"}],"id":4075,"name":"MemberAccess","src":"15363:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4076,"name":"Identifier","src":"15375:4:18"}],"id":4077,"name":"MemberAccess","src":"15375:9:18"}],"id":4078,"name":"BinaryOperation","src":"15363:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4058,"type":"struct strings.slice memory","value":"needle"},"id":4079,"name":"Identifier","src":"15387:6:18"}],"id":4080,"name":"MemberAccess","src":"15387:11:18"}],"id":4081,"name":"BinaryOperation","src":"15363:35:18"}],"id":4082,"name":"VariableDeclarationStatement","src":"15348:50:18"},{"attributes":{"assignments":[4084]},"children":[{"attributes":{"constant":false,"name":"equal","scope":4106,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4083,"name":"ElementaryTypeName","src":"15408:4:18"}],"id":4084,"name":"VariableDeclaration","src":"15408:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4085,"name":"Literal","src":"15421:4:18"}],"id":4086,"name":"VariableDeclarationStatement","src":"15408:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4073,"type":"uint256","value":"selfptr"},"id":4087,"name":"Identifier","src":"15439:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4058,"type":"struct strings.slice memory","value":"needle"},"id":4088,"name":"Identifier","src":"15450:6:18"}],"id":4089,"name":"MemberAccess","src":"15450:11:18"}],"id":4090,"name":"BinaryOperation","src":"15439:22:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":4058,"isOffset":false,"isSlot":false,"src":"15524:6:18","valueSize":1}},{"equal":{"declaration":4084,"isOffset":false,"isSlot":false,"src":"15606:5:18","valueSize":1}},{"needle":{"declaration":4058,"isOffset":false,"isSlot":false,"src":"15575:6:18","valueSize":1}},{"selfptr":{"declaration":4073,"isOffset":false,"isSlot":false,"src":"15628:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":4091,"name":"InlineAssembly","src":"15477:212:18"}],"id":4092,"name":"Block","src":"15463:236:18"}],"id":4093,"name":"IfStatement","src":"15435:264:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4084,"type":"bool","value":"equal"},"id":4094,"name":"Identifier","src":"15713:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4095,"name":"Identifier","src":"15734:4:18"}],"id":4097,"name":"MemberAccess","src":"15734:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4058,"type":"struct strings.slice memory","value":"needle"},"id":4098,"name":"Identifier","src":"15747:6:18"}],"id":4099,"name":"MemberAccess","src":"15747:11:18"}],"id":4100,"name":"Assignment","src":"15734:24:18"}],"id":4101,"name":"ExpressionStatement","src":"15734:24:18"}],"id":4102,"name":"Block","src":"15720:49:18"}],"id":4103,"name":"IfStatement","src":"15709:60:18"},{"attributes":{"functionReturnParameters":4062},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4056,"type":"struct strings.slice memory","value":"self"},"id":4104,"name":"Identifier","src":"15786:4:18"}],"id":4105,"name":"Return","src":"15779:11:18"}],"id":4106,"name":"Block","src":"15263:534:18"}],"id":4107,"name":"FunctionDefinition","src":"15171:626:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4108,"name":"ElementaryTypeName","src":"15971:4:18"}],"id":4109,"name":"VariableDeclaration","src":"15971:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4110,"name":"ElementaryTypeName","src":"15985:4:18"}],"id":4111,"name":"VariableDeclaration","src":"15985:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4112,"name":"ElementaryTypeName","src":"15999:4:18"}],"id":4113,"name":"VariableDeclaration","src":"15999:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4114,"name":"ElementaryTypeName","src":"16015:4:18"}],"id":4115,"name":"VariableDeclaration","src":"16015:14:18"}],"id":4116,"name":"ParameterList","src":"15970:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4117,"name":"ElementaryTypeName","src":"16053:4:18"}],"id":4118,"name":"VariableDeclaration","src":"16053:4:18"}],"id":4119,"name":"ParameterList","src":"16052:6:18"},{"children":[{"attributes":{"assignments":[4121]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4120,"name":"ElementaryTypeName","src":"16069:4:18"}],"id":4121,"name":"VariableDeclaration","src":"16069:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4111,"type":"uint256","value":"selfptr"},"id":4122,"name":"Identifier","src":"16080:7:18"}],"id":4123,"name":"VariableDeclarationStatement","src":"16069:18:18"},{"attributes":{"assignments":[4125],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":4227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4124,"name":"ElementaryTypeName","src":"16097:4:18"}],"id":4125,"name":"VariableDeclaration","src":"16097:8:18"}],"id":4126,"name":"VariableDeclarationStatement","src":"16097:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4127,"name":"Identifier","src":"16120:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4128,"name":"Identifier","src":"16133:7:18"}],"id":4129,"name":"BinaryOperation","src":"16120:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4130,"name":"Identifier","src":"16160:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4131,"name":"Literal","src":"16173:2:18"}],"id":4132,"name":"BinaryOperation","src":"16160:15:18"},{"children":[{"attributes":{"assignments":[4134]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4133,"name":"ElementaryTypeName","src":"16195:7:18"}],"id":4134,"name":"VariableDeclaration","src":"16195:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4135,"name":"ElementaryTypeNameExpression","src":"16210:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4136,"name":"Literal","src":"16220:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4137,"name":"Literal","src":"16226:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4138,"name":"Literal","src":"16231:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4139,"name":"Identifier","src":"16236:9:18"}],"id":4140,"name":"BinaryOperation","src":"16231:14:18"}],"id":4141,"name":"TupleExpression","src":"16230:16:18"}],"id":4142,"name":"BinaryOperation","src":"16226:20:18"}],"id":4143,"name":"TupleExpression","src":"16225:22:18"}],"id":4144,"name":"BinaryOperation","src":"16220:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4145,"name":"Literal","src":"16250:1:18"}],"id":4146,"name":"BinaryOperation","src":"16220:31:18"}],"id":4147,"name":"TupleExpression","src":"16219:33:18"}],"id":4148,"name":"UnaryOperation","src":"16218:34:18"}],"id":4149,"name":"FunctionCall","src":"16210:43:18"}],"id":4150,"name":"VariableDeclarationStatement","src":"16195:58:18"},{"attributes":{"assignments":[4152],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4151,"name":"ElementaryTypeName","src":"16272:7:18"}],"id":4152,"name":"VariableDeclaration","src":"16272:18:18"}],"id":4153,"name":"VariableDeclarationStatement","src":"16272:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":4152,"isOffset":false,"isSlot":false,"src":"16319:10:18","valueSize":1}},{"needleptr":{"declaration":4115,"isOffset":false,"isSlot":false,"src":"16343:9:18","valueSize":1}},{"mask":{"declaration":4134,"isOffset":false,"isSlot":false,"src":"16355:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":4154,"name":"InlineAssembly","src":"16308:54:18"},{"attributes":{"assignments":[4156]},"children":[{"attributes":{"constant":false,"name":"end","scope":4186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4155,"name":"ElementaryTypeName","src":"16380:4:18"}],"id":4156,"name":"VariableDeclaration","src":"16380:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4111,"type":"uint256","value":"selfptr"},"id":4157,"name":"Identifier","src":"16391:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4158,"name":"Identifier","src":"16401:7:18"}],"id":4159,"name":"BinaryOperation","src":"16391:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4160,"name":"Identifier","src":"16411:9:18"}],"id":4161,"name":"BinaryOperation","src":"16391:29:18"}],"id":4162,"name":"VariableDeclarationStatement","src":"16380:40:18"},{"attributes":{"assignments":[4164],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4163,"name":"ElementaryTypeName","src":"16438:7:18"}],"id":4164,"name":"VariableDeclaration","src":"16438:15:18"}],"id":4165,"name":"VariableDeclarationStatement","src":"16438:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4164,"isOffset":false,"isSlot":false,"src":"16482:7:18","valueSize":1}},{"ptr":{"declaration":4121,"isOffset":false,"isSlot":false,"src":"16503:3:18","valueSize":1}},{"mask":{"declaration":4134,"isOffset":false,"isSlot":false,"src":"16509:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4166,"name":"InlineAssembly","src":"16471:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4164,"type":"bytes32","value":"ptrdata"},"id":4167,"name":"Identifier","src":"16541:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4152,"type":"bytes32","value":"needledata"},"id":4168,"name":"Identifier","src":"16552:10:18"}],"id":4169,"name":"BinaryOperation","src":"16541:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4170,"name":"Identifier","src":"16590:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4156,"type":"uint256","value":"end"},"id":4171,"name":"Identifier","src":"16597:3:18"}],"id":4172,"name":"BinaryOperation","src":"16590:10:18"},{"attributes":{"functionReturnParameters":4119},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4111,"type":"uint256","value":"selfptr"},"id":4173,"name":"Identifier","src":"16633:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4174,"name":"Identifier","src":"16643:7:18"}],"id":4175,"name":"BinaryOperation","src":"16633:17:18"}],"id":4176,"name":"Return","src":"16626:24:18"}],"id":4177,"name":"IfStatement","src":"16586:64:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4178,"name":"Identifier","src":"16672:3:18"}],"id":4179,"name":"UnaryOperation","src":"16672:5:18"}],"id":4180,"name":"ExpressionStatement","src":"16672:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4164,"isOffset":false,"isSlot":false,"src":"16710:7:18","valueSize":1}},{"ptr":{"declaration":4121,"isOffset":false,"isSlot":false,"src":"16731:3:18","valueSize":1}},{"mask":{"declaration":4134,"isOffset":false,"isSlot":false,"src":"16737:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4181,"name":"InlineAssembly","src":"16699:45:18"}],"id":4182,"name":"Block","src":"16564:198:18"}],"id":4183,"name":"WhileStatement","src":"16534:228:18"},{"attributes":{"functionReturnParameters":4119},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4184,"name":"Identifier","src":"16786:3:18"}],"id":4185,"name":"Return","src":"16779:10:18"}],"id":4186,"name":"Block","src":"16177:627:18"},{"children":[{"attributes":{"assignments":[4188],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":4219,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4187,"name":"ElementaryTypeName","src":"16877:7:18"}],"id":4188,"name":"VariableDeclaration","src":"16877:12:18"}],"id":4189,"name":"VariableDeclarationStatement","src":"16877:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":4188,"isOffset":false,"isSlot":false,"src":"16918:4:18","valueSize":1}},{"needleptr":{"declaration":4115,"isOffset":false,"isSlot":false,"src":"16936:9:18","valueSize":1}},{"needlelen":{"declaration":4113,"isOffset":false,"isSlot":false,"src":"16947:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":4190,"name":"InlineAssembly","src":"16907:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4125,"type":"uint256","value":"idx"},"id":4191,"name":"Identifier","src":"16982:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4192,"name":"Literal","src":"16988:1:18"}],"id":4193,"name":"Assignment","src":"16982:7:18"}],"id":4194,"name":"ExpressionStatement","src":"16982:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4125,"type":"uint256","value":"idx"},"id":4195,"name":"Identifier","src":"16991:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4196,"name":"Identifier","src":"16998:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4113,"type":"uint256","value":"needlelen"},"id":4197,"name":"Identifier","src":"17008:9:18"}],"id":4198,"name":"BinaryOperation","src":"16998:19:18"}],"id":4199,"name":"BinaryOperation","src":"16991:26:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4125,"type":"uint256","value":"idx"},"id":4200,"name":"Identifier","src":"17019:3:18"}],"id":4201,"name":"UnaryOperation","src":"17019:5:18"}],"id":4202,"name":"ExpressionStatement","src":"17019:5:18"},{"children":[{"attributes":{"assignments":[4204],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":4217,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4203,"name":"ElementaryTypeName","src":"17048:7:18"}],"id":4204,"name":"VariableDeclaration","src":"17048:16:18"}],"id":4205,"name":"VariableDeclarationStatement","src":"17048:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":4204,"isOffset":false,"isSlot":false,"src":"17097:8:18","valueSize":1}},{"ptr":{"declaration":4121,"isOffset":false,"isSlot":false,"src":"17119:3:18","valueSize":1}},{"needlelen":{"declaration":4113,"isOffset":false,"isSlot":false,"src":"17124:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":4206,"name":"InlineAssembly","src":"17086:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"bytes32","value":"hash"},"id":4207,"name":"Identifier","src":"17161:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4204,"type":"bytes32","value":"testHash"},"id":4208,"name":"Identifier","src":"17169:8:18"}],"id":4209,"name":"BinaryOperation","src":"17161:16:18"},{"attributes":{"functionReturnParameters":4119},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4210,"name":"Identifier","src":"17210:3:18"}],"id":4211,"name":"Return","src":"17203:10:18"}],"id":4212,"name":"IfStatement","src":"17157:56:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4121,"type":"uint256","value":"ptr"},"id":4213,"name":"Identifier","src":"17235:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4214,"name":"Literal","src":"17242:1:18"}],"id":4215,"name":"Assignment","src":"17235:8:18"}],"id":4216,"name":"ExpressionStatement","src":"17235:8:18"}],"id":4217,"name":"Block","src":"17026:236:18"}],"id":4218,"name":"ForStatement","src":"16977:285:18"}],"id":4219,"name":"Block","src":"16810:466:18"}],"id":4220,"name":"IfStatement","src":"16156:1120:18"}],"id":4221,"name":"Block","src":"16142:1144:18"}],"id":4222,"name":"IfStatement","src":"16116:1170:18"},{"attributes":{"functionReturnParameters":4119},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4111,"type":"uint256","value":"selfptr"},"id":4223,"name":"Identifier","src":"17302:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4109,"type":"uint256","value":"selflen"},"id":4224,"name":"Identifier","src":"17312:7:18"}],"id":4225,"name":"BinaryOperation","src":"17302:17:18"}],"id":4226,"name":"Return","src":"17295:24:18"}],"id":4227,"name":"Block","src":"16059:1267:18"}],"id":4228,"name":"FunctionDefinition","src":"15954:1372:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4229,"name":"ElementaryTypeName","src":"17497:4:18"}],"id":4230,"name":"VariableDeclaration","src":"17497:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4231,"name":"ElementaryTypeName","src":"17511:4:18"}],"id":4232,"name":"VariableDeclaration","src":"17511:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4233,"name":"ElementaryTypeName","src":"17525:4:18"}],"id":4234,"name":"VariableDeclaration","src":"17525:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4235,"name":"ElementaryTypeName","src":"17541:4:18"}],"id":4236,"name":"VariableDeclaration","src":"17541:14:18"}],"id":4237,"name":"ParameterList","src":"17496:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4238,"name":"ElementaryTypeName","src":"17579:4:18"}],"id":4239,"name":"VariableDeclaration","src":"17579:4:18"}],"id":4240,"name":"ParameterList","src":"17578:6:18"},{"children":[{"attributes":{"assignments":[4242],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4344,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4241,"name":"ElementaryTypeName","src":"17595:4:18"}],"id":4242,"name":"VariableDeclaration","src":"17595:8:18"}],"id":4243,"name":"VariableDeclarationStatement","src":"17595:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4244,"name":"Identifier","src":"17618:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4230,"type":"uint256","value":"selflen"},"id":4245,"name":"Identifier","src":"17631:7:18"}],"id":4246,"name":"BinaryOperation","src":"17618:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4247,"name":"Identifier","src":"17658:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4248,"name":"Literal","src":"17671:2:18"}],"id":4249,"name":"BinaryOperation","src":"17658:15:18"},{"children":[{"attributes":{"assignments":[4251]},"children":[{"attributes":{"constant":false,"name":"mask","scope":4303,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4250,"name":"ElementaryTypeName","src":"17693:7:18"}],"id":4251,"name":"VariableDeclaration","src":"17693:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4252,"name":"ElementaryTypeNameExpression","src":"17708:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4253,"name":"Literal","src":"17718:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":4254,"name":"Literal","src":"17724:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4255,"name":"Literal","src":"17729:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4256,"name":"Identifier","src":"17734:9:18"}],"id":4257,"name":"BinaryOperation","src":"17729:14:18"}],"id":4258,"name":"TupleExpression","src":"17728:16:18"}],"id":4259,"name":"BinaryOperation","src":"17724:20:18"}],"id":4260,"name":"TupleExpression","src":"17723:22:18"}],"id":4261,"name":"BinaryOperation","src":"17718:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4262,"name":"Literal","src":"17748:1:18"}],"id":4263,"name":"BinaryOperation","src":"17718:31:18"}],"id":4264,"name":"TupleExpression","src":"17717:33:18"}],"id":4265,"name":"UnaryOperation","src":"17716:34:18"}],"id":4266,"name":"FunctionCall","src":"17708:43:18"}],"id":4267,"name":"VariableDeclarationStatement","src":"17693:58:18"},{"attributes":{"assignments":[4269],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":4303,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4268,"name":"ElementaryTypeName","src":"17770:7:18"}],"id":4269,"name":"VariableDeclaration","src":"17770:18:18"}],"id":4270,"name":"VariableDeclarationStatement","src":"17770:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":4269,"isOffset":false,"isSlot":false,"src":"17817:10:18","valueSize":1}},{"needleptr":{"declaration":4236,"isOffset":false,"isSlot":false,"src":"17841:9:18","valueSize":1}},{"mask":{"declaration":4251,"isOffset":false,"isSlot":false,"src":"17853:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":4271,"name":"InlineAssembly","src":"17806:54:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4272,"name":"Identifier","src":"17878:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4273,"name":"Identifier","src":"17884:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4230,"type":"uint256","value":"selflen"},"id":4274,"name":"Identifier","src":"17894:7:18"}],"id":4275,"name":"BinaryOperation","src":"17884:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4276,"name":"Identifier","src":"17904:9:18"}],"id":4277,"name":"BinaryOperation","src":"17884:29:18"}],"id":4278,"name":"Assignment","src":"17878:35:18"}],"id":4279,"name":"ExpressionStatement","src":"17878:35:18"},{"attributes":{"assignments":[4281],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":4303,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4280,"name":"ElementaryTypeName","src":"17931:7:18"}],"id":4281,"name":"VariableDeclaration","src":"17931:15:18"}],"id":4282,"name":"VariableDeclarationStatement","src":"17931:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4281,"isOffset":false,"isSlot":false,"src":"17975:7:18","valueSize":1}},{"ptr":{"declaration":4242,"isOffset":false,"isSlot":false,"src":"17996:3:18","valueSize":1}},{"mask":{"declaration":4251,"isOffset":false,"isSlot":false,"src":"18002:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4283,"name":"InlineAssembly","src":"17964:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4281,"type":"bytes32","value":"ptrdata"},"id":4284,"name":"Identifier","src":"18034:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4269,"type":"bytes32","value":"needledata"},"id":4285,"name":"Identifier","src":"18045:10:18"}],"id":4286,"name":"BinaryOperation","src":"18034:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4287,"name":"Identifier","src":"18083:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4288,"name":"Identifier","src":"18090:7:18"}],"id":4289,"name":"BinaryOperation","src":"18083:14:18"},{"attributes":{"functionReturnParameters":4240},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4290,"name":"Identifier","src":"18130:7:18"}],"id":4291,"name":"Return","src":"18123:14:18"}],"id":4292,"name":"IfStatement","src":"18079:58:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4293,"name":"Identifier","src":"18159:3:18"}],"id":4294,"name":"UnaryOperation","src":"18159:5:18"}],"id":4295,"name":"ExpressionStatement","src":"18159:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":4281,"isOffset":false,"isSlot":false,"src":"18197:7:18","valueSize":1}},{"ptr":{"declaration":4242,"isOffset":false,"isSlot":false,"src":"18218:3:18","valueSize":1}},{"mask":{"declaration":4251,"isOffset":false,"isSlot":false,"src":"18224:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":4296,"name":"InlineAssembly","src":"18186:45:18"}],"id":4297,"name":"Block","src":"18057:192:18"}],"id":4298,"name":"WhileStatement","src":"18027:222:18"},{"attributes":{"functionReturnParameters":4240},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4299,"name":"Identifier","src":"18273:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4300,"name":"Identifier","src":"18279:9:18"}],"id":4301,"name":"BinaryOperation","src":"18273:15:18"}],"id":4302,"name":"Return","src":"18266:22:18"}],"id":4303,"name":"Block","src":"17675:628:18"},{"children":[{"attributes":{"assignments":[4305],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":4338,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4304,"name":"ElementaryTypeName","src":"18376:7:18"}],"id":4305,"name":"VariableDeclaration","src":"18376:12:18"}],"id":4306,"name":"VariableDeclarationStatement","src":"18376:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":4305,"isOffset":false,"isSlot":false,"src":"18417:4:18","valueSize":1}},{"needleptr":{"declaration":4236,"isOffset":false,"isSlot":false,"src":"18435:9:18","valueSize":1}},{"needlelen":{"declaration":4234,"isOffset":false,"isSlot":false,"src":"18446:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":4307,"name":"InlineAssembly","src":"18406:52:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4308,"name":"Identifier","src":"18475:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4309,"name":"Identifier","src":"18481:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4230,"type":"uint256","value":"selflen"},"id":4310,"name":"Identifier","src":"18492:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4311,"name":"Identifier","src":"18502:9:18"}],"id":4312,"name":"BinaryOperation","src":"18492:19:18"}],"id":4313,"name":"TupleExpression","src":"18491:21:18"}],"id":4314,"name":"BinaryOperation","src":"18481:31:18"}],"id":4315,"name":"Assignment","src":"18475:37:18"}],"id":4316,"name":"ExpressionStatement","src":"18475:37:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4317,"name":"Identifier","src":"18537:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4318,"name":"Identifier","src":"18544:7:18"}],"id":4319,"name":"BinaryOperation","src":"18537:14:18"},{"children":[{"attributes":{"assignments":[4321],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":4336,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4320,"name":"ElementaryTypeName","src":"18575:7:18"}],"id":4321,"name":"VariableDeclaration","src":"18575:16:18"}],"id":4322,"name":"VariableDeclarationStatement","src":"18575:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":4321,"isOffset":false,"isSlot":false,"src":"18624:8:18","valueSize":1}},{"ptr":{"declaration":4242,"isOffset":false,"isSlot":false,"src":"18646:3:18","valueSize":1}},{"needlelen":{"declaration":4234,"isOffset":false,"isSlot":false,"src":"18651:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":4323,"name":"InlineAssembly","src":"18613:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4305,"type":"bytes32","value":"hash"},"id":4324,"name":"Identifier","src":"18688:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4321,"type":"bytes32","value":"testHash"},"id":4325,"name":"Identifier","src":"18696:8:18"}],"id":4326,"name":"BinaryOperation","src":"18688:16:18"},{"attributes":{"functionReturnParameters":4240},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4327,"name":"Identifier","src":"18737:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4234,"type":"uint256","value":"needlelen"},"id":4328,"name":"Identifier","src":"18743:9:18"}],"id":4329,"name":"BinaryOperation","src":"18737:15:18"}],"id":4330,"name":"Return","src":"18730:22:18"}],"id":4331,"name":"IfStatement","src":"18684:68:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4242,"type":"uint256","value":"ptr"},"id":4332,"name":"Identifier","src":"18774:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4333,"name":"Literal","src":"18781:1:18"}],"id":4334,"name":"Assignment","src":"18774:8:18"}],"id":4335,"name":"ExpressionStatement","src":"18774:8:18"}],"id":4336,"name":"Block","src":"18553:248:18"}],"id":4337,"name":"WhileStatement","src":"18530:271:18"}],"id":4338,"name":"Block","src":"18309:506:18"}],"id":4339,"name":"IfStatement","src":"17654:1161:18"}],"id":4340,"name":"Block","src":"17640:1185:18"}],"id":4341,"name":"IfStatement","src":"17614:1211:18"},{"attributes":{"functionReturnParameters":4240},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4232,"type":"uint256","value":"selfptr"},"id":4342,"name":"Identifier","src":"18841:7:18"}],"id":4343,"name":"Return","src":"18834:14:18"}],"id":4344,"name":"Block","src":"17585:1270:18"}],"id":4345,"name":"FunctionDefinition","src":"17479:1376:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4385,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4346,"name":"UserDefinedTypeName","src":"19205:5:18"}],"id":4347,"name":"VariableDeclaration","src":"19205:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4385,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4348,"name":"UserDefinedTypeName","src":"19224:5:18"}],"id":4349,"name":"VariableDeclaration","src":"19224:19:18"}],"id":4350,"name":"ParameterList","src":"19204:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4385,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4351,"name":"UserDefinedTypeName","src":"19268:5:18"}],"id":4352,"name":"VariableDeclaration","src":"19268:12:18"}],"id":4353,"name":"ParameterList","src":"19267:14:18"},{"children":[{"attributes":{"assignments":[4355]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4384,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4354,"name":"ElementaryTypeName","src":"19292:4:18"}],"id":4355,"name":"VariableDeclaration","src":"19292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4228,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4356,"name":"Identifier","src":"19303:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4357,"name":"Identifier","src":"19311:4:18"}],"id":4358,"name":"MemberAccess","src":"19311:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4359,"name":"Identifier","src":"19322:4:18"}],"id":4360,"name":"MemberAccess","src":"19322:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4349,"type":"struct strings.slice memory","value":"needle"},"id":4361,"name":"Identifier","src":"19333:6:18"}],"id":4362,"name":"MemberAccess","src":"19333:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4349,"type":"struct strings.slice memory","value":"needle"},"id":4363,"name":"Identifier","src":"19346:6:18"}],"id":4364,"name":"MemberAccess","src":"19346:11:18"}],"id":4365,"name":"FunctionCall","src":"19303:55:18"}],"id":4366,"name":"VariableDeclarationStatement","src":"19292:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4367,"name":"Identifier","src":"19368:4:18"}],"id":4369,"name":"MemberAccess","src":"19368:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"ptr"},"id":4370,"name":"Identifier","src":"19381:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4371,"name":"Identifier","src":"19387:4:18"}],"id":4372,"name":"MemberAccess","src":"19387:9:18"}],"id":4373,"name":"BinaryOperation","src":"19381:15:18"}],"id":4374,"name":"Assignment","src":"19368:28:18"}],"id":4375,"name":"ExpressionStatement","src":"19368:28:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4376,"name":"Identifier","src":"19406:4:18"}],"id":4378,"name":"MemberAccess","src":"19406:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"ptr"},"id":4379,"name":"Identifier","src":"19418:3:18"}],"id":4380,"name":"Assignment","src":"19406:15:18"}],"id":4381,"name":"ExpressionStatement","src":"19406:15:18"},{"attributes":{"functionReturnParameters":4353},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"struct strings.slice memory","value":"self"},"id":4382,"name":"Identifier","src":"19438:4:18"}],"id":4383,"name":"Return","src":"19431:11:18"}],"id":4384,"name":"Block","src":"19282:167:18"}],"id":4385,"name":"FunctionDefinition","src":"19191:258:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4419,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4386,"name":"UserDefinedTypeName","src":"19823:5:18"}],"id":4387,"name":"VariableDeclaration","src":"19823:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4419,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4388,"name":"UserDefinedTypeName","src":"19842:5:18"}],"id":4389,"name":"VariableDeclaration","src":"19842:19:18"}],"id":4390,"name":"ParameterList","src":"19822:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4419,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4391,"name":"UserDefinedTypeName","src":"19886:5:18"}],"id":4392,"name":"VariableDeclaration","src":"19886:12:18"}],"id":4393,"name":"ParameterList","src":"19885:14:18"},{"children":[{"attributes":{"assignments":[4395]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4418,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4394,"name":"ElementaryTypeName","src":"19910:4:18"}],"id":4395,"name":"VariableDeclaration","src":"19910:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4396,"name":"Identifier","src":"19921:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4397,"name":"Identifier","src":"19930:4:18"}],"id":4398,"name":"MemberAccess","src":"19930:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4399,"name":"Identifier","src":"19941:4:18"}],"id":4400,"name":"MemberAccess","src":"19941:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4389,"type":"struct strings.slice memory","value":"needle"},"id":4401,"name":"Identifier","src":"19952:6:18"}],"id":4402,"name":"MemberAccess","src":"19952:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4389,"type":"struct strings.slice memory","value":"needle"},"id":4403,"name":"Identifier","src":"19965:6:18"}],"id":4404,"name":"MemberAccess","src":"19965:11:18"}],"id":4405,"name":"FunctionCall","src":"19921:56:18"}],"id":4406,"name":"VariableDeclarationStatement","src":"19910:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4407,"name":"Identifier","src":"19987:4:18"}],"id":4409,"name":"MemberAccess","src":"19987:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4395,"type":"uint256","value":"ptr"},"id":4410,"name":"Identifier","src":"19999:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4411,"name":"Identifier","src":"20005:4:18"}],"id":4412,"name":"MemberAccess","src":"20005:9:18"}],"id":4413,"name":"BinaryOperation","src":"19999:15:18"}],"id":4414,"name":"Assignment","src":"19987:27:18"}],"id":4415,"name":"ExpressionStatement","src":"19987:27:18"},{"attributes":{"functionReturnParameters":4393},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4387,"type":"struct strings.slice memory","value":"self"},"id":4416,"name":"Identifier","src":"20031:4:18"}],"id":4417,"name":"Return","src":"20024:11:18"}],"id":4418,"name":"Block","src":"19900:142:18"}],"id":4419,"name":"FunctionDefinition","src":"19808:234:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4497,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4420,"name":"UserDefinedTypeName","src":"20563:5:18"}],"id":4421,"name":"VariableDeclaration","src":"20563:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4497,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4422,"name":"UserDefinedTypeName","src":"20582:5:18"}],"id":4423,"name":"VariableDeclaration","src":"20582:19:18"},{"attributes":{"constant":false,"name":"token","scope":4497,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4424,"name":"UserDefinedTypeName","src":"20603:5:18"}],"id":4425,"name":"VariableDeclaration","src":"20603:18:18"}],"id":4426,"name":"ParameterList","src":"20562:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4497,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4427,"name":"UserDefinedTypeName","src":"20646:5:18"}],"id":4428,"name":"VariableDeclaration","src":"20646:12:18"}],"id":4429,"name":"ParameterList","src":"20645:14:18"},{"children":[{"attributes":{"assignments":[4431]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4430,"name":"ElementaryTypeName","src":"20670:4:18"}],"id":4431,"name":"VariableDeclaration","src":"20670:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4228,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4432,"name":"Identifier","src":"20681:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4433,"name":"Identifier","src":"20689:4:18"}],"id":4434,"name":"MemberAccess","src":"20689:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4435,"name":"Identifier","src":"20700:4:18"}],"id":4436,"name":"MemberAccess","src":"20700:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4423,"type":"struct strings.slice memory","value":"needle"},"id":4437,"name":"Identifier","src":"20711:6:18"}],"id":4438,"name":"MemberAccess","src":"20711:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4423,"type":"struct strings.slice memory","value":"needle"},"id":4439,"name":"Identifier","src":"20724:6:18"}],"id":4440,"name":"MemberAccess","src":"20724:11:18"}],"id":4441,"name":"FunctionCall","src":"20681:55:18"}],"id":4442,"name":"VariableDeclarationStatement","src":"20670:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4425,"type":"struct strings.slice memory","value":"token"},"id":4443,"name":"Identifier","src":"20746:5:18"}],"id":4445,"name":"MemberAccess","src":"20746:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4446,"name":"Identifier","src":"20759:4:18"}],"id":4447,"name":"MemberAccess","src":"20759:9:18"}],"id":4448,"name":"Assignment","src":"20746:22:18"}],"id":4449,"name":"ExpressionStatement","src":"20746:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4425,"type":"struct strings.slice memory","value":"token"},"id":4450,"name":"Identifier","src":"20778:5:18"}],"id":4452,"name":"MemberAccess","src":"20778:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4431,"type":"uint256","value":"ptr"},"id":4453,"name":"Identifier","src":"20791:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4454,"name":"Identifier","src":"20797:4:18"}],"id":4455,"name":"MemberAccess","src":"20797:9:18"}],"id":4456,"name":"BinaryOperation","src":"20791:15:18"}],"id":4457,"name":"Assignment","src":"20778:28:18"}],"id":4458,"name":"ExpressionStatement","src":"20778:28:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4431,"type":"uint256","value":"ptr"},"id":4459,"name":"Identifier","src":"20820:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4460,"name":"Identifier","src":"20827:4:18"}],"id":4461,"name":"MemberAccess","src":"20827:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4462,"name":"Identifier","src":"20839:4:18"}],"id":4463,"name":"MemberAccess","src":"20839:9:18"}],"id":4464,"name":"BinaryOperation","src":"20827:21:18"}],"id":4465,"name":"BinaryOperation","src":"20820:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4466,"name":"Identifier","src":"20889:4:18"}],"id":4468,"name":"MemberAccess","src":"20889:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4469,"name":"Literal","src":"20901:1:18"}],"id":4470,"name":"Assignment","src":"20889:13:18"}],"id":4471,"name":"ExpressionStatement","src":"20889:13:18"}],"id":4472,"name":"Block","src":"20850:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4473,"name":"Identifier","src":"20933:4:18"}],"id":4475,"name":"MemberAccess","src":"20933:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4425,"type":"struct strings.slice memory","value":"token"},"id":4476,"name":"Identifier","src":"20946:5:18"}],"id":4477,"name":"MemberAccess","src":"20946:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4423,"type":"struct strings.slice memory","value":"needle"},"id":4478,"name":"Identifier","src":"20959:6:18"}],"id":4479,"name":"MemberAccess","src":"20959:11:18"}],"id":4480,"name":"BinaryOperation","src":"20946:24:18"}],"id":4481,"name":"Assignment","src":"20933:37:18"}],"id":4482,"name":"ExpressionStatement","src":"20933:37:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4421,"type":"struct strings.slice memory","value":"self"},"id":4483,"name":"Identifier","src":"20984:4:18"}],"id":4485,"name":"MemberAccess","src":"20984:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4431,"type":"uint256","value":"ptr"},"id":4486,"name":"Identifier","src":"20996:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4423,"type":"struct strings.slice memory","value":"needle"},"id":4487,"name":"Identifier","src":"21002:6:18"}],"id":4488,"name":"MemberAccess","src":"21002:11:18"}],"id":4489,"name":"BinaryOperation","src":"20996:17:18"}],"id":4490,"name":"Assignment","src":"20984:29:18"}],"id":4491,"name":"ExpressionStatement","src":"20984:29:18"}],"id":4492,"name":"Block","src":"20919:105:18"}],"id":4493,"name":"IfStatement","src":"20816:208:18"},{"attributes":{"functionReturnParameters":4429},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4425,"type":"struct strings.slice memory","value":"token"},"id":4494,"name":"Identifier","src":"21040:5:18"}],"id":4495,"name":"Return","src":"21033:12:18"}],"id":4496,"name":"Block","src":"20660:392:18"}],"id":4497,"name":"FunctionDefinition","src":"20548:504:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4513,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4498,"name":"UserDefinedTypeName","src":"21538:5:18"}],"id":4499,"name":"VariableDeclaration","src":"21538:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4513,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4500,"name":"UserDefinedTypeName","src":"21557:5:18"}],"id":4501,"name":"VariableDeclaration","src":"21557:19:18"}],"id":4502,"name":"ParameterList","src":"21537:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":4513,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4503,"name":"UserDefinedTypeName","src":"21601:5:18"}],"id":4504,"name":"VariableDeclaration","src":"21601:18:18"}],"id":4505,"name":"ParameterList","src":"21600:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[4497,4513],"referencedDeclaration":4497,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":4506,"name":"Identifier","src":"21631:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4499,"type":"struct strings.slice memory","value":"self"},"id":4507,"name":"Identifier","src":"21637:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4501,"type":"struct strings.slice memory","value":"needle"},"id":4508,"name":"Identifier","src":"21643:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4504,"type":"struct strings.slice memory","value":"token"},"id":4509,"name":"Identifier","src":"21651:5:18"}],"id":4510,"name":"FunctionCall","src":"21631:26:18"}],"id":4511,"name":"ExpressionStatement","src":"21631:26:18"}],"id":4512,"name":"Block","src":"21621:43:18"}],"id":4513,"name":"FunctionDefinition","src":"21523:141:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4582,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4514,"name":"UserDefinedTypeName","src":"22185:5:18"}],"id":4515,"name":"VariableDeclaration","src":"22185:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4582,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4516,"name":"UserDefinedTypeName","src":"22204:5:18"}],"id":4517,"name":"VariableDeclaration","src":"22204:19:18"},{"attributes":{"constant":false,"name":"token","scope":4582,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4518,"name":"UserDefinedTypeName","src":"22225:5:18"}],"id":4519,"name":"VariableDeclaration","src":"22225:18:18"}],"id":4520,"name":"ParameterList","src":"22184:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4582,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4521,"name":"UserDefinedTypeName","src":"22268:5:18"}],"id":4522,"name":"VariableDeclaration","src":"22268:12:18"}],"id":4523,"name":"ParameterList","src":"22267:14:18"},{"children":[{"attributes":{"assignments":[4525]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4581,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4524,"name":"ElementaryTypeName","src":"22292:4:18"}],"id":4525,"name":"VariableDeclaration","src":"22292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4526,"name":"Identifier","src":"22303:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4527,"name":"Identifier","src":"22312:4:18"}],"id":4528,"name":"MemberAccess","src":"22312:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4529,"name":"Identifier","src":"22323:4:18"}],"id":4530,"name":"MemberAccess","src":"22323:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4517,"type":"struct strings.slice memory","value":"needle"},"id":4531,"name":"Identifier","src":"22334:6:18"}],"id":4532,"name":"MemberAccess","src":"22334:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4517,"type":"struct strings.slice memory","value":"needle"},"id":4533,"name":"Identifier","src":"22347:6:18"}],"id":4534,"name":"MemberAccess","src":"22347:11:18"}],"id":4535,"name":"FunctionCall","src":"22303:56:18"}],"id":4536,"name":"VariableDeclarationStatement","src":"22292:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4519,"type":"struct strings.slice memory","value":"token"},"id":4537,"name":"Identifier","src":"22369:5:18"}],"id":4539,"name":"MemberAccess","src":"22369:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4525,"type":"uint256","value":"ptr"},"id":4540,"name":"Identifier","src":"22382:3:18"}],"id":4541,"name":"Assignment","src":"22369:16:18"}],"id":4542,"name":"ExpressionStatement","src":"22369:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4519,"type":"struct strings.slice memory","value":"token"},"id":4543,"name":"Identifier","src":"22395:5:18"}],"id":4545,"name":"MemberAccess","src":"22395:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4546,"name":"Identifier","src":"22408:4:18"}],"id":4547,"name":"MemberAccess","src":"22408:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4525,"type":"uint256","value":"ptr"},"id":4548,"name":"Identifier","src":"22421:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4549,"name":"Identifier","src":"22427:4:18"}],"id":4550,"name":"MemberAccess","src":"22427:9:18"}],"id":4551,"name":"BinaryOperation","src":"22421:15:18"}],"id":4552,"name":"TupleExpression","src":"22420:17:18"}],"id":4553,"name":"BinaryOperation","src":"22408:29:18"}],"id":4554,"name":"Assignment","src":"22395:42:18"}],"id":4555,"name":"ExpressionStatement","src":"22395:42:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4525,"type":"uint256","value":"ptr"},"id":4556,"name":"Identifier","src":"22451:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4557,"name":"Identifier","src":"22458:4:18"}],"id":4558,"name":"MemberAccess","src":"22458:9:18"}],"id":4559,"name":"BinaryOperation","src":"22451:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4560,"name":"Identifier","src":"22508:4:18"}],"id":4562,"name":"MemberAccess","src":"22508:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4563,"name":"Literal","src":"22520:1:18"}],"id":4564,"name":"Assignment","src":"22508:13:18"}],"id":4565,"name":"ExpressionStatement","src":"22508:13:18"}],"id":4566,"name":"Block","src":"22469:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"struct strings.slice memory","value":"self"},"id":4567,"name":"Identifier","src":"22552:4:18"}],"id":4569,"name":"MemberAccess","src":"22552:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4519,"type":"struct strings.slice memory","value":"token"},"id":4570,"name":"Identifier","src":"22565:5:18"}],"id":4571,"name":"MemberAccess","src":"22565:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4517,"type":"struct strings.slice memory","value":"needle"},"id":4572,"name":"Identifier","src":"22578:6:18"}],"id":4573,"name":"MemberAccess","src":"22578:11:18"}],"id":4574,"name":"BinaryOperation","src":"22565:24:18"}],"id":4575,"name":"Assignment","src":"22552:37:18"}],"id":4576,"name":"ExpressionStatement","src":"22552:37:18"}],"id":4577,"name":"Block","src":"22538:62:18"}],"id":4578,"name":"IfStatement","src":"22447:153:18"},{"attributes":{"functionReturnParameters":4523},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4519,"type":"struct strings.slice memory","value":"token"},"id":4579,"name":"Identifier","src":"22616:5:18"}],"id":4580,"name":"Return","src":"22609:12:18"}],"id":4581,"name":"Block","src":"22282:346:18"}],"id":4582,"name":"FunctionDefinition","src":"22169:459:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4598,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4583,"name":"UserDefinedTypeName","src":"23113:5:18"}],"id":4584,"name":"VariableDeclaration","src":"23113:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4598,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4585,"name":"UserDefinedTypeName","src":"23132:5:18"}],"id":4586,"name":"VariableDeclaration","src":"23132:19:18"}],"id":4587,"name":"ParameterList","src":"23112:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":4598,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4588,"name":"UserDefinedTypeName","src":"23176:5:18"}],"id":4589,"name":"VariableDeclaration","src":"23176:18:18"}],"id":4590,"name":"ParameterList","src":"23175:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$3144_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[4582,4598],"referencedDeclaration":4582,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":4591,"name":"Identifier","src":"23206:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4584,"type":"struct strings.slice memory","value":"self"},"id":4592,"name":"Identifier","src":"23213:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4586,"type":"struct strings.slice memory","value":"needle"},"id":4593,"name":"Identifier","src":"23219:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4589,"type":"struct strings.slice memory","value":"token"},"id":4594,"name":"Identifier","src":"23227:5:18"}],"id":4595,"name":"FunctionCall","src":"23206:27:18"}],"id":4596,"name":"ExpressionStatement","src":"23206:27:18"}],"id":4597,"name":"Block","src":"23196:44:18"}],"id":4598,"name":"FunctionDefinition","src":"23097:143:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4599,"name":"UserDefinedTypeName","src":"23524:5:18"}],"id":4600,"name":"VariableDeclaration","src":"23524:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4601,"name":"UserDefinedTypeName","src":"23543:5:18"}],"id":4602,"name":"VariableDeclaration","src":"23543:19:18"}],"id":4603,"name":"ParameterList","src":"23523:40:18"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":4657,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4604,"name":"ElementaryTypeName","src":"23587:4:18"}],"id":4605,"name":"VariableDeclaration","src":"23587:8:18"}],"id":4606,"name":"ParameterList","src":"23586:10:18"},{"children":[{"attributes":{"assignments":[4608]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":4656,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4607,"name":"ElementaryTypeName","src":"23607:4:18"}],"id":4608,"name":"VariableDeclaration","src":"23607:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4228,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4609,"name":"Identifier","src":"23618:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4610,"name":"Identifier","src":"23626:4:18"}],"id":4611,"name":"MemberAccess","src":"23626:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4612,"name":"Identifier","src":"23637:4:18"}],"id":4613,"name":"MemberAccess","src":"23637:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4614,"name":"Identifier","src":"23648:6:18"}],"id":4615,"name":"MemberAccess","src":"23648:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4616,"name":"Identifier","src":"23661:6:18"}],"id":4617,"name":"MemberAccess","src":"23661:11:18"}],"id":4618,"name":"FunctionCall","src":"23618:55:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4619,"name":"Identifier","src":"23676:6:18"}],"id":4620,"name":"MemberAccess","src":"23676:11:18"}],"id":4621,"name":"BinaryOperation","src":"23618:69:18"}],"id":4622,"name":"VariableDeclarationStatement","src":"23607:80:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4608,"type":"uint256","value":"ptr"},"id":4623,"name":"Identifier","src":"23704:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4624,"name":"Identifier","src":"23711:4:18"}],"id":4625,"name":"MemberAccess","src":"23711:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4626,"name":"Identifier","src":"23723:4:18"}],"id":4627,"name":"MemberAccess","src":"23723:9:18"}],"id":4628,"name":"BinaryOperation","src":"23711:21:18"}],"id":4629,"name":"BinaryOperation","src":"23704:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4605,"type":"uint256","value":"cnt"},"id":4630,"name":"Identifier","src":"23748:3:18"}],"id":4631,"name":"UnaryOperation","src":"23748:5:18"}],"id":4632,"name":"ExpressionStatement","src":"23748:5:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4608,"type":"uint256","value":"ptr"},"id":4633,"name":"Identifier","src":"23767:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4228,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":4634,"name":"Identifier","src":"23773:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4635,"name":"Identifier","src":"23781:4:18"}],"id":4636,"name":"MemberAccess","src":"23781:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4608,"type":"uint256","value":"ptr"},"id":4637,"name":"Identifier","src":"23794:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4600,"type":"struct strings.slice memory","value":"self"},"id":4638,"name":"Identifier","src":"23800:4:18"}],"id":4639,"name":"MemberAccess","src":"23800:9:18"}],"id":4640,"name":"BinaryOperation","src":"23794:15:18"}],"id":4641,"name":"TupleExpression","src":"23793:17:18"}],"id":4642,"name":"BinaryOperation","src":"23781:29:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4608,"type":"uint256","value":"ptr"},"id":4643,"name":"Identifier","src":"23812:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4644,"name":"Identifier","src":"23817:6:18"}],"id":4645,"name":"MemberAccess","src":"23817:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4646,"name":"Identifier","src":"23830:6:18"}],"id":4647,"name":"MemberAccess","src":"23830:11:18"}],"id":4648,"name":"FunctionCall","src":"23773:69:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4602,"type":"struct strings.slice memory","value":"needle"},"id":4649,"name":"Identifier","src":"23845:6:18"}],"id":4650,"name":"MemberAccess","src":"23845:11:18"}],"id":4651,"name":"BinaryOperation","src":"23773:83:18"}],"id":4652,"name":"Assignment","src":"23767:89:18"}],"id":4653,"name":"ExpressionStatement","src":"23767:89:18"}],"id":4654,"name":"Block","src":"23734:133:18"}],"id":4655,"name":"WhileStatement","src":"23697:170:18"}],"id":4656,"name":"Block","src":"23597:276:18"}],"id":4657,"name":"FunctionDefinition","src":"23509:364:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4681,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4658,"name":"UserDefinedTypeName","src":"24130:5:18"}],"id":4659,"name":"VariableDeclaration","src":"24130:17:18"},{"attributes":{"constant":false,"name":"needle","scope":4681,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4660,"name":"UserDefinedTypeName","src":"24149:5:18"}],"id":4661,"name":"VariableDeclaration","src":"24149:19:18"}],"id":4662,"name":"ParameterList","src":"24129:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4663,"name":"ElementaryTypeName","src":"24193:4:18"}],"id":4664,"name":"VariableDeclaration","src":"24193:4:18"}],"id":4665,"name":"ParameterList","src":"24192:6:18"},{"children":[{"attributes":{"functionReturnParameters":4665},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":4666,"name":"Identifier","src":"24216:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4659,"type":"struct strings.slice memory","value":"self"},"id":4667,"name":"Identifier","src":"24225:4:18"}],"id":4668,"name":"MemberAccess","src":"24225:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4659,"type":"struct strings.slice memory","value":"self"},"id":4669,"name":"Identifier","src":"24236:4:18"}],"id":4670,"name":"MemberAccess","src":"24236:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4661,"type":"struct strings.slice memory","value":"needle"},"id":4671,"name":"Identifier","src":"24247:6:18"}],"id":4672,"name":"MemberAccess","src":"24247:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4661,"type":"struct strings.slice memory","value":"needle"},"id":4673,"name":"Identifier","src":"24260:6:18"}],"id":4674,"name":"MemberAccess","src":"24260:11:18"}],"id":4675,"name":"FunctionCall","src":"24216:56:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4659,"type":"struct strings.slice memory","value":"self"},"id":4676,"name":"Identifier","src":"24276:4:18"}],"id":4677,"name":"MemberAccess","src":"24276:9:18"}],"id":4678,"name":"BinaryOperation","src":"24216:69:18"}],"id":4679,"name":"Return","src":"24209:76:18"}],"id":4680,"name":"Block","src":"24199:93:18"}],"id":4681,"name":"FunctionDefinition","src":"24112:180:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4727,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4682,"name":"UserDefinedTypeName","src":"24595:5:18"}],"id":4683,"name":"VariableDeclaration","src":"24595:17:18"},{"attributes":{"constant":false,"name":"other","scope":4727,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4684,"name":"UserDefinedTypeName","src":"24614:5:18"}],"id":4685,"name":"VariableDeclaration","src":"24614:18:18"}],"id":4686,"name":"ParameterList","src":"24594:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4727,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4687,"name":"ElementaryTypeName","src":"24657:6:18"}],"id":4688,"name":"VariableDeclaration","src":"24657:13:18"}],"id":4689,"name":"ParameterList","src":"24656:15:18"},{"children":[{"attributes":{"assignments":[4691]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4726,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4690,"name":"ElementaryTypeName","src":"24682:6:18"}],"id":4691,"name":"VariableDeclaration","src":"24682:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":4692,"name":"ElementaryTypeName","src":"24706:6:18"}],"id":4693,"name":"NewExpression","src":"24702:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4683,"type":"struct strings.slice memory","value":"self"},"id":4694,"name":"Identifier","src":"24713:4:18"}],"id":4695,"name":"MemberAccess","src":"24713:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4685,"type":"struct strings.slice memory","value":"other"},"id":4696,"name":"Identifier","src":"24725:5:18"}],"id":4697,"name":"MemberAccess","src":"24725:10:18"}],"id":4698,"name":"BinaryOperation","src":"24713:22:18"}],"id":4699,"name":"FunctionCall","src":"24702:34:18"}],"id":4700,"name":"VariableDeclarationStatement","src":"24682:54:18"},{"attributes":{"assignments":[4702],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":4726,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4701,"name":"ElementaryTypeName","src":"24746:4:18"}],"id":4702,"name":"VariableDeclaration","src":"24746:11:18"}],"id":4703,"name":"VariableDeclarationStatement","src":"24746:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":4702,"isOffset":false,"isSlot":false,"src":"24778:6:18","valueSize":1}},{"ret":{"declaration":4691,"isOffset":false,"isSlot":false,"src":"24792:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":4704,"name":"InlineAssembly","src":"24767:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4705,"name":"Identifier","src":"24811:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4702,"type":"uint256","value":"retptr"},"id":4706,"name":"Identifier","src":"24818:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4683,"type":"struct strings.slice memory","value":"self"},"id":4707,"name":"Identifier","src":"24826:4:18"}],"id":4708,"name":"MemberAccess","src":"24826:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4683,"type":"struct strings.slice memory","value":"self"},"id":4709,"name":"Identifier","src":"24837:4:18"}],"id":4710,"name":"MemberAccess","src":"24837:9:18"}],"id":4711,"name":"FunctionCall","src":"24811:36:18"}],"id":4712,"name":"ExpressionStatement","src":"24811:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4713,"name":"Identifier","src":"24857:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4702,"type":"uint256","value":"retptr"},"id":4714,"name":"Identifier","src":"24864:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4683,"type":"struct strings.slice memory","value":"self"},"id":4715,"name":"Identifier","src":"24873:4:18"}],"id":4716,"name":"MemberAccess","src":"24873:9:18"}],"id":4717,"name":"BinaryOperation","src":"24864:18:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4685,"type":"struct strings.slice memory","value":"other"},"id":4718,"name":"Identifier","src":"24884:5:18"}],"id":4719,"name":"MemberAccess","src":"24884:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4685,"type":"struct strings.slice memory","value":"other"},"id":4720,"name":"Identifier","src":"24896:5:18"}],"id":4721,"name":"MemberAccess","src":"24896:10:18"}],"id":4722,"name":"FunctionCall","src":"24857:50:18"}],"id":4723,"name":"ExpressionStatement","src":"24857:50:18"},{"attributes":{"functionReturnParameters":4689},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4691,"type":"string memory","value":"ret"},"id":4724,"name":"Identifier","src":"24924:3:18"}],"id":4725,"name":"Return","src":"24917:10:18"}],"id":4726,"name":"Block","src":"24672:262:18"}],"id":4727,"name":"FunctionDefinition","src":"24579:355:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":4843,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":4842,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4728,"name":"UserDefinedTypeName","src":"25284:5:18"}],"id":4729,"name":"VariableDeclaration","src":"25284:17:18"},{"attributes":{"constant":false,"name":"parts","scope":4842,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":3144,"type":"struct strings.slice"},"id":4730,"name":"UserDefinedTypeName","src":"25303:5:18"}],"id":4731,"name":"ArrayTypeName","src":"25303:7:18"}],"id":4732,"name":"VariableDeclaration","src":"25303:20:18"}],"id":4733,"name":"ParameterList","src":"25283:41:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":4842,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4734,"name":"ElementaryTypeName","src":"25348:6:18"}],"id":4735,"name":"VariableDeclaration","src":"25348:13:18"}],"id":4736,"name":"ParameterList","src":"25347:15:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4737,"name":"Identifier","src":"25377:5:18"}],"id":4738,"name":"MemberAccess","src":"25377:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4739,"name":"Literal","src":"25393:1:18"}],"id":4740,"name":"BinaryOperation","src":"25377:17:18"},{"attributes":{"functionReturnParameters":4736},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4741,"name":"Literal","src":"25415:2:18"}],"id":4742,"name":"Return","src":"25408:9:18"}],"id":4743,"name":"IfStatement","src":"25373:44:18"},{"attributes":{"assignments":[4745]},"children":[{"attributes":{"constant":false,"name":"length","scope":4841,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4744,"name":"ElementaryTypeName","src":"25428:4:18"}],"id":4745,"name":"VariableDeclaration","src":"25428:11:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4729,"type":"struct strings.slice memory","value":"self"},"id":4746,"name":"Identifier","src":"25442:4:18"}],"id":4747,"name":"MemberAccess","src":"25442:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4748,"name":"Identifier","src":"25455:5:18"}],"id":4749,"name":"MemberAccess","src":"25455:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4750,"name":"Literal","src":"25470:1:18"}],"id":4751,"name":"BinaryOperation","src":"25455:16:18"}],"id":4752,"name":"TupleExpression","src":"25454:18:18"}],"id":4753,"name":"BinaryOperation","src":"25442:30:18"}],"id":4754,"name":"VariableDeclarationStatement","src":"25428:44:18"},{"children":[{"attributes":{"assignments":[4756]},"children":[{"attributes":{"constant":false,"name":"i","scope":4774,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4755,"name":"ElementaryTypeName","src":"25487:4:18"}],"id":4756,"name":"VariableDeclaration","src":"25487:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4757,"name":"Literal","src":"25496:1:18"}],"id":4758,"name":"VariableDeclarationStatement","src":"25487:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4756,"type":"uint256","value":"i"},"id":4759,"name":"Identifier","src":"25499:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4760,"name":"Identifier","src":"25503:5:18"}],"id":4761,"name":"MemberAccess","src":"25503:12:18"}],"id":4762,"name":"BinaryOperation","src":"25499:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4756,"type":"uint256","value":"i"},"id":4763,"name":"Identifier","src":"25517:1:18"}],"id":4764,"name":"UnaryOperation","src":"25517:3:18"}],"id":4765,"name":"ExpressionStatement","src":"25517:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4745,"type":"uint256","value":"length"},"id":4766,"name":"Identifier","src":"25536:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4767,"name":"Identifier","src":"25546:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4756,"type":"uint256","value":"i"},"id":4768,"name":"Identifier","src":"25552:1:18"}],"id":4769,"name":"IndexAccess","src":"25546:8:18"}],"id":4770,"name":"MemberAccess","src":"25546:13:18"}],"id":4771,"name":"Assignment","src":"25536:23:18"}],"id":4772,"name":"ExpressionStatement","src":"25536:23:18"}],"id":4773,"name":"Block","src":"25522:48:18"}],"id":4774,"name":"ForStatement","src":"25482:88:18"},{"attributes":{"assignments":[4776]},"children":[{"attributes":{"constant":false,"name":"ret","scope":4841,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4775,"name":"ElementaryTypeName","src":"25580:6:18"}],"id":4776,"name":"VariableDeclaration","src":"25580:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":4777,"name":"ElementaryTypeName","src":"25604:6:18"}],"id":4778,"name":"NewExpression","src":"25600:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4745,"type":"uint256","value":"length"},"id":4779,"name":"Identifier","src":"25611:6:18"}],"id":4780,"name":"FunctionCall","src":"25600:18:18"}],"id":4781,"name":"VariableDeclarationStatement","src":"25580:38:18"},{"attributes":{"assignments":[4783],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":4841,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4782,"name":"ElementaryTypeName","src":"25628:4:18"}],"id":4783,"name":"VariableDeclaration","src":"25628:11:18"}],"id":4784,"name":"VariableDeclarationStatement","src":"25628:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":4783,"isOffset":false,"isSlot":false,"src":"25660:6:18","valueSize":1}},{"ret":{"declaration":4776,"isOffset":false,"isSlot":false,"src":"25674:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":4785,"name":"InlineAssembly","src":"25649:35:18"},{"children":[{"attributes":{"assignments":[4787]},"children":[{"attributes":{"constant":false,"name":"i","scope":4838,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4786,"name":"ElementaryTypeName","src":"25699:4:18"}],"id":4787,"name":"VariableDeclaration","src":"25699:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4788,"name":"Literal","src":"25708:1:18"}],"id":4789,"name":"VariableDeclarationStatement","src":"25699:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4790,"name":"Identifier","src":"25711:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4791,"name":"Identifier","src":"25715:5:18"}],"id":4792,"name":"MemberAccess","src":"25715:12:18"}],"id":4793,"name":"BinaryOperation","src":"25711:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4794,"name":"Identifier","src":"25729:1:18"}],"id":4795,"name":"UnaryOperation","src":"25729:3:18"}],"id":4796,"name":"ExpressionStatement","src":"25729:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4797,"name":"Identifier","src":"25748:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"uint256","value":"retptr"},"id":4798,"name":"Identifier","src":"25755:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4799,"name":"Identifier","src":"25763:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4800,"name":"Identifier","src":"25769:1:18"}],"id":4801,"name":"IndexAccess","src":"25763:8:18"}],"id":4802,"name":"MemberAccess","src":"25763:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4803,"name":"Identifier","src":"25778:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4804,"name":"Identifier","src":"25784:1:18"}],"id":4805,"name":"IndexAccess","src":"25778:8:18"}],"id":4806,"name":"MemberAccess","src":"25778:13:18"}],"id":4807,"name":"FunctionCall","src":"25748:44:18"}],"id":4808,"name":"ExpressionStatement","src":"25748:44:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"uint256","value":"retptr"},"id":4809,"name":"Identifier","src":"25806:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4810,"name":"Identifier","src":"25816:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4811,"name":"Identifier","src":"25822:1:18"}],"id":4812,"name":"IndexAccess","src":"25816:8:18"}],"id":4813,"name":"MemberAccess","src":"25816:13:18"}],"id":4814,"name":"Assignment","src":"25806:23:18"}],"id":4815,"name":"ExpressionStatement","src":"25806:23:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4787,"type":"uint256","value":"i"},"id":4816,"name":"Identifier","src":"25847:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4732,"type":"struct strings.slice memory[] memory","value":"parts"},"id":4817,"name":"Identifier","src":"25851:5:18"}],"id":4818,"name":"MemberAccess","src":"25851:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4819,"name":"Literal","src":"25866:1:18"}],"id":4820,"name":"BinaryOperation","src":"25851:16:18"}],"id":4821,"name":"BinaryOperation","src":"25847:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":4822,"name":"Identifier","src":"25887:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"uint256","value":"retptr"},"id":4823,"name":"Identifier","src":"25894:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":3143,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4729,"type":"struct strings.slice memory","value":"self"},"id":4824,"name":"Identifier","src":"25902:4:18"}],"id":4825,"name":"MemberAccess","src":"25902:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4729,"type":"struct strings.slice memory","value":"self"},"id":4826,"name":"Identifier","src":"25913:4:18"}],"id":4827,"name":"MemberAccess","src":"25913:9:18"}],"id":4828,"name":"FunctionCall","src":"25887:36:18"}],"id":4829,"name":"ExpressionStatement","src":"25887:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"uint256","value":"retptr"},"id":4830,"name":"Identifier","src":"25941:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":3141,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4729,"type":"struct strings.slice memory","value":"self"},"id":4831,"name":"Identifier","src":"25951:4:18"}],"id":4832,"name":"MemberAccess","src":"25951:9:18"}],"id":4833,"name":"Assignment","src":"25941:19:18"}],"id":4834,"name":"ExpressionStatement","src":"25941:19:18"}],"id":4835,"name":"Block","src":"25869:106:18"}],"id":4836,"name":"IfStatement","src":"25843:132:18"}],"id":4837,"name":"Block","src":"25734:251:18"}],"id":4838,"name":"ForStatement","src":"25694:291:18"},{"attributes":{"functionReturnParameters":4736},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4776,"type":"string memory","value":"ret"},"id":4839,"name":"Identifier","src":"26002:3:18"}],"id":4840,"name":"Return","src":"25995:10:18"}],"id":4841,"name":"Block","src":"25363:649:18"}],"id":4842,"name":"FunctionDefinition","src":"25270:742:18"}],"id":4843,"name":"ContractDefinition","src":"2599:23415:18"}],"id":4844,"name":"SourceUnit","src":"2574:23441:18"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[4954]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4845,"name":"PragmaDirective","src":"770:24:19"},{"attributes":{"SourceUnit":3138,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":4955,"symbolAliases":[null],"unitAlias":""},"id":4846,"name":"ImportDirective","src":"796:35:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[4954],"name":"BytesUtils","scope":4955},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3137,"type":"library SafeMath"},"id":4847,"name":"UserDefinedTypeName","src":"942:8:19"},{"attributes":{"name":"uint256","type":"uint256"},"id":4848,"name":"ElementaryTypeName","src":"955:7:19"}],"id":4849,"name":"UsingForDirective","src":"936:27:19"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":4954,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4885,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4850,"name":"ElementaryTypeName","src":"1106:5:19"}],"id":4851,"name":"VariableDeclaration","src":"1106:17:19"},{"attributes":{"constant":false,"name":"_from","scope":4885,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4852,"name":"ElementaryTypeName","src":"1125:7:19"}],"id":4853,"name":"VariableDeclaration","src":"1125:13:19"}],"id":4854,"name":"ParameterList","src":"1105:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":4885,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4855,"name":"ElementaryTypeName","src":"1163:7:19"}],"id":4856,"name":"VariableDeclaration","src":"1163:7:19"}],"id":4857,"name":"ParameterList","src":"1162:9:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4858,"name":"Identifier","src":"1182:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4851,"type":"bytes memory","value":"_bts"},"id":4859,"name":"Identifier","src":"1190:4:19"}],"id":4860,"name":"MemberAccess","src":"1190:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"uint256","value":"_from"},"id":4861,"name":"Identifier","src":"1205:5:19"}],"id":4862,"name":"MemberAccess","src":"1205:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":4863,"name":"Literal","src":"1215:2:19"}],"id":4864,"name":"FunctionCall","src":"1205:13:19"}],"id":4865,"name":"BinaryOperation","src":"1190:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4866,"name":"Literal","src":"1220:22:19"}],"id":4867,"name":"FunctionCall","src":"1182:61:19"}],"id":4868,"name":"ExpressionStatement","src":"1182:61:19"},{"attributes":{"assignments":[4870],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":4884,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":4869,"name":"ElementaryTypeName","src":"1254:7:19"}],"id":4870,"name":"VariableDeclaration","src":"1254:24:19"}],"id":4871,"name":"VariableDeclarationStatement","src":"1254:24:19"},{"attributes":{"assignments":[4873]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4884,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4872,"name":"ElementaryTypeName","src":"1288:7:19"}],"id":4873,"name":"VariableDeclaration","src":"1288:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"uint256","value":"_from"},"id":4874,"name":"Identifier","src":"1308:5:19"}],"id":4875,"name":"MemberAccess","src":"1308:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4876,"name":"Literal","src":"1318:2:19"}],"id":4877,"name":"FunctionCall","src":"1308:13:19"}],"id":4878,"name":"VariableDeclarationStatement","src":"1288:33:19"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":4870,"isOffset":false,"isSlot":false,"src":"1396:16:19","valueSize":1}},{"_bts":{"declaration":4851,"isOffset":false,"isSlot":false,"src":"1426:4:19","valueSize":1}},{"startByte":{"declaration":4873,"isOffset":false,"isSlot":false,"src":"1432:9:19","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":4879,"name":"InlineAssembly","src":"1373:80:19"},{"attributes":{"functionReturnParameters":4857},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4880,"name":"ElementaryTypeNameExpression","src":"1470:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"bytes20","value":"convertedAddress"},"id":4881,"name":"Identifier","src":"1478:16:19"}],"id":4882,"name":"FunctionCall","src":"1470:25:19"}],"id":4883,"name":"Return","src":"1463:32:19"}],"id":4884,"name":"Block","src":"1172:330:19"}],"id":4885,"name":"FunctionDefinition","src":"1081:421:19"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":4954,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4919,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4886,"name":"ElementaryTypeName","src":"1651:5:19"}],"id":4887,"name":"VariableDeclaration","src":"1651:17:19"},{"attributes":{"constant":false,"name":"_from","scope":4919,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4888,"name":"ElementaryTypeName","src":"1670:7:19"}],"id":4889,"name":"VariableDeclaration","src":"1670:13:19"}],"id":4890,"name":"ParameterList","src":"1650:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":4919,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4891,"name":"ElementaryTypeName","src":"1708:6:19"}],"id":4892,"name":"VariableDeclaration","src":"1708:6:19"}],"id":4893,"name":"ParameterList","src":"1707:8:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4894,"name":"Identifier","src":"1726:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4887,"type":"bytes memory","value":"_bts"},"id":4895,"name":"Identifier","src":"1734:4:19"}],"id":4896,"name":"MemberAccess","src":"1734:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"uint256","value":"_from"},"id":4897,"name":"Identifier","src":"1749:5:19"}],"id":4898,"name":"MemberAccess","src":"1749:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4899,"name":"Literal","src":"1759:1:19"}],"id":4900,"name":"FunctionCall","src":"1749:12:19"}],"id":4901,"name":"BinaryOperation","src":"1734:27:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4902,"name":"Literal","src":"1763:22:19"}],"id":4903,"name":"FunctionCall","src":"1726:60:19"}],"id":4904,"name":"ExpressionStatement","src":"1726:60:19"},{"attributes":{"assignments":[4906],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":4918,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4905,"name":"ElementaryTypeName","src":"1797:6:19"}],"id":4906,"name":"VariableDeclaration","src":"1797:19:19"}],"id":4907,"name":"VariableDeclarationStatement","src":"1797:19:19"},{"attributes":{"assignments":[4909]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4908,"name":"ElementaryTypeName","src":"1826:7:19"}],"id":4909,"name":"VariableDeclaration","src":"1826:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"uint256","value":"_from"},"id":4910,"name":"Identifier","src":"1846:5:19"}],"id":4911,"name":"MemberAccess","src":"1846:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4912,"name":"Literal","src":"1856:2:19"}],"id":4913,"name":"FunctionCall","src":"1846:13:19"}],"id":4914,"name":"VariableDeclarationStatement","src":"1826:33:19"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":4906,"isOffset":false,"isSlot":false,"src":"1934:12:19","valueSize":1}},{"_bts":{"declaration":4887,"isOffset":false,"isSlot":false,"src":"1960:4:19","valueSize":1}},{"startByte":{"declaration":4909,"isOffset":false,"isSlot":false,"src":"1966:9:19","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":4915,"name":"InlineAssembly","src":"1911:76:19"},{"attributes":{"functionReturnParameters":4893},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4906,"type":"bytes4","value":"slicedBytes4"},"id":4916,"name":"Identifier","src":"2004:12:19"}],"id":4917,"name":"Return","src":"1997:19:19"}],"id":4918,"name":"Block","src":"1716:307:19"}],"id":4919,"name":"FunctionDefinition","src":"1627:396:19"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":4954,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":4953,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4920,"name":"ElementaryTypeName","src":"2398:5:19"}],"id":4921,"name":"VariableDeclaration","src":"2398:17:19"},{"attributes":{"constant":false,"name":"_from","scope":4953,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4922,"name":"ElementaryTypeName","src":"2417:7:19"}],"id":4923,"name":"VariableDeclaration","src":"2417:13:19"}],"id":4924,"name":"ParameterList","src":"2397:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":4953,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4925,"name":"ElementaryTypeName","src":"2455:7:19"}],"id":4926,"name":"VariableDeclaration","src":"2455:7:19"}],"id":4927,"name":"ParameterList","src":"2454:9:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4928,"name":"Identifier","src":"2474:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4921,"type":"bytes memory","value":"_bts"},"id":4929,"name":"Identifier","src":"2482:4:19"}],"id":4930,"name":"MemberAccess","src":"2482:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4923,"type":"uint256","value":"_from"},"id":4931,"name":"Identifier","src":"2497:5:19"}],"id":4932,"name":"MemberAccess","src":"2497:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4933,"name":"Literal","src":"2507:2:19"}],"id":4934,"name":"FunctionCall","src":"2497:13:19"}],"id":4935,"name":"BinaryOperation","src":"2482:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":4936,"name":"Literal","src":"2512:22:19"}],"id":4937,"name":"FunctionCall","src":"2474:61:19"}],"id":4938,"name":"ExpressionStatement","src":"2474:61:19"},{"attributes":{"assignments":[4940],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":4952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4939,"name":"ElementaryTypeName","src":"2546:7:19"}],"id":4940,"name":"VariableDeclaration","src":"2546:24:19"}],"id":4941,"name":"VariableDeclarationStatement","src":"2546:24:19"},{"attributes":{"assignments":[4943]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":4952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4942,"name":"ElementaryTypeName","src":"2580:7:19"}],"id":4943,"name":"VariableDeclaration","src":"2580:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4923,"type":"uint256","value":"_from"},"id":4944,"name":"Identifier","src":"2600:5:19"}],"id":4945,"name":"MemberAccess","src":"2600:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":4946,"name":"Literal","src":"2610:2:19"}],"id":4947,"name":"FunctionCall","src":"2600:13:19"}],"id":4948,"name":"VariableDeclarationStatement","src":"2580:33:19"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":4940,"isOffset":false,"isSlot":false,"src":"2688:16:19","valueSize":1}},{"_bts":{"declaration":4921,"isOffset":false,"isSlot":false,"src":"2718:4:19","valueSize":1}},{"startByte":{"declaration":4943,"isOffset":false,"isSlot":false,"src":"2724:9:19","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":4949,"name":"InlineAssembly","src":"2665:80:19"},{"attributes":{"functionReturnParameters":4927},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4940,"type":"uint256","value":"convertedUint256"},"id":4950,"name":"Identifier","src":"2762:16:19"}],"id":4951,"name":"Return","src":"2755:23:19"}],"id":4952,"name":"Block","src":"2464:321:19"}],"id":4953,"name":"FunctionDefinition","src":"2373:412:19"}],"id":4954,"name":"ContractDefinition","src":"911:1876:19"}],"id":4955,"name":"SourceUnit","src":"770:2018:19"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[5050]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4956,"name":"PragmaDirective","src":"772:24:20"},{"attributes":{"SourceUnit":6232,"absolutePath":"controller.sol","file":"../controller.sol","scope":5051,"symbolAliases":[null],"unitAlias":""},"id":4957,"name":"ImportDirective","src":"798:27:20"},{"attributes":{"SourceUnit":202,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":5051,"symbolAliases":[null],"unitAlias":""},"id":4958,"name":"ImportDirective","src":"826:29:20"},{"attributes":{"contractDependencies":[201],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[5050,201],"name":"Controllable","scope":5051},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":201,"type":"contract ENSResolvable"},"id":4959,"name":"UserDefinedTypeName","src":"980:13:20"}],"id":4960,"name":"InheritanceSpecifier","src":"980:13:20"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":5050,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4961,"name":"ElementaryTypeName","src":"1070:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":4962,"name":"Literal","src":"1122:66:20"}],"id":4963,"name":"VariableDeclaration","src":"1070:118:20"},{"attributes":{"constant":false,"name":"_controllerNode","scope":5050,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4964,"name":"ElementaryTypeName","src":"1272:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4963,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":4965,"name":"Identifier","src":"1306:24:20"}],"id":4966,"name":"VariableDeclaration","src":"1272:58:20"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":5050,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":4983,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4967,"name":"ElementaryTypeName","src":"1571:7:20"}],"id":4968,"name":"VariableDeclaration","src":"1571:24:20"}],"id":4969,"name":"ParameterList","src":"1570:26:20"},{"attributes":{"parameters":[null]},"children":[],"id":4970,"name":"ParameterList","src":"1606:0:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4968,"type":"bytes32","value":"_controllerNode_"},"id":4971,"name":"Identifier","src":"1665:16:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":4972,"name":"ElementaryTypeNameExpression","src":"1685:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4973,"name":"Literal","src":"1693:1:20"}],"id":4974,"name":"FunctionCall","src":"1685:10:20"}],"id":4975,"name":"BinaryOperation","src":"1665:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"bytes32","value":"_controllerNode"},"id":4976,"name":"Identifier","src":"1711:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4968,"type":"bytes32","value":"_controllerNode_"},"id":4977,"name":"Identifier","src":"1729:16:20"}],"id":4978,"name":"Assignment","src":"1711:34:20"}],"id":4979,"name":"ExpressionStatement","src":"1711:34:20"}],"id":4980,"name":"Block","src":"1697:59:20"}],"id":4981,"name":"IfStatement","src":"1661:95:20"}],"id":4982,"name":"Block","src":"1606:156:20"}],"id":4983,"name":"FunctionDefinition","src":"1559:203:20"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4984,"name":"ParameterList","src":"1849:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4985,"name":"Identifier","src":"1862:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5032,"type":"function (address) view returns (bool)","value":"_isController"},"id":4986,"name":"Identifier","src":"1870:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":4987,"name":"Identifier","src":"1884:3:20"}],"id":4988,"name":"MemberAccess","src":"1884:10:20"}],"id":4989,"name":"FunctionCall","src":"1870:25:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":4990,"name":"Literal","src":"1897:28:20"}],"id":4991,"name":"FunctionCall","src":"1862:64:20"}],"id":4992,"name":"ExpressionStatement","src":"1862:64:20"},{"id":4993,"name":"PlaceholderStatement","src":"1936:1:20"}],"id":4994,"name":"Block","src":"1852:92:20"}],"id":4995,"name":"ModifierDefinition","src":"1826:118:20"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4996,"name":"ParameterList","src":"2022:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":4997,"name":"Identifier","src":"2035:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":4998,"name":"Identifier","src":"2043:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":4999,"name":"Identifier","src":"2052:3:20"}],"id":5000,"name":"MemberAccess","src":"2052:10:20"}],"id":5001,"name":"FunctionCall","src":"2043:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":5002,"name":"Literal","src":"2065:24:20"}],"id":5003,"name":"FunctionCall","src":"2035:55:20"}],"id":5004,"name":"ExpressionStatement","src":"2035:55:20"},{"id":5005,"name":"PlaceholderStatement","src":"2100:1:20"}],"id":5006,"name":"Block","src":"2025:83:20"}],"id":5007,"name":"ModifierDefinition","src":"2004:104:20"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":5050,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5008,"name":"ParameterList","src":"2192:2:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":5015,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5009,"name":"ElementaryTypeName","src":"2216:7:20"}],"id":5010,"name":"VariableDeclaration","src":"2216:7:20"}],"id":5011,"name":"ParameterList","src":"2215:9:20"},{"children":[{"attributes":{"functionReturnParameters":5011},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"bytes32","value":"_controllerNode"},"id":5012,"name":"Identifier","src":"2242:15:20"}],"id":5013,"name":"Return","src":"2235:22:20"}],"id":5014,"name":"Block","src":"2225:39:20"}],"id":5015,"name":"FunctionDefinition","src":"2169:95:20"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":5050,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5032,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5016,"name":"ElementaryTypeName","src":"2355:7:20"}],"id":5017,"name":"VariableDeclaration","src":"2355:16:20"}],"id":5018,"name":"ParameterList","src":"2354:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":5032,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5019,"name":"ElementaryTypeName","src":"2396:4:20"}],"id":5020,"name":"VariableDeclaration","src":"2396:4:20"}],"id":5021,"name":"ParameterList","src":"2395:6:20"},{"children":[{"attributes":{"functionReturnParameters":5021},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":5788,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5796,"type":"type(contract IController)","value":"IController"},"id":5022,"name":"Identifier","src":"2419:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":5023,"name":"Identifier","src":"2431:11:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"bytes32","value":"_controllerNode"},"id":5024,"name":"Identifier","src":"2443:15:20"}],"id":5025,"name":"FunctionCall","src":"2431:28:20"}],"id":5026,"name":"FunctionCall","src":"2419:41:20"}],"id":5027,"name":"MemberAccess","src":"2419:54:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5017,"type":"address","value":"_account"},"id":5028,"name":"Identifier","src":"2474:8:20"}],"id":5029,"name":"FunctionCall","src":"2419:64:20"}],"id":5030,"name":"Return","src":"2412:71:20"}],"id":5031,"name":"Block","src":"2402:88:20"}],"id":5032,"name":"FunctionDefinition","src":"2332:158:20"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":5050,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":5049,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5033,"name":"ElementaryTypeName","src":"2572:7:20"}],"id":5034,"name":"VariableDeclaration","src":"2572:16:20"}],"id":5035,"name":"ParameterList","src":"2571:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":5049,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5036,"name":"ElementaryTypeName","src":"2613:4:20"}],"id":5037,"name":"VariableDeclaration","src":"2613:4:20"}],"id":5038,"name":"ParameterList","src":"2612:6:20"},{"children":[{"attributes":{"functionReturnParameters":5038},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":5795,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5796,"type":"type(contract IController)","value":"IController"},"id":5039,"name":"Identifier","src":"2636:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":5040,"name":"Identifier","src":"2648:11:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"bytes32","value":"_controllerNode"},"id":5041,"name":"Identifier","src":"2660:15:20"}],"id":5042,"name":"FunctionCall","src":"2648:28:20"}],"id":5043,"name":"FunctionCall","src":"2636:41:20"}],"id":5044,"name":"MemberAccess","src":"2636:49:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5034,"type":"address","value":"_account"},"id":5045,"name":"Identifier","src":"2686:8:20"}],"id":5046,"name":"FunctionCall","src":"2636:59:20"}],"id":5047,"name":"Return","src":"2629:66:20"}],"id":5048,"name":"Block","src":"2619:83:20"}],"id":5049,"name":"FunctionDefinition","src":"2554:148:20"}],"id":5050,"name":"ContractDefinition","src":"955:1749:20"}],"id":5051,"name":"SourceUnit","src":"772:1933:20"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[201]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":158,"name":"PragmaDirective","src":"773:24:21"},{"attributes":{"SourceUnit":556,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":202,"symbolAliases":[null],"unitAlias":""},"id":159,"name":"ImportDirective","src":"799:34:21"},{"attributes":{"SourceUnit":730,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":202,"symbolAliases":[null],"unitAlias":""},"id":160,"name":"ImportDirective","src":"834:45:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[201],"name":"ENSResolvable","scope":202},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":201,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":161,"name":"ElementaryTypeName","src":"1109:7:21"}],"id":162,"name":"VariableDeclaration","src":"1109:28:21"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":201,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":172,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":163,"name":"ElementaryTypeName","src":"1205:7:21"}],"id":164,"name":"VariableDeclaration","src":"1205:16:21"}],"id":165,"name":"ParameterList","src":"1204:18:21"},{"attributes":{"parameters":[null]},"children":[],"id":166,"name":"ParameterList","src":"1232:0:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address","value":"_ensRegistry"},"id":167,"name":"Identifier","src":"1242:12:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":164,"type":"address","value":"_ensReg_"},"id":168,"name":"Identifier","src":"1257:8:21"}],"id":169,"name":"Assignment","src":"1242:23:21"}],"id":170,"name":"ExpressionStatement","src":"1242:23:21"}],"id":171,"name":"Block","src":"1232:40:21"}],"id":172,"name":"FunctionDefinition","src":"1193:79:21"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":201,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":173,"name":"ParameterList","src":"1384:2:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":180,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":174,"name":"ElementaryTypeName","src":"1410:7:21"}],"id":175,"name":"VariableDeclaration","src":"1410:7:21"}],"id":176,"name":"ParameterList","src":"1409:9:21"},{"children":[{"attributes":{"functionReturnParameters":176},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address","value":"_ensRegistry"},"id":177,"name":"Identifier","src":"1436:12:21"}],"id":178,"name":"Return","src":"1429:19:21"}],"id":179,"name":"Block","src":"1419:36:21"}],"id":180,"name":"FunctionDefinition","src":"1364:91:21"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":201,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":200,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":181,"name":"ElementaryTypeName","src":"1652:7:21"}],"id":182,"name":"VariableDeclaration","src":"1652:13:21"}],"id":183,"name":"ParameterList","src":"1651:15:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":200,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":184,"name":"ElementaryTypeName","src":"1690:7:21"}],"id":185,"name":"VariableDeclaration","src":"1690:7:21"}],"id":186,"name":"ParameterList","src":"1689:9:21"},{"children":[{"attributes":{"functionReturnParameters":186},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":1935,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":729,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":187,"name":"Identifier","src":"1716:14:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":531,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":555,"type":"type(contract ENS)","value":"ENS"},"id":188,"name":"Identifier","src":"1731:3:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":162,"type":"address","value":"_ensRegistry"},"id":189,"name":"Identifier","src":"1735:12:21"}],"id":190,"name":"FunctionCall","src":"1731:17:21"}],"id":191,"name":"MemberAccess","src":"1731:26:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":182,"type":"bytes32","value":"_node"},"id":192,"name":"Identifier","src":"1758:5:21"}],"id":193,"name":"FunctionCall","src":"1731:33:21"}],"id":194,"name":"FunctionCall","src":"1716:49:21"}],"id":195,"name":"MemberAccess","src":"1716:54:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":182,"type":"bytes32","value":"_node"},"id":196,"name":"Identifier","src":"1771:5:21"}],"id":197,"name":"FunctionCall","src":"1716:61:21"}],"id":198,"name":"Return","src":"1709:68:21"}],"id":199,"name":"Block","src":"1699:85:21"}],"id":200,"name":"FunctionDefinition","src":"1631:153:21"}],"id":201,"name":"ContractDefinition","src":"1008:778:21"}],"id":202,"name":"SourceUnit","src":"773:1014:21"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[7381]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":7226,"name":"PragmaDirective","src":"767:24:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[7381],"name":"Ownable","scope":7382},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":7232,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7227,"name":"ElementaryTypeName","src":"1199:7:22"}],"id":7228,"name":"VariableDeclaration","src":"1199:13:22"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":7232,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7229,"name":"ElementaryTypeName","src":"1214:7:22"}],"id":7230,"name":"VariableDeclaration","src":"1214:11:22"}],"id":7231,"name":"ParameterList","src":"1198:28:22"}],"id":7232,"name":"EventDefinition","src":"1172:55:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":7236,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7233,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":7234,"name":"VariableDeclaration","src":"1254:15:22"}],"id":7235,"name":"ParameterList","src":"1253:17:22"}],"id":7236,"name":"EventDefinition","src":"1232:39:22"},{"attributes":{"constant":false,"name":"_owner","scope":7381,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7237,"name":"ElementaryTypeName","src":"1277:15:22"}],"id":7238,"name":"VariableDeclaration","src":"1277:30:22"},{"attributes":{"constant":false,"name":"_isTransferable","scope":7381,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7239,"name":"ElementaryTypeName","src":"1313:4:22"}],"id":7240,"name":"VariableDeclaration","src":"1313:28:22"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":7381,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":7271,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7241,"name":"ElementaryTypeName","src":"1476:15:22"}],"id":7242,"name":"VariableDeclaration","src":"1476:25:22"},{"attributes":{"constant":false,"name":"_transferable_","scope":7271,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7243,"name":"ElementaryTypeName","src":"1503:4:22"}],"id":7244,"name":"VariableDeclaration","src":"1503:19:22"}],"id":7245,"name":"ParameterList","src":"1475:48:22"},{"attributes":{"parameters":[null]},"children":[],"id":7246,"name":"ParameterList","src":"1533:0:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7247,"name":"Identifier","src":"1543:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7242,"type":"address payable","value":"_account_"},"id":7248,"name":"Identifier","src":"1552:9:22"}],"id":7249,"name":"Assignment","src":"1543:18:22"}],"id":7250,"name":"ExpressionStatement","src":"1543:18:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7251,"name":"Identifier","src":"1571:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7244,"type":"bool","value":"_transferable_"},"id":7252,"name":"Identifier","src":"1589:14:22"}],"id":7253,"name":"Assignment","src":"1571:32:22"}],"id":7254,"name":"ExpressionStatement","src":"1571:32:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7255,"name":"Identifier","src":"1687:15:22"}],"id":7256,"name":"UnaryOperation","src":"1686:16:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7236,"type":"function (address)","value":"LockedOwnership"},"id":7257,"name":"Identifier","src":"1723:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7242,"type":"address payable","value":"_account_"},"id":7258,"name":"Identifier","src":"1739:9:22"}],"id":7259,"name":"FunctionCall","src":"1723:26:22"}],"id":7260,"name":"EmitStatement","src":"1718:31:22"}],"id":7261,"name":"Block","src":"1704:56:22"}],"id":7262,"name":"IfStatement","src":"1682:78:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7232,"type":"function (address,address)","value":"TransferredOwnership"},"id":7263,"name":"Identifier","src":"1774:20:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7264,"name":"ElementaryTypeNameExpression","src":"1795:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7265,"name":"Literal","src":"1803:1:22"}],"id":7266,"name":"FunctionCall","src":"1795:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7242,"type":"address payable","value":"_account_"},"id":7267,"name":"Identifier","src":"1807:9:22"}],"id":7268,"name":"FunctionCall","src":"1774:43:22"}],"id":7269,"name":"EmitStatement","src":"1769:48:22"}],"id":7270,"name":"Block","src":"1533:291:22"}],"id":7271,"name":"FunctionDefinition","src":"1464:360:22"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7272,"name":"ParameterList","src":"1919:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":7273,"name":"Identifier","src":"1932:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7380,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":7274,"name":"Identifier","src":"1940:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":7275,"name":"Identifier","src":"1949:3:22"}],"id":7276,"name":"MemberAccess","src":"1949:10:22"}],"id":7277,"name":"FunctionCall","src":"1940:20:22"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":7278,"name":"Literal","src":"1962:24:22"}],"id":7279,"name":"FunctionCall","src":"1932:55:22"}],"id":7280,"name":"ExpressionStatement","src":"1932:55:22"},{"id":7281,"name":"PlaceholderStatement","src":"1997:1:22"}],"id":7282,"name":"Block","src":"1922:83:22"}],"id":7283,"name":"ModifierDefinition","src":"1901:104:22"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":7381,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":7328,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7284,"name":"ElementaryTypeName","src":"2274:15:22"}],"id":7285,"name":"VariableDeclaration","src":"2274:24:22"},{"attributes":{"constant":false,"name":"_transferable","scope":7328,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7286,"name":"ElementaryTypeName","src":"2300:4:22"}],"id":7287,"name":"VariableDeclaration","src":"2300:18:22"}],"id":7288,"name":"ParameterList","src":"2273:46:22"},{"attributes":{"parameters":[null]},"children":[],"id":7291,"name":"ParameterList","src":"2339:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":7289,"name":"Identifier","src":"2329:9:22"}],"id":7290,"name":"ModifierInvocation","src":"2329:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":7292,"name":"Identifier","src":"2404:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7293,"name":"Identifier","src":"2412:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":7294,"name":"Literal","src":"2429:31:22"}],"id":7295,"name":"FunctionCall","src":"2404:57:22"}],"id":7296,"name":"ExpressionStatement","src":"2404:57:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":7297,"name":"Identifier","src":"2534:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7285,"type":"address payable","value":"_account"},"id":7298,"name":"Identifier","src":"2542:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7299,"name":"ElementaryTypeNameExpression","src":"2554:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7300,"name":"Literal","src":"2562:1:22"}],"id":7301,"name":"FunctionCall","src":"2554:10:22"}],"id":7302,"name":"BinaryOperation","src":"2542:22:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":7303,"name":"Literal","src":"2566:37:22"}],"id":7304,"name":"FunctionCall","src":"2534:70:22"}],"id":7305,"name":"ExpressionStatement","src":"2534:70:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7306,"name":"Identifier","src":"2689:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7287,"type":"bool","value":"_transferable"},"id":7307,"name":"Identifier","src":"2707:13:22"}],"id":7308,"name":"Assignment","src":"2689:31:22"}],"id":7309,"name":"ExpressionStatement","src":"2689:31:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7287,"type":"bool","value":"_transferable"},"id":7310,"name":"Identifier","src":"2804:13:22"}],"id":7311,"name":"UnaryOperation","src":"2803:14:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7236,"type":"function (address)","value":"LockedOwnership"},"id":7312,"name":"Identifier","src":"2838:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7285,"type":"address payable","value":"_account"},"id":7313,"name":"Identifier","src":"2854:8:22"}],"id":7314,"name":"FunctionCall","src":"2838:25:22"}],"id":7315,"name":"EmitStatement","src":"2833:30:22"}],"id":7316,"name":"Block","src":"2819:55:22"}],"id":7317,"name":"IfStatement","src":"2799:75:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7232,"type":"function (address,address)","value":"TransferredOwnership"},"id":7318,"name":"Identifier","src":"2934:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7319,"name":"Identifier","src":"2955:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7285,"type":"address payable","value":"_account"},"id":7320,"name":"Identifier","src":"2963:8:22"}],"id":7321,"name":"FunctionCall","src":"2934:38:22"}],"id":7322,"name":"EmitStatement","src":"2929:43:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7323,"name":"Identifier","src":"3032:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7285,"type":"address payable","value":"_account"},"id":7324,"name":"Identifier","src":"3041:8:22"}],"id":7325,"name":"Assignment","src":"3032:17:22"}],"id":7326,"name":"ExpressionStatement","src":"3032:17:22"}],"id":7327,"name":"Block","src":"2339:717:22"}],"id":7328,"name":"FunctionDefinition","src":"2247:809:22"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":7381,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7329,"name":"ParameterList","src":"3196:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7336,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7330,"name":"ElementaryTypeName","src":"3222:4:22"}],"id":7331,"name":"VariableDeclaration","src":"3222:4:22"}],"id":7332,"name":"ParameterList","src":"3221:6:22"},{"children":[{"attributes":{"functionReturnParameters":7332},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7333,"name":"Identifier","src":"3245:15:22"}],"id":7334,"name":"Return","src":"3238:22:22"}],"id":7335,"name":"Block","src":"3228:39:22"}],"id":7336,"name":"FunctionDefinition","src":"3173:94:22"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":7381,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7337,"name":"ParameterList","src":"3569:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":7340,"name":"ParameterList","src":"3591:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7283,"type":"modifier ()","value":"onlyOwner"},"id":7338,"name":"Identifier","src":"3581:9:22"}],"id":7339,"name":"ModifierInvocation","src":"3581:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":7341,"name":"Identifier","src":"3656:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"bool","value":"_isTransferable"},"id":7342,"name":"Identifier","src":"3664:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":7343,"name":"Literal","src":"3681:31:22"}],"id":7344,"name":"FunctionCall","src":"3656:57:22"}],"id":7345,"name":"ExpressionStatement","src":"3656:57:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7346,"name":"Identifier","src":"3767:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7347,"name":"ElementaryTypeNameExpression","src":"3776:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7348,"name":"Literal","src":"3784:1:22"}],"id":7349,"name":"FunctionCall","src":"3776:10:22"}],"id":7350,"name":"Assignment","src":"3767:19:22"}],"id":7351,"name":"ExpressionStatement","src":"3767:19:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7232,"type":"function (address,address)","value":"TransferredOwnership"},"id":7352,"name":"Identifier","src":"3802:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7353,"name":"Identifier","src":"3823:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7354,"name":"ElementaryTypeNameExpression","src":"3831:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7355,"name":"Literal","src":"3839:1:22"}],"id":7356,"name":"FunctionCall","src":"3831:10:22"}],"id":7357,"name":"FunctionCall","src":"3802:40:22"}],"id":7358,"name":"EmitStatement","src":"3797:45:22"}],"id":7359,"name":"Block","src":"3591:258:22"}],"id":7360,"name":"FunctionDefinition","src":"3543:306:22"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":7381,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7361,"name":"ParameterList","src":"3946:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7368,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7362,"name":"ElementaryTypeName","src":"3970:15:22"}],"id":7363,"name":"VariableDeclaration","src":"3970:15:22"}],"id":7364,"name":"ParameterList","src":"3969:17:22"},{"children":[{"attributes":{"functionReturnParameters":7364},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7365,"name":"Identifier","src":"4004:6:22"}],"id":7366,"name":"Return","src":"3997:13:22"}],"id":7367,"name":"Block","src":"3987:30:22"}],"id":7368,"name":"FunctionDefinition","src":"3932:85:22"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":7381,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":7380,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7369,"name":"ElementaryTypeName","src":"4141:7:22"}],"id":7370,"name":"VariableDeclaration","src":"4141:16:22"}],"id":7371,"name":"ParameterList","src":"4140:18:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7380,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7372,"name":"ElementaryTypeName","src":"4182:4:22"}],"id":7373,"name":"VariableDeclaration","src":"4182:4:22"}],"id":7374,"name":"ParameterList","src":"4181:6:22"},{"children":[{"attributes":{"functionReturnParameters":7374},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7370,"type":"address","value":"_address"},"id":7375,"name":"Identifier","src":"4205:8:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"address payable","value":"_owner"},"id":7376,"name":"Identifier","src":"4217:6:22"}],"id":7377,"name":"BinaryOperation","src":"4205:18:22"}],"id":7378,"name":"Return","src":"4198:25:22"}],"id":7379,"name":"Block","src":"4188:42:22"}],"id":7380,"name":"FunctionDefinition","src":"4123:107:22"}],"id":7381,"name":"ContractDefinition","src":"1149:3083:22"}],"id":7382,"name":"SourceUnit","src":"767:3466:22"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[418]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":203,"name":"PragmaDirective","src":"778:24:23"},{"attributes":{"SourceUnit":1718,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":419,"symbolAliases":[null],"unitAlias":""},"id":204,"name":"ImportDirective","src":"804:31:23"},{"attributes":{"SourceUnit":202,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":419,"symbolAliases":[null],"unitAlias":""},"id":205,"name":"ImportDirective","src":"836:29:23"},{"attributes":{"contractDependencies":[201],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[418,201],"name":"TokenWhitelistable","scope":419},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":201,"type":"contract ENSResolvable"},"id":206,"name":"UserDefinedTypeName","src":"989:13:23"}],"id":207,"name":"InheritanceSpecifier","src":"989:13:23"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":418,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":208,"name":"ElementaryTypeName","src":"1092:7:23"}],"id":209,"name":"VariableDeclaration","src":"1092:35:23"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":418,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":219,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":210,"name":"ElementaryTypeName","src":"1292:7:23"}],"id":211,"name":"VariableDeclaration","src":"1292:28:23"}],"id":212,"name":"ParameterList","src":"1291:30:23"},{"attributes":{"parameters":[null]},"children":[],"id":213,"name":"ParameterList","src":"1331:0:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":214,"name":"Identifier","src":"1341:19:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":215,"name":"Identifier","src":"1363:20:23"}],"id":216,"name":"Assignment","src":"1341:42:23"}],"id":217,"name":"ExpressionStatement","src":"1341:42:23"}],"id":218,"name":"Block","src":"1331:59:23"}],"id":219,"name":"FunctionDefinition","src":"1280:110:23"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":418,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":220,"name":"ParameterList","src":"1541:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":227,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":221,"name":"ElementaryTypeName","src":"1567:7:23"}],"id":222,"name":"VariableDeclaration","src":"1567:7:23"}],"id":223,"name":"ParameterList","src":"1566:9:23"},{"children":[{"attributes":{"functionReturnParameters":223},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":224,"name":"Identifier","src":"1593:19:23"}],"id":225,"name":"Return","src":"1586:26:23"}],"id":226,"name":"Block","src":"1576:43:23"}],"id":227,"name":"FunctionDefinition","src":"1514:105:23"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":256,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":228,"name":"ElementaryTypeName","src":"2194:7:23"}],"id":229,"name":"VariableDeclaration","src":"2194:10:23"}],"id":230,"name":"ParameterList","src":"2193:12:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":231,"name":"ElementaryTypeName","src":"2229:6:23"}],"id":232,"name":"VariableDeclaration","src":"2229:13:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":233,"name":"ElementaryTypeName","src":"2244:7:23"}],"id":234,"name":"VariableDeclaration","src":"2244:7:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":235,"name":"ElementaryTypeName","src":"2253:7:23"}],"id":236,"name":"VariableDeclaration","src":"2253:7:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":237,"name":"ElementaryTypeName","src":"2262:4:23"}],"id":238,"name":"VariableDeclaration","src":"2262:4:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":239,"name":"ElementaryTypeName","src":"2268:4:23"}],"id":240,"name":"VariableDeclaration","src":"2268:4:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":241,"name":"ElementaryTypeName","src":"2274:4:23"}],"id":242,"name":"VariableDeclaration","src":"2274:4:23"},{"attributes":{"constant":false,"name":"","scope":256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":243,"name":"ElementaryTypeName","src":"2280:7:23"}],"id":244,"name":"VariableDeclaration","src":"2280:7:23"}],"id":245,"name":"ParameterList","src":"2228:60:23"},{"children":[{"attributes":{"functionReturnParameters":245},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":755,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":246,"name":"Identifier","src":"2306:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":247,"name":"Identifier","src":"2322:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":248,"name":"Identifier","src":"2334:19:23"}],"id":249,"name":"FunctionCall","src":"2322:32:23"}],"id":250,"name":"FunctionCall","src":"2306:49:23"}],"id":251,"name":"MemberAccess","src":"2306:62:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":229,"type":"address","value":"_a"},"id":252,"name":"Identifier","src":"2369:2:23"}],"id":253,"name":"FunctionCall","src":"2306:66:23"}],"id":254,"name":"Return","src":"2299:73:23"}],"id":255,"name":"Block","src":"2289:90:23"}],"id":256,"name":"FunctionDefinition","src":"2171:208:23"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":257,"name":"ParameterList","src":"2914:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":258,"name":"ElementaryTypeName","src":"2940:6:23"}],"id":259,"name":"VariableDeclaration","src":"2940:13:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":260,"name":"ElementaryTypeName","src":"2955:7:23"}],"id":261,"name":"VariableDeclaration","src":"2955:7:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":262,"name":"ElementaryTypeName","src":"2964:7:23"}],"id":263,"name":"VariableDeclaration","src":"2964:7:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":264,"name":"ElementaryTypeName","src":"2973:4:23"}],"id":265,"name":"VariableDeclaration","src":"2973:4:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":266,"name":"ElementaryTypeName","src":"2979:4:23"}],"id":267,"name":"VariableDeclaration","src":"2979:4:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":268,"name":"ElementaryTypeName","src":"2985:4:23"}],"id":269,"name":"VariableDeclaration","src":"2985:4:23"},{"attributes":{"constant":false,"name":"","scope":282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":270,"name":"ElementaryTypeName","src":"2991:7:23"}],"id":271,"name":"VariableDeclaration","src":"2991:7:23"}],"id":272,"name":"ParameterList","src":"2939:60:23"},{"children":[{"attributes":{"functionReturnParameters":272},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":772,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":273,"name":"Identifier","src":"3017:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":274,"name":"Identifier","src":"3033:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":275,"name":"Identifier","src":"3045:19:23"}],"id":276,"name":"FunctionCall","src":"3033:32:23"}],"id":277,"name":"FunctionCall","src":"3017:49:23"}],"id":278,"name":"MemberAccess","src":"3017:67:23"}],"id":279,"name":"FunctionCall","src":"3017:69:23"}],"id":280,"name":"Return","src":"3010:76:23"}],"id":281,"name":"Block","src":"3000:93:23"}],"id":282,"name":"FunctionDefinition","src":"2887:206:23"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":283,"name":"ParameterList","src":"3247:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":297,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":284,"name":"ElementaryTypeName","src":"3273:7:23"}],"id":285,"name":"ArrayTypeName","src":"3273:9:23"}],"id":286,"name":"VariableDeclaration","src":"3273:16:23"}],"id":287,"name":"ParameterList","src":"3272:18:23"},{"children":[{"attributes":{"functionReturnParameters":287},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":778,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":288,"name":"Identifier","src":"3308:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":289,"name":"Identifier","src":"3324:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":290,"name":"Identifier","src":"3336:19:23"}],"id":291,"name":"FunctionCall","src":"3324:32:23"}],"id":292,"name":"FunctionCall","src":"3308:49:23"}],"id":293,"name":"MemberAccess","src":"3308:67:23"}],"id":294,"name":"FunctionCall","src":"3308:69:23"}],"id":295,"name":"Return","src":"3301:76:23"}],"id":296,"name":"Block","src":"3291:93:23"}],"id":297,"name":"FunctionDefinition","src":"3220:164:23"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":298,"name":"ParameterList","src":"3537:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":312,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":299,"name":"ElementaryTypeName","src":"3563:7:23"}],"id":300,"name":"ArrayTypeName","src":"3563:9:23"}],"id":301,"name":"VariableDeclaration","src":"3563:16:23"}],"id":302,"name":"ParameterList","src":"3562:18:23"},{"children":[{"attributes":{"functionReturnParameters":302},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":784,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":303,"name":"Identifier","src":"3598:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":304,"name":"Identifier","src":"3614:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":305,"name":"Identifier","src":"3626:19:23"}],"id":306,"name":"FunctionCall","src":"3614:32:23"}],"id":307,"name":"FunctionCall","src":"3598:49:23"}],"id":308,"name":"MemberAccess","src":"3598:66:23"}],"id":309,"name":"FunctionCall","src":"3598:68:23"}],"id":310,"name":"Return","src":"3591:75:23"}],"id":311,"name":"Block","src":"3581:92:23"}],"id":312,"name":"FunctionDefinition","src":"3511:162:23"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":418,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":333,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":313,"name":"ElementaryTypeName","src":"3976:7:23"}],"id":314,"name":"VariableDeclaration","src":"3976:14:23"},{"attributes":{"constant":false,"name":"_rate","scope":333,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":315,"name":"ElementaryTypeName","src":"3992:7:23"}],"id":316,"name":"VariableDeclaration","src":"3992:13:23"},{"attributes":{"constant":false,"name":"_updateDate","scope":333,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":317,"name":"ElementaryTypeName","src":"4007:7:23"}],"id":318,"name":"VariableDeclaration","src":"4007:19:23"}],"id":319,"name":"ParameterList","src":"3975:52:23"},{"attributes":{"parameters":[null]},"children":[],"id":320,"name":"ParameterList","src":"4037:0:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":816,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":321,"name":"Identifier","src":"4047:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":322,"name":"Identifier","src":"4063:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":323,"name":"Identifier","src":"4075:19:23"}],"id":324,"name":"FunctionCall","src":"4063:32:23"}],"id":325,"name":"FunctionCall","src":"4047:49:23"}],"id":326,"name":"MemberAccess","src":"4047:65:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":314,"type":"address","value":"_token"},"id":327,"name":"Identifier","src":"4113:6:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":316,"type":"uint256","value":"_rate"},"id":328,"name":"Identifier","src":"4121:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":318,"type":"uint256","value":"_updateDate"},"id":329,"name":"Identifier","src":"4128:11:23"}],"id":330,"name":"FunctionCall","src":"4047:93:23"}],"id":331,"name":"ExpressionStatement","src":"4047:93:23"}],"id":332,"name":"Block","src":"4037:110:23"}],"id":333,"name":"FunctionDefinition","src":"3950:197:23"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":355,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":334,"name":"ElementaryTypeName","src":"4342:7:23"}],"id":335,"name":"VariableDeclaration","src":"4342:20:23"},{"attributes":{"constant":false,"name":"_data","scope":355,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":336,"name":"ElementaryTypeName","src":"4364:5:23"}],"id":337,"name":"VariableDeclaration","src":"4364:18:23"}],"id":338,"name":"ParameterList","src":"4341:42:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":355,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":339,"name":"ElementaryTypeName","src":"4407:7:23"}],"id":340,"name":"VariableDeclaration","src":"4407:7:23"},{"attributes":{"constant":false,"name":"","scope":355,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":341,"name":"ElementaryTypeName","src":"4416:7:23"}],"id":342,"name":"VariableDeclaration","src":"4416:7:23"}],"id":343,"name":"ParameterList","src":"4406:18:23"},{"children":[{"attributes":{"functionReturnParameters":343},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":802,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":344,"name":"Identifier","src":"4442:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":345,"name":"Identifier","src":"4458:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":346,"name":"Identifier","src":"4470:19:23"}],"id":347,"name":"FunctionCall","src":"4458:32:23"}],"id":348,"name":"FunctionCall","src":"4442:49:23"}],"id":349,"name":"MemberAccess","src":"4442:76:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":335,"type":"address","value":"_destination"},"id":350,"name":"Identifier","src":"4519:12:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"bytes memory","value":"_data"},"id":351,"name":"Identifier","src":"4533:5:23"}],"id":352,"name":"FunctionCall","src":"4442:97:23"}],"id":353,"name":"Return","src":"4435:104:23"}],"id":354,"name":"Block","src":"4425:121:23"}],"id":355,"name":"FunctionDefinition","src":"4305:241:23"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":371,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":356,"name":"ElementaryTypeName","src":"4671:7:23"}],"id":357,"name":"VariableDeclaration","src":"4671:10:23"}],"id":358,"name":"ParameterList","src":"4670:12:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":371,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":359,"name":"ElementaryTypeName","src":"4706:4:23"}],"id":360,"name":"VariableDeclaration","src":"4706:4:23"}],"id":361,"name":"ParameterList","src":"4705:6:23"},{"children":[{"attributes":{"assignments":[null,null,null,363,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":370,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":362,"name":"ElementaryTypeName","src":"4729:4:23"}],"id":363,"name":"VariableDeclaration","src":"4729:14:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":256,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":364,"name":"Identifier","src":"4753:13:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":357,"type":"address","value":"_a"},"id":365,"name":"Identifier","src":"4767:2:23"}],"id":366,"name":"FunctionCall","src":"4753:17:23"}],"id":367,"name":"VariableDeclarationStatement","src":"4722:48:23"},{"attributes":{"functionReturnParameters":361},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":363,"type":"bool","value":"available"},"id":368,"name":"Identifier","src":"4787:9:23"}],"id":369,"name":"Return","src":"4780:16:23"}],"id":370,"name":"Block","src":"4712:91:23"}],"id":371,"name":"FunctionDefinition","src":"4644:159:23"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":387,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":372,"name":"ElementaryTypeName","src":"4931:7:23"}],"id":373,"name":"VariableDeclaration","src":"4931:10:23"}],"id":374,"name":"ParameterList","src":"4930:12:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":387,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":375,"name":"ElementaryTypeName","src":"4966:4:23"}],"id":376,"name":"VariableDeclaration","src":"4966:4:23"}],"id":377,"name":"ParameterList","src":"4965:6:23"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,379,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":386,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":378,"name":"ElementaryTypeName","src":"4993:4:23"}],"id":379,"name":"VariableDeclaration","src":"4993:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":256,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":380,"name":"Identifier","src":"5014:13:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":373,"type":"address","value":"_a"},"id":381,"name":"Identifier","src":"5028:2:23"}],"id":382,"name":"FunctionCall","src":"5014:17:23"}],"id":383,"name":"VariableDeclarationStatement","src":"4982:49:23"},{"attributes":{"functionReturnParameters":377},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":379,"type":"bool","value":"redeemable"},"id":384,"name":"Identifier","src":"5048:10:23"}],"id":385,"name":"Return","src":"5041:17:23"}],"id":386,"name":"Block","src":"4972:93:23"}],"id":387,"name":"FunctionDefinition","src":"4903:162:23"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":403,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":388,"name":"ElementaryTypeName","src":"5187:7:23"}],"id":389,"name":"VariableDeclaration","src":"5187:10:23"}],"id":390,"name":"ParameterList","src":"5186:12:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":403,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":391,"name":"ElementaryTypeName","src":"5222:4:23"}],"id":392,"name":"VariableDeclaration","src":"5222:4:23"}],"id":393,"name":"ParameterList","src":"5221:6:23"},{"children":[{"attributes":{"assignments":[null,null,null,null,395,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":402,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":394,"name":"ElementaryTypeName","src":"5247:4:23"}],"id":395,"name":"VariableDeclaration","src":"5247:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":256,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":396,"name":"Identifier","src":"5268:13:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":389,"type":"address","value":"_a"},"id":397,"name":"Identifier","src":"5282:2:23"}],"id":398,"name":"FunctionCall","src":"5268:17:23"}],"id":399,"name":"VariableDeclarationStatement","src":"5238:47:23"},{"attributes":{"functionReturnParameters":393},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":395,"type":"bool","value":"loadable"},"id":400,"name":"Identifier","src":"5302:8:23"}],"id":401,"name":"Return","src":"5295:15:23"}],"id":402,"name":"Block","src":"5228:89:23"}],"id":403,"name":"FunctionDefinition","src":"5161:156:23"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":418,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":404,"name":"ParameterList","src":"5456:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":405,"name":"ElementaryTypeName","src":"5482:7:23"}],"id":406,"name":"VariableDeclaration","src":"5482:7:23"}],"id":407,"name":"ParameterList","src":"5481:9:23"},{"children":[{"attributes":{"functionReturnParameters":407},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":807,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":817,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":408,"name":"Identifier","src":"5508:15:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":409,"name":"Identifier","src":"5524:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_tokenWhitelistNode"},"id":410,"name":"Identifier","src":"5536:19:23"}],"id":411,"name":"FunctionCall","src":"5524:32:23"}],"id":412,"name":"FunctionCall","src":"5508:49:23"}],"id":413,"name":"MemberAccess","src":"5508:60:23"}],"id":414,"name":"FunctionCall","src":"5508:62:23"}],"id":415,"name":"Return","src":"5501:69:23"}],"id":416,"name":"Block","src":"5491:86:23"}],"id":417,"name":"FunctionDefinition","src":"5436:141:23"}],"id":418,"name":"ContractDefinition","src":"958:4621:23"}],"id":419,"name":"SourceUnit","src":"778:4802:23"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[5090]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":5052,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":6285,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":5091,"symbolAliases":[null],"unitAlias":""},"id":5053,"name":"ImportDirective","src":"799:32:24"},{"attributes":{"SourceUnit":6504,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":5091,"symbolAliases":[null],"unitAlias":""},"id":5054,"name":"ImportDirective","src":"832:36:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[5090],"name":"Transferrable","scope":5091},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":6503,"type":"library SafeERC20"},"id":5055,"name":"UserDefinedTypeName","src":"996:9:24"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":6284,"type":"contract ERC20"},"id":5056,"name":"UserDefinedTypeName","src":"1010:5:24"}],"id":5057,"name":"UsingForDirective","src":"990:26:24"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":5090,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":5089,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5058,"name":"ElementaryTypeName","src":"1389:15:24"}],"id":5059,"name":"VariableDeclaration","src":"1389:19:24"},{"attributes":{"constant":false,"name":"_asset","scope":5089,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5060,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":5061,"name":"VariableDeclaration","src":"1410:14:24"},{"attributes":{"constant":false,"name":"_amount","scope":5089,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5062,"name":"ElementaryTypeName","src":"1426:7:24"}],"id":5063,"name":"VariableDeclaration","src":"1426:15:24"}],"id":5064,"name":"ParameterList","src":"1388:54:24"},{"attributes":{"parameters":[null]},"children":[],"id":5065,"name":"ParameterList","src":"1452:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5061,"type":"address","value":"_asset"},"id":5066,"name":"Identifier","src":"1510:6:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5067,"name":"ElementaryTypeNameExpression","src":"1520:7:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5068,"name":"Literal","src":"1528:1:24"}],"id":5069,"name":"FunctionCall","src":"1520:10:24"}],"id":5070,"name":"BinaryOperation","src":"1510:20:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5059,"type":"address payable","value":"_to"},"id":5071,"name":"Identifier","src":"1546:3:24"}],"id":5073,"name":"MemberAccess","src":"1546:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"uint256","value":"_amount"},"id":5074,"name":"Identifier","src":"1559:7:24"}],"id":5075,"name":"FunctionCall","src":"1546:21:24"}],"id":5076,"name":"ExpressionStatement","src":"1546:21:24"}],"id":5077,"name":"Block","src":"1532:46:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":6317,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"type(contract ERC20)","value":"ERC20"},"id":5078,"name":"Identifier","src":"1598:5:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5061,"type":"address","value":"_asset"},"id":5079,"name":"Identifier","src":"1604:6:24"}],"id":5080,"name":"FunctionCall","src":"1598:13:24"}],"id":5081,"name":"MemberAccess","src":"1598:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5059,"type":"address payable","value":"_to"},"id":5082,"name":"Identifier","src":"1625:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"uint256","value":"_amount"},"id":5083,"name":"Identifier","src":"1630:7:24"}],"id":5084,"name":"FunctionCall","src":"1598:40:24"}],"id":5085,"name":"ExpressionStatement","src":"1598:40:24"}],"id":5086,"name":"Block","src":"1584:65:24"}],"id":5087,"name":"IfStatement","src":"1506:143:24"}],"id":5088,"name":"Block","src":"1452:203:24"}],"id":5089,"name":"FunctionDefinition","src":"1366:289:24"}],"id":5090,"name":"ContractDefinition","src":"961:696:24"}],"id":5091,"name":"SourceUnit","src":"773:885:24"}},"mocks/tokenWhitelistableExporter.sol":{"AST":{"attributes":{"absolutePath":"mocks/tokenWhitelistableExporter.sol","exportedSymbols":{"TokenWhitelistableExporter":[156]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"0:24:25"},{"attributes":{"SourceUnit":419,"absolutePath":"internals/tokenWhitelistable.sol","file":"../internals/tokenWhitelistable.sol","scope":157,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"26:45:25"},{"attributes":{"SourceUnit":202,"absolutePath":"internals/ensResolvable.sol","file":"../internals/ensResolvable.sol","scope":157,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"72:40:25"},{"attributes":{"contractDependencies":[201,418],"contractKind":"contract","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[156,418,201],"name":"TokenWhitelistableExporter","scope":157},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":201,"type":"contract ENSResolvable"},"id":4,"name":"UserDefinedTypeName","src":"154:13:25"}],"id":5,"name":"InheritanceSpecifier","src":"154:13:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":418,"type":"contract TokenWhitelistable"},"id":6,"name":"UserDefinedTypeName","src":"169:18:25"}],"id":7,"name":"InheritanceSpecifier","src":"169:18:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":156,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":21,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8,"name":"ElementaryTypeName","src":"206:7:25"}],"id":9,"name":"VariableDeclaration","src":"206:13:25"},{"attributes":{"constant":false,"name":"_tokenWhitelistName_","scope":21,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10,"name":"ElementaryTypeName","src":"221:7:25"}],"id":11,"name":"VariableDeclaration","src":"221:28:25"}],"id":12,"name":"ParameterList","src":"205:45:25"},{"attributes":{"parameters":[null]},"children":[],"id":19,"name":"ParameterList","src":"320:0:25"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":201,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":13,"name":"Identifier","src":"258:13:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9,"type":"address","value":"_ens_"},"id":14,"name":"Identifier","src":"272:5:25"}],"id":15,"name":"ModifierInvocation","src":"258:20:25"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":418,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":16,"name":"Identifier","src":"279:18:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11,"type":"bytes32","value":"_tokenWhitelistName_"},"id":17,"name":"Identifier","src":"298:20:25"}],"id":18,"name":"ModifierInvocation","src":"279:40:25"},{"attributes":{"statements":[null]},"children":[],"id":20,"name":"Block","src":"320:2:25"}],"id":21,"name":"FunctionDefinition","src":"194:128:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":45,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":22,"name":"ElementaryTypeName","src":"350:7:25"}],"id":23,"name":"VariableDeclaration","src":"350:10:25"}],"id":24,"name":"ParameterList","src":"349:12:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":25,"name":"ElementaryTypeName","src":"385:6:25"}],"id":26,"name":"VariableDeclaration","src":"385:13:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":27,"name":"ElementaryTypeName","src":"400:7:25"}],"id":28,"name":"VariableDeclaration","src":"400:7:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":29,"name":"ElementaryTypeName","src":"409:7:25"}],"id":30,"name":"VariableDeclaration","src":"409:7:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":31,"name":"ElementaryTypeName","src":"418:4:25"}],"id":32,"name":"VariableDeclaration","src":"418:4:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":33,"name":"ElementaryTypeName","src":"424:4:25"}],"id":34,"name":"VariableDeclaration","src":"424:4:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":35,"name":"ElementaryTypeName","src":"430:4:25"}],"id":36,"name":"VariableDeclaration","src":"430:4:25"},{"attributes":{"constant":false,"name":"","scope":45,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":37,"name":"ElementaryTypeName","src":"436:7:25"}],"id":38,"name":"VariableDeclaration","src":"436:7:25"}],"id":39,"name":"ParameterList","src":"384:60:25"},{"children":[{"attributes":{"functionReturnParameters":39},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":256,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":40,"name":"Identifier","src":"462:13:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":23,"type":"address","value":"_a"},"id":41,"name":"Identifier","src":"476:2:25"}],"id":42,"name":"FunctionCall","src":"462:17:25"}],"id":43,"name":"Return","src":"455:24:25"}],"id":44,"name":"Block","src":"445:41:25"}],"id":45,"name":"FunctionDefinition","src":"328:158:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":46,"name":"ParameterList","src":"518:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":47,"name":"ElementaryTypeName","src":"544:6:25"}],"id":48,"name":"VariableDeclaration","src":"544:13:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":49,"name":"ElementaryTypeName","src":"559:7:25"}],"id":50,"name":"VariableDeclaration","src":"559:7:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":51,"name":"ElementaryTypeName","src":"568:7:25"}],"id":52,"name":"VariableDeclaration","src":"568:7:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":53,"name":"ElementaryTypeName","src":"577:4:25"}],"id":54,"name":"VariableDeclaration","src":"577:4:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":55,"name":"ElementaryTypeName","src":"583:4:25"}],"id":56,"name":"VariableDeclaration","src":"583:4:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":57,"name":"ElementaryTypeName","src":"589:4:25"}],"id":58,"name":"VariableDeclaration","src":"589:4:25"},{"attributes":{"constant":false,"name":"","scope":66,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":59,"name":"ElementaryTypeName","src":"595:7:25"}],"id":60,"name":"VariableDeclaration","src":"595:7:25"}],"id":61,"name":"ParameterList","src":"543:60:25"},{"children":[{"attributes":{"functionReturnParameters":61},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":62,"name":"Identifier","src":"621:18:25"}],"id":63,"name":"FunctionCall","src":"621:20:25"}],"id":64,"name":"Return","src":"614:27:25"}],"id":65,"name":"Block","src":"604:44:25"}],"id":66,"name":"FunctionDefinition","src":"492:156:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":67,"name":"ParameterList","src":"680:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":76,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":68,"name":"ElementaryTypeName","src":"706:7:25"}],"id":69,"name":"ArrayTypeName","src":"706:9:25"}],"id":70,"name":"VariableDeclaration","src":"706:16:25"}],"id":71,"name":"ParameterList","src":"705:18:25"},{"children":[{"attributes":{"functionReturnParameters":71},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":297,"type":"function () view returns (address[] memory)","value":"_tokenAddressArray"},"id":72,"name":"Identifier","src":"741:18:25"}],"id":73,"name":"FunctionCall","src":"741:20:25"}],"id":74,"name":"Return","src":"734:27:25"}],"id":75,"name":"Block","src":"724:44:25"}],"id":76,"name":"FunctionDefinition","src":"654:114:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":77,"name":"ParameterList","src":"799:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":86,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":78,"name":"ElementaryTypeName","src":"825:7:25"}],"id":79,"name":"ArrayTypeName","src":"825:9:25"}],"id":80,"name":"VariableDeclaration","src":"825:16:25"}],"id":81,"name":"ParameterList","src":"824:18:25"},{"children":[{"attributes":{"functionReturnParameters":81},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":312,"type":"function () view returns (address[] memory)","value":"_redeemableTokens"},"id":82,"name":"Identifier","src":"860:17:25"}],"id":83,"name":"FunctionCall","src":"860:19:25"}],"id":84,"name":"Return","src":"853:26:25"}],"id":85,"name":"Block","src":"843:43:25"}],"id":86,"name":"FunctionDefinition","src":"774:112:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":156,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":102,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":87,"name":"ElementaryTypeName","src":"917:7:25"}],"id":88,"name":"VariableDeclaration","src":"917:14:25"},{"attributes":{"constant":false,"name":"_rate","scope":102,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":89,"name":"ElementaryTypeName","src":"933:7:25"}],"id":90,"name":"VariableDeclaration","src":"933:13:25"},{"attributes":{"constant":false,"name":"_updateDate","scope":102,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":91,"name":"ElementaryTypeName","src":"948:7:25"}],"id":92,"name":"VariableDeclaration","src":"948:19:25"}],"id":93,"name":"ParameterList","src":"916:52:25"},{"attributes":{"parameters":[null]},"children":[],"id":94,"name":"ParameterList","src":"978:0:25"},{"children":[{"attributes":{"functionReturnParameters":94},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":333,"type":"function (address,uint256,uint256)","value":"_updateTokenRate"},"id":95,"name":"Identifier","src":"995:16:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"address","value":"_token"},"id":96,"name":"Identifier","src":"1012:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":90,"type":"uint256","value":"_rate"},"id":97,"name":"Identifier","src":"1020:5:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":92,"type":"uint256","value":"_updateDate"},"id":98,"name":"Identifier","src":"1027:11:25"}],"id":99,"name":"FunctionCall","src":"995:44:25"}],"id":100,"name":"Return","src":"988:51:25"}],"id":101,"name":"Block","src":"978:68:25"}],"id":102,"name":"FunctionDefinition","src":"892:154:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":119,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":103,"name":"ElementaryTypeName","src":"1088:7:25"}],"id":104,"name":"VariableDeclaration","src":"1088:20:25"},{"attributes":{"constant":false,"name":"_data","scope":119,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":105,"name":"ElementaryTypeName","src":"1110:5:25"}],"id":106,"name":"VariableDeclaration","src":"1110:20:25"}],"id":107,"name":"ParameterList","src":"1087:44:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":119,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":108,"name":"ElementaryTypeName","src":"1155:7:25"}],"id":109,"name":"VariableDeclaration","src":"1155:7:25"},{"attributes":{"constant":false,"name":"","scope":119,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":110,"name":"ElementaryTypeName","src":"1164:7:25"}],"id":111,"name":"VariableDeclaration","src":"1164:7:25"}],"id":112,"name":"ParameterList","src":"1154:18:25"},{"children":[{"attributes":{"functionReturnParameters":112},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":355,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":113,"name":"Identifier","src":"1190:27:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":104,"type":"address","value":"_destination"},"id":114,"name":"Identifier","src":"1218:12:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":106,"type":"bytes calldata","value":"_data"},"id":115,"name":"Identifier","src":"1232:5:25"}],"id":116,"name":"FunctionCall","src":"1190:48:25"}],"id":117,"name":"Return","src":"1183:55:25"}],"id":118,"name":"Block","src":"1173:72:25"}],"id":119,"name":"FunctionDefinition","src":"1052:193:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTokenLoadable","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":131,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":120,"name":"ElementaryTypeName","src":"1276:7:25"}],"id":121,"name":"VariableDeclaration","src":"1276:10:25"}],"id":122,"name":"ParameterList","src":"1275:12:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":131,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":123,"name":"ElementaryTypeName","src":"1311:4:25"}],"id":124,"name":"VariableDeclaration","src":"1311:4:25"}],"id":125,"name":"ParameterList","src":"1310:6:25"},{"children":[{"attributes":{"functionReturnParameters":125},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":403,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":126,"name":"Identifier","src":"1334:16:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":121,"type":"address","value":"_a"},"id":127,"name":"Identifier","src":"1351:2:25"}],"id":128,"name":"FunctionCall","src":"1334:20:25"}],"id":129,"name":"Return","src":"1327:27:25"}],"id":130,"name":"Block","src":"1317:44:25"}],"id":131,"name":"FunctionDefinition","src":"1251:110:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTokenAvailable","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":143,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":132,"name":"ElementaryTypeName","src":"1393:7:25"}],"id":133,"name":"VariableDeclaration","src":"1393:10:25"}],"id":134,"name":"ParameterList","src":"1392:12:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":143,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":135,"name":"ElementaryTypeName","src":"1428:4:25"}],"id":136,"name":"VariableDeclaration","src":"1428:4:25"}],"id":137,"name":"ParameterList","src":"1427:6:25"},{"children":[{"attributes":{"functionReturnParameters":137},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":138,"name":"Identifier","src":"1451:17:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":133,"type":"address","value":"_a"},"id":139,"name":"Identifier","src":"1469:2:25"}],"id":140,"name":"FunctionCall","src":"1451:21:25"}],"id":141,"name":"Return","src":"1444:28:25"}],"id":142,"name":"Block","src":"1434:45:25"}],"id":143,"name":"FunctionDefinition","src":"1367:112:25"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTokenRedeemable","scope":156,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":155,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":144,"name":"ElementaryTypeName","src":"1512:7:25"}],"id":145,"name":"VariableDeclaration","src":"1512:10:25"}],"id":146,"name":"ParameterList","src":"1511:12:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":155,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":147,"name":"ElementaryTypeName","src":"1547:4:25"}],"id":148,"name":"VariableDeclaration","src":"1547:4:25"}],"id":149,"name":"ParameterList","src":"1546:6:25"},{"children":[{"attributes":{"functionReturnParameters":149},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":387,"type":"function (address) view returns (bool)","value":"_isTokenRedeemable"},"id":150,"name":"Identifier","src":"1570:18:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":145,"type":"address","value":"_a"},"id":151,"name":"Identifier","src":"1589:2:25"}],"id":152,"name":"FunctionCall","src":"1570:22:25"}],"id":153,"name":"Return","src":"1563:29:25"}],"id":154,"name":"Block","src":"1553:46:25"}],"id":155,"name":"FunctionDefinition","src":"1485:114:25"}],"id":156,"name":"ContractDefinition","src":"115:1486:25"}],"id":157,"name":"SourceUnit","src":"0:1602:25"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[817],"TokenWhitelist":[1717]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":731,"name":"PragmaDirective","src":"774:24:26"},{"attributes":{"SourceUnit":5051,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":732,"name":"ImportDirective","src":"800:38:26"},{"attributes":{"SourceUnit":5091,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":733,"name":"ImportDirective","src":"839:39:26"},{"attributes":{"SourceUnit":4955,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":734,"name":"ImportDirective","src":"879:36:26"},{"attributes":{"SourceUnit":4844,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":735,"name":"ImportDirective","src":"916:33:26"},{"attributes":{"SourceUnit":3138,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":1718,"symbolAliases":[null],"unitAlias":""},"id":736,"name":"ImportDirective","src":"950:34:26"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[817],"name":"ITokenWhitelist","scope":1718},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":737,"name":"ElementaryTypeName","src":"1124:7:26"}],"id":738,"name":"VariableDeclaration","src":"1124:7:26"}],"id":739,"name":"ParameterList","src":"1123:9:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":740,"name":"ElementaryTypeName","src":"1156:6:26"}],"id":741,"name":"VariableDeclaration","src":"1156:13:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":742,"name":"ElementaryTypeName","src":"1171:7:26"}],"id":743,"name":"VariableDeclaration","src":"1171:7:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":744,"name":"ElementaryTypeName","src":"1180:7:26"}],"id":745,"name":"VariableDeclaration","src":"1180:7:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":746,"name":"ElementaryTypeName","src":"1189:4:26"}],"id":747,"name":"VariableDeclaration","src":"1189:4:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":748,"name":"ElementaryTypeName","src":"1195:4:26"}],"id":749,"name":"VariableDeclaration","src":"1195:4:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":750,"name":"ElementaryTypeName","src":"1201:4:26"}],"id":751,"name":"VariableDeclaration","src":"1201:4:26"},{"attributes":{"constant":false,"name":"","scope":755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":752,"name":"ElementaryTypeName","src":"1207:7:26"}],"id":753,"name":"VariableDeclaration","src":"1207:7:26"}],"id":754,"name":"ParameterList","src":"1155:60:26"}],"id":755,"name":"FunctionDefinition","src":"1102:114:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":756,"name":"ParameterList","src":"1248:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":757,"name":"ElementaryTypeName","src":"1274:6:26"}],"id":758,"name":"VariableDeclaration","src":"1274:13:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":759,"name":"ElementaryTypeName","src":"1289:7:26"}],"id":760,"name":"VariableDeclaration","src":"1289:7:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":761,"name":"ElementaryTypeName","src":"1298:7:26"}],"id":762,"name":"VariableDeclaration","src":"1298:7:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":763,"name":"ElementaryTypeName","src":"1307:4:26"}],"id":764,"name":"VariableDeclaration","src":"1307:4:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":765,"name":"ElementaryTypeName","src":"1313:4:26"}],"id":766,"name":"VariableDeclaration","src":"1313:4:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":767,"name":"ElementaryTypeName","src":"1319:4:26"}],"id":768,"name":"VariableDeclaration","src":"1319:4:26"},{"attributes":{"constant":false,"name":"","scope":772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":769,"name":"ElementaryTypeName","src":"1325:7:26"}],"id":770,"name":"VariableDeclaration","src":"1325:7:26"}],"id":771,"name":"ParameterList","src":"1273:60:26"}],"id":772,"name":"FunctionDefinition","src":"1222:112:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":773,"name":"ParameterList","src":"1366:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":778,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":774,"name":"ElementaryTypeName","src":"1392:7:26"}],"id":775,"name":"ArrayTypeName","src":"1392:9:26"}],"id":776,"name":"VariableDeclaration","src":"1392:16:26"}],"id":777,"name":"ParameterList","src":"1391:18:26"}],"id":778,"name":"FunctionDefinition","src":"1340:70:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":779,"name":"ParameterList","src":"1441:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":784,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":780,"name":"ElementaryTypeName","src":"1467:7:26"}],"id":781,"name":"ArrayTypeName","src":"1467:9:26"}],"id":782,"name":"VariableDeclaration","src":"1467:16:26"}],"id":783,"name":"ParameterList","src":"1466:18:26"}],"id":784,"name":"FunctionDefinition","src":"1416:69:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":791,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":785,"name":"ElementaryTypeName","src":"1518:6:26"}],"id":786,"name":"VariableDeclaration","src":"1518:6:26"}],"id":787,"name":"ParameterList","src":"1517:8:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":791,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":788,"name":"ElementaryTypeName","src":"1549:4:26"}],"id":789,"name":"VariableDeclaration","src":"1549:4:26"}],"id":790,"name":"ParameterList","src":"1548:6:26"}],"id":791,"name":"FunctionDefinition","src":"1491:64:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":802,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":792,"name":"ElementaryTypeName","src":"1597:7:26"}],"id":793,"name":"VariableDeclaration","src":"1597:7:26"},{"attributes":{"constant":false,"name":"","scope":802,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":794,"name":"ElementaryTypeName","src":"1606:5:26"}],"id":795,"name":"VariableDeclaration","src":"1606:14:26"}],"id":796,"name":"ParameterList","src":"1596:25:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":802,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":797,"name":"ElementaryTypeName","src":"1645:7:26"}],"id":798,"name":"VariableDeclaration","src":"1645:7:26"},{"attributes":{"constant":false,"name":"","scope":802,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":799,"name":"ElementaryTypeName","src":"1654:7:26"}],"id":800,"name":"VariableDeclaration","src":"1654:7:26"}],"id":801,"name":"ParameterList","src":"1644:18:26"}],"id":802,"name":"FunctionDefinition","src":"1561:102:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":817,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":803,"name":"ParameterList","src":"1688:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":807,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":804,"name":"ElementaryTypeName","src":"1714:7:26"}],"id":805,"name":"VariableDeclaration","src":"1714:7:26"}],"id":806,"name":"ParameterList","src":"1713:9:26"}],"id":807,"name":"FunctionDefinition","src":"1669:54:26"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":817,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":816,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":808,"name":"ElementaryTypeName","src":"1754:7:26"}],"id":809,"name":"VariableDeclaration","src":"1754:7:26"},{"attributes":{"constant":false,"name":"","scope":816,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":810,"name":"ElementaryTypeName","src":"1763:7:26"}],"id":811,"name":"VariableDeclaration","src":"1763:7:26"},{"attributes":{"constant":false,"name":"","scope":816,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":812,"name":"ElementaryTypeName","src":"1772:7:26"}],"id":813,"name":"VariableDeclaration","src":"1772:7:26"}],"id":814,"name":"ParameterList","src":"1753:27:26"},{"attributes":{"parameters":[null]},"children":[],"id":815,"name":"ParameterList","src":"1789:0:26"}],"id":816,"name":"FunctionDefinition","src":"1729:61:26"}],"id":817,"name":"ContractDefinition","src":"1070:722:26"},{"attributes":{"contractDependencies":[201,5050,5090],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[1717,5090,5050,201],"name":"TokenWhitelist","scope":1718},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":201,"type":"contract ENSResolvable"},"id":818,"name":"UserDefinedTypeName","src":"1966:13:26"}],"id":819,"name":"InheritanceSpecifier","src":"1966:13:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":5050,"type":"contract Controllable"},"id":820,"name":"UserDefinedTypeName","src":"1981:12:26"}],"id":821,"name":"InheritanceSpecifier","src":"1981:12:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":5090,"type":"contract Transferrable"},"id":822,"name":"UserDefinedTypeName","src":"1995:13:26"}],"id":823,"name":"InheritanceSpecifier","src":"1995:13:26"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":4843,"type":"library strings"},"id":824,"name":"UserDefinedTypeName","src":"2021:7:26"}],"id":825,"name":"UsingForDirective","src":"2015:20:26"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3137,"type":"library SafeMath"},"id":826,"name":"UserDefinedTypeName","src":"2046:8:26"},{"attributes":{"name":"uint256","type":"uint256"},"id":827,"name":"ElementaryTypeName","src":"2059:7:26"}],"id":828,"name":"UsingForDirective","src":"2040:27:26"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":4954,"type":"library BytesUtils"},"id":829,"name":"UserDefinedTypeName","src":"2078:10:26"},{"attributes":{"name":"bytes","type":"bytes"},"id":830,"name":"ElementaryTypeName","src":"2093:5:26"}],"id":831,"name":"UsingForDirective","src":"2072:27:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":839,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":832,"name":"ElementaryTypeName","src":"2128:7:26"}],"id":833,"name":"VariableDeclaration","src":"2128:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":839,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":834,"name":"ElementaryTypeName","src":"2145:7:26"}],"id":835,"name":"VariableDeclaration","src":"2145:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":836,"name":"ElementaryTypeName","src":"2161:7:26"}],"id":837,"name":"VariableDeclaration","src":"2161:13:26"}],"id":838,"name":"ParameterList","src":"2127:48:26"}],"id":839,"name":"EventDefinition","src":"2105:71:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":840,"name":"ElementaryTypeName","src":"2209:7:26"}],"id":841,"name":"VariableDeclaration","src":"2209:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":842,"name":"ElementaryTypeName","src":"2226:7:26"}],"id":843,"name":"VariableDeclaration","src":"2226:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":847,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":844,"name":"ElementaryTypeName","src":"2242:4:26"}],"id":845,"name":"VariableDeclaration","src":"2242:14:26"}],"id":846,"name":"ParameterList","src":"2208:49:26"}],"id":847,"name":"EventDefinition","src":"2182:76:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":855,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":848,"name":"ElementaryTypeName","src":"2292:7:26"}],"id":849,"name":"VariableDeclaration","src":"2292:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":855,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":850,"name":"ElementaryTypeName","src":"2309:7:26"}],"id":851,"name":"VariableDeclaration","src":"2309:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":855,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":852,"name":"ElementaryTypeName","src":"2325:4:26"}],"id":853,"name":"VariableDeclaration","src":"2325:16:26"}],"id":854,"name":"ParameterList","src":"2291:51:26"}],"id":855,"name":"EventDefinition","src":"2263:80:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":869,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":856,"name":"ElementaryTypeName","src":"2366:7:26"}],"id":857,"name":"VariableDeclaration","src":"2366:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":869,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":858,"name":"ElementaryTypeName","src":"2383:7:26"}],"id":859,"name":"VariableDeclaration","src":"2383:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":869,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":860,"name":"ElementaryTypeName","src":"2399:6:26"}],"id":861,"name":"VariableDeclaration","src":"2399:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":869,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":862,"name":"ElementaryTypeName","src":"2415:7:26"}],"id":863,"name":"VariableDeclaration","src":"2415:18:26"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":869,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":864,"name":"ElementaryTypeName","src":"2435:4:26"}],"id":865,"name":"VariableDeclaration","src":"2435:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":869,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":866,"name":"ElementaryTypeName","src":"2451:4:26"}],"id":867,"name":"VariableDeclaration","src":"2451:16:26"}],"id":868,"name":"ParameterList","src":"2365:103:26"}],"id":869,"name":"EventDefinition","src":"2349:120:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":875,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":870,"name":"ElementaryTypeName","src":"2493:7:26"}],"id":871,"name":"VariableDeclaration","src":"2493:15:26"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":875,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":872,"name":"ElementaryTypeName","src":"2510:7:26"}],"id":873,"name":"VariableDeclaration","src":"2510:14:26"}],"id":874,"name":"ParameterList","src":"2492:33:26"}],"id":875,"name":"EventDefinition","src":"2474:52:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":879,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":876,"name":"ElementaryTypeName","src":"2552:6:26"}],"id":877,"name":"VariableDeclaration","src":"2552:16:26"}],"id":878,"name":"ParameterList","src":"2551:18:26"}],"id":879,"name":"EventDefinition","src":"2532:38:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":883,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":880,"name":"ElementaryTypeName","src":"2597:6:26"}],"id":881,"name":"VariableDeclaration","src":"2597:16:26"}],"id":882,"name":"ParameterList","src":"2596:18:26"}],"id":883,"name":"EventDefinition","src":"2575:40:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":889,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":884,"name":"ElementaryTypeName","src":"2647:7:26"}],"id":885,"name":"VariableDeclaration","src":"2647:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":889,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":886,"name":"ElementaryTypeName","src":"2663:6:26"}],"id":887,"name":"VariableDeclaration","src":"2663:16:26"}],"id":888,"name":"ParameterList","src":"2646:34:26"}],"id":889,"name":"EventDefinition","src":"2620:61:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":895,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":890,"name":"ElementaryTypeName","src":"2715:7:26"}],"id":891,"name":"VariableDeclaration","src":"2715:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":895,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":892,"name":"ElementaryTypeName","src":"2731:6:26"}],"id":893,"name":"VariableDeclaration","src":"2731:16:26"}],"id":894,"name":"ParameterList","src":"2714:34:26"}],"id":895,"name":"EventDefinition","src":"2686:63:26"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":903,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":896,"name":"ElementaryTypeName","src":"2769:7:26"}],"id":897,"name":"VariableDeclaration","src":"2769:11:26"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":903,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":898,"name":"ElementaryTypeName","src":"2782:7:26"}],"id":899,"name":"VariableDeclaration","src":"2782:14:26"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":903,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":900,"name":"ElementaryTypeName","src":"2798:7:26"}],"id":901,"name":"VariableDeclaration","src":"2798:15:26"}],"id":902,"name":"ParameterList","src":"2768:46:26"}],"id":903,"name":"EventDefinition","src":"2755:60:26"},{"attributes":{"constant":true,"name":"_APPROVE","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":904,"name":"ElementaryTypeName","src":"2924:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":905,"name":"Literal","src":"2959:10:26"}],"id":906,"name":"VariableDeclaration","src":"2924:45:26"},{"attributes":{"constant":true,"name":"_BURN","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":907,"name":"ElementaryTypeName","src":"3028:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":908,"name":"Literal","src":"3060:10:26"}],"id":909,"name":"VariableDeclaration","src":"3028:42:26"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":910,"name":"ElementaryTypeName","src":"3118:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":911,"name":"Literal","src":"3154:10:26"}],"id":912,"name":"VariableDeclaration","src":"3118:46:26"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":913,"name":"ElementaryTypeName","src":"3224:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":914,"name":"Literal","src":"3265:10:26"}],"id":915,"name":"VariableDeclaration","src":"3224:51:26"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":1717,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":930,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":916,"name":"ElementaryTypeName","src":"3371:6:26"}],"id":917,"name":"VariableDeclaration","src":"3371:13:26"},{"attributes":{"constant":false,"name":"magnitude","scope":930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":918,"name":"ElementaryTypeName","src":"3410:7:26"}],"id":919,"name":"VariableDeclaration","src":"3410:17:26"},{"attributes":{"constant":false,"name":"rate","scope":930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":920,"name":"ElementaryTypeName","src":"3452:7:26"}],"id":921,"name":"VariableDeclaration","src":"3452:12:26"},{"attributes":{"constant":false,"name":"available","scope":930,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":922,"name":"ElementaryTypeName","src":"3504:4:26"}],"id":923,"name":"VariableDeclaration","src":"3504:14:26"},{"attributes":{"constant":false,"name":"loadable","scope":930,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":924,"name":"ElementaryTypeName","src":"3570:4:26"}],"id":925,"name":"VariableDeclaration","src":"3570:13:26"},{"attributes":{"constant":false,"name":"redeemable","scope":930,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":926,"name":"ElementaryTypeName","src":"3640:4:26"}],"id":927,"name":"VariableDeclaration","src":"3640:15:26"},{"attributes":{"constant":false,"name":"lastUpdate","scope":930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":928,"name":"ElementaryTypeName","src":"3724:7:26"}],"id":929,"name":"VariableDeclaration","src":"3724:18:26"}],"id":930,"name":"StructDefinition","src":"3348:433:26"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":1717,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":931,"name":"ElementaryTypeName","src":"3795:7:26"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":930,"type":"struct TokenWhitelist.Token"},"id":932,"name":"UserDefinedTypeName","src":"3806:5:26"}],"id":933,"name":"Mapping","src":"3787:25:26"}],"id":934,"name":"VariableDeclaration","src":"3787:47:26"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":1717,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":935,"name":"ElementaryTypeName","src":"4004:6:26"},{"attributes":{"name":"bool","type":"bool"},"id":936,"name":"ElementaryTypeName","src":"4014:4:26"}],"id":937,"name":"Mapping","src":"3996:23:26"}],"id":938,"name":"VariableDeclaration","src":"3996:50:26"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":1717,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":939,"name":"ElementaryTypeName","src":"4053:7:26"}],"id":940,"name":"ArrayTypeName","src":"4053:9:26"}],"id":941,"name":"VariableDeclaration","src":"4053:36:26"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":1717,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":942,"name":"ElementaryTypeName","src":"4182:7:26"}],"id":943,"name":"VariableDeclaration","src":"4182:34:26"},{"attributes":{"constant":false,"name":"_stablecoin","scope":1717,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":944,"name":"ElementaryTypeName","src":"4266:7:26"}],"id":945,"name":"VariableDeclaration","src":"4266:27:26"},{"attributes":{"constant":false,"name":"_oracleNode","scope":1717,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":946,"name":"ElementaryTypeName","src":"4372:7:26"}],"id":947,"name":"VariableDeclaration","src":"4372:27:26"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":997,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":948,"name":"ElementaryTypeName","src":"4770:7:26"}],"id":949,"name":"VariableDeclaration","src":"4770:13:26"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":997,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":950,"name":"ElementaryTypeName","src":"4785:7:26"}],"id":951,"name":"VariableDeclaration","src":"4785:20:26"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":997,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":952,"name":"ElementaryTypeName","src":"4807:7:26"}],"id":953,"name":"VariableDeclaration","src":"4807:24:26"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":997,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":954,"name":"ElementaryTypeName","src":"4833:7:26"}],"id":955,"name":"VariableDeclaration","src":"4833:27:26"}],"id":956,"name":"ParameterList","src":"4769:92:26"},{"attributes":{"parameters":[null]},"children":[],"id":963,"name":"ParameterList","src":"4949:0:26"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":201,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":957,"name":"Identifier","src":"4885:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":949,"type":"address","value":"_ens_"},"id":958,"name":"Identifier","src":"4899:5:26"}],"id":959,"name":"ModifierInvocation","src":"4885:20:26"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5050,"type":"type(contract Controllable)","value":"Controllable"},"id":960,"name":"Identifier","src":"4914:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":953,"type":"bytes32","value":"_controllerNode_"},"id":961,"name":"Identifier","src":"4927:16:26"}],"id":962,"name":"ModifierInvocation","src":"4914:30:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":947,"type":"bytes32","value":"_oracleNode"},"id":964,"name":"Identifier","src":"4959:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"bytes32","value":"_oracleNode_"},"id":965,"name":"Identifier","src":"4973:12:26"}],"id":966,"name":"Assignment","src":"4959:26:26"}],"id":967,"name":"ExpressionStatement","src":"4959:26:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"address","value":"_stablecoin"},"id":968,"name":"Identifier","src":"4995:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":955,"type":"address","value":"_stablecoinAddress_"},"id":969,"name":"Identifier","src":"5009:19:26"}],"id":970,"name":"Assignment","src":"4995:33:26"}],"id":971,"name":"ExpressionStatement","src":"4995:33:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":972,"name":"Identifier","src":"5083:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":906,"type":"bytes4","value":"_APPROVE"},"id":973,"name":"Identifier","src":"5102:8:26"}],"id":974,"name":"IndexAccess","src":"5083:28:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":975,"name":"Literal","src":"5114:4:26"}],"id":976,"name":"Assignment","src":"5083:35:26"}],"id":977,"name":"ExpressionStatement","src":"5083:35:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":978,"name":"Identifier","src":"5128:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"bytes4","value":"_BURN"},"id":979,"name":"Identifier","src":"5147:5:26"}],"id":980,"name":"IndexAccess","src":"5128:25:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":981,"name":"Literal","src":"5156:4:26"}],"id":982,"name":"Assignment","src":"5128:32:26"}],"id":983,"name":"ExpressionStatement","src":"5128:32:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":984,"name":"Identifier","src":"5170:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":912,"type":"bytes4","value":"_TRANSFER"},"id":985,"name":"Identifier","src":"5189:9:26"}],"id":986,"name":"IndexAccess","src":"5170:29:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":987,"name":"Literal","src":"5202:4:26"}],"id":988,"name":"Assignment","src":"5170:36:26"}],"id":989,"name":"ExpressionStatement","src":"5170:36:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":990,"name":"Identifier","src":"5216:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":915,"type":"bytes4","value":"_TRANSFER_FROM"},"id":991,"name":"Identifier","src":"5235:14:26"}],"id":992,"name":"IndexAccess","src":"5216:34:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":993,"name":"Literal","src":"5253:4:26"}],"id":994,"name":"Assignment","src":"5216:41:26"}],"id":995,"name":"ExpressionStatement","src":"5216:41:26"}],"id":996,"name":"Block","src":"4949:315:26"}],"id":997,"name":"FunctionDefinition","src":"4758:506:26"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":998,"name":"ParameterList","src":"5296:2:26"},{"children":[{"attributes":{"assignments":[1000]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":1019,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":999,"name":"ElementaryTypeName","src":"5309:7:26"}],"id":1000,"name":"VariableDeclaration","src":"5309:21:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1001,"name":"Identifier","src":"5333:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":947,"type":"bytes32","value":"_oracleNode"},"id":1002,"name":"Identifier","src":"5345:11:26"}],"id":1003,"name":"FunctionCall","src":"5333:24:26"}],"id":1004,"name":"VariableDeclarationStatement","src":"5309:48:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1005,"name":"Identifier","src":"5367:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":1006,"name":"Identifier","src":"5375:8:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1007,"name":"Identifier","src":"5384:3:26"}],"id":1008,"name":"MemberAccess","src":"5384:10:26"}],"id":1009,"name":"FunctionCall","src":"5375:20:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1010,"name":"Identifier","src":"5399:3:26"}],"id":1011,"name":"MemberAccess","src":"5399:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1000,"type":"address","value":"oracleAddress"},"id":1012,"name":"Identifier","src":"5413:13:26"}],"id":1013,"name":"BinaryOperation","src":"5399:27:26"}],"id":1014,"name":"BinaryOperation","src":"5375:51:26"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":1015,"name":"Literal","src":"5428:24:26"}],"id":1016,"name":"FunctionCall","src":"5367:86:26"}],"id":1017,"name":"ExpressionStatement","src":"5367:86:26"},{"id":1018,"name":"PlaceholderStatement","src":"5463:1:26"}],"id":1019,"name":"Block","src":"5299:172:26"}],"id":1020,"name":"ModifierDefinition","src":"5270:201:26"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1021,"name":"ElementaryTypeName","src":"6068:7:26"}],"id":1022,"name":"ArrayTypeName","src":"6068:9:26"}],"id":1023,"name":"VariableDeclaration","src":"6068:26:26"},{"attributes":{"constant":false,"name":"_symbols","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1024,"name":"ElementaryTypeName","src":"6104:7:26"}],"id":1025,"name":"ArrayTypeName","src":"6104:9:26"}],"id":1026,"name":"VariableDeclaration","src":"6104:27:26"},{"attributes":{"constant":false,"name":"_magnitude","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1027,"name":"ElementaryTypeName","src":"6141:7:26"}],"id":1028,"name":"ArrayTypeName","src":"6141:9:26"}],"id":1029,"name":"VariableDeclaration","src":"6141:29:26"},{"attributes":{"constant":false,"name":"_loadable","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1030,"name":"ElementaryTypeName","src":"6180:4:26"}],"id":1031,"name":"ArrayTypeName","src":"6180:6:26"}],"id":1032,"name":"VariableDeclaration","src":"6180:25:26"},{"attributes":{"constant":false,"name":"_redeemable","scope":1164,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1033,"name":"ElementaryTypeName","src":"6215:4:26"}],"id":1034,"name":"ArrayTypeName","src":"6215:6:26"}],"id":1035,"name":"VariableDeclaration","src":"6215:27:26"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":1164,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1036,"name":"ElementaryTypeName","src":"6252:7:26"}],"id":1037,"name":"VariableDeclaration","src":"6252:19:26"}],"id":1038,"name":"ParameterList","src":"6058:219:26"},{"attributes":{"parameters":[null]},"children":[],"id":1041,"name":"ParameterList","src":"6297:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1039,"name":"Identifier","src":"6287:9:26"}],"id":1040,"name":"ModifierInvocation","src":"6287:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1042,"name":"Identifier","src":"6368:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1043,"name":"Identifier","src":"6389:7:26"}],"id":1044,"name":"MemberAccess","src":"6389:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"bytes32[] calldata","value":"_symbols"},"id":1045,"name":"Identifier","src":"6407:8:26"}],"id":1046,"name":"MemberAccess","src":"6407:15:26"}],"id":1047,"name":"BinaryOperation","src":"6389:33:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1048,"name":"Identifier","src":"6442:7:26"}],"id":1049,"name":"MemberAccess","src":"6442:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1029,"type":"uint256[] calldata","value":"_magnitude"},"id":1050,"name":"Identifier","src":"6460:10:26"}],"id":1051,"name":"MemberAccess","src":"6460:17:26"}],"id":1052,"name":"BinaryOperation","src":"6442:35:26"}],"id":1053,"name":"BinaryOperation","src":"6389:88:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1054,"name":"Identifier","src":"6497:7:26"}],"id":1055,"name":"MemberAccess","src":"6497:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1032,"type":"bool[] calldata","value":"_loadable"},"id":1056,"name":"Identifier","src":"6515:9:26"}],"id":1057,"name":"MemberAccess","src":"6515:16:26"}],"id":1058,"name":"BinaryOperation","src":"6497:34:26"}],"id":1059,"name":"BinaryOperation","src":"6389:142:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1060,"name":"Identifier","src":"6551:7:26"}],"id":1061,"name":"MemberAccess","src":"6551:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1032,"type":"bool[] calldata","value":"_loadable"},"id":1062,"name":"Identifier","src":"6569:9:26"}],"id":1063,"name":"MemberAccess","src":"6569:16:26"}],"id":1064,"name":"BinaryOperation","src":"6551:34:26"}],"id":1065,"name":"BinaryOperation","src":"6389:196:26"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":1066,"name":"Literal","src":"6599:32:26"}],"id":1067,"name":"FunctionCall","src":"6368:273:26"}],"id":1068,"name":"ExpressionStatement","src":"6368:273:26"},{"children":[{"attributes":{"assignments":[1070]},"children":[{"attributes":{"constant":false,"name":"i","scope":1162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1069,"name":"ElementaryTypeName","src":"6715:7:26"}],"id":1070,"name":"VariableDeclaration","src":"6715:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1071,"name":"Literal","src":"6727:1:26"}],"id":1072,"name":"VariableDeclarationStatement","src":"6715:13:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1073,"name":"Identifier","src":"6730:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1074,"name":"Identifier","src":"6734:7:26"}],"id":1075,"name":"MemberAccess","src":"6734:14:26"}],"id":1076,"name":"BinaryOperation","src":"6730:18:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1077,"name":"Identifier","src":"6750:1:26"}],"id":1078,"name":"UnaryOperation","src":"6750:3:26"}],"id":1079,"name":"ExpressionStatement","src":"6750:3:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1080,"name":"Identifier","src":"6832:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1081,"name":"Identifier","src":"6841:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1082,"name":"Identifier","src":"6855:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1083,"name":"Identifier","src":"6863:1:26"}],"id":1084,"name":"IndexAccess","src":"6855:10:26"}],"id":1085,"name":"IndexAccess","src":"6841:25:26"}],"id":1086,"name":"MemberAccess","src":"6841:35:26"}],"id":1087,"name":"UnaryOperation","src":"6840:36:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":1088,"name":"Literal","src":"6878:25:26"}],"id":1089,"name":"FunctionCall","src":"6832:72:26"}],"id":1090,"name":"ExpressionStatement","src":"6832:72:26"},{"attributes":{"assignments":[1092]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":1161,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1091,"name":"ElementaryTypeName","src":"6964:6:26"}],"id":1092,"name":"VariableDeclaration","src":"6964:20:26"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":3392,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":3347,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"bytes32[] calldata","value":"_symbols"},"id":1093,"name":"Identifier","src":"6987:8:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1094,"name":"Identifier","src":"6996:1:26"}],"id":1095,"name":"IndexAccess","src":"6987:11:26"}],"id":1096,"name":"MemberAccess","src":"6987:22:26"}],"id":1097,"name":"FunctionCall","src":"6987:24:26"}],"id":1098,"name":"MemberAccess","src":"6987:33:26"}],"id":1099,"name":"FunctionCall","src":"6987:35:26"}],"id":1100,"name":"VariableDeclarationStatement","src":"6964:58:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1101,"name":"Identifier","src":"7084:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1102,"name":"Identifier","src":"7098:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1103,"name":"Identifier","src":"7106:1:26"}],"id":1104,"name":"IndexAccess","src":"7098:10:26"}],"id":1105,"name":"IndexAccess","src":"7084:25:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":930,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":1106,"name":"Identifier","src":"7112:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1092,"type":"string memory","value":"symbol"},"id":1107,"name":"Identifier","src":"7144:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1029,"type":"uint256[] calldata","value":"_magnitude"},"id":1108,"name":"Identifier","src":"7179:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1109,"name":"Identifier","src":"7190:1:26"}],"id":1110,"name":"IndexAccess","src":"7179:13:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1111,"name":"Literal","src":"7216:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1112,"name":"Literal","src":"7246:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1032,"type":"bool[] calldata","value":"_loadable"},"id":1113,"name":"Identifier","src":"7278:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1114,"name":"Identifier","src":"7288:1:26"}],"id":1115,"name":"IndexAccess","src":"7278:12:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"bool[] calldata","value":"_redeemable"},"id":1116,"name":"Identifier","src":"7320:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1117,"name":"Identifier","src":"7332:1:26"}],"id":1118,"name":"IndexAccess","src":"7320:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1037,"type":"uint256","value":"_lastUpdate"},"id":1119,"name":"Identifier","src":"7364:11:26"}],"id":1120,"name":"FunctionCall","src":"7112:278:26"}],"id":1121,"name":"Assignment","src":"7084:306:26"}],"id":1122,"name":"ExpressionStatement","src":"7084:306:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1123,"name":"Identifier","src":"7462:18:26"}],"id":1125,"name":"MemberAccess","src":"7462:23:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1126,"name":"Identifier","src":"7486:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1127,"name":"Identifier","src":"7494:1:26"}],"id":1128,"name":"IndexAccess","src":"7486:10:26"}],"id":1129,"name":"FunctionCall","src":"7462:35:26"}],"id":1130,"name":"ExpressionStatement","src":"7462:35:26"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"bool[] calldata","value":"_redeemable"},"id":1131,"name":"Identifier","src":"7587:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1132,"name":"Identifier","src":"7599:1:26"}],"id":1133,"name":"IndexAccess","src":"7587:14:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1134,"name":"Identifier","src":"7621:18:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3031,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1135,"name":"Identifier","src":"7642:18:26"}],"id":1136,"name":"MemberAccess","src":"7642:22:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1137,"name":"Literal","src":"7665:1:26"}],"id":1138,"name":"FunctionCall","src":"7642:25:26"}],"id":1139,"name":"Assignment","src":"7621:46:26"}],"id":1140,"name":"ExpressionStatement","src":"7621:46:26"}],"id":1141,"name":"Block","src":"7603:79:26"}],"id":1142,"name":"IfStatement","src":"7583:99:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":869,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":1143,"name":"Identifier","src":"7742:10:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1144,"name":"Identifier","src":"7753:3:26"}],"id":1145,"name":"MemberAccess","src":"7753:10:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1023,"type":"address[] calldata","value":"_tokens"},"id":1146,"name":"Identifier","src":"7765:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1147,"name":"Identifier","src":"7773:1:26"}],"id":1148,"name":"IndexAccess","src":"7765:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1092,"type":"string memory","value":"symbol"},"id":1149,"name":"Identifier","src":"7777:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1029,"type":"uint256[] calldata","value":"_magnitude"},"id":1150,"name":"Identifier","src":"7785:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1151,"name":"Identifier","src":"7796:1:26"}],"id":1152,"name":"IndexAccess","src":"7785:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1032,"type":"bool[] calldata","value":"_loadable"},"id":1153,"name":"Identifier","src":"7800:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1154,"name":"Identifier","src":"7810:1:26"}],"id":1155,"name":"IndexAccess","src":"7800:12:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"bool[] calldata","value":"_redeemable"},"id":1156,"name":"Identifier","src":"7814:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"i"},"id":1157,"name":"Identifier","src":"7826:1:26"}],"id":1158,"name":"IndexAccess","src":"7814:14:26"}],"id":1159,"name":"FunctionCall","src":"7742:87:26"}],"id":1160,"name":"EmitStatement","src":"7737:92:26"}],"id":1161,"name":"Block","src":"6755:1085:26"}],"id":1162,"name":"ForStatement","src":"6710:1130:26"}],"id":1163,"name":"Block","src":"6297:1549:26"}],"id":1164,"name":"FunctionDefinition","src":"6040:1806:26"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":1265,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1165,"name":"ElementaryTypeName","src":"7995:7:26"}],"id":1166,"name":"ArrayTypeName","src":"7995:9:26"}],"id":1167,"name":"VariableDeclaration","src":"7995:26:26"}],"id":1168,"name":"ParameterList","src":"7994:28:26"},{"attributes":{"parameters":[null]},"children":[],"id":1171,"name":"ParameterList","src":"8042:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1169,"name":"Identifier","src":"8032:9:26"}],"id":1170,"name":"ModifierInvocation","src":"8032:9:26"},{"children":[{"children":[{"attributes":{"assignments":[1173]},"children":[{"attributes":{"constant":false,"name":"i","scope":1263,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1172,"name":"ElementaryTypeName","src":"8160:7:26"}],"id":1173,"name":"VariableDeclaration","src":"8160:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1174,"name":"Literal","src":"8172:1:26"}],"id":1175,"name":"VariableDeclarationStatement","src":"8160:13:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"i"},"id":1176,"name":"Identifier","src":"8175:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"address[] calldata","value":"_tokens"},"id":1177,"name":"Identifier","src":"8179:7:26"}],"id":1178,"name":"MemberAccess","src":"8179:14:26"}],"id":1179,"name":"BinaryOperation","src":"8175:18:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"i"},"id":1180,"name":"Identifier","src":"8195:1:26"}],"id":1181,"name":"UnaryOperation","src":"8195:3:26"}],"id":1182,"name":"ExpressionStatement","src":"8195:3:26"},{"children":[{"attributes":{"assignments":[1184]},"children":[{"attributes":{"constant":false,"name":"token","scope":1262,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1183,"name":"ElementaryTypeName","src":"8254:7:26"}],"id":1184,"name":"VariableDeclaration","src":"8254:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"address[] calldata","value":"_tokens"},"id":1185,"name":"Identifier","src":"8270:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"i"},"id":1186,"name":"Identifier","src":"8278:1:26"}],"id":1187,"name":"IndexAccess","src":"8270:10:26"}],"id":1188,"name":"VariableDeclarationStatement","src":"8254:26:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1189,"name":"Identifier","src":"8363:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1190,"name":"Identifier","src":"8371:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1191,"name":"Identifier","src":"8385:5:26"}],"id":1192,"name":"IndexAccess","src":"8371:20:26"}],"id":1193,"name":"MemberAccess","src":"8371:30:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1194,"name":"Literal","src":"8403:24:26"}],"id":1195,"name":"FunctionCall","src":"8363:65:26"}],"id":1196,"name":"ExpressionStatement","src":"8363:65:26"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1197,"name":"Identifier","src":"8518:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1198,"name":"Identifier","src":"8532:5:26"}],"id":1199,"name":"IndexAccess","src":"8518:20:26"}],"id":1200,"name":"MemberAccess","src":"8518:31:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1201,"name":"Identifier","src":"8569:18:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3056,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1202,"name":"Identifier","src":"8590:18:26"}],"id":1203,"name":"MemberAccess","src":"8590:22:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1204,"name":"Literal","src":"8613:1:26"}],"id":1205,"name":"FunctionCall","src":"8590:25:26"}],"id":1206,"name":"Assignment","src":"8569:46:26"}],"id":1207,"name":"ExpressionStatement","src":"8569:46:26"}],"id":1208,"name":"Block","src":"8551:79:26"}],"id":1209,"name":"IfStatement","src":"8514:116:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1210,"name":"Identifier","src":"8690:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1211,"name":"Identifier","src":"8704:5:26"}],"id":1212,"name":"IndexAccess","src":"8690:20:26"}],"id":1213,"name":"UnaryOperation","src":"8683:27:26"}],"id":1214,"name":"ExpressionStatement","src":"8683:27:26"},{"children":[{"attributes":{"assignments":[1216]},"children":[{"attributes":{"constant":false,"name":"j","scope":1250,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1215,"name":"ElementaryTypeName","src":"8792:7:26"}],"id":1216,"name":"VariableDeclaration","src":"8792:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1217,"name":"Literal","src":"8804:1:26"}],"id":1218,"name":"VariableDeclarationStatement","src":"8792:13:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"j"},"id":1219,"name":"Identifier","src":"8807:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3056,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1220,"name":"Identifier","src":"8811:18:26"}],"id":1221,"name":"MemberAccess","src":"8811:25:26"}],"id":1222,"name":"MemberAccess","src":"8811:29:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1223,"name":"Literal","src":"8841:1:26"}],"id":1224,"name":"FunctionCall","src":"8811:32:26"}],"id":1225,"name":"BinaryOperation","src":"8807:36:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"j"},"id":1226,"name":"Identifier","src":"8845:1:26"}],"id":1227,"name":"UnaryOperation","src":"8845:3:26"}],"id":1228,"name":"ExpressionStatement","src":"8845:3:26"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1229,"name":"Identifier","src":"8872:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"j"},"id":1230,"name":"Identifier","src":"8891:1:26"}],"id":1231,"name":"IndexAccess","src":"8872:21:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1232,"name":"Identifier","src":"8897:5:26"}],"id":1233,"name":"BinaryOperation","src":"8872:30:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1234,"name":"Identifier","src":"8926:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"j"},"id":1235,"name":"Identifier","src":"8945:1:26"}],"id":1236,"name":"IndexAccess","src":"8926:21:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1237,"name":"Identifier","src":"8950:18:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3056,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1238,"name":"Identifier","src":"8969:18:26"}],"id":1239,"name":"MemberAccess","src":"8969:25:26"}],"id":1240,"name":"MemberAccess","src":"8969:29:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1241,"name":"Literal","src":"8999:1:26"}],"id":1242,"name":"FunctionCall","src":"8969:32:26"}],"id":1243,"name":"IndexAccess","src":"8950:52:26"}],"id":1244,"name":"Assignment","src":"8926:76:26"}],"id":1245,"name":"ExpressionStatement","src":"8926:76:26"},{"id":1246,"name":"Break","src":"9024:5:26"}],"id":1247,"name":"Block","src":"8904:144:26"}],"id":1248,"name":"IfStatement","src":"8868:180:26"}],"id":1249,"name":"Block","src":"8850:212:26"}],"id":1250,"name":"ForStatement","src":"8787:275:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1251,"name":"Identifier","src":"9075:18:26"}],"id":1253,"name":"MemberAccess","src":"9075:25:26"}],"id":1254,"name":"UnaryOperation","src":"9075:27:26"}],"id":1255,"name":"ExpressionStatement","src":"9075:27:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":875,"type":"function (address,address)","value":"RemovedToken"},"id":1256,"name":"Identifier","src":"9162:12:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1257,"name":"Identifier","src":"9175:3:26"}],"id":1258,"name":"MemberAccess","src":"9175:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1184,"type":"address","value":"token"},"id":1259,"name":"Identifier","src":"9187:5:26"}],"id":1260,"name":"FunctionCall","src":"9162:31:26"}],"id":1261,"name":"EmitStatement","src":"9157:36:26"}],"id":1262,"name":"Block","src":"8200:1004:26"}],"id":1263,"name":"ForStatement","src":"8155:1049:26"}],"id":1264,"name":"Block","src":"8042:1168:26"}],"id":1265,"name":"FunctionDefinition","src":"7973:1237:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1378,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1266,"name":"ElementaryTypeName","src":"9404:7:26"}],"id":1267,"name":"VariableDeclaration","src":"9404:14:26"},{"attributes":{"constant":false,"name":"_data","scope":1378,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1268,"name":"ElementaryTypeName","src":"9420:5:26"}],"id":1269,"name":"VariableDeclaration","src":"9420:20:26"}],"id":1270,"name":"ParameterList","src":"9403:38:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1378,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1271,"name":"ElementaryTypeName","src":"9465:7:26"}],"id":1272,"name":"VariableDeclaration","src":"9465:7:26"},{"attributes":{"constant":false,"name":"","scope":1378,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1273,"name":"ElementaryTypeName","src":"9474:7:26"}],"id":1274,"name":"VariableDeclaration","src":"9474:7:26"}],"id":1275,"name":"ParameterList","src":"9464:18:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1276,"name":"Identifier","src":"9669:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1277,"name":"Identifier","src":"9677:5:26"}],"id":1278,"name":"MemberAccess","src":"9677:12:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1279,"name":"Literal","src":"9693:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1280,"name":"Literal","src":"9697:2:26"}],"id":1281,"name":"BinaryOperation","src":"9693:6:26"}],"id":1282,"name":"BinaryOperation","src":"9677:22:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":1283,"name":"Literal","src":"9701:34:26"}],"id":1284,"name":"FunctionCall","src":"9669:67:26"}],"id":1285,"name":"ExpressionStatement","src":"9669:67:26"},{"attributes":{"assignments":[1287]},"children":[{"attributes":{"constant":false,"name":"signature","scope":1377,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1286,"name":"ElementaryTypeName","src":"9782:6:26"}],"id":1287,"name":"VariableDeclaration","src":"9782:16:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":4919,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1288,"name":"Identifier","src":"9801:5:26"}],"id":1289,"name":"MemberAccess","src":"9801:20:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1290,"name":"Literal","src":"9822:1:26"}],"id":1291,"name":"FunctionCall","src":"9801:23:26"}],"id":1292,"name":"VariableDeclarationStatement","src":"9782:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1293,"name":"Identifier","src":"9877:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":1679,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":1294,"name":"Identifier","src":"9885:22:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1267,"type":"address","value":"_token"},"id":1295,"name":"Identifier","src":"9908:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"bytes4","value":"signature"},"id":1296,"name":"Identifier","src":"9916:9:26"}],"id":1297,"name":"FunctionCall","src":"9885:41:26"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":1298,"name":"Literal","src":"9928:20:26"}],"id":1299,"name":"FunctionCall","src":"9877:72:26"}],"id":1300,"name":"ExpressionStatement","src":"9877:72:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"bytes4","value":"signature"},"id":1301,"name":"Identifier","src":"10048:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"bytes4","value":"_BURN"},"id":1302,"name":"Identifier","src":"10061:5:26"}],"id":1303,"name":"BinaryOperation","src":"10048:18:26"},{"children":[{"attributes":{"functionReturnParameters":1275},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1267,"type":"address","value":"_token"},"id":1304,"name":"Identifier","src":"10133:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4953,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1305,"name":"Identifier","src":"10141:5:26"}],"id":1306,"name":"MemberAccess","src":"10141:21:26"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1307,"name":"Literal","src":"10163:1:26"}],"id":1308,"name":"FunctionCall","src":"10141:24:26"}],"id":1309,"name":"TupleExpression","src":"10132:34:26"}],"id":1310,"name":"Return","src":"10125:41:26"}],"id":1311,"name":"Block","src":"10068:109:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"bytes4","value":"signature"},"id":1312,"name":"Identifier","src":"10187:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":915,"type":"bytes4","value":"_TRANSFER_FROM"},"id":1313,"name":"Identifier","src":"10200:14:26"}],"id":1314,"name":"BinaryOperation","src":"10187:27:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1315,"name":"Identifier","src":"10301:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1316,"name":"Identifier","src":"10309:5:26"}],"id":1317,"name":"MemberAccess","src":"10309:12:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1318,"name":"Literal","src":"10325:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1319,"name":"Literal","src":"10329:2:26"}],"id":1320,"name":"BinaryOperation","src":"10325:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1321,"name":"Literal","src":"10334:2:26"}],"id":1322,"name":"BinaryOperation","src":"10325:11:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1323,"name":"Literal","src":"10339:2:26"}],"id":1324,"name":"BinaryOperation","src":"10325:16:26"}],"id":1325,"name":"BinaryOperation","src":"10309:32:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":1326,"name":"Literal","src":"10343:34:26"}],"id":1327,"name":"FunctionCall","src":"10301:77:26"}],"id":1328,"name":"ExpressionStatement","src":"10301:77:26"},{"attributes":{"functionReturnParameters":1275},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":4885,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1329,"name":"Identifier","src":"10400:5:26"}],"id":1330,"name":"MemberAccess","src":"10400:21:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1331,"name":"Literal","src":"10422:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1332,"name":"Literal","src":"10426:2:26"}],"id":1333,"name":"BinaryOperation","src":"10422:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":1334,"name":"Literal","src":"10431:2:26"}],"id":1335,"name":"BinaryOperation","src":"10422:11:26"}],"id":1336,"name":"FunctionCall","src":"10400:34:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4953,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1337,"name":"Identifier","src":"10436:5:26"}],"id":1338,"name":"MemberAccess","src":"10436:21:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1339,"name":"Literal","src":"10458:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1340,"name":"Literal","src":"10462:2:26"}],"id":1341,"name":"BinaryOperation","src":"10458:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1342,"name":"Literal","src":"10467:2:26"}],"id":1343,"name":"BinaryOperation","src":"10458:11:26"}],"id":1344,"name":"FunctionCall","src":"10436:34:26"}],"id":1345,"name":"TupleExpression","src":"10399:72:26"}],"id":1346,"name":"Return","src":"10392:79:26"}],"id":1347,"name":"Block","src":"10216:266:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1348,"name":"Identifier","src":"10590:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1349,"name":"Identifier","src":"10598:5:26"}],"id":1350,"name":"MemberAccess","src":"10598:12:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1351,"name":"Literal","src":"10614:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1352,"name":"Literal","src":"10618:2:26"}],"id":1353,"name":"BinaryOperation","src":"10614:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1354,"name":"Literal","src":"10623:2:26"}],"id":1355,"name":"BinaryOperation","src":"10614:11:26"}],"id":1356,"name":"BinaryOperation","src":"10598:27:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":1357,"name":"Literal","src":"10627:39:26"}],"id":1358,"name":"FunctionCall","src":"10590:77:26"}],"id":1359,"name":"ExpressionStatement","src":"10590:77:26"},{"attributes":{"functionReturnParameters":1275},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":4885,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1360,"name":"Identifier","src":"10689:5:26"}],"id":1361,"name":"MemberAccess","src":"10689:21:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1362,"name":"Literal","src":"10711:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":1363,"name":"Literal","src":"10715:2:26"}],"id":1364,"name":"BinaryOperation","src":"10711:6:26"}],"id":1365,"name":"FunctionCall","src":"10689:29:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":4953,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes calldata","value":"_data"},"id":1366,"name":"Identifier","src":"10720:5:26"}],"id":1367,"name":"MemberAccess","src":"10720:21:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1368,"name":"Literal","src":"10742:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1369,"name":"Literal","src":"10746:2:26"}],"id":1370,"name":"BinaryOperation","src":"10742:6:26"}],"id":1371,"name":"FunctionCall","src":"10720:29:26"}],"id":1372,"name":"TupleExpression","src":"10688:62:26"}],"id":1373,"name":"Return","src":"10681:69:26"}],"id":1374,"name":"Block","src":"10488:273:26"}],"id":1375,"name":"IfStatement","src":"10183:578:26"}],"id":1376,"name":"IfStatement","src":"10044:717:26"}],"id":1377,"name":"Block","src":"9483:1284:26"}],"id":1378,"name":"FunctionDefinition","src":"9368:1399:26"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1410,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1379,"name":"ElementaryTypeName","src":"10866:7:26"}],"id":1380,"name":"VariableDeclaration","src":"10866:14:26"},{"attributes":{"constant":false,"name":"_loadable","scope":1410,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1381,"name":"ElementaryTypeName","src":"10882:4:26"}],"id":1382,"name":"VariableDeclaration","src":"10882:14:26"}],"id":1383,"name":"ParameterList","src":"10865:32:26"},{"attributes":{"parameters":[null]},"children":[],"id":1386,"name":"ParameterList","src":"10917:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1384,"name":"Identifier","src":"10907:9:26"}],"id":1385,"name":"ModifierInvocation","src":"10907:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1387,"name":"Identifier","src":"10969:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1388,"name":"Identifier","src":"10977:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"address","value":"_token"},"id":1389,"name":"Identifier","src":"10991:6:26"}],"id":1390,"name":"IndexAccess","src":"10977:21:26"}],"id":1391,"name":"MemberAccess","src":"10977:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1392,"name":"Literal","src":"11010:24:26"}],"id":1393,"name":"FunctionCall","src":"10969:66:26"}],"id":1394,"name":"ExpressionStatement","src":"10969:66:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":925,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1395,"name":"Identifier","src":"11108:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"address","value":"_token"},"id":1396,"name":"Identifier","src":"11122:6:26"}],"id":1397,"name":"IndexAccess","src":"11108:21:26"}],"id":1398,"name":"MemberAccess","src":"11108:30:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1382,"type":"bool","value":"_loadable"},"id":1399,"name":"Identifier","src":"11141:9:26"}],"id":1400,"name":"Assignment","src":"11108:42:26"}],"id":1401,"name":"ExpressionStatement","src":"11108:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":847,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":1402,"name":"Identifier","src":"11166:20:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1403,"name":"Identifier","src":"11187:3:26"}],"id":1404,"name":"MemberAccess","src":"11187:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"address","value":"_token"},"id":1405,"name":"Identifier","src":"11199:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1382,"type":"bool","value":"_loadable"},"id":1406,"name":"Identifier","src":"11207:9:26"}],"id":1407,"name":"FunctionCall","src":"11166:51:26"}],"id":1408,"name":"EmitStatement","src":"11161:56:26"}],"id":1409,"name":"Block","src":"10917:307:26"}],"id":1410,"name":"FunctionDefinition","src":"10840:384:26"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1442,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1411,"name":"ElementaryTypeName","src":"11327:7:26"}],"id":1412,"name":"VariableDeclaration","src":"11327:14:26"},{"attributes":{"constant":false,"name":"_redeemable","scope":1442,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1413,"name":"ElementaryTypeName","src":"11343:4:26"}],"id":1414,"name":"VariableDeclaration","src":"11343:16:26"}],"id":1415,"name":"ParameterList","src":"11326:34:26"},{"attributes":{"parameters":[null]},"children":[],"id":1418,"name":"ParameterList","src":"11380:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1416,"name":"Identifier","src":"11370:9:26"}],"id":1417,"name":"ModifierInvocation","src":"11370:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1419,"name":"Identifier","src":"11432:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1420,"name":"Identifier","src":"11440:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"address","value":"_token"},"id":1421,"name":"Identifier","src":"11454:6:26"}],"id":1422,"name":"IndexAccess","src":"11440:21:26"}],"id":1423,"name":"MemberAccess","src":"11440:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1424,"name":"Literal","src":"11473:24:26"}],"id":1425,"name":"FunctionCall","src":"11432:66:26"}],"id":1426,"name":"ExpressionStatement","src":"11432:66:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1427,"name":"Identifier","src":"11573:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"address","value":"_token"},"id":1428,"name":"Identifier","src":"11587:6:26"}],"id":1429,"name":"IndexAccess","src":"11573:21:26"}],"id":1430,"name":"MemberAccess","src":"11573:32:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1414,"type":"bool","value":"_redeemable"},"id":1431,"name":"Identifier","src":"11608:11:26"}],"id":1432,"name":"Assignment","src":"11573:46:26"}],"id":1433,"name":"ExpressionStatement","src":"11573:46:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":855,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":1434,"name":"Identifier","src":"11635:22:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1435,"name":"Identifier","src":"11658:3:26"}],"id":1436,"name":"MemberAccess","src":"11658:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1412,"type":"address","value":"_token"},"id":1437,"name":"Identifier","src":"11670:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1414,"type":"bool","value":"_redeemable"},"id":1438,"name":"Identifier","src":"11678:11:26"}],"id":1439,"name":"FunctionCall","src":"11635:55:26"}],"id":1440,"name":"EmitStatement","src":"11630:60:26"}],"id":1441,"name":"Block","src":"11380:317:26"}],"id":1442,"name":"FunctionDefinition","src":"11299:398:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1483,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1443,"name":"ElementaryTypeName","src":"11999:7:26"}],"id":1444,"name":"VariableDeclaration","src":"11999:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":1483,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1445,"name":"ElementaryTypeName","src":"12015:7:26"}],"id":1446,"name":"VariableDeclaration","src":"12015:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":1483,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1447,"name":"ElementaryTypeName","src":"12030:7:26"}],"id":1448,"name":"VariableDeclaration","src":"12030:19:26"}],"id":1449,"name":"ParameterList","src":"11998:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":1452,"name":"ParameterList","src":"12078:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1020,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":1450,"name":"Identifier","src":"12060:17:26"}],"id":1451,"name":"ModifierInvocation","src":"12060:17:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1453,"name":"Identifier","src":"12130:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1454,"name":"Identifier","src":"12138:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1444,"type":"address","value":"_token"},"id":1455,"name":"Identifier","src":"12152:6:26"}],"id":1456,"name":"IndexAccess","src":"12138:21:26"}],"id":1457,"name":"MemberAccess","src":"12138:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":1458,"name":"Literal","src":"12171:24:26"}],"id":1459,"name":"FunctionCall","src":"12130:66:26"}],"id":1460,"name":"ExpressionStatement","src":"12130:66:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":921,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1461,"name":"Identifier","src":"12242:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1444,"type":"address","value":"_token"},"id":1462,"name":"Identifier","src":"12256:6:26"}],"id":1463,"name":"IndexAccess","src":"12242:21:26"}],"id":1464,"name":"MemberAccess","src":"12242:26:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1446,"type":"uint256","value":"_rate"},"id":1465,"name":"Identifier","src":"12271:5:26"}],"id":1466,"name":"Assignment","src":"12242:34:26"}],"id":1467,"name":"ExpressionStatement","src":"12242:34:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":929,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1468,"name":"Identifier","src":"12339:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1444,"type":"address","value":"_token"},"id":1469,"name":"Identifier","src":"12353:6:26"}],"id":1470,"name":"IndexAccess","src":"12339:21:26"}],"id":1471,"name":"MemberAccess","src":"12339:32:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1448,"type":"uint256","value":"_updateDate"},"id":1472,"name":"Identifier","src":"12374:11:26"}],"id":1473,"name":"Assignment","src":"12339:46:26"}],"id":1474,"name":"ExpressionStatement","src":"12339:46:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":839,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":1475,"name":"Identifier","src":"12439:16:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"msg","value":"msg"},"id":1476,"name":"Identifier","src":"12456:3:26"}],"id":1477,"name":"MemberAccess","src":"12456:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1444,"type":"address","value":"_token"},"id":1478,"name":"Identifier","src":"12468:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1446,"type":"uint256","value":"_rate"},"id":1479,"name":"Identifier","src":"12476:5:26"}],"id":1480,"name":"FunctionCall","src":"12439:43:26"}],"id":1481,"name":"EmitStatement","src":"12434:48:26"}],"id":1482,"name":"Block","src":"12078:411:26"}],"id":1483,"name":"FunctionDefinition","src":"11974:515:26"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":1717,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1507,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1484,"name":"ElementaryTypeName","src":"12593:15:26"}],"id":1485,"name":"VariableDeclaration","src":"12593:19:26"},{"attributes":{"constant":false,"name":"_asset","scope":1507,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1486,"name":"ElementaryTypeName","src":"12614:7:26"}],"id":1487,"name":"VariableDeclaration","src":"12614:14:26"},{"attributes":{"constant":false,"name":"_amount","scope":1507,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1488,"name":"ElementaryTypeName","src":"12630:7:26"}],"id":1489,"name":"VariableDeclaration","src":"12630:15:26"}],"id":1490,"name":"ParameterList","src":"12592:54:26"},{"attributes":{"parameters":[null]},"children":[],"id":1493,"name":"ParameterList","src":"12666:0:26"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5007,"type":"modifier ()","value":"onlyAdmin"},"id":1491,"name":"Identifier","src":"12656:9:26"}],"id":1492,"name":"ModifierInvocation","src":"12656:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5089,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":1494,"name":"Identifier","src":"12676:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1485,"type":"address payable","value":"_to"},"id":1495,"name":"Identifier","src":"12690:3:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1487,"type":"address","value":"_asset"},"id":1496,"name":"Identifier","src":"12695:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1489,"type":"uint256","value":"_amount"},"id":1497,"name":"Identifier","src":"12703:7:26"}],"id":1498,"name":"FunctionCall","src":"12676:35:26"}],"id":1499,"name":"ExpressionStatement","src":"12676:35:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":903,"type":"function (address,address,uint256)","value":"Claimed"},"id":1500,"name":"Identifier","src":"12726:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1485,"type":"address payable","value":"_to"},"id":1501,"name":"Identifier","src":"12734:3:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1487,"type":"address","value":"_asset"},"id":1502,"name":"Identifier","src":"12739:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1489,"type":"uint256","value":"_amount"},"id":1503,"name":"Identifier","src":"12747:7:26"}],"id":1504,"name":"FunctionCall","src":"12726:29:26"}],"id":1505,"name":"EmitStatement","src":"12721:34:26"}],"id":1506,"name":"Block","src":"12666:96:26"}],"id":1507,"name":"FunctionDefinition","src":"12578:184:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":1549,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1508,"name":"ElementaryTypeName","src":"13336:7:26"}],"id":1509,"name":"VariableDeclaration","src":"13336:10:26"}],"id":1510,"name":"ParameterList","src":"13335:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1511,"name":"ElementaryTypeName","src":"13371:6:26"}],"id":1512,"name":"VariableDeclaration","src":"13371:13:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1513,"name":"ElementaryTypeName","src":"13386:7:26"}],"id":1514,"name":"VariableDeclaration","src":"13386:7:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1515,"name":"ElementaryTypeName","src":"13395:7:26"}],"id":1516,"name":"VariableDeclaration","src":"13395:7:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1517,"name":"ElementaryTypeName","src":"13404:4:26"}],"id":1518,"name":"VariableDeclaration","src":"13404:4:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1519,"name":"ElementaryTypeName","src":"13410:4:26"}],"id":1520,"name":"VariableDeclaration","src":"13410:4:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1521,"name":"ElementaryTypeName","src":"13416:4:26"}],"id":1522,"name":"VariableDeclaration","src":"13416:4:26"},{"attributes":{"constant":false,"name":"","scope":1549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1523,"name":"ElementaryTypeName","src":"13422:7:26"}],"id":1524,"name":"VariableDeclaration","src":"13422:7:26"}],"id":1525,"name":"ParameterList","src":"13370:60:26"},{"children":[{"attributes":{"assignments":[1527]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":1548,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":930,"type":"struct TokenWhitelist.Token"},"id":1526,"name":"UserDefinedTypeName","src":"13441:5:26"}],"id":1527,"name":"VariableDeclaration","src":"13441:23:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1528,"name":"Identifier","src":"13467:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1509,"type":"address","value":"_a"},"id":1529,"name":"Identifier","src":"13481:2:26"}],"id":1530,"name":"IndexAccess","src":"13467:17:26"}],"id":1531,"name":"VariableDeclarationStatement","src":"13441:43:26"},{"attributes":{"functionReturnParameters":1525},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":917,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1532,"name":"Identifier","src":"13502:9:26"}],"id":1533,"name":"MemberAccess","src":"13502:16:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1534,"name":"Identifier","src":"13520:9:26"}],"id":1535,"name":"MemberAccess","src":"13520:19:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":921,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1536,"name":"Identifier","src":"13541:9:26"}],"id":1537,"name":"MemberAccess","src":"13541:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1538,"name":"Identifier","src":"13557:9:26"}],"id":1539,"name":"MemberAccess","src":"13557:19:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":925,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1540,"name":"Identifier","src":"13578:9:26"}],"id":1541,"name":"MemberAccess","src":"13578:18:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1542,"name":"Identifier","src":"13598:9:26"}],"id":1543,"name":"MemberAccess","src":"13598:20:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":929,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1527,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":1544,"name":"Identifier","src":"13620:9:26"}],"id":1545,"name":"MemberAccess","src":"13620:20:26"}],"id":1546,"name":"TupleExpression","src":"13501:140:26"}],"id":1547,"name":"Return","src":"13494:147:26"}],"id":1548,"name":"Block","src":"13431:217:26"}],"id":1549,"name":"FunctionDefinition","src":"13314:334:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1550,"name":"ParameterList","src":"14176:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1551,"name":"ElementaryTypeName","src":"14202:6:26"}],"id":1552,"name":"VariableDeclaration","src":"14202:13:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1553,"name":"ElementaryTypeName","src":"14217:7:26"}],"id":1554,"name":"VariableDeclaration","src":"14217:7:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1555,"name":"ElementaryTypeName","src":"14226:7:26"}],"id":1556,"name":"VariableDeclaration","src":"14226:7:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1557,"name":"ElementaryTypeName","src":"14235:4:26"}],"id":1558,"name":"VariableDeclaration","src":"14235:4:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1559,"name":"ElementaryTypeName","src":"14241:4:26"}],"id":1560,"name":"VariableDeclaration","src":"14241:4:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1561,"name":"ElementaryTypeName","src":"14247:4:26"}],"id":1562,"name":"VariableDeclaration","src":"14247:4:26"},{"attributes":{"constant":false,"name":"","scope":1589,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1563,"name":"ElementaryTypeName","src":"14253:7:26"}],"id":1564,"name":"VariableDeclaration","src":"14253:7:26"}],"id":1565,"name":"ParameterList","src":"14201:60:26"},{"children":[{"attributes":{"assignments":[1567]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":1588,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":930,"type":"struct TokenWhitelist.Token"},"id":1566,"name":"UserDefinedTypeName","src":"14272:5:26"}],"id":1567,"name":"VariableDeclaration","src":"14272:28:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1568,"name":"Identifier","src":"14303:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"address","value":"_stablecoin"},"id":1569,"name":"Identifier","src":"14317:11:26"}],"id":1570,"name":"IndexAccess","src":"14303:26:26"}],"id":1571,"name":"VariableDeclarationStatement","src":"14272:57:26"},{"attributes":{"functionReturnParameters":1565},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":917,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1572,"name":"Identifier","src":"14360:14:26"}],"id":1573,"name":"MemberAccess","src":"14360:21:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":919,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1574,"name":"Identifier","src":"14395:14:26"}],"id":1575,"name":"MemberAccess","src":"14395:24:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":921,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1576,"name":"Identifier","src":"14433:14:26"}],"id":1577,"name":"MemberAccess","src":"14433:19:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1578,"name":"Identifier","src":"14466:14:26"}],"id":1579,"name":"MemberAccess","src":"14466:24:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":925,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1580,"name":"Identifier","src":"14504:14:26"}],"id":1581,"name":"MemberAccess","src":"14504:23:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1582,"name":"Identifier","src":"14541:14:26"}],"id":1583,"name":"MemberAccess","src":"14541:25:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":929,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1567,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":1584,"name":"Identifier","src":"14580:14:26"}],"id":1585,"name":"MemberAccess","src":"14580:25:26"}],"id":1586,"name":"TupleExpression","src":"14346:269:26"}],"id":1587,"name":"Return","src":"14339:276:26"}],"id":1588,"name":"Block","src":"14262:360:26"}],"id":1589,"name":"FunctionDefinition","src":"14150:472:26"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1590,"name":"ParameterList","src":"14777:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1598,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1591,"name":"ElementaryTypeName","src":"14803:7:26"}],"id":1592,"name":"ArrayTypeName","src":"14803:9:26"}],"id":1593,"name":"VariableDeclaration","src":"14803:16:26"}],"id":1594,"name":"ParameterList","src":"14802:18:26"},{"children":[{"attributes":{"functionReturnParameters":1594},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1595,"name":"Identifier","src":"14838:18:26"}],"id":1596,"name":"Return","src":"14831:25:26"}],"id":1597,"name":"Block","src":"14821:42:26"}],"id":1598,"name":"FunctionDefinition","src":"14751:112:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1599,"name":"ParameterList","src":"15015:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1656,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1600,"name":"ElementaryTypeName","src":"15041:7:26"}],"id":1601,"name":"ArrayTypeName","src":"15041:9:26"}],"id":1602,"name":"VariableDeclaration","src":"15041:16:26"}],"id":1603,"name":"ParameterList","src":"15040:18:26"},{"children":[{"attributes":{"assignments":[1607]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":1655,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":1605,"name":"ElementaryTypeName","src":"15069:7:26"}],"id":1606,"name":"ArrayTypeName","src":"15069:9:26"}],"id":1607,"name":"VariableDeclaration","src":"15069:36:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1608,"name":"ElementaryTypeName","src":"15112:7:26"}],"id":1609,"name":"ArrayTypeName","src":"15112:9:26"}],"id":1610,"name":"NewExpression","src":"15108:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1611,"name":"Identifier","src":"15122:18:26"}],"id":1612,"name":"FunctionCall","src":"15108:33:26"}],"id":1613,"name":"VariableDeclarationStatement","src":"15069:72:26"},{"attributes":{"assignments":[1615]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":1655,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1614,"name":"ElementaryTypeName","src":"15151:7:26"}],"id":1615,"name":"VariableDeclaration","src":"15151:23:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1616,"name":"Literal","src":"15177:1:26"}],"id":1617,"name":"VariableDeclarationStatement","src":"15151:27:26"},{"children":[{"attributes":{"assignments":[1619]},"children":[{"attributes":{"constant":false,"name":"i","scope":1652,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1618,"name":"ElementaryTypeName","src":"15193:7:26"}],"id":1619,"name":"VariableDeclaration","src":"15193:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1620,"name":"Literal","src":"15205:1:26"}],"id":1621,"name":"VariableDeclarationStatement","src":"15193:13:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1619,"type":"uint256","value":"i"},"id":1622,"name":"Identifier","src":"15208:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1623,"name":"Identifier","src":"15212:18:26"}],"id":1624,"name":"MemberAccess","src":"15212:25:26"}],"id":1625,"name":"BinaryOperation","src":"15208:29:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1619,"type":"uint256","value":"i"},"id":1626,"name":"Identifier","src":"15239:1:26"}],"id":1627,"name":"UnaryOperation","src":"15239:3:26"}],"id":1628,"name":"ExpressionStatement","src":"15239:3:26"},{"children":[{"attributes":{"assignments":[1630]},"children":[{"attributes":{"constant":false,"name":"token","scope":1651,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1629,"name":"ElementaryTypeName","src":"15258:7:26"}],"id":1630,"name":"VariableDeclaration","src":"15258:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":941,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":1631,"name":"Identifier","src":"15274:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1619,"type":"uint256","value":"i"},"id":1632,"name":"Identifier","src":"15293:1:26"}],"id":1633,"name":"IndexAccess","src":"15274:21:26"}],"id":1634,"name":"VariableDeclarationStatement","src":"15258:37:26"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":927,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1635,"name":"Identifier","src":"15313:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1630,"type":"address","value":"token"},"id":1636,"name":"Identifier","src":"15327:5:26"}],"id":1637,"name":"IndexAccess","src":"15313:20:26"}],"id":1638,"name":"MemberAccess","src":"15313:31:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1607,"type":"address[] memory","value":"redeemableAddresses"},"id":1639,"name":"Identifier","src":"15364:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1615,"type":"uint256","value":"redeemableIndex"},"id":1640,"name":"Identifier","src":"15384:15:26"}],"id":1641,"name":"IndexAccess","src":"15364:36:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1630,"type":"address","value":"token"},"id":1642,"name":"Identifier","src":"15403:5:26"}],"id":1643,"name":"Assignment","src":"15364:44:26"}],"id":1644,"name":"ExpressionStatement","src":"15364:44:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1615,"type":"uint256","value":"redeemableIndex"},"id":1645,"name":"Identifier","src":"15426:15:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1646,"name":"Literal","src":"15445:1:26"}],"id":1647,"name":"Assignment","src":"15426:20:26"}],"id":1648,"name":"ExpressionStatement","src":"15426:20:26"}],"id":1649,"name":"Block","src":"15346:115:26"}],"id":1650,"name":"IfStatement","src":"15309:152:26"}],"id":1651,"name":"Block","src":"15244:227:26"}],"id":1652,"name":"ForStatement","src":"15188:283:26"},{"attributes":{"functionReturnParameters":1603},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1607,"type":"address[] memory","value":"redeemableAddresses"},"id":1653,"name":"Identifier","src":"15487:19:26"}],"id":1654,"name":"Return","src":"15480:26:26"}],"id":1655,"name":"Block","src":"15059:454:26"}],"id":1656,"name":"FunctionDefinition","src":"14990:523:26"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1679,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1657,"name":"ElementaryTypeName","src":"15727:7:26"}],"id":1658,"name":"VariableDeclaration","src":"15727:14:26"},{"attributes":{"constant":false,"name":"_methodId","scope":1679,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1659,"name":"ElementaryTypeName","src":"15743:6:26"}],"id":1660,"name":"VariableDeclaration","src":"15743:16:26"}],"id":1661,"name":"ParameterList","src":"15726:34:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1679,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1662,"name":"ElementaryTypeName","src":"15782:4:26"}],"id":1663,"name":"VariableDeclaration","src":"15782:4:26"}],"id":1664,"name":"ParameterList","src":"15781:6:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[7418,7419],"referencedDeclaration":7419,"type":"function (bool,string memory) pure","value":"require"},"id":1665,"name":"Identifier","src":"15798:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":923,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":934,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":1666,"name":"Identifier","src":"15806:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1658,"type":"address","value":"_token"},"id":1667,"name":"Identifier","src":"15820:6:26"}],"id":1668,"name":"IndexAccess","src":"15806:21:26"}],"id":1669,"name":"MemberAccess","src":"15806:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":1670,"name":"Literal","src":"15839:20:26"}],"id":1671,"name":"FunctionCall","src":"15798:62:26"}],"id":1672,"name":"ExpressionStatement","src":"15798:62:26"},{"attributes":{"functionReturnParameters":1664},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1673,"name":"Identifier","src":"15878:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1660,"type":"bytes4","value":"_methodId"},"id":1674,"name":"Identifier","src":"15897:9:26"}],"id":1675,"name":"IndexAccess","src":"15878:29:26"}],"id":1676,"name":"TupleExpression","src":"15877:31:26"}],"id":1677,"name":"Return","src":"15870:38:26"}],"id":1678,"name":"Block","src":"15788:127:26"}],"id":1679,"name":"FunctionDefinition","src":"15695:220:26"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":1692,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1680,"name":"ElementaryTypeName","src":"16104:6:26"}],"id":1681,"name":"VariableDeclaration","src":"16104:16:26"}],"id":1682,"name":"ParameterList","src":"16103:18:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1692,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1683,"name":"ElementaryTypeName","src":"16145:4:26"}],"id":1684,"name":"VariableDeclaration","src":"16145:4:26"}],"id":1685,"name":"ParameterList","src":"16144:6:26"},{"children":[{"attributes":{"functionReturnParameters":1685},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":938,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":1686,"name":"Identifier","src":"16169:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1681,"type":"bytes4","value":"_methodId"},"id":1687,"name":"Identifier","src":"16188:9:26"}],"id":1688,"name":"IndexAccess","src":"16169:29:26"}],"id":1689,"name":"TupleExpression","src":"16168:31:26"}],"id":1690,"name":"Return","src":"16161:38:26"}],"id":1691,"name":"Block","src":"16151:55:26"}],"id":1692,"name":"FunctionDefinition","src":"16070:136:26"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1693,"name":"ParameterList","src":"16342:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1694,"name":"ElementaryTypeName","src":"16368:7:26"}],"id":1695,"name":"VariableDeclaration","src":"16368:7:26"}],"id":1696,"name":"ParameterList","src":"16367:9:26"},{"children":[{"attributes":{"functionReturnParameters":1696},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":943,"type":"uint256","value":"_redeemableCounter"},"id":1697,"name":"Identifier","src":"16394:18:26"}],"id":1698,"name":"Return","src":"16387:25:26"}],"id":1699,"name":"Block","src":"16377:42:26"}],"id":1700,"name":"FunctionDefinition","src":"16316:103:26"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1701,"name":"ParameterList","src":"16570:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1708,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1702,"name":"ElementaryTypeName","src":"16596:7:26"}],"id":1703,"name":"VariableDeclaration","src":"16596:7:26"}],"id":1704,"name":"ParameterList","src":"16595:9:26"},{"children":[{"attributes":{"functionReturnParameters":1704},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"address","value":"_stablecoin"},"id":1705,"name":"Identifier","src":"16622:11:26"}],"id":1706,"name":"Return","src":"16615:18:26"}],"id":1707,"name":"Block","src":"16605:35:26"}],"id":1708,"name":"FunctionDefinition","src":"16551:89:26"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":1717,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1709,"name":"ParameterList","src":"16774:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":1716,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1710,"name":"ElementaryTypeName","src":"16800:7:26"}],"id":1711,"name":"VariableDeclaration","src":"16800:7:26"}],"id":1712,"name":"ParameterList","src":"16799:9:26"},{"children":[{"attributes":{"functionReturnParameters":1712},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":947,"type":"bytes32","value":"_oracleNode"},"id":1713,"name":"Identifier","src":"16826:11:26"}],"id":1714,"name":"Return","src":"16819:18:26"}],"id":1715,"name":"Block","src":"16809:35:26"}],"id":1716,"name":"FunctionDefinition","src":"16755:89:26"}],"id":1717,"name":"ContractDefinition","src":"1939:14907:26"}],"id":1718,"name":"SourceUnit","src":"774:16073:26"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/oracle/Controller.bin b/build/oracle/Controller.bin index a69c0549..264e63ba 100644 --- a/build/oracle/Controller.bin +++ b/build/oracle/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/oracle/Oracle.bin b/build/oracle/Oracle.bin index 93ac6e7a..af6c6e49 100644 --- a/build/oracle/Oracle.bin +++ b/build/oracle/Oracle.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976006553480156200003557600080fd5b506040516200532038038062005320833981810160405260808110156200005b57600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091808280156200009c5760068190555b506007556040805160608101825281815290620052e060208301398051620000cd916008916020909101906200092a565b50600280546001600160a01b0319166001600160a01b038616179055620000f96402540be4006200011b565b62000111600f60fc1b6001600160e01b036200030c16565b50505050620009cc565b6002546001600160a01b031615806200015157506002546200014f906001600160a01b03166001600160e01b036200050216565b155b156200016e576200016c60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001bf57600080fd5b505af1158015620001d4573d6000803e3d6000fd5b505050506040513d6020811015620001eb57600080fd5b50516001546001600160a01b03908116911614620002a257600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200025457600080fd5b505af115801562000269573d6000803e3d6000fd5b505050506040513d60208110156200028057600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b5050505050565b6002546001600160a01b0316158062000342575060025462000340906001600160a01b03166001600160e01b036200050216565b155b156200035f576200035d60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620003b057600080fd5b505af1158015620003c5573d6000803e3d6000fd5b505050506040513d6020811015620003dc57600080fd5b50516001546001600160a01b039081169116146200049357600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200044557600080fd5b505af11580156200045a573d6000803e3d6000fd5b505050506040513d60208110156200047157600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163688dcfd760e01b81527fff000000000000000000000000000000000000000000000000000000000000008416600482015290516001600160a01b039092169163688dcfd79160248082019260009290919082900301818387803b158015620002f057600080fd5b3b90565b60006200051b6001600160e01b036200052116565b92915050565b6000806200054c731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed6001600160e01b036200050216565b1115620005b857600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152620005af906001600160e01b036200091116565b5060016200090e565b6000620005e273c03a2615d5efaf5f49f60b7bb6583eaec212fdf16001600160e01b036200050216565b11156200064657600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152620005af906001600160e01b036200091116565b60006200067073b7a07bcf2ba2f2703b24c0691b5278999c59ac7e6001600160e01b036200050216565b1115620006d157600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152620005af906001600160e01b036200091116565b6000620006fb73146500cfd35b22e4a392fe0adc06de1a1368ed486001600160e01b036200050216565b11156200075e57600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152620005af906001600160e01b036200091116565b60006200078873a2998efd205fb9d4b4963afb70778d6354ad3a416001600160e01b036200050216565b1115620007ea57600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152620005af906001600160e01b036200091116565b600062000814736f485c8bf6fc43ea212e93bbf8ce046c7f1cb4756001600160e01b036200050216565b11156200084a5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016200090e565b6000620008747320e12a1f859b3feae5fb2a0a32c18f5a65555bbf6001600160e01b036200050216565b1115620008aa5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016200090e565b6000620008d47351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa6001600160e01b036200050216565b11156200090a5750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016200090e565b5060005b90565b8051620009269060039060208401906200092a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200096d57805160ff19168380011785556200099d565b828001600101855582156200099d579182015b828111156200099d57825182559160200191906001019062000980565b50620009ab929150620009af565b5090565b6200090e91905b80821115620009ab5760008155600101620009b6565b61490480620009dc6000396000f3fe6080604052600436106100915760003560e01c8063996cba6811610059578063996cba681461032c578063b598f8821461036f578063c2c3d0541461038c578063ca6ad1e414610407578063e2b4ce971461043157610091565b806338bbfa50146100965780633acbe96e146101d55780637d73b2311461025f578063877337b014610290578063937f54a4146102b7575b600080fd5b3480156100a257600080fd5b506101d3600480360360608110156100b957600080fd5b81359190810190604081016020820135600160201b8111156100da57600080fd5b8201836020820111156100ec57600080fd5b803590602001918460018302840111600160201b8311171561010d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561015f57600080fd5b82018360208201111561017157600080fd5b803590602001918460018302840111600160201b8311171561019257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610446945050505050565b005b3480156101e157600080fd5b506101ea61061a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506102746106a8565b604080516001600160a01b039092168252519081900360200190f35b34801561029c57600080fd5b506102a56106b8565b60408051918252519081900360200190f35b6101d3600480360360408110156102cd57600080fd5b81359190810190604081016020820135600160201b8111156102ee57600080fd5b82018360208201111561030057600080fd5b803590602001918460208302840111600160201b8311171561032157600080fd5b5090925090506106be565b34801561033857600080fd5b506101d36004803603606081101561034f57600080fd5b506001600160a01b03813581169160208101359091169060400135610757565b6101d36004803603602081101561038557600080fd5b5035610804565b34801561039857600080fd5b506101d3600480360360208110156103af57600080fd5b810190602081018135600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b509092509050610867565b34801561041357600080fd5b506101d36004803603602081101561042a57600080fd5b5035610935565b34801561043d57600080fd5b506102a56109d3565b61044e6109d9565b6001600160a01b0316336001600160a01b0316146104ac576040805162461bcd60e51b815260206004820152601660248201527573656e646572206973206e6f74206f7261636c697a6560501b604482015290519081900360640190fd5b6000838152600960205260408120546001600160a01b031690806104cf83610bc3565b96505050945050505081610524576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b60088054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260009384936105c5938b938b93909290918301828280156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505086610d55565b909250905081156106105760006105e36105de89611287565b61152a565b60008a815260096020526040902080546001600160a01b031916905590508161060d87838361153d565b50505b5050505050505050565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b505050505081565b6000546001600160a01b03165b90565b60075490565b6106c7336115cc565b610715576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b6107528383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061166092505050565b505050565b61076033611982565b6107aa576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b58383836119e4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61080d336115cc565b61085b576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61086481611a48565b50565b61087033611982565b6108ba576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6108c660088383614675565b506040805133808252602082018381529282018490527fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa929091859185919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b61093e336115cc565b61098c576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61099581611cf9565b604080513381526020810183905281517ffbd406825addb09beef160afc17bb80ba28df4a3533dcd23592b82658a1c5ab4929181900390910190a150565b60065490565b6002546000906001600160a01b03161580610a065750600254610a04906001600160a01b0316611ec2565b155b15610a1757610a156000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b50516001546001600160a01b03908116911614610b4457600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b600160009054906101000a90046001600160a01b03166001600160a01b031663c281d19e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d6020811015610bbc57600080fd5b5051905090565b6060600080600080600080610bd9600754611ed0565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610c6b57600080fd5b8101908080516040519392919084600160201b821115610c8a57600080fd5b908301906020820185811115610c9f57600080fd5b8251600160201b811182820188101715610cb857600080fd5b82525081516020918201929091019080838360005b83811015610ce5578181015183820152602001610ccd565b50505050905090810190601f168015610d125780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610da5576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b604185600181518110610db457fe5b016020015160f81c14610e0e576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180388339019050509050610e408660026041846000611f92565b865190915060609087906044908110610e5557fe5b0160200151875160f89190911c906101009089906043908110610e7457fe5b016020015160f81c020114610ec9576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b6040805160608082526080820190925281602082018180388339019050509050610ef98760456060846000611f92565b9050610f06818388611fe0565b610f4b576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b604080516014808252818301909252606091602082018180388339019050509050610f7c82600b6014846000611f92565b9050600080610f8b83896120a4565b909250905081610fd1576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c8082526060828101909352602082018180388339019050509050611001856034602c846000611f92565b905061100c81612429565b8051906020012060028d6040516020018082805190602001908083835b602083106110485780518252601f199092019160209182019101611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110ab5780518252601f19909201916020918201910161108c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110ea573d6000803e3d6000fd5b5050506040513d60208110156110ff57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014611174576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111d85781810151838201526020016111c0565b50505050905090810190601f1680156112055780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611238578181015183820152602001611220565b50505050905090810190601f1680156112655780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b602083106112be5780518252601f19909201916020918201910161129f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525190506008811180156113065750601c8111155b61134c576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b6040805160078082528183019092526060916020820181803883390190505090506113e3846040516020018082805190602001908083835b602083106113a35780518252601f199092019160209182019101611384565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007846000611f92565b5060408051663d9122aa24111d60c91b81529051908190036007019020815160208301201461144b576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b6114536146f3565b61145c85612a46565b9050611490611483604051806040016040528060018152602001601d60f91b815250612a46565b829063ffffffff612a6b16565b50806000015192506114ca6114bd604051806040016040528060018152602001607d60f81b815250612a46565b829063ffffffff612a8516565b508051600019840114611516576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b61151f81612ae3565b93505050505b919050565b6000611537826012612b33565b92915050565b611548600754611ed0565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b50505050505050565b60006115d9600654611ed0565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b505192915050565b80516116ac576040805160208082526010908201526f195b5c1d1e481d1bdad95b881b1a5cdd60821b8183015290516000805160206148658339815191529181900360600190a161197e565b4781516116d36040518060400160405280600381526020016215549360ea1b8152506133e4565b0211156117245760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b61172c6146f3565b61174d60405180606001604052806032815260200161479660329139612a46565b90506117576146f3565b61178c60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a57606060006117ba8684815181106117ad57fe5b6020026020010151610bc3565b5050509350505091508061180f576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b6118176146f3565b61182083612a46565b905060006118746040518060400160405280600381526020016215549360ea1b81525061186e8861186261185d878d61360f90919063ffffffff16565b612a46565b9063ffffffff61360f16565b8b613683565b905087858151811061188257fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe6118eb83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050600190920191506117919050565b5050505b5050565b600061198f600654611ed0565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b6001600160a01b038216611a2e576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50610752565b6107526001600160a01b038316848363ffffffff613a5016565b6060611a52613aa2565b9050805160001415611a9d57604080516020808252600990820152686e6f20746f6b656e7360b81b8183015290516000805160206148658339815191529181900360600190a161197e565b478151611ac46040518060400160405280600381526020016215549360ea1b8152506133e4565b021115611b155760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b611b1d6146f3565b611b3e60405180606001604052806032815260200161479660329139612a46565b9050611b486146f3565b611b7d60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a576060611b9c8583815181106117ad57fe5b5050505050509050611bac6146f3565b611bb582612a46565b90506000611bf86040518060400160405280600381526020016215549360ea1b815250611bf28761186261185d878c61360f90919063ffffffff16565b8a613683565b9050868481518110611c0657fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe611c6f83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611cb3578181015183820152602001611c9b565b50505050905090810190601f168015611ce05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050600101611b82565b6002546001600160a01b03161580611d235750600254611d21906001600160a01b0316611ec2565b155b15611d3457611d326000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50516001546001600160a01b03908116911614611e6157600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015611eae57600080fd5b505af115801561197a573d6000803e3d6000fd5b3b90565b6000611537613bb3565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d6020811015611f4757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561162e57600080fd5b6060600082850190508084511015611fa957600080fd5b60208087019084015b868860200101821015611fd357888201518682015260209182019101611fb2565b5093979650505050505050565b60008060006120766002876040518082805190602001908083835b6020831061201a5780518252601f199092019160209182019101611ffb565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612059573d6000803e3d6000fd5b5050506040513d602081101561206e57600080fd5b505186613f07565b925090508080156120985750835160208501206001600160a01b038381169116145b925050505b9392505050565b600080836040516020018082805190602001908083835b602083106120da5780518252601f1990920191602091820191016120bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461211857fe5b6121206146f3565b61212985612a46565b90506121336146f3565b612155604051806040016040528060018152602001601d60f91b815250612a46565b905061215f6146f3565b612181604051806040016040528060018152602001600160fd1b815250612a46565b905060006121a56121a061219b868563ffffffff612a6b16565b612ae3565b613f91565b90506000811180156121b75750602081105b6121f4576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061221161220c61219b878663ffffffff612a6b16565b613f9e565b60ff1690506000811180156122265750600d81105b612265576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b600061227d6121a061219b888763ffffffff612a6b16565b90506107e1811180156122915750610bb881105b6122cf576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b60006122e76121a061219b898963ffffffff612a6b16565b90506019811061232b576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b60006123436121a061219b8a8a63ffffffff612a6b16565b9050603c8110612389576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006123a16121a061219b8b8b63ffffffff612a6b16565b9050603c81106123e7576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b60008183606402856127100289620f424002896305f5e10002896402540be40002010101010190508c8111819b509b50505050505050505050505b9250929050565b60606000806000806000865190506060816040519080825280601f01601f191660200182016040528015612464576020820181803883390190505b50905060008083118015612479575060048306155b6124ca576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b60408051603d60f81b8152905190819003600101902089518a9060011986019081106124f257fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156125345760028303925061259a565b60408051603d60f81b8152905190819003600101902089518a90600019860190811061255c57fe5b01602090810151604080516001600160f81b03199092168284015280518083036001018152602190920190528051910120141561259a576001830392505b600319831660005b818110156127b8576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106125d457fe5b0160200151815160f89190911c9081106125ea57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061262157fe5b0160200151815160f89190911c90811061263757fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061266e57fe5b0160200151815160f89190911c90811061268457fe5b602001015160f81c60f81b96506040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106126bb57fe5b0160200151815160f89190911c9081106126d157fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061271057fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b03191691869190811061275b57fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061279c57fe5b60200101906001600160f81b031916908160001a9053506125a2565b818503600214156128b0576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106127ed57fe5b0160200151815160f89190911c90811061280357fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061283a57fe5b0160200151815160f89190911c90811061285057fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b1684848060010195508151811061289457fe5b60200101906001600160f81b031916908160001a905350612a37565b81850360031415612a37576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106128e557fe5b0160200151815160f89190911c9081106128fb57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061293257fe5b0160200151815160f89190911c90811061294857fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061297f57fe5b0160200151815160f89190911c90811061299557fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c161790921691869181106129d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110612a1f57fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b612a4e6146f3565b506040805180820190915281518152602082810190820152919050565b612a736146f3565b612a7e838383614242565b5092915050565b612a8d6146f3565b815183511015612a9e575081611537565b8151835160208086015190850151910191909103906001908214612acc575082516020840151819020908220145b8015612ada57835185510385525b50929392505050565b60608082600001516040519080825280601f01601f191660200182016040528015612b15576020820181803883390190505b5090506000602082019050612a7e81856020015186600001516142b3565b60008281808080808080808080805b8b51811015613175578b51600360fc1b908d9083908110612b5f57fe5b01602001516001600160f81b03191610801590612b9d57508b51603960f81b908d9083908110612b8b57fe5b01602001516001600160f81b03191611155b8015612ba7575083155b15612c57578415612c0557612bc38a600a63ffffffff6142f116565b9950612bf8603060f81b60f81c8d8381518110612bdc57fe5b01602001518c9160f89190911c0360ff1663ffffffff61434a16565b9950600190970196612c52565b60019550612c1a8b600a63ffffffff6142f116565b9a50612c4f603060f81b60f81c8d8381518110612c3357fe5b01602001518d9160f89190911c0360ff1663ffffffff61434a16565b9a505b61316d565b8b51600360fc1b908d9083908110612c6b57fe5b01602001516001600160f81b03191610801590612ca957508b51603960f81b908d9083908110612c9757fe5b01602001516001600160f81b03191611155b8015612cb25750835b15612d0457612cc889600a63ffffffff6142f116565b9850612cfd603060f81b60f81c8d8381518110612ce157fe5b01602001518b9160f89190911c0360ff1663ffffffff61434a16565b985061316d565b8b51601760f91b908d9083908110612d1857fe5b01602001516001600160f81b0319161415612e1f5785612d77576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415612dca576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315612e16576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b6001945061316d565b8b51602d60f81b908d9083908110612e3357fe5b01602001516001600160f81b0319161415612f29578215612e89576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612ec9576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612f20576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001925061316d565b8b51602b60f81b908d9083908110612f3d57fe5b01602001516001600160f81b0319161415613033578115612f93576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b8215612fd3576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461302a576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001915061316d565b8b51604560f81b908d908390811061304757fe5b01602001516001600160f81b031916148061308257508b51606560f81b908d908390811061307157fe5b01602001516001600160f81b031916145b1561313057856130d1576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315613124576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b6001935080965061316d565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101612b42565b828061317e5750815b156131975786600201811161319257600080fd5b6131ac565b83156131ac578660010181116131ac57600080fd5b821561322d578d891061322357604e8e8a0310613200576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161320e57fe5b049c506115379b505050505050505050505050565b888e039d50613240565b61323d8e8a63ffffffff61434a16565b9d505b878e1061331457604e88106132865760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b61329a8b600a8a900a63ffffffff6142f116565b9a506132ac8b8b63ffffffff61434a16565b9a50604e888f03106132f5576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b61330d888f03600a0a8c6142f190919063ffffffff16565b9a506133d1565b8d88039750604e88106133585760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b87600a0a8a8161336457fe5b049950604e8e106133a65760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b6133bc8e600a0a8c6142f190919063ffffffff16565b9a506133ce8b8b63ffffffff61434a16565b9a505b50989d9c50505050505050505050505050565b6002546000906001600160a01b03161580613411575060025461340f906001600160a01b0316611ec2565b155b15613422576134206000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b505050506040513d602081101561349c57600080fd5b50516001546001600160a01b0390811691161461354f57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d602081101561352d57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460405163524f388960e01b81526020600482018181528551602484015285516001600160a01b039094169363524f388993879383926044909201919085019080838360005b838110156135af578181015183820152602001613597565b50505050905090810190601f1680156135dc5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156135fb57600080fd5b505af1158015611642573d6000803e3d6000fd5b60608082600001518460000151016040519080825280601f01601f191660200182016040528015613647576020820181803883390190505b509050600060208201905061366581866020015187600001516142b3565b84516020850151855161367b92840191906142b3565b509392505050565b6002546000906001600160a01b031615806136b057506002546136ae906001600160a01b0316611ec2565b155b156136c1576136bf6000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561371157600080fd5b505af1158015613725573d6000803e3d6000fd5b505050506040513d602081101561373b57600080fd5b50516001546001600160a01b039081169116146137ee57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050506040513d60208110156137cc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460408051630bbceb3360e21b815260248101859052600481019182528651604482015286516000936001600160a01b031692632ef3accc928992889291829160649091019060208601908083838c5b83811015613858578181015183820152602001613840565b50505050905090810190601f1680156138855780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519050670de0b6b3a76400003a8402018111156138f157506000905061209d565b60015460405163c51be90f60e01b8152600060048201818152606483018790526080602484019081528951608485015289516001600160a01b039095169463c51be90f948794938c938c938c93604481019160a49091019060208801908083838c5b8381101561396b578181015183820152602001613953565b50505050905090810190601f1680156139985780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156139cb5781810151838201526020016139b3565b50505050905090810190601f1680156139f85780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b158015613a1a57600080fd5b505af1158015613a2e573d6000803e3d6000fd5b50505050506040513d6020811015613a4557600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107529084906143a4565b6060613aaf600754611ed0565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2457600080fd5b8101908080516040519392919084600160201b821115613b4357600080fd5b908301906020820185811115613b5857600080fd5b82518660208202830111600160201b82111715613b7457600080fd5b82525081516020918201928201910280838360005b83811015613ba1578181015183820152602001613b89565b50505050905001604052505050905090565b600080613bd3731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611ec2565b1115613c3257600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152613c2a90614562565b5060016106b5565b6000613c5173c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611ec2565b1115613ca957600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152613c2a90614562565b6000613cc873b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611ec2565b1115613d1d57600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152613c2a90614562565b6000613d3c73146500cfd35b22e4a392fe0adc06de1a1368ed48611ec2565b1115613d9357600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152613c2a90614562565b6000613db273a2998efd205fb9d4b4963afb70778d6354ad3a41611ec2565b1115613e0857600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152613c2a90614562565b6000613e27736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611ec2565b1115613e5b5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016106b5565b6000613e7a7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611ec2565b1115613eae5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016106b5565b6000613ecd7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611ec2565b1115613f015750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016106b5565b50600090565b60008060008060008551604114613f28575060009350839250612422915050565b50505060208301516040840151606085015160001a601b811015613f4a57601b015b8060ff16601b14158015613f6257508060ff16601c14155b15613f77575060009350839250612422915050565b613f8387828585614575565b945094505050509250929050565b6000611537826000612b33565b600080826040516020018082805190602001908083835b60208310613fd45780518252601f199092019160209182019101613fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506040518080622530b760e91b8152506003019050604051809103902081141561403e576001915050611525565b60408051622332b160e91b81529051908190036003019020811415614067576002915050611525565b604080516226b0b960e91b81529051908190036003019020811415614090576003915050611525565b604080516220b83960e91b815290519081900360030190208114156140b9576004915050611525565b60408051624d617960e81b815290519081900360030190208114156140e2576005915050611525565b6040805162253ab760e91b8152905190819003600301902081141561410b576006915050611525565b6040805162129d5b60ea1b81529051908190036003019020811415614134576007915050611525565b604080516241756760e81b8152905190819003600301902081141561415d576008915050611525565b604080516205365760ec1b81529051908190036003019020811415614186576009915050611525565b604080516213d8dd60ea1b815290519081900360030190208114156141af57600a915050611525565b60408051622737bb60e91b815290519081900360030190208114156141d857600b915050611525565b604080516244656360e81b8152905190819003600301902081141561420157600c915050611525565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b61424a6146f3565b600061426885600001518660200151866000015187602001516145b2565b6020808701805191860191909152805182038552865190519192500181141561429457600085526142aa565b8351835186519101900385528351810160208601525b50909392505050565b5b602081106142d3578151835260209283019290910190601f19016142b4565b905182516020929092036101000a6000190180199091169116179052565b60008261430057506000611537565b8282028284828161430d57fe5b041461209d5760405162461bcd60e51b81526004018080602001828103825260218152602001806148856021913960400191505060405180910390fd5b60008282018381101561209d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6143b6826001600160a01b031661466f565b614407576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106144455780518252601f199092019160209182019101614426565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146144a7576040519150601f19603f3d011682016040523d82523d6000602084013e6144ac565b606091505b509150915081614503576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561455c5780806020019051602081101561451f57600080fd5b505161455c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806148a6602a913960400191505060405180910390fd5b50505050565b805161197e90600390602084019061470d565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1905190999098509650505050505050565b6000838186851161466057602085116146255783518251600019600860208990030260020a011991821690888a018890039083165b82811461461757818610614605578a8a019650505050505050614667565b506001909401805190949083166145e7565b859650505050505050614667565b508383206000905b858803821161465e578583208181141561464d5783945050505050614667565b50600192830192919091019061462d565b505b5050508284015b949350505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146b65782800160ff198235161785556146e3565b828001600101855582156146e3579182015b828111156146e35782358255916020019190600101906146c8565b506146ef92915061477b565b5090565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061474e57805160ff19168380011785556146e3565b828001600101855582156146e3579182015b828111156146e3578251825591602001919060010190614760565b6106b591905b808211156146ef576000815560010161478156fe68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d6d6f7265207468616e20373720646563696d616c2064696769747320706172736564000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334eb5629fd8501532aeb93b1b6a5b5b2ae398561e56514ed4b4b0c5ac2d381b6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582005735fb57455e42cbac6daa5c4dda576e2a849560601d44e15bd1fe582684e4d64736f6c63430005110032a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976006553480156200003557600080fd5b506040516200532038038062005320833981810160405260808110156200005b57600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091808280156200009c5760068190555b506007556040805160608101825281815290620052e060208301398051620000cd916008916020909101906200092a565b50600280546001600160a01b0319166001600160a01b038616179055620000f96402540be4006200011b565b62000111600f60fc1b6001600160e01b036200030c16565b50505050620009cc565b6002546001600160a01b031615806200015157506002546200014f906001600160a01b03166001600160e01b036200050216565b155b156200016e576200016c60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001bf57600080fd5b505af1158015620001d4573d6000803e3d6000fd5b505050506040513d6020811015620001eb57600080fd5b50516001546001600160a01b03908116911614620002a257600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200025457600080fd5b505af115801562000269573d6000803e3d6000fd5b505050506040513d60208110156200028057600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b5050505050565b6002546001600160a01b0316158062000342575060025462000340906001600160a01b03166001600160e01b036200050216565b155b156200035f576200035d60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620003b057600080fd5b505af1158015620003c5573d6000803e3d6000fd5b505050506040513d6020811015620003dc57600080fd5b50516001546001600160a01b039081169116146200049357600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200044557600080fd5b505af11580156200045a573d6000803e3d6000fd5b505050506040513d60208110156200047157600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163688dcfd760e01b81527fff000000000000000000000000000000000000000000000000000000000000008416600482015290516001600160a01b039092169163688dcfd79160248082019260009290919082900301818387803b158015620002f057600080fd5b3b90565b60006200051b6001600160e01b036200052116565b92915050565b6000806200054c731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed6001600160e01b036200050216565b1115620005b857600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152620005af906001600160e01b036200091116565b5060016200090e565b6000620005e273c03a2615d5efaf5f49f60b7bb6583eaec212fdf16001600160e01b036200050216565b11156200064657600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152620005af906001600160e01b036200091116565b60006200067073b7a07bcf2ba2f2703b24c0691b5278999c59ac7e6001600160e01b036200050216565b1115620006d157600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152620005af906001600160e01b036200091116565b6000620006fb73146500cfd35b22e4a392fe0adc06de1a1368ed486001600160e01b036200050216565b11156200075e57600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152620005af906001600160e01b036200091116565b60006200078873a2998efd205fb9d4b4963afb70778d6354ad3a416001600160e01b036200050216565b1115620007ea57600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152620005af906001600160e01b036200091116565b600062000814736f485c8bf6fc43ea212e93bbf8ce046c7f1cb4756001600160e01b036200050216565b11156200084a5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016200090e565b6000620008747320e12a1f859b3feae5fb2a0a32c18f5a65555bbf6001600160e01b036200050216565b1115620008aa5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016200090e565b6000620008d47351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa6001600160e01b036200050216565b11156200090a5750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016200090e565b5060005b90565b8051620009269060039060208401906200092a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200096d57805160ff19168380011785556200099d565b828001600101855582156200099d579182015b828111156200099d57825182559160200191906001019062000980565b50620009ab929150620009af565b5090565b6200090e91905b80821115620009ab5760008155600101620009b6565b61490480620009dc6000396000f3fe6080604052600436106100915760003560e01c8063996cba6811610059578063996cba681461032c578063b598f8821461036f578063c2c3d0541461038c578063ca6ad1e414610407578063e2b4ce971461043157610091565b806338bbfa50146100965780633acbe96e146101d55780637d73b2311461025f578063877337b014610290578063937f54a4146102b7575b600080fd5b3480156100a257600080fd5b506101d3600480360360608110156100b957600080fd5b81359190810190604081016020820135600160201b8111156100da57600080fd5b8201836020820111156100ec57600080fd5b803590602001918460018302840111600160201b8311171561010d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561015f57600080fd5b82018360208201111561017157600080fd5b803590602001918460018302840111600160201b8311171561019257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610446945050505050565b005b3480156101e157600080fd5b506101ea61061a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506102746106a8565b604080516001600160a01b039092168252519081900360200190f35b34801561029c57600080fd5b506102a56106b8565b60408051918252519081900360200190f35b6101d3600480360360408110156102cd57600080fd5b81359190810190604081016020820135600160201b8111156102ee57600080fd5b82018360208201111561030057600080fd5b803590602001918460208302840111600160201b8311171561032157600080fd5b5090925090506106be565b34801561033857600080fd5b506101d36004803603606081101561034f57600080fd5b506001600160a01b03813581169160208101359091169060400135610757565b6101d36004803603602081101561038557600080fd5b5035610804565b34801561039857600080fd5b506101d3600480360360208110156103af57600080fd5b810190602081018135600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b509092509050610867565b34801561041357600080fd5b506101d36004803603602081101561042a57600080fd5b5035610935565b34801561043d57600080fd5b506102a56109d3565b61044e6109d9565b6001600160a01b0316336001600160a01b0316146104ac576040805162461bcd60e51b815260206004820152601660248201527573656e646572206973206e6f74206f7261636c697a6560501b604482015290519081900360640190fd5b6000838152600960205260408120546001600160a01b031690806104cf83610bc3565b96505050945050505081610524576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b60088054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260009384936105c5938b938b93909290918301828280156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505086610d55565b909250905081156106105760006105e36105de89611287565b61152a565b60008a815260096020526040902080546001600160a01b031916905590508161060d87838361153d565b50505b5050505050505050565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b505050505081565b6000546001600160a01b03165b90565b60075490565b6106c7336115cc565b610715576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b6107528383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061166092505050565b505050565b61076033611982565b6107aa576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b58383836119e4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61080d336115cc565b61085b576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61086481611a48565b50565b61087033611982565b6108ba576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6108c660088383614675565b506040805133808252602082018381529282018490527fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa929091859185919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b61093e336115cc565b61098c576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61099581611cf9565b604080513381526020810183905281517ffbd406825addb09beef160afc17bb80ba28df4a3533dcd23592b82658a1c5ab4929181900390910190a150565b60065490565b6002546000906001600160a01b03161580610a065750600254610a04906001600160a01b0316611ec2565b155b15610a1757610a156000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b50516001546001600160a01b03908116911614610b4457600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b600160009054906101000a90046001600160a01b03166001600160a01b031663c281d19e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d6020811015610bbc57600080fd5b5051905090565b6060600080600080600080610bd9600754611ed0565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610c6b57600080fd5b8101908080516040519392919084600160201b821115610c8a57600080fd5b908301906020820185811115610c9f57600080fd5b8251600160201b811182820188101715610cb857600080fd5b82525081516020918201929091019080838360005b83811015610ce5578181015183820152602001610ccd565b50505050905090810190601f168015610d125780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610da5576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b604185600181518110610db457fe5b016020015160f81c14610e0e576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180388339019050509050610e408660026041846000611f92565b865190915060609087906044908110610e5557fe5b0160200151875160f89190911c906101009089906043908110610e7457fe5b016020015160f81c020114610ec9576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b6040805160608082526080820190925281602082018180388339019050509050610ef98760456060846000611f92565b9050610f06818388611fe0565b610f4b576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b604080516014808252818301909252606091602082018180388339019050509050610f7c82600b6014846000611f92565b9050600080610f8b83896120a4565b909250905081610fd1576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c8082526060828101909352602082018180388339019050509050611001856034602c846000611f92565b905061100c81612429565b8051906020012060028d6040516020018082805190602001908083835b602083106110485780518252601f199092019160209182019101611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110ab5780518252601f19909201916020918201910161108c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110ea573d6000803e3d6000fd5b5050506040513d60208110156110ff57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014611174576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111d85781810151838201526020016111c0565b50505050905090810190601f1680156112055780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611238578181015183820152602001611220565b50505050905090810190601f1680156112655780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b602083106112be5780518252601f19909201916020918201910161129f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525190506008811180156113065750601c8111155b61134c576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b6040805160078082528183019092526060916020820181803883390190505090506113e3846040516020018082805190602001908083835b602083106113a35780518252601f199092019160209182019101611384565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007846000611f92565b5060408051663d9122aa24111d60c91b81529051908190036007019020815160208301201461144b576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b6114536146f3565b61145c85612a46565b9050611490611483604051806040016040528060018152602001601d60f91b815250612a46565b829063ffffffff612a6b16565b50806000015192506114ca6114bd604051806040016040528060018152602001607d60f81b815250612a46565b829063ffffffff612a8516565b508051600019840114611516576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b61151f81612ae3565b93505050505b919050565b6000611537826012612b33565b92915050565b611548600754611ed0565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b50505050505050565b60006115d9600654611ed0565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b505192915050565b80516116ac576040805160208082526010908201526f195b5c1d1e481d1bdad95b881b1a5cdd60821b8183015290516000805160206148658339815191529181900360600190a161197e565b4781516116d36040518060400160405280600381526020016215549360ea1b8152506133e4565b0211156117245760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b61172c6146f3565b61174d60405180606001604052806032815260200161479660329139612a46565b90506117576146f3565b61178c60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a57606060006117ba8684815181106117ad57fe5b6020026020010151610bc3565b5050509350505091508061180f576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b6118176146f3565b61182083612a46565b905060006118746040518060400160405280600381526020016215549360ea1b81525061186e8861186261185d878d61360f90919063ffffffff16565b612a46565b9063ffffffff61360f16565b8b613683565b905087858151811061188257fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe6118eb83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050600190920191506117919050565b5050505b5050565b600061198f600654611ed0565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b6001600160a01b038216611a2e576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50610752565b6107526001600160a01b038316848363ffffffff613a5016565b6060611a52613aa2565b9050805160001415611a9d57604080516020808252600990820152686e6f20746f6b656e7360b81b8183015290516000805160206148658339815191529181900360600190a161197e565b478151611ac46040518060400160405280600381526020016215549360ea1b8152506133e4565b021115611b155760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b611b1d6146f3565b611b3e60405180606001604052806032815260200161479660329139612a46565b9050611b486146f3565b611b7d60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a576060611b9c8583815181106117ad57fe5b5050505050509050611bac6146f3565b611bb582612a46565b90506000611bf86040518060400160405280600381526020016215549360ea1b815250611bf28761186261185d878c61360f90919063ffffffff16565b8a613683565b9050868481518110611c0657fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe611c6f83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611cb3578181015183820152602001611c9b565b50505050905090810190601f168015611ce05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050600101611b82565b6002546001600160a01b03161580611d235750600254611d21906001600160a01b0316611ec2565b155b15611d3457611d326000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50516001546001600160a01b03908116911614611e6157600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015611eae57600080fd5b505af115801561197a573d6000803e3d6000fd5b3b90565b6000611537613bb3565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d6020811015611f4757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561162e57600080fd5b6060600082850190508084511015611fa957600080fd5b60208087019084015b868860200101821015611fd357888201518682015260209182019101611fb2565b5093979650505050505050565b60008060006120766002876040518082805190602001908083835b6020831061201a5780518252601f199092019160209182019101611ffb565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612059573d6000803e3d6000fd5b5050506040513d602081101561206e57600080fd5b505186613f07565b925090508080156120985750835160208501206001600160a01b038381169116145b925050505b9392505050565b600080836040516020018082805190602001908083835b602083106120da5780518252601f1990920191602091820191016120bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461211857fe5b6121206146f3565b61212985612a46565b90506121336146f3565b612155604051806040016040528060018152602001601d60f91b815250612a46565b905061215f6146f3565b612181604051806040016040528060018152602001600160fd1b815250612a46565b905060006121a56121a061219b868563ffffffff612a6b16565b612ae3565b613f91565b90506000811180156121b75750602081105b6121f4576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061221161220c61219b878663ffffffff612a6b16565b613f9e565b60ff1690506000811180156122265750600d81105b612265576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b600061227d6121a061219b888763ffffffff612a6b16565b90506107e1811180156122915750610bb881105b6122cf576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b60006122e76121a061219b898963ffffffff612a6b16565b90506019811061232b576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b60006123436121a061219b8a8a63ffffffff612a6b16565b9050603c8110612389576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006123a16121a061219b8b8b63ffffffff612a6b16565b9050603c81106123e7576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b60008183606402856127100289620f424002896305f5e10002896402540be40002010101010190508c8111819b509b50505050505050505050505b9250929050565b60606000806000806000865190506060816040519080825280601f01601f191660200182016040528015612464576020820181803883390190505b50905060008083118015612479575060048306155b6124ca576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b60408051603d60f81b8152905190819003600101902089518a9060011986019081106124f257fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156125345760028303925061259a565b60408051603d60f81b8152905190819003600101902089518a90600019860190811061255c57fe5b01602090810151604080516001600160f81b03199092168284015280518083036001018152602190920190528051910120141561259a576001830392505b600319831660005b818110156127b8576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106125d457fe5b0160200151815160f89190911c9081106125ea57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061262157fe5b0160200151815160f89190911c90811061263757fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061266e57fe5b0160200151815160f89190911c90811061268457fe5b602001015160f81c60f81b96506040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106126bb57fe5b0160200151815160f89190911c9081106126d157fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061271057fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b03191691869190811061275b57fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061279c57fe5b60200101906001600160f81b031916908160001a9053506125a2565b818503600214156128b0576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106127ed57fe5b0160200151815160f89190911c90811061280357fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061283a57fe5b0160200151815160f89190911c90811061285057fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b1684848060010195508151811061289457fe5b60200101906001600160f81b031916908160001a905350612a37565b81850360031415612a37576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106128e557fe5b0160200151815160f89190911c9081106128fb57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061293257fe5b0160200151815160f89190911c90811061294857fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061297f57fe5b0160200151815160f89190911c90811061299557fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c161790921691869181106129d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110612a1f57fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b612a4e6146f3565b506040805180820190915281518152602082810190820152919050565b612a736146f3565b612a7e838383614242565b5092915050565b612a8d6146f3565b815183511015612a9e575081611537565b8151835160208086015190850151910191909103906001908214612acc575082516020840151819020908220145b8015612ada57835185510385525b50929392505050565b60608082600001516040519080825280601f01601f191660200182016040528015612b15576020820181803883390190505b5090506000602082019050612a7e81856020015186600001516142b3565b60008281808080808080808080805b8b51811015613175578b51600360fc1b908d9083908110612b5f57fe5b01602001516001600160f81b03191610801590612b9d57508b51603960f81b908d9083908110612b8b57fe5b01602001516001600160f81b03191611155b8015612ba7575083155b15612c57578415612c0557612bc38a600a63ffffffff6142f116565b9950612bf8603060f81b60f81c8d8381518110612bdc57fe5b01602001518c9160f89190911c0360ff1663ffffffff61434a16565b9950600190970196612c52565b60019550612c1a8b600a63ffffffff6142f116565b9a50612c4f603060f81b60f81c8d8381518110612c3357fe5b01602001518d9160f89190911c0360ff1663ffffffff61434a16565b9a505b61316d565b8b51600360fc1b908d9083908110612c6b57fe5b01602001516001600160f81b03191610801590612ca957508b51603960f81b908d9083908110612c9757fe5b01602001516001600160f81b03191611155b8015612cb25750835b15612d0457612cc889600a63ffffffff6142f116565b9850612cfd603060f81b60f81c8d8381518110612ce157fe5b01602001518b9160f89190911c0360ff1663ffffffff61434a16565b985061316d565b8b51601760f91b908d9083908110612d1857fe5b01602001516001600160f81b0319161415612e1f5785612d77576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415612dca576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315612e16576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b6001945061316d565b8b51602d60f81b908d9083908110612e3357fe5b01602001516001600160f81b0319161415612f29578215612e89576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612ec9576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612f20576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001925061316d565b8b51602b60f81b908d9083908110612f3d57fe5b01602001516001600160f81b0319161415613033578115612f93576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b8215612fd3576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461302a576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001915061316d565b8b51604560f81b908d908390811061304757fe5b01602001516001600160f81b031916148061308257508b51606560f81b908d908390811061307157fe5b01602001516001600160f81b031916145b1561313057856130d1576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315613124576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b6001935080965061316d565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101612b42565b828061317e5750815b156131975786600201811161319257600080fd5b6131ac565b83156131ac578660010181116131ac57600080fd5b821561322d578d891061322357604e8e8a0310613200576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161320e57fe5b049c506115379b505050505050505050505050565b888e039d50613240565b61323d8e8a63ffffffff61434a16565b9d505b878e1061331457604e88106132865760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b61329a8b600a8a900a63ffffffff6142f116565b9a506132ac8b8b63ffffffff61434a16565b9a50604e888f03106132f5576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b61330d888f03600a0a8c6142f190919063ffffffff16565b9a506133d1565b8d88039750604e88106133585760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b87600a0a8a8161336457fe5b049950604e8e106133a65760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b6133bc8e600a0a8c6142f190919063ffffffff16565b9a506133ce8b8b63ffffffff61434a16565b9a505b50989d9c50505050505050505050505050565b6002546000906001600160a01b03161580613411575060025461340f906001600160a01b0316611ec2565b155b15613422576134206000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b505050506040513d602081101561349c57600080fd5b50516001546001600160a01b0390811691161461354f57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d602081101561352d57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460405163524f388960e01b81526020600482018181528551602484015285516001600160a01b039094169363524f388993879383926044909201919085019080838360005b838110156135af578181015183820152602001613597565b50505050905090810190601f1680156135dc5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156135fb57600080fd5b505af1158015611642573d6000803e3d6000fd5b60608082600001518460000151016040519080825280601f01601f191660200182016040528015613647576020820181803883390190505b509050600060208201905061366581866020015187600001516142b3565b84516020850151855161367b92840191906142b3565b509392505050565b6002546000906001600160a01b031615806136b057506002546136ae906001600160a01b0316611ec2565b155b156136c1576136bf6000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561371157600080fd5b505af1158015613725573d6000803e3d6000fd5b505050506040513d602081101561373b57600080fd5b50516001546001600160a01b039081169116146137ee57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050506040513d60208110156137cc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460408051630bbceb3360e21b815260248101859052600481019182528651604482015286516000936001600160a01b031692632ef3accc928992889291829160649091019060208601908083838c5b83811015613858578181015183820152602001613840565b50505050905090810190601f1680156138855780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519050670de0b6b3a76400003a8402018111156138f157506000905061209d565b60015460405163c51be90f60e01b8152600060048201818152606483018790526080602484019081528951608485015289516001600160a01b039095169463c51be90f948794938c938c938c93604481019160a49091019060208801908083838c5b8381101561396b578181015183820152602001613953565b50505050905090810190601f1680156139985780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156139cb5781810151838201526020016139b3565b50505050905090810190601f1680156139f85780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b158015613a1a57600080fd5b505af1158015613a2e573d6000803e3d6000fd5b50505050506040513d6020811015613a4557600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107529084906143a4565b6060613aaf600754611ed0565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2457600080fd5b8101908080516040519392919084600160201b821115613b4357600080fd5b908301906020820185811115613b5857600080fd5b82518660208202830111600160201b82111715613b7457600080fd5b82525081516020918201928201910280838360005b83811015613ba1578181015183820152602001613b89565b50505050905001604052505050905090565b600080613bd3731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611ec2565b1115613c3257600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152613c2a90614562565b5060016106b5565b6000613c5173c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611ec2565b1115613ca957600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152613c2a90614562565b6000613cc873b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611ec2565b1115613d1d57600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152613c2a90614562565b6000613d3c73146500cfd35b22e4a392fe0adc06de1a1368ed48611ec2565b1115613d9357600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152613c2a90614562565b6000613db273a2998efd205fb9d4b4963afb70778d6354ad3a41611ec2565b1115613e0857600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152613c2a90614562565b6000613e27736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611ec2565b1115613e5b5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016106b5565b6000613e7a7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611ec2565b1115613eae5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016106b5565b6000613ecd7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611ec2565b1115613f015750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016106b5565b50600090565b60008060008060008551604114613f28575060009350839250612422915050565b50505060208301516040840151606085015160001a601b811015613f4a57601b015b8060ff16601b14158015613f6257508060ff16601c14155b15613f77575060009350839250612422915050565b613f8387828585614575565b945094505050509250929050565b6000611537826000612b33565b600080826040516020018082805190602001908083835b60208310613fd45780518252601f199092019160209182019101613fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506040518080622530b760e91b8152506003019050604051809103902081141561403e576001915050611525565b60408051622332b160e91b81529051908190036003019020811415614067576002915050611525565b604080516226b0b960e91b81529051908190036003019020811415614090576003915050611525565b604080516220b83960e91b815290519081900360030190208114156140b9576004915050611525565b60408051624d617960e81b815290519081900360030190208114156140e2576005915050611525565b6040805162253ab760e91b8152905190819003600301902081141561410b576006915050611525565b6040805162129d5b60ea1b81529051908190036003019020811415614134576007915050611525565b604080516241756760e81b8152905190819003600301902081141561415d576008915050611525565b604080516205365760ec1b81529051908190036003019020811415614186576009915050611525565b604080516213d8dd60ea1b815290519081900360030190208114156141af57600a915050611525565b60408051622737bb60e91b815290519081900360030190208114156141d857600b915050611525565b604080516244656360e81b8152905190819003600301902081141561420157600c915050611525565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b61424a6146f3565b600061426885600001518660200151866000015187602001516145b2565b6020808701805191860191909152805182038552865190519192500181141561429457600085526142aa565b8351835186519101900385528351810160208601525b50909392505050565b5b602081106142d3578151835260209283019290910190601f19016142b4565b905182516020929092036101000a6000190180199091169116179052565b60008261430057506000611537565b8282028284828161430d57fe5b041461209d5760405162461bcd60e51b81526004018080602001828103825260218152602001806148856021913960400191505060405180910390fd5b60008282018381101561209d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6143b6826001600160a01b031661466f565b614407576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106144455780518252601f199092019160209182019101614426565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146144a7576040519150601f19603f3d011682016040523d82523d6000602084013e6144ac565b606091505b509150915081614503576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561455c5780806020019051602081101561451f57600080fd5b505161455c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806148a6602a913960400191505060405180910390fd5b50505050565b805161197e90600390602084019061470d565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1905190999098509650505050505050565b6000838186851161466057602085116146255783518251600019600860208990030260020a011991821690888a018890039083165b82811461461757818610614605578a8a019650505050505050614667565b506001909401805190949083166145e7565b859650505050505050614667565b508383206000905b858803821161465e578583208181141561464d5783945050505050614667565b50600192830192919091019061462d565b505b5050508284015b949350505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146b65782800160ff198235161785556146e3565b828001600101855582156146e3579182015b828111156146e35782358255916020019190600101906146c8565b506146ef92915061477b565b5090565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061474e57805160ff19168380011785556146e3565b828001600101855582156146e3579182015b828111156146e3578251825591602001919060010190614760565b6106b591905b808211156146ef576000815560010161478156fe68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d6d6f7265207468616e20373720646563696d616c2064696769747320706172736564000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334eb5629fd8501532aeb93b1b6a5b5b2ae398561e56514ed4b4b0c5ac2d381b6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158208486b396d2654ffb4d4b2185efc5120b1ea711758549921ac022c6ac0afa157d64736f6c63430005110032a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca \ No newline at end of file diff --git a/build/oracle/TokenWhitelist.bin b/build/oracle/TokenWhitelist.bin index 60f52176..5a283843 100644 --- a/build/oracle/TokenWhitelist.bin +++ b/build/oracle/TokenWhitelist.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032 \ No newline at end of file diff --git a/build/oracle/combined.json b/build/oracle/combined.json index dde2683c..c7a5244b 100644 --- a/build/oracle/combined.json +++ b/build/oracle/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:28:-;-1:-1:-1;;;;;1510:20:28;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:28;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:28;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:28;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/base64.sol:Base64":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158204a406065ddb416c02878c70b8f66161acaf75fbff3401f410c678f7cac307f2d64736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a723158204a406065ddb416c02878c70b8f66161acaf75fbff3401f410c678f7cac307f2d64736f6c63430005110032","srcmap":"264:2262:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:2262:5;;;;;;;","srcmap-runtime":"264:2262:5:-;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:7:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:7:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:8:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:8;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:8;-1:-1:-1;;;;;2567:10:8;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:8;;;;;;","srcmap-runtime":"1897:2174:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:14;;;;;;;;;:::i;:::-;;573:184:18;;;;;;;;;:::i;1721:953:15:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:11;;;;;;;;;:::i;:::-;;;;;;;;;612:169:17;;;;;;;;;:::i;505:166:13:-;;;;;;;;;:::i;980:228:12:-;;;;;;;;;:::i;3269:231:8:-;;;;;;;;;:::i;4901:153:14:-;;;;;;;;;:::i;974:127:18:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:14;;;;;;;;;:::i;582:292:11:-;;;;;;;;;:::i;844:101:16:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:12:-;;;;;;;;;:::i;4519:168:14:-;;;;;;;;;:::i;3703:366:8:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:14;;;;;;;;;:::i;838:108:13:-;;;;;;;;;:::i;1023:133:17:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:14;;;;;;;;;:::i;681:140:12:-;;;;;;;;;:::i;858:226:15:-;;;;;;;;;:::i;1514:127:12:-;;;;;;;;;:::i;2320:80:8:-;;;;;;;;;:::i;1107:169:18:-;1174:4;-1:-1:-1;;;;;;1197:32:18;;-1:-1:-1;;;1197:32:18;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:14:-;2932:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:14;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:14;;:18;-1:-1:-1;;3185:18:14;:15;:18;;-1:-1:-1;3185:18:14:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:14;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:14;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:14;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:14;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:14;;4052:6;;-1:-1:-1;4060:20:14;;;;-1:-1:-1;4082:17:14;4012:11;:88::i;:::-;400:1:10;;;;;2854:1263:14;;;;:::o;573:184:18:-;668:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:18;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:15:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:15;;;;;;;;;;-1:-1:-1;;;;;1849:29:15;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:15;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:15;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:15;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:15;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:15;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:15;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:15;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:15;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:15;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:15;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:15;;-1:-1:-1;2373:103:15;-1:-1:-1;2489:8:15;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:15;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:15;;-1:-1:-1;;;1721:953:15;;;;;:::o;1195:454:11:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:11;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:11;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:11;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:11;-1:-1:-1;1195:454:11;;;;;;:::o;612:169:17:-;687:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:17;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:17;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:13:-;584:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:13;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:12;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:12:o;3269:231:8:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:8;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:8;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:14:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:18:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:18;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:14:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:11:-;674:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:11;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:11;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:16:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:16;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:12;1302:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:12;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:14:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:8;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:8;-1:-1:-1;3844:6:8;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:8;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:8;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:8;;3840:199;;;-1:-1:-1;3703:366:8;;;;:::o;5193:128:14:-;5247:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:14;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:13:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:13;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:17;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:14:-;5617:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:14;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:14;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:14;;:16;-1:-1:-1;5701:4:14;;-1:-1:-1;5701:4:14;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:10;5541:225:14;;;;:::o;681:140:12:-;743:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:12;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:15:-;955:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:15;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:15;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:15;-1:-1:-1;;;;;971:43:15;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:12:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:12;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:17:-;1229:4;-1:-1:-1;;;;;;1252:34:17;;-1:-1:-1;;;1252:34:17;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:8:-;3596:3;;:15;;-1:-1:-1;;;3596:15:8;;3564:4;;;;-1:-1:-1;;;;;3596:3:8;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:8;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:8;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:8;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:8;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:8;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:9:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:7:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:14:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:14;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:14;;;;;;-1:-1:-1;;6760:43:14;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:14;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:14;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:9:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:9;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:9;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:9;;:::o;414:204:10:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:10;576:10;570:17;-1:-1:-1;;;566:36:10;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:10;87:34:-1;-1:-1;;;;;;776:20:10;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:10;743:64::o;951:169:16:-;1018:4;-1:-1:-1;;;;;;1041:32:16;;-1:-1:-1;;;1041:32:16;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:9:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:9;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:9:o;8685:393:7:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:7;87:34:-1;135:17;;-1:-1;8858:14:7;-1:-1:-1;8839:33:7;-1:-1:-1;8960:2:7;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:7;;8685:393;-1:-1:-1;;;;;8685:393:7:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:7:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:7;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:7;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:15:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:15;;:11;-1:-1:-1;;;;;2770:37:15;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:7:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:7;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:7;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:7;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:7;;513:2;499:26;489:42;;468:73::o;6035:245:14:-;6102:4;-1:-1:-1;;;;;;6125:38:14;;-1:-1:-1;;;6125:38:14;;:93;;-1:-1:-1;;;;;;;6182:36:14;;-1:-1:-1;;;6182:36:14;6125:93;:148;;;;6237:36;6261:11;1019:4:13;-1:-1:-1;;;;;;1042:40:13;;-1:-1:-1;;;1042:40:13;;:80;;;1086:36;1110:11;1714:4:12;-1:-1:-1;;;;;;1737:32:12;;-1:-1:-1;;;1737:32:12;;:71;;-1:-1:-1;;;;;;;1773:35:12;;-1:-1:-1;;;1773:35:12;1737:71;:111;;;;1812:36;1836:11;1722:4:11;-1:-1:-1;;;;;;1745:31:11;;-1:-1:-1;;;1745:31:11;;:71;;-1:-1:-1;;;;;;;;;;204:32:10;;;1780:36:11;114:129:10:o;1897:2174:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:8;;;-1:-1:-1;1897:2174:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:9:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:9:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/oraclizeAPI_0.5.sol:Buffer":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820301d15167ffe8b7d6d35b389c445156482c22ac2365396e96dfb8537fdc23af264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820301d15167ffe8b7d6d35b389c445156482c22ac2365396e96dfb8537fdc23af264736f6c63430005110032","srcmap":"4136:4236:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"4136:4236:19:-;;;;;;;;"},"externals/oraclizeAPI_0.5.sol:CBOR":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820afe6d0b9f8d097a94134a9adb5f497bcce638140c6ee300a28e9d66d54f84ed464736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820afe6d0b9f8d097a94134a9adb5f497bcce638140c6ee300a28e9d66d54f84ed464736f6c63430005110032","srcmap":"8374:2488:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"8374:2488:19:-;;;;;;;;"},"externals/oraclizeAPI_0.5.sol:OraclizeAddrResolverI":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/oraclizeAPI_0.5.sol:OraclizeI":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/oraclizeAPI_0.5.sol:solcChecker":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/oraclizeAPI_0.5.sol:usingOraclize":{"bin":"608060405234801561001057600080fd5b506101cc806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806338bbfa5014610030575b600080fd5b6101646004803603606081101561004657600080fd5b8135919081019060408101602082013564010000000081111561006857600080fd5b82018360208201111561007a57600080fd5b8035906020019184600183028401116401000000008311171561009c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156100ef57600080fd5b82018360208201111561010157600080fd5b8035906020019184600183028401116401000000008311171561012357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610166945050505050565b005b5050600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff555056fea265627a7a723158209af2e83824c5474e6d85089010b3c0c47f57e711f83697aeae042a1dbd4dbfb964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b506004361061002b5760003560e01c806338bbfa5014610030575b600080fd5b6101646004803603606081101561004657600080fd5b8135919081019060408101602082013564010000000081111561006857600080fd5b82018360208201111561007a57600080fd5b8035906020019184600183028401116401000000008311171561009c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156100ef57600080fd5b82018360208201111561010157600080fd5b8035906020019184600183028401116401000000008311171561012357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610166945050505050565b005b5050600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff555056fea265627a7a723158209af2e83824c5474e6d85089010b3c0c47f57e711f83697aeae042a1dbd4dbfb964736f6c63430005110032","srcmap":"10894:47129:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10894:47129:19;;;;;;;","srcmap-runtime":"10894:47129:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10894:47129:19;;;;;;;;;;;;;;;;;;;15444:178;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15444:178:19;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;15444:178:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15444:178:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15444:178:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15444:178:19;;;;;;;;-1:-1:-1;15444:178:19;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;15444:178:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15444:178:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15444:178:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15444:178:19;;-1:-1:-1;15444:178:19;;-1:-1:-1;;;;;15444:178:19:i;:::-;;;-1:-1:-1;;15613:1:19;15568:34;;;:22;:34;;;:47;-1:-1:-1;15444:178:19:o"},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:21:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:21:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/date.sol:Date":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820be84dc5f3dd94fb50d07c61b2de3dec0c6b16a8d991ebeb5443aab780c5b84ab64736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820be84dc5f3dd94fb50d07c61b2de3dec0c6b16a8d991ebeb5443aab780c5b84ab64736f6c63430005110032","srcmap":"927:1786:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;927:1786:23;;;;;;;","srcmap-runtime":"927:1786:23:-;;;;;"},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/parseIntScientific.sol:ParseIntScientific":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820aab401d12e8caad54cc7a665a54d3d743fe6ef009d19a8d8fbdf3ec73b180b0364736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820aab401d12e8caad54cc7a665a54d3d743fe6ef009d19a8d8fbdf3ec73b180b0364736f6c63430005110032","srcmap":"952:7539:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;952:7539:26;;;;;;;","srcmap-runtime":"952:7539:26:-;;;;;"},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:28:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:28;;;;;;;","srcmap-runtime":"961:696:28:-;;;;;"},"oracle.sol:Oracle":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976006553480156200003557600080fd5b506040516200532038038062005320833981810160405260808110156200005b57600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091808280156200009c5760068190555b506007556040805160608101825281815290620052e060208301398051620000cd916008916020909101906200092a565b50600280546001600160a01b0319166001600160a01b038616179055620000f96402540be4006200011b565b62000111600f60fc1b6001600160e01b036200030c16565b50505050620009cc565b6002546001600160a01b031615806200015157506002546200014f906001600160a01b03166001600160e01b036200050216565b155b156200016e576200016c60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001bf57600080fd5b505af1158015620001d4573d6000803e3d6000fd5b505050506040513d6020811015620001eb57600080fd5b50516001546001600160a01b03908116911614620002a257600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200025457600080fd5b505af115801562000269573d6000803e3d6000fd5b505050506040513d60208110156200028057600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b5050505050565b6002546001600160a01b0316158062000342575060025462000340906001600160a01b03166001600160e01b036200050216565b155b156200035f576200035d60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620003b057600080fd5b505af1158015620003c5573d6000803e3d6000fd5b505050506040513d6020811015620003dc57600080fd5b50516001546001600160a01b039081169116146200049357600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200044557600080fd5b505af11580156200045a573d6000803e3d6000fd5b505050506040513d60208110156200047157600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163688dcfd760e01b81527fff000000000000000000000000000000000000000000000000000000000000008416600482015290516001600160a01b039092169163688dcfd79160248082019260009290919082900301818387803b158015620002f057600080fd5b3b90565b60006200051b6001600160e01b036200052116565b92915050565b6000806200054c731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed6001600160e01b036200050216565b1115620005b857600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152620005af906001600160e01b036200091116565b5060016200090e565b6000620005e273c03a2615d5efaf5f49f60b7bb6583eaec212fdf16001600160e01b036200050216565b11156200064657600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152620005af906001600160e01b036200091116565b60006200067073b7a07bcf2ba2f2703b24c0691b5278999c59ac7e6001600160e01b036200050216565b1115620006d157600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152620005af906001600160e01b036200091116565b6000620006fb73146500cfd35b22e4a392fe0adc06de1a1368ed486001600160e01b036200050216565b11156200075e57600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152620005af906001600160e01b036200091116565b60006200078873a2998efd205fb9d4b4963afb70778d6354ad3a416001600160e01b036200050216565b1115620007ea57600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152620005af906001600160e01b036200091116565b600062000814736f485c8bf6fc43ea212e93bbf8ce046c7f1cb4756001600160e01b036200050216565b11156200084a5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016200090e565b6000620008747320e12a1f859b3feae5fb2a0a32c18f5a65555bbf6001600160e01b036200050216565b1115620008aa5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016200090e565b6000620008d47351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa6001600160e01b036200050216565b11156200090a5750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016200090e565b5060005b90565b8051620009269060039060208401906200092a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200096d57805160ff19168380011785556200099d565b828001600101855582156200099d579182015b828111156200099d57825182559160200191906001019062000980565b50620009ab929150620009af565b5090565b6200090e91905b80821115620009ab5760008155600101620009b6565b61490480620009dc6000396000f3fe6080604052600436106100915760003560e01c8063996cba6811610059578063996cba681461032c578063b598f8821461036f578063c2c3d0541461038c578063ca6ad1e414610407578063e2b4ce971461043157610091565b806338bbfa50146100965780633acbe96e146101d55780637d73b2311461025f578063877337b014610290578063937f54a4146102b7575b600080fd5b3480156100a257600080fd5b506101d3600480360360608110156100b957600080fd5b81359190810190604081016020820135600160201b8111156100da57600080fd5b8201836020820111156100ec57600080fd5b803590602001918460018302840111600160201b8311171561010d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561015f57600080fd5b82018360208201111561017157600080fd5b803590602001918460018302840111600160201b8311171561019257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610446945050505050565b005b3480156101e157600080fd5b506101ea61061a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506102746106a8565b604080516001600160a01b039092168252519081900360200190f35b34801561029c57600080fd5b506102a56106b8565b60408051918252519081900360200190f35b6101d3600480360360408110156102cd57600080fd5b81359190810190604081016020820135600160201b8111156102ee57600080fd5b82018360208201111561030057600080fd5b803590602001918460208302840111600160201b8311171561032157600080fd5b5090925090506106be565b34801561033857600080fd5b506101d36004803603606081101561034f57600080fd5b506001600160a01b03813581169160208101359091169060400135610757565b6101d36004803603602081101561038557600080fd5b5035610804565b34801561039857600080fd5b506101d3600480360360208110156103af57600080fd5b810190602081018135600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b509092509050610867565b34801561041357600080fd5b506101d36004803603602081101561042a57600080fd5b5035610935565b34801561043d57600080fd5b506102a56109d3565b61044e6109d9565b6001600160a01b0316336001600160a01b0316146104ac576040805162461bcd60e51b815260206004820152601660248201527573656e646572206973206e6f74206f7261636c697a6560501b604482015290519081900360640190fd5b6000838152600960205260408120546001600160a01b031690806104cf83610bc3565b96505050945050505081610524576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b60088054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260009384936105c5938b938b93909290918301828280156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505086610d55565b909250905081156106105760006105e36105de89611287565b61152a565b60008a815260096020526040902080546001600160a01b031916905590508161060d87838361153d565b50505b5050505050505050565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b505050505081565b6000546001600160a01b03165b90565b60075490565b6106c7336115cc565b610715576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b6107528383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061166092505050565b505050565b61076033611982565b6107aa576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b58383836119e4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61080d336115cc565b61085b576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61086481611a48565b50565b61087033611982565b6108ba576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6108c660088383614675565b506040805133808252602082018381529282018490527fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa929091859185919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b61093e336115cc565b61098c576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61099581611cf9565b604080513381526020810183905281517ffbd406825addb09beef160afc17bb80ba28df4a3533dcd23592b82658a1c5ab4929181900390910190a150565b60065490565b6002546000906001600160a01b03161580610a065750600254610a04906001600160a01b0316611ec2565b155b15610a1757610a156000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b50516001546001600160a01b03908116911614610b4457600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b600160009054906101000a90046001600160a01b03166001600160a01b031663c281d19e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d6020811015610bbc57600080fd5b5051905090565b6060600080600080600080610bd9600754611ed0565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610c6b57600080fd5b8101908080516040519392919084600160201b821115610c8a57600080fd5b908301906020820185811115610c9f57600080fd5b8251600160201b811182820188101715610cb857600080fd5b82525081516020918201929091019080838360005b83811015610ce5578181015183820152602001610ccd565b50505050905090810190601f168015610d125780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610da5576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b604185600181518110610db457fe5b016020015160f81c14610e0e576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180388339019050509050610e408660026041846000611f92565b865190915060609087906044908110610e5557fe5b0160200151875160f89190911c906101009089906043908110610e7457fe5b016020015160f81c020114610ec9576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b6040805160608082526080820190925281602082018180388339019050509050610ef98760456060846000611f92565b9050610f06818388611fe0565b610f4b576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b604080516014808252818301909252606091602082018180388339019050509050610f7c82600b6014846000611f92565b9050600080610f8b83896120a4565b909250905081610fd1576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c8082526060828101909352602082018180388339019050509050611001856034602c846000611f92565b905061100c81612429565b8051906020012060028d6040516020018082805190602001908083835b602083106110485780518252601f199092019160209182019101611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110ab5780518252601f19909201916020918201910161108c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110ea573d6000803e3d6000fd5b5050506040513d60208110156110ff57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014611174576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111d85781810151838201526020016111c0565b50505050905090810190601f1680156112055780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611238578181015183820152602001611220565b50505050905090810190601f1680156112655780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b602083106112be5780518252601f19909201916020918201910161129f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525190506008811180156113065750601c8111155b61134c576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b6040805160078082528183019092526060916020820181803883390190505090506113e3846040516020018082805190602001908083835b602083106113a35780518252601f199092019160209182019101611384565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007846000611f92565b5060408051663d9122aa24111d60c91b81529051908190036007019020815160208301201461144b576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b6114536146f3565b61145c85612a46565b9050611490611483604051806040016040528060018152602001601d60f91b815250612a46565b829063ffffffff612a6b16565b50806000015192506114ca6114bd604051806040016040528060018152602001607d60f81b815250612a46565b829063ffffffff612a8516565b508051600019840114611516576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b61151f81612ae3565b93505050505b919050565b6000611537826012612b33565b92915050565b611548600754611ed0565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b50505050505050565b60006115d9600654611ed0565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b505192915050565b80516116ac576040805160208082526010908201526f195b5c1d1e481d1bdad95b881b1a5cdd60821b8183015290516000805160206148658339815191529181900360600190a161197e565b4781516116d36040518060400160405280600381526020016215549360ea1b8152506133e4565b0211156117245760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b61172c6146f3565b61174d60405180606001604052806032815260200161479660329139612a46565b90506117576146f3565b61178c60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a57606060006117ba8684815181106117ad57fe5b6020026020010151610bc3565b5050509350505091508061180f576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b6118176146f3565b61182083612a46565b905060006118746040518060400160405280600381526020016215549360ea1b81525061186e8861186261185d878d61360f90919063ffffffff16565b612a46565b9063ffffffff61360f16565b8b613683565b905087858151811061188257fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe6118eb83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050600190920191506117919050565b5050505b5050565b600061198f600654611ed0565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b6001600160a01b038216611a2e576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50610752565b6107526001600160a01b038316848363ffffffff613a5016565b6060611a52613aa2565b9050805160001415611a9d57604080516020808252600990820152686e6f20746f6b656e7360b81b8183015290516000805160206148658339815191529181900360600190a161197e565b478151611ac46040518060400160405280600381526020016215549360ea1b8152506133e4565b021115611b155760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b611b1d6146f3565b611b3e60405180606001604052806032815260200161479660329139612a46565b9050611b486146f3565b611b7d60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a576060611b9c8583815181106117ad57fe5b5050505050509050611bac6146f3565b611bb582612a46565b90506000611bf86040518060400160405280600381526020016215549360ea1b815250611bf28761186261185d878c61360f90919063ffffffff16565b8a613683565b9050868481518110611c0657fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe611c6f83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611cb3578181015183820152602001611c9b565b50505050905090810190601f168015611ce05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050600101611b82565b6002546001600160a01b03161580611d235750600254611d21906001600160a01b0316611ec2565b155b15611d3457611d326000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50516001546001600160a01b03908116911614611e6157600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015611eae57600080fd5b505af115801561197a573d6000803e3d6000fd5b3b90565b6000611537613bb3565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d6020811015611f4757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561162e57600080fd5b6060600082850190508084511015611fa957600080fd5b60208087019084015b868860200101821015611fd357888201518682015260209182019101611fb2565b5093979650505050505050565b60008060006120766002876040518082805190602001908083835b6020831061201a5780518252601f199092019160209182019101611ffb565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612059573d6000803e3d6000fd5b5050506040513d602081101561206e57600080fd5b505186613f07565b925090508080156120985750835160208501206001600160a01b038381169116145b925050505b9392505050565b600080836040516020018082805190602001908083835b602083106120da5780518252601f1990920191602091820191016120bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461211857fe5b6121206146f3565b61212985612a46565b90506121336146f3565b612155604051806040016040528060018152602001601d60f91b815250612a46565b905061215f6146f3565b612181604051806040016040528060018152602001600160fd1b815250612a46565b905060006121a56121a061219b868563ffffffff612a6b16565b612ae3565b613f91565b90506000811180156121b75750602081105b6121f4576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061221161220c61219b878663ffffffff612a6b16565b613f9e565b60ff1690506000811180156122265750600d81105b612265576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b600061227d6121a061219b888763ffffffff612a6b16565b90506107e1811180156122915750610bb881105b6122cf576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b60006122e76121a061219b898963ffffffff612a6b16565b90506019811061232b576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b60006123436121a061219b8a8a63ffffffff612a6b16565b9050603c8110612389576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006123a16121a061219b8b8b63ffffffff612a6b16565b9050603c81106123e7576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b60008183606402856127100289620f424002896305f5e10002896402540be40002010101010190508c8111819b509b50505050505050505050505b9250929050565b60606000806000806000865190506060816040519080825280601f01601f191660200182016040528015612464576020820181803883390190505b50905060008083118015612479575060048306155b6124ca576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b60408051603d60f81b8152905190819003600101902089518a9060011986019081106124f257fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156125345760028303925061259a565b60408051603d60f81b8152905190819003600101902089518a90600019860190811061255c57fe5b01602090810151604080516001600160f81b03199092168284015280518083036001018152602190920190528051910120141561259a576001830392505b600319831660005b818110156127b8576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106125d457fe5b0160200151815160f89190911c9081106125ea57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061262157fe5b0160200151815160f89190911c90811061263757fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061266e57fe5b0160200151815160f89190911c90811061268457fe5b602001015160f81c60f81b96506040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106126bb57fe5b0160200151815160f89190911c9081106126d157fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061271057fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b03191691869190811061275b57fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061279c57fe5b60200101906001600160f81b031916908160001a9053506125a2565b818503600214156128b0576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106127ed57fe5b0160200151815160f89190911c90811061280357fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061283a57fe5b0160200151815160f89190911c90811061285057fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b1684848060010195508151811061289457fe5b60200101906001600160f81b031916908160001a905350612a37565b81850360031415612a37576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106128e557fe5b0160200151815160f89190911c9081106128fb57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061293257fe5b0160200151815160f89190911c90811061294857fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061297f57fe5b0160200151815160f89190911c90811061299557fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c161790921691869181106129d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110612a1f57fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b612a4e6146f3565b506040805180820190915281518152602082810190820152919050565b612a736146f3565b612a7e838383614242565b5092915050565b612a8d6146f3565b815183511015612a9e575081611537565b8151835160208086015190850151910191909103906001908214612acc575082516020840151819020908220145b8015612ada57835185510385525b50929392505050565b60608082600001516040519080825280601f01601f191660200182016040528015612b15576020820181803883390190505b5090506000602082019050612a7e81856020015186600001516142b3565b60008281808080808080808080805b8b51811015613175578b51600360fc1b908d9083908110612b5f57fe5b01602001516001600160f81b03191610801590612b9d57508b51603960f81b908d9083908110612b8b57fe5b01602001516001600160f81b03191611155b8015612ba7575083155b15612c57578415612c0557612bc38a600a63ffffffff6142f116565b9950612bf8603060f81b60f81c8d8381518110612bdc57fe5b01602001518c9160f89190911c0360ff1663ffffffff61434a16565b9950600190970196612c52565b60019550612c1a8b600a63ffffffff6142f116565b9a50612c4f603060f81b60f81c8d8381518110612c3357fe5b01602001518d9160f89190911c0360ff1663ffffffff61434a16565b9a505b61316d565b8b51600360fc1b908d9083908110612c6b57fe5b01602001516001600160f81b03191610801590612ca957508b51603960f81b908d9083908110612c9757fe5b01602001516001600160f81b03191611155b8015612cb25750835b15612d0457612cc889600a63ffffffff6142f116565b9850612cfd603060f81b60f81c8d8381518110612ce157fe5b01602001518b9160f89190911c0360ff1663ffffffff61434a16565b985061316d565b8b51601760f91b908d9083908110612d1857fe5b01602001516001600160f81b0319161415612e1f5785612d77576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415612dca576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315612e16576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b6001945061316d565b8b51602d60f81b908d9083908110612e3357fe5b01602001516001600160f81b0319161415612f29578215612e89576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612ec9576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612f20576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001925061316d565b8b51602b60f81b908d9083908110612f3d57fe5b01602001516001600160f81b0319161415613033578115612f93576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b8215612fd3576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461302a576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001915061316d565b8b51604560f81b908d908390811061304757fe5b01602001516001600160f81b031916148061308257508b51606560f81b908d908390811061307157fe5b01602001516001600160f81b031916145b1561313057856130d1576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315613124576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b6001935080965061316d565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101612b42565b828061317e5750815b156131975786600201811161319257600080fd5b6131ac565b83156131ac578660010181116131ac57600080fd5b821561322d578d891061322357604e8e8a0310613200576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161320e57fe5b049c506115379b505050505050505050505050565b888e039d50613240565b61323d8e8a63ffffffff61434a16565b9d505b878e1061331457604e88106132865760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b61329a8b600a8a900a63ffffffff6142f116565b9a506132ac8b8b63ffffffff61434a16565b9a50604e888f03106132f5576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b61330d888f03600a0a8c6142f190919063ffffffff16565b9a506133d1565b8d88039750604e88106133585760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b87600a0a8a8161336457fe5b049950604e8e106133a65760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b6133bc8e600a0a8c6142f190919063ffffffff16565b9a506133ce8b8b63ffffffff61434a16565b9a505b50989d9c50505050505050505050505050565b6002546000906001600160a01b03161580613411575060025461340f906001600160a01b0316611ec2565b155b15613422576134206000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b505050506040513d602081101561349c57600080fd5b50516001546001600160a01b0390811691161461354f57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d602081101561352d57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460405163524f388960e01b81526020600482018181528551602484015285516001600160a01b039094169363524f388993879383926044909201919085019080838360005b838110156135af578181015183820152602001613597565b50505050905090810190601f1680156135dc5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156135fb57600080fd5b505af1158015611642573d6000803e3d6000fd5b60608082600001518460000151016040519080825280601f01601f191660200182016040528015613647576020820181803883390190505b509050600060208201905061366581866020015187600001516142b3565b84516020850151855161367b92840191906142b3565b509392505050565b6002546000906001600160a01b031615806136b057506002546136ae906001600160a01b0316611ec2565b155b156136c1576136bf6000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561371157600080fd5b505af1158015613725573d6000803e3d6000fd5b505050506040513d602081101561373b57600080fd5b50516001546001600160a01b039081169116146137ee57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050506040513d60208110156137cc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460408051630bbceb3360e21b815260248101859052600481019182528651604482015286516000936001600160a01b031692632ef3accc928992889291829160649091019060208601908083838c5b83811015613858578181015183820152602001613840565b50505050905090810190601f1680156138855780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519050670de0b6b3a76400003a8402018111156138f157506000905061209d565b60015460405163c51be90f60e01b8152600060048201818152606483018790526080602484019081528951608485015289516001600160a01b039095169463c51be90f948794938c938c938c93604481019160a49091019060208801908083838c5b8381101561396b578181015183820152602001613953565b50505050905090810190601f1680156139985780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156139cb5781810151838201526020016139b3565b50505050905090810190601f1680156139f85780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b158015613a1a57600080fd5b505af1158015613a2e573d6000803e3d6000fd5b50505050506040513d6020811015613a4557600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107529084906143a4565b6060613aaf600754611ed0565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2457600080fd5b8101908080516040519392919084600160201b821115613b4357600080fd5b908301906020820185811115613b5857600080fd5b82518660208202830111600160201b82111715613b7457600080fd5b82525081516020918201928201910280838360005b83811015613ba1578181015183820152602001613b89565b50505050905001604052505050905090565b600080613bd3731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611ec2565b1115613c3257600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152613c2a90614562565b5060016106b5565b6000613c5173c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611ec2565b1115613ca957600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152613c2a90614562565b6000613cc873b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611ec2565b1115613d1d57600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152613c2a90614562565b6000613d3c73146500cfd35b22e4a392fe0adc06de1a1368ed48611ec2565b1115613d9357600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152613c2a90614562565b6000613db273a2998efd205fb9d4b4963afb70778d6354ad3a41611ec2565b1115613e0857600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152613c2a90614562565b6000613e27736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611ec2565b1115613e5b5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016106b5565b6000613e7a7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611ec2565b1115613eae5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016106b5565b6000613ecd7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611ec2565b1115613f015750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016106b5565b50600090565b60008060008060008551604114613f28575060009350839250612422915050565b50505060208301516040840151606085015160001a601b811015613f4a57601b015b8060ff16601b14158015613f6257508060ff16601c14155b15613f77575060009350839250612422915050565b613f8387828585614575565b945094505050509250929050565b6000611537826000612b33565b600080826040516020018082805190602001908083835b60208310613fd45780518252601f199092019160209182019101613fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506040518080622530b760e91b8152506003019050604051809103902081141561403e576001915050611525565b60408051622332b160e91b81529051908190036003019020811415614067576002915050611525565b604080516226b0b960e91b81529051908190036003019020811415614090576003915050611525565b604080516220b83960e91b815290519081900360030190208114156140b9576004915050611525565b60408051624d617960e81b815290519081900360030190208114156140e2576005915050611525565b6040805162253ab760e91b8152905190819003600301902081141561410b576006915050611525565b6040805162129d5b60ea1b81529051908190036003019020811415614134576007915050611525565b604080516241756760e81b8152905190819003600301902081141561415d576008915050611525565b604080516205365760ec1b81529051908190036003019020811415614186576009915050611525565b604080516213d8dd60ea1b815290519081900360030190208114156141af57600a915050611525565b60408051622737bb60e91b815290519081900360030190208114156141d857600b915050611525565b604080516244656360e81b8152905190819003600301902081141561420157600c915050611525565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b61424a6146f3565b600061426885600001518660200151866000015187602001516145b2565b6020808701805191860191909152805182038552865190519192500181141561429457600085526142aa565b8351835186519101900385528351810160208601525b50909392505050565b5b602081106142d3578151835260209283019290910190601f19016142b4565b905182516020929092036101000a6000190180199091169116179052565b60008261430057506000611537565b8282028284828161430d57fe5b041461209d5760405162461bcd60e51b81526004018080602001828103825260218152602001806148856021913960400191505060405180910390fd5b60008282018381101561209d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6143b6826001600160a01b031661466f565b614407576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106144455780518252601f199092019160209182019101614426565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146144a7576040519150601f19603f3d011682016040523d82523d6000602084013e6144ac565b606091505b509150915081614503576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561455c5780806020019051602081101561451f57600080fd5b505161455c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806148a6602a913960400191505060405180910390fd5b50505050565b805161197e90600390602084019061470d565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1905190999098509650505050505050565b6000838186851161466057602085116146255783518251600019600860208990030260020a011991821690888a018890039083165b82811461461757818610614605578a8a019650505050505050614667565b506001909401805190949083166145e7565b859650505050505050614667565b508383206000905b858803821161465e578583208181141561464d5783945050505050614667565b50600192830192919091019061462d565b505b5050508284015b949350505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146b65782800160ff198235161785556146e3565b828001600101855582156146e3579182015b828111156146e35782358255916020019190600101906146c8565b506146ef92915061477b565b5090565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061474e57805160ff19168380011785556146e3565b828001600101855582156146e3579182015b828111156146e3578251825591602001919060010190614760565b6106b591905b808211156146ef576000815560010161478156fe68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d6d6f7265207468616e20373720646563696d616c2064696769747320706172736564000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334eb5629fd8501532aeb93b1b6a5b5b2ae398561e56514ed4b4b0c5ac2d381b6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582005735fb57455e42cbac6daa5c4dda576e2a849560601d44e15bd1fe582684e4d64736f6c63430005110032a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca","bin-runtime":"6080604052600436106100915760003560e01c8063996cba6811610059578063996cba681461032c578063b598f8821461036f578063c2c3d0541461038c578063ca6ad1e414610407578063e2b4ce971461043157610091565b806338bbfa50146100965780633acbe96e146101d55780637d73b2311461025f578063877337b014610290578063937f54a4146102b7575b600080fd5b3480156100a257600080fd5b506101d3600480360360608110156100b957600080fd5b81359190810190604081016020820135600160201b8111156100da57600080fd5b8201836020820111156100ec57600080fd5b803590602001918460018302840111600160201b8311171561010d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561015f57600080fd5b82018360208201111561017157600080fd5b803590602001918460018302840111600160201b8311171561019257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610446945050505050565b005b3480156101e157600080fd5b506101ea61061a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506102746106a8565b604080516001600160a01b039092168252519081900360200190f35b34801561029c57600080fd5b506102a56106b8565b60408051918252519081900360200190f35b6101d3600480360360408110156102cd57600080fd5b81359190810190604081016020820135600160201b8111156102ee57600080fd5b82018360208201111561030057600080fd5b803590602001918460208302840111600160201b8311171561032157600080fd5b5090925090506106be565b34801561033857600080fd5b506101d36004803603606081101561034f57600080fd5b506001600160a01b03813581169160208101359091169060400135610757565b6101d36004803603602081101561038557600080fd5b5035610804565b34801561039857600080fd5b506101d3600480360360208110156103af57600080fd5b810190602081018135600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b509092509050610867565b34801561041357600080fd5b506101d36004803603602081101561042a57600080fd5b5035610935565b34801561043d57600080fd5b506102a56109d3565b61044e6109d9565b6001600160a01b0316336001600160a01b0316146104ac576040805162461bcd60e51b815260206004820152601660248201527573656e646572206973206e6f74206f7261636c697a6560501b604482015290519081900360640190fd5b6000838152600960205260408120546001600160a01b031690806104cf83610bc3565b96505050945050505081610524576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b60088054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260009384936105c5938b938b93909290918301828280156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505086610d55565b909250905081156106105760006105e36105de89611287565b61152a565b60008a815260096020526040902080546001600160a01b031916905590508161060d87838361153d565b50505b5050505050505050565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b505050505081565b6000546001600160a01b03165b90565b60075490565b6106c7336115cc565b610715576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b6107528383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061166092505050565b505050565b61076033611982565b6107aa576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b58383836119e4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61080d336115cc565b61085b576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61086481611a48565b50565b61087033611982565b6108ba576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6108c660088383614675565b506040805133808252602082018381529282018490527fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa929091859185919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b61093e336115cc565b61098c576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61099581611cf9565b604080513381526020810183905281517ffbd406825addb09beef160afc17bb80ba28df4a3533dcd23592b82658a1c5ab4929181900390910190a150565b60065490565b6002546000906001600160a01b03161580610a065750600254610a04906001600160a01b0316611ec2565b155b15610a1757610a156000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b50516001546001600160a01b03908116911614610b4457600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b600160009054906101000a90046001600160a01b03166001600160a01b031663c281d19e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d6020811015610bbc57600080fd5b5051905090565b6060600080600080600080610bd9600754611ed0565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610c6b57600080fd5b8101908080516040519392919084600160201b821115610c8a57600080fd5b908301906020820185811115610c9f57600080fd5b8251600160201b811182820188101715610cb857600080fd5b82525081516020918201929091019080838360005b83811015610ce5578181015183820152602001610ccd565b50505050905090810190601f168015610d125780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610da5576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b604185600181518110610db457fe5b016020015160f81c14610e0e576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180388339019050509050610e408660026041846000611f92565b865190915060609087906044908110610e5557fe5b0160200151875160f89190911c906101009089906043908110610e7457fe5b016020015160f81c020114610ec9576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b6040805160608082526080820190925281602082018180388339019050509050610ef98760456060846000611f92565b9050610f06818388611fe0565b610f4b576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b604080516014808252818301909252606091602082018180388339019050509050610f7c82600b6014846000611f92565b9050600080610f8b83896120a4565b909250905081610fd1576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c8082526060828101909352602082018180388339019050509050611001856034602c846000611f92565b905061100c81612429565b8051906020012060028d6040516020018082805190602001908083835b602083106110485780518252601f199092019160209182019101611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110ab5780518252601f19909201916020918201910161108c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110ea573d6000803e3d6000fd5b5050506040513d60208110156110ff57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014611174576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111d85781810151838201526020016111c0565b50505050905090810190601f1680156112055780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611238578181015183820152602001611220565b50505050905090810190601f1680156112655780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b602083106112be5780518252601f19909201916020918201910161129f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525190506008811180156113065750601c8111155b61134c576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b6040805160078082528183019092526060916020820181803883390190505090506113e3846040516020018082805190602001908083835b602083106113a35780518252601f199092019160209182019101611384565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007846000611f92565b5060408051663d9122aa24111d60c91b81529051908190036007019020815160208301201461144b576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b6114536146f3565b61145c85612a46565b9050611490611483604051806040016040528060018152602001601d60f91b815250612a46565b829063ffffffff612a6b16565b50806000015192506114ca6114bd604051806040016040528060018152602001607d60f81b815250612a46565b829063ffffffff612a8516565b508051600019840114611516576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b61151f81612ae3565b93505050505b919050565b6000611537826012612b33565b92915050565b611548600754611ed0565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b50505050505050565b60006115d9600654611ed0565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b505192915050565b80516116ac576040805160208082526010908201526f195b5c1d1e481d1bdad95b881b1a5cdd60821b8183015290516000805160206148658339815191529181900360600190a161197e565b4781516116d36040518060400160405280600381526020016215549360ea1b8152506133e4565b0211156117245760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b61172c6146f3565b61174d60405180606001604052806032815260200161479660329139612a46565b90506117576146f3565b61178c60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a57606060006117ba8684815181106117ad57fe5b6020026020010151610bc3565b5050509350505091508061180f576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b6118176146f3565b61182083612a46565b905060006118746040518060400160405280600381526020016215549360ea1b81525061186e8861186261185d878d61360f90919063ffffffff16565b612a46565b9063ffffffff61360f16565b8b613683565b905087858151811061188257fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe6118eb83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050600190920191506117919050565b5050505b5050565b600061198f600654611ed0565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b6001600160a01b038216611a2e576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50610752565b6107526001600160a01b038316848363ffffffff613a5016565b6060611a52613aa2565b9050805160001415611a9d57604080516020808252600990820152686e6f20746f6b656e7360b81b8183015290516000805160206148658339815191529181900360600190a161197e565b478151611ac46040518060400160405280600381526020016215549360ea1b8152506133e4565b021115611b155760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b611b1d6146f3565b611b3e60405180606001604052806032815260200161479660329139612a46565b9050611b486146f3565b611b7d60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a576060611b9c8583815181106117ad57fe5b5050505050509050611bac6146f3565b611bb582612a46565b90506000611bf86040518060400160405280600381526020016215549360ea1b815250611bf28761186261185d878c61360f90919063ffffffff16565b8a613683565b9050868481518110611c0657fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe611c6f83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611cb3578181015183820152602001611c9b565b50505050905090810190601f168015611ce05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050600101611b82565b6002546001600160a01b03161580611d235750600254611d21906001600160a01b0316611ec2565b155b15611d3457611d326000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50516001546001600160a01b03908116911614611e6157600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015611eae57600080fd5b505af115801561197a573d6000803e3d6000fd5b3b90565b6000611537613bb3565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d6020811015611f4757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561162e57600080fd5b6060600082850190508084511015611fa957600080fd5b60208087019084015b868860200101821015611fd357888201518682015260209182019101611fb2565b5093979650505050505050565b60008060006120766002876040518082805190602001908083835b6020831061201a5780518252601f199092019160209182019101611ffb565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612059573d6000803e3d6000fd5b5050506040513d602081101561206e57600080fd5b505186613f07565b925090508080156120985750835160208501206001600160a01b038381169116145b925050505b9392505050565b600080836040516020018082805190602001908083835b602083106120da5780518252601f1990920191602091820191016120bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461211857fe5b6121206146f3565b61212985612a46565b90506121336146f3565b612155604051806040016040528060018152602001601d60f91b815250612a46565b905061215f6146f3565b612181604051806040016040528060018152602001600160fd1b815250612a46565b905060006121a56121a061219b868563ffffffff612a6b16565b612ae3565b613f91565b90506000811180156121b75750602081105b6121f4576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061221161220c61219b878663ffffffff612a6b16565b613f9e565b60ff1690506000811180156122265750600d81105b612265576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b600061227d6121a061219b888763ffffffff612a6b16565b90506107e1811180156122915750610bb881105b6122cf576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b60006122e76121a061219b898963ffffffff612a6b16565b90506019811061232b576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b60006123436121a061219b8a8a63ffffffff612a6b16565b9050603c8110612389576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006123a16121a061219b8b8b63ffffffff612a6b16565b9050603c81106123e7576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b60008183606402856127100289620f424002896305f5e10002896402540be40002010101010190508c8111819b509b50505050505050505050505b9250929050565b60606000806000806000865190506060816040519080825280601f01601f191660200182016040528015612464576020820181803883390190505b50905060008083118015612479575060048306155b6124ca576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b60408051603d60f81b8152905190819003600101902089518a9060011986019081106124f257fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156125345760028303925061259a565b60408051603d60f81b8152905190819003600101902089518a90600019860190811061255c57fe5b01602090810151604080516001600160f81b03199092168284015280518083036001018152602190920190528051910120141561259a576001830392505b600319831660005b818110156127b8576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106125d457fe5b0160200151815160f89190911c9081106125ea57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061262157fe5b0160200151815160f89190911c90811061263757fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061266e57fe5b0160200151815160f89190911c90811061268457fe5b602001015160f81c60f81b96506040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106126bb57fe5b0160200151815160f89190911c9081106126d157fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061271057fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b03191691869190811061275b57fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061279c57fe5b60200101906001600160f81b031916908160001a9053506125a2565b818503600214156128b0576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106127ed57fe5b0160200151815160f89190911c90811061280357fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061283a57fe5b0160200151815160f89190911c90811061285057fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b1684848060010195508151811061289457fe5b60200101906001600160f81b031916908160001a905350612a37565b81850360031415612a37576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106128e557fe5b0160200151815160f89190911c9081106128fb57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061293257fe5b0160200151815160f89190911c90811061294857fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061297f57fe5b0160200151815160f89190911c90811061299557fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c161790921691869181106129d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110612a1f57fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b612a4e6146f3565b506040805180820190915281518152602082810190820152919050565b612a736146f3565b612a7e838383614242565b5092915050565b612a8d6146f3565b815183511015612a9e575081611537565b8151835160208086015190850151910191909103906001908214612acc575082516020840151819020908220145b8015612ada57835185510385525b50929392505050565b60608082600001516040519080825280601f01601f191660200182016040528015612b15576020820181803883390190505b5090506000602082019050612a7e81856020015186600001516142b3565b60008281808080808080808080805b8b51811015613175578b51600360fc1b908d9083908110612b5f57fe5b01602001516001600160f81b03191610801590612b9d57508b51603960f81b908d9083908110612b8b57fe5b01602001516001600160f81b03191611155b8015612ba7575083155b15612c57578415612c0557612bc38a600a63ffffffff6142f116565b9950612bf8603060f81b60f81c8d8381518110612bdc57fe5b01602001518c9160f89190911c0360ff1663ffffffff61434a16565b9950600190970196612c52565b60019550612c1a8b600a63ffffffff6142f116565b9a50612c4f603060f81b60f81c8d8381518110612c3357fe5b01602001518d9160f89190911c0360ff1663ffffffff61434a16565b9a505b61316d565b8b51600360fc1b908d9083908110612c6b57fe5b01602001516001600160f81b03191610801590612ca957508b51603960f81b908d9083908110612c9757fe5b01602001516001600160f81b03191611155b8015612cb25750835b15612d0457612cc889600a63ffffffff6142f116565b9850612cfd603060f81b60f81c8d8381518110612ce157fe5b01602001518b9160f89190911c0360ff1663ffffffff61434a16565b985061316d565b8b51601760f91b908d9083908110612d1857fe5b01602001516001600160f81b0319161415612e1f5785612d77576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415612dca576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315612e16576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b6001945061316d565b8b51602d60f81b908d9083908110612e3357fe5b01602001516001600160f81b0319161415612f29578215612e89576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612ec9576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612f20576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001925061316d565b8b51602b60f81b908d9083908110612f3d57fe5b01602001516001600160f81b0319161415613033578115612f93576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b8215612fd3576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461302a576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001915061316d565b8b51604560f81b908d908390811061304757fe5b01602001516001600160f81b031916148061308257508b51606560f81b908d908390811061307157fe5b01602001516001600160f81b031916145b1561313057856130d1576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315613124576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b6001935080965061316d565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101612b42565b828061317e5750815b156131975786600201811161319257600080fd5b6131ac565b83156131ac578660010181116131ac57600080fd5b821561322d578d891061322357604e8e8a0310613200576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161320e57fe5b049c506115379b505050505050505050505050565b888e039d50613240565b61323d8e8a63ffffffff61434a16565b9d505b878e1061331457604e88106132865760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b61329a8b600a8a900a63ffffffff6142f116565b9a506132ac8b8b63ffffffff61434a16565b9a50604e888f03106132f5576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b61330d888f03600a0a8c6142f190919063ffffffff16565b9a506133d1565b8d88039750604e88106133585760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b87600a0a8a8161336457fe5b049950604e8e106133a65760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b6133bc8e600a0a8c6142f190919063ffffffff16565b9a506133ce8b8b63ffffffff61434a16565b9a505b50989d9c50505050505050505050505050565b6002546000906001600160a01b03161580613411575060025461340f906001600160a01b0316611ec2565b155b15613422576134206000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b505050506040513d602081101561349c57600080fd5b50516001546001600160a01b0390811691161461354f57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d602081101561352d57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460405163524f388960e01b81526020600482018181528551602484015285516001600160a01b039094169363524f388993879383926044909201919085019080838360005b838110156135af578181015183820152602001613597565b50505050905090810190601f1680156135dc5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156135fb57600080fd5b505af1158015611642573d6000803e3d6000fd5b60608082600001518460000151016040519080825280601f01601f191660200182016040528015613647576020820181803883390190505b509050600060208201905061366581866020015187600001516142b3565b84516020850151855161367b92840191906142b3565b509392505050565b6002546000906001600160a01b031615806136b057506002546136ae906001600160a01b0316611ec2565b155b156136c1576136bf6000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561371157600080fd5b505af1158015613725573d6000803e3d6000fd5b505050506040513d602081101561373b57600080fd5b50516001546001600160a01b039081169116146137ee57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050506040513d60208110156137cc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460408051630bbceb3360e21b815260248101859052600481019182528651604482015286516000936001600160a01b031692632ef3accc928992889291829160649091019060208601908083838c5b83811015613858578181015183820152602001613840565b50505050905090810190601f1680156138855780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519050670de0b6b3a76400003a8402018111156138f157506000905061209d565b60015460405163c51be90f60e01b8152600060048201818152606483018790526080602484019081528951608485015289516001600160a01b039095169463c51be90f948794938c938c938c93604481019160a49091019060208801908083838c5b8381101561396b578181015183820152602001613953565b50505050905090810190601f1680156139985780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156139cb5781810151838201526020016139b3565b50505050905090810190601f1680156139f85780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b158015613a1a57600080fd5b505af1158015613a2e573d6000803e3d6000fd5b50505050506040513d6020811015613a4557600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107529084906143a4565b6060613aaf600754611ed0565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2457600080fd5b8101908080516040519392919084600160201b821115613b4357600080fd5b908301906020820185811115613b5857600080fd5b82518660208202830111600160201b82111715613b7457600080fd5b82525081516020918201928201910280838360005b83811015613ba1578181015183820152602001613b89565b50505050905001604052505050905090565b600080613bd3731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611ec2565b1115613c3257600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152613c2a90614562565b5060016106b5565b6000613c5173c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611ec2565b1115613ca957600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152613c2a90614562565b6000613cc873b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611ec2565b1115613d1d57600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152613c2a90614562565b6000613d3c73146500cfd35b22e4a392fe0adc06de1a1368ed48611ec2565b1115613d9357600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152613c2a90614562565b6000613db273a2998efd205fb9d4b4963afb70778d6354ad3a41611ec2565b1115613e0857600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152613c2a90614562565b6000613e27736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611ec2565b1115613e5b5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016106b5565b6000613e7a7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611ec2565b1115613eae5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016106b5565b6000613ecd7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611ec2565b1115613f015750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016106b5565b50600090565b60008060008060008551604114613f28575060009350839250612422915050565b50505060208301516040840151606085015160001a601b811015613f4a57601b015b8060ff16601b14158015613f6257508060ff16601c14155b15613f77575060009350839250612422915050565b613f8387828585614575565b945094505050509250929050565b6000611537826000612b33565b600080826040516020018082805190602001908083835b60208310613fd45780518252601f199092019160209182019101613fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506040518080622530b760e91b8152506003019050604051809103902081141561403e576001915050611525565b60408051622332b160e91b81529051908190036003019020811415614067576002915050611525565b604080516226b0b960e91b81529051908190036003019020811415614090576003915050611525565b604080516220b83960e91b815290519081900360030190208114156140b9576004915050611525565b60408051624d617960e81b815290519081900360030190208114156140e2576005915050611525565b6040805162253ab760e91b8152905190819003600301902081141561410b576006915050611525565b6040805162129d5b60ea1b81529051908190036003019020811415614134576007915050611525565b604080516241756760e81b8152905190819003600301902081141561415d576008915050611525565b604080516205365760ec1b81529051908190036003019020811415614186576009915050611525565b604080516213d8dd60ea1b815290519081900360030190208114156141af57600a915050611525565b60408051622737bb60e91b815290519081900360030190208114156141d857600b915050611525565b604080516244656360e81b8152905190819003600301902081141561420157600c915050611525565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b61424a6146f3565b600061426885600001518660200151866000015187602001516145b2565b6020808701805191860191909152805182038552865190519192500181141561429457600085526142aa565b8351835186519101900385528351810160208601525b50909392505050565b5b602081106142d3578151835260209283019290910190601f19016142b4565b905182516020929092036101000a6000190180199091169116179052565b60008261430057506000611537565b8282028284828161430d57fe5b041461209d5760405162461bcd60e51b81526004018080602001828103825260218152602001806148856021913960400191505060405180910390fd5b60008282018381101561209d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6143b6826001600160a01b031661466f565b614407576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106144455780518252601f199092019160209182019101614426565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146144a7576040519150601f19603f3d011682016040523d82523d6000602084013e6144ac565b606091505b509150915081614503576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561455c5780806020019051602081101561451f57600080fd5b505161455c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806148a6602a913960400191505060405180910390fd5b50505050565b805161197e90600390602084019061470d565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1905190999098509650505050505050565b6000838186851161466057602085116146255783518251600019600860208990030260020a011991821690888a018890039083165b82811461461757818610614605578a8a019650505050505050614667565b506001909401805190949083166145e7565b859650505050505050614667565b508383206000905b858803821161465e578583208181141561464d5783945050505050614667565b50600192830192919091019061462d565b505b5050508284015b949350505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146b65782800160ff198235161785556146e3565b828001600101855582156146e3579182015b828111156146e35782358255916020019190600101906146c8565b506146ef92915061477b565b5090565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061474e57805160ff19168380011785556146e3565b828001600101855582156146e3579182015b828111156146e3578251825591602001919060010190614760565b6106b591905b808211156146ef576000815560010161478156fe68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d6d6f7265207468616e20373720646563696d616c2064696769747320706172736564000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334eb5629fd8501532aeb93b1b6a5b5b2ae398561e56514ed4b4b0c5ac2d381b6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582005735fb57455e42cbac6daa5c4dda576e2a849560601d44e15bd1fe582684e4d64736f6c63430005110032","srcmap":"1226:15469:29:-;;;1122:66:22;1272:58;;3211:560:29;5:2:-1;;;;30:1;27;20:12;5:2;3211:560:29;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3211:560:29;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3211:560:29;;;;;;1665:30:22;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1341:19:27;:42;3460:161:29;;;;;;;;;;;;;;;;;;;;;:25;;:161;;;;;;:::i;:::-;-1:-1:-1;3631:3:29;:39;;-1:-1:-1;;;;;;3631:39:29;-1:-1:-1;;;;;3631:39:29;;;;;3680;3707:11;3680:26;:39::i;:::-;3729:35;-1:-1:-1;;;;;;;;3729:17:29;:35;:::i;:::-;3211:560;;;;1226:15469;;37465:134:19;11822:3;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;-1:-1:-1;;;;;11846:11:19;:25;:::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;-1:-1:-1;;;;;11893:19:19;:35;:::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;37555:8;;:37;;;-1:-1:-1;;;37555:37:19;;;;;;;;;;-1:-1:-1;;;;;37555:8:19;;;;:26;;:37;;;;;:8;;:37;;;;;;;;:8;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;37555:37:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37555:37:19;;;;37465:134;:::o;37053:116::-;11822:3;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;-1:-1:-1;;;;;11846:11:19;:25;:::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;-1:-1:-1;;;;;11893:19:19;:35;:::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;37132:8;;:30;;;-1:-1:-1;;;37132:30:19;;;;;;;;;;;-1:-1:-1;;;;;37132:8:19;;;;:21;;:30;;;;;:8;;:30;;;;;;;;:8;;:30;;;5:2:-1;;;;30:1;27;20:12;37312:147:19;37425:18;;37402:51::o;12546:205::-;12611:16;12723:21;-1:-1:-1;;;;;12723:19:19;:21;:::i;:::-;12716:28;12546:205;-1:-1:-1;;12546:205:19:o;13025:2047::-;13074:16;;13106:55;13118:42;-1:-1:-1;;;;;13106:11:19;:55;:::i;:::-;:59;13102:248;;;13191:3;:71;;-1:-1:-1;;;;;;13191:71:19;13219:42;13191:71;;;13276:38;;;;;;;;;;;;-1:-1:-1;;;13276:38:19;;;;;;-1:-1:-1;;;;;13276:23:19;:38;:::i;:::-;-1:-1:-1;13335:4:19;13328:11;;13102:248;13421:1;13363:55;13375:42;-1:-1:-1;;;;;13363:11:19;:55;:::i;:::-;:59;13359:257;;;13456:3;:71;;-1:-1:-1;;;;;;13456:71:19;13484:42;13456:71;;;13541:39;;;;;;;;;;;;-1:-1:-1;;;13541:39:19;;;;;;-1:-1:-1;;;;;13541:23:19;:39;:::i;13359:257::-;13687:1;13629:55;13641:42;-1:-1:-1;;;;;13629:11:19;:55;:::i;:::-;:59;13625:252;;;13720:3;:71;;-1:-1:-1;;;;;;13720:71:19;13748:42;13720:71;;;13805:36;;;;;;;;;;;;-1:-1:-1;;;13805:36:19;;;;;;-1:-1:-1;;;;;13805:23:19;:36;:::i;13625:252::-;13948:1;13890:55;13902:42;-1:-1:-1;;;;;13890:11:19;:55;:::i;:::-;:59;13886:256;;;13983:3;:71;;-1:-1:-1;;;;;;13983:71:19;14011:42;13983:71;;;14068:38;;;;;;;;;;;;-1:-1:-1;;;14068:38:19;;;;;;-1:-1:-1;;;;;14068:23:19;:38;:::i;13886:256::-;14213:1;14155:55;14167:42;-1:-1:-1;;;;;14155:11:19;:55;:::i;:::-;:59;14151:254;;;14247:3;:71;;-1:-1:-1;;;;;;14247:71:19;14275:42;14247:71;;;14332:37;;;;;;;;;;;;-1:-1:-1;;;14332:37:19;;;;;;-1:-1:-1;;;;;14332:23:19;:37;:::i;14151:254::-;14476:1;14418:55;14430:42;-1:-1:-1;;;;;14418:11:19;:55;:::i;:::-;:59;14414:204;;;-1:-1:-1;14511:3:19;:71;;-1:-1:-1;;;;;;14511:71:19;14539:42;14511:71;;;;14596:11;;14414:204;14689:1;14631:55;14643:42;-1:-1:-1;;;;;14631:11:19;:55;:::i;:::-;:59;14627:203;;;-1:-1:-1;14723:3:19;:71;;-1:-1:-1;;;;;;14723:71:19;14751:42;14723:71;;;;14808:11;;14627:203;14901:1;14843:55;14855:42;-1:-1:-1;;;;;14843:11:19;:55;:::i;:::-;:59;14839:205;;;-1:-1:-1;14937:3:19;:71;;-1:-1:-1;;;;;;14937:71:19;14965:42;14937:71;;;;15022:11;;14839:205;-1:-1:-1;15060:5:19;13025:2047;;:::o;12757:125::-;12838:37;;;;:21;;:37;;;;;:::i;:::-;;12757:125;:::o;1226:15469:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1226:15469:29;;;-1:-1:-1;1226:15469:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;","srcmap-runtime":"1226:15469:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5655:1150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5655:1150:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5655:1150:29;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5655:1150:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5655:1150:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5655:1150:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5655:1150:29;;;;;;;;-1:-1:-1;5655:1150:29;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5655:1150:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5655:1150:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5655:1150:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5655:1150:29;;-1:-1:-1;5655:1150:29;;-1:-1:-1;;;;;5655:1150:29:i;:::-;;2728:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2728:38:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2728:38:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:91:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;1514:105:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:27;;;:::i;:::-;;;;;;;;;;;;;;;;4925:173:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4925:173:29;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4925:173:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4925:173:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4925:173:29;;-1:-1:-1;4925:173:29;-1:-1:-1;4925:173:29;:::i;5186:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5186:184:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5186:184:29;;;;;;;;;;;;;;;;;:::i;4556:122::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4556:122:29;;:::i;3896:206::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:206:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3896:206:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3896:206:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3896:206:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;3896:206:29;;-1:-1:-1;3896:206:29;-1:-1:-1;3896:206:29;:::i;4212:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4212:173:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4212:173:29;;:::i;2169:95:22:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:22;;;:::i;5655:1150:29:-;5837:20;:18;:20::i;:::-;-1:-1:-1;;;;;5823:34:29;:10;-1:-1:-1;;;;;5823:34:29;;5815:69;;;;;-1:-1:-1;;;5815:69:29;;;;;;;;;;;;-1:-1:-1;;;5815:69:29;;;;;;;;;;;;;;;5958:13;5974:23;;;:13;:23;;;;;;-1:-1:-1;;;;;5974:23:29;;5958:13;6103:20;5974:23;6103:13;:20::i;:::-;6054:69;;;;;;;;;6141:9;6133:45;;;;;-1:-1:-1;;;6133:45:29;;;;;;;;;;;;-1:-1:-1;;;6133:45:29;;;;;;;;;;;;;;;6287:25;6257:68;;;;;;;;-1:-1:-1;;6257:68:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6189:10;;;;6257:68;;6270:7;;6279:6;;6257:68;;6287:25;;6257:68;;6287:25;6257:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6314:10;6257:12;:68::i;:::-;6236:89;;-1:-1:-1;6236:89:29;-1:-1:-1;6380:419:29;;;;6466:18;6487:42;6510:18;6520:7;6510:9;:18::i;:::-;6487:22;:42::i;:::-;6597:24;6697:23;;;:13;:23;;;;;6690:30;;-1:-1:-1;;;;;;6690:30:29;;;6466:63;-1:-1:-1;6624:9:29;6735:53;6752:5;6466:63;6624:9;6735:16;:53::i;:::-;6380:419;;;5655:1150;;;;;;;;:::o;2728:38::-;;;;;;;;;;;;;;;-1:-1:-1;;2728:38:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;;:::o;1514:105:27:-;1593:19;;1514:105;:::o;4925:173:29:-;1870:25:22;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;;;;5047:44:29;5069:9;5080:10;;5047:44;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5047:21:29;;-1:-1:-1;;;5047:44:29:i;:::-;4925:173;;;:::o;5186:184::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;5284:35:29;5298:3;5303:6;5311:7;5284:13;:35::i;:::-;5334:29;;;-1:-1:-1;;;;;5334:29:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;5186:184;;;:::o;4556:122::-;1870:25:22;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;;;;4643:28:29;4661:9;4643:17;:28::i;:::-;4556:122;:::o;3896:206::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;3993:38:29;:25;4021:10;;3993:38;:::i;:::-;-1:-1:-1;4046:49:29;;;4072:10;4046:49;;;;;;;;;;;;;;;;;4072:10;;4084;;;;4046:49;;;;4084:10;;;;4046:49;1:33:-1;99:1;81:16;;;74:27;4046:49:29;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;4046:49:29;;;;-1:-1:-1;4046:49:29;;-1:-1:-1;;;;;4046:49:29;3896:206;;:::o;4212:173::-;1870:25:22;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;;;;4292:37:29;4319:9;4292:26;:37::i;:::-;4344:34;;;4356:10;4344:34;;;;;;;;;;;;;;;;;;;;;4212:173;:::o;2169:95:22:-;2242:15;;2169:95;:::o;37176:130:19:-;11822:3;;37236:24;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;11846:11;:25::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;11893:19;:35::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;37279:8;;;;;;;;;-1:-1:-1;;;;;37279:8:19;-1:-1:-1;;;;;37279:18:19;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37279:20:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37279:20:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;37279:20:19;;-1:-1:-1;37176:130:19;:::o;2171:208:27:-;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:27;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:27;-1:-1:-1;;;;;2306:66:27;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:27;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:27;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:27;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:27;;420:4:-1;411:14;;;;2306:66:27;;;;;411:14:-1;2306:66:27;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:27;;-1:-1:-1;2306:66:27;;-1:-1:-1;2306:66:27;-1:-1:-1;2306:66:27;-1:-1:-1;2306:66:27;-1:-1:-1;2306:66:27;;-1:-1:-1;;;2171:208:27;;;;;;;;;:::o;12047:2267:29:-;12176:4;12182:7;1988:3;12246:6;:13;:27;12242:88;;12289:30;;;-1:-1:-1;;;12289:30:29;;;;;;;;;;;;-1:-1:-1;;;12289:30:29;;;;;;;;;;;;;;12242:88;2039:2;12441:6;12448:1;12441:9;;;;;;;;;;;;;;12427:43;12423:108;;12486:34;;;-1:-1:-1;;;12486:34:29;;;;;;;;;;;;;;;;;;;;;;;;;;;12423:108;12566:25;;;2039:2;12566:25;;;;;;;;;12541:22;;12566:25;;;21:6:-1;;104:10;12566:25:29;87:34:-1;135:17;;-1:-1;12566:25:29;12541:50;;12614;12624:6;12632:1;2039:2;12651:9;12662:1;12614:9;:50::i;:::-;12852:44;;12602:62;;-1:-1:-1;2137:49:29;;12852:6;;12859:36;;12852:44;;;;;;;;;;12776:40;;12852:44;;;;;;2568:3;;12776:6;;12783:32;;12776:40;;;;;;;;;;;;12762:73;:136;:164;12745:249;;12951:32;;;-1:-1:-1;;;12951:32:29;;;;;;;;;;;;-1:-1:-1;;;12951:32:29;;;;;;;;;;;;;;12745:249;13027:23;;;13004:20;13027:23;;;;;;;;;13004:20;13027:23;;;21:6:-1;;104:10;13027:23:29;87:34:-1;135:17;;-1:-1;;13004:46:29;-1:-1:-1;13070:81:29;13080:6;13088:36;2137:49;13004:46;13149:1;13070:9;:81::i;:::-;13060:91;;13249:48;13266:7;13275:9;13286:10;13249:16;:48::i;:::-;13244:107;;13313:27;;;-1:-1:-1;;;13313:27:29;;;;;;;;;;;;-1:-1:-1;;;13313:27:29;;;;;;;;;;;;;;13244:107;13426:13;;;13436:2;13426:13;;;;;;;;;13400:23;;13426:13;;;21:6:-1;;104:10;13426:13:29;87:34:-1;135:17;;-1:-1;13426:13:29;13400:39;;13532:41;13542:7;13551:2;13555;13559:10;13571:1;13532:9;:41::i;:::-;13519:54;;13584:14;13608:17;13660:44;13679:10;13692:11;13660;:44::i;:::-;13635:69;;-1:-1:-1;13635:69:29;-1:-1:-1;13635:69:29;13774:63;;13804:22;;;-1:-1:-1;;;13804:22:29;;;;;;;;;;;;-1:-1:-1;;;13804:22:29;;;;;;;;;;;;;;13774:63;13937:29;;;2292:2;13937:29;;;13915:19;13937:29;;;;;;;;;21:6:-1;;104:10;13937:29:29;87:34:-1;135:17;;-1:-1;;13915:51:29;-1:-1:-1;13985:65:29;13995:7;2419:33;2292:2;13915:51;14048:1;13985:9;:65::i;:::-;13976:74;;14141:21;14155:6;14141:13;:21::i;:::-;14131:32;;;;;;14092:33;14116:7;14099:25;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14099:25:29;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14099:25:29;;;14092:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14092::29;;;;;;;-1:-1:-1;263:2;;-1:-1;;14092:33:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14092:33:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14092:33:29;14075:51;;;14092:33;14075:51;;;;;;;;;26:21:-1;;;22:32;;6:49;;14075:51:29;;;;;;14065:62;;;;;:98;14061:163;;14179:34;;;-1:-1:-1;;;14179:34:29;;;;;;;;;;;;;;;;;;;;;;;;;;;14061:163;14239:34;14253:10;14265:7;14239:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14239:34:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14239:34:29;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14239:34:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14291:4:29;;14297:9;;-1:-1:-1;12047:2267:29;-1:-1:-1;;;;;;;;;12047:2267:29:o;6953:876::-;7016:13;7041:15;7076:5;7059:23;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7059:23:29;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7059:23:29;;;:30;7041:48;;7191:1;7181:7;:11;:28;;;;;7207:2;7196:7;:13;;7181:28;7173:59;;;;;-1:-1:-1;;;7173:59:29;;;;;;;;;;;;-1:-1:-1;;;7173:59:29;;;;;;;;;;;;;;;7269:12;;;7279:1;7269:12;;;;;;;;;7243:23;;7269:12;;;21:6:-1;;104:10;7269:12:29;87:34:-1;135:17;;-1:-1;7269:12:29;7243:38;;7291:55;7318:5;7301:23;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7301:23:29;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7301:23:29;;;7326:1;7329;7332:10;7344:1;7291:9;:55::i;:::-;-1:-1:-1;2701:20:29;;;-1:-1:-1;;;2701:20:29;;;;;;;;;;;;7364:21;;;;;;:37;7356:65;;;;;-1:-1:-1;;;7356:65:29;;;;;;;;;;;;-1:-1:-1;;;7356:65:29;;;;;;;;;;;;;;;7432:25;;:::i;:::-;7460:15;:5;:13;:15::i;:::-;7432:43;;7485:25;7496:13;:11;;;;;;;;;;;;;-1:-1:-1;;;7496:11:29;;;;:13::i;:::-;7485:4;;:25;:10;:25;:::i;:::-;;7619:4;:9;;;7609:19;;7638:25;7649:13;:11;;;;;;;;;;;;;-1:-1:-1;;;7649:11:29;;;;:13::i;:::-;7638:4;;:25;:10;:25;:::i;:::-;-1:-1:-1;7681:9:29;;-1:-1:-1;;7694:11:29;;7681:24;7673:52;;;;;-1:-1:-1;;;7673:52:29;;;;;;;;;;;;-1:-1:-1;;;7673:52:29;;;;;;;;;;;;;;;7807:15;:4;:13;:15::i;:::-;7800:22;;;;;6953:876;;;;:::o;1985:147:26:-;2065:7;2091:34;2111:9;2122:2;2091:19;:34::i;:::-;2084:41;1985:147;-1:-1:-1;;1985:147:26:o;3950:197:27:-;4063:32;4075:19;;4063:11;:32::i;:::-;-1:-1:-1;;;;;4047:65:27;;4113:6;4121:5;4128:11;4047:93;;;;;;;;;;;;;-1:-1:-1;;;;;4047:93:27;-1:-1:-1;;;;;4047:93:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4047:93:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4047:93:27;;;;3950:197;;;:::o;2332:158:22:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;-1:-1:-1;;;;;2419:54:22;;2474:8;2419:64;;;;;;;;;;;;;-1:-1:-1;;;;;2419:64:22;-1:-1:-1;;;;;2419:64:22;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:64:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:22;;2332:158;-1:-1:-1;;2332:158:22:o;9942:1778:29:-;10094:17;;10090:1624;;10180:39;;;;;;;;;;;;-1:-1:-1;;;10180:39:29;;;;;;-1:-1:-1;;;;;;;;;;;10180:39:29;;;;;;;;10090:1624;;;10363:21;10343:10;:17;10316:24;;;;;;;;;;;;;;-1:-1:-1;;;10316:24:29;;;:17;:24::i;:::-;:44;:68;10312:1402;;;10448:43;;;;;;;;;;;;-1:-1:-1;;;10448:43:29;;;;;;-1:-1:-1;;;;;;;;;;;10448:43:29;;;;;;;;10312:1402;;;10581:30;;:::i;:::-;10614:62;:60;;;;;;;;;;;;;;;;;;:62::i;:::-;10581:95;;10690:30;;:::i;:::-;10723:32;:30;;;;;;;;;;;;;-1:-1:-1;;;10723:30:29;;;;:32::i;:::-;10690:65;-1:-1:-1;10844:9:29;10839:865;10863:10;:17;10859:1;:21;10839:865;;;10963:25;10994:14;11018:28;11032:10;11043:1;11032:13;;;;;;;;;;;;;;11018;:28::i;:::-;10962:84;;;;;;;;;11072:9;11064:45;;;;;-1:-1:-1;;;11064:45:29;;;;;;;;;;;;-1:-1:-1;;;11064:45:29;;;;;;;;;;;;;;;11188:27;;:::i;:::-;11218:21;:11;:19;:21::i;:::-;11188:51;;11332:15;11350:86;;;;;;;;;;;;;;-1:-1:-1;;;11350:86:29;;;11372:52;11414:9;11372:34;:24;11389:6;11372:9;:16;;:24;;;;:::i;:::-;:32;:34::i;:::-;:41;:52;:41;:52;:::i;:::-;11426:9;11350:14;:86::i;:::-;11332:104;;11561:10;11572:1;11561:13;;;;;;;;;;;;;;11536;:22;11550:7;11536:22;;;;;;;;;;;;:38;;;;;-1:-1:-1;;;;;11536:38:29;;;;;-1:-1:-1;;;;;11536:38:29;;;;;;11646:43;11662:17;:6;:15;:17::i;:::-;11681:7;11646:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11646:43:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10882:3:29;;;;;-1:-1:-1;10839:865:29;;-1:-1:-1;10839:865:29;;;10312:1402;;;9942:1778;;:::o;2554:148:22:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:22;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:22;-1:-1:-1;;;;;2636:59:22;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1366:289:28;-1:-1:-1;;;;;1510:20:28;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:28;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:28;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:28;;1625:3;1630:7;1598:40;:26;:40;:::i;8000:1670:29:-;8064:31;8098:20;:18;:20::i;:::-;8064:54;;8183:14;:21;8208:1;8183:26;8179:1485;;;8273:32;;;;;;;;;;;;-1:-1:-1;;;8273:32:29;;;;;;-1:-1:-1;;;;;;;;;;;8273:32:29;;;;;;;;8179:1485;;;8453:21;8429:14;:21;8402:24;;;;;;;;;;;;;;-1:-1:-1;;;8402:24:29;;;:17;:24::i;:::-;:48;:72;8398:1266;;;8538:43;;;;;;;;;;;;-1:-1:-1;;;8538:43:29;;;;;;-1:-1:-1;;;;;;;;;;;8538:43:29;;;;;;;;8398:1266;;;8671:30;;:::i;:::-;8704:62;:60;;;;;;;;;;;;;;;;;;:62::i;:::-;8671:95;;8780:30;;:::i;:::-;8813:32;:30;;;;;;;;;;;;;-1:-1:-1;;;8813:30:29;;;;:32::i;:::-;8780:65;-1:-1:-1;8934:9:29;8929:725;8953:14;:21;8949:1;:25;8929:725;;;9061:20;9097:32;9111:14;9126:1;9111:17;;;;;;;9097:32;9060:69;;;;;;;;9148:24;;:::i;:::-;9175:16;:6;:14;:16::i;:::-;9148:43;;9284:15;9302:83;;;;;;;;;;;;;;-1:-1:-1;;;9302:83:29;;;9324:49;9363:9;9324:31;:21;9341:3;9324:9;:16;;:21;;;;:::i;:49::-;9375:9;9302:14;:83::i;:::-;9284:101;;9510:14;9525:1;9510:17;;;;;;;;;;;;;;9485:13;:22;9499:7;9485:22;;;;;;;;;;;;:42;;;;;-1:-1:-1;;;;;9485:42:29;;;;;-1:-1:-1;;;;;9485:42:29;;;;;;9599:40;9615:14;:3;:12;:14::i;:::-;9631:7;9599:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9599:40:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8976:3:29;;8929:725;;37465:134:19;11822:3;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;11846:11;:25::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;11893:19;:35::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;37555:8;;:37;;;-1:-1:-1;;;37555:37:19;;;;;;;;;;-1:-1:-1;;;;;37555:8:19;;;;:26;;:37;;;;;:8;;:37;;;;;;;;:8;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;37555:37:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;37312:147:19;37425:18;;37402:51::o;12546:205::-;12611:16;12723:21;:19;:21::i;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;54300:693:19;54428:25;54465:14;54492:9;54482:7;:19;54465:36;;54533:9;54519:3;:10;:23;;54511:32;;;;;;54607:2;:16;;;;54723:14;;54747:220;54778:7;54764:11;54759:2;:16;:26;54754:1;:32;54747:220;;;54846:13;;;54840:20;54884:11;;;54877:24;54933:2;54928:7;;;;54949;54747:220;;;-1:-1:-1;54983:3:19;;54300:693;-1:-1:-1;;;;;;;54300:693:19:o;14571:411:29:-;14687:4;14703:14;14727:16;14845:40;14856:16;14863:8;14856:16;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14856:16:29;;;;;;;-1:-1:-1;263:2;;-1:-1;;14856:16:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14856:16:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14856:16:29;14874:10;14845;:40::i;:::-;14821:64;-1:-1:-1;14821:64:29;-1:-1:-1;14821:64:29;14902:73;;;;-1:-1:-1;14951:21:29;;;;;;-1:-1:-1;;;;;14917:58:29;;;;;;14902:73;14895:80;;;;14571:411;;;;;;:::o;15212:1481::-;15303:4;15309:7;15434:11;15417:29;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15417:29:29;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15417:29:29;;;:36;15457:2;15417:42;15410:50;;;;15540:25;;:::i;:::-;15568:21;:11;:19;:21::i;:::-;15540:49;;15599:34;;:::i;:::-;15636:13;:11;;;;;;;;;;;;;-1:-1:-1;;;15636:11:29;;;;:13::i;:::-;15599:50;;15659:34;;:::i;:::-;15696:13;:11;;;;;;;;;;;;;-1:-1:-1;;;15696:11:29;;;;:13::i;:::-;15659:50;-1:-1:-1;15720:11:29;15734:57;15754:36;:25;:4;15659:50;15754:25;:10;:25;:::i;:::-;:34;:36::i;:::-;15734:19;:57::i;:::-;15720:71;;15815:1;15809:3;:7;:19;;;;;15826:2;15820:3;:8;15809:19;15801:41;;;;;-1:-1:-1;;;15801:41:29;;;;;;;;;;;;-1:-1:-1;;;15801:41:29;;;;;;;;;;;;;;;15853:13;15869:52;15884:36;:25;:4;15895:13;15884:25;:10;:25;:::i;:36::-;15869:14;:52::i;:::-;15853:68;;;;15947:1;15939:5;:9;:23;;;;;15960:2;15952:5;:10;15939:23;15931:47;;;;;-1:-1:-1;;;15931:47:29;;;;;;;;;;;;-1:-1:-1;;;15931:47:29;;;;;;;;;;;;;;;15989:12;16004:57;16024:36;:25;:4;16035:13;16024:25;:10;:25;:::i;16004:57::-;15989:72;;16086:4;16079;:11;:26;;;;;16101:4;16094;:11;16079:26;16071:49;;;;;-1:-1:-1;;;16071:49:29;;;;;;;;;;;;-1:-1:-1;;;16071:49:29;;;;;;;;;;;;;;;16131:12;16146:57;16166:36;:25;:4;16177:13;16166:25;:10;:25;:::i;16146:57::-;16131:72;;16228:2;16221:4;:9;16213:32;;;;;-1:-1:-1;;;16213:32:29;;;;;;;;;;;;-1:-1:-1;;;16213:32:29;;;;;;;;;;;;;;;16256:14;16273:57;16293:36;:25;:4;16304:13;16293:25;:10;:25;:::i;16273:57::-;16256:74;;16357:2;16348:6;:11;16340:36;;;;;-1:-1:-1;;;16340:36:29;;;;;;;;;;;;-1:-1:-1;;;16340:36:29;;;;;;;;;;;;;;;16387:14;16404:57;16424:36;:25;:4;16435:13;16424:25;:10;:25;:::i;16404:57::-;16387:74;;16488:2;16479:6;:11;16471:36;;;;;-1:-1:-1;;;16471:36:29;;;;;;;;;;;;-1:-1:-1;;;16471:36:29;;;;;;;;;;;;;;;16518:17;16626:6;16607;16617:5;16607:16;16590:4;16598:5;16590:14;16574:3;16581:5;16574:13;16556:5;16565;16556:15;16538:4;16546:6;16538:15;:33;:49;:66;:85;:94;16518:114;;16663:11;16651:9;:23;16676:9;16643:43;;;;;;;;;;;;;;15212:1481;;;;;;:::o;676:1848:5:-;745:12;769:7;786;803;820;837:11;851:8;:15;837:29;;876:19;908:6;898:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;898:17:5;87:34:-1;135:17;;-1:-1;898:17:5;;876:39;;925:10;1046:1;1037:6;:10;:30;;;;-1:-1:-1;1061:1:5;1052:6;:10;:15;1037:30;1029:66;;;;;-1:-1:-1;;;1029:66:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1163:14;;;-1:-1:-1;;;1163:14:5;;;;;;;;;;;;1137:20;;:8;;-1:-1:-1;;1146:10:5;;;1137:20;;;;;;;;;;;;1120:38;;;-1:-1:-1;;;;;;1137:20:5;;;1120:38;;;;;;26:21:-1;;;1120:38:5;22:32:-1;6:49;;1120:38:5;;;;;;1110:49;;;;;:67;1106:224;;;1203:1;1193:11;;;;1106:224;;;1278:14;;;-1:-1:-1;;;1278:14:5;;;;;;;;;;;;1252:20;;:8;;-1:-1:-1;;1261:10:5;;;1252:20;;;;;;;;;;;;1235:38;;;-1:-1:-1;;;;;;1252:20:5;;;1235:38;;;;;;26:21:-1;;;1235:38:5;22:32:-1;6:49;;1235:38:5;;;;;;1225:49;;;;;:67;1221:109;;;1318:1;1308:11;;;;1221:109;-1:-1:-1;;1353:16:5;;1340:10;1396:441;1412:5;1408:1;:9;1396:441;;;1439:18;;;;;;;;;;;;;;;;;1464:13;;1473:3;;;;1464:8;;:13;;;;;;;;;;1439:40;;1464:13;;;;;;1439:40;;;;;;;;;;;;;;1434:45;;1498:18;;;;;;;;;;;;;;;;;1523:13;;1532:3;;;;1523:8;;:13;;;;;;;;;;1498:40;;1523:13;;;;;;1498:40;;;;;;;;;;;;;;1493:45;;1557:18;;;;;;;;;;;;;;;;;1582:13;;1591:3;;;;1582:8;;:13;;;;;;;;;;1557:40;;1582:13;;;;;;1557:40;;;;;;;;;;;;;;1552:45;;1616:18;;;;;;;;;;;;;;;;;1641:13;;1650:3;;;;1641:8;;:13;;;;;;;;;;1616:40;;1641:13;;;;;;1616:40;;;;;;;;;;1671:15;;-1:-1:-1;;;;;;1616:40:5;;;;-1:-1:-1;1678:7:5;;;;-1:-1:-1;;;1696:1:5;1690:7;;;;-1:-1:-1;;;1706:1:5;1700:7;;;;1690:17;1689:26;;;;1671:6;;:15;;;;;;;;;:44;-1:-1:-1;;;;;1671:44:5;;;;;;;;-1:-1:-1;1729:15:5;;1736:7;;;;-1:-1:-1;;;1754:1:5;1748:7;;;;-1:-1:-1;;;1764:1:5;1758:7;;;;1748:17;-1:-1:-1;;;;;;1747:26:5;;1729:6;;1736:7;1729:15;;;;;;;;;:44;-1:-1:-1;;;;;1729:44:5;;;;;;;;-1:-1:-1;1787:15:5;;1794:7;;;;-1:-1:-1;;;1812:1:5;1806:7;;;;:12;;-1:-1:-1;;;;;;1805:21:5;;1787:6;;1794:7;1787:15;;;;;;;;;:39;-1:-1:-1;;;;;1787:39:5;;;;;;;;;1396:441;;;1860:5;1851:6;:14;1869:1;1851:19;1847:549;;;1891:18;;;;;;;;;;;;;;;;;1916:13;;1925:3;;;;1916:8;;:13;;;;;;;;;;1891:40;;1916:13;;;;;;1891:40;;;;;;;;;;;;;;1886:45;;1950:18;;;;;;;;;;;;;;;;;1975:13;;1984:3;;;;1975:8;;:13;;;;;;;;;;1950:40;;1975:13;;;;;;1950:40;;;;;;;;;;;;;;1945:45;;2040:1;2034:2;-1:-1:-1;;;;;2034:7:5;;;;2030:1;2024:2;-1:-1:-1;;;;;2024:7:5;;;;:17;2045:4;2023:26;;;2005:6;2012:7;;;;;;2005:15;;;;;;;;;;;:44;-1:-1:-1;;;;;2005:44:5;;;;;;;;;1847:549;;;2079:5;2070:6;:14;2088:1;2070:19;2066:330;;;2110:18;;;;;;;;;;;;;;;;;2135:13;;2144:3;;;;2135:8;;:13;;;;;;;;;;2110:40;;2135:13;;;;;;2110:40;;;;;;;;;;;;;;2105:45;;2169:18;;;;;;;;;;;;;;;;;2194:13;;2203:3;;;;2194:8;;:13;;;;;;;;;;2169:40;;2194:13;;;;;;2169:40;;;;;;;;;;;;;;2164:45;;2228:18;;;;;;;;;;;;;;;;;2253:13;;2262:3;;;;2253:8;;:13;;;;;;;;;;2228:40;;2253:13;;;;;;2228:40;;;;;;;;;;2283:15;;-1:-1:-1;;;;;;2228:40:5;;;;-1:-1:-1;2290:7:5;;;;-1:-1:-1;;;2308:1:5;2302:7;;;;-1:-1:-1;;;2318:1:5;2312:7;;;;2302:17;2301:26;;;;2283:6;;:15;;;;;;;;;:44;-1:-1:-1;;;;;2283:44:5;;;;;;;;-1:-1:-1;2341:15:5;;2348:7;;;;-1:-1:-1;;;2366:1:5;2360:7;;;;-1:-1:-1;;;2376:1:5;2370:7;;;;2360:17;-1:-1:-1;;;;;;2359:26:5;;2341:6;;2348:7;2341:15;;;;;;;;;:44;-1:-1:-1;;;;;2341:44:5;;;;;;;;;2066:330;-1:-1:-1;;2463:21:5;;;676:1848;-1:-1:-1;;;;;;;676:1848:5:o;3433:210:20:-;3493:12;;:::i;:::-;-1:-1:-1;3606:30:20;;;;;;;;;3612:18;;3606:30;;3575:4;3565:15;;;3606:30;;;;3433:210;;;:::o;21523:141::-;21601:18;;:::i;:::-;21631:26;21637:4;21643:6;21651:5;21631;:26::i;:::-;;21523:141;;;;:::o;15171:626::-;15249:12;;:::i;:::-;15289:11;;15277:9;;:23;15273:65;;;-1:-1:-1;15323:4:20;15316:11;;15273:65;15387:11;;15375:9;;15363;;;;;15450:11;;;;15363:21;;:35;;;;;15421:4;;15439:22;;15435:264;;-1:-1:-1;15518:13:20;;15583:4;15571:17;;15565:24;15646:28;;;15618:26;;;15615:60;15486:203;15713:5;15709:60;;;15747:11;;15734:24;;;;;15709:60;-1:-1:-1;15786:4:20;;15171:626;-1:-1:-1;;;15171:626:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;2339:6150:26:-;2440:7;2488:9;2440:7;;;;;;;;;;;3330:2783;3346:7;:14;3342:1;:18;3330:2783;;;3386:10;;-1:-1:-1;;;1308:17:26;3386:7;;3394:1;;3386:10;;;;;;;;;;-1:-1:-1;;;;;;3386:10:26;:25;;;;3385:58;;-1:-1:-1;3417:10:26;;-1:-1:-1;;;1392:17:26;3417:7;;3425:1;;3417:10;;;;;;;;;;-1:-1:-1;;;;;;3417:10:26;:25;;3385:58;:68;;;;;3449:3;3448:4;3385:68;3381:2722;;;3554:8;3550:625;;;3700:15;:7;3712:2;3700:15;:11;:15;:::i;:::-;3690:25;;3747:51;1321:2;1308:17;;3779:18;;3765:7;3773:1;3765:10;;;;;;;;;;;;3747:7;;3765:10;;;;;3759:38;:17;3747:51;;:11;:51;:::i;:::-;3737:61;-1:-1:-1;3820:11:26;;;;;3550:625;;;3969:4;;-1:-1:-1;4067:12:26;:4;4076:2;4067:12;:8;:12;:::i;:::-;4060:19;;4108:48;1321:2;1308:17;;4137:18;;4123:7;4131:1;4123:10;;;;;;;;;;;;4108:4;;4123:10;;;;;4117:38;:17;4108:48;;:8;:48;:::i;:::-;4101:55;;3550:625;3381:2722;;;4200:10;;-1:-1:-1;;;1308:17:26;4200:7;;4208:1;;4200:10;;;;;;;;;;-1:-1:-1;;;;;;4200:10:26;:25;;;;4199:58;;-1:-1:-1;4231:10:26;;-1:-1:-1;;;1392:17:26;4231:7;;4239:1;;4231:10;;;;;;;;;;-1:-1:-1;;;;;;4231:10:26;:25;;4199:58;:67;;;;;4262:3;4199:67;4195:1908;;;4379:15;:7;4391:2;4379:15;:11;:15;:::i;:::-;4369:25;;4422:51;1321:2;1308:17;;4454:18;;4440:7;4448:1;4440:10;;;;;;;;;;;;4422:7;;4440:10;;;;;4434:38;:17;4422:51;;:11;:51;:::i;:::-;4412:61;;4195:1908;;;4498:10;;-1:-1:-1;;;1224:17:26;4498:7;;4506:1;;4498:10;;;;;;;;;;-1:-1:-1;;;;;;4498:10:26;:24;4494:1609;;;4623:8;4615:42;;;;;-1:-1:-1;;;4615:42:26;;;;;;;;;;;;-1:-1:-1;;;4615:42:26;;;;;;;;;;;;;;;4751:8;4750:9;4742:45;;;;;-1:-1:-1;;;4742:45:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;4887:3;4886:4;4878:39;;;;;-1:-1:-1;;;4878:39:26;;;;;;;;;;;;-1:-1:-1;;;4878:39:26;;;;;;;;;;;;;;;4946:4;4935:15;;4494:1609;;;4975:10;;-1:-1:-1;;;1141:17:26;4975:7;;4983:1;;4975:10;;;;;;;;;;-1:-1:-1;;;;;;4975:10:26;:25;4971:1132;;;5103:5;5102:6;5094:30;;;;;-1:-1:-1;;;5094:30:26;;;;;;;;;;;;-1:-1:-1;;;5094:30:26;;;;;;;;;;;;;;;5151:4;5150:5;5142:28;;;;;-1:-1:-1;;;5142:28:26;;;;;;;;;;;;-1:-1:-1;;;5142:28:26;;;;;;;;;;;;;;;5212:1;5196:8;5207:1;5196:12;:17;5188:60;;;;;-1:-1:-1;;;5188:60:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;5274:4;5266:12;;4971:1132;;;5303:10;;-1:-1:-1;;;1057:17:26;5303:7;;5311:1;;5303:10;;;;;;;;;;-1:-1:-1;;;;;;5303:10:26;:25;5299:804;;;5431:4;5430:5;5422:29;;;;;-1:-1:-1;;;5422:29:26;;;;;;;;;;;;-1:-1:-1;;;5422:29:26;;;;;;;;;;;;;;;5478:5;5477:6;5469:29;;;;;-1:-1:-1;;;5469:29:26;;;;;;;;;;;;-1:-1:-1;;;5469:29:26;;;;;;;;;;;;;;;5540:1;5524:8;5535:1;5524:12;:17;5516:60;;;;;-1:-1:-1;;;5516:60:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;5601:4;5594:11;;5299:804;;;5631:10;;-1:-1:-1;;;1473:17:26;5631:7;;5639:1;;5631:10;;;;;;;;;;-1:-1:-1;;;;;;5631:10:26;:22;;5630:62;;-1:-1:-1;5659:10:26;;-1:-1:-1;;;1564:18:26;5659:7;;5667:1;;5659:10;;;;;;;;;;-1:-1:-1;;;;;;5659:10:26;:32;5630:62;5626:477;;;5793:8;5785:42;;;;;-1:-1:-1;;;5785:42:26;;;;;;;;;;;;-1:-1:-1;;;5785:42:26;;;;;;;;;;;;;;;5935:3;5934:4;5926:42;;;;;-1:-1:-1;;;5926:42:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;5992:4;5986:10;;6025:1;6014:12;;5626:477;;;6065:23;;;-1:-1:-1;;;6065:23:26;;;;;;;;;;;;-1:-1:-1;;;6065:23:26;;;;;;;;;;;;;;5626:477;3362:3;;3330:2783;;;6127:5;:13;;;;6136:4;6127:13;6123:267;;;6236:8;6247:1;6236:12;6232:1;:16;6224:25;;;;;;6123:267;;;6270:3;6266:124;;;6366:8;6377:1;6366:12;6362:1;:16;6354:25;;;;;;6404:5;6400:883;;;6462:14;6451:7;:25;6447:597;;6695:2;6678:14;6668:7;:24;:29;6660:55;;;;;-1:-1:-1;;;6660:55:26;;;;;;;;;;;;-1:-1:-1;;;6660:55:26;;;;;;;;;;;;;;;6759:14;6749:7;:24;6744:2;:30;6736:38;;;;;;;;-1:-1:-1;6792:11:26;;-1:-1:-1;;;;;;;;;;;;6792:11:26;6447:597;7022:7;7005:14;:24;6988:41;;6400:883;;;7245:27;:14;7264:7;7245:27;:18;:27;:::i;:::-;7228:44;;6400:883;7315:9;7297:14;:27;7293:1169;;7565:2;7553:9;:14;7545:61;;;;-1:-1:-1;;;7545:61:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7630:25;:4;7639:2;:15;;;7630:25;:8;:25;:::i;:::-;7623:32;-1:-1:-1;7676:17:26;7623:32;7685:7;7676:17;:8;:17;:::i;:::-;7669:24;;7830:2;7818:9;7801:14;:26;:31;7793:57;;;;;-1:-1:-1;;;7793:57:26;;;;;;;;;;;;-1:-1:-1;;;7793:57:26;;;;;;;;;;;;;;;7874:42;7905:9;7888:14;:26;7883:2;:32;7874:4;:8;;:42;;;;:::i;:::-;7867:49;;7293:1169;;;8087:14;8074:27;;;;8135:2;8123:9;:14;8115:61;;;;-1:-1:-1;;;8115:61:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8209:9;8204:2;:15;8193:26;;;;;;;;;8318:2;8301:14;:19;8293:66;;;;-1:-1:-1;;;8293:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8383:30;8397:14;8392:2;:20;8383:4;:8;;:30;;;;:::i;:::-;8376:37;-1:-1:-1;8434:17:26;8376:37;8443:7;8434:17;:8;:17;:::i;:::-;8427:24;;7293:1169;-1:-1:-1;8478:4:26;;2339:6150;-1:-1:-1;;;;;;;;;;;;;2339:6150:26:o;15628:156:19:-;11822:3;;15712:16;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;11846:11;:25::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;11893:19;:35::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;15747:8;;:30;;-1:-1:-1;;;15747:30:19;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15747:8:19;;;;:17;;15765:11;;15747:30;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15747:30:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15747:30:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;24579:355:20;24657:13;24682:17;24725:5;:10;;;24713:4;:9;;;:22;24702:34;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;24702:34:20;87::-1;135:17;;-1:-1;24702:34:20;;24682:54;;24746:11;24797:2;24792:3;24788:12;24778:22;;24811:36;24818:6;24826:4;:9;;;24837:4;:9;;;24811:6;:36::i;:::-;24873:9;;24884:10;;;;24896;;24857:50;;24864:18;;;24884:10;24857:6;:50::i;:::-;-1:-1:-1;24924:3:20;24579:355;-1:-1:-1;;;24579:355:20:o;17161:406:19:-;11822:3;;17278:11;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;11846:11;:25::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;11893:19;:35::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;17314:8;;:41;;;-1:-1:-1;;;17314:41:19;;;;;;;;;;;;;;;;;;;;;;17301:10;;-1:-1:-1;;;;;17314:8:19;;:17;;17332:11;;17345:9;;17314:41;;;;;;;;;;;;;;;17301:10;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17314:41:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17314:41:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17314:41:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17314:41:19;;-1:-1:-1;17377:7:19;17387:11;:23;;17377:33;17369:41;;17365:106;;;-1:-1:-1;17432:1:19;;-1:-1:-1;17425:8:19;;17365:106;17487:8;;:73;;-1:-1:-1;;;17487:73:19;;:8;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17487:8:19;;;;:27;;17521:5;;17487:8;17531:11;;17544:4;;17550:9;;17487:73;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17487:73:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17487:73:19;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17487:73:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17487:73:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17487:73:19;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17487:73:19;;17161:406;-1:-1:-1;;;;;17161:406:19:o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;1884:18;:85::i;3220:164:27:-;3273:16;3324:32;3336:19;;3324:11;:32::i;:::-;-1:-1:-1;;;;;3308:67:27;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:69:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3308:69:27;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3308:69:27;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3308:69:27;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3308:69:27;;421:4:-1;412:14;;;;3308:69:27;;;;;412:14:-1;3308:69:27;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3308:69:27;;;;;;;;;;;3301:76;;3220:164;:::o;13025:2047:19:-;13074:16;13164:1;13106:55;13118:42;13106:11;:55::i;:::-;:59;13102:248;;;13191:3;:71;;-1:-1:-1;;;;;;13191:71:19;13219:42;13191:71;;;13276:38;;;;;;;;;;;;-1:-1:-1;;;13276:38:19;;;;;;:23;:38::i;:::-;-1:-1:-1;13335:4:19;13328:11;;13102:248;13421:1;13363:55;13375:42;13363:11;:55::i;:::-;:59;13359:257;;;13456:3;:71;;-1:-1:-1;;;;;;13456:71:19;13484:42;13456:71;;;13541:39;;;;;;;;;;;;-1:-1:-1;;;13541:39:19;;;;;;:23;:39::i;13359:257::-;13687:1;13629:55;13641:42;13629:11;:55::i;:::-;:59;13625:252;;;13720:3;:71;;-1:-1:-1;;;;;;13720:71:19;13748:42;13720:71;;;13805:36;;;;;;;;;;;;-1:-1:-1;;;13805:36:19;;;;;;:23;:36::i;13625:252::-;13948:1;13890:55;13902:42;13890:11;:55::i;:::-;:59;13886:256;;;13983:3;:71;;-1:-1:-1;;;;;;13983:71:19;14011:42;13983:71;;;14068:38;;;;;;;;;;;;-1:-1:-1;;;14068:38:19;;;;;;:23;:38::i;13886:256::-;14213:1;14155:55;14167:42;14155:11;:55::i;:::-;:59;14151:254;;;14247:3;:71;;-1:-1:-1;;;;;;14247:71:19;14275:42;14247:71;;;14332:37;;;;;;;;;;;;-1:-1:-1;;;14332:37:19;;;;;;:23;:37::i;14151:254::-;14476:1;14418:55;14430:42;14418:11;:55::i;:::-;:59;14414:204;;;-1:-1:-1;14511:3:19;:71;;-1:-1:-1;;;;;;14511:71:19;14539:42;14511:71;;;;14596:11;;14414:204;14689:1;14631:55;14643:42;14631:11;:55::i;:::-;:59;14627:203;;;-1:-1:-1;14723:3:19;:71;;-1:-1:-1;;;;;;14723:71:19;14751:42;14723:71;;;;14808:11;;14627:203;14901:1;14843:55;14855:42;14843:11;:55::i;:::-;:59;14839:205;;;-1:-1:-1;14937:3:19;:71;;-1:-1:-1;;;;;;14937:71:19;14965:42;14937:71;;;;15022:11;;14839:205;-1:-1:-1;15060:5:19;13025:2047;:::o;56301:1544::-;56373:13;56388:25;56425:9;56444;56463:7;56484:4;:11;56499:2;56484:17;56480:74;;-1:-1:-1;56525:5:19;;-1:-1:-1;56525:5:19;;-1:-1:-1;56517:26:19;;-1:-1:-1;;56517:26:19;56480:74;-1:-1:-1;;;56781:2:19;56771:13;;56765:20;56819:2;56809:13;;56803:20;57101:2;57091:13;;57085:20;57082:1;57077:29;57671:2;57667:6;;57663:44;;;57694:2;57689:7;57663:44;57720:1;:7;;57725:2;57720:7;;:18;;;;;57731:1;:7;;57736:2;57731:7;;57720:18;57716:75;;;-1:-1:-1;57762:5:19;;-1:-1:-1;57762:5:19;;-1:-1:-1;57754:26:19;;-1:-1:-1;;57754:26:19;57716:75;57807:31;57823:5;57830:1;57833;57836;57807:15;:31::i;:::-;57800:38;;;;;;;56301:1544;;;;;:::o;1734:143:26:-;1811:7;1837:33;1857:9;1868:1;1837:19;:33::i;1769:942:23:-;1838:5;1855:13;1898:6;1881:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1881:24:23;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1881:24:23;;;1871:35;;;;;;1855:51;;983:16;;;;-1:-1:-1;;;983:16:23;;;;;;;;;;;;;;1920:5;:17;1916:789;;;1960:1;1953:8;;;;;1916:789;1042:16;;;-1:-1:-1;;;1042:16:23;;;;;;;;;;;;1982:18;;1978:727;;;2023:1;2016:8;;;;;1978:727;1098:16;;;-1:-1:-1;;;1098:16:23;;;;;;;;;;;;2045:15;;2041:664;;;2083:1;2076:8;;;;;2041:664;1154:16;;;-1:-1:-1;;;1154:16:23;;;;;;;;;;;;2105:15;;2101:604;;;2143:1;2136:8;;;;;2101:604;1208:16;;;-1:-1:-1;;;1208:16:23;;;;;;;;;;;;2165:13;;2161:544;;;2201:1;2194:8;;;;;2161:544;1263:16;;;-1:-1:-1;;;1263:16:23;;;;;;;;;;;;2223:14;;2219:486;;;2260:1;2253:8;;;;;2219:486;1318:16;;;-1:-1:-1;;;1318:16:23;;;;;;;;;;;;2282:14;;2278:427;;;2319:1;2312:8;;;;;2278:427;1375:16;;;-1:-1:-1;;;1375:16:23;;;;;;;;;;;;2341;;2337:368;;;2380:1;2373:8;;;;;2337:368;1435:16;;;-1:-1:-1;;;1435:16:23;;;;;;;;;;;;2402:19;;2398:307;;;2444:1;2437:8;;;;;2398:307;1493:16;;;-1:-1:-1;;;1493:16:23;;;;;;;;;;;;2466:17;;2462:243;;;2506:2;2499:9;;;;;2462:243;1552:16;;;-1:-1:-1;;;1552:16:23;;;;;;;;;;;;2529:18;;2525:180;;;2570:2;2563:9;;;;;2525:180;1611:16;;;-1:-1:-1;;;1611:16:23;;;;;;;;;;;;2593:18;;2589:116;;;2634:2;2627:9;;;;;2589:116;2667:27;;;-1:-1:-1;;;2667:27:23;;;;;;;;;;;;-1:-1:-1;;;2667:27:23;;;;;;;;;;;;;;20548:504:20;20646:12;;:::i;:::-;20670:8;20681:55;20689:4;:9;;;20700:4;:9;;;20711:6;:11;;;20724:6;:11;;;20681:7;:55::i;:::-;20759:9;;;;;;20746:10;;;:22;;;;20797:9;;20791:15;;20778:28;;20839:9;;20827;;20670:66;;-1:-1:-1;20827:21:20;20820:28;;20816:208;;;20901:1;20889:13;;20816:208;;;20959:11;;20946:10;;20933:37;;20946:24;;20933:37;;;;21002:11;;20996:17;;20984:9;;;:29;20816:208;-1:-1:-1;21040:5:20;;20548:504;-1:-1:-1;;;20548:504:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1693:458:4:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:4;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;834:176;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095:3;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;12757:125:19:-;12838:37;;;;:21;;:37;;;;;:::i;55192:982::-;55284:13;55299:25;55730:8;55748:12;55811:4;55805:11;55842:5;55836:4;55829:19;55883:2;55878;55872:4;55868:13;55861:25;55921:2;55916;55910:4;55906:13;55899:25;55959:2;55954;55948:4;55944:13;55937:25;56016:2;56010:4;56005:3;55999:4;55996:1;55993;55987:4;55982:37;56119:11;;;;;;-1:-1:-1;55192:982:19;-1:-1:-1;;;;;;;55192:982:19:o;15954:1372:20:-;16053:4;16080:7;16053:4;16120:20;;;16116:1170;;16173:2;16160:9;:15;16156:1120;;16337:16;;16497:10;;-1:-1:-1;;16226:1:20;16231:2;:14;;;16226:20;16220:1;:27;:31;16218:34;;16333:27;;;16391:17;;;:29;;;;16493:21;;16534:228;16552:10;16541:7;:21;16534:228;;16597:3;16590;:10;16586:64;;16643:7;16633;:17;16626:24;;;;;;;;;;16586:64;-1:-1:-1;16672:5:20;;;;16725:10;;16672:5;;-1:-1:-1;16721:21:20;;16708:36;;;16786:3;16779:10;;;;;;;;;;16156:1120;-1:-1:-1;16926:31:20;;;16877:12;;16977:285;17008:9;16998:7;:19;16991:3;:26;16977:285;;17109:25;;;17161:16;;;17157:56;;;17210:3;17203:10;;;;;;;;17157:56;-1:-1:-1;17242:1:20;17235:8;;;;17019:5;;;;;16977:285;;;16156:1120;;-1:-1:-1;;;17302:17:20;;;15954:1372;;;;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1226:15469:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1226:15469:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1226:15469:29;;;-1:-1:-1;1226:15469:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","srcmap":"1939:14907:30:-;;;1122:66:22;1272:58;;4758:506:30;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:30;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:30;;;;;1665:30:22;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:30;:26;;;;-1:-1:-1;4995:11:30;:33;;-1:-1:-1;;;;;4995:33:30;;;-1:-1:-1;;;;;;4995:33:30;;;;;;;;;-1:-1:-1;5083:18:30;:28;;;:35;;-1:-1:-1;;5083:35:30;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:30;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:30;-1:-1:-1;;;;;;16070:136:30;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:30;-1:-1:-1;;;;;13314:334:30;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;-1:-1:-1;6040:1806:30;-1:-1:-1;6040:1806:30;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:30;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:30;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:30;;-1:-1:-1;;;;;15695:220:30;;;;;-1:-1:-1;;;;;;15695:220:30;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:30;;-1:-1:-1;7973:1237:30;-1:-1:-1;7973:1237:30;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:30;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:30;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:30;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:30;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:30;;-1:-1:-1;9368:1399:30;-1:-1:-1;9368:1399:30;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:30;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:30;;;;;;;;;;;;;:::i;2169:95:22:-;;;:::i;16551:89:30:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:30;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:30;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:30;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;6389:33:30;;;:88;;;;-1:-1:-1;6442:35:30;;;6389:88;:142;;;;-1:-1:-1;6497:34:30;;;6389:142;:196;;;;-1:-1:-1;6551:34:30;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:30;6841:25;;-1:-1:-1;6841:25:30;;;;;;;;-1:-1:-1;6841:25:30;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:30;-1:-1:-1;;;;;7084:25:30;-1:-1:-1;;;;;7084:25:30;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:30;;;;;-1:-1:-1;;7084:306:30;;;-1:-1:-1;;7084:306:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:30;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:30;-1:-1:-1;;;;;7486:10:30;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:30;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:30;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:30;-1:-1:-1;;;;;7742:87:30;;;;;;-1:-1:-1;;;;;7742:87:30;-1:-1:-1;;;;;7742:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:30;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:30;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:30;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:30;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:30;-1:-1:-1;15069:72:30;-1:-1:-1;15151:23:30;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:30;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:30;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:30;;;-1:-1:-1;;;;;15364:44:30;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:30;;15188:283;;;-1:-1:-1;15487:19:30;;-1:-1:-1;;14990:523:30;:::o;11299:398::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:30;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:30;;;;;;;;;;;;-1:-1:-1;;;11432:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:30;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:30;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:30;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:30;;;;;;;;;;;;-1:-1:-1;;;15798:62:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:30;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:30:o;7973:1237::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;8160:9:30;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:30;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:30;;8363:65;;;;;-1:-1:-1;;;8363:65:30;;;;;;;;;;;;-1:-1:-1;;;8363:65:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:30;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:30;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:30;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:30;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:30;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:30;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:30;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:30;;;;;-1:-1:-1;;;;;8926:76:30;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:30;:27;;;;;-1:-1:-1;;9075:27:30;;;:::i;:::-;-1:-1:-1;9162:31:30;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:30;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:30:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:30;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:30;;;;;;;;;;;;-1:-1:-1;;;10969:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:30;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:30;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;12676:35:30;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:30;;:23;-1:-1:-1;;9801:23:30;:20;:23;;-1:-1:-1;9801:23:30:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:30;;;;;;;;;;;;-1:-1:-1;;;9877:72:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:30;;-1:-1:-1;;;10048:18:30;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:30;;:24;-1:-1:-1;;10141:24:30;:21;:24;;-1:-1:-1;10141:24:30:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:30;;-1:-1:-1;;;10187:27:30;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:30;;:34;-1:-1:-1;;10400:34:30;:21;:34;;-1:-1:-1;10400:34:30:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:30;;:34;-1:-1:-1;;10436:34:30;:21;:34;;-1:-1:-1;10436:34:30:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:30;;:29;-1:-1:-1;;10689:29:30;:21;:29;;-1:-1:-1;10689:29:30:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:30;;:29;-1:-1:-1;;10720:29:30;:21;:29;;-1:-1:-1;10720:29:30:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:30;-1:-1:-1;;;;;5399:27:30;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:30;;;;;;;;;;;;-1:-1:-1;;;5367:86:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:30;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:30;;;;;;;;;;;;-1:-1:-1;;;12130:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:30;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:22:-;2242:15;;2169:95;:::o;16551:89:30:-;16622:11;;-1:-1:-1;;;;;16622:11:30;16551:89;:::o;2554:148:22:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:22;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:22;-1:-1:-1;;;;;2636:59:22;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:22;;2554:148;-1:-1:-1;;2554:148:22:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:28:-;-1:-1:-1;;;;;1510:20:28;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:28;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:28;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:28;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:21:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:21;;;;;;;;;;;;-1:-1:-1;;;1726:60:21;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:21:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:21;;;;;;;;;;;;-1:-1:-1;;;1182:61:21;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:21:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:30;;;-1:-1:-1;1939:14907:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/base64.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/oraclizeAPI_0.5.sol","externals/strings.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/date.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/parseIntScientific.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","oracle.sol","tokenWhitelist.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[9435],"IController":[9000]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8983,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":11164,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":9436,"symbolAliases":[null],"unitAlias":""},"id":8984,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":8982,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":9436,"symbolAliases":[null],"unitAlias":""},"id":8985,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[9000],"name":"IController","scope":9436},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":9000,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":8992,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8986,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":8987,"name":"VariableDeclaration","src":"1015:7:0"}],"id":8988,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":8992,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8989,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":8990,"name":"VariableDeclaration","src":"1047:4:0"}],"id":8991,"name":"ParameterList","src":"1046:6:0"}],"id":8992,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":9000,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":8999,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8993,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":8994,"name":"VariableDeclaration","src":"1076:7:0"}],"id":8995,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":8999,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8996,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":8997,"name":"VariableDeclaration","src":"1108:4:0"}],"id":8998,"name":"ParameterList","src":"1107:6:0"}],"id":8999,"name":"FunctionDefinition","src":"1059:55:0"}],"id":9000,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[8981,9000,11163],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[9435,8981,11163,9000],"name":"Controller","scope":9436},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":9000,"type":"contract IController"},"id":9001,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":9002,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":11163,"type":"contract Ownable"},"id":9003,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":9004,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":8981,"type":"contract Transferrable"},"id":9005,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":9006,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9012,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9007,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":9008,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":9012,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9009,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":9010,"name":"VariableDeclaration","src":"1564:19:0"}],"id":9011,"name":"ParameterList","src":"1546:38:0"}],"id":9012,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9018,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9013,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":9014,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":9018,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9015,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":9016,"name":"VariableDeclaration","src":"1631:19:0"}],"id":9017,"name":"ParameterList","src":"1613:38:0"}],"id":9018,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9024,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9019,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":9020,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":9024,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9021,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":9022,"name":"VariableDeclaration","src":"1692:14:0"}],"id":9023,"name":"ParameterList","src":"1674:33:0"}],"id":9024,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9030,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9025,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":9026,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":9030,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9027,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":9028,"name":"VariableDeclaration","src":"1749:14:0"}],"id":9029,"name":"ParameterList","src":"1731:33:0"}],"id":9030,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":9038,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9031,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":9032,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":9038,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9033,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":9034,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":9038,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9035,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":9036,"name":"VariableDeclaration","src":"1814:15:0"}],"id":9037,"name":"ParameterList","src":"1784:46:0"}],"id":9038,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9042,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9039,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":9040,"name":"VariableDeclaration","src":"1851:15:0"}],"id":9041,"name":"ParameterList","src":"1850:17:0"}],"id":9042,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9046,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9043,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":9044,"name":"VariableDeclaration","src":"1887:15:0"}],"id":9045,"name":"ParameterList","src":"1886:17:0"}],"id":9046,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":9435,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":9047,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":9048,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":9049,"name":"Mapping","src":"1910:24:0"}],"id":9050,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":9435,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9051,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":9052,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":9435,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":9053,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":9054,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":9055,"name":"Mapping","src":"1991:24:0"}],"id":9056,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":9435,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9057,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":9058,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":9435,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9059,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":9060,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":9070,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":9061,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":9062,"name":"VariableDeclaration","src":"2251:30:0"}],"id":9063,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":9068,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11163,"type":"type(contract Ownable)","value":"Ownable"},"id":9064,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9062,"type":"address payable","value":"_ownerAddress_"},"id":9065,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9066,"name":"Literal","src":"2314:5:0"}],"id":9067,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":9069,"name":"Block","src":"2321:2:0"}],"id":9070,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9071,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9072,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9073,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9074,"name":"Identifier","src":"2431:3:0"}],"id":9075,"name":"MemberAccess","src":"2431:10:0"}],"id":9076,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":9077,"name":"Literal","src":"2444:24:0"}],"id":9078,"name":"FunctionCall","src":"2414:55:0"}],"id":9079,"name":"ExpressionStatement","src":"2414:55:0"},{"id":9080,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":9081,"name":"Block","src":"2404:83:0"}],"id":9082,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9083,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9084,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11162,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":9085,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9086,"name":"Identifier","src":"2588:3:0"}],"id":9087,"name":"MemberAccess","src":"2588:10:0"}],"id":9088,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9089,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9090,"name":"Identifier","src":"2612:3:0"}],"id":9091,"name":"MemberAccess","src":"2612:10:0"}],"id":9092,"name":"IndexAccess","src":"2603:20:0"}],"id":9093,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":9094,"name":"Literal","src":"2625:24:0"}],"id":9095,"name":"FunctionCall","src":"2571:79:0"}],"id":9096,"name":"ExpressionStatement","src":"2571:79:0"},{"id":9097,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":9098,"name":"Block","src":"2561:107:0"}],"id":9099,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9100,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9101,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":9214,"type":"function () view returns (bool)","value":"isStopped"},"id":9102,"name":"Identifier","src":"2762:9:0"}],"id":9103,"name":"FunctionCall","src":"2762:11:0"}],"id":9104,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":9105,"name":"Literal","src":"2775:23:0"}],"id":9106,"name":"FunctionCall","src":"2753:46:0"}],"id":9107,"name":"ExpressionStatement","src":"2753:46:0"},{"id":9108,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":9109,"name":"Block","src":"2743:74:0"}],"id":9110,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9124,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9111,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":9112,"name":"VariableDeclaration","src":"2958:16:0"}],"id":9113,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9118,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":9114,"name":"Identifier","src":"2985:9:0"}],"id":9115,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9116,"name":"Identifier","src":"2995:10:0"}],"id":9117,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9268,"type":"function (address)","value":"_addAdmin"},"id":9119,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9112,"type":"address","value":"_account"},"id":9120,"name":"Identifier","src":"3026:8:0"}],"id":9121,"name":"FunctionCall","src":"3016:19:0"}],"id":9122,"name":"ExpressionStatement","src":"3016:19:0"}],"id":9123,"name":"Block","src":"3006:36:0"}],"id":9124,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9136,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9125,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":9126,"name":"VariableDeclaration","src":"3192:16:0"}],"id":9127,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9130,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":9128,"name":"Identifier","src":"3219:9:0"}],"id":9129,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9296,"type":"function (address)","value":"_removeAdmin"},"id":9131,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9126,"type":"address","value":"_account"},"id":9132,"name":"Identifier","src":"3252:8:0"}],"id":9133,"name":"FunctionCall","src":"3239:22:0"}],"id":9134,"name":"ExpressionStatement","src":"3239:22:0"}],"id":9135,"name":"Block","src":"3229:39:0"}],"id":9136,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":9435,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9137,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9138,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":9139,"name":"VariableDeclaration","src":"3365:7:0"}],"id":9140,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":9140},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9052,"type":"uint256","value":"_adminCount"},"id":9141,"name":"Identifier","src":"3391:11:0"}],"id":9142,"name":"Return","src":"3384:18:0"}],"id":9143,"name":"Block","src":"3374:35:0"}],"id":9144,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9158,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9145,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":9146,"name":"VariableDeclaration","src":"3570:16:0"}],"id":9147,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9152,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9099,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":9148,"name":"Identifier","src":"3597:16:0"}],"id":9149,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9150,"name":"Identifier","src":"3614:10:0"}],"id":9151,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9350,"type":"function (address)","value":"_addController"},"id":9153,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9146,"type":"address","value":"_account"},"id":9154,"name":"Identifier","src":"3650:8:0"}],"id":9155,"name":"FunctionCall","src":"3635:24:0"}],"id":9156,"name":"ExpressionStatement","src":"3635:24:0"}],"id":9157,"name":"Block","src":"3625:41:0"}],"id":9158,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9170,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9159,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":9160,"name":"VariableDeclaration","src":"3836:16:0"}],"id":9161,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9164,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9099,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":9162,"name":"Identifier","src":"3863:16:0"}],"id":9163,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9378,"type":"function (address)","value":"_removeController"},"id":9165,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9160,"type":"address","value":"_account"},"id":9166,"name":"Identifier","src":"3908:8:0"}],"id":9167,"name":"FunctionCall","src":"3890:27:0"}],"id":9168,"name":"ExpressionStatement","src":"3890:27:0"}],"id":9169,"name":"Block","src":"3880:44:0"}],"id":9170,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":9435,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9171,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9178,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9172,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":9173,"name":"VariableDeclaration","src":"4069:7:0"}],"id":9174,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":9174},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9058,"type":"uint256","value":"_controllerCount"},"id":9175,"name":"Identifier","src":"4095:16:0"}],"id":9176,"name":"Return","src":"4088:23:0"}],"id":9177,"name":"Block","src":"4078:40:0"}],"id":9178,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":9435,"stateMutability":"view","superFunction":8999,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9192,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9179,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":9180,"name":"VariableDeclaration","src":"4239:16:0"}],"id":9181,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9192,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9184,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":9185,"name":"VariableDeclaration","src":"4291:4:0"}],"id":9186,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9182,"name":"Identifier","src":"4271:10:0"}],"id":9183,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":9186},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9187,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9180,"type":"address","value":"_account"},"id":9188,"name":"Identifier","src":"4323:8:0"}],"id":9189,"name":"IndexAccess","src":"4314:18:0"}],"id":9190,"name":"Return","src":"4307:25:0"}],"id":9191,"name":"Block","src":"4297:42:0"}],"id":9192,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":9435,"stateMutability":"view","superFunction":8992,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9206,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9193,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":9194,"name":"VariableDeclaration","src":"4473:16:0"}],"id":9195,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9206,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9198,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":9199,"name":"VariableDeclaration","src":"4525:4:0"}],"id":9200,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9196,"name":"Identifier","src":"4505:10:0"}],"id":9197,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":9200},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9201,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9194,"type":"address","value":"_account"},"id":9202,"name":"Identifier","src":"4562:8:0"}],"id":9203,"name":"IndexAccess","src":"4548:23:0"}],"id":9204,"name":"Return","src":"4541:30:0"}],"id":9205,"name":"Block","src":"4531:47:0"}],"id":9206,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":9435,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9207,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9214,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9208,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":9209,"name":"VariableDeclaration","src":"4766:4:0"}],"id":9210,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":9210},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"bool","value":"_stopped"},"id":9211,"name":"Identifier","src":"4789:8:0"}],"id":9212,"name":"Return","src":"4782:15:0"}],"id":9213,"name":"Block","src":"4772:32:0"}],"id":9214,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9268,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9215,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":9216,"name":"VariableDeclaration","src":"4891:16:0"}],"id":9217,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9218,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9219,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9220,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9221,"name":"Identifier","src":"4945:8:0"}],"id":9222,"name":"IndexAccess","src":"4936:18:0"}],"id":9223,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":9224,"name":"Literal","src":"4956:38:0"}],"id":9225,"name":"FunctionCall","src":"4927:68:0"}],"id":9226,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9227,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9228,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9229,"name":"Identifier","src":"5028:8:0"}],"id":9230,"name":"IndexAccess","src":"5014:23:0"}],"id":9231,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":9232,"name":"Literal","src":"5039:42:0"}],"id":9233,"name":"FunctionCall","src":"5005:77:0"}],"id":9234,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9235,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":11162,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":9236,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9237,"name":"Identifier","src":"5110:8:0"}],"id":9238,"name":"FunctionCall","src":"5101:18:0"}],"id":9239,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":9240,"name":"Literal","src":"5121:39:0"}],"id":9241,"name":"FunctionCall","src":"5092:69:0"}],"id":9242,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9243,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9244,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9245,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9246,"name":"Literal","src":"5199:1:0"}],"id":9247,"name":"FunctionCall","src":"5191:10:0"}],"id":9248,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":9249,"name":"Literal","src":"5203:38:0"}],"id":9250,"name":"FunctionCall","src":"5171:71:0"}],"id":9251,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9252,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9253,"name":"Identifier","src":"5261:8:0"}],"id":9254,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9255,"name":"Literal","src":"5273:4:0"}],"id":9256,"name":"Assignment","src":"5252:25:0"}],"id":9257,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9052,"type":"uint256","value":"_adminCount"},"id":9258,"name":"Identifier","src":"5287:11:0"}],"id":9259,"name":"UnaryOperation","src":"5287:13:0"}],"id":9260,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9024,"type":"function (address,address)","value":"AddedAdmin"},"id":9261,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9262,"name":"Identifier","src":"5326:3:0"}],"id":9263,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9264,"name":"Identifier","src":"5338:8:0"}],"id":9265,"name":"FunctionCall","src":"5315:32:0"}],"id":9266,"name":"EmitStatement","src":"5310:37:0"}],"id":9267,"name":"Block","src":"4917:437:0"}],"id":9268,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9296,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9269,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":9270,"name":"VariableDeclaration","src":"5453:16:0"}],"id":9271,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9272,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9273,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9274,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9270,"type":"address","value":"_account"},"id":9275,"name":"Identifier","src":"5506:8:0"}],"id":9276,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":9277,"name":"Literal","src":"5517:34:0"}],"id":9278,"name":"FunctionCall","src":"5489:63:0"}],"id":9279,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9280,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9270,"type":"address","value":"_account"},"id":9281,"name":"Identifier","src":"5571:8:0"}],"id":9282,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9283,"name":"Literal","src":"5583:5:0"}],"id":9284,"name":"Assignment","src":"5562:26:0"}],"id":9285,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9052,"type":"uint256","value":"_adminCount"},"id":9286,"name":"Identifier","src":"5598:11:0"}],"id":9287,"name":"UnaryOperation","src":"5598:13:0"}],"id":9288,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9030,"type":"function (address,address)","value":"RemovedAdmin"},"id":9289,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9290,"name":"Identifier","src":"5639:3:0"}],"id":9291,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9270,"type":"address","value":"_account"},"id":9292,"name":"Identifier","src":"5651:8:0"}],"id":9293,"name":"FunctionCall","src":"5626:34:0"}],"id":9294,"name":"EmitStatement","src":"5621:39:0"}],"id":9295,"name":"Block","src":"5479:188:0"}],"id":9296,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9350,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9297,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":9298,"name":"VariableDeclaration","src":"5764:16:0"}],"id":9299,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9300,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9301,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9302,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9303,"name":"Identifier","src":"5818:8:0"}],"id":9304,"name":"IndexAccess","src":"5809:18:0"}],"id":9305,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":9306,"name":"Literal","src":"5829:38:0"}],"id":9307,"name":"FunctionCall","src":"5800:68:0"}],"id":9308,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9309,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9310,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9311,"name":"Identifier","src":"5901:8:0"}],"id":9312,"name":"IndexAccess","src":"5887:23:0"}],"id":9313,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":9314,"name":"Literal","src":"5912:42:0"}],"id":9315,"name":"FunctionCall","src":"5878:77:0"}],"id":9316,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9317,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":11162,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":9318,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9319,"name":"Identifier","src":"5983:8:0"}],"id":9320,"name":"FunctionCall","src":"5974:18:0"}],"id":9321,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":9322,"name":"Literal","src":"5994:39:0"}],"id":9323,"name":"FunctionCall","src":"5965:69:0"}],"id":9324,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9325,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9326,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9327,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9328,"name":"Literal","src":"6072:1:0"}],"id":9329,"name":"FunctionCall","src":"6064:10:0"}],"id":9330,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":9331,"name":"Literal","src":"6076:38:0"}],"id":9332,"name":"FunctionCall","src":"6044:71:0"}],"id":9333,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9334,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9335,"name":"Identifier","src":"6139:8:0"}],"id":9336,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9337,"name":"Literal","src":"6151:4:0"}],"id":9338,"name":"Assignment","src":"6125:30:0"}],"id":9339,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9058,"type":"uint256","value":"_controllerCount"},"id":9340,"name":"Identifier","src":"6165:16:0"}],"id":9341,"name":"UnaryOperation","src":"6165:18:0"}],"id":9342,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9012,"type":"function (address,address)","value":"AddedController"},"id":9343,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9344,"name":"Identifier","src":"6214:3:0"}],"id":9345,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9346,"name":"Identifier","src":"6226:8:0"}],"id":9347,"name":"FunctionCall","src":"6198:37:0"}],"id":9348,"name":"EmitStatement","src":"6193:42:0"}],"id":9349,"name":"Block","src":"5790:452:0"}],"id":9350,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9378,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9351,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":9352,"name":"VariableDeclaration","src":"6351:16:0"}],"id":9353,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9354,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9355,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9356,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9352,"type":"address","value":"_account"},"id":9357,"name":"Identifier","src":"6409:8:0"}],"id":9358,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":9359,"name":"Literal","src":"6420:38:0"}],"id":9360,"name":"FunctionCall","src":"6387:72:0"}],"id":9361,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9362,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9352,"type":"address","value":"_account"},"id":9363,"name":"Identifier","src":"6483:8:0"}],"id":9364,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9365,"name":"Literal","src":"6495:5:0"}],"id":9366,"name":"Assignment","src":"6469:31:0"}],"id":9367,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9058,"type":"uint256","value":"_controllerCount"},"id":9368,"name":"Identifier","src":"6510:16:0"}],"id":9369,"name":"UnaryOperation","src":"6510:18:0"}],"id":9370,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9018,"type":"function (address,address)","value":"RemovedController"},"id":9371,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9372,"name":"Identifier","src":"6561:3:0"}],"id":9373,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9352,"type":"address","value":"_account"},"id":9374,"name":"Identifier","src":"6573:8:0"}],"id":9375,"name":"FunctionCall","src":"6543:39:0"}],"id":9376,"name":"EmitStatement","src":"6538:44:0"}],"id":9377,"name":"Block","src":"6377:212:0"}],"id":9378,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9379,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":9382,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9099,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":9380,"name":"Identifier","src":"6687:16:0"}],"id":9381,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"bool","value":"_stopped"},"id":9383,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9384,"name":"Literal","src":"6725:4:0"}],"id":9385,"name":"Assignment","src":"6714:15:0"}],"id":9386,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"function (address)","value":"Stopped"},"id":9387,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9388,"name":"Identifier","src":"6752:3:0"}],"id":9389,"name":"MemberAccess","src":"6752:10:0"}],"id":9390,"name":"FunctionCall","src":"6744:19:0"}],"id":9391,"name":"EmitStatement","src":"6739:24:0"}],"id":9392,"name":"Block","src":"6704:66:0"}],"id":9393,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9394,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":9397,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":9395,"name":"Identifier","src":"6845:9:0"}],"id":9396,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"bool","value":"_stopped"},"id":9398,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9399,"name":"Literal","src":"6876:5:0"}],"id":9400,"name":"Assignment","src":"6865:16:0"}],"id":9401,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":9046,"type":"function (address)","value":"Started"},"id":9402,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9403,"name":"Identifier","src":"6904:3:0"}],"id":9404,"name":"MemberAccess","src":"6904:10:0"}],"id":9405,"name":"FunctionCall","src":"6896:19:0"}],"id":9406,"name":"EmitStatement","src":"6891:24:0"}],"id":9407,"name":"Block","src":"6855:67:0"}],"id":9408,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":9434,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":9409,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":9410,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":9434,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9411,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":9412,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":9434,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9413,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":9414,"name":"VariableDeclaration","src":"7063:15:0"}],"id":9415,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":9420,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9082,"type":"modifier ()","value":"onlyAdmin"},"id":9416,"name":"Identifier","src":"7089:9:0"}],"id":9417,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9418,"name":"Identifier","src":"7099:10:0"}],"id":9419,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8980,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":9421,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9410,"type":"address payable","value":"_to"},"id":9422,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9412,"type":"address","value":"_asset"},"id":9423,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9414,"type":"uint256","value":"_amount"},"id":9424,"name":"Identifier","src":"7147:7:0"}],"id":9425,"name":"FunctionCall","src":"7120:35:0"}],"id":9426,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"function (address,address,uint256)","value":"Claimed"},"id":9427,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9410,"type":"address payable","value":"_to"},"id":9428,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9412,"type":"address","value":"_asset"},"id":9429,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9414,"type":"uint256","value":"_amount"},"id":9430,"name":"Identifier","src":"7191:7:0"}],"id":9431,"name":"FunctionCall","src":"7170:29:0"}],"id":9432,"name":"EmitStatement","src":"7165:34:0"}],"id":9433,"name":"Block","src":"7110:96:0"}],"id":9434,"name":"FunctionDefinition","src":"7011:195:0"}],"id":9435,"name":"ContractDefinition","src":"1460:5748:0"}],"id":9436,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[14286]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":14269,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[14286],"name":"Address","scope":14287},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":14286,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":14285,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":14270,"name":"ElementaryTypeName","src":"562:7:1"}],"id":14271,"name":"VariableDeclaration","src":"562:15:1"}],"id":14272,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":14285,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14273,"name":"ElementaryTypeName","src":"602:4:1"}],"id":14274,"name":"VariableDeclaration","src":"602:4:1"}],"id":14275,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[14277],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":14284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14276,"name":"ElementaryTypeName","src":"805:7:1"}],"id":14277,"name":"VariableDeclaration","src":"805:12:1"}],"id":14278,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":14277,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":14271,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":14279,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":14275},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14277,"type":"uint256","value":"size"},"id":14280,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14281,"name":"Literal","src":"947:1:1"}],"id":14282,"name":"BinaryOperation","src":"940:8:1"}],"id":14283,"name":"Return","src":"933:15:1"}],"id":14284,"name":"Block","src":"608:347:1"}],"id":14285,"name":"FunctionDefinition","src":"542:413:1"}],"id":14286,"name":"ContractDefinition","src":"94:863:1"}],"id":14287,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[10787]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":10736,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[10787],"name":"ERC20","scope":10788},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":10787,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":10745,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10737,"name":"ElementaryTypeName","src":"193:7:2"}],"id":10738,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":10745,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10739,"name":"ElementaryTypeName","src":"209:7:2"}],"id":10740,"name":"VariableDeclaration","src":"209:16:2"}],"id":10741,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10745,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10742,"name":"ElementaryTypeName","src":"250:7:2"}],"id":10743,"name":"VariableDeclaration","src":"250:7:2"}],"id":10744,"name":"ParameterList","src":"249:9:2"}],"id":10745,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":10787,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":10754,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10746,"name":"ElementaryTypeName","src":"281:7:2"}],"id":10747,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":10754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10748,"name":"ElementaryTypeName","src":"299:7:2"}],"id":10749,"name":"VariableDeclaration","src":"299:14:2"}],"id":10750,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10754,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10751,"name":"ElementaryTypeName","src":"333:4:2"}],"id":10752,"name":"VariableDeclaration","src":"333:4:2"}],"id":10753,"name":"ParameterList","src":"332:6:2"}],"id":10754,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":10787,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":10761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10755,"name":"ElementaryTypeName","src":"363:7:2"}],"id":10756,"name":"VariableDeclaration","src":"363:12:2"}],"id":10757,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10758,"name":"ElementaryTypeName","src":"400:7:2"}],"id":10759,"name":"VariableDeclaration","src":"400:7:2"}],"id":10760,"name":"ParameterList","src":"399:9:2"}],"id":10761,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":10787,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10762,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10766,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10763,"name":"ElementaryTypeName","src":"460:7:2"}],"id":10764,"name":"VariableDeclaration","src":"460:7:2"}],"id":10765,"name":"ParameterList","src":"459:9:2"}],"id":10766,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":10787,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":10775,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10767,"name":"ElementaryTypeName","src":"492:7:2"}],"id":10768,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":10775,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10769,"name":"ElementaryTypeName","src":"505:7:2"}],"id":10770,"name":"VariableDeclaration","src":"505:14:2"}],"id":10771,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10775,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10772,"name":"ElementaryTypeName","src":"539:4:2"}],"id":10773,"name":"VariableDeclaration","src":"539:4:2"}],"id":10774,"name":"ParameterList","src":"538:6:2"}],"id":10775,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":10787,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":10786,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10776,"name":"ElementaryTypeName","src":"572:7:2"}],"id":10777,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":10786,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10778,"name":"ElementaryTypeName","src":"587:7:2"}],"id":10779,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":10786,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10780,"name":"ElementaryTypeName","src":"600:7:2"}],"id":10781,"name":"VariableDeclaration","src":"600:14:2"}],"id":10782,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10786,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10783,"name":"ElementaryTypeName","src":"634:4:2"}],"id":10784,"name":"VariableDeclaration","src":"634:4:2"}],"id":10785,"name":"ParameterList","src":"633:6:2"}],"id":10786,"name":"FunctionDefinition","src":"550:90:2"}],"id":10787,"name":"ContractDefinition","src":"152:490:2"}],"id":10788,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[11006]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":10789,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":10788,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":11007,"symbolAliases":[null],"unitAlias":""},"id":10790,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":11007,"symbolAliases":[null],"unitAlias":""},"id":10791,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":14287,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":11007,"symbolAliases":[null],"unitAlias":""},"id":10792,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[11006],"name":"SafeERC20","scope":11007},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":10793,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":10794,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":10795,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":14286,"type":"library Address"},"id":10796,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10797,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":10798,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10820,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10799,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":10800,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":10820,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10801,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":10802,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":10820,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10803,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":10804,"name":"VariableDeclaration","src":"1850:13:3"}],"id":10805,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":10806,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10807,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10800,"type":"contract ERC20","value":"token"},"id":10808,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10809,"name":"Identifier","src":"1910:3:3"}],"id":10810,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":10775,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10800,"type":"contract ERC20","value":"token"},"id":10811,"name":"Identifier","src":"1933:5:3"}],"id":10812,"name":"MemberAccess","src":"1933:14:3"}],"id":10813,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10802,"type":"address","value":"to"},"id":10814,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10804,"type":"uint256","value":"value"},"id":10815,"name":"Identifier","src":"1962:5:3"}],"id":10816,"name":"FunctionCall","src":"1910:58:3"}],"id":10817,"name":"FunctionCall","src":"1884:85:3"}],"id":10818,"name":"ExpressionStatement","src":"1884:85:3"}],"id":10819,"name":"Block","src":"1874:102:3"}],"id":10820,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10845,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10821,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":10822,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":10845,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10823,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":10824,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":10845,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10825,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":10826,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":10845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10827,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":10828,"name":"VariableDeclaration","src":"2047:13:3"}],"id":10829,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":10830,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10831,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10822,"type":"contract ERC20","value":"token"},"id":10832,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10833,"name":"Identifier","src":"2107:3:3"}],"id":10834,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":10786,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10822,"type":"contract ERC20","value":"token"},"id":10835,"name":"Identifier","src":"2130:5:3"}],"id":10836,"name":"MemberAccess","src":"2130:18:3"}],"id":10837,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10824,"type":"address","value":"from"},"id":10838,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10826,"type":"address","value":"to"},"id":10839,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10828,"type":"uint256","value":"value"},"id":10840,"name":"Identifier","src":"2169:5:3"}],"id":10841,"name":"FunctionCall","src":"2107:68:3"}],"id":10842,"name":"FunctionCall","src":"2081:95:3"}],"id":10843,"name":"ExpressionStatement","src":"2081:95:3"}],"id":10844,"name":"Block","src":"2071:112:3"}],"id":10845,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10886,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10846,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":10847,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":10886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10848,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":10849,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":10886,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10850,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":10851,"name":"VariableDeclaration","src":"2240:13:3"}],"id":10852,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":10853,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10854,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10851,"type":"uint256","value":"value"},"id":10855,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10856,"name":"Literal","src":"2562:1:3"}],"id":10857,"name":"BinaryOperation","src":"2553:10:3"}],"id":10858,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":10745,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10847,"type":"contract ERC20","value":"token"},"id":10859,"name":"Identifier","src":"2569:5:3"}],"id":10860,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$11006","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10861,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15731,"type":"library SafeERC20","value":"this"},"id":10862,"name":"Identifier","src":"2593:4:3"}],"id":10863,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10849,"type":"address","value":"spender"},"id":10864,"name":"Identifier","src":"2600:7:3"}],"id":10865,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10866,"name":"Literal","src":"2612:1:3"}],"id":10867,"name":"BinaryOperation","src":"2569:44:3"}],"id":10868,"name":"TupleExpression","src":"2568:46:3"}],"id":10869,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":10870,"name":"Literal","src":"2628:56:3"}],"id":10871,"name":"FunctionCall","src":"2544:150:3"}],"id":10872,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10873,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10847,"type":"contract ERC20","value":"token"},"id":10874,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10875,"name":"Identifier","src":"2730:3:3"}],"id":10876,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":10754,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10847,"type":"contract ERC20","value":"token"},"id":10877,"name":"Identifier","src":"2753:5:3"}],"id":10878,"name":"MemberAccess","src":"2753:13:3"}],"id":10879,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10849,"type":"address","value":"spender"},"id":10880,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10851,"type":"uint256","value":"value"},"id":10881,"name":"Identifier","src":"2786:5:3"}],"id":10882,"name":"FunctionCall","src":"2730:62:3"}],"id":10883,"name":"FunctionCall","src":"2704:89:3"}],"id":10884,"name":"ExpressionStatement","src":"2704:89:3"}],"id":10885,"name":"Block","src":"2264:536:3"}],"id":10886,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10921,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10887,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":10888,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":10921,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10889,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":10890,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":10921,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10891,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":10892,"name":"VariableDeclaration","src":"2867:13:3"}],"id":10893,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":10894,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[10896]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":10920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10895,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":10896,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":10745,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10888,"type":"contract ERC20","value":"token"},"id":10897,"name":"Identifier","src":"2924:5:3"}],"id":10898,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$11006","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10899,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15731,"type":"library SafeERC20","value":"this"},"id":10900,"name":"Identifier","src":"2948:4:3"}],"id":10901,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10890,"type":"address","value":"spender"},"id":10902,"name":"Identifier","src":"2955:7:3"}],"id":10903,"name":"FunctionCall","src":"2924:39:3"}],"id":10904,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10892,"type":"uint256","value":"value"},"id":10905,"name":"Identifier","src":"2968:5:3"}],"id":10906,"name":"FunctionCall","src":"2924:50:3"}],"id":10907,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10908,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10888,"type":"contract ERC20","value":"token"},"id":10909,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10910,"name":"Identifier","src":"3010:3:3"}],"id":10911,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":10754,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10888,"type":"contract ERC20","value":"token"},"id":10912,"name":"Identifier","src":"3033:5:3"}],"id":10913,"name":"MemberAccess","src":"3033:13:3"}],"id":10914,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10890,"type":"address","value":"spender"},"id":10915,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10896,"type":"uint256","value":"newAllowance"},"id":10916,"name":"Identifier","src":"3066:12:3"}],"id":10917,"name":"FunctionCall","src":"3010:69:3"}],"id":10918,"name":"FunctionCall","src":"2984:96:3"}],"id":10919,"name":"ExpressionStatement","src":"2984:96:3"}],"id":10920,"name":"Block","src":"2891:196:3"}],"id":10921,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10956,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10922,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":10923,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":10956,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10924,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":10925,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":10956,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10926,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":10927,"name":"VariableDeclaration","src":"3154:13:3"}],"id":10928,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":10929,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[10931]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":10955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10930,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":10931,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1169,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":10745,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10923,"type":"contract ERC20","value":"token"},"id":10932,"name":"Identifier","src":"3211:5:3"}],"id":10933,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$11006","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10934,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15731,"type":"library SafeERC20","value":"this"},"id":10935,"name":"Identifier","src":"3235:4:3"}],"id":10936,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10925,"type":"address","value":"spender"},"id":10937,"name":"Identifier","src":"3242:7:3"}],"id":10938,"name":"FunctionCall","src":"3211:39:3"}],"id":10939,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10927,"type":"uint256","value":"value"},"id":10940,"name":"Identifier","src":"3255:5:3"}],"id":10941,"name":"FunctionCall","src":"3211:50:3"}],"id":10942,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10943,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10923,"type":"contract ERC20","value":"token"},"id":10944,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10945,"name":"Identifier","src":"3297:3:3"}],"id":10946,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":10754,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10923,"type":"contract ERC20","value":"token"},"id":10947,"name":"Identifier","src":"3320:5:3"}],"id":10948,"name":"MemberAccess","src":"3320:13:3"}],"id":10949,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10925,"type":"address","value":"spender"},"id":10950,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10931,"type":"uint256","value":"newAllowance"},"id":10951,"name":"Identifier","src":"3353:12:3"}],"id":10952,"name":"FunctionCall","src":"3297:69:3"}],"id":10953,"name":"FunctionCall","src":"3271:96:3"}],"id":10954,"name":"ExpressionStatement","src":"3271:96:3"}],"id":10955,"name":"Block","src":"3178:196:3"}],"id":10956,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":11005,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10957,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":10958,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":11005,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10959,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":10960,"name":"VariableDeclaration","src":"3798:17:3"}],"id":10961,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":10962,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10963,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":14285,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10964,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10958,"type":"contract ERC20","value":"token"},"id":10965,"name":"Identifier","src":"4360:5:3"}],"id":10966,"name":"FunctionCall","src":"4352:14:3"}],"id":10967,"name":"MemberAccess","src":"4352:25:3"}],"id":10968,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":10969,"name":"Literal","src":"4381:33:3"}],"id":10970,"name":"FunctionCall","src":"4344:71:3"}],"id":10971,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[10973,10975]},"children":[{"attributes":{"constant":false,"name":"success","scope":11004,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10972,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":10973,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":11004,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10974,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":10975,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10976,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10958,"type":"contract ERC20","value":"token"},"id":10977,"name":"Identifier","src":"4535:5:3"}],"id":10978,"name":"FunctionCall","src":"4527:14:3"}],"id":10979,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10960,"type":"bytes memory","value":"data"},"id":10980,"name":"Identifier","src":"4547:4:3"}],"id":10981,"name":"FunctionCall","src":"4527:25:3"}],"id":10982,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10983,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10973,"type":"bool","value":"success"},"id":10984,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":10985,"name":"Literal","src":"4579:34:3"}],"id":10986,"name":"FunctionCall","src":"4562:52:3"}],"id":10987,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10975,"type":"bytes memory","value":"returndata"},"id":10988,"name":"Identifier","src":"4629:10:3"}],"id":10989,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10990,"name":"Literal","src":"4649:1:3"}],"id":10991,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10992,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10993,"name":"Identifier","src":"4758:3:3"}],"id":10994,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10975,"type":"bytes memory","value":"returndata"},"id":10995,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":10996,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":10997,"name":"TupleExpression","src":"4781:6:3"}],"id":10998,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":10999,"name":"Literal","src":"4790:44:3"}],"id":11000,"name":"FunctionCall","src":"4750:85:3"}],"id":11001,"name":"ExpressionStatement","src":"4750:85:3"}],"id":11002,"name":"Block","src":"4652:194:3"}],"id":11003,"name":"IfStatement","src":"4625:221:3"}],"id":11004,"name":"Block","src":"3826:1026:3"}],"id":11005,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":11006,"name":"ContractDefinition","src":"1715:3139:3"}],"id":11007,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[1250]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1119,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[1250],"name":"SafeMath","scope":1251},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1120,"name":"ElementaryTypeName","src":"847:7:4"}],"id":1121,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":1144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1122,"name":"ElementaryTypeName","src":"858:7:4"}],"id":1123,"name":"VariableDeclaration","src":"858:9:4"}],"id":1124,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1125,"name":"ElementaryTypeName","src":"892:7:4"}],"id":1126,"name":"VariableDeclaration","src":"892:7:4"}],"id":1127,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[1129]},"children":[{"attributes":{"constant":false,"name":"c","scope":1143,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1128,"name":"ElementaryTypeName","src":"911:7:4"}],"id":1129,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1121,"type":"uint256","value":"a"},"id":1130,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1123,"type":"uint256","value":"b"},"id":1131,"name":"Identifier","src":"927:1:4"}],"id":1132,"name":"BinaryOperation","src":"923:5:4"}],"id":1133,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1134,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1129,"type":"uint256","value":"c"},"id":1135,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1121,"type":"uint256","value":"a"},"id":1136,"name":"Identifier","src":"951:1:4"}],"id":1137,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":1138,"name":"Literal","src":"954:29:4"}],"id":1139,"name":"FunctionCall","src":"938:46:4"}],"id":1140,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":1127},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1129,"type":"uint256","value":"c"},"id":1141,"name":"Identifier","src":"1002:1:4"}],"id":1142,"name":"Return","src":"995:8:4"}],"id":1143,"name":"Block","src":"901:109:4"}],"id":1144,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1169,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1145,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":1146,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":1169,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1147,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":1148,"name":"VariableDeclaration","src":"1298:9:4"}],"id":1149,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1169,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1150,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":1151,"name":"VariableDeclaration","src":"1332:7:4"}],"id":1152,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1153,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"uint256","value":"b"},"id":1154,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1146,"type":"uint256","value":"a"},"id":1155,"name":"Identifier","src":"1364:1:4"}],"id":1156,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":1157,"name":"Literal","src":"1367:32:4"}],"id":1158,"name":"FunctionCall","src":"1351:49:4"}],"id":1159,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[1161]},"children":[{"attributes":{"constant":false,"name":"c","scope":1168,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1160,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":1161,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1146,"type":"uint256","value":"a"},"id":1162,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"uint256","value":"b"},"id":1163,"name":"Identifier","src":"1426:1:4"}],"id":1164,"name":"BinaryOperation","src":"1422:5:4"}],"id":1165,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":1152},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1161,"type":"uint256","value":"c"},"id":1166,"name":"Identifier","src":"1445:1:4"}],"id":1167,"name":"Return","src":"1438:8:4"}],"id":1168,"name":"Block","src":"1341:112:4"}],"id":1169,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1170,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":1171,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":1203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1172,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":1173,"name":"VariableDeclaration","src":"1717:9:4"}],"id":1174,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1175,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":1176,"name":"VariableDeclaration","src":"1751:7:4"}],"id":1177,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1171,"type":"uint256","value":"a"},"id":1178,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1179,"name":"Literal","src":"1996:1:4"}],"id":1180,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":1177},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1181,"name":"Literal","src":"2020:1:4"}],"id":1182,"name":"Return","src":"2013:8:4"}],"id":1183,"name":"Block","src":"1999:33:4"}],"id":1184,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[1186]},"children":[{"attributes":{"constant":false,"name":"c","scope":1202,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1185,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":1186,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1171,"type":"uint256","value":"a"},"id":1187,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"b"},"id":1188,"name":"Identifier","src":"2058:1:4"}],"id":1189,"name":"BinaryOperation","src":"2054:5:4"}],"id":1190,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1191,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1186,"type":"uint256","value":"c"},"id":1192,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1171,"type":"uint256","value":"a"},"id":1193,"name":"Identifier","src":"2081:1:4"}],"id":1194,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"b"},"id":1195,"name":"Identifier","src":"2086:1:4"}],"id":1196,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":1197,"name":"Literal","src":"2089:35:4"}],"id":1198,"name":"FunctionCall","src":"2069:56:4"}],"id":1199,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":1177},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1186,"type":"uint256","value":"c"},"id":1200,"name":"Identifier","src":"2143:1:4"}],"id":1201,"name":"Return","src":"2136:8:4"}],"id":1202,"name":"Block","src":"1760:391:4"}],"id":1203,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1204,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":1205,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":1228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1206,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":1207,"name":"VariableDeclaration","src":"2630:9:4"}],"id":1208,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1209,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":1210,"name":"VariableDeclaration","src":"2664:7:4"}],"id":1211,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1212,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1207,"type":"uint256","value":"b"},"id":1213,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1214,"name":"Literal","src":"2761:1:4"}],"id":1215,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":1216,"name":"Literal","src":"2764:28:4"}],"id":1217,"name":"FunctionCall","src":"2749:44:4"}],"id":1218,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[1220]},"children":[{"attributes":{"constant":false,"name":"c","scope":1227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1219,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":1220,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1205,"type":"uint256","value":"a"},"id":1221,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1207,"type":"uint256","value":"b"},"id":1222,"name":"Identifier","src":"2819:1:4"}],"id":1223,"name":"BinaryOperation","src":"2815:5:4"}],"id":1224,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":1211},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1220,"type":"uint256","value":"c"},"id":1225,"name":"Identifier","src":"2924:1:4"}],"id":1226,"name":"Return","src":"2917:8:4"}],"id":1227,"name":"Block","src":"2673:259:4"}],"id":1228,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1229,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":1230,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":1249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1231,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":1232,"name":"VariableDeclaration","src":"3400:9:4"}],"id":1233,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1234,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":1235,"name":"VariableDeclaration","src":"3434:7:4"}],"id":1236,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1237,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1232,"type":"uint256","value":"b"},"id":1238,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1239,"name":"Literal","src":"3466:1:4"}],"id":1240,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":1241,"name":"Literal","src":"3469:26:4"}],"id":1242,"name":"FunctionCall","src":"3453:43:4"}],"id":1243,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":1236},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1230,"type":"uint256","value":"a"},"id":1244,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1232,"type":"uint256","value":"b"},"id":1245,"name":"Identifier","src":"3517:1:4"}],"id":1246,"name":"BinaryOperation","src":"3513:5:4"}],"id":1247,"name":"Return","src":"3506:12:4"}],"id":1248,"name":"Block","src":"3443:82:4"}],"id":1249,"name":"FunctionDefinition","src":"3376:149:4"}],"id":1250,"name":"ContractDefinition","src":"589:2938:4"}],"id":1251,"name":"SourceUnit","src":"0:3528:4"}},"externals/base64.sol":{"AST":{"attributes":{"absolutePath":"externals/base64.sol","exportedSymbols":{"Base64":[1574]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":1252,"name":"PragmaDirective","src":"0:24:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Base64 provides base 64 decoding functionality.","fullyImplemented":true,"linearizedBaseContracts":[1574],"name":"Base64","scope":1575},"children":[{"attributes":{"constant":true,"name":"BASE64_DECODE_CHAR","scope":1574,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1253,"name":"ElementaryTypeName","src":"286:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000>\u0000>\u0000?456789:;<=\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u0000\u0000\u0000\u0000?\u0000\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123\"","value":"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000>\u0000>\u0000?456789:;<=\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u0000\u0000\u0000\u0000?\u0000\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123"},"id":1254,"name":"Literal","src":"322:251:5"}],"id":1255,"name":"VariableDeclaration","src":"286:287:5"},{"attributes":{"documentation":"@return decoded array of bytes.\n @param _encoded base 64 encoded array of bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_base64decode","scope":1574,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_encoded","scope":1573,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1256,"name":"ElementaryTypeName","src":"699:5:5"}],"id":1257,"name":"VariableDeclaration","src":"699:21:5"}],"id":1258,"name":"ParameterList","src":"698:23:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1573,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1259,"name":"ElementaryTypeName","src":"745:5:5"}],"id":1260,"name":"VariableDeclaration","src":"745:12:5"}],"id":1261,"name":"ParameterList","src":"744:14:5"},{"children":[{"attributes":{"assignments":[1263],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v1","scope":1572,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1262,"name":"ElementaryTypeName","src":"769:4:5"}],"id":1263,"name":"VariableDeclaration","src":"769:7:5"}],"id":1264,"name":"VariableDeclarationStatement","src":"769:7:5"},{"attributes":{"assignments":[1266],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v2","scope":1572,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1265,"name":"ElementaryTypeName","src":"786:4:5"}],"id":1266,"name":"VariableDeclaration","src":"786:7:5"}],"id":1267,"name":"VariableDeclarationStatement","src":"786:7:5"},{"attributes":{"assignments":[1269],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v3","scope":1572,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1268,"name":"ElementaryTypeName","src":"803:4:5"}],"id":1269,"name":"VariableDeclaration","src":"803:7:5"}],"id":1270,"name":"VariableDeclarationStatement","src":"803:7:5"},{"attributes":{"assignments":[1272],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v4","scope":1572,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1271,"name":"ElementaryTypeName","src":"820:4:5"}],"id":1272,"name":"VariableDeclaration","src":"820:7:5"}],"id":1273,"name":"VariableDeclarationStatement","src":"820:7:5"},{"attributes":{"assignments":[1275]},"children":[{"attributes":{"constant":false,"name":"length","scope":1572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1274,"name":"ElementaryTypeName","src":"837:4:5"}],"id":1275,"name":"VariableDeclaration","src":"837:11:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1276,"name":"Identifier","src":"851:8:5"}],"id":1277,"name":"MemberAccess","src":"851:15:5"}],"id":1278,"name":"VariableDeclarationStatement","src":"837:29:5"},{"attributes":{"assignments":[1280]},"children":[{"attributes":{"constant":false,"name":"result","scope":1572,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1279,"name":"ElementaryTypeName","src":"876:5:5"}],"id":1280,"name":"VariableDeclaration","src":"876:19:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1281,"name":"ElementaryTypeName","src":"902:5:5"}],"id":1282,"name":"NewExpression","src":"898:9:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1283,"name":"Identifier","src":"908:6:5"}],"id":1284,"name":"FunctionCall","src":"898:17:5"}],"id":1285,"name":"VariableDeclarationStatement","src":"876:39:5"},{"attributes":{"assignments":[1287],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"index","scope":1572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1286,"name":"ElementaryTypeName","src":"925:4:5"}],"id":1287,"name":"VariableDeclaration","src":"925:10:5"}],"id":1288,"name":"VariableDeclarationStatement","src":"925:10:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ced718491cb52017183196eff428e56ca4dea680831f565a9e1feeb6144c7b3","typeString":"literal_string \"invalid base64 encoding\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1289,"name":"Identifier","src":"1029:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1290,"name":"Identifier","src":"1037:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1291,"name":"Literal","src":"1046:1:5"}],"id":1292,"name":"BinaryOperation","src":"1037:10:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1293,"name":"Identifier","src":"1052:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1294,"name":"Literal","src":"1061:1:5"}],"id":1295,"name":"BinaryOperation","src":"1052:10:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1296,"name":"Literal","src":"1066:1:5"}],"id":1297,"name":"BinaryOperation","src":"1052:15:5"}],"id":1298,"name":"BinaryOperation","src":"1037:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c69642062617365363420656e636f64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid base64 encoding\"","value":"invalid base64 encoding"},"id":1299,"name":"Literal","src":"1069:25:5"}],"id":1300,"name":"FunctionCall","src":"1029:66:5"}],"id":1301,"name":"ExpressionStatement","src":"1029:66:5"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1302,"name":"Identifier","src":"1110:9:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":1303,"name":"Identifier","src":"1120:3:5"}],"id":1304,"name":"MemberAccess","src":"1120:16:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1305,"name":"Identifier","src":"1137:8:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1306,"name":"Identifier","src":"1146:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1307,"name":"Literal","src":"1155:1:5"}],"id":1308,"name":"BinaryOperation","src":"1146:10:5"}],"id":1309,"name":"IndexAccess","src":"1137:20:5"}],"id":1310,"name":"FunctionCall","src":"1120:38:5"}],"id":1311,"name":"FunctionCall","src":"1110:49:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f16","typeString":"literal_string \"=\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1312,"name":"Identifier","src":"1163:9:5"},{"attributes":{"argumentTypes":null,"hexvalue":"3d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"=\"","value":"="},"id":1313,"name":"Literal","src":"1173:3:5"}],"id":1314,"name":"FunctionCall","src":"1163:14:5"}],"id":1315,"name":"BinaryOperation","src":"1110:67:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1316,"name":"Identifier","src":"1193:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1317,"name":"Literal","src":"1203:1:5"}],"id":1318,"name":"Assignment","src":"1193:11:5"}],"id":1319,"name":"ExpressionStatement","src":"1193:11:5"}],"id":1320,"name":"Block","src":"1179:36:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1321,"name":"Identifier","src":"1225:9:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":1322,"name":"Identifier","src":"1235:3:5"}],"id":1323,"name":"MemberAccess","src":"1235:16:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1324,"name":"Identifier","src":"1252:8:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1325,"name":"Identifier","src":"1261:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1326,"name":"Literal","src":"1270:1:5"}],"id":1327,"name":"BinaryOperation","src":"1261:10:5"}],"id":1328,"name":"IndexAccess","src":"1252:20:5"}],"id":1329,"name":"FunctionCall","src":"1235:38:5"}],"id":1330,"name":"FunctionCall","src":"1225:49:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f16","typeString":"literal_string \"=\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1331,"name":"Identifier","src":"1278:9:5"},{"attributes":{"argumentTypes":null,"hexvalue":"3d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"=\"","value":"="},"id":1332,"name":"Literal","src":"1288:3:5"}],"id":1333,"name":"FunctionCall","src":"1278:14:5"}],"id":1334,"name":"BinaryOperation","src":"1225:67:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1335,"name":"Identifier","src":"1308:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1336,"name":"Literal","src":"1318:1:5"}],"id":1337,"name":"Assignment","src":"1308:11:5"}],"id":1338,"name":"ExpressionStatement","src":"1308:11:5"}],"id":1339,"name":"Block","src":"1294:36:5"}],"id":1340,"name":"IfStatement","src":"1221:109:5"}],"id":1341,"name":"IfStatement","src":"1106:224:5"},{"attributes":{"assignments":[1343]},"children":[{"attributes":{"constant":false,"name":"count","scope":1572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1342,"name":"ElementaryTypeName","src":"1340:4:5"}],"id":1343,"name":"VariableDeclaration","src":"1340:10:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1344,"name":"Identifier","src":"1353:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1345,"name":"Literal","src":"1363:1:5"}],"id":1346,"name":"BinaryOperation","src":"1353:11:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1347,"name":"Literal","src":"1368:1:5"}],"id":1348,"name":"BinaryOperation","src":"1353:16:5"}],"id":1349,"name":"VariableDeclarationStatement","src":"1340:29:5"},{"attributes":{"assignments":[1351],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"i","scope":1572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1350,"name":"ElementaryTypeName","src":"1379:4:5"}],"id":1351,"name":"VariableDeclaration","src":"1379:6:5"}],"id":1352,"name":"VariableDeclarationStatement","src":"1379:6:5"},{"attributes":{"loopExpression":null},"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1353,"name":"Identifier","src":"1401:1:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1354,"name":"Literal","src":"1405:1:5"}],"id":1355,"name":"Assignment","src":"1401:5:5"}],"id":1356,"name":"ExpressionStatement","src":"1401:5:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1357,"name":"Identifier","src":"1408:1:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"uint256","value":"count"},"id":1358,"name":"Identifier","src":"1412:5:5"}],"id":1359,"name":"BinaryOperation","src":"1408:9:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1360,"name":"Identifier","src":"1434:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1361,"name":"Identifier","src":"1439:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1362,"name":"ElementaryTypeNameExpression","src":"1458:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1363,"name":"Identifier","src":"1464:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1364,"name":"Identifier","src":"1473:1:5"}],"id":1365,"name":"UnaryOperation","src":"1473:3:5"}],"id":1366,"name":"IndexAccess","src":"1464:13:5"}],"id":1367,"name":"FunctionCall","src":"1458:20:5"}],"id":1368,"name":"IndexAccess","src":"1439:40:5"}],"id":1369,"name":"Assignment","src":"1434:45:5"}],"id":1370,"name":"ExpressionStatement","src":"1434:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1371,"name":"Identifier","src":"1493:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1372,"name":"Identifier","src":"1498:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1373,"name":"ElementaryTypeNameExpression","src":"1517:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1374,"name":"Identifier","src":"1523:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1375,"name":"Identifier","src":"1532:1:5"}],"id":1376,"name":"UnaryOperation","src":"1532:3:5"}],"id":1377,"name":"IndexAccess","src":"1523:13:5"}],"id":1378,"name":"FunctionCall","src":"1517:20:5"}],"id":1379,"name":"IndexAccess","src":"1498:40:5"}],"id":1380,"name":"Assignment","src":"1493:45:5"}],"id":1381,"name":"ExpressionStatement","src":"1493:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1382,"name":"Identifier","src":"1552:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1383,"name":"Identifier","src":"1557:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1384,"name":"ElementaryTypeNameExpression","src":"1576:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1385,"name":"Identifier","src":"1582:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1386,"name":"Identifier","src":"1591:1:5"}],"id":1387,"name":"UnaryOperation","src":"1591:3:5"}],"id":1388,"name":"IndexAccess","src":"1582:13:5"}],"id":1389,"name":"FunctionCall","src":"1576:20:5"}],"id":1390,"name":"IndexAccess","src":"1557:40:5"}],"id":1391,"name":"Assignment","src":"1552:45:5"}],"id":1392,"name":"ExpressionStatement","src":"1552:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1272,"type":"bytes1","value":"v4"},"id":1393,"name":"Identifier","src":"1611:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1394,"name":"Identifier","src":"1616:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1395,"name":"ElementaryTypeNameExpression","src":"1635:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1396,"name":"Identifier","src":"1641:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1397,"name":"Identifier","src":"1650:1:5"}],"id":1398,"name":"UnaryOperation","src":"1650:3:5"}],"id":1399,"name":"IndexAccess","src":"1641:13:5"}],"id":1400,"name":"FunctionCall","src":"1635:20:5"}],"id":1401,"name":"IndexAccess","src":"1616:40:5"}],"id":1402,"name":"Assignment","src":"1611:45:5"}],"id":1403,"name":"ExpressionStatement","src":"1611:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1404,"name":"Identifier","src":"1671:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1405,"name":"Identifier","src":"1678:5:5"}],"id":1406,"name":"UnaryOperation","src":"1678:7:5"}],"id":1407,"name":"IndexAccess","src":"1671:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1408,"name":"Identifier","src":"1690:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1409,"name":"Literal","src":"1696:1:5"}],"id":1410,"name":"BinaryOperation","src":"1690:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1411,"name":"Identifier","src":"1700:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1412,"name":"Literal","src":"1706:1:5"}],"id":1413,"name":"BinaryOperation","src":"1700:7:5"}],"id":1414,"name":"BinaryOperation","src":"1690:17:5"}],"id":1415,"name":"TupleExpression","src":"1689:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1416,"name":"Literal","src":"1711:4:5"}],"id":1417,"name":"BinaryOperation","src":"1689:26:5"}],"id":1418,"name":"Assignment","src":"1671:44:5"}],"id":1419,"name":"ExpressionStatement","src":"1671:44:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1420,"name":"Identifier","src":"1729:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1421,"name":"Identifier","src":"1736:5:5"}],"id":1422,"name":"UnaryOperation","src":"1736:7:5"}],"id":1423,"name":"IndexAccess","src":"1729:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1424,"name":"Identifier","src":"1748:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1425,"name":"Literal","src":"1754:1:5"}],"id":1426,"name":"BinaryOperation","src":"1748:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1427,"name":"Identifier","src":"1758:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1428,"name":"Literal","src":"1764:1:5"}],"id":1429,"name":"BinaryOperation","src":"1758:7:5"}],"id":1430,"name":"BinaryOperation","src":"1748:17:5"}],"id":1431,"name":"TupleExpression","src":"1747:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1432,"name":"Literal","src":"1769:4:5"}],"id":1433,"name":"BinaryOperation","src":"1747:26:5"}],"id":1434,"name":"Assignment","src":"1729:44:5"}],"id":1435,"name":"ExpressionStatement","src":"1729:44:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1436,"name":"Identifier","src":"1787:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1437,"name":"Identifier","src":"1794:5:5"}],"id":1438,"name":"UnaryOperation","src":"1794:7:5"}],"id":1439,"name":"IndexAccess","src":"1787:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1440,"name":"Identifier","src":"1806:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":1441,"name":"Literal","src":"1812:1:5"}],"id":1442,"name":"BinaryOperation","src":"1806:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1272,"type":"bytes1","value":"v4"},"id":1443,"name":"Identifier","src":"1816:2:5"}],"id":1444,"name":"BinaryOperation","src":"1806:12:5"}],"id":1445,"name":"TupleExpression","src":"1805:14:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1446,"name":"Literal","src":"1822:4:5"}],"id":1447,"name":"BinaryOperation","src":"1805:21:5"}],"id":1448,"name":"Assignment","src":"1787:39:5"}],"id":1449,"name":"ExpressionStatement","src":"1787:39:5"}],"id":1450,"name":"Block","src":"1420:417:5"}],"id":1451,"name":"ForStatement","src":"1396:441:5"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1452,"name":"Identifier","src":"1851:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"uint256","value":"count"},"id":1453,"name":"Identifier","src":"1860:5:5"}],"id":1454,"name":"BinaryOperation","src":"1851:14:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1455,"name":"Literal","src":"1869:1:5"}],"id":1456,"name":"BinaryOperation","src":"1851:19:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1457,"name":"Identifier","src":"1886:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1458,"name":"Identifier","src":"1891:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1459,"name":"ElementaryTypeNameExpression","src":"1910:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1460,"name":"Identifier","src":"1916:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1461,"name":"Identifier","src":"1925:1:5"}],"id":1462,"name":"UnaryOperation","src":"1925:3:5"}],"id":1463,"name":"IndexAccess","src":"1916:13:5"}],"id":1464,"name":"FunctionCall","src":"1910:20:5"}],"id":1465,"name":"IndexAccess","src":"1891:40:5"}],"id":1466,"name":"Assignment","src":"1886:45:5"}],"id":1467,"name":"ExpressionStatement","src":"1886:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1468,"name":"Identifier","src":"1945:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1469,"name":"Identifier","src":"1950:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1470,"name":"ElementaryTypeNameExpression","src":"1969:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1471,"name":"Identifier","src":"1975:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1472,"name":"Identifier","src":"1984:1:5"}],"id":1473,"name":"UnaryOperation","src":"1984:3:5"}],"id":1474,"name":"IndexAccess","src":"1975:13:5"}],"id":1475,"name":"FunctionCall","src":"1969:20:5"}],"id":1476,"name":"IndexAccess","src":"1950:40:5"}],"id":1477,"name":"Assignment","src":"1945:45:5"}],"id":1478,"name":"ExpressionStatement","src":"1945:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1479,"name":"Identifier","src":"2005:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1480,"name":"Identifier","src":"2012:5:5"}],"id":1481,"name":"UnaryOperation","src":"2012:7:5"}],"id":1482,"name":"IndexAccess","src":"2005:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1483,"name":"Identifier","src":"2024:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1484,"name":"Literal","src":"2030:1:5"}],"id":1485,"name":"BinaryOperation","src":"2024:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1486,"name":"Identifier","src":"2034:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1487,"name":"Literal","src":"2040:1:5"}],"id":1488,"name":"BinaryOperation","src":"2034:7:5"}],"id":1489,"name":"BinaryOperation","src":"2024:17:5"}],"id":1490,"name":"TupleExpression","src":"2023:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1491,"name":"Literal","src":"2045:4:5"}],"id":1492,"name":"BinaryOperation","src":"2023:26:5"}],"id":1493,"name":"Assignment","src":"2005:44:5"}],"id":1494,"name":"ExpressionStatement","src":"2005:44:5"}],"id":1495,"name":"Block","src":"1872:188:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1496,"name":"Identifier","src":"2070:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"uint256","value":"count"},"id":1497,"name":"Identifier","src":"2079:5:5"}],"id":1498,"name":"BinaryOperation","src":"2070:14:5"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1499,"name":"Literal","src":"2088:1:5"}],"id":1500,"name":"BinaryOperation","src":"2070:19:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1501,"name":"Identifier","src":"2105:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1502,"name":"Identifier","src":"2110:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1503,"name":"ElementaryTypeNameExpression","src":"2129:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1504,"name":"Identifier","src":"2135:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1505,"name":"Identifier","src":"2144:1:5"}],"id":1506,"name":"UnaryOperation","src":"2144:3:5"}],"id":1507,"name":"IndexAccess","src":"2135:13:5"}],"id":1508,"name":"FunctionCall","src":"2129:20:5"}],"id":1509,"name":"IndexAccess","src":"2110:40:5"}],"id":1510,"name":"Assignment","src":"2105:45:5"}],"id":1511,"name":"ExpressionStatement","src":"2105:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1512,"name":"Identifier","src":"2164:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1513,"name":"Identifier","src":"2169:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1514,"name":"ElementaryTypeNameExpression","src":"2188:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1515,"name":"Identifier","src":"2194:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1516,"name":"Identifier","src":"2203:1:5"}],"id":1517,"name":"UnaryOperation","src":"2203:3:5"}],"id":1518,"name":"IndexAccess","src":"2194:13:5"}],"id":1519,"name":"FunctionCall","src":"2188:20:5"}],"id":1520,"name":"IndexAccess","src":"2169:40:5"}],"id":1521,"name":"Assignment","src":"2164:45:5"}],"id":1522,"name":"ExpressionStatement","src":"2164:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1523,"name":"Identifier","src":"2223:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1524,"name":"Identifier","src":"2228:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1525,"name":"ElementaryTypeNameExpression","src":"2247:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1526,"name":"Identifier","src":"2253:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1527,"name":"Identifier","src":"2262:1:5"}],"id":1528,"name":"UnaryOperation","src":"2262:3:5"}],"id":1529,"name":"IndexAccess","src":"2253:13:5"}],"id":1530,"name":"FunctionCall","src":"2247:20:5"}],"id":1531,"name":"IndexAccess","src":"2228:40:5"}],"id":1532,"name":"Assignment","src":"2223:45:5"}],"id":1533,"name":"ExpressionStatement","src":"2223:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1534,"name":"Identifier","src":"2283:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1535,"name":"Identifier","src":"2290:5:5"}],"id":1536,"name":"UnaryOperation","src":"2290:7:5"}],"id":1537,"name":"IndexAccess","src":"2283:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1538,"name":"Identifier","src":"2302:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1539,"name":"Literal","src":"2308:1:5"}],"id":1540,"name":"BinaryOperation","src":"2302:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1541,"name":"Identifier","src":"2312:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1542,"name":"Literal","src":"2318:1:5"}],"id":1543,"name":"BinaryOperation","src":"2312:7:5"}],"id":1544,"name":"BinaryOperation","src":"2302:17:5"}],"id":1545,"name":"TupleExpression","src":"2301:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1546,"name":"Literal","src":"2323:4:5"}],"id":1547,"name":"BinaryOperation","src":"2301:26:5"}],"id":1548,"name":"Assignment","src":"2283:44:5"}],"id":1549,"name":"ExpressionStatement","src":"2283:44:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1550,"name":"Identifier","src":"2341:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1551,"name":"Identifier","src":"2348:5:5"}],"id":1552,"name":"UnaryOperation","src":"2348:7:5"}],"id":1553,"name":"IndexAccess","src":"2341:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1554,"name":"Identifier","src":"2360:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1555,"name":"Literal","src":"2366:1:5"}],"id":1556,"name":"BinaryOperation","src":"2360:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1557,"name":"Identifier","src":"2370:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1558,"name":"Literal","src":"2376:1:5"}],"id":1559,"name":"BinaryOperation","src":"2370:7:5"}],"id":1560,"name":"BinaryOperation","src":"2360:17:5"}],"id":1561,"name":"TupleExpression","src":"2359:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1562,"name":"Literal","src":"2381:4:5"}],"id":1563,"name":"BinaryOperation","src":"2359:26:5"}],"id":1564,"name":"Assignment","src":"2341:44:5"}],"id":1565,"name":"ExpressionStatement","src":"2341:44:5"}],"id":1566,"name":"Block","src":"2091:305:5"}],"id":1567,"name":"IfStatement","src":"2066:330:5"}],"id":1568,"name":"IfStatement","src":"1847:549:5"},{"attributes":{"externalReferences":[{"result":{"declaration":1280,"isOffset":false,"isSlot":false,"src":"2470:6:5","valueSize":1}},{"index":{"declaration":1287,"isOffset":false,"isSlot":false,"src":"2478:5:5","valueSize":1}}],"operations":"{ mstore(result, index) }"},"children":[],"id":1569,"name":"InlineAssembly","src":"2440:54:5"},{"attributes":{"functionReturnParameters":1261},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1570,"name":"Identifier","src":"2511:6:5"}],"id":1571,"name":"Return","src":"2504:13:5"}],"id":1572,"name":"Block","src":"759:1765:5"}],"id":1573,"name":"FunctionDefinition","src":"676:1848:5"}],"id":1574,"name":"ContractDefinition","src":"264:2262:5"}],"id":1575,"name":"SourceUnit","src":"0:2527:5"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[9572]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":9437,"name":"PragmaDirective","src":"1400:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[9572],"name":"ENS","scope":9573},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":9445,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9438,"name":"ElementaryTypeName","src":"1534:7:6"}],"id":9439,"name":"VariableDeclaration","src":"1534:21:6"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":9445,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9440,"name":"ElementaryTypeName","src":"1557:7:6"}],"id":9441,"name":"VariableDeclaration","src":"1557:22:6"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":9445,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9442,"name":"ElementaryTypeName","src":"1581:7:6"}],"id":9443,"name":"VariableDeclaration","src":"1581:14:6"}],"id":9444,"name":"ParameterList","src":"1533:63:6"}],"id":9445,"name":"EventDefinition","src":"1519:78:6"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":9451,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9446,"name":"ElementaryTypeName","src":"1695:7:6"}],"id":9447,"name":"VariableDeclaration","src":"1695:21:6"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":9451,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9448,"name":"ElementaryTypeName","src":"1718:7:6"}],"id":9449,"name":"VariableDeclaration","src":"1718:14:6"}],"id":9450,"name":"ParameterList","src":"1694:39:6"}],"id":9451,"name":"EventDefinition","src":"1680:54:6"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":9457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9452,"name":"ElementaryTypeName","src":"1810:7:6"}],"id":9453,"name":"VariableDeclaration","src":"1810:21:6"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":9457,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9454,"name":"ElementaryTypeName","src":"1833:7:6"}],"id":9455,"name":"VariableDeclaration","src":"1833:17:6"}],"id":9456,"name":"ParameterList","src":"1809:42:6"}],"id":9457,"name":"EventDefinition","src":"1792:60:6"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":9463,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9458,"name":"ElementaryTypeName","src":"1916:7:6"}],"id":9459,"name":"VariableDeclaration","src":"1916:21:6"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":9463,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9460,"name":"ElementaryTypeName","src":"1939:6:6"}],"id":9461,"name":"VariableDeclaration","src":"1939:11:6"}],"id":9462,"name":"ParameterList","src":"1915:36:6"}],"id":9463,"name":"EventDefinition","src":"1903:49:6"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":9471,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9464,"name":"ElementaryTypeName","src":"2031:7:6"}],"id":9465,"name":"VariableDeclaration","src":"2031:22:6"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":9471,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9466,"name":"ElementaryTypeName","src":"2055:7:6"}],"id":9467,"name":"VariableDeclaration","src":"2055:25:6"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":9471,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9468,"name":"ElementaryTypeName","src":"2082:4:6"}],"id":9469,"name":"VariableDeclaration","src":"2082:14:6"}],"id":9470,"name":"ParameterList","src":"2030:67:6"}],"id":9471,"name":"EventDefinition","src":"2010:88:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9482,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9472,"name":"ElementaryTypeName","src":"2123:7:6"}],"id":9473,"name":"VariableDeclaration","src":"2123:13:6"},{"attributes":{"constant":false,"name":"_owner","scope":9482,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9474,"name":"ElementaryTypeName","src":"2138:7:6"}],"id":9475,"name":"VariableDeclaration","src":"2138:14:6"},{"attributes":{"constant":false,"name":"_resolver","scope":9482,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9476,"name":"ElementaryTypeName","src":"2154:7:6"}],"id":9477,"name":"VariableDeclaration","src":"2154:17:6"},{"attributes":{"constant":false,"name":"_ttl","scope":9482,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9478,"name":"ElementaryTypeName","src":"2173:6:6"}],"id":9479,"name":"VariableDeclaration","src":"2173:11:6"}],"id":9480,"name":"ParameterList","src":"2122:63:6"},{"attributes":{"parameters":[null]},"children":[],"id":9481,"name":"ParameterList","src":"2194:0:6"}],"id":9482,"name":"FunctionDefinition","src":"2104:91:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9495,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9483,"name":"ElementaryTypeName","src":"2226:7:6"}],"id":9484,"name":"VariableDeclaration","src":"2226:13:6"},{"attributes":{"constant":false,"name":"_label","scope":9495,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9485,"name":"ElementaryTypeName","src":"2241:7:6"}],"id":9486,"name":"VariableDeclaration","src":"2241:14:6"},{"attributes":{"constant":false,"name":"_owner","scope":9495,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9487,"name":"ElementaryTypeName","src":"2257:7:6"}],"id":9488,"name":"VariableDeclaration","src":"2257:14:6"},{"attributes":{"constant":false,"name":"_resolver","scope":9495,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9489,"name":"ElementaryTypeName","src":"2273:7:6"}],"id":9490,"name":"VariableDeclaration","src":"2273:17:6"},{"attributes":{"constant":false,"name":"_ttl","scope":9495,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9491,"name":"ElementaryTypeName","src":"2292:6:6"}],"id":9492,"name":"VariableDeclaration","src":"2292:11:6"}],"id":9493,"name":"ParameterList","src":"2225:79:6"},{"attributes":{"parameters":[null]},"children":[],"id":9494,"name":"ParameterList","src":"2313:0:6"}],"id":9495,"name":"FunctionDefinition","src":"2200:114:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9506,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9496,"name":"ElementaryTypeName","src":"2344:7:6"}],"id":9497,"name":"VariableDeclaration","src":"2344:13:6"},{"attributes":{"constant":false,"name":"_label","scope":9506,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9498,"name":"ElementaryTypeName","src":"2359:7:6"}],"id":9499,"name":"VariableDeclaration","src":"2359:14:6"},{"attributes":{"constant":false,"name":"_owner","scope":9506,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9500,"name":"ElementaryTypeName","src":"2375:7:6"}],"id":9501,"name":"VariableDeclaration","src":"2375:14:6"}],"id":9502,"name":"ParameterList","src":"2343:47:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9506,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9503,"name":"ElementaryTypeName","src":"2408:7:6"}],"id":9504,"name":"VariableDeclaration","src":"2408:7:6"}],"id":9505,"name":"ParameterList","src":"2407:9:6"}],"id":9506,"name":"FunctionDefinition","src":"2319:98:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9513,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9507,"name":"ElementaryTypeName","src":"2443:7:6"}],"id":9508,"name":"VariableDeclaration","src":"2443:13:6"},{"attributes":{"constant":false,"name":"_resolver","scope":9513,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9509,"name":"ElementaryTypeName","src":"2458:7:6"}],"id":9510,"name":"VariableDeclaration","src":"2458:17:6"}],"id":9511,"name":"ParameterList","src":"2442:34:6"},{"attributes":{"parameters":[null]},"children":[],"id":9512,"name":"ParameterList","src":"2485:0:6"}],"id":9513,"name":"FunctionDefinition","src":"2422:64:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9520,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9514,"name":"ElementaryTypeName","src":"2509:7:6"}],"id":9515,"name":"VariableDeclaration","src":"2509:13:6"},{"attributes":{"constant":false,"name":"_owner","scope":9520,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9516,"name":"ElementaryTypeName","src":"2524:7:6"}],"id":9517,"name":"VariableDeclaration","src":"2524:14:6"}],"id":9518,"name":"ParameterList","src":"2508:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":9519,"name":"ParameterList","src":"2548:0:6"}],"id":9520,"name":"FunctionDefinition","src":"2491:58:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9527,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9521,"name":"ElementaryTypeName","src":"2570:7:6"}],"id":9522,"name":"VariableDeclaration","src":"2570:13:6"},{"attributes":{"constant":false,"name":"_ttl","scope":9527,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9523,"name":"ElementaryTypeName","src":"2585:6:6"}],"id":9524,"name":"VariableDeclaration","src":"2585:11:6"}],"id":9525,"name":"ParameterList","src":"2569:28:6"},{"attributes":{"parameters":[null]},"children":[],"id":9526,"name":"ParameterList","src":"2606:0:6"}],"id":9527,"name":"FunctionDefinition","src":"2554:53:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":9534,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9528,"name":"ElementaryTypeName","src":"2639:7:6"}],"id":9529,"name":"VariableDeclaration","src":"2639:17:6"},{"attributes":{"constant":false,"name":"_approved","scope":9534,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9530,"name":"ElementaryTypeName","src":"2658:4:6"}],"id":9531,"name":"VariableDeclaration","src":"2658:14:6"}],"id":9532,"name":"ParameterList","src":"2638:35:6"},{"attributes":{"parameters":[null]},"children":[],"id":9533,"name":"ParameterList","src":"2682:0:6"}],"id":9534,"name":"FunctionDefinition","src":"2612:71:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9541,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9535,"name":"ElementaryTypeName","src":"2703:7:6"}],"id":9536,"name":"VariableDeclaration","src":"2703:13:6"}],"id":9537,"name":"ParameterList","src":"2702:15:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9541,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9538,"name":"ElementaryTypeName","src":"2741:7:6"}],"id":9539,"name":"VariableDeclaration","src":"2741:7:6"}],"id":9540,"name":"ParameterList","src":"2740:9:6"}],"id":9541,"name":"FunctionDefinition","src":"2688:62:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9548,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9542,"name":"ElementaryTypeName","src":"2773:7:6"}],"id":9543,"name":"VariableDeclaration","src":"2773:13:6"}],"id":9544,"name":"ParameterList","src":"2772:15:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9548,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9545,"name":"ElementaryTypeName","src":"2811:7:6"}],"id":9546,"name":"VariableDeclaration","src":"2811:7:6"}],"id":9547,"name":"ParameterList","src":"2810:9:6"}],"id":9548,"name":"FunctionDefinition","src":"2755:65:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9555,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9549,"name":"ElementaryTypeName","src":"2838:7:6"}],"id":9550,"name":"VariableDeclaration","src":"2838:13:6"}],"id":9551,"name":"ParameterList","src":"2837:15:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9555,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9552,"name":"ElementaryTypeName","src":"2876:6:6"}],"id":9553,"name":"VariableDeclaration","src":"2876:6:6"}],"id":9554,"name":"ParameterList","src":"2875:8:6"}],"id":9555,"name":"FunctionDefinition","src":"2825:59:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9562,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9556,"name":"ElementaryTypeName","src":"2911:7:6"}],"id":9557,"name":"VariableDeclaration","src":"2911:13:6"}],"id":9558,"name":"ParameterList","src":"2910:15:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9562,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9559,"name":"ElementaryTypeName","src":"2949:4:6"}],"id":9560,"name":"VariableDeclaration","src":"2949:4:6"}],"id":9561,"name":"ParameterList","src":"2948:6:6"}],"id":9562,"name":"FunctionDefinition","src":"2889:66:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":9571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9563,"name":"ElementaryTypeName","src":"2986:7:6"}],"id":9564,"name":"VariableDeclaration","src":"2986:14:6"},{"attributes":{"constant":false,"name":"_operator","scope":9571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9565,"name":"ElementaryTypeName","src":"3002:7:6"}],"id":9566,"name":"VariableDeclaration","src":"3002:17:6"}],"id":9567,"name":"ParameterList","src":"2985:35:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9571,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9568,"name":"ElementaryTypeName","src":"3044:4:6"}],"id":9569,"name":"VariableDeclaration","src":"3044:4:6"}],"id":9570,"name":"ParameterList","src":"3043:6:6"}],"id":9571,"name":"FunctionDefinition","src":"2960:90:6"}],"id":9572,"name":"ContractDefinition","src":"1425:1627:6"}],"id":9573,"name":"SourceUnit","src":"1400:1653:6"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[15694]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":14975,"name":"PragmaDirective","src":"0:24:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[15694],"name":"ENSBytesUtils","scope":15695},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14997,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14976,"name":"ElementaryTypeName","src":"325:5:7"}],"id":14977,"name":"VariableDeclaration","src":"325:17:7"},{"attributes":{"constant":false,"name":"offset","scope":14997,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14978,"name":"ElementaryTypeName","src":"344:4:7"}],"id":14979,"name":"VariableDeclaration","src":"344:11:7"},{"attributes":{"constant":false,"name":"len","scope":14997,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14980,"name":"ElementaryTypeName","src":"357:4:7"}],"id":14981,"name":"VariableDeclaration","src":"357:8:7"}],"id":14982,"name":"ParameterList","src":"324:42:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":14997,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":14983,"name":"ElementaryTypeName","src":"390:7:7"}],"id":14984,"name":"VariableDeclaration","src":"390:11:7"}],"id":14985,"name":"ParameterList","src":"389:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":14986,"name":"Identifier","src":"413:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14979,"type":"uint256","value":"offset"},"id":14987,"name":"Identifier","src":"421:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14981,"type":"uint256","value":"len"},"id":14988,"name":"Identifier","src":"430:3:7"}],"id":14989,"name":"BinaryOperation","src":"421:12:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14977,"type":"bytes memory","value":"self"},"id":14990,"name":"Identifier","src":"437:4:7"}],"id":14991,"name":"MemberAccess","src":"437:11:7"}],"id":14992,"name":"BinaryOperation","src":"421:27:7"}],"id":14993,"name":"FunctionCall","src":"413:36:7"}],"id":14994,"name":"ExpressionStatement","src":"413:36:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":14984,"isOffset":false,"isSlot":false,"src":"482:3:7","valueSize":1}},{"self":{"declaration":14977,"isOffset":false,"isSlot":false,"src":"507:4:7","valueSize":1}},{"offset":{"declaration":14979,"isOffset":false,"isSlot":false,"src":"518:6:7","valueSize":1}},{"len":{"declaration":14981,"isOffset":false,"isSlot":false,"src":"527:3:7","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":14995,"name":"InlineAssembly","src":"459:82:7"}],"id":14996,"name":"Block","src":"403:144:7"}],"id":14997,"name":"FunctionDefinition","src":"309:238:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15018,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14998,"name":"ElementaryTypeName","src":"920:5:7"}],"id":14999,"name":"VariableDeclaration","src":"920:17:7"},{"attributes":{"constant":false,"name":"other","scope":15018,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15000,"name":"ElementaryTypeName","src":"939:5:7"}],"id":15001,"name":"VariableDeclaration","src":"939:18:7"}],"id":15002,"name":"ParameterList","src":"919:39:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15018,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":15003,"name":"ElementaryTypeName","src":"982:3:7"}],"id":15004,"name":"VariableDeclaration","src":"982:3:7"}],"id":15005,"name":"ParameterList","src":"981:5:7"},{"children":[{"attributes":{"functionReturnParameters":15005},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[15018,15150],"referencedDeclaration":15150,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":15006,"name":"Identifier","src":"1004:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14999,"type":"bytes memory","value":"self"},"id":15007,"name":"Identifier","src":"1012:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15008,"name":"Literal","src":"1018:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14999,"type":"bytes memory","value":"self"},"id":15009,"name":"Identifier","src":"1021:4:7"}],"id":15010,"name":"MemberAccess","src":"1021:11:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15001,"type":"bytes memory","value":"other"},"id":15011,"name":"Identifier","src":"1034:5:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15012,"name":"Literal","src":"1041:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15001,"type":"bytes memory","value":"other"},"id":15013,"name":"Identifier","src":"1044:5:7"}],"id":15014,"name":"MemberAccess","src":"1044:12:7"}],"id":15015,"name":"FunctionCall","src":"1004:53:7"}],"id":15016,"name":"Return","src":"997:60:7"}],"id":15017,"name":"Block","src":"987:77:7"}],"id":15018,"name":"FunctionDefinition","src":"903:161:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15150,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15019,"name":"ElementaryTypeName","src":"1694:5:7"}],"id":15020,"name":"VariableDeclaration","src":"1694:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15021,"name":"ElementaryTypeName","src":"1713:4:7"}],"id":15022,"name":"VariableDeclaration","src":"1713:11:7"},{"attributes":{"constant":false,"name":"len","scope":15150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15023,"name":"ElementaryTypeName","src":"1726:4:7"}],"id":15024,"name":"VariableDeclaration","src":"1726:8:7"},{"attributes":{"constant":false,"name":"other","scope":15150,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15025,"name":"ElementaryTypeName","src":"1736:5:7"}],"id":15026,"name":"VariableDeclaration","src":"1736:18:7"},{"attributes":{"constant":false,"name":"otheroffset","scope":15150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15027,"name":"ElementaryTypeName","src":"1756:4:7"}],"id":15028,"name":"VariableDeclaration","src":"1756:16:7"},{"attributes":{"constant":false,"name":"otherlen","scope":15150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15029,"name":"ElementaryTypeName","src":"1774:4:7"}],"id":15030,"name":"VariableDeclaration","src":"1774:13:7"}],"id":15031,"name":"ParameterList","src":"1693:95:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15150,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":15032,"name":"ElementaryTypeName","src":"1812:3:7"}],"id":15033,"name":"VariableDeclaration","src":"1812:3:7"}],"id":15034,"name":"ParameterList","src":"1811:5:7"},{"children":[{"attributes":{"assignments":[15036]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":15149,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15035,"name":"ElementaryTypeName","src":"1827:4:7"}],"id":15036,"name":"VariableDeclaration","src":"1827:13:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15024,"type":"uint256","value":"len"},"id":15037,"name":"Identifier","src":"1843:3:7"}],"id":15038,"name":"VariableDeclarationStatement","src":"1827:19:7"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15030,"type":"uint256","value":"otherlen"},"id":15039,"name":"Identifier","src":"1860:8:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15024,"type":"uint256","value":"len"},"id":15040,"name":"Identifier","src":"1871:3:7"}],"id":15041,"name":"BinaryOperation","src":"1860:14:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15036,"type":"uint256","value":"shortest"},"id":15042,"name":"Identifier","src":"1884:8:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15030,"type":"uint256","value":"otherlen"},"id":15043,"name":"Identifier","src":"1895:8:7"}],"id":15044,"name":"Assignment","src":"1884:19:7"}],"id":15045,"name":"ExpressionStatement","src":"1884:19:7"}],"id":15046,"name":"IfStatement","src":"1856:47:7"},{"attributes":{"assignments":[15048],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":15149,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15047,"name":"ElementaryTypeName","src":"1914:4:7"}],"id":15048,"name":"VariableDeclaration","src":"1914:12:7"}],"id":15049,"name":"VariableDeclarationStatement","src":"1914:12:7"},{"attributes":{"assignments":[15051],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":15149,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15050,"name":"ElementaryTypeName","src":"1936:4:7"}],"id":15051,"name":"VariableDeclaration","src":"1936:13:7"}],"id":15052,"name":"VariableDeclarationStatement","src":"1936:13:7"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":15048,"isOffset":false,"isSlot":false,"src":"1983:7:7","valueSize":1}},{"otherptr":{"declaration":15051,"isOffset":false,"isSlot":false,"src":"2033:8:7","valueSize":1}},{"offset":{"declaration":15022,"isOffset":false,"isSlot":false,"src":"2008:6:7","valueSize":1}},{"self":{"declaration":15020,"isOffset":false,"isSlot":false,"src":"1998:4:7","valueSize":1}},{"other":{"declaration":15026,"isOffset":false,"isSlot":false,"src":"2049:5:7","valueSize":1}},{"otheroffset":{"declaration":15028,"isOffset":false,"isSlot":false,"src":"2060:11:7","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":15053,"name":"InlineAssembly","src":"1960:127:7"},{"children":[{"attributes":{"assignments":[15055]},"children":[{"attributes":{"constant":false,"name":"idx","scope":15140,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15054,"name":"ElementaryTypeName","src":"2101:4:7"}],"id":15055,"name":"VariableDeclaration","src":"2101:8:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15056,"name":"Literal","src":"2112:1:7"}],"id":15057,"name":"VariableDeclarationStatement","src":"2101:12:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15055,"type":"uint256","value":"idx"},"id":15058,"name":"Identifier","src":"2115:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15036,"type":"uint256","value":"shortest"},"id":15059,"name":"Identifier","src":"2121:8:7"}],"id":15060,"name":"BinaryOperation","src":"2115:14:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15055,"type":"uint256","value":"idx"},"id":15061,"name":"Identifier","src":"2131:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15062,"name":"Literal","src":"2138:2:7"}],"id":15063,"name":"Assignment","src":"2131:9:7"}],"id":15064,"name":"ExpressionStatement","src":"2131:9:7"},{"children":[{"attributes":{"assignments":[15066],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":15139,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15065,"name":"ElementaryTypeName","src":"2156:4:7"}],"id":15066,"name":"VariableDeclaration","src":"2156:6:7"}],"id":15067,"name":"VariableDeclarationStatement","src":"2156:6:7"},{"attributes":{"assignments":[15069],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":15139,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15068,"name":"ElementaryTypeName","src":"2176:4:7"}],"id":15069,"name":"VariableDeclaration","src":"2176:6:7"}],"id":15070,"name":"VariableDeclarationStatement","src":"2176:6:7"},{"attributes":{"externalReferences":[{"a":{"declaration":15066,"isOffset":false,"isSlot":false,"src":"2223:1:7","valueSize":1}},{"selfptr":{"declaration":15048,"isOffset":false,"isSlot":false,"src":"2234:7:7","valueSize":1}},{"b":{"declaration":15069,"isOffset":false,"isSlot":false,"src":"2259:1:7","valueSize":1}},{"otherptr":{"declaration":15051,"isOffset":false,"isSlot":false,"src":"2270:8:7","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":15071,"name":"InlineAssembly","src":"2196:97:7"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15066,"type":"uint256","value":"a"},"id":15072,"name":"Identifier","src":"2310:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15069,"type":"uint256","value":"b"},"id":15073,"name":"Identifier","src":"2315:1:7"}],"id":15074,"name":"BinaryOperation","src":"2310:6:7"},{"children":[{"attributes":{"assignments":[15076],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":15129,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15075,"name":"ElementaryTypeName","src":"2397:4:7"}],"id":15076,"name":"VariableDeclaration","src":"2397:9:7"}],"id":15077,"name":"VariableDeclarationStatement","src":"2397:9:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15036,"type":"uint256","value":"shortest"},"id":15078,"name":"Identifier","src":"2428:8:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15079,"name":"Literal","src":"2439:2:7"}],"id":15080,"name":"BinaryOperation","src":"2428:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15076,"type":"uint256","value":"mask"},"id":15081,"name":"Identifier","src":"2465:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":15082,"name":"ElementaryTypeNameExpression","src":"2472:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15083,"name":"Literal","src":"2482:1:7"}],"id":15084,"name":"UnaryOperation","src":"2480:3:7"}],"id":15085,"name":"FunctionCall","src":"2472:12:7"}],"id":15086,"name":"Assignment","src":"2465:19:7"}],"id":15087,"name":"ExpressionStatement","src":"2465:19:7"}],"id":15088,"name":"Block","src":"2443:80:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15076,"type":"uint256","value":"mask"},"id":15089,"name":"Identifier","src":"2551:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15090,"name":"Literal","src":"2560:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15091,"name":"Literal","src":"2566:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15092,"name":"Literal","src":"2571:2:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15036,"type":"uint256","value":"shortest"},"id":15093,"name":"Identifier","src":"2576:8:7"}],"id":15094,"name":"BinaryOperation","src":"2571:13:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15055,"type":"uint256","value":"idx"},"id":15095,"name":"Identifier","src":"2587:3:7"}],"id":15096,"name":"BinaryOperation","src":"2571:19:7"}],"id":15097,"name":"TupleExpression","src":"2570:21:7"}],"id":15098,"name":"BinaryOperation","src":"2566:25:7"}],"id":15099,"name":"TupleExpression","src":"2565:27:7"}],"id":15100,"name":"BinaryOperation","src":"2560:32:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15101,"name":"Literal","src":"2595:1:7"}],"id":15102,"name":"BinaryOperation","src":"2560:36:7"}],"id":15103,"name":"TupleExpression","src":"2559:38:7"}],"id":15104,"name":"UnaryOperation","src":"2558:39:7"}],"id":15105,"name":"Assignment","src":"2551:46:7"}],"id":15106,"name":"ExpressionStatement","src":"2551:46:7"}],"id":15107,"name":"Block","src":"2529:87:7"}],"id":15108,"name":"IfStatement","src":"2424:192:7"},{"attributes":{"assignments":[15110]},"children":[{"attributes":{"constant":false,"name":"diff","scope":15129,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15109,"name":"ElementaryTypeName","src":"2633:4:7"}],"id":15110,"name":"VariableDeclaration","src":"2633:9:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15066,"type":"uint256","value":"a"},"id":15111,"name":"Identifier","src":"2646:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15076,"type":"uint256","value":"mask"},"id":15112,"name":"Identifier","src":"2650:4:7"}],"id":15113,"name":"BinaryOperation","src":"2646:8:7"}],"id":15114,"name":"TupleExpression","src":"2645:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15069,"type":"uint256","value":"b"},"id":15115,"name":"Identifier","src":"2659:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15076,"type":"uint256","value":"mask"},"id":15116,"name":"Identifier","src":"2663:4:7"}],"id":15117,"name":"BinaryOperation","src":"2659:8:7"}],"id":15118,"name":"TupleExpression","src":"2658:10:7"}],"id":15119,"name":"BinaryOperation","src":"2645:23:7"}],"id":15120,"name":"VariableDeclarationStatement","src":"2633:35:7"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15110,"type":"uint256","value":"diff"},"id":15121,"name":"Identifier","src":"2690:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15122,"name":"Literal","src":"2698:1:7"}],"id":15123,"name":"BinaryOperation","src":"2690:9:7"},{"attributes":{"functionReturnParameters":15034},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":15124,"name":"ElementaryTypeNameExpression","src":"2724:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15110,"type":"uint256","value":"diff"},"id":15125,"name":"Identifier","src":"2728:4:7"}],"id":15126,"name":"FunctionCall","src":"2724:9:7"}],"id":15127,"name":"Return","src":"2717:16:7"}],"id":15128,"name":"IfStatement","src":"2686:47:7"}],"id":15129,"name":"Block","src":"2318:430:7"}],"id":15130,"name":"IfStatement","src":"2306:442:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15048,"type":"uint256","value":"selfptr"},"id":15131,"name":"Identifier","src":"2761:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15132,"name":"Literal","src":"2772:2:7"}],"id":15133,"name":"Assignment","src":"2761:13:7"}],"id":15134,"name":"ExpressionStatement","src":"2761:13:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15051,"type":"uint256","value":"otherptr"},"id":15135,"name":"Identifier","src":"2788:8:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15136,"name":"Literal","src":"2800:2:7"}],"id":15137,"name":"Assignment","src":"2788:14:7"}],"id":15138,"name":"ExpressionStatement","src":"2788:14:7"}],"id":15139,"name":"Block","src":"2142:671:7"}],"id":15140,"name":"ForStatement","src":"2096:717:7"},{"attributes":{"functionReturnParameters":15034},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":15141,"name":"ElementaryTypeNameExpression","src":"2830:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15024,"type":"uint256","value":"len"},"id":15142,"name":"Identifier","src":"2834:3:7"}],"id":15143,"name":"FunctionCall","src":"2830:8:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":15144,"name":"ElementaryTypeNameExpression","src":"2841:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15030,"type":"uint256","value":"otherlen"},"id":15145,"name":"Identifier","src":"2845:8:7"}],"id":15146,"name":"FunctionCall","src":"2841:13:7"}],"id":15147,"name":"BinaryOperation","src":"2830:24:7"}],"id":15148,"name":"Return","src":"2823:31:7"}],"id":15149,"name":"Block","src":"1817:1044:7"}],"id":15150,"name":"FunctionDefinition","src":"1677:1184:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15178,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15151,"name":"ElementaryTypeName","src":"3295:5:7"}],"id":15152,"name":"VariableDeclaration","src":"3295:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15178,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15153,"name":"ElementaryTypeName","src":"3314:4:7"}],"id":15154,"name":"VariableDeclaration","src":"3314:11:7"},{"attributes":{"constant":false,"name":"other","scope":15178,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15155,"name":"ElementaryTypeName","src":"3327:5:7"}],"id":15156,"name":"VariableDeclaration","src":"3327:18:7"},{"attributes":{"constant":false,"name":"otherOffset","scope":15178,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15157,"name":"ElementaryTypeName","src":"3347:4:7"}],"id":15158,"name":"VariableDeclaration","src":"3347:16:7"},{"attributes":{"constant":false,"name":"len","scope":15178,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15159,"name":"ElementaryTypeName","src":"3365:4:7"}],"id":15160,"name":"VariableDeclaration","src":"3365:8:7"}],"id":15161,"name":"ParameterList","src":"3294:80:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15178,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":15162,"name":"ElementaryTypeName","src":"3398:4:7"}],"id":15163,"name":"VariableDeclaration","src":"3398:4:7"}],"id":15164,"name":"ParameterList","src":"3397:6:7"},{"children":[{"attributes":{"functionReturnParameters":15164},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14997,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":15165,"name":"Identifier","src":"3421:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15152,"type":"bytes memory","value":"self"},"id":15166,"name":"Identifier","src":"3428:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15154,"type":"uint256","value":"offset"},"id":15167,"name":"Identifier","src":"3434:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15160,"type":"uint256","value":"len"},"id":15168,"name":"Identifier","src":"3442:3:7"}],"id":15169,"name":"FunctionCall","src":"3421:25:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14997,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":15170,"name":"Identifier","src":"3450:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15156,"type":"bytes memory","value":"other"},"id":15171,"name":"Identifier","src":"3457:5:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15158,"type":"uint256","value":"otherOffset"},"id":15172,"name":"Identifier","src":"3464:11:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15160,"type":"uint256","value":"len"},"id":15173,"name":"Identifier","src":"3477:3:7"}],"id":15174,"name":"FunctionCall","src":"3450:31:7"}],"id":15175,"name":"BinaryOperation","src":"3421:60:7"}],"id":15176,"name":"Return","src":"3414:67:7"}],"id":15177,"name":"Block","src":"3404:84:7"}],"id":15178,"name":"FunctionDefinition","src":"3279:209:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15210,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15179,"name":"ElementaryTypeName","src":"3887:5:7"}],"id":15180,"name":"VariableDeclaration","src":"3887:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15181,"name":"ElementaryTypeName","src":"3906:4:7"}],"id":15182,"name":"VariableDeclaration","src":"3906:11:7"},{"attributes":{"constant":false,"name":"other","scope":15210,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15183,"name":"ElementaryTypeName","src":"3919:5:7"}],"id":15184,"name":"VariableDeclaration","src":"3919:18:7"},{"attributes":{"constant":false,"name":"otherOffset","scope":15210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15185,"name":"ElementaryTypeName","src":"3939:4:7"}],"id":15186,"name":"VariableDeclaration","src":"3939:16:7"}],"id":15187,"name":"ParameterList","src":"3886:70:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15210,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":15188,"name":"ElementaryTypeName","src":"3980:4:7"}],"id":15189,"name":"VariableDeclaration","src":"3980:4:7"}],"id":15190,"name":"ParameterList","src":"3979:6:7"},{"children":[{"attributes":{"functionReturnParameters":15190},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14997,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":15191,"name":"Identifier","src":"4003:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15180,"type":"bytes memory","value":"self"},"id":15192,"name":"Identifier","src":"4010:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15182,"type":"uint256","value":"offset"},"id":15193,"name":"Identifier","src":"4016:6:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15180,"type":"bytes memory","value":"self"},"id":15194,"name":"Identifier","src":"4024:4:7"}],"id":15195,"name":"MemberAccess","src":"4024:11:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15182,"type":"uint256","value":"offset"},"id":15196,"name":"Identifier","src":"4038:6:7"}],"id":15197,"name":"BinaryOperation","src":"4024:20:7"}],"id":15198,"name":"FunctionCall","src":"4003:42:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14997,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":15199,"name":"Identifier","src":"4049:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15184,"type":"bytes memory","value":"other"},"id":15200,"name":"Identifier","src":"4056:5:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15186,"type":"uint256","value":"otherOffset"},"id":15201,"name":"Identifier","src":"4063:11:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15184,"type":"bytes memory","value":"other"},"id":15202,"name":"Identifier","src":"4076:5:7"}],"id":15203,"name":"MemberAccess","src":"4076:12:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15186,"type":"uint256","value":"otherOffset"},"id":15204,"name":"Identifier","src":"4091:11:7"}],"id":15205,"name":"BinaryOperation","src":"4076:26:7"}],"id":15206,"name":"FunctionCall","src":"4049:54:7"}],"id":15207,"name":"BinaryOperation","src":"4003:100:7"}],"id":15208,"name":"Return","src":"3996:107:7"}],"id":15209,"name":"Block","src":"3986:124:7"}],"id":15210,"name":"FunctionDefinition","src":"3871:239:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15239,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15211,"name":"ElementaryTypeName","src":"4478:5:7"}],"id":15212,"name":"VariableDeclaration","src":"4478:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15239,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15213,"name":"ElementaryTypeName","src":"4497:4:7"}],"id":15214,"name":"VariableDeclaration","src":"4497:11:7"},{"attributes":{"constant":false,"name":"other","scope":15239,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15215,"name":"ElementaryTypeName","src":"4510:5:7"}],"id":15216,"name":"VariableDeclaration","src":"4510:18:7"}],"id":15217,"name":"ParameterList","src":"4477:52:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15239,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":15218,"name":"ElementaryTypeName","src":"4553:4:7"}],"id":15219,"name":"VariableDeclaration","src":"4553:4:7"}],"id":15220,"name":"ParameterList","src":"4552:6:7"},{"children":[{"attributes":{"functionReturnParameters":15220},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15212,"type":"bytes memory","value":"self"},"id":15221,"name":"Identifier","src":"4576:4:7"}],"id":15222,"name":"MemberAccess","src":"4576:11:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15214,"type":"uint256","value":"offset"},"id":15223,"name":"Identifier","src":"4591:6:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15216,"type":"bytes memory","value":"other"},"id":15224,"name":"Identifier","src":"4600:5:7"}],"id":15225,"name":"MemberAccess","src":"4600:12:7"}],"id":15226,"name":"BinaryOperation","src":"4591:21:7"}],"id":15227,"name":"BinaryOperation","src":"4576:36:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[15178,15210,15239,15264],"referencedDeclaration":15178,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":15228,"name":"Identifier","src":"4616:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15212,"type":"bytes memory","value":"self"},"id":15229,"name":"Identifier","src":"4623:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15214,"type":"uint256","value":"offset"},"id":15230,"name":"Identifier","src":"4629:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15216,"type":"bytes memory","value":"other"},"id":15231,"name":"Identifier","src":"4637:5:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15232,"name":"Literal","src":"4644:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15216,"type":"bytes memory","value":"other"},"id":15233,"name":"Identifier","src":"4647:5:7"}],"id":15234,"name":"MemberAccess","src":"4647:12:7"}],"id":15235,"name":"FunctionCall","src":"4616:44:7"}],"id":15236,"name":"BinaryOperation","src":"4576:84:7"}],"id":15237,"name":"Return","src":"4569:91:7"}],"id":15238,"name":"Block","src":"4559:108:7"}],"id":15239,"name":"FunctionDefinition","src":"4462:205:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15264,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15240,"name":"ElementaryTypeName","src":"4931:5:7"}],"id":15241,"name":"VariableDeclaration","src":"4931:17:7"},{"attributes":{"constant":false,"name":"other","scope":15264,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15242,"name":"ElementaryTypeName","src":"4950:5:7"}],"id":15243,"name":"VariableDeclaration","src":"4950:18:7"}],"id":15244,"name":"ParameterList","src":"4930:39:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15264,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":15245,"name":"ElementaryTypeName","src":"4992:4:7"}],"id":15246,"name":"VariableDeclaration","src":"4992:4:7"}],"id":15247,"name":"ParameterList","src":"4991:6:7"},{"children":[{"attributes":{"functionReturnParameters":15247},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15241,"type":"bytes memory","value":"self"},"id":15248,"name":"Identifier","src":"5015:4:7"}],"id":15249,"name":"MemberAccess","src":"5015:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15243,"type":"bytes memory","value":"other"},"id":15250,"name":"Identifier","src":"5030:5:7"}],"id":15251,"name":"MemberAccess","src":"5030:12:7"}],"id":15252,"name":"BinaryOperation","src":"5015:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[15178,15210,15239,15264],"referencedDeclaration":15178,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":15253,"name":"Identifier","src":"5046:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15241,"type":"bytes memory","value":"self"},"id":15254,"name":"Identifier","src":"5053:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15255,"name":"Literal","src":"5059:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15243,"type":"bytes memory","value":"other"},"id":15256,"name":"Identifier","src":"5062:5:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15257,"name":"Literal","src":"5069:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15241,"type":"bytes memory","value":"self"},"id":15258,"name":"Identifier","src":"5072:4:7"}],"id":15259,"name":"MemberAccess","src":"5072:11:7"}],"id":15260,"name":"FunctionCall","src":"5046:38:7"}],"id":15261,"name":"BinaryOperation","src":"5015:69:7"}],"id":15262,"name":"Return","src":"5008:76:7"}],"id":15263,"name":"Block","src":"4998:93:7"}],"id":15264,"name":"FunctionDefinition","src":"4915:176:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15280,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15265,"name":"ElementaryTypeName","src":"5352:5:7"}],"id":15266,"name":"VariableDeclaration","src":"5352:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15267,"name":"ElementaryTypeName","src":"5371:4:7"}],"id":15268,"name":"VariableDeclaration","src":"5371:8:7"}],"id":15269,"name":"ParameterList","src":"5351:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15280,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":15270,"name":"ElementaryTypeName","src":"5404:5:7"}],"id":15271,"name":"VariableDeclaration","src":"5404:9:7"}],"id":15272,"name":"ParameterList","src":"5403:11:7"},{"children":[{"attributes":{"functionReturnParameters":15272},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":15273,"name":"ElementaryTypeNameExpression","src":"5432:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15266,"type":"bytes memory","value":"self"},"id":15274,"name":"Identifier","src":"5438:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15268,"type":"uint256","value":"idx"},"id":15275,"name":"Identifier","src":"5443:3:7"}],"id":15276,"name":"IndexAccess","src":"5438:9:7"}],"id":15277,"name":"FunctionCall","src":"5432:16:7"}],"id":15278,"name":"Return","src":"5425:23:7"}],"id":15279,"name":"Block","src":"5415:40:7"}],"id":15280,"name":"FunctionDefinition","src":"5333:122:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15300,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15281,"name":"ElementaryTypeName","src":"5719:5:7"}],"id":15282,"name":"VariableDeclaration","src":"5719:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15283,"name":"ElementaryTypeName","src":"5738:4:7"}],"id":15284,"name":"VariableDeclaration","src":"5738:8:7"}],"id":15285,"name":"ParameterList","src":"5718:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15300,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":15286,"name":"ElementaryTypeName","src":"5771:6:7"}],"id":15287,"name":"VariableDeclaration","src":"5771:10:7"}],"id":15288,"name":"ParameterList","src":"5770:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15289,"name":"Identifier","src":"5793:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15284,"type":"uint256","value":"idx"},"id":15290,"name":"Identifier","src":"5801:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15291,"name":"Literal","src":"5807:1:7"}],"id":15292,"name":"BinaryOperation","src":"5801:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15282,"type":"bytes memory","value":"self"},"id":15293,"name":"Identifier","src":"5812:4:7"}],"id":15294,"name":"MemberAccess","src":"5812:11:7"}],"id":15295,"name":"BinaryOperation","src":"5801:22:7"}],"id":15296,"name":"FunctionCall","src":"5793:31:7"}],"id":15297,"name":"ExpressionStatement","src":"5793:31:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":15287,"isOffset":false,"isSlot":false,"src":"5857:3:7","valueSize":1}},{"self":{"declaration":15282,"isOffset":false,"isSlot":false,"src":"5882:4:7","valueSize":1}},{"idx":{"declaration":15284,"isOffset":false,"isSlot":false,"src":"5892:3:7","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":15298,"name":"InlineAssembly","src":"5834:82:7"}],"id":15299,"name":"Block","src":"5783:139:7"}],"id":15300,"name":"FunctionDefinition","src":"5699:223:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15320,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15301,"name":"ElementaryTypeName","src":"6186:5:7"}],"id":15302,"name":"VariableDeclaration","src":"6186:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15320,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15303,"name":"ElementaryTypeName","src":"6205:4:7"}],"id":15304,"name":"VariableDeclaration","src":"6205:8:7"}],"id":15305,"name":"ParameterList","src":"6185:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15320,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":15306,"name":"ElementaryTypeName","src":"6238:6:7"}],"id":15307,"name":"VariableDeclaration","src":"6238:10:7"}],"id":15308,"name":"ParameterList","src":"6237:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15309,"name":"Identifier","src":"6260:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15304,"type":"uint256","value":"idx"},"id":15310,"name":"Identifier","src":"6268:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15311,"name":"Literal","src":"6274:1:7"}],"id":15312,"name":"BinaryOperation","src":"6268:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15302,"type":"bytes memory","value":"self"},"id":15313,"name":"Identifier","src":"6279:4:7"}],"id":15314,"name":"MemberAccess","src":"6279:11:7"}],"id":15315,"name":"BinaryOperation","src":"6268:22:7"}],"id":15316,"name":"FunctionCall","src":"6260:31:7"}],"id":15317,"name":"ExpressionStatement","src":"6260:31:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":15307,"isOffset":false,"isSlot":false,"src":"6324:3:7","valueSize":1}},{"self":{"declaration":15302,"isOffset":false,"isSlot":false,"src":"6349:4:7","valueSize":1}},{"idx":{"declaration":15304,"isOffset":false,"isSlot":false,"src":"6359:3:7","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":15318,"name":"InlineAssembly","src":"6301:86:7"}],"id":15319,"name":"Block","src":"6250:143:7"}],"id":15320,"name":"FunctionDefinition","src":"6166:227:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15340,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15321,"name":"ElementaryTypeName","src":"6632:5:7"}],"id":15322,"name":"VariableDeclaration","src":"6632:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15340,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15323,"name":"ElementaryTypeName","src":"6651:4:7"}],"id":15324,"name":"VariableDeclaration","src":"6651:8:7"}],"id":15325,"name":"ParameterList","src":"6631:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15340,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":15326,"name":"ElementaryTypeName","src":"6684:7:7"}],"id":15327,"name":"VariableDeclaration","src":"6684:11:7"}],"id":15328,"name":"ParameterList","src":"6683:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15329,"name":"Identifier","src":"6707:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15324,"type":"uint256","value":"idx"},"id":15330,"name":"Identifier","src":"6715:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15331,"name":"Literal","src":"6721:2:7"}],"id":15332,"name":"BinaryOperation","src":"6715:8:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15322,"type":"bytes memory","value":"self"},"id":15333,"name":"Identifier","src":"6727:4:7"}],"id":15334,"name":"MemberAccess","src":"6727:11:7"}],"id":15335,"name":"BinaryOperation","src":"6715:23:7"}],"id":15336,"name":"FunctionCall","src":"6707:32:7"}],"id":15337,"name":"ExpressionStatement","src":"6707:32:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":15327,"isOffset":false,"isSlot":false,"src":"6772:3:7","valueSize":1}},{"self":{"declaration":15322,"isOffset":false,"isSlot":false,"src":"6793:4:7","valueSize":1}},{"idx":{"declaration":15324,"isOffset":false,"isSlot":false,"src":"6804:3:7","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":15338,"name":"InlineAssembly","src":"6749:70:7"}],"id":15339,"name":"Block","src":"6697:128:7"}],"id":15340,"name":"FunctionDefinition","src":"6611:214:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15360,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15341,"name":"ElementaryTypeName","src":"7064:5:7"}],"id":15342,"name":"VariableDeclaration","src":"7064:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15360,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15343,"name":"ElementaryTypeName","src":"7083:4:7"}],"id":15344,"name":"VariableDeclaration","src":"7083:8:7"}],"id":15345,"name":"ParameterList","src":"7063:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15360,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":15346,"name":"ElementaryTypeName","src":"7116:7:7"}],"id":15347,"name":"VariableDeclaration","src":"7116:11:7"}],"id":15348,"name":"ParameterList","src":"7115:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15349,"name":"Identifier","src":"7139:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15344,"type":"uint256","value":"idx"},"id":15350,"name":"Identifier","src":"7147:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":15351,"name":"Literal","src":"7153:2:7"}],"id":15352,"name":"BinaryOperation","src":"7147:8:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15342,"type":"bytes memory","value":"self"},"id":15353,"name":"Identifier","src":"7159:4:7"}],"id":15354,"name":"MemberAccess","src":"7159:11:7"}],"id":15355,"name":"BinaryOperation","src":"7147:23:7"}],"id":15356,"name":"FunctionCall","src":"7139:32:7"}],"id":15357,"name":"ExpressionStatement","src":"7139:32:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":15347,"isOffset":false,"isSlot":false,"src":"7204:3:7","valueSize":1}},{"self":{"declaration":15342,"isOffset":false,"isSlot":false,"src":"7229:4:7","valueSize":1}},{"idx":{"declaration":15344,"isOffset":false,"isSlot":false,"src":"7240:3:7","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":15358,"name":"InlineAssembly","src":"7181:143:7"}],"id":15359,"name":"Block","src":"7129:201:7"}],"id":15360,"name":"FunctionDefinition","src":"7043:287:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15388,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15361,"name":"ElementaryTypeName","src":"7606:5:7"}],"id":15362,"name":"VariableDeclaration","src":"7606:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15363,"name":"ElementaryTypeName","src":"7625:4:7"}],"id":15364,"name":"VariableDeclaration","src":"7625:8:7"},{"attributes":{"constant":false,"name":"len","scope":15388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15365,"name":"ElementaryTypeName","src":"7635:4:7"}],"id":15366,"name":"VariableDeclaration","src":"7635:8:7"}],"id":15367,"name":"ParameterList","src":"7605:39:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15388,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":15368,"name":"ElementaryTypeName","src":"7668:7:7"}],"id":15369,"name":"VariableDeclaration","src":"7668:11:7"}],"id":15370,"name":"ParameterList","src":"7667:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15371,"name":"Identifier","src":"7691:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15366,"type":"uint256","value":"len"},"id":15372,"name":"Identifier","src":"7699:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15373,"name":"Literal","src":"7706:2:7"}],"id":15374,"name":"BinaryOperation","src":"7699:9:7"}],"id":15375,"name":"FunctionCall","src":"7691:18:7"}],"id":15376,"name":"ExpressionStatement","src":"7691:18:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15377,"name":"Identifier","src":"7719:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15364,"type":"uint256","value":"idx"},"id":15378,"name":"Identifier","src":"7727:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15366,"type":"uint256","value":"len"},"id":15379,"name":"Identifier","src":"7733:3:7"}],"id":15380,"name":"BinaryOperation","src":"7727:9:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15362,"type":"bytes memory","value":"self"},"id":15381,"name":"Identifier","src":"7740:4:7"}],"id":15382,"name":"MemberAccess","src":"7740:11:7"}],"id":15383,"name":"BinaryOperation","src":"7727:24:7"}],"id":15384,"name":"FunctionCall","src":"7719:33:7"}],"id":15385,"name":"ExpressionStatement","src":"7719:33:7"},{"attributes":{"externalReferences":[{"len":{"declaration":15366,"isOffset":false,"isSlot":false,"src":"7822:3:7","valueSize":1}},{"ret":{"declaration":15369,"isOffset":false,"isSlot":false,"src":"7845:3:7","valueSize":1}},{"self":{"declaration":15362,"isOffset":false,"isSlot":false,"src":"7870:4:7","valueSize":1}},{"idx":{"declaration":15364,"isOffset":false,"isSlot":false,"src":"7881:3:7","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":15386,"name":"InlineAssembly","src":"7762:142:7"}],"id":15387,"name":"Block","src":"7681:229:7"}],"id":15388,"name":"FunctionDefinition","src":"7586:324:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":15428,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15389,"name":"ElementaryTypeName","src":"7932:4:7"}],"id":15390,"name":"VariableDeclaration","src":"7932:9:7"},{"attributes":{"constant":false,"name":"src","scope":15428,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15391,"name":"ElementaryTypeName","src":"7943:4:7"}],"id":15392,"name":"VariableDeclaration","src":"7943:8:7"},{"attributes":{"constant":false,"name":"len","scope":15428,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15393,"name":"ElementaryTypeName","src":"7953:4:7"}],"id":15394,"name":"VariableDeclaration","src":"7953:8:7"}],"id":15395,"name":"ParameterList","src":"7931:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":15396,"name":"ParameterList","src":"7976:0:7"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15394,"type":"uint256","value":"len"},"id":15397,"name":"Identifier","src":"8043:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15398,"name":"Literal","src":"8050:2:7"}],"id":15399,"name":"BinaryOperation","src":"8043:9:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15394,"type":"uint256","value":"len"},"id":15400,"name":"Identifier","src":"8054:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15401,"name":"Literal","src":"8061:2:7"}],"id":15402,"name":"Assignment","src":"8054:9:7"}],"id":15403,"name":"ExpressionStatement","src":"8054:9:7"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":15392,"isOffset":false,"isSlot":false,"src":"8125:3:7","valueSize":1}},{"dest":{"declaration":15390,"isOffset":false,"isSlot":false,"src":"8113:4:7","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":15404,"name":"InlineAssembly","src":"8079:65:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15390,"type":"uint256","value":"dest"},"id":15405,"name":"Identifier","src":"8157:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15406,"name":"Literal","src":"8165:2:7"}],"id":15407,"name":"Assignment","src":"8157:10:7"}],"id":15408,"name":"ExpressionStatement","src":"8157:10:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15392,"type":"uint256","value":"src"},"id":15409,"name":"Identifier","src":"8181:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15410,"name":"Literal","src":"8188:2:7"}],"id":15411,"name":"Assignment","src":"8181:9:7"}],"id":15412,"name":"ExpressionStatement","src":"8181:9:7"}],"id":15413,"name":"Block","src":"8065:136:7"}],"id":15414,"name":"ForStatement","src":"8036:165:7"},{"attributes":{"assignments":[15416]},"children":[{"attributes":{"constant":false,"name":"mask","scope":15427,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15415,"name":"ElementaryTypeName","src":"8243:4:7"}],"id":15416,"name":"VariableDeclaration","src":"8243:9:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":15417,"name":"Literal","src":"8255:3:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15418,"name":"Literal","src":"8263:2:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15394,"type":"uint256","value":"len"},"id":15419,"name":"Identifier","src":"8268:3:7"}],"id":15420,"name":"BinaryOperation","src":"8263:8:7"}],"id":15421,"name":"TupleExpression","src":"8262:10:7"}],"id":15422,"name":"BinaryOperation","src":"8255:17:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15423,"name":"Literal","src":"8275:1:7"}],"id":15424,"name":"BinaryOperation","src":"8255:21:7"}],"id":15425,"name":"VariableDeclarationStatement","src":"8243:33:7"},{"attributes":{"externalReferences":[{"src":{"declaration":15392,"isOffset":false,"isSlot":false,"src":"8334:3:7","valueSize":1}},{"mask":{"declaration":15416,"isOffset":false,"isSlot":false,"src":"8344:4:7","valueSize":1}},{"dest":{"declaration":15390,"isOffset":false,"isSlot":false,"src":"8421:4:7","valueSize":1}},{"dest":{"declaration":15390,"isOffset":false,"isSlot":false,"src":"8389:4:7","valueSize":1}},{"mask":{"declaration":15416,"isOffset":false,"isSlot":false,"src":"8396:4:7","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":15426,"name":"InlineAssembly","src":"8286:173:7"}],"id":15427,"name":"Block","src":"7976:489:7"}],"id":15428,"name":"FunctionDefinition","src":"7916:549:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15471,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15429,"name":"ElementaryTypeName","src":"8704:5:7"}],"id":15430,"name":"VariableDeclaration","src":"8704:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15431,"name":"ElementaryTypeName","src":"8723:4:7"}],"id":15432,"name":"VariableDeclaration","src":"8723:11:7"},{"attributes":{"constant":false,"name":"len","scope":15471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15433,"name":"ElementaryTypeName","src":"8736:4:7"}],"id":15434,"name":"VariableDeclaration","src":"8736:8:7"}],"id":15435,"name":"ParameterList","src":"8703:42:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15471,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15436,"name":"ElementaryTypeName","src":"8768:5:7"}],"id":15437,"name":"VariableDeclaration","src":"8768:12:7"}],"id":15438,"name":"ParameterList","src":"8767:14:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15439,"name":"Identifier","src":"8792:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15432,"type":"uint256","value":"offset"},"id":15440,"name":"Identifier","src":"8800:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15434,"type":"uint256","value":"len"},"id":15441,"name":"Identifier","src":"8809:3:7"}],"id":15442,"name":"BinaryOperation","src":"8800:12:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15430,"type":"bytes memory","value":"self"},"id":15443,"name":"Identifier","src":"8816:4:7"}],"id":15444,"name":"MemberAccess","src":"8816:11:7"}],"id":15445,"name":"BinaryOperation","src":"8800:27:7"}],"id":15446,"name":"FunctionCall","src":"8792:36:7"}],"id":15447,"name":"ExpressionStatement","src":"8792:36:7"},{"attributes":{"assignments":[15449]},"children":[{"attributes":{"constant":false,"name":"ret","scope":15470,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15448,"name":"ElementaryTypeName","src":"8839:5:7"}],"id":15449,"name":"VariableDeclaration","src":"8839:16:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15450,"name":"ElementaryTypeName","src":"8862:5:7"}],"id":15451,"name":"NewExpression","src":"8858:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15434,"type":"uint256","value":"len"},"id":15452,"name":"Identifier","src":"8868:3:7"}],"id":15453,"name":"FunctionCall","src":"8858:14:7"}],"id":15454,"name":"VariableDeclarationStatement","src":"8839:33:7"},{"attributes":{"assignments":[15456],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":15470,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15455,"name":"ElementaryTypeName","src":"8882:4:7"}],"id":15456,"name":"VariableDeclaration","src":"8882:9:7"}],"id":15457,"name":"VariableDeclarationStatement","src":"8882:9:7"},{"attributes":{"assignments":[15459],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":15470,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15458,"name":"ElementaryTypeName","src":"8901:4:7"}],"id":15459,"name":"VariableDeclaration","src":"8901:8:7"}],"id":15460,"name":"VariableDeclarationStatement","src":"8901:8:7"},{"attributes":{"externalReferences":[{"dest":{"declaration":15456,"isOffset":false,"isSlot":false,"src":"8943:4:7","valueSize":1}},{"ret":{"declaration":15449,"isOffset":false,"isSlot":false,"src":"8955:3:7","valueSize":1}},{"src":{"declaration":15459,"isOffset":false,"isSlot":false,"src":"8976:3:7","valueSize":1}},{"self":{"declaration":15430,"isOffset":false,"isSlot":false,"src":"8991:4:7","valueSize":1}},{"offset":{"declaration":15432,"isOffset":false,"isSlot":false,"src":"9002:6:7","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":15461,"name":"InlineAssembly","src":"8920:99:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":15428,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":15462,"name":"Identifier","src":"9028:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15456,"type":"uint256","value":"dest"},"id":15463,"name":"Identifier","src":"9035:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15459,"type":"uint256","value":"src"},"id":15464,"name":"Identifier","src":"9041:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15434,"type":"uint256","value":"len"},"id":15465,"name":"Identifier","src":"9046:3:7"}],"id":15466,"name":"FunctionCall","src":"9028:22:7"}],"id":15467,"name":"ExpressionStatement","src":"9028:22:7"},{"attributes":{"functionReturnParameters":15438},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15449,"type":"bytes memory","value":"ret"},"id":15468,"name":"Identifier","src":"9068:3:7"}],"id":15469,"name":"Return","src":"9061:10:7"}],"id":15470,"name":"Block","src":"8782:296:7"}],"id":15471,"name":"FunctionDefinition","src":"8685:393:7"},{"attributes":{"constant":true,"name":"base32HexTable","scope":15694,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15472,"name":"ElementaryTypeName","src":"9206:5:7"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":15473,"name":"Literal","src":"9238:147:7"}],"id":15474,"name":"VariableDeclaration","src":"9206:179:7"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15693,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15475,"name":"ElementaryTypeName","src":"9697:5:7"}],"id":15476,"name":"VariableDeclaration","src":"9697:17:7"},{"attributes":{"constant":false,"name":"off","scope":15693,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15477,"name":"ElementaryTypeName","src":"9716:4:7"}],"id":15478,"name":"VariableDeclaration","src":"9716:8:7"},{"attributes":{"constant":false,"name":"len","scope":15693,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15479,"name":"ElementaryTypeName","src":"9726:4:7"}],"id":15480,"name":"VariableDeclaration","src":"9726:8:7"}],"id":15481,"name":"ParameterList","src":"9696:39:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15693,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":15482,"name":"ElementaryTypeName","src":"9758:7:7"}],"id":15483,"name":"VariableDeclaration","src":"9758:7:7"}],"id":15484,"name":"ParameterList","src":"9757:9:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15485,"name":"Identifier","src":"9777:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15486,"name":"Identifier","src":"9785:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":15487,"name":"Literal","src":"9792:2:7"}],"id":15488,"name":"BinaryOperation","src":"9785:9:7"}],"id":15489,"name":"FunctionCall","src":"9777:18:7"}],"id":15490,"name":"ExpressionStatement","src":"9777:18:7"},{"attributes":{"assignments":[15492]},"children":[{"attributes":{"constant":false,"name":"ret","scope":15692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15491,"name":"ElementaryTypeName","src":"9806:4:7"}],"id":15492,"name":"VariableDeclaration","src":"9806:8:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15493,"name":"Literal","src":"9817:1:7"}],"id":15494,"name":"VariableDeclarationStatement","src":"9806:12:7"},{"attributes":{"assignments":[15496],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":15692,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":15495,"name":"ElementaryTypeName","src":"9828:5:7"}],"id":15496,"name":"VariableDeclaration","src":"9828:13:7"}],"id":15497,"name":"VariableDeclarationStatement","src":"9828:13:7"},{"children":[{"attributes":{"assignments":[15499]},"children":[{"attributes":{"constant":false,"name":"i","scope":15564,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15498,"name":"ElementaryTypeName","src":"9855:4:7"}],"id":15499,"name":"VariableDeclaration","src":"9855:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15500,"name":"Literal","src":"9864:1:7"}],"id":15501,"name":"VariableDeclarationStatement","src":"9855:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15499,"type":"uint256","value":"i"},"id":15502,"name":"Identifier","src":"9867:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15503,"name":"Identifier","src":"9871:3:7"}],"id":15504,"name":"BinaryOperation","src":"9867:7:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15499,"type":"uint256","value":"i"},"id":15505,"name":"Identifier","src":"9876:1:7"}],"id":15506,"name":"UnaryOperation","src":"9876:3:7"}],"id":15507,"name":"ExpressionStatement","src":"9876:3:7"},{"children":[{"attributes":{"assignments":[15509]},"children":[{"attributes":{"constant":false,"name":"char","scope":15563,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":15508,"name":"ElementaryTypeName","src":"9895:6:7"}],"id":15509,"name":"VariableDeclaration","src":"9895:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15476,"type":"bytes memory","value":"self"},"id":15510,"name":"Identifier","src":"9909:4:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15478,"type":"uint256","value":"off"},"id":15511,"name":"Identifier","src":"9914:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15499,"type":"uint256","value":"i"},"id":15512,"name":"Identifier","src":"9920:1:7"}],"id":15513,"name":"BinaryOperation","src":"9914:7:7"}],"id":15514,"name":"IndexAccess","src":"9909:13:7"}],"id":15515,"name":"VariableDeclarationStatement","src":"9895:27:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15516,"name":"Identifier","src":"9936:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15509,"type":"bytes1","value":"char"},"id":15517,"name":"Identifier","src":"9944:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":15518,"name":"Literal","src":"9952:4:7"}],"id":15519,"name":"BinaryOperation","src":"9944:12:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15509,"type":"bytes1","value":"char"},"id":15520,"name":"Identifier","src":"9960:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":15521,"name":"Literal","src":"9968:4:7"}],"id":15522,"name":"BinaryOperation","src":"9960:12:7"}],"id":15523,"name":"BinaryOperation","src":"9944:28:7"}],"id":15524,"name":"FunctionCall","src":"9936:37:7"}],"id":15525,"name":"ExpressionStatement","src":"9936:37:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15526,"name":"Identifier","src":"9987:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":15527,"name":"ElementaryTypeNameExpression","src":"9997:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15474,"type":"bytes memory","value":"base32HexTable"},"id":15528,"name":"Identifier","src":"10003:14:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":15529,"name":"ElementaryTypeNameExpression","src":"10018:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":15530,"name":"ElementaryTypeNameExpression","src":"10023:5:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15509,"type":"bytes1","value":"char"},"id":15531,"name":"Identifier","src":"10029:4:7"}],"id":15532,"name":"FunctionCall","src":"10023:11:7"}],"id":15533,"name":"FunctionCall","src":"10018:17:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":15534,"name":"Literal","src":"10038:4:7"}],"id":15535,"name":"BinaryOperation","src":"10018:24:7"}],"id":15536,"name":"IndexAccess","src":"10003:40:7"}],"id":15537,"name":"FunctionCall","src":"9997:47:7"}],"id":15538,"name":"Assignment","src":"9987:57:7"}],"id":15539,"name":"ExpressionStatement","src":"9987:57:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15540,"name":"Identifier","src":"10058:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15541,"name":"Identifier","src":"10066:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":15542,"name":"Literal","src":"10077:4:7"}],"id":15543,"name":"BinaryOperation","src":"10066:15:7"}],"id":15544,"name":"FunctionCall","src":"10058:24:7"}],"id":15545,"name":"ExpressionStatement","src":"10058:24:7"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15499,"type":"uint256","value":"i"},"id":15546,"name":"Identifier","src":"10099:1:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15547,"name":"Identifier","src":"10104:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15548,"name":"Literal","src":"10110:1:7"}],"id":15549,"name":"BinaryOperation","src":"10104:7:7"}],"id":15550,"name":"BinaryOperation","src":"10099:12:7"},{"children":[{"id":15551,"name":"Break","src":"10131:5:7"}],"id":15552,"name":"Block","src":"10113:38:7"}],"id":15553,"name":"IfStatement","src":"10096:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15554,"name":"Identifier","src":"10164:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15555,"name":"Identifier","src":"10171:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":15556,"name":"Literal","src":"10178:1:7"}],"id":15557,"name":"BinaryOperation","src":"10171:8:7"}],"id":15558,"name":"TupleExpression","src":"10170:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15559,"name":"Identifier","src":"10183:7:7"}],"id":15560,"name":"BinaryOperation","src":"10170:20:7"}],"id":15561,"name":"Assignment","src":"10164:26:7"}],"id":15562,"name":"ExpressionStatement","src":"10164:26:7"}],"id":15563,"name":"Block","src":"9881:320:7"}],"id":15564,"name":"ForStatement","src":"9851:350:7"},{"attributes":{"assignments":[15566]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":15692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15565,"name":"ElementaryTypeName","src":"10211:4:7"}],"id":15566,"name":"VariableDeclaration","src":"10211:11:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15567,"name":"Identifier","src":"10225:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":15568,"name":"Literal","src":"10231:1:7"}],"id":15569,"name":"BinaryOperation","src":"10225:7:7"}],"id":15570,"name":"VariableDeclarationStatement","src":"10211:21:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15571,"name":"Identifier","src":"10245:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15572,"name":"Literal","src":"10251:1:7"}],"id":15573,"name":"BinaryOperation","src":"10245:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15574,"name":"Literal","src":"10256:1:7"}],"id":15575,"name":"BinaryOperation","src":"10245:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15576,"name":"Identifier","src":"10325:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15577,"name":"Identifier","src":"10332:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":15578,"name":"Literal","src":"10339:1:7"}],"id":15579,"name":"BinaryOperation","src":"10332:8:7"}],"id":15580,"name":"TupleExpression","src":"10331:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15581,"name":"Identifier","src":"10344:7:7"}],"id":15582,"name":"BinaryOperation","src":"10331:20:7"}],"id":15583,"name":"Assignment","src":"10325:26:7"}],"id":15584,"name":"ExpressionStatement","src":"10325:26:7"}],"id":15585,"name":"Block","src":"10259:103:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15586,"name":"Identifier","src":"10371:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15587,"name":"Literal","src":"10377:1:7"}],"id":15588,"name":"BinaryOperation","src":"10371:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15589,"name":"Literal","src":"10382:1:7"}],"id":15590,"name":"BinaryOperation","src":"10371:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15591,"name":"Identifier","src":"10444:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15592,"name":"Identifier","src":"10451:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":15593,"name":"Literal","src":"10458:1:7"}],"id":15594,"name":"BinaryOperation","src":"10451:8:7"}],"id":15595,"name":"TupleExpression","src":"10450:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15596,"name":"Identifier","src":"10464:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15597,"name":"Literal","src":"10475:1:7"}],"id":15598,"name":"BinaryOperation","src":"10464:12:7"}],"id":15599,"name":"TupleExpression","src":"10463:14:7"}],"id":15600,"name":"BinaryOperation","src":"10450:27:7"}],"id":15601,"name":"Assignment","src":"10444:33:7"}],"id":15602,"name":"ExpressionStatement","src":"10444:33:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15603,"name":"Identifier","src":"10491:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15604,"name":"Literal","src":"10501:1:7"}],"id":15605,"name":"Assignment","src":"10491:11:7"}],"id":15606,"name":"ExpressionStatement","src":"10491:11:7"}],"id":15607,"name":"Block","src":"10385:128:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15608,"name":"Identifier","src":"10522:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15609,"name":"Literal","src":"10528:1:7"}],"id":15610,"name":"BinaryOperation","src":"10522:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15611,"name":"Literal","src":"10533:1:7"}],"id":15612,"name":"BinaryOperation","src":"10522:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15613,"name":"Identifier","src":"10597:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15614,"name":"Identifier","src":"10604:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15615,"name":"Literal","src":"10611:1:7"}],"id":15616,"name":"BinaryOperation","src":"10604:8:7"}],"id":15617,"name":"TupleExpression","src":"10603:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15618,"name":"Identifier","src":"10617:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15619,"name":"Literal","src":"10628:1:7"}],"id":15620,"name":"BinaryOperation","src":"10617:12:7"}],"id":15621,"name":"TupleExpression","src":"10616:14:7"}],"id":15622,"name":"BinaryOperation","src":"10603:27:7"}],"id":15623,"name":"Assignment","src":"10597:33:7"}],"id":15624,"name":"ExpressionStatement","src":"10597:33:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15625,"name":"Identifier","src":"10644:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15626,"name":"Literal","src":"10654:1:7"}],"id":15627,"name":"Assignment","src":"10644:11:7"}],"id":15628,"name":"ExpressionStatement","src":"10644:11:7"}],"id":15629,"name":"Block","src":"10536:130:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15630,"name":"Identifier","src":"10675:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15631,"name":"Literal","src":"10681:1:7"}],"id":15632,"name":"BinaryOperation","src":"10675:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":15633,"name":"Literal","src":"10686:1:7"}],"id":15634,"name":"BinaryOperation","src":"10675:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15635,"name":"Identifier","src":"10750:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15636,"name":"Identifier","src":"10757:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15637,"name":"Literal","src":"10764:1:7"}],"id":15638,"name":"BinaryOperation","src":"10757:8:7"}],"id":15639,"name":"TupleExpression","src":"10756:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15640,"name":"Identifier","src":"10770:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15641,"name":"Literal","src":"10781:1:7"}],"id":15642,"name":"BinaryOperation","src":"10770:12:7"}],"id":15643,"name":"TupleExpression","src":"10769:14:7"}],"id":15644,"name":"BinaryOperation","src":"10756:27:7"}],"id":15645,"name":"Assignment","src":"10750:33:7"}],"id":15646,"name":"ExpressionStatement","src":"10750:33:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15647,"name":"Identifier","src":"10797:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15648,"name":"Literal","src":"10807:1:7"}],"id":15649,"name":"Assignment","src":"10797:11:7"}],"id":15650,"name":"ExpressionStatement","src":"10797:11:7"}],"id":15651,"name":"Block","src":"10689:130:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15652,"name":"Identifier","src":"10828:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15653,"name":"Literal","src":"10834:1:7"}],"id":15654,"name":"BinaryOperation","src":"10828:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":15655,"name":"Literal","src":"10839:1:7"}],"id":15656,"name":"BinaryOperation","src":"10828:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15657,"name":"Identifier","src":"10904:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15658,"name":"Identifier","src":"10911:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15659,"name":"Literal","src":"10918:1:7"}],"id":15660,"name":"BinaryOperation","src":"10911:8:7"}],"id":15661,"name":"TupleExpression","src":"10910:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15662,"name":"Identifier","src":"10924:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":15663,"name":"Literal","src":"10935:1:7"}],"id":15664,"name":"BinaryOperation","src":"10924:12:7"}],"id":15665,"name":"TupleExpression","src":"10923:14:7"}],"id":15666,"name":"BinaryOperation","src":"10910:27:7"}],"id":15667,"name":"Assignment","src":"10904:33:7"}],"id":15668,"name":"ExpressionStatement","src":"10904:33:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15669,"name":"Identifier","src":"10951:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":15670,"name":"Literal","src":"10961:1:7"}],"id":15671,"name":"Assignment","src":"10951:11:7"}],"id":15672,"name":"ExpressionStatement","src":"10951:11:7"}],"id":15673,"name":"Block","src":"10842:131:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15714,"type":"function () pure","value":"revert"},"id":15674,"name":"Identifier","src":"10993:6:7"}],"id":15675,"name":"FunctionCall","src":"10993:8:7"}],"id":15676,"name":"ExpressionStatement","src":"10993:8:7"}],"id":15677,"name":"Block","src":"10979:33:7"}],"id":15678,"name":"IfStatement","src":"10825:187:7"}],"id":15679,"name":"IfStatement","src":"10672:340:7"}],"id":15680,"name":"IfStatement","src":"10519:493:7"}],"id":15681,"name":"IfStatement","src":"10368:644:7"}],"id":15682,"name":"IfStatement","src":"10242:770:7"},{"attributes":{"functionReturnParameters":15484},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":15683,"name":"ElementaryTypeNameExpression","src":"11029:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15684,"name":"Identifier","src":"11037:3:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":15685,"name":"Literal","src":"11045:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15686,"name":"Identifier","src":"11051:6:7"}],"id":15687,"name":"BinaryOperation","src":"11045:12:7"}],"id":15688,"name":"TupleExpression","src":"11044:14:7"}],"id":15689,"name":"BinaryOperation","src":"11037:21:7"}],"id":15690,"name":"FunctionCall","src":"11029:30:7"}],"id":15691,"name":"Return","src":"11022:37:7"}],"id":15692,"name":"Block","src":"9767:1299:7"}],"id":15693,"name":"FunctionDefinition","src":"9668:1398:7"}],"id":15694,"name":"ContractDefinition","src":"26:11042:7"}],"id":15695,"name":"SourceUnit","src":"0:11069:7"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[9746]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":9574,"name":"PragmaDirective","src":"1401:23:8"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":9575,"name":"PragmaDirective","src":"1425:33:8"},{"attributes":{"SourceUnit":9573,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9576,"name":"ImportDirective","src":"1460:19:8"},{"attributes":{"SourceUnit":11300,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9577,"name":"ImportDirective","src":"1480:36:8"},{"attributes":{"SourceUnit":11459,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9578,"name":"ImportDirective","src":"1517:37:8"},{"attributes":{"SourceUnit":11529,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9579,"name":"ImportDirective","src":"1555:44:8"},{"attributes":{"SourceUnit":12020,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9580,"name":"ImportDirective","src":"1600:36:8"},{"attributes":{"SourceUnit":12207,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9581,"name":"ImportDirective","src":"1637:42:8"},{"attributes":{"SourceUnit":12277,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9582,"name":"ImportDirective","src":"1680:37:8"},{"attributes":{"SourceUnit":12368,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9583,"name":"ImportDirective","src":"1718:39:8"},{"attributes":{"SourceUnit":12451,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9584,"name":"ImportDirective","src":"1758:37:8"},{"attributes":{"contractDependencies":[11299,11458,11528,12019,12206,12276,12367,12450,14355],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[9746,12450,12367,12276,12206,12019,11528,11458,11299,14355],"name":"PublicResolver","scope":9747},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":11299,"type":"contract ABIResolver"},"id":9585,"name":"UserDefinedTypeName","src":"1924:11:8"}],"id":9586,"name":"InheritanceSpecifier","src":"1924:11:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":11458,"type":"contract AddrResolver"},"id":9587,"name":"UserDefinedTypeName","src":"1937:12:8"}],"id":9588,"name":"InheritanceSpecifier","src":"1937:12:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":11528,"type":"contract ContentHashResolver"},"id":9589,"name":"UserDefinedTypeName","src":"1951:19:8"}],"id":9590,"name":"InheritanceSpecifier","src":"1951:19:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":12019,"type":"contract DNSResolver"},"id":9591,"name":"UserDefinedTypeName","src":"1972:11:8"}],"id":9592,"name":"InheritanceSpecifier","src":"1972:11:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":12206,"type":"contract InterfaceResolver"},"id":9593,"name":"UserDefinedTypeName","src":"1985:17:8"}],"id":9594,"name":"InheritanceSpecifier","src":"1985:17:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":12276,"type":"contract NameResolver"},"id":9595,"name":"UserDefinedTypeName","src":"2004:12:8"}],"id":9596,"name":"InheritanceSpecifier","src":"2004:12:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":12367,"type":"contract PubkeyResolver"},"id":9597,"name":"UserDefinedTypeName","src":"2018:14:8"}],"id":9598,"name":"InheritanceSpecifier","src":"2018:14:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":12450,"type":"contract TextResolver"},"id":9599,"name":"UserDefinedTypeName","src":"2034:12:8"}],"id":9600,"name":"InheritanceSpecifier","src":"2034:12:8"},{"attributes":{"constant":false,"name":"ens","scope":9746,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":9572,"type":"contract ENS"},"id":9601,"name":"UserDefinedTypeName","src":"2053:3:8"}],"id":9602,"name":"VariableDeclaration","src":"2053:7:8"},{"attributes":{"constant":false,"name":"authorisations","scope":9746,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9603,"name":"ElementaryTypeName","src":"2328:7:8"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":9604,"name":"ElementaryTypeName","src":"2345:7:8"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":9605,"name":"ElementaryTypeName","src":"2362:7:8"},{"attributes":{"name":"bool","type":"bool"},"id":9606,"name":"ElementaryTypeName","src":"2371:4:8"}],"id":9607,"name":"Mapping","src":"2354:22:8"}],"id":9608,"name":"Mapping","src":"2337:40:8"}],"id":9609,"name":"Mapping","src":"2320:58:8"}],"id":9610,"name":"VariableDeclaration","src":"2320:80:8"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":9620,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9611,"name":"ElementaryTypeName","src":"2434:7:8"}],"id":9612,"name":"VariableDeclaration","src":"2434:20:8"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":9620,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9613,"name":"ElementaryTypeName","src":"2456:7:8"}],"id":9614,"name":"VariableDeclaration","src":"2456:21:8"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":9620,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9615,"name":"ElementaryTypeName","src":"2479:7:8"}],"id":9616,"name":"VariableDeclaration","src":"2479:22:8"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":9620,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9617,"name":"ElementaryTypeName","src":"2503:4:8"}],"id":9618,"name":"VariableDeclaration","src":"2503:17:8"}],"id":9619,"name":"ParameterList","src":"2433:88:8"}],"id":9620,"name":"EventDefinition","src":"2407:115:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":9746,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":9630,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":9572,"type":"contract ENS"},"id":9621,"name":"UserDefinedTypeName","src":"2540:3:8"}],"id":9622,"name":"VariableDeclaration","src":"2540:8:8"}],"id":9623,"name":"ParameterList","src":"2539:10:8"},{"attributes":{"parameters":[null]},"children":[],"id":9624,"name":"ParameterList","src":"2557:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9602,"type":"contract ENS","value":"ens"},"id":9625,"name":"Identifier","src":"2567:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9622,"type":"contract ENS","value":"_ens"},"id":9626,"name":"Identifier","src":"2573:4:8"}],"id":9627,"name":"Assignment","src":"2567:10:8"}],"id":9628,"name":"ExpressionStatement","src":"2567:10:8"}],"id":9629,"name":"Block","src":"2557:27:8"}],"id":9630,"name":"FunctionDefinition","src":"2528:56:8"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":9746,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":9659,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9631,"name":"ElementaryTypeName","src":"3295:7:8"}],"id":9632,"name":"VariableDeclaration","src":"3295:12:8"},{"attributes":{"constant":false,"name":"target","scope":9659,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9633,"name":"ElementaryTypeName","src":"3309:7:8"}],"id":9634,"name":"VariableDeclaration","src":"3309:14:8"},{"attributes":{"constant":false,"name":"isAuthorised","scope":9659,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9635,"name":"ElementaryTypeName","src":"3325:4:8"}],"id":9636,"name":"VariableDeclaration","src":"3325:17:8"}],"id":9637,"name":"ParameterList","src":"3294:49:8"},{"attributes":{"parameters":[null]},"children":[],"id":9638,"name":"ParameterList","src":"3353:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9610,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":9639,"name":"Identifier","src":"3363:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9632,"type":"bytes32","value":"node"},"id":9640,"name":"Identifier","src":"3378:4:8"}],"id":9644,"name":"IndexAccess","src":"3363:20:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9641,"name":"Identifier","src":"3384:3:8"}],"id":9642,"name":"MemberAccess","src":"3384:10:8"}],"id":9645,"name":"IndexAccess","src":"3363:32:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"address","value":"target"},"id":9643,"name":"Identifier","src":"3396:6:8"}],"id":9646,"name":"IndexAccess","src":"3363:40:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9636,"type":"bool","value":"isAuthorised"},"id":9647,"name":"Identifier","src":"3406:12:8"}],"id":9648,"name":"Assignment","src":"3363:55:8"}],"id":9649,"name":"ExpressionStatement","src":"3363:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":9620,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":9650,"name":"Identifier","src":"3433:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9632,"type":"bytes32","value":"node"},"id":9651,"name":"Identifier","src":"3454:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9652,"name":"Identifier","src":"3460:3:8"}],"id":9653,"name":"MemberAccess","src":"3460:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"address","value":"target"},"id":9654,"name":"Identifier","src":"3472:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9636,"type":"bool","value":"isAuthorised"},"id":9655,"name":"Identifier","src":"3480:12:8"}],"id":9656,"name":"FunctionCall","src":"3433:60:8"}],"id":9657,"name":"EmitStatement","src":"3428:65:8"}],"id":9658,"name":"Block","src":"3353:147:8"}],"id":9659,"name":"FunctionDefinition","src":"3269:231:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":9746,"stateMutability":"view","superFunction":14310,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":9688,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9660,"name":"ElementaryTypeName","src":"3528:7:8"}],"id":9661,"name":"VariableDeclaration","src":"3528:12:8"}],"id":9662,"name":"ParameterList","src":"3527:14:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9688,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9663,"name":"ElementaryTypeName","src":"3564:4:8"}],"id":9664,"name":"VariableDeclaration","src":"3564:4:8"}],"id":9665,"name":"ParameterList","src":"3563:6:8"},{"children":[{"attributes":{"assignments":[9667]},"children":[{"attributes":{"constant":false,"name":"owner","scope":9687,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9666,"name":"ElementaryTypeName","src":"3580:7:8"}],"id":9667,"name":"VariableDeclaration","src":"3580:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":9541,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9602,"type":"contract ENS","value":"ens"},"id":9668,"name":"Identifier","src":"3596:3:8"}],"id":9669,"name":"MemberAccess","src":"3596:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9661,"type":"bytes32","value":"node"},"id":9670,"name":"Identifier","src":"3606:4:8"}],"id":9671,"name":"FunctionCall","src":"3596:15:8"}],"id":9672,"name":"VariableDeclarationStatement","src":"3580:31:8"},{"attributes":{"functionReturnParameters":9665},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9667,"type":"address","value":"owner"},"id":9673,"name":"Identifier","src":"3628:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9674,"name":"Identifier","src":"3637:3:8"}],"id":9675,"name":"MemberAccess","src":"3637:10:8"}],"id":9676,"name":"BinaryOperation","src":"3628:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9610,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":9677,"name":"Identifier","src":"3651:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9661,"type":"bytes32","value":"node"},"id":9678,"name":"Identifier","src":"3666:4:8"}],"id":9679,"name":"IndexAccess","src":"3651:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9667,"type":"address","value":"owner"},"id":9680,"name":"Identifier","src":"3672:5:8"}],"id":9681,"name":"IndexAccess","src":"3651:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9682,"name":"Identifier","src":"3679:3:8"}],"id":9683,"name":"MemberAccess","src":"3679:10:8"}],"id":9684,"name":"IndexAccess","src":"3651:39:8"}],"id":9685,"name":"BinaryOperation","src":"3628:62:8"}],"id":9686,"name":"Return","src":"3621:69:8"}],"id":9687,"name":"Block","src":"3570:127:8"}],"id":9688,"name":"FunctionDefinition","src":"3506:191:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":9746,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":9745,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9689,"name":"ElementaryTypeName","src":"3722:5:8"}],"id":9690,"name":"ArrayTypeName","src":"3722:7:8"}],"id":9691,"name":"VariableDeclaration","src":"3722:21:8"}],"id":9692,"name":"ParameterList","src":"3721:23:8"},{"children":[{"attributes":{"constant":false,"name":"results","scope":9745,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9693,"name":"ElementaryTypeName","src":"3762:5:8"}],"id":9694,"name":"ArrayTypeName","src":"3762:7:8"}],"id":9695,"name":"VariableDeclaration","src":"3762:22:8"}],"id":9696,"name":"ParameterList","src":"3761:24:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9695,"type":"bytes memory[] memory","value":"results"},"id":9697,"name":"Identifier","src":"3796:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9698,"name":"ElementaryTypeName","src":"3810:5:8"}],"id":9699,"name":"ArrayTypeName","src":"3810:7:8"}],"id":9700,"name":"NewExpression","src":"3806:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9691,"type":"bytes calldata[] calldata","value":"data"},"id":9701,"name":"Identifier","src":"3818:4:8"}],"id":9702,"name":"MemberAccess","src":"3818:11:8"}],"id":9703,"name":"FunctionCall","src":"3806:24:8"}],"id":9704,"name":"Assignment","src":"3796:34:8"}],"id":9705,"name":"ExpressionStatement","src":"3796:34:8"},{"children":[{"attributes":{"assignments":[9707]},"children":[{"attributes":{"constant":false,"name":"i","scope":9741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9706,"name":"ElementaryTypeName","src":"3844:4:8"}],"id":9707,"name":"VariableDeclaration","src":"3844:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9708,"name":"Literal","src":"3853:1:8"}],"id":9709,"name":"VariableDeclarationStatement","src":"3844:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9707,"type":"uint256","value":"i"},"id":9710,"name":"Identifier","src":"3856:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9691,"type":"bytes calldata[] calldata","value":"data"},"id":9711,"name":"Identifier","src":"3860:4:8"}],"id":9712,"name":"MemberAccess","src":"3860:11:8"}],"id":9713,"name":"BinaryOperation","src":"3856:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9707,"type":"uint256","value":"i"},"id":9714,"name":"Identifier","src":"3873:1:8"}],"id":9715,"name":"UnaryOperation","src":"3873:3:8"}],"id":9716,"name":"ExpressionStatement","src":"3873:3:8"},{"children":[{"attributes":{"assignments":[9718,9720]},"children":[{"attributes":{"constant":false,"name":"success","scope":9740,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9717,"name":"ElementaryTypeName","src":"3893:4:8"}],"id":9718,"name":"VariableDeclaration","src":"3893:12:8"},{"attributes":{"constant":false,"name":"result","scope":9740,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9719,"name":"ElementaryTypeName","src":"3907:5:8"}],"id":9720,"name":"VariableDeclaration","src":"3907:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$9746","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9721,"name":"ElementaryTypeNameExpression","src":"3930:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15765,"type":"contract PublicResolver","value":"this"},"id":9722,"name":"Identifier","src":"3938:4:8"}],"id":9723,"name":"FunctionCall","src":"3930:13:8"}],"id":9724,"name":"MemberAccess","src":"3930:26:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9691,"type":"bytes calldata[] calldata","value":"data"},"id":9725,"name":"Identifier","src":"3957:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9707,"type":"uint256","value":"i"},"id":9726,"name":"Identifier","src":"3962:1:8"}],"id":9727,"name":"IndexAccess","src":"3957:7:8"}],"id":9728,"name":"FunctionCall","src":"3930:35:8"}],"id":9729,"name":"VariableDeclarationStatement","src":"3892:73:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":9730,"name":"Identifier","src":"3979:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9718,"type":"bool","value":"success"},"id":9731,"name":"Identifier","src":"3987:7:8"}],"id":9732,"name":"FunctionCall","src":"3979:16:8"}],"id":9733,"name":"ExpressionStatement","src":"3979:16:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9695,"type":"bytes memory[] memory","value":"results"},"id":9734,"name":"Identifier","src":"4009:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9707,"type":"uint256","value":"i"},"id":9735,"name":"Identifier","src":"4017:1:8"}],"id":9736,"name":"IndexAccess","src":"4009:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9720,"type":"bytes memory","value":"result"},"id":9737,"name":"Identifier","src":"4022:6:8"}],"id":9738,"name":"Assignment","src":"4009:19:8"}],"id":9739,"name":"ExpressionStatement","src":"4009:19:8"}],"id":9740,"name":"Block","src":"3878:161:8"}],"id":9741,"name":"ForStatement","src":"3840:199:8"},{"attributes":{"functionReturnParameters":9696},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9695,"type":"bytes memory[] memory","value":"results"},"id":9742,"name":"Identifier","src":"4055:7:8"}],"id":9743,"name":"Return","src":"4048:14:8"}],"id":9744,"name":"Block","src":"3786:283:8"}],"id":9745,"name":"FunctionDefinition","src":"3703:366:8"}],"id":9746,"name":"ContractDefinition","src":"1897:2174:8"}],"id":9747,"name":"SourceUnit","src":"1401:2671:8"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[14973]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":14357,"name":"PragmaDirective","src":"0:24:9"},{"attributes":{"SourceUnit":15695,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":14974,"symbolAliases":[null],"unitAlias":""},"id":14358,"name":"ImportDirective","src":"26:29:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[14973],"name":"RRUtils","scope":14974},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":15694,"type":"library ENSBytesUtils"},"id":14359,"name":"UserDefinedTypeName","src":"178:13:9"}],"id":14360,"name":"UsingForDirective","src":"172:26:9"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14407,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14361,"name":"ElementaryTypeName","src":"487:5:9"}],"id":14362,"name":"VariableDeclaration","src":"487:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14407,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14363,"name":"ElementaryTypeName","src":"506:4:9"}],"id":14364,"name":"VariableDeclaration","src":"506:11:9"}],"id":14365,"name":"ParameterList","src":"486:32:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14407,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14366,"name":"ElementaryTypeName","src":"541:4:9"}],"id":14367,"name":"VariableDeclaration","src":"541:4:9"}],"id":14368,"name":"ParameterList","src":"540:6:9"},{"children":[{"attributes":{"assignments":[14370]},"children":[{"attributes":{"constant":false,"name":"idx","scope":14406,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14369,"name":"ElementaryTypeName","src":"557:4:9"}],"id":14370,"name":"VariableDeclaration","src":"557:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14364,"type":"uint256","value":"offset"},"id":14371,"name":"Identifier","src":"568:6:9"}],"id":14372,"name":"VariableDeclarationStatement","src":"557:17:9"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":14373,"name":"Literal","src":"591:4:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":15698,"type":"function (bool) pure","value":"assert"},"id":14374,"name":"Identifier","src":"611:6:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14370,"type":"uint256","value":"idx"},"id":14375,"name":"Identifier","src":"618:3:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14362,"type":"bytes memory","value":"self"},"id":14376,"name":"Identifier","src":"624:4:9"}],"id":14377,"name":"MemberAccess","src":"624:11:9"}],"id":14378,"name":"BinaryOperation","src":"618:17:9"}],"id":14379,"name":"FunctionCall","src":"611:25:9"}],"id":14380,"name":"ExpressionStatement","src":"611:25:9"},{"attributes":{"assignments":[14382]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":14400,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14381,"name":"ElementaryTypeName","src":"650:4:9"}],"id":14382,"name":"VariableDeclaration","src":"650:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14362,"type":"bytes memory","value":"self"},"id":14383,"name":"Identifier","src":"666:4:9"}],"id":14384,"name":"MemberAccess","src":"666:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14370,"type":"uint256","value":"idx"},"id":14385,"name":"Identifier","src":"681:3:9"}],"id":14386,"name":"FunctionCall","src":"666:19:9"}],"id":14387,"name":"VariableDeclarationStatement","src":"650:35:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14370,"type":"uint256","value":"idx"},"id":14388,"name":"Identifier","src":"699:3:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14382,"type":"uint256","value":"labelLen"},"id":14389,"name":"Identifier","src":"706:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14390,"name":"Literal","src":"717:1:9"}],"id":14391,"name":"BinaryOperation","src":"706:12:9"}],"id":14392,"name":"Assignment","src":"699:19:9"}],"id":14393,"name":"ExpressionStatement","src":"699:19:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14382,"type":"uint256","value":"labelLen"},"id":14394,"name":"Identifier","src":"736:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14395,"name":"Literal","src":"748:1:9"}],"id":14396,"name":"BinaryOperation","src":"736:13:9"},{"children":[{"id":14397,"name":"Break","src":"769:5:9"}],"id":14398,"name":"Block","src":"751:38:9"}],"id":14399,"name":"IfStatement","src":"732:57:9"}],"id":14400,"name":"Block","src":"597:202:9"}],"id":14401,"name":"WhileStatement","src":"584:215:9"},{"attributes":{"functionReturnParameters":14368},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14370,"type":"uint256","value":"idx"},"id":14402,"name":"Identifier","src":"815:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14364,"type":"uint256","value":"offset"},"id":14403,"name":"Identifier","src":"821:6:9"}],"id":14404,"name":"BinaryOperation","src":"815:12:9"}],"id":14405,"name":"Return","src":"808:19:9"}],"id":14406,"name":"Block","src":"547:287:9"}],"id":14407,"name":"FunctionDefinition","src":"467:367:9"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14430,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14408,"name":"ElementaryTypeName","src":"1073:5:9"}],"id":14409,"name":"VariableDeclaration","src":"1073:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14430,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14410,"name":"ElementaryTypeName","src":"1092:4:9"}],"id":14411,"name":"VariableDeclaration","src":"1092:11:9"}],"id":14412,"name":"ParameterList","src":"1072:32:9"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":14430,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14413,"name":"ElementaryTypeName","src":"1127:5:9"}],"id":14414,"name":"VariableDeclaration","src":"1127:16:9"}],"id":14415,"name":"ParameterList","src":"1126:18:9"},{"children":[{"attributes":{"assignments":[14417]},"children":[{"attributes":{"constant":false,"name":"len","scope":14429,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14416,"name":"ElementaryTypeName","src":"1155:4:9"}],"id":14417,"name":"VariableDeclaration","src":"1155:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14407,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":14418,"name":"Identifier","src":"1166:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14409,"type":"bytes memory","value":"self"},"id":14419,"name":"Identifier","src":"1177:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14411,"type":"uint256","value":"offset"},"id":14420,"name":"Identifier","src":"1183:6:9"}],"id":14421,"name":"FunctionCall","src":"1166:24:9"}],"id":14422,"name":"VariableDeclarationStatement","src":"1155:35:9"},{"attributes":{"functionReturnParameters":14415},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":15471,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14409,"type":"bytes memory","value":"self"},"id":14423,"name":"Identifier","src":"1207:4:9"}],"id":14424,"name":"MemberAccess","src":"1207:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14411,"type":"uint256","value":"offset"},"id":14425,"name":"Identifier","src":"1222:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14417,"type":"uint256","value":"len"},"id":14426,"name":"Identifier","src":"1230:3:9"}],"id":14427,"name":"FunctionCall","src":"1207:27:9"}],"id":14428,"name":"Return","src":"1200:34:9"}],"id":14429,"name":"Block","src":"1145:96:9"}],"id":14430,"name":"FunctionDefinition","src":"1055:186:9"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14479,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14431,"name":"ElementaryTypeName","src":"1541:5:9"}],"id":14432,"name":"VariableDeclaration","src":"1541:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14433,"name":"ElementaryTypeName","src":"1560:4:9"}],"id":14434,"name":"VariableDeclaration","src":"1560:11:9"}],"id":14435,"name":"ParameterList","src":"1540:32:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14436,"name":"ElementaryTypeName","src":"1595:4:9"}],"id":14437,"name":"VariableDeclaration","src":"1595:4:9"}],"id":14438,"name":"ParameterList","src":"1594:6:9"},{"children":[{"attributes":{"assignments":[14440]},"children":[{"attributes":{"constant":false,"name":"count","scope":14478,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14439,"name":"ElementaryTypeName","src":"1611:4:9"}],"id":14440,"name":"VariableDeclaration","src":"1611:10:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14441,"name":"Literal","src":"1624:1:9"}],"id":14442,"name":"VariableDeclarationStatement","src":"1611:14:9"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":14443,"name":"Literal","src":"1642:4:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":15698,"type":"function (bool) pure","value":"assert"},"id":14444,"name":"Identifier","src":"1662:6:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14434,"type":"uint256","value":"offset"},"id":14445,"name":"Identifier","src":"1669:6:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14432,"type":"bytes memory","value":"self"},"id":14446,"name":"Identifier","src":"1678:4:9"}],"id":14447,"name":"MemberAccess","src":"1678:11:9"}],"id":14448,"name":"BinaryOperation","src":"1669:20:9"}],"id":14449,"name":"FunctionCall","src":"1662:28:9"}],"id":14450,"name":"ExpressionStatement","src":"1662:28:9"},{"attributes":{"assignments":[14452]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":14474,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14451,"name":"ElementaryTypeName","src":"1704:4:9"}],"id":14452,"name":"VariableDeclaration","src":"1704:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14432,"type":"bytes memory","value":"self"},"id":14453,"name":"Identifier","src":"1720:4:9"}],"id":14454,"name":"MemberAccess","src":"1720:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14434,"type":"uint256","value":"offset"},"id":14455,"name":"Identifier","src":"1735:6:9"}],"id":14456,"name":"FunctionCall","src":"1720:22:9"}],"id":14457,"name":"VariableDeclarationStatement","src":"1704:38:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14434,"type":"uint256","value":"offset"},"id":14458,"name":"Identifier","src":"1756:6:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14452,"type":"uint256","value":"labelLen"},"id":14459,"name":"Identifier","src":"1766:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14460,"name":"Literal","src":"1777:1:9"}],"id":14461,"name":"BinaryOperation","src":"1766:12:9"}],"id":14462,"name":"Assignment","src":"1756:22:9"}],"id":14463,"name":"ExpressionStatement","src":"1756:22:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14452,"type":"uint256","value":"labelLen"},"id":14464,"name":"Identifier","src":"1796:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14465,"name":"Literal","src":"1808:1:9"}],"id":14466,"name":"BinaryOperation","src":"1796:13:9"},{"children":[{"id":14467,"name":"Break","src":"1829:5:9"}],"id":14468,"name":"Block","src":"1811:38:9"}],"id":14469,"name":"IfStatement","src":"1792:57:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14440,"type":"uint256","value":"count"},"id":14470,"name":"Identifier","src":"1862:5:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14471,"name":"Literal","src":"1871:1:9"}],"id":14472,"name":"Assignment","src":"1862:10:9"}],"id":14473,"name":"ExpressionStatement","src":"1862:10:9"}],"id":14474,"name":"Block","src":"1648:235:9"}],"id":14475,"name":"WhileStatement","src":"1635:248:9"},{"attributes":{"functionReturnParameters":14438},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14440,"type":"uint256","value":"count"},"id":14476,"name":"Identifier","src":"1899:5:9"}],"id":14477,"name":"Return","src":"1892:12:9"}],"id":14478,"name":"Block","src":"1601:310:9"}],"id":14479,"name":"FunctionDefinition","src":"1521:390:9"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":14973,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":14494,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14480,"name":"ElementaryTypeName","src":"2006:5:9"}],"id":14481,"name":"VariableDeclaration","src":"2006:10:9"},{"attributes":{"constant":false,"name":"offset","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14482,"name":"ElementaryTypeName","src":"2026:4:9"}],"id":14483,"name":"VariableDeclaration","src":"2026:11:9"},{"attributes":{"constant":false,"name":"dnstype","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":14484,"name":"ElementaryTypeName","src":"2047:6:9"}],"id":14485,"name":"VariableDeclaration","src":"2047:14:9"},{"attributes":{"constant":false,"name":"class","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":14486,"name":"ElementaryTypeName","src":"2071:6:9"}],"id":14487,"name":"VariableDeclaration","src":"2071:12:9"},{"attributes":{"constant":false,"name":"ttl","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":14488,"name":"ElementaryTypeName","src":"2093:6:9"}],"id":14489,"name":"VariableDeclaration","src":"2093:10:9"},{"attributes":{"constant":false,"name":"rdataOffset","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14490,"name":"ElementaryTypeName","src":"2113:4:9"}],"id":14491,"name":"VariableDeclaration","src":"2113:16:9"},{"attributes":{"constant":false,"name":"nextOffset","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14492,"name":"ElementaryTypeName","src":"2139:4:9"}],"id":14493,"name":"VariableDeclaration","src":"2139:15:9"}],"id":14494,"name":"StructDefinition","src":"1978:183:9"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14520,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14495,"name":"ElementaryTypeName","src":"2387:5:9"}],"id":14496,"name":"VariableDeclaration","src":"2387:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14497,"name":"ElementaryTypeName","src":"2406:4:9"}],"id":14498,"name":"VariableDeclaration","src":"2406:11:9"}],"id":14499,"name":"ParameterList","src":"2386:32:9"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":14520,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14500,"name":"UserDefinedTypeName","src":"2442:10:9"}],"id":14501,"name":"VariableDeclaration","src":"2442:21:9"}],"id":14502,"name":"ParameterList","src":"2441:23:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14501,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":14503,"name":"Identifier","src":"2475:3:9"}],"id":14505,"name":"MemberAccess","src":"2475:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14496,"type":"bytes memory","value":"self"},"id":14506,"name":"Identifier","src":"2486:4:9"}],"id":14507,"name":"Assignment","src":"2475:15:9"}],"id":14508,"name":"ExpressionStatement","src":"2475:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":14493,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14501,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":14509,"name":"Identifier","src":"2500:3:9"}],"id":14511,"name":"MemberAccess","src":"2500:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14498,"type":"uint256","value":"offset"},"id":14512,"name":"Identifier","src":"2517:6:9"}],"id":14513,"name":"Assignment","src":"2500:23:9"}],"id":14514,"name":"ExpressionStatement","src":"2500:23:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$14494_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":14637,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":14515,"name":"Identifier","src":"2533:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14501,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":14516,"name":"Identifier","src":"2538:3:9"}],"id":14517,"name":"FunctionCall","src":"2533:9:9"}],"id":14518,"name":"ExpressionStatement","src":"2533:9:9"}],"id":14519,"name":"Block","src":"2465:84:9"}],"id":14520,"name":"FunctionDefinition","src":"2367:182:9"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":14535,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14521,"name":"UserDefinedTypeName","src":"2734:10:9"}],"id":14522,"name":"VariableDeclaration","src":"2734:22:9"}],"id":14523,"name":"ParameterList","src":"2733:24:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14535,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14524,"name":"ElementaryTypeName","src":"2780:4:9"}],"id":14525,"name":"VariableDeclaration","src":"2780:4:9"}],"id":14526,"name":"ParameterList","src":"2779:6:9"},{"children":[{"attributes":{"functionReturnParameters":14526},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14522,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14527,"name":"Identifier","src":"2803:4:9"}],"id":14528,"name":"MemberAccess","src":"2803:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14522,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14529,"name":"Identifier","src":"2818:4:9"}],"id":14530,"name":"MemberAccess","src":"2818:9:9"}],"id":14531,"name":"MemberAccess","src":"2818:16:9"}],"id":14532,"name":"BinaryOperation","src":"2803:31:9"}],"id":14533,"name":"Return","src":"2796:38:9"}],"id":14534,"name":"Block","src":"2786:55:9"}],"id":14535,"name":"FunctionDefinition","src":"2720:121:9"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":14637,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14536,"name":"UserDefinedTypeName","src":"2978:10:9"}],"id":14537,"name":"VariableDeclaration","src":"2978:22:9"}],"id":14538,"name":"ParameterList","src":"2977:24:9"},{"attributes":{"parameters":[null]},"children":[],"id":14539,"name":"ParameterList","src":"3016:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14540,"name":"Identifier","src":"3026:4:9"}],"id":14542,"name":"MemberAccess","src":"3026:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":14493,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14543,"name":"Identifier","src":"3040:4:9"}],"id":14544,"name":"MemberAccess","src":"3040:15:9"}],"id":14545,"name":"Assignment","src":"3026:29:9"}],"id":14546,"name":"ExpressionStatement","src":"3026:29:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14547,"name":"Identifier","src":"3069:4:9"}],"id":14548,"name":"MemberAccess","src":"3069:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14549,"name":"Identifier","src":"3084:4:9"}],"id":14550,"name":"MemberAccess","src":"3084:9:9"}],"id":14551,"name":"MemberAccess","src":"3084:16:9"}],"id":14552,"name":"BinaryOperation","src":"3069:31:9"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":14539},"id":14553,"name":"Return","src":"3116:7:9"}],"id":14554,"name":"Block","src":"3102:31:9"}],"id":14555,"name":"IfStatement","src":"3065:68:9"},{"attributes":{"assignments":[14557]},"children":[{"attributes":{"constant":false,"name":"off","scope":14636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14556,"name":"ElementaryTypeName","src":"3168:4:9"}],"id":14557,"name":"VariableDeclaration","src":"3168:8:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14558,"name":"Identifier","src":"3179:4:9"}],"id":14559,"name":"MemberAccess","src":"3179:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14407,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":14560,"name":"Identifier","src":"3193:10:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14561,"name":"Identifier","src":"3204:4:9"}],"id":14562,"name":"MemberAccess","src":"3204:9:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14563,"name":"Identifier","src":"3215:4:9"}],"id":14564,"name":"MemberAccess","src":"3215:11:9"}],"id":14565,"name":"FunctionCall","src":"3193:34:9"}],"id":14566,"name":"BinaryOperation","src":"3179:48:9"}],"id":14567,"name":"VariableDeclarationStatement","src":"3168:59:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":14485,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14568,"name":"Identifier","src":"3275:4:9"}],"id":14570,"name":"MemberAccess","src":"3275:12:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":15300,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14571,"name":"Identifier","src":"3290:4:9"}],"id":14572,"name":"MemberAccess","src":"3290:9:9"}],"id":14573,"name":"MemberAccess","src":"3290:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14574,"name":"Identifier","src":"3311:3:9"}],"id":14575,"name":"FunctionCall","src":"3290:25:9"}],"id":14576,"name":"Assignment","src":"3275:40:9"}],"id":14577,"name":"ExpressionStatement","src":"3275:40:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14578,"name":"Identifier","src":"3325:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14579,"name":"Literal","src":"3332:1:9"}],"id":14580,"name":"Assignment","src":"3325:8:9"}],"id":14581,"name":"ExpressionStatement","src":"3325:8:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":14487,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14582,"name":"Identifier","src":"3343:4:9"}],"id":14584,"name":"MemberAccess","src":"3343:10:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":15300,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14585,"name":"Identifier","src":"3356:4:9"}],"id":14586,"name":"MemberAccess","src":"3356:9:9"}],"id":14587,"name":"MemberAccess","src":"3356:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14588,"name":"Identifier","src":"3377:3:9"}],"id":14589,"name":"FunctionCall","src":"3356:25:9"}],"id":14590,"name":"Assignment","src":"3343:38:9"}],"id":14591,"name":"ExpressionStatement","src":"3343:38:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14592,"name":"Identifier","src":"3391:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14593,"name":"Literal","src":"3398:1:9"}],"id":14594,"name":"Assignment","src":"3391:8:9"}],"id":14595,"name":"ExpressionStatement","src":"3391:8:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":14489,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14596,"name":"Identifier","src":"3409:4:9"}],"id":14598,"name":"MemberAccess","src":"3409:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":15320,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14599,"name":"Identifier","src":"3420:4:9"}],"id":14600,"name":"MemberAccess","src":"3420:9:9"}],"id":14601,"name":"MemberAccess","src":"3420:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14602,"name":"Identifier","src":"3441:3:9"}],"id":14603,"name":"FunctionCall","src":"3420:25:9"}],"id":14604,"name":"Assignment","src":"3409:36:9"}],"id":14605,"name":"ExpressionStatement","src":"3409:36:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14606,"name":"Identifier","src":"3455:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":14607,"name":"Literal","src":"3462:1:9"}],"id":14608,"name":"Assignment","src":"3455:8:9"}],"id":14609,"name":"ExpressionStatement","src":"3455:8:9"},{"attributes":{"assignments":[14611]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":14636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14610,"name":"ElementaryTypeName","src":"3500:4:9"}],"id":14611,"name":"VariableDeclaration","src":"3500:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":15300,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14612,"name":"Identifier","src":"3519:4:9"}],"id":14613,"name":"MemberAccess","src":"3519:9:9"}],"id":14614,"name":"MemberAccess","src":"3519:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14615,"name":"Identifier","src":"3540:3:9"}],"id":14616,"name":"FunctionCall","src":"3519:25:9"}],"id":14617,"name":"VariableDeclarationStatement","src":"3500:44:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14618,"name":"Identifier","src":"3554:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14619,"name":"Literal","src":"3561:1:9"}],"id":14620,"name":"Assignment","src":"3554:8:9"}],"id":14621,"name":"ExpressionStatement","src":"3554:8:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":14491,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14622,"name":"Identifier","src":"3572:4:9"}],"id":14624,"name":"MemberAccess","src":"3572:16:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14625,"name":"Identifier","src":"3591:3:9"}],"id":14626,"name":"Assignment","src":"3572:22:9"}],"id":14627,"name":"ExpressionStatement","src":"3572:22:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":14493,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14628,"name":"Identifier","src":"3604:4:9"}],"id":14630,"name":"MemberAccess","src":"3604:15:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14631,"name":"Identifier","src":"3622:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14611,"type":"uint256","value":"rdataLength"},"id":14632,"name":"Identifier","src":"3628:11:9"}],"id":14633,"name":"BinaryOperation","src":"3622:17:9"}],"id":14634,"name":"Assignment","src":"3604:35:9"}],"id":14635,"name":"ExpressionStatement","src":"3604:35:9"}],"id":14636,"name":"Block","src":"3016:630:9"}],"id":14637,"name":"FunctionDefinition","src":"2964:682:9"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":14658,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14638,"name":"UserDefinedTypeName","src":"3836:10:9"}],"id":14639,"name":"VariableDeclaration","src":"3836:22:9"}],"id":14640,"name":"ParameterList","src":"3835:24:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14658,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14641,"name":"ElementaryTypeName","src":"3882:5:9"}],"id":14642,"name":"VariableDeclaration","src":"3882:12:9"}],"id":14643,"name":"ParameterList","src":"3881:14:9"},{"children":[{"attributes":{"functionReturnParameters":14643},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":15471,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14639,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14644,"name":"Identifier","src":"3913:4:9"}],"id":14645,"name":"MemberAccess","src":"3913:9:9"}],"id":14646,"name":"MemberAccess","src":"3913:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14639,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14647,"name":"Identifier","src":"3933:4:9"}],"id":14648,"name":"MemberAccess","src":"3933:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14407,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":14649,"name":"Identifier","src":"3946:10:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14639,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14650,"name":"Identifier","src":"3957:4:9"}],"id":14651,"name":"MemberAccess","src":"3957:9:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14639,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14652,"name":"Identifier","src":"3968:4:9"}],"id":14653,"name":"MemberAccess","src":"3968:11:9"}],"id":14654,"name":"FunctionCall","src":"3946:34:9"}],"id":14655,"name":"FunctionCall","src":"3913:68:9"}],"id":14656,"name":"Return","src":"3906:75:9"}],"id":14657,"name":"Block","src":"3896:92:9"}],"id":14658,"name":"FunctionDefinition","src":"3822:166:9"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":14678,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14659,"name":"UserDefinedTypeName","src":"4176:10:9"}],"id":14660,"name":"VariableDeclaration","src":"4176:22:9"}],"id":14661,"name":"ParameterList","src":"4175:24:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14678,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14662,"name":"ElementaryTypeName","src":"4222:5:9"}],"id":14663,"name":"VariableDeclaration","src":"4222:12:9"}],"id":14664,"name":"ParameterList","src":"4221:14:9"},{"children":[{"attributes":{"functionReturnParameters":14664},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":15471,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14660,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14665,"name":"Identifier","src":"4253:4:9"}],"id":14666,"name":"MemberAccess","src":"4253:9:9"}],"id":14667,"name":"MemberAccess","src":"4253:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":14491,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14660,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14668,"name":"Identifier","src":"4273:4:9"}],"id":14669,"name":"MemberAccess","src":"4273:16:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":14493,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14660,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14670,"name":"Identifier","src":"4291:4:9"}],"id":14671,"name":"MemberAccess","src":"4291:15:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":14491,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14660,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14672,"name":"Identifier","src":"4309:4:9"}],"id":14673,"name":"MemberAccess","src":"4309:16:9"}],"id":14674,"name":"BinaryOperation","src":"4291:34:9"}],"id":14675,"name":"FunctionCall","src":"4253:73:9"}],"id":14676,"name":"Return","src":"4246:80:9"}],"id":14677,"name":"Block","src":"4236:97:9"}],"id":14678,"name":"FunctionDefinition","src":"4161:172:9"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14798,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14679,"name":"ElementaryTypeName","src":"4675:5:9"}],"id":14680,"name":"VariableDeclaration","src":"4675:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14681,"name":"ElementaryTypeName","src":"4694:4:9"}],"id":14682,"name":"VariableDeclaration","src":"4694:11:9"},{"attributes":{"constant":false,"name":"rrtype","scope":14798,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":14683,"name":"ElementaryTypeName","src":"4707:6:9"}],"id":14684,"name":"VariableDeclaration","src":"4707:13:9"}],"id":14685,"name":"ParameterList","src":"4674:47:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14798,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14686,"name":"ElementaryTypeName","src":"4745:4:9"}],"id":14687,"name":"VariableDeclaration","src":"4745:4:9"}],"id":14688,"name":"ParameterList","src":"4744:6:9"},{"children":[{"attributes":{"assignments":[14690]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":14797,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14689,"name":"ElementaryTypeName","src":"4761:5:9"}],"id":14690,"name":"VariableDeclaration","src":"4761:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14691,"name":"ElementaryTypeNameExpression","src":"4780:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14684,"type":"uint16","value":"rrtype"},"id":14692,"name":"Identifier","src":"4786:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":14693,"name":"Literal","src":"4796:1:9"}],"id":14694,"name":"BinaryOperation","src":"4786:11:9"}],"id":14695,"name":"FunctionCall","src":"4780:18:9"}],"id":14696,"name":"VariableDeclarationStatement","src":"4761:37:9"},{"attributes":{"assignments":[14698]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":14797,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14697,"name":"ElementaryTypeName","src":"4808:5:9"}],"id":14698,"name":"VariableDeclaration","src":"4808:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14699,"name":"ElementaryTypeNameExpression","src":"4827:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14684,"type":"uint16","value":"rrtype"},"id":14700,"name":"Identifier","src":"4834:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":14701,"name":"Literal","src":"4843:4:9"}],"id":14702,"name":"BinaryOperation","src":"4834:13:9"}],"id":14703,"name":"TupleExpression","src":"4833:15:9"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":14704,"name":"Literal","src":"4851:1:9"}],"id":14705,"name":"BinaryOperation","src":"4833:19:9"}],"id":14706,"name":"FunctionCall","src":"4827:26:9"}],"id":14707,"name":"VariableDeclarationStatement","src":"4808:45:9"},{"attributes":{"assignments":[14709]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":14797,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14708,"name":"ElementaryTypeName","src":"4863:5:9"}],"id":14709,"name":"VariableDeclaration","src":"4863:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14710,"name":"ElementaryTypeNameExpression","src":"4885:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14711,"name":"ElementaryTypeNameExpression","src":"4891:5:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14712,"name":"Literal","src":"4897:1:9"}],"id":14713,"name":"FunctionCall","src":"4891:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14714,"name":"ElementaryTypeNameExpression","src":"4904:5:9"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":14715,"name":"Literal","src":"4910:1:9"}],"id":14716,"name":"FunctionCall","src":"4904:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14717,"name":"ElementaryTypeNameExpression","src":"4915:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14684,"type":"uint16","value":"rrtype"},"id":14718,"name":"Identifier","src":"4921:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":14719,"name":"Literal","src":"4930:3:9"}],"id":14720,"name":"BinaryOperation","src":"4921:12:9"}],"id":14721,"name":"FunctionCall","src":"4915:19:9"}],"id":14722,"name":"BinaryOperation","src":"4904:30:9"}],"id":14723,"name":"TupleExpression","src":"4903:32:9"}],"id":14724,"name":"BinaryOperation","src":"4891:44:9"}],"id":14725,"name":"FunctionCall","src":"4885:51:9"}],"id":14726,"name":"VariableDeclarationStatement","src":"4863:73:9"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[14728]},"children":[{"attributes":{"constant":false,"name":"off","scope":14794,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14727,"name":"ElementaryTypeName","src":"4951:4:9"}],"id":14728,"name":"VariableDeclaration","src":"4951:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14682,"type":"uint256","value":"offset"},"id":14729,"name":"Identifier","src":"4962:6:9"}],"id":14730,"name":"VariableDeclarationStatement","src":"4951:17:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14731,"name":"Identifier","src":"4970:3:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14680,"type":"bytes memory","value":"self"},"id":14732,"name":"Identifier","src":"4976:4:9"}],"id":14733,"name":"MemberAccess","src":"4976:11:9"}],"id":14734,"name":"BinaryOperation","src":"4970:17:9"},{"children":[{"attributes":{"assignments":[14736]},"children":[{"attributes":{"constant":false,"name":"window","scope":14793,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14735,"name":"ElementaryTypeName","src":"5004:5:9"}],"id":14736,"name":"VariableDeclaration","src":"5004:12:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14680,"type":"bytes memory","value":"self"},"id":14737,"name":"Identifier","src":"5019:4:9"}],"id":14738,"name":"MemberAccess","src":"5019:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14739,"name":"Identifier","src":"5034:3:9"}],"id":14740,"name":"FunctionCall","src":"5019:19:9"}],"id":14741,"name":"VariableDeclarationStatement","src":"5004:34:9"},{"attributes":{"assignments":[14743]},"children":[{"attributes":{"constant":false,"name":"len","scope":14793,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14742,"name":"ElementaryTypeName","src":"5052:5:9"}],"id":14743,"name":"VariableDeclaration","src":"5052:9:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14680,"type":"bytes memory","value":"self"},"id":14744,"name":"Identifier","src":"5064:4:9"}],"id":14745,"name":"MemberAccess","src":"5064:14:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14746,"name":"Identifier","src":"5079:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14747,"name":"Literal","src":"5085:1:9"}],"id":14748,"name":"BinaryOperation","src":"5079:7:9"}],"id":14749,"name":"FunctionCall","src":"5064:23:9"}],"id":14750,"name":"VariableDeclarationStatement","src":"5052:35:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14690,"type":"uint8","value":"typeWindow"},"id":14751,"name":"Identifier","src":"5105:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14736,"type":"uint8","value":"window"},"id":14752,"name":"Identifier","src":"5118:6:9"}],"id":14753,"name":"BinaryOperation","src":"5105:19:9"},{"children":[{"attributes":{"functionReturnParameters":14688},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":14754,"name":"Literal","src":"5213:5:9"}],"id":14755,"name":"Return","src":"5206:12:9"}],"id":14756,"name":"Block","src":"5126:107:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14690,"type":"uint8","value":"typeWindow"},"id":14757,"name":"Identifier","src":"5243:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14736,"type":"uint8","value":"window"},"id":14758,"name":"Identifier","src":"5257:6:9"}],"id":14759,"name":"BinaryOperation","src":"5243:20:9"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14743,"type":"uint8","value":"len"},"id":14760,"name":"Identifier","src":"5329:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":14761,"name":"Literal","src":"5335:1:9"}],"id":14762,"name":"BinaryOperation","src":"5329:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14698,"type":"uint8","value":"windowByte"},"id":14763,"name":"Identifier","src":"5340:10:9"}],"id":14764,"name":"BinaryOperation","src":"5329:21:9"},{"children":[{"attributes":{"functionReturnParameters":14688},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":14765,"name":"Literal","src":"5443:5:9"}],"id":14766,"name":"Return","src":"5436:12:9"}],"id":14767,"name":"Block","src":"5352:115:9"}],"id":14768,"name":"IfStatement","src":"5325:142:9"},{"attributes":{"functionReturnParameters":14688},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14680,"type":"bytes memory","value":"self"},"id":14769,"name":"Identifier","src":"5492:4:9"}],"id":14770,"name":"MemberAccess","src":"5492:14:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14771,"name":"Identifier","src":"5507:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14698,"type":"uint8","value":"windowByte"},"id":14772,"name":"Identifier","src":"5513:10:9"}],"id":14773,"name":"BinaryOperation","src":"5507:16:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14774,"name":"Literal","src":"5526:1:9"}],"id":14775,"name":"BinaryOperation","src":"5507:20:9"}],"id":14776,"name":"FunctionCall","src":"5492:36:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14709,"type":"uint8","value":"windowBitmask"},"id":14777,"name":"Identifier","src":"5531:13:9"}],"id":14778,"name":"BinaryOperation","src":"5492:52:9"}],"id":14779,"name":"TupleExpression","src":"5491:54:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14780,"name":"Literal","src":"5549:1:9"}],"id":14781,"name":"BinaryOperation","src":"5491:59:9"}],"id":14782,"name":"Return","src":"5484:66:9"}],"id":14783,"name":"Block","src":"5265:300:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14784,"name":"Identifier","src":"5630:3:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14743,"type":"uint8","value":"len"},"id":14785,"name":"Identifier","src":"5637:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14786,"name":"Literal","src":"5643:1:9"}],"id":14787,"name":"BinaryOperation","src":"5637:7:9"}],"id":14788,"name":"Assignment","src":"5630:14:9"}],"id":14789,"name":"ExpressionStatement","src":"5630:14:9"}],"id":14790,"name":"Block","src":"5571:88:9"}],"id":14791,"name":"IfStatement","src":"5239:420:9"}],"id":14792,"name":"IfStatement","src":"5101:558:9"}],"id":14793,"name":"Block","src":"4990:679:9"}],"id":14794,"name":"ForStatement","src":"4946:723:9"},{"attributes":{"functionReturnParameters":14688},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":14795,"name":"Literal","src":"5686:5:9"}],"id":14796,"name":"Return","src":"5679:12:9"}],"id":14797,"name":"Block","src":"4751:947:9"}],"id":14798,"name":"FunctionDefinition","src":"4650:1048:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14953,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14799,"name":"ElementaryTypeName","src":"5726:5:9"}],"id":14800,"name":"VariableDeclaration","src":"5726:17:9"},{"attributes":{"constant":false,"name":"other","scope":14953,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14801,"name":"ElementaryTypeName","src":"5745:5:9"}],"id":14802,"name":"VariableDeclaration","src":"5745:18:9"}],"id":14803,"name":"ParameterList","src":"5725:39:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14953,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":14804,"name":"ElementaryTypeName","src":"5788:3:9"}],"id":14805,"name":"VariableDeclaration","src":"5788:3:9"}],"id":14806,"name":"ParameterList","src":"5787:5:9"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":15264,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14807,"name":"Identifier","src":"5807:4:9"}],"id":14808,"name":"MemberAccess","src":"5807:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14809,"name":"Identifier","src":"5819:5:9"}],"id":14810,"name":"FunctionCall","src":"5807:18:9"},{"children":[{"attributes":{"functionReturnParameters":14806},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14811,"name":"Literal","src":"5848:1:9"}],"id":14812,"name":"Return","src":"5841:8:9"}],"id":14813,"name":"Block","src":"5827:33:9"}],"id":14814,"name":"IfStatement","src":"5803:57:9"},{"attributes":{"assignments":[14816],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14815,"name":"ElementaryTypeName","src":"5870:4:9"}],"id":14816,"name":"VariableDeclaration","src":"5870:8:9"}],"id":14817,"name":"VariableDeclarationStatement","src":"5870:8:9"},{"attributes":{"assignments":[14819],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14818,"name":"ElementaryTypeName","src":"5888:4:9"}],"id":14819,"name":"VariableDeclaration","src":"5888:13:9"}],"id":14820,"name":"VariableDeclarationStatement","src":"5888:13:9"},{"attributes":{"assignments":[14822],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14821,"name":"ElementaryTypeName","src":"5911:4:9"}],"id":14822,"name":"VariableDeclaration","src":"5911:12:9"}],"id":14823,"name":"VariableDeclarationStatement","src":"5911:12:9"},{"attributes":{"assignments":[14825],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14824,"name":"ElementaryTypeName","src":"5933:4:9"}],"id":14825,"name":"VariableDeclaration","src":"5933:17:9"}],"id":14826,"name":"VariableDeclarationStatement","src":"5933:17:9"},{"attributes":{"assignments":[14828]},"children":[{"attributes":{"constant":false,"name":"counts","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14827,"name":"ElementaryTypeName","src":"5960:4:9"}],"id":14828,"name":"VariableDeclaration","src":"5960:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":14479,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":14829,"name":"Identifier","src":"5974:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14830,"name":"Identifier","src":"5985:4:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14831,"name":"Literal","src":"5991:1:9"}],"id":14832,"name":"FunctionCall","src":"5974:19:9"}],"id":14833,"name":"VariableDeclarationStatement","src":"5960:33:9"},{"attributes":{"assignments":[14835]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14834,"name":"ElementaryTypeName","src":"6003:4:9"}],"id":14835,"name":"VariableDeclaration","src":"6003:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":14479,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":14836,"name":"Identifier","src":"6022:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14837,"name":"Identifier","src":"6033:5:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14838,"name":"Literal","src":"6040:1:9"}],"id":14839,"name":"FunctionCall","src":"6022:20:9"}],"id":14840,"name":"VariableDeclarationStatement","src":"6003:39:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14841,"name":"Identifier","src":"6153:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14835,"type":"uint256","value":"othercounts"},"id":14842,"name":"Identifier","src":"6162:11:9"}],"id":14843,"name":"BinaryOperation","src":"6153:20:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14822,"type":"uint256","value":"prevoff"},"id":14844,"name":"Identifier","src":"6189:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14845,"name":"Identifier","src":"6199:3:9"}],"id":14846,"name":"Assignment","src":"6189:13:9"}],"id":14847,"name":"ExpressionStatement","src":"6189:13:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14848,"name":"Identifier","src":"6216:3:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14972,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":14849,"name":"Identifier","src":"6222:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14850,"name":"Identifier","src":"6231:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14851,"name":"Identifier","src":"6237:3:9"}],"id":14852,"name":"FunctionCall","src":"6222:19:9"}],"id":14853,"name":"Assignment","src":"6216:25:9"}],"id":14854,"name":"ExpressionStatement","src":"6216:25:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14855,"name":"Identifier","src":"6255:6:9"}],"id":14856,"name":"UnaryOperation","src":"6255:8:9"}],"id":14857,"name":"ExpressionStatement","src":"6255:8:9"}],"id":14858,"name":"Block","src":"6175:99:9"}],"id":14859,"name":"WhileStatement","src":"6146:128:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14835,"type":"uint256","value":"othercounts"},"id":14860,"name":"Identifier","src":"6291:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14861,"name":"Identifier","src":"6305:6:9"}],"id":14862,"name":"BinaryOperation","src":"6291:20:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14825,"type":"uint256","value":"otherprevoff"},"id":14863,"name":"Identifier","src":"6327:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14864,"name":"Identifier","src":"6342:8:9"}],"id":14865,"name":"Assignment","src":"6327:23:9"}],"id":14866,"name":"ExpressionStatement","src":"6327:23:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14867,"name":"Identifier","src":"6364:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14972,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":14868,"name":"Identifier","src":"6375:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14869,"name":"Identifier","src":"6384:5:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14870,"name":"Identifier","src":"6391:8:9"}],"id":14871,"name":"FunctionCall","src":"6375:25:9"}],"id":14872,"name":"Assignment","src":"6364:36:9"}],"id":14873,"name":"ExpressionStatement","src":"6364:36:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14835,"type":"uint256","value":"othercounts"},"id":14874,"name":"Identifier","src":"6414:11:9"}],"id":14875,"name":"UnaryOperation","src":"6414:13:9"}],"id":14876,"name":"ExpressionStatement","src":"6414:13:9"}],"id":14877,"name":"Block","src":"6313:125:9"}],"id":14878,"name":"WhileStatement","src":"6284:154:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14879,"name":"Identifier","src":"6513:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14880,"name":"Literal","src":"6522:1:9"}],"id":14881,"name":"BinaryOperation","src":"6513:10:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":15210,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14882,"name":"Identifier","src":"6528:4:9"}],"id":14883,"name":"MemberAccess","src":"6528:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14884,"name":"Identifier","src":"6540:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14885,"name":"Identifier","src":"6545:5:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14886,"name":"Identifier","src":"6552:8:9"}],"id":14887,"name":"FunctionCall","src":"6528:33:9"}],"id":14888,"name":"UnaryOperation","src":"6527:34:9"}],"id":14889,"name":"BinaryOperation","src":"6513:48:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14822,"type":"uint256","value":"prevoff"},"id":14890,"name":"Identifier","src":"6577:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14891,"name":"Identifier","src":"6587:3:9"}],"id":14892,"name":"Assignment","src":"6577:13:9"}],"id":14893,"name":"ExpressionStatement","src":"6577:13:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14894,"name":"Identifier","src":"6604:3:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14972,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":14895,"name":"Identifier","src":"6610:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14896,"name":"Identifier","src":"6619:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14897,"name":"Identifier","src":"6625:3:9"}],"id":14898,"name":"FunctionCall","src":"6610:19:9"}],"id":14899,"name":"Assignment","src":"6604:25:9"}],"id":14900,"name":"ExpressionStatement","src":"6604:25:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14825,"type":"uint256","value":"otherprevoff"},"id":14901,"name":"Identifier","src":"6643:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14902,"name":"Identifier","src":"6658:8:9"}],"id":14903,"name":"Assignment","src":"6643:23:9"}],"id":14904,"name":"ExpressionStatement","src":"6643:23:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14905,"name":"Identifier","src":"6680:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14972,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":14906,"name":"Identifier","src":"6691:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14907,"name":"Identifier","src":"6700:5:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14908,"name":"Identifier","src":"6707:8:9"}],"id":14909,"name":"FunctionCall","src":"6691:25:9"}],"id":14910,"name":"Assignment","src":"6680:36:9"}],"id":14911,"name":"ExpressionStatement","src":"6680:36:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14912,"name":"Identifier","src":"6730:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14913,"name":"Literal","src":"6740:1:9"}],"id":14914,"name":"Assignment","src":"6730:11:9"}],"id":14915,"name":"ExpressionStatement","src":"6730:11:9"}],"id":14916,"name":"Block","src":"6563:189:9"}],"id":14917,"name":"WhileStatement","src":"6506:246:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14918,"name":"Identifier","src":"6766:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14919,"name":"Literal","src":"6773:1:9"}],"id":14920,"name":"BinaryOperation","src":"6766:8:9"},{"children":[{"attributes":{"functionReturnParameters":14806},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14921,"name":"Literal","src":"6798:1:9"}],"id":14922,"name":"UnaryOperation","src":"6797:2:9"}],"id":14923,"name":"Return","src":"6790:9:9"}],"id":14924,"name":"Block","src":"6776:34:9"}],"id":14925,"name":"IfStatement","src":"6762:48:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14926,"name":"Identifier","src":"6822:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14927,"name":"Literal","src":"6834:1:9"}],"id":14928,"name":"BinaryOperation","src":"6822:13:9"},{"children":[{"attributes":{"functionReturnParameters":14806},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14929,"name":"Literal","src":"6858:1:9"}],"id":14930,"name":"Return","src":"6851:8:9"}],"id":14931,"name":"Block","src":"6837:33:9"}],"id":14932,"name":"IfStatement","src":"6819:51:9"},{"attributes":{"functionReturnParameters":14806},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":15150,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14933,"name":"Identifier","src":"6887:4:9"}],"id":14934,"name":"MemberAccess","src":"6887:12:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14822,"type":"uint256","value":"prevoff"},"id":14935,"name":"Identifier","src":"6900:7:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14936,"name":"Literal","src":"6910:1:9"}],"id":14937,"name":"BinaryOperation","src":"6900:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14938,"name":"Identifier","src":"6913:4:9"}],"id":14939,"name":"MemberAccess","src":"6913:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14822,"type":"uint256","value":"prevoff"},"id":14940,"name":"Identifier","src":"6928:7:9"}],"id":14941,"name":"FunctionCall","src":"6913:23:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14942,"name":"Identifier","src":"6938:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14825,"type":"uint256","value":"otherprevoff"},"id":14943,"name":"Identifier","src":"6945:12:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14944,"name":"Literal","src":"6960:1:9"}],"id":14945,"name":"BinaryOperation","src":"6945:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14946,"name":"Identifier","src":"6963:5:9"}],"id":14947,"name":"MemberAccess","src":"6963:15:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14825,"type":"uint256","value":"otherprevoff"},"id":14948,"name":"Identifier","src":"6979:12:9"}],"id":14949,"name":"FunctionCall","src":"6963:29:9"}],"id":14950,"name":"FunctionCall","src":"6887:106:9"}],"id":14951,"name":"Return","src":"6880:113:9"}],"id":14952,"name":"Block","src":"5793:1207:9"}],"id":14953,"name":"FunctionDefinition","src":"5704:1296:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":14972,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14954,"name":"ElementaryTypeName","src":"7024:5:9"}],"id":14955,"name":"VariableDeclaration","src":"7024:17:9"},{"attributes":{"constant":false,"name":"off","scope":14972,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14956,"name":"ElementaryTypeName","src":"7043:4:9"}],"id":14957,"name":"VariableDeclaration","src":"7043:8:9"}],"id":14958,"name":"ParameterList","src":"7023:29:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14972,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14959,"name":"ElementaryTypeName","src":"7075:4:9"}],"id":14960,"name":"VariableDeclaration","src":"7075:4:9"}],"id":14961,"name":"ParameterList","src":"7074:6:9"},{"children":[{"attributes":{"functionReturnParameters":14961},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14957,"type":"uint256","value":"off"},"id":14962,"name":"Identifier","src":"7098:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14963,"name":"Literal","src":"7104:1:9"}],"id":14964,"name":"BinaryOperation","src":"7098:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14955,"type":"bytes memory","value":"body"},"id":14965,"name":"Identifier","src":"7108:4:9"}],"id":14966,"name":"MemberAccess","src":"7108:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14957,"type":"uint256","value":"off"},"id":14967,"name":"Identifier","src":"7123:3:9"}],"id":14968,"name":"FunctionCall","src":"7108:19:9"}],"id":14969,"name":"BinaryOperation","src":"7098:29:9"}],"id":14970,"name":"Return","src":"7091:36:9"}],"id":14971,"name":"Block","src":"7081:53:9"}],"id":14972,"name":"FunctionDefinition","src":"7006:128:9"}],"id":14973,"name":"ContractDefinition","src":"150:6986:9"}],"id":14974,"name":"SourceUnit","src":"0:7137:9"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[14355]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":14288,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[14355],"name":"ResolverBase","scope":14356},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":14355,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":14289,"name":"ElementaryTypeName","src":"53:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":14290,"name":"Literal","src":"97:10:10"}],"id":14291,"name":"VariableDeclaration","src":"53:54:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":14355,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":14303,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":14292,"name":"ElementaryTypeName","src":"141:6:10"}],"id":14293,"name":"VariableDeclaration","src":"141:18:10"}],"id":14294,"name":"ParameterList","src":"140:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":14303,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14295,"name":"ElementaryTypeName","src":"181:4:10"}],"id":14296,"name":"VariableDeclaration","src":"181:4:10"}],"id":14297,"name":"ParameterList","src":"180:6:10"},{"children":[{"attributes":{"functionReturnParameters":14297},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14293,"type":"bytes4","value":"interfaceID"},"id":14298,"name":"Identifier","src":"204:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14291,"type":"bytes4","value":"INTERFACE_META_ID"},"id":14299,"name":"Identifier","src":"219:17:10"}],"id":14300,"name":"BinaryOperation","src":"204:32:10"}],"id":14301,"name":"Return","src":"197:39:10"}],"id":14302,"name":"Block","src":"187:56:10"}],"id":14303,"name":"FunctionDefinition","src":"114:129:10"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":14355,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":14310,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":14304,"name":"ElementaryTypeName","src":"271:7:10"}],"id":14305,"name":"VariableDeclaration","src":"271:12:10"}],"id":14306,"name":"ParameterList","src":"270:14:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":14310,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14307,"name":"ElementaryTypeName","src":"307:4:10"}],"id":14308,"name":"VariableDeclaration","src":"307:4:10"}],"id":14309,"name":"ParameterList","src":"306:6:10"}],"id":14310,"name":"FunctionDefinition","src":"249:64:10"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":14322,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":14311,"name":"ElementaryTypeName","src":"339:7:10"}],"id":14312,"name":"VariableDeclaration","src":"339:12:10"}],"id":14313,"name":"ParameterList","src":"338:14:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":14314,"name":"Identifier","src":"363:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":14310,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":14315,"name":"Identifier","src":"371:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14312,"type":"bytes32","value":"node"},"id":14316,"name":"Identifier","src":"384:4:10"}],"id":14317,"name":"FunctionCall","src":"371:18:10"}],"id":14318,"name":"FunctionCall","src":"363:27:10"}],"id":14319,"name":"ExpressionStatement","src":"363:27:10"},{"id":14320,"name":"PlaceholderStatement","src":"400:1:10"}],"id":14321,"name":"Block","src":"353:55:10"}],"id":14322,"name":"ModifierDefinition","src":"319:89:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":14355,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":14338,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14323,"name":"ElementaryTypeName","src":"438:5:10"}],"id":14324,"name":"VariableDeclaration","src":"438:14:10"}],"id":14325,"name":"ParameterList","src":"437:16:10"},{"children":[{"attributes":{"constant":false,"name":"a","scope":14338,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":14326,"name":"ElementaryTypeName","src":"476:15:10"}],"id":14327,"name":"VariableDeclaration","src":"476:17:10"}],"id":14328,"name":"ParameterList","src":"475:19:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":14329,"name":"Identifier","src":"505:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14324,"type":"bytes memory","value":"b"},"id":14330,"name":"Identifier","src":"513:1:10"}],"id":14331,"name":"MemberAccess","src":"513:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":14332,"name":"Literal","src":"525:2:10"}],"id":14333,"name":"BinaryOperation","src":"513:14:10"}],"id":14334,"name":"FunctionCall","src":"505:23:10"}],"id":14335,"name":"ExpressionStatement","src":"505:23:10"},{"attributes":{"externalReferences":[{"a":{"declaration":14327,"isOffset":false,"isSlot":false,"src":"561:1:10","valueSize":1}},{"b":{"declaration":14324,"isOffset":false,"isSlot":false,"src":"580:1:10","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":14336,"name":"InlineAssembly","src":"538:74:10"}],"id":14337,"name":"Block","src":"495:123:10"}],"id":14338,"name":"FunctionDefinition","src":"414:204:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":14355,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":14354,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":14339,"name":"ElementaryTypeName","src":"648:7:10"}],"id":14340,"name":"VariableDeclaration","src":"648:9:10"}],"id":14341,"name":"ParameterList","src":"647:11:10"},{"children":[{"attributes":{"constant":false,"name":"b","scope":14354,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14342,"name":"ElementaryTypeName","src":"681:5:10"}],"id":14343,"name":"VariableDeclaration","src":"681:14:10"}],"id":14344,"name":"ParameterList","src":"680:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14343,"type":"bytes memory","value":"b"},"id":14345,"name":"Identifier","src":"707:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14346,"name":"ElementaryTypeName","src":"715:5:10"}],"id":14347,"name":"NewExpression","src":"711:9:10"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":14348,"name":"Literal","src":"721:2:10"}],"id":14349,"name":"FunctionCall","src":"711:13:10"}],"id":14350,"name":"Assignment","src":"707:17:10"}],"id":14351,"name":"ExpressionStatement","src":"707:17:10"},{"attributes":{"externalReferences":[{"b":{"declaration":14343,"isOffset":false,"isSlot":false,"src":"768:1:10","valueSize":1}},{"a":{"declaration":14340,"isOffset":false,"isSlot":false,"src":"780:1:10","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":14352,"name":"InlineAssembly","src":"734:73:10"}],"id":14353,"name":"Block","src":"697:116:10"}],"id":14354,"name":"FunctionDefinition","src":"624:189:10"}],"id":14355,"name":"ContractDefinition","src":"25:790:10"}],"id":14356,"name":"SourceUnit","src":"0:816:10"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[11299]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":11165,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":11300,"symbolAliases":[null],"unitAlias":""},"id":11166,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[11299,14355],"name":"ABIResolver","scope":11300},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":11167,"name":"UserDefinedTypeName","src":"80:12:11"}],"id":11168,"name":"InheritanceSpecifier","src":"80:12:11"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":11299,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11169,"name":"ElementaryTypeName","src":"99:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":11170,"name":"Literal","src":"142:10:11"}],"id":11171,"name":"VariableDeclaration","src":"99:53:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11177,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11172,"name":"ElementaryTypeName","src":"176:7:11"}],"id":11173,"name":"VariableDeclaration","src":"176:20:11"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":11177,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11174,"name":"ElementaryTypeName","src":"198:7:11"}],"id":11175,"name":"VariableDeclaration","src":"198:27:11"}],"id":11176,"name":"ParameterList","src":"175:51:11"}],"id":11177,"name":"EventDefinition","src":"159:68:11"},{"attributes":{"constant":false,"name":"abis","scope":11299,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11178,"name":"ElementaryTypeName","src":"241:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11179,"name":"ElementaryTypeName","src":"258:7:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":11180,"name":"ElementaryTypeName","src":"267:5:11"}],"id":11181,"name":"Mapping","src":"250:23:11"}],"id":11182,"name":"Mapping","src":"233:41:11"}],"id":11183,"name":"VariableDeclaration","src":"233:46:11"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":11299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11221,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11184,"name":"ElementaryTypeName","src":"598:7:11"}],"id":11185,"name":"VariableDeclaration","src":"598:12:11"},{"attributes":{"constant":false,"name":"contentType","scope":11221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11186,"name":"ElementaryTypeName","src":"612:7:11"}],"id":11187,"name":"VariableDeclaration","src":"612:19:11"},{"attributes":{"constant":false,"name":"data","scope":11221,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11188,"name":"ElementaryTypeName","src":"633:5:11"}],"id":11189,"name":"VariableDeclaration","src":"633:19:11"}],"id":11190,"name":"ParameterList","src":"597:56:11"},{"attributes":{"parameters":[null]},"children":[],"id":11194,"name":"ParameterList","src":"680:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11191,"name":"Identifier","src":"663:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11185,"type":"bytes32","value":"node"},"id":11192,"name":"Identifier","src":"674:4:11"}],"id":11193,"name":"ModifierInvocation","src":"663:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":11195,"name":"Identifier","src":"735:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11187,"type":"uint256","value":"contentType"},"id":11196,"name":"Identifier","src":"745:11:11"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":11197,"name":"Literal","src":"759:1:11"}],"id":11198,"name":"BinaryOperation","src":"745:15:11"}],"id":11199,"name":"TupleExpression","src":"744:17:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11187,"type":"uint256","value":"contentType"},"id":11200,"name":"Identifier","src":"764:11:11"}],"id":11201,"name":"BinaryOperation","src":"744:31:11"}],"id":11202,"name":"TupleExpression","src":"743:33:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11203,"name":"Literal","src":"780:1:11"}],"id":11204,"name":"BinaryOperation","src":"743:38:11"}],"id":11205,"name":"FunctionCall","src":"735:47:11"}],"id":11206,"name":"ExpressionStatement","src":"735:47:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11183,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":11207,"name":"Identifier","src":"793:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11185,"type":"bytes32","value":"node"},"id":11208,"name":"Identifier","src":"798:4:11"}],"id":11210,"name":"IndexAccess","src":"793:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11187,"type":"uint256","value":"contentType"},"id":11209,"name":"Identifier","src":"804:11:11"}],"id":11211,"name":"IndexAccess","src":"793:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11189,"type":"bytes calldata","value":"data"},"id":11212,"name":"Identifier","src":"819:4:11"}],"id":11213,"name":"Assignment","src":"793:30:11"}],"id":11214,"name":"ExpressionStatement","src":"793:30:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":11177,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":11215,"name":"Identifier","src":"838:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11185,"type":"bytes32","value":"node"},"id":11216,"name":"Identifier","src":"849:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11187,"type":"uint256","value":"contentType"},"id":11217,"name":"Identifier","src":"855:11:11"}],"id":11218,"name":"FunctionCall","src":"838:29:11"}],"id":11219,"name":"EmitStatement","src":"833:34:11"}],"id":11220,"name":"Block","src":"680:194:11"}],"id":11221,"name":"FunctionDefinition","src":"582:292:11"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":11299,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11281,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11222,"name":"ElementaryTypeName","src":"1208:7:11"}],"id":11223,"name":"VariableDeclaration","src":"1208:12:11"},{"attributes":{"constant":false,"name":"contentTypes","scope":11281,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11224,"name":"ElementaryTypeName","src":"1222:7:11"}],"id":11225,"name":"VariableDeclaration","src":"1222:20:11"}],"id":11226,"name":"ParameterList","src":"1207:36:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":11281,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11227,"name":"ElementaryTypeName","src":"1267:7:11"}],"id":11228,"name":"VariableDeclaration","src":"1267:7:11"},{"attributes":{"constant":false,"name":"","scope":11281,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11229,"name":"ElementaryTypeName","src":"1276:5:11"}],"id":11230,"name":"VariableDeclaration","src":"1276:12:11"}],"id":11231,"name":"ParameterList","src":"1266:23:11"},{"children":[{"attributes":{"assignments":[11235]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":11280,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11232,"name":"ElementaryTypeName","src":"1308:7:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":11233,"name":"ElementaryTypeName","src":"1317:5:11"}],"id":11234,"name":"Mapping","src":"1300:23:11"}],"id":11235,"name":"VariableDeclaration","src":"1300:38:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11183,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":11236,"name":"Identifier","src":"1341:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11223,"type":"bytes32","value":"node"},"id":11237,"name":"Identifier","src":"1346:4:11"}],"id":11238,"name":"IndexAccess","src":"1341:10:11"}],"id":11239,"name":"VariableDeclarationStatement","src":"1300:51:11"},{"children":[{"attributes":{"assignments":[11241]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":11273,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11240,"name":"ElementaryTypeName","src":"1367:7:11"}],"id":11241,"name":"VariableDeclaration","src":"1367:19:11"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":11242,"name":"Literal","src":"1389:1:11"}],"id":11243,"name":"VariableDeclarationStatement","src":"1367:23:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11244,"name":"Identifier","src":"1392:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11225,"type":"uint256","value":"contentTypes"},"id":11245,"name":"Identifier","src":"1407:12:11"}],"id":11246,"name":"BinaryOperation","src":"1392:27:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11247,"name":"Identifier","src":"1421:11:11"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":11248,"name":"Literal","src":"1437:1:11"}],"id":11249,"name":"Assignment","src":"1421:17:11"}],"id":11250,"name":"ExpressionStatement","src":"1421:17:11"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11251,"name":"Identifier","src":"1459:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11225,"type":"uint256","value":"contentTypes"},"id":11252,"name":"Identifier","src":"1473:12:11"}],"id":11253,"name":"BinaryOperation","src":"1459:26:11"}],"id":11254,"name":"TupleExpression","src":"1458:28:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11255,"name":"Literal","src":"1490:1:11"}],"id":11256,"name":"BinaryOperation","src":"1458:33:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11235,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":11257,"name":"Identifier","src":"1495:6:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11258,"name":"Identifier","src":"1502:11:11"}],"id":11259,"name":"IndexAccess","src":"1495:19:11"}],"id":11260,"name":"MemberAccess","src":"1495:26:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11261,"name":"Literal","src":"1524:1:11"}],"id":11262,"name":"BinaryOperation","src":"1495:30:11"}],"id":11263,"name":"BinaryOperation","src":"1458:67:11"},{"children":[{"attributes":{"functionReturnParameters":11231},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11264,"name":"Identifier","src":"1553:11:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11235,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":11265,"name":"Identifier","src":"1566:6:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11266,"name":"Identifier","src":"1573:11:11"}],"id":11267,"name":"IndexAccess","src":"1566:19:11"}],"id":11268,"name":"TupleExpression","src":"1552:34:11"}],"id":11269,"name":"Return","src":"1545:41:11"}],"id":11270,"name":"Block","src":"1527:74:11"}],"id":11271,"name":"IfStatement","src":"1454:147:11"}],"id":11272,"name":"Block","src":"1440:171:11"}],"id":11273,"name":"ForStatement","src":"1362:249:11"},{"attributes":{"functionReturnParameters":11231},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11274,"name":"Literal","src":"1629:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":11275,"name":"ElementaryTypeNameExpression","src":"1632:5:11"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":11276,"name":"Literal","src":"1638:2:11"}],"id":11277,"name":"FunctionCall","src":"1632:9:11"}],"id":11278,"name":"TupleExpression","src":"1628:14:11"}],"id":11279,"name":"Return","src":"1621:21:11"}],"id":11280,"name":"Block","src":"1290:359:11"}],"id":11281,"name":"FunctionDefinition","src":"1195:454:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":11299,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":11298,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11282,"name":"ElementaryTypeName","src":"1682:6:11"}],"id":11283,"name":"VariableDeclaration","src":"1682:18:11"}],"id":11284,"name":"ParameterList","src":"1681:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":11298,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11285,"name":"ElementaryTypeName","src":"1722:4:11"}],"id":11286,"name":"VariableDeclaration","src":"1722:4:11"}],"id":11287,"name":"ParameterList","src":"1721:6:11"},{"children":[{"attributes":{"functionReturnParameters":11287},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11283,"type":"bytes4","value":"interfaceID"},"id":11288,"name":"Identifier","src":"1745:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11171,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":11289,"name":"Identifier","src":"1760:16:11"}],"id":11290,"name":"BinaryOperation","src":"1745:31:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15748,"type":"contract super ABIResolver","value":"super"},"id":11291,"name":"Identifier","src":"1780:5:11"}],"id":11292,"name":"MemberAccess","src":"1780:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11283,"type":"bytes4","value":"interfaceID"},"id":11293,"name":"Identifier","src":"1804:11:11"}],"id":11294,"name":"FunctionCall","src":"1780:36:11"}],"id":11295,"name":"BinaryOperation","src":"1745:71:11"}],"id":11296,"name":"Return","src":"1738:78:11"}],"id":11297,"name":"Block","src":"1728:95:11"}],"id":11298,"name":"FunctionDefinition","src":"1655:168:11"}],"id":11299,"name":"ContractDefinition","src":"56:1769:11"}],"id":11300,"name":"SourceUnit","src":"0:1826:11"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[11458]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":11301,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":11459,"symbolAliases":[null],"unitAlias":""},"id":11302,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[11458,14355],"name":"AddrResolver","scope":11459},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":11303,"name":"UserDefinedTypeName","src":"81:12:12"}],"id":11304,"name":"InheritanceSpecifier","src":"81:12:12"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":11458,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11305,"name":"ElementaryTypeName","src":"100:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":11306,"name":"Literal","src":"144:10:12"}],"id":11307,"name":"VariableDeclaration","src":"100:54:12"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":11458,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11308,"name":"ElementaryTypeName","src":"160:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":11309,"name":"Literal","src":"207:10:12"}],"id":11310,"name":"VariableDeclaration","src":"160:57:12"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":11458,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11311,"name":"ElementaryTypeName","src":"223:4:12"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":11312,"name":"Literal","src":"261:2:12"}],"id":11313,"name":"VariableDeclaration","src":"223:40:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11319,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11314,"name":"ElementaryTypeName","src":"288:7:12"}],"id":11315,"name":"VariableDeclaration","src":"288:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":11319,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11316,"name":"ElementaryTypeName","src":"310:7:12"}],"id":11317,"name":"VariableDeclaration","src":"310:9:12"}],"id":11318,"name":"ParameterList","src":"287:33:12"}],"id":11319,"name":"EventDefinition","src":"270:51:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11327,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11320,"name":"ElementaryTypeName","src":"347:7:12"}],"id":11321,"name":"VariableDeclaration","src":"347:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":11327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11322,"name":"ElementaryTypeName","src":"369:4:12"}],"id":11323,"name":"VariableDeclaration","src":"369:13:12"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":11327,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11324,"name":"ElementaryTypeName","src":"384:5:12"}],"id":11325,"name":"VariableDeclaration","src":"384:16:12"}],"id":11326,"name":"ParameterList","src":"346:55:12"}],"id":11327,"name":"EventDefinition","src":"326:76:12"},{"attributes":{"constant":false,"name":"_addresses","scope":11458,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11328,"name":"ElementaryTypeName","src":"416:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11329,"name":"ElementaryTypeName","src":"433:4:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":11330,"name":"ElementaryTypeName","src":"439:5:12"}],"id":11331,"name":"Mapping","src":"425:20:12"}],"id":11332,"name":"Mapping","src":"408:38:12"}],"id":11333,"name":"VariableDeclaration","src":"408:49:12"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":11458,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11352,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11334,"name":"ElementaryTypeName","src":"698:7:12"}],"id":11335,"name":"VariableDeclaration","src":"698:12:12"},{"attributes":{"constant":false,"name":"a","scope":11352,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11336,"name":"ElementaryTypeName","src":"712:7:12"}],"id":11337,"name":"VariableDeclaration","src":"712:9:12"}],"id":11338,"name":"ParameterList","src":"697:25:12"},{"attributes":{"parameters":[null]},"children":[],"id":11342,"name":"ParameterList","src":"749:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11339,"name":"Identifier","src":"732:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11335,"type":"bytes32","value":"node"},"id":11340,"name":"Identifier","src":"743:4:12"}],"id":11341,"name":"ModifierInvocation","src":"732:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11420,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":11343,"name":"Identifier","src":"759:15:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11335,"type":"bytes32","value":"node"},"id":11344,"name":"Identifier","src":"775:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11313,"type":"uint256","value":"COIN_TYPE_ETH"},"id":11345,"name":"Identifier","src":"781:13:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":14354,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":11346,"name":"Identifier","src":"796:14:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11337,"type":"address","value":"a"},"id":11347,"name":"Identifier","src":"811:1:12"}],"id":11348,"name":"FunctionCall","src":"796:17:12"}],"id":11349,"name":"FunctionCall","src":"759:55:12"}],"id":11350,"name":"ExpressionStatement","src":"759:55:12"}],"id":11351,"name":"Block","src":"749:72:12"}],"id":11352,"name":"FunctionDefinition","src":"681:140:12"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":11458,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11381,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11353,"name":"ElementaryTypeName","src":"994:7:12"}],"id":11354,"name":"VariableDeclaration","src":"994:12:12"}],"id":11355,"name":"ParameterList","src":"993:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":11381,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11356,"name":"ElementaryTypeName","src":"1029:15:12"}],"id":11357,"name":"VariableDeclaration","src":"1029:15:12"}],"id":11358,"name":"ParameterList","src":"1028:17:12"},{"children":[{"attributes":{"assignments":[11360]},"children":[{"attributes":{"constant":false,"name":"a","scope":11380,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11359,"name":"ElementaryTypeName","src":"1056:5:12"}],"id":11360,"name":"VariableDeclaration","src":"1056:14:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[11381,11436],"referencedDeclaration":11436,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":11361,"name":"Identifier","src":"1073:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11354,"type":"bytes32","value":"node"},"id":11362,"name":"Identifier","src":"1078:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11313,"type":"uint256","value":"COIN_TYPE_ETH"},"id":11363,"name":"Identifier","src":"1084:13:12"}],"id":11364,"name":"FunctionCall","src":"1073:25:12"}],"id":11365,"name":"VariableDeclarationStatement","src":"1056:42:12"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11360,"type":"bytes memory","value":"a"},"id":11366,"name":"Identifier","src":"1111:1:12"}],"id":11367,"name":"MemberAccess","src":"1111:8:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11368,"name":"Literal","src":"1123:1:12"}],"id":11369,"name":"BinaryOperation","src":"1111:13:12"},{"children":[{"attributes":{"functionReturnParameters":11358},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11370,"name":"ElementaryTypeNameExpression","src":"1147:7:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11371,"name":"Literal","src":"1155:1:12"}],"id":11372,"name":"FunctionCall","src":"1147:10:12"}],"id":11373,"name":"Return","src":"1140:17:12"}],"id":11374,"name":"Block","src":"1126:42:12"}],"id":11375,"name":"IfStatement","src":"1108:60:12"},{"attributes":{"functionReturnParameters":11358},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":14338,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":11376,"name":"Identifier","src":"1184:14:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11360,"type":"bytes memory","value":"a"},"id":11377,"name":"Identifier","src":"1199:1:12"}],"id":11378,"name":"FunctionCall","src":"1184:17:12"}],"id":11379,"name":"Return","src":"1177:24:12"}],"id":11380,"name":"Block","src":"1046:162:12"}],"id":11381,"name":"FunctionDefinition","src":"980:228:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":11458,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11420,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11382,"name":"ElementaryTypeName","src":"1239:7:12"}],"id":11383,"name":"VariableDeclaration","src":"1239:12:12"},{"attributes":{"constant":false,"name":"coinType","scope":11420,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11384,"name":"ElementaryTypeName","src":"1253:4:12"}],"id":11385,"name":"VariableDeclaration","src":"1253:13:12"},{"attributes":{"constant":false,"name":"a","scope":11420,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11386,"name":"ElementaryTypeName","src":"1268:5:12"}],"id":11387,"name":"VariableDeclaration","src":"1268:14:12"}],"id":11388,"name":"ParameterList","src":"1238:45:12"},{"attributes":{"parameters":[null]},"children":[],"id":11392,"name":"ParameterList","src":"1308:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11389,"name":"Identifier","src":"1291:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11383,"type":"bytes32","value":"node"},"id":11390,"name":"Identifier","src":"1302:4:12"}],"id":11391,"name":"ModifierInvocation","src":"1291:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11327,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":11393,"name":"Identifier","src":"1323:14:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11383,"type":"bytes32","value":"node"},"id":11394,"name":"Identifier","src":"1338:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11385,"type":"uint256","value":"coinType"},"id":11395,"name":"Identifier","src":"1344:8:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11387,"type":"bytes memory","value":"a"},"id":11396,"name":"Identifier","src":"1354:1:12"}],"id":11397,"name":"FunctionCall","src":"1323:33:12"}],"id":11398,"name":"EmitStatement","src":"1318:38:12"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11385,"type":"uint256","value":"coinType"},"id":11399,"name":"Identifier","src":"1369:8:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11313,"type":"uint256","value":"COIN_TYPE_ETH"},"id":11400,"name":"Identifier","src":"1381:13:12"}],"id":11401,"name":"BinaryOperation","src":"1369:25:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11319,"type":"function (bytes32,address)","value":"AddrChanged"},"id":11402,"name":"Identifier","src":"1415:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11383,"type":"bytes32","value":"node"},"id":11403,"name":"Identifier","src":"1427:4:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":14338,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":11404,"name":"Identifier","src":"1433:14:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11387,"type":"bytes memory","value":"a"},"id":11405,"name":"Identifier","src":"1448:1:12"}],"id":11406,"name":"FunctionCall","src":"1433:17:12"}],"id":11407,"name":"FunctionCall","src":"1415:36:12"}],"id":11408,"name":"EmitStatement","src":"1410:41:12"}],"id":11409,"name":"Block","src":"1396:66:12"}],"id":11410,"name":"IfStatement","src":"1366:96:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11333,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":11411,"name":"Identifier","src":"1471:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11383,"type":"bytes32","value":"node"},"id":11412,"name":"Identifier","src":"1482:4:12"}],"id":11414,"name":"IndexAccess","src":"1471:16:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11385,"type":"uint256","value":"coinType"},"id":11413,"name":"Identifier","src":"1488:8:12"}],"id":11415,"name":"IndexAccess","src":"1471:26:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11387,"type":"bytes memory","value":"a"},"id":11416,"name":"Identifier","src":"1500:1:12"}],"id":11417,"name":"Assignment","src":"1471:30:12"}],"id":11418,"name":"ExpressionStatement","src":"1471:30:12"}],"id":11419,"name":"Block","src":"1308:200:12"}],"id":11420,"name":"FunctionDefinition","src":"1214:294:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":11458,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11436,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11421,"name":"ElementaryTypeName","src":"1528:7:12"}],"id":11422,"name":"VariableDeclaration","src":"1528:12:12"},{"attributes":{"constant":false,"name":"coinType","scope":11436,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11423,"name":"ElementaryTypeName","src":"1542:4:12"}],"id":11424,"name":"VariableDeclaration","src":"1542:13:12"}],"id":11425,"name":"ParameterList","src":"1527:29:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":11436,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11426,"name":"ElementaryTypeName","src":"1577:5:12"}],"id":11427,"name":"VariableDeclaration","src":"1577:12:12"}],"id":11428,"name":"ParameterList","src":"1576:14:12"},{"children":[{"attributes":{"functionReturnParameters":11428},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11333,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":11429,"name":"Identifier","src":"1608:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11422,"type":"bytes32","value":"node"},"id":11430,"name":"Identifier","src":"1619:4:12"}],"id":11431,"name":"IndexAccess","src":"1608:16:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11424,"type":"uint256","value":"coinType"},"id":11432,"name":"Identifier","src":"1625:8:12"}],"id":11433,"name":"IndexAccess","src":"1608:26:12"}],"id":11434,"name":"Return","src":"1601:33:12"}],"id":11435,"name":"Block","src":"1591:50:12"}],"id":11436,"name":"FunctionDefinition","src":"1514:127:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":11458,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":11457,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11437,"name":"ElementaryTypeName","src":"1674:6:12"}],"id":11438,"name":"VariableDeclaration","src":"1674:18:12"}],"id":11439,"name":"ParameterList","src":"1673:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":11457,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11440,"name":"ElementaryTypeName","src":"1714:4:12"}],"id":11441,"name":"VariableDeclaration","src":"1714:4:12"}],"id":11442,"name":"ParameterList","src":"1713:6:12"},{"children":[{"attributes":{"functionReturnParameters":11442},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11438,"type":"bytes4","value":"interfaceID"},"id":11443,"name":"Identifier","src":"1737:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11307,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":11444,"name":"Identifier","src":"1752:17:12"}],"id":11445,"name":"BinaryOperation","src":"1737:32:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11438,"type":"bytes4","value":"interfaceID"},"id":11446,"name":"Identifier","src":"1773:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11310,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":11447,"name":"Identifier","src":"1788:20:12"}],"id":11448,"name":"BinaryOperation","src":"1773:35:12"}],"id":11449,"name":"BinaryOperation","src":"1737:71:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15750,"type":"contract super AddrResolver","value":"super"},"id":11450,"name":"Identifier","src":"1812:5:12"}],"id":11451,"name":"MemberAccess","src":"1812:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11438,"type":"bytes4","value":"interfaceID"},"id":11452,"name":"Identifier","src":"1836:11:12"}],"id":11453,"name":"FunctionCall","src":"1812:36:12"}],"id":11454,"name":"BinaryOperation","src":"1737:111:12"}],"id":11455,"name":"Return","src":"1730:118:12"}],"id":11456,"name":"Block","src":"1720:135:12"}],"id":11457,"name":"FunctionDefinition","src":"1647:208:12"}],"id":11458,"name":"ContractDefinition","src":"56:1801:12"}],"id":11459,"name":"SourceUnit","src":"0:1857:12"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[11528]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":11460,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":11529,"symbolAliases":[null],"unitAlias":""},"id":11461,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[11528,14355],"name":"ContentHashResolver","scope":11529},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":11462,"name":"UserDefinedTypeName","src":"88:12:13"}],"id":11463,"name":"InheritanceSpecifier","src":"88:12:13"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":11528,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11464,"name":"ElementaryTypeName","src":"107:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":11465,"name":"Literal","src":"159:10:13"}],"id":11466,"name":"VariableDeclaration","src":"107:62:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11472,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11467,"name":"ElementaryTypeName","src":"201:7:13"}],"id":11468,"name":"VariableDeclaration","src":"201:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":11472,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11469,"name":"ElementaryTypeName","src":"223:5:13"}],"id":11470,"name":"VariableDeclaration","src":"223:10:13"}],"id":11471,"name":"ParameterList","src":"200:34:13"}],"id":11472,"name":"EventDefinition","src":"176:59:13"},{"attributes":{"constant":false,"name":"hashes","scope":11528,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11473,"name":"ElementaryTypeName","src":"249:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":11474,"name":"ElementaryTypeName","src":"258:5:13"}],"id":11475,"name":"Mapping","src":"241:23:13"}],"id":11476,"name":"VariableDeclaration","src":"241:30:13"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":11528,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11498,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11477,"name":"ElementaryTypeName","src":"529:7:13"}],"id":11478,"name":"VariableDeclaration","src":"529:12:13"},{"attributes":{"constant":false,"name":"hash","scope":11498,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11479,"name":"ElementaryTypeName","src":"543:5:13"}],"id":11480,"name":"VariableDeclaration","src":"543:19:13"}],"id":11481,"name":"ParameterList","src":"528:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":11485,"name":"ParameterList","src":"590:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11482,"name":"Identifier","src":"573:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11478,"type":"bytes32","value":"node"},"id":11483,"name":"Identifier","src":"584:4:13"}],"id":11484,"name":"ModifierInvocation","src":"573:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11476,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":11486,"name":"Identifier","src":"600:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11478,"type":"bytes32","value":"node"},"id":11487,"name":"Identifier","src":"607:4:13"}],"id":11488,"name":"IndexAccess","src":"600:12:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11480,"type":"bytes calldata","value":"hash"},"id":11489,"name":"Identifier","src":"615:4:13"}],"id":11490,"name":"Assignment","src":"600:19:13"}],"id":11491,"name":"ExpressionStatement","src":"600:19:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":11472,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":11492,"name":"Identifier","src":"634:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11478,"type":"bytes32","value":"node"},"id":11493,"name":"Identifier","src":"653:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11480,"type":"bytes calldata","value":"hash"},"id":11494,"name":"Identifier","src":"659:4:13"}],"id":11495,"name":"FunctionCall","src":"634:30:13"}],"id":11496,"name":"EmitStatement","src":"629:35:13"}],"id":11497,"name":"Block","src":"590:81:13"}],"id":11498,"name":"FunctionDefinition","src":"505:166:13"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":11528,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11510,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11499,"name":"ElementaryTypeName","src":"859:7:13"}],"id":11500,"name":"VariableDeclaration","src":"859:12:13"}],"id":11501,"name":"ParameterList","src":"858:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":11510,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11502,"name":"ElementaryTypeName","src":"896:5:13"}],"id":11503,"name":"VariableDeclaration","src":"896:12:13"}],"id":11504,"name":"ParameterList","src":"895:14:13"},{"children":[{"attributes":{"functionReturnParameters":11504},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11476,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":11505,"name":"Identifier","src":"927:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11500,"type":"bytes32","value":"node"},"id":11506,"name":"Identifier","src":"934:4:13"}],"id":11507,"name":"IndexAccess","src":"927:12:13"}],"id":11508,"name":"Return","src":"920:19:13"}],"id":11509,"name":"Block","src":"910:36:13"}],"id":11510,"name":"FunctionDefinition","src":"838:108:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":11528,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":11527,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11511,"name":"ElementaryTypeName","src":"979:6:13"}],"id":11512,"name":"VariableDeclaration","src":"979:18:13"}],"id":11513,"name":"ParameterList","src":"978:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":11527,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11514,"name":"ElementaryTypeName","src":"1019:4:13"}],"id":11515,"name":"VariableDeclaration","src":"1019:4:13"}],"id":11516,"name":"ParameterList","src":"1018:6:13"},{"children":[{"attributes":{"functionReturnParameters":11516},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11512,"type":"bytes4","value":"interfaceID"},"id":11517,"name":"Identifier","src":"1042:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11466,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":11518,"name":"Identifier","src":"1057:25:13"}],"id":11519,"name":"BinaryOperation","src":"1042:40:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15752,"type":"contract super ContentHashResolver","value":"super"},"id":11520,"name":"Identifier","src":"1086:5:13"}],"id":11521,"name":"MemberAccess","src":"1086:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11512,"type":"bytes4","value":"interfaceID"},"id":11522,"name":"Identifier","src":"1110:11:13"}],"id":11523,"name":"FunctionCall","src":"1086:36:13"}],"id":11524,"name":"BinaryOperation","src":"1042:80:13"}],"id":11525,"name":"Return","src":"1035:87:13"}],"id":11526,"name":"Block","src":"1025:104:13"}],"id":11527,"name":"FunctionDefinition","src":"952:177:13"}],"id":11528,"name":"ContractDefinition","src":"56:1075:13"}],"id":11529,"name":"SourceUnit","src":"0:1132:13"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[12019]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":11530,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12020,"symbolAliases":[null],"unitAlias":""},"id":11531,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":14974,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":12020,"symbolAliases":[null],"unitAlias":""},"id":11532,"name":"ImportDirective","src":"55:24:14"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12019,14355],"name":"DNSResolver","scope":12020},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":11533,"name":"UserDefinedTypeName","src":"105:12:14"}],"id":11534,"name":"InheritanceSpecifier","src":"105:12:14"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":14973,"type":"library RRUtils"},"id":11535,"name":"UserDefinedTypeName","src":"130:7:14"}],"id":11536,"name":"UsingForDirective","src":"124:20:14"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":15694,"type":"library ENSBytesUtils"},"id":11537,"name":"UserDefinedTypeName","src":"155:13:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":11538,"name":"ElementaryTypeName","src":"173:5:14"}],"id":11539,"name":"UsingForDirective","src":"149:30:14"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":12019,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11540,"name":"ElementaryTypeName","src":"185:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":11541,"name":"Literal","src":"235:10:14"}],"id":11542,"name":"VariableDeclaration","src":"185:60:14"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":12019,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11543,"name":"ElementaryTypeName","src":"251:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":11544,"name":"Literal","src":"299:10:14"}],"id":11545,"name":"VariableDeclaration","src":"251:58:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11555,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11546,"name":"ElementaryTypeName","src":"430:7:14"}],"id":11547,"name":"VariableDeclaration","src":"430:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":11555,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11548,"name":"ElementaryTypeName","src":"452:5:14"}],"id":11549,"name":"VariableDeclaration","src":"452:10:14"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":11555,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11550,"name":"ElementaryTypeName","src":"464:6:14"}],"id":11551,"name":"VariableDeclaration","src":"464:15:14"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":11555,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11552,"name":"ElementaryTypeName","src":"481:5:14"}],"id":11553,"name":"VariableDeclaration","src":"481:12:14"}],"id":11554,"name":"ParameterList","src":"429:65:14"}],"id":11555,"name":"EventDefinition","src":"407:88:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11563,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11556,"name":"ElementaryTypeName","src":"614:7:14"}],"id":11557,"name":"VariableDeclaration","src":"614:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":11563,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11558,"name":"ElementaryTypeName","src":"636:5:14"}],"id":11559,"name":"VariableDeclaration","src":"636:10:14"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":11563,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11560,"name":"ElementaryTypeName","src":"648:6:14"}],"id":11561,"name":"VariableDeclaration","src":"648:15:14"}],"id":11562,"name":"ParameterList","src":"613:51:14"}],"id":11563,"name":"EventDefinition","src":"591:74:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11567,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11564,"name":"ElementaryTypeName","src":"777:7:14"}],"id":11565,"name":"VariableDeclaration","src":"777:20:14"}],"id":11566,"name":"ParameterList","src":"776:22:14"}],"id":11567,"name":"EventDefinition","src":"756:43:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11575,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11568,"name":"ElementaryTypeName","src":"913:7:14"}],"id":11569,"name":"VariableDeclaration","src":"913:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":11575,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11570,"name":"ElementaryTypeName","src":"935:5:14"}],"id":11571,"name":"VariableDeclaration","src":"935:18:14"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":11575,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11572,"name":"ElementaryTypeName","src":"955:5:14"}],"id":11573,"name":"VariableDeclaration","src":"955:14:14"}],"id":11574,"name":"ParameterList","src":"912:58:14"}],"id":11575,"name":"EventDefinition","src":"888:83:14"},{"attributes":{"constant":false,"name":"zonehashes","scope":12019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11576,"name":"ElementaryTypeName","src":"1181:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":11577,"name":"ElementaryTypeName","src":"1190:5:14"}],"id":11578,"name":"Mapping","src":"1173:23:14"}],"id":11579,"name":"VariableDeclaration","src":"1173:42:14"},{"attributes":{"constant":false,"name":"versions","scope":12019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11580,"name":"ElementaryTypeName","src":"1433:7:14"},{"attributes":{"name":"uint256","type":"uint256"},"id":11581,"name":"ElementaryTypeName","src":"1442:7:14"}],"id":11582,"name":"Mapping","src":"1425:25:14"}],"id":11583,"name":"VariableDeclaration","src":"1425:42:14"},{"attributes":{"constant":false,"name":"records","scope":12019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11584,"name":"ElementaryTypeName","src":"1589:7:14"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11585,"name":"ElementaryTypeName","src":"1606:7:14"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11586,"name":"ElementaryTypeName","src":"1623:7:14"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11587,"name":"ElementaryTypeName","src":"1640:6:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":11588,"name":"ElementaryTypeName","src":"1648:5:14"}],"id":11589,"name":"Mapping","src":"1632:22:14"}],"id":11590,"name":"Mapping","src":"1615:40:14"}],"id":11591,"name":"Mapping","src":"1598:58:14"}],"id":11592,"name":"Mapping","src":"1581:76:14"}],"id":11593,"name":"VariableDeclaration","src":"1581:92:14"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":12019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11594,"name":"ElementaryTypeName","src":"1853:7:14"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11595,"name":"ElementaryTypeName","src":"1870:7:14"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11596,"name":"ElementaryTypeName","src":"1887:7:14"},{"attributes":{"name":"uint16","type":"uint16"},"id":11597,"name":"ElementaryTypeName","src":"1896:6:14"}],"id":11598,"name":"Mapping","src":"1879:24:14"}],"id":11599,"name":"Mapping","src":"1862:42:14"}],"id":11600,"name":"Mapping","src":"1845:60:14"}],"id":11601,"name":"VariableDeclaration","src":"1845:85:14"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":12019,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11766,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11602,"name":"ElementaryTypeName","src":"2877:7:14"}],"id":11603,"name":"VariableDeclaration","src":"2877:12:14"},{"attributes":{"constant":false,"name":"data","scope":11766,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11604,"name":"ElementaryTypeName","src":"2891:5:14"}],"id":11605,"name":"VariableDeclaration","src":"2891:19:14"}],"id":11606,"name":"ParameterList","src":"2876:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":11610,"name":"ParameterList","src":"2938:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11607,"name":"Identifier","src":"2921:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11603,"type":"bytes32","value":"node"},"id":11608,"name":"Identifier","src":"2932:4:14"}],"id":11609,"name":"ModifierInvocation","src":"2921:16:14"},{"children":[{"attributes":{"assignments":[11612]},"children":[{"attributes":{"constant":false,"name":"resource","scope":11765,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11611,"name":"ElementaryTypeName","src":"2948:6:14"}],"id":11612,"name":"VariableDeclaration","src":"2948:15:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11613,"name":"Literal","src":"2966:1:14"}],"id":11614,"name":"VariableDeclarationStatement","src":"2948:19:14"},{"attributes":{"assignments":[11616]},"children":[{"attributes":{"constant":false,"name":"offset","scope":11765,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11615,"name":"ElementaryTypeName","src":"2977:7:14"}],"id":11616,"name":"VariableDeclaration","src":"2977:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11617,"name":"Literal","src":"2994:1:14"}],"id":11618,"name":"VariableDeclarationStatement","src":"2977:18:14"},{"attributes":{"assignments":[11620],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":11765,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11619,"name":"ElementaryTypeName","src":"3005:5:14"}],"id":11620,"name":"VariableDeclaration","src":"3005:17:14"}],"id":11621,"name":"VariableDeclarationStatement","src":"3005:17:14"},{"attributes":{"assignments":[11623],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":11765,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11622,"name":"ElementaryTypeName","src":"3032:5:14"}],"id":11623,"name":"VariableDeclaration","src":"3032:18:14"}],"id":11624,"name":"VariableDeclarationStatement","src":"3032:18:14"},{"attributes":{"assignments":[11626],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":11765,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11625,"name":"ElementaryTypeName","src":"3060:7:14"}],"id":11626,"name":"VariableDeclaration","src":"3060:16:14"}],"id":11627,"name":"VariableDeclarationStatement","src":"3060:16:14"},{"children":[{"attributes":{"assignments":[11631]},"children":[{"attributes":{"constant":false,"name":"iter","scope":11742,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":11630,"name":"UserDefinedTypeName","src":"3152:18:14"}],"id":11631,"name":"VariableDeclaration","src":"3152:30:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":14520,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11605,"type":"bytes calldata","value":"data"},"id":11632,"name":"Identifier","src":"3185:4:14"}],"id":11633,"name":"MemberAccess","src":"3185:15:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11634,"name":"Literal","src":"3201:1:14"}],"id":11635,"name":"FunctionCall","src":"3185:18:14"}],"id":11636,"name":"VariableDeclarationStatement","src":"3152:51:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":14535,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11637,"name":"Identifier","src":"3206:4:14"}],"id":11638,"name":"MemberAccess","src":"3206:9:14"}],"id":11639,"name":"FunctionCall","src":"3206:11:14"}],"id":11640,"name":"UnaryOperation","src":"3205:12:14"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":14637,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11641,"name":"Identifier","src":"3219:4:14"}],"id":11642,"name":"MemberAccess","src":"3219:9:14"}],"id":11643,"name":"FunctionCall","src":"3219:11:14"}],"id":11644,"name":"ExpressionStatement","src":"3219:11:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11645,"name":"Identifier","src":"3250:8:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11646,"name":"Literal","src":"3262:1:14"}],"id":11647,"name":"BinaryOperation","src":"3250:13:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11648,"name":"Identifier","src":"3283:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":14485,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11649,"name":"Identifier","src":"3294:4:14"}],"id":11650,"name":"MemberAccess","src":"3294:12:14"}],"id":11651,"name":"Assignment","src":"3283:23:14"}],"id":11652,"name":"ExpressionStatement","src":"3283:23:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11653,"name":"Identifier","src":"3324:4:14"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":14658,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11654,"name":"Identifier","src":"3331:4:14"}],"id":11655,"name":"MemberAccess","src":"3331:9:14"}],"id":11656,"name":"FunctionCall","src":"3331:11:14"}],"id":11657,"name":"Assignment","src":"3324:18:14"}],"id":11658,"name":"ExpressionStatement","src":"3324:18:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11626,"type":"bytes32","value":"nameHash"},"id":11659,"name":"Identifier","src":"3360:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":11660,"name":"Identifier","src":"3371:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":11661,"name":"Identifier","src":"3381:3:14"}],"id":11662,"name":"MemberAccess","src":"3381:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11663,"name":"Identifier","src":"3398:4:14"}],"id":11664,"name":"FunctionCall","src":"3381:22:14"}],"id":11665,"name":"FunctionCall","src":"3371:33:14"}],"id":11666,"name":"Assignment","src":"3360:44:14"}],"id":11667,"name":"ExpressionStatement","src":"3360:44:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11623,"type":"bytes memory","value":"value"},"id":11668,"name":"Identifier","src":"3422:5:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":11669,"name":"ElementaryTypeNameExpression","src":"3430:5:14"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":14678,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11670,"name":"Identifier","src":"3436:4:14"}],"id":11671,"name":"MemberAccess","src":"3436:10:14"}],"id":11672,"name":"FunctionCall","src":"3436:12:14"}],"id":11673,"name":"FunctionCall","src":"3430:19:14"}],"id":11674,"name":"Assignment","src":"3422:27:14"}],"id":11675,"name":"ExpressionStatement","src":"3422:27:14"}],"id":11676,"name":"Block","src":"3265:199:14"},{"children":[{"attributes":{"assignments":[11678]},"children":[{"attributes":{"constant":false,"name":"newName","scope":11739,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11677,"name":"ElementaryTypeName","src":"3488:5:14"}],"id":11678,"name":"VariableDeclaration","src":"3488:20:14"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":14658,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11679,"name":"Identifier","src":"3511:4:14"}],"id":11680,"name":"MemberAccess","src":"3511:9:14"}],"id":11681,"name":"FunctionCall","src":"3511:11:14"}],"id":11682,"name":"VariableDeclarationStatement","src":"3488:34:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11683,"name":"Identifier","src":"3544:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":14485,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11684,"name":"Identifier","src":"3556:4:14"}],"id":11685,"name":"MemberAccess","src":"3556:12:14"}],"id":11686,"name":"BinaryOperation","src":"3544:24:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":15264,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11687,"name":"Identifier","src":"3573:4:14"}],"id":11688,"name":"MemberAccess","src":"3573:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11678,"type":"bytes memory","value":"newName"},"id":11689,"name":"Identifier","src":"3585:7:14"}],"id":11690,"name":"FunctionCall","src":"3573:20:14"}],"id":11691,"name":"UnaryOperation","src":"3572:21:14"}],"id":11692,"name":"BinaryOperation","src":"3544:49:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":12018,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":11693,"name":"Identifier","src":"3617:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11603,"type":"bytes32","value":"node"},"id":11694,"name":"Identifier","src":"3629:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11695,"name":"Identifier","src":"3635:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11696,"name":"Identifier","src":"3641:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11605,"type":"bytes calldata","value":"data"},"id":11697,"name":"Identifier","src":"3651:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11698,"name":"Identifier","src":"3657:6:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11699,"name":"Identifier","src":"3665:4:14"}],"id":11700,"name":"MemberAccess","src":"3665:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11701,"name":"Identifier","src":"3679:6:14"}],"id":11702,"name":"BinaryOperation","src":"3665:20:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11623,"type":"bytes memory","value":"value"},"id":11703,"name":"Identifier","src":"3687:5:14"}],"id":11704,"name":"MemberAccess","src":"3687:12:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11705,"name":"Literal","src":"3703:1:14"}],"id":11706,"name":"BinaryOperation","src":"3687:17:14"}],"id":11707,"name":"FunctionCall","src":"3617:88:14"}],"id":11708,"name":"ExpressionStatement","src":"3617:88:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11709,"name":"Identifier","src":"3727:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":14485,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11710,"name":"Identifier","src":"3738:4:14"}],"id":11711,"name":"MemberAccess","src":"3738:12:14"}],"id":11712,"name":"Assignment","src":"3727:23:14"}],"id":11713,"name":"ExpressionStatement","src":"3727:23:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11714,"name":"Identifier","src":"3772:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11715,"name":"Identifier","src":"3781:4:14"}],"id":11716,"name":"MemberAccess","src":"3781:11:14"}],"id":11717,"name":"Assignment","src":"3772:20:14"}],"id":11718,"name":"ExpressionStatement","src":"3772:20:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11719,"name":"Identifier","src":"3814:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11678,"type":"bytes memory","value":"newName"},"id":11720,"name":"Identifier","src":"3821:7:14"}],"id":11721,"name":"Assignment","src":"3814:14:14"}],"id":11722,"name":"ExpressionStatement","src":"3814:14:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11626,"type":"bytes32","value":"nameHash"},"id":11723,"name":"Identifier","src":"3850:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":11724,"name":"Identifier","src":"3861:9:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11725,"name":"Identifier","src":"3871:4:14"}],"id":11726,"name":"FunctionCall","src":"3861:15:14"}],"id":11727,"name":"Assignment","src":"3850:26:14"}],"id":11728,"name":"ExpressionStatement","src":"3850:26:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11623,"type":"bytes memory","value":"value"},"id":11729,"name":"Identifier","src":"3898:5:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":11730,"name":"ElementaryTypeNameExpression","src":"3906:5:14"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":14678,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11731,"name":"Identifier","src":"3912:4:14"}],"id":11732,"name":"MemberAccess","src":"3912:10:14"}],"id":11733,"name":"FunctionCall","src":"3912:12:14"}],"id":11734,"name":"FunctionCall","src":"3906:19:14"}],"id":11735,"name":"Assignment","src":"3898:27:14"}],"id":11736,"name":"ExpressionStatement","src":"3898:27:14"}],"id":11737,"name":"Block","src":"3595:349:14"}],"id":11738,"name":"IfStatement","src":"3540:404:14"}],"id":11739,"name":"Block","src":"3470:488:14"}],"id":11740,"name":"IfStatement","src":"3246:712:14"}],"id":11741,"name":"Block","src":"3232:736:14"}],"id":11742,"name":"ForStatement","src":"3147:821:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11743,"name":"Identifier","src":"3981:4:14"}],"id":11744,"name":"MemberAccess","src":"3981:11:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11745,"name":"Literal","src":"3995:1:14"}],"id":11746,"name":"BinaryOperation","src":"3981:15:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":12018,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":11747,"name":"Identifier","src":"4012:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11603,"type":"bytes32","value":"node"},"id":11748,"name":"Identifier","src":"4024:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11749,"name":"Identifier","src":"4030:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11750,"name":"Identifier","src":"4036:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11605,"type":"bytes calldata","value":"data"},"id":11751,"name":"Identifier","src":"4046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11752,"name":"Identifier","src":"4052:6:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11605,"type":"bytes calldata","value":"data"},"id":11753,"name":"Identifier","src":"4060:4:14"}],"id":11754,"name":"MemberAccess","src":"4060:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11755,"name":"Identifier","src":"4074:6:14"}],"id":11756,"name":"BinaryOperation","src":"4060:20:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11623,"type":"bytes memory","value":"value"},"id":11757,"name":"Identifier","src":"4082:5:14"}],"id":11758,"name":"MemberAccess","src":"4082:12:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11759,"name":"Literal","src":"4098:1:14"}],"id":11760,"name":"BinaryOperation","src":"4082:17:14"}],"id":11761,"name":"FunctionCall","src":"4012:88:14"}],"id":11762,"name":"ExpressionStatement","src":"4012:88:14"}],"id":11763,"name":"Block","src":"3998:113:14"}],"id":11764,"name":"IfStatement","src":"3977:134:14"}],"id":11765,"name":"Block","src":"2938:1179:14"}],"id":11766,"name":"FunctionDefinition","src":"2854:1263:14"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":12019,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11790,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11767,"name":"ElementaryTypeName","src":"4538:7:14"}],"id":11768,"name":"VariableDeclaration","src":"4538:12:14"},{"attributes":{"constant":false,"name":"name","scope":11790,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11769,"name":"ElementaryTypeName","src":"4552:7:14"}],"id":11770,"name":"VariableDeclaration","src":"4552:12:14"},{"attributes":{"constant":false,"name":"resource","scope":11790,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11771,"name":"ElementaryTypeName","src":"4566:6:14"}],"id":11772,"name":"VariableDeclaration","src":"4566:15:14"}],"id":11773,"name":"ParameterList","src":"4537:45:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":11790,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11774,"name":"ElementaryTypeName","src":"4604:5:14"}],"id":11775,"name":"VariableDeclaration","src":"4604:12:14"}],"id":11776,"name":"ParameterList","src":"4603:14:14"},{"children":[{"attributes":{"functionReturnParameters":11776},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11777,"name":"Identifier","src":"4635:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11768,"type":"bytes32","value":"node"},"id":11778,"name":"Identifier","src":"4643:4:14"}],"id":11779,"name":"IndexAccess","src":"4635:13:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11583,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":11780,"name":"Identifier","src":"4649:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11768,"type":"bytes32","value":"node"},"id":11781,"name":"Identifier","src":"4658:4:14"}],"id":11782,"name":"IndexAccess","src":"4649:14:14"}],"id":11783,"name":"IndexAccess","src":"4635:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11770,"type":"bytes32","value":"name"},"id":11784,"name":"Identifier","src":"4665:4:14"}],"id":11785,"name":"IndexAccess","src":"4635:35:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11772,"type":"uint16","value":"resource"},"id":11786,"name":"Identifier","src":"4671:8:14"}],"id":11787,"name":"IndexAccess","src":"4635:45:14"}],"id":11788,"name":"Return","src":"4628:52:14"}],"id":11789,"name":"Block","src":"4618:69:14"}],"id":11790,"name":"FunctionDefinition","src":"4519:168:14"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":12019,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11813,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11791,"name":"ElementaryTypeName","src":"4924:7:14"}],"id":11792,"name":"VariableDeclaration","src":"4924:12:14"},{"attributes":{"constant":false,"name":"name","scope":11813,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11793,"name":"ElementaryTypeName","src":"4938:7:14"}],"id":11794,"name":"VariableDeclaration","src":"4938:12:14"}],"id":11795,"name":"ParameterList","src":"4923:28:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":11813,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11796,"name":"ElementaryTypeName","src":"4973:4:14"}],"id":11797,"name":"VariableDeclaration","src":"4973:4:14"}],"id":11798,"name":"ParameterList","src":"4972:6:14"},{"children":[{"attributes":{"functionReturnParameters":11798},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11601,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":11799,"name":"Identifier","src":"4997:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11792,"type":"bytes32","value":"node"},"id":11800,"name":"Identifier","src":"5014:4:14"}],"id":11801,"name":"IndexAccess","src":"4997:22:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11583,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":11802,"name":"Identifier","src":"5020:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11792,"type":"bytes32","value":"node"},"id":11803,"name":"Identifier","src":"5029:4:14"}],"id":11804,"name":"IndexAccess","src":"5020:14:14"}],"id":11805,"name":"IndexAccess","src":"4997:38:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11794,"type":"bytes32","value":"name"},"id":11806,"name":"Identifier","src":"5036:4:14"}],"id":11807,"name":"IndexAccess","src":"4997:44:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11808,"name":"Literal","src":"5045:1:14"}],"id":11809,"name":"BinaryOperation","src":"4997:49:14"}],"id":11810,"name":"TupleExpression","src":"4996:51:14"}],"id":11811,"name":"Return","src":"4989:58:14"}],"id":11812,"name":"Block","src":"4979:75:14"}],"id":11813,"name":"FunctionDefinition","src":"4901:153:14"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":12019,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11831,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11814,"name":"ElementaryTypeName","src":"5215:7:14"}],"id":11815,"name":"VariableDeclaration","src":"5215:12:14"}],"id":11816,"name":"ParameterList","src":"5214:14:14"},{"attributes":{"parameters":[null]},"children":[],"id":11820,"name":"ParameterList","src":"5253:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11817,"name":"Identifier","src":"5236:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11815,"type":"bytes32","value":"node"},"id":11818,"name":"Identifier","src":"5247:4:14"}],"id":11819,"name":"ModifierInvocation","src":"5236:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11583,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":11821,"name":"Identifier","src":"5263:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11815,"type":"bytes32","value":"node"},"id":11822,"name":"Identifier","src":"5272:4:14"}],"id":11823,"name":"IndexAccess","src":"5263:14:14"}],"id":11824,"name":"UnaryOperation","src":"5263:16:14"}],"id":11825,"name":"ExpressionStatement","src":"5263:16:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":11567,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":11826,"name":"Identifier","src":"5294:14:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11815,"type":"bytes32","value":"node"},"id":11827,"name":"Identifier","src":"5309:4:14"}],"id":11828,"name":"FunctionCall","src":"5294:20:14"}],"id":11829,"name":"EmitStatement","src":"5289:25:14"}],"id":11830,"name":"Block","src":"5253:68:14"}],"id":11831,"name":"FunctionDefinition","src":"5193:128:14"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":12019,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11860,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11832,"name":"ElementaryTypeName","src":"5562:7:14"}],"id":11833,"name":"VariableDeclaration","src":"5562:12:14"},{"attributes":{"constant":false,"name":"hash","scope":11860,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11834,"name":"ElementaryTypeName","src":"5576:5:14"}],"id":11835,"name":"VariableDeclaration","src":"5576:19:14"}],"id":11836,"name":"ParameterList","src":"5561:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":11840,"name":"ParameterList","src":"5623:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11837,"name":"Identifier","src":"5606:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11833,"type":"bytes32","value":"node"},"id":11838,"name":"Identifier","src":"5617:4:14"}],"id":11839,"name":"ModifierInvocation","src":"5606:16:14"},{"children":[{"attributes":{"assignments":[11842]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":11859,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11841,"name":"ElementaryTypeName","src":"5633:5:14"}],"id":11842,"name":"VariableDeclaration","src":"5633:20:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11579,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":11843,"name":"Identifier","src":"5656:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11833,"type":"bytes32","value":"node"},"id":11844,"name":"Identifier","src":"5667:4:14"}],"id":11845,"name":"IndexAccess","src":"5656:16:14"}],"id":11846,"name":"VariableDeclarationStatement","src":"5633:39:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11579,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":11847,"name":"Identifier","src":"5682:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11833,"type":"bytes32","value":"node"},"id":11848,"name":"Identifier","src":"5693:4:14"}],"id":11849,"name":"IndexAccess","src":"5682:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11835,"type":"bytes calldata","value":"hash"},"id":11850,"name":"Identifier","src":"5701:4:14"}],"id":11851,"name":"Assignment","src":"5682:23:14"}],"id":11852,"name":"ExpressionStatement","src":"5682:23:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":11575,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":11853,"name":"Identifier","src":"5720:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11833,"type":"bytes32","value":"node"},"id":11854,"name":"Identifier","src":"5739:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11842,"type":"bytes memory","value":"oldhash"},"id":11855,"name":"Identifier","src":"5745:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11835,"type":"bytes calldata","value":"hash"},"id":11856,"name":"Identifier","src":"5754:4:14"}],"id":11857,"name":"FunctionCall","src":"5720:39:14"}],"id":11858,"name":"EmitStatement","src":"5715:44:14"}],"id":11859,"name":"Block","src":"5623:143:14"}],"id":11860,"name":"FunctionDefinition","src":"5541:225:14"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":12019,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11872,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11861,"name":"ElementaryTypeName","src":"5938:7:14"}],"id":11862,"name":"VariableDeclaration","src":"5938:12:14"}],"id":11863,"name":"ParameterList","src":"5937:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":11872,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11864,"name":"ElementaryTypeName","src":"5975:5:14"}],"id":11865,"name":"VariableDeclaration","src":"5975:12:14"}],"id":11866,"name":"ParameterList","src":"5974:14:14"},{"children":[{"attributes":{"functionReturnParameters":11866},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11579,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":11867,"name":"Identifier","src":"6006:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11862,"type":"bytes32","value":"node"},"id":11868,"name":"Identifier","src":"6017:4:14"}],"id":11869,"name":"IndexAccess","src":"6006:16:14"}],"id":11870,"name":"Return","src":"5999:23:14"}],"id":11871,"name":"Block","src":"5989:40:14"}],"id":11872,"name":"FunctionDefinition","src":"5920:109:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12019,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":11893,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11873,"name":"ElementaryTypeName","src":"6062:6:14"}],"id":11874,"name":"VariableDeclaration","src":"6062:18:14"}],"id":11875,"name":"ParameterList","src":"6061:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":11893,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11876,"name":"ElementaryTypeName","src":"6102:4:14"}],"id":11877,"name":"VariableDeclaration","src":"6102:4:14"}],"id":11878,"name":"ParameterList","src":"6101:6:14"},{"children":[{"attributes":{"functionReturnParameters":11878},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11874,"type":"bytes4","value":"interfaceID"},"id":11879,"name":"Identifier","src":"6125:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11542,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":11880,"name":"Identifier","src":"6140:23:14"}],"id":11881,"name":"BinaryOperation","src":"6125:38:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11874,"type":"bytes4","value":"interfaceID"},"id":11882,"name":"Identifier","src":"6182:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11545,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":11883,"name":"Identifier","src":"6197:21:14"}],"id":11884,"name":"BinaryOperation","src":"6182:36:14"}],"id":11885,"name":"BinaryOperation","src":"6125:93:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15756,"type":"contract super DNSResolver","value":"super"},"id":11886,"name":"Identifier","src":"6237:5:14"}],"id":11887,"name":"MemberAccess","src":"6237:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11874,"type":"bytes4","value":"interfaceID"},"id":11888,"name":"Identifier","src":"6261:11:14"}],"id":11889,"name":"FunctionCall","src":"6237:36:14"}],"id":11890,"name":"BinaryOperation","src":"6125:148:14"}],"id":11891,"name":"Return","src":"6118:155:14"}],"id":11892,"name":"Block","src":"6108:172:14"}],"id":11893,"name":"FunctionDefinition","src":"6035:245:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":12019,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12018,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11894,"name":"ElementaryTypeName","src":"6316:7:14"}],"id":11895,"name":"VariableDeclaration","src":"6316:12:14"},{"attributes":{"constant":false,"name":"name","scope":12018,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11896,"name":"ElementaryTypeName","src":"6338:5:14"}],"id":11897,"name":"VariableDeclaration","src":"6338:17:14"},{"attributes":{"constant":false,"name":"resource","scope":12018,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11898,"name":"ElementaryTypeName","src":"6365:6:14"}],"id":11899,"name":"VariableDeclaration","src":"6365:15:14"},{"attributes":{"constant":false,"name":"data","scope":12018,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11900,"name":"ElementaryTypeName","src":"6390:5:14"}],"id":11901,"name":"VariableDeclaration","src":"6390:17:14"},{"attributes":{"constant":false,"name":"offset","scope":12018,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11902,"name":"ElementaryTypeName","src":"6417:7:14"}],"id":11903,"name":"VariableDeclaration","src":"6417:14:14"},{"attributes":{"constant":false,"name":"size","scope":12018,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11904,"name":"ElementaryTypeName","src":"6441:7:14"}],"id":11905,"name":"VariableDeclaration","src":"6441:12:14"},{"attributes":{"constant":false,"name":"deleteRecord","scope":12018,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11906,"name":"ElementaryTypeName","src":"6463:4:14"}],"id":11907,"name":"VariableDeclaration","src":"6463:17:14"}],"id":11908,"name":"ParameterList","src":"6306:175:14"},{"attributes":{"parameters":[null]},"children":[],"id":11909,"name":"ParameterList","src":"6494:0:14"},{"children":[{"attributes":{"assignments":[11911]},"children":[{"attributes":{"constant":false,"name":"version","scope":12017,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11910,"name":"ElementaryTypeName","src":"6504:7:14"}],"id":11911,"name":"VariableDeclaration","src":"6504:15:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11583,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":11912,"name":"Identifier","src":"6522:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11913,"name":"Identifier","src":"6531:4:14"}],"id":11914,"name":"IndexAccess","src":"6522:14:14"}],"id":11915,"name":"VariableDeclarationStatement","src":"6504:32:14"},{"attributes":{"assignments":[11917]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":12017,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11916,"name":"ElementaryTypeName","src":"6546:7:14"}],"id":11917,"name":"VariableDeclaration","src":"6546:16:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":11918,"name":"Identifier","src":"6565:9:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11897,"type":"bytes memory","value":"name"},"id":11919,"name":"Identifier","src":"6575:4:14"}],"id":11920,"name":"FunctionCall","src":"6565:15:14"}],"id":11921,"name":"VariableDeclarationStatement","src":"6546:34:14"},{"attributes":{"assignments":[11923]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":12017,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11922,"name":"ElementaryTypeName","src":"6590:5:14"}],"id":11923,"name":"VariableDeclaration","src":"6590:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":15471,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11901,"type":"bytes memory","value":"data"},"id":11924,"name":"Identifier","src":"6612:4:14"}],"id":11925,"name":"MemberAccess","src":"6612:14:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11903,"type":"uint256","value":"offset"},"id":11926,"name":"Identifier","src":"6627:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11905,"type":"uint256","value":"size"},"id":11927,"name":"Identifier","src":"6635:4:14"}],"id":11928,"name":"FunctionCall","src":"6612:28:14"}],"id":11929,"name":"VariableDeclarationStatement","src":"6590:50:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11907,"type":"bool","value":"deleteRecord"},"id":11930,"name":"Identifier","src":"6654:12:14"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11931,"name":"Identifier","src":"6686:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11932,"name":"Identifier","src":"6694:4:14"}],"id":11933,"name":"IndexAccess","src":"6686:13:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11934,"name":"Identifier","src":"6700:7:14"}],"id":11935,"name":"IndexAccess","src":"6686:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11936,"name":"Identifier","src":"6709:8:14"}],"id":11937,"name":"IndexAccess","src":"6686:32:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":11938,"name":"Identifier","src":"6719:8:14"}],"id":11939,"name":"IndexAccess","src":"6686:42:14"}],"id":11940,"name":"MemberAccess","src":"6686:49:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11941,"name":"Literal","src":"6739:1:14"}],"id":11942,"name":"BinaryOperation","src":"6686:54:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11601,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":11943,"name":"Identifier","src":"6760:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11944,"name":"Identifier","src":"6777:4:14"}],"id":11947,"name":"IndexAccess","src":"6760:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11945,"name":"Identifier","src":"6783:7:14"}],"id":11948,"name":"IndexAccess","src":"6760:31:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11946,"name":"Identifier","src":"6792:8:14"}],"id":11949,"name":"IndexAccess","src":"6760:41:14"}],"id":11950,"name":"UnaryOperation","src":"6760:43:14"}],"id":11951,"name":"ExpressionStatement","src":"6760:43:14"}],"id":11952,"name":"Block","src":"6742:76:14"}],"id":11953,"name":"IfStatement","src":"6682:136:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11954,"name":"Identifier","src":"6838:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11955,"name":"Identifier","src":"6846:4:14"}],"id":11956,"name":"IndexAccess","src":"6838:13:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11957,"name":"Identifier","src":"6852:7:14"}],"id":11958,"name":"IndexAccess","src":"6838:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11959,"name":"Identifier","src":"6861:8:14"}],"id":11960,"name":"IndexAccess","src":"6838:32:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":11961,"name":"Identifier","src":"6871:8:14"}],"id":11962,"name":"IndexAccess","src":"6838:42:14"}],"id":11963,"name":"TupleExpression","src":"6837:44:14"}],"id":11964,"name":"UnaryOperation","src":"6831:50:14"}],"id":11965,"name":"ExpressionStatement","src":"6831:50:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":11563,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":11966,"name":"Identifier","src":"6900:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11967,"name":"Identifier","src":"6917:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11897,"type":"bytes memory","value":"name"},"id":11968,"name":"Identifier","src":"6923:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":11969,"name":"Identifier","src":"6929:8:14"}],"id":11970,"name":"FunctionCall","src":"6900:38:14"}],"id":11971,"name":"EmitStatement","src":"6895:43:14"}],"id":11972,"name":"Block","src":"6668:281:14"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11973,"name":"Identifier","src":"6973:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11974,"name":"Identifier","src":"6981:4:14"}],"id":11975,"name":"IndexAccess","src":"6973:13:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11976,"name":"Identifier","src":"6987:7:14"}],"id":11977,"name":"IndexAccess","src":"6973:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11978,"name":"Identifier","src":"6996:8:14"}],"id":11979,"name":"IndexAccess","src":"6973:32:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":11980,"name":"Identifier","src":"7006:8:14"}],"id":11981,"name":"IndexAccess","src":"6973:42:14"}],"id":11982,"name":"MemberAccess","src":"6973:49:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11983,"name":"Literal","src":"7026:1:14"}],"id":11984,"name":"BinaryOperation","src":"6973:54:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11601,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":11985,"name":"Identifier","src":"7047:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11986,"name":"Identifier","src":"7064:4:14"}],"id":11989,"name":"IndexAccess","src":"7047:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11987,"name":"Identifier","src":"7070:7:14"}],"id":11990,"name":"IndexAccess","src":"7047:31:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11988,"name":"Identifier","src":"7079:8:14"}],"id":11991,"name":"IndexAccess","src":"7047:41:14"}],"id":11992,"name":"UnaryOperation","src":"7047:43:14"}],"id":11993,"name":"ExpressionStatement","src":"7047:43:14"}],"id":11994,"name":"Block","src":"7029:76:14"}],"id":11995,"name":"IfStatement","src":"6969:136:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11996,"name":"Identifier","src":"7118:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11997,"name":"Identifier","src":"7126:4:14"}],"id":12001,"name":"IndexAccess","src":"7118:13:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11998,"name":"Identifier","src":"7132:7:14"}],"id":12002,"name":"IndexAccess","src":"7118:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11999,"name":"Identifier","src":"7141:8:14"}],"id":12003,"name":"IndexAccess","src":"7118:32:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":12000,"name":"Identifier","src":"7151:8:14"}],"id":12004,"name":"IndexAccess","src":"7118:42:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11923,"type":"bytes memory","value":"rrData"},"id":12005,"name":"Identifier","src":"7163:6:14"}],"id":12006,"name":"Assignment","src":"7118:51:14"}],"id":12007,"name":"ExpressionStatement","src":"7118:51:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11555,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":12008,"name":"Identifier","src":"7188:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":12009,"name":"Identifier","src":"7205:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11897,"type":"bytes memory","value":"name"},"id":12010,"name":"Identifier","src":"7211:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":12011,"name":"Identifier","src":"7217:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11923,"type":"bytes memory","value":"rrData"},"id":12012,"name":"Identifier","src":"7227:6:14"}],"id":12013,"name":"FunctionCall","src":"7188:46:14"}],"id":12014,"name":"EmitStatement","src":"7183:51:14"}],"id":12015,"name":"Block","src":"6955:290:14"}],"id":12016,"name":"IfStatement","src":"6650:595:14"}],"id":12017,"name":"Block","src":"6494:757:14"}],"id":12018,"name":"FunctionDefinition","src":"6286:965:14"}],"id":12019,"name":"ContractDefinition","src":"81:7172:14"}],"id":12020,"name":"SourceUnit","src":"0:7253:14"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[12206]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12021,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12207,"symbolAliases":[null],"unitAlias":""},"id":12022,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":11459,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":12207,"symbolAliases":[null],"unitAlias":""},"id":12023,"name":"ImportDirective","src":"55:28:15"},{"attributes":{"contractDependencies":[11458,14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12206,11458,14355],"name":"InterfaceResolver","scope":12207},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":12024,"name":"UserDefinedTypeName","src":"115:12:15"}],"id":12025,"name":"InheritanceSpecifier","src":"115:12:15"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":11458,"type":"contract AddrResolver"},"id":12026,"name":"UserDefinedTypeName","src":"129:12:15"}],"id":12027,"name":"InheritanceSpecifier","src":"129:12:15"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":12206,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12028,"name":"ElementaryTypeName","src":"148:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":12029,"name":"ElementaryTypeNameExpression","src":"197:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":12030,"name":"Identifier","src":"204:9:15"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":12031,"name":"Literal","src":"214:38:15"}],"id":12032,"name":"FunctionCall","src":"204:49:15"}],"id":12033,"name":"FunctionCall","src":"197:57:15"}],"id":12034,"name":"VariableDeclaration","src":"148:106:15"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":12206,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12035,"name":"ElementaryTypeName","src":"260:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":12036,"name":"Literal","src":"304:10:15"}],"id":12037,"name":"VariableDeclaration","src":"260:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":12045,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12038,"name":"ElementaryTypeName","src":"344:7:15"}],"id":12039,"name":"VariableDeclaration","src":"344:20:15"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":12045,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12040,"name":"ElementaryTypeName","src":"366:6:15"}],"id":12041,"name":"VariableDeclaration","src":"366:26:15"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":12045,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12042,"name":"ElementaryTypeName","src":"394:7:15"}],"id":12043,"name":"VariableDeclaration","src":"394:19:15"}],"id":12044,"name":"ParameterList","src":"343:71:15"}],"id":12045,"name":"EventDefinition","src":"321:94:15"},{"attributes":{"constant":false,"name":"interfaces","scope":12206,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12046,"name":"ElementaryTypeName","src":"429:7:15"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12047,"name":"ElementaryTypeName","src":"446:6:15"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12048,"name":"ElementaryTypeName","src":"454:7:15"}],"id":12049,"name":"Mapping","src":"438:24:15"}],"id":12050,"name":"Mapping","src":"421:42:15"}],"id":12051,"name":"VariableDeclaration","src":"421:53:15"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":12206,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12078,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12052,"name":"ElementaryTypeName","src":"880:7:15"}],"id":12053,"name":"VariableDeclaration","src":"880:12:15"},{"attributes":{"constant":false,"name":"interfaceID","scope":12078,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12054,"name":"ElementaryTypeName","src":"894:6:15"}],"id":12055,"name":"VariableDeclaration","src":"894:18:15"},{"attributes":{"constant":false,"name":"implementer","scope":12078,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12056,"name":"ElementaryTypeName","src":"914:7:15"}],"id":12057,"name":"VariableDeclaration","src":"914:19:15"}],"id":12058,"name":"ParameterList","src":"879:55:15"},{"attributes":{"parameters":[null]},"children":[],"id":12062,"name":"ParameterList","src":"961:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":12059,"name":"Identifier","src":"944:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12053,"type":"bytes32","value":"node"},"id":12060,"name":"Identifier","src":"955:4:15"}],"id":12061,"name":"ModifierInvocation","src":"944:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12051,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":12063,"name":"Identifier","src":"971:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12053,"type":"bytes32","value":"node"},"id":12064,"name":"Identifier","src":"982:4:15"}],"id":12066,"name":"IndexAccess","src":"971:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12055,"type":"bytes4","value":"interfaceID"},"id":12065,"name":"Identifier","src":"988:11:15"}],"id":12067,"name":"IndexAccess","src":"971:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12057,"type":"address","value":"implementer"},"id":12068,"name":"Identifier","src":"1003:11:15"}],"id":12069,"name":"Assignment","src":"971:43:15"}],"id":12070,"name":"ExpressionStatement","src":"971:43:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":12045,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":12071,"name":"Identifier","src":"1029:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12053,"type":"bytes32","value":"node"},"id":12072,"name":"Identifier","src":"1046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12055,"type":"bytes4","value":"interfaceID"},"id":12073,"name":"Identifier","src":"1052:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12057,"type":"address","value":"implementer"},"id":12074,"name":"Identifier","src":"1065:11:15"}],"id":12075,"name":"FunctionCall","src":"1029:48:15"}],"id":12076,"name":"EmitStatement","src":"1024:53:15"}],"id":12077,"name":"Block","src":"961:123:15"}],"id":12078,"name":"FunctionDefinition","src":"858:226:15"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":12206,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12188,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12079,"name":"ElementaryTypeName","src":"1751:7:15"}],"id":12080,"name":"VariableDeclaration","src":"1751:12:15"},{"attributes":{"constant":false,"name":"interfaceID","scope":12188,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12081,"name":"ElementaryTypeName","src":"1765:6:15"}],"id":12082,"name":"VariableDeclaration","src":"1765:18:15"}],"id":12083,"name":"ParameterList","src":"1750:34:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":12188,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12084,"name":"ElementaryTypeName","src":"1808:7:15"}],"id":12085,"name":"VariableDeclaration","src":"1808:7:15"}],"id":12086,"name":"ParameterList","src":"1807:9:15"},{"children":[{"attributes":{"assignments":[12088]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":12187,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12087,"name":"ElementaryTypeName","src":"1827:7:15"}],"id":12088,"name":"VariableDeclaration","src":"1827:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12051,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":12089,"name":"Identifier","src":"1849:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12080,"type":"bytes32","value":"node"},"id":12090,"name":"Identifier","src":"1860:4:15"}],"id":12091,"name":"IndexAccess","src":"1849:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12082,"type":"bytes4","value":"interfaceID"},"id":12092,"name":"Identifier","src":"1866:11:15"}],"id":12093,"name":"IndexAccess","src":"1849:29:15"}],"id":12094,"name":"VariableDeclarationStatement","src":"1827:51:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12088,"type":"address","value":"implementer"},"id":12095,"name":"Identifier","src":"1891:11:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12096,"name":"ElementaryTypeNameExpression","src":"1906:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12097,"name":"Literal","src":"1914:1:15"}],"id":12098,"name":"FunctionCall","src":"1906:10:15"}],"id":12099,"name":"BinaryOperation","src":"1891:25:15"},{"children":[{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12088,"type":"address","value":"implementer"},"id":12100,"name":"Identifier","src":"1939:11:15"}],"id":12101,"name":"Return","src":"1932:18:15"}],"id":12102,"name":"Block","src":"1918:43:15"}],"id":12103,"name":"IfStatement","src":"1888:73:15"},{"attributes":{"assignments":[12105]},"children":[{"attributes":{"constant":false,"name":"a","scope":12187,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12104,"name":"ElementaryTypeName","src":"1971:7:15"}],"id":12105,"name":"VariableDeclaration","src":"1971:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[11381,11436],"referencedDeclaration":11381,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":12106,"name":"Identifier","src":"1983:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12080,"type":"bytes32","value":"node"},"id":12107,"name":"Identifier","src":"1988:4:15"}],"id":12108,"name":"FunctionCall","src":"1983:10:15"}],"id":12109,"name":"VariableDeclarationStatement","src":"1971:22:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12105,"type":"address","value":"a"},"id":12110,"name":"Identifier","src":"2006:1:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12111,"name":"ElementaryTypeNameExpression","src":"2011:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12112,"name":"Literal","src":"2019:1:15"}],"id":12113,"name":"FunctionCall","src":"2011:10:15"}],"id":12114,"name":"BinaryOperation","src":"2006:15:15"},{"children":[{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12115,"name":"ElementaryTypeNameExpression","src":"2044:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12116,"name":"Literal","src":"2052:1:15"}],"id":12117,"name":"FunctionCall","src":"2044:10:15"}],"id":12118,"name":"Return","src":"2037:17:15"}],"id":12119,"name":"Block","src":"2023:42:15"}],"id":12120,"name":"IfStatement","src":"2003:62:15"},{"attributes":{"assignments":[12122,12124]},"children":[{"attributes":{"constant":false,"name":"success","scope":12187,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12121,"name":"ElementaryTypeName","src":"2076:4:15"}],"id":12122,"name":"VariableDeclaration","src":"2076:12:15"},{"attributes":{"constant":false,"name":"returnData","scope":12187,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":12123,"name":"ElementaryTypeName","src":"2090:5:15"}],"id":12124,"name":"VariableDeclaration","src":"2090:23:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12105,"type":"address","value":"a"},"id":12125,"name":"Identifier","src":"2117:1:15"}],"id":12126,"name":"MemberAccess","src":"2117:12:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":12127,"name":"Identifier","src":"2130:3:15"}],"id":12128,"name":"MemberAccess","src":"2130:23:15"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":12129,"name":"Literal","src":"2154:27:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12037,"type":"bytes4","value":"INTERFACE_META_ID"},"id":12130,"name":"Identifier","src":"2183:17:15"}],"id":12131,"name":"FunctionCall","src":"2130:71:15"}],"id":12132,"name":"FunctionCall","src":"2117:85:15"}],"id":12133,"name":"VariableDeclarationStatement","src":"2075:127:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12122,"type":"bool","value":"success"},"id":12134,"name":"Identifier","src":"2216:7:15"}],"id":12135,"name":"UnaryOperation","src":"2215:8:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12136,"name":"Identifier","src":"2227:10:15"}],"id":12137,"name":"MemberAccess","src":"2227:17:15"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12138,"name":"Literal","src":"2247:2:15"}],"id":12139,"name":"BinaryOperation","src":"2227:22:15"}],"id":12140,"name":"BinaryOperation","src":"2215:34:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12141,"name":"Identifier","src":"2253:10:15"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":12142,"name":"Literal","src":"2264:2:15"}],"id":12143,"name":"IndexAccess","src":"2253:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12144,"name":"Literal","src":"2271:1:15"}],"id":12145,"name":"BinaryOperation","src":"2253:19:15"}],"id":12146,"name":"BinaryOperation","src":"2215:57:15"},{"children":[{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12147,"name":"ElementaryTypeNameExpression","src":"2342:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12148,"name":"Literal","src":"2350:1:15"}],"id":12149,"name":"FunctionCall","src":"2342:10:15"}],"id":12150,"name":"Return","src":"2335:17:15"}],"id":12151,"name":"Block","src":"2274:89:15"}],"id":12152,"name":"IfStatement","src":"2212:151:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12122,"type":"bool","value":"success"},"id":12153,"name":"Identifier","src":"2374:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12154,"name":"Identifier","src":"2383:10:15"}],"id":12155,"name":"TupleExpression","src":"2373:21:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12105,"type":"address","value":"a"},"id":12156,"name":"Identifier","src":"2397:1:15"}],"id":12157,"name":"MemberAccess","src":"2397:12:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":12158,"name":"Identifier","src":"2410:3:15"}],"id":12159,"name":"MemberAccess","src":"2410:23:15"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":12160,"name":"Literal","src":"2434:27:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12082,"type":"bytes4","value":"interfaceID"},"id":12161,"name":"Identifier","src":"2463:11:15"}],"id":12162,"name":"FunctionCall","src":"2410:65:15"}],"id":12163,"name":"FunctionCall","src":"2397:79:15"}],"id":12164,"name":"Assignment","src":"2373:103:15"}],"id":12165,"name":"ExpressionStatement","src":"2373:103:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12122,"type":"bool","value":"success"},"id":12166,"name":"Identifier","src":"2490:7:15"}],"id":12167,"name":"UnaryOperation","src":"2489:8:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12168,"name":"Identifier","src":"2501:10:15"}],"id":12169,"name":"MemberAccess","src":"2501:17:15"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12170,"name":"Literal","src":"2521:2:15"}],"id":12171,"name":"BinaryOperation","src":"2501:22:15"}],"id":12172,"name":"BinaryOperation","src":"2489:34:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12173,"name":"Identifier","src":"2527:10:15"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":12174,"name":"Literal","src":"2538:2:15"}],"id":12175,"name":"IndexAccess","src":"2527:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12176,"name":"Literal","src":"2545:1:15"}],"id":12177,"name":"BinaryOperation","src":"2527:19:15"}],"id":12178,"name":"BinaryOperation","src":"2489:57:15"},{"children":[{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12179,"name":"ElementaryTypeNameExpression","src":"2628:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12180,"name":"Literal","src":"2636:1:15"}],"id":12181,"name":"FunctionCall","src":"2628:10:15"}],"id":12182,"name":"Return","src":"2621:17:15"}],"id":12183,"name":"Block","src":"2548:101:15"}],"id":12184,"name":"IfStatement","src":"2486:163:15"},{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12105,"type":"address","value":"a"},"id":12185,"name":"Identifier","src":"2666:1:15"}],"id":12186,"name":"Return","src":"2659:8:15"}],"id":12187,"name":"Block","src":"1817:857:15"}],"id":12188,"name":"FunctionDefinition","src":"1721:953:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12206,"stateMutability":"pure","superFunction":11457,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":12205,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12189,"name":"ElementaryTypeName","src":"2707:6:15"}],"id":12190,"name":"VariableDeclaration","src":"2707:18:15"}],"id":12191,"name":"ParameterList","src":"2706:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":12205,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12192,"name":"ElementaryTypeName","src":"2747:4:15"}],"id":12193,"name":"VariableDeclaration","src":"2747:4:15"}],"id":12194,"name":"ParameterList","src":"2746:6:15"},{"children":[{"attributes":{"functionReturnParameters":12194},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12190,"type":"bytes4","value":"interfaceID"},"id":12195,"name":"Identifier","src":"2770:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12034,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":12196,"name":"Identifier","src":"2785:22:15"}],"id":12197,"name":"BinaryOperation","src":"2770:37:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":11457,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15758,"type":"contract super InterfaceResolver","value":"super"},"id":12198,"name":"Identifier","src":"2811:5:15"}],"id":12199,"name":"MemberAccess","src":"2811:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12190,"type":"bytes4","value":"interfaceID"},"id":12200,"name":"Identifier","src":"2835:11:15"}],"id":12201,"name":"FunctionCall","src":"2811:36:15"}],"id":12202,"name":"BinaryOperation","src":"2770:77:15"}],"id":12203,"name":"Return","src":"2763:84:15"}],"id":12204,"name":"Block","src":"2753:101:15"}],"id":12205,"name":"FunctionDefinition","src":"2680:174:15"}],"id":12206,"name":"ContractDefinition","src":"85:2771:15"}],"id":12207,"name":"SourceUnit","src":"0:2857:15"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[12276]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12208,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12277,"symbolAliases":[null],"unitAlias":""},"id":12209,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12276,14355],"name":"NameResolver","scope":12277},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":12210,"name":"UserDefinedTypeName","src":"81:12:16"}],"id":12211,"name":"InheritanceSpecifier","src":"81:12:16"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":12276,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12212,"name":"ElementaryTypeName","src":"100:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":12213,"name":"Literal","src":"144:10:16"}],"id":12214,"name":"VariableDeclaration","src":"100:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":12220,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12215,"name":"ElementaryTypeName","src":"179:7:16"}],"id":12216,"name":"VariableDeclaration","src":"179:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":12220,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12217,"name":"ElementaryTypeName","src":"201:6:16"}],"id":12218,"name":"VariableDeclaration","src":"201:11:16"}],"id":12219,"name":"ParameterList","src":"178:35:16"}],"id":12220,"name":"EventDefinition","src":"161:53:16"},{"attributes":{"constant":false,"name":"names","scope":12276,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12221,"name":"ElementaryTypeName","src":"228:7:16"},{"attributes":{"name":"string","type":"string"},"id":12222,"name":"ElementaryTypeName","src":"237:6:16"}],"id":12223,"name":"Mapping","src":"220:24:16"}],"id":12224,"name":"VariableDeclaration","src":"220:30:16"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":12276,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12246,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12225,"name":"ElementaryTypeName","src":"509:7:16"}],"id":12226,"name":"VariableDeclaration","src":"509:12:16"},{"attributes":{"constant":false,"name":"name","scope":12246,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12227,"name":"ElementaryTypeName","src":"523:6:16"}],"id":12228,"name":"VariableDeclaration","src":"523:20:16"}],"id":12229,"name":"ParameterList","src":"508:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":12233,"name":"ParameterList","src":"571:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":12230,"name":"Identifier","src":"554:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12226,"type":"bytes32","value":"node"},"id":12231,"name":"Identifier","src":"565:4:16"}],"id":12232,"name":"ModifierInvocation","src":"554:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12224,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":12234,"name":"Identifier","src":"581:5:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12226,"type":"bytes32","value":"node"},"id":12235,"name":"Identifier","src":"587:4:16"}],"id":12236,"name":"IndexAccess","src":"581:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12228,"type":"string calldata","value":"name"},"id":12237,"name":"Identifier","src":"595:4:16"}],"id":12238,"name":"Assignment","src":"581:18:16"}],"id":12239,"name":"ExpressionStatement","src":"581:18:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":12220,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":12240,"name":"Identifier","src":"614:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12226,"type":"bytes32","value":"node"},"id":12241,"name":"Identifier","src":"626:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12228,"type":"string calldata","value":"name"},"id":12242,"name":"Identifier","src":"632:4:16"}],"id":12243,"name":"FunctionCall","src":"614:23:16"}],"id":12244,"name":"EmitStatement","src":"609:28:16"}],"id":12245,"name":"Block","src":"571:73:16"}],"id":12246,"name":"FunctionDefinition","src":"492:152:16"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":12276,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12258,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12247,"name":"ElementaryTypeName","src":"858:7:16"}],"id":12248,"name":"VariableDeclaration","src":"858:12:16"}],"id":12249,"name":"ParameterList","src":"857:14:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":12258,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12250,"name":"ElementaryTypeName","src":"895:6:16"}],"id":12251,"name":"VariableDeclaration","src":"895:13:16"}],"id":12252,"name":"ParameterList","src":"894:15:16"},{"children":[{"attributes":{"functionReturnParameters":12252},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12224,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":12253,"name":"Identifier","src":"927:5:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12248,"type":"bytes32","value":"node"},"id":12254,"name":"Identifier","src":"933:4:16"}],"id":12255,"name":"IndexAccess","src":"927:11:16"}],"id":12256,"name":"Return","src":"920:18:16"}],"id":12257,"name":"Block","src":"910:35:16"}],"id":12258,"name":"FunctionDefinition","src":"844:101:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12276,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":12275,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12259,"name":"ElementaryTypeName","src":"978:6:16"}],"id":12260,"name":"VariableDeclaration","src":"978:18:16"}],"id":12261,"name":"ParameterList","src":"977:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":12275,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12262,"name":"ElementaryTypeName","src":"1018:4:16"}],"id":12263,"name":"VariableDeclaration","src":"1018:4:16"}],"id":12264,"name":"ParameterList","src":"1017:6:16"},{"children":[{"attributes":{"functionReturnParameters":12264},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12260,"type":"bytes4","value":"interfaceID"},"id":12265,"name":"Identifier","src":"1041:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12214,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":12266,"name":"Identifier","src":"1056:17:16"}],"id":12267,"name":"BinaryOperation","src":"1041:32:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15760,"type":"contract super NameResolver","value":"super"},"id":12268,"name":"Identifier","src":"1077:5:16"}],"id":12269,"name":"MemberAccess","src":"1077:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12260,"type":"bytes4","value":"interfaceID"},"id":12270,"name":"Identifier","src":"1101:11:16"}],"id":12271,"name":"FunctionCall","src":"1077:36:16"}],"id":12272,"name":"BinaryOperation","src":"1041:72:16"}],"id":12273,"name":"Return","src":"1034:79:16"}],"id":12274,"name":"Block","src":"1024:96:16"}],"id":12275,"name":"FunctionDefinition","src":"951:169:16"}],"id":12276,"name":"ContractDefinition","src":"56:1066:16"}],"id":12277,"name":"SourceUnit","src":"0:1123:16"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[12367]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12278,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12368,"symbolAliases":[null],"unitAlias":""},"id":12279,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12367,14355],"name":"PubkeyResolver","scope":12368},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":12280,"name":"UserDefinedTypeName","src":"83:12:17"}],"id":12281,"name":"InheritanceSpecifier","src":"83:12:17"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":12367,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12282,"name":"ElementaryTypeName","src":"102:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":12283,"name":"Literal","src":"148:10:17"}],"id":12284,"name":"VariableDeclaration","src":"102:56:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":12292,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12285,"name":"ElementaryTypeName","src":"185:7:17"}],"id":12286,"name":"VariableDeclaration","src":"185:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":12292,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12287,"name":"ElementaryTypeName","src":"207:7:17"}],"id":12288,"name":"VariableDeclaration","src":"207:9:17"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":12292,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12289,"name":"ElementaryTypeName","src":"218:7:17"}],"id":12290,"name":"VariableDeclaration","src":"218:9:17"}],"id":12291,"name":"ParameterList","src":"184:44:17"}],"id":12292,"name":"EventDefinition","src":"165:64:17"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":12367,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":12297,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12293,"name":"ElementaryTypeName","src":"262:7:17"}],"id":12294,"name":"VariableDeclaration","src":"262:9:17"},{"attributes":{"constant":false,"name":"y","scope":12297,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12295,"name":"ElementaryTypeName","src":"281:7:17"}],"id":12296,"name":"VariableDeclaration","src":"281:9:17"}],"id":12297,"name":"StructDefinition","src":"235:62:17"},{"attributes":{"constant":false,"name":"pubkeys","scope":12367,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12298,"name":"ElementaryTypeName","src":"311:7:17"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":12297,"type":"struct PubkeyResolver.PublicKey"},"id":12299,"name":"UserDefinedTypeName","src":"320:9:17"}],"id":12300,"name":"Mapping","src":"303:27:17"}],"id":12301,"name":"VariableDeclaration","src":"303:35:17"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":12367,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12329,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12302,"name":"ElementaryTypeName","src":"631:7:17"}],"id":12303,"name":"VariableDeclaration","src":"631:12:17"},{"attributes":{"constant":false,"name":"x","scope":12329,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12304,"name":"ElementaryTypeName","src":"645:7:17"}],"id":12305,"name":"VariableDeclaration","src":"645:9:17"},{"attributes":{"constant":false,"name":"y","scope":12329,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12306,"name":"ElementaryTypeName","src":"656:7:17"}],"id":12307,"name":"VariableDeclaration","src":"656:9:17"}],"id":12308,"name":"ParameterList","src":"630:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":12312,"name":"ParameterList","src":"693:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":12309,"name":"Identifier","src":"676:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12303,"type":"bytes32","value":"node"},"id":12310,"name":"Identifier","src":"687:4:17"}],"id":12311,"name":"ModifierInvocation","src":"676:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12301,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":12313,"name":"Identifier","src":"703:7:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12303,"type":"bytes32","value":"node"},"id":12314,"name":"Identifier","src":"711:4:17"}],"id":12315,"name":"IndexAccess","src":"703:13:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":12297,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":12316,"name":"Identifier","src":"719:9:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12305,"type":"bytes32","value":"x"},"id":12317,"name":"Identifier","src":"729:1:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12307,"type":"bytes32","value":"y"},"id":12318,"name":"Identifier","src":"732:1:17"}],"id":12319,"name":"FunctionCall","src":"719:15:17"}],"id":12320,"name":"Assignment","src":"703:31:17"}],"id":12321,"name":"ExpressionStatement","src":"703:31:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":12292,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":12322,"name":"Identifier","src":"749:13:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12303,"type":"bytes32","value":"node"},"id":12323,"name":"Identifier","src":"763:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12305,"type":"bytes32","value":"x"},"id":12324,"name":"Identifier","src":"769:1:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12307,"type":"bytes32","value":"y"},"id":12325,"name":"Identifier","src":"772:1:17"}],"id":12326,"name":"FunctionCall","src":"749:25:17"}],"id":12327,"name":"EmitStatement","src":"744:30:17"}],"id":12328,"name":"Block","src":"693:88:17"}],"id":12329,"name":"FunctionDefinition","src":"612:169:17"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":12367,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12349,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12330,"name":"ElementaryTypeName","src":"1039:7:17"}],"id":12331,"name":"VariableDeclaration","src":"1039:12:17"}],"id":12332,"name":"ParameterList","src":"1038:14:17"},{"children":[{"attributes":{"constant":false,"name":"x","scope":12349,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12333,"name":"ElementaryTypeName","src":"1076:7:17"}],"id":12334,"name":"VariableDeclaration","src":"1076:9:17"},{"attributes":{"constant":false,"name":"y","scope":12349,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12335,"name":"ElementaryTypeName","src":"1087:7:17"}],"id":12336,"name":"VariableDeclaration","src":"1087:9:17"}],"id":12337,"name":"ParameterList","src":"1075:22:17"},{"children":[{"attributes":{"functionReturnParameters":12337},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":12294,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12301,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":12338,"name":"Identifier","src":"1116:7:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12331,"type":"bytes32","value":"node"},"id":12339,"name":"Identifier","src":"1124:4:17"}],"id":12340,"name":"IndexAccess","src":"1116:13:17"}],"id":12341,"name":"MemberAccess","src":"1116:15:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":12296,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12301,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":12342,"name":"Identifier","src":"1133:7:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12331,"type":"bytes32","value":"node"},"id":12343,"name":"Identifier","src":"1141:4:17"}],"id":12344,"name":"IndexAccess","src":"1133:13:17"}],"id":12345,"name":"MemberAccess","src":"1133:15:17"}],"id":12346,"name":"TupleExpression","src":"1115:34:17"}],"id":12347,"name":"Return","src":"1108:41:17"}],"id":12348,"name":"Block","src":"1098:58:17"}],"id":12349,"name":"FunctionDefinition","src":"1023:133:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12367,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":12366,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12350,"name":"ElementaryTypeName","src":"1189:6:17"}],"id":12351,"name":"VariableDeclaration","src":"1189:18:17"}],"id":12352,"name":"ParameterList","src":"1188:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":12366,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12353,"name":"ElementaryTypeName","src":"1229:4:17"}],"id":12354,"name":"VariableDeclaration","src":"1229:4:17"}],"id":12355,"name":"ParameterList","src":"1228:6:17"},{"children":[{"attributes":{"functionReturnParameters":12355},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12351,"type":"bytes4","value":"interfaceID"},"id":12356,"name":"Identifier","src":"1252:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12284,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":12357,"name":"Identifier","src":"1267:19:17"}],"id":12358,"name":"BinaryOperation","src":"1252:34:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15762,"type":"contract super PubkeyResolver","value":"super"},"id":12359,"name":"Identifier","src":"1290:5:17"}],"id":12360,"name":"MemberAccess","src":"1290:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12351,"type":"bytes4","value":"interfaceID"},"id":12361,"name":"Identifier","src":"1314:11:17"}],"id":12362,"name":"FunctionCall","src":"1290:36:17"}],"id":12363,"name":"BinaryOperation","src":"1252:74:17"}],"id":12364,"name":"Return","src":"1245:81:17"}],"id":12365,"name":"Block","src":"1235:98:17"}],"id":12366,"name":"FunctionDefinition","src":"1162:171:17"}],"id":12367,"name":"ContractDefinition","src":"56:1279:17"}],"id":12368,"name":"SourceUnit","src":"0:1336:17"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[12450]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12369,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12451,"symbolAliases":[null],"unitAlias":""},"id":12370,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12450,14355],"name":"TextResolver","scope":12451},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":12371,"name":"UserDefinedTypeName","src":"81:12:18"}],"id":12372,"name":"InheritanceSpecifier","src":"81:12:18"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":12450,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12373,"name":"ElementaryTypeName","src":"100:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":12374,"name":"Literal","src":"144:10:18"}],"id":12375,"name":"VariableDeclaration","src":"100:54:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":12383,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12376,"name":"ElementaryTypeName","src":"179:7:18"}],"id":12377,"name":"VariableDeclaration","src":"179:20:18"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":12383,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12378,"name":"ElementaryTypeName","src":"201:6:18"}],"id":12379,"name":"VariableDeclaration","src":"201:25:18"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":12383,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12380,"name":"ElementaryTypeName","src":"228:6:18"}],"id":12381,"name":"VariableDeclaration","src":"228:10:18"}],"id":12382,"name":"ParameterList","src":"178:61:18"}],"id":12383,"name":"EventDefinition","src":"161:79:18"},{"attributes":{"constant":false,"name":"texts","scope":12450,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12384,"name":"ElementaryTypeName","src":"254:7:18"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":12385,"name":"ElementaryTypeName","src":"271:6:18"},{"attributes":{"name":"string","type":"string"},"id":12386,"name":"ElementaryTypeName","src":"279:6:18"}],"id":12387,"name":"Mapping","src":"263:23:18"}],"id":12388,"name":"Mapping","src":"246:41:18"}],"id":12389,"name":"VariableDeclaration","src":"246:47:18"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":12450,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12416,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12390,"name":"ElementaryTypeName","src":"590:7:18"}],"id":12391,"name":"VariableDeclaration","src":"590:12:18"},{"attributes":{"constant":false,"name":"key","scope":12416,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12392,"name":"ElementaryTypeName","src":"604:6:18"}],"id":12393,"name":"VariableDeclaration","src":"604:19:18"},{"attributes":{"constant":false,"name":"value","scope":12416,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12394,"name":"ElementaryTypeName","src":"625:6:18"}],"id":12395,"name":"VariableDeclaration","src":"625:21:18"}],"id":12396,"name":"ParameterList","src":"589:58:18"},{"attributes":{"parameters":[null]},"children":[],"id":12400,"name":"ParameterList","src":"674:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":12397,"name":"Identifier","src":"657:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12391,"type":"bytes32","value":"node"},"id":12398,"name":"Identifier","src":"668:4:18"}],"id":12399,"name":"ModifierInvocation","src":"657:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12389,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":12401,"name":"Identifier","src":"684:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12391,"type":"bytes32","value":"node"},"id":12402,"name":"Identifier","src":"690:4:18"}],"id":12404,"name":"IndexAccess","src":"684:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12393,"type":"string calldata","value":"key"},"id":12403,"name":"Identifier","src":"696:3:18"}],"id":12405,"name":"IndexAccess","src":"684:16:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12395,"type":"string calldata","value":"value"},"id":12406,"name":"Identifier","src":"703:5:18"}],"id":12407,"name":"Assignment","src":"684:24:18"}],"id":12408,"name":"ExpressionStatement","src":"684:24:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":12383,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":12409,"name":"Identifier","src":"723:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12391,"type":"bytes32","value":"node"},"id":12410,"name":"Identifier","src":"735:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12393,"type":"string calldata","value":"key"},"id":12411,"name":"Identifier","src":"741:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12393,"type":"string calldata","value":"key"},"id":12412,"name":"Identifier","src":"746:3:18"}],"id":12413,"name":"FunctionCall","src":"723:27:18"}],"id":12414,"name":"EmitStatement","src":"718:32:18"}],"id":12415,"name":"Block","src":"674:83:18"}],"id":12416,"name":"FunctionDefinition","src":"573:184:18"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":12450,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12432,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12417,"name":"ElementaryTypeName","src":"988:7:18"}],"id":12418,"name":"VariableDeclaration","src":"988:12:18"},{"attributes":{"constant":false,"name":"key","scope":12432,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12419,"name":"ElementaryTypeName","src":"1002:6:18"}],"id":12420,"name":"VariableDeclaration","src":"1002:19:18"}],"id":12421,"name":"ParameterList","src":"987:35:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":12432,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12422,"name":"ElementaryTypeName","src":"1046:6:18"}],"id":12423,"name":"VariableDeclaration","src":"1046:13:18"}],"id":12424,"name":"ParameterList","src":"1045:15:18"},{"children":[{"attributes":{"functionReturnParameters":12424},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12389,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":12425,"name":"Identifier","src":"1078:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12418,"type":"bytes32","value":"node"},"id":12426,"name":"Identifier","src":"1084:4:18"}],"id":12427,"name":"IndexAccess","src":"1078:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12420,"type":"string calldata","value":"key"},"id":12428,"name":"Identifier","src":"1090:3:18"}],"id":12429,"name":"IndexAccess","src":"1078:16:18"}],"id":12430,"name":"Return","src":"1071:23:18"}],"id":12431,"name":"Block","src":"1061:40:18"}],"id":12432,"name":"FunctionDefinition","src":"974:127:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12450,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":12449,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12433,"name":"ElementaryTypeName","src":"1134:6:18"}],"id":12434,"name":"VariableDeclaration","src":"1134:18:18"}],"id":12435,"name":"ParameterList","src":"1133:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":12449,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12436,"name":"ElementaryTypeName","src":"1174:4:18"}],"id":12437,"name":"VariableDeclaration","src":"1174:4:18"}],"id":12438,"name":"ParameterList","src":"1173:6:18"},{"children":[{"attributes":{"functionReturnParameters":12438},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12434,"type":"bytes4","value":"interfaceID"},"id":12439,"name":"Identifier","src":"1197:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12375,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":12440,"name":"Identifier","src":"1212:17:18"}],"id":12441,"name":"BinaryOperation","src":"1197:32:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15764,"type":"contract super TextResolver","value":"super"},"id":12442,"name":"Identifier","src":"1233:5:18"}],"id":12443,"name":"MemberAccess","src":"1233:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12434,"type":"bytes4","value":"interfaceID"},"id":12444,"name":"Identifier","src":"1257:11:18"}],"id":12445,"name":"FunctionCall","src":"1233:36:18"}],"id":12446,"name":"BinaryOperation","src":"1197:72:18"}],"id":12447,"name":"Return","src":"1190:79:18"}],"id":12448,"name":"Block","src":"1180:96:18"}],"id":12449,"name":"FunctionDefinition","src":"1107:169:18"}],"id":12450,"name":"ContractDefinition","src":"56:1222:18"}],"id":12451,"name":"SourceUnit","src":"0:1278:18"}},"externals/oraclizeAPI_0.5.sol":{"AST":{"attributes":{"absolutePath":"externals/oraclizeAPI_0.5.sol","exportedSymbols":{"Buffer":[1929],"CBOR":[2229],"OraclizeAddrResolverI":[1698],"OraclizeI":[1692],"solcChecker":[1582],"usingOraclize":[7853]}},"children":[{"attributes":{"literals":["solidity",">=","0.5",".0","<","0.6",".0"]},"id":1576,"name":"PragmaDirective","src":"1116:33:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1582],"name":"solcChecker","scope":7854},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"f","scope":1582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"x","scope":1581,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1577,"name":"ElementaryTypeName","src":"1508:5:19"}],"id":1578,"name":"VariableDeclaration","src":"1508:16:19"}],"id":1579,"name":"ParameterList","src":"1507:18:19"},{"attributes":{"parameters":[null]},"children":[],"id":1580,"name":"ParameterList","src":"1534:0:19"}],"id":1581,"name":"FunctionDefinition","src":"1497:38:19"}],"id":1582,"name":"ContractDefinition","src":"1364:173:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1692],"name":"OraclizeI","scope":7854},"children":[{"attributes":{"constant":false,"name":"cbAddress","scope":1692,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"public"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1583,"name":"ElementaryTypeName","src":"1565:7:19"}],"id":1584,"name":"VariableDeclaration","src":"1565:24:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setProofType","scope":1692,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_proofType","scope":1589,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1585,"name":"ElementaryTypeName","src":"1618:4:19"}],"id":1586,"name":"VariableDeclaration","src":"1618:15:19"}],"id":1587,"name":"ParameterList","src":"1617:17:19"},{"attributes":{"parameters":[null]},"children":[],"id":1588,"name":"ParameterList","src":"1643:0:19"}],"id":1589,"name":"FunctionDefinition","src":"1596:48:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setCustomGasPrice","scope":1692,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasPrice","scope":1594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1590,"name":"ElementaryTypeName","src":"1676:4:19"}],"id":1591,"name":"VariableDeclaration","src":"1676:14:19"}],"id":1592,"name":"ParameterList","src":"1675:16:19"},{"attributes":{"parameters":[null]},"children":[],"id":1593,"name":"ParameterList","src":"1700:0:19"}],"id":1594,"name":"FunctionDefinition","src":"1649:52:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getPrice","scope":1692,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":1601,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1595,"name":"ElementaryTypeName","src":"1724:6:19"}],"id":1596,"name":"VariableDeclaration","src":"1724:25:19"}],"id":1597,"name":"ParameterList","src":"1723:27:19"},{"children":[{"attributes":{"constant":false,"name":"_dsprice","scope":1601,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1598,"name":"ElementaryTypeName","src":"1767:4:19"}],"id":1599,"name":"VariableDeclaration","src":"1767:13:19"}],"id":1600,"name":"ParameterList","src":"1766:15:19"}],"id":1601,"name":"FunctionDefinition","src":"1706:76:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"randomDS_getSessionPubKeyHash","scope":1692,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1602,"name":"ParameterList","src":"1825:2:19"},{"children":[{"attributes":{"constant":false,"name":"_sessionKeyHash","scope":1606,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1603,"name":"ElementaryTypeName","src":"1851:7:19"}],"id":1604,"name":"VariableDeclaration","src":"1851:23:19"}],"id":1605,"name":"ParameterList","src":"1850:25:19"}],"id":1606,"name":"FunctionDefinition","src":"1787:89:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getPrice","scope":1692,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":1615,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1607,"name":"ElementaryTypeName","src":"1899:6:19"}],"id":1608,"name":"VariableDeclaration","src":"1899:25:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":1615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1609,"name":"ElementaryTypeName","src":"1926:4:19"}],"id":1610,"name":"VariableDeclaration","src":"1926:14:19"}],"id":1611,"name":"ParameterList","src":"1898:43:19"},{"children":[{"attributes":{"constant":false,"name":"_dsprice","scope":1615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1612,"name":"ElementaryTypeName","src":"1958:4:19"}],"id":1613,"name":"VariableDeclaration","src":"1958:13:19"}],"id":1614,"name":"ParameterList","src":"1957:15:19"}],"id":1615,"name":"FunctionDefinition","src":"1881:92:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"queryN","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1626,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1616,"name":"ElementaryTypeName","src":"1994:4:19"}],"id":1617,"name":"VariableDeclaration","src":"1994:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1626,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1618,"name":"ElementaryTypeName","src":"2011:6:19"}],"id":1619,"name":"VariableDeclaration","src":"2011:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":1626,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1620,"name":"ElementaryTypeName","src":"2038:5:19"}],"id":1621,"name":"VariableDeclaration","src":"2038:18:19"}],"id":1622,"name":"ParameterList","src":"1993:64:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1626,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1623,"name":"ElementaryTypeName","src":"2082:7:19"}],"id":1624,"name":"VariableDeclaration","src":"2082:11:19"}],"id":1625,"name":"ParameterList","src":"2081:13:19"}],"id":1626,"name":"FunctionDefinition","src":"1978:117:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"query","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1637,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1627,"name":"ElementaryTypeName","src":"2115:4:19"}],"id":1628,"name":"VariableDeclaration","src":"2115:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1637,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1629,"name":"ElementaryTypeName","src":"2132:6:19"}],"id":1630,"name":"VariableDeclaration","src":"2132:27:19"},{"attributes":{"constant":false,"name":"_arg","scope":1637,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1631,"name":"ElementaryTypeName","src":"2161:6:19"}],"id":1632,"name":"VariableDeclaration","src":"2161:20:19"}],"id":1633,"name":"ParameterList","src":"2114:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1637,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1634,"name":"ElementaryTypeName","src":"2209:7:19"}],"id":1635,"name":"VariableDeclaration","src":"2209:11:19"}],"id":1636,"name":"ParameterList","src":"2208:13:19"}],"id":1637,"name":"FunctionDefinition","src":"2100:122:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"query2","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1650,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1638,"name":"ElementaryTypeName","src":"2243:4:19"}],"id":1639,"name":"VariableDeclaration","src":"2243:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1650,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1640,"name":"ElementaryTypeName","src":"2260:6:19"}],"id":1641,"name":"VariableDeclaration","src":"2260:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":1650,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1642,"name":"ElementaryTypeName","src":"2287:6:19"}],"id":1643,"name":"VariableDeclaration","src":"2287:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":1650,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1644,"name":"ElementaryTypeName","src":"2308:6:19"}],"id":1645,"name":"VariableDeclaration","src":"2308:19:19"}],"id":1646,"name":"ParameterList","src":"2242:86:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1650,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1647,"name":"ElementaryTypeName","src":"2353:7:19"}],"id":1648,"name":"VariableDeclaration","src":"2353:11:19"}],"id":1649,"name":"ParameterList","src":"2352:13:19"}],"id":1650,"name":"FunctionDefinition","src":"2227:139:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"query_withGasLimit","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1663,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1651,"name":"ElementaryTypeName","src":"2399:4:19"}],"id":1652,"name":"VariableDeclaration","src":"2399:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1663,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1653,"name":"ElementaryTypeName","src":"2416:6:19"}],"id":1654,"name":"VariableDeclaration","src":"2416:27:19"},{"attributes":{"constant":false,"name":"_arg","scope":1663,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1655,"name":"ElementaryTypeName","src":"2445:6:19"}],"id":1656,"name":"VariableDeclaration","src":"2445:20:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":1663,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1657,"name":"ElementaryTypeName","src":"2467:4:19"}],"id":1658,"name":"VariableDeclaration","src":"2467:14:19"}],"id":1659,"name":"ParameterList","src":"2398:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1663,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1660,"name":"ElementaryTypeName","src":"2509:7:19"}],"id":1661,"name":"VariableDeclaration","src":"2509:11:19"}],"id":1662,"name":"ParameterList","src":"2508:13:19"}],"id":1663,"name":"FunctionDefinition","src":"2371:151:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"queryN_withGasLimit","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1664,"name":"ElementaryTypeName","src":"2556:4:19"}],"id":1665,"name":"VariableDeclaration","src":"2556:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1676,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1666,"name":"ElementaryTypeName","src":"2573:6:19"}],"id":1667,"name":"VariableDeclaration","src":"2573:27:19"},{"attributes":{"constant":false,"name":"_argN","scope":1676,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1668,"name":"ElementaryTypeName","src":"2602:5:19"}],"id":1669,"name":"VariableDeclaration","src":"2602:20:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":1676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1670,"name":"ElementaryTypeName","src":"2624:4:19"}],"id":1671,"name":"VariableDeclaration","src":"2624:14:19"}],"id":1672,"name":"ParameterList","src":"2555:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1676,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1673,"name":"ElementaryTypeName","src":"2666:7:19"}],"id":1674,"name":"VariableDeclaration","src":"2666:11:19"}],"id":1675,"name":"ParameterList","src":"2665:13:19"}],"id":1676,"name":"FunctionDefinition","src":"2527:152:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"query2_withGasLimit","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1691,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1677,"name":"ElementaryTypeName","src":"2713:4:19"}],"id":1678,"name":"VariableDeclaration","src":"2713:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1691,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1679,"name":"ElementaryTypeName","src":"2730:6:19"}],"id":1680,"name":"VariableDeclaration","src":"2730:27:19"},{"attributes":{"constant":false,"name":"_arg1","scope":1691,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1681,"name":"ElementaryTypeName","src":"2759:6:19"}],"id":1682,"name":"VariableDeclaration","src":"2759:21:19"},{"attributes":{"constant":false,"name":"_arg2","scope":1691,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1683,"name":"ElementaryTypeName","src":"2782:6:19"}],"id":1684,"name":"VariableDeclaration","src":"2782:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":1691,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1685,"name":"ElementaryTypeName","src":"2805:4:19"}],"id":1686,"name":"VariableDeclaration","src":"2805:14:19"}],"id":1687,"name":"ParameterList","src":"2712:108:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1691,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1688,"name":"ElementaryTypeName","src":"2847:7:19"}],"id":1689,"name":"VariableDeclaration","src":"2847:11:19"}],"id":1690,"name":"ParameterList","src":"2846:13:19"}],"id":1691,"name":"FunctionDefinition","src":"2684:176:19"}],"id":1692,"name":"ContractDefinition","src":"1539:1323:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1698],"name":"OraclizeAddrResolverI","scope":7854},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getAddress","scope":1698,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1693,"name":"ParameterList","src":"2920:2:19"},{"children":[{"attributes":{"constant":false,"name":"_address","scope":1697,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1694,"name":"ElementaryTypeName","src":"2939:7:19"}],"id":1695,"name":"VariableDeclaration","src":"2939:16:19"}],"id":1696,"name":"ParameterList","src":"2938:18:19"}],"id":1697,"name":"FunctionDefinition","src":"2901:56:19"}],"id":1698,"name":"ContractDefinition","src":"2864:95:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[1929],"name":"Buffer","scope":7854},"children":[{"attributes":{"canonicalName":"Buffer.buffer","name":"buffer","scope":1929,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"buf","scope":1703,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1699,"name":"ElementaryTypeName","src":"4182:5:19"}],"id":1700,"name":"VariableDeclaration","src":"4182:9:19"},{"attributes":{"constant":false,"name":"capacity","scope":1703,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1701,"name":"ElementaryTypeName","src":"4201:4:19"}],"id":1702,"name":"VariableDeclaration","src":"4201:13:19"}],"id":1703,"name":"StructDefinition","src":"4158:63:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"init","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1738,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1704,"name":"UserDefinedTypeName","src":"4241:6:19"}],"id":1705,"name":"VariableDeclaration","src":"4241:18:19"},{"attributes":{"constant":false,"name":"_capacity","scope":1738,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1706,"name":"ElementaryTypeName","src":"4261:4:19"}],"id":1707,"name":"VariableDeclaration","src":"4261:14:19"}],"id":1708,"name":"ParameterList","src":"4240:36:19"},{"attributes":{"parameters":[null]},"children":[],"id":1709,"name":"ParameterList","src":"4291:0:19"},{"children":[{"attributes":{"assignments":[1711]},"children":[{"attributes":{"constant":false,"name":"capacity","scope":1737,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1710,"name":"ElementaryTypeName","src":"4301:4:19"}],"id":1711,"name":"VariableDeclaration","src":"4301:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"uint256","value":"_capacity"},"id":1712,"name":"Identifier","src":"4317:9:19"}],"id":1713,"name":"VariableDeclarationStatement","src":"4301:25:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"uint256","value":"capacity"},"id":1714,"name":"Identifier","src":"4340:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1715,"name":"Literal","src":"4351:2:19"}],"id":1716,"name":"BinaryOperation","src":"4340:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1717,"name":"Literal","src":"4357:1:19"}],"id":1718,"name":"BinaryOperation","src":"4340:18:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"uint256","value":"capacity"},"id":1719,"name":"Identifier","src":"4374:8:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1720,"name":"Literal","src":"4386:2:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"uint256","value":"capacity"},"id":1721,"name":"Identifier","src":"4392:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1722,"name":"Literal","src":"4403:2:19"}],"id":1723,"name":"BinaryOperation","src":"4392:13:19"}],"id":1724,"name":"TupleExpression","src":"4391:15:19"}],"id":1725,"name":"BinaryOperation","src":"4386:20:19"}],"id":1726,"name":"Assignment","src":"4374:32:19"}],"id":1727,"name":"ExpressionStatement","src":"4374:32:19"}],"id":1728,"name":"Block","src":"4360:57:19"}],"id":1729,"name":"IfStatement","src":"4336:81:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1705,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1730,"name":"Identifier","src":"4426:4:19"}],"id":1732,"name":"MemberAccess","src":"4426:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"uint256","value":"capacity"},"id":1733,"name":"Identifier","src":"4442:8:19"}],"id":1734,"name":"Assignment","src":"4426:24:19"}],"id":1735,"name":"ExpressionStatement","src":"4426:24:19"},{"attributes":{"externalReferences":[{"_buf":{"declaration":1705,"isOffset":false,"isSlot":false,"src":"4563:4:19","valueSize":1}},{"capacity":{"declaration":1711,"isOffset":false,"isSlot":false,"src":"4635:8:19","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(_buf, ptr)\n mstore(ptr, 0)\n mstore(0x40, add(ptr, capacity))\n}"},"children":[],"id":1736,"name":"InlineAssembly","src":"4498:157:19"}],"id":1737,"name":"Block","src":"4291:370:19"}],"id":1738,"name":"FunctionDefinition","src":"4227:434:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resize","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1761,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1739,"name":"UserDefinedTypeName","src":"4683:6:19"}],"id":1740,"name":"VariableDeclaration","src":"4683:18:19"},{"attributes":{"constant":false,"name":"_capacity","scope":1761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1741,"name":"ElementaryTypeName","src":"4703:4:19"}],"id":1742,"name":"VariableDeclaration","src":"4703:14:19"}],"id":1743,"name":"ParameterList","src":"4682:36:19"},{"attributes":{"parameters":[null]},"children":[],"id":1744,"name":"ParameterList","src":"4732:0:19"},{"children":[{"attributes":{"assignments":[1746]},"children":[{"attributes":{"constant":false,"name":"oldbuf","scope":1760,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1745,"name":"ElementaryTypeName","src":"4742:5:19"}],"id":1746,"name":"VariableDeclaration","src":"4742:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1740,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1747,"name":"Identifier","src":"4764:4:19"}],"id":1748,"name":"MemberAccess","src":"4764:8:19"}],"id":1749,"name":"VariableDeclarationStatement","src":"4742:30:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1738,"type":"function (struct Buffer.buffer memory,uint256) pure","value":"init"},"id":1750,"name":"Identifier","src":"4782:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1740,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1751,"name":"Identifier","src":"4787:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1742,"type":"uint256","value":"_capacity"},"id":1752,"name":"Identifier","src":"4793:9:19"}],"id":1753,"name":"FunctionCall","src":"4782:21:19"}],"id":1754,"name":"ExpressionStatement","src":"4782:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[1857,1884],"referencedDeclaration":1857,"type":"function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)","value":"append"},"id":1755,"name":"Identifier","src":"4813:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1740,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1756,"name":"Identifier","src":"4820:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1746,"type":"bytes memory","value":"oldbuf"},"id":1757,"name":"Identifier","src":"4826:6:19"}],"id":1758,"name":"FunctionCall","src":"4813:20:19"}],"id":1759,"name":"ExpressionStatement","src":"4813:20:19"}],"id":1760,"name":"Block","src":"4732:108:19"}],"id":1761,"name":"FunctionDefinition","src":"4667:173:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"max","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":1780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1762,"name":"ElementaryTypeName","src":"4859:4:19"}],"id":1763,"name":"VariableDeclaration","src":"4859:7:19"},{"attributes":{"constant":false,"name":"_b","scope":1780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1764,"name":"ElementaryTypeName","src":"4868:4:19"}],"id":1765,"name":"VariableDeclaration","src":"4868:7:19"}],"id":1766,"name":"ParameterList","src":"4858:18:19"},{"children":[{"attributes":{"constant":false,"name":"_max","scope":1780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1767,"name":"ElementaryTypeName","src":"4899:4:19"}],"id":1768,"name":"VariableDeclaration","src":"4899:9:19"}],"id":1769,"name":"ParameterList","src":"4898:11:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1763,"type":"uint256","value":"_a"},"id":1770,"name":"Identifier","src":"4924:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"uint256","value":"_b"},"id":1771,"name":"Identifier","src":"4929:2:19"}],"id":1772,"name":"BinaryOperation","src":"4924:7:19"},{"children":[{"attributes":{"functionReturnParameters":1769},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1763,"type":"uint256","value":"_a"},"id":1773,"name":"Identifier","src":"4954:2:19"}],"id":1774,"name":"Return","src":"4947:9:19"}],"id":1775,"name":"Block","src":"4933:34:19"}],"id":1776,"name":"IfStatement","src":"4920:47:19"},{"attributes":{"functionReturnParameters":1769},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"uint256","value":"_b"},"id":1777,"name":"Identifier","src":"4983:2:19"}],"id":1778,"name":"Return","src":"4976:9:19"}],"id":1779,"name":"Block","src":"4910:82:19"}],"id":1780,"name":"FunctionDefinition","src":"4846:146:19"},{"attributes":{"documentation":"@dev Appends a byte array to the end of the buffer. Resizes if doing so\n would exceed the capacity of the buffer.\n@param _buf The buffer to append to.\n@param _data The data to append.\n@return The original buffer.\n ","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"append","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1857,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1781,"name":"UserDefinedTypeName","src":"5295:6:19"}],"id":1782,"name":"VariableDeclaration","src":"5295:18:19"},{"attributes":{"constant":false,"name":"_data","scope":1857,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1783,"name":"ElementaryTypeName","src":"5315:5:19"}],"id":1784,"name":"VariableDeclaration","src":"5315:18:19"}],"id":1785,"name":"ParameterList","src":"5294:40:19"},{"children":[{"attributes":{"constant":false,"name":"_buffer","scope":1857,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1786,"name":"UserDefinedTypeName","src":"5358:6:19"}],"id":1787,"name":"VariableDeclaration","src":"5358:21:19"}],"id":1788,"name":"ParameterList","src":"5357:23:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1784,"type":"bytes memory","value":"_data"},"id":1789,"name":"Identifier","src":"5395:5:19"}],"id":1790,"name":"MemberAccess","src":"5395:12:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1791,"name":"Identifier","src":"5410:4:19"}],"id":1792,"name":"MemberAccess","src":"5410:8:19"}],"id":1793,"name":"MemberAccess","src":"5410:15:19"}],"id":1794,"name":"BinaryOperation","src":"5395:30:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1795,"name":"Identifier","src":"5428:4:19"}],"id":1796,"name":"MemberAccess","src":"5428:13:19"}],"id":1797,"name":"BinaryOperation","src":"5395:46:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1761,"type":"function (struct Buffer.buffer memory,uint256) pure","value":"resize"},"id":1798,"name":"Identifier","src":"5457:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1799,"name":"Identifier","src":"5464:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1780,"type":"function (uint256,uint256) pure returns (uint256)","value":"max"},"id":1800,"name":"Identifier","src":"5470:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1801,"name":"Identifier","src":"5474:4:19"}],"id":1802,"name":"MemberAccess","src":"5474:13:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1784,"type":"bytes memory","value":"_data"},"id":1803,"name":"Identifier","src":"5489:5:19"}],"id":1804,"name":"MemberAccess","src":"5489:12:19"}],"id":1805,"name":"FunctionCall","src":"5470:32:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1806,"name":"Literal","src":"5505:1:19"}],"id":1807,"name":"BinaryOperation","src":"5470:36:19"}],"id":1808,"name":"FunctionCall","src":"5457:50:19"}],"id":1809,"name":"ExpressionStatement","src":"5457:50:19"}],"id":1810,"name":"Block","src":"5443:75:19"}],"id":1811,"name":"IfStatement","src":"5391:127:19"},{"attributes":{"assignments":[1813],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":1856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1812,"name":"ElementaryTypeName","src":"5527:4:19"}],"id":1813,"name":"VariableDeclaration","src":"5527:9:19"}],"id":1814,"name":"VariableDeclarationStatement","src":"5527:9:19"},{"attributes":{"assignments":[1816],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":1856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1815,"name":"ElementaryTypeName","src":"5546:4:19"}],"id":1816,"name":"VariableDeclaration","src":"5546:8:19"}],"id":1817,"name":"VariableDeclarationStatement","src":"5546:8:19"},{"attributes":{"assignments":[1819]},"children":[{"attributes":{"constant":false,"name":"len","scope":1856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1818,"name":"ElementaryTypeName","src":"5564:4:19"}],"id":1819,"name":"VariableDeclaration","src":"5564:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1784,"type":"bytes memory","value":"_data"},"id":1820,"name":"Identifier","src":"5575:5:19"}],"id":1821,"name":"MemberAccess","src":"5575:12:19"}],"id":1822,"name":"VariableDeclarationStatement","src":"5564:23:19"},{"attributes":{"externalReferences":[{"_buf":{"declaration":1782,"isOffset":false,"isSlot":false,"src":"5640:4:19","valueSize":1}},{"dest":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"5769:4:19","valueSize":1}},{"src":{"declaration":1816,"isOffset":false,"isSlot":false,"src":"5970:3:19","valueSize":1}},{"_data":{"declaration":1784,"isOffset":false,"isSlot":false,"src":"5981:5:19","valueSize":1}},{"_data":{"declaration":1784,"isOffset":false,"isSlot":false,"src":"5925:5:19","valueSize":1}}],"operations":"{\n let bufptr := mload(_buf)\n let buflen := mload(bufptr)\n dest := add(add(bufptr, buflen), 32)\n mstore(bufptr, add(buflen, mload(_data)))\n src := add(_data, 32)\n}"},"children":[],"id":1823,"name":"InlineAssembly","src":"5597:404:19"},{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1819,"type":"uint256","value":"len"},"id":1824,"name":"Identifier","src":"6016:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1825,"name":"Literal","src":"6023:2:19"}],"id":1826,"name":"BinaryOperation","src":"6016:9:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1819,"type":"uint256","value":"len"},"id":1827,"name":"Identifier","src":"6027:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1828,"name":"Literal","src":"6034:2:19"}],"id":1829,"name":"Assignment","src":"6027:9:19"}],"id":1830,"name":"ExpressionStatement","src":"6027:9:19"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":1816,"isOffset":false,"isSlot":false,"src":"6140:3:19","valueSize":1}},{"dest":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"6128:4:19","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":1831,"name":"InlineAssembly","src":"6094:65:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"dest"},"id":1832,"name":"Identifier","src":"6172:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1833,"name":"Literal","src":"6180:2:19"}],"id":1834,"name":"Assignment","src":"6172:10:19"}],"id":1835,"name":"ExpressionStatement","src":"6172:10:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1816,"type":"uint256","value":"src"},"id":1836,"name":"Identifier","src":"6196:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1837,"name":"Literal","src":"6203:2:19"}],"id":1838,"name":"Assignment","src":"6196:9:19"}],"id":1839,"name":"ExpressionStatement","src":"6196:9:19"}],"id":1840,"name":"Block","src":"6038:178:19"}],"id":1841,"name":"ForStatement","src":"6010:206:19"},{"attributes":{"assignments":[1843]},"children":[{"attributes":{"constant":false,"name":"mask","scope":1856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1842,"name":"ElementaryTypeName","src":"6225:4:19"}],"id":1843,"name":"VariableDeclaration","src":"6225:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":1844,"name":"Literal","src":"6237:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1845,"name":"Literal","src":"6245:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1819,"type":"uint256","value":"len"},"id":1846,"name":"Identifier","src":"6250:3:19"}],"id":1847,"name":"BinaryOperation","src":"6245:8:19"}],"id":1848,"name":"TupleExpression","src":"6244:10:19"}],"id":1849,"name":"BinaryOperation","src":"6237:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1850,"name":"Literal","src":"6257:1:19"}],"id":1851,"name":"BinaryOperation","src":"6237:21:19"}],"id":1852,"name":"VariableDeclarationStatement","src":"6225:33:19"},{"attributes":{"externalReferences":[{"src":{"declaration":1816,"isOffset":false,"isSlot":false,"src":"6340:3:19","valueSize":1}},{"mask":{"declaration":1843,"isOffset":false,"isSlot":false,"src":"6350:4:19","valueSize":1}},{"dest":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"6427:4:19","valueSize":1}},{"dest":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"6395:4:19","valueSize":1}},{"mask":{"declaration":1843,"isOffset":false,"isSlot":false,"src":"6402:4:19","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":1853,"name":"InlineAssembly","src":"6292:173:19"},{"attributes":{"functionReturnParameters":1788},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1854,"name":"Identifier","src":"6481:4:19"}],"id":1855,"name":"Return","src":"6474:11:19"}],"id":1856,"name":"Block","src":"5381:1111:19"}],"id":1857,"name":"FunctionDefinition","src":"5279:1213:19"},{"attributes":{"documentation":" * @dev Appends a byte to the end of the buffer. Resizes if doing so would\nexceed the capacity of the buffer.\n@param _buf The buffer to append to.\n@param _data The data to append.\n@return The original buffer.\n ","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"append","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1884,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1858,"name":"UserDefinedTypeName","src":"6792:6:19"}],"id":1859,"name":"VariableDeclaration","src":"6792:18:19"},{"attributes":{"constant":false,"name":"_data","scope":1884,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1860,"name":"ElementaryTypeName","src":"6812:5:19"}],"id":1861,"name":"VariableDeclaration","src":"6812:11:19"}],"id":1862,"name":"ParameterList","src":"6791:33:19"},{"attributes":{"parameters":[null]},"children":[],"id":1863,"name":"ParameterList","src":"6839:0:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1859,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1864,"name":"Identifier","src":"6853:4:19"}],"id":1865,"name":"MemberAccess","src":"6853:8:19"}],"id":1866,"name":"MemberAccess","src":"6853:15:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1867,"name":"Literal","src":"6871:1:19"}],"id":1868,"name":"BinaryOperation","src":"6853:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1859,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1869,"name":"Identifier","src":"6875:4:19"}],"id":1870,"name":"MemberAccess","src":"6875:13:19"}],"id":1871,"name":"BinaryOperation","src":"6853:35:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1761,"type":"function (struct Buffer.buffer memory,uint256) pure","value":"resize"},"id":1872,"name":"Identifier","src":"6904:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1859,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1873,"name":"Identifier","src":"6911:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1859,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1874,"name":"Identifier","src":"6917:4:19"}],"id":1875,"name":"MemberAccess","src":"6917:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1876,"name":"Literal","src":"6933:1:19"}],"id":1877,"name":"BinaryOperation","src":"6917:17:19"}],"id":1878,"name":"FunctionCall","src":"6904:31:19"}],"id":1879,"name":"ExpressionStatement","src":"6904:31:19"}],"id":1880,"name":"Block","src":"6890:56:19"}],"id":1881,"name":"IfStatement","src":"6849:97:19"},{"attributes":{"externalReferences":[{"_buf":{"declaration":1859,"isOffset":false,"isSlot":false,"src":"6998:4:19","valueSize":1}},{"_data":{"declaration":1861,"isOffset":false,"isSlot":false,"src":"7262:5:19","valueSize":1}}],"operations":"{\n let bufptr := mload(_buf)\n let buflen := mload(bufptr)\n let dest := add(add(bufptr, buflen), 32)\n mstore8(dest, _data)\n mstore(bufptr, add(buflen, 1))\n}"},"children":[],"id":1882,"name":"InlineAssembly","src":"6955:390:19"}],"id":1883,"name":"Block","src":"6839:512:19"}],"id":1884,"name":"FunctionDefinition","src":"6776:575:19"},{"attributes":{"documentation":" * @dev Appends a byte to the end of the buffer. Resizes if doing so would\nexceed the capacity of the buffer.\n@param _buf The buffer to append to.\n@param _data The data to append.\n@return The original buffer.\n ","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"appendInt","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1928,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1885,"name":"UserDefinedTypeName","src":"7654:6:19"}],"id":1886,"name":"VariableDeclaration","src":"7654:18:19"},{"attributes":{"constant":false,"name":"_data","scope":1928,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1887,"name":"ElementaryTypeName","src":"7674:4:19"}],"id":1888,"name":"VariableDeclaration","src":"7674:10:19"},{"attributes":{"constant":false,"name":"_len","scope":1928,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1889,"name":"ElementaryTypeName","src":"7686:4:19"}],"id":1890,"name":"VariableDeclaration","src":"7686:9:19"}],"id":1891,"name":"ParameterList","src":"7653:43:19"},{"children":[{"attributes":{"constant":false,"name":"_buffer","scope":1928,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1892,"name":"UserDefinedTypeName","src":"7720:6:19"}],"id":1893,"name":"VariableDeclaration","src":"7720:21:19"}],"id":1894,"name":"ParameterList","src":"7719:23:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"_len"},"id":1895,"name":"Identifier","src":"7757:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1896,"name":"Identifier","src":"7764:4:19"}],"id":1897,"name":"MemberAccess","src":"7764:8:19"}],"id":1898,"name":"MemberAccess","src":"7764:15:19"}],"id":1899,"name":"BinaryOperation","src":"7757:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1900,"name":"Identifier","src":"7782:4:19"}],"id":1901,"name":"MemberAccess","src":"7782:13:19"}],"id":1902,"name":"BinaryOperation","src":"7757:38:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1761,"type":"function (struct Buffer.buffer memory,uint256) pure","value":"resize"},"id":1903,"name":"Identifier","src":"7811:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1904,"name":"Identifier","src":"7818:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1780,"type":"function (uint256,uint256) pure returns (uint256)","value":"max"},"id":1905,"name":"Identifier","src":"7824:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1906,"name":"Identifier","src":"7828:4:19"}],"id":1907,"name":"MemberAccess","src":"7828:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"_len"},"id":1908,"name":"Identifier","src":"7843:4:19"}],"id":1909,"name":"FunctionCall","src":"7824:24:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1910,"name":"Literal","src":"7851:1:19"}],"id":1911,"name":"BinaryOperation","src":"7824:28:19"}],"id":1912,"name":"FunctionCall","src":"7811:42:19"}],"id":1913,"name":"ExpressionStatement","src":"7811:42:19"}],"id":1914,"name":"Block","src":"7797:67:19"}],"id":1915,"name":"IfStatement","src":"7753:111:19"},{"attributes":{"assignments":[1917]},"children":[{"attributes":{"constant":false,"name":"mask","scope":1927,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1916,"name":"ElementaryTypeName","src":"7873:4:19"}],"id":1917,"name":"VariableDeclaration","src":"7873:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":1918,"name":"Literal","src":"7885:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"_len"},"id":1919,"name":"Identifier","src":"7892:4:19"}],"id":1920,"name":"BinaryOperation","src":"7885:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1921,"name":"Literal","src":"7899:1:19"}],"id":1922,"name":"BinaryOperation","src":"7885:15:19"}],"id":1923,"name":"VariableDeclarationStatement","src":"7873:27:19"},{"attributes":{"externalReferences":[{"_buf":{"declaration":1886,"isOffset":false,"isSlot":false,"src":"7953:4:19","valueSize":1}},{"mask":{"declaration":1917,"isOffset":false,"isSlot":false,"src":"8248:4:19","valueSize":1}},{"_len":{"declaration":1890,"isOffset":false,"isSlot":false,"src":"8119:4:19","valueSize":1}},{"_len":{"declaration":1890,"isOffset":false,"isSlot":false,"src":"8303:4:19","valueSize":1}},{"_data":{"declaration":1888,"isOffset":false,"isSlot":false,"src":"8256:5:19","valueSize":1}}],"operations":"{\n let bufptr := mload(_buf)\n let buflen := mload(bufptr)\n let dest := add(add(bufptr, buflen), _len)\n mstore(dest, or(and(mload(dest), not(mask)), _data))\n mstore(bufptr, add(buflen, _len))\n}"},"children":[],"id":1924,"name":"InlineAssembly","src":"7910:433:19"},{"attributes":{"functionReturnParameters":1894},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1925,"name":"Identifier","src":"8359:4:19"}],"id":1926,"name":"Return","src":"8352:11:19"}],"id":1927,"name":"Block","src":"7743:627:19"}],"id":1928,"name":"FunctionDefinition","src":"7635:735:19"}],"id":1929,"name":"ContractDefinition","src":"4136:4236:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[2229],"name":"CBOR","scope":7854},"children":[{"children":[{"attributes":{"contractScope":null,"name":"Buffer","referencedDeclaration":1929,"type":"library Buffer"},"id":1930,"name":"UserDefinedTypeName","src":"8400:6:19"},{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1931,"name":"UserDefinedTypeName","src":"8411:13:19"}],"id":1932,"name":"UsingForDirective","src":"8394:31:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_INT","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1933,"name":"ElementaryTypeName","src":"8431:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1934,"name":"Literal","src":"8471:1:19"}],"id":1935,"name":"VariableDeclaration","src":"8431:41:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_MAP","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1936,"name":"ElementaryTypeName","src":"8478:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":1937,"name":"Literal","src":"8518:1:19"}],"id":1938,"name":"VariableDeclaration","src":"8478:41:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_BYTES","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1939,"name":"ElementaryTypeName","src":"8525:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1940,"name":"Literal","src":"8567:1:19"}],"id":1941,"name":"VariableDeclaration","src":"8525:43:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_ARRAY","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1942,"name":"ElementaryTypeName","src":"8574:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1943,"name":"Literal","src":"8616:1:19"}],"id":1944,"name":"VariableDeclaration","src":"8574:43:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_STRING","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1945,"name":"ElementaryTypeName","src":"8623:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1946,"name":"Literal","src":"8666:1:19"}],"id":1947,"name":"VariableDeclaration","src":"8623:44:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_NEGATIVE_INT","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1948,"name":"ElementaryTypeName","src":"8673:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1949,"name":"Literal","src":"8722:1:19"}],"id":1950,"name":"VariableDeclaration","src":"8673:50:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_CONTENT_FREE","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1951,"name":"ElementaryTypeName","src":"8729:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":1952,"name":"Literal","src":"8778:1:19"}],"id":1953,"name":"VariableDeclaration","src":"8729:50:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeType","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2081,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1954,"name":"UserDefinedTypeName","src":"8806:13:19"}],"id":1955,"name":"VariableDeclaration","src":"8806:25:19"},{"attributes":{"constant":false,"name":"_major","scope":2081,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1956,"name":"ElementaryTypeName","src":"8833:5:19"}],"id":1957,"name":"VariableDeclaration","src":"8833:12:19"},{"attributes":{"constant":false,"name":"_value","scope":2081,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1958,"name":"ElementaryTypeName","src":"8847:4:19"}],"id":1959,"name":"VariableDeclaration","src":"8847:11:19"}],"id":1960,"name":"ParameterList","src":"8805:54:19"},{"attributes":{"parameters":[null]},"children":[],"id":1961,"name":"ParameterList","src":"8873:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":1962,"name":"Identifier","src":"8887:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 23","value":"23"},"id":1963,"name":"Literal","src":"8897:2:19"}],"id":1964,"name":"BinaryOperation","src":"8887:12:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1965,"name":"Identifier","src":"8915:4:19"}],"id":1967,"name":"MemberAccess","src":"8915:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1968,"name":"ElementaryTypeNameExpression","src":"8927:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":1969,"name":"Identifier","src":"8934:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":1970,"name":"Literal","src":"8944:1:19"}],"id":1971,"name":"BinaryOperation","src":"8934:11:19"}],"id":1972,"name":"TupleExpression","src":"8933:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":1973,"name":"Identifier","src":"8949:6:19"}],"id":1974,"name":"BinaryOperation","src":"8933:22:19"}],"id":1975,"name":"FunctionCall","src":"8927:29:19"}],"id":1976,"name":"FunctionCall","src":"8915:42:19"}],"id":1977,"name":"ExpressionStatement","src":"8915:42:19"}],"id":1978,"name":"Block","src":"8901:67:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":1979,"name":"Identifier","src":"8978:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":1980,"name":"Literal","src":"8988:4:19"}],"id":1981,"name":"BinaryOperation","src":"8978:14:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1982,"name":"Identifier","src":"9008:4:19"}],"id":1984,"name":"MemberAccess","src":"9008:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1985,"name":"ElementaryTypeNameExpression","src":"9020:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":1986,"name":"Identifier","src":"9027:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":1987,"name":"Literal","src":"9037:1:19"}],"id":1988,"name":"BinaryOperation","src":"9027:11:19"}],"id":1989,"name":"TupleExpression","src":"9026:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":1990,"name":"Literal","src":"9042:2:19"}],"id":1991,"name":"BinaryOperation","src":"9026:18:19"}],"id":1992,"name":"FunctionCall","src":"9020:25:19"}],"id":1993,"name":"FunctionCall","src":"9008:38:19"}],"id":1994,"name":"ExpressionStatement","src":"9008:38:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"appendInt","referencedDeclaration":1928,"type":"function (struct Buffer.buffer memory,uint256,uint256) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1995,"name":"Identifier","src":"9060:4:19"}],"id":1997,"name":"MemberAccess","src":"9060:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":1998,"name":"Identifier","src":"9075:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1999,"name":"Literal","src":"9083:1:19"}],"id":2000,"name":"FunctionCall","src":"9060:25:19"}],"id":2001,"name":"ExpressionStatement","src":"9060:25:19"}],"id":2002,"name":"Block","src":"8994:102:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2003,"name":"Identifier","src":"9106:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307846464646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xFFFF"},"id":2004,"name":"Literal","src":"9116:6:19"}],"id":2005,"name":"BinaryOperation","src":"9106:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2006,"name":"Identifier","src":"9138:4:19"}],"id":2008,"name":"MemberAccess","src":"9138:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2009,"name":"ElementaryTypeNameExpression","src":"9150:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":2010,"name":"Identifier","src":"9157:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":2011,"name":"Literal","src":"9167:1:19"}],"id":2012,"name":"BinaryOperation","src":"9157:11:19"}],"id":2013,"name":"TupleExpression","src":"9156:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3235","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 25","value":"25"},"id":2014,"name":"Literal","src":"9172:2:19"}],"id":2015,"name":"BinaryOperation","src":"9156:18:19"}],"id":2016,"name":"FunctionCall","src":"9150:25:19"}],"id":2017,"name":"FunctionCall","src":"9138:38:19"}],"id":2018,"name":"ExpressionStatement","src":"9138:38:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"appendInt","referencedDeclaration":1928,"type":"function (struct Buffer.buffer memory,uint256,uint256) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2019,"name":"Identifier","src":"9190:4:19"}],"id":2021,"name":"MemberAccess","src":"9190:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2022,"name":"Identifier","src":"9205:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2023,"name":"Literal","src":"9213:1:19"}],"id":2024,"name":"FunctionCall","src":"9190:25:19"}],"id":2025,"name":"ExpressionStatement","src":"9190:25:19"}],"id":2026,"name":"Block","src":"9124:102:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2027,"name":"Identifier","src":"9236:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646464646464646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xFFFFFFFF"},"id":2028,"name":"Literal","src":"9246:10:19"}],"id":2029,"name":"BinaryOperation","src":"9236:20:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2030,"name":"Identifier","src":"9272:4:19"}],"id":2032,"name":"MemberAccess","src":"9272:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2033,"name":"ElementaryTypeNameExpression","src":"9284:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":2034,"name":"Identifier","src":"9291:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":2035,"name":"Literal","src":"9301:1:19"}],"id":2036,"name":"BinaryOperation","src":"9291:11:19"}],"id":2037,"name":"TupleExpression","src":"9290:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3236","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 26","value":"26"},"id":2038,"name":"Literal","src":"9306:2:19"}],"id":2039,"name":"BinaryOperation","src":"9290:18:19"}],"id":2040,"name":"FunctionCall","src":"9284:25:19"}],"id":2041,"name":"FunctionCall","src":"9272:38:19"}],"id":2042,"name":"ExpressionStatement","src":"9272:38:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"appendInt","referencedDeclaration":1928,"type":"function (struct Buffer.buffer memory,uint256,uint256) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2043,"name":"Identifier","src":"9324:4:19"}],"id":2045,"name":"MemberAccess","src":"9324:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2046,"name":"Identifier","src":"9339:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":2047,"name":"Literal","src":"9347:1:19"}],"id":2048,"name":"FunctionCall","src":"9324:25:19"}],"id":2049,"name":"ExpressionStatement","src":"9324:25:19"}],"id":2050,"name":"Block","src":"9258:102:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2051,"name":"Identifier","src":"9370:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307846464646464646464646464646464646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xFFFFFFFFFFFFFFFF"},"id":2052,"name":"Literal","src":"9380:18:19"}],"id":2053,"name":"BinaryOperation","src":"9370:28:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2054,"name":"Identifier","src":"9414:4:19"}],"id":2056,"name":"MemberAccess","src":"9414:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2057,"name":"ElementaryTypeNameExpression","src":"9426:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":2058,"name":"Identifier","src":"9433:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":2059,"name":"Literal","src":"9443:1:19"}],"id":2060,"name":"BinaryOperation","src":"9433:11:19"}],"id":2061,"name":"TupleExpression","src":"9432:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":2062,"name":"Literal","src":"9448:2:19"}],"id":2063,"name":"BinaryOperation","src":"9432:18:19"}],"id":2064,"name":"FunctionCall","src":"9426:25:19"}],"id":2065,"name":"FunctionCall","src":"9414:38:19"}],"id":2066,"name":"ExpressionStatement","src":"9414:38:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"appendInt","referencedDeclaration":1928,"type":"function (struct Buffer.buffer memory,uint256,uint256) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2067,"name":"Identifier","src":"9466:4:19"}],"id":2069,"name":"MemberAccess","src":"9466:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2070,"name":"Identifier","src":"9481:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":2071,"name":"Literal","src":"9489:1:19"}],"id":2072,"name":"FunctionCall","src":"9466:25:19"}],"id":2073,"name":"ExpressionStatement","src":"9466:25:19"}],"id":2074,"name":"Block","src":"9400:102:19"}],"id":2075,"name":"IfStatement","src":"9366:136:19"}],"id":2076,"name":"IfStatement","src":"9232:270:19"}],"id":2077,"name":"IfStatement","src":"9102:400:19"}],"id":2078,"name":"IfStatement","src":"8974:528:19"}],"id":2079,"name":"IfStatement","src":"8883:619:19"}],"id":2080,"name":"Block","src":"8873:635:19"}],"id":2081,"name":"FunctionDefinition","src":"8786:722:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeIndefiniteLengthType","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2102,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2082,"name":"UserDefinedTypeName","src":"9550:13:19"}],"id":2083,"name":"VariableDeclaration","src":"9550:25:19"},{"attributes":{"constant":false,"name":"_major","scope":2102,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2084,"name":"ElementaryTypeName","src":"9577:5:19"}],"id":2085,"name":"VariableDeclaration","src":"9577:12:19"}],"id":2086,"name":"ParameterList","src":"9549:41:19"},{"attributes":{"parameters":[null]},"children":[],"id":2087,"name":"ParameterList","src":"9604:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2083,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2088,"name":"Identifier","src":"9614:4:19"}],"id":2090,"name":"MemberAccess","src":"9614:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2091,"name":"ElementaryTypeNameExpression","src":"9626:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2085,"type":"uint8","value":"_major"},"id":2092,"name":"Identifier","src":"9633:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":2093,"name":"Literal","src":"9643:1:19"}],"id":2094,"name":"BinaryOperation","src":"9633:11:19"}],"id":2095,"name":"TupleExpression","src":"9632:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2096,"name":"Literal","src":"9648:2:19"}],"id":2097,"name":"BinaryOperation","src":"9632:18:19"}],"id":2098,"name":"FunctionCall","src":"9626:25:19"}],"id":2099,"name":"FunctionCall","src":"9614:38:19"}],"id":2100,"name":"ExpressionStatement","src":"9614:38:19"}],"id":2101,"name":"Block","src":"9604:55:19"}],"id":2102,"name":"FunctionDefinition","src":"9514:145:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeUInt","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2116,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2103,"name":"UserDefinedTypeName","src":"9685:13:19"}],"id":2104,"name":"VariableDeclaration","src":"9685:25:19"},{"attributes":{"constant":false,"name":"_value","scope":2116,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2105,"name":"ElementaryTypeName","src":"9712:4:19"}],"id":2106,"name":"VariableDeclaration","src":"9712:11:19"}],"id":2107,"name":"ParameterList","src":"9684:40:19"},{"attributes":{"parameters":[null]},"children":[],"id":2108,"name":"ParameterList","src":"9739:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2109,"name":"Identifier","src":"9749:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2110,"name":"Identifier","src":"9760:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1935,"type":"uint8","value":"MAJOR_TYPE_INT"},"id":2111,"name":"Identifier","src":"9766:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2106,"type":"uint256","value":"_value"},"id":2112,"name":"Identifier","src":"9782:6:19"}],"id":2113,"name":"FunctionCall","src":"9749:40:19"}],"id":2114,"name":"ExpressionStatement","src":"9749:40:19"}],"id":2115,"name":"Block","src":"9739:57:19"}],"id":2116,"name":"FunctionDefinition","src":"9665:131:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeInt","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2149,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2117,"name":"UserDefinedTypeName","src":"9821:13:19"}],"id":2118,"name":"VariableDeclaration","src":"9821:25:19"},{"attributes":{"constant":false,"name":"_value","scope":2149,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":2119,"name":"ElementaryTypeName","src":"9848:3:19"}],"id":2120,"name":"VariableDeclaration","src":"9848:10:19"}],"id":2121,"name":"ParameterList","src":"9820:39:19"},{"attributes":{"parameters":[null]},"children":[],"id":2122,"name":"ParameterList","src":"9874:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"int256","value":"_value"},"id":2123,"name":"Identifier","src":"9888:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2124,"name":"Literal","src":"9898:1:19"}],"id":2125,"name":"BinaryOperation","src":"9888:11:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2126,"name":"Identifier","src":"9915:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2127,"name":"Identifier","src":"9926:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1935,"type":"uint8","value":"MAJOR_TYPE_INT"},"id":2128,"name":"Identifier","src":"9932:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":2129,"name":"ElementaryTypeNameExpression","src":"9948:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"int256","value":"_value"},"id":2130,"name":"Identifier","src":"9953:6:19"}],"id":2131,"name":"FunctionCall","src":"9948:12:19"}],"id":2132,"name":"FunctionCall","src":"9915:46:19"}],"id":2133,"name":"ExpressionStatement","src":"9915:46:19"}],"id":2134,"name":"Block","src":"9901:71:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2135,"name":"Identifier","src":"9992:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2136,"name":"Identifier","src":"10003:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1950,"type":"uint8","value":"MAJOR_TYPE_NEGATIVE_INT"},"id":2137,"name":"Identifier","src":"10009:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":2138,"name":"ElementaryTypeNameExpression","src":"10034:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2139,"name":"Literal","src":"10040:1:19"}],"id":2140,"name":"UnaryOperation","src":"10039:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"int256","value":"_value"},"id":2141,"name":"Identifier","src":"10044:6:19"}],"id":2142,"name":"BinaryOperation","src":"10039:11:19"}],"id":2143,"name":"FunctionCall","src":"10034:17:19"}],"id":2144,"name":"FunctionCall","src":"9992:60:19"}],"id":2145,"name":"ExpressionStatement","src":"9992:60:19"}],"id":2146,"name":"Block","src":"9978:85:19"}],"id":2147,"name":"IfStatement","src":"9884:179:19"}],"id":2148,"name":"Block","src":"9874:195:19"}],"id":2149,"name":"FunctionDefinition","src":"9802:267:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeBytes","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2170,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2150,"name":"UserDefinedTypeName","src":"10096:13:19"}],"id":2151,"name":"VariableDeclaration","src":"10096:25:19"},{"attributes":{"constant":false,"name":"_value","scope":2170,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2152,"name":"ElementaryTypeName","src":"10123:5:19"}],"id":2153,"name":"VariableDeclaration","src":"10123:19:19"}],"id":2154,"name":"ParameterList","src":"10095:48:19"},{"attributes":{"parameters":[null]},"children":[],"id":2155,"name":"ParameterList","src":"10158:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2156,"name":"Identifier","src":"10168:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2151,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2157,"name":"Identifier","src":"10179:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1941,"type":"uint8","value":"MAJOR_TYPE_BYTES"},"id":2158,"name":"Identifier","src":"10185:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2153,"type":"bytes memory","value":"_value"},"id":2159,"name":"Identifier","src":"10203:6:19"}],"id":2160,"name":"MemberAccess","src":"10203:13:19"}],"id":2161,"name":"FunctionCall","src":"10168:49:19"}],"id":2162,"name":"ExpressionStatement","src":"10168:49:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1857,"type":"function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2151,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2163,"name":"Identifier","src":"10227:4:19"}],"id":2165,"name":"MemberAccess","src":"10227:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2153,"type":"bytes memory","value":"_value"},"id":2166,"name":"Identifier","src":"10239:6:19"}],"id":2167,"name":"FunctionCall","src":"10227:19:19"}],"id":2168,"name":"ExpressionStatement","src":"10227:19:19"}],"id":2169,"name":"Block","src":"10158:95:19"}],"id":2170,"name":"FunctionDefinition","src":"10075:178:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeString","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2195,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2171,"name":"UserDefinedTypeName","src":"10281:13:19"}],"id":2172,"name":"VariableDeclaration","src":"10281:25:19"},{"attributes":{"constant":false,"name":"_value","scope":2195,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2173,"name":"ElementaryTypeName","src":"10308:6:19"}],"id":2174,"name":"VariableDeclaration","src":"10308:20:19"}],"id":2175,"name":"ParameterList","src":"10280:49:19"},{"attributes":{"parameters":[null]},"children":[],"id":2176,"name":"ParameterList","src":"10344:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2177,"name":"Identifier","src":"10354:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2172,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2178,"name":"Identifier","src":"10365:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"uint8","value":"MAJOR_TYPE_STRING"},"id":2179,"name":"Identifier","src":"10371:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2180,"name":"ElementaryTypeNameExpression","src":"10390:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"string memory","value":"_value"},"id":2181,"name":"Identifier","src":"10396:6:19"}],"id":2182,"name":"FunctionCall","src":"10390:13:19"}],"id":2183,"name":"MemberAccess","src":"10390:20:19"}],"id":2184,"name":"FunctionCall","src":"10354:57:19"}],"id":2185,"name":"ExpressionStatement","src":"10354:57:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1857,"type":"function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2172,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2186,"name":"Identifier","src":"10421:4:19"}],"id":2188,"name":"MemberAccess","src":"10421:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2189,"name":"ElementaryTypeNameExpression","src":"10433:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"string memory","value":"_value"},"id":2190,"name":"Identifier","src":"10439:6:19"}],"id":2191,"name":"FunctionCall","src":"10433:13:19"}],"id":2192,"name":"FunctionCall","src":"10421:26:19"}],"id":2193,"name":"ExpressionStatement","src":"10421:26:19"}],"id":2194,"name":"Block","src":"10344:110:19"}],"id":2195,"name":"FunctionDefinition","src":"10259:195:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startArray","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2206,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2196,"name":"UserDefinedTypeName","src":"10480:13:19"}],"id":2197,"name":"VariableDeclaration","src":"10480:25:19"}],"id":2198,"name":"ParameterList","src":"10479:27:19"},{"attributes":{"parameters":[null]},"children":[],"id":2199,"name":"ParameterList","src":"10521:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"function (struct Buffer.buffer memory,uint8) pure","value":"encodeIndefiniteLengthType"},"id":2200,"name":"Identifier","src":"10531:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2197,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2201,"name":"Identifier","src":"10558:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1944,"type":"uint8","value":"MAJOR_TYPE_ARRAY"},"id":2202,"name":"Identifier","src":"10564:16:19"}],"id":2203,"name":"FunctionCall","src":"10531:50:19"}],"id":2204,"name":"ExpressionStatement","src":"10531:50:19"}],"id":2205,"name":"Block","src":"10521:67:19"}],"id":2206,"name":"FunctionDefinition","src":"10460:128:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startMap","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2217,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2207,"name":"UserDefinedTypeName","src":"10612:13:19"}],"id":2208,"name":"VariableDeclaration","src":"10612:25:19"}],"id":2209,"name":"ParameterList","src":"10611:27:19"},{"attributes":{"parameters":[null]},"children":[],"id":2210,"name":"ParameterList","src":"10653:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"function (struct Buffer.buffer memory,uint8) pure","value":"encodeIndefiniteLengthType"},"id":2211,"name":"Identifier","src":"10663:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2208,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2212,"name":"Identifier","src":"10690:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1938,"type":"uint8","value":"MAJOR_TYPE_MAP"},"id":2213,"name":"Identifier","src":"10696:14:19"}],"id":2214,"name":"FunctionCall","src":"10663:48:19"}],"id":2215,"name":"ExpressionStatement","src":"10663:48:19"}],"id":2216,"name":"Block","src":"10653:65:19"}],"id":2217,"name":"FunctionDefinition","src":"10594:124:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endSequence","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2228,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2218,"name":"UserDefinedTypeName","src":"10745:13:19"}],"id":2219,"name":"VariableDeclaration","src":"10745:25:19"}],"id":2220,"name":"ParameterList","src":"10744:27:19"},{"attributes":{"parameters":[null]},"children":[],"id":2221,"name":"ParameterList","src":"10786:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"function (struct Buffer.buffer memory,uint8) pure","value":"encodeIndefiniteLengthType"},"id":2222,"name":"Identifier","src":"10796:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2219,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2223,"name":"Identifier","src":"10823:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1953,"type":"uint8","value":"MAJOR_TYPE_CONTENT_FREE"},"id":2224,"name":"Identifier","src":"10829:23:19"}],"id":2225,"name":"FunctionCall","src":"10796:57:19"}],"id":2226,"name":"ExpressionStatement","src":"10796:57:19"}],"id":2227,"name":"Block","src":"10786:74:19"}],"id":2228,"name":"FunctionDefinition","src":"10724:136:19"}],"id":2229,"name":"ContractDefinition","src":"8374:2488:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[7853],"name":"usingOraclize","scope":7854},"children":[{"children":[{"attributes":{"contractScope":null,"name":"CBOR","referencedDeclaration":2229,"type":"library CBOR"},"id":2230,"name":"UserDefinedTypeName","src":"10930:4:19"},{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2231,"name":"UserDefinedTypeName","src":"10939:13:19"}],"id":2232,"name":"UsingForDirective","src":"10924:29:19"},{"attributes":{"constant":false,"name":"oraclize","scope":7853,"stateVariable":true,"storageLocation":"default","type":"contract OraclizeI","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"OraclizeI","referencedDeclaration":1692,"type":"contract OraclizeI"},"id":2233,"name":"UserDefinedTypeName","src":"10959:9:19"}],"id":2234,"name":"VariableDeclaration","src":"10959:18:19"},{"attributes":{"constant":false,"name":"OAR","scope":7853,"stateVariable":true,"storageLocation":"default","type":"contract OraclizeAddrResolverI","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"OraclizeAddrResolverI","referencedDeclaration":1698,"type":"contract OraclizeAddrResolverI"},"id":2235,"name":"UserDefinedTypeName","src":"10983:21:19"}],"id":2236,"name":"VariableDeclaration","src":"10983:25:19"},{"attributes":{"constant":true,"name":"day","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2237,"name":"ElementaryTypeName","src":"11015:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 86400"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 3600"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2238,"name":"Literal","src":"11035:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2239,"name":"Literal","src":"11040:2:19"}],"id":2240,"name":"BinaryOperation","src":"11035:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":2241,"name":"Literal","src":"11045:2:19"}],"id":2242,"name":"BinaryOperation","src":"11035:12:19"}],"id":2243,"name":"VariableDeclaration","src":"11015:32:19"},{"attributes":{"constant":true,"name":"week","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2244,"name":"ElementaryTypeName","src":"11053:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 604800"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 86400"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 3600"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2245,"name":"Literal","src":"11074:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2246,"name":"Literal","src":"11079:2:19"}],"id":2247,"name":"BinaryOperation","src":"11074:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":2248,"name":"Literal","src":"11084:2:19"}],"id":2249,"name":"BinaryOperation","src":"11074:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":2250,"name":"Literal","src":"11089:1:19"}],"id":2251,"name":"BinaryOperation","src":"11074:16:19"}],"id":2252,"name":"VariableDeclaration","src":"11053:37:19"},{"attributes":{"constant":true,"name":"month","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2253,"name":"ElementaryTypeName","src":"11096:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_2592000_by_1","typeString":"int_const 2592000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 2592000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 86400"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 3600"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2254,"name":"Literal","src":"11118:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2255,"name":"Literal","src":"11123:2:19"}],"id":2256,"name":"BinaryOperation","src":"11118:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":2257,"name":"Literal","src":"11128:2:19"}],"id":2258,"name":"BinaryOperation","src":"11118:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 30","value":"30"},"id":2259,"name":"Literal","src":"11133:2:19"}],"id":2260,"name":"BinaryOperation","src":"11118:17:19"}],"id":2261,"name":"VariableDeclaration","src":"11096:39:19"},{"attributes":{"constant":true,"name":"proofType_NONE","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2262,"name":"ElementaryTypeName","src":"11142:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0x00"},"id":2263,"name":"Literal","src":"11173:4:19"}],"id":2264,"name":"VariableDeclaration","src":"11142:35:19"},{"attributes":{"constant":true,"name":"proofType_Ledger","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2265,"name":"ElementaryTypeName","src":"11183:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":2266,"name":"Literal","src":"11216:4:19"}],"id":2267,"name":"VariableDeclaration","src":"11183:37:19"},{"attributes":{"constant":true,"name":"proofType_Native","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2268,"name":"ElementaryTypeName","src":"11226:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":2269,"name":"Literal","src":"11259:4:19"}],"id":2270,"name":"VariableDeclaration","src":"11226:37:19"},{"attributes":{"constant":true,"name":"proofStorage_IPFS","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2271,"name":"ElementaryTypeName","src":"11269:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2272,"name":"Literal","src":"11303:4:19"}],"id":2273,"name":"VariableDeclaration","src":"11269:38:19"},{"attributes":{"constant":true,"name":"proofType_Android","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2274,"name":"ElementaryTypeName","src":"11313:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783430","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"0x40"},"id":2275,"name":"Literal","src":"11347:4:19"}],"id":2276,"name":"VariableDeclaration","src":"11313:38:19"},{"attributes":{"constant":true,"name":"proofType_TLSNotary","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2277,"name":"ElementaryTypeName","src":"11357:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"0x10"},"id":2278,"name":"Literal","src":"11393:4:19"}],"id":2279,"name":"VariableDeclaration","src":"11357:40:19"},{"attributes":{"constant":false,"name":"oraclize_network_name","scope":7853,"stateVariable":true,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2280,"name":"ElementaryTypeName","src":"11404:6:19"}],"id":2281,"name":"VariableDeclaration","src":"11404:28:19"},{"attributes":{"constant":true,"name":"networkID_auto","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2282,"name":"ElementaryTypeName","src":"11438:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2283,"name":"Literal","src":"11470:1:19"}],"id":2284,"name":"VariableDeclaration","src":"11438:33:19"},{"attributes":{"constant":true,"name":"networkID_morden","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2285,"name":"ElementaryTypeName","src":"11477:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2286,"name":"Literal","src":"11511:1:19"}],"id":2287,"name":"VariableDeclaration","src":"11477:35:19"},{"attributes":{"constant":true,"name":"networkID_mainnet","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2288,"name":"ElementaryTypeName","src":"11518:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2289,"name":"Literal","src":"11553:1:19"}],"id":2290,"name":"VariableDeclaration","src":"11518:36:19"},{"attributes":{"constant":true,"name":"networkID_testnet","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2291,"name":"ElementaryTypeName","src":"11560:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2292,"name":"Literal","src":"11595:1:19"}],"id":2293,"name":"VariableDeclaration","src":"11560:36:19"},{"attributes":{"constant":true,"name":"networkID_consensys","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2294,"name":"ElementaryTypeName","src":"11602:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"313631","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 161","value":"161"},"id":2295,"name":"Literal","src":"11639:3:19"}],"id":2296,"name":"VariableDeclaration","src":"11602:40:19"},{"attributes":{"constant":false,"name":"oraclize_randomDS_args","scope":7853,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes32)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes32)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2297,"name":"ElementaryTypeName","src":"11657:7:19"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":2298,"name":"ElementaryTypeName","src":"11668:7:19"}],"id":2299,"name":"Mapping","src":"11649:27:19"}],"id":2300,"name":"VariableDeclaration","src":"11649:50:19"},{"attributes":{"constant":false,"name":"oraclize_randomDS_sessionKeysHashVerified","scope":7853,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bool)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bool)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2301,"name":"ElementaryTypeName","src":"11713:7:19"},{"attributes":{"name":"bool","type":"bool"},"id":2302,"name":"ElementaryTypeName","src":"11724:4:19"}],"id":2303,"name":"Mapping","src":"11705:24:19"}],"id":2304,"name":"VariableDeclaration","src":"11705:66:19"},{"attributes":{"documentation":null,"name":"oraclizeAPI","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2305,"name":"ParameterList","src":"11799:0:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_OraclizeAddrResolverI_$1698","typeString":"contract OraclizeAddrResolverI"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2306,"name":"ElementaryTypeNameExpression","src":"11814:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2307,"name":"Identifier","src":"11822:3:19"}],"id":2308,"name":"FunctionCall","src":"11814:12:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2309,"name":"ElementaryTypeNameExpression","src":"11830:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2310,"name":"Literal","src":"11838:1:19"}],"id":2311,"name":"FunctionCall","src":"11830:10:19"}],"id":2312,"name":"BinaryOperation","src":"11814:26:19"}],"id":2313,"name":"TupleExpression","src":"11813:28:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2314,"name":"Identifier","src":"11846:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_OraclizeAddrResolverI_$1698","typeString":"contract OraclizeAddrResolverI"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2315,"name":"ElementaryTypeNameExpression","src":"11858:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2316,"name":"Identifier","src":"11866:3:19"}],"id":2317,"name":"FunctionCall","src":"11858:12:19"}],"id":2318,"name":"FunctionCall","src":"11846:25:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2319,"name":"Literal","src":"11875:1:19"}],"id":2320,"name":"BinaryOperation","src":"11846:30:19"}],"id":2321,"name":"TupleExpression","src":"11845:32:19"}],"id":2322,"name":"BinaryOperation","src":"11813:64:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"overloadedDeclarations":[2414,2580],"referencedDeclaration":2414,"type":"function (uint8) returns (bool)","value":"oraclize_setNetwork"},"id":2323,"name":"Identifier","src":"11893:19:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2284,"type":"uint8","value":"networkID_auto"},"id":2324,"name":"Identifier","src":"11913:14:19"}],"id":2325,"name":"FunctionCall","src":"11893:35:19"}],"id":2326,"name":"ExpressionStatement","src":"11893:35:19"}],"id":2327,"name":"Block","src":"11879:60:19"}],"id":2328,"name":"IfStatement","src":"11809:130:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_OraclizeI_$1692","typeString":"contract OraclizeI"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2329,"name":"ElementaryTypeNameExpression","src":"11952:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2330,"name":"Identifier","src":"11960:8:19"}],"id":2331,"name":"FunctionCall","src":"11952:17:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getAddress","referencedDeclaration":1697,"type":"function () external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2332,"name":"Identifier","src":"11973:3:19"}],"id":2333,"name":"MemberAccess","src":"11973:14:19"}],"id":2334,"name":"FunctionCall","src":"11973:16:19"}],"id":2335,"name":"BinaryOperation","src":"11952:37:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2336,"name":"Identifier","src":"12005:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1692,"type":"type(contract OraclizeI)","value":"OraclizeI"},"id":2337,"name":"Identifier","src":"12016:9:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getAddress","referencedDeclaration":1697,"type":"function () external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2338,"name":"Identifier","src":"12026:3:19"}],"id":2339,"name":"MemberAccess","src":"12026:14:19"}],"id":2340,"name":"FunctionCall","src":"12026:16:19"}],"id":2341,"name":"FunctionCall","src":"12016:27:19"}],"id":2342,"name":"Assignment","src":"12005:38:19"}],"id":2343,"name":"ExpressionStatement","src":"12005:38:19"}],"id":2344,"name":"Block","src":"11991:63:19"}],"id":2345,"name":"IfStatement","src":"11948:106:19"},{"id":2346,"name":"PlaceholderStatement","src":"12063:1:19"}],"id":2347,"name":"Block","src":"11799:272:19"}],"id":2348,"name":"ModifierDefinition","src":"11778:293:19"},{"attributes":{"documentation":null,"name":"oraclize_randomDS_proofVerify","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_queryId","scope":2401,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2349,"name":"ElementaryTypeName","src":"12116:7:19"}],"id":2350,"name":"VariableDeclaration","src":"12116:16:19"},{"attributes":{"constant":false,"name":"_result","scope":2401,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2351,"name":"ElementaryTypeName","src":"12134:6:19"}],"id":2352,"name":"VariableDeclaration","src":"12134:21:19"},{"attributes":{"constant":false,"name":"_proof","scope":2401,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2353,"name":"ElementaryTypeName","src":"12157:5:19"}],"id":2354,"name":"VariableDeclaration","src":"12157:19:19"}],"id":2355,"name":"ParameterList","src":"12115:62:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":2356,"name":"Identifier","src":"12280:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2354,"type":"bytes memory","value":"_proof"},"id":2357,"name":"Identifier","src":"12289:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2358,"name":"Literal","src":"12296:1:19"}],"id":2359,"name":"IndexAccess","src":"12289:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"4c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"L\"","value":"L"},"id":2360,"name":"Literal","src":"12302:3:19"}],"id":2361,"name":"BinaryOperation","src":"12289:16:19"}],"id":2362,"name":"TupleExpression","src":"12288:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2354,"type":"bytes memory","value":"_proof"},"id":2363,"name":"Identifier","src":"12311:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2364,"name":"Literal","src":"12318:1:19"}],"id":2365,"name":"IndexAccess","src":"12311:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"50","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"P\"","value":"P"},"id":2366,"name":"Literal","src":"12324:3:19"}],"id":2367,"name":"BinaryOperation","src":"12311:16:19"}],"id":2368,"name":"TupleExpression","src":"12310:18:19"}],"id":2369,"name":"BinaryOperation","src":"12288:40:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2370,"name":"ElementaryTypeNameExpression","src":"12333:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2354,"type":"bytes memory","value":"_proof"},"id":2371,"name":"Identifier","src":"12339:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2372,"name":"Literal","src":"12346:1:19"}],"id":2373,"name":"IndexAccess","src":"12339:9:19"}],"id":2374,"name":"FunctionCall","src":"12333:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2375,"name":"ElementaryTypeNameExpression","src":"12353:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2376,"name":"Literal","src":"12359:1:19"}],"id":2377,"name":"FunctionCall","src":"12353:8:19"}],"id":2378,"name":"BinaryOperation","src":"12333:28:19"}],"id":2379,"name":"TupleExpression","src":"12332:30:19"}],"id":2380,"name":"BinaryOperation","src":"12288:74:19"}],"id":2381,"name":"FunctionCall","src":"12280:83:19"}],"id":2382,"name":"ExpressionStatement","src":"12280:83:19"},{"attributes":{"assignments":[2384]},"children":[{"attributes":{"constant":false,"name":"proofVerified","scope":2400,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2383,"name":"ElementaryTypeName","src":"12373:4:19"}],"id":2384,"name":"VariableDeclaration","src":"12373:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7693,"type":"function (bytes memory,bytes32,bytes memory,string memory) returns (bool)","value":"oraclize_randomDS_proofVerify__main"},"id":2385,"name":"Identifier","src":"12394:35:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2354,"type":"bytes memory","value":"_proof"},"id":2386,"name":"Identifier","src":"12430:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2350,"type":"bytes32","value":"_queryId"},"id":2387,"name":"Identifier","src":"12438:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2388,"name":"ElementaryTypeNameExpression","src":"12448:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2352,"type":"string memory","value":"_result"},"id":2389,"name":"Identifier","src":"12454:7:19"}],"id":2390,"name":"FunctionCall","src":"12448:14:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2432,"type":"function () view returns (string memory)","value":"oraclize_getNetworkName"},"id":2391,"name":"Identifier","src":"12464:23:19"}],"id":2392,"name":"FunctionCall","src":"12464:25:19"}],"id":2393,"name":"FunctionCall","src":"12394:96:19"}],"id":2394,"name":"VariableDeclarationStatement","src":"12373:117:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":2395,"name":"Identifier","src":"12500:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2384,"type":"bool","value":"proofVerified"},"id":2396,"name":"Identifier","src":"12508:13:19"}],"id":2397,"name":"FunctionCall","src":"12500:22:19"}],"id":2398,"name":"ExpressionStatement","src":"12500:22:19"},{"id":2399,"name":"PlaceholderStatement","src":"12532:1:19"}],"id":2400,"name":"Block","src":"12178:362:19"}],"id":2401,"name":"ModifierDefinition","src":"12077:463:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_setNetwork","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_networkID","scope":2414,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2402,"name":"ElementaryTypeName","src":"12575:5:19"}],"id":2403,"name":"VariableDeclaration","src":"12575:16:19"}],"id":2404,"name":"ParameterList","src":"12574:18:19"},{"children":[{"attributes":{"constant":false,"name":"_networkSet","scope":2414,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2405,"name":"ElementaryTypeName","src":"12611:4:19"}],"id":2406,"name":"VariableDeclaration","src":"12611:16:19"}],"id":2407,"name":"ParameterList","src":"12610:18:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"uint8","value":"_networkID"},"id":2408,"name":"Identifier","src":"12637:10:19"}],"id":2409,"name":"ExpressionStatement","src":"12637:10:19"},{"attributes":{"functionReturnParameters":2407},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[2414,2580],"referencedDeclaration":2580,"type":"function () returns (bool)","value":"oraclize_setNetwork"},"id":2410,"name":"Identifier","src":"12723:19:19"}],"id":2411,"name":"FunctionCall","src":"12723:21:19"}],"id":2412,"name":"Return","src":"12716:28:19"}],"id":2413,"name":"Block","src":"12629:122:19"}],"id":2414,"name":"FunctionDefinition","src":"12546:205:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_setNetworkName","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_network_name","scope":2424,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2415,"name":"ElementaryTypeName","src":"12790:6:19"}],"id":2416,"name":"VariableDeclaration","src":"12790:27:19"}],"id":2417,"name":"ParameterList","src":"12789:29:19"},{"attributes":{"parameters":[null]},"children":[],"id":2418,"name":"ParameterList","src":"12828:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2281,"type":"string storage ref","value":"oraclize_network_name"},"id":2419,"name":"Identifier","src":"12838:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2416,"type":"string memory","value":"_network_name"},"id":2420,"name":"Identifier","src":"12862:13:19"}],"id":2421,"name":"Assignment","src":"12838:37:19"}],"id":2422,"name":"ExpressionStatement","src":"12838:37:19"}],"id":2423,"name":"Block","src":"12828:54:19"}],"id":2424,"name":"FunctionDefinition","src":"12757:125:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_getNetworkName","scope":7853,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2425,"name":"ParameterList","src":"12920:2:19"},{"children":[{"attributes":{"constant":false,"name":"_networkName","scope":2432,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2426,"name":"ElementaryTypeName","src":"12946:6:19"}],"id":2427,"name":"VariableDeclaration","src":"12946:26:19"}],"id":2428,"name":"ParameterList","src":"12945:28:19"},{"children":[{"attributes":{"functionReturnParameters":2428},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2281,"type":"string storage ref","value":"oraclize_network_name"},"id":2429,"name":"Identifier","src":"12991:21:19"}],"id":2430,"name":"Return","src":"12984:28:19"}],"id":2431,"name":"Block","src":"12974:45:19"}],"id":2432,"name":"FunctionDefinition","src":"12888:131:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_setNetwork","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2433,"name":"ParameterList","src":"13053:2:19"},{"children":[{"attributes":{"constant":false,"name":"_networkSet","scope":2580,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2434,"name":"ElementaryTypeName","src":"13074:4:19"}],"id":2435,"name":"VariableDeclaration","src":"13074:16:19"}],"id":2436,"name":"ParameterList","src":"13073:18:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2437,"name":"Identifier","src":"13106:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307831643342323633386137634339663243423344323938413344413761393042363745353530366564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed"},"id":2438,"name":"Literal","src":"13118:42:19"}],"id":2439,"name":"FunctionCall","src":"13106:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2440,"name":"Literal","src":"13164:1:19"}],"id":2441,"name":"BinaryOperation","src":"13106:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2442,"name":"Identifier","src":"13191:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2443,"name":"Identifier","src":"13197:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307831643342323633386137634339663243423344323938413344413761393042363745353530366564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed"},"id":2444,"name":"Literal","src":"13219:42:19"}],"id":2445,"name":"FunctionCall","src":"13197:65:19"}],"id":2446,"name":"Assignment","src":"13191:71:19"}],"id":2447,"name":"ExpressionStatement","src":"13191:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_166a8b14211a981f35b8c1a0ccd1793ab8b02990816168f2e07c026e3cec6dbb","typeString":"literal_string \"eth_mainnet\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2448,"name":"Identifier","src":"13276:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f6d61696e6e6574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_mainnet\"","value":"eth_mainnet"},"id":2449,"name":"Literal","src":"13300:13:19"}],"id":2450,"name":"FunctionCall","src":"13276:38:19"}],"id":2451,"name":"ExpressionStatement","src":"13276:38:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2452,"name":"Literal","src":"13335:4:19"}],"id":2453,"name":"Return","src":"13328:11:19"}],"id":2454,"name":"Block","src":"13167:183:19"}],"id":2455,"name":"IfStatement","src":"13102:248:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2456,"name":"Identifier","src":"13363:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307863303341323631354435656661663546343946363042374242363538336561656332313266646631","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1"},"id":2457,"name":"Literal","src":"13375:42:19"}],"id":2458,"name":"FunctionCall","src":"13363:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2459,"name":"Literal","src":"13421:1:19"}],"id":2460,"name":"BinaryOperation","src":"13363:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2461,"name":"Identifier","src":"13456:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2462,"name":"Identifier","src":"13462:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307863303341323631354435656661663546343946363042374242363538336561656332313266646631","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1"},"id":2463,"name":"Literal","src":"13484:42:19"}],"id":2464,"name":"FunctionCall","src":"13462:65:19"}],"id":2465,"name":"Assignment","src":"13456:71:19"}],"id":2466,"name":"ExpressionStatement","src":"13456:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e6d7ad12f793704da2b0e6be7ff3ba552c838441702c3dfed0dc46fdcc6223f3","typeString":"literal_string \"eth_ropsten3\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2467,"name":"Identifier","src":"13541:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f726f707374656e33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_ropsten3\"","value":"eth_ropsten3"},"id":2468,"name":"Literal","src":"13565:14:19"}],"id":2469,"name":"FunctionCall","src":"13541:39:19"}],"id":2470,"name":"ExpressionStatement","src":"13541:39:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2471,"name":"Literal","src":"13601:4:19"}],"id":2472,"name":"Return","src":"13594:11:19"}],"id":2473,"name":"Block","src":"13424:192:19"}],"id":2474,"name":"IfStatement","src":"13359:257:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2475,"name":"Identifier","src":"13629:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307842374130374263463242613266323730336232344330363931623532373839393943353941433765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e"},"id":2476,"name":"Literal","src":"13641:42:19"}],"id":2477,"name":"FunctionCall","src":"13629:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2478,"name":"Literal","src":"13687:1:19"}],"id":2479,"name":"BinaryOperation","src":"13629:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2480,"name":"Identifier","src":"13720:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2481,"name":"Identifier","src":"13726:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307842374130374263463242613266323730336232344330363931623532373839393943353941433765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e"},"id":2482,"name":"Literal","src":"13748:42:19"}],"id":2483,"name":"FunctionCall","src":"13726:65:19"}],"id":2484,"name":"Assignment","src":"13720:71:19"}],"id":2485,"name":"ExpressionStatement","src":"13720:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_da5c31bc586f77b6347024034556b408f03b750ee3f96529679e30db70e2e90d","typeString":"literal_string \"eth_kovan\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2486,"name":"Identifier","src":"13805:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f6b6f76616e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_kovan\"","value":"eth_kovan"},"id":2487,"name":"Literal","src":"13829:11:19"}],"id":2488,"name":"FunctionCall","src":"13805:36:19"}],"id":2489,"name":"ExpressionStatement","src":"13805:36:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2490,"name":"Literal","src":"13862:4:19"}],"id":2491,"name":"Return","src":"13855:11:19"}],"id":2492,"name":"Block","src":"13690:187:19"}],"id":2493,"name":"IfStatement","src":"13625:252:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2494,"name":"Identifier","src":"13890:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307831343635303063666433354232324534413339324665306144633036446531613133363845643438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x146500cfd35B22E4A392Fe0aDc06De1a1368Ed48"},"id":2495,"name":"Literal","src":"13902:42:19"}],"id":2496,"name":"FunctionCall","src":"13890:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2497,"name":"Literal","src":"13948:1:19"}],"id":2498,"name":"BinaryOperation","src":"13890:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2499,"name":"Identifier","src":"13983:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2500,"name":"Identifier","src":"13989:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307831343635303063666433354232324534413339324665306144633036446531613133363845643438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x146500cfd35B22E4A392Fe0aDc06De1a1368Ed48"},"id":2501,"name":"Literal","src":"14011:42:19"}],"id":2502,"name":"FunctionCall","src":"13989:65:19"}],"id":2503,"name":"Assignment","src":"13983:71:19"}],"id":2504,"name":"ExpressionStatement","src":"13983:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bcbda94ce7fd7b64b15e0074dc94e1f7d42828b0ba2b4a4854abb35899f64a25","typeString":"literal_string \"eth_rinkeby\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2505,"name":"Identifier","src":"14068:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f72696e6b656279","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_rinkeby\"","value":"eth_rinkeby"},"id":2506,"name":"Literal","src":"14092:13:19"}],"id":2507,"name":"FunctionCall","src":"14068:38:19"}],"id":2508,"name":"ExpressionStatement","src":"14068:38:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2509,"name":"Literal","src":"14127:4:19"}],"id":2510,"name":"Return","src":"14120:11:19"}],"id":2511,"name":"Block","src":"13951:191:19"}],"id":2512,"name":"IfStatement","src":"13886:256:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2513,"name":"Identifier","src":"14155:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307861323939384546443230354642394434423439363361466237303737384436333534616433413431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xa2998EFD205FB9D4B4963aFb70778D6354ad3A41"},"id":2514,"name":"Literal","src":"14167:42:19"}],"id":2515,"name":"FunctionCall","src":"14155:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2516,"name":"Literal","src":"14213:1:19"}],"id":2517,"name":"BinaryOperation","src":"14155:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2518,"name":"Identifier","src":"14247:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2519,"name":"Identifier","src":"14253:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307861323939384546443230354642394434423439363361466237303737384436333534616433413431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xa2998EFD205FB9D4B4963aFb70778D6354ad3A41"},"id":2520,"name":"Literal","src":"14275:42:19"}],"id":2521,"name":"FunctionCall","src":"14253:65:19"}],"id":2522,"name":"Assignment","src":"14247:71:19"}],"id":2523,"name":"ExpressionStatement","src":"14247:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1b4648d301ee4636cab65035e5f41ba61127a4bb9195ab098bb23f6ec22c9c96","typeString":"literal_string \"eth_goerli\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2524,"name":"Identifier","src":"14332:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f676f65726c69","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_goerli\"","value":"eth_goerli"},"id":2525,"name":"Literal","src":"14356:12:19"}],"id":2526,"name":"FunctionCall","src":"14332:37:19"}],"id":2527,"name":"ExpressionStatement","src":"14332:37:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2528,"name":"Literal","src":"14390:4:19"}],"id":2529,"name":"Return","src":"14383:11:19"}],"id":2530,"name":"Block","src":"14216:189:19"}],"id":2531,"name":"IfStatement","src":"14151:254:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2532,"name":"Identifier","src":"14418:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307836663438354338424636666334336541323132453933424246386365303436433766316362343735","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475"},"id":2533,"name":"Literal","src":"14430:42:19"}],"id":2534,"name":"FunctionCall","src":"14418:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2535,"name":"Literal","src":"14476:1:19"}],"id":2536,"name":"BinaryOperation","src":"14418:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2537,"name":"Identifier","src":"14511:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2538,"name":"Identifier","src":"14517:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307836663438354338424636666334336541323132453933424246386365303436433766316362343735","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475"},"id":2539,"name":"Literal","src":"14539:42:19"}],"id":2540,"name":"FunctionCall","src":"14517:65:19"}],"id":2541,"name":"Assignment","src":"14511:71:19"}],"id":2542,"name":"ExpressionStatement","src":"14511:71:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2543,"name":"Literal","src":"14603:4:19"}],"id":2544,"name":"Return","src":"14596:11:19"}],"id":2545,"name":"Block","src":"14479:139:19"}],"id":2546,"name":"IfStatement","src":"14414:204:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2547,"name":"Identifier","src":"14631:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307832306531324131463835394233466561453546623241304133324331384635613635353535624246","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF"},"id":2548,"name":"Literal","src":"14643:42:19"}],"id":2549,"name":"FunctionCall","src":"14631:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2550,"name":"Literal","src":"14689:1:19"}],"id":2551,"name":"BinaryOperation","src":"14631:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2552,"name":"Identifier","src":"14723:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2553,"name":"Identifier","src":"14729:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307832306531324131463835394233466561453546623241304133324331384635613635353535624246","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF"},"id":2554,"name":"Literal","src":"14751:42:19"}],"id":2555,"name":"FunctionCall","src":"14729:65:19"}],"id":2556,"name":"Assignment","src":"14723:71:19"}],"id":2557,"name":"ExpressionStatement","src":"14723:71:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2558,"name":"Literal","src":"14815:4:19"}],"id":2559,"name":"Return","src":"14808:11:19"}],"id":2560,"name":"Block","src":"14692:138:19"}],"id":2561,"name":"IfStatement","src":"14627:203:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2562,"name":"Identifier","src":"14843:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307835316566614634633842334339416642443561423946346262433832373834416236656638664141","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA"},"id":2563,"name":"Literal","src":"14855:42:19"}],"id":2564,"name":"FunctionCall","src":"14843:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2565,"name":"Literal","src":"14901:1:19"}],"id":2566,"name":"BinaryOperation","src":"14843:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2567,"name":"Identifier","src":"14937:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2568,"name":"Identifier","src":"14943:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307835316566614634633842334339416642443561423946346262433832373834416236656638664141","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA"},"id":2569,"name":"Literal","src":"14965:42:19"}],"id":2570,"name":"FunctionCall","src":"14943:65:19"}],"id":2571,"name":"Assignment","src":"14937:71:19"}],"id":2572,"name":"ExpressionStatement","src":"14937:71:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2573,"name":"Literal","src":"15029:4:19"}],"id":2574,"name":"Return","src":"15022:11:19"}],"id":2575,"name":"Block","src":"14904:140:19"}],"id":2576,"name":"IfStatement","src":"14839:205:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2577,"name":"Literal","src":"15060:5:19"}],"id":2578,"name":"Return","src":"15053:12:19"}],"id":2579,"name":"Block","src":"13092:1980:19"}],"id":2580,"name":"FunctionDefinition","src":"13025:2047:19"},{"attributes":{"documentation":"@dev The following `__callback` functions are just placeholders ideally\n meant to be defined in child contract when proofs are used.\n The function bodies simply silence compiler warnings.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"__callback","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_myid","scope":2606,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2581,"name":"ElementaryTypeName","src":"15464:7:19"}],"id":2582,"name":"VariableDeclaration","src":"15464:13:19"},{"attributes":{"constant":false,"name":"_result","scope":2606,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2583,"name":"ElementaryTypeName","src":"15479:6:19"}],"id":2584,"name":"VariableDeclaration","src":"15479:21:19"},{"attributes":{"constant":false,"name":"_proof","scope":2606,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2585,"name":"ElementaryTypeName","src":"15502:5:19"}],"id":2586,"name":"VariableDeclaration","src":"15502:19:19"}],"id":2587,"name":"ParameterList","src":"15463:59:19"},{"attributes":{"parameters":[null]},"children":[],"id":2588,"name":"ParameterList","src":"15530:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2582,"type":"bytes32","value":"_myid"},"id":2589,"name":"Identifier","src":"15538:5:19"}],"id":2590,"name":"ExpressionStatement","src":"15538:5:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2584,"type":"string memory","value":"_result"},"id":2591,"name":"Identifier","src":"15545:7:19"}],"id":2592,"name":"ExpressionStatement","src":"15545:7:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2586,"type":"bytes memory","value":"_proof"},"id":2593,"name":"Identifier","src":"15554:6:19"}],"id":2594,"name":"ExpressionStatement","src":"15554:6:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2300,"type":"mapping(bytes32 => bytes32)","value":"oraclize_randomDS_args"},"id":2595,"name":"Identifier","src":"15568:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2596,"name":"ElementaryTypeNameExpression","src":"15591:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2597,"name":"Literal","src":"15599:1:19"}],"id":2598,"name":"FunctionCall","src":"15591:10:19"}],"id":2599,"name":"IndexAccess","src":"15568:34:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2600,"name":"ElementaryTypeNameExpression","src":"15605:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2601,"name":"Literal","src":"15613:1:19"}],"id":2602,"name":"FunctionCall","src":"15605:10:19"}],"id":2603,"name":"Assignment","src":"15568:47:19"}],"id":2604,"name":"ExpressionStatement","src":"15568:47:19"}],"id":2605,"name":"Block","src":"15530:92:19"}],"id":2606,"name":"FunctionDefinition","src":"15444:178:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_getPrice","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2621,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2607,"name":"ElementaryTypeName","src":"15655:6:19"}],"id":2608,"name":"VariableDeclaration","src":"15655:25:19"}],"id":2609,"name":"ParameterList","src":"15654:27:19"},{"children":[{"attributes":{"constant":false,"name":"_queryPrice","scope":2621,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2612,"name":"ElementaryTypeName","src":"15712:4:19"}],"id":2613,"name":"VariableDeclaration","src":"15712:16:19"}],"id":2614,"name":"ParameterList","src":"15711:18:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2610,"name":"Identifier","src":"15682:11:19"}],"id":2611,"name":"ModifierInvocation","src":"15682:11:19"},{"children":[{"attributes":{"functionReturnParameters":2614},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2615,"name":"Identifier","src":"15747:8:19"}],"id":2616,"name":"MemberAccess","src":"15747:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"string memory","value":"_datasource"},"id":2617,"name":"Identifier","src":"15765:11:19"}],"id":2618,"name":"FunctionCall","src":"15747:30:19"}],"id":2619,"name":"Return","src":"15740:37:19"}],"id":2620,"name":"Block","src":"15730:54:19"}],"id":2621,"name":"FunctionDefinition","src":"15628:156:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_getPrice","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2639,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2622,"name":"ElementaryTypeName","src":"15817:6:19"}],"id":2623,"name":"VariableDeclaration","src":"15817:25:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":2639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2624,"name":"ElementaryTypeName","src":"15844:4:19"}],"id":2625,"name":"VariableDeclaration","src":"15844:14:19"}],"id":2626,"name":"ParameterList","src":"15816:43:19"},{"children":[{"attributes":{"constant":false,"name":"_queryPrice","scope":2639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2629,"name":"ElementaryTypeName","src":"15890:4:19"}],"id":2630,"name":"VariableDeclaration","src":"15890:16:19"}],"id":2631,"name":"ParameterList","src":"15889:18:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2627,"name":"Identifier","src":"15860:11:19"}],"id":2628,"name":"ModifierInvocation","src":"15860:11:19"},{"children":[{"attributes":{"functionReturnParameters":2631},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2632,"name":"Identifier","src":"15925:8:19"}],"id":2633,"name":"MemberAccess","src":"15925:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2623,"type":"string memory","value":"_datasource"},"id":2634,"name":"Identifier","src":"15943:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2625,"type":"uint256","value":"_gasLimit"},"id":2635,"name":"Identifier","src":"15956:9:19"}],"id":2636,"name":"FunctionCall","src":"15925:41:19"}],"id":2637,"name":"Return","src":"15918:48:19"}],"id":2638,"name":"Block","src":"15908:65:19"}],"id":2639,"name":"FunctionDefinition","src":"15790:183:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2680,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2640,"name":"ElementaryTypeName","src":"16003:6:19"}],"id":2641,"name":"VariableDeclaration","src":"16003:25:19"},{"attributes":{"constant":false,"name":"_arg","scope":2680,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2642,"name":"ElementaryTypeName","src":"16030:6:19"}],"id":2643,"name":"VariableDeclaration","src":"16030:18:19"}],"id":2644,"name":"ParameterList","src":"16002:47:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2680,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2647,"name":"ElementaryTypeName","src":"16080:7:19"}],"id":2648,"name":"VariableDeclaration","src":"16080:11:19"}],"id":2649,"name":"ParameterList","src":"16079:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2645,"name":"Identifier","src":"16050:11:19"}],"id":2646,"name":"ModifierInvocation","src":"16050:11:19"},{"children":[{"attributes":{"assignments":[2651]},"children":[{"attributes":{"constant":false,"name":"price","scope":2679,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2650,"name":"ElementaryTypeName","src":"16103:4:19"}],"id":2651,"name":"VariableDeclaration","src":"16103:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2652,"name":"Identifier","src":"16116:8:19"}],"id":2653,"name":"MemberAccess","src":"16116:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2641,"type":"string memory","value":"_datasource"},"id":2654,"name":"Identifier","src":"16134:11:19"}],"id":2655,"name":"FunctionCall","src":"16116:30:19"}],"id":2656,"name":"VariableDeclarationStatement","src":"16103:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"uint256","value":"price"},"id":2657,"name":"Identifier","src":"16160:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2658,"name":"Literal","src":"16168:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2659,"name":"Identifier","src":"16178:2:19"}],"id":2660,"name":"MemberAccess","src":"16178:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":2661,"name":"Literal","src":"16192:6:19"}],"id":2662,"name":"BinaryOperation","src":"16178:20:19"}],"id":2663,"name":"BinaryOperation","src":"16168:30:19"}],"id":2664,"name":"BinaryOperation","src":"16160:38:19"},{"children":[{"attributes":{"functionReturnParameters":2649},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2665,"name":"Literal","src":"16221:1:19"}],"id":2666,"name":"Return","src":"16214:8:19"}],"id":2667,"name":"Block","src":"16200:60:19"}],"id":2668,"name":"IfStatement","src":"16156:104:19"},{"attributes":{"functionReturnParameters":2649},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query","referencedDeclaration":1637,"type":"function (uint256,string memory,string memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2669,"name":"Identifier","src":"16276:8:19"}],"id":2670,"name":"MemberAccess","src":"16276:14:19"}],"id":2671,"name":"MemberAccess","src":"16276:20:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"uint256","value":"price"},"id":2672,"name":"Identifier","src":"16297:5:19"}],"id":2673,"name":"FunctionCall","src":"16276:27:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2674,"name":"Literal","src":"16304:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2641,"type":"string memory","value":"_datasource"},"id":2675,"name":"Identifier","src":"16307:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2643,"type":"string memory","value":"_arg"},"id":2676,"name":"Identifier","src":"16320:4:19"}],"id":2677,"name":"FunctionCall","src":"16276:49:19"}],"id":2678,"name":"Return","src":"16269:56:19"}],"id":2679,"name":"Block","src":"16093:239:19"}],"id":2680,"name":"FunctionDefinition","src":"15979:353:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":2723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2681,"name":"ElementaryTypeName","src":"16362:4:19"}],"id":2682,"name":"VariableDeclaration","src":"16362:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":2723,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2683,"name":"ElementaryTypeName","src":"16379:6:19"}],"id":2684,"name":"VariableDeclaration","src":"16379:25:19"},{"attributes":{"constant":false,"name":"_arg","scope":2723,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2685,"name":"ElementaryTypeName","src":"16406:6:19"}],"id":2686,"name":"VariableDeclaration","src":"16406:18:19"}],"id":2687,"name":"ParameterList","src":"16361:64:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2723,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2690,"name":"ElementaryTypeName","src":"16456:7:19"}],"id":2691,"name":"VariableDeclaration","src":"16456:11:19"}],"id":2692,"name":"ParameterList","src":"16455:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2688,"name":"Identifier","src":"16426:11:19"}],"id":2689,"name":"ModifierInvocation","src":"16426:11:19"},{"children":[{"attributes":{"assignments":[2694]},"children":[{"attributes":{"constant":false,"name":"price","scope":2722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2693,"name":"ElementaryTypeName","src":"16479:4:19"}],"id":2694,"name":"VariableDeclaration","src":"16479:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2695,"name":"Identifier","src":"16492:8:19"}],"id":2696,"name":"MemberAccess","src":"16492:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2684,"type":"string memory","value":"_datasource"},"id":2697,"name":"Identifier","src":"16510:11:19"}],"id":2698,"name":"FunctionCall","src":"16492:30:19"}],"id":2699,"name":"VariableDeclarationStatement","src":"16479:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2694,"type":"uint256","value":"price"},"id":2700,"name":"Identifier","src":"16536:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2701,"name":"Literal","src":"16544:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2702,"name":"Identifier","src":"16554:2:19"}],"id":2703,"name":"MemberAccess","src":"16554:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":2704,"name":"Literal","src":"16568:6:19"}],"id":2705,"name":"BinaryOperation","src":"16554:20:19"}],"id":2706,"name":"BinaryOperation","src":"16544:30:19"}],"id":2707,"name":"BinaryOperation","src":"16536:38:19"},{"children":[{"attributes":{"functionReturnParameters":2692},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2708,"name":"Literal","src":"16597:1:19"}],"id":2709,"name":"Return","src":"16590:8:19"}],"id":2710,"name":"Block","src":"16576:60:19"}],"id":2711,"name":"IfStatement","src":"16532:104:19"},{"attributes":{"functionReturnParameters":2692},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query","referencedDeclaration":1637,"type":"function (uint256,string memory,string memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2712,"name":"Identifier","src":"16652:8:19"}],"id":2713,"name":"MemberAccess","src":"16652:14:19"}],"id":2714,"name":"MemberAccess","src":"16652:20:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2694,"type":"uint256","value":"price"},"id":2715,"name":"Identifier","src":"16673:5:19"}],"id":2716,"name":"FunctionCall","src":"16652:27:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2682,"type":"uint256","value":"_timestamp"},"id":2717,"name":"Identifier","src":"16680:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2684,"type":"string memory","value":"_datasource"},"id":2718,"name":"Identifier","src":"16692:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2686,"type":"string memory","value":"_arg"},"id":2719,"name":"Identifier","src":"16705:4:19"}],"id":2720,"name":"FunctionCall","src":"16652:58:19"}],"id":2721,"name":"Return","src":"16645:65:19"}],"id":2722,"name":"Block","src":"16469:248:19"}],"id":2723,"name":"FunctionDefinition","src":"16338:379:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":2770,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2724,"name":"ElementaryTypeName","src":"16747:4:19"}],"id":2725,"name":"VariableDeclaration","src":"16747:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":2770,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2726,"name":"ElementaryTypeName","src":"16764:6:19"}],"id":2727,"name":"VariableDeclaration","src":"16764:25:19"},{"attributes":{"constant":false,"name":"_arg","scope":2770,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2728,"name":"ElementaryTypeName","src":"16791:6:19"}],"id":2729,"name":"VariableDeclaration","src":"16791:18:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":2770,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2730,"name":"ElementaryTypeName","src":"16811:4:19"}],"id":2731,"name":"VariableDeclaration","src":"16811:14:19"}],"id":2732,"name":"ParameterList","src":"16746:80:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2770,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2735,"name":"ElementaryTypeName","src":"16857:7:19"}],"id":2736,"name":"VariableDeclaration","src":"16857:11:19"}],"id":2737,"name":"ParameterList","src":"16856:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2733,"name":"Identifier","src":"16827:11:19"}],"id":2734,"name":"ModifierInvocation","src":"16827:11:19"},{"children":[{"attributes":{"assignments":[2739]},"children":[{"attributes":{"constant":false,"name":"price","scope":2769,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2738,"name":"ElementaryTypeName","src":"16880:4:19"}],"id":2739,"name":"VariableDeclaration","src":"16880:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2740,"name":"Identifier","src":"16893:8:19"}],"id":2741,"name":"MemberAccess","src":"16893:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2727,"type":"string memory","value":"_datasource"},"id":2742,"name":"Identifier","src":"16911:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2731,"type":"uint256","value":"_gasLimit"},"id":2743,"name":"Identifier","src":"16923:9:19"}],"id":2744,"name":"FunctionCall","src":"16893:40:19"}],"id":2745,"name":"VariableDeclarationStatement","src":"16880:53:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"price"},"id":2746,"name":"Identifier","src":"16947:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2747,"name":"Literal","src":"16955:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2748,"name":"Identifier","src":"16965:2:19"}],"id":2749,"name":"MemberAccess","src":"16965:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2731,"type":"uint256","value":"_gasLimit"},"id":2750,"name":"Identifier","src":"16979:9:19"}],"id":2751,"name":"BinaryOperation","src":"16965:23:19"}],"id":2752,"name":"BinaryOperation","src":"16955:33:19"}],"id":2753,"name":"BinaryOperation","src":"16947:41:19"},{"children":[{"attributes":{"functionReturnParameters":2737},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2754,"name":"Literal","src":"17011:1:19"}],"id":2755,"name":"Return","src":"17004:8:19"}],"id":2756,"name":"Block","src":"16990:60:19"}],"id":2757,"name":"IfStatement","src":"16943:107:19"},{"attributes":{"functionReturnParameters":2737},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query_withGasLimit","referencedDeclaration":1663,"type":"function (uint256,string memory,string memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2758,"name":"Identifier","src":"17066:8:19"}],"id":2759,"name":"MemberAccess","src":"17066:27:19"}],"id":2760,"name":"MemberAccess","src":"17066:33:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"price"},"id":2761,"name":"Identifier","src":"17100:5:19"}],"id":2762,"name":"FunctionCall","src":"17066:40:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2725,"type":"uint256","value":"_timestamp"},"id":2763,"name":"Identifier","src":"17107:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2727,"type":"string memory","value":"_datasource"},"id":2764,"name":"Identifier","src":"17119:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2729,"type":"string memory","value":"_arg"},"id":2765,"name":"Identifier","src":"17132:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2731,"type":"uint256","value":"_gasLimit"},"id":2766,"name":"Identifier","src":"17138:9:19"}],"id":2767,"name":"FunctionCall","src":"17066:82:19"}],"id":2768,"name":"Return","src":"17059:89:19"}],"id":2769,"name":"Block","src":"16870:285:19"}],"id":2770,"name":"FunctionDefinition","src":"16723:432:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2815,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2771,"name":"ElementaryTypeName","src":"17185:6:19"}],"id":2772,"name":"VariableDeclaration","src":"17185:25:19"},{"attributes":{"constant":false,"name":"_arg","scope":2815,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2773,"name":"ElementaryTypeName","src":"17212:6:19"}],"id":2774,"name":"VariableDeclaration","src":"17212:18:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":2815,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2775,"name":"ElementaryTypeName","src":"17232:4:19"}],"id":2776,"name":"VariableDeclaration","src":"17232:14:19"}],"id":2777,"name":"ParameterList","src":"17184:63:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2815,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2780,"name":"ElementaryTypeName","src":"17278:7:19"}],"id":2781,"name":"VariableDeclaration","src":"17278:11:19"}],"id":2782,"name":"ParameterList","src":"17277:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2778,"name":"Identifier","src":"17248:11:19"}],"id":2779,"name":"ModifierInvocation","src":"17248:11:19"},{"children":[{"attributes":{"assignments":[2784]},"children":[{"attributes":{"constant":false,"name":"price","scope":2814,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2783,"name":"ElementaryTypeName","src":"17301:4:19"}],"id":2784,"name":"VariableDeclaration","src":"17301:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2785,"name":"Identifier","src":"17314:8:19"}],"id":2786,"name":"MemberAccess","src":"17314:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2772,"type":"string memory","value":"_datasource"},"id":2787,"name":"Identifier","src":"17332:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"uint256","value":"_gasLimit"},"id":2788,"name":"Identifier","src":"17345:9:19"}],"id":2789,"name":"FunctionCall","src":"17314:41:19"}],"id":2790,"name":"VariableDeclarationStatement","src":"17301:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"price"},"id":2791,"name":"Identifier","src":"17369:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2792,"name":"Literal","src":"17377:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2793,"name":"Identifier","src":"17387:2:19"}],"id":2794,"name":"MemberAccess","src":"17387:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"uint256","value":"_gasLimit"},"id":2795,"name":"Identifier","src":"17401:9:19"}],"id":2796,"name":"BinaryOperation","src":"17387:23:19"}],"id":2797,"name":"BinaryOperation","src":"17377:33:19"}],"id":2798,"name":"BinaryOperation","src":"17369:41:19"},{"children":[{"attributes":{"functionReturnParameters":2782},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2799,"name":"Literal","src":"17432:1:19"}],"id":2800,"name":"Return","src":"17425:8:19"}],"id":2801,"name":"Block","src":"17412:59:19"}],"id":2802,"name":"IfStatement","src":"17365:106:19"},{"attributes":{"functionReturnParameters":2782},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query_withGasLimit","referencedDeclaration":1663,"type":"function (uint256,string memory,string memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2803,"name":"Identifier","src":"17487:8:19"}],"id":2804,"name":"MemberAccess","src":"17487:27:19"}],"id":2805,"name":"MemberAccess","src":"17487:33:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"price"},"id":2806,"name":"Identifier","src":"17521:5:19"}],"id":2807,"name":"FunctionCall","src":"17487:40:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2808,"name":"Literal","src":"17528:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2772,"type":"string memory","value":"_datasource"},"id":2809,"name":"Identifier","src":"17531:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2774,"type":"string memory","value":"_arg"},"id":2810,"name":"Identifier","src":"17544:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"uint256","value":"_gasLimit"},"id":2811,"name":"Identifier","src":"17550:9:19"}],"id":2812,"name":"FunctionCall","src":"17487:73:19"}],"id":2813,"name":"Return","src":"17480:80:19"}],"id":2814,"name":"Block","src":"17291:276:19"}],"id":2815,"name":"FunctionDefinition","src":"17161:406:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2859,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2816,"name":"ElementaryTypeName","src":"17597:6:19"}],"id":2817,"name":"VariableDeclaration","src":"17597:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":2859,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2818,"name":"ElementaryTypeName","src":"17624:6:19"}],"id":2819,"name":"VariableDeclaration","src":"17624:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":2859,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2820,"name":"ElementaryTypeName","src":"17645:6:19"}],"id":2821,"name":"VariableDeclaration","src":"17645:19:19"}],"id":2822,"name":"ParameterList","src":"17596:69:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2859,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2825,"name":"ElementaryTypeName","src":"17696:7:19"}],"id":2826,"name":"VariableDeclaration","src":"17696:11:19"}],"id":2827,"name":"ParameterList","src":"17695:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2823,"name":"Identifier","src":"17666:11:19"}],"id":2824,"name":"ModifierInvocation","src":"17666:11:19"},{"children":[{"attributes":{"assignments":[2829]},"children":[{"attributes":{"constant":false,"name":"price","scope":2858,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2828,"name":"ElementaryTypeName","src":"17719:4:19"}],"id":2829,"name":"VariableDeclaration","src":"17719:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2830,"name":"Identifier","src":"17732:8:19"}],"id":2831,"name":"MemberAccess","src":"17732:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2817,"type":"string memory","value":"_datasource"},"id":2832,"name":"Identifier","src":"17750:11:19"}],"id":2833,"name":"FunctionCall","src":"17732:30:19"}],"id":2834,"name":"VariableDeclarationStatement","src":"17719:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2829,"type":"uint256","value":"price"},"id":2835,"name":"Identifier","src":"17776:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2836,"name":"Literal","src":"17784:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2837,"name":"Identifier","src":"17794:2:19"}],"id":2838,"name":"MemberAccess","src":"17794:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":2839,"name":"Literal","src":"17808:6:19"}],"id":2840,"name":"BinaryOperation","src":"17794:20:19"}],"id":2841,"name":"BinaryOperation","src":"17784:30:19"}],"id":2842,"name":"BinaryOperation","src":"17776:38:19"},{"children":[{"attributes":{"functionReturnParameters":2827},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2843,"name":"Literal","src":"17837:1:19"}],"id":2844,"name":"Return","src":"17830:8:19"}],"id":2845,"name":"Block","src":"17816:60:19"}],"id":2846,"name":"IfStatement","src":"17772:104:19"},{"attributes":{"functionReturnParameters":2827},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,string memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,string memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query2","referencedDeclaration":1650,"type":"function (uint256,string memory,string memory,string memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2847,"name":"Identifier","src":"17892:8:19"}],"id":2848,"name":"MemberAccess","src":"17892:15:19"}],"id":2849,"name":"MemberAccess","src":"17892:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2829,"type":"uint256","value":"price"},"id":2850,"name":"Identifier","src":"17914:5:19"}],"id":2851,"name":"FunctionCall","src":"17892:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2852,"name":"Literal","src":"17921:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2817,"type":"string memory","value":"_datasource"},"id":2853,"name":"Identifier","src":"17924:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2819,"type":"string memory","value":"_arg1"},"id":2854,"name":"Identifier","src":"17937:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2821,"type":"string memory","value":"_arg2"},"id":2855,"name":"Identifier","src":"17944:5:19"}],"id":2856,"name":"FunctionCall","src":"17892:58:19"}],"id":2857,"name":"Return","src":"17885:65:19"}],"id":2858,"name":"Block","src":"17709:248:19"}],"id":2859,"name":"FunctionDefinition","src":"17573:384:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":2905,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2860,"name":"ElementaryTypeName","src":"17987:4:19"}],"id":2861,"name":"VariableDeclaration","src":"17987:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":2905,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2862,"name":"ElementaryTypeName","src":"18004:6:19"}],"id":2863,"name":"VariableDeclaration","src":"18004:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":2905,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2864,"name":"ElementaryTypeName","src":"18031:6:19"}],"id":2865,"name":"VariableDeclaration","src":"18031:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":2905,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2866,"name":"ElementaryTypeName","src":"18052:6:19"}],"id":2867,"name":"VariableDeclaration","src":"18052:19:19"}],"id":2868,"name":"ParameterList","src":"17986:86:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2905,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2871,"name":"ElementaryTypeName","src":"18103:7:19"}],"id":2872,"name":"VariableDeclaration","src":"18103:11:19"}],"id":2873,"name":"ParameterList","src":"18102:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2869,"name":"Identifier","src":"18073:11:19"}],"id":2870,"name":"ModifierInvocation","src":"18073:11:19"},{"children":[{"attributes":{"assignments":[2875]},"children":[{"attributes":{"constant":false,"name":"price","scope":2904,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2874,"name":"ElementaryTypeName","src":"18126:4:19"}],"id":2875,"name":"VariableDeclaration","src":"18126:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2876,"name":"Identifier","src":"18139:8:19"}],"id":2877,"name":"MemberAccess","src":"18139:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2863,"type":"string memory","value":"_datasource"},"id":2878,"name":"Identifier","src":"18157:11:19"}],"id":2879,"name":"FunctionCall","src":"18139:30:19"}],"id":2880,"name":"VariableDeclarationStatement","src":"18126:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2875,"type":"uint256","value":"price"},"id":2881,"name":"Identifier","src":"18183:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2882,"name":"Literal","src":"18191:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2883,"name":"Identifier","src":"18201:2:19"}],"id":2884,"name":"MemberAccess","src":"18201:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":2885,"name":"Literal","src":"18215:6:19"}],"id":2886,"name":"BinaryOperation","src":"18201:20:19"}],"id":2887,"name":"BinaryOperation","src":"18191:30:19"}],"id":2888,"name":"BinaryOperation","src":"18183:38:19"},{"children":[{"attributes":{"functionReturnParameters":2873},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2889,"name":"Literal","src":"18244:1:19"}],"id":2890,"name":"Return","src":"18237:8:19"}],"id":2891,"name":"Block","src":"18223:60:19"}],"id":2892,"name":"IfStatement","src":"18179:104:19"},{"attributes":{"functionReturnParameters":2873},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,string memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,string memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query2","referencedDeclaration":1650,"type":"function (uint256,string memory,string memory,string memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2893,"name":"Identifier","src":"18299:8:19"}],"id":2894,"name":"MemberAccess","src":"18299:15:19"}],"id":2895,"name":"MemberAccess","src":"18299:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2875,"type":"uint256","value":"price"},"id":2896,"name":"Identifier","src":"18321:5:19"}],"id":2897,"name":"FunctionCall","src":"18299:28:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2861,"type":"uint256","value":"_timestamp"},"id":2898,"name":"Identifier","src":"18328:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2863,"type":"string memory","value":"_datasource"},"id":2899,"name":"Identifier","src":"18340:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2865,"type":"string memory","value":"_arg1"},"id":2900,"name":"Identifier","src":"18353:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2867,"type":"string memory","value":"_arg2"},"id":2901,"name":"Identifier","src":"18360:5:19"}],"id":2902,"name":"FunctionCall","src":"18299:67:19"}],"id":2903,"name":"Return","src":"18292:74:19"}],"id":2904,"name":"Block","src":"18116:257:19"}],"id":2905,"name":"FunctionDefinition","src":"17963:410:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":2955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2906,"name":"ElementaryTypeName","src":"18403:4:19"}],"id":2907,"name":"VariableDeclaration","src":"18403:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":2955,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2908,"name":"ElementaryTypeName","src":"18420:6:19"}],"id":2909,"name":"VariableDeclaration","src":"18420:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":2955,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2910,"name":"ElementaryTypeName","src":"18447:6:19"}],"id":2911,"name":"VariableDeclaration","src":"18447:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":2955,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2912,"name":"ElementaryTypeName","src":"18468:6:19"}],"id":2913,"name":"VariableDeclaration","src":"18468:19:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":2955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2914,"name":"ElementaryTypeName","src":"18489:4:19"}],"id":2915,"name":"VariableDeclaration","src":"18489:14:19"}],"id":2916,"name":"ParameterList","src":"18402:102:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2955,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2919,"name":"ElementaryTypeName","src":"18535:7:19"}],"id":2920,"name":"VariableDeclaration","src":"18535:11:19"}],"id":2921,"name":"ParameterList","src":"18534:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2917,"name":"Identifier","src":"18505:11:19"}],"id":2918,"name":"ModifierInvocation","src":"18505:11:19"},{"children":[{"attributes":{"assignments":[2923]},"children":[{"attributes":{"constant":false,"name":"price","scope":2954,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2922,"name":"ElementaryTypeName","src":"18558:4:19"}],"id":2923,"name":"VariableDeclaration","src":"18558:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2924,"name":"Identifier","src":"18571:8:19"}],"id":2925,"name":"MemberAccess","src":"18571:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2909,"type":"string memory","value":"_datasource"},"id":2926,"name":"Identifier","src":"18589:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"uint256","value":"_gasLimit"},"id":2927,"name":"Identifier","src":"18602:9:19"}],"id":2928,"name":"FunctionCall","src":"18571:41:19"}],"id":2929,"name":"VariableDeclarationStatement","src":"18558:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"uint256","value":"price"},"id":2930,"name":"Identifier","src":"18626:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2931,"name":"Literal","src":"18634:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2932,"name":"Identifier","src":"18644:2:19"}],"id":2933,"name":"MemberAccess","src":"18644:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"uint256","value":"_gasLimit"},"id":2934,"name":"Identifier","src":"18658:9:19"}],"id":2935,"name":"BinaryOperation","src":"18644:23:19"}],"id":2936,"name":"BinaryOperation","src":"18634:33:19"}],"id":2937,"name":"BinaryOperation","src":"18626:41:19"},{"children":[{"attributes":{"functionReturnParameters":2921},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2938,"name":"Literal","src":"18690:1:19"}],"id":2939,"name":"Return","src":"18683:8:19"}],"id":2940,"name":"Block","src":"18669:60:19"}],"id":2941,"name":"IfStatement","src":"18622:107:19"},{"attributes":{"functionReturnParameters":2921},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query2_withGasLimit","referencedDeclaration":1691,"type":"function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2942,"name":"Identifier","src":"18745:8:19"}],"id":2943,"name":"MemberAccess","src":"18745:28:19"}],"id":2944,"name":"MemberAccess","src":"18745:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"uint256","value":"price"},"id":2945,"name":"Identifier","src":"18780:5:19"}],"id":2946,"name":"FunctionCall","src":"18745:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2907,"type":"uint256","value":"_timestamp"},"id":2947,"name":"Identifier","src":"18787:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2909,"type":"string memory","value":"_datasource"},"id":2948,"name":"Identifier","src":"18799:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2911,"type":"string memory","value":"_arg1"},"id":2949,"name":"Identifier","src":"18812:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2913,"type":"string memory","value":"_arg2"},"id":2950,"name":"Identifier","src":"18819:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"uint256","value":"_gasLimit"},"id":2951,"name":"Identifier","src":"18826:9:19"}],"id":2952,"name":"FunctionCall","src":"18745:91:19"}],"id":2953,"name":"Return","src":"18738:98:19"}],"id":2954,"name":"Block","src":"18548:295:19"}],"id":2955,"name":"FunctionDefinition","src":"18379:464:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3003,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2956,"name":"ElementaryTypeName","src":"18873:6:19"}],"id":2957,"name":"VariableDeclaration","src":"18873:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":3003,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2958,"name":"ElementaryTypeName","src":"18900:6:19"}],"id":2959,"name":"VariableDeclaration","src":"18900:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":3003,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2960,"name":"ElementaryTypeName","src":"18921:6:19"}],"id":2961,"name":"VariableDeclaration","src":"18921:19:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3003,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2962,"name":"ElementaryTypeName","src":"18942:4:19"}],"id":2963,"name":"VariableDeclaration","src":"18942:14:19"}],"id":2964,"name":"ParameterList","src":"18872:85:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3003,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2967,"name":"ElementaryTypeName","src":"18988:7:19"}],"id":2968,"name":"VariableDeclaration","src":"18988:11:19"}],"id":2969,"name":"ParameterList","src":"18987:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2965,"name":"Identifier","src":"18958:11:19"}],"id":2966,"name":"ModifierInvocation","src":"18958:11:19"},{"children":[{"attributes":{"assignments":[2971]},"children":[{"attributes":{"constant":false,"name":"price","scope":3002,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2970,"name":"ElementaryTypeName","src":"19011:4:19"}],"id":2971,"name":"VariableDeclaration","src":"19011:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2972,"name":"Identifier","src":"19024:8:19"}],"id":2973,"name":"MemberAccess","src":"19024:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2957,"type":"string memory","value":"_datasource"},"id":2974,"name":"Identifier","src":"19042:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2963,"type":"uint256","value":"_gasLimit"},"id":2975,"name":"Identifier","src":"19055:9:19"}],"id":2976,"name":"FunctionCall","src":"19024:41:19"}],"id":2977,"name":"VariableDeclarationStatement","src":"19011:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2971,"type":"uint256","value":"price"},"id":2978,"name":"Identifier","src":"19079:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2979,"name":"Literal","src":"19087:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2980,"name":"Identifier","src":"19097:2:19"}],"id":2981,"name":"MemberAccess","src":"19097:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2963,"type":"uint256","value":"_gasLimit"},"id":2982,"name":"Identifier","src":"19111:9:19"}],"id":2983,"name":"BinaryOperation","src":"19097:23:19"}],"id":2984,"name":"BinaryOperation","src":"19087:33:19"}],"id":2985,"name":"BinaryOperation","src":"19079:41:19"},{"children":[{"attributes":{"functionReturnParameters":2969},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2986,"name":"Literal","src":"19143:1:19"}],"id":2987,"name":"Return","src":"19136:8:19"}],"id":2988,"name":"Block","src":"19122:60:19"}],"id":2989,"name":"IfStatement","src":"19075:107:19"},{"attributes":{"functionReturnParameters":2969},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query2_withGasLimit","referencedDeclaration":1691,"type":"function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2990,"name":"Identifier","src":"19198:8:19"}],"id":2991,"name":"MemberAccess","src":"19198:28:19"}],"id":2992,"name":"MemberAccess","src":"19198:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2971,"type":"uint256","value":"price"},"id":2993,"name":"Identifier","src":"19233:5:19"}],"id":2994,"name":"FunctionCall","src":"19198:41:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2995,"name":"Literal","src":"19240:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2957,"type":"string memory","value":"_datasource"},"id":2996,"name":"Identifier","src":"19243:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2959,"type":"string memory","value":"_arg1"},"id":2997,"name":"Identifier","src":"19256:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2961,"type":"string memory","value":"_arg2"},"id":2998,"name":"Identifier","src":"19263:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2963,"type":"uint256","value":"_gasLimit"},"id":2999,"name":"Identifier","src":"19270:9:19"}],"id":3000,"name":"FunctionCall","src":"19198:82:19"}],"id":3001,"name":"Return","src":"19191:89:19"}],"id":3002,"name":"Block","src":"19001:286:19"}],"id":3003,"name":"FunctionDefinition","src":"18849:438:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3051,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3004,"name":"ElementaryTypeName","src":"19317:6:19"}],"id":3005,"name":"VariableDeclaration","src":"19317:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":3051,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3006,"name":"ElementaryTypeName","src":"19344:6:19"}],"id":3007,"name":"ArrayTypeName","src":"19344:8:19"}],"id":3008,"name":"VariableDeclaration","src":"19344:21:19"}],"id":3009,"name":"ParameterList","src":"19316:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3051,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3012,"name":"ElementaryTypeName","src":"19397:7:19"}],"id":3013,"name":"VariableDeclaration","src":"19397:11:19"}],"id":3014,"name":"ParameterList","src":"19396:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3010,"name":"Identifier","src":"19367:11:19"}],"id":3011,"name":"ModifierInvocation","src":"19367:11:19"},{"children":[{"attributes":{"assignments":[3016]},"children":[{"attributes":{"constant":false,"name":"price","scope":3050,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3015,"name":"ElementaryTypeName","src":"19420:4:19"}],"id":3016,"name":"VariableDeclaration","src":"19420:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3017,"name":"Identifier","src":"19433:8:19"}],"id":3018,"name":"MemberAccess","src":"19433:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3005,"type":"string memory","value":"_datasource"},"id":3019,"name":"Identifier","src":"19451:11:19"}],"id":3020,"name":"FunctionCall","src":"19433:30:19"}],"id":3021,"name":"VariableDeclarationStatement","src":"19420:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3016,"type":"uint256","value":"price"},"id":3022,"name":"Identifier","src":"19477:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":3023,"name":"Literal","src":"19485:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":3024,"name":"Identifier","src":"19495:2:19"}],"id":3025,"name":"MemberAccess","src":"19495:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":3026,"name":"Literal","src":"19509:6:19"}],"id":3027,"name":"BinaryOperation","src":"19495:20:19"}],"id":3028,"name":"BinaryOperation","src":"19485:30:19"}],"id":3029,"name":"BinaryOperation","src":"19477:38:19"},{"children":[{"attributes":{"functionReturnParameters":3014},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3030,"name":"Literal","src":"19538:1:19"}],"id":3031,"name":"Return","src":"19531:8:19"}],"id":3032,"name":"Block","src":"19517:60:19"}],"id":3033,"name":"IfStatement","src":"19473:104:19"},{"attributes":{"assignments":[3035]},"children":[{"attributes":{"constant":false,"name":"args","scope":3050,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3034,"name":"ElementaryTypeName","src":"19586:5:19"}],"id":3035,"name":"VariableDeclaration","src":"19586:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6759,"type":"function (string memory[] memory) pure returns (bytes memory)","value":"stra2cbor"},"id":3036,"name":"Identifier","src":"19606:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3008,"type":"string memory[] memory","value":"_argN"},"id":3037,"name":"Identifier","src":"19616:5:19"}],"id":3038,"name":"FunctionCall","src":"19606:16:19"}],"id":3039,"name":"VariableDeclarationStatement","src":"19586:36:19"},{"attributes":{"functionReturnParameters":3014},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN","referencedDeclaration":1626,"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3040,"name":"Identifier","src":"19639:8:19"}],"id":3041,"name":"MemberAccess","src":"19639:15:19"}],"id":3042,"name":"MemberAccess","src":"19639:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3016,"type":"uint256","value":"price"},"id":3043,"name":"Identifier","src":"19661:5:19"}],"id":3044,"name":"FunctionCall","src":"19639:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3045,"name":"Literal","src":"19668:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3005,"type":"string memory","value":"_datasource"},"id":3046,"name":"Identifier","src":"19671:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3035,"type":"bytes memory","value":"args"},"id":3047,"name":"Identifier","src":"19684:4:19"}],"id":3048,"name":"FunctionCall","src":"19639:50:19"}],"id":3049,"name":"Return","src":"19632:57:19"}],"id":3050,"name":"Block","src":"19410:286:19"}],"id":3051,"name":"FunctionDefinition","src":"19293:403:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3101,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3052,"name":"ElementaryTypeName","src":"19726:4:19"}],"id":3053,"name":"VariableDeclaration","src":"19726:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3101,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3054,"name":"ElementaryTypeName","src":"19743:6:19"}],"id":3055,"name":"VariableDeclaration","src":"19743:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":3101,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3056,"name":"ElementaryTypeName","src":"19770:6:19"}],"id":3057,"name":"ArrayTypeName","src":"19770:8:19"}],"id":3058,"name":"VariableDeclaration","src":"19770:21:19"}],"id":3059,"name":"ParameterList","src":"19725:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3101,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3062,"name":"ElementaryTypeName","src":"19823:7:19"}],"id":3063,"name":"VariableDeclaration","src":"19823:11:19"}],"id":3064,"name":"ParameterList","src":"19822:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3060,"name":"Identifier","src":"19793:11:19"}],"id":3061,"name":"ModifierInvocation","src":"19793:11:19"},{"children":[{"attributes":{"assignments":[3066]},"children":[{"attributes":{"constant":false,"name":"price","scope":3100,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3065,"name":"ElementaryTypeName","src":"19846:4:19"}],"id":3066,"name":"VariableDeclaration","src":"19846:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3067,"name":"Identifier","src":"19859:8:19"}],"id":3068,"name":"MemberAccess","src":"19859:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3055,"type":"string memory","value":"_datasource"},"id":3069,"name":"Identifier","src":"19877:11:19"}],"id":3070,"name":"FunctionCall","src":"19859:30:19"}],"id":3071,"name":"VariableDeclarationStatement","src":"19846:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"uint256","value":"price"},"id":3072,"name":"Identifier","src":"19903:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":3073,"name":"Literal","src":"19911:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":3074,"name":"Identifier","src":"19921:2:19"}],"id":3075,"name":"MemberAccess","src":"19921:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":3076,"name":"Literal","src":"19935:6:19"}],"id":3077,"name":"BinaryOperation","src":"19921:20:19"}],"id":3078,"name":"BinaryOperation","src":"19911:30:19"}],"id":3079,"name":"BinaryOperation","src":"19903:38:19"},{"children":[{"attributes":{"functionReturnParameters":3064},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3080,"name":"Literal","src":"19964:1:19"}],"id":3081,"name":"Return","src":"19957:8:19"}],"id":3082,"name":"Block","src":"19943:60:19"}],"id":3083,"name":"IfStatement","src":"19899:104:19"},{"attributes":{"assignments":[3085]},"children":[{"attributes":{"constant":false,"name":"args","scope":3100,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3084,"name":"ElementaryTypeName","src":"20012:5:19"}],"id":3085,"name":"VariableDeclaration","src":"20012:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6759,"type":"function (string memory[] memory) pure returns (bytes memory)","value":"stra2cbor"},"id":3086,"name":"Identifier","src":"20032:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3058,"type":"string memory[] memory","value":"_argN"},"id":3087,"name":"Identifier","src":"20042:5:19"}],"id":3088,"name":"FunctionCall","src":"20032:16:19"}],"id":3089,"name":"VariableDeclarationStatement","src":"20012:36:19"},{"attributes":{"functionReturnParameters":3064},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN","referencedDeclaration":1626,"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3090,"name":"Identifier","src":"20065:8:19"}],"id":3091,"name":"MemberAccess","src":"20065:15:19"}],"id":3092,"name":"MemberAccess","src":"20065:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"uint256","value":"price"},"id":3093,"name":"Identifier","src":"20087:5:19"}],"id":3094,"name":"FunctionCall","src":"20065:28:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3053,"type":"uint256","value":"_timestamp"},"id":3095,"name":"Identifier","src":"20094:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3055,"type":"string memory","value":"_datasource"},"id":3096,"name":"Identifier","src":"20106:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3085,"type":"bytes memory","value":"args"},"id":3097,"name":"Identifier","src":"20119:4:19"}],"id":3098,"name":"FunctionCall","src":"20065:59:19"}],"id":3099,"name":"Return","src":"20058:66:19"}],"id":3100,"name":"Block","src":"19836:295:19"}],"id":3101,"name":"FunctionDefinition","src":"19702:429:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3155,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3102,"name":"ElementaryTypeName","src":"20161:4:19"}],"id":3103,"name":"VariableDeclaration","src":"20161:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3155,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3104,"name":"ElementaryTypeName","src":"20178:6:19"}],"id":3105,"name":"VariableDeclaration","src":"20178:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":3155,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3106,"name":"ElementaryTypeName","src":"20205:6:19"}],"id":3107,"name":"ArrayTypeName","src":"20205:8:19"}],"id":3108,"name":"VariableDeclaration","src":"20205:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3155,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3109,"name":"ElementaryTypeName","src":"20228:4:19"}],"id":3110,"name":"VariableDeclaration","src":"20228:14:19"}],"id":3111,"name":"ParameterList","src":"20160:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3155,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3114,"name":"ElementaryTypeName","src":"20274:7:19"}],"id":3115,"name":"VariableDeclaration","src":"20274:11:19"}],"id":3116,"name":"ParameterList","src":"20273:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3112,"name":"Identifier","src":"20244:11:19"}],"id":3113,"name":"ModifierInvocation","src":"20244:11:19"},{"children":[{"attributes":{"assignments":[3118]},"children":[{"attributes":{"constant":false,"name":"price","scope":3154,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3117,"name":"ElementaryTypeName","src":"20297:4:19"}],"id":3118,"name":"VariableDeclaration","src":"20297:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3119,"name":"Identifier","src":"20310:8:19"}],"id":3120,"name":"MemberAccess","src":"20310:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3105,"type":"string memory","value":"_datasource"},"id":3121,"name":"Identifier","src":"20328:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3110,"type":"uint256","value":"_gasLimit"},"id":3122,"name":"Identifier","src":"20341:9:19"}],"id":3123,"name":"FunctionCall","src":"20310:41:19"}],"id":3124,"name":"VariableDeclarationStatement","src":"20297:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3118,"type":"uint256","value":"price"},"id":3125,"name":"Identifier","src":"20365:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":3126,"name":"Literal","src":"20373:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":3127,"name":"Identifier","src":"20383:2:19"}],"id":3128,"name":"MemberAccess","src":"20383:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3110,"type":"uint256","value":"_gasLimit"},"id":3129,"name":"Identifier","src":"20397:9:19"}],"id":3130,"name":"BinaryOperation","src":"20383:23:19"}],"id":3131,"name":"BinaryOperation","src":"20373:33:19"}],"id":3132,"name":"BinaryOperation","src":"20365:41:19"},{"children":[{"attributes":{"functionReturnParameters":3116},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3133,"name":"Literal","src":"20429:1:19"}],"id":3134,"name":"Return","src":"20422:8:19"}],"id":3135,"name":"Block","src":"20408:60:19"}],"id":3136,"name":"IfStatement","src":"20361:107:19"},{"attributes":{"assignments":[3138]},"children":[{"attributes":{"constant":false,"name":"args","scope":3154,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3137,"name":"ElementaryTypeName","src":"20477:5:19"}],"id":3138,"name":"VariableDeclaration","src":"20477:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6759,"type":"function (string memory[] memory) pure returns (bytes memory)","value":"stra2cbor"},"id":3139,"name":"Identifier","src":"20497:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3108,"type":"string memory[] memory","value":"_argN"},"id":3140,"name":"Identifier","src":"20507:5:19"}],"id":3141,"name":"FunctionCall","src":"20497:16:19"}],"id":3142,"name":"VariableDeclarationStatement","src":"20477:36:19"},{"attributes":{"functionReturnParameters":3116},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN_withGasLimit","referencedDeclaration":1676,"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3143,"name":"Identifier","src":"20530:8:19"}],"id":3144,"name":"MemberAccess","src":"20530:28:19"}],"id":3145,"name":"MemberAccess","src":"20530:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3118,"type":"uint256","value":"price"},"id":3146,"name":"Identifier","src":"20565:5:19"}],"id":3147,"name":"FunctionCall","src":"20530:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3103,"type":"uint256","value":"_timestamp"},"id":3148,"name":"Identifier","src":"20572:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3105,"type":"string memory","value":"_datasource"},"id":3149,"name":"Identifier","src":"20584:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3138,"type":"bytes memory","value":"args"},"id":3150,"name":"Identifier","src":"20597:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3110,"type":"uint256","value":"_gasLimit"},"id":3151,"name":"Identifier","src":"20603:9:19"}],"id":3152,"name":"FunctionCall","src":"20530:83:19"}],"id":3153,"name":"Return","src":"20523:90:19"}],"id":3154,"name":"Block","src":"20287:333:19"}],"id":3155,"name":"FunctionDefinition","src":"20137:483:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3207,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3156,"name":"ElementaryTypeName","src":"20650:6:19"}],"id":3157,"name":"VariableDeclaration","src":"20650:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":3207,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3158,"name":"ElementaryTypeName","src":"20677:6:19"}],"id":3159,"name":"ArrayTypeName","src":"20677:8:19"}],"id":3160,"name":"VariableDeclaration","src":"20677:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3207,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3161,"name":"ElementaryTypeName","src":"20700:4:19"}],"id":3162,"name":"VariableDeclaration","src":"20700:14:19"}],"id":3163,"name":"ParameterList","src":"20649:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3207,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3166,"name":"ElementaryTypeName","src":"20746:7:19"}],"id":3167,"name":"VariableDeclaration","src":"20746:11:19"}],"id":3168,"name":"ParameterList","src":"20745:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3164,"name":"Identifier","src":"20716:11:19"}],"id":3165,"name":"ModifierInvocation","src":"20716:11:19"},{"children":[{"attributes":{"assignments":[3170]},"children":[{"attributes":{"constant":false,"name":"price","scope":3206,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3169,"name":"ElementaryTypeName","src":"20769:4:19"}],"id":3170,"name":"VariableDeclaration","src":"20769:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3171,"name":"Identifier","src":"20782:8:19"}],"id":3172,"name":"MemberAccess","src":"20782:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3157,"type":"string memory","value":"_datasource"},"id":3173,"name":"Identifier","src":"20800:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3162,"type":"uint256","value":"_gasLimit"},"id":3174,"name":"Identifier","src":"20813:9:19"}],"id":3175,"name":"FunctionCall","src":"20782:41:19"}],"id":3176,"name":"VariableDeclarationStatement","src":"20769:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3170,"type":"uint256","value":"price"},"id":3177,"name":"Identifier","src":"20837:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":3178,"name":"Literal","src":"20845:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":3179,"name":"Identifier","src":"20855:2:19"}],"id":3180,"name":"MemberAccess","src":"20855:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3162,"type":"uint256","value":"_gasLimit"},"id":3181,"name":"Identifier","src":"20869:9:19"}],"id":3182,"name":"BinaryOperation","src":"20855:23:19"}],"id":3183,"name":"BinaryOperation","src":"20845:33:19"}],"id":3184,"name":"BinaryOperation","src":"20837:41:19"},{"children":[{"attributes":{"functionReturnParameters":3168},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3185,"name":"Literal","src":"20901:1:19"}],"id":3186,"name":"Return","src":"20894:8:19"}],"id":3187,"name":"Block","src":"20880:60:19"}],"id":3188,"name":"IfStatement","src":"20833:107:19"},{"attributes":{"assignments":[3190]},"children":[{"attributes":{"constant":false,"name":"args","scope":3206,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3189,"name":"ElementaryTypeName","src":"20949:5:19"}],"id":3190,"name":"VariableDeclaration","src":"20949:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6759,"type":"function (string memory[] memory) pure returns (bytes memory)","value":"stra2cbor"},"id":3191,"name":"Identifier","src":"20969:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3160,"type":"string memory[] memory","value":"_argN"},"id":3192,"name":"Identifier","src":"20979:5:19"}],"id":3193,"name":"FunctionCall","src":"20969:16:19"}],"id":3194,"name":"VariableDeclarationStatement","src":"20949:36:19"},{"attributes":{"functionReturnParameters":3168},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN_withGasLimit","referencedDeclaration":1676,"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3195,"name":"Identifier","src":"21002:8:19"}],"id":3196,"name":"MemberAccess","src":"21002:28:19"}],"id":3197,"name":"MemberAccess","src":"21002:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3170,"type":"uint256","value":"price"},"id":3198,"name":"Identifier","src":"21037:5:19"}],"id":3199,"name":"FunctionCall","src":"21002:41:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3200,"name":"Literal","src":"21044:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3157,"type":"string memory","value":"_datasource"},"id":3201,"name":"Identifier","src":"21047:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3190,"type":"bytes memory","value":"args"},"id":3202,"name":"Identifier","src":"21060:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3162,"type":"uint256","value":"_gasLimit"},"id":3203,"name":"Identifier","src":"21066:9:19"}],"id":3204,"name":"FunctionCall","src":"21002:74:19"}],"id":3205,"name":"Return","src":"20995:81:19"}],"id":3206,"name":"Block","src":"20759:324:19"}],"id":3207,"name":"FunctionDefinition","src":"20626:457:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3244,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3208,"name":"ElementaryTypeName","src":"21113:6:19"}],"id":3209,"name":"VariableDeclaration","src":"21113:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3244,"stateVariable":false,"storageLocation":"memory","type":"string[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[1]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3210,"name":"ElementaryTypeName","src":"21140:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3211,"name":"Literal","src":"21147:1:19"}],"id":3212,"name":"ArrayTypeName","src":"21140:9:19"}],"id":3213,"name":"VariableDeclaration","src":"21140:22:19"}],"id":3214,"name":"ParameterList","src":"21112:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3244,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3217,"name":"ElementaryTypeName","src":"21194:7:19"}],"id":3218,"name":"VariableDeclaration","src":"21194:11:19"}],"id":3219,"name":"ParameterList","src":"21193:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3215,"name":"Identifier","src":"21164:11:19"}],"id":3216,"name":"ModifierInvocation","src":"21164:11:19"},{"children":[{"attributes":{"assignments":[3223]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3243,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3221,"name":"ElementaryTypeName","src":"21217:6:19"}],"id":3222,"name":"ArrayTypeName","src":"21217:8:19"}],"id":3223,"name":"VariableDeclaration","src":"21217:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3224,"name":"ElementaryTypeName","src":"21247:6:19"}],"id":3225,"name":"ArrayTypeName","src":"21247:8:19"}],"id":3226,"name":"NewExpression","src":"21243:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3227,"name":"Literal","src":"21256:1:19"}],"id":3228,"name":"FunctionCall","src":"21243:15:19"}],"id":3229,"name":"VariableDeclarationStatement","src":"21217:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3223,"type":"string memory[] memory","value":"dynargs"},"id":3230,"name":"Identifier","src":"21268:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3231,"name":"Literal","src":"21276:1:19"}],"id":3232,"name":"IndexAccess","src":"21268:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3213,"type":"string memory[1] memory","value":"_args"},"id":3233,"name":"Identifier","src":"21281:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3234,"name":"Literal","src":"21287:1:19"}],"id":3235,"name":"IndexAccess","src":"21281:8:19"}],"id":3236,"name":"Assignment","src":"21268:21:19"}],"id":3237,"name":"ExpressionStatement","src":"21268:21:19"},{"attributes":{"functionReturnParameters":3219},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3238,"name":"Identifier","src":"21306:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3209,"type":"string memory","value":"_datasource"},"id":3239,"name":"Identifier","src":"21321:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3223,"type":"string memory[] memory","value":"dynargs"},"id":3240,"name":"Identifier","src":"21334:7:19"}],"id":3241,"name":"FunctionCall","src":"21306:36:19"}],"id":3242,"name":"Return","src":"21299:43:19"}],"id":3243,"name":"Block","src":"21207:142:19"}],"id":3244,"name":"FunctionDefinition","src":"21089:260:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3245,"name":"ElementaryTypeName","src":"21379:4:19"}],"id":3246,"name":"VariableDeclaration","src":"21379:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3284,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3247,"name":"ElementaryTypeName","src":"21396:6:19"}],"id":3248,"name":"VariableDeclaration","src":"21396:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3284,"stateVariable":false,"storageLocation":"memory","type":"string[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[1]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3249,"name":"ElementaryTypeName","src":"21423:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3250,"name":"Literal","src":"21430:1:19"}],"id":3251,"name":"ArrayTypeName","src":"21423:9:19"}],"id":3252,"name":"VariableDeclaration","src":"21423:22:19"}],"id":3253,"name":"ParameterList","src":"21378:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3284,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3256,"name":"ElementaryTypeName","src":"21477:7:19"}],"id":3257,"name":"VariableDeclaration","src":"21477:11:19"}],"id":3258,"name":"ParameterList","src":"21476:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3254,"name":"Identifier","src":"21447:11:19"}],"id":3255,"name":"ModifierInvocation","src":"21447:11:19"},{"children":[{"attributes":{"assignments":[3262]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3283,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3260,"name":"ElementaryTypeName","src":"21500:6:19"}],"id":3261,"name":"ArrayTypeName","src":"21500:8:19"}],"id":3262,"name":"VariableDeclaration","src":"21500:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3263,"name":"ElementaryTypeName","src":"21530:6:19"}],"id":3264,"name":"ArrayTypeName","src":"21530:8:19"}],"id":3265,"name":"NewExpression","src":"21526:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3266,"name":"Literal","src":"21539:1:19"}],"id":3267,"name":"FunctionCall","src":"21526:15:19"}],"id":3268,"name":"VariableDeclarationStatement","src":"21500:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3262,"type":"string memory[] memory","value":"dynargs"},"id":3269,"name":"Identifier","src":"21551:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3270,"name":"Literal","src":"21559:1:19"}],"id":3271,"name":"IndexAccess","src":"21551:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3252,"type":"string memory[1] memory","value":"_args"},"id":3272,"name":"Identifier","src":"21564:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3273,"name":"Literal","src":"21570:1:19"}],"id":3274,"name":"IndexAccess","src":"21564:8:19"}],"id":3275,"name":"Assignment","src":"21551:21:19"}],"id":3276,"name":"ExpressionStatement","src":"21551:21:19"},{"attributes":{"functionReturnParameters":3258},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3277,"name":"Identifier","src":"21589:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3246,"type":"uint256","value":"_timestamp"},"id":3278,"name":"Identifier","src":"21604:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"string memory","value":"_datasource"},"id":3279,"name":"Identifier","src":"21616:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3262,"type":"string memory[] memory","value":"dynargs"},"id":3280,"name":"Identifier","src":"21629:7:19"}],"id":3281,"name":"FunctionCall","src":"21589:48:19"}],"id":3282,"name":"Return","src":"21582:55:19"}],"id":3283,"name":"Block","src":"21490:154:19"}],"id":3284,"name":"FunctionDefinition","src":"21355:289:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3285,"name":"ElementaryTypeName","src":"21674:4:19"}],"id":3286,"name":"VariableDeclaration","src":"21674:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3327,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3287,"name":"ElementaryTypeName","src":"21691:6:19"}],"id":3288,"name":"VariableDeclaration","src":"21691:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3327,"stateVariable":false,"storageLocation":"memory","type":"string[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[1]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3289,"name":"ElementaryTypeName","src":"21718:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3290,"name":"Literal","src":"21725:1:19"}],"id":3291,"name":"ArrayTypeName","src":"21718:9:19"}],"id":3292,"name":"VariableDeclaration","src":"21718:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3293,"name":"ElementaryTypeName","src":"21742:4:19"}],"id":3294,"name":"VariableDeclaration","src":"21742:14:19"}],"id":3295,"name":"ParameterList","src":"21673:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3327,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3298,"name":"ElementaryTypeName","src":"21788:7:19"}],"id":3299,"name":"VariableDeclaration","src":"21788:11:19"}],"id":3300,"name":"ParameterList","src":"21787:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3296,"name":"Identifier","src":"21758:11:19"}],"id":3297,"name":"ModifierInvocation","src":"21758:11:19"},{"children":[{"attributes":{"assignments":[3304]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3326,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3302,"name":"ElementaryTypeName","src":"21811:6:19"}],"id":3303,"name":"ArrayTypeName","src":"21811:8:19"}],"id":3304,"name":"VariableDeclaration","src":"21811:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3305,"name":"ElementaryTypeName","src":"21841:6:19"}],"id":3306,"name":"ArrayTypeName","src":"21841:8:19"}],"id":3307,"name":"NewExpression","src":"21837:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3308,"name":"Literal","src":"21850:1:19"}],"id":3309,"name":"FunctionCall","src":"21837:15:19"}],"id":3310,"name":"VariableDeclarationStatement","src":"21811:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3304,"type":"string memory[] memory","value":"dynargs"},"id":3311,"name":"Identifier","src":"21862:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3312,"name":"Literal","src":"21870:1:19"}],"id":3313,"name":"IndexAccess","src":"21862:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3292,"type":"string memory[1] memory","value":"_args"},"id":3314,"name":"Identifier","src":"21875:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3315,"name":"Literal","src":"21881:1:19"}],"id":3316,"name":"IndexAccess","src":"21875:8:19"}],"id":3317,"name":"Assignment","src":"21862:21:19"}],"id":3318,"name":"ExpressionStatement","src":"21862:21:19"},{"attributes":{"functionReturnParameters":3300},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3319,"name":"Identifier","src":"21900:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3286,"type":"uint256","value":"_timestamp"},"id":3320,"name":"Identifier","src":"21915:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3288,"type":"string memory","value":"_datasource"},"id":3321,"name":"Identifier","src":"21927:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3304,"type":"string memory[] memory","value":"dynargs"},"id":3322,"name":"Identifier","src":"21940:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3294,"type":"uint256","value":"_gasLimit"},"id":3323,"name":"Identifier","src":"21949:9:19"}],"id":3324,"name":"FunctionCall","src":"21900:59:19"}],"id":3325,"name":"Return","src":"21893:66:19"}],"id":3326,"name":"Block","src":"21801:165:19"}],"id":3327,"name":"FunctionDefinition","src":"21650:316:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3367,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3328,"name":"ElementaryTypeName","src":"21996:6:19"}],"id":3329,"name":"VariableDeclaration","src":"21996:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3367,"stateVariable":false,"storageLocation":"memory","type":"string[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[1]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3330,"name":"ElementaryTypeName","src":"22023:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3331,"name":"Literal","src":"22030:1:19"}],"id":3332,"name":"ArrayTypeName","src":"22023:9:19"}],"id":3333,"name":"VariableDeclaration","src":"22023:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3367,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3334,"name":"ElementaryTypeName","src":"22047:4:19"}],"id":3335,"name":"VariableDeclaration","src":"22047:14:19"}],"id":3336,"name":"ParameterList","src":"21995:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3367,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3339,"name":"ElementaryTypeName","src":"22093:7:19"}],"id":3340,"name":"VariableDeclaration","src":"22093:11:19"}],"id":3341,"name":"ParameterList","src":"22092:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3337,"name":"Identifier","src":"22063:11:19"}],"id":3338,"name":"ModifierInvocation","src":"22063:11:19"},{"children":[{"attributes":{"assignments":[3345]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3366,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3343,"name":"ElementaryTypeName","src":"22116:6:19"}],"id":3344,"name":"ArrayTypeName","src":"22116:8:19"}],"id":3345,"name":"VariableDeclaration","src":"22116:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3346,"name":"ElementaryTypeName","src":"22146:6:19"}],"id":3347,"name":"ArrayTypeName","src":"22146:8:19"}],"id":3348,"name":"NewExpression","src":"22142:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3349,"name":"Literal","src":"22155:1:19"}],"id":3350,"name":"FunctionCall","src":"22142:15:19"}],"id":3351,"name":"VariableDeclarationStatement","src":"22116:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3345,"type":"string memory[] memory","value":"dynargs"},"id":3352,"name":"Identifier","src":"22167:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3353,"name":"Literal","src":"22175:1:19"}],"id":3354,"name":"IndexAccess","src":"22167:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3333,"type":"string memory[1] memory","value":"_args"},"id":3355,"name":"Identifier","src":"22180:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3356,"name":"Literal","src":"22186:1:19"}],"id":3357,"name":"IndexAccess","src":"22180:8:19"}],"id":3358,"name":"Assignment","src":"22167:21:19"}],"id":3359,"name":"ExpressionStatement","src":"22167:21:19"},{"attributes":{"functionReturnParameters":3341},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3360,"name":"Identifier","src":"22205:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3329,"type":"string memory","value":"_datasource"},"id":3361,"name":"Identifier","src":"22220:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3345,"type":"string memory[] memory","value":"dynargs"},"id":3362,"name":"Identifier","src":"22233:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"uint256","value":"_gasLimit"},"id":3363,"name":"Identifier","src":"22242:9:19"}],"id":3364,"name":"FunctionCall","src":"22205:47:19"}],"id":3365,"name":"Return","src":"22198:54:19"}],"id":3366,"name":"Block","src":"22106:153:19"}],"id":3367,"name":"FunctionDefinition","src":"21972:287:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3412,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3368,"name":"ElementaryTypeName","src":"22289:6:19"}],"id":3369,"name":"VariableDeclaration","src":"22289:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3412,"stateVariable":false,"storageLocation":"memory","type":"string[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[2]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3370,"name":"ElementaryTypeName","src":"22316:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3371,"name":"Literal","src":"22323:1:19"}],"id":3372,"name":"ArrayTypeName","src":"22316:9:19"}],"id":3373,"name":"VariableDeclaration","src":"22316:22:19"}],"id":3374,"name":"ParameterList","src":"22288:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3412,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3377,"name":"ElementaryTypeName","src":"22370:7:19"}],"id":3378,"name":"VariableDeclaration","src":"22370:11:19"}],"id":3379,"name":"ParameterList","src":"22369:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3375,"name":"Identifier","src":"22340:11:19"}],"id":3376,"name":"ModifierInvocation","src":"22340:11:19"},{"children":[{"attributes":{"assignments":[3383]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3411,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3381,"name":"ElementaryTypeName","src":"22393:6:19"}],"id":3382,"name":"ArrayTypeName","src":"22393:8:19"}],"id":3383,"name":"VariableDeclaration","src":"22393:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3384,"name":"ElementaryTypeName","src":"22423:6:19"}],"id":3385,"name":"ArrayTypeName","src":"22423:8:19"}],"id":3386,"name":"NewExpression","src":"22419:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3387,"name":"Literal","src":"22432:1:19"}],"id":3388,"name":"FunctionCall","src":"22419:15:19"}],"id":3389,"name":"VariableDeclarationStatement","src":"22393:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3383,"type":"string memory[] memory","value":"dynargs"},"id":3390,"name":"Identifier","src":"22444:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3391,"name":"Literal","src":"22452:1:19"}],"id":3392,"name":"IndexAccess","src":"22444:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3373,"type":"string memory[2] memory","value":"_args"},"id":3393,"name":"Identifier","src":"22457:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3394,"name":"Literal","src":"22463:1:19"}],"id":3395,"name":"IndexAccess","src":"22457:8:19"}],"id":3396,"name":"Assignment","src":"22444:21:19"}],"id":3397,"name":"ExpressionStatement","src":"22444:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3383,"type":"string memory[] memory","value":"dynargs"},"id":3398,"name":"Identifier","src":"22475:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3399,"name":"Literal","src":"22483:1:19"}],"id":3400,"name":"IndexAccess","src":"22475:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3373,"type":"string memory[2] memory","value":"_args"},"id":3401,"name":"Identifier","src":"22488:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3402,"name":"Literal","src":"22494:1:19"}],"id":3403,"name":"IndexAccess","src":"22488:8:19"}],"id":3404,"name":"Assignment","src":"22475:21:19"}],"id":3405,"name":"ExpressionStatement","src":"22475:21:19"},{"attributes":{"functionReturnParameters":3379},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3406,"name":"Identifier","src":"22513:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"string memory","value":"_datasource"},"id":3407,"name":"Identifier","src":"22528:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3383,"type":"string memory[] memory","value":"dynargs"},"id":3408,"name":"Identifier","src":"22541:7:19"}],"id":3409,"name":"FunctionCall","src":"22513:36:19"}],"id":3410,"name":"Return","src":"22506:43:19"}],"id":3411,"name":"Block","src":"22383:173:19"}],"id":3412,"name":"FunctionDefinition","src":"22265:291:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3460,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3413,"name":"ElementaryTypeName","src":"22586:4:19"}],"id":3414,"name":"VariableDeclaration","src":"22586:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3460,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3415,"name":"ElementaryTypeName","src":"22603:6:19"}],"id":3416,"name":"VariableDeclaration","src":"22603:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3460,"stateVariable":false,"storageLocation":"memory","type":"string[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[2]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3417,"name":"ElementaryTypeName","src":"22630:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3418,"name":"Literal","src":"22637:1:19"}],"id":3419,"name":"ArrayTypeName","src":"22630:9:19"}],"id":3420,"name":"VariableDeclaration","src":"22630:22:19"}],"id":3421,"name":"ParameterList","src":"22585:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3424,"name":"ElementaryTypeName","src":"22684:7:19"}],"id":3425,"name":"VariableDeclaration","src":"22684:11:19"}],"id":3426,"name":"ParameterList","src":"22683:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3422,"name":"Identifier","src":"22654:11:19"}],"id":3423,"name":"ModifierInvocation","src":"22654:11:19"},{"children":[{"attributes":{"assignments":[3430]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3459,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3428,"name":"ElementaryTypeName","src":"22707:6:19"}],"id":3429,"name":"ArrayTypeName","src":"22707:8:19"}],"id":3430,"name":"VariableDeclaration","src":"22707:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3431,"name":"ElementaryTypeName","src":"22737:6:19"}],"id":3432,"name":"ArrayTypeName","src":"22737:8:19"}],"id":3433,"name":"NewExpression","src":"22733:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3434,"name":"Literal","src":"22746:1:19"}],"id":3435,"name":"FunctionCall","src":"22733:15:19"}],"id":3436,"name":"VariableDeclarationStatement","src":"22707:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"string memory[] memory","value":"dynargs"},"id":3437,"name":"Identifier","src":"22758:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3438,"name":"Literal","src":"22766:1:19"}],"id":3439,"name":"IndexAccess","src":"22758:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"string memory[2] memory","value":"_args"},"id":3440,"name":"Identifier","src":"22771:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3441,"name":"Literal","src":"22777:1:19"}],"id":3442,"name":"IndexAccess","src":"22771:8:19"}],"id":3443,"name":"Assignment","src":"22758:21:19"}],"id":3444,"name":"ExpressionStatement","src":"22758:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"string memory[] memory","value":"dynargs"},"id":3445,"name":"Identifier","src":"22789:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3446,"name":"Literal","src":"22797:1:19"}],"id":3447,"name":"IndexAccess","src":"22789:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"string memory[2] memory","value":"_args"},"id":3448,"name":"Identifier","src":"22802:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3449,"name":"Literal","src":"22808:1:19"}],"id":3450,"name":"IndexAccess","src":"22802:8:19"}],"id":3451,"name":"Assignment","src":"22789:21:19"}],"id":3452,"name":"ExpressionStatement","src":"22789:21:19"},{"attributes":{"functionReturnParameters":3426},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3453,"name":"Identifier","src":"22827:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3414,"type":"uint256","value":"_timestamp"},"id":3454,"name":"Identifier","src":"22842:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3416,"type":"string memory","value":"_datasource"},"id":3455,"name":"Identifier","src":"22854:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"string memory[] memory","value":"dynargs"},"id":3456,"name":"Identifier","src":"22867:7:19"}],"id":3457,"name":"FunctionCall","src":"22827:48:19"}],"id":3458,"name":"Return","src":"22820:55:19"}],"id":3459,"name":"Block","src":"22697:185:19"}],"id":3460,"name":"FunctionDefinition","src":"22562:320:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3511,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3461,"name":"ElementaryTypeName","src":"22912:4:19"}],"id":3462,"name":"VariableDeclaration","src":"22912:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3511,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3463,"name":"ElementaryTypeName","src":"22929:6:19"}],"id":3464,"name":"VariableDeclaration","src":"22929:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3511,"stateVariable":false,"storageLocation":"memory","type":"string[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[2]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3465,"name":"ElementaryTypeName","src":"22956:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3466,"name":"Literal","src":"22963:1:19"}],"id":3467,"name":"ArrayTypeName","src":"22956:9:19"}],"id":3468,"name":"VariableDeclaration","src":"22956:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3511,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3469,"name":"ElementaryTypeName","src":"22980:4:19"}],"id":3470,"name":"VariableDeclaration","src":"22980:14:19"}],"id":3471,"name":"ParameterList","src":"22911:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3511,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3474,"name":"ElementaryTypeName","src":"23026:7:19"}],"id":3475,"name":"VariableDeclaration","src":"23026:11:19"}],"id":3476,"name":"ParameterList","src":"23025:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3472,"name":"Identifier","src":"22996:11:19"}],"id":3473,"name":"ModifierInvocation","src":"22996:11:19"},{"children":[{"attributes":{"assignments":[3480]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3510,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3478,"name":"ElementaryTypeName","src":"23049:6:19"}],"id":3479,"name":"ArrayTypeName","src":"23049:8:19"}],"id":3480,"name":"VariableDeclaration","src":"23049:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3481,"name":"ElementaryTypeName","src":"23079:6:19"}],"id":3482,"name":"ArrayTypeName","src":"23079:8:19"}],"id":3483,"name":"NewExpression","src":"23075:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3484,"name":"Literal","src":"23088:1:19"}],"id":3485,"name":"FunctionCall","src":"23075:15:19"}],"id":3486,"name":"VariableDeclarationStatement","src":"23049:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"string memory[] memory","value":"dynargs"},"id":3487,"name":"Identifier","src":"23100:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3488,"name":"Literal","src":"23108:1:19"}],"id":3489,"name":"IndexAccess","src":"23100:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3468,"type":"string memory[2] memory","value":"_args"},"id":3490,"name":"Identifier","src":"23113:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3491,"name":"Literal","src":"23119:1:19"}],"id":3492,"name":"IndexAccess","src":"23113:8:19"}],"id":3493,"name":"Assignment","src":"23100:21:19"}],"id":3494,"name":"ExpressionStatement","src":"23100:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"string memory[] memory","value":"dynargs"},"id":3495,"name":"Identifier","src":"23131:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3496,"name":"Literal","src":"23139:1:19"}],"id":3497,"name":"IndexAccess","src":"23131:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3468,"type":"string memory[2] memory","value":"_args"},"id":3498,"name":"Identifier","src":"23144:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3499,"name":"Literal","src":"23150:1:19"}],"id":3500,"name":"IndexAccess","src":"23144:8:19"}],"id":3501,"name":"Assignment","src":"23131:21:19"}],"id":3502,"name":"ExpressionStatement","src":"23131:21:19"},{"attributes":{"functionReturnParameters":3476},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3503,"name":"Identifier","src":"23169:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3462,"type":"uint256","value":"_timestamp"},"id":3504,"name":"Identifier","src":"23184:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3464,"type":"string memory","value":"_datasource"},"id":3505,"name":"Identifier","src":"23196:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"string memory[] memory","value":"dynargs"},"id":3506,"name":"Identifier","src":"23209:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"uint256","value":"_gasLimit"},"id":3507,"name":"Identifier","src":"23218:9:19"}],"id":3508,"name":"FunctionCall","src":"23169:59:19"}],"id":3509,"name":"Return","src":"23162:66:19"}],"id":3510,"name":"Block","src":"23039:196:19"}],"id":3511,"name":"FunctionDefinition","src":"22888:347:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3559,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3512,"name":"ElementaryTypeName","src":"23265:6:19"}],"id":3513,"name":"VariableDeclaration","src":"23265:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3559,"stateVariable":false,"storageLocation":"memory","type":"string[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[2]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3514,"name":"ElementaryTypeName","src":"23292:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3515,"name":"Literal","src":"23299:1:19"}],"id":3516,"name":"ArrayTypeName","src":"23292:9:19"}],"id":3517,"name":"VariableDeclaration","src":"23292:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3559,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3518,"name":"ElementaryTypeName","src":"23316:4:19"}],"id":3519,"name":"VariableDeclaration","src":"23316:14:19"}],"id":3520,"name":"ParameterList","src":"23264:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3559,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3523,"name":"ElementaryTypeName","src":"23362:7:19"}],"id":3524,"name":"VariableDeclaration","src":"23362:11:19"}],"id":3525,"name":"ParameterList","src":"23361:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3521,"name":"Identifier","src":"23332:11:19"}],"id":3522,"name":"ModifierInvocation","src":"23332:11:19"},{"children":[{"attributes":{"assignments":[3529]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3558,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3527,"name":"ElementaryTypeName","src":"23385:6:19"}],"id":3528,"name":"ArrayTypeName","src":"23385:8:19"}],"id":3529,"name":"VariableDeclaration","src":"23385:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3530,"name":"ElementaryTypeName","src":"23415:6:19"}],"id":3531,"name":"ArrayTypeName","src":"23415:8:19"}],"id":3532,"name":"NewExpression","src":"23411:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3533,"name":"Literal","src":"23424:1:19"}],"id":3534,"name":"FunctionCall","src":"23411:15:19"}],"id":3535,"name":"VariableDeclarationStatement","src":"23385:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"string memory[] memory","value":"dynargs"},"id":3536,"name":"Identifier","src":"23436:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3537,"name":"Literal","src":"23444:1:19"}],"id":3538,"name":"IndexAccess","src":"23436:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3517,"type":"string memory[2] memory","value":"_args"},"id":3539,"name":"Identifier","src":"23449:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3540,"name":"Literal","src":"23455:1:19"}],"id":3541,"name":"IndexAccess","src":"23449:8:19"}],"id":3542,"name":"Assignment","src":"23436:21:19"}],"id":3543,"name":"ExpressionStatement","src":"23436:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"string memory[] memory","value":"dynargs"},"id":3544,"name":"Identifier","src":"23467:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3545,"name":"Literal","src":"23475:1:19"}],"id":3546,"name":"IndexAccess","src":"23467:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3517,"type":"string memory[2] memory","value":"_args"},"id":3547,"name":"Identifier","src":"23480:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3548,"name":"Literal","src":"23486:1:19"}],"id":3549,"name":"IndexAccess","src":"23480:8:19"}],"id":3550,"name":"Assignment","src":"23467:21:19"}],"id":3551,"name":"ExpressionStatement","src":"23467:21:19"},{"attributes":{"functionReturnParameters":3525},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3552,"name":"Identifier","src":"23505:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3513,"type":"string memory","value":"_datasource"},"id":3553,"name":"Identifier","src":"23520:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"string memory[] memory","value":"dynargs"},"id":3554,"name":"Identifier","src":"23533:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3519,"type":"uint256","value":"_gasLimit"},"id":3555,"name":"Identifier","src":"23542:9:19"}],"id":3556,"name":"FunctionCall","src":"23505:47:19"}],"id":3557,"name":"Return","src":"23498:54:19"}],"id":3558,"name":"Block","src":"23375:184:19"}],"id":3559,"name":"FunctionDefinition","src":"23241:318:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3612,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3560,"name":"ElementaryTypeName","src":"23589:6:19"}],"id":3561,"name":"VariableDeclaration","src":"23589:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3612,"stateVariable":false,"storageLocation":"memory","type":"string[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[3]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3562,"name":"ElementaryTypeName","src":"23616:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3563,"name":"Literal","src":"23623:1:19"}],"id":3564,"name":"ArrayTypeName","src":"23616:9:19"}],"id":3565,"name":"VariableDeclaration","src":"23616:22:19"}],"id":3566,"name":"ParameterList","src":"23588:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3569,"name":"ElementaryTypeName","src":"23670:7:19"}],"id":3570,"name":"VariableDeclaration","src":"23670:11:19"}],"id":3571,"name":"ParameterList","src":"23669:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3567,"name":"Identifier","src":"23640:11:19"}],"id":3568,"name":"ModifierInvocation","src":"23640:11:19"},{"children":[{"attributes":{"assignments":[3575]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3611,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3573,"name":"ElementaryTypeName","src":"23693:6:19"}],"id":3574,"name":"ArrayTypeName","src":"23693:8:19"}],"id":3575,"name":"VariableDeclaration","src":"23693:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3576,"name":"ElementaryTypeName","src":"23723:6:19"}],"id":3577,"name":"ArrayTypeName","src":"23723:8:19"}],"id":3578,"name":"NewExpression","src":"23719:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3579,"name":"Literal","src":"23732:1:19"}],"id":3580,"name":"FunctionCall","src":"23719:15:19"}],"id":3581,"name":"VariableDeclarationStatement","src":"23693:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3575,"type":"string memory[] memory","value":"dynargs"},"id":3582,"name":"Identifier","src":"23744:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3583,"name":"Literal","src":"23752:1:19"}],"id":3584,"name":"IndexAccess","src":"23744:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3565,"type":"string memory[3] memory","value":"_args"},"id":3585,"name":"Identifier","src":"23757:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3586,"name":"Literal","src":"23763:1:19"}],"id":3587,"name":"IndexAccess","src":"23757:8:19"}],"id":3588,"name":"Assignment","src":"23744:21:19"}],"id":3589,"name":"ExpressionStatement","src":"23744:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3575,"type":"string memory[] memory","value":"dynargs"},"id":3590,"name":"Identifier","src":"23775:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3591,"name":"Literal","src":"23783:1:19"}],"id":3592,"name":"IndexAccess","src":"23775:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3565,"type":"string memory[3] memory","value":"_args"},"id":3593,"name":"Identifier","src":"23788:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3594,"name":"Literal","src":"23794:1:19"}],"id":3595,"name":"IndexAccess","src":"23788:8:19"}],"id":3596,"name":"Assignment","src":"23775:21:19"}],"id":3597,"name":"ExpressionStatement","src":"23775:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3575,"type":"string memory[] memory","value":"dynargs"},"id":3598,"name":"Identifier","src":"23806:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3599,"name":"Literal","src":"23814:1:19"}],"id":3600,"name":"IndexAccess","src":"23806:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3565,"type":"string memory[3] memory","value":"_args"},"id":3601,"name":"Identifier","src":"23819:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3602,"name":"Literal","src":"23825:1:19"}],"id":3603,"name":"IndexAccess","src":"23819:8:19"}],"id":3604,"name":"Assignment","src":"23806:21:19"}],"id":3605,"name":"ExpressionStatement","src":"23806:21:19"},{"attributes":{"functionReturnParameters":3571},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3606,"name":"Identifier","src":"23844:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3561,"type":"string memory","value":"_datasource"},"id":3607,"name":"Identifier","src":"23859:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3575,"type":"string memory[] memory","value":"dynargs"},"id":3608,"name":"Identifier","src":"23872:7:19"}],"id":3609,"name":"FunctionCall","src":"23844:36:19"}],"id":3610,"name":"Return","src":"23837:43:19"}],"id":3611,"name":"Block","src":"23683:204:19"}],"id":3612,"name":"FunctionDefinition","src":"23565:322:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3668,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3613,"name":"ElementaryTypeName","src":"23917:4:19"}],"id":3614,"name":"VariableDeclaration","src":"23917:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3668,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3615,"name":"ElementaryTypeName","src":"23934:6:19"}],"id":3616,"name":"VariableDeclaration","src":"23934:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3668,"stateVariable":false,"storageLocation":"memory","type":"string[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[3]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3617,"name":"ElementaryTypeName","src":"23961:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3618,"name":"Literal","src":"23968:1:19"}],"id":3619,"name":"ArrayTypeName","src":"23961:9:19"}],"id":3620,"name":"VariableDeclaration","src":"23961:22:19"}],"id":3621,"name":"ParameterList","src":"23916:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3668,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3624,"name":"ElementaryTypeName","src":"24015:7:19"}],"id":3625,"name":"VariableDeclaration","src":"24015:11:19"}],"id":3626,"name":"ParameterList","src":"24014:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3622,"name":"Identifier","src":"23985:11:19"}],"id":3623,"name":"ModifierInvocation","src":"23985:11:19"},{"children":[{"attributes":{"assignments":[3630]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3667,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3628,"name":"ElementaryTypeName","src":"24038:6:19"}],"id":3629,"name":"ArrayTypeName","src":"24038:8:19"}],"id":3630,"name":"VariableDeclaration","src":"24038:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3631,"name":"ElementaryTypeName","src":"24068:6:19"}],"id":3632,"name":"ArrayTypeName","src":"24068:8:19"}],"id":3633,"name":"NewExpression","src":"24064:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3634,"name":"Literal","src":"24077:1:19"}],"id":3635,"name":"FunctionCall","src":"24064:15:19"}],"id":3636,"name":"VariableDeclarationStatement","src":"24038:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3630,"type":"string memory[] memory","value":"dynargs"},"id":3637,"name":"Identifier","src":"24089:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3638,"name":"Literal","src":"24097:1:19"}],"id":3639,"name":"IndexAccess","src":"24089:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3620,"type":"string memory[3] memory","value":"_args"},"id":3640,"name":"Identifier","src":"24102:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3641,"name":"Literal","src":"24108:1:19"}],"id":3642,"name":"IndexAccess","src":"24102:8:19"}],"id":3643,"name":"Assignment","src":"24089:21:19"}],"id":3644,"name":"ExpressionStatement","src":"24089:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3630,"type":"string memory[] memory","value":"dynargs"},"id":3645,"name":"Identifier","src":"24120:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3646,"name":"Literal","src":"24128:1:19"}],"id":3647,"name":"IndexAccess","src":"24120:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3620,"type":"string memory[3] memory","value":"_args"},"id":3648,"name":"Identifier","src":"24133:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3649,"name":"Literal","src":"24139:1:19"}],"id":3650,"name":"IndexAccess","src":"24133:8:19"}],"id":3651,"name":"Assignment","src":"24120:21:19"}],"id":3652,"name":"ExpressionStatement","src":"24120:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3630,"type":"string memory[] memory","value":"dynargs"},"id":3653,"name":"Identifier","src":"24151:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3654,"name":"Literal","src":"24159:1:19"}],"id":3655,"name":"IndexAccess","src":"24151:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3620,"type":"string memory[3] memory","value":"_args"},"id":3656,"name":"Identifier","src":"24164:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3657,"name":"Literal","src":"24170:1:19"}],"id":3658,"name":"IndexAccess","src":"24164:8:19"}],"id":3659,"name":"Assignment","src":"24151:21:19"}],"id":3660,"name":"ExpressionStatement","src":"24151:21:19"},{"attributes":{"functionReturnParameters":3626},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3661,"name":"Identifier","src":"24189:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3614,"type":"uint256","value":"_timestamp"},"id":3662,"name":"Identifier","src":"24204:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3616,"type":"string memory","value":"_datasource"},"id":3663,"name":"Identifier","src":"24216:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3630,"type":"string memory[] memory","value":"dynargs"},"id":3664,"name":"Identifier","src":"24229:7:19"}],"id":3665,"name":"FunctionCall","src":"24189:48:19"}],"id":3666,"name":"Return","src":"24182:55:19"}],"id":3667,"name":"Block","src":"24028:216:19"}],"id":3668,"name":"FunctionDefinition","src":"23893:351:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3669,"name":"ElementaryTypeName","src":"24274:4:19"}],"id":3670,"name":"VariableDeclaration","src":"24274:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3727,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3671,"name":"ElementaryTypeName","src":"24291:6:19"}],"id":3672,"name":"VariableDeclaration","src":"24291:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3727,"stateVariable":false,"storageLocation":"memory","type":"string[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[3]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3673,"name":"ElementaryTypeName","src":"24318:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3674,"name":"Literal","src":"24325:1:19"}],"id":3675,"name":"ArrayTypeName","src":"24318:9:19"}],"id":3676,"name":"VariableDeclaration","src":"24318:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3677,"name":"ElementaryTypeName","src":"24342:4:19"}],"id":3678,"name":"VariableDeclaration","src":"24342:14:19"}],"id":3679,"name":"ParameterList","src":"24273:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3727,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3682,"name":"ElementaryTypeName","src":"24388:7:19"}],"id":3683,"name":"VariableDeclaration","src":"24388:11:19"}],"id":3684,"name":"ParameterList","src":"24387:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3680,"name":"Identifier","src":"24358:11:19"}],"id":3681,"name":"ModifierInvocation","src":"24358:11:19"},{"children":[{"attributes":{"assignments":[3688]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3726,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3686,"name":"ElementaryTypeName","src":"24411:6:19"}],"id":3687,"name":"ArrayTypeName","src":"24411:8:19"}],"id":3688,"name":"VariableDeclaration","src":"24411:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3689,"name":"ElementaryTypeName","src":"24441:6:19"}],"id":3690,"name":"ArrayTypeName","src":"24441:8:19"}],"id":3691,"name":"NewExpression","src":"24437:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3692,"name":"Literal","src":"24450:1:19"}],"id":3693,"name":"FunctionCall","src":"24437:15:19"}],"id":3694,"name":"VariableDeclarationStatement","src":"24411:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3688,"type":"string memory[] memory","value":"dynargs"},"id":3695,"name":"Identifier","src":"24462:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3696,"name":"Literal","src":"24470:1:19"}],"id":3697,"name":"IndexAccess","src":"24462:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3676,"type":"string memory[3] memory","value":"_args"},"id":3698,"name":"Identifier","src":"24475:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3699,"name":"Literal","src":"24481:1:19"}],"id":3700,"name":"IndexAccess","src":"24475:8:19"}],"id":3701,"name":"Assignment","src":"24462:21:19"}],"id":3702,"name":"ExpressionStatement","src":"24462:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3688,"type":"string memory[] memory","value":"dynargs"},"id":3703,"name":"Identifier","src":"24493:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3704,"name":"Literal","src":"24501:1:19"}],"id":3705,"name":"IndexAccess","src":"24493:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3676,"type":"string memory[3] memory","value":"_args"},"id":3706,"name":"Identifier","src":"24506:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3707,"name":"Literal","src":"24512:1:19"}],"id":3708,"name":"IndexAccess","src":"24506:8:19"}],"id":3709,"name":"Assignment","src":"24493:21:19"}],"id":3710,"name":"ExpressionStatement","src":"24493:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3688,"type":"string memory[] memory","value":"dynargs"},"id":3711,"name":"Identifier","src":"24524:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3712,"name":"Literal","src":"24532:1:19"}],"id":3713,"name":"IndexAccess","src":"24524:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3676,"type":"string memory[3] memory","value":"_args"},"id":3714,"name":"Identifier","src":"24537:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3715,"name":"Literal","src":"24543:1:19"}],"id":3716,"name":"IndexAccess","src":"24537:8:19"}],"id":3717,"name":"Assignment","src":"24524:21:19"}],"id":3718,"name":"ExpressionStatement","src":"24524:21:19"},{"attributes":{"functionReturnParameters":3684},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3719,"name":"Identifier","src":"24562:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"_timestamp"},"id":3720,"name":"Identifier","src":"24577:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3672,"type":"string memory","value":"_datasource"},"id":3721,"name":"Identifier","src":"24589:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3688,"type":"string memory[] memory","value":"dynargs"},"id":3722,"name":"Identifier","src":"24602:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3678,"type":"uint256","value":"_gasLimit"},"id":3723,"name":"Identifier","src":"24611:9:19"}],"id":3724,"name":"FunctionCall","src":"24562:59:19"}],"id":3725,"name":"Return","src":"24555:66:19"}],"id":3726,"name":"Block","src":"24401:227:19"}],"id":3727,"name":"FunctionDefinition","src":"24250:378:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3783,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3728,"name":"ElementaryTypeName","src":"24658:6:19"}],"id":3729,"name":"VariableDeclaration","src":"24658:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3783,"stateVariable":false,"storageLocation":"memory","type":"string[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[3]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3730,"name":"ElementaryTypeName","src":"24685:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3731,"name":"Literal","src":"24692:1:19"}],"id":3732,"name":"ArrayTypeName","src":"24685:9:19"}],"id":3733,"name":"VariableDeclaration","src":"24685:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3783,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3734,"name":"ElementaryTypeName","src":"24709:4:19"}],"id":3735,"name":"VariableDeclaration","src":"24709:14:19"}],"id":3736,"name":"ParameterList","src":"24657:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3783,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3739,"name":"ElementaryTypeName","src":"24755:7:19"}],"id":3740,"name":"VariableDeclaration","src":"24755:11:19"}],"id":3741,"name":"ParameterList","src":"24754:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3737,"name":"Identifier","src":"24725:11:19"}],"id":3738,"name":"ModifierInvocation","src":"24725:11:19"},{"children":[{"attributes":{"assignments":[3745]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3782,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3743,"name":"ElementaryTypeName","src":"24778:6:19"}],"id":3744,"name":"ArrayTypeName","src":"24778:8:19"}],"id":3745,"name":"VariableDeclaration","src":"24778:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3746,"name":"ElementaryTypeName","src":"24808:6:19"}],"id":3747,"name":"ArrayTypeName","src":"24808:8:19"}],"id":3748,"name":"NewExpression","src":"24804:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3749,"name":"Literal","src":"24817:1:19"}],"id":3750,"name":"FunctionCall","src":"24804:15:19"}],"id":3751,"name":"VariableDeclarationStatement","src":"24778:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3745,"type":"string memory[] memory","value":"dynargs"},"id":3752,"name":"Identifier","src":"24829:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3753,"name":"Literal","src":"24837:1:19"}],"id":3754,"name":"IndexAccess","src":"24829:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3733,"type":"string memory[3] memory","value":"_args"},"id":3755,"name":"Identifier","src":"24842:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3756,"name":"Literal","src":"24848:1:19"}],"id":3757,"name":"IndexAccess","src":"24842:8:19"}],"id":3758,"name":"Assignment","src":"24829:21:19"}],"id":3759,"name":"ExpressionStatement","src":"24829:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3745,"type":"string memory[] memory","value":"dynargs"},"id":3760,"name":"Identifier","src":"24860:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3761,"name":"Literal","src":"24868:1:19"}],"id":3762,"name":"IndexAccess","src":"24860:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3733,"type":"string memory[3] memory","value":"_args"},"id":3763,"name":"Identifier","src":"24873:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3764,"name":"Literal","src":"24879:1:19"}],"id":3765,"name":"IndexAccess","src":"24873:8:19"}],"id":3766,"name":"Assignment","src":"24860:21:19"}],"id":3767,"name":"ExpressionStatement","src":"24860:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3745,"type":"string memory[] memory","value":"dynargs"},"id":3768,"name":"Identifier","src":"24891:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3769,"name":"Literal","src":"24899:1:19"}],"id":3770,"name":"IndexAccess","src":"24891:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3733,"type":"string memory[3] memory","value":"_args"},"id":3771,"name":"Identifier","src":"24904:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3772,"name":"Literal","src":"24910:1:19"}],"id":3773,"name":"IndexAccess","src":"24904:8:19"}],"id":3774,"name":"Assignment","src":"24891:21:19"}],"id":3775,"name":"ExpressionStatement","src":"24891:21:19"},{"attributes":{"functionReturnParameters":3741},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3776,"name":"Identifier","src":"24929:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3729,"type":"string memory","value":"_datasource"},"id":3777,"name":"Identifier","src":"24944:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3745,"type":"string memory[] memory","value":"dynargs"},"id":3778,"name":"Identifier","src":"24957:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3735,"type":"uint256","value":"_gasLimit"},"id":3779,"name":"Identifier","src":"24966:9:19"}],"id":3780,"name":"FunctionCall","src":"24929:47:19"}],"id":3781,"name":"Return","src":"24922:54:19"}],"id":3782,"name":"Block","src":"24768:215:19"}],"id":3783,"name":"FunctionDefinition","src":"24634:349:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3844,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3784,"name":"ElementaryTypeName","src":"25013:6:19"}],"id":3785,"name":"VariableDeclaration","src":"25013:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3844,"stateVariable":false,"storageLocation":"memory","type":"string[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[4]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3786,"name":"ElementaryTypeName","src":"25040:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3787,"name":"Literal","src":"25047:1:19"}],"id":3788,"name":"ArrayTypeName","src":"25040:9:19"}],"id":3789,"name":"VariableDeclaration","src":"25040:22:19"}],"id":3790,"name":"ParameterList","src":"25012:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3844,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3793,"name":"ElementaryTypeName","src":"25094:7:19"}],"id":3794,"name":"VariableDeclaration","src":"25094:11:19"}],"id":3795,"name":"ParameterList","src":"25093:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3791,"name":"Identifier","src":"25064:11:19"}],"id":3792,"name":"ModifierInvocation","src":"25064:11:19"},{"children":[{"attributes":{"assignments":[3799]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3843,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3797,"name":"ElementaryTypeName","src":"25117:6:19"}],"id":3798,"name":"ArrayTypeName","src":"25117:8:19"}],"id":3799,"name":"VariableDeclaration","src":"25117:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3800,"name":"ElementaryTypeName","src":"25147:6:19"}],"id":3801,"name":"ArrayTypeName","src":"25147:8:19"}],"id":3802,"name":"NewExpression","src":"25143:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3803,"name":"Literal","src":"25156:1:19"}],"id":3804,"name":"FunctionCall","src":"25143:15:19"}],"id":3805,"name":"VariableDeclarationStatement","src":"25117:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3806,"name":"Identifier","src":"25168:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3807,"name":"Literal","src":"25176:1:19"}],"id":3808,"name":"IndexAccess","src":"25168:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"string memory[4] memory","value":"_args"},"id":3809,"name":"Identifier","src":"25181:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3810,"name":"Literal","src":"25187:1:19"}],"id":3811,"name":"IndexAccess","src":"25181:8:19"}],"id":3812,"name":"Assignment","src":"25168:21:19"}],"id":3813,"name":"ExpressionStatement","src":"25168:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3814,"name":"Identifier","src":"25199:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3815,"name":"Literal","src":"25207:1:19"}],"id":3816,"name":"IndexAccess","src":"25199:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"string memory[4] memory","value":"_args"},"id":3817,"name":"Identifier","src":"25212:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3818,"name":"Literal","src":"25218:1:19"}],"id":3819,"name":"IndexAccess","src":"25212:8:19"}],"id":3820,"name":"Assignment","src":"25199:21:19"}],"id":3821,"name":"ExpressionStatement","src":"25199:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3822,"name":"Identifier","src":"25230:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3823,"name":"Literal","src":"25238:1:19"}],"id":3824,"name":"IndexAccess","src":"25230:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"string memory[4] memory","value":"_args"},"id":3825,"name":"Identifier","src":"25243:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3826,"name":"Literal","src":"25249:1:19"}],"id":3827,"name":"IndexAccess","src":"25243:8:19"}],"id":3828,"name":"Assignment","src":"25230:21:19"}],"id":3829,"name":"ExpressionStatement","src":"25230:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3830,"name":"Identifier","src":"25261:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3831,"name":"Literal","src":"25269:1:19"}],"id":3832,"name":"IndexAccess","src":"25261:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"string memory[4] memory","value":"_args"},"id":3833,"name":"Identifier","src":"25274:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3834,"name":"Literal","src":"25280:1:19"}],"id":3835,"name":"IndexAccess","src":"25274:8:19"}],"id":3836,"name":"Assignment","src":"25261:21:19"}],"id":3837,"name":"ExpressionStatement","src":"25261:21:19"},{"attributes":{"functionReturnParameters":3795},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3838,"name":"Identifier","src":"25299:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3785,"type":"string memory","value":"_datasource"},"id":3839,"name":"Identifier","src":"25314:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3840,"name":"Identifier","src":"25327:7:19"}],"id":3841,"name":"FunctionCall","src":"25299:36:19"}],"id":3842,"name":"Return","src":"25292:43:19"}],"id":3843,"name":"Block","src":"25107:235:19"}],"id":3844,"name":"FunctionDefinition","src":"24989:353:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3908,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3845,"name":"ElementaryTypeName","src":"25372:4:19"}],"id":3846,"name":"VariableDeclaration","src":"25372:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3908,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3847,"name":"ElementaryTypeName","src":"25389:6:19"}],"id":3848,"name":"VariableDeclaration","src":"25389:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3908,"stateVariable":false,"storageLocation":"memory","type":"string[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[4]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3849,"name":"ElementaryTypeName","src":"25416:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3850,"name":"Literal","src":"25423:1:19"}],"id":3851,"name":"ArrayTypeName","src":"25416:9:19"}],"id":3852,"name":"VariableDeclaration","src":"25416:22:19"}],"id":3853,"name":"ParameterList","src":"25371:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3908,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3856,"name":"ElementaryTypeName","src":"25470:7:19"}],"id":3857,"name":"VariableDeclaration","src":"25470:11:19"}],"id":3858,"name":"ParameterList","src":"25469:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3854,"name":"Identifier","src":"25440:11:19"}],"id":3855,"name":"ModifierInvocation","src":"25440:11:19"},{"children":[{"attributes":{"assignments":[3862]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3907,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3860,"name":"ElementaryTypeName","src":"25493:6:19"}],"id":3861,"name":"ArrayTypeName","src":"25493:8:19"}],"id":3862,"name":"VariableDeclaration","src":"25493:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3863,"name":"ElementaryTypeName","src":"25523:6:19"}],"id":3864,"name":"ArrayTypeName","src":"25523:8:19"}],"id":3865,"name":"NewExpression","src":"25519:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3866,"name":"Literal","src":"25532:1:19"}],"id":3867,"name":"FunctionCall","src":"25519:15:19"}],"id":3868,"name":"VariableDeclarationStatement","src":"25493:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3869,"name":"Identifier","src":"25544:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3870,"name":"Literal","src":"25552:1:19"}],"id":3871,"name":"IndexAccess","src":"25544:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"string memory[4] memory","value":"_args"},"id":3872,"name":"Identifier","src":"25557:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3873,"name":"Literal","src":"25563:1:19"}],"id":3874,"name":"IndexAccess","src":"25557:8:19"}],"id":3875,"name":"Assignment","src":"25544:21:19"}],"id":3876,"name":"ExpressionStatement","src":"25544:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3877,"name":"Identifier","src":"25575:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3878,"name":"Literal","src":"25583:1:19"}],"id":3879,"name":"IndexAccess","src":"25575:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"string memory[4] memory","value":"_args"},"id":3880,"name":"Identifier","src":"25588:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3881,"name":"Literal","src":"25594:1:19"}],"id":3882,"name":"IndexAccess","src":"25588:8:19"}],"id":3883,"name":"Assignment","src":"25575:21:19"}],"id":3884,"name":"ExpressionStatement","src":"25575:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3885,"name":"Identifier","src":"25606:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3886,"name":"Literal","src":"25614:1:19"}],"id":3887,"name":"IndexAccess","src":"25606:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"string memory[4] memory","value":"_args"},"id":3888,"name":"Identifier","src":"25619:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3889,"name":"Literal","src":"25625:1:19"}],"id":3890,"name":"IndexAccess","src":"25619:8:19"}],"id":3891,"name":"Assignment","src":"25606:21:19"}],"id":3892,"name":"ExpressionStatement","src":"25606:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3893,"name":"Identifier","src":"25637:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3894,"name":"Literal","src":"25645:1:19"}],"id":3895,"name":"IndexAccess","src":"25637:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"string memory[4] memory","value":"_args"},"id":3896,"name":"Identifier","src":"25650:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3897,"name":"Literal","src":"25656:1:19"}],"id":3898,"name":"IndexAccess","src":"25650:8:19"}],"id":3899,"name":"Assignment","src":"25637:21:19"}],"id":3900,"name":"ExpressionStatement","src":"25637:21:19"},{"attributes":{"functionReturnParameters":3858},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3901,"name":"Identifier","src":"25675:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"uint256","value":"_timestamp"},"id":3902,"name":"Identifier","src":"25690:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"string memory","value":"_datasource"},"id":3903,"name":"Identifier","src":"25702:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3904,"name":"Identifier","src":"25715:7:19"}],"id":3905,"name":"FunctionCall","src":"25675:48:19"}],"id":3906,"name":"Return","src":"25668:55:19"}],"id":3907,"name":"Block","src":"25483:247:19"}],"id":3908,"name":"FunctionDefinition","src":"25348:382:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3975,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3909,"name":"ElementaryTypeName","src":"25760:4:19"}],"id":3910,"name":"VariableDeclaration","src":"25760:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3975,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3911,"name":"ElementaryTypeName","src":"25777:6:19"}],"id":3912,"name":"VariableDeclaration","src":"25777:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3975,"stateVariable":false,"storageLocation":"memory","type":"string[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[4]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3913,"name":"ElementaryTypeName","src":"25804:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3914,"name":"Literal","src":"25811:1:19"}],"id":3915,"name":"ArrayTypeName","src":"25804:9:19"}],"id":3916,"name":"VariableDeclaration","src":"25804:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3975,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3917,"name":"ElementaryTypeName","src":"25828:4:19"}],"id":3918,"name":"VariableDeclaration","src":"25828:14:19"}],"id":3919,"name":"ParameterList","src":"25759:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3975,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3922,"name":"ElementaryTypeName","src":"25874:7:19"}],"id":3923,"name":"VariableDeclaration","src":"25874:11:19"}],"id":3924,"name":"ParameterList","src":"25873:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3920,"name":"Identifier","src":"25844:11:19"}],"id":3921,"name":"ModifierInvocation","src":"25844:11:19"},{"children":[{"attributes":{"assignments":[3928]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3974,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3926,"name":"ElementaryTypeName","src":"25897:6:19"}],"id":3927,"name":"ArrayTypeName","src":"25897:8:19"}],"id":3928,"name":"VariableDeclaration","src":"25897:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3929,"name":"ElementaryTypeName","src":"25927:6:19"}],"id":3930,"name":"ArrayTypeName","src":"25927:8:19"}],"id":3931,"name":"NewExpression","src":"25923:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3932,"name":"Literal","src":"25936:1:19"}],"id":3933,"name":"FunctionCall","src":"25923:15:19"}],"id":3934,"name":"VariableDeclarationStatement","src":"25897:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3935,"name":"Identifier","src":"25948:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3936,"name":"Literal","src":"25956:1:19"}],"id":3937,"name":"IndexAccess","src":"25948:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"string memory[4] memory","value":"_args"},"id":3938,"name":"Identifier","src":"25961:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3939,"name":"Literal","src":"25967:1:19"}],"id":3940,"name":"IndexAccess","src":"25961:8:19"}],"id":3941,"name":"Assignment","src":"25948:21:19"}],"id":3942,"name":"ExpressionStatement","src":"25948:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3943,"name":"Identifier","src":"25979:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3944,"name":"Literal","src":"25987:1:19"}],"id":3945,"name":"IndexAccess","src":"25979:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"string memory[4] memory","value":"_args"},"id":3946,"name":"Identifier","src":"25992:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3947,"name":"Literal","src":"25998:1:19"}],"id":3948,"name":"IndexAccess","src":"25992:8:19"}],"id":3949,"name":"Assignment","src":"25979:21:19"}],"id":3950,"name":"ExpressionStatement","src":"25979:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3951,"name":"Identifier","src":"26010:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3952,"name":"Literal","src":"26018:1:19"}],"id":3953,"name":"IndexAccess","src":"26010:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"string memory[4] memory","value":"_args"},"id":3954,"name":"Identifier","src":"26023:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3955,"name":"Literal","src":"26029:1:19"}],"id":3956,"name":"IndexAccess","src":"26023:8:19"}],"id":3957,"name":"Assignment","src":"26010:21:19"}],"id":3958,"name":"ExpressionStatement","src":"26010:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3959,"name":"Identifier","src":"26041:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3960,"name":"Literal","src":"26049:1:19"}],"id":3961,"name":"IndexAccess","src":"26041:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"string memory[4] memory","value":"_args"},"id":3962,"name":"Identifier","src":"26054:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3963,"name":"Literal","src":"26060:1:19"}],"id":3964,"name":"IndexAccess","src":"26054:8:19"}],"id":3965,"name":"Assignment","src":"26041:21:19"}],"id":3966,"name":"ExpressionStatement","src":"26041:21:19"},{"attributes":{"functionReturnParameters":3924},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3967,"name":"Identifier","src":"26079:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"uint256","value":"_timestamp"},"id":3968,"name":"Identifier","src":"26094:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3912,"type":"string memory","value":"_datasource"},"id":3969,"name":"Identifier","src":"26106:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3970,"name":"Identifier","src":"26119:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"uint256","value":"_gasLimit"},"id":3971,"name":"Identifier","src":"26128:9:19"}],"id":3972,"name":"FunctionCall","src":"26079:59:19"}],"id":3973,"name":"Return","src":"26072:66:19"}],"id":3974,"name":"Block","src":"25887:258:19"}],"id":3975,"name":"FunctionDefinition","src":"25736:409:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4039,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3976,"name":"ElementaryTypeName","src":"26175:6:19"}],"id":3977,"name":"VariableDeclaration","src":"26175:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4039,"stateVariable":false,"storageLocation":"memory","type":"string[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[4]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3978,"name":"ElementaryTypeName","src":"26202:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3979,"name":"Literal","src":"26209:1:19"}],"id":3980,"name":"ArrayTypeName","src":"26202:9:19"}],"id":3981,"name":"VariableDeclaration","src":"26202:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3982,"name":"ElementaryTypeName","src":"26226:4:19"}],"id":3983,"name":"VariableDeclaration","src":"26226:14:19"}],"id":3984,"name":"ParameterList","src":"26174:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4039,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3987,"name":"ElementaryTypeName","src":"26272:7:19"}],"id":3988,"name":"VariableDeclaration","src":"26272:11:19"}],"id":3989,"name":"ParameterList","src":"26271:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3985,"name":"Identifier","src":"26242:11:19"}],"id":3986,"name":"ModifierInvocation","src":"26242:11:19"},{"children":[{"attributes":{"assignments":[3993]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4038,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3991,"name":"ElementaryTypeName","src":"26295:6:19"}],"id":3992,"name":"ArrayTypeName","src":"26295:8:19"}],"id":3993,"name":"VariableDeclaration","src":"26295:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3994,"name":"ElementaryTypeName","src":"26325:6:19"}],"id":3995,"name":"ArrayTypeName","src":"26325:8:19"}],"id":3996,"name":"NewExpression","src":"26321:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3997,"name":"Literal","src":"26334:1:19"}],"id":3998,"name":"FunctionCall","src":"26321:15:19"}],"id":3999,"name":"VariableDeclarationStatement","src":"26295:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4000,"name":"Identifier","src":"26346:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4001,"name":"Literal","src":"26354:1:19"}],"id":4002,"name":"IndexAccess","src":"26346:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3981,"type":"string memory[4] memory","value":"_args"},"id":4003,"name":"Identifier","src":"26359:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4004,"name":"Literal","src":"26365:1:19"}],"id":4005,"name":"IndexAccess","src":"26359:8:19"}],"id":4006,"name":"Assignment","src":"26346:21:19"}],"id":4007,"name":"ExpressionStatement","src":"26346:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4008,"name":"Identifier","src":"26377:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4009,"name":"Literal","src":"26385:1:19"}],"id":4010,"name":"IndexAccess","src":"26377:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3981,"type":"string memory[4] memory","value":"_args"},"id":4011,"name":"Identifier","src":"26390:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4012,"name":"Literal","src":"26396:1:19"}],"id":4013,"name":"IndexAccess","src":"26390:8:19"}],"id":4014,"name":"Assignment","src":"26377:21:19"}],"id":4015,"name":"ExpressionStatement","src":"26377:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4016,"name":"Identifier","src":"26408:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4017,"name":"Literal","src":"26416:1:19"}],"id":4018,"name":"IndexAccess","src":"26408:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3981,"type":"string memory[4] memory","value":"_args"},"id":4019,"name":"Identifier","src":"26421:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4020,"name":"Literal","src":"26427:1:19"}],"id":4021,"name":"IndexAccess","src":"26421:8:19"}],"id":4022,"name":"Assignment","src":"26408:21:19"}],"id":4023,"name":"ExpressionStatement","src":"26408:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4024,"name":"Identifier","src":"26439:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4025,"name":"Literal","src":"26447:1:19"}],"id":4026,"name":"IndexAccess","src":"26439:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3981,"type":"string memory[4] memory","value":"_args"},"id":4027,"name":"Identifier","src":"26452:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4028,"name":"Literal","src":"26458:1:19"}],"id":4029,"name":"IndexAccess","src":"26452:8:19"}],"id":4030,"name":"Assignment","src":"26439:21:19"}],"id":4031,"name":"ExpressionStatement","src":"26439:21:19"},{"attributes":{"functionReturnParameters":3989},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4032,"name":"Identifier","src":"26477:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3977,"type":"string memory","value":"_datasource"},"id":4033,"name":"Identifier","src":"26492:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4034,"name":"Identifier","src":"26505:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3983,"type":"uint256","value":"_gasLimit"},"id":4035,"name":"Identifier","src":"26514:9:19"}],"id":4036,"name":"FunctionCall","src":"26477:47:19"}],"id":4037,"name":"Return","src":"26470:54:19"}],"id":4038,"name":"Block","src":"26285:246:19"}],"id":4039,"name":"FunctionDefinition","src":"26151:380:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4108,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4040,"name":"ElementaryTypeName","src":"26561:6:19"}],"id":4041,"name":"VariableDeclaration","src":"26561:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4108,"stateVariable":false,"storageLocation":"memory","type":"string[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[5]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4042,"name":"ElementaryTypeName","src":"26588:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4043,"name":"Literal","src":"26595:1:19"}],"id":4044,"name":"ArrayTypeName","src":"26588:9:19"}],"id":4045,"name":"VariableDeclaration","src":"26588:22:19"}],"id":4046,"name":"ParameterList","src":"26560:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4108,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4049,"name":"ElementaryTypeName","src":"26642:7:19"}],"id":4050,"name":"VariableDeclaration","src":"26642:11:19"}],"id":4051,"name":"ParameterList","src":"26641:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4047,"name":"Identifier","src":"26612:11:19"}],"id":4048,"name":"ModifierInvocation","src":"26612:11:19"},{"children":[{"attributes":{"assignments":[4055]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4107,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4053,"name":"ElementaryTypeName","src":"26665:6:19"}],"id":4054,"name":"ArrayTypeName","src":"26665:8:19"}],"id":4055,"name":"VariableDeclaration","src":"26665:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4056,"name":"ElementaryTypeName","src":"26695:6:19"}],"id":4057,"name":"ArrayTypeName","src":"26695:8:19"}],"id":4058,"name":"NewExpression","src":"26691:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4059,"name":"Literal","src":"26704:1:19"}],"id":4060,"name":"FunctionCall","src":"26691:15:19"}],"id":4061,"name":"VariableDeclarationStatement","src":"26665:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4062,"name":"Identifier","src":"26716:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4063,"name":"Literal","src":"26724:1:19"}],"id":4064,"name":"IndexAccess","src":"26716:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4065,"name":"Identifier","src":"26729:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4066,"name":"Literal","src":"26735:1:19"}],"id":4067,"name":"IndexAccess","src":"26729:8:19"}],"id":4068,"name":"Assignment","src":"26716:21:19"}],"id":4069,"name":"ExpressionStatement","src":"26716:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4070,"name":"Identifier","src":"26747:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4071,"name":"Literal","src":"26755:1:19"}],"id":4072,"name":"IndexAccess","src":"26747:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4073,"name":"Identifier","src":"26760:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4074,"name":"Literal","src":"26766:1:19"}],"id":4075,"name":"IndexAccess","src":"26760:8:19"}],"id":4076,"name":"Assignment","src":"26747:21:19"}],"id":4077,"name":"ExpressionStatement","src":"26747:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4078,"name":"Identifier","src":"26778:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4079,"name":"Literal","src":"26786:1:19"}],"id":4080,"name":"IndexAccess","src":"26778:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4081,"name":"Identifier","src":"26791:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4082,"name":"Literal","src":"26797:1:19"}],"id":4083,"name":"IndexAccess","src":"26791:8:19"}],"id":4084,"name":"Assignment","src":"26778:21:19"}],"id":4085,"name":"ExpressionStatement","src":"26778:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4086,"name":"Identifier","src":"26809:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4087,"name":"Literal","src":"26817:1:19"}],"id":4088,"name":"IndexAccess","src":"26809:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4089,"name":"Identifier","src":"26822:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4090,"name":"Literal","src":"26828:1:19"}],"id":4091,"name":"IndexAccess","src":"26822:8:19"}],"id":4092,"name":"Assignment","src":"26809:21:19"}],"id":4093,"name":"ExpressionStatement","src":"26809:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4094,"name":"Identifier","src":"26840:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4095,"name":"Literal","src":"26848:1:19"}],"id":4096,"name":"IndexAccess","src":"26840:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4097,"name":"Identifier","src":"26853:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4098,"name":"Literal","src":"26859:1:19"}],"id":4099,"name":"IndexAccess","src":"26853:8:19"}],"id":4100,"name":"Assignment","src":"26840:21:19"}],"id":4101,"name":"ExpressionStatement","src":"26840:21:19"},{"attributes":{"functionReturnParameters":4051},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4102,"name":"Identifier","src":"26878:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4041,"type":"string memory","value":"_datasource"},"id":4103,"name":"Identifier","src":"26893:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4104,"name":"Identifier","src":"26906:7:19"}],"id":4105,"name":"FunctionCall","src":"26878:36:19"}],"id":4106,"name":"Return","src":"26871:43:19"}],"id":4107,"name":"Block","src":"26655:266:19"}],"id":4108,"name":"FunctionDefinition","src":"26537:384:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4180,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4109,"name":"ElementaryTypeName","src":"26951:4:19"}],"id":4110,"name":"VariableDeclaration","src":"26951:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4180,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4111,"name":"ElementaryTypeName","src":"26968:6:19"}],"id":4112,"name":"VariableDeclaration","src":"26968:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4180,"stateVariable":false,"storageLocation":"memory","type":"string[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[5]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4113,"name":"ElementaryTypeName","src":"26995:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4114,"name":"Literal","src":"27002:1:19"}],"id":4115,"name":"ArrayTypeName","src":"26995:9:19"}],"id":4116,"name":"VariableDeclaration","src":"26995:22:19"}],"id":4117,"name":"ParameterList","src":"26950:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4180,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4120,"name":"ElementaryTypeName","src":"27049:7:19"}],"id":4121,"name":"VariableDeclaration","src":"27049:11:19"}],"id":4122,"name":"ParameterList","src":"27048:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4118,"name":"Identifier","src":"27019:11:19"}],"id":4119,"name":"ModifierInvocation","src":"27019:11:19"},{"children":[{"attributes":{"assignments":[4126]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4179,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4124,"name":"ElementaryTypeName","src":"27072:6:19"}],"id":4125,"name":"ArrayTypeName","src":"27072:8:19"}],"id":4126,"name":"VariableDeclaration","src":"27072:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4127,"name":"ElementaryTypeName","src":"27102:6:19"}],"id":4128,"name":"ArrayTypeName","src":"27102:8:19"}],"id":4129,"name":"NewExpression","src":"27098:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4130,"name":"Literal","src":"27111:1:19"}],"id":4131,"name":"FunctionCall","src":"27098:15:19"}],"id":4132,"name":"VariableDeclarationStatement","src":"27072:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4133,"name":"Identifier","src":"27123:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4134,"name":"Literal","src":"27131:1:19"}],"id":4135,"name":"IndexAccess","src":"27123:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4136,"name":"Identifier","src":"27136:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4137,"name":"Literal","src":"27142:1:19"}],"id":4138,"name":"IndexAccess","src":"27136:8:19"}],"id":4139,"name":"Assignment","src":"27123:21:19"}],"id":4140,"name":"ExpressionStatement","src":"27123:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4141,"name":"Identifier","src":"27154:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4142,"name":"Literal","src":"27162:1:19"}],"id":4143,"name":"IndexAccess","src":"27154:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4144,"name":"Identifier","src":"27167:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4145,"name":"Literal","src":"27173:1:19"}],"id":4146,"name":"IndexAccess","src":"27167:8:19"}],"id":4147,"name":"Assignment","src":"27154:21:19"}],"id":4148,"name":"ExpressionStatement","src":"27154:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4149,"name":"Identifier","src":"27185:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4150,"name":"Literal","src":"27193:1:19"}],"id":4151,"name":"IndexAccess","src":"27185:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4152,"name":"Identifier","src":"27198:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4153,"name":"Literal","src":"27204:1:19"}],"id":4154,"name":"IndexAccess","src":"27198:8:19"}],"id":4155,"name":"Assignment","src":"27185:21:19"}],"id":4156,"name":"ExpressionStatement","src":"27185:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4157,"name":"Identifier","src":"27216:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4158,"name":"Literal","src":"27224:1:19"}],"id":4159,"name":"IndexAccess","src":"27216:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4160,"name":"Identifier","src":"27229:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4161,"name":"Literal","src":"27235:1:19"}],"id":4162,"name":"IndexAccess","src":"27229:8:19"}],"id":4163,"name":"Assignment","src":"27216:21:19"}],"id":4164,"name":"ExpressionStatement","src":"27216:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4165,"name":"Identifier","src":"27247:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4166,"name":"Literal","src":"27255:1:19"}],"id":4167,"name":"IndexAccess","src":"27247:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4168,"name":"Identifier","src":"27260:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4169,"name":"Literal","src":"27266:1:19"}],"id":4170,"name":"IndexAccess","src":"27260:8:19"}],"id":4171,"name":"Assignment","src":"27247:21:19"}],"id":4172,"name":"ExpressionStatement","src":"27247:21:19"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4173,"name":"Identifier","src":"27285:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"uint256","value":"_timestamp"},"id":4174,"name":"Identifier","src":"27300:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"string memory","value":"_datasource"},"id":4175,"name":"Identifier","src":"27312:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4176,"name":"Identifier","src":"27325:7:19"}],"id":4177,"name":"FunctionCall","src":"27285:48:19"}],"id":4178,"name":"Return","src":"27278:55:19"}],"id":4179,"name":"Block","src":"27062:278:19"}],"id":4180,"name":"FunctionDefinition","src":"26927:413:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4181,"name":"ElementaryTypeName","src":"27370:4:19"}],"id":4182,"name":"VariableDeclaration","src":"27370:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4255,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4183,"name":"ElementaryTypeName","src":"27387:6:19"}],"id":4184,"name":"VariableDeclaration","src":"27387:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4255,"stateVariable":false,"storageLocation":"memory","type":"string[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[5]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4185,"name":"ElementaryTypeName","src":"27414:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4186,"name":"Literal","src":"27421:1:19"}],"id":4187,"name":"ArrayTypeName","src":"27414:9:19"}],"id":4188,"name":"VariableDeclaration","src":"27414:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4189,"name":"ElementaryTypeName","src":"27438:4:19"}],"id":4190,"name":"VariableDeclaration","src":"27438:14:19"}],"id":4191,"name":"ParameterList","src":"27369:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4255,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4194,"name":"ElementaryTypeName","src":"27484:7:19"}],"id":4195,"name":"VariableDeclaration","src":"27484:11:19"}],"id":4196,"name":"ParameterList","src":"27483:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4192,"name":"Identifier","src":"27454:11:19"}],"id":4193,"name":"ModifierInvocation","src":"27454:11:19"},{"children":[{"attributes":{"assignments":[4200]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4254,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4198,"name":"ElementaryTypeName","src":"27507:6:19"}],"id":4199,"name":"ArrayTypeName","src":"27507:8:19"}],"id":4200,"name":"VariableDeclaration","src":"27507:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4201,"name":"ElementaryTypeName","src":"27537:6:19"}],"id":4202,"name":"ArrayTypeName","src":"27537:8:19"}],"id":4203,"name":"NewExpression","src":"27533:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4204,"name":"Literal","src":"27546:1:19"}],"id":4205,"name":"FunctionCall","src":"27533:15:19"}],"id":4206,"name":"VariableDeclarationStatement","src":"27507:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4207,"name":"Identifier","src":"27558:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4208,"name":"Literal","src":"27566:1:19"}],"id":4209,"name":"IndexAccess","src":"27558:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4210,"name":"Identifier","src":"27571:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4211,"name":"Literal","src":"27577:1:19"}],"id":4212,"name":"IndexAccess","src":"27571:8:19"}],"id":4213,"name":"Assignment","src":"27558:21:19"}],"id":4214,"name":"ExpressionStatement","src":"27558:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4215,"name":"Identifier","src":"27589:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4216,"name":"Literal","src":"27597:1:19"}],"id":4217,"name":"IndexAccess","src":"27589:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4218,"name":"Identifier","src":"27602:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4219,"name":"Literal","src":"27608:1:19"}],"id":4220,"name":"IndexAccess","src":"27602:8:19"}],"id":4221,"name":"Assignment","src":"27589:21:19"}],"id":4222,"name":"ExpressionStatement","src":"27589:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4223,"name":"Identifier","src":"27620:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4224,"name":"Literal","src":"27628:1:19"}],"id":4225,"name":"IndexAccess","src":"27620:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4226,"name":"Identifier","src":"27633:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4227,"name":"Literal","src":"27639:1:19"}],"id":4228,"name":"IndexAccess","src":"27633:8:19"}],"id":4229,"name":"Assignment","src":"27620:21:19"}],"id":4230,"name":"ExpressionStatement","src":"27620:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4231,"name":"Identifier","src":"27651:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4232,"name":"Literal","src":"27659:1:19"}],"id":4233,"name":"IndexAccess","src":"27651:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4234,"name":"Identifier","src":"27664:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4235,"name":"Literal","src":"27670:1:19"}],"id":4236,"name":"IndexAccess","src":"27664:8:19"}],"id":4237,"name":"Assignment","src":"27651:21:19"}],"id":4238,"name":"ExpressionStatement","src":"27651:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4239,"name":"Identifier","src":"27682:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4240,"name":"Literal","src":"27690:1:19"}],"id":4241,"name":"IndexAccess","src":"27682:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4242,"name":"Identifier","src":"27695:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4243,"name":"Literal","src":"27701:1:19"}],"id":4244,"name":"IndexAccess","src":"27695:8:19"}],"id":4245,"name":"Assignment","src":"27682:21:19"}],"id":4246,"name":"ExpressionStatement","src":"27682:21:19"},{"attributes":{"functionReturnParameters":4196},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4247,"name":"Identifier","src":"27720:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4182,"type":"uint256","value":"_timestamp"},"id":4248,"name":"Identifier","src":"27735:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4184,"type":"string memory","value":"_datasource"},"id":4249,"name":"Identifier","src":"27747:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4250,"name":"Identifier","src":"27760:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"uint256","value":"_gasLimit"},"id":4251,"name":"Identifier","src":"27769:9:19"}],"id":4252,"name":"FunctionCall","src":"27720:59:19"}],"id":4253,"name":"Return","src":"27713:66:19"}],"id":4254,"name":"Block","src":"27497:289:19"}],"id":4255,"name":"FunctionDefinition","src":"27346:440:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4327,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4256,"name":"ElementaryTypeName","src":"27816:6:19"}],"id":4257,"name":"VariableDeclaration","src":"27816:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4327,"stateVariable":false,"storageLocation":"memory","type":"string[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[5]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4258,"name":"ElementaryTypeName","src":"27843:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4259,"name":"Literal","src":"27850:1:19"}],"id":4260,"name":"ArrayTypeName","src":"27843:9:19"}],"id":4261,"name":"VariableDeclaration","src":"27843:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4262,"name":"ElementaryTypeName","src":"27867:4:19"}],"id":4263,"name":"VariableDeclaration","src":"27867:14:19"}],"id":4264,"name":"ParameterList","src":"27815:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4327,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4267,"name":"ElementaryTypeName","src":"27913:7:19"}],"id":4268,"name":"VariableDeclaration","src":"27913:11:19"}],"id":4269,"name":"ParameterList","src":"27912:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4265,"name":"Identifier","src":"27883:11:19"}],"id":4266,"name":"ModifierInvocation","src":"27883:11:19"},{"children":[{"attributes":{"assignments":[4273]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4326,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4271,"name":"ElementaryTypeName","src":"27936:6:19"}],"id":4272,"name":"ArrayTypeName","src":"27936:8:19"}],"id":4273,"name":"VariableDeclaration","src":"27936:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4274,"name":"ElementaryTypeName","src":"27966:6:19"}],"id":4275,"name":"ArrayTypeName","src":"27966:8:19"}],"id":4276,"name":"NewExpression","src":"27962:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4277,"name":"Literal","src":"27975:1:19"}],"id":4278,"name":"FunctionCall","src":"27962:15:19"}],"id":4279,"name":"VariableDeclarationStatement","src":"27936:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4280,"name":"Identifier","src":"27987:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4281,"name":"Literal","src":"27995:1:19"}],"id":4282,"name":"IndexAccess","src":"27987:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4283,"name":"Identifier","src":"28000:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4284,"name":"Literal","src":"28006:1:19"}],"id":4285,"name":"IndexAccess","src":"28000:8:19"}],"id":4286,"name":"Assignment","src":"27987:21:19"}],"id":4287,"name":"ExpressionStatement","src":"27987:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4288,"name":"Identifier","src":"28018:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4289,"name":"Literal","src":"28026:1:19"}],"id":4290,"name":"IndexAccess","src":"28018:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4291,"name":"Identifier","src":"28031:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4292,"name":"Literal","src":"28037:1:19"}],"id":4293,"name":"IndexAccess","src":"28031:8:19"}],"id":4294,"name":"Assignment","src":"28018:21:19"}],"id":4295,"name":"ExpressionStatement","src":"28018:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4296,"name":"Identifier","src":"28049:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4297,"name":"Literal","src":"28057:1:19"}],"id":4298,"name":"IndexAccess","src":"28049:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4299,"name":"Identifier","src":"28062:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4300,"name":"Literal","src":"28068:1:19"}],"id":4301,"name":"IndexAccess","src":"28062:8:19"}],"id":4302,"name":"Assignment","src":"28049:21:19"}],"id":4303,"name":"ExpressionStatement","src":"28049:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4304,"name":"Identifier","src":"28080:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4305,"name":"Literal","src":"28088:1:19"}],"id":4306,"name":"IndexAccess","src":"28080:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4307,"name":"Identifier","src":"28093:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4308,"name":"Literal","src":"28099:1:19"}],"id":4309,"name":"IndexAccess","src":"28093:8:19"}],"id":4310,"name":"Assignment","src":"28080:21:19"}],"id":4311,"name":"ExpressionStatement","src":"28080:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4312,"name":"Identifier","src":"28111:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4313,"name":"Literal","src":"28119:1:19"}],"id":4314,"name":"IndexAccess","src":"28111:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4315,"name":"Identifier","src":"28124:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4316,"name":"Literal","src":"28130:1:19"}],"id":4317,"name":"IndexAccess","src":"28124:8:19"}],"id":4318,"name":"Assignment","src":"28111:21:19"}],"id":4319,"name":"ExpressionStatement","src":"28111:21:19"},{"attributes":{"functionReturnParameters":4269},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4320,"name":"Identifier","src":"28149:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"string memory","value":"_datasource"},"id":4321,"name":"Identifier","src":"28164:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4322,"name":"Identifier","src":"28177:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4263,"type":"uint256","value":"_gasLimit"},"id":4323,"name":"Identifier","src":"28186:9:19"}],"id":4324,"name":"FunctionCall","src":"28149:47:19"}],"id":4325,"name":"Return","src":"28142:54:19"}],"id":4326,"name":"Block","src":"27926:277:19"}],"id":4327,"name":"FunctionDefinition","src":"27792:411:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4375,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4328,"name":"ElementaryTypeName","src":"28233:6:19"}],"id":4329,"name":"VariableDeclaration","src":"28233:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":4375,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4330,"name":"ElementaryTypeName","src":"28260:5:19"}],"id":4331,"name":"ArrayTypeName","src":"28260:7:19"}],"id":4332,"name":"VariableDeclaration","src":"28260:20:19"}],"id":4333,"name":"ParameterList","src":"28232:49:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4375,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4336,"name":"ElementaryTypeName","src":"28312:7:19"}],"id":4337,"name":"VariableDeclaration","src":"28312:11:19"}],"id":4338,"name":"ParameterList","src":"28311:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4334,"name":"Identifier","src":"28282:11:19"}],"id":4335,"name":"ModifierInvocation","src":"28282:11:19"},{"children":[{"attributes":{"assignments":[4340]},"children":[{"attributes":{"constant":false,"name":"price","scope":4374,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4339,"name":"ElementaryTypeName","src":"28335:4:19"}],"id":4340,"name":"VariableDeclaration","src":"28335:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4341,"name":"Identifier","src":"28348:8:19"}],"id":4342,"name":"MemberAccess","src":"28348:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4329,"type":"string memory","value":"_datasource"},"id":4343,"name":"Identifier","src":"28366:11:19"}],"id":4344,"name":"FunctionCall","src":"28348:30:19"}],"id":4345,"name":"VariableDeclarationStatement","src":"28335:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4340,"type":"uint256","value":"price"},"id":4346,"name":"Identifier","src":"28392:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":4347,"name":"Literal","src":"28400:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":4348,"name":"Identifier","src":"28410:2:19"}],"id":4349,"name":"MemberAccess","src":"28410:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":4350,"name":"Literal","src":"28424:6:19"}],"id":4351,"name":"BinaryOperation","src":"28410:20:19"}],"id":4352,"name":"BinaryOperation","src":"28400:30:19"}],"id":4353,"name":"BinaryOperation","src":"28392:38:19"},{"children":[{"attributes":{"functionReturnParameters":4338},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4354,"name":"Literal","src":"28453:1:19"}],"id":4355,"name":"Return","src":"28446:8:19"}],"id":4356,"name":"Block","src":"28432:60:19"}],"id":4357,"name":"IfStatement","src":"28388:104:19"},{"attributes":{"assignments":[4359]},"children":[{"attributes":{"constant":false,"name":"args","scope":4374,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4358,"name":"ElementaryTypeName","src":"28501:5:19"}],"id":4359,"name":"VariableDeclaration","src":"28501:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6817,"type":"function (bytes memory[] memory) pure returns (bytes memory)","value":"ba2cbor"},"id":4360,"name":"Identifier","src":"28521:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4332,"type":"bytes memory[] memory","value":"_argN"},"id":4361,"name":"Identifier","src":"28529:5:19"}],"id":4362,"name":"FunctionCall","src":"28521:14:19"}],"id":4363,"name":"VariableDeclarationStatement","src":"28501:34:19"},{"attributes":{"functionReturnParameters":4338},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN","referencedDeclaration":1626,"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4364,"name":"Identifier","src":"28552:8:19"}],"id":4365,"name":"MemberAccess","src":"28552:15:19"}],"id":4366,"name":"MemberAccess","src":"28552:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4340,"type":"uint256","value":"price"},"id":4367,"name":"Identifier","src":"28574:5:19"}],"id":4368,"name":"FunctionCall","src":"28552:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4369,"name":"Literal","src":"28581:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4329,"type":"string memory","value":"_datasource"},"id":4370,"name":"Identifier","src":"28584:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4359,"type":"bytes memory","value":"args"},"id":4371,"name":"Identifier","src":"28597:4:19"}],"id":4372,"name":"FunctionCall","src":"28552:50:19"}],"id":4373,"name":"Return","src":"28545:57:19"}],"id":4374,"name":"Block","src":"28325:284:19"}],"id":4375,"name":"FunctionDefinition","src":"28209:400:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4425,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4376,"name":"ElementaryTypeName","src":"28639:4:19"}],"id":4377,"name":"VariableDeclaration","src":"28639:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4425,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4378,"name":"ElementaryTypeName","src":"28656:6:19"}],"id":4379,"name":"VariableDeclaration","src":"28656:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":4425,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4380,"name":"ElementaryTypeName","src":"28683:5:19"}],"id":4381,"name":"ArrayTypeName","src":"28683:7:19"}],"id":4382,"name":"VariableDeclaration","src":"28683:20:19"}],"id":4383,"name":"ParameterList","src":"28638:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4425,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4386,"name":"ElementaryTypeName","src":"28735:7:19"}],"id":4387,"name":"VariableDeclaration","src":"28735:11:19"}],"id":4388,"name":"ParameterList","src":"28734:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4384,"name":"Identifier","src":"28705:11:19"}],"id":4385,"name":"ModifierInvocation","src":"28705:11:19"},{"children":[{"attributes":{"assignments":[4390]},"children":[{"attributes":{"constant":false,"name":"price","scope":4424,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4389,"name":"ElementaryTypeName","src":"28758:4:19"}],"id":4390,"name":"VariableDeclaration","src":"28758:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4391,"name":"Identifier","src":"28771:8:19"}],"id":4392,"name":"MemberAccess","src":"28771:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4379,"type":"string memory","value":"_datasource"},"id":4393,"name":"Identifier","src":"28789:11:19"}],"id":4394,"name":"FunctionCall","src":"28771:30:19"}],"id":4395,"name":"VariableDeclarationStatement","src":"28758:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4390,"type":"uint256","value":"price"},"id":4396,"name":"Identifier","src":"28815:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":4397,"name":"Literal","src":"28823:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":4398,"name":"Identifier","src":"28833:2:19"}],"id":4399,"name":"MemberAccess","src":"28833:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":4400,"name":"Literal","src":"28847:6:19"}],"id":4401,"name":"BinaryOperation","src":"28833:20:19"}],"id":4402,"name":"BinaryOperation","src":"28823:30:19"}],"id":4403,"name":"BinaryOperation","src":"28815:38:19"},{"children":[{"attributes":{"functionReturnParameters":4388},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4404,"name":"Literal","src":"28876:1:19"}],"id":4405,"name":"Return","src":"28869:8:19"}],"id":4406,"name":"Block","src":"28855:60:19"}],"id":4407,"name":"IfStatement","src":"28811:104:19"},{"attributes":{"assignments":[4409]},"children":[{"attributes":{"constant":false,"name":"args","scope":4424,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4408,"name":"ElementaryTypeName","src":"28924:5:19"}],"id":4409,"name":"VariableDeclaration","src":"28924:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6817,"type":"function (bytes memory[] memory) pure returns (bytes memory)","value":"ba2cbor"},"id":4410,"name":"Identifier","src":"28944:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4382,"type":"bytes memory[] memory","value":"_argN"},"id":4411,"name":"Identifier","src":"28952:5:19"}],"id":4412,"name":"FunctionCall","src":"28944:14:19"}],"id":4413,"name":"VariableDeclarationStatement","src":"28924:34:19"},{"attributes":{"functionReturnParameters":4388},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN","referencedDeclaration":1626,"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4414,"name":"Identifier","src":"28975:8:19"}],"id":4415,"name":"MemberAccess","src":"28975:15:19"}],"id":4416,"name":"MemberAccess","src":"28975:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4390,"type":"uint256","value":"price"},"id":4417,"name":"Identifier","src":"28997:5:19"}],"id":4418,"name":"FunctionCall","src":"28975:28:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4377,"type":"uint256","value":"_timestamp"},"id":4419,"name":"Identifier","src":"29004:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4379,"type":"string memory","value":"_datasource"},"id":4420,"name":"Identifier","src":"29016:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"bytes memory","value":"args"},"id":4421,"name":"Identifier","src":"29029:4:19"}],"id":4422,"name":"FunctionCall","src":"28975:59:19"}],"id":4423,"name":"Return","src":"28968:66:19"}],"id":4424,"name":"Block","src":"28748:293:19"}],"id":4425,"name":"FunctionDefinition","src":"28615:426:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4426,"name":"ElementaryTypeName","src":"29071:4:19"}],"id":4427,"name":"VariableDeclaration","src":"29071:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4479,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4428,"name":"ElementaryTypeName","src":"29088:6:19"}],"id":4429,"name":"VariableDeclaration","src":"29088:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":4479,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4430,"name":"ElementaryTypeName","src":"29115:5:19"}],"id":4431,"name":"ArrayTypeName","src":"29115:7:19"}],"id":4432,"name":"VariableDeclaration","src":"29115:20:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4433,"name":"ElementaryTypeName","src":"29137:4:19"}],"id":4434,"name":"VariableDeclaration","src":"29137:14:19"}],"id":4435,"name":"ParameterList","src":"29070:82:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4479,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4438,"name":"ElementaryTypeName","src":"29183:7:19"}],"id":4439,"name":"VariableDeclaration","src":"29183:11:19"}],"id":4440,"name":"ParameterList","src":"29182:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4436,"name":"Identifier","src":"29153:11:19"}],"id":4437,"name":"ModifierInvocation","src":"29153:11:19"},{"children":[{"attributes":{"assignments":[4442]},"children":[{"attributes":{"constant":false,"name":"price","scope":4478,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4441,"name":"ElementaryTypeName","src":"29206:4:19"}],"id":4442,"name":"VariableDeclaration","src":"29206:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4443,"name":"Identifier","src":"29219:8:19"}],"id":4444,"name":"MemberAccess","src":"29219:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4429,"type":"string memory","value":"_datasource"},"id":4445,"name":"Identifier","src":"29237:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4434,"type":"uint256","value":"_gasLimit"},"id":4446,"name":"Identifier","src":"29250:9:19"}],"id":4447,"name":"FunctionCall","src":"29219:41:19"}],"id":4448,"name":"VariableDeclarationStatement","src":"29206:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4442,"type":"uint256","value":"price"},"id":4449,"name":"Identifier","src":"29274:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":4450,"name":"Literal","src":"29282:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":4451,"name":"Identifier","src":"29292:2:19"}],"id":4452,"name":"MemberAccess","src":"29292:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4434,"type":"uint256","value":"_gasLimit"},"id":4453,"name":"Identifier","src":"29306:9:19"}],"id":4454,"name":"BinaryOperation","src":"29292:23:19"}],"id":4455,"name":"BinaryOperation","src":"29282:33:19"}],"id":4456,"name":"BinaryOperation","src":"29274:41:19"},{"children":[{"attributes":{"functionReturnParameters":4440},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4457,"name":"Literal","src":"29338:1:19"}],"id":4458,"name":"Return","src":"29331:8:19"}],"id":4459,"name":"Block","src":"29317:60:19"}],"id":4460,"name":"IfStatement","src":"29270:107:19"},{"attributes":{"assignments":[4462]},"children":[{"attributes":{"constant":false,"name":"args","scope":4478,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4461,"name":"ElementaryTypeName","src":"29386:5:19"}],"id":4462,"name":"VariableDeclaration","src":"29386:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6817,"type":"function (bytes memory[] memory) pure returns (bytes memory)","value":"ba2cbor"},"id":4463,"name":"Identifier","src":"29406:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4432,"type":"bytes memory[] memory","value":"_argN"},"id":4464,"name":"Identifier","src":"29414:5:19"}],"id":4465,"name":"FunctionCall","src":"29406:14:19"}],"id":4466,"name":"VariableDeclarationStatement","src":"29386:34:19"},{"attributes":{"functionReturnParameters":4440},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN_withGasLimit","referencedDeclaration":1676,"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4467,"name":"Identifier","src":"29437:8:19"}],"id":4468,"name":"MemberAccess","src":"29437:28:19"}],"id":4469,"name":"MemberAccess","src":"29437:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4442,"type":"uint256","value":"price"},"id":4470,"name":"Identifier","src":"29472:5:19"}],"id":4471,"name":"FunctionCall","src":"29437:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4427,"type":"uint256","value":"_timestamp"},"id":4472,"name":"Identifier","src":"29479:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4429,"type":"string memory","value":"_datasource"},"id":4473,"name":"Identifier","src":"29491:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4462,"type":"bytes memory","value":"args"},"id":4474,"name":"Identifier","src":"29504:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4434,"type":"uint256","value":"_gasLimit"},"id":4475,"name":"Identifier","src":"29510:9:19"}],"id":4476,"name":"FunctionCall","src":"29437:83:19"}],"id":4477,"name":"Return","src":"29430:90:19"}],"id":4478,"name":"Block","src":"29196:331:19"}],"id":4479,"name":"FunctionDefinition","src":"29047:480:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4531,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4480,"name":"ElementaryTypeName","src":"29557:6:19"}],"id":4481,"name":"VariableDeclaration","src":"29557:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":4531,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4482,"name":"ElementaryTypeName","src":"29584:5:19"}],"id":4483,"name":"ArrayTypeName","src":"29584:7:19"}],"id":4484,"name":"VariableDeclaration","src":"29584:20:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4531,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4485,"name":"ElementaryTypeName","src":"29606:4:19"}],"id":4486,"name":"VariableDeclaration","src":"29606:14:19"}],"id":4487,"name":"ParameterList","src":"29556:65:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4531,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4490,"name":"ElementaryTypeName","src":"29652:7:19"}],"id":4491,"name":"VariableDeclaration","src":"29652:11:19"}],"id":4492,"name":"ParameterList","src":"29651:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4488,"name":"Identifier","src":"29622:11:19"}],"id":4489,"name":"ModifierInvocation","src":"29622:11:19"},{"children":[{"attributes":{"assignments":[4494]},"children":[{"attributes":{"constant":false,"name":"price","scope":4530,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4493,"name":"ElementaryTypeName","src":"29675:4:19"}],"id":4494,"name":"VariableDeclaration","src":"29675:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4495,"name":"Identifier","src":"29688:8:19"}],"id":4496,"name":"MemberAccess","src":"29688:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"string memory","value":"_datasource"},"id":4497,"name":"Identifier","src":"29706:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4486,"type":"uint256","value":"_gasLimit"},"id":4498,"name":"Identifier","src":"29719:9:19"}],"id":4499,"name":"FunctionCall","src":"29688:41:19"}],"id":4500,"name":"VariableDeclarationStatement","src":"29675:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4494,"type":"uint256","value":"price"},"id":4501,"name":"Identifier","src":"29743:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":4502,"name":"Literal","src":"29751:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":4503,"name":"Identifier","src":"29761:2:19"}],"id":4504,"name":"MemberAccess","src":"29761:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4486,"type":"uint256","value":"_gasLimit"},"id":4505,"name":"Identifier","src":"29775:9:19"}],"id":4506,"name":"BinaryOperation","src":"29761:23:19"}],"id":4507,"name":"BinaryOperation","src":"29751:33:19"}],"id":4508,"name":"BinaryOperation","src":"29743:41:19"},{"children":[{"attributes":{"functionReturnParameters":4492},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4509,"name":"Literal","src":"29807:1:19"}],"id":4510,"name":"Return","src":"29800:8:19"}],"id":4511,"name":"Block","src":"29786:60:19"}],"id":4512,"name":"IfStatement","src":"29739:107:19"},{"attributes":{"assignments":[4514]},"children":[{"attributes":{"constant":false,"name":"args","scope":4530,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4513,"name":"ElementaryTypeName","src":"29855:5:19"}],"id":4514,"name":"VariableDeclaration","src":"29855:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6817,"type":"function (bytes memory[] memory) pure returns (bytes memory)","value":"ba2cbor"},"id":4515,"name":"Identifier","src":"29875:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"bytes memory[] memory","value":"_argN"},"id":4516,"name":"Identifier","src":"29883:5:19"}],"id":4517,"name":"FunctionCall","src":"29875:14:19"}],"id":4518,"name":"VariableDeclarationStatement","src":"29855:34:19"},{"attributes":{"functionReturnParameters":4492},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN_withGasLimit","referencedDeclaration":1676,"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4519,"name":"Identifier","src":"29906:8:19"}],"id":4520,"name":"MemberAccess","src":"29906:28:19"}],"id":4521,"name":"MemberAccess","src":"29906:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4494,"type":"uint256","value":"price"},"id":4522,"name":"Identifier","src":"29941:5:19"}],"id":4523,"name":"FunctionCall","src":"29906:41:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4524,"name":"Literal","src":"29948:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"string memory","value":"_datasource"},"id":4525,"name":"Identifier","src":"29951:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4514,"type":"bytes memory","value":"args"},"id":4526,"name":"Identifier","src":"29964:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4486,"type":"uint256","value":"_gasLimit"},"id":4527,"name":"Identifier","src":"29970:9:19"}],"id":4528,"name":"FunctionCall","src":"29906:74:19"}],"id":4529,"name":"Return","src":"29899:81:19"}],"id":4530,"name":"Block","src":"29665:322:19"}],"id":4531,"name":"FunctionDefinition","src":"29533:454:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4568,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4532,"name":"ElementaryTypeName","src":"30017:6:19"}],"id":4533,"name":"VariableDeclaration","src":"30017:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4568,"stateVariable":false,"storageLocation":"memory","type":"bytes[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[1]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4534,"name":"ElementaryTypeName","src":"30044:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4535,"name":"Literal","src":"30050:1:19"}],"id":4536,"name":"ArrayTypeName","src":"30044:8:19"}],"id":4537,"name":"VariableDeclaration","src":"30044:21:19"}],"id":4538,"name":"ParameterList","src":"30016:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4568,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4541,"name":"ElementaryTypeName","src":"30097:7:19"}],"id":4542,"name":"VariableDeclaration","src":"30097:11:19"}],"id":4543,"name":"ParameterList","src":"30096:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4539,"name":"Identifier","src":"30067:11:19"}],"id":4540,"name":"ModifierInvocation","src":"30067:11:19"},{"children":[{"attributes":{"assignments":[4547]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4567,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4545,"name":"ElementaryTypeName","src":"30120:5:19"}],"id":4546,"name":"ArrayTypeName","src":"30120:7:19"}],"id":4547,"name":"VariableDeclaration","src":"30120:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4548,"name":"ElementaryTypeName","src":"30149:5:19"}],"id":4549,"name":"ArrayTypeName","src":"30149:7:19"}],"id":4550,"name":"NewExpression","src":"30145:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4551,"name":"Literal","src":"30157:1:19"}],"id":4552,"name":"FunctionCall","src":"30145:14:19"}],"id":4553,"name":"VariableDeclarationStatement","src":"30120:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"bytes memory[] memory","value":"dynargs"},"id":4554,"name":"Identifier","src":"30169:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4555,"name":"Literal","src":"30177:1:19"}],"id":4556,"name":"IndexAccess","src":"30169:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4537,"type":"bytes memory[1] memory","value":"_args"},"id":4557,"name":"Identifier","src":"30182:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4558,"name":"Literal","src":"30188:1:19"}],"id":4559,"name":"IndexAccess","src":"30182:8:19"}],"id":4560,"name":"Assignment","src":"30169:21:19"}],"id":4561,"name":"ExpressionStatement","src":"30169:21:19"},{"attributes":{"functionReturnParameters":4543},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4562,"name":"Identifier","src":"30207:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4533,"type":"string memory","value":"_datasource"},"id":4563,"name":"Identifier","src":"30222:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"bytes memory[] memory","value":"dynargs"},"id":4564,"name":"Identifier","src":"30235:7:19"}],"id":4565,"name":"FunctionCall","src":"30207:36:19"}],"id":4566,"name":"Return","src":"30200:43:19"}],"id":4567,"name":"Block","src":"30110:140:19"}],"id":4568,"name":"FunctionDefinition","src":"29993:257:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4608,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4569,"name":"ElementaryTypeName","src":"30280:4:19"}],"id":4570,"name":"VariableDeclaration","src":"30280:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4608,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4571,"name":"ElementaryTypeName","src":"30297:6:19"}],"id":4572,"name":"VariableDeclaration","src":"30297:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4608,"stateVariable":false,"storageLocation":"memory","type":"bytes[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[1]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4573,"name":"ElementaryTypeName","src":"30324:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4574,"name":"Literal","src":"30330:1:19"}],"id":4575,"name":"ArrayTypeName","src":"30324:8:19"}],"id":4576,"name":"VariableDeclaration","src":"30324:21:19"}],"id":4577,"name":"ParameterList","src":"30279:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4608,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4580,"name":"ElementaryTypeName","src":"30377:7:19"}],"id":4581,"name":"VariableDeclaration","src":"30377:11:19"}],"id":4582,"name":"ParameterList","src":"30376:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4578,"name":"Identifier","src":"30347:11:19"}],"id":4579,"name":"ModifierInvocation","src":"30347:11:19"},{"children":[{"attributes":{"assignments":[4586]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4607,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4584,"name":"ElementaryTypeName","src":"30400:5:19"}],"id":4585,"name":"ArrayTypeName","src":"30400:7:19"}],"id":4586,"name":"VariableDeclaration","src":"30400:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4587,"name":"ElementaryTypeName","src":"30429:5:19"}],"id":4588,"name":"ArrayTypeName","src":"30429:7:19"}],"id":4589,"name":"NewExpression","src":"30425:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4590,"name":"Literal","src":"30437:1:19"}],"id":4591,"name":"FunctionCall","src":"30425:14:19"}],"id":4592,"name":"VariableDeclarationStatement","src":"30400:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4586,"type":"bytes memory[] memory","value":"dynargs"},"id":4593,"name":"Identifier","src":"30449:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4594,"name":"Literal","src":"30457:1:19"}],"id":4595,"name":"IndexAccess","src":"30449:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4576,"type":"bytes memory[1] memory","value":"_args"},"id":4596,"name":"Identifier","src":"30462:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4597,"name":"Literal","src":"30468:1:19"}],"id":4598,"name":"IndexAccess","src":"30462:8:19"}],"id":4599,"name":"Assignment","src":"30449:21:19"}],"id":4600,"name":"ExpressionStatement","src":"30449:21:19"},{"attributes":{"functionReturnParameters":4582},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4601,"name":"Identifier","src":"30487:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"_timestamp"},"id":4602,"name":"Identifier","src":"30502:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4572,"type":"string memory","value":"_datasource"},"id":4603,"name":"Identifier","src":"30514:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4586,"type":"bytes memory[] memory","value":"dynargs"},"id":4604,"name":"Identifier","src":"30527:7:19"}],"id":4605,"name":"FunctionCall","src":"30487:48:19"}],"id":4606,"name":"Return","src":"30480:55:19"}],"id":4607,"name":"Block","src":"30390:152:19"}],"id":4608,"name":"FunctionDefinition","src":"30256:286:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4609,"name":"ElementaryTypeName","src":"30572:4:19"}],"id":4610,"name":"VariableDeclaration","src":"30572:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4651,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4611,"name":"ElementaryTypeName","src":"30589:6:19"}],"id":4612,"name":"VariableDeclaration","src":"30589:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4651,"stateVariable":false,"storageLocation":"memory","type":"bytes[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[1]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4613,"name":"ElementaryTypeName","src":"30616:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4614,"name":"Literal","src":"30622:1:19"}],"id":4615,"name":"ArrayTypeName","src":"30616:8:19"}],"id":4616,"name":"VariableDeclaration","src":"30616:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4617,"name":"ElementaryTypeName","src":"30639:4:19"}],"id":4618,"name":"VariableDeclaration","src":"30639:14:19"}],"id":4619,"name":"ParameterList","src":"30571:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4651,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4622,"name":"ElementaryTypeName","src":"30685:7:19"}],"id":4623,"name":"VariableDeclaration","src":"30685:11:19"}],"id":4624,"name":"ParameterList","src":"30684:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4620,"name":"Identifier","src":"30655:11:19"}],"id":4621,"name":"ModifierInvocation","src":"30655:11:19"},{"children":[{"attributes":{"assignments":[4628]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4650,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4626,"name":"ElementaryTypeName","src":"30708:5:19"}],"id":4627,"name":"ArrayTypeName","src":"30708:7:19"}],"id":4628,"name":"VariableDeclaration","src":"30708:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4629,"name":"ElementaryTypeName","src":"30737:5:19"}],"id":4630,"name":"ArrayTypeName","src":"30737:7:19"}],"id":4631,"name":"NewExpression","src":"30733:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4632,"name":"Literal","src":"30745:1:19"}],"id":4633,"name":"FunctionCall","src":"30733:14:19"}],"id":4634,"name":"VariableDeclarationStatement","src":"30708:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"bytes memory[] memory","value":"dynargs"},"id":4635,"name":"Identifier","src":"30757:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4636,"name":"Literal","src":"30765:1:19"}],"id":4637,"name":"IndexAccess","src":"30757:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4616,"type":"bytes memory[1] memory","value":"_args"},"id":4638,"name":"Identifier","src":"30770:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4639,"name":"Literal","src":"30776:1:19"}],"id":4640,"name":"IndexAccess","src":"30770:8:19"}],"id":4641,"name":"Assignment","src":"30757:21:19"}],"id":4642,"name":"ExpressionStatement","src":"30757:21:19"},{"attributes":{"functionReturnParameters":4624},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4643,"name":"Identifier","src":"30795:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4610,"type":"uint256","value":"_timestamp"},"id":4644,"name":"Identifier","src":"30810:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4612,"type":"string memory","value":"_datasource"},"id":4645,"name":"Identifier","src":"30822:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"bytes memory[] memory","value":"dynargs"},"id":4646,"name":"Identifier","src":"30835:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4618,"type":"uint256","value":"_gasLimit"},"id":4647,"name":"Identifier","src":"30844:9:19"}],"id":4648,"name":"FunctionCall","src":"30795:59:19"}],"id":4649,"name":"Return","src":"30788:66:19"}],"id":4650,"name":"Block","src":"30698:163:19"}],"id":4651,"name":"FunctionDefinition","src":"30548:313:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4691,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4652,"name":"ElementaryTypeName","src":"30891:6:19"}],"id":4653,"name":"VariableDeclaration","src":"30891:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4691,"stateVariable":false,"storageLocation":"memory","type":"bytes[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[1]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4654,"name":"ElementaryTypeName","src":"30918:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4655,"name":"Literal","src":"30924:1:19"}],"id":4656,"name":"ArrayTypeName","src":"30918:8:19"}],"id":4657,"name":"VariableDeclaration","src":"30918:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4691,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4658,"name":"ElementaryTypeName","src":"30941:4:19"}],"id":4659,"name":"VariableDeclaration","src":"30941:14:19"}],"id":4660,"name":"ParameterList","src":"30890:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4691,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4663,"name":"ElementaryTypeName","src":"30987:7:19"}],"id":4664,"name":"VariableDeclaration","src":"30987:11:19"}],"id":4665,"name":"ParameterList","src":"30986:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4661,"name":"Identifier","src":"30957:11:19"}],"id":4662,"name":"ModifierInvocation","src":"30957:11:19"},{"children":[{"attributes":{"assignments":[4669]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4690,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4667,"name":"ElementaryTypeName","src":"31010:5:19"}],"id":4668,"name":"ArrayTypeName","src":"31010:7:19"}],"id":4669,"name":"VariableDeclaration","src":"31010:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4670,"name":"ElementaryTypeName","src":"31039:5:19"}],"id":4671,"name":"ArrayTypeName","src":"31039:7:19"}],"id":4672,"name":"NewExpression","src":"31035:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4673,"name":"Literal","src":"31047:1:19"}],"id":4674,"name":"FunctionCall","src":"31035:14:19"}],"id":4675,"name":"VariableDeclarationStatement","src":"31010:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"bytes memory[] memory","value":"dynargs"},"id":4676,"name":"Identifier","src":"31059:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4677,"name":"Literal","src":"31067:1:19"}],"id":4678,"name":"IndexAccess","src":"31059:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4657,"type":"bytes memory[1] memory","value":"_args"},"id":4679,"name":"Identifier","src":"31072:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4680,"name":"Literal","src":"31078:1:19"}],"id":4681,"name":"IndexAccess","src":"31072:8:19"}],"id":4682,"name":"Assignment","src":"31059:21:19"}],"id":4683,"name":"ExpressionStatement","src":"31059:21:19"},{"attributes":{"functionReturnParameters":4665},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4684,"name":"Identifier","src":"31097:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4653,"type":"string memory","value":"_datasource"},"id":4685,"name":"Identifier","src":"31112:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"bytes memory[] memory","value":"dynargs"},"id":4686,"name":"Identifier","src":"31125:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4659,"type":"uint256","value":"_gasLimit"},"id":4687,"name":"Identifier","src":"31134:9:19"}],"id":4688,"name":"FunctionCall","src":"31097:47:19"}],"id":4689,"name":"Return","src":"31090:54:19"}],"id":4690,"name":"Block","src":"31000:151:19"}],"id":4691,"name":"FunctionDefinition","src":"30867:284:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4736,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4692,"name":"ElementaryTypeName","src":"31181:6:19"}],"id":4693,"name":"VariableDeclaration","src":"31181:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4736,"stateVariable":false,"storageLocation":"memory","type":"bytes[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[2]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4694,"name":"ElementaryTypeName","src":"31208:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4695,"name":"Literal","src":"31214:1:19"}],"id":4696,"name":"ArrayTypeName","src":"31208:8:19"}],"id":4697,"name":"VariableDeclaration","src":"31208:21:19"}],"id":4698,"name":"ParameterList","src":"31180:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4736,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4701,"name":"ElementaryTypeName","src":"31261:7:19"}],"id":4702,"name":"VariableDeclaration","src":"31261:11:19"}],"id":4703,"name":"ParameterList","src":"31260:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4699,"name":"Identifier","src":"31231:11:19"}],"id":4700,"name":"ModifierInvocation","src":"31231:11:19"},{"children":[{"attributes":{"assignments":[4707]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4735,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4705,"name":"ElementaryTypeName","src":"31284:5:19"}],"id":4706,"name":"ArrayTypeName","src":"31284:7:19"}],"id":4707,"name":"VariableDeclaration","src":"31284:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4708,"name":"ElementaryTypeName","src":"31313:5:19"}],"id":4709,"name":"ArrayTypeName","src":"31313:7:19"}],"id":4710,"name":"NewExpression","src":"31309:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4711,"name":"Literal","src":"31321:1:19"}],"id":4712,"name":"FunctionCall","src":"31309:14:19"}],"id":4713,"name":"VariableDeclarationStatement","src":"31284:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4707,"type":"bytes memory[] memory","value":"dynargs"},"id":4714,"name":"Identifier","src":"31333:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4715,"name":"Literal","src":"31341:1:19"}],"id":4716,"name":"IndexAccess","src":"31333:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4697,"type":"bytes memory[2] memory","value":"_args"},"id":4717,"name":"Identifier","src":"31346:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4718,"name":"Literal","src":"31352:1:19"}],"id":4719,"name":"IndexAccess","src":"31346:8:19"}],"id":4720,"name":"Assignment","src":"31333:21:19"}],"id":4721,"name":"ExpressionStatement","src":"31333:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4707,"type":"bytes memory[] memory","value":"dynargs"},"id":4722,"name":"Identifier","src":"31364:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4723,"name":"Literal","src":"31372:1:19"}],"id":4724,"name":"IndexAccess","src":"31364:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4697,"type":"bytes memory[2] memory","value":"_args"},"id":4725,"name":"Identifier","src":"31377:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4726,"name":"Literal","src":"31383:1:19"}],"id":4727,"name":"IndexAccess","src":"31377:8:19"}],"id":4728,"name":"Assignment","src":"31364:21:19"}],"id":4729,"name":"ExpressionStatement","src":"31364:21:19"},{"attributes":{"functionReturnParameters":4703},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4730,"name":"Identifier","src":"31402:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4693,"type":"string memory","value":"_datasource"},"id":4731,"name":"Identifier","src":"31417:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4707,"type":"bytes memory[] memory","value":"dynargs"},"id":4732,"name":"Identifier","src":"31430:7:19"}],"id":4733,"name":"FunctionCall","src":"31402:36:19"}],"id":4734,"name":"Return","src":"31395:43:19"}],"id":4735,"name":"Block","src":"31274:171:19"}],"id":4736,"name":"FunctionDefinition","src":"31157:288:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4784,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4737,"name":"ElementaryTypeName","src":"31475:4:19"}],"id":4738,"name":"VariableDeclaration","src":"31475:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4784,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4739,"name":"ElementaryTypeName","src":"31492:6:19"}],"id":4740,"name":"VariableDeclaration","src":"31492:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4784,"stateVariable":false,"storageLocation":"memory","type":"bytes[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[2]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4741,"name":"ElementaryTypeName","src":"31519:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4742,"name":"Literal","src":"31525:1:19"}],"id":4743,"name":"ArrayTypeName","src":"31519:8:19"}],"id":4744,"name":"VariableDeclaration","src":"31519:21:19"}],"id":4745,"name":"ParameterList","src":"31474:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4784,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4748,"name":"ElementaryTypeName","src":"31572:7:19"}],"id":4749,"name":"VariableDeclaration","src":"31572:11:19"}],"id":4750,"name":"ParameterList","src":"31571:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4746,"name":"Identifier","src":"31542:11:19"}],"id":4747,"name":"ModifierInvocation","src":"31542:11:19"},{"children":[{"attributes":{"assignments":[4754]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4783,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4752,"name":"ElementaryTypeName","src":"31595:5:19"}],"id":4753,"name":"ArrayTypeName","src":"31595:7:19"}],"id":4754,"name":"VariableDeclaration","src":"31595:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4755,"name":"ElementaryTypeName","src":"31624:5:19"}],"id":4756,"name":"ArrayTypeName","src":"31624:7:19"}],"id":4757,"name":"NewExpression","src":"31620:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4758,"name":"Literal","src":"31632:1:19"}],"id":4759,"name":"FunctionCall","src":"31620:14:19"}],"id":4760,"name":"VariableDeclarationStatement","src":"31595:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4754,"type":"bytes memory[] memory","value":"dynargs"},"id":4761,"name":"Identifier","src":"31644:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4762,"name":"Literal","src":"31652:1:19"}],"id":4763,"name":"IndexAccess","src":"31644:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4744,"type":"bytes memory[2] memory","value":"_args"},"id":4764,"name":"Identifier","src":"31657:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4765,"name":"Literal","src":"31663:1:19"}],"id":4766,"name":"IndexAccess","src":"31657:8:19"}],"id":4767,"name":"Assignment","src":"31644:21:19"}],"id":4768,"name":"ExpressionStatement","src":"31644:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4754,"type":"bytes memory[] memory","value":"dynargs"},"id":4769,"name":"Identifier","src":"31675:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4770,"name":"Literal","src":"31683:1:19"}],"id":4771,"name":"IndexAccess","src":"31675:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4744,"type":"bytes memory[2] memory","value":"_args"},"id":4772,"name":"Identifier","src":"31688:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4773,"name":"Literal","src":"31694:1:19"}],"id":4774,"name":"IndexAccess","src":"31688:8:19"}],"id":4775,"name":"Assignment","src":"31675:21:19"}],"id":4776,"name":"ExpressionStatement","src":"31675:21:19"},{"attributes":{"functionReturnParameters":4750},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4777,"name":"Identifier","src":"31713:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4738,"type":"uint256","value":"_timestamp"},"id":4778,"name":"Identifier","src":"31728:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4740,"type":"string memory","value":"_datasource"},"id":4779,"name":"Identifier","src":"31740:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4754,"type":"bytes memory[] memory","value":"dynargs"},"id":4780,"name":"Identifier","src":"31753:7:19"}],"id":4781,"name":"FunctionCall","src":"31713:48:19"}],"id":4782,"name":"Return","src":"31706:55:19"}],"id":4783,"name":"Block","src":"31585:183:19"}],"id":4784,"name":"FunctionDefinition","src":"31451:317:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4785,"name":"ElementaryTypeName","src":"31798:4:19"}],"id":4786,"name":"VariableDeclaration","src":"31798:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4835,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4787,"name":"ElementaryTypeName","src":"31815:6:19"}],"id":4788,"name":"VariableDeclaration","src":"31815:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4835,"stateVariable":false,"storageLocation":"memory","type":"bytes[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[2]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4789,"name":"ElementaryTypeName","src":"31842:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4790,"name":"Literal","src":"31848:1:19"}],"id":4791,"name":"ArrayTypeName","src":"31842:8:19"}],"id":4792,"name":"VariableDeclaration","src":"31842:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4793,"name":"ElementaryTypeName","src":"31865:4:19"}],"id":4794,"name":"VariableDeclaration","src":"31865:14:19"}],"id":4795,"name":"ParameterList","src":"31797:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4798,"name":"ElementaryTypeName","src":"31911:7:19"}],"id":4799,"name":"VariableDeclaration","src":"31911:11:19"}],"id":4800,"name":"ParameterList","src":"31910:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4796,"name":"Identifier","src":"31881:11:19"}],"id":4797,"name":"ModifierInvocation","src":"31881:11:19"},{"children":[{"attributes":{"assignments":[4804]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4834,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4802,"name":"ElementaryTypeName","src":"31934:5:19"}],"id":4803,"name":"ArrayTypeName","src":"31934:7:19"}],"id":4804,"name":"VariableDeclaration","src":"31934:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4805,"name":"ElementaryTypeName","src":"31963:5:19"}],"id":4806,"name":"ArrayTypeName","src":"31963:7:19"}],"id":4807,"name":"NewExpression","src":"31959:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4808,"name":"Literal","src":"31971:1:19"}],"id":4809,"name":"FunctionCall","src":"31959:14:19"}],"id":4810,"name":"VariableDeclarationStatement","src":"31934:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4804,"type":"bytes memory[] memory","value":"dynargs"},"id":4811,"name":"Identifier","src":"31983:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4812,"name":"Literal","src":"31991:1:19"}],"id":4813,"name":"IndexAccess","src":"31983:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4792,"type":"bytes memory[2] memory","value":"_args"},"id":4814,"name":"Identifier","src":"31996:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4815,"name":"Literal","src":"32002:1:19"}],"id":4816,"name":"IndexAccess","src":"31996:8:19"}],"id":4817,"name":"Assignment","src":"31983:21:19"}],"id":4818,"name":"ExpressionStatement","src":"31983:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4804,"type":"bytes memory[] memory","value":"dynargs"},"id":4819,"name":"Identifier","src":"32014:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4820,"name":"Literal","src":"32022:1:19"}],"id":4821,"name":"IndexAccess","src":"32014:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4792,"type":"bytes memory[2] memory","value":"_args"},"id":4822,"name":"Identifier","src":"32027:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4823,"name":"Literal","src":"32033:1:19"}],"id":4824,"name":"IndexAccess","src":"32027:8:19"}],"id":4825,"name":"Assignment","src":"32014:21:19"}],"id":4826,"name":"ExpressionStatement","src":"32014:21:19"},{"attributes":{"functionReturnParameters":4800},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4827,"name":"Identifier","src":"32052:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4786,"type":"uint256","value":"_timestamp"},"id":4828,"name":"Identifier","src":"32067:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"string memory","value":"_datasource"},"id":4829,"name":"Identifier","src":"32079:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4804,"type":"bytes memory[] memory","value":"dynargs"},"id":4830,"name":"Identifier","src":"32092:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4794,"type":"uint256","value":"_gasLimit"},"id":4831,"name":"Identifier","src":"32101:9:19"}],"id":4832,"name":"FunctionCall","src":"32052:59:19"}],"id":4833,"name":"Return","src":"32045:66:19"}],"id":4834,"name":"Block","src":"31924:194:19"}],"id":4835,"name":"FunctionDefinition","src":"31774:344:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4883,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4836,"name":"ElementaryTypeName","src":"32148:6:19"}],"id":4837,"name":"VariableDeclaration","src":"32148:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4883,"stateVariable":false,"storageLocation":"memory","type":"bytes[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[2]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4838,"name":"ElementaryTypeName","src":"32175:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4839,"name":"Literal","src":"32181:1:19"}],"id":4840,"name":"ArrayTypeName","src":"32175:8:19"}],"id":4841,"name":"VariableDeclaration","src":"32175:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4883,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4842,"name":"ElementaryTypeName","src":"32198:4:19"}],"id":4843,"name":"VariableDeclaration","src":"32198:14:19"}],"id":4844,"name":"ParameterList","src":"32147:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4847,"name":"ElementaryTypeName","src":"32244:7:19"}],"id":4848,"name":"VariableDeclaration","src":"32244:11:19"}],"id":4849,"name":"ParameterList","src":"32243:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4845,"name":"Identifier","src":"32214:11:19"}],"id":4846,"name":"ModifierInvocation","src":"32214:11:19"},{"children":[{"attributes":{"assignments":[4853]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4882,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4851,"name":"ElementaryTypeName","src":"32267:5:19"}],"id":4852,"name":"ArrayTypeName","src":"32267:7:19"}],"id":4853,"name":"VariableDeclaration","src":"32267:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4854,"name":"ElementaryTypeName","src":"32296:5:19"}],"id":4855,"name":"ArrayTypeName","src":"32296:7:19"}],"id":4856,"name":"NewExpression","src":"32292:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4857,"name":"Literal","src":"32304:1:19"}],"id":4858,"name":"FunctionCall","src":"32292:14:19"}],"id":4859,"name":"VariableDeclarationStatement","src":"32267:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"bytes memory[] memory","value":"dynargs"},"id":4860,"name":"Identifier","src":"32316:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4861,"name":"Literal","src":"32324:1:19"}],"id":4862,"name":"IndexAccess","src":"32316:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4841,"type":"bytes memory[2] memory","value":"_args"},"id":4863,"name":"Identifier","src":"32329:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4864,"name":"Literal","src":"32335:1:19"}],"id":4865,"name":"IndexAccess","src":"32329:8:19"}],"id":4866,"name":"Assignment","src":"32316:21:19"}],"id":4867,"name":"ExpressionStatement","src":"32316:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"bytes memory[] memory","value":"dynargs"},"id":4868,"name":"Identifier","src":"32347:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4869,"name":"Literal","src":"32355:1:19"}],"id":4870,"name":"IndexAccess","src":"32347:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4841,"type":"bytes memory[2] memory","value":"_args"},"id":4871,"name":"Identifier","src":"32360:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4872,"name":"Literal","src":"32366:1:19"}],"id":4873,"name":"IndexAccess","src":"32360:8:19"}],"id":4874,"name":"Assignment","src":"32347:21:19"}],"id":4875,"name":"ExpressionStatement","src":"32347:21:19"},{"attributes":{"functionReturnParameters":4849},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4876,"name":"Identifier","src":"32385:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4837,"type":"string memory","value":"_datasource"},"id":4877,"name":"Identifier","src":"32400:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"bytes memory[] memory","value":"dynargs"},"id":4878,"name":"Identifier","src":"32413:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"uint256","value":"_gasLimit"},"id":4879,"name":"Identifier","src":"32422:9:19"}],"id":4880,"name":"FunctionCall","src":"32385:47:19"}],"id":4881,"name":"Return","src":"32378:54:19"}],"id":4882,"name":"Block","src":"32257:182:19"}],"id":4883,"name":"FunctionDefinition","src":"32124:315:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4936,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4884,"name":"ElementaryTypeName","src":"32469:6:19"}],"id":4885,"name":"VariableDeclaration","src":"32469:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4936,"stateVariable":false,"storageLocation":"memory","type":"bytes[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[3]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4886,"name":"ElementaryTypeName","src":"32496:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4887,"name":"Literal","src":"32502:1:19"}],"id":4888,"name":"ArrayTypeName","src":"32496:8:19"}],"id":4889,"name":"VariableDeclaration","src":"32496:21:19"}],"id":4890,"name":"ParameterList","src":"32468:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4936,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4893,"name":"ElementaryTypeName","src":"32549:7:19"}],"id":4894,"name":"VariableDeclaration","src":"32549:11:19"}],"id":4895,"name":"ParameterList","src":"32548:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4891,"name":"Identifier","src":"32519:11:19"}],"id":4892,"name":"ModifierInvocation","src":"32519:11:19"},{"children":[{"attributes":{"assignments":[4899]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4935,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4897,"name":"ElementaryTypeName","src":"32572:5:19"}],"id":4898,"name":"ArrayTypeName","src":"32572:7:19"}],"id":4899,"name":"VariableDeclaration","src":"32572:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4900,"name":"ElementaryTypeName","src":"32601:5:19"}],"id":4901,"name":"ArrayTypeName","src":"32601:7:19"}],"id":4902,"name":"NewExpression","src":"32597:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4903,"name":"Literal","src":"32609:1:19"}],"id":4904,"name":"FunctionCall","src":"32597:14:19"}],"id":4905,"name":"VariableDeclarationStatement","src":"32572:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4899,"type":"bytes memory[] memory","value":"dynargs"},"id":4906,"name":"Identifier","src":"32621:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4907,"name":"Literal","src":"32629:1:19"}],"id":4908,"name":"IndexAccess","src":"32621:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"bytes memory[3] memory","value":"_args"},"id":4909,"name":"Identifier","src":"32634:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4910,"name":"Literal","src":"32640:1:19"}],"id":4911,"name":"IndexAccess","src":"32634:8:19"}],"id":4912,"name":"Assignment","src":"32621:21:19"}],"id":4913,"name":"ExpressionStatement","src":"32621:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4899,"type":"bytes memory[] memory","value":"dynargs"},"id":4914,"name":"Identifier","src":"32652:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4915,"name":"Literal","src":"32660:1:19"}],"id":4916,"name":"IndexAccess","src":"32652:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"bytes memory[3] memory","value":"_args"},"id":4917,"name":"Identifier","src":"32665:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4918,"name":"Literal","src":"32671:1:19"}],"id":4919,"name":"IndexAccess","src":"32665:8:19"}],"id":4920,"name":"Assignment","src":"32652:21:19"}],"id":4921,"name":"ExpressionStatement","src":"32652:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4899,"type":"bytes memory[] memory","value":"dynargs"},"id":4922,"name":"Identifier","src":"32683:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4923,"name":"Literal","src":"32691:1:19"}],"id":4924,"name":"IndexAccess","src":"32683:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"bytes memory[3] memory","value":"_args"},"id":4925,"name":"Identifier","src":"32696:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4926,"name":"Literal","src":"32702:1:19"}],"id":4927,"name":"IndexAccess","src":"32696:8:19"}],"id":4928,"name":"Assignment","src":"32683:21:19"}],"id":4929,"name":"ExpressionStatement","src":"32683:21:19"},{"attributes":{"functionReturnParameters":4895},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4930,"name":"Identifier","src":"32721:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4885,"type":"string memory","value":"_datasource"},"id":4931,"name":"Identifier","src":"32736:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4899,"type":"bytes memory[] memory","value":"dynargs"},"id":4932,"name":"Identifier","src":"32749:7:19"}],"id":4933,"name":"FunctionCall","src":"32721:36:19"}],"id":4934,"name":"Return","src":"32714:43:19"}],"id":4935,"name":"Block","src":"32562:202:19"}],"id":4936,"name":"FunctionDefinition","src":"32445:319:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4992,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4937,"name":"ElementaryTypeName","src":"32794:4:19"}],"id":4938,"name":"VariableDeclaration","src":"32794:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4992,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4939,"name":"ElementaryTypeName","src":"32811:6:19"}],"id":4940,"name":"VariableDeclaration","src":"32811:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4992,"stateVariable":false,"storageLocation":"memory","type":"bytes[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[3]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4941,"name":"ElementaryTypeName","src":"32838:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4942,"name":"Literal","src":"32844:1:19"}],"id":4943,"name":"ArrayTypeName","src":"32838:8:19"}],"id":4944,"name":"VariableDeclaration","src":"32838:21:19"}],"id":4945,"name":"ParameterList","src":"32793:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4992,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4948,"name":"ElementaryTypeName","src":"32891:7:19"}],"id":4949,"name":"VariableDeclaration","src":"32891:11:19"}],"id":4950,"name":"ParameterList","src":"32890:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4946,"name":"Identifier","src":"32861:11:19"}],"id":4947,"name":"ModifierInvocation","src":"32861:11:19"},{"children":[{"attributes":{"assignments":[4954]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4991,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4952,"name":"ElementaryTypeName","src":"32914:5:19"}],"id":4953,"name":"ArrayTypeName","src":"32914:7:19"}],"id":4954,"name":"VariableDeclaration","src":"32914:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4955,"name":"ElementaryTypeName","src":"32943:5:19"}],"id":4956,"name":"ArrayTypeName","src":"32943:7:19"}],"id":4957,"name":"NewExpression","src":"32939:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4958,"name":"Literal","src":"32951:1:19"}],"id":4959,"name":"FunctionCall","src":"32939:14:19"}],"id":4960,"name":"VariableDeclarationStatement","src":"32914:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4954,"type":"bytes memory[] memory","value":"dynargs"},"id":4961,"name":"Identifier","src":"32963:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4962,"name":"Literal","src":"32971:1:19"}],"id":4963,"name":"IndexAccess","src":"32963:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bytes memory[3] memory","value":"_args"},"id":4964,"name":"Identifier","src":"32976:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4965,"name":"Literal","src":"32982:1:19"}],"id":4966,"name":"IndexAccess","src":"32976:8:19"}],"id":4967,"name":"Assignment","src":"32963:21:19"}],"id":4968,"name":"ExpressionStatement","src":"32963:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4954,"type":"bytes memory[] memory","value":"dynargs"},"id":4969,"name":"Identifier","src":"32994:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4970,"name":"Literal","src":"33002:1:19"}],"id":4971,"name":"IndexAccess","src":"32994:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bytes memory[3] memory","value":"_args"},"id":4972,"name":"Identifier","src":"33007:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4973,"name":"Literal","src":"33013:1:19"}],"id":4974,"name":"IndexAccess","src":"33007:8:19"}],"id":4975,"name":"Assignment","src":"32994:21:19"}],"id":4976,"name":"ExpressionStatement","src":"32994:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4954,"type":"bytes memory[] memory","value":"dynargs"},"id":4977,"name":"Identifier","src":"33025:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4978,"name":"Literal","src":"33033:1:19"}],"id":4979,"name":"IndexAccess","src":"33025:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bytes memory[3] memory","value":"_args"},"id":4980,"name":"Identifier","src":"33038:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4981,"name":"Literal","src":"33044:1:19"}],"id":4982,"name":"IndexAccess","src":"33038:8:19"}],"id":4983,"name":"Assignment","src":"33025:21:19"}],"id":4984,"name":"ExpressionStatement","src":"33025:21:19"},{"attributes":{"functionReturnParameters":4950},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4985,"name":"Identifier","src":"33063:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"uint256","value":"_timestamp"},"id":4986,"name":"Identifier","src":"33078:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4940,"type":"string memory","value":"_datasource"},"id":4987,"name":"Identifier","src":"33090:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4954,"type":"bytes memory[] memory","value":"dynargs"},"id":4988,"name":"Identifier","src":"33103:7:19"}],"id":4989,"name":"FunctionCall","src":"33063:48:19"}],"id":4990,"name":"Return","src":"33056:55:19"}],"id":4991,"name":"Block","src":"32904:214:19"}],"id":4992,"name":"FunctionDefinition","src":"32770:348:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5051,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4993,"name":"ElementaryTypeName","src":"33148:4:19"}],"id":4994,"name":"VariableDeclaration","src":"33148:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5051,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4995,"name":"ElementaryTypeName","src":"33165:6:19"}],"id":4996,"name":"VariableDeclaration","src":"33165:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5051,"stateVariable":false,"storageLocation":"memory","type":"bytes[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[3]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4997,"name":"ElementaryTypeName","src":"33192:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4998,"name":"Literal","src":"33198:1:19"}],"id":4999,"name":"ArrayTypeName","src":"33192:8:19"}],"id":5000,"name":"VariableDeclaration","src":"33192:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5051,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5001,"name":"ElementaryTypeName","src":"33215:4:19"}],"id":5002,"name":"VariableDeclaration","src":"33215:14:19"}],"id":5003,"name":"ParameterList","src":"33147:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5051,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5006,"name":"ElementaryTypeName","src":"33261:7:19"}],"id":5007,"name":"VariableDeclaration","src":"33261:11:19"}],"id":5008,"name":"ParameterList","src":"33260:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5004,"name":"Identifier","src":"33231:11:19"}],"id":5005,"name":"ModifierInvocation","src":"33231:11:19"},{"children":[{"attributes":{"assignments":[5012]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5050,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5010,"name":"ElementaryTypeName","src":"33284:5:19"}],"id":5011,"name":"ArrayTypeName","src":"33284:7:19"}],"id":5012,"name":"VariableDeclaration","src":"33284:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5013,"name":"ElementaryTypeName","src":"33313:5:19"}],"id":5014,"name":"ArrayTypeName","src":"33313:7:19"}],"id":5015,"name":"NewExpression","src":"33309:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5016,"name":"Literal","src":"33321:1:19"}],"id":5017,"name":"FunctionCall","src":"33309:14:19"}],"id":5018,"name":"VariableDeclarationStatement","src":"33284:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes memory[] memory","value":"dynargs"},"id":5019,"name":"Identifier","src":"33333:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5020,"name":"Literal","src":"33341:1:19"}],"id":5021,"name":"IndexAccess","src":"33333:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5000,"type":"bytes memory[3] memory","value":"_args"},"id":5022,"name":"Identifier","src":"33346:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5023,"name":"Literal","src":"33352:1:19"}],"id":5024,"name":"IndexAccess","src":"33346:8:19"}],"id":5025,"name":"Assignment","src":"33333:21:19"}],"id":5026,"name":"ExpressionStatement","src":"33333:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes memory[] memory","value":"dynargs"},"id":5027,"name":"Identifier","src":"33364:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5028,"name":"Literal","src":"33372:1:19"}],"id":5029,"name":"IndexAccess","src":"33364:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5000,"type":"bytes memory[3] memory","value":"_args"},"id":5030,"name":"Identifier","src":"33377:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5031,"name":"Literal","src":"33383:1:19"}],"id":5032,"name":"IndexAccess","src":"33377:8:19"}],"id":5033,"name":"Assignment","src":"33364:21:19"}],"id":5034,"name":"ExpressionStatement","src":"33364:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes memory[] memory","value":"dynargs"},"id":5035,"name":"Identifier","src":"33395:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5036,"name":"Literal","src":"33403:1:19"}],"id":5037,"name":"IndexAccess","src":"33395:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5000,"type":"bytes memory[3] memory","value":"_args"},"id":5038,"name":"Identifier","src":"33408:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5039,"name":"Literal","src":"33414:1:19"}],"id":5040,"name":"IndexAccess","src":"33408:8:19"}],"id":5041,"name":"Assignment","src":"33395:21:19"}],"id":5042,"name":"ExpressionStatement","src":"33395:21:19"},{"attributes":{"functionReturnParameters":5008},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5043,"name":"Identifier","src":"33433:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4994,"type":"uint256","value":"_timestamp"},"id":5044,"name":"Identifier","src":"33448:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4996,"type":"string memory","value":"_datasource"},"id":5045,"name":"Identifier","src":"33460:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes memory[] memory","value":"dynargs"},"id":5046,"name":"Identifier","src":"33473:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5002,"type":"uint256","value":"_gasLimit"},"id":5047,"name":"Identifier","src":"33482:9:19"}],"id":5048,"name":"FunctionCall","src":"33433:59:19"}],"id":5049,"name":"Return","src":"33426:66:19"}],"id":5050,"name":"Block","src":"33274:225:19"}],"id":5051,"name":"FunctionDefinition","src":"33124:375:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5107,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5052,"name":"ElementaryTypeName","src":"33529:6:19"}],"id":5053,"name":"VariableDeclaration","src":"33529:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5107,"stateVariable":false,"storageLocation":"memory","type":"bytes[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[3]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5054,"name":"ElementaryTypeName","src":"33556:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5055,"name":"Literal","src":"33562:1:19"}],"id":5056,"name":"ArrayTypeName","src":"33556:8:19"}],"id":5057,"name":"VariableDeclaration","src":"33556:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5107,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5058,"name":"ElementaryTypeName","src":"33579:4:19"}],"id":5059,"name":"VariableDeclaration","src":"33579:14:19"}],"id":5060,"name":"ParameterList","src":"33528:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5107,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5063,"name":"ElementaryTypeName","src":"33625:7:19"}],"id":5064,"name":"VariableDeclaration","src":"33625:11:19"}],"id":5065,"name":"ParameterList","src":"33624:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5061,"name":"Identifier","src":"33595:11:19"}],"id":5062,"name":"ModifierInvocation","src":"33595:11:19"},{"children":[{"attributes":{"assignments":[5069]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5106,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5067,"name":"ElementaryTypeName","src":"33648:5:19"}],"id":5068,"name":"ArrayTypeName","src":"33648:7:19"}],"id":5069,"name":"VariableDeclaration","src":"33648:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5070,"name":"ElementaryTypeName","src":"33677:5:19"}],"id":5071,"name":"ArrayTypeName","src":"33677:7:19"}],"id":5072,"name":"NewExpression","src":"33673:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5073,"name":"Literal","src":"33685:1:19"}],"id":5074,"name":"FunctionCall","src":"33673:14:19"}],"id":5075,"name":"VariableDeclarationStatement","src":"33648:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory[] memory","value":"dynargs"},"id":5076,"name":"Identifier","src":"33697:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5077,"name":"Literal","src":"33705:1:19"}],"id":5078,"name":"IndexAccess","src":"33697:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5057,"type":"bytes memory[3] memory","value":"_args"},"id":5079,"name":"Identifier","src":"33710:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5080,"name":"Literal","src":"33716:1:19"}],"id":5081,"name":"IndexAccess","src":"33710:8:19"}],"id":5082,"name":"Assignment","src":"33697:21:19"}],"id":5083,"name":"ExpressionStatement","src":"33697:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory[] memory","value":"dynargs"},"id":5084,"name":"Identifier","src":"33728:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5085,"name":"Literal","src":"33736:1:19"}],"id":5086,"name":"IndexAccess","src":"33728:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5057,"type":"bytes memory[3] memory","value":"_args"},"id":5087,"name":"Identifier","src":"33741:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5088,"name":"Literal","src":"33747:1:19"}],"id":5089,"name":"IndexAccess","src":"33741:8:19"}],"id":5090,"name":"Assignment","src":"33728:21:19"}],"id":5091,"name":"ExpressionStatement","src":"33728:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory[] memory","value":"dynargs"},"id":5092,"name":"Identifier","src":"33759:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5093,"name":"Literal","src":"33767:1:19"}],"id":5094,"name":"IndexAccess","src":"33759:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5057,"type":"bytes memory[3] memory","value":"_args"},"id":5095,"name":"Identifier","src":"33772:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5096,"name":"Literal","src":"33778:1:19"}],"id":5097,"name":"IndexAccess","src":"33772:8:19"}],"id":5098,"name":"Assignment","src":"33759:21:19"}],"id":5099,"name":"ExpressionStatement","src":"33759:21:19"},{"attributes":{"functionReturnParameters":5065},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5100,"name":"Identifier","src":"33797:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5053,"type":"string memory","value":"_datasource"},"id":5101,"name":"Identifier","src":"33812:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory[] memory","value":"dynargs"},"id":5102,"name":"Identifier","src":"33825:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5059,"type":"uint256","value":"_gasLimit"},"id":5103,"name":"Identifier","src":"33834:9:19"}],"id":5104,"name":"FunctionCall","src":"33797:47:19"}],"id":5105,"name":"Return","src":"33790:54:19"}],"id":5106,"name":"Block","src":"33638:213:19"}],"id":5107,"name":"FunctionDefinition","src":"33505:346:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5168,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5108,"name":"ElementaryTypeName","src":"33881:6:19"}],"id":5109,"name":"VariableDeclaration","src":"33881:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5168,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5110,"name":"ElementaryTypeName","src":"33908:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5111,"name":"Literal","src":"33914:1:19"}],"id":5112,"name":"ArrayTypeName","src":"33908:8:19"}],"id":5113,"name":"VariableDeclaration","src":"33908:21:19"}],"id":5114,"name":"ParameterList","src":"33880:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5168,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5117,"name":"ElementaryTypeName","src":"33961:7:19"}],"id":5118,"name":"VariableDeclaration","src":"33961:11:19"}],"id":5119,"name":"ParameterList","src":"33960:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5115,"name":"Identifier","src":"33931:11:19"}],"id":5116,"name":"ModifierInvocation","src":"33931:11:19"},{"children":[{"attributes":{"assignments":[5123]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5167,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5121,"name":"ElementaryTypeName","src":"33984:5:19"}],"id":5122,"name":"ArrayTypeName","src":"33984:7:19"}],"id":5123,"name":"VariableDeclaration","src":"33984:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5124,"name":"ElementaryTypeName","src":"34013:5:19"}],"id":5125,"name":"ArrayTypeName","src":"34013:7:19"}],"id":5126,"name":"NewExpression","src":"34009:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5127,"name":"Literal","src":"34021:1:19"}],"id":5128,"name":"FunctionCall","src":"34009:14:19"}],"id":5129,"name":"VariableDeclarationStatement","src":"33984:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5130,"name":"Identifier","src":"34033:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5131,"name":"Literal","src":"34041:1:19"}],"id":5132,"name":"IndexAccess","src":"34033:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5113,"type":"bytes memory[4] memory","value":"_args"},"id":5133,"name":"Identifier","src":"34046:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5134,"name":"Literal","src":"34052:1:19"}],"id":5135,"name":"IndexAccess","src":"34046:8:19"}],"id":5136,"name":"Assignment","src":"34033:21:19"}],"id":5137,"name":"ExpressionStatement","src":"34033:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5138,"name":"Identifier","src":"34064:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5139,"name":"Literal","src":"34072:1:19"}],"id":5140,"name":"IndexAccess","src":"34064:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5113,"type":"bytes memory[4] memory","value":"_args"},"id":5141,"name":"Identifier","src":"34077:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5142,"name":"Literal","src":"34083:1:19"}],"id":5143,"name":"IndexAccess","src":"34077:8:19"}],"id":5144,"name":"Assignment","src":"34064:21:19"}],"id":5145,"name":"ExpressionStatement","src":"34064:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5146,"name":"Identifier","src":"34095:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5147,"name":"Literal","src":"34103:1:19"}],"id":5148,"name":"IndexAccess","src":"34095:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5113,"type":"bytes memory[4] memory","value":"_args"},"id":5149,"name":"Identifier","src":"34108:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5150,"name":"Literal","src":"34114:1:19"}],"id":5151,"name":"IndexAccess","src":"34108:8:19"}],"id":5152,"name":"Assignment","src":"34095:21:19"}],"id":5153,"name":"ExpressionStatement","src":"34095:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5154,"name":"Identifier","src":"34126:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5155,"name":"Literal","src":"34134:1:19"}],"id":5156,"name":"IndexAccess","src":"34126:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5113,"type":"bytes memory[4] memory","value":"_args"},"id":5157,"name":"Identifier","src":"34139:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5158,"name":"Literal","src":"34145:1:19"}],"id":5159,"name":"IndexAccess","src":"34139:8:19"}],"id":5160,"name":"Assignment","src":"34126:21:19"}],"id":5161,"name":"ExpressionStatement","src":"34126:21:19"},{"attributes":{"functionReturnParameters":5119},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":5162,"name":"Identifier","src":"34164:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5109,"type":"string memory","value":"_datasource"},"id":5163,"name":"Identifier","src":"34179:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5164,"name":"Identifier","src":"34192:7:19"}],"id":5165,"name":"FunctionCall","src":"34164:36:19"}],"id":5166,"name":"Return","src":"34157:43:19"}],"id":5167,"name":"Block","src":"33974:233:19"}],"id":5168,"name":"FunctionDefinition","src":"33857:350:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5232,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5169,"name":"ElementaryTypeName","src":"34237:4:19"}],"id":5170,"name":"VariableDeclaration","src":"34237:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5232,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5171,"name":"ElementaryTypeName","src":"34254:6:19"}],"id":5172,"name":"VariableDeclaration","src":"34254:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5232,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5173,"name":"ElementaryTypeName","src":"34281:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5174,"name":"Literal","src":"34287:1:19"}],"id":5175,"name":"ArrayTypeName","src":"34281:8:19"}],"id":5176,"name":"VariableDeclaration","src":"34281:21:19"}],"id":5177,"name":"ParameterList","src":"34236:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5232,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5180,"name":"ElementaryTypeName","src":"34334:7:19"}],"id":5181,"name":"VariableDeclaration","src":"34334:11:19"}],"id":5182,"name":"ParameterList","src":"34333:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5178,"name":"Identifier","src":"34304:11:19"}],"id":5179,"name":"ModifierInvocation","src":"34304:11:19"},{"children":[{"attributes":{"assignments":[5186]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5231,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5184,"name":"ElementaryTypeName","src":"34357:5:19"}],"id":5185,"name":"ArrayTypeName","src":"34357:7:19"}],"id":5186,"name":"VariableDeclaration","src":"34357:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5187,"name":"ElementaryTypeName","src":"34386:5:19"}],"id":5188,"name":"ArrayTypeName","src":"34386:7:19"}],"id":5189,"name":"NewExpression","src":"34382:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5190,"name":"Literal","src":"34394:1:19"}],"id":5191,"name":"FunctionCall","src":"34382:14:19"}],"id":5192,"name":"VariableDeclarationStatement","src":"34357:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5193,"name":"Identifier","src":"34406:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5194,"name":"Literal","src":"34414:1:19"}],"id":5195,"name":"IndexAccess","src":"34406:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"bytes memory[4] memory","value":"_args"},"id":5196,"name":"Identifier","src":"34419:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5197,"name":"Literal","src":"34425:1:19"}],"id":5198,"name":"IndexAccess","src":"34419:8:19"}],"id":5199,"name":"Assignment","src":"34406:21:19"}],"id":5200,"name":"ExpressionStatement","src":"34406:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5201,"name":"Identifier","src":"34437:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5202,"name":"Literal","src":"34445:1:19"}],"id":5203,"name":"IndexAccess","src":"34437:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"bytes memory[4] memory","value":"_args"},"id":5204,"name":"Identifier","src":"34450:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5205,"name":"Literal","src":"34456:1:19"}],"id":5206,"name":"IndexAccess","src":"34450:8:19"}],"id":5207,"name":"Assignment","src":"34437:21:19"}],"id":5208,"name":"ExpressionStatement","src":"34437:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5209,"name":"Identifier","src":"34468:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5210,"name":"Literal","src":"34476:1:19"}],"id":5211,"name":"IndexAccess","src":"34468:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"bytes memory[4] memory","value":"_args"},"id":5212,"name":"Identifier","src":"34481:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5213,"name":"Literal","src":"34487:1:19"}],"id":5214,"name":"IndexAccess","src":"34481:8:19"}],"id":5215,"name":"Assignment","src":"34468:21:19"}],"id":5216,"name":"ExpressionStatement","src":"34468:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5217,"name":"Identifier","src":"34499:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5218,"name":"Literal","src":"34507:1:19"}],"id":5219,"name":"IndexAccess","src":"34499:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"bytes memory[4] memory","value":"_args"},"id":5220,"name":"Identifier","src":"34512:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5221,"name":"Literal","src":"34518:1:19"}],"id":5222,"name":"IndexAccess","src":"34512:8:19"}],"id":5223,"name":"Assignment","src":"34499:21:19"}],"id":5224,"name":"ExpressionStatement","src":"34499:21:19"},{"attributes":{"functionReturnParameters":5182},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":5225,"name":"Identifier","src":"34537:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5170,"type":"uint256","value":"_timestamp"},"id":5226,"name":"Identifier","src":"34552:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5172,"type":"string memory","value":"_datasource"},"id":5227,"name":"Identifier","src":"34564:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5228,"name":"Identifier","src":"34577:7:19"}],"id":5229,"name":"FunctionCall","src":"34537:48:19"}],"id":5230,"name":"Return","src":"34530:55:19"}],"id":5231,"name":"Block","src":"34347:245:19"}],"id":5232,"name":"FunctionDefinition","src":"34213:379:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5233,"name":"ElementaryTypeName","src":"34622:4:19"}],"id":5234,"name":"VariableDeclaration","src":"34622:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5299,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5235,"name":"ElementaryTypeName","src":"34639:6:19"}],"id":5236,"name":"VariableDeclaration","src":"34639:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5299,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5237,"name":"ElementaryTypeName","src":"34666:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5238,"name":"Literal","src":"34672:1:19"}],"id":5239,"name":"ArrayTypeName","src":"34666:8:19"}],"id":5240,"name":"VariableDeclaration","src":"34666:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5241,"name":"ElementaryTypeName","src":"34689:4:19"}],"id":5242,"name":"VariableDeclaration","src":"34689:14:19"}],"id":5243,"name":"ParameterList","src":"34621:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5299,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5246,"name":"ElementaryTypeName","src":"34735:7:19"}],"id":5247,"name":"VariableDeclaration","src":"34735:11:19"}],"id":5248,"name":"ParameterList","src":"34734:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5244,"name":"Identifier","src":"34705:11:19"}],"id":5245,"name":"ModifierInvocation","src":"34705:11:19"},{"children":[{"attributes":{"assignments":[5252]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5298,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5250,"name":"ElementaryTypeName","src":"34758:5:19"}],"id":5251,"name":"ArrayTypeName","src":"34758:7:19"}],"id":5252,"name":"VariableDeclaration","src":"34758:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5253,"name":"ElementaryTypeName","src":"34787:5:19"}],"id":5254,"name":"ArrayTypeName","src":"34787:7:19"}],"id":5255,"name":"NewExpression","src":"34783:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5256,"name":"Literal","src":"34795:1:19"}],"id":5257,"name":"FunctionCall","src":"34783:14:19"}],"id":5258,"name":"VariableDeclarationStatement","src":"34758:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5259,"name":"Identifier","src":"34807:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5260,"name":"Literal","src":"34815:1:19"}],"id":5261,"name":"IndexAccess","src":"34807:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes memory[4] memory","value":"_args"},"id":5262,"name":"Identifier","src":"34820:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5263,"name":"Literal","src":"34826:1:19"}],"id":5264,"name":"IndexAccess","src":"34820:8:19"}],"id":5265,"name":"Assignment","src":"34807:21:19"}],"id":5266,"name":"ExpressionStatement","src":"34807:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5267,"name":"Identifier","src":"34838:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5268,"name":"Literal","src":"34846:1:19"}],"id":5269,"name":"IndexAccess","src":"34838:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes memory[4] memory","value":"_args"},"id":5270,"name":"Identifier","src":"34851:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5271,"name":"Literal","src":"34857:1:19"}],"id":5272,"name":"IndexAccess","src":"34851:8:19"}],"id":5273,"name":"Assignment","src":"34838:21:19"}],"id":5274,"name":"ExpressionStatement","src":"34838:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5275,"name":"Identifier","src":"34869:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5276,"name":"Literal","src":"34877:1:19"}],"id":5277,"name":"IndexAccess","src":"34869:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes memory[4] memory","value":"_args"},"id":5278,"name":"Identifier","src":"34882:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5279,"name":"Literal","src":"34888:1:19"}],"id":5280,"name":"IndexAccess","src":"34882:8:19"}],"id":5281,"name":"Assignment","src":"34869:21:19"}],"id":5282,"name":"ExpressionStatement","src":"34869:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5283,"name":"Identifier","src":"34900:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5284,"name":"Literal","src":"34908:1:19"}],"id":5285,"name":"IndexAccess","src":"34900:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes memory[4] memory","value":"_args"},"id":5286,"name":"Identifier","src":"34913:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5287,"name":"Literal","src":"34919:1:19"}],"id":5288,"name":"IndexAccess","src":"34913:8:19"}],"id":5289,"name":"Assignment","src":"34900:21:19"}],"id":5290,"name":"ExpressionStatement","src":"34900:21:19"},{"attributes":{"functionReturnParameters":5248},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5291,"name":"Identifier","src":"34938:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"uint256","value":"_timestamp"},"id":5292,"name":"Identifier","src":"34953:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"string memory","value":"_datasource"},"id":5293,"name":"Identifier","src":"34965:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5294,"name":"Identifier","src":"34978:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5242,"type":"uint256","value":"_gasLimit"},"id":5295,"name":"Identifier","src":"34987:9:19"}],"id":5296,"name":"FunctionCall","src":"34938:59:19"}],"id":5297,"name":"Return","src":"34931:66:19"}],"id":5298,"name":"Block","src":"34748:256:19"}],"id":5299,"name":"FunctionDefinition","src":"34598:406:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5363,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5300,"name":"ElementaryTypeName","src":"35034:6:19"}],"id":5301,"name":"VariableDeclaration","src":"35034:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5363,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5302,"name":"ElementaryTypeName","src":"35061:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5303,"name":"Literal","src":"35067:1:19"}],"id":5304,"name":"ArrayTypeName","src":"35061:8:19"}],"id":5305,"name":"VariableDeclaration","src":"35061:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5363,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5306,"name":"ElementaryTypeName","src":"35084:4:19"}],"id":5307,"name":"VariableDeclaration","src":"35084:14:19"}],"id":5308,"name":"ParameterList","src":"35033:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5363,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5311,"name":"ElementaryTypeName","src":"35130:7:19"}],"id":5312,"name":"VariableDeclaration","src":"35130:11:19"}],"id":5313,"name":"ParameterList","src":"35129:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5309,"name":"Identifier","src":"35100:11:19"}],"id":5310,"name":"ModifierInvocation","src":"35100:11:19"},{"children":[{"attributes":{"assignments":[5317]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5362,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5315,"name":"ElementaryTypeName","src":"35153:5:19"}],"id":5316,"name":"ArrayTypeName","src":"35153:7:19"}],"id":5317,"name":"VariableDeclaration","src":"35153:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5318,"name":"ElementaryTypeName","src":"35182:5:19"}],"id":5319,"name":"ArrayTypeName","src":"35182:7:19"}],"id":5320,"name":"NewExpression","src":"35178:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5321,"name":"Literal","src":"35190:1:19"}],"id":5322,"name":"FunctionCall","src":"35178:14:19"}],"id":5323,"name":"VariableDeclarationStatement","src":"35153:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5324,"name":"Identifier","src":"35202:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5325,"name":"Literal","src":"35210:1:19"}],"id":5326,"name":"IndexAccess","src":"35202:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"bytes memory[4] memory","value":"_args"},"id":5327,"name":"Identifier","src":"35215:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5328,"name":"Literal","src":"35221:1:19"}],"id":5329,"name":"IndexAccess","src":"35215:8:19"}],"id":5330,"name":"Assignment","src":"35202:21:19"}],"id":5331,"name":"ExpressionStatement","src":"35202:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5332,"name":"Identifier","src":"35233:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5333,"name":"Literal","src":"35241:1:19"}],"id":5334,"name":"IndexAccess","src":"35233:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"bytes memory[4] memory","value":"_args"},"id":5335,"name":"Identifier","src":"35246:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5336,"name":"Literal","src":"35252:1:19"}],"id":5337,"name":"IndexAccess","src":"35246:8:19"}],"id":5338,"name":"Assignment","src":"35233:21:19"}],"id":5339,"name":"ExpressionStatement","src":"35233:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5340,"name":"Identifier","src":"35264:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5341,"name":"Literal","src":"35272:1:19"}],"id":5342,"name":"IndexAccess","src":"35264:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"bytes memory[4] memory","value":"_args"},"id":5343,"name":"Identifier","src":"35277:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5344,"name":"Literal","src":"35283:1:19"}],"id":5345,"name":"IndexAccess","src":"35277:8:19"}],"id":5346,"name":"Assignment","src":"35264:21:19"}],"id":5347,"name":"ExpressionStatement","src":"35264:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5348,"name":"Identifier","src":"35295:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5349,"name":"Literal","src":"35303:1:19"}],"id":5350,"name":"IndexAccess","src":"35295:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"bytes memory[4] memory","value":"_args"},"id":5351,"name":"Identifier","src":"35308:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5352,"name":"Literal","src":"35314:1:19"}],"id":5353,"name":"IndexAccess","src":"35308:8:19"}],"id":5354,"name":"Assignment","src":"35295:21:19"}],"id":5355,"name":"ExpressionStatement","src":"35295:21:19"},{"attributes":{"functionReturnParameters":5313},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5356,"name":"Identifier","src":"35333:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5301,"type":"string memory","value":"_datasource"},"id":5357,"name":"Identifier","src":"35348:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5358,"name":"Identifier","src":"35361:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5307,"type":"uint256","value":"_gasLimit"},"id":5359,"name":"Identifier","src":"35370:9:19"}],"id":5360,"name":"FunctionCall","src":"35333:47:19"}],"id":5361,"name":"Return","src":"35326:54:19"}],"id":5362,"name":"Block","src":"35143:244:19"}],"id":5363,"name":"FunctionDefinition","src":"35010:377:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5432,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5364,"name":"ElementaryTypeName","src":"35417:6:19"}],"id":5365,"name":"VariableDeclaration","src":"35417:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5432,"stateVariable":false,"storageLocation":"memory","type":"bytes[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[5]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5366,"name":"ElementaryTypeName","src":"35444:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5367,"name":"Literal","src":"35450:1:19"}],"id":5368,"name":"ArrayTypeName","src":"35444:8:19"}],"id":5369,"name":"VariableDeclaration","src":"35444:21:19"}],"id":5370,"name":"ParameterList","src":"35416:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5432,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5373,"name":"ElementaryTypeName","src":"35497:7:19"}],"id":5374,"name":"VariableDeclaration","src":"35497:11:19"}],"id":5375,"name":"ParameterList","src":"35496:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5371,"name":"Identifier","src":"35467:11:19"}],"id":5372,"name":"ModifierInvocation","src":"35467:11:19"},{"children":[{"attributes":{"assignments":[5379]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5431,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5377,"name":"ElementaryTypeName","src":"35520:5:19"}],"id":5378,"name":"ArrayTypeName","src":"35520:7:19"}],"id":5379,"name":"VariableDeclaration","src":"35520:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5380,"name":"ElementaryTypeName","src":"35549:5:19"}],"id":5381,"name":"ArrayTypeName","src":"35549:7:19"}],"id":5382,"name":"NewExpression","src":"35545:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5383,"name":"Literal","src":"35557:1:19"}],"id":5384,"name":"FunctionCall","src":"35545:14:19"}],"id":5385,"name":"VariableDeclarationStatement","src":"35520:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5386,"name":"Identifier","src":"35569:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5387,"name":"Literal","src":"35577:1:19"}],"id":5388,"name":"IndexAccess","src":"35569:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5389,"name":"Identifier","src":"35582:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5390,"name":"Literal","src":"35588:1:19"}],"id":5391,"name":"IndexAccess","src":"35582:8:19"}],"id":5392,"name":"Assignment","src":"35569:21:19"}],"id":5393,"name":"ExpressionStatement","src":"35569:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5394,"name":"Identifier","src":"35600:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5395,"name":"Literal","src":"35608:1:19"}],"id":5396,"name":"IndexAccess","src":"35600:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5397,"name":"Identifier","src":"35613:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5398,"name":"Literal","src":"35619:1:19"}],"id":5399,"name":"IndexAccess","src":"35613:8:19"}],"id":5400,"name":"Assignment","src":"35600:21:19"}],"id":5401,"name":"ExpressionStatement","src":"35600:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5402,"name":"Identifier","src":"35631:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5403,"name":"Literal","src":"35639:1:19"}],"id":5404,"name":"IndexAccess","src":"35631:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5405,"name":"Identifier","src":"35644:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5406,"name":"Literal","src":"35650:1:19"}],"id":5407,"name":"IndexAccess","src":"35644:8:19"}],"id":5408,"name":"Assignment","src":"35631:21:19"}],"id":5409,"name":"ExpressionStatement","src":"35631:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5410,"name":"Identifier","src":"35662:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5411,"name":"Literal","src":"35670:1:19"}],"id":5412,"name":"IndexAccess","src":"35662:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5413,"name":"Identifier","src":"35675:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5414,"name":"Literal","src":"35681:1:19"}],"id":5415,"name":"IndexAccess","src":"35675:8:19"}],"id":5416,"name":"Assignment","src":"35662:21:19"}],"id":5417,"name":"ExpressionStatement","src":"35662:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5418,"name":"Identifier","src":"35693:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5419,"name":"Literal","src":"35701:1:19"}],"id":5420,"name":"IndexAccess","src":"35693:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5421,"name":"Identifier","src":"35706:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5422,"name":"Literal","src":"35712:1:19"}],"id":5423,"name":"IndexAccess","src":"35706:8:19"}],"id":5424,"name":"Assignment","src":"35693:21:19"}],"id":5425,"name":"ExpressionStatement","src":"35693:21:19"},{"attributes":{"functionReturnParameters":5375},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":5426,"name":"Identifier","src":"35731:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5365,"type":"string memory","value":"_datasource"},"id":5427,"name":"Identifier","src":"35746:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5428,"name":"Identifier","src":"35759:7:19"}],"id":5429,"name":"FunctionCall","src":"35731:36:19"}],"id":5430,"name":"Return","src":"35724:43:19"}],"id":5431,"name":"Block","src":"35510:264:19"}],"id":5432,"name":"FunctionDefinition","src":"35393:381:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5504,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5433,"name":"ElementaryTypeName","src":"35804:4:19"}],"id":5434,"name":"VariableDeclaration","src":"35804:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5504,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5435,"name":"ElementaryTypeName","src":"35821:6:19"}],"id":5436,"name":"VariableDeclaration","src":"35821:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5504,"stateVariable":false,"storageLocation":"memory","type":"bytes[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[5]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5437,"name":"ElementaryTypeName","src":"35848:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5438,"name":"Literal","src":"35854:1:19"}],"id":5439,"name":"ArrayTypeName","src":"35848:8:19"}],"id":5440,"name":"VariableDeclaration","src":"35848:21:19"}],"id":5441,"name":"ParameterList","src":"35803:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5504,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5444,"name":"ElementaryTypeName","src":"35901:7:19"}],"id":5445,"name":"VariableDeclaration","src":"35901:11:19"}],"id":5446,"name":"ParameterList","src":"35900:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5442,"name":"Identifier","src":"35871:11:19"}],"id":5443,"name":"ModifierInvocation","src":"35871:11:19"},{"children":[{"attributes":{"assignments":[5450]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5503,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5448,"name":"ElementaryTypeName","src":"35924:5:19"}],"id":5449,"name":"ArrayTypeName","src":"35924:7:19"}],"id":5450,"name":"VariableDeclaration","src":"35924:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5451,"name":"ElementaryTypeName","src":"35953:5:19"}],"id":5452,"name":"ArrayTypeName","src":"35953:7:19"}],"id":5453,"name":"NewExpression","src":"35949:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5454,"name":"Literal","src":"35961:1:19"}],"id":5455,"name":"FunctionCall","src":"35949:14:19"}],"id":5456,"name":"VariableDeclarationStatement","src":"35924:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5457,"name":"Identifier","src":"35973:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5458,"name":"Literal","src":"35981:1:19"}],"id":5459,"name":"IndexAccess","src":"35973:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5460,"name":"Identifier","src":"35986:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5461,"name":"Literal","src":"35992:1:19"}],"id":5462,"name":"IndexAccess","src":"35986:8:19"}],"id":5463,"name":"Assignment","src":"35973:21:19"}],"id":5464,"name":"ExpressionStatement","src":"35973:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5465,"name":"Identifier","src":"36004:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5466,"name":"Literal","src":"36012:1:19"}],"id":5467,"name":"IndexAccess","src":"36004:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5468,"name":"Identifier","src":"36017:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5469,"name":"Literal","src":"36023:1:19"}],"id":5470,"name":"IndexAccess","src":"36017:8:19"}],"id":5471,"name":"Assignment","src":"36004:21:19"}],"id":5472,"name":"ExpressionStatement","src":"36004:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5473,"name":"Identifier","src":"36035:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5474,"name":"Literal","src":"36043:1:19"}],"id":5475,"name":"IndexAccess","src":"36035:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5476,"name":"Identifier","src":"36048:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5477,"name":"Literal","src":"36054:1:19"}],"id":5478,"name":"IndexAccess","src":"36048:8:19"}],"id":5479,"name":"Assignment","src":"36035:21:19"}],"id":5480,"name":"ExpressionStatement","src":"36035:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5481,"name":"Identifier","src":"36066:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5482,"name":"Literal","src":"36074:1:19"}],"id":5483,"name":"IndexAccess","src":"36066:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5484,"name":"Identifier","src":"36079:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5485,"name":"Literal","src":"36085:1:19"}],"id":5486,"name":"IndexAccess","src":"36079:8:19"}],"id":5487,"name":"Assignment","src":"36066:21:19"}],"id":5488,"name":"ExpressionStatement","src":"36066:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5489,"name":"Identifier","src":"36097:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5490,"name":"Literal","src":"36105:1:19"}],"id":5491,"name":"IndexAccess","src":"36097:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5492,"name":"Identifier","src":"36110:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5493,"name":"Literal","src":"36116:1:19"}],"id":5494,"name":"IndexAccess","src":"36110:8:19"}],"id":5495,"name":"Assignment","src":"36097:21:19"}],"id":5496,"name":"ExpressionStatement","src":"36097:21:19"},{"attributes":{"functionReturnParameters":5446},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":5497,"name":"Identifier","src":"36135:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5434,"type":"uint256","value":"_timestamp"},"id":5498,"name":"Identifier","src":"36150:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"string memory","value":"_datasource"},"id":5499,"name":"Identifier","src":"36162:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5500,"name":"Identifier","src":"36175:7:19"}],"id":5501,"name":"FunctionCall","src":"36135:48:19"}],"id":5502,"name":"Return","src":"36128:55:19"}],"id":5503,"name":"Block","src":"35914:276:19"}],"id":5504,"name":"FunctionDefinition","src":"35780:410:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5505,"name":"ElementaryTypeName","src":"36220:4:19"}],"id":5506,"name":"VariableDeclaration","src":"36220:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5579,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5507,"name":"ElementaryTypeName","src":"36237:6:19"}],"id":5508,"name":"VariableDeclaration","src":"36237:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5579,"stateVariable":false,"storageLocation":"memory","type":"bytes[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[5]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5509,"name":"ElementaryTypeName","src":"36264:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5510,"name":"Literal","src":"36270:1:19"}],"id":5511,"name":"ArrayTypeName","src":"36264:8:19"}],"id":5512,"name":"VariableDeclaration","src":"36264:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5513,"name":"ElementaryTypeName","src":"36287:4:19"}],"id":5514,"name":"VariableDeclaration","src":"36287:14:19"}],"id":5515,"name":"ParameterList","src":"36219:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5579,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5518,"name":"ElementaryTypeName","src":"36333:7:19"}],"id":5519,"name":"VariableDeclaration","src":"36333:11:19"}],"id":5520,"name":"ParameterList","src":"36332:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5516,"name":"Identifier","src":"36303:11:19"}],"id":5517,"name":"ModifierInvocation","src":"36303:11:19"},{"children":[{"attributes":{"assignments":[5524]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5578,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5522,"name":"ElementaryTypeName","src":"36356:5:19"}],"id":5523,"name":"ArrayTypeName","src":"36356:7:19"}],"id":5524,"name":"VariableDeclaration","src":"36356:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5525,"name":"ElementaryTypeName","src":"36385:5:19"}],"id":5526,"name":"ArrayTypeName","src":"36385:7:19"}],"id":5527,"name":"NewExpression","src":"36381:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5528,"name":"Literal","src":"36393:1:19"}],"id":5529,"name":"FunctionCall","src":"36381:14:19"}],"id":5530,"name":"VariableDeclarationStatement","src":"36356:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5531,"name":"Identifier","src":"36405:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5532,"name":"Literal","src":"36413:1:19"}],"id":5533,"name":"IndexAccess","src":"36405:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5534,"name":"Identifier","src":"36418:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5535,"name":"Literal","src":"36424:1:19"}],"id":5536,"name":"IndexAccess","src":"36418:8:19"}],"id":5537,"name":"Assignment","src":"36405:21:19"}],"id":5538,"name":"ExpressionStatement","src":"36405:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5539,"name":"Identifier","src":"36436:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5540,"name":"Literal","src":"36444:1:19"}],"id":5541,"name":"IndexAccess","src":"36436:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5542,"name":"Identifier","src":"36449:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5543,"name":"Literal","src":"36455:1:19"}],"id":5544,"name":"IndexAccess","src":"36449:8:19"}],"id":5545,"name":"Assignment","src":"36436:21:19"}],"id":5546,"name":"ExpressionStatement","src":"36436:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5547,"name":"Identifier","src":"36467:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5548,"name":"Literal","src":"36475:1:19"}],"id":5549,"name":"IndexAccess","src":"36467:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5550,"name":"Identifier","src":"36480:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5551,"name":"Literal","src":"36486:1:19"}],"id":5552,"name":"IndexAccess","src":"36480:8:19"}],"id":5553,"name":"Assignment","src":"36467:21:19"}],"id":5554,"name":"ExpressionStatement","src":"36467:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5555,"name":"Identifier","src":"36498:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5556,"name":"Literal","src":"36506:1:19"}],"id":5557,"name":"IndexAccess","src":"36498:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5558,"name":"Identifier","src":"36511:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5559,"name":"Literal","src":"36517:1:19"}],"id":5560,"name":"IndexAccess","src":"36511:8:19"}],"id":5561,"name":"Assignment","src":"36498:21:19"}],"id":5562,"name":"ExpressionStatement","src":"36498:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5563,"name":"Identifier","src":"36529:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5564,"name":"Literal","src":"36537:1:19"}],"id":5565,"name":"IndexAccess","src":"36529:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5566,"name":"Identifier","src":"36542:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5567,"name":"Literal","src":"36548:1:19"}],"id":5568,"name":"IndexAccess","src":"36542:8:19"}],"id":5569,"name":"Assignment","src":"36529:21:19"}],"id":5570,"name":"ExpressionStatement","src":"36529:21:19"},{"attributes":{"functionReturnParameters":5520},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5571,"name":"Identifier","src":"36567:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5506,"type":"uint256","value":"_timestamp"},"id":5572,"name":"Identifier","src":"36582:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5508,"type":"string memory","value":"_datasource"},"id":5573,"name":"Identifier","src":"36594:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5574,"name":"Identifier","src":"36607:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5514,"type":"uint256","value":"_gasLimit"},"id":5575,"name":"Identifier","src":"36616:9:19"}],"id":5576,"name":"FunctionCall","src":"36567:59:19"}],"id":5577,"name":"Return","src":"36560:66:19"}],"id":5578,"name":"Block","src":"36346:287:19"}],"id":5579,"name":"FunctionDefinition","src":"36196:437:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5651,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5580,"name":"ElementaryTypeName","src":"36663:6:19"}],"id":5581,"name":"VariableDeclaration","src":"36663:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5651,"stateVariable":false,"storageLocation":"memory","type":"bytes[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[5]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5582,"name":"ElementaryTypeName","src":"36690:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5583,"name":"Literal","src":"36696:1:19"}],"id":5584,"name":"ArrayTypeName","src":"36690:8:19"}],"id":5585,"name":"VariableDeclaration","src":"36690:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5586,"name":"ElementaryTypeName","src":"36713:4:19"}],"id":5587,"name":"VariableDeclaration","src":"36713:14:19"}],"id":5588,"name":"ParameterList","src":"36662:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5651,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5591,"name":"ElementaryTypeName","src":"36759:7:19"}],"id":5592,"name":"VariableDeclaration","src":"36759:11:19"}],"id":5593,"name":"ParameterList","src":"36758:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5589,"name":"Identifier","src":"36729:11:19"}],"id":5590,"name":"ModifierInvocation","src":"36729:11:19"},{"children":[{"attributes":{"assignments":[5597]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5650,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5595,"name":"ElementaryTypeName","src":"36782:5:19"}],"id":5596,"name":"ArrayTypeName","src":"36782:7:19"}],"id":5597,"name":"VariableDeclaration","src":"36782:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5598,"name":"ElementaryTypeName","src":"36811:5:19"}],"id":5599,"name":"ArrayTypeName","src":"36811:7:19"}],"id":5600,"name":"NewExpression","src":"36807:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5601,"name":"Literal","src":"36819:1:19"}],"id":5602,"name":"FunctionCall","src":"36807:14:19"}],"id":5603,"name":"VariableDeclarationStatement","src":"36782:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5604,"name":"Identifier","src":"36831:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5605,"name":"Literal","src":"36839:1:19"}],"id":5606,"name":"IndexAccess","src":"36831:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5607,"name":"Identifier","src":"36844:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5608,"name":"Literal","src":"36850:1:19"}],"id":5609,"name":"IndexAccess","src":"36844:8:19"}],"id":5610,"name":"Assignment","src":"36831:21:19"}],"id":5611,"name":"ExpressionStatement","src":"36831:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5612,"name":"Identifier","src":"36862:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5613,"name":"Literal","src":"36870:1:19"}],"id":5614,"name":"IndexAccess","src":"36862:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5615,"name":"Identifier","src":"36875:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5616,"name":"Literal","src":"36881:1:19"}],"id":5617,"name":"IndexAccess","src":"36875:8:19"}],"id":5618,"name":"Assignment","src":"36862:21:19"}],"id":5619,"name":"ExpressionStatement","src":"36862:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5620,"name":"Identifier","src":"36893:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5621,"name":"Literal","src":"36901:1:19"}],"id":5622,"name":"IndexAccess","src":"36893:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5623,"name":"Identifier","src":"36906:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5624,"name":"Literal","src":"36912:1:19"}],"id":5625,"name":"IndexAccess","src":"36906:8:19"}],"id":5626,"name":"Assignment","src":"36893:21:19"}],"id":5627,"name":"ExpressionStatement","src":"36893:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5628,"name":"Identifier","src":"36924:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5629,"name":"Literal","src":"36932:1:19"}],"id":5630,"name":"IndexAccess","src":"36924:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5631,"name":"Identifier","src":"36937:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5632,"name":"Literal","src":"36943:1:19"}],"id":5633,"name":"IndexAccess","src":"36937:8:19"}],"id":5634,"name":"Assignment","src":"36924:21:19"}],"id":5635,"name":"ExpressionStatement","src":"36924:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5636,"name":"Identifier","src":"36955:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5637,"name":"Literal","src":"36963:1:19"}],"id":5638,"name":"IndexAccess","src":"36955:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5639,"name":"Identifier","src":"36968:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5640,"name":"Literal","src":"36974:1:19"}],"id":5641,"name":"IndexAccess","src":"36968:8:19"}],"id":5642,"name":"Assignment","src":"36955:21:19"}],"id":5643,"name":"ExpressionStatement","src":"36955:21:19"},{"attributes":{"functionReturnParameters":5593},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5644,"name":"Identifier","src":"36993:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5581,"type":"string memory","value":"_datasource"},"id":5645,"name":"Identifier","src":"37008:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5646,"name":"Identifier","src":"37021:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"uint256","value":"_gasLimit"},"id":5647,"name":"Identifier","src":"37030:9:19"}],"id":5648,"name":"FunctionCall","src":"36993:47:19"}],"id":5649,"name":"Return","src":"36986:54:19"}],"id":5650,"name":"Block","src":"36772:275:19"}],"id":5651,"name":"FunctionDefinition","src":"36639:408:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_setProof","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_proofP","scope":5664,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":5652,"name":"ElementaryTypeName","src":"37080:4:19"}],"id":5653,"name":"VariableDeclaration","src":"37080:12:19"}],"id":5654,"name":"ParameterList","src":"37079:14:19"},{"attributes":{"parameters":[null]},"children":[],"id":5657,"name":"ParameterList","src":"37115:0:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5655,"name":"Identifier","src":"37094:11:19"}],"id":5656,"name":"ModifierInvocation","src":"37094:11:19"},{"children":[{"attributes":{"functionReturnParameters":5657},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setProofType","referencedDeclaration":1589,"type":"function (bytes1) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":5658,"name":"Identifier","src":"37132:8:19"}],"id":5659,"name":"MemberAccess","src":"37132:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5653,"type":"bytes1","value":"_proofP"},"id":5660,"name":"Identifier","src":"37154:7:19"}],"id":5661,"name":"FunctionCall","src":"37132:30:19"}],"id":5662,"name":"Return","src":"37125:37:19"}],"id":5663,"name":"Block","src":"37115:54:19"}],"id":5664,"name":"FunctionDefinition","src":"37053:116:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_cbAddress","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5665,"name":"ParameterList","src":"37203:2:19"},{"children":[{"attributes":{"constant":false,"name":"_callbackAddress","scope":5676,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5668,"name":"ElementaryTypeName","src":"37236:7:19"}],"id":5669,"name":"VariableDeclaration","src":"37236:24:19"}],"id":5670,"name":"ParameterList","src":"37235:26:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5666,"name":"Identifier","src":"37206:11:19"}],"id":5667,"name":"ModifierInvocation","src":"37206:11:19"},{"children":[{"attributes":{"functionReturnParameters":5670},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"cbAddress","referencedDeclaration":1584,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":5671,"name":"Identifier","src":"37279:8:19"}],"id":5672,"name":"MemberAccess","src":"37279:18:19"}],"id":5673,"name":"FunctionCall","src":"37279:20:19"}],"id":5674,"name":"Return","src":"37272:27:19"}],"id":5675,"name":"Block","src":"37262:44:19"}],"id":5676,"name":"FunctionDefinition","src":"37176:130:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getCodeSize","scope":7853,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addr","scope":5685,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5677,"name":"ElementaryTypeName","src":"37333:7:19"}],"id":5678,"name":"VariableDeclaration","src":"37333:13:19"}],"id":5679,"name":"ParameterList","src":"37332:15:19"},{"children":[{"attributes":{"constant":false,"name":"_size","scope":5685,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5680,"name":"ElementaryTypeName","src":"37371:4:19"}],"id":5681,"name":"VariableDeclaration","src":"37371:10:19"}],"id":5682,"name":"ParameterList","src":"37370:12:19"},{"children":[{"attributes":{"externalReferences":[{"_size":{"declaration":5681,"isOffset":false,"isSlot":false,"src":"37416:5:19","valueSize":1}},{"_addr":{"declaration":5678,"isOffset":false,"isSlot":false,"src":"37437:5:19","valueSize":1}}],"operations":"{ _size := extcodesize(_addr) }"},"children":[],"id":5683,"name":"InlineAssembly","src":"37393:60:19"}],"id":5684,"name":"Block","src":"37383:76:19"}],"id":5685,"name":"FunctionDefinition","src":"37312:147:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_setCustomGasPrice","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasPrice","scope":5698,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5686,"name":"ElementaryTypeName","src":"37501:4:19"}],"id":5687,"name":"VariableDeclaration","src":"37501:14:19"}],"id":5688,"name":"ParameterList","src":"37500:16:19"},{"attributes":{"parameters":[null]},"children":[],"id":5691,"name":"ParameterList","src":"37538:0:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5689,"name":"Identifier","src":"37517:11:19"}],"id":5690,"name":"ModifierInvocation","src":"37517:11:19"},{"children":[{"attributes":{"functionReturnParameters":5691},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setCustomGasPrice","referencedDeclaration":1594,"type":"function (uint256) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":5692,"name":"Identifier","src":"37555:8:19"}],"id":5693,"name":"MemberAccess","src":"37555:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5687,"type":"uint256","value":"_gasPrice"},"id":5694,"name":"Identifier","src":"37582:9:19"}],"id":5695,"name":"FunctionCall","src":"37555:37:19"}],"id":5696,"name":"Return","src":"37548:44:19"}],"id":5697,"name":"Block","src":"37538:61:19"}],"id":5698,"name":"FunctionDefinition","src":"37465:134:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_randomDS_getSessionPubKeyHash","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5699,"name":"ParameterList","src":"37652:2:19"},{"children":[{"attributes":{"constant":false,"name":"_sessionKeyHash","scope":5710,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5702,"name":"ElementaryTypeName","src":"37685:7:19"}],"id":5703,"name":"VariableDeclaration","src":"37685:23:19"}],"id":5704,"name":"ParameterList","src":"37684:25:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5700,"name":"Identifier","src":"37655:11:19"}],"id":5701,"name":"ModifierInvocation","src":"37655:11:19"},{"children":[{"attributes":{"functionReturnParameters":5704},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"randomDS_getSessionPubKeyHash","referencedDeclaration":1606,"type":"function () view external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":5705,"name":"Identifier","src":"37727:8:19"}],"id":5706,"name":"MemberAccess","src":"37727:38:19"}],"id":5707,"name":"FunctionCall","src":"37727:40:19"}],"id":5708,"name":"Return","src":"37720:47:19"}],"id":5709,"name":"Block","src":"37710:64:19"}],"id":5710,"name":"FunctionDefinition","src":"37605:169:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"parseAddr","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5880,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5711,"name":"ElementaryTypeName","src":"37799:6:19"}],"id":5712,"name":"VariableDeclaration","src":"37799:16:19"}],"id":5713,"name":"ParameterList","src":"37798:18:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedAddress","scope":5880,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5714,"name":"ElementaryTypeName","src":"37840:7:19"}],"id":5715,"name":"VariableDeclaration","src":"37840:22:19"}],"id":5716,"name":"ParameterList","src":"37839:24:19"},{"children":[{"attributes":{"assignments":[5718]},"children":[{"attributes":{"constant":false,"name":"tmp","scope":5879,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5717,"name":"ElementaryTypeName","src":"37874:5:19"}],"id":5718,"name":"VariableDeclaration","src":"37874:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5719,"name":"ElementaryTypeNameExpression","src":"37893:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5712,"type":"string memory","value":"_a"},"id":5720,"name":"Identifier","src":"37899:2:19"}],"id":5721,"name":"FunctionCall","src":"37893:9:19"}],"id":5722,"name":"VariableDeclarationStatement","src":"37874:28:19"},{"attributes":{"assignments":[5724]},"children":[{"attributes":{"constant":false,"name":"iaddr","scope":5879,"stateVariable":false,"storageLocation":"default","type":"uint160","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint160","type":"uint160"},"id":5723,"name":"ElementaryTypeName","src":"37912:7:19"}],"id":5724,"name":"VariableDeclaration","src":"37912:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5725,"name":"Literal","src":"37928:1:19"}],"id":5726,"name":"VariableDeclarationStatement","src":"37912:17:19"},{"attributes":{"assignments":[5728],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b1","scope":5879,"stateVariable":false,"storageLocation":"default","type":"uint160","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint160","type":"uint160"},"id":5727,"name":"ElementaryTypeName","src":"37939:7:19"}],"id":5728,"name":"VariableDeclaration","src":"37939:10:19"}],"id":5729,"name":"VariableDeclarationStatement","src":"37939:10:19"},{"attributes":{"assignments":[5731],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b2","scope":5879,"stateVariable":false,"storageLocation":"default","type":"uint160","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint160","type":"uint160"},"id":5730,"name":"ElementaryTypeName","src":"37959:7:19"}],"id":5731,"name":"VariableDeclaration","src":"37959:10:19"}],"id":5732,"name":"VariableDeclarationStatement","src":"37959:10:19"},{"children":[{"attributes":{"assignments":[5734]},"children":[{"attributes":{"constant":false,"name":"i","scope":5874,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5733,"name":"ElementaryTypeName","src":"37984:4:19"}],"id":5734,"name":"VariableDeclaration","src":"37984:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5735,"name":"Literal","src":"37993:1:19"}],"id":5736,"name":"VariableDeclarationStatement","src":"37984:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"uint256","value":"i"},"id":5737,"name":"Identifier","src":"37996:1:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_42_by_1","typeString":"int_const 42"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 42"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5738,"name":"Literal","src":"38000:1:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5739,"name":"Literal","src":"38004:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5740,"name":"Literal","src":"38008:2:19"}],"id":5741,"name":"BinaryOperation","src":"38004:6:19"}],"id":5742,"name":"BinaryOperation","src":"38000:10:19"}],"id":5743,"name":"BinaryOperation","src":"37996:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"uint256","value":"i"},"id":5744,"name":"Identifier","src":"38012:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5745,"name":"Literal","src":"38017:1:19"}],"id":5746,"name":"Assignment","src":"38012:6:19"}],"id":5747,"name":"ExpressionStatement","src":"38012:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5724,"type":"uint160","value":"iaddr"},"id":5748,"name":"Identifier","src":"38034:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":5749,"name":"Literal","src":"38043:3:19"}],"id":5750,"name":"Assignment","src":"38034:12:19"}],"id":5751,"name":"ExpressionStatement","src":"38034:12:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5752,"name":"Identifier","src":"38060:2:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":5753,"name":"ElementaryTypeNameExpression","src":"38065:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5754,"name":"ElementaryTypeNameExpression","src":"38073:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5718,"type":"bytes memory","value":"tmp"},"id":5755,"name":"Identifier","src":"38079:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"uint256","value":"i"},"id":5756,"name":"Identifier","src":"38083:1:19"}],"id":5757,"name":"IndexAccess","src":"38079:6:19"}],"id":5758,"name":"FunctionCall","src":"38073:13:19"}],"id":5759,"name":"FunctionCall","src":"38065:22:19"}],"id":5760,"name":"Assignment","src":"38060:27:19"}],"id":5761,"name":"ExpressionStatement","src":"38060:27:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5762,"name":"Identifier","src":"38101:2:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":5763,"name":"ElementaryTypeNameExpression","src":"38106:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5764,"name":"ElementaryTypeNameExpression","src":"38114:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5718,"type":"bytes memory","value":"tmp"},"id":5765,"name":"Identifier","src":"38120:3:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"uint256","value":"i"},"id":5766,"name":"Identifier","src":"38124:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5767,"name":"Literal","src":"38128:1:19"}],"id":5768,"name":"BinaryOperation","src":"38124:5:19"}],"id":5769,"name":"IndexAccess","src":"38120:10:19"}],"id":5770,"name":"FunctionCall","src":"38114:17:19"}],"id":5771,"name":"FunctionCall","src":"38106:26:19"}],"id":5772,"name":"Assignment","src":"38101:31:19"}],"id":5773,"name":"ExpressionStatement","src":"38101:31:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5774,"name":"Identifier","src":"38151:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 97","value":"97"},"id":5775,"name":"Literal","src":"38157:2:19"}],"id":5776,"name":"BinaryOperation","src":"38151:8:19"}],"id":5777,"name":"TupleExpression","src":"38150:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5778,"name":"Identifier","src":"38165:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"313032","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 102","value":"102"},"id":5779,"name":"Literal","src":"38171:3:19"}],"id":5780,"name":"BinaryOperation","src":"38165:9:19"}],"id":5781,"name":"TupleExpression","src":"38164:11:19"}],"id":5782,"name":"BinaryOperation","src":"38150:25:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5783,"name":"Identifier","src":"38195:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 87","value":"87"},"id":5784,"name":"Literal","src":"38201:2:19"}],"id":5785,"name":"Assignment","src":"38195:8:19"}],"id":5786,"name":"ExpressionStatement","src":"38195:8:19"}],"id":5787,"name":"Block","src":"38177:41:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5788,"name":"Identifier","src":"38229:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":5789,"name":"Literal","src":"38235:2:19"}],"id":5790,"name":"BinaryOperation","src":"38229:8:19"}],"id":5791,"name":"TupleExpression","src":"38228:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5792,"name":"Identifier","src":"38243:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3730","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 70","value":"70"},"id":5793,"name":"Literal","src":"38249:2:19"}],"id":5794,"name":"BinaryOperation","src":"38243:8:19"}],"id":5795,"name":"TupleExpression","src":"38242:10:19"}],"id":5796,"name":"BinaryOperation","src":"38228:24:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5797,"name":"Identifier","src":"38272:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3535","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 55","value":"55"},"id":5798,"name":"Literal","src":"38278:2:19"}],"id":5799,"name":"Assignment","src":"38272:8:19"}],"id":5800,"name":"ExpressionStatement","src":"38272:8:19"}],"id":5801,"name":"Block","src":"38254:41:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5802,"name":"Identifier","src":"38306:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":5803,"name":"Literal","src":"38312:2:19"}],"id":5804,"name":"BinaryOperation","src":"38306:8:19"}],"id":5805,"name":"TupleExpression","src":"38305:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5806,"name":"Identifier","src":"38320:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":5807,"name":"Literal","src":"38326:2:19"}],"id":5808,"name":"BinaryOperation","src":"38320:8:19"}],"id":5809,"name":"TupleExpression","src":"38319:10:19"}],"id":5810,"name":"BinaryOperation","src":"38305:24:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5811,"name":"Identifier","src":"38349:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":5812,"name":"Literal","src":"38355:2:19"}],"id":5813,"name":"Assignment","src":"38349:8:19"}],"id":5814,"name":"ExpressionStatement","src":"38349:8:19"}],"id":5815,"name":"Block","src":"38331:41:19"}],"id":5816,"name":"IfStatement","src":"38301:71:19"}],"id":5817,"name":"IfStatement","src":"38224:148:19"}],"id":5818,"name":"IfStatement","src":"38146:226:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5819,"name":"Identifier","src":"38390:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 97","value":"97"},"id":5820,"name":"Literal","src":"38396:2:19"}],"id":5821,"name":"BinaryOperation","src":"38390:8:19"}],"id":5822,"name":"TupleExpression","src":"38389:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5823,"name":"Identifier","src":"38404:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"313032","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 102","value":"102"},"id":5824,"name":"Literal","src":"38410:3:19"}],"id":5825,"name":"BinaryOperation","src":"38404:9:19"}],"id":5826,"name":"TupleExpression","src":"38403:11:19"}],"id":5827,"name":"BinaryOperation","src":"38389:25:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5828,"name":"Identifier","src":"38434:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 87","value":"87"},"id":5829,"name":"Literal","src":"38440:2:19"}],"id":5830,"name":"Assignment","src":"38434:8:19"}],"id":5831,"name":"ExpressionStatement","src":"38434:8:19"}],"id":5832,"name":"Block","src":"38416:41:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5833,"name":"Identifier","src":"38468:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":5834,"name":"Literal","src":"38474:2:19"}],"id":5835,"name":"BinaryOperation","src":"38468:8:19"}],"id":5836,"name":"TupleExpression","src":"38467:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5837,"name":"Identifier","src":"38482:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3730","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 70","value":"70"},"id":5838,"name":"Literal","src":"38488:2:19"}],"id":5839,"name":"BinaryOperation","src":"38482:8:19"}],"id":5840,"name":"TupleExpression","src":"38481:10:19"}],"id":5841,"name":"BinaryOperation","src":"38467:24:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5842,"name":"Identifier","src":"38511:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3535","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 55","value":"55"},"id":5843,"name":"Literal","src":"38517:2:19"}],"id":5844,"name":"Assignment","src":"38511:8:19"}],"id":5845,"name":"ExpressionStatement","src":"38511:8:19"}],"id":5846,"name":"Block","src":"38493:41:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5847,"name":"Identifier","src":"38545:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":5848,"name":"Literal","src":"38551:2:19"}],"id":5849,"name":"BinaryOperation","src":"38545:8:19"}],"id":5850,"name":"TupleExpression","src":"38544:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5851,"name":"Identifier","src":"38559:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":5852,"name":"Literal","src":"38565:2:19"}],"id":5853,"name":"BinaryOperation","src":"38559:8:19"}],"id":5854,"name":"TupleExpression","src":"38558:10:19"}],"id":5855,"name":"BinaryOperation","src":"38544:24:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5856,"name":"Identifier","src":"38588:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":5857,"name":"Literal","src":"38594:2:19"}],"id":5858,"name":"Assignment","src":"38588:8:19"}],"id":5859,"name":"ExpressionStatement","src":"38588:8:19"}],"id":5860,"name":"Block","src":"38570:41:19"}],"id":5861,"name":"IfStatement","src":"38540:71:19"}],"id":5862,"name":"IfStatement","src":"38463:148:19"}],"id":5863,"name":"IfStatement","src":"38385:226:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5724,"type":"uint160","value":"iaddr"},"id":5864,"name":"Identifier","src":"38624:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5865,"name":"Identifier","src":"38634:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":5866,"name":"Literal","src":"38639:2:19"}],"id":5867,"name":"BinaryOperation","src":"38634:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5868,"name":"Identifier","src":"38644:2:19"}],"id":5869,"name":"BinaryOperation","src":"38634:12:19"}],"id":5870,"name":"TupleExpression","src":"38633:14:19"}],"id":5871,"name":"Assignment","src":"38624:23:19"}],"id":5872,"name":"ExpressionStatement","src":"38624:23:19"}],"id":5873,"name":"Block","src":"38020:638:19"}],"id":5874,"name":"ForStatement","src":"37979:679:19"},{"attributes":{"functionReturnParameters":5716},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5875,"name":"ElementaryTypeNameExpression","src":"38674:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5724,"type":"uint160","value":"iaddr"},"id":5876,"name":"Identifier","src":"38682:5:19"}],"id":5877,"name":"FunctionCall","src":"38674:14:19"}],"id":5878,"name":"Return","src":"38667:21:19"}],"id":5879,"name":"Block","src":"37864:831:19"}],"id":5880,"name":"FunctionDefinition","src":"37780:915:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strCompare","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5975,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5881,"name":"ElementaryTypeName","src":"38721:6:19"}],"id":5882,"name":"VariableDeclaration","src":"38721:16:19"},{"attributes":{"constant":false,"name":"_b","scope":5975,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5883,"name":"ElementaryTypeName","src":"38739:6:19"}],"id":5884,"name":"VariableDeclaration","src":"38739:16:19"}],"id":5885,"name":"ParameterList","src":"38720:36:19"},{"children":[{"attributes":{"constant":false,"name":"_returnCode","scope":5975,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":5886,"name":"ElementaryTypeName","src":"38780:3:19"}],"id":5887,"name":"VariableDeclaration","src":"38780:15:19"}],"id":5888,"name":"ParameterList","src":"38779:17:19"},{"children":[{"attributes":{"assignments":[5890]},"children":[{"attributes":{"constant":false,"name":"a","scope":5974,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5889,"name":"ElementaryTypeName","src":"38807:5:19"}],"id":5890,"name":"VariableDeclaration","src":"38807:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5891,"name":"ElementaryTypeNameExpression","src":"38824:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5882,"type":"string memory","value":"_a"},"id":5892,"name":"Identifier","src":"38830:2:19"}],"id":5893,"name":"FunctionCall","src":"38824:9:19"}],"id":5894,"name":"VariableDeclarationStatement","src":"38807:26:19"},{"attributes":{"assignments":[5896]},"children":[{"attributes":{"constant":false,"name":"b","scope":5974,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5895,"name":"ElementaryTypeName","src":"38843:5:19"}],"id":5896,"name":"VariableDeclaration","src":"38843:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5897,"name":"ElementaryTypeNameExpression","src":"38860:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5884,"type":"string memory","value":"_b"},"id":5898,"name":"Identifier","src":"38866:2:19"}],"id":5899,"name":"FunctionCall","src":"38860:9:19"}],"id":5900,"name":"VariableDeclarationStatement","src":"38843:26:19"},{"attributes":{"assignments":[5902]},"children":[{"attributes":{"constant":false,"name":"minLength","scope":5974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5901,"name":"ElementaryTypeName","src":"38879:4:19"}],"id":5902,"name":"VariableDeclaration","src":"38879:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5903,"name":"Identifier","src":"38896:1:19"}],"id":5904,"name":"MemberAccess","src":"38896:8:19"}],"id":5905,"name":"VariableDeclarationStatement","src":"38879:25:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5906,"name":"Identifier","src":"38918:1:19"}],"id":5907,"name":"MemberAccess","src":"38918:8:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5902,"type":"uint256","value":"minLength"},"id":5908,"name":"Identifier","src":"38929:9:19"}],"id":5909,"name":"BinaryOperation","src":"38918:20:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5902,"type":"uint256","value":"minLength"},"id":5910,"name":"Identifier","src":"38954:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5911,"name":"Identifier","src":"38966:1:19"}],"id":5912,"name":"MemberAccess","src":"38966:8:19"}],"id":5913,"name":"Assignment","src":"38954:20:19"}],"id":5914,"name":"ExpressionStatement","src":"38954:20:19"}],"id":5915,"name":"Block","src":"38940:45:19"}],"id":5916,"name":"IfStatement","src":"38914:71:19"},{"children":[{"attributes":{"assignments":[5918]},"children":[{"attributes":{"constant":false,"name":"i","scope":5951,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5917,"name":"ElementaryTypeName","src":"38999:4:19"}],"id":5918,"name":"VariableDeclaration","src":"38999:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5919,"name":"Literal","src":"39008:1:19"}],"id":5920,"name":"VariableDeclarationStatement","src":"38999:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5921,"name":"Identifier","src":"39011:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5902,"type":"uint256","value":"minLength"},"id":5922,"name":"Identifier","src":"39015:9:19"}],"id":5923,"name":"BinaryOperation","src":"39011:13:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5924,"name":"Identifier","src":"39026:1:19"}],"id":5925,"name":"UnaryOperation","src":"39026:4:19"}],"id":5926,"name":"ExpressionStatement","src":"39026:4:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5927,"name":"Identifier","src":"39050:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5928,"name":"Identifier","src":"39052:1:19"}],"id":5929,"name":"IndexAccess","src":"39050:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5930,"name":"Identifier","src":"39057:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5931,"name":"Identifier","src":"39059:1:19"}],"id":5932,"name":"IndexAccess","src":"39057:4:19"}],"id":5933,"name":"BinaryOperation","src":"39050:11:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5934,"name":"Literal","src":"39089:1:19"}],"id":5935,"name":"UnaryOperation","src":"39088:2:19"}],"id":5936,"name":"Return","src":"39081:9:19"}],"id":5937,"name":"Block","src":"39063:42:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5938,"name":"Identifier","src":"39115:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5939,"name":"Identifier","src":"39117:1:19"}],"id":5940,"name":"IndexAccess","src":"39115:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5941,"name":"Identifier","src":"39122:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5942,"name":"Identifier","src":"39124:1:19"}],"id":5943,"name":"IndexAccess","src":"39122:4:19"}],"id":5944,"name":"BinaryOperation","src":"39115:11:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5945,"name":"Literal","src":"39153:1:19"}],"id":5946,"name":"Return","src":"39146:8:19"}],"id":5947,"name":"Block","src":"39128:41:19"}],"id":5948,"name":"IfStatement","src":"39111:58:19"}],"id":5949,"name":"IfStatement","src":"39046:123:19"}],"id":5950,"name":"Block","src":"39032:147:19"}],"id":5951,"name":"ForStatement","src":"38994:185:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5952,"name":"Identifier","src":"39192:1:19"}],"id":5953,"name":"MemberAccess","src":"39192:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5954,"name":"Identifier","src":"39203:1:19"}],"id":5955,"name":"MemberAccess","src":"39203:8:19"}],"id":5956,"name":"BinaryOperation","src":"39192:19:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5957,"name":"Literal","src":"39235:1:19"}],"id":5958,"name":"UnaryOperation","src":"39234:2:19"}],"id":5959,"name":"Return","src":"39227:9:19"}],"id":5960,"name":"Block","src":"39213:34:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5961,"name":"Identifier","src":"39257:1:19"}],"id":5962,"name":"MemberAccess","src":"39257:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5963,"name":"Identifier","src":"39268:1:19"}],"id":5964,"name":"MemberAccess","src":"39268:8:19"}],"id":5965,"name":"BinaryOperation","src":"39257:19:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5966,"name":"Literal","src":"39299:1:19"}],"id":5967,"name":"Return","src":"39292:8:19"}],"id":5968,"name":"Block","src":"39278:33:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5969,"name":"Literal","src":"39338:1:19"}],"id":5970,"name":"Return","src":"39331:8:19"}],"id":5971,"name":"Block","src":"39317:33:19"}],"id":5972,"name":"IfStatement","src":"39253:97:19"}],"id":5973,"name":"IfStatement","src":"39188:162:19"}],"id":5974,"name":"Block","src":"38797:559:19"}],"id":5975,"name":"FunctionDefinition","src":"38701:655:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"indexOf","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_haystack","scope":6103,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5976,"name":"ElementaryTypeName","src":"39379:6:19"}],"id":5977,"name":"VariableDeclaration","src":"39379:23:19"},{"attributes":{"constant":false,"name":"_needle","scope":6103,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5978,"name":"ElementaryTypeName","src":"39404:6:19"}],"id":5979,"name":"VariableDeclaration","src":"39404:21:19"}],"id":5980,"name":"ParameterList","src":"39378:48:19"},{"children":[{"attributes":{"constant":false,"name":"_returnCode","scope":6103,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":5981,"name":"ElementaryTypeName","src":"39450:3:19"}],"id":5982,"name":"VariableDeclaration","src":"39450:15:19"}],"id":5983,"name":"ParameterList","src":"39449:17:19"},{"children":[{"attributes":{"assignments":[5985]},"children":[{"attributes":{"constant":false,"name":"h","scope":6102,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5984,"name":"ElementaryTypeName","src":"39477:5:19"}],"id":5985,"name":"VariableDeclaration","src":"39477:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5986,"name":"ElementaryTypeNameExpression","src":"39494:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5977,"type":"string memory","value":"_haystack"},"id":5987,"name":"Identifier","src":"39500:9:19"}],"id":5988,"name":"FunctionCall","src":"39494:16:19"}],"id":5989,"name":"VariableDeclarationStatement","src":"39477:33:19"},{"attributes":{"assignments":[5991]},"children":[{"attributes":{"constant":false,"name":"n","scope":6102,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5990,"name":"ElementaryTypeName","src":"39520:5:19"}],"id":5991,"name":"VariableDeclaration","src":"39520:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5992,"name":"ElementaryTypeNameExpression","src":"39537:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5979,"type":"string memory","value":"_needle"},"id":5993,"name":"Identifier","src":"39543:7:19"}],"id":5994,"name":"FunctionCall","src":"39537:14:19"}],"id":5995,"name":"VariableDeclarationStatement","src":"39520:31:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":5996,"name":"Identifier","src":"39565:1:19"}],"id":5997,"name":"MemberAccess","src":"39565:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5998,"name":"Literal","src":"39576:1:19"}],"id":5999,"name":"BinaryOperation","src":"39565:12:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6000,"name":"Identifier","src":"39581:1:19"}],"id":6001,"name":"MemberAccess","src":"39581:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6002,"name":"Literal","src":"39592:1:19"}],"id":6003,"name":"BinaryOperation","src":"39581:12:19"}],"id":6004,"name":"BinaryOperation","src":"39565:28:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6005,"name":"Identifier","src":"39598:1:19"}],"id":6006,"name":"MemberAccess","src":"39598:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6007,"name":"Identifier","src":"39609:1:19"}],"id":6008,"name":"MemberAccess","src":"39609:8:19"}],"id":6009,"name":"BinaryOperation","src":"39598:19:19"}],"id":6010,"name":"TupleExpression","src":"39597:21:19"}],"id":6011,"name":"BinaryOperation","src":"39565:53:19"},{"children":[{"attributes":{"functionReturnParameters":5983},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6012,"name":"Literal","src":"39642:1:19"}],"id":6013,"name":"UnaryOperation","src":"39641:2:19"}],"id":6014,"name":"Return","src":"39634:9:19"}],"id":6015,"name":"Block","src":"39620:34:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6016,"name":"Identifier","src":"39664:1:19"}],"id":6017,"name":"MemberAccess","src":"39664:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 3402...(31 digits omitted)...1455"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","type":"int_const 3402...(31 digits omitted)...1455"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 3402...(31 digits omitted)...1456"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6018,"name":"Literal","src":"39676:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"313238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"128"},"id":6019,"name":"Literal","src":"39681:3:19"}],"id":6020,"name":"BinaryOperation","src":"39676:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6021,"name":"Literal","src":"39687:1:19"}],"id":6022,"name":"BinaryOperation","src":"39676:12:19"}],"id":6023,"name":"TupleExpression","src":"39675:14:19"}],"id":6024,"name":"BinaryOperation","src":"39664:25:19"},{"children":[{"attributes":{"functionReturnParameters":5983},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6025,"name":"Literal","src":"39713:1:19"}],"id":6026,"name":"UnaryOperation","src":"39712:2:19"}],"id":6027,"name":"Return","src":"39705:9:19"}],"id":6028,"name":"Block","src":"39691:34:19"},{"children":[{"attributes":{"assignments":[6030]},"children":[{"attributes":{"constant":false,"name":"subindex","scope":6099,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6029,"name":"ElementaryTypeName","src":"39745:4:19"}],"id":6030,"name":"VariableDeclaration","src":"39745:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6031,"name":"Literal","src":"39761:1:19"}],"id":6032,"name":"VariableDeclarationStatement","src":"39745:17:19"},{"children":[{"attributes":{"assignments":[6034]},"children":[{"attributes":{"constant":false,"name":"i","scope":6095,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6033,"name":"ElementaryTypeName","src":"39781:4:19"}],"id":6034,"name":"VariableDeclaration","src":"39781:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6035,"name":"Literal","src":"39790:1:19"}],"id":6036,"name":"VariableDeclarationStatement","src":"39781:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6037,"name":"Identifier","src":"39793:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6038,"name":"Identifier","src":"39797:1:19"}],"id":6039,"name":"MemberAccess","src":"39797:8:19"}],"id":6040,"name":"BinaryOperation","src":"39793:12:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6041,"name":"Identifier","src":"39807:1:19"}],"id":6042,"name":"UnaryOperation","src":"39807:3:19"}],"id":6043,"name":"ExpressionStatement","src":"39807:3:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6044,"name":"Identifier","src":"39834:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6045,"name":"Identifier","src":"39836:1:19"}],"id":6046,"name":"IndexAccess","src":"39834:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6047,"name":"Identifier","src":"39842:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6048,"name":"Literal","src":"39844:1:19"}],"id":6049,"name":"IndexAccess","src":"39842:4:19"}],"id":6050,"name":"BinaryOperation","src":"39834:12:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6051,"name":"Identifier","src":"39870:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6052,"name":"Literal","src":"39881:1:19"}],"id":6053,"name":"Assignment","src":"39870:12:19"}],"id":6054,"name":"ExpressionStatement","src":"39870:12:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6055,"name":"Identifier","src":"39910:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6056,"name":"Identifier","src":"39921:1:19"}],"id":6057,"name":"MemberAccess","src":"39921:8:19"}],"id":6058,"name":"BinaryOperation","src":"39910:19:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6059,"name":"Identifier","src":"39934:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6060,"name":"Identifier","src":"39938:8:19"}],"id":6061,"name":"BinaryOperation","src":"39934:12:19"}],"id":6062,"name":"TupleExpression","src":"39933:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6063,"name":"Identifier","src":"39950:1:19"}],"id":6064,"name":"MemberAccess","src":"39950:8:19"}],"id":6065,"name":"BinaryOperation","src":"39933:25:19"}],"id":6066,"name":"BinaryOperation","src":"39910:48:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6067,"name":"Identifier","src":"39962:1:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6068,"name":"Identifier","src":"39964:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6069,"name":"Identifier","src":"39968:8:19"}],"id":6070,"name":"BinaryOperation","src":"39964:12:19"}],"id":6071,"name":"IndexAccess","src":"39962:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6072,"name":"Identifier","src":"39981:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6073,"name":"Identifier","src":"39983:8:19"}],"id":6074,"name":"IndexAccess","src":"39981:11:19"}],"id":6075,"name":"BinaryOperation","src":"39962:30:19"}],"id":6076,"name":"BinaryOperation","src":"39910:82:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6077,"name":"Identifier","src":"40020:8:19"}],"id":6078,"name":"UnaryOperation","src":"40020:10:19"}],"id":6079,"name":"ExpressionStatement","src":"40020:10:19"}],"id":6080,"name":"Block","src":"39994:59:19"}],"id":6081,"name":"WhileStatement","src":"39904:149:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6082,"name":"Identifier","src":"40078:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6083,"name":"Identifier","src":"40090:1:19"}],"id":6084,"name":"MemberAccess","src":"40090:8:19"}],"id":6085,"name":"BinaryOperation","src":"40078:20:19"},{"children":[{"attributes":{"functionReturnParameters":5983},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6086,"name":"ElementaryTypeNameExpression","src":"40133:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6087,"name":"Identifier","src":"40137:1:19"}],"id":6088,"name":"FunctionCall","src":"40133:6:19"}],"id":6089,"name":"Return","src":"40126:13:19"}],"id":6090,"name":"Block","src":"40100:62:19"}],"id":6091,"name":"IfStatement","src":"40074:88:19"}],"id":6092,"name":"Block","src":"39848:332:19"}],"id":6093,"name":"IfStatement","src":"39830:350:19"}],"id":6094,"name":"Block","src":"39812:382:19"}],"id":6095,"name":"ForStatement","src":"39776:418:19"},{"attributes":{"functionReturnParameters":5983},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6096,"name":"Literal","src":"40215:1:19"}],"id":6097,"name":"UnaryOperation","src":"40214:2:19"}],"id":6098,"name":"Return","src":"40207:9:19"}],"id":6099,"name":"Block","src":"39731:496:19"}],"id":6100,"name":"IfStatement","src":"39660:567:19"}],"id":6101,"name":"IfStatement","src":"39561:666:19"}],"id":6102,"name":"Block","src":"39467:766:19"}],"id":6103,"name":"FunctionDefinition","src":"39362:871:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strConcat","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6121,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6104,"name":"ElementaryTypeName","src":"40258:6:19"}],"id":6105,"name":"VariableDeclaration","src":"40258:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6121,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6106,"name":"ElementaryTypeName","src":"40276:6:19"}],"id":6107,"name":"VariableDeclaration","src":"40276:16:19"}],"id":6108,"name":"ParameterList","src":"40257:36:19"},{"children":[{"attributes":{"constant":false,"name":"_concatenatedString","scope":6121,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6109,"name":"ElementaryTypeName","src":"40317:6:19"}],"id":6110,"name":"VariableDeclaration","src":"40317:33:19"}],"id":6111,"name":"ParameterList","src":"40316:35:19"},{"children":[{"attributes":{"functionReturnParameters":6111},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"overloadedDeclarations":[6121,6141,6163,6357],"referencedDeclaration":6357,"type":"function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)","value":"strConcat"},"id":6112,"name":"Identifier","src":"40369:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6105,"type":"string memory","value":"_a"},"id":6113,"name":"Identifier","src":"40379:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6107,"type":"string memory","value":"_b"},"id":6114,"name":"Identifier","src":"40383:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6115,"name":"Literal","src":"40387:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6116,"name":"Literal","src":"40391:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6117,"name":"Literal","src":"40395:2:19"}],"id":6118,"name":"FunctionCall","src":"40369:29:19"}],"id":6119,"name":"Return","src":"40362:36:19"}],"id":6120,"name":"Block","src":"40352:53:19"}],"id":6121,"name":"FunctionDefinition","src":"40239:166:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strConcat","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6141,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6122,"name":"ElementaryTypeName","src":"40430:6:19"}],"id":6123,"name":"VariableDeclaration","src":"40430:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6141,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6124,"name":"ElementaryTypeName","src":"40448:6:19"}],"id":6125,"name":"VariableDeclaration","src":"40448:16:19"},{"attributes":{"constant":false,"name":"_c","scope":6141,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6126,"name":"ElementaryTypeName","src":"40466:6:19"}],"id":6127,"name":"VariableDeclaration","src":"40466:16:19"}],"id":6128,"name":"ParameterList","src":"40429:54:19"},{"children":[{"attributes":{"constant":false,"name":"_concatenatedString","scope":6141,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6129,"name":"ElementaryTypeName","src":"40507:6:19"}],"id":6130,"name":"VariableDeclaration","src":"40507:33:19"}],"id":6131,"name":"ParameterList","src":"40506:35:19"},{"children":[{"attributes":{"functionReturnParameters":6131},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"overloadedDeclarations":[6121,6141,6163,6357],"referencedDeclaration":6357,"type":"function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)","value":"strConcat"},"id":6132,"name":"Identifier","src":"40559:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6123,"type":"string memory","value":"_a"},"id":6133,"name":"Identifier","src":"40569:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6125,"type":"string memory","value":"_b"},"id":6134,"name":"Identifier","src":"40573:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6127,"type":"string memory","value":"_c"},"id":6135,"name":"Identifier","src":"40577:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6136,"name":"Literal","src":"40581:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6137,"name":"Literal","src":"40585:2:19"}],"id":6138,"name":"FunctionCall","src":"40559:29:19"}],"id":6139,"name":"Return","src":"40552:36:19"}],"id":6140,"name":"Block","src":"40542:53:19"}],"id":6141,"name":"FunctionDefinition","src":"40411:184:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strConcat","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6142,"name":"ElementaryTypeName","src":"40620:6:19"}],"id":6143,"name":"VariableDeclaration","src":"40620:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6144,"name":"ElementaryTypeName","src":"40638:6:19"}],"id":6145,"name":"VariableDeclaration","src":"40638:16:19"},{"attributes":{"constant":false,"name":"_c","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6146,"name":"ElementaryTypeName","src":"40656:6:19"}],"id":6147,"name":"VariableDeclaration","src":"40656:16:19"},{"attributes":{"constant":false,"name":"_d","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6148,"name":"ElementaryTypeName","src":"40674:6:19"}],"id":6149,"name":"VariableDeclaration","src":"40674:16:19"}],"id":6150,"name":"ParameterList","src":"40619:72:19"},{"children":[{"attributes":{"constant":false,"name":"_concatenatedString","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6151,"name":"ElementaryTypeName","src":"40715:6:19"}],"id":6152,"name":"VariableDeclaration","src":"40715:33:19"}],"id":6153,"name":"ParameterList","src":"40714:35:19"},{"children":[{"attributes":{"functionReturnParameters":6153},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"overloadedDeclarations":[6121,6141,6163,6357],"referencedDeclaration":6357,"type":"function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)","value":"strConcat"},"id":6154,"name":"Identifier","src":"40767:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6143,"type":"string memory","value":"_a"},"id":6155,"name":"Identifier","src":"40777:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6145,"type":"string memory","value":"_b"},"id":6156,"name":"Identifier","src":"40781:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6147,"type":"string memory","value":"_c"},"id":6157,"name":"Identifier","src":"40785:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6149,"type":"string memory","value":"_d"},"id":6158,"name":"Identifier","src":"40789:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6159,"name":"Literal","src":"40793:2:19"}],"id":6160,"name":"FunctionCall","src":"40767:29:19"}],"id":6161,"name":"Return","src":"40760:36:19"}],"id":6162,"name":"Block","src":"40750:53:19"}],"id":6163,"name":"FunctionDefinition","src":"40601:202:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strConcat","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6164,"name":"ElementaryTypeName","src":"40828:6:19"}],"id":6165,"name":"VariableDeclaration","src":"40828:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6166,"name":"ElementaryTypeName","src":"40846:6:19"}],"id":6167,"name":"VariableDeclaration","src":"40846:16:19"},{"attributes":{"constant":false,"name":"_c","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6168,"name":"ElementaryTypeName","src":"40864:6:19"}],"id":6169,"name":"VariableDeclaration","src":"40864:16:19"},{"attributes":{"constant":false,"name":"_d","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6170,"name":"ElementaryTypeName","src":"40882:6:19"}],"id":6171,"name":"VariableDeclaration","src":"40882:16:19"},{"attributes":{"constant":false,"name":"_e","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6172,"name":"ElementaryTypeName","src":"40900:6:19"}],"id":6173,"name":"VariableDeclaration","src":"40900:16:19"}],"id":6174,"name":"ParameterList","src":"40827:90:19"},{"children":[{"attributes":{"constant":false,"name":"_concatenatedString","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6175,"name":"ElementaryTypeName","src":"40941:6:19"}],"id":6176,"name":"VariableDeclaration","src":"40941:33:19"}],"id":6177,"name":"ParameterList","src":"40940:35:19"},{"children":[{"attributes":{"assignments":[6179]},"children":[{"attributes":{"constant":false,"name":"_ba","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6178,"name":"ElementaryTypeName","src":"40986:5:19"}],"id":6179,"name":"VariableDeclaration","src":"40986:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6180,"name":"ElementaryTypeNameExpression","src":"41005:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6165,"type":"string memory","value":"_a"},"id":6181,"name":"Identifier","src":"41011:2:19"}],"id":6182,"name":"FunctionCall","src":"41005:9:19"}],"id":6183,"name":"VariableDeclarationStatement","src":"40986:28:19"},{"attributes":{"assignments":[6185]},"children":[{"attributes":{"constant":false,"name":"_bb","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6184,"name":"ElementaryTypeName","src":"41024:5:19"}],"id":6185,"name":"VariableDeclaration","src":"41024:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6186,"name":"ElementaryTypeNameExpression","src":"41043:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"string memory","value":"_b"},"id":6187,"name":"Identifier","src":"41049:2:19"}],"id":6188,"name":"FunctionCall","src":"41043:9:19"}],"id":6189,"name":"VariableDeclarationStatement","src":"41024:28:19"},{"attributes":{"assignments":[6191]},"children":[{"attributes":{"constant":false,"name":"_bc","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6190,"name":"ElementaryTypeName","src":"41062:5:19"}],"id":6191,"name":"VariableDeclaration","src":"41062:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6192,"name":"ElementaryTypeNameExpression","src":"41081:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6169,"type":"string memory","value":"_c"},"id":6193,"name":"Identifier","src":"41087:2:19"}],"id":6194,"name":"FunctionCall","src":"41081:9:19"}],"id":6195,"name":"VariableDeclarationStatement","src":"41062:28:19"},{"attributes":{"assignments":[6197]},"children":[{"attributes":{"constant":false,"name":"_bd","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6196,"name":"ElementaryTypeName","src":"41100:5:19"}],"id":6197,"name":"VariableDeclaration","src":"41100:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6198,"name":"ElementaryTypeNameExpression","src":"41119:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6171,"type":"string memory","value":"_d"},"id":6199,"name":"Identifier","src":"41125:2:19"}],"id":6200,"name":"FunctionCall","src":"41119:9:19"}],"id":6201,"name":"VariableDeclarationStatement","src":"41100:28:19"},{"attributes":{"assignments":[6203]},"children":[{"attributes":{"constant":false,"name":"_be","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6202,"name":"ElementaryTypeName","src":"41138:5:19"}],"id":6203,"name":"VariableDeclaration","src":"41138:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6204,"name":"ElementaryTypeNameExpression","src":"41157:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6173,"type":"string memory","value":"_e"},"id":6205,"name":"Identifier","src":"41163:2:19"}],"id":6206,"name":"FunctionCall","src":"41157:9:19"}],"id":6207,"name":"VariableDeclarationStatement","src":"41138:28:19"},{"attributes":{"assignments":[6209]},"children":[{"attributes":{"constant":false,"name":"abcde","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6208,"name":"ElementaryTypeName","src":"41176:6:19"}],"id":6209,"name":"VariableDeclaration","src":"41176:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6210,"name":"ElementaryTypeName","src":"41202:6:19"}],"id":6211,"name":"NewExpression","src":"41198:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6179,"type":"bytes memory","value":"_ba"},"id":6212,"name":"Identifier","src":"41209:3:19"}],"id":6213,"name":"MemberAccess","src":"41209:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6185,"type":"bytes memory","value":"_bb"},"id":6214,"name":"Identifier","src":"41222:3:19"}],"id":6215,"name":"MemberAccess","src":"41222:10:19"}],"id":6216,"name":"BinaryOperation","src":"41209:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6191,"type":"bytes memory","value":"_bc"},"id":6217,"name":"Identifier","src":"41235:3:19"}],"id":6218,"name":"MemberAccess","src":"41235:10:19"}],"id":6219,"name":"BinaryOperation","src":"41209:36:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6197,"type":"bytes memory","value":"_bd"},"id":6220,"name":"Identifier","src":"41248:3:19"}],"id":6221,"name":"MemberAccess","src":"41248:10:19"}],"id":6222,"name":"BinaryOperation","src":"41209:49:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6203,"type":"bytes memory","value":"_be"},"id":6223,"name":"Identifier","src":"41261:3:19"}],"id":6224,"name":"MemberAccess","src":"41261:10:19"}],"id":6225,"name":"BinaryOperation","src":"41209:62:19"}],"id":6226,"name":"FunctionCall","src":"41198:74:19"}],"id":6227,"name":"VariableDeclarationStatement","src":"41176:96:19"},{"attributes":{"assignments":[6229]},"children":[{"attributes":{"constant":false,"name":"babcde","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6228,"name":"ElementaryTypeName","src":"41282:5:19"}],"id":6229,"name":"VariableDeclaration","src":"41282:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6230,"name":"ElementaryTypeNameExpression","src":"41304:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6209,"type":"string memory","value":"abcde"},"id":6231,"name":"Identifier","src":"41310:5:19"}],"id":6232,"name":"FunctionCall","src":"41304:12:19"}],"id":6233,"name":"VariableDeclarationStatement","src":"41282:34:19"},{"attributes":{"assignments":[6235]},"children":[{"attributes":{"constant":false,"name":"k","scope":6356,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6234,"name":"ElementaryTypeName","src":"41326:4:19"}],"id":6235,"name":"VariableDeclaration","src":"41326:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6236,"name":"Literal","src":"41335:1:19"}],"id":6237,"name":"VariableDeclarationStatement","src":"41326:10:19"},{"attributes":{"assignments":[6239]},"children":[{"attributes":{"constant":false,"name":"i","scope":6356,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6238,"name":"ElementaryTypeName","src":"41346:4:19"}],"id":6239,"name":"VariableDeclaration","src":"41346:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6240,"name":"Literal","src":"41355:1:19"}],"id":6241,"name":"VariableDeclarationStatement","src":"41346:10:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6242,"name":"Identifier","src":"41371:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6243,"name":"Literal","src":"41375:1:19"}],"id":6244,"name":"Assignment","src":"41371:5:19"}],"id":6245,"name":"ExpressionStatement","src":"41371:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6246,"name":"Identifier","src":"41378:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6179,"type":"bytes memory","value":"_ba"},"id":6247,"name":"Identifier","src":"41382:3:19"}],"id":6248,"name":"MemberAccess","src":"41382:10:19"}],"id":6249,"name":"BinaryOperation","src":"41378:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6250,"name":"Identifier","src":"41394:1:19"}],"id":6251,"name":"UnaryOperation","src":"41394:3:19"}],"id":6252,"name":"ExpressionStatement","src":"41394:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6253,"name":"Identifier","src":"41413:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6254,"name":"Identifier","src":"41420:1:19"}],"id":6255,"name":"UnaryOperation","src":"41420:3:19"}],"id":6256,"name":"IndexAccess","src":"41413:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6179,"type":"bytes memory","value":"_ba"},"id":6257,"name":"Identifier","src":"41427:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6258,"name":"Identifier","src":"41431:1:19"}],"id":6259,"name":"IndexAccess","src":"41427:6:19"}],"id":6260,"name":"Assignment","src":"41413:20:19"}],"id":6261,"name":"ExpressionStatement","src":"41413:20:19"}],"id":6262,"name":"Block","src":"41399:45:19"}],"id":6263,"name":"ForStatement","src":"41366:78:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6264,"name":"Identifier","src":"41458:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6265,"name":"Literal","src":"41462:1:19"}],"id":6266,"name":"Assignment","src":"41458:5:19"}],"id":6267,"name":"ExpressionStatement","src":"41458:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6268,"name":"Identifier","src":"41465:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6185,"type":"bytes memory","value":"_bb"},"id":6269,"name":"Identifier","src":"41469:3:19"}],"id":6270,"name":"MemberAccess","src":"41469:10:19"}],"id":6271,"name":"BinaryOperation","src":"41465:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6272,"name":"Identifier","src":"41481:1:19"}],"id":6273,"name":"UnaryOperation","src":"41481:3:19"}],"id":6274,"name":"ExpressionStatement","src":"41481:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6275,"name":"Identifier","src":"41500:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6276,"name":"Identifier","src":"41507:1:19"}],"id":6277,"name":"UnaryOperation","src":"41507:3:19"}],"id":6278,"name":"IndexAccess","src":"41500:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6185,"type":"bytes memory","value":"_bb"},"id":6279,"name":"Identifier","src":"41514:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6280,"name":"Identifier","src":"41518:1:19"}],"id":6281,"name":"IndexAccess","src":"41514:6:19"}],"id":6282,"name":"Assignment","src":"41500:20:19"}],"id":6283,"name":"ExpressionStatement","src":"41500:20:19"}],"id":6284,"name":"Block","src":"41486:45:19"}],"id":6285,"name":"ForStatement","src":"41453:78:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6286,"name":"Identifier","src":"41545:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6287,"name":"Literal","src":"41549:1:19"}],"id":6288,"name":"Assignment","src":"41545:5:19"}],"id":6289,"name":"ExpressionStatement","src":"41545:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6290,"name":"Identifier","src":"41552:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6191,"type":"bytes memory","value":"_bc"},"id":6291,"name":"Identifier","src":"41556:3:19"}],"id":6292,"name":"MemberAccess","src":"41556:10:19"}],"id":6293,"name":"BinaryOperation","src":"41552:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6294,"name":"Identifier","src":"41568:1:19"}],"id":6295,"name":"UnaryOperation","src":"41568:3:19"}],"id":6296,"name":"ExpressionStatement","src":"41568:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6297,"name":"Identifier","src":"41587:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6298,"name":"Identifier","src":"41594:1:19"}],"id":6299,"name":"UnaryOperation","src":"41594:3:19"}],"id":6300,"name":"IndexAccess","src":"41587:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6191,"type":"bytes memory","value":"_bc"},"id":6301,"name":"Identifier","src":"41601:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6302,"name":"Identifier","src":"41605:1:19"}],"id":6303,"name":"IndexAccess","src":"41601:6:19"}],"id":6304,"name":"Assignment","src":"41587:20:19"}],"id":6305,"name":"ExpressionStatement","src":"41587:20:19"}],"id":6306,"name":"Block","src":"41573:45:19"}],"id":6307,"name":"ForStatement","src":"41540:78:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6308,"name":"Identifier","src":"41632:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6309,"name":"Literal","src":"41636:1:19"}],"id":6310,"name":"Assignment","src":"41632:5:19"}],"id":6311,"name":"ExpressionStatement","src":"41632:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6312,"name":"Identifier","src":"41639:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6197,"type":"bytes memory","value":"_bd"},"id":6313,"name":"Identifier","src":"41643:3:19"}],"id":6314,"name":"MemberAccess","src":"41643:10:19"}],"id":6315,"name":"BinaryOperation","src":"41639:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6316,"name":"Identifier","src":"41655:1:19"}],"id":6317,"name":"UnaryOperation","src":"41655:3:19"}],"id":6318,"name":"ExpressionStatement","src":"41655:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6319,"name":"Identifier","src":"41674:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6320,"name":"Identifier","src":"41681:1:19"}],"id":6321,"name":"UnaryOperation","src":"41681:3:19"}],"id":6322,"name":"IndexAccess","src":"41674:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6197,"type":"bytes memory","value":"_bd"},"id":6323,"name":"Identifier","src":"41688:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6324,"name":"Identifier","src":"41692:1:19"}],"id":6325,"name":"IndexAccess","src":"41688:6:19"}],"id":6326,"name":"Assignment","src":"41674:20:19"}],"id":6327,"name":"ExpressionStatement","src":"41674:20:19"}],"id":6328,"name":"Block","src":"41660:45:19"}],"id":6329,"name":"ForStatement","src":"41627:78:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6330,"name":"Identifier","src":"41719:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6331,"name":"Literal","src":"41723:1:19"}],"id":6332,"name":"Assignment","src":"41719:5:19"}],"id":6333,"name":"ExpressionStatement","src":"41719:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6334,"name":"Identifier","src":"41726:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6203,"type":"bytes memory","value":"_be"},"id":6335,"name":"Identifier","src":"41730:3:19"}],"id":6336,"name":"MemberAccess","src":"41730:10:19"}],"id":6337,"name":"BinaryOperation","src":"41726:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6338,"name":"Identifier","src":"41742:1:19"}],"id":6339,"name":"UnaryOperation","src":"41742:3:19"}],"id":6340,"name":"ExpressionStatement","src":"41742:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6341,"name":"Identifier","src":"41761:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6342,"name":"Identifier","src":"41768:1:19"}],"id":6343,"name":"UnaryOperation","src":"41768:3:19"}],"id":6344,"name":"IndexAccess","src":"41761:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6203,"type":"bytes memory","value":"_be"},"id":6345,"name":"Identifier","src":"41775:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6346,"name":"Identifier","src":"41779:1:19"}],"id":6347,"name":"IndexAccess","src":"41775:6:19"}],"id":6348,"name":"Assignment","src":"41761:20:19"}],"id":6349,"name":"ExpressionStatement","src":"41761:20:19"}],"id":6350,"name":"Block","src":"41747:45:19"}],"id":6351,"name":"ForStatement","src":"41714:78:19"},{"attributes":{"functionReturnParameters":6177},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":6352,"name":"ElementaryTypeNameExpression","src":"41808:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6353,"name":"Identifier","src":"41815:6:19"}],"id":6354,"name":"FunctionCall","src":"41808:14:19"}],"id":6355,"name":"Return","src":"41801:21:19"}],"id":6356,"name":"Block","src":"40976:853:19"}],"id":6357,"name":"FunctionDefinition","src":"40809:1020:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeParseInt","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6370,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6358,"name":"ElementaryTypeName","src":"41857:6:19"}],"id":6359,"name":"VariableDeclaration","src":"41857:16:19"}],"id":6360,"name":"ParameterList","src":"41856:18:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedInt","scope":6370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6361,"name":"ElementaryTypeName","src":"41898:4:19"}],"id":6362,"name":"VariableDeclaration","src":"41898:15:19"}],"id":6363,"name":"ParameterList","src":"41897:17:19"},{"children":[{"attributes":{"functionReturnParameters":6363},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[6370,6496],"referencedDeclaration":6496,"type":"function (string memory,uint256) pure returns (uint256)","value":"safeParseInt"},"id":6364,"name":"Identifier","src":"41932:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6359,"type":"string memory","value":"_a"},"id":6365,"name":"Identifier","src":"41945:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6366,"name":"Literal","src":"41949:1:19"}],"id":6367,"name":"FunctionCall","src":"41932:19:19"}],"id":6368,"name":"Return","src":"41925:26:19"}],"id":6369,"name":"Block","src":"41915:43:19"}],"id":6370,"name":"FunctionDefinition","src":"41835:123:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeParseInt","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6496,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6371,"name":"ElementaryTypeName","src":"41986:6:19"}],"id":6372,"name":"VariableDeclaration","src":"41986:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6373,"name":"ElementaryTypeName","src":"42004:4:19"}],"id":6374,"name":"VariableDeclaration","src":"42004:7:19"}],"id":6375,"name":"ParameterList","src":"41985:27:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedInt","scope":6496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6376,"name":"ElementaryTypeName","src":"42036:4:19"}],"id":6377,"name":"VariableDeclaration","src":"42036:15:19"}],"id":6378,"name":"ParameterList","src":"42035:17:19"},{"children":[{"attributes":{"assignments":[6380]},"children":[{"attributes":{"constant":false,"name":"bresult","scope":6495,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6379,"name":"ElementaryTypeName","src":"42063:5:19"}],"id":6380,"name":"VariableDeclaration","src":"42063:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6381,"name":"ElementaryTypeNameExpression","src":"42086:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6372,"type":"string memory","value":"_a"},"id":6382,"name":"Identifier","src":"42092:2:19"}],"id":6383,"name":"FunctionCall","src":"42086:9:19"}],"id":6384,"name":"VariableDeclarationStatement","src":"42063:32:19"},{"attributes":{"assignments":[6386]},"children":[{"attributes":{"constant":false,"name":"mint","scope":6495,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6385,"name":"ElementaryTypeName","src":"42105:4:19"}],"id":6386,"name":"VariableDeclaration","src":"42105:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6387,"name":"Literal","src":"42117:1:19"}],"id":6388,"name":"VariableDeclarationStatement","src":"42105:13:19"},{"attributes":{"assignments":[6390]},"children":[{"attributes":{"constant":false,"name":"decimals","scope":6495,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6389,"name":"ElementaryTypeName","src":"42128:4:19"}],"id":6390,"name":"VariableDeclaration","src":"42128:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6391,"name":"Literal","src":"42144:5:19"}],"id":6392,"name":"VariableDeclarationStatement","src":"42128:21:19"},{"children":[{"attributes":{"assignments":[6394]},"children":[{"attributes":{"constant":false,"name":"i","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6393,"name":"ElementaryTypeName","src":"42164:4:19"}],"id":6394,"name":"VariableDeclaration","src":"42164:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6395,"name":"Literal","src":"42173:1:19"}],"id":6396,"name":"VariableDeclarationStatement","src":"42164:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6397,"name":"Identifier","src":"42176:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6398,"name":"Identifier","src":"42180:7:19"}],"id":6399,"name":"MemberAccess","src":"42180:14:19"}],"id":6400,"name":"BinaryOperation","src":"42176:18:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6401,"name":"Identifier","src":"42196:1:19"}],"id":6402,"name":"UnaryOperation","src":"42196:3:19"}],"id":6403,"name":"ExpressionStatement","src":"42196:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6404,"name":"ElementaryTypeNameExpression","src":"42220:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6405,"name":"ElementaryTypeNameExpression","src":"42225:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6406,"name":"Identifier","src":"42231:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6407,"name":"Identifier","src":"42239:1:19"}],"id":6408,"name":"IndexAccess","src":"42231:10:19"}],"id":6409,"name":"FunctionCall","src":"42225:17:19"}],"id":6410,"name":"FunctionCall","src":"42220:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6411,"name":"Literal","src":"42247:2:19"}],"id":6412,"name":"BinaryOperation","src":"42220:29:19"}],"id":6413,"name":"TupleExpression","src":"42219:31:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6414,"name":"ElementaryTypeNameExpression","src":"42255:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6415,"name":"ElementaryTypeNameExpression","src":"42260:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6416,"name":"Identifier","src":"42266:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6417,"name":"Identifier","src":"42274:1:19"}],"id":6418,"name":"IndexAccess","src":"42266:10:19"}],"id":6419,"name":"FunctionCall","src":"42260:17:19"}],"id":6420,"name":"FunctionCall","src":"42255:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":6421,"name":"Literal","src":"42282:2:19"}],"id":6422,"name":"BinaryOperation","src":"42255:29:19"}],"id":6423,"name":"TupleExpression","src":"42254:31:19"}],"id":6424,"name":"BinaryOperation","src":"42219:66:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6390,"type":"bool","value":"decimals"},"id":6425,"name":"Identifier","src":"42309:8:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"_b"},"id":6426,"name":"Identifier","src":"42344:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6427,"name":"Literal","src":"42350:1:19"}],"id":6428,"name":"BinaryOperation","src":"42344:7:19"},{"id":6429,"name":"Break","src":"42353:5:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"_b"},"id":6430,"name":"Identifier","src":"42385:2:19"}],"id":6431,"name":"UnaryOperation","src":"42385:4:19"}],"id":6432,"name":"ExpressionStatement","src":"42385:4:19"}],"id":6433,"name":"IfStatement","src":"42340:49:19"}],"id":6434,"name":"Block","src":"42319:89:19"}],"id":6435,"name":"IfStatement","src":"42305:103:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"uint256","value":"mint"},"id":6436,"name":"Identifier","src":"42425:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6437,"name":"Literal","src":"42433:2:19"}],"id":6438,"name":"Assignment","src":"42425:10:19"}],"id":6439,"name":"ExpressionStatement","src":"42425:10:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"uint256","value":"mint"},"id":6440,"name":"Identifier","src":"42453:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6441,"name":"ElementaryTypeNameExpression","src":"42461:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6442,"name":"ElementaryTypeNameExpression","src":"42466:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6443,"name":"Identifier","src":"42472:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6444,"name":"Identifier","src":"42480:1:19"}],"id":6445,"name":"IndexAccess","src":"42472:10:19"}],"id":6446,"name":"FunctionCall","src":"42466:17:19"}],"id":6447,"name":"FunctionCall","src":"42461:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6448,"name":"Literal","src":"42487:2:19"}],"id":6449,"name":"BinaryOperation","src":"42461:28:19"}],"id":6450,"name":"Assignment","src":"42453:36:19"}],"id":6451,"name":"ExpressionStatement","src":"42453:36:19"}],"id":6452,"name":"Block","src":"42287:217:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6453,"name":"ElementaryTypeNameExpression","src":"42514:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6454,"name":"ElementaryTypeNameExpression","src":"42519:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6455,"name":"Identifier","src":"42525:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6456,"name":"Identifier","src":"42533:1:19"}],"id":6457,"name":"IndexAccess","src":"42525:10:19"}],"id":6458,"name":"FunctionCall","src":"42519:17:19"}],"id":6459,"name":"FunctionCall","src":"42514:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3436","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 46","value":"46"},"id":6460,"name":"Literal","src":"42541:2:19"}],"id":6461,"name":"BinaryOperation","src":"42514:29:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e61ad9fae8fec249700a2b9f69c490bb75dcbed87b02d29d687b2f5b8e212ec2","typeString":"literal_string \"More than one decimal encountered in string!\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":6462,"name":"Identifier","src":"42563:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6390,"type":"bool","value":"decimals"},"id":6463,"name":"Identifier","src":"42572:8:19"}],"id":6464,"name":"UnaryOperation","src":"42571:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"4d6f7265207468616e206f6e6520646563696d616c20656e636f756e746572656420696e20737472696e6721","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"More than one decimal encountered in string!\"","value":"More than one decimal encountered in string!"},"id":6465,"name":"Literal","src":"42582:46:19"}],"id":6466,"name":"FunctionCall","src":"42563:66:19"}],"id":6467,"name":"ExpressionStatement","src":"42563:66:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6390,"type":"bool","value":"decimals"},"id":6468,"name":"Identifier","src":"42647:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6469,"name":"Literal","src":"42658:4:19"}],"id":6470,"name":"Assignment","src":"42647:15:19"}],"id":6471,"name":"ExpressionStatement","src":"42647:15:19"}],"id":6472,"name":"Block","src":"42545:132:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4be58aa33854b9640df5e6de9362711524d16dd038d5e02fc1ba6b1608cc4f9d","typeString":"literal_string \"Non-numeral character encountered in string!\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":6473,"name":"Identifier","src":"42701:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"4e6f6e2d6e756d6572616c2063686172616374657220656e636f756e746572656420696e20737472696e6721","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Non-numeral character encountered in string!\"","value":"Non-numeral character encountered in string!"},"id":6474,"name":"Literal","src":"42708:46:19"}],"id":6475,"name":"FunctionCall","src":"42701:54:19"}],"id":6476,"name":"ExpressionStatement","src":"42701:54:19"}],"id":6477,"name":"Block","src":"42683:87:19"}],"id":6478,"name":"IfStatement","src":"42510:260:19"}],"id":6479,"name":"IfStatement","src":"42215:555:19"}],"id":6480,"name":"Block","src":"42201:579:19"}],"id":6481,"name":"ForStatement","src":"42159:621:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"_b"},"id":6482,"name":"Identifier","src":"42793:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6483,"name":"Literal","src":"42798:1:19"}],"id":6484,"name":"BinaryOperation","src":"42793:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"uint256","value":"mint"},"id":6485,"name":"Identifier","src":"42815:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6486,"name":"Literal","src":"42823:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"_b"},"id":6487,"name":"Identifier","src":"42829:2:19"}],"id":6488,"name":"BinaryOperation","src":"42823:8:19"}],"id":6489,"name":"Assignment","src":"42815:16:19"}],"id":6490,"name":"ExpressionStatement","src":"42815:16:19"}],"id":6491,"name":"Block","src":"42801:41:19"}],"id":6492,"name":"IfStatement","src":"42789:53:19"},{"attributes":{"functionReturnParameters":6378},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"uint256","value":"mint"},"id":6493,"name":"Identifier","src":"42858:4:19"}],"id":6494,"name":"Return","src":"42851:11:19"}],"id":6495,"name":"Block","src":"42053:816:19"}],"id":6496,"name":"FunctionDefinition","src":"41964:905:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"parseInt","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6509,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6497,"name":"ElementaryTypeName","src":"42893:6:19"}],"id":6498,"name":"VariableDeclaration","src":"42893:16:19"}],"id":6499,"name":"ParameterList","src":"42892:18:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedInt","scope":6509,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6500,"name":"ElementaryTypeName","src":"42934:4:19"}],"id":6501,"name":"VariableDeclaration","src":"42934:15:19"}],"id":6502,"name":"ParameterList","src":"42933:17:19"},{"children":[{"attributes":{"functionReturnParameters":6502},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[6509,6626],"referencedDeclaration":6626,"type":"function (string memory,uint256) pure returns (uint256)","value":"parseInt"},"id":6503,"name":"Identifier","src":"42968:8:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6498,"type":"string memory","value":"_a"},"id":6504,"name":"Identifier","src":"42977:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6505,"name":"Literal","src":"42981:1:19"}],"id":6506,"name":"FunctionCall","src":"42968:15:19"}],"id":6507,"name":"Return","src":"42961:22:19"}],"id":6508,"name":"Block","src":"42951:39:19"}],"id":6509,"name":"FunctionDefinition","src":"42875:115:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"parseInt","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6626,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6510,"name":"ElementaryTypeName","src":"43014:6:19"}],"id":6511,"name":"VariableDeclaration","src":"43014:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6626,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6512,"name":"ElementaryTypeName","src":"43032:4:19"}],"id":6513,"name":"VariableDeclaration","src":"43032:7:19"}],"id":6514,"name":"ParameterList","src":"43013:27:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedInt","scope":6626,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6515,"name":"ElementaryTypeName","src":"43064:4:19"}],"id":6516,"name":"VariableDeclaration","src":"43064:15:19"}],"id":6517,"name":"ParameterList","src":"43063:17:19"},{"children":[{"attributes":{"assignments":[6519]},"children":[{"attributes":{"constant":false,"name":"bresult","scope":6625,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6518,"name":"ElementaryTypeName","src":"43091:5:19"}],"id":6519,"name":"VariableDeclaration","src":"43091:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6520,"name":"ElementaryTypeNameExpression","src":"43114:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6511,"type":"string memory","value":"_a"},"id":6521,"name":"Identifier","src":"43120:2:19"}],"id":6522,"name":"FunctionCall","src":"43114:9:19"}],"id":6523,"name":"VariableDeclarationStatement","src":"43091:32:19"},{"attributes":{"assignments":[6525]},"children":[{"attributes":{"constant":false,"name":"mint","scope":6625,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6524,"name":"ElementaryTypeName","src":"43133:4:19"}],"id":6525,"name":"VariableDeclaration","src":"43133:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6526,"name":"Literal","src":"43145:1:19"}],"id":6527,"name":"VariableDeclarationStatement","src":"43133:13:19"},{"attributes":{"assignments":[6529]},"children":[{"attributes":{"constant":false,"name":"decimals","scope":6625,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6528,"name":"ElementaryTypeName","src":"43156:4:19"}],"id":6529,"name":"VariableDeclaration","src":"43156:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6530,"name":"Literal","src":"43172:5:19"}],"id":6531,"name":"VariableDeclarationStatement","src":"43156:21:19"},{"children":[{"attributes":{"assignments":[6533]},"children":[{"attributes":{"constant":false,"name":"i","scope":6611,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6532,"name":"ElementaryTypeName","src":"43192:4:19"}],"id":6533,"name":"VariableDeclaration","src":"43192:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6534,"name":"Literal","src":"43201:1:19"}],"id":6535,"name":"VariableDeclarationStatement","src":"43192:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6536,"name":"Identifier","src":"43204:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6537,"name":"Identifier","src":"43208:7:19"}],"id":6538,"name":"MemberAccess","src":"43208:14:19"}],"id":6539,"name":"BinaryOperation","src":"43204:18:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6540,"name":"Identifier","src":"43224:1:19"}],"id":6541,"name":"UnaryOperation","src":"43224:3:19"}],"id":6542,"name":"ExpressionStatement","src":"43224:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6543,"name":"ElementaryTypeNameExpression","src":"43248:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6544,"name":"ElementaryTypeNameExpression","src":"43253:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6545,"name":"Identifier","src":"43259:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6546,"name":"Identifier","src":"43267:1:19"}],"id":6547,"name":"IndexAccess","src":"43259:10:19"}],"id":6548,"name":"FunctionCall","src":"43253:17:19"}],"id":6549,"name":"FunctionCall","src":"43248:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6550,"name":"Literal","src":"43275:2:19"}],"id":6551,"name":"BinaryOperation","src":"43248:29:19"}],"id":6552,"name":"TupleExpression","src":"43247:31:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6553,"name":"ElementaryTypeNameExpression","src":"43283:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6554,"name":"ElementaryTypeNameExpression","src":"43288:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6555,"name":"Identifier","src":"43294:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6556,"name":"Identifier","src":"43302:1:19"}],"id":6557,"name":"IndexAccess","src":"43294:10:19"}],"id":6558,"name":"FunctionCall","src":"43288:17:19"}],"id":6559,"name":"FunctionCall","src":"43283:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":6560,"name":"Literal","src":"43310:2:19"}],"id":6561,"name":"BinaryOperation","src":"43283:29:19"}],"id":6562,"name":"TupleExpression","src":"43282:31:19"}],"id":6563,"name":"BinaryOperation","src":"43247:66:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6529,"type":"bool","value":"decimals"},"id":6564,"name":"Identifier","src":"43337:8:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6513,"type":"uint256","value":"_b"},"id":6565,"name":"Identifier","src":"43372:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6566,"name":"Literal","src":"43378:1:19"}],"id":6567,"name":"BinaryOperation","src":"43372:7:19"},{"children":[{"id":6568,"name":"Break","src":"43406:5:19"}],"id":6569,"name":"Block","src":"43381:52:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6513,"type":"uint256","value":"_b"},"id":6570,"name":"Identifier","src":"43464:2:19"}],"id":6571,"name":"UnaryOperation","src":"43464:4:19"}],"id":6572,"name":"ExpressionStatement","src":"43464:4:19"}],"id":6573,"name":"Block","src":"43439:51:19"}],"id":6574,"name":"IfStatement","src":"43368:122:19"}],"id":6575,"name":"Block","src":"43347:161:19"}],"id":6576,"name":"IfStatement","src":"43333:175:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"uint256","value":"mint"},"id":6577,"name":"Identifier","src":"43525:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6578,"name":"Literal","src":"43533:2:19"}],"id":6579,"name":"Assignment","src":"43525:10:19"}],"id":6580,"name":"ExpressionStatement","src":"43525:10:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"uint256","value":"mint"},"id":6581,"name":"Identifier","src":"43553:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6582,"name":"ElementaryTypeNameExpression","src":"43561:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6583,"name":"ElementaryTypeNameExpression","src":"43566:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6584,"name":"Identifier","src":"43572:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6585,"name":"Identifier","src":"43580:1:19"}],"id":6586,"name":"IndexAccess","src":"43572:10:19"}],"id":6587,"name":"FunctionCall","src":"43566:17:19"}],"id":6588,"name":"FunctionCall","src":"43561:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6589,"name":"Literal","src":"43587:2:19"}],"id":6590,"name":"BinaryOperation","src":"43561:28:19"}],"id":6591,"name":"Assignment","src":"43553:36:19"}],"id":6592,"name":"ExpressionStatement","src":"43553:36:19"}],"id":6593,"name":"Block","src":"43315:289:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6594,"name":"ElementaryTypeNameExpression","src":"43614:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6595,"name":"ElementaryTypeNameExpression","src":"43619:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6596,"name":"Identifier","src":"43625:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6597,"name":"Identifier","src":"43633:1:19"}],"id":6598,"name":"IndexAccess","src":"43625:10:19"}],"id":6599,"name":"FunctionCall","src":"43619:17:19"}],"id":6600,"name":"FunctionCall","src":"43614:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3436","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 46","value":"46"},"id":6601,"name":"Literal","src":"43641:2:19"}],"id":6602,"name":"BinaryOperation","src":"43614:29:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6529,"type":"bool","value":"decimals"},"id":6603,"name":"Identifier","src":"43663:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6604,"name":"Literal","src":"43674:4:19"}],"id":6605,"name":"Assignment","src":"43663:15:19"}],"id":6606,"name":"ExpressionStatement","src":"43663:15:19"}],"id":6607,"name":"Block","src":"43645:48:19"}],"id":6608,"name":"IfStatement","src":"43610:83:19"}],"id":6609,"name":"IfStatement","src":"43243:450:19"}],"id":6610,"name":"Block","src":"43229:474:19"}],"id":6611,"name":"ForStatement","src":"43187:516:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6513,"type":"uint256","value":"_b"},"id":6612,"name":"Identifier","src":"43716:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6613,"name":"Literal","src":"43721:1:19"}],"id":6614,"name":"BinaryOperation","src":"43716:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"uint256","value":"mint"},"id":6615,"name":"Identifier","src":"43738:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6616,"name":"Literal","src":"43746:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6513,"type":"uint256","value":"_b"},"id":6617,"name":"Identifier","src":"43752:2:19"}],"id":6618,"name":"BinaryOperation","src":"43746:8:19"}],"id":6619,"name":"Assignment","src":"43738:16:19"}],"id":6620,"name":"ExpressionStatement","src":"43738:16:19"}],"id":6621,"name":"Block","src":"43724:41:19"}],"id":6622,"name":"IfStatement","src":"43712:53:19"},{"attributes":{"functionReturnParameters":6517},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"uint256","value":"mint"},"id":6623,"name":"Identifier","src":"43781:4:19"}],"id":6624,"name":"Return","src":"43774:11:19"}],"id":6625,"name":"Block","src":"43081:711:19"}],"id":6626,"name":"FunctionDefinition","src":"42996:796:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"uint2str","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_i","scope":6701,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6627,"name":"ElementaryTypeName","src":"43816:4:19"}],"id":6628,"name":"VariableDeclaration","src":"43816:7:19"}],"id":6629,"name":"ParameterList","src":"43815:9:19"},{"children":[{"attributes":{"constant":false,"name":"_uintAsString","scope":6701,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6630,"name":"ElementaryTypeName","src":"43848:6:19"}],"id":6631,"name":"VariableDeclaration","src":"43848:27:19"}],"id":6632,"name":"ParameterList","src":"43847:29:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6633,"name":"Identifier","src":"43891:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6634,"name":"Literal","src":"43897:1:19"}],"id":6635,"name":"BinaryOperation","src":"43891:7:19"},{"children":[{"attributes":{"functionReturnParameters":6632},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"0\"","value":"0"},"id":6636,"name":"Literal","src":"43921:3:19"}],"id":6637,"name":"Return","src":"43914:10:19"}],"id":6638,"name":"Block","src":"43900:35:19"}],"id":6639,"name":"IfStatement","src":"43887:48:19"},{"attributes":{"assignments":[6641]},"children":[{"attributes":{"constant":false,"name":"j","scope":6700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6640,"name":"ElementaryTypeName","src":"43944:4:19"}],"id":6641,"name":"VariableDeclaration","src":"43944:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6642,"name":"Identifier","src":"43953:2:19"}],"id":6643,"name":"VariableDeclarationStatement","src":"43944:11:19"},{"attributes":{"assignments":[6645],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"len","scope":6700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6644,"name":"ElementaryTypeName","src":"43965:4:19"}],"id":6645,"name":"VariableDeclaration","src":"43965:8:19"}],"id":6646,"name":"VariableDeclarationStatement","src":"43965:8:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6641,"type":"uint256","value":"j"},"id":6647,"name":"Identifier","src":"43990:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6648,"name":"Literal","src":"43995:1:19"}],"id":6649,"name":"BinaryOperation","src":"43990:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"uint256","value":"len"},"id":6650,"name":"Identifier","src":"44012:3:19"}],"id":6651,"name":"UnaryOperation","src":"44012:5:19"}],"id":6652,"name":"ExpressionStatement","src":"44012:5:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6641,"type":"uint256","value":"j"},"id":6653,"name":"Identifier","src":"44031:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6654,"name":"Literal","src":"44036:2:19"}],"id":6655,"name":"Assignment","src":"44031:7:19"}],"id":6656,"name":"ExpressionStatement","src":"44031:7:19"}],"id":6657,"name":"Block","src":"43998:51:19"}],"id":6658,"name":"WhileStatement","src":"43983:66:19"},{"attributes":{"assignments":[6660]},"children":[{"attributes":{"constant":false,"name":"bstr","scope":6700,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6659,"name":"ElementaryTypeName","src":"44058:5:19"}],"id":6660,"name":"VariableDeclaration","src":"44058:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6661,"name":"ElementaryTypeName","src":"44082:5:19"}],"id":6662,"name":"NewExpression","src":"44078:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"uint256","value":"len"},"id":6663,"name":"Identifier","src":"44088:3:19"}],"id":6664,"name":"FunctionCall","src":"44078:14:19"}],"id":6665,"name":"VariableDeclarationStatement","src":"44058:34:19"},{"attributes":{"assignments":[6667]},"children":[{"attributes":{"constant":false,"name":"k","scope":6700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6666,"name":"ElementaryTypeName","src":"44102:4:19"}],"id":6667,"name":"VariableDeclaration","src":"44102:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"uint256","value":"len"},"id":6668,"name":"Identifier","src":"44111:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6669,"name":"Literal","src":"44117:1:19"}],"id":6670,"name":"BinaryOperation","src":"44111:7:19"}],"id":6671,"name":"VariableDeclarationStatement","src":"44102:16:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6672,"name":"Identifier","src":"44135:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6673,"name":"Literal","src":"44141:1:19"}],"id":6674,"name":"BinaryOperation","src":"44135:7:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6660,"type":"bytes memory","value":"bstr"},"id":6675,"name":"Identifier","src":"44158:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6667,"type":"uint256","value":"k"},"id":6676,"name":"Identifier","src":"44163:1:19"}],"id":6677,"name":"UnaryOperation","src":"44163:3:19"}],"id":6678,"name":"IndexAccess","src":"44158:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"byte"},"id":6679,"name":"ElementaryTypeNameExpression","src":"44170:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6680,"name":"ElementaryTypeNameExpression","src":"44175:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6681,"name":"Literal","src":"44181:2:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6682,"name":"Identifier","src":"44186:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6683,"name":"Literal","src":"44191:2:19"}],"id":6684,"name":"BinaryOperation","src":"44186:7:19"}],"id":6685,"name":"BinaryOperation","src":"44181:12:19"}],"id":6686,"name":"FunctionCall","src":"44175:19:19"}],"id":6687,"name":"FunctionCall","src":"44170:25:19"}],"id":6688,"name":"Assignment","src":"44158:37:19"}],"id":6689,"name":"ExpressionStatement","src":"44158:37:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6690,"name":"Identifier","src":"44209:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6691,"name":"Literal","src":"44215:2:19"}],"id":6692,"name":"Assignment","src":"44209:8:19"}],"id":6693,"name":"ExpressionStatement","src":"44209:8:19"}],"id":6694,"name":"Block","src":"44144:84:19"}],"id":6695,"name":"WhileStatement","src":"44128:100:19"},{"attributes":{"functionReturnParameters":6632},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":6696,"name":"ElementaryTypeNameExpression","src":"44244:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6660,"type":"bytes memory","value":"bstr"},"id":6697,"name":"Identifier","src":"44251:4:19"}],"id":6698,"name":"FunctionCall","src":"44244:12:19"}],"id":6699,"name":"Return","src":"44237:19:19"}],"id":6700,"name":"Block","src":"43877:386:19"}],"id":6701,"name":"FunctionDefinition","src":"43798:465:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stra2cbor","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_arr","scope":6759,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":6702,"name":"ElementaryTypeName","src":"44288:6:19"}],"id":6703,"name":"ArrayTypeName","src":"44288:8:19"}],"id":6704,"name":"VariableDeclaration","src":"44288:20:19"}],"id":6705,"name":"ParameterList","src":"44287:22:19"},{"children":[{"attributes":{"constant":false,"name":"_cborEncoding","scope":6759,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6706,"name":"ElementaryTypeName","src":"44333:5:19"}],"id":6707,"name":"VariableDeclaration","src":"44333:26:19"}],"id":6708,"name":"ParameterList","src":"44332:28:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":7852,"type":"function () pure","value":"safeMemoryCleaner"},"id":6709,"name":"Identifier","src":"44371:17:19"}],"id":6710,"name":"FunctionCall","src":"44371:19:19"}],"id":6711,"name":"ExpressionStatement","src":"44371:19:19"},{"attributes":{"assignments":[6715],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"buf","scope":6758,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":6714,"name":"UserDefinedTypeName","src":"44400:13:19"}],"id":6715,"name":"VariableDeclaration","src":"44400:24:19"}],"id":6716,"name":"VariableDeclarationStatement","src":"44400:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"init","referencedDeclaration":1738,"type":"function (struct Buffer.buffer memory,uint256) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"type(library Buffer)","value":"Buffer"},"id":6717,"name":"Identifier","src":"44434:6:19"}],"id":6719,"name":"MemberAccess","src":"44434:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6720,"name":"Identifier","src":"44446:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31303234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1024","value":"1024"},"id":6721,"name":"Literal","src":"44451:4:19"}],"id":6722,"name":"FunctionCall","src":"44434:22:19"}],"id":6723,"name":"ExpressionStatement","src":"44434:22:19"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"startArray","referencedDeclaration":2206,"type":"function (struct Buffer.buffer memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6724,"name":"Identifier","src":"44466:3:19"}],"id":6726,"name":"MemberAccess","src":"44466:14:19"}],"id":6727,"name":"FunctionCall","src":"44466:16:19"}],"id":6728,"name":"ExpressionStatement","src":"44466:16:19"},{"children":[{"attributes":{"assignments":[6730]},"children":[{"attributes":{"constant":false,"name":"i","scope":6749,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6729,"name":"ElementaryTypeName","src":"44497:4:19"}],"id":6730,"name":"VariableDeclaration","src":"44497:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6731,"name":"Literal","src":"44506:1:19"}],"id":6732,"name":"VariableDeclarationStatement","src":"44497:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"uint256","value":"i"},"id":6733,"name":"Identifier","src":"44509:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6704,"type":"string memory[] memory","value":"_arr"},"id":6734,"name":"Identifier","src":"44513:4:19"}],"id":6735,"name":"MemberAccess","src":"44513:11:19"}],"id":6736,"name":"BinaryOperation","src":"44509:15:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"uint256","value":"i"},"id":6737,"name":"Identifier","src":"44526:1:19"}],"id":6738,"name":"UnaryOperation","src":"44526:3:19"}],"id":6739,"name":"ExpressionStatement","src":"44526:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"encodeString","referencedDeclaration":2195,"type":"function (struct Buffer.buffer memory,string memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6740,"name":"Identifier","src":"44545:3:19"}],"id":6742,"name":"MemberAccess","src":"44545:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6704,"type":"string memory[] memory","value":"_arr"},"id":6743,"name":"Identifier","src":"44562:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"uint256","value":"i"},"id":6744,"name":"Identifier","src":"44567:1:19"}],"id":6745,"name":"IndexAccess","src":"44562:7:19"}],"id":6746,"name":"FunctionCall","src":"44545:25:19"}],"id":6747,"name":"ExpressionStatement","src":"44545:25:19"}],"id":6748,"name":"Block","src":"44531:50:19"}],"id":6749,"name":"ForStatement","src":"44492:89:19"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"endSequence","referencedDeclaration":2228,"type":"function (struct Buffer.buffer memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6750,"name":"Identifier","src":"44590:3:19"}],"id":6752,"name":"MemberAccess","src":"44590:15:19"}],"id":6753,"name":"FunctionCall","src":"44590:17:19"}],"id":6754,"name":"ExpressionStatement","src":"44590:17:19"},{"attributes":{"functionReturnParameters":6708},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6755,"name":"Identifier","src":"44624:3:19"}],"id":6756,"name":"MemberAccess","src":"44624:7:19"}],"id":6757,"name":"Return","src":"44617:14:19"}],"id":6758,"name":"Block","src":"44361:277:19"}],"id":6759,"name":"FunctionDefinition","src":"44269:369:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ba2cbor","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_arr","scope":6817,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6760,"name":"ElementaryTypeName","src":"44661:5:19"}],"id":6761,"name":"ArrayTypeName","src":"44661:7:19"}],"id":6762,"name":"VariableDeclaration","src":"44661:19:19"}],"id":6763,"name":"ParameterList","src":"44660:21:19"},{"children":[{"attributes":{"constant":false,"name":"_cborEncoding","scope":6817,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6764,"name":"ElementaryTypeName","src":"44705:5:19"}],"id":6765,"name":"VariableDeclaration","src":"44705:26:19"}],"id":6766,"name":"ParameterList","src":"44704:28:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":7852,"type":"function () pure","value":"safeMemoryCleaner"},"id":6767,"name":"Identifier","src":"44743:17:19"}],"id":6768,"name":"FunctionCall","src":"44743:19:19"}],"id":6769,"name":"ExpressionStatement","src":"44743:19:19"},{"attributes":{"assignments":[6773],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"buf","scope":6816,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":6772,"name":"UserDefinedTypeName","src":"44772:13:19"}],"id":6773,"name":"VariableDeclaration","src":"44772:24:19"}],"id":6774,"name":"VariableDeclarationStatement","src":"44772:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"init","referencedDeclaration":1738,"type":"function (struct Buffer.buffer memory,uint256) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"type(library Buffer)","value":"Buffer"},"id":6775,"name":"Identifier","src":"44806:6:19"}],"id":6777,"name":"MemberAccess","src":"44806:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6778,"name":"Identifier","src":"44818:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31303234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1024","value":"1024"},"id":6779,"name":"Literal","src":"44823:4:19"}],"id":6780,"name":"FunctionCall","src":"44806:22:19"}],"id":6781,"name":"ExpressionStatement","src":"44806:22:19"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"startArray","referencedDeclaration":2206,"type":"function (struct Buffer.buffer memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6782,"name":"Identifier","src":"44838:3:19"}],"id":6784,"name":"MemberAccess","src":"44838:14:19"}],"id":6785,"name":"FunctionCall","src":"44838:16:19"}],"id":6786,"name":"ExpressionStatement","src":"44838:16:19"},{"children":[{"attributes":{"assignments":[6788]},"children":[{"attributes":{"constant":false,"name":"i","scope":6807,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6787,"name":"ElementaryTypeName","src":"44869:4:19"}],"id":6788,"name":"VariableDeclaration","src":"44869:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6789,"name":"Literal","src":"44878:1:19"}],"id":6790,"name":"VariableDeclarationStatement","src":"44869:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6788,"type":"uint256","value":"i"},"id":6791,"name":"Identifier","src":"44881:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"bytes memory[] memory","value":"_arr"},"id":6792,"name":"Identifier","src":"44885:4:19"}],"id":6793,"name":"MemberAccess","src":"44885:11:19"}],"id":6794,"name":"BinaryOperation","src":"44881:15:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6788,"type":"uint256","value":"i"},"id":6795,"name":"Identifier","src":"44898:1:19"}],"id":6796,"name":"UnaryOperation","src":"44898:3:19"}],"id":6797,"name":"ExpressionStatement","src":"44898:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"encodeBytes","referencedDeclaration":2170,"type":"function (struct Buffer.buffer memory,bytes memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6798,"name":"Identifier","src":"44917:3:19"}],"id":6800,"name":"MemberAccess","src":"44917:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"bytes memory[] memory","value":"_arr"},"id":6801,"name":"Identifier","src":"44933:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6788,"type":"uint256","value":"i"},"id":6802,"name":"Identifier","src":"44938:1:19"}],"id":6803,"name":"IndexAccess","src":"44933:7:19"}],"id":6804,"name":"FunctionCall","src":"44917:24:19"}],"id":6805,"name":"ExpressionStatement","src":"44917:24:19"}],"id":6806,"name":"Block","src":"44903:49:19"}],"id":6807,"name":"ForStatement","src":"44864:88:19"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"endSequence","referencedDeclaration":2228,"type":"function (struct Buffer.buffer memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6808,"name":"Identifier","src":"44961:3:19"}],"id":6810,"name":"MemberAccess","src":"44961:15:19"}],"id":6811,"name":"FunctionCall","src":"44961:17:19"}],"id":6812,"name":"ExpressionStatement","src":"44961:17:19"},{"attributes":{"functionReturnParameters":6766},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6813,"name":"Identifier","src":"44995:3:19"}],"id":6814,"name":"MemberAccess","src":"44995:7:19"}],"id":6815,"name":"Return","src":"44988:14:19"}],"id":6816,"name":"Block","src":"44733:276:19"}],"id":6817,"name":"FunctionDefinition","src":"44644:365:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_newRandomDSQuery","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_delay","scope":6955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6818,"name":"ElementaryTypeName","src":"45050:4:19"}],"id":6819,"name":"VariableDeclaration","src":"45050:11:19"},{"attributes":{"constant":false,"name":"_nbytes","scope":6955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6820,"name":"ElementaryTypeName","src":"45063:4:19"}],"id":6821,"name":"VariableDeclaration","src":"45063:12:19"},{"attributes":{"constant":false,"name":"_customGasLimit","scope":6955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6822,"name":"ElementaryTypeName","src":"45077:4:19"}],"id":6823,"name":"VariableDeclaration","src":"45077:20:19"}],"id":6824,"name":"ParameterList","src":"45049:49:19"},{"children":[{"attributes":{"constant":false,"name":"_queryId","scope":6955,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6825,"name":"ElementaryTypeName","src":"45117:7:19"}],"id":6826,"name":"VariableDeclaration","src":"45117:16:19"}],"id":6827,"name":"ParameterList","src":"45116:18:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":6828,"name":"Identifier","src":"45145:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6821,"type":"uint256","value":"_nbytes"},"id":6829,"name":"Identifier","src":"45154:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6830,"name":"Literal","src":"45164:1:19"}],"id":6831,"name":"BinaryOperation","src":"45154:11:19"}],"id":6832,"name":"TupleExpression","src":"45153:13:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6821,"type":"uint256","value":"_nbytes"},"id":6833,"name":"Identifier","src":"45171:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6834,"name":"Literal","src":"45182:2:19"}],"id":6835,"name":"BinaryOperation","src":"45171:13:19"}],"id":6836,"name":"TupleExpression","src":"45170:15:19"}],"id":6837,"name":"BinaryOperation","src":"45153:32:19"}],"id":6838,"name":"FunctionCall","src":"45145:41:19"}],"id":6839,"name":"ExpressionStatement","src":"45145:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6819,"type":"uint256","value":"_delay"},"id":6840,"name":"Identifier","src":"45196:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6841,"name":"Literal","src":"45206:2:19"}],"id":6842,"name":"Assignment","src":"45196:12:19"}],"id":6843,"name":"ExpressionStatement","src":"45196:12:19"},{"attributes":{"assignments":[6845]},"children":[{"attributes":{"constant":false,"name":"nbytes","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6844,"name":"ElementaryTypeName","src":"45264:5:19"}],"id":6845,"name":"VariableDeclaration","src":"45264:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6846,"name":"ElementaryTypeName","src":"45290:5:19"}],"id":6847,"name":"NewExpression","src":"45286:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6848,"name":"Literal","src":"45296:1:19"}],"id":6849,"name":"FunctionCall","src":"45286:12:19"}],"id":6850,"name":"VariableDeclarationStatement","src":"45264:34:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6845,"type":"bytes memory","value":"nbytes"},"id":6851,"name":"Identifier","src":"45308:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6852,"name":"Literal","src":"45315:1:19"}],"id":6853,"name":"IndexAccess","src":"45308:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"byte"},"id":6854,"name":"ElementaryTypeNameExpression","src":"45320:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6855,"name":"ElementaryTypeNameExpression","src":"45325:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6821,"type":"uint256","value":"_nbytes"},"id":6856,"name":"Identifier","src":"45331:7:19"}],"id":6857,"name":"FunctionCall","src":"45325:14:19"}],"id":6858,"name":"FunctionCall","src":"45320:20:19"}],"id":6859,"name":"Assignment","src":"45308:32:19"}],"id":6860,"name":"ExpressionStatement","src":"45308:32:19"},{"attributes":{"assignments":[6862]},"children":[{"attributes":{"constant":false,"name":"unonce","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6861,"name":"ElementaryTypeName","src":"45350:5:19"}],"id":6862,"name":"VariableDeclaration","src":"45350:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6863,"name":"ElementaryTypeName","src":"45376:5:19"}],"id":6864,"name":"NewExpression","src":"45372:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6865,"name":"Literal","src":"45382:2:19"}],"id":6866,"name":"FunctionCall","src":"45372:13:19"}],"id":6867,"name":"VariableDeclarationStatement","src":"45350:35:19"},{"attributes":{"assignments":[6869]},"children":[{"attributes":{"constant":false,"name":"sessionKeyHash","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6868,"name":"ElementaryTypeName","src":"45395:5:19"}],"id":6869,"name":"VariableDeclaration","src":"45395:27:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6870,"name":"ElementaryTypeName","src":"45429:5:19"}],"id":6871,"name":"NewExpression","src":"45425:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6872,"name":"Literal","src":"45435:2:19"}],"id":6873,"name":"FunctionCall","src":"45425:13:19"}],"id":6874,"name":"VariableDeclarationStatement","src":"45395:43:19"},{"attributes":{"assignments":[6876]},"children":[{"attributes":{"constant":false,"name":"sessionKeyHash_bytes32","scope":6954,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6875,"name":"ElementaryTypeName","src":"45448:7:19"}],"id":6876,"name":"VariableDeclaration","src":"45448:30:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":5710,"type":"function () returns (bytes32)","value":"oraclize_randomDS_getSessionPubKeyHash"},"id":6877,"name":"Identifier","src":"45481:38:19"}],"id":6878,"name":"FunctionCall","src":"45481:40:19"}],"id":6879,"name":"VariableDeclarationStatement","src":"45448:73:19"},{"attributes":{"externalReferences":[{"sessionKeyHash_bytes32":{"declaration":6876,"isOffset":false,"isSlot":false,"src":"46016:22:19","valueSize":1}},{"unonce":{"declaration":6862,"isOffset":false,"isSlot":false,"src":"45561:6:19","valueSize":1}},{"sessionKeyHash":{"declaration":6869,"isOffset":false,"isSlot":false,"src":"45948:14:19","valueSize":1}},{"sessionKeyHash":{"declaration":6869,"isOffset":false,"isSlot":false,"src":"45993:14:19","valueSize":1}},{"unonce":{"declaration":6862,"isOffset":false,"isSlot":false,"src":"45856:6:19","valueSize":1}}],"operations":"{\n mstore(unonce, 0x20)\n mstore(add(unonce, 0x20), xor(blockhash(sub(number(), 1)), xor(coinbase(), timestamp())))\n mstore(sessionKeyHash, 0x20)\n mstore(add(sessionKeyHash, 0x20), sessionKeyHash_bytes32)\n}"},"children":[],"id":6880,"name":"InlineAssembly","src":"45531:518:19"},{"attributes":{"assignments":[6882]},"children":[{"attributes":{"constant":false,"name":"delay","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6881,"name":"ElementaryTypeName","src":"46058:5:19"}],"id":6882,"name":"VariableDeclaration","src":"46058:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6883,"name":"ElementaryTypeName","src":"46083:5:19"}],"id":6884,"name":"NewExpression","src":"46079:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6885,"name":"Literal","src":"46089:2:19"}],"id":6886,"name":"FunctionCall","src":"46079:13:19"}],"id":6887,"name":"VariableDeclarationStatement","src":"46058:34:19"},{"attributes":{"externalReferences":[{"_delay":{"declaration":6819,"isOffset":false,"isSlot":false,"src":"46150:6:19","valueSize":1}},{"delay":{"declaration":6882,"isOffset":false,"isSlot":false,"src":"46136:5:19","valueSize":1}}],"operations":"{\n mstore(add(delay, 0x20), _delay)\n}"},"children":[],"id":6888,"name":"InlineAssembly","src":"46102:65:19"},{"attributes":{"assignments":[6890]},"children":[{"attributes":{"constant":false,"name":"delay_bytes8","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6889,"name":"ElementaryTypeName","src":"46176:5:19"}],"id":6890,"name":"VariableDeclaration","src":"46176:25:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6891,"name":"ElementaryTypeName","src":"46208:5:19"}],"id":6892,"name":"NewExpression","src":"46204:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6893,"name":"Literal","src":"46214:1:19"}],"id":6894,"name":"FunctionCall","src":"46204:12:19"}],"id":6895,"name":"VariableDeclarationStatement","src":"46176:40:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":6896,"name":"Identifier","src":"46226:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"bytes memory","value":"delay"},"id":6897,"name":"Identifier","src":"46236:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":6898,"name":"Literal","src":"46243:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6899,"name":"Literal","src":"46247:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6890,"type":"bytes memory","value":"delay_bytes8"},"id":6900,"name":"Identifier","src":"46250:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6901,"name":"Literal","src":"46264:1:19"}],"id":6902,"name":"FunctionCall","src":"46226:40:19"}],"id":6903,"name":"ExpressionStatement","src":"46226:40:19"},{"attributes":{"assignments":[6908]},"children":[{"attributes":{"constant":false,"name":"args","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6906,"name":"ElementaryTypeName","src":"46276:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6905,"name":"Literal","src":"46282:1:19"}],"id":6907,"name":"ArrayTypeName","src":"46276:8:19"}],"id":6908,"name":"VariableDeclaration","src":"46276:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes memory[4] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6862,"type":"bytes memory","value":"unonce"},"id":6909,"name":"Identifier","src":"46300:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6845,"type":"bytes memory","value":"nbytes"},"id":6910,"name":"Identifier","src":"46308:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6869,"type":"bytes memory","value":"sessionKeyHash"},"id":6911,"name":"Identifier","src":"46316:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"bytes memory","value":"delay"},"id":6912,"name":"Identifier","src":"46332:5:19"}],"id":6913,"name":"TupleExpression","src":"46299:39:19"}],"id":6914,"name":"VariableDeclarationStatement","src":"46276:62:19"},{"attributes":{"assignments":[6916]},"children":[{"attributes":{"constant":false,"name":"queryId","scope":6954,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6915,"name":"ElementaryTypeName","src":"46348:7:19"}],"id":6916,"name":"VariableDeclaration","src":"46348:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a4896a3f93bf4bf58378e579f3cf193bb4af1022af7d2089f37d8bae7157b85f","typeString":"literal_string \"random\""},{"typeIdentifier":"t_array$_t_bytes_memory_$4_memory_ptr","typeString":"bytes memory[4] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":5363,"type":"function (string memory,bytes memory[4] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":6917,"name":"Identifier","src":"46366:14:19"},{"attributes":{"argumentTypes":null,"hexvalue":"72616e646f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"random\"","value":"random"},"id":6918,"name":"Literal","src":"46381:8:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6908,"type":"bytes memory[4] memory","value":"args"},"id":6919,"name":"Identifier","src":"46391:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6823,"type":"uint256","value":"_customGasLimit"},"id":6920,"name":"Identifier","src":"46397:15:19"}],"id":6921,"name":"FunctionCall","src":"46366:47:19"}],"id":6922,"name":"VariableDeclarationStatement","src":"46348:65:19"},{"attributes":{"assignments":[6924]},"children":[{"attributes":{"constant":false,"name":"delay_bytes8_left","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6923,"name":"ElementaryTypeName","src":"46423:5:19"}],"id":6924,"name":"VariableDeclaration","src":"46423:30:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6925,"name":"ElementaryTypeName","src":"46460:5:19"}],"id":6926,"name":"NewExpression","src":"46456:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6927,"name":"Literal","src":"46466:1:19"}],"id":6928,"name":"FunctionCall","src":"46456:12:19"}],"id":6929,"name":"VariableDeclarationStatement","src":"46423:45:19"},{"attributes":{"externalReferences":[{"delay_bytes8":{"declaration":6890,"isOffset":false,"isSlot":false,"src":"46520:12:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"46565:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"46690:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"47053:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"46813:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"46934:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"47170:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"47285:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"47398:17:19","valueSize":1}}],"operations":"{\n let x := mload(add(delay_bytes8, 0x20))\n mstore8(add(delay_bytes8_left, 0x27), div(x, 0x100000000000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x26), div(x, 0x1000000000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x25), div(x, 0x10000000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x24), div(x, 0x100000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x23), div(x, 0x1000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x22), div(x, 0x10000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x21), div(x, 0x100000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x20), div(x, 0x1000000000000000000000000000000000000000000000000))\n}"},"children":[],"id":6930,"name":"InlineAssembly","src":"46478:1016:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"function (bytes32,bytes32)","value":"oraclize_randomDS_setCommitment"},"id":6931,"name":"Identifier","src":"47503:31:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"bytes32","value":"queryId"},"id":6932,"name":"Identifier","src":"47535:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6933,"name":"Identifier","src":"47544:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":6934,"name":"Identifier","src":"47554:3:19"}],"id":6935,"name":"MemberAccess","src":"47554:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"bytes memory","value":"delay_bytes8_left"},"id":6936,"name":"Identifier","src":"47571:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6908,"type":"bytes memory[4] memory","value":"args"},"id":6937,"name":"Identifier","src":"47590:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6938,"name":"Literal","src":"47595:1:19"}],"id":6939,"name":"IndexAccess","src":"47590:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":6940,"name":"Identifier","src":"47599:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6908,"type":"bytes memory[4] memory","value":"args"},"id":6941,"name":"Identifier","src":"47606:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6942,"name":"Literal","src":"47611:1:19"}],"id":6943,"name":"IndexAccess","src":"47606:7:19"}],"id":6944,"name":"FunctionCall","src":"47599:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6908,"type":"bytes memory[4] memory","value":"args"},"id":6945,"name":"Identifier","src":"47616:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6946,"name":"Literal","src":"47621:1:19"}],"id":6947,"name":"IndexAccess","src":"47616:7:19"}],"id":6948,"name":"FunctionCall","src":"47554:70:19"}],"id":6949,"name":"FunctionCall","src":"47544:81:19"}],"id":6950,"name":"FunctionCall","src":"47503:123:19"}],"id":6951,"name":"ExpressionStatement","src":"47503:123:19"},{"attributes":{"functionReturnParameters":6827},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"bytes32","value":"queryId"},"id":6952,"name":"Identifier","src":"47643:7:19"}],"id":6953,"name":"Return","src":"47636:14:19"}],"id":6954,"name":"Block","src":"45135:2522:19"}],"id":6955,"name":"FunctionDefinition","src":"45015:2642:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_randomDS_setCommitment","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_queryId","scope":6969,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6956,"name":"ElementaryTypeName","src":"47704:7:19"}],"id":6957,"name":"VariableDeclaration","src":"47704:16:19"},{"attributes":{"constant":false,"name":"_commitment","scope":6969,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6958,"name":"ElementaryTypeName","src":"47722:7:19"}],"id":6959,"name":"VariableDeclaration","src":"47722:19:19"}],"id":6960,"name":"ParameterList","src":"47703:39:19"},{"attributes":{"parameters":[null]},"children":[],"id":6961,"name":"ParameterList","src":"47752:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2300,"type":"mapping(bytes32 => bytes32)","value":"oraclize_randomDS_args"},"id":6962,"name":"Identifier","src":"47762:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6957,"type":"bytes32","value":"_queryId"},"id":6963,"name":"Identifier","src":"47785:8:19"}],"id":6964,"name":"IndexAccess","src":"47762:32:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6959,"type":"bytes32","value":"_commitment"},"id":6965,"name":"Identifier","src":"47797:11:19"}],"id":6966,"name":"Assignment","src":"47762:46:19"}],"id":6967,"name":"ExpressionStatement","src":"47762:46:19"}],"id":6968,"name":"Block","src":"47752:63:19"}],"id":6969,"name":"FunctionDefinition","src":"47663:152:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"verifySig","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tosignh","scope":7113,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6970,"name":"ElementaryTypeName","src":"47840:7:19"}],"id":6971,"name":"VariableDeclaration","src":"47840:16:19"},{"attributes":{"constant":false,"name":"_dersig","scope":7113,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6972,"name":"ElementaryTypeName","src":"47858:5:19"}],"id":6973,"name":"VariableDeclaration","src":"47858:20:19"},{"attributes":{"constant":false,"name":"_pubkey","scope":7113,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6974,"name":"ElementaryTypeName","src":"47880:5:19"}],"id":6975,"name":"VariableDeclaration","src":"47880:20:19"}],"id":6976,"name":"ParameterList","src":"47839:62:19"},{"children":[{"attributes":{"constant":false,"name":"_sigVerified","scope":7113,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6977,"name":"ElementaryTypeName","src":"47920:4:19"}],"id":6978,"name":"VariableDeclaration","src":"47920:17:19"}],"id":6979,"name":"ParameterList","src":"47919:19:19"},{"children":[{"attributes":{"assignments":[6981],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"sigok","scope":7112,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6980,"name":"ElementaryTypeName","src":"47949:4:19"}],"id":6981,"name":"VariableDeclaration","src":"47949:10:19"}],"id":6982,"name":"VariableDeclarationStatement","src":"47949:10:19"},{"attributes":{"assignments":[6984],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"signer","scope":7112,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6983,"name":"ElementaryTypeName","src":"47969:7:19"}],"id":6984,"name":"VariableDeclaration","src":"47969:14:19"}],"id":6985,"name":"VariableDeclarationStatement","src":"47969:14:19"},{"attributes":{"assignments":[6987],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"sigr","scope":7112,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6986,"name":"ElementaryTypeName","src":"47993:7:19"}],"id":6987,"name":"VariableDeclaration","src":"47993:12:19"}],"id":6988,"name":"VariableDeclarationStatement","src":"47993:12:19"},{"attributes":{"assignments":[6990],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"sigs","scope":7112,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6989,"name":"ElementaryTypeName","src":"48015:7:19"}],"id":6990,"name":"VariableDeclaration","src":"48015:12:19"}],"id":6991,"name":"VariableDeclarationStatement","src":"48015:12:19"},{"attributes":{"assignments":[6993]},"children":[{"attributes":{"constant":false,"name":"sigr_","scope":7112,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6992,"name":"ElementaryTypeName","src":"48037:5:19"}],"id":6993,"name":"VariableDeclaration","src":"48037:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6994,"name":"ElementaryTypeName","src":"48062:5:19"}],"id":6995,"name":"NewExpression","src":"48058:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6996,"name":"Literal","src":"48068:2:19"}],"id":6997,"name":"FunctionCall","src":"48058:13:19"}],"id":6998,"name":"VariableDeclarationStatement","src":"48037:34:19"},{"attributes":{"assignments":[7000]},"children":[{"attributes":{"constant":false,"name":"offset","scope":7112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6999,"name":"ElementaryTypeName","src":"48081:4:19"}],"id":7000,"name":"VariableDeclaration","src":"48081:11:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7001,"name":"Literal","src":"48095:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7002,"name":"ElementaryTypeNameExpression","src":"48100:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7003,"name":"ElementaryTypeNameExpression","src":"48105:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6973,"type":"bytes memory","value":"_dersig"},"id":7004,"name":"Identifier","src":"48111:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7005,"name":"Literal","src":"48119:1:19"}],"id":7006,"name":"IndexAccess","src":"48111:10:19"}],"id":7007,"name":"FunctionCall","src":"48105:17:19"}],"id":7008,"name":"FunctionCall","src":"48100:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":7009,"name":"Literal","src":"48126:4:19"}],"id":7010,"name":"BinaryOperation","src":"48100:30:19"}],"id":7011,"name":"TupleExpression","src":"48099:32:19"}],"id":7012,"name":"BinaryOperation","src":"48095:36:19"}],"id":7013,"name":"VariableDeclarationStatement","src":"48081:50:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6993,"type":"bytes memory","value":"sigr_"},"id":7014,"name":"Identifier","src":"48141:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7015,"name":"Identifier","src":"48149:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6973,"type":"bytes memory","value":"_dersig"},"id":7016,"name":"Identifier","src":"48159:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7000,"type":"uint256","value":"offset"},"id":7017,"name":"Identifier","src":"48168:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7018,"name":"Literal","src":"48176:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6993,"type":"bytes memory","value":"sigr_"},"id":7019,"name":"Identifier","src":"48180:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7020,"name":"Literal","src":"48187:1:19"}],"id":7021,"name":"FunctionCall","src":"48149:40:19"}],"id":7022,"name":"Assignment","src":"48141:48:19"}],"id":7023,"name":"ExpressionStatement","src":"48141:48:19"},{"attributes":{"assignments":[7025]},"children":[{"attributes":{"constant":false,"name":"sigs_","scope":7112,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7024,"name":"ElementaryTypeName","src":"48199:5:19"}],"id":7025,"name":"VariableDeclaration","src":"48199:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7026,"name":"ElementaryTypeName","src":"48224:5:19"}],"id":7027,"name":"NewExpression","src":"48220:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7028,"name":"Literal","src":"48230:2:19"}],"id":7029,"name":"FunctionCall","src":"48220:13:19"}],"id":7030,"name":"VariableDeclarationStatement","src":"48199:34:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7000,"type":"uint256","value":"offset"},"id":7031,"name":"Identifier","src":"48243:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 34"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7032,"name":"Literal","src":"48253:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7033,"name":"Literal","src":"48258:1:19"}],"id":7034,"name":"BinaryOperation","src":"48253:6:19"}],"id":7035,"name":"Assignment","src":"48243:16:19"}],"id":7036,"name":"ExpressionStatement","src":"48243:16:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7025,"type":"bytes memory","value":"sigs_"},"id":7037,"name":"Identifier","src":"48269:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7038,"name":"Identifier","src":"48277:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6973,"type":"bytes memory","value":"_dersig"},"id":7039,"name":"Identifier","src":"48287:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7000,"type":"uint256","value":"offset"},"id":7040,"name":"Identifier","src":"48296:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7041,"name":"ElementaryTypeNameExpression","src":"48306:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7042,"name":"ElementaryTypeNameExpression","src":"48311:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6973,"type":"bytes memory","value":"_dersig"},"id":7043,"name":"Identifier","src":"48317:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7000,"type":"uint256","value":"offset"},"id":7044,"name":"Identifier","src":"48325:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7045,"name":"Literal","src":"48334:1:19"}],"id":7046,"name":"BinaryOperation","src":"48325:10:19"}],"id":7047,"name":"IndexAccess","src":"48317:19:19"}],"id":7048,"name":"FunctionCall","src":"48311:26:19"}],"id":7049,"name":"FunctionCall","src":"48306:32:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":7050,"name":"Literal","src":"48341:4:19"}],"id":7051,"name":"BinaryOperation","src":"48306:39:19"}],"id":7052,"name":"TupleExpression","src":"48305:41:19"}],"id":7053,"name":"BinaryOperation","src":"48296:50:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7054,"name":"Literal","src":"48348:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7025,"type":"bytes memory","value":"sigs_"},"id":7055,"name":"Identifier","src":"48352:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7056,"name":"Literal","src":"48359:1:19"}],"id":7057,"name":"FunctionCall","src":"48277:84:19"}],"id":7058,"name":"Assignment","src":"48269:92:19"}],"id":7059,"name":"ExpressionStatement","src":"48269:92:19"},{"attributes":{"externalReferences":[{"sigr":{"declaration":6987,"isOffset":false,"isSlot":false,"src":"48394:4:19","valueSize":1}},{"sigr_":{"declaration":6993,"isOffset":false,"isSlot":false,"src":"48412:5:19","valueSize":1}},{"sigs":{"declaration":6990,"isOffset":false,"isSlot":false,"src":"48436:4:19","valueSize":1}},{"sigs_":{"declaration":7025,"isOffset":false,"isSlot":false,"src":"48454:5:19","valueSize":1}}],"operations":"{\n sigr := mload(add(sigr_, 32))\n sigs := mload(add(sigs_, 32))\n}"},"children":[],"id":7060,"name":"InlineAssembly","src":"48371:104:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6981,"type":"bool","value":"sigok"},"id":7061,"name":"Identifier","src":"48485:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6984,"type":"address","value":"signer"},"id":7062,"name":"Identifier","src":"48492:6:19"}],"id":7063,"name":"TupleExpression","src":"48484:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,address)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7782,"type":"function (bytes32,uint8,bytes32,bytes32) returns (bool,address)","value":"safer_ecrecover"},"id":7064,"name":"Identifier","src":"48502:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes32","value":"_tosignh"},"id":7065,"name":"Identifier","src":"48518:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":7066,"name":"Literal","src":"48528:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6987,"type":"bytes32","value":"sigr"},"id":7067,"name":"Identifier","src":"48532:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6990,"type":"bytes32","value":"sigs"},"id":7068,"name":"Identifier","src":"48538:4:19"}],"id":7069,"name":"FunctionCall","src":"48502:41:19"}],"id":7070,"name":"Assignment","src":"48484:59:19"}],"id":7071,"name":"ExpressionStatement","src":"48484:59:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7072,"name":"ElementaryTypeNameExpression","src":"48557:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":7073,"name":"ElementaryTypeNameExpression","src":"48565:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7074,"name":"ElementaryTypeNameExpression","src":"48573:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7075,"name":"Identifier","src":"48581:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6975,"type":"bytes memory","value":"_pubkey"},"id":7076,"name":"Identifier","src":"48591:7:19"}],"id":7077,"name":"FunctionCall","src":"48581:18:19"}],"id":7078,"name":"FunctionCall","src":"48573:27:19"}],"id":7079,"name":"FunctionCall","src":"48565:36:19"}],"id":7080,"name":"FunctionCall","src":"48557:45:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6984,"type":"address","value":"signer"},"id":7081,"name":"Identifier","src":"48606:6:19"}],"id":7082,"name":"BinaryOperation","src":"48557:55:19"},{"children":[{"attributes":{"functionReturnParameters":6979},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7083,"name":"Literal","src":"48635:4:19"}],"id":7084,"name":"Return","src":"48628:11:19"}],"id":7085,"name":"Block","src":"48614:36:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6981,"type":"bool","value":"sigok"},"id":7086,"name":"Identifier","src":"48671:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6984,"type":"address","value":"signer"},"id":7087,"name":"Identifier","src":"48678:6:19"}],"id":7088,"name":"TupleExpression","src":"48670:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,address)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7782,"type":"function (bytes32,uint8,bytes32,bytes32) returns (bool,address)","value":"safer_ecrecover"},"id":7089,"name":"Identifier","src":"48688:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes32","value":"_tosignh"},"id":7090,"name":"Identifier","src":"48704:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":7091,"name":"Literal","src":"48714:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6987,"type":"bytes32","value":"sigr"},"id":7092,"name":"Identifier","src":"48718:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6990,"type":"bytes32","value":"sigs"},"id":7093,"name":"Identifier","src":"48724:4:19"}],"id":7094,"name":"FunctionCall","src":"48688:41:19"}],"id":7095,"name":"Assignment","src":"48670:59:19"}],"id":7096,"name":"ExpressionStatement","src":"48670:59:19"},{"attributes":{"functionReturnParameters":6979},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7097,"name":"ElementaryTypeNameExpression","src":"48751:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":7098,"name":"ElementaryTypeNameExpression","src":"48759:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7099,"name":"ElementaryTypeNameExpression","src":"48767:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7100,"name":"Identifier","src":"48775:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6975,"type":"bytes memory","value":"_pubkey"},"id":7101,"name":"Identifier","src":"48785:7:19"}],"id":7102,"name":"FunctionCall","src":"48775:18:19"}],"id":7103,"name":"FunctionCall","src":"48767:27:19"}],"id":7104,"name":"FunctionCall","src":"48759:36:19"}],"id":7105,"name":"FunctionCall","src":"48751:45:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6984,"type":"address","value":"signer"},"id":7106,"name":"Identifier","src":"48800:6:19"}],"id":7107,"name":"BinaryOperation","src":"48751:55:19"}],"id":7108,"name":"TupleExpression","src":"48750:57:19"}],"id":7109,"name":"Return","src":"48743:64:19"}],"id":7110,"name":"Block","src":"48656:162:19"}],"id":7111,"name":"IfStatement","src":"48553:265:19"}],"id":7112,"name":"Block","src":"47939:885:19"}],"id":7113,"name":"FunctionDefinition","src":"47821:1003:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_randomDS_proofVerify__sessionKeyValidity","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_proof","scope":7299,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7114,"name":"ElementaryTypeName","src":"48889:5:19"}],"id":7115,"name":"VariableDeclaration","src":"48889:19:19"},{"attributes":{"constant":false,"name":"_sig2offset","scope":7299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7116,"name":"ElementaryTypeName","src":"48910:4:19"}],"id":7117,"name":"VariableDeclaration","src":"48910:16:19"}],"id":7118,"name":"ParameterList","src":"48888:39:19"},{"children":[{"attributes":{"constant":false,"name":"_proofVerified","scope":7299,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7119,"name":"ElementaryTypeName","src":"48946:4:19"}],"id":7120,"name":"VariableDeclaration","src":"48946:19:19"}],"id":7121,"name":"ParameterList","src":"48945:21:19"},{"children":[{"attributes":{"assignments":[7123],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"sigok","scope":7298,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7122,"name":"ElementaryTypeName","src":"48977:4:19"}],"id":7123,"name":"VariableDeclaration","src":"48977:10:19"}],"id":7124,"name":"VariableDeclarationStatement","src":"48977:10:19"},{"attributes":{"assignments":[7126]},"children":[{"attributes":{"constant":false,"name":"sig2","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7125,"name":"ElementaryTypeName","src":"49138:5:19"}],"id":7126,"name":"VariableDeclaration","src":"49138:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7127,"name":"ElementaryTypeName","src":"49162:5:19"}],"id":7128,"name":"NewExpression","src":"49158:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7129,"name":"ElementaryTypeNameExpression","src":"49168:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7130,"name":"ElementaryTypeNameExpression","src":"49173:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7131,"name":"Identifier","src":"49179:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7117,"type":"uint256","value":"_sig2offset"},"id":7132,"name":"Identifier","src":"49186:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7133,"name":"Literal","src":"49200:1:19"}],"id":7134,"name":"BinaryOperation","src":"49186:15:19"}],"id":7135,"name":"IndexAccess","src":"49179:23:19"}],"id":7136,"name":"FunctionCall","src":"49173:30:19"}],"id":7137,"name":"FunctionCall","src":"49168:36:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7138,"name":"Literal","src":"49207:1:19"}],"id":7139,"name":"BinaryOperation","src":"49168:40:19"}],"id":7140,"name":"FunctionCall","src":"49158:51:19"}],"id":7141,"name":"VariableDeclarationStatement","src":"49138:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7142,"name":"Identifier","src":"49219:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7143,"name":"Identifier","src":"49229:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7117,"type":"uint256","value":"_sig2offset"},"id":7144,"name":"Identifier","src":"49237:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"bytes memory","value":"sig2"},"id":7145,"name":"Identifier","src":"49250:4:19"}],"id":7146,"name":"MemberAccess","src":"49250:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"bytes memory","value":"sig2"},"id":7147,"name":"Identifier","src":"49263:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7148,"name":"Literal","src":"49269:1:19"}],"id":7149,"name":"FunctionCall","src":"49219:52:19"}],"id":7150,"name":"ExpressionStatement","src":"49219:52:19"},{"attributes":{"assignments":[7152]},"children":[{"attributes":{"constant":false,"name":"appkey1_pubkey","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7151,"name":"ElementaryTypeName","src":"49281:5:19"}],"id":7152,"name":"VariableDeclaration","src":"49281:27:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7153,"name":"ElementaryTypeName","src":"49315:5:19"}],"id":7154,"name":"NewExpression","src":"49311:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7155,"name":"Literal","src":"49321:2:19"}],"id":7156,"name":"FunctionCall","src":"49311:13:19"}],"id":7157,"name":"VariableDeclarationStatement","src":"49281:43:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7158,"name":"Identifier","src":"49334:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7159,"name":"Identifier","src":"49344:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 4"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7160,"name":"Literal","src":"49352:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7161,"name":"Literal","src":"49356:1:19"}],"id":7162,"name":"BinaryOperation","src":"49352:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7163,"name":"Literal","src":"49359:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7152,"type":"bytes memory","value":"appkey1_pubkey"},"id":7164,"name":"Identifier","src":"49363:14:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7165,"name":"Literal","src":"49379:1:19"}],"id":7166,"name":"FunctionCall","src":"49334:47:19"}],"id":7167,"name":"ExpressionStatement","src":"49334:47:19"},{"attributes":{"assignments":[7169]},"children":[{"attributes":{"constant":false,"name":"tosign2","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7168,"name":"ElementaryTypeName","src":"49391:5:19"}],"id":7169,"name":"VariableDeclaration","src":"49391:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_98_by_1","typeString":"int_const 98"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7170,"name":"ElementaryTypeName","src":"49418:5:19"}],"id":7171,"name":"NewExpression","src":"49414:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_98_by_1","typeString":"int_const 98"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 98"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 66"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7172,"name":"Literal","src":"49424:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7173,"name":"Literal","src":"49428:2:19"}],"id":7174,"name":"BinaryOperation","src":"49424:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7175,"name":"Literal","src":"49433:2:19"}],"id":7176,"name":"BinaryOperation","src":"49424:11:19"}],"id":7177,"name":"FunctionCall","src":"49414:22:19"}],"id":7178,"name":"VariableDeclarationStatement","src":"49391:45:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7169,"type":"bytes memory","value":"tosign2"},"id":7179,"name":"Identifier","src":"49446:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7180,"name":"Literal","src":"49454:1:19"}],"id":7181,"name":"IndexAccess","src":"49446:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"byte"},"id":7182,"name":"ElementaryTypeNameExpression","src":"49459:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7183,"name":"ElementaryTypeNameExpression","src":"49464:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7184,"name":"Literal","src":"49470:1:19"}],"id":7185,"name":"FunctionCall","src":"49464:8:19"}],"id":7186,"name":"FunctionCall","src":"49459:14:19"}],"id":7187,"name":"Assignment","src":"49446:27:19"}],"id":7188,"name":"ExpressionStatement","src":"49446:27:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7189,"name":"Identifier","src":"49490:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7190,"name":"Identifier","src":"49500:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7117,"type":"uint256","value":"_sig2offset"},"id":7191,"name":"Identifier","src":"49508:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7192,"name":"Literal","src":"49522:2:19"}],"id":7193,"name":"BinaryOperation","src":"49508:16:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7194,"name":"Literal","src":"49526:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7169,"type":"bytes memory","value":"tosign2"},"id":7195,"name":"Identifier","src":"49530:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7196,"name":"Literal","src":"49539:1:19"}],"id":7197,"name":"FunctionCall","src":"49490:51:19"}],"id":7198,"name":"ExpressionStatement","src":"49490:51:19"},{"attributes":{"assignments":[7200]},"children":[{"attributes":{"constant":false,"name":"CODEHASH","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7199,"name":"ElementaryTypeName","src":"49551:5:19"}],"id":7200,"name":"VariableDeclaration","src":"49551:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"fd94fa71bc0ba10d39d464d0d8f465efeef0a2764e3887fcc9df41ded20f505c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 0)","value":null},"id":7201,"name":"Literal","src":"49575:69:19"}],"id":7202,"name":"VariableDeclarationStatement","src":"49551:93:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7203,"name":"Identifier","src":"49654:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"bytes memory","value":"CODEHASH"},"id":7204,"name":"Identifier","src":"49664:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7205,"name":"Literal","src":"49674:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7206,"name":"Literal","src":"49677:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7169,"type":"bytes memory","value":"tosign2"},"id":7207,"name":"Identifier","src":"49681:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 66"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7208,"name":"Literal","src":"49690:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7209,"name":"Literal","src":"49694:2:19"}],"id":7210,"name":"BinaryOperation","src":"49690:6:19"}],"id":7211,"name":"FunctionCall","src":"49654:43:19"}],"id":7212,"name":"ExpressionStatement","src":"49654:43:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7123,"type":"bool","value":"sigok"},"id":7213,"name":"Identifier","src":"49707:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7113,"type":"function (bytes32,bytes memory,bytes memory) returns (bool)","value":"verifySig"},"id":7214,"name":"Identifier","src":"49715:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7215,"name":"Identifier","src":"49725:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7169,"type":"bytes memory","value":"tosign2"},"id":7216,"name":"Identifier","src":"49732:7:19"}],"id":7217,"name":"FunctionCall","src":"49725:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"bytes memory","value":"sig2"},"id":7218,"name":"Identifier","src":"49742:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7152,"type":"bytes memory","value":"appkey1_pubkey"},"id":7219,"name":"Identifier","src":"49748:14:19"}],"id":7220,"name":"FunctionCall","src":"49715:48:19"}],"id":7221,"name":"Assignment","src":"49707:56:19"}],"id":7222,"name":"ExpressionStatement","src":"49707:56:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7123,"type":"bool","value":"sigok"},"id":7223,"name":"Identifier","src":"49778:5:19"}],"id":7224,"name":"UnaryOperation","src":"49777:6:19"},{"children":[{"attributes":{"functionReturnParameters":7121},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7225,"name":"Literal","src":"49806:5:19"}],"id":7226,"name":"Return","src":"49799:12:19"}],"id":7227,"name":"Block","src":"49785:37:19"}],"id":7228,"name":"IfStatement","src":"49773:49:19"},{"attributes":{"assignments":[7230]},"children":[{"attributes":{"constant":false,"name":"LEDGERKEY","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7229,"name":"ElementaryTypeName","src":"49923:5:19"}],"id":7230,"name":"VariableDeclaration","src":"49923:22:19"},{"attributes":{"argumentTypes":null,"hexvalue":"7fb956469c5c9b89840d55b43537e66a98dd4811ea0a27224272c2e5622911e8537a2f8e86a46baec82864e98dd01e9ccc2f8bc5dfc9cbe5a91a290498dd96e4","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 1)","value":null},"id":7231,"name":"Literal","src":"49948:133:19"}],"id":7232,"name":"VariableDeclarationStatement","src":"49923:158:19"},{"attributes":{"assignments":[7234]},"children":[{"attributes":{"constant":false,"name":"tosign3","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7233,"name":"ElementaryTypeName","src":"50091:5:19"}],"id":7234,"name":"VariableDeclaration","src":"50091:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7235,"name":"ElementaryTypeName","src":"50118:5:19"}],"id":7236,"name":"NewExpression","src":"50114:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 66"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7237,"name":"Literal","src":"50124:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7238,"name":"Literal","src":"50128:2:19"}],"id":7239,"name":"BinaryOperation","src":"50124:6:19"}],"id":7240,"name":"FunctionCall","src":"50114:17:19"}],"id":7241,"name":"VariableDeclarationStatement","src":"50091:40:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7234,"type":"bytes memory","value":"tosign3"},"id":7242,"name":"Identifier","src":"50141:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7243,"name":"Literal","src":"50149:1:19"}],"id":7244,"name":"IndexAccess","src":"50141:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30784645","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 254","value":"0xFE"},"id":7245,"name":"Literal","src":"50154:4:19"}],"id":7246,"name":"Assignment","src":"50141:17:19"}],"id":7247,"name":"ExpressionStatement","src":"50141:17:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7248,"name":"Identifier","src":"50168:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7249,"name":"Identifier","src":"50178:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7250,"name":"Literal","src":"50186:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7251,"name":"Literal","src":"50189:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7234,"type":"bytes memory","value":"tosign3"},"id":7252,"name":"Identifier","src":"50193:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7253,"name":"Literal","src":"50202:1:19"}],"id":7254,"name":"FunctionCall","src":"50168:36:19"}],"id":7255,"name":"ExpressionStatement","src":"50168:36:19"},{"attributes":{"assignments":[7257]},"children":[{"attributes":{"constant":false,"name":"sig3","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7256,"name":"ElementaryTypeName","src":"50214:5:19"}],"id":7257,"name":"VariableDeclaration","src":"50214:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7258,"name":"ElementaryTypeName","src":"50238:5:19"}],"id":7259,"name":"NewExpression","src":"50234:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7260,"name":"ElementaryTypeNameExpression","src":"50244:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7261,"name":"ElementaryTypeNameExpression","src":"50249:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7262,"name":"Identifier","src":"50255:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_69_by_1","typeString":"int_const 69"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 69"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7263,"name":"Literal","src":"50262:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7264,"name":"Literal","src":"50266:2:19"}],"id":7265,"name":"BinaryOperation","src":"50262:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7266,"name":"Literal","src":"50271:1:19"}],"id":7267,"name":"BinaryOperation","src":"50262:10:19"}],"id":7268,"name":"IndexAccess","src":"50255:18:19"}],"id":7269,"name":"FunctionCall","src":"50249:25:19"}],"id":7270,"name":"FunctionCall","src":"50244:31:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7271,"name":"Literal","src":"50278:1:19"}],"id":7272,"name":"BinaryOperation","src":"50244:35:19"}],"id":7273,"name":"FunctionCall","src":"50234:46:19"}],"id":7274,"name":"VariableDeclarationStatement","src":"50214:66:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7275,"name":"Identifier","src":"50290:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7276,"name":"Identifier","src":"50300:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7277,"name":"Literal","src":"50308:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7278,"name":"Literal","src":"50312:2:19"}],"id":7279,"name":"BinaryOperation","src":"50308:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7257,"type":"bytes memory","value":"sig3"},"id":7280,"name":"Identifier","src":"50316:4:19"}],"id":7281,"name":"MemberAccess","src":"50316:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7257,"type":"bytes memory","value":"sig3"},"id":7282,"name":"Identifier","src":"50329:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7283,"name":"Literal","src":"50335:1:19"}],"id":7284,"name":"FunctionCall","src":"50290:47:19"}],"id":7285,"name":"ExpressionStatement","src":"50290:47:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7123,"type":"bool","value":"sigok"},"id":7286,"name":"Identifier","src":"50347:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7113,"type":"function (bytes32,bytes memory,bytes memory) returns (bool)","value":"verifySig"},"id":7287,"name":"Identifier","src":"50355:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7288,"name":"Identifier","src":"50365:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7234,"type":"bytes memory","value":"tosign3"},"id":7289,"name":"Identifier","src":"50372:7:19"}],"id":7290,"name":"FunctionCall","src":"50365:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7257,"type":"bytes memory","value":"sig3"},"id":7291,"name":"Identifier","src":"50382:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7230,"type":"bytes memory","value":"LEDGERKEY"},"id":7292,"name":"Identifier","src":"50388:9:19"}],"id":7293,"name":"FunctionCall","src":"50355:43:19"}],"id":7294,"name":"Assignment","src":"50347:51:19"}],"id":7295,"name":"ExpressionStatement","src":"50347:51:19"},{"attributes":{"functionReturnParameters":7121},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7123,"type":"bool","value":"sigok"},"id":7296,"name":"Identifier","src":"50415:5:19"}],"id":7297,"name":"Return","src":"50408:12:19"}],"id":7298,"name":"Block","src":"48967:1460:19"}],"id":7299,"name":"FunctionDefinition","src":"48830:1597:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_randomDS_proofVerify__returnCode","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_queryId","scope":7359,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7300,"name":"ElementaryTypeName","src":"50484:7:19"}],"id":7301,"name":"VariableDeclaration","src":"50484:16:19"},{"attributes":{"constant":false,"name":"_result","scope":7359,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7302,"name":"ElementaryTypeName","src":"50502:6:19"}],"id":7303,"name":"VariableDeclaration","src":"50502:21:19"},{"attributes":{"constant":false,"name":"_proof","scope":7359,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7304,"name":"ElementaryTypeName","src":"50525:5:19"}],"id":7305,"name":"VariableDeclaration","src":"50525:19:19"}],"id":7306,"name":"ParameterList","src":"50483:62:19"},{"children":[{"attributes":{"constant":false,"name":"_returnCode","scope":7359,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7307,"name":"ElementaryTypeName","src":"50564:5:19"}],"id":7308,"name":"VariableDeclaration","src":"50564:17:19"}],"id":7309,"name":"ParameterList","src":"50563:19:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"_proof"},"id":7310,"name":"Identifier","src":"50691:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7311,"name":"Literal","src":"50698:1:19"}],"id":7312,"name":"IndexAccess","src":"50691:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"4c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"L\"","value":"L"},"id":7313,"name":"Literal","src":"50704:3:19"}],"id":7314,"name":"BinaryOperation","src":"50691:16:19"}],"id":7315,"name":"TupleExpression","src":"50690:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"_proof"},"id":7316,"name":"Identifier","src":"50713:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7317,"name":"Literal","src":"50720:1:19"}],"id":7318,"name":"IndexAccess","src":"50713:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"50","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"P\"","value":"P"},"id":7319,"name":"Literal","src":"50726:3:19"}],"id":7320,"name":"BinaryOperation","src":"50713:16:19"}],"id":7321,"name":"TupleExpression","src":"50712:18:19"}],"id":7322,"name":"BinaryOperation","src":"50690:40:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7323,"name":"ElementaryTypeNameExpression","src":"50735:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"_proof"},"id":7324,"name":"Identifier","src":"50741:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7325,"name":"Literal","src":"50748:1:19"}],"id":7326,"name":"IndexAccess","src":"50741:9:19"}],"id":7327,"name":"FunctionCall","src":"50735:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7328,"name":"ElementaryTypeNameExpression","src":"50755:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7329,"name":"Literal","src":"50761:1:19"}],"id":7330,"name":"FunctionCall","src":"50755:8:19"}],"id":7331,"name":"BinaryOperation","src":"50735:28:19"}],"id":7332,"name":"TupleExpression","src":"50734:30:19"}],"id":7333,"name":"BinaryOperation","src":"50690:74:19"},{"children":[{"attributes":{"functionReturnParameters":7309},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7334,"name":"Literal","src":"50787:1:19"}],"id":7335,"name":"Return","src":"50780:8:19"}],"id":7336,"name":"Block","src":"50766:33:19"}],"id":7337,"name":"IfStatement","src":"50686:113:19"},{"attributes":{"assignments":[7339]},"children":[{"attributes":{"constant":false,"name":"proofVerified","scope":7358,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7338,"name":"ElementaryTypeName","src":"50808:4:19"}],"id":7339,"name":"VariableDeclaration","src":"50808:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7693,"type":"function (bytes memory,bytes32,bytes memory,string memory) returns (bool)","value":"oraclize_randomDS_proofVerify__main"},"id":7340,"name":"Identifier","src":"50829:35:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"_proof"},"id":7341,"name":"Identifier","src":"50865:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7301,"type":"bytes32","value":"_queryId"},"id":7342,"name":"Identifier","src":"50873:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":7343,"name":"ElementaryTypeNameExpression","src":"50883:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7303,"type":"string memory","value":"_result"},"id":7344,"name":"Identifier","src":"50889:7:19"}],"id":7345,"name":"FunctionCall","src":"50883:14:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2432,"type":"function () view returns (string memory)","value":"oraclize_getNetworkName"},"id":7346,"name":"Identifier","src":"50899:23:19"}],"id":7347,"name":"FunctionCall","src":"50899:25:19"}],"id":7348,"name":"FunctionCall","src":"50829:96:19"}],"id":7349,"name":"VariableDeclarationStatement","src":"50808:117:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7339,"type":"bool","value":"proofVerified"},"id":7350,"name":"Identifier","src":"50940:13:19"}],"id":7351,"name":"UnaryOperation","src":"50939:14:19"},{"children":[{"attributes":{"functionReturnParameters":7309},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7352,"name":"Literal","src":"50976:1:19"}],"id":7353,"name":"Return","src":"50969:8:19"}],"id":7354,"name":"Block","src":"50955:33:19"}],"id":7355,"name":"IfStatement","src":"50935:53:19"},{"attributes":{"functionReturnParameters":7309},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7356,"name":"Literal","src":"51004:1:19"}],"id":7357,"name":"Return","src":"50997:8:19"}],"id":7358,"name":"Block","src":"50583:429:19"}],"id":7359,"name":"FunctionDefinition","src":"50433:579:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"matchBytes32Prefix","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_content","scope":7409,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7360,"name":"ElementaryTypeName","src":"51046:7:19"}],"id":7361,"name":"VariableDeclaration","src":"51046:16:19"},{"attributes":{"constant":false,"name":"_prefix","scope":7409,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7362,"name":"ElementaryTypeName","src":"51064:5:19"}],"id":7363,"name":"VariableDeclaration","src":"51064:20:19"},{"attributes":{"constant":false,"name":"_nRandomBytes","scope":7409,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7364,"name":"ElementaryTypeName","src":"51086:4:19"}],"id":7365,"name":"VariableDeclaration","src":"51086:18:19"}],"id":7366,"name":"ParameterList","src":"51045:60:19"},{"children":[{"attributes":{"constant":false,"name":"_matchesPrefix","scope":7409,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7367,"name":"ElementaryTypeName","src":"51129:4:19"}],"id":7368,"name":"VariableDeclaration","src":"51129:19:19"}],"id":7369,"name":"ParameterList","src":"51128:21:19"},{"children":[{"attributes":{"assignments":[7371]},"children":[{"attributes":{"constant":false,"name":"match_","scope":7408,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7370,"name":"ElementaryTypeName","src":"51160:4:19"}],"id":7371,"name":"VariableDeclaration","src":"51160:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7372,"name":"Literal","src":"51174:4:19"}],"id":7373,"name":"VariableDeclarationStatement","src":"51160:18:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":7374,"name":"Identifier","src":"51188:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7363,"type":"bytes memory","value":"_prefix"},"id":7375,"name":"Identifier","src":"51196:7:19"}],"id":7376,"name":"MemberAccess","src":"51196:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"uint256","value":"_nRandomBytes"},"id":7377,"name":"Identifier","src":"51214:13:19"}],"id":7378,"name":"BinaryOperation","src":"51196:31:19"}],"id":7379,"name":"FunctionCall","src":"51188:40:19"}],"id":7380,"name":"ExpressionStatement","src":"51188:40:19"},{"children":[{"attributes":{"assignments":[7382]},"children":[{"attributes":{"constant":false,"name":"i","scope":7405,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7381,"name":"ElementaryTypeName","src":"51243:7:19"}],"id":7382,"name":"VariableDeclaration","src":"51243:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7383,"name":"Literal","src":"51255:1:19"}],"id":7384,"name":"VariableDeclarationStatement","src":"51243:13:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7382,"type":"uint256","value":"i"},"id":7385,"name":"Identifier","src":"51258:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"uint256","value":"_nRandomBytes"},"id":7386,"name":"Identifier","src":"51261:13:19"}],"id":7387,"name":"BinaryOperation","src":"51258:16:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7382,"type":"uint256","value":"i"},"id":7388,"name":"Identifier","src":"51276:1:19"}],"id":7389,"name":"UnaryOperation","src":"51276:3:19"}],"id":7390,"name":"ExpressionStatement","src":"51276:3:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7361,"type":"bytes32","value":"_content"},"id":7391,"name":"Identifier","src":"51299:8:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7382,"type":"uint256","value":"i"},"id":7392,"name":"Identifier","src":"51308:1:19"}],"id":7393,"name":"IndexAccess","src":"51299:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7363,"type":"bytes memory","value":"_prefix"},"id":7394,"name":"Identifier","src":"51314:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7382,"type":"uint256","value":"i"},"id":7395,"name":"Identifier","src":"51322:1:19"}],"id":7396,"name":"IndexAccess","src":"51314:10:19"}],"id":7397,"name":"BinaryOperation","src":"51299:25:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7371,"type":"bool","value":"match_"},"id":7398,"name":"Identifier","src":"51344:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7399,"name":"Literal","src":"51353:5:19"}],"id":7400,"name":"Assignment","src":"51344:14:19"}],"id":7401,"name":"ExpressionStatement","src":"51344:14:19"}],"id":7402,"name":"Block","src":"51326:47:19"}],"id":7403,"name":"IfStatement","src":"51295:78:19"}],"id":7404,"name":"Block","src":"51281:102:19"}],"id":7405,"name":"ForStatement","src":"51238:145:19"},{"attributes":{"functionReturnParameters":7369},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7371,"type":"bool","value":"match_"},"id":7406,"name":"Identifier","src":"51399:6:19"}],"id":7407,"name":"Return","src":"51392:13:19"}],"id":7408,"name":"Block","src":"51150:262:19"}],"id":7409,"name":"FunctionDefinition","src":"51018:394:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_randomDS_proofVerify__main","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_proof","scope":7693,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7410,"name":"ElementaryTypeName","src":"51463:5:19"}],"id":7411,"name":"VariableDeclaration","src":"51463:19:19"},{"attributes":{"constant":false,"name":"_queryId","scope":7693,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7412,"name":"ElementaryTypeName","src":"51484:7:19"}],"id":7413,"name":"VariableDeclaration","src":"51484:16:19"},{"attributes":{"constant":false,"name":"_result","scope":7693,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7414,"name":"ElementaryTypeName","src":"51502:5:19"}],"id":7415,"name":"VariableDeclaration","src":"51502:20:19"},{"attributes":{"constant":false,"name":"_contextName","scope":7693,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7416,"name":"ElementaryTypeName","src":"51524:6:19"}],"id":7417,"name":"VariableDeclaration","src":"51524:26:19"}],"id":7418,"name":"ParameterList","src":"51462:89:19"},{"children":[{"attributes":{"constant":false,"name":"_proofVerified","scope":7693,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7419,"name":"ElementaryTypeName","src":"51570:4:19"}],"id":7420,"name":"VariableDeclaration","src":"51570:19:19"}],"id":7421,"name":"ParameterList","src":"51569:21:19"},{"children":[{"attributes":{"assignments":[7423]},"children":[{"attributes":{"constant":false,"name":"ledgerProofLength","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7422,"name":"ElementaryTypeName","src":"51713:4:19"}],"id":7423,"name":"VariableDeclaration","src":"51713:22:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7424,"name":"Literal","src":"51738:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7425,"name":"Literal","src":"51742:2:19"}],"id":7426,"name":"BinaryOperation","src":"51738:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7427,"name":"ElementaryTypeNameExpression","src":"51748:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7428,"name":"ElementaryTypeNameExpression","src":"51753:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7429,"name":"Identifier","src":"51759:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_69_by_1","typeString":"int_const 69"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 69"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7430,"name":"Literal","src":"51766:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7431,"name":"Literal","src":"51770:2:19"}],"id":7432,"name":"BinaryOperation","src":"51766:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7433,"name":"Literal","src":"51775:1:19"}],"id":7434,"name":"BinaryOperation","src":"51766:10:19"}],"id":7435,"name":"IndexAccess","src":"51759:18:19"}],"id":7436,"name":"FunctionCall","src":"51753:25:19"}],"id":7437,"name":"FunctionCall","src":"51748:31:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7438,"name":"Literal","src":"51782:1:19"}],"id":7439,"name":"BinaryOperation","src":"51748:35:19"}],"id":7440,"name":"TupleExpression","src":"51747:37:19"}],"id":7441,"name":"BinaryOperation","src":"51738:46:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7442,"name":"Literal","src":"51787:2:19"}],"id":7443,"name":"BinaryOperation","src":"51738:51:19"}],"id":7444,"name":"VariableDeclarationStatement","src":"51713:76:19"},{"attributes":{"assignments":[7446]},"children":[{"attributes":{"constant":false,"name":"keyhash","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7445,"name":"ElementaryTypeName","src":"51799:5:19"}],"id":7446,"name":"VariableDeclaration","src":"51799:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7447,"name":"ElementaryTypeName","src":"51826:5:19"}],"id":7448,"name":"NewExpression","src":"51822:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7449,"name":"Literal","src":"51832:2:19"}],"id":7450,"name":"FunctionCall","src":"51822:13:19"}],"id":7451,"name":"VariableDeclarationStatement","src":"51799:36:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7452,"name":"Identifier","src":"51845:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7453,"name":"Identifier","src":"51855:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7454,"name":"Identifier","src":"51863:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7455,"name":"Literal","src":"51882:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"bytes memory","value":"keyhash"},"id":7456,"name":"Identifier","src":"51886:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7457,"name":"Literal","src":"51895:1:19"}],"id":7458,"name":"FunctionCall","src":"51845:52:19"}],"id":7459,"name":"ExpressionStatement","src":"51845:52:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7460,"name":"Identifier","src":"51913:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"bytes memory","value":"keyhash"},"id":7461,"name":"Identifier","src":"51923:7:19"}],"id":7462,"name":"FunctionCall","src":"51913:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7463,"name":"Identifier","src":"51935:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":7464,"name":"Identifier","src":"51945:3:19"}],"id":7465,"name":"MemberAccess","src":"51945:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7466,"name":"Identifier","src":"51962:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":7467,"name":"Identifier","src":"51969:3:19"}],"id":7468,"name":"MemberAccess","src":"51969:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"string memory","value":"_contextName"},"id":7469,"name":"Identifier","src":"51986:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7413,"type":"bytes32","value":"_queryId"},"id":7470,"name":"Identifier","src":"52000:8:19"}],"id":7471,"name":"FunctionCall","src":"51969:40:19"}],"id":7472,"name":"FunctionCall","src":"51962:48:19"}],"id":7473,"name":"FunctionCall","src":"51945:66:19"}],"id":7474,"name":"FunctionCall","src":"51935:77:19"}],"id":7475,"name":"BinaryOperation","src":"51913:99:19"}],"id":7476,"name":"TupleExpression","src":"51912:101:19"}],"id":7477,"name":"UnaryOperation","src":"51911:102:19"},{"children":[{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7478,"name":"Literal","src":"52036:5:19"}],"id":7479,"name":"Return","src":"52029:12:19"}],"id":7480,"name":"Block","src":"52015:37:19"}],"id":7481,"name":"IfStatement","src":"51907:145:19"},{"attributes":{"assignments":[7483]},"children":[{"attributes":{"constant":false,"name":"sig1","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7482,"name":"ElementaryTypeName","src":"52061:5:19"}],"id":7483,"name":"VariableDeclaration","src":"52061:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7484,"name":"ElementaryTypeName","src":"52085:5:19"}],"id":7485,"name":"NewExpression","src":"52081:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7486,"name":"ElementaryTypeNameExpression","src":"52091:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7487,"name":"ElementaryTypeNameExpression","src":"52096:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7488,"name":"Identifier","src":"52102:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7489,"name":"Identifier","src":"52109:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7490,"name":"Literal","src":"52130:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7491,"name":"Literal","src":"52135:1:19"}],"id":7492,"name":"BinaryOperation","src":"52130:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7493,"name":"Literal","src":"52139:1:19"}],"id":7494,"name":"BinaryOperation","src":"52130:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7495,"name":"Literal","src":"52143:2:19"}],"id":7496,"name":"BinaryOperation","src":"52130:15:19"}],"id":7497,"name":"TupleExpression","src":"52129:17:19"}],"id":7498,"name":"BinaryOperation","src":"52109:37:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7499,"name":"Literal","src":"52149:1:19"}],"id":7500,"name":"BinaryOperation","src":"52109:41:19"}],"id":7501,"name":"IndexAccess","src":"52102:49:19"}],"id":7502,"name":"FunctionCall","src":"52096:56:19"}],"id":7503,"name":"FunctionCall","src":"52091:62:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7504,"name":"Literal","src":"52156:1:19"}],"id":7505,"name":"BinaryOperation","src":"52091:66:19"}],"id":7506,"name":"FunctionCall","src":"52081:77:19"}],"id":7507,"name":"VariableDeclarationStatement","src":"52061:97:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7508,"name":"Identifier","src":"52168:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7509,"name":"Identifier","src":"52178:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7510,"name":"Identifier","src":"52186:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7511,"name":"Literal","src":"52207:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7512,"name":"Literal","src":"52212:1:19"}],"id":7513,"name":"BinaryOperation","src":"52207:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7514,"name":"Literal","src":"52216:1:19"}],"id":7515,"name":"BinaryOperation","src":"52207:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7516,"name":"Literal","src":"52220:2:19"}],"id":7517,"name":"BinaryOperation","src":"52207:15:19"}],"id":7518,"name":"TupleExpression","src":"52206:17:19"}],"id":7519,"name":"BinaryOperation","src":"52186:37:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7520,"name":"Identifier","src":"52225:4:19"}],"id":7521,"name":"MemberAccess","src":"52225:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7522,"name":"Identifier","src":"52238:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7523,"name":"Literal","src":"52244:1:19"}],"id":7524,"name":"FunctionCall","src":"52168:78:19"}],"id":7525,"name":"ExpressionStatement","src":"52168:78:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes32,bytes memory,uint256) pure returns (bool)","value":"matchBytes32Prefix"},"id":7526,"name":"Identifier","src":"52414:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7527,"name":"Identifier","src":"52433:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7528,"name":"Identifier","src":"52440:4:19"}],"id":7529,"name":"FunctionCall","src":"52433:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"bytes memory","value":"_result"},"id":7530,"name":"Identifier","src":"52447:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7531,"name":"ElementaryTypeNameExpression","src":"52456:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7532,"name":"ElementaryTypeNameExpression","src":"52461:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7533,"name":"Identifier","src":"52467:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7534,"name":"Identifier","src":"52474:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7535,"name":"Literal","src":"52494:2:19"}],"id":7536,"name":"BinaryOperation","src":"52474:22:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7537,"name":"Literal","src":"52499:1:19"}],"id":7538,"name":"BinaryOperation","src":"52474:26:19"}],"id":7539,"name":"IndexAccess","src":"52467:34:19"}],"id":7540,"name":"FunctionCall","src":"52461:41:19"}],"id":7541,"name":"FunctionCall","src":"52456:47:19"}],"id":7542,"name":"FunctionCall","src":"52414:90:19"}],"id":7543,"name":"UnaryOperation","src":"52413:91:19"},{"children":[{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7544,"name":"Literal","src":"52527:5:19"}],"id":7545,"name":"Return","src":"52520:12:19"}],"id":7546,"name":"Block","src":"52506:37:19"}],"id":7547,"name":"IfStatement","src":"52409:134:19"},{"attributes":{"assignments":[7549]},"children":[{"attributes":{"constant":false,"name":"commitmentSlice1","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7548,"name":"ElementaryTypeName","src":"52789:5:19"}],"id":7549,"name":"VariableDeclaration","src":"52789:29:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7550,"name":"ElementaryTypeName","src":"52825:5:19"}],"id":7551,"name":"NewExpression","src":"52821:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 9"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7552,"name":"Literal","src":"52831:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7553,"name":"Literal","src":"52835:1:19"}],"id":7554,"name":"BinaryOperation","src":"52831:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7555,"name":"Literal","src":"52839:2:19"}],"id":7556,"name":"BinaryOperation","src":"52831:10:19"}],"id":7557,"name":"FunctionCall","src":"52821:21:19"}],"id":7558,"name":"VariableDeclarationStatement","src":"52789:53:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7559,"name":"Identifier","src":"52852:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7560,"name":"Identifier","src":"52862:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7561,"name":"Identifier","src":"52870:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7562,"name":"Literal","src":"52890:2:19"}],"id":7563,"name":"BinaryOperation","src":"52870:22:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 9"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7564,"name":"Literal","src":"52894:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7565,"name":"Literal","src":"52898:1:19"}],"id":7566,"name":"BinaryOperation","src":"52894:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7567,"name":"Literal","src":"52902:2:19"}],"id":7568,"name":"BinaryOperation","src":"52894:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7549,"type":"bytes memory","value":"commitmentSlice1"},"id":7569,"name":"Identifier","src":"52906:16:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7570,"name":"Literal","src":"52924:1:19"}],"id":7571,"name":"FunctionCall","src":"52852:74:19"}],"id":7572,"name":"ExpressionStatement","src":"52852:74:19"},{"attributes":{"assignments":[7574]},"children":[{"attributes":{"constant":false,"name":"sessionPubkey","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7573,"name":"ElementaryTypeName","src":"52936:5:19"}],"id":7574,"name":"VariableDeclaration","src":"52936:26:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7575,"name":"ElementaryTypeName","src":"52969:5:19"}],"id":7576,"name":"NewExpression","src":"52965:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7577,"name":"Literal","src":"52975:2:19"}],"id":7578,"name":"FunctionCall","src":"52965:13:19"}],"id":7579,"name":"VariableDeclarationStatement","src":"52936:42:19"},{"attributes":{"assignments":[7581]},"children":[{"attributes":{"constant":false,"name":"sig2offset","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7580,"name":"ElementaryTypeName","src":"52988:4:19"}],"id":7581,"name":"VariableDeclaration","src":"52988:15:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7582,"name":"Identifier","src":"53006:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7583,"name":"Literal","src":"53026:2:19"}],"id":7584,"name":"BinaryOperation","src":"53006:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 9"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7585,"name":"Literal","src":"53032:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7586,"name":"Literal","src":"53036:1:19"}],"id":7587,"name":"BinaryOperation","src":"53032:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7588,"name":"Literal","src":"53040:2:19"}],"id":7589,"name":"BinaryOperation","src":"53032:10:19"}],"id":7590,"name":"TupleExpression","src":"53031:12:19"}],"id":7591,"name":"BinaryOperation","src":"53006:37:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7592,"name":"Identifier","src":"53046:4:19"}],"id":7593,"name":"MemberAccess","src":"53046:11:19"}],"id":7594,"name":"BinaryOperation","src":"53006:51:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7595,"name":"Literal","src":"53060:2:19"}],"id":7596,"name":"BinaryOperation","src":"53006:56:19"}],"id":7597,"name":"VariableDeclarationStatement","src":"52988:74:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7598,"name":"Identifier","src":"53072:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7599,"name":"Identifier","src":"53082:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"uint256","value":"sig2offset"},"id":7600,"name":"Identifier","src":"53090:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7601,"name":"Literal","src":"53103:2:19"}],"id":7602,"name":"BinaryOperation","src":"53090:15:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7603,"name":"Literal","src":"53107:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7574,"type":"bytes memory","value":"sessionPubkey"},"id":7604,"name":"Identifier","src":"53111:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7605,"name":"Literal","src":"53126:1:19"}],"id":7606,"name":"FunctionCall","src":"53072:56:19"}],"id":7607,"name":"ExpressionStatement","src":"53072:56:19"},{"attributes":{"assignments":[7609]},"children":[{"attributes":{"constant":false,"name":"sessionPubkeyHash","scope":7692,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7608,"name":"ElementaryTypeName","src":"53138:7:19"}],"id":7609,"name":"VariableDeclaration","src":"53138:25:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7610,"name":"Identifier","src":"53166:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7574,"type":"bytes memory","value":"sessionPubkey"},"id":7611,"name":"Identifier","src":"53173:13:19"}],"id":7612,"name":"FunctionCall","src":"53166:21:19"}],"id":7613,"name":"VariableDeclarationStatement","src":"53138:49:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2300,"type":"mapping(bytes32 => bytes32)","value":"oraclize_randomDS_args"},"id":7614,"name":"Identifier","src":"53201:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7413,"type":"bytes32","value":"_queryId"},"id":7615,"name":"Identifier","src":"53224:8:19"}],"id":7616,"name":"IndexAccess","src":"53201:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7617,"name":"Identifier","src":"53237:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":7618,"name":"Identifier","src":"53247:3:19"}],"id":7619,"name":"MemberAccess","src":"53247:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7549,"type":"bytes memory","value":"commitmentSlice1"},"id":7620,"name":"Identifier","src":"53264:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"bytes32","value":"sessionPubkeyHash"},"id":7621,"name":"Identifier","src":"53282:17:19"}],"id":7622,"name":"FunctionCall","src":"53247:53:19"}],"id":7623,"name":"FunctionCall","src":"53237:64:19"}],"id":7624,"name":"BinaryOperation","src":"53201:100:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2300,"type":"mapping(bytes32 => bytes32)","value":"oraclize_randomDS_args"},"id":7625,"name":"Identifier","src":"53366:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7413,"type":"bytes32","value":"_queryId"},"id":7626,"name":"Identifier","src":"53389:8:19"}],"id":7627,"name":"IndexAccess","src":"53366:32:19"}],"id":7628,"name":"UnaryOperation","src":"53359:39:19"}],"id":7629,"name":"ExpressionStatement","src":"53359:39:19"}],"id":7630,"name":"Block","src":"53303:106:19"},{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7631,"name":"Literal","src":"53422:5:19"}],"id":7632,"name":"Return","src":"53415:12:19"}],"id":7633,"name":"IfStatement","src":"53197:230:19"},{"attributes":{"assignments":[7635]},"children":[{"attributes":{"constant":false,"name":"tosign1","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7634,"name":"ElementaryTypeName","src":"53549:5:19"}],"id":7635,"name":"VariableDeclaration","src":"53549:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7636,"name":"ElementaryTypeName","src":"53576:5:19"}],"id":7637,"name":"NewExpression","src":"53572:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7638,"name":"Literal","src":"53582:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7639,"name":"Literal","src":"53587:1:19"}],"id":7640,"name":"BinaryOperation","src":"53582:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7641,"name":"Literal","src":"53591:1:19"}],"id":7642,"name":"BinaryOperation","src":"53582:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7643,"name":"Literal","src":"53595:2:19"}],"id":7644,"name":"BinaryOperation","src":"53582:15:19"}],"id":7645,"name":"FunctionCall","src":"53572:26:19"}],"id":7646,"name":"VariableDeclarationStatement","src":"53549:49:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7647,"name":"Identifier","src":"53608:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7648,"name":"Identifier","src":"53618:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7649,"name":"Identifier","src":"53626:17:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7650,"name":"Literal","src":"53645:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7651,"name":"Literal","src":"53650:1:19"}],"id":7652,"name":"BinaryOperation","src":"53645:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7653,"name":"Literal","src":"53654:1:19"}],"id":7654,"name":"BinaryOperation","src":"53645:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7655,"name":"Literal","src":"53658:2:19"}],"id":7656,"name":"BinaryOperation","src":"53645:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7635,"type":"bytes memory","value":"tosign1"},"id":7657,"name":"Identifier","src":"53662:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7658,"name":"Literal","src":"53671:1:19"}],"id":7659,"name":"FunctionCall","src":"53608:65:19"}],"id":7660,"name":"ExpressionStatement","src":"53608:65:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7113,"type":"function (bytes32,bytes memory,bytes memory) returns (bool)","value":"verifySig"},"id":7661,"name":"Identifier","src":"53688:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7662,"name":"Identifier","src":"53698:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7635,"type":"bytes memory","value":"tosign1"},"id":7663,"name":"Identifier","src":"53705:7:19"}],"id":7664,"name":"FunctionCall","src":"53698:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7665,"name":"Identifier","src":"53715:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7574,"type":"bytes memory","value":"sessionPubkey"},"id":7666,"name":"Identifier","src":"53721:13:19"}],"id":7667,"name":"FunctionCall","src":"53688:47:19"}],"id":7668,"name":"UnaryOperation","src":"53687:48:19"},{"children":[{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7669,"name":"Literal","src":"53758:5:19"}],"id":7670,"name":"Return","src":"53751:12:19"}],"id":7671,"name":"Block","src":"53737:37:19"}],"id":7672,"name":"IfStatement","src":"53683:91:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2304,"type":"mapping(bytes32 => bool)","value":"oraclize_randomDS_sessionKeysHashVerified"},"id":7673,"name":"Identifier","src":"53871:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"bytes32","value":"sessionPubkeyHash"},"id":7674,"name":"Identifier","src":"53913:17:19"}],"id":7675,"name":"IndexAccess","src":"53871:60:19"}],"id":7676,"name":"UnaryOperation","src":"53870:61:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2304,"type":"mapping(bytes32 => bool)","value":"oraclize_randomDS_sessionKeysHashVerified"},"id":7677,"name":"Identifier","src":"53947:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"bytes32","value":"sessionPubkeyHash"},"id":7678,"name":"Identifier","src":"53989:17:19"}],"id":7679,"name":"IndexAccess","src":"53947:60:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7299,"type":"function (bytes memory,uint256) returns (bool)","value":"oraclize_randomDS_proofVerify__sessionKeyValidity"},"id":7680,"name":"Identifier","src":"54010:49:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7681,"name":"Identifier","src":"54060:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"uint256","value":"sig2offset"},"id":7682,"name":"Identifier","src":"54068:10:19"}],"id":7683,"name":"FunctionCall","src":"54010:69:19"}],"id":7684,"name":"Assignment","src":"53947:132:19"}],"id":7685,"name":"ExpressionStatement","src":"53947:132:19"}],"id":7686,"name":"Block","src":"53933:157:19"}],"id":7687,"name":"IfStatement","src":"53866:224:19"},{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2304,"type":"mapping(bytes32 => bool)","value":"oraclize_randomDS_sessionKeysHashVerified"},"id":7688,"name":"Identifier","src":"54106:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"bytes32","value":"sessionPubkeyHash"},"id":7689,"name":"Identifier","src":"54148:17:19"}],"id":7690,"name":"IndexAccess","src":"54106:60:19"}],"id":7691,"name":"Return","src":"54099:67:19"}],"id":7692,"name":"Block","src":"51591:2582:19"}],"id":7693,"name":"FunctionDefinition","src":"51418:2755:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copyBytes","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":7755,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7694,"name":"ElementaryTypeName","src":"54319:5:19"}],"id":7695,"name":"VariableDeclaration","src":"54319:18:19"},{"attributes":{"constant":false,"name":"_fromOffset","scope":7755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7696,"name":"ElementaryTypeName","src":"54339:4:19"}],"id":7697,"name":"VariableDeclaration","src":"54339:16:19"},{"attributes":{"constant":false,"name":"_length","scope":7755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7698,"name":"ElementaryTypeName","src":"54357:4:19"}],"id":7699,"name":"VariableDeclaration","src":"54357:12:19"},{"attributes":{"constant":false,"name":"_to","scope":7755,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7700,"name":"ElementaryTypeName","src":"54371:5:19"}],"id":7701,"name":"VariableDeclaration","src":"54371:16:19"},{"attributes":{"constant":false,"name":"_toOffset","scope":7755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7702,"name":"ElementaryTypeName","src":"54389:4:19"}],"id":7703,"name":"VariableDeclaration","src":"54389:14:19"}],"id":7704,"name":"ParameterList","src":"54318:86:19"},{"children":[{"attributes":{"constant":false,"name":"_copiedBytes","scope":7755,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7705,"name":"ElementaryTypeName","src":"54428:5:19"}],"id":7706,"name":"VariableDeclaration","src":"54428:25:19"}],"id":7707,"name":"ParameterList","src":"54427:27:19"},{"children":[{"attributes":{"assignments":[7709]},"children":[{"attributes":{"constant":false,"name":"minLength","scope":7754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7708,"name":"ElementaryTypeName","src":"54465:4:19"}],"id":7709,"name":"VariableDeclaration","src":"54465:14:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7699,"type":"uint256","value":"_length"},"id":7710,"name":"Identifier","src":"54482:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7703,"type":"uint256","value":"_toOffset"},"id":7711,"name":"Identifier","src":"54492:9:19"}],"id":7712,"name":"BinaryOperation","src":"54482:19:19"}],"id":7713,"name":"VariableDeclarationStatement","src":"54465:36:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":7714,"name":"Identifier","src":"54511:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7701,"type":"bytes memory","value":"_to"},"id":7715,"name":"Identifier","src":"54519:3:19"}],"id":7716,"name":"MemberAccess","src":"54519:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7709,"type":"uint256","value":"minLength"},"id":7717,"name":"Identifier","src":"54533:9:19"}],"id":7718,"name":"BinaryOperation","src":"54519:23:19"}],"id":7719,"name":"FunctionCall","src":"54511:32:19"}],"id":7720,"name":"ExpressionStatement","src":"54511:32:19"},{"attributes":{"assignments":[7722]},"children":[{"attributes":{"constant":false,"name":"i","scope":7754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7721,"name":"ElementaryTypeName","src":"54598:4:19"}],"id":7722,"name":"VariableDeclaration","src":"54598:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7723,"name":"Literal","src":"54607:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7697,"type":"uint256","value":"_fromOffset"},"id":7724,"name":"Identifier","src":"54612:11:19"}],"id":7725,"name":"BinaryOperation","src":"54607:16:19"}],"id":7726,"name":"VariableDeclarationStatement","src":"54598:25:19"},{"attributes":{"assignments":[7728]},"children":[{"attributes":{"constant":false,"name":"j","scope":7754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7727,"name":"ElementaryTypeName","src":"54714:4:19"}],"id":7728,"name":"VariableDeclaration","src":"54714:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7729,"name":"Literal","src":"54723:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7703,"type":"uint256","value":"_toOffset"},"id":7730,"name":"Identifier","src":"54728:9:19"}],"id":7731,"name":"BinaryOperation","src":"54723:14:19"}],"id":7732,"name":"VariableDeclarationStatement","src":"54714:23:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7722,"type":"uint256","value":"i"},"id":7733,"name":"Identifier","src":"54754:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7734,"name":"Literal","src":"54759:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7697,"type":"uint256","value":"_fromOffset"},"id":7735,"name":"Identifier","src":"54764:11:19"}],"id":7736,"name":"BinaryOperation","src":"54759:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7699,"type":"uint256","value":"_length"},"id":7737,"name":"Identifier","src":"54778:7:19"}],"id":7738,"name":"BinaryOperation","src":"54759:26:19"}],"id":7739,"name":"TupleExpression","src":"54758:28:19"}],"id":7740,"name":"BinaryOperation","src":"54754:32:19"},{"children":[{"attributes":{"externalReferences":[{"_to":{"declaration":7701,"isOffset":false,"isSlot":false,"src":"54888:3:19","valueSize":1}},{"j":{"declaration":7728,"isOffset":false,"isSlot":false,"src":"54893:1:19","valueSize":1}},{"_from":{"declaration":7695,"isOffset":false,"isSlot":false,"src":"54850:5:19","valueSize":1}},{"i":{"declaration":7722,"isOffset":false,"isSlot":false,"src":"54857:1:19","valueSize":1}}],"operations":"{\n let tmp := mload(add(_from, i))\n mstore(add(_to, j), tmp)\n}"},"children":[],"id":7741,"name":"InlineAssembly","src":"54802:113:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7722,"type":"uint256","value":"i"},"id":7742,"name":"Identifier","src":"54928:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7743,"name":"Literal","src":"54933:2:19"}],"id":7744,"name":"Assignment","src":"54928:7:19"}],"id":7745,"name":"ExpressionStatement","src":"54928:7:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7728,"type":"uint256","value":"j"},"id":7746,"name":"Identifier","src":"54949:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7747,"name":"Literal","src":"54954:2:19"}],"id":7748,"name":"Assignment","src":"54949:7:19"}],"id":7749,"name":"ExpressionStatement","src":"54949:7:19"}],"id":7750,"name":"Block","src":"54788:179:19"}],"id":7751,"name":"WhileStatement","src":"54747:220:19"},{"attributes":{"functionReturnParameters":7707},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7701,"type":"bytes memory","value":"_to"},"id":7752,"name":"Identifier","src":"54983:3:19"}],"id":7753,"name":"Return","src":"54976:10:19"}],"id":7754,"name":"Block","src":"54455:538:19"}],"id":7755,"name":"FunctionDefinition","src":"54300:693:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safer_ecrecover","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":7782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7756,"name":"ElementaryTypeName","src":"55217:7:19"}],"id":7757,"name":"VariableDeclaration","src":"55217:13:19"},{"attributes":{"constant":false,"name":"_v","scope":7782,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7758,"name":"ElementaryTypeName","src":"55232:5:19"}],"id":7759,"name":"VariableDeclaration","src":"55232:8:19"},{"attributes":{"constant":false,"name":"_r","scope":7782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7760,"name":"ElementaryTypeName","src":"55242:7:19"}],"id":7761,"name":"VariableDeclaration","src":"55242:10:19"},{"attributes":{"constant":false,"name":"_s","scope":7782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7762,"name":"ElementaryTypeName","src":"55254:7:19"}],"id":7763,"name":"VariableDeclaration","src":"55254:10:19"}],"id":7764,"name":"ParameterList","src":"55216:49:19"},{"children":[{"attributes":{"constant":false,"name":"_success","scope":7782,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7765,"name":"ElementaryTypeName","src":"55284:4:19"}],"id":7766,"name":"VariableDeclaration","src":"55284:13:19"},{"attributes":{"constant":false,"name":"_recoveredAddress","scope":7782,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7767,"name":"ElementaryTypeName","src":"55299:7:19"}],"id":7768,"name":"VariableDeclaration","src":"55299:25:19"}],"id":7769,"name":"ParameterList","src":"55283:42:19"},{"children":[{"attributes":{"assignments":[7771],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7781,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7770,"name":"ElementaryTypeName","src":"55730:4:19"}],"id":7771,"name":"VariableDeclaration","src":"55730:8:19"}],"id":7772,"name":"VariableDeclarationStatement","src":"55730:8:19"},{"attributes":{"assignments":[7774],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"addr","scope":7781,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7773,"name":"ElementaryTypeName","src":"55748:7:19"}],"id":7774,"name":"VariableDeclaration","src":"55748:12:19"}],"id":7775,"name":"VariableDeclarationStatement","src":"55748:12:19"},{"attributes":{"externalReferences":[{"ret":{"declaration":7771,"isOffset":false,"isSlot":false,"src":"55975:3:19","valueSize":1}},{"_hash":{"declaration":7757,"isOffset":false,"isSlot":false,"src":"55842:5:19","valueSize":1}},{"_v":{"declaration":7759,"isOffset":false,"isSlot":false,"src":"55883:2:19","valueSize":1}},{"addr":{"declaration":7774,"isOffset":false,"isSlot":false,"src":"56111:4:19","valueSize":1}},{"_r":{"declaration":7761,"isOffset":false,"isSlot":false,"src":"55921:2:19","valueSize":1}},{"_s":{"declaration":7763,"isOffset":false,"isSlot":false,"src":"55959:2:19","valueSize":1}}],"operations":"{\n let size := mload(0x40)\n mstore(size, _hash)\n mstore(add(size, 32), _v)\n mstore(add(size, 64), _r)\n mstore(add(size, 96), _s)\n ret := call(3000, 1, 0, size, 128, size, 32)\n addr := mload(size)\n}"},"children":[],"id":7776,"name":"InlineAssembly","src":"55770:370:19"},{"attributes":{"functionReturnParameters":7769},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bool,address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7771,"type":"bool","value":"ret"},"id":7777,"name":"Identifier","src":"56157:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7774,"type":"address","value":"addr"},"id":7778,"name":"Identifier","src":"56162:4:19"}],"id":7779,"name":"TupleExpression","src":"56156:11:19"}],"id":7780,"name":"Return","src":"56149:18:19"}],"id":7781,"name":"Block","src":"55326:848:19"}],"id":7782,"name":"FunctionDefinition","src":"55192:982:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ecrecovery","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":7847,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7783,"name":"ElementaryTypeName","src":"56321:7:19"}],"id":7784,"name":"VariableDeclaration","src":"56321:13:19"},{"attributes":{"constant":false,"name":"_sig","scope":7847,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7785,"name":"ElementaryTypeName","src":"56336:5:19"}],"id":7786,"name":"VariableDeclaration","src":"56336:17:19"}],"id":7787,"name":"ParameterList","src":"56320:34:19"},{"children":[{"attributes":{"constant":false,"name":"_success","scope":7847,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7788,"name":"ElementaryTypeName","src":"56373:4:19"}],"id":7789,"name":"VariableDeclaration","src":"56373:13:19"},{"attributes":{"constant":false,"name":"_recoveredAddress","scope":7847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7790,"name":"ElementaryTypeName","src":"56388:7:19"}],"id":7791,"name":"VariableDeclaration","src":"56388:25:19"}],"id":7792,"name":"ParameterList","src":"56372:42:19"},{"children":[{"attributes":{"assignments":[7794],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":7846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7793,"name":"ElementaryTypeName","src":"56425:7:19"}],"id":7794,"name":"VariableDeclaration","src":"56425:9:19"}],"id":7795,"name":"VariableDeclarationStatement","src":"56425:9:19"},{"attributes":{"assignments":[7797],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":7846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7796,"name":"ElementaryTypeName","src":"56444:7:19"}],"id":7797,"name":"VariableDeclaration","src":"56444:9:19"}],"id":7798,"name":"VariableDeclarationStatement","src":"56444:9:19"},{"attributes":{"assignments":[7800],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":7846,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7799,"name":"ElementaryTypeName","src":"56463:5:19"}],"id":7800,"name":"VariableDeclaration","src":"56463:7:19"}],"id":7801,"name":"VariableDeclarationStatement","src":"56463:7:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7786,"type":"bytes memory","value":"_sig"},"id":7802,"name":"Identifier","src":"56484:4:19"}],"id":7803,"name":"MemberAccess","src":"56484:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7804,"name":"Literal","src":"56499:2:19"}],"id":7805,"name":"BinaryOperation","src":"56484:17:19"},{"children":[{"attributes":{"functionReturnParameters":7792},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(bool,address payable)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7806,"name":"Literal","src":"56525:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7807,"name":"ElementaryTypeNameExpression","src":"56532:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7808,"name":"Literal","src":"56540:1:19"}],"id":7809,"name":"FunctionCall","src":"56532:10:19"}],"id":7810,"name":"TupleExpression","src":"56524:19:19"}],"id":7811,"name":"Return","src":"56517:26:19"}],"id":7812,"name":"Block","src":"56503:51:19"}],"id":7813,"name":"IfStatement","src":"56480:74:19"},{"attributes":{"externalReferences":[{"r":{"declaration":7794,"isOffset":false,"isSlot":false,"src":"56760:1:19","valueSize":1}},{"_sig":{"declaration":7786,"isOffset":false,"isSlot":false,"src":"56775:4:19","valueSize":1}},{"v":{"declaration":7800,"isOffset":false,"isSlot":false,"src":"57072:1:19","valueSize":1}},{"s":{"declaration":7797,"isOffset":false,"isSlot":false,"src":"56798:1:19","valueSize":1}},{"_sig":{"declaration":7786,"isOffset":false,"isSlot":false,"src":"56813:4:19","valueSize":1}},{"_sig":{"declaration":7786,"isOffset":false,"isSlot":false,"src":"57095:4:19","valueSize":1}}],"operations":"{\n r := mload(add(_sig, 32))\n s := mload(add(_sig, 64))\n v := byte(0, mload(add(_sig, 96)))\n}"},"children":[],"id":7814,"name":"InlineAssembly","src":"56737:615:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7815,"name":"Identifier","src":"57667:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":7816,"name":"Literal","src":"57671:2:19"}],"id":7817,"name":"BinaryOperation","src":"57667:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7818,"name":"Identifier","src":"57689:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":7819,"name":"Literal","src":"57694:2:19"}],"id":7820,"name":"Assignment","src":"57689:7:19"}],"id":7821,"name":"ExpressionStatement","src":"57689:7:19"}],"id":7822,"name":"Block","src":"57675:32:19"}],"id":7823,"name":"IfStatement","src":"57663:44:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7824,"name":"Identifier","src":"57720:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":7825,"name":"Literal","src":"57725:2:19"}],"id":7826,"name":"BinaryOperation","src":"57720:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7827,"name":"Identifier","src":"57731:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":7828,"name":"Literal","src":"57736:2:19"}],"id":7829,"name":"BinaryOperation","src":"57731:7:19"}],"id":7830,"name":"BinaryOperation","src":"57720:18:19"},{"children":[{"attributes":{"functionReturnParameters":7792},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(bool,address payable)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7831,"name":"Literal","src":"57762:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7832,"name":"ElementaryTypeNameExpression","src":"57769:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7833,"name":"Literal","src":"57777:1:19"}],"id":7834,"name":"FunctionCall","src":"57769:10:19"}],"id":7835,"name":"TupleExpression","src":"57761:19:19"}],"id":7836,"name":"Return","src":"57754:26:19"}],"id":7837,"name":"Block","src":"57740:51:19"}],"id":7838,"name":"IfStatement","src":"57716:75:19"},{"attributes":{"functionReturnParameters":7792},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,address)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7782,"type":"function (bytes32,uint8,bytes32,bytes32) returns (bool,address)","value":"safer_ecrecover"},"id":7839,"name":"Identifier","src":"57807:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7784,"type":"bytes32","value":"_hash"},"id":7840,"name":"Identifier","src":"57823:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7841,"name":"Identifier","src":"57830:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7794,"type":"bytes32","value":"r"},"id":7842,"name":"Identifier","src":"57833:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7797,"type":"bytes32","value":"s"},"id":7843,"name":"Identifier","src":"57836:1:19"}],"id":7844,"name":"FunctionCall","src":"57807:31:19"}],"id":7845,"name":"Return","src":"57800:38:19"}],"id":7846,"name":"Block","src":"56415:1430:19"}],"id":7847,"name":"FunctionDefinition","src":"56301:1544:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeMemoryCleaner","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7848,"name":"ParameterList","src":"57877:2:19"},{"attributes":{"parameters":[null]},"children":[],"id":7849,"name":"ParameterList","src":"57894:0:19"},{"children":[{"attributes":{"externalReferences":[null],"operations":"{\n let fmem := mload(0x40)\n codecopy(fmem, codesize(), sub(msize(), fmem))\n}"},"children":[],"id":7850,"name":"InlineAssembly","src":"57904:111:19"}],"id":7851,"name":"Block","src":"57894:127:19"}],"id":7852,"name":"FunctionDefinition","src":"57851:170:19"}],"id":7853,"name":"ContractDefinition","src":"10894:47129:19"}],"id":7854,"name":"SourceUnit","src":"1116:56933:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[14156]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12452,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[14156],"name":"strings","scope":14157},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":14156,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":12457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12453,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":12454,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":12457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12455,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":12456,"name":"VariableDeclaration","src":"2663:9:20"}],"id":12457,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":12497,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12458,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":12459,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":12497,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12460,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":12461,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":12497,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12462,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":12463,"name":"VariableDeclaration","src":"2722:8:20"}],"id":12464,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":12465,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12463,"type":"uint256","value":"len"},"id":12466,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12467,"name":"Literal","src":"2818:2:20"}],"id":12468,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12463,"type":"uint256","value":"len"},"id":12469,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12470,"name":"Literal","src":"2829:2:20"}],"id":12471,"name":"Assignment","src":"2822:9:20"}],"id":12472,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":12461,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":12459,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":12473,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12459,"type":"uint256","value":"dest"},"id":12474,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12475,"name":"Literal","src":"2933:2:20"}],"id":12476,"name":"Assignment","src":"2925:10:20"}],"id":12477,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12461,"type":"uint256","value":"src"},"id":12478,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12479,"name":"Literal","src":"2956:2:20"}],"id":12480,"name":"Assignment","src":"2949:9:20"}],"id":12481,"name":"ExpressionStatement","src":"2949:9:20"}],"id":12482,"name":"Block","src":"2833:136:20"}],"id":12483,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[12485]},"children":[{"attributes":{"constant":false,"name":"mask","scope":12496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12484,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":12485,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":12486,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12487,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12463,"type":"uint256","value":"len"},"id":12488,"name":"Identifier","src":"3036:3:20"}],"id":12489,"name":"BinaryOperation","src":"3031:8:20"}],"id":12490,"name":"TupleExpression","src":"3030:10:20"}],"id":12491,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12492,"name":"Literal","src":"3043:1:20"}],"id":12493,"name":"BinaryOperation","src":"3023:21:20"}],"id":12494,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":12461,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":12485,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":12459,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":12459,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":12485,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":12495,"name":"InlineAssembly","src":"3054:173:20"}],"id":12496,"name":"Block","src":"2745:488:20"}],"id":12497,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12517,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12498,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":12499,"name":"VariableDeclaration","src":"3450:18:20"}],"id":12500,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12517,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12501,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":12502,"name":"VariableDeclaration","src":"3493:12:20"}],"id":12503,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[12505],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":12516,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12504,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":12505,"name":"VariableDeclaration","src":"3517:8:20"}],"id":12506,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":12505,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":12499,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":12507,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":12503},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12457,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":12508,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":12509,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12499,"type":"string memory","value":"self"},"id":12510,"name":"Identifier","src":"3618:4:20"}],"id":12511,"name":"FunctionCall","src":"3612:11:20"}],"id":12512,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12505,"type":"uint256","value":"ptr"},"id":12513,"name":"Identifier","src":"3632:3:20"}],"id":12514,"name":"FunctionCall","src":"3606:30:20"}],"id":12515,"name":"Return","src":"3599:37:20"}],"id":12516,"name":"Block","src":"3507:136:20"}],"id":12517,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12643,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12518,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":12519,"name":"VariableDeclaration","src":"3852:12:20"}],"id":12520,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12521,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":12522,"name":"VariableDeclaration","src":"3889:4:20"}],"id":12523,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[12525],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":12642,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12524,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":12525,"name":"VariableDeclaration","src":"3905:8:20"}],"id":12526,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12527,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12528,"name":"Literal","src":"3935:1:20"}],"id":12529,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":12523},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12530,"name":"Literal","src":"3957:1:20"}],"id":12531,"name":"Return","src":"3950:8:20"}],"id":12532,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12533,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12534,"name":"Identifier","src":"3977:4:20"}],"id":12535,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":12536,"name":"Literal","src":"3985:34:20"}],"id":12537,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12538,"name":"Literal","src":"4023:1:20"}],"id":12539,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12540,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":12541,"name":"Literal","src":"4047:2:20"}],"id":12542,"name":"Assignment","src":"4040:9:20"}],"id":12543,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12544,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":12545,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12546,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12547,"name":"Identifier","src":"4083:4:20"}],"id":12548,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":12549,"name":"Literal","src":"4091:35:20"}],"id":12550,"name":"BinaryOperation","src":"4078:48:20"}],"id":12551,"name":"FunctionCall","src":"4070:57:20"}],"id":12552,"name":"Assignment","src":"4063:64:20"}],"id":12553,"name":"ExpressionStatement","src":"4063:64:20"}],"id":12554,"name":"Block","src":"4026:112:20"}],"id":12555,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12556,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12557,"name":"Identifier","src":"4156:4:20"}],"id":12558,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":12559,"name":"Literal","src":"4164:18:20"}],"id":12560,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12561,"name":"Literal","src":"4186:1:20"}],"id":12562,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12563,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":12564,"name":"Literal","src":"4210:1:20"}],"id":12565,"name":"Assignment","src":"4203:8:20"}],"id":12566,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12567,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":12568,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12569,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12570,"name":"Identifier","src":"4245:4:20"}],"id":12571,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":12572,"name":"Literal","src":"4253:19:20"}],"id":12573,"name":"BinaryOperation","src":"4240:32:20"}],"id":12574,"name":"FunctionCall","src":"4232:41:20"}],"id":12575,"name":"Assignment","src":"4225:48:20"}],"id":12576,"name":"ExpressionStatement","src":"4225:48:20"}],"id":12577,"name":"Block","src":"4189:95:20"}],"id":12578,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12579,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12580,"name":"Identifier","src":"4302:4:20"}],"id":12581,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":12582,"name":"Literal","src":"4310:10:20"}],"id":12583,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12584,"name":"Literal","src":"4324:1:20"}],"id":12585,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12586,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":12587,"name":"Literal","src":"4348:1:20"}],"id":12588,"name":"Assignment","src":"4341:8:20"}],"id":12589,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12590,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":12591,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12592,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12593,"name":"Identifier","src":"4383:4:20"}],"id":12594,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":12595,"name":"Literal","src":"4391:11:20"}],"id":12596,"name":"BinaryOperation","src":"4378:24:20"}],"id":12597,"name":"FunctionCall","src":"4370:33:20"}],"id":12598,"name":"Assignment","src":"4363:40:20"}],"id":12599,"name":"ExpressionStatement","src":"4363:40:20"}],"id":12600,"name":"Block","src":"4327:87:20"}],"id":12601,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12602,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12603,"name":"Identifier","src":"4432:4:20"}],"id":12604,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":12605,"name":"Literal","src":"4440:6:20"}],"id":12606,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12607,"name":"Literal","src":"4450:1:20"}],"id":12608,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12609,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":12610,"name":"Literal","src":"4474:1:20"}],"id":12611,"name":"Assignment","src":"4467:8:20"}],"id":12612,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12613,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":12614,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12615,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12616,"name":"Identifier","src":"4509:4:20"}],"id":12617,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":12618,"name":"Literal","src":"4517:7:20"}],"id":12619,"name":"BinaryOperation","src":"4504:20:20"}],"id":12620,"name":"FunctionCall","src":"4496:29:20"}],"id":12621,"name":"Assignment","src":"4489:36:20"}],"id":12622,"name":"ExpressionStatement","src":"4489:36:20"}],"id":12623,"name":"Block","src":"4453:83:20"}],"id":12624,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12625,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12626,"name":"Identifier","src":"4554:4:20"}],"id":12627,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":12628,"name":"Literal","src":"4562:4:20"}],"id":12629,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12630,"name":"Literal","src":"4570:1:20"}],"id":12631,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12632,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12633,"name":"Literal","src":"4594:1:20"}],"id":12634,"name":"Assignment","src":"4587:8:20"}],"id":12635,"name":"ExpressionStatement","src":"4587:8:20"}],"id":12636,"name":"Block","src":"4573:33:20"}],"id":12637,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":12523},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12638,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12639,"name":"Identifier","src":"4627:3:20"}],"id":12640,"name":"BinaryOperation","src":"4622:8:20"}],"id":12641,"name":"Return","src":"4615:15:20"}],"id":12642,"name":"Block","src":"3895:742:20"}],"id":12643,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12660,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12644,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":12645,"name":"VariableDeclaration","src":"4963:12:20"}],"id":12646,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":12660,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12647,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":12648,"name":"VariableDeclaration","src":"5000:16:20"}],"id":12649,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":12645,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":12648,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":12650,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12648,"type":"struct strings.slice memory","value":"ret"},"id":12651,"name":"Identifier","src":"5286:3:20"}],"id":12653,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[12643,12793],"referencedDeclaration":12643,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":12654,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12645,"type":"bytes32","value":"self"},"id":12655,"name":"Identifier","src":"5301:4:20"}],"id":12656,"name":"FunctionCall","src":"5297:9:20"}],"id":12657,"name":"Assignment","src":"5286:20:20"}],"id":12658,"name":"ExpressionStatement","src":"5286:20:20"}],"id":12659,"name":"Block","src":"5018:295:20"}],"id":12660,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12675,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12661,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":12662,"name":"VariableDeclaration","src":"5528:17:20"}],"id":12663,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12675,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12664,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":12665,"name":"VariableDeclaration","src":"5570:12:20"}],"id":12666,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":12666},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12457,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":12667,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12662,"type":"struct strings.slice memory","value":"self"},"id":12668,"name":"Identifier","src":"5607:4:20"}],"id":12669,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12662,"type":"struct strings.slice memory","value":"self"},"id":12670,"name":"Identifier","src":"5618:4:20"}],"id":12671,"name":"MemberAccess","src":"5618:9:20"}],"id":12672,"name":"FunctionCall","src":"5601:27:20"}],"id":12673,"name":"Return","src":"5594:34:20"}],"id":12674,"name":"Block","src":"5584:51:20"}],"id":12675,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12705,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12676,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":12677,"name":"VariableDeclaration","src":"5825:17:20"}],"id":12678,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12705,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12679,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":12680,"name":"VariableDeclaration","src":"5867:13:20"}],"id":12681,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[12683]},"children":[{"attributes":{"constant":false,"name":"ret","scope":12704,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12682,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":12683,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":12684,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":12685,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12677,"type":"struct strings.slice memory","value":"self"},"id":12686,"name":"Identifier","src":"5923:4:20"}],"id":12687,"name":"MemberAccess","src":"5923:9:20"}],"id":12688,"name":"FunctionCall","src":"5912:21:20"}],"id":12689,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[12691],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":12704,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12690,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":12691,"name":"VariableDeclaration","src":"5943:11:20"}],"id":12692,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":12691,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":12683,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":12693,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":12694,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12691,"type":"uint256","value":"retptr"},"id":12695,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12677,"type":"struct strings.slice memory","value":"self"},"id":12696,"name":"Identifier","src":"6024:4:20"}],"id":12697,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12677,"type":"struct strings.slice memory","value":"self"},"id":12698,"name":"Identifier","src":"6035:4:20"}],"id":12699,"name":"MemberAccess","src":"6035:9:20"}],"id":12700,"name":"FunctionCall","src":"6009:36:20"}],"id":12701,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":12681},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12683,"type":"string memory","value":"ret"},"id":12702,"name":"Identifier","src":"6062:3:20"}],"id":12703,"name":"Return","src":"6055:10:20"}],"id":12704,"name":"Block","src":"5882:190:20"}],"id":12705,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12793,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12706,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":12707,"name":"VariableDeclaration","src":"6476:17:20"}],"id":12708,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":12793,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12709,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":12710,"name":"VariableDeclaration","src":"6518:6:20"}],"id":12711,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[12713]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":12792,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12712,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":12713,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12707,"type":"struct strings.slice memory","value":"self"},"id":12714,"name":"Identifier","src":"6622:4:20"}],"id":12715,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":12716,"name":"Literal","src":"6634:2:20"}],"id":12717,"name":"BinaryOperation","src":"6622:14:20"}],"id":12718,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[12720]},"children":[{"attributes":{"constant":false,"name":"end","scope":12792,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12719,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":12720,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12721,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12707,"type":"struct strings.slice memory","value":"self"},"id":12722,"name":"Identifier","src":"6663:4:20"}],"id":12723,"name":"MemberAccess","src":"6663:9:20"}],"id":12724,"name":"BinaryOperation","src":"6657:15:20"}],"id":12725,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12710,"type":"uint256","value":"l"},"id":12726,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12727,"name":"Literal","src":"6691:1:20"}],"id":12728,"name":"Assignment","src":"6687:5:20"}],"id":12729,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12730,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12720,"type":"uint256","value":"end"},"id":12731,"name":"Identifier","src":"6700:3:20"}],"id":12732,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12710,"type":"uint256","value":"l"},"id":12733,"name":"Identifier","src":"6705:1:20"}],"id":12734,"name":"UnaryOperation","src":"6705:3:20"}],"id":12735,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[12737],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":12790,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":12736,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":12737,"name":"VariableDeclaration","src":"6724:7:20"}],"id":12738,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":12737,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":12713,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":12739,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12740,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":12741,"name":"Literal","src":"6805:4:20"}],"id":12742,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12743,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12744,"name":"Literal","src":"6836:1:20"}],"id":12745,"name":"Assignment","src":"6829:8:20"}],"id":12746,"name":"ExpressionStatement","src":"6829:8:20"}],"id":12747,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12748,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":12749,"name":"Literal","src":"6866:4:20"}],"id":12750,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12751,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":12752,"name":"Literal","src":"6897:1:20"}],"id":12753,"name":"Assignment","src":"6890:8:20"}],"id":12754,"name":"ExpressionStatement","src":"6890:8:20"}],"id":12755,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12756,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":12757,"name":"Literal","src":"6927:4:20"}],"id":12758,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12759,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":12760,"name":"Literal","src":"6958:1:20"}],"id":12761,"name":"Assignment","src":"6951:8:20"}],"id":12762,"name":"ExpressionStatement","src":"6951:8:20"}],"id":12763,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12764,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":12765,"name":"Literal","src":"6988:4:20"}],"id":12766,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12767,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":12768,"name":"Literal","src":"7019:1:20"}],"id":12769,"name":"Assignment","src":"7012:8:20"}],"id":12770,"name":"ExpressionStatement","src":"7012:8:20"}],"id":12771,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12772,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":12773,"name":"Literal","src":"7049:4:20"}],"id":12774,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12775,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":12776,"name":"Literal","src":"7080:1:20"}],"id":12777,"name":"Assignment","src":"7073:8:20"}],"id":12778,"name":"ExpressionStatement","src":"7073:8:20"}],"id":12779,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12780,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":12781,"name":"Literal","src":"7127:1:20"}],"id":12782,"name":"Assignment","src":"7120:8:20"}],"id":12783,"name":"ExpressionStatement","src":"7120:8:20"}],"id":12784,"name":"Block","src":"7102:41:20"}],"id":12785,"name":"IfStatement","src":"7041:102:20"}],"id":12786,"name":"IfStatement","src":"6980:163:20"}],"id":12787,"name":"IfStatement","src":"6919:224:20"}],"id":12788,"name":"IfStatement","src":"6858:285:20"}],"id":12789,"name":"IfStatement","src":"6797:346:20"}],"id":12790,"name":"Block","src":"6710:443:20"}],"id":12791,"name":"ForStatement","src":"6682:471:20"}],"id":12792,"name":"Block","src":"6526:633:20"}],"id":12793,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12806,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12794,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":12795,"name":"VariableDeclaration","src":"7367:17:20"}],"id":12796,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12806,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12797,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":12798,"name":"VariableDeclaration","src":"7409:4:20"}],"id":12799,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":12799},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12795,"type":"struct strings.slice memory","value":"self"},"id":12800,"name":"Identifier","src":"7432:4:20"}],"id":12801,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12802,"name":"Literal","src":"7445:1:20"}],"id":12803,"name":"BinaryOperation","src":"7432:14:20"}],"id":12804,"name":"Return","src":"7425:21:20"}],"id":12805,"name":"Block","src":"7415:38:20"}],"id":12806,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12935,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12807,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":12808,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":12935,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12809,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":12810,"name":"VariableDeclaration","src":"7917:18:20"}],"id":12811,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12935,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":12812,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":12813,"name":"VariableDeclaration","src":"7960:3:20"}],"id":12814,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[12816]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":12934,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12815,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":12816,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12808,"type":"struct strings.slice memory","value":"self"},"id":12817,"name":"Identifier","src":"7991:4:20"}],"id":12818,"name":"MemberAccess","src":"7991:9:20"}],"id":12819,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12810,"type":"struct strings.slice memory","value":"other"},"id":12820,"name":"Identifier","src":"8014:5:20"}],"id":12821,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12808,"type":"struct strings.slice memory","value":"self"},"id":12822,"name":"Identifier","src":"8027:4:20"}],"id":12823,"name":"MemberAccess","src":"8027:9:20"}],"id":12824,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12816,"type":"uint256","value":"shortest"},"id":12825,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12810,"type":"struct strings.slice memory","value":"other"},"id":12826,"name":"Identifier","src":"8061:5:20"}],"id":12827,"name":"MemberAccess","src":"8061:10:20"}],"id":12828,"name":"Assignment","src":"8050:21:20"}],"id":12829,"name":"ExpressionStatement","src":"8050:21:20"}],"id":12830,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[12832]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":12934,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12831,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":12832,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12808,"type":"struct strings.slice memory","value":"self"},"id":12833,"name":"Identifier","src":"8097:4:20"}],"id":12834,"name":"MemberAccess","src":"8097:9:20"}],"id":12835,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[12837]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":12934,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12836,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":12837,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12810,"type":"struct strings.slice memory","value":"other"},"id":12838,"name":"Identifier","src":"8132:5:20"}],"id":12839,"name":"MemberAccess","src":"8132:10:20"}],"id":12840,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[12842]},"children":[{"attributes":{"constant":false,"name":"idx","scope":12923,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12841,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":12842,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12843,"name":"Literal","src":"8168:1:20"}],"id":12844,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12842,"type":"uint256","value":"idx"},"id":12845,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12816,"type":"uint256","value":"shortest"},"id":12846,"name":"Identifier","src":"8177:8:20"}],"id":12847,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12842,"type":"uint256","value":"idx"},"id":12848,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12849,"name":"Literal","src":"8194:2:20"}],"id":12850,"name":"Assignment","src":"8187:9:20"}],"id":12851,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[12853],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":12922,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12852,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":12853,"name":"VariableDeclaration","src":"8212:6:20"}],"id":12854,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[12856],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":12922,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12855,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":12856,"name":"VariableDeclaration","src":"8232:6:20"}],"id":12857,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":12853,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":12832,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":12856,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":12837,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":12858,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12853,"type":"uint256","value":"a"},"id":12859,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12856,"type":"uint256","value":"b"},"id":12860,"name":"Identifier","src":"8371:1:20"}],"id":12861,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[12863]},"children":[{"attributes":{"constant":false,"name":"mask","scope":12912,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":12862,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":12863,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":12864,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12865,"name":"Literal","src":"8477:1:20"}],"id":12866,"name":"UnaryOperation","src":"8476:2:20"}],"id":12867,"name":"FunctionCall","src":"8468:11:20"}],"id":12868,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12816,"type":"uint256","value":"shortest"},"id":12869,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12870,"name":"Literal","src":"8525:2:20"}],"id":12871,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12863,"type":"uint256","value":"mask"},"id":12872,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":12873,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":12874,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12875,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12816,"type":"uint256","value":"shortest"},"id":12876,"name":"Identifier","src":"8576:8:20"}],"id":12877,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12842,"type":"uint256","value":"idx"},"id":12878,"name":"Identifier","src":"8587:3:20"}],"id":12879,"name":"BinaryOperation","src":"8571:19:20"}],"id":12880,"name":"TupleExpression","src":"8570:21:20"}],"id":12881,"name":"BinaryOperation","src":"8566:25:20"}],"id":12882,"name":"TupleExpression","src":"8565:27:20"}],"id":12883,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12884,"name":"Literal","src":"8595:1:20"}],"id":12885,"name":"BinaryOperation","src":"8560:36:20"}],"id":12886,"name":"TupleExpression","src":"8559:38:20"}],"id":12887,"name":"UnaryOperation","src":"8558:39:20"}],"id":12888,"name":"Assignment","src":"8551:46:20"}],"id":12889,"name":"ExpressionStatement","src":"8551:46:20"}],"id":12890,"name":"Block","src":"8529:87:20"}],"id":12891,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[12893]},"children":[{"attributes":{"constant":false,"name":"diff","scope":12912,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":12892,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":12893,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12853,"type":"uint256","value":"a"},"id":12894,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12863,"type":"uint256","value":"mask"},"id":12895,"name":"Identifier","src":"8653:4:20"}],"id":12896,"name":"BinaryOperation","src":"8649:8:20"}],"id":12897,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12856,"type":"uint256","value":"b"},"id":12898,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12863,"type":"uint256","value":"mask"},"id":12899,"name":"Identifier","src":"8666:4:20"}],"id":12900,"name":"BinaryOperation","src":"8662:8:20"}],"id":12901,"name":"TupleExpression","src":"8661:10:20"}],"id":12902,"name":"BinaryOperation","src":"8648:23:20"}],"id":12903,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12893,"type":"uint256","value":"diff"},"id":12904,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12905,"name":"Literal","src":"8701:1:20"}],"id":12906,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":12814},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":12907,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12893,"type":"uint256","value":"diff"},"id":12908,"name":"Identifier","src":"8735:4:20"}],"id":12909,"name":"FunctionCall","src":"8731:9:20"}],"id":12910,"name":"Return","src":"8724:16:20"}],"id":12911,"name":"IfStatement","src":"8689:51:20"}],"id":12912,"name":"Block","src":"8374:381:20"}],"id":12913,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12832,"type":"uint256","value":"selfptr"},"id":12914,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12915,"name":"Literal","src":"8779:2:20"}],"id":12916,"name":"Assignment","src":"8768:13:20"}],"id":12917,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12837,"type":"uint256","value":"otherptr"},"id":12918,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12919,"name":"Literal","src":"8807:2:20"}],"id":12920,"name":"Assignment","src":"8795:14:20"}],"id":12921,"name":"ExpressionStatement","src":"8795:14:20"}],"id":12922,"name":"Block","src":"8198:622:20"}],"id":12923,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":12814},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":12924,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12808,"type":"struct strings.slice memory","value":"self"},"id":12925,"name":"Identifier","src":"8840:4:20"}],"id":12926,"name":"MemberAccess","src":"8840:9:20"}],"id":12927,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":12928,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12810,"type":"struct strings.slice memory","value":"other"},"id":12929,"name":"Identifier","src":"8857:5:20"}],"id":12930,"name":"MemberAccess","src":"8857:10:20"}],"id":12931,"name":"FunctionCall","src":"8853:15:20"}],"id":12932,"name":"BinaryOperation","src":"8836:32:20"}],"id":12933,"name":"Return","src":"8829:39:20"}],"id":12934,"name":"Block","src":"7965:910:20"}],"id":12935,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12952,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12936,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":12937,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":12952,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12938,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":12939,"name":"VariableDeclaration","src":"9154:18:20"}],"id":12940,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12952,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12941,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":12942,"name":"VariableDeclaration","src":"9197:4:20"}],"id":12943,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":12943},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":12935,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":12944,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12937,"type":"struct strings.slice memory","value":"self"},"id":12945,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12939,"type":"struct strings.slice memory","value":"other"},"id":12946,"name":"Identifier","src":"9234:5:20"}],"id":12947,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12948,"name":"Literal","src":"9244:1:20"}],"id":12949,"name":"BinaryOperation","src":"9220:25:20"}],"id":12950,"name":"Return","src":"9213:32:20"}],"id":12951,"name":"Block","src":"9203:49:20"}],"id":12952,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13070,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12953,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":12954,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":13070,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12955,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":12956,"name":"VariableDeclaration","src":"9582:17:20"}],"id":12957,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13070,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12958,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":12959,"name":"VariableDeclaration","src":"9624:12:20"}],"id":12960,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":12961,"name":"Identifier","src":"9648:4:20"}],"id":12963,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":12964,"name":"Identifier","src":"9660:4:20"}],"id":12965,"name":"MemberAccess","src":"9660:9:20"}],"id":12966,"name":"Assignment","src":"9648:21:20"}],"id":12967,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":12968,"name":"Identifier","src":"9684:4:20"}],"id":12969,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12970,"name":"Literal","src":"9697:1:20"}],"id":12971,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":12972,"name":"Identifier","src":"9714:4:20"}],"id":12974,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12975,"name":"Literal","src":"9726:1:20"}],"id":12976,"name":"Assignment","src":"9714:13:20"}],"id":12977,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":12960},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":12978,"name":"Identifier","src":"9748:4:20"}],"id":12979,"name":"Return","src":"9741:11:20"}],"id":12980,"name":"Block","src":"9700:63:20"}],"id":12981,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[12983],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":13069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12982,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":12983,"name":"VariableDeclaration","src":"9773:6:20"}],"id":12984,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[12986],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":13069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12985,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":12986,"name":"VariableDeclaration","src":"9789:6:20"}],"id":12987,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":12986,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":12954,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":12988,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12986,"type":"uint256","value":"b"},"id":12989,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":12990,"name":"Literal","src":"9949:4:20"}],"id":12991,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":12992,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12993,"name":"Literal","src":"9973:1:20"}],"id":12994,"name":"Assignment","src":"9969:5:20"}],"id":12995,"name":"ExpressionStatement","src":"9969:5:20"}],"id":12996,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12986,"type":"uint256","value":"b"},"id":12997,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":12998,"name":"Literal","src":"9999:4:20"}],"id":12999,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13000,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13001,"name":"Literal","src":"10023:1:20"}],"id":13002,"name":"Assignment","src":"10019:5:20"}],"id":13003,"name":"ExpressionStatement","src":"10019:5:20"}],"id":13004,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12986,"type":"uint256","value":"b"},"id":13005,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":13006,"name":"Literal","src":"10049:4:20"}],"id":13007,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13008,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":13009,"name":"Literal","src":"10073:1:20"}],"id":13010,"name":"Assignment","src":"10069:5:20"}],"id":13011,"name":"ExpressionStatement","src":"10069:5:20"}],"id":13012,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13013,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":13014,"name":"Literal","src":"10109:1:20"}],"id":13015,"name":"Assignment","src":"10105:5:20"}],"id":13016,"name":"ExpressionStatement","src":"10105:5:20"}],"id":13017,"name":"Block","src":"10091:30:20"}],"id":13018,"name":"IfStatement","src":"10041:80:20"}],"id":13019,"name":"IfStatement","src":"9991:130:20"}],"id":13020,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13021,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13022,"name":"Identifier","src":"10181:4:20"}],"id":13023,"name":"MemberAccess","src":"10181:9:20"}],"id":13024,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":13025,"name":"Identifier","src":"10206:4:20"}],"id":13027,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13028,"name":"Identifier","src":"10218:4:20"}],"id":13029,"name":"MemberAccess","src":"10218:9:20"}],"id":13030,"name":"Assignment","src":"10206:21:20"}],"id":13031,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13032,"name":"Identifier","src":"10241:4:20"}],"id":13034,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13035,"name":"Identifier","src":"10254:4:20"}],"id":13036,"name":"MemberAccess","src":"10254:9:20"}],"id":13037,"name":"Assignment","src":"10241:22:20"}],"id":13038,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13039,"name":"Identifier","src":"10277:4:20"}],"id":13041,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13042,"name":"Literal","src":"10289:1:20"}],"id":13043,"name":"Assignment","src":"10277:13:20"}],"id":13044,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":12960},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":13045,"name":"Identifier","src":"10311:4:20"}],"id":13046,"name":"Return","src":"10304:11:20"}],"id":13047,"name":"Block","src":"10192:134:20"}],"id":13048,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13049,"name":"Identifier","src":"10336:4:20"}],"id":13051,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13052,"name":"Identifier","src":"10349:1:20"}],"id":13053,"name":"Assignment","src":"10336:14:20"}],"id":13054,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13055,"name":"Identifier","src":"10360:4:20"}],"id":13057,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13058,"name":"Identifier","src":"10373:1:20"}],"id":13059,"name":"Assignment","src":"10360:14:20"}],"id":13060,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":13061,"name":"Identifier","src":"10384:4:20"}],"id":13063,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13064,"name":"Identifier","src":"10396:1:20"}],"id":13065,"name":"Assignment","src":"10384:13:20"}],"id":13066,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":12960},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":13067,"name":"Identifier","src":"10414:4:20"}],"id":13068,"name":"Return","src":"10407:11:20"}],"id":13069,"name":"Block","src":"9638:787:20"}],"id":13070,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13083,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13071,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":13072,"name":"VariableDeclaration","src":"10683:17:20"}],"id":13073,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":13083,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13074,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":13075,"name":"VariableDeclaration","src":"10725:16:20"}],"id":13076,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[13070,13083],"referencedDeclaration":13070,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":13077,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13072,"type":"struct strings.slice memory","value":"self"},"id":13078,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13075,"type":"struct strings.slice memory","value":"ret"},"id":13079,"name":"Identifier","src":"10768:3:20"}],"id":13080,"name":"FunctionCall","src":"10753:19:20"}],"id":13081,"name":"ExpressionStatement","src":"10753:19:20"}],"id":13082,"name":"Block","src":"10743:36:20"}],"id":13083,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13230,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13084,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":13085,"name":"VariableDeclaration","src":"10988:17:20"}],"id":13086,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":13230,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13087,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":13088,"name":"VariableDeclaration","src":"11030:8:20"}],"id":13089,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13085,"type":"struct strings.slice memory","value":"self"},"id":13090,"name":"Identifier","src":"11054:4:20"}],"id":13091,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13092,"name":"Literal","src":"11067:1:20"}],"id":13093,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":13089},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13094,"name":"Literal","src":"11091:1:20"}],"id":13095,"name":"Return","src":"11084:8:20"}],"id":13096,"name":"Block","src":"11070:33:20"}],"id":13097,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[13099],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":13229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13098,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":13099,"name":"VariableDeclaration","src":"11113:9:20"}],"id":13100,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[13102],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":13229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13101,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":13102,"name":"VariableDeclaration","src":"11132:11:20"}],"id":13103,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[13105]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":13229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13104,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":13105,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13106,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":13107,"name":"Literal","src":"11173:3:20"}],"id":13108,"name":"BinaryOperation","src":"11168:8:20"}],"id":13109,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":13099,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":13085,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":13110,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[13112]},"children":[{"attributes":{"constant":false,"name":"b","scope":13229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13111,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":13112,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13099,"type":"uint256","value":"word"},"id":13113,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13105,"type":"uint256","value":"divisor"},"id":13114,"name":"Identifier","src":"11303:7:20"}],"id":13115,"name":"BinaryOperation","src":"11296:14:20"}],"id":13116,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13117,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":13118,"name":"Literal","src":"11328:4:20"}],"id":13119,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13120,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13121,"name":"Identifier","src":"11354:1:20"}],"id":13122,"name":"Assignment","src":"11348:7:20"}],"id":13123,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13124,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13125,"name":"Literal","src":"11378:1:20"}],"id":13126,"name":"Assignment","src":"11369:10:20"}],"id":13127,"name":"ExpressionStatement","src":"11369:10:20"}],"id":13128,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13129,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":13130,"name":"Literal","src":"11404:4:20"}],"id":13131,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13132,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13133,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":13134,"name":"Literal","src":"11434:4:20"}],"id":13135,"name":"BinaryOperation","src":"11430:8:20"}],"id":13136,"name":"Assignment","src":"11424:14:20"}],"id":13137,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13138,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13139,"name":"Literal","src":"11461:1:20"}],"id":13140,"name":"Assignment","src":"11452:10:20"}],"id":13141,"name":"ExpressionStatement","src":"11452:10:20"}],"id":13142,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13143,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":13144,"name":"Literal","src":"11487:4:20"}],"id":13145,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13146,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13147,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":13148,"name":"Literal","src":"11517:4:20"}],"id":13149,"name":"BinaryOperation","src":"11513:8:20"}],"id":13150,"name":"Assignment","src":"11507:14:20"}],"id":13151,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13152,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":13153,"name":"Literal","src":"11544:1:20"}],"id":13154,"name":"Assignment","src":"11535:10:20"}],"id":13155,"name":"ExpressionStatement","src":"11535:10:20"}],"id":13156,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13157,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13158,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":13159,"name":"Literal","src":"11586:4:20"}],"id":13160,"name":"BinaryOperation","src":"11582:8:20"}],"id":13161,"name":"Assignment","src":"11576:14:20"}],"id":13162,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13163,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":13164,"name":"Literal","src":"11613:1:20"}],"id":13165,"name":"Assignment","src":"11604:10:20"}],"id":13166,"name":"ExpressionStatement","src":"11604:10:20"}],"id":13167,"name":"Block","src":"11562:63:20"}],"id":13168,"name":"IfStatement","src":"11479:146:20"}],"id":13169,"name":"IfStatement","src":"11396:229:20"}],"id":13170,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13171,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13085,"type":"struct strings.slice memory","value":"self"},"id":13172,"name":"Identifier","src":"11690:4:20"}],"id":13173,"name":"MemberAccess","src":"11690:9:20"}],"id":13174,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":13089},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13175,"name":"Literal","src":"11722:1:20"}],"id":13176,"name":"Return","src":"11715:8:20"}],"id":13177,"name":"Block","src":"11701:33:20"}],"id":13178,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[13180]},"children":[{"attributes":{"constant":false,"name":"i","scope":13226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13179,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":13180,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13181,"name":"Literal","src":"11758:1:20"}],"id":13182,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13180,"type":"uint256","value":"i"},"id":13183,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13184,"name":"Identifier","src":"11765:6:20"}],"id":13185,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13180,"type":"uint256","value":"i"},"id":13186,"name":"Identifier","src":"11773:1:20"}],"id":13187,"name":"UnaryOperation","src":"11773:3:20"}],"id":13188,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13105,"type":"uint256","value":"divisor"},"id":13189,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13105,"type":"uint256","value":"divisor"},"id":13190,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":13191,"name":"Literal","src":"11812:3:20"}],"id":13192,"name":"BinaryOperation","src":"11802:13:20"}],"id":13193,"name":"Assignment","src":"11792:23:20"}],"id":13194,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13195,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13099,"type":"uint256","value":"word"},"id":13196,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13105,"type":"uint256","value":"divisor"},"id":13197,"name":"Identifier","src":"11841:7:20"}],"id":13198,"name":"BinaryOperation","src":"11834:14:20"}],"id":13199,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":13200,"name":"Literal","src":"11852:4:20"}],"id":13201,"name":"BinaryOperation","src":"11833:23:20"}],"id":13202,"name":"Assignment","src":"11829:27:20"}],"id":13203,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13204,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":13205,"name":"Literal","src":"11878:4:20"}],"id":13206,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":13207,"name":"Literal","src":"11886:4:20"}],"id":13208,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":13089},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13209,"name":"Literal","src":"11959:1:20"}],"id":13210,"name":"Return","src":"11952:8:20"}],"id":13211,"name":"Block","src":"11892:83:20"}],"id":13212,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13213,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13214,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":13215,"name":"Literal","src":"12001:2:20"}],"id":13216,"name":"BinaryOperation","src":"11995:8:20"}],"id":13217,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13218,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":13219,"name":"Literal","src":"12012:4:20"}],"id":13220,"name":"BinaryOperation","src":"12008:8:20"}],"id":13221,"name":"TupleExpression","src":"12007:10:20"}],"id":13222,"name":"BinaryOperation","src":"11994:23:20"}],"id":13223,"name":"Assignment","src":"11988:29:20"}],"id":13224,"name":"ExpressionStatement","src":"11988:29:20"}],"id":13225,"name":"Block","src":"11778:250:20"}],"id":13226,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":13089},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13227,"name":"Identifier","src":"12045:3:20"}],"id":13228,"name":"Return","src":"12038:10:20"}],"id":13229,"name":"Block","src":"11040:1015:20"}],"id":13230,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13239,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13231,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":13232,"name":"VariableDeclaration","src":"12222:17:20"}],"id":13233,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":13239,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13234,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":13235,"name":"VariableDeclaration","src":"12264:11:20"}],"id":13236,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":13235,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":13232,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":13232,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":13237,"name":"InlineAssembly","src":"12287:84:20"}],"id":13238,"name":"Block","src":"12277:100:20"}],"id":13239,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13240,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":13241,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13242,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":13243,"name":"VariableDeclaration","src":"12665:19:20"}],"id":13244,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13273,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13245,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":13246,"name":"VariableDeclaration","src":"12709:4:20"}],"id":13247,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13241,"type":"struct strings.slice memory","value":"self"},"id":13248,"name":"Identifier","src":"12729:4:20"}],"id":13249,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13243,"type":"struct strings.slice memory","value":"needle"},"id":13250,"name":"Identifier","src":"12741:6:20"}],"id":13251,"name":"MemberAccess","src":"12741:11:20"}],"id":13252,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":13247},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":13253,"name":"Literal","src":"12775:5:20"}],"id":13254,"name":"Return","src":"12768:12:20"}],"id":13255,"name":"Block","src":"12754:37:20"}],"id":13256,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13241,"type":"struct strings.slice memory","value":"self"},"id":13257,"name":"Identifier","src":"12805:4:20"}],"id":13258,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13243,"type":"struct strings.slice memory","value":"needle"},"id":13259,"name":"Identifier","src":"12818:6:20"}],"id":13260,"name":"MemberAccess","src":"12818:11:20"}],"id":13261,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":13247},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":13262,"name":"Literal","src":"12852:4:20"}],"id":13263,"name":"Return","src":"12845:11:20"}],"id":13264,"name":"Block","src":"12831:36:20"}],"id":13265,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[13267],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":13272,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13266,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":13267,"name":"VariableDeclaration","src":"12877:10:20"}],"id":13268,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":13243,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":13241,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":13267,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":13243,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":13269,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":13247},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13267,"type":"bool","value":"equal"},"id":13270,"name":"Identifier","src":"13159:5:20"}],"id":13271,"name":"Return","src":"13152:12:20"}],"id":13272,"name":"Block","src":"12715:456:20"}],"id":13273,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13323,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13274,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":13275,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13323,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13276,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":13277,"name":"VariableDeclaration","src":"13478:19:20"}],"id":13278,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13323,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13279,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":13280,"name":"VariableDeclaration","src":"13522:12:20"}],"id":13281,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13282,"name":"Identifier","src":"13550:4:20"}],"id":13283,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13277,"type":"struct strings.slice memory","value":"needle"},"id":13284,"name":"Identifier","src":"13562:6:20"}],"id":13285,"name":"MemberAccess","src":"13562:11:20"}],"id":13286,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":13281},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13287,"name":"Identifier","src":"13596:4:20"}],"id":13288,"name":"Return","src":"13589:11:20"}],"id":13289,"name":"Block","src":"13575:36:20"}],"id":13290,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[13292]},"children":[{"attributes":{"constant":false,"name":"equal","scope":13322,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13291,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":13292,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":13293,"name":"Literal","src":"13634:4:20"}],"id":13294,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13295,"name":"Identifier","src":"13652:4:20"}],"id":13296,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13277,"type":"struct strings.slice memory","value":"needle"},"id":13297,"name":"Identifier","src":"13665:6:20"}],"id":13298,"name":"MemberAccess","src":"13665:11:20"}],"id":13299,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":13277,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":13275,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"needle":{"declaration":13277,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}},{"equal":{"declaration":13292,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":13300,"name":"InlineAssembly","src":"13692:266:20"}],"id":13301,"name":"Block","src":"13678:290:20"}],"id":13302,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13292,"type":"bool","value":"equal"},"id":13303,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13304,"name":"Identifier","src":"14003:4:20"}],"id":13306,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13277,"type":"struct strings.slice memory","value":"needle"},"id":13307,"name":"Identifier","src":"14016:6:20"}],"id":13308,"name":"MemberAccess","src":"14016:11:20"}],"id":13309,"name":"Assignment","src":"14003:24:20"}],"id":13310,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13311,"name":"Identifier","src":"14041:4:20"}],"id":13313,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13277,"type":"struct strings.slice memory","value":"needle"},"id":13314,"name":"Identifier","src":"14054:6:20"}],"id":13315,"name":"MemberAccess","src":"14054:11:20"}],"id":13316,"name":"Assignment","src":"14041:24:20"}],"id":13317,"name":"ExpressionStatement","src":"14041:24:20"}],"id":13318,"name":"Block","src":"13989:87:20"}],"id":13319,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":13281},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13320,"name":"Identifier","src":"14093:4:20"}],"id":13321,"name":"Return","src":"14086:11:20"}],"id":13322,"name":"Block","src":"13536:568:20"}],"id":13323,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13367,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13324,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":13325,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13367,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13326,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":13327,"name":"VariableDeclaration","src":"14391:19:20"}],"id":13328,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13367,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13329,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":13330,"name":"VariableDeclaration","src":"14435:4:20"}],"id":13331,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13325,"type":"struct strings.slice memory","value":"self"},"id":13332,"name":"Identifier","src":"14455:4:20"}],"id":13333,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13327,"type":"struct strings.slice memory","value":"needle"},"id":13334,"name":"Identifier","src":"14467:6:20"}],"id":13335,"name":"MemberAccess","src":"14467:11:20"}],"id":13336,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":13331},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":13337,"name":"Literal","src":"14501:5:20"}],"id":13338,"name":"Return","src":"14494:12:20"}],"id":13339,"name":"Block","src":"14480:37:20"}],"id":13340,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[13342]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":13366,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13341,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":13342,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13325,"type":"struct strings.slice memory","value":"self"},"id":13343,"name":"Identifier","src":"14542:4:20"}],"id":13344,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13325,"type":"struct strings.slice memory","value":"self"},"id":13345,"name":"Identifier","src":"14554:4:20"}],"id":13346,"name":"MemberAccess","src":"14554:9:20"}],"id":13347,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13327,"type":"struct strings.slice memory","value":"needle"},"id":13348,"name":"Identifier","src":"14566:6:20"}],"id":13349,"name":"MemberAccess","src":"14566:11:20"}],"id":13350,"name":"BinaryOperation","src":"14542:35:20"}],"id":13351,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13342,"type":"uint256","value":"selfptr"},"id":13352,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13327,"type":"struct strings.slice memory","value":"needle"},"id":13353,"name":"Identifier","src":"14603:6:20"}],"id":13354,"name":"MemberAccess","src":"14603:11:20"}],"id":13355,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":13331},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":13356,"name":"Literal","src":"14637:4:20"}],"id":13357,"name":"Return","src":"14630:11:20"}],"id":13358,"name":"Block","src":"14616:36:20"}],"id":13359,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[13361],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":13366,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13360,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":13361,"name":"VariableDeclaration","src":"14662:10:20"}],"id":13362,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":13327,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":13361,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":13327,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":13342,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":13363,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":13331},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13361,"type":"bool","value":"equal"},"id":13364,"name":"Identifier","src":"14895:5:20"}],"id":13365,"name":"Return","src":"14888:12:20"}],"id":13366,"name":"Block","src":"14441:466:20"}],"id":13367,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13420,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13368,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":13369,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13420,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13370,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":13371,"name":"VariableDeclaration","src":"15205:19:20"}],"id":13372,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13420,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13373,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":13374,"name":"VariableDeclaration","src":"15249:12:20"}],"id":13375,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13376,"name":"Identifier","src":"15277:4:20"}],"id":13377,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13371,"type":"struct strings.slice memory","value":"needle"},"id":13378,"name":"Identifier","src":"15289:6:20"}],"id":13379,"name":"MemberAccess","src":"15289:11:20"}],"id":13380,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":13375},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13381,"name":"Identifier","src":"15323:4:20"}],"id":13382,"name":"Return","src":"15316:11:20"}],"id":13383,"name":"Block","src":"15302:36:20"}],"id":13384,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[13386]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":13419,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13385,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":13386,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13387,"name":"Identifier","src":"15363:4:20"}],"id":13388,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13389,"name":"Identifier","src":"15375:4:20"}],"id":13390,"name":"MemberAccess","src":"15375:9:20"}],"id":13391,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13371,"type":"struct strings.slice memory","value":"needle"},"id":13392,"name":"Identifier","src":"15387:6:20"}],"id":13393,"name":"MemberAccess","src":"15387:11:20"}],"id":13394,"name":"BinaryOperation","src":"15363:35:20"}],"id":13395,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[13397]},"children":[{"attributes":{"constant":false,"name":"equal","scope":13419,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13396,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":13397,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":13398,"name":"Literal","src":"15421:4:20"}],"id":13399,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13386,"type":"uint256","value":"selfptr"},"id":13400,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13371,"type":"struct strings.slice memory","value":"needle"},"id":13401,"name":"Identifier","src":"15450:6:20"}],"id":13402,"name":"MemberAccess","src":"15450:11:20"}],"id":13403,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":13371,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":13397,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":13371,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":13386,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":13404,"name":"InlineAssembly","src":"15477:212:20"}],"id":13405,"name":"Block","src":"15463:236:20"}],"id":13406,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13397,"type":"bool","value":"equal"},"id":13407,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13408,"name":"Identifier","src":"15734:4:20"}],"id":13410,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13371,"type":"struct strings.slice memory","value":"needle"},"id":13411,"name":"Identifier","src":"15747:6:20"}],"id":13412,"name":"MemberAccess","src":"15747:11:20"}],"id":13413,"name":"Assignment","src":"15734:24:20"}],"id":13414,"name":"ExpressionStatement","src":"15734:24:20"}],"id":13415,"name":"Block","src":"15720:49:20"}],"id":13416,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":13375},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13417,"name":"Identifier","src":"15786:4:20"}],"id":13418,"name":"Return","src":"15779:11:20"}],"id":13419,"name":"Block","src":"15263:534:20"}],"id":13420,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13421,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":13422,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13423,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":13424,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13425,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":13426,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13427,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":13428,"name":"VariableDeclaration","src":"16015:14:20"}],"id":13429,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13430,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":13431,"name":"VariableDeclaration","src":"16053:4:20"}],"id":13432,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[13434]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13433,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":13434,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13424,"type":"uint256","value":"selfptr"},"id":13435,"name":"Identifier","src":"16080:7:20"}],"id":13436,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[13438],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":13540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13437,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":13438,"name":"VariableDeclaration","src":"16097:8:20"}],"id":13439,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13440,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13441,"name":"Identifier","src":"16133:7:20"}],"id":13442,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13443,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":13444,"name":"Literal","src":"16173:2:20"}],"id":13445,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[13447]},"children":[{"attributes":{"constant":false,"name":"mask","scope":13499,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13446,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":13447,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":13448,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13449,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":13450,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":13451,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13452,"name":"Identifier","src":"16236:9:20"}],"id":13453,"name":"BinaryOperation","src":"16231:14:20"}],"id":13454,"name":"TupleExpression","src":"16230:16:20"}],"id":13455,"name":"BinaryOperation","src":"16226:20:20"}],"id":13456,"name":"TupleExpression","src":"16225:22:20"}],"id":13457,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13458,"name":"Literal","src":"16250:1:20"}],"id":13459,"name":"BinaryOperation","src":"16220:31:20"}],"id":13460,"name":"TupleExpression","src":"16219:33:20"}],"id":13461,"name":"UnaryOperation","src":"16218:34:20"}],"id":13462,"name":"FunctionCall","src":"16210:43:20"}],"id":13463,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[13465],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":13499,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13464,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":13465,"name":"VariableDeclaration","src":"16272:18:20"}],"id":13466,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":13465,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":13428,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":13447,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":13467,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[13469]},"children":[{"attributes":{"constant":false,"name":"end","scope":13499,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13468,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":13469,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13424,"type":"uint256","value":"selfptr"},"id":13470,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13471,"name":"Identifier","src":"16401:7:20"}],"id":13472,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13473,"name":"Identifier","src":"16411:9:20"}],"id":13474,"name":"BinaryOperation","src":"16391:29:20"}],"id":13475,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[13477],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":13499,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13476,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":13477,"name":"VariableDeclaration","src":"16438:15:20"}],"id":13478,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":13477,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":13434,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":13447,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":13479,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13477,"type":"bytes32","value":"ptrdata"},"id":13480,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13465,"type":"bytes32","value":"needledata"},"id":13481,"name":"Identifier","src":"16552:10:20"}],"id":13482,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13483,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13469,"type":"uint256","value":"end"},"id":13484,"name":"Identifier","src":"16597:3:20"}],"id":13485,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":13432},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13424,"type":"uint256","value":"selfptr"},"id":13486,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13487,"name":"Identifier","src":"16643:7:20"}],"id":13488,"name":"BinaryOperation","src":"16633:17:20"}],"id":13489,"name":"Return","src":"16626:24:20"}],"id":13490,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13491,"name":"Identifier","src":"16672:3:20"}],"id":13492,"name":"UnaryOperation","src":"16672:5:20"}],"id":13493,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":13477,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":13434,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":13447,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":13494,"name":"InlineAssembly","src":"16699:45:20"}],"id":13495,"name":"Block","src":"16564:198:20"}],"id":13496,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":13432},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13497,"name":"Identifier","src":"16786:3:20"}],"id":13498,"name":"Return","src":"16779:10:20"}],"id":13499,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[13501],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":13532,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13500,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":13501,"name":"VariableDeclaration","src":"16877:12:20"}],"id":13502,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":13501,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":13428,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":13426,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":13503,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13438,"type":"uint256","value":"idx"},"id":13504,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13505,"name":"Literal","src":"16988:1:20"}],"id":13506,"name":"Assignment","src":"16982:7:20"}],"id":13507,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13438,"type":"uint256","value":"idx"},"id":13508,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13509,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13510,"name":"Identifier","src":"17008:9:20"}],"id":13511,"name":"BinaryOperation","src":"16998:19:20"}],"id":13512,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13438,"type":"uint256","value":"idx"},"id":13513,"name":"Identifier","src":"17019:3:20"}],"id":13514,"name":"UnaryOperation","src":"17019:5:20"}],"id":13515,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[13517],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":13530,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13516,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":13517,"name":"VariableDeclaration","src":"17048:16:20"}],"id":13518,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":13517,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":13434,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":13426,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":13519,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13501,"type":"bytes32","value":"hash"},"id":13520,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13517,"type":"bytes32","value":"testHash"},"id":13521,"name":"Identifier","src":"17169:8:20"}],"id":13522,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":13432},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13523,"name":"Identifier","src":"17210:3:20"}],"id":13524,"name":"Return","src":"17203:10:20"}],"id":13525,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13526,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13527,"name":"Literal","src":"17242:1:20"}],"id":13528,"name":"Assignment","src":"17235:8:20"}],"id":13529,"name":"ExpressionStatement","src":"17235:8:20"}],"id":13530,"name":"Block","src":"17026:236:20"}],"id":13531,"name":"ForStatement","src":"16977:285:20"}],"id":13532,"name":"Block","src":"16810:466:20"}],"id":13533,"name":"IfStatement","src":"16156:1120:20"}],"id":13534,"name":"Block","src":"16142:1144:20"}],"id":13535,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":13432},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13424,"type":"uint256","value":"selfptr"},"id":13536,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13537,"name":"Identifier","src":"17312:7:20"}],"id":13538,"name":"BinaryOperation","src":"17302:17:20"}],"id":13539,"name":"Return","src":"17295:24:20"}],"id":13540,"name":"Block","src":"16059:1267:20"}],"id":13541,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13542,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":13543,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13544,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":13545,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13546,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":13547,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13548,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":13549,"name":"VariableDeclaration","src":"17541:14:20"}],"id":13550,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13551,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":13552,"name":"VariableDeclaration","src":"17579:4:20"}],"id":13553,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[13555],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13657,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13554,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":13555,"name":"VariableDeclaration","src":"17595:8:20"}],"id":13556,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13557,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13543,"type":"uint256","value":"selflen"},"id":13558,"name":"Identifier","src":"17631:7:20"}],"id":13559,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13560,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":13561,"name":"Literal","src":"17671:2:20"}],"id":13562,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[13564]},"children":[{"attributes":{"constant":false,"name":"mask","scope":13616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13563,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":13564,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":13565,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13566,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":13567,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":13568,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13569,"name":"Identifier","src":"17734:9:20"}],"id":13570,"name":"BinaryOperation","src":"17729:14:20"}],"id":13571,"name":"TupleExpression","src":"17728:16:20"}],"id":13572,"name":"BinaryOperation","src":"17724:20:20"}],"id":13573,"name":"TupleExpression","src":"17723:22:20"}],"id":13574,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13575,"name":"Literal","src":"17748:1:20"}],"id":13576,"name":"BinaryOperation","src":"17718:31:20"}],"id":13577,"name":"TupleExpression","src":"17717:33:20"}],"id":13578,"name":"UnaryOperation","src":"17716:34:20"}],"id":13579,"name":"FunctionCall","src":"17708:43:20"}],"id":13580,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[13582],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":13616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13581,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":13582,"name":"VariableDeclaration","src":"17770:18:20"}],"id":13583,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":13582,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":13549,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":13564,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":13584,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13585,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13586,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13543,"type":"uint256","value":"selflen"},"id":13587,"name":"Identifier","src":"17894:7:20"}],"id":13588,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13589,"name":"Identifier","src":"17904:9:20"}],"id":13590,"name":"BinaryOperation","src":"17884:29:20"}],"id":13591,"name":"Assignment","src":"17878:35:20"}],"id":13592,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[13594],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":13616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13593,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":13594,"name":"VariableDeclaration","src":"17931:15:20"}],"id":13595,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":13594,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":13555,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":13564,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":13596,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13594,"type":"bytes32","value":"ptrdata"},"id":13597,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13582,"type":"bytes32","value":"needledata"},"id":13598,"name":"Identifier","src":"18045:10:20"}],"id":13599,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13600,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13601,"name":"Identifier","src":"18090:7:20"}],"id":13602,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":13553},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13603,"name":"Identifier","src":"18130:7:20"}],"id":13604,"name":"Return","src":"18123:14:20"}],"id":13605,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13606,"name":"Identifier","src":"18159:3:20"}],"id":13607,"name":"UnaryOperation","src":"18159:5:20"}],"id":13608,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":13594,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":13555,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":13564,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":13609,"name":"InlineAssembly","src":"18186:45:20"}],"id":13610,"name":"Block","src":"18057:192:20"}],"id":13611,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":13553},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13612,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13613,"name":"Identifier","src":"18279:9:20"}],"id":13614,"name":"BinaryOperation","src":"18273:15:20"}],"id":13615,"name":"Return","src":"18266:22:20"}],"id":13616,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[13618],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":13651,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13617,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":13618,"name":"VariableDeclaration","src":"18376:12:20"}],"id":13619,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":13618,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":13549,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":13547,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":13620,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13621,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13622,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13543,"type":"uint256","value":"selflen"},"id":13623,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13624,"name":"Identifier","src":"18502:9:20"}],"id":13625,"name":"BinaryOperation","src":"18492:19:20"}],"id":13626,"name":"TupleExpression","src":"18491:21:20"}],"id":13627,"name":"BinaryOperation","src":"18481:31:20"}],"id":13628,"name":"Assignment","src":"18475:37:20"}],"id":13629,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13630,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13631,"name":"Identifier","src":"18544:7:20"}],"id":13632,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[13634],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":13649,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13633,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":13634,"name":"VariableDeclaration","src":"18575:16:20"}],"id":13635,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":13634,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":13555,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":13547,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":13636,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13618,"type":"bytes32","value":"hash"},"id":13637,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13634,"type":"bytes32","value":"testHash"},"id":13638,"name":"Identifier","src":"18696:8:20"}],"id":13639,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":13553},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13640,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13641,"name":"Identifier","src":"18743:9:20"}],"id":13642,"name":"BinaryOperation","src":"18737:15:20"}],"id":13643,"name":"Return","src":"18730:22:20"}],"id":13644,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13645,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13646,"name":"Literal","src":"18781:1:20"}],"id":13647,"name":"Assignment","src":"18774:8:20"}],"id":13648,"name":"ExpressionStatement","src":"18774:8:20"}],"id":13649,"name":"Block","src":"18553:248:20"}],"id":13650,"name":"WhileStatement","src":"18530:271:20"}],"id":13651,"name":"Block","src":"18309:506:20"}],"id":13652,"name":"IfStatement","src":"17654:1161:20"}],"id":13653,"name":"Block","src":"17640:1185:20"}],"id":13654,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":13553},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13655,"name":"Identifier","src":"18841:7:20"}],"id":13656,"name":"Return","src":"18834:14:20"}],"id":13657,"name":"Block","src":"17585:1270:20"}],"id":13658,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13698,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13659,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":13660,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13698,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13661,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":13662,"name":"VariableDeclaration","src":"19224:19:20"}],"id":13663,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13698,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13664,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":13665,"name":"VariableDeclaration","src":"19268:12:20"}],"id":13666,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[13668]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13697,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13667,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":13668,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13541,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":13669,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13670,"name":"Identifier","src":"19311:4:20"}],"id":13671,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13672,"name":"Identifier","src":"19322:4:20"}],"id":13673,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13662,"type":"struct strings.slice memory","value":"needle"},"id":13674,"name":"Identifier","src":"19333:6:20"}],"id":13675,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13662,"type":"struct strings.slice memory","value":"needle"},"id":13676,"name":"Identifier","src":"19346:6:20"}],"id":13677,"name":"MemberAccess","src":"19346:11:20"}],"id":13678,"name":"FunctionCall","src":"19303:55:20"}],"id":13679,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13680,"name":"Identifier","src":"19368:4:20"}],"id":13682,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13668,"type":"uint256","value":"ptr"},"id":13683,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13684,"name":"Identifier","src":"19387:4:20"}],"id":13685,"name":"MemberAccess","src":"19387:9:20"}],"id":13686,"name":"BinaryOperation","src":"19381:15:20"}],"id":13687,"name":"Assignment","src":"19368:28:20"}],"id":13688,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13689,"name":"Identifier","src":"19406:4:20"}],"id":13691,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13668,"type":"uint256","value":"ptr"},"id":13692,"name":"Identifier","src":"19418:3:20"}],"id":13693,"name":"Assignment","src":"19406:15:20"}],"id":13694,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":13666},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13695,"name":"Identifier","src":"19438:4:20"}],"id":13696,"name":"Return","src":"19431:11:20"}],"id":13697,"name":"Block","src":"19282:167:20"}],"id":13698,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13732,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13699,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":13700,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13732,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13701,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":13702,"name":"VariableDeclaration","src":"19842:19:20"}],"id":13703,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13732,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13704,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":13705,"name":"VariableDeclaration","src":"19886:12:20"}],"id":13706,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[13708]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13731,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13707,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":13708,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13658,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":13709,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13710,"name":"Identifier","src":"19930:4:20"}],"id":13711,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13712,"name":"Identifier","src":"19941:4:20"}],"id":13713,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13702,"type":"struct strings.slice memory","value":"needle"},"id":13714,"name":"Identifier","src":"19952:6:20"}],"id":13715,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13702,"type":"struct strings.slice memory","value":"needle"},"id":13716,"name":"Identifier","src":"19965:6:20"}],"id":13717,"name":"MemberAccess","src":"19965:11:20"}],"id":13718,"name":"FunctionCall","src":"19921:56:20"}],"id":13719,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13720,"name":"Identifier","src":"19987:4:20"}],"id":13722,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13708,"type":"uint256","value":"ptr"},"id":13723,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13724,"name":"Identifier","src":"20005:4:20"}],"id":13725,"name":"MemberAccess","src":"20005:9:20"}],"id":13726,"name":"BinaryOperation","src":"19999:15:20"}],"id":13727,"name":"Assignment","src":"19987:27:20"}],"id":13728,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":13706},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13729,"name":"Identifier","src":"20031:4:20"}],"id":13730,"name":"Return","src":"20024:11:20"}],"id":13731,"name":"Block","src":"19900:142:20"}],"id":13732,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13810,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13733,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":13734,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13810,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13735,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":13736,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":13810,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13737,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":13738,"name":"VariableDeclaration","src":"20603:18:20"}],"id":13739,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13810,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13740,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":13741,"name":"VariableDeclaration","src":"20646:12:20"}],"id":13742,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[13744]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13809,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13743,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":13744,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13541,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":13745,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13746,"name":"Identifier","src":"20689:4:20"}],"id":13747,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13748,"name":"Identifier","src":"20700:4:20"}],"id":13749,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13736,"type":"struct strings.slice memory","value":"needle"},"id":13750,"name":"Identifier","src":"20711:6:20"}],"id":13751,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13736,"type":"struct strings.slice memory","value":"needle"},"id":13752,"name":"Identifier","src":"20724:6:20"}],"id":13753,"name":"MemberAccess","src":"20724:11:20"}],"id":13754,"name":"FunctionCall","src":"20681:55:20"}],"id":13755,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13738,"type":"struct strings.slice memory","value":"token"},"id":13756,"name":"Identifier","src":"20746:5:20"}],"id":13758,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13759,"name":"Identifier","src":"20759:4:20"}],"id":13760,"name":"MemberAccess","src":"20759:9:20"}],"id":13761,"name":"Assignment","src":"20746:22:20"}],"id":13762,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13738,"type":"struct strings.slice memory","value":"token"},"id":13763,"name":"Identifier","src":"20778:5:20"}],"id":13765,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13744,"type":"uint256","value":"ptr"},"id":13766,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13767,"name":"Identifier","src":"20797:4:20"}],"id":13768,"name":"MemberAccess","src":"20797:9:20"}],"id":13769,"name":"BinaryOperation","src":"20791:15:20"}],"id":13770,"name":"Assignment","src":"20778:28:20"}],"id":13771,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13744,"type":"uint256","value":"ptr"},"id":13772,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13773,"name":"Identifier","src":"20827:4:20"}],"id":13774,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13775,"name":"Identifier","src":"20839:4:20"}],"id":13776,"name":"MemberAccess","src":"20839:9:20"}],"id":13777,"name":"BinaryOperation","src":"20827:21:20"}],"id":13778,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13779,"name":"Identifier","src":"20889:4:20"}],"id":13781,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13782,"name":"Literal","src":"20901:1:20"}],"id":13783,"name":"Assignment","src":"20889:13:20"}],"id":13784,"name":"ExpressionStatement","src":"20889:13:20"}],"id":13785,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13786,"name":"Identifier","src":"20933:4:20"}],"id":13788,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13738,"type":"struct strings.slice memory","value":"token"},"id":13789,"name":"Identifier","src":"20946:5:20"}],"id":13790,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13736,"type":"struct strings.slice memory","value":"needle"},"id":13791,"name":"Identifier","src":"20959:6:20"}],"id":13792,"name":"MemberAccess","src":"20959:11:20"}],"id":13793,"name":"BinaryOperation","src":"20946:24:20"}],"id":13794,"name":"Assignment","src":"20933:37:20"}],"id":13795,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13796,"name":"Identifier","src":"20984:4:20"}],"id":13798,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13744,"type":"uint256","value":"ptr"},"id":13799,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13736,"type":"struct strings.slice memory","value":"needle"},"id":13800,"name":"Identifier","src":"21002:6:20"}],"id":13801,"name":"MemberAccess","src":"21002:11:20"}],"id":13802,"name":"BinaryOperation","src":"20996:17:20"}],"id":13803,"name":"Assignment","src":"20984:29:20"}],"id":13804,"name":"ExpressionStatement","src":"20984:29:20"}],"id":13805,"name":"Block","src":"20919:105:20"}],"id":13806,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":13742},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13738,"type":"struct strings.slice memory","value":"token"},"id":13807,"name":"Identifier","src":"21040:5:20"}],"id":13808,"name":"Return","src":"21033:12:20"}],"id":13809,"name":"Block","src":"20660:392:20"}],"id":13810,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13826,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13811,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":13812,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13826,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13813,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":13814,"name":"VariableDeclaration","src":"21557:19:20"}],"id":13815,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":13826,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13816,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":13817,"name":"VariableDeclaration","src":"21601:18:20"}],"id":13818,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[13810,13826],"referencedDeclaration":13810,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":13819,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13812,"type":"struct strings.slice memory","value":"self"},"id":13820,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13814,"type":"struct strings.slice memory","value":"needle"},"id":13821,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13817,"type":"struct strings.slice memory","value":"token"},"id":13822,"name":"Identifier","src":"21651:5:20"}],"id":13823,"name":"FunctionCall","src":"21631:26:20"}],"id":13824,"name":"ExpressionStatement","src":"21631:26:20"}],"id":13825,"name":"Block","src":"21621:43:20"}],"id":13826,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13895,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13827,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":13828,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13895,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13829,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":13830,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":13895,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13831,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":13832,"name":"VariableDeclaration","src":"22225:18:20"}],"id":13833,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13895,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13834,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":13835,"name":"VariableDeclaration","src":"22268:12:20"}],"id":13836,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[13838]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13837,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":13838,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13658,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":13839,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13840,"name":"Identifier","src":"22312:4:20"}],"id":13841,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13842,"name":"Identifier","src":"22323:4:20"}],"id":13843,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13830,"type":"struct strings.slice memory","value":"needle"},"id":13844,"name":"Identifier","src":"22334:6:20"}],"id":13845,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13830,"type":"struct strings.slice memory","value":"needle"},"id":13846,"name":"Identifier","src":"22347:6:20"}],"id":13847,"name":"MemberAccess","src":"22347:11:20"}],"id":13848,"name":"FunctionCall","src":"22303:56:20"}],"id":13849,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13832,"type":"struct strings.slice memory","value":"token"},"id":13850,"name":"Identifier","src":"22369:5:20"}],"id":13852,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13838,"type":"uint256","value":"ptr"},"id":13853,"name":"Identifier","src":"22382:3:20"}],"id":13854,"name":"Assignment","src":"22369:16:20"}],"id":13855,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13832,"type":"struct strings.slice memory","value":"token"},"id":13856,"name":"Identifier","src":"22395:5:20"}],"id":13858,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13859,"name":"Identifier","src":"22408:4:20"}],"id":13860,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13838,"type":"uint256","value":"ptr"},"id":13861,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13862,"name":"Identifier","src":"22427:4:20"}],"id":13863,"name":"MemberAccess","src":"22427:9:20"}],"id":13864,"name":"BinaryOperation","src":"22421:15:20"}],"id":13865,"name":"TupleExpression","src":"22420:17:20"}],"id":13866,"name":"BinaryOperation","src":"22408:29:20"}],"id":13867,"name":"Assignment","src":"22395:42:20"}],"id":13868,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13838,"type":"uint256","value":"ptr"},"id":13869,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13870,"name":"Identifier","src":"22458:4:20"}],"id":13871,"name":"MemberAccess","src":"22458:9:20"}],"id":13872,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13873,"name":"Identifier","src":"22508:4:20"}],"id":13875,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13876,"name":"Literal","src":"22520:1:20"}],"id":13877,"name":"Assignment","src":"22508:13:20"}],"id":13878,"name":"ExpressionStatement","src":"22508:13:20"}],"id":13879,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13880,"name":"Identifier","src":"22552:4:20"}],"id":13882,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13832,"type":"struct strings.slice memory","value":"token"},"id":13883,"name":"Identifier","src":"22565:5:20"}],"id":13884,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13830,"type":"struct strings.slice memory","value":"needle"},"id":13885,"name":"Identifier","src":"22578:6:20"}],"id":13886,"name":"MemberAccess","src":"22578:11:20"}],"id":13887,"name":"BinaryOperation","src":"22565:24:20"}],"id":13888,"name":"Assignment","src":"22552:37:20"}],"id":13889,"name":"ExpressionStatement","src":"22552:37:20"}],"id":13890,"name":"Block","src":"22538:62:20"}],"id":13891,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":13836},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13832,"type":"struct strings.slice memory","value":"token"},"id":13892,"name":"Identifier","src":"22616:5:20"}],"id":13893,"name":"Return","src":"22609:12:20"}],"id":13894,"name":"Block","src":"22282:346:20"}],"id":13895,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13911,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13896,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":13897,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13911,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13898,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":13899,"name":"VariableDeclaration","src":"23132:19:20"}],"id":13900,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":13911,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13901,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":13902,"name":"VariableDeclaration","src":"23176:18:20"}],"id":13903,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[13895,13911],"referencedDeclaration":13895,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":13904,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13897,"type":"struct strings.slice memory","value":"self"},"id":13905,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13899,"type":"struct strings.slice memory","value":"needle"},"id":13906,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13902,"type":"struct strings.slice memory","value":"token"},"id":13907,"name":"Identifier","src":"23227:5:20"}],"id":13908,"name":"FunctionCall","src":"23206:27:20"}],"id":13909,"name":"ExpressionStatement","src":"23206:27:20"}],"id":13910,"name":"Block","src":"23196:44:20"}],"id":13911,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13970,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13912,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":13913,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13970,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13914,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":13915,"name":"VariableDeclaration","src":"23543:19:20"}],"id":13916,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":13970,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13917,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":13918,"name":"VariableDeclaration","src":"23587:8:20"}],"id":13919,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[13921]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13969,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13920,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":13921,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13541,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":13922,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13923,"name":"Identifier","src":"23626:4:20"}],"id":13924,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13925,"name":"Identifier","src":"23637:4:20"}],"id":13926,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13927,"name":"Identifier","src":"23648:6:20"}],"id":13928,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13929,"name":"Identifier","src":"23661:6:20"}],"id":13930,"name":"MemberAccess","src":"23661:11:20"}],"id":13931,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13932,"name":"Identifier","src":"23676:6:20"}],"id":13933,"name":"MemberAccess","src":"23676:11:20"}],"id":13934,"name":"BinaryOperation","src":"23618:69:20"}],"id":13935,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13921,"type":"uint256","value":"ptr"},"id":13936,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13937,"name":"Identifier","src":"23711:4:20"}],"id":13938,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13939,"name":"Identifier","src":"23723:4:20"}],"id":13940,"name":"MemberAccess","src":"23723:9:20"}],"id":13941,"name":"BinaryOperation","src":"23711:21:20"}],"id":13942,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13918,"type":"uint256","value":"cnt"},"id":13943,"name":"Identifier","src":"23748:3:20"}],"id":13944,"name":"UnaryOperation","src":"23748:5:20"}],"id":13945,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13921,"type":"uint256","value":"ptr"},"id":13946,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13541,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":13947,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13948,"name":"Identifier","src":"23781:4:20"}],"id":13949,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13921,"type":"uint256","value":"ptr"},"id":13950,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13951,"name":"Identifier","src":"23800:4:20"}],"id":13952,"name":"MemberAccess","src":"23800:9:20"}],"id":13953,"name":"BinaryOperation","src":"23794:15:20"}],"id":13954,"name":"TupleExpression","src":"23793:17:20"}],"id":13955,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13921,"type":"uint256","value":"ptr"},"id":13956,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13957,"name":"Identifier","src":"23817:6:20"}],"id":13958,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13959,"name":"Identifier","src":"23830:6:20"}],"id":13960,"name":"MemberAccess","src":"23830:11:20"}],"id":13961,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13962,"name":"Identifier","src":"23845:6:20"}],"id":13963,"name":"MemberAccess","src":"23845:11:20"}],"id":13964,"name":"BinaryOperation","src":"23773:83:20"}],"id":13965,"name":"Assignment","src":"23767:89:20"}],"id":13966,"name":"ExpressionStatement","src":"23767:89:20"}],"id":13967,"name":"Block","src":"23734:133:20"}],"id":13968,"name":"WhileStatement","src":"23697:170:20"}],"id":13969,"name":"Block","src":"23597:276:20"}],"id":13970,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13994,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13971,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":13972,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13994,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13973,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":13974,"name":"VariableDeclaration","src":"24149:19:20"}],"id":13975,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13994,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13976,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":13977,"name":"VariableDeclaration","src":"24193:4:20"}],"id":13978,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":13978},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13658,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":13979,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13972,"type":"struct strings.slice memory","value":"self"},"id":13980,"name":"Identifier","src":"24225:4:20"}],"id":13981,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13972,"type":"struct strings.slice memory","value":"self"},"id":13982,"name":"Identifier","src":"24236:4:20"}],"id":13983,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13974,"type":"struct strings.slice memory","value":"needle"},"id":13984,"name":"Identifier","src":"24247:6:20"}],"id":13985,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13974,"type":"struct strings.slice memory","value":"needle"},"id":13986,"name":"Identifier","src":"24260:6:20"}],"id":13987,"name":"MemberAccess","src":"24260:11:20"}],"id":13988,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13972,"type":"struct strings.slice memory","value":"self"},"id":13989,"name":"Identifier","src":"24276:4:20"}],"id":13990,"name":"MemberAccess","src":"24276:9:20"}],"id":13991,"name":"BinaryOperation","src":"24216:69:20"}],"id":13992,"name":"Return","src":"24209:76:20"}],"id":13993,"name":"Block","src":"24199:93:20"}],"id":13994,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14040,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13995,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":13996,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":14040,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13997,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":13998,"name":"VariableDeclaration","src":"24614:18:20"}],"id":13999,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":14040,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":14000,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":14001,"name":"VariableDeclaration","src":"24657:13:20"}],"id":14002,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[14004]},"children":[{"attributes":{"constant":false,"name":"ret","scope":14039,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":14003,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":14004,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":14005,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":14006,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13996,"type":"struct strings.slice memory","value":"self"},"id":14007,"name":"Identifier","src":"24713:4:20"}],"id":14008,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13998,"type":"struct strings.slice memory","value":"other"},"id":14009,"name":"Identifier","src":"24725:5:20"}],"id":14010,"name":"MemberAccess","src":"24725:10:20"}],"id":14011,"name":"BinaryOperation","src":"24713:22:20"}],"id":14012,"name":"FunctionCall","src":"24702:34:20"}],"id":14013,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[14015],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":14039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14014,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":14015,"name":"VariableDeclaration","src":"24746:11:20"}],"id":14016,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":14015,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":14004,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":14017,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":14018,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14015,"type":"uint256","value":"retptr"},"id":14019,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13996,"type":"struct strings.slice memory","value":"self"},"id":14020,"name":"Identifier","src":"24826:4:20"}],"id":14021,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13996,"type":"struct strings.slice memory","value":"self"},"id":14022,"name":"Identifier","src":"24837:4:20"}],"id":14023,"name":"MemberAccess","src":"24837:9:20"}],"id":14024,"name":"FunctionCall","src":"24811:36:20"}],"id":14025,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":14026,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14015,"type":"uint256","value":"retptr"},"id":14027,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13996,"type":"struct strings.slice memory","value":"self"},"id":14028,"name":"Identifier","src":"24873:4:20"}],"id":14029,"name":"MemberAccess","src":"24873:9:20"}],"id":14030,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13998,"type":"struct strings.slice memory","value":"other"},"id":14031,"name":"Identifier","src":"24884:5:20"}],"id":14032,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13998,"type":"struct strings.slice memory","value":"other"},"id":14033,"name":"Identifier","src":"24896:5:20"}],"id":14034,"name":"MemberAccess","src":"24896:10:20"}],"id":14035,"name":"FunctionCall","src":"24857:50:20"}],"id":14036,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":14002},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14004,"type":"string memory","value":"ret"},"id":14037,"name":"Identifier","src":"24924:3:20"}],"id":14038,"name":"Return","src":"24917:10:20"}],"id":14039,"name":"Block","src":"24672:262:20"}],"id":14040,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14155,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":14041,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":14042,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":14155,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":14043,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":14044,"name":"ArrayTypeName","src":"25303:7:20"}],"id":14045,"name":"VariableDeclaration","src":"25303:20:20"}],"id":14046,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":14155,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":14047,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":14048,"name":"VariableDeclaration","src":"25348:13:20"}],"id":14049,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14050,"name":"Identifier","src":"25377:5:20"}],"id":14051,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14052,"name":"Literal","src":"25393:1:20"}],"id":14053,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":14049},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":14054,"name":"Literal","src":"25415:2:20"}],"id":14055,"name":"Return","src":"25408:9:20"}],"id":14056,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[14058]},"children":[{"attributes":{"constant":false,"name":"length","scope":14154,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14057,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":14058,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14042,"type":"struct strings.slice memory","value":"self"},"id":14059,"name":"Identifier","src":"25442:4:20"}],"id":14060,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14061,"name":"Identifier","src":"25455:5:20"}],"id":14062,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14063,"name":"Literal","src":"25470:1:20"}],"id":14064,"name":"BinaryOperation","src":"25455:16:20"}],"id":14065,"name":"TupleExpression","src":"25454:18:20"}],"id":14066,"name":"BinaryOperation","src":"25442:30:20"}],"id":14067,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[14069]},"children":[{"attributes":{"constant":false,"name":"i","scope":14087,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14068,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":14069,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14070,"name":"Literal","src":"25496:1:20"}],"id":14071,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14069,"type":"uint256","value":"i"},"id":14072,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14073,"name":"Identifier","src":"25503:5:20"}],"id":14074,"name":"MemberAccess","src":"25503:12:20"}],"id":14075,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14069,"type":"uint256","value":"i"},"id":14076,"name":"Identifier","src":"25517:1:20"}],"id":14077,"name":"UnaryOperation","src":"25517:3:20"}],"id":14078,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14058,"type":"uint256","value":"length"},"id":14079,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14080,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14069,"type":"uint256","value":"i"},"id":14081,"name":"Identifier","src":"25552:1:20"}],"id":14082,"name":"IndexAccess","src":"25546:8:20"}],"id":14083,"name":"MemberAccess","src":"25546:13:20"}],"id":14084,"name":"Assignment","src":"25536:23:20"}],"id":14085,"name":"ExpressionStatement","src":"25536:23:20"}],"id":14086,"name":"Block","src":"25522:48:20"}],"id":14087,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[14089]},"children":[{"attributes":{"constant":false,"name":"ret","scope":14154,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":14088,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":14089,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":14090,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":14091,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14058,"type":"uint256","value":"length"},"id":14092,"name":"Identifier","src":"25611:6:20"}],"id":14093,"name":"FunctionCall","src":"25600:18:20"}],"id":14094,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[14096],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":14154,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14095,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":14096,"name":"VariableDeclaration","src":"25628:11:20"}],"id":14097,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":14096,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":14089,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":14098,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[14100]},"children":[{"attributes":{"constant":false,"name":"i","scope":14151,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14099,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":14100,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14101,"name":"Literal","src":"25708:1:20"}],"id":14102,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14103,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14104,"name":"Identifier","src":"25715:5:20"}],"id":14105,"name":"MemberAccess","src":"25715:12:20"}],"id":14106,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14107,"name":"Identifier","src":"25729:1:20"}],"id":14108,"name":"UnaryOperation","src":"25729:3:20"}],"id":14109,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":14110,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14096,"type":"uint256","value":"retptr"},"id":14111,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14112,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14113,"name":"Identifier","src":"25769:1:20"}],"id":14114,"name":"IndexAccess","src":"25763:8:20"}],"id":14115,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14116,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14117,"name":"Identifier","src":"25784:1:20"}],"id":14118,"name":"IndexAccess","src":"25778:8:20"}],"id":14119,"name":"MemberAccess","src":"25778:13:20"}],"id":14120,"name":"FunctionCall","src":"25748:44:20"}],"id":14121,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14096,"type":"uint256","value":"retptr"},"id":14122,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14123,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14124,"name":"Identifier","src":"25822:1:20"}],"id":14125,"name":"IndexAccess","src":"25816:8:20"}],"id":14126,"name":"MemberAccess","src":"25816:13:20"}],"id":14127,"name":"Assignment","src":"25806:23:20"}],"id":14128,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14129,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14130,"name":"Identifier","src":"25851:5:20"}],"id":14131,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14132,"name":"Literal","src":"25866:1:20"}],"id":14133,"name":"BinaryOperation","src":"25851:16:20"}],"id":14134,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":14135,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14096,"type":"uint256","value":"retptr"},"id":14136,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14042,"type":"struct strings.slice memory","value":"self"},"id":14137,"name":"Identifier","src":"25902:4:20"}],"id":14138,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14042,"type":"struct strings.slice memory","value":"self"},"id":14139,"name":"Identifier","src":"25913:4:20"}],"id":14140,"name":"MemberAccess","src":"25913:9:20"}],"id":14141,"name":"FunctionCall","src":"25887:36:20"}],"id":14142,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14096,"type":"uint256","value":"retptr"},"id":14143,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14042,"type":"struct strings.slice memory","value":"self"},"id":14144,"name":"Identifier","src":"25951:4:20"}],"id":14145,"name":"MemberAccess","src":"25951:9:20"}],"id":14146,"name":"Assignment","src":"25941:19:20"}],"id":14147,"name":"ExpressionStatement","src":"25941:19:20"}],"id":14148,"name":"Block","src":"25869:106:20"}],"id":14149,"name":"IfStatement","src":"25843:132:20"}],"id":14150,"name":"Block","src":"25734:251:20"}],"id":14151,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":14049},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14089,"type":"string memory","value":"ret"},"id":14152,"name":"Identifier","src":"26002:3:20"}],"id":14153,"name":"Return","src":"25995:10:20"}],"id":14154,"name":"Block","src":"25363:649:20"}],"id":14155,"name":"FunctionDefinition","src":"25270:742:20"}],"id":14156,"name":"ContractDefinition","src":"2599:23415:20"}],"id":14157,"name":"SourceUnit","src":"2574:23441:20"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[14267]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":14158,"name":"PragmaDirective","src":"770:24:21"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":14268,"symbolAliases":[null],"unitAlias":""},"id":14159,"name":"ImportDirective","src":"796:35:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[14267],"name":"BytesUtils","scope":14268},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":14160,"name":"UserDefinedTypeName","src":"942:8:21"},{"attributes":{"name":"uint256","type":"uint256"},"id":14161,"name":"ElementaryTypeName","src":"955:7:21"}],"id":14162,"name":"UsingForDirective","src":"936:27:21"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":14267,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":14198,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14163,"name":"ElementaryTypeName","src":"1106:5:21"}],"id":14164,"name":"VariableDeclaration","src":"1106:17:21"},{"attributes":{"constant":false,"name":"_from","scope":14198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14165,"name":"ElementaryTypeName","src":"1125:7:21"}],"id":14166,"name":"VariableDeclaration","src":"1125:13:21"}],"id":14167,"name":"ParameterList","src":"1105:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":14198,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":14168,"name":"ElementaryTypeName","src":"1163:7:21"}],"id":14169,"name":"VariableDeclaration","src":"1163:7:21"}],"id":14170,"name":"ParameterList","src":"1162:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":14171,"name":"Identifier","src":"1182:7:21"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14164,"type":"bytes memory","value":"_bts"},"id":14172,"name":"Identifier","src":"1190:4:21"}],"id":14173,"name":"MemberAccess","src":"1190:11:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14166,"type":"uint256","value":"_from"},"id":14174,"name":"Identifier","src":"1205:5:21"}],"id":14175,"name":"MemberAccess","src":"1205:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":14176,"name":"Literal","src":"1215:2:21"}],"id":14177,"name":"FunctionCall","src":"1205:13:21"}],"id":14178,"name":"BinaryOperation","src":"1190:28:21"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":14179,"name":"Literal","src":"1220:22:21"}],"id":14180,"name":"FunctionCall","src":"1182:61:21"}],"id":14181,"name":"ExpressionStatement","src":"1182:61:21"},{"attributes":{"assignments":[14183],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":14197,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":14182,"name":"ElementaryTypeName","src":"1254:7:21"}],"id":14183,"name":"VariableDeclaration","src":"1254:24:21"}],"id":14184,"name":"VariableDeclarationStatement","src":"1254:24:21"},{"attributes":{"assignments":[14186]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":14197,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14185,"name":"ElementaryTypeName","src":"1288:7:21"}],"id":14186,"name":"VariableDeclaration","src":"1288:17:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14166,"type":"uint256","value":"_from"},"id":14187,"name":"Identifier","src":"1308:5:21"}],"id":14188,"name":"MemberAccess","src":"1308:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":14189,"name":"Literal","src":"1318:2:21"}],"id":14190,"name":"FunctionCall","src":"1308:13:21"}],"id":14191,"name":"VariableDeclarationStatement","src":"1288:33:21"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":14183,"isOffset":false,"isSlot":false,"src":"1396:16:21","valueSize":1}},{"_bts":{"declaration":14164,"isOffset":false,"isSlot":false,"src":"1426:4:21","valueSize":1}},{"startByte":{"declaration":14186,"isOffset":false,"isSlot":false,"src":"1432:9:21","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":14192,"name":"InlineAssembly","src":"1373:80:21"},{"attributes":{"functionReturnParameters":14170},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":14193,"name":"ElementaryTypeNameExpression","src":"1470:7:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14183,"type":"bytes20","value":"convertedAddress"},"id":14194,"name":"Identifier","src":"1478:16:21"}],"id":14195,"name":"FunctionCall","src":"1470:25:21"}],"id":14196,"name":"Return","src":"1463:32:21"}],"id":14197,"name":"Block","src":"1172:330:21"}],"id":14198,"name":"FunctionDefinition","src":"1081:421:21"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":14267,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":14232,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14199,"name":"ElementaryTypeName","src":"1651:5:21"}],"id":14200,"name":"VariableDeclaration","src":"1651:17:21"},{"attributes":{"constant":false,"name":"_from","scope":14232,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14201,"name":"ElementaryTypeName","src":"1670:7:21"}],"id":14202,"name":"VariableDeclaration","src":"1670:13:21"}],"id":14203,"name":"ParameterList","src":"1650:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":14232,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":14204,"name":"ElementaryTypeName","src":"1708:6:21"}],"id":14205,"name":"VariableDeclaration","src":"1708:6:21"}],"id":14206,"name":"ParameterList","src":"1707:8:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":14207,"name":"Identifier","src":"1726:7:21"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14200,"type":"bytes memory","value":"_bts"},"id":14208,"name":"Identifier","src":"1734:4:21"}],"id":14209,"name":"MemberAccess","src":"1734:11:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14202,"type":"uint256","value":"_from"},"id":14210,"name":"Identifier","src":"1749:5:21"}],"id":14211,"name":"MemberAccess","src":"1749:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":14212,"name":"Literal","src":"1759:1:21"}],"id":14213,"name":"FunctionCall","src":"1749:12:21"}],"id":14214,"name":"BinaryOperation","src":"1734:27:21"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":14215,"name":"Literal","src":"1763:22:21"}],"id":14216,"name":"FunctionCall","src":"1726:60:21"}],"id":14217,"name":"ExpressionStatement","src":"1726:60:21"},{"attributes":{"assignments":[14219],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":14231,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":14218,"name":"ElementaryTypeName","src":"1797:6:21"}],"id":14219,"name":"VariableDeclaration","src":"1797:19:21"}],"id":14220,"name":"VariableDeclarationStatement","src":"1797:19:21"},{"attributes":{"assignments":[14222]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":14231,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14221,"name":"ElementaryTypeName","src":"1826:7:21"}],"id":14222,"name":"VariableDeclaration","src":"1826:17:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14202,"type":"uint256","value":"_from"},"id":14223,"name":"Identifier","src":"1846:5:21"}],"id":14224,"name":"MemberAccess","src":"1846:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":14225,"name":"Literal","src":"1856:2:21"}],"id":14226,"name":"FunctionCall","src":"1846:13:21"}],"id":14227,"name":"VariableDeclarationStatement","src":"1826:33:21"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":14219,"isOffset":false,"isSlot":false,"src":"1934:12:21","valueSize":1}},{"_bts":{"declaration":14200,"isOffset":false,"isSlot":false,"src":"1960:4:21","valueSize":1}},{"startByte":{"declaration":14222,"isOffset":false,"isSlot":false,"src":"1966:9:21","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":14228,"name":"InlineAssembly","src":"1911:76:21"},{"attributes":{"functionReturnParameters":14206},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14219,"type":"bytes4","value":"slicedBytes4"},"id":14229,"name":"Identifier","src":"2004:12:21"}],"id":14230,"name":"Return","src":"1997:19:21"}],"id":14231,"name":"Block","src":"1716:307:21"}],"id":14232,"name":"FunctionDefinition","src":"1627:396:21"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":14267,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":14266,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14233,"name":"ElementaryTypeName","src":"2398:5:21"}],"id":14234,"name":"VariableDeclaration","src":"2398:17:21"},{"attributes":{"constant":false,"name":"_from","scope":14266,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14235,"name":"ElementaryTypeName","src":"2417:7:21"}],"id":14236,"name":"VariableDeclaration","src":"2417:13:21"}],"id":14237,"name":"ParameterList","src":"2397:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":14266,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14238,"name":"ElementaryTypeName","src":"2455:7:21"}],"id":14239,"name":"VariableDeclaration","src":"2455:7:21"}],"id":14240,"name":"ParameterList","src":"2454:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":14241,"name":"Identifier","src":"2474:7:21"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14234,"type":"bytes memory","value":"_bts"},"id":14242,"name":"Identifier","src":"2482:4:21"}],"id":14243,"name":"MemberAccess","src":"2482:11:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14236,"type":"uint256","value":"_from"},"id":14244,"name":"Identifier","src":"2497:5:21"}],"id":14245,"name":"MemberAccess","src":"2497:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":14246,"name":"Literal","src":"2507:2:21"}],"id":14247,"name":"FunctionCall","src":"2497:13:21"}],"id":14248,"name":"BinaryOperation","src":"2482:28:21"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":14249,"name":"Literal","src":"2512:22:21"}],"id":14250,"name":"FunctionCall","src":"2474:61:21"}],"id":14251,"name":"ExpressionStatement","src":"2474:61:21"},{"attributes":{"assignments":[14253],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":14265,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14252,"name":"ElementaryTypeName","src":"2546:7:21"}],"id":14253,"name":"VariableDeclaration","src":"2546:24:21"}],"id":14254,"name":"VariableDeclarationStatement","src":"2546:24:21"},{"attributes":{"assignments":[14256]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":14265,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14255,"name":"ElementaryTypeName","src":"2580:7:21"}],"id":14256,"name":"VariableDeclaration","src":"2580:17:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14236,"type":"uint256","value":"_from"},"id":14257,"name":"Identifier","src":"2600:5:21"}],"id":14258,"name":"MemberAccess","src":"2600:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":14259,"name":"Literal","src":"2610:2:21"}],"id":14260,"name":"FunctionCall","src":"2600:13:21"}],"id":14261,"name":"VariableDeclarationStatement","src":"2580:33:21"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":14253,"isOffset":false,"isSlot":false,"src":"2688:16:21","valueSize":1}},{"_bts":{"declaration":14234,"isOffset":false,"isSlot":false,"src":"2718:4:21","valueSize":1}},{"startByte":{"declaration":14256,"isOffset":false,"isSlot":false,"src":"2724:9:21","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":14262,"name":"InlineAssembly","src":"2665:80:21"},{"attributes":{"functionReturnParameters":14240},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14253,"type":"uint256","value":"convertedUint256"},"id":14263,"name":"Identifier","src":"2762:16:21"}],"id":14264,"name":"Return","src":"2755:23:21"}],"id":14265,"name":"Block","src":"2464:321:21"}],"id":14266,"name":"FunctionDefinition","src":"2373:412:21"}],"id":14267,"name":"ContractDefinition","src":"911:1876:21"}],"id":14268,"name":"SourceUnit","src":"770:2018:21"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[7949]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":7855,"name":"PragmaDirective","src":"772:24:22"},{"attributes":{"SourceUnit":9436,"absolutePath":"controller.sol","file":"../controller.sol","scope":7950,"symbolAliases":[null],"unitAlias":""},"id":7856,"name":"ImportDirective","src":"798:27:22"},{"attributes":{"SourceUnit":8164,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":7950,"symbolAliases":[null],"unitAlias":""},"id":7857,"name":"ImportDirective","src":"826:29:22"},{"attributes":{"contractDependencies":[8163],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[7949,8163],"name":"Controllable","scope":7950},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":8163,"type":"contract ENSResolvable"},"id":7858,"name":"UserDefinedTypeName","src":"980:13:22"}],"id":7859,"name":"InheritanceSpecifier","src":"980:13:22"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":7949,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7860,"name":"ElementaryTypeName","src":"1070:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":7861,"name":"Literal","src":"1122:66:22"}],"id":7862,"name":"VariableDeclaration","src":"1070:118:22"},{"attributes":{"constant":false,"name":"_controllerNode","scope":7949,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7863,"name":"ElementaryTypeName","src":"1272:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7862,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":7864,"name":"Identifier","src":"1306:24:22"}],"id":7865,"name":"VariableDeclaration","src":"1272:58:22"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":7949,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":7882,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7866,"name":"ElementaryTypeName","src":"1571:7:22"}],"id":7867,"name":"VariableDeclaration","src":"1571:24:22"}],"id":7868,"name":"ParameterList","src":"1570:26:22"},{"attributes":{"parameters":[null]},"children":[],"id":7869,"name":"ParameterList","src":"1606:0:22"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7867,"type":"bytes32","value":"_controllerNode_"},"id":7870,"name":"Identifier","src":"1665:16:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7871,"name":"ElementaryTypeNameExpression","src":"1685:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7872,"name":"Literal","src":"1693:1:22"}],"id":7873,"name":"FunctionCall","src":"1685:10:22"}],"id":7874,"name":"BinaryOperation","src":"1665:30:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7865,"type":"bytes32","value":"_controllerNode"},"id":7875,"name":"Identifier","src":"1711:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7867,"type":"bytes32","value":"_controllerNode_"},"id":7876,"name":"Identifier","src":"1729:16:22"}],"id":7877,"name":"Assignment","src":"1711:34:22"}],"id":7878,"name":"ExpressionStatement","src":"1711:34:22"}],"id":7879,"name":"Block","src":"1697:59:22"}],"id":7880,"name":"IfStatement","src":"1661:95:22"}],"id":7881,"name":"Block","src":"1606:156:22"}],"id":7882,"name":"FunctionDefinition","src":"1559:203:22"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7883,"name":"ParameterList","src":"1849:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":7884,"name":"Identifier","src":"1862:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7931,"type":"function (address) view returns (bool)","value":"_isController"},"id":7885,"name":"Identifier","src":"1870:13:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":7886,"name":"Identifier","src":"1884:3:22"}],"id":7887,"name":"MemberAccess","src":"1884:10:22"}],"id":7888,"name":"FunctionCall","src":"1870:25:22"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":7889,"name":"Literal","src":"1897:28:22"}],"id":7890,"name":"FunctionCall","src":"1862:64:22"}],"id":7891,"name":"ExpressionStatement","src":"1862:64:22"},{"id":7892,"name":"PlaceholderStatement","src":"1936:1:22"}],"id":7893,"name":"Block","src":"1852:92:22"}],"id":7894,"name":"ModifierDefinition","src":"1826:118:22"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7895,"name":"ParameterList","src":"2022:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":7896,"name":"Identifier","src":"2035:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7948,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":7897,"name":"Identifier","src":"2043:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":7898,"name":"Identifier","src":"2052:3:22"}],"id":7899,"name":"MemberAccess","src":"2052:10:22"}],"id":7900,"name":"FunctionCall","src":"2043:20:22"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":7901,"name":"Literal","src":"2065:24:22"}],"id":7902,"name":"FunctionCall","src":"2035:55:22"}],"id":7903,"name":"ExpressionStatement","src":"2035:55:22"},{"id":7904,"name":"PlaceholderStatement","src":"2100:1:22"}],"id":7905,"name":"Block","src":"2025:83:22"}],"id":7906,"name":"ModifierDefinition","src":"2004:104:22"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":7949,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7907,"name":"ParameterList","src":"2192:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7914,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7908,"name":"ElementaryTypeName","src":"2216:7:22"}],"id":7909,"name":"VariableDeclaration","src":"2216:7:22"}],"id":7910,"name":"ParameterList","src":"2215:9:22"},{"children":[{"attributes":{"functionReturnParameters":7910},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7865,"type":"bytes32","value":"_controllerNode"},"id":7911,"name":"Identifier","src":"2242:15:22"}],"id":7912,"name":"Return","src":"2235:22:22"}],"id":7913,"name":"Block","src":"2225:39:22"}],"id":7914,"name":"FunctionDefinition","src":"2169:95:22"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":7949,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":7931,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7915,"name":"ElementaryTypeName","src":"2355:7:22"}],"id":7916,"name":"VariableDeclaration","src":"2355:16:22"}],"id":7917,"name":"ParameterList","src":"2354:18:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7931,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7918,"name":"ElementaryTypeName","src":"2396:4:22"}],"id":7919,"name":"VariableDeclaration","src":"2396:4:22"}],"id":7920,"name":"ParameterList","src":"2395:6:22"},{"children":[{"attributes":{"functionReturnParameters":7920},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":8992,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9000,"type":"type(contract IController)","value":"IController"},"id":7921,"name":"Identifier","src":"2419:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":7922,"name":"Identifier","src":"2431:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7865,"type":"bytes32","value":"_controllerNode"},"id":7923,"name":"Identifier","src":"2443:15:22"}],"id":7924,"name":"FunctionCall","src":"2431:28:22"}],"id":7925,"name":"FunctionCall","src":"2419:41:22"}],"id":7926,"name":"MemberAccess","src":"2419:54:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7916,"type":"address","value":"_account"},"id":7927,"name":"Identifier","src":"2474:8:22"}],"id":7928,"name":"FunctionCall","src":"2419:64:22"}],"id":7929,"name":"Return","src":"2412:71:22"}],"id":7930,"name":"Block","src":"2402:88:22"}],"id":7931,"name":"FunctionDefinition","src":"2332:158:22"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":7949,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":7948,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7932,"name":"ElementaryTypeName","src":"2572:7:22"}],"id":7933,"name":"VariableDeclaration","src":"2572:16:22"}],"id":7934,"name":"ParameterList","src":"2571:18:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7948,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7935,"name":"ElementaryTypeName","src":"2613:4:22"}],"id":7936,"name":"VariableDeclaration","src":"2613:4:22"}],"id":7937,"name":"ParameterList","src":"2612:6:22"},{"children":[{"attributes":{"functionReturnParameters":7937},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":8999,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9000,"type":"type(contract IController)","value":"IController"},"id":7938,"name":"Identifier","src":"2636:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":7939,"name":"Identifier","src":"2648:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7865,"type":"bytes32","value":"_controllerNode"},"id":7940,"name":"Identifier","src":"2660:15:22"}],"id":7941,"name":"FunctionCall","src":"2648:28:22"}],"id":7942,"name":"FunctionCall","src":"2636:41:22"}],"id":7943,"name":"MemberAccess","src":"2636:49:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7933,"type":"address","value":"_account"},"id":7944,"name":"Identifier","src":"2686:8:22"}],"id":7945,"name":"FunctionCall","src":"2636:59:22"}],"id":7946,"name":"Return","src":"2629:66:22"}],"id":7947,"name":"Block","src":"2619:83:22"}],"id":7948,"name":"FunctionDefinition","src":"2554:148:22"}],"id":7949,"name":"ContractDefinition","src":"955:1749:22"}],"id":7950,"name":"SourceUnit","src":"772:1933:22"}},"internals/date.sol":{"AST":{"attributes":{"absolutePath":"internals/date.sol","exportedSymbols":{"Date":[8118]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":7951,"name":"PragmaDirective","src":"764:24:23"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Date provides redimentary date parsing functionality.\n @notice This method parses months found in an ISO date to a number","fullyImplemented":true,"linearizedBaseContracts":[8118],"name":"Date","scope":8119},"children":[{"attributes":{"constant":true,"name":"_JANUARY","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7952,"name":"ElementaryTypeName","src":"947:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4a18c9083b936e0757952a5d9d34b5575d427661506fbe9908c2a1da3f3e80d9","typeString":"literal_string \"Jan\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7953,"name":"Identifier","src":"983:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4a616e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Jan\"","value":"Jan"},"id":7954,"name":"Literal","src":"993:5:23"}],"id":7955,"name":"FunctionCall","src":"983:16:23"}],"id":7956,"name":"VariableDeclaration","src":"947:52:23"},{"attributes":{"constant":true,"name":"_FEBRUARY","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7957,"name":"ElementaryTypeName","src":"1005:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_78ec83563b948f0ac242d7eaefd592adf65964e11cc27f11ae41faa99a1e990a","typeString":"literal_string \"Feb\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7958,"name":"Identifier","src":"1042:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"466562","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Feb\"","value":"Feb"},"id":7959,"name":"Literal","src":"1052:5:23"}],"id":7960,"name":"FunctionCall","src":"1042:16:23"}],"id":7961,"name":"VariableDeclaration","src":"1005:53:23"},{"attributes":{"constant":true,"name":"_MARCH","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7962,"name":"ElementaryTypeName","src":"1064:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2bab7d3f253ae0e3722abcc2571faced288946968116996ffc3de31fb7348ec3","typeString":"literal_string \"Mar\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7963,"name":"Identifier","src":"1098:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4d6172","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Mar\"","value":"Mar"},"id":7964,"name":"Literal","src":"1108:5:23"}],"id":7965,"name":"FunctionCall","src":"1098:16:23"}],"id":7966,"name":"VariableDeclaration","src":"1064:50:23"},{"attributes":{"constant":true,"name":"_APRIL","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7967,"name":"ElementaryTypeName","src":"1120:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c6f33aba2381b69f05afc78835e501547a9daffa08d674623068c378423ac188","typeString":"literal_string \"Apr\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7968,"name":"Identifier","src":"1154:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"417072","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Apr\"","value":"Apr"},"id":7969,"name":"Literal","src":"1164:5:23"}],"id":7970,"name":"FunctionCall","src":"1154:16:23"}],"id":7971,"name":"VariableDeclaration","src":"1120:50:23"},{"attributes":{"constant":true,"name":"_MAY","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7972,"name":"ElementaryTypeName","src":"1176:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_db5ee1006003349b29eda5be5fe34f728659f836a948d4ec595114aebbb159d3","typeString":"literal_string \"May\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7973,"name":"Identifier","src":"1208:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4d6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"May\"","value":"May"},"id":7974,"name":"Literal","src":"1218:5:23"}],"id":7975,"name":"FunctionCall","src":"1208:16:23"}],"id":7976,"name":"VariableDeclaration","src":"1176:48:23"},{"attributes":{"constant":true,"name":"_JUNE","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7977,"name":"ElementaryTypeName","src":"1230:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_44a0046ab54c1458fc3c39dfcadc52509ad809730ec301470d2d747dbe77242d","typeString":"literal_string \"Jun\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7978,"name":"Identifier","src":"1263:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4a756e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Jun\"","value":"Jun"},"id":7979,"name":"Literal","src":"1273:5:23"}],"id":7980,"name":"FunctionCall","src":"1263:16:23"}],"id":7981,"name":"VariableDeclaration","src":"1230:49:23"},{"attributes":{"constant":true,"name":"_JULY","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7982,"name":"ElementaryTypeName","src":"1285:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_74d9e46f10329e61dc333ff1800274be516163110de31961b4e0c61de3e90c5c","typeString":"literal_string \"Jul\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7983,"name":"Identifier","src":"1318:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4a756c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Jul\"","value":"Jul"},"id":7984,"name":"Literal","src":"1328:5:23"}],"id":7985,"name":"FunctionCall","src":"1318:16:23"}],"id":7986,"name":"VariableDeclaration","src":"1285:49:23"},{"attributes":{"constant":true,"name":"_AUGUST","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7987,"name":"ElementaryTypeName","src":"1340:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ed40c08ab6f3d9c5d71155e25b1271d5b9eca8c27bf89e1d2293fcb77c5abf64","typeString":"literal_string \"Aug\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7988,"name":"Identifier","src":"1375:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"417567","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Aug\"","value":"Aug"},"id":7989,"name":"Literal","src":"1385:5:23"}],"id":7990,"name":"FunctionCall","src":"1375:16:23"}],"id":7991,"name":"VariableDeclaration","src":"1340:51:23"},{"attributes":{"constant":true,"name":"_SEPTEMBER","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7992,"name":"ElementaryTypeName","src":"1397:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7d801199c77197eb9933a633741db90c2c6f3d7d14aca35f5f80a41b4a8863ac","typeString":"literal_string \"Sep\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7993,"name":"Identifier","src":"1435:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"536570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Sep\"","value":"Sep"},"id":7994,"name":"Literal","src":"1445:5:23"}],"id":7995,"name":"FunctionCall","src":"1435:16:23"}],"id":7996,"name":"VariableDeclaration","src":"1397:54:23"},{"attributes":{"constant":true,"name":"_OCTOBER","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7997,"name":"ElementaryTypeName","src":"1457:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b7841ed82fc96483f061ddc0b19846855df22558c4aea3b3b058ce0d9f1f5164","typeString":"literal_string \"Oct\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7998,"name":"Identifier","src":"1493:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4f6374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Oct\"","value":"Oct"},"id":7999,"name":"Literal","src":"1503:5:23"}],"id":8000,"name":"FunctionCall","src":"1493:16:23"}],"id":8001,"name":"VariableDeclaration","src":"1457:52:23"},{"attributes":{"constant":true,"name":"_NOVEMBER","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8002,"name":"ElementaryTypeName","src":"1515:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_487851233e540dddea8f904d6802590aead5463b1c44965d68348bb7def25cf4","typeString":"literal_string \"Nov\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":8003,"name":"Identifier","src":"1552:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4e6f76","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Nov\"","value":"Nov"},"id":8004,"name":"Literal","src":"1562:5:23"}],"id":8005,"name":"FunctionCall","src":"1552:16:23"}],"id":8006,"name":"VariableDeclaration","src":"1515:53:23"},{"attributes":{"constant":true,"name":"_DECEMBER","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8007,"name":"ElementaryTypeName","src":"1574:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3bd971d8758c58fe0c4d635451404450c5edda87d624a89819e0be5a122933dc","typeString":"literal_string \"Dec\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":8008,"name":"Identifier","src":"1611:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"446563","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Dec\"","value":"Dec"},"id":8009,"name":"Literal","src":"1621:5:23"}],"id":8010,"name":"FunctionCall","src":"1611:16:23"}],"id":8011,"name":"VariableDeclaration","src":"1574:53:23"},{"attributes":{"documentation":"@return the number of the month based on its name.\n @param _month the first three letters of a month's name e.g. \"Jan\".","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_monthToNumber","scope":8118,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_month","scope":8117,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8012,"name":"ElementaryTypeName","src":"1793:6:23"}],"id":8013,"name":"VariableDeclaration","src":"1793:20:23"}],"id":8014,"name":"ParameterList","src":"1792:22:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":8117,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":8015,"name":"ElementaryTypeName","src":"1838:5:23"}],"id":8016,"name":"VariableDeclaration","src":"1838:5:23"}],"id":8017,"name":"ParameterList","src":"1837:7:23"},{"children":[{"attributes":{"assignments":[8019]},"children":[{"attributes":{"constant":false,"name":"month","scope":8116,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8018,"name":"ElementaryTypeName","src":"1855:7:23"}],"id":8019,"name":"VariableDeclaration","src":"1855:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":8020,"name":"Identifier","src":"1871:9:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":8021,"name":"Identifier","src":"1881:3:23"}],"id":8022,"name":"MemberAccess","src":"1881:16:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8013,"type":"string memory","value":"_month"},"id":8023,"name":"Identifier","src":"1898:6:23"}],"id":8024,"name":"FunctionCall","src":"1881:24:23"}],"id":8025,"name":"FunctionCall","src":"1871:35:23"}],"id":8026,"name":"VariableDeclarationStatement","src":"1855:51:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8027,"name":"Identifier","src":"1920:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7956,"type":"bytes32","value":"_JANUARY"},"id":8028,"name":"Identifier","src":"1929:8:23"}],"id":8029,"name":"BinaryOperation","src":"1920:17:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8030,"name":"Literal","src":"1960:1:23"}],"id":8031,"name":"Return","src":"1953:8:23"}],"id":8032,"name":"Block","src":"1939:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8033,"name":"Identifier","src":"1982:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7961,"type":"bytes32","value":"_FEBRUARY"},"id":8034,"name":"Identifier","src":"1991:9:23"}],"id":8035,"name":"BinaryOperation","src":"1982:18:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8036,"name":"Literal","src":"2023:1:23"}],"id":8037,"name":"Return","src":"2016:8:23"}],"id":8038,"name":"Block","src":"2002:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8039,"name":"Identifier","src":"2045:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"bytes32","value":"_MARCH"},"id":8040,"name":"Identifier","src":"2054:6:23"}],"id":8041,"name":"BinaryOperation","src":"2045:15:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8042,"name":"Literal","src":"2083:1:23"}],"id":8043,"name":"Return","src":"2076:8:23"}],"id":8044,"name":"Block","src":"2062:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8045,"name":"Identifier","src":"2105:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7971,"type":"bytes32","value":"_APRIL"},"id":8046,"name":"Identifier","src":"2114:6:23"}],"id":8047,"name":"BinaryOperation","src":"2105:15:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8048,"name":"Literal","src":"2143:1:23"}],"id":8049,"name":"Return","src":"2136:8:23"}],"id":8050,"name":"Block","src":"2122:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8051,"name":"Identifier","src":"2165:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7976,"type":"bytes32","value":"_MAY"},"id":8052,"name":"Identifier","src":"2174:4:23"}],"id":8053,"name":"BinaryOperation","src":"2165:13:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":8054,"name":"Literal","src":"2201:1:23"}],"id":8055,"name":"Return","src":"2194:8:23"}],"id":8056,"name":"Block","src":"2180:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8057,"name":"Identifier","src":"2223:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7981,"type":"bytes32","value":"_JUNE"},"id":8058,"name":"Identifier","src":"2232:5:23"}],"id":8059,"name":"BinaryOperation","src":"2223:14:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":8060,"name":"Literal","src":"2260:1:23"}],"id":8061,"name":"Return","src":"2253:8:23"}],"id":8062,"name":"Block","src":"2239:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8063,"name":"Identifier","src":"2282:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7986,"type":"bytes32","value":"_JULY"},"id":8064,"name":"Identifier","src":"2291:5:23"}],"id":8065,"name":"BinaryOperation","src":"2282:14:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":8066,"name":"Literal","src":"2319:1:23"}],"id":8067,"name":"Return","src":"2312:8:23"}],"id":8068,"name":"Block","src":"2298:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8069,"name":"Identifier","src":"2341:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7991,"type":"bytes32","value":"_AUGUST"},"id":8070,"name":"Identifier","src":"2350:7:23"}],"id":8071,"name":"BinaryOperation","src":"2341:16:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8072,"name":"Literal","src":"2380:1:23"}],"id":8073,"name":"Return","src":"2373:8:23"}],"id":8074,"name":"Block","src":"2359:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8075,"name":"Identifier","src":"2402:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7996,"type":"bytes32","value":"_SEPTEMBER"},"id":8076,"name":"Identifier","src":"2411:10:23"}],"id":8077,"name":"BinaryOperation","src":"2402:19:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"39","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 9","value":"9"},"id":8078,"name":"Literal","src":"2444:1:23"}],"id":8079,"name":"Return","src":"2437:8:23"}],"id":8080,"name":"Block","src":"2423:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8081,"name":"Identifier","src":"2466:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8001,"type":"bytes32","value":"_OCTOBER"},"id":8082,"name":"Identifier","src":"2475:8:23"}],"id":8083,"name":"BinaryOperation","src":"2466:17:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8084,"name":"Literal","src":"2506:2:23"}],"id":8085,"name":"Return","src":"2499:9:23"}],"id":8086,"name":"Block","src":"2485:34:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8087,"name":"Identifier","src":"2529:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8006,"type":"bytes32","value":"_NOVEMBER"},"id":8088,"name":"Identifier","src":"2538:9:23"}],"id":8089,"name":"BinaryOperation","src":"2529:18:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3131","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 11","value":"11"},"id":8090,"name":"Literal","src":"2570:2:23"}],"id":8091,"name":"Return","src":"2563:9:23"}],"id":8092,"name":"Block","src":"2549:34:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8093,"name":"Identifier","src":"2593:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8011,"type":"bytes32","value":"_DECEMBER"},"id":8094,"name":"Identifier","src":"2602:9:23"}],"id":8095,"name":"BinaryOperation","src":"2593:18:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":8096,"name":"Literal","src":"2634:2:23"}],"id":8097,"name":"Return","src":"2627:9:23"}],"id":8098,"name":"Block","src":"2613:34:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4deebb500c9a99d40fa1053d95d4c3a93eaf025d3e960c6684ad76631bfe8f66","typeString":"literal_string \"not a valid month\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":8099,"name":"Identifier","src":"2667:6:23"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420612076616c6964206d6f6e7468","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not a valid month\"","value":"not a valid month"},"id":8100,"name":"Literal","src":"2674:19:23"}],"id":8101,"name":"FunctionCall","src":"2667:27:23"}],"id":8102,"name":"ExpressionStatement","src":"2667:27:23"}],"id":8103,"name":"Block","src":"2653:52:23"}],"id":8104,"name":"IfStatement","src":"2589:116:23"}],"id":8105,"name":"IfStatement","src":"2525:180:23"}],"id":8106,"name":"IfStatement","src":"2462:243:23"}],"id":8107,"name":"IfStatement","src":"2398:307:23"}],"id":8108,"name":"IfStatement","src":"2337:368:23"}],"id":8109,"name":"IfStatement","src":"2278:427:23"}],"id":8110,"name":"IfStatement","src":"2219:486:23"}],"id":8111,"name":"IfStatement","src":"2161:544:23"}],"id":8112,"name":"IfStatement","src":"2101:604:23"}],"id":8113,"name":"IfStatement","src":"2041:664:23"}],"id":8114,"name":"IfStatement","src":"1978:727:23"}],"id":8115,"name":"IfStatement","src":"1916:789:23"}],"id":8116,"name":"Block","src":"1845:866:23"}],"id":8117,"name":"FunctionDefinition","src":"1769:942:23"}],"id":8118,"name":"ContractDefinition","src":"927:1786:23"}],"id":8119,"name":"SourceUnit","src":"764:1950:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[8163]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8120,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":9573,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":8164,"symbolAliases":[null],"unitAlias":""},"id":8121,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":9747,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":8164,"symbolAliases":[null],"unitAlias":""},"id":8122,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[8163],"name":"ENSResolvable","scope":8164},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":8163,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8123,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":8124,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":8163,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":8134,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8125,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":8126,"name":"VariableDeclaration","src":"1205:16:24"}],"id":8127,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":8128,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"address","value":"_ensRegistry"},"id":8129,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8126,"type":"address","value":"_ensReg_"},"id":8130,"name":"Identifier","src":"1257:8:24"}],"id":8131,"name":"Assignment","src":"1242:23:24"}],"id":8132,"name":"ExpressionStatement","src":"1242:23:24"}],"id":8133,"name":"Block","src":"1232:40:24"}],"id":8134,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":8163,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8135,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":8142,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8136,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":8137,"name":"VariableDeclaration","src":"1410:7:24"}],"id":8138,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":8138},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"address","value":"_ensRegistry"},"id":8139,"name":"Identifier","src":"1436:12:24"}],"id":8140,"name":"Return","src":"1429:19:24"}],"id":8141,"name":"Block","src":"1419:36:24"}],"id":8142,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":8163,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":8162,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8143,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":8144,"name":"VariableDeclaration","src":"1652:13:24"}],"id":8145,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":8162,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8146,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":8147,"name":"VariableDeclaration","src":"1690:7:24"}],"id":8148,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":8148},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":11381,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9746,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":8149,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":9548,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9572,"type":"type(contract ENS)","value":"ENS"},"id":8150,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"address","value":"_ensRegistry"},"id":8151,"name":"Identifier","src":"1735:12:24"}],"id":8152,"name":"FunctionCall","src":"1731:17:24"}],"id":8153,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8144,"type":"bytes32","value":"_node"},"id":8154,"name":"Identifier","src":"1758:5:24"}],"id":8155,"name":"FunctionCall","src":"1731:33:24"}],"id":8156,"name":"FunctionCall","src":"1716:49:24"}],"id":8157,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8144,"type":"bytes32","value":"_node"},"id":8158,"name":"Identifier","src":"1771:5:24"}],"id":8159,"name":"FunctionCall","src":"1716:61:24"}],"id":8160,"name":"Return","src":"1709:68:24"}],"id":8161,"name":"Block","src":"1699:85:24"}],"id":8162,"name":"FunctionDefinition","src":"1631:153:24"}],"id":8163,"name":"ContractDefinition","src":"1008:778:24"}],"id":8164,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[11163]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":11008,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[11163],"name":"Ownable","scope":11164},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":11014,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11009,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":11010,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":11014,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11011,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":11012,"name":"VariableDeclaration","src":"1214:11:25"}],"id":11013,"name":"ParameterList","src":"1198:28:25"}],"id":11014,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":11018,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11015,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":11016,"name":"VariableDeclaration","src":"1254:15:25"}],"id":11017,"name":"ParameterList","src":"1253:17:25"}],"id":11018,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":11163,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11019,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":11020,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":11163,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11021,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":11022,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":11163,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":11053,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11023,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":11024,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":11053,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11025,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":11026,"name":"VariableDeclaration","src":"1503:19:25"}],"id":11027,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":11028,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11029,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11024,"type":"address payable","value":"_account_"},"id":11030,"name":"Identifier","src":"1552:9:25"}],"id":11031,"name":"Assignment","src":"1543:18:25"}],"id":11032,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11033,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11026,"type":"bool","value":"_transferable_"},"id":11034,"name":"Identifier","src":"1589:14:25"}],"id":11035,"name":"Assignment","src":"1571:32:25"}],"id":11036,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11037,"name":"Identifier","src":"1687:15:25"}],"id":11038,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11018,"type":"function (address)","value":"LockedOwnership"},"id":11039,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11024,"type":"address payable","value":"_account_"},"id":11040,"name":"Identifier","src":"1739:9:25"}],"id":11041,"name":"FunctionCall","src":"1723:26:25"}],"id":11042,"name":"EmitStatement","src":"1718:31:25"}],"id":11043,"name":"Block","src":"1704:56:25"}],"id":11044,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11014,"type":"function (address,address)","value":"TransferredOwnership"},"id":11045,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11046,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11047,"name":"Literal","src":"1803:1:25"}],"id":11048,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11024,"type":"address payable","value":"_account_"},"id":11049,"name":"Identifier","src":"1807:9:25"}],"id":11050,"name":"FunctionCall","src":"1774:43:25"}],"id":11051,"name":"EmitStatement","src":"1769:48:25"}],"id":11052,"name":"Block","src":"1533:291:25"}],"id":11053,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":11054,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":11055,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11162,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":11056,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":11057,"name":"Identifier","src":"1949:3:25"}],"id":11058,"name":"MemberAccess","src":"1949:10:25"}],"id":11059,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":11060,"name":"Literal","src":"1962:24:25"}],"id":11061,"name":"FunctionCall","src":"1932:55:25"}],"id":11062,"name":"ExpressionStatement","src":"1932:55:25"},{"id":11063,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":11064,"name":"Block","src":"1922:83:25"}],"id":11065,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":11163,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":11110,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11066,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":11067,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":11110,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11068,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":11069,"name":"VariableDeclaration","src":"2300:18:25"}],"id":11070,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":11073,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":11071,"name":"Identifier","src":"2329:9:25"}],"id":11072,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":11074,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11075,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":11076,"name":"Literal","src":"2429:31:25"}],"id":11077,"name":"FunctionCall","src":"2404:57:25"}],"id":11078,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":11079,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11067,"type":"address payable","value":"_account"},"id":11080,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11081,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11082,"name":"Literal","src":"2562:1:25"}],"id":11083,"name":"FunctionCall","src":"2554:10:25"}],"id":11084,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":11085,"name":"Literal","src":"2566:37:25"}],"id":11086,"name":"FunctionCall","src":"2534:70:25"}],"id":11087,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11088,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11069,"type":"bool","value":"_transferable"},"id":11089,"name":"Identifier","src":"2707:13:25"}],"id":11090,"name":"Assignment","src":"2689:31:25"}],"id":11091,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11069,"type":"bool","value":"_transferable"},"id":11092,"name":"Identifier","src":"2804:13:25"}],"id":11093,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11018,"type":"function (address)","value":"LockedOwnership"},"id":11094,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11067,"type":"address payable","value":"_account"},"id":11095,"name":"Identifier","src":"2854:8:25"}],"id":11096,"name":"FunctionCall","src":"2838:25:25"}],"id":11097,"name":"EmitStatement","src":"2833:30:25"}],"id":11098,"name":"Block","src":"2819:55:25"}],"id":11099,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11014,"type":"function (address,address)","value":"TransferredOwnership"},"id":11100,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11101,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11067,"type":"address payable","value":"_account"},"id":11102,"name":"Identifier","src":"2963:8:25"}],"id":11103,"name":"FunctionCall","src":"2934:38:25"}],"id":11104,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11105,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11067,"type":"address payable","value":"_account"},"id":11106,"name":"Identifier","src":"3041:8:25"}],"id":11107,"name":"Assignment","src":"3032:17:25"}],"id":11108,"name":"ExpressionStatement","src":"3032:17:25"}],"id":11109,"name":"Block","src":"2339:717:25"}],"id":11110,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":11163,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":11111,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":11118,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11112,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":11113,"name":"VariableDeclaration","src":"3222:4:25"}],"id":11114,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":11114},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11115,"name":"Identifier","src":"3245:15:25"}],"id":11116,"name":"Return","src":"3238:22:25"}],"id":11117,"name":"Block","src":"3228:39:25"}],"id":11118,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":11163,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":11119,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":11122,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":11120,"name":"Identifier","src":"3581:9:25"}],"id":11121,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":11123,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11124,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":11125,"name":"Literal","src":"3681:31:25"}],"id":11126,"name":"FunctionCall","src":"3656:57:25"}],"id":11127,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11128,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11129,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11130,"name":"Literal","src":"3784:1:25"}],"id":11131,"name":"FunctionCall","src":"3776:10:25"}],"id":11132,"name":"Assignment","src":"3767:19:25"}],"id":11133,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11014,"type":"function (address,address)","value":"TransferredOwnership"},"id":11134,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11135,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11136,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11137,"name":"Literal","src":"3839:1:25"}],"id":11138,"name":"FunctionCall","src":"3831:10:25"}],"id":11139,"name":"FunctionCall","src":"3802:40:25"}],"id":11140,"name":"EmitStatement","src":"3797:45:25"}],"id":11141,"name":"Block","src":"3591:258:25"}],"id":11142,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":11163,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":11143,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":11150,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11144,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":11145,"name":"VariableDeclaration","src":"3970:15:25"}],"id":11146,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":11146},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11147,"name":"Identifier","src":"4004:6:25"}],"id":11148,"name":"Return","src":"3997:13:25"}],"id":11149,"name":"Block","src":"3987:30:25"}],"id":11150,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":11163,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":11162,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11151,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":11152,"name":"VariableDeclaration","src":"4141:16:25"}],"id":11153,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":11162,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11154,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":11155,"name":"VariableDeclaration","src":"4182:4:25"}],"id":11156,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":11156},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11152,"type":"address","value":"_address"},"id":11157,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11158,"name":"Identifier","src":"4217:6:25"}],"id":11159,"name":"BinaryOperation","src":"4205:18:25"}],"id":11160,"name":"Return","src":"4198:25:25"}],"id":11161,"name":"Block","src":"4188:42:25"}],"id":11162,"name":"FunctionDefinition","src":"4123:107:25"}],"id":11163,"name":"ContractDefinition","src":"1149:3083:25"}],"id":11164,"name":"SourceUnit","src":"767:3466:25"}},"internals/parseIntScientific.sol":{"AST":{"attributes":{"absolutePath":"internals/parseIntScientific.sol","exportedSymbols":{"ParseIntScientific":[8724]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8165,"name":"PragmaDirective","src":"777:24:26"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":8725,"symbolAliases":[null],"unitAlias":""},"id":8166,"name":"ImportDirective","src":"803:35:26"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ParseIntScientific provides floating point in scientific notation (e.g. e-5) parsing functionality.","fullyImplemented":true,"linearizedBaseContracts":[8724],"name":"ParseIntScientific","scope":8725},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":8167,"name":"UserDefinedTypeName","src":"992:8:26"},{"attributes":{"name":"uint256","type":"uint256"},"id":8168,"name":"ElementaryTypeName","src":"1005:7:26"}],"id":8169,"name":"UsingForDirective","src":"986:27:26"},{"attributes":{"constant":true,"name":"_PLUS_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8170,"name":"ElementaryTypeName","src":"1019:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8171,"name":"ElementaryTypeNameExpression","src":"1057:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_43_by_1","typeString":"int_const 43"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8172,"name":"ElementaryTypeNameExpression","src":"1064:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3433","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 43","value":"43"},"id":8173,"name":"Literal","src":"1070:2:26"}],"id":8174,"name":"FunctionCall","src":"1064:9:26"}],"id":8175,"name":"FunctionCall","src":"1057:17:26"}],"id":8176,"name":"VariableDeclaration","src":"1019:55:26"},{"attributes":{"constant":true,"name":"_DASH_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8177,"name":"ElementaryTypeName","src":"1103:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8178,"name":"ElementaryTypeNameExpression","src":"1141:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_45_by_1","typeString":"int_const 45"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8179,"name":"ElementaryTypeNameExpression","src":"1148:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3435","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 45","value":"45"},"id":8180,"name":"Literal","src":"1154:2:26"}],"id":8181,"name":"FunctionCall","src":"1148:9:26"}],"id":8182,"name":"FunctionCall","src":"1141:17:26"}],"id":8183,"name":"VariableDeclaration","src":"1103:55:26"},{"attributes":{"constant":true,"name":"_DOT_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8184,"name":"ElementaryTypeName","src":"1187:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8185,"name":"ElementaryTypeNameExpression","src":"1224:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_46_by_1","typeString":"int_const 46"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8186,"name":"ElementaryTypeNameExpression","src":"1231:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3436","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 46","value":"46"},"id":8187,"name":"Literal","src":"1237:2:26"}],"id":8188,"name":"FunctionCall","src":"1231:9:26"}],"id":8189,"name":"FunctionCall","src":"1224:17:26"}],"id":8190,"name":"VariableDeclaration","src":"1187:54:26"},{"attributes":{"constant":true,"name":"_ZERO_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8191,"name":"ElementaryTypeName","src":"1270:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8192,"name":"ElementaryTypeNameExpression","src":"1308:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8193,"name":"ElementaryTypeNameExpression","src":"1315:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":8194,"name":"Literal","src":"1321:2:26"}],"id":8195,"name":"FunctionCall","src":"1315:9:26"}],"id":8196,"name":"FunctionCall","src":"1308:17:26"}],"id":8197,"name":"VariableDeclaration","src":"1270:55:26"},{"attributes":{"constant":true,"name":"_NINE_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8198,"name":"ElementaryTypeName","src":"1354:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8199,"name":"ElementaryTypeNameExpression","src":"1392:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_57_by_1","typeString":"int_const 57"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8200,"name":"ElementaryTypeNameExpression","src":"1399:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":8201,"name":"Literal","src":"1405:2:26"}],"id":8202,"name":"FunctionCall","src":"1399:9:26"}],"id":8203,"name":"FunctionCall","src":"1392:17:26"}],"id":8204,"name":"VariableDeclaration","src":"1354:55:26"},{"attributes":{"constant":true,"name":"_E_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8205,"name":"ElementaryTypeName","src":"1438:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8206,"name":"ElementaryTypeNameExpression","src":"1473:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_69_by_1","typeString":"int_const 69"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8207,"name":"ElementaryTypeNameExpression","src":"1480:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3639","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 69","value":"69"},"id":8208,"name":"Literal","src":"1486:2:26"}],"id":8209,"name":"FunctionCall","src":"1480:9:26"}],"id":8210,"name":"FunctionCall","src":"1473:17:26"}],"id":8211,"name":"VariableDeclaration","src":"1438:52:26"},{"attributes":{"constant":true,"name":"_LOWERCASE_E_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8212,"name":"ElementaryTypeName","src":"1519:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8213,"name":"ElementaryTypeNameExpression","src":"1564:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8214,"name":"ElementaryTypeNameExpression","src":"1571:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"313031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 101","value":"101"},"id":8215,"name":"Literal","src":"1577:3:26"}],"id":8216,"name":"FunctionCall","src":"1571:10:26"}],"id":8217,"name":"FunctionCall","src":"1564:18:26"}],"id":8218,"name":"VariableDeclaration","src":"1519:63:26"},{"attributes":{"documentation":"@notice ParseIntScientific delegates the call to _parseIntScientific(string, uint) with the 2nd argument being 0.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_parseIntScientific","scope":8724,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_inString","scope":8231,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8219,"name":"ElementaryTypeName","src":"1763:6:26"}],"id":8220,"name":"VariableDeclaration","src":"1763:23:26"}],"id":8221,"name":"ParameterList","src":"1762:25:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":8231,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8222,"name":"ElementaryTypeName","src":"1811:7:26"}],"id":8223,"name":"VariableDeclaration","src":"1811:7:26"}],"id":8224,"name":"ParameterList","src":"1810:9:26"},{"children":[{"attributes":{"functionReturnParameters":8224},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8723,"type":"function (string memory,uint256) pure returns (uint256)","value":"_parseIntScientific"},"id":8225,"name":"Identifier","src":"1837:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8220,"type":"string memory","value":"_inString"},"id":8226,"name":"Identifier","src":"1857:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8227,"name":"Literal","src":"1868:1:26"}],"id":8228,"name":"FunctionCall","src":"1837:33:26"}],"id":8229,"name":"Return","src":"1830:40:26"}],"id":8230,"name":"Block","src":"1820:57:26"}],"id":8231,"name":"FunctionDefinition","src":"1734:143:26"},{"attributes":{"documentation":"@notice ParseIntScientificWei parses a rate expressed in ETH and returns its wei denomination","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_parseIntScientificWei","scope":8724,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_inString","scope":8244,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8232,"name":"ElementaryTypeName","src":"2017:6:26"}],"id":8233,"name":"VariableDeclaration","src":"2017:23:26"}],"id":8234,"name":"ParameterList","src":"2016:25:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":8244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8235,"name":"ElementaryTypeName","src":"2065:7:26"}],"id":8236,"name":"VariableDeclaration","src":"2065:7:26"}],"id":8237,"name":"ParameterList","src":"2064:9:26"},{"children":[{"attributes":{"functionReturnParameters":8237},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8723,"type":"function (string memory,uint256) pure returns (uint256)","value":"_parseIntScientific"},"id":8238,"name":"Identifier","src":"2091:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8233,"type":"string memory","value":"_inString"},"id":8239,"name":"Identifier","src":"2111:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3138","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18","value":"18"},"id":8240,"name":"Literal","src":"2122:2:26"}],"id":8241,"name":"FunctionCall","src":"2091:34:26"}],"id":8242,"name":"Return","src":"2084:41:26"}],"id":8243,"name":"Block","src":"2074:58:26"}],"id":8244,"name":"FunctionDefinition","src":"1985:147:26"},{"attributes":{"documentation":"@notice ParseIntScientific parses a JSON standard - floating point number.\n @param _inString is input string.\n @param _magnitudeMult multiplies the number with 10^_magnitudeMult.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_parseIntScientific","scope":8724,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_inString","scope":8723,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8245,"name":"ElementaryTypeName","src":"2368:6:26"}],"id":8246,"name":"VariableDeclaration","src":"2368:23:26"},{"attributes":{"constant":false,"name":"_magnitudeMult","scope":8723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8247,"name":"ElementaryTypeName","src":"2393:7:26"}],"id":8248,"name":"VariableDeclaration","src":"2393:22:26"}],"id":8249,"name":"ParameterList","src":"2367:49:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":8723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8250,"name":"ElementaryTypeName","src":"2440:7:26"}],"id":8251,"name":"VariableDeclaration","src":"2440:7:26"}],"id":8252,"name":"ParameterList","src":"2439:9:26"},{"children":[{"attributes":{"assignments":[8254]},"children":[{"attributes":{"constant":false,"name":"inBytes","scope":8722,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8253,"name":"ElementaryTypeName","src":"2459:5:26"}],"id":8254,"name":"VariableDeclaration","src":"2459:20:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":8255,"name":"ElementaryTypeNameExpression","src":"2482:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8246,"type":"string memory","value":"_inString"},"id":8256,"name":"Identifier","src":"2488:9:26"}],"id":8257,"name":"FunctionCall","src":"2482:16:26"}],"id":8258,"name":"VariableDeclarationStatement","src":"2459:39:26"},{"attributes":{"assignments":[8260]},"children":[{"attributes":{"constant":false,"name":"mint","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8259,"name":"ElementaryTypeName","src":"2508:7:26"}],"id":8260,"name":"VariableDeclaration","src":"2508:12:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8261,"name":"Literal","src":"2523:1:26"}],"id":8262,"name":"VariableDeclarationStatement","src":"2508:16:26"},{"attributes":{"assignments":[8264]},"children":[{"attributes":{"constant":false,"name":"mintDec","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8263,"name":"ElementaryTypeName","src":"2561:7:26"}],"id":8264,"name":"VariableDeclaration","src":"2561:15:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8265,"name":"Literal","src":"2579:1:26"}],"id":8266,"name":"VariableDeclarationStatement","src":"2561:19:26"},{"attributes":{"assignments":[8268]},"children":[{"attributes":{"constant":false,"name":"mintExp","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8267,"name":"ElementaryTypeName","src":"2630:7:26"}],"id":8268,"name":"VariableDeclaration","src":"2630:15:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8269,"name":"Literal","src":"2648:1:26"}],"id":8270,"name":"VariableDeclarationStatement","src":"2630:19:26"},{"attributes":{"assignments":[8272]},"children":[{"attributes":{"constant":false,"name":"decMinted","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8271,"name":"ElementaryTypeName","src":"2675:7:26"}],"id":8272,"name":"VariableDeclaration","src":"2675:17:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8273,"name":"Literal","src":"2695:1:26"}],"id":8274,"name":"VariableDeclarationStatement","src":"2675:21:26"},{"attributes":{"assignments":[8276]},"children":[{"attributes":{"constant":false,"name":"expIndex","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8275,"name":"ElementaryTypeName","src":"2742:7:26"}],"id":8276,"name":"VariableDeclaration","src":"2742:16:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8277,"name":"Literal","src":"2761:1:26"}],"id":8278,"name":"VariableDeclarationStatement","src":"2742:20:26"},{"attributes":{"assignments":[8280]},"children":[{"attributes":{"constant":false,"name":"integral","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8279,"name":"ElementaryTypeName","src":"2836:4:26"}],"id":8280,"name":"VariableDeclaration","src":"2836:13:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8281,"name":"Literal","src":"2852:5:26"}],"id":8282,"name":"VariableDeclarationStatement","src":"2836:21:26"},{"attributes":{"assignments":[8284]},"children":[{"attributes":{"constant":false,"name":"decimals","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8283,"name":"ElementaryTypeName","src":"2984:4:26"}],"id":8284,"name":"VariableDeclaration","src":"2984:13:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8285,"name":"Literal","src":"3000:5:26"}],"id":8286,"name":"VariableDeclarationStatement","src":"2984:21:26"},{"attributes":{"assignments":[8288]},"children":[{"attributes":{"constant":false,"name":"exp","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8287,"name":"ElementaryTypeName","src":"3074:4:26"}],"id":8288,"name":"VariableDeclaration","src":"3074:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8289,"name":"Literal","src":"3085:5:26"}],"id":8290,"name":"VariableDeclarationStatement","src":"3074:16:26"},{"attributes":{"assignments":[8292]},"children":[{"attributes":{"constant":false,"name":"minus","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8291,"name":"ElementaryTypeName","src":"3174:4:26"}],"id":8292,"name":"VariableDeclaration","src":"3174:10:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8293,"name":"Literal","src":"3187:5:26"}],"id":8294,"name":"VariableDeclarationStatement","src":"3174:18:26"},{"attributes":{"assignments":[8296]},"children":[{"attributes":{"constant":false,"name":"plus","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8295,"name":"ElementaryTypeName","src":"3243:4:26"}],"id":8296,"name":"VariableDeclaration","src":"3243:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8297,"name":"Literal","src":"3255:5:26"}],"id":8298,"name":"VariableDeclarationStatement","src":"3243:17:26"},{"attributes":{"assignments":[8300],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"i","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8299,"name":"ElementaryTypeName","src":"3311:7:26"}],"id":8300,"name":"VariableDeclaration","src":"3311:9:26"}],"id":8301,"name":"VariableDeclarationStatement","src":"3311:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8302,"name":"Identifier","src":"3335:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8303,"name":"Literal","src":"3339:1:26"}],"id":8304,"name":"Assignment","src":"3335:5:26"}],"id":8305,"name":"ExpressionStatement","src":"3335:5:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8306,"name":"Identifier","src":"3342:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8307,"name":"Identifier","src":"3346:7:26"}],"id":8308,"name":"MemberAccess","src":"3346:14:26"}],"id":8309,"name":"BinaryOperation","src":"3342:18:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8310,"name":"Identifier","src":"3362:1:26"}],"id":8311,"name":"UnaryOperation","src":"3362:3:26"}],"id":8312,"name":"ExpressionStatement","src":"3362:3:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8313,"name":"Identifier","src":"3386:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8314,"name":"Identifier","src":"3394:1:26"}],"id":8315,"name":"IndexAccess","src":"3386:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8316,"name":"Identifier","src":"3400:11:26"}],"id":8317,"name":"BinaryOperation","src":"3386:25:26"}],"id":8318,"name":"TupleExpression","src":"3385:27:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8319,"name":"Identifier","src":"3417:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8320,"name":"Identifier","src":"3425:1:26"}],"id":8321,"name":"IndexAccess","src":"3417:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8204,"type":"bytes1","value":"_NINE_ASCII"},"id":8322,"name":"Identifier","src":"3431:11:26"}],"id":8323,"name":"BinaryOperation","src":"3417:25:26"}],"id":8324,"name":"TupleExpression","src":"3416:27:26"}],"id":8325,"name":"BinaryOperation","src":"3385:58:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8326,"name":"Identifier","src":"3449:3:26"}],"id":8327,"name":"UnaryOperation","src":"3448:4:26"}],"id":8328,"name":"TupleExpression","src":"3447:6:26"}],"id":8329,"name":"BinaryOperation","src":"3385:68:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8284,"type":"bool","value":"decimals"},"id":8330,"name":"Identifier","src":"3554:8:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8331,"name":"Identifier","src":"3690:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8332,"name":"Identifier","src":"3700:7:26"}],"id":8333,"name":"MemberAccess","src":"3700:11:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8334,"name":"Literal","src":"3712:2:26"}],"id":8335,"name":"FunctionCall","src":"3700:15:26"}],"id":8336,"name":"Assignment","src":"3690:25:26"}],"id":8337,"name":"ExpressionStatement","src":"3690:25:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8338,"name":"Identifier","src":"3737:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8339,"name":"Identifier","src":"3747:7:26"}],"id":8340,"name":"MemberAccess","src":"3747:11:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8341,"name":"ElementaryTypeNameExpression","src":"3759:5:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8342,"name":"Identifier","src":"3765:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8343,"name":"Identifier","src":"3773:1:26"}],"id":8344,"name":"IndexAccess","src":"3765:10:26"}],"id":8345,"name":"FunctionCall","src":"3759:17:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8346,"name":"ElementaryTypeNameExpression","src":"3779:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8347,"name":"Identifier","src":"3785:11:26"}],"id":8348,"name":"FunctionCall","src":"3779:18:26"}],"id":8349,"name":"BinaryOperation","src":"3759:38:26"}],"id":8350,"name":"FunctionCall","src":"3747:51:26"}],"id":8351,"name":"Assignment","src":"3737:61:26"}],"id":8352,"name":"ExpressionStatement","src":"3737:61:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8353,"name":"Identifier","src":"3820:9:26"}],"id":8354,"name":"UnaryOperation","src":"3820:11:26"}],"id":8355,"name":"ExpressionStatement","src":"3820:11:26"}],"id":8356,"name":"Block","src":"3564:316:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8280,"type":"bool","value":"integral"},"id":8357,"name":"Identifier","src":"3958:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8358,"name":"Literal","src":"3969:4:26"}],"id":8359,"name":"Assignment","src":"3958:15:26"}],"id":8360,"name":"ExpressionStatement","src":"3958:15:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8361,"name":"Identifier","src":"4060:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8362,"name":"Identifier","src":"4067:4:26"}],"id":8363,"name":"MemberAccess","src":"4067:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8364,"name":"Literal","src":"4076:2:26"}],"id":8365,"name":"FunctionCall","src":"4067:12:26"}],"id":8366,"name":"Assignment","src":"4060:19:26"}],"id":8367,"name":"ExpressionStatement","src":"4060:19:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8368,"name":"Identifier","src":"4101:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8369,"name":"Identifier","src":"4108:4:26"}],"id":8370,"name":"MemberAccess","src":"4108:8:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8371,"name":"ElementaryTypeNameExpression","src":"4117:5:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8372,"name":"Identifier","src":"4123:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8373,"name":"Identifier","src":"4131:1:26"}],"id":8374,"name":"IndexAccess","src":"4123:10:26"}],"id":8375,"name":"FunctionCall","src":"4117:17:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8376,"name":"ElementaryTypeNameExpression","src":"4137:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8377,"name":"Identifier","src":"4143:11:26"}],"id":8378,"name":"FunctionCall","src":"4137:18:26"}],"id":8379,"name":"BinaryOperation","src":"4117:38:26"}],"id":8380,"name":"FunctionCall","src":"4108:48:26"}],"id":8381,"name":"Assignment","src":"4101:55:26"}],"id":8382,"name":"ExpressionStatement","src":"4101:55:26"}],"id":8383,"name":"Block","src":"3886:289:26"}],"id":8384,"name":"IfStatement","src":"3550:625:26"}],"id":8385,"name":"Block","src":"3455:734:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8386,"name":"Identifier","src":"4200:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8387,"name":"Identifier","src":"4208:1:26"}],"id":8388,"name":"IndexAccess","src":"4200:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8389,"name":"Identifier","src":"4214:11:26"}],"id":8390,"name":"BinaryOperation","src":"4200:25:26"}],"id":8391,"name":"TupleExpression","src":"4199:27:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8392,"name":"Identifier","src":"4231:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8393,"name":"Identifier","src":"4239:1:26"}],"id":8394,"name":"IndexAccess","src":"4231:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8204,"type":"bytes1","value":"_NINE_ASCII"},"id":8395,"name":"Identifier","src":"4245:11:26"}],"id":8396,"name":"BinaryOperation","src":"4231:25:26"}],"id":8397,"name":"TupleExpression","src":"4230:27:26"}],"id":8398,"name":"BinaryOperation","src":"4199:58:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8399,"name":"Identifier","src":"4262:3:26"}],"id":8400,"name":"TupleExpression","src":"4261:5:26"}],"id":8401,"name":"BinaryOperation","src":"4199:67:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8402,"name":"Identifier","src":"4369:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8403,"name":"Identifier","src":"4379:7:26"}],"id":8404,"name":"MemberAccess","src":"4379:11:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8405,"name":"Literal","src":"4391:2:26"}],"id":8406,"name":"FunctionCall","src":"4379:15:26"}],"id":8407,"name":"Assignment","src":"4369:25:26"}],"id":8408,"name":"ExpressionStatement","src":"4369:25:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8409,"name":"Identifier","src":"4412:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8410,"name":"Identifier","src":"4422:7:26"}],"id":8411,"name":"MemberAccess","src":"4422:11:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8412,"name":"ElementaryTypeNameExpression","src":"4434:5:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8413,"name":"Identifier","src":"4440:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8414,"name":"Identifier","src":"4448:1:26"}],"id":8415,"name":"IndexAccess","src":"4440:10:26"}],"id":8416,"name":"FunctionCall","src":"4434:17:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8417,"name":"ElementaryTypeNameExpression","src":"4454:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8418,"name":"Identifier","src":"4460:11:26"}],"id":8419,"name":"FunctionCall","src":"4454:18:26"}],"id":8420,"name":"BinaryOperation","src":"4434:38:26"}],"id":8421,"name":"FunctionCall","src":"4422:51:26"}],"id":8422,"name":"Assignment","src":"4412:61:26"}],"id":8423,"name":"ExpressionStatement","src":"4412:61:26"}],"id":8424,"name":"Block","src":"4268:220:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8425,"name":"Identifier","src":"4498:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8426,"name":"Identifier","src":"4506:1:26"}],"id":8427,"name":"IndexAccess","src":"4498:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8190,"type":"bytes1","value":"_DOT_ASCII"},"id":8428,"name":"Identifier","src":"4512:10:26"}],"id":8429,"name":"BinaryOperation","src":"4498:24:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc48b10531bbe78174fcd32830f069ab53734b829ba761f546093e1cc82044f9","typeString":"literal_string \"missing integral part\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8430,"name":"Identifier","src":"4615:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8280,"type":"bool","value":"integral"},"id":8431,"name":"Identifier","src":"4623:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d697373696e6720696e74656772616c2070617274","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"missing integral part\"","value":"missing integral part"},"id":8432,"name":"Literal","src":"4633:23:26"}],"id":8433,"name":"FunctionCall","src":"4615:42:26"}],"id":8434,"name":"ExpressionStatement","src":"4615:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_faa389cc400e7ca78bd15c3a29e23853df4262382ca0cceec80a1c591657d449","typeString":"literal_string \"duplicate decimal point\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8435,"name":"Identifier","src":"4742:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8284,"type":"bool","value":"decimals"},"id":8436,"name":"Identifier","src":"4751:8:26"}],"id":8437,"name":"UnaryOperation","src":"4750:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6475706c696361746520646563696d616c20706f696e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"duplicate decimal point\"","value":"duplicate decimal point"},"id":8438,"name":"Literal","src":"4761:25:26"}],"id":8439,"name":"FunctionCall","src":"4742:45:26"}],"id":8440,"name":"ExpressionStatement","src":"4742:45:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8883756a1c35ace1de2a0992a35b0cd26b81e10ff40d67218af35e2d14d539dd","typeString":"literal_string \"decimal after exponent\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8441,"name":"Identifier","src":"4878:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8442,"name":"Identifier","src":"4887:3:26"}],"id":8443,"name":"UnaryOperation","src":"4886:4:26"},{"attributes":{"argumentTypes":null,"hexvalue":"646563696d616c206166746572206578706f6e656e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"decimal after exponent\"","value":"decimal after exponent"},"id":8444,"name":"Literal","src":"4892:24:26"}],"id":8445,"name":"FunctionCall","src":"4878:39:26"}],"id":8446,"name":"ExpressionStatement","src":"4878:39:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8284,"type":"bool","value":"decimals"},"id":8447,"name":"Identifier","src":"4935:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8448,"name":"Literal","src":"4946:4:26"}],"id":8449,"name":"Assignment","src":"4935:15:26"}],"id":8450,"name":"ExpressionStatement","src":"4935:15:26"}],"id":8451,"name":"Block","src":"4524:441:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8452,"name":"Identifier","src":"4975:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8453,"name":"Identifier","src":"4983:1:26"}],"id":8454,"name":"IndexAccess","src":"4975:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8183,"type":"bytes1","value":"_DASH_ASCII"},"id":8455,"name":"Identifier","src":"4989:11:26"}],"id":8456,"name":"BinaryOperation","src":"4975:25:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fddc956a222b6104f304a9e26f8b7fd82d48f9d168c32972a3d2f6ffe06e8c4f","typeString":"literal_string \"duplicate -\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8457,"name":"Identifier","src":"5094:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8458,"name":"Identifier","src":"5103:5:26"}],"id":8459,"name":"UnaryOperation","src":"5102:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6475706c6963617465202d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"duplicate -\"","value":"duplicate -"},"id":8460,"name":"Literal","src":"5110:13:26"}],"id":8461,"name":"FunctionCall","src":"5094:30:26"}],"id":8462,"name":"ExpressionStatement","src":"5094:30:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bab8ec0ce562a399c5e585804d653b1b054aeb400ff689348a971eba5722aac6","typeString":"literal_string \"extra sign\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8463,"name":"Identifier","src":"5142:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8296,"type":"bool","value":"plus"},"id":8464,"name":"Identifier","src":"5151:4:26"}],"id":8465,"name":"UnaryOperation","src":"5150:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6578747261207369676e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"extra sign\"","value":"extra sign"},"id":8466,"name":"Literal","src":"5157:12:26"}],"id":8467,"name":"FunctionCall","src":"5142:28:26"}],"id":8468,"name":"ExpressionStatement","src":"5142:28:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_08b50295d4c3982734373058e6c6cc20446016e7f4adb2988978b0977d838340","typeString":"literal_string \"- sign not immediately after e\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8469,"name":"Identifier","src":"5188:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8470,"name":"Identifier","src":"5196:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8471,"name":"Literal","src":"5207:1:26"}],"id":8472,"name":"BinaryOperation","src":"5196:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8473,"name":"Identifier","src":"5212:1:26"}],"id":8474,"name":"BinaryOperation","src":"5196:17:26"},{"attributes":{"argumentTypes":null,"hexvalue":"2d207369676e206e6f7420696d6d6564696174656c792061667465722065","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"- sign not immediately after e\"","value":"- sign not immediately after e"},"id":8475,"name":"Literal","src":"5215:32:26"}],"id":8476,"name":"FunctionCall","src":"5188:60:26"}],"id":8477,"name":"ExpressionStatement","src":"5188:60:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8478,"name":"Identifier","src":"5266:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8479,"name":"Literal","src":"5274:4:26"}],"id":8480,"name":"Assignment","src":"5266:12:26"}],"id":8481,"name":"ExpressionStatement","src":"5266:12:26"}],"id":8482,"name":"Block","src":"5002:291:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8483,"name":"Identifier","src":"5303:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8484,"name":"Identifier","src":"5311:1:26"}],"id":8485,"name":"IndexAccess","src":"5303:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8176,"type":"bytes1","value":"_PLUS_ASCII"},"id":8486,"name":"Identifier","src":"5317:11:26"}],"id":8487,"name":"BinaryOperation","src":"5303:25:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fb5f98f55e56ac8a60ebdeabdabc0be14716c6a604a48c04783fed56a7e93a9","typeString":"literal_string \"duplicate +\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8488,"name":"Identifier","src":"5422:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8296,"type":"bool","value":"plus"},"id":8489,"name":"Identifier","src":"5431:4:26"}],"id":8490,"name":"UnaryOperation","src":"5430:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6475706c6963617465202b","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"duplicate +\"","value":"duplicate +"},"id":8491,"name":"Literal","src":"5437:13:26"}],"id":8492,"name":"FunctionCall","src":"5422:29:26"}],"id":8493,"name":"ExpressionStatement","src":"5422:29:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bab8ec0ce562a399c5e585804d653b1b054aeb400ff689348a971eba5722aac6","typeString":"literal_string \"extra sign\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8494,"name":"Identifier","src":"5469:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8495,"name":"Identifier","src":"5478:5:26"}],"id":8496,"name":"UnaryOperation","src":"5477:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6578747261207369676e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"extra sign\"","value":"extra sign"},"id":8497,"name":"Literal","src":"5485:12:26"}],"id":8498,"name":"FunctionCall","src":"5469:29:26"}],"id":8499,"name":"ExpressionStatement","src":"5469:29:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0b6894ec12a87b2f0d7040decb56cfcd2617efb2e364cbbbf577d371ad72c6fc","typeString":"literal_string \"+ sign not immediately after e\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8500,"name":"Identifier","src":"5516:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8501,"name":"Identifier","src":"5524:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8502,"name":"Literal","src":"5535:1:26"}],"id":8503,"name":"BinaryOperation","src":"5524:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8504,"name":"Identifier","src":"5540:1:26"}],"id":8505,"name":"BinaryOperation","src":"5524:17:26"},{"attributes":{"argumentTypes":null,"hexvalue":"2b207369676e206e6f7420696d6d6564696174656c792061667465722065","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"+ sign not immediately after e\"","value":"+ sign not immediately after e"},"id":8506,"name":"Literal","src":"5543:32:26"}],"id":8507,"name":"FunctionCall","src":"5516:60:26"}],"id":8508,"name":"ExpressionStatement","src":"5516:60:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8296,"type":"bool","value":"plus"},"id":8509,"name":"Identifier","src":"5594:4:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8510,"name":"Literal","src":"5601:4:26"}],"id":8511,"name":"Assignment","src":"5594:11:26"}],"id":8512,"name":"ExpressionStatement","src":"5594:11:26"}],"id":8513,"name":"Block","src":"5330:290:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8514,"name":"Identifier","src":"5631:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8515,"name":"Identifier","src":"5639:1:26"}],"id":8516,"name":"IndexAccess","src":"5631:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8211,"type":"bytes1","value":"_E_ASCII"},"id":8517,"name":"Identifier","src":"5645:8:26"}],"id":8518,"name":"BinaryOperation","src":"5631:22:26"}],"id":8519,"name":"TupleExpression","src":"5630:24:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8520,"name":"Identifier","src":"5659:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8521,"name":"Identifier","src":"5667:1:26"}],"id":8522,"name":"IndexAccess","src":"5659:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"bytes1","value":"_LOWERCASE_E_ASCII"},"id":8523,"name":"Identifier","src":"5673:18:26"}],"id":8524,"name":"BinaryOperation","src":"5659:32:26"}],"id":8525,"name":"TupleExpression","src":"5658:34:26"}],"id":8526,"name":"BinaryOperation","src":"5630:62:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc48b10531bbe78174fcd32830f069ab53734b829ba761f546093e1cc82044f9","typeString":"literal_string \"missing integral part\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8527,"name":"Identifier","src":"5785:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8280,"type":"bool","value":"integral"},"id":8528,"name":"Identifier","src":"5793:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d697373696e6720696e74656772616c2070617274","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"missing integral part\"","value":"missing integral part"},"id":8529,"name":"Literal","src":"5803:23:26"}],"id":8530,"name":"FunctionCall","src":"5785:42:26"}],"id":8531,"name":"ExpressionStatement","src":"5785:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8221306681a4710f7101aebec1a9ed39a02e65f2053accb8da82a8b8d265178b","typeString":"literal_string \"duplicate exponent symbol\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8532,"name":"Identifier","src":"5926:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8533,"name":"Identifier","src":"5935:3:26"}],"id":8534,"name":"UnaryOperation","src":"5934:4:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6475706c6963617465206578706f6e656e742073796d626f6c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"duplicate exponent symbol\"","value":"duplicate exponent symbol"},"id":8535,"name":"Literal","src":"5940:27:26"}],"id":8536,"name":"FunctionCall","src":"5926:42:26"}],"id":8537,"name":"ExpressionStatement","src":"5926:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8538,"name":"Identifier","src":"5986:3:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8539,"name":"Literal","src":"5992:4:26"}],"id":8540,"name":"Assignment","src":"5986:10:26"}],"id":8541,"name":"ExpressionStatement","src":"5986:10:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8542,"name":"Identifier","src":"6014:8:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8543,"name":"Identifier","src":"6025:1:26"}],"id":8544,"name":"Assignment","src":"6014:12:26"}],"id":8545,"name":"ExpressionStatement","src":"6014:12:26"}],"id":8546,"name":"Block","src":"5694:347:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_263e499057963449b94813024f498810f3a67efd8a4e3f85263ed86cf4c882d4","typeString":"literal_string \"invalid digit\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":8547,"name":"Identifier","src":"6065:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964206469676974","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid digit\"","value":"invalid digit"},"id":8548,"name":"Literal","src":"6072:15:26"}],"id":8549,"name":"FunctionCall","src":"6065:23:26"}],"id":8550,"name":"ExpressionStatement","src":"6065:23:26"}],"id":8551,"name":"Block","src":"6047:56:26"}],"id":8552,"name":"IfStatement","src":"5626:477:26"}],"id":8553,"name":"IfStatement","src":"5299:804:26"}],"id":8554,"name":"IfStatement","src":"4971:1132:26"}],"id":8555,"name":"IfStatement","src":"4494:1609:26"}],"id":8556,"name":"IfStatement","src":"4195:1908:26"}],"id":8557,"name":"IfStatement","src":"3381:2722:26"}],"id":8558,"name":"Block","src":"3367:2746:26"}],"id":8559,"name":"ForStatement","src":"3330:2783:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8560,"name":"Identifier","src":"6127:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8296,"type":"bool","value":"plus"},"id":8561,"name":"Identifier","src":"6136:4:26"}],"id":8562,"name":"BinaryOperation","src":"6127:13:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":8563,"name":"Identifier","src":"6224:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8564,"name":"Identifier","src":"6232:1:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8565,"name":"Identifier","src":"6236:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8566,"name":"Literal","src":"6247:1:26"}],"id":8567,"name":"BinaryOperation","src":"6236:12:26"}],"id":8568,"name":"BinaryOperation","src":"6232:16:26"}],"id":8569,"name":"FunctionCall","src":"6224:25:26"}],"id":8570,"name":"ExpressionStatement","src":"6224:25:26"}],"id":8571,"name":"Block","src":"6142:118:26"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8572,"name":"Identifier","src":"6270:3:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":8573,"name":"Identifier","src":"6354:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8574,"name":"Identifier","src":"6362:1:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8575,"name":"Identifier","src":"6366:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8576,"name":"Literal","src":"6377:1:26"}],"id":8577,"name":"BinaryOperation","src":"6366:12:26"}],"id":8578,"name":"BinaryOperation","src":"6362:16:26"}],"id":8579,"name":"FunctionCall","src":"6354:25:26"}],"id":8580,"name":"ExpressionStatement","src":"6354:25:26"}],"id":8581,"name":"Block","src":"6275:115:26"}],"id":8582,"name":"IfStatement","src":"6266:124:26"}],"id":8583,"name":"IfStatement","src":"6123:267:26"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8584,"name":"Identifier","src":"6404:5:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8585,"name":"Identifier","src":"6451:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8586,"name":"Identifier","src":"6462:14:26"}],"id":8587,"name":"BinaryOperation","src":"6451:25:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f98424152698a23aa5d00b5ca124c02ac74940e78996da7992f427dbf3c7fbaa","typeString":"literal_string \"exponent > 77\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8588,"name":"Identifier","src":"6660:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8589,"name":"Identifier","src":"6668:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8590,"name":"Identifier","src":"6678:14:26"}],"id":8591,"name":"BinaryOperation","src":"6668:24:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8592,"name":"Literal","src":"6695:2:26"}],"id":8593,"name":"BinaryOperation","src":"6668:29:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6578706f6e656e74203e203737","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"exponent > 77\"","value":"exponent > 77"},"id":8594,"name":"Literal","src":"6699:15:26"}],"id":8595,"name":"FunctionCall","src":"6660:55:26"}],"id":8596,"name":"ExpressionStatement","src":"6660:55:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8597,"name":"Identifier","src":"6736:4:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8598,"name":"Literal","src":"6744:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8599,"name":"Identifier","src":"6749:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8600,"name":"Identifier","src":"6759:14:26"}],"id":8601,"name":"BinaryOperation","src":"6749:24:26"}],"id":8602,"name":"TupleExpression","src":"6748:26:26"}],"id":8603,"name":"BinaryOperation","src":"6744:30:26"}],"id":8604,"name":"Assignment","src":"6736:38:26"}],"id":8605,"name":"ExpressionStatement","src":"6736:38:26"},{"attributes":{"functionReturnParameters":8252},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8606,"name":"Identifier","src":"6799:4:26"}],"id":8607,"name":"Return","src":"6792:11:26"}],"id":8608,"name":"Block","src":"6478:340:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8609,"name":"Identifier","src":"6988:14:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8610,"name":"Identifier","src":"7005:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8611,"name":"Identifier","src":"7022:7:26"}],"id":8612,"name":"BinaryOperation","src":"7005:24:26"}],"id":8613,"name":"Assignment","src":"6988:41:26"}],"id":8614,"name":"ExpressionStatement","src":"6988:41:26"}],"id":8615,"name":"Block","src":"6824:220:26"}],"id":8616,"name":"IfStatement","src":"6447:597:26"}],"id":8617,"name":"Block","src":"6411:643:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8618,"name":"Identifier","src":"7228:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8619,"name":"Identifier","src":"7245:14:26"}],"id":8620,"name":"MemberAccess","src":"7245:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8621,"name":"Identifier","src":"7264:7:26"}],"id":8622,"name":"FunctionCall","src":"7245:27:26"}],"id":8623,"name":"Assignment","src":"7228:44:26"}],"id":8624,"name":"ExpressionStatement","src":"7228:44:26"}],"id":8625,"name":"Block","src":"7060:223:26"}],"id":8626,"name":"IfStatement","src":"6400:883:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8627,"name":"Identifier","src":"7297:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8628,"name":"Identifier","src":"7315:9:26"}],"id":8629,"name":"BinaryOperation","src":"7297:27:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_545d4fd2fc2d29577ea509f1f1de73a3a1e163ebbff71e310c3e36a13d2fa3fb","typeString":"literal_string \"more than 77 decimal digits parsed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8630,"name":"Identifier","src":"7545:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8631,"name":"Identifier","src":"7553:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8632,"name":"Literal","src":"7565:2:26"}],"id":8633,"name":"BinaryOperation","src":"7553:14:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f7265207468616e20373720646563696d616c2064696769747320706172736564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"more than 77 decimal digits parsed\"","value":"more than 77 decimal digits parsed"},"id":8634,"name":"Literal","src":"7569:36:26"}],"id":8635,"name":"FunctionCall","src":"7545:61:26"}],"id":8636,"name":"ExpressionStatement","src":"7545:61:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8637,"name":"Identifier","src":"7623:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8638,"name":"Identifier","src":"7630:4:26"}],"id":8639,"name":"MemberAccess","src":"7630:8:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8640,"name":"Literal","src":"7639:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8641,"name":"Identifier","src":"7644:9:26"}],"id":8642,"name":"TupleExpression","src":"7643:11:26"}],"id":8643,"name":"BinaryOperation","src":"7639:15:26"}],"id":8644,"name":"FunctionCall","src":"7630:25:26"}],"id":8645,"name":"Assignment","src":"7623:32:26"}],"id":8646,"name":"ExpressionStatement","src":"7623:32:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8647,"name":"Identifier","src":"7669:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8648,"name":"Identifier","src":"7676:4:26"}],"id":8649,"name":"MemberAccess","src":"7676:8:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8650,"name":"Identifier","src":"7685:7:26"}],"id":8651,"name":"FunctionCall","src":"7676:17:26"}],"id":8652,"name":"Assignment","src":"7669:24:26"}],"id":8653,"name":"ExpressionStatement","src":"7669:24:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f98424152698a23aa5d00b5ca124c02ac74940e78996da7992f427dbf3c7fbaa","typeString":"literal_string \"exponent > 77\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8654,"name":"Identifier","src":"7793:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8655,"name":"Identifier","src":"7801:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8656,"name":"Identifier","src":"7818:9:26"}],"id":8657,"name":"BinaryOperation","src":"7801:26:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8658,"name":"Literal","src":"7830:2:26"}],"id":8659,"name":"BinaryOperation","src":"7801:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6578706f6e656e74203e203737","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"exponent > 77\"","value":"exponent > 77"},"id":8660,"name":"Literal","src":"7834:15:26"}],"id":8661,"name":"FunctionCall","src":"7793:57:26"}],"id":8662,"name":"ExpressionStatement","src":"7793:57:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8663,"name":"Identifier","src":"7867:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8664,"name":"Identifier","src":"7874:4:26"}],"id":8665,"name":"MemberAccess","src":"7874:8:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8666,"name":"Literal","src":"7883:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8667,"name":"Identifier","src":"7888:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8668,"name":"Identifier","src":"7905:9:26"}],"id":8669,"name":"BinaryOperation","src":"7888:26:26"}],"id":8670,"name":"TupleExpression","src":"7887:28:26"}],"id":8671,"name":"BinaryOperation","src":"7883:32:26"}],"id":8672,"name":"FunctionCall","src":"7874:42:26"}],"id":8673,"name":"Assignment","src":"7867:49:26"}],"id":8674,"name":"ExpressionStatement","src":"7867:49:26"}],"id":8675,"name":"Block","src":"7326:601:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8676,"name":"Identifier","src":"8074:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8677,"name":"Identifier","src":"8087:14:26"}],"id":8678,"name":"Assignment","src":"8074:27:26"}],"id":8679,"name":"ExpressionStatement","src":"8074:27:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_545d4fd2fc2d29577ea509f1f1de73a3a1e163ebbff71e310c3e36a13d2fa3fb","typeString":"literal_string \"more than 77 decimal digits parsed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8680,"name":"Identifier","src":"8115:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8681,"name":"Identifier","src":"8123:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8682,"name":"Literal","src":"8135:2:26"}],"id":8683,"name":"BinaryOperation","src":"8123:14:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f7265207468616e20373720646563696d616c2064696769747320706172736564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"more than 77 decimal digits parsed\"","value":"more than 77 decimal digits parsed"},"id":8684,"name":"Literal","src":"8139:36:26"}],"id":8685,"name":"FunctionCall","src":"8115:61:26"}],"id":8686,"name":"ExpressionStatement","src":"8115:61:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8687,"name":"Identifier","src":"8193:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8688,"name":"Literal","src":"8204:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8689,"name":"Identifier","src":"8209:9:26"}],"id":8690,"name":"TupleExpression","src":"8208:11:26"}],"id":8691,"name":"BinaryOperation","src":"8204:15:26"}],"id":8692,"name":"Assignment","src":"8193:26:26"}],"id":8693,"name":"ExpressionStatement","src":"8193:26:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_545d4fd2fc2d29577ea509f1f1de73a3a1e163ebbff71e310c3e36a13d2fa3fb","typeString":"literal_string \"more than 77 decimal digits parsed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8694,"name":"Identifier","src":"8293:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8695,"name":"Identifier","src":"8301:14:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8696,"name":"Literal","src":"8318:2:26"}],"id":8697,"name":"BinaryOperation","src":"8301:19:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f7265207468616e20373720646563696d616c2064696769747320706172736564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"more than 77 decimal digits parsed\"","value":"more than 77 decimal digits parsed"},"id":8698,"name":"Literal","src":"8322:36:26"}],"id":8699,"name":"FunctionCall","src":"8293:66:26"}],"id":8700,"name":"ExpressionStatement","src":"8293:66:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8701,"name":"Identifier","src":"8376:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8702,"name":"Identifier","src":"8383:4:26"}],"id":8703,"name":"MemberAccess","src":"8383:8:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8704,"name":"Literal","src":"8392:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8705,"name":"Identifier","src":"8397:14:26"}],"id":8706,"name":"TupleExpression","src":"8396:16:26"}],"id":8707,"name":"BinaryOperation","src":"8392:20:26"}],"id":8708,"name":"FunctionCall","src":"8383:30:26"}],"id":8709,"name":"Assignment","src":"8376:37:26"}],"id":8710,"name":"ExpressionStatement","src":"8376:37:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8711,"name":"Identifier","src":"8427:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8712,"name":"Identifier","src":"8434:4:26"}],"id":8713,"name":"MemberAccess","src":"8434:8:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8714,"name":"Identifier","src":"8443:7:26"}],"id":8715,"name":"FunctionCall","src":"8434:17:26"}],"id":8716,"name":"Assignment","src":"8427:24:26"}],"id":8717,"name":"ExpressionStatement","src":"8427:24:26"}],"id":8718,"name":"Block","src":"7933:529:26"}],"id":8719,"name":"IfStatement","src":"7293:1169:26"},{"attributes":{"functionReturnParameters":8252},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8720,"name":"Identifier","src":"8478:4:26"}],"id":8721,"name":"Return","src":"8471:11:26"}],"id":8722,"name":"Block","src":"2449:6040:26"}],"id":8723,"name":"FunctionDefinition","src":"2339:6150:26"}],"id":8724,"name":"ContractDefinition","src":"952:7539:26"}],"id":8725,"name":"SourceUnit","src":"777:7715:26"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[8941]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8726,"name":"PragmaDirective","src":"778:24:27"},{"attributes":{"SourceUnit":10735,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":8942,"symbolAliases":[null],"unitAlias":""},"id":8727,"name":"ImportDirective","src":"804:31:27"},{"attributes":{"SourceUnit":8164,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":8942,"symbolAliases":[null],"unitAlias":""},"id":8728,"name":"ImportDirective","src":"836:29:27"},{"attributes":{"contractDependencies":[8163],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[8941,8163],"name":"TokenWhitelistable","scope":8942},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":8163,"type":"contract ENSResolvable"},"id":8729,"name":"UserDefinedTypeName","src":"989:13:27"}],"id":8730,"name":"InheritanceSpecifier","src":"989:13:27"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":8941,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8731,"name":"ElementaryTypeName","src":"1092:7:27"}],"id":8732,"name":"VariableDeclaration","src":"1092:35:27"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":8941,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":8742,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8733,"name":"ElementaryTypeName","src":"1292:7:27"}],"id":8734,"name":"VariableDeclaration","src":"1292:28:27"}],"id":8735,"name":"ParameterList","src":"1291:30:27"},{"attributes":{"parameters":[null]},"children":[],"id":8736,"name":"ParameterList","src":"1331:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8737,"name":"Identifier","src":"1341:19:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8734,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":8738,"name":"Identifier","src":"1363:20:27"}],"id":8739,"name":"Assignment","src":"1341:42:27"}],"id":8740,"name":"ExpressionStatement","src":"1341:42:27"}],"id":8741,"name":"Block","src":"1331:59:27"}],"id":8742,"name":"FunctionDefinition","src":"1280:110:27"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8743,"name":"ParameterList","src":"1541:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8750,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8744,"name":"ElementaryTypeName","src":"1567:7:27"}],"id":8745,"name":"VariableDeclaration","src":"1567:7:27"}],"id":8746,"name":"ParameterList","src":"1566:9:27"},{"children":[{"attributes":{"functionReturnParameters":8746},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8747,"name":"Identifier","src":"1593:19:27"}],"id":8748,"name":"Return","src":"1586:26:27"}],"id":8749,"name":"Block","src":"1576:43:27"}],"id":8750,"name":"FunctionDefinition","src":"1514:105:27"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":8779,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8751,"name":"ElementaryTypeName","src":"2194:7:27"}],"id":8752,"name":"VariableDeclaration","src":"2194:10:27"}],"id":8753,"name":"ParameterList","src":"2193:12:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8754,"name":"ElementaryTypeName","src":"2229:6:27"}],"id":8755,"name":"VariableDeclaration","src":"2229:13:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8756,"name":"ElementaryTypeName","src":"2244:7:27"}],"id":8757,"name":"VariableDeclaration","src":"2244:7:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8758,"name":"ElementaryTypeName","src":"2253:7:27"}],"id":8759,"name":"VariableDeclaration","src":"2253:7:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8760,"name":"ElementaryTypeName","src":"2262:4:27"}],"id":8761,"name":"VariableDeclaration","src":"2262:4:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8762,"name":"ElementaryTypeName","src":"2268:4:27"}],"id":8763,"name":"VariableDeclaration","src":"2268:4:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8764,"name":"ElementaryTypeName","src":"2274:4:27"}],"id":8765,"name":"VariableDeclaration","src":"2274:4:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8766,"name":"ElementaryTypeName","src":"2280:7:27"}],"id":8767,"name":"VariableDeclaration","src":"2280:7:27"}],"id":8768,"name":"ParameterList","src":"2228:60:27"},{"children":[{"attributes":{"functionReturnParameters":8768},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":9772,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8769,"name":"Identifier","src":"2306:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8770,"name":"Identifier","src":"2322:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8771,"name":"Identifier","src":"2334:19:27"}],"id":8772,"name":"FunctionCall","src":"2322:32:27"}],"id":8773,"name":"FunctionCall","src":"2306:49:27"}],"id":8774,"name":"MemberAccess","src":"2306:62:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8752,"type":"address","value":"_a"},"id":8775,"name":"Identifier","src":"2369:2:27"}],"id":8776,"name":"FunctionCall","src":"2306:66:27"}],"id":8777,"name":"Return","src":"2299:73:27"}],"id":8778,"name":"Block","src":"2289:90:27"}],"id":8779,"name":"FunctionDefinition","src":"2171:208:27"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8780,"name":"ParameterList","src":"2914:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8781,"name":"ElementaryTypeName","src":"2940:6:27"}],"id":8782,"name":"VariableDeclaration","src":"2940:13:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8783,"name":"ElementaryTypeName","src":"2955:7:27"}],"id":8784,"name":"VariableDeclaration","src":"2955:7:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8785,"name":"ElementaryTypeName","src":"2964:7:27"}],"id":8786,"name":"VariableDeclaration","src":"2964:7:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8787,"name":"ElementaryTypeName","src":"2973:4:27"}],"id":8788,"name":"VariableDeclaration","src":"2973:4:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8789,"name":"ElementaryTypeName","src":"2979:4:27"}],"id":8790,"name":"VariableDeclaration","src":"2979:4:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8791,"name":"ElementaryTypeName","src":"2985:4:27"}],"id":8792,"name":"VariableDeclaration","src":"2985:4:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8793,"name":"ElementaryTypeName","src":"2991:7:27"}],"id":8794,"name":"VariableDeclaration","src":"2991:7:27"}],"id":8795,"name":"ParameterList","src":"2939:60:27"},{"children":[{"attributes":{"functionReturnParameters":8795},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":9789,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8796,"name":"Identifier","src":"3017:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8797,"name":"Identifier","src":"3033:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8798,"name":"Identifier","src":"3045:19:27"}],"id":8799,"name":"FunctionCall","src":"3033:32:27"}],"id":8800,"name":"FunctionCall","src":"3017:49:27"}],"id":8801,"name":"MemberAccess","src":"3017:67:27"}],"id":8802,"name":"FunctionCall","src":"3017:69:27"}],"id":8803,"name":"Return","src":"3010:76:27"}],"id":8804,"name":"Block","src":"3000:93:27"}],"id":8805,"name":"FunctionDefinition","src":"2887:206:27"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8806,"name":"ParameterList","src":"3247:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8820,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8807,"name":"ElementaryTypeName","src":"3273:7:27"}],"id":8808,"name":"ArrayTypeName","src":"3273:9:27"}],"id":8809,"name":"VariableDeclaration","src":"3273:16:27"}],"id":8810,"name":"ParameterList","src":"3272:18:27"},{"children":[{"attributes":{"functionReturnParameters":8810},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":9795,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8811,"name":"Identifier","src":"3308:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8812,"name":"Identifier","src":"3324:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8813,"name":"Identifier","src":"3336:19:27"}],"id":8814,"name":"FunctionCall","src":"3324:32:27"}],"id":8815,"name":"FunctionCall","src":"3308:49:27"}],"id":8816,"name":"MemberAccess","src":"3308:67:27"}],"id":8817,"name":"FunctionCall","src":"3308:69:27"}],"id":8818,"name":"Return","src":"3301:76:27"}],"id":8819,"name":"Block","src":"3291:93:27"}],"id":8820,"name":"FunctionDefinition","src":"3220:164:27"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8821,"name":"ParameterList","src":"3537:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8835,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8822,"name":"ElementaryTypeName","src":"3563:7:27"}],"id":8823,"name":"ArrayTypeName","src":"3563:9:27"}],"id":8824,"name":"VariableDeclaration","src":"3563:16:27"}],"id":8825,"name":"ParameterList","src":"3562:18:27"},{"children":[{"attributes":{"functionReturnParameters":8825},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":9801,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8826,"name":"Identifier","src":"3598:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8827,"name":"Identifier","src":"3614:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8828,"name":"Identifier","src":"3626:19:27"}],"id":8829,"name":"FunctionCall","src":"3614:32:27"}],"id":8830,"name":"FunctionCall","src":"3598:49:27"}],"id":8831,"name":"MemberAccess","src":"3598:66:27"}],"id":8832,"name":"FunctionCall","src":"3598:68:27"}],"id":8833,"name":"Return","src":"3591:75:27"}],"id":8834,"name":"Block","src":"3581:92:27"}],"id":8835,"name":"FunctionDefinition","src":"3511:162:27"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":8941,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":8856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8836,"name":"ElementaryTypeName","src":"3976:7:27"}],"id":8837,"name":"VariableDeclaration","src":"3976:14:27"},{"attributes":{"constant":false,"name":"_rate","scope":8856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8838,"name":"ElementaryTypeName","src":"3992:7:27"}],"id":8839,"name":"VariableDeclaration","src":"3992:13:27"},{"attributes":{"constant":false,"name":"_updateDate","scope":8856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8840,"name":"ElementaryTypeName","src":"4007:7:27"}],"id":8841,"name":"VariableDeclaration","src":"4007:19:27"}],"id":8842,"name":"ParameterList","src":"3975:52:27"},{"attributes":{"parameters":[null]},"children":[],"id":8843,"name":"ParameterList","src":"4037:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":9833,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8844,"name":"Identifier","src":"4047:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8845,"name":"Identifier","src":"4063:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8846,"name":"Identifier","src":"4075:19:27"}],"id":8847,"name":"FunctionCall","src":"4063:32:27"}],"id":8848,"name":"FunctionCall","src":"4047:49:27"}],"id":8849,"name":"MemberAccess","src":"4047:65:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8837,"type":"address","value":"_token"},"id":8850,"name":"Identifier","src":"4113:6:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8839,"type":"uint256","value":"_rate"},"id":8851,"name":"Identifier","src":"4121:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8841,"type":"uint256","value":"_updateDate"},"id":8852,"name":"Identifier","src":"4128:11:27"}],"id":8853,"name":"FunctionCall","src":"4047:93:27"}],"id":8854,"name":"ExpressionStatement","src":"4047:93:27"}],"id":8855,"name":"Block","src":"4037:110:27"}],"id":8856,"name":"FunctionDefinition","src":"3950:197:27"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":8878,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8857,"name":"ElementaryTypeName","src":"4342:7:27"}],"id":8858,"name":"VariableDeclaration","src":"4342:20:27"},{"attributes":{"constant":false,"name":"_data","scope":8878,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8859,"name":"ElementaryTypeName","src":"4364:5:27"}],"id":8860,"name":"VariableDeclaration","src":"4364:18:27"}],"id":8861,"name":"ParameterList","src":"4341:42:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8878,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8862,"name":"ElementaryTypeName","src":"4407:7:27"}],"id":8863,"name":"VariableDeclaration","src":"4407:7:27"},{"attributes":{"constant":false,"name":"","scope":8878,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8864,"name":"ElementaryTypeName","src":"4416:7:27"}],"id":8865,"name":"VariableDeclaration","src":"4416:7:27"}],"id":8866,"name":"ParameterList","src":"4406:18:27"},{"children":[{"attributes":{"functionReturnParameters":8866},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":9819,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8867,"name":"Identifier","src":"4442:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8868,"name":"Identifier","src":"4458:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8869,"name":"Identifier","src":"4470:19:27"}],"id":8870,"name":"FunctionCall","src":"4458:32:27"}],"id":8871,"name":"FunctionCall","src":"4442:49:27"}],"id":8872,"name":"MemberAccess","src":"4442:76:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8858,"type":"address","value":"_destination"},"id":8873,"name":"Identifier","src":"4519:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8860,"type":"bytes memory","value":"_data"},"id":8874,"name":"Identifier","src":"4533:5:27"}],"id":8875,"name":"FunctionCall","src":"4442:97:27"}],"id":8876,"name":"Return","src":"4435:104:27"}],"id":8877,"name":"Block","src":"4425:121:27"}],"id":8878,"name":"FunctionDefinition","src":"4305:241:27"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":8894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8879,"name":"ElementaryTypeName","src":"4671:7:27"}],"id":8880,"name":"VariableDeclaration","src":"4671:10:27"}],"id":8881,"name":"ParameterList","src":"4670:12:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8894,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8882,"name":"ElementaryTypeName","src":"4706:4:27"}],"id":8883,"name":"VariableDeclaration","src":"4706:4:27"}],"id":8884,"name":"ParameterList","src":"4705:6:27"},{"children":[{"attributes":{"assignments":[null,null,null,8886,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":8893,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8885,"name":"ElementaryTypeName","src":"4729:4:27"}],"id":8886,"name":"VariableDeclaration","src":"4729:14:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":8887,"name":"Identifier","src":"4753:13:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8880,"type":"address","value":"_a"},"id":8888,"name":"Identifier","src":"4767:2:27"}],"id":8889,"name":"FunctionCall","src":"4753:17:27"}],"id":8890,"name":"VariableDeclarationStatement","src":"4722:48:27"},{"attributes":{"functionReturnParameters":8884},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8886,"type":"bool","value":"available"},"id":8891,"name":"Identifier","src":"4787:9:27"}],"id":8892,"name":"Return","src":"4780:16:27"}],"id":8893,"name":"Block","src":"4712:91:27"}],"id":8894,"name":"FunctionDefinition","src":"4644:159:27"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":8910,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8895,"name":"ElementaryTypeName","src":"4931:7:27"}],"id":8896,"name":"VariableDeclaration","src":"4931:10:27"}],"id":8897,"name":"ParameterList","src":"4930:12:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8910,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8898,"name":"ElementaryTypeName","src":"4966:4:27"}],"id":8899,"name":"VariableDeclaration","src":"4966:4:27"}],"id":8900,"name":"ParameterList","src":"4965:6:27"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,8902,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":8909,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8901,"name":"ElementaryTypeName","src":"4993:4:27"}],"id":8902,"name":"VariableDeclaration","src":"4993:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":8903,"name":"Identifier","src":"5014:13:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8896,"type":"address","value":"_a"},"id":8904,"name":"Identifier","src":"5028:2:27"}],"id":8905,"name":"FunctionCall","src":"5014:17:27"}],"id":8906,"name":"VariableDeclarationStatement","src":"4982:49:27"},{"attributes":{"functionReturnParameters":8900},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8902,"type":"bool","value":"redeemable"},"id":8907,"name":"Identifier","src":"5048:10:27"}],"id":8908,"name":"Return","src":"5041:17:27"}],"id":8909,"name":"Block","src":"4972:93:27"}],"id":8910,"name":"FunctionDefinition","src":"4903:162:27"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":8926,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8911,"name":"ElementaryTypeName","src":"5187:7:27"}],"id":8912,"name":"VariableDeclaration","src":"5187:10:27"}],"id":8913,"name":"ParameterList","src":"5186:12:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8926,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8914,"name":"ElementaryTypeName","src":"5222:4:27"}],"id":8915,"name":"VariableDeclaration","src":"5222:4:27"}],"id":8916,"name":"ParameterList","src":"5221:6:27"},{"children":[{"attributes":{"assignments":[null,null,null,null,8918,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":8925,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8917,"name":"ElementaryTypeName","src":"5247:4:27"}],"id":8918,"name":"VariableDeclaration","src":"5247:13:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":8919,"name":"Identifier","src":"5268:13:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8912,"type":"address","value":"_a"},"id":8920,"name":"Identifier","src":"5282:2:27"}],"id":8921,"name":"FunctionCall","src":"5268:17:27"}],"id":8922,"name":"VariableDeclarationStatement","src":"5238:47:27"},{"attributes":{"functionReturnParameters":8916},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8918,"type":"bool","value":"loadable"},"id":8923,"name":"Identifier","src":"5302:8:27"}],"id":8924,"name":"Return","src":"5295:15:27"}],"id":8925,"name":"Block","src":"5228:89:27"}],"id":8926,"name":"FunctionDefinition","src":"5161:156:27"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8927,"name":"ParameterList","src":"5456:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8940,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8928,"name":"ElementaryTypeName","src":"5482:7:27"}],"id":8929,"name":"VariableDeclaration","src":"5482:7:27"}],"id":8930,"name":"ParameterList","src":"5481:9:27"},{"children":[{"attributes":{"functionReturnParameters":8930},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":9824,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8931,"name":"Identifier","src":"5508:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8932,"name":"Identifier","src":"5524:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8933,"name":"Identifier","src":"5536:19:27"}],"id":8934,"name":"FunctionCall","src":"5524:32:27"}],"id":8935,"name":"FunctionCall","src":"5508:49:27"}],"id":8936,"name":"MemberAccess","src":"5508:60:27"}],"id":8937,"name":"FunctionCall","src":"5508:62:27"}],"id":8938,"name":"Return","src":"5501:69:27"}],"id":8939,"name":"Block","src":"5491:86:27"}],"id":8940,"name":"FunctionDefinition","src":"5436:141:27"}],"id":8941,"name":"ContractDefinition","src":"958:4621:27"}],"id":8942,"name":"SourceUnit","src":"778:4802:27"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[8981]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8943,"name":"PragmaDirective","src":"773:24:28"},{"attributes":{"SourceUnit":10788,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":8982,"symbolAliases":[null],"unitAlias":""},"id":8944,"name":"ImportDirective","src":"799:32:28"},{"attributes":{"SourceUnit":11007,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":8982,"symbolAliases":[null],"unitAlias":""},"id":8945,"name":"ImportDirective","src":"832:36:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[8981],"name":"Transferrable","scope":8982},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":11006,"type":"library SafeERC20"},"id":8946,"name":"UserDefinedTypeName","src":"996:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":8947,"name":"UserDefinedTypeName","src":"1010:5:28"}],"id":8948,"name":"UsingForDirective","src":"990:26:28"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":8981,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":8980,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":8949,"name":"ElementaryTypeName","src":"1389:15:28"}],"id":8950,"name":"VariableDeclaration","src":"1389:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":8980,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8951,"name":"ElementaryTypeName","src":"1410:7:28"}],"id":8952,"name":"VariableDeclaration","src":"1410:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":8980,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8953,"name":"ElementaryTypeName","src":"1426:7:28"}],"id":8954,"name":"VariableDeclaration","src":"1426:15:28"}],"id":8955,"name":"ParameterList","src":"1388:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":8956,"name":"ParameterList","src":"1452:0:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8952,"type":"address","value":"_asset"},"id":8957,"name":"Identifier","src":"1510:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":8958,"name":"ElementaryTypeNameExpression","src":"1520:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8959,"name":"Literal","src":"1528:1:28"}],"id":8960,"name":"FunctionCall","src":"1520:10:28"}],"id":8961,"name":"BinaryOperation","src":"1510:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8950,"type":"address payable","value":"_to"},"id":8962,"name":"Identifier","src":"1546:3:28"}],"id":8964,"name":"MemberAccess","src":"1546:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8954,"type":"uint256","value":"_amount"},"id":8965,"name":"Identifier","src":"1559:7:28"}],"id":8966,"name":"FunctionCall","src":"1546:21:28"}],"id":8967,"name":"ExpressionStatement","src":"1546:21:28"}],"id":8968,"name":"Block","src":"1532:46:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":10820,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":10787,"type":"type(contract ERC20)","value":"ERC20"},"id":8969,"name":"Identifier","src":"1598:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8952,"type":"address","value":"_asset"},"id":8970,"name":"Identifier","src":"1604:6:28"}],"id":8971,"name":"FunctionCall","src":"1598:13:28"}],"id":8972,"name":"MemberAccess","src":"1598:26:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8950,"type":"address payable","value":"_to"},"id":8973,"name":"Identifier","src":"1625:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8954,"type":"uint256","value":"_amount"},"id":8974,"name":"Identifier","src":"1630:7:28"}],"id":8975,"name":"FunctionCall","src":"1598:40:28"}],"id":8976,"name":"ExpressionStatement","src":"1598:40:28"}],"id":8977,"name":"Block","src":"1584:65:28"}],"id":8978,"name":"IfStatement","src":"1506:143:28"}],"id":8979,"name":"Block","src":"1452:203:28"}],"id":8980,"name":"FunctionDefinition","src":"1366:289:28"}],"id":8981,"name":"ContractDefinition","src":"961:696:28"}],"id":8982,"name":"SourceUnit","src":"773:885:28"}},"oracle.sol":{"AST":{"attributes":{"absolutePath":"oracle.sol","exportedSymbols":{"Oracle":[1117]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"770:24:29"},{"attributes":{"SourceUnit":7950,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"796:38:29"},{"attributes":{"SourceUnit":8982,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"835:39:29"},{"attributes":{"SourceUnit":8164,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"875:39:29"},{"attributes":{"SourceUnit":8119,"absolutePath":"internals/date.sol","file":"./internals/date.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"915:30:29"},{"attributes":{"SourceUnit":8725,"absolutePath":"internals/parseIntScientific.sol","file":"./internals/parseIntScientific.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"946:44:29"},{"attributes":{"SourceUnit":8942,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":7,"name":"ImportDirective","src":"991:44:29"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":8,"name":"ImportDirective","src":"1036:34:29"},{"attributes":{"SourceUnit":7854,"absolutePath":"externals/oraclizeAPI_0.5.sol","file":"./externals/oraclizeAPI_0.5.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":9,"name":"ImportDirective","src":"1071:41:29"},{"attributes":{"SourceUnit":1575,"absolutePath":"externals/base64.sol","file":"./externals/base64.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":10,"name":"ImportDirective","src":"1113:32:29"},{"attributes":{"contractDependencies":[1574,7853,7949,8118,8163,8724,8941,8981],"contractKind":"contract","documentation":"@title Oracle provides asset exchange rates and conversion functionality.","fullyImplemented":true,"linearizedBaseContracts":[1117,8941,8724,7949,8118,1574,8981,7853,8163],"name":"Oracle","scope":1118},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":8163,"type":"contract ENSResolvable"},"id":11,"name":"UserDefinedTypeName","src":"1245:13:29"}],"id":12,"name":"InheritanceSpecifier","src":"1245:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"usingOraclize","referencedDeclaration":7853,"type":"contract usingOraclize"},"id":13,"name":"UserDefinedTypeName","src":"1260:13:29"}],"id":14,"name":"InheritanceSpecifier","src":"1260:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":8981,"type":"contract Transferrable"},"id":15,"name":"UserDefinedTypeName","src":"1275:13:29"}],"id":16,"name":"InheritanceSpecifier","src":"1275:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Base64","referencedDeclaration":1574,"type":"contract Base64"},"id":17,"name":"UserDefinedTypeName","src":"1290:6:29"}],"id":18,"name":"InheritanceSpecifier","src":"1290:6:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Date","referencedDeclaration":8118,"type":"contract Date"},"id":19,"name":"UserDefinedTypeName","src":"1298:4:29"}],"id":20,"name":"InheritanceSpecifier","src":"1298:4:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":7949,"type":"contract Controllable"},"id":21,"name":"UserDefinedTypeName","src":"1304:12:29"}],"id":22,"name":"InheritanceSpecifier","src":"1304:12:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ParseIntScientific","referencedDeclaration":8724,"type":"contract ParseIntScientific"},"id":23,"name":"UserDefinedTypeName","src":"1318:18:29"}],"id":24,"name":"InheritanceSpecifier","src":"1318:18:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":8941,"type":"contract TokenWhitelistable"},"id":25,"name":"UserDefinedTypeName","src":"1338:18:29"}],"id":26,"name":"InheritanceSpecifier","src":"1338:18:29"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":14156,"type":"library strings"},"id":27,"name":"UserDefinedTypeName","src":"1369:7:29"}],"id":28,"name":"UsingForDirective","src":"1363:20:29"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":29,"name":"UserDefinedTypeName","src":"1394:8:29"},{"attributes":{"name":"uint256","type":"uint256"},"id":30,"name":"ElementaryTypeName","src":"1407:7:29"}],"id":31,"name":"UsingForDirective","src":"1388:27:29"},{"attributes":{"anonymous":false,"documentation":"**************","name":"SetGasPrice"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":37,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":32,"name":"ElementaryTypeName","src":"1515:7:29"}],"id":33,"name":"VariableDeclaration","src":"1515:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_gasPrice","scope":37,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":34,"name":"ElementaryTypeName","src":"1532:7:29"}],"id":35,"name":"VariableDeclaration","src":"1532:17:29"}],"id":36,"name":"ParameterList","src":"1514:36:29"}],"id":37,"name":"EventDefinition","src":"1497:54:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RequestedUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":43,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":38,"name":"ElementaryTypeName","src":"1579:6:29"}],"id":39,"name":"VariableDeclaration","src":"1579:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_queryID","scope":43,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":40,"name":"ElementaryTypeName","src":"1595:7:29"}],"id":41,"name":"VariableDeclaration","src":"1595:16:29"}],"id":42,"name":"ParameterList","src":"1578:34:29"}],"id":43,"name":"EventDefinition","src":"1557:56:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"FailedUpdateRequest"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_reason","scope":47,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":44,"name":"ElementaryTypeName","src":"1644:6:29"}],"id":45,"name":"VariableDeclaration","src":"1644:14:29"}],"id":46,"name":"ParameterList","src":"1643:16:29"}],"id":47,"name":"EventDefinition","src":"1618:42:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"VerifiedProof"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_publicKey","scope":53,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":48,"name":"ElementaryTypeName","src":"1686:5:29"}],"id":49,"name":"VariableDeclaration","src":"1686:16:29"},{"attributes":{"constant":false,"indexed":false,"name":"_result","scope":53,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":50,"name":"ElementaryTypeName","src":"1704:6:29"}],"id":51,"name":"VariableDeclaration","src":"1704:14:29"}],"id":52,"name":"ParameterList","src":"1685:34:29"}],"id":53,"name":"EventDefinition","src":"1666:54:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetCryptoComparePublicKey"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":59,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":54,"name":"ElementaryTypeName","src":"1758:7:29"}],"id":55,"name":"VariableDeclaration","src":"1758:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_publicKey","scope":59,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":56,"name":"ElementaryTypeName","src":"1775:5:29"}],"id":57,"name":"VariableDeclaration","src":"1775:16:29"}],"id":58,"name":"ParameterList","src":"1757:35:29"}],"id":59,"name":"EventDefinition","src":"1726:67:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":67,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":60,"name":"ElementaryTypeName","src":"1813:7:29"}],"id":61,"name":"VariableDeclaration","src":"1813:11:29"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":67,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":62,"name":"ElementaryTypeName","src":"1826:7:29"}],"id":63,"name":"VariableDeclaration","src":"1826:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":67,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":64,"name":"ElementaryTypeName","src":"1842:7:29"}],"id":65,"name":"VariableDeclaration","src":"1842:15:29"}],"id":66,"name":"ParameterList","src":"1812:46:29"}],"id":67,"name":"EventDefinition","src":"1799:60:29"},{"attributes":{"constant":true,"name":"_PROOF_LEN","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":68,"name":"ElementaryTypeName","src":"1950:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"313635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 165","value":"165"},"id":69,"name":"Literal","src":"1988:3:29"}],"id":70,"name":"VariableDeclaration","src":"1950:41:29"},{"attributes":{"constant":true,"name":"_ECDSA_SIG_LEN","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":71,"name":"ElementaryTypeName","src":"1997:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":72,"name":"Literal","src":"2039:2:29"}],"id":73,"name":"VariableDeclaration","src":"1997:44:29"},{"attributes":{"constant":true,"name":"_ENCODING_BYTES","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":74,"name":"ElementaryTypeName","src":"2047:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":75,"name":"Literal","src":"2090:1:29"}],"id":76,"name":"VariableDeclaration","src":"2047:44:29"},{"attributes":{"constant":true,"name":"_HEADERS_LEN","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":77,"name":"ElementaryTypeName","src":"2097:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_PROOF_LEN"},"id":78,"name":"Identifier","src":"2137:10:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":79,"name":"Literal","src":"2150:1:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_ENCODING_BYTES"},"id":80,"name":"Identifier","src":"2154:15:29"}],"id":81,"name":"BinaryOperation","src":"2150:19:29"}],"id":82,"name":"BinaryOperation","src":"2137:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":83,"name":"Identifier","src":"2172:14:29"}],"id":84,"name":"BinaryOperation","src":"2137:49:29"}],"id":85,"name":"VariableDeclaration","src":"2097:89:29"},{"attributes":{"constant":true,"name":"_DIGEST_BASE64_LEN","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":86,"name":"ElementaryTypeName","src":"2246:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3434","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 44","value":"44"},"id":87,"name":"Literal","src":"2292:2:29"}],"id":88,"name":"VariableDeclaration","src":"2246:48:29"},{"attributes":{"constant":true,"name":"_DIGEST_OFFSET","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":89,"name":"ElementaryTypeName","src":"2377:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"_HEADERS_LEN"},"id":90,"name":"Identifier","src":"2419:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"uint256","value":"_DIGEST_BASE64_LEN"},"id":91,"name":"Identifier","src":"2434:18:29"}],"id":92,"name":"BinaryOperation","src":"2419:33:29"}],"id":93,"name":"VariableDeclaration","src":"2377:75:29"},{"attributes":{"constant":true,"name":"_MAX_BYTE_SIZE","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":94,"name":"ElementaryTypeName","src":"2526:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":95,"name":"Literal","src":"2568:3:29"}],"id":96,"name":"VariableDeclaration","src":"2526:45:29"},{"attributes":{"constant":true,"name":"_PREFIX_HASH","scope":1117,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":97,"name":"ElementaryTypeName","src":"2661:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7a2d79c44ec25893f1deb7192af566af2e14c179cce8e62e025bd750d6e078e2","typeString":"literal_string \"{\"ETH\":\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":98,"name":"Identifier","src":"2701:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"7b22455448223a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"{\"ETH\":\"","value":"{\"ETH\":"},"id":99,"name":"Literal","src":"2711:9:29"}],"id":100,"name":"FunctionCall","src":"2701:20:29"}],"id":101,"name":"VariableDeclaration","src":"2661:60:29"},{"attributes":{"constant":false,"name":"cryptoCompareAPIPublicKey","scope":1117,"stateVariable":true,"storageLocation":"default","type":"bytes","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":102,"name":"ElementaryTypeName","src":"2728:5:29"}],"id":103,"name":"VariableDeclaration","src":"2728:38:29"},{"attributes":{"constant":false,"name":"_queryToToken","scope":1117,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => address)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => address)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":104,"name":"ElementaryTypeName","src":"2780:7:29"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":105,"name":"ElementaryTypeName","src":"2791:7:29"}],"id":106,"name":"Mapping","src":"2772:27:29"}],"id":107,"name":"VariableDeclaration","src":"2772:49:29"},{"attributes":{"documentation":"@notice Construct the oracle with multiple controllers, address resolver and custom gas price.\n @param _resolver_ is the address of the oraclize resolver\n @param _ens_ is the address of the ENS.\n @param _controllerNode_ is the ENS node corresponding to the Controller.\n @param _tokenWhitelistNode_ is the ENS corresponding to the Token Whitelist.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_resolver_","scope":146,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":108,"name":"ElementaryTypeName","src":"3223:7:29"}],"id":109,"name":"VariableDeclaration","src":"3223:18:29"},{"attributes":{"constant":false,"name":"_ens_","scope":146,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":110,"name":"ElementaryTypeName","src":"3243:7:29"}],"id":111,"name":"VariableDeclaration","src":"3243:13:29"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":146,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":112,"name":"ElementaryTypeName","src":"3258:7:29"}],"id":113,"name":"VariableDeclaration","src":"3258:24:29"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":146,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":114,"name":"ElementaryTypeName","src":"3284:7:29"}],"id":115,"name":"VariableDeclaration","src":"3284:28:29"}],"id":116,"name":"ParameterList","src":"3222:91:29"},{"attributes":{"parameters":[null]},"children":[],"id":126,"name":"ParameterList","src":"3450:0:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":117,"name":"Identifier","src":"3337:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":111,"type":"address","value":"_ens_"},"id":118,"name":"Identifier","src":"3351:5:29"}],"id":119,"name":"ModifierInvocation","src":"3337:20:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"type(contract Controllable)","value":"Controllable"},"id":120,"name":"Identifier","src":"3366:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":113,"type":"bytes32","value":"_controllerNode_"},"id":121,"name":"Identifier","src":"3379:16:29"}],"id":122,"name":"ModifierInvocation","src":"3366:30:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8941,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":123,"name":"Identifier","src":"3405:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":124,"name":"Identifier","src":"3424:20:29"}],"id":125,"name":"ModifierInvocation","src":"3405:40:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"bytes storage ref","value":"cryptoCompareAPIPublicKey"},"id":127,"name":"Identifier","src":"3460:25:29"},{"attributes":{"argumentTypes":null,"hexvalue":"a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 0)","value":null},"id":128,"name":"Literal","src":"3488:133:29"}],"id":129,"name":"Assignment","src":"3460:161:29"}],"id":130,"name":"ExpressionStatement","src":"3460:161:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":131,"name":"Identifier","src":"3631:3:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":132,"name":"Identifier","src":"3637:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"address","value":"_resolver_"},"id":133,"name":"Identifier","src":"3659:10:29"}],"id":134,"name":"FunctionCall","src":"3637:33:29"}],"id":135,"name":"Assignment","src":"3631:39:29"}],"id":136,"name":"ExpressionStatement","src":"3631:39:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"}],"overloadedDeclarations":[null],"referencedDeclaration":5698,"type":"function (uint256)","value":"oraclize_setCustomGasPrice"},"id":137,"name":"Identifier","src":"3680:26:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000000000","value":"10000000000"},"id":138,"name":"Literal","src":"3707:11:29"}],"id":139,"name":"FunctionCall","src":"3680:39:29"}],"id":140,"name":"ExpressionStatement","src":"3680:39:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"overloadedDeclarations":[null],"referencedDeclaration":5664,"type":"function (bytes1)","value":"oraclize_setProof"},"id":141,"name":"Identifier","src":"3729:17:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2270,"type":"bytes1","value":"proofType_Native"},"id":142,"name":"Identifier","src":"3747:16:29"}],"id":143,"name":"FunctionCall","src":"3729:35:29"}],"id":144,"name":"ExpressionStatement","src":"3729:35:29"}],"id":145,"name":"Block","src":"3450:321:29"}],"id":146,"name":"FunctionDefinition","src":"3211:560:29"},{"attributes":{"documentation":"@notice Updates the Crypto Compare public API key.\n @param _publicKey new Crypto Compare public API key","implemented":true,"isConstructor":false,"kind":"function","name":"updateCryptoCompareAPIPublicKey","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_publicKey","scope":164,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":147,"name":"ElementaryTypeName","src":"3937:5:29"}],"id":148,"name":"VariableDeclaration","src":"3937:25:29"}],"id":149,"name":"ParameterList","src":"3936:27:29"},{"attributes":{"parameters":[null]},"children":[],"id":152,"name":"ParameterList","src":"3983:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":150,"name":"Identifier","src":"3973:9:29"}],"id":151,"name":"ModifierInvocation","src":"3973:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"bytes storage ref","value":"cryptoCompareAPIPublicKey"},"id":153,"name":"Identifier","src":"3993:25:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":148,"type":"bytes calldata","value":"_publicKey"},"id":154,"name":"Identifier","src":"4021:10:29"}],"id":155,"name":"Assignment","src":"3993:38:29"}],"id":156,"name":"ExpressionStatement","src":"3993:38:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":59,"type":"function (address,bytes memory)","value":"SetCryptoComparePublicKey"},"id":157,"name":"Identifier","src":"4046:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":158,"name":"Identifier","src":"4072:3:29"}],"id":159,"name":"MemberAccess","src":"4072:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":148,"type":"bytes calldata","value":"_publicKey"},"id":160,"name":"Identifier","src":"4084:10:29"}],"id":161,"name":"FunctionCall","src":"4046:49:29"}],"id":162,"name":"EmitStatement","src":"4041:54:29"}],"id":163,"name":"Block","src":"3983:119:29"}],"id":164,"name":"FunctionDefinition","src":"3896:206:29"},{"attributes":{"documentation":"@notice Sets the gas price used by Oraclize query.\n @param _gasPrice in wei for Oraclize","implemented":true,"isConstructor":false,"kind":"function","name":"setCustomGasPrice","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasPrice","scope":182,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":165,"name":"ElementaryTypeName","src":"4239:7:29"}],"id":166,"name":"VariableDeclaration","src":"4239:17:29"}],"id":167,"name":"ParameterList","src":"4238:19:29"},{"attributes":{"parameters":[null]},"children":[],"id":170,"name":"ParameterList","src":"4282:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7894,"type":"modifier ()","value":"onlyController"},"id":168,"name":"Identifier","src":"4267:14:29"}],"id":169,"name":"ModifierInvocation","src":"4267:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5698,"type":"function (uint256)","value":"oraclize_setCustomGasPrice"},"id":171,"name":"Identifier","src":"4292:26:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"uint256","value":"_gasPrice"},"id":172,"name":"Identifier","src":"4319:9:29"}],"id":173,"name":"FunctionCall","src":"4292:37:29"}],"id":174,"name":"ExpressionStatement","src":"4292:37:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":37,"type":"function (address,uint256)","value":"SetGasPrice"},"id":175,"name":"Identifier","src":"4344:11:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":176,"name":"Identifier","src":"4356:3:29"}],"id":177,"name":"MemberAccess","src":"4356:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"uint256","value":"_gasPrice"},"id":178,"name":"Identifier","src":"4368:9:29"}],"id":179,"name":"FunctionCall","src":"4344:34:29"}],"id":180,"name":"EmitStatement","src":"4339:39:29"}],"id":181,"name":"Block","src":"4282:103:29"}],"id":182,"name":"FunctionDefinition","src":"4212:173:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rates for all supported tokens.\n @param _gasLimit the gas limit is passed, this is used for the Oraclize callback","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRates","scope":1117,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasLimit","scope":194,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":183,"name":"ElementaryTypeName","src":"4582:7:29"}],"id":184,"name":"VariableDeclaration","src":"4582:17:29"}],"id":185,"name":"ParameterList","src":"4581:19:29"},{"attributes":{"parameters":[null]},"children":[],"id":188,"name":"ParameterList","src":"4633:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7894,"type":"modifier ()","value":"onlyController"},"id":186,"name":"Identifier","src":"4618:14:29"}],"id":187,"name":"ModifierInvocation","src":"4618:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":529,"type":"function (uint256)","value":"_updateTokenRates"},"id":189,"name":"Identifier","src":"4643:17:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":184,"type":"uint256","value":"_gasLimit"},"id":190,"name":"Identifier","src":"4661:9:29"}],"id":191,"name":"FunctionCall","src":"4643:28:29"}],"id":192,"name":"ExpressionStatement","src":"4643:28:29"}],"id":193,"name":"Block","src":"4633:45:29"}],"id":194,"name":"FunctionDefinition","src":"4556:122:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rates for the list of tokens provided.\n @param _gasLimit the gas limit is passed, this is used for the Oraclize callback\n @param _tokenList the list of tokens that need to be updated","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRatesList","scope":1117,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasLimit","scope":210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":195,"name":"ElementaryTypeName","src":"4955:7:29"}],"id":196,"name":"VariableDeclaration","src":"4955:17:29"},{"attributes":{"constant":false,"name":"_tokenList","scope":210,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":197,"name":"ElementaryTypeName","src":"4974:7:29"}],"id":198,"name":"ArrayTypeName","src":"4974:9:29"}],"id":199,"name":"VariableDeclaration","src":"4974:29:29"}],"id":200,"name":"ParameterList","src":"4954:50:29"},{"attributes":{"parameters":[null]},"children":[],"id":203,"name":"ParameterList","src":"5037:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7894,"type":"modifier ()","value":"onlyController"},"id":201,"name":"Identifier","src":"5022:14:29"}],"id":202,"name":"ModifierInvocation","src":"5022:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (uint256,address[] memory)","value":"_updateTokenRatesList"},"id":204,"name":"Identifier","src":"5047:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":196,"type":"uint256","value":"_gasLimit"},"id":205,"name":"Identifier","src":"5069:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":199,"type":"address[] calldata","value":"_tokenList"},"id":206,"name":"Identifier","src":"5080:10:29"}],"id":207,"name":"FunctionCall","src":"5047:44:29"}],"id":208,"name":"ExpressionStatement","src":"5047:44:29"}],"id":209,"name":"Block","src":"5037:61:29"}],"id":210,"name":"FunctionDefinition","src":"4925:173:29"},{"attributes":{"documentation":"@notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":234,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":211,"name":"ElementaryTypeName","src":"5201:15:29"}],"id":212,"name":"VariableDeclaration","src":"5201:19:29"},{"attributes":{"constant":false,"name":"_asset","scope":234,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":213,"name":"ElementaryTypeName","src":"5222:7:29"}],"id":214,"name":"VariableDeclaration","src":"5222:14:29"},{"attributes":{"constant":false,"name":"_amount","scope":234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":215,"name":"ElementaryTypeName","src":"5238:7:29"}],"id":216,"name":"VariableDeclaration","src":"5238:15:29"}],"id":217,"name":"ParameterList","src":"5200:54:29"},{"attributes":{"parameters":[null]},"children":[],"id":220,"name":"ParameterList","src":"5274:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":218,"name":"Identifier","src":"5264:9:29"}],"id":219,"name":"ModifierInvocation","src":"5264:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8980,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":221,"name":"Identifier","src":"5284:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":212,"type":"address payable","value":"_to"},"id":222,"name":"Identifier","src":"5298:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":214,"type":"address","value":"_asset"},"id":223,"name":"Identifier","src":"5303:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":216,"type":"uint256","value":"_amount"},"id":224,"name":"Identifier","src":"5311:7:29"}],"id":225,"name":"FunctionCall","src":"5284:35:29"}],"id":226,"name":"ExpressionStatement","src":"5284:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":67,"type":"function (address,address,uint256)","value":"Claimed"},"id":227,"name":"Identifier","src":"5334:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":212,"type":"address payable","value":"_to"},"id":228,"name":"Identifier","src":"5342:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":214,"type":"address","value":"_asset"},"id":229,"name":"Identifier","src":"5347:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":216,"type":"uint256","value":"_amount"},"id":230,"name":"Identifier","src":"5355:7:29"}],"id":231,"name":"FunctionCall","src":"5334:29:29"}],"id":232,"name":"EmitStatement","src":"5329:34:29"}],"id":233,"name":"Block","src":"5274:96:29"}],"id":234,"name":"FunctionDefinition","src":"5186:184:29"},{"attributes":{"documentation":"@notice Handle Oraclize query callback and verifiy the provided origin proof.\n @param _queryID Oraclize query ID.\n @param _result query result in JSON format.\n @param _proof origin proof from crypto compare.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"__callback","scope":1117,"stateMutability":"nonpayable","superFunction":2606,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_queryID","scope":315,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":235,"name":"ElementaryTypeName","src":"5675:7:29"}],"id":236,"name":"VariableDeclaration","src":"5675:16:29"},{"attributes":{"constant":false,"name":"_result","scope":315,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":237,"name":"ElementaryTypeName","src":"5693:6:29"}],"id":238,"name":"VariableDeclaration","src":"5693:21:29"},{"attributes":{"constant":false,"name":"_proof","scope":315,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":239,"name":"ElementaryTypeName","src":"5716:5:29"}],"id":240,"name":"VariableDeclaration","src":"5716:19:29"}],"id":241,"name":"ParameterList","src":"5674:62:29"},{"attributes":{"parameters":[null]},"children":[],"id":242,"name":"ParameterList","src":"5744:0:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b88758054e44c94be6565c93c4ac5c75fed82853608c6dcd41226b2e31aa5492","typeString":"literal_string \"sender is not oraclize\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":243,"name":"Identifier","src":"5815:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":244,"name":"Identifier","src":"5823:3:29"}],"id":245,"name":"MemberAccess","src":"5823:10:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":5676,"type":"function () returns (address)","value":"oraclize_cbAddress"},"id":246,"name":"Identifier","src":"5837:18:29"}],"id":247,"name":"FunctionCall","src":"5837:20:29"}],"id":248,"name":"BinaryOperation","src":"5823:34:29"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206f7261636c697a65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not oraclize\"","value":"sender is not oraclize"},"id":249,"name":"Literal","src":"5859:24:29"}],"id":250,"name":"FunctionCall","src":"5815:69:29"}],"id":251,"name":"ExpressionStatement","src":"5815:69:29"},{"attributes":{"assignments":[253]},"children":[{"attributes":{"constant":false,"name":"token","scope":314,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":252,"name":"ElementaryTypeName","src":"5958:7:29"}],"id":253,"name":"VariableDeclaration","src":"5958:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"mapping(bytes32 => address)","value":"_queryToToken"},"id":254,"name":"Identifier","src":"5974:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":236,"type":"bytes32","value":"_queryID"},"id":255,"name":"Identifier","src":"5988:8:29"}],"id":256,"name":"IndexAccess","src":"5974:23:29"}],"id":257,"name":"VariableDeclarationStatement","src":"5958:39:29"},{"attributes":{"assignments":[null,null,null,259,null,null,261]},"children":[{"attributes":{"constant":false,"name":"available","scope":314,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":258,"name":"ElementaryTypeName","src":"6061:4:29"}],"id":259,"name":"VariableDeclaration","src":"6061:14:29"},{"attributes":{"constant":false,"name":"lastUpdate","scope":314,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":260,"name":"ElementaryTypeName","src":"6081:7:29"}],"id":261,"name":"VariableDeclaration","src":"6081:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":262,"name":"Identifier","src":"6103:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":253,"type":"address","value":"token"},"id":263,"name":"Identifier","src":"6117:5:29"}],"id":264,"name":"FunctionCall","src":"6103:20:29"}],"id":265,"name":"VariableDeclarationStatement","src":"6054:69:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ece3bb723b90e0cf52e7142c26cd1e8e9aeda26d377c85e0b1b64ab12879ce1","typeString":"literal_string \"token must be available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":266,"name":"Identifier","src":"6133:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":259,"type":"bool","value":"available"},"id":267,"name":"Identifier","src":"6141:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206d75737420626520617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token must be available\"","value":"token must be available"},"id":268,"name":"Literal","src":"6152:25:29"}],"id":269,"name":"FunctionCall","src":"6133:45:29"}],"id":270,"name":"ExpressionStatement","src":"6133:45:29"},{"attributes":{"assignments":[272],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"valid","scope":314,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":271,"name":"ElementaryTypeName","src":"6189:4:29"}],"id":272,"name":"VariableDeclaration","src":"6189:10:29"}],"id":273,"name":"VariableDeclarationStatement","src":"6189:10:29"},{"attributes":{"assignments":[275],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"timestamp","scope":314,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":274,"name":"ElementaryTypeName","src":"6209:7:29"}],"id":275,"name":"VariableDeclaration","src":"6209:17:29"}],"id":276,"name":"VariableDeclarationStatement","src":"6209:17:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":272,"type":"bool","value":"valid"},"id":277,"name":"Identifier","src":"6237:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":275,"type":"uint256","value":"timestamp"},"id":278,"name":"Identifier","src":"6244:9:29"}],"id":279,"name":"TupleExpression","src":"6236:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":862,"type":"function (string memory,bytes memory,bytes memory,uint256) returns (bool,uint256)","value":"_verifyProof"},"id":280,"name":"Identifier","src":"6257:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"string memory","value":"_result"},"id":281,"name":"Identifier","src":"6270:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":240,"type":"bytes memory","value":"_proof"},"id":282,"name":"Identifier","src":"6279:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"bytes storage ref","value":"cryptoCompareAPIPublicKey"},"id":283,"name":"Identifier","src":"6287:25:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":261,"type":"uint256","value":"lastUpdate"},"id":284,"name":"Identifier","src":"6314:10:29"}],"id":285,"name":"FunctionCall","src":"6257:68:29"}],"id":286,"name":"Assignment","src":"6236:89:29"}],"id":287,"name":"ExpressionStatement","src":"6236:89:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":272,"type":"bool","value":"valid"},"id":288,"name":"Identifier","src":"6384:5:29"},{"children":[{"attributes":{"assignments":[290]},"children":[{"attributes":{"constant":false,"name":"parsedRate","scope":312,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":289,"name":"ElementaryTypeName","src":"6466:7:29"}],"id":290,"name":"VariableDeclaration","src":"6466:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8244,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientificWei"},"id":291,"name":"Identifier","src":"6487:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":412,"type":"function (string memory) pure returns (string memory)","value":"parseRate"},"id":292,"name":"Identifier","src":"6510:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"string memory","value":"_result"},"id":293,"name":"Identifier","src":"6520:7:29"}],"id":294,"name":"FunctionCall","src":"6510:18:29"}],"id":295,"name":"FunctionCall","src":"6487:42:29"}],"id":296,"name":"VariableDeclarationStatement","src":"6466:63:29"},{"attributes":{"assignments":[298]},"children":[{"attributes":{"constant":false,"name":"parsedLastUpdate","scope":312,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":297,"name":"ElementaryTypeName","src":"6597:7:29"}],"id":298,"name":"VariableDeclaration","src":"6597:24:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":275,"type":"uint256","value":"timestamp"},"id":299,"name":"Identifier","src":"6624:9:29"}],"id":300,"name":"VariableDeclarationStatement","src":"6597:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"mapping(bytes32 => address)","value":"_queryToToken"},"id":301,"name":"Identifier","src":"6697:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":236,"type":"bytes32","value":"_queryID"},"id":302,"name":"Identifier","src":"6711:8:29"}],"id":303,"name":"IndexAccess","src":"6697:23:29"}],"id":304,"name":"UnaryOperation","src":"6690:30:29"}],"id":305,"name":"ExpressionStatement","src":"6690:30:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8856,"type":"function (address,uint256,uint256)","value":"_updateTokenRate"},"id":306,"name":"Identifier","src":"6735:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":253,"type":"address","value":"token"},"id":307,"name":"Identifier","src":"6752:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":290,"type":"uint256","value":"parsedRate"},"id":308,"name":"Identifier","src":"6759:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":298,"type":"uint256","value":"parsedLastUpdate"},"id":309,"name":"Identifier","src":"6771:16:29"}],"id":310,"name":"FunctionCall","src":"6735:53:29"}],"id":311,"name":"ExpressionStatement","src":"6735:53:29"}],"id":312,"name":"Block","src":"6391:408:29"}],"id":313,"name":"IfStatement","src":"6380:419:29"}],"id":314,"name":"Block","src":"5744:1061:29"}],"id":315,"name":"FunctionDefinition","src":"5655:1150:29"},{"attributes":{"documentation":"@notice Extracts JSON rate value from the response object.\n @param _json body of the JSON response from the CryptoCompare API.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"parseRate","scope":1117,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_json","scope":412,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":316,"name":"ElementaryTypeName","src":"6972:6:29"}],"id":317,"name":"VariableDeclaration","src":"6972:19:29"}],"id":318,"name":"ParameterList","src":"6971:21:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":412,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":319,"name":"ElementaryTypeName","src":"7016:6:29"}],"id":320,"name":"VariableDeclaration","src":"7016:13:29"}],"id":321,"name":"ParameterList","src":"7015:15:29"},{"children":[{"attributes":{"assignments":[323]},"children":[{"attributes":{"constant":false,"name":"jsonLen","scope":411,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":322,"name":"ElementaryTypeName","src":"7041:7:29"}],"id":323,"name":"VariableDeclaration","src":"7041:15:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":324,"name":"Identifier","src":"7059:3:29"}],"id":325,"name":"MemberAccess","src":"7059:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":317,"type":"string memory","value":"_json"},"id":326,"name":"Identifier","src":"7076:5:29"}],"id":327,"name":"FunctionCall","src":"7059:23:29"}],"id":328,"name":"MemberAccess","src":"7059:30:29"}],"id":329,"name":"VariableDeclarationStatement","src":"7041:48:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fea2c2e32d1bae3c1f1ea614dd96ac75409f6d3eaf7da12bd0e75406b36d71f","typeString":"literal_string \"misformatted input\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":330,"name":"Identifier","src":"7173:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"jsonLen"},"id":331,"name":"Identifier","src":"7181:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":332,"name":"Literal","src":"7191:1:29"}],"id":333,"name":"BinaryOperation","src":"7181:11:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"jsonLen"},"id":334,"name":"Identifier","src":"7196:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":335,"name":"Literal","src":"7207:2:29"}],"id":336,"name":"BinaryOperation","src":"7196:13:29"}],"id":337,"name":"BinaryOperation","src":"7181:28:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6973666f726d617474656420696e707574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"misformatted input\"","value":"misformatted input"},"id":338,"name":"Literal","src":"7211:20:29"}],"id":339,"name":"FunctionCall","src":"7173:59:29"}],"id":340,"name":"ExpressionStatement","src":"7173:59:29"},{"attributes":{"assignments":[342]},"children":[{"attributes":{"constant":false,"name":"jsonPrefix","scope":411,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":341,"name":"ElementaryTypeName","src":"7243:5:29"}],"id":342,"name":"VariableDeclaration","src":"7243:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":343,"name":"ElementaryTypeName","src":"7273:5:29"}],"id":344,"name":"NewExpression","src":"7269:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":345,"name":"Literal","src":"7279:1:29"}],"id":346,"name":"FunctionCall","src":"7269:12:29"}],"id":347,"name":"VariableDeclarationStatement","src":"7243:38:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":348,"name":"Identifier","src":"7291:9:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":349,"name":"Identifier","src":"7301:3:29"}],"id":350,"name":"MemberAccess","src":"7301:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":317,"type":"string memory","value":"_json"},"id":351,"name":"Identifier","src":"7318:5:29"}],"id":352,"name":"FunctionCall","src":"7301:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":353,"name":"Literal","src":"7326:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":354,"name":"Literal","src":"7329:1:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"bytes memory","value":"jsonPrefix"},"id":355,"name":"Identifier","src":"7332:10:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":356,"name":"Literal","src":"7344:1:29"}],"id":357,"name":"FunctionCall","src":"7291:55:29"}],"id":358,"name":"ExpressionStatement","src":"7291:55:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0c157f62a2cfe79594a26ef6a0987a0304469e42f07594a418ffcc08198b710d","typeString":"literal_string \"prefix mismatch\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":359,"name":"Identifier","src":"7356:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":360,"name":"Identifier","src":"7364:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"bytes memory","value":"jsonPrefix"},"id":361,"name":"Identifier","src":"7374:10:29"}],"id":362,"name":"FunctionCall","src":"7364:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"bytes32","value":"_PREFIX_HASH"},"id":363,"name":"Identifier","src":"7389:12:29"}],"id":364,"name":"BinaryOperation","src":"7364:37:29"},{"attributes":{"argumentTypes":null,"hexvalue":"707265666978206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"prefix mismatch\"","value":"prefix mismatch"},"id":365,"name":"Literal","src":"7403:17:29"}],"id":366,"name":"FunctionCall","src":"7356:65:29"}],"id":367,"name":"ExpressionStatement","src":"7356:65:29"},{"attributes":{"assignments":[371]},"children":[{"attributes":{"constant":false,"name":"body","scope":411,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":370,"name":"UserDefinedTypeName","src":"7432:13:29"}],"id":371,"name":"VariableDeclaration","src":"7432:25:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":317,"type":"string memory","value":"_json"},"id":372,"name":"Identifier","src":"7460:5:29"}],"id":373,"name":"MemberAccess","src":"7460:13:29"}],"id":374,"name":"FunctionCall","src":"7460:15:29"}],"id":375,"name":"VariableDeclarationStatement","src":"7432:43:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":376,"name":"Identifier","src":"7485:4:29"}],"id":378,"name":"MemberAccess","src":"7485:10:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \":\"","value":":"},"id":379,"name":"Literal","src":"7496:3:29"}],"id":380,"name":"MemberAccess","src":"7496:11:29"}],"id":381,"name":"FunctionCall","src":"7496:13:29"}],"id":382,"name":"FunctionCall","src":"7485:25:29"}],"id":383,"name":"ExpressionStatement","src":"7485:25:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"jsonLen"},"id":384,"name":"Identifier","src":"7609:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":385,"name":"Identifier","src":"7619:4:29"}],"id":386,"name":"MemberAccess","src":"7619:9:29"}],"id":387,"name":"Assignment","src":"7609:19:29"}],"id":388,"name":"ExpressionStatement","src":"7609:19:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"until","referencedDeclaration":13420,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":389,"name":"Identifier","src":"7638:4:29"}],"id":391,"name":"MemberAccess","src":"7638:10:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"7d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"}\"","value":"}"},"id":392,"name":"Literal","src":"7649:3:29"}],"id":393,"name":"MemberAccess","src":"7649:11:29"}],"id":394,"name":"FunctionCall","src":"7649:13:29"}],"id":395,"name":"FunctionCall","src":"7638:25:29"}],"id":396,"name":"ExpressionStatement","src":"7638:25:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d0303ffd8acc80da90323135e4843159389d7ce85817f6f11f7897c9fa282156","typeString":"literal_string \"not json format\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":397,"name":"Identifier","src":"7673:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":398,"name":"Identifier","src":"7681:4:29"}],"id":399,"name":"MemberAccess","src":"7681:9:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"jsonLen"},"id":400,"name":"Identifier","src":"7694:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":401,"name":"Literal","src":"7704:1:29"}],"id":402,"name":"BinaryOperation","src":"7694:11:29"}],"id":403,"name":"BinaryOperation","src":"7681:24:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f74206a736f6e20666f726d6174","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not json format\"","value":"not json format"},"id":404,"name":"Literal","src":"7707:17:29"}],"id":405,"name":"FunctionCall","src":"7673:52:29"}],"id":406,"name":"ExpressionStatement","src":"7673:52:29"},{"attributes":{"functionReturnParameters":321},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":407,"name":"Identifier","src":"7807:4:29"}],"id":408,"name":"MemberAccess","src":"7807:13:29"}],"id":409,"name":"FunctionCall","src":"7807:15:29"}],"id":410,"name":"Return","src":"7800:22:29"}],"id":411,"name":"Block","src":"7031:798:29"}],"id":412,"name":"FunctionDefinition","src":"6953:876:29"},{"attributes":{"documentation":"@notice Re-usable helper function that performs the Oraclize Query.\n @param _gasLimit the gas limit is passed, this is used for the Oraclize callback","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRates","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasLimit","scope":529,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":413,"name":"ElementaryTypeName","src":"8027:7:29"}],"id":414,"name":"VariableDeclaration","src":"8027:17:29"}],"id":415,"name":"ParameterList","src":"8026:19:29"},{"attributes":{"parameters":[null]},"children":[],"id":416,"name":"ParameterList","src":"8054:0:29"},{"children":[{"attributes":{"assignments":[420]},"children":[{"attributes":{"constant":false,"name":"tokenAddresses","scope":528,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":418,"name":"ElementaryTypeName","src":"8064:7:29"}],"id":419,"name":"ArrayTypeName","src":"8064:9:29"}],"id":420,"name":"VariableDeclaration","src":"8064:31:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":8820,"type":"function () view returns (address[] memory)","value":"_tokenAddressArray"},"id":421,"name":"Identifier","src":"8098:18:29"}],"id":422,"name":"FunctionCall","src":"8098:20:29"}],"id":423,"name":"VariableDeclarationStatement","src":"8064:54:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":424,"name":"Identifier","src":"8183:14:29"}],"id":425,"name":"MemberAccess","src":"8183:21:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":426,"name":"Literal","src":"8208:1:29"}],"id":427,"name":"BinaryOperation","src":"8183:26:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a0759e27e9e41d00f291554454ac32d0b694b4e532153623cf6f6e89a0f6bccb","typeString":"literal_string \"no tokens\""}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (string memory)","value":"FailedUpdateRequest"},"id":428,"name":"Identifier","src":"8273:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20746f6b656e73","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no tokens\"","value":"no tokens"},"id":429,"name":"Literal","src":"8293:11:29"}],"id":430,"name":"FunctionCall","src":"8273:32:29"}],"id":431,"name":"EmitStatement","src":"8268:37:29"}],"id":432,"name":"Block","src":"8211:181:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96388ed71ebb5d970d8c40d08f33931fc80bd2768fd60f12b78e085d12441b0e","typeString":"literal_string \"URL\""}],"overloadedDeclarations":[2621,2639],"referencedDeclaration":2621,"type":"function (string memory) returns (uint256)","value":"oraclize_getPrice"},"id":433,"name":"Identifier","src":"8402:17:29"},{"attributes":{"argumentTypes":null,"hexvalue":"55524c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"URL\"","value":"URL"},"id":434,"name":"Literal","src":"8420:5:29"}],"id":435,"name":"FunctionCall","src":"8402:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":436,"name":"Identifier","src":"8429:14:29"}],"id":437,"name":"MemberAccess","src":"8429:21:29"}],"id":438,"name":"BinaryOperation","src":"8402:48:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Oracle_$1117","typeString":"contract Oracle"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":439,"name":"ElementaryTypeNameExpression","src":"8453:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15797,"type":"contract Oracle","value":"this"},"id":440,"name":"Identifier","src":"8461:4:29"}],"id":441,"name":"FunctionCall","src":"8453:13:29"}],"id":442,"name":"MemberAccess","src":"8453:21:29"}],"id":443,"name":"BinaryOperation","src":"8402:72:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a6d1ff1db3d0b9b8c60e12ccab5ce7431be9a2cd0518ac362f1c5c1e0b1cefee","typeString":"literal_string \"insufficient balance\""}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (string memory)","value":"FailedUpdateRequest"},"id":444,"name":"Identifier","src":"8538:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e73756666696369656e742062616c616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"insufficient balance\"","value":"insufficient balance"},"id":445,"name":"Literal","src":"8558:22:29"}],"id":446,"name":"FunctionCall","src":"8538:43:29"}],"id":447,"name":"EmitStatement","src":"8533:48:29"}],"id":448,"name":"Block","src":"8476:116:29"},{"children":[{"attributes":{"assignments":[452]},"children":[{"attributes":{"constant":false,"name":"apiPrefix","scope":525,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":451,"name":"UserDefinedTypeName","src":"8671:13:29"}],"id":452,"name":"VariableDeclaration","src":"8671:30:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"https://min-api.cryptocompare.com/data/price?fsym=\"","value":"https://min-api.cryptocompare.com/data/price?fsym="},"id":453,"name":"Literal","src":"8704:52:29"}],"id":454,"name":"MemberAccess","src":"8704:60:29"}],"id":455,"name":"FunctionCall","src":"8704:62:29"}],"id":456,"name":"VariableDeclarationStatement","src":"8671:95:29"},{"attributes":{"assignments":[460]},"children":[{"attributes":{"constant":false,"name":"apiSuffix","scope":525,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":459,"name":"UserDefinedTypeName","src":"8780:13:29"}],"id":460,"name":"VariableDeclaration","src":"8780:30:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"267473796d733d455448267369676e3d74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"&tsyms=ETH&sign=true\"","value":"&tsyms=ETH&sign=true"},"id":461,"name":"Literal","src":"8813:22:29"}],"id":462,"name":"MemberAccess","src":"8813:30:29"}],"id":463,"name":"FunctionCall","src":"8813:32:29"}],"id":464,"name":"VariableDeclarationStatement","src":"8780:65:29"},{"children":[{"attributes":{"assignments":[466]},"children":[{"attributes":{"constant":false,"name":"i","scope":524,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":465,"name":"ElementaryTypeName","src":"8934:7:29"}],"id":466,"name":"VariableDeclaration","src":"8934:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":467,"name":"Literal","src":"8946:1:29"}],"id":468,"name":"VariableDeclarationStatement","src":"8934:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"uint256","value":"i"},"id":469,"name":"Identifier","src":"8949:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":470,"name":"Identifier","src":"8953:14:29"}],"id":471,"name":"MemberAccess","src":"8953:21:29"}],"id":472,"name":"BinaryOperation","src":"8949:25:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"uint256","value":"i"},"id":473,"name":"Identifier","src":"8976:1:29"}],"id":474,"name":"UnaryOperation","src":"8976:3:29"}],"id":475,"name":"ExpressionStatement","src":"8976:3:29"},{"children":[{"attributes":{"assignments":[477,null,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":523,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":476,"name":"ElementaryTypeName","src":"9061:6:29"}],"id":477,"name":"VariableDeclaration","src":"9061:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":478,"name":"Identifier","src":"9097:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":479,"name":"Identifier","src":"9111:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"uint256","value":"i"},"id":480,"name":"Identifier","src":"9126:1:29"}],"id":481,"name":"IndexAccess","src":"9111:17:29"}],"id":482,"name":"FunctionCall","src":"9097:32:29"}],"id":483,"name":"VariableDeclarationStatement","src":"9060:69:29"},{"attributes":{"assignments":[487]},"children":[{"attributes":{"constant":false,"name":"sym","scope":523,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":486,"name":"UserDefinedTypeName","src":"9148:13:29"}],"id":487,"name":"VariableDeclaration","src":"9148:24:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":477,"type":"string memory","value":"symbol"},"id":488,"name":"Identifier","src":"9175:6:29"}],"id":489,"name":"MemberAccess","src":"9175:14:29"}],"id":490,"name":"FunctionCall","src":"9175:16:29"}],"id":491,"name":"VariableDeclarationStatement","src":"9148:43:29"},{"attributes":{"assignments":[493]},"children":[{"attributes":{"constant":false,"name":"queryID","scope":523,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":492,"name":"ElementaryTypeName","src":"9284:7:29"}],"id":493,"name":"VariableDeclaration","src":"9284:15:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96388ed71ebb5d970d8c40d08f33931fc80bd2768fd60f12b78e085d12441b0e","typeString":"literal_string \"URL\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":2815,"type":"function (string memory,string memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":494,"name":"Identifier","src":"9302:14:29"},{"attributes":{"argumentTypes":null,"hexvalue":"55524c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"URL\"","value":"URL"},"id":495,"name":"Literal","src":"9317:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"concat","referencedDeclaration":14040,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"concat","referencedDeclaration":14040,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":452,"type":"struct strings.slice memory","value":"apiPrefix"},"id":496,"name":"Identifier","src":"9324:9:29"}],"id":497,"name":"MemberAccess","src":"9324:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":487,"type":"struct strings.slice memory","value":"sym"},"id":498,"name":"Identifier","src":"9341:3:29"}],"id":499,"name":"FunctionCall","src":"9324:21:29"}],"id":500,"name":"MemberAccess","src":"9324:29:29"}],"id":501,"name":"FunctionCall","src":"9324:31:29"}],"id":502,"name":"MemberAccess","src":"9324:38:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":460,"type":"struct strings.slice memory","value":"apiSuffix"},"id":503,"name":"Identifier","src":"9363:9:29"}],"id":504,"name":"FunctionCall","src":"9324:49:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":414,"type":"uint256","value":"_gasLimit"},"id":505,"name":"Identifier","src":"9375:9:29"}],"id":506,"name":"FunctionCall","src":"9302:83:29"}],"id":507,"name":"VariableDeclarationStatement","src":"9284:101:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"mapping(bytes32 => address)","value":"_queryToToken"},"id":508,"name":"Identifier","src":"9485:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":493,"type":"bytes32","value":"queryID"},"id":509,"name":"Identifier","src":"9499:7:29"}],"id":510,"name":"IndexAccess","src":"9485:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":511,"name":"Identifier","src":"9510:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"uint256","value":"i"},"id":512,"name":"Identifier","src":"9525:1:29"}],"id":513,"name":"IndexAccess","src":"9510:17:29"}],"id":514,"name":"Assignment","src":"9485:42:29"}],"id":515,"name":"ExpressionStatement","src":"9485:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"function (string memory,bytes32)","value":"RequestedUpdate"},"id":516,"name":"Identifier","src":"9599:15:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":487,"type":"struct strings.slice memory","value":"sym"},"id":517,"name":"Identifier","src":"9615:3:29"}],"id":518,"name":"MemberAccess","src":"9615:12:29"}],"id":519,"name":"FunctionCall","src":"9615:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":493,"type":"bytes32","value":"queryID"},"id":520,"name":"Identifier","src":"9631:7:29"}],"id":521,"name":"FunctionCall","src":"9599:40:29"}],"id":522,"name":"EmitStatement","src":"9594:45:29"}],"id":523,"name":"Block","src":"8981:673:29"}],"id":524,"name":"ForStatement","src":"8929:725:29"}],"id":525,"name":"Block","src":"8598:1066:29"}],"id":526,"name":"IfStatement","src":"8398:1266:29"}],"id":527,"name":"IfStatement","src":"8179:1485:29"}],"id":528,"name":"Block","src":"8054:1616:29"}],"id":529,"name":"FunctionDefinition","src":"8000:1670:29"},{"attributes":{"documentation":"@notice Re-usable helper function that performs the Oraclize Query for a specific list of tokens.\n @param _gasLimit the gas limit is passed, this is used for the Oraclize callback.\n @param _tokenList the list of tokens that need to be updated.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRatesList","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasLimit","scope":649,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":530,"name":"ElementaryTypeName","src":"9973:7:29"}],"id":531,"name":"VariableDeclaration","src":"9973:17:29"},{"attributes":{"constant":false,"name":"_tokenList","scope":649,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":532,"name":"ElementaryTypeName","src":"9992:7:29"}],"id":533,"name":"ArrayTypeName","src":"9992:9:29"}],"id":534,"name":"VariableDeclaration","src":"9992:27:29"}],"id":535,"name":"ParameterList","src":"9972:48:29"},{"attributes":{"parameters":[null]},"children":[],"id":536,"name":"ParameterList","src":"10029:0:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":537,"name":"Identifier","src":"10094:10:29"}],"id":538,"name":"MemberAccess","src":"10094:17:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":539,"name":"Literal","src":"10115:1:29"}],"id":540,"name":"BinaryOperation","src":"10094:22:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_17806a0786c207d6f85c3e1c4ecf5e91edf31bcc8527723223989c983294996b","typeString":"literal_string \"empty token list\""}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (string memory)","value":"FailedUpdateRequest"},"id":541,"name":"Identifier","src":"10180:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"656d70747920746f6b656e206c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty token list\"","value":"empty token list"},"id":542,"name":"Literal","src":"10200:18:29"}],"id":543,"name":"FunctionCall","src":"10180:39:29"}],"id":544,"name":"EmitStatement","src":"10175:44:29"}],"id":545,"name":"Block","src":"10118:188:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96388ed71ebb5d970d8c40d08f33931fc80bd2768fd60f12b78e085d12441b0e","typeString":"literal_string \"URL\""}],"overloadedDeclarations":[2621,2639],"referencedDeclaration":2621,"type":"function (string memory) returns (uint256)","value":"oraclize_getPrice"},"id":546,"name":"Identifier","src":"10316:17:29"},{"attributes":{"argumentTypes":null,"hexvalue":"55524c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"URL\"","value":"URL"},"id":547,"name":"Literal","src":"10334:5:29"}],"id":548,"name":"FunctionCall","src":"10316:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":549,"name":"Identifier","src":"10343:10:29"}],"id":550,"name":"MemberAccess","src":"10343:17:29"}],"id":551,"name":"BinaryOperation","src":"10316:44:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Oracle_$1117","typeString":"contract Oracle"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":552,"name":"ElementaryTypeNameExpression","src":"10363:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15797,"type":"contract Oracle","value":"this"},"id":553,"name":"Identifier","src":"10371:4:29"}],"id":554,"name":"FunctionCall","src":"10363:13:29"}],"id":555,"name":"MemberAccess","src":"10363:21:29"}],"id":556,"name":"BinaryOperation","src":"10316:68:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a6d1ff1db3d0b9b8c60e12ccab5ce7431be9a2cd0518ac362f1c5c1e0b1cefee","typeString":"literal_string \"insufficient balance\""}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (string memory)","value":"FailedUpdateRequest"},"id":557,"name":"Identifier","src":"10448:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e73756666696369656e742062616c616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"insufficient balance\"","value":"insufficient balance"},"id":558,"name":"Literal","src":"10468:22:29"}],"id":559,"name":"FunctionCall","src":"10448:43:29"}],"id":560,"name":"EmitStatement","src":"10443:48:29"}],"id":561,"name":"Block","src":"10386:116:29"},{"children":[{"attributes":{"assignments":[565]},"children":[{"attributes":{"constant":false,"name":"apiPrefix","scope":645,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":564,"name":"UserDefinedTypeName","src":"10581:13:29"}],"id":565,"name":"VariableDeclaration","src":"10581:30:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"https://min-api.cryptocompare.com/data/price?fsym=\"","value":"https://min-api.cryptocompare.com/data/price?fsym="},"id":566,"name":"Literal","src":"10614:52:29"}],"id":567,"name":"MemberAccess","src":"10614:60:29"}],"id":568,"name":"FunctionCall","src":"10614:62:29"}],"id":569,"name":"VariableDeclarationStatement","src":"10581:95:29"},{"attributes":{"assignments":[573]},"children":[{"attributes":{"constant":false,"name":"apiSuffix","scope":645,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":572,"name":"UserDefinedTypeName","src":"10690:13:29"}],"id":573,"name":"VariableDeclaration","src":"10690:30:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"267473796d733d455448267369676e3d74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"&tsyms=ETH&sign=true\"","value":"&tsyms=ETH&sign=true"},"id":574,"name":"Literal","src":"10723:22:29"}],"id":575,"name":"MemberAccess","src":"10723:30:29"}],"id":576,"name":"FunctionCall","src":"10723:32:29"}],"id":577,"name":"VariableDeclarationStatement","src":"10690:65:29"},{"children":[{"attributes":{"assignments":[579]},"children":[{"attributes":{"constant":false,"name":"i","scope":644,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":578,"name":"ElementaryTypeName","src":"10844:7:29"}],"id":579,"name":"VariableDeclaration","src":"10844:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":580,"name":"Literal","src":"10856:1:29"}],"id":581,"name":"VariableDeclarationStatement","src":"10844:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":579,"type":"uint256","value":"i"},"id":582,"name":"Identifier","src":"10859:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":583,"name":"Identifier","src":"10863:10:29"}],"id":584,"name":"MemberAccess","src":"10863:17:29"}],"id":585,"name":"BinaryOperation","src":"10859:21:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":579,"type":"uint256","value":"i"},"id":586,"name":"Identifier","src":"10882:1:29"}],"id":587,"name":"UnaryOperation","src":"10882:3:29"}],"id":588,"name":"ExpressionStatement","src":"10882:3:29"},{"children":[{"attributes":{"assignments":[590,null,null,592,null,null,null]},"children":[{"attributes":{"constant":false,"name":"tokenSymbol","scope":643,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":589,"name":"ElementaryTypeName","src":"10963:6:29"}],"id":590,"name":"VariableDeclaration","src":"10963:25:29"},{"attributes":{"constant":false,"name":"available","scope":643,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":591,"name":"ElementaryTypeName","src":"10994:4:29"}],"id":592,"name":"VariableDeclaration","src":"10994:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":593,"name":"Identifier","src":"11018:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":594,"name":"Identifier","src":"11032:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":579,"type":"uint256","value":"i"},"id":595,"name":"Identifier","src":"11043:1:29"}],"id":596,"name":"IndexAccess","src":"11032:13:29"}],"id":597,"name":"FunctionCall","src":"11018:28:29"}],"id":598,"name":"VariableDeclarationStatement","src":"10962:84:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ece3bb723b90e0cf52e7142c26cd1e8e9aeda26d377c85e0b1b64ab12879ce1","typeString":"literal_string \"token must be available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":599,"name":"Identifier","src":"11064:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":592,"type":"bool","value":"available"},"id":600,"name":"Identifier","src":"11072:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206d75737420626520617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token must be available\"","value":"token must be available"},"id":601,"name":"Literal","src":"11083:25:29"}],"id":602,"name":"FunctionCall","src":"11064:45:29"}],"id":603,"name":"ExpressionStatement","src":"11064:45:29"},{"attributes":{"assignments":[607]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":643,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":606,"name":"UserDefinedTypeName","src":"11188:13:29"}],"id":607,"name":"VariableDeclaration","src":"11188:27:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":590,"type":"string memory","value":"tokenSymbol"},"id":608,"name":"Identifier","src":"11218:11:29"}],"id":609,"name":"MemberAccess","src":"11218:19:29"}],"id":610,"name":"FunctionCall","src":"11218:21:29"}],"id":611,"name":"VariableDeclarationStatement","src":"11188:51:29"},{"attributes":{"assignments":[613]},"children":[{"attributes":{"constant":false,"name":"queryID","scope":643,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":612,"name":"ElementaryTypeName","src":"11332:7:29"}],"id":613,"name":"VariableDeclaration","src":"11332:15:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96388ed71ebb5d970d8c40d08f33931fc80bd2768fd60f12b78e085d12441b0e","typeString":"literal_string \"URL\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":2815,"type":"function (string memory,string memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":614,"name":"Identifier","src":"11350:14:29"},{"attributes":{"argumentTypes":null,"hexvalue":"55524c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"URL\"","value":"URL"},"id":615,"name":"Literal","src":"11365:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"concat","referencedDeclaration":14040,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"concat","referencedDeclaration":14040,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":565,"type":"struct strings.slice memory","value":"apiPrefix"},"id":616,"name":"Identifier","src":"11372:9:29"}],"id":617,"name":"MemberAccess","src":"11372:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":607,"type":"struct strings.slice memory","value":"symbol"},"id":618,"name":"Identifier","src":"11389:6:29"}],"id":619,"name":"FunctionCall","src":"11372:24:29"}],"id":620,"name":"MemberAccess","src":"11372:32:29"}],"id":621,"name":"FunctionCall","src":"11372:34:29"}],"id":622,"name":"MemberAccess","src":"11372:41:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":573,"type":"struct strings.slice memory","value":"apiSuffix"},"id":623,"name":"Identifier","src":"11414:9:29"}],"id":624,"name":"FunctionCall","src":"11372:52:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":531,"type":"uint256","value":"_gasLimit"},"id":625,"name":"Identifier","src":"11426:9:29"}],"id":626,"name":"FunctionCall","src":"11350:86:29"}],"id":627,"name":"VariableDeclarationStatement","src":"11332:104:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"mapping(bytes32 => address)","value":"_queryToToken"},"id":628,"name":"Identifier","src":"11536:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":613,"type":"bytes32","value":"queryID"},"id":629,"name":"Identifier","src":"11550:7:29"}],"id":630,"name":"IndexAccess","src":"11536:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":631,"name":"Identifier","src":"11561:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":579,"type":"uint256","value":"i"},"id":632,"name":"Identifier","src":"11572:1:29"}],"id":633,"name":"IndexAccess","src":"11561:13:29"}],"id":634,"name":"Assignment","src":"11536:38:29"}],"id":635,"name":"ExpressionStatement","src":"11536:38:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"function (string memory,bytes32)","value":"RequestedUpdate"},"id":636,"name":"Identifier","src":"11646:15:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":607,"type":"struct strings.slice memory","value":"symbol"},"id":637,"name":"Identifier","src":"11662:6:29"}],"id":638,"name":"MemberAccess","src":"11662:15:29"}],"id":639,"name":"FunctionCall","src":"11662:17:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":613,"type":"bytes32","value":"queryID"},"id":640,"name":"Identifier","src":"11681:7:29"}],"id":641,"name":"FunctionCall","src":"11646:43:29"}],"id":642,"name":"EmitStatement","src":"11641:48:29"}],"id":643,"name":"Block","src":"10887:817:29"}],"id":644,"name":"ForStatement","src":"10839:865:29"}],"id":645,"name":"Block","src":"10508:1206:29"}],"id":646,"name":"IfStatement","src":"10312:1402:29"}],"id":647,"name":"IfStatement","src":"10090:1624:29"}],"id":648,"name":"Block","src":"10029:1691:29"}],"id":649,"name":"FunctionDefinition","src":"9942:1778:29"},{"attributes":{"documentation":"@notice Verify the origin proof returned by the cryptocompare API.\n @param _result query result in JSON format.\n @param _proof origin proof from cryptocompare.\n @param _publicKey cryptocompare public key.\n @param _lastUpdate timestamp of the last time the requested token was updated.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_verifyProof","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_result","scope":862,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":650,"name":"ElementaryTypeName","src":"12069:6:29"}],"id":651,"name":"VariableDeclaration","src":"12069:21:29"},{"attributes":{"constant":false,"name":"_proof","scope":862,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":652,"name":"ElementaryTypeName","src":"12092:5:29"}],"id":653,"name":"VariableDeclaration","src":"12092:19:29"},{"attributes":{"constant":false,"name":"_publicKey","scope":862,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":654,"name":"ElementaryTypeName","src":"12113:5:29"}],"id":655,"name":"VariableDeclaration","src":"12113:23:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":862,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":656,"name":"ElementaryTypeName","src":"12138:7:29"}],"id":657,"name":"VariableDeclaration","src":"12138:19:29"}],"id":658,"name":"ParameterList","src":"12068:90:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":862,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":659,"name":"ElementaryTypeName","src":"12176:4:29"}],"id":660,"name":"VariableDeclaration","src":"12176:4:29"},{"attributes":{"constant":false,"name":"","scope":862,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":661,"name":"ElementaryTypeName","src":"12182:7:29"}],"id":662,"name":"VariableDeclaration","src":"12182:7:29"}],"id":663,"name":"ParameterList","src":"12175:15:29"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":664,"name":"Identifier","src":"12246:6:29"}],"id":665,"name":"MemberAccess","src":"12246:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_PROOF_LEN"},"id":666,"name":"Identifier","src":"12263:10:29"}],"id":667,"name":"BinaryOperation","src":"12246:27:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_802b2e61d020a57797e2091a5d618cce14acf3620b9a166bf7a7136b69cb78fb","typeString":"literal_string \"invalid proof length\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":668,"name":"Identifier","src":"12289:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c69642070726f6f66206c656e677468","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid proof length\"","value":"invalid proof length"},"id":669,"name":"Literal","src":"12296:22:29"}],"id":670,"name":"FunctionCall","src":"12289:30:29"}],"id":671,"name":"ExpressionStatement","src":"12289:30:29"}],"id":672,"name":"Block","src":"12275:55:29"}],"id":673,"name":"IfStatement","src":"12242:88:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":674,"name":"ElementaryTypeNameExpression","src":"12427:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":675,"name":"ElementaryTypeNameExpression","src":"12435:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":676,"name":"Identifier","src":"12441:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":677,"name":"Literal","src":"12448:1:29"}],"id":678,"name":"IndexAccess","src":"12441:9:29"}],"id":679,"name":"FunctionCall","src":"12435:16:29"}],"id":680,"name":"FunctionCall","src":"12427:25:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":681,"name":"Identifier","src":"12456:14:29"}],"id":682,"name":"BinaryOperation","src":"12427:43:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e0060b83051574ba40ded2ef248b0d17cb210e5fa4f776d436805ab1ebb12b87","typeString":"literal_string \"invalid signature length\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":683,"name":"Identifier","src":"12486:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265206c656e677468","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature length\"","value":"invalid signature length"},"id":684,"name":"Literal","src":"12493:26:29"}],"id":685,"name":"FunctionCall","src":"12486:34:29"}],"id":686,"name":"ExpressionStatement","src":"12486:34:29"}],"id":687,"name":"Block","src":"12472:59:29"}],"id":688,"name":"IfStatement","src":"12423:108:29"},{"attributes":{"assignments":[690]},"children":[{"attributes":{"constant":false,"name":"signature","scope":861,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":689,"name":"ElementaryTypeName","src":"12541:5:29"}],"id":690,"name":"VariableDeclaration","src":"12541:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":691,"name":"ElementaryTypeName","src":"12570:5:29"}],"id":692,"name":"NewExpression","src":"12566:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":693,"name":"Identifier","src":"12576:14:29"}],"id":694,"name":"FunctionCall","src":"12566:25:29"}],"id":695,"name":"VariableDeclarationStatement","src":"12541:50:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"bytes memory","value":"signature"},"id":696,"name":"Identifier","src":"12602:9:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":697,"name":"Identifier","src":"12614:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":698,"name":"Identifier","src":"12624:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":699,"name":"Literal","src":"12632:1:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":700,"name":"Identifier","src":"12635:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"bytes memory","value":"signature"},"id":701,"name":"Identifier","src":"12651:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":702,"name":"Literal","src":"12662:1:29"}],"id":703,"name":"FunctionCall","src":"12614:50:29"}],"id":704,"name":"Assignment","src":"12602:62:29"}],"id":705,"name":"ExpressionStatement","src":"12602:62:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":706,"name":"ElementaryTypeNameExpression","src":"12762:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":707,"name":"ElementaryTypeNameExpression","src":"12770:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":708,"name":"Identifier","src":"12776:6:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_ENCODING_BYTES"},"id":709,"name":"Identifier","src":"12783:15:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":710,"name":"Identifier","src":"12801:14:29"}],"id":711,"name":"BinaryOperation","src":"12783:32:29"}],"id":712,"name":"IndexAccess","src":"12776:40:29"}],"id":713,"name":"FunctionCall","src":"12770:47:29"}],"id":714,"name":"FunctionCall","src":"12762:56:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":96,"type":"uint256","value":"_MAX_BYTE_SIZE"},"id":715,"name":"Identifier","src":"12821:14:29"}],"id":716,"name":"BinaryOperation","src":"12762:73:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":717,"name":"ElementaryTypeNameExpression","src":"12838:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":718,"name":"ElementaryTypeNameExpression","src":"12846:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":719,"name":"Identifier","src":"12852:6:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_ENCODING_BYTES"},"id":720,"name":"Identifier","src":"12859:15:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":721,"name":"Identifier","src":"12877:14:29"}],"id":722,"name":"BinaryOperation","src":"12859:32:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":723,"name":"Literal","src":"12894:1:29"}],"id":724,"name":"BinaryOperation","src":"12859:36:29"}],"id":725,"name":"IndexAccess","src":"12852:44:29"}],"id":726,"name":"FunctionCall","src":"12846:51:29"}],"id":727,"name":"FunctionCall","src":"12838:60:29"}],"id":728,"name":"BinaryOperation","src":"12762:136:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"_HEADERS_LEN"},"id":729,"name":"Identifier","src":"12914:12:29"}],"id":730,"name":"BinaryOperation","src":"12762:164:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5d328c796053a338c6354f22dd94fc5d8cc4893b6480e6cdfcce0560436e01ab","typeString":"literal_string \"invalid headers length\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":731,"name":"Identifier","src":"12951:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c69642068656164657273206c656e677468","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid headers length\"","value":"invalid headers length"},"id":732,"name":"Literal","src":"12958:24:29"}],"id":733,"name":"FunctionCall","src":"12951:32:29"}],"id":734,"name":"ExpressionStatement","src":"12951:32:29"}],"id":735,"name":"Block","src":"12937:57:29"}],"id":736,"name":"IfStatement","src":"12745:249:29"},{"attributes":{"assignments":[738]},"children":[{"attributes":{"constant":false,"name":"headers","scope":861,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":737,"name":"ElementaryTypeName","src":"13004:5:29"}],"id":738,"name":"VariableDeclaration","src":"13004:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":739,"name":"ElementaryTypeName","src":"13031:5:29"}],"id":740,"name":"NewExpression","src":"13027:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"_HEADERS_LEN"},"id":741,"name":"Identifier","src":"13037:12:29"}],"id":742,"name":"FunctionCall","src":"13027:23:29"}],"id":743,"name":"VariableDeclarationStatement","src":"13004:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":744,"name":"Identifier","src":"13060:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":745,"name":"Identifier","src":"13070:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":746,"name":"Identifier","src":"13080:6:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":747,"name":"Literal","src":"13088:1:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_ENCODING_BYTES"},"id":748,"name":"Identifier","src":"13092:15:29"}],"id":749,"name":"BinaryOperation","src":"13088:19:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":750,"name":"Identifier","src":"13110:14:29"}],"id":751,"name":"BinaryOperation","src":"13088:36:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"_HEADERS_LEN"},"id":752,"name":"Identifier","src":"13126:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":753,"name":"Identifier","src":"13140:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":754,"name":"Literal","src":"13149:1:29"}],"id":755,"name":"FunctionCall","src":"13070:81:29"}],"id":756,"name":"Assignment","src":"13060:91:29"}],"id":757,"name":"ExpressionStatement","src":"13060:91:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":905,"type":"function (bytes memory,bytes memory,bytes memory) returns (bool)","value":"_verifySignature"},"id":758,"name":"Identifier","src":"13249:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":759,"name":"Identifier","src":"13266:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"bytes memory","value":"signature"},"id":760,"name":"Identifier","src":"13275:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":655,"type":"bytes memory","value":"_publicKey"},"id":761,"name":"Identifier","src":"13286:10:29"}],"id":762,"name":"FunctionCall","src":"13249:48:29"}],"id":763,"name":"UnaryOperation","src":"13248:49:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":764,"name":"Identifier","src":"13313:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":765,"name":"Literal","src":"13320:19:29"}],"id":766,"name":"FunctionCall","src":"13313:27:29"}],"id":767,"name":"ExpressionStatement","src":"13313:27:29"}],"id":768,"name":"Block","src":"13299:52:29"}],"id":769,"name":"IfStatement","src":"13244:107:29"},{"attributes":{"assignments":[771]},"children":[{"attributes":{"constant":false,"name":"dateHeader","scope":861,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":770,"name":"ElementaryTypeName","src":"13400:5:29"}],"id":771,"name":"VariableDeclaration","src":"13400:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":772,"name":"ElementaryTypeName","src":"13430:5:29"}],"id":773,"name":"NewExpression","src":"13426:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":774,"name":"Literal","src":"13436:2:29"}],"id":775,"name":"FunctionCall","src":"13426:13:29"}],"id":776,"name":"VariableDeclarationStatement","src":"13400:39:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":771,"type":"bytes memory","value":"dateHeader"},"id":777,"name":"Identifier","src":"13519:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":778,"name":"Identifier","src":"13532:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":779,"name":"Identifier","src":"13542:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3131","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 11","value":"11"},"id":780,"name":"Literal","src":"13551:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":781,"name":"Literal","src":"13555:2:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":771,"type":"bytes memory","value":"dateHeader"},"id":782,"name":"Identifier","src":"13559:10:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":783,"name":"Literal","src":"13571:1:29"}],"id":784,"name":"FunctionCall","src":"13532:41:29"}],"id":785,"name":"Assignment","src":"13519:54:29"}],"id":786,"name":"ExpressionStatement","src":"13519:54:29"},{"attributes":{"assignments":[788],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dateValid","scope":861,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":787,"name":"ElementaryTypeName","src":"13584:4:29"}],"id":788,"name":"VariableDeclaration","src":"13584:14:29"}],"id":789,"name":"VariableDeclarationStatement","src":"13584:14:29"},{"attributes":{"assignments":[791],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"timestamp","scope":861,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":790,"name":"ElementaryTypeName","src":"13608:7:29"}],"id":791,"name":"VariableDeclaration","src":"13608:17:29"}],"id":792,"name":"VariableDeclarationStatement","src":"13608:17:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":788,"type":"bool","value":"dateValid"},"id":793,"name":"Identifier","src":"13636:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":791,"type":"uint256","value":"timestamp"},"id":794,"name":"Identifier","src":"13647:9:29"}],"id":795,"name":"TupleExpression","src":"13635:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1116,"type":"function (string memory,uint256) pure returns (bool,uint256)","value":"_verifyDate"},"id":796,"name":"Identifier","src":"13660:11:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":797,"name":"ElementaryTypeNameExpression","src":"13672:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":771,"type":"bytes memory","value":"dateHeader"},"id":798,"name":"Identifier","src":"13679:10:29"}],"id":799,"name":"FunctionCall","src":"13672:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":657,"type":"uint256","value":"_lastUpdate"},"id":800,"name":"Identifier","src":"13692:11:29"}],"id":801,"name":"FunctionCall","src":"13660:44:29"}],"id":802,"name":"Assignment","src":"13635:69:29"}],"id":803,"name":"ExpressionStatement","src":"13635:69:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":788,"type":"bool","value":"dateValid"},"id":804,"name":"Identifier","src":"13779:9:29"}],"id":805,"name":"UnaryOperation","src":"13778:10:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bbecc4126e30eacd995bb0f9e9f3dc427c7af6aec4ece5c4f5310382377491ce","typeString":"literal_string \"invalid date\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":806,"name":"Identifier","src":"13804:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c69642064617465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid date\"","value":"invalid date"},"id":807,"name":"Literal","src":"13811:14:29"}],"id":808,"name":"FunctionCall","src":"13804:22:29"}],"id":809,"name":"ExpressionStatement","src":"13804:22:29"}],"id":810,"name":"Block","src":"13790:47:29"}],"id":811,"name":"IfStatement","src":"13774:63:29"},{"attributes":{"assignments":[813]},"children":[{"attributes":{"constant":false,"name":"digest","scope":861,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":812,"name":"ElementaryTypeName","src":"13915:5:29"}],"id":813,"name":"VariableDeclaration","src":"13915:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":814,"name":"ElementaryTypeName","src":"13941:5:29"}],"id":815,"name":"NewExpression","src":"13937:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"uint256","value":"_DIGEST_BASE64_LEN"},"id":816,"name":"Identifier","src":"13947:18:29"}],"id":817,"name":"FunctionCall","src":"13937:29:29"}],"id":818,"name":"VariableDeclarationStatement","src":"13915:51:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":813,"type":"bytes memory","value":"digest"},"id":819,"name":"Identifier","src":"13976:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":820,"name":"Identifier","src":"13985:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":821,"name":"Identifier","src":"13995:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":93,"type":"uint256","value":"_DIGEST_OFFSET"},"id":822,"name":"Identifier","src":"14004:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"uint256","value":"_DIGEST_BASE64_LEN"},"id":823,"name":"Identifier","src":"14020:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":813,"type":"bytes memory","value":"digest"},"id":824,"name":"Identifier","src":"14040:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":825,"name":"Literal","src":"14048:1:29"}],"id":826,"name":"FunctionCall","src":"13985:65:29"}],"id":827,"name":"Assignment","src":"13976:74:29"}],"id":828,"name":"ExpressionStatement","src":"13976:74:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":829,"name":"Identifier","src":"14065:9:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":830,"name":"Identifier","src":"14075:3:29"}],"id":831,"name":"MemberAccess","src":"14075:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":832,"name":"Identifier","src":"14092:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":833,"name":"Identifier","src":"14099:3:29"}],"id":834,"name":"MemberAccess","src":"14099:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":651,"type":"string memory","value":"_result"},"id":835,"name":"Identifier","src":"14116:7:29"}],"id":836,"name":"FunctionCall","src":"14099:25:29"}],"id":837,"name":"FunctionCall","src":"14092:33:29"}],"id":838,"name":"FunctionCall","src":"14075:51:29"}],"id":839,"name":"FunctionCall","src":"14065:62:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":840,"name":"Identifier","src":"14131:9:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1573,"type":"function (bytes memory) pure returns (bytes memory)","value":"_base64decode"},"id":841,"name":"Identifier","src":"14141:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":813,"type":"bytes memory","value":"digest"},"id":842,"name":"Identifier","src":"14155:6:29"}],"id":843,"name":"FunctionCall","src":"14141:21:29"}],"id":844,"name":"FunctionCall","src":"14131:32:29"}],"id":845,"name":"BinaryOperation","src":"14065:98:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d892d676e319d50e68a733eb2b14dc19c2350f0f2f1e2e0011eedd93c8ff152f","typeString":"literal_string \"result hash not matching\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":846,"name":"Identifier","src":"14179:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"726573756c742068617368206e6f74206d61746368696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"result hash not matching\"","value":"result hash not matching"},"id":847,"name":"Literal","src":"14186:26:29"}],"id":848,"name":"FunctionCall","src":"14179:34:29"}],"id":849,"name":"ExpressionStatement","src":"14179:34:29"}],"id":850,"name":"Block","src":"14165:59:29"}],"id":851,"name":"IfStatement","src":"14061:163:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":53,"type":"function (bytes memory,string memory)","value":"VerifiedProof"},"id":852,"name":"Identifier","src":"14239:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":655,"type":"bytes memory","value":"_publicKey"},"id":853,"name":"Identifier","src":"14253:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":651,"type":"string memory","value":"_result"},"id":854,"name":"Identifier","src":"14265:7:29"}],"id":855,"name":"FunctionCall","src":"14239:34:29"}],"id":856,"name":"EmitStatement","src":"14234:39:29"},{"attributes":{"functionReturnParameters":663},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":857,"name":"Literal","src":"14291:4:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":791,"type":"uint256","value":"timestamp"},"id":858,"name":"Identifier","src":"14297:9:29"}],"id":859,"name":"TupleExpression","src":"14290:17:29"}],"id":860,"name":"Return","src":"14283:24:29"}],"id":861,"name":"Block","src":"12191:2123:29"}],"id":862,"name":"FunctionDefinition","src":"12047:2267:29"},{"attributes":{"documentation":"@notice Verify the HTTP headers and the signature\n @param _headers HTTP headers provided by the cryptocompare api\n @param _signature signature provided by the cryptocompare api\n @param _publicKey cryptocompare public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_verifySignature","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_headers","scope":905,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":863,"name":"ElementaryTypeName","src":"14597:5:29"}],"id":864,"name":"VariableDeclaration","src":"14597:21:29"},{"attributes":{"constant":false,"name":"_signature","scope":905,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":865,"name":"ElementaryTypeName","src":"14620:5:29"}],"id":866,"name":"VariableDeclaration","src":"14620:23:29"},{"attributes":{"constant":false,"name":"_publicKey","scope":905,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":867,"name":"ElementaryTypeName","src":"14645:5:29"}],"id":868,"name":"VariableDeclaration","src":"14645:23:29"}],"id":869,"name":"ParameterList","src":"14596:73:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":905,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":870,"name":"ElementaryTypeName","src":"14687:4:29"}],"id":871,"name":"VariableDeclaration","src":"14687:4:29"}],"id":872,"name":"ParameterList","src":"14686:6:29"},{"children":[{"attributes":{"assignments":[874],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"signer","scope":904,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":873,"name":"ElementaryTypeName","src":"14703:7:29"}],"id":874,"name":"VariableDeclaration","src":"14703:14:29"}],"id":875,"name":"VariableDeclarationStatement","src":"14703:14:29"},{"attributes":{"assignments":[877],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"signatureOK","scope":904,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":876,"name":"ElementaryTypeName","src":"14727:4:29"}],"id":877,"name":"VariableDeclaration","src":"14727:16:29"}],"id":878,"name":"VariableDeclarationStatement","src":"14727:16:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"bool","value":"signatureOK"},"id":879,"name":"Identifier","src":"14822:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":874,"type":"address","value":"signer"},"id":880,"name":"Identifier","src":"14835:6:29"}],"id":881,"name":"TupleExpression","src":"14821:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,address)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7847,"type":"function (bytes32,bytes memory) returns (bool,address)","value":"ecrecovery"},"id":882,"name":"Identifier","src":"14845:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":883,"name":"Identifier","src":"14856:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":864,"type":"bytes memory","value":"_headers"},"id":884,"name":"Identifier","src":"14863:8:29"}],"id":885,"name":"FunctionCall","src":"14856:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":866,"type":"bytes memory","value":"_signature"},"id":886,"name":"Identifier","src":"14874:10:29"}],"id":887,"name":"FunctionCall","src":"14845:40:29"}],"id":888,"name":"Assignment","src":"14821:64:29"}],"id":889,"name":"ExpressionStatement","src":"14821:64:29"},{"attributes":{"functionReturnParameters":872},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"bool","value":"signatureOK"},"id":890,"name":"Identifier","src":"14902:11:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":874,"type":"address","value":"signer"},"id":891,"name":"Identifier","src":"14917:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":892,"name":"ElementaryTypeNameExpression","src":"14927:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":893,"name":"ElementaryTypeNameExpression","src":"14935:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":894,"name":"ElementaryTypeNameExpression","src":"14943:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":895,"name":"Identifier","src":"14951:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":868,"type":"bytes memory","value":"_publicKey"},"id":896,"name":"Identifier","src":"14961:10:29"}],"id":897,"name":"FunctionCall","src":"14951:21:29"}],"id":898,"name":"FunctionCall","src":"14943:30:29"}],"id":899,"name":"FunctionCall","src":"14935:39:29"}],"id":900,"name":"FunctionCall","src":"14927:48:29"}],"id":901,"name":"BinaryOperation","src":"14917:58:29"}],"id":902,"name":"BinaryOperation","src":"14902:73:29"}],"id":903,"name":"Return","src":"14895:80:29"}],"id":904,"name":"Block","src":"14693:289:29"}],"id":905,"name":"FunctionDefinition","src":"14571:411:29"},{"attributes":{"documentation":"@notice Verify the signed HTTP date header.\n @param _dateHeader extracted date string e.g. Wed, 12 Sep 2018 15:18:14 GMT.\n @param _lastUpdate timestamp of the last time the requested token was updated.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_verifyDate","scope":1117,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_dateHeader","scope":1116,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":906,"name":"ElementaryTypeName","src":"15233:6:29"}],"id":907,"name":"VariableDeclaration","src":"15233:25:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":1116,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":908,"name":"ElementaryTypeName","src":"15260:7:29"}],"id":909,"name":"VariableDeclaration","src":"15260:19:29"}],"id":910,"name":"ParameterList","src":"15232:48:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":1116,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":911,"name":"ElementaryTypeName","src":"15303:4:29"}],"id":912,"name":"VariableDeclaration","src":"15303:4:29"},{"attributes":{"constant":false,"name":"","scope":1116,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":913,"name":"ElementaryTypeName","src":"15309:7:29"}],"id":914,"name":"VariableDeclaration","src":"15309:7:29"}],"id":915,"name":"ParameterList","src":"15302:15:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":15698,"type":"function (bool) pure","value":"assert"},"id":916,"name":"Identifier","src":"15410:6:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":917,"name":"Identifier","src":"15417:3:29"}],"id":918,"name":"MemberAccess","src":"15417:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"string memory","value":"_dateHeader"},"id":919,"name":"Identifier","src":"15434:11:29"}],"id":920,"name":"FunctionCall","src":"15417:29:29"}],"id":921,"name":"MemberAccess","src":"15417:36:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":922,"name":"Literal","src":"15457:2:29"}],"id":923,"name":"BinaryOperation","src":"15417:42:29"}],"id":924,"name":"FunctionCall","src":"15410:50:29"}],"id":925,"name":"ExpressionStatement","src":"15410:50:29"},{"attributes":{"assignments":[929]},"children":[{"attributes":{"constant":false,"name":"date","scope":1115,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":928,"name":"UserDefinedTypeName","src":"15540:13:29"}],"id":929,"name":"VariableDeclaration","src":"15540:25:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"string memory","value":"_dateHeader"},"id":930,"name":"Identifier","src":"15568:11:29"}],"id":931,"name":"MemberAccess","src":"15568:19:29"}],"id":932,"name":"FunctionCall","src":"15568:21:29"}],"id":933,"name":"VariableDeclarationStatement","src":"15540:49:29"},{"attributes":{"assignments":[937]},"children":[{"attributes":{"constant":false,"name":"timeDelimiter","scope":1115,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":936,"name":"UserDefinedTypeName","src":"15599:13:29"}],"id":937,"name":"VariableDeclaration","src":"15599:34:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \":\"","value":":"},"id":938,"name":"Literal","src":"15636:3:29"}],"id":939,"name":"MemberAccess","src":"15636:11:29"}],"id":940,"name":"FunctionCall","src":"15636:13:29"}],"id":941,"name":"VariableDeclarationStatement","src":"15599:50:29"},{"attributes":{"assignments":[945]},"children":[{"attributes":{"constant":false,"name":"dateDelimiter","scope":1115,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":944,"name":"UserDefinedTypeName","src":"15659:13:29"}],"id":945,"name":"VariableDeclaration","src":"15659:34:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"20","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \" \"","value":" "},"id":946,"name":"Literal","src":"15696:3:29"}],"id":947,"name":"MemberAccess","src":"15696:11:29"}],"id":948,"name":"FunctionCall","src":"15696:13:29"}],"id":949,"name":"VariableDeclarationStatement","src":"15659:50:29"},{"attributes":{"assignments":[951]},"children":[{"attributes":{"constant":false,"name":"day","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":950,"name":"ElementaryTypeName","src":"15720:7:29"}],"id":951,"name":"VariableDeclaration","src":"15720:11:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":952,"name":"Identifier","src":"15734:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":953,"name":"Identifier","src":"15754:4:29"}],"id":954,"name":"MemberAccess","src":"15754:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"struct strings.slice memory","value":"dateDelimiter"},"id":955,"name":"Identifier","src":"15765:13:29"}],"id":956,"name":"FunctionCall","src":"15754:25:29"}],"id":957,"name":"MemberAccess","src":"15754:34:29"}],"id":958,"name":"FunctionCall","src":"15754:36:29"}],"id":959,"name":"FunctionCall","src":"15734:57:29"}],"id":960,"name":"VariableDeclarationStatement","src":"15720:71:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_95a75b02e57058f7bbef7ee70d3873b2804ff7df40eb4e37bbf8661373f3d1ba","typeString":"literal_string \"day error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":961,"name":"Identifier","src":"15801:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"uint256","value":"day"},"id":962,"name":"Identifier","src":"15809:3:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":963,"name":"Literal","src":"15815:1:29"}],"id":964,"name":"BinaryOperation","src":"15809:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"uint256","value":"day"},"id":965,"name":"Identifier","src":"15820:3:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":966,"name":"Literal","src":"15826:2:29"}],"id":967,"name":"BinaryOperation","src":"15820:8:29"}],"id":968,"name":"BinaryOperation","src":"15809:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"646179206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"day error\"","value":"day error"},"id":969,"name":"Literal","src":"15830:11:29"}],"id":970,"name":"FunctionCall","src":"15801:41:29"}],"id":971,"name":"ExpressionStatement","src":"15801:41:29"},{"attributes":{"assignments":[973]},"children":[{"attributes":{"constant":false,"name":"month","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":972,"name":"ElementaryTypeName","src":"15853:7:29"}],"id":973,"name":"VariableDeclaration","src":"15853:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8117,"type":"function (string memory) pure returns (uint8)","value":"_monthToNumber"},"id":974,"name":"Identifier","src":"15869:14:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":975,"name":"Identifier","src":"15884:4:29"}],"id":976,"name":"MemberAccess","src":"15884:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"struct strings.slice memory","value":"dateDelimiter"},"id":977,"name":"Identifier","src":"15895:13:29"}],"id":978,"name":"FunctionCall","src":"15884:25:29"}],"id":979,"name":"MemberAccess","src":"15884:34:29"}],"id":980,"name":"FunctionCall","src":"15884:36:29"}],"id":981,"name":"FunctionCall","src":"15869:52:29"}],"id":982,"name":"VariableDeclarationStatement","src":"15853:68:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a1177fbd3d9cf5cca68d736867c5e28749fe8032db444d9fa5da3d2ddd8f3f73","typeString":"literal_string \"month error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":983,"name":"Identifier","src":"15931:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":973,"type":"uint256","value":"month"},"id":984,"name":"Identifier","src":"15939:5:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":985,"name":"Literal","src":"15947:1:29"}],"id":986,"name":"BinaryOperation","src":"15939:9:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":973,"type":"uint256","value":"month"},"id":987,"name":"Identifier","src":"15952:5:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3133","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 13","value":"13"},"id":988,"name":"Literal","src":"15960:2:29"}],"id":989,"name":"BinaryOperation","src":"15952:10:29"}],"id":990,"name":"BinaryOperation","src":"15939:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e7468206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"month error\"","value":"month error"},"id":991,"name":"Literal","src":"15964:13:29"}],"id":992,"name":"FunctionCall","src":"15931:47:29"}],"id":993,"name":"ExpressionStatement","src":"15931:47:29"},{"attributes":{"assignments":[995]},"children":[{"attributes":{"constant":false,"name":"year","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":994,"name":"ElementaryTypeName","src":"15989:7:29"}],"id":995,"name":"VariableDeclaration","src":"15989:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":996,"name":"Identifier","src":"16004:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":997,"name":"Identifier","src":"16024:4:29"}],"id":998,"name":"MemberAccess","src":"16024:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"struct strings.slice memory","value":"dateDelimiter"},"id":999,"name":"Identifier","src":"16035:13:29"}],"id":1000,"name":"FunctionCall","src":"16024:25:29"}],"id":1001,"name":"MemberAccess","src":"16024:34:29"}],"id":1002,"name":"FunctionCall","src":"16024:36:29"}],"id":1003,"name":"FunctionCall","src":"16004:57:29"}],"id":1004,"name":"VariableDeclarationStatement","src":"15989:72:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d839699d3e7666d9e399390bf4d043a50156c35b49e48b95ba932560f4dddcd","typeString":"literal_string \"year error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1005,"name":"Identifier","src":"16071:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"year"},"id":1006,"name":"Identifier","src":"16079:4:29"},{"attributes":{"argumentTypes":null,"hexvalue":"32303137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2017","value":"2017"},"id":1007,"name":"Literal","src":"16086:4:29"}],"id":1008,"name":"BinaryOperation","src":"16079:11:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"year"},"id":1009,"name":"Identifier","src":"16094:4:29"},{"attributes":{"argumentTypes":null,"hexvalue":"33303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3000","value":"3000"},"id":1010,"name":"Literal","src":"16101:4:29"}],"id":1011,"name":"BinaryOperation","src":"16094:11:29"}],"id":1012,"name":"BinaryOperation","src":"16079:26:29"},{"attributes":{"argumentTypes":null,"hexvalue":"79656172206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"year error\"","value":"year error"},"id":1013,"name":"Literal","src":"16107:12:29"}],"id":1014,"name":"FunctionCall","src":"16071:49:29"}],"id":1015,"name":"ExpressionStatement","src":"16071:49:29"},{"attributes":{"assignments":[1017]},"children":[{"attributes":{"constant":false,"name":"hour","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1016,"name":"ElementaryTypeName","src":"16131:7:29"}],"id":1017,"name":"VariableDeclaration","src":"16131:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":1018,"name":"Identifier","src":"16146:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":1019,"name":"Identifier","src":"16166:4:29"}],"id":1020,"name":"MemberAccess","src":"16166:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":937,"type":"struct strings.slice memory","value":"timeDelimiter"},"id":1021,"name":"Identifier","src":"16177:13:29"}],"id":1022,"name":"FunctionCall","src":"16166:25:29"}],"id":1023,"name":"MemberAccess","src":"16166:34:29"}],"id":1024,"name":"FunctionCall","src":"16166:36:29"}],"id":1025,"name":"FunctionCall","src":"16146:57:29"}],"id":1026,"name":"VariableDeclarationStatement","src":"16131:72:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab056418919ffee98f625728a16422f4a36f7aa321eeee0b9e5360560378b27c","typeString":"literal_string \"hour error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1027,"name":"Identifier","src":"16213:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1017,"type":"uint256","value":"hour"},"id":1028,"name":"Identifier","src":"16221:4:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3235","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 25","value":"25"},"id":1029,"name":"Literal","src":"16228:2:29"}],"id":1030,"name":"BinaryOperation","src":"16221:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"686f7572206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"hour error\"","value":"hour error"},"id":1031,"name":"Literal","src":"16232:12:29"}],"id":1032,"name":"FunctionCall","src":"16213:32:29"}],"id":1033,"name":"ExpressionStatement","src":"16213:32:29"},{"attributes":{"assignments":[1035]},"children":[{"attributes":{"constant":false,"name":"minute","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1034,"name":"ElementaryTypeName","src":"16256:7:29"}],"id":1035,"name":"VariableDeclaration","src":"16256:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":1036,"name":"Identifier","src":"16273:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":1037,"name":"Identifier","src":"16293:4:29"}],"id":1038,"name":"MemberAccess","src":"16293:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":937,"type":"struct strings.slice memory","value":"timeDelimiter"},"id":1039,"name":"Identifier","src":"16304:13:29"}],"id":1040,"name":"FunctionCall","src":"16293:25:29"}],"id":1041,"name":"MemberAccess","src":"16293:34:29"}],"id":1042,"name":"FunctionCall","src":"16293:36:29"}],"id":1043,"name":"FunctionCall","src":"16273:57:29"}],"id":1044,"name":"VariableDeclarationStatement","src":"16256:74:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c3c1ccf9a2b7bd2832b9ffd4cd2f682d3e60d7b053050a16568916bf28585299","typeString":"literal_string \"minute error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1045,"name":"Identifier","src":"16340:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"uint256","value":"minute"},"id":1046,"name":"Identifier","src":"16348:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":1047,"name":"Literal","src":"16357:2:29"}],"id":1048,"name":"BinaryOperation","src":"16348:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6d696e757465206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"minute error\"","value":"minute error"},"id":1049,"name":"Literal","src":"16361:14:29"}],"id":1050,"name":"FunctionCall","src":"16340:36:29"}],"id":1051,"name":"ExpressionStatement","src":"16340:36:29"},{"attributes":{"assignments":[1053]},"children":[{"attributes":{"constant":false,"name":"second","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1052,"name":"ElementaryTypeName","src":"16387:7:29"}],"id":1053,"name":"VariableDeclaration","src":"16387:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":1054,"name":"Identifier","src":"16404:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":1055,"name":"Identifier","src":"16424:4:29"}],"id":1056,"name":"MemberAccess","src":"16424:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":937,"type":"struct strings.slice memory","value":"timeDelimiter"},"id":1057,"name":"Identifier","src":"16435:13:29"}],"id":1058,"name":"FunctionCall","src":"16424:25:29"}],"id":1059,"name":"MemberAccess","src":"16424:34:29"}],"id":1060,"name":"FunctionCall","src":"16424:36:29"}],"id":1061,"name":"FunctionCall","src":"16404:57:29"}],"id":1062,"name":"VariableDeclarationStatement","src":"16387:74:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30566e2365c40c39b8cff6f6328671d3f74806dbf5a804b36e8ac7217a4f034c","typeString":"literal_string \"second error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1063,"name":"Identifier","src":"16471:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1053,"type":"uint256","value":"second"},"id":1064,"name":"Identifier","src":"16479:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":1065,"name":"Literal","src":"16488:2:29"}],"id":1066,"name":"BinaryOperation","src":"16479:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"7365636f6e64206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"second error\"","value":"second error"},"id":1067,"name":"Literal","src":"16492:14:29"}],"id":1068,"name":"FunctionCall","src":"16471:36:29"}],"id":1069,"name":"ExpressionStatement","src":"16471:36:29"},{"attributes":{"assignments":[1071]},"children":[{"attributes":{"constant":false,"name":"timestamp","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1070,"name":"ElementaryTypeName","src":"16518:7:29"}],"id":1071,"name":"VariableDeclaration","src":"16518:17:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"year"},"id":1072,"name":"Identifier","src":"16538:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 10000000000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 10000000000"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1073,"name":"Literal","src":"16546:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1074,"name":"Literal","src":"16550:2:29"}],"id":1075,"name":"BinaryOperation","src":"16546:6:29"}],"id":1076,"name":"TupleExpression","src":"16545:8:29"}],"id":1077,"name":"BinaryOperation","src":"16538:15:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":973,"type":"uint256","value":"month"},"id":1078,"name":"Identifier","src":"16556:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 100000000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 100000000"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1079,"name":"Literal","src":"16565:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":1080,"name":"Literal","src":"16569:1:29"}],"id":1081,"name":"BinaryOperation","src":"16565:5:29"}],"id":1082,"name":"TupleExpression","src":"16564:7:29"}],"id":1083,"name":"BinaryOperation","src":"16556:15:29"}],"id":1084,"name":"BinaryOperation","src":"16538:33:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"uint256","value":"day"},"id":1085,"name":"Identifier","src":"16574:3:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 1000000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 1000000"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1086,"name":"Literal","src":"16581:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":1087,"name":"Literal","src":"16585:1:29"}],"id":1088,"name":"BinaryOperation","src":"16581:5:29"}],"id":1089,"name":"TupleExpression","src":"16580:7:29"}],"id":1090,"name":"BinaryOperation","src":"16574:13:29"}],"id":1091,"name":"BinaryOperation","src":"16538:49:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1017,"type":"uint256","value":"hour"},"id":1092,"name":"Identifier","src":"16590:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 10000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 10000"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1093,"name":"Literal","src":"16598:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1094,"name":"Literal","src":"16602:1:29"}],"id":1095,"name":"BinaryOperation","src":"16598:5:29"}],"id":1096,"name":"TupleExpression","src":"16597:7:29"}],"id":1097,"name":"BinaryOperation","src":"16590:14:29"}],"id":1098,"name":"BinaryOperation","src":"16538:66:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"uint256","value":"minute"},"id":1099,"name":"Identifier","src":"16607:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1100,"name":"Literal","src":"16617:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1101,"name":"Literal","src":"16621:1:29"}],"id":1102,"name":"BinaryOperation","src":"16617:5:29"}],"id":1103,"name":"TupleExpression","src":"16616:7:29"}],"id":1104,"name":"BinaryOperation","src":"16607:16:29"}],"id":1105,"name":"BinaryOperation","src":"16538:85:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1053,"type":"uint256","value":"second"},"id":1106,"name":"Identifier","src":"16626:6:29"}],"id":1107,"name":"BinaryOperation","src":"16538:94:29"}],"id":1108,"name":"VariableDeclarationStatement","src":"16518:114:29"},{"attributes":{"functionReturnParameters":915},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"uint256","value":"timestamp"},"id":1109,"name":"Identifier","src":"16651:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"uint256","value":"_lastUpdate"},"id":1110,"name":"Identifier","src":"16663:11:29"}],"id":1111,"name":"BinaryOperation","src":"16651:23:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"uint256","value":"timestamp"},"id":1112,"name":"Identifier","src":"16676:9:29"}],"id":1113,"name":"TupleExpression","src":"16650:36:29"}],"id":1114,"name":"Return","src":"16643:43:29"}],"id":1115,"name":"Block","src":"15318:1375:29"}],"id":1116,"name":"FunctionDefinition","src":"15212:1481:29"}],"id":1117,"name":"ContractDefinition","src":"1226:15469:29"}],"id":1118,"name":"SourceUnit","src":"770:15926:29"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[9834],"TokenWhitelist":[10734]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":9748,"name":"PragmaDirective","src":"774:24:30"},{"attributes":{"SourceUnit":7950,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9749,"name":"ImportDirective","src":"800:38:30"},{"attributes":{"SourceUnit":8982,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9750,"name":"ImportDirective","src":"839:39:30"},{"attributes":{"SourceUnit":14268,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9751,"name":"ImportDirective","src":"879:36:30"},{"attributes":{"SourceUnit":14157,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9752,"name":"ImportDirective","src":"916:33:30"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9753,"name":"ImportDirective","src":"950:34:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[9834],"name":"ITokenWhitelist","scope":10735},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9754,"name":"ElementaryTypeName","src":"1124:7:30"}],"id":9755,"name":"VariableDeclaration","src":"1124:7:30"}],"id":9756,"name":"ParameterList","src":"1123:9:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9757,"name":"ElementaryTypeName","src":"1156:6:30"}],"id":9758,"name":"VariableDeclaration","src":"1156:13:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9759,"name":"ElementaryTypeName","src":"1171:7:30"}],"id":9760,"name":"VariableDeclaration","src":"1171:7:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9761,"name":"ElementaryTypeName","src":"1180:7:30"}],"id":9762,"name":"VariableDeclaration","src":"1180:7:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9763,"name":"ElementaryTypeName","src":"1189:4:30"}],"id":9764,"name":"VariableDeclaration","src":"1189:4:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9765,"name":"ElementaryTypeName","src":"1195:4:30"}],"id":9766,"name":"VariableDeclaration","src":"1195:4:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9767,"name":"ElementaryTypeName","src":"1201:4:30"}],"id":9768,"name":"VariableDeclaration","src":"1201:4:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9769,"name":"ElementaryTypeName","src":"1207:7:30"}],"id":9770,"name":"VariableDeclaration","src":"1207:7:30"}],"id":9771,"name":"ParameterList","src":"1155:60:30"}],"id":9772,"name":"FunctionDefinition","src":"1102:114:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9773,"name":"ParameterList","src":"1248:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9774,"name":"ElementaryTypeName","src":"1274:6:30"}],"id":9775,"name":"VariableDeclaration","src":"1274:13:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9776,"name":"ElementaryTypeName","src":"1289:7:30"}],"id":9777,"name":"VariableDeclaration","src":"1289:7:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9778,"name":"ElementaryTypeName","src":"1298:7:30"}],"id":9779,"name":"VariableDeclaration","src":"1298:7:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9780,"name":"ElementaryTypeName","src":"1307:4:30"}],"id":9781,"name":"VariableDeclaration","src":"1307:4:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9782,"name":"ElementaryTypeName","src":"1313:4:30"}],"id":9783,"name":"VariableDeclaration","src":"1313:4:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9784,"name":"ElementaryTypeName","src":"1319:4:30"}],"id":9785,"name":"VariableDeclaration","src":"1319:4:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9786,"name":"ElementaryTypeName","src":"1325:7:30"}],"id":9787,"name":"VariableDeclaration","src":"1325:7:30"}],"id":9788,"name":"ParameterList","src":"1273:60:30"}],"id":9789,"name":"FunctionDefinition","src":"1222:112:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9790,"name":"ParameterList","src":"1366:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9795,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9791,"name":"ElementaryTypeName","src":"1392:7:30"}],"id":9792,"name":"ArrayTypeName","src":"1392:9:30"}],"id":9793,"name":"VariableDeclaration","src":"1392:16:30"}],"id":9794,"name":"ParameterList","src":"1391:18:30"}],"id":9795,"name":"FunctionDefinition","src":"1340:70:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9796,"name":"ParameterList","src":"1441:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9801,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9797,"name":"ElementaryTypeName","src":"1467:7:30"}],"id":9798,"name":"ArrayTypeName","src":"1467:9:30"}],"id":9799,"name":"VariableDeclaration","src":"1467:16:30"}],"id":9800,"name":"ParameterList","src":"1466:18:30"}],"id":9801,"name":"FunctionDefinition","src":"1416:69:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":9808,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9802,"name":"ElementaryTypeName","src":"1518:6:30"}],"id":9803,"name":"VariableDeclaration","src":"1518:6:30"}],"id":9804,"name":"ParameterList","src":"1517:8:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9808,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9805,"name":"ElementaryTypeName","src":"1549:4:30"}],"id":9806,"name":"VariableDeclaration","src":"1549:4:30"}],"id":9807,"name":"ParameterList","src":"1548:6:30"}],"id":9808,"name":"FunctionDefinition","src":"1491:64:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":9819,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9809,"name":"ElementaryTypeName","src":"1597:7:30"}],"id":9810,"name":"VariableDeclaration","src":"1597:7:30"},{"attributes":{"constant":false,"name":"","scope":9819,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9811,"name":"ElementaryTypeName","src":"1606:5:30"}],"id":9812,"name":"VariableDeclaration","src":"1606:14:30"}],"id":9813,"name":"ParameterList","src":"1596:25:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9819,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9814,"name":"ElementaryTypeName","src":"1645:7:30"}],"id":9815,"name":"VariableDeclaration","src":"1645:7:30"},{"attributes":{"constant":false,"name":"","scope":9819,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9816,"name":"ElementaryTypeName","src":"1654:7:30"}],"id":9817,"name":"VariableDeclaration","src":"1654:7:30"}],"id":9818,"name":"ParameterList","src":"1644:18:30"}],"id":9819,"name":"FunctionDefinition","src":"1561:102:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9820,"name":"ParameterList","src":"1688:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9824,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9821,"name":"ElementaryTypeName","src":"1714:7:30"}],"id":9822,"name":"VariableDeclaration","src":"1714:7:30"}],"id":9823,"name":"ParameterList","src":"1713:9:30"}],"id":9824,"name":"FunctionDefinition","src":"1669:54:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":9834,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":9833,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9825,"name":"ElementaryTypeName","src":"1754:7:30"}],"id":9826,"name":"VariableDeclaration","src":"1754:7:30"},{"attributes":{"constant":false,"name":"","scope":9833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9827,"name":"ElementaryTypeName","src":"1763:7:30"}],"id":9828,"name":"VariableDeclaration","src":"1763:7:30"},{"attributes":{"constant":false,"name":"","scope":9833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9829,"name":"ElementaryTypeName","src":"1772:7:30"}],"id":9830,"name":"VariableDeclaration","src":"1772:7:30"}],"id":9831,"name":"ParameterList","src":"1753:27:30"},{"attributes":{"parameters":[null]},"children":[],"id":9832,"name":"ParameterList","src":"1789:0:30"}],"id":9833,"name":"FunctionDefinition","src":"1729:61:30"}],"id":9834,"name":"ContractDefinition","src":"1070:722:30"},{"attributes":{"contractDependencies":[7949,8163,8981],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[10734,8981,7949,8163],"name":"TokenWhitelist","scope":10735},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":8163,"type":"contract ENSResolvable"},"id":9835,"name":"UserDefinedTypeName","src":"1966:13:30"}],"id":9836,"name":"InheritanceSpecifier","src":"1966:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":7949,"type":"contract Controllable"},"id":9837,"name":"UserDefinedTypeName","src":"1981:12:30"}],"id":9838,"name":"InheritanceSpecifier","src":"1981:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":8981,"type":"contract Transferrable"},"id":9839,"name":"UserDefinedTypeName","src":"1995:13:30"}],"id":9840,"name":"InheritanceSpecifier","src":"1995:13:30"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":14156,"type":"library strings"},"id":9841,"name":"UserDefinedTypeName","src":"2021:7:30"}],"id":9842,"name":"UsingForDirective","src":"2015:20:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":9843,"name":"UserDefinedTypeName","src":"2046:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":9844,"name":"ElementaryTypeName","src":"2059:7:30"}],"id":9845,"name":"UsingForDirective","src":"2040:27:30"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":14267,"type":"library BytesUtils"},"id":9846,"name":"UserDefinedTypeName","src":"2078:10:30"},{"attributes":{"name":"bytes","type":"bytes"},"id":9847,"name":"ElementaryTypeName","src":"2093:5:30"}],"id":9848,"name":"UsingForDirective","src":"2072:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9849,"name":"ElementaryTypeName","src":"2128:7:30"}],"id":9850,"name":"VariableDeclaration","src":"2128:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9851,"name":"ElementaryTypeName","src":"2145:7:30"}],"id":9852,"name":"VariableDeclaration","src":"2145:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":9856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9853,"name":"ElementaryTypeName","src":"2161:7:30"}],"id":9854,"name":"VariableDeclaration","src":"2161:13:30"}],"id":9855,"name":"ParameterList","src":"2127:48:30"}],"id":9856,"name":"EventDefinition","src":"2105:71:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9864,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9857,"name":"ElementaryTypeName","src":"2209:7:30"}],"id":9858,"name":"VariableDeclaration","src":"2209:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9864,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9859,"name":"ElementaryTypeName","src":"2226:7:30"}],"id":9860,"name":"VariableDeclaration","src":"2226:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":9864,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9861,"name":"ElementaryTypeName","src":"2242:4:30"}],"id":9862,"name":"VariableDeclaration","src":"2242:14:30"}],"id":9863,"name":"ParameterList","src":"2208:49:30"}],"id":9864,"name":"EventDefinition","src":"2182:76:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9865,"name":"ElementaryTypeName","src":"2292:7:30"}],"id":9866,"name":"VariableDeclaration","src":"2292:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9867,"name":"ElementaryTypeName","src":"2309:7:30"}],"id":9868,"name":"VariableDeclaration","src":"2309:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":9872,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9869,"name":"ElementaryTypeName","src":"2325:4:30"}],"id":9870,"name":"VariableDeclaration","src":"2325:16:30"}],"id":9871,"name":"ParameterList","src":"2291:51:30"}],"id":9872,"name":"EventDefinition","src":"2263:80:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9873,"name":"ElementaryTypeName","src":"2366:7:30"}],"id":9874,"name":"VariableDeclaration","src":"2366:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9875,"name":"ElementaryTypeName","src":"2383:7:30"}],"id":9876,"name":"VariableDeclaration","src":"2383:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":9886,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9877,"name":"ElementaryTypeName","src":"2399:6:30"}],"id":9878,"name":"VariableDeclaration","src":"2399:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":9886,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9879,"name":"ElementaryTypeName","src":"2415:7:30"}],"id":9880,"name":"VariableDeclaration","src":"2415:18:30"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":9886,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9881,"name":"ElementaryTypeName","src":"2435:4:30"}],"id":9882,"name":"VariableDeclaration","src":"2435:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":9886,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9883,"name":"ElementaryTypeName","src":"2451:4:30"}],"id":9884,"name":"VariableDeclaration","src":"2451:16:30"}],"id":9885,"name":"ParameterList","src":"2365:103:30"}],"id":9886,"name":"EventDefinition","src":"2349:120:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9892,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9887,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":9888,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9892,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9889,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":9890,"name":"VariableDeclaration","src":"2510:14:30"}],"id":9891,"name":"ParameterList","src":"2492:33:30"}],"id":9892,"name":"EventDefinition","src":"2474:52:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":9896,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9893,"name":"ElementaryTypeName","src":"2552:6:30"}],"id":9894,"name":"VariableDeclaration","src":"2552:16:30"}],"id":9895,"name":"ParameterList","src":"2551:18:30"}],"id":9896,"name":"EventDefinition","src":"2532:38:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":9900,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9897,"name":"ElementaryTypeName","src":"2597:6:30"}],"id":9898,"name":"VariableDeclaration","src":"2597:16:30"}],"id":9899,"name":"ParameterList","src":"2596:18:30"}],"id":9900,"name":"EventDefinition","src":"2575:40:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9901,"name":"ElementaryTypeName","src":"2647:7:30"}],"id":9902,"name":"VariableDeclaration","src":"2647:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":9906,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9903,"name":"ElementaryTypeName","src":"2663:6:30"}],"id":9904,"name":"VariableDeclaration","src":"2663:16:30"}],"id":9905,"name":"ParameterList","src":"2646:34:30"}],"id":9906,"name":"EventDefinition","src":"2620:61:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9912,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9907,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":9908,"name":"VariableDeclaration","src":"2715:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":9912,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9909,"name":"ElementaryTypeName","src":"2731:6:30"}],"id":9910,"name":"VariableDeclaration","src":"2731:16:30"}],"id":9911,"name":"ParameterList","src":"2714:34:30"}],"id":9912,"name":"EventDefinition","src":"2686:63:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":9920,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9913,"name":"ElementaryTypeName","src":"2769:7:30"}],"id":9914,"name":"VariableDeclaration","src":"2769:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":9920,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9915,"name":"ElementaryTypeName","src":"2782:7:30"}],"id":9916,"name":"VariableDeclaration","src":"2782:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":9920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9917,"name":"ElementaryTypeName","src":"2798:7:30"}],"id":9918,"name":"VariableDeclaration","src":"2798:15:30"}],"id":9919,"name":"ParameterList","src":"2768:46:30"}],"id":9920,"name":"EventDefinition","src":"2755:60:30"},{"attributes":{"constant":true,"name":"_APPROVE","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9921,"name":"ElementaryTypeName","src":"2924:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":9922,"name":"Literal","src":"2959:10:30"}],"id":9923,"name":"VariableDeclaration","src":"2924:45:30"},{"attributes":{"constant":true,"name":"_BURN","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9924,"name":"ElementaryTypeName","src":"3028:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":9925,"name":"Literal","src":"3060:10:30"}],"id":9926,"name":"VariableDeclaration","src":"3028:42:30"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9927,"name":"ElementaryTypeName","src":"3118:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":9928,"name":"Literal","src":"3154:10:30"}],"id":9929,"name":"VariableDeclaration","src":"3118:46:30"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9930,"name":"ElementaryTypeName","src":"3224:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":9931,"name":"Literal","src":"3265:10:30"}],"id":9932,"name":"VariableDeclaration","src":"3224:51:30"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":10734,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":9947,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9933,"name":"ElementaryTypeName","src":"3371:6:30"}],"id":9934,"name":"VariableDeclaration","src":"3371:13:30"},{"attributes":{"constant":false,"name":"magnitude","scope":9947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9935,"name":"ElementaryTypeName","src":"3410:7:30"}],"id":9936,"name":"VariableDeclaration","src":"3410:17:30"},{"attributes":{"constant":false,"name":"rate","scope":9947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9937,"name":"ElementaryTypeName","src":"3452:7:30"}],"id":9938,"name":"VariableDeclaration","src":"3452:12:30"},{"attributes":{"constant":false,"name":"available","scope":9947,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9939,"name":"ElementaryTypeName","src":"3504:4:30"}],"id":9940,"name":"VariableDeclaration","src":"3504:14:30"},{"attributes":{"constant":false,"name":"loadable","scope":9947,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9941,"name":"ElementaryTypeName","src":"3570:4:30"}],"id":9942,"name":"VariableDeclaration","src":"3570:13:30"},{"attributes":{"constant":false,"name":"redeemable","scope":9947,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9943,"name":"ElementaryTypeName","src":"3640:4:30"}],"id":9944,"name":"VariableDeclaration","src":"3640:15:30"},{"attributes":{"constant":false,"name":"lastUpdate","scope":9947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9945,"name":"ElementaryTypeName","src":"3724:7:30"}],"id":9946,"name":"VariableDeclaration","src":"3724:18:30"}],"id":9947,"name":"StructDefinition","src":"3348:433:30"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":10734,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":9948,"name":"ElementaryTypeName","src":"3795:7:30"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":9947,"type":"struct TokenWhitelist.Token"},"id":9949,"name":"UserDefinedTypeName","src":"3806:5:30"}],"id":9950,"name":"Mapping","src":"3787:25:30"}],"id":9951,"name":"VariableDeclaration","src":"3787:47:30"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":10734,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9952,"name":"ElementaryTypeName","src":"4004:6:30"},{"attributes":{"name":"bool","type":"bool"},"id":9953,"name":"ElementaryTypeName","src":"4014:4:30"}],"id":9954,"name":"Mapping","src":"3996:23:30"}],"id":9955,"name":"VariableDeclaration","src":"3996:50:30"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":10734,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9956,"name":"ElementaryTypeName","src":"4053:7:30"}],"id":9957,"name":"ArrayTypeName","src":"4053:9:30"}],"id":9958,"name":"VariableDeclaration","src":"4053:36:30"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":10734,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9959,"name":"ElementaryTypeName","src":"4182:7:30"}],"id":9960,"name":"VariableDeclaration","src":"4182:34:30"},{"attributes":{"constant":false,"name":"_stablecoin","scope":10734,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9961,"name":"ElementaryTypeName","src":"4266:7:30"}],"id":9962,"name":"VariableDeclaration","src":"4266:27:30"},{"attributes":{"constant":false,"name":"_oracleNode","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9963,"name":"ElementaryTypeName","src":"4372:7:30"}],"id":9964,"name":"VariableDeclaration","src":"4372:27:30"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":10014,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9965,"name":"ElementaryTypeName","src":"4770:7:30"}],"id":9966,"name":"VariableDeclaration","src":"4770:13:30"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":10014,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9967,"name":"ElementaryTypeName","src":"4785:7:30"}],"id":9968,"name":"VariableDeclaration","src":"4785:20:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":10014,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9969,"name":"ElementaryTypeName","src":"4807:7:30"}],"id":9970,"name":"VariableDeclaration","src":"4807:24:30"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":10014,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9971,"name":"ElementaryTypeName","src":"4833:7:30"}],"id":9972,"name":"VariableDeclaration","src":"4833:27:30"}],"id":9973,"name":"ParameterList","src":"4769:92:30"},{"attributes":{"parameters":[null]},"children":[],"id":9980,"name":"ParameterList","src":"4949:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":9974,"name":"Identifier","src":"4885:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"address","value":"_ens_"},"id":9975,"name":"Identifier","src":"4899:5:30"}],"id":9976,"name":"ModifierInvocation","src":"4885:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"type(contract Controllable)","value":"Controllable"},"id":9977,"name":"Identifier","src":"4914:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9970,"type":"bytes32","value":"_controllerNode_"},"id":9978,"name":"Identifier","src":"4927:16:30"}],"id":9979,"name":"ModifierInvocation","src":"4914:30:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"bytes32","value":"_oracleNode"},"id":9981,"name":"Identifier","src":"4959:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9968,"type":"bytes32","value":"_oracleNode_"},"id":9982,"name":"Identifier","src":"4973:12:30"}],"id":9983,"name":"Assignment","src":"4959:26:30"}],"id":9984,"name":"ExpressionStatement","src":"4959:26:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9962,"type":"address","value":"_stablecoin"},"id":9985,"name":"Identifier","src":"4995:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9972,"type":"address","value":"_stablecoinAddress_"},"id":9986,"name":"Identifier","src":"5009:19:30"}],"id":9987,"name":"Assignment","src":"4995:33:30"}],"id":9988,"name":"ExpressionStatement","src":"4995:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":9989,"name":"Identifier","src":"5083:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9923,"type":"bytes4","value":"_APPROVE"},"id":9990,"name":"Identifier","src":"5102:8:30"}],"id":9991,"name":"IndexAccess","src":"5083:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9992,"name":"Literal","src":"5114:4:30"}],"id":9993,"name":"Assignment","src":"5083:35:30"}],"id":9994,"name":"ExpressionStatement","src":"5083:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":9995,"name":"Identifier","src":"5128:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9926,"type":"bytes4","value":"_BURN"},"id":9996,"name":"Identifier","src":"5147:5:30"}],"id":9997,"name":"IndexAccess","src":"5128:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9998,"name":"Literal","src":"5156:4:30"}],"id":9999,"name":"Assignment","src":"5128:32:30"}],"id":10000,"name":"ExpressionStatement","src":"5128:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":10001,"name":"Identifier","src":"5170:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9929,"type":"bytes4","value":"_TRANSFER"},"id":10002,"name":"Identifier","src":"5189:9:30"}],"id":10003,"name":"IndexAccess","src":"5170:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":10004,"name":"Literal","src":"5202:4:30"}],"id":10005,"name":"Assignment","src":"5170:36:30"}],"id":10006,"name":"ExpressionStatement","src":"5170:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":10007,"name":"Identifier","src":"5216:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9932,"type":"bytes4","value":"_TRANSFER_FROM"},"id":10008,"name":"Identifier","src":"5235:14:30"}],"id":10009,"name":"IndexAccess","src":"5216:34:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":10010,"name":"Literal","src":"5253:4:30"}],"id":10011,"name":"Assignment","src":"5216:41:30"}],"id":10012,"name":"ExpressionStatement","src":"5216:41:30"}],"id":10013,"name":"Block","src":"4949:315:30"}],"id":10014,"name":"FunctionDefinition","src":"4758:506:30"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10015,"name":"ParameterList","src":"5296:2:30"},{"children":[{"attributes":{"assignments":[10017]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":10036,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10016,"name":"ElementaryTypeName","src":"5309:7:30"}],"id":10017,"name":"VariableDeclaration","src":"5309:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":10018,"name":"Identifier","src":"5333:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"bytes32","value":"_oracleNode"},"id":10019,"name":"Identifier","src":"5345:11:30"}],"id":10020,"name":"FunctionCall","src":"5333:24:30"}],"id":10021,"name":"VariableDeclarationStatement","src":"5309:48:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10022,"name":"Identifier","src":"5367:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7948,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":10023,"name":"Identifier","src":"5375:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10024,"name":"Identifier","src":"5384:3:30"}],"id":10025,"name":"MemberAccess","src":"5384:10:30"}],"id":10026,"name":"FunctionCall","src":"5375:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10027,"name":"Identifier","src":"5399:3:30"}],"id":10028,"name":"MemberAccess","src":"5399:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10017,"type":"address","value":"oracleAddress"},"id":10029,"name":"Identifier","src":"5413:13:30"}],"id":10030,"name":"BinaryOperation","src":"5399:27:30"}],"id":10031,"name":"BinaryOperation","src":"5375:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":10032,"name":"Literal","src":"5428:24:30"}],"id":10033,"name":"FunctionCall","src":"5367:86:30"}],"id":10034,"name":"ExpressionStatement","src":"5367:86:30"},{"id":10035,"name":"PlaceholderStatement","src":"5463:1:30"}],"id":10036,"name":"Block","src":"5299:172:30"}],"id":10037,"name":"ModifierDefinition","src":"5270:201:30"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10038,"name":"ElementaryTypeName","src":"6068:7:30"}],"id":10039,"name":"ArrayTypeName","src":"6068:9:30"}],"id":10040,"name":"VariableDeclaration","src":"6068:26:30"},{"attributes":{"constant":false,"name":"_symbols","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10041,"name":"ElementaryTypeName","src":"6104:7:30"}],"id":10042,"name":"ArrayTypeName","src":"6104:9:30"}],"id":10043,"name":"VariableDeclaration","src":"6104:27:30"},{"attributes":{"constant":false,"name":"_magnitude","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10044,"name":"ElementaryTypeName","src":"6141:7:30"}],"id":10045,"name":"ArrayTypeName","src":"6141:9:30"}],"id":10046,"name":"VariableDeclaration","src":"6141:29:30"},{"attributes":{"constant":false,"name":"_loadable","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10047,"name":"ElementaryTypeName","src":"6180:4:30"}],"id":10048,"name":"ArrayTypeName","src":"6180:6:30"}],"id":10049,"name":"VariableDeclaration","src":"6180:25:30"},{"attributes":{"constant":false,"name":"_redeemable","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10050,"name":"ElementaryTypeName","src":"6215:4:30"}],"id":10051,"name":"ArrayTypeName","src":"6215:6:30"}],"id":10052,"name":"VariableDeclaration","src":"6215:27:30"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":10181,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10053,"name":"ElementaryTypeName","src":"6252:7:30"}],"id":10054,"name":"VariableDeclaration","src":"6252:19:30"}],"id":10055,"name":"ParameterList","src":"6058:219:30"},{"attributes":{"parameters":[null]},"children":[],"id":10058,"name":"ParameterList","src":"6297:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10056,"name":"Identifier","src":"6287:9:30"}],"id":10057,"name":"ModifierInvocation","src":"6287:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10059,"name":"Identifier","src":"6368:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10060,"name":"Identifier","src":"6389:7:30"}],"id":10061,"name":"MemberAccess","src":"6389:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10043,"type":"bytes32[] calldata","value":"_symbols"},"id":10062,"name":"Identifier","src":"6407:8:30"}],"id":10063,"name":"MemberAccess","src":"6407:15:30"}],"id":10064,"name":"BinaryOperation","src":"6389:33:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10065,"name":"Identifier","src":"6442:7:30"}],"id":10066,"name":"MemberAccess","src":"6442:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10046,"type":"uint256[] calldata","value":"_magnitude"},"id":10067,"name":"Identifier","src":"6460:10:30"}],"id":10068,"name":"MemberAccess","src":"6460:17:30"}],"id":10069,"name":"BinaryOperation","src":"6442:35:30"}],"id":10070,"name":"BinaryOperation","src":"6389:88:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10071,"name":"Identifier","src":"6497:7:30"}],"id":10072,"name":"MemberAccess","src":"6497:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10049,"type":"bool[] calldata","value":"_loadable"},"id":10073,"name":"Identifier","src":"6515:9:30"}],"id":10074,"name":"MemberAccess","src":"6515:16:30"}],"id":10075,"name":"BinaryOperation","src":"6497:34:30"}],"id":10076,"name":"BinaryOperation","src":"6389:142:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10077,"name":"Identifier","src":"6551:7:30"}],"id":10078,"name":"MemberAccess","src":"6551:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10049,"type":"bool[] calldata","value":"_loadable"},"id":10079,"name":"Identifier","src":"6569:9:30"}],"id":10080,"name":"MemberAccess","src":"6569:16:30"}],"id":10081,"name":"BinaryOperation","src":"6551:34:30"}],"id":10082,"name":"BinaryOperation","src":"6389:196:30"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":10083,"name":"Literal","src":"6599:32:30"}],"id":10084,"name":"FunctionCall","src":"6368:273:30"}],"id":10085,"name":"ExpressionStatement","src":"6368:273:30"},{"children":[{"attributes":{"assignments":[10087]},"children":[{"attributes":{"constant":false,"name":"i","scope":10179,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10086,"name":"ElementaryTypeName","src":"6715:7:30"}],"id":10087,"name":"VariableDeclaration","src":"6715:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10088,"name":"Literal","src":"6727:1:30"}],"id":10089,"name":"VariableDeclarationStatement","src":"6715:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10090,"name":"Identifier","src":"6730:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10091,"name":"Identifier","src":"6734:7:30"}],"id":10092,"name":"MemberAccess","src":"6734:14:30"}],"id":10093,"name":"BinaryOperation","src":"6730:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10094,"name":"Identifier","src":"6750:1:30"}],"id":10095,"name":"UnaryOperation","src":"6750:3:30"}],"id":10096,"name":"ExpressionStatement","src":"6750:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10097,"name":"Identifier","src":"6832:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10098,"name":"Identifier","src":"6841:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10099,"name":"Identifier","src":"6855:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10100,"name":"Identifier","src":"6863:1:30"}],"id":10101,"name":"IndexAccess","src":"6855:10:30"}],"id":10102,"name":"IndexAccess","src":"6841:25:30"}],"id":10103,"name":"MemberAccess","src":"6841:35:30"}],"id":10104,"name":"UnaryOperation","src":"6840:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":10105,"name":"Literal","src":"6878:25:30"}],"id":10106,"name":"FunctionCall","src":"6832:72:30"}],"id":10107,"name":"ExpressionStatement","src":"6832:72:30"},{"attributes":{"assignments":[10109]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":10178,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":10108,"name":"ElementaryTypeName","src":"6964:6:30"}],"id":10109,"name":"VariableDeclaration","src":"6964:20:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":12660,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10043,"type":"bytes32[] calldata","value":"_symbols"},"id":10110,"name":"Identifier","src":"6987:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10111,"name":"Identifier","src":"6996:1:30"}],"id":10112,"name":"IndexAccess","src":"6987:11:30"}],"id":10113,"name":"MemberAccess","src":"6987:22:30"}],"id":10114,"name":"FunctionCall","src":"6987:24:30"}],"id":10115,"name":"MemberAccess","src":"6987:33:30"}],"id":10116,"name":"FunctionCall","src":"6987:35:30"}],"id":10117,"name":"VariableDeclarationStatement","src":"6964:58:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10118,"name":"Identifier","src":"7084:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10119,"name":"Identifier","src":"7098:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10120,"name":"Identifier","src":"7106:1:30"}],"id":10121,"name":"IndexAccess","src":"7098:10:30"}],"id":10122,"name":"IndexAccess","src":"7084:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9947,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":10123,"name":"Identifier","src":"7112:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"string memory","value":"symbol"},"id":10124,"name":"Identifier","src":"7144:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10046,"type":"uint256[] calldata","value":"_magnitude"},"id":10125,"name":"Identifier","src":"7179:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10126,"name":"Identifier","src":"7190:1:30"}],"id":10127,"name":"IndexAccess","src":"7179:13:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10128,"name":"Literal","src":"7216:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":10129,"name":"Literal","src":"7246:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10049,"type":"bool[] calldata","value":"_loadable"},"id":10130,"name":"Identifier","src":"7278:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10131,"name":"Identifier","src":"7288:1:30"}],"id":10132,"name":"IndexAccess","src":"7278:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10052,"type":"bool[] calldata","value":"_redeemable"},"id":10133,"name":"Identifier","src":"7320:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10134,"name":"Identifier","src":"7332:1:30"}],"id":10135,"name":"IndexAccess","src":"7320:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10054,"type":"uint256","value":"_lastUpdate"},"id":10136,"name":"Identifier","src":"7364:11:30"}],"id":10137,"name":"FunctionCall","src":"7112:278:30"}],"id":10138,"name":"Assignment","src":"7084:306:30"}],"id":10139,"name":"ExpressionStatement","src":"7084:306:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10140,"name":"Identifier","src":"7462:18:30"}],"id":10142,"name":"MemberAccess","src":"7462:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10143,"name":"Identifier","src":"7486:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10144,"name":"Identifier","src":"7494:1:30"}],"id":10145,"name":"IndexAccess","src":"7486:10:30"}],"id":10146,"name":"FunctionCall","src":"7462:35:30"}],"id":10147,"name":"ExpressionStatement","src":"7462:35:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10052,"type":"bool[] calldata","value":"_redeemable"},"id":10148,"name":"Identifier","src":"7587:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10149,"name":"Identifier","src":"7599:1:30"}],"id":10150,"name":"IndexAccess","src":"7587:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10151,"name":"Identifier","src":"7621:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10152,"name":"Identifier","src":"7642:18:30"}],"id":10153,"name":"MemberAccess","src":"7642:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10154,"name":"Literal","src":"7665:1:30"}],"id":10155,"name":"FunctionCall","src":"7642:25:30"}],"id":10156,"name":"Assignment","src":"7621:46:30"}],"id":10157,"name":"ExpressionStatement","src":"7621:46:30"}],"id":10158,"name":"Block","src":"7603:79:30"}],"id":10159,"name":"IfStatement","src":"7583:99:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":9886,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":10160,"name":"Identifier","src":"7742:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10161,"name":"Identifier","src":"7753:3:30"}],"id":10162,"name":"MemberAccess","src":"7753:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10163,"name":"Identifier","src":"7765:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10164,"name":"Identifier","src":"7773:1:30"}],"id":10165,"name":"IndexAccess","src":"7765:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"string memory","value":"symbol"},"id":10166,"name":"Identifier","src":"7777:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10046,"type":"uint256[] calldata","value":"_magnitude"},"id":10167,"name":"Identifier","src":"7785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10168,"name":"Identifier","src":"7796:1:30"}],"id":10169,"name":"IndexAccess","src":"7785:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10049,"type":"bool[] calldata","value":"_loadable"},"id":10170,"name":"Identifier","src":"7800:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10171,"name":"Identifier","src":"7810:1:30"}],"id":10172,"name":"IndexAccess","src":"7800:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10052,"type":"bool[] calldata","value":"_redeemable"},"id":10173,"name":"Identifier","src":"7814:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10174,"name":"Identifier","src":"7826:1:30"}],"id":10175,"name":"IndexAccess","src":"7814:14:30"}],"id":10176,"name":"FunctionCall","src":"7742:87:30"}],"id":10177,"name":"EmitStatement","src":"7737:92:30"}],"id":10178,"name":"Block","src":"6755:1085:30"}],"id":10179,"name":"ForStatement","src":"6710:1130:30"}],"id":10180,"name":"Block","src":"6297:1549:30"}],"id":10181,"name":"FunctionDefinition","src":"6040:1806:30"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":10282,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10182,"name":"ElementaryTypeName","src":"7995:7:30"}],"id":10183,"name":"ArrayTypeName","src":"7995:9:30"}],"id":10184,"name":"VariableDeclaration","src":"7995:26:30"}],"id":10185,"name":"ParameterList","src":"7994:28:30"},{"attributes":{"parameters":[null]},"children":[],"id":10188,"name":"ParameterList","src":"8042:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10186,"name":"Identifier","src":"8032:9:30"}],"id":10187,"name":"ModifierInvocation","src":"8032:9:30"},{"children":[{"children":[{"attributes":{"assignments":[10190]},"children":[{"attributes":{"constant":false,"name":"i","scope":10280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10189,"name":"ElementaryTypeName","src":"8160:7:30"}],"id":10190,"name":"VariableDeclaration","src":"8160:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10191,"name":"Literal","src":"8172:1:30"}],"id":10192,"name":"VariableDeclarationStatement","src":"8160:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10190,"type":"uint256","value":"i"},"id":10193,"name":"Identifier","src":"8175:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10184,"type":"address[] calldata","value":"_tokens"},"id":10194,"name":"Identifier","src":"8179:7:30"}],"id":10195,"name":"MemberAccess","src":"8179:14:30"}],"id":10196,"name":"BinaryOperation","src":"8175:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10190,"type":"uint256","value":"i"},"id":10197,"name":"Identifier","src":"8195:1:30"}],"id":10198,"name":"UnaryOperation","src":"8195:3:30"}],"id":10199,"name":"ExpressionStatement","src":"8195:3:30"},{"children":[{"attributes":{"assignments":[10201]},"children":[{"attributes":{"constant":false,"name":"token","scope":10279,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10200,"name":"ElementaryTypeName","src":"8254:7:30"}],"id":10201,"name":"VariableDeclaration","src":"8254:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10184,"type":"address[] calldata","value":"_tokens"},"id":10202,"name":"Identifier","src":"8270:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10190,"type":"uint256","value":"i"},"id":10203,"name":"Identifier","src":"8278:1:30"}],"id":10204,"name":"IndexAccess","src":"8270:10:30"}],"id":10205,"name":"VariableDeclarationStatement","src":"8254:26:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10206,"name":"Identifier","src":"8363:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10207,"name":"Identifier","src":"8371:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10208,"name":"Identifier","src":"8385:5:30"}],"id":10209,"name":"IndexAccess","src":"8371:20:30"}],"id":10210,"name":"MemberAccess","src":"8371:30:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":10211,"name":"Literal","src":"8403:24:30"}],"id":10212,"name":"FunctionCall","src":"8363:65:30"}],"id":10213,"name":"ExpressionStatement","src":"8363:65:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10214,"name":"Identifier","src":"8518:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10215,"name":"Identifier","src":"8532:5:30"}],"id":10216,"name":"IndexAccess","src":"8518:20:30"}],"id":10217,"name":"MemberAccess","src":"8518:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10218,"name":"Identifier","src":"8569:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1169,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10219,"name":"Identifier","src":"8590:18:30"}],"id":10220,"name":"MemberAccess","src":"8590:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10221,"name":"Literal","src":"8613:1:30"}],"id":10222,"name":"FunctionCall","src":"8590:25:30"}],"id":10223,"name":"Assignment","src":"8569:46:30"}],"id":10224,"name":"ExpressionStatement","src":"8569:46:30"}],"id":10225,"name":"Block","src":"8551:79:30"}],"id":10226,"name":"IfStatement","src":"8514:116:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10227,"name":"Identifier","src":"8690:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10228,"name":"Identifier","src":"8704:5:30"}],"id":10229,"name":"IndexAccess","src":"8690:20:30"}],"id":10230,"name":"UnaryOperation","src":"8683:27:30"}],"id":10231,"name":"ExpressionStatement","src":"8683:27:30"},{"children":[{"attributes":{"assignments":[10233]},"children":[{"attributes":{"constant":false,"name":"j","scope":10267,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10232,"name":"ElementaryTypeName","src":"8792:7:30"}],"id":10233,"name":"VariableDeclaration","src":"8792:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10234,"name":"Literal","src":"8804:1:30"}],"id":10235,"name":"VariableDeclarationStatement","src":"8792:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10233,"type":"uint256","value":"j"},"id":10236,"name":"Identifier","src":"8807:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1169,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10237,"name":"Identifier","src":"8811:18:30"}],"id":10238,"name":"MemberAccess","src":"8811:25:30"}],"id":10239,"name":"MemberAccess","src":"8811:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10240,"name":"Literal","src":"8841:1:30"}],"id":10241,"name":"FunctionCall","src":"8811:32:30"}],"id":10242,"name":"BinaryOperation","src":"8807:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10233,"type":"uint256","value":"j"},"id":10243,"name":"Identifier","src":"8845:1:30"}],"id":10244,"name":"UnaryOperation","src":"8845:3:30"}],"id":10245,"name":"ExpressionStatement","src":"8845:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10246,"name":"Identifier","src":"8872:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10233,"type":"uint256","value":"j"},"id":10247,"name":"Identifier","src":"8891:1:30"}],"id":10248,"name":"IndexAccess","src":"8872:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10249,"name":"Identifier","src":"8897:5:30"}],"id":10250,"name":"BinaryOperation","src":"8872:30:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10251,"name":"Identifier","src":"8926:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10233,"type":"uint256","value":"j"},"id":10252,"name":"Identifier","src":"8945:1:30"}],"id":10253,"name":"IndexAccess","src":"8926:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10254,"name":"Identifier","src":"8950:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1169,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10255,"name":"Identifier","src":"8969:18:30"}],"id":10256,"name":"MemberAccess","src":"8969:25:30"}],"id":10257,"name":"MemberAccess","src":"8969:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10258,"name":"Literal","src":"8999:1:30"}],"id":10259,"name":"FunctionCall","src":"8969:32:30"}],"id":10260,"name":"IndexAccess","src":"8950:52:30"}],"id":10261,"name":"Assignment","src":"8926:76:30"}],"id":10262,"name":"ExpressionStatement","src":"8926:76:30"},{"id":10263,"name":"Break","src":"9024:5:30"}],"id":10264,"name":"Block","src":"8904:144:30"}],"id":10265,"name":"IfStatement","src":"8868:180:30"}],"id":10266,"name":"Block","src":"8850:212:30"}],"id":10267,"name":"ForStatement","src":"8787:275:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10268,"name":"Identifier","src":"9075:18:30"}],"id":10270,"name":"MemberAccess","src":"9075:25:30"}],"id":10271,"name":"UnaryOperation","src":"9075:27:30"}],"id":10272,"name":"ExpressionStatement","src":"9075:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"function (address,address)","value":"RemovedToken"},"id":10273,"name":"Identifier","src":"9162:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10274,"name":"Identifier","src":"9175:3:30"}],"id":10275,"name":"MemberAccess","src":"9175:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10276,"name":"Identifier","src":"9187:5:30"}],"id":10277,"name":"FunctionCall","src":"9162:31:30"}],"id":10278,"name":"EmitStatement","src":"9157:36:30"}],"id":10279,"name":"Block","src":"8200:1004:30"}],"id":10280,"name":"ForStatement","src":"8155:1049:30"}],"id":10281,"name":"Block","src":"8042:1168:30"}],"id":10282,"name":"FunctionDefinition","src":"7973:1237:30"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10395,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10283,"name":"ElementaryTypeName","src":"9404:7:30"}],"id":10284,"name":"VariableDeclaration","src":"9404:14:30"},{"attributes":{"constant":false,"name":"_data","scope":10395,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10285,"name":"ElementaryTypeName","src":"9420:5:30"}],"id":10286,"name":"VariableDeclaration","src":"9420:20:30"}],"id":10287,"name":"ParameterList","src":"9403:38:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10395,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10288,"name":"ElementaryTypeName","src":"9465:7:30"}],"id":10289,"name":"VariableDeclaration","src":"9465:7:30"},{"attributes":{"constant":false,"name":"","scope":10395,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10290,"name":"ElementaryTypeName","src":"9474:7:30"}],"id":10291,"name":"VariableDeclaration","src":"9474:7:30"}],"id":10292,"name":"ParameterList","src":"9464:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10293,"name":"Identifier","src":"9669:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10294,"name":"Identifier","src":"9677:5:30"}],"id":10295,"name":"MemberAccess","src":"9677:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10296,"name":"Literal","src":"9693:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10297,"name":"Literal","src":"9697:2:30"}],"id":10298,"name":"BinaryOperation","src":"9693:6:30"}],"id":10299,"name":"BinaryOperation","src":"9677:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":10300,"name":"Literal","src":"9701:34:30"}],"id":10301,"name":"FunctionCall","src":"9669:67:30"}],"id":10302,"name":"ExpressionStatement","src":"9669:67:30"},{"attributes":{"assignments":[10304]},"children":[{"attributes":{"constant":false,"name":"signature","scope":10394,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":10303,"name":"ElementaryTypeName","src":"9782:6:30"}],"id":10304,"name":"VariableDeclaration","src":"9782:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":14232,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10305,"name":"Identifier","src":"9801:5:30"}],"id":10306,"name":"MemberAccess","src":"9801:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10307,"name":"Literal","src":"9822:1:30"}],"id":10308,"name":"FunctionCall","src":"9801:23:30"}],"id":10309,"name":"VariableDeclarationStatement","src":"9782:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10310,"name":"Identifier","src":"9877:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":10696,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":10311,"name":"Identifier","src":"9885:22:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10284,"type":"address","value":"_token"},"id":10312,"name":"Identifier","src":"9908:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10304,"type":"bytes4","value":"signature"},"id":10313,"name":"Identifier","src":"9916:9:30"}],"id":10314,"name":"FunctionCall","src":"9885:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":10315,"name":"Literal","src":"9928:20:30"}],"id":10316,"name":"FunctionCall","src":"9877:72:30"}],"id":10317,"name":"ExpressionStatement","src":"9877:72:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10304,"type":"bytes4","value":"signature"},"id":10318,"name":"Identifier","src":"10048:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9926,"type":"bytes4","value":"_BURN"},"id":10319,"name":"Identifier","src":"10061:5:30"}],"id":10320,"name":"BinaryOperation","src":"10048:18:30"},{"children":[{"attributes":{"functionReturnParameters":10292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10284,"type":"address","value":"_token"},"id":10321,"name":"Identifier","src":"10133:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":14266,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10322,"name":"Identifier","src":"10141:5:30"}],"id":10323,"name":"MemberAccess","src":"10141:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10324,"name":"Literal","src":"10163:1:30"}],"id":10325,"name":"FunctionCall","src":"10141:24:30"}],"id":10326,"name":"TupleExpression","src":"10132:34:30"}],"id":10327,"name":"Return","src":"10125:41:30"}],"id":10328,"name":"Block","src":"10068:109:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10304,"type":"bytes4","value":"signature"},"id":10329,"name":"Identifier","src":"10187:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9932,"type":"bytes4","value":"_TRANSFER_FROM"},"id":10330,"name":"Identifier","src":"10200:14:30"}],"id":10331,"name":"BinaryOperation","src":"10187:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10332,"name":"Identifier","src":"10301:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10333,"name":"Identifier","src":"10309:5:30"}],"id":10334,"name":"MemberAccess","src":"10309:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10335,"name":"Literal","src":"10325:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10336,"name":"Literal","src":"10329:2:30"}],"id":10337,"name":"BinaryOperation","src":"10325:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10338,"name":"Literal","src":"10334:2:30"}],"id":10339,"name":"BinaryOperation","src":"10325:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10340,"name":"Literal","src":"10339:2:30"}],"id":10341,"name":"BinaryOperation","src":"10325:16:30"}],"id":10342,"name":"BinaryOperation","src":"10309:32:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":10343,"name":"Literal","src":"10343:34:30"}],"id":10344,"name":"FunctionCall","src":"10301:77:30"}],"id":10345,"name":"ExpressionStatement","src":"10301:77:30"},{"attributes":{"functionReturnParameters":10292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":14198,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10346,"name":"Identifier","src":"10400:5:30"}],"id":10347,"name":"MemberAccess","src":"10400:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10348,"name":"Literal","src":"10422:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10349,"name":"Literal","src":"10426:2:30"}],"id":10350,"name":"BinaryOperation","src":"10422:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":10351,"name":"Literal","src":"10431:2:30"}],"id":10352,"name":"BinaryOperation","src":"10422:11:30"}],"id":10353,"name":"FunctionCall","src":"10400:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":14266,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10354,"name":"Identifier","src":"10436:5:30"}],"id":10355,"name":"MemberAccess","src":"10436:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10356,"name":"Literal","src":"10458:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10357,"name":"Literal","src":"10462:2:30"}],"id":10358,"name":"BinaryOperation","src":"10458:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10359,"name":"Literal","src":"10467:2:30"}],"id":10360,"name":"BinaryOperation","src":"10458:11:30"}],"id":10361,"name":"FunctionCall","src":"10436:34:30"}],"id":10362,"name":"TupleExpression","src":"10399:72:30"}],"id":10363,"name":"Return","src":"10392:79:30"}],"id":10364,"name":"Block","src":"10216:266:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10365,"name":"Identifier","src":"10590:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10366,"name":"Identifier","src":"10598:5:30"}],"id":10367,"name":"MemberAccess","src":"10598:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10368,"name":"Literal","src":"10614:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10369,"name":"Literal","src":"10618:2:30"}],"id":10370,"name":"BinaryOperation","src":"10614:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10371,"name":"Literal","src":"10623:2:30"}],"id":10372,"name":"BinaryOperation","src":"10614:11:30"}],"id":10373,"name":"BinaryOperation","src":"10598:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":10374,"name":"Literal","src":"10627:39:30"}],"id":10375,"name":"FunctionCall","src":"10590:77:30"}],"id":10376,"name":"ExpressionStatement","src":"10590:77:30"},{"attributes":{"functionReturnParameters":10292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":14198,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10377,"name":"Identifier","src":"10689:5:30"}],"id":10378,"name":"MemberAccess","src":"10689:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10379,"name":"Literal","src":"10711:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":10380,"name":"Literal","src":"10715:2:30"}],"id":10381,"name":"BinaryOperation","src":"10711:6:30"}],"id":10382,"name":"FunctionCall","src":"10689:29:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":14266,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10383,"name":"Identifier","src":"10720:5:30"}],"id":10384,"name":"MemberAccess","src":"10720:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10385,"name":"Literal","src":"10742:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10386,"name":"Literal","src":"10746:2:30"}],"id":10387,"name":"BinaryOperation","src":"10742:6:30"}],"id":10388,"name":"FunctionCall","src":"10720:29:30"}],"id":10389,"name":"TupleExpression","src":"10688:62:30"}],"id":10390,"name":"Return","src":"10681:69:30"}],"id":10391,"name":"Block","src":"10488:273:30"}],"id":10392,"name":"IfStatement","src":"10183:578:30"}],"id":10393,"name":"IfStatement","src":"10044:717:30"}],"id":10394,"name":"Block","src":"9483:1284:30"}],"id":10395,"name":"FunctionDefinition","src":"9368:1399:30"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10427,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10396,"name":"ElementaryTypeName","src":"10866:7:30"}],"id":10397,"name":"VariableDeclaration","src":"10866:14:30"},{"attributes":{"constant":false,"name":"_loadable","scope":10427,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10398,"name":"ElementaryTypeName","src":"10882:4:30"}],"id":10399,"name":"VariableDeclaration","src":"10882:14:30"}],"id":10400,"name":"ParameterList","src":"10865:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":10403,"name":"ParameterList","src":"10917:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10401,"name":"Identifier","src":"10907:9:30"}],"id":10402,"name":"ModifierInvocation","src":"10907:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10404,"name":"Identifier","src":"10969:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10405,"name":"Identifier","src":"10977:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10397,"type":"address","value":"_token"},"id":10406,"name":"Identifier","src":"10991:6:30"}],"id":10407,"name":"IndexAccess","src":"10977:21:30"}],"id":10408,"name":"MemberAccess","src":"10977:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":10409,"name":"Literal","src":"11010:24:30"}],"id":10410,"name":"FunctionCall","src":"10969:66:30"}],"id":10411,"name":"ExpressionStatement","src":"10969:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":9942,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10412,"name":"Identifier","src":"11108:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10397,"type":"address","value":"_token"},"id":10413,"name":"Identifier","src":"11122:6:30"}],"id":10414,"name":"IndexAccess","src":"11108:21:30"}],"id":10415,"name":"MemberAccess","src":"11108:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10399,"type":"bool","value":"_loadable"},"id":10416,"name":"Identifier","src":"11141:9:30"}],"id":10417,"name":"Assignment","src":"11108:42:30"}],"id":10418,"name":"ExpressionStatement","src":"11108:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":10419,"name":"Identifier","src":"11166:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10420,"name":"Identifier","src":"11187:3:30"}],"id":10421,"name":"MemberAccess","src":"11187:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10397,"type":"address","value":"_token"},"id":10422,"name":"Identifier","src":"11199:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10399,"type":"bool","value":"_loadable"},"id":10423,"name":"Identifier","src":"11207:9:30"}],"id":10424,"name":"FunctionCall","src":"11166:51:30"}],"id":10425,"name":"EmitStatement","src":"11161:56:30"}],"id":10426,"name":"Block","src":"10917:307:30"}],"id":10427,"name":"FunctionDefinition","src":"10840:384:30"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10459,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10428,"name":"ElementaryTypeName","src":"11327:7:30"}],"id":10429,"name":"VariableDeclaration","src":"11327:14:30"},{"attributes":{"constant":false,"name":"_redeemable","scope":10459,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10430,"name":"ElementaryTypeName","src":"11343:4:30"}],"id":10431,"name":"VariableDeclaration","src":"11343:16:30"}],"id":10432,"name":"ParameterList","src":"11326:34:30"},{"attributes":{"parameters":[null]},"children":[],"id":10435,"name":"ParameterList","src":"11380:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10433,"name":"Identifier","src":"11370:9:30"}],"id":10434,"name":"ModifierInvocation","src":"11370:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10436,"name":"Identifier","src":"11432:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10437,"name":"Identifier","src":"11440:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10429,"type":"address","value":"_token"},"id":10438,"name":"Identifier","src":"11454:6:30"}],"id":10439,"name":"IndexAccess","src":"11440:21:30"}],"id":10440,"name":"MemberAccess","src":"11440:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":10441,"name":"Literal","src":"11473:24:30"}],"id":10442,"name":"FunctionCall","src":"11432:66:30"}],"id":10443,"name":"ExpressionStatement","src":"11432:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10444,"name":"Identifier","src":"11573:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10429,"type":"address","value":"_token"},"id":10445,"name":"Identifier","src":"11587:6:30"}],"id":10446,"name":"IndexAccess","src":"11573:21:30"}],"id":10447,"name":"MemberAccess","src":"11573:32:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10431,"type":"bool","value":"_redeemable"},"id":10448,"name":"Identifier","src":"11608:11:30"}],"id":10449,"name":"Assignment","src":"11573:46:30"}],"id":10450,"name":"ExpressionStatement","src":"11573:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":9872,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":10451,"name":"Identifier","src":"11635:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10452,"name":"Identifier","src":"11658:3:30"}],"id":10453,"name":"MemberAccess","src":"11658:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10429,"type":"address","value":"_token"},"id":10454,"name":"Identifier","src":"11670:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10431,"type":"bool","value":"_redeemable"},"id":10455,"name":"Identifier","src":"11678:11:30"}],"id":10456,"name":"FunctionCall","src":"11635:55:30"}],"id":10457,"name":"EmitStatement","src":"11630:60:30"}],"id":10458,"name":"Block","src":"11380:317:30"}],"id":10459,"name":"FunctionDefinition","src":"11299:398:30"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10500,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10460,"name":"ElementaryTypeName","src":"11999:7:30"}],"id":10461,"name":"VariableDeclaration","src":"11999:14:30"},{"attributes":{"constant":false,"name":"_rate","scope":10500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10462,"name":"ElementaryTypeName","src":"12015:7:30"}],"id":10463,"name":"VariableDeclaration","src":"12015:13:30"},{"attributes":{"constant":false,"name":"_updateDate","scope":10500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10464,"name":"ElementaryTypeName","src":"12030:7:30"}],"id":10465,"name":"VariableDeclaration","src":"12030:19:30"}],"id":10466,"name":"ParameterList","src":"11998:52:30"},{"attributes":{"parameters":[null]},"children":[],"id":10469,"name":"ParameterList","src":"12078:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10037,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":10467,"name":"Identifier","src":"12060:17:30"}],"id":10468,"name":"ModifierInvocation","src":"12060:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10470,"name":"Identifier","src":"12130:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10471,"name":"Identifier","src":"12138:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10461,"type":"address","value":"_token"},"id":10472,"name":"Identifier","src":"12152:6:30"}],"id":10473,"name":"IndexAccess","src":"12138:21:30"}],"id":10474,"name":"MemberAccess","src":"12138:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":10475,"name":"Literal","src":"12171:24:30"}],"id":10476,"name":"FunctionCall","src":"12130:66:30"}],"id":10477,"name":"ExpressionStatement","src":"12130:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":9938,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10478,"name":"Identifier","src":"12242:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10461,"type":"address","value":"_token"},"id":10479,"name":"Identifier","src":"12256:6:30"}],"id":10480,"name":"IndexAccess","src":"12242:21:30"}],"id":10481,"name":"MemberAccess","src":"12242:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10463,"type":"uint256","value":"_rate"},"id":10482,"name":"Identifier","src":"12271:5:30"}],"id":10483,"name":"Assignment","src":"12242:34:30"}],"id":10484,"name":"ExpressionStatement","src":"12242:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":9946,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10485,"name":"Identifier","src":"12339:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10461,"type":"address","value":"_token"},"id":10486,"name":"Identifier","src":"12353:6:30"}],"id":10487,"name":"IndexAccess","src":"12339:21:30"}],"id":10488,"name":"MemberAccess","src":"12339:32:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10465,"type":"uint256","value":"_updateDate"},"id":10489,"name":"Identifier","src":"12374:11:30"}],"id":10490,"name":"Assignment","src":"12339:46:30"}],"id":10491,"name":"ExpressionStatement","src":"12339:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9856,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":10492,"name":"Identifier","src":"12439:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10493,"name":"Identifier","src":"12456:3:30"}],"id":10494,"name":"MemberAccess","src":"12456:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10461,"type":"address","value":"_token"},"id":10495,"name":"Identifier","src":"12468:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10463,"type":"uint256","value":"_rate"},"id":10496,"name":"Identifier","src":"12476:5:30"}],"id":10497,"name":"FunctionCall","src":"12439:43:30"}],"id":10498,"name":"EmitStatement","src":"12434:48:30"}],"id":10499,"name":"Block","src":"12078:411:30"}],"id":10500,"name":"FunctionDefinition","src":"11974:515:30"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":10524,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":10501,"name":"ElementaryTypeName","src":"12593:15:30"}],"id":10502,"name":"VariableDeclaration","src":"12593:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":10524,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10503,"name":"ElementaryTypeName","src":"12614:7:30"}],"id":10504,"name":"VariableDeclaration","src":"12614:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":10524,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10505,"name":"ElementaryTypeName","src":"12630:7:30"}],"id":10506,"name":"VariableDeclaration","src":"12630:15:30"}],"id":10507,"name":"ParameterList","src":"12592:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":10510,"name":"ParameterList","src":"12666:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10508,"name":"Identifier","src":"12656:9:30"}],"id":10509,"name":"ModifierInvocation","src":"12656:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8980,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":10511,"name":"Identifier","src":"12676:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10502,"type":"address payable","value":"_to"},"id":10512,"name":"Identifier","src":"12690:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10504,"type":"address","value":"_asset"},"id":10513,"name":"Identifier","src":"12695:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10506,"type":"uint256","value":"_amount"},"id":10514,"name":"Identifier","src":"12703:7:30"}],"id":10515,"name":"FunctionCall","src":"12676:35:30"}],"id":10516,"name":"ExpressionStatement","src":"12676:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9920,"type":"function (address,address,uint256)","value":"Claimed"},"id":10517,"name":"Identifier","src":"12726:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10502,"type":"address payable","value":"_to"},"id":10518,"name":"Identifier","src":"12734:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10504,"type":"address","value":"_asset"},"id":10519,"name":"Identifier","src":"12739:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10506,"type":"uint256","value":"_amount"},"id":10520,"name":"Identifier","src":"12747:7:30"}],"id":10521,"name":"FunctionCall","src":"12726:29:30"}],"id":10522,"name":"EmitStatement","src":"12721:34:30"}],"id":10523,"name":"Block","src":"12666:96:30"}],"id":10524,"name":"FunctionDefinition","src":"12578:184:30"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":10566,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10525,"name":"ElementaryTypeName","src":"13336:7:30"}],"id":10526,"name":"VariableDeclaration","src":"13336:10:30"}],"id":10527,"name":"ParameterList","src":"13335:12:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":10528,"name":"ElementaryTypeName","src":"13371:6:30"}],"id":10529,"name":"VariableDeclaration","src":"13371:13:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10530,"name":"ElementaryTypeName","src":"13386:7:30"}],"id":10531,"name":"VariableDeclaration","src":"13386:7:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10532,"name":"ElementaryTypeName","src":"13395:7:30"}],"id":10533,"name":"VariableDeclaration","src":"13395:7:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10534,"name":"ElementaryTypeName","src":"13404:4:30"}],"id":10535,"name":"VariableDeclaration","src":"13404:4:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10536,"name":"ElementaryTypeName","src":"13410:4:30"}],"id":10537,"name":"VariableDeclaration","src":"13410:4:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10538,"name":"ElementaryTypeName","src":"13416:4:30"}],"id":10539,"name":"VariableDeclaration","src":"13416:4:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10540,"name":"ElementaryTypeName","src":"13422:7:30"}],"id":10541,"name":"VariableDeclaration","src":"13422:7:30"}],"id":10542,"name":"ParameterList","src":"13370:60:30"},{"children":[{"attributes":{"assignments":[10544]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":10565,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":9947,"type":"struct TokenWhitelist.Token"},"id":10543,"name":"UserDefinedTypeName","src":"13441:5:30"}],"id":10544,"name":"VariableDeclaration","src":"13441:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10545,"name":"Identifier","src":"13467:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10526,"type":"address","value":"_a"},"id":10546,"name":"Identifier","src":"13481:2:30"}],"id":10547,"name":"IndexAccess","src":"13467:17:30"}],"id":10548,"name":"VariableDeclarationStatement","src":"13441:43:30"},{"attributes":{"functionReturnParameters":10542},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":9934,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10549,"name":"Identifier","src":"13502:9:30"}],"id":10550,"name":"MemberAccess","src":"13502:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":9936,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10551,"name":"Identifier","src":"13520:9:30"}],"id":10552,"name":"MemberAccess","src":"13520:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":9938,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10553,"name":"Identifier","src":"13541:9:30"}],"id":10554,"name":"MemberAccess","src":"13541:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10555,"name":"Identifier","src":"13557:9:30"}],"id":10556,"name":"MemberAccess","src":"13557:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":9942,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10557,"name":"Identifier","src":"13578:9:30"}],"id":10558,"name":"MemberAccess","src":"13578:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10559,"name":"Identifier","src":"13598:9:30"}],"id":10560,"name":"MemberAccess","src":"13598:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":9946,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10561,"name":"Identifier","src":"13620:9:30"}],"id":10562,"name":"MemberAccess","src":"13620:20:30"}],"id":10563,"name":"TupleExpression","src":"13501:140:30"}],"id":10564,"name":"Return","src":"13494:147:30"}],"id":10565,"name":"Block","src":"13431:217:30"}],"id":10566,"name":"FunctionDefinition","src":"13314:334:30"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10567,"name":"ParameterList","src":"14176:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":10568,"name":"ElementaryTypeName","src":"14202:6:30"}],"id":10569,"name":"VariableDeclaration","src":"14202:13:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10570,"name":"ElementaryTypeName","src":"14217:7:30"}],"id":10571,"name":"VariableDeclaration","src":"14217:7:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10572,"name":"ElementaryTypeName","src":"14226:7:30"}],"id":10573,"name":"VariableDeclaration","src":"14226:7:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10574,"name":"ElementaryTypeName","src":"14235:4:30"}],"id":10575,"name":"VariableDeclaration","src":"14235:4:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10576,"name":"ElementaryTypeName","src":"14241:4:30"}],"id":10577,"name":"VariableDeclaration","src":"14241:4:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10578,"name":"ElementaryTypeName","src":"14247:4:30"}],"id":10579,"name":"VariableDeclaration","src":"14247:4:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10580,"name":"ElementaryTypeName","src":"14253:7:30"}],"id":10581,"name":"VariableDeclaration","src":"14253:7:30"}],"id":10582,"name":"ParameterList","src":"14201:60:30"},{"children":[{"attributes":{"assignments":[10584]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":10605,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":9947,"type":"struct TokenWhitelist.Token"},"id":10583,"name":"UserDefinedTypeName","src":"14272:5:30"}],"id":10584,"name":"VariableDeclaration","src":"14272:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10585,"name":"Identifier","src":"14303:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9962,"type":"address","value":"_stablecoin"},"id":10586,"name":"Identifier","src":"14317:11:30"}],"id":10587,"name":"IndexAccess","src":"14303:26:30"}],"id":10588,"name":"VariableDeclarationStatement","src":"14272:57:30"},{"attributes":{"functionReturnParameters":10582},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":9934,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10589,"name":"Identifier","src":"14360:14:30"}],"id":10590,"name":"MemberAccess","src":"14360:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":9936,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10591,"name":"Identifier","src":"14395:14:30"}],"id":10592,"name":"MemberAccess","src":"14395:24:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":9938,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10593,"name":"Identifier","src":"14433:14:30"}],"id":10594,"name":"MemberAccess","src":"14433:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10595,"name":"Identifier","src":"14466:14:30"}],"id":10596,"name":"MemberAccess","src":"14466:24:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":9942,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10597,"name":"Identifier","src":"14504:14:30"}],"id":10598,"name":"MemberAccess","src":"14504:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10599,"name":"Identifier","src":"14541:14:30"}],"id":10600,"name":"MemberAccess","src":"14541:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":9946,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10601,"name":"Identifier","src":"14580:14:30"}],"id":10602,"name":"MemberAccess","src":"14580:25:30"}],"id":10603,"name":"TupleExpression","src":"14346:269:30"}],"id":10604,"name":"Return","src":"14339:276:30"}],"id":10605,"name":"Block","src":"14262:360:30"}],"id":10606,"name":"FunctionDefinition","src":"14150:472:30"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10607,"name":"ParameterList","src":"14777:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10615,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10608,"name":"ElementaryTypeName","src":"14803:7:30"}],"id":10609,"name":"ArrayTypeName","src":"14803:9:30"}],"id":10610,"name":"VariableDeclaration","src":"14803:16:30"}],"id":10611,"name":"ParameterList","src":"14802:18:30"},{"children":[{"attributes":{"functionReturnParameters":10611},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10612,"name":"Identifier","src":"14838:18:30"}],"id":10613,"name":"Return","src":"14831:25:30"}],"id":10614,"name":"Block","src":"14821:42:30"}],"id":10615,"name":"FunctionDefinition","src":"14751:112:30"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10616,"name":"ParameterList","src":"15015:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10673,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10617,"name":"ElementaryTypeName","src":"15041:7:30"}],"id":10618,"name":"ArrayTypeName","src":"15041:9:30"}],"id":10619,"name":"VariableDeclaration","src":"15041:16:30"}],"id":10620,"name":"ParameterList","src":"15040:18:30"},{"children":[{"attributes":{"assignments":[10624]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":10672,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":10622,"name":"ElementaryTypeName","src":"15069:7:30"}],"id":10623,"name":"ArrayTypeName","src":"15069:9:30"}],"id":10624,"name":"VariableDeclaration","src":"15069:36:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10625,"name":"ElementaryTypeName","src":"15112:7:30"}],"id":10626,"name":"ArrayTypeName","src":"15112:9:30"}],"id":10627,"name":"NewExpression","src":"15108:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10628,"name":"Identifier","src":"15122:18:30"}],"id":10629,"name":"FunctionCall","src":"15108:33:30"}],"id":10630,"name":"VariableDeclarationStatement","src":"15069:72:30"},{"attributes":{"assignments":[10632]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":10672,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10631,"name":"ElementaryTypeName","src":"15151:7:30"}],"id":10632,"name":"VariableDeclaration","src":"15151:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10633,"name":"Literal","src":"15177:1:30"}],"id":10634,"name":"VariableDeclarationStatement","src":"15151:27:30"},{"children":[{"attributes":{"assignments":[10636]},"children":[{"attributes":{"constant":false,"name":"i","scope":10669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10635,"name":"ElementaryTypeName","src":"15193:7:30"}],"id":10636,"name":"VariableDeclaration","src":"15193:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10637,"name":"Literal","src":"15205:1:30"}],"id":10638,"name":"VariableDeclarationStatement","src":"15193:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10636,"type":"uint256","value":"i"},"id":10639,"name":"Identifier","src":"15208:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10640,"name":"Identifier","src":"15212:18:30"}],"id":10641,"name":"MemberAccess","src":"15212:25:30"}],"id":10642,"name":"BinaryOperation","src":"15208:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10636,"type":"uint256","value":"i"},"id":10643,"name":"Identifier","src":"15239:1:30"}],"id":10644,"name":"UnaryOperation","src":"15239:3:30"}],"id":10645,"name":"ExpressionStatement","src":"15239:3:30"},{"children":[{"attributes":{"assignments":[10647]},"children":[{"attributes":{"constant":false,"name":"token","scope":10668,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10646,"name":"ElementaryTypeName","src":"15258:7:30"}],"id":10647,"name":"VariableDeclaration","src":"15258:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10648,"name":"Identifier","src":"15274:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10636,"type":"uint256","value":"i"},"id":10649,"name":"Identifier","src":"15293:1:30"}],"id":10650,"name":"IndexAccess","src":"15274:21:30"}],"id":10651,"name":"VariableDeclarationStatement","src":"15258:37:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10652,"name":"Identifier","src":"15313:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10647,"type":"address","value":"token"},"id":10653,"name":"Identifier","src":"15327:5:30"}],"id":10654,"name":"IndexAccess","src":"15313:20:30"}],"id":10655,"name":"MemberAccess","src":"15313:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10624,"type":"address[] memory","value":"redeemableAddresses"},"id":10656,"name":"Identifier","src":"15364:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10632,"type":"uint256","value":"redeemableIndex"},"id":10657,"name":"Identifier","src":"15384:15:30"}],"id":10658,"name":"IndexAccess","src":"15364:36:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10647,"type":"address","value":"token"},"id":10659,"name":"Identifier","src":"15403:5:30"}],"id":10660,"name":"Assignment","src":"15364:44:30"}],"id":10661,"name":"ExpressionStatement","src":"15364:44:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10632,"type":"uint256","value":"redeemableIndex"},"id":10662,"name":"Identifier","src":"15426:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10663,"name":"Literal","src":"15445:1:30"}],"id":10664,"name":"Assignment","src":"15426:20:30"}],"id":10665,"name":"ExpressionStatement","src":"15426:20:30"}],"id":10666,"name":"Block","src":"15346:115:30"}],"id":10667,"name":"IfStatement","src":"15309:152:30"}],"id":10668,"name":"Block","src":"15244:227:30"}],"id":10669,"name":"ForStatement","src":"15188:283:30"},{"attributes":{"functionReturnParameters":10620},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10624,"type":"address[] memory","value":"redeemableAddresses"},"id":10670,"name":"Identifier","src":"15487:19:30"}],"id":10671,"name":"Return","src":"15480:26:30"}],"id":10672,"name":"Block","src":"15059:454:30"}],"id":10673,"name":"FunctionDefinition","src":"14990:523:30"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10696,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10674,"name":"ElementaryTypeName","src":"15727:7:30"}],"id":10675,"name":"VariableDeclaration","src":"15727:14:30"},{"attributes":{"constant":false,"name":"_methodId","scope":10696,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":10676,"name":"ElementaryTypeName","src":"15743:6:30"}],"id":10677,"name":"VariableDeclaration","src":"15743:16:30"}],"id":10678,"name":"ParameterList","src":"15726:34:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10696,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10679,"name":"ElementaryTypeName","src":"15782:4:30"}],"id":10680,"name":"VariableDeclaration","src":"15782:4:30"}],"id":10681,"name":"ParameterList","src":"15781:6:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10682,"name":"Identifier","src":"15798:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10683,"name":"Identifier","src":"15806:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10675,"type":"address","value":"_token"},"id":10684,"name":"Identifier","src":"15820:6:30"}],"id":10685,"name":"IndexAccess","src":"15806:21:30"}],"id":10686,"name":"MemberAccess","src":"15806:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":10687,"name":"Literal","src":"15839:20:30"}],"id":10688,"name":"FunctionCall","src":"15798:62:30"}],"id":10689,"name":"ExpressionStatement","src":"15798:62:30"},{"attributes":{"functionReturnParameters":10681},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":10690,"name":"Identifier","src":"15878:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10677,"type":"bytes4","value":"_methodId"},"id":10691,"name":"Identifier","src":"15897:9:30"}],"id":10692,"name":"IndexAccess","src":"15878:29:30"}],"id":10693,"name":"TupleExpression","src":"15877:31:30"}],"id":10694,"name":"Return","src":"15870:38:30"}],"id":10695,"name":"Block","src":"15788:127:30"}],"id":10696,"name":"FunctionDefinition","src":"15695:220:30"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":10709,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":10697,"name":"ElementaryTypeName","src":"16104:6:30"}],"id":10698,"name":"VariableDeclaration","src":"16104:16:30"}],"id":10699,"name":"ParameterList","src":"16103:18:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10709,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10700,"name":"ElementaryTypeName","src":"16145:4:30"}],"id":10701,"name":"VariableDeclaration","src":"16145:4:30"}],"id":10702,"name":"ParameterList","src":"16144:6:30"},{"children":[{"attributes":{"functionReturnParameters":10702},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":10703,"name":"Identifier","src":"16169:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10698,"type":"bytes4","value":"_methodId"},"id":10704,"name":"Identifier","src":"16188:9:30"}],"id":10705,"name":"IndexAccess","src":"16169:29:30"}],"id":10706,"name":"TupleExpression","src":"16168:31:30"}],"id":10707,"name":"Return","src":"16161:38:30"}],"id":10708,"name":"Block","src":"16151:55:30"}],"id":10709,"name":"FunctionDefinition","src":"16070:136:30"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10710,"name":"ParameterList","src":"16342:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10717,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10711,"name":"ElementaryTypeName","src":"16368:7:30"}],"id":10712,"name":"VariableDeclaration","src":"16368:7:30"}],"id":10713,"name":"ParameterList","src":"16367:9:30"},{"children":[{"attributes":{"functionReturnParameters":10713},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10714,"name":"Identifier","src":"16394:18:30"}],"id":10715,"name":"Return","src":"16387:25:30"}],"id":10716,"name":"Block","src":"16377:42:30"}],"id":10717,"name":"FunctionDefinition","src":"16316:103:30"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10718,"name":"ParameterList","src":"16570:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10725,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10719,"name":"ElementaryTypeName","src":"16596:7:30"}],"id":10720,"name":"VariableDeclaration","src":"16596:7:30"}],"id":10721,"name":"ParameterList","src":"16595:9:30"},{"children":[{"attributes":{"functionReturnParameters":10721},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9962,"type":"address","value":"_stablecoin"},"id":10722,"name":"Identifier","src":"16622:11:30"}],"id":10723,"name":"Return","src":"16615:18:30"}],"id":10724,"name":"Block","src":"16605:35:30"}],"id":10725,"name":"FunctionDefinition","src":"16551:89:30"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10726,"name":"ParameterList","src":"16774:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10733,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10727,"name":"ElementaryTypeName","src":"16800:7:30"}],"id":10728,"name":"VariableDeclaration","src":"16800:7:30"}],"id":10729,"name":"ParameterList","src":"16799:9:30"},{"children":[{"attributes":{"functionReturnParameters":10729},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"bytes32","value":"_oracleNode"},"id":10730,"name":"Identifier","src":"16826:11:30"}],"id":10731,"name":"Return","src":"16819:18:30"}],"id":10732,"name":"Block","src":"16809:35:30"}],"id":10733,"name":"FunctionDefinition","src":"16755:89:30"}],"id":10734,"name":"ContractDefinition","src":"1939:14907:30"}],"id":10735,"name":"SourceUnit","src":"774:16073:30"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:28:-;-1:-1:-1;;;;;1510:20:28;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:28;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:28;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:28;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/base64.sol:Base64":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a723158204a406065ddb416c02878c70b8f66161acaf75fbff3401f410c678f7cac307f2d64736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a723158204a406065ddb416c02878c70b8f66161acaf75fbff3401f410c678f7cac307f2d64736f6c63430005110032","srcmap":"264:2262:5:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;264:2262:5;;;;;;;","srcmap-runtime":"264:2262:5:-;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:7:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:7:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:8:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:8;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:8;-1:-1:-1;;;;;2567:10:8;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:8;;;;;;","srcmap-runtime":"1897:2174:8:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:18;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:14;;;;;;;;;:::i;:::-;;573:184:18;;;;;;;;;:::i;1721:953:15:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:11;;;;;;;;;:::i;:::-;;;;;;;;;612:169:17;;;;;;;;;:::i;505:166:13:-;;;;;;;;;:::i;980:228:12:-;;;;;;;;;:::i;3269:231:8:-;;;;;;;;;:::i;4901:153:14:-;;;;;;;;;:::i;974:127:18:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:14;;;;;;;;;:::i;582:292:11:-;;;;;;;;;:::i;844:101:16:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:12:-;;;;;;;;;:::i;4519:168:14:-;;;;;;;;;:::i;3703:366:8:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:14;;;;;;;;;:::i;838:108:13:-;;;;;;;;;:::i;1023:133:17:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:14;;;;;;;;;:::i;681:140:12:-;;;;;;;;;:::i;858:226:15:-;;;;;;;;;:::i;1514:127:12:-;;;;;;;;;:::i;2320:80:8:-;;;;;;;;;:::i;1107:169:18:-;1174:4;-1:-1:-1;;;;;;1197:32:18;;-1:-1:-1;;;1197:32:18;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:14:-;2932:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:14;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:14;;:18;-1:-1:-1;;3185:18:14;:15;:18;;-1:-1:-1;3185:18:14:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:14;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:14;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:14;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:14;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:14;;4052:6;;-1:-1:-1;4060:20:14;;;;-1:-1:-1;4082:17:14;4012:11;:88::i;:::-;400:1:10;;;;;2854:1263:14;;;;:::o;573:184:18:-;668:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:18;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:15:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:15;;;;;;;;;;-1:-1:-1;;;;;1849:29:15;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:15;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:15;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:15;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:15;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:15;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:15;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:15;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:15;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:15;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:15;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:15;;-1:-1:-1;2373:103:15;-1:-1:-1;2489:8:15;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:15;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:15;;-1:-1:-1;;;1721:953:15;;;;;:::o;1195:454:11:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:11;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:11;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:11;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:11;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:11;-1:-1:-1;1195:454:11;;;;;;:::o;612:169:17:-;687:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:17;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:17;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:13:-;584:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:13;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:12;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:12:o;3269:231:8:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:8;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:8;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:14:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:18:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:18;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:14:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:11:-;674:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:11;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:11;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:16:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:16;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:12;1302:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:12;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:14:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:8;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:8;-1:-1:-1;3844:6:8;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:8;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:8;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:8;;3840:199;;;-1:-1:-1;3703:366:8;;;;:::o;5193:128:14:-;5247:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:14;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:13:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:13;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:17;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:14:-;5617:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:14;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:14;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:14;;:16;-1:-1:-1;5701:4:14;;-1:-1:-1;5701:4:14;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:10;5541:225:14;;;;:::o;681:140:12:-;743:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:12;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:15:-;955:4;371:18:10;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:15;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:15;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:15;-1:-1:-1;;;;;971:43:15;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:12:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:12;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:17:-;1229:4;-1:-1:-1;;;;;;1252:34:17;;-1:-1:-1;;;1252:34:17;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:8:-;3596:3;;:15;;-1:-1:-1;;;3596:15:8;;3564:4;;;;-1:-1:-1;;;;;3596:3:8;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:8;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:8;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:8;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:8;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:8;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:8;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:9:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:7:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:14:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:14;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:14;;;;;;-1:-1:-1;;6760:43:14;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:14;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:14;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:9:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:9;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:9;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:9;;:::o;414:204:10:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:10;576:10;570:17;-1:-1:-1;;;566:36:10;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:10;87:34:-1;-1:-1;;;;;;776:20:10;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:10;743:64::o;951:169:16:-;1018:4;-1:-1:-1;;;;;;1041:32:16;;-1:-1:-1;;;1041:32:16;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:9:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:9;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:9:o;8685:393:7:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:7;87:34:-1;135:17;;-1:-1;8858:14:7;-1:-1:-1;8839:33:7;-1:-1:-1;8960:2:7;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:7;;8685:393;-1:-1:-1;;;;;8685:393:7:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:7:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:7;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:7;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:15:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:15;;:11;-1:-1:-1;;;;;2770:37:15;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:7:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:7;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:7;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:7;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:7;;513:2;499:26;489:42;;468:73::o;6035:245:14:-;6102:4;-1:-1:-1;;;;;;6125:38:14;;-1:-1:-1;;;6125:38:14;;:93;;-1:-1:-1;;;;;;;6182:36:14;;-1:-1:-1;;;6182:36:14;6125:93;:148;;;;6237:36;6261:11;1019:4:13;-1:-1:-1;;;;;;1042:40:13;;-1:-1:-1;;;1042:40:13;;:80;;;1086:36;1110:11;1714:4:12;-1:-1:-1;;;;;;1737:32:12;;-1:-1:-1;;;1737:32:12;;:71;;-1:-1:-1;;;;;;;1773:35:12;;-1:-1:-1;;;1773:35:12;1737:71;:111;;;;1812:36;1836:11;1722:4:11;-1:-1:-1;;;;;;1745:31:11;;-1:-1:-1;;;1745:31:11;;:71;;-1:-1:-1;;;;;;;;;;204:32:10;;;1780:36:11;114:129:10:o;1897:2174:8:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:8;;;-1:-1:-1;1897:2174:8;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:9:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:9:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/oraclizeAPI_0.5.sol:Buffer":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820301d15167ffe8b7d6d35b389c445156482c22ac2365396e96dfb8537fdc23af264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820301d15167ffe8b7d6d35b389c445156482c22ac2365396e96dfb8537fdc23af264736f6c63430005110032","srcmap":"4136:4236:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"4136:4236:19:-;;;;;;;;"},"externals/oraclizeAPI_0.5.sol:CBOR":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820afe6d0b9f8d097a94134a9adb5f497bcce638140c6ee300a28e9d66d54f84ed464736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820afe6d0b9f8d097a94134a9adb5f497bcce638140c6ee300a28e9d66d54f84ed464736f6c63430005110032","srcmap":"8374:2488:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"8374:2488:19:-;;;;;;;;"},"externals/oraclizeAPI_0.5.sol:OraclizeAddrResolverI":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/oraclizeAPI_0.5.sol:OraclizeI":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/oraclizeAPI_0.5.sol:solcChecker":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/oraclizeAPI_0.5.sol:usingOraclize":{"bin":"608060405234801561001057600080fd5b506101cc806100206000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806338bbfa5014610030575b600080fd5b6101646004803603606081101561004657600080fd5b8135919081019060408101602082013564010000000081111561006857600080fd5b82018360208201111561007a57600080fd5b8035906020019184600183028401116401000000008311171561009c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156100ef57600080fd5b82018360208201111561010157600080fd5b8035906020019184600183028401116401000000008311171561012357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610166945050505050565b005b5050600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff555056fea265627a7a723158209af2e83824c5474e6d85089010b3c0c47f57e711f83697aeae042a1dbd4dbfb964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b506004361061002b5760003560e01c806338bbfa5014610030575b600080fd5b6101646004803603606081101561004657600080fd5b8135919081019060408101602082013564010000000081111561006857600080fd5b82018360208201111561007a57600080fd5b8035906020019184600183028401116401000000008311171561009c57600080fd5b91908080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525092959493602081019350359150506401000000008111156100ef57600080fd5b82018360208201111561010157600080fd5b8035906020019184600183028401116401000000008311171561012357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610166945050505050565b005b5050600080805260036020527f3617319a054d772f909f7c479a2cebe5066e836a939412e32403c99029b92eff555056fea265627a7a723158209af2e83824c5474e6d85089010b3c0c47f57e711f83697aeae042a1dbd4dbfb964736f6c63430005110032","srcmap":"10894:47129:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10894:47129:19;;;;;;;","srcmap-runtime":"10894:47129:19:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10894:47129:19;;;;;;;;;;;;;;;;;;;15444:178;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;15444:178:19;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;15444:178:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15444:178:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15444:178:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15444:178:19;;;;;;;;-1:-1:-1;15444:178:19;;-1:-1:-1;;21:11;5:28;;2:2;;;46:1;43;36:12;2:2;15444:178:19;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;15444:178:19;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;15444:178:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;15444:178:19;;-1:-1:-1;15444:178:19;;-1:-1:-1;;;;;15444:178:19:i;:::-;;;-1:-1:-1;;15613:1:19;15568:34;;;:22;:34;;;:47;-1:-1:-1;15444:178:19:o"},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:21:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:21:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/date.sol:Date":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820be84dc5f3dd94fb50d07c61b2de3dec0c6b16a8d991ebeb5443aab780c5b84ab64736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820be84dc5f3dd94fb50d07c61b2de3dec0c6b16a8d991ebeb5443aab780c5b84ab64736f6c63430005110032","srcmap":"927:1786:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;927:1786:23;;;;;;;","srcmap-runtime":"927:1786:23:-;;;;;"},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/parseIntScientific.sol:ParseIntScientific":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820aab401d12e8caad54cc7a665a54d3d743fe6ef009d19a8d8fbdf3ec73b180b0364736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820aab401d12e8caad54cc7a665a54d3d743fe6ef009d19a8d8fbdf3ec73b180b0364736f6c63430005110032","srcmap":"952:7539:26:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;952:7539:26;;;;;;;","srcmap-runtime":"952:7539:26:-;;;;;"},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:28:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:28;;;;;;;","srcmap-runtime":"961:696:28:-;;;;;"},"oracle.sol:Oracle":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976006553480156200003557600080fd5b506040516200532038038062005320833981810160405260808110156200005b57600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091808280156200009c5760068190555b506007556040805160608101825281815290620052e060208301398051620000cd916008916020909101906200092a565b50600280546001600160a01b0319166001600160a01b038616179055620000f96402540be4006200011b565b62000111600f60fc1b6001600160e01b036200030c16565b50505050620009cc565b6002546001600160a01b031615806200015157506002546200014f906001600160a01b03166001600160e01b036200050216565b155b156200016e576200016c60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001bf57600080fd5b505af1158015620001d4573d6000803e3d6000fd5b505050506040513d6020811015620001eb57600080fd5b50516001546001600160a01b03908116911614620002a257600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200025457600080fd5b505af115801562000269573d6000803e3d6000fd5b505050506040513d60208110156200028057600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b5050505050565b6002546001600160a01b0316158062000342575060025462000340906001600160a01b03166001600160e01b036200050216565b155b156200035f576200035d60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620003b057600080fd5b505af1158015620003c5573d6000803e3d6000fd5b505050506040513d6020811015620003dc57600080fd5b50516001546001600160a01b039081169116146200049357600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200044557600080fd5b505af11580156200045a573d6000803e3d6000fd5b505050506040513d60208110156200047157600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163688dcfd760e01b81527fff000000000000000000000000000000000000000000000000000000000000008416600482015290516001600160a01b039092169163688dcfd79160248082019260009290919082900301818387803b158015620002f057600080fd5b3b90565b60006200051b6001600160e01b036200052116565b92915050565b6000806200054c731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed6001600160e01b036200050216565b1115620005b857600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152620005af906001600160e01b036200091116565b5060016200090e565b6000620005e273c03a2615d5efaf5f49f60b7bb6583eaec212fdf16001600160e01b036200050216565b11156200064657600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152620005af906001600160e01b036200091116565b60006200067073b7a07bcf2ba2f2703b24c0691b5278999c59ac7e6001600160e01b036200050216565b1115620006d157600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152620005af906001600160e01b036200091116565b6000620006fb73146500cfd35b22e4a392fe0adc06de1a1368ed486001600160e01b036200050216565b11156200075e57600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152620005af906001600160e01b036200091116565b60006200078873a2998efd205fb9d4b4963afb70778d6354ad3a416001600160e01b036200050216565b1115620007ea57600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152620005af906001600160e01b036200091116565b600062000814736f485c8bf6fc43ea212e93bbf8ce046c7f1cb4756001600160e01b036200050216565b11156200084a5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016200090e565b6000620008747320e12a1f859b3feae5fb2a0a32c18f5a65555bbf6001600160e01b036200050216565b1115620008aa5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016200090e565b6000620008d47351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa6001600160e01b036200050216565b11156200090a5750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016200090e565b5060005b90565b8051620009269060039060208401906200092a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200096d57805160ff19168380011785556200099d565b828001600101855582156200099d579182015b828111156200099d57825182559160200191906001019062000980565b50620009ab929150620009af565b5090565b6200090e91905b80821115620009ab5760008155600101620009b6565b61490480620009dc6000396000f3fe6080604052600436106100915760003560e01c8063996cba6811610059578063996cba681461032c578063b598f8821461036f578063c2c3d0541461038c578063ca6ad1e414610407578063e2b4ce971461043157610091565b806338bbfa50146100965780633acbe96e146101d55780637d73b2311461025f578063877337b014610290578063937f54a4146102b7575b600080fd5b3480156100a257600080fd5b506101d3600480360360608110156100b957600080fd5b81359190810190604081016020820135600160201b8111156100da57600080fd5b8201836020820111156100ec57600080fd5b803590602001918460018302840111600160201b8311171561010d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561015f57600080fd5b82018360208201111561017157600080fd5b803590602001918460018302840111600160201b8311171561019257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610446945050505050565b005b3480156101e157600080fd5b506101ea61061a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506102746106a8565b604080516001600160a01b039092168252519081900360200190f35b34801561029c57600080fd5b506102a56106b8565b60408051918252519081900360200190f35b6101d3600480360360408110156102cd57600080fd5b81359190810190604081016020820135600160201b8111156102ee57600080fd5b82018360208201111561030057600080fd5b803590602001918460208302840111600160201b8311171561032157600080fd5b5090925090506106be565b34801561033857600080fd5b506101d36004803603606081101561034f57600080fd5b506001600160a01b03813581169160208101359091169060400135610757565b6101d36004803603602081101561038557600080fd5b5035610804565b34801561039857600080fd5b506101d3600480360360208110156103af57600080fd5b810190602081018135600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b509092509050610867565b34801561041357600080fd5b506101d36004803603602081101561042a57600080fd5b5035610935565b34801561043d57600080fd5b506102a56109d3565b61044e6109d9565b6001600160a01b0316336001600160a01b0316146104ac576040805162461bcd60e51b815260206004820152601660248201527573656e646572206973206e6f74206f7261636c697a6560501b604482015290519081900360640190fd5b6000838152600960205260408120546001600160a01b031690806104cf83610bc3565b96505050945050505081610524576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b60088054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260009384936105c5938b938b93909290918301828280156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505086610d55565b909250905081156106105760006105e36105de89611287565b61152a565b60008a815260096020526040902080546001600160a01b031916905590508161060d87838361153d565b50505b5050505050505050565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b505050505081565b6000546001600160a01b03165b90565b60075490565b6106c7336115cc565b610715576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b6107528383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061166092505050565b505050565b61076033611982565b6107aa576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b58383836119e4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61080d336115cc565b61085b576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61086481611a48565b50565b61087033611982565b6108ba576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6108c660088383614675565b506040805133808252602082018381529282018490527fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa929091859185919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b61093e336115cc565b61098c576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61099581611cf9565b604080513381526020810183905281517ffbd406825addb09beef160afc17bb80ba28df4a3533dcd23592b82658a1c5ab4929181900390910190a150565b60065490565b6002546000906001600160a01b03161580610a065750600254610a04906001600160a01b0316611ec2565b155b15610a1757610a156000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b50516001546001600160a01b03908116911614610b4457600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b600160009054906101000a90046001600160a01b03166001600160a01b031663c281d19e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d6020811015610bbc57600080fd5b5051905090565b6060600080600080600080610bd9600754611ed0565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610c6b57600080fd5b8101908080516040519392919084600160201b821115610c8a57600080fd5b908301906020820185811115610c9f57600080fd5b8251600160201b811182820188101715610cb857600080fd5b82525081516020918201929091019080838360005b83811015610ce5578181015183820152602001610ccd565b50505050905090810190601f168015610d125780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610da5576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b604185600181518110610db457fe5b016020015160f81c14610e0e576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180388339019050509050610e408660026041846000611f92565b865190915060609087906044908110610e5557fe5b0160200151875160f89190911c906101009089906043908110610e7457fe5b016020015160f81c020114610ec9576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b6040805160608082526080820190925281602082018180388339019050509050610ef98760456060846000611f92565b9050610f06818388611fe0565b610f4b576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b604080516014808252818301909252606091602082018180388339019050509050610f7c82600b6014846000611f92565b9050600080610f8b83896120a4565b909250905081610fd1576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c8082526060828101909352602082018180388339019050509050611001856034602c846000611f92565b905061100c81612429565b8051906020012060028d6040516020018082805190602001908083835b602083106110485780518252601f199092019160209182019101611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110ab5780518252601f19909201916020918201910161108c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110ea573d6000803e3d6000fd5b5050506040513d60208110156110ff57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014611174576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111d85781810151838201526020016111c0565b50505050905090810190601f1680156112055780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611238578181015183820152602001611220565b50505050905090810190601f1680156112655780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b602083106112be5780518252601f19909201916020918201910161129f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525190506008811180156113065750601c8111155b61134c576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b6040805160078082528183019092526060916020820181803883390190505090506113e3846040516020018082805190602001908083835b602083106113a35780518252601f199092019160209182019101611384565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007846000611f92565b5060408051663d9122aa24111d60c91b81529051908190036007019020815160208301201461144b576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b6114536146f3565b61145c85612a46565b9050611490611483604051806040016040528060018152602001601d60f91b815250612a46565b829063ffffffff612a6b16565b50806000015192506114ca6114bd604051806040016040528060018152602001607d60f81b815250612a46565b829063ffffffff612a8516565b508051600019840114611516576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b61151f81612ae3565b93505050505b919050565b6000611537826012612b33565b92915050565b611548600754611ed0565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b50505050505050565b60006115d9600654611ed0565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b505192915050565b80516116ac576040805160208082526010908201526f195b5c1d1e481d1bdad95b881b1a5cdd60821b8183015290516000805160206148658339815191529181900360600190a161197e565b4781516116d36040518060400160405280600381526020016215549360ea1b8152506133e4565b0211156117245760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b61172c6146f3565b61174d60405180606001604052806032815260200161479660329139612a46565b90506117576146f3565b61178c60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a57606060006117ba8684815181106117ad57fe5b6020026020010151610bc3565b5050509350505091508061180f576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b6118176146f3565b61182083612a46565b905060006118746040518060400160405280600381526020016215549360ea1b81525061186e8861186261185d878d61360f90919063ffffffff16565b612a46565b9063ffffffff61360f16565b8b613683565b905087858151811061188257fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe6118eb83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050600190920191506117919050565b5050505b5050565b600061198f600654611ed0565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b6001600160a01b038216611a2e576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50610752565b6107526001600160a01b038316848363ffffffff613a5016565b6060611a52613aa2565b9050805160001415611a9d57604080516020808252600990820152686e6f20746f6b656e7360b81b8183015290516000805160206148658339815191529181900360600190a161197e565b478151611ac46040518060400160405280600381526020016215549360ea1b8152506133e4565b021115611b155760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b611b1d6146f3565b611b3e60405180606001604052806032815260200161479660329139612a46565b9050611b486146f3565b611b7d60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a576060611b9c8583815181106117ad57fe5b5050505050509050611bac6146f3565b611bb582612a46565b90506000611bf86040518060400160405280600381526020016215549360ea1b815250611bf28761186261185d878c61360f90919063ffffffff16565b8a613683565b9050868481518110611c0657fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe611c6f83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611cb3578181015183820152602001611c9b565b50505050905090810190601f168015611ce05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050600101611b82565b6002546001600160a01b03161580611d235750600254611d21906001600160a01b0316611ec2565b155b15611d3457611d326000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50516001546001600160a01b03908116911614611e6157600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015611eae57600080fd5b505af115801561197a573d6000803e3d6000fd5b3b90565b6000611537613bb3565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d6020811015611f4757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561162e57600080fd5b6060600082850190508084511015611fa957600080fd5b60208087019084015b868860200101821015611fd357888201518682015260209182019101611fb2565b5093979650505050505050565b60008060006120766002876040518082805190602001908083835b6020831061201a5780518252601f199092019160209182019101611ffb565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612059573d6000803e3d6000fd5b5050506040513d602081101561206e57600080fd5b505186613f07565b925090508080156120985750835160208501206001600160a01b038381169116145b925050505b9392505050565b600080836040516020018082805190602001908083835b602083106120da5780518252601f1990920191602091820191016120bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461211857fe5b6121206146f3565b61212985612a46565b90506121336146f3565b612155604051806040016040528060018152602001601d60f91b815250612a46565b905061215f6146f3565b612181604051806040016040528060018152602001600160fd1b815250612a46565b905060006121a56121a061219b868563ffffffff612a6b16565b612ae3565b613f91565b90506000811180156121b75750602081105b6121f4576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061221161220c61219b878663ffffffff612a6b16565b613f9e565b60ff1690506000811180156122265750600d81105b612265576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b600061227d6121a061219b888763ffffffff612a6b16565b90506107e1811180156122915750610bb881105b6122cf576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b60006122e76121a061219b898963ffffffff612a6b16565b90506019811061232b576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b60006123436121a061219b8a8a63ffffffff612a6b16565b9050603c8110612389576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006123a16121a061219b8b8b63ffffffff612a6b16565b9050603c81106123e7576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b60008183606402856127100289620f424002896305f5e10002896402540be40002010101010190508c8111819b509b50505050505050505050505b9250929050565b60606000806000806000865190506060816040519080825280601f01601f191660200182016040528015612464576020820181803883390190505b50905060008083118015612479575060048306155b6124ca576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b60408051603d60f81b8152905190819003600101902089518a9060011986019081106124f257fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156125345760028303925061259a565b60408051603d60f81b8152905190819003600101902089518a90600019860190811061255c57fe5b01602090810151604080516001600160f81b03199092168284015280518083036001018152602190920190528051910120141561259a576001830392505b600319831660005b818110156127b8576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106125d457fe5b0160200151815160f89190911c9081106125ea57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061262157fe5b0160200151815160f89190911c90811061263757fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061266e57fe5b0160200151815160f89190911c90811061268457fe5b602001015160f81c60f81b96506040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106126bb57fe5b0160200151815160f89190911c9081106126d157fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061271057fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b03191691869190811061275b57fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061279c57fe5b60200101906001600160f81b031916908160001a9053506125a2565b818503600214156128b0576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106127ed57fe5b0160200151815160f89190911c90811061280357fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061283a57fe5b0160200151815160f89190911c90811061285057fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b1684848060010195508151811061289457fe5b60200101906001600160f81b031916908160001a905350612a37565b81850360031415612a37576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106128e557fe5b0160200151815160f89190911c9081106128fb57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061293257fe5b0160200151815160f89190911c90811061294857fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061297f57fe5b0160200151815160f89190911c90811061299557fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c161790921691869181106129d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110612a1f57fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b612a4e6146f3565b506040805180820190915281518152602082810190820152919050565b612a736146f3565b612a7e838383614242565b5092915050565b612a8d6146f3565b815183511015612a9e575081611537565b8151835160208086015190850151910191909103906001908214612acc575082516020840151819020908220145b8015612ada57835185510385525b50929392505050565b60608082600001516040519080825280601f01601f191660200182016040528015612b15576020820181803883390190505b5090506000602082019050612a7e81856020015186600001516142b3565b60008281808080808080808080805b8b51811015613175578b51600360fc1b908d9083908110612b5f57fe5b01602001516001600160f81b03191610801590612b9d57508b51603960f81b908d9083908110612b8b57fe5b01602001516001600160f81b03191611155b8015612ba7575083155b15612c57578415612c0557612bc38a600a63ffffffff6142f116565b9950612bf8603060f81b60f81c8d8381518110612bdc57fe5b01602001518c9160f89190911c0360ff1663ffffffff61434a16565b9950600190970196612c52565b60019550612c1a8b600a63ffffffff6142f116565b9a50612c4f603060f81b60f81c8d8381518110612c3357fe5b01602001518d9160f89190911c0360ff1663ffffffff61434a16565b9a505b61316d565b8b51600360fc1b908d9083908110612c6b57fe5b01602001516001600160f81b03191610801590612ca957508b51603960f81b908d9083908110612c9757fe5b01602001516001600160f81b03191611155b8015612cb25750835b15612d0457612cc889600a63ffffffff6142f116565b9850612cfd603060f81b60f81c8d8381518110612ce157fe5b01602001518b9160f89190911c0360ff1663ffffffff61434a16565b985061316d565b8b51601760f91b908d9083908110612d1857fe5b01602001516001600160f81b0319161415612e1f5785612d77576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415612dca576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315612e16576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b6001945061316d565b8b51602d60f81b908d9083908110612e3357fe5b01602001516001600160f81b0319161415612f29578215612e89576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612ec9576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612f20576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001925061316d565b8b51602b60f81b908d9083908110612f3d57fe5b01602001516001600160f81b0319161415613033578115612f93576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b8215612fd3576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461302a576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001915061316d565b8b51604560f81b908d908390811061304757fe5b01602001516001600160f81b031916148061308257508b51606560f81b908d908390811061307157fe5b01602001516001600160f81b031916145b1561313057856130d1576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315613124576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b6001935080965061316d565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101612b42565b828061317e5750815b156131975786600201811161319257600080fd5b6131ac565b83156131ac578660010181116131ac57600080fd5b821561322d578d891061322357604e8e8a0310613200576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161320e57fe5b049c506115379b505050505050505050505050565b888e039d50613240565b61323d8e8a63ffffffff61434a16565b9d505b878e1061331457604e88106132865760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b61329a8b600a8a900a63ffffffff6142f116565b9a506132ac8b8b63ffffffff61434a16565b9a50604e888f03106132f5576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b61330d888f03600a0a8c6142f190919063ffffffff16565b9a506133d1565b8d88039750604e88106133585760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b87600a0a8a8161336457fe5b049950604e8e106133a65760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b6133bc8e600a0a8c6142f190919063ffffffff16565b9a506133ce8b8b63ffffffff61434a16565b9a505b50989d9c50505050505050505050505050565b6002546000906001600160a01b03161580613411575060025461340f906001600160a01b0316611ec2565b155b15613422576134206000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b505050506040513d602081101561349c57600080fd5b50516001546001600160a01b0390811691161461354f57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d602081101561352d57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460405163524f388960e01b81526020600482018181528551602484015285516001600160a01b039094169363524f388993879383926044909201919085019080838360005b838110156135af578181015183820152602001613597565b50505050905090810190601f1680156135dc5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156135fb57600080fd5b505af1158015611642573d6000803e3d6000fd5b60608082600001518460000151016040519080825280601f01601f191660200182016040528015613647576020820181803883390190505b509050600060208201905061366581866020015187600001516142b3565b84516020850151855161367b92840191906142b3565b509392505050565b6002546000906001600160a01b031615806136b057506002546136ae906001600160a01b0316611ec2565b155b156136c1576136bf6000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561371157600080fd5b505af1158015613725573d6000803e3d6000fd5b505050506040513d602081101561373b57600080fd5b50516001546001600160a01b039081169116146137ee57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050506040513d60208110156137cc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460408051630bbceb3360e21b815260248101859052600481019182528651604482015286516000936001600160a01b031692632ef3accc928992889291829160649091019060208601908083838c5b83811015613858578181015183820152602001613840565b50505050905090810190601f1680156138855780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519050670de0b6b3a76400003a8402018111156138f157506000905061209d565b60015460405163c51be90f60e01b8152600060048201818152606483018790526080602484019081528951608485015289516001600160a01b039095169463c51be90f948794938c938c938c93604481019160a49091019060208801908083838c5b8381101561396b578181015183820152602001613953565b50505050905090810190601f1680156139985780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156139cb5781810151838201526020016139b3565b50505050905090810190601f1680156139f85780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b158015613a1a57600080fd5b505af1158015613a2e573d6000803e3d6000fd5b50505050506040513d6020811015613a4557600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107529084906143a4565b6060613aaf600754611ed0565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2457600080fd5b8101908080516040519392919084600160201b821115613b4357600080fd5b908301906020820185811115613b5857600080fd5b82518660208202830111600160201b82111715613b7457600080fd5b82525081516020918201928201910280838360005b83811015613ba1578181015183820152602001613b89565b50505050905001604052505050905090565b600080613bd3731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611ec2565b1115613c3257600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152613c2a90614562565b5060016106b5565b6000613c5173c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611ec2565b1115613ca957600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152613c2a90614562565b6000613cc873b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611ec2565b1115613d1d57600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152613c2a90614562565b6000613d3c73146500cfd35b22e4a392fe0adc06de1a1368ed48611ec2565b1115613d9357600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152613c2a90614562565b6000613db273a2998efd205fb9d4b4963afb70778d6354ad3a41611ec2565b1115613e0857600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152613c2a90614562565b6000613e27736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611ec2565b1115613e5b5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016106b5565b6000613e7a7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611ec2565b1115613eae5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016106b5565b6000613ecd7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611ec2565b1115613f015750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016106b5565b50600090565b60008060008060008551604114613f28575060009350839250612422915050565b50505060208301516040840151606085015160001a601b811015613f4a57601b015b8060ff16601b14158015613f6257508060ff16601c14155b15613f77575060009350839250612422915050565b613f8387828585614575565b945094505050509250929050565b6000611537826000612b33565b600080826040516020018082805190602001908083835b60208310613fd45780518252601f199092019160209182019101613fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506040518080622530b760e91b8152506003019050604051809103902081141561403e576001915050611525565b60408051622332b160e91b81529051908190036003019020811415614067576002915050611525565b604080516226b0b960e91b81529051908190036003019020811415614090576003915050611525565b604080516220b83960e91b815290519081900360030190208114156140b9576004915050611525565b60408051624d617960e81b815290519081900360030190208114156140e2576005915050611525565b6040805162253ab760e91b8152905190819003600301902081141561410b576006915050611525565b6040805162129d5b60ea1b81529051908190036003019020811415614134576007915050611525565b604080516241756760e81b8152905190819003600301902081141561415d576008915050611525565b604080516205365760ec1b81529051908190036003019020811415614186576009915050611525565b604080516213d8dd60ea1b815290519081900360030190208114156141af57600a915050611525565b60408051622737bb60e91b815290519081900360030190208114156141d857600b915050611525565b604080516244656360e81b8152905190819003600301902081141561420157600c915050611525565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b61424a6146f3565b600061426885600001518660200151866000015187602001516145b2565b6020808701805191860191909152805182038552865190519192500181141561429457600085526142aa565b8351835186519101900385528351810160208601525b50909392505050565b5b602081106142d3578151835260209283019290910190601f19016142b4565b905182516020929092036101000a6000190180199091169116179052565b60008261430057506000611537565b8282028284828161430d57fe5b041461209d5760405162461bcd60e51b81526004018080602001828103825260218152602001806148856021913960400191505060405180910390fd5b60008282018381101561209d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6143b6826001600160a01b031661466f565b614407576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106144455780518252601f199092019160209182019101614426565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146144a7576040519150601f19603f3d011682016040523d82523d6000602084013e6144ac565b606091505b509150915081614503576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561455c5780806020019051602081101561451f57600080fd5b505161455c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806148a6602a913960400191505060405180910390fd5b50505050565b805161197e90600390602084019061470d565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1905190999098509650505050505050565b6000838186851161466057602085116146255783518251600019600860208990030260020a011991821690888a018890039083165b82811461461757818610614605578a8a019650505050505050614667565b506001909401805190949083166145e7565b859650505050505050614667565b508383206000905b858803821161465e578583208181141561464d5783945050505050614667565b50600192830192919091019061462d565b505b5050508284015b949350505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146b65782800160ff198235161785556146e3565b828001600101855582156146e3579182015b828111156146e35782358255916020019190600101906146c8565b506146ef92915061477b565b5090565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061474e57805160ff19168380011785556146e3565b828001600101855582156146e3579182015b828111156146e3578251825591602001919060010190614760565b6106b591905b808211156146ef576000815560010161478156fe68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d6d6f7265207468616e20373720646563696d616c2064696769747320706172736564000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334eb5629fd8501532aeb93b1b6a5b5b2ae398561e56514ed4b4b0c5ac2d381b6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158208486b396d2654ffb4d4b2185efc5120b1ea711758549921ac022c6ac0afa157d64736f6c63430005110032a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca","bin-runtime":"6080604052600436106100915760003560e01c8063996cba6811610059578063996cba681461032c578063b598f8821461036f578063c2c3d0541461038c578063ca6ad1e414610407578063e2b4ce971461043157610091565b806338bbfa50146100965780633acbe96e146101d55780637d73b2311461025f578063877337b014610290578063937f54a4146102b7575b600080fd5b3480156100a257600080fd5b506101d3600480360360608110156100b957600080fd5b81359190810190604081016020820135600160201b8111156100da57600080fd5b8201836020820111156100ec57600080fd5b803590602001918460018302840111600160201b8311171561010d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561015f57600080fd5b82018360208201111561017157600080fd5b803590602001918460018302840111600160201b8311171561019257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610446945050505050565b005b3480156101e157600080fd5b506101ea61061a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506102746106a8565b604080516001600160a01b039092168252519081900360200190f35b34801561029c57600080fd5b506102a56106b8565b60408051918252519081900360200190f35b6101d3600480360360408110156102cd57600080fd5b81359190810190604081016020820135600160201b8111156102ee57600080fd5b82018360208201111561030057600080fd5b803590602001918460208302840111600160201b8311171561032157600080fd5b5090925090506106be565b34801561033857600080fd5b506101d36004803603606081101561034f57600080fd5b506001600160a01b03813581169160208101359091169060400135610757565b6101d36004803603602081101561038557600080fd5b5035610804565b34801561039857600080fd5b506101d3600480360360208110156103af57600080fd5b810190602081018135600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b509092509050610867565b34801561041357600080fd5b506101d36004803603602081101561042a57600080fd5b5035610935565b34801561043d57600080fd5b506102a56109d3565b61044e6109d9565b6001600160a01b0316336001600160a01b0316146104ac576040805162461bcd60e51b815260206004820152601660248201527573656e646572206973206e6f74206f7261636c697a6560501b604482015290519081900360640190fd5b6000838152600960205260408120546001600160a01b031690806104cf83610bc3565b96505050945050505081610524576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b60088054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260009384936105c5938b938b93909290918301828280156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505086610d55565b909250905081156106105760006105e36105de89611287565b61152a565b60008a815260096020526040902080546001600160a01b031916905590508161060d87838361153d565b50505b5050505050505050565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b505050505081565b6000546001600160a01b03165b90565b60075490565b6106c7336115cc565b610715576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b6107528383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061166092505050565b505050565b61076033611982565b6107aa576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b58383836119e4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61080d336115cc565b61085b576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61086481611a48565b50565b61087033611982565b6108ba576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6108c660088383614675565b506040805133808252602082018381529282018490527fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa929091859185919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b61093e336115cc565b61098c576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61099581611cf9565b604080513381526020810183905281517ffbd406825addb09beef160afc17bb80ba28df4a3533dcd23592b82658a1c5ab4929181900390910190a150565b60065490565b6002546000906001600160a01b03161580610a065750600254610a04906001600160a01b0316611ec2565b155b15610a1757610a156000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b50516001546001600160a01b03908116911614610b4457600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b600160009054906101000a90046001600160a01b03166001600160a01b031663c281d19e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d6020811015610bbc57600080fd5b5051905090565b6060600080600080600080610bd9600754611ed0565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610c6b57600080fd5b8101908080516040519392919084600160201b821115610c8a57600080fd5b908301906020820185811115610c9f57600080fd5b8251600160201b811182820188101715610cb857600080fd5b82525081516020918201929091019080838360005b83811015610ce5578181015183820152602001610ccd565b50505050905090810190601f168015610d125780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610da5576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b604185600181518110610db457fe5b016020015160f81c14610e0e576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180388339019050509050610e408660026041846000611f92565b865190915060609087906044908110610e5557fe5b0160200151875160f89190911c906101009089906043908110610e7457fe5b016020015160f81c020114610ec9576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b6040805160608082526080820190925281602082018180388339019050509050610ef98760456060846000611f92565b9050610f06818388611fe0565b610f4b576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b604080516014808252818301909252606091602082018180388339019050509050610f7c82600b6014846000611f92565b9050600080610f8b83896120a4565b909250905081610fd1576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c8082526060828101909352602082018180388339019050509050611001856034602c846000611f92565b905061100c81612429565b8051906020012060028d6040516020018082805190602001908083835b602083106110485780518252601f199092019160209182019101611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110ab5780518252601f19909201916020918201910161108c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110ea573d6000803e3d6000fd5b5050506040513d60208110156110ff57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014611174576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111d85781810151838201526020016111c0565b50505050905090810190601f1680156112055780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611238578181015183820152602001611220565b50505050905090810190601f1680156112655780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b602083106112be5780518252601f19909201916020918201910161129f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525190506008811180156113065750601c8111155b61134c576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b6040805160078082528183019092526060916020820181803883390190505090506113e3846040516020018082805190602001908083835b602083106113a35780518252601f199092019160209182019101611384565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007846000611f92565b5060408051663d9122aa24111d60c91b81529051908190036007019020815160208301201461144b576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b6114536146f3565b61145c85612a46565b9050611490611483604051806040016040528060018152602001601d60f91b815250612a46565b829063ffffffff612a6b16565b50806000015192506114ca6114bd604051806040016040528060018152602001607d60f81b815250612a46565b829063ffffffff612a8516565b508051600019840114611516576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b61151f81612ae3565b93505050505b919050565b6000611537826012612b33565b92915050565b611548600754611ed0565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b50505050505050565b60006115d9600654611ed0565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b505192915050565b80516116ac576040805160208082526010908201526f195b5c1d1e481d1bdad95b881b1a5cdd60821b8183015290516000805160206148658339815191529181900360600190a161197e565b4781516116d36040518060400160405280600381526020016215549360ea1b8152506133e4565b0211156117245760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b61172c6146f3565b61174d60405180606001604052806032815260200161479660329139612a46565b90506117576146f3565b61178c60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a57606060006117ba8684815181106117ad57fe5b6020026020010151610bc3565b5050509350505091508061180f576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b6118176146f3565b61182083612a46565b905060006118746040518060400160405280600381526020016215549360ea1b81525061186e8861186261185d878d61360f90919063ffffffff16565b612a46565b9063ffffffff61360f16565b8b613683565b905087858151811061188257fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe6118eb83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050600190920191506117919050565b5050505b5050565b600061198f600654611ed0565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b6001600160a01b038216611a2e576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50610752565b6107526001600160a01b038316848363ffffffff613a5016565b6060611a52613aa2565b9050805160001415611a9d57604080516020808252600990820152686e6f20746f6b656e7360b81b8183015290516000805160206148658339815191529181900360600190a161197e565b478151611ac46040518060400160405280600381526020016215549360ea1b8152506133e4565b021115611b155760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b611b1d6146f3565b611b3e60405180606001604052806032815260200161479660329139612a46565b9050611b486146f3565b611b7d60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a576060611b9c8583815181106117ad57fe5b5050505050509050611bac6146f3565b611bb582612a46565b90506000611bf86040518060400160405280600381526020016215549360ea1b815250611bf28761186261185d878c61360f90919063ffffffff16565b8a613683565b9050868481518110611c0657fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe611c6f83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611cb3578181015183820152602001611c9b565b50505050905090810190601f168015611ce05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050600101611b82565b6002546001600160a01b03161580611d235750600254611d21906001600160a01b0316611ec2565b155b15611d3457611d326000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50516001546001600160a01b03908116911614611e6157600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015611eae57600080fd5b505af115801561197a573d6000803e3d6000fd5b3b90565b6000611537613bb3565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d6020811015611f4757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561162e57600080fd5b6060600082850190508084511015611fa957600080fd5b60208087019084015b868860200101821015611fd357888201518682015260209182019101611fb2565b5093979650505050505050565b60008060006120766002876040518082805190602001908083835b6020831061201a5780518252601f199092019160209182019101611ffb565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612059573d6000803e3d6000fd5b5050506040513d602081101561206e57600080fd5b505186613f07565b925090508080156120985750835160208501206001600160a01b038381169116145b925050505b9392505050565b600080836040516020018082805190602001908083835b602083106120da5780518252601f1990920191602091820191016120bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461211857fe5b6121206146f3565b61212985612a46565b90506121336146f3565b612155604051806040016040528060018152602001601d60f91b815250612a46565b905061215f6146f3565b612181604051806040016040528060018152602001600160fd1b815250612a46565b905060006121a56121a061219b868563ffffffff612a6b16565b612ae3565b613f91565b90506000811180156121b75750602081105b6121f4576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061221161220c61219b878663ffffffff612a6b16565b613f9e565b60ff1690506000811180156122265750600d81105b612265576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b600061227d6121a061219b888763ffffffff612a6b16565b90506107e1811180156122915750610bb881105b6122cf576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b60006122e76121a061219b898963ffffffff612a6b16565b90506019811061232b576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b60006123436121a061219b8a8a63ffffffff612a6b16565b9050603c8110612389576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006123a16121a061219b8b8b63ffffffff612a6b16565b9050603c81106123e7576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b60008183606402856127100289620f424002896305f5e10002896402540be40002010101010190508c8111819b509b50505050505050505050505b9250929050565b60606000806000806000865190506060816040519080825280601f01601f191660200182016040528015612464576020820181803883390190505b50905060008083118015612479575060048306155b6124ca576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b60408051603d60f81b8152905190819003600101902089518a9060011986019081106124f257fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156125345760028303925061259a565b60408051603d60f81b8152905190819003600101902089518a90600019860190811061255c57fe5b01602090810151604080516001600160f81b03199092168284015280518083036001018152602190920190528051910120141561259a576001830392505b600319831660005b818110156127b8576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106125d457fe5b0160200151815160f89190911c9081106125ea57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061262157fe5b0160200151815160f89190911c90811061263757fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061266e57fe5b0160200151815160f89190911c90811061268457fe5b602001015160f81c60f81b96506040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106126bb57fe5b0160200151815160f89190911c9081106126d157fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061271057fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b03191691869190811061275b57fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061279c57fe5b60200101906001600160f81b031916908160001a9053506125a2565b818503600214156128b0576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106127ed57fe5b0160200151815160f89190911c90811061280357fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061283a57fe5b0160200151815160f89190911c90811061285057fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b1684848060010195508151811061289457fe5b60200101906001600160f81b031916908160001a905350612a37565b81850360031415612a37576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106128e557fe5b0160200151815160f89190911c9081106128fb57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061293257fe5b0160200151815160f89190911c90811061294857fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061297f57fe5b0160200151815160f89190911c90811061299557fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c161790921691869181106129d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110612a1f57fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b612a4e6146f3565b506040805180820190915281518152602082810190820152919050565b612a736146f3565b612a7e838383614242565b5092915050565b612a8d6146f3565b815183511015612a9e575081611537565b8151835160208086015190850151910191909103906001908214612acc575082516020840151819020908220145b8015612ada57835185510385525b50929392505050565b60608082600001516040519080825280601f01601f191660200182016040528015612b15576020820181803883390190505b5090506000602082019050612a7e81856020015186600001516142b3565b60008281808080808080808080805b8b51811015613175578b51600360fc1b908d9083908110612b5f57fe5b01602001516001600160f81b03191610801590612b9d57508b51603960f81b908d9083908110612b8b57fe5b01602001516001600160f81b03191611155b8015612ba7575083155b15612c57578415612c0557612bc38a600a63ffffffff6142f116565b9950612bf8603060f81b60f81c8d8381518110612bdc57fe5b01602001518c9160f89190911c0360ff1663ffffffff61434a16565b9950600190970196612c52565b60019550612c1a8b600a63ffffffff6142f116565b9a50612c4f603060f81b60f81c8d8381518110612c3357fe5b01602001518d9160f89190911c0360ff1663ffffffff61434a16565b9a505b61316d565b8b51600360fc1b908d9083908110612c6b57fe5b01602001516001600160f81b03191610801590612ca957508b51603960f81b908d9083908110612c9757fe5b01602001516001600160f81b03191611155b8015612cb25750835b15612d0457612cc889600a63ffffffff6142f116565b9850612cfd603060f81b60f81c8d8381518110612ce157fe5b01602001518b9160f89190911c0360ff1663ffffffff61434a16565b985061316d565b8b51601760f91b908d9083908110612d1857fe5b01602001516001600160f81b0319161415612e1f5785612d77576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415612dca576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315612e16576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b6001945061316d565b8b51602d60f81b908d9083908110612e3357fe5b01602001516001600160f81b0319161415612f29578215612e89576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612ec9576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612f20576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001925061316d565b8b51602b60f81b908d9083908110612f3d57fe5b01602001516001600160f81b0319161415613033578115612f93576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b8215612fd3576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461302a576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001915061316d565b8b51604560f81b908d908390811061304757fe5b01602001516001600160f81b031916148061308257508b51606560f81b908d908390811061307157fe5b01602001516001600160f81b031916145b1561313057856130d1576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315613124576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b6001935080965061316d565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101612b42565b828061317e5750815b156131975786600201811161319257600080fd5b6131ac565b83156131ac578660010181116131ac57600080fd5b821561322d578d891061322357604e8e8a0310613200576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161320e57fe5b049c506115379b505050505050505050505050565b888e039d50613240565b61323d8e8a63ffffffff61434a16565b9d505b878e1061331457604e88106132865760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b61329a8b600a8a900a63ffffffff6142f116565b9a506132ac8b8b63ffffffff61434a16565b9a50604e888f03106132f5576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b61330d888f03600a0a8c6142f190919063ffffffff16565b9a506133d1565b8d88039750604e88106133585760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b87600a0a8a8161336457fe5b049950604e8e106133a65760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b6133bc8e600a0a8c6142f190919063ffffffff16565b9a506133ce8b8b63ffffffff61434a16565b9a505b50989d9c50505050505050505050505050565b6002546000906001600160a01b03161580613411575060025461340f906001600160a01b0316611ec2565b155b15613422576134206000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b505050506040513d602081101561349c57600080fd5b50516001546001600160a01b0390811691161461354f57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d602081101561352d57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460405163524f388960e01b81526020600482018181528551602484015285516001600160a01b039094169363524f388993879383926044909201919085019080838360005b838110156135af578181015183820152602001613597565b50505050905090810190601f1680156135dc5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156135fb57600080fd5b505af1158015611642573d6000803e3d6000fd5b60608082600001518460000151016040519080825280601f01601f191660200182016040528015613647576020820181803883390190505b509050600060208201905061366581866020015187600001516142b3565b84516020850151855161367b92840191906142b3565b509392505050565b6002546000906001600160a01b031615806136b057506002546136ae906001600160a01b0316611ec2565b155b156136c1576136bf6000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561371157600080fd5b505af1158015613725573d6000803e3d6000fd5b505050506040513d602081101561373b57600080fd5b50516001546001600160a01b039081169116146137ee57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050506040513d60208110156137cc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460408051630bbceb3360e21b815260248101859052600481019182528651604482015286516000936001600160a01b031692632ef3accc928992889291829160649091019060208601908083838c5b83811015613858578181015183820152602001613840565b50505050905090810190601f1680156138855780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519050670de0b6b3a76400003a8402018111156138f157506000905061209d565b60015460405163c51be90f60e01b8152600060048201818152606483018790526080602484019081528951608485015289516001600160a01b039095169463c51be90f948794938c938c938c93604481019160a49091019060208801908083838c5b8381101561396b578181015183820152602001613953565b50505050905090810190601f1680156139985780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156139cb5781810151838201526020016139b3565b50505050905090810190601f1680156139f85780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b158015613a1a57600080fd5b505af1158015613a2e573d6000803e3d6000fd5b50505050506040513d6020811015613a4557600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107529084906143a4565b6060613aaf600754611ed0565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2457600080fd5b8101908080516040519392919084600160201b821115613b4357600080fd5b908301906020820185811115613b5857600080fd5b82518660208202830111600160201b82111715613b7457600080fd5b82525081516020918201928201910280838360005b83811015613ba1578181015183820152602001613b89565b50505050905001604052505050905090565b600080613bd3731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611ec2565b1115613c3257600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152613c2a90614562565b5060016106b5565b6000613c5173c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611ec2565b1115613ca957600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152613c2a90614562565b6000613cc873b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611ec2565b1115613d1d57600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152613c2a90614562565b6000613d3c73146500cfd35b22e4a392fe0adc06de1a1368ed48611ec2565b1115613d9357600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152613c2a90614562565b6000613db273a2998efd205fb9d4b4963afb70778d6354ad3a41611ec2565b1115613e0857600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152613c2a90614562565b6000613e27736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611ec2565b1115613e5b5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016106b5565b6000613e7a7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611ec2565b1115613eae5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016106b5565b6000613ecd7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611ec2565b1115613f015750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016106b5565b50600090565b60008060008060008551604114613f28575060009350839250612422915050565b50505060208301516040840151606085015160001a601b811015613f4a57601b015b8060ff16601b14158015613f6257508060ff16601c14155b15613f77575060009350839250612422915050565b613f8387828585614575565b945094505050509250929050565b6000611537826000612b33565b600080826040516020018082805190602001908083835b60208310613fd45780518252601f199092019160209182019101613fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506040518080622530b760e91b8152506003019050604051809103902081141561403e576001915050611525565b60408051622332b160e91b81529051908190036003019020811415614067576002915050611525565b604080516226b0b960e91b81529051908190036003019020811415614090576003915050611525565b604080516220b83960e91b815290519081900360030190208114156140b9576004915050611525565b60408051624d617960e81b815290519081900360030190208114156140e2576005915050611525565b6040805162253ab760e91b8152905190819003600301902081141561410b576006915050611525565b6040805162129d5b60ea1b81529051908190036003019020811415614134576007915050611525565b604080516241756760e81b8152905190819003600301902081141561415d576008915050611525565b604080516205365760ec1b81529051908190036003019020811415614186576009915050611525565b604080516213d8dd60ea1b815290519081900360030190208114156141af57600a915050611525565b60408051622737bb60e91b815290519081900360030190208114156141d857600b915050611525565b604080516244656360e81b8152905190819003600301902081141561420157600c915050611525565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b61424a6146f3565b600061426885600001518660200151866000015187602001516145b2565b6020808701805191860191909152805182038552865190519192500181141561429457600085526142aa565b8351835186519101900385528351810160208601525b50909392505050565b5b602081106142d3578151835260209283019290910190601f19016142b4565b905182516020929092036101000a6000190180199091169116179052565b60008261430057506000611537565b8282028284828161430d57fe5b041461209d5760405162461bcd60e51b81526004018080602001828103825260218152602001806148856021913960400191505060405180910390fd5b60008282018381101561209d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6143b6826001600160a01b031661466f565b614407576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106144455780518252601f199092019160209182019101614426565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146144a7576040519150601f19603f3d011682016040523d82523d6000602084013e6144ac565b606091505b509150915081614503576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561455c5780806020019051602081101561451f57600080fd5b505161455c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806148a6602a913960400191505060405180910390fd5b50505050565b805161197e90600390602084019061470d565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1905190999098509650505050505050565b6000838186851161466057602085116146255783518251600019600860208990030260020a011991821690888a018890039083165b82811461461757818610614605578a8a019650505050505050614667565b506001909401805190949083166145e7565b859650505050505050614667565b508383206000905b858803821161465e578583208181141561464d5783945050505050614667565b50600192830192919091019061462d565b505b5050508284015b949350505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146b65782800160ff198235161785556146e3565b828001600101855582156146e3579182015b828111156146e35782358255916020019190600101906146c8565b506146ef92915061477b565b5090565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061474e57805160ff19168380011785556146e3565b828001600101855582156146e3579182015b828111156146e3578251825591602001919060010190614760565b6106b591905b808211156146ef576000815560010161478156fe68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d6d6f7265207468616e20373720646563696d616c2064696769747320706172736564000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334eb5629fd8501532aeb93b1b6a5b5b2ae398561e56514ed4b4b0c5ac2d381b6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158208486b396d2654ffb4d4b2185efc5120b1ea711758549921ac022c6ac0afa157d64736f6c63430005110032","srcmap":"1226:15469:29:-;;;1122:66:22;1272:58;;3211:560:29;5:2:-1;;;;30:1;27;20:12;5:2;3211:560:29;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3211:560:29;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3211:560:29;;;;;;1665:30:22;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1341:19:27;:42;3460:161:29;;;;;;;;;;;;;;;;;;;;;:25;;:161;;;;;;:::i;:::-;-1:-1:-1;3631:3:29;:39;;-1:-1:-1;;;;;;3631:39:29;-1:-1:-1;;;;;3631:39:29;;;;;3680;3707:11;3680:26;:39::i;:::-;3729:35;-1:-1:-1;;;;;;;;3729:17:29;:35;:::i;:::-;3211:560;;;;1226:15469;;37465:134:19;11822:3;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;-1:-1:-1;;;;;11846:11:19;:25;:::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;-1:-1:-1;;;;;11893:19:19;:35;:::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;37555:8;;:37;;;-1:-1:-1;;;37555:37:19;;;;;;;;;;-1:-1:-1;;;;;37555:8:19;;;;:26;;:37;;;;;:8;;:37;;;;;;;;:8;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;37555:37:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37555:37:19;;;;37465:134;:::o;37053:116::-;11822:3;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;-1:-1:-1;;;;;11846:11:19;:25;:::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;-1:-1:-1;;;;;11893:19:19;:35;:::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;37132:8;;:30;;;-1:-1:-1;;;37132:30:19;;;;;;;;;;;-1:-1:-1;;;;;37132:8:19;;;;:21;;:30;;;;;:8;;:30;;;;;;;;:8;;:30;;;5:2:-1;;;;30:1;27;20:12;37312:147:19;37425:18;;37402:51::o;12546:205::-;12611:16;12723:21;-1:-1:-1;;;;;12723:19:19;:21;:::i;:::-;12716:28;12546:205;-1:-1:-1;;12546:205:19:o;13025:2047::-;13074:16;;13106:55;13118:42;-1:-1:-1;;;;;13106:11:19;:55;:::i;:::-;:59;13102:248;;;13191:3;:71;;-1:-1:-1;;;;;;13191:71:19;13219:42;13191:71;;;13276:38;;;;;;;;;;;;-1:-1:-1;;;13276:38:19;;;;;;-1:-1:-1;;;;;13276:23:19;:38;:::i;:::-;-1:-1:-1;13335:4:19;13328:11;;13102:248;13421:1;13363:55;13375:42;-1:-1:-1;;;;;13363:11:19;:55;:::i;:::-;:59;13359:257;;;13456:3;:71;;-1:-1:-1;;;;;;13456:71:19;13484:42;13456:71;;;13541:39;;;;;;;;;;;;-1:-1:-1;;;13541:39:19;;;;;;-1:-1:-1;;;;;13541:23:19;:39;:::i;13359:257::-;13687:1;13629:55;13641:42;-1:-1:-1;;;;;13629:11:19;:55;:::i;:::-;:59;13625:252;;;13720:3;:71;;-1:-1:-1;;;;;;13720:71:19;13748:42;13720:71;;;13805:36;;;;;;;;;;;;-1:-1:-1;;;13805:36:19;;;;;;-1:-1:-1;;;;;13805:23:19;:36;:::i;13625:252::-;13948:1;13890:55;13902:42;-1:-1:-1;;;;;13890:11:19;:55;:::i;:::-;:59;13886:256;;;13983:3;:71;;-1:-1:-1;;;;;;13983:71:19;14011:42;13983:71;;;14068:38;;;;;;;;;;;;-1:-1:-1;;;14068:38:19;;;;;;-1:-1:-1;;;;;14068:23:19;:38;:::i;13886:256::-;14213:1;14155:55;14167:42;-1:-1:-1;;;;;14155:11:19;:55;:::i;:::-;:59;14151:254;;;14247:3;:71;;-1:-1:-1;;;;;;14247:71:19;14275:42;14247:71;;;14332:37;;;;;;;;;;;;-1:-1:-1;;;14332:37:19;;;;;;-1:-1:-1;;;;;14332:23:19;:37;:::i;14151:254::-;14476:1;14418:55;14430:42;-1:-1:-1;;;;;14418:11:19;:55;:::i;:::-;:59;14414:204;;;-1:-1:-1;14511:3:19;:71;;-1:-1:-1;;;;;;14511:71:19;14539:42;14511:71;;;;14596:11;;14414:204;14689:1;14631:55;14643:42;-1:-1:-1;;;;;14631:11:19;:55;:::i;:::-;:59;14627:203;;;-1:-1:-1;14723:3:19;:71;;-1:-1:-1;;;;;;14723:71:19;14751:42;14723:71;;;;14808:11;;14627:203;14901:1;14843:55;14855:42;-1:-1:-1;;;;;14843:11:19;:55;:::i;:::-;:59;14839:205;;;-1:-1:-1;14937:3:19;:71;;-1:-1:-1;;;;;;14937:71:19;14965:42;14937:71;;;;15022:11;;14839:205;-1:-1:-1;15060:5:19;13025:2047;;:::o;12757:125::-;12838:37;;;;:21;;:37;;;;;:::i;:::-;;12757:125;:::o;1226:15469:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1226:15469:29;;;-1:-1:-1;1226:15469:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;","srcmap-runtime":"1226:15469:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5655:1150;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5655:1150:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5655:1150:29;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;5655:1150:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5655:1150:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5655:1150:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5655:1150:29;;;;;;;;-1:-1:-1;5655:1150:29;;-1:-1:-1;;;;;5:28;;2:2;;;46:1;43;36:12;2:2;5655:1150:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;5655:1150:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;5655:1150:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5655:1150:29;;-1:-1:-1;5655:1150:29;;-1:-1:-1;;;;;5655:1150:29:i;:::-;;2728:38;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2728:38:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2728:38:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:91:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;1514:105:27;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:27;;;:::i;:::-;;;;;;;;;;;;;;;;4925:173:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;4925:173:29;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;4925:173:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4925:173:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;4925:173:29;;-1:-1:-1;4925:173:29;-1:-1:-1;4925:173:29;:::i;5186:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5186:184:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;5186:184:29;;;;;;;;;;;;;;;;;:::i;4556:122::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4556:122:29;;:::i;3896:206::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:206:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3896:206:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;3896:206:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;3896:206:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;3896:206:29;;-1:-1:-1;3896:206:29;-1:-1:-1;3896:206:29;:::i;4212:173::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4212:173:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4212:173:29;;:::i;2169:95:22:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:22;;;:::i;5655:1150:29:-;5837:20;:18;:20::i;:::-;-1:-1:-1;;;;;5823:34:29;:10;-1:-1:-1;;;;;5823:34:29;;5815:69;;;;;-1:-1:-1;;;5815:69:29;;;;;;;;;;;;-1:-1:-1;;;5815:69:29;;;;;;;;;;;;;;;5958:13;5974:23;;;:13;:23;;;;;;-1:-1:-1;;;;;5974:23:29;;5958:13;6103:20;5974:23;6103:13;:20::i;:::-;6054:69;;;;;;;;;6141:9;6133:45;;;;;-1:-1:-1;;;6133:45:29;;;;;;;;;;;;-1:-1:-1;;;6133:45:29;;;;;;;;;;;;;;;6287:25;6257:68;;;;;;;;-1:-1:-1;;6257:68:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6189:10;;;;6257:68;;6270:7;;6279:6;;6257:68;;6287:25;;6257:68;;6287:25;6257:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6314:10;6257:12;:68::i;:::-;6236:89;;-1:-1:-1;6236:89:29;-1:-1:-1;6380:419:29;;;;6466:18;6487:42;6510:18;6520:7;6510:9;:18::i;:::-;6487:22;:42::i;:::-;6597:24;6697:23;;;:13;:23;;;;;6690:30;;-1:-1:-1;;;;;;6690:30:29;;;6466:63;-1:-1:-1;6624:9:29;6735:53;6752:5;6466:63;6624:9;6735:16;:53::i;:::-;6380:419;;;5655:1150;;;;;;;;:::o;2728:38::-;;;;;;;;;;;;;;;-1:-1:-1;;2728:38:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;;:::o;1514:105:27:-;1593:19;;1514:105;:::o;4925:173:29:-;1870:25:22;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;;;;5047:44:29;5069:9;5080:10;;5047:44;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;5047:21:29;;-1:-1:-1;;;5047:44:29:i;:::-;4925:173;;;:::o;5186:184::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;5284:35:29;5298:3;5303:6;5311:7;5284:13;:35::i;:::-;5334:29;;;-1:-1:-1;;;;;5334:29:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;5186:184;;;:::o;4556:122::-;1870:25:22;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;;;;4643:28:29;4661:9;4643:17;:28::i;:::-;4556:122;:::o;3896:206::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;3993:38:29;:25;4021:10;;3993:38;:::i;:::-;-1:-1:-1;4046:49:29;;;4072:10;4046:49;;;;;;;;;;;;;;;;;4072:10;;4084;;;;4046:49;;;;4084:10;;;;4046:49;1:33:-1;99:1;81:16;;;74:27;4046:49:29;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;4046:49:29;;;;-1:-1:-1;4046:49:29;;-1:-1:-1;;;;;4046:49:29;3896:206;;:::o;4212:173::-;1870:25:22;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;-1:-1:-1;;;1862:64:22;;;;;;;;;;;;;;;4292:37:29;4319:9;4292:26;:37::i;:::-;4344:34;;;4356:10;4344:34;;;;;;;;;;;;;;;;;;;;;4212:173;:::o;2169:95:22:-;2242:15;;2169:95;:::o;37176:130:19:-;11822:3;;37236:24;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;11846:11;:25::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;11893:19;:35::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;37279:8;;;;;;;;;-1:-1:-1;;;;;37279:8:19;-1:-1:-1;;;;;37279:18:19;;:20;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;37279:20:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;37279:20:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;37279:20:19;;-1:-1:-1;37176:130:19;:::o;2171:208:27:-;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:27;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:27;-1:-1:-1;;;;;2306:66:27;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:27;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:27;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:27;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:27;;420:4:-1;411:14;;;;2306:66:27;;;;;411:14:-1;2306:66:27;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:27;;-1:-1:-1;2306:66:27;;-1:-1:-1;2306:66:27;-1:-1:-1;2306:66:27;-1:-1:-1;2306:66:27;-1:-1:-1;2306:66:27;;-1:-1:-1;;;2171:208:27;;;;;;;;;:::o;12047:2267:29:-;12176:4;12182:7;1988:3;12246:6;:13;:27;12242:88;;12289:30;;;-1:-1:-1;;;12289:30:29;;;;;;;;;;;;-1:-1:-1;;;12289:30:29;;;;;;;;;;;;;;12242:88;2039:2;12441:6;12448:1;12441:9;;;;;;;;;;;;;;12427:43;12423:108;;12486:34;;;-1:-1:-1;;;12486:34:29;;;;;;;;;;;;;;;;;;;;;;;;;;;12423:108;12566:25;;;2039:2;12566:25;;;;;;;;;12541:22;;12566:25;;;21:6:-1;;104:10;12566:25:29;87:34:-1;135:17;;-1:-1;12566:25:29;12541:50;;12614;12624:6;12632:1;2039:2;12651:9;12662:1;12614:9;:50::i;:::-;12852:44;;12602:62;;-1:-1:-1;2137:49:29;;12852:6;;12859:36;;12852:44;;;;;;;;;;12776:40;;12852:44;;;;;;2568:3;;12776:6;;12783:32;;12776:40;;;;;;;;;;;;12762:73;:136;:164;12745:249;;12951:32;;;-1:-1:-1;;;12951:32:29;;;;;;;;;;;;-1:-1:-1;;;12951:32:29;;;;;;;;;;;;;;12745:249;13027:23;;;13004:20;13027:23;;;;;;;;;13004:20;13027:23;;;21:6:-1;;104:10;13027:23:29;87:34:-1;135:17;;-1:-1;;13004:46:29;-1:-1:-1;13070:81:29;13080:6;13088:36;2137:49;13004:46;13149:1;13070:9;:81::i;:::-;13060:91;;13249:48;13266:7;13275:9;13286:10;13249:16;:48::i;:::-;13244:107;;13313:27;;;-1:-1:-1;;;13313:27:29;;;;;;;;;;;;-1:-1:-1;;;13313:27:29;;;;;;;;;;;;;;13244:107;13426:13;;;13436:2;13426:13;;;;;;;;;13400:23;;13426:13;;;21:6:-1;;104:10;13426:13:29;87:34:-1;135:17;;-1:-1;13426:13:29;13400:39;;13532:41;13542:7;13551:2;13555;13559:10;13571:1;13532:9;:41::i;:::-;13519:54;;13584:14;13608:17;13660:44;13679:10;13692:11;13660;:44::i;:::-;13635:69;;-1:-1:-1;13635:69:29;-1:-1:-1;13635:69:29;13774:63;;13804:22;;;-1:-1:-1;;;13804:22:29;;;;;;;;;;;;-1:-1:-1;;;13804:22:29;;;;;;;;;;;;;;13774:63;13937:29;;;2292:2;13937:29;;;13915:19;13937:29;;;;;;;;;21:6:-1;;104:10;13937:29:29;87:34:-1;135:17;;-1:-1;;13915:51:29;-1:-1:-1;13985:65:29;13995:7;2419:33;2292:2;13915:51;14048:1;13985:9;:65::i;:::-;13976:74;;14141:21;14155:6;14141:13;:21::i;:::-;14131:32;;;;;;14092:33;14116:7;14099:25;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;14099:25:29;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;14099:25:29;;;14092:33;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14092::29;;;;;;;-1:-1:-1;263:2;;-1:-1;;14092:33:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14092:33:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14092:33:29;14075:51;;;14092:33;14075:51;;;;;;;;;26:21:-1;;;22:32;;6:49;;14075:51:29;;;;;;14065:62;;;;;:98;14061:163;;14179:34;;;-1:-1:-1;;;14179:34:29;;;;;;;;;;;;;;;;;;;;;;;;;;;14061:163;14239:34;14253:10;14265:7;14239:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14239:34:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14239:34:29;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14239:34:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14291:4:29;;14297:9;;-1:-1:-1;12047:2267:29;-1:-1:-1;;;;;;;;;12047:2267:29:o;6953:876::-;7016:13;7041:15;7076:5;7059:23;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7059:23:29;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7059:23:29;;;:30;7041:48;;7191:1;7181:7;:11;:28;;;;;7207:2;7196:7;:13;;7181:28;7173:59;;;;;-1:-1:-1;;;7173:59:29;;;;;;;;;;;;-1:-1:-1;;;7173:59:29;;;;;;;;;;;;;;;7269:12;;;7279:1;7269:12;;;;;;;;;7243:23;;7269:12;;;21:6:-1;;104:10;7269:12:29;87:34:-1;135:17;;-1:-1;7269:12:29;7243:38;;7291:55;7318:5;7301:23;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7301:23:29;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7301:23:29;;;7326:1;7329;7332:10;7344:1;7291:9;:55::i;:::-;-1:-1:-1;2701:20:29;;;-1:-1:-1;;;2701:20:29;;;;;;;;;;;;7364:21;;;;;;:37;7356:65;;;;;-1:-1:-1;;;7356:65:29;;;;;;;;;;;;-1:-1:-1;;;7356:65:29;;;;;;;;;;;;;;;7432:25;;:::i;:::-;7460:15;:5;:13;:15::i;:::-;7432:43;;7485:25;7496:13;:11;;;;;;;;;;;;;-1:-1:-1;;;7496:11:29;;;;:13::i;:::-;7485:4;;:25;:10;:25;:::i;:::-;;7619:4;:9;;;7609:19;;7638:25;7649:13;:11;;;;;;;;;;;;;-1:-1:-1;;;7649:11:29;;;;:13::i;:::-;7638:4;;:25;:10;:25;:::i;:::-;-1:-1:-1;7681:9:29;;-1:-1:-1;;7694:11:29;;7681:24;7673:52;;;;;-1:-1:-1;;;7673:52:29;;;;;;;;;;;;-1:-1:-1;;;7673:52:29;;;;;;;;;;;;;;;7807:15;:4;:13;:15::i;:::-;7800:22;;;;;6953:876;;;;:::o;1985:147:26:-;2065:7;2091:34;2111:9;2122:2;2091:19;:34::i;:::-;2084:41;1985:147;-1:-1:-1;;1985:147:26:o;3950:197:27:-;4063:32;4075:19;;4063:11;:32::i;:::-;-1:-1:-1;;;;;4047:65:27;;4113:6;4121:5;4128:11;4047:93;;;;;;;;;;;;;-1:-1:-1;;;;;4047:93:27;-1:-1:-1;;;;;4047:93:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4047:93:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4047:93:27;;;;3950:197;;;:::o;2332:158:22:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;-1:-1:-1;;;;;2419:54:22;;2474:8;2419:64;;;;;;;;;;;;;-1:-1:-1;;;;;2419:64:22;-1:-1:-1;;;;;2419:64:22;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:64:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:22;;2332:158;-1:-1:-1;;2332:158:22:o;9942:1778:29:-;10094:17;;10090:1624;;10180:39;;;;;;;;;;;;-1:-1:-1;;;10180:39:29;;;;;;-1:-1:-1;;;;;;;;;;;10180:39:29;;;;;;;;10090:1624;;;10363:21;10343:10;:17;10316:24;;;;;;;;;;;;;;-1:-1:-1;;;10316:24:29;;;:17;:24::i;:::-;:44;:68;10312:1402;;;10448:43;;;;;;;;;;;;-1:-1:-1;;;10448:43:29;;;;;;-1:-1:-1;;;;;;;;;;;10448:43:29;;;;;;;;10312:1402;;;10581:30;;:::i;:::-;10614:62;:60;;;;;;;;;;;;;;;;;;:62::i;:::-;10581:95;;10690:30;;:::i;:::-;10723:32;:30;;;;;;;;;;;;;-1:-1:-1;;;10723:30:29;;;;:32::i;:::-;10690:65;-1:-1:-1;10844:9:29;10839:865;10863:10;:17;10859:1;:21;10839:865;;;10963:25;10994:14;11018:28;11032:10;11043:1;11032:13;;;;;;;;;;;;;;11018;:28::i;:::-;10962:84;;;;;;;;;11072:9;11064:45;;;;;-1:-1:-1;;;11064:45:29;;;;;;;;;;;;-1:-1:-1;;;11064:45:29;;;;;;;;;;;;;;;11188:27;;:::i;:::-;11218:21;:11;:19;:21::i;:::-;11188:51;;11332:15;11350:86;;;;;;;;;;;;;;-1:-1:-1;;;11350:86:29;;;11372:52;11414:9;11372:34;:24;11389:6;11372:9;:16;;:24;;;;:::i;:::-;:32;:34::i;:::-;:41;:52;:41;:52;:::i;:::-;11426:9;11350:14;:86::i;:::-;11332:104;;11561:10;11572:1;11561:13;;;;;;;;;;;;;;11536;:22;11550:7;11536:22;;;;;;;;;;;;:38;;;;;-1:-1:-1;;;;;11536:38:29;;;;;-1:-1:-1;;;;;11536:38:29;;;;;;11646:43;11662:17;:6;:15;:17::i;:::-;11681:7;11646:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11646:43:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10882:3:29;;;;;-1:-1:-1;10839:865:29;;-1:-1:-1;10839:865:29;;;10312:1402;;;9942:1778;;:::o;2554:148:22:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:22;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:22;-1:-1:-1;;;;;2636:59:22;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;1366:289:28;-1:-1:-1;;;;;1510:20:28;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:28;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:28;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:28;;1625:3;1630:7;1598:40;:26;:40;:::i;8000:1670:29:-;8064:31;8098:20;:18;:20::i;:::-;8064:54;;8183:14;:21;8208:1;8183:26;8179:1485;;;8273:32;;;;;;;;;;;;-1:-1:-1;;;8273:32:29;;;;;;-1:-1:-1;;;;;;;;;;;8273:32:29;;;;;;;;8179:1485;;;8453:21;8429:14;:21;8402:24;;;;;;;;;;;;;;-1:-1:-1;;;8402:24:29;;;:17;:24::i;:::-;:48;:72;8398:1266;;;8538:43;;;;;;;;;;;;-1:-1:-1;;;8538:43:29;;;;;;-1:-1:-1;;;;;;;;;;;8538:43:29;;;;;;;;8398:1266;;;8671:30;;:::i;:::-;8704:62;:60;;;;;;;;;;;;;;;;;;:62::i;:::-;8671:95;;8780:30;;:::i;:::-;8813:32;:30;;;;;;;;;;;;;-1:-1:-1;;;8813:30:29;;;;:32::i;:::-;8780:65;-1:-1:-1;8934:9:29;8929:725;8953:14;:21;8949:1;:25;8929:725;;;9061:20;9097:32;9111:14;9126:1;9111:17;;;;;;;9097:32;9060:69;;;;;;;;9148:24;;:::i;:::-;9175:16;:6;:14;:16::i;:::-;9148:43;;9284:15;9302:83;;;;;;;;;;;;;;-1:-1:-1;;;9302:83:29;;;9324:49;9363:9;9324:31;:21;9341:3;9324:9;:16;;:21;;;;:::i;:49::-;9375:9;9302:14;:83::i;:::-;9284:101;;9510:14;9525:1;9510:17;;;;;;;;;;;;;;9485:13;:22;9499:7;9485:22;;;;;;;;;;;;:42;;;;;-1:-1:-1;;;;;9485:42:29;;;;;-1:-1:-1;;;;;9485:42:29;;;;;;9599:40;9615:14;:3;:12;:14::i;:::-;9631:7;9599:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;9599:40:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8976:3:29;;8929:725;;37465:134:19;11822:3;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;11846:11;:25::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;11893:19;:35::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;37555:8;;:37;;;-1:-1:-1;;;37555:37:19;;;;;;;;;;-1:-1:-1;;;;;37555:8:19;;;;:26;;:37;;;;;:8;;:37;;;;;;;;:8;;:37;;;5:2:-1;;;;30:1;27;20:12;5:2;37555:37:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;37312:147:19;37425:18;;37402:51::o;12546:205::-;12611:16;12723:21;:19;:21::i;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;54300:693:19;54428:25;54465:14;54492:9;54482:7;:19;54465:36;;54533:9;54519:3;:10;:23;;54511:32;;;;;;54607:2;:16;;;;54723:14;;54747:220;54778:7;54764:11;54759:2;:16;:26;54754:1;:32;54747:220;;;54846:13;;;54840:20;54884:11;;;54877:24;54933:2;54928:7;;;;54949;54747:220;;;-1:-1:-1;54983:3:19;;54300:693;-1:-1:-1;;;;;;;54300:693:19:o;14571:411:29:-;14687:4;14703:14;14727:16;14845:40;14856:16;14863:8;14856:16;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;299:10;344;;263:2;259:12;;;254:3;250:22;-1:-1;;246:30;311:9;;295:26;;;340:21;;377:20;365:33;;14856:16:29;;;;;;;-1:-1:-1;263:2;;-1:-1;;14856:16:29;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;14856:16:29;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14856:16:29;14874:10;14845;:40::i;:::-;14821:64;-1:-1:-1;14821:64:29;-1:-1:-1;14821:64:29;14902:73;;;;-1:-1:-1;14951:21:29;;;;;;-1:-1:-1;;;;;14917:58:29;;;;;;14902:73;14895:80;;;;14571:411;;;;;;:::o;15212:1481::-;15303:4;15309:7;15434:11;15417:29;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;15417:29:29;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;15417:29:29;;;:36;15457:2;15417:42;15410:50;;;;15540:25;;:::i;:::-;15568:21;:11;:19;:21::i;:::-;15540:49;;15599:34;;:::i;:::-;15636:13;:11;;;;;;;;;;;;;-1:-1:-1;;;15636:11:29;;;;:13::i;:::-;15599:50;;15659:34;;:::i;:::-;15696:13;:11;;;;;;;;;;;;;-1:-1:-1;;;15696:11:29;;;;:13::i;:::-;15659:50;-1:-1:-1;15720:11:29;15734:57;15754:36;:25;:4;15659:50;15754:25;:10;:25;:::i;:::-;:34;:36::i;:::-;15734:19;:57::i;:::-;15720:71;;15815:1;15809:3;:7;:19;;;;;15826:2;15820:3;:8;15809:19;15801:41;;;;;-1:-1:-1;;;15801:41:29;;;;;;;;;;;;-1:-1:-1;;;15801:41:29;;;;;;;;;;;;;;;15853:13;15869:52;15884:36;:25;:4;15895:13;15884:25;:10;:25;:::i;:36::-;15869:14;:52::i;:::-;15853:68;;;;15947:1;15939:5;:9;:23;;;;;15960:2;15952:5;:10;15939:23;15931:47;;;;;-1:-1:-1;;;15931:47:29;;;;;;;;;;;;-1:-1:-1;;;15931:47:29;;;;;;;;;;;;;;;15989:12;16004:57;16024:36;:25;:4;16035:13;16024:25;:10;:25;:::i;16004:57::-;15989:72;;16086:4;16079;:11;:26;;;;;16101:4;16094;:11;16079:26;16071:49;;;;;-1:-1:-1;;;16071:49:29;;;;;;;;;;;;-1:-1:-1;;;16071:49:29;;;;;;;;;;;;;;;16131:12;16146:57;16166:36;:25;:4;16177:13;16166:25;:10;:25;:::i;16146:57::-;16131:72;;16228:2;16221:4;:9;16213:32;;;;;-1:-1:-1;;;16213:32:29;;;;;;;;;;;;-1:-1:-1;;;16213:32:29;;;;;;;;;;;;;;;16256:14;16273:57;16293:36;:25;:4;16304:13;16293:25;:10;:25;:::i;16273:57::-;16256:74;;16357:2;16348:6;:11;16340:36;;;;;-1:-1:-1;;;16340:36:29;;;;;;;;;;;;-1:-1:-1;;;16340:36:29;;;;;;;;;;;;;;;16387:14;16404:57;16424:36;:25;:4;16435:13;16424:25;:10;:25;:::i;16404:57::-;16387:74;;16488:2;16479:6;:11;16471:36;;;;;-1:-1:-1;;;16471:36:29;;;;;;;;;;;;-1:-1:-1;;;16471:36:29;;;;;;;;;;;;;;;16518:17;16626:6;16607;16617:5;16607:16;16590:4;16598:5;16590:14;16574:3;16581:5;16574:13;16556:5;16565;16556:15;16538:4;16546:6;16538:15;:33;:49;:66;:85;:94;16518:114;;16663:11;16651:9;:23;16676:9;16643:43;;;;;;;;;;;;;;15212:1481;;;;;;:::o;676:1848:5:-;745:12;769:7;786;803;820;837:11;851:8;:15;837:29;;876:19;908:6;898:17;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;898:17:5;87:34:-1;135:17;;-1:-1;898:17:5;;876:39;;925:10;1046:1;1037:6;:10;:30;;;;-1:-1:-1;1061:1:5;1052:6;:10;:15;1037:30;1029:66;;;;;-1:-1:-1;;;1029:66:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;1163:14;;;-1:-1:-1;;;1163:14:5;;;;;;;;;;;;1137:20;;:8;;-1:-1:-1;;1146:10:5;;;1137:20;;;;;;;;;;;;1120:38;;;-1:-1:-1;;;;;;1137:20:5;;;1120:38;;;;;;26:21:-1;;;1120:38:5;22:32:-1;6:49;;1120:38:5;;;;;;1110:49;;;;;:67;1106:224;;;1203:1;1193:11;;;;1106:224;;;1278:14;;;-1:-1:-1;;;1278:14:5;;;;;;;;;;;;1252:20;;:8;;-1:-1:-1;;1261:10:5;;;1252:20;;;;;;;;;;;;1235:38;;;-1:-1:-1;;;;;;1252:20:5;;;1235:38;;;;;;26:21:-1;;;1235:38:5;22:32:-1;6:49;;1235:38:5;;;;;;1225:49;;;;;:67;1221:109;;;1318:1;1308:11;;;;1221:109;-1:-1:-1;;1353:16:5;;1340:10;1396:441;1412:5;1408:1;:9;1396:441;;;1439:18;;;;;;;;;;;;;;;;;1464:13;;1473:3;;;;1464:8;;:13;;;;;;;;;;1439:40;;1464:13;;;;;;1439:40;;;;;;;;;;;;;;1434:45;;1498:18;;;;;;;;;;;;;;;;;1523:13;;1532:3;;;;1523:8;;:13;;;;;;;;;;1498:40;;1523:13;;;;;;1498:40;;;;;;;;;;;;;;1493:45;;1557:18;;;;;;;;;;;;;;;;;1582:13;;1591:3;;;;1582:8;;:13;;;;;;;;;;1557:40;;1582:13;;;;;;1557:40;;;;;;;;;;;;;;1552:45;;1616:18;;;;;;;;;;;;;;;;;1641:13;;1650:3;;;;1641:8;;:13;;;;;;;;;;1616:40;;1641:13;;;;;;1616:40;;;;;;;;;;1671:15;;-1:-1:-1;;;;;;1616:40:5;;;;-1:-1:-1;1678:7:5;;;;-1:-1:-1;;;1696:1:5;1690:7;;;;-1:-1:-1;;;1706:1:5;1700:7;;;;1690:17;1689:26;;;;1671:6;;:15;;;;;;;;;:44;-1:-1:-1;;;;;1671:44:5;;;;;;;;-1:-1:-1;1729:15:5;;1736:7;;;;-1:-1:-1;;;1754:1:5;1748:7;;;;-1:-1:-1;;;1764:1:5;1758:7;;;;1748:17;-1:-1:-1;;;;;;1747:26:5;;1729:6;;1736:7;1729:15;;;;;;;;;:44;-1:-1:-1;;;;;1729:44:5;;;;;;;;-1:-1:-1;1787:15:5;;1794:7;;;;-1:-1:-1;;;1812:1:5;1806:7;;;;:12;;-1:-1:-1;;;;;;1805:21:5;;1787:6;;1794:7;1787:15;;;;;;;;;:39;-1:-1:-1;;;;;1787:39:5;;;;;;;;;1396:441;;;1860:5;1851:6;:14;1869:1;1851:19;1847:549;;;1891:18;;;;;;;;;;;;;;;;;1916:13;;1925:3;;;;1916:8;;:13;;;;;;;;;;1891:40;;1916:13;;;;;;1891:40;;;;;;;;;;;;;;1886:45;;1950:18;;;;;;;;;;;;;;;;;1975:13;;1984:3;;;;1975:8;;:13;;;;;;;;;;1950:40;;1975:13;;;;;;1950:40;;;;;;;;;;;;;;1945:45;;2040:1;2034:2;-1:-1:-1;;;;;2034:7:5;;;;2030:1;2024:2;-1:-1:-1;;;;;2024:7:5;;;;:17;2045:4;2023:26;;;2005:6;2012:7;;;;;;2005:15;;;;;;;;;;;:44;-1:-1:-1;;;;;2005:44:5;;;;;;;;;1847:549;;;2079:5;2070:6;:14;2088:1;2070:19;2066:330;;;2110:18;;;;;;;;;;;;;;;;;2135:13;;2144:3;;;;2135:8;;:13;;;;;;;;;;2110:40;;2135:13;;;;;;2110:40;;;;;;;;;;;;;;2105:45;;2169:18;;;;;;;;;;;;;;;;;2194:13;;2203:3;;;;2194:8;;:13;;;;;;;;;;2169:40;;2194:13;;;;;;2169:40;;;;;;;;;;;;;;2164:45;;2228:18;;;;;;;;;;;;;;;;;2253:13;;2262:3;;;;2253:8;;:13;;;;;;;;;;2228:40;;2253:13;;;;;;2228:40;;;;;;;;;;2283:15;;-1:-1:-1;;;;;;2228:40:5;;;;-1:-1:-1;2290:7:5;;;;-1:-1:-1;;;2308:1:5;2302:7;;;;-1:-1:-1;;;2318:1:5;2312:7;;;;2302:17;2301:26;;;;2283:6;;:15;;;;;;;;;:44;-1:-1:-1;;;;;2283:44:5;;;;;;;;-1:-1:-1;2341:15:5;;2348:7;;;;-1:-1:-1;;;2366:1:5;2360:7;;;;-1:-1:-1;;;2376:1:5;2370:7;;;;2360:17;-1:-1:-1;;;;;;2359:26:5;;2341:6;;2348:7;2341:15;;;;;;;;;:44;-1:-1:-1;;;;;2341:44:5;;;;;;;;;2066:330;-1:-1:-1;;2463:21:5;;;676:1848;-1:-1:-1;;;;;;;676:1848:5:o;3433:210:20:-;3493:12;;:::i;:::-;-1:-1:-1;3606:30:20;;;;;;;;;3612:18;;3606:30;;3575:4;3565:15;;;3606:30;;;;3433:210;;;:::o;21523:141::-;21601:18;;:::i;:::-;21631:26;21637:4;21643:6;21651:5;21631;:26::i;:::-;;21523:141;;;;:::o;15171:626::-;15249:12;;:::i;:::-;15289:11;;15277:9;;:23;15273:65;;;-1:-1:-1;15323:4:20;15316:11;;15273:65;15387:11;;15375:9;;15363;;;;;15450:11;;;;15363:21;;:35;;;;;15421:4;;15439:22;;15435:264;;-1:-1:-1;15518:13:20;;15583:4;15571:17;;15565:24;15646:28;;;15618:26;;;15615:60;15486:203;15713:5;15709:60;;;15747:11;;15734:24;;;;;15709:60;-1:-1:-1;15786:4:20;;15171:626;-1:-1:-1;;;15171:626:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;2339:6150:26:-;2440:7;2488:9;2440:7;;;;;;;;;;;3330:2783;3346:7;:14;3342:1;:18;3330:2783;;;3386:10;;-1:-1:-1;;;1308:17:26;3386:7;;3394:1;;3386:10;;;;;;;;;;-1:-1:-1;;;;;;3386:10:26;:25;;;;3385:58;;-1:-1:-1;3417:10:26;;-1:-1:-1;;;1392:17:26;3417:7;;3425:1;;3417:10;;;;;;;;;;-1:-1:-1;;;;;;3417:10:26;:25;;3385:58;:68;;;;;3449:3;3448:4;3385:68;3381:2722;;;3554:8;3550:625;;;3700:15;:7;3712:2;3700:15;:11;:15;:::i;:::-;3690:25;;3747:51;1321:2;1308:17;;3779:18;;3765:7;3773:1;3765:10;;;;;;;;;;;;3747:7;;3765:10;;;;;3759:38;:17;3747:51;;:11;:51;:::i;:::-;3737:61;-1:-1:-1;3820:11:26;;;;;3550:625;;;3969:4;;-1:-1:-1;4067:12:26;:4;4076:2;4067:12;:8;:12;:::i;:::-;4060:19;;4108:48;1321:2;1308:17;;4137:18;;4123:7;4131:1;4123:10;;;;;;;;;;;;4108:4;;4123:10;;;;;4117:38;:17;4108:48;;:8;:48;:::i;:::-;4101:55;;3550:625;3381:2722;;;4200:10;;-1:-1:-1;;;1308:17:26;4200:7;;4208:1;;4200:10;;;;;;;;;;-1:-1:-1;;;;;;4200:10:26;:25;;;;4199:58;;-1:-1:-1;4231:10:26;;-1:-1:-1;;;1392:17:26;4231:7;;4239:1;;4231:10;;;;;;;;;;-1:-1:-1;;;;;;4231:10:26;:25;;4199:58;:67;;;;;4262:3;4199:67;4195:1908;;;4379:15;:7;4391:2;4379:15;:11;:15;:::i;:::-;4369:25;;4422:51;1321:2;1308:17;;4454:18;;4440:7;4448:1;4440:10;;;;;;;;;;;;4422:7;;4440:10;;;;;4434:38;:17;4422:51;;:11;:51;:::i;:::-;4412:61;;4195:1908;;;4498:10;;-1:-1:-1;;;1224:17:26;4498:7;;4506:1;;4498:10;;;;;;;;;;-1:-1:-1;;;;;;4498:10:26;:24;4494:1609;;;4623:8;4615:42;;;;;-1:-1:-1;;;4615:42:26;;;;;;;;;;;;-1:-1:-1;;;4615:42:26;;;;;;;;;;;;;;;4751:8;4750:9;4742:45;;;;;-1:-1:-1;;;4742:45:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;4887:3;4886:4;4878:39;;;;;-1:-1:-1;;;4878:39:26;;;;;;;;;;;;-1:-1:-1;;;4878:39:26;;;;;;;;;;;;;;;4946:4;4935:15;;4494:1609;;;4975:10;;-1:-1:-1;;;1141:17:26;4975:7;;4983:1;;4975:10;;;;;;;;;;-1:-1:-1;;;;;;4975:10:26;:25;4971:1132;;;5103:5;5102:6;5094:30;;;;;-1:-1:-1;;;5094:30:26;;;;;;;;;;;;-1:-1:-1;;;5094:30:26;;;;;;;;;;;;;;;5151:4;5150:5;5142:28;;;;;-1:-1:-1;;;5142:28:26;;;;;;;;;;;;-1:-1:-1;;;5142:28:26;;;;;;;;;;;;;;;5212:1;5196:8;5207:1;5196:12;:17;5188:60;;;;;-1:-1:-1;;;5188:60:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;5274:4;5266:12;;4971:1132;;;5303:10;;-1:-1:-1;;;1057:17:26;5303:7;;5311:1;;5303:10;;;;;;;;;;-1:-1:-1;;;;;;5303:10:26;:25;5299:804;;;5431:4;5430:5;5422:29;;;;;-1:-1:-1;;;5422:29:26;;;;;;;;;;;;-1:-1:-1;;;5422:29:26;;;;;;;;;;;;;;;5478:5;5477:6;5469:29;;;;;-1:-1:-1;;;5469:29:26;;;;;;;;;;;;-1:-1:-1;;;5469:29:26;;;;;;;;;;;;;;;5540:1;5524:8;5535:1;5524:12;:17;5516:60;;;;;-1:-1:-1;;;5516:60:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;5601:4;5594:11;;5299:804;;;5631:10;;-1:-1:-1;;;1473:17:26;5631:7;;5639:1;;5631:10;;;;;;;;;;-1:-1:-1;;;;;;5631:10:26;:22;;5630:62;;-1:-1:-1;5659:10:26;;-1:-1:-1;;;1564:18:26;5659:7;;5667:1;;5659:10;;;;;;;;;;-1:-1:-1;;;;;;5659:10:26;:32;5630:62;5626:477;;;5793:8;5785:42;;;;;-1:-1:-1;;;5785:42:26;;;;;;;;;;;;-1:-1:-1;;;5785:42:26;;;;;;;;;;;;;;;5935:3;5934:4;5926:42;;;;;-1:-1:-1;;;5926:42:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;5992:4;5986:10;;6025:1;6014:12;;5626:477;;;6065:23;;;-1:-1:-1;;;6065:23:26;;;;;;;;;;;;-1:-1:-1;;;6065:23:26;;;;;;;;;;;;;;5626:477;3362:3;;3330:2783;;;6127:5;:13;;;;6136:4;6127:13;6123:267;;;6236:8;6247:1;6236:12;6232:1;:16;6224:25;;;;;;6123:267;;;6270:3;6266:124;;;6366:8;6377:1;6366:12;6362:1;:16;6354:25;;;;;;6404:5;6400:883;;;6462:14;6451:7;:25;6447:597;;6695:2;6678:14;6668:7;:24;:29;6660:55;;;;;-1:-1:-1;;;6660:55:26;;;;;;;;;;;;-1:-1:-1;;;6660:55:26;;;;;;;;;;;;;;;6759:14;6749:7;:24;6744:2;:30;6736:38;;;;;;;;-1:-1:-1;6792:11:26;;-1:-1:-1;;;;;;;;;;;;6792:11:26;6447:597;7022:7;7005:14;:24;6988:41;;6400:883;;;7245:27;:14;7264:7;7245:27;:18;:27;:::i;:::-;7228:44;;6400:883;7315:9;7297:14;:27;7293:1169;;7565:2;7553:9;:14;7545:61;;;;-1:-1:-1;;;7545:61:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7630:25;:4;7639:2;:15;;;7630:25;:8;:25;:::i;:::-;7623:32;-1:-1:-1;7676:17:26;7623:32;7685:7;7676:17;:8;:17;:::i;:::-;7669:24;;7830:2;7818:9;7801:14;:26;:31;7793:57;;;;;-1:-1:-1;;;7793:57:26;;;;;;;;;;;;-1:-1:-1;;;7793:57:26;;;;;;;;;;;;;;;7874:42;7905:9;7888:14;:26;7883:2;:32;7874:4;:8;;:42;;;;:::i;:::-;7867:49;;7293:1169;;;8087:14;8074:27;;;;8135:2;8123:9;:14;8115:61;;;;-1:-1:-1;;;8115:61:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8209:9;8204:2;:15;8193:26;;;;;;;;;8318:2;8301:14;:19;8293:66;;;;-1:-1:-1;;;8293:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8383:30;8397:14;8392:2;:20;8383:4;:8;;:30;;;;:::i;:::-;8376:37;-1:-1:-1;8434:17:26;8376:37;8443:7;8434:17;:8;:17;:::i;:::-;8427:24;;7293:1169;-1:-1:-1;8478:4:26;;2339:6150;-1:-1:-1;;;;;;;;;;;;;2339:6150:26:o;15628:156:19:-;11822:3;;15712:16;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;11846:11;:25::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;11893:19;:35::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;15747:8;;:30;;-1:-1:-1;;;15747:30:19;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15747:8:19;;;;:17;;15765:11;;15747:30;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;15747:30:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15747:30:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;24579:355:20;24657:13;24682:17;24725:5;:10;;;24713:4;:9;;;:22;24702:34;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;24702:34:20;87::-1;135:17;;-1:-1;24702:34:20;;24682:54;;24746:11;24797:2;24792:3;24788:12;24778:22;;24811:36;24818:6;24826:4;:9;;;24837:4;:9;;;24811:6;:36::i;:::-;24873:9;;24884:10;;;;24896;;24857:50;;24864:18;;;24884:10;24857:6;:50::i;:::-;-1:-1:-1;24924:3:20;24579:355;-1:-1:-1;;;24579:355:20:o;17161:406:19:-;11822:3;;17278:11;;-1:-1:-1;;;;;11822:3:19;11814:26;;11813:64;;-1:-1:-1;11866:3:19;;11846:25;;-1:-1:-1;;;;;11866:3:19;11846:11;:25::i;:::-;:30;11813:64;11809:130;;;11893:35;11470:1;11893:19;:35::i;:::-;;11809:130;11973:3;;;;;;;;;-1:-1:-1;;;;;11973:3:19;-1:-1:-1;;;;;11973:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11973:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;11973:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;11973:16:19;11960:8;;-1:-1:-1;;;;;11960:8:19;;;11952:37;;;11948:106;;12026:3;;;;;;;;;-1:-1:-1;;;;;12026:3:19;-1:-1:-1;;;;;12026:14:19;;:16;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12026:16:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;12026:16:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12026:16:19;12005:8;:38;;-1:-1:-1;;;;;;12005:38:19;-1:-1:-1;;;;;12005:38:19;;;;;;;;;11948:106;17314:8;;:41;;;-1:-1:-1;;;17314:41:19;;;;;;;;;;;;;;;;;;;;;;17301:10;;-1:-1:-1;;;;;17314:8:19;;:17;;17332:11;;17345:9;;17314:41;;;;;;;;;;;;;;;17301:10;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17314:41:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17314:41:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17314:41:19;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17314:41:19;;-1:-1:-1;17377:7:19;17387:11;:23;;17377:33;17369:41;;17365:106;;;-1:-1:-1;17432:1:19;;-1:-1:-1;17425:8:19;;17365:106;17487:8;;:73;;-1:-1:-1;;;17487:73:19;;:8;:73;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;17487:8:19;;;;:27;;17521:5;;17487:8;17531:11;;17544:4;;17550:9;;17487:73;;;;;;;;;;;;;;;;:8;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17487:73:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17487:73:19;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;17487:73:19;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17487:73:19;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;17487:73:19;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17487:73:19;;17161:406;-1:-1:-1;;;;;17161:406:19:o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;1884:18;:85::i;3220:164:27:-;3273:16;3324:32;3336:19;;3324:11;:32::i;:::-;-1:-1:-1;;;;;3308:67:27;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3308:69:27;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3308:69:27;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3308:69:27;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:2;5:11;;2:2;;;29:1;26;19:12;2:2;3308:69:27;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;219:3;213:10;331:9;325:2;311:12;307:21;289:16;285:44;282:59;-1:-1;;;247:12;244:29;233:116;230:2;;;362:1;359;352:12;230:2;373:25;;-1:-1;3308:69:27;;421:4:-1;412:14;;;;3308:69:27;;;;;412:14:-1;3308:69:27;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3308:69:27;;;;;;;;;;;3301:76;;3220:164;:::o;13025:2047:19:-;13074:16;13164:1;13106:55;13118:42;13106:11;:55::i;:::-;:59;13102:248;;;13191:3;:71;;-1:-1:-1;;;;;;13191:71:19;13219:42;13191:71;;;13276:38;;;;;;;;;;;;-1:-1:-1;;;13276:38:19;;;;;;:23;:38::i;:::-;-1:-1:-1;13335:4:19;13328:11;;13102:248;13421:1;13363:55;13375:42;13363:11;:55::i;:::-;:59;13359:257;;;13456:3;:71;;-1:-1:-1;;;;;;13456:71:19;13484:42;13456:71;;;13541:39;;;;;;;;;;;;-1:-1:-1;;;13541:39:19;;;;;;:23;:39::i;13359:257::-;13687:1;13629:55;13641:42;13629:11;:55::i;:::-;:59;13625:252;;;13720:3;:71;;-1:-1:-1;;;;;;13720:71:19;13748:42;13720:71;;;13805:36;;;;;;;;;;;;-1:-1:-1;;;13805:36:19;;;;;;:23;:36::i;13625:252::-;13948:1;13890:55;13902:42;13890:11;:55::i;:::-;:59;13886:256;;;13983:3;:71;;-1:-1:-1;;;;;;13983:71:19;14011:42;13983:71;;;14068:38;;;;;;;;;;;;-1:-1:-1;;;14068:38:19;;;;;;:23;:38::i;13886:256::-;14213:1;14155:55;14167:42;14155:11;:55::i;:::-;:59;14151:254;;;14247:3;:71;;-1:-1:-1;;;;;;14247:71:19;14275:42;14247:71;;;14332:37;;;;;;;;;;;;-1:-1:-1;;;14332:37:19;;;;;;:23;:37::i;14151:254::-;14476:1;14418:55;14430:42;14418:11;:55::i;:::-;:59;14414:204;;;-1:-1:-1;14511:3:19;:71;;-1:-1:-1;;;;;;14511:71:19;14539:42;14511:71;;;;14596:11;;14414:204;14689:1;14631:55;14643:42;14631:11;:55::i;:::-;:59;14627:203;;;-1:-1:-1;14723:3:19;:71;;-1:-1:-1;;;;;;14723:71:19;14751:42;14723:71;;;;14808:11;;14627:203;14901:1;14843:55;14855:42;14843:11;:55::i;:::-;:59;14839:205;;;-1:-1:-1;14937:3:19;:71;;-1:-1:-1;;;;;;14937:71:19;14965:42;14937:71;;;;15022:11;;14839:205;-1:-1:-1;15060:5:19;13025:2047;:::o;56301:1544::-;56373:13;56388:25;56425:9;56444;56463:7;56484:4;:11;56499:2;56484:17;56480:74;;-1:-1:-1;56525:5:19;;-1:-1:-1;56525:5:19;;-1:-1:-1;56517:26:19;;-1:-1:-1;;56517:26:19;56480:74;-1:-1:-1;;;56781:2:19;56771:13;;56765:20;56819:2;56809:13;;56803:20;57101:2;57091:13;;57085:20;57082:1;57077:29;57671:2;57667:6;;57663:44;;;57694:2;57689:7;57663:44;57720:1;:7;;57725:2;57720:7;;:18;;;;;57731:1;:7;;57736:2;57731:7;;57720:18;57716:75;;;-1:-1:-1;57762:5:19;;-1:-1:-1;57762:5:19;;-1:-1:-1;57754:26:19;;-1:-1:-1;;57754:26:19;57716:75;57807:31;57823:5;57830:1;57833;57836;57807:15;:31::i;:::-;57800:38;;;;;;;56301:1544;;;;;:::o;1734:143:26:-;1811:7;1837:33;1857:9;1868:1;1837:19;:33::i;1769:942:23:-;1838:5;1855:13;1898:6;1881:24;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;1881:24:23;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;1881:24:23;;;1871:35;;;;;;1855:51;;983:16;;;;-1:-1:-1;;;983:16:23;;;;;;;;;;;;;;1920:5;:17;1916:789;;;1960:1;1953:8;;;;;1916:789;1042:16;;;-1:-1:-1;;;1042:16:23;;;;;;;;;;;;1982:18;;1978:727;;;2023:1;2016:8;;;;;1978:727;1098:16;;;-1:-1:-1;;;1098:16:23;;;;;;;;;;;;2045:15;;2041:664;;;2083:1;2076:8;;;;;2041:664;1154:16;;;-1:-1:-1;;;1154:16:23;;;;;;;;;;;;2105:15;;2101:604;;;2143:1;2136:8;;;;;2101:604;1208:16;;;-1:-1:-1;;;1208:16:23;;;;;;;;;;;;2165:13;;2161:544;;;2201:1;2194:8;;;;;2161:544;1263:16;;;-1:-1:-1;;;1263:16:23;;;;;;;;;;;;2223:14;;2219:486;;;2260:1;2253:8;;;;;2219:486;1318:16;;;-1:-1:-1;;;1318:16:23;;;;;;;;;;;;2282:14;;2278:427;;;2319:1;2312:8;;;;;2278:427;1375:16;;;-1:-1:-1;;;1375:16:23;;;;;;;;;;;;2341;;2337:368;;;2380:1;2373:8;;;;;2337:368;1435:16;;;-1:-1:-1;;;1435:16:23;;;;;;;;;;;;2402:19;;2398:307;;;2444:1;2437:8;;;;;2398:307;1493:16;;;-1:-1:-1;;;1493:16:23;;;;;;;;;;;;2466:17;;2462:243;;;2506:2;2499:9;;;;;2462:243;1552:16;;;-1:-1:-1;;;1552:16:23;;;;;;;;;;;;2529:18;;2525:180;;;2570:2;2563:9;;;;;2525:180;1611:16;;;-1:-1:-1;;;1611:16:23;;;;;;;;;;;;2593:18;;2589:116;;;2634:2;2627:9;;;;;2589:116;2667:27;;;-1:-1:-1;;;2667:27:23;;;;;;;;;;;;-1:-1:-1;;;2667:27:23;;;;;;;;;;;;;;20548:504:20;20646:12;;:::i;:::-;20670:8;20681:55;20689:4;:9;;;20700:4;:9;;;20711:6;:11;;;20724:6;:11;;;20681:7;:55::i;:::-;20759:9;;;;;;20746:10;;;:22;;;;20797:9;;20791:15;;20778:28;;20839:9;;20827;;20670:66;;-1:-1:-1;20827:21:20;20820:28;;20816:208;;;20901:1;20889:13;;20816:208;;;20959:11;;20946:10;;20933:37;;20946:24;;20933:37;;;;21002:11;;20996:17;;20984:9;;;:29;20816:208;-1:-1:-1;21040:5:20;;20548:504;-1:-1:-1;;;20548:504:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1693:458:4:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:4;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;834:176;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095:3;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;12757:125:19:-;12838:37;;;;:21;;:37;;;;;:::i;55192:982::-;55284:13;55299:25;55730:8;55748:12;55811:4;55805:11;55842:5;55836:4;55829:19;55883:2;55878;55872:4;55868:13;55861:25;55921:2;55916;55910:4;55906:13;55899:25;55959:2;55954;55948:4;55944:13;55937:25;56016:2;56010:4;56005:3;55999:4;55996:1;55993;55987:4;55982:37;56119:11;;;;;;-1:-1:-1;55192:982:19;-1:-1:-1;;;;;;;55192:982:19:o;15954:1372:20:-;16053:4;16080:7;16053:4;16120:20;;;16116:1170;;16173:2;16160:9;:15;16156:1120;;16337:16;;16497:10;;-1:-1:-1;;16226:1:20;16231:2;:14;;;16226:20;16220:1;:27;:31;16218:34;;16333:27;;;16391:17;;;:29;;;;16493:21;;16534:228;16552:10;16541:7;:21;16534:228;;16597:3;16590;:10;16586:64;;16643:7;16633;:17;16626:24;;;;;;;;;;16586:64;-1:-1:-1;16672:5:20;;;;16725:10;;16672:5;;-1:-1:-1;16721:21:20;;16708:36;;;16786:3;16779:10;;;;;;;;;;16156:1120;-1:-1:-1;16926:31:20;;;16877:12;;16977:285;17008:9;16998:7;:19;16991:3;:26;16977:285;;17109:25;;;17161:16;;;17157:56;;;17210:3;17203:10;;;;;;;;17157:56;-1:-1:-1;17242:1:20;17235:8;;;;17019:5;;;;;16977:285;;;16156:1120;;-1:-1:-1;;;17302:17:20;;;15954:1372;;;;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1226:15469:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1226:15469:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1226:15469:29;;;-1:-1:-1;1226:15469:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","srcmap":"1939:14907:30:-;;;1122:66:22;1272:58;;4758:506:30;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:30;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:30;;;;;1665:30:22;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:30;:26;;;;-1:-1:-1;4995:11:30;:33;;-1:-1:-1;;;;;4995:33:30;;;-1:-1:-1;;;;;;4995:33:30;;;;;;;;;-1:-1:-1;5083:18:30;:28;;;:35;;-1:-1:-1;;5083:35:30;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:30;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:30:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:30;-1:-1:-1;;;;;;16070:136:30;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:30;-1:-1:-1;;;;;13314:334:30;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:30;;-1:-1:-1;6040:1806:30;-1:-1:-1;6040:1806:30;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:30;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:30;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:30;;-1:-1:-1;;;;;15695:220:30;;;;;-1:-1:-1;;;;;;15695:220:30;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:30;;-1:-1:-1;7973:1237:30;-1:-1:-1;7973:1237:30;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:30;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:30;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:30;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:30;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:30;;-1:-1:-1;9368:1399:30;-1:-1:-1;9368:1399:30;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:30;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:30;;;;;;;;;;;;;:::i;2169:95:22:-;;;:::i;16551:89:30:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:30;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:30;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:30;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;6389:33:30;;;:88;;;;-1:-1:-1;6442:35:30;;;6389:88;:142;;;;-1:-1:-1;6497:34:30;;;6389:142;:196;;;;-1:-1:-1;6551:34:30;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:30;6841:25;;-1:-1:-1;6841:25:30;;;;;;;;-1:-1:-1;6841:25:30;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:30;-1:-1:-1;;;;;7084:25:30;-1:-1:-1;;;;;7084:25:30;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:30;;;;;-1:-1:-1;;7084:306:30;;;-1:-1:-1;;7084:306:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:30;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:30;-1:-1:-1;;;;;7486:10:30;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:30;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:30;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:30;-1:-1:-1;;;;;7742:87:30;;;;;;-1:-1:-1;;;;;7742:87:30;-1:-1:-1;;;;;7742:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:30;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:30;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:30;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:30;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:30;-1:-1:-1;15069:72:30;-1:-1:-1;15151:23:30;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:30;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:30;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:30;;;-1:-1:-1;;;;;15364:44:30;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:30;;15188:283;;;-1:-1:-1;15487:19:30;;-1:-1:-1;;14990:523:30;:::o;11299:398::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:30;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:30;;;;;;;;;;;;-1:-1:-1;;;11432:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:30;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:30;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:30;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:30;;;;;;;;;;;;-1:-1:-1;;;15798:62:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:30;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:30:o;7973:1237::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;8160:9:30;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:30;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:30;;8363:65;;;;;-1:-1:-1;;;8363:65:30;;;;;;;;;;;;-1:-1:-1;;;8363:65:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:30;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:30;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:30;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:30;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:30;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:30;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:30;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:30;;;;;-1:-1:-1;;;;;8926:76:30;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:30;:27;;;;;-1:-1:-1;;9075:27:30;;;:::i;:::-;-1:-1:-1;9162:31:30;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:30;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:30:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:30;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:30;;;;;;;;;;;;-1:-1:-1;;;10969:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:30;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:30;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:22;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;-1:-1:-1;;;2035:55:22;;;;;;;;;;;;;;;12676:35:30;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:30;;:23;-1:-1:-1;;9801:23:30;:20;:23;;-1:-1:-1;9801:23:30:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:30;;;;;;;;;;;;-1:-1:-1;;;9877:72:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:30;;-1:-1:-1;;;10048:18:30;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:30;;:24;-1:-1:-1;;10141:24:30;:21;:24;;-1:-1:-1;10141:24:30:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:30;;-1:-1:-1;;;10187:27:30;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:30;;:34;-1:-1:-1;;10400:34:30;:21;:34;;-1:-1:-1;10400:34:30:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:30;;:34;-1:-1:-1;;10436:34:30;:21;:34;;-1:-1:-1;10436:34:30:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:30;;:29;-1:-1:-1;;10689:29:30;:21;:29;;-1:-1:-1;10689:29:30:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:30;;:29;-1:-1:-1;;10720:29:30;:21;:29;;-1:-1:-1;10720:29:30:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:30;-1:-1:-1;;;;;5399:27:30;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:30;;;;;;;;;;;;-1:-1:-1;;;5367:86:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:30;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:30;;;;;;;;;;;;-1:-1:-1;;;12130:66:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:30;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:22:-;2242:15;;2169:95;:::o;16551:89:30:-;16622:11;;-1:-1:-1;;;;;16622:11:30;16551:89;:::o;2554:148:22:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:22;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:22;-1:-1:-1;;;;;2636:59:22;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:22;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:22;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:22;;2554:148;-1:-1:-1;;2554:148:22:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:28:-;-1:-1:-1;;;;;1510:20:28;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:28;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:28;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:28;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:21:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:21;;;;;;;;;;;;-1:-1:-1;;;1726:60:21;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:21:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:21;;;;;;;;;;;;-1:-1:-1;;;1182:61:21;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:21:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:30;;;-1:-1:-1;1939:14907:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/base64.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/oraclizeAPI_0.5.sol","externals/strings.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/date.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/parseIntScientific.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","oracle.sol","tokenWhitelist.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[9435],"IController":[9000]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8983,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":11164,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":9436,"symbolAliases":[null],"unitAlias":""},"id":8984,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":8982,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":9436,"symbolAliases":[null],"unitAlias":""},"id":8985,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[9000],"name":"IController","scope":9436},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":9000,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":8992,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8986,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":8987,"name":"VariableDeclaration","src":"1015:7:0"}],"id":8988,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":8992,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8989,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":8990,"name":"VariableDeclaration","src":"1047:4:0"}],"id":8991,"name":"ParameterList","src":"1046:6:0"}],"id":8992,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":9000,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":8999,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8993,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":8994,"name":"VariableDeclaration","src":"1076:7:0"}],"id":8995,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":8999,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8996,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":8997,"name":"VariableDeclaration","src":"1108:4:0"}],"id":8998,"name":"ParameterList","src":"1107:6:0"}],"id":8999,"name":"FunctionDefinition","src":"1059:55:0"}],"id":9000,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[8981,9000,11163],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[9435,8981,11163,9000],"name":"Controller","scope":9436},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":9000,"type":"contract IController"},"id":9001,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":9002,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":11163,"type":"contract Ownable"},"id":9003,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":9004,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":8981,"type":"contract Transferrable"},"id":9005,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":9006,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9012,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9007,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":9008,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":9012,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9009,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":9010,"name":"VariableDeclaration","src":"1564:19:0"}],"id":9011,"name":"ParameterList","src":"1546:38:0"}],"id":9012,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9018,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9013,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":9014,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":9018,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9015,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":9016,"name":"VariableDeclaration","src":"1631:19:0"}],"id":9017,"name":"ParameterList","src":"1613:38:0"}],"id":9018,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9024,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9019,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":9020,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":9024,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9021,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":9022,"name":"VariableDeclaration","src":"1692:14:0"}],"id":9023,"name":"ParameterList","src":"1674:33:0"}],"id":9024,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9030,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9025,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":9026,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":9030,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9027,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":9028,"name":"VariableDeclaration","src":"1749:14:0"}],"id":9029,"name":"ParameterList","src":"1731:33:0"}],"id":9030,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":9038,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9031,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":9032,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":9038,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9033,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":9034,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":9038,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9035,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":9036,"name":"VariableDeclaration","src":"1814:15:0"}],"id":9037,"name":"ParameterList","src":"1784:46:0"}],"id":9038,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9042,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9039,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":9040,"name":"VariableDeclaration","src":"1851:15:0"}],"id":9041,"name":"ParameterList","src":"1850:17:0"}],"id":9042,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9046,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9043,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":9044,"name":"VariableDeclaration","src":"1887:15:0"}],"id":9045,"name":"ParameterList","src":"1886:17:0"}],"id":9046,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":9435,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":9047,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":9048,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":9049,"name":"Mapping","src":"1910:24:0"}],"id":9050,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":9435,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9051,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":9052,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":9435,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":9053,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":9054,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":9055,"name":"Mapping","src":"1991:24:0"}],"id":9056,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":9435,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9057,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":9058,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":9435,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9059,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":9060,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":9070,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":9061,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":9062,"name":"VariableDeclaration","src":"2251:30:0"}],"id":9063,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":9068,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11163,"type":"type(contract Ownable)","value":"Ownable"},"id":9064,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9062,"type":"address payable","value":"_ownerAddress_"},"id":9065,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9066,"name":"Literal","src":"2314:5:0"}],"id":9067,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":9069,"name":"Block","src":"2321:2:0"}],"id":9070,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9071,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9072,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9073,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9074,"name":"Identifier","src":"2431:3:0"}],"id":9075,"name":"MemberAccess","src":"2431:10:0"}],"id":9076,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":9077,"name":"Literal","src":"2444:21:0"}],"id":9078,"name":"FunctionCall","src":"2414:52:0"}],"id":9079,"name":"ExpressionStatement","src":"2414:52:0"},{"id":9080,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":9081,"name":"Block","src":"2404:80:0"}],"id":9082,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9083,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9084,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11162,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":9085,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9086,"name":"Identifier","src":"2585:3:0"}],"id":9087,"name":"MemberAccess","src":"2585:10:0"}],"id":9088,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9089,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9090,"name":"Identifier","src":"2609:3:0"}],"id":9091,"name":"MemberAccess","src":"2609:10:0"}],"id":9092,"name":"IndexAccess","src":"2600:20:0"}],"id":9093,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":9094,"name":"Literal","src":"2622:30:0"}],"id":9095,"name":"FunctionCall","src":"2568:85:0"}],"id":9096,"name":"ExpressionStatement","src":"2568:85:0"},{"id":9097,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":9098,"name":"Block","src":"2558:113:0"}],"id":9099,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9100,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9101,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":9214,"type":"function () view returns (bool)","value":"isStopped"},"id":9102,"name":"Identifier","src":"2765:9:0"}],"id":9103,"name":"FunctionCall","src":"2765:11:0"}],"id":9104,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":9105,"name":"Literal","src":"2778:23:0"}],"id":9106,"name":"FunctionCall","src":"2756:46:0"}],"id":9107,"name":"ExpressionStatement","src":"2756:46:0"},{"id":9108,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":9109,"name":"Block","src":"2746:74:0"}],"id":9110,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9124,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9111,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":9112,"name":"VariableDeclaration","src":"2961:16:0"}],"id":9113,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9118,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":9114,"name":"Identifier","src":"2988:9:0"}],"id":9115,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9116,"name":"Identifier","src":"2998:10:0"}],"id":9117,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9268,"type":"function (address)","value":"_addAdmin"},"id":9119,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9112,"type":"address","value":"_account"},"id":9120,"name":"Identifier","src":"3029:8:0"}],"id":9121,"name":"FunctionCall","src":"3019:19:0"}],"id":9122,"name":"ExpressionStatement","src":"3019:19:0"}],"id":9123,"name":"Block","src":"3009:36:0"}],"id":9124,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9136,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9125,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":9126,"name":"VariableDeclaration","src":"3195:16:0"}],"id":9127,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9130,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":9128,"name":"Identifier","src":"3222:9:0"}],"id":9129,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9296,"type":"function (address)","value":"_removeAdmin"},"id":9131,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9126,"type":"address","value":"_account"},"id":9132,"name":"Identifier","src":"3255:8:0"}],"id":9133,"name":"FunctionCall","src":"3242:22:0"}],"id":9134,"name":"ExpressionStatement","src":"3242:22:0"}],"id":9135,"name":"Block","src":"3232:39:0"}],"id":9136,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":9435,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9137,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9138,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":9139,"name":"VariableDeclaration","src":"3368:7:0"}],"id":9140,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":9140},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9052,"type":"uint256","value":"_adminCount"},"id":9141,"name":"Identifier","src":"3394:11:0"}],"id":9142,"name":"Return","src":"3387:18:0"}],"id":9143,"name":"Block","src":"3377:35:0"}],"id":9144,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9158,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9145,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":9146,"name":"VariableDeclaration","src":"3573:16:0"}],"id":9147,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9152,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9099,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":9148,"name":"Identifier","src":"3600:16:0"}],"id":9149,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9150,"name":"Identifier","src":"3617:10:0"}],"id":9151,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9350,"type":"function (address)","value":"_addController"},"id":9153,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9146,"type":"address","value":"_account"},"id":9154,"name":"Identifier","src":"3653:8:0"}],"id":9155,"name":"FunctionCall","src":"3638:24:0"}],"id":9156,"name":"ExpressionStatement","src":"3638:24:0"}],"id":9157,"name":"Block","src":"3628:41:0"}],"id":9158,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9170,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9159,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":9160,"name":"VariableDeclaration","src":"3839:16:0"}],"id":9161,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9164,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9099,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":9162,"name":"Identifier","src":"3866:16:0"}],"id":9163,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9378,"type":"function (address)","value":"_removeController"},"id":9165,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9160,"type":"address","value":"_account"},"id":9166,"name":"Identifier","src":"3911:8:0"}],"id":9167,"name":"FunctionCall","src":"3893:27:0"}],"id":9168,"name":"ExpressionStatement","src":"3893:27:0"}],"id":9169,"name":"Block","src":"3883:44:0"}],"id":9170,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":9435,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9171,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9178,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9172,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":9173,"name":"VariableDeclaration","src":"4072:7:0"}],"id":9174,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":9174},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9058,"type":"uint256","value":"_controllerCount"},"id":9175,"name":"Identifier","src":"4098:16:0"}],"id":9176,"name":"Return","src":"4091:23:0"}],"id":9177,"name":"Block","src":"4081:40:0"}],"id":9178,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":9435,"stateMutability":"view","superFunction":8999,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9192,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9179,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":9180,"name":"VariableDeclaration","src":"4242:16:0"}],"id":9181,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9192,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9184,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":9185,"name":"VariableDeclaration","src":"4294:4:0"}],"id":9186,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9182,"name":"Identifier","src":"4274:10:0"}],"id":9183,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":9186},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9187,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9180,"type":"address","value":"_account"},"id":9188,"name":"Identifier","src":"4326:8:0"}],"id":9189,"name":"IndexAccess","src":"4317:18:0"}],"id":9190,"name":"Return","src":"4310:25:0"}],"id":9191,"name":"Block","src":"4300:42:0"}],"id":9192,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":9435,"stateMutability":"view","superFunction":8992,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9206,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9193,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":9194,"name":"VariableDeclaration","src":"4476:16:0"}],"id":9195,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9206,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9198,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":9199,"name":"VariableDeclaration","src":"4528:4:0"}],"id":9200,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9196,"name":"Identifier","src":"4508:10:0"}],"id":9197,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":9200},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9201,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9194,"type":"address","value":"_account"},"id":9202,"name":"Identifier","src":"4565:8:0"}],"id":9203,"name":"IndexAccess","src":"4551:23:0"}],"id":9204,"name":"Return","src":"4544:30:0"}],"id":9205,"name":"Block","src":"4534:47:0"}],"id":9206,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":9435,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9207,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":9214,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9208,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":9209,"name":"VariableDeclaration","src":"4769:4:0"}],"id":9210,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":9210},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"bool","value":"_stopped"},"id":9211,"name":"Identifier","src":"4792:8:0"}],"id":9212,"name":"Return","src":"4785:15:0"}],"id":9213,"name":"Block","src":"4775:32:0"}],"id":9214,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9268,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9215,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":9216,"name":"VariableDeclaration","src":"4894:16:0"}],"id":9217,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9218,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9219,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9220,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9221,"name":"Identifier","src":"4948:8:0"}],"id":9222,"name":"IndexAccess","src":"4939:18:0"}],"id":9223,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":9224,"name":"Literal","src":"4959:38:0"}],"id":9225,"name":"FunctionCall","src":"4930:68:0"}],"id":9226,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9227,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9228,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9229,"name":"Identifier","src":"5031:8:0"}],"id":9230,"name":"IndexAccess","src":"5017:23:0"}],"id":9231,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":9232,"name":"Literal","src":"5042:42:0"}],"id":9233,"name":"FunctionCall","src":"5008:77:0"}],"id":9234,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9235,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":11162,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":9236,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9237,"name":"Identifier","src":"5113:8:0"}],"id":9238,"name":"FunctionCall","src":"5104:18:0"}],"id":9239,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":9240,"name":"Literal","src":"5124:39:0"}],"id":9241,"name":"FunctionCall","src":"5095:69:0"}],"id":9242,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9243,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9244,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9245,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9246,"name":"Literal","src":"5202:1:0"}],"id":9247,"name":"FunctionCall","src":"5194:10:0"}],"id":9248,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":9249,"name":"Literal","src":"5206:38:0"}],"id":9250,"name":"FunctionCall","src":"5174:71:0"}],"id":9251,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9252,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9253,"name":"Identifier","src":"5264:8:0"}],"id":9254,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9255,"name":"Literal","src":"5276:4:0"}],"id":9256,"name":"Assignment","src":"5255:25:0"}],"id":9257,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9052,"type":"uint256","value":"_adminCount"},"id":9258,"name":"Identifier","src":"5290:11:0"}],"id":9259,"name":"UnaryOperation","src":"5290:13:0"}],"id":9260,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9024,"type":"function (address,address)","value":"AddedAdmin"},"id":9261,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9262,"name":"Identifier","src":"5329:3:0"}],"id":9263,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"address","value":"_account"},"id":9264,"name":"Identifier","src":"5341:8:0"}],"id":9265,"name":"FunctionCall","src":"5318:32:0"}],"id":9266,"name":"EmitStatement","src":"5313:37:0"}],"id":9267,"name":"Block","src":"4920:437:0"}],"id":9268,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9296,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9269,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":9270,"name":"VariableDeclaration","src":"5456:16:0"}],"id":9271,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9272,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9273,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9274,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9270,"type":"address","value":"_account"},"id":9275,"name":"Identifier","src":"5509:8:0"}],"id":9276,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":9277,"name":"Literal","src":"5520:34:0"}],"id":9278,"name":"FunctionCall","src":"5492:63:0"}],"id":9279,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9280,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9270,"type":"address","value":"_account"},"id":9281,"name":"Identifier","src":"5574:8:0"}],"id":9282,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9283,"name":"Literal","src":"5586:5:0"}],"id":9284,"name":"Assignment","src":"5565:26:0"}],"id":9285,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9052,"type":"uint256","value":"_adminCount"},"id":9286,"name":"Identifier","src":"5601:11:0"}],"id":9287,"name":"UnaryOperation","src":"5601:13:0"}],"id":9288,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9030,"type":"function (address,address)","value":"RemovedAdmin"},"id":9289,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9290,"name":"Identifier","src":"5642:3:0"}],"id":9291,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9270,"type":"address","value":"_account"},"id":9292,"name":"Identifier","src":"5654:8:0"}],"id":9293,"name":"FunctionCall","src":"5629:34:0"}],"id":9294,"name":"EmitStatement","src":"5624:39:0"}],"id":9295,"name":"Block","src":"5482:188:0"}],"id":9296,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9350,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9297,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":9298,"name":"VariableDeclaration","src":"5767:16:0"}],"id":9299,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9300,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9301,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9050,"type":"mapping(address => bool)","value":"_isAdmin"},"id":9302,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9303,"name":"Identifier","src":"5821:8:0"}],"id":9304,"name":"IndexAccess","src":"5812:18:0"}],"id":9305,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":9306,"name":"Literal","src":"5832:38:0"}],"id":9307,"name":"FunctionCall","src":"5803:68:0"}],"id":9308,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9309,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9310,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9311,"name":"Identifier","src":"5904:8:0"}],"id":9312,"name":"IndexAccess","src":"5890:23:0"}],"id":9313,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":9314,"name":"Literal","src":"5915:42:0"}],"id":9315,"name":"FunctionCall","src":"5881:77:0"}],"id":9316,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9317,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":11162,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":9318,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9319,"name":"Identifier","src":"5986:8:0"}],"id":9320,"name":"FunctionCall","src":"5977:18:0"}],"id":9321,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":9322,"name":"Literal","src":"5997:39:0"}],"id":9323,"name":"FunctionCall","src":"5968:69:0"}],"id":9324,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9325,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9326,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9327,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9328,"name":"Literal","src":"6075:1:0"}],"id":9329,"name":"FunctionCall","src":"6067:10:0"}],"id":9330,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":9331,"name":"Literal","src":"6079:38:0"}],"id":9332,"name":"FunctionCall","src":"6047:71:0"}],"id":9333,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9334,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9335,"name":"Identifier","src":"6142:8:0"}],"id":9336,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9337,"name":"Literal","src":"6154:4:0"}],"id":9338,"name":"Assignment","src":"6128:30:0"}],"id":9339,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9058,"type":"uint256","value":"_controllerCount"},"id":9340,"name":"Identifier","src":"6168:16:0"}],"id":9341,"name":"UnaryOperation","src":"6168:18:0"}],"id":9342,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9012,"type":"function (address,address)","value":"AddedController"},"id":9343,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9344,"name":"Identifier","src":"6217:3:0"}],"id":9345,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9298,"type":"address","value":"_account"},"id":9346,"name":"Identifier","src":"6229:8:0"}],"id":9347,"name":"FunctionCall","src":"6201:37:0"}],"id":9348,"name":"EmitStatement","src":"6196:42:0"}],"id":9349,"name":"Block","src":"5793:452:0"}],"id":9350,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":9378,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9351,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":9352,"name":"VariableDeclaration","src":"6354:16:0"}],"id":9353,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":9354,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":9355,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9356,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9352,"type":"address","value":"_account"},"id":9357,"name":"Identifier","src":"6412:8:0"}],"id":9358,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":9359,"name":"Literal","src":"6423:38:0"}],"id":9360,"name":"FunctionCall","src":"6390:72:0"}],"id":9361,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9056,"type":"mapping(address => bool)","value":"_isController"},"id":9362,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9352,"type":"address","value":"_account"},"id":9363,"name":"Identifier","src":"6486:8:0"}],"id":9364,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9365,"name":"Literal","src":"6498:5:0"}],"id":9366,"name":"Assignment","src":"6472:31:0"}],"id":9367,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9058,"type":"uint256","value":"_controllerCount"},"id":9368,"name":"Identifier","src":"6513:16:0"}],"id":9369,"name":"UnaryOperation","src":"6513:18:0"}],"id":9370,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9018,"type":"function (address,address)","value":"RemovedController"},"id":9371,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9372,"name":"Identifier","src":"6564:3:0"}],"id":9373,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9352,"type":"address","value":"_account"},"id":9374,"name":"Identifier","src":"6576:8:0"}],"id":9375,"name":"FunctionCall","src":"6546:39:0"}],"id":9376,"name":"EmitStatement","src":"6541:44:0"}],"id":9377,"name":"Block","src":"6380:212:0"}],"id":9378,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9379,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":9382,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9099,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":9380,"name":"Identifier","src":"6690:16:0"}],"id":9381,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"bool","value":"_stopped"},"id":9383,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9384,"name":"Literal","src":"6728:4:0"}],"id":9385,"name":"Assignment","src":"6717:15:0"}],"id":9386,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"function (address)","value":"Stopped"},"id":9387,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9388,"name":"Identifier","src":"6755:3:0"}],"id":9389,"name":"MemberAccess","src":"6755:10:0"}],"id":9390,"name":"FunctionCall","src":"6747:19:0"}],"id":9391,"name":"EmitStatement","src":"6742:24:0"}],"id":9392,"name":"Block","src":"6707:66:0"}],"id":9393,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9394,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":9397,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":9395,"name":"Identifier","src":"6848:9:0"}],"id":9396,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"bool","value":"_stopped"},"id":9398,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9399,"name":"Literal","src":"6879:5:0"}],"id":9400,"name":"Assignment","src":"6868:16:0"}],"id":9401,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":9046,"type":"function (address)","value":"Started"},"id":9402,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9403,"name":"Identifier","src":"6907:3:0"}],"id":9404,"name":"MemberAccess","src":"6907:10:0"}],"id":9405,"name":"FunctionCall","src":"6899:19:0"}],"id":9406,"name":"EmitStatement","src":"6894:24:0"}],"id":9407,"name":"Block","src":"6858:67:0"}],"id":9408,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":9435,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":9434,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":9409,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":9410,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":9434,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9411,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":9412,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":9434,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9413,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":9414,"name":"VariableDeclaration","src":"7066:15:0"}],"id":9415,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":9420,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9082,"type":"modifier ()","value":"onlyAdmin"},"id":9416,"name":"Identifier","src":"7092:9:0"}],"id":9417,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9110,"type":"modifier ()","value":"notStopped"},"id":9418,"name":"Identifier","src":"7102:10:0"}],"id":9419,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8980,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":9421,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9410,"type":"address payable","value":"_to"},"id":9422,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9412,"type":"address","value":"_asset"},"id":9423,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9414,"type":"uint256","value":"_amount"},"id":9424,"name":"Identifier","src":"7150:7:0"}],"id":9425,"name":"FunctionCall","src":"7123:35:0"}],"id":9426,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"function (address,address,uint256)","value":"Claimed"},"id":9427,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9410,"type":"address payable","value":"_to"},"id":9428,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9412,"type":"address","value":"_asset"},"id":9429,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9414,"type":"uint256","value":"_amount"},"id":9430,"name":"Identifier","src":"7194:7:0"}],"id":9431,"name":"FunctionCall","src":"7173:29:0"}],"id":9432,"name":"EmitStatement","src":"7168:34:0"}],"id":9433,"name":"Block","src":"7113:96:0"}],"id":9434,"name":"FunctionDefinition","src":"7014:195:0"}],"id":9435,"name":"ContractDefinition","src":"1460:5751:0"}],"id":9436,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[14286]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":14269,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[14286],"name":"Address","scope":14287},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":14286,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":14285,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":14270,"name":"ElementaryTypeName","src":"562:7:1"}],"id":14271,"name":"VariableDeclaration","src":"562:15:1"}],"id":14272,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":14285,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14273,"name":"ElementaryTypeName","src":"602:4:1"}],"id":14274,"name":"VariableDeclaration","src":"602:4:1"}],"id":14275,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[14277],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":14284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14276,"name":"ElementaryTypeName","src":"805:7:1"}],"id":14277,"name":"VariableDeclaration","src":"805:12:1"}],"id":14278,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":14277,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":14271,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":14279,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":14275},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14277,"type":"uint256","value":"size"},"id":14280,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14281,"name":"Literal","src":"947:1:1"}],"id":14282,"name":"BinaryOperation","src":"940:8:1"}],"id":14283,"name":"Return","src":"933:15:1"}],"id":14284,"name":"Block","src":"608:347:1"}],"id":14285,"name":"FunctionDefinition","src":"542:413:1"}],"id":14286,"name":"ContractDefinition","src":"94:863:1"}],"id":14287,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[10787]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":10736,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[10787],"name":"ERC20","scope":10788},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":10787,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":10745,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10737,"name":"ElementaryTypeName","src":"193:7:2"}],"id":10738,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":10745,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10739,"name":"ElementaryTypeName","src":"209:7:2"}],"id":10740,"name":"VariableDeclaration","src":"209:16:2"}],"id":10741,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10745,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10742,"name":"ElementaryTypeName","src":"250:7:2"}],"id":10743,"name":"VariableDeclaration","src":"250:7:2"}],"id":10744,"name":"ParameterList","src":"249:9:2"}],"id":10745,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":10787,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":10754,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10746,"name":"ElementaryTypeName","src":"281:7:2"}],"id":10747,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":10754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10748,"name":"ElementaryTypeName","src":"299:7:2"}],"id":10749,"name":"VariableDeclaration","src":"299:14:2"}],"id":10750,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10754,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10751,"name":"ElementaryTypeName","src":"333:4:2"}],"id":10752,"name":"VariableDeclaration","src":"333:4:2"}],"id":10753,"name":"ParameterList","src":"332:6:2"}],"id":10754,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":10787,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":10761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10755,"name":"ElementaryTypeName","src":"363:7:2"}],"id":10756,"name":"VariableDeclaration","src":"363:12:2"}],"id":10757,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10758,"name":"ElementaryTypeName","src":"400:7:2"}],"id":10759,"name":"VariableDeclaration","src":"400:7:2"}],"id":10760,"name":"ParameterList","src":"399:9:2"}],"id":10761,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":10787,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10762,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10766,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10763,"name":"ElementaryTypeName","src":"460:7:2"}],"id":10764,"name":"VariableDeclaration","src":"460:7:2"}],"id":10765,"name":"ParameterList","src":"459:9:2"}],"id":10766,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":10787,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":10775,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10767,"name":"ElementaryTypeName","src":"492:7:2"}],"id":10768,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":10775,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10769,"name":"ElementaryTypeName","src":"505:7:2"}],"id":10770,"name":"VariableDeclaration","src":"505:14:2"}],"id":10771,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10775,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10772,"name":"ElementaryTypeName","src":"539:4:2"}],"id":10773,"name":"VariableDeclaration","src":"539:4:2"}],"id":10774,"name":"ParameterList","src":"538:6:2"}],"id":10775,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":10787,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":10786,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10776,"name":"ElementaryTypeName","src":"572:7:2"}],"id":10777,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":10786,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10778,"name":"ElementaryTypeName","src":"587:7:2"}],"id":10779,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":10786,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10780,"name":"ElementaryTypeName","src":"600:7:2"}],"id":10781,"name":"VariableDeclaration","src":"600:14:2"}],"id":10782,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":10786,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10783,"name":"ElementaryTypeName","src":"634:4:2"}],"id":10784,"name":"VariableDeclaration","src":"634:4:2"}],"id":10785,"name":"ParameterList","src":"633:6:2"}],"id":10786,"name":"FunctionDefinition","src":"550:90:2"}],"id":10787,"name":"ContractDefinition","src":"152:490:2"}],"id":10788,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[11006]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":10789,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":10788,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":11007,"symbolAliases":[null],"unitAlias":""},"id":10790,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":11007,"symbolAliases":[null],"unitAlias":""},"id":10791,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":14287,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":11007,"symbolAliases":[null],"unitAlias":""},"id":10792,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[11006],"name":"SafeERC20","scope":11007},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":10793,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":10794,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":10795,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":14286,"type":"library Address"},"id":10796,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10797,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":10798,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10820,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10799,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":10800,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":10820,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10801,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":10802,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":10820,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10803,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":10804,"name":"VariableDeclaration","src":"1850:13:3"}],"id":10805,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":10806,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10807,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10800,"type":"contract ERC20","value":"token"},"id":10808,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10809,"name":"Identifier","src":"1910:3:3"}],"id":10810,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":10775,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10800,"type":"contract ERC20","value":"token"},"id":10811,"name":"Identifier","src":"1933:5:3"}],"id":10812,"name":"MemberAccess","src":"1933:14:3"}],"id":10813,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10802,"type":"address","value":"to"},"id":10814,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10804,"type":"uint256","value":"value"},"id":10815,"name":"Identifier","src":"1962:5:3"}],"id":10816,"name":"FunctionCall","src":"1910:58:3"}],"id":10817,"name":"FunctionCall","src":"1884:85:3"}],"id":10818,"name":"ExpressionStatement","src":"1884:85:3"}],"id":10819,"name":"Block","src":"1874:102:3"}],"id":10820,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10845,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10821,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":10822,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":10845,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10823,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":10824,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":10845,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10825,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":10826,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":10845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10827,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":10828,"name":"VariableDeclaration","src":"2047:13:3"}],"id":10829,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":10830,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10831,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10822,"type":"contract ERC20","value":"token"},"id":10832,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10833,"name":"Identifier","src":"2107:3:3"}],"id":10834,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":10786,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10822,"type":"contract ERC20","value":"token"},"id":10835,"name":"Identifier","src":"2130:5:3"}],"id":10836,"name":"MemberAccess","src":"2130:18:3"}],"id":10837,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10824,"type":"address","value":"from"},"id":10838,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10826,"type":"address","value":"to"},"id":10839,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10828,"type":"uint256","value":"value"},"id":10840,"name":"Identifier","src":"2169:5:3"}],"id":10841,"name":"FunctionCall","src":"2107:68:3"}],"id":10842,"name":"FunctionCall","src":"2081:95:3"}],"id":10843,"name":"ExpressionStatement","src":"2081:95:3"}],"id":10844,"name":"Block","src":"2071:112:3"}],"id":10845,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10886,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10846,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":10847,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":10886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10848,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":10849,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":10886,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10850,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":10851,"name":"VariableDeclaration","src":"2240:13:3"}],"id":10852,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":10853,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10854,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10851,"type":"uint256","value":"value"},"id":10855,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10856,"name":"Literal","src":"2562:1:3"}],"id":10857,"name":"BinaryOperation","src":"2553:10:3"}],"id":10858,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":10745,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10847,"type":"contract ERC20","value":"token"},"id":10859,"name":"Identifier","src":"2569:5:3"}],"id":10860,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$11006","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10861,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15731,"type":"library SafeERC20","value":"this"},"id":10862,"name":"Identifier","src":"2593:4:3"}],"id":10863,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10849,"type":"address","value":"spender"},"id":10864,"name":"Identifier","src":"2600:7:3"}],"id":10865,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10866,"name":"Literal","src":"2612:1:3"}],"id":10867,"name":"BinaryOperation","src":"2569:44:3"}],"id":10868,"name":"TupleExpression","src":"2568:46:3"}],"id":10869,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":10870,"name":"Literal","src":"2628:56:3"}],"id":10871,"name":"FunctionCall","src":"2544:150:3"}],"id":10872,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10873,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10847,"type":"contract ERC20","value":"token"},"id":10874,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10875,"name":"Identifier","src":"2730:3:3"}],"id":10876,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":10754,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10847,"type":"contract ERC20","value":"token"},"id":10877,"name":"Identifier","src":"2753:5:3"}],"id":10878,"name":"MemberAccess","src":"2753:13:3"}],"id":10879,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10849,"type":"address","value":"spender"},"id":10880,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10851,"type":"uint256","value":"value"},"id":10881,"name":"Identifier","src":"2786:5:3"}],"id":10882,"name":"FunctionCall","src":"2730:62:3"}],"id":10883,"name":"FunctionCall","src":"2704:89:3"}],"id":10884,"name":"ExpressionStatement","src":"2704:89:3"}],"id":10885,"name":"Block","src":"2264:536:3"}],"id":10886,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10921,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10887,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":10888,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":10921,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10889,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":10890,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":10921,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10891,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":10892,"name":"VariableDeclaration","src":"2867:13:3"}],"id":10893,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":10894,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[10896]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":10920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10895,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":10896,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":10745,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10888,"type":"contract ERC20","value":"token"},"id":10897,"name":"Identifier","src":"2924:5:3"}],"id":10898,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$11006","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10899,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15731,"type":"library SafeERC20","value":"this"},"id":10900,"name":"Identifier","src":"2948:4:3"}],"id":10901,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10890,"type":"address","value":"spender"},"id":10902,"name":"Identifier","src":"2955:7:3"}],"id":10903,"name":"FunctionCall","src":"2924:39:3"}],"id":10904,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10892,"type":"uint256","value":"value"},"id":10905,"name":"Identifier","src":"2968:5:3"}],"id":10906,"name":"FunctionCall","src":"2924:50:3"}],"id":10907,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10908,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10888,"type":"contract ERC20","value":"token"},"id":10909,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10910,"name":"Identifier","src":"3010:3:3"}],"id":10911,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":10754,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10888,"type":"contract ERC20","value":"token"},"id":10912,"name":"Identifier","src":"3033:5:3"}],"id":10913,"name":"MemberAccess","src":"3033:13:3"}],"id":10914,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10890,"type":"address","value":"spender"},"id":10915,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10896,"type":"uint256","value":"newAllowance"},"id":10916,"name":"Identifier","src":"3066:12:3"}],"id":10917,"name":"FunctionCall","src":"3010:69:3"}],"id":10918,"name":"FunctionCall","src":"2984:96:3"}],"id":10919,"name":"ExpressionStatement","src":"2984:96:3"}],"id":10920,"name":"Block","src":"2891:196:3"}],"id":10921,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":10956,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10922,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":10923,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":10956,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10924,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":10925,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":10956,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10926,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":10927,"name":"VariableDeclaration","src":"3154:13:3"}],"id":10928,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":10929,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[10931]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":10955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10930,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":10931,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1169,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":10745,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10923,"type":"contract ERC20","value":"token"},"id":10932,"name":"Identifier","src":"3211:5:3"}],"id":10933,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$11006","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10934,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15731,"type":"library SafeERC20","value":"this"},"id":10935,"name":"Identifier","src":"3235:4:3"}],"id":10936,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10925,"type":"address","value":"spender"},"id":10937,"name":"Identifier","src":"3242:7:3"}],"id":10938,"name":"FunctionCall","src":"3211:39:3"}],"id":10939,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10927,"type":"uint256","value":"value"},"id":10940,"name":"Identifier","src":"3255:5:3"}],"id":10941,"name":"FunctionCall","src":"3211:50:3"}],"id":10942,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11005,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":10943,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10923,"type":"contract ERC20","value":"token"},"id":10944,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10945,"name":"Identifier","src":"3297:3:3"}],"id":10946,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":10754,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10923,"type":"contract ERC20","value":"token"},"id":10947,"name":"Identifier","src":"3320:5:3"}],"id":10948,"name":"MemberAccess","src":"3320:13:3"}],"id":10949,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10925,"type":"address","value":"spender"},"id":10950,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10931,"type":"uint256","value":"newAllowance"},"id":10951,"name":"Identifier","src":"3353:12:3"}],"id":10952,"name":"FunctionCall","src":"3297:69:3"}],"id":10953,"name":"FunctionCall","src":"3271:96:3"}],"id":10954,"name":"ExpressionStatement","src":"3271:96:3"}],"id":10955,"name":"Block","src":"3178:196:3"}],"id":10956,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":11006,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":11005,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":10957,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":10958,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":11005,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10959,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":10960,"name":"VariableDeclaration","src":"3798:17:3"}],"id":10961,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":10962,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10963,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":14285,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10964,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10958,"type":"contract ERC20","value":"token"},"id":10965,"name":"Identifier","src":"4360:5:3"}],"id":10966,"name":"FunctionCall","src":"4352:14:3"}],"id":10967,"name":"MemberAccess","src":"4352:25:3"}],"id":10968,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":10969,"name":"Literal","src":"4381:33:3"}],"id":10970,"name":"FunctionCall","src":"4344:71:3"}],"id":10971,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[10973,10975]},"children":[{"attributes":{"constant":false,"name":"success","scope":11004,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10972,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":10973,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":11004,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10974,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":10975,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$10787","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":10976,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10958,"type":"contract ERC20","value":"token"},"id":10977,"name":"Identifier","src":"4535:5:3"}],"id":10978,"name":"FunctionCall","src":"4527:14:3"}],"id":10979,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10960,"type":"bytes memory","value":"data"},"id":10980,"name":"Identifier","src":"4547:4:3"}],"id":10981,"name":"FunctionCall","src":"4527:25:3"}],"id":10982,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10983,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10973,"type":"bool","value":"success"},"id":10984,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":10985,"name":"Literal","src":"4579:34:3"}],"id":10986,"name":"FunctionCall","src":"4562:52:3"}],"id":10987,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10975,"type":"bytes memory","value":"returndata"},"id":10988,"name":"Identifier","src":"4629:10:3"}],"id":10989,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10990,"name":"Literal","src":"4649:1:3"}],"id":10991,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10992,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":10993,"name":"Identifier","src":"4758:3:3"}],"id":10994,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10975,"type":"bytes memory","value":"returndata"},"id":10995,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":10996,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":10997,"name":"TupleExpression","src":"4781:6:3"}],"id":10998,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":10999,"name":"Literal","src":"4790:44:3"}],"id":11000,"name":"FunctionCall","src":"4750:85:3"}],"id":11001,"name":"ExpressionStatement","src":"4750:85:3"}],"id":11002,"name":"Block","src":"4652:194:3"}],"id":11003,"name":"IfStatement","src":"4625:221:3"}],"id":11004,"name":"Block","src":"3826:1026:3"}],"id":11005,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":11006,"name":"ContractDefinition","src":"1715:3139:3"}],"id":11007,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[1250]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1119,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[1250],"name":"SafeMath","scope":1251},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1120,"name":"ElementaryTypeName","src":"847:7:4"}],"id":1121,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":1144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1122,"name":"ElementaryTypeName","src":"858:7:4"}],"id":1123,"name":"VariableDeclaration","src":"858:9:4"}],"id":1124,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1125,"name":"ElementaryTypeName","src":"892:7:4"}],"id":1126,"name":"VariableDeclaration","src":"892:7:4"}],"id":1127,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[1129]},"children":[{"attributes":{"constant":false,"name":"c","scope":1143,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1128,"name":"ElementaryTypeName","src":"911:7:4"}],"id":1129,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1121,"type":"uint256","value":"a"},"id":1130,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1123,"type":"uint256","value":"b"},"id":1131,"name":"Identifier","src":"927:1:4"}],"id":1132,"name":"BinaryOperation","src":"923:5:4"}],"id":1133,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1134,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1129,"type":"uint256","value":"c"},"id":1135,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1121,"type":"uint256","value":"a"},"id":1136,"name":"Identifier","src":"951:1:4"}],"id":1137,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":1138,"name":"Literal","src":"954:29:4"}],"id":1139,"name":"FunctionCall","src":"938:46:4"}],"id":1140,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":1127},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1129,"type":"uint256","value":"c"},"id":1141,"name":"Identifier","src":"1002:1:4"}],"id":1142,"name":"Return","src":"995:8:4"}],"id":1143,"name":"Block","src":"901:109:4"}],"id":1144,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1169,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1145,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":1146,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":1169,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1147,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":1148,"name":"VariableDeclaration","src":"1298:9:4"}],"id":1149,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1169,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1150,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":1151,"name":"VariableDeclaration","src":"1332:7:4"}],"id":1152,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1153,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"uint256","value":"b"},"id":1154,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1146,"type":"uint256","value":"a"},"id":1155,"name":"Identifier","src":"1364:1:4"}],"id":1156,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":1157,"name":"Literal","src":"1367:32:4"}],"id":1158,"name":"FunctionCall","src":"1351:49:4"}],"id":1159,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[1161]},"children":[{"attributes":{"constant":false,"name":"c","scope":1168,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1160,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":1161,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1146,"type":"uint256","value":"a"},"id":1162,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"uint256","value":"b"},"id":1163,"name":"Identifier","src":"1426:1:4"}],"id":1164,"name":"BinaryOperation","src":"1422:5:4"}],"id":1165,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":1152},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1161,"type":"uint256","value":"c"},"id":1166,"name":"Identifier","src":"1445:1:4"}],"id":1167,"name":"Return","src":"1438:8:4"}],"id":1168,"name":"Block","src":"1341:112:4"}],"id":1169,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1170,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":1171,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":1203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1172,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":1173,"name":"VariableDeclaration","src":"1717:9:4"}],"id":1174,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1175,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":1176,"name":"VariableDeclaration","src":"1751:7:4"}],"id":1177,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1171,"type":"uint256","value":"a"},"id":1178,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1179,"name":"Literal","src":"1996:1:4"}],"id":1180,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":1177},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1181,"name":"Literal","src":"2020:1:4"}],"id":1182,"name":"Return","src":"2013:8:4"}],"id":1183,"name":"Block","src":"1999:33:4"}],"id":1184,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[1186]},"children":[{"attributes":{"constant":false,"name":"c","scope":1202,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1185,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":1186,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1171,"type":"uint256","value":"a"},"id":1187,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"b"},"id":1188,"name":"Identifier","src":"2058:1:4"}],"id":1189,"name":"BinaryOperation","src":"2054:5:4"}],"id":1190,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1191,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1186,"type":"uint256","value":"c"},"id":1192,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1171,"type":"uint256","value":"a"},"id":1193,"name":"Identifier","src":"2081:1:4"}],"id":1194,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1173,"type":"uint256","value":"b"},"id":1195,"name":"Identifier","src":"2086:1:4"}],"id":1196,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":1197,"name":"Literal","src":"2089:35:4"}],"id":1198,"name":"FunctionCall","src":"2069:56:4"}],"id":1199,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":1177},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1186,"type":"uint256","value":"c"},"id":1200,"name":"Identifier","src":"2143:1:4"}],"id":1201,"name":"Return","src":"2136:8:4"}],"id":1202,"name":"Block","src":"1760:391:4"}],"id":1203,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1204,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":1205,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":1228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1206,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":1207,"name":"VariableDeclaration","src":"2630:9:4"}],"id":1208,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1209,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":1210,"name":"VariableDeclaration","src":"2664:7:4"}],"id":1211,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1212,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1207,"type":"uint256","value":"b"},"id":1213,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1214,"name":"Literal","src":"2761:1:4"}],"id":1215,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":1216,"name":"Literal","src":"2764:28:4"}],"id":1217,"name":"FunctionCall","src":"2749:44:4"}],"id":1218,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[1220]},"children":[{"attributes":{"constant":false,"name":"c","scope":1227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1219,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":1220,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1205,"type":"uint256","value":"a"},"id":1221,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1207,"type":"uint256","value":"b"},"id":1222,"name":"Identifier","src":"2819:1:4"}],"id":1223,"name":"BinaryOperation","src":"2815:5:4"}],"id":1224,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":1211},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1220,"type":"uint256","value":"c"},"id":1225,"name":"Identifier","src":"2924:1:4"}],"id":1226,"name":"Return","src":"2917:8:4"}],"id":1227,"name":"Block","src":"2673:259:4"}],"id":1228,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":1250,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1229,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":1230,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":1249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1231,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":1232,"name":"VariableDeclaration","src":"3400:9:4"}],"id":1233,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1249,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1234,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":1235,"name":"VariableDeclaration","src":"3434:7:4"}],"id":1236,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1237,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1232,"type":"uint256","value":"b"},"id":1238,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1239,"name":"Literal","src":"3466:1:4"}],"id":1240,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":1241,"name":"Literal","src":"3469:26:4"}],"id":1242,"name":"FunctionCall","src":"3453:43:4"}],"id":1243,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":1236},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1230,"type":"uint256","value":"a"},"id":1244,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1232,"type":"uint256","value":"b"},"id":1245,"name":"Identifier","src":"3517:1:4"}],"id":1246,"name":"BinaryOperation","src":"3513:5:4"}],"id":1247,"name":"Return","src":"3506:12:4"}],"id":1248,"name":"Block","src":"3443:82:4"}],"id":1249,"name":"FunctionDefinition","src":"3376:149:4"}],"id":1250,"name":"ContractDefinition","src":"589:2938:4"}],"id":1251,"name":"SourceUnit","src":"0:3528:4"}},"externals/base64.sol":{"AST":{"attributes":{"absolutePath":"externals/base64.sol","exportedSymbols":{"Base64":[1574]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":1252,"name":"PragmaDirective","src":"0:24:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Base64 provides base 64 decoding functionality.","fullyImplemented":true,"linearizedBaseContracts":[1574],"name":"Base64","scope":1575},"children":[{"attributes":{"constant":true,"name":"BASE64_DECODE_CHAR","scope":1574,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1253,"name":"ElementaryTypeName","src":"286:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f30313233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000>\u0000>\u0000?456789:;<=\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u0000\u0000\u0000\u0000?\u0000\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123\"","value":"\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000>\u0000>\u0000?456789:;<=\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u0000\u0000\u0000\u0000?\u0000\u001a\u001b\u001c\u001d\u001e\u001f !\"#$%&'()*+,-./0123"},"id":1254,"name":"Literal","src":"322:251:5"}],"id":1255,"name":"VariableDeclaration","src":"286:287:5"},{"attributes":{"documentation":"@return decoded array of bytes.\n @param _encoded base 64 encoded array of bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_base64decode","scope":1574,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_encoded","scope":1573,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1256,"name":"ElementaryTypeName","src":"699:5:5"}],"id":1257,"name":"VariableDeclaration","src":"699:21:5"}],"id":1258,"name":"ParameterList","src":"698:23:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":1573,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1259,"name":"ElementaryTypeName","src":"745:5:5"}],"id":1260,"name":"VariableDeclaration","src":"745:12:5"}],"id":1261,"name":"ParameterList","src":"744:14:5"},{"children":[{"attributes":{"assignments":[1263],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v1","scope":1572,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1262,"name":"ElementaryTypeName","src":"769:4:5"}],"id":1263,"name":"VariableDeclaration","src":"769:7:5"}],"id":1264,"name":"VariableDeclarationStatement","src":"769:7:5"},{"attributes":{"assignments":[1266],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v2","scope":1572,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1265,"name":"ElementaryTypeName","src":"786:4:5"}],"id":1266,"name":"VariableDeclaration","src":"786:7:5"}],"id":1267,"name":"VariableDeclarationStatement","src":"786:7:5"},{"attributes":{"assignments":[1269],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v3","scope":1572,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1268,"name":"ElementaryTypeName","src":"803:4:5"}],"id":1269,"name":"VariableDeclaration","src":"803:7:5"}],"id":1270,"name":"VariableDeclarationStatement","src":"803:7:5"},{"attributes":{"assignments":[1272],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v4","scope":1572,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1271,"name":"ElementaryTypeName","src":"820:4:5"}],"id":1272,"name":"VariableDeclaration","src":"820:7:5"}],"id":1273,"name":"VariableDeclarationStatement","src":"820:7:5"},{"attributes":{"assignments":[1275]},"children":[{"attributes":{"constant":false,"name":"length","scope":1572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1274,"name":"ElementaryTypeName","src":"837:4:5"}],"id":1275,"name":"VariableDeclaration","src":"837:11:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1276,"name":"Identifier","src":"851:8:5"}],"id":1277,"name":"MemberAccess","src":"851:15:5"}],"id":1278,"name":"VariableDeclarationStatement","src":"837:29:5"},{"attributes":{"assignments":[1280]},"children":[{"attributes":{"constant":false,"name":"result","scope":1572,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1279,"name":"ElementaryTypeName","src":"876:5:5"}],"id":1280,"name":"VariableDeclaration","src":"876:19:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1281,"name":"ElementaryTypeName","src":"902:5:5"}],"id":1282,"name":"NewExpression","src":"898:9:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1283,"name":"Identifier","src":"908:6:5"}],"id":1284,"name":"FunctionCall","src":"898:17:5"}],"id":1285,"name":"VariableDeclarationStatement","src":"876:39:5"},{"attributes":{"assignments":[1287],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"index","scope":1572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1286,"name":"ElementaryTypeName","src":"925:4:5"}],"id":1287,"name":"VariableDeclaration","src":"925:10:5"}],"id":1288,"name":"VariableDeclarationStatement","src":"925:10:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0ced718491cb52017183196eff428e56ca4dea680831f565a9e1feeb6144c7b3","typeString":"literal_string \"invalid base64 encoding\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1289,"name":"Identifier","src":"1029:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1290,"name":"Identifier","src":"1037:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1291,"name":"Literal","src":"1046:1:5"}],"id":1292,"name":"BinaryOperation","src":"1037:10:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1293,"name":"Identifier","src":"1052:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1294,"name":"Literal","src":"1061:1:5"}],"id":1295,"name":"BinaryOperation","src":"1052:10:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1296,"name":"Literal","src":"1066:1:5"}],"id":1297,"name":"BinaryOperation","src":"1052:15:5"}],"id":1298,"name":"BinaryOperation","src":"1037:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c69642062617365363420656e636f64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid base64 encoding\"","value":"invalid base64 encoding"},"id":1299,"name":"Literal","src":"1069:25:5"}],"id":1300,"name":"FunctionCall","src":"1029:66:5"}],"id":1301,"name":"ExpressionStatement","src":"1029:66:5"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1302,"name":"Identifier","src":"1110:9:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":1303,"name":"Identifier","src":"1120:3:5"}],"id":1304,"name":"MemberAccess","src":"1120:16:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1305,"name":"Identifier","src":"1137:8:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1306,"name":"Identifier","src":"1146:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1307,"name":"Literal","src":"1155:1:5"}],"id":1308,"name":"BinaryOperation","src":"1146:10:5"}],"id":1309,"name":"IndexAccess","src":"1137:20:5"}],"id":1310,"name":"FunctionCall","src":"1120:38:5"}],"id":1311,"name":"FunctionCall","src":"1110:49:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f16","typeString":"literal_string \"=\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1312,"name":"Identifier","src":"1163:9:5"},{"attributes":{"argumentTypes":null,"hexvalue":"3d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"=\"","value":"="},"id":1313,"name":"Literal","src":"1173:3:5"}],"id":1314,"name":"FunctionCall","src":"1163:14:5"}],"id":1315,"name":"BinaryOperation","src":"1110:67:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1316,"name":"Identifier","src":"1193:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1317,"name":"Literal","src":"1203:1:5"}],"id":1318,"name":"Assignment","src":"1193:11:5"}],"id":1319,"name":"ExpressionStatement","src":"1193:11:5"}],"id":1320,"name":"Block","src":"1179:36:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1321,"name":"Identifier","src":"1225:9:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":1322,"name":"Identifier","src":"1235:3:5"}],"id":1323,"name":"MemberAccess","src":"1235:16:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1324,"name":"Identifier","src":"1252:8:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1325,"name":"Identifier","src":"1261:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1326,"name":"Literal","src":"1270:1:5"}],"id":1327,"name":"BinaryOperation","src":"1261:10:5"}],"id":1328,"name":"IndexAccess","src":"1252:20:5"}],"id":1329,"name":"FunctionCall","src":"1235:38:5"}],"id":1330,"name":"FunctionCall","src":"1225:49:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_f30c17f6c257181e11b9ea19fc7d498b2880fcad645a66e130edeab084271f16","typeString":"literal_string \"=\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1331,"name":"Identifier","src":"1278:9:5"},{"attributes":{"argumentTypes":null,"hexvalue":"3d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"=\"","value":"="},"id":1332,"name":"Literal","src":"1288:3:5"}],"id":1333,"name":"FunctionCall","src":"1278:14:5"}],"id":1334,"name":"BinaryOperation","src":"1225:67:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1335,"name":"Identifier","src":"1308:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1336,"name":"Literal","src":"1318:1:5"}],"id":1337,"name":"Assignment","src":"1308:11:5"}],"id":1338,"name":"ExpressionStatement","src":"1308:11:5"}],"id":1339,"name":"Block","src":"1294:36:5"}],"id":1340,"name":"IfStatement","src":"1221:109:5"}],"id":1341,"name":"IfStatement","src":"1106:224:5"},{"attributes":{"assignments":[1343]},"children":[{"attributes":{"constant":false,"name":"count","scope":1572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1342,"name":"ElementaryTypeName","src":"1340:4:5"}],"id":1343,"name":"VariableDeclaration","src":"1340:10:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1344,"name":"Identifier","src":"1353:6:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1345,"name":"Literal","src":"1363:1:5"}],"id":1346,"name":"BinaryOperation","src":"1353:11:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1347,"name":"Literal","src":"1368:1:5"}],"id":1348,"name":"BinaryOperation","src":"1353:16:5"}],"id":1349,"name":"VariableDeclarationStatement","src":"1340:29:5"},{"attributes":{"assignments":[1351],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"i","scope":1572,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1350,"name":"ElementaryTypeName","src":"1379:4:5"}],"id":1351,"name":"VariableDeclaration","src":"1379:6:5"}],"id":1352,"name":"VariableDeclarationStatement","src":"1379:6:5"},{"attributes":{"loopExpression":null},"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1353,"name":"Identifier","src":"1401:1:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1354,"name":"Literal","src":"1405:1:5"}],"id":1355,"name":"Assignment","src":"1401:5:5"}],"id":1356,"name":"ExpressionStatement","src":"1401:5:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1357,"name":"Identifier","src":"1408:1:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"uint256","value":"count"},"id":1358,"name":"Identifier","src":"1412:5:5"}],"id":1359,"name":"BinaryOperation","src":"1408:9:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1360,"name":"Identifier","src":"1434:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1361,"name":"Identifier","src":"1439:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1362,"name":"ElementaryTypeNameExpression","src":"1458:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1363,"name":"Identifier","src":"1464:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1364,"name":"Identifier","src":"1473:1:5"}],"id":1365,"name":"UnaryOperation","src":"1473:3:5"}],"id":1366,"name":"IndexAccess","src":"1464:13:5"}],"id":1367,"name":"FunctionCall","src":"1458:20:5"}],"id":1368,"name":"IndexAccess","src":"1439:40:5"}],"id":1369,"name":"Assignment","src":"1434:45:5"}],"id":1370,"name":"ExpressionStatement","src":"1434:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1371,"name":"Identifier","src":"1493:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1372,"name":"Identifier","src":"1498:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1373,"name":"ElementaryTypeNameExpression","src":"1517:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1374,"name":"Identifier","src":"1523:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1375,"name":"Identifier","src":"1532:1:5"}],"id":1376,"name":"UnaryOperation","src":"1532:3:5"}],"id":1377,"name":"IndexAccess","src":"1523:13:5"}],"id":1378,"name":"FunctionCall","src":"1517:20:5"}],"id":1379,"name":"IndexAccess","src":"1498:40:5"}],"id":1380,"name":"Assignment","src":"1493:45:5"}],"id":1381,"name":"ExpressionStatement","src":"1493:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1382,"name":"Identifier","src":"1552:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1383,"name":"Identifier","src":"1557:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1384,"name":"ElementaryTypeNameExpression","src":"1576:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1385,"name":"Identifier","src":"1582:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1386,"name":"Identifier","src":"1591:1:5"}],"id":1387,"name":"UnaryOperation","src":"1591:3:5"}],"id":1388,"name":"IndexAccess","src":"1582:13:5"}],"id":1389,"name":"FunctionCall","src":"1576:20:5"}],"id":1390,"name":"IndexAccess","src":"1557:40:5"}],"id":1391,"name":"Assignment","src":"1552:45:5"}],"id":1392,"name":"ExpressionStatement","src":"1552:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1272,"type":"bytes1","value":"v4"},"id":1393,"name":"Identifier","src":"1611:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1394,"name":"Identifier","src":"1616:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1395,"name":"ElementaryTypeNameExpression","src":"1635:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1396,"name":"Identifier","src":"1641:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1397,"name":"Identifier","src":"1650:1:5"}],"id":1398,"name":"UnaryOperation","src":"1650:3:5"}],"id":1399,"name":"IndexAccess","src":"1641:13:5"}],"id":1400,"name":"FunctionCall","src":"1635:20:5"}],"id":1401,"name":"IndexAccess","src":"1616:40:5"}],"id":1402,"name":"Assignment","src":"1611:45:5"}],"id":1403,"name":"ExpressionStatement","src":"1611:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1404,"name":"Identifier","src":"1671:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1405,"name":"Identifier","src":"1678:5:5"}],"id":1406,"name":"UnaryOperation","src":"1678:7:5"}],"id":1407,"name":"IndexAccess","src":"1671:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1408,"name":"Identifier","src":"1690:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1409,"name":"Literal","src":"1696:1:5"}],"id":1410,"name":"BinaryOperation","src":"1690:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1411,"name":"Identifier","src":"1700:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1412,"name":"Literal","src":"1706:1:5"}],"id":1413,"name":"BinaryOperation","src":"1700:7:5"}],"id":1414,"name":"BinaryOperation","src":"1690:17:5"}],"id":1415,"name":"TupleExpression","src":"1689:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1416,"name":"Literal","src":"1711:4:5"}],"id":1417,"name":"BinaryOperation","src":"1689:26:5"}],"id":1418,"name":"Assignment","src":"1671:44:5"}],"id":1419,"name":"ExpressionStatement","src":"1671:44:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1420,"name":"Identifier","src":"1729:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1421,"name":"Identifier","src":"1736:5:5"}],"id":1422,"name":"UnaryOperation","src":"1736:7:5"}],"id":1423,"name":"IndexAccess","src":"1729:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1424,"name":"Identifier","src":"1748:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1425,"name":"Literal","src":"1754:1:5"}],"id":1426,"name":"BinaryOperation","src":"1748:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1427,"name":"Identifier","src":"1758:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1428,"name":"Literal","src":"1764:1:5"}],"id":1429,"name":"BinaryOperation","src":"1758:7:5"}],"id":1430,"name":"BinaryOperation","src":"1748:17:5"}],"id":1431,"name":"TupleExpression","src":"1747:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1432,"name":"Literal","src":"1769:4:5"}],"id":1433,"name":"BinaryOperation","src":"1747:26:5"}],"id":1434,"name":"Assignment","src":"1729:44:5"}],"id":1435,"name":"ExpressionStatement","src":"1729:44:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1436,"name":"Identifier","src":"1787:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1437,"name":"Identifier","src":"1794:5:5"}],"id":1438,"name":"UnaryOperation","src":"1794:7:5"}],"id":1439,"name":"IndexAccess","src":"1787:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1440,"name":"Identifier","src":"1806:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":1441,"name":"Literal","src":"1812:1:5"}],"id":1442,"name":"BinaryOperation","src":"1806:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1272,"type":"bytes1","value":"v4"},"id":1443,"name":"Identifier","src":"1816:2:5"}],"id":1444,"name":"BinaryOperation","src":"1806:12:5"}],"id":1445,"name":"TupleExpression","src":"1805:14:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1446,"name":"Literal","src":"1822:4:5"}],"id":1447,"name":"BinaryOperation","src":"1805:21:5"}],"id":1448,"name":"Assignment","src":"1787:39:5"}],"id":1449,"name":"ExpressionStatement","src":"1787:39:5"}],"id":1450,"name":"Block","src":"1420:417:5"}],"id":1451,"name":"ForStatement","src":"1396:441:5"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1452,"name":"Identifier","src":"1851:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"uint256","value":"count"},"id":1453,"name":"Identifier","src":"1860:5:5"}],"id":1454,"name":"BinaryOperation","src":"1851:14:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1455,"name":"Literal","src":"1869:1:5"}],"id":1456,"name":"BinaryOperation","src":"1851:19:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1457,"name":"Identifier","src":"1886:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1458,"name":"Identifier","src":"1891:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1459,"name":"ElementaryTypeNameExpression","src":"1910:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1460,"name":"Identifier","src":"1916:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1461,"name":"Identifier","src":"1925:1:5"}],"id":1462,"name":"UnaryOperation","src":"1925:3:5"}],"id":1463,"name":"IndexAccess","src":"1916:13:5"}],"id":1464,"name":"FunctionCall","src":"1910:20:5"}],"id":1465,"name":"IndexAccess","src":"1891:40:5"}],"id":1466,"name":"Assignment","src":"1886:45:5"}],"id":1467,"name":"ExpressionStatement","src":"1886:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1468,"name":"Identifier","src":"1945:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1469,"name":"Identifier","src":"1950:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1470,"name":"ElementaryTypeNameExpression","src":"1969:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1471,"name":"Identifier","src":"1975:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1472,"name":"Identifier","src":"1984:1:5"}],"id":1473,"name":"UnaryOperation","src":"1984:3:5"}],"id":1474,"name":"IndexAccess","src":"1975:13:5"}],"id":1475,"name":"FunctionCall","src":"1969:20:5"}],"id":1476,"name":"IndexAccess","src":"1950:40:5"}],"id":1477,"name":"Assignment","src":"1945:45:5"}],"id":1478,"name":"ExpressionStatement","src":"1945:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1479,"name":"Identifier","src":"2005:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1480,"name":"Identifier","src":"2012:5:5"}],"id":1481,"name":"UnaryOperation","src":"2012:7:5"}],"id":1482,"name":"IndexAccess","src":"2005:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1483,"name":"Identifier","src":"2024:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1484,"name":"Literal","src":"2030:1:5"}],"id":1485,"name":"BinaryOperation","src":"2024:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1486,"name":"Identifier","src":"2034:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1487,"name":"Literal","src":"2040:1:5"}],"id":1488,"name":"BinaryOperation","src":"2034:7:5"}],"id":1489,"name":"BinaryOperation","src":"2024:17:5"}],"id":1490,"name":"TupleExpression","src":"2023:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1491,"name":"Literal","src":"2045:4:5"}],"id":1492,"name":"BinaryOperation","src":"2023:26:5"}],"id":1493,"name":"Assignment","src":"2005:44:5"}],"id":1494,"name":"ExpressionStatement","src":"2005:44:5"}],"id":1495,"name":"Block","src":"1872:188:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1275,"type":"uint256","value":"length"},"id":1496,"name":"Identifier","src":"2070:6:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1343,"type":"uint256","value":"count"},"id":1497,"name":"Identifier","src":"2079:5:5"}],"id":1498,"name":"BinaryOperation","src":"2070:14:5"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1499,"name":"Literal","src":"2088:1:5"}],"id":1500,"name":"BinaryOperation","src":"2070:19:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1501,"name":"Identifier","src":"2105:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1502,"name":"Identifier","src":"2110:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1503,"name":"ElementaryTypeNameExpression","src":"2129:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1504,"name":"Identifier","src":"2135:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1505,"name":"Identifier","src":"2144:1:5"}],"id":1506,"name":"UnaryOperation","src":"2144:3:5"}],"id":1507,"name":"IndexAccess","src":"2135:13:5"}],"id":1508,"name":"FunctionCall","src":"2129:20:5"}],"id":1509,"name":"IndexAccess","src":"2110:40:5"}],"id":1510,"name":"Assignment","src":"2105:45:5"}],"id":1511,"name":"ExpressionStatement","src":"2105:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1512,"name":"Identifier","src":"2164:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1513,"name":"Identifier","src":"2169:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1514,"name":"ElementaryTypeNameExpression","src":"2188:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1515,"name":"Identifier","src":"2194:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1516,"name":"Identifier","src":"2203:1:5"}],"id":1517,"name":"UnaryOperation","src":"2203:3:5"}],"id":1518,"name":"IndexAccess","src":"2194:13:5"}],"id":1519,"name":"FunctionCall","src":"2188:20:5"}],"id":1520,"name":"IndexAccess","src":"2169:40:5"}],"id":1521,"name":"Assignment","src":"2164:45:5"}],"id":1522,"name":"ExpressionStatement","src":"2164:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1523,"name":"Identifier","src":"2223:2:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1255,"type":"bytes memory","value":"BASE64_DECODE_CHAR"},"id":1524,"name":"Identifier","src":"2228:18:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1525,"name":"ElementaryTypeNameExpression","src":"2247:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1257,"type":"bytes memory","value":"_encoded"},"id":1526,"name":"Identifier","src":"2253:8:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1351,"type":"uint256","value":"i"},"id":1527,"name":"Identifier","src":"2262:1:5"}],"id":1528,"name":"UnaryOperation","src":"2262:3:5"}],"id":1529,"name":"IndexAccess","src":"2253:13:5"}],"id":1530,"name":"FunctionCall","src":"2247:20:5"}],"id":1531,"name":"IndexAccess","src":"2228:40:5"}],"id":1532,"name":"Assignment","src":"2223:45:5"}],"id":1533,"name":"ExpressionStatement","src":"2223:45:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1534,"name":"Identifier","src":"2283:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1535,"name":"Identifier","src":"2290:5:5"}],"id":1536,"name":"UnaryOperation","src":"2290:7:5"}],"id":1537,"name":"IndexAccess","src":"2283:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1263,"type":"bytes1","value":"v1"},"id":1538,"name":"Identifier","src":"2302:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1539,"name":"Literal","src":"2308:1:5"}],"id":1540,"name":"BinaryOperation","src":"2302:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1541,"name":"Identifier","src":"2312:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1542,"name":"Literal","src":"2318:1:5"}],"id":1543,"name":"BinaryOperation","src":"2312:7:5"}],"id":1544,"name":"BinaryOperation","src":"2302:17:5"}],"id":1545,"name":"TupleExpression","src":"2301:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1546,"name":"Literal","src":"2323:4:5"}],"id":1547,"name":"BinaryOperation","src":"2301:26:5"}],"id":1548,"name":"Assignment","src":"2283:44:5"}],"id":1549,"name":"ExpressionStatement","src":"2283:44:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1550,"name":"Identifier","src":"2341:6:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1287,"type":"uint256","value":"index"},"id":1551,"name":"Identifier","src":"2348:5:5"}],"id":1552,"name":"UnaryOperation","src":"2348:7:5"}],"id":1553,"name":"IndexAccess","src":"2341:15:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"bytes1","value":"v2"},"id":1554,"name":"Identifier","src":"2360:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1555,"name":"Literal","src":"2366:1:5"}],"id":1556,"name":"BinaryOperation","src":"2360:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1269,"type":"bytes1","value":"v3"},"id":1557,"name":"Identifier","src":"2370:2:5"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1558,"name":"Literal","src":"2376:1:5"}],"id":1559,"name":"BinaryOperation","src":"2370:7:5"}],"id":1560,"name":"BinaryOperation","src":"2360:17:5"}],"id":1561,"name":"TupleExpression","src":"2359:19:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1562,"name":"Literal","src":"2381:4:5"}],"id":1563,"name":"BinaryOperation","src":"2359:26:5"}],"id":1564,"name":"Assignment","src":"2341:44:5"}],"id":1565,"name":"ExpressionStatement","src":"2341:44:5"}],"id":1566,"name":"Block","src":"2091:305:5"}],"id":1567,"name":"IfStatement","src":"2066:330:5"}],"id":1568,"name":"IfStatement","src":"1847:549:5"},{"attributes":{"externalReferences":[{"result":{"declaration":1280,"isOffset":false,"isSlot":false,"src":"2470:6:5","valueSize":1}},{"index":{"declaration":1287,"isOffset":false,"isSlot":false,"src":"2478:5:5","valueSize":1}}],"operations":"{ mstore(result, index) }"},"children":[],"id":1569,"name":"InlineAssembly","src":"2440:54:5"},{"attributes":{"functionReturnParameters":1261},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"bytes memory","value":"result"},"id":1570,"name":"Identifier","src":"2511:6:5"}],"id":1571,"name":"Return","src":"2504:13:5"}],"id":1572,"name":"Block","src":"759:1765:5"}],"id":1573,"name":"FunctionDefinition","src":"676:1848:5"}],"id":1574,"name":"ContractDefinition","src":"264:2262:5"}],"id":1575,"name":"SourceUnit","src":"0:2527:5"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[9572]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":9437,"name":"PragmaDirective","src":"1400:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[9572],"name":"ENS","scope":9573},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":9445,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9438,"name":"ElementaryTypeName","src":"1534:7:6"}],"id":9439,"name":"VariableDeclaration","src":"1534:21:6"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":9445,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9440,"name":"ElementaryTypeName","src":"1557:7:6"}],"id":9441,"name":"VariableDeclaration","src":"1557:22:6"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":9445,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9442,"name":"ElementaryTypeName","src":"1581:7:6"}],"id":9443,"name":"VariableDeclaration","src":"1581:14:6"}],"id":9444,"name":"ParameterList","src":"1533:63:6"}],"id":9445,"name":"EventDefinition","src":"1519:78:6"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":9451,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9446,"name":"ElementaryTypeName","src":"1695:7:6"}],"id":9447,"name":"VariableDeclaration","src":"1695:21:6"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":9451,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9448,"name":"ElementaryTypeName","src":"1718:7:6"}],"id":9449,"name":"VariableDeclaration","src":"1718:14:6"}],"id":9450,"name":"ParameterList","src":"1694:39:6"}],"id":9451,"name":"EventDefinition","src":"1680:54:6"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":9457,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9452,"name":"ElementaryTypeName","src":"1810:7:6"}],"id":9453,"name":"VariableDeclaration","src":"1810:21:6"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":9457,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9454,"name":"ElementaryTypeName","src":"1833:7:6"}],"id":9455,"name":"VariableDeclaration","src":"1833:17:6"}],"id":9456,"name":"ParameterList","src":"1809:42:6"}],"id":9457,"name":"EventDefinition","src":"1792:60:6"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":9463,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9458,"name":"ElementaryTypeName","src":"1916:7:6"}],"id":9459,"name":"VariableDeclaration","src":"1916:21:6"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":9463,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9460,"name":"ElementaryTypeName","src":"1939:6:6"}],"id":9461,"name":"VariableDeclaration","src":"1939:11:6"}],"id":9462,"name":"ParameterList","src":"1915:36:6"}],"id":9463,"name":"EventDefinition","src":"1903:49:6"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":9471,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9464,"name":"ElementaryTypeName","src":"2031:7:6"}],"id":9465,"name":"VariableDeclaration","src":"2031:22:6"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":9471,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9466,"name":"ElementaryTypeName","src":"2055:7:6"}],"id":9467,"name":"VariableDeclaration","src":"2055:25:6"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":9471,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9468,"name":"ElementaryTypeName","src":"2082:4:6"}],"id":9469,"name":"VariableDeclaration","src":"2082:14:6"}],"id":9470,"name":"ParameterList","src":"2030:67:6"}],"id":9471,"name":"EventDefinition","src":"2010:88:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9482,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9472,"name":"ElementaryTypeName","src":"2123:7:6"}],"id":9473,"name":"VariableDeclaration","src":"2123:13:6"},{"attributes":{"constant":false,"name":"_owner","scope":9482,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9474,"name":"ElementaryTypeName","src":"2138:7:6"}],"id":9475,"name":"VariableDeclaration","src":"2138:14:6"},{"attributes":{"constant":false,"name":"_resolver","scope":9482,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9476,"name":"ElementaryTypeName","src":"2154:7:6"}],"id":9477,"name":"VariableDeclaration","src":"2154:17:6"},{"attributes":{"constant":false,"name":"_ttl","scope":9482,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9478,"name":"ElementaryTypeName","src":"2173:6:6"}],"id":9479,"name":"VariableDeclaration","src":"2173:11:6"}],"id":9480,"name":"ParameterList","src":"2122:63:6"},{"attributes":{"parameters":[null]},"children":[],"id":9481,"name":"ParameterList","src":"2194:0:6"}],"id":9482,"name":"FunctionDefinition","src":"2104:91:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9495,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9483,"name":"ElementaryTypeName","src":"2226:7:6"}],"id":9484,"name":"VariableDeclaration","src":"2226:13:6"},{"attributes":{"constant":false,"name":"_label","scope":9495,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9485,"name":"ElementaryTypeName","src":"2241:7:6"}],"id":9486,"name":"VariableDeclaration","src":"2241:14:6"},{"attributes":{"constant":false,"name":"_owner","scope":9495,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9487,"name":"ElementaryTypeName","src":"2257:7:6"}],"id":9488,"name":"VariableDeclaration","src":"2257:14:6"},{"attributes":{"constant":false,"name":"_resolver","scope":9495,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9489,"name":"ElementaryTypeName","src":"2273:7:6"}],"id":9490,"name":"VariableDeclaration","src":"2273:17:6"},{"attributes":{"constant":false,"name":"_ttl","scope":9495,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9491,"name":"ElementaryTypeName","src":"2292:6:6"}],"id":9492,"name":"VariableDeclaration","src":"2292:11:6"}],"id":9493,"name":"ParameterList","src":"2225:79:6"},{"attributes":{"parameters":[null]},"children":[],"id":9494,"name":"ParameterList","src":"2313:0:6"}],"id":9495,"name":"FunctionDefinition","src":"2200:114:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9506,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9496,"name":"ElementaryTypeName","src":"2344:7:6"}],"id":9497,"name":"VariableDeclaration","src":"2344:13:6"},{"attributes":{"constant":false,"name":"_label","scope":9506,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9498,"name":"ElementaryTypeName","src":"2359:7:6"}],"id":9499,"name":"VariableDeclaration","src":"2359:14:6"},{"attributes":{"constant":false,"name":"_owner","scope":9506,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9500,"name":"ElementaryTypeName","src":"2375:7:6"}],"id":9501,"name":"VariableDeclaration","src":"2375:14:6"}],"id":9502,"name":"ParameterList","src":"2343:47:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9506,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9503,"name":"ElementaryTypeName","src":"2408:7:6"}],"id":9504,"name":"VariableDeclaration","src":"2408:7:6"}],"id":9505,"name":"ParameterList","src":"2407:9:6"}],"id":9506,"name":"FunctionDefinition","src":"2319:98:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9513,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9507,"name":"ElementaryTypeName","src":"2443:7:6"}],"id":9508,"name":"VariableDeclaration","src":"2443:13:6"},{"attributes":{"constant":false,"name":"_resolver","scope":9513,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9509,"name":"ElementaryTypeName","src":"2458:7:6"}],"id":9510,"name":"VariableDeclaration","src":"2458:17:6"}],"id":9511,"name":"ParameterList","src":"2442:34:6"},{"attributes":{"parameters":[null]},"children":[],"id":9512,"name":"ParameterList","src":"2485:0:6"}],"id":9513,"name":"FunctionDefinition","src":"2422:64:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9520,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9514,"name":"ElementaryTypeName","src":"2509:7:6"}],"id":9515,"name":"VariableDeclaration","src":"2509:13:6"},{"attributes":{"constant":false,"name":"_owner","scope":9520,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9516,"name":"ElementaryTypeName","src":"2524:7:6"}],"id":9517,"name":"VariableDeclaration","src":"2524:14:6"}],"id":9518,"name":"ParameterList","src":"2508:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":9519,"name":"ParameterList","src":"2548:0:6"}],"id":9520,"name":"FunctionDefinition","src":"2491:58:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9527,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9521,"name":"ElementaryTypeName","src":"2570:7:6"}],"id":9522,"name":"VariableDeclaration","src":"2570:13:6"},{"attributes":{"constant":false,"name":"_ttl","scope":9527,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9523,"name":"ElementaryTypeName","src":"2585:6:6"}],"id":9524,"name":"VariableDeclaration","src":"2585:11:6"}],"id":9525,"name":"ParameterList","src":"2569:28:6"},{"attributes":{"parameters":[null]},"children":[],"id":9526,"name":"ParameterList","src":"2606:0:6"}],"id":9527,"name":"FunctionDefinition","src":"2554:53:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":9572,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":9534,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9528,"name":"ElementaryTypeName","src":"2639:7:6"}],"id":9529,"name":"VariableDeclaration","src":"2639:17:6"},{"attributes":{"constant":false,"name":"_approved","scope":9534,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9530,"name":"ElementaryTypeName","src":"2658:4:6"}],"id":9531,"name":"VariableDeclaration","src":"2658:14:6"}],"id":9532,"name":"ParameterList","src":"2638:35:6"},{"attributes":{"parameters":[null]},"children":[],"id":9533,"name":"ParameterList","src":"2682:0:6"}],"id":9534,"name":"FunctionDefinition","src":"2612:71:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9541,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9535,"name":"ElementaryTypeName","src":"2703:7:6"}],"id":9536,"name":"VariableDeclaration","src":"2703:13:6"}],"id":9537,"name":"ParameterList","src":"2702:15:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9541,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9538,"name":"ElementaryTypeName","src":"2741:7:6"}],"id":9539,"name":"VariableDeclaration","src":"2741:7:6"}],"id":9540,"name":"ParameterList","src":"2740:9:6"}],"id":9541,"name":"FunctionDefinition","src":"2688:62:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9548,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9542,"name":"ElementaryTypeName","src":"2773:7:6"}],"id":9543,"name":"VariableDeclaration","src":"2773:13:6"}],"id":9544,"name":"ParameterList","src":"2772:15:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9548,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9545,"name":"ElementaryTypeName","src":"2811:7:6"}],"id":9546,"name":"VariableDeclaration","src":"2811:7:6"}],"id":9547,"name":"ParameterList","src":"2810:9:6"}],"id":9548,"name":"FunctionDefinition","src":"2755:65:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9555,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9549,"name":"ElementaryTypeName","src":"2838:7:6"}],"id":9550,"name":"VariableDeclaration","src":"2838:13:6"}],"id":9551,"name":"ParameterList","src":"2837:15:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9555,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":9552,"name":"ElementaryTypeName","src":"2876:6:6"}],"id":9553,"name":"VariableDeclaration","src":"2876:6:6"}],"id":9554,"name":"ParameterList","src":"2875:8:6"}],"id":9555,"name":"FunctionDefinition","src":"2825:59:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":9562,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9556,"name":"ElementaryTypeName","src":"2911:7:6"}],"id":9557,"name":"VariableDeclaration","src":"2911:13:6"}],"id":9558,"name":"ParameterList","src":"2910:15:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9562,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9559,"name":"ElementaryTypeName","src":"2949:4:6"}],"id":9560,"name":"VariableDeclaration","src":"2949:4:6"}],"id":9561,"name":"ParameterList","src":"2948:6:6"}],"id":9562,"name":"FunctionDefinition","src":"2889:66:6"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":9572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":9571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9563,"name":"ElementaryTypeName","src":"2986:7:6"}],"id":9564,"name":"VariableDeclaration","src":"2986:14:6"},{"attributes":{"constant":false,"name":"_operator","scope":9571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9565,"name":"ElementaryTypeName","src":"3002:7:6"}],"id":9566,"name":"VariableDeclaration","src":"3002:17:6"}],"id":9567,"name":"ParameterList","src":"2985:35:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":9571,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9568,"name":"ElementaryTypeName","src":"3044:4:6"}],"id":9569,"name":"VariableDeclaration","src":"3044:4:6"}],"id":9570,"name":"ParameterList","src":"3043:6:6"}],"id":9571,"name":"FunctionDefinition","src":"2960:90:6"}],"id":9572,"name":"ContractDefinition","src":"1425:1627:6"}],"id":9573,"name":"SourceUnit","src":"1400:1653:6"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[15694]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":14975,"name":"PragmaDirective","src":"0:24:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[15694],"name":"ENSBytesUtils","scope":15695},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14997,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14976,"name":"ElementaryTypeName","src":"325:5:7"}],"id":14977,"name":"VariableDeclaration","src":"325:17:7"},{"attributes":{"constant":false,"name":"offset","scope":14997,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14978,"name":"ElementaryTypeName","src":"344:4:7"}],"id":14979,"name":"VariableDeclaration","src":"344:11:7"},{"attributes":{"constant":false,"name":"len","scope":14997,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14980,"name":"ElementaryTypeName","src":"357:4:7"}],"id":14981,"name":"VariableDeclaration","src":"357:8:7"}],"id":14982,"name":"ParameterList","src":"324:42:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":14997,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":14983,"name":"ElementaryTypeName","src":"390:7:7"}],"id":14984,"name":"VariableDeclaration","src":"390:11:7"}],"id":14985,"name":"ParameterList","src":"389:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":14986,"name":"Identifier","src":"413:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14979,"type":"uint256","value":"offset"},"id":14987,"name":"Identifier","src":"421:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14981,"type":"uint256","value":"len"},"id":14988,"name":"Identifier","src":"430:3:7"}],"id":14989,"name":"BinaryOperation","src":"421:12:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14977,"type":"bytes memory","value":"self"},"id":14990,"name":"Identifier","src":"437:4:7"}],"id":14991,"name":"MemberAccess","src":"437:11:7"}],"id":14992,"name":"BinaryOperation","src":"421:27:7"}],"id":14993,"name":"FunctionCall","src":"413:36:7"}],"id":14994,"name":"ExpressionStatement","src":"413:36:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":14984,"isOffset":false,"isSlot":false,"src":"482:3:7","valueSize":1}},{"self":{"declaration":14977,"isOffset":false,"isSlot":false,"src":"507:4:7","valueSize":1}},{"offset":{"declaration":14979,"isOffset":false,"isSlot":false,"src":"518:6:7","valueSize":1}},{"len":{"declaration":14981,"isOffset":false,"isSlot":false,"src":"527:3:7","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":14995,"name":"InlineAssembly","src":"459:82:7"}],"id":14996,"name":"Block","src":"403:144:7"}],"id":14997,"name":"FunctionDefinition","src":"309:238:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15018,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14998,"name":"ElementaryTypeName","src":"920:5:7"}],"id":14999,"name":"VariableDeclaration","src":"920:17:7"},{"attributes":{"constant":false,"name":"other","scope":15018,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15000,"name":"ElementaryTypeName","src":"939:5:7"}],"id":15001,"name":"VariableDeclaration","src":"939:18:7"}],"id":15002,"name":"ParameterList","src":"919:39:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15018,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":15003,"name":"ElementaryTypeName","src":"982:3:7"}],"id":15004,"name":"VariableDeclaration","src":"982:3:7"}],"id":15005,"name":"ParameterList","src":"981:5:7"},{"children":[{"attributes":{"functionReturnParameters":15005},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[15018,15150],"referencedDeclaration":15150,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":15006,"name":"Identifier","src":"1004:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14999,"type":"bytes memory","value":"self"},"id":15007,"name":"Identifier","src":"1012:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15008,"name":"Literal","src":"1018:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14999,"type":"bytes memory","value":"self"},"id":15009,"name":"Identifier","src":"1021:4:7"}],"id":15010,"name":"MemberAccess","src":"1021:11:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15001,"type":"bytes memory","value":"other"},"id":15011,"name":"Identifier","src":"1034:5:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15012,"name":"Literal","src":"1041:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15001,"type":"bytes memory","value":"other"},"id":15013,"name":"Identifier","src":"1044:5:7"}],"id":15014,"name":"MemberAccess","src":"1044:12:7"}],"id":15015,"name":"FunctionCall","src":"1004:53:7"}],"id":15016,"name":"Return","src":"997:60:7"}],"id":15017,"name":"Block","src":"987:77:7"}],"id":15018,"name":"FunctionDefinition","src":"903:161:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15150,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15019,"name":"ElementaryTypeName","src":"1694:5:7"}],"id":15020,"name":"VariableDeclaration","src":"1694:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15021,"name":"ElementaryTypeName","src":"1713:4:7"}],"id":15022,"name":"VariableDeclaration","src":"1713:11:7"},{"attributes":{"constant":false,"name":"len","scope":15150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15023,"name":"ElementaryTypeName","src":"1726:4:7"}],"id":15024,"name":"VariableDeclaration","src":"1726:8:7"},{"attributes":{"constant":false,"name":"other","scope":15150,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15025,"name":"ElementaryTypeName","src":"1736:5:7"}],"id":15026,"name":"VariableDeclaration","src":"1736:18:7"},{"attributes":{"constant":false,"name":"otheroffset","scope":15150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15027,"name":"ElementaryTypeName","src":"1756:4:7"}],"id":15028,"name":"VariableDeclaration","src":"1756:16:7"},{"attributes":{"constant":false,"name":"otherlen","scope":15150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15029,"name":"ElementaryTypeName","src":"1774:4:7"}],"id":15030,"name":"VariableDeclaration","src":"1774:13:7"}],"id":15031,"name":"ParameterList","src":"1693:95:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15150,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":15032,"name":"ElementaryTypeName","src":"1812:3:7"}],"id":15033,"name":"VariableDeclaration","src":"1812:3:7"}],"id":15034,"name":"ParameterList","src":"1811:5:7"},{"children":[{"attributes":{"assignments":[15036]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":15149,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15035,"name":"ElementaryTypeName","src":"1827:4:7"}],"id":15036,"name":"VariableDeclaration","src":"1827:13:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15024,"type":"uint256","value":"len"},"id":15037,"name":"Identifier","src":"1843:3:7"}],"id":15038,"name":"VariableDeclarationStatement","src":"1827:19:7"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15030,"type":"uint256","value":"otherlen"},"id":15039,"name":"Identifier","src":"1860:8:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15024,"type":"uint256","value":"len"},"id":15040,"name":"Identifier","src":"1871:3:7"}],"id":15041,"name":"BinaryOperation","src":"1860:14:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15036,"type":"uint256","value":"shortest"},"id":15042,"name":"Identifier","src":"1884:8:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15030,"type":"uint256","value":"otherlen"},"id":15043,"name":"Identifier","src":"1895:8:7"}],"id":15044,"name":"Assignment","src":"1884:19:7"}],"id":15045,"name":"ExpressionStatement","src":"1884:19:7"}],"id":15046,"name":"IfStatement","src":"1856:47:7"},{"attributes":{"assignments":[15048],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":15149,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15047,"name":"ElementaryTypeName","src":"1914:4:7"}],"id":15048,"name":"VariableDeclaration","src":"1914:12:7"}],"id":15049,"name":"VariableDeclarationStatement","src":"1914:12:7"},{"attributes":{"assignments":[15051],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":15149,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15050,"name":"ElementaryTypeName","src":"1936:4:7"}],"id":15051,"name":"VariableDeclaration","src":"1936:13:7"}],"id":15052,"name":"VariableDeclarationStatement","src":"1936:13:7"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":15048,"isOffset":false,"isSlot":false,"src":"1983:7:7","valueSize":1}},{"otherptr":{"declaration":15051,"isOffset":false,"isSlot":false,"src":"2033:8:7","valueSize":1}},{"offset":{"declaration":15022,"isOffset":false,"isSlot":false,"src":"2008:6:7","valueSize":1}},{"self":{"declaration":15020,"isOffset":false,"isSlot":false,"src":"1998:4:7","valueSize":1}},{"other":{"declaration":15026,"isOffset":false,"isSlot":false,"src":"2049:5:7","valueSize":1}},{"otheroffset":{"declaration":15028,"isOffset":false,"isSlot":false,"src":"2060:11:7","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":15053,"name":"InlineAssembly","src":"1960:127:7"},{"children":[{"attributes":{"assignments":[15055]},"children":[{"attributes":{"constant":false,"name":"idx","scope":15140,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15054,"name":"ElementaryTypeName","src":"2101:4:7"}],"id":15055,"name":"VariableDeclaration","src":"2101:8:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15056,"name":"Literal","src":"2112:1:7"}],"id":15057,"name":"VariableDeclarationStatement","src":"2101:12:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15055,"type":"uint256","value":"idx"},"id":15058,"name":"Identifier","src":"2115:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15036,"type":"uint256","value":"shortest"},"id":15059,"name":"Identifier","src":"2121:8:7"}],"id":15060,"name":"BinaryOperation","src":"2115:14:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15055,"type":"uint256","value":"idx"},"id":15061,"name":"Identifier","src":"2131:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15062,"name":"Literal","src":"2138:2:7"}],"id":15063,"name":"Assignment","src":"2131:9:7"}],"id":15064,"name":"ExpressionStatement","src":"2131:9:7"},{"children":[{"attributes":{"assignments":[15066],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":15139,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15065,"name":"ElementaryTypeName","src":"2156:4:7"}],"id":15066,"name":"VariableDeclaration","src":"2156:6:7"}],"id":15067,"name":"VariableDeclarationStatement","src":"2156:6:7"},{"attributes":{"assignments":[15069],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":15139,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15068,"name":"ElementaryTypeName","src":"2176:4:7"}],"id":15069,"name":"VariableDeclaration","src":"2176:6:7"}],"id":15070,"name":"VariableDeclarationStatement","src":"2176:6:7"},{"attributes":{"externalReferences":[{"a":{"declaration":15066,"isOffset":false,"isSlot":false,"src":"2223:1:7","valueSize":1}},{"selfptr":{"declaration":15048,"isOffset":false,"isSlot":false,"src":"2234:7:7","valueSize":1}},{"b":{"declaration":15069,"isOffset":false,"isSlot":false,"src":"2259:1:7","valueSize":1}},{"otherptr":{"declaration":15051,"isOffset":false,"isSlot":false,"src":"2270:8:7","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":15071,"name":"InlineAssembly","src":"2196:97:7"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15066,"type":"uint256","value":"a"},"id":15072,"name":"Identifier","src":"2310:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15069,"type":"uint256","value":"b"},"id":15073,"name":"Identifier","src":"2315:1:7"}],"id":15074,"name":"BinaryOperation","src":"2310:6:7"},{"children":[{"attributes":{"assignments":[15076],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":15129,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15075,"name":"ElementaryTypeName","src":"2397:4:7"}],"id":15076,"name":"VariableDeclaration","src":"2397:9:7"}],"id":15077,"name":"VariableDeclarationStatement","src":"2397:9:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15036,"type":"uint256","value":"shortest"},"id":15078,"name":"Identifier","src":"2428:8:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15079,"name":"Literal","src":"2439:2:7"}],"id":15080,"name":"BinaryOperation","src":"2428:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15076,"type":"uint256","value":"mask"},"id":15081,"name":"Identifier","src":"2465:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":15082,"name":"ElementaryTypeNameExpression","src":"2472:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15083,"name":"Literal","src":"2482:1:7"}],"id":15084,"name":"UnaryOperation","src":"2480:3:7"}],"id":15085,"name":"FunctionCall","src":"2472:12:7"}],"id":15086,"name":"Assignment","src":"2465:19:7"}],"id":15087,"name":"ExpressionStatement","src":"2465:19:7"}],"id":15088,"name":"Block","src":"2443:80:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15076,"type":"uint256","value":"mask"},"id":15089,"name":"Identifier","src":"2551:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15090,"name":"Literal","src":"2560:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15091,"name":"Literal","src":"2566:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15092,"name":"Literal","src":"2571:2:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15036,"type":"uint256","value":"shortest"},"id":15093,"name":"Identifier","src":"2576:8:7"}],"id":15094,"name":"BinaryOperation","src":"2571:13:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15055,"type":"uint256","value":"idx"},"id":15095,"name":"Identifier","src":"2587:3:7"}],"id":15096,"name":"BinaryOperation","src":"2571:19:7"}],"id":15097,"name":"TupleExpression","src":"2570:21:7"}],"id":15098,"name":"BinaryOperation","src":"2566:25:7"}],"id":15099,"name":"TupleExpression","src":"2565:27:7"}],"id":15100,"name":"BinaryOperation","src":"2560:32:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15101,"name":"Literal","src":"2595:1:7"}],"id":15102,"name":"BinaryOperation","src":"2560:36:7"}],"id":15103,"name":"TupleExpression","src":"2559:38:7"}],"id":15104,"name":"UnaryOperation","src":"2558:39:7"}],"id":15105,"name":"Assignment","src":"2551:46:7"}],"id":15106,"name":"ExpressionStatement","src":"2551:46:7"}],"id":15107,"name":"Block","src":"2529:87:7"}],"id":15108,"name":"IfStatement","src":"2424:192:7"},{"attributes":{"assignments":[15110]},"children":[{"attributes":{"constant":false,"name":"diff","scope":15129,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15109,"name":"ElementaryTypeName","src":"2633:4:7"}],"id":15110,"name":"VariableDeclaration","src":"2633:9:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15066,"type":"uint256","value":"a"},"id":15111,"name":"Identifier","src":"2646:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15076,"type":"uint256","value":"mask"},"id":15112,"name":"Identifier","src":"2650:4:7"}],"id":15113,"name":"BinaryOperation","src":"2646:8:7"}],"id":15114,"name":"TupleExpression","src":"2645:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15069,"type":"uint256","value":"b"},"id":15115,"name":"Identifier","src":"2659:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15076,"type":"uint256","value":"mask"},"id":15116,"name":"Identifier","src":"2663:4:7"}],"id":15117,"name":"BinaryOperation","src":"2659:8:7"}],"id":15118,"name":"TupleExpression","src":"2658:10:7"}],"id":15119,"name":"BinaryOperation","src":"2645:23:7"}],"id":15120,"name":"VariableDeclarationStatement","src":"2633:35:7"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15110,"type":"uint256","value":"diff"},"id":15121,"name":"Identifier","src":"2690:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15122,"name":"Literal","src":"2698:1:7"}],"id":15123,"name":"BinaryOperation","src":"2690:9:7"},{"attributes":{"functionReturnParameters":15034},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":15124,"name":"ElementaryTypeNameExpression","src":"2724:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15110,"type":"uint256","value":"diff"},"id":15125,"name":"Identifier","src":"2728:4:7"}],"id":15126,"name":"FunctionCall","src":"2724:9:7"}],"id":15127,"name":"Return","src":"2717:16:7"}],"id":15128,"name":"IfStatement","src":"2686:47:7"}],"id":15129,"name":"Block","src":"2318:430:7"}],"id":15130,"name":"IfStatement","src":"2306:442:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15048,"type":"uint256","value":"selfptr"},"id":15131,"name":"Identifier","src":"2761:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15132,"name":"Literal","src":"2772:2:7"}],"id":15133,"name":"Assignment","src":"2761:13:7"}],"id":15134,"name":"ExpressionStatement","src":"2761:13:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15051,"type":"uint256","value":"otherptr"},"id":15135,"name":"Identifier","src":"2788:8:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15136,"name":"Literal","src":"2800:2:7"}],"id":15137,"name":"Assignment","src":"2788:14:7"}],"id":15138,"name":"ExpressionStatement","src":"2788:14:7"}],"id":15139,"name":"Block","src":"2142:671:7"}],"id":15140,"name":"ForStatement","src":"2096:717:7"},{"attributes":{"functionReturnParameters":15034},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":15141,"name":"ElementaryTypeNameExpression","src":"2830:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15024,"type":"uint256","value":"len"},"id":15142,"name":"Identifier","src":"2834:3:7"}],"id":15143,"name":"FunctionCall","src":"2830:8:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":15144,"name":"ElementaryTypeNameExpression","src":"2841:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15030,"type":"uint256","value":"otherlen"},"id":15145,"name":"Identifier","src":"2845:8:7"}],"id":15146,"name":"FunctionCall","src":"2841:13:7"}],"id":15147,"name":"BinaryOperation","src":"2830:24:7"}],"id":15148,"name":"Return","src":"2823:31:7"}],"id":15149,"name":"Block","src":"1817:1044:7"}],"id":15150,"name":"FunctionDefinition","src":"1677:1184:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15178,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15151,"name":"ElementaryTypeName","src":"3295:5:7"}],"id":15152,"name":"VariableDeclaration","src":"3295:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15178,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15153,"name":"ElementaryTypeName","src":"3314:4:7"}],"id":15154,"name":"VariableDeclaration","src":"3314:11:7"},{"attributes":{"constant":false,"name":"other","scope":15178,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15155,"name":"ElementaryTypeName","src":"3327:5:7"}],"id":15156,"name":"VariableDeclaration","src":"3327:18:7"},{"attributes":{"constant":false,"name":"otherOffset","scope":15178,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15157,"name":"ElementaryTypeName","src":"3347:4:7"}],"id":15158,"name":"VariableDeclaration","src":"3347:16:7"},{"attributes":{"constant":false,"name":"len","scope":15178,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15159,"name":"ElementaryTypeName","src":"3365:4:7"}],"id":15160,"name":"VariableDeclaration","src":"3365:8:7"}],"id":15161,"name":"ParameterList","src":"3294:80:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15178,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":15162,"name":"ElementaryTypeName","src":"3398:4:7"}],"id":15163,"name":"VariableDeclaration","src":"3398:4:7"}],"id":15164,"name":"ParameterList","src":"3397:6:7"},{"children":[{"attributes":{"functionReturnParameters":15164},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14997,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":15165,"name":"Identifier","src":"3421:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15152,"type":"bytes memory","value":"self"},"id":15166,"name":"Identifier","src":"3428:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15154,"type":"uint256","value":"offset"},"id":15167,"name":"Identifier","src":"3434:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15160,"type":"uint256","value":"len"},"id":15168,"name":"Identifier","src":"3442:3:7"}],"id":15169,"name":"FunctionCall","src":"3421:25:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14997,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":15170,"name":"Identifier","src":"3450:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15156,"type":"bytes memory","value":"other"},"id":15171,"name":"Identifier","src":"3457:5:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15158,"type":"uint256","value":"otherOffset"},"id":15172,"name":"Identifier","src":"3464:11:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15160,"type":"uint256","value":"len"},"id":15173,"name":"Identifier","src":"3477:3:7"}],"id":15174,"name":"FunctionCall","src":"3450:31:7"}],"id":15175,"name":"BinaryOperation","src":"3421:60:7"}],"id":15176,"name":"Return","src":"3414:67:7"}],"id":15177,"name":"Block","src":"3404:84:7"}],"id":15178,"name":"FunctionDefinition","src":"3279:209:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15210,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15179,"name":"ElementaryTypeName","src":"3887:5:7"}],"id":15180,"name":"VariableDeclaration","src":"3887:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15181,"name":"ElementaryTypeName","src":"3906:4:7"}],"id":15182,"name":"VariableDeclaration","src":"3906:11:7"},{"attributes":{"constant":false,"name":"other","scope":15210,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15183,"name":"ElementaryTypeName","src":"3919:5:7"}],"id":15184,"name":"VariableDeclaration","src":"3919:18:7"},{"attributes":{"constant":false,"name":"otherOffset","scope":15210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15185,"name":"ElementaryTypeName","src":"3939:4:7"}],"id":15186,"name":"VariableDeclaration","src":"3939:16:7"}],"id":15187,"name":"ParameterList","src":"3886:70:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15210,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":15188,"name":"ElementaryTypeName","src":"3980:4:7"}],"id":15189,"name":"VariableDeclaration","src":"3980:4:7"}],"id":15190,"name":"ParameterList","src":"3979:6:7"},{"children":[{"attributes":{"functionReturnParameters":15190},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14997,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":15191,"name":"Identifier","src":"4003:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15180,"type":"bytes memory","value":"self"},"id":15192,"name":"Identifier","src":"4010:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15182,"type":"uint256","value":"offset"},"id":15193,"name":"Identifier","src":"4016:6:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15180,"type":"bytes memory","value":"self"},"id":15194,"name":"Identifier","src":"4024:4:7"}],"id":15195,"name":"MemberAccess","src":"4024:11:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15182,"type":"uint256","value":"offset"},"id":15196,"name":"Identifier","src":"4038:6:7"}],"id":15197,"name":"BinaryOperation","src":"4024:20:7"}],"id":15198,"name":"FunctionCall","src":"4003:42:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14997,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":15199,"name":"Identifier","src":"4049:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15184,"type":"bytes memory","value":"other"},"id":15200,"name":"Identifier","src":"4056:5:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15186,"type":"uint256","value":"otherOffset"},"id":15201,"name":"Identifier","src":"4063:11:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15184,"type":"bytes memory","value":"other"},"id":15202,"name":"Identifier","src":"4076:5:7"}],"id":15203,"name":"MemberAccess","src":"4076:12:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15186,"type":"uint256","value":"otherOffset"},"id":15204,"name":"Identifier","src":"4091:11:7"}],"id":15205,"name":"BinaryOperation","src":"4076:26:7"}],"id":15206,"name":"FunctionCall","src":"4049:54:7"}],"id":15207,"name":"BinaryOperation","src":"4003:100:7"}],"id":15208,"name":"Return","src":"3996:107:7"}],"id":15209,"name":"Block","src":"3986:124:7"}],"id":15210,"name":"FunctionDefinition","src":"3871:239:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15239,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15211,"name":"ElementaryTypeName","src":"4478:5:7"}],"id":15212,"name":"VariableDeclaration","src":"4478:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15239,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15213,"name":"ElementaryTypeName","src":"4497:4:7"}],"id":15214,"name":"VariableDeclaration","src":"4497:11:7"},{"attributes":{"constant":false,"name":"other","scope":15239,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15215,"name":"ElementaryTypeName","src":"4510:5:7"}],"id":15216,"name":"VariableDeclaration","src":"4510:18:7"}],"id":15217,"name":"ParameterList","src":"4477:52:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15239,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":15218,"name":"ElementaryTypeName","src":"4553:4:7"}],"id":15219,"name":"VariableDeclaration","src":"4553:4:7"}],"id":15220,"name":"ParameterList","src":"4552:6:7"},{"children":[{"attributes":{"functionReturnParameters":15220},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15212,"type":"bytes memory","value":"self"},"id":15221,"name":"Identifier","src":"4576:4:7"}],"id":15222,"name":"MemberAccess","src":"4576:11:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15214,"type":"uint256","value":"offset"},"id":15223,"name":"Identifier","src":"4591:6:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15216,"type":"bytes memory","value":"other"},"id":15224,"name":"Identifier","src":"4600:5:7"}],"id":15225,"name":"MemberAccess","src":"4600:12:7"}],"id":15226,"name":"BinaryOperation","src":"4591:21:7"}],"id":15227,"name":"BinaryOperation","src":"4576:36:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[15178,15210,15239,15264],"referencedDeclaration":15178,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":15228,"name":"Identifier","src":"4616:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15212,"type":"bytes memory","value":"self"},"id":15229,"name":"Identifier","src":"4623:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15214,"type":"uint256","value":"offset"},"id":15230,"name":"Identifier","src":"4629:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15216,"type":"bytes memory","value":"other"},"id":15231,"name":"Identifier","src":"4637:5:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15232,"name":"Literal","src":"4644:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15216,"type":"bytes memory","value":"other"},"id":15233,"name":"Identifier","src":"4647:5:7"}],"id":15234,"name":"MemberAccess","src":"4647:12:7"}],"id":15235,"name":"FunctionCall","src":"4616:44:7"}],"id":15236,"name":"BinaryOperation","src":"4576:84:7"}],"id":15237,"name":"Return","src":"4569:91:7"}],"id":15238,"name":"Block","src":"4559:108:7"}],"id":15239,"name":"FunctionDefinition","src":"4462:205:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15264,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15240,"name":"ElementaryTypeName","src":"4931:5:7"}],"id":15241,"name":"VariableDeclaration","src":"4931:17:7"},{"attributes":{"constant":false,"name":"other","scope":15264,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15242,"name":"ElementaryTypeName","src":"4950:5:7"}],"id":15243,"name":"VariableDeclaration","src":"4950:18:7"}],"id":15244,"name":"ParameterList","src":"4930:39:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15264,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":15245,"name":"ElementaryTypeName","src":"4992:4:7"}],"id":15246,"name":"VariableDeclaration","src":"4992:4:7"}],"id":15247,"name":"ParameterList","src":"4991:6:7"},{"children":[{"attributes":{"functionReturnParameters":15247},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15241,"type":"bytes memory","value":"self"},"id":15248,"name":"Identifier","src":"5015:4:7"}],"id":15249,"name":"MemberAccess","src":"5015:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15243,"type":"bytes memory","value":"other"},"id":15250,"name":"Identifier","src":"5030:5:7"}],"id":15251,"name":"MemberAccess","src":"5030:12:7"}],"id":15252,"name":"BinaryOperation","src":"5015:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[15178,15210,15239,15264],"referencedDeclaration":15178,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":15253,"name":"Identifier","src":"5046:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15241,"type":"bytes memory","value":"self"},"id":15254,"name":"Identifier","src":"5053:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15255,"name":"Literal","src":"5059:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15243,"type":"bytes memory","value":"other"},"id":15256,"name":"Identifier","src":"5062:5:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15257,"name":"Literal","src":"5069:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15241,"type":"bytes memory","value":"self"},"id":15258,"name":"Identifier","src":"5072:4:7"}],"id":15259,"name":"MemberAccess","src":"5072:11:7"}],"id":15260,"name":"FunctionCall","src":"5046:38:7"}],"id":15261,"name":"BinaryOperation","src":"5015:69:7"}],"id":15262,"name":"Return","src":"5008:76:7"}],"id":15263,"name":"Block","src":"4998:93:7"}],"id":15264,"name":"FunctionDefinition","src":"4915:176:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15280,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15265,"name":"ElementaryTypeName","src":"5352:5:7"}],"id":15266,"name":"VariableDeclaration","src":"5352:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15267,"name":"ElementaryTypeName","src":"5371:4:7"}],"id":15268,"name":"VariableDeclaration","src":"5371:8:7"}],"id":15269,"name":"ParameterList","src":"5351:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15280,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":15270,"name":"ElementaryTypeName","src":"5404:5:7"}],"id":15271,"name":"VariableDeclaration","src":"5404:9:7"}],"id":15272,"name":"ParameterList","src":"5403:11:7"},{"children":[{"attributes":{"functionReturnParameters":15272},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":15273,"name":"ElementaryTypeNameExpression","src":"5432:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15266,"type":"bytes memory","value":"self"},"id":15274,"name":"Identifier","src":"5438:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15268,"type":"uint256","value":"idx"},"id":15275,"name":"Identifier","src":"5443:3:7"}],"id":15276,"name":"IndexAccess","src":"5438:9:7"}],"id":15277,"name":"FunctionCall","src":"5432:16:7"}],"id":15278,"name":"Return","src":"5425:23:7"}],"id":15279,"name":"Block","src":"5415:40:7"}],"id":15280,"name":"FunctionDefinition","src":"5333:122:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15300,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15281,"name":"ElementaryTypeName","src":"5719:5:7"}],"id":15282,"name":"VariableDeclaration","src":"5719:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15283,"name":"ElementaryTypeName","src":"5738:4:7"}],"id":15284,"name":"VariableDeclaration","src":"5738:8:7"}],"id":15285,"name":"ParameterList","src":"5718:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15300,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":15286,"name":"ElementaryTypeName","src":"5771:6:7"}],"id":15287,"name":"VariableDeclaration","src":"5771:10:7"}],"id":15288,"name":"ParameterList","src":"5770:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15289,"name":"Identifier","src":"5793:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15284,"type":"uint256","value":"idx"},"id":15290,"name":"Identifier","src":"5801:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15291,"name":"Literal","src":"5807:1:7"}],"id":15292,"name":"BinaryOperation","src":"5801:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15282,"type":"bytes memory","value":"self"},"id":15293,"name":"Identifier","src":"5812:4:7"}],"id":15294,"name":"MemberAccess","src":"5812:11:7"}],"id":15295,"name":"BinaryOperation","src":"5801:22:7"}],"id":15296,"name":"FunctionCall","src":"5793:31:7"}],"id":15297,"name":"ExpressionStatement","src":"5793:31:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":15287,"isOffset":false,"isSlot":false,"src":"5857:3:7","valueSize":1}},{"self":{"declaration":15282,"isOffset":false,"isSlot":false,"src":"5882:4:7","valueSize":1}},{"idx":{"declaration":15284,"isOffset":false,"isSlot":false,"src":"5892:3:7","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":15298,"name":"InlineAssembly","src":"5834:82:7"}],"id":15299,"name":"Block","src":"5783:139:7"}],"id":15300,"name":"FunctionDefinition","src":"5699:223:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15320,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15301,"name":"ElementaryTypeName","src":"6186:5:7"}],"id":15302,"name":"VariableDeclaration","src":"6186:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15320,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15303,"name":"ElementaryTypeName","src":"6205:4:7"}],"id":15304,"name":"VariableDeclaration","src":"6205:8:7"}],"id":15305,"name":"ParameterList","src":"6185:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15320,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":15306,"name":"ElementaryTypeName","src":"6238:6:7"}],"id":15307,"name":"VariableDeclaration","src":"6238:10:7"}],"id":15308,"name":"ParameterList","src":"6237:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15309,"name":"Identifier","src":"6260:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15304,"type":"uint256","value":"idx"},"id":15310,"name":"Identifier","src":"6268:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15311,"name":"Literal","src":"6274:1:7"}],"id":15312,"name":"BinaryOperation","src":"6268:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15302,"type":"bytes memory","value":"self"},"id":15313,"name":"Identifier","src":"6279:4:7"}],"id":15314,"name":"MemberAccess","src":"6279:11:7"}],"id":15315,"name":"BinaryOperation","src":"6268:22:7"}],"id":15316,"name":"FunctionCall","src":"6260:31:7"}],"id":15317,"name":"ExpressionStatement","src":"6260:31:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":15307,"isOffset":false,"isSlot":false,"src":"6324:3:7","valueSize":1}},{"self":{"declaration":15302,"isOffset":false,"isSlot":false,"src":"6349:4:7","valueSize":1}},{"idx":{"declaration":15304,"isOffset":false,"isSlot":false,"src":"6359:3:7","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":15318,"name":"InlineAssembly","src":"6301:86:7"}],"id":15319,"name":"Block","src":"6250:143:7"}],"id":15320,"name":"FunctionDefinition","src":"6166:227:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15340,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15321,"name":"ElementaryTypeName","src":"6632:5:7"}],"id":15322,"name":"VariableDeclaration","src":"6632:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15340,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15323,"name":"ElementaryTypeName","src":"6651:4:7"}],"id":15324,"name":"VariableDeclaration","src":"6651:8:7"}],"id":15325,"name":"ParameterList","src":"6631:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15340,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":15326,"name":"ElementaryTypeName","src":"6684:7:7"}],"id":15327,"name":"VariableDeclaration","src":"6684:11:7"}],"id":15328,"name":"ParameterList","src":"6683:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15329,"name":"Identifier","src":"6707:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15324,"type":"uint256","value":"idx"},"id":15330,"name":"Identifier","src":"6715:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15331,"name":"Literal","src":"6721:2:7"}],"id":15332,"name":"BinaryOperation","src":"6715:8:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15322,"type":"bytes memory","value":"self"},"id":15333,"name":"Identifier","src":"6727:4:7"}],"id":15334,"name":"MemberAccess","src":"6727:11:7"}],"id":15335,"name":"BinaryOperation","src":"6715:23:7"}],"id":15336,"name":"FunctionCall","src":"6707:32:7"}],"id":15337,"name":"ExpressionStatement","src":"6707:32:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":15327,"isOffset":false,"isSlot":false,"src":"6772:3:7","valueSize":1}},{"self":{"declaration":15322,"isOffset":false,"isSlot":false,"src":"6793:4:7","valueSize":1}},{"idx":{"declaration":15324,"isOffset":false,"isSlot":false,"src":"6804:3:7","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":15338,"name":"InlineAssembly","src":"6749:70:7"}],"id":15339,"name":"Block","src":"6697:128:7"}],"id":15340,"name":"FunctionDefinition","src":"6611:214:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15360,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15341,"name":"ElementaryTypeName","src":"7064:5:7"}],"id":15342,"name":"VariableDeclaration","src":"7064:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15360,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15343,"name":"ElementaryTypeName","src":"7083:4:7"}],"id":15344,"name":"VariableDeclaration","src":"7083:8:7"}],"id":15345,"name":"ParameterList","src":"7063:29:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15360,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":15346,"name":"ElementaryTypeName","src":"7116:7:7"}],"id":15347,"name":"VariableDeclaration","src":"7116:11:7"}],"id":15348,"name":"ParameterList","src":"7115:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15349,"name":"Identifier","src":"7139:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15344,"type":"uint256","value":"idx"},"id":15350,"name":"Identifier","src":"7147:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":15351,"name":"Literal","src":"7153:2:7"}],"id":15352,"name":"BinaryOperation","src":"7147:8:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15342,"type":"bytes memory","value":"self"},"id":15353,"name":"Identifier","src":"7159:4:7"}],"id":15354,"name":"MemberAccess","src":"7159:11:7"}],"id":15355,"name":"BinaryOperation","src":"7147:23:7"}],"id":15356,"name":"FunctionCall","src":"7139:32:7"}],"id":15357,"name":"ExpressionStatement","src":"7139:32:7"},{"attributes":{"externalReferences":[{"ret":{"declaration":15347,"isOffset":false,"isSlot":false,"src":"7204:3:7","valueSize":1}},{"self":{"declaration":15342,"isOffset":false,"isSlot":false,"src":"7229:4:7","valueSize":1}},{"idx":{"declaration":15344,"isOffset":false,"isSlot":false,"src":"7240:3:7","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":15358,"name":"InlineAssembly","src":"7181:143:7"}],"id":15359,"name":"Block","src":"7129:201:7"}],"id":15360,"name":"FunctionDefinition","src":"7043:287:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15388,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15361,"name":"ElementaryTypeName","src":"7606:5:7"}],"id":15362,"name":"VariableDeclaration","src":"7606:17:7"},{"attributes":{"constant":false,"name":"idx","scope":15388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15363,"name":"ElementaryTypeName","src":"7625:4:7"}],"id":15364,"name":"VariableDeclaration","src":"7625:8:7"},{"attributes":{"constant":false,"name":"len","scope":15388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15365,"name":"ElementaryTypeName","src":"7635:4:7"}],"id":15366,"name":"VariableDeclaration","src":"7635:8:7"}],"id":15367,"name":"ParameterList","src":"7605:39:7"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":15388,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":15368,"name":"ElementaryTypeName","src":"7668:7:7"}],"id":15369,"name":"VariableDeclaration","src":"7668:11:7"}],"id":15370,"name":"ParameterList","src":"7667:13:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15371,"name":"Identifier","src":"7691:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15366,"type":"uint256","value":"len"},"id":15372,"name":"Identifier","src":"7699:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15373,"name":"Literal","src":"7706:2:7"}],"id":15374,"name":"BinaryOperation","src":"7699:9:7"}],"id":15375,"name":"FunctionCall","src":"7691:18:7"}],"id":15376,"name":"ExpressionStatement","src":"7691:18:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15377,"name":"Identifier","src":"7719:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15364,"type":"uint256","value":"idx"},"id":15378,"name":"Identifier","src":"7727:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15366,"type":"uint256","value":"len"},"id":15379,"name":"Identifier","src":"7733:3:7"}],"id":15380,"name":"BinaryOperation","src":"7727:9:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15362,"type":"bytes memory","value":"self"},"id":15381,"name":"Identifier","src":"7740:4:7"}],"id":15382,"name":"MemberAccess","src":"7740:11:7"}],"id":15383,"name":"BinaryOperation","src":"7727:24:7"}],"id":15384,"name":"FunctionCall","src":"7719:33:7"}],"id":15385,"name":"ExpressionStatement","src":"7719:33:7"},{"attributes":{"externalReferences":[{"len":{"declaration":15366,"isOffset":false,"isSlot":false,"src":"7822:3:7","valueSize":1}},{"ret":{"declaration":15369,"isOffset":false,"isSlot":false,"src":"7845:3:7","valueSize":1}},{"self":{"declaration":15362,"isOffset":false,"isSlot":false,"src":"7870:4:7","valueSize":1}},{"idx":{"declaration":15364,"isOffset":false,"isSlot":false,"src":"7881:3:7","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":15386,"name":"InlineAssembly","src":"7762:142:7"}],"id":15387,"name":"Block","src":"7681:229:7"}],"id":15388,"name":"FunctionDefinition","src":"7586:324:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":15428,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15389,"name":"ElementaryTypeName","src":"7932:4:7"}],"id":15390,"name":"VariableDeclaration","src":"7932:9:7"},{"attributes":{"constant":false,"name":"src","scope":15428,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15391,"name":"ElementaryTypeName","src":"7943:4:7"}],"id":15392,"name":"VariableDeclaration","src":"7943:8:7"},{"attributes":{"constant":false,"name":"len","scope":15428,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15393,"name":"ElementaryTypeName","src":"7953:4:7"}],"id":15394,"name":"VariableDeclaration","src":"7953:8:7"}],"id":15395,"name":"ParameterList","src":"7931:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":15396,"name":"ParameterList","src":"7976:0:7"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15394,"type":"uint256","value":"len"},"id":15397,"name":"Identifier","src":"8043:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15398,"name":"Literal","src":"8050:2:7"}],"id":15399,"name":"BinaryOperation","src":"8043:9:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15394,"type":"uint256","value":"len"},"id":15400,"name":"Identifier","src":"8054:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15401,"name":"Literal","src":"8061:2:7"}],"id":15402,"name":"Assignment","src":"8054:9:7"}],"id":15403,"name":"ExpressionStatement","src":"8054:9:7"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":15392,"isOffset":false,"isSlot":false,"src":"8125:3:7","valueSize":1}},{"dest":{"declaration":15390,"isOffset":false,"isSlot":false,"src":"8113:4:7","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":15404,"name":"InlineAssembly","src":"8079:65:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15390,"type":"uint256","value":"dest"},"id":15405,"name":"Identifier","src":"8157:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15406,"name":"Literal","src":"8165:2:7"}],"id":15407,"name":"Assignment","src":"8157:10:7"}],"id":15408,"name":"ExpressionStatement","src":"8157:10:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15392,"type":"uint256","value":"src"},"id":15409,"name":"Identifier","src":"8181:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15410,"name":"Literal","src":"8188:2:7"}],"id":15411,"name":"Assignment","src":"8181:9:7"}],"id":15412,"name":"ExpressionStatement","src":"8181:9:7"}],"id":15413,"name":"Block","src":"8065:136:7"}],"id":15414,"name":"ForStatement","src":"8036:165:7"},{"attributes":{"assignments":[15416]},"children":[{"attributes":{"constant":false,"name":"mask","scope":15427,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15415,"name":"ElementaryTypeName","src":"8243:4:7"}],"id":15416,"name":"VariableDeclaration","src":"8243:9:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":15417,"name":"Literal","src":"8255:3:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":15418,"name":"Literal","src":"8263:2:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15394,"type":"uint256","value":"len"},"id":15419,"name":"Identifier","src":"8268:3:7"}],"id":15420,"name":"BinaryOperation","src":"8263:8:7"}],"id":15421,"name":"TupleExpression","src":"8262:10:7"}],"id":15422,"name":"BinaryOperation","src":"8255:17:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15423,"name":"Literal","src":"8275:1:7"}],"id":15424,"name":"BinaryOperation","src":"8255:21:7"}],"id":15425,"name":"VariableDeclarationStatement","src":"8243:33:7"},{"attributes":{"externalReferences":[{"src":{"declaration":15392,"isOffset":false,"isSlot":false,"src":"8334:3:7","valueSize":1}},{"mask":{"declaration":15416,"isOffset":false,"isSlot":false,"src":"8344:4:7","valueSize":1}},{"dest":{"declaration":15390,"isOffset":false,"isSlot":false,"src":"8421:4:7","valueSize":1}},{"dest":{"declaration":15390,"isOffset":false,"isSlot":false,"src":"8389:4:7","valueSize":1}},{"mask":{"declaration":15416,"isOffset":false,"isSlot":false,"src":"8396:4:7","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":15426,"name":"InlineAssembly","src":"8286:173:7"}],"id":15427,"name":"Block","src":"7976:489:7"}],"id":15428,"name":"FunctionDefinition","src":"7916:549:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15471,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15429,"name":"ElementaryTypeName","src":"8704:5:7"}],"id":15430,"name":"VariableDeclaration","src":"8704:17:7"},{"attributes":{"constant":false,"name":"offset","scope":15471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15431,"name":"ElementaryTypeName","src":"8723:4:7"}],"id":15432,"name":"VariableDeclaration","src":"8723:11:7"},{"attributes":{"constant":false,"name":"len","scope":15471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15433,"name":"ElementaryTypeName","src":"8736:4:7"}],"id":15434,"name":"VariableDeclaration","src":"8736:8:7"}],"id":15435,"name":"ParameterList","src":"8703:42:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15471,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15436,"name":"ElementaryTypeName","src":"8768:5:7"}],"id":15437,"name":"VariableDeclaration","src":"8768:12:7"}],"id":15438,"name":"ParameterList","src":"8767:14:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15439,"name":"Identifier","src":"8792:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15432,"type":"uint256","value":"offset"},"id":15440,"name":"Identifier","src":"8800:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15434,"type":"uint256","value":"len"},"id":15441,"name":"Identifier","src":"8809:3:7"}],"id":15442,"name":"BinaryOperation","src":"8800:12:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15430,"type":"bytes memory","value":"self"},"id":15443,"name":"Identifier","src":"8816:4:7"}],"id":15444,"name":"MemberAccess","src":"8816:11:7"}],"id":15445,"name":"BinaryOperation","src":"8800:27:7"}],"id":15446,"name":"FunctionCall","src":"8792:36:7"}],"id":15447,"name":"ExpressionStatement","src":"8792:36:7"},{"attributes":{"assignments":[15449]},"children":[{"attributes":{"constant":false,"name":"ret","scope":15470,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15448,"name":"ElementaryTypeName","src":"8839:5:7"}],"id":15449,"name":"VariableDeclaration","src":"8839:16:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15450,"name":"ElementaryTypeName","src":"8862:5:7"}],"id":15451,"name":"NewExpression","src":"8858:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15434,"type":"uint256","value":"len"},"id":15452,"name":"Identifier","src":"8868:3:7"}],"id":15453,"name":"FunctionCall","src":"8858:14:7"}],"id":15454,"name":"VariableDeclarationStatement","src":"8839:33:7"},{"attributes":{"assignments":[15456],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":15470,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15455,"name":"ElementaryTypeName","src":"8882:4:7"}],"id":15456,"name":"VariableDeclaration","src":"8882:9:7"}],"id":15457,"name":"VariableDeclarationStatement","src":"8882:9:7"},{"attributes":{"assignments":[15459],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":15470,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15458,"name":"ElementaryTypeName","src":"8901:4:7"}],"id":15459,"name":"VariableDeclaration","src":"8901:8:7"}],"id":15460,"name":"VariableDeclarationStatement","src":"8901:8:7"},{"attributes":{"externalReferences":[{"dest":{"declaration":15456,"isOffset":false,"isSlot":false,"src":"8943:4:7","valueSize":1}},{"ret":{"declaration":15449,"isOffset":false,"isSlot":false,"src":"8955:3:7","valueSize":1}},{"src":{"declaration":15459,"isOffset":false,"isSlot":false,"src":"8976:3:7","valueSize":1}},{"self":{"declaration":15430,"isOffset":false,"isSlot":false,"src":"8991:4:7","valueSize":1}},{"offset":{"declaration":15432,"isOffset":false,"isSlot":false,"src":"9002:6:7","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":15461,"name":"InlineAssembly","src":"8920:99:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":15428,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":15462,"name":"Identifier","src":"9028:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15456,"type":"uint256","value":"dest"},"id":15463,"name":"Identifier","src":"9035:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15459,"type":"uint256","value":"src"},"id":15464,"name":"Identifier","src":"9041:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15434,"type":"uint256","value":"len"},"id":15465,"name":"Identifier","src":"9046:3:7"}],"id":15466,"name":"FunctionCall","src":"9028:22:7"}],"id":15467,"name":"ExpressionStatement","src":"9028:22:7"},{"attributes":{"functionReturnParameters":15438},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15449,"type":"bytes memory","value":"ret"},"id":15468,"name":"Identifier","src":"9068:3:7"}],"id":15469,"name":"Return","src":"9061:10:7"}],"id":15470,"name":"Block","src":"8782:296:7"}],"id":15471,"name":"FunctionDefinition","src":"8685:393:7"},{"attributes":{"constant":true,"name":"base32HexTable","scope":15694,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15472,"name":"ElementaryTypeName","src":"9206:5:7"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":15473,"name":"Literal","src":"9238:147:7"}],"id":15474,"name":"VariableDeclaration","src":"9206:179:7"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":15694,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":15693,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":15475,"name":"ElementaryTypeName","src":"9697:5:7"}],"id":15476,"name":"VariableDeclaration","src":"9697:17:7"},{"attributes":{"constant":false,"name":"off","scope":15693,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15477,"name":"ElementaryTypeName","src":"9716:4:7"}],"id":15478,"name":"VariableDeclaration","src":"9716:8:7"},{"attributes":{"constant":false,"name":"len","scope":15693,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15479,"name":"ElementaryTypeName","src":"9726:4:7"}],"id":15480,"name":"VariableDeclaration","src":"9726:8:7"}],"id":15481,"name":"ParameterList","src":"9696:39:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":15693,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":15482,"name":"ElementaryTypeName","src":"9758:7:7"}],"id":15483,"name":"VariableDeclaration","src":"9758:7:7"}],"id":15484,"name":"ParameterList","src":"9757:9:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15485,"name":"Identifier","src":"9777:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15486,"name":"Identifier","src":"9785:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":15487,"name":"Literal","src":"9792:2:7"}],"id":15488,"name":"BinaryOperation","src":"9785:9:7"}],"id":15489,"name":"FunctionCall","src":"9777:18:7"}],"id":15490,"name":"ExpressionStatement","src":"9777:18:7"},{"attributes":{"assignments":[15492]},"children":[{"attributes":{"constant":false,"name":"ret","scope":15692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15491,"name":"ElementaryTypeName","src":"9806:4:7"}],"id":15492,"name":"VariableDeclaration","src":"9806:8:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15493,"name":"Literal","src":"9817:1:7"}],"id":15494,"name":"VariableDeclarationStatement","src":"9806:12:7"},{"attributes":{"assignments":[15496],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":15692,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":15495,"name":"ElementaryTypeName","src":"9828:5:7"}],"id":15496,"name":"VariableDeclaration","src":"9828:13:7"}],"id":15497,"name":"VariableDeclarationStatement","src":"9828:13:7"},{"children":[{"attributes":{"assignments":[15499]},"children":[{"attributes":{"constant":false,"name":"i","scope":15564,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15498,"name":"ElementaryTypeName","src":"9855:4:7"}],"id":15499,"name":"VariableDeclaration","src":"9855:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15500,"name":"Literal","src":"9864:1:7"}],"id":15501,"name":"VariableDeclarationStatement","src":"9855:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15499,"type":"uint256","value":"i"},"id":15502,"name":"Identifier","src":"9867:1:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15503,"name":"Identifier","src":"9871:3:7"}],"id":15504,"name":"BinaryOperation","src":"9867:7:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15499,"type":"uint256","value":"i"},"id":15505,"name":"Identifier","src":"9876:1:7"}],"id":15506,"name":"UnaryOperation","src":"9876:3:7"}],"id":15507,"name":"ExpressionStatement","src":"9876:3:7"},{"children":[{"attributes":{"assignments":[15509]},"children":[{"attributes":{"constant":false,"name":"char","scope":15563,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":15508,"name":"ElementaryTypeName","src":"9895:6:7"}],"id":15509,"name":"VariableDeclaration","src":"9895:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15476,"type":"bytes memory","value":"self"},"id":15510,"name":"Identifier","src":"9909:4:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15478,"type":"uint256","value":"off"},"id":15511,"name":"Identifier","src":"9914:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15499,"type":"uint256","value":"i"},"id":15512,"name":"Identifier","src":"9920:1:7"}],"id":15513,"name":"BinaryOperation","src":"9914:7:7"}],"id":15514,"name":"IndexAccess","src":"9909:13:7"}],"id":15515,"name":"VariableDeclarationStatement","src":"9895:27:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15516,"name":"Identifier","src":"9936:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15509,"type":"bytes1","value":"char"},"id":15517,"name":"Identifier","src":"9944:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":15518,"name":"Literal","src":"9952:4:7"}],"id":15519,"name":"BinaryOperation","src":"9944:12:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15509,"type":"bytes1","value":"char"},"id":15520,"name":"Identifier","src":"9960:4:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":15521,"name":"Literal","src":"9968:4:7"}],"id":15522,"name":"BinaryOperation","src":"9960:12:7"}],"id":15523,"name":"BinaryOperation","src":"9944:28:7"}],"id":15524,"name":"FunctionCall","src":"9936:37:7"}],"id":15525,"name":"ExpressionStatement","src":"9936:37:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15526,"name":"Identifier","src":"9987:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":15527,"name":"ElementaryTypeNameExpression","src":"9997:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15474,"type":"bytes memory","value":"base32HexTable"},"id":15528,"name":"Identifier","src":"10003:14:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":15529,"name":"ElementaryTypeNameExpression","src":"10018:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":15530,"name":"ElementaryTypeNameExpression","src":"10023:5:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15509,"type":"bytes1","value":"char"},"id":15531,"name":"Identifier","src":"10029:4:7"}],"id":15532,"name":"FunctionCall","src":"10023:11:7"}],"id":15533,"name":"FunctionCall","src":"10018:17:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":15534,"name":"Literal","src":"10038:4:7"}],"id":15535,"name":"BinaryOperation","src":"10018:24:7"}],"id":15536,"name":"IndexAccess","src":"10003:40:7"}],"id":15537,"name":"FunctionCall","src":"9997:47:7"}],"id":15538,"name":"Assignment","src":"9987:57:7"}],"id":15539,"name":"ExpressionStatement","src":"9987:57:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":15540,"name":"Identifier","src":"10058:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15541,"name":"Identifier","src":"10066:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":15542,"name":"Literal","src":"10077:4:7"}],"id":15543,"name":"BinaryOperation","src":"10066:15:7"}],"id":15544,"name":"FunctionCall","src":"10058:24:7"}],"id":15545,"name":"ExpressionStatement","src":"10058:24:7"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15499,"type":"uint256","value":"i"},"id":15546,"name":"Identifier","src":"10099:1:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15547,"name":"Identifier","src":"10104:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15548,"name":"Literal","src":"10110:1:7"}],"id":15549,"name":"BinaryOperation","src":"10104:7:7"}],"id":15550,"name":"BinaryOperation","src":"10099:12:7"},{"children":[{"id":15551,"name":"Break","src":"10131:5:7"}],"id":15552,"name":"Block","src":"10113:38:7"}],"id":15553,"name":"IfStatement","src":"10096:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15554,"name":"Identifier","src":"10164:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15555,"name":"Identifier","src":"10171:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":15556,"name":"Literal","src":"10178:1:7"}],"id":15557,"name":"BinaryOperation","src":"10171:8:7"}],"id":15558,"name":"TupleExpression","src":"10170:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15559,"name":"Identifier","src":"10183:7:7"}],"id":15560,"name":"BinaryOperation","src":"10170:20:7"}],"id":15561,"name":"Assignment","src":"10164:26:7"}],"id":15562,"name":"ExpressionStatement","src":"10164:26:7"}],"id":15563,"name":"Block","src":"9881:320:7"}],"id":15564,"name":"ForStatement","src":"9851:350:7"},{"attributes":{"assignments":[15566]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":15692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":15565,"name":"ElementaryTypeName","src":"10211:4:7"}],"id":15566,"name":"VariableDeclaration","src":"10211:11:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15567,"name":"Identifier","src":"10225:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":15568,"name":"Literal","src":"10231:1:7"}],"id":15569,"name":"BinaryOperation","src":"10225:7:7"}],"id":15570,"name":"VariableDeclarationStatement","src":"10211:21:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15571,"name":"Identifier","src":"10245:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15572,"name":"Literal","src":"10251:1:7"}],"id":15573,"name":"BinaryOperation","src":"10245:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":15574,"name":"Literal","src":"10256:1:7"}],"id":15575,"name":"BinaryOperation","src":"10245:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15576,"name":"Identifier","src":"10325:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15577,"name":"Identifier","src":"10332:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":15578,"name":"Literal","src":"10339:1:7"}],"id":15579,"name":"BinaryOperation","src":"10332:8:7"}],"id":15580,"name":"TupleExpression","src":"10331:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15581,"name":"Identifier","src":"10344:7:7"}],"id":15582,"name":"BinaryOperation","src":"10331:20:7"}],"id":15583,"name":"Assignment","src":"10325:26:7"}],"id":15584,"name":"ExpressionStatement","src":"10325:26:7"}],"id":15585,"name":"Block","src":"10259:103:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15586,"name":"Identifier","src":"10371:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15587,"name":"Literal","src":"10377:1:7"}],"id":15588,"name":"BinaryOperation","src":"10371:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15589,"name":"Literal","src":"10382:1:7"}],"id":15590,"name":"BinaryOperation","src":"10371:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15591,"name":"Identifier","src":"10444:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15592,"name":"Identifier","src":"10451:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":15593,"name":"Literal","src":"10458:1:7"}],"id":15594,"name":"BinaryOperation","src":"10451:8:7"}],"id":15595,"name":"TupleExpression","src":"10450:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15596,"name":"Identifier","src":"10464:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15597,"name":"Literal","src":"10475:1:7"}],"id":15598,"name":"BinaryOperation","src":"10464:12:7"}],"id":15599,"name":"TupleExpression","src":"10463:14:7"}],"id":15600,"name":"BinaryOperation","src":"10450:27:7"}],"id":15601,"name":"Assignment","src":"10444:33:7"}],"id":15602,"name":"ExpressionStatement","src":"10444:33:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15603,"name":"Identifier","src":"10491:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15604,"name":"Literal","src":"10501:1:7"}],"id":15605,"name":"Assignment","src":"10491:11:7"}],"id":15606,"name":"ExpressionStatement","src":"10491:11:7"}],"id":15607,"name":"Block","src":"10385:128:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15608,"name":"Identifier","src":"10522:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15609,"name":"Literal","src":"10528:1:7"}],"id":15610,"name":"BinaryOperation","src":"10522:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15611,"name":"Literal","src":"10533:1:7"}],"id":15612,"name":"BinaryOperation","src":"10522:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15613,"name":"Identifier","src":"10597:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15614,"name":"Identifier","src":"10604:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15615,"name":"Literal","src":"10611:1:7"}],"id":15616,"name":"BinaryOperation","src":"10604:8:7"}],"id":15617,"name":"TupleExpression","src":"10603:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15618,"name":"Identifier","src":"10617:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15619,"name":"Literal","src":"10628:1:7"}],"id":15620,"name":"BinaryOperation","src":"10617:12:7"}],"id":15621,"name":"TupleExpression","src":"10616:14:7"}],"id":15622,"name":"BinaryOperation","src":"10603:27:7"}],"id":15623,"name":"Assignment","src":"10597:33:7"}],"id":15624,"name":"ExpressionStatement","src":"10597:33:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15625,"name":"Identifier","src":"10644:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15626,"name":"Literal","src":"10654:1:7"}],"id":15627,"name":"Assignment","src":"10644:11:7"}],"id":15628,"name":"ExpressionStatement","src":"10644:11:7"}],"id":15629,"name":"Block","src":"10536:130:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15630,"name":"Identifier","src":"10675:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15631,"name":"Literal","src":"10681:1:7"}],"id":15632,"name":"BinaryOperation","src":"10675:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":15633,"name":"Literal","src":"10686:1:7"}],"id":15634,"name":"BinaryOperation","src":"10675:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15635,"name":"Identifier","src":"10750:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15636,"name":"Identifier","src":"10757:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":15637,"name":"Literal","src":"10764:1:7"}],"id":15638,"name":"BinaryOperation","src":"10757:8:7"}],"id":15639,"name":"TupleExpression","src":"10756:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15640,"name":"Identifier","src":"10770:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15641,"name":"Literal","src":"10781:1:7"}],"id":15642,"name":"BinaryOperation","src":"10770:12:7"}],"id":15643,"name":"TupleExpression","src":"10769:14:7"}],"id":15644,"name":"BinaryOperation","src":"10756:27:7"}],"id":15645,"name":"Assignment","src":"10750:33:7"}],"id":15646,"name":"ExpressionStatement","src":"10750:33:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15647,"name":"Identifier","src":"10797:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":15648,"name":"Literal","src":"10807:1:7"}],"id":15649,"name":"Assignment","src":"10797:11:7"}],"id":15650,"name":"ExpressionStatement","src":"10797:11:7"}],"id":15651,"name":"Block","src":"10689:130:7"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15480,"type":"uint256","value":"len"},"id":15652,"name":"Identifier","src":"10828:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":15653,"name":"Literal","src":"10834:1:7"}],"id":15654,"name":"BinaryOperation","src":"10828:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":15655,"name":"Literal","src":"10839:1:7"}],"id":15656,"name":"BinaryOperation","src":"10828:12:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15657,"name":"Identifier","src":"10904:3:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15658,"name":"Identifier","src":"10911:3:7"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":15659,"name":"Literal","src":"10918:1:7"}],"id":15660,"name":"BinaryOperation","src":"10911:8:7"}],"id":15661,"name":"TupleExpression","src":"10910:10:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15496,"type":"uint8","value":"decoded"},"id":15662,"name":"Identifier","src":"10924:7:7"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":15663,"name":"Literal","src":"10935:1:7"}],"id":15664,"name":"BinaryOperation","src":"10924:12:7"}],"id":15665,"name":"TupleExpression","src":"10923:14:7"}],"id":15666,"name":"BinaryOperation","src":"10910:27:7"}],"id":15667,"name":"Assignment","src":"10904:33:7"}],"id":15668,"name":"ExpressionStatement","src":"10904:33:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15669,"name":"Identifier","src":"10951:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":15670,"name":"Literal","src":"10961:1:7"}],"id":15671,"name":"Assignment","src":"10951:11:7"}],"id":15672,"name":"ExpressionStatement","src":"10951:11:7"}],"id":15673,"name":"Block","src":"10842:131:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15714,"type":"function () pure","value":"revert"},"id":15674,"name":"Identifier","src":"10993:6:7"}],"id":15675,"name":"FunctionCall","src":"10993:8:7"}],"id":15676,"name":"ExpressionStatement","src":"10993:8:7"}],"id":15677,"name":"Block","src":"10979:33:7"}],"id":15678,"name":"IfStatement","src":"10825:187:7"}],"id":15679,"name":"IfStatement","src":"10672:340:7"}],"id":15680,"name":"IfStatement","src":"10519:493:7"}],"id":15681,"name":"IfStatement","src":"10368:644:7"}],"id":15682,"name":"IfStatement","src":"10242:770:7"},{"attributes":{"functionReturnParameters":15484},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":15683,"name":"ElementaryTypeNameExpression","src":"11029:7:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15492,"type":"uint256","value":"ret"},"id":15684,"name":"Identifier","src":"11037:3:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":15685,"name":"Literal","src":"11045:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15566,"type":"uint256","value":"bitlen"},"id":15686,"name":"Identifier","src":"11051:6:7"}],"id":15687,"name":"BinaryOperation","src":"11045:12:7"}],"id":15688,"name":"TupleExpression","src":"11044:14:7"}],"id":15689,"name":"BinaryOperation","src":"11037:21:7"}],"id":15690,"name":"FunctionCall","src":"11029:30:7"}],"id":15691,"name":"Return","src":"11022:37:7"}],"id":15692,"name":"Block","src":"9767:1299:7"}],"id":15693,"name":"FunctionDefinition","src":"9668:1398:7"}],"id":15694,"name":"ContractDefinition","src":"26:11042:7"}],"id":15695,"name":"SourceUnit","src":"0:11069:7"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[9746]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":9574,"name":"PragmaDirective","src":"1401:23:8"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":9575,"name":"PragmaDirective","src":"1425:33:8"},{"attributes":{"SourceUnit":9573,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9576,"name":"ImportDirective","src":"1460:19:8"},{"attributes":{"SourceUnit":11300,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9577,"name":"ImportDirective","src":"1480:36:8"},{"attributes":{"SourceUnit":11459,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9578,"name":"ImportDirective","src":"1517:37:8"},{"attributes":{"SourceUnit":11529,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9579,"name":"ImportDirective","src":"1555:44:8"},{"attributes":{"SourceUnit":12020,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9580,"name":"ImportDirective","src":"1600:36:8"},{"attributes":{"SourceUnit":12207,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9581,"name":"ImportDirective","src":"1637:42:8"},{"attributes":{"SourceUnit":12277,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9582,"name":"ImportDirective","src":"1680:37:8"},{"attributes":{"SourceUnit":12368,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9583,"name":"ImportDirective","src":"1718:39:8"},{"attributes":{"SourceUnit":12451,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":9747,"symbolAliases":[null],"unitAlias":""},"id":9584,"name":"ImportDirective","src":"1758:37:8"},{"attributes":{"contractDependencies":[11299,11458,11528,12019,12206,12276,12367,12450,14355],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[9746,12450,12367,12276,12206,12019,11528,11458,11299,14355],"name":"PublicResolver","scope":9747},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":11299,"type":"contract ABIResolver"},"id":9585,"name":"UserDefinedTypeName","src":"1924:11:8"}],"id":9586,"name":"InheritanceSpecifier","src":"1924:11:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":11458,"type":"contract AddrResolver"},"id":9587,"name":"UserDefinedTypeName","src":"1937:12:8"}],"id":9588,"name":"InheritanceSpecifier","src":"1937:12:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":11528,"type":"contract ContentHashResolver"},"id":9589,"name":"UserDefinedTypeName","src":"1951:19:8"}],"id":9590,"name":"InheritanceSpecifier","src":"1951:19:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":12019,"type":"contract DNSResolver"},"id":9591,"name":"UserDefinedTypeName","src":"1972:11:8"}],"id":9592,"name":"InheritanceSpecifier","src":"1972:11:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":12206,"type":"contract InterfaceResolver"},"id":9593,"name":"UserDefinedTypeName","src":"1985:17:8"}],"id":9594,"name":"InheritanceSpecifier","src":"1985:17:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":12276,"type":"contract NameResolver"},"id":9595,"name":"UserDefinedTypeName","src":"2004:12:8"}],"id":9596,"name":"InheritanceSpecifier","src":"2004:12:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":12367,"type":"contract PubkeyResolver"},"id":9597,"name":"UserDefinedTypeName","src":"2018:14:8"}],"id":9598,"name":"InheritanceSpecifier","src":"2018:14:8"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":12450,"type":"contract TextResolver"},"id":9599,"name":"UserDefinedTypeName","src":"2034:12:8"}],"id":9600,"name":"InheritanceSpecifier","src":"2034:12:8"},{"attributes":{"constant":false,"name":"ens","scope":9746,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":9572,"type":"contract ENS"},"id":9601,"name":"UserDefinedTypeName","src":"2053:3:8"}],"id":9602,"name":"VariableDeclaration","src":"2053:7:8"},{"attributes":{"constant":false,"name":"authorisations","scope":9746,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9603,"name":"ElementaryTypeName","src":"2328:7:8"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":9604,"name":"ElementaryTypeName","src":"2345:7:8"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":9605,"name":"ElementaryTypeName","src":"2362:7:8"},{"attributes":{"name":"bool","type":"bool"},"id":9606,"name":"ElementaryTypeName","src":"2371:4:8"}],"id":9607,"name":"Mapping","src":"2354:22:8"}],"id":9608,"name":"Mapping","src":"2337:40:8"}],"id":9609,"name":"Mapping","src":"2320:58:8"}],"id":9610,"name":"VariableDeclaration","src":"2320:80:8"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":9620,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9611,"name":"ElementaryTypeName","src":"2434:7:8"}],"id":9612,"name":"VariableDeclaration","src":"2434:20:8"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":9620,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9613,"name":"ElementaryTypeName","src":"2456:7:8"}],"id":9614,"name":"VariableDeclaration","src":"2456:21:8"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":9620,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9615,"name":"ElementaryTypeName","src":"2479:7:8"}],"id":9616,"name":"VariableDeclaration","src":"2479:22:8"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":9620,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9617,"name":"ElementaryTypeName","src":"2503:4:8"}],"id":9618,"name":"VariableDeclaration","src":"2503:17:8"}],"id":9619,"name":"ParameterList","src":"2433:88:8"}],"id":9620,"name":"EventDefinition","src":"2407:115:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":9746,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":9630,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":9572,"type":"contract ENS"},"id":9621,"name":"UserDefinedTypeName","src":"2540:3:8"}],"id":9622,"name":"VariableDeclaration","src":"2540:8:8"}],"id":9623,"name":"ParameterList","src":"2539:10:8"},{"attributes":{"parameters":[null]},"children":[],"id":9624,"name":"ParameterList","src":"2557:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9602,"type":"contract ENS","value":"ens"},"id":9625,"name":"Identifier","src":"2567:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9622,"type":"contract ENS","value":"_ens"},"id":9626,"name":"Identifier","src":"2573:4:8"}],"id":9627,"name":"Assignment","src":"2567:10:8"}],"id":9628,"name":"ExpressionStatement","src":"2567:10:8"}],"id":9629,"name":"Block","src":"2557:27:8"}],"id":9630,"name":"FunctionDefinition","src":"2528:56:8"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":9746,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":9659,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9631,"name":"ElementaryTypeName","src":"3295:7:8"}],"id":9632,"name":"VariableDeclaration","src":"3295:12:8"},{"attributes":{"constant":false,"name":"target","scope":9659,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9633,"name":"ElementaryTypeName","src":"3309:7:8"}],"id":9634,"name":"VariableDeclaration","src":"3309:14:8"},{"attributes":{"constant":false,"name":"isAuthorised","scope":9659,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9635,"name":"ElementaryTypeName","src":"3325:4:8"}],"id":9636,"name":"VariableDeclaration","src":"3325:17:8"}],"id":9637,"name":"ParameterList","src":"3294:49:8"},{"attributes":{"parameters":[null]},"children":[],"id":9638,"name":"ParameterList","src":"3353:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9610,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":9639,"name":"Identifier","src":"3363:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9632,"type":"bytes32","value":"node"},"id":9640,"name":"Identifier","src":"3378:4:8"}],"id":9644,"name":"IndexAccess","src":"3363:20:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9641,"name":"Identifier","src":"3384:3:8"}],"id":9642,"name":"MemberAccess","src":"3384:10:8"}],"id":9645,"name":"IndexAccess","src":"3363:32:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"address","value":"target"},"id":9643,"name":"Identifier","src":"3396:6:8"}],"id":9646,"name":"IndexAccess","src":"3363:40:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9636,"type":"bool","value":"isAuthorised"},"id":9647,"name":"Identifier","src":"3406:12:8"}],"id":9648,"name":"Assignment","src":"3363:55:8"}],"id":9649,"name":"ExpressionStatement","src":"3363:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":9620,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":9650,"name":"Identifier","src":"3433:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9632,"type":"bytes32","value":"node"},"id":9651,"name":"Identifier","src":"3454:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9652,"name":"Identifier","src":"3460:3:8"}],"id":9653,"name":"MemberAccess","src":"3460:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"address","value":"target"},"id":9654,"name":"Identifier","src":"3472:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9636,"type":"bool","value":"isAuthorised"},"id":9655,"name":"Identifier","src":"3480:12:8"}],"id":9656,"name":"FunctionCall","src":"3433:60:8"}],"id":9657,"name":"EmitStatement","src":"3428:65:8"}],"id":9658,"name":"Block","src":"3353:147:8"}],"id":9659,"name":"FunctionDefinition","src":"3269:231:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":9746,"stateMutability":"view","superFunction":14310,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":9688,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9660,"name":"ElementaryTypeName","src":"3528:7:8"}],"id":9661,"name":"VariableDeclaration","src":"3528:12:8"}],"id":9662,"name":"ParameterList","src":"3527:14:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9688,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9663,"name":"ElementaryTypeName","src":"3564:4:8"}],"id":9664,"name":"VariableDeclaration","src":"3564:4:8"}],"id":9665,"name":"ParameterList","src":"3563:6:8"},{"children":[{"attributes":{"assignments":[9667]},"children":[{"attributes":{"constant":false,"name":"owner","scope":9687,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9666,"name":"ElementaryTypeName","src":"3580:7:8"}],"id":9667,"name":"VariableDeclaration","src":"3580:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":9541,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9602,"type":"contract ENS","value":"ens"},"id":9668,"name":"Identifier","src":"3596:3:8"}],"id":9669,"name":"MemberAccess","src":"3596:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9661,"type":"bytes32","value":"node"},"id":9670,"name":"Identifier","src":"3606:4:8"}],"id":9671,"name":"FunctionCall","src":"3596:15:8"}],"id":9672,"name":"VariableDeclarationStatement","src":"3580:31:8"},{"attributes":{"functionReturnParameters":9665},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9667,"type":"address","value":"owner"},"id":9673,"name":"Identifier","src":"3628:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9674,"name":"Identifier","src":"3637:3:8"}],"id":9675,"name":"MemberAccess","src":"3637:10:8"}],"id":9676,"name":"BinaryOperation","src":"3628:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9610,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":9677,"name":"Identifier","src":"3651:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9661,"type":"bytes32","value":"node"},"id":9678,"name":"Identifier","src":"3666:4:8"}],"id":9679,"name":"IndexAccess","src":"3651:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9667,"type":"address","value":"owner"},"id":9680,"name":"Identifier","src":"3672:5:8"}],"id":9681,"name":"IndexAccess","src":"3651:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":9682,"name":"Identifier","src":"3679:3:8"}],"id":9683,"name":"MemberAccess","src":"3679:10:8"}],"id":9684,"name":"IndexAccess","src":"3651:39:8"}],"id":9685,"name":"BinaryOperation","src":"3628:62:8"}],"id":9686,"name":"Return","src":"3621:69:8"}],"id":9687,"name":"Block","src":"3570:127:8"}],"id":9688,"name":"FunctionDefinition","src":"3506:191:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":9746,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":9745,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9689,"name":"ElementaryTypeName","src":"3722:5:8"}],"id":9690,"name":"ArrayTypeName","src":"3722:7:8"}],"id":9691,"name":"VariableDeclaration","src":"3722:21:8"}],"id":9692,"name":"ParameterList","src":"3721:23:8"},{"children":[{"attributes":{"constant":false,"name":"results","scope":9745,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9693,"name":"ElementaryTypeName","src":"3762:5:8"}],"id":9694,"name":"ArrayTypeName","src":"3762:7:8"}],"id":9695,"name":"VariableDeclaration","src":"3762:22:8"}],"id":9696,"name":"ParameterList","src":"3761:24:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9695,"type":"bytes memory[] memory","value":"results"},"id":9697,"name":"Identifier","src":"3796:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9698,"name":"ElementaryTypeName","src":"3810:5:8"}],"id":9699,"name":"ArrayTypeName","src":"3810:7:8"}],"id":9700,"name":"NewExpression","src":"3806:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9691,"type":"bytes calldata[] calldata","value":"data"},"id":9701,"name":"Identifier","src":"3818:4:8"}],"id":9702,"name":"MemberAccess","src":"3818:11:8"}],"id":9703,"name":"FunctionCall","src":"3806:24:8"}],"id":9704,"name":"Assignment","src":"3796:34:8"}],"id":9705,"name":"ExpressionStatement","src":"3796:34:8"},{"children":[{"attributes":{"assignments":[9707]},"children":[{"attributes":{"constant":false,"name":"i","scope":9741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9706,"name":"ElementaryTypeName","src":"3844:4:8"}],"id":9707,"name":"VariableDeclaration","src":"3844:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9708,"name":"Literal","src":"3853:1:8"}],"id":9709,"name":"VariableDeclarationStatement","src":"3844:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9707,"type":"uint256","value":"i"},"id":9710,"name":"Identifier","src":"3856:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9691,"type":"bytes calldata[] calldata","value":"data"},"id":9711,"name":"Identifier","src":"3860:4:8"}],"id":9712,"name":"MemberAccess","src":"3860:11:8"}],"id":9713,"name":"BinaryOperation","src":"3856:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9707,"type":"uint256","value":"i"},"id":9714,"name":"Identifier","src":"3873:1:8"}],"id":9715,"name":"UnaryOperation","src":"3873:3:8"}],"id":9716,"name":"ExpressionStatement","src":"3873:3:8"},{"children":[{"attributes":{"assignments":[9718,9720]},"children":[{"attributes":{"constant":false,"name":"success","scope":9740,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9717,"name":"ElementaryTypeName","src":"3893:4:8"}],"id":9718,"name":"VariableDeclaration","src":"3893:12:8"},{"attributes":{"constant":false,"name":"result","scope":9740,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9719,"name":"ElementaryTypeName","src":"3907:5:8"}],"id":9720,"name":"VariableDeclaration","src":"3907:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$9746","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9721,"name":"ElementaryTypeNameExpression","src":"3930:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15765,"type":"contract PublicResolver","value":"this"},"id":9722,"name":"Identifier","src":"3938:4:8"}],"id":9723,"name":"FunctionCall","src":"3930:13:8"}],"id":9724,"name":"MemberAccess","src":"3930:26:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9691,"type":"bytes calldata[] calldata","value":"data"},"id":9725,"name":"Identifier","src":"3957:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9707,"type":"uint256","value":"i"},"id":9726,"name":"Identifier","src":"3962:1:8"}],"id":9727,"name":"IndexAccess","src":"3957:7:8"}],"id":9728,"name":"FunctionCall","src":"3930:35:8"}],"id":9729,"name":"VariableDeclarationStatement","src":"3892:73:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":9730,"name":"Identifier","src":"3979:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9718,"type":"bool","value":"success"},"id":9731,"name":"Identifier","src":"3987:7:8"}],"id":9732,"name":"FunctionCall","src":"3979:16:8"}],"id":9733,"name":"ExpressionStatement","src":"3979:16:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9695,"type":"bytes memory[] memory","value":"results"},"id":9734,"name":"Identifier","src":"4009:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9707,"type":"uint256","value":"i"},"id":9735,"name":"Identifier","src":"4017:1:8"}],"id":9736,"name":"IndexAccess","src":"4009:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9720,"type":"bytes memory","value":"result"},"id":9737,"name":"Identifier","src":"4022:6:8"}],"id":9738,"name":"Assignment","src":"4009:19:8"}],"id":9739,"name":"ExpressionStatement","src":"4009:19:8"}],"id":9740,"name":"Block","src":"3878:161:8"}],"id":9741,"name":"ForStatement","src":"3840:199:8"},{"attributes":{"functionReturnParameters":9696},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9695,"type":"bytes memory[] memory","value":"results"},"id":9742,"name":"Identifier","src":"4055:7:8"}],"id":9743,"name":"Return","src":"4048:14:8"}],"id":9744,"name":"Block","src":"3786:283:8"}],"id":9745,"name":"FunctionDefinition","src":"3703:366:8"}],"id":9746,"name":"ContractDefinition","src":"1897:2174:8"}],"id":9747,"name":"SourceUnit","src":"1401:2671:8"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[14973]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":14357,"name":"PragmaDirective","src":"0:24:9"},{"attributes":{"SourceUnit":15695,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":14974,"symbolAliases":[null],"unitAlias":""},"id":14358,"name":"ImportDirective","src":"26:29:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[14973],"name":"RRUtils","scope":14974},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":15694,"type":"library ENSBytesUtils"},"id":14359,"name":"UserDefinedTypeName","src":"178:13:9"}],"id":14360,"name":"UsingForDirective","src":"172:26:9"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14407,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14361,"name":"ElementaryTypeName","src":"487:5:9"}],"id":14362,"name":"VariableDeclaration","src":"487:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14407,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14363,"name":"ElementaryTypeName","src":"506:4:9"}],"id":14364,"name":"VariableDeclaration","src":"506:11:9"}],"id":14365,"name":"ParameterList","src":"486:32:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14407,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14366,"name":"ElementaryTypeName","src":"541:4:9"}],"id":14367,"name":"VariableDeclaration","src":"541:4:9"}],"id":14368,"name":"ParameterList","src":"540:6:9"},{"children":[{"attributes":{"assignments":[14370]},"children":[{"attributes":{"constant":false,"name":"idx","scope":14406,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14369,"name":"ElementaryTypeName","src":"557:4:9"}],"id":14370,"name":"VariableDeclaration","src":"557:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14364,"type":"uint256","value":"offset"},"id":14371,"name":"Identifier","src":"568:6:9"}],"id":14372,"name":"VariableDeclarationStatement","src":"557:17:9"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":14373,"name":"Literal","src":"591:4:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":15698,"type":"function (bool) pure","value":"assert"},"id":14374,"name":"Identifier","src":"611:6:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14370,"type":"uint256","value":"idx"},"id":14375,"name":"Identifier","src":"618:3:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14362,"type":"bytes memory","value":"self"},"id":14376,"name":"Identifier","src":"624:4:9"}],"id":14377,"name":"MemberAccess","src":"624:11:9"}],"id":14378,"name":"BinaryOperation","src":"618:17:9"}],"id":14379,"name":"FunctionCall","src":"611:25:9"}],"id":14380,"name":"ExpressionStatement","src":"611:25:9"},{"attributes":{"assignments":[14382]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":14400,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14381,"name":"ElementaryTypeName","src":"650:4:9"}],"id":14382,"name":"VariableDeclaration","src":"650:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14362,"type":"bytes memory","value":"self"},"id":14383,"name":"Identifier","src":"666:4:9"}],"id":14384,"name":"MemberAccess","src":"666:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14370,"type":"uint256","value":"idx"},"id":14385,"name":"Identifier","src":"681:3:9"}],"id":14386,"name":"FunctionCall","src":"666:19:9"}],"id":14387,"name":"VariableDeclarationStatement","src":"650:35:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14370,"type":"uint256","value":"idx"},"id":14388,"name":"Identifier","src":"699:3:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14382,"type":"uint256","value":"labelLen"},"id":14389,"name":"Identifier","src":"706:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14390,"name":"Literal","src":"717:1:9"}],"id":14391,"name":"BinaryOperation","src":"706:12:9"}],"id":14392,"name":"Assignment","src":"699:19:9"}],"id":14393,"name":"ExpressionStatement","src":"699:19:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14382,"type":"uint256","value":"labelLen"},"id":14394,"name":"Identifier","src":"736:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14395,"name":"Literal","src":"748:1:9"}],"id":14396,"name":"BinaryOperation","src":"736:13:9"},{"children":[{"id":14397,"name":"Break","src":"769:5:9"}],"id":14398,"name":"Block","src":"751:38:9"}],"id":14399,"name":"IfStatement","src":"732:57:9"}],"id":14400,"name":"Block","src":"597:202:9"}],"id":14401,"name":"WhileStatement","src":"584:215:9"},{"attributes":{"functionReturnParameters":14368},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14370,"type":"uint256","value":"idx"},"id":14402,"name":"Identifier","src":"815:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14364,"type":"uint256","value":"offset"},"id":14403,"name":"Identifier","src":"821:6:9"}],"id":14404,"name":"BinaryOperation","src":"815:12:9"}],"id":14405,"name":"Return","src":"808:19:9"}],"id":14406,"name":"Block","src":"547:287:9"}],"id":14407,"name":"FunctionDefinition","src":"467:367:9"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14430,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14408,"name":"ElementaryTypeName","src":"1073:5:9"}],"id":14409,"name":"VariableDeclaration","src":"1073:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14430,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14410,"name":"ElementaryTypeName","src":"1092:4:9"}],"id":14411,"name":"VariableDeclaration","src":"1092:11:9"}],"id":14412,"name":"ParameterList","src":"1072:32:9"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":14430,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14413,"name":"ElementaryTypeName","src":"1127:5:9"}],"id":14414,"name":"VariableDeclaration","src":"1127:16:9"}],"id":14415,"name":"ParameterList","src":"1126:18:9"},{"children":[{"attributes":{"assignments":[14417]},"children":[{"attributes":{"constant":false,"name":"len","scope":14429,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14416,"name":"ElementaryTypeName","src":"1155:4:9"}],"id":14417,"name":"VariableDeclaration","src":"1155:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14407,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":14418,"name":"Identifier","src":"1166:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14409,"type":"bytes memory","value":"self"},"id":14419,"name":"Identifier","src":"1177:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14411,"type":"uint256","value":"offset"},"id":14420,"name":"Identifier","src":"1183:6:9"}],"id":14421,"name":"FunctionCall","src":"1166:24:9"}],"id":14422,"name":"VariableDeclarationStatement","src":"1155:35:9"},{"attributes":{"functionReturnParameters":14415},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":15471,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14409,"type":"bytes memory","value":"self"},"id":14423,"name":"Identifier","src":"1207:4:9"}],"id":14424,"name":"MemberAccess","src":"1207:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14411,"type":"uint256","value":"offset"},"id":14425,"name":"Identifier","src":"1222:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14417,"type":"uint256","value":"len"},"id":14426,"name":"Identifier","src":"1230:3:9"}],"id":14427,"name":"FunctionCall","src":"1207:27:9"}],"id":14428,"name":"Return","src":"1200:34:9"}],"id":14429,"name":"Block","src":"1145:96:9"}],"id":14430,"name":"FunctionDefinition","src":"1055:186:9"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14479,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14431,"name":"ElementaryTypeName","src":"1541:5:9"}],"id":14432,"name":"VariableDeclaration","src":"1541:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14433,"name":"ElementaryTypeName","src":"1560:4:9"}],"id":14434,"name":"VariableDeclaration","src":"1560:11:9"}],"id":14435,"name":"ParameterList","src":"1540:32:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14436,"name":"ElementaryTypeName","src":"1595:4:9"}],"id":14437,"name":"VariableDeclaration","src":"1595:4:9"}],"id":14438,"name":"ParameterList","src":"1594:6:9"},{"children":[{"attributes":{"assignments":[14440]},"children":[{"attributes":{"constant":false,"name":"count","scope":14478,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14439,"name":"ElementaryTypeName","src":"1611:4:9"}],"id":14440,"name":"VariableDeclaration","src":"1611:10:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14441,"name":"Literal","src":"1624:1:9"}],"id":14442,"name":"VariableDeclarationStatement","src":"1611:14:9"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":14443,"name":"Literal","src":"1642:4:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":15698,"type":"function (bool) pure","value":"assert"},"id":14444,"name":"Identifier","src":"1662:6:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14434,"type":"uint256","value":"offset"},"id":14445,"name":"Identifier","src":"1669:6:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14432,"type":"bytes memory","value":"self"},"id":14446,"name":"Identifier","src":"1678:4:9"}],"id":14447,"name":"MemberAccess","src":"1678:11:9"}],"id":14448,"name":"BinaryOperation","src":"1669:20:9"}],"id":14449,"name":"FunctionCall","src":"1662:28:9"}],"id":14450,"name":"ExpressionStatement","src":"1662:28:9"},{"attributes":{"assignments":[14452]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":14474,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14451,"name":"ElementaryTypeName","src":"1704:4:9"}],"id":14452,"name":"VariableDeclaration","src":"1704:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14432,"type":"bytes memory","value":"self"},"id":14453,"name":"Identifier","src":"1720:4:9"}],"id":14454,"name":"MemberAccess","src":"1720:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14434,"type":"uint256","value":"offset"},"id":14455,"name":"Identifier","src":"1735:6:9"}],"id":14456,"name":"FunctionCall","src":"1720:22:9"}],"id":14457,"name":"VariableDeclarationStatement","src":"1704:38:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14434,"type":"uint256","value":"offset"},"id":14458,"name":"Identifier","src":"1756:6:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14452,"type":"uint256","value":"labelLen"},"id":14459,"name":"Identifier","src":"1766:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14460,"name":"Literal","src":"1777:1:9"}],"id":14461,"name":"BinaryOperation","src":"1766:12:9"}],"id":14462,"name":"Assignment","src":"1756:22:9"}],"id":14463,"name":"ExpressionStatement","src":"1756:22:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14452,"type":"uint256","value":"labelLen"},"id":14464,"name":"Identifier","src":"1796:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14465,"name":"Literal","src":"1808:1:9"}],"id":14466,"name":"BinaryOperation","src":"1796:13:9"},{"children":[{"id":14467,"name":"Break","src":"1829:5:9"}],"id":14468,"name":"Block","src":"1811:38:9"}],"id":14469,"name":"IfStatement","src":"1792:57:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14440,"type":"uint256","value":"count"},"id":14470,"name":"Identifier","src":"1862:5:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14471,"name":"Literal","src":"1871:1:9"}],"id":14472,"name":"Assignment","src":"1862:10:9"}],"id":14473,"name":"ExpressionStatement","src":"1862:10:9"}],"id":14474,"name":"Block","src":"1648:235:9"}],"id":14475,"name":"WhileStatement","src":"1635:248:9"},{"attributes":{"functionReturnParameters":14438},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14440,"type":"uint256","value":"count"},"id":14476,"name":"Identifier","src":"1899:5:9"}],"id":14477,"name":"Return","src":"1892:12:9"}],"id":14478,"name":"Block","src":"1601:310:9"}],"id":14479,"name":"FunctionDefinition","src":"1521:390:9"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":14973,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":14494,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14480,"name":"ElementaryTypeName","src":"2006:5:9"}],"id":14481,"name":"VariableDeclaration","src":"2006:10:9"},{"attributes":{"constant":false,"name":"offset","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14482,"name":"ElementaryTypeName","src":"2026:4:9"}],"id":14483,"name":"VariableDeclaration","src":"2026:11:9"},{"attributes":{"constant":false,"name":"dnstype","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":14484,"name":"ElementaryTypeName","src":"2047:6:9"}],"id":14485,"name":"VariableDeclaration","src":"2047:14:9"},{"attributes":{"constant":false,"name":"class","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":14486,"name":"ElementaryTypeName","src":"2071:6:9"}],"id":14487,"name":"VariableDeclaration","src":"2071:12:9"},{"attributes":{"constant":false,"name":"ttl","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":14488,"name":"ElementaryTypeName","src":"2093:6:9"}],"id":14489,"name":"VariableDeclaration","src":"2093:10:9"},{"attributes":{"constant":false,"name":"rdataOffset","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14490,"name":"ElementaryTypeName","src":"2113:4:9"}],"id":14491,"name":"VariableDeclaration","src":"2113:16:9"},{"attributes":{"constant":false,"name":"nextOffset","scope":14494,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14492,"name":"ElementaryTypeName","src":"2139:4:9"}],"id":14493,"name":"VariableDeclaration","src":"2139:15:9"}],"id":14494,"name":"StructDefinition","src":"1978:183:9"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14520,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14495,"name":"ElementaryTypeName","src":"2387:5:9"}],"id":14496,"name":"VariableDeclaration","src":"2387:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14497,"name":"ElementaryTypeName","src":"2406:4:9"}],"id":14498,"name":"VariableDeclaration","src":"2406:11:9"}],"id":14499,"name":"ParameterList","src":"2386:32:9"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":14520,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14500,"name":"UserDefinedTypeName","src":"2442:10:9"}],"id":14501,"name":"VariableDeclaration","src":"2442:21:9"}],"id":14502,"name":"ParameterList","src":"2441:23:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14501,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":14503,"name":"Identifier","src":"2475:3:9"}],"id":14505,"name":"MemberAccess","src":"2475:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14496,"type":"bytes memory","value":"self"},"id":14506,"name":"Identifier","src":"2486:4:9"}],"id":14507,"name":"Assignment","src":"2475:15:9"}],"id":14508,"name":"ExpressionStatement","src":"2475:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":14493,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14501,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":14509,"name":"Identifier","src":"2500:3:9"}],"id":14511,"name":"MemberAccess","src":"2500:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14498,"type":"uint256","value":"offset"},"id":14512,"name":"Identifier","src":"2517:6:9"}],"id":14513,"name":"Assignment","src":"2500:23:9"}],"id":14514,"name":"ExpressionStatement","src":"2500:23:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$14494_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":14637,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":14515,"name":"Identifier","src":"2533:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14501,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":14516,"name":"Identifier","src":"2538:3:9"}],"id":14517,"name":"FunctionCall","src":"2533:9:9"}],"id":14518,"name":"ExpressionStatement","src":"2533:9:9"}],"id":14519,"name":"Block","src":"2465:84:9"}],"id":14520,"name":"FunctionDefinition","src":"2367:182:9"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":14535,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14521,"name":"UserDefinedTypeName","src":"2734:10:9"}],"id":14522,"name":"VariableDeclaration","src":"2734:22:9"}],"id":14523,"name":"ParameterList","src":"2733:24:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14535,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14524,"name":"ElementaryTypeName","src":"2780:4:9"}],"id":14525,"name":"VariableDeclaration","src":"2780:4:9"}],"id":14526,"name":"ParameterList","src":"2779:6:9"},{"children":[{"attributes":{"functionReturnParameters":14526},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14522,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14527,"name":"Identifier","src":"2803:4:9"}],"id":14528,"name":"MemberAccess","src":"2803:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14522,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14529,"name":"Identifier","src":"2818:4:9"}],"id":14530,"name":"MemberAccess","src":"2818:9:9"}],"id":14531,"name":"MemberAccess","src":"2818:16:9"}],"id":14532,"name":"BinaryOperation","src":"2803:31:9"}],"id":14533,"name":"Return","src":"2796:38:9"}],"id":14534,"name":"Block","src":"2786:55:9"}],"id":14535,"name":"FunctionDefinition","src":"2720:121:9"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":14637,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14536,"name":"UserDefinedTypeName","src":"2978:10:9"}],"id":14537,"name":"VariableDeclaration","src":"2978:22:9"}],"id":14538,"name":"ParameterList","src":"2977:24:9"},{"attributes":{"parameters":[null]},"children":[],"id":14539,"name":"ParameterList","src":"3016:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14540,"name":"Identifier","src":"3026:4:9"}],"id":14542,"name":"MemberAccess","src":"3026:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":14493,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14543,"name":"Identifier","src":"3040:4:9"}],"id":14544,"name":"MemberAccess","src":"3040:15:9"}],"id":14545,"name":"Assignment","src":"3026:29:9"}],"id":14546,"name":"ExpressionStatement","src":"3026:29:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14547,"name":"Identifier","src":"3069:4:9"}],"id":14548,"name":"MemberAccess","src":"3069:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14549,"name":"Identifier","src":"3084:4:9"}],"id":14550,"name":"MemberAccess","src":"3084:9:9"}],"id":14551,"name":"MemberAccess","src":"3084:16:9"}],"id":14552,"name":"BinaryOperation","src":"3069:31:9"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":14539},"id":14553,"name":"Return","src":"3116:7:9"}],"id":14554,"name":"Block","src":"3102:31:9"}],"id":14555,"name":"IfStatement","src":"3065:68:9"},{"attributes":{"assignments":[14557]},"children":[{"attributes":{"constant":false,"name":"off","scope":14636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14556,"name":"ElementaryTypeName","src":"3168:4:9"}],"id":14557,"name":"VariableDeclaration","src":"3168:8:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14558,"name":"Identifier","src":"3179:4:9"}],"id":14559,"name":"MemberAccess","src":"3179:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14407,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":14560,"name":"Identifier","src":"3193:10:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14561,"name":"Identifier","src":"3204:4:9"}],"id":14562,"name":"MemberAccess","src":"3204:9:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14563,"name":"Identifier","src":"3215:4:9"}],"id":14564,"name":"MemberAccess","src":"3215:11:9"}],"id":14565,"name":"FunctionCall","src":"3193:34:9"}],"id":14566,"name":"BinaryOperation","src":"3179:48:9"}],"id":14567,"name":"VariableDeclarationStatement","src":"3168:59:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":14485,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14568,"name":"Identifier","src":"3275:4:9"}],"id":14570,"name":"MemberAccess","src":"3275:12:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":15300,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14571,"name":"Identifier","src":"3290:4:9"}],"id":14572,"name":"MemberAccess","src":"3290:9:9"}],"id":14573,"name":"MemberAccess","src":"3290:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14574,"name":"Identifier","src":"3311:3:9"}],"id":14575,"name":"FunctionCall","src":"3290:25:9"}],"id":14576,"name":"Assignment","src":"3275:40:9"}],"id":14577,"name":"ExpressionStatement","src":"3275:40:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14578,"name":"Identifier","src":"3325:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14579,"name":"Literal","src":"3332:1:9"}],"id":14580,"name":"Assignment","src":"3325:8:9"}],"id":14581,"name":"ExpressionStatement","src":"3325:8:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":14487,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14582,"name":"Identifier","src":"3343:4:9"}],"id":14584,"name":"MemberAccess","src":"3343:10:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":15300,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14585,"name":"Identifier","src":"3356:4:9"}],"id":14586,"name":"MemberAccess","src":"3356:9:9"}],"id":14587,"name":"MemberAccess","src":"3356:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14588,"name":"Identifier","src":"3377:3:9"}],"id":14589,"name":"FunctionCall","src":"3356:25:9"}],"id":14590,"name":"Assignment","src":"3343:38:9"}],"id":14591,"name":"ExpressionStatement","src":"3343:38:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14592,"name":"Identifier","src":"3391:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14593,"name":"Literal","src":"3398:1:9"}],"id":14594,"name":"Assignment","src":"3391:8:9"}],"id":14595,"name":"ExpressionStatement","src":"3391:8:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":14489,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14596,"name":"Identifier","src":"3409:4:9"}],"id":14598,"name":"MemberAccess","src":"3409:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":15320,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14599,"name":"Identifier","src":"3420:4:9"}],"id":14600,"name":"MemberAccess","src":"3420:9:9"}],"id":14601,"name":"MemberAccess","src":"3420:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14602,"name":"Identifier","src":"3441:3:9"}],"id":14603,"name":"FunctionCall","src":"3420:25:9"}],"id":14604,"name":"Assignment","src":"3409:36:9"}],"id":14605,"name":"ExpressionStatement","src":"3409:36:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14606,"name":"Identifier","src":"3455:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":14607,"name":"Literal","src":"3462:1:9"}],"id":14608,"name":"Assignment","src":"3455:8:9"}],"id":14609,"name":"ExpressionStatement","src":"3455:8:9"},{"attributes":{"assignments":[14611]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":14636,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14610,"name":"ElementaryTypeName","src":"3500:4:9"}],"id":14611,"name":"VariableDeclaration","src":"3500:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":15300,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14612,"name":"Identifier","src":"3519:4:9"}],"id":14613,"name":"MemberAccess","src":"3519:9:9"}],"id":14614,"name":"MemberAccess","src":"3519:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14615,"name":"Identifier","src":"3540:3:9"}],"id":14616,"name":"FunctionCall","src":"3519:25:9"}],"id":14617,"name":"VariableDeclarationStatement","src":"3500:44:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14618,"name":"Identifier","src":"3554:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14619,"name":"Literal","src":"3561:1:9"}],"id":14620,"name":"Assignment","src":"3554:8:9"}],"id":14621,"name":"ExpressionStatement","src":"3554:8:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":14491,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14622,"name":"Identifier","src":"3572:4:9"}],"id":14624,"name":"MemberAccess","src":"3572:16:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14625,"name":"Identifier","src":"3591:3:9"}],"id":14626,"name":"Assignment","src":"3572:22:9"}],"id":14627,"name":"ExpressionStatement","src":"3572:22:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":14493,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14537,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14628,"name":"Identifier","src":"3604:4:9"}],"id":14630,"name":"MemberAccess","src":"3604:15:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14557,"type":"uint256","value":"off"},"id":14631,"name":"Identifier","src":"3622:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14611,"type":"uint256","value":"rdataLength"},"id":14632,"name":"Identifier","src":"3628:11:9"}],"id":14633,"name":"BinaryOperation","src":"3622:17:9"}],"id":14634,"name":"Assignment","src":"3604:35:9"}],"id":14635,"name":"ExpressionStatement","src":"3604:35:9"}],"id":14636,"name":"Block","src":"3016:630:9"}],"id":14637,"name":"FunctionDefinition","src":"2964:682:9"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":14658,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14638,"name":"UserDefinedTypeName","src":"3836:10:9"}],"id":14639,"name":"VariableDeclaration","src":"3836:22:9"}],"id":14640,"name":"ParameterList","src":"3835:24:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14658,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14641,"name":"ElementaryTypeName","src":"3882:5:9"}],"id":14642,"name":"VariableDeclaration","src":"3882:12:9"}],"id":14643,"name":"ParameterList","src":"3881:14:9"},{"children":[{"attributes":{"functionReturnParameters":14643},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":15471,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14639,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14644,"name":"Identifier","src":"3913:4:9"}],"id":14645,"name":"MemberAccess","src":"3913:9:9"}],"id":14646,"name":"MemberAccess","src":"3913:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14639,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14647,"name":"Identifier","src":"3933:4:9"}],"id":14648,"name":"MemberAccess","src":"3933:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14407,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":14649,"name":"Identifier","src":"3946:10:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14639,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14650,"name":"Identifier","src":"3957:4:9"}],"id":14651,"name":"MemberAccess","src":"3957:9:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14639,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14652,"name":"Identifier","src":"3968:4:9"}],"id":14653,"name":"MemberAccess","src":"3968:11:9"}],"id":14654,"name":"FunctionCall","src":"3946:34:9"}],"id":14655,"name":"FunctionCall","src":"3913:68:9"}],"id":14656,"name":"Return","src":"3906:75:9"}],"id":14657,"name":"Block","src":"3896:92:9"}],"id":14658,"name":"FunctionDefinition","src":"3822:166:9"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":14678,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":14659,"name":"UserDefinedTypeName","src":"4176:10:9"}],"id":14660,"name":"VariableDeclaration","src":"4176:22:9"}],"id":14661,"name":"ParameterList","src":"4175:24:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14678,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14662,"name":"ElementaryTypeName","src":"4222:5:9"}],"id":14663,"name":"VariableDeclaration","src":"4222:12:9"}],"id":14664,"name":"ParameterList","src":"4221:14:9"},{"children":[{"attributes":{"functionReturnParameters":14664},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":15471,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":14481,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14660,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14665,"name":"Identifier","src":"4253:4:9"}],"id":14666,"name":"MemberAccess","src":"4253:9:9"}],"id":14667,"name":"MemberAccess","src":"4253:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":14491,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14660,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14668,"name":"Identifier","src":"4273:4:9"}],"id":14669,"name":"MemberAccess","src":"4273:16:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":14493,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14660,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14670,"name":"Identifier","src":"4291:4:9"}],"id":14671,"name":"MemberAccess","src":"4291:15:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":14491,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14660,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":14672,"name":"Identifier","src":"4309:4:9"}],"id":14673,"name":"MemberAccess","src":"4309:16:9"}],"id":14674,"name":"BinaryOperation","src":"4291:34:9"}],"id":14675,"name":"FunctionCall","src":"4253:73:9"}],"id":14676,"name":"Return","src":"4246:80:9"}],"id":14677,"name":"Block","src":"4236:97:9"}],"id":14678,"name":"FunctionDefinition","src":"4161:172:9"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14798,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14679,"name":"ElementaryTypeName","src":"4675:5:9"}],"id":14680,"name":"VariableDeclaration","src":"4675:17:9"},{"attributes":{"constant":false,"name":"offset","scope":14798,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14681,"name":"ElementaryTypeName","src":"4694:4:9"}],"id":14682,"name":"VariableDeclaration","src":"4694:11:9"},{"attributes":{"constant":false,"name":"rrtype","scope":14798,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":14683,"name":"ElementaryTypeName","src":"4707:6:9"}],"id":14684,"name":"VariableDeclaration","src":"4707:13:9"}],"id":14685,"name":"ParameterList","src":"4674:47:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14798,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14686,"name":"ElementaryTypeName","src":"4745:4:9"}],"id":14687,"name":"VariableDeclaration","src":"4745:4:9"}],"id":14688,"name":"ParameterList","src":"4744:6:9"},{"children":[{"attributes":{"assignments":[14690]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":14797,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14689,"name":"ElementaryTypeName","src":"4761:5:9"}],"id":14690,"name":"VariableDeclaration","src":"4761:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14691,"name":"ElementaryTypeNameExpression","src":"4780:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14684,"type":"uint16","value":"rrtype"},"id":14692,"name":"Identifier","src":"4786:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":14693,"name":"Literal","src":"4796:1:9"}],"id":14694,"name":"BinaryOperation","src":"4786:11:9"}],"id":14695,"name":"FunctionCall","src":"4780:18:9"}],"id":14696,"name":"VariableDeclarationStatement","src":"4761:37:9"},{"attributes":{"assignments":[14698]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":14797,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14697,"name":"ElementaryTypeName","src":"4808:5:9"}],"id":14698,"name":"VariableDeclaration","src":"4808:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14699,"name":"ElementaryTypeNameExpression","src":"4827:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14684,"type":"uint16","value":"rrtype"},"id":14700,"name":"Identifier","src":"4834:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":14701,"name":"Literal","src":"4843:4:9"}],"id":14702,"name":"BinaryOperation","src":"4834:13:9"}],"id":14703,"name":"TupleExpression","src":"4833:15:9"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":14704,"name":"Literal","src":"4851:1:9"}],"id":14705,"name":"BinaryOperation","src":"4833:19:9"}],"id":14706,"name":"FunctionCall","src":"4827:26:9"}],"id":14707,"name":"VariableDeclarationStatement","src":"4808:45:9"},{"attributes":{"assignments":[14709]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":14797,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14708,"name":"ElementaryTypeName","src":"4863:5:9"}],"id":14709,"name":"VariableDeclaration","src":"4863:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14710,"name":"ElementaryTypeNameExpression","src":"4885:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14711,"name":"ElementaryTypeNameExpression","src":"4891:5:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14712,"name":"Literal","src":"4897:1:9"}],"id":14713,"name":"FunctionCall","src":"4891:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14714,"name":"ElementaryTypeNameExpression","src":"4904:5:9"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":14715,"name":"Literal","src":"4910:1:9"}],"id":14716,"name":"FunctionCall","src":"4904:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":14717,"name":"ElementaryTypeNameExpression","src":"4915:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14684,"type":"uint16","value":"rrtype"},"id":14718,"name":"Identifier","src":"4921:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":14719,"name":"Literal","src":"4930:3:9"}],"id":14720,"name":"BinaryOperation","src":"4921:12:9"}],"id":14721,"name":"FunctionCall","src":"4915:19:9"}],"id":14722,"name":"BinaryOperation","src":"4904:30:9"}],"id":14723,"name":"TupleExpression","src":"4903:32:9"}],"id":14724,"name":"BinaryOperation","src":"4891:44:9"}],"id":14725,"name":"FunctionCall","src":"4885:51:9"}],"id":14726,"name":"VariableDeclarationStatement","src":"4863:73:9"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[14728]},"children":[{"attributes":{"constant":false,"name":"off","scope":14794,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14727,"name":"ElementaryTypeName","src":"4951:4:9"}],"id":14728,"name":"VariableDeclaration","src":"4951:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14682,"type":"uint256","value":"offset"},"id":14729,"name":"Identifier","src":"4962:6:9"}],"id":14730,"name":"VariableDeclarationStatement","src":"4951:17:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14731,"name":"Identifier","src":"4970:3:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14680,"type":"bytes memory","value":"self"},"id":14732,"name":"Identifier","src":"4976:4:9"}],"id":14733,"name":"MemberAccess","src":"4976:11:9"}],"id":14734,"name":"BinaryOperation","src":"4970:17:9"},{"children":[{"attributes":{"assignments":[14736]},"children":[{"attributes":{"constant":false,"name":"window","scope":14793,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14735,"name":"ElementaryTypeName","src":"5004:5:9"}],"id":14736,"name":"VariableDeclaration","src":"5004:12:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14680,"type":"bytes memory","value":"self"},"id":14737,"name":"Identifier","src":"5019:4:9"}],"id":14738,"name":"MemberAccess","src":"5019:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14739,"name":"Identifier","src":"5034:3:9"}],"id":14740,"name":"FunctionCall","src":"5019:19:9"}],"id":14741,"name":"VariableDeclarationStatement","src":"5004:34:9"},{"attributes":{"assignments":[14743]},"children":[{"attributes":{"constant":false,"name":"len","scope":14793,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":14742,"name":"ElementaryTypeName","src":"5052:5:9"}],"id":14743,"name":"VariableDeclaration","src":"5052:9:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14680,"type":"bytes memory","value":"self"},"id":14744,"name":"Identifier","src":"5064:4:9"}],"id":14745,"name":"MemberAccess","src":"5064:14:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14746,"name":"Identifier","src":"5079:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14747,"name":"Literal","src":"5085:1:9"}],"id":14748,"name":"BinaryOperation","src":"5079:7:9"}],"id":14749,"name":"FunctionCall","src":"5064:23:9"}],"id":14750,"name":"VariableDeclarationStatement","src":"5052:35:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14690,"type":"uint8","value":"typeWindow"},"id":14751,"name":"Identifier","src":"5105:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14736,"type":"uint8","value":"window"},"id":14752,"name":"Identifier","src":"5118:6:9"}],"id":14753,"name":"BinaryOperation","src":"5105:19:9"},{"children":[{"attributes":{"functionReturnParameters":14688},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":14754,"name":"Literal","src":"5213:5:9"}],"id":14755,"name":"Return","src":"5206:12:9"}],"id":14756,"name":"Block","src":"5126:107:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14690,"type":"uint8","value":"typeWindow"},"id":14757,"name":"Identifier","src":"5243:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14736,"type":"uint8","value":"window"},"id":14758,"name":"Identifier","src":"5257:6:9"}],"id":14759,"name":"BinaryOperation","src":"5243:20:9"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14743,"type":"uint8","value":"len"},"id":14760,"name":"Identifier","src":"5329:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":14761,"name":"Literal","src":"5335:1:9"}],"id":14762,"name":"BinaryOperation","src":"5329:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14698,"type":"uint8","value":"windowByte"},"id":14763,"name":"Identifier","src":"5340:10:9"}],"id":14764,"name":"BinaryOperation","src":"5329:21:9"},{"children":[{"attributes":{"functionReturnParameters":14688},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":14765,"name":"Literal","src":"5443:5:9"}],"id":14766,"name":"Return","src":"5436:12:9"}],"id":14767,"name":"Block","src":"5352:115:9"}],"id":14768,"name":"IfStatement","src":"5325:142:9"},{"attributes":{"functionReturnParameters":14688},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14680,"type":"bytes memory","value":"self"},"id":14769,"name":"Identifier","src":"5492:4:9"}],"id":14770,"name":"MemberAccess","src":"5492:14:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14771,"name":"Identifier","src":"5507:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14698,"type":"uint8","value":"windowByte"},"id":14772,"name":"Identifier","src":"5513:10:9"}],"id":14773,"name":"BinaryOperation","src":"5507:16:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14774,"name":"Literal","src":"5526:1:9"}],"id":14775,"name":"BinaryOperation","src":"5507:20:9"}],"id":14776,"name":"FunctionCall","src":"5492:36:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14709,"type":"uint8","value":"windowBitmask"},"id":14777,"name":"Identifier","src":"5531:13:9"}],"id":14778,"name":"BinaryOperation","src":"5492:52:9"}],"id":14779,"name":"TupleExpression","src":"5491:54:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14780,"name":"Literal","src":"5549:1:9"}],"id":14781,"name":"BinaryOperation","src":"5491:59:9"}],"id":14782,"name":"Return","src":"5484:66:9"}],"id":14783,"name":"Block","src":"5265:300:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14728,"type":"uint256","value":"off"},"id":14784,"name":"Identifier","src":"5630:3:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14743,"type":"uint8","value":"len"},"id":14785,"name":"Identifier","src":"5637:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":14786,"name":"Literal","src":"5643:1:9"}],"id":14787,"name":"BinaryOperation","src":"5637:7:9"}],"id":14788,"name":"Assignment","src":"5630:14:9"}],"id":14789,"name":"ExpressionStatement","src":"5630:14:9"}],"id":14790,"name":"Block","src":"5571:88:9"}],"id":14791,"name":"IfStatement","src":"5239:420:9"}],"id":14792,"name":"IfStatement","src":"5101:558:9"}],"id":14793,"name":"Block","src":"4990:679:9"}],"id":14794,"name":"ForStatement","src":"4946:723:9"},{"attributes":{"functionReturnParameters":14688},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":14795,"name":"Literal","src":"5686:5:9"}],"id":14796,"name":"Return","src":"5679:12:9"}],"id":14797,"name":"Block","src":"4751:947:9"}],"id":14798,"name":"FunctionDefinition","src":"4650:1048:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14953,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14799,"name":"ElementaryTypeName","src":"5726:5:9"}],"id":14800,"name":"VariableDeclaration","src":"5726:17:9"},{"attributes":{"constant":false,"name":"other","scope":14953,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14801,"name":"ElementaryTypeName","src":"5745:5:9"}],"id":14802,"name":"VariableDeclaration","src":"5745:18:9"}],"id":14803,"name":"ParameterList","src":"5725:39:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14953,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":14804,"name":"ElementaryTypeName","src":"5788:3:9"}],"id":14805,"name":"VariableDeclaration","src":"5788:3:9"}],"id":14806,"name":"ParameterList","src":"5787:5:9"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":15264,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14807,"name":"Identifier","src":"5807:4:9"}],"id":14808,"name":"MemberAccess","src":"5807:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14809,"name":"Identifier","src":"5819:5:9"}],"id":14810,"name":"FunctionCall","src":"5807:18:9"},{"children":[{"attributes":{"functionReturnParameters":14806},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14811,"name":"Literal","src":"5848:1:9"}],"id":14812,"name":"Return","src":"5841:8:9"}],"id":14813,"name":"Block","src":"5827:33:9"}],"id":14814,"name":"IfStatement","src":"5803:57:9"},{"attributes":{"assignments":[14816],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14815,"name":"ElementaryTypeName","src":"5870:4:9"}],"id":14816,"name":"VariableDeclaration","src":"5870:8:9"}],"id":14817,"name":"VariableDeclarationStatement","src":"5870:8:9"},{"attributes":{"assignments":[14819],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14818,"name":"ElementaryTypeName","src":"5888:4:9"}],"id":14819,"name":"VariableDeclaration","src":"5888:13:9"}],"id":14820,"name":"VariableDeclarationStatement","src":"5888:13:9"},{"attributes":{"assignments":[14822],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14821,"name":"ElementaryTypeName","src":"5911:4:9"}],"id":14822,"name":"VariableDeclaration","src":"5911:12:9"}],"id":14823,"name":"VariableDeclarationStatement","src":"5911:12:9"},{"attributes":{"assignments":[14825],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14824,"name":"ElementaryTypeName","src":"5933:4:9"}],"id":14825,"name":"VariableDeclaration","src":"5933:17:9"}],"id":14826,"name":"VariableDeclarationStatement","src":"5933:17:9"},{"attributes":{"assignments":[14828]},"children":[{"attributes":{"constant":false,"name":"counts","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14827,"name":"ElementaryTypeName","src":"5960:4:9"}],"id":14828,"name":"VariableDeclaration","src":"5960:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":14479,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":14829,"name":"Identifier","src":"5974:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14830,"name":"Identifier","src":"5985:4:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14831,"name":"Literal","src":"5991:1:9"}],"id":14832,"name":"FunctionCall","src":"5974:19:9"}],"id":14833,"name":"VariableDeclarationStatement","src":"5960:33:9"},{"attributes":{"assignments":[14835]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":14952,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14834,"name":"ElementaryTypeName","src":"6003:4:9"}],"id":14835,"name":"VariableDeclaration","src":"6003:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":14479,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":14836,"name":"Identifier","src":"6022:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14837,"name":"Identifier","src":"6033:5:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14838,"name":"Literal","src":"6040:1:9"}],"id":14839,"name":"FunctionCall","src":"6022:20:9"}],"id":14840,"name":"VariableDeclarationStatement","src":"6003:39:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14841,"name":"Identifier","src":"6153:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14835,"type":"uint256","value":"othercounts"},"id":14842,"name":"Identifier","src":"6162:11:9"}],"id":14843,"name":"BinaryOperation","src":"6153:20:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14822,"type":"uint256","value":"prevoff"},"id":14844,"name":"Identifier","src":"6189:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14845,"name":"Identifier","src":"6199:3:9"}],"id":14846,"name":"Assignment","src":"6189:13:9"}],"id":14847,"name":"ExpressionStatement","src":"6189:13:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14848,"name":"Identifier","src":"6216:3:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14972,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":14849,"name":"Identifier","src":"6222:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14850,"name":"Identifier","src":"6231:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14851,"name":"Identifier","src":"6237:3:9"}],"id":14852,"name":"FunctionCall","src":"6222:19:9"}],"id":14853,"name":"Assignment","src":"6216:25:9"}],"id":14854,"name":"ExpressionStatement","src":"6216:25:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14855,"name":"Identifier","src":"6255:6:9"}],"id":14856,"name":"UnaryOperation","src":"6255:8:9"}],"id":14857,"name":"ExpressionStatement","src":"6255:8:9"}],"id":14858,"name":"Block","src":"6175:99:9"}],"id":14859,"name":"WhileStatement","src":"6146:128:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14835,"type":"uint256","value":"othercounts"},"id":14860,"name":"Identifier","src":"6291:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14861,"name":"Identifier","src":"6305:6:9"}],"id":14862,"name":"BinaryOperation","src":"6291:20:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14825,"type":"uint256","value":"otherprevoff"},"id":14863,"name":"Identifier","src":"6327:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14864,"name":"Identifier","src":"6342:8:9"}],"id":14865,"name":"Assignment","src":"6327:23:9"}],"id":14866,"name":"ExpressionStatement","src":"6327:23:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14867,"name":"Identifier","src":"6364:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14972,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":14868,"name":"Identifier","src":"6375:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14869,"name":"Identifier","src":"6384:5:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14870,"name":"Identifier","src":"6391:8:9"}],"id":14871,"name":"FunctionCall","src":"6375:25:9"}],"id":14872,"name":"Assignment","src":"6364:36:9"}],"id":14873,"name":"ExpressionStatement","src":"6364:36:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14835,"type":"uint256","value":"othercounts"},"id":14874,"name":"Identifier","src":"6414:11:9"}],"id":14875,"name":"UnaryOperation","src":"6414:13:9"}],"id":14876,"name":"ExpressionStatement","src":"6414:13:9"}],"id":14877,"name":"Block","src":"6313:125:9"}],"id":14878,"name":"WhileStatement","src":"6284:154:9"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14879,"name":"Identifier","src":"6513:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14880,"name":"Literal","src":"6522:1:9"}],"id":14881,"name":"BinaryOperation","src":"6513:10:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":15210,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14882,"name":"Identifier","src":"6528:4:9"}],"id":14883,"name":"MemberAccess","src":"6528:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14884,"name":"Identifier","src":"6540:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14885,"name":"Identifier","src":"6545:5:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14886,"name":"Identifier","src":"6552:8:9"}],"id":14887,"name":"FunctionCall","src":"6528:33:9"}],"id":14888,"name":"UnaryOperation","src":"6527:34:9"}],"id":14889,"name":"BinaryOperation","src":"6513:48:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14822,"type":"uint256","value":"prevoff"},"id":14890,"name":"Identifier","src":"6577:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14891,"name":"Identifier","src":"6587:3:9"}],"id":14892,"name":"Assignment","src":"6577:13:9"}],"id":14893,"name":"ExpressionStatement","src":"6577:13:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14894,"name":"Identifier","src":"6604:3:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14972,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":14895,"name":"Identifier","src":"6610:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14896,"name":"Identifier","src":"6619:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14897,"name":"Identifier","src":"6625:3:9"}],"id":14898,"name":"FunctionCall","src":"6610:19:9"}],"id":14899,"name":"Assignment","src":"6604:25:9"}],"id":14900,"name":"ExpressionStatement","src":"6604:25:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14825,"type":"uint256","value":"otherprevoff"},"id":14901,"name":"Identifier","src":"6643:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14902,"name":"Identifier","src":"6658:8:9"}],"id":14903,"name":"Assignment","src":"6643:23:9"}],"id":14904,"name":"ExpressionStatement","src":"6643:23:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14905,"name":"Identifier","src":"6680:8:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":14972,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":14906,"name":"Identifier","src":"6691:8:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14907,"name":"Identifier","src":"6700:5:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14908,"name":"Identifier","src":"6707:8:9"}],"id":14909,"name":"FunctionCall","src":"6691:25:9"}],"id":14910,"name":"Assignment","src":"6680:36:9"}],"id":14911,"name":"ExpressionStatement","src":"6680:36:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14828,"type":"uint256","value":"counts"},"id":14912,"name":"Identifier","src":"6730:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14913,"name":"Literal","src":"6740:1:9"}],"id":14914,"name":"Assignment","src":"6730:11:9"}],"id":14915,"name":"ExpressionStatement","src":"6730:11:9"}],"id":14916,"name":"Block","src":"6563:189:9"}],"id":14917,"name":"WhileStatement","src":"6506:246:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14816,"type":"uint256","value":"off"},"id":14918,"name":"Identifier","src":"6766:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14919,"name":"Literal","src":"6773:1:9"}],"id":14920,"name":"BinaryOperation","src":"6766:8:9"},{"children":[{"attributes":{"functionReturnParameters":14806},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14921,"name":"Literal","src":"6798:1:9"}],"id":14922,"name":"UnaryOperation","src":"6797:2:9"}],"id":14923,"name":"Return","src":"6790:9:9"}],"id":14924,"name":"Block","src":"6776:34:9"}],"id":14925,"name":"IfStatement","src":"6762:48:9"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14819,"type":"uint256","value":"otheroff"},"id":14926,"name":"Identifier","src":"6822:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14927,"name":"Literal","src":"6834:1:9"}],"id":14928,"name":"BinaryOperation","src":"6822:13:9"},{"children":[{"attributes":{"functionReturnParameters":14806},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14929,"name":"Literal","src":"6858:1:9"}],"id":14930,"name":"Return","src":"6851:8:9"}],"id":14931,"name":"Block","src":"6837:33:9"}],"id":14932,"name":"IfStatement","src":"6819:51:9"},{"attributes":{"functionReturnParameters":14806},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":15150,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14933,"name":"Identifier","src":"6887:4:9"}],"id":14934,"name":"MemberAccess","src":"6887:12:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14822,"type":"uint256","value":"prevoff"},"id":14935,"name":"Identifier","src":"6900:7:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14936,"name":"Literal","src":"6910:1:9"}],"id":14937,"name":"BinaryOperation","src":"6900:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14800,"type":"bytes memory","value":"self"},"id":14938,"name":"Identifier","src":"6913:4:9"}],"id":14939,"name":"MemberAccess","src":"6913:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14822,"type":"uint256","value":"prevoff"},"id":14940,"name":"Identifier","src":"6928:7:9"}],"id":14941,"name":"FunctionCall","src":"6913:23:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14942,"name":"Identifier","src":"6938:5:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14825,"type":"uint256","value":"otherprevoff"},"id":14943,"name":"Identifier","src":"6945:12:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14944,"name":"Literal","src":"6960:1:9"}],"id":14945,"name":"BinaryOperation","src":"6945:16:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14802,"type":"bytes memory","value":"other"},"id":14946,"name":"Identifier","src":"6963:5:9"}],"id":14947,"name":"MemberAccess","src":"6963:15:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14825,"type":"uint256","value":"otherprevoff"},"id":14948,"name":"Identifier","src":"6979:12:9"}],"id":14949,"name":"FunctionCall","src":"6963:29:9"}],"id":14950,"name":"FunctionCall","src":"6887:106:9"}],"id":14951,"name":"Return","src":"6880:113:9"}],"id":14952,"name":"Block","src":"5793:1207:9"}],"id":14953,"name":"FunctionDefinition","src":"5704:1296:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":14973,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":14972,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14954,"name":"ElementaryTypeName","src":"7024:5:9"}],"id":14955,"name":"VariableDeclaration","src":"7024:17:9"},{"attributes":{"constant":false,"name":"off","scope":14972,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14956,"name":"ElementaryTypeName","src":"7043:4:9"}],"id":14957,"name":"VariableDeclaration","src":"7043:8:9"}],"id":14958,"name":"ParameterList","src":"7023:29:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":14972,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14959,"name":"ElementaryTypeName","src":"7075:4:9"}],"id":14960,"name":"VariableDeclaration","src":"7075:4:9"}],"id":14961,"name":"ParameterList","src":"7074:6:9"},{"children":[{"attributes":{"functionReturnParameters":14961},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14957,"type":"uint256","value":"off"},"id":14962,"name":"Identifier","src":"7098:3:9"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14963,"name":"Literal","src":"7104:1:9"}],"id":14964,"name":"BinaryOperation","src":"7098:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":15280,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14955,"type":"bytes memory","value":"body"},"id":14965,"name":"Identifier","src":"7108:4:9"}],"id":14966,"name":"MemberAccess","src":"7108:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14957,"type":"uint256","value":"off"},"id":14967,"name":"Identifier","src":"7123:3:9"}],"id":14968,"name":"FunctionCall","src":"7108:19:9"}],"id":14969,"name":"BinaryOperation","src":"7098:29:9"}],"id":14970,"name":"Return","src":"7091:36:9"}],"id":14971,"name":"Block","src":"7081:53:9"}],"id":14972,"name":"FunctionDefinition","src":"7006:128:9"}],"id":14973,"name":"ContractDefinition","src":"150:6986:9"}],"id":14974,"name":"SourceUnit","src":"0:7137:9"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[14355]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":14288,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[14355],"name":"ResolverBase","scope":14356},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":14355,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":14289,"name":"ElementaryTypeName","src":"53:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":14290,"name":"Literal","src":"97:10:10"}],"id":14291,"name":"VariableDeclaration","src":"53:54:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":14355,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":14303,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":14292,"name":"ElementaryTypeName","src":"141:6:10"}],"id":14293,"name":"VariableDeclaration","src":"141:18:10"}],"id":14294,"name":"ParameterList","src":"140:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":14303,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14295,"name":"ElementaryTypeName","src":"181:4:10"}],"id":14296,"name":"VariableDeclaration","src":"181:4:10"}],"id":14297,"name":"ParameterList","src":"180:6:10"},{"children":[{"attributes":{"functionReturnParameters":14297},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14293,"type":"bytes4","value":"interfaceID"},"id":14298,"name":"Identifier","src":"204:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14291,"type":"bytes4","value":"INTERFACE_META_ID"},"id":14299,"name":"Identifier","src":"219:17:10"}],"id":14300,"name":"BinaryOperation","src":"204:32:10"}],"id":14301,"name":"Return","src":"197:39:10"}],"id":14302,"name":"Block","src":"187:56:10"}],"id":14303,"name":"FunctionDefinition","src":"114:129:10"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":14355,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":14310,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":14304,"name":"ElementaryTypeName","src":"271:7:10"}],"id":14305,"name":"VariableDeclaration","src":"271:12:10"}],"id":14306,"name":"ParameterList","src":"270:14:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":14310,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":14307,"name":"ElementaryTypeName","src":"307:4:10"}],"id":14308,"name":"VariableDeclaration","src":"307:4:10"}],"id":14309,"name":"ParameterList","src":"306:6:10"}],"id":14310,"name":"FunctionDefinition","src":"249:64:10"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":14322,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":14311,"name":"ElementaryTypeName","src":"339:7:10"}],"id":14312,"name":"VariableDeclaration","src":"339:12:10"}],"id":14313,"name":"ParameterList","src":"338:14:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":14314,"name":"Identifier","src":"363:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":14310,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":14315,"name":"Identifier","src":"371:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14312,"type":"bytes32","value":"node"},"id":14316,"name":"Identifier","src":"384:4:10"}],"id":14317,"name":"FunctionCall","src":"371:18:10"}],"id":14318,"name":"FunctionCall","src":"363:27:10"}],"id":14319,"name":"ExpressionStatement","src":"363:27:10"},{"id":14320,"name":"PlaceholderStatement","src":"400:1:10"}],"id":14321,"name":"Block","src":"353:55:10"}],"id":14322,"name":"ModifierDefinition","src":"319:89:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":14355,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":14338,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14323,"name":"ElementaryTypeName","src":"438:5:10"}],"id":14324,"name":"VariableDeclaration","src":"438:14:10"}],"id":14325,"name":"ParameterList","src":"437:16:10"},{"children":[{"attributes":{"constant":false,"name":"a","scope":14338,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":14326,"name":"ElementaryTypeName","src":"476:15:10"}],"id":14327,"name":"VariableDeclaration","src":"476:17:10"}],"id":14328,"name":"ParameterList","src":"475:19:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":14329,"name":"Identifier","src":"505:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14324,"type":"bytes memory","value":"b"},"id":14330,"name":"Identifier","src":"513:1:10"}],"id":14331,"name":"MemberAccess","src":"513:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":14332,"name":"Literal","src":"525:2:10"}],"id":14333,"name":"BinaryOperation","src":"513:14:10"}],"id":14334,"name":"FunctionCall","src":"505:23:10"}],"id":14335,"name":"ExpressionStatement","src":"505:23:10"},{"attributes":{"externalReferences":[{"a":{"declaration":14327,"isOffset":false,"isSlot":false,"src":"561:1:10","valueSize":1}},{"b":{"declaration":14324,"isOffset":false,"isSlot":false,"src":"580:1:10","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":14336,"name":"InlineAssembly","src":"538:74:10"}],"id":14337,"name":"Block","src":"495:123:10"}],"id":14338,"name":"FunctionDefinition","src":"414:204:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":14355,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":14354,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":14339,"name":"ElementaryTypeName","src":"648:7:10"}],"id":14340,"name":"VariableDeclaration","src":"648:9:10"}],"id":14341,"name":"ParameterList","src":"647:11:10"},{"children":[{"attributes":{"constant":false,"name":"b","scope":14354,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14342,"name":"ElementaryTypeName","src":"681:5:10"}],"id":14343,"name":"VariableDeclaration","src":"681:14:10"}],"id":14344,"name":"ParameterList","src":"680:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14343,"type":"bytes memory","value":"b"},"id":14345,"name":"Identifier","src":"707:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14346,"name":"ElementaryTypeName","src":"715:5:10"}],"id":14347,"name":"NewExpression","src":"711:9:10"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":14348,"name":"Literal","src":"721:2:10"}],"id":14349,"name":"FunctionCall","src":"711:13:10"}],"id":14350,"name":"Assignment","src":"707:17:10"}],"id":14351,"name":"ExpressionStatement","src":"707:17:10"},{"attributes":{"externalReferences":[{"b":{"declaration":14343,"isOffset":false,"isSlot":false,"src":"768:1:10","valueSize":1}},{"a":{"declaration":14340,"isOffset":false,"isSlot":false,"src":"780:1:10","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":14352,"name":"InlineAssembly","src":"734:73:10"}],"id":14353,"name":"Block","src":"697:116:10"}],"id":14354,"name":"FunctionDefinition","src":"624:189:10"}],"id":14355,"name":"ContractDefinition","src":"25:790:10"}],"id":14356,"name":"SourceUnit","src":"0:816:10"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[11299]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":11165,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":11300,"symbolAliases":[null],"unitAlias":""},"id":11166,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[11299,14355],"name":"ABIResolver","scope":11300},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":11167,"name":"UserDefinedTypeName","src":"80:12:11"}],"id":11168,"name":"InheritanceSpecifier","src":"80:12:11"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":11299,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11169,"name":"ElementaryTypeName","src":"99:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":11170,"name":"Literal","src":"142:10:11"}],"id":11171,"name":"VariableDeclaration","src":"99:53:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11177,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11172,"name":"ElementaryTypeName","src":"176:7:11"}],"id":11173,"name":"VariableDeclaration","src":"176:20:11"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":11177,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11174,"name":"ElementaryTypeName","src":"198:7:11"}],"id":11175,"name":"VariableDeclaration","src":"198:27:11"}],"id":11176,"name":"ParameterList","src":"175:51:11"}],"id":11177,"name":"EventDefinition","src":"159:68:11"},{"attributes":{"constant":false,"name":"abis","scope":11299,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11178,"name":"ElementaryTypeName","src":"241:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11179,"name":"ElementaryTypeName","src":"258:7:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":11180,"name":"ElementaryTypeName","src":"267:5:11"}],"id":11181,"name":"Mapping","src":"250:23:11"}],"id":11182,"name":"Mapping","src":"233:41:11"}],"id":11183,"name":"VariableDeclaration","src":"233:46:11"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":11299,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11221,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11184,"name":"ElementaryTypeName","src":"598:7:11"}],"id":11185,"name":"VariableDeclaration","src":"598:12:11"},{"attributes":{"constant":false,"name":"contentType","scope":11221,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11186,"name":"ElementaryTypeName","src":"612:7:11"}],"id":11187,"name":"VariableDeclaration","src":"612:19:11"},{"attributes":{"constant":false,"name":"data","scope":11221,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11188,"name":"ElementaryTypeName","src":"633:5:11"}],"id":11189,"name":"VariableDeclaration","src":"633:19:11"}],"id":11190,"name":"ParameterList","src":"597:56:11"},{"attributes":{"parameters":[null]},"children":[],"id":11194,"name":"ParameterList","src":"680:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11191,"name":"Identifier","src":"663:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11185,"type":"bytes32","value":"node"},"id":11192,"name":"Identifier","src":"674:4:11"}],"id":11193,"name":"ModifierInvocation","src":"663:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":11195,"name":"Identifier","src":"735:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11187,"type":"uint256","value":"contentType"},"id":11196,"name":"Identifier","src":"745:11:11"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":11197,"name":"Literal","src":"759:1:11"}],"id":11198,"name":"BinaryOperation","src":"745:15:11"}],"id":11199,"name":"TupleExpression","src":"744:17:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11187,"type":"uint256","value":"contentType"},"id":11200,"name":"Identifier","src":"764:11:11"}],"id":11201,"name":"BinaryOperation","src":"744:31:11"}],"id":11202,"name":"TupleExpression","src":"743:33:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11203,"name":"Literal","src":"780:1:11"}],"id":11204,"name":"BinaryOperation","src":"743:38:11"}],"id":11205,"name":"FunctionCall","src":"735:47:11"}],"id":11206,"name":"ExpressionStatement","src":"735:47:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11183,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":11207,"name":"Identifier","src":"793:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11185,"type":"bytes32","value":"node"},"id":11208,"name":"Identifier","src":"798:4:11"}],"id":11210,"name":"IndexAccess","src":"793:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11187,"type":"uint256","value":"contentType"},"id":11209,"name":"Identifier","src":"804:11:11"}],"id":11211,"name":"IndexAccess","src":"793:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11189,"type":"bytes calldata","value":"data"},"id":11212,"name":"Identifier","src":"819:4:11"}],"id":11213,"name":"Assignment","src":"793:30:11"}],"id":11214,"name":"ExpressionStatement","src":"793:30:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":11177,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":11215,"name":"Identifier","src":"838:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11185,"type":"bytes32","value":"node"},"id":11216,"name":"Identifier","src":"849:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11187,"type":"uint256","value":"contentType"},"id":11217,"name":"Identifier","src":"855:11:11"}],"id":11218,"name":"FunctionCall","src":"838:29:11"}],"id":11219,"name":"EmitStatement","src":"833:34:11"}],"id":11220,"name":"Block","src":"680:194:11"}],"id":11221,"name":"FunctionDefinition","src":"582:292:11"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":11299,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11281,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11222,"name":"ElementaryTypeName","src":"1208:7:11"}],"id":11223,"name":"VariableDeclaration","src":"1208:12:11"},{"attributes":{"constant":false,"name":"contentTypes","scope":11281,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11224,"name":"ElementaryTypeName","src":"1222:7:11"}],"id":11225,"name":"VariableDeclaration","src":"1222:20:11"}],"id":11226,"name":"ParameterList","src":"1207:36:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":11281,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11227,"name":"ElementaryTypeName","src":"1267:7:11"}],"id":11228,"name":"VariableDeclaration","src":"1267:7:11"},{"attributes":{"constant":false,"name":"","scope":11281,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11229,"name":"ElementaryTypeName","src":"1276:5:11"}],"id":11230,"name":"VariableDeclaration","src":"1276:12:11"}],"id":11231,"name":"ParameterList","src":"1266:23:11"},{"children":[{"attributes":{"assignments":[11235]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":11280,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11232,"name":"ElementaryTypeName","src":"1308:7:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":11233,"name":"ElementaryTypeName","src":"1317:5:11"}],"id":11234,"name":"Mapping","src":"1300:23:11"}],"id":11235,"name":"VariableDeclaration","src":"1300:38:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11183,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":11236,"name":"Identifier","src":"1341:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11223,"type":"bytes32","value":"node"},"id":11237,"name":"Identifier","src":"1346:4:11"}],"id":11238,"name":"IndexAccess","src":"1341:10:11"}],"id":11239,"name":"VariableDeclarationStatement","src":"1300:51:11"},{"children":[{"attributes":{"assignments":[11241]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":11273,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11240,"name":"ElementaryTypeName","src":"1367:7:11"}],"id":11241,"name":"VariableDeclaration","src":"1367:19:11"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":11242,"name":"Literal","src":"1389:1:11"}],"id":11243,"name":"VariableDeclarationStatement","src":"1367:23:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11244,"name":"Identifier","src":"1392:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11225,"type":"uint256","value":"contentTypes"},"id":11245,"name":"Identifier","src":"1407:12:11"}],"id":11246,"name":"BinaryOperation","src":"1392:27:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11247,"name":"Identifier","src":"1421:11:11"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":11248,"name":"Literal","src":"1437:1:11"}],"id":11249,"name":"Assignment","src":"1421:17:11"}],"id":11250,"name":"ExpressionStatement","src":"1421:17:11"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11251,"name":"Identifier","src":"1459:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11225,"type":"uint256","value":"contentTypes"},"id":11252,"name":"Identifier","src":"1473:12:11"}],"id":11253,"name":"BinaryOperation","src":"1459:26:11"}],"id":11254,"name":"TupleExpression","src":"1458:28:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11255,"name":"Literal","src":"1490:1:11"}],"id":11256,"name":"BinaryOperation","src":"1458:33:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11235,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":11257,"name":"Identifier","src":"1495:6:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11258,"name":"Identifier","src":"1502:11:11"}],"id":11259,"name":"IndexAccess","src":"1495:19:11"}],"id":11260,"name":"MemberAccess","src":"1495:26:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11261,"name":"Literal","src":"1524:1:11"}],"id":11262,"name":"BinaryOperation","src":"1495:30:11"}],"id":11263,"name":"BinaryOperation","src":"1458:67:11"},{"children":[{"attributes":{"functionReturnParameters":11231},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11264,"name":"Identifier","src":"1553:11:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11235,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":11265,"name":"Identifier","src":"1566:6:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11241,"type":"uint256","value":"contentType"},"id":11266,"name":"Identifier","src":"1573:11:11"}],"id":11267,"name":"IndexAccess","src":"1566:19:11"}],"id":11268,"name":"TupleExpression","src":"1552:34:11"}],"id":11269,"name":"Return","src":"1545:41:11"}],"id":11270,"name":"Block","src":"1527:74:11"}],"id":11271,"name":"IfStatement","src":"1454:147:11"}],"id":11272,"name":"Block","src":"1440:171:11"}],"id":11273,"name":"ForStatement","src":"1362:249:11"},{"attributes":{"functionReturnParameters":11231},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11274,"name":"Literal","src":"1629:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":11275,"name":"ElementaryTypeNameExpression","src":"1632:5:11"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":11276,"name":"Literal","src":"1638:2:11"}],"id":11277,"name":"FunctionCall","src":"1632:9:11"}],"id":11278,"name":"TupleExpression","src":"1628:14:11"}],"id":11279,"name":"Return","src":"1621:21:11"}],"id":11280,"name":"Block","src":"1290:359:11"}],"id":11281,"name":"FunctionDefinition","src":"1195:454:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":11299,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":11298,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11282,"name":"ElementaryTypeName","src":"1682:6:11"}],"id":11283,"name":"VariableDeclaration","src":"1682:18:11"}],"id":11284,"name":"ParameterList","src":"1681:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":11298,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11285,"name":"ElementaryTypeName","src":"1722:4:11"}],"id":11286,"name":"VariableDeclaration","src":"1722:4:11"}],"id":11287,"name":"ParameterList","src":"1721:6:11"},{"children":[{"attributes":{"functionReturnParameters":11287},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11283,"type":"bytes4","value":"interfaceID"},"id":11288,"name":"Identifier","src":"1745:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11171,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":11289,"name":"Identifier","src":"1760:16:11"}],"id":11290,"name":"BinaryOperation","src":"1745:31:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15748,"type":"contract super ABIResolver","value":"super"},"id":11291,"name":"Identifier","src":"1780:5:11"}],"id":11292,"name":"MemberAccess","src":"1780:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11283,"type":"bytes4","value":"interfaceID"},"id":11293,"name":"Identifier","src":"1804:11:11"}],"id":11294,"name":"FunctionCall","src":"1780:36:11"}],"id":11295,"name":"BinaryOperation","src":"1745:71:11"}],"id":11296,"name":"Return","src":"1738:78:11"}],"id":11297,"name":"Block","src":"1728:95:11"}],"id":11298,"name":"FunctionDefinition","src":"1655:168:11"}],"id":11299,"name":"ContractDefinition","src":"56:1769:11"}],"id":11300,"name":"SourceUnit","src":"0:1826:11"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[11458]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":11301,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":11459,"symbolAliases":[null],"unitAlias":""},"id":11302,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[11458,14355],"name":"AddrResolver","scope":11459},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":11303,"name":"UserDefinedTypeName","src":"81:12:12"}],"id":11304,"name":"InheritanceSpecifier","src":"81:12:12"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":11458,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11305,"name":"ElementaryTypeName","src":"100:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":11306,"name":"Literal","src":"144:10:12"}],"id":11307,"name":"VariableDeclaration","src":"100:54:12"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":11458,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11308,"name":"ElementaryTypeName","src":"160:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":11309,"name":"Literal","src":"207:10:12"}],"id":11310,"name":"VariableDeclaration","src":"160:57:12"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":11458,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11311,"name":"ElementaryTypeName","src":"223:4:12"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":11312,"name":"Literal","src":"261:2:12"}],"id":11313,"name":"VariableDeclaration","src":"223:40:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11319,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11314,"name":"ElementaryTypeName","src":"288:7:12"}],"id":11315,"name":"VariableDeclaration","src":"288:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":11319,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11316,"name":"ElementaryTypeName","src":"310:7:12"}],"id":11317,"name":"VariableDeclaration","src":"310:9:12"}],"id":11318,"name":"ParameterList","src":"287:33:12"}],"id":11319,"name":"EventDefinition","src":"270:51:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11327,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11320,"name":"ElementaryTypeName","src":"347:7:12"}],"id":11321,"name":"VariableDeclaration","src":"347:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":11327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11322,"name":"ElementaryTypeName","src":"369:4:12"}],"id":11323,"name":"VariableDeclaration","src":"369:13:12"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":11327,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11324,"name":"ElementaryTypeName","src":"384:5:12"}],"id":11325,"name":"VariableDeclaration","src":"384:16:12"}],"id":11326,"name":"ParameterList","src":"346:55:12"}],"id":11327,"name":"EventDefinition","src":"326:76:12"},{"attributes":{"constant":false,"name":"_addresses","scope":11458,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11328,"name":"ElementaryTypeName","src":"416:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11329,"name":"ElementaryTypeName","src":"433:4:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":11330,"name":"ElementaryTypeName","src":"439:5:12"}],"id":11331,"name":"Mapping","src":"425:20:12"}],"id":11332,"name":"Mapping","src":"408:38:12"}],"id":11333,"name":"VariableDeclaration","src":"408:49:12"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":11458,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11352,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11334,"name":"ElementaryTypeName","src":"698:7:12"}],"id":11335,"name":"VariableDeclaration","src":"698:12:12"},{"attributes":{"constant":false,"name":"a","scope":11352,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11336,"name":"ElementaryTypeName","src":"712:7:12"}],"id":11337,"name":"VariableDeclaration","src":"712:9:12"}],"id":11338,"name":"ParameterList","src":"697:25:12"},{"attributes":{"parameters":[null]},"children":[],"id":11342,"name":"ParameterList","src":"749:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11339,"name":"Identifier","src":"732:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11335,"type":"bytes32","value":"node"},"id":11340,"name":"Identifier","src":"743:4:12"}],"id":11341,"name":"ModifierInvocation","src":"732:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11420,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":11343,"name":"Identifier","src":"759:15:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11335,"type":"bytes32","value":"node"},"id":11344,"name":"Identifier","src":"775:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11313,"type":"uint256","value":"COIN_TYPE_ETH"},"id":11345,"name":"Identifier","src":"781:13:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":14354,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":11346,"name":"Identifier","src":"796:14:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11337,"type":"address","value":"a"},"id":11347,"name":"Identifier","src":"811:1:12"}],"id":11348,"name":"FunctionCall","src":"796:17:12"}],"id":11349,"name":"FunctionCall","src":"759:55:12"}],"id":11350,"name":"ExpressionStatement","src":"759:55:12"}],"id":11351,"name":"Block","src":"749:72:12"}],"id":11352,"name":"FunctionDefinition","src":"681:140:12"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":11458,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11381,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11353,"name":"ElementaryTypeName","src":"994:7:12"}],"id":11354,"name":"VariableDeclaration","src":"994:12:12"}],"id":11355,"name":"ParameterList","src":"993:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":11381,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11356,"name":"ElementaryTypeName","src":"1029:15:12"}],"id":11357,"name":"VariableDeclaration","src":"1029:15:12"}],"id":11358,"name":"ParameterList","src":"1028:17:12"},{"children":[{"attributes":{"assignments":[11360]},"children":[{"attributes":{"constant":false,"name":"a","scope":11380,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11359,"name":"ElementaryTypeName","src":"1056:5:12"}],"id":11360,"name":"VariableDeclaration","src":"1056:14:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[11381,11436],"referencedDeclaration":11436,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":11361,"name":"Identifier","src":"1073:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11354,"type":"bytes32","value":"node"},"id":11362,"name":"Identifier","src":"1078:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11313,"type":"uint256","value":"COIN_TYPE_ETH"},"id":11363,"name":"Identifier","src":"1084:13:12"}],"id":11364,"name":"FunctionCall","src":"1073:25:12"}],"id":11365,"name":"VariableDeclarationStatement","src":"1056:42:12"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11360,"type":"bytes memory","value":"a"},"id":11366,"name":"Identifier","src":"1111:1:12"}],"id":11367,"name":"MemberAccess","src":"1111:8:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11368,"name":"Literal","src":"1123:1:12"}],"id":11369,"name":"BinaryOperation","src":"1111:13:12"},{"children":[{"attributes":{"functionReturnParameters":11358},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11370,"name":"ElementaryTypeNameExpression","src":"1147:7:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11371,"name":"Literal","src":"1155:1:12"}],"id":11372,"name":"FunctionCall","src":"1147:10:12"}],"id":11373,"name":"Return","src":"1140:17:12"}],"id":11374,"name":"Block","src":"1126:42:12"}],"id":11375,"name":"IfStatement","src":"1108:60:12"},{"attributes":{"functionReturnParameters":11358},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":14338,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":11376,"name":"Identifier","src":"1184:14:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11360,"type":"bytes memory","value":"a"},"id":11377,"name":"Identifier","src":"1199:1:12"}],"id":11378,"name":"FunctionCall","src":"1184:17:12"}],"id":11379,"name":"Return","src":"1177:24:12"}],"id":11380,"name":"Block","src":"1046:162:12"}],"id":11381,"name":"FunctionDefinition","src":"980:228:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":11458,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11420,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11382,"name":"ElementaryTypeName","src":"1239:7:12"}],"id":11383,"name":"VariableDeclaration","src":"1239:12:12"},{"attributes":{"constant":false,"name":"coinType","scope":11420,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11384,"name":"ElementaryTypeName","src":"1253:4:12"}],"id":11385,"name":"VariableDeclaration","src":"1253:13:12"},{"attributes":{"constant":false,"name":"a","scope":11420,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11386,"name":"ElementaryTypeName","src":"1268:5:12"}],"id":11387,"name":"VariableDeclaration","src":"1268:14:12"}],"id":11388,"name":"ParameterList","src":"1238:45:12"},{"attributes":{"parameters":[null]},"children":[],"id":11392,"name":"ParameterList","src":"1308:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11389,"name":"Identifier","src":"1291:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11383,"type":"bytes32","value":"node"},"id":11390,"name":"Identifier","src":"1302:4:12"}],"id":11391,"name":"ModifierInvocation","src":"1291:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11327,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":11393,"name":"Identifier","src":"1323:14:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11383,"type":"bytes32","value":"node"},"id":11394,"name":"Identifier","src":"1338:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11385,"type":"uint256","value":"coinType"},"id":11395,"name":"Identifier","src":"1344:8:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11387,"type":"bytes memory","value":"a"},"id":11396,"name":"Identifier","src":"1354:1:12"}],"id":11397,"name":"FunctionCall","src":"1323:33:12"}],"id":11398,"name":"EmitStatement","src":"1318:38:12"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11385,"type":"uint256","value":"coinType"},"id":11399,"name":"Identifier","src":"1369:8:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11313,"type":"uint256","value":"COIN_TYPE_ETH"},"id":11400,"name":"Identifier","src":"1381:13:12"}],"id":11401,"name":"BinaryOperation","src":"1369:25:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11319,"type":"function (bytes32,address)","value":"AddrChanged"},"id":11402,"name":"Identifier","src":"1415:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11383,"type":"bytes32","value":"node"},"id":11403,"name":"Identifier","src":"1427:4:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":14338,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":11404,"name":"Identifier","src":"1433:14:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11387,"type":"bytes memory","value":"a"},"id":11405,"name":"Identifier","src":"1448:1:12"}],"id":11406,"name":"FunctionCall","src":"1433:17:12"}],"id":11407,"name":"FunctionCall","src":"1415:36:12"}],"id":11408,"name":"EmitStatement","src":"1410:41:12"}],"id":11409,"name":"Block","src":"1396:66:12"}],"id":11410,"name":"IfStatement","src":"1366:96:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11333,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":11411,"name":"Identifier","src":"1471:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11383,"type":"bytes32","value":"node"},"id":11412,"name":"Identifier","src":"1482:4:12"}],"id":11414,"name":"IndexAccess","src":"1471:16:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11385,"type":"uint256","value":"coinType"},"id":11413,"name":"Identifier","src":"1488:8:12"}],"id":11415,"name":"IndexAccess","src":"1471:26:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11387,"type":"bytes memory","value":"a"},"id":11416,"name":"Identifier","src":"1500:1:12"}],"id":11417,"name":"Assignment","src":"1471:30:12"}],"id":11418,"name":"ExpressionStatement","src":"1471:30:12"}],"id":11419,"name":"Block","src":"1308:200:12"}],"id":11420,"name":"FunctionDefinition","src":"1214:294:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":11458,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11436,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11421,"name":"ElementaryTypeName","src":"1528:7:12"}],"id":11422,"name":"VariableDeclaration","src":"1528:12:12"},{"attributes":{"constant":false,"name":"coinType","scope":11436,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":11423,"name":"ElementaryTypeName","src":"1542:4:12"}],"id":11424,"name":"VariableDeclaration","src":"1542:13:12"}],"id":11425,"name":"ParameterList","src":"1527:29:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":11436,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11426,"name":"ElementaryTypeName","src":"1577:5:12"}],"id":11427,"name":"VariableDeclaration","src":"1577:12:12"}],"id":11428,"name":"ParameterList","src":"1576:14:12"},{"children":[{"attributes":{"functionReturnParameters":11428},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11333,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":11429,"name":"Identifier","src":"1608:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11422,"type":"bytes32","value":"node"},"id":11430,"name":"Identifier","src":"1619:4:12"}],"id":11431,"name":"IndexAccess","src":"1608:16:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11424,"type":"uint256","value":"coinType"},"id":11432,"name":"Identifier","src":"1625:8:12"}],"id":11433,"name":"IndexAccess","src":"1608:26:12"}],"id":11434,"name":"Return","src":"1601:33:12"}],"id":11435,"name":"Block","src":"1591:50:12"}],"id":11436,"name":"FunctionDefinition","src":"1514:127:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":11458,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":11457,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11437,"name":"ElementaryTypeName","src":"1674:6:12"}],"id":11438,"name":"VariableDeclaration","src":"1674:18:12"}],"id":11439,"name":"ParameterList","src":"1673:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":11457,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11440,"name":"ElementaryTypeName","src":"1714:4:12"}],"id":11441,"name":"VariableDeclaration","src":"1714:4:12"}],"id":11442,"name":"ParameterList","src":"1713:6:12"},{"children":[{"attributes":{"functionReturnParameters":11442},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11438,"type":"bytes4","value":"interfaceID"},"id":11443,"name":"Identifier","src":"1737:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11307,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":11444,"name":"Identifier","src":"1752:17:12"}],"id":11445,"name":"BinaryOperation","src":"1737:32:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11438,"type":"bytes4","value":"interfaceID"},"id":11446,"name":"Identifier","src":"1773:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11310,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":11447,"name":"Identifier","src":"1788:20:12"}],"id":11448,"name":"BinaryOperation","src":"1773:35:12"}],"id":11449,"name":"BinaryOperation","src":"1737:71:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15750,"type":"contract super AddrResolver","value":"super"},"id":11450,"name":"Identifier","src":"1812:5:12"}],"id":11451,"name":"MemberAccess","src":"1812:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11438,"type":"bytes4","value":"interfaceID"},"id":11452,"name":"Identifier","src":"1836:11:12"}],"id":11453,"name":"FunctionCall","src":"1812:36:12"}],"id":11454,"name":"BinaryOperation","src":"1737:111:12"}],"id":11455,"name":"Return","src":"1730:118:12"}],"id":11456,"name":"Block","src":"1720:135:12"}],"id":11457,"name":"FunctionDefinition","src":"1647:208:12"}],"id":11458,"name":"ContractDefinition","src":"56:1801:12"}],"id":11459,"name":"SourceUnit","src":"0:1857:12"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[11528]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":11460,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":11529,"symbolAliases":[null],"unitAlias":""},"id":11461,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[11528,14355],"name":"ContentHashResolver","scope":11529},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":11462,"name":"UserDefinedTypeName","src":"88:12:13"}],"id":11463,"name":"InheritanceSpecifier","src":"88:12:13"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":11528,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11464,"name":"ElementaryTypeName","src":"107:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":11465,"name":"Literal","src":"159:10:13"}],"id":11466,"name":"VariableDeclaration","src":"107:62:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11472,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11467,"name":"ElementaryTypeName","src":"201:7:13"}],"id":11468,"name":"VariableDeclaration","src":"201:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":11472,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11469,"name":"ElementaryTypeName","src":"223:5:13"}],"id":11470,"name":"VariableDeclaration","src":"223:10:13"}],"id":11471,"name":"ParameterList","src":"200:34:13"}],"id":11472,"name":"EventDefinition","src":"176:59:13"},{"attributes":{"constant":false,"name":"hashes","scope":11528,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11473,"name":"ElementaryTypeName","src":"249:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":11474,"name":"ElementaryTypeName","src":"258:5:13"}],"id":11475,"name":"Mapping","src":"241:23:13"}],"id":11476,"name":"VariableDeclaration","src":"241:30:13"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":11528,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11498,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11477,"name":"ElementaryTypeName","src":"529:7:13"}],"id":11478,"name":"VariableDeclaration","src":"529:12:13"},{"attributes":{"constant":false,"name":"hash","scope":11498,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11479,"name":"ElementaryTypeName","src":"543:5:13"}],"id":11480,"name":"VariableDeclaration","src":"543:19:13"}],"id":11481,"name":"ParameterList","src":"528:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":11485,"name":"ParameterList","src":"590:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11482,"name":"Identifier","src":"573:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11478,"type":"bytes32","value":"node"},"id":11483,"name":"Identifier","src":"584:4:13"}],"id":11484,"name":"ModifierInvocation","src":"573:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11476,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":11486,"name":"Identifier","src":"600:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11478,"type":"bytes32","value":"node"},"id":11487,"name":"Identifier","src":"607:4:13"}],"id":11488,"name":"IndexAccess","src":"600:12:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11480,"type":"bytes calldata","value":"hash"},"id":11489,"name":"Identifier","src":"615:4:13"}],"id":11490,"name":"Assignment","src":"600:19:13"}],"id":11491,"name":"ExpressionStatement","src":"600:19:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":11472,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":11492,"name":"Identifier","src":"634:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11478,"type":"bytes32","value":"node"},"id":11493,"name":"Identifier","src":"653:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11480,"type":"bytes calldata","value":"hash"},"id":11494,"name":"Identifier","src":"659:4:13"}],"id":11495,"name":"FunctionCall","src":"634:30:13"}],"id":11496,"name":"EmitStatement","src":"629:35:13"}],"id":11497,"name":"Block","src":"590:81:13"}],"id":11498,"name":"FunctionDefinition","src":"505:166:13"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":11528,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11510,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11499,"name":"ElementaryTypeName","src":"859:7:13"}],"id":11500,"name":"VariableDeclaration","src":"859:12:13"}],"id":11501,"name":"ParameterList","src":"858:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":11510,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11502,"name":"ElementaryTypeName","src":"896:5:13"}],"id":11503,"name":"VariableDeclaration","src":"896:12:13"}],"id":11504,"name":"ParameterList","src":"895:14:13"},{"children":[{"attributes":{"functionReturnParameters":11504},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11476,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":11505,"name":"Identifier","src":"927:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11500,"type":"bytes32","value":"node"},"id":11506,"name":"Identifier","src":"934:4:13"}],"id":11507,"name":"IndexAccess","src":"927:12:13"}],"id":11508,"name":"Return","src":"920:19:13"}],"id":11509,"name":"Block","src":"910:36:13"}],"id":11510,"name":"FunctionDefinition","src":"838:108:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":11528,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":11527,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11511,"name":"ElementaryTypeName","src":"979:6:13"}],"id":11512,"name":"VariableDeclaration","src":"979:18:13"}],"id":11513,"name":"ParameterList","src":"978:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":11527,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11514,"name":"ElementaryTypeName","src":"1019:4:13"}],"id":11515,"name":"VariableDeclaration","src":"1019:4:13"}],"id":11516,"name":"ParameterList","src":"1018:6:13"},{"children":[{"attributes":{"functionReturnParameters":11516},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11512,"type":"bytes4","value":"interfaceID"},"id":11517,"name":"Identifier","src":"1042:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11466,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":11518,"name":"Identifier","src":"1057:25:13"}],"id":11519,"name":"BinaryOperation","src":"1042:40:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15752,"type":"contract super ContentHashResolver","value":"super"},"id":11520,"name":"Identifier","src":"1086:5:13"}],"id":11521,"name":"MemberAccess","src":"1086:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11512,"type":"bytes4","value":"interfaceID"},"id":11522,"name":"Identifier","src":"1110:11:13"}],"id":11523,"name":"FunctionCall","src":"1086:36:13"}],"id":11524,"name":"BinaryOperation","src":"1042:80:13"}],"id":11525,"name":"Return","src":"1035:87:13"}],"id":11526,"name":"Block","src":"1025:104:13"}],"id":11527,"name":"FunctionDefinition","src":"952:177:13"}],"id":11528,"name":"ContractDefinition","src":"56:1075:13"}],"id":11529,"name":"SourceUnit","src":"0:1132:13"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[12019]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":11530,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12020,"symbolAliases":[null],"unitAlias":""},"id":11531,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":14974,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":12020,"symbolAliases":[null],"unitAlias":""},"id":11532,"name":"ImportDirective","src":"55:24:14"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12019,14355],"name":"DNSResolver","scope":12020},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":11533,"name":"UserDefinedTypeName","src":"105:12:14"}],"id":11534,"name":"InheritanceSpecifier","src":"105:12:14"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":14973,"type":"library RRUtils"},"id":11535,"name":"UserDefinedTypeName","src":"130:7:14"}],"id":11536,"name":"UsingForDirective","src":"124:20:14"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":15694,"type":"library ENSBytesUtils"},"id":11537,"name":"UserDefinedTypeName","src":"155:13:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":11538,"name":"ElementaryTypeName","src":"173:5:14"}],"id":11539,"name":"UsingForDirective","src":"149:30:14"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":12019,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11540,"name":"ElementaryTypeName","src":"185:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":11541,"name":"Literal","src":"235:10:14"}],"id":11542,"name":"VariableDeclaration","src":"185:60:14"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":12019,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11543,"name":"ElementaryTypeName","src":"251:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":11544,"name":"Literal","src":"299:10:14"}],"id":11545,"name":"VariableDeclaration","src":"251:58:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11555,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11546,"name":"ElementaryTypeName","src":"430:7:14"}],"id":11547,"name":"VariableDeclaration","src":"430:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":11555,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11548,"name":"ElementaryTypeName","src":"452:5:14"}],"id":11549,"name":"VariableDeclaration","src":"452:10:14"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":11555,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11550,"name":"ElementaryTypeName","src":"464:6:14"}],"id":11551,"name":"VariableDeclaration","src":"464:15:14"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":11555,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11552,"name":"ElementaryTypeName","src":"481:5:14"}],"id":11553,"name":"VariableDeclaration","src":"481:12:14"}],"id":11554,"name":"ParameterList","src":"429:65:14"}],"id":11555,"name":"EventDefinition","src":"407:88:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11563,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11556,"name":"ElementaryTypeName","src":"614:7:14"}],"id":11557,"name":"VariableDeclaration","src":"614:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":11563,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11558,"name":"ElementaryTypeName","src":"636:5:14"}],"id":11559,"name":"VariableDeclaration","src":"636:10:14"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":11563,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11560,"name":"ElementaryTypeName","src":"648:6:14"}],"id":11561,"name":"VariableDeclaration","src":"648:15:14"}],"id":11562,"name":"ParameterList","src":"613:51:14"}],"id":11563,"name":"EventDefinition","src":"591:74:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11567,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11564,"name":"ElementaryTypeName","src":"777:7:14"}],"id":11565,"name":"VariableDeclaration","src":"777:20:14"}],"id":11566,"name":"ParameterList","src":"776:22:14"}],"id":11567,"name":"EventDefinition","src":"756:43:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":11575,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11568,"name":"ElementaryTypeName","src":"913:7:14"}],"id":11569,"name":"VariableDeclaration","src":"913:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":11575,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11570,"name":"ElementaryTypeName","src":"935:5:14"}],"id":11571,"name":"VariableDeclaration","src":"935:18:14"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":11575,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11572,"name":"ElementaryTypeName","src":"955:5:14"}],"id":11573,"name":"VariableDeclaration","src":"955:14:14"}],"id":11574,"name":"ParameterList","src":"912:58:14"}],"id":11575,"name":"EventDefinition","src":"888:83:14"},{"attributes":{"constant":false,"name":"zonehashes","scope":12019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11576,"name":"ElementaryTypeName","src":"1181:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":11577,"name":"ElementaryTypeName","src":"1190:5:14"}],"id":11578,"name":"Mapping","src":"1173:23:14"}],"id":11579,"name":"VariableDeclaration","src":"1173:42:14"},{"attributes":{"constant":false,"name":"versions","scope":12019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11580,"name":"ElementaryTypeName","src":"1433:7:14"},{"attributes":{"name":"uint256","type":"uint256"},"id":11581,"name":"ElementaryTypeName","src":"1442:7:14"}],"id":11582,"name":"Mapping","src":"1425:25:14"}],"id":11583,"name":"VariableDeclaration","src":"1425:42:14"},{"attributes":{"constant":false,"name":"records","scope":12019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11584,"name":"ElementaryTypeName","src":"1589:7:14"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11585,"name":"ElementaryTypeName","src":"1606:7:14"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11586,"name":"ElementaryTypeName","src":"1623:7:14"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11587,"name":"ElementaryTypeName","src":"1640:6:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":11588,"name":"ElementaryTypeName","src":"1648:5:14"}],"id":11589,"name":"Mapping","src":"1632:22:14"}],"id":11590,"name":"Mapping","src":"1615:40:14"}],"id":11591,"name":"Mapping","src":"1598:58:14"}],"id":11592,"name":"Mapping","src":"1581:76:14"}],"id":11593,"name":"VariableDeclaration","src":"1581:92:14"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":12019,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11594,"name":"ElementaryTypeName","src":"1853:7:14"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11595,"name":"ElementaryTypeName","src":"1870:7:14"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11596,"name":"ElementaryTypeName","src":"1887:7:14"},{"attributes":{"name":"uint16","type":"uint16"},"id":11597,"name":"ElementaryTypeName","src":"1896:6:14"}],"id":11598,"name":"Mapping","src":"1879:24:14"}],"id":11599,"name":"Mapping","src":"1862:42:14"}],"id":11600,"name":"Mapping","src":"1845:60:14"}],"id":11601,"name":"VariableDeclaration","src":"1845:85:14"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":12019,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11766,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11602,"name":"ElementaryTypeName","src":"2877:7:14"}],"id":11603,"name":"VariableDeclaration","src":"2877:12:14"},{"attributes":{"constant":false,"name":"data","scope":11766,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11604,"name":"ElementaryTypeName","src":"2891:5:14"}],"id":11605,"name":"VariableDeclaration","src":"2891:19:14"}],"id":11606,"name":"ParameterList","src":"2876:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":11610,"name":"ParameterList","src":"2938:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11607,"name":"Identifier","src":"2921:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11603,"type":"bytes32","value":"node"},"id":11608,"name":"Identifier","src":"2932:4:14"}],"id":11609,"name":"ModifierInvocation","src":"2921:16:14"},{"children":[{"attributes":{"assignments":[11612]},"children":[{"attributes":{"constant":false,"name":"resource","scope":11765,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11611,"name":"ElementaryTypeName","src":"2948:6:14"}],"id":11612,"name":"VariableDeclaration","src":"2948:15:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11613,"name":"Literal","src":"2966:1:14"}],"id":11614,"name":"VariableDeclarationStatement","src":"2948:19:14"},{"attributes":{"assignments":[11616]},"children":[{"attributes":{"constant":false,"name":"offset","scope":11765,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11615,"name":"ElementaryTypeName","src":"2977:7:14"}],"id":11616,"name":"VariableDeclaration","src":"2977:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11617,"name":"Literal","src":"2994:1:14"}],"id":11618,"name":"VariableDeclarationStatement","src":"2977:18:14"},{"attributes":{"assignments":[11620],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":11765,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11619,"name":"ElementaryTypeName","src":"3005:5:14"}],"id":11620,"name":"VariableDeclaration","src":"3005:17:14"}],"id":11621,"name":"VariableDeclarationStatement","src":"3005:17:14"},{"attributes":{"assignments":[11623],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":11765,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11622,"name":"ElementaryTypeName","src":"3032:5:14"}],"id":11623,"name":"VariableDeclaration","src":"3032:18:14"}],"id":11624,"name":"VariableDeclarationStatement","src":"3032:18:14"},{"attributes":{"assignments":[11626],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":11765,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11625,"name":"ElementaryTypeName","src":"3060:7:14"}],"id":11626,"name":"VariableDeclaration","src":"3060:16:14"}],"id":11627,"name":"VariableDeclarationStatement","src":"3060:16:14"},{"children":[{"attributes":{"assignments":[11631]},"children":[{"attributes":{"constant":false,"name":"iter","scope":11742,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":14494,"type":"struct RRUtils.RRIterator"},"id":11630,"name":"UserDefinedTypeName","src":"3152:18:14"}],"id":11631,"name":"VariableDeclaration","src":"3152:30:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":14520,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11605,"type":"bytes calldata","value":"data"},"id":11632,"name":"Identifier","src":"3185:4:14"}],"id":11633,"name":"MemberAccess","src":"3185:15:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11634,"name":"Literal","src":"3201:1:14"}],"id":11635,"name":"FunctionCall","src":"3185:18:14"}],"id":11636,"name":"VariableDeclarationStatement","src":"3152:51:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":14535,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11637,"name":"Identifier","src":"3206:4:14"}],"id":11638,"name":"MemberAccess","src":"3206:9:14"}],"id":11639,"name":"FunctionCall","src":"3206:11:14"}],"id":11640,"name":"UnaryOperation","src":"3205:12:14"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":14637,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11641,"name":"Identifier","src":"3219:4:14"}],"id":11642,"name":"MemberAccess","src":"3219:9:14"}],"id":11643,"name":"FunctionCall","src":"3219:11:14"}],"id":11644,"name":"ExpressionStatement","src":"3219:11:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11645,"name":"Identifier","src":"3250:8:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11646,"name":"Literal","src":"3262:1:14"}],"id":11647,"name":"BinaryOperation","src":"3250:13:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11648,"name":"Identifier","src":"3283:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":14485,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11649,"name":"Identifier","src":"3294:4:14"}],"id":11650,"name":"MemberAccess","src":"3294:12:14"}],"id":11651,"name":"Assignment","src":"3283:23:14"}],"id":11652,"name":"ExpressionStatement","src":"3283:23:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11653,"name":"Identifier","src":"3324:4:14"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":14658,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11654,"name":"Identifier","src":"3331:4:14"}],"id":11655,"name":"MemberAccess","src":"3331:9:14"}],"id":11656,"name":"FunctionCall","src":"3331:11:14"}],"id":11657,"name":"Assignment","src":"3324:18:14"}],"id":11658,"name":"ExpressionStatement","src":"3324:18:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11626,"type":"bytes32","value":"nameHash"},"id":11659,"name":"Identifier","src":"3360:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":11660,"name":"Identifier","src":"3371:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":11661,"name":"Identifier","src":"3381:3:14"}],"id":11662,"name":"MemberAccess","src":"3381:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11663,"name":"Identifier","src":"3398:4:14"}],"id":11664,"name":"FunctionCall","src":"3381:22:14"}],"id":11665,"name":"FunctionCall","src":"3371:33:14"}],"id":11666,"name":"Assignment","src":"3360:44:14"}],"id":11667,"name":"ExpressionStatement","src":"3360:44:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11623,"type":"bytes memory","value":"value"},"id":11668,"name":"Identifier","src":"3422:5:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":11669,"name":"ElementaryTypeNameExpression","src":"3430:5:14"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":14678,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11670,"name":"Identifier","src":"3436:4:14"}],"id":11671,"name":"MemberAccess","src":"3436:10:14"}],"id":11672,"name":"FunctionCall","src":"3436:12:14"}],"id":11673,"name":"FunctionCall","src":"3430:19:14"}],"id":11674,"name":"Assignment","src":"3422:27:14"}],"id":11675,"name":"ExpressionStatement","src":"3422:27:14"}],"id":11676,"name":"Block","src":"3265:199:14"},{"children":[{"attributes":{"assignments":[11678]},"children":[{"attributes":{"constant":false,"name":"newName","scope":11739,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11677,"name":"ElementaryTypeName","src":"3488:5:14"}],"id":11678,"name":"VariableDeclaration","src":"3488:20:14"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":14658,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11679,"name":"Identifier","src":"3511:4:14"}],"id":11680,"name":"MemberAccess","src":"3511:9:14"}],"id":11681,"name":"FunctionCall","src":"3511:11:14"}],"id":11682,"name":"VariableDeclarationStatement","src":"3488:34:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11683,"name":"Identifier","src":"3544:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":14485,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11684,"name":"Identifier","src":"3556:4:14"}],"id":11685,"name":"MemberAccess","src":"3556:12:14"}],"id":11686,"name":"BinaryOperation","src":"3544:24:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":15264,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11687,"name":"Identifier","src":"3573:4:14"}],"id":11688,"name":"MemberAccess","src":"3573:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11678,"type":"bytes memory","value":"newName"},"id":11689,"name":"Identifier","src":"3585:7:14"}],"id":11690,"name":"FunctionCall","src":"3573:20:14"}],"id":11691,"name":"UnaryOperation","src":"3572:21:14"}],"id":11692,"name":"BinaryOperation","src":"3544:49:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":12018,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":11693,"name":"Identifier","src":"3617:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11603,"type":"bytes32","value":"node"},"id":11694,"name":"Identifier","src":"3629:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11695,"name":"Identifier","src":"3635:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11696,"name":"Identifier","src":"3641:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11605,"type":"bytes calldata","value":"data"},"id":11697,"name":"Identifier","src":"3651:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11698,"name":"Identifier","src":"3657:6:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11699,"name":"Identifier","src":"3665:4:14"}],"id":11700,"name":"MemberAccess","src":"3665:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11701,"name":"Identifier","src":"3679:6:14"}],"id":11702,"name":"BinaryOperation","src":"3665:20:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11623,"type":"bytes memory","value":"value"},"id":11703,"name":"Identifier","src":"3687:5:14"}],"id":11704,"name":"MemberAccess","src":"3687:12:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11705,"name":"Literal","src":"3703:1:14"}],"id":11706,"name":"BinaryOperation","src":"3687:17:14"}],"id":11707,"name":"FunctionCall","src":"3617:88:14"}],"id":11708,"name":"ExpressionStatement","src":"3617:88:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11709,"name":"Identifier","src":"3727:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":14485,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11710,"name":"Identifier","src":"3738:4:14"}],"id":11711,"name":"MemberAccess","src":"3738:12:14"}],"id":11712,"name":"Assignment","src":"3727:23:14"}],"id":11713,"name":"ExpressionStatement","src":"3727:23:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11714,"name":"Identifier","src":"3772:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":14483,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11715,"name":"Identifier","src":"3781:4:14"}],"id":11716,"name":"MemberAccess","src":"3781:11:14"}],"id":11717,"name":"Assignment","src":"3772:20:14"}],"id":11718,"name":"ExpressionStatement","src":"3772:20:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11719,"name":"Identifier","src":"3814:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11678,"type":"bytes memory","value":"newName"},"id":11720,"name":"Identifier","src":"3821:7:14"}],"id":11721,"name":"Assignment","src":"3814:14:14"}],"id":11722,"name":"ExpressionStatement","src":"3814:14:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11626,"type":"bytes32","value":"nameHash"},"id":11723,"name":"Identifier","src":"3850:8:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":11724,"name":"Identifier","src":"3861:9:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11725,"name":"Identifier","src":"3871:4:14"}],"id":11726,"name":"FunctionCall","src":"3861:15:14"}],"id":11727,"name":"Assignment","src":"3850:26:14"}],"id":11728,"name":"ExpressionStatement","src":"3850:26:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11623,"type":"bytes memory","value":"value"},"id":11729,"name":"Identifier","src":"3898:5:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":11730,"name":"ElementaryTypeNameExpression","src":"3906:5:14"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":14678,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11631,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":11731,"name":"Identifier","src":"3912:4:14"}],"id":11732,"name":"MemberAccess","src":"3912:10:14"}],"id":11733,"name":"FunctionCall","src":"3912:12:14"}],"id":11734,"name":"FunctionCall","src":"3906:19:14"}],"id":11735,"name":"Assignment","src":"3898:27:14"}],"id":11736,"name":"ExpressionStatement","src":"3898:27:14"}],"id":11737,"name":"Block","src":"3595:349:14"}],"id":11738,"name":"IfStatement","src":"3540:404:14"}],"id":11739,"name":"Block","src":"3470:488:14"}],"id":11740,"name":"IfStatement","src":"3246:712:14"}],"id":11741,"name":"Block","src":"3232:736:14"}],"id":11742,"name":"ForStatement","src":"3147:821:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11743,"name":"Identifier","src":"3981:4:14"}],"id":11744,"name":"MemberAccess","src":"3981:11:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11745,"name":"Literal","src":"3995:1:14"}],"id":11746,"name":"BinaryOperation","src":"3981:15:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":12018,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":11747,"name":"Identifier","src":"4012:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11603,"type":"bytes32","value":"node"},"id":11748,"name":"Identifier","src":"4024:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11620,"type":"bytes memory","value":"name"},"id":11749,"name":"Identifier","src":"4030:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11612,"type":"uint16","value":"resource"},"id":11750,"name":"Identifier","src":"4036:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11605,"type":"bytes calldata","value":"data"},"id":11751,"name":"Identifier","src":"4046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11752,"name":"Identifier","src":"4052:6:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11605,"type":"bytes calldata","value":"data"},"id":11753,"name":"Identifier","src":"4060:4:14"}],"id":11754,"name":"MemberAccess","src":"4060:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11616,"type":"uint256","value":"offset"},"id":11755,"name":"Identifier","src":"4074:6:14"}],"id":11756,"name":"BinaryOperation","src":"4060:20:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11623,"type":"bytes memory","value":"value"},"id":11757,"name":"Identifier","src":"4082:5:14"}],"id":11758,"name":"MemberAccess","src":"4082:12:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11759,"name":"Literal","src":"4098:1:14"}],"id":11760,"name":"BinaryOperation","src":"4082:17:14"}],"id":11761,"name":"FunctionCall","src":"4012:88:14"}],"id":11762,"name":"ExpressionStatement","src":"4012:88:14"}],"id":11763,"name":"Block","src":"3998:113:14"}],"id":11764,"name":"IfStatement","src":"3977:134:14"}],"id":11765,"name":"Block","src":"2938:1179:14"}],"id":11766,"name":"FunctionDefinition","src":"2854:1263:14"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":12019,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11790,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11767,"name":"ElementaryTypeName","src":"4538:7:14"}],"id":11768,"name":"VariableDeclaration","src":"4538:12:14"},{"attributes":{"constant":false,"name":"name","scope":11790,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11769,"name":"ElementaryTypeName","src":"4552:7:14"}],"id":11770,"name":"VariableDeclaration","src":"4552:12:14"},{"attributes":{"constant":false,"name":"resource","scope":11790,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11771,"name":"ElementaryTypeName","src":"4566:6:14"}],"id":11772,"name":"VariableDeclaration","src":"4566:15:14"}],"id":11773,"name":"ParameterList","src":"4537:45:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":11790,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11774,"name":"ElementaryTypeName","src":"4604:5:14"}],"id":11775,"name":"VariableDeclaration","src":"4604:12:14"}],"id":11776,"name":"ParameterList","src":"4603:14:14"},{"children":[{"attributes":{"functionReturnParameters":11776},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11777,"name":"Identifier","src":"4635:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11768,"type":"bytes32","value":"node"},"id":11778,"name":"Identifier","src":"4643:4:14"}],"id":11779,"name":"IndexAccess","src":"4635:13:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11583,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":11780,"name":"Identifier","src":"4649:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11768,"type":"bytes32","value":"node"},"id":11781,"name":"Identifier","src":"4658:4:14"}],"id":11782,"name":"IndexAccess","src":"4649:14:14"}],"id":11783,"name":"IndexAccess","src":"4635:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11770,"type":"bytes32","value":"name"},"id":11784,"name":"Identifier","src":"4665:4:14"}],"id":11785,"name":"IndexAccess","src":"4635:35:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11772,"type":"uint16","value":"resource"},"id":11786,"name":"Identifier","src":"4671:8:14"}],"id":11787,"name":"IndexAccess","src":"4635:45:14"}],"id":11788,"name":"Return","src":"4628:52:14"}],"id":11789,"name":"Block","src":"4618:69:14"}],"id":11790,"name":"FunctionDefinition","src":"4519:168:14"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":12019,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11813,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11791,"name":"ElementaryTypeName","src":"4924:7:14"}],"id":11792,"name":"VariableDeclaration","src":"4924:12:14"},{"attributes":{"constant":false,"name":"name","scope":11813,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11793,"name":"ElementaryTypeName","src":"4938:7:14"}],"id":11794,"name":"VariableDeclaration","src":"4938:12:14"}],"id":11795,"name":"ParameterList","src":"4923:28:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":11813,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11796,"name":"ElementaryTypeName","src":"4973:4:14"}],"id":11797,"name":"VariableDeclaration","src":"4973:4:14"}],"id":11798,"name":"ParameterList","src":"4972:6:14"},{"children":[{"attributes":{"functionReturnParameters":11798},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11601,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":11799,"name":"Identifier","src":"4997:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11792,"type":"bytes32","value":"node"},"id":11800,"name":"Identifier","src":"5014:4:14"}],"id":11801,"name":"IndexAccess","src":"4997:22:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11583,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":11802,"name":"Identifier","src":"5020:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11792,"type":"bytes32","value":"node"},"id":11803,"name":"Identifier","src":"5029:4:14"}],"id":11804,"name":"IndexAccess","src":"5020:14:14"}],"id":11805,"name":"IndexAccess","src":"4997:38:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11794,"type":"bytes32","value":"name"},"id":11806,"name":"Identifier","src":"5036:4:14"}],"id":11807,"name":"IndexAccess","src":"4997:44:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11808,"name":"Literal","src":"5045:1:14"}],"id":11809,"name":"BinaryOperation","src":"4997:49:14"}],"id":11810,"name":"TupleExpression","src":"4996:51:14"}],"id":11811,"name":"Return","src":"4989:58:14"}],"id":11812,"name":"Block","src":"4979:75:14"}],"id":11813,"name":"FunctionDefinition","src":"4901:153:14"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":12019,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11831,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11814,"name":"ElementaryTypeName","src":"5215:7:14"}],"id":11815,"name":"VariableDeclaration","src":"5215:12:14"}],"id":11816,"name":"ParameterList","src":"5214:14:14"},{"attributes":{"parameters":[null]},"children":[],"id":11820,"name":"ParameterList","src":"5253:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11817,"name":"Identifier","src":"5236:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11815,"type":"bytes32","value":"node"},"id":11818,"name":"Identifier","src":"5247:4:14"}],"id":11819,"name":"ModifierInvocation","src":"5236:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11583,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":11821,"name":"Identifier","src":"5263:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11815,"type":"bytes32","value":"node"},"id":11822,"name":"Identifier","src":"5272:4:14"}],"id":11823,"name":"IndexAccess","src":"5263:14:14"}],"id":11824,"name":"UnaryOperation","src":"5263:16:14"}],"id":11825,"name":"ExpressionStatement","src":"5263:16:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":11567,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":11826,"name":"Identifier","src":"5294:14:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11815,"type":"bytes32","value":"node"},"id":11827,"name":"Identifier","src":"5309:4:14"}],"id":11828,"name":"FunctionCall","src":"5294:20:14"}],"id":11829,"name":"EmitStatement","src":"5289:25:14"}],"id":11830,"name":"Block","src":"5253:68:14"}],"id":11831,"name":"FunctionDefinition","src":"5193:128:14"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":12019,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11860,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11832,"name":"ElementaryTypeName","src":"5562:7:14"}],"id":11833,"name":"VariableDeclaration","src":"5562:12:14"},{"attributes":{"constant":false,"name":"hash","scope":11860,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11834,"name":"ElementaryTypeName","src":"5576:5:14"}],"id":11835,"name":"VariableDeclaration","src":"5576:19:14"}],"id":11836,"name":"ParameterList","src":"5561:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":11840,"name":"ParameterList","src":"5623:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":11837,"name":"Identifier","src":"5606:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11833,"type":"bytes32","value":"node"},"id":11838,"name":"Identifier","src":"5617:4:14"}],"id":11839,"name":"ModifierInvocation","src":"5606:16:14"},{"children":[{"attributes":{"assignments":[11842]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":11859,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11841,"name":"ElementaryTypeName","src":"5633:5:14"}],"id":11842,"name":"VariableDeclaration","src":"5633:20:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11579,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":11843,"name":"Identifier","src":"5656:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11833,"type":"bytes32","value":"node"},"id":11844,"name":"Identifier","src":"5667:4:14"}],"id":11845,"name":"IndexAccess","src":"5656:16:14"}],"id":11846,"name":"VariableDeclarationStatement","src":"5633:39:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11579,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":11847,"name":"Identifier","src":"5682:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11833,"type":"bytes32","value":"node"},"id":11848,"name":"Identifier","src":"5693:4:14"}],"id":11849,"name":"IndexAccess","src":"5682:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11835,"type":"bytes calldata","value":"hash"},"id":11850,"name":"Identifier","src":"5701:4:14"}],"id":11851,"name":"Assignment","src":"5682:23:14"}],"id":11852,"name":"ExpressionStatement","src":"5682:23:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":11575,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":11853,"name":"Identifier","src":"5720:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11833,"type":"bytes32","value":"node"},"id":11854,"name":"Identifier","src":"5739:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11842,"type":"bytes memory","value":"oldhash"},"id":11855,"name":"Identifier","src":"5745:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11835,"type":"bytes calldata","value":"hash"},"id":11856,"name":"Identifier","src":"5754:4:14"}],"id":11857,"name":"FunctionCall","src":"5720:39:14"}],"id":11858,"name":"EmitStatement","src":"5715:44:14"}],"id":11859,"name":"Block","src":"5623:143:14"}],"id":11860,"name":"FunctionDefinition","src":"5541:225:14"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":12019,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":11872,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11861,"name":"ElementaryTypeName","src":"5938:7:14"}],"id":11862,"name":"VariableDeclaration","src":"5938:12:14"}],"id":11863,"name":"ParameterList","src":"5937:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":11872,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11864,"name":"ElementaryTypeName","src":"5975:5:14"}],"id":11865,"name":"VariableDeclaration","src":"5975:12:14"}],"id":11866,"name":"ParameterList","src":"5974:14:14"},{"children":[{"attributes":{"functionReturnParameters":11866},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11579,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":11867,"name":"Identifier","src":"6006:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11862,"type":"bytes32","value":"node"},"id":11868,"name":"Identifier","src":"6017:4:14"}],"id":11869,"name":"IndexAccess","src":"6006:16:14"}],"id":11870,"name":"Return","src":"5999:23:14"}],"id":11871,"name":"Block","src":"5989:40:14"}],"id":11872,"name":"FunctionDefinition","src":"5920:109:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12019,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":11893,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":11873,"name":"ElementaryTypeName","src":"6062:6:14"}],"id":11874,"name":"VariableDeclaration","src":"6062:18:14"}],"id":11875,"name":"ParameterList","src":"6061:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":11893,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11876,"name":"ElementaryTypeName","src":"6102:4:14"}],"id":11877,"name":"VariableDeclaration","src":"6102:4:14"}],"id":11878,"name":"ParameterList","src":"6101:6:14"},{"children":[{"attributes":{"functionReturnParameters":11878},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11874,"type":"bytes4","value":"interfaceID"},"id":11879,"name":"Identifier","src":"6125:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11542,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":11880,"name":"Identifier","src":"6140:23:14"}],"id":11881,"name":"BinaryOperation","src":"6125:38:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11874,"type":"bytes4","value":"interfaceID"},"id":11882,"name":"Identifier","src":"6182:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11545,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":11883,"name":"Identifier","src":"6197:21:14"}],"id":11884,"name":"BinaryOperation","src":"6182:36:14"}],"id":11885,"name":"BinaryOperation","src":"6125:93:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15756,"type":"contract super DNSResolver","value":"super"},"id":11886,"name":"Identifier","src":"6237:5:14"}],"id":11887,"name":"MemberAccess","src":"6237:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11874,"type":"bytes4","value":"interfaceID"},"id":11888,"name":"Identifier","src":"6261:11:14"}],"id":11889,"name":"FunctionCall","src":"6237:36:14"}],"id":11890,"name":"BinaryOperation","src":"6125:148:14"}],"id":11891,"name":"Return","src":"6118:155:14"}],"id":11892,"name":"Block","src":"6108:172:14"}],"id":11893,"name":"FunctionDefinition","src":"6035:245:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":12019,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12018,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11894,"name":"ElementaryTypeName","src":"6316:7:14"}],"id":11895,"name":"VariableDeclaration","src":"6316:12:14"},{"attributes":{"constant":false,"name":"name","scope":12018,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11896,"name":"ElementaryTypeName","src":"6338:5:14"}],"id":11897,"name":"VariableDeclaration","src":"6338:17:14"},{"attributes":{"constant":false,"name":"resource","scope":12018,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":11898,"name":"ElementaryTypeName","src":"6365:6:14"}],"id":11899,"name":"VariableDeclaration","src":"6365:15:14"},{"attributes":{"constant":false,"name":"data","scope":12018,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11900,"name":"ElementaryTypeName","src":"6390:5:14"}],"id":11901,"name":"VariableDeclaration","src":"6390:17:14"},{"attributes":{"constant":false,"name":"offset","scope":12018,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11902,"name":"ElementaryTypeName","src":"6417:7:14"}],"id":11903,"name":"VariableDeclaration","src":"6417:14:14"},{"attributes":{"constant":false,"name":"size","scope":12018,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11904,"name":"ElementaryTypeName","src":"6441:7:14"}],"id":11905,"name":"VariableDeclaration","src":"6441:12:14"},{"attributes":{"constant":false,"name":"deleteRecord","scope":12018,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11906,"name":"ElementaryTypeName","src":"6463:4:14"}],"id":11907,"name":"VariableDeclaration","src":"6463:17:14"}],"id":11908,"name":"ParameterList","src":"6306:175:14"},{"attributes":{"parameters":[null]},"children":[],"id":11909,"name":"ParameterList","src":"6494:0:14"},{"children":[{"attributes":{"assignments":[11911]},"children":[{"attributes":{"constant":false,"name":"version","scope":12017,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":11910,"name":"ElementaryTypeName","src":"6504:7:14"}],"id":11911,"name":"VariableDeclaration","src":"6504:15:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11583,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":11912,"name":"Identifier","src":"6522:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11913,"name":"Identifier","src":"6531:4:14"}],"id":11914,"name":"IndexAccess","src":"6522:14:14"}],"id":11915,"name":"VariableDeclarationStatement","src":"6504:32:14"},{"attributes":{"assignments":[11917]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":12017,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":11916,"name":"ElementaryTypeName","src":"6546:7:14"}],"id":11917,"name":"VariableDeclaration","src":"6546:16:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":11918,"name":"Identifier","src":"6565:9:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11897,"type":"bytes memory","value":"name"},"id":11919,"name":"Identifier","src":"6575:4:14"}],"id":11920,"name":"FunctionCall","src":"6565:15:14"}],"id":11921,"name":"VariableDeclarationStatement","src":"6546:34:14"},{"attributes":{"assignments":[11923]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":12017,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":11922,"name":"ElementaryTypeName","src":"6590:5:14"}],"id":11923,"name":"VariableDeclaration","src":"6590:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":15471,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11901,"type":"bytes memory","value":"data"},"id":11924,"name":"Identifier","src":"6612:4:14"}],"id":11925,"name":"MemberAccess","src":"6612:14:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11903,"type":"uint256","value":"offset"},"id":11926,"name":"Identifier","src":"6627:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11905,"type":"uint256","value":"size"},"id":11927,"name":"Identifier","src":"6635:4:14"}],"id":11928,"name":"FunctionCall","src":"6612:28:14"}],"id":11929,"name":"VariableDeclarationStatement","src":"6590:50:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11907,"type":"bool","value":"deleteRecord"},"id":11930,"name":"Identifier","src":"6654:12:14"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11931,"name":"Identifier","src":"6686:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11932,"name":"Identifier","src":"6694:4:14"}],"id":11933,"name":"IndexAccess","src":"6686:13:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11934,"name":"Identifier","src":"6700:7:14"}],"id":11935,"name":"IndexAccess","src":"6686:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11936,"name":"Identifier","src":"6709:8:14"}],"id":11937,"name":"IndexAccess","src":"6686:32:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":11938,"name":"Identifier","src":"6719:8:14"}],"id":11939,"name":"IndexAccess","src":"6686:42:14"}],"id":11940,"name":"MemberAccess","src":"6686:49:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11941,"name":"Literal","src":"6739:1:14"}],"id":11942,"name":"BinaryOperation","src":"6686:54:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11601,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":11943,"name":"Identifier","src":"6760:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11944,"name":"Identifier","src":"6777:4:14"}],"id":11947,"name":"IndexAccess","src":"6760:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11945,"name":"Identifier","src":"6783:7:14"}],"id":11948,"name":"IndexAccess","src":"6760:31:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11946,"name":"Identifier","src":"6792:8:14"}],"id":11949,"name":"IndexAccess","src":"6760:41:14"}],"id":11950,"name":"UnaryOperation","src":"6760:43:14"}],"id":11951,"name":"ExpressionStatement","src":"6760:43:14"}],"id":11952,"name":"Block","src":"6742:76:14"}],"id":11953,"name":"IfStatement","src":"6682:136:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11954,"name":"Identifier","src":"6838:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11955,"name":"Identifier","src":"6846:4:14"}],"id":11956,"name":"IndexAccess","src":"6838:13:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11957,"name":"Identifier","src":"6852:7:14"}],"id":11958,"name":"IndexAccess","src":"6838:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11959,"name":"Identifier","src":"6861:8:14"}],"id":11960,"name":"IndexAccess","src":"6838:32:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":11961,"name":"Identifier","src":"6871:8:14"}],"id":11962,"name":"IndexAccess","src":"6838:42:14"}],"id":11963,"name":"TupleExpression","src":"6837:44:14"}],"id":11964,"name":"UnaryOperation","src":"6831:50:14"}],"id":11965,"name":"ExpressionStatement","src":"6831:50:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":11563,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":11966,"name":"Identifier","src":"6900:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11967,"name":"Identifier","src":"6917:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11897,"type":"bytes memory","value":"name"},"id":11968,"name":"Identifier","src":"6923:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":11969,"name":"Identifier","src":"6929:8:14"}],"id":11970,"name":"FunctionCall","src":"6900:38:14"}],"id":11971,"name":"EmitStatement","src":"6895:43:14"}],"id":11972,"name":"Block","src":"6668:281:14"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11973,"name":"Identifier","src":"6973:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11974,"name":"Identifier","src":"6981:4:14"}],"id":11975,"name":"IndexAccess","src":"6973:13:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11976,"name":"Identifier","src":"6987:7:14"}],"id":11977,"name":"IndexAccess","src":"6973:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11978,"name":"Identifier","src":"6996:8:14"}],"id":11979,"name":"IndexAccess","src":"6973:32:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":11980,"name":"Identifier","src":"7006:8:14"}],"id":11981,"name":"IndexAccess","src":"6973:42:14"}],"id":11982,"name":"MemberAccess","src":"6973:49:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11983,"name":"Literal","src":"7026:1:14"}],"id":11984,"name":"BinaryOperation","src":"6973:54:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11601,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":11985,"name":"Identifier","src":"7047:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11986,"name":"Identifier","src":"7064:4:14"}],"id":11989,"name":"IndexAccess","src":"7047:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11987,"name":"Identifier","src":"7070:7:14"}],"id":11990,"name":"IndexAccess","src":"7047:31:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11988,"name":"Identifier","src":"7079:8:14"}],"id":11991,"name":"IndexAccess","src":"7047:41:14"}],"id":11992,"name":"UnaryOperation","src":"7047:43:14"}],"id":11993,"name":"ExpressionStatement","src":"7047:43:14"}],"id":11994,"name":"Block","src":"7029:76:14"}],"id":11995,"name":"IfStatement","src":"6969:136:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11593,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":11996,"name":"Identifier","src":"7118:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":11997,"name":"Identifier","src":"7126:4:14"}],"id":12001,"name":"IndexAccess","src":"7118:13:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11911,"type":"uint256","value":"version"},"id":11998,"name":"Identifier","src":"7132:7:14"}],"id":12002,"name":"IndexAccess","src":"7118:22:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11917,"type":"bytes32","value":"nameHash"},"id":11999,"name":"Identifier","src":"7141:8:14"}],"id":12003,"name":"IndexAccess","src":"7118:32:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":12000,"name":"Identifier","src":"7151:8:14"}],"id":12004,"name":"IndexAccess","src":"7118:42:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11923,"type":"bytes memory","value":"rrData"},"id":12005,"name":"Identifier","src":"7163:6:14"}],"id":12006,"name":"Assignment","src":"7118:51:14"}],"id":12007,"name":"ExpressionStatement","src":"7118:51:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":11555,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":12008,"name":"Identifier","src":"7188:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11895,"type":"bytes32","value":"node"},"id":12009,"name":"Identifier","src":"7205:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11897,"type":"bytes memory","value":"name"},"id":12010,"name":"Identifier","src":"7211:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11899,"type":"uint16","value":"resource"},"id":12011,"name":"Identifier","src":"7217:8:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11923,"type":"bytes memory","value":"rrData"},"id":12012,"name":"Identifier","src":"7227:6:14"}],"id":12013,"name":"FunctionCall","src":"7188:46:14"}],"id":12014,"name":"EmitStatement","src":"7183:51:14"}],"id":12015,"name":"Block","src":"6955:290:14"}],"id":12016,"name":"IfStatement","src":"6650:595:14"}],"id":12017,"name":"Block","src":"6494:757:14"}],"id":12018,"name":"FunctionDefinition","src":"6286:965:14"}],"id":12019,"name":"ContractDefinition","src":"81:7172:14"}],"id":12020,"name":"SourceUnit","src":"0:7253:14"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[12206]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12021,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12207,"symbolAliases":[null],"unitAlias":""},"id":12022,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":11459,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":12207,"symbolAliases":[null],"unitAlias":""},"id":12023,"name":"ImportDirective","src":"55:28:15"},{"attributes":{"contractDependencies":[11458,14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12206,11458,14355],"name":"InterfaceResolver","scope":12207},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":12024,"name":"UserDefinedTypeName","src":"115:12:15"}],"id":12025,"name":"InheritanceSpecifier","src":"115:12:15"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":11458,"type":"contract AddrResolver"},"id":12026,"name":"UserDefinedTypeName","src":"129:12:15"}],"id":12027,"name":"InheritanceSpecifier","src":"129:12:15"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":12206,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12028,"name":"ElementaryTypeName","src":"148:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":12029,"name":"ElementaryTypeNameExpression","src":"197:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":12030,"name":"Identifier","src":"204:9:15"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":12031,"name":"Literal","src":"214:38:15"}],"id":12032,"name":"FunctionCall","src":"204:49:15"}],"id":12033,"name":"FunctionCall","src":"197:57:15"}],"id":12034,"name":"VariableDeclaration","src":"148:106:15"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":12206,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12035,"name":"ElementaryTypeName","src":"260:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":12036,"name":"Literal","src":"304:10:15"}],"id":12037,"name":"VariableDeclaration","src":"260:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":12045,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12038,"name":"ElementaryTypeName","src":"344:7:15"}],"id":12039,"name":"VariableDeclaration","src":"344:20:15"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":12045,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12040,"name":"ElementaryTypeName","src":"366:6:15"}],"id":12041,"name":"VariableDeclaration","src":"366:26:15"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":12045,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12042,"name":"ElementaryTypeName","src":"394:7:15"}],"id":12043,"name":"VariableDeclaration","src":"394:19:15"}],"id":12044,"name":"ParameterList","src":"343:71:15"}],"id":12045,"name":"EventDefinition","src":"321:94:15"},{"attributes":{"constant":false,"name":"interfaces","scope":12206,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12046,"name":"ElementaryTypeName","src":"429:7:15"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12047,"name":"ElementaryTypeName","src":"446:6:15"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12048,"name":"ElementaryTypeName","src":"454:7:15"}],"id":12049,"name":"Mapping","src":"438:24:15"}],"id":12050,"name":"Mapping","src":"421:42:15"}],"id":12051,"name":"VariableDeclaration","src":"421:53:15"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":12206,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12078,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12052,"name":"ElementaryTypeName","src":"880:7:15"}],"id":12053,"name":"VariableDeclaration","src":"880:12:15"},{"attributes":{"constant":false,"name":"interfaceID","scope":12078,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12054,"name":"ElementaryTypeName","src":"894:6:15"}],"id":12055,"name":"VariableDeclaration","src":"894:18:15"},{"attributes":{"constant":false,"name":"implementer","scope":12078,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12056,"name":"ElementaryTypeName","src":"914:7:15"}],"id":12057,"name":"VariableDeclaration","src":"914:19:15"}],"id":12058,"name":"ParameterList","src":"879:55:15"},{"attributes":{"parameters":[null]},"children":[],"id":12062,"name":"ParameterList","src":"961:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":12059,"name":"Identifier","src":"944:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12053,"type":"bytes32","value":"node"},"id":12060,"name":"Identifier","src":"955:4:15"}],"id":12061,"name":"ModifierInvocation","src":"944:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12051,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":12063,"name":"Identifier","src":"971:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12053,"type":"bytes32","value":"node"},"id":12064,"name":"Identifier","src":"982:4:15"}],"id":12066,"name":"IndexAccess","src":"971:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12055,"type":"bytes4","value":"interfaceID"},"id":12065,"name":"Identifier","src":"988:11:15"}],"id":12067,"name":"IndexAccess","src":"971:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12057,"type":"address","value":"implementer"},"id":12068,"name":"Identifier","src":"1003:11:15"}],"id":12069,"name":"Assignment","src":"971:43:15"}],"id":12070,"name":"ExpressionStatement","src":"971:43:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":12045,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":12071,"name":"Identifier","src":"1029:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12053,"type":"bytes32","value":"node"},"id":12072,"name":"Identifier","src":"1046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12055,"type":"bytes4","value":"interfaceID"},"id":12073,"name":"Identifier","src":"1052:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12057,"type":"address","value":"implementer"},"id":12074,"name":"Identifier","src":"1065:11:15"}],"id":12075,"name":"FunctionCall","src":"1029:48:15"}],"id":12076,"name":"EmitStatement","src":"1024:53:15"}],"id":12077,"name":"Block","src":"961:123:15"}],"id":12078,"name":"FunctionDefinition","src":"858:226:15"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":12206,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12188,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12079,"name":"ElementaryTypeName","src":"1751:7:15"}],"id":12080,"name":"VariableDeclaration","src":"1751:12:15"},{"attributes":{"constant":false,"name":"interfaceID","scope":12188,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12081,"name":"ElementaryTypeName","src":"1765:6:15"}],"id":12082,"name":"VariableDeclaration","src":"1765:18:15"}],"id":12083,"name":"ParameterList","src":"1750:34:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":12188,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12084,"name":"ElementaryTypeName","src":"1808:7:15"}],"id":12085,"name":"VariableDeclaration","src":"1808:7:15"}],"id":12086,"name":"ParameterList","src":"1807:9:15"},{"children":[{"attributes":{"assignments":[12088]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":12187,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12087,"name":"ElementaryTypeName","src":"1827:7:15"}],"id":12088,"name":"VariableDeclaration","src":"1827:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12051,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":12089,"name":"Identifier","src":"1849:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12080,"type":"bytes32","value":"node"},"id":12090,"name":"Identifier","src":"1860:4:15"}],"id":12091,"name":"IndexAccess","src":"1849:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12082,"type":"bytes4","value":"interfaceID"},"id":12092,"name":"Identifier","src":"1866:11:15"}],"id":12093,"name":"IndexAccess","src":"1849:29:15"}],"id":12094,"name":"VariableDeclarationStatement","src":"1827:51:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12088,"type":"address","value":"implementer"},"id":12095,"name":"Identifier","src":"1891:11:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12096,"name":"ElementaryTypeNameExpression","src":"1906:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12097,"name":"Literal","src":"1914:1:15"}],"id":12098,"name":"FunctionCall","src":"1906:10:15"}],"id":12099,"name":"BinaryOperation","src":"1891:25:15"},{"children":[{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12088,"type":"address","value":"implementer"},"id":12100,"name":"Identifier","src":"1939:11:15"}],"id":12101,"name":"Return","src":"1932:18:15"}],"id":12102,"name":"Block","src":"1918:43:15"}],"id":12103,"name":"IfStatement","src":"1888:73:15"},{"attributes":{"assignments":[12105]},"children":[{"attributes":{"constant":false,"name":"a","scope":12187,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":12104,"name":"ElementaryTypeName","src":"1971:7:15"}],"id":12105,"name":"VariableDeclaration","src":"1971:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[11381,11436],"referencedDeclaration":11381,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":12106,"name":"Identifier","src":"1983:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12080,"type":"bytes32","value":"node"},"id":12107,"name":"Identifier","src":"1988:4:15"}],"id":12108,"name":"FunctionCall","src":"1983:10:15"}],"id":12109,"name":"VariableDeclarationStatement","src":"1971:22:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12105,"type":"address","value":"a"},"id":12110,"name":"Identifier","src":"2006:1:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12111,"name":"ElementaryTypeNameExpression","src":"2011:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12112,"name":"Literal","src":"2019:1:15"}],"id":12113,"name":"FunctionCall","src":"2011:10:15"}],"id":12114,"name":"BinaryOperation","src":"2006:15:15"},{"children":[{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12115,"name":"ElementaryTypeNameExpression","src":"2044:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12116,"name":"Literal","src":"2052:1:15"}],"id":12117,"name":"FunctionCall","src":"2044:10:15"}],"id":12118,"name":"Return","src":"2037:17:15"}],"id":12119,"name":"Block","src":"2023:42:15"}],"id":12120,"name":"IfStatement","src":"2003:62:15"},{"attributes":{"assignments":[12122,12124]},"children":[{"attributes":{"constant":false,"name":"success","scope":12187,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12121,"name":"ElementaryTypeName","src":"2076:4:15"}],"id":12122,"name":"VariableDeclaration","src":"2076:12:15"},{"attributes":{"constant":false,"name":"returnData","scope":12187,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":12123,"name":"ElementaryTypeName","src":"2090:5:15"}],"id":12124,"name":"VariableDeclaration","src":"2090:23:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12105,"type":"address","value":"a"},"id":12125,"name":"Identifier","src":"2117:1:15"}],"id":12126,"name":"MemberAccess","src":"2117:12:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":12127,"name":"Identifier","src":"2130:3:15"}],"id":12128,"name":"MemberAccess","src":"2130:23:15"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":12129,"name":"Literal","src":"2154:27:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12037,"type":"bytes4","value":"INTERFACE_META_ID"},"id":12130,"name":"Identifier","src":"2183:17:15"}],"id":12131,"name":"FunctionCall","src":"2130:71:15"}],"id":12132,"name":"FunctionCall","src":"2117:85:15"}],"id":12133,"name":"VariableDeclarationStatement","src":"2075:127:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12122,"type":"bool","value":"success"},"id":12134,"name":"Identifier","src":"2216:7:15"}],"id":12135,"name":"UnaryOperation","src":"2215:8:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12136,"name":"Identifier","src":"2227:10:15"}],"id":12137,"name":"MemberAccess","src":"2227:17:15"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12138,"name":"Literal","src":"2247:2:15"}],"id":12139,"name":"BinaryOperation","src":"2227:22:15"}],"id":12140,"name":"BinaryOperation","src":"2215:34:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12141,"name":"Identifier","src":"2253:10:15"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":12142,"name":"Literal","src":"2264:2:15"}],"id":12143,"name":"IndexAccess","src":"2253:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12144,"name":"Literal","src":"2271:1:15"}],"id":12145,"name":"BinaryOperation","src":"2253:19:15"}],"id":12146,"name":"BinaryOperation","src":"2215:57:15"},{"children":[{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12147,"name":"ElementaryTypeNameExpression","src":"2342:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12148,"name":"Literal","src":"2350:1:15"}],"id":12149,"name":"FunctionCall","src":"2342:10:15"}],"id":12150,"name":"Return","src":"2335:17:15"}],"id":12151,"name":"Block","src":"2274:89:15"}],"id":12152,"name":"IfStatement","src":"2212:151:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12122,"type":"bool","value":"success"},"id":12153,"name":"Identifier","src":"2374:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12154,"name":"Identifier","src":"2383:10:15"}],"id":12155,"name":"TupleExpression","src":"2373:21:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12105,"type":"address","value":"a"},"id":12156,"name":"Identifier","src":"2397:1:15"}],"id":12157,"name":"MemberAccess","src":"2397:12:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":12158,"name":"Identifier","src":"2410:3:15"}],"id":12159,"name":"MemberAccess","src":"2410:23:15"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":12160,"name":"Literal","src":"2434:27:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12082,"type":"bytes4","value":"interfaceID"},"id":12161,"name":"Identifier","src":"2463:11:15"}],"id":12162,"name":"FunctionCall","src":"2410:65:15"}],"id":12163,"name":"FunctionCall","src":"2397:79:15"}],"id":12164,"name":"Assignment","src":"2373:103:15"}],"id":12165,"name":"ExpressionStatement","src":"2373:103:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12122,"type":"bool","value":"success"},"id":12166,"name":"Identifier","src":"2490:7:15"}],"id":12167,"name":"UnaryOperation","src":"2489:8:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12168,"name":"Identifier","src":"2501:10:15"}],"id":12169,"name":"MemberAccess","src":"2501:17:15"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12170,"name":"Literal","src":"2521:2:15"}],"id":12171,"name":"BinaryOperation","src":"2501:22:15"}],"id":12172,"name":"BinaryOperation","src":"2489:34:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12124,"type":"bytes memory","value":"returnData"},"id":12173,"name":"Identifier","src":"2527:10:15"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":12174,"name":"Literal","src":"2538:2:15"}],"id":12175,"name":"IndexAccess","src":"2527:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12176,"name":"Literal","src":"2545:1:15"}],"id":12177,"name":"BinaryOperation","src":"2527:19:15"}],"id":12178,"name":"BinaryOperation","src":"2489:57:15"},{"children":[{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":12179,"name":"ElementaryTypeNameExpression","src":"2628:7:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12180,"name":"Literal","src":"2636:1:15"}],"id":12181,"name":"FunctionCall","src":"2628:10:15"}],"id":12182,"name":"Return","src":"2621:17:15"}],"id":12183,"name":"Block","src":"2548:101:15"}],"id":12184,"name":"IfStatement","src":"2486:163:15"},{"attributes":{"functionReturnParameters":12086},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12105,"type":"address","value":"a"},"id":12185,"name":"Identifier","src":"2666:1:15"}],"id":12186,"name":"Return","src":"2659:8:15"}],"id":12187,"name":"Block","src":"1817:857:15"}],"id":12188,"name":"FunctionDefinition","src":"1721:953:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12206,"stateMutability":"pure","superFunction":11457,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":12205,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12189,"name":"ElementaryTypeName","src":"2707:6:15"}],"id":12190,"name":"VariableDeclaration","src":"2707:18:15"}],"id":12191,"name":"ParameterList","src":"2706:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":12205,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12192,"name":"ElementaryTypeName","src":"2747:4:15"}],"id":12193,"name":"VariableDeclaration","src":"2747:4:15"}],"id":12194,"name":"ParameterList","src":"2746:6:15"},{"children":[{"attributes":{"functionReturnParameters":12194},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12190,"type":"bytes4","value":"interfaceID"},"id":12195,"name":"Identifier","src":"2770:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12034,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":12196,"name":"Identifier","src":"2785:22:15"}],"id":12197,"name":"BinaryOperation","src":"2770:37:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":11457,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15758,"type":"contract super InterfaceResolver","value":"super"},"id":12198,"name":"Identifier","src":"2811:5:15"}],"id":12199,"name":"MemberAccess","src":"2811:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12190,"type":"bytes4","value":"interfaceID"},"id":12200,"name":"Identifier","src":"2835:11:15"}],"id":12201,"name":"FunctionCall","src":"2811:36:15"}],"id":12202,"name":"BinaryOperation","src":"2770:77:15"}],"id":12203,"name":"Return","src":"2763:84:15"}],"id":12204,"name":"Block","src":"2753:101:15"}],"id":12205,"name":"FunctionDefinition","src":"2680:174:15"}],"id":12206,"name":"ContractDefinition","src":"85:2771:15"}],"id":12207,"name":"SourceUnit","src":"0:2857:15"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[12276]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12208,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12277,"symbolAliases":[null],"unitAlias":""},"id":12209,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12276,14355],"name":"NameResolver","scope":12277},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":12210,"name":"UserDefinedTypeName","src":"81:12:16"}],"id":12211,"name":"InheritanceSpecifier","src":"81:12:16"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":12276,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12212,"name":"ElementaryTypeName","src":"100:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":12213,"name":"Literal","src":"144:10:16"}],"id":12214,"name":"VariableDeclaration","src":"100:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":12220,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12215,"name":"ElementaryTypeName","src":"179:7:16"}],"id":12216,"name":"VariableDeclaration","src":"179:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":12220,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12217,"name":"ElementaryTypeName","src":"201:6:16"}],"id":12218,"name":"VariableDeclaration","src":"201:11:16"}],"id":12219,"name":"ParameterList","src":"178:35:16"}],"id":12220,"name":"EventDefinition","src":"161:53:16"},{"attributes":{"constant":false,"name":"names","scope":12276,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12221,"name":"ElementaryTypeName","src":"228:7:16"},{"attributes":{"name":"string","type":"string"},"id":12222,"name":"ElementaryTypeName","src":"237:6:16"}],"id":12223,"name":"Mapping","src":"220:24:16"}],"id":12224,"name":"VariableDeclaration","src":"220:30:16"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":12276,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12246,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12225,"name":"ElementaryTypeName","src":"509:7:16"}],"id":12226,"name":"VariableDeclaration","src":"509:12:16"},{"attributes":{"constant":false,"name":"name","scope":12246,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12227,"name":"ElementaryTypeName","src":"523:6:16"}],"id":12228,"name":"VariableDeclaration","src":"523:20:16"}],"id":12229,"name":"ParameterList","src":"508:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":12233,"name":"ParameterList","src":"571:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":12230,"name":"Identifier","src":"554:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12226,"type":"bytes32","value":"node"},"id":12231,"name":"Identifier","src":"565:4:16"}],"id":12232,"name":"ModifierInvocation","src":"554:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12224,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":12234,"name":"Identifier","src":"581:5:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12226,"type":"bytes32","value":"node"},"id":12235,"name":"Identifier","src":"587:4:16"}],"id":12236,"name":"IndexAccess","src":"581:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12228,"type":"string calldata","value":"name"},"id":12237,"name":"Identifier","src":"595:4:16"}],"id":12238,"name":"Assignment","src":"581:18:16"}],"id":12239,"name":"ExpressionStatement","src":"581:18:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":12220,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":12240,"name":"Identifier","src":"614:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12226,"type":"bytes32","value":"node"},"id":12241,"name":"Identifier","src":"626:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12228,"type":"string calldata","value":"name"},"id":12242,"name":"Identifier","src":"632:4:16"}],"id":12243,"name":"FunctionCall","src":"614:23:16"}],"id":12244,"name":"EmitStatement","src":"609:28:16"}],"id":12245,"name":"Block","src":"571:73:16"}],"id":12246,"name":"FunctionDefinition","src":"492:152:16"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":12276,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12258,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12247,"name":"ElementaryTypeName","src":"858:7:16"}],"id":12248,"name":"VariableDeclaration","src":"858:12:16"}],"id":12249,"name":"ParameterList","src":"857:14:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":12258,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12250,"name":"ElementaryTypeName","src":"895:6:16"}],"id":12251,"name":"VariableDeclaration","src":"895:13:16"}],"id":12252,"name":"ParameterList","src":"894:15:16"},{"children":[{"attributes":{"functionReturnParameters":12252},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12224,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":12253,"name":"Identifier","src":"927:5:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12248,"type":"bytes32","value":"node"},"id":12254,"name":"Identifier","src":"933:4:16"}],"id":12255,"name":"IndexAccess","src":"927:11:16"}],"id":12256,"name":"Return","src":"920:18:16"}],"id":12257,"name":"Block","src":"910:35:16"}],"id":12258,"name":"FunctionDefinition","src":"844:101:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12276,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":12275,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12259,"name":"ElementaryTypeName","src":"978:6:16"}],"id":12260,"name":"VariableDeclaration","src":"978:18:16"}],"id":12261,"name":"ParameterList","src":"977:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":12275,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12262,"name":"ElementaryTypeName","src":"1018:4:16"}],"id":12263,"name":"VariableDeclaration","src":"1018:4:16"}],"id":12264,"name":"ParameterList","src":"1017:6:16"},{"children":[{"attributes":{"functionReturnParameters":12264},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12260,"type":"bytes4","value":"interfaceID"},"id":12265,"name":"Identifier","src":"1041:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12214,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":12266,"name":"Identifier","src":"1056:17:16"}],"id":12267,"name":"BinaryOperation","src":"1041:32:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15760,"type":"contract super NameResolver","value":"super"},"id":12268,"name":"Identifier","src":"1077:5:16"}],"id":12269,"name":"MemberAccess","src":"1077:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12260,"type":"bytes4","value":"interfaceID"},"id":12270,"name":"Identifier","src":"1101:11:16"}],"id":12271,"name":"FunctionCall","src":"1077:36:16"}],"id":12272,"name":"BinaryOperation","src":"1041:72:16"}],"id":12273,"name":"Return","src":"1034:79:16"}],"id":12274,"name":"Block","src":"1024:96:16"}],"id":12275,"name":"FunctionDefinition","src":"951:169:16"}],"id":12276,"name":"ContractDefinition","src":"56:1066:16"}],"id":12277,"name":"SourceUnit","src":"0:1123:16"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[12367]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12278,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12368,"symbolAliases":[null],"unitAlias":""},"id":12279,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12367,14355],"name":"PubkeyResolver","scope":12368},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":12280,"name":"UserDefinedTypeName","src":"83:12:17"}],"id":12281,"name":"InheritanceSpecifier","src":"83:12:17"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":12367,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12282,"name":"ElementaryTypeName","src":"102:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":12283,"name":"Literal","src":"148:10:17"}],"id":12284,"name":"VariableDeclaration","src":"102:56:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":12292,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12285,"name":"ElementaryTypeName","src":"185:7:17"}],"id":12286,"name":"VariableDeclaration","src":"185:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":12292,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12287,"name":"ElementaryTypeName","src":"207:7:17"}],"id":12288,"name":"VariableDeclaration","src":"207:9:17"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":12292,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12289,"name":"ElementaryTypeName","src":"218:7:17"}],"id":12290,"name":"VariableDeclaration","src":"218:9:17"}],"id":12291,"name":"ParameterList","src":"184:44:17"}],"id":12292,"name":"EventDefinition","src":"165:64:17"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":12367,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":12297,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12293,"name":"ElementaryTypeName","src":"262:7:17"}],"id":12294,"name":"VariableDeclaration","src":"262:9:17"},{"attributes":{"constant":false,"name":"y","scope":12297,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12295,"name":"ElementaryTypeName","src":"281:7:17"}],"id":12296,"name":"VariableDeclaration","src":"281:9:17"}],"id":12297,"name":"StructDefinition","src":"235:62:17"},{"attributes":{"constant":false,"name":"pubkeys","scope":12367,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12298,"name":"ElementaryTypeName","src":"311:7:17"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":12297,"type":"struct PubkeyResolver.PublicKey"},"id":12299,"name":"UserDefinedTypeName","src":"320:9:17"}],"id":12300,"name":"Mapping","src":"303:27:17"}],"id":12301,"name":"VariableDeclaration","src":"303:35:17"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":12367,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12329,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12302,"name":"ElementaryTypeName","src":"631:7:17"}],"id":12303,"name":"VariableDeclaration","src":"631:12:17"},{"attributes":{"constant":false,"name":"x","scope":12329,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12304,"name":"ElementaryTypeName","src":"645:7:17"}],"id":12305,"name":"VariableDeclaration","src":"645:9:17"},{"attributes":{"constant":false,"name":"y","scope":12329,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12306,"name":"ElementaryTypeName","src":"656:7:17"}],"id":12307,"name":"VariableDeclaration","src":"656:9:17"}],"id":12308,"name":"ParameterList","src":"630:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":12312,"name":"ParameterList","src":"693:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":12309,"name":"Identifier","src":"676:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12303,"type":"bytes32","value":"node"},"id":12310,"name":"Identifier","src":"687:4:17"}],"id":12311,"name":"ModifierInvocation","src":"676:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12301,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":12313,"name":"Identifier","src":"703:7:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12303,"type":"bytes32","value":"node"},"id":12314,"name":"Identifier","src":"711:4:17"}],"id":12315,"name":"IndexAccess","src":"703:13:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":12297,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":12316,"name":"Identifier","src":"719:9:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12305,"type":"bytes32","value":"x"},"id":12317,"name":"Identifier","src":"729:1:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12307,"type":"bytes32","value":"y"},"id":12318,"name":"Identifier","src":"732:1:17"}],"id":12319,"name":"FunctionCall","src":"719:15:17"}],"id":12320,"name":"Assignment","src":"703:31:17"}],"id":12321,"name":"ExpressionStatement","src":"703:31:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":12292,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":12322,"name":"Identifier","src":"749:13:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12303,"type":"bytes32","value":"node"},"id":12323,"name":"Identifier","src":"763:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12305,"type":"bytes32","value":"x"},"id":12324,"name":"Identifier","src":"769:1:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12307,"type":"bytes32","value":"y"},"id":12325,"name":"Identifier","src":"772:1:17"}],"id":12326,"name":"FunctionCall","src":"749:25:17"}],"id":12327,"name":"EmitStatement","src":"744:30:17"}],"id":12328,"name":"Block","src":"693:88:17"}],"id":12329,"name":"FunctionDefinition","src":"612:169:17"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":12367,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12349,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12330,"name":"ElementaryTypeName","src":"1039:7:17"}],"id":12331,"name":"VariableDeclaration","src":"1039:12:17"}],"id":12332,"name":"ParameterList","src":"1038:14:17"},{"children":[{"attributes":{"constant":false,"name":"x","scope":12349,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12333,"name":"ElementaryTypeName","src":"1076:7:17"}],"id":12334,"name":"VariableDeclaration","src":"1076:9:17"},{"attributes":{"constant":false,"name":"y","scope":12349,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12335,"name":"ElementaryTypeName","src":"1087:7:17"}],"id":12336,"name":"VariableDeclaration","src":"1087:9:17"}],"id":12337,"name":"ParameterList","src":"1075:22:17"},{"children":[{"attributes":{"functionReturnParameters":12337},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":12294,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12301,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":12338,"name":"Identifier","src":"1116:7:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12331,"type":"bytes32","value":"node"},"id":12339,"name":"Identifier","src":"1124:4:17"}],"id":12340,"name":"IndexAccess","src":"1116:13:17"}],"id":12341,"name":"MemberAccess","src":"1116:15:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":12296,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12301,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":12342,"name":"Identifier","src":"1133:7:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12331,"type":"bytes32","value":"node"},"id":12343,"name":"Identifier","src":"1141:4:17"}],"id":12344,"name":"IndexAccess","src":"1133:13:17"}],"id":12345,"name":"MemberAccess","src":"1133:15:17"}],"id":12346,"name":"TupleExpression","src":"1115:34:17"}],"id":12347,"name":"Return","src":"1108:41:17"}],"id":12348,"name":"Block","src":"1098:58:17"}],"id":12349,"name":"FunctionDefinition","src":"1023:133:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12367,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":12366,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12350,"name":"ElementaryTypeName","src":"1189:6:17"}],"id":12351,"name":"VariableDeclaration","src":"1189:18:17"}],"id":12352,"name":"ParameterList","src":"1188:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":12366,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12353,"name":"ElementaryTypeName","src":"1229:4:17"}],"id":12354,"name":"VariableDeclaration","src":"1229:4:17"}],"id":12355,"name":"ParameterList","src":"1228:6:17"},{"children":[{"attributes":{"functionReturnParameters":12355},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12351,"type":"bytes4","value":"interfaceID"},"id":12356,"name":"Identifier","src":"1252:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12284,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":12357,"name":"Identifier","src":"1267:19:17"}],"id":12358,"name":"BinaryOperation","src":"1252:34:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15762,"type":"contract super PubkeyResolver","value":"super"},"id":12359,"name":"Identifier","src":"1290:5:17"}],"id":12360,"name":"MemberAccess","src":"1290:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12351,"type":"bytes4","value":"interfaceID"},"id":12361,"name":"Identifier","src":"1314:11:17"}],"id":12362,"name":"FunctionCall","src":"1290:36:17"}],"id":12363,"name":"BinaryOperation","src":"1252:74:17"}],"id":12364,"name":"Return","src":"1245:81:17"}],"id":12365,"name":"Block","src":"1235:98:17"}],"id":12366,"name":"FunctionDefinition","src":"1162:171:17"}],"id":12367,"name":"ContractDefinition","src":"56:1279:17"}],"id":12368,"name":"SourceUnit","src":"0:1336:17"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[12450]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12369,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":14356,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":12451,"symbolAliases":[null],"unitAlias":""},"id":12370,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[14355],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[12450,14355],"name":"TextResolver","scope":12451},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":14355,"type":"contract ResolverBase"},"id":12371,"name":"UserDefinedTypeName","src":"81:12:18"}],"id":12372,"name":"InheritanceSpecifier","src":"81:12:18"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":12450,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12373,"name":"ElementaryTypeName","src":"100:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":12374,"name":"Literal","src":"144:10:18"}],"id":12375,"name":"VariableDeclaration","src":"100:54:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":12383,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12376,"name":"ElementaryTypeName","src":"179:7:18"}],"id":12377,"name":"VariableDeclaration","src":"179:20:18"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":12383,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12378,"name":"ElementaryTypeName","src":"201:6:18"}],"id":12379,"name":"VariableDeclaration","src":"201:25:18"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":12383,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12380,"name":"ElementaryTypeName","src":"228:6:18"}],"id":12381,"name":"VariableDeclaration","src":"228:10:18"}],"id":12382,"name":"ParameterList","src":"178:61:18"}],"id":12383,"name":"EventDefinition","src":"161:79:18"},{"attributes":{"constant":false,"name":"texts","scope":12450,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12384,"name":"ElementaryTypeName","src":"254:7:18"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":12385,"name":"ElementaryTypeName","src":"271:6:18"},{"attributes":{"name":"string","type":"string"},"id":12386,"name":"ElementaryTypeName","src":"279:6:18"}],"id":12387,"name":"Mapping","src":"263:23:18"}],"id":12388,"name":"Mapping","src":"246:41:18"}],"id":12389,"name":"VariableDeclaration","src":"246:47:18"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":12450,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12416,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12390,"name":"ElementaryTypeName","src":"590:7:18"}],"id":12391,"name":"VariableDeclaration","src":"590:12:18"},{"attributes":{"constant":false,"name":"key","scope":12416,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12392,"name":"ElementaryTypeName","src":"604:6:18"}],"id":12393,"name":"VariableDeclaration","src":"604:19:18"},{"attributes":{"constant":false,"name":"value","scope":12416,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12394,"name":"ElementaryTypeName","src":"625:6:18"}],"id":12395,"name":"VariableDeclaration","src":"625:21:18"}],"id":12396,"name":"ParameterList","src":"589:58:18"},{"attributes":{"parameters":[null]},"children":[],"id":12400,"name":"ParameterList","src":"674:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14322,"type":"modifier (bytes32)","value":"authorised"},"id":12397,"name":"Identifier","src":"657:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12391,"type":"bytes32","value":"node"},"id":12398,"name":"Identifier","src":"668:4:18"}],"id":12399,"name":"ModifierInvocation","src":"657:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12389,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":12401,"name":"Identifier","src":"684:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12391,"type":"bytes32","value":"node"},"id":12402,"name":"Identifier","src":"690:4:18"}],"id":12404,"name":"IndexAccess","src":"684:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12393,"type":"string calldata","value":"key"},"id":12403,"name":"Identifier","src":"696:3:18"}],"id":12405,"name":"IndexAccess","src":"684:16:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12395,"type":"string calldata","value":"value"},"id":12406,"name":"Identifier","src":"703:5:18"}],"id":12407,"name":"Assignment","src":"684:24:18"}],"id":12408,"name":"ExpressionStatement","src":"684:24:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":12383,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":12409,"name":"Identifier","src":"723:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12391,"type":"bytes32","value":"node"},"id":12410,"name":"Identifier","src":"735:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12393,"type":"string calldata","value":"key"},"id":12411,"name":"Identifier","src":"741:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12393,"type":"string calldata","value":"key"},"id":12412,"name":"Identifier","src":"746:3:18"}],"id":12413,"name":"FunctionCall","src":"723:27:18"}],"id":12414,"name":"EmitStatement","src":"718:32:18"}],"id":12415,"name":"Block","src":"674:83:18"}],"id":12416,"name":"FunctionDefinition","src":"573:184:18"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":12450,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":12432,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12417,"name":"ElementaryTypeName","src":"988:7:18"}],"id":12418,"name":"VariableDeclaration","src":"988:12:18"},{"attributes":{"constant":false,"name":"key","scope":12432,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12419,"name":"ElementaryTypeName","src":"1002:6:18"}],"id":12420,"name":"VariableDeclaration","src":"1002:19:18"}],"id":12421,"name":"ParameterList","src":"987:35:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":12432,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12422,"name":"ElementaryTypeName","src":"1046:6:18"}],"id":12423,"name":"VariableDeclaration","src":"1046:13:18"}],"id":12424,"name":"ParameterList","src":"1045:15:18"},{"children":[{"attributes":{"functionReturnParameters":12424},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12389,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":12425,"name":"Identifier","src":"1078:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12418,"type":"bytes32","value":"node"},"id":12426,"name":"Identifier","src":"1084:4:18"}],"id":12427,"name":"IndexAccess","src":"1078:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12420,"type":"string calldata","value":"key"},"id":12428,"name":"Identifier","src":"1090:3:18"}],"id":12429,"name":"IndexAccess","src":"1078:16:18"}],"id":12430,"name":"Return","src":"1071:23:18"}],"id":12431,"name":"Block","src":"1061:40:18"}],"id":12432,"name":"FunctionDefinition","src":"974:127:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":12450,"stateMutability":"pure","superFunction":14303,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":12449,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":12433,"name":"ElementaryTypeName","src":"1134:6:18"}],"id":12434,"name":"VariableDeclaration","src":"1134:18:18"}],"id":12435,"name":"ParameterList","src":"1133:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":12449,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12436,"name":"ElementaryTypeName","src":"1174:4:18"}],"id":12437,"name":"VariableDeclaration","src":"1174:4:18"}],"id":12438,"name":"ParameterList","src":"1173:6:18"},{"children":[{"attributes":{"functionReturnParameters":12438},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12434,"type":"bytes4","value":"interfaceID"},"id":12439,"name":"Identifier","src":"1197:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12375,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":12440,"name":"Identifier","src":"1212:17:18"}],"id":12441,"name":"BinaryOperation","src":"1197:32:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":14303,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15764,"type":"contract super TextResolver","value":"super"},"id":12442,"name":"Identifier","src":"1233:5:18"}],"id":12443,"name":"MemberAccess","src":"1233:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12434,"type":"bytes4","value":"interfaceID"},"id":12444,"name":"Identifier","src":"1257:11:18"}],"id":12445,"name":"FunctionCall","src":"1233:36:18"}],"id":12446,"name":"BinaryOperation","src":"1197:72:18"}],"id":12447,"name":"Return","src":"1190:79:18"}],"id":12448,"name":"Block","src":"1180:96:18"}],"id":12449,"name":"FunctionDefinition","src":"1107:169:18"}],"id":12450,"name":"ContractDefinition","src":"56:1222:18"}],"id":12451,"name":"SourceUnit","src":"0:1278:18"}},"externals/oraclizeAPI_0.5.sol":{"AST":{"attributes":{"absolutePath":"externals/oraclizeAPI_0.5.sol","exportedSymbols":{"Buffer":[1929],"CBOR":[2229],"OraclizeAddrResolverI":[1698],"OraclizeI":[1692],"solcChecker":[1582],"usingOraclize":[7853]}},"children":[{"attributes":{"literals":["solidity",">=","0.5",".0","<","0.6",".0"]},"id":1576,"name":"PragmaDirective","src":"1116:33:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1582],"name":"solcChecker","scope":7854},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"f","scope":1582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"x","scope":1581,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1577,"name":"ElementaryTypeName","src":"1508:5:19"}],"id":1578,"name":"VariableDeclaration","src":"1508:16:19"}],"id":1579,"name":"ParameterList","src":"1507:18:19"},{"attributes":{"parameters":[null]},"children":[],"id":1580,"name":"ParameterList","src":"1534:0:19"}],"id":1581,"name":"FunctionDefinition","src":"1497:38:19"}],"id":1582,"name":"ContractDefinition","src":"1364:173:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1692],"name":"OraclizeI","scope":7854},"children":[{"attributes":{"constant":false,"name":"cbAddress","scope":1692,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"public"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1583,"name":"ElementaryTypeName","src":"1565:7:19"}],"id":1584,"name":"VariableDeclaration","src":"1565:24:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setProofType","scope":1692,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_proofType","scope":1589,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":1585,"name":"ElementaryTypeName","src":"1618:4:19"}],"id":1586,"name":"VariableDeclaration","src":"1618:15:19"}],"id":1587,"name":"ParameterList","src":"1617:17:19"},{"attributes":{"parameters":[null]},"children":[],"id":1588,"name":"ParameterList","src":"1643:0:19"}],"id":1589,"name":"FunctionDefinition","src":"1596:48:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setCustomGasPrice","scope":1692,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasPrice","scope":1594,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1590,"name":"ElementaryTypeName","src":"1676:4:19"}],"id":1591,"name":"VariableDeclaration","src":"1676:14:19"}],"id":1592,"name":"ParameterList","src":"1675:16:19"},{"attributes":{"parameters":[null]},"children":[],"id":1593,"name":"ParameterList","src":"1700:0:19"}],"id":1594,"name":"FunctionDefinition","src":"1649:52:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getPrice","scope":1692,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":1601,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1595,"name":"ElementaryTypeName","src":"1724:6:19"}],"id":1596,"name":"VariableDeclaration","src":"1724:25:19"}],"id":1597,"name":"ParameterList","src":"1723:27:19"},{"children":[{"attributes":{"constant":false,"name":"_dsprice","scope":1601,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1598,"name":"ElementaryTypeName","src":"1767:4:19"}],"id":1599,"name":"VariableDeclaration","src":"1767:13:19"}],"id":1600,"name":"ParameterList","src":"1766:15:19"}],"id":1601,"name":"FunctionDefinition","src":"1706:76:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"randomDS_getSessionPubKeyHash","scope":1692,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1602,"name":"ParameterList","src":"1825:2:19"},{"children":[{"attributes":{"constant":false,"name":"_sessionKeyHash","scope":1606,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1603,"name":"ElementaryTypeName","src":"1851:7:19"}],"id":1604,"name":"VariableDeclaration","src":"1851:23:19"}],"id":1605,"name":"ParameterList","src":"1850:25:19"}],"id":1606,"name":"FunctionDefinition","src":"1787:89:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getPrice","scope":1692,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":1615,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1607,"name":"ElementaryTypeName","src":"1899:6:19"}],"id":1608,"name":"VariableDeclaration","src":"1899:25:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":1615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1609,"name":"ElementaryTypeName","src":"1926:4:19"}],"id":1610,"name":"VariableDeclaration","src":"1926:14:19"}],"id":1611,"name":"ParameterList","src":"1898:43:19"},{"children":[{"attributes":{"constant":false,"name":"_dsprice","scope":1615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1612,"name":"ElementaryTypeName","src":"1958:4:19"}],"id":1613,"name":"VariableDeclaration","src":"1958:13:19"}],"id":1614,"name":"ParameterList","src":"1957:15:19"}],"id":1615,"name":"FunctionDefinition","src":"1881:92:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"queryN","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1626,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1616,"name":"ElementaryTypeName","src":"1994:4:19"}],"id":1617,"name":"VariableDeclaration","src":"1994:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1626,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1618,"name":"ElementaryTypeName","src":"2011:6:19"}],"id":1619,"name":"VariableDeclaration","src":"2011:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":1626,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1620,"name":"ElementaryTypeName","src":"2038:5:19"}],"id":1621,"name":"VariableDeclaration","src":"2038:18:19"}],"id":1622,"name":"ParameterList","src":"1993:64:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1626,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1623,"name":"ElementaryTypeName","src":"2082:7:19"}],"id":1624,"name":"VariableDeclaration","src":"2082:11:19"}],"id":1625,"name":"ParameterList","src":"2081:13:19"}],"id":1626,"name":"FunctionDefinition","src":"1978:117:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"query","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1637,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1627,"name":"ElementaryTypeName","src":"2115:4:19"}],"id":1628,"name":"VariableDeclaration","src":"2115:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1637,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1629,"name":"ElementaryTypeName","src":"2132:6:19"}],"id":1630,"name":"VariableDeclaration","src":"2132:27:19"},{"attributes":{"constant":false,"name":"_arg","scope":1637,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1631,"name":"ElementaryTypeName","src":"2161:6:19"}],"id":1632,"name":"VariableDeclaration","src":"2161:20:19"}],"id":1633,"name":"ParameterList","src":"2114:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1637,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1634,"name":"ElementaryTypeName","src":"2209:7:19"}],"id":1635,"name":"VariableDeclaration","src":"2209:11:19"}],"id":1636,"name":"ParameterList","src":"2208:13:19"}],"id":1637,"name":"FunctionDefinition","src":"2100:122:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"query2","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1650,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1638,"name":"ElementaryTypeName","src":"2243:4:19"}],"id":1639,"name":"VariableDeclaration","src":"2243:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1650,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1640,"name":"ElementaryTypeName","src":"2260:6:19"}],"id":1641,"name":"VariableDeclaration","src":"2260:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":1650,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1642,"name":"ElementaryTypeName","src":"2287:6:19"}],"id":1643,"name":"VariableDeclaration","src":"2287:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":1650,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1644,"name":"ElementaryTypeName","src":"2308:6:19"}],"id":1645,"name":"VariableDeclaration","src":"2308:19:19"}],"id":1646,"name":"ParameterList","src":"2242:86:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1650,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1647,"name":"ElementaryTypeName","src":"2353:7:19"}],"id":1648,"name":"VariableDeclaration","src":"2353:11:19"}],"id":1649,"name":"ParameterList","src":"2352:13:19"}],"id":1650,"name":"FunctionDefinition","src":"2227:139:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"query_withGasLimit","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1663,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1651,"name":"ElementaryTypeName","src":"2399:4:19"}],"id":1652,"name":"VariableDeclaration","src":"2399:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1663,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1653,"name":"ElementaryTypeName","src":"2416:6:19"}],"id":1654,"name":"VariableDeclaration","src":"2416:27:19"},{"attributes":{"constant":false,"name":"_arg","scope":1663,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1655,"name":"ElementaryTypeName","src":"2445:6:19"}],"id":1656,"name":"VariableDeclaration","src":"2445:20:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":1663,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1657,"name":"ElementaryTypeName","src":"2467:4:19"}],"id":1658,"name":"VariableDeclaration","src":"2467:14:19"}],"id":1659,"name":"ParameterList","src":"2398:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1663,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1660,"name":"ElementaryTypeName","src":"2509:7:19"}],"id":1661,"name":"VariableDeclaration","src":"2509:11:19"}],"id":1662,"name":"ParameterList","src":"2508:13:19"}],"id":1663,"name":"FunctionDefinition","src":"2371:151:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"queryN_withGasLimit","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1664,"name":"ElementaryTypeName","src":"2556:4:19"}],"id":1665,"name":"VariableDeclaration","src":"2556:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1676,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1666,"name":"ElementaryTypeName","src":"2573:6:19"}],"id":1667,"name":"VariableDeclaration","src":"2573:27:19"},{"attributes":{"constant":false,"name":"_argN","scope":1676,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1668,"name":"ElementaryTypeName","src":"2602:5:19"}],"id":1669,"name":"VariableDeclaration","src":"2602:20:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":1676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1670,"name":"ElementaryTypeName","src":"2624:4:19"}],"id":1671,"name":"VariableDeclaration","src":"2624:14:19"}],"id":1672,"name":"ParameterList","src":"2555:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1676,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1673,"name":"ElementaryTypeName","src":"2666:7:19"}],"id":1674,"name":"VariableDeclaration","src":"2666:11:19"}],"id":1675,"name":"ParameterList","src":"2665:13:19"}],"id":1676,"name":"FunctionDefinition","src":"2527:152:19"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"query2_withGasLimit","scope":1692,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":1691,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1677,"name":"ElementaryTypeName","src":"2713:4:19"}],"id":1678,"name":"VariableDeclaration","src":"2713:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":1691,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1679,"name":"ElementaryTypeName","src":"2730:6:19"}],"id":1680,"name":"VariableDeclaration","src":"2730:27:19"},{"attributes":{"constant":false,"name":"_arg1","scope":1691,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1681,"name":"ElementaryTypeName","src":"2759:6:19"}],"id":1682,"name":"VariableDeclaration","src":"2759:21:19"},{"attributes":{"constant":false,"name":"_arg2","scope":1691,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1683,"name":"ElementaryTypeName","src":"2782:6:19"}],"id":1684,"name":"VariableDeclaration","src":"2782:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":1691,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1685,"name":"ElementaryTypeName","src":"2805:4:19"}],"id":1686,"name":"VariableDeclaration","src":"2805:14:19"}],"id":1687,"name":"ParameterList","src":"2712:108:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":1691,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1688,"name":"ElementaryTypeName","src":"2847:7:19"}],"id":1689,"name":"VariableDeclaration","src":"2847:11:19"}],"id":1690,"name":"ParameterList","src":"2846:13:19"}],"id":1691,"name":"FunctionDefinition","src":"2684:176:19"}],"id":1692,"name":"ContractDefinition","src":"1539:1323:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[1698],"name":"OraclizeAddrResolverI","scope":7854},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getAddress","scope":1698,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1693,"name":"ParameterList","src":"2920:2:19"},{"children":[{"attributes":{"constant":false,"name":"_address","scope":1697,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1694,"name":"ElementaryTypeName","src":"2939:7:19"}],"id":1695,"name":"VariableDeclaration","src":"2939:16:19"}],"id":1696,"name":"ParameterList","src":"2938:18:19"}],"id":1697,"name":"FunctionDefinition","src":"2901:56:19"}],"id":1698,"name":"ContractDefinition","src":"2864:95:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[1929],"name":"Buffer","scope":7854},"children":[{"attributes":{"canonicalName":"Buffer.buffer","name":"buffer","scope":1929,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"buf","scope":1703,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1699,"name":"ElementaryTypeName","src":"4182:5:19"}],"id":1700,"name":"VariableDeclaration","src":"4182:9:19"},{"attributes":{"constant":false,"name":"capacity","scope":1703,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1701,"name":"ElementaryTypeName","src":"4201:4:19"}],"id":1702,"name":"VariableDeclaration","src":"4201:13:19"}],"id":1703,"name":"StructDefinition","src":"4158:63:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"init","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1738,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1704,"name":"UserDefinedTypeName","src":"4241:6:19"}],"id":1705,"name":"VariableDeclaration","src":"4241:18:19"},{"attributes":{"constant":false,"name":"_capacity","scope":1738,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1706,"name":"ElementaryTypeName","src":"4261:4:19"}],"id":1707,"name":"VariableDeclaration","src":"4261:14:19"}],"id":1708,"name":"ParameterList","src":"4240:36:19"},{"attributes":{"parameters":[null]},"children":[],"id":1709,"name":"ParameterList","src":"4291:0:19"},{"children":[{"attributes":{"assignments":[1711]},"children":[{"attributes":{"constant":false,"name":"capacity","scope":1737,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1710,"name":"ElementaryTypeName","src":"4301:4:19"}],"id":1711,"name":"VariableDeclaration","src":"4301:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"uint256","value":"_capacity"},"id":1712,"name":"Identifier","src":"4317:9:19"}],"id":1713,"name":"VariableDeclarationStatement","src":"4301:25:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"uint256","value":"capacity"},"id":1714,"name":"Identifier","src":"4340:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1715,"name":"Literal","src":"4351:2:19"}],"id":1716,"name":"BinaryOperation","src":"4340:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1717,"name":"Literal","src":"4357:1:19"}],"id":1718,"name":"BinaryOperation","src":"4340:18:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"uint256","value":"capacity"},"id":1719,"name":"Identifier","src":"4374:8:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1720,"name":"Literal","src":"4386:2:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"uint256","value":"capacity"},"id":1721,"name":"Identifier","src":"4392:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1722,"name":"Literal","src":"4403:2:19"}],"id":1723,"name":"BinaryOperation","src":"4392:13:19"}],"id":1724,"name":"TupleExpression","src":"4391:15:19"}],"id":1725,"name":"BinaryOperation","src":"4386:20:19"}],"id":1726,"name":"Assignment","src":"4374:32:19"}],"id":1727,"name":"ExpressionStatement","src":"4374:32:19"}],"id":1728,"name":"Block","src":"4360:57:19"}],"id":1729,"name":"IfStatement","src":"4336:81:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1705,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1730,"name":"Identifier","src":"4426:4:19"}],"id":1732,"name":"MemberAccess","src":"4426:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"uint256","value":"capacity"},"id":1733,"name":"Identifier","src":"4442:8:19"}],"id":1734,"name":"Assignment","src":"4426:24:19"}],"id":1735,"name":"ExpressionStatement","src":"4426:24:19"},{"attributes":{"externalReferences":[{"_buf":{"declaration":1705,"isOffset":false,"isSlot":false,"src":"4563:4:19","valueSize":1}},{"capacity":{"declaration":1711,"isOffset":false,"isSlot":false,"src":"4635:8:19","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(_buf, ptr)\n mstore(ptr, 0)\n mstore(0x40, add(ptr, capacity))\n}"},"children":[],"id":1736,"name":"InlineAssembly","src":"4498:157:19"}],"id":1737,"name":"Block","src":"4291:370:19"}],"id":1738,"name":"FunctionDefinition","src":"4227:434:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resize","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1761,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1739,"name":"UserDefinedTypeName","src":"4683:6:19"}],"id":1740,"name":"VariableDeclaration","src":"4683:18:19"},{"attributes":{"constant":false,"name":"_capacity","scope":1761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1741,"name":"ElementaryTypeName","src":"4703:4:19"}],"id":1742,"name":"VariableDeclaration","src":"4703:14:19"}],"id":1743,"name":"ParameterList","src":"4682:36:19"},{"attributes":{"parameters":[null]},"children":[],"id":1744,"name":"ParameterList","src":"4732:0:19"},{"children":[{"attributes":{"assignments":[1746]},"children":[{"attributes":{"constant":false,"name":"oldbuf","scope":1760,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1745,"name":"ElementaryTypeName","src":"4742:5:19"}],"id":1746,"name":"VariableDeclaration","src":"4742:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1740,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1747,"name":"Identifier","src":"4764:4:19"}],"id":1748,"name":"MemberAccess","src":"4764:8:19"}],"id":1749,"name":"VariableDeclarationStatement","src":"4742:30:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1738,"type":"function (struct Buffer.buffer memory,uint256) pure","value":"init"},"id":1750,"name":"Identifier","src":"4782:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1740,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1751,"name":"Identifier","src":"4787:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1742,"type":"uint256","value":"_capacity"},"id":1752,"name":"Identifier","src":"4793:9:19"}],"id":1753,"name":"FunctionCall","src":"4782:21:19"}],"id":1754,"name":"ExpressionStatement","src":"4782:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[1857,1884],"referencedDeclaration":1857,"type":"function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)","value":"append"},"id":1755,"name":"Identifier","src":"4813:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1740,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1756,"name":"Identifier","src":"4820:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1746,"type":"bytes memory","value":"oldbuf"},"id":1757,"name":"Identifier","src":"4826:6:19"}],"id":1758,"name":"FunctionCall","src":"4813:20:19"}],"id":1759,"name":"ExpressionStatement","src":"4813:20:19"}],"id":1760,"name":"Block","src":"4732:108:19"}],"id":1761,"name":"FunctionDefinition","src":"4667:173:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"max","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":1780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1762,"name":"ElementaryTypeName","src":"4859:4:19"}],"id":1763,"name":"VariableDeclaration","src":"4859:7:19"},{"attributes":{"constant":false,"name":"_b","scope":1780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1764,"name":"ElementaryTypeName","src":"4868:4:19"}],"id":1765,"name":"VariableDeclaration","src":"4868:7:19"}],"id":1766,"name":"ParameterList","src":"4858:18:19"},{"children":[{"attributes":{"constant":false,"name":"_max","scope":1780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1767,"name":"ElementaryTypeName","src":"4899:4:19"}],"id":1768,"name":"VariableDeclaration","src":"4899:9:19"}],"id":1769,"name":"ParameterList","src":"4898:11:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1763,"type":"uint256","value":"_a"},"id":1770,"name":"Identifier","src":"4924:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"uint256","value":"_b"},"id":1771,"name":"Identifier","src":"4929:2:19"}],"id":1772,"name":"BinaryOperation","src":"4924:7:19"},{"children":[{"attributes":{"functionReturnParameters":1769},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1763,"type":"uint256","value":"_a"},"id":1773,"name":"Identifier","src":"4954:2:19"}],"id":1774,"name":"Return","src":"4947:9:19"}],"id":1775,"name":"Block","src":"4933:34:19"}],"id":1776,"name":"IfStatement","src":"4920:47:19"},{"attributes":{"functionReturnParameters":1769},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"uint256","value":"_b"},"id":1777,"name":"Identifier","src":"4983:2:19"}],"id":1778,"name":"Return","src":"4976:9:19"}],"id":1779,"name":"Block","src":"4910:82:19"}],"id":1780,"name":"FunctionDefinition","src":"4846:146:19"},{"attributes":{"documentation":"@dev Appends a byte array to the end of the buffer. Resizes if doing so\n would exceed the capacity of the buffer.\n@param _buf The buffer to append to.\n@param _data The data to append.\n@return The original buffer.\n ","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"append","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1857,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1781,"name":"UserDefinedTypeName","src":"5295:6:19"}],"id":1782,"name":"VariableDeclaration","src":"5295:18:19"},{"attributes":{"constant":false,"name":"_data","scope":1857,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1783,"name":"ElementaryTypeName","src":"5315:5:19"}],"id":1784,"name":"VariableDeclaration","src":"5315:18:19"}],"id":1785,"name":"ParameterList","src":"5294:40:19"},{"children":[{"attributes":{"constant":false,"name":"_buffer","scope":1857,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1786,"name":"UserDefinedTypeName","src":"5358:6:19"}],"id":1787,"name":"VariableDeclaration","src":"5358:21:19"}],"id":1788,"name":"ParameterList","src":"5357:23:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1784,"type":"bytes memory","value":"_data"},"id":1789,"name":"Identifier","src":"5395:5:19"}],"id":1790,"name":"MemberAccess","src":"5395:12:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1791,"name":"Identifier","src":"5410:4:19"}],"id":1792,"name":"MemberAccess","src":"5410:8:19"}],"id":1793,"name":"MemberAccess","src":"5410:15:19"}],"id":1794,"name":"BinaryOperation","src":"5395:30:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1795,"name":"Identifier","src":"5428:4:19"}],"id":1796,"name":"MemberAccess","src":"5428:13:19"}],"id":1797,"name":"BinaryOperation","src":"5395:46:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1761,"type":"function (struct Buffer.buffer memory,uint256) pure","value":"resize"},"id":1798,"name":"Identifier","src":"5457:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1799,"name":"Identifier","src":"5464:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1780,"type":"function (uint256,uint256) pure returns (uint256)","value":"max"},"id":1800,"name":"Identifier","src":"5470:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1801,"name":"Identifier","src":"5474:4:19"}],"id":1802,"name":"MemberAccess","src":"5474:13:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1784,"type":"bytes memory","value":"_data"},"id":1803,"name":"Identifier","src":"5489:5:19"}],"id":1804,"name":"MemberAccess","src":"5489:12:19"}],"id":1805,"name":"FunctionCall","src":"5470:32:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1806,"name":"Literal","src":"5505:1:19"}],"id":1807,"name":"BinaryOperation","src":"5470:36:19"}],"id":1808,"name":"FunctionCall","src":"5457:50:19"}],"id":1809,"name":"ExpressionStatement","src":"5457:50:19"}],"id":1810,"name":"Block","src":"5443:75:19"}],"id":1811,"name":"IfStatement","src":"5391:127:19"},{"attributes":{"assignments":[1813],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":1856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1812,"name":"ElementaryTypeName","src":"5527:4:19"}],"id":1813,"name":"VariableDeclaration","src":"5527:9:19"}],"id":1814,"name":"VariableDeclarationStatement","src":"5527:9:19"},{"attributes":{"assignments":[1816],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":1856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1815,"name":"ElementaryTypeName","src":"5546:4:19"}],"id":1816,"name":"VariableDeclaration","src":"5546:8:19"}],"id":1817,"name":"VariableDeclarationStatement","src":"5546:8:19"},{"attributes":{"assignments":[1819]},"children":[{"attributes":{"constant":false,"name":"len","scope":1856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1818,"name":"ElementaryTypeName","src":"5564:4:19"}],"id":1819,"name":"VariableDeclaration","src":"5564:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1784,"type":"bytes memory","value":"_data"},"id":1820,"name":"Identifier","src":"5575:5:19"}],"id":1821,"name":"MemberAccess","src":"5575:12:19"}],"id":1822,"name":"VariableDeclarationStatement","src":"5564:23:19"},{"attributes":{"externalReferences":[{"_buf":{"declaration":1782,"isOffset":false,"isSlot":false,"src":"5640:4:19","valueSize":1}},{"dest":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"5769:4:19","valueSize":1}},{"src":{"declaration":1816,"isOffset":false,"isSlot":false,"src":"5970:3:19","valueSize":1}},{"_data":{"declaration":1784,"isOffset":false,"isSlot":false,"src":"5981:5:19","valueSize":1}},{"_data":{"declaration":1784,"isOffset":false,"isSlot":false,"src":"5925:5:19","valueSize":1}}],"operations":"{\n let bufptr := mload(_buf)\n let buflen := mload(bufptr)\n dest := add(add(bufptr, buflen), 32)\n mstore(bufptr, add(buflen, mload(_data)))\n src := add(_data, 32)\n}"},"children":[],"id":1823,"name":"InlineAssembly","src":"5597:404:19"},{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1819,"type":"uint256","value":"len"},"id":1824,"name":"Identifier","src":"6016:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1825,"name":"Literal","src":"6023:2:19"}],"id":1826,"name":"BinaryOperation","src":"6016:9:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1819,"type":"uint256","value":"len"},"id":1827,"name":"Identifier","src":"6027:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1828,"name":"Literal","src":"6034:2:19"}],"id":1829,"name":"Assignment","src":"6027:9:19"}],"id":1830,"name":"ExpressionStatement","src":"6027:9:19"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":1816,"isOffset":false,"isSlot":false,"src":"6140:3:19","valueSize":1}},{"dest":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"6128:4:19","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":1831,"name":"InlineAssembly","src":"6094:65:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1813,"type":"uint256","value":"dest"},"id":1832,"name":"Identifier","src":"6172:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1833,"name":"Literal","src":"6180:2:19"}],"id":1834,"name":"Assignment","src":"6172:10:19"}],"id":1835,"name":"ExpressionStatement","src":"6172:10:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1816,"type":"uint256","value":"src"},"id":1836,"name":"Identifier","src":"6196:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1837,"name":"Literal","src":"6203:2:19"}],"id":1838,"name":"Assignment","src":"6196:9:19"}],"id":1839,"name":"ExpressionStatement","src":"6196:9:19"}],"id":1840,"name":"Block","src":"6038:178:19"}],"id":1841,"name":"ForStatement","src":"6010:206:19"},{"attributes":{"assignments":[1843]},"children":[{"attributes":{"constant":false,"name":"mask","scope":1856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1842,"name":"ElementaryTypeName","src":"6225:4:19"}],"id":1843,"name":"VariableDeclaration","src":"6225:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":1844,"name":"Literal","src":"6237:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1845,"name":"Literal","src":"6245:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1819,"type":"uint256","value":"len"},"id":1846,"name":"Identifier","src":"6250:3:19"}],"id":1847,"name":"BinaryOperation","src":"6245:8:19"}],"id":1848,"name":"TupleExpression","src":"6244:10:19"}],"id":1849,"name":"BinaryOperation","src":"6237:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1850,"name":"Literal","src":"6257:1:19"}],"id":1851,"name":"BinaryOperation","src":"6237:21:19"}],"id":1852,"name":"VariableDeclarationStatement","src":"6225:33:19"},{"attributes":{"externalReferences":[{"src":{"declaration":1816,"isOffset":false,"isSlot":false,"src":"6340:3:19","valueSize":1}},{"mask":{"declaration":1843,"isOffset":false,"isSlot":false,"src":"6350:4:19","valueSize":1}},{"dest":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"6427:4:19","valueSize":1}},{"dest":{"declaration":1813,"isOffset":false,"isSlot":false,"src":"6395:4:19","valueSize":1}},{"mask":{"declaration":1843,"isOffset":false,"isSlot":false,"src":"6402:4:19","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":1853,"name":"InlineAssembly","src":"6292:173:19"},{"attributes":{"functionReturnParameters":1788},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1854,"name":"Identifier","src":"6481:4:19"}],"id":1855,"name":"Return","src":"6474:11:19"}],"id":1856,"name":"Block","src":"5381:1111:19"}],"id":1857,"name":"FunctionDefinition","src":"5279:1213:19"},{"attributes":{"documentation":" * @dev Appends a byte to the end of the buffer. Resizes if doing so would\nexceed the capacity of the buffer.\n@param _buf The buffer to append to.\n@param _data The data to append.\n@return The original buffer.\n ","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"append","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1884,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1858,"name":"UserDefinedTypeName","src":"6792:6:19"}],"id":1859,"name":"VariableDeclaration","src":"6792:18:19"},{"attributes":{"constant":false,"name":"_data","scope":1884,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1860,"name":"ElementaryTypeName","src":"6812:5:19"}],"id":1861,"name":"VariableDeclaration","src":"6812:11:19"}],"id":1862,"name":"ParameterList","src":"6791:33:19"},{"attributes":{"parameters":[null]},"children":[],"id":1863,"name":"ParameterList","src":"6839:0:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1859,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1864,"name":"Identifier","src":"6853:4:19"}],"id":1865,"name":"MemberAccess","src":"6853:8:19"}],"id":1866,"name":"MemberAccess","src":"6853:15:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1867,"name":"Literal","src":"6871:1:19"}],"id":1868,"name":"BinaryOperation","src":"6853:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1859,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1869,"name":"Identifier","src":"6875:4:19"}],"id":1870,"name":"MemberAccess","src":"6875:13:19"}],"id":1871,"name":"BinaryOperation","src":"6853:35:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1761,"type":"function (struct Buffer.buffer memory,uint256) pure","value":"resize"},"id":1872,"name":"Identifier","src":"6904:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1859,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1873,"name":"Identifier","src":"6911:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1859,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1874,"name":"Identifier","src":"6917:4:19"}],"id":1875,"name":"MemberAccess","src":"6917:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1876,"name":"Literal","src":"6933:1:19"}],"id":1877,"name":"BinaryOperation","src":"6917:17:19"}],"id":1878,"name":"FunctionCall","src":"6904:31:19"}],"id":1879,"name":"ExpressionStatement","src":"6904:31:19"}],"id":1880,"name":"Block","src":"6890:56:19"}],"id":1881,"name":"IfStatement","src":"6849:97:19"},{"attributes":{"externalReferences":[{"_buf":{"declaration":1859,"isOffset":false,"isSlot":false,"src":"6998:4:19","valueSize":1}},{"_data":{"declaration":1861,"isOffset":false,"isSlot":false,"src":"7262:5:19","valueSize":1}}],"operations":"{\n let bufptr := mload(_buf)\n let buflen := mload(bufptr)\n let dest := add(add(bufptr, buflen), 32)\n mstore8(dest, _data)\n mstore(bufptr, add(buflen, 1))\n}"},"children":[],"id":1882,"name":"InlineAssembly","src":"6955:390:19"}],"id":1883,"name":"Block","src":"6839:512:19"}],"id":1884,"name":"FunctionDefinition","src":"6776:575:19"},{"attributes":{"documentation":" * @dev Appends a byte to the end of the buffer. Resizes if doing so would\nexceed the capacity of the buffer.\n@param _buf The buffer to append to.\n@param _data The data to append.\n@return The original buffer.\n ","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"appendInt","scope":1929,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":1928,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1885,"name":"UserDefinedTypeName","src":"7654:6:19"}],"id":1886,"name":"VariableDeclaration","src":"7654:18:19"},{"attributes":{"constant":false,"name":"_data","scope":1928,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1887,"name":"ElementaryTypeName","src":"7674:4:19"}],"id":1888,"name":"VariableDeclaration","src":"7674:10:19"},{"attributes":{"constant":false,"name":"_len","scope":1928,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1889,"name":"ElementaryTypeName","src":"7686:4:19"}],"id":1890,"name":"VariableDeclaration","src":"7686:9:19"}],"id":1891,"name":"ParameterList","src":"7653:43:19"},{"children":[{"attributes":{"constant":false,"name":"_buffer","scope":1928,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1892,"name":"UserDefinedTypeName","src":"7720:6:19"}],"id":1893,"name":"VariableDeclaration","src":"7720:21:19"}],"id":1894,"name":"ParameterList","src":"7719:23:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"_len"},"id":1895,"name":"Identifier","src":"7757:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1896,"name":"Identifier","src":"7764:4:19"}],"id":1897,"name":"MemberAccess","src":"7764:8:19"}],"id":1898,"name":"MemberAccess","src":"7764:15:19"}],"id":1899,"name":"BinaryOperation","src":"7757:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1900,"name":"Identifier","src":"7782:4:19"}],"id":1901,"name":"MemberAccess","src":"7782:13:19"}],"id":1902,"name":"BinaryOperation","src":"7757:38:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1761,"type":"function (struct Buffer.buffer memory,uint256) pure","value":"resize"},"id":1903,"name":"Identifier","src":"7811:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1904,"name":"Identifier","src":"7818:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1780,"type":"function (uint256,uint256) pure returns (uint256)","value":"max"},"id":1905,"name":"Identifier","src":"7824:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"capacity","referencedDeclaration":1702,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1906,"name":"Identifier","src":"7828:4:19"}],"id":1907,"name":"MemberAccess","src":"7828:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"_len"},"id":1908,"name":"Identifier","src":"7843:4:19"}],"id":1909,"name":"FunctionCall","src":"7824:24:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1910,"name":"Literal","src":"7851:1:19"}],"id":1911,"name":"BinaryOperation","src":"7824:28:19"}],"id":1912,"name":"FunctionCall","src":"7811:42:19"}],"id":1913,"name":"ExpressionStatement","src":"7811:42:19"}],"id":1914,"name":"Block","src":"7797:67:19"}],"id":1915,"name":"IfStatement","src":"7753:111:19"},{"attributes":{"assignments":[1917]},"children":[{"attributes":{"constant":false,"name":"mask","scope":1927,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1916,"name":"ElementaryTypeName","src":"7873:4:19"}],"id":1917,"name":"VariableDeclaration","src":"7873:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":1918,"name":"Literal","src":"7885:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"_len"},"id":1919,"name":"Identifier","src":"7892:4:19"}],"id":1920,"name":"BinaryOperation","src":"7885:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1921,"name":"Literal","src":"7899:1:19"}],"id":1922,"name":"BinaryOperation","src":"7885:15:19"}],"id":1923,"name":"VariableDeclarationStatement","src":"7873:27:19"},{"attributes":{"externalReferences":[{"_buf":{"declaration":1886,"isOffset":false,"isSlot":false,"src":"7953:4:19","valueSize":1}},{"mask":{"declaration":1917,"isOffset":false,"isSlot":false,"src":"8248:4:19","valueSize":1}},{"_len":{"declaration":1890,"isOffset":false,"isSlot":false,"src":"8119:4:19","valueSize":1}},{"_len":{"declaration":1890,"isOffset":false,"isSlot":false,"src":"8303:4:19","valueSize":1}},{"_data":{"declaration":1888,"isOffset":false,"isSlot":false,"src":"8256:5:19","valueSize":1}}],"operations":"{\n let bufptr := mload(_buf)\n let buflen := mload(bufptr)\n let dest := add(add(bufptr, buflen), _len)\n mstore(dest, or(and(mload(dest), not(mask)), _data))\n mstore(bufptr, add(buflen, _len))\n}"},"children":[],"id":1924,"name":"InlineAssembly","src":"7910:433:19"},{"attributes":{"functionReturnParameters":1894},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1886,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1925,"name":"Identifier","src":"8359:4:19"}],"id":1926,"name":"Return","src":"8352:11:19"}],"id":1927,"name":"Block","src":"7743:627:19"}],"id":1928,"name":"FunctionDefinition","src":"7635:735:19"}],"id":1929,"name":"ContractDefinition","src":"4136:4236:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[2229],"name":"CBOR","scope":7854},"children":[{"children":[{"attributes":{"contractScope":null,"name":"Buffer","referencedDeclaration":1929,"type":"library Buffer"},"id":1930,"name":"UserDefinedTypeName","src":"8400:6:19"},{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1931,"name":"UserDefinedTypeName","src":"8411:13:19"}],"id":1932,"name":"UsingForDirective","src":"8394:31:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_INT","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1933,"name":"ElementaryTypeName","src":"8431:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1934,"name":"Literal","src":"8471:1:19"}],"id":1935,"name":"VariableDeclaration","src":"8431:41:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_MAP","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1936,"name":"ElementaryTypeName","src":"8478:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":1937,"name":"Literal","src":"8518:1:19"}],"id":1938,"name":"VariableDeclaration","src":"8478:41:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_BYTES","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1939,"name":"ElementaryTypeName","src":"8525:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1940,"name":"Literal","src":"8567:1:19"}],"id":1941,"name":"VariableDeclaration","src":"8525:43:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_ARRAY","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1942,"name":"ElementaryTypeName","src":"8574:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1943,"name":"Literal","src":"8616:1:19"}],"id":1944,"name":"VariableDeclaration","src":"8574:43:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_STRING","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1945,"name":"ElementaryTypeName","src":"8623:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1946,"name":"Literal","src":"8666:1:19"}],"id":1947,"name":"VariableDeclaration","src":"8623:44:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_NEGATIVE_INT","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1948,"name":"ElementaryTypeName","src":"8673:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1949,"name":"Literal","src":"8722:1:19"}],"id":1950,"name":"VariableDeclaration","src":"8673:50:19"},{"attributes":{"constant":true,"name":"MAJOR_TYPE_CONTENT_FREE","scope":2229,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"private"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1951,"name":"ElementaryTypeName","src":"8729:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":1952,"name":"Literal","src":"8778:1:19"}],"id":1953,"name":"VariableDeclaration","src":"8729:50:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeType","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2081,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":1954,"name":"UserDefinedTypeName","src":"8806:13:19"}],"id":1955,"name":"VariableDeclaration","src":"8806:25:19"},{"attributes":{"constant":false,"name":"_major","scope":2081,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1956,"name":"ElementaryTypeName","src":"8833:5:19"}],"id":1957,"name":"VariableDeclaration","src":"8833:12:19"},{"attributes":{"constant":false,"name":"_value","scope":2081,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1958,"name":"ElementaryTypeName","src":"8847:4:19"}],"id":1959,"name":"VariableDeclaration","src":"8847:11:19"}],"id":1960,"name":"ParameterList","src":"8805:54:19"},{"attributes":{"parameters":[null]},"children":[],"id":1961,"name":"ParameterList","src":"8873:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":1962,"name":"Identifier","src":"8887:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 23","value":"23"},"id":1963,"name":"Literal","src":"8897:2:19"}],"id":1964,"name":"BinaryOperation","src":"8887:12:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1965,"name":"Identifier","src":"8915:4:19"}],"id":1967,"name":"MemberAccess","src":"8915:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1968,"name":"ElementaryTypeNameExpression","src":"8927:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":1969,"name":"Identifier","src":"8934:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":1970,"name":"Literal","src":"8944:1:19"}],"id":1971,"name":"BinaryOperation","src":"8934:11:19"}],"id":1972,"name":"TupleExpression","src":"8933:13:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":1973,"name":"Identifier","src":"8949:6:19"}],"id":1974,"name":"BinaryOperation","src":"8933:22:19"}],"id":1975,"name":"FunctionCall","src":"8927:29:19"}],"id":1976,"name":"FunctionCall","src":"8915:42:19"}],"id":1977,"name":"ExpressionStatement","src":"8915:42:19"}],"id":1978,"name":"Block","src":"8901:67:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":1979,"name":"Identifier","src":"8978:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":1980,"name":"Literal","src":"8988:4:19"}],"id":1981,"name":"BinaryOperation","src":"8978:14:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1982,"name":"Identifier","src":"9008:4:19"}],"id":1984,"name":"MemberAccess","src":"9008:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":1985,"name":"ElementaryTypeNameExpression","src":"9020:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":1986,"name":"Identifier","src":"9027:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":1987,"name":"Literal","src":"9037:1:19"}],"id":1988,"name":"BinaryOperation","src":"9027:11:19"}],"id":1989,"name":"TupleExpression","src":"9026:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":1990,"name":"Literal","src":"9042:2:19"}],"id":1991,"name":"BinaryOperation","src":"9026:18:19"}],"id":1992,"name":"FunctionCall","src":"9020:25:19"}],"id":1993,"name":"FunctionCall","src":"9008:38:19"}],"id":1994,"name":"ExpressionStatement","src":"9008:38:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"appendInt","referencedDeclaration":1928,"type":"function (struct Buffer.buffer memory,uint256,uint256) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":1995,"name":"Identifier","src":"9060:4:19"}],"id":1997,"name":"MemberAccess","src":"9060:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":1998,"name":"Identifier","src":"9075:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1999,"name":"Literal","src":"9083:1:19"}],"id":2000,"name":"FunctionCall","src":"9060:25:19"}],"id":2001,"name":"ExpressionStatement","src":"9060:25:19"}],"id":2002,"name":"Block","src":"8994:102:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2003,"name":"Identifier","src":"9106:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307846464646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xFFFF"},"id":2004,"name":"Literal","src":"9116:6:19"}],"id":2005,"name":"BinaryOperation","src":"9106:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2006,"name":"Identifier","src":"9138:4:19"}],"id":2008,"name":"MemberAccess","src":"9138:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2009,"name":"ElementaryTypeNameExpression","src":"9150:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":2010,"name":"Identifier","src":"9157:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":2011,"name":"Literal","src":"9167:1:19"}],"id":2012,"name":"BinaryOperation","src":"9157:11:19"}],"id":2013,"name":"TupleExpression","src":"9156:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3235","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 25","value":"25"},"id":2014,"name":"Literal","src":"9172:2:19"}],"id":2015,"name":"BinaryOperation","src":"9156:18:19"}],"id":2016,"name":"FunctionCall","src":"9150:25:19"}],"id":2017,"name":"FunctionCall","src":"9138:38:19"}],"id":2018,"name":"ExpressionStatement","src":"9138:38:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"appendInt","referencedDeclaration":1928,"type":"function (struct Buffer.buffer memory,uint256,uint256) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2019,"name":"Identifier","src":"9190:4:19"}],"id":2021,"name":"MemberAccess","src":"9190:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2022,"name":"Identifier","src":"9205:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2023,"name":"Literal","src":"9213:1:19"}],"id":2024,"name":"FunctionCall","src":"9190:25:19"}],"id":2025,"name":"ExpressionStatement","src":"9190:25:19"}],"id":2026,"name":"Block","src":"9124:102:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2027,"name":"Identifier","src":"9236:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646464646464646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xFFFFFFFF"},"id":2028,"name":"Literal","src":"9246:10:19"}],"id":2029,"name":"BinaryOperation","src":"9236:20:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2030,"name":"Identifier","src":"9272:4:19"}],"id":2032,"name":"MemberAccess","src":"9272:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2033,"name":"ElementaryTypeNameExpression","src":"9284:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":2034,"name":"Identifier","src":"9291:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":2035,"name":"Literal","src":"9301:1:19"}],"id":2036,"name":"BinaryOperation","src":"9291:11:19"}],"id":2037,"name":"TupleExpression","src":"9290:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3236","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 26","value":"26"},"id":2038,"name":"Literal","src":"9306:2:19"}],"id":2039,"name":"BinaryOperation","src":"9290:18:19"}],"id":2040,"name":"FunctionCall","src":"9284:25:19"}],"id":2041,"name":"FunctionCall","src":"9272:38:19"}],"id":2042,"name":"ExpressionStatement","src":"9272:38:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"appendInt","referencedDeclaration":1928,"type":"function (struct Buffer.buffer memory,uint256,uint256) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2043,"name":"Identifier","src":"9324:4:19"}],"id":2045,"name":"MemberAccess","src":"9324:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2046,"name":"Identifier","src":"9339:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":2047,"name":"Literal","src":"9347:1:19"}],"id":2048,"name":"FunctionCall","src":"9324:25:19"}],"id":2049,"name":"ExpressionStatement","src":"9324:25:19"}],"id":2050,"name":"Block","src":"9258:102:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2051,"name":"Identifier","src":"9370:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307846464646464646464646464646464646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xFFFFFFFFFFFFFFFF"},"id":2052,"name":"Literal","src":"9380:18:19"}],"id":2053,"name":"BinaryOperation","src":"9370:28:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2054,"name":"Identifier","src":"9414:4:19"}],"id":2056,"name":"MemberAccess","src":"9414:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2057,"name":"ElementaryTypeNameExpression","src":"9426:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1957,"type":"uint8","value":"_major"},"id":2058,"name":"Identifier","src":"9433:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":2059,"name":"Literal","src":"9443:1:19"}],"id":2060,"name":"BinaryOperation","src":"9433:11:19"}],"id":2061,"name":"TupleExpression","src":"9432:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":2062,"name":"Literal","src":"9448:2:19"}],"id":2063,"name":"BinaryOperation","src":"9432:18:19"}],"id":2064,"name":"FunctionCall","src":"9426:25:19"}],"id":2065,"name":"FunctionCall","src":"9414:38:19"}],"id":2066,"name":"ExpressionStatement","src":"9414:38:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"appendInt","referencedDeclaration":1928,"type":"function (struct Buffer.buffer memory,uint256,uint256) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1955,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2067,"name":"Identifier","src":"9466:4:19"}],"id":2069,"name":"MemberAccess","src":"9466:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1959,"type":"uint256","value":"_value"},"id":2070,"name":"Identifier","src":"9481:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":2071,"name":"Literal","src":"9489:1:19"}],"id":2072,"name":"FunctionCall","src":"9466:25:19"}],"id":2073,"name":"ExpressionStatement","src":"9466:25:19"}],"id":2074,"name":"Block","src":"9400:102:19"}],"id":2075,"name":"IfStatement","src":"9366:136:19"}],"id":2076,"name":"IfStatement","src":"9232:270:19"}],"id":2077,"name":"IfStatement","src":"9102:400:19"}],"id":2078,"name":"IfStatement","src":"8974:528:19"}],"id":2079,"name":"IfStatement","src":"8883:619:19"}],"id":2080,"name":"Block","src":"8873:635:19"}],"id":2081,"name":"FunctionDefinition","src":"8786:722:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeIndefiniteLengthType","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2102,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2082,"name":"UserDefinedTypeName","src":"9550:13:19"}],"id":2083,"name":"VariableDeclaration","src":"9550:25:19"},{"attributes":{"constant":false,"name":"_major","scope":2102,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2084,"name":"ElementaryTypeName","src":"9577:5:19"}],"id":2085,"name":"VariableDeclaration","src":"9577:12:19"}],"id":2086,"name":"ParameterList","src":"9549:41:19"},{"attributes":{"parameters":[null]},"children":[],"id":2087,"name":"ParameterList","src":"9604:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1884,"type":"function (struct Buffer.buffer memory,uint8) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2083,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2088,"name":"Identifier","src":"9614:4:19"}],"id":2090,"name":"MemberAccess","src":"9614:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2091,"name":"ElementaryTypeNameExpression","src":"9626:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2085,"type":"uint8","value":"_major"},"id":2092,"name":"Identifier","src":"9633:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":2093,"name":"Literal","src":"9643:1:19"}],"id":2094,"name":"BinaryOperation","src":"9633:11:19"}],"id":2095,"name":"TupleExpression","src":"9632:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2096,"name":"Literal","src":"9648:2:19"}],"id":2097,"name":"BinaryOperation","src":"9632:18:19"}],"id":2098,"name":"FunctionCall","src":"9626:25:19"}],"id":2099,"name":"FunctionCall","src":"9614:38:19"}],"id":2100,"name":"ExpressionStatement","src":"9614:38:19"}],"id":2101,"name":"Block","src":"9604:55:19"}],"id":2102,"name":"FunctionDefinition","src":"9514:145:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeUInt","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2116,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2103,"name":"UserDefinedTypeName","src":"9685:13:19"}],"id":2104,"name":"VariableDeclaration","src":"9685:25:19"},{"attributes":{"constant":false,"name":"_value","scope":2116,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2105,"name":"ElementaryTypeName","src":"9712:4:19"}],"id":2106,"name":"VariableDeclaration","src":"9712:11:19"}],"id":2107,"name":"ParameterList","src":"9684:40:19"},{"attributes":{"parameters":[null]},"children":[],"id":2108,"name":"ParameterList","src":"9739:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2109,"name":"Identifier","src":"9749:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2110,"name":"Identifier","src":"9760:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1935,"type":"uint8","value":"MAJOR_TYPE_INT"},"id":2111,"name":"Identifier","src":"9766:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2106,"type":"uint256","value":"_value"},"id":2112,"name":"Identifier","src":"9782:6:19"}],"id":2113,"name":"FunctionCall","src":"9749:40:19"}],"id":2114,"name":"ExpressionStatement","src":"9749:40:19"}],"id":2115,"name":"Block","src":"9739:57:19"}],"id":2116,"name":"FunctionDefinition","src":"9665:131:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeInt","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2149,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2117,"name":"UserDefinedTypeName","src":"9821:13:19"}],"id":2118,"name":"VariableDeclaration","src":"9821:25:19"},{"attributes":{"constant":false,"name":"_value","scope":2149,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":2119,"name":"ElementaryTypeName","src":"9848:3:19"}],"id":2120,"name":"VariableDeclaration","src":"9848:10:19"}],"id":2121,"name":"ParameterList","src":"9820:39:19"},{"attributes":{"parameters":[null]},"children":[],"id":2122,"name":"ParameterList","src":"9874:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"int256","value":"_value"},"id":2123,"name":"Identifier","src":"9888:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2124,"name":"Literal","src":"9898:1:19"}],"id":2125,"name":"BinaryOperation","src":"9888:11:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2126,"name":"Identifier","src":"9915:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2127,"name":"Identifier","src":"9926:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1935,"type":"uint8","value":"MAJOR_TYPE_INT"},"id":2128,"name":"Identifier","src":"9932:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":2129,"name":"ElementaryTypeNameExpression","src":"9948:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"int256","value":"_value"},"id":2130,"name":"Identifier","src":"9953:6:19"}],"id":2131,"name":"FunctionCall","src":"9948:12:19"}],"id":2132,"name":"FunctionCall","src":"9915:46:19"}],"id":2133,"name":"ExpressionStatement","src":"9915:46:19"}],"id":2134,"name":"Block","src":"9901:71:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2135,"name":"Identifier","src":"9992:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2136,"name":"Identifier","src":"10003:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1950,"type":"uint8","value":"MAJOR_TYPE_NEGATIVE_INT"},"id":2137,"name":"Identifier","src":"10009:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_int256","typeString":"int256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":2138,"name":"ElementaryTypeNameExpression","src":"10034:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2139,"name":"Literal","src":"10040:1:19"}],"id":2140,"name":"UnaryOperation","src":"10039:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"int256","value":"_value"},"id":2141,"name":"Identifier","src":"10044:6:19"}],"id":2142,"name":"BinaryOperation","src":"10039:11:19"}],"id":2143,"name":"FunctionCall","src":"10034:17:19"}],"id":2144,"name":"FunctionCall","src":"9992:60:19"}],"id":2145,"name":"ExpressionStatement","src":"9992:60:19"}],"id":2146,"name":"Block","src":"9978:85:19"}],"id":2147,"name":"IfStatement","src":"9884:179:19"}],"id":2148,"name":"Block","src":"9874:195:19"}],"id":2149,"name":"FunctionDefinition","src":"9802:267:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeBytes","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2170,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2150,"name":"UserDefinedTypeName","src":"10096:13:19"}],"id":2151,"name":"VariableDeclaration","src":"10096:25:19"},{"attributes":{"constant":false,"name":"_value","scope":2170,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2152,"name":"ElementaryTypeName","src":"10123:5:19"}],"id":2153,"name":"VariableDeclaration","src":"10123:19:19"}],"id":2154,"name":"ParameterList","src":"10095:48:19"},{"attributes":{"parameters":[null]},"children":[],"id":2155,"name":"ParameterList","src":"10158:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2156,"name":"Identifier","src":"10168:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2151,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2157,"name":"Identifier","src":"10179:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1941,"type":"uint8","value":"MAJOR_TYPE_BYTES"},"id":2158,"name":"Identifier","src":"10185:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2153,"type":"bytes memory","value":"_value"},"id":2159,"name":"Identifier","src":"10203:6:19"}],"id":2160,"name":"MemberAccess","src":"10203:13:19"}],"id":2161,"name":"FunctionCall","src":"10168:49:19"}],"id":2162,"name":"ExpressionStatement","src":"10168:49:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1857,"type":"function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2151,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2163,"name":"Identifier","src":"10227:4:19"}],"id":2165,"name":"MemberAccess","src":"10227:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2153,"type":"bytes memory","value":"_value"},"id":2166,"name":"Identifier","src":"10239:6:19"}],"id":2167,"name":"FunctionCall","src":"10227:19:19"}],"id":2168,"name":"ExpressionStatement","src":"10227:19:19"}],"id":2169,"name":"Block","src":"10158:95:19"}],"id":2170,"name":"FunctionDefinition","src":"10075:178:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"encodeString","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2195,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2171,"name":"UserDefinedTypeName","src":"10281:13:19"}],"id":2172,"name":"VariableDeclaration","src":"10281:25:19"},{"attributes":{"constant":false,"name":"_value","scope":2195,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2173,"name":"ElementaryTypeName","src":"10308:6:19"}],"id":2174,"name":"VariableDeclaration","src":"10308:20:19"}],"id":2175,"name":"ParameterList","src":"10280:49:19"},{"attributes":{"parameters":[null]},"children":[],"id":2176,"name":"ParameterList","src":"10344:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2081,"type":"function (struct Buffer.buffer memory,uint8,uint256) pure","value":"encodeType"},"id":2177,"name":"Identifier","src":"10354:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2172,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2178,"name":"Identifier","src":"10365:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"uint8","value":"MAJOR_TYPE_STRING"},"id":2179,"name":"Identifier","src":"10371:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2180,"name":"ElementaryTypeNameExpression","src":"10390:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"string memory","value":"_value"},"id":2181,"name":"Identifier","src":"10396:6:19"}],"id":2182,"name":"FunctionCall","src":"10390:13:19"}],"id":2183,"name":"MemberAccess","src":"10390:20:19"}],"id":2184,"name":"FunctionCall","src":"10354:57:19"}],"id":2185,"name":"ExpressionStatement","src":"10354:57:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct Buffer.buffer memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"append","referencedDeclaration":1857,"type":"function (struct Buffer.buffer memory,bytes memory) pure returns (struct Buffer.buffer memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2172,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2186,"name":"Identifier","src":"10421:4:19"}],"id":2188,"name":"MemberAccess","src":"10421:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2189,"name":"ElementaryTypeNameExpression","src":"10433:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2174,"type":"string memory","value":"_value"},"id":2190,"name":"Identifier","src":"10439:6:19"}],"id":2191,"name":"FunctionCall","src":"10433:13:19"}],"id":2192,"name":"FunctionCall","src":"10421:26:19"}],"id":2193,"name":"ExpressionStatement","src":"10421:26:19"}],"id":2194,"name":"Block","src":"10344:110:19"}],"id":2195,"name":"FunctionDefinition","src":"10259:195:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startArray","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2206,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2196,"name":"UserDefinedTypeName","src":"10480:13:19"}],"id":2197,"name":"VariableDeclaration","src":"10480:25:19"}],"id":2198,"name":"ParameterList","src":"10479:27:19"},{"attributes":{"parameters":[null]},"children":[],"id":2199,"name":"ParameterList","src":"10521:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"function (struct Buffer.buffer memory,uint8) pure","value":"encodeIndefiniteLengthType"},"id":2200,"name":"Identifier","src":"10531:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2197,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2201,"name":"Identifier","src":"10558:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1944,"type":"uint8","value":"MAJOR_TYPE_ARRAY"},"id":2202,"name":"Identifier","src":"10564:16:19"}],"id":2203,"name":"FunctionCall","src":"10531:50:19"}],"id":2204,"name":"ExpressionStatement","src":"10531:50:19"}],"id":2205,"name":"Block","src":"10521:67:19"}],"id":2206,"name":"FunctionDefinition","src":"10460:128:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startMap","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2217,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2207,"name":"UserDefinedTypeName","src":"10612:13:19"}],"id":2208,"name":"VariableDeclaration","src":"10612:25:19"}],"id":2209,"name":"ParameterList","src":"10611:27:19"},{"attributes":{"parameters":[null]},"children":[],"id":2210,"name":"ParameterList","src":"10653:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"function (struct Buffer.buffer memory,uint8) pure","value":"encodeIndefiniteLengthType"},"id":2211,"name":"Identifier","src":"10663:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2208,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2212,"name":"Identifier","src":"10690:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1938,"type":"uint8","value":"MAJOR_TYPE_MAP"},"id":2213,"name":"Identifier","src":"10696:14:19"}],"id":2214,"name":"FunctionCall","src":"10663:48:19"}],"id":2215,"name":"ExpressionStatement","src":"10663:48:19"}],"id":2216,"name":"Block","src":"10653:65:19"}],"id":2217,"name":"FunctionDefinition","src":"10594:124:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endSequence","scope":2229,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_buf","scope":2228,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2218,"name":"UserDefinedTypeName","src":"10745:13:19"}],"id":2219,"name":"VariableDeclaration","src":"10745:25:19"}],"id":2220,"name":"ParameterList","src":"10744:27:19"},{"attributes":{"parameters":[null]},"children":[],"id":2221,"name":"ParameterList","src":"10786:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"function (struct Buffer.buffer memory,uint8) pure","value":"encodeIndefiniteLengthType"},"id":2222,"name":"Identifier","src":"10796:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2219,"type":"struct Buffer.buffer memory","value":"_buf"},"id":2223,"name":"Identifier","src":"10823:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1953,"type":"uint8","value":"MAJOR_TYPE_CONTENT_FREE"},"id":2224,"name":"Identifier","src":"10829:23:19"}],"id":2225,"name":"FunctionCall","src":"10796:57:19"}],"id":2226,"name":"ExpressionStatement","src":"10796:57:19"}],"id":2227,"name":"Block","src":"10786:74:19"}],"id":2228,"name":"FunctionDefinition","src":"10724:136:19"}],"id":2229,"name":"ContractDefinition","src":"8374:2488:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[7853],"name":"usingOraclize","scope":7854},"children":[{"children":[{"attributes":{"contractScope":null,"name":"CBOR","referencedDeclaration":2229,"type":"library CBOR"},"id":2230,"name":"UserDefinedTypeName","src":"10930:4:19"},{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":2231,"name":"UserDefinedTypeName","src":"10939:13:19"}],"id":2232,"name":"UsingForDirective","src":"10924:29:19"},{"attributes":{"constant":false,"name":"oraclize","scope":7853,"stateVariable":true,"storageLocation":"default","type":"contract OraclizeI","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"OraclizeI","referencedDeclaration":1692,"type":"contract OraclizeI"},"id":2233,"name":"UserDefinedTypeName","src":"10959:9:19"}],"id":2234,"name":"VariableDeclaration","src":"10959:18:19"},{"attributes":{"constant":false,"name":"OAR","scope":7853,"stateVariable":true,"storageLocation":"default","type":"contract OraclizeAddrResolverI","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"OraclizeAddrResolverI","referencedDeclaration":1698,"type":"contract OraclizeAddrResolverI"},"id":2235,"name":"UserDefinedTypeName","src":"10983:21:19"}],"id":2236,"name":"VariableDeclaration","src":"10983:25:19"},{"attributes":{"constant":true,"name":"day","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2237,"name":"ElementaryTypeName","src":"11015:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 86400"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 3600"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2238,"name":"Literal","src":"11035:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2239,"name":"Literal","src":"11040:2:19"}],"id":2240,"name":"BinaryOperation","src":"11035:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":2241,"name":"Literal","src":"11045:2:19"}],"id":2242,"name":"BinaryOperation","src":"11035:12:19"}],"id":2243,"name":"VariableDeclaration","src":"11015:32:19"},{"attributes":{"constant":true,"name":"week","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2244,"name":"ElementaryTypeName","src":"11053:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_604800_by_1","typeString":"int_const 604800"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 604800"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 86400"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 3600"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2245,"name":"Literal","src":"11074:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2246,"name":"Literal","src":"11079:2:19"}],"id":2247,"name":"BinaryOperation","src":"11074:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":2248,"name":"Literal","src":"11084:2:19"}],"id":2249,"name":"BinaryOperation","src":"11074:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":2250,"name":"Literal","src":"11089:1:19"}],"id":2251,"name":"BinaryOperation","src":"11074:16:19"}],"id":2252,"name":"VariableDeclaration","src":"11053:37:19"},{"attributes":{"constant":true,"name":"month","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2253,"name":"ElementaryTypeName","src":"11096:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_2592000_by_1","typeString":"int_const 2592000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 2592000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 86400"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_3600_by_1","typeString":"int_const 3600"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 3600"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2254,"name":"Literal","src":"11118:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":2255,"name":"Literal","src":"11123:2:19"}],"id":2256,"name":"BinaryOperation","src":"11118:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":2257,"name":"Literal","src":"11128:2:19"}],"id":2258,"name":"BinaryOperation","src":"11118:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 30","value":"30"},"id":2259,"name":"Literal","src":"11133:2:19"}],"id":2260,"name":"BinaryOperation","src":"11118:17:19"}],"id":2261,"name":"VariableDeclaration","src":"11096:39:19"},{"attributes":{"constant":true,"name":"proofType_NONE","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2262,"name":"ElementaryTypeName","src":"11142:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0x00"},"id":2263,"name":"Literal","src":"11173:4:19"}],"id":2264,"name":"VariableDeclaration","src":"11142:35:19"},{"attributes":{"constant":true,"name":"proofType_Ledger","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2265,"name":"ElementaryTypeName","src":"11183:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":2266,"name":"Literal","src":"11216:4:19"}],"id":2267,"name":"VariableDeclaration","src":"11183:37:19"},{"attributes":{"constant":true,"name":"proofType_Native","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2268,"name":"ElementaryTypeName","src":"11226:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":2269,"name":"Literal","src":"11259:4:19"}],"id":2270,"name":"VariableDeclaration","src":"11226:37:19"},{"attributes":{"constant":true,"name":"proofStorage_IPFS","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2271,"name":"ElementaryTypeName","src":"11269:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2272,"name":"Literal","src":"11303:4:19"}],"id":2273,"name":"VariableDeclaration","src":"11269:38:19"},{"attributes":{"constant":true,"name":"proofType_Android","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2274,"name":"ElementaryTypeName","src":"11313:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783430","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"0x40"},"id":2275,"name":"Literal","src":"11347:4:19"}],"id":2276,"name":"VariableDeclaration","src":"11313:38:19"},{"attributes":{"constant":true,"name":"proofType_TLSNotary","scope":7853,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":2277,"name":"ElementaryTypeName","src":"11357:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"0x10"},"id":2278,"name":"Literal","src":"11393:4:19"}],"id":2279,"name":"VariableDeclaration","src":"11357:40:19"},{"attributes":{"constant":false,"name":"oraclize_network_name","scope":7853,"stateVariable":true,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2280,"name":"ElementaryTypeName","src":"11404:6:19"}],"id":2281,"name":"VariableDeclaration","src":"11404:28:19"},{"attributes":{"constant":true,"name":"networkID_auto","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2282,"name":"ElementaryTypeName","src":"11438:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2283,"name":"Literal","src":"11470:1:19"}],"id":2284,"name":"VariableDeclaration","src":"11438:33:19"},{"attributes":{"constant":true,"name":"networkID_morden","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2285,"name":"ElementaryTypeName","src":"11477:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2286,"name":"Literal","src":"11511:1:19"}],"id":2287,"name":"VariableDeclaration","src":"11477:35:19"},{"attributes":{"constant":true,"name":"networkID_mainnet","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2288,"name":"ElementaryTypeName","src":"11518:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2289,"name":"Literal","src":"11553:1:19"}],"id":2290,"name":"VariableDeclaration","src":"11518:36:19"},{"attributes":{"constant":true,"name":"networkID_testnet","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2291,"name":"ElementaryTypeName","src":"11560:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2292,"name":"Literal","src":"11595:1:19"}],"id":2293,"name":"VariableDeclaration","src":"11560:36:19"},{"attributes":{"constant":true,"name":"networkID_consensys","scope":7853,"stateVariable":true,"storageLocation":"default","type":"uint8","visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2294,"name":"ElementaryTypeName","src":"11602:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"313631","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 161","value":"161"},"id":2295,"name":"Literal","src":"11639:3:19"}],"id":2296,"name":"VariableDeclaration","src":"11602:40:19"},{"attributes":{"constant":false,"name":"oraclize_randomDS_args","scope":7853,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes32)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes32)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2297,"name":"ElementaryTypeName","src":"11657:7:19"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":2298,"name":"ElementaryTypeName","src":"11668:7:19"}],"id":2299,"name":"Mapping","src":"11649:27:19"}],"id":2300,"name":"VariableDeclaration","src":"11649:50:19"},{"attributes":{"constant":false,"name":"oraclize_randomDS_sessionKeysHashVerified","scope":7853,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bool)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bool)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2301,"name":"ElementaryTypeName","src":"11713:7:19"},{"attributes":{"name":"bool","type":"bool"},"id":2302,"name":"ElementaryTypeName","src":"11724:4:19"}],"id":2303,"name":"Mapping","src":"11705:24:19"}],"id":2304,"name":"VariableDeclaration","src":"11705:66:19"},{"attributes":{"documentation":null,"name":"oraclizeAPI","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2305,"name":"ParameterList","src":"11799:0:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_OraclizeAddrResolverI_$1698","typeString":"contract OraclizeAddrResolverI"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2306,"name":"ElementaryTypeNameExpression","src":"11814:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2307,"name":"Identifier","src":"11822:3:19"}],"id":2308,"name":"FunctionCall","src":"11814:12:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2309,"name":"ElementaryTypeNameExpression","src":"11830:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2310,"name":"Literal","src":"11838:1:19"}],"id":2311,"name":"FunctionCall","src":"11830:10:19"}],"id":2312,"name":"BinaryOperation","src":"11814:26:19"}],"id":2313,"name":"TupleExpression","src":"11813:28:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2314,"name":"Identifier","src":"11846:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_OraclizeAddrResolverI_$1698","typeString":"contract OraclizeAddrResolverI"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2315,"name":"ElementaryTypeNameExpression","src":"11858:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2316,"name":"Identifier","src":"11866:3:19"}],"id":2317,"name":"FunctionCall","src":"11858:12:19"}],"id":2318,"name":"FunctionCall","src":"11846:25:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2319,"name":"Literal","src":"11875:1:19"}],"id":2320,"name":"BinaryOperation","src":"11846:30:19"}],"id":2321,"name":"TupleExpression","src":"11845:32:19"}],"id":2322,"name":"BinaryOperation","src":"11813:64:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"overloadedDeclarations":[2414,2580],"referencedDeclaration":2414,"type":"function (uint8) returns (bool)","value":"oraclize_setNetwork"},"id":2323,"name":"Identifier","src":"11893:19:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2284,"type":"uint8","value":"networkID_auto"},"id":2324,"name":"Identifier","src":"11913:14:19"}],"id":2325,"name":"FunctionCall","src":"11893:35:19"}],"id":2326,"name":"ExpressionStatement","src":"11893:35:19"}],"id":2327,"name":"Block","src":"11879:60:19"}],"id":2328,"name":"IfStatement","src":"11809:130:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_OraclizeI_$1692","typeString":"contract OraclizeI"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2329,"name":"ElementaryTypeNameExpression","src":"11952:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2330,"name":"Identifier","src":"11960:8:19"}],"id":2331,"name":"FunctionCall","src":"11952:17:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getAddress","referencedDeclaration":1697,"type":"function () external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2332,"name":"Identifier","src":"11973:3:19"}],"id":2333,"name":"MemberAccess","src":"11973:14:19"}],"id":2334,"name":"FunctionCall","src":"11973:16:19"}],"id":2335,"name":"BinaryOperation","src":"11952:37:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2336,"name":"Identifier","src":"12005:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1692,"type":"type(contract OraclizeI)","value":"OraclizeI"},"id":2337,"name":"Identifier","src":"12016:9:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getAddress","referencedDeclaration":1697,"type":"function () external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2338,"name":"Identifier","src":"12026:3:19"}],"id":2339,"name":"MemberAccess","src":"12026:14:19"}],"id":2340,"name":"FunctionCall","src":"12026:16:19"}],"id":2341,"name":"FunctionCall","src":"12016:27:19"}],"id":2342,"name":"Assignment","src":"12005:38:19"}],"id":2343,"name":"ExpressionStatement","src":"12005:38:19"}],"id":2344,"name":"Block","src":"11991:63:19"}],"id":2345,"name":"IfStatement","src":"11948:106:19"},{"id":2346,"name":"PlaceholderStatement","src":"12063:1:19"}],"id":2347,"name":"Block","src":"11799:272:19"}],"id":2348,"name":"ModifierDefinition","src":"11778:293:19"},{"attributes":{"documentation":null,"name":"oraclize_randomDS_proofVerify","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_queryId","scope":2401,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2349,"name":"ElementaryTypeName","src":"12116:7:19"}],"id":2350,"name":"VariableDeclaration","src":"12116:16:19"},{"attributes":{"constant":false,"name":"_result","scope":2401,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2351,"name":"ElementaryTypeName","src":"12134:6:19"}],"id":2352,"name":"VariableDeclaration","src":"12134:21:19"},{"attributes":{"constant":false,"name":"_proof","scope":2401,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2353,"name":"ElementaryTypeName","src":"12157:5:19"}],"id":2354,"name":"VariableDeclaration","src":"12157:19:19"}],"id":2355,"name":"ParameterList","src":"12115:62:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":2356,"name":"Identifier","src":"12280:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2354,"type":"bytes memory","value":"_proof"},"id":2357,"name":"Identifier","src":"12289:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2358,"name":"Literal","src":"12296:1:19"}],"id":2359,"name":"IndexAccess","src":"12289:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"4c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"L\"","value":"L"},"id":2360,"name":"Literal","src":"12302:3:19"}],"id":2361,"name":"BinaryOperation","src":"12289:16:19"}],"id":2362,"name":"TupleExpression","src":"12288:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2354,"type":"bytes memory","value":"_proof"},"id":2363,"name":"Identifier","src":"12311:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2364,"name":"Literal","src":"12318:1:19"}],"id":2365,"name":"IndexAccess","src":"12311:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"50","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"P\"","value":"P"},"id":2366,"name":"Literal","src":"12324:3:19"}],"id":2367,"name":"BinaryOperation","src":"12311:16:19"}],"id":2368,"name":"TupleExpression","src":"12310:18:19"}],"id":2369,"name":"BinaryOperation","src":"12288:40:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2370,"name":"ElementaryTypeNameExpression","src":"12333:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2354,"type":"bytes memory","value":"_proof"},"id":2371,"name":"Identifier","src":"12339:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2372,"name":"Literal","src":"12346:1:19"}],"id":2373,"name":"IndexAccess","src":"12339:9:19"}],"id":2374,"name":"FunctionCall","src":"12333:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":2375,"name":"ElementaryTypeNameExpression","src":"12353:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2376,"name":"Literal","src":"12359:1:19"}],"id":2377,"name":"FunctionCall","src":"12353:8:19"}],"id":2378,"name":"BinaryOperation","src":"12333:28:19"}],"id":2379,"name":"TupleExpression","src":"12332:30:19"}],"id":2380,"name":"BinaryOperation","src":"12288:74:19"}],"id":2381,"name":"FunctionCall","src":"12280:83:19"}],"id":2382,"name":"ExpressionStatement","src":"12280:83:19"},{"attributes":{"assignments":[2384]},"children":[{"attributes":{"constant":false,"name":"proofVerified","scope":2400,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2383,"name":"ElementaryTypeName","src":"12373:4:19"}],"id":2384,"name":"VariableDeclaration","src":"12373:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7693,"type":"function (bytes memory,bytes32,bytes memory,string memory) returns (bool)","value":"oraclize_randomDS_proofVerify__main"},"id":2385,"name":"Identifier","src":"12394:35:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2354,"type":"bytes memory","value":"_proof"},"id":2386,"name":"Identifier","src":"12430:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2350,"type":"bytes32","value":"_queryId"},"id":2387,"name":"Identifier","src":"12438:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2388,"name":"ElementaryTypeNameExpression","src":"12448:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2352,"type":"string memory","value":"_result"},"id":2389,"name":"Identifier","src":"12454:7:19"}],"id":2390,"name":"FunctionCall","src":"12448:14:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2432,"type":"function () view returns (string memory)","value":"oraclize_getNetworkName"},"id":2391,"name":"Identifier","src":"12464:23:19"}],"id":2392,"name":"FunctionCall","src":"12464:25:19"}],"id":2393,"name":"FunctionCall","src":"12394:96:19"}],"id":2394,"name":"VariableDeclarationStatement","src":"12373:117:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":2395,"name":"Identifier","src":"12500:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2384,"type":"bool","value":"proofVerified"},"id":2396,"name":"Identifier","src":"12508:13:19"}],"id":2397,"name":"FunctionCall","src":"12500:22:19"}],"id":2398,"name":"ExpressionStatement","src":"12500:22:19"},{"id":2399,"name":"PlaceholderStatement","src":"12532:1:19"}],"id":2400,"name":"Block","src":"12178:362:19"}],"id":2401,"name":"ModifierDefinition","src":"12077:463:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_setNetwork","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_networkID","scope":2414,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2402,"name":"ElementaryTypeName","src":"12575:5:19"}],"id":2403,"name":"VariableDeclaration","src":"12575:16:19"}],"id":2404,"name":"ParameterList","src":"12574:18:19"},{"children":[{"attributes":{"constant":false,"name":"_networkSet","scope":2414,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2405,"name":"ElementaryTypeName","src":"12611:4:19"}],"id":2406,"name":"VariableDeclaration","src":"12611:16:19"}],"id":2407,"name":"ParameterList","src":"12610:18:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"uint8","value":"_networkID"},"id":2408,"name":"Identifier","src":"12637:10:19"}],"id":2409,"name":"ExpressionStatement","src":"12637:10:19"},{"attributes":{"functionReturnParameters":2407},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[2414,2580],"referencedDeclaration":2580,"type":"function () returns (bool)","value":"oraclize_setNetwork"},"id":2410,"name":"Identifier","src":"12723:19:19"}],"id":2411,"name":"FunctionCall","src":"12723:21:19"}],"id":2412,"name":"Return","src":"12716:28:19"}],"id":2413,"name":"Block","src":"12629:122:19"}],"id":2414,"name":"FunctionDefinition","src":"12546:205:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_setNetworkName","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_network_name","scope":2424,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2415,"name":"ElementaryTypeName","src":"12790:6:19"}],"id":2416,"name":"VariableDeclaration","src":"12790:27:19"}],"id":2417,"name":"ParameterList","src":"12789:29:19"},{"attributes":{"parameters":[null]},"children":[],"id":2418,"name":"ParameterList","src":"12828:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2281,"type":"string storage ref","value":"oraclize_network_name"},"id":2419,"name":"Identifier","src":"12838:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2416,"type":"string memory","value":"_network_name"},"id":2420,"name":"Identifier","src":"12862:13:19"}],"id":2421,"name":"Assignment","src":"12838:37:19"}],"id":2422,"name":"ExpressionStatement","src":"12838:37:19"}],"id":2423,"name":"Block","src":"12828:54:19"}],"id":2424,"name":"FunctionDefinition","src":"12757:125:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_getNetworkName","scope":7853,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2425,"name":"ParameterList","src":"12920:2:19"},{"children":[{"attributes":{"constant":false,"name":"_networkName","scope":2432,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2426,"name":"ElementaryTypeName","src":"12946:6:19"}],"id":2427,"name":"VariableDeclaration","src":"12946:26:19"}],"id":2428,"name":"ParameterList","src":"12945:28:19"},{"children":[{"attributes":{"functionReturnParameters":2428},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2281,"type":"string storage ref","value":"oraclize_network_name"},"id":2429,"name":"Identifier","src":"12991:21:19"}],"id":2430,"name":"Return","src":"12984:28:19"}],"id":2431,"name":"Block","src":"12974:45:19"}],"id":2432,"name":"FunctionDefinition","src":"12888:131:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_setNetwork","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2433,"name":"ParameterList","src":"13053:2:19"},{"children":[{"attributes":{"constant":false,"name":"_networkSet","scope":2580,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2434,"name":"ElementaryTypeName","src":"13074:4:19"}],"id":2435,"name":"VariableDeclaration","src":"13074:16:19"}],"id":2436,"name":"ParameterList","src":"13073:18:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2437,"name":"Identifier","src":"13106:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307831643342323633386137634339663243423344323938413344413761393042363745353530366564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed"},"id":2438,"name":"Literal","src":"13118:42:19"}],"id":2439,"name":"FunctionCall","src":"13106:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2440,"name":"Literal","src":"13164:1:19"}],"id":2441,"name":"BinaryOperation","src":"13106:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2442,"name":"Identifier","src":"13191:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2443,"name":"Identifier","src":"13197:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307831643342323633386137634339663243423344323938413344413761393042363745353530366564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x1d3B2638a7cC9f2CB3D298A3DA7a90B67E5506ed"},"id":2444,"name":"Literal","src":"13219:42:19"}],"id":2445,"name":"FunctionCall","src":"13197:65:19"}],"id":2446,"name":"Assignment","src":"13191:71:19"}],"id":2447,"name":"ExpressionStatement","src":"13191:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_166a8b14211a981f35b8c1a0ccd1793ab8b02990816168f2e07c026e3cec6dbb","typeString":"literal_string \"eth_mainnet\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2448,"name":"Identifier","src":"13276:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f6d61696e6e6574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_mainnet\"","value":"eth_mainnet"},"id":2449,"name":"Literal","src":"13300:13:19"}],"id":2450,"name":"FunctionCall","src":"13276:38:19"}],"id":2451,"name":"ExpressionStatement","src":"13276:38:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2452,"name":"Literal","src":"13335:4:19"}],"id":2453,"name":"Return","src":"13328:11:19"}],"id":2454,"name":"Block","src":"13167:183:19"}],"id":2455,"name":"IfStatement","src":"13102:248:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2456,"name":"Identifier","src":"13363:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307863303341323631354435656661663546343946363042374242363538336561656332313266646631","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1"},"id":2457,"name":"Literal","src":"13375:42:19"}],"id":2458,"name":"FunctionCall","src":"13363:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2459,"name":"Literal","src":"13421:1:19"}],"id":2460,"name":"BinaryOperation","src":"13363:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2461,"name":"Identifier","src":"13456:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2462,"name":"Identifier","src":"13462:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307863303341323631354435656661663546343946363042374242363538336561656332313266646631","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xc03A2615D5efaf5F49F60B7BB6583eaec212fdf1"},"id":2463,"name":"Literal","src":"13484:42:19"}],"id":2464,"name":"FunctionCall","src":"13462:65:19"}],"id":2465,"name":"Assignment","src":"13456:71:19"}],"id":2466,"name":"ExpressionStatement","src":"13456:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e6d7ad12f793704da2b0e6be7ff3ba552c838441702c3dfed0dc46fdcc6223f3","typeString":"literal_string \"eth_ropsten3\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2467,"name":"Identifier","src":"13541:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f726f707374656e33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_ropsten3\"","value":"eth_ropsten3"},"id":2468,"name":"Literal","src":"13565:14:19"}],"id":2469,"name":"FunctionCall","src":"13541:39:19"}],"id":2470,"name":"ExpressionStatement","src":"13541:39:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2471,"name":"Literal","src":"13601:4:19"}],"id":2472,"name":"Return","src":"13594:11:19"}],"id":2473,"name":"Block","src":"13424:192:19"}],"id":2474,"name":"IfStatement","src":"13359:257:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2475,"name":"Identifier","src":"13629:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307842374130374263463242613266323730336232344330363931623532373839393943353941433765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e"},"id":2476,"name":"Literal","src":"13641:42:19"}],"id":2477,"name":"FunctionCall","src":"13629:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2478,"name":"Literal","src":"13687:1:19"}],"id":2479,"name":"BinaryOperation","src":"13629:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2480,"name":"Identifier","src":"13720:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2481,"name":"Identifier","src":"13726:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307842374130374263463242613266323730336232344330363931623532373839393943353941433765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xB7A07BcF2Ba2f2703b24C0691b5278999C59AC7e"},"id":2482,"name":"Literal","src":"13748:42:19"}],"id":2483,"name":"FunctionCall","src":"13726:65:19"}],"id":2484,"name":"Assignment","src":"13720:71:19"}],"id":2485,"name":"ExpressionStatement","src":"13720:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_da5c31bc586f77b6347024034556b408f03b750ee3f96529679e30db70e2e90d","typeString":"literal_string \"eth_kovan\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2486,"name":"Identifier","src":"13805:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f6b6f76616e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_kovan\"","value":"eth_kovan"},"id":2487,"name":"Literal","src":"13829:11:19"}],"id":2488,"name":"FunctionCall","src":"13805:36:19"}],"id":2489,"name":"ExpressionStatement","src":"13805:36:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2490,"name":"Literal","src":"13862:4:19"}],"id":2491,"name":"Return","src":"13855:11:19"}],"id":2492,"name":"Block","src":"13690:187:19"}],"id":2493,"name":"IfStatement","src":"13625:252:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2494,"name":"Identifier","src":"13890:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307831343635303063666433354232324534413339324665306144633036446531613133363845643438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x146500cfd35B22E4A392Fe0aDc06De1a1368Ed48"},"id":2495,"name":"Literal","src":"13902:42:19"}],"id":2496,"name":"FunctionCall","src":"13890:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2497,"name":"Literal","src":"13948:1:19"}],"id":2498,"name":"BinaryOperation","src":"13890:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2499,"name":"Identifier","src":"13983:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2500,"name":"Identifier","src":"13989:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307831343635303063666433354232324534413339324665306144633036446531613133363845643438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x146500cfd35B22E4A392Fe0aDc06De1a1368Ed48"},"id":2501,"name":"Literal","src":"14011:42:19"}],"id":2502,"name":"FunctionCall","src":"13989:65:19"}],"id":2503,"name":"Assignment","src":"13983:71:19"}],"id":2504,"name":"ExpressionStatement","src":"13983:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bcbda94ce7fd7b64b15e0074dc94e1f7d42828b0ba2b4a4854abb35899f64a25","typeString":"literal_string \"eth_rinkeby\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2505,"name":"Identifier","src":"14068:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f72696e6b656279","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_rinkeby\"","value":"eth_rinkeby"},"id":2506,"name":"Literal","src":"14092:13:19"}],"id":2507,"name":"FunctionCall","src":"14068:38:19"}],"id":2508,"name":"ExpressionStatement","src":"14068:38:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2509,"name":"Literal","src":"14127:4:19"}],"id":2510,"name":"Return","src":"14120:11:19"}],"id":2511,"name":"Block","src":"13951:191:19"}],"id":2512,"name":"IfStatement","src":"13886:256:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2513,"name":"Identifier","src":"14155:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307861323939384546443230354642394434423439363361466237303737384436333534616433413431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xa2998EFD205FB9D4B4963aFb70778D6354ad3A41"},"id":2514,"name":"Literal","src":"14167:42:19"}],"id":2515,"name":"FunctionCall","src":"14155:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2516,"name":"Literal","src":"14213:1:19"}],"id":2517,"name":"BinaryOperation","src":"14155:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2518,"name":"Identifier","src":"14247:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2519,"name":"Identifier","src":"14253:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307861323939384546443230354642394434423439363361466237303737384436333534616433413431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xa2998EFD205FB9D4B4963aFb70778D6354ad3A41"},"id":2520,"name":"Literal","src":"14275:42:19"}],"id":2521,"name":"FunctionCall","src":"14253:65:19"}],"id":2522,"name":"Assignment","src":"14247:71:19"}],"id":2523,"name":"ExpressionStatement","src":"14247:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_1b4648d301ee4636cab65035e5f41ba61127a4bb9195ab098bb23f6ec22c9c96","typeString":"literal_string \"eth_goerli\""}],"overloadedDeclarations":[null],"referencedDeclaration":2424,"type":"function (string memory)","value":"oraclize_setNetworkName"},"id":2524,"name":"Identifier","src":"14332:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"6574685f676f65726c69","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"eth_goerli\"","value":"eth_goerli"},"id":2525,"name":"Literal","src":"14356:12:19"}],"id":2526,"name":"FunctionCall","src":"14332:37:19"}],"id":2527,"name":"ExpressionStatement","src":"14332:37:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2528,"name":"Literal","src":"14390:4:19"}],"id":2529,"name":"Return","src":"14383:11:19"}],"id":2530,"name":"Block","src":"14216:189:19"}],"id":2531,"name":"IfStatement","src":"14151:254:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2532,"name":"Identifier","src":"14418:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307836663438354338424636666334336541323132453933424246386365303436433766316362343735","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475"},"id":2533,"name":"Literal","src":"14430:42:19"}],"id":2534,"name":"FunctionCall","src":"14418:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2535,"name":"Literal","src":"14476:1:19"}],"id":2536,"name":"BinaryOperation","src":"14418:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2537,"name":"Identifier","src":"14511:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2538,"name":"Identifier","src":"14517:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307836663438354338424636666334336541323132453933424246386365303436433766316362343735","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x6f485C8BF6fc43eA212E93BBF8ce046C7f1cb475"},"id":2539,"name":"Literal","src":"14539:42:19"}],"id":2540,"name":"FunctionCall","src":"14517:65:19"}],"id":2541,"name":"Assignment","src":"14511:71:19"}],"id":2542,"name":"ExpressionStatement","src":"14511:71:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2543,"name":"Literal","src":"14603:4:19"}],"id":2544,"name":"Return","src":"14596:11:19"}],"id":2545,"name":"Block","src":"14479:139:19"}],"id":2546,"name":"IfStatement","src":"14414:204:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2547,"name":"Identifier","src":"14631:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307832306531324131463835394233466561453546623241304133324331384635613635353535624246","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF"},"id":2548,"name":"Literal","src":"14643:42:19"}],"id":2549,"name":"FunctionCall","src":"14631:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2550,"name":"Literal","src":"14689:1:19"}],"id":2551,"name":"BinaryOperation","src":"14631:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2552,"name":"Identifier","src":"14723:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2553,"name":"Identifier","src":"14729:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307832306531324131463835394233466561453546623241304133324331384635613635353535624246","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x20e12A1F859B3FeaE5Fb2A0A32C18F5a65555bBF"},"id":2554,"name":"Literal","src":"14751:42:19"}],"id":2555,"name":"FunctionCall","src":"14729:65:19"}],"id":2556,"name":"Assignment","src":"14723:71:19"}],"id":2557,"name":"ExpressionStatement","src":"14723:71:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2558,"name":"Literal","src":"14815:4:19"}],"id":2559,"name":"Return","src":"14808:11:19"}],"id":2560,"name":"Block","src":"14692:138:19"}],"id":2561,"name":"IfStatement","src":"14627:203:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5685,"type":"function (address) view returns (uint256)","value":"getCodeSize"},"id":2562,"name":"Identifier","src":"14843:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307835316566614634633842334339416642443561423946346262433832373834416236656638664141","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA"},"id":2563,"name":"Literal","src":"14855:42:19"}],"id":2564,"name":"FunctionCall","src":"14843:55:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2565,"name":"Literal","src":"14901:1:19"}],"id":2566,"name":"BinaryOperation","src":"14843:59:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":2567,"name":"Identifier","src":"14937:3:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":2568,"name":"Identifier","src":"14943:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"307835316566614634633842334339416642443561423946346262433832373834416236656638664141","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0x51efaF4c8B3C9AfBD5aB9F4bbC82784Ab6ef8fAA"},"id":2569,"name":"Literal","src":"14965:42:19"}],"id":2570,"name":"FunctionCall","src":"14943:65:19"}],"id":2571,"name":"Assignment","src":"14937:71:19"}],"id":2572,"name":"ExpressionStatement","src":"14937:71:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2573,"name":"Literal","src":"15029:4:19"}],"id":2574,"name":"Return","src":"15022:11:19"}],"id":2575,"name":"Block","src":"14904:140:19"}],"id":2576,"name":"IfStatement","src":"14839:205:19"},{"attributes":{"functionReturnParameters":2436},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2577,"name":"Literal","src":"15060:5:19"}],"id":2578,"name":"Return","src":"15053:12:19"}],"id":2579,"name":"Block","src":"13092:1980:19"}],"id":2580,"name":"FunctionDefinition","src":"13025:2047:19"},{"attributes":{"documentation":"@dev The following `__callback` functions are just placeholders ideally\n meant to be defined in child contract when proofs are used.\n The function bodies simply silence compiler warnings.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"__callback","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_myid","scope":2606,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2581,"name":"ElementaryTypeName","src":"15464:7:19"}],"id":2582,"name":"VariableDeclaration","src":"15464:13:19"},{"attributes":{"constant":false,"name":"_result","scope":2606,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2583,"name":"ElementaryTypeName","src":"15479:6:19"}],"id":2584,"name":"VariableDeclaration","src":"15479:21:19"},{"attributes":{"constant":false,"name":"_proof","scope":2606,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2585,"name":"ElementaryTypeName","src":"15502:5:19"}],"id":2586,"name":"VariableDeclaration","src":"15502:19:19"}],"id":2587,"name":"ParameterList","src":"15463:59:19"},{"attributes":{"parameters":[null]},"children":[],"id":2588,"name":"ParameterList","src":"15530:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2582,"type":"bytes32","value":"_myid"},"id":2589,"name":"Identifier","src":"15538:5:19"}],"id":2590,"name":"ExpressionStatement","src":"15538:5:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2584,"type":"string memory","value":"_result"},"id":2591,"name":"Identifier","src":"15545:7:19"}],"id":2592,"name":"ExpressionStatement","src":"15545:7:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2586,"type":"bytes memory","value":"_proof"},"id":2593,"name":"Identifier","src":"15554:6:19"}],"id":2594,"name":"ExpressionStatement","src":"15554:6:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2300,"type":"mapping(bytes32 => bytes32)","value":"oraclize_randomDS_args"},"id":2595,"name":"Identifier","src":"15568:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2596,"name":"ElementaryTypeNameExpression","src":"15591:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2597,"name":"Literal","src":"15599:1:19"}],"id":2598,"name":"FunctionCall","src":"15591:10:19"}],"id":2599,"name":"IndexAccess","src":"15568:34:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2600,"name":"ElementaryTypeNameExpression","src":"15605:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2601,"name":"Literal","src":"15613:1:19"}],"id":2602,"name":"FunctionCall","src":"15605:10:19"}],"id":2603,"name":"Assignment","src":"15568:47:19"}],"id":2604,"name":"ExpressionStatement","src":"15568:47:19"}],"id":2605,"name":"Block","src":"15530:92:19"}],"id":2606,"name":"FunctionDefinition","src":"15444:178:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_getPrice","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2621,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2607,"name":"ElementaryTypeName","src":"15655:6:19"}],"id":2608,"name":"VariableDeclaration","src":"15655:25:19"}],"id":2609,"name":"ParameterList","src":"15654:27:19"},{"children":[{"attributes":{"constant":false,"name":"_queryPrice","scope":2621,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2612,"name":"ElementaryTypeName","src":"15712:4:19"}],"id":2613,"name":"VariableDeclaration","src":"15712:16:19"}],"id":2614,"name":"ParameterList","src":"15711:18:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2610,"name":"Identifier","src":"15682:11:19"}],"id":2611,"name":"ModifierInvocation","src":"15682:11:19"},{"children":[{"attributes":{"functionReturnParameters":2614},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2615,"name":"Identifier","src":"15747:8:19"}],"id":2616,"name":"MemberAccess","src":"15747:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2608,"type":"string memory","value":"_datasource"},"id":2617,"name":"Identifier","src":"15765:11:19"}],"id":2618,"name":"FunctionCall","src":"15747:30:19"}],"id":2619,"name":"Return","src":"15740:37:19"}],"id":2620,"name":"Block","src":"15730:54:19"}],"id":2621,"name":"FunctionDefinition","src":"15628:156:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_getPrice","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2639,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2622,"name":"ElementaryTypeName","src":"15817:6:19"}],"id":2623,"name":"VariableDeclaration","src":"15817:25:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":2639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2624,"name":"ElementaryTypeName","src":"15844:4:19"}],"id":2625,"name":"VariableDeclaration","src":"15844:14:19"}],"id":2626,"name":"ParameterList","src":"15816:43:19"},{"children":[{"attributes":{"constant":false,"name":"_queryPrice","scope":2639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2629,"name":"ElementaryTypeName","src":"15890:4:19"}],"id":2630,"name":"VariableDeclaration","src":"15890:16:19"}],"id":2631,"name":"ParameterList","src":"15889:18:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2627,"name":"Identifier","src":"15860:11:19"}],"id":2628,"name":"ModifierInvocation","src":"15860:11:19"},{"children":[{"attributes":{"functionReturnParameters":2631},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2632,"name":"Identifier","src":"15925:8:19"}],"id":2633,"name":"MemberAccess","src":"15925:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2623,"type":"string memory","value":"_datasource"},"id":2634,"name":"Identifier","src":"15943:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2625,"type":"uint256","value":"_gasLimit"},"id":2635,"name":"Identifier","src":"15956:9:19"}],"id":2636,"name":"FunctionCall","src":"15925:41:19"}],"id":2637,"name":"Return","src":"15918:48:19"}],"id":2638,"name":"Block","src":"15908:65:19"}],"id":2639,"name":"FunctionDefinition","src":"15790:183:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2680,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2640,"name":"ElementaryTypeName","src":"16003:6:19"}],"id":2641,"name":"VariableDeclaration","src":"16003:25:19"},{"attributes":{"constant":false,"name":"_arg","scope":2680,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2642,"name":"ElementaryTypeName","src":"16030:6:19"}],"id":2643,"name":"VariableDeclaration","src":"16030:18:19"}],"id":2644,"name":"ParameterList","src":"16002:47:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2680,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2647,"name":"ElementaryTypeName","src":"16080:7:19"}],"id":2648,"name":"VariableDeclaration","src":"16080:11:19"}],"id":2649,"name":"ParameterList","src":"16079:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2645,"name":"Identifier","src":"16050:11:19"}],"id":2646,"name":"ModifierInvocation","src":"16050:11:19"},{"children":[{"attributes":{"assignments":[2651]},"children":[{"attributes":{"constant":false,"name":"price","scope":2679,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2650,"name":"ElementaryTypeName","src":"16103:4:19"}],"id":2651,"name":"VariableDeclaration","src":"16103:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2652,"name":"Identifier","src":"16116:8:19"}],"id":2653,"name":"MemberAccess","src":"16116:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2641,"type":"string memory","value":"_datasource"},"id":2654,"name":"Identifier","src":"16134:11:19"}],"id":2655,"name":"FunctionCall","src":"16116:30:19"}],"id":2656,"name":"VariableDeclarationStatement","src":"16103:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"uint256","value":"price"},"id":2657,"name":"Identifier","src":"16160:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2658,"name":"Literal","src":"16168:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2659,"name":"Identifier","src":"16178:2:19"}],"id":2660,"name":"MemberAccess","src":"16178:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":2661,"name":"Literal","src":"16192:6:19"}],"id":2662,"name":"BinaryOperation","src":"16178:20:19"}],"id":2663,"name":"BinaryOperation","src":"16168:30:19"}],"id":2664,"name":"BinaryOperation","src":"16160:38:19"},{"children":[{"attributes":{"functionReturnParameters":2649},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2665,"name":"Literal","src":"16221:1:19"}],"id":2666,"name":"Return","src":"16214:8:19"}],"id":2667,"name":"Block","src":"16200:60:19"}],"id":2668,"name":"IfStatement","src":"16156:104:19"},{"attributes":{"functionReturnParameters":2649},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query","referencedDeclaration":1637,"type":"function (uint256,string memory,string memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2669,"name":"Identifier","src":"16276:8:19"}],"id":2670,"name":"MemberAccess","src":"16276:14:19"}],"id":2671,"name":"MemberAccess","src":"16276:20:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"uint256","value":"price"},"id":2672,"name":"Identifier","src":"16297:5:19"}],"id":2673,"name":"FunctionCall","src":"16276:27:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2674,"name":"Literal","src":"16304:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2641,"type":"string memory","value":"_datasource"},"id":2675,"name":"Identifier","src":"16307:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2643,"type":"string memory","value":"_arg"},"id":2676,"name":"Identifier","src":"16320:4:19"}],"id":2677,"name":"FunctionCall","src":"16276:49:19"}],"id":2678,"name":"Return","src":"16269:56:19"}],"id":2679,"name":"Block","src":"16093:239:19"}],"id":2680,"name":"FunctionDefinition","src":"15979:353:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":2723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2681,"name":"ElementaryTypeName","src":"16362:4:19"}],"id":2682,"name":"VariableDeclaration","src":"16362:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":2723,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2683,"name":"ElementaryTypeName","src":"16379:6:19"}],"id":2684,"name":"VariableDeclaration","src":"16379:25:19"},{"attributes":{"constant":false,"name":"_arg","scope":2723,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2685,"name":"ElementaryTypeName","src":"16406:6:19"}],"id":2686,"name":"VariableDeclaration","src":"16406:18:19"}],"id":2687,"name":"ParameterList","src":"16361:64:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2723,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2690,"name":"ElementaryTypeName","src":"16456:7:19"}],"id":2691,"name":"VariableDeclaration","src":"16456:11:19"}],"id":2692,"name":"ParameterList","src":"16455:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2688,"name":"Identifier","src":"16426:11:19"}],"id":2689,"name":"ModifierInvocation","src":"16426:11:19"},{"children":[{"attributes":{"assignments":[2694]},"children":[{"attributes":{"constant":false,"name":"price","scope":2722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2693,"name":"ElementaryTypeName","src":"16479:4:19"}],"id":2694,"name":"VariableDeclaration","src":"16479:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2695,"name":"Identifier","src":"16492:8:19"}],"id":2696,"name":"MemberAccess","src":"16492:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2684,"type":"string memory","value":"_datasource"},"id":2697,"name":"Identifier","src":"16510:11:19"}],"id":2698,"name":"FunctionCall","src":"16492:30:19"}],"id":2699,"name":"VariableDeclarationStatement","src":"16479:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2694,"type":"uint256","value":"price"},"id":2700,"name":"Identifier","src":"16536:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2701,"name":"Literal","src":"16544:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2702,"name":"Identifier","src":"16554:2:19"}],"id":2703,"name":"MemberAccess","src":"16554:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":2704,"name":"Literal","src":"16568:6:19"}],"id":2705,"name":"BinaryOperation","src":"16554:20:19"}],"id":2706,"name":"BinaryOperation","src":"16544:30:19"}],"id":2707,"name":"BinaryOperation","src":"16536:38:19"},{"children":[{"attributes":{"functionReturnParameters":2692},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2708,"name":"Literal","src":"16597:1:19"}],"id":2709,"name":"Return","src":"16590:8:19"}],"id":2710,"name":"Block","src":"16576:60:19"}],"id":2711,"name":"IfStatement","src":"16532:104:19"},{"attributes":{"functionReturnParameters":2692},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query","referencedDeclaration":1637,"type":"function (uint256,string memory,string memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2712,"name":"Identifier","src":"16652:8:19"}],"id":2713,"name":"MemberAccess","src":"16652:14:19"}],"id":2714,"name":"MemberAccess","src":"16652:20:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2694,"type":"uint256","value":"price"},"id":2715,"name":"Identifier","src":"16673:5:19"}],"id":2716,"name":"FunctionCall","src":"16652:27:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2682,"type":"uint256","value":"_timestamp"},"id":2717,"name":"Identifier","src":"16680:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2684,"type":"string memory","value":"_datasource"},"id":2718,"name":"Identifier","src":"16692:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2686,"type":"string memory","value":"_arg"},"id":2719,"name":"Identifier","src":"16705:4:19"}],"id":2720,"name":"FunctionCall","src":"16652:58:19"}],"id":2721,"name":"Return","src":"16645:65:19"}],"id":2722,"name":"Block","src":"16469:248:19"}],"id":2723,"name":"FunctionDefinition","src":"16338:379:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":2770,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2724,"name":"ElementaryTypeName","src":"16747:4:19"}],"id":2725,"name":"VariableDeclaration","src":"16747:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":2770,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2726,"name":"ElementaryTypeName","src":"16764:6:19"}],"id":2727,"name":"VariableDeclaration","src":"16764:25:19"},{"attributes":{"constant":false,"name":"_arg","scope":2770,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2728,"name":"ElementaryTypeName","src":"16791:6:19"}],"id":2729,"name":"VariableDeclaration","src":"16791:18:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":2770,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2730,"name":"ElementaryTypeName","src":"16811:4:19"}],"id":2731,"name":"VariableDeclaration","src":"16811:14:19"}],"id":2732,"name":"ParameterList","src":"16746:80:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2770,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2735,"name":"ElementaryTypeName","src":"16857:7:19"}],"id":2736,"name":"VariableDeclaration","src":"16857:11:19"}],"id":2737,"name":"ParameterList","src":"16856:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2733,"name":"Identifier","src":"16827:11:19"}],"id":2734,"name":"ModifierInvocation","src":"16827:11:19"},{"children":[{"attributes":{"assignments":[2739]},"children":[{"attributes":{"constant":false,"name":"price","scope":2769,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2738,"name":"ElementaryTypeName","src":"16880:4:19"}],"id":2739,"name":"VariableDeclaration","src":"16880:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2740,"name":"Identifier","src":"16893:8:19"}],"id":2741,"name":"MemberAccess","src":"16893:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2727,"type":"string memory","value":"_datasource"},"id":2742,"name":"Identifier","src":"16911:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2731,"type":"uint256","value":"_gasLimit"},"id":2743,"name":"Identifier","src":"16923:9:19"}],"id":2744,"name":"FunctionCall","src":"16893:40:19"}],"id":2745,"name":"VariableDeclarationStatement","src":"16880:53:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"price"},"id":2746,"name":"Identifier","src":"16947:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2747,"name":"Literal","src":"16955:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2748,"name":"Identifier","src":"16965:2:19"}],"id":2749,"name":"MemberAccess","src":"16965:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2731,"type":"uint256","value":"_gasLimit"},"id":2750,"name":"Identifier","src":"16979:9:19"}],"id":2751,"name":"BinaryOperation","src":"16965:23:19"}],"id":2752,"name":"BinaryOperation","src":"16955:33:19"}],"id":2753,"name":"BinaryOperation","src":"16947:41:19"},{"children":[{"attributes":{"functionReturnParameters":2737},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2754,"name":"Literal","src":"17011:1:19"}],"id":2755,"name":"Return","src":"17004:8:19"}],"id":2756,"name":"Block","src":"16990:60:19"}],"id":2757,"name":"IfStatement","src":"16943:107:19"},{"attributes":{"functionReturnParameters":2737},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query_withGasLimit","referencedDeclaration":1663,"type":"function (uint256,string memory,string memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2758,"name":"Identifier","src":"17066:8:19"}],"id":2759,"name":"MemberAccess","src":"17066:27:19"}],"id":2760,"name":"MemberAccess","src":"17066:33:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"price"},"id":2761,"name":"Identifier","src":"17100:5:19"}],"id":2762,"name":"FunctionCall","src":"17066:40:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2725,"type":"uint256","value":"_timestamp"},"id":2763,"name":"Identifier","src":"17107:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2727,"type":"string memory","value":"_datasource"},"id":2764,"name":"Identifier","src":"17119:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2729,"type":"string memory","value":"_arg"},"id":2765,"name":"Identifier","src":"17132:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2731,"type":"uint256","value":"_gasLimit"},"id":2766,"name":"Identifier","src":"17138:9:19"}],"id":2767,"name":"FunctionCall","src":"17066:82:19"}],"id":2768,"name":"Return","src":"17059:89:19"}],"id":2769,"name":"Block","src":"16870:285:19"}],"id":2770,"name":"FunctionDefinition","src":"16723:432:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2815,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2771,"name":"ElementaryTypeName","src":"17185:6:19"}],"id":2772,"name":"VariableDeclaration","src":"17185:25:19"},{"attributes":{"constant":false,"name":"_arg","scope":2815,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2773,"name":"ElementaryTypeName","src":"17212:6:19"}],"id":2774,"name":"VariableDeclaration","src":"17212:18:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":2815,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2775,"name":"ElementaryTypeName","src":"17232:4:19"}],"id":2776,"name":"VariableDeclaration","src":"17232:14:19"}],"id":2777,"name":"ParameterList","src":"17184:63:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2815,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2780,"name":"ElementaryTypeName","src":"17278:7:19"}],"id":2781,"name":"VariableDeclaration","src":"17278:11:19"}],"id":2782,"name":"ParameterList","src":"17277:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2778,"name":"Identifier","src":"17248:11:19"}],"id":2779,"name":"ModifierInvocation","src":"17248:11:19"},{"children":[{"attributes":{"assignments":[2784]},"children":[{"attributes":{"constant":false,"name":"price","scope":2814,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2783,"name":"ElementaryTypeName","src":"17301:4:19"}],"id":2784,"name":"VariableDeclaration","src":"17301:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2785,"name":"Identifier","src":"17314:8:19"}],"id":2786,"name":"MemberAccess","src":"17314:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2772,"type":"string memory","value":"_datasource"},"id":2787,"name":"Identifier","src":"17332:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"uint256","value":"_gasLimit"},"id":2788,"name":"Identifier","src":"17345:9:19"}],"id":2789,"name":"FunctionCall","src":"17314:41:19"}],"id":2790,"name":"VariableDeclarationStatement","src":"17301:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"price"},"id":2791,"name":"Identifier","src":"17369:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2792,"name":"Literal","src":"17377:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2793,"name":"Identifier","src":"17387:2:19"}],"id":2794,"name":"MemberAccess","src":"17387:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"uint256","value":"_gasLimit"},"id":2795,"name":"Identifier","src":"17401:9:19"}],"id":2796,"name":"BinaryOperation","src":"17387:23:19"}],"id":2797,"name":"BinaryOperation","src":"17377:33:19"}],"id":2798,"name":"BinaryOperation","src":"17369:41:19"},{"children":[{"attributes":{"functionReturnParameters":2782},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2799,"name":"Literal","src":"17432:1:19"}],"id":2800,"name":"Return","src":"17425:8:19"}],"id":2801,"name":"Block","src":"17412:59:19"}],"id":2802,"name":"IfStatement","src":"17365:106:19"},{"attributes":{"functionReturnParameters":2782},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query_withGasLimit","referencedDeclaration":1663,"type":"function (uint256,string memory,string memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2803,"name":"Identifier","src":"17487:8:19"}],"id":2804,"name":"MemberAccess","src":"17487:27:19"}],"id":2805,"name":"MemberAccess","src":"17487:33:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"price"},"id":2806,"name":"Identifier","src":"17521:5:19"}],"id":2807,"name":"FunctionCall","src":"17487:40:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2808,"name":"Literal","src":"17528:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2772,"type":"string memory","value":"_datasource"},"id":2809,"name":"Identifier","src":"17531:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2774,"type":"string memory","value":"_arg"},"id":2810,"name":"Identifier","src":"17544:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"uint256","value":"_gasLimit"},"id":2811,"name":"Identifier","src":"17550:9:19"}],"id":2812,"name":"FunctionCall","src":"17487:73:19"}],"id":2813,"name":"Return","src":"17480:80:19"}],"id":2814,"name":"Block","src":"17291:276:19"}],"id":2815,"name":"FunctionDefinition","src":"17161:406:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":2859,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2816,"name":"ElementaryTypeName","src":"17597:6:19"}],"id":2817,"name":"VariableDeclaration","src":"17597:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":2859,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2818,"name":"ElementaryTypeName","src":"17624:6:19"}],"id":2819,"name":"VariableDeclaration","src":"17624:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":2859,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2820,"name":"ElementaryTypeName","src":"17645:6:19"}],"id":2821,"name":"VariableDeclaration","src":"17645:19:19"}],"id":2822,"name":"ParameterList","src":"17596:69:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2859,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2825,"name":"ElementaryTypeName","src":"17696:7:19"}],"id":2826,"name":"VariableDeclaration","src":"17696:11:19"}],"id":2827,"name":"ParameterList","src":"17695:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2823,"name":"Identifier","src":"17666:11:19"}],"id":2824,"name":"ModifierInvocation","src":"17666:11:19"},{"children":[{"attributes":{"assignments":[2829]},"children":[{"attributes":{"constant":false,"name":"price","scope":2858,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2828,"name":"ElementaryTypeName","src":"17719:4:19"}],"id":2829,"name":"VariableDeclaration","src":"17719:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2830,"name":"Identifier","src":"17732:8:19"}],"id":2831,"name":"MemberAccess","src":"17732:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2817,"type":"string memory","value":"_datasource"},"id":2832,"name":"Identifier","src":"17750:11:19"}],"id":2833,"name":"FunctionCall","src":"17732:30:19"}],"id":2834,"name":"VariableDeclarationStatement","src":"17719:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2829,"type":"uint256","value":"price"},"id":2835,"name":"Identifier","src":"17776:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2836,"name":"Literal","src":"17784:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2837,"name":"Identifier","src":"17794:2:19"}],"id":2838,"name":"MemberAccess","src":"17794:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":2839,"name":"Literal","src":"17808:6:19"}],"id":2840,"name":"BinaryOperation","src":"17794:20:19"}],"id":2841,"name":"BinaryOperation","src":"17784:30:19"}],"id":2842,"name":"BinaryOperation","src":"17776:38:19"},{"children":[{"attributes":{"functionReturnParameters":2827},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2843,"name":"Literal","src":"17837:1:19"}],"id":2844,"name":"Return","src":"17830:8:19"}],"id":2845,"name":"Block","src":"17816:60:19"}],"id":2846,"name":"IfStatement","src":"17772:104:19"},{"attributes":{"functionReturnParameters":2827},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,string memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,string memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query2","referencedDeclaration":1650,"type":"function (uint256,string memory,string memory,string memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2847,"name":"Identifier","src":"17892:8:19"}],"id":2848,"name":"MemberAccess","src":"17892:15:19"}],"id":2849,"name":"MemberAccess","src":"17892:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2829,"type":"uint256","value":"price"},"id":2850,"name":"Identifier","src":"17914:5:19"}],"id":2851,"name":"FunctionCall","src":"17892:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2852,"name":"Literal","src":"17921:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2817,"type":"string memory","value":"_datasource"},"id":2853,"name":"Identifier","src":"17924:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2819,"type":"string memory","value":"_arg1"},"id":2854,"name":"Identifier","src":"17937:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2821,"type":"string memory","value":"_arg2"},"id":2855,"name":"Identifier","src":"17944:5:19"}],"id":2856,"name":"FunctionCall","src":"17892:58:19"}],"id":2857,"name":"Return","src":"17885:65:19"}],"id":2858,"name":"Block","src":"17709:248:19"}],"id":2859,"name":"FunctionDefinition","src":"17573:384:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":2905,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2860,"name":"ElementaryTypeName","src":"17987:4:19"}],"id":2861,"name":"VariableDeclaration","src":"17987:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":2905,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2862,"name":"ElementaryTypeName","src":"18004:6:19"}],"id":2863,"name":"VariableDeclaration","src":"18004:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":2905,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2864,"name":"ElementaryTypeName","src":"18031:6:19"}],"id":2865,"name":"VariableDeclaration","src":"18031:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":2905,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2866,"name":"ElementaryTypeName","src":"18052:6:19"}],"id":2867,"name":"VariableDeclaration","src":"18052:19:19"}],"id":2868,"name":"ParameterList","src":"17986:86:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2905,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2871,"name":"ElementaryTypeName","src":"18103:7:19"}],"id":2872,"name":"VariableDeclaration","src":"18103:11:19"}],"id":2873,"name":"ParameterList","src":"18102:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2869,"name":"Identifier","src":"18073:11:19"}],"id":2870,"name":"ModifierInvocation","src":"18073:11:19"},{"children":[{"attributes":{"assignments":[2875]},"children":[{"attributes":{"constant":false,"name":"price","scope":2904,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2874,"name":"ElementaryTypeName","src":"18126:4:19"}],"id":2875,"name":"VariableDeclaration","src":"18126:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2876,"name":"Identifier","src":"18139:8:19"}],"id":2877,"name":"MemberAccess","src":"18139:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2863,"type":"string memory","value":"_datasource"},"id":2878,"name":"Identifier","src":"18157:11:19"}],"id":2879,"name":"FunctionCall","src":"18139:30:19"}],"id":2880,"name":"VariableDeclarationStatement","src":"18126:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2875,"type":"uint256","value":"price"},"id":2881,"name":"Identifier","src":"18183:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2882,"name":"Literal","src":"18191:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2883,"name":"Identifier","src":"18201:2:19"}],"id":2884,"name":"MemberAccess","src":"18201:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":2885,"name":"Literal","src":"18215:6:19"}],"id":2886,"name":"BinaryOperation","src":"18201:20:19"}],"id":2887,"name":"BinaryOperation","src":"18191:30:19"}],"id":2888,"name":"BinaryOperation","src":"18183:38:19"},{"children":[{"attributes":{"functionReturnParameters":2873},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2889,"name":"Literal","src":"18244:1:19"}],"id":2890,"name":"Return","src":"18237:8:19"}],"id":2891,"name":"Block","src":"18223:60:19"}],"id":2892,"name":"IfStatement","src":"18179:104:19"},{"attributes":{"functionReturnParameters":2873},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,string memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,string memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query2","referencedDeclaration":1650,"type":"function (uint256,string memory,string memory,string memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2893,"name":"Identifier","src":"18299:8:19"}],"id":2894,"name":"MemberAccess","src":"18299:15:19"}],"id":2895,"name":"MemberAccess","src":"18299:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2875,"type":"uint256","value":"price"},"id":2896,"name":"Identifier","src":"18321:5:19"}],"id":2897,"name":"FunctionCall","src":"18299:28:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2861,"type":"uint256","value":"_timestamp"},"id":2898,"name":"Identifier","src":"18328:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2863,"type":"string memory","value":"_datasource"},"id":2899,"name":"Identifier","src":"18340:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2865,"type":"string memory","value":"_arg1"},"id":2900,"name":"Identifier","src":"18353:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2867,"type":"string memory","value":"_arg2"},"id":2901,"name":"Identifier","src":"18360:5:19"}],"id":2902,"name":"FunctionCall","src":"18299:67:19"}],"id":2903,"name":"Return","src":"18292:74:19"}],"id":2904,"name":"Block","src":"18116:257:19"}],"id":2905,"name":"FunctionDefinition","src":"17963:410:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":2955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2906,"name":"ElementaryTypeName","src":"18403:4:19"}],"id":2907,"name":"VariableDeclaration","src":"18403:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":2955,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2908,"name":"ElementaryTypeName","src":"18420:6:19"}],"id":2909,"name":"VariableDeclaration","src":"18420:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":2955,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2910,"name":"ElementaryTypeName","src":"18447:6:19"}],"id":2911,"name":"VariableDeclaration","src":"18447:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":2955,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2912,"name":"ElementaryTypeName","src":"18468:6:19"}],"id":2913,"name":"VariableDeclaration","src":"18468:19:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":2955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2914,"name":"ElementaryTypeName","src":"18489:4:19"}],"id":2915,"name":"VariableDeclaration","src":"18489:14:19"}],"id":2916,"name":"ParameterList","src":"18402:102:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":2955,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2919,"name":"ElementaryTypeName","src":"18535:7:19"}],"id":2920,"name":"VariableDeclaration","src":"18535:11:19"}],"id":2921,"name":"ParameterList","src":"18534:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2917,"name":"Identifier","src":"18505:11:19"}],"id":2918,"name":"ModifierInvocation","src":"18505:11:19"},{"children":[{"attributes":{"assignments":[2923]},"children":[{"attributes":{"constant":false,"name":"price","scope":2954,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2922,"name":"ElementaryTypeName","src":"18558:4:19"}],"id":2923,"name":"VariableDeclaration","src":"18558:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2924,"name":"Identifier","src":"18571:8:19"}],"id":2925,"name":"MemberAccess","src":"18571:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2909,"type":"string memory","value":"_datasource"},"id":2926,"name":"Identifier","src":"18589:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"uint256","value":"_gasLimit"},"id":2927,"name":"Identifier","src":"18602:9:19"}],"id":2928,"name":"FunctionCall","src":"18571:41:19"}],"id":2929,"name":"VariableDeclarationStatement","src":"18558:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"uint256","value":"price"},"id":2930,"name":"Identifier","src":"18626:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2931,"name":"Literal","src":"18634:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2932,"name":"Identifier","src":"18644:2:19"}],"id":2933,"name":"MemberAccess","src":"18644:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"uint256","value":"_gasLimit"},"id":2934,"name":"Identifier","src":"18658:9:19"}],"id":2935,"name":"BinaryOperation","src":"18644:23:19"}],"id":2936,"name":"BinaryOperation","src":"18634:33:19"}],"id":2937,"name":"BinaryOperation","src":"18626:41:19"},{"children":[{"attributes":{"functionReturnParameters":2921},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2938,"name":"Literal","src":"18690:1:19"}],"id":2939,"name":"Return","src":"18683:8:19"}],"id":2940,"name":"Block","src":"18669:60:19"}],"id":2941,"name":"IfStatement","src":"18622:107:19"},{"attributes":{"functionReturnParameters":2921},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query2_withGasLimit","referencedDeclaration":1691,"type":"function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2942,"name":"Identifier","src":"18745:8:19"}],"id":2943,"name":"MemberAccess","src":"18745:28:19"}],"id":2944,"name":"MemberAccess","src":"18745:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"uint256","value":"price"},"id":2945,"name":"Identifier","src":"18780:5:19"}],"id":2946,"name":"FunctionCall","src":"18745:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2907,"type":"uint256","value":"_timestamp"},"id":2947,"name":"Identifier","src":"18787:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2909,"type":"string memory","value":"_datasource"},"id":2948,"name":"Identifier","src":"18799:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2911,"type":"string memory","value":"_arg1"},"id":2949,"name":"Identifier","src":"18812:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2913,"type":"string memory","value":"_arg2"},"id":2950,"name":"Identifier","src":"18819:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2915,"type":"uint256","value":"_gasLimit"},"id":2951,"name":"Identifier","src":"18826:9:19"}],"id":2952,"name":"FunctionCall","src":"18745:91:19"}],"id":2953,"name":"Return","src":"18738:98:19"}],"id":2954,"name":"Block","src":"18548:295:19"}],"id":2955,"name":"FunctionDefinition","src":"18379:464:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3003,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2956,"name":"ElementaryTypeName","src":"18873:6:19"}],"id":2957,"name":"VariableDeclaration","src":"18873:25:19"},{"attributes":{"constant":false,"name":"_arg1","scope":3003,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2958,"name":"ElementaryTypeName","src":"18900:6:19"}],"id":2959,"name":"VariableDeclaration","src":"18900:19:19"},{"attributes":{"constant":false,"name":"_arg2","scope":3003,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2960,"name":"ElementaryTypeName","src":"18921:6:19"}],"id":2961,"name":"VariableDeclaration","src":"18921:19:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3003,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2962,"name":"ElementaryTypeName","src":"18942:4:19"}],"id":2963,"name":"VariableDeclaration","src":"18942:14:19"}],"id":2964,"name":"ParameterList","src":"18872:85:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3003,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2967,"name":"ElementaryTypeName","src":"18988:7:19"}],"id":2968,"name":"VariableDeclaration","src":"18988:11:19"}],"id":2969,"name":"ParameterList","src":"18987:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":2965,"name":"Identifier","src":"18958:11:19"}],"id":2966,"name":"ModifierInvocation","src":"18958:11:19"},{"children":[{"attributes":{"assignments":[2971]},"children":[{"attributes":{"constant":false,"name":"price","scope":3002,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2970,"name":"ElementaryTypeName","src":"19011:4:19"}],"id":2971,"name":"VariableDeclaration","src":"19011:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2972,"name":"Identifier","src":"19024:8:19"}],"id":2973,"name":"MemberAccess","src":"19024:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2957,"type":"string memory","value":"_datasource"},"id":2974,"name":"Identifier","src":"19042:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2963,"type":"uint256","value":"_gasLimit"},"id":2975,"name":"Identifier","src":"19055:9:19"}],"id":2976,"name":"FunctionCall","src":"19024:41:19"}],"id":2977,"name":"VariableDeclarationStatement","src":"19011:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2971,"type":"uint256","value":"price"},"id":2978,"name":"Identifier","src":"19079:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":2979,"name":"Literal","src":"19087:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":2980,"name":"Identifier","src":"19097:2:19"}],"id":2981,"name":"MemberAccess","src":"19097:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2963,"type":"uint256","value":"_gasLimit"},"id":2982,"name":"Identifier","src":"19111:9:19"}],"id":2983,"name":"BinaryOperation","src":"19097:23:19"}],"id":2984,"name":"BinaryOperation","src":"19087:33:19"}],"id":2985,"name":"BinaryOperation","src":"19079:41:19"},{"children":[{"attributes":{"functionReturnParameters":2969},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2986,"name":"Literal","src":"19143:1:19"}],"id":2987,"name":"Return","src":"19136:8:19"}],"id":2988,"name":"Block","src":"19122:60:19"}],"id":2989,"name":"IfStatement","src":"19075:107:19"},{"attributes":{"functionReturnParameters":2969},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"query2_withGasLimit","referencedDeclaration":1691,"type":"function (uint256,string memory,string memory,string memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":2990,"name":"Identifier","src":"19198:8:19"}],"id":2991,"name":"MemberAccess","src":"19198:28:19"}],"id":2992,"name":"MemberAccess","src":"19198:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2971,"type":"uint256","value":"price"},"id":2993,"name":"Identifier","src":"19233:5:19"}],"id":2994,"name":"FunctionCall","src":"19198:41:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2995,"name":"Literal","src":"19240:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2957,"type":"string memory","value":"_datasource"},"id":2996,"name":"Identifier","src":"19243:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2959,"type":"string memory","value":"_arg1"},"id":2997,"name":"Identifier","src":"19256:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2961,"type":"string memory","value":"_arg2"},"id":2998,"name":"Identifier","src":"19263:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2963,"type":"uint256","value":"_gasLimit"},"id":2999,"name":"Identifier","src":"19270:9:19"}],"id":3000,"name":"FunctionCall","src":"19198:82:19"}],"id":3001,"name":"Return","src":"19191:89:19"}],"id":3002,"name":"Block","src":"19001:286:19"}],"id":3003,"name":"FunctionDefinition","src":"18849:438:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3051,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3004,"name":"ElementaryTypeName","src":"19317:6:19"}],"id":3005,"name":"VariableDeclaration","src":"19317:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":3051,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3006,"name":"ElementaryTypeName","src":"19344:6:19"}],"id":3007,"name":"ArrayTypeName","src":"19344:8:19"}],"id":3008,"name":"VariableDeclaration","src":"19344:21:19"}],"id":3009,"name":"ParameterList","src":"19316:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3051,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3012,"name":"ElementaryTypeName","src":"19397:7:19"}],"id":3013,"name":"VariableDeclaration","src":"19397:11:19"}],"id":3014,"name":"ParameterList","src":"19396:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3010,"name":"Identifier","src":"19367:11:19"}],"id":3011,"name":"ModifierInvocation","src":"19367:11:19"},{"children":[{"attributes":{"assignments":[3016]},"children":[{"attributes":{"constant":false,"name":"price","scope":3050,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3015,"name":"ElementaryTypeName","src":"19420:4:19"}],"id":3016,"name":"VariableDeclaration","src":"19420:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3017,"name":"Identifier","src":"19433:8:19"}],"id":3018,"name":"MemberAccess","src":"19433:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3005,"type":"string memory","value":"_datasource"},"id":3019,"name":"Identifier","src":"19451:11:19"}],"id":3020,"name":"FunctionCall","src":"19433:30:19"}],"id":3021,"name":"VariableDeclarationStatement","src":"19420:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3016,"type":"uint256","value":"price"},"id":3022,"name":"Identifier","src":"19477:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":3023,"name":"Literal","src":"19485:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":3024,"name":"Identifier","src":"19495:2:19"}],"id":3025,"name":"MemberAccess","src":"19495:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":3026,"name":"Literal","src":"19509:6:19"}],"id":3027,"name":"BinaryOperation","src":"19495:20:19"}],"id":3028,"name":"BinaryOperation","src":"19485:30:19"}],"id":3029,"name":"BinaryOperation","src":"19477:38:19"},{"children":[{"attributes":{"functionReturnParameters":3014},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3030,"name":"Literal","src":"19538:1:19"}],"id":3031,"name":"Return","src":"19531:8:19"}],"id":3032,"name":"Block","src":"19517:60:19"}],"id":3033,"name":"IfStatement","src":"19473:104:19"},{"attributes":{"assignments":[3035]},"children":[{"attributes":{"constant":false,"name":"args","scope":3050,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3034,"name":"ElementaryTypeName","src":"19586:5:19"}],"id":3035,"name":"VariableDeclaration","src":"19586:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6759,"type":"function (string memory[] memory) pure returns (bytes memory)","value":"stra2cbor"},"id":3036,"name":"Identifier","src":"19606:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3008,"type":"string memory[] memory","value":"_argN"},"id":3037,"name":"Identifier","src":"19616:5:19"}],"id":3038,"name":"FunctionCall","src":"19606:16:19"}],"id":3039,"name":"VariableDeclarationStatement","src":"19586:36:19"},{"attributes":{"functionReturnParameters":3014},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN","referencedDeclaration":1626,"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3040,"name":"Identifier","src":"19639:8:19"}],"id":3041,"name":"MemberAccess","src":"19639:15:19"}],"id":3042,"name":"MemberAccess","src":"19639:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3016,"type":"uint256","value":"price"},"id":3043,"name":"Identifier","src":"19661:5:19"}],"id":3044,"name":"FunctionCall","src":"19639:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3045,"name":"Literal","src":"19668:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3005,"type":"string memory","value":"_datasource"},"id":3046,"name":"Identifier","src":"19671:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3035,"type":"bytes memory","value":"args"},"id":3047,"name":"Identifier","src":"19684:4:19"}],"id":3048,"name":"FunctionCall","src":"19639:50:19"}],"id":3049,"name":"Return","src":"19632:57:19"}],"id":3050,"name":"Block","src":"19410:286:19"}],"id":3051,"name":"FunctionDefinition","src":"19293:403:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3101,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3052,"name":"ElementaryTypeName","src":"19726:4:19"}],"id":3053,"name":"VariableDeclaration","src":"19726:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3101,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3054,"name":"ElementaryTypeName","src":"19743:6:19"}],"id":3055,"name":"VariableDeclaration","src":"19743:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":3101,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3056,"name":"ElementaryTypeName","src":"19770:6:19"}],"id":3057,"name":"ArrayTypeName","src":"19770:8:19"}],"id":3058,"name":"VariableDeclaration","src":"19770:21:19"}],"id":3059,"name":"ParameterList","src":"19725:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3101,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3062,"name":"ElementaryTypeName","src":"19823:7:19"}],"id":3063,"name":"VariableDeclaration","src":"19823:11:19"}],"id":3064,"name":"ParameterList","src":"19822:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3060,"name":"Identifier","src":"19793:11:19"}],"id":3061,"name":"ModifierInvocation","src":"19793:11:19"},{"children":[{"attributes":{"assignments":[3066]},"children":[{"attributes":{"constant":false,"name":"price","scope":3100,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3065,"name":"ElementaryTypeName","src":"19846:4:19"}],"id":3066,"name":"VariableDeclaration","src":"19846:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3067,"name":"Identifier","src":"19859:8:19"}],"id":3068,"name":"MemberAccess","src":"19859:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3055,"type":"string memory","value":"_datasource"},"id":3069,"name":"Identifier","src":"19877:11:19"}],"id":3070,"name":"FunctionCall","src":"19859:30:19"}],"id":3071,"name":"VariableDeclarationStatement","src":"19846:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"uint256","value":"price"},"id":3072,"name":"Identifier","src":"19903:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":3073,"name":"Literal","src":"19911:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":3074,"name":"Identifier","src":"19921:2:19"}],"id":3075,"name":"MemberAccess","src":"19921:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":3076,"name":"Literal","src":"19935:6:19"}],"id":3077,"name":"BinaryOperation","src":"19921:20:19"}],"id":3078,"name":"BinaryOperation","src":"19911:30:19"}],"id":3079,"name":"BinaryOperation","src":"19903:38:19"},{"children":[{"attributes":{"functionReturnParameters":3064},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3080,"name":"Literal","src":"19964:1:19"}],"id":3081,"name":"Return","src":"19957:8:19"}],"id":3082,"name":"Block","src":"19943:60:19"}],"id":3083,"name":"IfStatement","src":"19899:104:19"},{"attributes":{"assignments":[3085]},"children":[{"attributes":{"constant":false,"name":"args","scope":3100,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3084,"name":"ElementaryTypeName","src":"20012:5:19"}],"id":3085,"name":"VariableDeclaration","src":"20012:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6759,"type":"function (string memory[] memory) pure returns (bytes memory)","value":"stra2cbor"},"id":3086,"name":"Identifier","src":"20032:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3058,"type":"string memory[] memory","value":"_argN"},"id":3087,"name":"Identifier","src":"20042:5:19"}],"id":3088,"name":"FunctionCall","src":"20032:16:19"}],"id":3089,"name":"VariableDeclarationStatement","src":"20012:36:19"},{"attributes":{"functionReturnParameters":3064},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN","referencedDeclaration":1626,"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3090,"name":"Identifier","src":"20065:8:19"}],"id":3091,"name":"MemberAccess","src":"20065:15:19"}],"id":3092,"name":"MemberAccess","src":"20065:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3066,"type":"uint256","value":"price"},"id":3093,"name":"Identifier","src":"20087:5:19"}],"id":3094,"name":"FunctionCall","src":"20065:28:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3053,"type":"uint256","value":"_timestamp"},"id":3095,"name":"Identifier","src":"20094:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3055,"type":"string memory","value":"_datasource"},"id":3096,"name":"Identifier","src":"20106:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3085,"type":"bytes memory","value":"args"},"id":3097,"name":"Identifier","src":"20119:4:19"}],"id":3098,"name":"FunctionCall","src":"20065:59:19"}],"id":3099,"name":"Return","src":"20058:66:19"}],"id":3100,"name":"Block","src":"19836:295:19"}],"id":3101,"name":"FunctionDefinition","src":"19702:429:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3155,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3102,"name":"ElementaryTypeName","src":"20161:4:19"}],"id":3103,"name":"VariableDeclaration","src":"20161:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3155,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3104,"name":"ElementaryTypeName","src":"20178:6:19"}],"id":3105,"name":"VariableDeclaration","src":"20178:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":3155,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3106,"name":"ElementaryTypeName","src":"20205:6:19"}],"id":3107,"name":"ArrayTypeName","src":"20205:8:19"}],"id":3108,"name":"VariableDeclaration","src":"20205:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3155,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3109,"name":"ElementaryTypeName","src":"20228:4:19"}],"id":3110,"name":"VariableDeclaration","src":"20228:14:19"}],"id":3111,"name":"ParameterList","src":"20160:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3155,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3114,"name":"ElementaryTypeName","src":"20274:7:19"}],"id":3115,"name":"VariableDeclaration","src":"20274:11:19"}],"id":3116,"name":"ParameterList","src":"20273:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3112,"name":"Identifier","src":"20244:11:19"}],"id":3113,"name":"ModifierInvocation","src":"20244:11:19"},{"children":[{"attributes":{"assignments":[3118]},"children":[{"attributes":{"constant":false,"name":"price","scope":3154,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3117,"name":"ElementaryTypeName","src":"20297:4:19"}],"id":3118,"name":"VariableDeclaration","src":"20297:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3119,"name":"Identifier","src":"20310:8:19"}],"id":3120,"name":"MemberAccess","src":"20310:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3105,"type":"string memory","value":"_datasource"},"id":3121,"name":"Identifier","src":"20328:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3110,"type":"uint256","value":"_gasLimit"},"id":3122,"name":"Identifier","src":"20341:9:19"}],"id":3123,"name":"FunctionCall","src":"20310:41:19"}],"id":3124,"name":"VariableDeclarationStatement","src":"20297:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3118,"type":"uint256","value":"price"},"id":3125,"name":"Identifier","src":"20365:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":3126,"name":"Literal","src":"20373:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":3127,"name":"Identifier","src":"20383:2:19"}],"id":3128,"name":"MemberAccess","src":"20383:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3110,"type":"uint256","value":"_gasLimit"},"id":3129,"name":"Identifier","src":"20397:9:19"}],"id":3130,"name":"BinaryOperation","src":"20383:23:19"}],"id":3131,"name":"BinaryOperation","src":"20373:33:19"}],"id":3132,"name":"BinaryOperation","src":"20365:41:19"},{"children":[{"attributes":{"functionReturnParameters":3116},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3133,"name":"Literal","src":"20429:1:19"}],"id":3134,"name":"Return","src":"20422:8:19"}],"id":3135,"name":"Block","src":"20408:60:19"}],"id":3136,"name":"IfStatement","src":"20361:107:19"},{"attributes":{"assignments":[3138]},"children":[{"attributes":{"constant":false,"name":"args","scope":3154,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3137,"name":"ElementaryTypeName","src":"20477:5:19"}],"id":3138,"name":"VariableDeclaration","src":"20477:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6759,"type":"function (string memory[] memory) pure returns (bytes memory)","value":"stra2cbor"},"id":3139,"name":"Identifier","src":"20497:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3108,"type":"string memory[] memory","value":"_argN"},"id":3140,"name":"Identifier","src":"20507:5:19"}],"id":3141,"name":"FunctionCall","src":"20497:16:19"}],"id":3142,"name":"VariableDeclarationStatement","src":"20477:36:19"},{"attributes":{"functionReturnParameters":3116},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN_withGasLimit","referencedDeclaration":1676,"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3143,"name":"Identifier","src":"20530:8:19"}],"id":3144,"name":"MemberAccess","src":"20530:28:19"}],"id":3145,"name":"MemberAccess","src":"20530:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3118,"type":"uint256","value":"price"},"id":3146,"name":"Identifier","src":"20565:5:19"}],"id":3147,"name":"FunctionCall","src":"20530:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3103,"type":"uint256","value":"_timestamp"},"id":3148,"name":"Identifier","src":"20572:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3105,"type":"string memory","value":"_datasource"},"id":3149,"name":"Identifier","src":"20584:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3138,"type":"bytes memory","value":"args"},"id":3150,"name":"Identifier","src":"20597:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3110,"type":"uint256","value":"_gasLimit"},"id":3151,"name":"Identifier","src":"20603:9:19"}],"id":3152,"name":"FunctionCall","src":"20530:83:19"}],"id":3153,"name":"Return","src":"20523:90:19"}],"id":3154,"name":"Block","src":"20287:333:19"}],"id":3155,"name":"FunctionDefinition","src":"20137:483:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3207,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3156,"name":"ElementaryTypeName","src":"20650:6:19"}],"id":3157,"name":"VariableDeclaration","src":"20650:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":3207,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3158,"name":"ElementaryTypeName","src":"20677:6:19"}],"id":3159,"name":"ArrayTypeName","src":"20677:8:19"}],"id":3160,"name":"VariableDeclaration","src":"20677:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3207,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3161,"name":"ElementaryTypeName","src":"20700:4:19"}],"id":3162,"name":"VariableDeclaration","src":"20700:14:19"}],"id":3163,"name":"ParameterList","src":"20649:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3207,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3166,"name":"ElementaryTypeName","src":"20746:7:19"}],"id":3167,"name":"VariableDeclaration","src":"20746:11:19"}],"id":3168,"name":"ParameterList","src":"20745:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3164,"name":"Identifier","src":"20716:11:19"}],"id":3165,"name":"ModifierInvocation","src":"20716:11:19"},{"children":[{"attributes":{"assignments":[3170]},"children":[{"attributes":{"constant":false,"name":"price","scope":3206,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3169,"name":"ElementaryTypeName","src":"20769:4:19"}],"id":3170,"name":"VariableDeclaration","src":"20769:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3171,"name":"Identifier","src":"20782:8:19"}],"id":3172,"name":"MemberAccess","src":"20782:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3157,"type":"string memory","value":"_datasource"},"id":3173,"name":"Identifier","src":"20800:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3162,"type":"uint256","value":"_gasLimit"},"id":3174,"name":"Identifier","src":"20813:9:19"}],"id":3175,"name":"FunctionCall","src":"20782:41:19"}],"id":3176,"name":"VariableDeclarationStatement","src":"20769:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3170,"type":"uint256","value":"price"},"id":3177,"name":"Identifier","src":"20837:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":3178,"name":"Literal","src":"20845:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":3179,"name":"Identifier","src":"20855:2:19"}],"id":3180,"name":"MemberAccess","src":"20855:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3162,"type":"uint256","value":"_gasLimit"},"id":3181,"name":"Identifier","src":"20869:9:19"}],"id":3182,"name":"BinaryOperation","src":"20855:23:19"}],"id":3183,"name":"BinaryOperation","src":"20845:33:19"}],"id":3184,"name":"BinaryOperation","src":"20837:41:19"},{"children":[{"attributes":{"functionReturnParameters":3168},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3185,"name":"Literal","src":"20901:1:19"}],"id":3186,"name":"Return","src":"20894:8:19"}],"id":3187,"name":"Block","src":"20880:60:19"}],"id":3188,"name":"IfStatement","src":"20833:107:19"},{"attributes":{"assignments":[3190]},"children":[{"attributes":{"constant":false,"name":"args","scope":3206,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3189,"name":"ElementaryTypeName","src":"20949:5:19"}],"id":3190,"name":"VariableDeclaration","src":"20949:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6759,"type":"function (string memory[] memory) pure returns (bytes memory)","value":"stra2cbor"},"id":3191,"name":"Identifier","src":"20969:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3160,"type":"string memory[] memory","value":"_argN"},"id":3192,"name":"Identifier","src":"20979:5:19"}],"id":3193,"name":"FunctionCall","src":"20969:16:19"}],"id":3194,"name":"VariableDeclarationStatement","src":"20949:36:19"},{"attributes":{"functionReturnParameters":3168},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN_withGasLimit","referencedDeclaration":1676,"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":3195,"name":"Identifier","src":"21002:8:19"}],"id":3196,"name":"MemberAccess","src":"21002:28:19"}],"id":3197,"name":"MemberAccess","src":"21002:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3170,"type":"uint256","value":"price"},"id":3198,"name":"Identifier","src":"21037:5:19"}],"id":3199,"name":"FunctionCall","src":"21002:41:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3200,"name":"Literal","src":"21044:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3157,"type":"string memory","value":"_datasource"},"id":3201,"name":"Identifier","src":"21047:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3190,"type":"bytes memory","value":"args"},"id":3202,"name":"Identifier","src":"21060:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3162,"type":"uint256","value":"_gasLimit"},"id":3203,"name":"Identifier","src":"21066:9:19"}],"id":3204,"name":"FunctionCall","src":"21002:74:19"}],"id":3205,"name":"Return","src":"20995:81:19"}],"id":3206,"name":"Block","src":"20759:324:19"}],"id":3207,"name":"FunctionDefinition","src":"20626:457:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3244,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3208,"name":"ElementaryTypeName","src":"21113:6:19"}],"id":3209,"name":"VariableDeclaration","src":"21113:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3244,"stateVariable":false,"storageLocation":"memory","type":"string[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[1]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3210,"name":"ElementaryTypeName","src":"21140:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3211,"name":"Literal","src":"21147:1:19"}],"id":3212,"name":"ArrayTypeName","src":"21140:9:19"}],"id":3213,"name":"VariableDeclaration","src":"21140:22:19"}],"id":3214,"name":"ParameterList","src":"21112:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3244,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3217,"name":"ElementaryTypeName","src":"21194:7:19"}],"id":3218,"name":"VariableDeclaration","src":"21194:11:19"}],"id":3219,"name":"ParameterList","src":"21193:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3215,"name":"Identifier","src":"21164:11:19"}],"id":3216,"name":"ModifierInvocation","src":"21164:11:19"},{"children":[{"attributes":{"assignments":[3223]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3243,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3221,"name":"ElementaryTypeName","src":"21217:6:19"}],"id":3222,"name":"ArrayTypeName","src":"21217:8:19"}],"id":3223,"name":"VariableDeclaration","src":"21217:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3224,"name":"ElementaryTypeName","src":"21247:6:19"}],"id":3225,"name":"ArrayTypeName","src":"21247:8:19"}],"id":3226,"name":"NewExpression","src":"21243:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3227,"name":"Literal","src":"21256:1:19"}],"id":3228,"name":"FunctionCall","src":"21243:15:19"}],"id":3229,"name":"VariableDeclarationStatement","src":"21217:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3223,"type":"string memory[] memory","value":"dynargs"},"id":3230,"name":"Identifier","src":"21268:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3231,"name":"Literal","src":"21276:1:19"}],"id":3232,"name":"IndexAccess","src":"21268:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3213,"type":"string memory[1] memory","value":"_args"},"id":3233,"name":"Identifier","src":"21281:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3234,"name":"Literal","src":"21287:1:19"}],"id":3235,"name":"IndexAccess","src":"21281:8:19"}],"id":3236,"name":"Assignment","src":"21268:21:19"}],"id":3237,"name":"ExpressionStatement","src":"21268:21:19"},{"attributes":{"functionReturnParameters":3219},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3238,"name":"Identifier","src":"21306:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3209,"type":"string memory","value":"_datasource"},"id":3239,"name":"Identifier","src":"21321:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3223,"type":"string memory[] memory","value":"dynargs"},"id":3240,"name":"Identifier","src":"21334:7:19"}],"id":3241,"name":"FunctionCall","src":"21306:36:19"}],"id":3242,"name":"Return","src":"21299:43:19"}],"id":3243,"name":"Block","src":"21207:142:19"}],"id":3244,"name":"FunctionDefinition","src":"21089:260:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3245,"name":"ElementaryTypeName","src":"21379:4:19"}],"id":3246,"name":"VariableDeclaration","src":"21379:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3284,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3247,"name":"ElementaryTypeName","src":"21396:6:19"}],"id":3248,"name":"VariableDeclaration","src":"21396:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3284,"stateVariable":false,"storageLocation":"memory","type":"string[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[1]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3249,"name":"ElementaryTypeName","src":"21423:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3250,"name":"Literal","src":"21430:1:19"}],"id":3251,"name":"ArrayTypeName","src":"21423:9:19"}],"id":3252,"name":"VariableDeclaration","src":"21423:22:19"}],"id":3253,"name":"ParameterList","src":"21378:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3284,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3256,"name":"ElementaryTypeName","src":"21477:7:19"}],"id":3257,"name":"VariableDeclaration","src":"21477:11:19"}],"id":3258,"name":"ParameterList","src":"21476:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3254,"name":"Identifier","src":"21447:11:19"}],"id":3255,"name":"ModifierInvocation","src":"21447:11:19"},{"children":[{"attributes":{"assignments":[3262]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3283,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3260,"name":"ElementaryTypeName","src":"21500:6:19"}],"id":3261,"name":"ArrayTypeName","src":"21500:8:19"}],"id":3262,"name":"VariableDeclaration","src":"21500:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3263,"name":"ElementaryTypeName","src":"21530:6:19"}],"id":3264,"name":"ArrayTypeName","src":"21530:8:19"}],"id":3265,"name":"NewExpression","src":"21526:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3266,"name":"Literal","src":"21539:1:19"}],"id":3267,"name":"FunctionCall","src":"21526:15:19"}],"id":3268,"name":"VariableDeclarationStatement","src":"21500:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3262,"type":"string memory[] memory","value":"dynargs"},"id":3269,"name":"Identifier","src":"21551:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3270,"name":"Literal","src":"21559:1:19"}],"id":3271,"name":"IndexAccess","src":"21551:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3252,"type":"string memory[1] memory","value":"_args"},"id":3272,"name":"Identifier","src":"21564:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3273,"name":"Literal","src":"21570:1:19"}],"id":3274,"name":"IndexAccess","src":"21564:8:19"}],"id":3275,"name":"Assignment","src":"21551:21:19"}],"id":3276,"name":"ExpressionStatement","src":"21551:21:19"},{"attributes":{"functionReturnParameters":3258},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3277,"name":"Identifier","src":"21589:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3246,"type":"uint256","value":"_timestamp"},"id":3278,"name":"Identifier","src":"21604:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"string memory","value":"_datasource"},"id":3279,"name":"Identifier","src":"21616:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3262,"type":"string memory[] memory","value":"dynargs"},"id":3280,"name":"Identifier","src":"21629:7:19"}],"id":3281,"name":"FunctionCall","src":"21589:48:19"}],"id":3282,"name":"Return","src":"21582:55:19"}],"id":3283,"name":"Block","src":"21490:154:19"}],"id":3284,"name":"FunctionDefinition","src":"21355:289:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3285,"name":"ElementaryTypeName","src":"21674:4:19"}],"id":3286,"name":"VariableDeclaration","src":"21674:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3327,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3287,"name":"ElementaryTypeName","src":"21691:6:19"}],"id":3288,"name":"VariableDeclaration","src":"21691:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3327,"stateVariable":false,"storageLocation":"memory","type":"string[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[1]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3289,"name":"ElementaryTypeName","src":"21718:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3290,"name":"Literal","src":"21725:1:19"}],"id":3291,"name":"ArrayTypeName","src":"21718:9:19"}],"id":3292,"name":"VariableDeclaration","src":"21718:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3293,"name":"ElementaryTypeName","src":"21742:4:19"}],"id":3294,"name":"VariableDeclaration","src":"21742:14:19"}],"id":3295,"name":"ParameterList","src":"21673:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3327,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3298,"name":"ElementaryTypeName","src":"21788:7:19"}],"id":3299,"name":"VariableDeclaration","src":"21788:11:19"}],"id":3300,"name":"ParameterList","src":"21787:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3296,"name":"Identifier","src":"21758:11:19"}],"id":3297,"name":"ModifierInvocation","src":"21758:11:19"},{"children":[{"attributes":{"assignments":[3304]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3326,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3302,"name":"ElementaryTypeName","src":"21811:6:19"}],"id":3303,"name":"ArrayTypeName","src":"21811:8:19"}],"id":3304,"name":"VariableDeclaration","src":"21811:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3305,"name":"ElementaryTypeName","src":"21841:6:19"}],"id":3306,"name":"ArrayTypeName","src":"21841:8:19"}],"id":3307,"name":"NewExpression","src":"21837:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3308,"name":"Literal","src":"21850:1:19"}],"id":3309,"name":"FunctionCall","src":"21837:15:19"}],"id":3310,"name":"VariableDeclarationStatement","src":"21811:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3304,"type":"string memory[] memory","value":"dynargs"},"id":3311,"name":"Identifier","src":"21862:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3312,"name":"Literal","src":"21870:1:19"}],"id":3313,"name":"IndexAccess","src":"21862:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3292,"type":"string memory[1] memory","value":"_args"},"id":3314,"name":"Identifier","src":"21875:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3315,"name":"Literal","src":"21881:1:19"}],"id":3316,"name":"IndexAccess","src":"21875:8:19"}],"id":3317,"name":"Assignment","src":"21862:21:19"}],"id":3318,"name":"ExpressionStatement","src":"21862:21:19"},{"attributes":{"functionReturnParameters":3300},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3319,"name":"Identifier","src":"21900:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3286,"type":"uint256","value":"_timestamp"},"id":3320,"name":"Identifier","src":"21915:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3288,"type":"string memory","value":"_datasource"},"id":3321,"name":"Identifier","src":"21927:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3304,"type":"string memory[] memory","value":"dynargs"},"id":3322,"name":"Identifier","src":"21940:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3294,"type":"uint256","value":"_gasLimit"},"id":3323,"name":"Identifier","src":"21949:9:19"}],"id":3324,"name":"FunctionCall","src":"21900:59:19"}],"id":3325,"name":"Return","src":"21893:66:19"}],"id":3326,"name":"Block","src":"21801:165:19"}],"id":3327,"name":"FunctionDefinition","src":"21650:316:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3367,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3328,"name":"ElementaryTypeName","src":"21996:6:19"}],"id":3329,"name":"VariableDeclaration","src":"21996:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3367,"stateVariable":false,"storageLocation":"memory","type":"string[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[1]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3330,"name":"ElementaryTypeName","src":"22023:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3331,"name":"Literal","src":"22030:1:19"}],"id":3332,"name":"ArrayTypeName","src":"22023:9:19"}],"id":3333,"name":"VariableDeclaration","src":"22023:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3367,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3334,"name":"ElementaryTypeName","src":"22047:4:19"}],"id":3335,"name":"VariableDeclaration","src":"22047:14:19"}],"id":3336,"name":"ParameterList","src":"21995:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3367,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3339,"name":"ElementaryTypeName","src":"22093:7:19"}],"id":3340,"name":"VariableDeclaration","src":"22093:11:19"}],"id":3341,"name":"ParameterList","src":"22092:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3337,"name":"Identifier","src":"22063:11:19"}],"id":3338,"name":"ModifierInvocation","src":"22063:11:19"},{"children":[{"attributes":{"assignments":[3345]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3366,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3343,"name":"ElementaryTypeName","src":"22116:6:19"}],"id":3344,"name":"ArrayTypeName","src":"22116:8:19"}],"id":3345,"name":"VariableDeclaration","src":"22116:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3346,"name":"ElementaryTypeName","src":"22146:6:19"}],"id":3347,"name":"ArrayTypeName","src":"22146:8:19"}],"id":3348,"name":"NewExpression","src":"22142:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3349,"name":"Literal","src":"22155:1:19"}],"id":3350,"name":"FunctionCall","src":"22142:15:19"}],"id":3351,"name":"VariableDeclarationStatement","src":"22116:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3345,"type":"string memory[] memory","value":"dynargs"},"id":3352,"name":"Identifier","src":"22167:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3353,"name":"Literal","src":"22175:1:19"}],"id":3354,"name":"IndexAccess","src":"22167:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3333,"type":"string memory[1] memory","value":"_args"},"id":3355,"name":"Identifier","src":"22180:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3356,"name":"Literal","src":"22186:1:19"}],"id":3357,"name":"IndexAccess","src":"22180:8:19"}],"id":3358,"name":"Assignment","src":"22167:21:19"}],"id":3359,"name":"ExpressionStatement","src":"22167:21:19"},{"attributes":{"functionReturnParameters":3341},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3360,"name":"Identifier","src":"22205:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3329,"type":"string memory","value":"_datasource"},"id":3361,"name":"Identifier","src":"22220:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3345,"type":"string memory[] memory","value":"dynargs"},"id":3362,"name":"Identifier","src":"22233:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"uint256","value":"_gasLimit"},"id":3363,"name":"Identifier","src":"22242:9:19"}],"id":3364,"name":"FunctionCall","src":"22205:47:19"}],"id":3365,"name":"Return","src":"22198:54:19"}],"id":3366,"name":"Block","src":"22106:153:19"}],"id":3367,"name":"FunctionDefinition","src":"21972:287:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3412,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3368,"name":"ElementaryTypeName","src":"22289:6:19"}],"id":3369,"name":"VariableDeclaration","src":"22289:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3412,"stateVariable":false,"storageLocation":"memory","type":"string[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[2]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3370,"name":"ElementaryTypeName","src":"22316:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3371,"name":"Literal","src":"22323:1:19"}],"id":3372,"name":"ArrayTypeName","src":"22316:9:19"}],"id":3373,"name":"VariableDeclaration","src":"22316:22:19"}],"id":3374,"name":"ParameterList","src":"22288:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3412,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3377,"name":"ElementaryTypeName","src":"22370:7:19"}],"id":3378,"name":"VariableDeclaration","src":"22370:11:19"}],"id":3379,"name":"ParameterList","src":"22369:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3375,"name":"Identifier","src":"22340:11:19"}],"id":3376,"name":"ModifierInvocation","src":"22340:11:19"},{"children":[{"attributes":{"assignments":[3383]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3411,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3381,"name":"ElementaryTypeName","src":"22393:6:19"}],"id":3382,"name":"ArrayTypeName","src":"22393:8:19"}],"id":3383,"name":"VariableDeclaration","src":"22393:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3384,"name":"ElementaryTypeName","src":"22423:6:19"}],"id":3385,"name":"ArrayTypeName","src":"22423:8:19"}],"id":3386,"name":"NewExpression","src":"22419:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3387,"name":"Literal","src":"22432:1:19"}],"id":3388,"name":"FunctionCall","src":"22419:15:19"}],"id":3389,"name":"VariableDeclarationStatement","src":"22393:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3383,"type":"string memory[] memory","value":"dynargs"},"id":3390,"name":"Identifier","src":"22444:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3391,"name":"Literal","src":"22452:1:19"}],"id":3392,"name":"IndexAccess","src":"22444:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3373,"type":"string memory[2] memory","value":"_args"},"id":3393,"name":"Identifier","src":"22457:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3394,"name":"Literal","src":"22463:1:19"}],"id":3395,"name":"IndexAccess","src":"22457:8:19"}],"id":3396,"name":"Assignment","src":"22444:21:19"}],"id":3397,"name":"ExpressionStatement","src":"22444:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3383,"type":"string memory[] memory","value":"dynargs"},"id":3398,"name":"Identifier","src":"22475:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3399,"name":"Literal","src":"22483:1:19"}],"id":3400,"name":"IndexAccess","src":"22475:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3373,"type":"string memory[2] memory","value":"_args"},"id":3401,"name":"Identifier","src":"22488:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3402,"name":"Literal","src":"22494:1:19"}],"id":3403,"name":"IndexAccess","src":"22488:8:19"}],"id":3404,"name":"Assignment","src":"22475:21:19"}],"id":3405,"name":"ExpressionStatement","src":"22475:21:19"},{"attributes":{"functionReturnParameters":3379},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3406,"name":"Identifier","src":"22513:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"string memory","value":"_datasource"},"id":3407,"name":"Identifier","src":"22528:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3383,"type":"string memory[] memory","value":"dynargs"},"id":3408,"name":"Identifier","src":"22541:7:19"}],"id":3409,"name":"FunctionCall","src":"22513:36:19"}],"id":3410,"name":"Return","src":"22506:43:19"}],"id":3411,"name":"Block","src":"22383:173:19"}],"id":3412,"name":"FunctionDefinition","src":"22265:291:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3460,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3413,"name":"ElementaryTypeName","src":"22586:4:19"}],"id":3414,"name":"VariableDeclaration","src":"22586:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3460,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3415,"name":"ElementaryTypeName","src":"22603:6:19"}],"id":3416,"name":"VariableDeclaration","src":"22603:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3460,"stateVariable":false,"storageLocation":"memory","type":"string[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[2]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3417,"name":"ElementaryTypeName","src":"22630:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3418,"name":"Literal","src":"22637:1:19"}],"id":3419,"name":"ArrayTypeName","src":"22630:9:19"}],"id":3420,"name":"VariableDeclaration","src":"22630:22:19"}],"id":3421,"name":"ParameterList","src":"22585:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3424,"name":"ElementaryTypeName","src":"22684:7:19"}],"id":3425,"name":"VariableDeclaration","src":"22684:11:19"}],"id":3426,"name":"ParameterList","src":"22683:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3422,"name":"Identifier","src":"22654:11:19"}],"id":3423,"name":"ModifierInvocation","src":"22654:11:19"},{"children":[{"attributes":{"assignments":[3430]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3459,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3428,"name":"ElementaryTypeName","src":"22707:6:19"}],"id":3429,"name":"ArrayTypeName","src":"22707:8:19"}],"id":3430,"name":"VariableDeclaration","src":"22707:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3431,"name":"ElementaryTypeName","src":"22737:6:19"}],"id":3432,"name":"ArrayTypeName","src":"22737:8:19"}],"id":3433,"name":"NewExpression","src":"22733:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3434,"name":"Literal","src":"22746:1:19"}],"id":3435,"name":"FunctionCall","src":"22733:15:19"}],"id":3436,"name":"VariableDeclarationStatement","src":"22707:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"string memory[] memory","value":"dynargs"},"id":3437,"name":"Identifier","src":"22758:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3438,"name":"Literal","src":"22766:1:19"}],"id":3439,"name":"IndexAccess","src":"22758:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"string memory[2] memory","value":"_args"},"id":3440,"name":"Identifier","src":"22771:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3441,"name":"Literal","src":"22777:1:19"}],"id":3442,"name":"IndexAccess","src":"22771:8:19"}],"id":3443,"name":"Assignment","src":"22758:21:19"}],"id":3444,"name":"ExpressionStatement","src":"22758:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"string memory[] memory","value":"dynargs"},"id":3445,"name":"Identifier","src":"22789:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3446,"name":"Literal","src":"22797:1:19"}],"id":3447,"name":"IndexAccess","src":"22789:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3420,"type":"string memory[2] memory","value":"_args"},"id":3448,"name":"Identifier","src":"22802:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3449,"name":"Literal","src":"22808:1:19"}],"id":3450,"name":"IndexAccess","src":"22802:8:19"}],"id":3451,"name":"Assignment","src":"22789:21:19"}],"id":3452,"name":"ExpressionStatement","src":"22789:21:19"},{"attributes":{"functionReturnParameters":3426},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3453,"name":"Identifier","src":"22827:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3414,"type":"uint256","value":"_timestamp"},"id":3454,"name":"Identifier","src":"22842:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3416,"type":"string memory","value":"_datasource"},"id":3455,"name":"Identifier","src":"22854:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3430,"type":"string memory[] memory","value":"dynargs"},"id":3456,"name":"Identifier","src":"22867:7:19"}],"id":3457,"name":"FunctionCall","src":"22827:48:19"}],"id":3458,"name":"Return","src":"22820:55:19"}],"id":3459,"name":"Block","src":"22697:185:19"}],"id":3460,"name":"FunctionDefinition","src":"22562:320:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3511,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3461,"name":"ElementaryTypeName","src":"22912:4:19"}],"id":3462,"name":"VariableDeclaration","src":"22912:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3511,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3463,"name":"ElementaryTypeName","src":"22929:6:19"}],"id":3464,"name":"VariableDeclaration","src":"22929:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3511,"stateVariable":false,"storageLocation":"memory","type":"string[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[2]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3465,"name":"ElementaryTypeName","src":"22956:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3466,"name":"Literal","src":"22963:1:19"}],"id":3467,"name":"ArrayTypeName","src":"22956:9:19"}],"id":3468,"name":"VariableDeclaration","src":"22956:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3511,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3469,"name":"ElementaryTypeName","src":"22980:4:19"}],"id":3470,"name":"VariableDeclaration","src":"22980:14:19"}],"id":3471,"name":"ParameterList","src":"22911:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3511,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3474,"name":"ElementaryTypeName","src":"23026:7:19"}],"id":3475,"name":"VariableDeclaration","src":"23026:11:19"}],"id":3476,"name":"ParameterList","src":"23025:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3472,"name":"Identifier","src":"22996:11:19"}],"id":3473,"name":"ModifierInvocation","src":"22996:11:19"},{"children":[{"attributes":{"assignments":[3480]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3510,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3478,"name":"ElementaryTypeName","src":"23049:6:19"}],"id":3479,"name":"ArrayTypeName","src":"23049:8:19"}],"id":3480,"name":"VariableDeclaration","src":"23049:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3481,"name":"ElementaryTypeName","src":"23079:6:19"}],"id":3482,"name":"ArrayTypeName","src":"23079:8:19"}],"id":3483,"name":"NewExpression","src":"23075:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3484,"name":"Literal","src":"23088:1:19"}],"id":3485,"name":"FunctionCall","src":"23075:15:19"}],"id":3486,"name":"VariableDeclarationStatement","src":"23049:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"string memory[] memory","value":"dynargs"},"id":3487,"name":"Identifier","src":"23100:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3488,"name":"Literal","src":"23108:1:19"}],"id":3489,"name":"IndexAccess","src":"23100:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3468,"type":"string memory[2] memory","value":"_args"},"id":3490,"name":"Identifier","src":"23113:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3491,"name":"Literal","src":"23119:1:19"}],"id":3492,"name":"IndexAccess","src":"23113:8:19"}],"id":3493,"name":"Assignment","src":"23100:21:19"}],"id":3494,"name":"ExpressionStatement","src":"23100:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"string memory[] memory","value":"dynargs"},"id":3495,"name":"Identifier","src":"23131:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3496,"name":"Literal","src":"23139:1:19"}],"id":3497,"name":"IndexAccess","src":"23131:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3468,"type":"string memory[2] memory","value":"_args"},"id":3498,"name":"Identifier","src":"23144:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3499,"name":"Literal","src":"23150:1:19"}],"id":3500,"name":"IndexAccess","src":"23144:8:19"}],"id":3501,"name":"Assignment","src":"23131:21:19"}],"id":3502,"name":"ExpressionStatement","src":"23131:21:19"},{"attributes":{"functionReturnParameters":3476},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3503,"name":"Identifier","src":"23169:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3462,"type":"uint256","value":"_timestamp"},"id":3504,"name":"Identifier","src":"23184:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3464,"type":"string memory","value":"_datasource"},"id":3505,"name":"Identifier","src":"23196:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3480,"type":"string memory[] memory","value":"dynargs"},"id":3506,"name":"Identifier","src":"23209:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"uint256","value":"_gasLimit"},"id":3507,"name":"Identifier","src":"23218:9:19"}],"id":3508,"name":"FunctionCall","src":"23169:59:19"}],"id":3509,"name":"Return","src":"23162:66:19"}],"id":3510,"name":"Block","src":"23039:196:19"}],"id":3511,"name":"FunctionDefinition","src":"22888:347:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3559,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3512,"name":"ElementaryTypeName","src":"23265:6:19"}],"id":3513,"name":"VariableDeclaration","src":"23265:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3559,"stateVariable":false,"storageLocation":"memory","type":"string[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[2]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3514,"name":"ElementaryTypeName","src":"23292:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3515,"name":"Literal","src":"23299:1:19"}],"id":3516,"name":"ArrayTypeName","src":"23292:9:19"}],"id":3517,"name":"VariableDeclaration","src":"23292:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3559,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3518,"name":"ElementaryTypeName","src":"23316:4:19"}],"id":3519,"name":"VariableDeclaration","src":"23316:14:19"}],"id":3520,"name":"ParameterList","src":"23264:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3559,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3523,"name":"ElementaryTypeName","src":"23362:7:19"}],"id":3524,"name":"VariableDeclaration","src":"23362:11:19"}],"id":3525,"name":"ParameterList","src":"23361:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3521,"name":"Identifier","src":"23332:11:19"}],"id":3522,"name":"ModifierInvocation","src":"23332:11:19"},{"children":[{"attributes":{"assignments":[3529]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3558,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3527,"name":"ElementaryTypeName","src":"23385:6:19"}],"id":3528,"name":"ArrayTypeName","src":"23385:8:19"}],"id":3529,"name":"VariableDeclaration","src":"23385:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3530,"name":"ElementaryTypeName","src":"23415:6:19"}],"id":3531,"name":"ArrayTypeName","src":"23415:8:19"}],"id":3532,"name":"NewExpression","src":"23411:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3533,"name":"Literal","src":"23424:1:19"}],"id":3534,"name":"FunctionCall","src":"23411:15:19"}],"id":3535,"name":"VariableDeclarationStatement","src":"23385:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"string memory[] memory","value":"dynargs"},"id":3536,"name":"Identifier","src":"23436:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3537,"name":"Literal","src":"23444:1:19"}],"id":3538,"name":"IndexAccess","src":"23436:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3517,"type":"string memory[2] memory","value":"_args"},"id":3539,"name":"Identifier","src":"23449:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3540,"name":"Literal","src":"23455:1:19"}],"id":3541,"name":"IndexAccess","src":"23449:8:19"}],"id":3542,"name":"Assignment","src":"23436:21:19"}],"id":3543,"name":"ExpressionStatement","src":"23436:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"string memory[] memory","value":"dynargs"},"id":3544,"name":"Identifier","src":"23467:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3545,"name":"Literal","src":"23475:1:19"}],"id":3546,"name":"IndexAccess","src":"23467:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3517,"type":"string memory[2] memory","value":"_args"},"id":3547,"name":"Identifier","src":"23480:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3548,"name":"Literal","src":"23486:1:19"}],"id":3549,"name":"IndexAccess","src":"23480:8:19"}],"id":3550,"name":"Assignment","src":"23467:21:19"}],"id":3551,"name":"ExpressionStatement","src":"23467:21:19"},{"attributes":{"functionReturnParameters":3525},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3552,"name":"Identifier","src":"23505:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3513,"type":"string memory","value":"_datasource"},"id":3553,"name":"Identifier","src":"23520:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3529,"type":"string memory[] memory","value":"dynargs"},"id":3554,"name":"Identifier","src":"23533:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3519,"type":"uint256","value":"_gasLimit"},"id":3555,"name":"Identifier","src":"23542:9:19"}],"id":3556,"name":"FunctionCall","src":"23505:47:19"}],"id":3557,"name":"Return","src":"23498:54:19"}],"id":3558,"name":"Block","src":"23375:184:19"}],"id":3559,"name":"FunctionDefinition","src":"23241:318:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3612,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3560,"name":"ElementaryTypeName","src":"23589:6:19"}],"id":3561,"name":"VariableDeclaration","src":"23589:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3612,"stateVariable":false,"storageLocation":"memory","type":"string[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[3]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3562,"name":"ElementaryTypeName","src":"23616:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3563,"name":"Literal","src":"23623:1:19"}],"id":3564,"name":"ArrayTypeName","src":"23616:9:19"}],"id":3565,"name":"VariableDeclaration","src":"23616:22:19"}],"id":3566,"name":"ParameterList","src":"23588:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3569,"name":"ElementaryTypeName","src":"23670:7:19"}],"id":3570,"name":"VariableDeclaration","src":"23670:11:19"}],"id":3571,"name":"ParameterList","src":"23669:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3567,"name":"Identifier","src":"23640:11:19"}],"id":3568,"name":"ModifierInvocation","src":"23640:11:19"},{"children":[{"attributes":{"assignments":[3575]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3611,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3573,"name":"ElementaryTypeName","src":"23693:6:19"}],"id":3574,"name":"ArrayTypeName","src":"23693:8:19"}],"id":3575,"name":"VariableDeclaration","src":"23693:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3576,"name":"ElementaryTypeName","src":"23723:6:19"}],"id":3577,"name":"ArrayTypeName","src":"23723:8:19"}],"id":3578,"name":"NewExpression","src":"23719:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3579,"name":"Literal","src":"23732:1:19"}],"id":3580,"name":"FunctionCall","src":"23719:15:19"}],"id":3581,"name":"VariableDeclarationStatement","src":"23693:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3575,"type":"string memory[] memory","value":"dynargs"},"id":3582,"name":"Identifier","src":"23744:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3583,"name":"Literal","src":"23752:1:19"}],"id":3584,"name":"IndexAccess","src":"23744:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3565,"type":"string memory[3] memory","value":"_args"},"id":3585,"name":"Identifier","src":"23757:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3586,"name":"Literal","src":"23763:1:19"}],"id":3587,"name":"IndexAccess","src":"23757:8:19"}],"id":3588,"name":"Assignment","src":"23744:21:19"}],"id":3589,"name":"ExpressionStatement","src":"23744:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3575,"type":"string memory[] memory","value":"dynargs"},"id":3590,"name":"Identifier","src":"23775:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3591,"name":"Literal","src":"23783:1:19"}],"id":3592,"name":"IndexAccess","src":"23775:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3565,"type":"string memory[3] memory","value":"_args"},"id":3593,"name":"Identifier","src":"23788:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3594,"name":"Literal","src":"23794:1:19"}],"id":3595,"name":"IndexAccess","src":"23788:8:19"}],"id":3596,"name":"Assignment","src":"23775:21:19"}],"id":3597,"name":"ExpressionStatement","src":"23775:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3575,"type":"string memory[] memory","value":"dynargs"},"id":3598,"name":"Identifier","src":"23806:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3599,"name":"Literal","src":"23814:1:19"}],"id":3600,"name":"IndexAccess","src":"23806:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3565,"type":"string memory[3] memory","value":"_args"},"id":3601,"name":"Identifier","src":"23819:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3602,"name":"Literal","src":"23825:1:19"}],"id":3603,"name":"IndexAccess","src":"23819:8:19"}],"id":3604,"name":"Assignment","src":"23806:21:19"}],"id":3605,"name":"ExpressionStatement","src":"23806:21:19"},{"attributes":{"functionReturnParameters":3571},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3606,"name":"Identifier","src":"23844:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3561,"type":"string memory","value":"_datasource"},"id":3607,"name":"Identifier","src":"23859:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3575,"type":"string memory[] memory","value":"dynargs"},"id":3608,"name":"Identifier","src":"23872:7:19"}],"id":3609,"name":"FunctionCall","src":"23844:36:19"}],"id":3610,"name":"Return","src":"23837:43:19"}],"id":3611,"name":"Block","src":"23683:204:19"}],"id":3612,"name":"FunctionDefinition","src":"23565:322:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3668,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3613,"name":"ElementaryTypeName","src":"23917:4:19"}],"id":3614,"name":"VariableDeclaration","src":"23917:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3668,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3615,"name":"ElementaryTypeName","src":"23934:6:19"}],"id":3616,"name":"VariableDeclaration","src":"23934:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3668,"stateVariable":false,"storageLocation":"memory","type":"string[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[3]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3617,"name":"ElementaryTypeName","src":"23961:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3618,"name":"Literal","src":"23968:1:19"}],"id":3619,"name":"ArrayTypeName","src":"23961:9:19"}],"id":3620,"name":"VariableDeclaration","src":"23961:22:19"}],"id":3621,"name":"ParameterList","src":"23916:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3668,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3624,"name":"ElementaryTypeName","src":"24015:7:19"}],"id":3625,"name":"VariableDeclaration","src":"24015:11:19"}],"id":3626,"name":"ParameterList","src":"24014:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3622,"name":"Identifier","src":"23985:11:19"}],"id":3623,"name":"ModifierInvocation","src":"23985:11:19"},{"children":[{"attributes":{"assignments":[3630]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3667,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3628,"name":"ElementaryTypeName","src":"24038:6:19"}],"id":3629,"name":"ArrayTypeName","src":"24038:8:19"}],"id":3630,"name":"VariableDeclaration","src":"24038:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3631,"name":"ElementaryTypeName","src":"24068:6:19"}],"id":3632,"name":"ArrayTypeName","src":"24068:8:19"}],"id":3633,"name":"NewExpression","src":"24064:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3634,"name":"Literal","src":"24077:1:19"}],"id":3635,"name":"FunctionCall","src":"24064:15:19"}],"id":3636,"name":"VariableDeclarationStatement","src":"24038:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3630,"type":"string memory[] memory","value":"dynargs"},"id":3637,"name":"Identifier","src":"24089:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3638,"name":"Literal","src":"24097:1:19"}],"id":3639,"name":"IndexAccess","src":"24089:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3620,"type":"string memory[3] memory","value":"_args"},"id":3640,"name":"Identifier","src":"24102:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3641,"name":"Literal","src":"24108:1:19"}],"id":3642,"name":"IndexAccess","src":"24102:8:19"}],"id":3643,"name":"Assignment","src":"24089:21:19"}],"id":3644,"name":"ExpressionStatement","src":"24089:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3630,"type":"string memory[] memory","value":"dynargs"},"id":3645,"name":"Identifier","src":"24120:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3646,"name":"Literal","src":"24128:1:19"}],"id":3647,"name":"IndexAccess","src":"24120:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3620,"type":"string memory[3] memory","value":"_args"},"id":3648,"name":"Identifier","src":"24133:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3649,"name":"Literal","src":"24139:1:19"}],"id":3650,"name":"IndexAccess","src":"24133:8:19"}],"id":3651,"name":"Assignment","src":"24120:21:19"}],"id":3652,"name":"ExpressionStatement","src":"24120:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3630,"type":"string memory[] memory","value":"dynargs"},"id":3653,"name":"Identifier","src":"24151:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3654,"name":"Literal","src":"24159:1:19"}],"id":3655,"name":"IndexAccess","src":"24151:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3620,"type":"string memory[3] memory","value":"_args"},"id":3656,"name":"Identifier","src":"24164:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3657,"name":"Literal","src":"24170:1:19"}],"id":3658,"name":"IndexAccess","src":"24164:8:19"}],"id":3659,"name":"Assignment","src":"24151:21:19"}],"id":3660,"name":"ExpressionStatement","src":"24151:21:19"},{"attributes":{"functionReturnParameters":3626},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3661,"name":"Identifier","src":"24189:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3614,"type":"uint256","value":"_timestamp"},"id":3662,"name":"Identifier","src":"24204:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3616,"type":"string memory","value":"_datasource"},"id":3663,"name":"Identifier","src":"24216:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3630,"type":"string memory[] memory","value":"dynargs"},"id":3664,"name":"Identifier","src":"24229:7:19"}],"id":3665,"name":"FunctionCall","src":"24189:48:19"}],"id":3666,"name":"Return","src":"24182:55:19"}],"id":3667,"name":"Block","src":"24028:216:19"}],"id":3668,"name":"FunctionDefinition","src":"23893:351:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3669,"name":"ElementaryTypeName","src":"24274:4:19"}],"id":3670,"name":"VariableDeclaration","src":"24274:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3727,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3671,"name":"ElementaryTypeName","src":"24291:6:19"}],"id":3672,"name":"VariableDeclaration","src":"24291:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3727,"stateVariable":false,"storageLocation":"memory","type":"string[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[3]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3673,"name":"ElementaryTypeName","src":"24318:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3674,"name":"Literal","src":"24325:1:19"}],"id":3675,"name":"ArrayTypeName","src":"24318:9:19"}],"id":3676,"name":"VariableDeclaration","src":"24318:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3677,"name":"ElementaryTypeName","src":"24342:4:19"}],"id":3678,"name":"VariableDeclaration","src":"24342:14:19"}],"id":3679,"name":"ParameterList","src":"24273:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3727,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3682,"name":"ElementaryTypeName","src":"24388:7:19"}],"id":3683,"name":"VariableDeclaration","src":"24388:11:19"}],"id":3684,"name":"ParameterList","src":"24387:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3680,"name":"Identifier","src":"24358:11:19"}],"id":3681,"name":"ModifierInvocation","src":"24358:11:19"},{"children":[{"attributes":{"assignments":[3688]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3726,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3686,"name":"ElementaryTypeName","src":"24411:6:19"}],"id":3687,"name":"ArrayTypeName","src":"24411:8:19"}],"id":3688,"name":"VariableDeclaration","src":"24411:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3689,"name":"ElementaryTypeName","src":"24441:6:19"}],"id":3690,"name":"ArrayTypeName","src":"24441:8:19"}],"id":3691,"name":"NewExpression","src":"24437:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3692,"name":"Literal","src":"24450:1:19"}],"id":3693,"name":"FunctionCall","src":"24437:15:19"}],"id":3694,"name":"VariableDeclarationStatement","src":"24411:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3688,"type":"string memory[] memory","value":"dynargs"},"id":3695,"name":"Identifier","src":"24462:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3696,"name":"Literal","src":"24470:1:19"}],"id":3697,"name":"IndexAccess","src":"24462:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3676,"type":"string memory[3] memory","value":"_args"},"id":3698,"name":"Identifier","src":"24475:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3699,"name":"Literal","src":"24481:1:19"}],"id":3700,"name":"IndexAccess","src":"24475:8:19"}],"id":3701,"name":"Assignment","src":"24462:21:19"}],"id":3702,"name":"ExpressionStatement","src":"24462:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3688,"type":"string memory[] memory","value":"dynargs"},"id":3703,"name":"Identifier","src":"24493:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3704,"name":"Literal","src":"24501:1:19"}],"id":3705,"name":"IndexAccess","src":"24493:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3676,"type":"string memory[3] memory","value":"_args"},"id":3706,"name":"Identifier","src":"24506:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3707,"name":"Literal","src":"24512:1:19"}],"id":3708,"name":"IndexAccess","src":"24506:8:19"}],"id":3709,"name":"Assignment","src":"24493:21:19"}],"id":3710,"name":"ExpressionStatement","src":"24493:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3688,"type":"string memory[] memory","value":"dynargs"},"id":3711,"name":"Identifier","src":"24524:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3712,"name":"Literal","src":"24532:1:19"}],"id":3713,"name":"IndexAccess","src":"24524:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3676,"type":"string memory[3] memory","value":"_args"},"id":3714,"name":"Identifier","src":"24537:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3715,"name":"Literal","src":"24543:1:19"}],"id":3716,"name":"IndexAccess","src":"24537:8:19"}],"id":3717,"name":"Assignment","src":"24524:21:19"}],"id":3718,"name":"ExpressionStatement","src":"24524:21:19"},{"attributes":{"functionReturnParameters":3684},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3719,"name":"Identifier","src":"24562:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3670,"type":"uint256","value":"_timestamp"},"id":3720,"name":"Identifier","src":"24577:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3672,"type":"string memory","value":"_datasource"},"id":3721,"name":"Identifier","src":"24589:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3688,"type":"string memory[] memory","value":"dynargs"},"id":3722,"name":"Identifier","src":"24602:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3678,"type":"uint256","value":"_gasLimit"},"id":3723,"name":"Identifier","src":"24611:9:19"}],"id":3724,"name":"FunctionCall","src":"24562:59:19"}],"id":3725,"name":"Return","src":"24555:66:19"}],"id":3726,"name":"Block","src":"24401:227:19"}],"id":3727,"name":"FunctionDefinition","src":"24250:378:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3783,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3728,"name":"ElementaryTypeName","src":"24658:6:19"}],"id":3729,"name":"VariableDeclaration","src":"24658:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3783,"stateVariable":false,"storageLocation":"memory","type":"string[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[3]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3730,"name":"ElementaryTypeName","src":"24685:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3731,"name":"Literal","src":"24692:1:19"}],"id":3732,"name":"ArrayTypeName","src":"24685:9:19"}],"id":3733,"name":"VariableDeclaration","src":"24685:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3783,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3734,"name":"ElementaryTypeName","src":"24709:4:19"}],"id":3735,"name":"VariableDeclaration","src":"24709:14:19"}],"id":3736,"name":"ParameterList","src":"24657:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3783,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3739,"name":"ElementaryTypeName","src":"24755:7:19"}],"id":3740,"name":"VariableDeclaration","src":"24755:11:19"}],"id":3741,"name":"ParameterList","src":"24754:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3737,"name":"Identifier","src":"24725:11:19"}],"id":3738,"name":"ModifierInvocation","src":"24725:11:19"},{"children":[{"attributes":{"assignments":[3745]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3782,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3743,"name":"ElementaryTypeName","src":"24778:6:19"}],"id":3744,"name":"ArrayTypeName","src":"24778:8:19"}],"id":3745,"name":"VariableDeclaration","src":"24778:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3746,"name":"ElementaryTypeName","src":"24808:6:19"}],"id":3747,"name":"ArrayTypeName","src":"24808:8:19"}],"id":3748,"name":"NewExpression","src":"24804:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3749,"name":"Literal","src":"24817:1:19"}],"id":3750,"name":"FunctionCall","src":"24804:15:19"}],"id":3751,"name":"VariableDeclarationStatement","src":"24778:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3745,"type":"string memory[] memory","value":"dynargs"},"id":3752,"name":"Identifier","src":"24829:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3753,"name":"Literal","src":"24837:1:19"}],"id":3754,"name":"IndexAccess","src":"24829:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3733,"type":"string memory[3] memory","value":"_args"},"id":3755,"name":"Identifier","src":"24842:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3756,"name":"Literal","src":"24848:1:19"}],"id":3757,"name":"IndexAccess","src":"24842:8:19"}],"id":3758,"name":"Assignment","src":"24829:21:19"}],"id":3759,"name":"ExpressionStatement","src":"24829:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3745,"type":"string memory[] memory","value":"dynargs"},"id":3760,"name":"Identifier","src":"24860:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3761,"name":"Literal","src":"24868:1:19"}],"id":3762,"name":"IndexAccess","src":"24860:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3733,"type":"string memory[3] memory","value":"_args"},"id":3763,"name":"Identifier","src":"24873:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3764,"name":"Literal","src":"24879:1:19"}],"id":3765,"name":"IndexAccess","src":"24873:8:19"}],"id":3766,"name":"Assignment","src":"24860:21:19"}],"id":3767,"name":"ExpressionStatement","src":"24860:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3745,"type":"string memory[] memory","value":"dynargs"},"id":3768,"name":"Identifier","src":"24891:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3769,"name":"Literal","src":"24899:1:19"}],"id":3770,"name":"IndexAccess","src":"24891:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3733,"type":"string memory[3] memory","value":"_args"},"id":3771,"name":"Identifier","src":"24904:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3772,"name":"Literal","src":"24910:1:19"}],"id":3773,"name":"IndexAccess","src":"24904:8:19"}],"id":3774,"name":"Assignment","src":"24891:21:19"}],"id":3775,"name":"ExpressionStatement","src":"24891:21:19"},{"attributes":{"functionReturnParameters":3741},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3776,"name":"Identifier","src":"24929:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3729,"type":"string memory","value":"_datasource"},"id":3777,"name":"Identifier","src":"24944:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3745,"type":"string memory[] memory","value":"dynargs"},"id":3778,"name":"Identifier","src":"24957:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3735,"type":"uint256","value":"_gasLimit"},"id":3779,"name":"Identifier","src":"24966:9:19"}],"id":3780,"name":"FunctionCall","src":"24929:47:19"}],"id":3781,"name":"Return","src":"24922:54:19"}],"id":3782,"name":"Block","src":"24768:215:19"}],"id":3783,"name":"FunctionDefinition","src":"24634:349:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":3844,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3784,"name":"ElementaryTypeName","src":"25013:6:19"}],"id":3785,"name":"VariableDeclaration","src":"25013:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3844,"stateVariable":false,"storageLocation":"memory","type":"string[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[4]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3786,"name":"ElementaryTypeName","src":"25040:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3787,"name":"Literal","src":"25047:1:19"}],"id":3788,"name":"ArrayTypeName","src":"25040:9:19"}],"id":3789,"name":"VariableDeclaration","src":"25040:22:19"}],"id":3790,"name":"ParameterList","src":"25012:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3844,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3793,"name":"ElementaryTypeName","src":"25094:7:19"}],"id":3794,"name":"VariableDeclaration","src":"25094:11:19"}],"id":3795,"name":"ParameterList","src":"25093:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3791,"name":"Identifier","src":"25064:11:19"}],"id":3792,"name":"ModifierInvocation","src":"25064:11:19"},{"children":[{"attributes":{"assignments":[3799]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3843,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3797,"name":"ElementaryTypeName","src":"25117:6:19"}],"id":3798,"name":"ArrayTypeName","src":"25117:8:19"}],"id":3799,"name":"VariableDeclaration","src":"25117:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3800,"name":"ElementaryTypeName","src":"25147:6:19"}],"id":3801,"name":"ArrayTypeName","src":"25147:8:19"}],"id":3802,"name":"NewExpression","src":"25143:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3803,"name":"Literal","src":"25156:1:19"}],"id":3804,"name":"FunctionCall","src":"25143:15:19"}],"id":3805,"name":"VariableDeclarationStatement","src":"25117:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3806,"name":"Identifier","src":"25168:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3807,"name":"Literal","src":"25176:1:19"}],"id":3808,"name":"IndexAccess","src":"25168:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"string memory[4] memory","value":"_args"},"id":3809,"name":"Identifier","src":"25181:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3810,"name":"Literal","src":"25187:1:19"}],"id":3811,"name":"IndexAccess","src":"25181:8:19"}],"id":3812,"name":"Assignment","src":"25168:21:19"}],"id":3813,"name":"ExpressionStatement","src":"25168:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3814,"name":"Identifier","src":"25199:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3815,"name":"Literal","src":"25207:1:19"}],"id":3816,"name":"IndexAccess","src":"25199:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"string memory[4] memory","value":"_args"},"id":3817,"name":"Identifier","src":"25212:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3818,"name":"Literal","src":"25218:1:19"}],"id":3819,"name":"IndexAccess","src":"25212:8:19"}],"id":3820,"name":"Assignment","src":"25199:21:19"}],"id":3821,"name":"ExpressionStatement","src":"25199:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3822,"name":"Identifier","src":"25230:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3823,"name":"Literal","src":"25238:1:19"}],"id":3824,"name":"IndexAccess","src":"25230:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"string memory[4] memory","value":"_args"},"id":3825,"name":"Identifier","src":"25243:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3826,"name":"Literal","src":"25249:1:19"}],"id":3827,"name":"IndexAccess","src":"25243:8:19"}],"id":3828,"name":"Assignment","src":"25230:21:19"}],"id":3829,"name":"ExpressionStatement","src":"25230:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3830,"name":"Identifier","src":"25261:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3831,"name":"Literal","src":"25269:1:19"}],"id":3832,"name":"IndexAccess","src":"25261:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3789,"type":"string memory[4] memory","value":"_args"},"id":3833,"name":"Identifier","src":"25274:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3834,"name":"Literal","src":"25280:1:19"}],"id":3835,"name":"IndexAccess","src":"25274:8:19"}],"id":3836,"name":"Assignment","src":"25261:21:19"}],"id":3837,"name":"ExpressionStatement","src":"25261:21:19"},{"attributes":{"functionReturnParameters":3795},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3838,"name":"Identifier","src":"25299:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3785,"type":"string memory","value":"_datasource"},"id":3839,"name":"Identifier","src":"25314:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3799,"type":"string memory[] memory","value":"dynargs"},"id":3840,"name":"Identifier","src":"25327:7:19"}],"id":3841,"name":"FunctionCall","src":"25299:36:19"}],"id":3842,"name":"Return","src":"25292:43:19"}],"id":3843,"name":"Block","src":"25107:235:19"}],"id":3844,"name":"FunctionDefinition","src":"24989:353:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3908,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3845,"name":"ElementaryTypeName","src":"25372:4:19"}],"id":3846,"name":"VariableDeclaration","src":"25372:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3908,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3847,"name":"ElementaryTypeName","src":"25389:6:19"}],"id":3848,"name":"VariableDeclaration","src":"25389:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3908,"stateVariable":false,"storageLocation":"memory","type":"string[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[4]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3849,"name":"ElementaryTypeName","src":"25416:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3850,"name":"Literal","src":"25423:1:19"}],"id":3851,"name":"ArrayTypeName","src":"25416:9:19"}],"id":3852,"name":"VariableDeclaration","src":"25416:22:19"}],"id":3853,"name":"ParameterList","src":"25371:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3908,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3856,"name":"ElementaryTypeName","src":"25470:7:19"}],"id":3857,"name":"VariableDeclaration","src":"25470:11:19"}],"id":3858,"name":"ParameterList","src":"25469:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3854,"name":"Identifier","src":"25440:11:19"}],"id":3855,"name":"ModifierInvocation","src":"25440:11:19"},{"children":[{"attributes":{"assignments":[3862]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3907,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3860,"name":"ElementaryTypeName","src":"25493:6:19"}],"id":3861,"name":"ArrayTypeName","src":"25493:8:19"}],"id":3862,"name":"VariableDeclaration","src":"25493:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3863,"name":"ElementaryTypeName","src":"25523:6:19"}],"id":3864,"name":"ArrayTypeName","src":"25523:8:19"}],"id":3865,"name":"NewExpression","src":"25519:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3866,"name":"Literal","src":"25532:1:19"}],"id":3867,"name":"FunctionCall","src":"25519:15:19"}],"id":3868,"name":"VariableDeclarationStatement","src":"25493:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3869,"name":"Identifier","src":"25544:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3870,"name":"Literal","src":"25552:1:19"}],"id":3871,"name":"IndexAccess","src":"25544:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"string memory[4] memory","value":"_args"},"id":3872,"name":"Identifier","src":"25557:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3873,"name":"Literal","src":"25563:1:19"}],"id":3874,"name":"IndexAccess","src":"25557:8:19"}],"id":3875,"name":"Assignment","src":"25544:21:19"}],"id":3876,"name":"ExpressionStatement","src":"25544:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3877,"name":"Identifier","src":"25575:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3878,"name":"Literal","src":"25583:1:19"}],"id":3879,"name":"IndexAccess","src":"25575:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"string memory[4] memory","value":"_args"},"id":3880,"name":"Identifier","src":"25588:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3881,"name":"Literal","src":"25594:1:19"}],"id":3882,"name":"IndexAccess","src":"25588:8:19"}],"id":3883,"name":"Assignment","src":"25575:21:19"}],"id":3884,"name":"ExpressionStatement","src":"25575:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3885,"name":"Identifier","src":"25606:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3886,"name":"Literal","src":"25614:1:19"}],"id":3887,"name":"IndexAccess","src":"25606:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"string memory[4] memory","value":"_args"},"id":3888,"name":"Identifier","src":"25619:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3889,"name":"Literal","src":"25625:1:19"}],"id":3890,"name":"IndexAccess","src":"25619:8:19"}],"id":3891,"name":"Assignment","src":"25606:21:19"}],"id":3892,"name":"ExpressionStatement","src":"25606:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3893,"name":"Identifier","src":"25637:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3894,"name":"Literal","src":"25645:1:19"}],"id":3895,"name":"IndexAccess","src":"25637:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"string memory[4] memory","value":"_args"},"id":3896,"name":"Identifier","src":"25650:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3897,"name":"Literal","src":"25656:1:19"}],"id":3898,"name":"IndexAccess","src":"25650:8:19"}],"id":3899,"name":"Assignment","src":"25637:21:19"}],"id":3900,"name":"ExpressionStatement","src":"25637:21:19"},{"attributes":{"functionReturnParameters":3858},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":3901,"name":"Identifier","src":"25675:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"uint256","value":"_timestamp"},"id":3902,"name":"Identifier","src":"25690:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"string memory","value":"_datasource"},"id":3903,"name":"Identifier","src":"25702:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"string memory[] memory","value":"dynargs"},"id":3904,"name":"Identifier","src":"25715:7:19"}],"id":3905,"name":"FunctionCall","src":"25675:48:19"}],"id":3906,"name":"Return","src":"25668:55:19"}],"id":3907,"name":"Block","src":"25483:247:19"}],"id":3908,"name":"FunctionDefinition","src":"25348:382:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":3975,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3909,"name":"ElementaryTypeName","src":"25760:4:19"}],"id":3910,"name":"VariableDeclaration","src":"25760:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":3975,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3911,"name":"ElementaryTypeName","src":"25777:6:19"}],"id":3912,"name":"VariableDeclaration","src":"25777:25:19"},{"attributes":{"constant":false,"name":"_args","scope":3975,"stateVariable":false,"storageLocation":"memory","type":"string[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[4]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3913,"name":"ElementaryTypeName","src":"25804:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3914,"name":"Literal","src":"25811:1:19"}],"id":3915,"name":"ArrayTypeName","src":"25804:9:19"}],"id":3916,"name":"VariableDeclaration","src":"25804:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":3975,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3917,"name":"ElementaryTypeName","src":"25828:4:19"}],"id":3918,"name":"VariableDeclaration","src":"25828:14:19"}],"id":3919,"name":"ParameterList","src":"25759:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":3975,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3922,"name":"ElementaryTypeName","src":"25874:7:19"}],"id":3923,"name":"VariableDeclaration","src":"25874:11:19"}],"id":3924,"name":"ParameterList","src":"25873:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3920,"name":"Identifier","src":"25844:11:19"}],"id":3921,"name":"ModifierInvocation","src":"25844:11:19"},{"children":[{"attributes":{"assignments":[3928]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":3974,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3926,"name":"ElementaryTypeName","src":"25897:6:19"}],"id":3927,"name":"ArrayTypeName","src":"25897:8:19"}],"id":3928,"name":"VariableDeclaration","src":"25897:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3929,"name":"ElementaryTypeName","src":"25927:6:19"}],"id":3930,"name":"ArrayTypeName","src":"25927:8:19"}],"id":3931,"name":"NewExpression","src":"25923:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3932,"name":"Literal","src":"25936:1:19"}],"id":3933,"name":"FunctionCall","src":"25923:15:19"}],"id":3934,"name":"VariableDeclarationStatement","src":"25897:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3935,"name":"Identifier","src":"25948:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3936,"name":"Literal","src":"25956:1:19"}],"id":3937,"name":"IndexAccess","src":"25948:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"string memory[4] memory","value":"_args"},"id":3938,"name":"Identifier","src":"25961:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3939,"name":"Literal","src":"25967:1:19"}],"id":3940,"name":"IndexAccess","src":"25961:8:19"}],"id":3941,"name":"Assignment","src":"25948:21:19"}],"id":3942,"name":"ExpressionStatement","src":"25948:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3943,"name":"Identifier","src":"25979:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3944,"name":"Literal","src":"25987:1:19"}],"id":3945,"name":"IndexAccess","src":"25979:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"string memory[4] memory","value":"_args"},"id":3946,"name":"Identifier","src":"25992:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3947,"name":"Literal","src":"25998:1:19"}],"id":3948,"name":"IndexAccess","src":"25992:8:19"}],"id":3949,"name":"Assignment","src":"25979:21:19"}],"id":3950,"name":"ExpressionStatement","src":"25979:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3951,"name":"Identifier","src":"26010:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3952,"name":"Literal","src":"26018:1:19"}],"id":3953,"name":"IndexAccess","src":"26010:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"string memory[4] memory","value":"_args"},"id":3954,"name":"Identifier","src":"26023:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":3955,"name":"Literal","src":"26029:1:19"}],"id":3956,"name":"IndexAccess","src":"26023:8:19"}],"id":3957,"name":"Assignment","src":"26010:21:19"}],"id":3958,"name":"ExpressionStatement","src":"26010:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3959,"name":"Identifier","src":"26041:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3960,"name":"Literal","src":"26049:1:19"}],"id":3961,"name":"IndexAccess","src":"26041:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3916,"type":"string memory[4] memory","value":"_args"},"id":3962,"name":"Identifier","src":"26054:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":3963,"name":"Literal","src":"26060:1:19"}],"id":3964,"name":"IndexAccess","src":"26054:8:19"}],"id":3965,"name":"Assignment","src":"26041:21:19"}],"id":3966,"name":"ExpressionStatement","src":"26041:21:19"},{"attributes":{"functionReturnParameters":3924},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":3967,"name":"Identifier","src":"26079:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"uint256","value":"_timestamp"},"id":3968,"name":"Identifier","src":"26094:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3912,"type":"string memory","value":"_datasource"},"id":3969,"name":"Identifier","src":"26106:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3928,"type":"string memory[] memory","value":"dynargs"},"id":3970,"name":"Identifier","src":"26119:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"uint256","value":"_gasLimit"},"id":3971,"name":"Identifier","src":"26128:9:19"}],"id":3972,"name":"FunctionCall","src":"26079:59:19"}],"id":3973,"name":"Return","src":"26072:66:19"}],"id":3974,"name":"Block","src":"25887:258:19"}],"id":3975,"name":"FunctionDefinition","src":"25736:409:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4039,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3976,"name":"ElementaryTypeName","src":"26175:6:19"}],"id":3977,"name":"VariableDeclaration","src":"26175:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4039,"stateVariable":false,"storageLocation":"memory","type":"string[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[4]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3978,"name":"ElementaryTypeName","src":"26202:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3979,"name":"Literal","src":"26209:1:19"}],"id":3980,"name":"ArrayTypeName","src":"26202:9:19"}],"id":3981,"name":"VariableDeclaration","src":"26202:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3982,"name":"ElementaryTypeName","src":"26226:4:19"}],"id":3983,"name":"VariableDeclaration","src":"26226:14:19"}],"id":3984,"name":"ParameterList","src":"26174:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4039,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3987,"name":"ElementaryTypeName","src":"26272:7:19"}],"id":3988,"name":"VariableDeclaration","src":"26272:11:19"}],"id":3989,"name":"ParameterList","src":"26271:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":3985,"name":"Identifier","src":"26242:11:19"}],"id":3986,"name":"ModifierInvocation","src":"26242:11:19"},{"children":[{"attributes":{"assignments":[3993]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4038,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3991,"name":"ElementaryTypeName","src":"26295:6:19"}],"id":3992,"name":"ArrayTypeName","src":"26295:8:19"}],"id":3993,"name":"VariableDeclaration","src":"26295:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":3994,"name":"ElementaryTypeName","src":"26325:6:19"}],"id":3995,"name":"ArrayTypeName","src":"26325:8:19"}],"id":3996,"name":"NewExpression","src":"26321:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":3997,"name":"Literal","src":"26334:1:19"}],"id":3998,"name":"FunctionCall","src":"26321:15:19"}],"id":3999,"name":"VariableDeclarationStatement","src":"26295:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4000,"name":"Identifier","src":"26346:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4001,"name":"Literal","src":"26354:1:19"}],"id":4002,"name":"IndexAccess","src":"26346:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3981,"type":"string memory[4] memory","value":"_args"},"id":4003,"name":"Identifier","src":"26359:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4004,"name":"Literal","src":"26365:1:19"}],"id":4005,"name":"IndexAccess","src":"26359:8:19"}],"id":4006,"name":"Assignment","src":"26346:21:19"}],"id":4007,"name":"ExpressionStatement","src":"26346:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4008,"name":"Identifier","src":"26377:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4009,"name":"Literal","src":"26385:1:19"}],"id":4010,"name":"IndexAccess","src":"26377:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3981,"type":"string memory[4] memory","value":"_args"},"id":4011,"name":"Identifier","src":"26390:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4012,"name":"Literal","src":"26396:1:19"}],"id":4013,"name":"IndexAccess","src":"26390:8:19"}],"id":4014,"name":"Assignment","src":"26377:21:19"}],"id":4015,"name":"ExpressionStatement","src":"26377:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4016,"name":"Identifier","src":"26408:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4017,"name":"Literal","src":"26416:1:19"}],"id":4018,"name":"IndexAccess","src":"26408:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3981,"type":"string memory[4] memory","value":"_args"},"id":4019,"name":"Identifier","src":"26421:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4020,"name":"Literal","src":"26427:1:19"}],"id":4021,"name":"IndexAccess","src":"26421:8:19"}],"id":4022,"name":"Assignment","src":"26408:21:19"}],"id":4023,"name":"ExpressionStatement","src":"26408:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4024,"name":"Identifier","src":"26439:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4025,"name":"Literal","src":"26447:1:19"}],"id":4026,"name":"IndexAccess","src":"26439:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3981,"type":"string memory[4] memory","value":"_args"},"id":4027,"name":"Identifier","src":"26452:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4028,"name":"Literal","src":"26458:1:19"}],"id":4029,"name":"IndexAccess","src":"26452:8:19"}],"id":4030,"name":"Assignment","src":"26439:21:19"}],"id":4031,"name":"ExpressionStatement","src":"26439:21:19"},{"attributes":{"functionReturnParameters":3989},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4032,"name":"Identifier","src":"26477:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3977,"type":"string memory","value":"_datasource"},"id":4033,"name":"Identifier","src":"26492:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3993,"type":"string memory[] memory","value":"dynargs"},"id":4034,"name":"Identifier","src":"26505:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3983,"type":"uint256","value":"_gasLimit"},"id":4035,"name":"Identifier","src":"26514:9:19"}],"id":4036,"name":"FunctionCall","src":"26477:47:19"}],"id":4037,"name":"Return","src":"26470:54:19"}],"id":4038,"name":"Block","src":"26285:246:19"}],"id":4039,"name":"FunctionDefinition","src":"26151:380:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4108,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4040,"name":"ElementaryTypeName","src":"26561:6:19"}],"id":4041,"name":"VariableDeclaration","src":"26561:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4108,"stateVariable":false,"storageLocation":"memory","type":"string[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[5]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4042,"name":"ElementaryTypeName","src":"26588:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4043,"name":"Literal","src":"26595:1:19"}],"id":4044,"name":"ArrayTypeName","src":"26588:9:19"}],"id":4045,"name":"VariableDeclaration","src":"26588:22:19"}],"id":4046,"name":"ParameterList","src":"26560:51:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4108,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4049,"name":"ElementaryTypeName","src":"26642:7:19"}],"id":4050,"name":"VariableDeclaration","src":"26642:11:19"}],"id":4051,"name":"ParameterList","src":"26641:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4047,"name":"Identifier","src":"26612:11:19"}],"id":4048,"name":"ModifierInvocation","src":"26612:11:19"},{"children":[{"attributes":{"assignments":[4055]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4107,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4053,"name":"ElementaryTypeName","src":"26665:6:19"}],"id":4054,"name":"ArrayTypeName","src":"26665:8:19"}],"id":4055,"name":"VariableDeclaration","src":"26665:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4056,"name":"ElementaryTypeName","src":"26695:6:19"}],"id":4057,"name":"ArrayTypeName","src":"26695:8:19"}],"id":4058,"name":"NewExpression","src":"26691:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4059,"name":"Literal","src":"26704:1:19"}],"id":4060,"name":"FunctionCall","src":"26691:15:19"}],"id":4061,"name":"VariableDeclarationStatement","src":"26665:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4062,"name":"Identifier","src":"26716:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4063,"name":"Literal","src":"26724:1:19"}],"id":4064,"name":"IndexAccess","src":"26716:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4065,"name":"Identifier","src":"26729:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4066,"name":"Literal","src":"26735:1:19"}],"id":4067,"name":"IndexAccess","src":"26729:8:19"}],"id":4068,"name":"Assignment","src":"26716:21:19"}],"id":4069,"name":"ExpressionStatement","src":"26716:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4070,"name":"Identifier","src":"26747:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4071,"name":"Literal","src":"26755:1:19"}],"id":4072,"name":"IndexAccess","src":"26747:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4073,"name":"Identifier","src":"26760:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4074,"name":"Literal","src":"26766:1:19"}],"id":4075,"name":"IndexAccess","src":"26760:8:19"}],"id":4076,"name":"Assignment","src":"26747:21:19"}],"id":4077,"name":"ExpressionStatement","src":"26747:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4078,"name":"Identifier","src":"26778:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4079,"name":"Literal","src":"26786:1:19"}],"id":4080,"name":"IndexAccess","src":"26778:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4081,"name":"Identifier","src":"26791:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4082,"name":"Literal","src":"26797:1:19"}],"id":4083,"name":"IndexAccess","src":"26791:8:19"}],"id":4084,"name":"Assignment","src":"26778:21:19"}],"id":4085,"name":"ExpressionStatement","src":"26778:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4086,"name":"Identifier","src":"26809:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4087,"name":"Literal","src":"26817:1:19"}],"id":4088,"name":"IndexAccess","src":"26809:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4089,"name":"Identifier","src":"26822:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4090,"name":"Literal","src":"26828:1:19"}],"id":4091,"name":"IndexAccess","src":"26822:8:19"}],"id":4092,"name":"Assignment","src":"26809:21:19"}],"id":4093,"name":"ExpressionStatement","src":"26809:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4094,"name":"Identifier","src":"26840:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4095,"name":"Literal","src":"26848:1:19"}],"id":4096,"name":"IndexAccess","src":"26840:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4045,"type":"string memory[5] memory","value":"_args"},"id":4097,"name":"Identifier","src":"26853:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4098,"name":"Literal","src":"26859:1:19"}],"id":4099,"name":"IndexAccess","src":"26853:8:19"}],"id":4100,"name":"Assignment","src":"26840:21:19"}],"id":4101,"name":"ExpressionStatement","src":"26840:21:19"},{"attributes":{"functionReturnParameters":4051},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3051,"type":"function (string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4102,"name":"Identifier","src":"26878:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4041,"type":"string memory","value":"_datasource"},"id":4103,"name":"Identifier","src":"26893:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4055,"type":"string memory[] memory","value":"dynargs"},"id":4104,"name":"Identifier","src":"26906:7:19"}],"id":4105,"name":"FunctionCall","src":"26878:36:19"}],"id":4106,"name":"Return","src":"26871:43:19"}],"id":4107,"name":"Block","src":"26655:266:19"}],"id":4108,"name":"FunctionDefinition","src":"26537:384:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4180,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4109,"name":"ElementaryTypeName","src":"26951:4:19"}],"id":4110,"name":"VariableDeclaration","src":"26951:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4180,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4111,"name":"ElementaryTypeName","src":"26968:6:19"}],"id":4112,"name":"VariableDeclaration","src":"26968:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4180,"stateVariable":false,"storageLocation":"memory","type":"string[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[5]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4113,"name":"ElementaryTypeName","src":"26995:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4114,"name":"Literal","src":"27002:1:19"}],"id":4115,"name":"ArrayTypeName","src":"26995:9:19"}],"id":4116,"name":"VariableDeclaration","src":"26995:22:19"}],"id":4117,"name":"ParameterList","src":"26950:68:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4180,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4120,"name":"ElementaryTypeName","src":"27049:7:19"}],"id":4121,"name":"VariableDeclaration","src":"27049:11:19"}],"id":4122,"name":"ParameterList","src":"27048:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4118,"name":"Identifier","src":"27019:11:19"}],"id":4119,"name":"ModifierInvocation","src":"27019:11:19"},{"children":[{"attributes":{"assignments":[4126]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4179,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4124,"name":"ElementaryTypeName","src":"27072:6:19"}],"id":4125,"name":"ArrayTypeName","src":"27072:8:19"}],"id":4126,"name":"VariableDeclaration","src":"27072:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4127,"name":"ElementaryTypeName","src":"27102:6:19"}],"id":4128,"name":"ArrayTypeName","src":"27102:8:19"}],"id":4129,"name":"NewExpression","src":"27098:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4130,"name":"Literal","src":"27111:1:19"}],"id":4131,"name":"FunctionCall","src":"27098:15:19"}],"id":4132,"name":"VariableDeclarationStatement","src":"27072:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4133,"name":"Identifier","src":"27123:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4134,"name":"Literal","src":"27131:1:19"}],"id":4135,"name":"IndexAccess","src":"27123:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4136,"name":"Identifier","src":"27136:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4137,"name":"Literal","src":"27142:1:19"}],"id":4138,"name":"IndexAccess","src":"27136:8:19"}],"id":4139,"name":"Assignment","src":"27123:21:19"}],"id":4140,"name":"ExpressionStatement","src":"27123:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4141,"name":"Identifier","src":"27154:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4142,"name":"Literal","src":"27162:1:19"}],"id":4143,"name":"IndexAccess","src":"27154:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4144,"name":"Identifier","src":"27167:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4145,"name":"Literal","src":"27173:1:19"}],"id":4146,"name":"IndexAccess","src":"27167:8:19"}],"id":4147,"name":"Assignment","src":"27154:21:19"}],"id":4148,"name":"ExpressionStatement","src":"27154:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4149,"name":"Identifier","src":"27185:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4150,"name":"Literal","src":"27193:1:19"}],"id":4151,"name":"IndexAccess","src":"27185:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4152,"name":"Identifier","src":"27198:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4153,"name":"Literal","src":"27204:1:19"}],"id":4154,"name":"IndexAccess","src":"27198:8:19"}],"id":4155,"name":"Assignment","src":"27185:21:19"}],"id":4156,"name":"ExpressionStatement","src":"27185:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4157,"name":"Identifier","src":"27216:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4158,"name":"Literal","src":"27224:1:19"}],"id":4159,"name":"IndexAccess","src":"27216:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4160,"name":"Identifier","src":"27229:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4161,"name":"Literal","src":"27235:1:19"}],"id":4162,"name":"IndexAccess","src":"27229:8:19"}],"id":4163,"name":"Assignment","src":"27216:21:19"}],"id":4164,"name":"ExpressionStatement","src":"27216:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4165,"name":"Identifier","src":"27247:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4166,"name":"Literal","src":"27255:1:19"}],"id":4167,"name":"IndexAccess","src":"27247:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"string memory[5] memory","value":"_args"},"id":4168,"name":"Identifier","src":"27260:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4169,"name":"Literal","src":"27266:1:19"}],"id":4170,"name":"IndexAccess","src":"27260:8:19"}],"id":4171,"name":"Assignment","src":"27247:21:19"}],"id":4172,"name":"ExpressionStatement","src":"27247:21:19"},{"attributes":{"functionReturnParameters":4122},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3101,"type":"function (uint256,string memory,string memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4173,"name":"Identifier","src":"27285:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4110,"type":"uint256","value":"_timestamp"},"id":4174,"name":"Identifier","src":"27300:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"string memory","value":"_datasource"},"id":4175,"name":"Identifier","src":"27312:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"string memory[] memory","value":"dynargs"},"id":4176,"name":"Identifier","src":"27325:7:19"}],"id":4177,"name":"FunctionCall","src":"27285:48:19"}],"id":4178,"name":"Return","src":"27278:55:19"}],"id":4179,"name":"Block","src":"27062:278:19"}],"id":4180,"name":"FunctionDefinition","src":"26927:413:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4181,"name":"ElementaryTypeName","src":"27370:4:19"}],"id":4182,"name":"VariableDeclaration","src":"27370:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4255,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4183,"name":"ElementaryTypeName","src":"27387:6:19"}],"id":4184,"name":"VariableDeclaration","src":"27387:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4255,"stateVariable":false,"storageLocation":"memory","type":"string[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[5]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4185,"name":"ElementaryTypeName","src":"27414:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4186,"name":"Literal","src":"27421:1:19"}],"id":4187,"name":"ArrayTypeName","src":"27414:9:19"}],"id":4188,"name":"VariableDeclaration","src":"27414:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4189,"name":"ElementaryTypeName","src":"27438:4:19"}],"id":4190,"name":"VariableDeclaration","src":"27438:14:19"}],"id":4191,"name":"ParameterList","src":"27369:84:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4255,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4194,"name":"ElementaryTypeName","src":"27484:7:19"}],"id":4195,"name":"VariableDeclaration","src":"27484:11:19"}],"id":4196,"name":"ParameterList","src":"27483:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4192,"name":"Identifier","src":"27454:11:19"}],"id":4193,"name":"ModifierInvocation","src":"27454:11:19"},{"children":[{"attributes":{"assignments":[4200]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4254,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4198,"name":"ElementaryTypeName","src":"27507:6:19"}],"id":4199,"name":"ArrayTypeName","src":"27507:8:19"}],"id":4200,"name":"VariableDeclaration","src":"27507:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4201,"name":"ElementaryTypeName","src":"27537:6:19"}],"id":4202,"name":"ArrayTypeName","src":"27537:8:19"}],"id":4203,"name":"NewExpression","src":"27533:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4204,"name":"Literal","src":"27546:1:19"}],"id":4205,"name":"FunctionCall","src":"27533:15:19"}],"id":4206,"name":"VariableDeclarationStatement","src":"27507:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4207,"name":"Identifier","src":"27558:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4208,"name":"Literal","src":"27566:1:19"}],"id":4209,"name":"IndexAccess","src":"27558:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4210,"name":"Identifier","src":"27571:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4211,"name":"Literal","src":"27577:1:19"}],"id":4212,"name":"IndexAccess","src":"27571:8:19"}],"id":4213,"name":"Assignment","src":"27558:21:19"}],"id":4214,"name":"ExpressionStatement","src":"27558:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4215,"name":"Identifier","src":"27589:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4216,"name":"Literal","src":"27597:1:19"}],"id":4217,"name":"IndexAccess","src":"27589:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4218,"name":"Identifier","src":"27602:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4219,"name":"Literal","src":"27608:1:19"}],"id":4220,"name":"IndexAccess","src":"27602:8:19"}],"id":4221,"name":"Assignment","src":"27589:21:19"}],"id":4222,"name":"ExpressionStatement","src":"27589:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4223,"name":"Identifier","src":"27620:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4224,"name":"Literal","src":"27628:1:19"}],"id":4225,"name":"IndexAccess","src":"27620:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4226,"name":"Identifier","src":"27633:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4227,"name":"Literal","src":"27639:1:19"}],"id":4228,"name":"IndexAccess","src":"27633:8:19"}],"id":4229,"name":"Assignment","src":"27620:21:19"}],"id":4230,"name":"ExpressionStatement","src":"27620:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4231,"name":"Identifier","src":"27651:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4232,"name":"Literal","src":"27659:1:19"}],"id":4233,"name":"IndexAccess","src":"27651:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4234,"name":"Identifier","src":"27664:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4235,"name":"Literal","src":"27670:1:19"}],"id":4236,"name":"IndexAccess","src":"27664:8:19"}],"id":4237,"name":"Assignment","src":"27651:21:19"}],"id":4238,"name":"ExpressionStatement","src":"27651:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4239,"name":"Identifier","src":"27682:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4240,"name":"Literal","src":"27690:1:19"}],"id":4241,"name":"IndexAccess","src":"27682:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"string memory[5] memory","value":"_args"},"id":4242,"name":"Identifier","src":"27695:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4243,"name":"Literal","src":"27701:1:19"}],"id":4244,"name":"IndexAccess","src":"27695:8:19"}],"id":4245,"name":"Assignment","src":"27682:21:19"}],"id":4246,"name":"ExpressionStatement","src":"27682:21:19"},{"attributes":{"functionReturnParameters":4196},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3155,"type":"function (uint256,string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4247,"name":"Identifier","src":"27720:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4182,"type":"uint256","value":"_timestamp"},"id":4248,"name":"Identifier","src":"27735:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4184,"type":"string memory","value":"_datasource"},"id":4249,"name":"Identifier","src":"27747:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"string memory[] memory","value":"dynargs"},"id":4250,"name":"Identifier","src":"27760:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4190,"type":"uint256","value":"_gasLimit"},"id":4251,"name":"Identifier","src":"27769:9:19"}],"id":4252,"name":"FunctionCall","src":"27720:59:19"}],"id":4253,"name":"Return","src":"27713:66:19"}],"id":4254,"name":"Block","src":"27497:289:19"}],"id":4255,"name":"FunctionDefinition","src":"27346:440:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4327,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4256,"name":"ElementaryTypeName","src":"27816:6:19"}],"id":4257,"name":"VariableDeclaration","src":"27816:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4327,"stateVariable":false,"storageLocation":"memory","type":"string[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"string[5]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4258,"name":"ElementaryTypeName","src":"27843:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4259,"name":"Literal","src":"27850:1:19"}],"id":4260,"name":"ArrayTypeName","src":"27843:9:19"}],"id":4261,"name":"VariableDeclaration","src":"27843:22:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4262,"name":"ElementaryTypeName","src":"27867:4:19"}],"id":4263,"name":"VariableDeclaration","src":"27867:14:19"}],"id":4264,"name":"ParameterList","src":"27815:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4327,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4267,"name":"ElementaryTypeName","src":"27913:7:19"}],"id":4268,"name":"VariableDeclaration","src":"27913:11:19"}],"id":4269,"name":"ParameterList","src":"27912:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4265,"name":"Identifier","src":"27883:11:19"}],"id":4266,"name":"ModifierInvocation","src":"27883:11:19"},{"children":[{"attributes":{"assignments":[4273]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4326,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4271,"name":"ElementaryTypeName","src":"27936:6:19"}],"id":4272,"name":"ArrayTypeName","src":"27936:8:19"}],"id":4273,"name":"VariableDeclaration","src":"27936:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory[] memory)"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":4274,"name":"ElementaryTypeName","src":"27966:6:19"}],"id":4275,"name":"ArrayTypeName","src":"27966:8:19"}],"id":4276,"name":"NewExpression","src":"27962:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":4277,"name":"Literal","src":"27975:1:19"}],"id":4278,"name":"FunctionCall","src":"27962:15:19"}],"id":4279,"name":"VariableDeclarationStatement","src":"27936:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4280,"name":"Identifier","src":"27987:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4281,"name":"Literal","src":"27995:1:19"}],"id":4282,"name":"IndexAccess","src":"27987:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4283,"name":"Identifier","src":"28000:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4284,"name":"Literal","src":"28006:1:19"}],"id":4285,"name":"IndexAccess","src":"28000:8:19"}],"id":4286,"name":"Assignment","src":"27987:21:19"}],"id":4287,"name":"ExpressionStatement","src":"27987:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4288,"name":"Identifier","src":"28018:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4289,"name":"Literal","src":"28026:1:19"}],"id":4290,"name":"IndexAccess","src":"28018:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4291,"name":"Identifier","src":"28031:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4292,"name":"Literal","src":"28037:1:19"}],"id":4293,"name":"IndexAccess","src":"28031:8:19"}],"id":4294,"name":"Assignment","src":"28018:21:19"}],"id":4295,"name":"ExpressionStatement","src":"28018:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4296,"name":"Identifier","src":"28049:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4297,"name":"Literal","src":"28057:1:19"}],"id":4298,"name":"IndexAccess","src":"28049:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4299,"name":"Identifier","src":"28062:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4300,"name":"Literal","src":"28068:1:19"}],"id":4301,"name":"IndexAccess","src":"28062:8:19"}],"id":4302,"name":"Assignment","src":"28049:21:19"}],"id":4303,"name":"ExpressionStatement","src":"28049:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4304,"name":"Identifier","src":"28080:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4305,"name":"Literal","src":"28088:1:19"}],"id":4306,"name":"IndexAccess","src":"28080:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4307,"name":"Identifier","src":"28093:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4308,"name":"Literal","src":"28099:1:19"}],"id":4309,"name":"IndexAccess","src":"28093:8:19"}],"id":4310,"name":"Assignment","src":"28080:21:19"}],"id":4311,"name":"ExpressionStatement","src":"28080:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4312,"name":"Identifier","src":"28111:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4313,"name":"Literal","src":"28119:1:19"}],"id":4314,"name":"IndexAccess","src":"28111:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"string memory[5] memory","value":"_args"},"id":4315,"name":"Identifier","src":"28124:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":4316,"name":"Literal","src":"28130:1:19"}],"id":4317,"name":"IndexAccess","src":"28124:8:19"}],"id":4318,"name":"Assignment","src":"28111:21:19"}],"id":4319,"name":"ExpressionStatement","src":"28111:21:19"},{"attributes":{"functionReturnParameters":4269},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_string_memory_$dyn_memory_ptr","typeString":"string memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":3207,"type":"function (string memory,string memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4320,"name":"Identifier","src":"28149:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"string memory","value":"_datasource"},"id":4321,"name":"Identifier","src":"28164:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"string memory[] memory","value":"dynargs"},"id":4322,"name":"Identifier","src":"28177:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4263,"type":"uint256","value":"_gasLimit"},"id":4323,"name":"Identifier","src":"28186:9:19"}],"id":4324,"name":"FunctionCall","src":"28149:47:19"}],"id":4325,"name":"Return","src":"28142:54:19"}],"id":4326,"name":"Block","src":"27926:277:19"}],"id":4327,"name":"FunctionDefinition","src":"27792:411:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4375,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4328,"name":"ElementaryTypeName","src":"28233:6:19"}],"id":4329,"name":"VariableDeclaration","src":"28233:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":4375,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4330,"name":"ElementaryTypeName","src":"28260:5:19"}],"id":4331,"name":"ArrayTypeName","src":"28260:7:19"}],"id":4332,"name":"VariableDeclaration","src":"28260:20:19"}],"id":4333,"name":"ParameterList","src":"28232:49:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4375,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4336,"name":"ElementaryTypeName","src":"28312:7:19"}],"id":4337,"name":"VariableDeclaration","src":"28312:11:19"}],"id":4338,"name":"ParameterList","src":"28311:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4334,"name":"Identifier","src":"28282:11:19"}],"id":4335,"name":"ModifierInvocation","src":"28282:11:19"},{"children":[{"attributes":{"assignments":[4340]},"children":[{"attributes":{"constant":false,"name":"price","scope":4374,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4339,"name":"ElementaryTypeName","src":"28335:4:19"}],"id":4340,"name":"VariableDeclaration","src":"28335:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4341,"name":"Identifier","src":"28348:8:19"}],"id":4342,"name":"MemberAccess","src":"28348:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4329,"type":"string memory","value":"_datasource"},"id":4343,"name":"Identifier","src":"28366:11:19"}],"id":4344,"name":"FunctionCall","src":"28348:30:19"}],"id":4345,"name":"VariableDeclarationStatement","src":"28335:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4340,"type":"uint256","value":"price"},"id":4346,"name":"Identifier","src":"28392:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":4347,"name":"Literal","src":"28400:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":4348,"name":"Identifier","src":"28410:2:19"}],"id":4349,"name":"MemberAccess","src":"28410:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":4350,"name":"Literal","src":"28424:6:19"}],"id":4351,"name":"BinaryOperation","src":"28410:20:19"}],"id":4352,"name":"BinaryOperation","src":"28400:30:19"}],"id":4353,"name":"BinaryOperation","src":"28392:38:19"},{"children":[{"attributes":{"functionReturnParameters":4338},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4354,"name":"Literal","src":"28453:1:19"}],"id":4355,"name":"Return","src":"28446:8:19"}],"id":4356,"name":"Block","src":"28432:60:19"}],"id":4357,"name":"IfStatement","src":"28388:104:19"},{"attributes":{"assignments":[4359]},"children":[{"attributes":{"constant":false,"name":"args","scope":4374,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4358,"name":"ElementaryTypeName","src":"28501:5:19"}],"id":4359,"name":"VariableDeclaration","src":"28501:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6817,"type":"function (bytes memory[] memory) pure returns (bytes memory)","value":"ba2cbor"},"id":4360,"name":"Identifier","src":"28521:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4332,"type":"bytes memory[] memory","value":"_argN"},"id":4361,"name":"Identifier","src":"28529:5:19"}],"id":4362,"name":"FunctionCall","src":"28521:14:19"}],"id":4363,"name":"VariableDeclarationStatement","src":"28501:34:19"},{"attributes":{"functionReturnParameters":4338},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN","referencedDeclaration":1626,"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4364,"name":"Identifier","src":"28552:8:19"}],"id":4365,"name":"MemberAccess","src":"28552:15:19"}],"id":4366,"name":"MemberAccess","src":"28552:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4340,"type":"uint256","value":"price"},"id":4367,"name":"Identifier","src":"28574:5:19"}],"id":4368,"name":"FunctionCall","src":"28552:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4369,"name":"Literal","src":"28581:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4329,"type":"string memory","value":"_datasource"},"id":4370,"name":"Identifier","src":"28584:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4359,"type":"bytes memory","value":"args"},"id":4371,"name":"Identifier","src":"28597:4:19"}],"id":4372,"name":"FunctionCall","src":"28552:50:19"}],"id":4373,"name":"Return","src":"28545:57:19"}],"id":4374,"name":"Block","src":"28325:284:19"}],"id":4375,"name":"FunctionDefinition","src":"28209:400:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4425,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4376,"name":"ElementaryTypeName","src":"28639:4:19"}],"id":4377,"name":"VariableDeclaration","src":"28639:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4425,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4378,"name":"ElementaryTypeName","src":"28656:6:19"}],"id":4379,"name":"VariableDeclaration","src":"28656:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":4425,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4380,"name":"ElementaryTypeName","src":"28683:5:19"}],"id":4381,"name":"ArrayTypeName","src":"28683:7:19"}],"id":4382,"name":"VariableDeclaration","src":"28683:20:19"}],"id":4383,"name":"ParameterList","src":"28638:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4425,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4386,"name":"ElementaryTypeName","src":"28735:7:19"}],"id":4387,"name":"VariableDeclaration","src":"28735:11:19"}],"id":4388,"name":"ParameterList","src":"28734:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4384,"name":"Identifier","src":"28705:11:19"}],"id":4385,"name":"ModifierInvocation","src":"28705:11:19"},{"children":[{"attributes":{"assignments":[4390]},"children":[{"attributes":{"constant":false,"name":"price","scope":4424,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4389,"name":"ElementaryTypeName","src":"28758:4:19"}],"id":4390,"name":"VariableDeclaration","src":"28758:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1601,"type":"function (string memory) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4391,"name":"Identifier","src":"28771:8:19"}],"id":4392,"name":"MemberAccess","src":"28771:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4379,"type":"string memory","value":"_datasource"},"id":4393,"name":"Identifier","src":"28789:11:19"}],"id":4394,"name":"FunctionCall","src":"28771:30:19"}],"id":4395,"name":"VariableDeclarationStatement","src":"28758:43:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4390,"type":"uint256","value":"price"},"id":4396,"name":"Identifier","src":"28815:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":4397,"name":"Literal","src":"28823:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":4398,"name":"Identifier","src":"28833:2:19"}],"id":4399,"name":"MemberAccess","src":"28833:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 200000","value":"200000"},"id":4400,"name":"Literal","src":"28847:6:19"}],"id":4401,"name":"BinaryOperation","src":"28833:20:19"}],"id":4402,"name":"BinaryOperation","src":"28823:30:19"}],"id":4403,"name":"BinaryOperation","src":"28815:38:19"},{"children":[{"attributes":{"functionReturnParameters":4388},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4404,"name":"Literal","src":"28876:1:19"}],"id":4405,"name":"Return","src":"28869:8:19"}],"id":4406,"name":"Block","src":"28855:60:19"}],"id":4407,"name":"IfStatement","src":"28811:104:19"},{"attributes":{"assignments":[4409]},"children":[{"attributes":{"constant":false,"name":"args","scope":4424,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4408,"name":"ElementaryTypeName","src":"28924:5:19"}],"id":4409,"name":"VariableDeclaration","src":"28924:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6817,"type":"function (bytes memory[] memory) pure returns (bytes memory)","value":"ba2cbor"},"id":4410,"name":"Identifier","src":"28944:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4382,"type":"bytes memory[] memory","value":"_argN"},"id":4411,"name":"Identifier","src":"28952:5:19"}],"id":4412,"name":"FunctionCall","src":"28944:14:19"}],"id":4413,"name":"VariableDeclarationStatement","src":"28924:34:19"},{"attributes":{"functionReturnParameters":4388},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN","referencedDeclaration":1626,"type":"function (uint256,string memory,bytes memory) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4414,"name":"Identifier","src":"28975:8:19"}],"id":4415,"name":"MemberAccess","src":"28975:15:19"}],"id":4416,"name":"MemberAccess","src":"28975:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4390,"type":"uint256","value":"price"},"id":4417,"name":"Identifier","src":"28997:5:19"}],"id":4418,"name":"FunctionCall","src":"28975:28:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4377,"type":"uint256","value":"_timestamp"},"id":4419,"name":"Identifier","src":"29004:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4379,"type":"string memory","value":"_datasource"},"id":4420,"name":"Identifier","src":"29016:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"bytes memory","value":"args"},"id":4421,"name":"Identifier","src":"29029:4:19"}],"id":4422,"name":"FunctionCall","src":"28975:59:19"}],"id":4423,"name":"Return","src":"28968:66:19"}],"id":4424,"name":"Block","src":"28748:293:19"}],"id":4425,"name":"FunctionDefinition","src":"28615:426:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4426,"name":"ElementaryTypeName","src":"29071:4:19"}],"id":4427,"name":"VariableDeclaration","src":"29071:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4479,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4428,"name":"ElementaryTypeName","src":"29088:6:19"}],"id":4429,"name":"VariableDeclaration","src":"29088:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":4479,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4430,"name":"ElementaryTypeName","src":"29115:5:19"}],"id":4431,"name":"ArrayTypeName","src":"29115:7:19"}],"id":4432,"name":"VariableDeclaration","src":"29115:20:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4433,"name":"ElementaryTypeName","src":"29137:4:19"}],"id":4434,"name":"VariableDeclaration","src":"29137:14:19"}],"id":4435,"name":"ParameterList","src":"29070:82:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4479,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4438,"name":"ElementaryTypeName","src":"29183:7:19"}],"id":4439,"name":"VariableDeclaration","src":"29183:11:19"}],"id":4440,"name":"ParameterList","src":"29182:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4436,"name":"Identifier","src":"29153:11:19"}],"id":4437,"name":"ModifierInvocation","src":"29153:11:19"},{"children":[{"attributes":{"assignments":[4442]},"children":[{"attributes":{"constant":false,"name":"price","scope":4478,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4441,"name":"ElementaryTypeName","src":"29206:4:19"}],"id":4442,"name":"VariableDeclaration","src":"29206:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4443,"name":"Identifier","src":"29219:8:19"}],"id":4444,"name":"MemberAccess","src":"29219:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4429,"type":"string memory","value":"_datasource"},"id":4445,"name":"Identifier","src":"29237:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4434,"type":"uint256","value":"_gasLimit"},"id":4446,"name":"Identifier","src":"29250:9:19"}],"id":4447,"name":"FunctionCall","src":"29219:41:19"}],"id":4448,"name":"VariableDeclarationStatement","src":"29206:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4442,"type":"uint256","value":"price"},"id":4449,"name":"Identifier","src":"29274:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":4450,"name":"Literal","src":"29282:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":4451,"name":"Identifier","src":"29292:2:19"}],"id":4452,"name":"MemberAccess","src":"29292:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4434,"type":"uint256","value":"_gasLimit"},"id":4453,"name":"Identifier","src":"29306:9:19"}],"id":4454,"name":"BinaryOperation","src":"29292:23:19"}],"id":4455,"name":"BinaryOperation","src":"29282:33:19"}],"id":4456,"name":"BinaryOperation","src":"29274:41:19"},{"children":[{"attributes":{"functionReturnParameters":4440},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4457,"name":"Literal","src":"29338:1:19"}],"id":4458,"name":"Return","src":"29331:8:19"}],"id":4459,"name":"Block","src":"29317:60:19"}],"id":4460,"name":"IfStatement","src":"29270:107:19"},{"attributes":{"assignments":[4462]},"children":[{"attributes":{"constant":false,"name":"args","scope":4478,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4461,"name":"ElementaryTypeName","src":"29386:5:19"}],"id":4462,"name":"VariableDeclaration","src":"29386:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6817,"type":"function (bytes memory[] memory) pure returns (bytes memory)","value":"ba2cbor"},"id":4463,"name":"Identifier","src":"29406:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4432,"type":"bytes memory[] memory","value":"_argN"},"id":4464,"name":"Identifier","src":"29414:5:19"}],"id":4465,"name":"FunctionCall","src":"29406:14:19"}],"id":4466,"name":"VariableDeclarationStatement","src":"29386:34:19"},{"attributes":{"functionReturnParameters":4440},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN_withGasLimit","referencedDeclaration":1676,"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4467,"name":"Identifier","src":"29437:8:19"}],"id":4468,"name":"MemberAccess","src":"29437:28:19"}],"id":4469,"name":"MemberAccess","src":"29437:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4442,"type":"uint256","value":"price"},"id":4470,"name":"Identifier","src":"29472:5:19"}],"id":4471,"name":"FunctionCall","src":"29437:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4427,"type":"uint256","value":"_timestamp"},"id":4472,"name":"Identifier","src":"29479:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4429,"type":"string memory","value":"_datasource"},"id":4473,"name":"Identifier","src":"29491:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4462,"type":"bytes memory","value":"args"},"id":4474,"name":"Identifier","src":"29504:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4434,"type":"uint256","value":"_gasLimit"},"id":4475,"name":"Identifier","src":"29510:9:19"}],"id":4476,"name":"FunctionCall","src":"29437:83:19"}],"id":4477,"name":"Return","src":"29430:90:19"}],"id":4478,"name":"Block","src":"29196:331:19"}],"id":4479,"name":"FunctionDefinition","src":"29047:480:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4531,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4480,"name":"ElementaryTypeName","src":"29557:6:19"}],"id":4481,"name":"VariableDeclaration","src":"29557:25:19"},{"attributes":{"constant":false,"name":"_argN","scope":4531,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4482,"name":"ElementaryTypeName","src":"29584:5:19"}],"id":4483,"name":"ArrayTypeName","src":"29584:7:19"}],"id":4484,"name":"VariableDeclaration","src":"29584:20:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4531,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4485,"name":"ElementaryTypeName","src":"29606:4:19"}],"id":4486,"name":"VariableDeclaration","src":"29606:14:19"}],"id":4487,"name":"ParameterList","src":"29556:65:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4531,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4490,"name":"ElementaryTypeName","src":"29652:7:19"}],"id":4491,"name":"VariableDeclaration","src":"29652:11:19"}],"id":4492,"name":"ParameterList","src":"29651:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4488,"name":"Identifier","src":"29622:11:19"}],"id":4489,"name":"ModifierInvocation","src":"29622:11:19"},{"children":[{"attributes":{"assignments":[4494]},"children":[{"attributes":{"constant":false,"name":"price","scope":4530,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4493,"name":"ElementaryTypeName","src":"29675:4:19"}],"id":4494,"name":"VariableDeclaration","src":"29675:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getPrice","referencedDeclaration":1615,"type":"function (string memory,uint256) external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4495,"name":"Identifier","src":"29688:8:19"}],"id":4496,"name":"MemberAccess","src":"29688:17:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"string memory","value":"_datasource"},"id":4497,"name":"Identifier","src":"29706:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4486,"type":"uint256","value":"_gasLimit"},"id":4498,"name":"Identifier","src":"29719:9:19"}],"id":4499,"name":"FunctionCall","src":"29688:41:19"}],"id":4500,"name":"VariableDeclarationStatement","src":"29675:54:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4494,"type":"uint256","value":"price"},"id":4501,"name":"Identifier","src":"29743:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"ether","token":"number","type":"int_const 1000000000000000000","value":"1"},"id":4502,"name":"Literal","src":"29751:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"gasprice","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15721,"type":"tx","value":"tx"},"id":4503,"name":"Identifier","src":"29761:2:19"}],"id":4504,"name":"MemberAccess","src":"29761:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4486,"type":"uint256","value":"_gasLimit"},"id":4505,"name":"Identifier","src":"29775:9:19"}],"id":4506,"name":"BinaryOperation","src":"29761:23:19"}],"id":4507,"name":"BinaryOperation","src":"29751:33:19"}],"id":4508,"name":"BinaryOperation","src":"29743:41:19"},{"children":[{"attributes":{"functionReturnParameters":4492},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4509,"name":"Literal","src":"29807:1:19"}],"id":4510,"name":"Return","src":"29800:8:19"}],"id":4511,"name":"Block","src":"29786:60:19"}],"id":4512,"name":"IfStatement","src":"29739:107:19"},{"attributes":{"assignments":[4514]},"children":[{"attributes":{"constant":false,"name":"args","scope":4530,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4513,"name":"ElementaryTypeName","src":"29855:5:19"}],"id":4514,"name":"VariableDeclaration","src":"29855:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6817,"type":"function (bytes memory[] memory) pure returns (bytes memory)","value":"ba2cbor"},"id":4515,"name":"Identifier","src":"29875:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"bytes memory[] memory","value":"_argN"},"id":4516,"name":"Identifier","src":"29883:5:19"}],"id":4517,"name":"FunctionCall","src":"29875:14:19"}],"id":4518,"name":"VariableDeclarationStatement","src":"29855:34:19"},{"attributes":{"functionReturnParameters":4492},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"queryN_withGasLimit","referencedDeclaration":1676,"type":"function (uint256,string memory,bytes memory,uint256) payable external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":4519,"name":"Identifier","src":"29906:8:19"}],"id":4520,"name":"MemberAccess","src":"29906:28:19"}],"id":4521,"name":"MemberAccess","src":"29906:34:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4494,"type":"uint256","value":"price"},"id":4522,"name":"Identifier","src":"29941:5:19"}],"id":4523,"name":"FunctionCall","src":"29906:41:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4524,"name":"Literal","src":"29948:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"string memory","value":"_datasource"},"id":4525,"name":"Identifier","src":"29951:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4514,"type":"bytes memory","value":"args"},"id":4526,"name":"Identifier","src":"29964:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4486,"type":"uint256","value":"_gasLimit"},"id":4527,"name":"Identifier","src":"29970:9:19"}],"id":4528,"name":"FunctionCall","src":"29906:74:19"}],"id":4529,"name":"Return","src":"29899:81:19"}],"id":4530,"name":"Block","src":"29665:322:19"}],"id":4531,"name":"FunctionDefinition","src":"29533:454:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4568,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4532,"name":"ElementaryTypeName","src":"30017:6:19"}],"id":4533,"name":"VariableDeclaration","src":"30017:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4568,"stateVariable":false,"storageLocation":"memory","type":"bytes[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[1]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4534,"name":"ElementaryTypeName","src":"30044:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4535,"name":"Literal","src":"30050:1:19"}],"id":4536,"name":"ArrayTypeName","src":"30044:8:19"}],"id":4537,"name":"VariableDeclaration","src":"30044:21:19"}],"id":4538,"name":"ParameterList","src":"30016:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4568,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4541,"name":"ElementaryTypeName","src":"30097:7:19"}],"id":4542,"name":"VariableDeclaration","src":"30097:11:19"}],"id":4543,"name":"ParameterList","src":"30096:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4539,"name":"Identifier","src":"30067:11:19"}],"id":4540,"name":"ModifierInvocation","src":"30067:11:19"},{"children":[{"attributes":{"assignments":[4547]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4567,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4545,"name":"ElementaryTypeName","src":"30120:5:19"}],"id":4546,"name":"ArrayTypeName","src":"30120:7:19"}],"id":4547,"name":"VariableDeclaration","src":"30120:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4548,"name":"ElementaryTypeName","src":"30149:5:19"}],"id":4549,"name":"ArrayTypeName","src":"30149:7:19"}],"id":4550,"name":"NewExpression","src":"30145:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4551,"name":"Literal","src":"30157:1:19"}],"id":4552,"name":"FunctionCall","src":"30145:14:19"}],"id":4553,"name":"VariableDeclarationStatement","src":"30120:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"bytes memory[] memory","value":"dynargs"},"id":4554,"name":"Identifier","src":"30169:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4555,"name":"Literal","src":"30177:1:19"}],"id":4556,"name":"IndexAccess","src":"30169:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4537,"type":"bytes memory[1] memory","value":"_args"},"id":4557,"name":"Identifier","src":"30182:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4558,"name":"Literal","src":"30188:1:19"}],"id":4559,"name":"IndexAccess","src":"30182:8:19"}],"id":4560,"name":"Assignment","src":"30169:21:19"}],"id":4561,"name":"ExpressionStatement","src":"30169:21:19"},{"attributes":{"functionReturnParameters":4543},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4562,"name":"Identifier","src":"30207:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4533,"type":"string memory","value":"_datasource"},"id":4563,"name":"Identifier","src":"30222:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"bytes memory[] memory","value":"dynargs"},"id":4564,"name":"Identifier","src":"30235:7:19"}],"id":4565,"name":"FunctionCall","src":"30207:36:19"}],"id":4566,"name":"Return","src":"30200:43:19"}],"id":4567,"name":"Block","src":"30110:140:19"}],"id":4568,"name":"FunctionDefinition","src":"29993:257:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4608,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4569,"name":"ElementaryTypeName","src":"30280:4:19"}],"id":4570,"name":"VariableDeclaration","src":"30280:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4608,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4571,"name":"ElementaryTypeName","src":"30297:6:19"}],"id":4572,"name":"VariableDeclaration","src":"30297:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4608,"stateVariable":false,"storageLocation":"memory","type":"bytes[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[1]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4573,"name":"ElementaryTypeName","src":"30324:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4574,"name":"Literal","src":"30330:1:19"}],"id":4575,"name":"ArrayTypeName","src":"30324:8:19"}],"id":4576,"name":"VariableDeclaration","src":"30324:21:19"}],"id":4577,"name":"ParameterList","src":"30279:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4608,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4580,"name":"ElementaryTypeName","src":"30377:7:19"}],"id":4581,"name":"VariableDeclaration","src":"30377:11:19"}],"id":4582,"name":"ParameterList","src":"30376:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4578,"name":"Identifier","src":"30347:11:19"}],"id":4579,"name":"ModifierInvocation","src":"30347:11:19"},{"children":[{"attributes":{"assignments":[4586]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4607,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4584,"name":"ElementaryTypeName","src":"30400:5:19"}],"id":4585,"name":"ArrayTypeName","src":"30400:7:19"}],"id":4586,"name":"VariableDeclaration","src":"30400:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4587,"name":"ElementaryTypeName","src":"30429:5:19"}],"id":4588,"name":"ArrayTypeName","src":"30429:7:19"}],"id":4589,"name":"NewExpression","src":"30425:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4590,"name":"Literal","src":"30437:1:19"}],"id":4591,"name":"FunctionCall","src":"30425:14:19"}],"id":4592,"name":"VariableDeclarationStatement","src":"30400:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4586,"type":"bytes memory[] memory","value":"dynargs"},"id":4593,"name":"Identifier","src":"30449:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4594,"name":"Literal","src":"30457:1:19"}],"id":4595,"name":"IndexAccess","src":"30449:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4576,"type":"bytes memory[1] memory","value":"_args"},"id":4596,"name":"Identifier","src":"30462:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4597,"name":"Literal","src":"30468:1:19"}],"id":4598,"name":"IndexAccess","src":"30462:8:19"}],"id":4599,"name":"Assignment","src":"30449:21:19"}],"id":4600,"name":"ExpressionStatement","src":"30449:21:19"},{"attributes":{"functionReturnParameters":4582},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4601,"name":"Identifier","src":"30487:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4570,"type":"uint256","value":"_timestamp"},"id":4602,"name":"Identifier","src":"30502:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4572,"type":"string memory","value":"_datasource"},"id":4603,"name":"Identifier","src":"30514:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4586,"type":"bytes memory[] memory","value":"dynargs"},"id":4604,"name":"Identifier","src":"30527:7:19"}],"id":4605,"name":"FunctionCall","src":"30487:48:19"}],"id":4606,"name":"Return","src":"30480:55:19"}],"id":4607,"name":"Block","src":"30390:152:19"}],"id":4608,"name":"FunctionDefinition","src":"30256:286:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4609,"name":"ElementaryTypeName","src":"30572:4:19"}],"id":4610,"name":"VariableDeclaration","src":"30572:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4651,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4611,"name":"ElementaryTypeName","src":"30589:6:19"}],"id":4612,"name":"VariableDeclaration","src":"30589:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4651,"stateVariable":false,"storageLocation":"memory","type":"bytes[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[1]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4613,"name":"ElementaryTypeName","src":"30616:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4614,"name":"Literal","src":"30622:1:19"}],"id":4615,"name":"ArrayTypeName","src":"30616:8:19"}],"id":4616,"name":"VariableDeclaration","src":"30616:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4617,"name":"ElementaryTypeName","src":"30639:4:19"}],"id":4618,"name":"VariableDeclaration","src":"30639:14:19"}],"id":4619,"name":"ParameterList","src":"30571:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4651,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4622,"name":"ElementaryTypeName","src":"30685:7:19"}],"id":4623,"name":"VariableDeclaration","src":"30685:11:19"}],"id":4624,"name":"ParameterList","src":"30684:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4620,"name":"Identifier","src":"30655:11:19"}],"id":4621,"name":"ModifierInvocation","src":"30655:11:19"},{"children":[{"attributes":{"assignments":[4628]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4650,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4626,"name":"ElementaryTypeName","src":"30708:5:19"}],"id":4627,"name":"ArrayTypeName","src":"30708:7:19"}],"id":4628,"name":"VariableDeclaration","src":"30708:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4629,"name":"ElementaryTypeName","src":"30737:5:19"}],"id":4630,"name":"ArrayTypeName","src":"30737:7:19"}],"id":4631,"name":"NewExpression","src":"30733:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4632,"name":"Literal","src":"30745:1:19"}],"id":4633,"name":"FunctionCall","src":"30733:14:19"}],"id":4634,"name":"VariableDeclarationStatement","src":"30708:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"bytes memory[] memory","value":"dynargs"},"id":4635,"name":"Identifier","src":"30757:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4636,"name":"Literal","src":"30765:1:19"}],"id":4637,"name":"IndexAccess","src":"30757:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4616,"type":"bytes memory[1] memory","value":"_args"},"id":4638,"name":"Identifier","src":"30770:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4639,"name":"Literal","src":"30776:1:19"}],"id":4640,"name":"IndexAccess","src":"30770:8:19"}],"id":4641,"name":"Assignment","src":"30757:21:19"}],"id":4642,"name":"ExpressionStatement","src":"30757:21:19"},{"attributes":{"functionReturnParameters":4624},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4643,"name":"Identifier","src":"30795:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4610,"type":"uint256","value":"_timestamp"},"id":4644,"name":"Identifier","src":"30810:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4612,"type":"string memory","value":"_datasource"},"id":4645,"name":"Identifier","src":"30822:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"bytes memory[] memory","value":"dynargs"},"id":4646,"name":"Identifier","src":"30835:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4618,"type":"uint256","value":"_gasLimit"},"id":4647,"name":"Identifier","src":"30844:9:19"}],"id":4648,"name":"FunctionCall","src":"30795:59:19"}],"id":4649,"name":"Return","src":"30788:66:19"}],"id":4650,"name":"Block","src":"30698:163:19"}],"id":4651,"name":"FunctionDefinition","src":"30548:313:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4691,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4652,"name":"ElementaryTypeName","src":"30891:6:19"}],"id":4653,"name":"VariableDeclaration","src":"30891:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4691,"stateVariable":false,"storageLocation":"memory","type":"bytes[1]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[1]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4654,"name":"ElementaryTypeName","src":"30918:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4655,"name":"Literal","src":"30924:1:19"}],"id":4656,"name":"ArrayTypeName","src":"30918:8:19"}],"id":4657,"name":"VariableDeclaration","src":"30918:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4691,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4658,"name":"ElementaryTypeName","src":"30941:4:19"}],"id":4659,"name":"VariableDeclaration","src":"30941:14:19"}],"id":4660,"name":"ParameterList","src":"30890:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4691,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4663,"name":"ElementaryTypeName","src":"30987:7:19"}],"id":4664,"name":"VariableDeclaration","src":"30987:11:19"}],"id":4665,"name":"ParameterList","src":"30986:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4661,"name":"Identifier","src":"30957:11:19"}],"id":4662,"name":"ModifierInvocation","src":"30957:11:19"},{"children":[{"attributes":{"assignments":[4669]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4690,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4667,"name":"ElementaryTypeName","src":"31010:5:19"}],"id":4668,"name":"ArrayTypeName","src":"31010:7:19"}],"id":4669,"name":"VariableDeclaration","src":"31010:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4670,"name":"ElementaryTypeName","src":"31039:5:19"}],"id":4671,"name":"ArrayTypeName","src":"31039:7:19"}],"id":4672,"name":"NewExpression","src":"31035:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4673,"name":"Literal","src":"31047:1:19"}],"id":4674,"name":"FunctionCall","src":"31035:14:19"}],"id":4675,"name":"VariableDeclarationStatement","src":"31010:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"bytes memory[] memory","value":"dynargs"},"id":4676,"name":"Identifier","src":"31059:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4677,"name":"Literal","src":"31067:1:19"}],"id":4678,"name":"IndexAccess","src":"31059:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4657,"type":"bytes memory[1] memory","value":"_args"},"id":4679,"name":"Identifier","src":"31072:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4680,"name":"Literal","src":"31078:1:19"}],"id":4681,"name":"IndexAccess","src":"31072:8:19"}],"id":4682,"name":"Assignment","src":"31059:21:19"}],"id":4683,"name":"ExpressionStatement","src":"31059:21:19"},{"attributes":{"functionReturnParameters":4665},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4684,"name":"Identifier","src":"31097:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4653,"type":"string memory","value":"_datasource"},"id":4685,"name":"Identifier","src":"31112:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4669,"type":"bytes memory[] memory","value":"dynargs"},"id":4686,"name":"Identifier","src":"31125:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4659,"type":"uint256","value":"_gasLimit"},"id":4687,"name":"Identifier","src":"31134:9:19"}],"id":4688,"name":"FunctionCall","src":"31097:47:19"}],"id":4689,"name":"Return","src":"31090:54:19"}],"id":4690,"name":"Block","src":"31000:151:19"}],"id":4691,"name":"FunctionDefinition","src":"30867:284:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4736,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4692,"name":"ElementaryTypeName","src":"31181:6:19"}],"id":4693,"name":"VariableDeclaration","src":"31181:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4736,"stateVariable":false,"storageLocation":"memory","type":"bytes[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[2]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4694,"name":"ElementaryTypeName","src":"31208:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4695,"name":"Literal","src":"31214:1:19"}],"id":4696,"name":"ArrayTypeName","src":"31208:8:19"}],"id":4697,"name":"VariableDeclaration","src":"31208:21:19"}],"id":4698,"name":"ParameterList","src":"31180:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4736,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4701,"name":"ElementaryTypeName","src":"31261:7:19"}],"id":4702,"name":"VariableDeclaration","src":"31261:11:19"}],"id":4703,"name":"ParameterList","src":"31260:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4699,"name":"Identifier","src":"31231:11:19"}],"id":4700,"name":"ModifierInvocation","src":"31231:11:19"},{"children":[{"attributes":{"assignments":[4707]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4735,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4705,"name":"ElementaryTypeName","src":"31284:5:19"}],"id":4706,"name":"ArrayTypeName","src":"31284:7:19"}],"id":4707,"name":"VariableDeclaration","src":"31284:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4708,"name":"ElementaryTypeName","src":"31313:5:19"}],"id":4709,"name":"ArrayTypeName","src":"31313:7:19"}],"id":4710,"name":"NewExpression","src":"31309:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4711,"name":"Literal","src":"31321:1:19"}],"id":4712,"name":"FunctionCall","src":"31309:14:19"}],"id":4713,"name":"VariableDeclarationStatement","src":"31284:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4707,"type":"bytes memory[] memory","value":"dynargs"},"id":4714,"name":"Identifier","src":"31333:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4715,"name":"Literal","src":"31341:1:19"}],"id":4716,"name":"IndexAccess","src":"31333:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4697,"type":"bytes memory[2] memory","value":"_args"},"id":4717,"name":"Identifier","src":"31346:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4718,"name":"Literal","src":"31352:1:19"}],"id":4719,"name":"IndexAccess","src":"31346:8:19"}],"id":4720,"name":"Assignment","src":"31333:21:19"}],"id":4721,"name":"ExpressionStatement","src":"31333:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4707,"type":"bytes memory[] memory","value":"dynargs"},"id":4722,"name":"Identifier","src":"31364:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4723,"name":"Literal","src":"31372:1:19"}],"id":4724,"name":"IndexAccess","src":"31364:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4697,"type":"bytes memory[2] memory","value":"_args"},"id":4725,"name":"Identifier","src":"31377:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4726,"name":"Literal","src":"31383:1:19"}],"id":4727,"name":"IndexAccess","src":"31377:8:19"}],"id":4728,"name":"Assignment","src":"31364:21:19"}],"id":4729,"name":"ExpressionStatement","src":"31364:21:19"},{"attributes":{"functionReturnParameters":4703},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4730,"name":"Identifier","src":"31402:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4693,"type":"string memory","value":"_datasource"},"id":4731,"name":"Identifier","src":"31417:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4707,"type":"bytes memory[] memory","value":"dynargs"},"id":4732,"name":"Identifier","src":"31430:7:19"}],"id":4733,"name":"FunctionCall","src":"31402:36:19"}],"id":4734,"name":"Return","src":"31395:43:19"}],"id":4735,"name":"Block","src":"31274:171:19"}],"id":4736,"name":"FunctionDefinition","src":"31157:288:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4784,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4737,"name":"ElementaryTypeName","src":"31475:4:19"}],"id":4738,"name":"VariableDeclaration","src":"31475:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4784,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4739,"name":"ElementaryTypeName","src":"31492:6:19"}],"id":4740,"name":"VariableDeclaration","src":"31492:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4784,"stateVariable":false,"storageLocation":"memory","type":"bytes[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[2]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4741,"name":"ElementaryTypeName","src":"31519:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4742,"name":"Literal","src":"31525:1:19"}],"id":4743,"name":"ArrayTypeName","src":"31519:8:19"}],"id":4744,"name":"VariableDeclaration","src":"31519:21:19"}],"id":4745,"name":"ParameterList","src":"31474:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4784,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4748,"name":"ElementaryTypeName","src":"31572:7:19"}],"id":4749,"name":"VariableDeclaration","src":"31572:11:19"}],"id":4750,"name":"ParameterList","src":"31571:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4746,"name":"Identifier","src":"31542:11:19"}],"id":4747,"name":"ModifierInvocation","src":"31542:11:19"},{"children":[{"attributes":{"assignments":[4754]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4783,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4752,"name":"ElementaryTypeName","src":"31595:5:19"}],"id":4753,"name":"ArrayTypeName","src":"31595:7:19"}],"id":4754,"name":"VariableDeclaration","src":"31595:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4755,"name":"ElementaryTypeName","src":"31624:5:19"}],"id":4756,"name":"ArrayTypeName","src":"31624:7:19"}],"id":4757,"name":"NewExpression","src":"31620:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4758,"name":"Literal","src":"31632:1:19"}],"id":4759,"name":"FunctionCall","src":"31620:14:19"}],"id":4760,"name":"VariableDeclarationStatement","src":"31595:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4754,"type":"bytes memory[] memory","value":"dynargs"},"id":4761,"name":"Identifier","src":"31644:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4762,"name":"Literal","src":"31652:1:19"}],"id":4763,"name":"IndexAccess","src":"31644:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4744,"type":"bytes memory[2] memory","value":"_args"},"id":4764,"name":"Identifier","src":"31657:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4765,"name":"Literal","src":"31663:1:19"}],"id":4766,"name":"IndexAccess","src":"31657:8:19"}],"id":4767,"name":"Assignment","src":"31644:21:19"}],"id":4768,"name":"ExpressionStatement","src":"31644:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4754,"type":"bytes memory[] memory","value":"dynargs"},"id":4769,"name":"Identifier","src":"31675:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4770,"name":"Literal","src":"31683:1:19"}],"id":4771,"name":"IndexAccess","src":"31675:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4744,"type":"bytes memory[2] memory","value":"_args"},"id":4772,"name":"Identifier","src":"31688:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4773,"name":"Literal","src":"31694:1:19"}],"id":4774,"name":"IndexAccess","src":"31688:8:19"}],"id":4775,"name":"Assignment","src":"31675:21:19"}],"id":4776,"name":"ExpressionStatement","src":"31675:21:19"},{"attributes":{"functionReturnParameters":4750},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4777,"name":"Identifier","src":"31713:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4738,"type":"uint256","value":"_timestamp"},"id":4778,"name":"Identifier","src":"31728:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4740,"type":"string memory","value":"_datasource"},"id":4779,"name":"Identifier","src":"31740:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4754,"type":"bytes memory[] memory","value":"dynargs"},"id":4780,"name":"Identifier","src":"31753:7:19"}],"id":4781,"name":"FunctionCall","src":"31713:48:19"}],"id":4782,"name":"Return","src":"31706:55:19"}],"id":4783,"name":"Block","src":"31585:183:19"}],"id":4784,"name":"FunctionDefinition","src":"31451:317:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4785,"name":"ElementaryTypeName","src":"31798:4:19"}],"id":4786,"name":"VariableDeclaration","src":"31798:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4835,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4787,"name":"ElementaryTypeName","src":"31815:6:19"}],"id":4788,"name":"VariableDeclaration","src":"31815:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4835,"stateVariable":false,"storageLocation":"memory","type":"bytes[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[2]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4789,"name":"ElementaryTypeName","src":"31842:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4790,"name":"Literal","src":"31848:1:19"}],"id":4791,"name":"ArrayTypeName","src":"31842:8:19"}],"id":4792,"name":"VariableDeclaration","src":"31842:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4793,"name":"ElementaryTypeName","src":"31865:4:19"}],"id":4794,"name":"VariableDeclaration","src":"31865:14:19"}],"id":4795,"name":"ParameterList","src":"31797:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4798,"name":"ElementaryTypeName","src":"31911:7:19"}],"id":4799,"name":"VariableDeclaration","src":"31911:11:19"}],"id":4800,"name":"ParameterList","src":"31910:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4796,"name":"Identifier","src":"31881:11:19"}],"id":4797,"name":"ModifierInvocation","src":"31881:11:19"},{"children":[{"attributes":{"assignments":[4804]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4834,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4802,"name":"ElementaryTypeName","src":"31934:5:19"}],"id":4803,"name":"ArrayTypeName","src":"31934:7:19"}],"id":4804,"name":"VariableDeclaration","src":"31934:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4805,"name":"ElementaryTypeName","src":"31963:5:19"}],"id":4806,"name":"ArrayTypeName","src":"31963:7:19"}],"id":4807,"name":"NewExpression","src":"31959:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4808,"name":"Literal","src":"31971:1:19"}],"id":4809,"name":"FunctionCall","src":"31959:14:19"}],"id":4810,"name":"VariableDeclarationStatement","src":"31934:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4804,"type":"bytes memory[] memory","value":"dynargs"},"id":4811,"name":"Identifier","src":"31983:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4812,"name":"Literal","src":"31991:1:19"}],"id":4813,"name":"IndexAccess","src":"31983:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4792,"type":"bytes memory[2] memory","value":"_args"},"id":4814,"name":"Identifier","src":"31996:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4815,"name":"Literal","src":"32002:1:19"}],"id":4816,"name":"IndexAccess","src":"31996:8:19"}],"id":4817,"name":"Assignment","src":"31983:21:19"}],"id":4818,"name":"ExpressionStatement","src":"31983:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4804,"type":"bytes memory[] memory","value":"dynargs"},"id":4819,"name":"Identifier","src":"32014:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4820,"name":"Literal","src":"32022:1:19"}],"id":4821,"name":"IndexAccess","src":"32014:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4792,"type":"bytes memory[2] memory","value":"_args"},"id":4822,"name":"Identifier","src":"32027:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4823,"name":"Literal","src":"32033:1:19"}],"id":4824,"name":"IndexAccess","src":"32027:8:19"}],"id":4825,"name":"Assignment","src":"32014:21:19"}],"id":4826,"name":"ExpressionStatement","src":"32014:21:19"},{"attributes":{"functionReturnParameters":4800},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4827,"name":"Identifier","src":"32052:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4786,"type":"uint256","value":"_timestamp"},"id":4828,"name":"Identifier","src":"32067:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"string memory","value":"_datasource"},"id":4829,"name":"Identifier","src":"32079:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4804,"type":"bytes memory[] memory","value":"dynargs"},"id":4830,"name":"Identifier","src":"32092:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4794,"type":"uint256","value":"_gasLimit"},"id":4831,"name":"Identifier","src":"32101:9:19"}],"id":4832,"name":"FunctionCall","src":"32052:59:19"}],"id":4833,"name":"Return","src":"32045:66:19"}],"id":4834,"name":"Block","src":"31924:194:19"}],"id":4835,"name":"FunctionDefinition","src":"31774:344:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4883,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4836,"name":"ElementaryTypeName","src":"32148:6:19"}],"id":4837,"name":"VariableDeclaration","src":"32148:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4883,"stateVariable":false,"storageLocation":"memory","type":"bytes[2]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[2]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4838,"name":"ElementaryTypeName","src":"32175:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4839,"name":"Literal","src":"32181:1:19"}],"id":4840,"name":"ArrayTypeName","src":"32175:8:19"}],"id":4841,"name":"VariableDeclaration","src":"32175:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":4883,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4842,"name":"ElementaryTypeName","src":"32198:4:19"}],"id":4843,"name":"VariableDeclaration","src":"32198:14:19"}],"id":4844,"name":"ParameterList","src":"32147:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4883,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4847,"name":"ElementaryTypeName","src":"32244:7:19"}],"id":4848,"name":"VariableDeclaration","src":"32244:11:19"}],"id":4849,"name":"ParameterList","src":"32243:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4845,"name":"Identifier","src":"32214:11:19"}],"id":4846,"name":"ModifierInvocation","src":"32214:11:19"},{"children":[{"attributes":{"assignments":[4853]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4882,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4851,"name":"ElementaryTypeName","src":"32267:5:19"}],"id":4852,"name":"ArrayTypeName","src":"32267:7:19"}],"id":4853,"name":"VariableDeclaration","src":"32267:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4854,"name":"ElementaryTypeName","src":"32296:5:19"}],"id":4855,"name":"ArrayTypeName","src":"32296:7:19"}],"id":4856,"name":"NewExpression","src":"32292:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4857,"name":"Literal","src":"32304:1:19"}],"id":4858,"name":"FunctionCall","src":"32292:14:19"}],"id":4859,"name":"VariableDeclarationStatement","src":"32267:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"bytes memory[] memory","value":"dynargs"},"id":4860,"name":"Identifier","src":"32316:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4861,"name":"Literal","src":"32324:1:19"}],"id":4862,"name":"IndexAccess","src":"32316:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4841,"type":"bytes memory[2] memory","value":"_args"},"id":4863,"name":"Identifier","src":"32329:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4864,"name":"Literal","src":"32335:1:19"}],"id":4865,"name":"IndexAccess","src":"32329:8:19"}],"id":4866,"name":"Assignment","src":"32316:21:19"}],"id":4867,"name":"ExpressionStatement","src":"32316:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"bytes memory[] memory","value":"dynargs"},"id":4868,"name":"Identifier","src":"32347:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4869,"name":"Literal","src":"32355:1:19"}],"id":4870,"name":"IndexAccess","src":"32347:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4841,"type":"bytes memory[2] memory","value":"_args"},"id":4871,"name":"Identifier","src":"32360:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4872,"name":"Literal","src":"32366:1:19"}],"id":4873,"name":"IndexAccess","src":"32360:8:19"}],"id":4874,"name":"Assignment","src":"32347:21:19"}],"id":4875,"name":"ExpressionStatement","src":"32347:21:19"},{"attributes":{"functionReturnParameters":4849},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":4876,"name":"Identifier","src":"32385:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4837,"type":"string memory","value":"_datasource"},"id":4877,"name":"Identifier","src":"32400:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4853,"type":"bytes memory[] memory","value":"dynargs"},"id":4878,"name":"Identifier","src":"32413:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4843,"type":"uint256","value":"_gasLimit"},"id":4879,"name":"Identifier","src":"32422:9:19"}],"id":4880,"name":"FunctionCall","src":"32385:47:19"}],"id":4881,"name":"Return","src":"32378:54:19"}],"id":4882,"name":"Block","src":"32257:182:19"}],"id":4883,"name":"FunctionDefinition","src":"32124:315:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":4936,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4884,"name":"ElementaryTypeName","src":"32469:6:19"}],"id":4885,"name":"VariableDeclaration","src":"32469:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4936,"stateVariable":false,"storageLocation":"memory","type":"bytes[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[3]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4886,"name":"ElementaryTypeName","src":"32496:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4887,"name":"Literal","src":"32502:1:19"}],"id":4888,"name":"ArrayTypeName","src":"32496:8:19"}],"id":4889,"name":"VariableDeclaration","src":"32496:21:19"}],"id":4890,"name":"ParameterList","src":"32468:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4936,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4893,"name":"ElementaryTypeName","src":"32549:7:19"}],"id":4894,"name":"VariableDeclaration","src":"32549:11:19"}],"id":4895,"name":"ParameterList","src":"32548:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4891,"name":"Identifier","src":"32519:11:19"}],"id":4892,"name":"ModifierInvocation","src":"32519:11:19"},{"children":[{"attributes":{"assignments":[4899]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4935,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4897,"name":"ElementaryTypeName","src":"32572:5:19"}],"id":4898,"name":"ArrayTypeName","src":"32572:7:19"}],"id":4899,"name":"VariableDeclaration","src":"32572:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4900,"name":"ElementaryTypeName","src":"32601:5:19"}],"id":4901,"name":"ArrayTypeName","src":"32601:7:19"}],"id":4902,"name":"NewExpression","src":"32597:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4903,"name":"Literal","src":"32609:1:19"}],"id":4904,"name":"FunctionCall","src":"32597:14:19"}],"id":4905,"name":"VariableDeclarationStatement","src":"32572:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4899,"type":"bytes memory[] memory","value":"dynargs"},"id":4906,"name":"Identifier","src":"32621:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4907,"name":"Literal","src":"32629:1:19"}],"id":4908,"name":"IndexAccess","src":"32621:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"bytes memory[3] memory","value":"_args"},"id":4909,"name":"Identifier","src":"32634:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4910,"name":"Literal","src":"32640:1:19"}],"id":4911,"name":"IndexAccess","src":"32634:8:19"}],"id":4912,"name":"Assignment","src":"32621:21:19"}],"id":4913,"name":"ExpressionStatement","src":"32621:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4899,"type":"bytes memory[] memory","value":"dynargs"},"id":4914,"name":"Identifier","src":"32652:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4915,"name":"Literal","src":"32660:1:19"}],"id":4916,"name":"IndexAccess","src":"32652:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"bytes memory[3] memory","value":"_args"},"id":4917,"name":"Identifier","src":"32665:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4918,"name":"Literal","src":"32671:1:19"}],"id":4919,"name":"IndexAccess","src":"32665:8:19"}],"id":4920,"name":"Assignment","src":"32652:21:19"}],"id":4921,"name":"ExpressionStatement","src":"32652:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4899,"type":"bytes memory[] memory","value":"dynargs"},"id":4922,"name":"Identifier","src":"32683:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4923,"name":"Literal","src":"32691:1:19"}],"id":4924,"name":"IndexAccess","src":"32683:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4889,"type":"bytes memory[3] memory","value":"_args"},"id":4925,"name":"Identifier","src":"32696:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4926,"name":"Literal","src":"32702:1:19"}],"id":4927,"name":"IndexAccess","src":"32696:8:19"}],"id":4928,"name":"Assignment","src":"32683:21:19"}],"id":4929,"name":"ExpressionStatement","src":"32683:21:19"},{"attributes":{"functionReturnParameters":4895},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4930,"name":"Identifier","src":"32721:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4885,"type":"string memory","value":"_datasource"},"id":4931,"name":"Identifier","src":"32736:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4899,"type":"bytes memory[] memory","value":"dynargs"},"id":4932,"name":"Identifier","src":"32749:7:19"}],"id":4933,"name":"FunctionCall","src":"32721:36:19"}],"id":4934,"name":"Return","src":"32714:43:19"}],"id":4935,"name":"Block","src":"32562:202:19"}],"id":4936,"name":"FunctionDefinition","src":"32445:319:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":4992,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4937,"name":"ElementaryTypeName","src":"32794:4:19"}],"id":4938,"name":"VariableDeclaration","src":"32794:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":4992,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4939,"name":"ElementaryTypeName","src":"32811:6:19"}],"id":4940,"name":"VariableDeclaration","src":"32811:25:19"},{"attributes":{"constant":false,"name":"_args","scope":4992,"stateVariable":false,"storageLocation":"memory","type":"bytes[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[3]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4941,"name":"ElementaryTypeName","src":"32838:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4942,"name":"Literal","src":"32844:1:19"}],"id":4943,"name":"ArrayTypeName","src":"32838:8:19"}],"id":4944,"name":"VariableDeclaration","src":"32838:21:19"}],"id":4945,"name":"ParameterList","src":"32793:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":4992,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4948,"name":"ElementaryTypeName","src":"32891:7:19"}],"id":4949,"name":"VariableDeclaration","src":"32891:11:19"}],"id":4950,"name":"ParameterList","src":"32890:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":4946,"name":"Identifier","src":"32861:11:19"}],"id":4947,"name":"ModifierInvocation","src":"32861:11:19"},{"children":[{"attributes":{"assignments":[4954]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":4991,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4952,"name":"ElementaryTypeName","src":"32914:5:19"}],"id":4953,"name":"ArrayTypeName","src":"32914:7:19"}],"id":4954,"name":"VariableDeclaration","src":"32914:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4955,"name":"ElementaryTypeName","src":"32943:5:19"}],"id":4956,"name":"ArrayTypeName","src":"32943:7:19"}],"id":4957,"name":"NewExpression","src":"32939:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4958,"name":"Literal","src":"32951:1:19"}],"id":4959,"name":"FunctionCall","src":"32939:14:19"}],"id":4960,"name":"VariableDeclarationStatement","src":"32914:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4954,"type":"bytes memory[] memory","value":"dynargs"},"id":4961,"name":"Identifier","src":"32963:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4962,"name":"Literal","src":"32971:1:19"}],"id":4963,"name":"IndexAccess","src":"32963:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bytes memory[3] memory","value":"_args"},"id":4964,"name":"Identifier","src":"32976:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4965,"name":"Literal","src":"32982:1:19"}],"id":4966,"name":"IndexAccess","src":"32976:8:19"}],"id":4967,"name":"Assignment","src":"32963:21:19"}],"id":4968,"name":"ExpressionStatement","src":"32963:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4954,"type":"bytes memory[] memory","value":"dynargs"},"id":4969,"name":"Identifier","src":"32994:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4970,"name":"Literal","src":"33002:1:19"}],"id":4971,"name":"IndexAccess","src":"32994:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bytes memory[3] memory","value":"_args"},"id":4972,"name":"Identifier","src":"33007:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4973,"name":"Literal","src":"33013:1:19"}],"id":4974,"name":"IndexAccess","src":"33007:8:19"}],"id":4975,"name":"Assignment","src":"32994:21:19"}],"id":4976,"name":"ExpressionStatement","src":"32994:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4954,"type":"bytes memory[] memory","value":"dynargs"},"id":4977,"name":"Identifier","src":"33025:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4978,"name":"Literal","src":"33033:1:19"}],"id":4979,"name":"IndexAccess","src":"33025:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4944,"type":"bytes memory[3] memory","value":"_args"},"id":4980,"name":"Identifier","src":"33038:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":4981,"name":"Literal","src":"33044:1:19"}],"id":4982,"name":"IndexAccess","src":"33038:8:19"}],"id":4983,"name":"Assignment","src":"33025:21:19"}],"id":4984,"name":"ExpressionStatement","src":"33025:21:19"},{"attributes":{"functionReturnParameters":4950},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":4985,"name":"Identifier","src":"33063:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"uint256","value":"_timestamp"},"id":4986,"name":"Identifier","src":"33078:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4940,"type":"string memory","value":"_datasource"},"id":4987,"name":"Identifier","src":"33090:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4954,"type":"bytes memory[] memory","value":"dynargs"},"id":4988,"name":"Identifier","src":"33103:7:19"}],"id":4989,"name":"FunctionCall","src":"33063:48:19"}],"id":4990,"name":"Return","src":"33056:55:19"}],"id":4991,"name":"Block","src":"32904:214:19"}],"id":4992,"name":"FunctionDefinition","src":"32770:348:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5051,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4993,"name":"ElementaryTypeName","src":"33148:4:19"}],"id":4994,"name":"VariableDeclaration","src":"33148:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5051,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4995,"name":"ElementaryTypeName","src":"33165:6:19"}],"id":4996,"name":"VariableDeclaration","src":"33165:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5051,"stateVariable":false,"storageLocation":"memory","type":"bytes[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[3]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4997,"name":"ElementaryTypeName","src":"33192:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":4998,"name":"Literal","src":"33198:1:19"}],"id":4999,"name":"ArrayTypeName","src":"33192:8:19"}],"id":5000,"name":"VariableDeclaration","src":"33192:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5051,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5001,"name":"ElementaryTypeName","src":"33215:4:19"}],"id":5002,"name":"VariableDeclaration","src":"33215:14:19"}],"id":5003,"name":"ParameterList","src":"33147:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5051,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5006,"name":"ElementaryTypeName","src":"33261:7:19"}],"id":5007,"name":"VariableDeclaration","src":"33261:11:19"}],"id":5008,"name":"ParameterList","src":"33260:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5004,"name":"Identifier","src":"33231:11:19"}],"id":5005,"name":"ModifierInvocation","src":"33231:11:19"},{"children":[{"attributes":{"assignments":[5012]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5050,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5010,"name":"ElementaryTypeName","src":"33284:5:19"}],"id":5011,"name":"ArrayTypeName","src":"33284:7:19"}],"id":5012,"name":"VariableDeclaration","src":"33284:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5013,"name":"ElementaryTypeName","src":"33313:5:19"}],"id":5014,"name":"ArrayTypeName","src":"33313:7:19"}],"id":5015,"name":"NewExpression","src":"33309:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5016,"name":"Literal","src":"33321:1:19"}],"id":5017,"name":"FunctionCall","src":"33309:14:19"}],"id":5018,"name":"VariableDeclarationStatement","src":"33284:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes memory[] memory","value":"dynargs"},"id":5019,"name":"Identifier","src":"33333:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5020,"name":"Literal","src":"33341:1:19"}],"id":5021,"name":"IndexAccess","src":"33333:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5000,"type":"bytes memory[3] memory","value":"_args"},"id":5022,"name":"Identifier","src":"33346:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5023,"name":"Literal","src":"33352:1:19"}],"id":5024,"name":"IndexAccess","src":"33346:8:19"}],"id":5025,"name":"Assignment","src":"33333:21:19"}],"id":5026,"name":"ExpressionStatement","src":"33333:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes memory[] memory","value":"dynargs"},"id":5027,"name":"Identifier","src":"33364:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5028,"name":"Literal","src":"33372:1:19"}],"id":5029,"name":"IndexAccess","src":"33364:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5000,"type":"bytes memory[3] memory","value":"_args"},"id":5030,"name":"Identifier","src":"33377:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5031,"name":"Literal","src":"33383:1:19"}],"id":5032,"name":"IndexAccess","src":"33377:8:19"}],"id":5033,"name":"Assignment","src":"33364:21:19"}],"id":5034,"name":"ExpressionStatement","src":"33364:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes memory[] memory","value":"dynargs"},"id":5035,"name":"Identifier","src":"33395:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5036,"name":"Literal","src":"33403:1:19"}],"id":5037,"name":"IndexAccess","src":"33395:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5000,"type":"bytes memory[3] memory","value":"_args"},"id":5038,"name":"Identifier","src":"33408:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5039,"name":"Literal","src":"33414:1:19"}],"id":5040,"name":"IndexAccess","src":"33408:8:19"}],"id":5041,"name":"Assignment","src":"33395:21:19"}],"id":5042,"name":"ExpressionStatement","src":"33395:21:19"},{"attributes":{"functionReturnParameters":5008},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5043,"name":"Identifier","src":"33433:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4994,"type":"uint256","value":"_timestamp"},"id":5044,"name":"Identifier","src":"33448:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4996,"type":"string memory","value":"_datasource"},"id":5045,"name":"Identifier","src":"33460:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes memory[] memory","value":"dynargs"},"id":5046,"name":"Identifier","src":"33473:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5002,"type":"uint256","value":"_gasLimit"},"id":5047,"name":"Identifier","src":"33482:9:19"}],"id":5048,"name":"FunctionCall","src":"33433:59:19"}],"id":5049,"name":"Return","src":"33426:66:19"}],"id":5050,"name":"Block","src":"33274:225:19"}],"id":5051,"name":"FunctionDefinition","src":"33124:375:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5107,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5052,"name":"ElementaryTypeName","src":"33529:6:19"}],"id":5053,"name":"VariableDeclaration","src":"33529:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5107,"stateVariable":false,"storageLocation":"memory","type":"bytes[3]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[3]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5054,"name":"ElementaryTypeName","src":"33556:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5055,"name":"Literal","src":"33562:1:19"}],"id":5056,"name":"ArrayTypeName","src":"33556:8:19"}],"id":5057,"name":"VariableDeclaration","src":"33556:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5107,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5058,"name":"ElementaryTypeName","src":"33579:4:19"}],"id":5059,"name":"VariableDeclaration","src":"33579:14:19"}],"id":5060,"name":"ParameterList","src":"33528:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5107,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5063,"name":"ElementaryTypeName","src":"33625:7:19"}],"id":5064,"name":"VariableDeclaration","src":"33625:11:19"}],"id":5065,"name":"ParameterList","src":"33624:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5061,"name":"Identifier","src":"33595:11:19"}],"id":5062,"name":"ModifierInvocation","src":"33595:11:19"},{"children":[{"attributes":{"assignments":[5069]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5106,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5067,"name":"ElementaryTypeName","src":"33648:5:19"}],"id":5068,"name":"ArrayTypeName","src":"33648:7:19"}],"id":5069,"name":"VariableDeclaration","src":"33648:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5070,"name":"ElementaryTypeName","src":"33677:5:19"}],"id":5071,"name":"ArrayTypeName","src":"33677:7:19"}],"id":5072,"name":"NewExpression","src":"33673:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5073,"name":"Literal","src":"33685:1:19"}],"id":5074,"name":"FunctionCall","src":"33673:14:19"}],"id":5075,"name":"VariableDeclarationStatement","src":"33648:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory[] memory","value":"dynargs"},"id":5076,"name":"Identifier","src":"33697:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5077,"name":"Literal","src":"33705:1:19"}],"id":5078,"name":"IndexAccess","src":"33697:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5057,"type":"bytes memory[3] memory","value":"_args"},"id":5079,"name":"Identifier","src":"33710:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5080,"name":"Literal","src":"33716:1:19"}],"id":5081,"name":"IndexAccess","src":"33710:8:19"}],"id":5082,"name":"Assignment","src":"33697:21:19"}],"id":5083,"name":"ExpressionStatement","src":"33697:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory[] memory","value":"dynargs"},"id":5084,"name":"Identifier","src":"33728:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5085,"name":"Literal","src":"33736:1:19"}],"id":5086,"name":"IndexAccess","src":"33728:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5057,"type":"bytes memory[3] memory","value":"_args"},"id":5087,"name":"Identifier","src":"33741:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5088,"name":"Literal","src":"33747:1:19"}],"id":5089,"name":"IndexAccess","src":"33741:8:19"}],"id":5090,"name":"Assignment","src":"33728:21:19"}],"id":5091,"name":"ExpressionStatement","src":"33728:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory[] memory","value":"dynargs"},"id":5092,"name":"Identifier","src":"33759:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5093,"name":"Literal","src":"33767:1:19"}],"id":5094,"name":"IndexAccess","src":"33759:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5057,"type":"bytes memory[3] memory","value":"_args"},"id":5095,"name":"Identifier","src":"33772:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5096,"name":"Literal","src":"33778:1:19"}],"id":5097,"name":"IndexAccess","src":"33772:8:19"}],"id":5098,"name":"Assignment","src":"33759:21:19"}],"id":5099,"name":"ExpressionStatement","src":"33759:21:19"},{"attributes":{"functionReturnParameters":5065},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5100,"name":"Identifier","src":"33797:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5053,"type":"string memory","value":"_datasource"},"id":5101,"name":"Identifier","src":"33812:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory[] memory","value":"dynargs"},"id":5102,"name":"Identifier","src":"33825:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5059,"type":"uint256","value":"_gasLimit"},"id":5103,"name":"Identifier","src":"33834:9:19"}],"id":5104,"name":"FunctionCall","src":"33797:47:19"}],"id":5105,"name":"Return","src":"33790:54:19"}],"id":5106,"name":"Block","src":"33638:213:19"}],"id":5107,"name":"FunctionDefinition","src":"33505:346:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5168,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5108,"name":"ElementaryTypeName","src":"33881:6:19"}],"id":5109,"name":"VariableDeclaration","src":"33881:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5168,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5110,"name":"ElementaryTypeName","src":"33908:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5111,"name":"Literal","src":"33914:1:19"}],"id":5112,"name":"ArrayTypeName","src":"33908:8:19"}],"id":5113,"name":"VariableDeclaration","src":"33908:21:19"}],"id":5114,"name":"ParameterList","src":"33880:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5168,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5117,"name":"ElementaryTypeName","src":"33961:7:19"}],"id":5118,"name":"VariableDeclaration","src":"33961:11:19"}],"id":5119,"name":"ParameterList","src":"33960:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5115,"name":"Identifier","src":"33931:11:19"}],"id":5116,"name":"ModifierInvocation","src":"33931:11:19"},{"children":[{"attributes":{"assignments":[5123]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5167,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5121,"name":"ElementaryTypeName","src":"33984:5:19"}],"id":5122,"name":"ArrayTypeName","src":"33984:7:19"}],"id":5123,"name":"VariableDeclaration","src":"33984:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5124,"name":"ElementaryTypeName","src":"34013:5:19"}],"id":5125,"name":"ArrayTypeName","src":"34013:7:19"}],"id":5126,"name":"NewExpression","src":"34009:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5127,"name":"Literal","src":"34021:1:19"}],"id":5128,"name":"FunctionCall","src":"34009:14:19"}],"id":5129,"name":"VariableDeclarationStatement","src":"33984:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5130,"name":"Identifier","src":"34033:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5131,"name":"Literal","src":"34041:1:19"}],"id":5132,"name":"IndexAccess","src":"34033:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5113,"type":"bytes memory[4] memory","value":"_args"},"id":5133,"name":"Identifier","src":"34046:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5134,"name":"Literal","src":"34052:1:19"}],"id":5135,"name":"IndexAccess","src":"34046:8:19"}],"id":5136,"name":"Assignment","src":"34033:21:19"}],"id":5137,"name":"ExpressionStatement","src":"34033:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5138,"name":"Identifier","src":"34064:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5139,"name":"Literal","src":"34072:1:19"}],"id":5140,"name":"IndexAccess","src":"34064:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5113,"type":"bytes memory[4] memory","value":"_args"},"id":5141,"name":"Identifier","src":"34077:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5142,"name":"Literal","src":"34083:1:19"}],"id":5143,"name":"IndexAccess","src":"34077:8:19"}],"id":5144,"name":"Assignment","src":"34064:21:19"}],"id":5145,"name":"ExpressionStatement","src":"34064:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5146,"name":"Identifier","src":"34095:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5147,"name":"Literal","src":"34103:1:19"}],"id":5148,"name":"IndexAccess","src":"34095:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5113,"type":"bytes memory[4] memory","value":"_args"},"id":5149,"name":"Identifier","src":"34108:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5150,"name":"Literal","src":"34114:1:19"}],"id":5151,"name":"IndexAccess","src":"34108:8:19"}],"id":5152,"name":"Assignment","src":"34095:21:19"}],"id":5153,"name":"ExpressionStatement","src":"34095:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5154,"name":"Identifier","src":"34126:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5155,"name":"Literal","src":"34134:1:19"}],"id":5156,"name":"IndexAccess","src":"34126:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5113,"type":"bytes memory[4] memory","value":"_args"},"id":5157,"name":"Identifier","src":"34139:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5158,"name":"Literal","src":"34145:1:19"}],"id":5159,"name":"IndexAccess","src":"34139:8:19"}],"id":5160,"name":"Assignment","src":"34126:21:19"}],"id":5161,"name":"ExpressionStatement","src":"34126:21:19"},{"attributes":{"functionReturnParameters":5119},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":5162,"name":"Identifier","src":"34164:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5109,"type":"string memory","value":"_datasource"},"id":5163,"name":"Identifier","src":"34179:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5123,"type":"bytes memory[] memory","value":"dynargs"},"id":5164,"name":"Identifier","src":"34192:7:19"}],"id":5165,"name":"FunctionCall","src":"34164:36:19"}],"id":5166,"name":"Return","src":"34157:43:19"}],"id":5167,"name":"Block","src":"33974:233:19"}],"id":5168,"name":"FunctionDefinition","src":"33857:350:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5232,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5169,"name":"ElementaryTypeName","src":"34237:4:19"}],"id":5170,"name":"VariableDeclaration","src":"34237:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5232,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5171,"name":"ElementaryTypeName","src":"34254:6:19"}],"id":5172,"name":"VariableDeclaration","src":"34254:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5232,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5173,"name":"ElementaryTypeName","src":"34281:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5174,"name":"Literal","src":"34287:1:19"}],"id":5175,"name":"ArrayTypeName","src":"34281:8:19"}],"id":5176,"name":"VariableDeclaration","src":"34281:21:19"}],"id":5177,"name":"ParameterList","src":"34236:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5232,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5180,"name":"ElementaryTypeName","src":"34334:7:19"}],"id":5181,"name":"VariableDeclaration","src":"34334:11:19"}],"id":5182,"name":"ParameterList","src":"34333:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5178,"name":"Identifier","src":"34304:11:19"}],"id":5179,"name":"ModifierInvocation","src":"34304:11:19"},{"children":[{"attributes":{"assignments":[5186]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5231,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5184,"name":"ElementaryTypeName","src":"34357:5:19"}],"id":5185,"name":"ArrayTypeName","src":"34357:7:19"}],"id":5186,"name":"VariableDeclaration","src":"34357:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5187,"name":"ElementaryTypeName","src":"34386:5:19"}],"id":5188,"name":"ArrayTypeName","src":"34386:7:19"}],"id":5189,"name":"NewExpression","src":"34382:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5190,"name":"Literal","src":"34394:1:19"}],"id":5191,"name":"FunctionCall","src":"34382:14:19"}],"id":5192,"name":"VariableDeclarationStatement","src":"34357:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5193,"name":"Identifier","src":"34406:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5194,"name":"Literal","src":"34414:1:19"}],"id":5195,"name":"IndexAccess","src":"34406:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"bytes memory[4] memory","value":"_args"},"id":5196,"name":"Identifier","src":"34419:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5197,"name":"Literal","src":"34425:1:19"}],"id":5198,"name":"IndexAccess","src":"34419:8:19"}],"id":5199,"name":"Assignment","src":"34406:21:19"}],"id":5200,"name":"ExpressionStatement","src":"34406:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5201,"name":"Identifier","src":"34437:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5202,"name":"Literal","src":"34445:1:19"}],"id":5203,"name":"IndexAccess","src":"34437:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"bytes memory[4] memory","value":"_args"},"id":5204,"name":"Identifier","src":"34450:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5205,"name":"Literal","src":"34456:1:19"}],"id":5206,"name":"IndexAccess","src":"34450:8:19"}],"id":5207,"name":"Assignment","src":"34437:21:19"}],"id":5208,"name":"ExpressionStatement","src":"34437:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5209,"name":"Identifier","src":"34468:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5210,"name":"Literal","src":"34476:1:19"}],"id":5211,"name":"IndexAccess","src":"34468:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"bytes memory[4] memory","value":"_args"},"id":5212,"name":"Identifier","src":"34481:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5213,"name":"Literal","src":"34487:1:19"}],"id":5214,"name":"IndexAccess","src":"34481:8:19"}],"id":5215,"name":"Assignment","src":"34468:21:19"}],"id":5216,"name":"ExpressionStatement","src":"34468:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5217,"name":"Identifier","src":"34499:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5218,"name":"Literal","src":"34507:1:19"}],"id":5219,"name":"IndexAccess","src":"34499:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5176,"type":"bytes memory[4] memory","value":"_args"},"id":5220,"name":"Identifier","src":"34512:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5221,"name":"Literal","src":"34518:1:19"}],"id":5222,"name":"IndexAccess","src":"34512:8:19"}],"id":5223,"name":"Assignment","src":"34499:21:19"}],"id":5224,"name":"ExpressionStatement","src":"34499:21:19"},{"attributes":{"functionReturnParameters":5182},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":5225,"name":"Identifier","src":"34537:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5170,"type":"uint256","value":"_timestamp"},"id":5226,"name":"Identifier","src":"34552:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5172,"type":"string memory","value":"_datasource"},"id":5227,"name":"Identifier","src":"34564:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"bytes memory[] memory","value":"dynargs"},"id":5228,"name":"Identifier","src":"34577:7:19"}],"id":5229,"name":"FunctionCall","src":"34537:48:19"}],"id":5230,"name":"Return","src":"34530:55:19"}],"id":5231,"name":"Block","src":"34347:245:19"}],"id":5232,"name":"FunctionDefinition","src":"34213:379:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5233,"name":"ElementaryTypeName","src":"34622:4:19"}],"id":5234,"name":"VariableDeclaration","src":"34622:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5299,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5235,"name":"ElementaryTypeName","src":"34639:6:19"}],"id":5236,"name":"VariableDeclaration","src":"34639:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5299,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5237,"name":"ElementaryTypeName","src":"34666:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5238,"name":"Literal","src":"34672:1:19"}],"id":5239,"name":"ArrayTypeName","src":"34666:8:19"}],"id":5240,"name":"VariableDeclaration","src":"34666:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5241,"name":"ElementaryTypeName","src":"34689:4:19"}],"id":5242,"name":"VariableDeclaration","src":"34689:14:19"}],"id":5243,"name":"ParameterList","src":"34621:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5299,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5246,"name":"ElementaryTypeName","src":"34735:7:19"}],"id":5247,"name":"VariableDeclaration","src":"34735:11:19"}],"id":5248,"name":"ParameterList","src":"34734:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5244,"name":"Identifier","src":"34705:11:19"}],"id":5245,"name":"ModifierInvocation","src":"34705:11:19"},{"children":[{"attributes":{"assignments":[5252]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5298,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5250,"name":"ElementaryTypeName","src":"34758:5:19"}],"id":5251,"name":"ArrayTypeName","src":"34758:7:19"}],"id":5252,"name":"VariableDeclaration","src":"34758:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5253,"name":"ElementaryTypeName","src":"34787:5:19"}],"id":5254,"name":"ArrayTypeName","src":"34787:7:19"}],"id":5255,"name":"NewExpression","src":"34783:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5256,"name":"Literal","src":"34795:1:19"}],"id":5257,"name":"FunctionCall","src":"34783:14:19"}],"id":5258,"name":"VariableDeclarationStatement","src":"34758:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5259,"name":"Identifier","src":"34807:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5260,"name":"Literal","src":"34815:1:19"}],"id":5261,"name":"IndexAccess","src":"34807:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes memory[4] memory","value":"_args"},"id":5262,"name":"Identifier","src":"34820:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5263,"name":"Literal","src":"34826:1:19"}],"id":5264,"name":"IndexAccess","src":"34820:8:19"}],"id":5265,"name":"Assignment","src":"34807:21:19"}],"id":5266,"name":"ExpressionStatement","src":"34807:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5267,"name":"Identifier","src":"34838:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5268,"name":"Literal","src":"34846:1:19"}],"id":5269,"name":"IndexAccess","src":"34838:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes memory[4] memory","value":"_args"},"id":5270,"name":"Identifier","src":"34851:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5271,"name":"Literal","src":"34857:1:19"}],"id":5272,"name":"IndexAccess","src":"34851:8:19"}],"id":5273,"name":"Assignment","src":"34838:21:19"}],"id":5274,"name":"ExpressionStatement","src":"34838:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5275,"name":"Identifier","src":"34869:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5276,"name":"Literal","src":"34877:1:19"}],"id":5277,"name":"IndexAccess","src":"34869:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes memory[4] memory","value":"_args"},"id":5278,"name":"Identifier","src":"34882:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5279,"name":"Literal","src":"34888:1:19"}],"id":5280,"name":"IndexAccess","src":"34882:8:19"}],"id":5281,"name":"Assignment","src":"34869:21:19"}],"id":5282,"name":"ExpressionStatement","src":"34869:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5283,"name":"Identifier","src":"34900:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5284,"name":"Literal","src":"34908:1:19"}],"id":5285,"name":"IndexAccess","src":"34900:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes memory[4] memory","value":"_args"},"id":5286,"name":"Identifier","src":"34913:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5287,"name":"Literal","src":"34919:1:19"}],"id":5288,"name":"IndexAccess","src":"34913:8:19"}],"id":5289,"name":"Assignment","src":"34900:21:19"}],"id":5290,"name":"ExpressionStatement","src":"34900:21:19"},{"attributes":{"functionReturnParameters":5248},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5291,"name":"Identifier","src":"34938:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"uint256","value":"_timestamp"},"id":5292,"name":"Identifier","src":"34953:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"string memory","value":"_datasource"},"id":5293,"name":"Identifier","src":"34965:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory[] memory","value":"dynargs"},"id":5294,"name":"Identifier","src":"34978:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5242,"type":"uint256","value":"_gasLimit"},"id":5295,"name":"Identifier","src":"34987:9:19"}],"id":5296,"name":"FunctionCall","src":"34938:59:19"}],"id":5297,"name":"Return","src":"34931:66:19"}],"id":5298,"name":"Block","src":"34748:256:19"}],"id":5299,"name":"FunctionDefinition","src":"34598:406:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5363,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5300,"name":"ElementaryTypeName","src":"35034:6:19"}],"id":5301,"name":"VariableDeclaration","src":"35034:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5363,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5302,"name":"ElementaryTypeName","src":"35061:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5303,"name":"Literal","src":"35067:1:19"}],"id":5304,"name":"ArrayTypeName","src":"35061:8:19"}],"id":5305,"name":"VariableDeclaration","src":"35061:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5363,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5306,"name":"ElementaryTypeName","src":"35084:4:19"}],"id":5307,"name":"VariableDeclaration","src":"35084:14:19"}],"id":5308,"name":"ParameterList","src":"35033:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5363,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5311,"name":"ElementaryTypeName","src":"35130:7:19"}],"id":5312,"name":"VariableDeclaration","src":"35130:11:19"}],"id":5313,"name":"ParameterList","src":"35129:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5309,"name":"Identifier","src":"35100:11:19"}],"id":5310,"name":"ModifierInvocation","src":"35100:11:19"},{"children":[{"attributes":{"assignments":[5317]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5362,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5315,"name":"ElementaryTypeName","src":"35153:5:19"}],"id":5316,"name":"ArrayTypeName","src":"35153:7:19"}],"id":5317,"name":"VariableDeclaration","src":"35153:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5318,"name":"ElementaryTypeName","src":"35182:5:19"}],"id":5319,"name":"ArrayTypeName","src":"35182:7:19"}],"id":5320,"name":"NewExpression","src":"35178:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5321,"name":"Literal","src":"35190:1:19"}],"id":5322,"name":"FunctionCall","src":"35178:14:19"}],"id":5323,"name":"VariableDeclarationStatement","src":"35153:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5324,"name":"Identifier","src":"35202:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5325,"name":"Literal","src":"35210:1:19"}],"id":5326,"name":"IndexAccess","src":"35202:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"bytes memory[4] memory","value":"_args"},"id":5327,"name":"Identifier","src":"35215:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5328,"name":"Literal","src":"35221:1:19"}],"id":5329,"name":"IndexAccess","src":"35215:8:19"}],"id":5330,"name":"Assignment","src":"35202:21:19"}],"id":5331,"name":"ExpressionStatement","src":"35202:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5332,"name":"Identifier","src":"35233:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5333,"name":"Literal","src":"35241:1:19"}],"id":5334,"name":"IndexAccess","src":"35233:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"bytes memory[4] memory","value":"_args"},"id":5335,"name":"Identifier","src":"35246:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5336,"name":"Literal","src":"35252:1:19"}],"id":5337,"name":"IndexAccess","src":"35246:8:19"}],"id":5338,"name":"Assignment","src":"35233:21:19"}],"id":5339,"name":"ExpressionStatement","src":"35233:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5340,"name":"Identifier","src":"35264:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5341,"name":"Literal","src":"35272:1:19"}],"id":5342,"name":"IndexAccess","src":"35264:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"bytes memory[4] memory","value":"_args"},"id":5343,"name":"Identifier","src":"35277:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5344,"name":"Literal","src":"35283:1:19"}],"id":5345,"name":"IndexAccess","src":"35277:8:19"}],"id":5346,"name":"Assignment","src":"35264:21:19"}],"id":5347,"name":"ExpressionStatement","src":"35264:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5348,"name":"Identifier","src":"35295:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5349,"name":"Literal","src":"35303:1:19"}],"id":5350,"name":"IndexAccess","src":"35295:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5305,"type":"bytes memory[4] memory","value":"_args"},"id":5351,"name":"Identifier","src":"35308:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5352,"name":"Literal","src":"35314:1:19"}],"id":5353,"name":"IndexAccess","src":"35308:8:19"}],"id":5354,"name":"Assignment","src":"35295:21:19"}],"id":5355,"name":"ExpressionStatement","src":"35295:21:19"},{"attributes":{"functionReturnParameters":5313},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5356,"name":"Identifier","src":"35333:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5301,"type":"string memory","value":"_datasource"},"id":5357,"name":"Identifier","src":"35348:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5317,"type":"bytes memory[] memory","value":"dynargs"},"id":5358,"name":"Identifier","src":"35361:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5307,"type":"uint256","value":"_gasLimit"},"id":5359,"name":"Identifier","src":"35370:9:19"}],"id":5360,"name":"FunctionCall","src":"35333:47:19"}],"id":5361,"name":"Return","src":"35326:54:19"}],"id":5362,"name":"Block","src":"35143:244:19"}],"id":5363,"name":"FunctionDefinition","src":"35010:377:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5432,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5364,"name":"ElementaryTypeName","src":"35417:6:19"}],"id":5365,"name":"VariableDeclaration","src":"35417:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5432,"stateVariable":false,"storageLocation":"memory","type":"bytes[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[5]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5366,"name":"ElementaryTypeName","src":"35444:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5367,"name":"Literal","src":"35450:1:19"}],"id":5368,"name":"ArrayTypeName","src":"35444:8:19"}],"id":5369,"name":"VariableDeclaration","src":"35444:21:19"}],"id":5370,"name":"ParameterList","src":"35416:50:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5432,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5373,"name":"ElementaryTypeName","src":"35497:7:19"}],"id":5374,"name":"VariableDeclaration","src":"35497:11:19"}],"id":5375,"name":"ParameterList","src":"35496:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5371,"name":"Identifier","src":"35467:11:19"}],"id":5372,"name":"ModifierInvocation","src":"35467:11:19"},{"children":[{"attributes":{"assignments":[5379]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5431,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5377,"name":"ElementaryTypeName","src":"35520:5:19"}],"id":5378,"name":"ArrayTypeName","src":"35520:7:19"}],"id":5379,"name":"VariableDeclaration","src":"35520:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5380,"name":"ElementaryTypeName","src":"35549:5:19"}],"id":5381,"name":"ArrayTypeName","src":"35549:7:19"}],"id":5382,"name":"NewExpression","src":"35545:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5383,"name":"Literal","src":"35557:1:19"}],"id":5384,"name":"FunctionCall","src":"35545:14:19"}],"id":5385,"name":"VariableDeclarationStatement","src":"35520:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5386,"name":"Identifier","src":"35569:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5387,"name":"Literal","src":"35577:1:19"}],"id":5388,"name":"IndexAccess","src":"35569:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5389,"name":"Identifier","src":"35582:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5390,"name":"Literal","src":"35588:1:19"}],"id":5391,"name":"IndexAccess","src":"35582:8:19"}],"id":5392,"name":"Assignment","src":"35569:21:19"}],"id":5393,"name":"ExpressionStatement","src":"35569:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5394,"name":"Identifier","src":"35600:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5395,"name":"Literal","src":"35608:1:19"}],"id":5396,"name":"IndexAccess","src":"35600:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5397,"name":"Identifier","src":"35613:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5398,"name":"Literal","src":"35619:1:19"}],"id":5399,"name":"IndexAccess","src":"35613:8:19"}],"id":5400,"name":"Assignment","src":"35600:21:19"}],"id":5401,"name":"ExpressionStatement","src":"35600:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5402,"name":"Identifier","src":"35631:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5403,"name":"Literal","src":"35639:1:19"}],"id":5404,"name":"IndexAccess","src":"35631:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5405,"name":"Identifier","src":"35644:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5406,"name":"Literal","src":"35650:1:19"}],"id":5407,"name":"IndexAccess","src":"35644:8:19"}],"id":5408,"name":"Assignment","src":"35631:21:19"}],"id":5409,"name":"ExpressionStatement","src":"35631:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5410,"name":"Identifier","src":"35662:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5411,"name":"Literal","src":"35670:1:19"}],"id":5412,"name":"IndexAccess","src":"35662:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5413,"name":"Identifier","src":"35675:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5414,"name":"Literal","src":"35681:1:19"}],"id":5415,"name":"IndexAccess","src":"35675:8:19"}],"id":5416,"name":"Assignment","src":"35662:21:19"}],"id":5417,"name":"ExpressionStatement","src":"35662:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5418,"name":"Identifier","src":"35693:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5419,"name":"Literal","src":"35701:1:19"}],"id":5420,"name":"IndexAccess","src":"35693:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5369,"type":"bytes memory[5] memory","value":"_args"},"id":5421,"name":"Identifier","src":"35706:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5422,"name":"Literal","src":"35712:1:19"}],"id":5423,"name":"IndexAccess","src":"35706:8:19"}],"id":5424,"name":"Assignment","src":"35693:21:19"}],"id":5425,"name":"ExpressionStatement","src":"35693:21:19"},{"attributes":{"functionReturnParameters":5375},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4375,"type":"function (string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":5426,"name":"Identifier","src":"35731:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5365,"type":"string memory","value":"_datasource"},"id":5427,"name":"Identifier","src":"35746:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5379,"type":"bytes memory[] memory","value":"dynargs"},"id":5428,"name":"Identifier","src":"35759:7:19"}],"id":5429,"name":"FunctionCall","src":"35731:36:19"}],"id":5430,"name":"Return","src":"35724:43:19"}],"id":5431,"name":"Block","src":"35510:264:19"}],"id":5432,"name":"FunctionDefinition","src":"35393:381:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5504,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5433,"name":"ElementaryTypeName","src":"35804:4:19"}],"id":5434,"name":"VariableDeclaration","src":"35804:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5504,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5435,"name":"ElementaryTypeName","src":"35821:6:19"}],"id":5436,"name":"VariableDeclaration","src":"35821:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5504,"stateVariable":false,"storageLocation":"memory","type":"bytes[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[5]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5437,"name":"ElementaryTypeName","src":"35848:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5438,"name":"Literal","src":"35854:1:19"}],"id":5439,"name":"ArrayTypeName","src":"35848:8:19"}],"id":5440,"name":"VariableDeclaration","src":"35848:21:19"}],"id":5441,"name":"ParameterList","src":"35803:67:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5504,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5444,"name":"ElementaryTypeName","src":"35901:7:19"}],"id":5445,"name":"VariableDeclaration","src":"35901:11:19"}],"id":5446,"name":"ParameterList","src":"35900:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5442,"name":"Identifier","src":"35871:11:19"}],"id":5443,"name":"ModifierInvocation","src":"35871:11:19"},{"children":[{"attributes":{"assignments":[5450]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5503,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5448,"name":"ElementaryTypeName","src":"35924:5:19"}],"id":5449,"name":"ArrayTypeName","src":"35924:7:19"}],"id":5450,"name":"VariableDeclaration","src":"35924:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5451,"name":"ElementaryTypeName","src":"35953:5:19"}],"id":5452,"name":"ArrayTypeName","src":"35953:7:19"}],"id":5453,"name":"NewExpression","src":"35949:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5454,"name":"Literal","src":"35961:1:19"}],"id":5455,"name":"FunctionCall","src":"35949:14:19"}],"id":5456,"name":"VariableDeclarationStatement","src":"35924:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5457,"name":"Identifier","src":"35973:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5458,"name":"Literal","src":"35981:1:19"}],"id":5459,"name":"IndexAccess","src":"35973:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5460,"name":"Identifier","src":"35986:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5461,"name":"Literal","src":"35992:1:19"}],"id":5462,"name":"IndexAccess","src":"35986:8:19"}],"id":5463,"name":"Assignment","src":"35973:21:19"}],"id":5464,"name":"ExpressionStatement","src":"35973:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5465,"name":"Identifier","src":"36004:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5466,"name":"Literal","src":"36012:1:19"}],"id":5467,"name":"IndexAccess","src":"36004:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5468,"name":"Identifier","src":"36017:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5469,"name":"Literal","src":"36023:1:19"}],"id":5470,"name":"IndexAccess","src":"36017:8:19"}],"id":5471,"name":"Assignment","src":"36004:21:19"}],"id":5472,"name":"ExpressionStatement","src":"36004:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5473,"name":"Identifier","src":"36035:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5474,"name":"Literal","src":"36043:1:19"}],"id":5475,"name":"IndexAccess","src":"36035:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5476,"name":"Identifier","src":"36048:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5477,"name":"Literal","src":"36054:1:19"}],"id":5478,"name":"IndexAccess","src":"36048:8:19"}],"id":5479,"name":"Assignment","src":"36035:21:19"}],"id":5480,"name":"ExpressionStatement","src":"36035:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5481,"name":"Identifier","src":"36066:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5482,"name":"Literal","src":"36074:1:19"}],"id":5483,"name":"IndexAccess","src":"36066:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5484,"name":"Identifier","src":"36079:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5485,"name":"Literal","src":"36085:1:19"}],"id":5486,"name":"IndexAccess","src":"36079:8:19"}],"id":5487,"name":"Assignment","src":"36066:21:19"}],"id":5488,"name":"ExpressionStatement","src":"36066:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5489,"name":"Identifier","src":"36097:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5490,"name":"Literal","src":"36105:1:19"}],"id":5491,"name":"IndexAccess","src":"36097:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5440,"type":"bytes memory[5] memory","value":"_args"},"id":5492,"name":"Identifier","src":"36110:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5493,"name":"Literal","src":"36116:1:19"}],"id":5494,"name":"IndexAccess","src":"36110:8:19"}],"id":5495,"name":"Assignment","src":"36097:21:19"}],"id":5496,"name":"ExpressionStatement","src":"36097:21:19"},{"attributes":{"functionReturnParameters":5446},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4425,"type":"function (uint256,string memory,bytes memory[] memory) returns (bytes32)","value":"oraclize_query"},"id":5497,"name":"Identifier","src":"36135:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5434,"type":"uint256","value":"_timestamp"},"id":5498,"name":"Identifier","src":"36150:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5436,"type":"string memory","value":"_datasource"},"id":5499,"name":"Identifier","src":"36162:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5450,"type":"bytes memory[] memory","value":"dynargs"},"id":5500,"name":"Identifier","src":"36175:7:19"}],"id":5501,"name":"FunctionCall","src":"36135:48:19"}],"id":5502,"name":"Return","src":"36128:55:19"}],"id":5503,"name":"Block","src":"35914:276:19"}],"id":5504,"name":"FunctionDefinition","src":"35780:410:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_timestamp","scope":5579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5505,"name":"ElementaryTypeName","src":"36220:4:19"}],"id":5506,"name":"VariableDeclaration","src":"36220:15:19"},{"attributes":{"constant":false,"name":"_datasource","scope":5579,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5507,"name":"ElementaryTypeName","src":"36237:6:19"}],"id":5508,"name":"VariableDeclaration","src":"36237:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5579,"stateVariable":false,"storageLocation":"memory","type":"bytes[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[5]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5509,"name":"ElementaryTypeName","src":"36264:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5510,"name":"Literal","src":"36270:1:19"}],"id":5511,"name":"ArrayTypeName","src":"36264:8:19"}],"id":5512,"name":"VariableDeclaration","src":"36264:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5513,"name":"ElementaryTypeName","src":"36287:4:19"}],"id":5514,"name":"VariableDeclaration","src":"36287:14:19"}],"id":5515,"name":"ParameterList","src":"36219:83:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5579,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5518,"name":"ElementaryTypeName","src":"36333:7:19"}],"id":5519,"name":"VariableDeclaration","src":"36333:11:19"}],"id":5520,"name":"ParameterList","src":"36332:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5516,"name":"Identifier","src":"36303:11:19"}],"id":5517,"name":"ModifierInvocation","src":"36303:11:19"},{"children":[{"attributes":{"assignments":[5524]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5578,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5522,"name":"ElementaryTypeName","src":"36356:5:19"}],"id":5523,"name":"ArrayTypeName","src":"36356:7:19"}],"id":5524,"name":"VariableDeclaration","src":"36356:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5525,"name":"ElementaryTypeName","src":"36385:5:19"}],"id":5526,"name":"ArrayTypeName","src":"36385:7:19"}],"id":5527,"name":"NewExpression","src":"36381:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5528,"name":"Literal","src":"36393:1:19"}],"id":5529,"name":"FunctionCall","src":"36381:14:19"}],"id":5530,"name":"VariableDeclarationStatement","src":"36356:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5531,"name":"Identifier","src":"36405:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5532,"name":"Literal","src":"36413:1:19"}],"id":5533,"name":"IndexAccess","src":"36405:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5534,"name":"Identifier","src":"36418:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5535,"name":"Literal","src":"36424:1:19"}],"id":5536,"name":"IndexAccess","src":"36418:8:19"}],"id":5537,"name":"Assignment","src":"36405:21:19"}],"id":5538,"name":"ExpressionStatement","src":"36405:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5539,"name":"Identifier","src":"36436:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5540,"name":"Literal","src":"36444:1:19"}],"id":5541,"name":"IndexAccess","src":"36436:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5542,"name":"Identifier","src":"36449:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5543,"name":"Literal","src":"36455:1:19"}],"id":5544,"name":"IndexAccess","src":"36449:8:19"}],"id":5545,"name":"Assignment","src":"36436:21:19"}],"id":5546,"name":"ExpressionStatement","src":"36436:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5547,"name":"Identifier","src":"36467:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5548,"name":"Literal","src":"36475:1:19"}],"id":5549,"name":"IndexAccess","src":"36467:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5550,"name":"Identifier","src":"36480:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5551,"name":"Literal","src":"36486:1:19"}],"id":5552,"name":"IndexAccess","src":"36480:8:19"}],"id":5553,"name":"Assignment","src":"36467:21:19"}],"id":5554,"name":"ExpressionStatement","src":"36467:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5555,"name":"Identifier","src":"36498:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5556,"name":"Literal","src":"36506:1:19"}],"id":5557,"name":"IndexAccess","src":"36498:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5558,"name":"Identifier","src":"36511:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5559,"name":"Literal","src":"36517:1:19"}],"id":5560,"name":"IndexAccess","src":"36511:8:19"}],"id":5561,"name":"Assignment","src":"36498:21:19"}],"id":5562,"name":"ExpressionStatement","src":"36498:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5563,"name":"Identifier","src":"36529:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5564,"name":"Literal","src":"36537:1:19"}],"id":5565,"name":"IndexAccess","src":"36529:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5512,"type":"bytes memory[5] memory","value":"_args"},"id":5566,"name":"Identifier","src":"36542:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5567,"name":"Literal","src":"36548:1:19"}],"id":5568,"name":"IndexAccess","src":"36542:8:19"}],"id":5569,"name":"Assignment","src":"36529:21:19"}],"id":5570,"name":"ExpressionStatement","src":"36529:21:19"},{"attributes":{"functionReturnParameters":5520},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4479,"type":"function (uint256,string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5571,"name":"Identifier","src":"36567:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5506,"type":"uint256","value":"_timestamp"},"id":5572,"name":"Identifier","src":"36582:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5508,"type":"string memory","value":"_datasource"},"id":5573,"name":"Identifier","src":"36594:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes memory[] memory","value":"dynargs"},"id":5574,"name":"Identifier","src":"36607:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5514,"type":"uint256","value":"_gasLimit"},"id":5575,"name":"Identifier","src":"36616:9:19"}],"id":5576,"name":"FunctionCall","src":"36567:59:19"}],"id":5577,"name":"Return","src":"36560:66:19"}],"id":5578,"name":"Block","src":"36346:287:19"}],"id":5579,"name":"FunctionDefinition","src":"36196:437:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_query","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_datasource","scope":5651,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5580,"name":"ElementaryTypeName","src":"36663:6:19"}],"id":5581,"name":"VariableDeclaration","src":"36663:25:19"},{"attributes":{"constant":false,"name":"_args","scope":5651,"stateVariable":false,"storageLocation":"memory","type":"bytes[5]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[5]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5582,"name":"ElementaryTypeName","src":"36690:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5583,"name":"Literal","src":"36696:1:19"}],"id":5584,"name":"ArrayTypeName","src":"36690:8:19"}],"id":5585,"name":"VariableDeclaration","src":"36690:21:19"},{"attributes":{"constant":false,"name":"_gasLimit","scope":5651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5586,"name":"ElementaryTypeName","src":"36713:4:19"}],"id":5587,"name":"VariableDeclaration","src":"36713:14:19"}],"id":5588,"name":"ParameterList","src":"36662:66:19"},{"children":[{"attributes":{"constant":false,"name":"_id","scope":5651,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5591,"name":"ElementaryTypeName","src":"36759:7:19"}],"id":5592,"name":"VariableDeclaration","src":"36759:11:19"}],"id":5593,"name":"ParameterList","src":"36758:13:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5589,"name":"Identifier","src":"36729:11:19"}],"id":5590,"name":"ModifierInvocation","src":"36729:11:19"},{"children":[{"attributes":{"assignments":[5597]},"children":[{"attributes":{"constant":false,"name":"dynargs","scope":5650,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5595,"name":"ElementaryTypeName","src":"36782:5:19"}],"id":5596,"name":"ArrayTypeName","src":"36782:7:19"}],"id":5597,"name":"VariableDeclaration","src":"36782:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_5_by_1","typeString":"int_const 5"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5598,"name":"ElementaryTypeName","src":"36811:5:19"}],"id":5599,"name":"ArrayTypeName","src":"36811:7:19"}],"id":5600,"name":"NewExpression","src":"36807:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":5601,"name":"Literal","src":"36819:1:19"}],"id":5602,"name":"FunctionCall","src":"36807:14:19"}],"id":5603,"name":"VariableDeclarationStatement","src":"36782:39:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5604,"name":"Identifier","src":"36831:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5605,"name":"Literal","src":"36839:1:19"}],"id":5606,"name":"IndexAccess","src":"36831:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5607,"name":"Identifier","src":"36844:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5608,"name":"Literal","src":"36850:1:19"}],"id":5609,"name":"IndexAccess","src":"36844:8:19"}],"id":5610,"name":"Assignment","src":"36831:21:19"}],"id":5611,"name":"ExpressionStatement","src":"36831:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5612,"name":"Identifier","src":"36862:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5613,"name":"Literal","src":"36870:1:19"}],"id":5614,"name":"IndexAccess","src":"36862:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5615,"name":"Identifier","src":"36875:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5616,"name":"Literal","src":"36881:1:19"}],"id":5617,"name":"IndexAccess","src":"36875:8:19"}],"id":5618,"name":"Assignment","src":"36862:21:19"}],"id":5619,"name":"ExpressionStatement","src":"36862:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5620,"name":"Identifier","src":"36893:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5621,"name":"Literal","src":"36901:1:19"}],"id":5622,"name":"IndexAccess","src":"36893:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5623,"name":"Identifier","src":"36906:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5624,"name":"Literal","src":"36912:1:19"}],"id":5625,"name":"IndexAccess","src":"36906:8:19"}],"id":5626,"name":"Assignment","src":"36893:21:19"}],"id":5627,"name":"ExpressionStatement","src":"36893:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5628,"name":"Identifier","src":"36924:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5629,"name":"Literal","src":"36932:1:19"}],"id":5630,"name":"IndexAccess","src":"36924:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5631,"name":"Identifier","src":"36937:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":5632,"name":"Literal","src":"36943:1:19"}],"id":5633,"name":"IndexAccess","src":"36937:8:19"}],"id":5634,"name":"Assignment","src":"36924:21:19"}],"id":5635,"name":"ExpressionStatement","src":"36924:21:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5636,"name":"Identifier","src":"36955:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5637,"name":"Literal","src":"36963:1:19"}],"id":5638,"name":"IndexAccess","src":"36955:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5585,"type":"bytes memory[5] memory","value":"_args"},"id":5639,"name":"Identifier","src":"36968:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5640,"name":"Literal","src":"36974:1:19"}],"id":5641,"name":"IndexAccess","src":"36968:8:19"}],"id":5642,"name":"Assignment","src":"36955:21:19"}],"id":5643,"name":"ExpressionStatement","src":"36955:21:19"},{"attributes":{"functionReturnParameters":5593},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_array$_t_bytes_memory_$dyn_memory_ptr","typeString":"bytes memory[] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":4531,"type":"function (string memory,bytes memory[] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":5644,"name":"Identifier","src":"36993:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5581,"type":"string memory","value":"_datasource"},"id":5645,"name":"Identifier","src":"37008:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5597,"type":"bytes memory[] memory","value":"dynargs"},"id":5646,"name":"Identifier","src":"37021:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5587,"type":"uint256","value":"_gasLimit"},"id":5647,"name":"Identifier","src":"37030:9:19"}],"id":5648,"name":"FunctionCall","src":"36993:47:19"}],"id":5649,"name":"Return","src":"36986:54:19"}],"id":5650,"name":"Block","src":"36772:275:19"}],"id":5651,"name":"FunctionDefinition","src":"36639:408:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_setProof","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_proofP","scope":5664,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"byte","type":"bytes1"},"id":5652,"name":"ElementaryTypeName","src":"37080:4:19"}],"id":5653,"name":"VariableDeclaration","src":"37080:12:19"}],"id":5654,"name":"ParameterList","src":"37079:14:19"},{"attributes":{"parameters":[null]},"children":[],"id":5657,"name":"ParameterList","src":"37115:0:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5655,"name":"Identifier","src":"37094:11:19"}],"id":5656,"name":"ModifierInvocation","src":"37094:11:19"},{"children":[{"attributes":{"functionReturnParameters":5657},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setProofType","referencedDeclaration":1589,"type":"function (bytes1) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":5658,"name":"Identifier","src":"37132:8:19"}],"id":5659,"name":"MemberAccess","src":"37132:21:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5653,"type":"bytes1","value":"_proofP"},"id":5660,"name":"Identifier","src":"37154:7:19"}],"id":5661,"name":"FunctionCall","src":"37132:30:19"}],"id":5662,"name":"Return","src":"37125:37:19"}],"id":5663,"name":"Block","src":"37115:54:19"}],"id":5664,"name":"FunctionDefinition","src":"37053:116:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_cbAddress","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5665,"name":"ParameterList","src":"37203:2:19"},{"children":[{"attributes":{"constant":false,"name":"_callbackAddress","scope":5676,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5668,"name":"ElementaryTypeName","src":"37236:7:19"}],"id":5669,"name":"VariableDeclaration","src":"37236:24:19"}],"id":5670,"name":"ParameterList","src":"37235:26:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5666,"name":"Identifier","src":"37206:11:19"}],"id":5667,"name":"ModifierInvocation","src":"37206:11:19"},{"children":[{"attributes":{"functionReturnParameters":5670},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"cbAddress","referencedDeclaration":1584,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":5671,"name":"Identifier","src":"37279:8:19"}],"id":5672,"name":"MemberAccess","src":"37279:18:19"}],"id":5673,"name":"FunctionCall","src":"37279:20:19"}],"id":5674,"name":"Return","src":"37272:27:19"}],"id":5675,"name":"Block","src":"37262:44:19"}],"id":5676,"name":"FunctionDefinition","src":"37176:130:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getCodeSize","scope":7853,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addr","scope":5685,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5677,"name":"ElementaryTypeName","src":"37333:7:19"}],"id":5678,"name":"VariableDeclaration","src":"37333:13:19"}],"id":5679,"name":"ParameterList","src":"37332:15:19"},{"children":[{"attributes":{"constant":false,"name":"_size","scope":5685,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5680,"name":"ElementaryTypeName","src":"37371:4:19"}],"id":5681,"name":"VariableDeclaration","src":"37371:10:19"}],"id":5682,"name":"ParameterList","src":"37370:12:19"},{"children":[{"attributes":{"externalReferences":[{"_size":{"declaration":5681,"isOffset":false,"isSlot":false,"src":"37416:5:19","valueSize":1}},{"_addr":{"declaration":5678,"isOffset":false,"isSlot":false,"src":"37437:5:19","valueSize":1}}],"operations":"{ _size := extcodesize(_addr) }"},"children":[],"id":5683,"name":"InlineAssembly","src":"37393:60:19"}],"id":5684,"name":"Block","src":"37383:76:19"}],"id":5685,"name":"FunctionDefinition","src":"37312:147:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_setCustomGasPrice","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasPrice","scope":5698,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5686,"name":"ElementaryTypeName","src":"37501:4:19"}],"id":5687,"name":"VariableDeclaration","src":"37501:14:19"}],"id":5688,"name":"ParameterList","src":"37500:16:19"},{"attributes":{"parameters":[null]},"children":[],"id":5691,"name":"ParameterList","src":"37538:0:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5689,"name":"Identifier","src":"37517:11:19"}],"id":5690,"name":"ModifierInvocation","src":"37517:11:19"},{"children":[{"attributes":{"functionReturnParameters":5691},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setCustomGasPrice","referencedDeclaration":1594,"type":"function (uint256) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":5692,"name":"Identifier","src":"37555:8:19"}],"id":5693,"name":"MemberAccess","src":"37555:26:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5687,"type":"uint256","value":"_gasPrice"},"id":5694,"name":"Identifier","src":"37582:9:19"}],"id":5695,"name":"FunctionCall","src":"37555:37:19"}],"id":5696,"name":"Return","src":"37548:44:19"}],"id":5697,"name":"Block","src":"37538:61:19"}],"id":5698,"name":"FunctionDefinition","src":"37465:134:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"oraclize_randomDS_getSessionPubKeyHash","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5699,"name":"ParameterList","src":"37652:2:19"},{"children":[{"attributes":{"constant":false,"name":"_sessionKeyHash","scope":5710,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5702,"name":"ElementaryTypeName","src":"37685:7:19"}],"id":5703,"name":"VariableDeclaration","src":"37685:23:19"}],"id":5704,"name":"ParameterList","src":"37684:25:19"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2348,"type":"modifier ()","value":"oraclizeAPI"},"id":5700,"name":"Identifier","src":"37655:11:19"}],"id":5701,"name":"ModifierInvocation","src":"37655:11:19"},{"children":[{"attributes":{"functionReturnParameters":5704},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"randomDS_getSessionPubKeyHash","referencedDeclaration":1606,"type":"function () view external returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2234,"type":"contract OraclizeI","value":"oraclize"},"id":5705,"name":"Identifier","src":"37727:8:19"}],"id":5706,"name":"MemberAccess","src":"37727:38:19"}],"id":5707,"name":"FunctionCall","src":"37727:40:19"}],"id":5708,"name":"Return","src":"37720:47:19"}],"id":5709,"name":"Block","src":"37710:64:19"}],"id":5710,"name":"FunctionDefinition","src":"37605:169:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"parseAddr","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5880,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5711,"name":"ElementaryTypeName","src":"37799:6:19"}],"id":5712,"name":"VariableDeclaration","src":"37799:16:19"}],"id":5713,"name":"ParameterList","src":"37798:18:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedAddress","scope":5880,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5714,"name":"ElementaryTypeName","src":"37840:7:19"}],"id":5715,"name":"VariableDeclaration","src":"37840:22:19"}],"id":5716,"name":"ParameterList","src":"37839:24:19"},{"children":[{"attributes":{"assignments":[5718]},"children":[{"attributes":{"constant":false,"name":"tmp","scope":5879,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5717,"name":"ElementaryTypeName","src":"37874:5:19"}],"id":5718,"name":"VariableDeclaration","src":"37874:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5719,"name":"ElementaryTypeNameExpression","src":"37893:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5712,"type":"string memory","value":"_a"},"id":5720,"name":"Identifier","src":"37899:2:19"}],"id":5721,"name":"FunctionCall","src":"37893:9:19"}],"id":5722,"name":"VariableDeclarationStatement","src":"37874:28:19"},{"attributes":{"assignments":[5724]},"children":[{"attributes":{"constant":false,"name":"iaddr","scope":5879,"stateVariable":false,"storageLocation":"default","type":"uint160","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint160","type":"uint160"},"id":5723,"name":"ElementaryTypeName","src":"37912:7:19"}],"id":5724,"name":"VariableDeclaration","src":"37912:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5725,"name":"Literal","src":"37928:1:19"}],"id":5726,"name":"VariableDeclarationStatement","src":"37912:17:19"},{"attributes":{"assignments":[5728],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b1","scope":5879,"stateVariable":false,"storageLocation":"default","type":"uint160","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint160","type":"uint160"},"id":5727,"name":"ElementaryTypeName","src":"37939:7:19"}],"id":5728,"name":"VariableDeclaration","src":"37939:10:19"}],"id":5729,"name":"VariableDeclarationStatement","src":"37939:10:19"},{"attributes":{"assignments":[5731],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b2","scope":5879,"stateVariable":false,"storageLocation":"default","type":"uint160","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint160","type":"uint160"},"id":5730,"name":"ElementaryTypeName","src":"37959:7:19"}],"id":5731,"name":"VariableDeclaration","src":"37959:10:19"}],"id":5732,"name":"VariableDeclarationStatement","src":"37959:10:19"},{"children":[{"attributes":{"assignments":[5734]},"children":[{"attributes":{"constant":false,"name":"i","scope":5874,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5733,"name":"ElementaryTypeName","src":"37984:4:19"}],"id":5734,"name":"VariableDeclaration","src":"37984:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5735,"name":"Literal","src":"37993:1:19"}],"id":5736,"name":"VariableDeclarationStatement","src":"37984:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"uint256","value":"i"},"id":5737,"name":"Identifier","src":"37996:1:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_42_by_1","typeString":"int_const 42"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 42"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5738,"name":"Literal","src":"38000:1:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5739,"name":"Literal","src":"38004:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5740,"name":"Literal","src":"38008:2:19"}],"id":5741,"name":"BinaryOperation","src":"38004:6:19"}],"id":5742,"name":"BinaryOperation","src":"38000:10:19"}],"id":5743,"name":"BinaryOperation","src":"37996:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"uint256","value":"i"},"id":5744,"name":"Identifier","src":"38012:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5745,"name":"Literal","src":"38017:1:19"}],"id":5746,"name":"Assignment","src":"38012:6:19"}],"id":5747,"name":"ExpressionStatement","src":"38012:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5724,"type":"uint160","value":"iaddr"},"id":5748,"name":"Identifier","src":"38034:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":5749,"name":"Literal","src":"38043:3:19"}],"id":5750,"name":"Assignment","src":"38034:12:19"}],"id":5751,"name":"ExpressionStatement","src":"38034:12:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5752,"name":"Identifier","src":"38060:2:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":5753,"name":"ElementaryTypeNameExpression","src":"38065:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5754,"name":"ElementaryTypeNameExpression","src":"38073:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5718,"type":"bytes memory","value":"tmp"},"id":5755,"name":"Identifier","src":"38079:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"uint256","value":"i"},"id":5756,"name":"Identifier","src":"38083:1:19"}],"id":5757,"name":"IndexAccess","src":"38079:6:19"}],"id":5758,"name":"FunctionCall","src":"38073:13:19"}],"id":5759,"name":"FunctionCall","src":"38065:22:19"}],"id":5760,"name":"Assignment","src":"38060:27:19"}],"id":5761,"name":"ExpressionStatement","src":"38060:27:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5762,"name":"Identifier","src":"38101:2:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":5763,"name":"ElementaryTypeNameExpression","src":"38106:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":5764,"name":"ElementaryTypeNameExpression","src":"38114:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5718,"type":"bytes memory","value":"tmp"},"id":5765,"name":"Identifier","src":"38120:3:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"uint256","value":"i"},"id":5766,"name":"Identifier","src":"38124:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5767,"name":"Literal","src":"38128:1:19"}],"id":5768,"name":"BinaryOperation","src":"38124:5:19"}],"id":5769,"name":"IndexAccess","src":"38120:10:19"}],"id":5770,"name":"FunctionCall","src":"38114:17:19"}],"id":5771,"name":"FunctionCall","src":"38106:26:19"}],"id":5772,"name":"Assignment","src":"38101:31:19"}],"id":5773,"name":"ExpressionStatement","src":"38101:31:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5774,"name":"Identifier","src":"38151:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 97","value":"97"},"id":5775,"name":"Literal","src":"38157:2:19"}],"id":5776,"name":"BinaryOperation","src":"38151:8:19"}],"id":5777,"name":"TupleExpression","src":"38150:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5778,"name":"Identifier","src":"38165:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"313032","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 102","value":"102"},"id":5779,"name":"Literal","src":"38171:3:19"}],"id":5780,"name":"BinaryOperation","src":"38165:9:19"}],"id":5781,"name":"TupleExpression","src":"38164:11:19"}],"id":5782,"name":"BinaryOperation","src":"38150:25:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5783,"name":"Identifier","src":"38195:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 87","value":"87"},"id":5784,"name":"Literal","src":"38201:2:19"}],"id":5785,"name":"Assignment","src":"38195:8:19"}],"id":5786,"name":"ExpressionStatement","src":"38195:8:19"}],"id":5787,"name":"Block","src":"38177:41:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5788,"name":"Identifier","src":"38229:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":5789,"name":"Literal","src":"38235:2:19"}],"id":5790,"name":"BinaryOperation","src":"38229:8:19"}],"id":5791,"name":"TupleExpression","src":"38228:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5792,"name":"Identifier","src":"38243:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3730","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 70","value":"70"},"id":5793,"name":"Literal","src":"38249:2:19"}],"id":5794,"name":"BinaryOperation","src":"38243:8:19"}],"id":5795,"name":"TupleExpression","src":"38242:10:19"}],"id":5796,"name":"BinaryOperation","src":"38228:24:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5797,"name":"Identifier","src":"38272:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3535","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 55","value":"55"},"id":5798,"name":"Literal","src":"38278:2:19"}],"id":5799,"name":"Assignment","src":"38272:8:19"}],"id":5800,"name":"ExpressionStatement","src":"38272:8:19"}],"id":5801,"name":"Block","src":"38254:41:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5802,"name":"Identifier","src":"38306:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":5803,"name":"Literal","src":"38312:2:19"}],"id":5804,"name":"BinaryOperation","src":"38306:8:19"}],"id":5805,"name":"TupleExpression","src":"38305:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5806,"name":"Identifier","src":"38320:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":5807,"name":"Literal","src":"38326:2:19"}],"id":5808,"name":"BinaryOperation","src":"38320:8:19"}],"id":5809,"name":"TupleExpression","src":"38319:10:19"}],"id":5810,"name":"BinaryOperation","src":"38305:24:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5811,"name":"Identifier","src":"38349:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":5812,"name":"Literal","src":"38355:2:19"}],"id":5813,"name":"Assignment","src":"38349:8:19"}],"id":5814,"name":"ExpressionStatement","src":"38349:8:19"}],"id":5815,"name":"Block","src":"38331:41:19"}],"id":5816,"name":"IfStatement","src":"38301:71:19"}],"id":5817,"name":"IfStatement","src":"38224:148:19"}],"id":5818,"name":"IfStatement","src":"38146:226:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5819,"name":"Identifier","src":"38390:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 97","value":"97"},"id":5820,"name":"Literal","src":"38396:2:19"}],"id":5821,"name":"BinaryOperation","src":"38390:8:19"}],"id":5822,"name":"TupleExpression","src":"38389:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5823,"name":"Identifier","src":"38404:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"313032","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 102","value":"102"},"id":5824,"name":"Literal","src":"38410:3:19"}],"id":5825,"name":"BinaryOperation","src":"38404:9:19"}],"id":5826,"name":"TupleExpression","src":"38403:11:19"}],"id":5827,"name":"BinaryOperation","src":"38389:25:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5828,"name":"Identifier","src":"38434:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 87","value":"87"},"id":5829,"name":"Literal","src":"38440:2:19"}],"id":5830,"name":"Assignment","src":"38434:8:19"}],"id":5831,"name":"ExpressionStatement","src":"38434:8:19"}],"id":5832,"name":"Block","src":"38416:41:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5833,"name":"Identifier","src":"38468:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":5834,"name":"Literal","src":"38474:2:19"}],"id":5835,"name":"BinaryOperation","src":"38468:8:19"}],"id":5836,"name":"TupleExpression","src":"38467:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5837,"name":"Identifier","src":"38482:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3730","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 70","value":"70"},"id":5838,"name":"Literal","src":"38488:2:19"}],"id":5839,"name":"BinaryOperation","src":"38482:8:19"}],"id":5840,"name":"TupleExpression","src":"38481:10:19"}],"id":5841,"name":"BinaryOperation","src":"38467:24:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5842,"name":"Identifier","src":"38511:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3535","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 55","value":"55"},"id":5843,"name":"Literal","src":"38517:2:19"}],"id":5844,"name":"Assignment","src":"38511:8:19"}],"id":5845,"name":"ExpressionStatement","src":"38511:8:19"}],"id":5846,"name":"Block","src":"38493:41:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5847,"name":"Identifier","src":"38545:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":5848,"name":"Literal","src":"38551:2:19"}],"id":5849,"name":"BinaryOperation","src":"38545:8:19"}],"id":5850,"name":"TupleExpression","src":"38544:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5851,"name":"Identifier","src":"38559:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":5852,"name":"Literal","src":"38565:2:19"}],"id":5853,"name":"BinaryOperation","src":"38559:8:19"}],"id":5854,"name":"TupleExpression","src":"38558:10:19"}],"id":5855,"name":"BinaryOperation","src":"38544:24:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5856,"name":"Identifier","src":"38588:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":5857,"name":"Literal","src":"38594:2:19"}],"id":5858,"name":"Assignment","src":"38588:8:19"}],"id":5859,"name":"ExpressionStatement","src":"38588:8:19"}],"id":5860,"name":"Block","src":"38570:41:19"}],"id":5861,"name":"IfStatement","src":"38540:71:19"}],"id":5862,"name":"IfStatement","src":"38463:148:19"}],"id":5863,"name":"IfStatement","src":"38385:226:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5724,"type":"uint160","value":"iaddr"},"id":5864,"name":"Identifier","src":"38624:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint160","typeString":"uint160"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint160"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5728,"type":"uint160","value":"b1"},"id":5865,"name":"Identifier","src":"38634:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":5866,"name":"Literal","src":"38639:2:19"}],"id":5867,"name":"BinaryOperation","src":"38634:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5731,"type":"uint160","value":"b2"},"id":5868,"name":"Identifier","src":"38644:2:19"}],"id":5869,"name":"BinaryOperation","src":"38634:12:19"}],"id":5870,"name":"TupleExpression","src":"38633:14:19"}],"id":5871,"name":"Assignment","src":"38624:23:19"}],"id":5872,"name":"ExpressionStatement","src":"38624:23:19"}],"id":5873,"name":"Block","src":"38020:638:19"}],"id":5874,"name":"ForStatement","src":"37979:679:19"},{"attributes":{"functionReturnParameters":5716},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5875,"name":"ElementaryTypeNameExpression","src":"38674:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5724,"type":"uint160","value":"iaddr"},"id":5876,"name":"Identifier","src":"38682:5:19"}],"id":5877,"name":"FunctionCall","src":"38674:14:19"}],"id":5878,"name":"Return","src":"38667:21:19"}],"id":5879,"name":"Block","src":"37864:831:19"}],"id":5880,"name":"FunctionDefinition","src":"37780:915:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strCompare","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5975,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5881,"name":"ElementaryTypeName","src":"38721:6:19"}],"id":5882,"name":"VariableDeclaration","src":"38721:16:19"},{"attributes":{"constant":false,"name":"_b","scope":5975,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5883,"name":"ElementaryTypeName","src":"38739:6:19"}],"id":5884,"name":"VariableDeclaration","src":"38739:16:19"}],"id":5885,"name":"ParameterList","src":"38720:36:19"},{"children":[{"attributes":{"constant":false,"name":"_returnCode","scope":5975,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":5886,"name":"ElementaryTypeName","src":"38780:3:19"}],"id":5887,"name":"VariableDeclaration","src":"38780:15:19"}],"id":5888,"name":"ParameterList","src":"38779:17:19"},{"children":[{"attributes":{"assignments":[5890]},"children":[{"attributes":{"constant":false,"name":"a","scope":5974,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5889,"name":"ElementaryTypeName","src":"38807:5:19"}],"id":5890,"name":"VariableDeclaration","src":"38807:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5891,"name":"ElementaryTypeNameExpression","src":"38824:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5882,"type":"string memory","value":"_a"},"id":5892,"name":"Identifier","src":"38830:2:19"}],"id":5893,"name":"FunctionCall","src":"38824:9:19"}],"id":5894,"name":"VariableDeclarationStatement","src":"38807:26:19"},{"attributes":{"assignments":[5896]},"children":[{"attributes":{"constant":false,"name":"b","scope":5974,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5895,"name":"ElementaryTypeName","src":"38843:5:19"}],"id":5896,"name":"VariableDeclaration","src":"38843:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5897,"name":"ElementaryTypeNameExpression","src":"38860:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5884,"type":"string memory","value":"_b"},"id":5898,"name":"Identifier","src":"38866:2:19"}],"id":5899,"name":"FunctionCall","src":"38860:9:19"}],"id":5900,"name":"VariableDeclarationStatement","src":"38843:26:19"},{"attributes":{"assignments":[5902]},"children":[{"attributes":{"constant":false,"name":"minLength","scope":5974,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5901,"name":"ElementaryTypeName","src":"38879:4:19"}],"id":5902,"name":"VariableDeclaration","src":"38879:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5903,"name":"Identifier","src":"38896:1:19"}],"id":5904,"name":"MemberAccess","src":"38896:8:19"}],"id":5905,"name":"VariableDeclarationStatement","src":"38879:25:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5906,"name":"Identifier","src":"38918:1:19"}],"id":5907,"name":"MemberAccess","src":"38918:8:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5902,"type":"uint256","value":"minLength"},"id":5908,"name":"Identifier","src":"38929:9:19"}],"id":5909,"name":"BinaryOperation","src":"38918:20:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5902,"type":"uint256","value":"minLength"},"id":5910,"name":"Identifier","src":"38954:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5911,"name":"Identifier","src":"38966:1:19"}],"id":5912,"name":"MemberAccess","src":"38966:8:19"}],"id":5913,"name":"Assignment","src":"38954:20:19"}],"id":5914,"name":"ExpressionStatement","src":"38954:20:19"}],"id":5915,"name":"Block","src":"38940:45:19"}],"id":5916,"name":"IfStatement","src":"38914:71:19"},{"children":[{"attributes":{"assignments":[5918]},"children":[{"attributes":{"constant":false,"name":"i","scope":5951,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5917,"name":"ElementaryTypeName","src":"38999:4:19"}],"id":5918,"name":"VariableDeclaration","src":"38999:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5919,"name":"Literal","src":"39008:1:19"}],"id":5920,"name":"VariableDeclarationStatement","src":"38999:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5921,"name":"Identifier","src":"39011:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5902,"type":"uint256","value":"minLength"},"id":5922,"name":"Identifier","src":"39015:9:19"}],"id":5923,"name":"BinaryOperation","src":"39011:13:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5924,"name":"Identifier","src":"39026:1:19"}],"id":5925,"name":"UnaryOperation","src":"39026:4:19"}],"id":5926,"name":"ExpressionStatement","src":"39026:4:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5927,"name":"Identifier","src":"39050:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5928,"name":"Identifier","src":"39052:1:19"}],"id":5929,"name":"IndexAccess","src":"39050:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5930,"name":"Identifier","src":"39057:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5931,"name":"Identifier","src":"39059:1:19"}],"id":5932,"name":"IndexAccess","src":"39057:4:19"}],"id":5933,"name":"BinaryOperation","src":"39050:11:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5934,"name":"Literal","src":"39089:1:19"}],"id":5935,"name":"UnaryOperation","src":"39088:2:19"}],"id":5936,"name":"Return","src":"39081:9:19"}],"id":5937,"name":"Block","src":"39063:42:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5938,"name":"Identifier","src":"39115:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5939,"name":"Identifier","src":"39117:1:19"}],"id":5940,"name":"IndexAccess","src":"39115:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5941,"name":"Identifier","src":"39122:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5918,"type":"uint256","value":"i"},"id":5942,"name":"Identifier","src":"39124:1:19"}],"id":5943,"name":"IndexAccess","src":"39122:4:19"}],"id":5944,"name":"BinaryOperation","src":"39115:11:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5945,"name":"Literal","src":"39153:1:19"}],"id":5946,"name":"Return","src":"39146:8:19"}],"id":5947,"name":"Block","src":"39128:41:19"}],"id":5948,"name":"IfStatement","src":"39111:58:19"}],"id":5949,"name":"IfStatement","src":"39046:123:19"}],"id":5950,"name":"Block","src":"39032:147:19"}],"id":5951,"name":"ForStatement","src":"38994:185:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5952,"name":"Identifier","src":"39192:1:19"}],"id":5953,"name":"MemberAccess","src":"39192:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5954,"name":"Identifier","src":"39203:1:19"}],"id":5955,"name":"MemberAccess","src":"39203:8:19"}],"id":5956,"name":"BinaryOperation","src":"39192:19:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5957,"name":"Literal","src":"39235:1:19"}],"id":5958,"name":"UnaryOperation","src":"39234:2:19"}],"id":5959,"name":"Return","src":"39227:9:19"}],"id":5960,"name":"Block","src":"39213:34:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5890,"type":"bytes memory","value":"a"},"id":5961,"name":"Identifier","src":"39257:1:19"}],"id":5962,"name":"MemberAccess","src":"39257:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5896,"type":"bytes memory","value":"b"},"id":5963,"name":"Identifier","src":"39268:1:19"}],"id":5964,"name":"MemberAccess","src":"39268:8:19"}],"id":5965,"name":"BinaryOperation","src":"39257:19:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5966,"name":"Literal","src":"39299:1:19"}],"id":5967,"name":"Return","src":"39292:8:19"}],"id":5968,"name":"Block","src":"39278:33:19"},{"children":[{"attributes":{"functionReturnParameters":5888},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5969,"name":"Literal","src":"39338:1:19"}],"id":5970,"name":"Return","src":"39331:8:19"}],"id":5971,"name":"Block","src":"39317:33:19"}],"id":5972,"name":"IfStatement","src":"39253:97:19"}],"id":5973,"name":"IfStatement","src":"39188:162:19"}],"id":5974,"name":"Block","src":"38797:559:19"}],"id":5975,"name":"FunctionDefinition","src":"38701:655:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"indexOf","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_haystack","scope":6103,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5976,"name":"ElementaryTypeName","src":"39379:6:19"}],"id":5977,"name":"VariableDeclaration","src":"39379:23:19"},{"attributes":{"constant":false,"name":"_needle","scope":6103,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5978,"name":"ElementaryTypeName","src":"39404:6:19"}],"id":5979,"name":"VariableDeclaration","src":"39404:21:19"}],"id":5980,"name":"ParameterList","src":"39378:48:19"},{"children":[{"attributes":{"constant":false,"name":"_returnCode","scope":6103,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":5981,"name":"ElementaryTypeName","src":"39450:3:19"}],"id":5982,"name":"VariableDeclaration","src":"39450:15:19"}],"id":5983,"name":"ParameterList","src":"39449:17:19"},{"children":[{"attributes":{"assignments":[5985]},"children":[{"attributes":{"constant":false,"name":"h","scope":6102,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5984,"name":"ElementaryTypeName","src":"39477:5:19"}],"id":5985,"name":"VariableDeclaration","src":"39477:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5986,"name":"ElementaryTypeNameExpression","src":"39494:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5977,"type":"string memory","value":"_haystack"},"id":5987,"name":"Identifier","src":"39500:9:19"}],"id":5988,"name":"FunctionCall","src":"39494:16:19"}],"id":5989,"name":"VariableDeclarationStatement","src":"39477:33:19"},{"attributes":{"assignments":[5991]},"children":[{"attributes":{"constant":false,"name":"n","scope":6102,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5990,"name":"ElementaryTypeName","src":"39520:5:19"}],"id":5991,"name":"VariableDeclaration","src":"39520:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5992,"name":"ElementaryTypeNameExpression","src":"39537:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5979,"type":"string memory","value":"_needle"},"id":5993,"name":"Identifier","src":"39543:7:19"}],"id":5994,"name":"FunctionCall","src":"39537:14:19"}],"id":5995,"name":"VariableDeclarationStatement","src":"39520:31:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":5996,"name":"Identifier","src":"39565:1:19"}],"id":5997,"name":"MemberAccess","src":"39565:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5998,"name":"Literal","src":"39576:1:19"}],"id":5999,"name":"BinaryOperation","src":"39565:12:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6000,"name":"Identifier","src":"39581:1:19"}],"id":6001,"name":"MemberAccess","src":"39581:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6002,"name":"Literal","src":"39592:1:19"}],"id":6003,"name":"BinaryOperation","src":"39581:12:19"}],"id":6004,"name":"BinaryOperation","src":"39565:28:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6005,"name":"Identifier","src":"39598:1:19"}],"id":6006,"name":"MemberAccess","src":"39598:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6007,"name":"Identifier","src":"39609:1:19"}],"id":6008,"name":"MemberAccess","src":"39609:8:19"}],"id":6009,"name":"BinaryOperation","src":"39598:19:19"}],"id":6010,"name":"TupleExpression","src":"39597:21:19"}],"id":6011,"name":"BinaryOperation","src":"39565:53:19"},{"children":[{"attributes":{"functionReturnParameters":5983},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6012,"name":"Literal","src":"39642:1:19"}],"id":6013,"name":"UnaryOperation","src":"39641:2:19"}],"id":6014,"name":"Return","src":"39634:9:19"}],"id":6015,"name":"Block","src":"39620:34:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6016,"name":"Identifier","src":"39664:1:19"}],"id":6017,"name":"MemberAccess","src":"39664:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 3402...(31 digits omitted)...1455"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211455_by_1","typeString":"int_const 3402...(31 digits omitted)...1455"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","type":"int_const 3402...(31 digits omitted)...1455"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_340282366920938463463374607431768211456_by_1","typeString":"int_const 3402...(31 digits omitted)...1456"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 3402...(31 digits omitted)...1456"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6018,"name":"Literal","src":"39676:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"313238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"128"},"id":6019,"name":"Literal","src":"39681:3:19"}],"id":6020,"name":"BinaryOperation","src":"39676:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6021,"name":"Literal","src":"39687:1:19"}],"id":6022,"name":"BinaryOperation","src":"39676:12:19"}],"id":6023,"name":"TupleExpression","src":"39675:14:19"}],"id":6024,"name":"BinaryOperation","src":"39664:25:19"},{"children":[{"attributes":{"functionReturnParameters":5983},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6025,"name":"Literal","src":"39713:1:19"}],"id":6026,"name":"UnaryOperation","src":"39712:2:19"}],"id":6027,"name":"Return","src":"39705:9:19"}],"id":6028,"name":"Block","src":"39691:34:19"},{"children":[{"attributes":{"assignments":[6030]},"children":[{"attributes":{"constant":false,"name":"subindex","scope":6099,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6029,"name":"ElementaryTypeName","src":"39745:4:19"}],"id":6030,"name":"VariableDeclaration","src":"39745:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6031,"name":"Literal","src":"39761:1:19"}],"id":6032,"name":"VariableDeclarationStatement","src":"39745:17:19"},{"children":[{"attributes":{"assignments":[6034]},"children":[{"attributes":{"constant":false,"name":"i","scope":6095,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6033,"name":"ElementaryTypeName","src":"39781:4:19"}],"id":6034,"name":"VariableDeclaration","src":"39781:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6035,"name":"Literal","src":"39790:1:19"}],"id":6036,"name":"VariableDeclarationStatement","src":"39781:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6037,"name":"Identifier","src":"39793:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6038,"name":"Identifier","src":"39797:1:19"}],"id":6039,"name":"MemberAccess","src":"39797:8:19"}],"id":6040,"name":"BinaryOperation","src":"39793:12:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6041,"name":"Identifier","src":"39807:1:19"}],"id":6042,"name":"UnaryOperation","src":"39807:3:19"}],"id":6043,"name":"ExpressionStatement","src":"39807:3:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6044,"name":"Identifier","src":"39834:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6045,"name":"Identifier","src":"39836:1:19"}],"id":6046,"name":"IndexAccess","src":"39834:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6047,"name":"Identifier","src":"39842:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6048,"name":"Literal","src":"39844:1:19"}],"id":6049,"name":"IndexAccess","src":"39842:4:19"}],"id":6050,"name":"BinaryOperation","src":"39834:12:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6051,"name":"Identifier","src":"39870:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6052,"name":"Literal","src":"39881:1:19"}],"id":6053,"name":"Assignment","src":"39870:12:19"}],"id":6054,"name":"ExpressionStatement","src":"39870:12:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6055,"name":"Identifier","src":"39910:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6056,"name":"Identifier","src":"39921:1:19"}],"id":6057,"name":"MemberAccess","src":"39921:8:19"}],"id":6058,"name":"BinaryOperation","src":"39910:19:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6059,"name":"Identifier","src":"39934:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6060,"name":"Identifier","src":"39938:8:19"}],"id":6061,"name":"BinaryOperation","src":"39934:12:19"}],"id":6062,"name":"TupleExpression","src":"39933:14:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6063,"name":"Identifier","src":"39950:1:19"}],"id":6064,"name":"MemberAccess","src":"39950:8:19"}],"id":6065,"name":"BinaryOperation","src":"39933:25:19"}],"id":6066,"name":"BinaryOperation","src":"39910:48:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5985,"type":"bytes memory","value":"h"},"id":6067,"name":"Identifier","src":"39962:1:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6068,"name":"Identifier","src":"39964:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6069,"name":"Identifier","src":"39968:8:19"}],"id":6070,"name":"BinaryOperation","src":"39964:12:19"}],"id":6071,"name":"IndexAccess","src":"39962:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6072,"name":"Identifier","src":"39981:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6073,"name":"Identifier","src":"39983:8:19"}],"id":6074,"name":"IndexAccess","src":"39981:11:19"}],"id":6075,"name":"BinaryOperation","src":"39962:30:19"}],"id":6076,"name":"BinaryOperation","src":"39910:82:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6077,"name":"Identifier","src":"40020:8:19"}],"id":6078,"name":"UnaryOperation","src":"40020:10:19"}],"id":6079,"name":"ExpressionStatement","src":"40020:10:19"}],"id":6080,"name":"Block","src":"39994:59:19"}],"id":6081,"name":"WhileStatement","src":"39904:149:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint256","value":"subindex"},"id":6082,"name":"Identifier","src":"40078:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5991,"type":"bytes memory","value":"n"},"id":6083,"name":"Identifier","src":"40090:1:19"}],"id":6084,"name":"MemberAccess","src":"40090:8:19"}],"id":6085,"name":"BinaryOperation","src":"40078:20:19"},{"children":[{"attributes":{"functionReturnParameters":5983},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6086,"name":"ElementaryTypeNameExpression","src":"40133:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"i"},"id":6087,"name":"Identifier","src":"40137:1:19"}],"id":6088,"name":"FunctionCall","src":"40133:6:19"}],"id":6089,"name":"Return","src":"40126:13:19"}],"id":6090,"name":"Block","src":"40100:62:19"}],"id":6091,"name":"IfStatement","src":"40074:88:19"}],"id":6092,"name":"Block","src":"39848:332:19"}],"id":6093,"name":"IfStatement","src":"39830:350:19"}],"id":6094,"name":"Block","src":"39812:382:19"}],"id":6095,"name":"ForStatement","src":"39776:418:19"},{"attributes":{"functionReturnParameters":5983},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6096,"name":"Literal","src":"40215:1:19"}],"id":6097,"name":"UnaryOperation","src":"40214:2:19"}],"id":6098,"name":"Return","src":"40207:9:19"}],"id":6099,"name":"Block","src":"39731:496:19"}],"id":6100,"name":"IfStatement","src":"39660:567:19"}],"id":6101,"name":"IfStatement","src":"39561:666:19"}],"id":6102,"name":"Block","src":"39467:766:19"}],"id":6103,"name":"FunctionDefinition","src":"39362:871:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strConcat","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6121,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6104,"name":"ElementaryTypeName","src":"40258:6:19"}],"id":6105,"name":"VariableDeclaration","src":"40258:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6121,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6106,"name":"ElementaryTypeName","src":"40276:6:19"}],"id":6107,"name":"VariableDeclaration","src":"40276:16:19"}],"id":6108,"name":"ParameterList","src":"40257:36:19"},{"children":[{"attributes":{"constant":false,"name":"_concatenatedString","scope":6121,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6109,"name":"ElementaryTypeName","src":"40317:6:19"}],"id":6110,"name":"VariableDeclaration","src":"40317:33:19"}],"id":6111,"name":"ParameterList","src":"40316:35:19"},{"children":[{"attributes":{"functionReturnParameters":6111},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"overloadedDeclarations":[6121,6141,6163,6357],"referencedDeclaration":6357,"type":"function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)","value":"strConcat"},"id":6112,"name":"Identifier","src":"40369:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6105,"type":"string memory","value":"_a"},"id":6113,"name":"Identifier","src":"40379:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6107,"type":"string memory","value":"_b"},"id":6114,"name":"Identifier","src":"40383:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6115,"name":"Literal","src":"40387:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6116,"name":"Literal","src":"40391:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6117,"name":"Literal","src":"40395:2:19"}],"id":6118,"name":"FunctionCall","src":"40369:29:19"}],"id":6119,"name":"Return","src":"40362:36:19"}],"id":6120,"name":"Block","src":"40352:53:19"}],"id":6121,"name":"FunctionDefinition","src":"40239:166:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strConcat","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6141,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6122,"name":"ElementaryTypeName","src":"40430:6:19"}],"id":6123,"name":"VariableDeclaration","src":"40430:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6141,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6124,"name":"ElementaryTypeName","src":"40448:6:19"}],"id":6125,"name":"VariableDeclaration","src":"40448:16:19"},{"attributes":{"constant":false,"name":"_c","scope":6141,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6126,"name":"ElementaryTypeName","src":"40466:6:19"}],"id":6127,"name":"VariableDeclaration","src":"40466:16:19"}],"id":6128,"name":"ParameterList","src":"40429:54:19"},{"children":[{"attributes":{"constant":false,"name":"_concatenatedString","scope":6141,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6129,"name":"ElementaryTypeName","src":"40507:6:19"}],"id":6130,"name":"VariableDeclaration","src":"40507:33:19"}],"id":6131,"name":"ParameterList","src":"40506:35:19"},{"children":[{"attributes":{"functionReturnParameters":6131},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"overloadedDeclarations":[6121,6141,6163,6357],"referencedDeclaration":6357,"type":"function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)","value":"strConcat"},"id":6132,"name":"Identifier","src":"40559:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6123,"type":"string memory","value":"_a"},"id":6133,"name":"Identifier","src":"40569:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6125,"type":"string memory","value":"_b"},"id":6134,"name":"Identifier","src":"40573:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6127,"type":"string memory","value":"_c"},"id":6135,"name":"Identifier","src":"40577:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6136,"name":"Literal","src":"40581:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6137,"name":"Literal","src":"40585:2:19"}],"id":6138,"name":"FunctionCall","src":"40559:29:19"}],"id":6139,"name":"Return","src":"40552:36:19"}],"id":6140,"name":"Block","src":"40542:53:19"}],"id":6141,"name":"FunctionDefinition","src":"40411:184:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strConcat","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6142,"name":"ElementaryTypeName","src":"40620:6:19"}],"id":6143,"name":"VariableDeclaration","src":"40620:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6144,"name":"ElementaryTypeName","src":"40638:6:19"}],"id":6145,"name":"VariableDeclaration","src":"40638:16:19"},{"attributes":{"constant":false,"name":"_c","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6146,"name":"ElementaryTypeName","src":"40656:6:19"}],"id":6147,"name":"VariableDeclaration","src":"40656:16:19"},{"attributes":{"constant":false,"name":"_d","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6148,"name":"ElementaryTypeName","src":"40674:6:19"}],"id":6149,"name":"VariableDeclaration","src":"40674:16:19"}],"id":6150,"name":"ParameterList","src":"40619:72:19"},{"children":[{"attributes":{"constant":false,"name":"_concatenatedString","scope":6163,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6151,"name":"ElementaryTypeName","src":"40715:6:19"}],"id":6152,"name":"VariableDeclaration","src":"40715:33:19"}],"id":6153,"name":"ParameterList","src":"40714:35:19"},{"children":[{"attributes":{"functionReturnParameters":6153},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"overloadedDeclarations":[6121,6141,6163,6357],"referencedDeclaration":6357,"type":"function (string memory,string memory,string memory,string memory,string memory) pure returns (string memory)","value":"strConcat"},"id":6154,"name":"Identifier","src":"40767:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6143,"type":"string memory","value":"_a"},"id":6155,"name":"Identifier","src":"40777:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6145,"type":"string memory","value":"_b"},"id":6156,"name":"Identifier","src":"40781:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6147,"type":"string memory","value":"_c"},"id":6157,"name":"Identifier","src":"40785:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6149,"type":"string memory","value":"_d"},"id":6158,"name":"Identifier","src":"40789:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6159,"name":"Literal","src":"40793:2:19"}],"id":6160,"name":"FunctionCall","src":"40767:29:19"}],"id":6161,"name":"Return","src":"40760:36:19"}],"id":6162,"name":"Block","src":"40750:53:19"}],"id":6163,"name":"FunctionDefinition","src":"40601:202:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"strConcat","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6164,"name":"ElementaryTypeName","src":"40828:6:19"}],"id":6165,"name":"VariableDeclaration","src":"40828:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6166,"name":"ElementaryTypeName","src":"40846:6:19"}],"id":6167,"name":"VariableDeclaration","src":"40846:16:19"},{"attributes":{"constant":false,"name":"_c","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6168,"name":"ElementaryTypeName","src":"40864:6:19"}],"id":6169,"name":"VariableDeclaration","src":"40864:16:19"},{"attributes":{"constant":false,"name":"_d","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6170,"name":"ElementaryTypeName","src":"40882:6:19"}],"id":6171,"name":"VariableDeclaration","src":"40882:16:19"},{"attributes":{"constant":false,"name":"_e","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6172,"name":"ElementaryTypeName","src":"40900:6:19"}],"id":6173,"name":"VariableDeclaration","src":"40900:16:19"}],"id":6174,"name":"ParameterList","src":"40827:90:19"},{"children":[{"attributes":{"constant":false,"name":"_concatenatedString","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6175,"name":"ElementaryTypeName","src":"40941:6:19"}],"id":6176,"name":"VariableDeclaration","src":"40941:33:19"}],"id":6177,"name":"ParameterList","src":"40940:35:19"},{"children":[{"attributes":{"assignments":[6179]},"children":[{"attributes":{"constant":false,"name":"_ba","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6178,"name":"ElementaryTypeName","src":"40986:5:19"}],"id":6179,"name":"VariableDeclaration","src":"40986:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6180,"name":"ElementaryTypeNameExpression","src":"41005:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6165,"type":"string memory","value":"_a"},"id":6181,"name":"Identifier","src":"41011:2:19"}],"id":6182,"name":"FunctionCall","src":"41005:9:19"}],"id":6183,"name":"VariableDeclarationStatement","src":"40986:28:19"},{"attributes":{"assignments":[6185]},"children":[{"attributes":{"constant":false,"name":"_bb","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6184,"name":"ElementaryTypeName","src":"41024:5:19"}],"id":6185,"name":"VariableDeclaration","src":"41024:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6186,"name":"ElementaryTypeNameExpression","src":"41043:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"string memory","value":"_b"},"id":6187,"name":"Identifier","src":"41049:2:19"}],"id":6188,"name":"FunctionCall","src":"41043:9:19"}],"id":6189,"name":"VariableDeclarationStatement","src":"41024:28:19"},{"attributes":{"assignments":[6191]},"children":[{"attributes":{"constant":false,"name":"_bc","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6190,"name":"ElementaryTypeName","src":"41062:5:19"}],"id":6191,"name":"VariableDeclaration","src":"41062:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6192,"name":"ElementaryTypeNameExpression","src":"41081:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6169,"type":"string memory","value":"_c"},"id":6193,"name":"Identifier","src":"41087:2:19"}],"id":6194,"name":"FunctionCall","src":"41081:9:19"}],"id":6195,"name":"VariableDeclarationStatement","src":"41062:28:19"},{"attributes":{"assignments":[6197]},"children":[{"attributes":{"constant":false,"name":"_bd","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6196,"name":"ElementaryTypeName","src":"41100:5:19"}],"id":6197,"name":"VariableDeclaration","src":"41100:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6198,"name":"ElementaryTypeNameExpression","src":"41119:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6171,"type":"string memory","value":"_d"},"id":6199,"name":"Identifier","src":"41125:2:19"}],"id":6200,"name":"FunctionCall","src":"41119:9:19"}],"id":6201,"name":"VariableDeclarationStatement","src":"41100:28:19"},{"attributes":{"assignments":[6203]},"children":[{"attributes":{"constant":false,"name":"_be","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6202,"name":"ElementaryTypeName","src":"41138:5:19"}],"id":6203,"name":"VariableDeclaration","src":"41138:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6204,"name":"ElementaryTypeNameExpression","src":"41157:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6173,"type":"string memory","value":"_e"},"id":6205,"name":"Identifier","src":"41163:2:19"}],"id":6206,"name":"FunctionCall","src":"41157:9:19"}],"id":6207,"name":"VariableDeclarationStatement","src":"41138:28:19"},{"attributes":{"assignments":[6209]},"children":[{"attributes":{"constant":false,"name":"abcde","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6208,"name":"ElementaryTypeName","src":"41176:6:19"}],"id":6209,"name":"VariableDeclaration","src":"41176:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6210,"name":"ElementaryTypeName","src":"41202:6:19"}],"id":6211,"name":"NewExpression","src":"41198:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6179,"type":"bytes memory","value":"_ba"},"id":6212,"name":"Identifier","src":"41209:3:19"}],"id":6213,"name":"MemberAccess","src":"41209:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6185,"type":"bytes memory","value":"_bb"},"id":6214,"name":"Identifier","src":"41222:3:19"}],"id":6215,"name":"MemberAccess","src":"41222:10:19"}],"id":6216,"name":"BinaryOperation","src":"41209:23:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6191,"type":"bytes memory","value":"_bc"},"id":6217,"name":"Identifier","src":"41235:3:19"}],"id":6218,"name":"MemberAccess","src":"41235:10:19"}],"id":6219,"name":"BinaryOperation","src":"41209:36:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6197,"type":"bytes memory","value":"_bd"},"id":6220,"name":"Identifier","src":"41248:3:19"}],"id":6221,"name":"MemberAccess","src":"41248:10:19"}],"id":6222,"name":"BinaryOperation","src":"41209:49:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6203,"type":"bytes memory","value":"_be"},"id":6223,"name":"Identifier","src":"41261:3:19"}],"id":6224,"name":"MemberAccess","src":"41261:10:19"}],"id":6225,"name":"BinaryOperation","src":"41209:62:19"}],"id":6226,"name":"FunctionCall","src":"41198:74:19"}],"id":6227,"name":"VariableDeclarationStatement","src":"41176:96:19"},{"attributes":{"assignments":[6229]},"children":[{"attributes":{"constant":false,"name":"babcde","scope":6356,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6228,"name":"ElementaryTypeName","src":"41282:5:19"}],"id":6229,"name":"VariableDeclaration","src":"41282:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6230,"name":"ElementaryTypeNameExpression","src":"41304:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6209,"type":"string memory","value":"abcde"},"id":6231,"name":"Identifier","src":"41310:5:19"}],"id":6232,"name":"FunctionCall","src":"41304:12:19"}],"id":6233,"name":"VariableDeclarationStatement","src":"41282:34:19"},{"attributes":{"assignments":[6235]},"children":[{"attributes":{"constant":false,"name":"k","scope":6356,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6234,"name":"ElementaryTypeName","src":"41326:4:19"}],"id":6235,"name":"VariableDeclaration","src":"41326:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6236,"name":"Literal","src":"41335:1:19"}],"id":6237,"name":"VariableDeclarationStatement","src":"41326:10:19"},{"attributes":{"assignments":[6239]},"children":[{"attributes":{"constant":false,"name":"i","scope":6356,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6238,"name":"ElementaryTypeName","src":"41346:4:19"}],"id":6239,"name":"VariableDeclaration","src":"41346:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6240,"name":"Literal","src":"41355:1:19"}],"id":6241,"name":"VariableDeclarationStatement","src":"41346:10:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6242,"name":"Identifier","src":"41371:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6243,"name":"Literal","src":"41375:1:19"}],"id":6244,"name":"Assignment","src":"41371:5:19"}],"id":6245,"name":"ExpressionStatement","src":"41371:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6246,"name":"Identifier","src":"41378:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6179,"type":"bytes memory","value":"_ba"},"id":6247,"name":"Identifier","src":"41382:3:19"}],"id":6248,"name":"MemberAccess","src":"41382:10:19"}],"id":6249,"name":"BinaryOperation","src":"41378:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6250,"name":"Identifier","src":"41394:1:19"}],"id":6251,"name":"UnaryOperation","src":"41394:3:19"}],"id":6252,"name":"ExpressionStatement","src":"41394:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6253,"name":"Identifier","src":"41413:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6254,"name":"Identifier","src":"41420:1:19"}],"id":6255,"name":"UnaryOperation","src":"41420:3:19"}],"id":6256,"name":"IndexAccess","src":"41413:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6179,"type":"bytes memory","value":"_ba"},"id":6257,"name":"Identifier","src":"41427:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6258,"name":"Identifier","src":"41431:1:19"}],"id":6259,"name":"IndexAccess","src":"41427:6:19"}],"id":6260,"name":"Assignment","src":"41413:20:19"}],"id":6261,"name":"ExpressionStatement","src":"41413:20:19"}],"id":6262,"name":"Block","src":"41399:45:19"}],"id":6263,"name":"ForStatement","src":"41366:78:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6264,"name":"Identifier","src":"41458:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6265,"name":"Literal","src":"41462:1:19"}],"id":6266,"name":"Assignment","src":"41458:5:19"}],"id":6267,"name":"ExpressionStatement","src":"41458:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6268,"name":"Identifier","src":"41465:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6185,"type":"bytes memory","value":"_bb"},"id":6269,"name":"Identifier","src":"41469:3:19"}],"id":6270,"name":"MemberAccess","src":"41469:10:19"}],"id":6271,"name":"BinaryOperation","src":"41465:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6272,"name":"Identifier","src":"41481:1:19"}],"id":6273,"name":"UnaryOperation","src":"41481:3:19"}],"id":6274,"name":"ExpressionStatement","src":"41481:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6275,"name":"Identifier","src":"41500:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6276,"name":"Identifier","src":"41507:1:19"}],"id":6277,"name":"UnaryOperation","src":"41507:3:19"}],"id":6278,"name":"IndexAccess","src":"41500:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6185,"type":"bytes memory","value":"_bb"},"id":6279,"name":"Identifier","src":"41514:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6280,"name":"Identifier","src":"41518:1:19"}],"id":6281,"name":"IndexAccess","src":"41514:6:19"}],"id":6282,"name":"Assignment","src":"41500:20:19"}],"id":6283,"name":"ExpressionStatement","src":"41500:20:19"}],"id":6284,"name":"Block","src":"41486:45:19"}],"id":6285,"name":"ForStatement","src":"41453:78:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6286,"name":"Identifier","src":"41545:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6287,"name":"Literal","src":"41549:1:19"}],"id":6288,"name":"Assignment","src":"41545:5:19"}],"id":6289,"name":"ExpressionStatement","src":"41545:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6290,"name":"Identifier","src":"41552:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6191,"type":"bytes memory","value":"_bc"},"id":6291,"name":"Identifier","src":"41556:3:19"}],"id":6292,"name":"MemberAccess","src":"41556:10:19"}],"id":6293,"name":"BinaryOperation","src":"41552:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6294,"name":"Identifier","src":"41568:1:19"}],"id":6295,"name":"UnaryOperation","src":"41568:3:19"}],"id":6296,"name":"ExpressionStatement","src":"41568:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6297,"name":"Identifier","src":"41587:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6298,"name":"Identifier","src":"41594:1:19"}],"id":6299,"name":"UnaryOperation","src":"41594:3:19"}],"id":6300,"name":"IndexAccess","src":"41587:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6191,"type":"bytes memory","value":"_bc"},"id":6301,"name":"Identifier","src":"41601:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6302,"name":"Identifier","src":"41605:1:19"}],"id":6303,"name":"IndexAccess","src":"41601:6:19"}],"id":6304,"name":"Assignment","src":"41587:20:19"}],"id":6305,"name":"ExpressionStatement","src":"41587:20:19"}],"id":6306,"name":"Block","src":"41573:45:19"}],"id":6307,"name":"ForStatement","src":"41540:78:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6308,"name":"Identifier","src":"41632:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6309,"name":"Literal","src":"41636:1:19"}],"id":6310,"name":"Assignment","src":"41632:5:19"}],"id":6311,"name":"ExpressionStatement","src":"41632:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6312,"name":"Identifier","src":"41639:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6197,"type":"bytes memory","value":"_bd"},"id":6313,"name":"Identifier","src":"41643:3:19"}],"id":6314,"name":"MemberAccess","src":"41643:10:19"}],"id":6315,"name":"BinaryOperation","src":"41639:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6316,"name":"Identifier","src":"41655:1:19"}],"id":6317,"name":"UnaryOperation","src":"41655:3:19"}],"id":6318,"name":"ExpressionStatement","src":"41655:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6319,"name":"Identifier","src":"41674:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6320,"name":"Identifier","src":"41681:1:19"}],"id":6321,"name":"UnaryOperation","src":"41681:3:19"}],"id":6322,"name":"IndexAccess","src":"41674:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6197,"type":"bytes memory","value":"_bd"},"id":6323,"name":"Identifier","src":"41688:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6324,"name":"Identifier","src":"41692:1:19"}],"id":6325,"name":"IndexAccess","src":"41688:6:19"}],"id":6326,"name":"Assignment","src":"41674:20:19"}],"id":6327,"name":"ExpressionStatement","src":"41674:20:19"}],"id":6328,"name":"Block","src":"41660:45:19"}],"id":6329,"name":"ForStatement","src":"41627:78:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6330,"name":"Identifier","src":"41719:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6331,"name":"Literal","src":"41723:1:19"}],"id":6332,"name":"Assignment","src":"41719:5:19"}],"id":6333,"name":"ExpressionStatement","src":"41719:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6334,"name":"Identifier","src":"41726:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6203,"type":"bytes memory","value":"_be"},"id":6335,"name":"Identifier","src":"41730:3:19"}],"id":6336,"name":"MemberAccess","src":"41730:10:19"}],"id":6337,"name":"BinaryOperation","src":"41726:14:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6338,"name":"Identifier","src":"41742:1:19"}],"id":6339,"name":"UnaryOperation","src":"41742:3:19"}],"id":6340,"name":"ExpressionStatement","src":"41742:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6341,"name":"Identifier","src":"41761:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6235,"type":"uint256","value":"k"},"id":6342,"name":"Identifier","src":"41768:1:19"}],"id":6343,"name":"UnaryOperation","src":"41768:3:19"}],"id":6344,"name":"IndexAccess","src":"41761:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6203,"type":"bytes memory","value":"_be"},"id":6345,"name":"Identifier","src":"41775:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6239,"type":"uint256","value":"i"},"id":6346,"name":"Identifier","src":"41779:1:19"}],"id":6347,"name":"IndexAccess","src":"41775:6:19"}],"id":6348,"name":"Assignment","src":"41761:20:19"}],"id":6349,"name":"ExpressionStatement","src":"41761:20:19"}],"id":6350,"name":"Block","src":"41747:45:19"}],"id":6351,"name":"ForStatement","src":"41714:78:19"},{"attributes":{"functionReturnParameters":6177},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":6352,"name":"ElementaryTypeNameExpression","src":"41808:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6229,"type":"bytes memory","value":"babcde"},"id":6353,"name":"Identifier","src":"41815:6:19"}],"id":6354,"name":"FunctionCall","src":"41808:14:19"}],"id":6355,"name":"Return","src":"41801:21:19"}],"id":6356,"name":"Block","src":"40976:853:19"}],"id":6357,"name":"FunctionDefinition","src":"40809:1020:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeParseInt","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6370,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6358,"name":"ElementaryTypeName","src":"41857:6:19"}],"id":6359,"name":"VariableDeclaration","src":"41857:16:19"}],"id":6360,"name":"ParameterList","src":"41856:18:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedInt","scope":6370,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6361,"name":"ElementaryTypeName","src":"41898:4:19"}],"id":6362,"name":"VariableDeclaration","src":"41898:15:19"}],"id":6363,"name":"ParameterList","src":"41897:17:19"},{"children":[{"attributes":{"functionReturnParameters":6363},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[6370,6496],"referencedDeclaration":6496,"type":"function (string memory,uint256) pure returns (uint256)","value":"safeParseInt"},"id":6364,"name":"Identifier","src":"41932:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6359,"type":"string memory","value":"_a"},"id":6365,"name":"Identifier","src":"41945:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6366,"name":"Literal","src":"41949:1:19"}],"id":6367,"name":"FunctionCall","src":"41932:19:19"}],"id":6368,"name":"Return","src":"41925:26:19"}],"id":6369,"name":"Block","src":"41915:43:19"}],"id":6370,"name":"FunctionDefinition","src":"41835:123:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeParseInt","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6496,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6371,"name":"ElementaryTypeName","src":"41986:6:19"}],"id":6372,"name":"VariableDeclaration","src":"41986:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6373,"name":"ElementaryTypeName","src":"42004:4:19"}],"id":6374,"name":"VariableDeclaration","src":"42004:7:19"}],"id":6375,"name":"ParameterList","src":"41985:27:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedInt","scope":6496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6376,"name":"ElementaryTypeName","src":"42036:4:19"}],"id":6377,"name":"VariableDeclaration","src":"42036:15:19"}],"id":6378,"name":"ParameterList","src":"42035:17:19"},{"children":[{"attributes":{"assignments":[6380]},"children":[{"attributes":{"constant":false,"name":"bresult","scope":6495,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6379,"name":"ElementaryTypeName","src":"42063:5:19"}],"id":6380,"name":"VariableDeclaration","src":"42063:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6381,"name":"ElementaryTypeNameExpression","src":"42086:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6372,"type":"string memory","value":"_a"},"id":6382,"name":"Identifier","src":"42092:2:19"}],"id":6383,"name":"FunctionCall","src":"42086:9:19"}],"id":6384,"name":"VariableDeclarationStatement","src":"42063:32:19"},{"attributes":{"assignments":[6386]},"children":[{"attributes":{"constant":false,"name":"mint","scope":6495,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6385,"name":"ElementaryTypeName","src":"42105:4:19"}],"id":6386,"name":"VariableDeclaration","src":"42105:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6387,"name":"Literal","src":"42117:1:19"}],"id":6388,"name":"VariableDeclarationStatement","src":"42105:13:19"},{"attributes":{"assignments":[6390]},"children":[{"attributes":{"constant":false,"name":"decimals","scope":6495,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6389,"name":"ElementaryTypeName","src":"42128:4:19"}],"id":6390,"name":"VariableDeclaration","src":"42128:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6391,"name":"Literal","src":"42144:5:19"}],"id":6392,"name":"VariableDeclarationStatement","src":"42128:21:19"},{"children":[{"attributes":{"assignments":[6394]},"children":[{"attributes":{"constant":false,"name":"i","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6393,"name":"ElementaryTypeName","src":"42164:4:19"}],"id":6394,"name":"VariableDeclaration","src":"42164:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6395,"name":"Literal","src":"42173:1:19"}],"id":6396,"name":"VariableDeclarationStatement","src":"42164:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6397,"name":"Identifier","src":"42176:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6398,"name":"Identifier","src":"42180:7:19"}],"id":6399,"name":"MemberAccess","src":"42180:14:19"}],"id":6400,"name":"BinaryOperation","src":"42176:18:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6401,"name":"Identifier","src":"42196:1:19"}],"id":6402,"name":"UnaryOperation","src":"42196:3:19"}],"id":6403,"name":"ExpressionStatement","src":"42196:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6404,"name":"ElementaryTypeNameExpression","src":"42220:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6405,"name":"ElementaryTypeNameExpression","src":"42225:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6406,"name":"Identifier","src":"42231:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6407,"name":"Identifier","src":"42239:1:19"}],"id":6408,"name":"IndexAccess","src":"42231:10:19"}],"id":6409,"name":"FunctionCall","src":"42225:17:19"}],"id":6410,"name":"FunctionCall","src":"42220:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6411,"name":"Literal","src":"42247:2:19"}],"id":6412,"name":"BinaryOperation","src":"42220:29:19"}],"id":6413,"name":"TupleExpression","src":"42219:31:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6414,"name":"ElementaryTypeNameExpression","src":"42255:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6415,"name":"ElementaryTypeNameExpression","src":"42260:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6416,"name":"Identifier","src":"42266:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6417,"name":"Identifier","src":"42274:1:19"}],"id":6418,"name":"IndexAccess","src":"42266:10:19"}],"id":6419,"name":"FunctionCall","src":"42260:17:19"}],"id":6420,"name":"FunctionCall","src":"42255:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":6421,"name":"Literal","src":"42282:2:19"}],"id":6422,"name":"BinaryOperation","src":"42255:29:19"}],"id":6423,"name":"TupleExpression","src":"42254:31:19"}],"id":6424,"name":"BinaryOperation","src":"42219:66:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6390,"type":"bool","value":"decimals"},"id":6425,"name":"Identifier","src":"42309:8:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"_b"},"id":6426,"name":"Identifier","src":"42344:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6427,"name":"Literal","src":"42350:1:19"}],"id":6428,"name":"BinaryOperation","src":"42344:7:19"},{"id":6429,"name":"Break","src":"42353:5:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"_b"},"id":6430,"name":"Identifier","src":"42385:2:19"}],"id":6431,"name":"UnaryOperation","src":"42385:4:19"}],"id":6432,"name":"ExpressionStatement","src":"42385:4:19"}],"id":6433,"name":"IfStatement","src":"42340:49:19"}],"id":6434,"name":"Block","src":"42319:89:19"}],"id":6435,"name":"IfStatement","src":"42305:103:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"uint256","value":"mint"},"id":6436,"name":"Identifier","src":"42425:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6437,"name":"Literal","src":"42433:2:19"}],"id":6438,"name":"Assignment","src":"42425:10:19"}],"id":6439,"name":"ExpressionStatement","src":"42425:10:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"uint256","value":"mint"},"id":6440,"name":"Identifier","src":"42453:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6441,"name":"ElementaryTypeNameExpression","src":"42461:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6442,"name":"ElementaryTypeNameExpression","src":"42466:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6443,"name":"Identifier","src":"42472:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6444,"name":"Identifier","src":"42480:1:19"}],"id":6445,"name":"IndexAccess","src":"42472:10:19"}],"id":6446,"name":"FunctionCall","src":"42466:17:19"}],"id":6447,"name":"FunctionCall","src":"42461:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6448,"name":"Literal","src":"42487:2:19"}],"id":6449,"name":"BinaryOperation","src":"42461:28:19"}],"id":6450,"name":"Assignment","src":"42453:36:19"}],"id":6451,"name":"ExpressionStatement","src":"42453:36:19"}],"id":6452,"name":"Block","src":"42287:217:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6453,"name":"ElementaryTypeNameExpression","src":"42514:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6454,"name":"ElementaryTypeNameExpression","src":"42519:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"bytes memory","value":"bresult"},"id":6455,"name":"Identifier","src":"42525:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6394,"type":"uint256","value":"i"},"id":6456,"name":"Identifier","src":"42533:1:19"}],"id":6457,"name":"IndexAccess","src":"42525:10:19"}],"id":6458,"name":"FunctionCall","src":"42519:17:19"}],"id":6459,"name":"FunctionCall","src":"42514:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3436","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 46","value":"46"},"id":6460,"name":"Literal","src":"42541:2:19"}],"id":6461,"name":"BinaryOperation","src":"42514:29:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e61ad9fae8fec249700a2b9f69c490bb75dcbed87b02d29d687b2f5b8e212ec2","typeString":"literal_string \"More than one decimal encountered in string!\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":6462,"name":"Identifier","src":"42563:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6390,"type":"bool","value":"decimals"},"id":6463,"name":"Identifier","src":"42572:8:19"}],"id":6464,"name":"UnaryOperation","src":"42571:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"4d6f7265207468616e206f6e6520646563696d616c20656e636f756e746572656420696e20737472696e6721","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"More than one decimal encountered in string!\"","value":"More than one decimal encountered in string!"},"id":6465,"name":"Literal","src":"42582:46:19"}],"id":6466,"name":"FunctionCall","src":"42563:66:19"}],"id":6467,"name":"ExpressionStatement","src":"42563:66:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6390,"type":"bool","value":"decimals"},"id":6468,"name":"Identifier","src":"42647:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6469,"name":"Literal","src":"42658:4:19"}],"id":6470,"name":"Assignment","src":"42647:15:19"}],"id":6471,"name":"ExpressionStatement","src":"42647:15:19"}],"id":6472,"name":"Block","src":"42545:132:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4be58aa33854b9640df5e6de9362711524d16dd038d5e02fc1ba6b1608cc4f9d","typeString":"literal_string \"Non-numeral character encountered in string!\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":6473,"name":"Identifier","src":"42701:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"4e6f6e2d6e756d6572616c2063686172616374657220656e636f756e746572656420696e20737472696e6721","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Non-numeral character encountered in string!\"","value":"Non-numeral character encountered in string!"},"id":6474,"name":"Literal","src":"42708:46:19"}],"id":6475,"name":"FunctionCall","src":"42701:54:19"}],"id":6476,"name":"ExpressionStatement","src":"42701:54:19"}],"id":6477,"name":"Block","src":"42683:87:19"}],"id":6478,"name":"IfStatement","src":"42510:260:19"}],"id":6479,"name":"IfStatement","src":"42215:555:19"}],"id":6480,"name":"Block","src":"42201:579:19"}],"id":6481,"name":"ForStatement","src":"42159:621:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"_b"},"id":6482,"name":"Identifier","src":"42793:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6483,"name":"Literal","src":"42798:1:19"}],"id":6484,"name":"BinaryOperation","src":"42793:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"uint256","value":"mint"},"id":6485,"name":"Identifier","src":"42815:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6486,"name":"Literal","src":"42823:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6374,"type":"uint256","value":"_b"},"id":6487,"name":"Identifier","src":"42829:2:19"}],"id":6488,"name":"BinaryOperation","src":"42823:8:19"}],"id":6489,"name":"Assignment","src":"42815:16:19"}],"id":6490,"name":"ExpressionStatement","src":"42815:16:19"}],"id":6491,"name":"Block","src":"42801:41:19"}],"id":6492,"name":"IfStatement","src":"42789:53:19"},{"attributes":{"functionReturnParameters":6378},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6386,"type":"uint256","value":"mint"},"id":6493,"name":"Identifier","src":"42858:4:19"}],"id":6494,"name":"Return","src":"42851:11:19"}],"id":6495,"name":"Block","src":"42053:816:19"}],"id":6496,"name":"FunctionDefinition","src":"41964:905:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"parseInt","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6509,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6497,"name":"ElementaryTypeName","src":"42893:6:19"}],"id":6498,"name":"VariableDeclaration","src":"42893:16:19"}],"id":6499,"name":"ParameterList","src":"42892:18:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedInt","scope":6509,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6500,"name":"ElementaryTypeName","src":"42934:4:19"}],"id":6501,"name":"VariableDeclaration","src":"42934:15:19"}],"id":6502,"name":"ParameterList","src":"42933:17:19"},{"children":[{"attributes":{"functionReturnParameters":6502},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[6509,6626],"referencedDeclaration":6626,"type":"function (string memory,uint256) pure returns (uint256)","value":"parseInt"},"id":6503,"name":"Identifier","src":"42968:8:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6498,"type":"string memory","value":"_a"},"id":6504,"name":"Identifier","src":"42977:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6505,"name":"Literal","src":"42981:1:19"}],"id":6506,"name":"FunctionCall","src":"42968:15:19"}],"id":6507,"name":"Return","src":"42961:22:19"}],"id":6508,"name":"Block","src":"42951:39:19"}],"id":6509,"name":"FunctionDefinition","src":"42875:115:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"parseInt","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6626,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6510,"name":"ElementaryTypeName","src":"43014:6:19"}],"id":6511,"name":"VariableDeclaration","src":"43014:16:19"},{"attributes":{"constant":false,"name":"_b","scope":6626,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6512,"name":"ElementaryTypeName","src":"43032:4:19"}],"id":6513,"name":"VariableDeclaration","src":"43032:7:19"}],"id":6514,"name":"ParameterList","src":"43013:27:19"},{"children":[{"attributes":{"constant":false,"name":"_parsedInt","scope":6626,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6515,"name":"ElementaryTypeName","src":"43064:4:19"}],"id":6516,"name":"VariableDeclaration","src":"43064:15:19"}],"id":6517,"name":"ParameterList","src":"43063:17:19"},{"children":[{"attributes":{"assignments":[6519]},"children":[{"attributes":{"constant":false,"name":"bresult","scope":6625,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6518,"name":"ElementaryTypeName","src":"43091:5:19"}],"id":6519,"name":"VariableDeclaration","src":"43091:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6520,"name":"ElementaryTypeNameExpression","src":"43114:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6511,"type":"string memory","value":"_a"},"id":6521,"name":"Identifier","src":"43120:2:19"}],"id":6522,"name":"FunctionCall","src":"43114:9:19"}],"id":6523,"name":"VariableDeclarationStatement","src":"43091:32:19"},{"attributes":{"assignments":[6525]},"children":[{"attributes":{"constant":false,"name":"mint","scope":6625,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6524,"name":"ElementaryTypeName","src":"43133:4:19"}],"id":6525,"name":"VariableDeclaration","src":"43133:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6526,"name":"Literal","src":"43145:1:19"}],"id":6527,"name":"VariableDeclarationStatement","src":"43133:13:19"},{"attributes":{"assignments":[6529]},"children":[{"attributes":{"constant":false,"name":"decimals","scope":6625,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6528,"name":"ElementaryTypeName","src":"43156:4:19"}],"id":6529,"name":"VariableDeclaration","src":"43156:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6530,"name":"Literal","src":"43172:5:19"}],"id":6531,"name":"VariableDeclarationStatement","src":"43156:21:19"},{"children":[{"attributes":{"assignments":[6533]},"children":[{"attributes":{"constant":false,"name":"i","scope":6611,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6532,"name":"ElementaryTypeName","src":"43192:4:19"}],"id":6533,"name":"VariableDeclaration","src":"43192:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6534,"name":"Literal","src":"43201:1:19"}],"id":6535,"name":"VariableDeclarationStatement","src":"43192:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6536,"name":"Identifier","src":"43204:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6537,"name":"Identifier","src":"43208:7:19"}],"id":6538,"name":"MemberAccess","src":"43208:14:19"}],"id":6539,"name":"BinaryOperation","src":"43204:18:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6540,"name":"Identifier","src":"43224:1:19"}],"id":6541,"name":"UnaryOperation","src":"43224:3:19"}],"id":6542,"name":"ExpressionStatement","src":"43224:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6543,"name":"ElementaryTypeNameExpression","src":"43248:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6544,"name":"ElementaryTypeNameExpression","src":"43253:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6545,"name":"Identifier","src":"43259:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6546,"name":"Identifier","src":"43267:1:19"}],"id":6547,"name":"IndexAccess","src":"43259:10:19"}],"id":6548,"name":"FunctionCall","src":"43253:17:19"}],"id":6549,"name":"FunctionCall","src":"43248:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6550,"name":"Literal","src":"43275:2:19"}],"id":6551,"name":"BinaryOperation","src":"43248:29:19"}],"id":6552,"name":"TupleExpression","src":"43247:31:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6553,"name":"ElementaryTypeNameExpression","src":"43283:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6554,"name":"ElementaryTypeNameExpression","src":"43288:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6555,"name":"Identifier","src":"43294:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6556,"name":"Identifier","src":"43302:1:19"}],"id":6557,"name":"IndexAccess","src":"43294:10:19"}],"id":6558,"name":"FunctionCall","src":"43288:17:19"}],"id":6559,"name":"FunctionCall","src":"43283:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":6560,"name":"Literal","src":"43310:2:19"}],"id":6561,"name":"BinaryOperation","src":"43283:29:19"}],"id":6562,"name":"TupleExpression","src":"43282:31:19"}],"id":6563,"name":"BinaryOperation","src":"43247:66:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6529,"type":"bool","value":"decimals"},"id":6564,"name":"Identifier","src":"43337:8:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6513,"type":"uint256","value":"_b"},"id":6565,"name":"Identifier","src":"43372:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6566,"name":"Literal","src":"43378:1:19"}],"id":6567,"name":"BinaryOperation","src":"43372:7:19"},{"children":[{"id":6568,"name":"Break","src":"43406:5:19"}],"id":6569,"name":"Block","src":"43381:52:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6513,"type":"uint256","value":"_b"},"id":6570,"name":"Identifier","src":"43464:2:19"}],"id":6571,"name":"UnaryOperation","src":"43464:4:19"}],"id":6572,"name":"ExpressionStatement","src":"43464:4:19"}],"id":6573,"name":"Block","src":"43439:51:19"}],"id":6574,"name":"IfStatement","src":"43368:122:19"}],"id":6575,"name":"Block","src":"43347:161:19"}],"id":6576,"name":"IfStatement","src":"43333:175:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"uint256","value":"mint"},"id":6577,"name":"Identifier","src":"43525:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6578,"name":"Literal","src":"43533:2:19"}],"id":6579,"name":"Assignment","src":"43525:10:19"}],"id":6580,"name":"ExpressionStatement","src":"43525:10:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"uint256","value":"mint"},"id":6581,"name":"Identifier","src":"43553:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6582,"name":"ElementaryTypeNameExpression","src":"43561:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6583,"name":"ElementaryTypeNameExpression","src":"43566:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6584,"name":"Identifier","src":"43572:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6585,"name":"Identifier","src":"43580:1:19"}],"id":6586,"name":"IndexAccess","src":"43572:10:19"}],"id":6587,"name":"FunctionCall","src":"43566:17:19"}],"id":6588,"name":"FunctionCall","src":"43561:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6589,"name":"Literal","src":"43587:2:19"}],"id":6590,"name":"BinaryOperation","src":"43561:28:19"}],"id":6591,"name":"Assignment","src":"43553:36:19"}],"id":6592,"name":"ExpressionStatement","src":"43553:36:19"}],"id":6593,"name":"Block","src":"43315:289:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6594,"name":"ElementaryTypeNameExpression","src":"43614:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6595,"name":"ElementaryTypeNameExpression","src":"43619:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6519,"type":"bytes memory","value":"bresult"},"id":6596,"name":"Identifier","src":"43625:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6533,"type":"uint256","value":"i"},"id":6597,"name":"Identifier","src":"43633:1:19"}],"id":6598,"name":"IndexAccess","src":"43625:10:19"}],"id":6599,"name":"FunctionCall","src":"43619:17:19"}],"id":6600,"name":"FunctionCall","src":"43614:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3436","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 46","value":"46"},"id":6601,"name":"Literal","src":"43641:2:19"}],"id":6602,"name":"BinaryOperation","src":"43614:29:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6529,"type":"bool","value":"decimals"},"id":6603,"name":"Identifier","src":"43663:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6604,"name":"Literal","src":"43674:4:19"}],"id":6605,"name":"Assignment","src":"43663:15:19"}],"id":6606,"name":"ExpressionStatement","src":"43663:15:19"}],"id":6607,"name":"Block","src":"43645:48:19"}],"id":6608,"name":"IfStatement","src":"43610:83:19"}],"id":6609,"name":"IfStatement","src":"43243:450:19"}],"id":6610,"name":"Block","src":"43229:474:19"}],"id":6611,"name":"ForStatement","src":"43187:516:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6513,"type":"uint256","value":"_b"},"id":6612,"name":"Identifier","src":"43716:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6613,"name":"Literal","src":"43721:1:19"}],"id":6614,"name":"BinaryOperation","src":"43716:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"uint256","value":"mint"},"id":6615,"name":"Identifier","src":"43738:4:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6616,"name":"Literal","src":"43746:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6513,"type":"uint256","value":"_b"},"id":6617,"name":"Identifier","src":"43752:2:19"}],"id":6618,"name":"BinaryOperation","src":"43746:8:19"}],"id":6619,"name":"Assignment","src":"43738:16:19"}],"id":6620,"name":"ExpressionStatement","src":"43738:16:19"}],"id":6621,"name":"Block","src":"43724:41:19"}],"id":6622,"name":"IfStatement","src":"43712:53:19"},{"attributes":{"functionReturnParameters":6517},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"uint256","value":"mint"},"id":6623,"name":"Identifier","src":"43781:4:19"}],"id":6624,"name":"Return","src":"43774:11:19"}],"id":6625,"name":"Block","src":"43081:711:19"}],"id":6626,"name":"FunctionDefinition","src":"42996:796:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"uint2str","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_i","scope":6701,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6627,"name":"ElementaryTypeName","src":"43816:4:19"}],"id":6628,"name":"VariableDeclaration","src":"43816:7:19"}],"id":6629,"name":"ParameterList","src":"43815:9:19"},{"children":[{"attributes":{"constant":false,"name":"_uintAsString","scope":6701,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6630,"name":"ElementaryTypeName","src":"43848:6:19"}],"id":6631,"name":"VariableDeclaration","src":"43848:27:19"}],"id":6632,"name":"ParameterList","src":"43847:29:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6633,"name":"Identifier","src":"43891:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6634,"name":"Literal","src":"43897:1:19"}],"id":6635,"name":"BinaryOperation","src":"43891:7:19"},{"children":[{"attributes":{"functionReturnParameters":6632},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"0\"","value":"0"},"id":6636,"name":"Literal","src":"43921:3:19"}],"id":6637,"name":"Return","src":"43914:10:19"}],"id":6638,"name":"Block","src":"43900:35:19"}],"id":6639,"name":"IfStatement","src":"43887:48:19"},{"attributes":{"assignments":[6641]},"children":[{"attributes":{"constant":false,"name":"j","scope":6700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6640,"name":"ElementaryTypeName","src":"43944:4:19"}],"id":6641,"name":"VariableDeclaration","src":"43944:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6642,"name":"Identifier","src":"43953:2:19"}],"id":6643,"name":"VariableDeclarationStatement","src":"43944:11:19"},{"attributes":{"assignments":[6645],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"len","scope":6700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6644,"name":"ElementaryTypeName","src":"43965:4:19"}],"id":6645,"name":"VariableDeclaration","src":"43965:8:19"}],"id":6646,"name":"VariableDeclarationStatement","src":"43965:8:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6641,"type":"uint256","value":"j"},"id":6647,"name":"Identifier","src":"43990:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6648,"name":"Literal","src":"43995:1:19"}],"id":6649,"name":"BinaryOperation","src":"43990:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"uint256","value":"len"},"id":6650,"name":"Identifier","src":"44012:3:19"}],"id":6651,"name":"UnaryOperation","src":"44012:5:19"}],"id":6652,"name":"ExpressionStatement","src":"44012:5:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6641,"type":"uint256","value":"j"},"id":6653,"name":"Identifier","src":"44031:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6654,"name":"Literal","src":"44036:2:19"}],"id":6655,"name":"Assignment","src":"44031:7:19"}],"id":6656,"name":"ExpressionStatement","src":"44031:7:19"}],"id":6657,"name":"Block","src":"43998:51:19"}],"id":6658,"name":"WhileStatement","src":"43983:66:19"},{"attributes":{"assignments":[6660]},"children":[{"attributes":{"constant":false,"name":"bstr","scope":6700,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6659,"name":"ElementaryTypeName","src":"44058:5:19"}],"id":6660,"name":"VariableDeclaration","src":"44058:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6661,"name":"ElementaryTypeName","src":"44082:5:19"}],"id":6662,"name":"NewExpression","src":"44078:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"uint256","value":"len"},"id":6663,"name":"Identifier","src":"44088:3:19"}],"id":6664,"name":"FunctionCall","src":"44078:14:19"}],"id":6665,"name":"VariableDeclarationStatement","src":"44058:34:19"},{"attributes":{"assignments":[6667]},"children":[{"attributes":{"constant":false,"name":"k","scope":6700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6666,"name":"ElementaryTypeName","src":"44102:4:19"}],"id":6667,"name":"VariableDeclaration","src":"44102:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"uint256","value":"len"},"id":6668,"name":"Identifier","src":"44111:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6669,"name":"Literal","src":"44117:1:19"}],"id":6670,"name":"BinaryOperation","src":"44111:7:19"}],"id":6671,"name":"VariableDeclarationStatement","src":"44102:16:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6672,"name":"Identifier","src":"44135:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6673,"name":"Literal","src":"44141:1:19"}],"id":6674,"name":"BinaryOperation","src":"44135:7:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6660,"type":"bytes memory","value":"bstr"},"id":6675,"name":"Identifier","src":"44158:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6667,"type":"uint256","value":"k"},"id":6676,"name":"Identifier","src":"44163:1:19"}],"id":6677,"name":"UnaryOperation","src":"44163:3:19"}],"id":6678,"name":"IndexAccess","src":"44158:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"byte"},"id":6679,"name":"ElementaryTypeNameExpression","src":"44170:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6680,"name":"ElementaryTypeNameExpression","src":"44175:5:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":6681,"name":"Literal","src":"44181:2:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6682,"name":"Identifier","src":"44186:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6683,"name":"Literal","src":"44191:2:19"}],"id":6684,"name":"BinaryOperation","src":"44186:7:19"}],"id":6685,"name":"BinaryOperation","src":"44181:12:19"}],"id":6686,"name":"FunctionCall","src":"44175:19:19"}],"id":6687,"name":"FunctionCall","src":"44170:25:19"}],"id":6688,"name":"Assignment","src":"44158:37:19"}],"id":6689,"name":"ExpressionStatement","src":"44158:37:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6628,"type":"uint256","value":"_i"},"id":6690,"name":"Identifier","src":"44209:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6691,"name":"Literal","src":"44215:2:19"}],"id":6692,"name":"Assignment","src":"44209:8:19"}],"id":6693,"name":"ExpressionStatement","src":"44209:8:19"}],"id":6694,"name":"Block","src":"44144:84:19"}],"id":6695,"name":"WhileStatement","src":"44128:100:19"},{"attributes":{"functionReturnParameters":6632},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":6696,"name":"ElementaryTypeNameExpression","src":"44244:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6660,"type":"bytes memory","value":"bstr"},"id":6697,"name":"Identifier","src":"44251:4:19"}],"id":6698,"name":"FunctionCall","src":"44244:12:19"}],"id":6699,"name":"Return","src":"44237:19:19"}],"id":6700,"name":"Block","src":"43877:386:19"}],"id":6701,"name":"FunctionDefinition","src":"43798:465:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stra2cbor","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_arr","scope":6759,"stateVariable":false,"storageLocation":"memory","type":"string[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"string[]"},"children":[{"attributes":{"name":"string","type":"string"},"id":6702,"name":"ElementaryTypeName","src":"44288:6:19"}],"id":6703,"name":"ArrayTypeName","src":"44288:8:19"}],"id":6704,"name":"VariableDeclaration","src":"44288:20:19"}],"id":6705,"name":"ParameterList","src":"44287:22:19"},{"children":[{"attributes":{"constant":false,"name":"_cborEncoding","scope":6759,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6706,"name":"ElementaryTypeName","src":"44333:5:19"}],"id":6707,"name":"VariableDeclaration","src":"44333:26:19"}],"id":6708,"name":"ParameterList","src":"44332:28:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":7852,"type":"function () pure","value":"safeMemoryCleaner"},"id":6709,"name":"Identifier","src":"44371:17:19"}],"id":6710,"name":"FunctionCall","src":"44371:19:19"}],"id":6711,"name":"ExpressionStatement","src":"44371:19:19"},{"attributes":{"assignments":[6715],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"buf","scope":6758,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":6714,"name":"UserDefinedTypeName","src":"44400:13:19"}],"id":6715,"name":"VariableDeclaration","src":"44400:24:19"}],"id":6716,"name":"VariableDeclarationStatement","src":"44400:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"init","referencedDeclaration":1738,"type":"function (struct Buffer.buffer memory,uint256) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"type(library Buffer)","value":"Buffer"},"id":6717,"name":"Identifier","src":"44434:6:19"}],"id":6719,"name":"MemberAccess","src":"44434:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6720,"name":"Identifier","src":"44446:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31303234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1024","value":"1024"},"id":6721,"name":"Literal","src":"44451:4:19"}],"id":6722,"name":"FunctionCall","src":"44434:22:19"}],"id":6723,"name":"ExpressionStatement","src":"44434:22:19"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"startArray","referencedDeclaration":2206,"type":"function (struct Buffer.buffer memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6724,"name":"Identifier","src":"44466:3:19"}],"id":6726,"name":"MemberAccess","src":"44466:14:19"}],"id":6727,"name":"FunctionCall","src":"44466:16:19"}],"id":6728,"name":"ExpressionStatement","src":"44466:16:19"},{"children":[{"attributes":{"assignments":[6730]},"children":[{"attributes":{"constant":false,"name":"i","scope":6749,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6729,"name":"ElementaryTypeName","src":"44497:4:19"}],"id":6730,"name":"VariableDeclaration","src":"44497:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6731,"name":"Literal","src":"44506:1:19"}],"id":6732,"name":"VariableDeclarationStatement","src":"44497:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"uint256","value":"i"},"id":6733,"name":"Identifier","src":"44509:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6704,"type":"string memory[] memory","value":"_arr"},"id":6734,"name":"Identifier","src":"44513:4:19"}],"id":6735,"name":"MemberAccess","src":"44513:11:19"}],"id":6736,"name":"BinaryOperation","src":"44509:15:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"uint256","value":"i"},"id":6737,"name":"Identifier","src":"44526:1:19"}],"id":6738,"name":"UnaryOperation","src":"44526:3:19"}],"id":6739,"name":"ExpressionStatement","src":"44526:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory","typeString":"string memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"encodeString","referencedDeclaration":2195,"type":"function (struct Buffer.buffer memory,string memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6740,"name":"Identifier","src":"44545:3:19"}],"id":6742,"name":"MemberAccess","src":"44545:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6704,"type":"string memory[] memory","value":"_arr"},"id":6743,"name":"Identifier","src":"44562:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"uint256","value":"i"},"id":6744,"name":"Identifier","src":"44567:1:19"}],"id":6745,"name":"IndexAccess","src":"44562:7:19"}],"id":6746,"name":"FunctionCall","src":"44545:25:19"}],"id":6747,"name":"ExpressionStatement","src":"44545:25:19"}],"id":6748,"name":"Block","src":"44531:50:19"}],"id":6749,"name":"ForStatement","src":"44492:89:19"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"endSequence","referencedDeclaration":2228,"type":"function (struct Buffer.buffer memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6750,"name":"Identifier","src":"44590:3:19"}],"id":6752,"name":"MemberAccess","src":"44590:15:19"}],"id":6753,"name":"FunctionCall","src":"44590:17:19"}],"id":6754,"name":"ExpressionStatement","src":"44590:17:19"},{"attributes":{"functionReturnParameters":6708},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6715,"type":"struct Buffer.buffer memory","value":"buf"},"id":6755,"name":"Identifier","src":"44624:3:19"}],"id":6756,"name":"MemberAccess","src":"44624:7:19"}],"id":6757,"name":"Return","src":"44617:14:19"}],"id":6758,"name":"Block","src":"44361:277:19"}],"id":6759,"name":"FunctionDefinition","src":"44269:369:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ba2cbor","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_arr","scope":6817,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6760,"name":"ElementaryTypeName","src":"44661:5:19"}],"id":6761,"name":"ArrayTypeName","src":"44661:7:19"}],"id":6762,"name":"VariableDeclaration","src":"44661:19:19"}],"id":6763,"name":"ParameterList","src":"44660:21:19"},{"children":[{"attributes":{"constant":false,"name":"_cborEncoding","scope":6817,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6764,"name":"ElementaryTypeName","src":"44705:5:19"}],"id":6765,"name":"VariableDeclaration","src":"44705:26:19"}],"id":6766,"name":"ParameterList","src":"44704:28:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":7852,"type":"function () pure","value":"safeMemoryCleaner"},"id":6767,"name":"Identifier","src":"44743:17:19"}],"id":6768,"name":"FunctionCall","src":"44743:19:19"}],"id":6769,"name":"ExpressionStatement","src":"44743:19:19"},{"attributes":{"assignments":[6773],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"buf","scope":6816,"stateVariable":false,"storageLocation":"memory","type":"struct Buffer.buffer","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Buffer.buffer","referencedDeclaration":1703,"type":"struct Buffer.buffer"},"id":6772,"name":"UserDefinedTypeName","src":"44772:13:19"}],"id":6773,"name":"VariableDeclaration","src":"44772:24:19"}],"id":6774,"name":"VariableDeclarationStatement","src":"44772:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_buffer_$1703_memory_ptr","typeString":"struct Buffer.buffer memory"},{"typeIdentifier":"t_rational_1024_by_1","typeString":"int_const 1024"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"init","referencedDeclaration":1738,"type":"function (struct Buffer.buffer memory,uint256) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1929,"type":"type(library Buffer)","value":"Buffer"},"id":6775,"name":"Identifier","src":"44806:6:19"}],"id":6777,"name":"MemberAccess","src":"44806:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6778,"name":"Identifier","src":"44818:3:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31303234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1024","value":"1024"},"id":6779,"name":"Literal","src":"44823:4:19"}],"id":6780,"name":"FunctionCall","src":"44806:22:19"}],"id":6781,"name":"ExpressionStatement","src":"44806:22:19"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"startArray","referencedDeclaration":2206,"type":"function (struct Buffer.buffer memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6782,"name":"Identifier","src":"44838:3:19"}],"id":6784,"name":"MemberAccess","src":"44838:14:19"}],"id":6785,"name":"FunctionCall","src":"44838:16:19"}],"id":6786,"name":"ExpressionStatement","src":"44838:16:19"},{"children":[{"attributes":{"assignments":[6788]},"children":[{"attributes":{"constant":false,"name":"i","scope":6807,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6787,"name":"ElementaryTypeName","src":"44869:4:19"}],"id":6788,"name":"VariableDeclaration","src":"44869:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6789,"name":"Literal","src":"44878:1:19"}],"id":6790,"name":"VariableDeclarationStatement","src":"44869:10:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6788,"type":"uint256","value":"i"},"id":6791,"name":"Identifier","src":"44881:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"bytes memory[] memory","value":"_arr"},"id":6792,"name":"Identifier","src":"44885:4:19"}],"id":6793,"name":"MemberAccess","src":"44885:11:19"}],"id":6794,"name":"BinaryOperation","src":"44881:15:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6788,"type":"uint256","value":"i"},"id":6795,"name":"Identifier","src":"44898:1:19"}],"id":6796,"name":"UnaryOperation","src":"44898:3:19"}],"id":6797,"name":"ExpressionStatement","src":"44898:3:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"encodeBytes","referencedDeclaration":2170,"type":"function (struct Buffer.buffer memory,bytes memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6798,"name":"Identifier","src":"44917:3:19"}],"id":6800,"name":"MemberAccess","src":"44917:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"bytes memory[] memory","value":"_arr"},"id":6801,"name":"Identifier","src":"44933:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6788,"type":"uint256","value":"i"},"id":6802,"name":"Identifier","src":"44938:1:19"}],"id":6803,"name":"IndexAccess","src":"44933:7:19"}],"id":6804,"name":"FunctionCall","src":"44917:24:19"}],"id":6805,"name":"ExpressionStatement","src":"44917:24:19"}],"id":6806,"name":"Block","src":"44903:49:19"}],"id":6807,"name":"ForStatement","src":"44864:88:19"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"endSequence","referencedDeclaration":2228,"type":"function (struct Buffer.buffer memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6808,"name":"Identifier","src":"44961:3:19"}],"id":6810,"name":"MemberAccess","src":"44961:15:19"}],"id":6811,"name":"FunctionCall","src":"44961:17:19"}],"id":6812,"name":"ExpressionStatement","src":"44961:17:19"},{"attributes":{"functionReturnParameters":6766},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"buf","referencedDeclaration":1700,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6773,"type":"struct Buffer.buffer memory","value":"buf"},"id":6813,"name":"Identifier","src":"44995:3:19"}],"id":6814,"name":"MemberAccess","src":"44995:7:19"}],"id":6815,"name":"Return","src":"44988:14:19"}],"id":6816,"name":"Block","src":"44733:276:19"}],"id":6817,"name":"FunctionDefinition","src":"44644:365:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_newRandomDSQuery","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_delay","scope":6955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6818,"name":"ElementaryTypeName","src":"45050:4:19"}],"id":6819,"name":"VariableDeclaration","src":"45050:11:19"},{"attributes":{"constant":false,"name":"_nbytes","scope":6955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6820,"name":"ElementaryTypeName","src":"45063:4:19"}],"id":6821,"name":"VariableDeclaration","src":"45063:12:19"},{"attributes":{"constant":false,"name":"_customGasLimit","scope":6955,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6822,"name":"ElementaryTypeName","src":"45077:4:19"}],"id":6823,"name":"VariableDeclaration","src":"45077:20:19"}],"id":6824,"name":"ParameterList","src":"45049:49:19"},{"children":[{"attributes":{"constant":false,"name":"_queryId","scope":6955,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6825,"name":"ElementaryTypeName","src":"45117:7:19"}],"id":6826,"name":"VariableDeclaration","src":"45117:16:19"}],"id":6827,"name":"ParameterList","src":"45116:18:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":6828,"name":"Identifier","src":"45145:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6821,"type":"uint256","value":"_nbytes"},"id":6829,"name":"Identifier","src":"45154:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6830,"name":"Literal","src":"45164:1:19"}],"id":6831,"name":"BinaryOperation","src":"45154:11:19"}],"id":6832,"name":"TupleExpression","src":"45153:13:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6821,"type":"uint256","value":"_nbytes"},"id":6833,"name":"Identifier","src":"45171:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6834,"name":"Literal","src":"45182:2:19"}],"id":6835,"name":"BinaryOperation","src":"45171:13:19"}],"id":6836,"name":"TupleExpression","src":"45170:15:19"}],"id":6837,"name":"BinaryOperation","src":"45153:32:19"}],"id":6838,"name":"FunctionCall","src":"45145:41:19"}],"id":6839,"name":"ExpressionStatement","src":"45145:41:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6819,"type":"uint256","value":"_delay"},"id":6840,"name":"Identifier","src":"45196:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":6841,"name":"Literal","src":"45206:2:19"}],"id":6842,"name":"Assignment","src":"45196:12:19"}],"id":6843,"name":"ExpressionStatement","src":"45196:12:19"},{"attributes":{"assignments":[6845]},"children":[{"attributes":{"constant":false,"name":"nbytes","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6844,"name":"ElementaryTypeName","src":"45264:5:19"}],"id":6845,"name":"VariableDeclaration","src":"45264:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6846,"name":"ElementaryTypeName","src":"45290:5:19"}],"id":6847,"name":"NewExpression","src":"45286:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6848,"name":"Literal","src":"45296:1:19"}],"id":6849,"name":"FunctionCall","src":"45286:12:19"}],"id":6850,"name":"VariableDeclarationStatement","src":"45264:34:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6845,"type":"bytes memory","value":"nbytes"},"id":6851,"name":"Identifier","src":"45308:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6852,"name":"Literal","src":"45315:1:19"}],"id":6853,"name":"IndexAccess","src":"45308:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"byte"},"id":6854,"name":"ElementaryTypeNameExpression","src":"45320:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6855,"name":"ElementaryTypeNameExpression","src":"45325:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6821,"type":"uint256","value":"_nbytes"},"id":6856,"name":"Identifier","src":"45331:7:19"}],"id":6857,"name":"FunctionCall","src":"45325:14:19"}],"id":6858,"name":"FunctionCall","src":"45320:20:19"}],"id":6859,"name":"Assignment","src":"45308:32:19"}],"id":6860,"name":"ExpressionStatement","src":"45308:32:19"},{"attributes":{"assignments":[6862]},"children":[{"attributes":{"constant":false,"name":"unonce","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6861,"name":"ElementaryTypeName","src":"45350:5:19"}],"id":6862,"name":"VariableDeclaration","src":"45350:19:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6863,"name":"ElementaryTypeName","src":"45376:5:19"}],"id":6864,"name":"NewExpression","src":"45372:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6865,"name":"Literal","src":"45382:2:19"}],"id":6866,"name":"FunctionCall","src":"45372:13:19"}],"id":6867,"name":"VariableDeclarationStatement","src":"45350:35:19"},{"attributes":{"assignments":[6869]},"children":[{"attributes":{"constant":false,"name":"sessionKeyHash","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6868,"name":"ElementaryTypeName","src":"45395:5:19"}],"id":6869,"name":"VariableDeclaration","src":"45395:27:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6870,"name":"ElementaryTypeName","src":"45429:5:19"}],"id":6871,"name":"NewExpression","src":"45425:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6872,"name":"Literal","src":"45435:2:19"}],"id":6873,"name":"FunctionCall","src":"45425:13:19"}],"id":6874,"name":"VariableDeclarationStatement","src":"45395:43:19"},{"attributes":{"assignments":[6876]},"children":[{"attributes":{"constant":false,"name":"sessionKeyHash_bytes32","scope":6954,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6875,"name":"ElementaryTypeName","src":"45448:7:19"}],"id":6876,"name":"VariableDeclaration","src":"45448:30:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":5710,"type":"function () returns (bytes32)","value":"oraclize_randomDS_getSessionPubKeyHash"},"id":6877,"name":"Identifier","src":"45481:38:19"}],"id":6878,"name":"FunctionCall","src":"45481:40:19"}],"id":6879,"name":"VariableDeclarationStatement","src":"45448:73:19"},{"attributes":{"externalReferences":[{"sessionKeyHash_bytes32":{"declaration":6876,"isOffset":false,"isSlot":false,"src":"46016:22:19","valueSize":1}},{"unonce":{"declaration":6862,"isOffset":false,"isSlot":false,"src":"45561:6:19","valueSize":1}},{"sessionKeyHash":{"declaration":6869,"isOffset":false,"isSlot":false,"src":"45948:14:19","valueSize":1}},{"sessionKeyHash":{"declaration":6869,"isOffset":false,"isSlot":false,"src":"45993:14:19","valueSize":1}},{"unonce":{"declaration":6862,"isOffset":false,"isSlot":false,"src":"45856:6:19","valueSize":1}}],"operations":"{\n mstore(unonce, 0x20)\n mstore(add(unonce, 0x20), xor(blockhash(sub(number(), 1)), xor(coinbase(), timestamp())))\n mstore(sessionKeyHash, 0x20)\n mstore(add(sessionKeyHash, 0x20), sessionKeyHash_bytes32)\n}"},"children":[],"id":6880,"name":"InlineAssembly","src":"45531:518:19"},{"attributes":{"assignments":[6882]},"children":[{"attributes":{"constant":false,"name":"delay","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6881,"name":"ElementaryTypeName","src":"46058:5:19"}],"id":6882,"name":"VariableDeclaration","src":"46058:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6883,"name":"ElementaryTypeName","src":"46083:5:19"}],"id":6884,"name":"NewExpression","src":"46079:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6885,"name":"Literal","src":"46089:2:19"}],"id":6886,"name":"FunctionCall","src":"46079:13:19"}],"id":6887,"name":"VariableDeclarationStatement","src":"46058:34:19"},{"attributes":{"externalReferences":[{"_delay":{"declaration":6819,"isOffset":false,"isSlot":false,"src":"46150:6:19","valueSize":1}},{"delay":{"declaration":6882,"isOffset":false,"isSlot":false,"src":"46136:5:19","valueSize":1}}],"operations":"{\n mstore(add(delay, 0x20), _delay)\n}"},"children":[],"id":6888,"name":"InlineAssembly","src":"46102:65:19"},{"attributes":{"assignments":[6890]},"children":[{"attributes":{"constant":false,"name":"delay_bytes8","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6889,"name":"ElementaryTypeName","src":"46176:5:19"}],"id":6890,"name":"VariableDeclaration","src":"46176:25:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6891,"name":"ElementaryTypeName","src":"46208:5:19"}],"id":6892,"name":"NewExpression","src":"46204:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6893,"name":"Literal","src":"46214:1:19"}],"id":6894,"name":"FunctionCall","src":"46204:12:19"}],"id":6895,"name":"VariableDeclarationStatement","src":"46176:40:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_24_by_1","typeString":"int_const 24"},{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":6896,"name":"Identifier","src":"46226:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"bytes memory","value":"delay"},"id":6897,"name":"Identifier","src":"46236:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 24","value":"24"},"id":6898,"name":"Literal","src":"46243:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6899,"name":"Literal","src":"46247:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6890,"type":"bytes memory","value":"delay_bytes8"},"id":6900,"name":"Identifier","src":"46250:12:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6901,"name":"Literal","src":"46264:1:19"}],"id":6902,"name":"FunctionCall","src":"46226:40:19"}],"id":6903,"name":"ExpressionStatement","src":"46226:40:19"},{"attributes":{"assignments":[6908]},"children":[{"attributes":{"constant":false,"name":"args","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes[4]","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"bytes[4]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6906,"name":"ElementaryTypeName","src":"46276:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6905,"name":"Literal","src":"46282:1:19"}],"id":6907,"name":"ArrayTypeName","src":"46276:8:19"}],"id":6908,"name":"VariableDeclaration","src":"46276:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":true,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes memory[4] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6862,"type":"bytes memory","value":"unonce"},"id":6909,"name":"Identifier","src":"46300:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6845,"type":"bytes memory","value":"nbytes"},"id":6910,"name":"Identifier","src":"46308:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6869,"type":"bytes memory","value":"sessionKeyHash"},"id":6911,"name":"Identifier","src":"46316:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"bytes memory","value":"delay"},"id":6912,"name":"Identifier","src":"46332:5:19"}],"id":6913,"name":"TupleExpression","src":"46299:39:19"}],"id":6914,"name":"VariableDeclarationStatement","src":"46276:62:19"},{"attributes":{"assignments":[6916]},"children":[{"attributes":{"constant":false,"name":"queryId","scope":6954,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6915,"name":"ElementaryTypeName","src":"46348:7:19"}],"id":6916,"name":"VariableDeclaration","src":"46348:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a4896a3f93bf4bf58378e579f3cf193bb4af1022af7d2089f37d8bae7157b85f","typeString":"literal_string \"random\""},{"typeIdentifier":"t_array$_t_bytes_memory_$4_memory_ptr","typeString":"bytes memory[4] memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":5363,"type":"function (string memory,bytes memory[4] memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":6917,"name":"Identifier","src":"46366:14:19"},{"attributes":{"argumentTypes":null,"hexvalue":"72616e646f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"random\"","value":"random"},"id":6918,"name":"Literal","src":"46381:8:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6908,"type":"bytes memory[4] memory","value":"args"},"id":6919,"name":"Identifier","src":"46391:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6823,"type":"uint256","value":"_customGasLimit"},"id":6920,"name":"Identifier","src":"46397:15:19"}],"id":6921,"name":"FunctionCall","src":"46366:47:19"}],"id":6922,"name":"VariableDeclarationStatement","src":"46348:65:19"},{"attributes":{"assignments":[6924]},"children":[{"attributes":{"constant":false,"name":"delay_bytes8_left","scope":6954,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6923,"name":"ElementaryTypeName","src":"46423:5:19"}],"id":6924,"name":"VariableDeclaration","src":"46423:30:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_8_by_1","typeString":"int_const 8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6925,"name":"ElementaryTypeName","src":"46460:5:19"}],"id":6926,"name":"NewExpression","src":"46456:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6927,"name":"Literal","src":"46466:1:19"}],"id":6928,"name":"FunctionCall","src":"46456:12:19"}],"id":6929,"name":"VariableDeclarationStatement","src":"46423:45:19"},{"attributes":{"externalReferences":[{"delay_bytes8":{"declaration":6890,"isOffset":false,"isSlot":false,"src":"46520:12:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"46565:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"46690:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"47053:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"46813:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"46934:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"47170:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"47285:17:19","valueSize":1}},{"delay_bytes8_left":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"47398:17:19","valueSize":1}}],"operations":"{\n let x := mload(add(delay_bytes8, 0x20))\n mstore8(add(delay_bytes8_left, 0x27), div(x, 0x100000000000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x26), div(x, 0x1000000000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x25), div(x, 0x10000000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x24), div(x, 0x100000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x23), div(x, 0x1000000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x22), div(x, 0x10000000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x21), div(x, 0x100000000000000000000000000000000000000000000000000))\n mstore8(add(delay_bytes8_left, 0x20), div(x, 0x1000000000000000000000000000000000000000000000000))\n}"},"children":[],"id":6930,"name":"InlineAssembly","src":"46478:1016:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"function (bytes32,bytes32)","value":"oraclize_randomDS_setCommitment"},"id":6931,"name":"Identifier","src":"47503:31:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"bytes32","value":"queryId"},"id":6932,"name":"Identifier","src":"47535:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6933,"name":"Identifier","src":"47544:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":6934,"name":"Identifier","src":"47554:3:19"}],"id":6935,"name":"MemberAccess","src":"47554:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"bytes memory","value":"delay_bytes8_left"},"id":6936,"name":"Identifier","src":"47571:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6908,"type":"bytes memory[4] memory","value":"args"},"id":6937,"name":"Identifier","src":"47590:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6938,"name":"Literal","src":"47595:1:19"}],"id":6939,"name":"IndexAccess","src":"47590:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":6940,"name":"Identifier","src":"47599:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6908,"type":"bytes memory[4] memory","value":"args"},"id":6941,"name":"Identifier","src":"47606:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6942,"name":"Literal","src":"47611:1:19"}],"id":6943,"name":"IndexAccess","src":"47606:7:19"}],"id":6944,"name":"FunctionCall","src":"47599:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6908,"type":"bytes memory[4] memory","value":"args"},"id":6945,"name":"Identifier","src":"47616:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6946,"name":"Literal","src":"47621:1:19"}],"id":6947,"name":"IndexAccess","src":"47616:7:19"}],"id":6948,"name":"FunctionCall","src":"47554:70:19"}],"id":6949,"name":"FunctionCall","src":"47544:81:19"}],"id":6950,"name":"FunctionCall","src":"47503:123:19"}],"id":6951,"name":"ExpressionStatement","src":"47503:123:19"},{"attributes":{"functionReturnParameters":6827},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"bytes32","value":"queryId"},"id":6952,"name":"Identifier","src":"47643:7:19"}],"id":6953,"name":"Return","src":"47636:14:19"}],"id":6954,"name":"Block","src":"45135:2522:19"}],"id":6955,"name":"FunctionDefinition","src":"45015:2642:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_randomDS_setCommitment","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_queryId","scope":6969,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6956,"name":"ElementaryTypeName","src":"47704:7:19"}],"id":6957,"name":"VariableDeclaration","src":"47704:16:19"},{"attributes":{"constant":false,"name":"_commitment","scope":6969,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6958,"name":"ElementaryTypeName","src":"47722:7:19"}],"id":6959,"name":"VariableDeclaration","src":"47722:19:19"}],"id":6960,"name":"ParameterList","src":"47703:39:19"},{"attributes":{"parameters":[null]},"children":[],"id":6961,"name":"ParameterList","src":"47752:0:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2300,"type":"mapping(bytes32 => bytes32)","value":"oraclize_randomDS_args"},"id":6962,"name":"Identifier","src":"47762:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6957,"type":"bytes32","value":"_queryId"},"id":6963,"name":"Identifier","src":"47785:8:19"}],"id":6964,"name":"IndexAccess","src":"47762:32:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6959,"type":"bytes32","value":"_commitment"},"id":6965,"name":"Identifier","src":"47797:11:19"}],"id":6966,"name":"Assignment","src":"47762:46:19"}],"id":6967,"name":"ExpressionStatement","src":"47762:46:19"}],"id":6968,"name":"Block","src":"47752:63:19"}],"id":6969,"name":"FunctionDefinition","src":"47663:152:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"verifySig","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tosignh","scope":7113,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6970,"name":"ElementaryTypeName","src":"47840:7:19"}],"id":6971,"name":"VariableDeclaration","src":"47840:16:19"},{"attributes":{"constant":false,"name":"_dersig","scope":7113,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6972,"name":"ElementaryTypeName","src":"47858:5:19"}],"id":6973,"name":"VariableDeclaration","src":"47858:20:19"},{"attributes":{"constant":false,"name":"_pubkey","scope":7113,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6974,"name":"ElementaryTypeName","src":"47880:5:19"}],"id":6975,"name":"VariableDeclaration","src":"47880:20:19"}],"id":6976,"name":"ParameterList","src":"47839:62:19"},{"children":[{"attributes":{"constant":false,"name":"_sigVerified","scope":7113,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6977,"name":"ElementaryTypeName","src":"47920:4:19"}],"id":6978,"name":"VariableDeclaration","src":"47920:17:19"}],"id":6979,"name":"ParameterList","src":"47919:19:19"},{"children":[{"attributes":{"assignments":[6981],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"sigok","scope":7112,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6980,"name":"ElementaryTypeName","src":"47949:4:19"}],"id":6981,"name":"VariableDeclaration","src":"47949:10:19"}],"id":6982,"name":"VariableDeclarationStatement","src":"47949:10:19"},{"attributes":{"assignments":[6984],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"signer","scope":7112,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6983,"name":"ElementaryTypeName","src":"47969:7:19"}],"id":6984,"name":"VariableDeclaration","src":"47969:14:19"}],"id":6985,"name":"VariableDeclarationStatement","src":"47969:14:19"},{"attributes":{"assignments":[6987],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"sigr","scope":7112,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6986,"name":"ElementaryTypeName","src":"47993:7:19"}],"id":6987,"name":"VariableDeclaration","src":"47993:12:19"}],"id":6988,"name":"VariableDeclarationStatement","src":"47993:12:19"},{"attributes":{"assignments":[6990],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"sigs","scope":7112,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6989,"name":"ElementaryTypeName","src":"48015:7:19"}],"id":6990,"name":"VariableDeclaration","src":"48015:12:19"}],"id":6991,"name":"VariableDeclarationStatement","src":"48015:12:19"},{"attributes":{"assignments":[6993]},"children":[{"attributes":{"constant":false,"name":"sigr_","scope":7112,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6992,"name":"ElementaryTypeName","src":"48037:5:19"}],"id":6993,"name":"VariableDeclaration","src":"48037:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6994,"name":"ElementaryTypeName","src":"48062:5:19"}],"id":6995,"name":"NewExpression","src":"48058:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6996,"name":"Literal","src":"48068:2:19"}],"id":6997,"name":"FunctionCall","src":"48058:13:19"}],"id":6998,"name":"VariableDeclarationStatement","src":"48037:34:19"},{"attributes":{"assignments":[7000]},"children":[{"attributes":{"constant":false,"name":"offset","scope":7112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6999,"name":"ElementaryTypeName","src":"48081:4:19"}],"id":7000,"name":"VariableDeclaration","src":"48081:11:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7001,"name":"Literal","src":"48095:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7002,"name":"ElementaryTypeNameExpression","src":"48100:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7003,"name":"ElementaryTypeNameExpression","src":"48105:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6973,"type":"bytes memory","value":"_dersig"},"id":7004,"name":"Identifier","src":"48111:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7005,"name":"Literal","src":"48119:1:19"}],"id":7006,"name":"IndexAccess","src":"48111:10:19"}],"id":7007,"name":"FunctionCall","src":"48105:17:19"}],"id":7008,"name":"FunctionCall","src":"48100:23:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":7009,"name":"Literal","src":"48126:4:19"}],"id":7010,"name":"BinaryOperation","src":"48100:30:19"}],"id":7011,"name":"TupleExpression","src":"48099:32:19"}],"id":7012,"name":"BinaryOperation","src":"48095:36:19"}],"id":7013,"name":"VariableDeclarationStatement","src":"48081:50:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6993,"type":"bytes memory","value":"sigr_"},"id":7014,"name":"Identifier","src":"48141:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7015,"name":"Identifier","src":"48149:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6973,"type":"bytes memory","value":"_dersig"},"id":7016,"name":"Identifier","src":"48159:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7000,"type":"uint256","value":"offset"},"id":7017,"name":"Identifier","src":"48168:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7018,"name":"Literal","src":"48176:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6993,"type":"bytes memory","value":"sigr_"},"id":7019,"name":"Identifier","src":"48180:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7020,"name":"Literal","src":"48187:1:19"}],"id":7021,"name":"FunctionCall","src":"48149:40:19"}],"id":7022,"name":"Assignment","src":"48141:48:19"}],"id":7023,"name":"ExpressionStatement","src":"48141:48:19"},{"attributes":{"assignments":[7025]},"children":[{"attributes":{"constant":false,"name":"sigs_","scope":7112,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7024,"name":"ElementaryTypeName","src":"48199:5:19"}],"id":7025,"name":"VariableDeclaration","src":"48199:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7026,"name":"ElementaryTypeName","src":"48224:5:19"}],"id":7027,"name":"NewExpression","src":"48220:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7028,"name":"Literal","src":"48230:2:19"}],"id":7029,"name":"FunctionCall","src":"48220:13:19"}],"id":7030,"name":"VariableDeclarationStatement","src":"48199:34:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7000,"type":"uint256","value":"offset"},"id":7031,"name":"Identifier","src":"48243:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_34_by_1","typeString":"int_const 34"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 34"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7032,"name":"Literal","src":"48253:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7033,"name":"Literal","src":"48258:1:19"}],"id":7034,"name":"BinaryOperation","src":"48253:6:19"}],"id":7035,"name":"Assignment","src":"48243:16:19"}],"id":7036,"name":"ExpressionStatement","src":"48243:16:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7025,"type":"bytes memory","value":"sigs_"},"id":7037,"name":"Identifier","src":"48269:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7038,"name":"Identifier","src":"48277:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6973,"type":"bytes memory","value":"_dersig"},"id":7039,"name":"Identifier","src":"48287:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7000,"type":"uint256","value":"offset"},"id":7040,"name":"Identifier","src":"48296:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7041,"name":"ElementaryTypeNameExpression","src":"48306:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7042,"name":"ElementaryTypeNameExpression","src":"48311:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6973,"type":"bytes memory","value":"_dersig"},"id":7043,"name":"Identifier","src":"48317:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7000,"type":"uint256","value":"offset"},"id":7044,"name":"Identifier","src":"48325:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7045,"name":"Literal","src":"48334:1:19"}],"id":7046,"name":"BinaryOperation","src":"48325:10:19"}],"id":7047,"name":"IndexAccess","src":"48317:19:19"}],"id":7048,"name":"FunctionCall","src":"48311:26:19"}],"id":7049,"name":"FunctionCall","src":"48306:32:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":7050,"name":"Literal","src":"48341:4:19"}],"id":7051,"name":"BinaryOperation","src":"48306:39:19"}],"id":7052,"name":"TupleExpression","src":"48305:41:19"}],"id":7053,"name":"BinaryOperation","src":"48296:50:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7054,"name":"Literal","src":"48348:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7025,"type":"bytes memory","value":"sigs_"},"id":7055,"name":"Identifier","src":"48352:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7056,"name":"Literal","src":"48359:1:19"}],"id":7057,"name":"FunctionCall","src":"48277:84:19"}],"id":7058,"name":"Assignment","src":"48269:92:19"}],"id":7059,"name":"ExpressionStatement","src":"48269:92:19"},{"attributes":{"externalReferences":[{"sigr":{"declaration":6987,"isOffset":false,"isSlot":false,"src":"48394:4:19","valueSize":1}},{"sigr_":{"declaration":6993,"isOffset":false,"isSlot":false,"src":"48412:5:19","valueSize":1}},{"sigs":{"declaration":6990,"isOffset":false,"isSlot":false,"src":"48436:4:19","valueSize":1}},{"sigs_":{"declaration":7025,"isOffset":false,"isSlot":false,"src":"48454:5:19","valueSize":1}}],"operations":"{\n sigr := mload(add(sigr_, 32))\n sigs := mload(add(sigs_, 32))\n}"},"children":[],"id":7060,"name":"InlineAssembly","src":"48371:104:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6981,"type":"bool","value":"sigok"},"id":7061,"name":"Identifier","src":"48485:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6984,"type":"address","value":"signer"},"id":7062,"name":"Identifier","src":"48492:6:19"}],"id":7063,"name":"TupleExpression","src":"48484:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,address)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_27_by_1","typeString":"int_const 27"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7782,"type":"function (bytes32,uint8,bytes32,bytes32) returns (bool,address)","value":"safer_ecrecover"},"id":7064,"name":"Identifier","src":"48502:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes32","value":"_tosignh"},"id":7065,"name":"Identifier","src":"48518:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":7066,"name":"Literal","src":"48528:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6987,"type":"bytes32","value":"sigr"},"id":7067,"name":"Identifier","src":"48532:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6990,"type":"bytes32","value":"sigs"},"id":7068,"name":"Identifier","src":"48538:4:19"}],"id":7069,"name":"FunctionCall","src":"48502:41:19"}],"id":7070,"name":"Assignment","src":"48484:59:19"}],"id":7071,"name":"ExpressionStatement","src":"48484:59:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7072,"name":"ElementaryTypeNameExpression","src":"48557:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":7073,"name":"ElementaryTypeNameExpression","src":"48565:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7074,"name":"ElementaryTypeNameExpression","src":"48573:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7075,"name":"Identifier","src":"48581:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6975,"type":"bytes memory","value":"_pubkey"},"id":7076,"name":"Identifier","src":"48591:7:19"}],"id":7077,"name":"FunctionCall","src":"48581:18:19"}],"id":7078,"name":"FunctionCall","src":"48573:27:19"}],"id":7079,"name":"FunctionCall","src":"48565:36:19"}],"id":7080,"name":"FunctionCall","src":"48557:45:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6984,"type":"address","value":"signer"},"id":7081,"name":"Identifier","src":"48606:6:19"}],"id":7082,"name":"BinaryOperation","src":"48557:55:19"},{"children":[{"attributes":{"functionReturnParameters":6979},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7083,"name":"Literal","src":"48635:4:19"}],"id":7084,"name":"Return","src":"48628:11:19"}],"id":7085,"name":"Block","src":"48614:36:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6981,"type":"bool","value":"sigok"},"id":7086,"name":"Identifier","src":"48671:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6984,"type":"address","value":"signer"},"id":7087,"name":"Identifier","src":"48678:6:19"}],"id":7088,"name":"TupleExpression","src":"48670:15:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,address)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_rational_28_by_1","typeString":"int_const 28"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7782,"type":"function (bytes32,uint8,bytes32,bytes32) returns (bool,address)","value":"safer_ecrecover"},"id":7089,"name":"Identifier","src":"48688:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes32","value":"_tosignh"},"id":7090,"name":"Identifier","src":"48704:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":7091,"name":"Literal","src":"48714:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6987,"type":"bytes32","value":"sigr"},"id":7092,"name":"Identifier","src":"48718:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6990,"type":"bytes32","value":"sigs"},"id":7093,"name":"Identifier","src":"48724:4:19"}],"id":7094,"name":"FunctionCall","src":"48688:41:19"}],"id":7095,"name":"Assignment","src":"48670:59:19"}],"id":7096,"name":"ExpressionStatement","src":"48670:59:19"},{"attributes":{"functionReturnParameters":6979},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7097,"name":"ElementaryTypeNameExpression","src":"48751:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":7098,"name":"ElementaryTypeNameExpression","src":"48759:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7099,"name":"ElementaryTypeNameExpression","src":"48767:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7100,"name":"Identifier","src":"48775:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6975,"type":"bytes memory","value":"_pubkey"},"id":7101,"name":"Identifier","src":"48785:7:19"}],"id":7102,"name":"FunctionCall","src":"48775:18:19"}],"id":7103,"name":"FunctionCall","src":"48767:27:19"}],"id":7104,"name":"FunctionCall","src":"48759:36:19"}],"id":7105,"name":"FunctionCall","src":"48751:45:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6984,"type":"address","value":"signer"},"id":7106,"name":"Identifier","src":"48800:6:19"}],"id":7107,"name":"BinaryOperation","src":"48751:55:19"}],"id":7108,"name":"TupleExpression","src":"48750:57:19"}],"id":7109,"name":"Return","src":"48743:64:19"}],"id":7110,"name":"Block","src":"48656:162:19"}],"id":7111,"name":"IfStatement","src":"48553:265:19"}],"id":7112,"name":"Block","src":"47939:885:19"}],"id":7113,"name":"FunctionDefinition","src":"47821:1003:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_randomDS_proofVerify__sessionKeyValidity","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_proof","scope":7299,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7114,"name":"ElementaryTypeName","src":"48889:5:19"}],"id":7115,"name":"VariableDeclaration","src":"48889:19:19"},{"attributes":{"constant":false,"name":"_sig2offset","scope":7299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7116,"name":"ElementaryTypeName","src":"48910:4:19"}],"id":7117,"name":"VariableDeclaration","src":"48910:16:19"}],"id":7118,"name":"ParameterList","src":"48888:39:19"},{"children":[{"attributes":{"constant":false,"name":"_proofVerified","scope":7299,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7119,"name":"ElementaryTypeName","src":"48946:4:19"}],"id":7120,"name":"VariableDeclaration","src":"48946:19:19"}],"id":7121,"name":"ParameterList","src":"48945:21:19"},{"children":[{"attributes":{"assignments":[7123],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"sigok","scope":7298,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7122,"name":"ElementaryTypeName","src":"48977:4:19"}],"id":7123,"name":"VariableDeclaration","src":"48977:10:19"}],"id":7124,"name":"VariableDeclarationStatement","src":"48977:10:19"},{"attributes":{"assignments":[7126]},"children":[{"attributes":{"constant":false,"name":"sig2","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7125,"name":"ElementaryTypeName","src":"49138:5:19"}],"id":7126,"name":"VariableDeclaration","src":"49138:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7127,"name":"ElementaryTypeName","src":"49162:5:19"}],"id":7128,"name":"NewExpression","src":"49158:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7129,"name":"ElementaryTypeNameExpression","src":"49168:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7130,"name":"ElementaryTypeNameExpression","src":"49173:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7131,"name":"Identifier","src":"49179:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7117,"type":"uint256","value":"_sig2offset"},"id":7132,"name":"Identifier","src":"49186:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7133,"name":"Literal","src":"49200:1:19"}],"id":7134,"name":"BinaryOperation","src":"49186:15:19"}],"id":7135,"name":"IndexAccess","src":"49179:23:19"}],"id":7136,"name":"FunctionCall","src":"49173:30:19"}],"id":7137,"name":"FunctionCall","src":"49168:36:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7138,"name":"Literal","src":"49207:1:19"}],"id":7139,"name":"BinaryOperation","src":"49168:40:19"}],"id":7140,"name":"FunctionCall","src":"49158:51:19"}],"id":7141,"name":"VariableDeclarationStatement","src":"49138:71:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7142,"name":"Identifier","src":"49219:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7143,"name":"Identifier","src":"49229:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7117,"type":"uint256","value":"_sig2offset"},"id":7144,"name":"Identifier","src":"49237:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"bytes memory","value":"sig2"},"id":7145,"name":"Identifier","src":"49250:4:19"}],"id":7146,"name":"MemberAccess","src":"49250:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"bytes memory","value":"sig2"},"id":7147,"name":"Identifier","src":"49263:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7148,"name":"Literal","src":"49269:1:19"}],"id":7149,"name":"FunctionCall","src":"49219:52:19"}],"id":7150,"name":"ExpressionStatement","src":"49219:52:19"},{"attributes":{"assignments":[7152]},"children":[{"attributes":{"constant":false,"name":"appkey1_pubkey","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7151,"name":"ElementaryTypeName","src":"49281:5:19"}],"id":7152,"name":"VariableDeclaration","src":"49281:27:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7153,"name":"ElementaryTypeName","src":"49315:5:19"}],"id":7154,"name":"NewExpression","src":"49311:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7155,"name":"Literal","src":"49321:2:19"}],"id":7156,"name":"FunctionCall","src":"49311:13:19"}],"id":7157,"name":"VariableDeclarationStatement","src":"49281:43:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7158,"name":"Identifier","src":"49334:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7159,"name":"Identifier","src":"49344:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 4"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7160,"name":"Literal","src":"49352:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7161,"name":"Literal","src":"49356:1:19"}],"id":7162,"name":"BinaryOperation","src":"49352:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7163,"name":"Literal","src":"49359:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7152,"type":"bytes memory","value":"appkey1_pubkey"},"id":7164,"name":"Identifier","src":"49363:14:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7165,"name":"Literal","src":"49379:1:19"}],"id":7166,"name":"FunctionCall","src":"49334:47:19"}],"id":7167,"name":"ExpressionStatement","src":"49334:47:19"},{"attributes":{"assignments":[7169]},"children":[{"attributes":{"constant":false,"name":"tosign2","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7168,"name":"ElementaryTypeName","src":"49391:5:19"}],"id":7169,"name":"VariableDeclaration","src":"49391:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_98_by_1","typeString":"int_const 98"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7170,"name":"ElementaryTypeName","src":"49418:5:19"}],"id":7171,"name":"NewExpression","src":"49414:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_98_by_1","typeString":"int_const 98"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 98"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 66"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7172,"name":"Literal","src":"49424:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7173,"name":"Literal","src":"49428:2:19"}],"id":7174,"name":"BinaryOperation","src":"49424:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7175,"name":"Literal","src":"49433:2:19"}],"id":7176,"name":"BinaryOperation","src":"49424:11:19"}],"id":7177,"name":"FunctionCall","src":"49414:22:19"}],"id":7178,"name":"VariableDeclarationStatement","src":"49391:45:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7169,"type":"bytes memory","value":"tosign2"},"id":7179,"name":"Identifier","src":"49446:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7180,"name":"Literal","src":"49454:1:19"}],"id":7181,"name":"IndexAccess","src":"49446:10:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"byte"},"id":7182,"name":"ElementaryTypeNameExpression","src":"49459:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7183,"name":"ElementaryTypeNameExpression","src":"49464:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7184,"name":"Literal","src":"49470:1:19"}],"id":7185,"name":"FunctionCall","src":"49464:8:19"}],"id":7186,"name":"FunctionCall","src":"49459:14:19"}],"id":7187,"name":"Assignment","src":"49446:27:19"}],"id":7188,"name":"ExpressionStatement","src":"49446:27:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7189,"name":"Identifier","src":"49490:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7190,"name":"Identifier","src":"49500:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7117,"type":"uint256","value":"_sig2offset"},"id":7191,"name":"Identifier","src":"49508:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7192,"name":"Literal","src":"49522:2:19"}],"id":7193,"name":"BinaryOperation","src":"49508:16:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7194,"name":"Literal","src":"49526:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7169,"type":"bytes memory","value":"tosign2"},"id":7195,"name":"Identifier","src":"49530:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7196,"name":"Literal","src":"49539:1:19"}],"id":7197,"name":"FunctionCall","src":"49490:51:19"}],"id":7198,"name":"ExpressionStatement","src":"49490:51:19"},{"attributes":{"assignments":[7200]},"children":[{"attributes":{"constant":false,"name":"CODEHASH","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7199,"name":"ElementaryTypeName","src":"49551:5:19"}],"id":7200,"name":"VariableDeclaration","src":"49551:21:19"},{"attributes":{"argumentTypes":null,"hexvalue":"fd94fa71bc0ba10d39d464d0d8f465efeef0a2764e3887fcc9df41ded20f505c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 0)","value":null},"id":7201,"name":"Literal","src":"49575:69:19"}],"id":7202,"name":"VariableDeclarationStatement","src":"49551:93:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7203,"name":"Identifier","src":"49654:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7200,"type":"bytes memory","value":"CODEHASH"},"id":7204,"name":"Identifier","src":"49664:8:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7205,"name":"Literal","src":"49674:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7206,"name":"Literal","src":"49677:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7169,"type":"bytes memory","value":"tosign2"},"id":7207,"name":"Identifier","src":"49681:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 66"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7208,"name":"Literal","src":"49690:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7209,"name":"Literal","src":"49694:2:19"}],"id":7210,"name":"BinaryOperation","src":"49690:6:19"}],"id":7211,"name":"FunctionCall","src":"49654:43:19"}],"id":7212,"name":"ExpressionStatement","src":"49654:43:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7123,"type":"bool","value":"sigok"},"id":7213,"name":"Identifier","src":"49707:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7113,"type":"function (bytes32,bytes memory,bytes memory) returns (bool)","value":"verifySig"},"id":7214,"name":"Identifier","src":"49715:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7215,"name":"Identifier","src":"49725:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7169,"type":"bytes memory","value":"tosign2"},"id":7216,"name":"Identifier","src":"49732:7:19"}],"id":7217,"name":"FunctionCall","src":"49725:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"bytes memory","value":"sig2"},"id":7218,"name":"Identifier","src":"49742:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7152,"type":"bytes memory","value":"appkey1_pubkey"},"id":7219,"name":"Identifier","src":"49748:14:19"}],"id":7220,"name":"FunctionCall","src":"49715:48:19"}],"id":7221,"name":"Assignment","src":"49707:56:19"}],"id":7222,"name":"ExpressionStatement","src":"49707:56:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7123,"type":"bool","value":"sigok"},"id":7223,"name":"Identifier","src":"49778:5:19"}],"id":7224,"name":"UnaryOperation","src":"49777:6:19"},{"children":[{"attributes":{"functionReturnParameters":7121},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7225,"name":"Literal","src":"49806:5:19"}],"id":7226,"name":"Return","src":"49799:12:19"}],"id":7227,"name":"Block","src":"49785:37:19"}],"id":7228,"name":"IfStatement","src":"49773:49:19"},{"attributes":{"assignments":[7230]},"children":[{"attributes":{"constant":false,"name":"LEDGERKEY","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7229,"name":"ElementaryTypeName","src":"49923:5:19"}],"id":7230,"name":"VariableDeclaration","src":"49923:22:19"},{"attributes":{"argumentTypes":null,"hexvalue":"7fb956469c5c9b89840d55b43537e66a98dd4811ea0a27224272c2e5622911e8537a2f8e86a46baec82864e98dd01e9ccc2f8bc5dfc9cbe5a91a290498dd96e4","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 1)","value":null},"id":7231,"name":"Literal","src":"49948:133:19"}],"id":7232,"name":"VariableDeclarationStatement","src":"49923:158:19"},{"attributes":{"assignments":[7234]},"children":[{"attributes":{"constant":false,"name":"tosign3","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7233,"name":"ElementaryTypeName","src":"50091:5:19"}],"id":7234,"name":"VariableDeclaration","src":"50091:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7235,"name":"ElementaryTypeName","src":"50118:5:19"}],"id":7236,"name":"NewExpression","src":"50114:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_66_by_1","typeString":"int_const 66"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 66"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7237,"name":"Literal","src":"50124:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7238,"name":"Literal","src":"50128:2:19"}],"id":7239,"name":"BinaryOperation","src":"50124:6:19"}],"id":7240,"name":"FunctionCall","src":"50114:17:19"}],"id":7241,"name":"VariableDeclarationStatement","src":"50091:40:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7234,"type":"bytes memory","value":"tosign3"},"id":7242,"name":"Identifier","src":"50141:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7243,"name":"Literal","src":"50149:1:19"}],"id":7244,"name":"IndexAccess","src":"50141:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30784645","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 254","value":"0xFE"},"id":7245,"name":"Literal","src":"50154:4:19"}],"id":7246,"name":"Assignment","src":"50141:17:19"}],"id":7247,"name":"ExpressionStatement","src":"50141:17:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_3_by_1","typeString":"int_const 3"},{"typeIdentifier":"t_rational_65_by_1","typeString":"int_const 65"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7248,"name":"Identifier","src":"50168:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7249,"name":"Identifier","src":"50178:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7250,"name":"Literal","src":"50186:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7251,"name":"Literal","src":"50189:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7234,"type":"bytes memory","value":"tosign3"},"id":7252,"name":"Identifier","src":"50193:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7253,"name":"Literal","src":"50202:1:19"}],"id":7254,"name":"FunctionCall","src":"50168:36:19"}],"id":7255,"name":"ExpressionStatement","src":"50168:36:19"},{"attributes":{"assignments":[7257]},"children":[{"attributes":{"constant":false,"name":"sig3","scope":7298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7256,"name":"ElementaryTypeName","src":"50214:5:19"}],"id":7257,"name":"VariableDeclaration","src":"50214:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7258,"name":"ElementaryTypeName","src":"50238:5:19"}],"id":7259,"name":"NewExpression","src":"50234:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7260,"name":"ElementaryTypeNameExpression","src":"50244:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7261,"name":"ElementaryTypeNameExpression","src":"50249:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7262,"name":"Identifier","src":"50255:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_69_by_1","typeString":"int_const 69"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 69"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7263,"name":"Literal","src":"50262:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7264,"name":"Literal","src":"50266:2:19"}],"id":7265,"name":"BinaryOperation","src":"50262:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7266,"name":"Literal","src":"50271:1:19"}],"id":7267,"name":"BinaryOperation","src":"50262:10:19"}],"id":7268,"name":"IndexAccess","src":"50255:18:19"}],"id":7269,"name":"FunctionCall","src":"50249:25:19"}],"id":7270,"name":"FunctionCall","src":"50244:31:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7271,"name":"Literal","src":"50278:1:19"}],"id":7272,"name":"BinaryOperation","src":"50244:35:19"}],"id":7273,"name":"FunctionCall","src":"50234:46:19"}],"id":7274,"name":"VariableDeclarationStatement","src":"50214:66:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7275,"name":"Identifier","src":"50290:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7115,"type":"bytes memory","value":"_proof"},"id":7276,"name":"Identifier","src":"50300:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7277,"name":"Literal","src":"50308:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7278,"name":"Literal","src":"50312:2:19"}],"id":7279,"name":"BinaryOperation","src":"50308:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7257,"type":"bytes memory","value":"sig3"},"id":7280,"name":"Identifier","src":"50316:4:19"}],"id":7281,"name":"MemberAccess","src":"50316:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7257,"type":"bytes memory","value":"sig3"},"id":7282,"name":"Identifier","src":"50329:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7283,"name":"Literal","src":"50335:1:19"}],"id":7284,"name":"FunctionCall","src":"50290:47:19"}],"id":7285,"name":"ExpressionStatement","src":"50290:47:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7123,"type":"bool","value":"sigok"},"id":7286,"name":"Identifier","src":"50347:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7113,"type":"function (bytes32,bytes memory,bytes memory) returns (bool)","value":"verifySig"},"id":7287,"name":"Identifier","src":"50355:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7288,"name":"Identifier","src":"50365:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7234,"type":"bytes memory","value":"tosign3"},"id":7289,"name":"Identifier","src":"50372:7:19"}],"id":7290,"name":"FunctionCall","src":"50365:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7257,"type":"bytes memory","value":"sig3"},"id":7291,"name":"Identifier","src":"50382:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7230,"type":"bytes memory","value":"LEDGERKEY"},"id":7292,"name":"Identifier","src":"50388:9:19"}],"id":7293,"name":"FunctionCall","src":"50355:43:19"}],"id":7294,"name":"Assignment","src":"50347:51:19"}],"id":7295,"name":"ExpressionStatement","src":"50347:51:19"},{"attributes":{"functionReturnParameters":7121},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7123,"type":"bool","value":"sigok"},"id":7296,"name":"Identifier","src":"50415:5:19"}],"id":7297,"name":"Return","src":"50408:12:19"}],"id":7298,"name":"Block","src":"48967:1460:19"}],"id":7299,"name":"FunctionDefinition","src":"48830:1597:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_randomDS_proofVerify__returnCode","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_queryId","scope":7359,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7300,"name":"ElementaryTypeName","src":"50484:7:19"}],"id":7301,"name":"VariableDeclaration","src":"50484:16:19"},{"attributes":{"constant":false,"name":"_result","scope":7359,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7302,"name":"ElementaryTypeName","src":"50502:6:19"}],"id":7303,"name":"VariableDeclaration","src":"50502:21:19"},{"attributes":{"constant":false,"name":"_proof","scope":7359,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7304,"name":"ElementaryTypeName","src":"50525:5:19"}],"id":7305,"name":"VariableDeclaration","src":"50525:19:19"}],"id":7306,"name":"ParameterList","src":"50483:62:19"},{"children":[{"attributes":{"constant":false,"name":"_returnCode","scope":7359,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7307,"name":"ElementaryTypeName","src":"50564:5:19"}],"id":7308,"name":"VariableDeclaration","src":"50564:17:19"}],"id":7309,"name":"ParameterList","src":"50563:19:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"_proof"},"id":7310,"name":"Identifier","src":"50691:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7311,"name":"Literal","src":"50698:1:19"}],"id":7312,"name":"IndexAccess","src":"50691:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"4c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"L\"","value":"L"},"id":7313,"name":"Literal","src":"50704:3:19"}],"id":7314,"name":"BinaryOperation","src":"50691:16:19"}],"id":7315,"name":"TupleExpression","src":"50690:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"_proof"},"id":7316,"name":"Identifier","src":"50713:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7317,"name":"Literal","src":"50720:1:19"}],"id":7318,"name":"IndexAccess","src":"50713:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"50","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"P\"","value":"P"},"id":7319,"name":"Literal","src":"50726:3:19"}],"id":7320,"name":"BinaryOperation","src":"50713:16:19"}],"id":7321,"name":"TupleExpression","src":"50712:18:19"}],"id":7322,"name":"BinaryOperation","src":"50690:40:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7323,"name":"ElementaryTypeNameExpression","src":"50735:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"_proof"},"id":7324,"name":"Identifier","src":"50741:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7325,"name":"Literal","src":"50748:1:19"}],"id":7326,"name":"IndexAccess","src":"50741:9:19"}],"id":7327,"name":"FunctionCall","src":"50735:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7328,"name":"ElementaryTypeNameExpression","src":"50755:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7329,"name":"Literal","src":"50761:1:19"}],"id":7330,"name":"FunctionCall","src":"50755:8:19"}],"id":7331,"name":"BinaryOperation","src":"50735:28:19"}],"id":7332,"name":"TupleExpression","src":"50734:30:19"}],"id":7333,"name":"BinaryOperation","src":"50690:74:19"},{"children":[{"attributes":{"functionReturnParameters":7309},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7334,"name":"Literal","src":"50787:1:19"}],"id":7335,"name":"Return","src":"50780:8:19"}],"id":7336,"name":"Block","src":"50766:33:19"}],"id":7337,"name":"IfStatement","src":"50686:113:19"},{"attributes":{"assignments":[7339]},"children":[{"attributes":{"constant":false,"name":"proofVerified","scope":7358,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7338,"name":"ElementaryTypeName","src":"50808:4:19"}],"id":7339,"name":"VariableDeclaration","src":"50808:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7693,"type":"function (bytes memory,bytes32,bytes memory,string memory) returns (bool)","value":"oraclize_randomDS_proofVerify__main"},"id":7340,"name":"Identifier","src":"50829:35:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7305,"type":"bytes memory","value":"_proof"},"id":7341,"name":"Identifier","src":"50865:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7301,"type":"bytes32","value":"_queryId"},"id":7342,"name":"Identifier","src":"50873:8:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":7343,"name":"ElementaryTypeNameExpression","src":"50883:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7303,"type":"string memory","value":"_result"},"id":7344,"name":"Identifier","src":"50889:7:19"}],"id":7345,"name":"FunctionCall","src":"50883:14:19"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2432,"type":"function () view returns (string memory)","value":"oraclize_getNetworkName"},"id":7346,"name":"Identifier","src":"50899:23:19"}],"id":7347,"name":"FunctionCall","src":"50899:25:19"}],"id":7348,"name":"FunctionCall","src":"50829:96:19"}],"id":7349,"name":"VariableDeclarationStatement","src":"50808:117:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7339,"type":"bool","value":"proofVerified"},"id":7350,"name":"Identifier","src":"50940:13:19"}],"id":7351,"name":"UnaryOperation","src":"50939:14:19"},{"children":[{"attributes":{"functionReturnParameters":7309},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7352,"name":"Literal","src":"50976:1:19"}],"id":7353,"name":"Return","src":"50969:8:19"}],"id":7354,"name":"Block","src":"50955:33:19"}],"id":7355,"name":"IfStatement","src":"50935:53:19"},{"attributes":{"functionReturnParameters":7309},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7356,"name":"Literal","src":"51004:1:19"}],"id":7357,"name":"Return","src":"50997:8:19"}],"id":7358,"name":"Block","src":"50583:429:19"}],"id":7359,"name":"FunctionDefinition","src":"50433:579:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"matchBytes32Prefix","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_content","scope":7409,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7360,"name":"ElementaryTypeName","src":"51046:7:19"}],"id":7361,"name":"VariableDeclaration","src":"51046:16:19"},{"attributes":{"constant":false,"name":"_prefix","scope":7409,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7362,"name":"ElementaryTypeName","src":"51064:5:19"}],"id":7363,"name":"VariableDeclaration","src":"51064:20:19"},{"attributes":{"constant":false,"name":"_nRandomBytes","scope":7409,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7364,"name":"ElementaryTypeName","src":"51086:4:19"}],"id":7365,"name":"VariableDeclaration","src":"51086:18:19"}],"id":7366,"name":"ParameterList","src":"51045:60:19"},{"children":[{"attributes":{"constant":false,"name":"_matchesPrefix","scope":7409,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7367,"name":"ElementaryTypeName","src":"51129:4:19"}],"id":7368,"name":"VariableDeclaration","src":"51129:19:19"}],"id":7369,"name":"ParameterList","src":"51128:21:19"},{"children":[{"attributes":{"assignments":[7371]},"children":[{"attributes":{"constant":false,"name":"match_","scope":7408,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7370,"name":"ElementaryTypeName","src":"51160:4:19"}],"id":7371,"name":"VariableDeclaration","src":"51160:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7372,"name":"Literal","src":"51174:4:19"}],"id":7373,"name":"VariableDeclarationStatement","src":"51160:18:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":7374,"name":"Identifier","src":"51188:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7363,"type":"bytes memory","value":"_prefix"},"id":7375,"name":"Identifier","src":"51196:7:19"}],"id":7376,"name":"MemberAccess","src":"51196:14:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"uint256","value":"_nRandomBytes"},"id":7377,"name":"Identifier","src":"51214:13:19"}],"id":7378,"name":"BinaryOperation","src":"51196:31:19"}],"id":7379,"name":"FunctionCall","src":"51188:40:19"}],"id":7380,"name":"ExpressionStatement","src":"51188:40:19"},{"children":[{"attributes":{"assignments":[7382]},"children":[{"attributes":{"constant":false,"name":"i","scope":7405,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7381,"name":"ElementaryTypeName","src":"51243:7:19"}],"id":7382,"name":"VariableDeclaration","src":"51243:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7383,"name":"Literal","src":"51255:1:19"}],"id":7384,"name":"VariableDeclarationStatement","src":"51243:13:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7382,"type":"uint256","value":"i"},"id":7385,"name":"Identifier","src":"51258:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7365,"type":"uint256","value":"_nRandomBytes"},"id":7386,"name":"Identifier","src":"51261:13:19"}],"id":7387,"name":"BinaryOperation","src":"51258:16:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7382,"type":"uint256","value":"i"},"id":7388,"name":"Identifier","src":"51276:1:19"}],"id":7389,"name":"UnaryOperation","src":"51276:3:19"}],"id":7390,"name":"ExpressionStatement","src":"51276:3:19"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7361,"type":"bytes32","value":"_content"},"id":7391,"name":"Identifier","src":"51299:8:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7382,"type":"uint256","value":"i"},"id":7392,"name":"Identifier","src":"51308:1:19"}],"id":7393,"name":"IndexAccess","src":"51299:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7363,"type":"bytes memory","value":"_prefix"},"id":7394,"name":"Identifier","src":"51314:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7382,"type":"uint256","value":"i"},"id":7395,"name":"Identifier","src":"51322:1:19"}],"id":7396,"name":"IndexAccess","src":"51314:10:19"}],"id":7397,"name":"BinaryOperation","src":"51299:25:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7371,"type":"bool","value":"match_"},"id":7398,"name":"Identifier","src":"51344:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7399,"name":"Literal","src":"51353:5:19"}],"id":7400,"name":"Assignment","src":"51344:14:19"}],"id":7401,"name":"ExpressionStatement","src":"51344:14:19"}],"id":7402,"name":"Block","src":"51326:47:19"}],"id":7403,"name":"IfStatement","src":"51295:78:19"}],"id":7404,"name":"Block","src":"51281:102:19"}],"id":7405,"name":"ForStatement","src":"51238:145:19"},{"attributes":{"functionReturnParameters":7369},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7371,"type":"bool","value":"match_"},"id":7406,"name":"Identifier","src":"51399:6:19"}],"id":7407,"name":"Return","src":"51392:13:19"}],"id":7408,"name":"Block","src":"51150:262:19"}],"id":7409,"name":"FunctionDefinition","src":"51018:394:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oraclize_randomDS_proofVerify__main","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_proof","scope":7693,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7410,"name":"ElementaryTypeName","src":"51463:5:19"}],"id":7411,"name":"VariableDeclaration","src":"51463:19:19"},{"attributes":{"constant":false,"name":"_queryId","scope":7693,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7412,"name":"ElementaryTypeName","src":"51484:7:19"}],"id":7413,"name":"VariableDeclaration","src":"51484:16:19"},{"attributes":{"constant":false,"name":"_result","scope":7693,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7414,"name":"ElementaryTypeName","src":"51502:5:19"}],"id":7415,"name":"VariableDeclaration","src":"51502:20:19"},{"attributes":{"constant":false,"name":"_contextName","scope":7693,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7416,"name":"ElementaryTypeName","src":"51524:6:19"}],"id":7417,"name":"VariableDeclaration","src":"51524:26:19"}],"id":7418,"name":"ParameterList","src":"51462:89:19"},{"children":[{"attributes":{"constant":false,"name":"_proofVerified","scope":7693,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7419,"name":"ElementaryTypeName","src":"51570:4:19"}],"id":7420,"name":"VariableDeclaration","src":"51570:19:19"}],"id":7421,"name":"ParameterList","src":"51569:21:19"},{"children":[{"attributes":{"assignments":[7423]},"children":[{"attributes":{"constant":false,"name":"ledgerProofLength","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7422,"name":"ElementaryTypeName","src":"51713:4:19"}],"id":7423,"name":"VariableDeclaration","src":"51713:22:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7424,"name":"Literal","src":"51738:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7425,"name":"Literal","src":"51742:2:19"}],"id":7426,"name":"BinaryOperation","src":"51738:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7427,"name":"ElementaryTypeNameExpression","src":"51748:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7428,"name":"ElementaryTypeNameExpression","src":"51753:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7429,"name":"Identifier","src":"51759:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_69_by_1","typeString":"int_const 69"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 69"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7430,"name":"Literal","src":"51766:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7431,"name":"Literal","src":"51770:2:19"}],"id":7432,"name":"BinaryOperation","src":"51766:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7433,"name":"Literal","src":"51775:1:19"}],"id":7434,"name":"BinaryOperation","src":"51766:10:19"}],"id":7435,"name":"IndexAccess","src":"51759:18:19"}],"id":7436,"name":"FunctionCall","src":"51753:25:19"}],"id":7437,"name":"FunctionCall","src":"51748:31:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7438,"name":"Literal","src":"51782:1:19"}],"id":7439,"name":"BinaryOperation","src":"51748:35:19"}],"id":7440,"name":"TupleExpression","src":"51747:37:19"}],"id":7441,"name":"BinaryOperation","src":"51738:46:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7442,"name":"Literal","src":"51787:2:19"}],"id":7443,"name":"BinaryOperation","src":"51738:51:19"}],"id":7444,"name":"VariableDeclarationStatement","src":"51713:76:19"},{"attributes":{"assignments":[7446]},"children":[{"attributes":{"constant":false,"name":"keyhash","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7445,"name":"ElementaryTypeName","src":"51799:5:19"}],"id":7446,"name":"VariableDeclaration","src":"51799:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7447,"name":"ElementaryTypeName","src":"51826:5:19"}],"id":7448,"name":"NewExpression","src":"51822:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7449,"name":"Literal","src":"51832:2:19"}],"id":7450,"name":"FunctionCall","src":"51822:13:19"}],"id":7451,"name":"VariableDeclarationStatement","src":"51799:36:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7452,"name":"Identifier","src":"51845:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7453,"name":"Identifier","src":"51855:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7454,"name":"Identifier","src":"51863:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7455,"name":"Literal","src":"51882:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"bytes memory","value":"keyhash"},"id":7456,"name":"Identifier","src":"51886:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7457,"name":"Literal","src":"51895:1:19"}],"id":7458,"name":"FunctionCall","src":"51845:52:19"}],"id":7459,"name":"ExpressionStatement","src":"51845:52:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7460,"name":"Identifier","src":"51913:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7446,"type":"bytes memory","value":"keyhash"},"id":7461,"name":"Identifier","src":"51923:7:19"}],"id":7462,"name":"FunctionCall","src":"51913:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7463,"name":"Identifier","src":"51935:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":7464,"name":"Identifier","src":"51945:3:19"}],"id":7465,"name":"MemberAccess","src":"51945:16:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7466,"name":"Identifier","src":"51962:6:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":7467,"name":"Identifier","src":"51969:3:19"}],"id":7468,"name":"MemberAccess","src":"51969:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7417,"type":"string memory","value":"_contextName"},"id":7469,"name":"Identifier","src":"51986:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7413,"type":"bytes32","value":"_queryId"},"id":7470,"name":"Identifier","src":"52000:8:19"}],"id":7471,"name":"FunctionCall","src":"51969:40:19"}],"id":7472,"name":"FunctionCall","src":"51962:48:19"}],"id":7473,"name":"FunctionCall","src":"51945:66:19"}],"id":7474,"name":"FunctionCall","src":"51935:77:19"}],"id":7475,"name":"BinaryOperation","src":"51913:99:19"}],"id":7476,"name":"TupleExpression","src":"51912:101:19"}],"id":7477,"name":"UnaryOperation","src":"51911:102:19"},{"children":[{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7478,"name":"Literal","src":"52036:5:19"}],"id":7479,"name":"Return","src":"52029:12:19"}],"id":7480,"name":"Block","src":"52015:37:19"}],"id":7481,"name":"IfStatement","src":"51907:145:19"},{"attributes":{"assignments":[7483]},"children":[{"attributes":{"constant":false,"name":"sig1","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7482,"name":"ElementaryTypeName","src":"52061:5:19"}],"id":7483,"name":"VariableDeclaration","src":"52061:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7484,"name":"ElementaryTypeName","src":"52085:5:19"}],"id":7485,"name":"NewExpression","src":"52081:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7486,"name":"ElementaryTypeNameExpression","src":"52091:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7487,"name":"ElementaryTypeNameExpression","src":"52096:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7488,"name":"Identifier","src":"52102:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7489,"name":"Identifier","src":"52109:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7490,"name":"Literal","src":"52130:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7491,"name":"Literal","src":"52135:1:19"}],"id":7492,"name":"BinaryOperation","src":"52130:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7493,"name":"Literal","src":"52139:1:19"}],"id":7494,"name":"BinaryOperation","src":"52130:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7495,"name":"Literal","src":"52143:2:19"}],"id":7496,"name":"BinaryOperation","src":"52130:15:19"}],"id":7497,"name":"TupleExpression","src":"52129:17:19"}],"id":7498,"name":"BinaryOperation","src":"52109:37:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7499,"name":"Literal","src":"52149:1:19"}],"id":7500,"name":"BinaryOperation","src":"52109:41:19"}],"id":7501,"name":"IndexAccess","src":"52102:49:19"}],"id":7502,"name":"FunctionCall","src":"52096:56:19"}],"id":7503,"name":"FunctionCall","src":"52091:62:19"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7504,"name":"Literal","src":"52156:1:19"}],"id":7505,"name":"BinaryOperation","src":"52091:66:19"}],"id":7506,"name":"FunctionCall","src":"52081:77:19"}],"id":7507,"name":"VariableDeclarationStatement","src":"52061:97:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7508,"name":"Identifier","src":"52168:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7509,"name":"Identifier","src":"52178:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7510,"name":"Identifier","src":"52186:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7511,"name":"Literal","src":"52207:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7512,"name":"Literal","src":"52212:1:19"}],"id":7513,"name":"BinaryOperation","src":"52207:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7514,"name":"Literal","src":"52216:1:19"}],"id":7515,"name":"BinaryOperation","src":"52207:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7516,"name":"Literal","src":"52220:2:19"}],"id":7517,"name":"BinaryOperation","src":"52207:15:19"}],"id":7518,"name":"TupleExpression","src":"52206:17:19"}],"id":7519,"name":"BinaryOperation","src":"52186:37:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7520,"name":"Identifier","src":"52225:4:19"}],"id":7521,"name":"MemberAccess","src":"52225:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7522,"name":"Identifier","src":"52238:4:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7523,"name":"Literal","src":"52244:1:19"}],"id":7524,"name":"FunctionCall","src":"52168:78:19"}],"id":7525,"name":"ExpressionStatement","src":"52168:78:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7409,"type":"function (bytes32,bytes memory,uint256) pure returns (bool)","value":"matchBytes32Prefix"},"id":7526,"name":"Identifier","src":"52414:18:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7527,"name":"Identifier","src":"52433:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7528,"name":"Identifier","src":"52440:4:19"}],"id":7529,"name":"FunctionCall","src":"52433:12:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7415,"type":"bytes memory","value":"_result"},"id":7530,"name":"Identifier","src":"52447:7:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7531,"name":"ElementaryTypeNameExpression","src":"52456:4:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7532,"name":"ElementaryTypeNameExpression","src":"52461:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7533,"name":"Identifier","src":"52467:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7534,"name":"Identifier","src":"52474:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7535,"name":"Literal","src":"52494:2:19"}],"id":7536,"name":"BinaryOperation","src":"52474:22:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7537,"name":"Literal","src":"52499:1:19"}],"id":7538,"name":"BinaryOperation","src":"52474:26:19"}],"id":7539,"name":"IndexAccess","src":"52467:34:19"}],"id":7540,"name":"FunctionCall","src":"52461:41:19"}],"id":7541,"name":"FunctionCall","src":"52456:47:19"}],"id":7542,"name":"FunctionCall","src":"52414:90:19"}],"id":7543,"name":"UnaryOperation","src":"52413:91:19"},{"children":[{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7544,"name":"Literal","src":"52527:5:19"}],"id":7545,"name":"Return","src":"52520:12:19"}],"id":7546,"name":"Block","src":"52506:37:19"}],"id":7547,"name":"IfStatement","src":"52409:134:19"},{"attributes":{"assignments":[7549]},"children":[{"attributes":{"constant":false,"name":"commitmentSlice1","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7548,"name":"ElementaryTypeName","src":"52789:5:19"}],"id":7549,"name":"VariableDeclaration","src":"52789:29:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7550,"name":"ElementaryTypeName","src":"52825:5:19"}],"id":7551,"name":"NewExpression","src":"52821:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 9"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7552,"name":"Literal","src":"52831:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7553,"name":"Literal","src":"52835:1:19"}],"id":7554,"name":"BinaryOperation","src":"52831:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7555,"name":"Literal","src":"52839:2:19"}],"id":7556,"name":"BinaryOperation","src":"52831:10:19"}],"id":7557,"name":"FunctionCall","src":"52821:21:19"}],"id":7558,"name":"VariableDeclarationStatement","src":"52789:53:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7559,"name":"Identifier","src":"52852:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7560,"name":"Identifier","src":"52862:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7561,"name":"Identifier","src":"52870:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7562,"name":"Literal","src":"52890:2:19"}],"id":7563,"name":"BinaryOperation","src":"52870:22:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 9"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7564,"name":"Literal","src":"52894:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7565,"name":"Literal","src":"52898:1:19"}],"id":7566,"name":"BinaryOperation","src":"52894:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7567,"name":"Literal","src":"52902:2:19"}],"id":7568,"name":"BinaryOperation","src":"52894:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7549,"type":"bytes memory","value":"commitmentSlice1"},"id":7569,"name":"Identifier","src":"52906:16:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7570,"name":"Literal","src":"52924:1:19"}],"id":7571,"name":"FunctionCall","src":"52852:74:19"}],"id":7572,"name":"ExpressionStatement","src":"52852:74:19"},{"attributes":{"assignments":[7574]},"children":[{"attributes":{"constant":false,"name":"sessionPubkey","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7573,"name":"ElementaryTypeName","src":"52936:5:19"}],"id":7574,"name":"VariableDeclaration","src":"52936:26:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7575,"name":"ElementaryTypeName","src":"52969:5:19"}],"id":7576,"name":"NewExpression","src":"52965:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7577,"name":"Literal","src":"52975:2:19"}],"id":7578,"name":"FunctionCall","src":"52965:13:19"}],"id":7579,"name":"VariableDeclarationStatement","src":"52936:42:19"},{"attributes":{"assignments":[7581]},"children":[{"attributes":{"constant":false,"name":"sig2offset","scope":7692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7580,"name":"ElementaryTypeName","src":"52988:4:19"}],"id":7581,"name":"VariableDeclaration","src":"52988:15:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7582,"name":"Identifier","src":"53006:17:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7583,"name":"Literal","src":"53026:2:19"}],"id":7584,"name":"BinaryOperation","src":"53006:22:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_9_by_1","typeString":"int_const 9"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 9"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7585,"name":"Literal","src":"53032:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7586,"name":"Literal","src":"53036:1:19"}],"id":7587,"name":"BinaryOperation","src":"53032:5:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7588,"name":"Literal","src":"53040:2:19"}],"id":7589,"name":"BinaryOperation","src":"53032:10:19"}],"id":7590,"name":"TupleExpression","src":"53031:12:19"}],"id":7591,"name":"BinaryOperation","src":"53006:37:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7592,"name":"Identifier","src":"53046:4:19"}],"id":7593,"name":"MemberAccess","src":"53046:11:19"}],"id":7594,"name":"BinaryOperation","src":"53006:51:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7595,"name":"Literal","src":"53060:2:19"}],"id":7596,"name":"BinaryOperation","src":"53006:56:19"}],"id":7597,"name":"VariableDeclarationStatement","src":"52988:74:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_64_by_1","typeString":"int_const 64"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7598,"name":"Identifier","src":"53072:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7599,"name":"Identifier","src":"53082:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"uint256","value":"sig2offset"},"id":7600,"name":"Identifier","src":"53090:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7601,"name":"Literal","src":"53103:2:19"}],"id":7602,"name":"BinaryOperation","src":"53090:15:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7603,"name":"Literal","src":"53107:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7574,"type":"bytes memory","value":"sessionPubkey"},"id":7604,"name":"Identifier","src":"53111:13:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7605,"name":"Literal","src":"53126:1:19"}],"id":7606,"name":"FunctionCall","src":"53072:56:19"}],"id":7607,"name":"ExpressionStatement","src":"53072:56:19"},{"attributes":{"assignments":[7609]},"children":[{"attributes":{"constant":false,"name":"sessionPubkeyHash","scope":7692,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7608,"name":"ElementaryTypeName","src":"53138:7:19"}],"id":7609,"name":"VariableDeclaration","src":"53138:25:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7610,"name":"Identifier","src":"53166:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7574,"type":"bytes memory","value":"sessionPubkey"},"id":7611,"name":"Identifier","src":"53173:13:19"}],"id":7612,"name":"FunctionCall","src":"53166:21:19"}],"id":7613,"name":"VariableDeclarationStatement","src":"53138:49:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2300,"type":"mapping(bytes32 => bytes32)","value":"oraclize_randomDS_args"},"id":7614,"name":"Identifier","src":"53201:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7413,"type":"bytes32","value":"_queryId"},"id":7615,"name":"Identifier","src":"53224:8:19"}],"id":7616,"name":"IndexAccess","src":"53201:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7617,"name":"Identifier","src":"53237:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":7618,"name":"Identifier","src":"53247:3:19"}],"id":7619,"name":"MemberAccess","src":"53247:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7549,"type":"bytes memory","value":"commitmentSlice1"},"id":7620,"name":"Identifier","src":"53264:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"bytes32","value":"sessionPubkeyHash"},"id":7621,"name":"Identifier","src":"53282:17:19"}],"id":7622,"name":"FunctionCall","src":"53247:53:19"}],"id":7623,"name":"FunctionCall","src":"53237:64:19"}],"id":7624,"name":"BinaryOperation","src":"53201:100:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2300,"type":"mapping(bytes32 => bytes32)","value":"oraclize_randomDS_args"},"id":7625,"name":"Identifier","src":"53366:22:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7413,"type":"bytes32","value":"_queryId"},"id":7626,"name":"Identifier","src":"53389:8:19"}],"id":7627,"name":"IndexAccess","src":"53366:32:19"}],"id":7628,"name":"UnaryOperation","src":"53359:39:19"}],"id":7629,"name":"ExpressionStatement","src":"53359:39:19"}],"id":7630,"name":"Block","src":"53303:106:19"},{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7631,"name":"Literal","src":"53422:5:19"}],"id":7632,"name":"Return","src":"53415:12:19"}],"id":7633,"name":"IfStatement","src":"53197:230:19"},{"attributes":{"assignments":[7635]},"children":[{"attributes":{"constant":false,"name":"tosign1","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7634,"name":"ElementaryTypeName","src":"53549:5:19"}],"id":7635,"name":"VariableDeclaration","src":"53549:20:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7636,"name":"ElementaryTypeName","src":"53576:5:19"}],"id":7637,"name":"NewExpression","src":"53572:9:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7638,"name":"Literal","src":"53582:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7639,"name":"Literal","src":"53587:1:19"}],"id":7640,"name":"BinaryOperation","src":"53582:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7641,"name":"Literal","src":"53591:1:19"}],"id":7642,"name":"BinaryOperation","src":"53582:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7643,"name":"Literal","src":"53595:2:19"}],"id":7644,"name":"BinaryOperation","src":"53582:15:19"}],"id":7645,"name":"FunctionCall","src":"53572:26:19"}],"id":7646,"name":"VariableDeclarationStatement","src":"53549:49:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":7647,"name":"Identifier","src":"53608:9:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7648,"name":"Identifier","src":"53618:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7423,"type":"uint256","value":"ledgerProofLength"},"id":7649,"name":"Identifier","src":"53626:17:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_73_by_1","typeString":"int_const 73"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 73"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_41_by_1","typeString":"int_const 41"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 41"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_40_by_1","typeString":"int_const 40"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 40"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7650,"name":"Literal","src":"53645:2:19"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7651,"name":"Literal","src":"53650:1:19"}],"id":7652,"name":"BinaryOperation","src":"53645:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7653,"name":"Literal","src":"53654:1:19"}],"id":7654,"name":"BinaryOperation","src":"53645:10:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7655,"name":"Literal","src":"53658:2:19"}],"id":7656,"name":"BinaryOperation","src":"53645:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7635,"type":"bytes memory","value":"tosign1"},"id":7657,"name":"Identifier","src":"53662:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7658,"name":"Literal","src":"53671:1:19"}],"id":7659,"name":"FunctionCall","src":"53608:65:19"}],"id":7660,"name":"ExpressionStatement","src":"53608:65:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7113,"type":"function (bytes32,bytes memory,bytes memory) returns (bool)","value":"verifySig"},"id":7661,"name":"Identifier","src":"53688:9:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":7662,"name":"Identifier","src":"53698:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7635,"type":"bytes memory","value":"tosign1"},"id":7663,"name":"Identifier","src":"53705:7:19"}],"id":7664,"name":"FunctionCall","src":"53698:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7483,"type":"bytes memory","value":"sig1"},"id":7665,"name":"Identifier","src":"53715:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7574,"type":"bytes memory","value":"sessionPubkey"},"id":7666,"name":"Identifier","src":"53721:13:19"}],"id":7667,"name":"FunctionCall","src":"53688:47:19"}],"id":7668,"name":"UnaryOperation","src":"53687:48:19"},{"children":[{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7669,"name":"Literal","src":"53758:5:19"}],"id":7670,"name":"Return","src":"53751:12:19"}],"id":7671,"name":"Block","src":"53737:37:19"}],"id":7672,"name":"IfStatement","src":"53683:91:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2304,"type":"mapping(bytes32 => bool)","value":"oraclize_randomDS_sessionKeysHashVerified"},"id":7673,"name":"Identifier","src":"53871:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"bytes32","value":"sessionPubkeyHash"},"id":7674,"name":"Identifier","src":"53913:17:19"}],"id":7675,"name":"IndexAccess","src":"53871:60:19"}],"id":7676,"name":"UnaryOperation","src":"53870:61:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2304,"type":"mapping(bytes32 => bool)","value":"oraclize_randomDS_sessionKeysHashVerified"},"id":7677,"name":"Identifier","src":"53947:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"bytes32","value":"sessionPubkeyHash"},"id":7678,"name":"Identifier","src":"53989:17:19"}],"id":7679,"name":"IndexAccess","src":"53947:60:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7299,"type":"function (bytes memory,uint256) returns (bool)","value":"oraclize_randomDS_proofVerify__sessionKeyValidity"},"id":7680,"name":"Identifier","src":"54010:49:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7411,"type":"bytes memory","value":"_proof"},"id":7681,"name":"Identifier","src":"54060:6:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"uint256","value":"sig2offset"},"id":7682,"name":"Identifier","src":"54068:10:19"}],"id":7683,"name":"FunctionCall","src":"54010:69:19"}],"id":7684,"name":"Assignment","src":"53947:132:19"}],"id":7685,"name":"ExpressionStatement","src":"53947:132:19"}],"id":7686,"name":"Block","src":"53933:157:19"}],"id":7687,"name":"IfStatement","src":"53866:224:19"},{"attributes":{"functionReturnParameters":7421},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2304,"type":"mapping(bytes32 => bool)","value":"oraclize_randomDS_sessionKeysHashVerified"},"id":7688,"name":"Identifier","src":"54106:41:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"bytes32","value":"sessionPubkeyHash"},"id":7689,"name":"Identifier","src":"54148:17:19"}],"id":7690,"name":"IndexAccess","src":"54106:60:19"}],"id":7691,"name":"Return","src":"54099:67:19"}],"id":7692,"name":"Block","src":"51591:2582:19"}],"id":7693,"name":"FunctionDefinition","src":"51418:2755:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copyBytes","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":7755,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7694,"name":"ElementaryTypeName","src":"54319:5:19"}],"id":7695,"name":"VariableDeclaration","src":"54319:18:19"},{"attributes":{"constant":false,"name":"_fromOffset","scope":7755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7696,"name":"ElementaryTypeName","src":"54339:4:19"}],"id":7697,"name":"VariableDeclaration","src":"54339:16:19"},{"attributes":{"constant":false,"name":"_length","scope":7755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7698,"name":"ElementaryTypeName","src":"54357:4:19"}],"id":7699,"name":"VariableDeclaration","src":"54357:12:19"},{"attributes":{"constant":false,"name":"_to","scope":7755,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7700,"name":"ElementaryTypeName","src":"54371:5:19"}],"id":7701,"name":"VariableDeclaration","src":"54371:16:19"},{"attributes":{"constant":false,"name":"_toOffset","scope":7755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7702,"name":"ElementaryTypeName","src":"54389:4:19"}],"id":7703,"name":"VariableDeclaration","src":"54389:14:19"}],"id":7704,"name":"ParameterList","src":"54318:86:19"},{"children":[{"attributes":{"constant":false,"name":"_copiedBytes","scope":7755,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7705,"name":"ElementaryTypeName","src":"54428:5:19"}],"id":7706,"name":"VariableDeclaration","src":"54428:25:19"}],"id":7707,"name":"ParameterList","src":"54427:27:19"},{"children":[{"attributes":{"assignments":[7709]},"children":[{"attributes":{"constant":false,"name":"minLength","scope":7754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7708,"name":"ElementaryTypeName","src":"54465:4:19"}],"id":7709,"name":"VariableDeclaration","src":"54465:14:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7699,"type":"uint256","value":"_length"},"id":7710,"name":"Identifier","src":"54482:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7703,"type":"uint256","value":"_toOffset"},"id":7711,"name":"Identifier","src":"54492:9:19"}],"id":7712,"name":"BinaryOperation","src":"54482:19:19"}],"id":7713,"name":"VariableDeclarationStatement","src":"54465:36:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":7714,"name":"Identifier","src":"54511:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7701,"type":"bytes memory","value":"_to"},"id":7715,"name":"Identifier","src":"54519:3:19"}],"id":7716,"name":"MemberAccess","src":"54519:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7709,"type":"uint256","value":"minLength"},"id":7717,"name":"Identifier","src":"54533:9:19"}],"id":7718,"name":"BinaryOperation","src":"54519:23:19"}],"id":7719,"name":"FunctionCall","src":"54511:32:19"}],"id":7720,"name":"ExpressionStatement","src":"54511:32:19"},{"attributes":{"assignments":[7722]},"children":[{"attributes":{"constant":false,"name":"i","scope":7754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7721,"name":"ElementaryTypeName","src":"54598:4:19"}],"id":7722,"name":"VariableDeclaration","src":"54598:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7723,"name":"Literal","src":"54607:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7697,"type":"uint256","value":"_fromOffset"},"id":7724,"name":"Identifier","src":"54612:11:19"}],"id":7725,"name":"BinaryOperation","src":"54607:16:19"}],"id":7726,"name":"VariableDeclarationStatement","src":"54598:25:19"},{"attributes":{"assignments":[7728]},"children":[{"attributes":{"constant":false,"name":"j","scope":7754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7727,"name":"ElementaryTypeName","src":"54714:4:19"}],"id":7728,"name":"VariableDeclaration","src":"54714:6:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7729,"name":"Literal","src":"54723:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7703,"type":"uint256","value":"_toOffset"},"id":7730,"name":"Identifier","src":"54728:9:19"}],"id":7731,"name":"BinaryOperation","src":"54723:14:19"}],"id":7732,"name":"VariableDeclarationStatement","src":"54714:23:19"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7722,"type":"uint256","value":"i"},"id":7733,"name":"Identifier","src":"54754:1:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7734,"name":"Literal","src":"54759:2:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7697,"type":"uint256","value":"_fromOffset"},"id":7735,"name":"Identifier","src":"54764:11:19"}],"id":7736,"name":"BinaryOperation","src":"54759:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7699,"type":"uint256","value":"_length"},"id":7737,"name":"Identifier","src":"54778:7:19"}],"id":7738,"name":"BinaryOperation","src":"54759:26:19"}],"id":7739,"name":"TupleExpression","src":"54758:28:19"}],"id":7740,"name":"BinaryOperation","src":"54754:32:19"},{"children":[{"attributes":{"externalReferences":[{"_to":{"declaration":7701,"isOffset":false,"isSlot":false,"src":"54888:3:19","valueSize":1}},{"j":{"declaration":7728,"isOffset":false,"isSlot":false,"src":"54893:1:19","valueSize":1}},{"_from":{"declaration":7695,"isOffset":false,"isSlot":false,"src":"54850:5:19","valueSize":1}},{"i":{"declaration":7722,"isOffset":false,"isSlot":false,"src":"54857:1:19","valueSize":1}}],"operations":"{\n let tmp := mload(add(_from, i))\n mstore(add(_to, j), tmp)\n}"},"children":[],"id":7741,"name":"InlineAssembly","src":"54802:113:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7722,"type":"uint256","value":"i"},"id":7742,"name":"Identifier","src":"54928:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7743,"name":"Literal","src":"54933:2:19"}],"id":7744,"name":"Assignment","src":"54928:7:19"}],"id":7745,"name":"ExpressionStatement","src":"54928:7:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7728,"type":"uint256","value":"j"},"id":7746,"name":"Identifier","src":"54949:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7747,"name":"Literal","src":"54954:2:19"}],"id":7748,"name":"Assignment","src":"54949:7:19"}],"id":7749,"name":"ExpressionStatement","src":"54949:7:19"}],"id":7750,"name":"Block","src":"54788:179:19"}],"id":7751,"name":"WhileStatement","src":"54747:220:19"},{"attributes":{"functionReturnParameters":7707},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7701,"type":"bytes memory","value":"_to"},"id":7752,"name":"Identifier","src":"54983:3:19"}],"id":7753,"name":"Return","src":"54976:10:19"}],"id":7754,"name":"Block","src":"54455:538:19"}],"id":7755,"name":"FunctionDefinition","src":"54300:693:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safer_ecrecover","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":7782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7756,"name":"ElementaryTypeName","src":"55217:7:19"}],"id":7757,"name":"VariableDeclaration","src":"55217:13:19"},{"attributes":{"constant":false,"name":"_v","scope":7782,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7758,"name":"ElementaryTypeName","src":"55232:5:19"}],"id":7759,"name":"VariableDeclaration","src":"55232:8:19"},{"attributes":{"constant":false,"name":"_r","scope":7782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7760,"name":"ElementaryTypeName","src":"55242:7:19"}],"id":7761,"name":"VariableDeclaration","src":"55242:10:19"},{"attributes":{"constant":false,"name":"_s","scope":7782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7762,"name":"ElementaryTypeName","src":"55254:7:19"}],"id":7763,"name":"VariableDeclaration","src":"55254:10:19"}],"id":7764,"name":"ParameterList","src":"55216:49:19"},{"children":[{"attributes":{"constant":false,"name":"_success","scope":7782,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7765,"name":"ElementaryTypeName","src":"55284:4:19"}],"id":7766,"name":"VariableDeclaration","src":"55284:13:19"},{"attributes":{"constant":false,"name":"_recoveredAddress","scope":7782,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7767,"name":"ElementaryTypeName","src":"55299:7:19"}],"id":7768,"name":"VariableDeclaration","src":"55299:25:19"}],"id":7769,"name":"ParameterList","src":"55283:42:19"},{"children":[{"attributes":{"assignments":[7771],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7781,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7770,"name":"ElementaryTypeName","src":"55730:4:19"}],"id":7771,"name":"VariableDeclaration","src":"55730:8:19"}],"id":7772,"name":"VariableDeclarationStatement","src":"55730:8:19"},{"attributes":{"assignments":[7774],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"addr","scope":7781,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7773,"name":"ElementaryTypeName","src":"55748:7:19"}],"id":7774,"name":"VariableDeclaration","src":"55748:12:19"}],"id":7775,"name":"VariableDeclarationStatement","src":"55748:12:19"},{"attributes":{"externalReferences":[{"ret":{"declaration":7771,"isOffset":false,"isSlot":false,"src":"55975:3:19","valueSize":1}},{"_hash":{"declaration":7757,"isOffset":false,"isSlot":false,"src":"55842:5:19","valueSize":1}},{"_v":{"declaration":7759,"isOffset":false,"isSlot":false,"src":"55883:2:19","valueSize":1}},{"addr":{"declaration":7774,"isOffset":false,"isSlot":false,"src":"56111:4:19","valueSize":1}},{"_r":{"declaration":7761,"isOffset":false,"isSlot":false,"src":"55921:2:19","valueSize":1}},{"_s":{"declaration":7763,"isOffset":false,"isSlot":false,"src":"55959:2:19","valueSize":1}}],"operations":"{\n let size := mload(0x40)\n mstore(size, _hash)\n mstore(add(size, 32), _v)\n mstore(add(size, 64), _r)\n mstore(add(size, 96), _s)\n ret := call(3000, 1, 0, size, 128, size, 32)\n addr := mload(size)\n}"},"children":[],"id":7776,"name":"InlineAssembly","src":"55770:370:19"},{"attributes":{"functionReturnParameters":7769},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bool,address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7771,"type":"bool","value":"ret"},"id":7777,"name":"Identifier","src":"56157:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7774,"type":"address","value":"addr"},"id":7778,"name":"Identifier","src":"56162:4:19"}],"id":7779,"name":"TupleExpression","src":"56156:11:19"}],"id":7780,"name":"Return","src":"56149:18:19"}],"id":7781,"name":"Block","src":"55326:848:19"}],"id":7782,"name":"FunctionDefinition","src":"55192:982:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ecrecovery","scope":7853,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":7847,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7783,"name":"ElementaryTypeName","src":"56321:7:19"}],"id":7784,"name":"VariableDeclaration","src":"56321:13:19"},{"attributes":{"constant":false,"name":"_sig","scope":7847,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7785,"name":"ElementaryTypeName","src":"56336:5:19"}],"id":7786,"name":"VariableDeclaration","src":"56336:17:19"}],"id":7787,"name":"ParameterList","src":"56320:34:19"},{"children":[{"attributes":{"constant":false,"name":"_success","scope":7847,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7788,"name":"ElementaryTypeName","src":"56373:4:19"}],"id":7789,"name":"VariableDeclaration","src":"56373:13:19"},{"attributes":{"constant":false,"name":"_recoveredAddress","scope":7847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7790,"name":"ElementaryTypeName","src":"56388:7:19"}],"id":7791,"name":"VariableDeclaration","src":"56388:25:19"}],"id":7792,"name":"ParameterList","src":"56372:42:19"},{"children":[{"attributes":{"assignments":[7794],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":7846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7793,"name":"ElementaryTypeName","src":"56425:7:19"}],"id":7794,"name":"VariableDeclaration","src":"56425:9:19"}],"id":7795,"name":"VariableDeclarationStatement","src":"56425:9:19"},{"attributes":{"assignments":[7797],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":7846,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7796,"name":"ElementaryTypeName","src":"56444:7:19"}],"id":7797,"name":"VariableDeclaration","src":"56444:9:19"}],"id":7798,"name":"VariableDeclarationStatement","src":"56444:9:19"},{"attributes":{"assignments":[7800],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":7846,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7799,"name":"ElementaryTypeName","src":"56463:5:19"}],"id":7800,"name":"VariableDeclaration","src":"56463:7:19"}],"id":7801,"name":"VariableDeclarationStatement","src":"56463:7:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7786,"type":"bytes memory","value":"_sig"},"id":7802,"name":"Identifier","src":"56484:4:19"}],"id":7803,"name":"MemberAccess","src":"56484:11:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":7804,"name":"Literal","src":"56499:2:19"}],"id":7805,"name":"BinaryOperation","src":"56484:17:19"},{"children":[{"attributes":{"functionReturnParameters":7792},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(bool,address payable)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7806,"name":"Literal","src":"56525:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7807,"name":"ElementaryTypeNameExpression","src":"56532:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7808,"name":"Literal","src":"56540:1:19"}],"id":7809,"name":"FunctionCall","src":"56532:10:19"}],"id":7810,"name":"TupleExpression","src":"56524:19:19"}],"id":7811,"name":"Return","src":"56517:26:19"}],"id":7812,"name":"Block","src":"56503:51:19"}],"id":7813,"name":"IfStatement","src":"56480:74:19"},{"attributes":{"externalReferences":[{"r":{"declaration":7794,"isOffset":false,"isSlot":false,"src":"56760:1:19","valueSize":1}},{"_sig":{"declaration":7786,"isOffset":false,"isSlot":false,"src":"56775:4:19","valueSize":1}},{"v":{"declaration":7800,"isOffset":false,"isSlot":false,"src":"57072:1:19","valueSize":1}},{"s":{"declaration":7797,"isOffset":false,"isSlot":false,"src":"56798:1:19","valueSize":1}},{"_sig":{"declaration":7786,"isOffset":false,"isSlot":false,"src":"56813:4:19","valueSize":1}},{"_sig":{"declaration":7786,"isOffset":false,"isSlot":false,"src":"57095:4:19","valueSize":1}}],"operations":"{\n r := mload(add(_sig, 32))\n s := mload(add(_sig, 64))\n v := byte(0, mload(add(_sig, 96)))\n}"},"children":[],"id":7814,"name":"InlineAssembly","src":"56737:615:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7815,"name":"Identifier","src":"57667:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":7816,"name":"Literal","src":"57671:2:19"}],"id":7817,"name":"BinaryOperation","src":"57667:6:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7818,"name":"Identifier","src":"57689:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":7819,"name":"Literal","src":"57694:2:19"}],"id":7820,"name":"Assignment","src":"57689:7:19"}],"id":7821,"name":"ExpressionStatement","src":"57689:7:19"}],"id":7822,"name":"Block","src":"57675:32:19"}],"id":7823,"name":"IfStatement","src":"57663:44:19"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7824,"name":"Identifier","src":"57720:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":7825,"name":"Literal","src":"57725:2:19"}],"id":7826,"name":"BinaryOperation","src":"57720:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7827,"name":"Identifier","src":"57731:1:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":7828,"name":"Literal","src":"57736:2:19"}],"id":7829,"name":"BinaryOperation","src":"57731:7:19"}],"id":7830,"name":"BinaryOperation","src":"57720:18:19"},{"children":[{"attributes":{"functionReturnParameters":7792},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(bool,address payable)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7831,"name":"Literal","src":"57762:5:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7832,"name":"ElementaryTypeNameExpression","src":"57769:7:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7833,"name":"Literal","src":"57777:1:19"}],"id":7834,"name":"FunctionCall","src":"57769:10:19"}],"id":7835,"name":"TupleExpression","src":"57761:19:19"}],"id":7836,"name":"Return","src":"57754:26:19"}],"id":7837,"name":"Block","src":"57740:51:19"}],"id":7838,"name":"IfStatement","src":"57716:75:19"},{"attributes":{"functionReturnParameters":7792},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,address)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7782,"type":"function (bytes32,uint8,bytes32,bytes32) returns (bool,address)","value":"safer_ecrecover"},"id":7839,"name":"Identifier","src":"57807:15:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7784,"type":"bytes32","value":"_hash"},"id":7840,"name":"Identifier","src":"57823:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7800,"type":"uint8","value":"v"},"id":7841,"name":"Identifier","src":"57830:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7794,"type":"bytes32","value":"r"},"id":7842,"name":"Identifier","src":"57833:1:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7797,"type":"bytes32","value":"s"},"id":7843,"name":"Identifier","src":"57836:1:19"}],"id":7844,"name":"FunctionCall","src":"57807:31:19"}],"id":7845,"name":"Return","src":"57800:38:19"}],"id":7846,"name":"Block","src":"56415:1430:19"}],"id":7847,"name":"FunctionDefinition","src":"56301:1544:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeMemoryCleaner","scope":7853,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7848,"name":"ParameterList","src":"57877:2:19"},{"attributes":{"parameters":[null]},"children":[],"id":7849,"name":"ParameterList","src":"57894:0:19"},{"children":[{"attributes":{"externalReferences":[null],"operations":"{\n let fmem := mload(0x40)\n codecopy(fmem, codesize(), sub(msize(), fmem))\n}"},"children":[],"id":7850,"name":"InlineAssembly","src":"57904:111:19"}],"id":7851,"name":"Block","src":"57894:127:19"}],"id":7852,"name":"FunctionDefinition","src":"57851:170:19"}],"id":7853,"name":"ContractDefinition","src":"10894:47129:19"}],"id":7854,"name":"SourceUnit","src":"1116:56933:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[14156]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":12452,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[14156],"name":"strings","scope":14157},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":14156,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":12457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12453,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":12454,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":12457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12455,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":12456,"name":"VariableDeclaration","src":"2663:9:20"}],"id":12457,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":12497,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12458,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":12459,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":12497,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12460,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":12461,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":12497,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12462,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":12463,"name":"VariableDeclaration","src":"2722:8:20"}],"id":12464,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":12465,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12463,"type":"uint256","value":"len"},"id":12466,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12467,"name":"Literal","src":"2818:2:20"}],"id":12468,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12463,"type":"uint256","value":"len"},"id":12469,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12470,"name":"Literal","src":"2829:2:20"}],"id":12471,"name":"Assignment","src":"2822:9:20"}],"id":12472,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":12461,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":12459,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":12473,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12459,"type":"uint256","value":"dest"},"id":12474,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12475,"name":"Literal","src":"2933:2:20"}],"id":12476,"name":"Assignment","src":"2925:10:20"}],"id":12477,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12461,"type":"uint256","value":"src"},"id":12478,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12479,"name":"Literal","src":"2956:2:20"}],"id":12480,"name":"Assignment","src":"2949:9:20"}],"id":12481,"name":"ExpressionStatement","src":"2949:9:20"}],"id":12482,"name":"Block","src":"2833:136:20"}],"id":12483,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[12485]},"children":[{"attributes":{"constant":false,"name":"mask","scope":12496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12484,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":12485,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":12486,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12487,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12463,"type":"uint256","value":"len"},"id":12488,"name":"Identifier","src":"3036:3:20"}],"id":12489,"name":"BinaryOperation","src":"3031:8:20"}],"id":12490,"name":"TupleExpression","src":"3030:10:20"}],"id":12491,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12492,"name":"Literal","src":"3043:1:20"}],"id":12493,"name":"BinaryOperation","src":"3023:21:20"}],"id":12494,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":12461,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":12485,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":12459,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":12459,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":12485,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":12495,"name":"InlineAssembly","src":"3054:173:20"}],"id":12496,"name":"Block","src":"2745:488:20"}],"id":12497,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12517,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12498,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":12499,"name":"VariableDeclaration","src":"3450:18:20"}],"id":12500,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12517,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12501,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":12502,"name":"VariableDeclaration","src":"3493:12:20"}],"id":12503,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[12505],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":12516,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12504,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":12505,"name":"VariableDeclaration","src":"3517:8:20"}],"id":12506,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":12505,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":12499,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":12507,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":12503},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12457,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":12508,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":12509,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12499,"type":"string memory","value":"self"},"id":12510,"name":"Identifier","src":"3618:4:20"}],"id":12511,"name":"FunctionCall","src":"3612:11:20"}],"id":12512,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12505,"type":"uint256","value":"ptr"},"id":12513,"name":"Identifier","src":"3632:3:20"}],"id":12514,"name":"FunctionCall","src":"3606:30:20"}],"id":12515,"name":"Return","src":"3599:37:20"}],"id":12516,"name":"Block","src":"3507:136:20"}],"id":12517,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12643,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12518,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":12519,"name":"VariableDeclaration","src":"3852:12:20"}],"id":12520,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12521,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":12522,"name":"VariableDeclaration","src":"3889:4:20"}],"id":12523,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[12525],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":12642,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12524,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":12525,"name":"VariableDeclaration","src":"3905:8:20"}],"id":12526,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12527,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12528,"name":"Literal","src":"3935:1:20"}],"id":12529,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":12523},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12530,"name":"Literal","src":"3957:1:20"}],"id":12531,"name":"Return","src":"3950:8:20"}],"id":12532,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12533,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12534,"name":"Identifier","src":"3977:4:20"}],"id":12535,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":12536,"name":"Literal","src":"3985:34:20"}],"id":12537,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12538,"name":"Literal","src":"4023:1:20"}],"id":12539,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12540,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":12541,"name":"Literal","src":"4047:2:20"}],"id":12542,"name":"Assignment","src":"4040:9:20"}],"id":12543,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12544,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":12545,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12546,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12547,"name":"Identifier","src":"4083:4:20"}],"id":12548,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":12549,"name":"Literal","src":"4091:35:20"}],"id":12550,"name":"BinaryOperation","src":"4078:48:20"}],"id":12551,"name":"FunctionCall","src":"4070:57:20"}],"id":12552,"name":"Assignment","src":"4063:64:20"}],"id":12553,"name":"ExpressionStatement","src":"4063:64:20"}],"id":12554,"name":"Block","src":"4026:112:20"}],"id":12555,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12556,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12557,"name":"Identifier","src":"4156:4:20"}],"id":12558,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":12559,"name":"Literal","src":"4164:18:20"}],"id":12560,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12561,"name":"Literal","src":"4186:1:20"}],"id":12562,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12563,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":12564,"name":"Literal","src":"4210:1:20"}],"id":12565,"name":"Assignment","src":"4203:8:20"}],"id":12566,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12567,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":12568,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12569,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12570,"name":"Identifier","src":"4245:4:20"}],"id":12571,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":12572,"name":"Literal","src":"4253:19:20"}],"id":12573,"name":"BinaryOperation","src":"4240:32:20"}],"id":12574,"name":"FunctionCall","src":"4232:41:20"}],"id":12575,"name":"Assignment","src":"4225:48:20"}],"id":12576,"name":"ExpressionStatement","src":"4225:48:20"}],"id":12577,"name":"Block","src":"4189:95:20"}],"id":12578,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12579,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12580,"name":"Identifier","src":"4302:4:20"}],"id":12581,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":12582,"name":"Literal","src":"4310:10:20"}],"id":12583,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12584,"name":"Literal","src":"4324:1:20"}],"id":12585,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12586,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":12587,"name":"Literal","src":"4348:1:20"}],"id":12588,"name":"Assignment","src":"4341:8:20"}],"id":12589,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12590,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":12591,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12592,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12593,"name":"Identifier","src":"4383:4:20"}],"id":12594,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":12595,"name":"Literal","src":"4391:11:20"}],"id":12596,"name":"BinaryOperation","src":"4378:24:20"}],"id":12597,"name":"FunctionCall","src":"4370:33:20"}],"id":12598,"name":"Assignment","src":"4363:40:20"}],"id":12599,"name":"ExpressionStatement","src":"4363:40:20"}],"id":12600,"name":"Block","src":"4327:87:20"}],"id":12601,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12602,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12603,"name":"Identifier","src":"4432:4:20"}],"id":12604,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":12605,"name":"Literal","src":"4440:6:20"}],"id":12606,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12607,"name":"Literal","src":"4450:1:20"}],"id":12608,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12609,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":12610,"name":"Literal","src":"4474:1:20"}],"id":12611,"name":"Assignment","src":"4467:8:20"}],"id":12612,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12613,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":12614,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12615,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12616,"name":"Identifier","src":"4509:4:20"}],"id":12617,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":12618,"name":"Literal","src":"4517:7:20"}],"id":12619,"name":"BinaryOperation","src":"4504:20:20"}],"id":12620,"name":"FunctionCall","src":"4496:29:20"}],"id":12621,"name":"Assignment","src":"4489:36:20"}],"id":12622,"name":"ExpressionStatement","src":"4489:36:20"}],"id":12623,"name":"Block","src":"4453:83:20"}],"id":12624,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":12625,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12519,"type":"bytes32","value":"self"},"id":12626,"name":"Identifier","src":"4554:4:20"}],"id":12627,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":12628,"name":"Literal","src":"4562:4:20"}],"id":12629,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12630,"name":"Literal","src":"4570:1:20"}],"id":12631,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12632,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12633,"name":"Literal","src":"4594:1:20"}],"id":12634,"name":"Assignment","src":"4587:8:20"}],"id":12635,"name":"ExpressionStatement","src":"4587:8:20"}],"id":12636,"name":"Block","src":"4573:33:20"}],"id":12637,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":12523},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12638,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12525,"type":"uint256","value":"ret"},"id":12639,"name":"Identifier","src":"4627:3:20"}],"id":12640,"name":"BinaryOperation","src":"4622:8:20"}],"id":12641,"name":"Return","src":"4615:15:20"}],"id":12642,"name":"Block","src":"3895:742:20"}],"id":12643,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12660,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":12644,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":12645,"name":"VariableDeclaration","src":"4963:12:20"}],"id":12646,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":12660,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12647,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":12648,"name":"VariableDeclaration","src":"5000:16:20"}],"id":12649,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":12645,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":12648,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":12650,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12648,"type":"struct strings.slice memory","value":"ret"},"id":12651,"name":"Identifier","src":"5286:3:20"}],"id":12653,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[12643,12793],"referencedDeclaration":12643,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":12654,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12645,"type":"bytes32","value":"self"},"id":12655,"name":"Identifier","src":"5301:4:20"}],"id":12656,"name":"FunctionCall","src":"5297:9:20"}],"id":12657,"name":"Assignment","src":"5286:20:20"}],"id":12658,"name":"ExpressionStatement","src":"5286:20:20"}],"id":12659,"name":"Block","src":"5018:295:20"}],"id":12660,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12675,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12661,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":12662,"name":"VariableDeclaration","src":"5528:17:20"}],"id":12663,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12675,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12664,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":12665,"name":"VariableDeclaration","src":"5570:12:20"}],"id":12666,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":12666},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12457,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":12667,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12662,"type":"struct strings.slice memory","value":"self"},"id":12668,"name":"Identifier","src":"5607:4:20"}],"id":12669,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12662,"type":"struct strings.slice memory","value":"self"},"id":12670,"name":"Identifier","src":"5618:4:20"}],"id":12671,"name":"MemberAccess","src":"5618:9:20"}],"id":12672,"name":"FunctionCall","src":"5601:27:20"}],"id":12673,"name":"Return","src":"5594:34:20"}],"id":12674,"name":"Block","src":"5584:51:20"}],"id":12675,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12705,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12676,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":12677,"name":"VariableDeclaration","src":"5825:17:20"}],"id":12678,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12705,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12679,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":12680,"name":"VariableDeclaration","src":"5867:13:20"}],"id":12681,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[12683]},"children":[{"attributes":{"constant":false,"name":"ret","scope":12704,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":12682,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":12683,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":12684,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":12685,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12677,"type":"struct strings.slice memory","value":"self"},"id":12686,"name":"Identifier","src":"5923:4:20"}],"id":12687,"name":"MemberAccess","src":"5923:9:20"}],"id":12688,"name":"FunctionCall","src":"5912:21:20"}],"id":12689,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[12691],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":12704,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12690,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":12691,"name":"VariableDeclaration","src":"5943:11:20"}],"id":12692,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":12691,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":12683,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":12693,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":12694,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12691,"type":"uint256","value":"retptr"},"id":12695,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12677,"type":"struct strings.slice memory","value":"self"},"id":12696,"name":"Identifier","src":"6024:4:20"}],"id":12697,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12677,"type":"struct strings.slice memory","value":"self"},"id":12698,"name":"Identifier","src":"6035:4:20"}],"id":12699,"name":"MemberAccess","src":"6035:9:20"}],"id":12700,"name":"FunctionCall","src":"6009:36:20"}],"id":12701,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":12681},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12683,"type":"string memory","value":"ret"},"id":12702,"name":"Identifier","src":"6062:3:20"}],"id":12703,"name":"Return","src":"6055:10:20"}],"id":12704,"name":"Block","src":"5882:190:20"}],"id":12705,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12793,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12706,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":12707,"name":"VariableDeclaration","src":"6476:17:20"}],"id":12708,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":12793,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12709,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":12710,"name":"VariableDeclaration","src":"6518:6:20"}],"id":12711,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[12713]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":12792,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12712,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":12713,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12707,"type":"struct strings.slice memory","value":"self"},"id":12714,"name":"Identifier","src":"6622:4:20"}],"id":12715,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":12716,"name":"Literal","src":"6634:2:20"}],"id":12717,"name":"BinaryOperation","src":"6622:14:20"}],"id":12718,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[12720]},"children":[{"attributes":{"constant":false,"name":"end","scope":12792,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12719,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":12720,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12721,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12707,"type":"struct strings.slice memory","value":"self"},"id":12722,"name":"Identifier","src":"6663:4:20"}],"id":12723,"name":"MemberAccess","src":"6663:9:20"}],"id":12724,"name":"BinaryOperation","src":"6657:15:20"}],"id":12725,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12710,"type":"uint256","value":"l"},"id":12726,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12727,"name":"Literal","src":"6691:1:20"}],"id":12728,"name":"Assignment","src":"6687:5:20"}],"id":12729,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12730,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12720,"type":"uint256","value":"end"},"id":12731,"name":"Identifier","src":"6700:3:20"}],"id":12732,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12710,"type":"uint256","value":"l"},"id":12733,"name":"Identifier","src":"6705:1:20"}],"id":12734,"name":"UnaryOperation","src":"6705:3:20"}],"id":12735,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[12737],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":12790,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":12736,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":12737,"name":"VariableDeclaration","src":"6724:7:20"}],"id":12738,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":12737,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":12713,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":12739,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12740,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":12741,"name":"Literal","src":"6805:4:20"}],"id":12742,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12743,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12744,"name":"Literal","src":"6836:1:20"}],"id":12745,"name":"Assignment","src":"6829:8:20"}],"id":12746,"name":"ExpressionStatement","src":"6829:8:20"}],"id":12747,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12748,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":12749,"name":"Literal","src":"6866:4:20"}],"id":12750,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12751,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":12752,"name":"Literal","src":"6897:1:20"}],"id":12753,"name":"Assignment","src":"6890:8:20"}],"id":12754,"name":"ExpressionStatement","src":"6890:8:20"}],"id":12755,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12756,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":12757,"name":"Literal","src":"6927:4:20"}],"id":12758,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12759,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":12760,"name":"Literal","src":"6958:1:20"}],"id":12761,"name":"Assignment","src":"6951:8:20"}],"id":12762,"name":"ExpressionStatement","src":"6951:8:20"}],"id":12763,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12764,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":12765,"name":"Literal","src":"6988:4:20"}],"id":12766,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12767,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":12768,"name":"Literal","src":"7019:1:20"}],"id":12769,"name":"Assignment","src":"7012:8:20"}],"id":12770,"name":"ExpressionStatement","src":"7012:8:20"}],"id":12771,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12737,"type":"uint8","value":"b"},"id":12772,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":12773,"name":"Literal","src":"7049:4:20"}],"id":12774,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12775,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":12776,"name":"Literal","src":"7080:1:20"}],"id":12777,"name":"Assignment","src":"7073:8:20"}],"id":12778,"name":"ExpressionStatement","src":"7073:8:20"}],"id":12779,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12713,"type":"uint256","value":"ptr"},"id":12780,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":12781,"name":"Literal","src":"7127:1:20"}],"id":12782,"name":"Assignment","src":"7120:8:20"}],"id":12783,"name":"ExpressionStatement","src":"7120:8:20"}],"id":12784,"name":"Block","src":"7102:41:20"}],"id":12785,"name":"IfStatement","src":"7041:102:20"}],"id":12786,"name":"IfStatement","src":"6980:163:20"}],"id":12787,"name":"IfStatement","src":"6919:224:20"}],"id":12788,"name":"IfStatement","src":"6858:285:20"}],"id":12789,"name":"IfStatement","src":"6797:346:20"}],"id":12790,"name":"Block","src":"6710:443:20"}],"id":12791,"name":"ForStatement","src":"6682:471:20"}],"id":12792,"name":"Block","src":"6526:633:20"}],"id":12793,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12806,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12794,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":12795,"name":"VariableDeclaration","src":"7367:17:20"}],"id":12796,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12806,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12797,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":12798,"name":"VariableDeclaration","src":"7409:4:20"}],"id":12799,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":12799},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12795,"type":"struct strings.slice memory","value":"self"},"id":12800,"name":"Identifier","src":"7432:4:20"}],"id":12801,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12802,"name":"Literal","src":"7445:1:20"}],"id":12803,"name":"BinaryOperation","src":"7432:14:20"}],"id":12804,"name":"Return","src":"7425:21:20"}],"id":12805,"name":"Block","src":"7415:38:20"}],"id":12806,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12935,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12807,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":12808,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":12935,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12809,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":12810,"name":"VariableDeclaration","src":"7917:18:20"}],"id":12811,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12935,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":12812,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":12813,"name":"VariableDeclaration","src":"7960:3:20"}],"id":12814,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[12816]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":12934,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12815,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":12816,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12808,"type":"struct strings.slice memory","value":"self"},"id":12817,"name":"Identifier","src":"7991:4:20"}],"id":12818,"name":"MemberAccess","src":"7991:9:20"}],"id":12819,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12810,"type":"struct strings.slice memory","value":"other"},"id":12820,"name":"Identifier","src":"8014:5:20"}],"id":12821,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12808,"type":"struct strings.slice memory","value":"self"},"id":12822,"name":"Identifier","src":"8027:4:20"}],"id":12823,"name":"MemberAccess","src":"8027:9:20"}],"id":12824,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12816,"type":"uint256","value":"shortest"},"id":12825,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12810,"type":"struct strings.slice memory","value":"other"},"id":12826,"name":"Identifier","src":"8061:5:20"}],"id":12827,"name":"MemberAccess","src":"8061:10:20"}],"id":12828,"name":"Assignment","src":"8050:21:20"}],"id":12829,"name":"ExpressionStatement","src":"8050:21:20"}],"id":12830,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[12832]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":12934,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12831,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":12832,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12808,"type":"struct strings.slice memory","value":"self"},"id":12833,"name":"Identifier","src":"8097:4:20"}],"id":12834,"name":"MemberAccess","src":"8097:9:20"}],"id":12835,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[12837]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":12934,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12836,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":12837,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12810,"type":"struct strings.slice memory","value":"other"},"id":12838,"name":"Identifier","src":"8132:5:20"}],"id":12839,"name":"MemberAccess","src":"8132:10:20"}],"id":12840,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[12842]},"children":[{"attributes":{"constant":false,"name":"idx","scope":12923,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12841,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":12842,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12843,"name":"Literal","src":"8168:1:20"}],"id":12844,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12842,"type":"uint256","value":"idx"},"id":12845,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12816,"type":"uint256","value":"shortest"},"id":12846,"name":"Identifier","src":"8177:8:20"}],"id":12847,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12842,"type":"uint256","value":"idx"},"id":12848,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12849,"name":"Literal","src":"8194:2:20"}],"id":12850,"name":"Assignment","src":"8187:9:20"}],"id":12851,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[12853],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":12922,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12852,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":12853,"name":"VariableDeclaration","src":"8212:6:20"}],"id":12854,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[12856],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":12922,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12855,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":12856,"name":"VariableDeclaration","src":"8232:6:20"}],"id":12857,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":12853,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":12832,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":12856,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":12837,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":12858,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12853,"type":"uint256","value":"a"},"id":12859,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12856,"type":"uint256","value":"b"},"id":12860,"name":"Identifier","src":"8371:1:20"}],"id":12861,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[12863]},"children":[{"attributes":{"constant":false,"name":"mask","scope":12912,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":12862,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":12863,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":12864,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12865,"name":"Literal","src":"8477:1:20"}],"id":12866,"name":"UnaryOperation","src":"8476:2:20"}],"id":12867,"name":"FunctionCall","src":"8468:11:20"}],"id":12868,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12816,"type":"uint256","value":"shortest"},"id":12869,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12870,"name":"Literal","src":"8525:2:20"}],"id":12871,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12863,"type":"uint256","value":"mask"},"id":12872,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":12873,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":12874,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12875,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12816,"type":"uint256","value":"shortest"},"id":12876,"name":"Identifier","src":"8576:8:20"}],"id":12877,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12842,"type":"uint256","value":"idx"},"id":12878,"name":"Identifier","src":"8587:3:20"}],"id":12879,"name":"BinaryOperation","src":"8571:19:20"}],"id":12880,"name":"TupleExpression","src":"8570:21:20"}],"id":12881,"name":"BinaryOperation","src":"8566:25:20"}],"id":12882,"name":"TupleExpression","src":"8565:27:20"}],"id":12883,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12884,"name":"Literal","src":"8595:1:20"}],"id":12885,"name":"BinaryOperation","src":"8560:36:20"}],"id":12886,"name":"TupleExpression","src":"8559:38:20"}],"id":12887,"name":"UnaryOperation","src":"8558:39:20"}],"id":12888,"name":"Assignment","src":"8551:46:20"}],"id":12889,"name":"ExpressionStatement","src":"8551:46:20"}],"id":12890,"name":"Block","src":"8529:87:20"}],"id":12891,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[12893]},"children":[{"attributes":{"constant":false,"name":"diff","scope":12912,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":12892,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":12893,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12853,"type":"uint256","value":"a"},"id":12894,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12863,"type":"uint256","value":"mask"},"id":12895,"name":"Identifier","src":"8653:4:20"}],"id":12896,"name":"BinaryOperation","src":"8649:8:20"}],"id":12897,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12856,"type":"uint256","value":"b"},"id":12898,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12863,"type":"uint256","value":"mask"},"id":12899,"name":"Identifier","src":"8666:4:20"}],"id":12900,"name":"BinaryOperation","src":"8662:8:20"}],"id":12901,"name":"TupleExpression","src":"8661:10:20"}],"id":12902,"name":"BinaryOperation","src":"8648:23:20"}],"id":12903,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12893,"type":"uint256","value":"diff"},"id":12904,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12905,"name":"Literal","src":"8701:1:20"}],"id":12906,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":12814},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":12907,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12893,"type":"uint256","value":"diff"},"id":12908,"name":"Identifier","src":"8735:4:20"}],"id":12909,"name":"FunctionCall","src":"8731:9:20"}],"id":12910,"name":"Return","src":"8724:16:20"}],"id":12911,"name":"IfStatement","src":"8689:51:20"}],"id":12912,"name":"Block","src":"8374:381:20"}],"id":12913,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12832,"type":"uint256","value":"selfptr"},"id":12914,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12915,"name":"Literal","src":"8779:2:20"}],"id":12916,"name":"Assignment","src":"8768:13:20"}],"id":12917,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12837,"type":"uint256","value":"otherptr"},"id":12918,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":12919,"name":"Literal","src":"8807:2:20"}],"id":12920,"name":"Assignment","src":"8795:14:20"}],"id":12921,"name":"ExpressionStatement","src":"8795:14:20"}],"id":12922,"name":"Block","src":"8198:622:20"}],"id":12923,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":12814},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":12924,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12808,"type":"struct strings.slice memory","value":"self"},"id":12925,"name":"Identifier","src":"8840:4:20"}],"id":12926,"name":"MemberAccess","src":"8840:9:20"}],"id":12927,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":12928,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12810,"type":"struct strings.slice memory","value":"other"},"id":12929,"name":"Identifier","src":"8857:5:20"}],"id":12930,"name":"MemberAccess","src":"8857:10:20"}],"id":12931,"name":"FunctionCall","src":"8853:15:20"}],"id":12932,"name":"BinaryOperation","src":"8836:32:20"}],"id":12933,"name":"Return","src":"8829:39:20"}],"id":12934,"name":"Block","src":"7965:910:20"}],"id":12935,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":12952,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12936,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":12937,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":12952,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12938,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":12939,"name":"VariableDeclaration","src":"9154:18:20"}],"id":12940,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":12952,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":12941,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":12942,"name":"VariableDeclaration","src":"9197:4:20"}],"id":12943,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":12943},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":12935,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":12944,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12937,"type":"struct strings.slice memory","value":"self"},"id":12945,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12939,"type":"struct strings.slice memory","value":"other"},"id":12946,"name":"Identifier","src":"9234:5:20"}],"id":12947,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12948,"name":"Literal","src":"9244:1:20"}],"id":12949,"name":"BinaryOperation","src":"9220:25:20"}],"id":12950,"name":"Return","src":"9213:32:20"}],"id":12951,"name":"Block","src":"9203:49:20"}],"id":12952,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13070,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12953,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":12954,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":13070,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12955,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":12956,"name":"VariableDeclaration","src":"9582:17:20"}],"id":12957,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13070,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":12958,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":12959,"name":"VariableDeclaration","src":"9624:12:20"}],"id":12960,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":12961,"name":"Identifier","src":"9648:4:20"}],"id":12963,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":12964,"name":"Identifier","src":"9660:4:20"}],"id":12965,"name":"MemberAccess","src":"9660:9:20"}],"id":12966,"name":"Assignment","src":"9648:21:20"}],"id":12967,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":12968,"name":"Identifier","src":"9684:4:20"}],"id":12969,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12970,"name":"Literal","src":"9697:1:20"}],"id":12971,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":12972,"name":"Identifier","src":"9714:4:20"}],"id":12974,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":12975,"name":"Literal","src":"9726:1:20"}],"id":12976,"name":"Assignment","src":"9714:13:20"}],"id":12977,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":12960},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":12978,"name":"Identifier","src":"9748:4:20"}],"id":12979,"name":"Return","src":"9741:11:20"}],"id":12980,"name":"Block","src":"9700:63:20"}],"id":12981,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[12983],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":13069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12982,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":12983,"name":"VariableDeclaration","src":"9773:6:20"}],"id":12984,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[12986],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":13069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":12985,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":12986,"name":"VariableDeclaration","src":"9789:6:20"}],"id":12987,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":12986,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":12954,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":12988,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12986,"type":"uint256","value":"b"},"id":12989,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":12990,"name":"Literal","src":"9949:4:20"}],"id":12991,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":12992,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":12993,"name":"Literal","src":"9973:1:20"}],"id":12994,"name":"Assignment","src":"9969:5:20"}],"id":12995,"name":"ExpressionStatement","src":"9969:5:20"}],"id":12996,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12986,"type":"uint256","value":"b"},"id":12997,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":12998,"name":"Literal","src":"9999:4:20"}],"id":12999,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13000,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13001,"name":"Literal","src":"10023:1:20"}],"id":13002,"name":"Assignment","src":"10019:5:20"}],"id":13003,"name":"ExpressionStatement","src":"10019:5:20"}],"id":13004,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12986,"type":"uint256","value":"b"},"id":13005,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":13006,"name":"Literal","src":"10049:4:20"}],"id":13007,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13008,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":13009,"name":"Literal","src":"10073:1:20"}],"id":13010,"name":"Assignment","src":"10069:5:20"}],"id":13011,"name":"ExpressionStatement","src":"10069:5:20"}],"id":13012,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13013,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":13014,"name":"Literal","src":"10109:1:20"}],"id":13015,"name":"Assignment","src":"10105:5:20"}],"id":13016,"name":"ExpressionStatement","src":"10105:5:20"}],"id":13017,"name":"Block","src":"10091:30:20"}],"id":13018,"name":"IfStatement","src":"10041:80:20"}],"id":13019,"name":"IfStatement","src":"9991:130:20"}],"id":13020,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13021,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13022,"name":"Identifier","src":"10181:4:20"}],"id":13023,"name":"MemberAccess","src":"10181:9:20"}],"id":13024,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":13025,"name":"Identifier","src":"10206:4:20"}],"id":13027,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13028,"name":"Identifier","src":"10218:4:20"}],"id":13029,"name":"MemberAccess","src":"10218:9:20"}],"id":13030,"name":"Assignment","src":"10206:21:20"}],"id":13031,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13032,"name":"Identifier","src":"10241:4:20"}],"id":13034,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13035,"name":"Identifier","src":"10254:4:20"}],"id":13036,"name":"MemberAccess","src":"10254:9:20"}],"id":13037,"name":"Assignment","src":"10241:22:20"}],"id":13038,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13039,"name":"Identifier","src":"10277:4:20"}],"id":13041,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13042,"name":"Literal","src":"10289:1:20"}],"id":13043,"name":"Assignment","src":"10277:13:20"}],"id":13044,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":12960},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":13045,"name":"Identifier","src":"10311:4:20"}],"id":13046,"name":"Return","src":"10304:11:20"}],"id":13047,"name":"Block","src":"10192:134:20"}],"id":13048,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13049,"name":"Identifier","src":"10336:4:20"}],"id":13051,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13052,"name":"Identifier","src":"10349:1:20"}],"id":13053,"name":"Assignment","src":"10336:14:20"}],"id":13054,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12954,"type":"struct strings.slice memory","value":"self"},"id":13055,"name":"Identifier","src":"10360:4:20"}],"id":13057,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13058,"name":"Identifier","src":"10373:1:20"}],"id":13059,"name":"Assignment","src":"10360:14:20"}],"id":13060,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":13061,"name":"Identifier","src":"10384:4:20"}],"id":13063,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12983,"type":"uint256","value":"l"},"id":13064,"name":"Identifier","src":"10396:1:20"}],"id":13065,"name":"Assignment","src":"10384:13:20"}],"id":13066,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":12960},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":12956,"type":"struct strings.slice memory","value":"rune"},"id":13067,"name":"Identifier","src":"10414:4:20"}],"id":13068,"name":"Return","src":"10407:11:20"}],"id":13069,"name":"Block","src":"9638:787:20"}],"id":13070,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13083,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13071,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":13072,"name":"VariableDeclaration","src":"10683:17:20"}],"id":13073,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":13083,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13074,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":13075,"name":"VariableDeclaration","src":"10725:16:20"}],"id":13076,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[13070,13083],"referencedDeclaration":13070,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":13077,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13072,"type":"struct strings.slice memory","value":"self"},"id":13078,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13075,"type":"struct strings.slice memory","value":"ret"},"id":13079,"name":"Identifier","src":"10768:3:20"}],"id":13080,"name":"FunctionCall","src":"10753:19:20"}],"id":13081,"name":"ExpressionStatement","src":"10753:19:20"}],"id":13082,"name":"Block","src":"10743:36:20"}],"id":13083,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13230,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13084,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":13085,"name":"VariableDeclaration","src":"10988:17:20"}],"id":13086,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":13230,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13087,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":13088,"name":"VariableDeclaration","src":"11030:8:20"}],"id":13089,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13085,"type":"struct strings.slice memory","value":"self"},"id":13090,"name":"Identifier","src":"11054:4:20"}],"id":13091,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13092,"name":"Literal","src":"11067:1:20"}],"id":13093,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":13089},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13094,"name":"Literal","src":"11091:1:20"}],"id":13095,"name":"Return","src":"11084:8:20"}],"id":13096,"name":"Block","src":"11070:33:20"}],"id":13097,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[13099],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":13229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13098,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":13099,"name":"VariableDeclaration","src":"11113:9:20"}],"id":13100,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[13102],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":13229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13101,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":13102,"name":"VariableDeclaration","src":"11132:11:20"}],"id":13103,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[13105]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":13229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13104,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":13105,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13106,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":13107,"name":"Literal","src":"11173:3:20"}],"id":13108,"name":"BinaryOperation","src":"11168:8:20"}],"id":13109,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":13099,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":13085,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":13110,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[13112]},"children":[{"attributes":{"constant":false,"name":"b","scope":13229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13111,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":13112,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13099,"type":"uint256","value":"word"},"id":13113,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13105,"type":"uint256","value":"divisor"},"id":13114,"name":"Identifier","src":"11303:7:20"}],"id":13115,"name":"BinaryOperation","src":"11296:14:20"}],"id":13116,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13117,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":13118,"name":"Literal","src":"11328:4:20"}],"id":13119,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13120,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13121,"name":"Identifier","src":"11354:1:20"}],"id":13122,"name":"Assignment","src":"11348:7:20"}],"id":13123,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13124,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13125,"name":"Literal","src":"11378:1:20"}],"id":13126,"name":"Assignment","src":"11369:10:20"}],"id":13127,"name":"ExpressionStatement","src":"11369:10:20"}],"id":13128,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13129,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":13130,"name":"Literal","src":"11404:4:20"}],"id":13131,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13132,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13133,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":13134,"name":"Literal","src":"11434:4:20"}],"id":13135,"name":"BinaryOperation","src":"11430:8:20"}],"id":13136,"name":"Assignment","src":"11424:14:20"}],"id":13137,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13138,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13139,"name":"Literal","src":"11461:1:20"}],"id":13140,"name":"Assignment","src":"11452:10:20"}],"id":13141,"name":"ExpressionStatement","src":"11452:10:20"}],"id":13142,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13143,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":13144,"name":"Literal","src":"11487:4:20"}],"id":13145,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13146,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13147,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":13148,"name":"Literal","src":"11517:4:20"}],"id":13149,"name":"BinaryOperation","src":"11513:8:20"}],"id":13150,"name":"Assignment","src":"11507:14:20"}],"id":13151,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13152,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":13153,"name":"Literal","src":"11544:1:20"}],"id":13154,"name":"Assignment","src":"11535:10:20"}],"id":13155,"name":"ExpressionStatement","src":"11535:10:20"}],"id":13156,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13157,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13158,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":13159,"name":"Literal","src":"11586:4:20"}],"id":13160,"name":"BinaryOperation","src":"11582:8:20"}],"id":13161,"name":"Assignment","src":"11576:14:20"}],"id":13162,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13163,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":13164,"name":"Literal","src":"11613:1:20"}],"id":13165,"name":"Assignment","src":"11604:10:20"}],"id":13166,"name":"ExpressionStatement","src":"11604:10:20"}],"id":13167,"name":"Block","src":"11562:63:20"}],"id":13168,"name":"IfStatement","src":"11479:146:20"}],"id":13169,"name":"IfStatement","src":"11396:229:20"}],"id":13170,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13171,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13085,"type":"struct strings.slice memory","value":"self"},"id":13172,"name":"Identifier","src":"11690:4:20"}],"id":13173,"name":"MemberAccess","src":"11690:9:20"}],"id":13174,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":13089},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13175,"name":"Literal","src":"11722:1:20"}],"id":13176,"name":"Return","src":"11715:8:20"}],"id":13177,"name":"Block","src":"11701:33:20"}],"id":13178,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[13180]},"children":[{"attributes":{"constant":false,"name":"i","scope":13226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13179,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":13180,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13181,"name":"Literal","src":"11758:1:20"}],"id":13182,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13180,"type":"uint256","value":"i"},"id":13183,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13102,"type":"uint256","value":"length"},"id":13184,"name":"Identifier","src":"11765:6:20"}],"id":13185,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13180,"type":"uint256","value":"i"},"id":13186,"name":"Identifier","src":"11773:1:20"}],"id":13187,"name":"UnaryOperation","src":"11773:3:20"}],"id":13188,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13105,"type":"uint256","value":"divisor"},"id":13189,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13105,"type":"uint256","value":"divisor"},"id":13190,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":13191,"name":"Literal","src":"11812:3:20"}],"id":13192,"name":"BinaryOperation","src":"11802:13:20"}],"id":13193,"name":"Assignment","src":"11792:23:20"}],"id":13194,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13195,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13099,"type":"uint256","value":"word"},"id":13196,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13105,"type":"uint256","value":"divisor"},"id":13197,"name":"Identifier","src":"11841:7:20"}],"id":13198,"name":"BinaryOperation","src":"11834:14:20"}],"id":13199,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":13200,"name":"Literal","src":"11852:4:20"}],"id":13201,"name":"BinaryOperation","src":"11833:23:20"}],"id":13202,"name":"Assignment","src":"11829:27:20"}],"id":13203,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13204,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":13205,"name":"Literal","src":"11878:4:20"}],"id":13206,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":13207,"name":"Literal","src":"11886:4:20"}],"id":13208,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":13089},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13209,"name":"Literal","src":"11959:1:20"}],"id":13210,"name":"Return","src":"11952:8:20"}],"id":13211,"name":"Block","src":"11892:83:20"}],"id":13212,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13213,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13214,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":13215,"name":"Literal","src":"12001:2:20"}],"id":13216,"name":"BinaryOperation","src":"11995:8:20"}],"id":13217,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13112,"type":"uint256","value":"b"},"id":13218,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":13219,"name":"Literal","src":"12012:4:20"}],"id":13220,"name":"BinaryOperation","src":"12008:8:20"}],"id":13221,"name":"TupleExpression","src":"12007:10:20"}],"id":13222,"name":"BinaryOperation","src":"11994:23:20"}],"id":13223,"name":"Assignment","src":"11988:29:20"}],"id":13224,"name":"ExpressionStatement","src":"11988:29:20"}],"id":13225,"name":"Block","src":"11778:250:20"}],"id":13226,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":13089},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13088,"type":"uint256","value":"ret"},"id":13227,"name":"Identifier","src":"12045:3:20"}],"id":13228,"name":"Return","src":"12038:10:20"}],"id":13229,"name":"Block","src":"11040:1015:20"}],"id":13230,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13239,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13231,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":13232,"name":"VariableDeclaration","src":"12222:17:20"}],"id":13233,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":13239,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13234,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":13235,"name":"VariableDeclaration","src":"12264:11:20"}],"id":13236,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":13235,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":13232,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":13232,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":13237,"name":"InlineAssembly","src":"12287:84:20"}],"id":13238,"name":"Block","src":"12277:100:20"}],"id":13239,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13240,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":13241,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13273,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13242,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":13243,"name":"VariableDeclaration","src":"12665:19:20"}],"id":13244,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13273,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13245,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":13246,"name":"VariableDeclaration","src":"12709:4:20"}],"id":13247,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13241,"type":"struct strings.slice memory","value":"self"},"id":13248,"name":"Identifier","src":"12729:4:20"}],"id":13249,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13243,"type":"struct strings.slice memory","value":"needle"},"id":13250,"name":"Identifier","src":"12741:6:20"}],"id":13251,"name":"MemberAccess","src":"12741:11:20"}],"id":13252,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":13247},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":13253,"name":"Literal","src":"12775:5:20"}],"id":13254,"name":"Return","src":"12768:12:20"}],"id":13255,"name":"Block","src":"12754:37:20"}],"id":13256,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13241,"type":"struct strings.slice memory","value":"self"},"id":13257,"name":"Identifier","src":"12805:4:20"}],"id":13258,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13243,"type":"struct strings.slice memory","value":"needle"},"id":13259,"name":"Identifier","src":"12818:6:20"}],"id":13260,"name":"MemberAccess","src":"12818:11:20"}],"id":13261,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":13247},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":13262,"name":"Literal","src":"12852:4:20"}],"id":13263,"name":"Return","src":"12845:11:20"}],"id":13264,"name":"Block","src":"12831:36:20"}],"id":13265,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[13267],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":13272,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13266,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":13267,"name":"VariableDeclaration","src":"12877:10:20"}],"id":13268,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":13243,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":13241,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":13267,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":13243,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":13269,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":13247},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13267,"type":"bool","value":"equal"},"id":13270,"name":"Identifier","src":"13159:5:20"}],"id":13271,"name":"Return","src":"13152:12:20"}],"id":13272,"name":"Block","src":"12715:456:20"}],"id":13273,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13323,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13274,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":13275,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13323,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13276,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":13277,"name":"VariableDeclaration","src":"13478:19:20"}],"id":13278,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13323,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13279,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":13280,"name":"VariableDeclaration","src":"13522:12:20"}],"id":13281,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13282,"name":"Identifier","src":"13550:4:20"}],"id":13283,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13277,"type":"struct strings.slice memory","value":"needle"},"id":13284,"name":"Identifier","src":"13562:6:20"}],"id":13285,"name":"MemberAccess","src":"13562:11:20"}],"id":13286,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":13281},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13287,"name":"Identifier","src":"13596:4:20"}],"id":13288,"name":"Return","src":"13589:11:20"}],"id":13289,"name":"Block","src":"13575:36:20"}],"id":13290,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[13292]},"children":[{"attributes":{"constant":false,"name":"equal","scope":13322,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13291,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":13292,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":13293,"name":"Literal","src":"13634:4:20"}],"id":13294,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13295,"name":"Identifier","src":"13652:4:20"}],"id":13296,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13277,"type":"struct strings.slice memory","value":"needle"},"id":13297,"name":"Identifier","src":"13665:6:20"}],"id":13298,"name":"MemberAccess","src":"13665:11:20"}],"id":13299,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":13277,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":13275,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"needle":{"declaration":13277,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}},{"equal":{"declaration":13292,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":13300,"name":"InlineAssembly","src":"13692:266:20"}],"id":13301,"name":"Block","src":"13678:290:20"}],"id":13302,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13292,"type":"bool","value":"equal"},"id":13303,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13304,"name":"Identifier","src":"14003:4:20"}],"id":13306,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13277,"type":"struct strings.slice memory","value":"needle"},"id":13307,"name":"Identifier","src":"14016:6:20"}],"id":13308,"name":"MemberAccess","src":"14016:11:20"}],"id":13309,"name":"Assignment","src":"14003:24:20"}],"id":13310,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13311,"name":"Identifier","src":"14041:4:20"}],"id":13313,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13277,"type":"struct strings.slice memory","value":"needle"},"id":13314,"name":"Identifier","src":"14054:6:20"}],"id":13315,"name":"MemberAccess","src":"14054:11:20"}],"id":13316,"name":"Assignment","src":"14041:24:20"}],"id":13317,"name":"ExpressionStatement","src":"14041:24:20"}],"id":13318,"name":"Block","src":"13989:87:20"}],"id":13319,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":13281},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13275,"type":"struct strings.slice memory","value":"self"},"id":13320,"name":"Identifier","src":"14093:4:20"}],"id":13321,"name":"Return","src":"14086:11:20"}],"id":13322,"name":"Block","src":"13536:568:20"}],"id":13323,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13367,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13324,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":13325,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13367,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13326,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":13327,"name":"VariableDeclaration","src":"14391:19:20"}],"id":13328,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13367,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13329,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":13330,"name":"VariableDeclaration","src":"14435:4:20"}],"id":13331,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13325,"type":"struct strings.slice memory","value":"self"},"id":13332,"name":"Identifier","src":"14455:4:20"}],"id":13333,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13327,"type":"struct strings.slice memory","value":"needle"},"id":13334,"name":"Identifier","src":"14467:6:20"}],"id":13335,"name":"MemberAccess","src":"14467:11:20"}],"id":13336,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":13331},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":13337,"name":"Literal","src":"14501:5:20"}],"id":13338,"name":"Return","src":"14494:12:20"}],"id":13339,"name":"Block","src":"14480:37:20"}],"id":13340,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[13342]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":13366,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13341,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":13342,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13325,"type":"struct strings.slice memory","value":"self"},"id":13343,"name":"Identifier","src":"14542:4:20"}],"id":13344,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13325,"type":"struct strings.slice memory","value":"self"},"id":13345,"name":"Identifier","src":"14554:4:20"}],"id":13346,"name":"MemberAccess","src":"14554:9:20"}],"id":13347,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13327,"type":"struct strings.slice memory","value":"needle"},"id":13348,"name":"Identifier","src":"14566:6:20"}],"id":13349,"name":"MemberAccess","src":"14566:11:20"}],"id":13350,"name":"BinaryOperation","src":"14542:35:20"}],"id":13351,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13342,"type":"uint256","value":"selfptr"},"id":13352,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13327,"type":"struct strings.slice memory","value":"needle"},"id":13353,"name":"Identifier","src":"14603:6:20"}],"id":13354,"name":"MemberAccess","src":"14603:11:20"}],"id":13355,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":13331},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":13356,"name":"Literal","src":"14637:4:20"}],"id":13357,"name":"Return","src":"14630:11:20"}],"id":13358,"name":"Block","src":"14616:36:20"}],"id":13359,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[13361],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":13366,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13360,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":13361,"name":"VariableDeclaration","src":"14662:10:20"}],"id":13362,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":13327,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":13361,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":13327,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":13342,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":13363,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":13331},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13361,"type":"bool","value":"equal"},"id":13364,"name":"Identifier","src":"14895:5:20"}],"id":13365,"name":"Return","src":"14888:12:20"}],"id":13366,"name":"Block","src":"14441:466:20"}],"id":13367,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13420,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13368,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":13369,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13420,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13370,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":13371,"name":"VariableDeclaration","src":"15205:19:20"}],"id":13372,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13420,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13373,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":13374,"name":"VariableDeclaration","src":"15249:12:20"}],"id":13375,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13376,"name":"Identifier","src":"15277:4:20"}],"id":13377,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13371,"type":"struct strings.slice memory","value":"needle"},"id":13378,"name":"Identifier","src":"15289:6:20"}],"id":13379,"name":"MemberAccess","src":"15289:11:20"}],"id":13380,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":13375},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13381,"name":"Identifier","src":"15323:4:20"}],"id":13382,"name":"Return","src":"15316:11:20"}],"id":13383,"name":"Block","src":"15302:36:20"}],"id":13384,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[13386]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":13419,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13385,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":13386,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13387,"name":"Identifier","src":"15363:4:20"}],"id":13388,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13389,"name":"Identifier","src":"15375:4:20"}],"id":13390,"name":"MemberAccess","src":"15375:9:20"}],"id":13391,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13371,"type":"struct strings.slice memory","value":"needle"},"id":13392,"name":"Identifier","src":"15387:6:20"}],"id":13393,"name":"MemberAccess","src":"15387:11:20"}],"id":13394,"name":"BinaryOperation","src":"15363:35:20"}],"id":13395,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[13397]},"children":[{"attributes":{"constant":false,"name":"equal","scope":13419,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13396,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":13397,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":13398,"name":"Literal","src":"15421:4:20"}],"id":13399,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13386,"type":"uint256","value":"selfptr"},"id":13400,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13371,"type":"struct strings.slice memory","value":"needle"},"id":13401,"name":"Identifier","src":"15450:6:20"}],"id":13402,"name":"MemberAccess","src":"15450:11:20"}],"id":13403,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":13371,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":13397,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":13371,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":13386,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":13404,"name":"InlineAssembly","src":"15477:212:20"}],"id":13405,"name":"Block","src":"15463:236:20"}],"id":13406,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13397,"type":"bool","value":"equal"},"id":13407,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13408,"name":"Identifier","src":"15734:4:20"}],"id":13410,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13371,"type":"struct strings.slice memory","value":"needle"},"id":13411,"name":"Identifier","src":"15747:6:20"}],"id":13412,"name":"MemberAccess","src":"15747:11:20"}],"id":13413,"name":"Assignment","src":"15734:24:20"}],"id":13414,"name":"ExpressionStatement","src":"15734:24:20"}],"id":13415,"name":"Block","src":"15720:49:20"}],"id":13416,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":13375},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13369,"type":"struct strings.slice memory","value":"self"},"id":13417,"name":"Identifier","src":"15786:4:20"}],"id":13418,"name":"Return","src":"15779:11:20"}],"id":13419,"name":"Block","src":"15263:534:20"}],"id":13420,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13421,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":13422,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13423,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":13424,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13425,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":13426,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13427,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":13428,"name":"VariableDeclaration","src":"16015:14:20"}],"id":13429,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13541,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13430,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":13431,"name":"VariableDeclaration","src":"16053:4:20"}],"id":13432,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[13434]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13433,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":13434,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13424,"type":"uint256","value":"selfptr"},"id":13435,"name":"Identifier","src":"16080:7:20"}],"id":13436,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[13438],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":13540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13437,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":13438,"name":"VariableDeclaration","src":"16097:8:20"}],"id":13439,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13440,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13441,"name":"Identifier","src":"16133:7:20"}],"id":13442,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13443,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":13444,"name":"Literal","src":"16173:2:20"}],"id":13445,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[13447]},"children":[{"attributes":{"constant":false,"name":"mask","scope":13499,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13446,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":13447,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":13448,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13449,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":13450,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":13451,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13452,"name":"Identifier","src":"16236:9:20"}],"id":13453,"name":"BinaryOperation","src":"16231:14:20"}],"id":13454,"name":"TupleExpression","src":"16230:16:20"}],"id":13455,"name":"BinaryOperation","src":"16226:20:20"}],"id":13456,"name":"TupleExpression","src":"16225:22:20"}],"id":13457,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13458,"name":"Literal","src":"16250:1:20"}],"id":13459,"name":"BinaryOperation","src":"16220:31:20"}],"id":13460,"name":"TupleExpression","src":"16219:33:20"}],"id":13461,"name":"UnaryOperation","src":"16218:34:20"}],"id":13462,"name":"FunctionCall","src":"16210:43:20"}],"id":13463,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[13465],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":13499,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13464,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":13465,"name":"VariableDeclaration","src":"16272:18:20"}],"id":13466,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":13465,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":13428,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":13447,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":13467,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[13469]},"children":[{"attributes":{"constant":false,"name":"end","scope":13499,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13468,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":13469,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13424,"type":"uint256","value":"selfptr"},"id":13470,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13471,"name":"Identifier","src":"16401:7:20"}],"id":13472,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13473,"name":"Identifier","src":"16411:9:20"}],"id":13474,"name":"BinaryOperation","src":"16391:29:20"}],"id":13475,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[13477],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":13499,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13476,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":13477,"name":"VariableDeclaration","src":"16438:15:20"}],"id":13478,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":13477,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":13434,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":13447,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":13479,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13477,"type":"bytes32","value":"ptrdata"},"id":13480,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13465,"type":"bytes32","value":"needledata"},"id":13481,"name":"Identifier","src":"16552:10:20"}],"id":13482,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13483,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13469,"type":"uint256","value":"end"},"id":13484,"name":"Identifier","src":"16597:3:20"}],"id":13485,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":13432},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13424,"type":"uint256","value":"selfptr"},"id":13486,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13487,"name":"Identifier","src":"16643:7:20"}],"id":13488,"name":"BinaryOperation","src":"16633:17:20"}],"id":13489,"name":"Return","src":"16626:24:20"}],"id":13490,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13491,"name":"Identifier","src":"16672:3:20"}],"id":13492,"name":"UnaryOperation","src":"16672:5:20"}],"id":13493,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":13477,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":13434,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":13447,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":13494,"name":"InlineAssembly","src":"16699:45:20"}],"id":13495,"name":"Block","src":"16564:198:20"}],"id":13496,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":13432},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13497,"name":"Identifier","src":"16786:3:20"}],"id":13498,"name":"Return","src":"16779:10:20"}],"id":13499,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[13501],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":13532,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13500,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":13501,"name":"VariableDeclaration","src":"16877:12:20"}],"id":13502,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":13501,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":13428,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":13426,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":13503,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13438,"type":"uint256","value":"idx"},"id":13504,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13505,"name":"Literal","src":"16988:1:20"}],"id":13506,"name":"Assignment","src":"16982:7:20"}],"id":13507,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13438,"type":"uint256","value":"idx"},"id":13508,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13509,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13426,"type":"uint256","value":"needlelen"},"id":13510,"name":"Identifier","src":"17008:9:20"}],"id":13511,"name":"BinaryOperation","src":"16998:19:20"}],"id":13512,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13438,"type":"uint256","value":"idx"},"id":13513,"name":"Identifier","src":"17019:3:20"}],"id":13514,"name":"UnaryOperation","src":"17019:5:20"}],"id":13515,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[13517],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":13530,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13516,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":13517,"name":"VariableDeclaration","src":"17048:16:20"}],"id":13518,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":13517,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":13434,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":13426,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":13519,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13501,"type":"bytes32","value":"hash"},"id":13520,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13517,"type":"bytes32","value":"testHash"},"id":13521,"name":"Identifier","src":"17169:8:20"}],"id":13522,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":13432},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13523,"name":"Identifier","src":"17210:3:20"}],"id":13524,"name":"Return","src":"17203:10:20"}],"id":13525,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13434,"type":"uint256","value":"ptr"},"id":13526,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13527,"name":"Literal","src":"17242:1:20"}],"id":13528,"name":"Assignment","src":"17235:8:20"}],"id":13529,"name":"ExpressionStatement","src":"17235:8:20"}],"id":13530,"name":"Block","src":"17026:236:20"}],"id":13531,"name":"ForStatement","src":"16977:285:20"}],"id":13532,"name":"Block","src":"16810:466:20"}],"id":13533,"name":"IfStatement","src":"16156:1120:20"}],"id":13534,"name":"Block","src":"16142:1144:20"}],"id":13535,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":13432},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13424,"type":"uint256","value":"selfptr"},"id":13536,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13422,"type":"uint256","value":"selflen"},"id":13537,"name":"Identifier","src":"17312:7:20"}],"id":13538,"name":"BinaryOperation","src":"17302:17:20"}],"id":13539,"name":"Return","src":"17295:24:20"}],"id":13540,"name":"Block","src":"16059:1267:20"}],"id":13541,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13542,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":13543,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13544,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":13545,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13546,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":13547,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13548,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":13549,"name":"VariableDeclaration","src":"17541:14:20"}],"id":13550,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13551,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":13552,"name":"VariableDeclaration","src":"17579:4:20"}],"id":13553,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[13555],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13657,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13554,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":13555,"name":"VariableDeclaration","src":"17595:8:20"}],"id":13556,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13557,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13543,"type":"uint256","value":"selflen"},"id":13558,"name":"Identifier","src":"17631:7:20"}],"id":13559,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13560,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":13561,"name":"Literal","src":"17671:2:20"}],"id":13562,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[13564]},"children":[{"attributes":{"constant":false,"name":"mask","scope":13616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13563,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":13564,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":13565,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":13566,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":13567,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":13568,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13569,"name":"Identifier","src":"17734:9:20"}],"id":13570,"name":"BinaryOperation","src":"17729:14:20"}],"id":13571,"name":"TupleExpression","src":"17728:16:20"}],"id":13572,"name":"BinaryOperation","src":"17724:20:20"}],"id":13573,"name":"TupleExpression","src":"17723:22:20"}],"id":13574,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13575,"name":"Literal","src":"17748:1:20"}],"id":13576,"name":"BinaryOperation","src":"17718:31:20"}],"id":13577,"name":"TupleExpression","src":"17717:33:20"}],"id":13578,"name":"UnaryOperation","src":"17716:34:20"}],"id":13579,"name":"FunctionCall","src":"17708:43:20"}],"id":13580,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[13582],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":13616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13581,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":13582,"name":"VariableDeclaration","src":"17770:18:20"}],"id":13583,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":13582,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":13549,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":13564,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":13584,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13585,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13586,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13543,"type":"uint256","value":"selflen"},"id":13587,"name":"Identifier","src":"17894:7:20"}],"id":13588,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13589,"name":"Identifier","src":"17904:9:20"}],"id":13590,"name":"BinaryOperation","src":"17884:29:20"}],"id":13591,"name":"Assignment","src":"17878:35:20"}],"id":13592,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[13594],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":13616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13593,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":13594,"name":"VariableDeclaration","src":"17931:15:20"}],"id":13595,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":13594,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":13555,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":13564,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":13596,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13594,"type":"bytes32","value":"ptrdata"},"id":13597,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13582,"type":"bytes32","value":"needledata"},"id":13598,"name":"Identifier","src":"18045:10:20"}],"id":13599,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13600,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13601,"name":"Identifier","src":"18090:7:20"}],"id":13602,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":13553},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13603,"name":"Identifier","src":"18130:7:20"}],"id":13604,"name":"Return","src":"18123:14:20"}],"id":13605,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13606,"name":"Identifier","src":"18159:3:20"}],"id":13607,"name":"UnaryOperation","src":"18159:5:20"}],"id":13608,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":13594,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":13555,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":13564,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":13609,"name":"InlineAssembly","src":"18186:45:20"}],"id":13610,"name":"Block","src":"18057:192:20"}],"id":13611,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":13553},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13612,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13613,"name":"Identifier","src":"18279:9:20"}],"id":13614,"name":"BinaryOperation","src":"18273:15:20"}],"id":13615,"name":"Return","src":"18266:22:20"}],"id":13616,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[13618],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":13651,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13617,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":13618,"name":"VariableDeclaration","src":"18376:12:20"}],"id":13619,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":13618,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":13549,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":13547,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":13620,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13621,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13622,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13543,"type":"uint256","value":"selflen"},"id":13623,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13624,"name":"Identifier","src":"18502:9:20"}],"id":13625,"name":"BinaryOperation","src":"18492:19:20"}],"id":13626,"name":"TupleExpression","src":"18491:21:20"}],"id":13627,"name":"BinaryOperation","src":"18481:31:20"}],"id":13628,"name":"Assignment","src":"18475:37:20"}],"id":13629,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13630,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13631,"name":"Identifier","src":"18544:7:20"}],"id":13632,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[13634],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":13649,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":13633,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":13634,"name":"VariableDeclaration","src":"18575:16:20"}],"id":13635,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":13634,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":13555,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":13547,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":13636,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13618,"type":"bytes32","value":"hash"},"id":13637,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13634,"type":"bytes32","value":"testHash"},"id":13638,"name":"Identifier","src":"18696:8:20"}],"id":13639,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":13553},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13640,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13547,"type":"uint256","value":"needlelen"},"id":13641,"name":"Identifier","src":"18743:9:20"}],"id":13642,"name":"BinaryOperation","src":"18737:15:20"}],"id":13643,"name":"Return","src":"18730:22:20"}],"id":13644,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13555,"type":"uint256","value":"ptr"},"id":13645,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":13646,"name":"Literal","src":"18781:1:20"}],"id":13647,"name":"Assignment","src":"18774:8:20"}],"id":13648,"name":"ExpressionStatement","src":"18774:8:20"}],"id":13649,"name":"Block","src":"18553:248:20"}],"id":13650,"name":"WhileStatement","src":"18530:271:20"}],"id":13651,"name":"Block","src":"18309:506:20"}],"id":13652,"name":"IfStatement","src":"17654:1161:20"}],"id":13653,"name":"Block","src":"17640:1185:20"}],"id":13654,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":13553},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13545,"type":"uint256","value":"selfptr"},"id":13655,"name":"Identifier","src":"18841:7:20"}],"id":13656,"name":"Return","src":"18834:14:20"}],"id":13657,"name":"Block","src":"17585:1270:20"}],"id":13658,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13698,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13659,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":13660,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13698,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13661,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":13662,"name":"VariableDeclaration","src":"19224:19:20"}],"id":13663,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13698,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13664,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":13665,"name":"VariableDeclaration","src":"19268:12:20"}],"id":13666,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[13668]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13697,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13667,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":13668,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13541,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":13669,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13670,"name":"Identifier","src":"19311:4:20"}],"id":13671,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13672,"name":"Identifier","src":"19322:4:20"}],"id":13673,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13662,"type":"struct strings.slice memory","value":"needle"},"id":13674,"name":"Identifier","src":"19333:6:20"}],"id":13675,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13662,"type":"struct strings.slice memory","value":"needle"},"id":13676,"name":"Identifier","src":"19346:6:20"}],"id":13677,"name":"MemberAccess","src":"19346:11:20"}],"id":13678,"name":"FunctionCall","src":"19303:55:20"}],"id":13679,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13680,"name":"Identifier","src":"19368:4:20"}],"id":13682,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13668,"type":"uint256","value":"ptr"},"id":13683,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13684,"name":"Identifier","src":"19387:4:20"}],"id":13685,"name":"MemberAccess","src":"19387:9:20"}],"id":13686,"name":"BinaryOperation","src":"19381:15:20"}],"id":13687,"name":"Assignment","src":"19368:28:20"}],"id":13688,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13689,"name":"Identifier","src":"19406:4:20"}],"id":13691,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13668,"type":"uint256","value":"ptr"},"id":13692,"name":"Identifier","src":"19418:3:20"}],"id":13693,"name":"Assignment","src":"19406:15:20"}],"id":13694,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":13666},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13660,"type":"struct strings.slice memory","value":"self"},"id":13695,"name":"Identifier","src":"19438:4:20"}],"id":13696,"name":"Return","src":"19431:11:20"}],"id":13697,"name":"Block","src":"19282:167:20"}],"id":13698,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13732,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13699,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":13700,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13732,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13701,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":13702,"name":"VariableDeclaration","src":"19842:19:20"}],"id":13703,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13732,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13704,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":13705,"name":"VariableDeclaration","src":"19886:12:20"}],"id":13706,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[13708]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13731,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13707,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":13708,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13658,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":13709,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13710,"name":"Identifier","src":"19930:4:20"}],"id":13711,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13712,"name":"Identifier","src":"19941:4:20"}],"id":13713,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13702,"type":"struct strings.slice memory","value":"needle"},"id":13714,"name":"Identifier","src":"19952:6:20"}],"id":13715,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13702,"type":"struct strings.slice memory","value":"needle"},"id":13716,"name":"Identifier","src":"19965:6:20"}],"id":13717,"name":"MemberAccess","src":"19965:11:20"}],"id":13718,"name":"FunctionCall","src":"19921:56:20"}],"id":13719,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13720,"name":"Identifier","src":"19987:4:20"}],"id":13722,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13708,"type":"uint256","value":"ptr"},"id":13723,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13724,"name":"Identifier","src":"20005:4:20"}],"id":13725,"name":"MemberAccess","src":"20005:9:20"}],"id":13726,"name":"BinaryOperation","src":"19999:15:20"}],"id":13727,"name":"Assignment","src":"19987:27:20"}],"id":13728,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":13706},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13700,"type":"struct strings.slice memory","value":"self"},"id":13729,"name":"Identifier","src":"20031:4:20"}],"id":13730,"name":"Return","src":"20024:11:20"}],"id":13731,"name":"Block","src":"19900:142:20"}],"id":13732,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13810,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13733,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":13734,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13810,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13735,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":13736,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":13810,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13737,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":13738,"name":"VariableDeclaration","src":"20603:18:20"}],"id":13739,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13810,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13740,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":13741,"name":"VariableDeclaration","src":"20646:12:20"}],"id":13742,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[13744]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13809,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13743,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":13744,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13541,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":13745,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13746,"name":"Identifier","src":"20689:4:20"}],"id":13747,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13748,"name":"Identifier","src":"20700:4:20"}],"id":13749,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13736,"type":"struct strings.slice memory","value":"needle"},"id":13750,"name":"Identifier","src":"20711:6:20"}],"id":13751,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13736,"type":"struct strings.slice memory","value":"needle"},"id":13752,"name":"Identifier","src":"20724:6:20"}],"id":13753,"name":"MemberAccess","src":"20724:11:20"}],"id":13754,"name":"FunctionCall","src":"20681:55:20"}],"id":13755,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13738,"type":"struct strings.slice memory","value":"token"},"id":13756,"name":"Identifier","src":"20746:5:20"}],"id":13758,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13759,"name":"Identifier","src":"20759:4:20"}],"id":13760,"name":"MemberAccess","src":"20759:9:20"}],"id":13761,"name":"Assignment","src":"20746:22:20"}],"id":13762,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13738,"type":"struct strings.slice memory","value":"token"},"id":13763,"name":"Identifier","src":"20778:5:20"}],"id":13765,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13744,"type":"uint256","value":"ptr"},"id":13766,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13767,"name":"Identifier","src":"20797:4:20"}],"id":13768,"name":"MemberAccess","src":"20797:9:20"}],"id":13769,"name":"BinaryOperation","src":"20791:15:20"}],"id":13770,"name":"Assignment","src":"20778:28:20"}],"id":13771,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13744,"type":"uint256","value":"ptr"},"id":13772,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13773,"name":"Identifier","src":"20827:4:20"}],"id":13774,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13775,"name":"Identifier","src":"20839:4:20"}],"id":13776,"name":"MemberAccess","src":"20839:9:20"}],"id":13777,"name":"BinaryOperation","src":"20827:21:20"}],"id":13778,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13779,"name":"Identifier","src":"20889:4:20"}],"id":13781,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13782,"name":"Literal","src":"20901:1:20"}],"id":13783,"name":"Assignment","src":"20889:13:20"}],"id":13784,"name":"ExpressionStatement","src":"20889:13:20"}],"id":13785,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13786,"name":"Identifier","src":"20933:4:20"}],"id":13788,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13738,"type":"struct strings.slice memory","value":"token"},"id":13789,"name":"Identifier","src":"20946:5:20"}],"id":13790,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13736,"type":"struct strings.slice memory","value":"needle"},"id":13791,"name":"Identifier","src":"20959:6:20"}],"id":13792,"name":"MemberAccess","src":"20959:11:20"}],"id":13793,"name":"BinaryOperation","src":"20946:24:20"}],"id":13794,"name":"Assignment","src":"20933:37:20"}],"id":13795,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13734,"type":"struct strings.slice memory","value":"self"},"id":13796,"name":"Identifier","src":"20984:4:20"}],"id":13798,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13744,"type":"uint256","value":"ptr"},"id":13799,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13736,"type":"struct strings.slice memory","value":"needle"},"id":13800,"name":"Identifier","src":"21002:6:20"}],"id":13801,"name":"MemberAccess","src":"21002:11:20"}],"id":13802,"name":"BinaryOperation","src":"20996:17:20"}],"id":13803,"name":"Assignment","src":"20984:29:20"}],"id":13804,"name":"ExpressionStatement","src":"20984:29:20"}],"id":13805,"name":"Block","src":"20919:105:20"}],"id":13806,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":13742},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13738,"type":"struct strings.slice memory","value":"token"},"id":13807,"name":"Identifier","src":"21040:5:20"}],"id":13808,"name":"Return","src":"21033:12:20"}],"id":13809,"name":"Block","src":"20660:392:20"}],"id":13810,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13826,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13811,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":13812,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13826,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13813,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":13814,"name":"VariableDeclaration","src":"21557:19:20"}],"id":13815,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":13826,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13816,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":13817,"name":"VariableDeclaration","src":"21601:18:20"}],"id":13818,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[13810,13826],"referencedDeclaration":13810,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":13819,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13812,"type":"struct strings.slice memory","value":"self"},"id":13820,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13814,"type":"struct strings.slice memory","value":"needle"},"id":13821,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13817,"type":"struct strings.slice memory","value":"token"},"id":13822,"name":"Identifier","src":"21651:5:20"}],"id":13823,"name":"FunctionCall","src":"21631:26:20"}],"id":13824,"name":"ExpressionStatement","src":"21631:26:20"}],"id":13825,"name":"Block","src":"21621:43:20"}],"id":13826,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13895,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13827,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":13828,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13895,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13829,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":13830,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":13895,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13831,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":13832,"name":"VariableDeclaration","src":"22225:18:20"}],"id":13833,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13895,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13834,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":13835,"name":"VariableDeclaration","src":"22268:12:20"}],"id":13836,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[13838]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13837,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":13838,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13658,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":13839,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13840,"name":"Identifier","src":"22312:4:20"}],"id":13841,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13842,"name":"Identifier","src":"22323:4:20"}],"id":13843,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13830,"type":"struct strings.slice memory","value":"needle"},"id":13844,"name":"Identifier","src":"22334:6:20"}],"id":13845,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13830,"type":"struct strings.slice memory","value":"needle"},"id":13846,"name":"Identifier","src":"22347:6:20"}],"id":13847,"name":"MemberAccess","src":"22347:11:20"}],"id":13848,"name":"FunctionCall","src":"22303:56:20"}],"id":13849,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13832,"type":"struct strings.slice memory","value":"token"},"id":13850,"name":"Identifier","src":"22369:5:20"}],"id":13852,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13838,"type":"uint256","value":"ptr"},"id":13853,"name":"Identifier","src":"22382:3:20"}],"id":13854,"name":"Assignment","src":"22369:16:20"}],"id":13855,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13832,"type":"struct strings.slice memory","value":"token"},"id":13856,"name":"Identifier","src":"22395:5:20"}],"id":13858,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13859,"name":"Identifier","src":"22408:4:20"}],"id":13860,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13838,"type":"uint256","value":"ptr"},"id":13861,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13862,"name":"Identifier","src":"22427:4:20"}],"id":13863,"name":"MemberAccess","src":"22427:9:20"}],"id":13864,"name":"BinaryOperation","src":"22421:15:20"}],"id":13865,"name":"TupleExpression","src":"22420:17:20"}],"id":13866,"name":"BinaryOperation","src":"22408:29:20"}],"id":13867,"name":"Assignment","src":"22395:42:20"}],"id":13868,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13838,"type":"uint256","value":"ptr"},"id":13869,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13870,"name":"Identifier","src":"22458:4:20"}],"id":13871,"name":"MemberAccess","src":"22458:9:20"}],"id":13872,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13873,"name":"Identifier","src":"22508:4:20"}],"id":13875,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":13876,"name":"Literal","src":"22520:1:20"}],"id":13877,"name":"Assignment","src":"22508:13:20"}],"id":13878,"name":"ExpressionStatement","src":"22508:13:20"}],"id":13879,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13828,"type":"struct strings.slice memory","value":"self"},"id":13880,"name":"Identifier","src":"22552:4:20"}],"id":13882,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13832,"type":"struct strings.slice memory","value":"token"},"id":13883,"name":"Identifier","src":"22565:5:20"}],"id":13884,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13830,"type":"struct strings.slice memory","value":"needle"},"id":13885,"name":"Identifier","src":"22578:6:20"}],"id":13886,"name":"MemberAccess","src":"22578:11:20"}],"id":13887,"name":"BinaryOperation","src":"22565:24:20"}],"id":13888,"name":"Assignment","src":"22552:37:20"}],"id":13889,"name":"ExpressionStatement","src":"22552:37:20"}],"id":13890,"name":"Block","src":"22538:62:20"}],"id":13891,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":13836},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13832,"type":"struct strings.slice memory","value":"token"},"id":13892,"name":"Identifier","src":"22616:5:20"}],"id":13893,"name":"Return","src":"22609:12:20"}],"id":13894,"name":"Block","src":"22282:346:20"}],"id":13895,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13911,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13896,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":13897,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13911,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13898,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":13899,"name":"VariableDeclaration","src":"23132:19:20"}],"id":13900,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":13911,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13901,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":13902,"name":"VariableDeclaration","src":"23176:18:20"}],"id":13903,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[13895,13911],"referencedDeclaration":13895,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":13904,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13897,"type":"struct strings.slice memory","value":"self"},"id":13905,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13899,"type":"struct strings.slice memory","value":"needle"},"id":13906,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13902,"type":"struct strings.slice memory","value":"token"},"id":13907,"name":"Identifier","src":"23227:5:20"}],"id":13908,"name":"FunctionCall","src":"23206:27:20"}],"id":13909,"name":"ExpressionStatement","src":"23206:27:20"}],"id":13910,"name":"Block","src":"23196:44:20"}],"id":13911,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13970,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13912,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":13913,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13970,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13914,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":13915,"name":"VariableDeclaration","src":"23543:19:20"}],"id":13916,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":13970,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13917,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":13918,"name":"VariableDeclaration","src":"23587:8:20"}],"id":13919,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[13921]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":13969,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":13920,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":13921,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13541,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":13922,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13923,"name":"Identifier","src":"23626:4:20"}],"id":13924,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13925,"name":"Identifier","src":"23637:4:20"}],"id":13926,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13927,"name":"Identifier","src":"23648:6:20"}],"id":13928,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13929,"name":"Identifier","src":"23661:6:20"}],"id":13930,"name":"MemberAccess","src":"23661:11:20"}],"id":13931,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13932,"name":"Identifier","src":"23676:6:20"}],"id":13933,"name":"MemberAccess","src":"23676:11:20"}],"id":13934,"name":"BinaryOperation","src":"23618:69:20"}],"id":13935,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13921,"type":"uint256","value":"ptr"},"id":13936,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13937,"name":"Identifier","src":"23711:4:20"}],"id":13938,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13939,"name":"Identifier","src":"23723:4:20"}],"id":13940,"name":"MemberAccess","src":"23723:9:20"}],"id":13941,"name":"BinaryOperation","src":"23711:21:20"}],"id":13942,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13918,"type":"uint256","value":"cnt"},"id":13943,"name":"Identifier","src":"23748:3:20"}],"id":13944,"name":"UnaryOperation","src":"23748:5:20"}],"id":13945,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13921,"type":"uint256","value":"ptr"},"id":13946,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13541,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":13947,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13948,"name":"Identifier","src":"23781:4:20"}],"id":13949,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13921,"type":"uint256","value":"ptr"},"id":13950,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13913,"type":"struct strings.slice memory","value":"self"},"id":13951,"name":"Identifier","src":"23800:4:20"}],"id":13952,"name":"MemberAccess","src":"23800:9:20"}],"id":13953,"name":"BinaryOperation","src":"23794:15:20"}],"id":13954,"name":"TupleExpression","src":"23793:17:20"}],"id":13955,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13921,"type":"uint256","value":"ptr"},"id":13956,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13957,"name":"Identifier","src":"23817:6:20"}],"id":13958,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13959,"name":"Identifier","src":"23830:6:20"}],"id":13960,"name":"MemberAccess","src":"23830:11:20"}],"id":13961,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13915,"type":"struct strings.slice memory","value":"needle"},"id":13962,"name":"Identifier","src":"23845:6:20"}],"id":13963,"name":"MemberAccess","src":"23845:11:20"}],"id":13964,"name":"BinaryOperation","src":"23773:83:20"}],"id":13965,"name":"Assignment","src":"23767:89:20"}],"id":13966,"name":"ExpressionStatement","src":"23767:89:20"}],"id":13967,"name":"Block","src":"23734:133:20"}],"id":13968,"name":"WhileStatement","src":"23697:170:20"}],"id":13969,"name":"Block","src":"23597:276:20"}],"id":13970,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":13994,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13971,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":13972,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":13994,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13973,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":13974,"name":"VariableDeclaration","src":"24149:19:20"}],"id":13975,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":13994,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":13976,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":13977,"name":"VariableDeclaration","src":"24193:4:20"}],"id":13978,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":13978},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":13658,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":13979,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13972,"type":"struct strings.slice memory","value":"self"},"id":13980,"name":"Identifier","src":"24225:4:20"}],"id":13981,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13972,"type":"struct strings.slice memory","value":"self"},"id":13982,"name":"Identifier","src":"24236:4:20"}],"id":13983,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13974,"type":"struct strings.slice memory","value":"needle"},"id":13984,"name":"Identifier","src":"24247:6:20"}],"id":13985,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13974,"type":"struct strings.slice memory","value":"needle"},"id":13986,"name":"Identifier","src":"24260:6:20"}],"id":13987,"name":"MemberAccess","src":"24260:11:20"}],"id":13988,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13972,"type":"struct strings.slice memory","value":"self"},"id":13989,"name":"Identifier","src":"24276:4:20"}],"id":13990,"name":"MemberAccess","src":"24276:9:20"}],"id":13991,"name":"BinaryOperation","src":"24216:69:20"}],"id":13992,"name":"Return","src":"24209:76:20"}],"id":13993,"name":"Block","src":"24199:93:20"}],"id":13994,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14040,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13995,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":13996,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":14040,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":13997,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":13998,"name":"VariableDeclaration","src":"24614:18:20"}],"id":13999,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":14040,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":14000,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":14001,"name":"VariableDeclaration","src":"24657:13:20"}],"id":14002,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[14004]},"children":[{"attributes":{"constant":false,"name":"ret","scope":14039,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":14003,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":14004,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":14005,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":14006,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13996,"type":"struct strings.slice memory","value":"self"},"id":14007,"name":"Identifier","src":"24713:4:20"}],"id":14008,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13998,"type":"struct strings.slice memory","value":"other"},"id":14009,"name":"Identifier","src":"24725:5:20"}],"id":14010,"name":"MemberAccess","src":"24725:10:20"}],"id":14011,"name":"BinaryOperation","src":"24713:22:20"}],"id":14012,"name":"FunctionCall","src":"24702:34:20"}],"id":14013,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[14015],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":14039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14014,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":14015,"name":"VariableDeclaration","src":"24746:11:20"}],"id":14016,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":14015,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":14004,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":14017,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":14018,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14015,"type":"uint256","value":"retptr"},"id":14019,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13996,"type":"struct strings.slice memory","value":"self"},"id":14020,"name":"Identifier","src":"24826:4:20"}],"id":14021,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13996,"type":"struct strings.slice memory","value":"self"},"id":14022,"name":"Identifier","src":"24837:4:20"}],"id":14023,"name":"MemberAccess","src":"24837:9:20"}],"id":14024,"name":"FunctionCall","src":"24811:36:20"}],"id":14025,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":14026,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14015,"type":"uint256","value":"retptr"},"id":14027,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13996,"type":"struct strings.slice memory","value":"self"},"id":14028,"name":"Identifier","src":"24873:4:20"}],"id":14029,"name":"MemberAccess","src":"24873:9:20"}],"id":14030,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13998,"type":"struct strings.slice memory","value":"other"},"id":14031,"name":"Identifier","src":"24884:5:20"}],"id":14032,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":13998,"type":"struct strings.slice memory","value":"other"},"id":14033,"name":"Identifier","src":"24896:5:20"}],"id":14034,"name":"MemberAccess","src":"24896:10:20"}],"id":14035,"name":"FunctionCall","src":"24857:50:20"}],"id":14036,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":14002},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14004,"type":"string memory","value":"ret"},"id":14037,"name":"Identifier","src":"24924:3:20"}],"id":14038,"name":"Return","src":"24917:10:20"}],"id":14039,"name":"Block","src":"24672:262:20"}],"id":14040,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":14156,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":14155,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":14041,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":14042,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":14155,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":14043,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":14044,"name":"ArrayTypeName","src":"25303:7:20"}],"id":14045,"name":"VariableDeclaration","src":"25303:20:20"}],"id":14046,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":14155,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":14047,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":14048,"name":"VariableDeclaration","src":"25348:13:20"}],"id":14049,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14050,"name":"Identifier","src":"25377:5:20"}],"id":14051,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14052,"name":"Literal","src":"25393:1:20"}],"id":14053,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":14049},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":14054,"name":"Literal","src":"25415:2:20"}],"id":14055,"name":"Return","src":"25408:9:20"}],"id":14056,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[14058]},"children":[{"attributes":{"constant":false,"name":"length","scope":14154,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14057,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":14058,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14042,"type":"struct strings.slice memory","value":"self"},"id":14059,"name":"Identifier","src":"25442:4:20"}],"id":14060,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14061,"name":"Identifier","src":"25455:5:20"}],"id":14062,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14063,"name":"Literal","src":"25470:1:20"}],"id":14064,"name":"BinaryOperation","src":"25455:16:20"}],"id":14065,"name":"TupleExpression","src":"25454:18:20"}],"id":14066,"name":"BinaryOperation","src":"25442:30:20"}],"id":14067,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[14069]},"children":[{"attributes":{"constant":false,"name":"i","scope":14087,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14068,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":14069,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14070,"name":"Literal","src":"25496:1:20"}],"id":14071,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14069,"type":"uint256","value":"i"},"id":14072,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14073,"name":"Identifier","src":"25503:5:20"}],"id":14074,"name":"MemberAccess","src":"25503:12:20"}],"id":14075,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14069,"type":"uint256","value":"i"},"id":14076,"name":"Identifier","src":"25517:1:20"}],"id":14077,"name":"UnaryOperation","src":"25517:3:20"}],"id":14078,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14058,"type":"uint256","value":"length"},"id":14079,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14080,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14069,"type":"uint256","value":"i"},"id":14081,"name":"Identifier","src":"25552:1:20"}],"id":14082,"name":"IndexAccess","src":"25546:8:20"}],"id":14083,"name":"MemberAccess","src":"25546:13:20"}],"id":14084,"name":"Assignment","src":"25536:23:20"}],"id":14085,"name":"ExpressionStatement","src":"25536:23:20"}],"id":14086,"name":"Block","src":"25522:48:20"}],"id":14087,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[14089]},"children":[{"attributes":{"constant":false,"name":"ret","scope":14154,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":14088,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":14089,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":14090,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":14091,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14058,"type":"uint256","value":"length"},"id":14092,"name":"Identifier","src":"25611:6:20"}],"id":14093,"name":"FunctionCall","src":"25600:18:20"}],"id":14094,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[14096],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":14154,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14095,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":14096,"name":"VariableDeclaration","src":"25628:11:20"}],"id":14097,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":14096,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":14089,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":14098,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[14100]},"children":[{"attributes":{"constant":false,"name":"i","scope":14151,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":14099,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":14100,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":14101,"name":"Literal","src":"25708:1:20"}],"id":14102,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14103,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14104,"name":"Identifier","src":"25715:5:20"}],"id":14105,"name":"MemberAccess","src":"25715:12:20"}],"id":14106,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14107,"name":"Identifier","src":"25729:1:20"}],"id":14108,"name":"UnaryOperation","src":"25729:3:20"}],"id":14109,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":14110,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14096,"type":"uint256","value":"retptr"},"id":14111,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14112,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14113,"name":"Identifier","src":"25769:1:20"}],"id":14114,"name":"IndexAccess","src":"25763:8:20"}],"id":14115,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14116,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14117,"name":"Identifier","src":"25784:1:20"}],"id":14118,"name":"IndexAccess","src":"25778:8:20"}],"id":14119,"name":"MemberAccess","src":"25778:13:20"}],"id":14120,"name":"FunctionCall","src":"25748:44:20"}],"id":14121,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14096,"type":"uint256","value":"retptr"},"id":14122,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14123,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14124,"name":"Identifier","src":"25822:1:20"}],"id":14125,"name":"IndexAccess","src":"25816:8:20"}],"id":14126,"name":"MemberAccess","src":"25816:13:20"}],"id":14127,"name":"Assignment","src":"25806:23:20"}],"id":14128,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14100,"type":"uint256","value":"i"},"id":14129,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14045,"type":"struct strings.slice memory[] memory","value":"parts"},"id":14130,"name":"Identifier","src":"25851:5:20"}],"id":14131,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":14132,"name":"Literal","src":"25866:1:20"}],"id":14133,"name":"BinaryOperation","src":"25851:16:20"}],"id":14134,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":12497,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":14135,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14096,"type":"uint256","value":"retptr"},"id":14136,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":12456,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14042,"type":"struct strings.slice memory","value":"self"},"id":14137,"name":"Identifier","src":"25902:4:20"}],"id":14138,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14042,"type":"struct strings.slice memory","value":"self"},"id":14139,"name":"Identifier","src":"25913:4:20"}],"id":14140,"name":"MemberAccess","src":"25913:9:20"}],"id":14141,"name":"FunctionCall","src":"25887:36:20"}],"id":14142,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14096,"type":"uint256","value":"retptr"},"id":14143,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14042,"type":"struct strings.slice memory","value":"self"},"id":14144,"name":"Identifier","src":"25951:4:20"}],"id":14145,"name":"MemberAccess","src":"25951:9:20"}],"id":14146,"name":"Assignment","src":"25941:19:20"}],"id":14147,"name":"ExpressionStatement","src":"25941:19:20"}],"id":14148,"name":"Block","src":"25869:106:20"}],"id":14149,"name":"IfStatement","src":"25843:132:20"}],"id":14150,"name":"Block","src":"25734:251:20"}],"id":14151,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":14049},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14089,"type":"string memory","value":"ret"},"id":14152,"name":"Identifier","src":"26002:3:20"}],"id":14153,"name":"Return","src":"25995:10:20"}],"id":14154,"name":"Block","src":"25363:649:20"}],"id":14155,"name":"FunctionDefinition","src":"25270:742:20"}],"id":14156,"name":"ContractDefinition","src":"2599:23415:20"}],"id":14157,"name":"SourceUnit","src":"2574:23441:20"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[14267]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":14158,"name":"PragmaDirective","src":"770:24:21"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":14268,"symbolAliases":[null],"unitAlias":""},"id":14159,"name":"ImportDirective","src":"796:35:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[14267],"name":"BytesUtils","scope":14268},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":14160,"name":"UserDefinedTypeName","src":"942:8:21"},{"attributes":{"name":"uint256","type":"uint256"},"id":14161,"name":"ElementaryTypeName","src":"955:7:21"}],"id":14162,"name":"UsingForDirective","src":"936:27:21"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":14267,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":14198,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14163,"name":"ElementaryTypeName","src":"1106:5:21"}],"id":14164,"name":"VariableDeclaration","src":"1106:17:21"},{"attributes":{"constant":false,"name":"_from","scope":14198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14165,"name":"ElementaryTypeName","src":"1125:7:21"}],"id":14166,"name":"VariableDeclaration","src":"1125:13:21"}],"id":14167,"name":"ParameterList","src":"1105:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":14198,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":14168,"name":"ElementaryTypeName","src":"1163:7:21"}],"id":14169,"name":"VariableDeclaration","src":"1163:7:21"}],"id":14170,"name":"ParameterList","src":"1162:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":14171,"name":"Identifier","src":"1182:7:21"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14164,"type":"bytes memory","value":"_bts"},"id":14172,"name":"Identifier","src":"1190:4:21"}],"id":14173,"name":"MemberAccess","src":"1190:11:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14166,"type":"uint256","value":"_from"},"id":14174,"name":"Identifier","src":"1205:5:21"}],"id":14175,"name":"MemberAccess","src":"1205:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":14176,"name":"Literal","src":"1215:2:21"}],"id":14177,"name":"FunctionCall","src":"1205:13:21"}],"id":14178,"name":"BinaryOperation","src":"1190:28:21"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":14179,"name":"Literal","src":"1220:22:21"}],"id":14180,"name":"FunctionCall","src":"1182:61:21"}],"id":14181,"name":"ExpressionStatement","src":"1182:61:21"},{"attributes":{"assignments":[14183],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":14197,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":14182,"name":"ElementaryTypeName","src":"1254:7:21"}],"id":14183,"name":"VariableDeclaration","src":"1254:24:21"}],"id":14184,"name":"VariableDeclarationStatement","src":"1254:24:21"},{"attributes":{"assignments":[14186]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":14197,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14185,"name":"ElementaryTypeName","src":"1288:7:21"}],"id":14186,"name":"VariableDeclaration","src":"1288:17:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14166,"type":"uint256","value":"_from"},"id":14187,"name":"Identifier","src":"1308:5:21"}],"id":14188,"name":"MemberAccess","src":"1308:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":14189,"name":"Literal","src":"1318:2:21"}],"id":14190,"name":"FunctionCall","src":"1308:13:21"}],"id":14191,"name":"VariableDeclarationStatement","src":"1288:33:21"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":14183,"isOffset":false,"isSlot":false,"src":"1396:16:21","valueSize":1}},{"_bts":{"declaration":14164,"isOffset":false,"isSlot":false,"src":"1426:4:21","valueSize":1}},{"startByte":{"declaration":14186,"isOffset":false,"isSlot":false,"src":"1432:9:21","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":14192,"name":"InlineAssembly","src":"1373:80:21"},{"attributes":{"functionReturnParameters":14170},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":14193,"name":"ElementaryTypeNameExpression","src":"1470:7:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14183,"type":"bytes20","value":"convertedAddress"},"id":14194,"name":"Identifier","src":"1478:16:21"}],"id":14195,"name":"FunctionCall","src":"1470:25:21"}],"id":14196,"name":"Return","src":"1463:32:21"}],"id":14197,"name":"Block","src":"1172:330:21"}],"id":14198,"name":"FunctionDefinition","src":"1081:421:21"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":14267,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":14232,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14199,"name":"ElementaryTypeName","src":"1651:5:21"}],"id":14200,"name":"VariableDeclaration","src":"1651:17:21"},{"attributes":{"constant":false,"name":"_from","scope":14232,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14201,"name":"ElementaryTypeName","src":"1670:7:21"}],"id":14202,"name":"VariableDeclaration","src":"1670:13:21"}],"id":14203,"name":"ParameterList","src":"1650:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":14232,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":14204,"name":"ElementaryTypeName","src":"1708:6:21"}],"id":14205,"name":"VariableDeclaration","src":"1708:6:21"}],"id":14206,"name":"ParameterList","src":"1707:8:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":14207,"name":"Identifier","src":"1726:7:21"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14200,"type":"bytes memory","value":"_bts"},"id":14208,"name":"Identifier","src":"1734:4:21"}],"id":14209,"name":"MemberAccess","src":"1734:11:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14202,"type":"uint256","value":"_from"},"id":14210,"name":"Identifier","src":"1749:5:21"}],"id":14211,"name":"MemberAccess","src":"1749:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":14212,"name":"Literal","src":"1759:1:21"}],"id":14213,"name":"FunctionCall","src":"1749:12:21"}],"id":14214,"name":"BinaryOperation","src":"1734:27:21"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":14215,"name":"Literal","src":"1763:22:21"}],"id":14216,"name":"FunctionCall","src":"1726:60:21"}],"id":14217,"name":"ExpressionStatement","src":"1726:60:21"},{"attributes":{"assignments":[14219],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":14231,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":14218,"name":"ElementaryTypeName","src":"1797:6:21"}],"id":14219,"name":"VariableDeclaration","src":"1797:19:21"}],"id":14220,"name":"VariableDeclarationStatement","src":"1797:19:21"},{"attributes":{"assignments":[14222]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":14231,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14221,"name":"ElementaryTypeName","src":"1826:7:21"}],"id":14222,"name":"VariableDeclaration","src":"1826:17:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14202,"type":"uint256","value":"_from"},"id":14223,"name":"Identifier","src":"1846:5:21"}],"id":14224,"name":"MemberAccess","src":"1846:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":14225,"name":"Literal","src":"1856:2:21"}],"id":14226,"name":"FunctionCall","src":"1846:13:21"}],"id":14227,"name":"VariableDeclarationStatement","src":"1826:33:21"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":14219,"isOffset":false,"isSlot":false,"src":"1934:12:21","valueSize":1}},{"_bts":{"declaration":14200,"isOffset":false,"isSlot":false,"src":"1960:4:21","valueSize":1}},{"startByte":{"declaration":14222,"isOffset":false,"isSlot":false,"src":"1966:9:21","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":14228,"name":"InlineAssembly","src":"1911:76:21"},{"attributes":{"functionReturnParameters":14206},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14219,"type":"bytes4","value":"slicedBytes4"},"id":14229,"name":"Identifier","src":"2004:12:21"}],"id":14230,"name":"Return","src":"1997:19:21"}],"id":14231,"name":"Block","src":"1716:307:21"}],"id":14232,"name":"FunctionDefinition","src":"1627:396:21"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":14267,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":14266,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":14233,"name":"ElementaryTypeName","src":"2398:5:21"}],"id":14234,"name":"VariableDeclaration","src":"2398:17:21"},{"attributes":{"constant":false,"name":"_from","scope":14266,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14235,"name":"ElementaryTypeName","src":"2417:7:21"}],"id":14236,"name":"VariableDeclaration","src":"2417:13:21"}],"id":14237,"name":"ParameterList","src":"2397:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":14266,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14238,"name":"ElementaryTypeName","src":"2455:7:21"}],"id":14239,"name":"VariableDeclaration","src":"2455:7:21"}],"id":14240,"name":"ParameterList","src":"2454:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":14241,"name":"Identifier","src":"2474:7:21"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14234,"type":"bytes memory","value":"_bts"},"id":14242,"name":"Identifier","src":"2482:4:21"}],"id":14243,"name":"MemberAccess","src":"2482:11:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14236,"type":"uint256","value":"_from"},"id":14244,"name":"Identifier","src":"2497:5:21"}],"id":14245,"name":"MemberAccess","src":"2497:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":14246,"name":"Literal","src":"2507:2:21"}],"id":14247,"name":"FunctionCall","src":"2497:13:21"}],"id":14248,"name":"BinaryOperation","src":"2482:28:21"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":14249,"name":"Literal","src":"2512:22:21"}],"id":14250,"name":"FunctionCall","src":"2474:61:21"}],"id":14251,"name":"ExpressionStatement","src":"2474:61:21"},{"attributes":{"assignments":[14253],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":14265,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14252,"name":"ElementaryTypeName","src":"2546:7:21"}],"id":14253,"name":"VariableDeclaration","src":"2546:24:21"}],"id":14254,"name":"VariableDeclarationStatement","src":"2546:24:21"},{"attributes":{"assignments":[14256]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":14265,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14255,"name":"ElementaryTypeName","src":"2580:7:21"}],"id":14256,"name":"VariableDeclaration","src":"2580:17:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14236,"type":"uint256","value":"_from"},"id":14257,"name":"Identifier","src":"2600:5:21"}],"id":14258,"name":"MemberAccess","src":"2600:9:21"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":14259,"name":"Literal","src":"2610:2:21"}],"id":14260,"name":"FunctionCall","src":"2600:13:21"}],"id":14261,"name":"VariableDeclarationStatement","src":"2580:33:21"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":14253,"isOffset":false,"isSlot":false,"src":"2688:16:21","valueSize":1}},{"_bts":{"declaration":14234,"isOffset":false,"isSlot":false,"src":"2718:4:21","valueSize":1}},{"startByte":{"declaration":14256,"isOffset":false,"isSlot":false,"src":"2724:9:21","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":14262,"name":"InlineAssembly","src":"2665:80:21"},{"attributes":{"functionReturnParameters":14240},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":14253,"type":"uint256","value":"convertedUint256"},"id":14263,"name":"Identifier","src":"2762:16:21"}],"id":14264,"name":"Return","src":"2755:23:21"}],"id":14265,"name":"Block","src":"2464:321:21"}],"id":14266,"name":"FunctionDefinition","src":"2373:412:21"}],"id":14267,"name":"ContractDefinition","src":"911:1876:21"}],"id":14268,"name":"SourceUnit","src":"770:2018:21"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[7949]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":7855,"name":"PragmaDirective","src":"772:24:22"},{"attributes":{"SourceUnit":9436,"absolutePath":"controller.sol","file":"../controller.sol","scope":7950,"symbolAliases":[null],"unitAlias":""},"id":7856,"name":"ImportDirective","src":"798:27:22"},{"attributes":{"SourceUnit":8164,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":7950,"symbolAliases":[null],"unitAlias":""},"id":7857,"name":"ImportDirective","src":"826:29:22"},{"attributes":{"contractDependencies":[8163],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[7949,8163],"name":"Controllable","scope":7950},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":8163,"type":"contract ENSResolvable"},"id":7858,"name":"UserDefinedTypeName","src":"980:13:22"}],"id":7859,"name":"InheritanceSpecifier","src":"980:13:22"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":7949,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7860,"name":"ElementaryTypeName","src":"1070:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":7861,"name":"Literal","src":"1122:66:22"}],"id":7862,"name":"VariableDeclaration","src":"1070:118:22"},{"attributes":{"constant":false,"name":"_controllerNode","scope":7949,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7863,"name":"ElementaryTypeName","src":"1272:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7862,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":7864,"name":"Identifier","src":"1306:24:22"}],"id":7865,"name":"VariableDeclaration","src":"1272:58:22"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":7949,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":7882,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7866,"name":"ElementaryTypeName","src":"1571:7:22"}],"id":7867,"name":"VariableDeclaration","src":"1571:24:22"}],"id":7868,"name":"ParameterList","src":"1570:26:22"},{"attributes":{"parameters":[null]},"children":[],"id":7869,"name":"ParameterList","src":"1606:0:22"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7867,"type":"bytes32","value":"_controllerNode_"},"id":7870,"name":"Identifier","src":"1665:16:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7871,"name":"ElementaryTypeNameExpression","src":"1685:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7872,"name":"Literal","src":"1693:1:22"}],"id":7873,"name":"FunctionCall","src":"1685:10:22"}],"id":7874,"name":"BinaryOperation","src":"1665:30:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7865,"type":"bytes32","value":"_controllerNode"},"id":7875,"name":"Identifier","src":"1711:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7867,"type":"bytes32","value":"_controllerNode_"},"id":7876,"name":"Identifier","src":"1729:16:22"}],"id":7877,"name":"Assignment","src":"1711:34:22"}],"id":7878,"name":"ExpressionStatement","src":"1711:34:22"}],"id":7879,"name":"Block","src":"1697:59:22"}],"id":7880,"name":"IfStatement","src":"1661:95:22"}],"id":7881,"name":"Block","src":"1606:156:22"}],"id":7882,"name":"FunctionDefinition","src":"1559:203:22"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7883,"name":"ParameterList","src":"1849:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":7884,"name":"Identifier","src":"1862:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7931,"type":"function (address) view returns (bool)","value":"_isController"},"id":7885,"name":"Identifier","src":"1870:13:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":7886,"name":"Identifier","src":"1884:3:22"}],"id":7887,"name":"MemberAccess","src":"1884:10:22"}],"id":7888,"name":"FunctionCall","src":"1870:25:22"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":7889,"name":"Literal","src":"1897:28:22"}],"id":7890,"name":"FunctionCall","src":"1862:64:22"}],"id":7891,"name":"ExpressionStatement","src":"1862:64:22"},{"id":7892,"name":"PlaceholderStatement","src":"1936:1:22"}],"id":7893,"name":"Block","src":"1852:92:22"}],"id":7894,"name":"ModifierDefinition","src":"1826:118:22"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7895,"name":"ParameterList","src":"2022:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":7896,"name":"Identifier","src":"2035:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7948,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":7897,"name":"Identifier","src":"2043:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":7898,"name":"Identifier","src":"2052:3:22"}],"id":7899,"name":"MemberAccess","src":"2052:10:22"}],"id":7900,"name":"FunctionCall","src":"2043:20:22"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":7901,"name":"Literal","src":"2065:24:22"}],"id":7902,"name":"FunctionCall","src":"2035:55:22"}],"id":7903,"name":"ExpressionStatement","src":"2035:55:22"},{"id":7904,"name":"PlaceholderStatement","src":"2100:1:22"}],"id":7905,"name":"Block","src":"2025:83:22"}],"id":7906,"name":"ModifierDefinition","src":"2004:104:22"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":7949,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7907,"name":"ParameterList","src":"2192:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7914,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7908,"name":"ElementaryTypeName","src":"2216:7:22"}],"id":7909,"name":"VariableDeclaration","src":"2216:7:22"}],"id":7910,"name":"ParameterList","src":"2215:9:22"},{"children":[{"attributes":{"functionReturnParameters":7910},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7865,"type":"bytes32","value":"_controllerNode"},"id":7911,"name":"Identifier","src":"2242:15:22"}],"id":7912,"name":"Return","src":"2235:22:22"}],"id":7913,"name":"Block","src":"2225:39:22"}],"id":7914,"name":"FunctionDefinition","src":"2169:95:22"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":7949,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":7931,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7915,"name":"ElementaryTypeName","src":"2355:7:22"}],"id":7916,"name":"VariableDeclaration","src":"2355:16:22"}],"id":7917,"name":"ParameterList","src":"2354:18:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7931,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7918,"name":"ElementaryTypeName","src":"2396:4:22"}],"id":7919,"name":"VariableDeclaration","src":"2396:4:22"}],"id":7920,"name":"ParameterList","src":"2395:6:22"},{"children":[{"attributes":{"functionReturnParameters":7920},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":8992,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9000,"type":"type(contract IController)","value":"IController"},"id":7921,"name":"Identifier","src":"2419:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":7922,"name":"Identifier","src":"2431:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7865,"type":"bytes32","value":"_controllerNode"},"id":7923,"name":"Identifier","src":"2443:15:22"}],"id":7924,"name":"FunctionCall","src":"2431:28:22"}],"id":7925,"name":"FunctionCall","src":"2419:41:22"}],"id":7926,"name":"MemberAccess","src":"2419:54:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7916,"type":"address","value":"_account"},"id":7927,"name":"Identifier","src":"2474:8:22"}],"id":7928,"name":"FunctionCall","src":"2419:64:22"}],"id":7929,"name":"Return","src":"2412:71:22"}],"id":7930,"name":"Block","src":"2402:88:22"}],"id":7931,"name":"FunctionDefinition","src":"2332:158:22"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":7949,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":7948,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7932,"name":"ElementaryTypeName","src":"2572:7:22"}],"id":7933,"name":"VariableDeclaration","src":"2572:16:22"}],"id":7934,"name":"ParameterList","src":"2571:18:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":7948,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7935,"name":"ElementaryTypeName","src":"2613:4:22"}],"id":7936,"name":"VariableDeclaration","src":"2613:4:22"}],"id":7937,"name":"ParameterList","src":"2612:6:22"},{"children":[{"attributes":{"functionReturnParameters":7937},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":8999,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9000,"type":"type(contract IController)","value":"IController"},"id":7938,"name":"Identifier","src":"2636:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":7939,"name":"Identifier","src":"2648:11:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7865,"type":"bytes32","value":"_controllerNode"},"id":7940,"name":"Identifier","src":"2660:15:22"}],"id":7941,"name":"FunctionCall","src":"2648:28:22"}],"id":7942,"name":"FunctionCall","src":"2636:41:22"}],"id":7943,"name":"MemberAccess","src":"2636:49:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7933,"type":"address","value":"_account"},"id":7944,"name":"Identifier","src":"2686:8:22"}],"id":7945,"name":"FunctionCall","src":"2636:59:22"}],"id":7946,"name":"Return","src":"2629:66:22"}],"id":7947,"name":"Block","src":"2619:83:22"}],"id":7948,"name":"FunctionDefinition","src":"2554:148:22"}],"id":7949,"name":"ContractDefinition","src":"955:1749:22"}],"id":7950,"name":"SourceUnit","src":"772:1933:22"}},"internals/date.sol":{"AST":{"attributes":{"absolutePath":"internals/date.sol","exportedSymbols":{"Date":[8118]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":7951,"name":"PragmaDirective","src":"764:24:23"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Date provides redimentary date parsing functionality.\n @notice This method parses months found in an ISO date to a number","fullyImplemented":true,"linearizedBaseContracts":[8118],"name":"Date","scope":8119},"children":[{"attributes":{"constant":true,"name":"_JANUARY","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7952,"name":"ElementaryTypeName","src":"947:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4a18c9083b936e0757952a5d9d34b5575d427661506fbe9908c2a1da3f3e80d9","typeString":"literal_string \"Jan\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7953,"name":"Identifier","src":"983:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4a616e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Jan\"","value":"Jan"},"id":7954,"name":"Literal","src":"993:5:23"}],"id":7955,"name":"FunctionCall","src":"983:16:23"}],"id":7956,"name":"VariableDeclaration","src":"947:52:23"},{"attributes":{"constant":true,"name":"_FEBRUARY","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7957,"name":"ElementaryTypeName","src":"1005:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_78ec83563b948f0ac242d7eaefd592adf65964e11cc27f11ae41faa99a1e990a","typeString":"literal_string \"Feb\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7958,"name":"Identifier","src":"1042:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"466562","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Feb\"","value":"Feb"},"id":7959,"name":"Literal","src":"1052:5:23"}],"id":7960,"name":"FunctionCall","src":"1042:16:23"}],"id":7961,"name":"VariableDeclaration","src":"1005:53:23"},{"attributes":{"constant":true,"name":"_MARCH","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7962,"name":"ElementaryTypeName","src":"1064:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_2bab7d3f253ae0e3722abcc2571faced288946968116996ffc3de31fb7348ec3","typeString":"literal_string \"Mar\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7963,"name":"Identifier","src":"1098:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4d6172","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Mar\"","value":"Mar"},"id":7964,"name":"Literal","src":"1108:5:23"}],"id":7965,"name":"FunctionCall","src":"1098:16:23"}],"id":7966,"name":"VariableDeclaration","src":"1064:50:23"},{"attributes":{"constant":true,"name":"_APRIL","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7967,"name":"ElementaryTypeName","src":"1120:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c6f33aba2381b69f05afc78835e501547a9daffa08d674623068c378423ac188","typeString":"literal_string \"Apr\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7968,"name":"Identifier","src":"1154:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"417072","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Apr\"","value":"Apr"},"id":7969,"name":"Literal","src":"1164:5:23"}],"id":7970,"name":"FunctionCall","src":"1154:16:23"}],"id":7971,"name":"VariableDeclaration","src":"1120:50:23"},{"attributes":{"constant":true,"name":"_MAY","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7972,"name":"ElementaryTypeName","src":"1176:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_db5ee1006003349b29eda5be5fe34f728659f836a948d4ec595114aebbb159d3","typeString":"literal_string \"May\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7973,"name":"Identifier","src":"1208:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4d6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"May\"","value":"May"},"id":7974,"name":"Literal","src":"1218:5:23"}],"id":7975,"name":"FunctionCall","src":"1208:16:23"}],"id":7976,"name":"VariableDeclaration","src":"1176:48:23"},{"attributes":{"constant":true,"name":"_JUNE","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7977,"name":"ElementaryTypeName","src":"1230:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_44a0046ab54c1458fc3c39dfcadc52509ad809730ec301470d2d747dbe77242d","typeString":"literal_string \"Jun\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7978,"name":"Identifier","src":"1263:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4a756e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Jun\"","value":"Jun"},"id":7979,"name":"Literal","src":"1273:5:23"}],"id":7980,"name":"FunctionCall","src":"1263:16:23"}],"id":7981,"name":"VariableDeclaration","src":"1230:49:23"},{"attributes":{"constant":true,"name":"_JULY","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7982,"name":"ElementaryTypeName","src":"1285:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_74d9e46f10329e61dc333ff1800274be516163110de31961b4e0c61de3e90c5c","typeString":"literal_string \"Jul\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7983,"name":"Identifier","src":"1318:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4a756c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Jul\"","value":"Jul"},"id":7984,"name":"Literal","src":"1328:5:23"}],"id":7985,"name":"FunctionCall","src":"1318:16:23"}],"id":7986,"name":"VariableDeclaration","src":"1285:49:23"},{"attributes":{"constant":true,"name":"_AUGUST","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7987,"name":"ElementaryTypeName","src":"1340:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_ed40c08ab6f3d9c5d71155e25b1271d5b9eca8c27bf89e1d2293fcb77c5abf64","typeString":"literal_string \"Aug\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7988,"name":"Identifier","src":"1375:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"417567","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Aug\"","value":"Aug"},"id":7989,"name":"Literal","src":"1385:5:23"}],"id":7990,"name":"FunctionCall","src":"1375:16:23"}],"id":7991,"name":"VariableDeclaration","src":"1340:51:23"},{"attributes":{"constant":true,"name":"_SEPTEMBER","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7992,"name":"ElementaryTypeName","src":"1397:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7d801199c77197eb9933a633741db90c2c6f3d7d14aca35f5f80a41b4a8863ac","typeString":"literal_string \"Sep\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7993,"name":"Identifier","src":"1435:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"536570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Sep\"","value":"Sep"},"id":7994,"name":"Literal","src":"1445:5:23"}],"id":7995,"name":"FunctionCall","src":"1435:16:23"}],"id":7996,"name":"VariableDeclaration","src":"1397:54:23"},{"attributes":{"constant":true,"name":"_OCTOBER","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7997,"name":"ElementaryTypeName","src":"1457:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_b7841ed82fc96483f061ddc0b19846855df22558c4aea3b3b058ce0d9f1f5164","typeString":"literal_string \"Oct\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":7998,"name":"Identifier","src":"1493:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4f6374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Oct\"","value":"Oct"},"id":7999,"name":"Literal","src":"1503:5:23"}],"id":8000,"name":"FunctionCall","src":"1493:16:23"}],"id":8001,"name":"VariableDeclaration","src":"1457:52:23"},{"attributes":{"constant":true,"name":"_NOVEMBER","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8002,"name":"ElementaryTypeName","src":"1515:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_487851233e540dddea8f904d6802590aead5463b1c44965d68348bb7def25cf4","typeString":"literal_string \"Nov\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":8003,"name":"Identifier","src":"1552:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"4e6f76","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Nov\"","value":"Nov"},"id":8004,"name":"Literal","src":"1562:5:23"}],"id":8005,"name":"FunctionCall","src":"1552:16:23"}],"id":8006,"name":"VariableDeclaration","src":"1515:53:23"},{"attributes":{"constant":true,"name":"_DECEMBER","scope":8118,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8007,"name":"ElementaryTypeName","src":"1574:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_3bd971d8758c58fe0c4d635451404450c5edda87d624a89819e0be5a122933dc","typeString":"literal_string \"Dec\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":8008,"name":"Identifier","src":"1611:9:23"},{"attributes":{"argumentTypes":null,"hexvalue":"446563","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"Dec\"","value":"Dec"},"id":8009,"name":"Literal","src":"1621:5:23"}],"id":8010,"name":"FunctionCall","src":"1611:16:23"}],"id":8011,"name":"VariableDeclaration","src":"1574:53:23"},{"attributes":{"documentation":"@return the number of the month based on its name.\n @param _month the first three letters of a month's name e.g. \"Jan\".","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_monthToNumber","scope":8118,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_month","scope":8117,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8012,"name":"ElementaryTypeName","src":"1793:6:23"}],"id":8013,"name":"VariableDeclaration","src":"1793:20:23"}],"id":8014,"name":"ParameterList","src":"1792:22:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":8117,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":8015,"name":"ElementaryTypeName","src":"1838:5:23"}],"id":8016,"name":"VariableDeclaration","src":"1838:5:23"}],"id":8017,"name":"ParameterList","src":"1837:7:23"},{"children":[{"attributes":{"assignments":[8019]},"children":[{"attributes":{"constant":false,"name":"month","scope":8116,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8018,"name":"ElementaryTypeName","src":"1855:7:23"}],"id":8019,"name":"VariableDeclaration","src":"1855:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":8020,"name":"Identifier","src":"1871:9:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":8021,"name":"Identifier","src":"1881:3:23"}],"id":8022,"name":"MemberAccess","src":"1881:16:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8013,"type":"string memory","value":"_month"},"id":8023,"name":"Identifier","src":"1898:6:23"}],"id":8024,"name":"FunctionCall","src":"1881:24:23"}],"id":8025,"name":"FunctionCall","src":"1871:35:23"}],"id":8026,"name":"VariableDeclarationStatement","src":"1855:51:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8027,"name":"Identifier","src":"1920:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7956,"type":"bytes32","value":"_JANUARY"},"id":8028,"name":"Identifier","src":"1929:8:23"}],"id":8029,"name":"BinaryOperation","src":"1920:17:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8030,"name":"Literal","src":"1960:1:23"}],"id":8031,"name":"Return","src":"1953:8:23"}],"id":8032,"name":"Block","src":"1939:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8033,"name":"Identifier","src":"1982:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7961,"type":"bytes32","value":"_FEBRUARY"},"id":8034,"name":"Identifier","src":"1991:9:23"}],"id":8035,"name":"BinaryOperation","src":"1982:18:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8036,"name":"Literal","src":"2023:1:23"}],"id":8037,"name":"Return","src":"2016:8:23"}],"id":8038,"name":"Block","src":"2002:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8039,"name":"Identifier","src":"2045:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"bytes32","value":"_MARCH"},"id":8040,"name":"Identifier","src":"2054:6:23"}],"id":8041,"name":"BinaryOperation","src":"2045:15:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8042,"name":"Literal","src":"2083:1:23"}],"id":8043,"name":"Return","src":"2076:8:23"}],"id":8044,"name":"Block","src":"2062:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8045,"name":"Identifier","src":"2105:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7971,"type":"bytes32","value":"_APRIL"},"id":8046,"name":"Identifier","src":"2114:6:23"}],"id":8047,"name":"BinaryOperation","src":"2105:15:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8048,"name":"Literal","src":"2143:1:23"}],"id":8049,"name":"Return","src":"2136:8:23"}],"id":8050,"name":"Block","src":"2122:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8051,"name":"Identifier","src":"2165:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7976,"type":"bytes32","value":"_MAY"},"id":8052,"name":"Identifier","src":"2174:4:23"}],"id":8053,"name":"BinaryOperation","src":"2165:13:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":8054,"name":"Literal","src":"2201:1:23"}],"id":8055,"name":"Return","src":"2194:8:23"}],"id":8056,"name":"Block","src":"2180:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8057,"name":"Identifier","src":"2223:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7981,"type":"bytes32","value":"_JUNE"},"id":8058,"name":"Identifier","src":"2232:5:23"}],"id":8059,"name":"BinaryOperation","src":"2223:14:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":8060,"name":"Literal","src":"2260:1:23"}],"id":8061,"name":"Return","src":"2253:8:23"}],"id":8062,"name":"Block","src":"2239:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8063,"name":"Identifier","src":"2282:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7986,"type":"bytes32","value":"_JULY"},"id":8064,"name":"Identifier","src":"2291:5:23"}],"id":8065,"name":"BinaryOperation","src":"2282:14:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":8066,"name":"Literal","src":"2319:1:23"}],"id":8067,"name":"Return","src":"2312:8:23"}],"id":8068,"name":"Block","src":"2298:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8069,"name":"Identifier","src":"2341:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7991,"type":"bytes32","value":"_AUGUST"},"id":8070,"name":"Identifier","src":"2350:7:23"}],"id":8071,"name":"BinaryOperation","src":"2341:16:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8072,"name":"Literal","src":"2380:1:23"}],"id":8073,"name":"Return","src":"2373:8:23"}],"id":8074,"name":"Block","src":"2359:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8075,"name":"Identifier","src":"2402:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7996,"type":"bytes32","value":"_SEPTEMBER"},"id":8076,"name":"Identifier","src":"2411:10:23"}],"id":8077,"name":"BinaryOperation","src":"2402:19:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"39","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 9","value":"9"},"id":8078,"name":"Literal","src":"2444:1:23"}],"id":8079,"name":"Return","src":"2437:8:23"}],"id":8080,"name":"Block","src":"2423:33:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8081,"name":"Identifier","src":"2466:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8001,"type":"bytes32","value":"_OCTOBER"},"id":8082,"name":"Identifier","src":"2475:8:23"}],"id":8083,"name":"BinaryOperation","src":"2466:17:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8084,"name":"Literal","src":"2506:2:23"}],"id":8085,"name":"Return","src":"2499:9:23"}],"id":8086,"name":"Block","src":"2485:34:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8087,"name":"Identifier","src":"2529:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8006,"type":"bytes32","value":"_NOVEMBER"},"id":8088,"name":"Identifier","src":"2538:9:23"}],"id":8089,"name":"BinaryOperation","src":"2529:18:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3131","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 11","value":"11"},"id":8090,"name":"Literal","src":"2570:2:23"}],"id":8091,"name":"Return","src":"2563:9:23"}],"id":8092,"name":"Block","src":"2549:34:23"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8019,"type":"bytes32","value":"month"},"id":8093,"name":"Identifier","src":"2593:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8011,"type":"bytes32","value":"_DECEMBER"},"id":8094,"name":"Identifier","src":"2602:9:23"}],"id":8095,"name":"BinaryOperation","src":"2593:18:23"},{"children":[{"attributes":{"functionReturnParameters":8017},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":8096,"name":"Literal","src":"2634:2:23"}],"id":8097,"name":"Return","src":"2627:9:23"}],"id":8098,"name":"Block","src":"2613:34:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_4deebb500c9a99d40fa1053d95d4c3a93eaf025d3e960c6684ad76631bfe8f66","typeString":"literal_string \"not a valid month\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":8099,"name":"Identifier","src":"2667:6:23"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420612076616c6964206d6f6e7468","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not a valid month\"","value":"not a valid month"},"id":8100,"name":"Literal","src":"2674:19:23"}],"id":8101,"name":"FunctionCall","src":"2667:27:23"}],"id":8102,"name":"ExpressionStatement","src":"2667:27:23"}],"id":8103,"name":"Block","src":"2653:52:23"}],"id":8104,"name":"IfStatement","src":"2589:116:23"}],"id":8105,"name":"IfStatement","src":"2525:180:23"}],"id":8106,"name":"IfStatement","src":"2462:243:23"}],"id":8107,"name":"IfStatement","src":"2398:307:23"}],"id":8108,"name":"IfStatement","src":"2337:368:23"}],"id":8109,"name":"IfStatement","src":"2278:427:23"}],"id":8110,"name":"IfStatement","src":"2219:486:23"}],"id":8111,"name":"IfStatement","src":"2161:544:23"}],"id":8112,"name":"IfStatement","src":"2101:604:23"}],"id":8113,"name":"IfStatement","src":"2041:664:23"}],"id":8114,"name":"IfStatement","src":"1978:727:23"}],"id":8115,"name":"IfStatement","src":"1916:789:23"}],"id":8116,"name":"Block","src":"1845:866:23"}],"id":8117,"name":"FunctionDefinition","src":"1769:942:23"}],"id":8118,"name":"ContractDefinition","src":"927:1786:23"}],"id":8119,"name":"SourceUnit","src":"764:1950:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[8163]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8120,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":9573,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":8164,"symbolAliases":[null],"unitAlias":""},"id":8121,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":9747,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":8164,"symbolAliases":[null],"unitAlias":""},"id":8122,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[8163],"name":"ENSResolvable","scope":8164},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":8163,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8123,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":8124,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":8163,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":8134,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8125,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":8126,"name":"VariableDeclaration","src":"1205:16:24"}],"id":8127,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":8128,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"address","value":"_ensRegistry"},"id":8129,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8126,"type":"address","value":"_ensReg_"},"id":8130,"name":"Identifier","src":"1257:8:24"}],"id":8131,"name":"Assignment","src":"1242:23:24"}],"id":8132,"name":"ExpressionStatement","src":"1242:23:24"}],"id":8133,"name":"Block","src":"1232:40:24"}],"id":8134,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":8163,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8135,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":8142,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8136,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":8137,"name":"VariableDeclaration","src":"1410:7:24"}],"id":8138,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":8138},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"address","value":"_ensRegistry"},"id":8139,"name":"Identifier","src":"1436:12:24"}],"id":8140,"name":"Return","src":"1429:19:24"}],"id":8141,"name":"Block","src":"1419:36:24"}],"id":8142,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":8163,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":8162,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8143,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":8144,"name":"VariableDeclaration","src":"1652:13:24"}],"id":8145,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":8162,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8146,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":8147,"name":"VariableDeclaration","src":"1690:7:24"}],"id":8148,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":8148},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":11381,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9746,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":8149,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":9548,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9572,"type":"type(contract ENS)","value":"ENS"},"id":8150,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"address","value":"_ensRegistry"},"id":8151,"name":"Identifier","src":"1735:12:24"}],"id":8152,"name":"FunctionCall","src":"1731:17:24"}],"id":8153,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8144,"type":"bytes32","value":"_node"},"id":8154,"name":"Identifier","src":"1758:5:24"}],"id":8155,"name":"FunctionCall","src":"1731:33:24"}],"id":8156,"name":"FunctionCall","src":"1716:49:24"}],"id":8157,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8144,"type":"bytes32","value":"_node"},"id":8158,"name":"Identifier","src":"1771:5:24"}],"id":8159,"name":"FunctionCall","src":"1716:61:24"}],"id":8160,"name":"Return","src":"1709:68:24"}],"id":8161,"name":"Block","src":"1699:85:24"}],"id":8162,"name":"FunctionDefinition","src":"1631:153:24"}],"id":8163,"name":"ContractDefinition","src":"1008:778:24"}],"id":8164,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[11163]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":11008,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[11163],"name":"Ownable","scope":11164},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":11014,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11009,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":11010,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":11014,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11011,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":11012,"name":"VariableDeclaration","src":"1214:11:25"}],"id":11013,"name":"ParameterList","src":"1198:28:25"}],"id":11014,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":11018,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11015,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":11016,"name":"VariableDeclaration","src":"1254:15:25"}],"id":11017,"name":"ParameterList","src":"1253:17:25"}],"id":11018,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":11163,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11019,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":11020,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":11163,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11021,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":11022,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":11163,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":11053,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11023,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":11024,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":11053,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11025,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":11026,"name":"VariableDeclaration","src":"1503:19:25"}],"id":11027,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":11028,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11029,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11024,"type":"address payable","value":"_account_"},"id":11030,"name":"Identifier","src":"1552:9:25"}],"id":11031,"name":"Assignment","src":"1543:18:25"}],"id":11032,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11033,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11026,"type":"bool","value":"_transferable_"},"id":11034,"name":"Identifier","src":"1589:14:25"}],"id":11035,"name":"Assignment","src":"1571:32:25"}],"id":11036,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11037,"name":"Identifier","src":"1687:15:25"}],"id":11038,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11018,"type":"function (address)","value":"LockedOwnership"},"id":11039,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11024,"type":"address payable","value":"_account_"},"id":11040,"name":"Identifier","src":"1739:9:25"}],"id":11041,"name":"FunctionCall","src":"1723:26:25"}],"id":11042,"name":"EmitStatement","src":"1718:31:25"}],"id":11043,"name":"Block","src":"1704:56:25"}],"id":11044,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11014,"type":"function (address,address)","value":"TransferredOwnership"},"id":11045,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11046,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11047,"name":"Literal","src":"1803:1:25"}],"id":11048,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11024,"type":"address payable","value":"_account_"},"id":11049,"name":"Identifier","src":"1807:9:25"}],"id":11050,"name":"FunctionCall","src":"1774:43:25"}],"id":11051,"name":"EmitStatement","src":"1769:48:25"}],"id":11052,"name":"Block","src":"1533:291:25"}],"id":11053,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":11054,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":11055,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11162,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":11056,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":11057,"name":"Identifier","src":"1949:3:25"}],"id":11058,"name":"MemberAccess","src":"1949:10:25"}],"id":11059,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":11060,"name":"Literal","src":"1962:24:25"}],"id":11061,"name":"FunctionCall","src":"1932:55:25"}],"id":11062,"name":"ExpressionStatement","src":"1932:55:25"},{"id":11063,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":11064,"name":"Block","src":"1922:83:25"}],"id":11065,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":11163,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":11110,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11066,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":11067,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":11110,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11068,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":11069,"name":"VariableDeclaration","src":"2300:18:25"}],"id":11070,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":11073,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":11071,"name":"Identifier","src":"2329:9:25"}],"id":11072,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":11074,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11075,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":11076,"name":"Literal","src":"2429:31:25"}],"id":11077,"name":"FunctionCall","src":"2404:57:25"}],"id":11078,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":11079,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11067,"type":"address payable","value":"_account"},"id":11080,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11081,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11082,"name":"Literal","src":"2562:1:25"}],"id":11083,"name":"FunctionCall","src":"2554:10:25"}],"id":11084,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":11085,"name":"Literal","src":"2566:37:25"}],"id":11086,"name":"FunctionCall","src":"2534:70:25"}],"id":11087,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11088,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11069,"type":"bool","value":"_transferable"},"id":11089,"name":"Identifier","src":"2707:13:25"}],"id":11090,"name":"Assignment","src":"2689:31:25"}],"id":11091,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11069,"type":"bool","value":"_transferable"},"id":11092,"name":"Identifier","src":"2804:13:25"}],"id":11093,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11018,"type":"function (address)","value":"LockedOwnership"},"id":11094,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11067,"type":"address payable","value":"_account"},"id":11095,"name":"Identifier","src":"2854:8:25"}],"id":11096,"name":"FunctionCall","src":"2838:25:25"}],"id":11097,"name":"EmitStatement","src":"2833:30:25"}],"id":11098,"name":"Block","src":"2819:55:25"}],"id":11099,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11014,"type":"function (address,address)","value":"TransferredOwnership"},"id":11100,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11101,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11067,"type":"address payable","value":"_account"},"id":11102,"name":"Identifier","src":"2963:8:25"}],"id":11103,"name":"FunctionCall","src":"2934:38:25"}],"id":11104,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11105,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11067,"type":"address payable","value":"_account"},"id":11106,"name":"Identifier","src":"3041:8:25"}],"id":11107,"name":"Assignment","src":"3032:17:25"}],"id":11108,"name":"ExpressionStatement","src":"3032:17:25"}],"id":11109,"name":"Block","src":"2339:717:25"}],"id":11110,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":11163,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":11111,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":11118,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11112,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":11113,"name":"VariableDeclaration","src":"3222:4:25"}],"id":11114,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":11114},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11115,"name":"Identifier","src":"3245:15:25"}],"id":11116,"name":"Return","src":"3238:22:25"}],"id":11117,"name":"Block","src":"3228:39:25"}],"id":11118,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":11163,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":11119,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":11122,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11065,"type":"modifier ()","value":"onlyOwner"},"id":11120,"name":"Identifier","src":"3581:9:25"}],"id":11121,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":11123,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11022,"type":"bool","value":"_isTransferable"},"id":11124,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":11125,"name":"Literal","src":"3681:31:25"}],"id":11126,"name":"FunctionCall","src":"3656:57:25"}],"id":11127,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11128,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11129,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11130,"name":"Literal","src":"3784:1:25"}],"id":11131,"name":"FunctionCall","src":"3776:10:25"}],"id":11132,"name":"Assignment","src":"3767:19:25"}],"id":11133,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":11014,"type":"function (address,address)","value":"TransferredOwnership"},"id":11134,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11135,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":11136,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":11137,"name":"Literal","src":"3839:1:25"}],"id":11138,"name":"FunctionCall","src":"3831:10:25"}],"id":11139,"name":"FunctionCall","src":"3802:40:25"}],"id":11140,"name":"EmitStatement","src":"3797:45:25"}],"id":11141,"name":"Block","src":"3591:258:25"}],"id":11142,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":11163,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":11143,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":11150,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":11144,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":11145,"name":"VariableDeclaration","src":"3970:15:25"}],"id":11146,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":11146},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11147,"name":"Identifier","src":"4004:6:25"}],"id":11148,"name":"Return","src":"3997:13:25"}],"id":11149,"name":"Block","src":"3987:30:25"}],"id":11150,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":11163,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":11162,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11151,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":11152,"name":"VariableDeclaration","src":"4141:16:25"}],"id":11153,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":11162,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":11154,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":11155,"name":"VariableDeclaration","src":"4182:4:25"}],"id":11156,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":11156},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11152,"type":"address","value":"_address"},"id":11157,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":11020,"type":"address payable","value":"_owner"},"id":11158,"name":"Identifier","src":"4217:6:25"}],"id":11159,"name":"BinaryOperation","src":"4205:18:25"}],"id":11160,"name":"Return","src":"4198:25:25"}],"id":11161,"name":"Block","src":"4188:42:25"}],"id":11162,"name":"FunctionDefinition","src":"4123:107:25"}],"id":11163,"name":"ContractDefinition","src":"1149:3083:25"}],"id":11164,"name":"SourceUnit","src":"767:3466:25"}},"internals/parseIntScientific.sol":{"AST":{"attributes":{"absolutePath":"internals/parseIntScientific.sol","exportedSymbols":{"ParseIntScientific":[8724]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8165,"name":"PragmaDirective","src":"777:24:26"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":8725,"symbolAliases":[null],"unitAlias":""},"id":8166,"name":"ImportDirective","src":"803:35:26"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ParseIntScientific provides floating point in scientific notation (e.g. e-5) parsing functionality.","fullyImplemented":true,"linearizedBaseContracts":[8724],"name":"ParseIntScientific","scope":8725},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":8167,"name":"UserDefinedTypeName","src":"992:8:26"},{"attributes":{"name":"uint256","type":"uint256"},"id":8168,"name":"ElementaryTypeName","src":"1005:7:26"}],"id":8169,"name":"UsingForDirective","src":"986:27:26"},{"attributes":{"constant":true,"name":"_PLUS_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8170,"name":"ElementaryTypeName","src":"1019:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8171,"name":"ElementaryTypeNameExpression","src":"1057:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_43_by_1","typeString":"int_const 43"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8172,"name":"ElementaryTypeNameExpression","src":"1064:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3433","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 43","value":"43"},"id":8173,"name":"Literal","src":"1070:2:26"}],"id":8174,"name":"FunctionCall","src":"1064:9:26"}],"id":8175,"name":"FunctionCall","src":"1057:17:26"}],"id":8176,"name":"VariableDeclaration","src":"1019:55:26"},{"attributes":{"constant":true,"name":"_DASH_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8177,"name":"ElementaryTypeName","src":"1103:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8178,"name":"ElementaryTypeNameExpression","src":"1141:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_45_by_1","typeString":"int_const 45"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8179,"name":"ElementaryTypeNameExpression","src":"1148:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3435","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 45","value":"45"},"id":8180,"name":"Literal","src":"1154:2:26"}],"id":8181,"name":"FunctionCall","src":"1148:9:26"}],"id":8182,"name":"FunctionCall","src":"1141:17:26"}],"id":8183,"name":"VariableDeclaration","src":"1103:55:26"},{"attributes":{"constant":true,"name":"_DOT_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8184,"name":"ElementaryTypeName","src":"1187:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8185,"name":"ElementaryTypeNameExpression","src":"1224:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_46_by_1","typeString":"int_const 46"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8186,"name":"ElementaryTypeNameExpression","src":"1231:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3436","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 46","value":"46"},"id":8187,"name":"Literal","src":"1237:2:26"}],"id":8188,"name":"FunctionCall","src":"1231:9:26"}],"id":8189,"name":"FunctionCall","src":"1224:17:26"}],"id":8190,"name":"VariableDeclaration","src":"1187:54:26"},{"attributes":{"constant":true,"name":"_ZERO_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8191,"name":"ElementaryTypeName","src":"1270:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8192,"name":"ElementaryTypeNameExpression","src":"1308:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8193,"name":"ElementaryTypeNameExpression","src":"1315:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"48"},"id":8194,"name":"Literal","src":"1321:2:26"}],"id":8195,"name":"FunctionCall","src":"1315:9:26"}],"id":8196,"name":"FunctionCall","src":"1308:17:26"}],"id":8197,"name":"VariableDeclaration","src":"1270:55:26"},{"attributes":{"constant":true,"name":"_NINE_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8198,"name":"ElementaryTypeName","src":"1354:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8199,"name":"ElementaryTypeNameExpression","src":"1392:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_57_by_1","typeString":"int_const 57"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8200,"name":"ElementaryTypeNameExpression","src":"1399:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3537","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 57","value":"57"},"id":8201,"name":"Literal","src":"1405:2:26"}],"id":8202,"name":"FunctionCall","src":"1399:9:26"}],"id":8203,"name":"FunctionCall","src":"1392:17:26"}],"id":8204,"name":"VariableDeclaration","src":"1354:55:26"},{"attributes":{"constant":true,"name":"_E_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8205,"name":"ElementaryTypeName","src":"1438:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8206,"name":"ElementaryTypeNameExpression","src":"1473:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_69_by_1","typeString":"int_const 69"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8207,"name":"ElementaryTypeNameExpression","src":"1480:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3639","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 69","value":"69"},"id":8208,"name":"Literal","src":"1486:2:26"}],"id":8209,"name":"FunctionCall","src":"1480:9:26"}],"id":8210,"name":"FunctionCall","src":"1473:17:26"}],"id":8211,"name":"VariableDeclaration","src":"1438:52:26"},{"attributes":{"constant":true,"name":"_LOWERCASE_E_ASCII","scope":8724,"stateVariable":true,"storageLocation":"default","type":"bytes1","visibility":"private"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":8212,"name":"ElementaryTypeName","src":"1519:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes1","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes1)","value":"bytes1"},"id":8213,"name":"ElementaryTypeNameExpression","src":"1564:6:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_101_by_1","typeString":"int_const 101"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8214,"name":"ElementaryTypeNameExpression","src":"1571:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"313031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 101","value":"101"},"id":8215,"name":"Literal","src":"1577:3:26"}],"id":8216,"name":"FunctionCall","src":"1571:10:26"}],"id":8217,"name":"FunctionCall","src":"1564:18:26"}],"id":8218,"name":"VariableDeclaration","src":"1519:63:26"},{"attributes":{"documentation":"@notice ParseIntScientific delegates the call to _parseIntScientific(string, uint) with the 2nd argument being 0.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_parseIntScientific","scope":8724,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_inString","scope":8231,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8219,"name":"ElementaryTypeName","src":"1763:6:26"}],"id":8220,"name":"VariableDeclaration","src":"1763:23:26"}],"id":8221,"name":"ParameterList","src":"1762:25:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":8231,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8222,"name":"ElementaryTypeName","src":"1811:7:26"}],"id":8223,"name":"VariableDeclaration","src":"1811:7:26"}],"id":8224,"name":"ParameterList","src":"1810:9:26"},{"children":[{"attributes":{"functionReturnParameters":8224},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8723,"type":"function (string memory,uint256) pure returns (uint256)","value":"_parseIntScientific"},"id":8225,"name":"Identifier","src":"1837:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8220,"type":"string memory","value":"_inString"},"id":8226,"name":"Identifier","src":"1857:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8227,"name":"Literal","src":"1868:1:26"}],"id":8228,"name":"FunctionCall","src":"1837:33:26"}],"id":8229,"name":"Return","src":"1830:40:26"}],"id":8230,"name":"Block","src":"1820:57:26"}],"id":8231,"name":"FunctionDefinition","src":"1734:143:26"},{"attributes":{"documentation":"@notice ParseIntScientificWei parses a rate expressed in ETH and returns its wei denomination","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_parseIntScientificWei","scope":8724,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_inString","scope":8244,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8232,"name":"ElementaryTypeName","src":"2017:6:26"}],"id":8233,"name":"VariableDeclaration","src":"2017:23:26"}],"id":8234,"name":"ParameterList","src":"2016:25:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":8244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8235,"name":"ElementaryTypeName","src":"2065:7:26"}],"id":8236,"name":"VariableDeclaration","src":"2065:7:26"}],"id":8237,"name":"ParameterList","src":"2064:9:26"},{"children":[{"attributes":{"functionReturnParameters":8237},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_rational_18_by_1","typeString":"int_const 18"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8723,"type":"function (string memory,uint256) pure returns (uint256)","value":"_parseIntScientific"},"id":8238,"name":"Identifier","src":"2091:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8233,"type":"string memory","value":"_inString"},"id":8239,"name":"Identifier","src":"2111:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3138","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18","value":"18"},"id":8240,"name":"Literal","src":"2122:2:26"}],"id":8241,"name":"FunctionCall","src":"2091:34:26"}],"id":8242,"name":"Return","src":"2084:41:26"}],"id":8243,"name":"Block","src":"2074:58:26"}],"id":8244,"name":"FunctionDefinition","src":"1985:147:26"},{"attributes":{"documentation":"@notice ParseIntScientific parses a JSON standard - floating point number.\n @param _inString is input string.\n @param _magnitudeMult multiplies the number with 10^_magnitudeMult.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_parseIntScientific","scope":8724,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_inString","scope":8723,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8245,"name":"ElementaryTypeName","src":"2368:6:26"}],"id":8246,"name":"VariableDeclaration","src":"2368:23:26"},{"attributes":{"constant":false,"name":"_magnitudeMult","scope":8723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8247,"name":"ElementaryTypeName","src":"2393:7:26"}],"id":8248,"name":"VariableDeclaration","src":"2393:22:26"}],"id":8249,"name":"ParameterList","src":"2367:49:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":8723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8250,"name":"ElementaryTypeName","src":"2440:7:26"}],"id":8251,"name":"VariableDeclaration","src":"2440:7:26"}],"id":8252,"name":"ParameterList","src":"2439:9:26"},{"children":[{"attributes":{"assignments":[8254]},"children":[{"attributes":{"constant":false,"name":"inBytes","scope":8722,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8253,"name":"ElementaryTypeName","src":"2459:5:26"}],"id":8254,"name":"VariableDeclaration","src":"2459:20:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":8255,"name":"ElementaryTypeNameExpression","src":"2482:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8246,"type":"string memory","value":"_inString"},"id":8256,"name":"Identifier","src":"2488:9:26"}],"id":8257,"name":"FunctionCall","src":"2482:16:26"}],"id":8258,"name":"VariableDeclarationStatement","src":"2459:39:26"},{"attributes":{"assignments":[8260]},"children":[{"attributes":{"constant":false,"name":"mint","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8259,"name":"ElementaryTypeName","src":"2508:7:26"}],"id":8260,"name":"VariableDeclaration","src":"2508:12:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8261,"name":"Literal","src":"2523:1:26"}],"id":8262,"name":"VariableDeclarationStatement","src":"2508:16:26"},{"attributes":{"assignments":[8264]},"children":[{"attributes":{"constant":false,"name":"mintDec","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8263,"name":"ElementaryTypeName","src":"2561:7:26"}],"id":8264,"name":"VariableDeclaration","src":"2561:15:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8265,"name":"Literal","src":"2579:1:26"}],"id":8266,"name":"VariableDeclarationStatement","src":"2561:19:26"},{"attributes":{"assignments":[8268]},"children":[{"attributes":{"constant":false,"name":"mintExp","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8267,"name":"ElementaryTypeName","src":"2630:7:26"}],"id":8268,"name":"VariableDeclaration","src":"2630:15:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8269,"name":"Literal","src":"2648:1:26"}],"id":8270,"name":"VariableDeclarationStatement","src":"2630:19:26"},{"attributes":{"assignments":[8272]},"children":[{"attributes":{"constant":false,"name":"decMinted","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8271,"name":"ElementaryTypeName","src":"2675:7:26"}],"id":8272,"name":"VariableDeclaration","src":"2675:17:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8273,"name":"Literal","src":"2695:1:26"}],"id":8274,"name":"VariableDeclarationStatement","src":"2675:21:26"},{"attributes":{"assignments":[8276]},"children":[{"attributes":{"constant":false,"name":"expIndex","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8275,"name":"ElementaryTypeName","src":"2742:7:26"}],"id":8276,"name":"VariableDeclaration","src":"2742:16:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8277,"name":"Literal","src":"2761:1:26"}],"id":8278,"name":"VariableDeclarationStatement","src":"2742:20:26"},{"attributes":{"assignments":[8280]},"children":[{"attributes":{"constant":false,"name":"integral","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8279,"name":"ElementaryTypeName","src":"2836:4:26"}],"id":8280,"name":"VariableDeclaration","src":"2836:13:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8281,"name":"Literal","src":"2852:5:26"}],"id":8282,"name":"VariableDeclarationStatement","src":"2836:21:26"},{"attributes":{"assignments":[8284]},"children":[{"attributes":{"constant":false,"name":"decimals","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8283,"name":"ElementaryTypeName","src":"2984:4:26"}],"id":8284,"name":"VariableDeclaration","src":"2984:13:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8285,"name":"Literal","src":"3000:5:26"}],"id":8286,"name":"VariableDeclarationStatement","src":"2984:21:26"},{"attributes":{"assignments":[8288]},"children":[{"attributes":{"constant":false,"name":"exp","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8287,"name":"ElementaryTypeName","src":"3074:4:26"}],"id":8288,"name":"VariableDeclaration","src":"3074:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8289,"name":"Literal","src":"3085:5:26"}],"id":8290,"name":"VariableDeclarationStatement","src":"3074:16:26"},{"attributes":{"assignments":[8292]},"children":[{"attributes":{"constant":false,"name":"minus","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8291,"name":"ElementaryTypeName","src":"3174:4:26"}],"id":8292,"name":"VariableDeclaration","src":"3174:10:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8293,"name":"Literal","src":"3187:5:26"}],"id":8294,"name":"VariableDeclarationStatement","src":"3174:18:26"},{"attributes":{"assignments":[8296]},"children":[{"attributes":{"constant":false,"name":"plus","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8295,"name":"ElementaryTypeName","src":"3243:4:26"}],"id":8296,"name":"VariableDeclaration","src":"3243:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8297,"name":"Literal","src":"3255:5:26"}],"id":8298,"name":"VariableDeclarationStatement","src":"3243:17:26"},{"attributes":{"assignments":[8300],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"i","scope":8722,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8299,"name":"ElementaryTypeName","src":"3311:7:26"}],"id":8300,"name":"VariableDeclaration","src":"3311:9:26"}],"id":8301,"name":"VariableDeclarationStatement","src":"3311:9:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8302,"name":"Identifier","src":"3335:1:26"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8303,"name":"Literal","src":"3339:1:26"}],"id":8304,"name":"Assignment","src":"3335:5:26"}],"id":8305,"name":"ExpressionStatement","src":"3335:5:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8306,"name":"Identifier","src":"3342:1:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8307,"name":"Identifier","src":"3346:7:26"}],"id":8308,"name":"MemberAccess","src":"3346:14:26"}],"id":8309,"name":"BinaryOperation","src":"3342:18:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8310,"name":"Identifier","src":"3362:1:26"}],"id":8311,"name":"UnaryOperation","src":"3362:3:26"}],"id":8312,"name":"ExpressionStatement","src":"3362:3:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8313,"name":"Identifier","src":"3386:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8314,"name":"Identifier","src":"3394:1:26"}],"id":8315,"name":"IndexAccess","src":"3386:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8316,"name":"Identifier","src":"3400:11:26"}],"id":8317,"name":"BinaryOperation","src":"3386:25:26"}],"id":8318,"name":"TupleExpression","src":"3385:27:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8319,"name":"Identifier","src":"3417:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8320,"name":"Identifier","src":"3425:1:26"}],"id":8321,"name":"IndexAccess","src":"3417:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8204,"type":"bytes1","value":"_NINE_ASCII"},"id":8322,"name":"Identifier","src":"3431:11:26"}],"id":8323,"name":"BinaryOperation","src":"3417:25:26"}],"id":8324,"name":"TupleExpression","src":"3416:27:26"}],"id":8325,"name":"BinaryOperation","src":"3385:58:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8326,"name":"Identifier","src":"3449:3:26"}],"id":8327,"name":"UnaryOperation","src":"3448:4:26"}],"id":8328,"name":"TupleExpression","src":"3447:6:26"}],"id":8329,"name":"BinaryOperation","src":"3385:68:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8284,"type":"bool","value":"decimals"},"id":8330,"name":"Identifier","src":"3554:8:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8331,"name":"Identifier","src":"3690:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8332,"name":"Identifier","src":"3700:7:26"}],"id":8333,"name":"MemberAccess","src":"3700:11:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8334,"name":"Literal","src":"3712:2:26"}],"id":8335,"name":"FunctionCall","src":"3700:15:26"}],"id":8336,"name":"Assignment","src":"3690:25:26"}],"id":8337,"name":"ExpressionStatement","src":"3690:25:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8338,"name":"Identifier","src":"3737:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8339,"name":"Identifier","src":"3747:7:26"}],"id":8340,"name":"MemberAccess","src":"3747:11:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8341,"name":"ElementaryTypeNameExpression","src":"3759:5:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8342,"name":"Identifier","src":"3765:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8343,"name":"Identifier","src":"3773:1:26"}],"id":8344,"name":"IndexAccess","src":"3765:10:26"}],"id":8345,"name":"FunctionCall","src":"3759:17:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8346,"name":"ElementaryTypeNameExpression","src":"3779:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8347,"name":"Identifier","src":"3785:11:26"}],"id":8348,"name":"FunctionCall","src":"3779:18:26"}],"id":8349,"name":"BinaryOperation","src":"3759:38:26"}],"id":8350,"name":"FunctionCall","src":"3747:51:26"}],"id":8351,"name":"Assignment","src":"3737:61:26"}],"id":8352,"name":"ExpressionStatement","src":"3737:61:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8353,"name":"Identifier","src":"3820:9:26"}],"id":8354,"name":"UnaryOperation","src":"3820:11:26"}],"id":8355,"name":"ExpressionStatement","src":"3820:11:26"}],"id":8356,"name":"Block","src":"3564:316:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8280,"type":"bool","value":"integral"},"id":8357,"name":"Identifier","src":"3958:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8358,"name":"Literal","src":"3969:4:26"}],"id":8359,"name":"Assignment","src":"3958:15:26"}],"id":8360,"name":"ExpressionStatement","src":"3958:15:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8361,"name":"Identifier","src":"4060:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8362,"name":"Identifier","src":"4067:4:26"}],"id":8363,"name":"MemberAccess","src":"4067:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8364,"name":"Literal","src":"4076:2:26"}],"id":8365,"name":"FunctionCall","src":"4067:12:26"}],"id":8366,"name":"Assignment","src":"4060:19:26"}],"id":8367,"name":"ExpressionStatement","src":"4060:19:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8368,"name":"Identifier","src":"4101:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8369,"name":"Identifier","src":"4108:4:26"}],"id":8370,"name":"MemberAccess","src":"4108:8:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8371,"name":"ElementaryTypeNameExpression","src":"4117:5:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8372,"name":"Identifier","src":"4123:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8373,"name":"Identifier","src":"4131:1:26"}],"id":8374,"name":"IndexAccess","src":"4123:10:26"}],"id":8375,"name":"FunctionCall","src":"4117:17:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8376,"name":"ElementaryTypeNameExpression","src":"4137:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8377,"name":"Identifier","src":"4143:11:26"}],"id":8378,"name":"FunctionCall","src":"4137:18:26"}],"id":8379,"name":"BinaryOperation","src":"4117:38:26"}],"id":8380,"name":"FunctionCall","src":"4108:48:26"}],"id":8381,"name":"Assignment","src":"4101:55:26"}],"id":8382,"name":"ExpressionStatement","src":"4101:55:26"}],"id":8383,"name":"Block","src":"3886:289:26"}],"id":8384,"name":"IfStatement","src":"3550:625:26"}],"id":8385,"name":"Block","src":"3455:734:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8386,"name":"Identifier","src":"4200:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8387,"name":"Identifier","src":"4208:1:26"}],"id":8388,"name":"IndexAccess","src":"4200:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8389,"name":"Identifier","src":"4214:11:26"}],"id":8390,"name":"BinaryOperation","src":"4200:25:26"}],"id":8391,"name":"TupleExpression","src":"4199:27:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8392,"name":"Identifier","src":"4231:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8393,"name":"Identifier","src":"4239:1:26"}],"id":8394,"name":"IndexAccess","src":"4231:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8204,"type":"bytes1","value":"_NINE_ASCII"},"id":8395,"name":"Identifier","src":"4245:11:26"}],"id":8396,"name":"BinaryOperation","src":"4231:25:26"}],"id":8397,"name":"TupleExpression","src":"4230:27:26"}],"id":8398,"name":"BinaryOperation","src":"4199:58:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8399,"name":"Identifier","src":"4262:3:26"}],"id":8400,"name":"TupleExpression","src":"4261:5:26"}],"id":8401,"name":"BinaryOperation","src":"4199:67:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8402,"name":"Identifier","src":"4369:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_10_by_1","typeString":"int_const 10"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8403,"name":"Identifier","src":"4379:7:26"}],"id":8404,"name":"MemberAccess","src":"4379:11:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8405,"name":"Literal","src":"4391:2:26"}],"id":8406,"name":"FunctionCall","src":"4379:15:26"}],"id":8407,"name":"Assignment","src":"4369:25:26"}],"id":8408,"name":"ExpressionStatement","src":"4369:25:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8409,"name":"Identifier","src":"4412:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8410,"name":"Identifier","src":"4422:7:26"}],"id":8411,"name":"MemberAccess","src":"4422:11:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8412,"name":"ElementaryTypeNameExpression","src":"4434:5:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8413,"name":"Identifier","src":"4440:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8414,"name":"Identifier","src":"4448:1:26"}],"id":8415,"name":"IndexAccess","src":"4440:10:26"}],"id":8416,"name":"FunctionCall","src":"4434:17:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":8417,"name":"ElementaryTypeNameExpression","src":"4454:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"bytes1","value":"_ZERO_ASCII"},"id":8418,"name":"Identifier","src":"4460:11:26"}],"id":8419,"name":"FunctionCall","src":"4454:18:26"}],"id":8420,"name":"BinaryOperation","src":"4434:38:26"}],"id":8421,"name":"FunctionCall","src":"4422:51:26"}],"id":8422,"name":"Assignment","src":"4412:61:26"}],"id":8423,"name":"ExpressionStatement","src":"4412:61:26"}],"id":8424,"name":"Block","src":"4268:220:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8425,"name":"Identifier","src":"4498:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8426,"name":"Identifier","src":"4506:1:26"}],"id":8427,"name":"IndexAccess","src":"4498:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8190,"type":"bytes1","value":"_DOT_ASCII"},"id":8428,"name":"Identifier","src":"4512:10:26"}],"id":8429,"name":"BinaryOperation","src":"4498:24:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc48b10531bbe78174fcd32830f069ab53734b829ba761f546093e1cc82044f9","typeString":"literal_string \"missing integral part\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8430,"name":"Identifier","src":"4615:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8280,"type":"bool","value":"integral"},"id":8431,"name":"Identifier","src":"4623:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d697373696e6720696e74656772616c2070617274","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"missing integral part\"","value":"missing integral part"},"id":8432,"name":"Literal","src":"4633:23:26"}],"id":8433,"name":"FunctionCall","src":"4615:42:26"}],"id":8434,"name":"ExpressionStatement","src":"4615:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_faa389cc400e7ca78bd15c3a29e23853df4262382ca0cceec80a1c591657d449","typeString":"literal_string \"duplicate decimal point\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8435,"name":"Identifier","src":"4742:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8284,"type":"bool","value":"decimals"},"id":8436,"name":"Identifier","src":"4751:8:26"}],"id":8437,"name":"UnaryOperation","src":"4750:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6475706c696361746520646563696d616c20706f696e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"duplicate decimal point\"","value":"duplicate decimal point"},"id":8438,"name":"Literal","src":"4761:25:26"}],"id":8439,"name":"FunctionCall","src":"4742:45:26"}],"id":8440,"name":"ExpressionStatement","src":"4742:45:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8883756a1c35ace1de2a0992a35b0cd26b81e10ff40d67218af35e2d14d539dd","typeString":"literal_string \"decimal after exponent\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8441,"name":"Identifier","src":"4878:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8442,"name":"Identifier","src":"4887:3:26"}],"id":8443,"name":"UnaryOperation","src":"4886:4:26"},{"attributes":{"argumentTypes":null,"hexvalue":"646563696d616c206166746572206578706f6e656e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"decimal after exponent\"","value":"decimal after exponent"},"id":8444,"name":"Literal","src":"4892:24:26"}],"id":8445,"name":"FunctionCall","src":"4878:39:26"}],"id":8446,"name":"ExpressionStatement","src":"4878:39:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8284,"type":"bool","value":"decimals"},"id":8447,"name":"Identifier","src":"4935:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8448,"name":"Literal","src":"4946:4:26"}],"id":8449,"name":"Assignment","src":"4935:15:26"}],"id":8450,"name":"ExpressionStatement","src":"4935:15:26"}],"id":8451,"name":"Block","src":"4524:441:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8452,"name":"Identifier","src":"4975:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8453,"name":"Identifier","src":"4983:1:26"}],"id":8454,"name":"IndexAccess","src":"4975:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8183,"type":"bytes1","value":"_DASH_ASCII"},"id":8455,"name":"Identifier","src":"4989:11:26"}],"id":8456,"name":"BinaryOperation","src":"4975:25:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fddc956a222b6104f304a9e26f8b7fd82d48f9d168c32972a3d2f6ffe06e8c4f","typeString":"literal_string \"duplicate -\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8457,"name":"Identifier","src":"5094:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8458,"name":"Identifier","src":"5103:5:26"}],"id":8459,"name":"UnaryOperation","src":"5102:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6475706c6963617465202d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"duplicate -\"","value":"duplicate -"},"id":8460,"name":"Literal","src":"5110:13:26"}],"id":8461,"name":"FunctionCall","src":"5094:30:26"}],"id":8462,"name":"ExpressionStatement","src":"5094:30:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bab8ec0ce562a399c5e585804d653b1b054aeb400ff689348a971eba5722aac6","typeString":"literal_string \"extra sign\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8463,"name":"Identifier","src":"5142:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8296,"type":"bool","value":"plus"},"id":8464,"name":"Identifier","src":"5151:4:26"}],"id":8465,"name":"UnaryOperation","src":"5150:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6578747261207369676e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"extra sign\"","value":"extra sign"},"id":8466,"name":"Literal","src":"5157:12:26"}],"id":8467,"name":"FunctionCall","src":"5142:28:26"}],"id":8468,"name":"ExpressionStatement","src":"5142:28:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_08b50295d4c3982734373058e6c6cc20446016e7f4adb2988978b0977d838340","typeString":"literal_string \"- sign not immediately after e\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8469,"name":"Identifier","src":"5188:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8470,"name":"Identifier","src":"5196:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8471,"name":"Literal","src":"5207:1:26"}],"id":8472,"name":"BinaryOperation","src":"5196:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8473,"name":"Identifier","src":"5212:1:26"}],"id":8474,"name":"BinaryOperation","src":"5196:17:26"},{"attributes":{"argumentTypes":null,"hexvalue":"2d207369676e206e6f7420696d6d6564696174656c792061667465722065","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"- sign not immediately after e\"","value":"- sign not immediately after e"},"id":8475,"name":"Literal","src":"5215:32:26"}],"id":8476,"name":"FunctionCall","src":"5188:60:26"}],"id":8477,"name":"ExpressionStatement","src":"5188:60:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8478,"name":"Identifier","src":"5266:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8479,"name":"Literal","src":"5274:4:26"}],"id":8480,"name":"Assignment","src":"5266:12:26"}],"id":8481,"name":"ExpressionStatement","src":"5266:12:26"}],"id":8482,"name":"Block","src":"5002:291:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8483,"name":"Identifier","src":"5303:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8484,"name":"Identifier","src":"5311:1:26"}],"id":8485,"name":"IndexAccess","src":"5303:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8176,"type":"bytes1","value":"_PLUS_ASCII"},"id":8486,"name":"Identifier","src":"5317:11:26"}],"id":8487,"name":"BinaryOperation","src":"5303:25:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fb5f98f55e56ac8a60ebdeabdabc0be14716c6a604a48c04783fed56a7e93a9","typeString":"literal_string \"duplicate +\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8488,"name":"Identifier","src":"5422:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8296,"type":"bool","value":"plus"},"id":8489,"name":"Identifier","src":"5431:4:26"}],"id":8490,"name":"UnaryOperation","src":"5430:5:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6475706c6963617465202b","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"duplicate +\"","value":"duplicate +"},"id":8491,"name":"Literal","src":"5437:13:26"}],"id":8492,"name":"FunctionCall","src":"5422:29:26"}],"id":8493,"name":"ExpressionStatement","src":"5422:29:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_bab8ec0ce562a399c5e585804d653b1b054aeb400ff689348a971eba5722aac6","typeString":"literal_string \"extra sign\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8494,"name":"Identifier","src":"5469:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8495,"name":"Identifier","src":"5478:5:26"}],"id":8496,"name":"UnaryOperation","src":"5477:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6578747261207369676e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"extra sign\"","value":"extra sign"},"id":8497,"name":"Literal","src":"5485:12:26"}],"id":8498,"name":"FunctionCall","src":"5469:29:26"}],"id":8499,"name":"ExpressionStatement","src":"5469:29:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0b6894ec12a87b2f0d7040decb56cfcd2617efb2e364cbbbf577d371ad72c6fc","typeString":"literal_string \"+ sign not immediately after e\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8500,"name":"Identifier","src":"5516:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8501,"name":"Identifier","src":"5524:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8502,"name":"Literal","src":"5535:1:26"}],"id":8503,"name":"BinaryOperation","src":"5524:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8504,"name":"Identifier","src":"5540:1:26"}],"id":8505,"name":"BinaryOperation","src":"5524:17:26"},{"attributes":{"argumentTypes":null,"hexvalue":"2b207369676e206e6f7420696d6d6564696174656c792061667465722065","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"+ sign not immediately after e\"","value":"+ sign not immediately after e"},"id":8506,"name":"Literal","src":"5543:32:26"}],"id":8507,"name":"FunctionCall","src":"5516:60:26"}],"id":8508,"name":"ExpressionStatement","src":"5516:60:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8296,"type":"bool","value":"plus"},"id":8509,"name":"Identifier","src":"5594:4:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8510,"name":"Literal","src":"5601:4:26"}],"id":8511,"name":"Assignment","src":"5594:11:26"}],"id":8512,"name":"ExpressionStatement","src":"5594:11:26"}],"id":8513,"name":"Block","src":"5330:290:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8514,"name":"Identifier","src":"5631:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8515,"name":"Identifier","src":"5639:1:26"}],"id":8516,"name":"IndexAccess","src":"5631:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8211,"type":"bytes1","value":"_E_ASCII"},"id":8517,"name":"Identifier","src":"5645:8:26"}],"id":8518,"name":"BinaryOperation","src":"5631:22:26"}],"id":8519,"name":"TupleExpression","src":"5630:24:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8254,"type":"bytes memory","value":"inBytes"},"id":8520,"name":"Identifier","src":"5659:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8521,"name":"Identifier","src":"5667:1:26"}],"id":8522,"name":"IndexAccess","src":"5659:10:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"bytes1","value":"_LOWERCASE_E_ASCII"},"id":8523,"name":"Identifier","src":"5673:18:26"}],"id":8524,"name":"BinaryOperation","src":"5659:32:26"}],"id":8525,"name":"TupleExpression","src":"5658:34:26"}],"id":8526,"name":"BinaryOperation","src":"5630:62:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc48b10531bbe78174fcd32830f069ab53734b829ba761f546093e1cc82044f9","typeString":"literal_string \"missing integral part\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8527,"name":"Identifier","src":"5785:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8280,"type":"bool","value":"integral"},"id":8528,"name":"Identifier","src":"5793:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d697373696e6720696e74656772616c2070617274","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"missing integral part\"","value":"missing integral part"},"id":8529,"name":"Literal","src":"5803:23:26"}],"id":8530,"name":"FunctionCall","src":"5785:42:26"}],"id":8531,"name":"ExpressionStatement","src":"5785:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8221306681a4710f7101aebec1a9ed39a02e65f2053accb8da82a8b8d265178b","typeString":"literal_string \"duplicate exponent symbol\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8532,"name":"Identifier","src":"5926:7:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8533,"name":"Identifier","src":"5935:3:26"}],"id":8534,"name":"UnaryOperation","src":"5934:4:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6475706c6963617465206578706f6e656e742073796d626f6c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"duplicate exponent symbol\"","value":"duplicate exponent symbol"},"id":8535,"name":"Literal","src":"5940:27:26"}],"id":8536,"name":"FunctionCall","src":"5926:42:26"}],"id":8537,"name":"ExpressionStatement","src":"5926:42:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8538,"name":"Identifier","src":"5986:3:26"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8539,"name":"Literal","src":"5992:4:26"}],"id":8540,"name":"Assignment","src":"5986:10:26"}],"id":8541,"name":"ExpressionStatement","src":"5986:10:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8542,"name":"Identifier","src":"6014:8:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8543,"name":"Identifier","src":"6025:1:26"}],"id":8544,"name":"Assignment","src":"6014:12:26"}],"id":8545,"name":"ExpressionStatement","src":"6014:12:26"}],"id":8546,"name":"Block","src":"5694:347:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_263e499057963449b94813024f498810f3a67efd8a4e3f85263ed86cf4c882d4","typeString":"literal_string \"invalid digit\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":8547,"name":"Identifier","src":"6065:6:26"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964206469676974","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid digit\"","value":"invalid digit"},"id":8548,"name":"Literal","src":"6072:15:26"}],"id":8549,"name":"FunctionCall","src":"6065:23:26"}],"id":8550,"name":"ExpressionStatement","src":"6065:23:26"}],"id":8551,"name":"Block","src":"6047:56:26"}],"id":8552,"name":"IfStatement","src":"5626:477:26"}],"id":8553,"name":"IfStatement","src":"5299:804:26"}],"id":8554,"name":"IfStatement","src":"4971:1132:26"}],"id":8555,"name":"IfStatement","src":"4494:1609:26"}],"id":8556,"name":"IfStatement","src":"4195:1908:26"}],"id":8557,"name":"IfStatement","src":"3381:2722:26"}],"id":8558,"name":"Block","src":"3367:2746:26"}],"id":8559,"name":"ForStatement","src":"3330:2783:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8560,"name":"Identifier","src":"6127:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8296,"type":"bool","value":"plus"},"id":8561,"name":"Identifier","src":"6136:4:26"}],"id":8562,"name":"BinaryOperation","src":"6127:13:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":8563,"name":"Identifier","src":"6224:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8564,"name":"Identifier","src":"6232:1:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8565,"name":"Identifier","src":"6236:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8566,"name":"Literal","src":"6247:1:26"}],"id":8567,"name":"BinaryOperation","src":"6236:12:26"}],"id":8568,"name":"BinaryOperation","src":"6232:16:26"}],"id":8569,"name":"FunctionCall","src":"6224:25:26"}],"id":8570,"name":"ExpressionStatement","src":"6224:25:26"}],"id":8571,"name":"Block","src":"6142:118:26"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8288,"type":"bool","value":"exp"},"id":8572,"name":"Identifier","src":"6270:3:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15712,"type":"function (bool) pure","value":"require"},"id":8573,"name":"Identifier","src":"6354:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8300,"type":"uint256","value":"i"},"id":8574,"name":"Identifier","src":"6362:1:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8276,"type":"uint256","value":"expIndex"},"id":8575,"name":"Identifier","src":"6366:8:26"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8576,"name":"Literal","src":"6377:1:26"}],"id":8577,"name":"BinaryOperation","src":"6366:12:26"}],"id":8578,"name":"BinaryOperation","src":"6362:16:26"}],"id":8579,"name":"FunctionCall","src":"6354:25:26"}],"id":8580,"name":"ExpressionStatement","src":"6354:25:26"}],"id":8581,"name":"Block","src":"6275:115:26"}],"id":8582,"name":"IfStatement","src":"6266:124:26"}],"id":8583,"name":"IfStatement","src":"6123:267:26"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8292,"type":"bool","value":"minus"},"id":8584,"name":"Identifier","src":"6404:5:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8585,"name":"Identifier","src":"6451:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8586,"name":"Identifier","src":"6462:14:26"}],"id":8587,"name":"BinaryOperation","src":"6451:25:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f98424152698a23aa5d00b5ca124c02ac74940e78996da7992f427dbf3c7fbaa","typeString":"literal_string \"exponent > 77\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8588,"name":"Identifier","src":"6660:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8589,"name":"Identifier","src":"6668:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8590,"name":"Identifier","src":"6678:14:26"}],"id":8591,"name":"BinaryOperation","src":"6668:24:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8592,"name":"Literal","src":"6695:2:26"}],"id":8593,"name":"BinaryOperation","src":"6668:29:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6578706f6e656e74203e203737","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"exponent > 77\"","value":"exponent > 77"},"id":8594,"name":"Literal","src":"6699:15:26"}],"id":8595,"name":"FunctionCall","src":"6660:55:26"}],"id":8596,"name":"ExpressionStatement","src":"6660:55:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8597,"name":"Identifier","src":"6736:4:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8598,"name":"Literal","src":"6744:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8599,"name":"Identifier","src":"6749:7:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8600,"name":"Identifier","src":"6759:14:26"}],"id":8601,"name":"BinaryOperation","src":"6749:24:26"}],"id":8602,"name":"TupleExpression","src":"6748:26:26"}],"id":8603,"name":"BinaryOperation","src":"6744:30:26"}],"id":8604,"name":"Assignment","src":"6736:38:26"}],"id":8605,"name":"ExpressionStatement","src":"6736:38:26"},{"attributes":{"functionReturnParameters":8252},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8606,"name":"Identifier","src":"6799:4:26"}],"id":8607,"name":"Return","src":"6792:11:26"}],"id":8608,"name":"Block","src":"6478:340:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8609,"name":"Identifier","src":"6988:14:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8610,"name":"Identifier","src":"7005:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8611,"name":"Identifier","src":"7022:7:26"}],"id":8612,"name":"BinaryOperation","src":"7005:24:26"}],"id":8613,"name":"Assignment","src":"6988:41:26"}],"id":8614,"name":"ExpressionStatement","src":"6988:41:26"}],"id":8615,"name":"Block","src":"6824:220:26"}],"id":8616,"name":"IfStatement","src":"6447:597:26"}],"id":8617,"name":"Block","src":"6411:643:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8618,"name":"Identifier","src":"7228:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8619,"name":"Identifier","src":"7245:14:26"}],"id":8620,"name":"MemberAccess","src":"7245:18:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8268,"type":"uint256","value":"mintExp"},"id":8621,"name":"Identifier","src":"7264:7:26"}],"id":8622,"name":"FunctionCall","src":"7245:27:26"}],"id":8623,"name":"Assignment","src":"7228:44:26"}],"id":8624,"name":"ExpressionStatement","src":"7228:44:26"}],"id":8625,"name":"Block","src":"7060:223:26"}],"id":8626,"name":"IfStatement","src":"6400:883:26"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8627,"name":"Identifier","src":"7297:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8628,"name":"Identifier","src":"7315:9:26"}],"id":8629,"name":"BinaryOperation","src":"7297:27:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_545d4fd2fc2d29577ea509f1f1de73a3a1e163ebbff71e310c3e36a13d2fa3fb","typeString":"literal_string \"more than 77 decimal digits parsed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8630,"name":"Identifier","src":"7545:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8631,"name":"Identifier","src":"7553:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8632,"name":"Literal","src":"7565:2:26"}],"id":8633,"name":"BinaryOperation","src":"7553:14:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f7265207468616e20373720646563696d616c2064696769747320706172736564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"more than 77 decimal digits parsed\"","value":"more than 77 decimal digits parsed"},"id":8634,"name":"Literal","src":"7569:36:26"}],"id":8635,"name":"FunctionCall","src":"7545:61:26"}],"id":8636,"name":"ExpressionStatement","src":"7545:61:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8637,"name":"Identifier","src":"7623:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8638,"name":"Identifier","src":"7630:4:26"}],"id":8639,"name":"MemberAccess","src":"7630:8:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8640,"name":"Literal","src":"7639:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8641,"name":"Identifier","src":"7644:9:26"}],"id":8642,"name":"TupleExpression","src":"7643:11:26"}],"id":8643,"name":"BinaryOperation","src":"7639:15:26"}],"id":8644,"name":"FunctionCall","src":"7630:25:26"}],"id":8645,"name":"Assignment","src":"7623:32:26"}],"id":8646,"name":"ExpressionStatement","src":"7623:32:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8647,"name":"Identifier","src":"7669:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8648,"name":"Identifier","src":"7676:4:26"}],"id":8649,"name":"MemberAccess","src":"7676:8:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8650,"name":"Identifier","src":"7685:7:26"}],"id":8651,"name":"FunctionCall","src":"7676:17:26"}],"id":8652,"name":"Assignment","src":"7669:24:26"}],"id":8653,"name":"ExpressionStatement","src":"7669:24:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f98424152698a23aa5d00b5ca124c02ac74940e78996da7992f427dbf3c7fbaa","typeString":"literal_string \"exponent > 77\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8654,"name":"Identifier","src":"7793:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8655,"name":"Identifier","src":"7801:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8656,"name":"Identifier","src":"7818:9:26"}],"id":8657,"name":"BinaryOperation","src":"7801:26:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8658,"name":"Literal","src":"7830:2:26"}],"id":8659,"name":"BinaryOperation","src":"7801:31:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6578706f6e656e74203e203737","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"exponent > 77\"","value":"exponent > 77"},"id":8660,"name":"Literal","src":"7834:15:26"}],"id":8661,"name":"FunctionCall","src":"7793:57:26"}],"id":8662,"name":"ExpressionStatement","src":"7793:57:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8663,"name":"Identifier","src":"7867:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8664,"name":"Identifier","src":"7874:4:26"}],"id":8665,"name":"MemberAccess","src":"7874:8:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8666,"name":"Literal","src":"7883:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8667,"name":"Identifier","src":"7888:14:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8668,"name":"Identifier","src":"7905:9:26"}],"id":8669,"name":"BinaryOperation","src":"7888:26:26"}],"id":8670,"name":"TupleExpression","src":"7887:28:26"}],"id":8671,"name":"BinaryOperation","src":"7883:32:26"}],"id":8672,"name":"FunctionCall","src":"7874:42:26"}],"id":8673,"name":"Assignment","src":"7867:49:26"}],"id":8674,"name":"ExpressionStatement","src":"7867:49:26"}],"id":8675,"name":"Block","src":"7326:601:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8676,"name":"Identifier","src":"8074:9:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8677,"name":"Identifier","src":"8087:14:26"}],"id":8678,"name":"Assignment","src":"8074:27:26"}],"id":8679,"name":"ExpressionStatement","src":"8074:27:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_545d4fd2fc2d29577ea509f1f1de73a3a1e163ebbff71e310c3e36a13d2fa3fb","typeString":"literal_string \"more than 77 decimal digits parsed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8680,"name":"Identifier","src":"8115:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8681,"name":"Identifier","src":"8123:9:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8682,"name":"Literal","src":"8135:2:26"}],"id":8683,"name":"BinaryOperation","src":"8123:14:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f7265207468616e20373720646563696d616c2064696769747320706172736564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"more than 77 decimal digits parsed\"","value":"more than 77 decimal digits parsed"},"id":8684,"name":"Literal","src":"8139:36:26"}],"id":8685,"name":"FunctionCall","src":"8115:61:26"}],"id":8686,"name":"ExpressionStatement","src":"8115:61:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8687,"name":"Identifier","src":"8193:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8688,"name":"Literal","src":"8204:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8272,"type":"uint256","value":"decMinted"},"id":8689,"name":"Identifier","src":"8209:9:26"}],"id":8690,"name":"TupleExpression","src":"8208:11:26"}],"id":8691,"name":"BinaryOperation","src":"8204:15:26"}],"id":8692,"name":"Assignment","src":"8193:26:26"}],"id":8693,"name":"ExpressionStatement","src":"8193:26:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_545d4fd2fc2d29577ea509f1f1de73a3a1e163ebbff71e310c3e36a13d2fa3fb","typeString":"literal_string \"more than 77 decimal digits parsed\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":8694,"name":"Identifier","src":"8293:7:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8695,"name":"Identifier","src":"8301:14:26"},{"attributes":{"argumentTypes":null,"hexvalue":"3738","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 78","value":"78"},"id":8696,"name":"Literal","src":"8318:2:26"}],"id":8697,"name":"BinaryOperation","src":"8301:19:26"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f7265207468616e20373720646563696d616c2064696769747320706172736564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"more than 77 decimal digits parsed\"","value":"more than 77 decimal digits parsed"},"id":8698,"name":"Literal","src":"8322:36:26"}],"id":8699,"name":"FunctionCall","src":"8293:66:26"}],"id":8700,"name":"ExpressionStatement","src":"8293:66:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8701,"name":"Identifier","src":"8376:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":1203,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8702,"name":"Identifier","src":"8383:4:26"}],"id":8703,"name":"MemberAccess","src":"8383:8:26"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":8704,"name":"Literal","src":"8392:2:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8248,"type":"uint256","value":"_magnitudeMult"},"id":8705,"name":"Identifier","src":"8397:14:26"}],"id":8706,"name":"TupleExpression","src":"8396:16:26"}],"id":8707,"name":"BinaryOperation","src":"8392:20:26"}],"id":8708,"name":"FunctionCall","src":"8383:30:26"}],"id":8709,"name":"Assignment","src":"8376:37:26"}],"id":8710,"name":"ExpressionStatement","src":"8376:37:26"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8711,"name":"Identifier","src":"8427:4:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8712,"name":"Identifier","src":"8434:4:26"}],"id":8713,"name":"MemberAccess","src":"8434:8:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8264,"type":"uint256","value":"mintDec"},"id":8714,"name":"Identifier","src":"8443:7:26"}],"id":8715,"name":"FunctionCall","src":"8434:17:26"}],"id":8716,"name":"Assignment","src":"8427:24:26"}],"id":8717,"name":"ExpressionStatement","src":"8427:24:26"}],"id":8718,"name":"Block","src":"7933:529:26"}],"id":8719,"name":"IfStatement","src":"7293:1169:26"},{"attributes":{"functionReturnParameters":8252},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"uint256","value":"mint"},"id":8720,"name":"Identifier","src":"8478:4:26"}],"id":8721,"name":"Return","src":"8471:11:26"}],"id":8722,"name":"Block","src":"2449:6040:26"}],"id":8723,"name":"FunctionDefinition","src":"2339:6150:26"}],"id":8724,"name":"ContractDefinition","src":"952:7539:26"}],"id":8725,"name":"SourceUnit","src":"777:7715:26"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[8941]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8726,"name":"PragmaDirective","src":"778:24:27"},{"attributes":{"SourceUnit":10735,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":8942,"symbolAliases":[null],"unitAlias":""},"id":8727,"name":"ImportDirective","src":"804:31:27"},{"attributes":{"SourceUnit":8164,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":8942,"symbolAliases":[null],"unitAlias":""},"id":8728,"name":"ImportDirective","src":"836:29:27"},{"attributes":{"contractDependencies":[8163],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[8941,8163],"name":"TokenWhitelistable","scope":8942},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":8163,"type":"contract ENSResolvable"},"id":8729,"name":"UserDefinedTypeName","src":"989:13:27"}],"id":8730,"name":"InheritanceSpecifier","src":"989:13:27"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":8941,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8731,"name":"ElementaryTypeName","src":"1092:7:27"}],"id":8732,"name":"VariableDeclaration","src":"1092:35:27"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":8941,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":8742,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8733,"name":"ElementaryTypeName","src":"1292:7:27"}],"id":8734,"name":"VariableDeclaration","src":"1292:28:27"}],"id":8735,"name":"ParameterList","src":"1291:30:27"},{"attributes":{"parameters":[null]},"children":[],"id":8736,"name":"ParameterList","src":"1331:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8737,"name":"Identifier","src":"1341:19:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8734,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":8738,"name":"Identifier","src":"1363:20:27"}],"id":8739,"name":"Assignment","src":"1341:42:27"}],"id":8740,"name":"ExpressionStatement","src":"1341:42:27"}],"id":8741,"name":"Block","src":"1331:59:27"}],"id":8742,"name":"FunctionDefinition","src":"1280:110:27"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8743,"name":"ParameterList","src":"1541:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8750,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8744,"name":"ElementaryTypeName","src":"1567:7:27"}],"id":8745,"name":"VariableDeclaration","src":"1567:7:27"}],"id":8746,"name":"ParameterList","src":"1566:9:27"},{"children":[{"attributes":{"functionReturnParameters":8746},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8747,"name":"Identifier","src":"1593:19:27"}],"id":8748,"name":"Return","src":"1586:26:27"}],"id":8749,"name":"Block","src":"1576:43:27"}],"id":8750,"name":"FunctionDefinition","src":"1514:105:27"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":8779,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8751,"name":"ElementaryTypeName","src":"2194:7:27"}],"id":8752,"name":"VariableDeclaration","src":"2194:10:27"}],"id":8753,"name":"ParameterList","src":"2193:12:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8754,"name":"ElementaryTypeName","src":"2229:6:27"}],"id":8755,"name":"VariableDeclaration","src":"2229:13:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8756,"name":"ElementaryTypeName","src":"2244:7:27"}],"id":8757,"name":"VariableDeclaration","src":"2244:7:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8758,"name":"ElementaryTypeName","src":"2253:7:27"}],"id":8759,"name":"VariableDeclaration","src":"2253:7:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8760,"name":"ElementaryTypeName","src":"2262:4:27"}],"id":8761,"name":"VariableDeclaration","src":"2262:4:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8762,"name":"ElementaryTypeName","src":"2268:4:27"}],"id":8763,"name":"VariableDeclaration","src":"2268:4:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8764,"name":"ElementaryTypeName","src":"2274:4:27"}],"id":8765,"name":"VariableDeclaration","src":"2274:4:27"},{"attributes":{"constant":false,"name":"","scope":8779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8766,"name":"ElementaryTypeName","src":"2280:7:27"}],"id":8767,"name":"VariableDeclaration","src":"2280:7:27"}],"id":8768,"name":"ParameterList","src":"2228:60:27"},{"children":[{"attributes":{"functionReturnParameters":8768},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":9772,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8769,"name":"Identifier","src":"2306:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8770,"name":"Identifier","src":"2322:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8771,"name":"Identifier","src":"2334:19:27"}],"id":8772,"name":"FunctionCall","src":"2322:32:27"}],"id":8773,"name":"FunctionCall","src":"2306:49:27"}],"id":8774,"name":"MemberAccess","src":"2306:62:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8752,"type":"address","value":"_a"},"id":8775,"name":"Identifier","src":"2369:2:27"}],"id":8776,"name":"FunctionCall","src":"2306:66:27"}],"id":8777,"name":"Return","src":"2299:73:27"}],"id":8778,"name":"Block","src":"2289:90:27"}],"id":8779,"name":"FunctionDefinition","src":"2171:208:27"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8780,"name":"ParameterList","src":"2914:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8781,"name":"ElementaryTypeName","src":"2940:6:27"}],"id":8782,"name":"VariableDeclaration","src":"2940:13:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8783,"name":"ElementaryTypeName","src":"2955:7:27"}],"id":8784,"name":"VariableDeclaration","src":"2955:7:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8785,"name":"ElementaryTypeName","src":"2964:7:27"}],"id":8786,"name":"VariableDeclaration","src":"2964:7:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8787,"name":"ElementaryTypeName","src":"2973:4:27"}],"id":8788,"name":"VariableDeclaration","src":"2973:4:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8789,"name":"ElementaryTypeName","src":"2979:4:27"}],"id":8790,"name":"VariableDeclaration","src":"2979:4:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8791,"name":"ElementaryTypeName","src":"2985:4:27"}],"id":8792,"name":"VariableDeclaration","src":"2985:4:27"},{"attributes":{"constant":false,"name":"","scope":8805,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8793,"name":"ElementaryTypeName","src":"2991:7:27"}],"id":8794,"name":"VariableDeclaration","src":"2991:7:27"}],"id":8795,"name":"ParameterList","src":"2939:60:27"},{"children":[{"attributes":{"functionReturnParameters":8795},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":9789,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8796,"name":"Identifier","src":"3017:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8797,"name":"Identifier","src":"3033:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8798,"name":"Identifier","src":"3045:19:27"}],"id":8799,"name":"FunctionCall","src":"3033:32:27"}],"id":8800,"name":"FunctionCall","src":"3017:49:27"}],"id":8801,"name":"MemberAccess","src":"3017:67:27"}],"id":8802,"name":"FunctionCall","src":"3017:69:27"}],"id":8803,"name":"Return","src":"3010:76:27"}],"id":8804,"name":"Block","src":"3000:93:27"}],"id":8805,"name":"FunctionDefinition","src":"2887:206:27"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8806,"name":"ParameterList","src":"3247:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8820,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8807,"name":"ElementaryTypeName","src":"3273:7:27"}],"id":8808,"name":"ArrayTypeName","src":"3273:9:27"}],"id":8809,"name":"VariableDeclaration","src":"3273:16:27"}],"id":8810,"name":"ParameterList","src":"3272:18:27"},{"children":[{"attributes":{"functionReturnParameters":8810},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":9795,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8811,"name":"Identifier","src":"3308:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8812,"name":"Identifier","src":"3324:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8813,"name":"Identifier","src":"3336:19:27"}],"id":8814,"name":"FunctionCall","src":"3324:32:27"}],"id":8815,"name":"FunctionCall","src":"3308:49:27"}],"id":8816,"name":"MemberAccess","src":"3308:67:27"}],"id":8817,"name":"FunctionCall","src":"3308:69:27"}],"id":8818,"name":"Return","src":"3301:76:27"}],"id":8819,"name":"Block","src":"3291:93:27"}],"id":8820,"name":"FunctionDefinition","src":"3220:164:27"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8821,"name":"ParameterList","src":"3537:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8835,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8822,"name":"ElementaryTypeName","src":"3563:7:27"}],"id":8823,"name":"ArrayTypeName","src":"3563:9:27"}],"id":8824,"name":"VariableDeclaration","src":"3563:16:27"}],"id":8825,"name":"ParameterList","src":"3562:18:27"},{"children":[{"attributes":{"functionReturnParameters":8825},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":9801,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8826,"name":"Identifier","src":"3598:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8827,"name":"Identifier","src":"3614:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8828,"name":"Identifier","src":"3626:19:27"}],"id":8829,"name":"FunctionCall","src":"3614:32:27"}],"id":8830,"name":"FunctionCall","src":"3598:49:27"}],"id":8831,"name":"MemberAccess","src":"3598:66:27"}],"id":8832,"name":"FunctionCall","src":"3598:68:27"}],"id":8833,"name":"Return","src":"3591:75:27"}],"id":8834,"name":"Block","src":"3581:92:27"}],"id":8835,"name":"FunctionDefinition","src":"3511:162:27"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":8941,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":8856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8836,"name":"ElementaryTypeName","src":"3976:7:27"}],"id":8837,"name":"VariableDeclaration","src":"3976:14:27"},{"attributes":{"constant":false,"name":"_rate","scope":8856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8838,"name":"ElementaryTypeName","src":"3992:7:27"}],"id":8839,"name":"VariableDeclaration","src":"3992:13:27"},{"attributes":{"constant":false,"name":"_updateDate","scope":8856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8840,"name":"ElementaryTypeName","src":"4007:7:27"}],"id":8841,"name":"VariableDeclaration","src":"4007:19:27"}],"id":8842,"name":"ParameterList","src":"3975:52:27"},{"attributes":{"parameters":[null]},"children":[],"id":8843,"name":"ParameterList","src":"4037:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":9833,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8844,"name":"Identifier","src":"4047:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8845,"name":"Identifier","src":"4063:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8846,"name":"Identifier","src":"4075:19:27"}],"id":8847,"name":"FunctionCall","src":"4063:32:27"}],"id":8848,"name":"FunctionCall","src":"4047:49:27"}],"id":8849,"name":"MemberAccess","src":"4047:65:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8837,"type":"address","value":"_token"},"id":8850,"name":"Identifier","src":"4113:6:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8839,"type":"uint256","value":"_rate"},"id":8851,"name":"Identifier","src":"4121:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8841,"type":"uint256","value":"_updateDate"},"id":8852,"name":"Identifier","src":"4128:11:27"}],"id":8853,"name":"FunctionCall","src":"4047:93:27"}],"id":8854,"name":"ExpressionStatement","src":"4047:93:27"}],"id":8855,"name":"Block","src":"4037:110:27"}],"id":8856,"name":"FunctionDefinition","src":"3950:197:27"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":8878,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8857,"name":"ElementaryTypeName","src":"4342:7:27"}],"id":8858,"name":"VariableDeclaration","src":"4342:20:27"},{"attributes":{"constant":false,"name":"_data","scope":8878,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8859,"name":"ElementaryTypeName","src":"4364:5:27"}],"id":8860,"name":"VariableDeclaration","src":"4364:18:27"}],"id":8861,"name":"ParameterList","src":"4341:42:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8878,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8862,"name":"ElementaryTypeName","src":"4407:7:27"}],"id":8863,"name":"VariableDeclaration","src":"4407:7:27"},{"attributes":{"constant":false,"name":"","scope":8878,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8864,"name":"ElementaryTypeName","src":"4416:7:27"}],"id":8865,"name":"VariableDeclaration","src":"4416:7:27"}],"id":8866,"name":"ParameterList","src":"4406:18:27"},{"children":[{"attributes":{"functionReturnParameters":8866},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":9819,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8867,"name":"Identifier","src":"4442:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8868,"name":"Identifier","src":"4458:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8869,"name":"Identifier","src":"4470:19:27"}],"id":8870,"name":"FunctionCall","src":"4458:32:27"}],"id":8871,"name":"FunctionCall","src":"4442:49:27"}],"id":8872,"name":"MemberAccess","src":"4442:76:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8858,"type":"address","value":"_destination"},"id":8873,"name":"Identifier","src":"4519:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8860,"type":"bytes memory","value":"_data"},"id":8874,"name":"Identifier","src":"4533:5:27"}],"id":8875,"name":"FunctionCall","src":"4442:97:27"}],"id":8876,"name":"Return","src":"4435:104:27"}],"id":8877,"name":"Block","src":"4425:121:27"}],"id":8878,"name":"FunctionDefinition","src":"4305:241:27"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":8894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8879,"name":"ElementaryTypeName","src":"4671:7:27"}],"id":8880,"name":"VariableDeclaration","src":"4671:10:27"}],"id":8881,"name":"ParameterList","src":"4670:12:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8894,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8882,"name":"ElementaryTypeName","src":"4706:4:27"}],"id":8883,"name":"VariableDeclaration","src":"4706:4:27"}],"id":8884,"name":"ParameterList","src":"4705:6:27"},{"children":[{"attributes":{"assignments":[null,null,null,8886,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":8893,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8885,"name":"ElementaryTypeName","src":"4729:4:27"}],"id":8886,"name":"VariableDeclaration","src":"4729:14:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":8887,"name":"Identifier","src":"4753:13:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8880,"type":"address","value":"_a"},"id":8888,"name":"Identifier","src":"4767:2:27"}],"id":8889,"name":"FunctionCall","src":"4753:17:27"}],"id":8890,"name":"VariableDeclarationStatement","src":"4722:48:27"},{"attributes":{"functionReturnParameters":8884},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8886,"type":"bool","value":"available"},"id":8891,"name":"Identifier","src":"4787:9:27"}],"id":8892,"name":"Return","src":"4780:16:27"}],"id":8893,"name":"Block","src":"4712:91:27"}],"id":8894,"name":"FunctionDefinition","src":"4644:159:27"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":8910,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8895,"name":"ElementaryTypeName","src":"4931:7:27"}],"id":8896,"name":"VariableDeclaration","src":"4931:10:27"}],"id":8897,"name":"ParameterList","src":"4930:12:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8910,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8898,"name":"ElementaryTypeName","src":"4966:4:27"}],"id":8899,"name":"VariableDeclaration","src":"4966:4:27"}],"id":8900,"name":"ParameterList","src":"4965:6:27"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,8902,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":8909,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8901,"name":"ElementaryTypeName","src":"4993:4:27"}],"id":8902,"name":"VariableDeclaration","src":"4993:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":8903,"name":"Identifier","src":"5014:13:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8896,"type":"address","value":"_a"},"id":8904,"name":"Identifier","src":"5028:2:27"}],"id":8905,"name":"FunctionCall","src":"5014:17:27"}],"id":8906,"name":"VariableDeclarationStatement","src":"4982:49:27"},{"attributes":{"functionReturnParameters":8900},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8902,"type":"bool","value":"redeemable"},"id":8907,"name":"Identifier","src":"5048:10:27"}],"id":8908,"name":"Return","src":"5041:17:27"}],"id":8909,"name":"Block","src":"4972:93:27"}],"id":8910,"name":"FunctionDefinition","src":"4903:162:27"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":8926,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8911,"name":"ElementaryTypeName","src":"5187:7:27"}],"id":8912,"name":"VariableDeclaration","src":"5187:10:27"}],"id":8913,"name":"ParameterList","src":"5186:12:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8926,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8914,"name":"ElementaryTypeName","src":"5222:4:27"}],"id":8915,"name":"VariableDeclaration","src":"5222:4:27"}],"id":8916,"name":"ParameterList","src":"5221:6:27"},{"children":[{"attributes":{"assignments":[null,null,null,null,8918,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":8925,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8917,"name":"ElementaryTypeName","src":"5247:4:27"}],"id":8918,"name":"VariableDeclaration","src":"5247:13:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":8919,"name":"Identifier","src":"5268:13:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8912,"type":"address","value":"_a"},"id":8920,"name":"Identifier","src":"5282:2:27"}],"id":8921,"name":"FunctionCall","src":"5268:17:27"}],"id":8922,"name":"VariableDeclarationStatement","src":"5238:47:27"},{"attributes":{"functionReturnParameters":8916},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8918,"type":"bool","value":"loadable"},"id":8923,"name":"Identifier","src":"5302:8:27"}],"id":8924,"name":"Return","src":"5295:15:27"}],"id":8925,"name":"Block","src":"5228:89:27"}],"id":8926,"name":"FunctionDefinition","src":"5161:156:27"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":8941,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":8927,"name":"ParameterList","src":"5456:2:27"},{"children":[{"attributes":{"constant":false,"name":"","scope":8940,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8928,"name":"ElementaryTypeName","src":"5482:7:27"}],"id":8929,"name":"VariableDeclaration","src":"5482:7:27"}],"id":8930,"name":"ParameterList","src":"5481:9:27"},{"children":[{"attributes":{"functionReturnParameters":8930},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":9824,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":8931,"name":"Identifier","src":"5508:15:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":8932,"name":"Identifier","src":"5524:11:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8732,"type":"bytes32","value":"_tokenWhitelistNode"},"id":8933,"name":"Identifier","src":"5536:19:27"}],"id":8934,"name":"FunctionCall","src":"5524:32:27"}],"id":8935,"name":"FunctionCall","src":"5508:49:27"}],"id":8936,"name":"MemberAccess","src":"5508:60:27"}],"id":8937,"name":"FunctionCall","src":"5508:62:27"}],"id":8938,"name":"Return","src":"5501:69:27"}],"id":8939,"name":"Block","src":"5491:86:27"}],"id":8940,"name":"FunctionDefinition","src":"5436:141:27"}],"id":8941,"name":"ContractDefinition","src":"958:4621:27"}],"id":8942,"name":"SourceUnit","src":"778:4802:27"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[8981]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8943,"name":"PragmaDirective","src":"773:24:28"},{"attributes":{"SourceUnit":10788,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":8982,"symbolAliases":[null],"unitAlias":""},"id":8944,"name":"ImportDirective","src":"799:32:28"},{"attributes":{"SourceUnit":11007,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":8982,"symbolAliases":[null],"unitAlias":""},"id":8945,"name":"ImportDirective","src":"832:36:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[8981],"name":"Transferrable","scope":8982},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":11006,"type":"library SafeERC20"},"id":8946,"name":"UserDefinedTypeName","src":"996:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":10787,"type":"contract ERC20"},"id":8947,"name":"UserDefinedTypeName","src":"1010:5:28"}],"id":8948,"name":"UsingForDirective","src":"990:26:28"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":8981,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":8980,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":8949,"name":"ElementaryTypeName","src":"1389:15:28"}],"id":8950,"name":"VariableDeclaration","src":"1389:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":8980,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8951,"name":"ElementaryTypeName","src":"1410:7:28"}],"id":8952,"name":"VariableDeclaration","src":"1410:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":8980,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8953,"name":"ElementaryTypeName","src":"1426:7:28"}],"id":8954,"name":"VariableDeclaration","src":"1426:15:28"}],"id":8955,"name":"ParameterList","src":"1388:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":8956,"name":"ParameterList","src":"1452:0:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8952,"type":"address","value":"_asset"},"id":8957,"name":"Identifier","src":"1510:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":8958,"name":"ElementaryTypeNameExpression","src":"1520:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8959,"name":"Literal","src":"1528:1:28"}],"id":8960,"name":"FunctionCall","src":"1520:10:28"}],"id":8961,"name":"BinaryOperation","src":"1510:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8950,"type":"address payable","value":"_to"},"id":8962,"name":"Identifier","src":"1546:3:28"}],"id":8964,"name":"MemberAccess","src":"1546:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8954,"type":"uint256","value":"_amount"},"id":8965,"name":"Identifier","src":"1559:7:28"}],"id":8966,"name":"FunctionCall","src":"1546:21:28"}],"id":8967,"name":"ExpressionStatement","src":"1546:21:28"}],"id":8968,"name":"Block","src":"1532:46:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":10820,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":10787,"type":"type(contract ERC20)","value":"ERC20"},"id":8969,"name":"Identifier","src":"1598:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8952,"type":"address","value":"_asset"},"id":8970,"name":"Identifier","src":"1604:6:28"}],"id":8971,"name":"FunctionCall","src":"1598:13:28"}],"id":8972,"name":"MemberAccess","src":"1598:26:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8950,"type":"address payable","value":"_to"},"id":8973,"name":"Identifier","src":"1625:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8954,"type":"uint256","value":"_amount"},"id":8974,"name":"Identifier","src":"1630:7:28"}],"id":8975,"name":"FunctionCall","src":"1598:40:28"}],"id":8976,"name":"ExpressionStatement","src":"1598:40:28"}],"id":8977,"name":"Block","src":"1584:65:28"}],"id":8978,"name":"IfStatement","src":"1506:143:28"}],"id":8979,"name":"Block","src":"1452:203:28"}],"id":8980,"name":"FunctionDefinition","src":"1366:289:28"}],"id":8981,"name":"ContractDefinition","src":"961:696:28"}],"id":8982,"name":"SourceUnit","src":"773:885:28"}},"oracle.sol":{"AST":{"attributes":{"absolutePath":"oracle.sol","exportedSymbols":{"Oracle":[1117]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"770:24:29"},{"attributes":{"SourceUnit":7950,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"796:38:29"},{"attributes":{"SourceUnit":8982,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"835:39:29"},{"attributes":{"SourceUnit":8164,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"875:39:29"},{"attributes":{"SourceUnit":8119,"absolutePath":"internals/date.sol","file":"./internals/date.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"915:30:29"},{"attributes":{"SourceUnit":8725,"absolutePath":"internals/parseIntScientific.sol","file":"./internals/parseIntScientific.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"946:44:29"},{"attributes":{"SourceUnit":8942,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":7,"name":"ImportDirective","src":"991:44:29"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":8,"name":"ImportDirective","src":"1036:34:29"},{"attributes":{"SourceUnit":7854,"absolutePath":"externals/oraclizeAPI_0.5.sol","file":"./externals/oraclizeAPI_0.5.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":9,"name":"ImportDirective","src":"1071:41:29"},{"attributes":{"SourceUnit":1575,"absolutePath":"externals/base64.sol","file":"./externals/base64.sol","scope":1118,"symbolAliases":[null],"unitAlias":""},"id":10,"name":"ImportDirective","src":"1113:32:29"},{"attributes":{"contractDependencies":[1574,7853,7949,8118,8163,8724,8941,8981],"contractKind":"contract","documentation":"@title Oracle provides asset exchange rates and conversion functionality.","fullyImplemented":true,"linearizedBaseContracts":[1117,8941,8724,7949,8118,1574,8981,7853,8163],"name":"Oracle","scope":1118},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":8163,"type":"contract ENSResolvable"},"id":11,"name":"UserDefinedTypeName","src":"1245:13:29"}],"id":12,"name":"InheritanceSpecifier","src":"1245:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"usingOraclize","referencedDeclaration":7853,"type":"contract usingOraclize"},"id":13,"name":"UserDefinedTypeName","src":"1260:13:29"}],"id":14,"name":"InheritanceSpecifier","src":"1260:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":8981,"type":"contract Transferrable"},"id":15,"name":"UserDefinedTypeName","src":"1275:13:29"}],"id":16,"name":"InheritanceSpecifier","src":"1275:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Base64","referencedDeclaration":1574,"type":"contract Base64"},"id":17,"name":"UserDefinedTypeName","src":"1290:6:29"}],"id":18,"name":"InheritanceSpecifier","src":"1290:6:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Date","referencedDeclaration":8118,"type":"contract Date"},"id":19,"name":"UserDefinedTypeName","src":"1298:4:29"}],"id":20,"name":"InheritanceSpecifier","src":"1298:4:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":7949,"type":"contract Controllable"},"id":21,"name":"UserDefinedTypeName","src":"1304:12:29"}],"id":22,"name":"InheritanceSpecifier","src":"1304:12:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ParseIntScientific","referencedDeclaration":8724,"type":"contract ParseIntScientific"},"id":23,"name":"UserDefinedTypeName","src":"1318:18:29"}],"id":24,"name":"InheritanceSpecifier","src":"1318:18:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":8941,"type":"contract TokenWhitelistable"},"id":25,"name":"UserDefinedTypeName","src":"1338:18:29"}],"id":26,"name":"InheritanceSpecifier","src":"1338:18:29"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":14156,"type":"library strings"},"id":27,"name":"UserDefinedTypeName","src":"1369:7:29"}],"id":28,"name":"UsingForDirective","src":"1363:20:29"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":29,"name":"UserDefinedTypeName","src":"1394:8:29"},{"attributes":{"name":"uint256","type":"uint256"},"id":30,"name":"ElementaryTypeName","src":"1407:7:29"}],"id":31,"name":"UsingForDirective","src":"1388:27:29"},{"attributes":{"anonymous":false,"documentation":"**************","name":"SetGasPrice"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":37,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":32,"name":"ElementaryTypeName","src":"1515:7:29"}],"id":33,"name":"VariableDeclaration","src":"1515:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_gasPrice","scope":37,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":34,"name":"ElementaryTypeName","src":"1532:7:29"}],"id":35,"name":"VariableDeclaration","src":"1532:17:29"}],"id":36,"name":"ParameterList","src":"1514:36:29"}],"id":37,"name":"EventDefinition","src":"1497:54:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RequestedUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":43,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":38,"name":"ElementaryTypeName","src":"1579:6:29"}],"id":39,"name":"VariableDeclaration","src":"1579:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_queryID","scope":43,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":40,"name":"ElementaryTypeName","src":"1595:7:29"}],"id":41,"name":"VariableDeclaration","src":"1595:16:29"}],"id":42,"name":"ParameterList","src":"1578:34:29"}],"id":43,"name":"EventDefinition","src":"1557:56:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"FailedUpdateRequest"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_reason","scope":47,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":44,"name":"ElementaryTypeName","src":"1644:6:29"}],"id":45,"name":"VariableDeclaration","src":"1644:14:29"}],"id":46,"name":"ParameterList","src":"1643:16:29"}],"id":47,"name":"EventDefinition","src":"1618:42:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"VerifiedProof"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_publicKey","scope":53,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":48,"name":"ElementaryTypeName","src":"1686:5:29"}],"id":49,"name":"VariableDeclaration","src":"1686:16:29"},{"attributes":{"constant":false,"indexed":false,"name":"_result","scope":53,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":50,"name":"ElementaryTypeName","src":"1704:6:29"}],"id":51,"name":"VariableDeclaration","src":"1704:14:29"}],"id":52,"name":"ParameterList","src":"1685:34:29"}],"id":53,"name":"EventDefinition","src":"1666:54:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetCryptoComparePublicKey"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":59,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":54,"name":"ElementaryTypeName","src":"1758:7:29"}],"id":55,"name":"VariableDeclaration","src":"1758:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_publicKey","scope":59,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":56,"name":"ElementaryTypeName","src":"1775:5:29"}],"id":57,"name":"VariableDeclaration","src":"1775:16:29"}],"id":58,"name":"ParameterList","src":"1757:35:29"}],"id":59,"name":"EventDefinition","src":"1726:67:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":67,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":60,"name":"ElementaryTypeName","src":"1813:7:29"}],"id":61,"name":"VariableDeclaration","src":"1813:11:29"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":67,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":62,"name":"ElementaryTypeName","src":"1826:7:29"}],"id":63,"name":"VariableDeclaration","src":"1826:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":67,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":64,"name":"ElementaryTypeName","src":"1842:7:29"}],"id":65,"name":"VariableDeclaration","src":"1842:15:29"}],"id":66,"name":"ParameterList","src":"1812:46:29"}],"id":67,"name":"EventDefinition","src":"1799:60:29"},{"attributes":{"constant":true,"name":"_PROOF_LEN","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":68,"name":"ElementaryTypeName","src":"1950:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"313635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 165","value":"165"},"id":69,"name":"Literal","src":"1988:3:29"}],"id":70,"name":"VariableDeclaration","src":"1950:41:29"},{"attributes":{"constant":true,"name":"_ECDSA_SIG_LEN","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":71,"name":"ElementaryTypeName","src":"1997:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":72,"name":"Literal","src":"2039:2:29"}],"id":73,"name":"VariableDeclaration","src":"1997:44:29"},{"attributes":{"constant":true,"name":"_ENCODING_BYTES","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":74,"name":"ElementaryTypeName","src":"2047:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":75,"name":"Literal","src":"2090:1:29"}],"id":76,"name":"VariableDeclaration","src":"2047:44:29"},{"attributes":{"constant":true,"name":"_HEADERS_LEN","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":77,"name":"ElementaryTypeName","src":"2097:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_PROOF_LEN"},"id":78,"name":"Identifier","src":"2137:10:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":79,"name":"Literal","src":"2150:1:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_ENCODING_BYTES"},"id":80,"name":"Identifier","src":"2154:15:29"}],"id":81,"name":"BinaryOperation","src":"2150:19:29"}],"id":82,"name":"BinaryOperation","src":"2137:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":83,"name":"Identifier","src":"2172:14:29"}],"id":84,"name":"BinaryOperation","src":"2137:49:29"}],"id":85,"name":"VariableDeclaration","src":"2097:89:29"},{"attributes":{"constant":true,"name":"_DIGEST_BASE64_LEN","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":86,"name":"ElementaryTypeName","src":"2246:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3434","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 44","value":"44"},"id":87,"name":"Literal","src":"2292:2:29"}],"id":88,"name":"VariableDeclaration","src":"2246:48:29"},{"attributes":{"constant":true,"name":"_DIGEST_OFFSET","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":89,"name":"ElementaryTypeName","src":"2377:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"_HEADERS_LEN"},"id":90,"name":"Identifier","src":"2419:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"uint256","value":"_DIGEST_BASE64_LEN"},"id":91,"name":"Identifier","src":"2434:18:29"}],"id":92,"name":"BinaryOperation","src":"2419:33:29"}],"id":93,"name":"VariableDeclaration","src":"2377:75:29"},{"attributes":{"constant":true,"name":"_MAX_BYTE_SIZE","scope":1117,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":94,"name":"ElementaryTypeName","src":"2526:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":95,"name":"Literal","src":"2568:3:29"}],"id":96,"name":"VariableDeclaration","src":"2526:45:29"},{"attributes":{"constant":true,"name":"_PREFIX_HASH","scope":1117,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":97,"name":"ElementaryTypeName","src":"2661:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_7a2d79c44ec25893f1deb7192af566af2e14c179cce8e62e025bd750d6e078e2","typeString":"literal_string \"{\"ETH\":\""}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":98,"name":"Identifier","src":"2701:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"7b22455448223a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"{\"ETH\":\"","value":"{\"ETH\":"},"id":99,"name":"Literal","src":"2711:9:29"}],"id":100,"name":"FunctionCall","src":"2701:20:29"}],"id":101,"name":"VariableDeclaration","src":"2661:60:29"},{"attributes":{"constant":false,"name":"cryptoCompareAPIPublicKey","scope":1117,"stateVariable":true,"storageLocation":"default","type":"bytes","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":102,"name":"ElementaryTypeName","src":"2728:5:29"}],"id":103,"name":"VariableDeclaration","src":"2728:38:29"},{"attributes":{"constant":false,"name":"_queryToToken","scope":1117,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => address)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => address)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":104,"name":"ElementaryTypeName","src":"2780:7:29"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":105,"name":"ElementaryTypeName","src":"2791:7:29"}],"id":106,"name":"Mapping","src":"2772:27:29"}],"id":107,"name":"VariableDeclaration","src":"2772:49:29"},{"attributes":{"documentation":"@notice Construct the oracle with multiple controllers, address resolver and custom gas price.\n @param _resolver_ is the address of the oraclize resolver\n @param _ens_ is the address of the ENS.\n @param _controllerNode_ is the ENS node corresponding to the Controller.\n @param _tokenWhitelistNode_ is the ENS corresponding to the Token Whitelist.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_resolver_","scope":146,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":108,"name":"ElementaryTypeName","src":"3223:7:29"}],"id":109,"name":"VariableDeclaration","src":"3223:18:29"},{"attributes":{"constant":false,"name":"_ens_","scope":146,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":110,"name":"ElementaryTypeName","src":"3243:7:29"}],"id":111,"name":"VariableDeclaration","src":"3243:13:29"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":146,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":112,"name":"ElementaryTypeName","src":"3258:7:29"}],"id":113,"name":"VariableDeclaration","src":"3258:24:29"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":146,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":114,"name":"ElementaryTypeName","src":"3284:7:29"}],"id":115,"name":"VariableDeclaration","src":"3284:28:29"}],"id":116,"name":"ParameterList","src":"3222:91:29"},{"attributes":{"parameters":[null]},"children":[],"id":126,"name":"ParameterList","src":"3450:0:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":117,"name":"Identifier","src":"3337:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":111,"type":"address","value":"_ens_"},"id":118,"name":"Identifier","src":"3351:5:29"}],"id":119,"name":"ModifierInvocation","src":"3337:20:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"type(contract Controllable)","value":"Controllable"},"id":120,"name":"Identifier","src":"3366:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":113,"type":"bytes32","value":"_controllerNode_"},"id":121,"name":"Identifier","src":"3379:16:29"}],"id":122,"name":"ModifierInvocation","src":"3366:30:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8941,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":123,"name":"Identifier","src":"3405:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":124,"name":"Identifier","src":"3424:20:29"}],"id":125,"name":"ModifierInvocation","src":"3405:40:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"bytes storage ref","value":"cryptoCompareAPIPublicKey"},"id":127,"name":"Identifier","src":"3460:25:29"},{"attributes":{"argumentTypes":null,"hexvalue":"a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 0)","value":null},"id":128,"name":"Literal","src":"3488:133:29"}],"id":129,"name":"Assignment","src":"3460:161:29"}],"id":130,"name":"ExpressionStatement","src":"3460:161:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract OraclizeAddrResolverI"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2236,"type":"contract OraclizeAddrResolverI","value":"OAR"},"id":131,"name":"Identifier","src":"3631:3:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract OraclizeAddrResolverI","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":1698,"type":"type(contract OraclizeAddrResolverI)","value":"OraclizeAddrResolverI"},"id":132,"name":"Identifier","src":"3637:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"address","value":"_resolver_"},"id":133,"name":"Identifier","src":"3659:10:29"}],"id":134,"name":"FunctionCall","src":"3637:33:29"}],"id":135,"name":"Assignment","src":"3631:39:29"}],"id":136,"name":"ExpressionStatement","src":"3631:39:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"}],"overloadedDeclarations":[null],"referencedDeclaration":5698,"type":"function (uint256)","value":"oraclize_setCustomGasPrice"},"id":137,"name":"Identifier","src":"3680:26:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000000000","value":"10000000000"},"id":138,"name":"Literal","src":"3707:11:29"}],"id":139,"name":"FunctionCall","src":"3680:39:29"}],"id":140,"name":"ExpressionStatement","src":"3680:39:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"overloadedDeclarations":[null],"referencedDeclaration":5664,"type":"function (bytes1)","value":"oraclize_setProof"},"id":141,"name":"Identifier","src":"3729:17:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2270,"type":"bytes1","value":"proofType_Native"},"id":142,"name":"Identifier","src":"3747:16:29"}],"id":143,"name":"FunctionCall","src":"3729:35:29"}],"id":144,"name":"ExpressionStatement","src":"3729:35:29"}],"id":145,"name":"Block","src":"3450:321:29"}],"id":146,"name":"FunctionDefinition","src":"3211:560:29"},{"attributes":{"documentation":"@notice Updates the Crypto Compare public API key.\n @param _publicKey new Crypto Compare public API key","implemented":true,"isConstructor":false,"kind":"function","name":"updateCryptoCompareAPIPublicKey","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_publicKey","scope":164,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":147,"name":"ElementaryTypeName","src":"3937:5:29"}],"id":148,"name":"VariableDeclaration","src":"3937:25:29"}],"id":149,"name":"ParameterList","src":"3936:27:29"},{"attributes":{"parameters":[null]},"children":[],"id":152,"name":"ParameterList","src":"3983:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":150,"name":"Identifier","src":"3973:9:29"}],"id":151,"name":"ModifierInvocation","src":"3973:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"bytes storage ref","value":"cryptoCompareAPIPublicKey"},"id":153,"name":"Identifier","src":"3993:25:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":148,"type":"bytes calldata","value":"_publicKey"},"id":154,"name":"Identifier","src":"4021:10:29"}],"id":155,"name":"Assignment","src":"3993:38:29"}],"id":156,"name":"ExpressionStatement","src":"3993:38:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":59,"type":"function (address,bytes memory)","value":"SetCryptoComparePublicKey"},"id":157,"name":"Identifier","src":"4046:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":158,"name":"Identifier","src":"4072:3:29"}],"id":159,"name":"MemberAccess","src":"4072:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":148,"type":"bytes calldata","value":"_publicKey"},"id":160,"name":"Identifier","src":"4084:10:29"}],"id":161,"name":"FunctionCall","src":"4046:49:29"}],"id":162,"name":"EmitStatement","src":"4041:54:29"}],"id":163,"name":"Block","src":"3983:119:29"}],"id":164,"name":"FunctionDefinition","src":"3896:206:29"},{"attributes":{"documentation":"@notice Sets the gas price used by Oraclize query.\n @param _gasPrice in wei for Oraclize","implemented":true,"isConstructor":false,"kind":"function","name":"setCustomGasPrice","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasPrice","scope":182,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":165,"name":"ElementaryTypeName","src":"4239:7:29"}],"id":166,"name":"VariableDeclaration","src":"4239:17:29"}],"id":167,"name":"ParameterList","src":"4238:19:29"},{"attributes":{"parameters":[null]},"children":[],"id":170,"name":"ParameterList","src":"4282:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7894,"type":"modifier ()","value":"onlyController"},"id":168,"name":"Identifier","src":"4267:14:29"}],"id":169,"name":"ModifierInvocation","src":"4267:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5698,"type":"function (uint256)","value":"oraclize_setCustomGasPrice"},"id":171,"name":"Identifier","src":"4292:26:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"uint256","value":"_gasPrice"},"id":172,"name":"Identifier","src":"4319:9:29"}],"id":173,"name":"FunctionCall","src":"4292:37:29"}],"id":174,"name":"ExpressionStatement","src":"4292:37:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":37,"type":"function (address,uint256)","value":"SetGasPrice"},"id":175,"name":"Identifier","src":"4344:11:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":176,"name":"Identifier","src":"4356:3:29"}],"id":177,"name":"MemberAccess","src":"4356:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":166,"type":"uint256","value":"_gasPrice"},"id":178,"name":"Identifier","src":"4368:9:29"}],"id":179,"name":"FunctionCall","src":"4344:34:29"}],"id":180,"name":"EmitStatement","src":"4339:39:29"}],"id":181,"name":"Block","src":"4282:103:29"}],"id":182,"name":"FunctionDefinition","src":"4212:173:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rates for all supported tokens.\n @param _gasLimit the gas limit is passed, this is used for the Oraclize callback","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRates","scope":1117,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasLimit","scope":194,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":183,"name":"ElementaryTypeName","src":"4582:7:29"}],"id":184,"name":"VariableDeclaration","src":"4582:17:29"}],"id":185,"name":"ParameterList","src":"4581:19:29"},{"attributes":{"parameters":[null]},"children":[],"id":188,"name":"ParameterList","src":"4633:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7894,"type":"modifier ()","value":"onlyController"},"id":186,"name":"Identifier","src":"4618:14:29"}],"id":187,"name":"ModifierInvocation","src":"4618:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":529,"type":"function (uint256)","value":"_updateTokenRates"},"id":189,"name":"Identifier","src":"4643:17:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":184,"type":"uint256","value":"_gasLimit"},"id":190,"name":"Identifier","src":"4661:9:29"}],"id":191,"name":"FunctionCall","src":"4643:28:29"}],"id":192,"name":"ExpressionStatement","src":"4643:28:29"}],"id":193,"name":"Block","src":"4633:45:29"}],"id":194,"name":"FunctionDefinition","src":"4556:122:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rates for the list of tokens provided.\n @param _gasLimit the gas limit is passed, this is used for the Oraclize callback\n @param _tokenList the list of tokens that need to be updated","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRatesList","scope":1117,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasLimit","scope":210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":195,"name":"ElementaryTypeName","src":"4955:7:29"}],"id":196,"name":"VariableDeclaration","src":"4955:17:29"},{"attributes":{"constant":false,"name":"_tokenList","scope":210,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":197,"name":"ElementaryTypeName","src":"4974:7:29"}],"id":198,"name":"ArrayTypeName","src":"4974:9:29"}],"id":199,"name":"VariableDeclaration","src":"4974:29:29"}],"id":200,"name":"ParameterList","src":"4954:50:29"},{"attributes":{"parameters":[null]},"children":[],"id":203,"name":"ParameterList","src":"5037:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7894,"type":"modifier ()","value":"onlyController"},"id":201,"name":"Identifier","src":"5022:14:29"}],"id":202,"name":"ModifierInvocation","src":"5022:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":649,"type":"function (uint256,address[] memory)","value":"_updateTokenRatesList"},"id":204,"name":"Identifier","src":"5047:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":196,"type":"uint256","value":"_gasLimit"},"id":205,"name":"Identifier","src":"5069:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":199,"type":"address[] calldata","value":"_tokenList"},"id":206,"name":"Identifier","src":"5080:10:29"}],"id":207,"name":"FunctionCall","src":"5047:44:29"}],"id":208,"name":"ExpressionStatement","src":"5047:44:29"}],"id":209,"name":"Block","src":"5037:61:29"}],"id":210,"name":"FunctionDefinition","src":"4925:173:29"},{"attributes":{"documentation":"@notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":234,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":211,"name":"ElementaryTypeName","src":"5201:15:29"}],"id":212,"name":"VariableDeclaration","src":"5201:19:29"},{"attributes":{"constant":false,"name":"_asset","scope":234,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":213,"name":"ElementaryTypeName","src":"5222:7:29"}],"id":214,"name":"VariableDeclaration","src":"5222:14:29"},{"attributes":{"constant":false,"name":"_amount","scope":234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":215,"name":"ElementaryTypeName","src":"5238:7:29"}],"id":216,"name":"VariableDeclaration","src":"5238:15:29"}],"id":217,"name":"ParameterList","src":"5200:54:29"},{"attributes":{"parameters":[null]},"children":[],"id":220,"name":"ParameterList","src":"5274:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":218,"name":"Identifier","src":"5264:9:29"}],"id":219,"name":"ModifierInvocation","src":"5264:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8980,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":221,"name":"Identifier","src":"5284:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":212,"type":"address payable","value":"_to"},"id":222,"name":"Identifier","src":"5298:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":214,"type":"address","value":"_asset"},"id":223,"name":"Identifier","src":"5303:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":216,"type":"uint256","value":"_amount"},"id":224,"name":"Identifier","src":"5311:7:29"}],"id":225,"name":"FunctionCall","src":"5284:35:29"}],"id":226,"name":"ExpressionStatement","src":"5284:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":67,"type":"function (address,address,uint256)","value":"Claimed"},"id":227,"name":"Identifier","src":"5334:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":212,"type":"address payable","value":"_to"},"id":228,"name":"Identifier","src":"5342:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":214,"type":"address","value":"_asset"},"id":229,"name":"Identifier","src":"5347:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":216,"type":"uint256","value":"_amount"},"id":230,"name":"Identifier","src":"5355:7:29"}],"id":231,"name":"FunctionCall","src":"5334:29:29"}],"id":232,"name":"EmitStatement","src":"5329:34:29"}],"id":233,"name":"Block","src":"5274:96:29"}],"id":234,"name":"FunctionDefinition","src":"5186:184:29"},{"attributes":{"documentation":"@notice Handle Oraclize query callback and verifiy the provided origin proof.\n @param _queryID Oraclize query ID.\n @param _result query result in JSON format.\n @param _proof origin proof from crypto compare.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"__callback","scope":1117,"stateMutability":"nonpayable","superFunction":2606,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_queryID","scope":315,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":235,"name":"ElementaryTypeName","src":"5675:7:29"}],"id":236,"name":"VariableDeclaration","src":"5675:16:29"},{"attributes":{"constant":false,"name":"_result","scope":315,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":237,"name":"ElementaryTypeName","src":"5693:6:29"}],"id":238,"name":"VariableDeclaration","src":"5693:21:29"},{"attributes":{"constant":false,"name":"_proof","scope":315,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":239,"name":"ElementaryTypeName","src":"5716:5:29"}],"id":240,"name":"VariableDeclaration","src":"5716:19:29"}],"id":241,"name":"ParameterList","src":"5674:62:29"},{"attributes":{"parameters":[null]},"children":[],"id":242,"name":"ParameterList","src":"5744:0:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b88758054e44c94be6565c93c4ac5c75fed82853608c6dcd41226b2e31aa5492","typeString":"literal_string \"sender is not oraclize\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":243,"name":"Identifier","src":"5815:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":244,"name":"Identifier","src":"5823:3:29"}],"id":245,"name":"MemberAccess","src":"5823:10:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":5676,"type":"function () returns (address)","value":"oraclize_cbAddress"},"id":246,"name":"Identifier","src":"5837:18:29"}],"id":247,"name":"FunctionCall","src":"5837:20:29"}],"id":248,"name":"BinaryOperation","src":"5823:34:29"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206f7261636c697a65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not oraclize\"","value":"sender is not oraclize"},"id":249,"name":"Literal","src":"5859:24:29"}],"id":250,"name":"FunctionCall","src":"5815:69:29"}],"id":251,"name":"ExpressionStatement","src":"5815:69:29"},{"attributes":{"assignments":[253]},"children":[{"attributes":{"constant":false,"name":"token","scope":314,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":252,"name":"ElementaryTypeName","src":"5958:7:29"}],"id":253,"name":"VariableDeclaration","src":"5958:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"mapping(bytes32 => address)","value":"_queryToToken"},"id":254,"name":"Identifier","src":"5974:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":236,"type":"bytes32","value":"_queryID"},"id":255,"name":"Identifier","src":"5988:8:29"}],"id":256,"name":"IndexAccess","src":"5974:23:29"}],"id":257,"name":"VariableDeclarationStatement","src":"5958:39:29"},{"attributes":{"assignments":[null,null,null,259,null,null,261]},"children":[{"attributes":{"constant":false,"name":"available","scope":314,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":258,"name":"ElementaryTypeName","src":"6061:4:29"}],"id":259,"name":"VariableDeclaration","src":"6061:14:29"},{"attributes":{"constant":false,"name":"lastUpdate","scope":314,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":260,"name":"ElementaryTypeName","src":"6081:7:29"}],"id":261,"name":"VariableDeclaration","src":"6081:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":262,"name":"Identifier","src":"6103:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":253,"type":"address","value":"token"},"id":263,"name":"Identifier","src":"6117:5:29"}],"id":264,"name":"FunctionCall","src":"6103:20:29"}],"id":265,"name":"VariableDeclarationStatement","src":"6054:69:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ece3bb723b90e0cf52e7142c26cd1e8e9aeda26d377c85e0b1b64ab12879ce1","typeString":"literal_string \"token must be available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":266,"name":"Identifier","src":"6133:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":259,"type":"bool","value":"available"},"id":267,"name":"Identifier","src":"6141:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206d75737420626520617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token must be available\"","value":"token must be available"},"id":268,"name":"Literal","src":"6152:25:29"}],"id":269,"name":"FunctionCall","src":"6133:45:29"}],"id":270,"name":"ExpressionStatement","src":"6133:45:29"},{"attributes":{"assignments":[272],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"valid","scope":314,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":271,"name":"ElementaryTypeName","src":"6189:4:29"}],"id":272,"name":"VariableDeclaration","src":"6189:10:29"}],"id":273,"name":"VariableDeclarationStatement","src":"6189:10:29"},{"attributes":{"assignments":[275],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"timestamp","scope":314,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":274,"name":"ElementaryTypeName","src":"6209:7:29"}],"id":275,"name":"VariableDeclaration","src":"6209:17:29"}],"id":276,"name":"VariableDeclarationStatement","src":"6209:17:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":272,"type":"bool","value":"valid"},"id":277,"name":"Identifier","src":"6237:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":275,"type":"uint256","value":"timestamp"},"id":278,"name":"Identifier","src":"6244:9:29"}],"id":279,"name":"TupleExpression","src":"6236:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_storage","typeString":"bytes storage ref"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":862,"type":"function (string memory,bytes memory,bytes memory,uint256) returns (bool,uint256)","value":"_verifyProof"},"id":280,"name":"Identifier","src":"6257:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"string memory","value":"_result"},"id":281,"name":"Identifier","src":"6270:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":240,"type":"bytes memory","value":"_proof"},"id":282,"name":"Identifier","src":"6279:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"bytes storage ref","value":"cryptoCompareAPIPublicKey"},"id":283,"name":"Identifier","src":"6287:25:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":261,"type":"uint256","value":"lastUpdate"},"id":284,"name":"Identifier","src":"6314:10:29"}],"id":285,"name":"FunctionCall","src":"6257:68:29"}],"id":286,"name":"Assignment","src":"6236:89:29"}],"id":287,"name":"ExpressionStatement","src":"6236:89:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":272,"type":"bool","value":"valid"},"id":288,"name":"Identifier","src":"6384:5:29"},{"children":[{"attributes":{"assignments":[290]},"children":[{"attributes":{"constant":false,"name":"parsedRate","scope":312,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":289,"name":"ElementaryTypeName","src":"6466:7:29"}],"id":290,"name":"VariableDeclaration","src":"6466:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8244,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientificWei"},"id":291,"name":"Identifier","src":"6487:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":412,"type":"function (string memory) pure returns (string memory)","value":"parseRate"},"id":292,"name":"Identifier","src":"6510:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"string memory","value":"_result"},"id":293,"name":"Identifier","src":"6520:7:29"}],"id":294,"name":"FunctionCall","src":"6510:18:29"}],"id":295,"name":"FunctionCall","src":"6487:42:29"}],"id":296,"name":"VariableDeclarationStatement","src":"6466:63:29"},{"attributes":{"assignments":[298]},"children":[{"attributes":{"constant":false,"name":"parsedLastUpdate","scope":312,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":297,"name":"ElementaryTypeName","src":"6597:7:29"}],"id":298,"name":"VariableDeclaration","src":"6597:24:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":275,"type":"uint256","value":"timestamp"},"id":299,"name":"Identifier","src":"6624:9:29"}],"id":300,"name":"VariableDeclarationStatement","src":"6597:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"mapping(bytes32 => address)","value":"_queryToToken"},"id":301,"name":"Identifier","src":"6697:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":236,"type":"bytes32","value":"_queryID"},"id":302,"name":"Identifier","src":"6711:8:29"}],"id":303,"name":"IndexAccess","src":"6697:23:29"}],"id":304,"name":"UnaryOperation","src":"6690:30:29"}],"id":305,"name":"ExpressionStatement","src":"6690:30:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8856,"type":"function (address,uint256,uint256)","value":"_updateTokenRate"},"id":306,"name":"Identifier","src":"6735:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":253,"type":"address","value":"token"},"id":307,"name":"Identifier","src":"6752:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":290,"type":"uint256","value":"parsedRate"},"id":308,"name":"Identifier","src":"6759:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":298,"type":"uint256","value":"parsedLastUpdate"},"id":309,"name":"Identifier","src":"6771:16:29"}],"id":310,"name":"FunctionCall","src":"6735:53:29"}],"id":311,"name":"ExpressionStatement","src":"6735:53:29"}],"id":312,"name":"Block","src":"6391:408:29"}],"id":313,"name":"IfStatement","src":"6380:419:29"}],"id":314,"name":"Block","src":"5744:1061:29"}],"id":315,"name":"FunctionDefinition","src":"5655:1150:29"},{"attributes":{"documentation":"@notice Extracts JSON rate value from the response object.\n @param _json body of the JSON response from the CryptoCompare API.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"parseRate","scope":1117,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_json","scope":412,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":316,"name":"ElementaryTypeName","src":"6972:6:29"}],"id":317,"name":"VariableDeclaration","src":"6972:19:29"}],"id":318,"name":"ParameterList","src":"6971:21:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":412,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":319,"name":"ElementaryTypeName","src":"7016:6:29"}],"id":320,"name":"VariableDeclaration","src":"7016:13:29"}],"id":321,"name":"ParameterList","src":"7015:15:29"},{"children":[{"attributes":{"assignments":[323]},"children":[{"attributes":{"constant":false,"name":"jsonLen","scope":411,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":322,"name":"ElementaryTypeName","src":"7041:7:29"}],"id":323,"name":"VariableDeclaration","src":"7041:15:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":324,"name":"Identifier","src":"7059:3:29"}],"id":325,"name":"MemberAccess","src":"7059:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":317,"type":"string memory","value":"_json"},"id":326,"name":"Identifier","src":"7076:5:29"}],"id":327,"name":"FunctionCall","src":"7059:23:29"}],"id":328,"name":"MemberAccess","src":"7059:30:29"}],"id":329,"name":"VariableDeclarationStatement","src":"7041:48:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5fea2c2e32d1bae3c1f1ea614dd96ac75409f6d3eaf7da12bd0e75406b36d71f","typeString":"literal_string \"misformatted input\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":330,"name":"Identifier","src":"7173:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"jsonLen"},"id":331,"name":"Identifier","src":"7181:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":332,"name":"Literal","src":"7191:1:29"}],"id":333,"name":"BinaryOperation","src":"7181:11:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"jsonLen"},"id":334,"name":"Identifier","src":"7196:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":335,"name":"Literal","src":"7207:2:29"}],"id":336,"name":"BinaryOperation","src":"7196:13:29"}],"id":337,"name":"BinaryOperation","src":"7181:28:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6973666f726d617474656420696e707574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"misformatted input\"","value":"misformatted input"},"id":338,"name":"Literal","src":"7211:20:29"}],"id":339,"name":"FunctionCall","src":"7173:59:29"}],"id":340,"name":"ExpressionStatement","src":"7173:59:29"},{"attributes":{"assignments":[342]},"children":[{"attributes":{"constant":false,"name":"jsonPrefix","scope":411,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":341,"name":"ElementaryTypeName","src":"7243:5:29"}],"id":342,"name":"VariableDeclaration","src":"7243:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":343,"name":"ElementaryTypeName","src":"7273:5:29"}],"id":344,"name":"NewExpression","src":"7269:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":345,"name":"Literal","src":"7279:1:29"}],"id":346,"name":"FunctionCall","src":"7269:12:29"}],"id":347,"name":"VariableDeclarationStatement","src":"7243:38:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":348,"name":"Identifier","src":"7291:9:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":349,"name":"Identifier","src":"7301:3:29"}],"id":350,"name":"MemberAccess","src":"7301:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":317,"type":"string memory","value":"_json"},"id":351,"name":"Identifier","src":"7318:5:29"}],"id":352,"name":"FunctionCall","src":"7301:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":353,"name":"Literal","src":"7326:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":354,"name":"Literal","src":"7329:1:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"bytes memory","value":"jsonPrefix"},"id":355,"name":"Identifier","src":"7332:10:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":356,"name":"Literal","src":"7344:1:29"}],"id":357,"name":"FunctionCall","src":"7291:55:29"}],"id":358,"name":"ExpressionStatement","src":"7291:55:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_0c157f62a2cfe79594a26ef6a0987a0304469e42f07594a418ffcc08198b710d","typeString":"literal_string \"prefix mismatch\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":359,"name":"Identifier","src":"7356:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":360,"name":"Identifier","src":"7364:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"bytes memory","value":"jsonPrefix"},"id":361,"name":"Identifier","src":"7374:10:29"}],"id":362,"name":"FunctionCall","src":"7364:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"bytes32","value":"_PREFIX_HASH"},"id":363,"name":"Identifier","src":"7389:12:29"}],"id":364,"name":"BinaryOperation","src":"7364:37:29"},{"attributes":{"argumentTypes":null,"hexvalue":"707265666978206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"prefix mismatch\"","value":"prefix mismatch"},"id":365,"name":"Literal","src":"7403:17:29"}],"id":366,"name":"FunctionCall","src":"7356:65:29"}],"id":367,"name":"ExpressionStatement","src":"7356:65:29"},{"attributes":{"assignments":[371]},"children":[{"attributes":{"constant":false,"name":"body","scope":411,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":370,"name":"UserDefinedTypeName","src":"7432:13:29"}],"id":371,"name":"VariableDeclaration","src":"7432:25:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":317,"type":"string memory","value":"_json"},"id":372,"name":"Identifier","src":"7460:5:29"}],"id":373,"name":"MemberAccess","src":"7460:13:29"}],"id":374,"name":"FunctionCall","src":"7460:15:29"}],"id":375,"name":"VariableDeclarationStatement","src":"7432:43:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":376,"name":"Identifier","src":"7485:4:29"}],"id":378,"name":"MemberAccess","src":"7485:10:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \":\"","value":":"},"id":379,"name":"Literal","src":"7496:3:29"}],"id":380,"name":"MemberAccess","src":"7496:11:29"}],"id":381,"name":"FunctionCall","src":"7496:13:29"}],"id":382,"name":"FunctionCall","src":"7485:25:29"}],"id":383,"name":"ExpressionStatement","src":"7485:25:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"jsonLen"},"id":384,"name":"Identifier","src":"7609:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":385,"name":"Identifier","src":"7619:4:29"}],"id":386,"name":"MemberAccess","src":"7619:9:29"}],"id":387,"name":"Assignment","src":"7609:19:29"}],"id":388,"name":"ExpressionStatement","src":"7609:19:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"until","referencedDeclaration":13420,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":389,"name":"Identifier","src":"7638:4:29"}],"id":391,"name":"MemberAccess","src":"7638:10:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"7d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"}\"","value":"}"},"id":392,"name":"Literal","src":"7649:3:29"}],"id":393,"name":"MemberAccess","src":"7649:11:29"}],"id":394,"name":"FunctionCall","src":"7649:13:29"}],"id":395,"name":"FunctionCall","src":"7638:25:29"}],"id":396,"name":"ExpressionStatement","src":"7638:25:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d0303ffd8acc80da90323135e4843159389d7ce85817f6f11f7897c9fa282156","typeString":"literal_string \"not json format\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":397,"name":"Identifier","src":"7673:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":12454,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":398,"name":"Identifier","src":"7681:4:29"}],"id":399,"name":"MemberAccess","src":"7681:9:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":323,"type":"uint256","value":"jsonLen"},"id":400,"name":"Identifier","src":"7694:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":401,"name":"Literal","src":"7704:1:29"}],"id":402,"name":"BinaryOperation","src":"7694:11:29"}],"id":403,"name":"BinaryOperation","src":"7681:24:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f74206a736f6e20666f726d6174","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not json format\"","value":"not json format"},"id":404,"name":"Literal","src":"7707:17:29"}],"id":405,"name":"FunctionCall","src":"7673:52:29"}],"id":406,"name":"ExpressionStatement","src":"7673:52:29"},{"attributes":{"functionReturnParameters":321},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":371,"type":"struct strings.slice memory","value":"body"},"id":407,"name":"Identifier","src":"7807:4:29"}],"id":408,"name":"MemberAccess","src":"7807:13:29"}],"id":409,"name":"FunctionCall","src":"7807:15:29"}],"id":410,"name":"Return","src":"7800:22:29"}],"id":411,"name":"Block","src":"7031:798:29"}],"id":412,"name":"FunctionDefinition","src":"6953:876:29"},{"attributes":{"documentation":"@notice Re-usable helper function that performs the Oraclize Query.\n @param _gasLimit the gas limit is passed, this is used for the Oraclize callback","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRates","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasLimit","scope":529,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":413,"name":"ElementaryTypeName","src":"8027:7:29"}],"id":414,"name":"VariableDeclaration","src":"8027:17:29"}],"id":415,"name":"ParameterList","src":"8026:19:29"},{"attributes":{"parameters":[null]},"children":[],"id":416,"name":"ParameterList","src":"8054:0:29"},{"children":[{"attributes":{"assignments":[420]},"children":[{"attributes":{"constant":false,"name":"tokenAddresses","scope":528,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":418,"name":"ElementaryTypeName","src":"8064:7:29"}],"id":419,"name":"ArrayTypeName","src":"8064:9:29"}],"id":420,"name":"VariableDeclaration","src":"8064:31:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":8820,"type":"function () view returns (address[] memory)","value":"_tokenAddressArray"},"id":421,"name":"Identifier","src":"8098:18:29"}],"id":422,"name":"FunctionCall","src":"8098:20:29"}],"id":423,"name":"VariableDeclarationStatement","src":"8064:54:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":424,"name":"Identifier","src":"8183:14:29"}],"id":425,"name":"MemberAccess","src":"8183:21:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":426,"name":"Literal","src":"8208:1:29"}],"id":427,"name":"BinaryOperation","src":"8183:26:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a0759e27e9e41d00f291554454ac32d0b694b4e532153623cf6f6e89a0f6bccb","typeString":"literal_string \"no tokens\""}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (string memory)","value":"FailedUpdateRequest"},"id":428,"name":"Identifier","src":"8273:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20746f6b656e73","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no tokens\"","value":"no tokens"},"id":429,"name":"Literal","src":"8293:11:29"}],"id":430,"name":"FunctionCall","src":"8273:32:29"}],"id":431,"name":"EmitStatement","src":"8268:37:29"}],"id":432,"name":"Block","src":"8211:181:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96388ed71ebb5d970d8c40d08f33931fc80bd2768fd60f12b78e085d12441b0e","typeString":"literal_string \"URL\""}],"overloadedDeclarations":[2621,2639],"referencedDeclaration":2621,"type":"function (string memory) returns (uint256)","value":"oraclize_getPrice"},"id":433,"name":"Identifier","src":"8402:17:29"},{"attributes":{"argumentTypes":null,"hexvalue":"55524c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"URL\"","value":"URL"},"id":434,"name":"Literal","src":"8420:5:29"}],"id":435,"name":"FunctionCall","src":"8402:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":436,"name":"Identifier","src":"8429:14:29"}],"id":437,"name":"MemberAccess","src":"8429:21:29"}],"id":438,"name":"BinaryOperation","src":"8402:48:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Oracle_$1117","typeString":"contract Oracle"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":439,"name":"ElementaryTypeNameExpression","src":"8453:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15797,"type":"contract Oracle","value":"this"},"id":440,"name":"Identifier","src":"8461:4:29"}],"id":441,"name":"FunctionCall","src":"8453:13:29"}],"id":442,"name":"MemberAccess","src":"8453:21:29"}],"id":443,"name":"BinaryOperation","src":"8402:72:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a6d1ff1db3d0b9b8c60e12ccab5ce7431be9a2cd0518ac362f1c5c1e0b1cefee","typeString":"literal_string \"insufficient balance\""}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (string memory)","value":"FailedUpdateRequest"},"id":444,"name":"Identifier","src":"8538:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e73756666696369656e742062616c616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"insufficient balance\"","value":"insufficient balance"},"id":445,"name":"Literal","src":"8558:22:29"}],"id":446,"name":"FunctionCall","src":"8538:43:29"}],"id":447,"name":"EmitStatement","src":"8533:48:29"}],"id":448,"name":"Block","src":"8476:116:29"},{"children":[{"attributes":{"assignments":[452]},"children":[{"attributes":{"constant":false,"name":"apiPrefix","scope":525,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":451,"name":"UserDefinedTypeName","src":"8671:13:29"}],"id":452,"name":"VariableDeclaration","src":"8671:30:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"https://min-api.cryptocompare.com/data/price?fsym=\"","value":"https://min-api.cryptocompare.com/data/price?fsym="},"id":453,"name":"Literal","src":"8704:52:29"}],"id":454,"name":"MemberAccess","src":"8704:60:29"}],"id":455,"name":"FunctionCall","src":"8704:62:29"}],"id":456,"name":"VariableDeclarationStatement","src":"8671:95:29"},{"attributes":{"assignments":[460]},"children":[{"attributes":{"constant":false,"name":"apiSuffix","scope":525,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":459,"name":"UserDefinedTypeName","src":"8780:13:29"}],"id":460,"name":"VariableDeclaration","src":"8780:30:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"267473796d733d455448267369676e3d74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"&tsyms=ETH&sign=true\"","value":"&tsyms=ETH&sign=true"},"id":461,"name":"Literal","src":"8813:22:29"}],"id":462,"name":"MemberAccess","src":"8813:30:29"}],"id":463,"name":"FunctionCall","src":"8813:32:29"}],"id":464,"name":"VariableDeclarationStatement","src":"8780:65:29"},{"children":[{"attributes":{"assignments":[466]},"children":[{"attributes":{"constant":false,"name":"i","scope":524,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":465,"name":"ElementaryTypeName","src":"8934:7:29"}],"id":466,"name":"VariableDeclaration","src":"8934:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":467,"name":"Literal","src":"8946:1:29"}],"id":468,"name":"VariableDeclarationStatement","src":"8934:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"uint256","value":"i"},"id":469,"name":"Identifier","src":"8949:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":470,"name":"Identifier","src":"8953:14:29"}],"id":471,"name":"MemberAccess","src":"8953:21:29"}],"id":472,"name":"BinaryOperation","src":"8949:25:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"uint256","value":"i"},"id":473,"name":"Identifier","src":"8976:1:29"}],"id":474,"name":"UnaryOperation","src":"8976:3:29"}],"id":475,"name":"ExpressionStatement","src":"8976:3:29"},{"children":[{"attributes":{"assignments":[477,null,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":523,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":476,"name":"ElementaryTypeName","src":"9061:6:29"}],"id":477,"name":"VariableDeclaration","src":"9061:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":478,"name":"Identifier","src":"9097:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":479,"name":"Identifier","src":"9111:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"uint256","value":"i"},"id":480,"name":"Identifier","src":"9126:1:29"}],"id":481,"name":"IndexAccess","src":"9111:17:29"}],"id":482,"name":"FunctionCall","src":"9097:32:29"}],"id":483,"name":"VariableDeclarationStatement","src":"9060:69:29"},{"attributes":{"assignments":[487]},"children":[{"attributes":{"constant":false,"name":"sym","scope":523,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":486,"name":"UserDefinedTypeName","src":"9148:13:29"}],"id":487,"name":"VariableDeclaration","src":"9148:24:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":477,"type":"string memory","value":"symbol"},"id":488,"name":"Identifier","src":"9175:6:29"}],"id":489,"name":"MemberAccess","src":"9175:14:29"}],"id":490,"name":"FunctionCall","src":"9175:16:29"}],"id":491,"name":"VariableDeclarationStatement","src":"9148:43:29"},{"attributes":{"assignments":[493]},"children":[{"attributes":{"constant":false,"name":"queryID","scope":523,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":492,"name":"ElementaryTypeName","src":"9284:7:29"}],"id":493,"name":"VariableDeclaration","src":"9284:15:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96388ed71ebb5d970d8c40d08f33931fc80bd2768fd60f12b78e085d12441b0e","typeString":"literal_string \"URL\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":2815,"type":"function (string memory,string memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":494,"name":"Identifier","src":"9302:14:29"},{"attributes":{"argumentTypes":null,"hexvalue":"55524c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"URL\"","value":"URL"},"id":495,"name":"Literal","src":"9317:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"concat","referencedDeclaration":14040,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"concat","referencedDeclaration":14040,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":452,"type":"struct strings.slice memory","value":"apiPrefix"},"id":496,"name":"Identifier","src":"9324:9:29"}],"id":497,"name":"MemberAccess","src":"9324:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":487,"type":"struct strings.slice memory","value":"sym"},"id":498,"name":"Identifier","src":"9341:3:29"}],"id":499,"name":"FunctionCall","src":"9324:21:29"}],"id":500,"name":"MemberAccess","src":"9324:29:29"}],"id":501,"name":"FunctionCall","src":"9324:31:29"}],"id":502,"name":"MemberAccess","src":"9324:38:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":460,"type":"struct strings.slice memory","value":"apiSuffix"},"id":503,"name":"Identifier","src":"9363:9:29"}],"id":504,"name":"FunctionCall","src":"9324:49:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":414,"type":"uint256","value":"_gasLimit"},"id":505,"name":"Identifier","src":"9375:9:29"}],"id":506,"name":"FunctionCall","src":"9302:83:29"}],"id":507,"name":"VariableDeclarationStatement","src":"9284:101:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"mapping(bytes32 => address)","value":"_queryToToken"},"id":508,"name":"Identifier","src":"9485:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":493,"type":"bytes32","value":"queryID"},"id":509,"name":"Identifier","src":"9499:7:29"}],"id":510,"name":"IndexAccess","src":"9485:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":420,"type":"address[] memory","value":"tokenAddresses"},"id":511,"name":"Identifier","src":"9510:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"uint256","value":"i"},"id":512,"name":"Identifier","src":"9525:1:29"}],"id":513,"name":"IndexAccess","src":"9510:17:29"}],"id":514,"name":"Assignment","src":"9485:42:29"}],"id":515,"name":"ExpressionStatement","src":"9485:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"function (string memory,bytes32)","value":"RequestedUpdate"},"id":516,"name":"Identifier","src":"9599:15:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":487,"type":"struct strings.slice memory","value":"sym"},"id":517,"name":"Identifier","src":"9615:3:29"}],"id":518,"name":"MemberAccess","src":"9615:12:29"}],"id":519,"name":"FunctionCall","src":"9615:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":493,"type":"bytes32","value":"queryID"},"id":520,"name":"Identifier","src":"9631:7:29"}],"id":521,"name":"FunctionCall","src":"9599:40:29"}],"id":522,"name":"EmitStatement","src":"9594:45:29"}],"id":523,"name":"Block","src":"8981:673:29"}],"id":524,"name":"ForStatement","src":"8929:725:29"}],"id":525,"name":"Block","src":"8598:1066:29"}],"id":526,"name":"IfStatement","src":"8398:1266:29"}],"id":527,"name":"IfStatement","src":"8179:1485:29"}],"id":528,"name":"Block","src":"8054:1616:29"}],"id":529,"name":"FunctionDefinition","src":"8000:1670:29"},{"attributes":{"documentation":"@notice Re-usable helper function that performs the Oraclize Query for a specific list of tokens.\n @param _gasLimit the gas limit is passed, this is used for the Oraclize callback.\n @param _tokenList the list of tokens that need to be updated.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRatesList","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_gasLimit","scope":649,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":530,"name":"ElementaryTypeName","src":"9973:7:29"}],"id":531,"name":"VariableDeclaration","src":"9973:17:29"},{"attributes":{"constant":false,"name":"_tokenList","scope":649,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":532,"name":"ElementaryTypeName","src":"9992:7:29"}],"id":533,"name":"ArrayTypeName","src":"9992:9:29"}],"id":534,"name":"VariableDeclaration","src":"9992:27:29"}],"id":535,"name":"ParameterList","src":"9972:48:29"},{"attributes":{"parameters":[null]},"children":[],"id":536,"name":"ParameterList","src":"10029:0:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":537,"name":"Identifier","src":"10094:10:29"}],"id":538,"name":"MemberAccess","src":"10094:17:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":539,"name":"Literal","src":"10115:1:29"}],"id":540,"name":"BinaryOperation","src":"10094:22:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_17806a0786c207d6f85c3e1c4ecf5e91edf31bcc8527723223989c983294996b","typeString":"literal_string \"empty token list\""}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (string memory)","value":"FailedUpdateRequest"},"id":541,"name":"Identifier","src":"10180:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"656d70747920746f6b656e206c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty token list\"","value":"empty token list"},"id":542,"name":"Literal","src":"10200:18:29"}],"id":543,"name":"FunctionCall","src":"10180:39:29"}],"id":544,"name":"EmitStatement","src":"10175:44:29"}],"id":545,"name":"Block","src":"10118:188:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96388ed71ebb5d970d8c40d08f33931fc80bd2768fd60f12b78e085d12441b0e","typeString":"literal_string \"URL\""}],"overloadedDeclarations":[2621,2639],"referencedDeclaration":2621,"type":"function (string memory) returns (uint256)","value":"oraclize_getPrice"},"id":546,"name":"Identifier","src":"10316:17:29"},{"attributes":{"argumentTypes":null,"hexvalue":"55524c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"URL\"","value":"URL"},"id":547,"name":"Literal","src":"10334:5:29"}],"id":548,"name":"FunctionCall","src":"10316:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":549,"name":"Identifier","src":"10343:10:29"}],"id":550,"name":"MemberAccess","src":"10343:17:29"}],"id":551,"name":"BinaryOperation","src":"10316:44:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Oracle_$1117","typeString":"contract Oracle"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":552,"name":"ElementaryTypeNameExpression","src":"10363:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15797,"type":"contract Oracle","value":"this"},"id":553,"name":"Identifier","src":"10371:4:29"}],"id":554,"name":"FunctionCall","src":"10363:13:29"}],"id":555,"name":"MemberAccess","src":"10363:21:29"}],"id":556,"name":"BinaryOperation","src":"10316:68:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_a6d1ff1db3d0b9b8c60e12ccab5ce7431be9a2cd0518ac362f1c5c1e0b1cefee","typeString":"literal_string \"insufficient balance\""}],"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"function (string memory)","value":"FailedUpdateRequest"},"id":557,"name":"Identifier","src":"10448:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e73756666696369656e742062616c616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"insufficient balance\"","value":"insufficient balance"},"id":558,"name":"Literal","src":"10468:22:29"}],"id":559,"name":"FunctionCall","src":"10448:43:29"}],"id":560,"name":"EmitStatement","src":"10443:48:29"}],"id":561,"name":"Block","src":"10386:116:29"},{"children":[{"attributes":{"assignments":[565]},"children":[{"attributes":{"constant":false,"name":"apiPrefix","scope":645,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":564,"name":"UserDefinedTypeName","src":"10581:13:29"}],"id":565,"name":"VariableDeclaration","src":"10581:30:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"https://min-api.cryptocompare.com/data/price?fsym=\"","value":"https://min-api.cryptocompare.com/data/price?fsym="},"id":566,"name":"Literal","src":"10614:52:29"}],"id":567,"name":"MemberAccess","src":"10614:60:29"}],"id":568,"name":"FunctionCall","src":"10614:62:29"}],"id":569,"name":"VariableDeclarationStatement","src":"10581:95:29"},{"attributes":{"assignments":[573]},"children":[{"attributes":{"constant":false,"name":"apiSuffix","scope":645,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":572,"name":"UserDefinedTypeName","src":"10690:13:29"}],"id":573,"name":"VariableDeclaration","src":"10690:30:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"267473796d733d455448267369676e3d74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"&tsyms=ETH&sign=true\"","value":"&tsyms=ETH&sign=true"},"id":574,"name":"Literal","src":"10723:22:29"}],"id":575,"name":"MemberAccess","src":"10723:30:29"}],"id":576,"name":"FunctionCall","src":"10723:32:29"}],"id":577,"name":"VariableDeclarationStatement","src":"10690:65:29"},{"children":[{"attributes":{"assignments":[579]},"children":[{"attributes":{"constant":false,"name":"i","scope":644,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":578,"name":"ElementaryTypeName","src":"10844:7:29"}],"id":579,"name":"VariableDeclaration","src":"10844:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":580,"name":"Literal","src":"10856:1:29"}],"id":581,"name":"VariableDeclarationStatement","src":"10844:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":579,"type":"uint256","value":"i"},"id":582,"name":"Identifier","src":"10859:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":583,"name":"Identifier","src":"10863:10:29"}],"id":584,"name":"MemberAccess","src":"10863:17:29"}],"id":585,"name":"BinaryOperation","src":"10859:21:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":579,"type":"uint256","value":"i"},"id":586,"name":"Identifier","src":"10882:1:29"}],"id":587,"name":"UnaryOperation","src":"10882:3:29"}],"id":588,"name":"ExpressionStatement","src":"10882:3:29"},{"children":[{"attributes":{"assignments":[590,null,null,592,null,null,null]},"children":[{"attributes":{"constant":false,"name":"tokenSymbol","scope":643,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":589,"name":"ElementaryTypeName","src":"10963:6:29"}],"id":590,"name":"VariableDeclaration","src":"10963:25:29"},{"attributes":{"constant":false,"name":"available","scope":643,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":591,"name":"ElementaryTypeName","src":"10994:4:29"}],"id":592,"name":"VariableDeclaration","src":"10994:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8779,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":593,"name":"Identifier","src":"11018:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":594,"name":"Identifier","src":"11032:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":579,"type":"uint256","value":"i"},"id":595,"name":"Identifier","src":"11043:1:29"}],"id":596,"name":"IndexAccess","src":"11032:13:29"}],"id":597,"name":"FunctionCall","src":"11018:28:29"}],"id":598,"name":"VariableDeclarationStatement","src":"10962:84:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1ece3bb723b90e0cf52e7142c26cd1e8e9aeda26d377c85e0b1b64ab12879ce1","typeString":"literal_string \"token must be available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":599,"name":"Identifier","src":"11064:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":592,"type":"bool","value":"available"},"id":600,"name":"Identifier","src":"11072:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206d75737420626520617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token must be available\"","value":"token must be available"},"id":601,"name":"Literal","src":"11083:25:29"}],"id":602,"name":"FunctionCall","src":"11064:45:29"}],"id":603,"name":"ExpressionStatement","src":"11064:45:29"},{"attributes":{"assignments":[607]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":643,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":606,"name":"UserDefinedTypeName","src":"11188:13:29"}],"id":607,"name":"VariableDeclaration","src":"11188:27:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":590,"type":"string memory","value":"tokenSymbol"},"id":608,"name":"Identifier","src":"11218:11:29"}],"id":609,"name":"MemberAccess","src":"11218:19:29"}],"id":610,"name":"FunctionCall","src":"11218:21:29"}],"id":611,"name":"VariableDeclarationStatement","src":"11188:51:29"},{"attributes":{"assignments":[613]},"children":[{"attributes":{"constant":false,"name":"queryID","scope":643,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":612,"name":"ElementaryTypeName","src":"11332:7:29"}],"id":613,"name":"VariableDeclaration","src":"11332:15:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_96388ed71ebb5d970d8c40d08f33931fc80bd2768fd60f12b78e085d12441b0e","typeString":"literal_string \"URL\""},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[2680,2723,2770,2815,2859,2905,2955,3003,3051,3101,3155,3207,3244,3284,3327,3367,3412,3460,3511,3559,3612,3668,3727,3783,3844,3908,3975,4039,4108,4180,4255,4327,4375,4425,4479,4531,4568,4608,4651,4691,4736,4784,4835,4883,4936,4992,5051,5107,5168,5232,5299,5363,5432,5504,5579,5651],"referencedDeclaration":2815,"type":"function (string memory,string memory,uint256) returns (bytes32)","value":"oraclize_query"},"id":614,"name":"Identifier","src":"11350:14:29"},{"attributes":{"argumentTypes":null,"hexvalue":"55524c","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"URL\"","value":"URL"},"id":615,"name":"Literal","src":"11365:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"concat","referencedDeclaration":14040,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"concat","referencedDeclaration":14040,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":565,"type":"struct strings.slice memory","value":"apiPrefix"},"id":616,"name":"Identifier","src":"11372:9:29"}],"id":617,"name":"MemberAccess","src":"11372:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":607,"type":"struct strings.slice memory","value":"symbol"},"id":618,"name":"Identifier","src":"11389:6:29"}],"id":619,"name":"FunctionCall","src":"11372:24:29"}],"id":620,"name":"MemberAccess","src":"11372:32:29"}],"id":621,"name":"FunctionCall","src":"11372:34:29"}],"id":622,"name":"MemberAccess","src":"11372:41:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":573,"type":"struct strings.slice memory","value":"apiSuffix"},"id":623,"name":"Identifier","src":"11414:9:29"}],"id":624,"name":"FunctionCall","src":"11372:52:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":531,"type":"uint256","value":"_gasLimit"},"id":625,"name":"Identifier","src":"11426:9:29"}],"id":626,"name":"FunctionCall","src":"11350:86:29"}],"id":627,"name":"VariableDeclarationStatement","src":"11332:104:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"mapping(bytes32 => address)","value":"_queryToToken"},"id":628,"name":"Identifier","src":"11536:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":613,"type":"bytes32","value":"queryID"},"id":629,"name":"Identifier","src":"11550:7:29"}],"id":630,"name":"IndexAccess","src":"11536:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":534,"type":"address[] memory","value":"_tokenList"},"id":631,"name":"Identifier","src":"11561:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":579,"type":"uint256","value":"i"},"id":632,"name":"Identifier","src":"11572:1:29"}],"id":633,"name":"IndexAccess","src":"11561:13:29"}],"id":634,"name":"Assignment","src":"11536:38:29"}],"id":635,"name":"ExpressionStatement","src":"11536:38:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"function (string memory,bytes32)","value":"RequestedUpdate"},"id":636,"name":"Identifier","src":"11646:15:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":607,"type":"struct strings.slice memory","value":"symbol"},"id":637,"name":"Identifier","src":"11662:6:29"}],"id":638,"name":"MemberAccess","src":"11662:15:29"}],"id":639,"name":"FunctionCall","src":"11662:17:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":613,"type":"bytes32","value":"queryID"},"id":640,"name":"Identifier","src":"11681:7:29"}],"id":641,"name":"FunctionCall","src":"11646:43:29"}],"id":642,"name":"EmitStatement","src":"11641:48:29"}],"id":643,"name":"Block","src":"10887:817:29"}],"id":644,"name":"ForStatement","src":"10839:865:29"}],"id":645,"name":"Block","src":"10508:1206:29"}],"id":646,"name":"IfStatement","src":"10312:1402:29"}],"id":647,"name":"IfStatement","src":"10090:1624:29"}],"id":648,"name":"Block","src":"10029:1691:29"}],"id":649,"name":"FunctionDefinition","src":"9942:1778:29"},{"attributes":{"documentation":"@notice Verify the origin proof returned by the cryptocompare API.\n @param _result query result in JSON format.\n @param _proof origin proof from cryptocompare.\n @param _publicKey cryptocompare public key.\n @param _lastUpdate timestamp of the last time the requested token was updated.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_verifyProof","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_result","scope":862,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":650,"name":"ElementaryTypeName","src":"12069:6:29"}],"id":651,"name":"VariableDeclaration","src":"12069:21:29"},{"attributes":{"constant":false,"name":"_proof","scope":862,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":652,"name":"ElementaryTypeName","src":"12092:5:29"}],"id":653,"name":"VariableDeclaration","src":"12092:19:29"},{"attributes":{"constant":false,"name":"_publicKey","scope":862,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":654,"name":"ElementaryTypeName","src":"12113:5:29"}],"id":655,"name":"VariableDeclaration","src":"12113:23:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":862,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":656,"name":"ElementaryTypeName","src":"12138:7:29"}],"id":657,"name":"VariableDeclaration","src":"12138:19:29"}],"id":658,"name":"ParameterList","src":"12068:90:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":862,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":659,"name":"ElementaryTypeName","src":"12176:4:29"}],"id":660,"name":"VariableDeclaration","src":"12176:4:29"},{"attributes":{"constant":false,"name":"","scope":862,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":661,"name":"ElementaryTypeName","src":"12182:7:29"}],"id":662,"name":"VariableDeclaration","src":"12182:7:29"}],"id":663,"name":"ParameterList","src":"12175:15:29"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":664,"name":"Identifier","src":"12246:6:29"}],"id":665,"name":"MemberAccess","src":"12246:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":70,"type":"uint256","value":"_PROOF_LEN"},"id":666,"name":"Identifier","src":"12263:10:29"}],"id":667,"name":"BinaryOperation","src":"12246:27:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_802b2e61d020a57797e2091a5d618cce14acf3620b9a166bf7a7136b69cb78fb","typeString":"literal_string \"invalid proof length\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":668,"name":"Identifier","src":"12289:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c69642070726f6f66206c656e677468","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid proof length\"","value":"invalid proof length"},"id":669,"name":"Literal","src":"12296:22:29"}],"id":670,"name":"FunctionCall","src":"12289:30:29"}],"id":671,"name":"ExpressionStatement","src":"12289:30:29"}],"id":672,"name":"Block","src":"12275:55:29"}],"id":673,"name":"IfStatement","src":"12242:88:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":674,"name":"ElementaryTypeNameExpression","src":"12427:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":675,"name":"ElementaryTypeNameExpression","src":"12435:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":676,"name":"Identifier","src":"12441:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":677,"name":"Literal","src":"12448:1:29"}],"id":678,"name":"IndexAccess","src":"12441:9:29"}],"id":679,"name":"FunctionCall","src":"12435:16:29"}],"id":680,"name":"FunctionCall","src":"12427:25:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":681,"name":"Identifier","src":"12456:14:29"}],"id":682,"name":"BinaryOperation","src":"12427:43:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_e0060b83051574ba40ded2ef248b0d17cb210e5fa4f776d436805ab1ebb12b87","typeString":"literal_string \"invalid signature length\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":683,"name":"Identifier","src":"12486:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265206c656e677468","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature length\"","value":"invalid signature length"},"id":684,"name":"Literal","src":"12493:26:29"}],"id":685,"name":"FunctionCall","src":"12486:34:29"}],"id":686,"name":"ExpressionStatement","src":"12486:34:29"}],"id":687,"name":"Block","src":"12472:59:29"}],"id":688,"name":"IfStatement","src":"12423:108:29"},{"attributes":{"assignments":[690]},"children":[{"attributes":{"constant":false,"name":"signature","scope":861,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":689,"name":"ElementaryTypeName","src":"12541:5:29"}],"id":690,"name":"VariableDeclaration","src":"12541:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":691,"name":"ElementaryTypeName","src":"12570:5:29"}],"id":692,"name":"NewExpression","src":"12566:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":693,"name":"Identifier","src":"12576:14:29"}],"id":694,"name":"FunctionCall","src":"12566:25:29"}],"id":695,"name":"VariableDeclarationStatement","src":"12541:50:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"bytes memory","value":"signature"},"id":696,"name":"Identifier","src":"12602:9:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_2_by_1","typeString":"int_const 2"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":697,"name":"Identifier","src":"12614:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":698,"name":"Identifier","src":"12624:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":699,"name":"Literal","src":"12632:1:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":700,"name":"Identifier","src":"12635:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"bytes memory","value":"signature"},"id":701,"name":"Identifier","src":"12651:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":702,"name":"Literal","src":"12662:1:29"}],"id":703,"name":"FunctionCall","src":"12614:50:29"}],"id":704,"name":"Assignment","src":"12602:62:29"}],"id":705,"name":"ExpressionStatement","src":"12602:62:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":706,"name":"ElementaryTypeNameExpression","src":"12762:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":707,"name":"ElementaryTypeNameExpression","src":"12770:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":708,"name":"Identifier","src":"12776:6:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_ENCODING_BYTES"},"id":709,"name":"Identifier","src":"12783:15:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":710,"name":"Identifier","src":"12801:14:29"}],"id":711,"name":"BinaryOperation","src":"12783:32:29"}],"id":712,"name":"IndexAccess","src":"12776:40:29"}],"id":713,"name":"FunctionCall","src":"12770:47:29"}],"id":714,"name":"FunctionCall","src":"12762:56:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":96,"type":"uint256","value":"_MAX_BYTE_SIZE"},"id":715,"name":"Identifier","src":"12821:14:29"}],"id":716,"name":"BinaryOperation","src":"12762:73:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":717,"name":"ElementaryTypeNameExpression","src":"12838:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":718,"name":"ElementaryTypeNameExpression","src":"12846:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":719,"name":"Identifier","src":"12852:6:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_ENCODING_BYTES"},"id":720,"name":"Identifier","src":"12859:15:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":721,"name":"Identifier","src":"12877:14:29"}],"id":722,"name":"BinaryOperation","src":"12859:32:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":723,"name":"Literal","src":"12894:1:29"}],"id":724,"name":"BinaryOperation","src":"12859:36:29"}],"id":725,"name":"IndexAccess","src":"12852:44:29"}],"id":726,"name":"FunctionCall","src":"12846:51:29"}],"id":727,"name":"FunctionCall","src":"12838:60:29"}],"id":728,"name":"BinaryOperation","src":"12762:136:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"_HEADERS_LEN"},"id":729,"name":"Identifier","src":"12914:12:29"}],"id":730,"name":"BinaryOperation","src":"12762:164:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_5d328c796053a338c6354f22dd94fc5d8cc4893b6480e6cdfcce0560436e01ab","typeString":"literal_string \"invalid headers length\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":731,"name":"Identifier","src":"12951:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c69642068656164657273206c656e677468","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid headers length\"","value":"invalid headers length"},"id":732,"name":"Literal","src":"12958:24:29"}],"id":733,"name":"FunctionCall","src":"12951:32:29"}],"id":734,"name":"ExpressionStatement","src":"12951:32:29"}],"id":735,"name":"Block","src":"12937:57:29"}],"id":736,"name":"IfStatement","src":"12745:249:29"},{"attributes":{"assignments":[738]},"children":[{"attributes":{"constant":false,"name":"headers","scope":861,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":737,"name":"ElementaryTypeName","src":"13004:5:29"}],"id":738,"name":"VariableDeclaration","src":"13004:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":739,"name":"ElementaryTypeName","src":"13031:5:29"}],"id":740,"name":"NewExpression","src":"13027:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"_HEADERS_LEN"},"id":741,"name":"Identifier","src":"13037:12:29"}],"id":742,"name":"FunctionCall","src":"13027:23:29"}],"id":743,"name":"VariableDeclarationStatement","src":"13004:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":744,"name":"Identifier","src":"13060:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":745,"name":"Identifier","src":"13070:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":653,"type":"bytes memory","value":"_proof"},"id":746,"name":"Identifier","src":"13080:6:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":747,"name":"Literal","src":"13088:1:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":76,"type":"uint256","value":"_ENCODING_BYTES"},"id":748,"name":"Identifier","src":"13092:15:29"}],"id":749,"name":"BinaryOperation","src":"13088:19:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":73,"type":"uint256","value":"_ECDSA_SIG_LEN"},"id":750,"name":"Identifier","src":"13110:14:29"}],"id":751,"name":"BinaryOperation","src":"13088:36:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"uint256","value":"_HEADERS_LEN"},"id":752,"name":"Identifier","src":"13126:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":753,"name":"Identifier","src":"13140:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":754,"name":"Literal","src":"13149:1:29"}],"id":755,"name":"FunctionCall","src":"13070:81:29"}],"id":756,"name":"Assignment","src":"13060:91:29"}],"id":757,"name":"ExpressionStatement","src":"13060:91:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":905,"type":"function (bytes memory,bytes memory,bytes memory) returns (bool)","value":"_verifySignature"},"id":758,"name":"Identifier","src":"13249:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":759,"name":"Identifier","src":"13266:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":690,"type":"bytes memory","value":"signature"},"id":760,"name":"Identifier","src":"13275:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":655,"type":"bytes memory","value":"_publicKey"},"id":761,"name":"Identifier","src":"13286:10:29"}],"id":762,"name":"FunctionCall","src":"13249:48:29"}],"id":763,"name":"UnaryOperation","src":"13248:49:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":764,"name":"Identifier","src":"13313:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":765,"name":"Literal","src":"13320:19:29"}],"id":766,"name":"FunctionCall","src":"13313:27:29"}],"id":767,"name":"ExpressionStatement","src":"13313:27:29"}],"id":768,"name":"Block","src":"13299:52:29"}],"id":769,"name":"IfStatement","src":"13244:107:29"},{"attributes":{"assignments":[771]},"children":[{"attributes":{"constant":false,"name":"dateHeader","scope":861,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":770,"name":"ElementaryTypeName","src":"13400:5:29"}],"id":771,"name":"VariableDeclaration","src":"13400:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":772,"name":"ElementaryTypeName","src":"13430:5:29"}],"id":773,"name":"NewExpression","src":"13426:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":774,"name":"Literal","src":"13436:2:29"}],"id":775,"name":"FunctionCall","src":"13426:13:29"}],"id":776,"name":"VariableDeclarationStatement","src":"13400:39:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":771,"type":"bytes memory","value":"dateHeader"},"id":777,"name":"Identifier","src":"13519:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_11_by_1","typeString":"int_const 11"},{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":778,"name":"Identifier","src":"13532:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":779,"name":"Identifier","src":"13542:7:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3131","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 11","value":"11"},"id":780,"name":"Literal","src":"13551:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":781,"name":"Literal","src":"13555:2:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":771,"type":"bytes memory","value":"dateHeader"},"id":782,"name":"Identifier","src":"13559:10:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":783,"name":"Literal","src":"13571:1:29"}],"id":784,"name":"FunctionCall","src":"13532:41:29"}],"id":785,"name":"Assignment","src":"13519:54:29"}],"id":786,"name":"ExpressionStatement","src":"13519:54:29"},{"attributes":{"assignments":[788],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dateValid","scope":861,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":787,"name":"ElementaryTypeName","src":"13584:4:29"}],"id":788,"name":"VariableDeclaration","src":"13584:14:29"}],"id":789,"name":"VariableDeclarationStatement","src":"13584:14:29"},{"attributes":{"assignments":[791],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"timestamp","scope":861,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":790,"name":"ElementaryTypeName","src":"13608:7:29"}],"id":791,"name":"VariableDeclaration","src":"13608:17:29"}],"id":792,"name":"VariableDeclarationStatement","src":"13608:17:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":788,"type":"bool","value":"dateValid"},"id":793,"name":"Identifier","src":"13636:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":791,"type":"uint256","value":"timestamp"},"id":794,"name":"Identifier","src":"13647:9:29"}],"id":795,"name":"TupleExpression","src":"13635:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1116,"type":"function (string memory,uint256) pure returns (bool,uint256)","value":"_verifyDate"},"id":796,"name":"Identifier","src":"13660:11:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":797,"name":"ElementaryTypeNameExpression","src":"13672:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":771,"type":"bytes memory","value":"dateHeader"},"id":798,"name":"Identifier","src":"13679:10:29"}],"id":799,"name":"FunctionCall","src":"13672:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":657,"type":"uint256","value":"_lastUpdate"},"id":800,"name":"Identifier","src":"13692:11:29"}],"id":801,"name":"FunctionCall","src":"13660:44:29"}],"id":802,"name":"Assignment","src":"13635:69:29"}],"id":803,"name":"ExpressionStatement","src":"13635:69:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":788,"type":"bool","value":"dateValid"},"id":804,"name":"Identifier","src":"13779:9:29"}],"id":805,"name":"UnaryOperation","src":"13778:10:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_bbecc4126e30eacd995bb0f9e9f3dc427c7af6aec4ece5c4f5310382377491ce","typeString":"literal_string \"invalid date\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":806,"name":"Identifier","src":"13804:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c69642064617465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid date\"","value":"invalid date"},"id":807,"name":"Literal","src":"13811:14:29"}],"id":808,"name":"FunctionCall","src":"13804:22:29"}],"id":809,"name":"ExpressionStatement","src":"13804:22:29"}],"id":810,"name":"Block","src":"13790:47:29"}],"id":811,"name":"IfStatement","src":"13774:63:29"},{"attributes":{"assignments":[813]},"children":[{"attributes":{"constant":false,"name":"digest","scope":861,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":812,"name":"ElementaryTypeName","src":"13915:5:29"}],"id":813,"name":"VariableDeclaration","src":"13915:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":814,"name":"ElementaryTypeName","src":"13941:5:29"}],"id":815,"name":"NewExpression","src":"13937:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"uint256","value":"_DIGEST_BASE64_LEN"},"id":816,"name":"Identifier","src":"13947:18:29"}],"id":817,"name":"FunctionCall","src":"13937:29:29"}],"id":818,"name":"VariableDeclarationStatement","src":"13915:51:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":813,"type":"bytes memory","value":"digest"},"id":819,"name":"Identifier","src":"13976:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7755,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256) pure returns (bytes memory)","value":"copyBytes"},"id":820,"name":"Identifier","src":"13985:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":738,"type":"bytes memory","value":"headers"},"id":821,"name":"Identifier","src":"13995:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":93,"type":"uint256","value":"_DIGEST_OFFSET"},"id":822,"name":"Identifier","src":"14004:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":88,"type":"uint256","value":"_DIGEST_BASE64_LEN"},"id":823,"name":"Identifier","src":"14020:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":813,"type":"bytes memory","value":"digest"},"id":824,"name":"Identifier","src":"14040:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":825,"name":"Literal","src":"14048:1:29"}],"id":826,"name":"FunctionCall","src":"13985:65:29"}],"id":827,"name":"Assignment","src":"13976:74:29"}],"id":828,"name":"ExpressionStatement","src":"13976:74:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":829,"name":"Identifier","src":"14065:9:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":830,"name":"Identifier","src":"14075:3:29"}],"id":831,"name":"MemberAccess","src":"14075:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":832,"name":"Identifier","src":"14092:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":833,"name":"Identifier","src":"14099:3:29"}],"id":834,"name":"MemberAccess","src":"14099:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":651,"type":"string memory","value":"_result"},"id":835,"name":"Identifier","src":"14116:7:29"}],"id":836,"name":"FunctionCall","src":"14099:25:29"}],"id":837,"name":"FunctionCall","src":"14092:33:29"}],"id":838,"name":"FunctionCall","src":"14075:51:29"}],"id":839,"name":"FunctionCall","src":"14065:62:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":840,"name":"Identifier","src":"14131:9:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1573,"type":"function (bytes memory) pure returns (bytes memory)","value":"_base64decode"},"id":841,"name":"Identifier","src":"14141:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":813,"type":"bytes memory","value":"digest"},"id":842,"name":"Identifier","src":"14155:6:29"}],"id":843,"name":"FunctionCall","src":"14141:21:29"}],"id":844,"name":"FunctionCall","src":"14131:32:29"}],"id":845,"name":"BinaryOperation","src":"14065:98:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_d892d676e319d50e68a733eb2b14dc19c2350f0f2f1e2e0011eedd93c8ff152f","typeString":"literal_string \"result hash not matching\""}],"overloadedDeclarations":[15714,15715],"referencedDeclaration":15715,"type":"function (string memory) pure","value":"revert"},"id":846,"name":"Identifier","src":"14179:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"726573756c742068617368206e6f74206d61746368696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"result hash not matching\"","value":"result hash not matching"},"id":847,"name":"Literal","src":"14186:26:29"}],"id":848,"name":"FunctionCall","src":"14179:34:29"}],"id":849,"name":"ExpressionStatement","src":"14179:34:29"}],"id":850,"name":"Block","src":"14165:59:29"}],"id":851,"name":"IfStatement","src":"14061:163:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":53,"type":"function (bytes memory,string memory)","value":"VerifiedProof"},"id":852,"name":"Identifier","src":"14239:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":655,"type":"bytes memory","value":"_publicKey"},"id":853,"name":"Identifier","src":"14253:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":651,"type":"string memory","value":"_result"},"id":854,"name":"Identifier","src":"14265:7:29"}],"id":855,"name":"FunctionCall","src":"14239:34:29"}],"id":856,"name":"EmitStatement","src":"14234:39:29"},{"attributes":{"functionReturnParameters":663},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":857,"name":"Literal","src":"14291:4:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":791,"type":"uint256","value":"timestamp"},"id":858,"name":"Identifier","src":"14297:9:29"}],"id":859,"name":"TupleExpression","src":"14290:17:29"}],"id":860,"name":"Return","src":"14283:24:29"}],"id":861,"name":"Block","src":"12191:2123:29"}],"id":862,"name":"FunctionDefinition","src":"12047:2267:29"},{"attributes":{"documentation":"@notice Verify the HTTP headers and the signature\n @param _headers HTTP headers provided by the cryptocompare api\n @param _signature signature provided by the cryptocompare api\n @param _publicKey cryptocompare public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_verifySignature","scope":1117,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_headers","scope":905,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":863,"name":"ElementaryTypeName","src":"14597:5:29"}],"id":864,"name":"VariableDeclaration","src":"14597:21:29"},{"attributes":{"constant":false,"name":"_signature","scope":905,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":865,"name":"ElementaryTypeName","src":"14620:5:29"}],"id":866,"name":"VariableDeclaration","src":"14620:23:29"},{"attributes":{"constant":false,"name":"_publicKey","scope":905,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":867,"name":"ElementaryTypeName","src":"14645:5:29"}],"id":868,"name":"VariableDeclaration","src":"14645:23:29"}],"id":869,"name":"ParameterList","src":"14596:73:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":905,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":870,"name":"ElementaryTypeName","src":"14687:4:29"}],"id":871,"name":"VariableDeclaration","src":"14687:4:29"}],"id":872,"name":"ParameterList","src":"14686:6:29"},{"children":[{"attributes":{"assignments":[874],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"signer","scope":904,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":873,"name":"ElementaryTypeName","src":"14703:7:29"}],"id":874,"name":"VariableDeclaration","src":"14703:14:29"}],"id":875,"name":"VariableDeclarationStatement","src":"14703:14:29"},{"attributes":{"assignments":[877],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"signatureOK","scope":904,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":876,"name":"ElementaryTypeName","src":"14727:4:29"}],"id":877,"name":"VariableDeclaration","src":"14727:16:29"}],"id":878,"name":"VariableDeclarationStatement","src":"14727:16:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"bool","value":"signatureOK"},"id":879,"name":"Identifier","src":"14822:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":874,"type":"address","value":"signer"},"id":880,"name":"Identifier","src":"14835:6:29"}],"id":881,"name":"TupleExpression","src":"14821:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,address)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7847,"type":"function (bytes32,bytes memory) returns (bool,address)","value":"ecrecovery"},"id":882,"name":"Identifier","src":"14845:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15718,"type":"function (bytes memory) pure returns (bytes32)","value":"sha256"},"id":883,"name":"Identifier","src":"14856:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":864,"type":"bytes memory","value":"_headers"},"id":884,"name":"Identifier","src":"14863:8:29"}],"id":885,"name":"FunctionCall","src":"14856:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":866,"type":"bytes memory","value":"_signature"},"id":886,"name":"Identifier","src":"14874:10:29"}],"id":887,"name":"FunctionCall","src":"14845:40:29"}],"id":888,"name":"Assignment","src":"14821:64:29"}],"id":889,"name":"ExpressionStatement","src":"14821:64:29"},{"attributes":{"functionReturnParameters":872},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"bool","value":"signatureOK"},"id":890,"name":"Identifier","src":"14902:11:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":874,"type":"address","value":"signer"},"id":891,"name":"Identifier","src":"14917:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":892,"name":"ElementaryTypeNameExpression","src":"14927:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":893,"name":"ElementaryTypeNameExpression","src":"14935:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":894,"name":"ElementaryTypeNameExpression","src":"14943:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":15703,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":895,"name":"Identifier","src":"14951:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":868,"type":"bytes memory","value":"_publicKey"},"id":896,"name":"Identifier","src":"14961:10:29"}],"id":897,"name":"FunctionCall","src":"14951:21:29"}],"id":898,"name":"FunctionCall","src":"14943:30:29"}],"id":899,"name":"FunctionCall","src":"14935:39:29"}],"id":900,"name":"FunctionCall","src":"14927:48:29"}],"id":901,"name":"BinaryOperation","src":"14917:58:29"}],"id":902,"name":"BinaryOperation","src":"14902:73:29"}],"id":903,"name":"Return","src":"14895:80:29"}],"id":904,"name":"Block","src":"14693:289:29"}],"id":905,"name":"FunctionDefinition","src":"14571:411:29"},{"attributes":{"documentation":"@notice Verify the signed HTTP date header.\n @param _dateHeader extracted date string e.g. Wed, 12 Sep 2018 15:18:14 GMT.\n @param _lastUpdate timestamp of the last time the requested token was updated.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_verifyDate","scope":1117,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_dateHeader","scope":1116,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":906,"name":"ElementaryTypeName","src":"15233:6:29"}],"id":907,"name":"VariableDeclaration","src":"15233:25:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":1116,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":908,"name":"ElementaryTypeName","src":"15260:7:29"}],"id":909,"name":"VariableDeclaration","src":"15260:19:29"}],"id":910,"name":"ParameterList","src":"15232:48:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":1116,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":911,"name":"ElementaryTypeName","src":"15303:4:29"}],"id":912,"name":"VariableDeclaration","src":"15303:4:29"},{"attributes":{"constant":false,"name":"","scope":1116,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":913,"name":"ElementaryTypeName","src":"15309:7:29"}],"id":914,"name":"VariableDeclaration","src":"15309:7:29"}],"id":915,"name":"ParameterList","src":"15302:15:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":15698,"type":"function (bool) pure","value":"assert"},"id":916,"name":"Identifier","src":"15410:6:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15696,"type":"abi","value":"abi"},"id":917,"name":"Identifier","src":"15417:3:29"}],"id":918,"name":"MemberAccess","src":"15417:16:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"string memory","value":"_dateHeader"},"id":919,"name":"Identifier","src":"15434:11:29"}],"id":920,"name":"FunctionCall","src":"15417:29:29"}],"id":921,"name":"MemberAccess","src":"15417:36:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":922,"name":"Literal","src":"15457:2:29"}],"id":923,"name":"BinaryOperation","src":"15417:42:29"}],"id":924,"name":"FunctionCall","src":"15410:50:29"}],"id":925,"name":"ExpressionStatement","src":"15410:50:29"},{"attributes":{"assignments":[929]},"children":[{"attributes":{"constant":false,"name":"date","scope":1115,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":928,"name":"UserDefinedTypeName","src":"15540:13:29"}],"id":929,"name":"VariableDeclaration","src":"15540:25:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":907,"type":"string memory","value":"_dateHeader"},"id":930,"name":"Identifier","src":"15568:11:29"}],"id":931,"name":"MemberAccess","src":"15568:19:29"}],"id":932,"name":"FunctionCall","src":"15568:21:29"}],"id":933,"name":"VariableDeclarationStatement","src":"15540:49:29"},{"attributes":{"assignments":[937]},"children":[{"attributes":{"constant":false,"name":"timeDelimiter","scope":1115,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":936,"name":"UserDefinedTypeName","src":"15599:13:29"}],"id":937,"name":"VariableDeclaration","src":"15599:34:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \":\"","value":":"},"id":938,"name":"Literal","src":"15636:3:29"}],"id":939,"name":"MemberAccess","src":"15636:11:29"}],"id":940,"name":"FunctionCall","src":"15636:13:29"}],"id":941,"name":"VariableDeclarationStatement","src":"15599:50:29"},{"attributes":{"assignments":[945]},"children":[{"attributes":{"constant":false,"name":"dateDelimiter","scope":1115,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"strings.slice","referencedDeclaration":12457,"type":"struct strings.slice"},"id":944,"name":"UserDefinedTypeName","src":"15659:13:29"}],"id":945,"name":"VariableDeclaration","src":"15659:34:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSlice","referencedDeclaration":12517,"type":"function (string memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"20","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \" \"","value":" "},"id":946,"name":"Literal","src":"15696:3:29"}],"id":947,"name":"MemberAccess","src":"15696:11:29"}],"id":948,"name":"FunctionCall","src":"15696:13:29"}],"id":949,"name":"VariableDeclarationStatement","src":"15659:50:29"},{"attributes":{"assignments":[951]},"children":[{"attributes":{"constant":false,"name":"day","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":950,"name":"ElementaryTypeName","src":"15720:7:29"}],"id":951,"name":"VariableDeclaration","src":"15720:11:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":952,"name":"Identifier","src":"15734:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":953,"name":"Identifier","src":"15754:4:29"}],"id":954,"name":"MemberAccess","src":"15754:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"struct strings.slice memory","value":"dateDelimiter"},"id":955,"name":"Identifier","src":"15765:13:29"}],"id":956,"name":"FunctionCall","src":"15754:25:29"}],"id":957,"name":"MemberAccess","src":"15754:34:29"}],"id":958,"name":"FunctionCall","src":"15754:36:29"}],"id":959,"name":"FunctionCall","src":"15734:57:29"}],"id":960,"name":"VariableDeclarationStatement","src":"15720:71:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_95a75b02e57058f7bbef7ee70d3873b2804ff7df40eb4e37bbf8661373f3d1ba","typeString":"literal_string \"day error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":961,"name":"Identifier","src":"15801:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"uint256","value":"day"},"id":962,"name":"Identifier","src":"15809:3:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":963,"name":"Literal","src":"15815:1:29"}],"id":964,"name":"BinaryOperation","src":"15809:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"uint256","value":"day"},"id":965,"name":"Identifier","src":"15820:3:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":966,"name":"Literal","src":"15826:2:29"}],"id":967,"name":"BinaryOperation","src":"15820:8:29"}],"id":968,"name":"BinaryOperation","src":"15809:19:29"},{"attributes":{"argumentTypes":null,"hexvalue":"646179206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"day error\"","value":"day error"},"id":969,"name":"Literal","src":"15830:11:29"}],"id":970,"name":"FunctionCall","src":"15801:41:29"}],"id":971,"name":"ExpressionStatement","src":"15801:41:29"},{"attributes":{"assignments":[973]},"children":[{"attributes":{"constant":false,"name":"month","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":972,"name":"ElementaryTypeName","src":"15853:7:29"}],"id":973,"name":"VariableDeclaration","src":"15853:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8117,"type":"function (string memory) pure returns (uint8)","value":"_monthToNumber"},"id":974,"name":"Identifier","src":"15869:14:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":975,"name":"Identifier","src":"15884:4:29"}],"id":976,"name":"MemberAccess","src":"15884:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"struct strings.slice memory","value":"dateDelimiter"},"id":977,"name":"Identifier","src":"15895:13:29"}],"id":978,"name":"FunctionCall","src":"15884:25:29"}],"id":979,"name":"MemberAccess","src":"15884:34:29"}],"id":980,"name":"FunctionCall","src":"15884:36:29"}],"id":981,"name":"FunctionCall","src":"15869:52:29"}],"id":982,"name":"VariableDeclarationStatement","src":"15853:68:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a1177fbd3d9cf5cca68d736867c5e28749fe8032db444d9fa5da3d2ddd8f3f73","typeString":"literal_string \"month error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":983,"name":"Identifier","src":"15931:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":973,"type":"uint256","value":"month"},"id":984,"name":"Identifier","src":"15939:5:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":985,"name":"Literal","src":"15947:1:29"}],"id":986,"name":"BinaryOperation","src":"15939:9:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":973,"type":"uint256","value":"month"},"id":987,"name":"Identifier","src":"15952:5:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3133","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 13","value":"13"},"id":988,"name":"Literal","src":"15960:2:29"}],"id":989,"name":"BinaryOperation","src":"15952:10:29"}],"id":990,"name":"BinaryOperation","src":"15939:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e7468206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"month error\"","value":"month error"},"id":991,"name":"Literal","src":"15964:13:29"}],"id":992,"name":"FunctionCall","src":"15931:47:29"}],"id":993,"name":"ExpressionStatement","src":"15931:47:29"},{"attributes":{"assignments":[995]},"children":[{"attributes":{"constant":false,"name":"year","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":994,"name":"ElementaryTypeName","src":"15989:7:29"}],"id":995,"name":"VariableDeclaration","src":"15989:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":996,"name":"Identifier","src":"16004:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":997,"name":"Identifier","src":"16024:4:29"}],"id":998,"name":"MemberAccess","src":"16024:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":945,"type":"struct strings.slice memory","value":"dateDelimiter"},"id":999,"name":"Identifier","src":"16035:13:29"}],"id":1000,"name":"FunctionCall","src":"16024:25:29"}],"id":1001,"name":"MemberAccess","src":"16024:34:29"}],"id":1002,"name":"FunctionCall","src":"16024:36:29"}],"id":1003,"name":"FunctionCall","src":"16004:57:29"}],"id":1004,"name":"VariableDeclarationStatement","src":"15989:72:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9d839699d3e7666d9e399390bf4d043a50156c35b49e48b95ba932560f4dddcd","typeString":"literal_string \"year error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1005,"name":"Identifier","src":"16071:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"year"},"id":1006,"name":"Identifier","src":"16079:4:29"},{"attributes":{"argumentTypes":null,"hexvalue":"32303137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2017","value":"2017"},"id":1007,"name":"Literal","src":"16086:4:29"}],"id":1008,"name":"BinaryOperation","src":"16079:11:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"year"},"id":1009,"name":"Identifier","src":"16094:4:29"},{"attributes":{"argumentTypes":null,"hexvalue":"33303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3000","value":"3000"},"id":1010,"name":"Literal","src":"16101:4:29"}],"id":1011,"name":"BinaryOperation","src":"16094:11:29"}],"id":1012,"name":"BinaryOperation","src":"16079:26:29"},{"attributes":{"argumentTypes":null,"hexvalue":"79656172206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"year error\"","value":"year error"},"id":1013,"name":"Literal","src":"16107:12:29"}],"id":1014,"name":"FunctionCall","src":"16071:49:29"}],"id":1015,"name":"ExpressionStatement","src":"16071:49:29"},{"attributes":{"assignments":[1017]},"children":[{"attributes":{"constant":false,"name":"hour","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1016,"name":"ElementaryTypeName","src":"16131:7:29"}],"id":1017,"name":"VariableDeclaration","src":"16131:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":1018,"name":"Identifier","src":"16146:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":1019,"name":"Identifier","src":"16166:4:29"}],"id":1020,"name":"MemberAccess","src":"16166:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":937,"type":"struct strings.slice memory","value":"timeDelimiter"},"id":1021,"name":"Identifier","src":"16177:13:29"}],"id":1022,"name":"FunctionCall","src":"16166:25:29"}],"id":1023,"name":"MemberAccess","src":"16166:34:29"}],"id":1024,"name":"FunctionCall","src":"16166:36:29"}],"id":1025,"name":"FunctionCall","src":"16146:57:29"}],"id":1026,"name":"VariableDeclarationStatement","src":"16131:72:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab056418919ffee98f625728a16422f4a36f7aa321eeee0b9e5360560378b27c","typeString":"literal_string \"hour error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1027,"name":"Identifier","src":"16213:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1017,"type":"uint256","value":"hour"},"id":1028,"name":"Identifier","src":"16221:4:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3235","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 25","value":"25"},"id":1029,"name":"Literal","src":"16228:2:29"}],"id":1030,"name":"BinaryOperation","src":"16221:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"686f7572206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"hour error\"","value":"hour error"},"id":1031,"name":"Literal","src":"16232:12:29"}],"id":1032,"name":"FunctionCall","src":"16213:32:29"}],"id":1033,"name":"ExpressionStatement","src":"16213:32:29"},{"attributes":{"assignments":[1035]},"children":[{"attributes":{"constant":false,"name":"minute","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1034,"name":"ElementaryTypeName","src":"16256:7:29"}],"id":1035,"name":"VariableDeclaration","src":"16256:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":1036,"name":"Identifier","src":"16273:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":1037,"name":"Identifier","src":"16293:4:29"}],"id":1038,"name":"MemberAccess","src":"16293:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":937,"type":"struct strings.slice memory","value":"timeDelimiter"},"id":1039,"name":"Identifier","src":"16304:13:29"}],"id":1040,"name":"FunctionCall","src":"16293:25:29"}],"id":1041,"name":"MemberAccess","src":"16293:34:29"}],"id":1042,"name":"FunctionCall","src":"16293:36:29"}],"id":1043,"name":"FunctionCall","src":"16273:57:29"}],"id":1044,"name":"VariableDeclarationStatement","src":"16256:74:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c3c1ccf9a2b7bd2832b9ffd4cd2f682d3e60d7b053050a16568916bf28585299","typeString":"literal_string \"minute error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1045,"name":"Identifier","src":"16340:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"uint256","value":"minute"},"id":1046,"name":"Identifier","src":"16348:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":1047,"name":"Literal","src":"16357:2:29"}],"id":1048,"name":"BinaryOperation","src":"16348:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6d696e757465206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"minute error\"","value":"minute error"},"id":1049,"name":"Literal","src":"16361:14:29"}],"id":1050,"name":"FunctionCall","src":"16340:36:29"}],"id":1051,"name":"ExpressionStatement","src":"16340:36:29"},{"attributes":{"assignments":[1053]},"children":[{"attributes":{"constant":false,"name":"second","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1052,"name":"ElementaryTypeName","src":"16387:7:29"}],"id":1053,"name":"VariableDeclaration","src":"16387:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[8231,8723],"referencedDeclaration":8231,"type":"function (string memory) pure returns (uint256)","value":"_parseIntScientific"},"id":1054,"name":"Identifier","src":"16404:19:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$12457_memory_ptr","typeString":"struct strings.slice memory"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"split","referencedDeclaration":13826,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":929,"type":"struct strings.slice memory","value":"date"},"id":1055,"name":"Identifier","src":"16424:4:29"}],"id":1056,"name":"MemberAccess","src":"16424:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":937,"type":"struct strings.slice memory","value":"timeDelimiter"},"id":1057,"name":"Identifier","src":"16435:13:29"}],"id":1058,"name":"FunctionCall","src":"16424:25:29"}],"id":1059,"name":"MemberAccess","src":"16424:34:29"}],"id":1060,"name":"FunctionCall","src":"16424:36:29"}],"id":1061,"name":"FunctionCall","src":"16404:57:29"}],"id":1062,"name":"VariableDeclarationStatement","src":"16387:74:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30566e2365c40c39b8cff6f6328671d3f74806dbf5a804b36e8ac7217a4f034c","typeString":"literal_string \"second error\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":1063,"name":"Identifier","src":"16471:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1053,"type":"uint256","value":"second"},"id":1064,"name":"Identifier","src":"16479:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":1065,"name":"Literal","src":"16488:2:29"}],"id":1066,"name":"BinaryOperation","src":"16479:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"7365636f6e64206572726f72","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"second error\"","value":"second error"},"id":1067,"name":"Literal","src":"16492:14:29"}],"id":1068,"name":"FunctionCall","src":"16471:36:29"}],"id":1069,"name":"ExpressionStatement","src":"16471:36:29"},{"attributes":{"assignments":[1071]},"children":[{"attributes":{"constant":false,"name":"timestamp","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1070,"name":"ElementaryTypeName","src":"16518:7:29"}],"id":1071,"name":"VariableDeclaration","src":"16518:17:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":995,"type":"uint256","value":"year"},"id":1072,"name":"Identifier","src":"16538:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 10000000000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_10000000000_by_1","typeString":"int_const 10000000000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 10000000000"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1073,"name":"Literal","src":"16546:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1074,"name":"Literal","src":"16550:2:29"}],"id":1075,"name":"BinaryOperation","src":"16546:6:29"}],"id":1076,"name":"TupleExpression","src":"16545:8:29"}],"id":1077,"name":"BinaryOperation","src":"16538:15:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":973,"type":"uint256","value":"month"},"id":1078,"name":"Identifier","src":"16556:5:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 100000000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100000000_by_1","typeString":"int_const 100000000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 100000000"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1079,"name":"Literal","src":"16565:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":1080,"name":"Literal","src":"16569:1:29"}],"id":1081,"name":"BinaryOperation","src":"16565:5:29"}],"id":1082,"name":"TupleExpression","src":"16564:7:29"}],"id":1083,"name":"BinaryOperation","src":"16556:15:29"}],"id":1084,"name":"BinaryOperation","src":"16538:33:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"uint256","value":"day"},"id":1085,"name":"Identifier","src":"16574:3:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 1000000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_1000000_by_1","typeString":"int_const 1000000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 1000000"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1086,"name":"Literal","src":"16581:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":1087,"name":"Literal","src":"16585:1:29"}],"id":1088,"name":"BinaryOperation","src":"16581:5:29"}],"id":1089,"name":"TupleExpression","src":"16580:7:29"}],"id":1090,"name":"BinaryOperation","src":"16574:13:29"}],"id":1091,"name":"BinaryOperation","src":"16538:49:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1017,"type":"uint256","value":"hour"},"id":1092,"name":"Identifier","src":"16590:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 10000"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_10000_by_1","typeString":"int_const 10000"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 10000"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1093,"name":"Literal","src":"16598:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1094,"name":"Literal","src":"16602:1:29"}],"id":1095,"name":"BinaryOperation","src":"16598:5:29"}],"id":1096,"name":"TupleExpression","src":"16597:7:29"}],"id":1097,"name":"BinaryOperation","src":"16590:14:29"}],"id":1098,"name":"BinaryOperation","src":"16538:66:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1035,"type":"uint256","value":"minute"},"id":1099,"name":"Identifier","src":"16607:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10","value":"10"},"id":1100,"name":"Literal","src":"16617:2:29"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1101,"name":"Literal","src":"16621:1:29"}],"id":1102,"name":"BinaryOperation","src":"16617:5:29"}],"id":1103,"name":"TupleExpression","src":"16616:7:29"}],"id":1104,"name":"BinaryOperation","src":"16607:16:29"}],"id":1105,"name":"BinaryOperation","src":"16538:85:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1053,"type":"uint256","value":"second"},"id":1106,"name":"Identifier","src":"16626:6:29"}],"id":1107,"name":"BinaryOperation","src":"16538:94:29"}],"id":1108,"name":"VariableDeclarationStatement","src":"16518:114:29"},{"attributes":{"functionReturnParameters":915},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"uint256","value":"timestamp"},"id":1109,"name":"Identifier","src":"16651:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":909,"type":"uint256","value":"_lastUpdate"},"id":1110,"name":"Identifier","src":"16663:11:29"}],"id":1111,"name":"BinaryOperation","src":"16651:23:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"uint256","value":"timestamp"},"id":1112,"name":"Identifier","src":"16676:9:29"}],"id":1113,"name":"TupleExpression","src":"16650:36:29"}],"id":1114,"name":"Return","src":"16643:43:29"}],"id":1115,"name":"Block","src":"15318:1375:29"}],"id":1116,"name":"FunctionDefinition","src":"15212:1481:29"}],"id":1117,"name":"ContractDefinition","src":"1226:15469:29"}],"id":1118,"name":"SourceUnit","src":"770:15926:29"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[9834],"TokenWhitelist":[10734]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":9748,"name":"PragmaDirective","src":"774:24:30"},{"attributes":{"SourceUnit":7950,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9749,"name":"ImportDirective","src":"800:38:30"},{"attributes":{"SourceUnit":8982,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9750,"name":"ImportDirective","src":"839:39:30"},{"attributes":{"SourceUnit":14268,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9751,"name":"ImportDirective","src":"879:36:30"},{"attributes":{"SourceUnit":14157,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9752,"name":"ImportDirective","src":"916:33:30"},{"attributes":{"SourceUnit":1251,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":10735,"symbolAliases":[null],"unitAlias":""},"id":9753,"name":"ImportDirective","src":"950:34:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[9834],"name":"ITokenWhitelist","scope":10735},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9754,"name":"ElementaryTypeName","src":"1124:7:30"}],"id":9755,"name":"VariableDeclaration","src":"1124:7:30"}],"id":9756,"name":"ParameterList","src":"1123:9:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9757,"name":"ElementaryTypeName","src":"1156:6:30"}],"id":9758,"name":"VariableDeclaration","src":"1156:13:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9759,"name":"ElementaryTypeName","src":"1171:7:30"}],"id":9760,"name":"VariableDeclaration","src":"1171:7:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9761,"name":"ElementaryTypeName","src":"1180:7:30"}],"id":9762,"name":"VariableDeclaration","src":"1180:7:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9763,"name":"ElementaryTypeName","src":"1189:4:30"}],"id":9764,"name":"VariableDeclaration","src":"1189:4:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9765,"name":"ElementaryTypeName","src":"1195:4:30"}],"id":9766,"name":"VariableDeclaration","src":"1195:4:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9767,"name":"ElementaryTypeName","src":"1201:4:30"}],"id":9768,"name":"VariableDeclaration","src":"1201:4:30"},{"attributes":{"constant":false,"name":"","scope":9772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9769,"name":"ElementaryTypeName","src":"1207:7:30"}],"id":9770,"name":"VariableDeclaration","src":"1207:7:30"}],"id":9771,"name":"ParameterList","src":"1155:60:30"}],"id":9772,"name":"FunctionDefinition","src":"1102:114:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9773,"name":"ParameterList","src":"1248:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9774,"name":"ElementaryTypeName","src":"1274:6:30"}],"id":9775,"name":"VariableDeclaration","src":"1274:13:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9776,"name":"ElementaryTypeName","src":"1289:7:30"}],"id":9777,"name":"VariableDeclaration","src":"1289:7:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9778,"name":"ElementaryTypeName","src":"1298:7:30"}],"id":9779,"name":"VariableDeclaration","src":"1298:7:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9780,"name":"ElementaryTypeName","src":"1307:4:30"}],"id":9781,"name":"VariableDeclaration","src":"1307:4:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9782,"name":"ElementaryTypeName","src":"1313:4:30"}],"id":9783,"name":"VariableDeclaration","src":"1313:4:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9784,"name":"ElementaryTypeName","src":"1319:4:30"}],"id":9785,"name":"VariableDeclaration","src":"1319:4:30"},{"attributes":{"constant":false,"name":"","scope":9789,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9786,"name":"ElementaryTypeName","src":"1325:7:30"}],"id":9787,"name":"VariableDeclaration","src":"1325:7:30"}],"id":9788,"name":"ParameterList","src":"1273:60:30"}],"id":9789,"name":"FunctionDefinition","src":"1222:112:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9790,"name":"ParameterList","src":"1366:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9795,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9791,"name":"ElementaryTypeName","src":"1392:7:30"}],"id":9792,"name":"ArrayTypeName","src":"1392:9:30"}],"id":9793,"name":"VariableDeclaration","src":"1392:16:30"}],"id":9794,"name":"ParameterList","src":"1391:18:30"}],"id":9795,"name":"FunctionDefinition","src":"1340:70:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9796,"name":"ParameterList","src":"1441:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9801,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9797,"name":"ElementaryTypeName","src":"1467:7:30"}],"id":9798,"name":"ArrayTypeName","src":"1467:9:30"}],"id":9799,"name":"VariableDeclaration","src":"1467:16:30"}],"id":9800,"name":"ParameterList","src":"1466:18:30"}],"id":9801,"name":"FunctionDefinition","src":"1416:69:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":9808,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9802,"name":"ElementaryTypeName","src":"1518:6:30"}],"id":9803,"name":"VariableDeclaration","src":"1518:6:30"}],"id":9804,"name":"ParameterList","src":"1517:8:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9808,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9805,"name":"ElementaryTypeName","src":"1549:4:30"}],"id":9806,"name":"VariableDeclaration","src":"1549:4:30"}],"id":9807,"name":"ParameterList","src":"1548:6:30"}],"id":9808,"name":"FunctionDefinition","src":"1491:64:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":9819,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9809,"name":"ElementaryTypeName","src":"1597:7:30"}],"id":9810,"name":"VariableDeclaration","src":"1597:7:30"},{"attributes":{"constant":false,"name":"","scope":9819,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9811,"name":"ElementaryTypeName","src":"1606:5:30"}],"id":9812,"name":"VariableDeclaration","src":"1606:14:30"}],"id":9813,"name":"ParameterList","src":"1596:25:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9819,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9814,"name":"ElementaryTypeName","src":"1645:7:30"}],"id":9815,"name":"VariableDeclaration","src":"1645:7:30"},{"attributes":{"constant":false,"name":"","scope":9819,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9816,"name":"ElementaryTypeName","src":"1654:7:30"}],"id":9817,"name":"VariableDeclaration","src":"1654:7:30"}],"id":9818,"name":"ParameterList","src":"1644:18:30"}],"id":9819,"name":"FunctionDefinition","src":"1561:102:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":9834,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":9820,"name":"ParameterList","src":"1688:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":9824,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9821,"name":"ElementaryTypeName","src":"1714:7:30"}],"id":9822,"name":"VariableDeclaration","src":"1714:7:30"}],"id":9823,"name":"ParameterList","src":"1713:9:30"}],"id":9824,"name":"FunctionDefinition","src":"1669:54:30"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":9834,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":9833,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9825,"name":"ElementaryTypeName","src":"1754:7:30"}],"id":9826,"name":"VariableDeclaration","src":"1754:7:30"},{"attributes":{"constant":false,"name":"","scope":9833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9827,"name":"ElementaryTypeName","src":"1763:7:30"}],"id":9828,"name":"VariableDeclaration","src":"1763:7:30"},{"attributes":{"constant":false,"name":"","scope":9833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9829,"name":"ElementaryTypeName","src":"1772:7:30"}],"id":9830,"name":"VariableDeclaration","src":"1772:7:30"}],"id":9831,"name":"ParameterList","src":"1753:27:30"},{"attributes":{"parameters":[null]},"children":[],"id":9832,"name":"ParameterList","src":"1789:0:30"}],"id":9833,"name":"FunctionDefinition","src":"1729:61:30"}],"id":9834,"name":"ContractDefinition","src":"1070:722:30"},{"attributes":{"contractDependencies":[7949,8163,8981],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[10734,8981,7949,8163],"name":"TokenWhitelist","scope":10735},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":8163,"type":"contract ENSResolvable"},"id":9835,"name":"UserDefinedTypeName","src":"1966:13:30"}],"id":9836,"name":"InheritanceSpecifier","src":"1966:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":7949,"type":"contract Controllable"},"id":9837,"name":"UserDefinedTypeName","src":"1981:12:30"}],"id":9838,"name":"InheritanceSpecifier","src":"1981:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":8981,"type":"contract Transferrable"},"id":9839,"name":"UserDefinedTypeName","src":"1995:13:30"}],"id":9840,"name":"InheritanceSpecifier","src":"1995:13:30"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":14156,"type":"library strings"},"id":9841,"name":"UserDefinedTypeName","src":"2021:7:30"}],"id":9842,"name":"UsingForDirective","src":"2015:20:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1250,"type":"library SafeMath"},"id":9843,"name":"UserDefinedTypeName","src":"2046:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":9844,"name":"ElementaryTypeName","src":"2059:7:30"}],"id":9845,"name":"UsingForDirective","src":"2040:27:30"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":14267,"type":"library BytesUtils"},"id":9846,"name":"UserDefinedTypeName","src":"2078:10:30"},{"attributes":{"name":"bytes","type":"bytes"},"id":9847,"name":"ElementaryTypeName","src":"2093:5:30"}],"id":9848,"name":"UsingForDirective","src":"2072:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9849,"name":"ElementaryTypeName","src":"2128:7:30"}],"id":9850,"name":"VariableDeclaration","src":"2128:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9851,"name":"ElementaryTypeName","src":"2145:7:30"}],"id":9852,"name":"VariableDeclaration","src":"2145:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":9856,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9853,"name":"ElementaryTypeName","src":"2161:7:30"}],"id":9854,"name":"VariableDeclaration","src":"2161:13:30"}],"id":9855,"name":"ParameterList","src":"2127:48:30"}],"id":9856,"name":"EventDefinition","src":"2105:71:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9864,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9857,"name":"ElementaryTypeName","src":"2209:7:30"}],"id":9858,"name":"VariableDeclaration","src":"2209:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9864,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9859,"name":"ElementaryTypeName","src":"2226:7:30"}],"id":9860,"name":"VariableDeclaration","src":"2226:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":9864,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9861,"name":"ElementaryTypeName","src":"2242:4:30"}],"id":9862,"name":"VariableDeclaration","src":"2242:14:30"}],"id":9863,"name":"ParameterList","src":"2208:49:30"}],"id":9864,"name":"EventDefinition","src":"2182:76:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9865,"name":"ElementaryTypeName","src":"2292:7:30"}],"id":9866,"name":"VariableDeclaration","src":"2292:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9867,"name":"ElementaryTypeName","src":"2309:7:30"}],"id":9868,"name":"VariableDeclaration","src":"2309:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":9872,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9869,"name":"ElementaryTypeName","src":"2325:4:30"}],"id":9870,"name":"VariableDeclaration","src":"2325:16:30"}],"id":9871,"name":"ParameterList","src":"2291:51:30"}],"id":9872,"name":"EventDefinition","src":"2263:80:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9873,"name":"ElementaryTypeName","src":"2366:7:30"}],"id":9874,"name":"VariableDeclaration","src":"2366:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9875,"name":"ElementaryTypeName","src":"2383:7:30"}],"id":9876,"name":"VariableDeclaration","src":"2383:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":9886,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9877,"name":"ElementaryTypeName","src":"2399:6:30"}],"id":9878,"name":"VariableDeclaration","src":"2399:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":9886,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9879,"name":"ElementaryTypeName","src":"2415:7:30"}],"id":9880,"name":"VariableDeclaration","src":"2415:18:30"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":9886,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9881,"name":"ElementaryTypeName","src":"2435:4:30"}],"id":9882,"name":"VariableDeclaration","src":"2435:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":9886,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9883,"name":"ElementaryTypeName","src":"2451:4:30"}],"id":9884,"name":"VariableDeclaration","src":"2451:16:30"}],"id":9885,"name":"ParameterList","src":"2365:103:30"}],"id":9886,"name":"EventDefinition","src":"2349:120:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":9892,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9887,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":9888,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9892,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9889,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":9890,"name":"VariableDeclaration","src":"2510:14:30"}],"id":9891,"name":"ParameterList","src":"2492:33:30"}],"id":9892,"name":"EventDefinition","src":"2474:52:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":9896,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9893,"name":"ElementaryTypeName","src":"2552:6:30"}],"id":9894,"name":"VariableDeclaration","src":"2552:16:30"}],"id":9895,"name":"ParameterList","src":"2551:18:30"}],"id":9896,"name":"EventDefinition","src":"2532:38:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":9900,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9897,"name":"ElementaryTypeName","src":"2597:6:30"}],"id":9898,"name":"VariableDeclaration","src":"2597:16:30"}],"id":9899,"name":"ParameterList","src":"2596:18:30"}],"id":9900,"name":"EventDefinition","src":"2575:40:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9906,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9901,"name":"ElementaryTypeName","src":"2647:7:30"}],"id":9902,"name":"VariableDeclaration","src":"2647:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":9906,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9903,"name":"ElementaryTypeName","src":"2663:6:30"}],"id":9904,"name":"VariableDeclaration","src":"2663:16:30"}],"id":9905,"name":"ParameterList","src":"2646:34:30"}],"id":9906,"name":"EventDefinition","src":"2620:61:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":9912,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9907,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":9908,"name":"VariableDeclaration","src":"2715:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":9912,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9909,"name":"ElementaryTypeName","src":"2731:6:30"}],"id":9910,"name":"VariableDeclaration","src":"2731:16:30"}],"id":9911,"name":"ParameterList","src":"2714:34:30"}],"id":9912,"name":"EventDefinition","src":"2686:63:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":9920,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9913,"name":"ElementaryTypeName","src":"2769:7:30"}],"id":9914,"name":"VariableDeclaration","src":"2769:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":9920,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9915,"name":"ElementaryTypeName","src":"2782:7:30"}],"id":9916,"name":"VariableDeclaration","src":"2782:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":9920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9917,"name":"ElementaryTypeName","src":"2798:7:30"}],"id":9918,"name":"VariableDeclaration","src":"2798:15:30"}],"id":9919,"name":"ParameterList","src":"2768:46:30"}],"id":9920,"name":"EventDefinition","src":"2755:60:30"},{"attributes":{"constant":true,"name":"_APPROVE","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9921,"name":"ElementaryTypeName","src":"2924:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":9922,"name":"Literal","src":"2959:10:30"}],"id":9923,"name":"VariableDeclaration","src":"2924:45:30"},{"attributes":{"constant":true,"name":"_BURN","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9924,"name":"ElementaryTypeName","src":"3028:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":9925,"name":"Literal","src":"3060:10:30"}],"id":9926,"name":"VariableDeclaration","src":"3028:42:30"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9927,"name":"ElementaryTypeName","src":"3118:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":9928,"name":"Literal","src":"3154:10:30"}],"id":9929,"name":"VariableDeclaration","src":"3118:46:30"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9930,"name":"ElementaryTypeName","src":"3224:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":9931,"name":"Literal","src":"3265:10:30"}],"id":9932,"name":"VariableDeclaration","src":"3224:51:30"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":10734,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":9947,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9933,"name":"ElementaryTypeName","src":"3371:6:30"}],"id":9934,"name":"VariableDeclaration","src":"3371:13:30"},{"attributes":{"constant":false,"name":"magnitude","scope":9947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9935,"name":"ElementaryTypeName","src":"3410:7:30"}],"id":9936,"name":"VariableDeclaration","src":"3410:17:30"},{"attributes":{"constant":false,"name":"rate","scope":9947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9937,"name":"ElementaryTypeName","src":"3452:7:30"}],"id":9938,"name":"VariableDeclaration","src":"3452:12:30"},{"attributes":{"constant":false,"name":"available","scope":9947,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9939,"name":"ElementaryTypeName","src":"3504:4:30"}],"id":9940,"name":"VariableDeclaration","src":"3504:14:30"},{"attributes":{"constant":false,"name":"loadable","scope":9947,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9941,"name":"ElementaryTypeName","src":"3570:4:30"}],"id":9942,"name":"VariableDeclaration","src":"3570:13:30"},{"attributes":{"constant":false,"name":"redeemable","scope":9947,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9943,"name":"ElementaryTypeName","src":"3640:4:30"}],"id":9944,"name":"VariableDeclaration","src":"3640:15:30"},{"attributes":{"constant":false,"name":"lastUpdate","scope":9947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9945,"name":"ElementaryTypeName","src":"3724:7:30"}],"id":9946,"name":"VariableDeclaration","src":"3724:18:30"}],"id":9947,"name":"StructDefinition","src":"3348:433:30"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":10734,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":9948,"name":"ElementaryTypeName","src":"3795:7:30"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":9947,"type":"struct TokenWhitelist.Token"},"id":9949,"name":"UserDefinedTypeName","src":"3806:5:30"}],"id":9950,"name":"Mapping","src":"3787:25:30"}],"id":9951,"name":"VariableDeclaration","src":"3787:47:30"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":10734,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9952,"name":"ElementaryTypeName","src":"4004:6:30"},{"attributes":{"name":"bool","type":"bool"},"id":9953,"name":"ElementaryTypeName","src":"4014:4:30"}],"id":9954,"name":"Mapping","src":"3996:23:30"}],"id":9955,"name":"VariableDeclaration","src":"3996:50:30"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":10734,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9956,"name":"ElementaryTypeName","src":"4053:7:30"}],"id":9957,"name":"ArrayTypeName","src":"4053:9:30"}],"id":9958,"name":"VariableDeclaration","src":"4053:36:30"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":10734,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9959,"name":"ElementaryTypeName","src":"4182:7:30"}],"id":9960,"name":"VariableDeclaration","src":"4182:34:30"},{"attributes":{"constant":false,"name":"_stablecoin","scope":10734,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9961,"name":"ElementaryTypeName","src":"4266:7:30"}],"id":9962,"name":"VariableDeclaration","src":"4266:27:30"},{"attributes":{"constant":false,"name":"_oracleNode","scope":10734,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9963,"name":"ElementaryTypeName","src":"4372:7:30"}],"id":9964,"name":"VariableDeclaration","src":"4372:27:30"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":10014,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9965,"name":"ElementaryTypeName","src":"4770:7:30"}],"id":9966,"name":"VariableDeclaration","src":"4770:13:30"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":10014,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9967,"name":"ElementaryTypeName","src":"4785:7:30"}],"id":9968,"name":"VariableDeclaration","src":"4785:20:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":10014,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9969,"name":"ElementaryTypeName","src":"4807:7:30"}],"id":9970,"name":"VariableDeclaration","src":"4807:24:30"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":10014,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9971,"name":"ElementaryTypeName","src":"4833:7:30"}],"id":9972,"name":"VariableDeclaration","src":"4833:27:30"}],"id":9973,"name":"ParameterList","src":"4769:92:30"},{"attributes":{"parameters":[null]},"children":[],"id":9980,"name":"ParameterList","src":"4949:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":9974,"name":"Identifier","src":"4885:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"address","value":"_ens_"},"id":9975,"name":"Identifier","src":"4899:5:30"}],"id":9976,"name":"ModifierInvocation","src":"4885:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"type(contract Controllable)","value":"Controllable"},"id":9977,"name":"Identifier","src":"4914:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9970,"type":"bytes32","value":"_controllerNode_"},"id":9978,"name":"Identifier","src":"4927:16:30"}],"id":9979,"name":"ModifierInvocation","src":"4914:30:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"bytes32","value":"_oracleNode"},"id":9981,"name":"Identifier","src":"4959:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9968,"type":"bytes32","value":"_oracleNode_"},"id":9982,"name":"Identifier","src":"4973:12:30"}],"id":9983,"name":"Assignment","src":"4959:26:30"}],"id":9984,"name":"ExpressionStatement","src":"4959:26:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9962,"type":"address","value":"_stablecoin"},"id":9985,"name":"Identifier","src":"4995:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9972,"type":"address","value":"_stablecoinAddress_"},"id":9986,"name":"Identifier","src":"5009:19:30"}],"id":9987,"name":"Assignment","src":"4995:33:30"}],"id":9988,"name":"ExpressionStatement","src":"4995:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":9989,"name":"Identifier","src":"5083:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9923,"type":"bytes4","value":"_APPROVE"},"id":9990,"name":"Identifier","src":"5102:8:30"}],"id":9991,"name":"IndexAccess","src":"5083:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9992,"name":"Literal","src":"5114:4:30"}],"id":9993,"name":"Assignment","src":"5083:35:30"}],"id":9994,"name":"ExpressionStatement","src":"5083:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":9995,"name":"Identifier","src":"5128:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9926,"type":"bytes4","value":"_BURN"},"id":9996,"name":"Identifier","src":"5147:5:30"}],"id":9997,"name":"IndexAccess","src":"5128:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9998,"name":"Literal","src":"5156:4:30"}],"id":9999,"name":"Assignment","src":"5128:32:30"}],"id":10000,"name":"ExpressionStatement","src":"5128:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":10001,"name":"Identifier","src":"5170:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9929,"type":"bytes4","value":"_TRANSFER"},"id":10002,"name":"Identifier","src":"5189:9:30"}],"id":10003,"name":"IndexAccess","src":"5170:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":10004,"name":"Literal","src":"5202:4:30"}],"id":10005,"name":"Assignment","src":"5170:36:30"}],"id":10006,"name":"ExpressionStatement","src":"5170:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":10007,"name":"Identifier","src":"5216:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9932,"type":"bytes4","value":"_TRANSFER_FROM"},"id":10008,"name":"Identifier","src":"5235:14:30"}],"id":10009,"name":"IndexAccess","src":"5216:34:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":10010,"name":"Literal","src":"5253:4:30"}],"id":10011,"name":"Assignment","src":"5216:41:30"}],"id":10012,"name":"ExpressionStatement","src":"5216:41:30"}],"id":10013,"name":"Block","src":"4949:315:30"}],"id":10014,"name":"FunctionDefinition","src":"4758:506:30"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10015,"name":"ParameterList","src":"5296:2:30"},{"children":[{"attributes":{"assignments":[10017]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":10036,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10016,"name":"ElementaryTypeName","src":"5309:7:30"}],"id":10017,"name":"VariableDeclaration","src":"5309:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8162,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":10018,"name":"Identifier","src":"5333:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"bytes32","value":"_oracleNode"},"id":10019,"name":"Identifier","src":"5345:11:30"}],"id":10020,"name":"FunctionCall","src":"5333:24:30"}],"id":10021,"name":"VariableDeclarationStatement","src":"5309:48:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10022,"name":"Identifier","src":"5367:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":7948,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":10023,"name":"Identifier","src":"5375:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10024,"name":"Identifier","src":"5384:3:30"}],"id":10025,"name":"MemberAccess","src":"5384:10:30"}],"id":10026,"name":"FunctionCall","src":"5375:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10027,"name":"Identifier","src":"5399:3:30"}],"id":10028,"name":"MemberAccess","src":"5399:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10017,"type":"address","value":"oracleAddress"},"id":10029,"name":"Identifier","src":"5413:13:30"}],"id":10030,"name":"BinaryOperation","src":"5399:27:30"}],"id":10031,"name":"BinaryOperation","src":"5375:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":10032,"name":"Literal","src":"5428:24:30"}],"id":10033,"name":"FunctionCall","src":"5367:86:30"}],"id":10034,"name":"ExpressionStatement","src":"5367:86:30"},{"id":10035,"name":"PlaceholderStatement","src":"5463:1:30"}],"id":10036,"name":"Block","src":"5299:172:30"}],"id":10037,"name":"ModifierDefinition","src":"5270:201:30"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10038,"name":"ElementaryTypeName","src":"6068:7:30"}],"id":10039,"name":"ArrayTypeName","src":"6068:9:30"}],"id":10040,"name":"VariableDeclaration","src":"6068:26:30"},{"attributes":{"constant":false,"name":"_symbols","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10041,"name":"ElementaryTypeName","src":"6104:7:30"}],"id":10042,"name":"ArrayTypeName","src":"6104:9:30"}],"id":10043,"name":"VariableDeclaration","src":"6104:27:30"},{"attributes":{"constant":false,"name":"_magnitude","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10044,"name":"ElementaryTypeName","src":"6141:7:30"}],"id":10045,"name":"ArrayTypeName","src":"6141:9:30"}],"id":10046,"name":"VariableDeclaration","src":"6141:29:30"},{"attributes":{"constant":false,"name":"_loadable","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10047,"name":"ElementaryTypeName","src":"6180:4:30"}],"id":10048,"name":"ArrayTypeName","src":"6180:6:30"}],"id":10049,"name":"VariableDeclaration","src":"6180:25:30"},{"attributes":{"constant":false,"name":"_redeemable","scope":10181,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10050,"name":"ElementaryTypeName","src":"6215:4:30"}],"id":10051,"name":"ArrayTypeName","src":"6215:6:30"}],"id":10052,"name":"VariableDeclaration","src":"6215:27:30"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":10181,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10053,"name":"ElementaryTypeName","src":"6252:7:30"}],"id":10054,"name":"VariableDeclaration","src":"6252:19:30"}],"id":10055,"name":"ParameterList","src":"6058:219:30"},{"attributes":{"parameters":[null]},"children":[],"id":10058,"name":"ParameterList","src":"6297:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10056,"name":"Identifier","src":"6287:9:30"}],"id":10057,"name":"ModifierInvocation","src":"6287:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10059,"name":"Identifier","src":"6368:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10060,"name":"Identifier","src":"6389:7:30"}],"id":10061,"name":"MemberAccess","src":"6389:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10043,"type":"bytes32[] calldata","value":"_symbols"},"id":10062,"name":"Identifier","src":"6407:8:30"}],"id":10063,"name":"MemberAccess","src":"6407:15:30"}],"id":10064,"name":"BinaryOperation","src":"6389:33:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10065,"name":"Identifier","src":"6442:7:30"}],"id":10066,"name":"MemberAccess","src":"6442:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10046,"type":"uint256[] calldata","value":"_magnitude"},"id":10067,"name":"Identifier","src":"6460:10:30"}],"id":10068,"name":"MemberAccess","src":"6460:17:30"}],"id":10069,"name":"BinaryOperation","src":"6442:35:30"}],"id":10070,"name":"BinaryOperation","src":"6389:88:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10071,"name":"Identifier","src":"6497:7:30"}],"id":10072,"name":"MemberAccess","src":"6497:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10049,"type":"bool[] calldata","value":"_loadable"},"id":10073,"name":"Identifier","src":"6515:9:30"}],"id":10074,"name":"MemberAccess","src":"6515:16:30"}],"id":10075,"name":"BinaryOperation","src":"6497:34:30"}],"id":10076,"name":"BinaryOperation","src":"6389:142:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10077,"name":"Identifier","src":"6551:7:30"}],"id":10078,"name":"MemberAccess","src":"6551:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10049,"type":"bool[] calldata","value":"_loadable"},"id":10079,"name":"Identifier","src":"6569:9:30"}],"id":10080,"name":"MemberAccess","src":"6569:16:30"}],"id":10081,"name":"BinaryOperation","src":"6551:34:30"}],"id":10082,"name":"BinaryOperation","src":"6389:196:30"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":10083,"name":"Literal","src":"6599:32:30"}],"id":10084,"name":"FunctionCall","src":"6368:273:30"}],"id":10085,"name":"ExpressionStatement","src":"6368:273:30"},{"children":[{"attributes":{"assignments":[10087]},"children":[{"attributes":{"constant":false,"name":"i","scope":10179,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10086,"name":"ElementaryTypeName","src":"6715:7:30"}],"id":10087,"name":"VariableDeclaration","src":"6715:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10088,"name":"Literal","src":"6727:1:30"}],"id":10089,"name":"VariableDeclarationStatement","src":"6715:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10090,"name":"Identifier","src":"6730:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10091,"name":"Identifier","src":"6734:7:30"}],"id":10092,"name":"MemberAccess","src":"6734:14:30"}],"id":10093,"name":"BinaryOperation","src":"6730:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10094,"name":"Identifier","src":"6750:1:30"}],"id":10095,"name":"UnaryOperation","src":"6750:3:30"}],"id":10096,"name":"ExpressionStatement","src":"6750:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10097,"name":"Identifier","src":"6832:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10098,"name":"Identifier","src":"6841:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10099,"name":"Identifier","src":"6855:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10100,"name":"Identifier","src":"6863:1:30"}],"id":10101,"name":"IndexAccess","src":"6855:10:30"}],"id":10102,"name":"IndexAccess","src":"6841:25:30"}],"id":10103,"name":"MemberAccess","src":"6841:35:30"}],"id":10104,"name":"UnaryOperation","src":"6840:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":10105,"name":"Literal","src":"6878:25:30"}],"id":10106,"name":"FunctionCall","src":"6832:72:30"}],"id":10107,"name":"ExpressionStatement","src":"6832:72:30"},{"attributes":{"assignments":[10109]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":10178,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":10108,"name":"ElementaryTypeName","src":"6964:6:30"}],"id":10109,"name":"VariableDeclaration","src":"6964:20:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":12705,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":12660,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10043,"type":"bytes32[] calldata","value":"_symbols"},"id":10110,"name":"Identifier","src":"6987:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10111,"name":"Identifier","src":"6996:1:30"}],"id":10112,"name":"IndexAccess","src":"6987:11:30"}],"id":10113,"name":"MemberAccess","src":"6987:22:30"}],"id":10114,"name":"FunctionCall","src":"6987:24:30"}],"id":10115,"name":"MemberAccess","src":"6987:33:30"}],"id":10116,"name":"FunctionCall","src":"6987:35:30"}],"id":10117,"name":"VariableDeclarationStatement","src":"6964:58:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10118,"name":"Identifier","src":"7084:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10119,"name":"Identifier","src":"7098:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10120,"name":"Identifier","src":"7106:1:30"}],"id":10121,"name":"IndexAccess","src":"7098:10:30"}],"id":10122,"name":"IndexAccess","src":"7084:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9947,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":10123,"name":"Identifier","src":"7112:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"string memory","value":"symbol"},"id":10124,"name":"Identifier","src":"7144:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10046,"type":"uint256[] calldata","value":"_magnitude"},"id":10125,"name":"Identifier","src":"7179:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10126,"name":"Identifier","src":"7190:1:30"}],"id":10127,"name":"IndexAccess","src":"7179:13:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10128,"name":"Literal","src":"7216:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":10129,"name":"Literal","src":"7246:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10049,"type":"bool[] calldata","value":"_loadable"},"id":10130,"name":"Identifier","src":"7278:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10131,"name":"Identifier","src":"7288:1:30"}],"id":10132,"name":"IndexAccess","src":"7278:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10052,"type":"bool[] calldata","value":"_redeemable"},"id":10133,"name":"Identifier","src":"7320:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10134,"name":"Identifier","src":"7332:1:30"}],"id":10135,"name":"IndexAccess","src":"7320:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10054,"type":"uint256","value":"_lastUpdate"},"id":10136,"name":"Identifier","src":"7364:11:30"}],"id":10137,"name":"FunctionCall","src":"7112:278:30"}],"id":10138,"name":"Assignment","src":"7084:306:30"}],"id":10139,"name":"ExpressionStatement","src":"7084:306:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10140,"name":"Identifier","src":"7462:18:30"}],"id":10142,"name":"MemberAccess","src":"7462:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10143,"name":"Identifier","src":"7486:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10144,"name":"Identifier","src":"7494:1:30"}],"id":10145,"name":"IndexAccess","src":"7486:10:30"}],"id":10146,"name":"FunctionCall","src":"7462:35:30"}],"id":10147,"name":"ExpressionStatement","src":"7462:35:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10052,"type":"bool[] calldata","value":"_redeemable"},"id":10148,"name":"Identifier","src":"7587:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10149,"name":"Identifier","src":"7599:1:30"}],"id":10150,"name":"IndexAccess","src":"7587:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10151,"name":"Identifier","src":"7621:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1144,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10152,"name":"Identifier","src":"7642:18:30"}],"id":10153,"name":"MemberAccess","src":"7642:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10154,"name":"Literal","src":"7665:1:30"}],"id":10155,"name":"FunctionCall","src":"7642:25:30"}],"id":10156,"name":"Assignment","src":"7621:46:30"}],"id":10157,"name":"ExpressionStatement","src":"7621:46:30"}],"id":10158,"name":"Block","src":"7603:79:30"}],"id":10159,"name":"IfStatement","src":"7583:99:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":9886,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":10160,"name":"Identifier","src":"7742:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10161,"name":"Identifier","src":"7753:3:30"}],"id":10162,"name":"MemberAccess","src":"7753:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"address[] calldata","value":"_tokens"},"id":10163,"name":"Identifier","src":"7765:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10164,"name":"Identifier","src":"7773:1:30"}],"id":10165,"name":"IndexAccess","src":"7765:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"string memory","value":"symbol"},"id":10166,"name":"Identifier","src":"7777:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10046,"type":"uint256[] calldata","value":"_magnitude"},"id":10167,"name":"Identifier","src":"7785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10168,"name":"Identifier","src":"7796:1:30"}],"id":10169,"name":"IndexAccess","src":"7785:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10049,"type":"bool[] calldata","value":"_loadable"},"id":10170,"name":"Identifier","src":"7800:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10171,"name":"Identifier","src":"7810:1:30"}],"id":10172,"name":"IndexAccess","src":"7800:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10052,"type":"bool[] calldata","value":"_redeemable"},"id":10173,"name":"Identifier","src":"7814:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10087,"type":"uint256","value":"i"},"id":10174,"name":"Identifier","src":"7826:1:30"}],"id":10175,"name":"IndexAccess","src":"7814:14:30"}],"id":10176,"name":"FunctionCall","src":"7742:87:30"}],"id":10177,"name":"EmitStatement","src":"7737:92:30"}],"id":10178,"name":"Block","src":"6755:1085:30"}],"id":10179,"name":"ForStatement","src":"6710:1130:30"}],"id":10180,"name":"Block","src":"6297:1549:30"}],"id":10181,"name":"FunctionDefinition","src":"6040:1806:30"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":10282,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10182,"name":"ElementaryTypeName","src":"7995:7:30"}],"id":10183,"name":"ArrayTypeName","src":"7995:9:30"}],"id":10184,"name":"VariableDeclaration","src":"7995:26:30"}],"id":10185,"name":"ParameterList","src":"7994:28:30"},{"attributes":{"parameters":[null]},"children":[],"id":10188,"name":"ParameterList","src":"8042:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10186,"name":"Identifier","src":"8032:9:30"}],"id":10187,"name":"ModifierInvocation","src":"8032:9:30"},{"children":[{"children":[{"attributes":{"assignments":[10190]},"children":[{"attributes":{"constant":false,"name":"i","scope":10280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10189,"name":"ElementaryTypeName","src":"8160:7:30"}],"id":10190,"name":"VariableDeclaration","src":"8160:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10191,"name":"Literal","src":"8172:1:30"}],"id":10192,"name":"VariableDeclarationStatement","src":"8160:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10190,"type":"uint256","value":"i"},"id":10193,"name":"Identifier","src":"8175:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10184,"type":"address[] calldata","value":"_tokens"},"id":10194,"name":"Identifier","src":"8179:7:30"}],"id":10195,"name":"MemberAccess","src":"8179:14:30"}],"id":10196,"name":"BinaryOperation","src":"8175:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10190,"type":"uint256","value":"i"},"id":10197,"name":"Identifier","src":"8195:1:30"}],"id":10198,"name":"UnaryOperation","src":"8195:3:30"}],"id":10199,"name":"ExpressionStatement","src":"8195:3:30"},{"children":[{"attributes":{"assignments":[10201]},"children":[{"attributes":{"constant":false,"name":"token","scope":10279,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10200,"name":"ElementaryTypeName","src":"8254:7:30"}],"id":10201,"name":"VariableDeclaration","src":"8254:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10184,"type":"address[] calldata","value":"_tokens"},"id":10202,"name":"Identifier","src":"8270:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10190,"type":"uint256","value":"i"},"id":10203,"name":"Identifier","src":"8278:1:30"}],"id":10204,"name":"IndexAccess","src":"8270:10:30"}],"id":10205,"name":"VariableDeclarationStatement","src":"8254:26:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10206,"name":"Identifier","src":"8363:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10207,"name":"Identifier","src":"8371:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10208,"name":"Identifier","src":"8385:5:30"}],"id":10209,"name":"IndexAccess","src":"8371:20:30"}],"id":10210,"name":"MemberAccess","src":"8371:30:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":10211,"name":"Literal","src":"8403:24:30"}],"id":10212,"name":"FunctionCall","src":"8363:65:30"}],"id":10213,"name":"ExpressionStatement","src":"8363:65:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10214,"name":"Identifier","src":"8518:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10215,"name":"Identifier","src":"8532:5:30"}],"id":10216,"name":"IndexAccess","src":"8518:20:30"}],"id":10217,"name":"MemberAccess","src":"8518:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10218,"name":"Identifier","src":"8569:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1169,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10219,"name":"Identifier","src":"8590:18:30"}],"id":10220,"name":"MemberAccess","src":"8590:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10221,"name":"Literal","src":"8613:1:30"}],"id":10222,"name":"FunctionCall","src":"8590:25:30"}],"id":10223,"name":"Assignment","src":"8569:46:30"}],"id":10224,"name":"ExpressionStatement","src":"8569:46:30"}],"id":10225,"name":"Block","src":"8551:79:30"}],"id":10226,"name":"IfStatement","src":"8514:116:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10227,"name":"Identifier","src":"8690:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10228,"name":"Identifier","src":"8704:5:30"}],"id":10229,"name":"IndexAccess","src":"8690:20:30"}],"id":10230,"name":"UnaryOperation","src":"8683:27:30"}],"id":10231,"name":"ExpressionStatement","src":"8683:27:30"},{"children":[{"attributes":{"assignments":[10233]},"children":[{"attributes":{"constant":false,"name":"j","scope":10267,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10232,"name":"ElementaryTypeName","src":"8792:7:30"}],"id":10233,"name":"VariableDeclaration","src":"8792:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10234,"name":"Literal","src":"8804:1:30"}],"id":10235,"name":"VariableDeclarationStatement","src":"8792:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10233,"type":"uint256","value":"j"},"id":10236,"name":"Identifier","src":"8807:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1169,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10237,"name":"Identifier","src":"8811:18:30"}],"id":10238,"name":"MemberAccess","src":"8811:25:30"}],"id":10239,"name":"MemberAccess","src":"8811:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10240,"name":"Literal","src":"8841:1:30"}],"id":10241,"name":"FunctionCall","src":"8811:32:30"}],"id":10242,"name":"BinaryOperation","src":"8807:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10233,"type":"uint256","value":"j"},"id":10243,"name":"Identifier","src":"8845:1:30"}],"id":10244,"name":"UnaryOperation","src":"8845:3:30"}],"id":10245,"name":"ExpressionStatement","src":"8845:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10246,"name":"Identifier","src":"8872:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10233,"type":"uint256","value":"j"},"id":10247,"name":"Identifier","src":"8891:1:30"}],"id":10248,"name":"IndexAccess","src":"8872:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10249,"name":"Identifier","src":"8897:5:30"}],"id":10250,"name":"BinaryOperation","src":"8872:30:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10251,"name":"Identifier","src":"8926:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10233,"type":"uint256","value":"j"},"id":10252,"name":"Identifier","src":"8945:1:30"}],"id":10253,"name":"IndexAccess","src":"8926:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10254,"name":"Identifier","src":"8950:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1169,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10255,"name":"Identifier","src":"8969:18:30"}],"id":10256,"name":"MemberAccess","src":"8969:25:30"}],"id":10257,"name":"MemberAccess","src":"8969:29:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10258,"name":"Literal","src":"8999:1:30"}],"id":10259,"name":"FunctionCall","src":"8969:32:30"}],"id":10260,"name":"IndexAccess","src":"8950:52:30"}],"id":10261,"name":"Assignment","src":"8926:76:30"}],"id":10262,"name":"ExpressionStatement","src":"8926:76:30"},{"id":10263,"name":"Break","src":"9024:5:30"}],"id":10264,"name":"Block","src":"8904:144:30"}],"id":10265,"name":"IfStatement","src":"8868:180:30"}],"id":10266,"name":"Block","src":"8850:212:30"}],"id":10267,"name":"ForStatement","src":"8787:275:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10268,"name":"Identifier","src":"9075:18:30"}],"id":10270,"name":"MemberAccess","src":"9075:25:30"}],"id":10271,"name":"UnaryOperation","src":"9075:27:30"}],"id":10272,"name":"ExpressionStatement","src":"9075:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"function (address,address)","value":"RemovedToken"},"id":10273,"name":"Identifier","src":"9162:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10274,"name":"Identifier","src":"9175:3:30"}],"id":10275,"name":"MemberAccess","src":"9175:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10201,"type":"address","value":"token"},"id":10276,"name":"Identifier","src":"9187:5:30"}],"id":10277,"name":"FunctionCall","src":"9162:31:30"}],"id":10278,"name":"EmitStatement","src":"9157:36:30"}],"id":10279,"name":"Block","src":"8200:1004:30"}],"id":10280,"name":"ForStatement","src":"8155:1049:30"}],"id":10281,"name":"Block","src":"8042:1168:30"}],"id":10282,"name":"FunctionDefinition","src":"7973:1237:30"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10395,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10283,"name":"ElementaryTypeName","src":"9404:7:30"}],"id":10284,"name":"VariableDeclaration","src":"9404:14:30"},{"attributes":{"constant":false,"name":"_data","scope":10395,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10285,"name":"ElementaryTypeName","src":"9420:5:30"}],"id":10286,"name":"VariableDeclaration","src":"9420:20:30"}],"id":10287,"name":"ParameterList","src":"9403:38:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10395,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10288,"name":"ElementaryTypeName","src":"9465:7:30"}],"id":10289,"name":"VariableDeclaration","src":"9465:7:30"},{"attributes":{"constant":false,"name":"","scope":10395,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10290,"name":"ElementaryTypeName","src":"9474:7:30"}],"id":10291,"name":"VariableDeclaration","src":"9474:7:30"}],"id":10292,"name":"ParameterList","src":"9464:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10293,"name":"Identifier","src":"9669:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10294,"name":"Identifier","src":"9677:5:30"}],"id":10295,"name":"MemberAccess","src":"9677:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10296,"name":"Literal","src":"9693:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10297,"name":"Literal","src":"9697:2:30"}],"id":10298,"name":"BinaryOperation","src":"9693:6:30"}],"id":10299,"name":"BinaryOperation","src":"9677:22:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":10300,"name":"Literal","src":"9701:34:30"}],"id":10301,"name":"FunctionCall","src":"9669:67:30"}],"id":10302,"name":"ExpressionStatement","src":"9669:67:30"},{"attributes":{"assignments":[10304]},"children":[{"attributes":{"constant":false,"name":"signature","scope":10394,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":10303,"name":"ElementaryTypeName","src":"9782:6:30"}],"id":10304,"name":"VariableDeclaration","src":"9782:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":14232,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10305,"name":"Identifier","src":"9801:5:30"}],"id":10306,"name":"MemberAccess","src":"9801:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10307,"name":"Literal","src":"9822:1:30"}],"id":10308,"name":"FunctionCall","src":"9801:23:30"}],"id":10309,"name":"VariableDeclarationStatement","src":"9782:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10310,"name":"Identifier","src":"9877:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":10696,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":10311,"name":"Identifier","src":"9885:22:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10284,"type":"address","value":"_token"},"id":10312,"name":"Identifier","src":"9908:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10304,"type":"bytes4","value":"signature"},"id":10313,"name":"Identifier","src":"9916:9:30"}],"id":10314,"name":"FunctionCall","src":"9885:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":10315,"name":"Literal","src":"9928:20:30"}],"id":10316,"name":"FunctionCall","src":"9877:72:30"}],"id":10317,"name":"ExpressionStatement","src":"9877:72:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10304,"type":"bytes4","value":"signature"},"id":10318,"name":"Identifier","src":"10048:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9926,"type":"bytes4","value":"_BURN"},"id":10319,"name":"Identifier","src":"10061:5:30"}],"id":10320,"name":"BinaryOperation","src":"10048:18:30"},{"children":[{"attributes":{"functionReturnParameters":10292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10284,"type":"address","value":"_token"},"id":10321,"name":"Identifier","src":"10133:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":14266,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10322,"name":"Identifier","src":"10141:5:30"}],"id":10323,"name":"MemberAccess","src":"10141:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10324,"name":"Literal","src":"10163:1:30"}],"id":10325,"name":"FunctionCall","src":"10141:24:30"}],"id":10326,"name":"TupleExpression","src":"10132:34:30"}],"id":10327,"name":"Return","src":"10125:41:30"}],"id":10328,"name":"Block","src":"10068:109:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10304,"type":"bytes4","value":"signature"},"id":10329,"name":"Identifier","src":"10187:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9932,"type":"bytes4","value":"_TRANSFER_FROM"},"id":10330,"name":"Identifier","src":"10200:14:30"}],"id":10331,"name":"BinaryOperation","src":"10187:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10332,"name":"Identifier","src":"10301:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10333,"name":"Identifier","src":"10309:5:30"}],"id":10334,"name":"MemberAccess","src":"10309:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10335,"name":"Literal","src":"10325:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10336,"name":"Literal","src":"10329:2:30"}],"id":10337,"name":"BinaryOperation","src":"10325:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10338,"name":"Literal","src":"10334:2:30"}],"id":10339,"name":"BinaryOperation","src":"10325:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10340,"name":"Literal","src":"10339:2:30"}],"id":10341,"name":"BinaryOperation","src":"10325:16:30"}],"id":10342,"name":"BinaryOperation","src":"10309:32:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":10343,"name":"Literal","src":"10343:34:30"}],"id":10344,"name":"FunctionCall","src":"10301:77:30"}],"id":10345,"name":"ExpressionStatement","src":"10301:77:30"},{"attributes":{"functionReturnParameters":10292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":14198,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10346,"name":"Identifier","src":"10400:5:30"}],"id":10347,"name":"MemberAccess","src":"10400:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10348,"name":"Literal","src":"10422:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10349,"name":"Literal","src":"10426:2:30"}],"id":10350,"name":"BinaryOperation","src":"10422:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":10351,"name":"Literal","src":"10431:2:30"}],"id":10352,"name":"BinaryOperation","src":"10422:11:30"}],"id":10353,"name":"FunctionCall","src":"10400:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":14266,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10354,"name":"Identifier","src":"10436:5:30"}],"id":10355,"name":"MemberAccess","src":"10436:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10356,"name":"Literal","src":"10458:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10357,"name":"Literal","src":"10462:2:30"}],"id":10358,"name":"BinaryOperation","src":"10458:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10359,"name":"Literal","src":"10467:2:30"}],"id":10360,"name":"BinaryOperation","src":"10458:11:30"}],"id":10361,"name":"FunctionCall","src":"10436:34:30"}],"id":10362,"name":"TupleExpression","src":"10399:72:30"}],"id":10363,"name":"Return","src":"10392:79:30"}],"id":10364,"name":"Block","src":"10216:266:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10365,"name":"Identifier","src":"10590:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10366,"name":"Identifier","src":"10598:5:30"}],"id":10367,"name":"MemberAccess","src":"10598:12:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10368,"name":"Literal","src":"10614:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10369,"name":"Literal","src":"10618:2:30"}],"id":10370,"name":"BinaryOperation","src":"10614:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10371,"name":"Literal","src":"10623:2:30"}],"id":10372,"name":"BinaryOperation","src":"10614:11:30"}],"id":10373,"name":"BinaryOperation","src":"10598:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":10374,"name":"Literal","src":"10627:39:30"}],"id":10375,"name":"FunctionCall","src":"10590:77:30"}],"id":10376,"name":"ExpressionStatement","src":"10590:77:30"},{"attributes":{"functionReturnParameters":10292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":14198,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10377,"name":"Identifier","src":"10689:5:30"}],"id":10378,"name":"MemberAccess","src":"10689:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10379,"name":"Literal","src":"10711:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":10380,"name":"Literal","src":"10715:2:30"}],"id":10381,"name":"BinaryOperation","src":"10711:6:30"}],"id":10382,"name":"FunctionCall","src":"10689:29:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":14266,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10286,"type":"bytes calldata","value":"_data"},"id":10383,"name":"Identifier","src":"10720:5:30"}],"id":10384,"name":"MemberAccess","src":"10720:21:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10385,"name":"Literal","src":"10742:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10386,"name":"Literal","src":"10746:2:30"}],"id":10387,"name":"BinaryOperation","src":"10742:6:30"}],"id":10388,"name":"FunctionCall","src":"10720:29:30"}],"id":10389,"name":"TupleExpression","src":"10688:62:30"}],"id":10390,"name":"Return","src":"10681:69:30"}],"id":10391,"name":"Block","src":"10488:273:30"}],"id":10392,"name":"IfStatement","src":"10183:578:30"}],"id":10393,"name":"IfStatement","src":"10044:717:30"}],"id":10394,"name":"Block","src":"9483:1284:30"}],"id":10395,"name":"FunctionDefinition","src":"9368:1399:30"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10427,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10396,"name":"ElementaryTypeName","src":"10866:7:30"}],"id":10397,"name":"VariableDeclaration","src":"10866:14:30"},{"attributes":{"constant":false,"name":"_loadable","scope":10427,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10398,"name":"ElementaryTypeName","src":"10882:4:30"}],"id":10399,"name":"VariableDeclaration","src":"10882:14:30"}],"id":10400,"name":"ParameterList","src":"10865:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":10403,"name":"ParameterList","src":"10917:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10401,"name":"Identifier","src":"10907:9:30"}],"id":10402,"name":"ModifierInvocation","src":"10907:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10404,"name":"Identifier","src":"10969:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10405,"name":"Identifier","src":"10977:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10397,"type":"address","value":"_token"},"id":10406,"name":"Identifier","src":"10991:6:30"}],"id":10407,"name":"IndexAccess","src":"10977:21:30"}],"id":10408,"name":"MemberAccess","src":"10977:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":10409,"name":"Literal","src":"11010:24:30"}],"id":10410,"name":"FunctionCall","src":"10969:66:30"}],"id":10411,"name":"ExpressionStatement","src":"10969:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":9942,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10412,"name":"Identifier","src":"11108:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10397,"type":"address","value":"_token"},"id":10413,"name":"Identifier","src":"11122:6:30"}],"id":10414,"name":"IndexAccess","src":"11108:21:30"}],"id":10415,"name":"MemberAccess","src":"11108:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10399,"type":"bool","value":"_loadable"},"id":10416,"name":"Identifier","src":"11141:9:30"}],"id":10417,"name":"Assignment","src":"11108:42:30"}],"id":10418,"name":"ExpressionStatement","src":"11108:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":10419,"name":"Identifier","src":"11166:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10420,"name":"Identifier","src":"11187:3:30"}],"id":10421,"name":"MemberAccess","src":"11187:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10397,"type":"address","value":"_token"},"id":10422,"name":"Identifier","src":"11199:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10399,"type":"bool","value":"_loadable"},"id":10423,"name":"Identifier","src":"11207:9:30"}],"id":10424,"name":"FunctionCall","src":"11166:51:30"}],"id":10425,"name":"EmitStatement","src":"11161:56:30"}],"id":10426,"name":"Block","src":"10917:307:30"}],"id":10427,"name":"FunctionDefinition","src":"10840:384:30"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10459,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10428,"name":"ElementaryTypeName","src":"11327:7:30"}],"id":10429,"name":"VariableDeclaration","src":"11327:14:30"},{"attributes":{"constant":false,"name":"_redeemable","scope":10459,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10430,"name":"ElementaryTypeName","src":"11343:4:30"}],"id":10431,"name":"VariableDeclaration","src":"11343:16:30"}],"id":10432,"name":"ParameterList","src":"11326:34:30"},{"attributes":{"parameters":[null]},"children":[],"id":10435,"name":"ParameterList","src":"11380:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10433,"name":"Identifier","src":"11370:9:30"}],"id":10434,"name":"ModifierInvocation","src":"11370:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10436,"name":"Identifier","src":"11432:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10437,"name":"Identifier","src":"11440:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10429,"type":"address","value":"_token"},"id":10438,"name":"Identifier","src":"11454:6:30"}],"id":10439,"name":"IndexAccess","src":"11440:21:30"}],"id":10440,"name":"MemberAccess","src":"11440:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":10441,"name":"Literal","src":"11473:24:30"}],"id":10442,"name":"FunctionCall","src":"11432:66:30"}],"id":10443,"name":"ExpressionStatement","src":"11432:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10444,"name":"Identifier","src":"11573:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10429,"type":"address","value":"_token"},"id":10445,"name":"Identifier","src":"11587:6:30"}],"id":10446,"name":"IndexAccess","src":"11573:21:30"}],"id":10447,"name":"MemberAccess","src":"11573:32:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10431,"type":"bool","value":"_redeemable"},"id":10448,"name":"Identifier","src":"11608:11:30"}],"id":10449,"name":"Assignment","src":"11573:46:30"}],"id":10450,"name":"ExpressionStatement","src":"11573:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":9872,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":10451,"name":"Identifier","src":"11635:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10452,"name":"Identifier","src":"11658:3:30"}],"id":10453,"name":"MemberAccess","src":"11658:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10429,"type":"address","value":"_token"},"id":10454,"name":"Identifier","src":"11670:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10431,"type":"bool","value":"_redeemable"},"id":10455,"name":"Identifier","src":"11678:11:30"}],"id":10456,"name":"FunctionCall","src":"11635:55:30"}],"id":10457,"name":"EmitStatement","src":"11630:60:30"}],"id":10458,"name":"Block","src":"11380:317:30"}],"id":10459,"name":"FunctionDefinition","src":"11299:398:30"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10500,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10460,"name":"ElementaryTypeName","src":"11999:7:30"}],"id":10461,"name":"VariableDeclaration","src":"11999:14:30"},{"attributes":{"constant":false,"name":"_rate","scope":10500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10462,"name":"ElementaryTypeName","src":"12015:7:30"}],"id":10463,"name":"VariableDeclaration","src":"12015:13:30"},{"attributes":{"constant":false,"name":"_updateDate","scope":10500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10464,"name":"ElementaryTypeName","src":"12030:7:30"}],"id":10465,"name":"VariableDeclaration","src":"12030:19:30"}],"id":10466,"name":"ParameterList","src":"11998:52:30"},{"attributes":{"parameters":[null]},"children":[],"id":10469,"name":"ParameterList","src":"12078:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10037,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":10467,"name":"Identifier","src":"12060:17:30"}],"id":10468,"name":"ModifierInvocation","src":"12060:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10470,"name":"Identifier","src":"12130:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10471,"name":"Identifier","src":"12138:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10461,"type":"address","value":"_token"},"id":10472,"name":"Identifier","src":"12152:6:30"}],"id":10473,"name":"IndexAccess","src":"12138:21:30"}],"id":10474,"name":"MemberAccess","src":"12138:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":10475,"name":"Literal","src":"12171:24:30"}],"id":10476,"name":"FunctionCall","src":"12130:66:30"}],"id":10477,"name":"ExpressionStatement","src":"12130:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":9938,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10478,"name":"Identifier","src":"12242:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10461,"type":"address","value":"_token"},"id":10479,"name":"Identifier","src":"12256:6:30"}],"id":10480,"name":"IndexAccess","src":"12242:21:30"}],"id":10481,"name":"MemberAccess","src":"12242:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10463,"type":"uint256","value":"_rate"},"id":10482,"name":"Identifier","src":"12271:5:30"}],"id":10483,"name":"Assignment","src":"12242:34:30"}],"id":10484,"name":"ExpressionStatement","src":"12242:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":9946,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10485,"name":"Identifier","src":"12339:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10461,"type":"address","value":"_token"},"id":10486,"name":"Identifier","src":"12353:6:30"}],"id":10487,"name":"IndexAccess","src":"12339:21:30"}],"id":10488,"name":"MemberAccess","src":"12339:32:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10465,"type":"uint256","value":"_updateDate"},"id":10489,"name":"Identifier","src":"12374:11:30"}],"id":10490,"name":"Assignment","src":"12339:46:30"}],"id":10491,"name":"ExpressionStatement","src":"12339:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9856,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":10492,"name":"Identifier","src":"12439:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":15709,"type":"msg","value":"msg"},"id":10493,"name":"Identifier","src":"12456:3:30"}],"id":10494,"name":"MemberAccess","src":"12456:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10461,"type":"address","value":"_token"},"id":10495,"name":"Identifier","src":"12468:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10463,"type":"uint256","value":"_rate"},"id":10496,"name":"Identifier","src":"12476:5:30"}],"id":10497,"name":"FunctionCall","src":"12439:43:30"}],"id":10498,"name":"EmitStatement","src":"12434:48:30"}],"id":10499,"name":"Block","src":"12078:411:30"}],"id":10500,"name":"FunctionDefinition","src":"11974:515:30"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":10734,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":10524,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":10501,"name":"ElementaryTypeName","src":"12593:15:30"}],"id":10502,"name":"VariableDeclaration","src":"12593:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":10524,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10503,"name":"ElementaryTypeName","src":"12614:7:30"}],"id":10504,"name":"VariableDeclaration","src":"12614:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":10524,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10505,"name":"ElementaryTypeName","src":"12630:7:30"}],"id":10506,"name":"VariableDeclaration","src":"12630:15:30"}],"id":10507,"name":"ParameterList","src":"12592:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":10510,"name":"ParameterList","src":"12666:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7906,"type":"modifier ()","value":"onlyAdmin"},"id":10508,"name":"Identifier","src":"12656:9:30"}],"id":10509,"name":"ModifierInvocation","src":"12656:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8980,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":10511,"name":"Identifier","src":"12676:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10502,"type":"address payable","value":"_to"},"id":10512,"name":"Identifier","src":"12690:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10504,"type":"address","value":"_asset"},"id":10513,"name":"Identifier","src":"12695:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10506,"type":"uint256","value":"_amount"},"id":10514,"name":"Identifier","src":"12703:7:30"}],"id":10515,"name":"FunctionCall","src":"12676:35:30"}],"id":10516,"name":"ExpressionStatement","src":"12676:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9920,"type":"function (address,address,uint256)","value":"Claimed"},"id":10517,"name":"Identifier","src":"12726:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10502,"type":"address payable","value":"_to"},"id":10518,"name":"Identifier","src":"12734:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10504,"type":"address","value":"_asset"},"id":10519,"name":"Identifier","src":"12739:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10506,"type":"uint256","value":"_amount"},"id":10520,"name":"Identifier","src":"12747:7:30"}],"id":10521,"name":"FunctionCall","src":"12726:29:30"}],"id":10522,"name":"EmitStatement","src":"12721:34:30"}],"id":10523,"name":"Block","src":"12666:96:30"}],"id":10524,"name":"FunctionDefinition","src":"12578:184:30"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":10566,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10525,"name":"ElementaryTypeName","src":"13336:7:30"}],"id":10526,"name":"VariableDeclaration","src":"13336:10:30"}],"id":10527,"name":"ParameterList","src":"13335:12:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":10528,"name":"ElementaryTypeName","src":"13371:6:30"}],"id":10529,"name":"VariableDeclaration","src":"13371:13:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10530,"name":"ElementaryTypeName","src":"13386:7:30"}],"id":10531,"name":"VariableDeclaration","src":"13386:7:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10532,"name":"ElementaryTypeName","src":"13395:7:30"}],"id":10533,"name":"VariableDeclaration","src":"13395:7:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10534,"name":"ElementaryTypeName","src":"13404:4:30"}],"id":10535,"name":"VariableDeclaration","src":"13404:4:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10536,"name":"ElementaryTypeName","src":"13410:4:30"}],"id":10537,"name":"VariableDeclaration","src":"13410:4:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10538,"name":"ElementaryTypeName","src":"13416:4:30"}],"id":10539,"name":"VariableDeclaration","src":"13416:4:30"},{"attributes":{"constant":false,"name":"","scope":10566,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10540,"name":"ElementaryTypeName","src":"13422:7:30"}],"id":10541,"name":"VariableDeclaration","src":"13422:7:30"}],"id":10542,"name":"ParameterList","src":"13370:60:30"},{"children":[{"attributes":{"assignments":[10544]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":10565,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":9947,"type":"struct TokenWhitelist.Token"},"id":10543,"name":"UserDefinedTypeName","src":"13441:5:30"}],"id":10544,"name":"VariableDeclaration","src":"13441:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10545,"name":"Identifier","src":"13467:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10526,"type":"address","value":"_a"},"id":10546,"name":"Identifier","src":"13481:2:30"}],"id":10547,"name":"IndexAccess","src":"13467:17:30"}],"id":10548,"name":"VariableDeclarationStatement","src":"13441:43:30"},{"attributes":{"functionReturnParameters":10542},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":9934,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10549,"name":"Identifier","src":"13502:9:30"}],"id":10550,"name":"MemberAccess","src":"13502:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":9936,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10551,"name":"Identifier","src":"13520:9:30"}],"id":10552,"name":"MemberAccess","src":"13520:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":9938,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10553,"name":"Identifier","src":"13541:9:30"}],"id":10554,"name":"MemberAccess","src":"13541:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10555,"name":"Identifier","src":"13557:9:30"}],"id":10556,"name":"MemberAccess","src":"13557:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":9942,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10557,"name":"Identifier","src":"13578:9:30"}],"id":10558,"name":"MemberAccess","src":"13578:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10559,"name":"Identifier","src":"13598:9:30"}],"id":10560,"name":"MemberAccess","src":"13598:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":9946,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10544,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":10561,"name":"Identifier","src":"13620:9:30"}],"id":10562,"name":"MemberAccess","src":"13620:20:30"}],"id":10563,"name":"TupleExpression","src":"13501:140:30"}],"id":10564,"name":"Return","src":"13494:147:30"}],"id":10565,"name":"Block","src":"13431:217:30"}],"id":10566,"name":"FunctionDefinition","src":"13314:334:30"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10567,"name":"ParameterList","src":"14176:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":10568,"name":"ElementaryTypeName","src":"14202:6:30"}],"id":10569,"name":"VariableDeclaration","src":"14202:13:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10570,"name":"ElementaryTypeName","src":"14217:7:30"}],"id":10571,"name":"VariableDeclaration","src":"14217:7:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10572,"name":"ElementaryTypeName","src":"14226:7:30"}],"id":10573,"name":"VariableDeclaration","src":"14226:7:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10574,"name":"ElementaryTypeName","src":"14235:4:30"}],"id":10575,"name":"VariableDeclaration","src":"14235:4:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10576,"name":"ElementaryTypeName","src":"14241:4:30"}],"id":10577,"name":"VariableDeclaration","src":"14241:4:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10578,"name":"ElementaryTypeName","src":"14247:4:30"}],"id":10579,"name":"VariableDeclaration","src":"14247:4:30"},{"attributes":{"constant":false,"name":"","scope":10606,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10580,"name":"ElementaryTypeName","src":"14253:7:30"}],"id":10581,"name":"VariableDeclaration","src":"14253:7:30"}],"id":10582,"name":"ParameterList","src":"14201:60:30"},{"children":[{"attributes":{"assignments":[10584]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":10605,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":9947,"type":"struct TokenWhitelist.Token"},"id":10583,"name":"UserDefinedTypeName","src":"14272:5:30"}],"id":10584,"name":"VariableDeclaration","src":"14272:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10585,"name":"Identifier","src":"14303:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9962,"type":"address","value":"_stablecoin"},"id":10586,"name":"Identifier","src":"14317:11:30"}],"id":10587,"name":"IndexAccess","src":"14303:26:30"}],"id":10588,"name":"VariableDeclarationStatement","src":"14272:57:30"},{"attributes":{"functionReturnParameters":10582},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":9934,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10589,"name":"Identifier","src":"14360:14:30"}],"id":10590,"name":"MemberAccess","src":"14360:21:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":9936,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10591,"name":"Identifier","src":"14395:14:30"}],"id":10592,"name":"MemberAccess","src":"14395:24:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":9938,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10593,"name":"Identifier","src":"14433:14:30"}],"id":10594,"name":"MemberAccess","src":"14433:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10595,"name":"Identifier","src":"14466:14:30"}],"id":10596,"name":"MemberAccess","src":"14466:24:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":9942,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10597,"name":"Identifier","src":"14504:14:30"}],"id":10598,"name":"MemberAccess","src":"14504:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10599,"name":"Identifier","src":"14541:14:30"}],"id":10600,"name":"MemberAccess","src":"14541:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":9946,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10584,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":10601,"name":"Identifier","src":"14580:14:30"}],"id":10602,"name":"MemberAccess","src":"14580:25:30"}],"id":10603,"name":"TupleExpression","src":"14346:269:30"}],"id":10604,"name":"Return","src":"14339:276:30"}],"id":10605,"name":"Block","src":"14262:360:30"}],"id":10606,"name":"FunctionDefinition","src":"14150:472:30"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10607,"name":"ParameterList","src":"14777:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10615,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10608,"name":"ElementaryTypeName","src":"14803:7:30"}],"id":10609,"name":"ArrayTypeName","src":"14803:9:30"}],"id":10610,"name":"VariableDeclaration","src":"14803:16:30"}],"id":10611,"name":"ParameterList","src":"14802:18:30"},{"children":[{"attributes":{"functionReturnParameters":10611},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10612,"name":"Identifier","src":"14838:18:30"}],"id":10613,"name":"Return","src":"14831:25:30"}],"id":10614,"name":"Block","src":"14821:42:30"}],"id":10615,"name":"FunctionDefinition","src":"14751:112:30"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10616,"name":"ParameterList","src":"15015:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10673,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10617,"name":"ElementaryTypeName","src":"15041:7:30"}],"id":10618,"name":"ArrayTypeName","src":"15041:9:30"}],"id":10619,"name":"VariableDeclaration","src":"15041:16:30"}],"id":10620,"name":"ParameterList","src":"15040:18:30"},{"children":[{"attributes":{"assignments":[10624]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":10672,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":10622,"name":"ElementaryTypeName","src":"15069:7:30"}],"id":10623,"name":"ArrayTypeName","src":"15069:9:30"}],"id":10624,"name":"VariableDeclaration","src":"15069:36:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10625,"name":"ElementaryTypeName","src":"15112:7:30"}],"id":10626,"name":"ArrayTypeName","src":"15112:9:30"}],"id":10627,"name":"NewExpression","src":"15108:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10628,"name":"Identifier","src":"15122:18:30"}],"id":10629,"name":"FunctionCall","src":"15108:33:30"}],"id":10630,"name":"VariableDeclarationStatement","src":"15069:72:30"},{"attributes":{"assignments":[10632]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":10672,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10631,"name":"ElementaryTypeName","src":"15151:7:30"}],"id":10632,"name":"VariableDeclaration","src":"15151:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10633,"name":"Literal","src":"15177:1:30"}],"id":10634,"name":"VariableDeclarationStatement","src":"15151:27:30"},{"children":[{"attributes":{"assignments":[10636]},"children":[{"attributes":{"constant":false,"name":"i","scope":10669,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10635,"name":"ElementaryTypeName","src":"15193:7:30"}],"id":10636,"name":"VariableDeclaration","src":"15193:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10637,"name":"Literal","src":"15205:1:30"}],"id":10638,"name":"VariableDeclarationStatement","src":"15193:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10636,"type":"uint256","value":"i"},"id":10639,"name":"Identifier","src":"15208:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10640,"name":"Identifier","src":"15212:18:30"}],"id":10641,"name":"MemberAccess","src":"15212:25:30"}],"id":10642,"name":"BinaryOperation","src":"15208:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10636,"type":"uint256","value":"i"},"id":10643,"name":"Identifier","src":"15239:1:30"}],"id":10644,"name":"UnaryOperation","src":"15239:3:30"}],"id":10645,"name":"ExpressionStatement","src":"15239:3:30"},{"children":[{"attributes":{"assignments":[10647]},"children":[{"attributes":{"constant":false,"name":"token","scope":10668,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10646,"name":"ElementaryTypeName","src":"15258:7:30"}],"id":10647,"name":"VariableDeclaration","src":"15258:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9958,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":10648,"name":"Identifier","src":"15274:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10636,"type":"uint256","value":"i"},"id":10649,"name":"Identifier","src":"15293:1:30"}],"id":10650,"name":"IndexAccess","src":"15274:21:30"}],"id":10651,"name":"VariableDeclarationStatement","src":"15258:37:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":9944,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10652,"name":"Identifier","src":"15313:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10647,"type":"address","value":"token"},"id":10653,"name":"Identifier","src":"15327:5:30"}],"id":10654,"name":"IndexAccess","src":"15313:20:30"}],"id":10655,"name":"MemberAccess","src":"15313:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10624,"type":"address[] memory","value":"redeemableAddresses"},"id":10656,"name":"Identifier","src":"15364:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10632,"type":"uint256","value":"redeemableIndex"},"id":10657,"name":"Identifier","src":"15384:15:30"}],"id":10658,"name":"IndexAccess","src":"15364:36:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10647,"type":"address","value":"token"},"id":10659,"name":"Identifier","src":"15403:5:30"}],"id":10660,"name":"Assignment","src":"15364:44:30"}],"id":10661,"name":"ExpressionStatement","src":"15364:44:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10632,"type":"uint256","value":"redeemableIndex"},"id":10662,"name":"Identifier","src":"15426:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10663,"name":"Literal","src":"15445:1:30"}],"id":10664,"name":"Assignment","src":"15426:20:30"}],"id":10665,"name":"ExpressionStatement","src":"15426:20:30"}],"id":10666,"name":"Block","src":"15346:115:30"}],"id":10667,"name":"IfStatement","src":"15309:152:30"}],"id":10668,"name":"Block","src":"15244:227:30"}],"id":10669,"name":"ForStatement","src":"15188:283:30"},{"attributes":{"functionReturnParameters":10620},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10624,"type":"address[] memory","value":"redeemableAddresses"},"id":10670,"name":"Identifier","src":"15487:19:30"}],"id":10671,"name":"Return","src":"15480:26:30"}],"id":10672,"name":"Block","src":"15059:454:30"}],"id":10673,"name":"FunctionDefinition","src":"14990:523:30"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":10696,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10674,"name":"ElementaryTypeName","src":"15727:7:30"}],"id":10675,"name":"VariableDeclaration","src":"15727:14:30"},{"attributes":{"constant":false,"name":"_methodId","scope":10696,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":10676,"name":"ElementaryTypeName","src":"15743:6:30"}],"id":10677,"name":"VariableDeclaration","src":"15743:16:30"}],"id":10678,"name":"ParameterList","src":"15726:34:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10696,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10679,"name":"ElementaryTypeName","src":"15782:4:30"}],"id":10680,"name":"VariableDeclaration","src":"15782:4:30"}],"id":10681,"name":"ParameterList","src":"15781:6:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[15712,15713],"referencedDeclaration":15713,"type":"function (bool,string memory) pure","value":"require"},"id":10682,"name":"Identifier","src":"15798:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":9940,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9951,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":10683,"name":"Identifier","src":"15806:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10675,"type":"address","value":"_token"},"id":10684,"name":"Identifier","src":"15820:6:30"}],"id":10685,"name":"IndexAccess","src":"15806:21:30"}],"id":10686,"name":"MemberAccess","src":"15806:31:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":10687,"name":"Literal","src":"15839:20:30"}],"id":10688,"name":"FunctionCall","src":"15798:62:30"}],"id":10689,"name":"ExpressionStatement","src":"15798:62:30"},{"attributes":{"functionReturnParameters":10681},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":10690,"name":"Identifier","src":"15878:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10677,"type":"bytes4","value":"_methodId"},"id":10691,"name":"Identifier","src":"15897:9:30"}],"id":10692,"name":"IndexAccess","src":"15878:29:30"}],"id":10693,"name":"TupleExpression","src":"15877:31:30"}],"id":10694,"name":"Return","src":"15870:38:30"}],"id":10695,"name":"Block","src":"15788:127:30"}],"id":10696,"name":"FunctionDefinition","src":"15695:220:30"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":10709,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":10697,"name":"ElementaryTypeName","src":"16104:6:30"}],"id":10698,"name":"VariableDeclaration","src":"16104:16:30"}],"id":10699,"name":"ParameterList","src":"16103:18:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10709,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10700,"name":"ElementaryTypeName","src":"16145:4:30"}],"id":10701,"name":"VariableDeclaration","src":"16145:4:30"}],"id":10702,"name":"ParameterList","src":"16144:6:30"},{"children":[{"attributes":{"functionReturnParameters":10702},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9955,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":10703,"name":"Identifier","src":"16169:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10698,"type":"bytes4","value":"_methodId"},"id":10704,"name":"Identifier","src":"16188:9:30"}],"id":10705,"name":"IndexAccess","src":"16169:29:30"}],"id":10706,"name":"TupleExpression","src":"16168:31:30"}],"id":10707,"name":"Return","src":"16161:38:30"}],"id":10708,"name":"Block","src":"16151:55:30"}],"id":10709,"name":"FunctionDefinition","src":"16070:136:30"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10710,"name":"ParameterList","src":"16342:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10717,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":10711,"name":"ElementaryTypeName","src":"16368:7:30"}],"id":10712,"name":"VariableDeclaration","src":"16368:7:30"}],"id":10713,"name":"ParameterList","src":"16367:9:30"},{"children":[{"attributes":{"functionReturnParameters":10713},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"uint256","value":"_redeemableCounter"},"id":10714,"name":"Identifier","src":"16394:18:30"}],"id":10715,"name":"Return","src":"16387:25:30"}],"id":10716,"name":"Block","src":"16377:42:30"}],"id":10717,"name":"FunctionDefinition","src":"16316:103:30"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10718,"name":"ParameterList","src":"16570:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10725,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":10719,"name":"ElementaryTypeName","src":"16596:7:30"}],"id":10720,"name":"VariableDeclaration","src":"16596:7:30"}],"id":10721,"name":"ParameterList","src":"16595:9:30"},{"children":[{"attributes":{"functionReturnParameters":10721},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9962,"type":"address","value":"_stablecoin"},"id":10722,"name":"Identifier","src":"16622:11:30"}],"id":10723,"name":"Return","src":"16615:18:30"}],"id":10724,"name":"Block","src":"16605:35:30"}],"id":10725,"name":"FunctionDefinition","src":"16551:89:30"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":10734,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":10726,"name":"ParameterList","src":"16774:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":10733,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10727,"name":"ElementaryTypeName","src":"16800:7:30"}],"id":10728,"name":"VariableDeclaration","src":"16800:7:30"}],"id":10729,"name":"ParameterList","src":"16799:9:30"},{"children":[{"attributes":{"functionReturnParameters":10729},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"bytes32","value":"_oracleNode"},"id":10730,"name":"Identifier","src":"16826:11:30"}],"id":10731,"name":"Return","src":"16819:18:30"}],"id":10732,"name":"Block","src":"16809:35:30"}],"id":10733,"name":"FunctionDefinition","src":"16755:89:30"}],"id":10734,"name":"ContractDefinition","src":"1939:14907:30"}],"id":10735,"name":"SourceUnit","src":"774:16073:30"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/tokenWhitelist/Controller.bin b/build/tokenWhitelist/Controller.bin index a69c0549..264e63ba 100644 --- a/build/tokenWhitelist/Controller.bin +++ b/build/tokenWhitelist/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/tokenWhitelist/TokenWhitelist.bin b/build/tokenWhitelist/TokenWhitelist.bin index 60f52176..5a283843 100644 --- a/build/tokenWhitelist/TokenWhitelist.bin +++ b/build/tokenWhitelist/TokenWhitelist.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032 \ No newline at end of file diff --git a/build/tokenWhitelist/combined.json b/build/tokenWhitelist/combined.json index 3f6e698d..c5df79d4 100644 --- a/build/tokenWhitelist/combined.json +++ b/build/tokenWhitelist/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:22;;-1:-1:-1;;;;;;1543:18:22;-1:-1:-1;;;;;1543:18:22;;;-1:-1:-1;;;;1571:32:22;;;;2239:84:0;;2314:5;1571:32:22;-1:-1:-1;;;1687:15:22;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:22;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:22;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:22:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:22:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:22;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:22:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:22;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:22:-;3222:4;3245:15;-1:-1:-1;;;3245:15:22;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:22:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:22;;;;3656:57;;;;;-1:-1:-1;;;3656:57:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:22;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:22;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:22:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:22;;;;2404:57;;;;;-1:-1:-1;;;2404:57:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:22;;2534:70;;;;-1:-1:-1;;;2534:70:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:22;-1:-1:-1;;;2689:31:22;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:22;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:22;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:22;:17;;-1:-1:-1;;;;;;3032:17:22;-1:-1:-1;;;;;3032:17:22;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:22:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:22;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:23:-;-1:-1:-1;;;;;1510:20:23;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:23;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:23;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:23;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:6:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:7:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:7;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:7;-1:-1:-1;;;;;2567:10:7;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:7;;;;;;","srcmap-runtime":"1897:2174:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:13;;;;;;;;;:::i;:::-;;573:184:17;;;;;;;;;:::i;1721:953:14:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:10;;;;;;;;;:::i;:::-;;;;;;;;;612:169:16;;;;;;;;;:::i;505:166:12:-;;;;;;;;;:::i;980:228:11:-;;;;;;;;;:::i;3269:231:7:-;;;;;;;;;:::i;4901:153:13:-;;;;;;;;;:::i;974:127:17:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:13;;;;;;;;;:::i;582:292:10:-;;;;;;;;;:::i;844:101:15:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:11:-;;;;;;;;;:::i;4519:168:13:-;;;;;;;;;:::i;3703:366:7:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:13;;;;;;;;;:::i;838:108:12:-;;;;;;;;;:::i;1023:133:16:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:13;;;;;;;;;:::i;681:140:11:-;;;;;;;;;:::i;858:226:14:-;;;;;;;;;:::i;1514:127:11:-;;;;;;;;;:::i;2320:80:7:-;;;;;;;;;:::i;1107:169:17:-;1174:4;-1:-1:-1;;;;;;1197:32:17;;-1:-1:-1;;;1197:32:17;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:13:-;2932:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:13;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:13;;:18;-1:-1:-1;;3185:18:13;:15;:18;;-1:-1:-1;3185:18:13:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:13;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:13;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:13;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:13;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:13;;4052:6;;-1:-1:-1;4060:20:13;;;;-1:-1:-1;4082:17:13;4012:11;:88::i;:::-;400:1:9;;;;;2854:1263:13;;;;:::o;573:184:17:-;668:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:17;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:14:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:14;;;;;;;;;;-1:-1:-1;;;;;1849:29:14;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:14;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:14;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:14;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:14;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:14;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:14;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:14;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:14;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:14;;-1:-1:-1;2373:103:14;-1:-1:-1;2489:8:14;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:14;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:14;;-1:-1:-1;;;1721:953:14;;;;;:::o;1195:454:10:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:10;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:10;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:10;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:10;-1:-1:-1;1195:454:10;;;;;;:::o;612:169:16:-;687:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:16;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:16;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:12:-;584:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:12;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:11;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:11:o;3269:231:7:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:7;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:7;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:13:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:17:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:17;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:13:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:10:-;674:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:10;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:10;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:15:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:15;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:11;1302:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:11;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:13:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:7;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:7;-1:-1:-1;3844:6:7;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:7;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:7;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:7;;3840:199;;;-1:-1:-1;3703:366:7;;;;:::o;5193:128:13:-;5247:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:13;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:12:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:16;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:13:-;5617:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:13;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:13;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:13;;:16;-1:-1:-1;5701:4:13;;-1:-1:-1;5701:4:13;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:9;5541:225:13;;;;:::o;681:140:11:-;743:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:11;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:14:-;955:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:14;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:14;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:14;-1:-1:-1;;;;;971:43:14;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:11:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:11;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:16:-;1229:4;-1:-1:-1;;;;;;1252:34:16;;-1:-1:-1;;;1252:34:16;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:7:-;3596:3;;:15;;-1:-1:-1;;;3596:15:7;;3564:4;;;;-1:-1:-1;;;;;3596:3:7;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:7;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:7;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:7;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:7;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:7;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:8:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:6:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:13:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:13;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:13;;;;;;-1:-1:-1;;6760:43:13;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:13;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:13;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:8:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:8;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:8;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:8;;:::o;414:204:9:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:9;576:10;570:17;-1:-1:-1;;;566:36:9;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:9;87:34:-1;-1:-1;;;;;;776:20:9;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:9;743:64::o;951:169:15:-;1018:4;-1:-1:-1;;;;;;1041:32:15;;-1:-1:-1;;;1041:32:15;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:8:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:8;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:8:o;8685:393:6:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:6;87:34:-1;135:17;;-1:-1;8858:14:6;-1:-1:-1;8839:33:6;-1:-1:-1;8960:2:6;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:6;;8685:393;-1:-1:-1;;;;;8685:393:6:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:6:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:6;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:6;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:14:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:14;;:11;-1:-1:-1;;;;;2770:37:14;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:6:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:6;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:6;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:6;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:6;;513:2;499:26;489:42;;468:73::o;6035:245:13:-;6102:4;-1:-1:-1;;;;;;6125:38:13;;-1:-1:-1;;;6125:38:13;;:93;;-1:-1:-1;;;;;;;6182:36:13;;-1:-1:-1;;;6182:36:13;6125:93;:148;;;;6237:36;6261:11;1019:4:12;-1:-1:-1;;;;;;1042:40:12;;-1:-1:-1;;;1042:40:12;;:80;;;1086:36;1110:11;1714:4:11;-1:-1:-1;;;;;;1737:32:11;;-1:-1:-1;;;1737:32:11;;:71;;-1:-1:-1;;;;;;;1773:35:11;;-1:-1:-1;;;1773:35:11;1737:71;:111;;;;1812:36;1836:11;1722:4:10;-1:-1:-1;;;;;;1745:31:10;;-1:-1:-1;;;1745:31:10;;:71;;-1:-1:-1;;;;;;;;;;204:32:9;;;1780:36:10;114:129:9:o;1897:2174:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:7;;;-1:-1:-1;1897:2174:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:8:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:18:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:18:-;;;;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:19:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:23;;;;;;;","srcmap-runtime":"961:696:23:-;;;;;"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","srcmap":"1939:14907:24:-;;;1122:66:20;1272:58;;4758:506:24;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:24;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:24;;;;;;;;;;;;;;;1242:12:21;:23;;-1:-1:-1;;;;;;1242:23:21;-1:-1:-1;;;;;1242:23:21;;;;;4758:506:24;;;;;1665:30:20;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:24;:26;;;;-1:-1:-1;4995:11:24;:33;;-1:-1:-1;;;;;4995:33:24;;;-1:-1:-1;;;;;;4995:33:24;;;;;;;;;-1:-1:-1;5083:18:24;:28;;;:35;;-1:-1:-1;;5083:35:24;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:24;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:24;-1:-1:-1;;;;;;16070:136:24;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:24;-1:-1:-1;;;;;13314:334:24;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:24;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;-1:-1:-1;6040:1806:24;-1:-1:-1;6040:1806:24;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:24;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:24;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:24;;-1:-1:-1;;;;;15695:220:24;;;;;-1:-1:-1;;;;;;15695:220:24;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:24;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:24;;-1:-1:-1;7973:1237:24;-1:-1:-1;7973:1237:24;:::i;1364:91:21:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:21;;;;;;;;;;;;;;16755:89:24;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:24;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:24;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:24;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:24;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:24;;-1:-1:-1;9368:1399:24;-1:-1:-1;9368:1399:24;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:24;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:24;;;;;;;;;;;;;:::i;2169:95:20:-;;;:::i;16551:89:24:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:24;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:24;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:24;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;6389:33:24;;;:88;;;;-1:-1:-1;6442:35:24;;;6389:88;:142;;;;-1:-1:-1;6497:34:24;;;6389:142;:196;;;;-1:-1:-1;6551:34:24;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:24;6841:25;;-1:-1:-1;6841:25:24;;;;;;;;-1:-1:-1;6841:25:24;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:24;-1:-1:-1;;;;;7084:25:24;-1:-1:-1;;;;;7084:25:24;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:24;;;;;-1:-1:-1;;7084:306:24;;;-1:-1:-1;;7084:306:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:24;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:24;-1:-1:-1;;;;;7486:10:24;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:24;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:24;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:24;-1:-1:-1;;;;;7742:87:24;;;;;;-1:-1:-1;;;;;7742:87:24;-1:-1:-1;;;;;7742:87:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:24;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:24;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:24;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:24;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:24;-1:-1:-1;15069:72:24;-1:-1:-1;15151:23:24;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:24;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:24;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:24;;;-1:-1:-1;;;;;15364:44:24;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:24;;15188:283;;;-1:-1:-1;15487:19:24;;-1:-1:-1;;14990:523:24;:::o;11299:398::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:24;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:24;;;;;;;;;;;;-1:-1:-1;;;11432:66:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:24;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:24;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:24;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:24;;;;;;;;;;;;-1:-1:-1;;;15798:62:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:24;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:24:o;7973:1237::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;8160:9:24;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:24;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:24;;8363:65;;;;;-1:-1:-1;;;8363:65:24;;;;;;;;;;;;-1:-1:-1;;;8363:65:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:24;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:24;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:24;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:24;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:24;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:24;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:24;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:24;;;;;-1:-1:-1;;;;;8926:76:24;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:24;:27;;;;;-1:-1:-1;;9075:27:24;;;:::i;:::-;-1:-1:-1;9162:31:24;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:24;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:24;;8155:1049;;;;7973:1237;;:::o;1364:91:21:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:21;1364:91;:::o;16755:89:24:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:24;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:24;;;;;;;;;;;;-1:-1:-1;;;10969:66:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:24;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:24;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;12676:35:24;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:24;;:23;-1:-1:-1;;9801:23:24;:20;:23;;-1:-1:-1;9801:23:24:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:24;;;;;;;;;;;;-1:-1:-1;;;9877:72:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:24;;-1:-1:-1;;;10048:18:24;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:24;;:24;-1:-1:-1;;10141:24:24;:21;:24;;-1:-1:-1;10141:24:24:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:24;;-1:-1:-1;;;10187:27:24;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:24;;:34;-1:-1:-1;;10400:34:24;:21;:34;;-1:-1:-1;10400:34:24:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:24;;:34;-1:-1:-1;;10436:34:24;:21;:34;;-1:-1:-1;10436:34:24:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:24;;:29;-1:-1:-1;;10689:29:24;:21;:29;;-1:-1:-1;10689:29:24:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:24;;:29;-1:-1:-1;;10720:29:24;:21;:29;;-1:-1:-1;10720:29:24:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:24;-1:-1:-1;;;;;5399:27:24;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:24;;;;;;;;;;;;-1:-1:-1;;;5367:86:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:24;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:24;;;;;;;;;;;;-1:-1:-1;;;12130:66:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:24;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:20:-;2242:15;;2169:95;:::o;16551:89:24:-;16622:11;;-1:-1:-1;;;;;16622:11:24;16551:89;:::o;2554:148:20:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:20;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:20;-1:-1:-1;;;;;2636:59:20;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:20;;2554:148;-1:-1:-1;;2554:148:20:o;4943:370:18:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:18:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:18;87:34:-1;135:17;;-1:-1;5912:21:18;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:18;5807:265;-1:-1:-1;;5807:265:18:o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:23:-;-1:-1:-1;;;;;1510:20:23;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:23;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:23;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:23;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:19:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:19;;;;;;;;;;;;-1:-1:-1;;;1726:60:19;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:19:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:19;;;;;;;;;;;;-1:-1:-1;;;1182:61:19;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:19:o;1631:153:21:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:21;;;;;;;;;;-1:-1:-1;;;;;1735:12:21;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:21;1716:61;;;-1:-1:-1;;;1716:61:21;;;;;;;;;;-1:-1:-1;;;;;1716:54:21;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:18;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:18;4078:48;;-1:-1:-1;3968:170:18;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:18;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:18;4378:24;;-1:-1:-1;4293:121:18;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:18;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:18:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:18;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:18;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:24:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:24;;;-1:-1:-1;1939:14907:24;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/transferrable.sol","tokenWhitelist.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[3527],"IController":[3092]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3075,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":4002,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":3528,"symbolAliases":[null],"unitAlias":""},"id":3076,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":3074,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":3528,"symbolAliases":[null],"unitAlias":""},"id":3077,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[3092],"name":"IController","scope":3528},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":3092,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3084,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3078,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":3079,"name":"VariableDeclaration","src":"1015:7:0"}],"id":3080,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3084,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3081,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":3082,"name":"VariableDeclaration","src":"1047:4:0"}],"id":3083,"name":"ParameterList","src":"1046:6:0"}],"id":3084,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":3092,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3091,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3085,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":3086,"name":"VariableDeclaration","src":"1076:7:0"}],"id":3087,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3091,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3088,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":3089,"name":"VariableDeclaration","src":"1108:4:0"}],"id":3090,"name":"ParameterList","src":"1107:6:0"}],"id":3091,"name":"FunctionDefinition","src":"1059:55:0"}],"id":3092,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[3073,3092,4001],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[3527,3073,4001,3092],"name":"Controller","scope":3528},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":3092,"type":"contract IController"},"id":3093,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":3094,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":4001,"type":"contract Ownable"},"id":3095,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":3096,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3073,"type":"contract Transferrable"},"id":3097,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":3098,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3104,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3099,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":3100,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3104,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3101,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":3102,"name":"VariableDeclaration","src":"1564:19:0"}],"id":3103,"name":"ParameterList","src":"1546:38:0"}],"id":3104,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3110,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3105,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":3106,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3110,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3107,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":3108,"name":"VariableDeclaration","src":"1631:19:0"}],"id":3109,"name":"ParameterList","src":"1613:38:0"}],"id":3110,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3116,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3111,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":3112,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3116,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3113,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":3114,"name":"VariableDeclaration","src":"1692:14:0"}],"id":3115,"name":"ParameterList","src":"1674:33:0"}],"id":3116,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3117,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":3118,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3119,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":3120,"name":"VariableDeclaration","src":"1749:14:0"}],"id":3121,"name":"ParameterList","src":"1731:33:0"}],"id":3122,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3130,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3123,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":3124,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3130,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3125,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":3126,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3130,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3127,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":3128,"name":"VariableDeclaration","src":"1814:15:0"}],"id":3129,"name":"ParameterList","src":"1784:46:0"}],"id":3130,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3134,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3131,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":3132,"name":"VariableDeclaration","src":"1851:15:0"}],"id":3133,"name":"ParameterList","src":"1850:17:0"}],"id":3134,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3138,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3135,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":3136,"name":"VariableDeclaration","src":"1887:15:0"}],"id":3137,"name":"ParameterList","src":"1886:17:0"}],"id":3138,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":3527,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3139,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3140,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":3141,"name":"Mapping","src":"1910:24:0"}],"id":3142,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":3527,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3143,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":3144,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":3527,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3145,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3146,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":3147,"name":"Mapping","src":"1991:24:0"}],"id":3148,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":3527,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3149,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":3150,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":3527,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3151,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":3152,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":3162,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3153,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":3154,"name":"VariableDeclaration","src":"2251:30:0"}],"id":3155,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":3160,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4001,"type":"type(contract Ownable)","value":"Ownable"},"id":3156,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3154,"type":"address payable","value":"_ownerAddress_"},"id":3157,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3158,"name":"Literal","src":"2314:5:0"}],"id":3159,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":3161,"name":"Block","src":"2321:2:0"}],"id":3162,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3163,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3164,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3165,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3166,"name":"Identifier","src":"2431:3:0"}],"id":3167,"name":"MemberAccess","src":"2431:10:0"}],"id":3168,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":3169,"name":"Literal","src":"2444:24:0"}],"id":3170,"name":"FunctionCall","src":"2414:55:0"}],"id":3171,"name":"ExpressionStatement","src":"2414:55:0"},{"id":3172,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":3173,"name":"Block","src":"2404:83:0"}],"id":3174,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3175,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3176,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4000,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3177,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3178,"name":"Identifier","src":"2588:3:0"}],"id":3179,"name":"MemberAccess","src":"2588:10:0"}],"id":3180,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3181,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3182,"name":"Identifier","src":"2612:3:0"}],"id":3183,"name":"MemberAccess","src":"2612:10:0"}],"id":3184,"name":"IndexAccess","src":"2603:20:0"}],"id":3185,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":3186,"name":"Literal","src":"2625:24:0"}],"id":3187,"name":"FunctionCall","src":"2571:79:0"}],"id":3188,"name":"ExpressionStatement","src":"2571:79:0"},{"id":3189,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":3190,"name":"Block","src":"2561:107:0"}],"id":3191,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3192,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3193,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"function () view returns (bool)","value":"isStopped"},"id":3194,"name":"Identifier","src":"2762:9:0"}],"id":3195,"name":"FunctionCall","src":"2762:11:0"}],"id":3196,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":3197,"name":"Literal","src":"2775:23:0"}],"id":3198,"name":"FunctionCall","src":"2753:46:0"}],"id":3199,"name":"ExpressionStatement","src":"2753:46:0"},{"id":3200,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":3201,"name":"Block","src":"2743:74:0"}],"id":3202,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3216,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3203,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":3204,"name":"VariableDeclaration","src":"2958:16:0"}],"id":3205,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3210,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3206,"name":"Identifier","src":"2985:9:0"}],"id":3207,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3208,"name":"Identifier","src":"2995:10:0"}],"id":3209,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3360,"type":"function (address)","value":"_addAdmin"},"id":3211,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3204,"type":"address","value":"_account"},"id":3212,"name":"Identifier","src":"3026:8:0"}],"id":3213,"name":"FunctionCall","src":"3016:19:0"}],"id":3214,"name":"ExpressionStatement","src":"3016:19:0"}],"id":3215,"name":"Block","src":"3006:36:0"}],"id":3216,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3228,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3217,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":3218,"name":"VariableDeclaration","src":"3192:16:0"}],"id":3219,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3222,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3220,"name":"Identifier","src":"3219:9:0"}],"id":3221,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3388,"type":"function (address)","value":"_removeAdmin"},"id":3223,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3218,"type":"address","value":"_account"},"id":3224,"name":"Identifier","src":"3252:8:0"}],"id":3225,"name":"FunctionCall","src":"3239:22:0"}],"id":3226,"name":"ExpressionStatement","src":"3239:22:0"}],"id":3227,"name":"Block","src":"3229:39:0"}],"id":3228,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":3527,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3229,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3236,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3230,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":3231,"name":"VariableDeclaration","src":"3365:7:0"}],"id":3232,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":3232},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"uint256","value":"_adminCount"},"id":3233,"name":"Identifier","src":"3391:11:0"}],"id":3234,"name":"Return","src":"3384:18:0"}],"id":3235,"name":"Block","src":"3374:35:0"}],"id":3236,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3250,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3237,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":3238,"name":"VariableDeclaration","src":"3570:16:0"}],"id":3239,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3244,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3191,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3240,"name":"Identifier","src":"3597:16:0"}],"id":3241,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3242,"name":"Identifier","src":"3614:10:0"}],"id":3243,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3442,"type":"function (address)","value":"_addController"},"id":3245,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3238,"type":"address","value":"_account"},"id":3246,"name":"Identifier","src":"3650:8:0"}],"id":3247,"name":"FunctionCall","src":"3635:24:0"}],"id":3248,"name":"ExpressionStatement","src":"3635:24:0"}],"id":3249,"name":"Block","src":"3625:41:0"}],"id":3250,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3262,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3251,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":3252,"name":"VariableDeclaration","src":"3836:16:0"}],"id":3253,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3256,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3191,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3254,"name":"Identifier","src":"3863:16:0"}],"id":3255,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"function (address)","value":"_removeController"},"id":3257,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3252,"type":"address","value":"_account"},"id":3258,"name":"Identifier","src":"3908:8:0"}],"id":3259,"name":"FunctionCall","src":"3890:27:0"}],"id":3260,"name":"ExpressionStatement","src":"3890:27:0"}],"id":3261,"name":"Block","src":"3880:44:0"}],"id":3262,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":3527,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3263,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3270,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3264,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":3265,"name":"VariableDeclaration","src":"4069:7:0"}],"id":3266,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":3266},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"_controllerCount"},"id":3267,"name":"Identifier","src":"4095:16:0"}],"id":3268,"name":"Return","src":"4088:23:0"}],"id":3269,"name":"Block","src":"4078:40:0"}],"id":3270,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":3527,"stateMutability":"view","superFunction":3091,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3284,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3271,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":3272,"name":"VariableDeclaration","src":"4239:16:0"}],"id":3273,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3284,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3276,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":3277,"name":"VariableDeclaration","src":"4291:4:0"}],"id":3278,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3274,"name":"Identifier","src":"4271:10:0"}],"id":3275,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":3278},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3279,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3272,"type":"address","value":"_account"},"id":3280,"name":"Identifier","src":"4323:8:0"}],"id":3281,"name":"IndexAccess","src":"4314:18:0"}],"id":3282,"name":"Return","src":"4307:25:0"}],"id":3283,"name":"Block","src":"4297:42:0"}],"id":3284,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":3527,"stateMutability":"view","superFunction":3084,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3298,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3285,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":3286,"name":"VariableDeclaration","src":"4473:16:0"}],"id":3287,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3298,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3290,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":3291,"name":"VariableDeclaration","src":"4525:4:0"}],"id":3292,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3288,"name":"Identifier","src":"4505:10:0"}],"id":3289,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":3292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3293,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3286,"type":"address","value":"_account"},"id":3294,"name":"Identifier","src":"4562:8:0"}],"id":3295,"name":"IndexAccess","src":"4548:23:0"}],"id":3296,"name":"Return","src":"4541:30:0"}],"id":3297,"name":"Block","src":"4531:47:0"}],"id":3298,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":3527,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3299,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3306,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3300,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":3301,"name":"VariableDeclaration","src":"4766:4:0"}],"id":3302,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":3302},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3152,"type":"bool","value":"_stopped"},"id":3303,"name":"Identifier","src":"4789:8:0"}],"id":3304,"name":"Return","src":"4782:15:0"}],"id":3305,"name":"Block","src":"4772:32:0"}],"id":3306,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3360,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3307,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":3308,"name":"VariableDeclaration","src":"4891:16:0"}],"id":3309,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3310,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3311,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3312,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3313,"name":"Identifier","src":"4945:8:0"}],"id":3314,"name":"IndexAccess","src":"4936:18:0"}],"id":3315,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":3316,"name":"Literal","src":"4956:38:0"}],"id":3317,"name":"FunctionCall","src":"4927:68:0"}],"id":3318,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3319,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3320,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3321,"name":"Identifier","src":"5028:8:0"}],"id":3322,"name":"IndexAccess","src":"5014:23:0"}],"id":3323,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":3324,"name":"Literal","src":"5039:42:0"}],"id":3325,"name":"FunctionCall","src":"5005:77:0"}],"id":3326,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3327,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4000,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3328,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3329,"name":"Identifier","src":"5110:8:0"}],"id":3330,"name":"FunctionCall","src":"5101:18:0"}],"id":3331,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":3332,"name":"Literal","src":"5121:39:0"}],"id":3333,"name":"FunctionCall","src":"5092:69:0"}],"id":3334,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3335,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3336,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3337,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3338,"name":"Literal","src":"5199:1:0"}],"id":3339,"name":"FunctionCall","src":"5191:10:0"}],"id":3340,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":3341,"name":"Literal","src":"5203:38:0"}],"id":3342,"name":"FunctionCall","src":"5171:71:0"}],"id":3343,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3344,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3345,"name":"Identifier","src":"5261:8:0"}],"id":3346,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3347,"name":"Literal","src":"5273:4:0"}],"id":3348,"name":"Assignment","src":"5252:25:0"}],"id":3349,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"uint256","value":"_adminCount"},"id":3350,"name":"Identifier","src":"5287:11:0"}],"id":3351,"name":"UnaryOperation","src":"5287:13:0"}],"id":3352,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3116,"type":"function (address,address)","value":"AddedAdmin"},"id":3353,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3354,"name":"Identifier","src":"5326:3:0"}],"id":3355,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3356,"name":"Identifier","src":"5338:8:0"}],"id":3357,"name":"FunctionCall","src":"5315:32:0"}],"id":3358,"name":"EmitStatement","src":"5310:37:0"}],"id":3359,"name":"Block","src":"4917:437:0"}],"id":3360,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3388,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3361,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":3362,"name":"VariableDeclaration","src":"5453:16:0"}],"id":3363,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3364,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3365,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3366,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3362,"type":"address","value":"_account"},"id":3367,"name":"Identifier","src":"5506:8:0"}],"id":3368,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":3369,"name":"Literal","src":"5517:34:0"}],"id":3370,"name":"FunctionCall","src":"5489:63:0"}],"id":3371,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3372,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3362,"type":"address","value":"_account"},"id":3373,"name":"Identifier","src":"5571:8:0"}],"id":3374,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3375,"name":"Literal","src":"5583:5:0"}],"id":3376,"name":"Assignment","src":"5562:26:0"}],"id":3377,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"uint256","value":"_adminCount"},"id":3378,"name":"Identifier","src":"5598:11:0"}],"id":3379,"name":"UnaryOperation","src":"5598:13:0"}],"id":3380,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3122,"type":"function (address,address)","value":"RemovedAdmin"},"id":3381,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3382,"name":"Identifier","src":"5639:3:0"}],"id":3383,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3362,"type":"address","value":"_account"},"id":3384,"name":"Identifier","src":"5651:8:0"}],"id":3385,"name":"FunctionCall","src":"5626:34:0"}],"id":3386,"name":"EmitStatement","src":"5621:39:0"}],"id":3387,"name":"Block","src":"5479:188:0"}],"id":3388,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3442,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3389,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":3390,"name":"VariableDeclaration","src":"5764:16:0"}],"id":3391,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3392,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3393,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3394,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3395,"name":"Identifier","src":"5818:8:0"}],"id":3396,"name":"IndexAccess","src":"5809:18:0"}],"id":3397,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":3398,"name":"Literal","src":"5829:38:0"}],"id":3399,"name":"FunctionCall","src":"5800:68:0"}],"id":3400,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3401,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3402,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3403,"name":"Identifier","src":"5901:8:0"}],"id":3404,"name":"IndexAccess","src":"5887:23:0"}],"id":3405,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":3406,"name":"Literal","src":"5912:42:0"}],"id":3407,"name":"FunctionCall","src":"5878:77:0"}],"id":3408,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3409,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4000,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3410,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3411,"name":"Identifier","src":"5983:8:0"}],"id":3412,"name":"FunctionCall","src":"5974:18:0"}],"id":3413,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":3414,"name":"Literal","src":"5994:39:0"}],"id":3415,"name":"FunctionCall","src":"5965:69:0"}],"id":3416,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3417,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3418,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3419,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3420,"name":"Literal","src":"6072:1:0"}],"id":3421,"name":"FunctionCall","src":"6064:10:0"}],"id":3422,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":3423,"name":"Literal","src":"6076:38:0"}],"id":3424,"name":"FunctionCall","src":"6044:71:0"}],"id":3425,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3426,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3427,"name":"Identifier","src":"6139:8:0"}],"id":3428,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3429,"name":"Literal","src":"6151:4:0"}],"id":3430,"name":"Assignment","src":"6125:30:0"}],"id":3431,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"_controllerCount"},"id":3432,"name":"Identifier","src":"6165:16:0"}],"id":3433,"name":"UnaryOperation","src":"6165:18:0"}],"id":3434,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3104,"type":"function (address,address)","value":"AddedController"},"id":3435,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3436,"name":"Identifier","src":"6214:3:0"}],"id":3437,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3438,"name":"Identifier","src":"6226:8:0"}],"id":3439,"name":"FunctionCall","src":"6198:37:0"}],"id":3440,"name":"EmitStatement","src":"6193:42:0"}],"id":3441,"name":"Block","src":"5790:452:0"}],"id":3442,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3470,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3443,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":3444,"name":"VariableDeclaration","src":"6351:16:0"}],"id":3445,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3446,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3447,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3448,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3444,"type":"address","value":"_account"},"id":3449,"name":"Identifier","src":"6409:8:0"}],"id":3450,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":3451,"name":"Literal","src":"6420:38:0"}],"id":3452,"name":"FunctionCall","src":"6387:72:0"}],"id":3453,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3454,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3444,"type":"address","value":"_account"},"id":3455,"name":"Identifier","src":"6483:8:0"}],"id":3456,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3457,"name":"Literal","src":"6495:5:0"}],"id":3458,"name":"Assignment","src":"6469:31:0"}],"id":3459,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"_controllerCount"},"id":3460,"name":"Identifier","src":"6510:16:0"}],"id":3461,"name":"UnaryOperation","src":"6510:18:0"}],"id":3462,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3110,"type":"function (address,address)","value":"RemovedController"},"id":3463,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3464,"name":"Identifier","src":"6561:3:0"}],"id":3465,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3444,"type":"address","value":"_account"},"id":3466,"name":"Identifier","src":"6573:8:0"}],"id":3467,"name":"FunctionCall","src":"6543:39:0"}],"id":3468,"name":"EmitStatement","src":"6538:44:0"}],"id":3469,"name":"Block","src":"6377:212:0"}],"id":3470,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3471,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":3474,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3191,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3472,"name":"Identifier","src":"6687:16:0"}],"id":3473,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3152,"type":"bool","value":"_stopped"},"id":3475,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3476,"name":"Literal","src":"6725:4:0"}],"id":3477,"name":"Assignment","src":"6714:15:0"}],"id":3478,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3134,"type":"function (address)","value":"Stopped"},"id":3479,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3480,"name":"Identifier","src":"6752:3:0"}],"id":3481,"name":"MemberAccess","src":"6752:10:0"}],"id":3482,"name":"FunctionCall","src":"6744:19:0"}],"id":3483,"name":"EmitStatement","src":"6739:24:0"}],"id":3484,"name":"Block","src":"6704:66:0"}],"id":3485,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3486,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":3489,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3487,"name":"Identifier","src":"6845:9:0"}],"id":3488,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3152,"type":"bool","value":"_stopped"},"id":3490,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3491,"name":"Literal","src":"6876:5:0"}],"id":3492,"name":"Assignment","src":"6865:16:0"}],"id":3493,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3138,"type":"function (address)","value":"Started"},"id":3494,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3495,"name":"Identifier","src":"6904:3:0"}],"id":3496,"name":"MemberAccess","src":"6904:10:0"}],"id":3497,"name":"FunctionCall","src":"6896:19:0"}],"id":3498,"name":"EmitStatement","src":"6891:24:0"}],"id":3499,"name":"Block","src":"6855:67:0"}],"id":3500,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3526,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3501,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":3502,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":3526,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3503,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":3504,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":3526,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3505,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":3506,"name":"VariableDeclaration","src":"7063:15:0"}],"id":3507,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":3512,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3174,"type":"modifier ()","value":"onlyAdmin"},"id":3508,"name":"Identifier","src":"7089:9:0"}],"id":3509,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3510,"name":"Identifier","src":"7099:10:0"}],"id":3511,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3072,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":3513,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3502,"type":"address payable","value":"_to"},"id":3514,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3504,"type":"address","value":"_asset"},"id":3515,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3506,"type":"uint256","value":"_amount"},"id":3516,"name":"Identifier","src":"7147:7:0"}],"id":3517,"name":"FunctionCall","src":"7120:35:0"}],"id":3518,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3130,"type":"function (address,address,uint256)","value":"Claimed"},"id":3519,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3502,"type":"address payable","value":"_to"},"id":3520,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3504,"type":"address","value":"_asset"},"id":3521,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3506,"type":"uint256","value":"_amount"},"id":3522,"name":"Identifier","src":"7191:7:0"}],"id":3523,"name":"FunctionCall","src":"7170:29:0"}],"id":3524,"name":"EmitStatement","src":"7165:34:0"}],"id":3525,"name":"Block","src":"7110:96:0"}],"id":3526,"name":"FunctionDefinition","src":"7011:195:0"}],"id":3527,"name":"ContractDefinition","src":"1460:5748:0"}],"id":3528,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[4331]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4314,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[4331],"name":"Address","scope":4332},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":4331,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":4330,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4315,"name":"ElementaryTypeName","src":"562:7:1"}],"id":4316,"name":"VariableDeclaration","src":"562:15:1"}],"id":4317,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":4330,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4318,"name":"ElementaryTypeName","src":"602:4:1"}],"id":4319,"name":"VariableDeclaration","src":"602:4:1"}],"id":4320,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[4322],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":4329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4321,"name":"ElementaryTypeName","src":"805:7:1"}],"id":4322,"name":"VariableDeclaration","src":"805:12:1"}],"id":4323,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":4322,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":4316,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":4324,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":4320},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4322,"type":"uint256","value":"size"},"id":4325,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4326,"name":"Literal","src":"947:1:1"}],"id":4327,"name":"BinaryOperation","src":"940:8:1"}],"id":4328,"name":"Return","src":"933:15:1"}],"id":4329,"name":"Block","src":"608:347:1"}],"id":4330,"name":"FunctionDefinition","src":"542:413:1"}],"id":4331,"name":"ContractDefinition","src":"94:863:1"}],"id":4332,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[3625]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3574,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[3625],"name":"ERC20","scope":3626},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":3625,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":3583,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3575,"name":"ElementaryTypeName","src":"193:7:2"}],"id":3576,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":3583,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3577,"name":"ElementaryTypeName","src":"209:7:2"}],"id":3578,"name":"VariableDeclaration","src":"209:16:2"}],"id":3579,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3580,"name":"ElementaryTypeName","src":"250:7:2"}],"id":3581,"name":"VariableDeclaration","src":"250:7:2"}],"id":3582,"name":"ParameterList","src":"249:9:2"}],"id":3583,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":3625,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":3592,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3584,"name":"ElementaryTypeName","src":"281:7:2"}],"id":3585,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":3592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3586,"name":"ElementaryTypeName","src":"299:7:2"}],"id":3587,"name":"VariableDeclaration","src":"299:14:2"}],"id":3588,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3592,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3589,"name":"ElementaryTypeName","src":"333:4:2"}],"id":3590,"name":"VariableDeclaration","src":"333:4:2"}],"id":3591,"name":"ParameterList","src":"332:6:2"}],"id":3592,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":3625,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":3599,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3593,"name":"ElementaryTypeName","src":"363:7:2"}],"id":3594,"name":"VariableDeclaration","src":"363:12:2"}],"id":3595,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3599,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3596,"name":"ElementaryTypeName","src":"400:7:2"}],"id":3597,"name":"VariableDeclaration","src":"400:7:2"}],"id":3598,"name":"ParameterList","src":"399:9:2"}],"id":3599,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":3625,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3600,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3601,"name":"ElementaryTypeName","src":"460:7:2"}],"id":3602,"name":"VariableDeclaration","src":"460:7:2"}],"id":3603,"name":"ParameterList","src":"459:9:2"}],"id":3604,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":3625,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3613,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3605,"name":"ElementaryTypeName","src":"492:7:2"}],"id":3606,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":3613,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3607,"name":"ElementaryTypeName","src":"505:7:2"}],"id":3608,"name":"VariableDeclaration","src":"505:14:2"}],"id":3609,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3613,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3610,"name":"ElementaryTypeName","src":"539:4:2"}],"id":3611,"name":"VariableDeclaration","src":"539:4:2"}],"id":3612,"name":"ParameterList","src":"538:6:2"}],"id":3613,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":3625,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":3624,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3614,"name":"ElementaryTypeName","src":"572:7:2"}],"id":3615,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":3624,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3616,"name":"ElementaryTypeName","src":"587:7:2"}],"id":3617,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":3624,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3618,"name":"ElementaryTypeName","src":"600:7:2"}],"id":3619,"name":"VariableDeclaration","src":"600:14:2"}],"id":3620,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3624,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3621,"name":"ElementaryTypeName","src":"634:4:2"}],"id":3622,"name":"VariableDeclaration","src":"634:4:2"}],"id":3623,"name":"ParameterList","src":"633:6:2"}],"id":3624,"name":"FunctionDefinition","src":"550:90:2"}],"id":3625,"name":"ContractDefinition","src":"152:490:2"}],"id":3626,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[3844]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3627,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":3626,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":3845,"symbolAliases":[null],"unitAlias":""},"id":3628,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":1121,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":3845,"symbolAliases":[null],"unitAlias":""},"id":3629,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":4332,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":3845,"symbolAliases":[null],"unitAlias":""},"id":3630,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[3844],"name":"SafeERC20","scope":3845},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1120,"type":"library SafeMath"},"id":3631,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":3632,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":3633,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":4331,"type":"library Address"},"id":3634,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3635,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":3636,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3658,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3637,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":3638,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":3658,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3639,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":3640,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":3658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3641,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":3642,"name":"VariableDeclaration","src":"1850:13:3"}],"id":3643,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":3644,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3645,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3638,"type":"contract ERC20","value":"token"},"id":3646,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3647,"name":"Identifier","src":"1910:3:3"}],"id":3648,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":3613,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3638,"type":"contract ERC20","value":"token"},"id":3649,"name":"Identifier","src":"1933:5:3"}],"id":3650,"name":"MemberAccess","src":"1933:14:3"}],"id":3651,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3640,"type":"address","value":"to"},"id":3652,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3642,"type":"uint256","value":"value"},"id":3653,"name":"Identifier","src":"1962:5:3"}],"id":3654,"name":"FunctionCall","src":"1910:58:3"}],"id":3655,"name":"FunctionCall","src":"1884:85:3"}],"id":3656,"name":"ExpressionStatement","src":"1884:85:3"}],"id":3657,"name":"Block","src":"1874:102:3"}],"id":3658,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3683,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3659,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":3660,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":3683,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3661,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":3662,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":3683,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3663,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":3664,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":3683,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3665,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":3666,"name":"VariableDeclaration","src":"2047:13:3"}],"id":3667,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":3668,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3669,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3660,"type":"contract ERC20","value":"token"},"id":3670,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3671,"name":"Identifier","src":"2107:3:3"}],"id":3672,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":3624,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3660,"type":"contract ERC20","value":"token"},"id":3673,"name":"Identifier","src":"2130:5:3"}],"id":3674,"name":"MemberAccess","src":"2130:18:3"}],"id":3675,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3662,"type":"address","value":"from"},"id":3676,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3664,"type":"address","value":"to"},"id":3677,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3666,"type":"uint256","value":"value"},"id":3678,"name":"Identifier","src":"2169:5:3"}],"id":3679,"name":"FunctionCall","src":"2107:68:3"}],"id":3680,"name":"FunctionCall","src":"2081:95:3"}],"id":3681,"name":"ExpressionStatement","src":"2081:95:3"}],"id":3682,"name":"Block","src":"2071:112:3"}],"id":3683,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3724,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3684,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":3685,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":3724,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3686,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":3687,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":3724,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3688,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":3689,"name":"VariableDeclaration","src":"2240:13:3"}],"id":3690,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":3691,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3692,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3689,"type":"uint256","value":"value"},"id":3693,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3694,"name":"Literal","src":"2562:1:3"}],"id":3695,"name":"BinaryOperation","src":"2553:10:3"}],"id":3696,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3583,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3685,"type":"contract ERC20","value":"token"},"id":3697,"name":"Identifier","src":"2569:5:3"}],"id":3698,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3844","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3699,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7063,"type":"library SafeERC20","value":"this"},"id":3700,"name":"Identifier","src":"2593:4:3"}],"id":3701,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3687,"type":"address","value":"spender"},"id":3702,"name":"Identifier","src":"2600:7:3"}],"id":3703,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3704,"name":"Literal","src":"2612:1:3"}],"id":3705,"name":"BinaryOperation","src":"2569:44:3"}],"id":3706,"name":"TupleExpression","src":"2568:46:3"}],"id":3707,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":3708,"name":"Literal","src":"2628:56:3"}],"id":3709,"name":"FunctionCall","src":"2544:150:3"}],"id":3710,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3711,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3685,"type":"contract ERC20","value":"token"},"id":3712,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3713,"name":"Identifier","src":"2730:3:3"}],"id":3714,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3592,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3685,"type":"contract ERC20","value":"token"},"id":3715,"name":"Identifier","src":"2753:5:3"}],"id":3716,"name":"MemberAccess","src":"2753:13:3"}],"id":3717,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3687,"type":"address","value":"spender"},"id":3718,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3689,"type":"uint256","value":"value"},"id":3719,"name":"Identifier","src":"2786:5:3"}],"id":3720,"name":"FunctionCall","src":"2730:62:3"}],"id":3721,"name":"FunctionCall","src":"2704:89:3"}],"id":3722,"name":"ExpressionStatement","src":"2704:89:3"}],"id":3723,"name":"Block","src":"2264:536:3"}],"id":3724,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3759,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3725,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":3726,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":3759,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3727,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":3728,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":3759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3729,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":3730,"name":"VariableDeclaration","src":"2867:13:3"}],"id":3731,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":3732,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[3734]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3758,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3733,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":3734,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3583,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"contract ERC20","value":"token"},"id":3735,"name":"Identifier","src":"2924:5:3"}],"id":3736,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3844","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3737,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7063,"type":"library SafeERC20","value":"this"},"id":3738,"name":"Identifier","src":"2948:4:3"}],"id":3739,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3728,"type":"address","value":"spender"},"id":3740,"name":"Identifier","src":"2955:7:3"}],"id":3741,"name":"FunctionCall","src":"2924:39:3"}],"id":3742,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3730,"type":"uint256","value":"value"},"id":3743,"name":"Identifier","src":"2968:5:3"}],"id":3744,"name":"FunctionCall","src":"2924:50:3"}],"id":3745,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3746,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"contract ERC20","value":"token"},"id":3747,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3748,"name":"Identifier","src":"3010:3:3"}],"id":3749,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3592,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"contract ERC20","value":"token"},"id":3750,"name":"Identifier","src":"3033:5:3"}],"id":3751,"name":"MemberAccess","src":"3033:13:3"}],"id":3752,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3728,"type":"address","value":"spender"},"id":3753,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3734,"type":"uint256","value":"newAllowance"},"id":3754,"name":"Identifier","src":"3066:12:3"}],"id":3755,"name":"FunctionCall","src":"3010:69:3"}],"id":3756,"name":"FunctionCall","src":"2984:96:3"}],"id":3757,"name":"ExpressionStatement","src":"2984:96:3"}],"id":3758,"name":"Block","src":"2891:196:3"}],"id":3759,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3794,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3760,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":3761,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":3794,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3762,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":3763,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":3794,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3764,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":3765,"name":"VariableDeclaration","src":"3154:13:3"}],"id":3766,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":3767,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[3769]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3793,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3768,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":3769,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1039,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3583,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"contract ERC20","value":"token"},"id":3770,"name":"Identifier","src":"3211:5:3"}],"id":3771,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3844","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3772,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7063,"type":"library SafeERC20","value":"this"},"id":3773,"name":"Identifier","src":"3235:4:3"}],"id":3774,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3763,"type":"address","value":"spender"},"id":3775,"name":"Identifier","src":"3242:7:3"}],"id":3776,"name":"FunctionCall","src":"3211:39:3"}],"id":3777,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3765,"type":"uint256","value":"value"},"id":3778,"name":"Identifier","src":"3255:5:3"}],"id":3779,"name":"FunctionCall","src":"3211:50:3"}],"id":3780,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3781,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"contract ERC20","value":"token"},"id":3782,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3783,"name":"Identifier","src":"3297:3:3"}],"id":3784,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3592,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"contract ERC20","value":"token"},"id":3785,"name":"Identifier","src":"3320:5:3"}],"id":3786,"name":"MemberAccess","src":"3320:13:3"}],"id":3787,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3763,"type":"address","value":"spender"},"id":3788,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"uint256","value":"newAllowance"},"id":3789,"name":"Identifier","src":"3353:12:3"}],"id":3790,"name":"FunctionCall","src":"3297:69:3"}],"id":3791,"name":"FunctionCall","src":"3271:96:3"}],"id":3792,"name":"ExpressionStatement","src":"3271:96:3"}],"id":3793,"name":"Block","src":"3178:196:3"}],"id":3794,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3843,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3795,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":3796,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":3843,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3797,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":3798,"name":"VariableDeclaration","src":"3798:17:3"}],"id":3799,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":3800,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3801,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":4330,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3802,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3796,"type":"contract ERC20","value":"token"},"id":3803,"name":"Identifier","src":"4360:5:3"}],"id":3804,"name":"FunctionCall","src":"4352:14:3"}],"id":3805,"name":"MemberAccess","src":"4352:25:3"}],"id":3806,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":3807,"name":"Literal","src":"4381:33:3"}],"id":3808,"name":"FunctionCall","src":"4344:71:3"}],"id":3809,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[3811,3813]},"children":[{"attributes":{"constant":false,"name":"success","scope":3842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3810,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":3811,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":3842,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3812,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":3813,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3814,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3796,"type":"contract ERC20","value":"token"},"id":3815,"name":"Identifier","src":"4535:5:3"}],"id":3816,"name":"FunctionCall","src":"4527:14:3"}],"id":3817,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3798,"type":"bytes memory","value":"data"},"id":3818,"name":"Identifier","src":"4547:4:3"}],"id":3819,"name":"FunctionCall","src":"4527:25:3"}],"id":3820,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3821,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3811,"type":"bool","value":"success"},"id":3822,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":3823,"name":"Literal","src":"4579:34:3"}],"id":3824,"name":"FunctionCall","src":"4562:52:3"}],"id":3825,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3813,"type":"bytes memory","value":"returndata"},"id":3826,"name":"Identifier","src":"4629:10:3"}],"id":3827,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3828,"name":"Literal","src":"4649:1:3"}],"id":3829,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3830,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3831,"name":"Identifier","src":"4758:3:3"}],"id":3832,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3813,"type":"bytes memory","value":"returndata"},"id":3833,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":3834,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":3835,"name":"TupleExpression","src":"4781:6:3"}],"id":3836,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":3837,"name":"Literal","src":"4790:44:3"}],"id":3838,"name":"FunctionCall","src":"4750:85:3"}],"id":3839,"name":"ExpressionStatement","src":"4750:85:3"}],"id":3840,"name":"Block","src":"4652:194:3"}],"id":3841,"name":"IfStatement","src":"4625:221:3"}],"id":3842,"name":"Block","src":"3826:1026:3"}],"id":3843,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":3844,"name":"ContractDefinition","src":"1715:3139:3"}],"id":3845,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[1120]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":989,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[1120],"name":"SafeMath","scope":1121},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1014,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":990,"name":"ElementaryTypeName","src":"847:7:4"}],"id":991,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":1014,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":992,"name":"ElementaryTypeName","src":"858:7:4"}],"id":993,"name":"VariableDeclaration","src":"858:9:4"}],"id":994,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1014,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":995,"name":"ElementaryTypeName","src":"892:7:4"}],"id":996,"name":"VariableDeclaration","src":"892:7:4"}],"id":997,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[999]},"children":[{"attributes":{"constant":false,"name":"c","scope":1013,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":998,"name":"ElementaryTypeName","src":"911:7:4"}],"id":999,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":991,"type":"uint256","value":"a"},"id":1000,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":993,"type":"uint256","value":"b"},"id":1001,"name":"Identifier","src":"927:1:4"}],"id":1002,"name":"BinaryOperation","src":"923:5:4"}],"id":1003,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1004,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":999,"type":"uint256","value":"c"},"id":1005,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":991,"type":"uint256","value":"a"},"id":1006,"name":"Identifier","src":"951:1:4"}],"id":1007,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":1008,"name":"Literal","src":"954:29:4"}],"id":1009,"name":"FunctionCall","src":"938:46:4"}],"id":1010,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":997},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":999,"type":"uint256","value":"c"},"id":1011,"name":"Identifier","src":"1002:1:4"}],"id":1012,"name":"Return","src":"995:8:4"}],"id":1013,"name":"Block","src":"901:109:4"}],"id":1014,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1015,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":1016,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":1039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1017,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":1018,"name":"VariableDeclaration","src":"1298:9:4"}],"id":1019,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1020,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":1021,"name":"VariableDeclaration","src":"1332:7:4"}],"id":1022,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1023,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1018,"type":"uint256","value":"b"},"id":1024,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1016,"type":"uint256","value":"a"},"id":1025,"name":"Identifier","src":"1364:1:4"}],"id":1026,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":1027,"name":"Literal","src":"1367:32:4"}],"id":1028,"name":"FunctionCall","src":"1351:49:4"}],"id":1029,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[1031]},"children":[{"attributes":{"constant":false,"name":"c","scope":1038,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1030,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":1031,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1016,"type":"uint256","value":"a"},"id":1032,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1018,"type":"uint256","value":"b"},"id":1033,"name":"Identifier","src":"1426:1:4"}],"id":1034,"name":"BinaryOperation","src":"1422:5:4"}],"id":1035,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":1022},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1031,"type":"uint256","value":"c"},"id":1036,"name":"Identifier","src":"1445:1:4"}],"id":1037,"name":"Return","src":"1438:8:4"}],"id":1038,"name":"Block","src":"1341:112:4"}],"id":1039,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1040,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":1041,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1042,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":1043,"name":"VariableDeclaration","src":"1717:9:4"}],"id":1044,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1045,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":1046,"name":"VariableDeclaration","src":"1751:7:4"}],"id":1047,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1041,"type":"uint256","value":"a"},"id":1048,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1049,"name":"Literal","src":"1996:1:4"}],"id":1050,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":1047},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1051,"name":"Literal","src":"2020:1:4"}],"id":1052,"name":"Return","src":"2013:8:4"}],"id":1053,"name":"Block","src":"1999:33:4"}],"id":1054,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[1056]},"children":[{"attributes":{"constant":false,"name":"c","scope":1072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1055,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":1056,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1041,"type":"uint256","value":"a"},"id":1057,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1043,"type":"uint256","value":"b"},"id":1058,"name":"Identifier","src":"2058:1:4"}],"id":1059,"name":"BinaryOperation","src":"2054:5:4"}],"id":1060,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1061,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"uint256","value":"c"},"id":1062,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1041,"type":"uint256","value":"a"},"id":1063,"name":"Identifier","src":"2081:1:4"}],"id":1064,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1043,"type":"uint256","value":"b"},"id":1065,"name":"Identifier","src":"2086:1:4"}],"id":1066,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":1067,"name":"Literal","src":"2089:35:4"}],"id":1068,"name":"FunctionCall","src":"2069:56:4"}],"id":1069,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":1047},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"uint256","value":"c"},"id":1070,"name":"Identifier","src":"2143:1:4"}],"id":1071,"name":"Return","src":"2136:8:4"}],"id":1072,"name":"Block","src":"1760:391:4"}],"id":1073,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1074,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":1075,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":1098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1076,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":1077,"name":"VariableDeclaration","src":"2630:9:4"}],"id":1078,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1079,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":1080,"name":"VariableDeclaration","src":"2664:7:4"}],"id":1081,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1082,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1077,"type":"uint256","value":"b"},"id":1083,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1084,"name":"Literal","src":"2761:1:4"}],"id":1085,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":1086,"name":"Literal","src":"2764:28:4"}],"id":1087,"name":"FunctionCall","src":"2749:44:4"}],"id":1088,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[1090]},"children":[{"attributes":{"constant":false,"name":"c","scope":1097,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1089,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":1090,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1075,"type":"uint256","value":"a"},"id":1091,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1077,"type":"uint256","value":"b"},"id":1092,"name":"Identifier","src":"2819:1:4"}],"id":1093,"name":"BinaryOperation","src":"2815:5:4"}],"id":1094,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":1081},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1090,"type":"uint256","value":"c"},"id":1095,"name":"Identifier","src":"2924:1:4"}],"id":1096,"name":"Return","src":"2917:8:4"}],"id":1097,"name":"Block","src":"2673:259:4"}],"id":1098,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1119,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1099,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":1100,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":1119,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1101,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":1102,"name":"VariableDeclaration","src":"3400:9:4"}],"id":1103,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1119,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1104,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":1105,"name":"VariableDeclaration","src":"3434:7:4"}],"id":1106,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1107,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1102,"type":"uint256","value":"b"},"id":1108,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1109,"name":"Literal","src":"3466:1:4"}],"id":1110,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":1111,"name":"Literal","src":"3469:26:4"}],"id":1112,"name":"FunctionCall","src":"3453:43:4"}],"id":1113,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":1106},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1100,"type":"uint256","value":"a"},"id":1114,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1102,"type":"uint256","value":"b"},"id":1115,"name":"Identifier","src":"3517:1:4"}],"id":1116,"name":"BinaryOperation","src":"3513:5:4"}],"id":1117,"name":"Return","src":"3506:12:4"}],"id":1118,"name":"Block","src":"3443:82:4"}],"id":1119,"name":"FunctionDefinition","src":"3376:149:4"}],"id":1120,"name":"ContractDefinition","src":"589:2938:4"}],"id":1121,"name":"SourceUnit","src":"0:3528:4"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[4138]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4003,"name":"PragmaDirective","src":"1400:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4138],"name":"ENS","scope":4139},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4011,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4004,"name":"ElementaryTypeName","src":"1534:7:5"}],"id":4005,"name":"VariableDeclaration","src":"1534:21:5"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":4011,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4006,"name":"ElementaryTypeName","src":"1557:7:5"}],"id":4007,"name":"VariableDeclaration","src":"1557:22:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4011,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4008,"name":"ElementaryTypeName","src":"1581:7:5"}],"id":4009,"name":"VariableDeclaration","src":"1581:14:5"}],"id":4010,"name":"ParameterList","src":"1533:63:5"}],"id":4011,"name":"EventDefinition","src":"1519:78:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4017,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4012,"name":"ElementaryTypeName","src":"1695:7:5"}],"id":4013,"name":"VariableDeclaration","src":"1695:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4017,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4014,"name":"ElementaryTypeName","src":"1718:7:5"}],"id":4015,"name":"VariableDeclaration","src":"1718:14:5"}],"id":4016,"name":"ParameterList","src":"1694:39:5"}],"id":4017,"name":"EventDefinition","src":"1680:54:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4023,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4018,"name":"ElementaryTypeName","src":"1810:7:5"}],"id":4019,"name":"VariableDeclaration","src":"1810:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":4023,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4020,"name":"ElementaryTypeName","src":"1833:7:5"}],"id":4021,"name":"VariableDeclaration","src":"1833:17:5"}],"id":4022,"name":"ParameterList","src":"1809:42:5"}],"id":4023,"name":"EventDefinition","src":"1792:60:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4029,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4024,"name":"ElementaryTypeName","src":"1916:7:5"}],"id":4025,"name":"VariableDeclaration","src":"1916:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":4029,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4026,"name":"ElementaryTypeName","src":"1939:6:5"}],"id":4027,"name":"VariableDeclaration","src":"1939:11:5"}],"id":4028,"name":"ParameterList","src":"1915:36:5"}],"id":4029,"name":"EventDefinition","src":"1903:49:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":4037,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4030,"name":"ElementaryTypeName","src":"2031:7:5"}],"id":4031,"name":"VariableDeclaration","src":"2031:22:5"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":4037,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4032,"name":"ElementaryTypeName","src":"2055:7:5"}],"id":4033,"name":"VariableDeclaration","src":"2055:25:5"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":4037,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4034,"name":"ElementaryTypeName","src":"2082:4:5"}],"id":4035,"name":"VariableDeclaration","src":"2082:14:5"}],"id":4036,"name":"ParameterList","src":"2030:67:5"}],"id":4037,"name":"EventDefinition","src":"2010:88:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4048,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4038,"name":"ElementaryTypeName","src":"2123:7:5"}],"id":4039,"name":"VariableDeclaration","src":"2123:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":4048,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4040,"name":"ElementaryTypeName","src":"2138:7:5"}],"id":4041,"name":"VariableDeclaration","src":"2138:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":4048,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4042,"name":"ElementaryTypeName","src":"2154:7:5"}],"id":4043,"name":"VariableDeclaration","src":"2154:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":4048,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4044,"name":"ElementaryTypeName","src":"2173:6:5"}],"id":4045,"name":"VariableDeclaration","src":"2173:11:5"}],"id":4046,"name":"ParameterList","src":"2122:63:5"},{"attributes":{"parameters":[null]},"children":[],"id":4047,"name":"ParameterList","src":"2194:0:5"}],"id":4048,"name":"FunctionDefinition","src":"2104:91:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4061,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4049,"name":"ElementaryTypeName","src":"2226:7:5"}],"id":4050,"name":"VariableDeclaration","src":"2226:13:5"},{"attributes":{"constant":false,"name":"_label","scope":4061,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4051,"name":"ElementaryTypeName","src":"2241:7:5"}],"id":4052,"name":"VariableDeclaration","src":"2241:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":4061,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4053,"name":"ElementaryTypeName","src":"2257:7:5"}],"id":4054,"name":"VariableDeclaration","src":"2257:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":4061,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4055,"name":"ElementaryTypeName","src":"2273:7:5"}],"id":4056,"name":"VariableDeclaration","src":"2273:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":4061,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4057,"name":"ElementaryTypeName","src":"2292:6:5"}],"id":4058,"name":"VariableDeclaration","src":"2292:11:5"}],"id":4059,"name":"ParameterList","src":"2225:79:5"},{"attributes":{"parameters":[null]},"children":[],"id":4060,"name":"ParameterList","src":"2313:0:5"}],"id":4061,"name":"FunctionDefinition","src":"2200:114:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4062,"name":"ElementaryTypeName","src":"2344:7:5"}],"id":4063,"name":"VariableDeclaration","src":"2344:13:5"},{"attributes":{"constant":false,"name":"_label","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4064,"name":"ElementaryTypeName","src":"2359:7:5"}],"id":4065,"name":"VariableDeclaration","src":"2359:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":4072,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4066,"name":"ElementaryTypeName","src":"2375:7:5"}],"id":4067,"name":"VariableDeclaration","src":"2375:14:5"}],"id":4068,"name":"ParameterList","src":"2343:47:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4069,"name":"ElementaryTypeName","src":"2408:7:5"}],"id":4070,"name":"VariableDeclaration","src":"2408:7:5"}],"id":4071,"name":"ParameterList","src":"2407:9:5"}],"id":4072,"name":"FunctionDefinition","src":"2319:98:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4073,"name":"ElementaryTypeName","src":"2443:7:5"}],"id":4074,"name":"VariableDeclaration","src":"2443:13:5"},{"attributes":{"constant":false,"name":"_resolver","scope":4079,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4075,"name":"ElementaryTypeName","src":"2458:7:5"}],"id":4076,"name":"VariableDeclaration","src":"2458:17:5"}],"id":4077,"name":"ParameterList","src":"2442:34:5"},{"attributes":{"parameters":[null]},"children":[],"id":4078,"name":"ParameterList","src":"2485:0:5"}],"id":4079,"name":"FunctionDefinition","src":"2422:64:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4086,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4080,"name":"ElementaryTypeName","src":"2509:7:5"}],"id":4081,"name":"VariableDeclaration","src":"2509:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":4086,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4082,"name":"ElementaryTypeName","src":"2524:7:5"}],"id":4083,"name":"VariableDeclaration","src":"2524:14:5"}],"id":4084,"name":"ParameterList","src":"2508:31:5"},{"attributes":{"parameters":[null]},"children":[],"id":4085,"name":"ParameterList","src":"2548:0:5"}],"id":4086,"name":"FunctionDefinition","src":"2491:58:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4093,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4087,"name":"ElementaryTypeName","src":"2570:7:5"}],"id":4088,"name":"VariableDeclaration","src":"2570:13:5"},{"attributes":{"constant":false,"name":"_ttl","scope":4093,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4089,"name":"ElementaryTypeName","src":"2585:6:5"}],"id":4090,"name":"VariableDeclaration","src":"2585:11:5"}],"id":4091,"name":"ParameterList","src":"2569:28:5"},{"attributes":{"parameters":[null]},"children":[],"id":4092,"name":"ParameterList","src":"2606:0:5"}],"id":4093,"name":"FunctionDefinition","src":"2554:53:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":4100,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4094,"name":"ElementaryTypeName","src":"2639:7:5"}],"id":4095,"name":"VariableDeclaration","src":"2639:17:5"},{"attributes":{"constant":false,"name":"_approved","scope":4100,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4096,"name":"ElementaryTypeName","src":"2658:4:5"}],"id":4097,"name":"VariableDeclaration","src":"2658:14:5"}],"id":4098,"name":"ParameterList","src":"2638:35:5"},{"attributes":{"parameters":[null]},"children":[],"id":4099,"name":"ParameterList","src":"2682:0:5"}],"id":4100,"name":"FunctionDefinition","src":"2612:71:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4107,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4101,"name":"ElementaryTypeName","src":"2703:7:5"}],"id":4102,"name":"VariableDeclaration","src":"2703:13:5"}],"id":4103,"name":"ParameterList","src":"2702:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4107,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4104,"name":"ElementaryTypeName","src":"2741:7:5"}],"id":4105,"name":"VariableDeclaration","src":"2741:7:5"}],"id":4106,"name":"ParameterList","src":"2740:9:5"}],"id":4107,"name":"FunctionDefinition","src":"2688:62:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4114,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4108,"name":"ElementaryTypeName","src":"2773:7:5"}],"id":4109,"name":"VariableDeclaration","src":"2773:13:5"}],"id":4110,"name":"ParameterList","src":"2772:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4114,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4111,"name":"ElementaryTypeName","src":"2811:7:5"}],"id":4112,"name":"VariableDeclaration","src":"2811:7:5"}],"id":4113,"name":"ParameterList","src":"2810:9:5"}],"id":4114,"name":"FunctionDefinition","src":"2755:65:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4121,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4115,"name":"ElementaryTypeName","src":"2838:7:5"}],"id":4116,"name":"VariableDeclaration","src":"2838:13:5"}],"id":4117,"name":"ParameterList","src":"2837:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4121,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4118,"name":"ElementaryTypeName","src":"2876:6:5"}],"id":4119,"name":"VariableDeclaration","src":"2876:6:5"}],"id":4120,"name":"ParameterList","src":"2875:8:5"}],"id":4121,"name":"FunctionDefinition","src":"2825:59:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4128,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4122,"name":"ElementaryTypeName","src":"2911:7:5"}],"id":4123,"name":"VariableDeclaration","src":"2911:13:5"}],"id":4124,"name":"ParameterList","src":"2910:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4128,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4125,"name":"ElementaryTypeName","src":"2949:4:5"}],"id":4126,"name":"VariableDeclaration","src":"2949:4:5"}],"id":4127,"name":"ParameterList","src":"2948:6:5"}],"id":4128,"name":"FunctionDefinition","src":"2889:66:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":4137,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4129,"name":"ElementaryTypeName","src":"2986:7:5"}],"id":4130,"name":"VariableDeclaration","src":"2986:14:5"},{"attributes":{"constant":false,"name":"_operator","scope":4137,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4131,"name":"ElementaryTypeName","src":"3002:7:5"}],"id":4132,"name":"VariableDeclaration","src":"3002:17:5"}],"id":4133,"name":"ParameterList","src":"2985:35:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4137,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4134,"name":"ElementaryTypeName","src":"3044:4:5"}],"id":4135,"name":"VariableDeclaration","src":"3044:4:5"}],"id":4136,"name":"ParameterList","src":"3043:6:5"}],"id":4137,"name":"FunctionDefinition","src":"2960:90:5"}],"id":4138,"name":"ContractDefinition","src":"1425:1627:5"}],"id":4139,"name":"SourceUnit","src":"1400:1653:5"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[7026]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":6307,"name":"PragmaDirective","src":"0:24:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[7026],"name":"ENSBytesUtils","scope":7027},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6329,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6308,"name":"ElementaryTypeName","src":"325:5:6"}],"id":6309,"name":"VariableDeclaration","src":"325:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6310,"name":"ElementaryTypeName","src":"344:4:6"}],"id":6311,"name":"VariableDeclaration","src":"344:11:6"},{"attributes":{"constant":false,"name":"len","scope":6329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6312,"name":"ElementaryTypeName","src":"357:4:6"}],"id":6313,"name":"VariableDeclaration","src":"357:8:6"}],"id":6314,"name":"ParameterList","src":"324:42:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6329,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6315,"name":"ElementaryTypeName","src":"390:7:6"}],"id":6316,"name":"VariableDeclaration","src":"390:11:6"}],"id":6317,"name":"ParameterList","src":"389:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6318,"name":"Identifier","src":"413:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6311,"type":"uint256","value":"offset"},"id":6319,"name":"Identifier","src":"421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6313,"type":"uint256","value":"len"},"id":6320,"name":"Identifier","src":"430:3:6"}],"id":6321,"name":"BinaryOperation","src":"421:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6309,"type":"bytes memory","value":"self"},"id":6322,"name":"Identifier","src":"437:4:6"}],"id":6323,"name":"MemberAccess","src":"437:11:6"}],"id":6324,"name":"BinaryOperation","src":"421:27:6"}],"id":6325,"name":"FunctionCall","src":"413:36:6"}],"id":6326,"name":"ExpressionStatement","src":"413:36:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6316,"isOffset":false,"isSlot":false,"src":"482:3:6","valueSize":1}},{"self":{"declaration":6309,"isOffset":false,"isSlot":false,"src":"507:4:6","valueSize":1}},{"offset":{"declaration":6311,"isOffset":false,"isSlot":false,"src":"518:6:6","valueSize":1}},{"len":{"declaration":6313,"isOffset":false,"isSlot":false,"src":"527:3:6","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":6327,"name":"InlineAssembly","src":"459:82:6"}],"id":6328,"name":"Block","src":"403:144:6"}],"id":6329,"name":"FunctionDefinition","src":"309:238:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6350,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6330,"name":"ElementaryTypeName","src":"920:5:6"}],"id":6331,"name":"VariableDeclaration","src":"920:17:6"},{"attributes":{"constant":false,"name":"other","scope":6350,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6332,"name":"ElementaryTypeName","src":"939:5:6"}],"id":6333,"name":"VariableDeclaration","src":"939:18:6"}],"id":6334,"name":"ParameterList","src":"919:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6350,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6335,"name":"ElementaryTypeName","src":"982:3:6"}],"id":6336,"name":"VariableDeclaration","src":"982:3:6"}],"id":6337,"name":"ParameterList","src":"981:5:6"},{"children":[{"attributes":{"functionReturnParameters":6337},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6350,6482],"referencedDeclaration":6482,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":6338,"name":"Identifier","src":"1004:7:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6331,"type":"bytes memory","value":"self"},"id":6339,"name":"Identifier","src":"1012:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6340,"name":"Literal","src":"1018:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6331,"type":"bytes memory","value":"self"},"id":6341,"name":"Identifier","src":"1021:4:6"}],"id":6342,"name":"MemberAccess","src":"1021:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6333,"type":"bytes memory","value":"other"},"id":6343,"name":"Identifier","src":"1034:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6344,"name":"Literal","src":"1041:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6333,"type":"bytes memory","value":"other"},"id":6345,"name":"Identifier","src":"1044:5:6"}],"id":6346,"name":"MemberAccess","src":"1044:12:6"}],"id":6347,"name":"FunctionCall","src":"1004:53:6"}],"id":6348,"name":"Return","src":"997:60:6"}],"id":6349,"name":"Block","src":"987:77:6"}],"id":6350,"name":"FunctionDefinition","src":"903:161:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6482,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6351,"name":"ElementaryTypeName","src":"1694:5:6"}],"id":6352,"name":"VariableDeclaration","src":"1694:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6482,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6353,"name":"ElementaryTypeName","src":"1713:4:6"}],"id":6354,"name":"VariableDeclaration","src":"1713:11:6"},{"attributes":{"constant":false,"name":"len","scope":6482,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6355,"name":"ElementaryTypeName","src":"1726:4:6"}],"id":6356,"name":"VariableDeclaration","src":"1726:8:6"},{"attributes":{"constant":false,"name":"other","scope":6482,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6357,"name":"ElementaryTypeName","src":"1736:5:6"}],"id":6358,"name":"VariableDeclaration","src":"1736:18:6"},{"attributes":{"constant":false,"name":"otheroffset","scope":6482,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6359,"name":"ElementaryTypeName","src":"1756:4:6"}],"id":6360,"name":"VariableDeclaration","src":"1756:16:6"},{"attributes":{"constant":false,"name":"otherlen","scope":6482,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6361,"name":"ElementaryTypeName","src":"1774:4:6"}],"id":6362,"name":"VariableDeclaration","src":"1774:13:6"}],"id":6363,"name":"ParameterList","src":"1693:95:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6482,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6364,"name":"ElementaryTypeName","src":"1812:3:6"}],"id":6365,"name":"VariableDeclaration","src":"1812:3:6"}],"id":6366,"name":"ParameterList","src":"1811:5:6"},{"children":[{"attributes":{"assignments":[6368]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6367,"name":"ElementaryTypeName","src":"1827:4:6"}],"id":6368,"name":"VariableDeclaration","src":"1827:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6356,"type":"uint256","value":"len"},"id":6369,"name":"Identifier","src":"1843:3:6"}],"id":6370,"name":"VariableDeclarationStatement","src":"1827:19:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint256","value":"otherlen"},"id":6371,"name":"Identifier","src":"1860:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6356,"type":"uint256","value":"len"},"id":6372,"name":"Identifier","src":"1871:3:6"}],"id":6373,"name":"BinaryOperation","src":"1860:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"shortest"},"id":6374,"name":"Identifier","src":"1884:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint256","value":"otherlen"},"id":6375,"name":"Identifier","src":"1895:8:6"}],"id":6376,"name":"Assignment","src":"1884:19:6"}],"id":6377,"name":"ExpressionStatement","src":"1884:19:6"}],"id":6378,"name":"IfStatement","src":"1856:47:6"},{"attributes":{"assignments":[6380],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6379,"name":"ElementaryTypeName","src":"1914:4:6"}],"id":6380,"name":"VariableDeclaration","src":"1914:12:6"}],"id":6381,"name":"VariableDeclarationStatement","src":"1914:12:6"},{"attributes":{"assignments":[6383],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6382,"name":"ElementaryTypeName","src":"1936:4:6"}],"id":6383,"name":"VariableDeclaration","src":"1936:13:6"}],"id":6384,"name":"VariableDeclarationStatement","src":"1936:13:6"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":6380,"isOffset":false,"isSlot":false,"src":"1983:7:6","valueSize":1}},{"otherptr":{"declaration":6383,"isOffset":false,"isSlot":false,"src":"2033:8:6","valueSize":1}},{"offset":{"declaration":6354,"isOffset":false,"isSlot":false,"src":"2008:6:6","valueSize":1}},{"self":{"declaration":6352,"isOffset":false,"isSlot":false,"src":"1998:4:6","valueSize":1}},{"otheroffset":{"declaration":6360,"isOffset":false,"isSlot":false,"src":"2060:11:6","valueSize":1}},{"other":{"declaration":6358,"isOffset":false,"isSlot":false,"src":"2049:5:6","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":6385,"name":"InlineAssembly","src":"1960:127:6"},{"children":[{"attributes":{"assignments":[6387]},"children":[{"attributes":{"constant":false,"name":"idx","scope":6472,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6386,"name":"ElementaryTypeName","src":"2101:4:6"}],"id":6387,"name":"VariableDeclaration","src":"2101:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6388,"name":"Literal","src":"2112:1:6"}],"id":6389,"name":"VariableDeclarationStatement","src":"2101:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"uint256","value":"idx"},"id":6390,"name":"Identifier","src":"2115:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"shortest"},"id":6391,"name":"Identifier","src":"2121:8:6"}],"id":6392,"name":"BinaryOperation","src":"2115:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"uint256","value":"idx"},"id":6393,"name":"Identifier","src":"2131:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6394,"name":"Literal","src":"2138:2:6"}],"id":6395,"name":"Assignment","src":"2131:9:6"}],"id":6396,"name":"ExpressionStatement","src":"2131:9:6"},{"children":[{"attributes":{"assignments":[6398],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":6471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6397,"name":"ElementaryTypeName","src":"2156:4:6"}],"id":6398,"name":"VariableDeclaration","src":"2156:6:6"}],"id":6399,"name":"VariableDeclarationStatement","src":"2156:6:6"},{"attributes":{"assignments":[6401],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":6471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6400,"name":"ElementaryTypeName","src":"2176:4:6"}],"id":6401,"name":"VariableDeclaration","src":"2176:6:6"}],"id":6402,"name":"VariableDeclarationStatement","src":"2176:6:6"},{"attributes":{"externalReferences":[{"a":{"declaration":6398,"isOffset":false,"isSlot":false,"src":"2223:1:6","valueSize":1}},{"selfptr":{"declaration":6380,"isOffset":false,"isSlot":false,"src":"2234:7:6","valueSize":1}},{"b":{"declaration":6401,"isOffset":false,"isSlot":false,"src":"2259:1:6","valueSize":1}},{"otherptr":{"declaration":6383,"isOffset":false,"isSlot":false,"src":"2270:8:6","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":6403,"name":"InlineAssembly","src":"2196:97:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6398,"type":"uint256","value":"a"},"id":6404,"name":"Identifier","src":"2310:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6401,"type":"uint256","value":"b"},"id":6405,"name":"Identifier","src":"2315:1:6"}],"id":6406,"name":"BinaryOperation","src":"2310:6:6"},{"children":[{"attributes":{"assignments":[6408],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":6461,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6407,"name":"ElementaryTypeName","src":"2397:4:6"}],"id":6408,"name":"VariableDeclaration","src":"2397:9:6"}],"id":6409,"name":"VariableDeclarationStatement","src":"2397:9:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"shortest"},"id":6410,"name":"Identifier","src":"2428:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6411,"name":"Literal","src":"2439:2:6"}],"id":6412,"name":"BinaryOperation","src":"2428:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6408,"type":"uint256","value":"mask"},"id":6413,"name":"Identifier","src":"2465:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":6414,"name":"ElementaryTypeNameExpression","src":"2472:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6415,"name":"Literal","src":"2482:1:6"}],"id":6416,"name":"UnaryOperation","src":"2480:3:6"}],"id":6417,"name":"FunctionCall","src":"2472:12:6"}],"id":6418,"name":"Assignment","src":"2465:19:6"}],"id":6419,"name":"ExpressionStatement","src":"2465:19:6"}],"id":6420,"name":"Block","src":"2443:80:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6408,"type":"uint256","value":"mask"},"id":6421,"name":"Identifier","src":"2551:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6422,"name":"Literal","src":"2560:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6423,"name":"Literal","src":"2566:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6424,"name":"Literal","src":"2571:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"shortest"},"id":6425,"name":"Identifier","src":"2576:8:6"}],"id":6426,"name":"BinaryOperation","src":"2571:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"uint256","value":"idx"},"id":6427,"name":"Identifier","src":"2587:3:6"}],"id":6428,"name":"BinaryOperation","src":"2571:19:6"}],"id":6429,"name":"TupleExpression","src":"2570:21:6"}],"id":6430,"name":"BinaryOperation","src":"2566:25:6"}],"id":6431,"name":"TupleExpression","src":"2565:27:6"}],"id":6432,"name":"BinaryOperation","src":"2560:32:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6433,"name":"Literal","src":"2595:1:6"}],"id":6434,"name":"BinaryOperation","src":"2560:36:6"}],"id":6435,"name":"TupleExpression","src":"2559:38:6"}],"id":6436,"name":"UnaryOperation","src":"2558:39:6"}],"id":6437,"name":"Assignment","src":"2551:46:6"}],"id":6438,"name":"ExpressionStatement","src":"2551:46:6"}],"id":6439,"name":"Block","src":"2529:87:6"}],"id":6440,"name":"IfStatement","src":"2424:192:6"},{"attributes":{"assignments":[6442]},"children":[{"attributes":{"constant":false,"name":"diff","scope":6461,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6441,"name":"ElementaryTypeName","src":"2633:4:6"}],"id":6442,"name":"VariableDeclaration","src":"2633:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6398,"type":"uint256","value":"a"},"id":6443,"name":"Identifier","src":"2646:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6408,"type":"uint256","value":"mask"},"id":6444,"name":"Identifier","src":"2650:4:6"}],"id":6445,"name":"BinaryOperation","src":"2646:8:6"}],"id":6446,"name":"TupleExpression","src":"2645:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6401,"type":"uint256","value":"b"},"id":6447,"name":"Identifier","src":"2659:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6408,"type":"uint256","value":"mask"},"id":6448,"name":"Identifier","src":"2663:4:6"}],"id":6449,"name":"BinaryOperation","src":"2659:8:6"}],"id":6450,"name":"TupleExpression","src":"2658:10:6"}],"id":6451,"name":"BinaryOperation","src":"2645:23:6"}],"id":6452,"name":"VariableDeclarationStatement","src":"2633:35:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6442,"type":"uint256","value":"diff"},"id":6453,"name":"Identifier","src":"2690:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6454,"name":"Literal","src":"2698:1:6"}],"id":6455,"name":"BinaryOperation","src":"2690:9:6"},{"attributes":{"functionReturnParameters":6366},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6456,"name":"ElementaryTypeNameExpression","src":"2724:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6442,"type":"uint256","value":"diff"},"id":6457,"name":"Identifier","src":"2728:4:6"}],"id":6458,"name":"FunctionCall","src":"2724:9:6"}],"id":6459,"name":"Return","src":"2717:16:6"}],"id":6460,"name":"IfStatement","src":"2686:47:6"}],"id":6461,"name":"Block","src":"2318:430:6"}],"id":6462,"name":"IfStatement","src":"2306:442:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"uint256","value":"selfptr"},"id":6463,"name":"Identifier","src":"2761:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6464,"name":"Literal","src":"2772:2:6"}],"id":6465,"name":"Assignment","src":"2761:13:6"}],"id":6466,"name":"ExpressionStatement","src":"2761:13:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6383,"type":"uint256","value":"otherptr"},"id":6467,"name":"Identifier","src":"2788:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6468,"name":"Literal","src":"2800:2:6"}],"id":6469,"name":"Assignment","src":"2788:14:6"}],"id":6470,"name":"ExpressionStatement","src":"2788:14:6"}],"id":6471,"name":"Block","src":"2142:671:6"}],"id":6472,"name":"ForStatement","src":"2096:717:6"},{"attributes":{"functionReturnParameters":6366},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6473,"name":"ElementaryTypeNameExpression","src":"2830:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6356,"type":"uint256","value":"len"},"id":6474,"name":"Identifier","src":"2834:3:6"}],"id":6475,"name":"FunctionCall","src":"2830:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6476,"name":"ElementaryTypeNameExpression","src":"2841:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint256","value":"otherlen"},"id":6477,"name":"Identifier","src":"2845:8:6"}],"id":6478,"name":"FunctionCall","src":"2841:13:6"}],"id":6479,"name":"BinaryOperation","src":"2830:24:6"}],"id":6480,"name":"Return","src":"2823:31:6"}],"id":6481,"name":"Block","src":"1817:1044:6"}],"id":6482,"name":"FunctionDefinition","src":"1677:1184:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6510,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6483,"name":"ElementaryTypeName","src":"3295:5:6"}],"id":6484,"name":"VariableDeclaration","src":"3295:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6510,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6485,"name":"ElementaryTypeName","src":"3314:4:6"}],"id":6486,"name":"VariableDeclaration","src":"3314:11:6"},{"attributes":{"constant":false,"name":"other","scope":6510,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6487,"name":"ElementaryTypeName","src":"3327:5:6"}],"id":6488,"name":"VariableDeclaration","src":"3327:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":6510,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6489,"name":"ElementaryTypeName","src":"3347:4:6"}],"id":6490,"name":"VariableDeclaration","src":"3347:16:6"},{"attributes":{"constant":false,"name":"len","scope":6510,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6491,"name":"ElementaryTypeName","src":"3365:4:6"}],"id":6492,"name":"VariableDeclaration","src":"3365:8:6"}],"id":6493,"name":"ParameterList","src":"3294:80:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6510,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6494,"name":"ElementaryTypeName","src":"3398:4:6"}],"id":6495,"name":"VariableDeclaration","src":"3398:4:6"}],"id":6496,"name":"ParameterList","src":"3397:6:6"},{"children":[{"attributes":{"functionReturnParameters":6496},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6329,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6497,"name":"Identifier","src":"3421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6484,"type":"bytes memory","value":"self"},"id":6498,"name":"Identifier","src":"3428:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6486,"type":"uint256","value":"offset"},"id":6499,"name":"Identifier","src":"3434:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6492,"type":"uint256","value":"len"},"id":6500,"name":"Identifier","src":"3442:3:6"}],"id":6501,"name":"FunctionCall","src":"3421:25:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6329,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6502,"name":"Identifier","src":"3450:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6488,"type":"bytes memory","value":"other"},"id":6503,"name":"Identifier","src":"3457:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6490,"type":"uint256","value":"otherOffset"},"id":6504,"name":"Identifier","src":"3464:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6492,"type":"uint256","value":"len"},"id":6505,"name":"Identifier","src":"3477:3:6"}],"id":6506,"name":"FunctionCall","src":"3450:31:6"}],"id":6507,"name":"BinaryOperation","src":"3421:60:6"}],"id":6508,"name":"Return","src":"3414:67:6"}],"id":6509,"name":"Block","src":"3404:84:6"}],"id":6510,"name":"FunctionDefinition","src":"3279:209:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6542,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6511,"name":"ElementaryTypeName","src":"3887:5:6"}],"id":6512,"name":"VariableDeclaration","src":"3887:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6542,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6513,"name":"ElementaryTypeName","src":"3906:4:6"}],"id":6514,"name":"VariableDeclaration","src":"3906:11:6"},{"attributes":{"constant":false,"name":"other","scope":6542,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6515,"name":"ElementaryTypeName","src":"3919:5:6"}],"id":6516,"name":"VariableDeclaration","src":"3919:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":6542,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6517,"name":"ElementaryTypeName","src":"3939:4:6"}],"id":6518,"name":"VariableDeclaration","src":"3939:16:6"}],"id":6519,"name":"ParameterList","src":"3886:70:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6542,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6520,"name":"ElementaryTypeName","src":"3980:4:6"}],"id":6521,"name":"VariableDeclaration","src":"3980:4:6"}],"id":6522,"name":"ParameterList","src":"3979:6:6"},{"children":[{"attributes":{"functionReturnParameters":6522},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6329,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6523,"name":"Identifier","src":"4003:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6512,"type":"bytes memory","value":"self"},"id":6524,"name":"Identifier","src":"4010:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6514,"type":"uint256","value":"offset"},"id":6525,"name":"Identifier","src":"4016:6:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6512,"type":"bytes memory","value":"self"},"id":6526,"name":"Identifier","src":"4024:4:6"}],"id":6527,"name":"MemberAccess","src":"4024:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6514,"type":"uint256","value":"offset"},"id":6528,"name":"Identifier","src":"4038:6:6"}],"id":6529,"name":"BinaryOperation","src":"4024:20:6"}],"id":6530,"name":"FunctionCall","src":"4003:42:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6329,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6531,"name":"Identifier","src":"4049:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes memory","value":"other"},"id":6532,"name":"Identifier","src":"4056:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6518,"type":"uint256","value":"otherOffset"},"id":6533,"name":"Identifier","src":"4063:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes memory","value":"other"},"id":6534,"name":"Identifier","src":"4076:5:6"}],"id":6535,"name":"MemberAccess","src":"4076:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6518,"type":"uint256","value":"otherOffset"},"id":6536,"name":"Identifier","src":"4091:11:6"}],"id":6537,"name":"BinaryOperation","src":"4076:26:6"}],"id":6538,"name":"FunctionCall","src":"4049:54:6"}],"id":6539,"name":"BinaryOperation","src":"4003:100:6"}],"id":6540,"name":"Return","src":"3996:107:6"}],"id":6541,"name":"Block","src":"3986:124:6"}],"id":6542,"name":"FunctionDefinition","src":"3871:239:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6571,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6543,"name":"ElementaryTypeName","src":"4478:5:6"}],"id":6544,"name":"VariableDeclaration","src":"4478:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6571,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6545,"name":"ElementaryTypeName","src":"4497:4:6"}],"id":6546,"name":"VariableDeclaration","src":"4497:11:6"},{"attributes":{"constant":false,"name":"other","scope":6571,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6547,"name":"ElementaryTypeName","src":"4510:5:6"}],"id":6548,"name":"VariableDeclaration","src":"4510:18:6"}],"id":6549,"name":"ParameterList","src":"4477:52:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6571,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6550,"name":"ElementaryTypeName","src":"4553:4:6"}],"id":6551,"name":"VariableDeclaration","src":"4553:4:6"}],"id":6552,"name":"ParameterList","src":"4552:6:6"},{"children":[{"attributes":{"functionReturnParameters":6552},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6544,"type":"bytes memory","value":"self"},"id":6553,"name":"Identifier","src":"4576:4:6"}],"id":6554,"name":"MemberAccess","src":"4576:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6546,"type":"uint256","value":"offset"},"id":6555,"name":"Identifier","src":"4591:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6548,"type":"bytes memory","value":"other"},"id":6556,"name":"Identifier","src":"4600:5:6"}],"id":6557,"name":"MemberAccess","src":"4600:12:6"}],"id":6558,"name":"BinaryOperation","src":"4591:21:6"}],"id":6559,"name":"BinaryOperation","src":"4576:36:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6510,6542,6571,6596],"referencedDeclaration":6510,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":6560,"name":"Identifier","src":"4616:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6544,"type":"bytes memory","value":"self"},"id":6561,"name":"Identifier","src":"4623:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6546,"type":"uint256","value":"offset"},"id":6562,"name":"Identifier","src":"4629:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6548,"type":"bytes memory","value":"other"},"id":6563,"name":"Identifier","src":"4637:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6564,"name":"Literal","src":"4644:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6548,"type":"bytes memory","value":"other"},"id":6565,"name":"Identifier","src":"4647:5:6"}],"id":6566,"name":"MemberAccess","src":"4647:12:6"}],"id":6567,"name":"FunctionCall","src":"4616:44:6"}],"id":6568,"name":"BinaryOperation","src":"4576:84:6"}],"id":6569,"name":"Return","src":"4569:91:6"}],"id":6570,"name":"Block","src":"4559:108:6"}],"id":6571,"name":"FunctionDefinition","src":"4462:205:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6596,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6572,"name":"ElementaryTypeName","src":"4931:5:6"}],"id":6573,"name":"VariableDeclaration","src":"4931:17:6"},{"attributes":{"constant":false,"name":"other","scope":6596,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6574,"name":"ElementaryTypeName","src":"4950:5:6"}],"id":6575,"name":"VariableDeclaration","src":"4950:18:6"}],"id":6576,"name":"ParameterList","src":"4930:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6596,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6577,"name":"ElementaryTypeName","src":"4992:4:6"}],"id":6578,"name":"VariableDeclaration","src":"4992:4:6"}],"id":6579,"name":"ParameterList","src":"4991:6:6"},{"children":[{"attributes":{"functionReturnParameters":6579},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6573,"type":"bytes memory","value":"self"},"id":6580,"name":"Identifier","src":"5015:4:6"}],"id":6581,"name":"MemberAccess","src":"5015:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6575,"type":"bytes memory","value":"other"},"id":6582,"name":"Identifier","src":"5030:5:6"}],"id":6583,"name":"MemberAccess","src":"5030:12:6"}],"id":6584,"name":"BinaryOperation","src":"5015:27:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6510,6542,6571,6596],"referencedDeclaration":6510,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":6585,"name":"Identifier","src":"5046:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6573,"type":"bytes memory","value":"self"},"id":6586,"name":"Identifier","src":"5053:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6587,"name":"Literal","src":"5059:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6575,"type":"bytes memory","value":"other"},"id":6588,"name":"Identifier","src":"5062:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6589,"name":"Literal","src":"5069:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6573,"type":"bytes memory","value":"self"},"id":6590,"name":"Identifier","src":"5072:4:6"}],"id":6591,"name":"MemberAccess","src":"5072:11:6"}],"id":6592,"name":"FunctionCall","src":"5046:38:6"}],"id":6593,"name":"BinaryOperation","src":"5015:69:6"}],"id":6594,"name":"Return","src":"5008:76:6"}],"id":6595,"name":"Block","src":"4998:93:6"}],"id":6596,"name":"FunctionDefinition","src":"4915:176:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6612,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6597,"name":"ElementaryTypeName","src":"5352:5:6"}],"id":6598,"name":"VariableDeclaration","src":"5352:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6612,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6599,"name":"ElementaryTypeName","src":"5371:4:6"}],"id":6600,"name":"VariableDeclaration","src":"5371:8:6"}],"id":6601,"name":"ParameterList","src":"5351:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6612,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6602,"name":"ElementaryTypeName","src":"5404:5:6"}],"id":6603,"name":"VariableDeclaration","src":"5404:9:6"}],"id":6604,"name":"ParameterList","src":"5403:11:6"},{"children":[{"attributes":{"functionReturnParameters":6604},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6605,"name":"ElementaryTypeNameExpression","src":"5432:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6598,"type":"bytes memory","value":"self"},"id":6606,"name":"Identifier","src":"5438:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6600,"type":"uint256","value":"idx"},"id":6607,"name":"Identifier","src":"5443:3:6"}],"id":6608,"name":"IndexAccess","src":"5438:9:6"}],"id":6609,"name":"FunctionCall","src":"5432:16:6"}],"id":6610,"name":"Return","src":"5425:23:6"}],"id":6611,"name":"Block","src":"5415:40:6"}],"id":6612,"name":"FunctionDefinition","src":"5333:122:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6632,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6613,"name":"ElementaryTypeName","src":"5719:5:6"}],"id":6614,"name":"VariableDeclaration","src":"5719:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6632,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6615,"name":"ElementaryTypeName","src":"5738:4:6"}],"id":6616,"name":"VariableDeclaration","src":"5738:8:6"}],"id":6617,"name":"ParameterList","src":"5718:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6632,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6618,"name":"ElementaryTypeName","src":"5771:6:6"}],"id":6619,"name":"VariableDeclaration","src":"5771:10:6"}],"id":6620,"name":"ParameterList","src":"5770:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6621,"name":"Identifier","src":"5793:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6616,"type":"uint256","value":"idx"},"id":6622,"name":"Identifier","src":"5801:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6623,"name":"Literal","src":"5807:1:6"}],"id":6624,"name":"BinaryOperation","src":"5801:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6614,"type":"bytes memory","value":"self"},"id":6625,"name":"Identifier","src":"5812:4:6"}],"id":6626,"name":"MemberAccess","src":"5812:11:6"}],"id":6627,"name":"BinaryOperation","src":"5801:22:6"}],"id":6628,"name":"FunctionCall","src":"5793:31:6"}],"id":6629,"name":"ExpressionStatement","src":"5793:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6619,"isOffset":false,"isSlot":false,"src":"5857:3:6","valueSize":1}},{"self":{"declaration":6614,"isOffset":false,"isSlot":false,"src":"5882:4:6","valueSize":1}},{"idx":{"declaration":6616,"isOffset":false,"isSlot":false,"src":"5892:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":6630,"name":"InlineAssembly","src":"5834:82:6"}],"id":6631,"name":"Block","src":"5783:139:6"}],"id":6632,"name":"FunctionDefinition","src":"5699:223:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6652,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6633,"name":"ElementaryTypeName","src":"6186:5:6"}],"id":6634,"name":"VariableDeclaration","src":"6186:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6652,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6635,"name":"ElementaryTypeName","src":"6205:4:6"}],"id":6636,"name":"VariableDeclaration","src":"6205:8:6"}],"id":6637,"name":"ParameterList","src":"6185:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6652,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":6638,"name":"ElementaryTypeName","src":"6238:6:6"}],"id":6639,"name":"VariableDeclaration","src":"6238:10:6"}],"id":6640,"name":"ParameterList","src":"6237:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6641,"name":"Identifier","src":"6260:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6636,"type":"uint256","value":"idx"},"id":6642,"name":"Identifier","src":"6268:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6643,"name":"Literal","src":"6274:1:6"}],"id":6644,"name":"BinaryOperation","src":"6268:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6634,"type":"bytes memory","value":"self"},"id":6645,"name":"Identifier","src":"6279:4:6"}],"id":6646,"name":"MemberAccess","src":"6279:11:6"}],"id":6647,"name":"BinaryOperation","src":"6268:22:6"}],"id":6648,"name":"FunctionCall","src":"6260:31:6"}],"id":6649,"name":"ExpressionStatement","src":"6260:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6639,"isOffset":false,"isSlot":false,"src":"6324:3:6","valueSize":1}},{"self":{"declaration":6634,"isOffset":false,"isSlot":false,"src":"6349:4:6","valueSize":1}},{"idx":{"declaration":6636,"isOffset":false,"isSlot":false,"src":"6359:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":6650,"name":"InlineAssembly","src":"6301:86:6"}],"id":6651,"name":"Block","src":"6250:143:6"}],"id":6652,"name":"FunctionDefinition","src":"6166:227:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6672,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6653,"name":"ElementaryTypeName","src":"6632:5:6"}],"id":6654,"name":"VariableDeclaration","src":"6632:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6672,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6655,"name":"ElementaryTypeName","src":"6651:4:6"}],"id":6656,"name":"VariableDeclaration","src":"6651:8:6"}],"id":6657,"name":"ParameterList","src":"6631:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6672,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6658,"name":"ElementaryTypeName","src":"6684:7:6"}],"id":6659,"name":"VariableDeclaration","src":"6684:11:6"}],"id":6660,"name":"ParameterList","src":"6683:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6661,"name":"Identifier","src":"6707:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"uint256","value":"idx"},"id":6662,"name":"Identifier","src":"6715:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6663,"name":"Literal","src":"6721:2:6"}],"id":6664,"name":"BinaryOperation","src":"6715:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6654,"type":"bytes memory","value":"self"},"id":6665,"name":"Identifier","src":"6727:4:6"}],"id":6666,"name":"MemberAccess","src":"6727:11:6"}],"id":6667,"name":"BinaryOperation","src":"6715:23:6"}],"id":6668,"name":"FunctionCall","src":"6707:32:6"}],"id":6669,"name":"ExpressionStatement","src":"6707:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6659,"isOffset":false,"isSlot":false,"src":"6772:3:6","valueSize":1}},{"self":{"declaration":6654,"isOffset":false,"isSlot":false,"src":"6793:4:6","valueSize":1}},{"idx":{"declaration":6656,"isOffset":false,"isSlot":false,"src":"6804:3:6","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":6670,"name":"InlineAssembly","src":"6749:70:6"}],"id":6671,"name":"Block","src":"6697:128:6"}],"id":6672,"name":"FunctionDefinition","src":"6611:214:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6673,"name":"ElementaryTypeName","src":"7064:5:6"}],"id":6674,"name":"VariableDeclaration","src":"7064:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6675,"name":"ElementaryTypeName","src":"7083:4:6"}],"id":6676,"name":"VariableDeclaration","src":"7083:8:6"}],"id":6677,"name":"ParameterList","src":"7063:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6692,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":6678,"name":"ElementaryTypeName","src":"7116:7:6"}],"id":6679,"name":"VariableDeclaration","src":"7116:11:6"}],"id":6680,"name":"ParameterList","src":"7115:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6681,"name":"Identifier","src":"7139:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6676,"type":"uint256","value":"idx"},"id":6682,"name":"Identifier","src":"7147:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":6683,"name":"Literal","src":"7153:2:6"}],"id":6684,"name":"BinaryOperation","src":"7147:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6674,"type":"bytes memory","value":"self"},"id":6685,"name":"Identifier","src":"7159:4:6"}],"id":6686,"name":"MemberAccess","src":"7159:11:6"}],"id":6687,"name":"BinaryOperation","src":"7147:23:6"}],"id":6688,"name":"FunctionCall","src":"7139:32:6"}],"id":6689,"name":"ExpressionStatement","src":"7139:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6679,"isOffset":false,"isSlot":false,"src":"7204:3:6","valueSize":1}},{"self":{"declaration":6674,"isOffset":false,"isSlot":false,"src":"7229:4:6","valueSize":1}},{"idx":{"declaration":6676,"isOffset":false,"isSlot":false,"src":"7240:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":6690,"name":"InlineAssembly","src":"7181:143:6"}],"id":6691,"name":"Block","src":"7129:201:6"}],"id":6692,"name":"FunctionDefinition","src":"7043:287:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6720,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6693,"name":"ElementaryTypeName","src":"7606:5:6"}],"id":6694,"name":"VariableDeclaration","src":"7606:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6695,"name":"ElementaryTypeName","src":"7625:4:6"}],"id":6696,"name":"VariableDeclaration","src":"7625:8:6"},{"attributes":{"constant":false,"name":"len","scope":6720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6697,"name":"ElementaryTypeName","src":"7635:4:6"}],"id":6698,"name":"VariableDeclaration","src":"7635:8:6"}],"id":6699,"name":"ParameterList","src":"7605:39:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6720,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6700,"name":"ElementaryTypeName","src":"7668:7:6"}],"id":6701,"name":"VariableDeclaration","src":"7668:11:6"}],"id":6702,"name":"ParameterList","src":"7667:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6703,"name":"Identifier","src":"7691:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6698,"type":"uint256","value":"len"},"id":6704,"name":"Identifier","src":"7699:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6705,"name":"Literal","src":"7706:2:6"}],"id":6706,"name":"BinaryOperation","src":"7699:9:6"}],"id":6707,"name":"FunctionCall","src":"7691:18:6"}],"id":6708,"name":"ExpressionStatement","src":"7691:18:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6709,"name":"Identifier","src":"7719:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6696,"type":"uint256","value":"idx"},"id":6710,"name":"Identifier","src":"7727:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6698,"type":"uint256","value":"len"},"id":6711,"name":"Identifier","src":"7733:3:6"}],"id":6712,"name":"BinaryOperation","src":"7727:9:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6694,"type":"bytes memory","value":"self"},"id":6713,"name":"Identifier","src":"7740:4:6"}],"id":6714,"name":"MemberAccess","src":"7740:11:6"}],"id":6715,"name":"BinaryOperation","src":"7727:24:6"}],"id":6716,"name":"FunctionCall","src":"7719:33:6"}],"id":6717,"name":"ExpressionStatement","src":"7719:33:6"},{"attributes":{"externalReferences":[{"len":{"declaration":6698,"isOffset":false,"isSlot":false,"src":"7822:3:6","valueSize":1}},{"ret":{"declaration":6701,"isOffset":false,"isSlot":false,"src":"7845:3:6","valueSize":1}},{"self":{"declaration":6694,"isOffset":false,"isSlot":false,"src":"7870:4:6","valueSize":1}},{"idx":{"declaration":6696,"isOffset":false,"isSlot":false,"src":"7881:3:6","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":6718,"name":"InlineAssembly","src":"7762:142:6"}],"id":6719,"name":"Block","src":"7681:229:6"}],"id":6720,"name":"FunctionDefinition","src":"7586:324:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":6760,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6721,"name":"ElementaryTypeName","src":"7932:4:6"}],"id":6722,"name":"VariableDeclaration","src":"7932:9:6"},{"attributes":{"constant":false,"name":"src","scope":6760,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6723,"name":"ElementaryTypeName","src":"7943:4:6"}],"id":6724,"name":"VariableDeclaration","src":"7943:8:6"},{"attributes":{"constant":false,"name":"len","scope":6760,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6725,"name":"ElementaryTypeName","src":"7953:4:6"}],"id":6726,"name":"VariableDeclaration","src":"7953:8:6"}],"id":6727,"name":"ParameterList","src":"7931:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":6728,"name":"ParameterList","src":"7976:0:6"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"uint256","value":"len"},"id":6729,"name":"Identifier","src":"8043:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6730,"name":"Literal","src":"8050:2:6"}],"id":6731,"name":"BinaryOperation","src":"8043:9:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"uint256","value":"len"},"id":6732,"name":"Identifier","src":"8054:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6733,"name":"Literal","src":"8061:2:6"}],"id":6734,"name":"Assignment","src":"8054:9:6"}],"id":6735,"name":"ExpressionStatement","src":"8054:9:6"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":6724,"isOffset":false,"isSlot":false,"src":"8125:3:6","valueSize":1}},{"dest":{"declaration":6722,"isOffset":false,"isSlot":false,"src":"8113:4:6","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":6736,"name":"InlineAssembly","src":"8079:65:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6722,"type":"uint256","value":"dest"},"id":6737,"name":"Identifier","src":"8157:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6738,"name":"Literal","src":"8165:2:6"}],"id":6739,"name":"Assignment","src":"8157:10:6"}],"id":6740,"name":"ExpressionStatement","src":"8157:10:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6724,"type":"uint256","value":"src"},"id":6741,"name":"Identifier","src":"8181:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6742,"name":"Literal","src":"8188:2:6"}],"id":6743,"name":"Assignment","src":"8181:9:6"}],"id":6744,"name":"ExpressionStatement","src":"8181:9:6"}],"id":6745,"name":"Block","src":"8065:136:6"}],"id":6746,"name":"ForStatement","src":"8036:165:6"},{"attributes":{"assignments":[6748]},"children":[{"attributes":{"constant":false,"name":"mask","scope":6759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6747,"name":"ElementaryTypeName","src":"8243:4:6"}],"id":6748,"name":"VariableDeclaration","src":"8243:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":6749,"name":"Literal","src":"8255:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6750,"name":"Literal","src":"8263:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"uint256","value":"len"},"id":6751,"name":"Identifier","src":"8268:3:6"}],"id":6752,"name":"BinaryOperation","src":"8263:8:6"}],"id":6753,"name":"TupleExpression","src":"8262:10:6"}],"id":6754,"name":"BinaryOperation","src":"8255:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6755,"name":"Literal","src":"8275:1:6"}],"id":6756,"name":"BinaryOperation","src":"8255:21:6"}],"id":6757,"name":"VariableDeclarationStatement","src":"8243:33:6"},{"attributes":{"externalReferences":[{"src":{"declaration":6724,"isOffset":false,"isSlot":false,"src":"8334:3:6","valueSize":1}},{"mask":{"declaration":6748,"isOffset":false,"isSlot":false,"src":"8344:4:6","valueSize":1}},{"dest":{"declaration":6722,"isOffset":false,"isSlot":false,"src":"8421:4:6","valueSize":1}},{"dest":{"declaration":6722,"isOffset":false,"isSlot":false,"src":"8389:4:6","valueSize":1}},{"mask":{"declaration":6748,"isOffset":false,"isSlot":false,"src":"8396:4:6","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":6758,"name":"InlineAssembly","src":"8286:173:6"}],"id":6759,"name":"Block","src":"7976:489:6"}],"id":6760,"name":"FunctionDefinition","src":"7916:549:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6803,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6761,"name":"ElementaryTypeName","src":"8704:5:6"}],"id":6762,"name":"VariableDeclaration","src":"8704:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6803,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6763,"name":"ElementaryTypeName","src":"8723:4:6"}],"id":6764,"name":"VariableDeclaration","src":"8723:11:6"},{"attributes":{"constant":false,"name":"len","scope":6803,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6765,"name":"ElementaryTypeName","src":"8736:4:6"}],"id":6766,"name":"VariableDeclaration","src":"8736:8:6"}],"id":6767,"name":"ParameterList","src":"8703:42:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6803,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6768,"name":"ElementaryTypeName","src":"8768:5:6"}],"id":6769,"name":"VariableDeclaration","src":"8768:12:6"}],"id":6770,"name":"ParameterList","src":"8767:14:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6771,"name":"Identifier","src":"8792:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"uint256","value":"offset"},"id":6772,"name":"Identifier","src":"8800:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"uint256","value":"len"},"id":6773,"name":"Identifier","src":"8809:3:6"}],"id":6774,"name":"BinaryOperation","src":"8800:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"bytes memory","value":"self"},"id":6775,"name":"Identifier","src":"8816:4:6"}],"id":6776,"name":"MemberAccess","src":"8816:11:6"}],"id":6777,"name":"BinaryOperation","src":"8800:27:6"}],"id":6778,"name":"FunctionCall","src":"8792:36:6"}],"id":6779,"name":"ExpressionStatement","src":"8792:36:6"},{"attributes":{"assignments":[6781]},"children":[{"attributes":{"constant":false,"name":"ret","scope":6802,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6780,"name":"ElementaryTypeName","src":"8839:5:6"}],"id":6781,"name":"VariableDeclaration","src":"8839:16:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6782,"name":"ElementaryTypeName","src":"8862:5:6"}],"id":6783,"name":"NewExpression","src":"8858:9:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"uint256","value":"len"},"id":6784,"name":"Identifier","src":"8868:3:6"}],"id":6785,"name":"FunctionCall","src":"8858:14:6"}],"id":6786,"name":"VariableDeclarationStatement","src":"8839:33:6"},{"attributes":{"assignments":[6788],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":6802,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6787,"name":"ElementaryTypeName","src":"8882:4:6"}],"id":6788,"name":"VariableDeclaration","src":"8882:9:6"}],"id":6789,"name":"VariableDeclarationStatement","src":"8882:9:6"},{"attributes":{"assignments":[6791],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":6802,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6790,"name":"ElementaryTypeName","src":"8901:4:6"}],"id":6791,"name":"VariableDeclaration","src":"8901:8:6"}],"id":6792,"name":"VariableDeclarationStatement","src":"8901:8:6"},{"attributes":{"externalReferences":[{"dest":{"declaration":6788,"isOffset":false,"isSlot":false,"src":"8943:4:6","valueSize":1}},{"ret":{"declaration":6781,"isOffset":false,"isSlot":false,"src":"8955:3:6","valueSize":1}},{"src":{"declaration":6791,"isOffset":false,"isSlot":false,"src":"8976:3:6","valueSize":1}},{"self":{"declaration":6762,"isOffset":false,"isSlot":false,"src":"8991:4:6","valueSize":1}},{"offset":{"declaration":6764,"isOffset":false,"isSlot":false,"src":"9002:6:6","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":6793,"name":"InlineAssembly","src":"8920:99:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6760,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":6794,"name":"Identifier","src":"9028:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6788,"type":"uint256","value":"dest"},"id":6795,"name":"Identifier","src":"9035:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6791,"type":"uint256","value":"src"},"id":6796,"name":"Identifier","src":"9041:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"uint256","value":"len"},"id":6797,"name":"Identifier","src":"9046:3:6"}],"id":6798,"name":"FunctionCall","src":"9028:22:6"}],"id":6799,"name":"ExpressionStatement","src":"9028:22:6"},{"attributes":{"functionReturnParameters":6770},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6781,"type":"bytes memory","value":"ret"},"id":6800,"name":"Identifier","src":"9068:3:6"}],"id":6801,"name":"Return","src":"9061:10:6"}],"id":6802,"name":"Block","src":"8782:296:6"}],"id":6803,"name":"FunctionDefinition","src":"8685:393:6"},{"attributes":{"constant":true,"name":"base32HexTable","scope":7026,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6804,"name":"ElementaryTypeName","src":"9206:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":6805,"name":"Literal","src":"9238:147:6"}],"id":6806,"name":"VariableDeclaration","src":"9206:179:6"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7025,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6807,"name":"ElementaryTypeName","src":"9697:5:6"}],"id":6808,"name":"VariableDeclaration","src":"9697:17:6"},{"attributes":{"constant":false,"name":"off","scope":7025,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6809,"name":"ElementaryTypeName","src":"9716:4:6"}],"id":6810,"name":"VariableDeclaration","src":"9716:8:6"},{"attributes":{"constant":false,"name":"len","scope":7025,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6811,"name":"ElementaryTypeName","src":"9726:4:6"}],"id":6812,"name":"VariableDeclaration","src":"9726:8:6"}],"id":6813,"name":"ParameterList","src":"9696:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7025,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6814,"name":"ElementaryTypeName","src":"9758:7:6"}],"id":6815,"name":"VariableDeclaration","src":"9758:7:6"}],"id":6816,"name":"ParameterList","src":"9757:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6817,"name":"Identifier","src":"9777:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6818,"name":"Identifier","src":"9785:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":6819,"name":"Literal","src":"9792:2:6"}],"id":6820,"name":"BinaryOperation","src":"9785:9:6"}],"id":6821,"name":"FunctionCall","src":"9777:18:6"}],"id":6822,"name":"ExpressionStatement","src":"9777:18:6"},{"attributes":{"assignments":[6824]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7024,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6823,"name":"ElementaryTypeName","src":"9806:4:6"}],"id":6824,"name":"VariableDeclaration","src":"9806:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6825,"name":"Literal","src":"9817:1:6"}],"id":6826,"name":"VariableDeclarationStatement","src":"9806:12:6"},{"attributes":{"assignments":[6828],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":7024,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6827,"name":"ElementaryTypeName","src":"9828:5:6"}],"id":6828,"name":"VariableDeclaration","src":"9828:13:6"}],"id":6829,"name":"VariableDeclarationStatement","src":"9828:13:6"},{"children":[{"attributes":{"assignments":[6831]},"children":[{"attributes":{"constant":false,"name":"i","scope":6896,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6830,"name":"ElementaryTypeName","src":"9855:4:6"}],"id":6831,"name":"VariableDeclaration","src":"9855:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6832,"name":"Literal","src":"9864:1:6"}],"id":6833,"name":"VariableDeclarationStatement","src":"9855:10:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6831,"type":"uint256","value":"i"},"id":6834,"name":"Identifier","src":"9867:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6835,"name":"Identifier","src":"9871:3:6"}],"id":6836,"name":"BinaryOperation","src":"9867:7:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6831,"type":"uint256","value":"i"},"id":6837,"name":"Identifier","src":"9876:1:6"}],"id":6838,"name":"UnaryOperation","src":"9876:3:6"}],"id":6839,"name":"ExpressionStatement","src":"9876:3:6"},{"children":[{"attributes":{"assignments":[6841]},"children":[{"attributes":{"constant":false,"name":"char","scope":6895,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":6840,"name":"ElementaryTypeName","src":"9895:6:6"}],"id":6841,"name":"VariableDeclaration","src":"9895:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6808,"type":"bytes memory","value":"self"},"id":6842,"name":"Identifier","src":"9909:4:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6810,"type":"uint256","value":"off"},"id":6843,"name":"Identifier","src":"9914:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6831,"type":"uint256","value":"i"},"id":6844,"name":"Identifier","src":"9920:1:6"}],"id":6845,"name":"BinaryOperation","src":"9914:7:6"}],"id":6846,"name":"IndexAccess","src":"9909:13:6"}],"id":6847,"name":"VariableDeclarationStatement","src":"9895:27:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6848,"name":"Identifier","src":"9936:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6841,"type":"bytes1","value":"char"},"id":6849,"name":"Identifier","src":"9944:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":6850,"name":"Literal","src":"9952:4:6"}],"id":6851,"name":"BinaryOperation","src":"9944:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6841,"type":"bytes1","value":"char"},"id":6852,"name":"Identifier","src":"9960:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":6853,"name":"Literal","src":"9968:4:6"}],"id":6854,"name":"BinaryOperation","src":"9960:12:6"}],"id":6855,"name":"BinaryOperation","src":"9944:28:6"}],"id":6856,"name":"FunctionCall","src":"9936:37:6"}],"id":6857,"name":"ExpressionStatement","src":"9936:37:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6858,"name":"Identifier","src":"9987:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6859,"name":"ElementaryTypeNameExpression","src":"9997:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6806,"type":"bytes memory","value":"base32HexTable"},"id":6860,"name":"Identifier","src":"10003:14:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6861,"name":"ElementaryTypeNameExpression","src":"10018:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6862,"name":"ElementaryTypeNameExpression","src":"10023:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6841,"type":"bytes1","value":"char"},"id":6863,"name":"Identifier","src":"10029:4:6"}],"id":6864,"name":"FunctionCall","src":"10023:11:6"}],"id":6865,"name":"FunctionCall","src":"10018:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":6866,"name":"Literal","src":"10038:4:6"}],"id":6867,"name":"BinaryOperation","src":"10018:24:6"}],"id":6868,"name":"IndexAccess","src":"10003:40:6"}],"id":6869,"name":"FunctionCall","src":"9997:47:6"}],"id":6870,"name":"Assignment","src":"9987:57:6"}],"id":6871,"name":"ExpressionStatement","src":"9987:57:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6872,"name":"Identifier","src":"10058:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6873,"name":"Identifier","src":"10066:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":6874,"name":"Literal","src":"10077:4:6"}],"id":6875,"name":"BinaryOperation","src":"10066:15:6"}],"id":6876,"name":"FunctionCall","src":"10058:24:6"}],"id":6877,"name":"ExpressionStatement","src":"10058:24:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6831,"type":"uint256","value":"i"},"id":6878,"name":"Identifier","src":"10099:1:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6879,"name":"Identifier","src":"10104:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6880,"name":"Literal","src":"10110:1:6"}],"id":6881,"name":"BinaryOperation","src":"10104:7:6"}],"id":6882,"name":"BinaryOperation","src":"10099:12:6"},{"children":[{"id":6883,"name":"Break","src":"10131:5:6"}],"id":6884,"name":"Block","src":"10113:38:6"}],"id":6885,"name":"IfStatement","src":"10096:55:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6886,"name":"Identifier","src":"10164:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6887,"name":"Identifier","src":"10171:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":6888,"name":"Literal","src":"10178:1:6"}],"id":6889,"name":"BinaryOperation","src":"10171:8:6"}],"id":6890,"name":"TupleExpression","src":"10170:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6891,"name":"Identifier","src":"10183:7:6"}],"id":6892,"name":"BinaryOperation","src":"10170:20:6"}],"id":6893,"name":"Assignment","src":"10164:26:6"}],"id":6894,"name":"ExpressionStatement","src":"10164:26:6"}],"id":6895,"name":"Block","src":"9881:320:6"}],"id":6896,"name":"ForStatement","src":"9851:350:6"},{"attributes":{"assignments":[6898]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":7024,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6897,"name":"ElementaryTypeName","src":"10211:4:6"}],"id":6898,"name":"VariableDeclaration","src":"10211:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6899,"name":"Identifier","src":"10225:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":6900,"name":"Literal","src":"10231:1:6"}],"id":6901,"name":"BinaryOperation","src":"10225:7:6"}],"id":6902,"name":"VariableDeclarationStatement","src":"10211:21:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6903,"name":"Identifier","src":"10245:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6904,"name":"Literal","src":"10251:1:6"}],"id":6905,"name":"BinaryOperation","src":"10245:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6906,"name":"Literal","src":"10256:1:6"}],"id":6907,"name":"BinaryOperation","src":"10245:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6908,"name":"Identifier","src":"10325:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6909,"name":"Identifier","src":"10332:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":6910,"name":"Literal","src":"10339:1:6"}],"id":6911,"name":"BinaryOperation","src":"10332:8:6"}],"id":6912,"name":"TupleExpression","src":"10331:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6913,"name":"Identifier","src":"10344:7:6"}],"id":6914,"name":"BinaryOperation","src":"10331:20:6"}],"id":6915,"name":"Assignment","src":"10325:26:6"}],"id":6916,"name":"ExpressionStatement","src":"10325:26:6"}],"id":6917,"name":"Block","src":"10259:103:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6918,"name":"Identifier","src":"10371:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6919,"name":"Literal","src":"10377:1:6"}],"id":6920,"name":"BinaryOperation","src":"10371:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6921,"name":"Literal","src":"10382:1:6"}],"id":6922,"name":"BinaryOperation","src":"10371:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6923,"name":"Identifier","src":"10444:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6924,"name":"Identifier","src":"10451:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":6925,"name":"Literal","src":"10458:1:6"}],"id":6926,"name":"BinaryOperation","src":"10451:8:6"}],"id":6927,"name":"TupleExpression","src":"10450:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6928,"name":"Identifier","src":"10464:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6929,"name":"Literal","src":"10475:1:6"}],"id":6930,"name":"BinaryOperation","src":"10464:12:6"}],"id":6931,"name":"TupleExpression","src":"10463:14:6"}],"id":6932,"name":"BinaryOperation","src":"10450:27:6"}],"id":6933,"name":"Assignment","src":"10444:33:6"}],"id":6934,"name":"ExpressionStatement","src":"10444:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":6935,"name":"Identifier","src":"10491:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6936,"name":"Literal","src":"10501:1:6"}],"id":6937,"name":"Assignment","src":"10491:11:6"}],"id":6938,"name":"ExpressionStatement","src":"10491:11:6"}],"id":6939,"name":"Block","src":"10385:128:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6940,"name":"Identifier","src":"10522:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6941,"name":"Literal","src":"10528:1:6"}],"id":6942,"name":"BinaryOperation","src":"10522:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6943,"name":"Literal","src":"10533:1:6"}],"id":6944,"name":"BinaryOperation","src":"10522:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6945,"name":"Identifier","src":"10597:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6946,"name":"Identifier","src":"10604:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6947,"name":"Literal","src":"10611:1:6"}],"id":6948,"name":"BinaryOperation","src":"10604:8:6"}],"id":6949,"name":"TupleExpression","src":"10603:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6950,"name":"Identifier","src":"10617:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6951,"name":"Literal","src":"10628:1:6"}],"id":6952,"name":"BinaryOperation","src":"10617:12:6"}],"id":6953,"name":"TupleExpression","src":"10616:14:6"}],"id":6954,"name":"BinaryOperation","src":"10603:27:6"}],"id":6955,"name":"Assignment","src":"10597:33:6"}],"id":6956,"name":"ExpressionStatement","src":"10597:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":6957,"name":"Identifier","src":"10644:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6958,"name":"Literal","src":"10654:1:6"}],"id":6959,"name":"Assignment","src":"10644:11:6"}],"id":6960,"name":"ExpressionStatement","src":"10644:11:6"}],"id":6961,"name":"Block","src":"10536:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6962,"name":"Identifier","src":"10675:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6963,"name":"Literal","src":"10681:1:6"}],"id":6964,"name":"BinaryOperation","src":"10675:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":6965,"name":"Literal","src":"10686:1:6"}],"id":6966,"name":"BinaryOperation","src":"10675:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6967,"name":"Identifier","src":"10750:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6968,"name":"Identifier","src":"10757:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6969,"name":"Literal","src":"10764:1:6"}],"id":6970,"name":"BinaryOperation","src":"10757:8:6"}],"id":6971,"name":"TupleExpression","src":"10756:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6972,"name":"Identifier","src":"10770:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6973,"name":"Literal","src":"10781:1:6"}],"id":6974,"name":"BinaryOperation","src":"10770:12:6"}],"id":6975,"name":"TupleExpression","src":"10769:14:6"}],"id":6976,"name":"BinaryOperation","src":"10756:27:6"}],"id":6977,"name":"Assignment","src":"10750:33:6"}],"id":6978,"name":"ExpressionStatement","src":"10750:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":6979,"name":"Identifier","src":"10797:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6980,"name":"Literal","src":"10807:1:6"}],"id":6981,"name":"Assignment","src":"10797:11:6"}],"id":6982,"name":"ExpressionStatement","src":"10797:11:6"}],"id":6983,"name":"Block","src":"10689:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6984,"name":"Identifier","src":"10828:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6985,"name":"Literal","src":"10834:1:6"}],"id":6986,"name":"BinaryOperation","src":"10828:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":6987,"name":"Literal","src":"10839:1:6"}],"id":6988,"name":"BinaryOperation","src":"10828:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6989,"name":"Identifier","src":"10904:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6990,"name":"Identifier","src":"10911:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6991,"name":"Literal","src":"10918:1:6"}],"id":6992,"name":"BinaryOperation","src":"10911:8:6"}],"id":6993,"name":"TupleExpression","src":"10910:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6994,"name":"Identifier","src":"10924:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":6995,"name":"Literal","src":"10935:1:6"}],"id":6996,"name":"BinaryOperation","src":"10924:12:6"}],"id":6997,"name":"TupleExpression","src":"10923:14:6"}],"id":6998,"name":"BinaryOperation","src":"10910:27:6"}],"id":6999,"name":"Assignment","src":"10904:33:6"}],"id":7000,"name":"ExpressionStatement","src":"10904:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":7001,"name":"Identifier","src":"10951:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7002,"name":"Literal","src":"10961:1:6"}],"id":7003,"name":"Assignment","src":"10951:11:6"}],"id":7004,"name":"ExpressionStatement","src":"10951:11:6"}],"id":7005,"name":"Block","src":"10842:131:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[7046,7047],"referencedDeclaration":7046,"type":"function () pure","value":"revert"},"id":7006,"name":"Identifier","src":"10993:6:6"}],"id":7007,"name":"FunctionCall","src":"10993:8:6"}],"id":7008,"name":"ExpressionStatement","src":"10993:8:6"}],"id":7009,"name":"Block","src":"10979:33:6"}],"id":7010,"name":"IfStatement","src":"10825:187:6"}],"id":7011,"name":"IfStatement","src":"10672:340:6"}],"id":7012,"name":"IfStatement","src":"10519:493:6"}],"id":7013,"name":"IfStatement","src":"10368:644:6"}],"id":7014,"name":"IfStatement","src":"10242:770:6"},{"attributes":{"functionReturnParameters":6816},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7015,"name":"ElementaryTypeNameExpression","src":"11029:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":7016,"name":"Identifier","src":"11037:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7017,"name":"Literal","src":"11045:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":7018,"name":"Identifier","src":"11051:6:6"}],"id":7019,"name":"BinaryOperation","src":"11045:12:6"}],"id":7020,"name":"TupleExpression","src":"11044:14:6"}],"id":7021,"name":"BinaryOperation","src":"11037:21:6"}],"id":7022,"name":"FunctionCall","src":"11029:30:6"}],"id":7023,"name":"Return","src":"11022:37:6"}],"id":7024,"name":"Block","src":"9767:1299:6"}],"id":7025,"name":"FunctionDefinition","src":"9668:1398:6"}],"id":7026,"name":"ContractDefinition","src":"26:11042:6"}],"id":7027,"name":"SourceUnit","src":"0:11069:6"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[4312]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4140,"name":"PragmaDirective","src":"1401:23:7"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":4141,"name":"PragmaDirective","src":"1425:33:7"},{"attributes":{"SourceUnit":4139,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4142,"name":"ImportDirective","src":"1460:19:7"},{"attributes":{"SourceUnit":4468,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4143,"name":"ImportDirective","src":"1480:36:7"},{"attributes":{"SourceUnit":4627,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4144,"name":"ImportDirective","src":"1517:37:7"},{"attributes":{"SourceUnit":4697,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4145,"name":"ImportDirective","src":"1555:44:7"},{"attributes":{"SourceUnit":5188,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4146,"name":"ImportDirective","src":"1600:36:7"},{"attributes":{"SourceUnit":5375,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4147,"name":"ImportDirective","src":"1637:42:7"},{"attributes":{"SourceUnit":5445,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4148,"name":"ImportDirective","src":"1680:37:7"},{"attributes":{"SourceUnit":5536,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4149,"name":"ImportDirective","src":"1718:39:7"},{"attributes":{"SourceUnit":5619,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4150,"name":"ImportDirective","src":"1758:37:7"},{"attributes":{"contractDependencies":[4467,4626,4696,5187,5374,5444,5535,5618,5687],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[4312,5618,5535,5444,5374,5187,4696,4626,4467,5687],"name":"PublicResolver","scope":4313},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":4467,"type":"contract ABIResolver"},"id":4151,"name":"UserDefinedTypeName","src":"1924:11:7"}],"id":4152,"name":"InheritanceSpecifier","src":"1924:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":4626,"type":"contract AddrResolver"},"id":4153,"name":"UserDefinedTypeName","src":"1937:12:7"}],"id":4154,"name":"InheritanceSpecifier","src":"1937:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":4696,"type":"contract ContentHashResolver"},"id":4155,"name":"UserDefinedTypeName","src":"1951:19:7"}],"id":4156,"name":"InheritanceSpecifier","src":"1951:19:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":5187,"type":"contract DNSResolver"},"id":4157,"name":"UserDefinedTypeName","src":"1972:11:7"}],"id":4158,"name":"InheritanceSpecifier","src":"1972:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":5374,"type":"contract InterfaceResolver"},"id":4159,"name":"UserDefinedTypeName","src":"1985:17:7"}],"id":4160,"name":"InheritanceSpecifier","src":"1985:17:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":5444,"type":"contract NameResolver"},"id":4161,"name":"UserDefinedTypeName","src":"2004:12:7"}],"id":4162,"name":"InheritanceSpecifier","src":"2004:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":5535,"type":"contract PubkeyResolver"},"id":4163,"name":"UserDefinedTypeName","src":"2018:14:7"}],"id":4164,"name":"InheritanceSpecifier","src":"2018:14:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":5618,"type":"contract TextResolver"},"id":4165,"name":"UserDefinedTypeName","src":"2034:12:7"}],"id":4166,"name":"InheritanceSpecifier","src":"2034:12:7"},{"attributes":{"constant":false,"name":"ens","scope":4312,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4138,"type":"contract ENS"},"id":4167,"name":"UserDefinedTypeName","src":"2053:3:7"}],"id":4168,"name":"VariableDeclaration","src":"2053:7:7"},{"attributes":{"constant":false,"name":"authorisations","scope":4312,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4169,"name":"ElementaryTypeName","src":"2328:7:7"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":4170,"name":"ElementaryTypeName","src":"2345:7:7"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4171,"name":"ElementaryTypeName","src":"2362:7:7"},{"attributes":{"name":"bool","type":"bool"},"id":4172,"name":"ElementaryTypeName","src":"2371:4:7"}],"id":4173,"name":"Mapping","src":"2354:22:7"}],"id":4174,"name":"Mapping","src":"2337:40:7"}],"id":4175,"name":"Mapping","src":"2320:58:7"}],"id":4176,"name":"VariableDeclaration","src":"2320:80:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4177,"name":"ElementaryTypeName","src":"2434:7:7"}],"id":4178,"name":"VariableDeclaration","src":"2434:20:7"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":4186,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4179,"name":"ElementaryTypeName","src":"2456:7:7"}],"id":4180,"name":"VariableDeclaration","src":"2456:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":4186,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4181,"name":"ElementaryTypeName","src":"2479:7:7"}],"id":4182,"name":"VariableDeclaration","src":"2479:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4183,"name":"ElementaryTypeName","src":"2503:4:7"}],"id":4184,"name":"VariableDeclaration","src":"2503:17:7"}],"id":4185,"name":"ParameterList","src":"2433:88:7"}],"id":4186,"name":"EventDefinition","src":"2407:115:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4312,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":4196,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4138,"type":"contract ENS"},"id":4187,"name":"UserDefinedTypeName","src":"2540:3:7"}],"id":4188,"name":"VariableDeclaration","src":"2540:8:7"}],"id":4189,"name":"ParameterList","src":"2539:10:7"},{"attributes":{"parameters":[null]},"children":[],"id":4190,"name":"ParameterList","src":"2557:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4168,"type":"contract ENS","value":"ens"},"id":4191,"name":"Identifier","src":"2567:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"contract ENS","value":"_ens"},"id":4192,"name":"Identifier","src":"2573:4:7"}],"id":4193,"name":"Assignment","src":"2567:10:7"}],"id":4194,"name":"ExpressionStatement","src":"2567:10:7"}],"id":4195,"name":"Block","src":"2557:27:7"}],"id":4196,"name":"FunctionDefinition","src":"2528:56:7"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":4312,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4225,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4197,"name":"ElementaryTypeName","src":"3295:7:7"}],"id":4198,"name":"VariableDeclaration","src":"3295:12:7"},{"attributes":{"constant":false,"name":"target","scope":4225,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4199,"name":"ElementaryTypeName","src":"3309:7:7"}],"id":4200,"name":"VariableDeclaration","src":"3309:14:7"},{"attributes":{"constant":false,"name":"isAuthorised","scope":4225,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4201,"name":"ElementaryTypeName","src":"3325:4:7"}],"id":4202,"name":"VariableDeclaration","src":"3325:17:7"}],"id":4203,"name":"ParameterList","src":"3294:49:7"},{"attributes":{"parameters":[null]},"children":[],"id":4204,"name":"ParameterList","src":"3353:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4176,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4205,"name":"Identifier","src":"3363:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4198,"type":"bytes32","value":"node"},"id":4206,"name":"Identifier","src":"3378:4:7"}],"id":4210,"name":"IndexAccess","src":"3363:20:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":4207,"name":"Identifier","src":"3384:3:7"}],"id":4208,"name":"MemberAccess","src":"3384:10:7"}],"id":4211,"name":"IndexAccess","src":"3363:32:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"target"},"id":4209,"name":"Identifier","src":"3396:6:7"}],"id":4212,"name":"IndexAccess","src":"3363:40:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4202,"type":"bool","value":"isAuthorised"},"id":4213,"name":"Identifier","src":"3406:12:7"}],"id":4214,"name":"Assignment","src":"3363:55:7"}],"id":4215,"name":"ExpressionStatement","src":"3363:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4186,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":4216,"name":"Identifier","src":"3433:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4198,"type":"bytes32","value":"node"},"id":4217,"name":"Identifier","src":"3454:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":4218,"name":"Identifier","src":"3460:3:7"}],"id":4219,"name":"MemberAccess","src":"3460:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"target"},"id":4220,"name":"Identifier","src":"3472:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4202,"type":"bool","value":"isAuthorised"},"id":4221,"name":"Identifier","src":"3480:12:7"}],"id":4222,"name":"FunctionCall","src":"3433:60:7"}],"id":4223,"name":"EmitStatement","src":"3428:65:7"}],"id":4224,"name":"Block","src":"3353:147:7"}],"id":4225,"name":"FunctionDefinition","src":"3269:231:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":4312,"stateMutability":"view","superFunction":5642,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4254,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4226,"name":"ElementaryTypeName","src":"3528:7:7"}],"id":4227,"name":"VariableDeclaration","src":"3528:12:7"}],"id":4228,"name":"ParameterList","src":"3527:14:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4254,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4229,"name":"ElementaryTypeName","src":"3564:4:7"}],"id":4230,"name":"VariableDeclaration","src":"3564:4:7"}],"id":4231,"name":"ParameterList","src":"3563:6:7"},{"children":[{"attributes":{"assignments":[4233]},"children":[{"attributes":{"constant":false,"name":"owner","scope":4253,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4232,"name":"ElementaryTypeName","src":"3580:7:7"}],"id":4233,"name":"VariableDeclaration","src":"3580:13:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":4107,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4168,"type":"contract ENS","value":"ens"},"id":4234,"name":"Identifier","src":"3596:3:7"}],"id":4235,"name":"MemberAccess","src":"3596:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"bytes32","value":"node"},"id":4236,"name":"Identifier","src":"3606:4:7"}],"id":4237,"name":"FunctionCall","src":"3596:15:7"}],"id":4238,"name":"VariableDeclarationStatement","src":"3580:31:7"},{"attributes":{"functionReturnParameters":4231},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4233,"type":"address","value":"owner"},"id":4239,"name":"Identifier","src":"3628:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":4240,"name":"Identifier","src":"3637:3:7"}],"id":4241,"name":"MemberAccess","src":"3637:10:7"}],"id":4242,"name":"BinaryOperation","src":"3628:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4176,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4243,"name":"Identifier","src":"3651:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"bytes32","value":"node"},"id":4244,"name":"Identifier","src":"3666:4:7"}],"id":4245,"name":"IndexAccess","src":"3651:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4233,"type":"address","value":"owner"},"id":4246,"name":"Identifier","src":"3672:5:7"}],"id":4247,"name":"IndexAccess","src":"3651:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":4248,"name":"Identifier","src":"3679:3:7"}],"id":4249,"name":"MemberAccess","src":"3679:10:7"}],"id":4250,"name":"IndexAccess","src":"3651:39:7"}],"id":4251,"name":"BinaryOperation","src":"3628:62:7"}],"id":4252,"name":"Return","src":"3621:69:7"}],"id":4253,"name":"Block","src":"3570:127:7"}],"id":4254,"name":"FunctionDefinition","src":"3506:191:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":4312,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":4311,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4255,"name":"ElementaryTypeName","src":"3722:5:7"}],"id":4256,"name":"ArrayTypeName","src":"3722:7:7"}],"id":4257,"name":"VariableDeclaration","src":"3722:21:7"}],"id":4258,"name":"ParameterList","src":"3721:23:7"},{"children":[{"attributes":{"constant":false,"name":"results","scope":4311,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4259,"name":"ElementaryTypeName","src":"3762:5:7"}],"id":4260,"name":"ArrayTypeName","src":"3762:7:7"}],"id":4261,"name":"VariableDeclaration","src":"3762:22:7"}],"id":4262,"name":"ParameterList","src":"3761:24:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"bytes memory[] memory","value":"results"},"id":4263,"name":"Identifier","src":"3796:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4264,"name":"ElementaryTypeName","src":"3810:5:7"}],"id":4265,"name":"ArrayTypeName","src":"3810:7:7"}],"id":4266,"name":"NewExpression","src":"3806:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"bytes calldata[] calldata","value":"data"},"id":4267,"name":"Identifier","src":"3818:4:7"}],"id":4268,"name":"MemberAccess","src":"3818:11:7"}],"id":4269,"name":"FunctionCall","src":"3806:24:7"}],"id":4270,"name":"Assignment","src":"3796:34:7"}],"id":4271,"name":"ExpressionStatement","src":"3796:34:7"},{"children":[{"attributes":{"assignments":[4273]},"children":[{"attributes":{"constant":false,"name":"i","scope":4307,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4272,"name":"ElementaryTypeName","src":"3844:4:7"}],"id":4273,"name":"VariableDeclaration","src":"3844:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4274,"name":"Literal","src":"3853:1:7"}],"id":4275,"name":"VariableDeclarationStatement","src":"3844:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"uint256","value":"i"},"id":4276,"name":"Identifier","src":"3856:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"bytes calldata[] calldata","value":"data"},"id":4277,"name":"Identifier","src":"3860:4:7"}],"id":4278,"name":"MemberAccess","src":"3860:11:7"}],"id":4279,"name":"BinaryOperation","src":"3856:15:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"uint256","value":"i"},"id":4280,"name":"Identifier","src":"3873:1:7"}],"id":4281,"name":"UnaryOperation","src":"3873:3:7"}],"id":4282,"name":"ExpressionStatement","src":"3873:3:7"},{"children":[{"attributes":{"assignments":[4284,4286]},"children":[{"attributes":{"constant":false,"name":"success","scope":4306,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4283,"name":"ElementaryTypeName","src":"3893:4:7"}],"id":4284,"name":"VariableDeclaration","src":"3893:12:7"},{"attributes":{"constant":false,"name":"result","scope":4306,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4285,"name":"ElementaryTypeName","src":"3907:5:7"}],"id":4286,"name":"VariableDeclaration","src":"3907:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$4312","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4287,"name":"ElementaryTypeNameExpression","src":"3930:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7095,"type":"contract PublicResolver","value":"this"},"id":4288,"name":"Identifier","src":"3938:4:7"}],"id":4289,"name":"FunctionCall","src":"3930:13:7"}],"id":4290,"name":"MemberAccess","src":"3930:26:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"bytes calldata[] calldata","value":"data"},"id":4291,"name":"Identifier","src":"3957:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"uint256","value":"i"},"id":4292,"name":"Identifier","src":"3962:1:7"}],"id":4293,"name":"IndexAccess","src":"3957:7:7"}],"id":4294,"name":"FunctionCall","src":"3930:35:7"}],"id":4295,"name":"VariableDeclarationStatement","src":"3892:73:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":4296,"name":"Identifier","src":"3979:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4284,"type":"bool","value":"success"},"id":4297,"name":"Identifier","src":"3987:7:7"}],"id":4298,"name":"FunctionCall","src":"3979:16:7"}],"id":4299,"name":"ExpressionStatement","src":"3979:16:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"bytes memory[] memory","value":"results"},"id":4300,"name":"Identifier","src":"4009:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"uint256","value":"i"},"id":4301,"name":"Identifier","src":"4017:1:7"}],"id":4302,"name":"IndexAccess","src":"4009:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4286,"type":"bytes memory","value":"result"},"id":4303,"name":"Identifier","src":"4022:6:7"}],"id":4304,"name":"Assignment","src":"4009:19:7"}],"id":4305,"name":"ExpressionStatement","src":"4009:19:7"}],"id":4306,"name":"Block","src":"3878:161:7"}],"id":4307,"name":"ForStatement","src":"3840:199:7"},{"attributes":{"functionReturnParameters":4262},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"bytes memory[] memory","value":"results"},"id":4308,"name":"Identifier","src":"4055:7:7"}],"id":4309,"name":"Return","src":"4048:14:7"}],"id":4310,"name":"Block","src":"3786:283:7"}],"id":4311,"name":"FunctionDefinition","src":"3703:366:7"}],"id":4312,"name":"ContractDefinition","src":"1897:2174:7"}],"id":4313,"name":"SourceUnit","src":"1401:2671:7"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[6305]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":5689,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"SourceUnit":7027,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":6306,"symbolAliases":[null],"unitAlias":""},"id":5690,"name":"ImportDirective","src":"26:29:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[6305],"name":"RRUtils","scope":6306},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7026,"type":"library ENSBytesUtils"},"id":5691,"name":"UserDefinedTypeName","src":"178:13:8"}],"id":5692,"name":"UsingForDirective","src":"172:26:8"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5739,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5693,"name":"ElementaryTypeName","src":"487:5:8"}],"id":5694,"name":"VariableDeclaration","src":"487:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5695,"name":"ElementaryTypeName","src":"506:4:8"}],"id":5696,"name":"VariableDeclaration","src":"506:11:8"}],"id":5697,"name":"ParameterList","src":"486:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5698,"name":"ElementaryTypeName","src":"541:4:8"}],"id":5699,"name":"VariableDeclaration","src":"541:4:8"}],"id":5700,"name":"ParameterList","src":"540:6:8"},{"children":[{"attributes":{"assignments":[5702]},"children":[{"attributes":{"constant":false,"name":"idx","scope":5738,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5701,"name":"ElementaryTypeName","src":"557:4:8"}],"id":5702,"name":"VariableDeclaration","src":"557:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5696,"type":"uint256","value":"offset"},"id":5703,"name":"Identifier","src":"568:6:8"}],"id":5704,"name":"VariableDeclarationStatement","src":"557:17:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5705,"name":"Literal","src":"591:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7030,"type":"function (bool) pure","value":"assert"},"id":5706,"name":"Identifier","src":"611:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"uint256","value":"idx"},"id":5707,"name":"Identifier","src":"618:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5694,"type":"bytes memory","value":"self"},"id":5708,"name":"Identifier","src":"624:4:8"}],"id":5709,"name":"MemberAccess","src":"624:11:8"}],"id":5710,"name":"BinaryOperation","src":"618:17:8"}],"id":5711,"name":"FunctionCall","src":"611:25:8"}],"id":5712,"name":"ExpressionStatement","src":"611:25:8"},{"attributes":{"assignments":[5714]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":5732,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5713,"name":"ElementaryTypeName","src":"650:4:8"}],"id":5714,"name":"VariableDeclaration","src":"650:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5694,"type":"bytes memory","value":"self"},"id":5715,"name":"Identifier","src":"666:4:8"}],"id":5716,"name":"MemberAccess","src":"666:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"uint256","value":"idx"},"id":5717,"name":"Identifier","src":"681:3:8"}],"id":5718,"name":"FunctionCall","src":"666:19:8"}],"id":5719,"name":"VariableDeclarationStatement","src":"650:35:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"uint256","value":"idx"},"id":5720,"name":"Identifier","src":"699:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5714,"type":"uint256","value":"labelLen"},"id":5721,"name":"Identifier","src":"706:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5722,"name":"Literal","src":"717:1:8"}],"id":5723,"name":"BinaryOperation","src":"706:12:8"}],"id":5724,"name":"Assignment","src":"699:19:8"}],"id":5725,"name":"ExpressionStatement","src":"699:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5714,"type":"uint256","value":"labelLen"},"id":5726,"name":"Identifier","src":"736:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5727,"name":"Literal","src":"748:1:8"}],"id":5728,"name":"BinaryOperation","src":"736:13:8"},{"children":[{"id":5729,"name":"Break","src":"769:5:8"}],"id":5730,"name":"Block","src":"751:38:8"}],"id":5731,"name":"IfStatement","src":"732:57:8"}],"id":5732,"name":"Block","src":"597:202:8"}],"id":5733,"name":"WhileStatement","src":"584:215:8"},{"attributes":{"functionReturnParameters":5700},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"uint256","value":"idx"},"id":5734,"name":"Identifier","src":"815:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5696,"type":"uint256","value":"offset"},"id":5735,"name":"Identifier","src":"821:6:8"}],"id":5736,"name":"BinaryOperation","src":"815:12:8"}],"id":5737,"name":"Return","src":"808:19:8"}],"id":5738,"name":"Block","src":"547:287:8"}],"id":5739,"name":"FunctionDefinition","src":"467:367:8"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5762,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5740,"name":"ElementaryTypeName","src":"1073:5:8"}],"id":5741,"name":"VariableDeclaration","src":"1073:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5762,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5742,"name":"ElementaryTypeName","src":"1092:4:8"}],"id":5743,"name":"VariableDeclaration","src":"1092:11:8"}],"id":5744,"name":"ParameterList","src":"1072:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":5762,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5745,"name":"ElementaryTypeName","src":"1127:5:8"}],"id":5746,"name":"VariableDeclaration","src":"1127:16:8"}],"id":5747,"name":"ParameterList","src":"1126:18:8"},{"children":[{"attributes":{"assignments":[5749]},"children":[{"attributes":{"constant":false,"name":"len","scope":5761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5748,"name":"ElementaryTypeName","src":"1155:4:8"}],"id":5749,"name":"VariableDeclaration","src":"1155:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5750,"name":"Identifier","src":"1166:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5741,"type":"bytes memory","value":"self"},"id":5751,"name":"Identifier","src":"1177:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5743,"type":"uint256","value":"offset"},"id":5752,"name":"Identifier","src":"1183:6:8"}],"id":5753,"name":"FunctionCall","src":"1166:24:8"}],"id":5754,"name":"VariableDeclarationStatement","src":"1155:35:8"},{"attributes":{"functionReturnParameters":5747},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":6803,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5741,"type":"bytes memory","value":"self"},"id":5755,"name":"Identifier","src":"1207:4:8"}],"id":5756,"name":"MemberAccess","src":"1207:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5743,"type":"uint256","value":"offset"},"id":5757,"name":"Identifier","src":"1222:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5749,"type":"uint256","value":"len"},"id":5758,"name":"Identifier","src":"1230:3:8"}],"id":5759,"name":"FunctionCall","src":"1207:27:8"}],"id":5760,"name":"Return","src":"1200:34:8"}],"id":5761,"name":"Block","src":"1145:96:8"}],"id":5762,"name":"FunctionDefinition","src":"1055:186:8"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5811,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5763,"name":"ElementaryTypeName","src":"1541:5:8"}],"id":5764,"name":"VariableDeclaration","src":"1541:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5811,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5765,"name":"ElementaryTypeName","src":"1560:4:8"}],"id":5766,"name":"VariableDeclaration","src":"1560:11:8"}],"id":5767,"name":"ParameterList","src":"1540:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5811,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5768,"name":"ElementaryTypeName","src":"1595:4:8"}],"id":5769,"name":"VariableDeclaration","src":"1595:4:8"}],"id":5770,"name":"ParameterList","src":"1594:6:8"},{"children":[{"attributes":{"assignments":[5772]},"children":[{"attributes":{"constant":false,"name":"count","scope":5810,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5771,"name":"ElementaryTypeName","src":"1611:4:8"}],"id":5772,"name":"VariableDeclaration","src":"1611:10:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5773,"name":"Literal","src":"1624:1:8"}],"id":5774,"name":"VariableDeclarationStatement","src":"1611:14:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5775,"name":"Literal","src":"1642:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7030,"type":"function (bool) pure","value":"assert"},"id":5776,"name":"Identifier","src":"1662:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5766,"type":"uint256","value":"offset"},"id":5777,"name":"Identifier","src":"1669:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5764,"type":"bytes memory","value":"self"},"id":5778,"name":"Identifier","src":"1678:4:8"}],"id":5779,"name":"MemberAccess","src":"1678:11:8"}],"id":5780,"name":"BinaryOperation","src":"1669:20:8"}],"id":5781,"name":"FunctionCall","src":"1662:28:8"}],"id":5782,"name":"ExpressionStatement","src":"1662:28:8"},{"attributes":{"assignments":[5784]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":5806,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5783,"name":"ElementaryTypeName","src":"1704:4:8"}],"id":5784,"name":"VariableDeclaration","src":"1704:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5764,"type":"bytes memory","value":"self"},"id":5785,"name":"Identifier","src":"1720:4:8"}],"id":5786,"name":"MemberAccess","src":"1720:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5766,"type":"uint256","value":"offset"},"id":5787,"name":"Identifier","src":"1735:6:8"}],"id":5788,"name":"FunctionCall","src":"1720:22:8"}],"id":5789,"name":"VariableDeclarationStatement","src":"1704:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5766,"type":"uint256","value":"offset"},"id":5790,"name":"Identifier","src":"1756:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5784,"type":"uint256","value":"labelLen"},"id":5791,"name":"Identifier","src":"1766:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5792,"name":"Literal","src":"1777:1:8"}],"id":5793,"name":"BinaryOperation","src":"1766:12:8"}],"id":5794,"name":"Assignment","src":"1756:22:8"}],"id":5795,"name":"ExpressionStatement","src":"1756:22:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5784,"type":"uint256","value":"labelLen"},"id":5796,"name":"Identifier","src":"1796:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5797,"name":"Literal","src":"1808:1:8"}],"id":5798,"name":"BinaryOperation","src":"1796:13:8"},{"children":[{"id":5799,"name":"Break","src":"1829:5:8"}],"id":5800,"name":"Block","src":"1811:38:8"}],"id":5801,"name":"IfStatement","src":"1792:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5772,"type":"uint256","value":"count"},"id":5802,"name":"Identifier","src":"1862:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5803,"name":"Literal","src":"1871:1:8"}],"id":5804,"name":"Assignment","src":"1862:10:8"}],"id":5805,"name":"ExpressionStatement","src":"1862:10:8"}],"id":5806,"name":"Block","src":"1648:235:8"}],"id":5807,"name":"WhileStatement","src":"1635:248:8"},{"attributes":{"functionReturnParameters":5770},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5772,"type":"uint256","value":"count"},"id":5808,"name":"Identifier","src":"1899:5:8"}],"id":5809,"name":"Return","src":"1892:12:8"}],"id":5810,"name":"Block","src":"1601:310:8"}],"id":5811,"name":"FunctionDefinition","src":"1521:390:8"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":6305,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":5826,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5812,"name":"ElementaryTypeName","src":"2006:5:8"}],"id":5813,"name":"VariableDeclaration","src":"2006:10:8"},{"attributes":{"constant":false,"name":"offset","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5814,"name":"ElementaryTypeName","src":"2026:4:8"}],"id":5815,"name":"VariableDeclaration","src":"2026:11:8"},{"attributes":{"constant":false,"name":"dnstype","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5816,"name":"ElementaryTypeName","src":"2047:6:8"}],"id":5817,"name":"VariableDeclaration","src":"2047:14:8"},{"attributes":{"constant":false,"name":"class","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5818,"name":"ElementaryTypeName","src":"2071:6:8"}],"id":5819,"name":"VariableDeclaration","src":"2071:12:8"},{"attributes":{"constant":false,"name":"ttl","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":5820,"name":"ElementaryTypeName","src":"2093:6:8"}],"id":5821,"name":"VariableDeclaration","src":"2093:10:8"},{"attributes":{"constant":false,"name":"rdataOffset","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5822,"name":"ElementaryTypeName","src":"2113:4:8"}],"id":5823,"name":"VariableDeclaration","src":"2113:16:8"},{"attributes":{"constant":false,"name":"nextOffset","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5824,"name":"ElementaryTypeName","src":"2139:4:8"}],"id":5825,"name":"VariableDeclaration","src":"2139:15:8"}],"id":5826,"name":"StructDefinition","src":"1978:183:8"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5852,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5827,"name":"ElementaryTypeName","src":"2387:5:8"}],"id":5828,"name":"VariableDeclaration","src":"2387:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5852,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5829,"name":"ElementaryTypeName","src":"2406:4:8"}],"id":5830,"name":"VariableDeclaration","src":"2406:11:8"}],"id":5831,"name":"ParameterList","src":"2386:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":5852,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5832,"name":"UserDefinedTypeName","src":"2442:10:8"}],"id":5833,"name":"VariableDeclaration","src":"2442:21:8"}],"id":5834,"name":"ParameterList","src":"2441:23:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5833,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5835,"name":"Identifier","src":"2475:3:8"}],"id":5837,"name":"MemberAccess","src":"2475:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5828,"type":"bytes memory","value":"self"},"id":5838,"name":"Identifier","src":"2486:4:8"}],"id":5839,"name":"Assignment","src":"2475:15:8"}],"id":5840,"name":"ExpressionStatement","src":"2475:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":5825,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5833,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5841,"name":"Identifier","src":"2500:3:8"}],"id":5843,"name":"MemberAccess","src":"2500:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5830,"type":"uint256","value":"offset"},"id":5844,"name":"Identifier","src":"2517:6:8"}],"id":5845,"name":"Assignment","src":"2500:23:8"}],"id":5846,"name":"ExpressionStatement","src":"2500:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$5826_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5969,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":5847,"name":"Identifier","src":"2533:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5833,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5848,"name":"Identifier","src":"2538:3:8"}],"id":5849,"name":"FunctionCall","src":"2533:9:8"}],"id":5850,"name":"ExpressionStatement","src":"2533:9:8"}],"id":5851,"name":"Block","src":"2465:84:8"}],"id":5852,"name":"FunctionDefinition","src":"2367:182:8"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5867,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5853,"name":"UserDefinedTypeName","src":"2734:10:8"}],"id":5854,"name":"VariableDeclaration","src":"2734:22:8"}],"id":5855,"name":"ParameterList","src":"2733:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5867,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5856,"name":"ElementaryTypeName","src":"2780:4:8"}],"id":5857,"name":"VariableDeclaration","src":"2780:4:8"}],"id":5858,"name":"ParameterList","src":"2779:6:8"},{"children":[{"attributes":{"functionReturnParameters":5858},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5859,"name":"Identifier","src":"2803:4:8"}],"id":5860,"name":"MemberAccess","src":"2803:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5861,"name":"Identifier","src":"2818:4:8"}],"id":5862,"name":"MemberAccess","src":"2818:9:8"}],"id":5863,"name":"MemberAccess","src":"2818:16:8"}],"id":5864,"name":"BinaryOperation","src":"2803:31:8"}],"id":5865,"name":"Return","src":"2796:38:8"}],"id":5866,"name":"Block","src":"2786:55:8"}],"id":5867,"name":"FunctionDefinition","src":"2720:121:8"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5969,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5868,"name":"UserDefinedTypeName","src":"2978:10:8"}],"id":5869,"name":"VariableDeclaration","src":"2978:22:8"}],"id":5870,"name":"ParameterList","src":"2977:24:8"},{"attributes":{"parameters":[null]},"children":[],"id":5871,"name":"ParameterList","src":"3016:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5872,"name":"Identifier","src":"3026:4:8"}],"id":5874,"name":"MemberAccess","src":"3026:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":5825,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5875,"name":"Identifier","src":"3040:4:8"}],"id":5876,"name":"MemberAccess","src":"3040:15:8"}],"id":5877,"name":"Assignment","src":"3026:29:8"}],"id":5878,"name":"ExpressionStatement","src":"3026:29:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5879,"name":"Identifier","src":"3069:4:8"}],"id":5880,"name":"MemberAccess","src":"3069:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5881,"name":"Identifier","src":"3084:4:8"}],"id":5882,"name":"MemberAccess","src":"3084:9:8"}],"id":5883,"name":"MemberAccess","src":"3084:16:8"}],"id":5884,"name":"BinaryOperation","src":"3069:31:8"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":5871},"id":5885,"name":"Return","src":"3116:7:8"}],"id":5886,"name":"Block","src":"3102:31:8"}],"id":5887,"name":"IfStatement","src":"3065:68:8"},{"attributes":{"assignments":[5889]},"children":[{"attributes":{"constant":false,"name":"off","scope":5968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5888,"name":"ElementaryTypeName","src":"3168:4:8"}],"id":5889,"name":"VariableDeclaration","src":"3168:8:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5890,"name":"Identifier","src":"3179:4:8"}],"id":5891,"name":"MemberAccess","src":"3179:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5892,"name":"Identifier","src":"3193:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5893,"name":"Identifier","src":"3204:4:8"}],"id":5894,"name":"MemberAccess","src":"3204:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5895,"name":"Identifier","src":"3215:4:8"}],"id":5896,"name":"MemberAccess","src":"3215:11:8"}],"id":5897,"name":"FunctionCall","src":"3193:34:8"}],"id":5898,"name":"BinaryOperation","src":"3179:48:8"}],"id":5899,"name":"VariableDeclarationStatement","src":"3168:59:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":5817,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5900,"name":"Identifier","src":"3275:4:8"}],"id":5902,"name":"MemberAccess","src":"3275:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6632,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5903,"name":"Identifier","src":"3290:4:8"}],"id":5904,"name":"MemberAccess","src":"3290:9:8"}],"id":5905,"name":"MemberAccess","src":"3290:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5906,"name":"Identifier","src":"3311:3:8"}],"id":5907,"name":"FunctionCall","src":"3290:25:8"}],"id":5908,"name":"Assignment","src":"3275:40:8"}],"id":5909,"name":"ExpressionStatement","src":"3275:40:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5910,"name":"Identifier","src":"3325:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5911,"name":"Literal","src":"3332:1:8"}],"id":5912,"name":"Assignment","src":"3325:8:8"}],"id":5913,"name":"ExpressionStatement","src":"3325:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":5819,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5914,"name":"Identifier","src":"3343:4:8"}],"id":5916,"name":"MemberAccess","src":"3343:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6632,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5917,"name":"Identifier","src":"3356:4:8"}],"id":5918,"name":"MemberAccess","src":"3356:9:8"}],"id":5919,"name":"MemberAccess","src":"3356:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5920,"name":"Identifier","src":"3377:3:8"}],"id":5921,"name":"FunctionCall","src":"3356:25:8"}],"id":5922,"name":"Assignment","src":"3343:38:8"}],"id":5923,"name":"ExpressionStatement","src":"3343:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5924,"name":"Identifier","src":"3391:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5925,"name":"Literal","src":"3398:1:8"}],"id":5926,"name":"Assignment","src":"3391:8:8"}],"id":5927,"name":"ExpressionStatement","src":"3391:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":5821,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5928,"name":"Identifier","src":"3409:4:8"}],"id":5930,"name":"MemberAccess","src":"3409:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":6652,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5931,"name":"Identifier","src":"3420:4:8"}],"id":5932,"name":"MemberAccess","src":"3420:9:8"}],"id":5933,"name":"MemberAccess","src":"3420:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5934,"name":"Identifier","src":"3441:3:8"}],"id":5935,"name":"FunctionCall","src":"3420:25:8"}],"id":5936,"name":"Assignment","src":"3409:36:8"}],"id":5937,"name":"ExpressionStatement","src":"3409:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5938,"name":"Identifier","src":"3455:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5939,"name":"Literal","src":"3462:1:8"}],"id":5940,"name":"Assignment","src":"3455:8:8"}],"id":5941,"name":"ExpressionStatement","src":"3455:8:8"},{"attributes":{"assignments":[5943]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":5968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5942,"name":"ElementaryTypeName","src":"3500:4:8"}],"id":5943,"name":"VariableDeclaration","src":"3500:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6632,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5944,"name":"Identifier","src":"3519:4:8"}],"id":5945,"name":"MemberAccess","src":"3519:9:8"}],"id":5946,"name":"MemberAccess","src":"3519:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5947,"name":"Identifier","src":"3540:3:8"}],"id":5948,"name":"FunctionCall","src":"3519:25:8"}],"id":5949,"name":"VariableDeclarationStatement","src":"3500:44:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5950,"name":"Identifier","src":"3554:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5951,"name":"Literal","src":"3561:1:8"}],"id":5952,"name":"Assignment","src":"3554:8:8"}],"id":5953,"name":"ExpressionStatement","src":"3554:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":5823,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5954,"name":"Identifier","src":"3572:4:8"}],"id":5956,"name":"MemberAccess","src":"3572:16:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5957,"name":"Identifier","src":"3591:3:8"}],"id":5958,"name":"Assignment","src":"3572:22:8"}],"id":5959,"name":"ExpressionStatement","src":"3572:22:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":5825,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5960,"name":"Identifier","src":"3604:4:8"}],"id":5962,"name":"MemberAccess","src":"3604:15:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5963,"name":"Identifier","src":"3622:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5943,"type":"uint256","value":"rdataLength"},"id":5964,"name":"Identifier","src":"3628:11:8"}],"id":5965,"name":"BinaryOperation","src":"3622:17:8"}],"id":5966,"name":"Assignment","src":"3604:35:8"}],"id":5967,"name":"ExpressionStatement","src":"3604:35:8"}],"id":5968,"name":"Block","src":"3016:630:8"}],"id":5969,"name":"FunctionDefinition","src":"2964:682:8"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5990,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5970,"name":"UserDefinedTypeName","src":"3836:10:8"}],"id":5971,"name":"VariableDeclaration","src":"3836:22:8"}],"id":5972,"name":"ParameterList","src":"3835:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5990,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5973,"name":"ElementaryTypeName","src":"3882:5:8"}],"id":5974,"name":"VariableDeclaration","src":"3882:12:8"}],"id":5975,"name":"ParameterList","src":"3881:14:8"},{"children":[{"attributes":{"functionReturnParameters":5975},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":6803,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5971,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5976,"name":"Identifier","src":"3913:4:8"}],"id":5977,"name":"MemberAccess","src":"3913:9:8"}],"id":5978,"name":"MemberAccess","src":"3913:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5971,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5979,"name":"Identifier","src":"3933:4:8"}],"id":5980,"name":"MemberAccess","src":"3933:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5981,"name":"Identifier","src":"3946:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5971,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5982,"name":"Identifier","src":"3957:4:8"}],"id":5983,"name":"MemberAccess","src":"3957:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5971,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5984,"name":"Identifier","src":"3968:4:8"}],"id":5985,"name":"MemberAccess","src":"3968:11:8"}],"id":5986,"name":"FunctionCall","src":"3946:34:8"}],"id":5987,"name":"FunctionCall","src":"3913:68:8"}],"id":5988,"name":"Return","src":"3906:75:8"}],"id":5989,"name":"Block","src":"3896:92:8"}],"id":5990,"name":"FunctionDefinition","src":"3822:166:8"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6010,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5991,"name":"UserDefinedTypeName","src":"4176:10:8"}],"id":5992,"name":"VariableDeclaration","src":"4176:22:8"}],"id":5993,"name":"ParameterList","src":"4175:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6010,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5994,"name":"ElementaryTypeName","src":"4222:5:8"}],"id":5995,"name":"VariableDeclaration","src":"4222:12:8"}],"id":5996,"name":"ParameterList","src":"4221:14:8"},{"children":[{"attributes":{"functionReturnParameters":5996},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":6803,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5992,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5997,"name":"Identifier","src":"4253:4:8"}],"id":5998,"name":"MemberAccess","src":"4253:9:8"}],"id":5999,"name":"MemberAccess","src":"4253:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":5823,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5992,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6000,"name":"Identifier","src":"4273:4:8"}],"id":6001,"name":"MemberAccess","src":"4273:16:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":5825,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5992,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6002,"name":"Identifier","src":"4291:4:8"}],"id":6003,"name":"MemberAccess","src":"4291:15:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":5823,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5992,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6004,"name":"Identifier","src":"4309:4:8"}],"id":6005,"name":"MemberAccess","src":"4309:16:8"}],"id":6006,"name":"BinaryOperation","src":"4291:34:8"}],"id":6007,"name":"FunctionCall","src":"4253:73:8"}],"id":6008,"name":"Return","src":"4246:80:8"}],"id":6009,"name":"Block","src":"4236:97:8"}],"id":6010,"name":"FunctionDefinition","src":"4161:172:8"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6130,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6011,"name":"ElementaryTypeName","src":"4675:5:8"}],"id":6012,"name":"VariableDeclaration","src":"4675:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6130,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6013,"name":"ElementaryTypeName","src":"4694:4:8"}],"id":6014,"name":"VariableDeclaration","src":"4694:11:8"},{"attributes":{"constant":false,"name":"rrtype","scope":6130,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6015,"name":"ElementaryTypeName","src":"4707:6:8"}],"id":6016,"name":"VariableDeclaration","src":"4707:13:8"}],"id":6017,"name":"ParameterList","src":"4674:47:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6130,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6018,"name":"ElementaryTypeName","src":"4745:4:8"}],"id":6019,"name":"VariableDeclaration","src":"4745:4:8"}],"id":6020,"name":"ParameterList","src":"4744:6:8"},{"children":[{"attributes":{"assignments":[6022]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":6129,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6021,"name":"ElementaryTypeName","src":"4761:5:8"}],"id":6022,"name":"VariableDeclaration","src":"4761:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6023,"name":"ElementaryTypeNameExpression","src":"4780:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6016,"type":"uint16","value":"rrtype"},"id":6024,"name":"Identifier","src":"4786:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6025,"name":"Literal","src":"4796:1:8"}],"id":6026,"name":"BinaryOperation","src":"4786:11:8"}],"id":6027,"name":"FunctionCall","src":"4780:18:8"}],"id":6028,"name":"VariableDeclarationStatement","src":"4761:37:8"},{"attributes":{"assignments":[6030]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":6129,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6029,"name":"ElementaryTypeName","src":"4808:5:8"}],"id":6030,"name":"VariableDeclaration","src":"4808:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6031,"name":"ElementaryTypeNameExpression","src":"4827:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6016,"type":"uint16","value":"rrtype"},"id":6032,"name":"Identifier","src":"4834:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":6033,"name":"Literal","src":"4843:4:8"}],"id":6034,"name":"BinaryOperation","src":"4834:13:8"}],"id":6035,"name":"TupleExpression","src":"4833:15:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6036,"name":"Literal","src":"4851:1:8"}],"id":6037,"name":"BinaryOperation","src":"4833:19:8"}],"id":6038,"name":"FunctionCall","src":"4827:26:8"}],"id":6039,"name":"VariableDeclarationStatement","src":"4808:45:8"},{"attributes":{"assignments":[6041]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":6129,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6040,"name":"ElementaryTypeName","src":"4863:5:8"}],"id":6041,"name":"VariableDeclaration","src":"4863:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6042,"name":"ElementaryTypeNameExpression","src":"4885:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6043,"name":"ElementaryTypeNameExpression","src":"4891:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6044,"name":"Literal","src":"4897:1:8"}],"id":6045,"name":"FunctionCall","src":"4891:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6046,"name":"ElementaryTypeNameExpression","src":"4904:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":6047,"name":"Literal","src":"4910:1:8"}],"id":6048,"name":"FunctionCall","src":"4904:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6049,"name":"ElementaryTypeNameExpression","src":"4915:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6016,"type":"uint16","value":"rrtype"},"id":6050,"name":"Identifier","src":"4921:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":6051,"name":"Literal","src":"4930:3:8"}],"id":6052,"name":"BinaryOperation","src":"4921:12:8"}],"id":6053,"name":"FunctionCall","src":"4915:19:8"}],"id":6054,"name":"BinaryOperation","src":"4904:30:8"}],"id":6055,"name":"TupleExpression","src":"4903:32:8"}],"id":6056,"name":"BinaryOperation","src":"4891:44:8"}],"id":6057,"name":"FunctionCall","src":"4885:51:8"}],"id":6058,"name":"VariableDeclarationStatement","src":"4863:73:8"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[6060]},"children":[{"attributes":{"constant":false,"name":"off","scope":6126,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6059,"name":"ElementaryTypeName","src":"4951:4:8"}],"id":6060,"name":"VariableDeclaration","src":"4951:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6014,"type":"uint256","value":"offset"},"id":6061,"name":"Identifier","src":"4962:6:8"}],"id":6062,"name":"VariableDeclarationStatement","src":"4951:17:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6063,"name":"Identifier","src":"4970:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"bytes memory","value":"self"},"id":6064,"name":"Identifier","src":"4976:4:8"}],"id":6065,"name":"MemberAccess","src":"4976:11:8"}],"id":6066,"name":"BinaryOperation","src":"4970:17:8"},{"children":[{"attributes":{"assignments":[6068]},"children":[{"attributes":{"constant":false,"name":"window","scope":6125,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6067,"name":"ElementaryTypeName","src":"5004:5:8"}],"id":6068,"name":"VariableDeclaration","src":"5004:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"bytes memory","value":"self"},"id":6069,"name":"Identifier","src":"5019:4:8"}],"id":6070,"name":"MemberAccess","src":"5019:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6071,"name":"Identifier","src":"5034:3:8"}],"id":6072,"name":"FunctionCall","src":"5019:19:8"}],"id":6073,"name":"VariableDeclarationStatement","src":"5004:34:8"},{"attributes":{"assignments":[6075]},"children":[{"attributes":{"constant":false,"name":"len","scope":6125,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6074,"name":"ElementaryTypeName","src":"5052:5:8"}],"id":6075,"name":"VariableDeclaration","src":"5052:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"bytes memory","value":"self"},"id":6076,"name":"Identifier","src":"5064:4:8"}],"id":6077,"name":"MemberAccess","src":"5064:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6078,"name":"Identifier","src":"5079:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6079,"name":"Literal","src":"5085:1:8"}],"id":6080,"name":"BinaryOperation","src":"5079:7:8"}],"id":6081,"name":"FunctionCall","src":"5064:23:8"}],"id":6082,"name":"VariableDeclarationStatement","src":"5052:35:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"uint8","value":"typeWindow"},"id":6083,"name":"Identifier","src":"5105:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"uint8","value":"window"},"id":6084,"name":"Identifier","src":"5118:6:8"}],"id":6085,"name":"BinaryOperation","src":"5105:19:8"},{"children":[{"attributes":{"functionReturnParameters":6020},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6086,"name":"Literal","src":"5213:5:8"}],"id":6087,"name":"Return","src":"5206:12:8"}],"id":6088,"name":"Block","src":"5126:107:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"uint8","value":"typeWindow"},"id":6089,"name":"Identifier","src":"5243:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"uint8","value":"window"},"id":6090,"name":"Identifier","src":"5257:6:8"}],"id":6091,"name":"BinaryOperation","src":"5243:20:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint8","value":"len"},"id":6092,"name":"Identifier","src":"5329:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6093,"name":"Literal","src":"5335:1:8"}],"id":6094,"name":"BinaryOperation","src":"5329:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint8","value":"windowByte"},"id":6095,"name":"Identifier","src":"5340:10:8"}],"id":6096,"name":"BinaryOperation","src":"5329:21:8"},{"children":[{"attributes":{"functionReturnParameters":6020},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6097,"name":"Literal","src":"5443:5:8"}],"id":6098,"name":"Return","src":"5436:12:8"}],"id":6099,"name":"Block","src":"5352:115:8"}],"id":6100,"name":"IfStatement","src":"5325:142:8"},{"attributes":{"functionReturnParameters":6020},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"bytes memory","value":"self"},"id":6101,"name":"Identifier","src":"5492:4:8"}],"id":6102,"name":"MemberAccess","src":"5492:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6103,"name":"Identifier","src":"5507:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint8","value":"windowByte"},"id":6104,"name":"Identifier","src":"5513:10:8"}],"id":6105,"name":"BinaryOperation","src":"5507:16:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6106,"name":"Literal","src":"5526:1:8"}],"id":6107,"name":"BinaryOperation","src":"5507:20:8"}],"id":6108,"name":"FunctionCall","src":"5492:36:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6041,"type":"uint8","value":"windowBitmask"},"id":6109,"name":"Identifier","src":"5531:13:8"}],"id":6110,"name":"BinaryOperation","src":"5492:52:8"}],"id":6111,"name":"TupleExpression","src":"5491:54:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6112,"name":"Literal","src":"5549:1:8"}],"id":6113,"name":"BinaryOperation","src":"5491:59:8"}],"id":6114,"name":"Return","src":"5484:66:8"}],"id":6115,"name":"Block","src":"5265:300:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6116,"name":"Identifier","src":"5630:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint8","value":"len"},"id":6117,"name":"Identifier","src":"5637:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6118,"name":"Literal","src":"5643:1:8"}],"id":6119,"name":"BinaryOperation","src":"5637:7:8"}],"id":6120,"name":"Assignment","src":"5630:14:8"}],"id":6121,"name":"ExpressionStatement","src":"5630:14:8"}],"id":6122,"name":"Block","src":"5571:88:8"}],"id":6123,"name":"IfStatement","src":"5239:420:8"}],"id":6124,"name":"IfStatement","src":"5101:558:8"}],"id":6125,"name":"Block","src":"4990:679:8"}],"id":6126,"name":"ForStatement","src":"4946:723:8"},{"attributes":{"functionReturnParameters":6020},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6127,"name":"Literal","src":"5686:5:8"}],"id":6128,"name":"Return","src":"5679:12:8"}],"id":6129,"name":"Block","src":"4751:947:8"}],"id":6130,"name":"FunctionDefinition","src":"4650:1048:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6285,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6131,"name":"ElementaryTypeName","src":"5726:5:8"}],"id":6132,"name":"VariableDeclaration","src":"5726:17:8"},{"attributes":{"constant":false,"name":"other","scope":6285,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6133,"name":"ElementaryTypeName","src":"5745:5:8"}],"id":6134,"name":"VariableDeclaration","src":"5745:18:8"}],"id":6135,"name":"ParameterList","src":"5725:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6285,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6136,"name":"ElementaryTypeName","src":"5788:3:8"}],"id":6137,"name":"VariableDeclaration","src":"5788:3:8"}],"id":6138,"name":"ParameterList","src":"5787:5:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6596,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6139,"name":"Identifier","src":"5807:4:8"}],"id":6140,"name":"MemberAccess","src":"5807:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6141,"name":"Identifier","src":"5819:5:8"}],"id":6142,"name":"FunctionCall","src":"5807:18:8"},{"children":[{"attributes":{"functionReturnParameters":6138},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6143,"name":"Literal","src":"5848:1:8"}],"id":6144,"name":"Return","src":"5841:8:8"}],"id":6145,"name":"Block","src":"5827:33:8"}],"id":6146,"name":"IfStatement","src":"5803:57:8"},{"attributes":{"assignments":[6148],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6147,"name":"ElementaryTypeName","src":"5870:4:8"}],"id":6148,"name":"VariableDeclaration","src":"5870:8:8"}],"id":6149,"name":"VariableDeclarationStatement","src":"5870:8:8"},{"attributes":{"assignments":[6151],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6150,"name":"ElementaryTypeName","src":"5888:4:8"}],"id":6151,"name":"VariableDeclaration","src":"5888:13:8"}],"id":6152,"name":"VariableDeclarationStatement","src":"5888:13:8"},{"attributes":{"assignments":[6154],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6153,"name":"ElementaryTypeName","src":"5911:4:8"}],"id":6154,"name":"VariableDeclaration","src":"5911:12:8"}],"id":6155,"name":"VariableDeclarationStatement","src":"5911:12:8"},{"attributes":{"assignments":[6157],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6156,"name":"ElementaryTypeName","src":"5933:4:8"}],"id":6157,"name":"VariableDeclaration","src":"5933:17:8"}],"id":6158,"name":"VariableDeclarationStatement","src":"5933:17:8"},{"attributes":{"assignments":[6160]},"children":[{"attributes":{"constant":false,"name":"counts","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6159,"name":"ElementaryTypeName","src":"5960:4:8"}],"id":6160,"name":"VariableDeclaration","src":"5960:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":5811,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":6161,"name":"Identifier","src":"5974:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6162,"name":"Identifier","src":"5985:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6163,"name":"Literal","src":"5991:1:8"}],"id":6164,"name":"FunctionCall","src":"5974:19:8"}],"id":6165,"name":"VariableDeclarationStatement","src":"5960:33:8"},{"attributes":{"assignments":[6167]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6166,"name":"ElementaryTypeName","src":"6003:4:8"}],"id":6167,"name":"VariableDeclaration","src":"6003:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":5811,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":6168,"name":"Identifier","src":"6022:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6169,"name":"Identifier","src":"6033:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6170,"name":"Literal","src":"6040:1:8"}],"id":6171,"name":"FunctionCall","src":"6022:20:8"}],"id":6172,"name":"VariableDeclarationStatement","src":"6003:39:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6173,"name":"Identifier","src":"6153:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"uint256","value":"othercounts"},"id":6174,"name":"Identifier","src":"6162:11:8"}],"id":6175,"name":"BinaryOperation","src":"6153:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"uint256","value":"prevoff"},"id":6176,"name":"Identifier","src":"6189:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6177,"name":"Identifier","src":"6199:3:8"}],"id":6178,"name":"Assignment","src":"6189:13:8"}],"id":6179,"name":"ExpressionStatement","src":"6189:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6180,"name":"Identifier","src":"6216:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6304,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6181,"name":"Identifier","src":"6222:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6182,"name":"Identifier","src":"6231:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6183,"name":"Identifier","src":"6237:3:8"}],"id":6184,"name":"FunctionCall","src":"6222:19:8"}],"id":6185,"name":"Assignment","src":"6216:25:8"}],"id":6186,"name":"ExpressionStatement","src":"6216:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6187,"name":"Identifier","src":"6255:6:8"}],"id":6188,"name":"UnaryOperation","src":"6255:8:8"}],"id":6189,"name":"ExpressionStatement","src":"6255:8:8"}],"id":6190,"name":"Block","src":"6175:99:8"}],"id":6191,"name":"WhileStatement","src":"6146:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"uint256","value":"othercounts"},"id":6192,"name":"Identifier","src":"6291:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6193,"name":"Identifier","src":"6305:6:8"}],"id":6194,"name":"BinaryOperation","src":"6291:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"uint256","value":"otherprevoff"},"id":6195,"name":"Identifier","src":"6327:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6196,"name":"Identifier","src":"6342:8:8"}],"id":6197,"name":"Assignment","src":"6327:23:8"}],"id":6198,"name":"ExpressionStatement","src":"6327:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6199,"name":"Identifier","src":"6364:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6304,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6200,"name":"Identifier","src":"6375:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6201,"name":"Identifier","src":"6384:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6202,"name":"Identifier","src":"6391:8:8"}],"id":6203,"name":"FunctionCall","src":"6375:25:8"}],"id":6204,"name":"Assignment","src":"6364:36:8"}],"id":6205,"name":"ExpressionStatement","src":"6364:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"uint256","value":"othercounts"},"id":6206,"name":"Identifier","src":"6414:11:8"}],"id":6207,"name":"UnaryOperation","src":"6414:13:8"}],"id":6208,"name":"ExpressionStatement","src":"6414:13:8"}],"id":6209,"name":"Block","src":"6313:125:8"}],"id":6210,"name":"WhileStatement","src":"6284:154:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6211,"name":"Identifier","src":"6513:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6212,"name":"Literal","src":"6522:1:8"}],"id":6213,"name":"BinaryOperation","src":"6513:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6542,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6214,"name":"Identifier","src":"6528:4:8"}],"id":6215,"name":"MemberAccess","src":"6528:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6216,"name":"Identifier","src":"6540:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6217,"name":"Identifier","src":"6545:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6218,"name":"Identifier","src":"6552:8:8"}],"id":6219,"name":"FunctionCall","src":"6528:33:8"}],"id":6220,"name":"UnaryOperation","src":"6527:34:8"}],"id":6221,"name":"BinaryOperation","src":"6513:48:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"uint256","value":"prevoff"},"id":6222,"name":"Identifier","src":"6577:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6223,"name":"Identifier","src":"6587:3:8"}],"id":6224,"name":"Assignment","src":"6577:13:8"}],"id":6225,"name":"ExpressionStatement","src":"6577:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6226,"name":"Identifier","src":"6604:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6304,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6227,"name":"Identifier","src":"6610:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6228,"name":"Identifier","src":"6619:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6229,"name":"Identifier","src":"6625:3:8"}],"id":6230,"name":"FunctionCall","src":"6610:19:8"}],"id":6231,"name":"Assignment","src":"6604:25:8"}],"id":6232,"name":"ExpressionStatement","src":"6604:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"uint256","value":"otherprevoff"},"id":6233,"name":"Identifier","src":"6643:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6234,"name":"Identifier","src":"6658:8:8"}],"id":6235,"name":"Assignment","src":"6643:23:8"}],"id":6236,"name":"ExpressionStatement","src":"6643:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6237,"name":"Identifier","src":"6680:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6304,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6238,"name":"Identifier","src":"6691:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6239,"name":"Identifier","src":"6700:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6240,"name":"Identifier","src":"6707:8:8"}],"id":6241,"name":"FunctionCall","src":"6691:25:8"}],"id":6242,"name":"Assignment","src":"6680:36:8"}],"id":6243,"name":"ExpressionStatement","src":"6680:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6244,"name":"Identifier","src":"6730:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6245,"name":"Literal","src":"6740:1:8"}],"id":6246,"name":"Assignment","src":"6730:11:8"}],"id":6247,"name":"ExpressionStatement","src":"6730:11:8"}],"id":6248,"name":"Block","src":"6563:189:8"}],"id":6249,"name":"WhileStatement","src":"6506:246:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6250,"name":"Identifier","src":"6766:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6251,"name":"Literal","src":"6773:1:8"}],"id":6252,"name":"BinaryOperation","src":"6766:8:8"},{"children":[{"attributes":{"functionReturnParameters":6138},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6253,"name":"Literal","src":"6798:1:8"}],"id":6254,"name":"UnaryOperation","src":"6797:2:8"}],"id":6255,"name":"Return","src":"6790:9:8"}],"id":6256,"name":"Block","src":"6776:34:8"}],"id":6257,"name":"IfStatement","src":"6762:48:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6258,"name":"Identifier","src":"6822:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6259,"name":"Literal","src":"6834:1:8"}],"id":6260,"name":"BinaryOperation","src":"6822:13:8"},{"children":[{"attributes":{"functionReturnParameters":6138},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6261,"name":"Literal","src":"6858:1:8"}],"id":6262,"name":"Return","src":"6851:8:8"}],"id":6263,"name":"Block","src":"6837:33:8"}],"id":6264,"name":"IfStatement","src":"6819:51:8"},{"attributes":{"functionReturnParameters":6138},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":6482,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6265,"name":"Identifier","src":"6887:4:8"}],"id":6266,"name":"MemberAccess","src":"6887:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"uint256","value":"prevoff"},"id":6267,"name":"Identifier","src":"6900:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6268,"name":"Literal","src":"6910:1:8"}],"id":6269,"name":"BinaryOperation","src":"6900:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6270,"name":"Identifier","src":"6913:4:8"}],"id":6271,"name":"MemberAccess","src":"6913:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"uint256","value":"prevoff"},"id":6272,"name":"Identifier","src":"6928:7:8"}],"id":6273,"name":"FunctionCall","src":"6913:23:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6274,"name":"Identifier","src":"6938:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"uint256","value":"otherprevoff"},"id":6275,"name":"Identifier","src":"6945:12:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6276,"name":"Literal","src":"6960:1:8"}],"id":6277,"name":"BinaryOperation","src":"6945:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6278,"name":"Identifier","src":"6963:5:8"}],"id":6279,"name":"MemberAccess","src":"6963:15:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"uint256","value":"otherprevoff"},"id":6280,"name":"Identifier","src":"6979:12:8"}],"id":6281,"name":"FunctionCall","src":"6963:29:8"}],"id":6282,"name":"FunctionCall","src":"6887:106:8"}],"id":6283,"name":"Return","src":"6880:113:8"}],"id":6284,"name":"Block","src":"5793:1207:8"}],"id":6285,"name":"FunctionDefinition","src":"5704:1296:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":6304,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6286,"name":"ElementaryTypeName","src":"7024:5:8"}],"id":6287,"name":"VariableDeclaration","src":"7024:17:8"},{"attributes":{"constant":false,"name":"off","scope":6304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6288,"name":"ElementaryTypeName","src":"7043:4:8"}],"id":6289,"name":"VariableDeclaration","src":"7043:8:8"}],"id":6290,"name":"ParameterList","src":"7023:29:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6291,"name":"ElementaryTypeName","src":"7075:4:8"}],"id":6292,"name":"VariableDeclaration","src":"7075:4:8"}],"id":6293,"name":"ParameterList","src":"7074:6:8"},{"children":[{"attributes":{"functionReturnParameters":6293},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6289,"type":"uint256","value":"off"},"id":6294,"name":"Identifier","src":"7098:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6295,"name":"Literal","src":"7104:1:8"}],"id":6296,"name":"BinaryOperation","src":"7098:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6287,"type":"bytes memory","value":"body"},"id":6297,"name":"Identifier","src":"7108:4:8"}],"id":6298,"name":"MemberAccess","src":"7108:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6289,"type":"uint256","value":"off"},"id":6299,"name":"Identifier","src":"7123:3:8"}],"id":6300,"name":"FunctionCall","src":"7108:19:8"}],"id":6301,"name":"BinaryOperation","src":"7098:29:8"}],"id":6302,"name":"Return","src":"7091:36:8"}],"id":6303,"name":"Block","src":"7081:53:8"}],"id":6304,"name":"FunctionDefinition","src":"7006:128:8"}],"id":6305,"name":"ContractDefinition","src":"150:6986:8"}],"id":6306,"name":"SourceUnit","src":"0:7137:8"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[5687]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5620,"name":"PragmaDirective","src":"0:23:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5687],"name":"ResolverBase","scope":5688},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5687,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5621,"name":"ElementaryTypeName","src":"53:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5622,"name":"Literal","src":"97:10:9"}],"id":5623,"name":"VariableDeclaration","src":"53:54:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5687,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5635,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5624,"name":"ElementaryTypeName","src":"141:6:9"}],"id":5625,"name":"VariableDeclaration","src":"141:18:9"}],"id":5626,"name":"ParameterList","src":"140:20:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":5635,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5627,"name":"ElementaryTypeName","src":"181:4:9"}],"id":5628,"name":"VariableDeclaration","src":"181:4:9"}],"id":5629,"name":"ParameterList","src":"180:6:9"},{"children":[{"attributes":{"functionReturnParameters":5629},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5625,"type":"bytes4","value":"interfaceID"},"id":5630,"name":"Identifier","src":"204:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5631,"name":"Identifier","src":"219:17:9"}],"id":5632,"name":"BinaryOperation","src":"204:32:9"}],"id":5633,"name":"Return","src":"197:39:9"}],"id":5634,"name":"Block","src":"187:56:9"}],"id":5635,"name":"FunctionDefinition","src":"114:129:9"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":5687,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5642,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5636,"name":"ElementaryTypeName","src":"271:7:9"}],"id":5637,"name":"VariableDeclaration","src":"271:12:9"}],"id":5638,"name":"ParameterList","src":"270:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":5642,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5639,"name":"ElementaryTypeName","src":"307:4:9"}],"id":5640,"name":"VariableDeclaration","src":"307:4:9"}],"id":5641,"name":"ParameterList","src":"306:6:9"}],"id":5642,"name":"FunctionDefinition","src":"249:64:9"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5654,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5643,"name":"ElementaryTypeName","src":"339:7:9"}],"id":5644,"name":"VariableDeclaration","src":"339:12:9"}],"id":5645,"name":"ParameterList","src":"338:14:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":5646,"name":"Identifier","src":"363:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5642,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":5647,"name":"Identifier","src":"371:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5644,"type":"bytes32","value":"node"},"id":5648,"name":"Identifier","src":"384:4:9"}],"id":5649,"name":"FunctionCall","src":"371:18:9"}],"id":5650,"name":"FunctionCall","src":"363:27:9"}],"id":5651,"name":"ExpressionStatement","src":"363:27:9"},{"id":5652,"name":"PlaceholderStatement","src":"400:1:9"}],"id":5653,"name":"Block","src":"353:55:9"}],"id":5654,"name":"ModifierDefinition","src":"319:89:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":5687,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":5670,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5655,"name":"ElementaryTypeName","src":"438:5:9"}],"id":5656,"name":"VariableDeclaration","src":"438:14:9"}],"id":5657,"name":"ParameterList","src":"437:16:9"},{"children":[{"attributes":{"constant":false,"name":"a","scope":5670,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5658,"name":"ElementaryTypeName","src":"476:15:9"}],"id":5659,"name":"VariableDeclaration","src":"476:17:9"}],"id":5660,"name":"ParameterList","src":"475:19:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":5661,"name":"Identifier","src":"505:7:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5656,"type":"bytes memory","value":"b"},"id":5662,"name":"Identifier","src":"513:1:9"}],"id":5663,"name":"MemberAccess","src":"513:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5664,"name":"Literal","src":"525:2:9"}],"id":5665,"name":"BinaryOperation","src":"513:14:9"}],"id":5666,"name":"FunctionCall","src":"505:23:9"}],"id":5667,"name":"ExpressionStatement","src":"505:23:9"},{"attributes":{"externalReferences":[{"a":{"declaration":5659,"isOffset":false,"isSlot":false,"src":"561:1:9","valueSize":1}},{"b":{"declaration":5656,"isOffset":false,"isSlot":false,"src":"580:1:9","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":5668,"name":"InlineAssembly","src":"538:74:9"}],"id":5669,"name":"Block","src":"495:123:9"}],"id":5670,"name":"FunctionDefinition","src":"414:204:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":5687,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":5686,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5671,"name":"ElementaryTypeName","src":"648:7:9"}],"id":5672,"name":"VariableDeclaration","src":"648:9:9"}],"id":5673,"name":"ParameterList","src":"647:11:9"},{"children":[{"attributes":{"constant":false,"name":"b","scope":5686,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5674,"name":"ElementaryTypeName","src":"681:5:9"}],"id":5675,"name":"VariableDeclaration","src":"681:14:9"}],"id":5676,"name":"ParameterList","src":"680:16:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5675,"type":"bytes memory","value":"b"},"id":5677,"name":"Identifier","src":"707:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5678,"name":"ElementaryTypeName","src":"715:5:9"}],"id":5679,"name":"NewExpression","src":"711:9:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5680,"name":"Literal","src":"721:2:9"}],"id":5681,"name":"FunctionCall","src":"711:13:9"}],"id":5682,"name":"Assignment","src":"707:17:9"}],"id":5683,"name":"ExpressionStatement","src":"707:17:9"},{"attributes":{"externalReferences":[{"b":{"declaration":5675,"isOffset":false,"isSlot":false,"src":"768:1:9","valueSize":1}},{"a":{"declaration":5672,"isOffset":false,"isSlot":false,"src":"780:1:9","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":5684,"name":"InlineAssembly","src":"734:73:9"}],"id":5685,"name":"Block","src":"697:116:9"}],"id":5686,"name":"FunctionDefinition","src":"624:189:9"}],"id":5687,"name":"ContractDefinition","src":"25:790:9"}],"id":5688,"name":"SourceUnit","src":"0:816:9"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[4467]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4333,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4468,"symbolAliases":[null],"unitAlias":""},"id":4334,"name":"ImportDirective","src":"25:29:10"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4467,5687],"name":"ABIResolver","scope":4468},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":4335,"name":"UserDefinedTypeName","src":"80:12:10"}],"id":4336,"name":"InheritanceSpecifier","src":"80:12:10"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":4467,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4337,"name":"ElementaryTypeName","src":"99:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":4338,"name":"Literal","src":"142:10:10"}],"id":4339,"name":"VariableDeclaration","src":"99:53:10"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4345,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4340,"name":"ElementaryTypeName","src":"176:7:10"}],"id":4341,"name":"VariableDeclaration","src":"176:20:10"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4342,"name":"ElementaryTypeName","src":"198:7:10"}],"id":4343,"name":"VariableDeclaration","src":"198:27:10"}],"id":4344,"name":"ParameterList","src":"175:51:10"}],"id":4345,"name":"EventDefinition","src":"159:68:10"},{"attributes":{"constant":false,"name":"abis","scope":4467,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4346,"name":"ElementaryTypeName","src":"241:7:10"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4347,"name":"ElementaryTypeName","src":"258:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":4348,"name":"ElementaryTypeName","src":"267:5:10"}],"id":4349,"name":"Mapping","src":"250:23:10"}],"id":4350,"name":"Mapping","src":"233:41:10"}],"id":4351,"name":"VariableDeclaration","src":"233:46:10"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":4467,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4389,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4352,"name":"ElementaryTypeName","src":"598:7:10"}],"id":4353,"name":"VariableDeclaration","src":"598:12:10"},{"attributes":{"constant":false,"name":"contentType","scope":4389,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4354,"name":"ElementaryTypeName","src":"612:7:10"}],"id":4355,"name":"VariableDeclaration","src":"612:19:10"},{"attributes":{"constant":false,"name":"data","scope":4389,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4356,"name":"ElementaryTypeName","src":"633:5:10"}],"id":4357,"name":"VariableDeclaration","src":"633:19:10"}],"id":4358,"name":"ParameterList","src":"597:56:10"},{"attributes":{"parameters":[null]},"children":[],"id":4362,"name":"ParameterList","src":"680:0:10"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4359,"name":"Identifier","src":"663:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"bytes32","value":"node"},"id":4360,"name":"Identifier","src":"674:4:10"}],"id":4361,"name":"ModifierInvocation","src":"663:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":4363,"name":"Identifier","src":"735:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"contentType"},"id":4364,"name":"Identifier","src":"745:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4365,"name":"Literal","src":"759:1:10"}],"id":4366,"name":"BinaryOperation","src":"745:15:10"}],"id":4367,"name":"TupleExpression","src":"744:17:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"contentType"},"id":4368,"name":"Identifier","src":"764:11:10"}],"id":4369,"name":"BinaryOperation","src":"744:31:10"}],"id":4370,"name":"TupleExpression","src":"743:33:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4371,"name":"Literal","src":"780:1:10"}],"id":4372,"name":"BinaryOperation","src":"743:38:10"}],"id":4373,"name":"FunctionCall","src":"735:47:10"}],"id":4374,"name":"ExpressionStatement","src":"735:47:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4351,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4375,"name":"Identifier","src":"793:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"bytes32","value":"node"},"id":4376,"name":"Identifier","src":"798:4:10"}],"id":4378,"name":"IndexAccess","src":"793:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"contentType"},"id":4377,"name":"Identifier","src":"804:11:10"}],"id":4379,"name":"IndexAccess","src":"793:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4357,"type":"bytes calldata","value":"data"},"id":4380,"name":"Identifier","src":"819:4:10"}],"id":4381,"name":"Assignment","src":"793:30:10"}],"id":4382,"name":"ExpressionStatement","src":"793:30:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":4383,"name":"Identifier","src":"838:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"bytes32","value":"node"},"id":4384,"name":"Identifier","src":"849:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"contentType"},"id":4385,"name":"Identifier","src":"855:11:10"}],"id":4386,"name":"FunctionCall","src":"838:29:10"}],"id":4387,"name":"EmitStatement","src":"833:34:10"}],"id":4388,"name":"Block","src":"680:194:10"}],"id":4389,"name":"FunctionDefinition","src":"582:292:10"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":4467,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4449,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4390,"name":"ElementaryTypeName","src":"1208:7:10"}],"id":4391,"name":"VariableDeclaration","src":"1208:12:10"},{"attributes":{"constant":false,"name":"contentTypes","scope":4449,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4392,"name":"ElementaryTypeName","src":"1222:7:10"}],"id":4393,"name":"VariableDeclaration","src":"1222:20:10"}],"id":4394,"name":"ParameterList","src":"1207:36:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":4449,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4395,"name":"ElementaryTypeName","src":"1267:7:10"}],"id":4396,"name":"VariableDeclaration","src":"1267:7:10"},{"attributes":{"constant":false,"name":"","scope":4449,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4397,"name":"ElementaryTypeName","src":"1276:5:10"}],"id":4398,"name":"VariableDeclaration","src":"1276:12:10"}],"id":4399,"name":"ParameterList","src":"1266:23:10"},{"children":[{"attributes":{"assignments":[4403]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":4448,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4400,"name":"ElementaryTypeName","src":"1308:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":4401,"name":"ElementaryTypeName","src":"1317:5:10"}],"id":4402,"name":"Mapping","src":"1300:23:10"}],"id":4403,"name":"VariableDeclaration","src":"1300:38:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4351,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4404,"name":"Identifier","src":"1341:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4391,"type":"bytes32","value":"node"},"id":4405,"name":"Identifier","src":"1346:4:10"}],"id":4406,"name":"IndexAccess","src":"1341:10:10"}],"id":4407,"name":"VariableDeclarationStatement","src":"1300:51:10"},{"children":[{"attributes":{"assignments":[4409]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":4441,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4408,"name":"ElementaryTypeName","src":"1367:7:10"}],"id":4409,"name":"VariableDeclaration","src":"1367:19:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4410,"name":"Literal","src":"1389:1:10"}],"id":4411,"name":"VariableDeclarationStatement","src":"1367:23:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4412,"name":"Identifier","src":"1392:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4393,"type":"uint256","value":"contentTypes"},"id":4413,"name":"Identifier","src":"1407:12:10"}],"id":4414,"name":"BinaryOperation","src":"1392:27:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4415,"name":"Identifier","src":"1421:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4416,"name":"Literal","src":"1437:1:10"}],"id":4417,"name":"Assignment","src":"1421:17:10"}],"id":4418,"name":"ExpressionStatement","src":"1421:17:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4419,"name":"Identifier","src":"1459:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4393,"type":"uint256","value":"contentTypes"},"id":4420,"name":"Identifier","src":"1473:12:10"}],"id":4421,"name":"BinaryOperation","src":"1459:26:10"}],"id":4422,"name":"TupleExpression","src":"1458:28:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4423,"name":"Literal","src":"1490:1:10"}],"id":4424,"name":"BinaryOperation","src":"1458:33:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4403,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4425,"name":"Identifier","src":"1495:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4426,"name":"Identifier","src":"1502:11:10"}],"id":4427,"name":"IndexAccess","src":"1495:19:10"}],"id":4428,"name":"MemberAccess","src":"1495:26:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4429,"name":"Literal","src":"1524:1:10"}],"id":4430,"name":"BinaryOperation","src":"1495:30:10"}],"id":4431,"name":"BinaryOperation","src":"1458:67:10"},{"children":[{"attributes":{"functionReturnParameters":4399},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4432,"name":"Identifier","src":"1553:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4403,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4433,"name":"Identifier","src":"1566:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4434,"name":"Identifier","src":"1573:11:10"}],"id":4435,"name":"IndexAccess","src":"1566:19:10"}],"id":4436,"name":"TupleExpression","src":"1552:34:10"}],"id":4437,"name":"Return","src":"1545:41:10"}],"id":4438,"name":"Block","src":"1527:74:10"}],"id":4439,"name":"IfStatement","src":"1454:147:10"}],"id":4440,"name":"Block","src":"1440:171:10"}],"id":4441,"name":"ForStatement","src":"1362:249:10"},{"attributes":{"functionReturnParameters":4399},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4442,"name":"Literal","src":"1629:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4443,"name":"ElementaryTypeNameExpression","src":"1632:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4444,"name":"Literal","src":"1638:2:10"}],"id":4445,"name":"FunctionCall","src":"1632:9:10"}],"id":4446,"name":"TupleExpression","src":"1628:14:10"}],"id":4447,"name":"Return","src":"1621:21:10"}],"id":4448,"name":"Block","src":"1290:359:10"}],"id":4449,"name":"FunctionDefinition","src":"1195:454:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4467,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4466,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4450,"name":"ElementaryTypeName","src":"1682:6:10"}],"id":4451,"name":"VariableDeclaration","src":"1682:18:10"}],"id":4452,"name":"ParameterList","src":"1681:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":4466,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4453,"name":"ElementaryTypeName","src":"1722:4:10"}],"id":4454,"name":"VariableDeclaration","src":"1722:4:10"}],"id":4455,"name":"ParameterList","src":"1721:6:10"},{"children":[{"attributes":{"functionReturnParameters":4455},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4451,"type":"bytes4","value":"interfaceID"},"id":4456,"name":"Identifier","src":"1745:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":4457,"name":"Identifier","src":"1760:16:10"}],"id":4458,"name":"BinaryOperation","src":"1745:31:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7078,"type":"contract super ABIResolver","value":"super"},"id":4459,"name":"Identifier","src":"1780:5:10"}],"id":4460,"name":"MemberAccess","src":"1780:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4451,"type":"bytes4","value":"interfaceID"},"id":4461,"name":"Identifier","src":"1804:11:10"}],"id":4462,"name":"FunctionCall","src":"1780:36:10"}],"id":4463,"name":"BinaryOperation","src":"1745:71:10"}],"id":4464,"name":"Return","src":"1738:78:10"}],"id":4465,"name":"Block","src":"1728:95:10"}],"id":4466,"name":"FunctionDefinition","src":"1655:168:10"}],"id":4467,"name":"ContractDefinition","src":"56:1769:10"}],"id":4468,"name":"SourceUnit","src":"0:1826:10"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[4626]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4469,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4627,"symbolAliases":[null],"unitAlias":""},"id":4470,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4626,5687],"name":"AddrResolver","scope":4627},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":4471,"name":"UserDefinedTypeName","src":"81:12:11"}],"id":4472,"name":"InheritanceSpecifier","src":"81:12:11"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":4626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4473,"name":"ElementaryTypeName","src":"100:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":4474,"name":"Literal","src":"144:10:11"}],"id":4475,"name":"VariableDeclaration","src":"100:54:11"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":4626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4476,"name":"ElementaryTypeName","src":"160:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":4477,"name":"Literal","src":"207:10:11"}],"id":4478,"name":"VariableDeclaration","src":"160:57:11"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":4626,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4479,"name":"ElementaryTypeName","src":"223:4:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":4480,"name":"Literal","src":"261:2:11"}],"id":4481,"name":"VariableDeclaration","src":"223:40:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4487,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4482,"name":"ElementaryTypeName","src":"288:7:11"}],"id":4483,"name":"VariableDeclaration","src":"288:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":4487,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4484,"name":"ElementaryTypeName","src":"310:7:11"}],"id":4485,"name":"VariableDeclaration","src":"310:9:11"}],"id":4486,"name":"ParameterList","src":"287:33:11"}],"id":4487,"name":"EventDefinition","src":"270:51:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4495,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4488,"name":"ElementaryTypeName","src":"347:7:11"}],"id":4489,"name":"VariableDeclaration","src":"347:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":4495,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4490,"name":"ElementaryTypeName","src":"369:4:11"}],"id":4491,"name":"VariableDeclaration","src":"369:13:11"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":4495,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4492,"name":"ElementaryTypeName","src":"384:5:11"}],"id":4493,"name":"VariableDeclaration","src":"384:16:11"}],"id":4494,"name":"ParameterList","src":"346:55:11"}],"id":4495,"name":"EventDefinition","src":"326:76:11"},{"attributes":{"constant":false,"name":"_addresses","scope":4626,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4496,"name":"ElementaryTypeName","src":"416:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4497,"name":"ElementaryTypeName","src":"433:4:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":4498,"name":"ElementaryTypeName","src":"439:5:11"}],"id":4499,"name":"Mapping","src":"425:20:11"}],"id":4500,"name":"Mapping","src":"408:38:11"}],"id":4501,"name":"VariableDeclaration","src":"408:49:11"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":4626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4520,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4502,"name":"ElementaryTypeName","src":"698:7:11"}],"id":4503,"name":"VariableDeclaration","src":"698:12:11"},{"attributes":{"constant":false,"name":"a","scope":4520,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4504,"name":"ElementaryTypeName","src":"712:7:11"}],"id":4505,"name":"VariableDeclaration","src":"712:9:11"}],"id":4506,"name":"ParameterList","src":"697:25:11"},{"attributes":{"parameters":[null]},"children":[],"id":4510,"name":"ParameterList","src":"749:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4507,"name":"Identifier","src":"732:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4503,"type":"bytes32","value":"node"},"id":4508,"name":"Identifier","src":"743:4:11"}],"id":4509,"name":"ModifierInvocation","src":"732:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4588,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":4511,"name":"Identifier","src":"759:15:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4503,"type":"bytes32","value":"node"},"id":4512,"name":"Identifier","src":"775:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4513,"name":"Identifier","src":"781:13:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5686,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":4514,"name":"Identifier","src":"796:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4505,"type":"address","value":"a"},"id":4515,"name":"Identifier","src":"811:1:11"}],"id":4516,"name":"FunctionCall","src":"796:17:11"}],"id":4517,"name":"FunctionCall","src":"759:55:11"}],"id":4518,"name":"ExpressionStatement","src":"759:55:11"}],"id":4519,"name":"Block","src":"749:72:11"}],"id":4520,"name":"FunctionDefinition","src":"681:140:11"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":4626,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4549,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4521,"name":"ElementaryTypeName","src":"994:7:11"}],"id":4522,"name":"VariableDeclaration","src":"994:12:11"}],"id":4523,"name":"ParameterList","src":"993:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":4549,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4524,"name":"ElementaryTypeName","src":"1029:15:11"}],"id":4525,"name":"VariableDeclaration","src":"1029:15:11"}],"id":4526,"name":"ParameterList","src":"1028:17:11"},{"children":[{"attributes":{"assignments":[4528]},"children":[{"attributes":{"constant":false,"name":"a","scope":4548,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4527,"name":"ElementaryTypeName","src":"1056:5:11"}],"id":4528,"name":"VariableDeclaration","src":"1056:14:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[4549,4604],"referencedDeclaration":4604,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":4529,"name":"Identifier","src":"1073:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4522,"type":"bytes32","value":"node"},"id":4530,"name":"Identifier","src":"1078:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4531,"name":"Identifier","src":"1084:13:11"}],"id":4532,"name":"FunctionCall","src":"1073:25:11"}],"id":4533,"name":"VariableDeclarationStatement","src":"1056:42:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4528,"type":"bytes memory","value":"a"},"id":4534,"name":"Identifier","src":"1111:1:11"}],"id":4535,"name":"MemberAccess","src":"1111:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4536,"name":"Literal","src":"1123:1:11"}],"id":4537,"name":"BinaryOperation","src":"1111:13:11"},{"children":[{"attributes":{"functionReturnParameters":4526},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4538,"name":"ElementaryTypeNameExpression","src":"1147:7:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4539,"name":"Literal","src":"1155:1:11"}],"id":4540,"name":"FunctionCall","src":"1147:10:11"}],"id":4541,"name":"Return","src":"1140:17:11"}],"id":4542,"name":"Block","src":"1126:42:11"}],"id":4543,"name":"IfStatement","src":"1108:60:11"},{"attributes":{"functionReturnParameters":4526},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5670,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":4544,"name":"Identifier","src":"1184:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4528,"type":"bytes memory","value":"a"},"id":4545,"name":"Identifier","src":"1199:1:11"}],"id":4546,"name":"FunctionCall","src":"1184:17:11"}],"id":4547,"name":"Return","src":"1177:24:11"}],"id":4548,"name":"Block","src":"1046:162:11"}],"id":4549,"name":"FunctionDefinition","src":"980:228:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":4626,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4588,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4550,"name":"ElementaryTypeName","src":"1239:7:11"}],"id":4551,"name":"VariableDeclaration","src":"1239:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":4588,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4552,"name":"ElementaryTypeName","src":"1253:4:11"}],"id":4553,"name":"VariableDeclaration","src":"1253:13:11"},{"attributes":{"constant":false,"name":"a","scope":4588,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4554,"name":"ElementaryTypeName","src":"1268:5:11"}],"id":4555,"name":"VariableDeclaration","src":"1268:14:11"}],"id":4556,"name":"ParameterList","src":"1238:45:11"},{"attributes":{"parameters":[null]},"children":[],"id":4560,"name":"ParameterList","src":"1308:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4557,"name":"Identifier","src":"1291:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"bytes32","value":"node"},"id":4558,"name":"Identifier","src":"1302:4:11"}],"id":4559,"name":"ModifierInvocation","src":"1291:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4495,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":4561,"name":"Identifier","src":"1323:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"bytes32","value":"node"},"id":4562,"name":"Identifier","src":"1338:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"uint256","value":"coinType"},"id":4563,"name":"Identifier","src":"1344:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"bytes memory","value":"a"},"id":4564,"name":"Identifier","src":"1354:1:11"}],"id":4565,"name":"FunctionCall","src":"1323:33:11"}],"id":4566,"name":"EmitStatement","src":"1318:38:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"uint256","value":"coinType"},"id":4567,"name":"Identifier","src":"1369:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4568,"name":"Identifier","src":"1381:13:11"}],"id":4569,"name":"BinaryOperation","src":"1369:25:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4487,"type":"function (bytes32,address)","value":"AddrChanged"},"id":4570,"name":"Identifier","src":"1415:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"bytes32","value":"node"},"id":4571,"name":"Identifier","src":"1427:4:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5670,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":4572,"name":"Identifier","src":"1433:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"bytes memory","value":"a"},"id":4573,"name":"Identifier","src":"1448:1:11"}],"id":4574,"name":"FunctionCall","src":"1433:17:11"}],"id":4575,"name":"FunctionCall","src":"1415:36:11"}],"id":4576,"name":"EmitStatement","src":"1410:41:11"}],"id":4577,"name":"Block","src":"1396:66:11"}],"id":4578,"name":"IfStatement","src":"1366:96:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4501,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":4579,"name":"Identifier","src":"1471:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"bytes32","value":"node"},"id":4580,"name":"Identifier","src":"1482:4:11"}],"id":4582,"name":"IndexAccess","src":"1471:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"uint256","value":"coinType"},"id":4581,"name":"Identifier","src":"1488:8:11"}],"id":4583,"name":"IndexAccess","src":"1471:26:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"bytes memory","value":"a"},"id":4584,"name":"Identifier","src":"1500:1:11"}],"id":4585,"name":"Assignment","src":"1471:30:11"}],"id":4586,"name":"ExpressionStatement","src":"1471:30:11"}],"id":4587,"name":"Block","src":"1308:200:11"}],"id":4588,"name":"FunctionDefinition","src":"1214:294:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":4626,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4604,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4589,"name":"ElementaryTypeName","src":"1528:7:11"}],"id":4590,"name":"VariableDeclaration","src":"1528:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":4604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4591,"name":"ElementaryTypeName","src":"1542:4:11"}],"id":4592,"name":"VariableDeclaration","src":"1542:13:11"}],"id":4593,"name":"ParameterList","src":"1527:29:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":4604,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4594,"name":"ElementaryTypeName","src":"1577:5:11"}],"id":4595,"name":"VariableDeclaration","src":"1577:12:11"}],"id":4596,"name":"ParameterList","src":"1576:14:11"},{"children":[{"attributes":{"functionReturnParameters":4596},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4501,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":4597,"name":"Identifier","src":"1608:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4590,"type":"bytes32","value":"node"},"id":4598,"name":"Identifier","src":"1619:4:11"}],"id":4599,"name":"IndexAccess","src":"1608:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4592,"type":"uint256","value":"coinType"},"id":4600,"name":"Identifier","src":"1625:8:11"}],"id":4601,"name":"IndexAccess","src":"1608:26:11"}],"id":4602,"name":"Return","src":"1601:33:11"}],"id":4603,"name":"Block","src":"1591:50:11"}],"id":4604,"name":"FunctionDefinition","src":"1514:127:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4626,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4625,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4605,"name":"ElementaryTypeName","src":"1674:6:11"}],"id":4606,"name":"VariableDeclaration","src":"1674:18:11"}],"id":4607,"name":"ParameterList","src":"1673:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":4625,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4608,"name":"ElementaryTypeName","src":"1714:4:11"}],"id":4609,"name":"VariableDeclaration","src":"1714:4:11"}],"id":4610,"name":"ParameterList","src":"1713:6:11"},{"children":[{"attributes":{"functionReturnParameters":4610},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4606,"type":"bytes4","value":"interfaceID"},"id":4611,"name":"Identifier","src":"1737:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4475,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":4612,"name":"Identifier","src":"1752:17:11"}],"id":4613,"name":"BinaryOperation","src":"1737:32:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4606,"type":"bytes4","value":"interfaceID"},"id":4614,"name":"Identifier","src":"1773:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4478,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":4615,"name":"Identifier","src":"1788:20:11"}],"id":4616,"name":"BinaryOperation","src":"1773:35:11"}],"id":4617,"name":"BinaryOperation","src":"1737:71:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7080,"type":"contract super AddrResolver","value":"super"},"id":4618,"name":"Identifier","src":"1812:5:11"}],"id":4619,"name":"MemberAccess","src":"1812:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4606,"type":"bytes4","value":"interfaceID"},"id":4620,"name":"Identifier","src":"1836:11:11"}],"id":4621,"name":"FunctionCall","src":"1812:36:11"}],"id":4622,"name":"BinaryOperation","src":"1737:111:11"}],"id":4623,"name":"Return","src":"1730:118:11"}],"id":4624,"name":"Block","src":"1720:135:11"}],"id":4625,"name":"FunctionDefinition","src":"1647:208:11"}],"id":4626,"name":"ContractDefinition","src":"56:1801:11"}],"id":4627,"name":"SourceUnit","src":"0:1857:11"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[4696]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4628,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4697,"symbolAliases":[null],"unitAlias":""},"id":4629,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4696,5687],"name":"ContentHashResolver","scope":4697},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":4630,"name":"UserDefinedTypeName","src":"88:12:12"}],"id":4631,"name":"InheritanceSpecifier","src":"88:12:12"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":4696,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4632,"name":"ElementaryTypeName","src":"107:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":4633,"name":"Literal","src":"159:10:12"}],"id":4634,"name":"VariableDeclaration","src":"107:62:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4640,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4635,"name":"ElementaryTypeName","src":"201:7:12"}],"id":4636,"name":"VariableDeclaration","src":"201:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":4640,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4637,"name":"ElementaryTypeName","src":"223:5:12"}],"id":4638,"name":"VariableDeclaration","src":"223:10:12"}],"id":4639,"name":"ParameterList","src":"200:34:12"}],"id":4640,"name":"EventDefinition","src":"176:59:12"},{"attributes":{"constant":false,"name":"hashes","scope":4696,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4641,"name":"ElementaryTypeName","src":"249:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":4642,"name":"ElementaryTypeName","src":"258:5:12"}],"id":4643,"name":"Mapping","src":"241:23:12"}],"id":4644,"name":"VariableDeclaration","src":"241:30:12"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":4696,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4666,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4645,"name":"ElementaryTypeName","src":"529:7:12"}],"id":4646,"name":"VariableDeclaration","src":"529:12:12"},{"attributes":{"constant":false,"name":"hash","scope":4666,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4647,"name":"ElementaryTypeName","src":"543:5:12"}],"id":4648,"name":"VariableDeclaration","src":"543:19:12"}],"id":4649,"name":"ParameterList","src":"528:35:12"},{"attributes":{"parameters":[null]},"children":[],"id":4653,"name":"ParameterList","src":"590:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4650,"name":"Identifier","src":"573:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4646,"type":"bytes32","value":"node"},"id":4651,"name":"Identifier","src":"584:4:12"}],"id":4652,"name":"ModifierInvocation","src":"573:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4644,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":4654,"name":"Identifier","src":"600:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4646,"type":"bytes32","value":"node"},"id":4655,"name":"Identifier","src":"607:4:12"}],"id":4656,"name":"IndexAccess","src":"600:12:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4648,"type":"bytes calldata","value":"hash"},"id":4657,"name":"Identifier","src":"615:4:12"}],"id":4658,"name":"Assignment","src":"600:19:12"}],"id":4659,"name":"ExpressionStatement","src":"600:19:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":4640,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":4660,"name":"Identifier","src":"634:18:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4646,"type":"bytes32","value":"node"},"id":4661,"name":"Identifier","src":"653:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4648,"type":"bytes calldata","value":"hash"},"id":4662,"name":"Identifier","src":"659:4:12"}],"id":4663,"name":"FunctionCall","src":"634:30:12"}],"id":4664,"name":"EmitStatement","src":"629:35:12"}],"id":4665,"name":"Block","src":"590:81:12"}],"id":4666,"name":"FunctionDefinition","src":"505:166:12"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":4696,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4678,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4667,"name":"ElementaryTypeName","src":"859:7:12"}],"id":4668,"name":"VariableDeclaration","src":"859:12:12"}],"id":4669,"name":"ParameterList","src":"858:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":4678,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4670,"name":"ElementaryTypeName","src":"896:5:12"}],"id":4671,"name":"VariableDeclaration","src":"896:12:12"}],"id":4672,"name":"ParameterList","src":"895:14:12"},{"children":[{"attributes":{"functionReturnParameters":4672},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4644,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":4673,"name":"Identifier","src":"927:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4668,"type":"bytes32","value":"node"},"id":4674,"name":"Identifier","src":"934:4:12"}],"id":4675,"name":"IndexAccess","src":"927:12:12"}],"id":4676,"name":"Return","src":"920:19:12"}],"id":4677,"name":"Block","src":"910:36:12"}],"id":4678,"name":"FunctionDefinition","src":"838:108:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4696,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4695,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4679,"name":"ElementaryTypeName","src":"979:6:12"}],"id":4680,"name":"VariableDeclaration","src":"979:18:12"}],"id":4681,"name":"ParameterList","src":"978:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":4695,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4682,"name":"ElementaryTypeName","src":"1019:4:12"}],"id":4683,"name":"VariableDeclaration","src":"1019:4:12"}],"id":4684,"name":"ParameterList","src":"1018:6:12"},{"children":[{"attributes":{"functionReturnParameters":4684},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4680,"type":"bytes4","value":"interfaceID"},"id":4685,"name":"Identifier","src":"1042:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4634,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":4686,"name":"Identifier","src":"1057:25:12"}],"id":4687,"name":"BinaryOperation","src":"1042:40:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7082,"type":"contract super ContentHashResolver","value":"super"},"id":4688,"name":"Identifier","src":"1086:5:12"}],"id":4689,"name":"MemberAccess","src":"1086:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4680,"type":"bytes4","value":"interfaceID"},"id":4690,"name":"Identifier","src":"1110:11:12"}],"id":4691,"name":"FunctionCall","src":"1086:36:12"}],"id":4692,"name":"BinaryOperation","src":"1042:80:12"}],"id":4693,"name":"Return","src":"1035:87:12"}],"id":4694,"name":"Block","src":"1025:104:12"}],"id":4695,"name":"FunctionDefinition","src":"952:177:12"}],"id":4696,"name":"ContractDefinition","src":"56:1075:12"}],"id":4697,"name":"SourceUnit","src":"0:1132:12"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[5187]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4698,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5188,"symbolAliases":[null],"unitAlias":""},"id":4699,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"SourceUnit":6306,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":5188,"symbolAliases":[null],"unitAlias":""},"id":4700,"name":"ImportDirective","src":"55:24:13"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5187,5687],"name":"DNSResolver","scope":5188},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":4701,"name":"UserDefinedTypeName","src":"105:12:13"}],"id":4702,"name":"InheritanceSpecifier","src":"105:12:13"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":6305,"type":"library RRUtils"},"id":4703,"name":"UserDefinedTypeName","src":"130:7:13"}],"id":4704,"name":"UsingForDirective","src":"124:20:13"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7026,"type":"library ENSBytesUtils"},"id":4705,"name":"UserDefinedTypeName","src":"155:13:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":4706,"name":"ElementaryTypeName","src":"173:5:13"}],"id":4707,"name":"UsingForDirective","src":"149:30:13"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":5187,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4708,"name":"ElementaryTypeName","src":"185:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":4709,"name":"Literal","src":"235:10:13"}],"id":4710,"name":"VariableDeclaration","src":"185:60:13"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":5187,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4711,"name":"ElementaryTypeName","src":"251:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":4712,"name":"Literal","src":"299:10:13"}],"id":4713,"name":"VariableDeclaration","src":"251:58:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4723,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4714,"name":"ElementaryTypeName","src":"430:7:13"}],"id":4715,"name":"VariableDeclaration","src":"430:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":4723,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4716,"name":"ElementaryTypeName","src":"452:5:13"}],"id":4717,"name":"VariableDeclaration","src":"452:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":4723,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4718,"name":"ElementaryTypeName","src":"464:6:13"}],"id":4719,"name":"VariableDeclaration","src":"464:15:13"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":4723,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4720,"name":"ElementaryTypeName","src":"481:5:13"}],"id":4721,"name":"VariableDeclaration","src":"481:12:13"}],"id":4722,"name":"ParameterList","src":"429:65:13"}],"id":4723,"name":"EventDefinition","src":"407:88:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4731,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4724,"name":"ElementaryTypeName","src":"614:7:13"}],"id":4725,"name":"VariableDeclaration","src":"614:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":4731,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4726,"name":"ElementaryTypeName","src":"636:5:13"}],"id":4727,"name":"VariableDeclaration","src":"636:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":4731,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4728,"name":"ElementaryTypeName","src":"648:6:13"}],"id":4729,"name":"VariableDeclaration","src":"648:15:13"}],"id":4730,"name":"ParameterList","src":"613:51:13"}],"id":4731,"name":"EventDefinition","src":"591:74:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4735,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4732,"name":"ElementaryTypeName","src":"777:7:13"}],"id":4733,"name":"VariableDeclaration","src":"777:20:13"}],"id":4734,"name":"ParameterList","src":"776:22:13"}],"id":4735,"name":"EventDefinition","src":"756:43:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4743,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4736,"name":"ElementaryTypeName","src":"913:7:13"}],"id":4737,"name":"VariableDeclaration","src":"913:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":4743,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4738,"name":"ElementaryTypeName","src":"935:5:13"}],"id":4739,"name":"VariableDeclaration","src":"935:18:13"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":4743,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4740,"name":"ElementaryTypeName","src":"955:5:13"}],"id":4741,"name":"VariableDeclaration","src":"955:14:13"}],"id":4742,"name":"ParameterList","src":"912:58:13"}],"id":4743,"name":"EventDefinition","src":"888:83:13"},{"attributes":{"constant":false,"name":"zonehashes","scope":5187,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4744,"name":"ElementaryTypeName","src":"1181:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":4745,"name":"ElementaryTypeName","src":"1190:5:13"}],"id":4746,"name":"Mapping","src":"1173:23:13"}],"id":4747,"name":"VariableDeclaration","src":"1173:42:13"},{"attributes":{"constant":false,"name":"versions","scope":5187,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4748,"name":"ElementaryTypeName","src":"1433:7:13"},{"attributes":{"name":"uint256","type":"uint256"},"id":4749,"name":"ElementaryTypeName","src":"1442:7:13"}],"id":4750,"name":"Mapping","src":"1425:25:13"}],"id":4751,"name":"VariableDeclaration","src":"1425:42:13"},{"attributes":{"constant":false,"name":"records","scope":5187,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4752,"name":"ElementaryTypeName","src":"1589:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4753,"name":"ElementaryTypeName","src":"1606:7:13"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4754,"name":"ElementaryTypeName","src":"1623:7:13"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4755,"name":"ElementaryTypeName","src":"1640:6:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":4756,"name":"ElementaryTypeName","src":"1648:5:13"}],"id":4757,"name":"Mapping","src":"1632:22:13"}],"id":4758,"name":"Mapping","src":"1615:40:13"}],"id":4759,"name":"Mapping","src":"1598:58:13"}],"id":4760,"name":"Mapping","src":"1581:76:13"}],"id":4761,"name":"VariableDeclaration","src":"1581:92:13"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":5187,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4762,"name":"ElementaryTypeName","src":"1853:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4763,"name":"ElementaryTypeName","src":"1870:7:13"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4764,"name":"ElementaryTypeName","src":"1887:7:13"},{"attributes":{"name":"uint16","type":"uint16"},"id":4765,"name":"ElementaryTypeName","src":"1896:6:13"}],"id":4766,"name":"Mapping","src":"1879:24:13"}],"id":4767,"name":"Mapping","src":"1862:42:13"}],"id":4768,"name":"Mapping","src":"1845:60:13"}],"id":4769,"name":"VariableDeclaration","src":"1845:85:13"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":5187,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4934,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4770,"name":"ElementaryTypeName","src":"2877:7:13"}],"id":4771,"name":"VariableDeclaration","src":"2877:12:13"},{"attributes":{"constant":false,"name":"data","scope":4934,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4772,"name":"ElementaryTypeName","src":"2891:5:13"}],"id":4773,"name":"VariableDeclaration","src":"2891:19:13"}],"id":4774,"name":"ParameterList","src":"2876:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":4778,"name":"ParameterList","src":"2938:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4775,"name":"Identifier","src":"2921:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"bytes32","value":"node"},"id":4776,"name":"Identifier","src":"2932:4:13"}],"id":4777,"name":"ModifierInvocation","src":"2921:16:13"},{"children":[{"attributes":{"assignments":[4780]},"children":[{"attributes":{"constant":false,"name":"resource","scope":4933,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4779,"name":"ElementaryTypeName","src":"2948:6:13"}],"id":4780,"name":"VariableDeclaration","src":"2948:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4781,"name":"Literal","src":"2966:1:13"}],"id":4782,"name":"VariableDeclarationStatement","src":"2948:19:13"},{"attributes":{"assignments":[4784]},"children":[{"attributes":{"constant":false,"name":"offset","scope":4933,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4783,"name":"ElementaryTypeName","src":"2977:7:13"}],"id":4784,"name":"VariableDeclaration","src":"2977:14:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4785,"name":"Literal","src":"2994:1:13"}],"id":4786,"name":"VariableDeclarationStatement","src":"2977:18:13"},{"attributes":{"assignments":[4788],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":4933,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4787,"name":"ElementaryTypeName","src":"3005:5:13"}],"id":4788,"name":"VariableDeclaration","src":"3005:17:13"}],"id":4789,"name":"VariableDeclarationStatement","src":"3005:17:13"},{"attributes":{"assignments":[4791],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":4933,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4790,"name":"ElementaryTypeName","src":"3032:5:13"}],"id":4791,"name":"VariableDeclaration","src":"3032:18:13"}],"id":4792,"name":"VariableDeclarationStatement","src":"3032:18:13"},{"attributes":{"assignments":[4794],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":4933,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4793,"name":"ElementaryTypeName","src":"3060:7:13"}],"id":4794,"name":"VariableDeclaration","src":"3060:16:13"}],"id":4795,"name":"VariableDeclarationStatement","src":"3060:16:13"},{"children":[{"attributes":{"assignments":[4799]},"children":[{"attributes":{"constant":false,"name":"iter","scope":4910,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":4798,"name":"UserDefinedTypeName","src":"3152:18:13"}],"id":4799,"name":"VariableDeclaration","src":"3152:30:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":5852,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4773,"type":"bytes calldata","value":"data"},"id":4800,"name":"Identifier","src":"3185:4:13"}],"id":4801,"name":"MemberAccess","src":"3185:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4802,"name":"Literal","src":"3201:1:13"}],"id":4803,"name":"FunctionCall","src":"3185:18:13"}],"id":4804,"name":"VariableDeclarationStatement","src":"3152:51:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":5867,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4805,"name":"Identifier","src":"3206:4:13"}],"id":4806,"name":"MemberAccess","src":"3206:9:13"}],"id":4807,"name":"FunctionCall","src":"3206:11:13"}],"id":4808,"name":"UnaryOperation","src":"3205:12:13"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":5969,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4809,"name":"Identifier","src":"3219:4:13"}],"id":4810,"name":"MemberAccess","src":"3219:9:13"}],"id":4811,"name":"FunctionCall","src":"3219:11:13"}],"id":4812,"name":"ExpressionStatement","src":"3219:11:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4813,"name":"Identifier","src":"3250:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4814,"name":"Literal","src":"3262:1:13"}],"id":4815,"name":"BinaryOperation","src":"3250:13:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4816,"name":"Identifier","src":"3283:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5817,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4817,"name":"Identifier","src":"3294:4:13"}],"id":4818,"name":"MemberAccess","src":"3294:12:13"}],"id":4819,"name":"Assignment","src":"3283:23:13"}],"id":4820,"name":"ExpressionStatement","src":"3283:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4821,"name":"Identifier","src":"3324:4:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":5990,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4822,"name":"Identifier","src":"3331:4:13"}],"id":4823,"name":"MemberAccess","src":"3331:9:13"}],"id":4824,"name":"FunctionCall","src":"3331:11:13"}],"id":4825,"name":"Assignment","src":"3324:18:13"}],"id":4826,"name":"ExpressionStatement","src":"3324:18:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4794,"type":"bytes32","value":"nameHash"},"id":4827,"name":"Identifier","src":"3360:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7035,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":4828,"name":"Identifier","src":"3371:9:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":4829,"name":"Identifier","src":"3381:3:13"}],"id":4830,"name":"MemberAccess","src":"3381:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4831,"name":"Identifier","src":"3398:4:13"}],"id":4832,"name":"FunctionCall","src":"3381:22:13"}],"id":4833,"name":"FunctionCall","src":"3371:33:13"}],"id":4834,"name":"Assignment","src":"3360:44:13"}],"id":4835,"name":"ExpressionStatement","src":"3360:44:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"bytes memory","value":"value"},"id":4836,"name":"Identifier","src":"3422:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4837,"name":"ElementaryTypeNameExpression","src":"3430:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":6010,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4838,"name":"Identifier","src":"3436:4:13"}],"id":4839,"name":"MemberAccess","src":"3436:10:13"}],"id":4840,"name":"FunctionCall","src":"3436:12:13"}],"id":4841,"name":"FunctionCall","src":"3430:19:13"}],"id":4842,"name":"Assignment","src":"3422:27:13"}],"id":4843,"name":"ExpressionStatement","src":"3422:27:13"}],"id":4844,"name":"Block","src":"3265:199:13"},{"children":[{"attributes":{"assignments":[4846]},"children":[{"attributes":{"constant":false,"name":"newName","scope":4907,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4845,"name":"ElementaryTypeName","src":"3488:5:13"}],"id":4846,"name":"VariableDeclaration","src":"3488:20:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":5990,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4847,"name":"Identifier","src":"3511:4:13"}],"id":4848,"name":"MemberAccess","src":"3511:9:13"}],"id":4849,"name":"FunctionCall","src":"3511:11:13"}],"id":4850,"name":"VariableDeclarationStatement","src":"3488:34:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4851,"name":"Identifier","src":"3544:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5817,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4852,"name":"Identifier","src":"3556:4:13"}],"id":4853,"name":"MemberAccess","src":"3556:12:13"}],"id":4854,"name":"BinaryOperation","src":"3544:24:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6596,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4855,"name":"Identifier","src":"3573:4:13"}],"id":4856,"name":"MemberAccess","src":"3573:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4846,"type":"bytes memory","value":"newName"},"id":4857,"name":"Identifier","src":"3585:7:13"}],"id":4858,"name":"FunctionCall","src":"3573:20:13"}],"id":4859,"name":"UnaryOperation","src":"3572:21:13"}],"id":4860,"name":"BinaryOperation","src":"3544:49:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":4861,"name":"Identifier","src":"3617:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"bytes32","value":"node"},"id":4862,"name":"Identifier","src":"3629:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4863,"name":"Identifier","src":"3635:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4864,"name":"Identifier","src":"3641:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4773,"type":"bytes calldata","value":"data"},"id":4865,"name":"Identifier","src":"3651:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4866,"name":"Identifier","src":"3657:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4867,"name":"Identifier","src":"3665:4:13"}],"id":4868,"name":"MemberAccess","src":"3665:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4869,"name":"Identifier","src":"3679:6:13"}],"id":4870,"name":"BinaryOperation","src":"3665:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"bytes memory","value":"value"},"id":4871,"name":"Identifier","src":"3687:5:13"}],"id":4872,"name":"MemberAccess","src":"3687:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4873,"name":"Literal","src":"3703:1:13"}],"id":4874,"name":"BinaryOperation","src":"3687:17:13"}],"id":4875,"name":"FunctionCall","src":"3617:88:13"}],"id":4876,"name":"ExpressionStatement","src":"3617:88:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4877,"name":"Identifier","src":"3727:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5817,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4878,"name":"Identifier","src":"3738:4:13"}],"id":4879,"name":"MemberAccess","src":"3738:12:13"}],"id":4880,"name":"Assignment","src":"3727:23:13"}],"id":4881,"name":"ExpressionStatement","src":"3727:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4882,"name":"Identifier","src":"3772:6:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4883,"name":"Identifier","src":"3781:4:13"}],"id":4884,"name":"MemberAccess","src":"3781:11:13"}],"id":4885,"name":"Assignment","src":"3772:20:13"}],"id":4886,"name":"ExpressionStatement","src":"3772:20:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4887,"name":"Identifier","src":"3814:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4846,"type":"bytes memory","value":"newName"},"id":4888,"name":"Identifier","src":"3821:7:13"}],"id":4889,"name":"Assignment","src":"3814:14:13"}],"id":4890,"name":"ExpressionStatement","src":"3814:14:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4794,"type":"bytes32","value":"nameHash"},"id":4891,"name":"Identifier","src":"3850:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7035,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":4892,"name":"Identifier","src":"3861:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4893,"name":"Identifier","src":"3871:4:13"}],"id":4894,"name":"FunctionCall","src":"3861:15:13"}],"id":4895,"name":"Assignment","src":"3850:26:13"}],"id":4896,"name":"ExpressionStatement","src":"3850:26:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"bytes memory","value":"value"},"id":4897,"name":"Identifier","src":"3898:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4898,"name":"ElementaryTypeNameExpression","src":"3906:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":6010,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4899,"name":"Identifier","src":"3912:4:13"}],"id":4900,"name":"MemberAccess","src":"3912:10:13"}],"id":4901,"name":"FunctionCall","src":"3912:12:13"}],"id":4902,"name":"FunctionCall","src":"3906:19:13"}],"id":4903,"name":"Assignment","src":"3898:27:13"}],"id":4904,"name":"ExpressionStatement","src":"3898:27:13"}],"id":4905,"name":"Block","src":"3595:349:13"}],"id":4906,"name":"IfStatement","src":"3540:404:13"}],"id":4907,"name":"Block","src":"3470:488:13"}],"id":4908,"name":"IfStatement","src":"3246:712:13"}],"id":4909,"name":"Block","src":"3232:736:13"}],"id":4910,"name":"ForStatement","src":"3147:821:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4911,"name":"Identifier","src":"3981:4:13"}],"id":4912,"name":"MemberAccess","src":"3981:11:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4913,"name":"Literal","src":"3995:1:13"}],"id":4914,"name":"BinaryOperation","src":"3981:15:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":4915,"name":"Identifier","src":"4012:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"bytes32","value":"node"},"id":4916,"name":"Identifier","src":"4024:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4917,"name":"Identifier","src":"4030:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4918,"name":"Identifier","src":"4036:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4773,"type":"bytes calldata","value":"data"},"id":4919,"name":"Identifier","src":"4046:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4920,"name":"Identifier","src":"4052:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4773,"type":"bytes calldata","value":"data"},"id":4921,"name":"Identifier","src":"4060:4:13"}],"id":4922,"name":"MemberAccess","src":"4060:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4923,"name":"Identifier","src":"4074:6:13"}],"id":4924,"name":"BinaryOperation","src":"4060:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"bytes memory","value":"value"},"id":4925,"name":"Identifier","src":"4082:5:13"}],"id":4926,"name":"MemberAccess","src":"4082:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4927,"name":"Literal","src":"4098:1:13"}],"id":4928,"name":"BinaryOperation","src":"4082:17:13"}],"id":4929,"name":"FunctionCall","src":"4012:88:13"}],"id":4930,"name":"ExpressionStatement","src":"4012:88:13"}],"id":4931,"name":"Block","src":"3998:113:13"}],"id":4932,"name":"IfStatement","src":"3977:134:13"}],"id":4933,"name":"Block","src":"2938:1179:13"}],"id":4934,"name":"FunctionDefinition","src":"2854:1263:13"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":5187,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4935,"name":"ElementaryTypeName","src":"4538:7:13"}],"id":4936,"name":"VariableDeclaration","src":"4538:12:13"},{"attributes":{"constant":false,"name":"name","scope":4958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4937,"name":"ElementaryTypeName","src":"4552:7:13"}],"id":4938,"name":"VariableDeclaration","src":"4552:12:13"},{"attributes":{"constant":false,"name":"resource","scope":4958,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4939,"name":"ElementaryTypeName","src":"4566:6:13"}],"id":4940,"name":"VariableDeclaration","src":"4566:15:13"}],"id":4941,"name":"ParameterList","src":"4537:45:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":4958,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4942,"name":"ElementaryTypeName","src":"4604:5:13"}],"id":4943,"name":"VariableDeclaration","src":"4604:12:13"}],"id":4944,"name":"ParameterList","src":"4603:14:13"},{"children":[{"attributes":{"functionReturnParameters":4944},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":4945,"name":"Identifier","src":"4635:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4936,"type":"bytes32","value":"node"},"id":4946,"name":"Identifier","src":"4643:4:13"}],"id":4947,"name":"IndexAccess","src":"4635:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4751,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":4948,"name":"Identifier","src":"4649:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4936,"type":"bytes32","value":"node"},"id":4949,"name":"Identifier","src":"4658:4:13"}],"id":4950,"name":"IndexAccess","src":"4649:14:13"}],"id":4951,"name":"IndexAccess","src":"4635:29:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"bytes32","value":"name"},"id":4952,"name":"Identifier","src":"4665:4:13"}],"id":4953,"name":"IndexAccess","src":"4635:35:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4940,"type":"uint16","value":"resource"},"id":4954,"name":"Identifier","src":"4671:8:13"}],"id":4955,"name":"IndexAccess","src":"4635:45:13"}],"id":4956,"name":"Return","src":"4628:52:13"}],"id":4957,"name":"Block","src":"4618:69:13"}],"id":4958,"name":"FunctionDefinition","src":"4519:168:13"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":5187,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4981,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4959,"name":"ElementaryTypeName","src":"4924:7:13"}],"id":4960,"name":"VariableDeclaration","src":"4924:12:13"},{"attributes":{"constant":false,"name":"name","scope":4981,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4961,"name":"ElementaryTypeName","src":"4938:7:13"}],"id":4962,"name":"VariableDeclaration","src":"4938:12:13"}],"id":4963,"name":"ParameterList","src":"4923:28:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":4981,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4964,"name":"ElementaryTypeName","src":"4973:4:13"}],"id":4965,"name":"VariableDeclaration","src":"4973:4:13"}],"id":4966,"name":"ParameterList","src":"4972:6:13"},{"children":[{"attributes":{"functionReturnParameters":4966},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":4967,"name":"Identifier","src":"4997:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4960,"type":"bytes32","value":"node"},"id":4968,"name":"Identifier","src":"5014:4:13"}],"id":4969,"name":"IndexAccess","src":"4997:22:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4751,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":4970,"name":"Identifier","src":"5020:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4960,"type":"bytes32","value":"node"},"id":4971,"name":"Identifier","src":"5029:4:13"}],"id":4972,"name":"IndexAccess","src":"5020:14:13"}],"id":4973,"name":"IndexAccess","src":"4997:38:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4962,"type":"bytes32","value":"name"},"id":4974,"name":"Identifier","src":"5036:4:13"}],"id":4975,"name":"IndexAccess","src":"4997:44:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4976,"name":"Literal","src":"5045:1:13"}],"id":4977,"name":"BinaryOperation","src":"4997:49:13"}],"id":4978,"name":"TupleExpression","src":"4996:51:13"}],"id":4979,"name":"Return","src":"4989:58:13"}],"id":4980,"name":"Block","src":"4979:75:13"}],"id":4981,"name":"FunctionDefinition","src":"4901:153:13"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":5187,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4999,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4982,"name":"ElementaryTypeName","src":"5215:7:13"}],"id":4983,"name":"VariableDeclaration","src":"5215:12:13"}],"id":4984,"name":"ParameterList","src":"5214:14:13"},{"attributes":{"parameters":[null]},"children":[],"id":4988,"name":"ParameterList","src":"5253:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4985,"name":"Identifier","src":"5236:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"bytes32","value":"node"},"id":4986,"name":"Identifier","src":"5247:4:13"}],"id":4987,"name":"ModifierInvocation","src":"5236:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4751,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":4989,"name":"Identifier","src":"5263:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"bytes32","value":"node"},"id":4990,"name":"Identifier","src":"5272:4:13"}],"id":4991,"name":"IndexAccess","src":"5263:14:13"}],"id":4992,"name":"UnaryOperation","src":"5263:16:13"}],"id":4993,"name":"ExpressionStatement","src":"5263:16:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":4735,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":4994,"name":"Identifier","src":"5294:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"bytes32","value":"node"},"id":4995,"name":"Identifier","src":"5309:4:13"}],"id":4996,"name":"FunctionCall","src":"5294:20:13"}],"id":4997,"name":"EmitStatement","src":"5289:25:13"}],"id":4998,"name":"Block","src":"5253:68:13"}],"id":4999,"name":"FunctionDefinition","src":"5193:128:13"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":5187,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5028,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5000,"name":"ElementaryTypeName","src":"5562:7:13"}],"id":5001,"name":"VariableDeclaration","src":"5562:12:13"},{"attributes":{"constant":false,"name":"hash","scope":5028,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5002,"name":"ElementaryTypeName","src":"5576:5:13"}],"id":5003,"name":"VariableDeclaration","src":"5576:19:13"}],"id":5004,"name":"ParameterList","src":"5561:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":5008,"name":"ParameterList","src":"5623:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5005,"name":"Identifier","src":"5606:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"bytes32","value":"node"},"id":5006,"name":"Identifier","src":"5617:4:13"}],"id":5007,"name":"ModifierInvocation","src":"5606:16:13"},{"children":[{"attributes":{"assignments":[5010]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":5027,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5009,"name":"ElementaryTypeName","src":"5633:5:13"}],"id":5010,"name":"VariableDeclaration","src":"5633:20:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4747,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5011,"name":"Identifier","src":"5656:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"bytes32","value":"node"},"id":5012,"name":"Identifier","src":"5667:4:13"}],"id":5013,"name":"IndexAccess","src":"5656:16:13"}],"id":5014,"name":"VariableDeclarationStatement","src":"5633:39:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4747,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5015,"name":"Identifier","src":"5682:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"bytes32","value":"node"},"id":5016,"name":"Identifier","src":"5693:4:13"}],"id":5017,"name":"IndexAccess","src":"5682:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5003,"type":"bytes calldata","value":"hash"},"id":5018,"name":"Identifier","src":"5701:4:13"}],"id":5019,"name":"Assignment","src":"5682:23:13"}],"id":5020,"name":"ExpressionStatement","src":"5682:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":4743,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":5021,"name":"Identifier","src":"5720:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"bytes32","value":"node"},"id":5022,"name":"Identifier","src":"5739:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5010,"type":"bytes memory","value":"oldhash"},"id":5023,"name":"Identifier","src":"5745:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5003,"type":"bytes calldata","value":"hash"},"id":5024,"name":"Identifier","src":"5754:4:13"}],"id":5025,"name":"FunctionCall","src":"5720:39:13"}],"id":5026,"name":"EmitStatement","src":"5715:44:13"}],"id":5027,"name":"Block","src":"5623:143:13"}],"id":5028,"name":"FunctionDefinition","src":"5541:225:13"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":5187,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5040,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5029,"name":"ElementaryTypeName","src":"5938:7:13"}],"id":5030,"name":"VariableDeclaration","src":"5938:12:13"}],"id":5031,"name":"ParameterList","src":"5937:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5040,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5032,"name":"ElementaryTypeName","src":"5975:5:13"}],"id":5033,"name":"VariableDeclaration","src":"5975:12:13"}],"id":5034,"name":"ParameterList","src":"5974:14:13"},{"children":[{"attributes":{"functionReturnParameters":5034},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4747,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5035,"name":"Identifier","src":"6006:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5030,"type":"bytes32","value":"node"},"id":5036,"name":"Identifier","src":"6017:4:13"}],"id":5037,"name":"IndexAccess","src":"6006:16:13"}],"id":5038,"name":"Return","src":"5999:23:13"}],"id":5039,"name":"Block","src":"5989:40:13"}],"id":5040,"name":"FunctionDefinition","src":"5920:109:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5187,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5061,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5041,"name":"ElementaryTypeName","src":"6062:6:13"}],"id":5042,"name":"VariableDeclaration","src":"6062:18:13"}],"id":5043,"name":"ParameterList","src":"6061:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5061,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5044,"name":"ElementaryTypeName","src":"6102:4:13"}],"id":5045,"name":"VariableDeclaration","src":"6102:4:13"}],"id":5046,"name":"ParameterList","src":"6101:6:13"},{"children":[{"attributes":{"functionReturnParameters":5046},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5042,"type":"bytes4","value":"interfaceID"},"id":5047,"name":"Identifier","src":"6125:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4710,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":5048,"name":"Identifier","src":"6140:23:13"}],"id":5049,"name":"BinaryOperation","src":"6125:38:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5042,"type":"bytes4","value":"interfaceID"},"id":5050,"name":"Identifier","src":"6182:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4713,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":5051,"name":"Identifier","src":"6197:21:13"}],"id":5052,"name":"BinaryOperation","src":"6182:36:13"}],"id":5053,"name":"BinaryOperation","src":"6125:93:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7086,"type":"contract super DNSResolver","value":"super"},"id":5054,"name":"Identifier","src":"6237:5:13"}],"id":5055,"name":"MemberAccess","src":"6237:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5042,"type":"bytes4","value":"interfaceID"},"id":5056,"name":"Identifier","src":"6261:11:13"}],"id":5057,"name":"FunctionCall","src":"6237:36:13"}],"id":5058,"name":"BinaryOperation","src":"6125:148:13"}],"id":5059,"name":"Return","src":"6118:155:13"}],"id":5060,"name":"Block","src":"6108:172:13"}],"id":5061,"name":"FunctionDefinition","src":"6035:245:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":5187,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5062,"name":"ElementaryTypeName","src":"6316:7:13"}],"id":5063,"name":"VariableDeclaration","src":"6316:12:13"},{"attributes":{"constant":false,"name":"name","scope":5186,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5064,"name":"ElementaryTypeName","src":"6338:5:13"}],"id":5065,"name":"VariableDeclaration","src":"6338:17:13"},{"attributes":{"constant":false,"name":"resource","scope":5186,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5066,"name":"ElementaryTypeName","src":"6365:6:13"}],"id":5067,"name":"VariableDeclaration","src":"6365:15:13"},{"attributes":{"constant":false,"name":"data","scope":5186,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5068,"name":"ElementaryTypeName","src":"6390:5:13"}],"id":5069,"name":"VariableDeclaration","src":"6390:17:13"},{"attributes":{"constant":false,"name":"offset","scope":5186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5070,"name":"ElementaryTypeName","src":"6417:7:13"}],"id":5071,"name":"VariableDeclaration","src":"6417:14:13"},{"attributes":{"constant":false,"name":"size","scope":5186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5072,"name":"ElementaryTypeName","src":"6441:7:13"}],"id":5073,"name":"VariableDeclaration","src":"6441:12:13"},{"attributes":{"constant":false,"name":"deleteRecord","scope":5186,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5074,"name":"ElementaryTypeName","src":"6463:4:13"}],"id":5075,"name":"VariableDeclaration","src":"6463:17:13"}],"id":5076,"name":"ParameterList","src":"6306:175:13"},{"attributes":{"parameters":[null]},"children":[],"id":5077,"name":"ParameterList","src":"6494:0:13"},{"children":[{"attributes":{"assignments":[5079]},"children":[{"attributes":{"constant":false,"name":"version","scope":5185,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5078,"name":"ElementaryTypeName","src":"6504:7:13"}],"id":5079,"name":"VariableDeclaration","src":"6504:15:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4751,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5080,"name":"Identifier","src":"6522:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5081,"name":"Identifier","src":"6531:4:13"}],"id":5082,"name":"IndexAccess","src":"6522:14:13"}],"id":5083,"name":"VariableDeclarationStatement","src":"6504:32:13"},{"attributes":{"assignments":[5085]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5084,"name":"ElementaryTypeName","src":"6546:7:13"}],"id":5085,"name":"VariableDeclaration","src":"6546:16:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7035,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5086,"name":"Identifier","src":"6565:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5065,"type":"bytes memory","value":"name"},"id":5087,"name":"Identifier","src":"6575:4:13"}],"id":5088,"name":"FunctionCall","src":"6565:15:13"}],"id":5089,"name":"VariableDeclarationStatement","src":"6546:34:13"},{"attributes":{"assignments":[5091]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":5185,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5090,"name":"ElementaryTypeName","src":"6590:5:13"}],"id":5091,"name":"VariableDeclaration","src":"6590:19:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":6803,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory","value":"data"},"id":5092,"name":"Identifier","src":"6612:4:13"}],"id":5093,"name":"MemberAccess","src":"6612:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5071,"type":"uint256","value":"offset"},"id":5094,"name":"Identifier","src":"6627:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5073,"type":"uint256","value":"size"},"id":5095,"name":"Identifier","src":"6635:4:13"}],"id":5096,"name":"FunctionCall","src":"6612:28:13"}],"id":5097,"name":"VariableDeclarationStatement","src":"6590:50:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bool","value":"deleteRecord"},"id":5098,"name":"Identifier","src":"6654:12:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5099,"name":"Identifier","src":"6686:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5100,"name":"Identifier","src":"6694:4:13"}],"id":5101,"name":"IndexAccess","src":"6686:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5102,"name":"Identifier","src":"6700:7:13"}],"id":5103,"name":"IndexAccess","src":"6686:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5104,"name":"Identifier","src":"6709:8:13"}],"id":5105,"name":"IndexAccess","src":"6686:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5106,"name":"Identifier","src":"6719:8:13"}],"id":5107,"name":"IndexAccess","src":"6686:42:13"}],"id":5108,"name":"MemberAccess","src":"6686:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5109,"name":"Literal","src":"6739:1:13"}],"id":5110,"name":"BinaryOperation","src":"6686:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5111,"name":"Identifier","src":"6760:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5112,"name":"Identifier","src":"6777:4:13"}],"id":5115,"name":"IndexAccess","src":"6760:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5113,"name":"Identifier","src":"6783:7:13"}],"id":5116,"name":"IndexAccess","src":"6760:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5114,"name":"Identifier","src":"6792:8:13"}],"id":5117,"name":"IndexAccess","src":"6760:41:13"}],"id":5118,"name":"UnaryOperation","src":"6760:43:13"}],"id":5119,"name":"ExpressionStatement","src":"6760:43:13"}],"id":5120,"name":"Block","src":"6742:76:13"}],"id":5121,"name":"IfStatement","src":"6682:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5122,"name":"Identifier","src":"6838:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5123,"name":"Identifier","src":"6846:4:13"}],"id":5124,"name":"IndexAccess","src":"6838:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5125,"name":"Identifier","src":"6852:7:13"}],"id":5126,"name":"IndexAccess","src":"6838:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5127,"name":"Identifier","src":"6861:8:13"}],"id":5128,"name":"IndexAccess","src":"6838:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5129,"name":"Identifier","src":"6871:8:13"}],"id":5130,"name":"IndexAccess","src":"6838:42:13"}],"id":5131,"name":"TupleExpression","src":"6837:44:13"}],"id":5132,"name":"UnaryOperation","src":"6831:50:13"}],"id":5133,"name":"ExpressionStatement","src":"6831:50:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":4731,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":5134,"name":"Identifier","src":"6900:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5135,"name":"Identifier","src":"6917:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5065,"type":"bytes memory","value":"name"},"id":5136,"name":"Identifier","src":"6923:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5137,"name":"Identifier","src":"6929:8:13"}],"id":5138,"name":"FunctionCall","src":"6900:38:13"}],"id":5139,"name":"EmitStatement","src":"6895:43:13"}],"id":5140,"name":"Block","src":"6668:281:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5141,"name":"Identifier","src":"6973:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5142,"name":"Identifier","src":"6981:4:13"}],"id":5143,"name":"IndexAccess","src":"6973:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5144,"name":"Identifier","src":"6987:7:13"}],"id":5145,"name":"IndexAccess","src":"6973:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5146,"name":"Identifier","src":"6996:8:13"}],"id":5147,"name":"IndexAccess","src":"6973:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5148,"name":"Identifier","src":"7006:8:13"}],"id":5149,"name":"IndexAccess","src":"6973:42:13"}],"id":5150,"name":"MemberAccess","src":"6973:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5151,"name":"Literal","src":"7026:1:13"}],"id":5152,"name":"BinaryOperation","src":"6973:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5153,"name":"Identifier","src":"7047:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5154,"name":"Identifier","src":"7064:4:13"}],"id":5157,"name":"IndexAccess","src":"7047:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5155,"name":"Identifier","src":"7070:7:13"}],"id":5158,"name":"IndexAccess","src":"7047:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5156,"name":"Identifier","src":"7079:8:13"}],"id":5159,"name":"IndexAccess","src":"7047:41:13"}],"id":5160,"name":"UnaryOperation","src":"7047:43:13"}],"id":5161,"name":"ExpressionStatement","src":"7047:43:13"}],"id":5162,"name":"Block","src":"7029:76:13"}],"id":5163,"name":"IfStatement","src":"6969:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5164,"name":"Identifier","src":"7118:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5165,"name":"Identifier","src":"7126:4:13"}],"id":5169,"name":"IndexAccess","src":"7118:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5166,"name":"Identifier","src":"7132:7:13"}],"id":5170,"name":"IndexAccess","src":"7118:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5167,"name":"Identifier","src":"7141:8:13"}],"id":5171,"name":"IndexAccess","src":"7118:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5168,"name":"Identifier","src":"7151:8:13"}],"id":5172,"name":"IndexAccess","src":"7118:42:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5091,"type":"bytes memory","value":"rrData"},"id":5173,"name":"Identifier","src":"7163:6:13"}],"id":5174,"name":"Assignment","src":"7118:51:13"}],"id":5175,"name":"ExpressionStatement","src":"7118:51:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4723,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":5176,"name":"Identifier","src":"7188:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5177,"name":"Identifier","src":"7205:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5065,"type":"bytes memory","value":"name"},"id":5178,"name":"Identifier","src":"7211:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5179,"name":"Identifier","src":"7217:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5091,"type":"bytes memory","value":"rrData"},"id":5180,"name":"Identifier","src":"7227:6:13"}],"id":5181,"name":"FunctionCall","src":"7188:46:13"}],"id":5182,"name":"EmitStatement","src":"7183:51:13"}],"id":5183,"name":"Block","src":"6955:290:13"}],"id":5184,"name":"IfStatement","src":"6650:595:13"}],"id":5185,"name":"Block","src":"6494:757:13"}],"id":5186,"name":"FunctionDefinition","src":"6286:965:13"}],"id":5187,"name":"ContractDefinition","src":"81:7172:13"}],"id":5188,"name":"SourceUnit","src":"0:7253:13"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[5374]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5189,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5375,"symbolAliases":[null],"unitAlias":""},"id":5190,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":4627,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":5375,"symbolAliases":[null],"unitAlias":""},"id":5191,"name":"ImportDirective","src":"55:28:14"},{"attributes":{"contractDependencies":[4626,5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5374,4626,5687],"name":"InterfaceResolver","scope":5375},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":5192,"name":"UserDefinedTypeName","src":"115:12:14"}],"id":5193,"name":"InheritanceSpecifier","src":"115:12:14"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":4626,"type":"contract AddrResolver"},"id":5194,"name":"UserDefinedTypeName","src":"129:12:14"}],"id":5195,"name":"InheritanceSpecifier","src":"129:12:14"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":5374,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5196,"name":"ElementaryTypeName","src":"148:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":5197,"name":"ElementaryTypeNameExpression","src":"197:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":7035,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5198,"name":"Identifier","src":"204:9:14"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":5199,"name":"Literal","src":"214:38:14"}],"id":5200,"name":"FunctionCall","src":"204:49:14"}],"id":5201,"name":"FunctionCall","src":"197:57:14"}],"id":5202,"name":"VariableDeclaration","src":"148:106:14"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5374,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5203,"name":"ElementaryTypeName","src":"260:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5204,"name":"Literal","src":"304:10:14"}],"id":5205,"name":"VariableDeclaration","src":"260:54:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5213,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5206,"name":"ElementaryTypeName","src":"344:7:14"}],"id":5207,"name":"VariableDeclaration","src":"344:20:14"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":5213,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5208,"name":"ElementaryTypeName","src":"366:6:14"}],"id":5209,"name":"VariableDeclaration","src":"366:26:14"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":5213,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5210,"name":"ElementaryTypeName","src":"394:7:14"}],"id":5211,"name":"VariableDeclaration","src":"394:19:14"}],"id":5212,"name":"ParameterList","src":"343:71:14"}],"id":5213,"name":"EventDefinition","src":"321:94:14"},{"attributes":{"constant":false,"name":"interfaces","scope":5374,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5214,"name":"ElementaryTypeName","src":"429:7:14"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5215,"name":"ElementaryTypeName","src":"446:6:14"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5216,"name":"ElementaryTypeName","src":"454:7:14"}],"id":5217,"name":"Mapping","src":"438:24:14"}],"id":5218,"name":"Mapping","src":"421:42:14"}],"id":5219,"name":"VariableDeclaration","src":"421:53:14"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":5374,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5246,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5220,"name":"ElementaryTypeName","src":"880:7:14"}],"id":5221,"name":"VariableDeclaration","src":"880:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":5246,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5222,"name":"ElementaryTypeName","src":"894:6:14"}],"id":5223,"name":"VariableDeclaration","src":"894:18:14"},{"attributes":{"constant":false,"name":"implementer","scope":5246,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5224,"name":"ElementaryTypeName","src":"914:7:14"}],"id":5225,"name":"VariableDeclaration","src":"914:19:14"}],"id":5226,"name":"ParameterList","src":"879:55:14"},{"attributes":{"parameters":[null]},"children":[],"id":5230,"name":"ParameterList","src":"961:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5227,"name":"Identifier","src":"944:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5221,"type":"bytes32","value":"node"},"id":5228,"name":"Identifier","src":"955:4:14"}],"id":5229,"name":"ModifierInvocation","src":"944:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5219,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5231,"name":"Identifier","src":"971:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5221,"type":"bytes32","value":"node"},"id":5232,"name":"Identifier","src":"982:4:14"}],"id":5234,"name":"IndexAccess","src":"971:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5223,"type":"bytes4","value":"interfaceID"},"id":5233,"name":"Identifier","src":"988:11:14"}],"id":5235,"name":"IndexAccess","src":"971:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5225,"type":"address","value":"implementer"},"id":5236,"name":"Identifier","src":"1003:11:14"}],"id":5237,"name":"Assignment","src":"971:43:14"}],"id":5238,"name":"ExpressionStatement","src":"971:43:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5213,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":5239,"name":"Identifier","src":"1029:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5221,"type":"bytes32","value":"node"},"id":5240,"name":"Identifier","src":"1046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5223,"type":"bytes4","value":"interfaceID"},"id":5241,"name":"Identifier","src":"1052:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5225,"type":"address","value":"implementer"},"id":5242,"name":"Identifier","src":"1065:11:14"}],"id":5243,"name":"FunctionCall","src":"1029:48:14"}],"id":5244,"name":"EmitStatement","src":"1024:53:14"}],"id":5245,"name":"Block","src":"961:123:14"}],"id":5246,"name":"FunctionDefinition","src":"858:226:14"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":5374,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5356,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5247,"name":"ElementaryTypeName","src":"1751:7:14"}],"id":5248,"name":"VariableDeclaration","src":"1751:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":5356,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5249,"name":"ElementaryTypeName","src":"1765:6:14"}],"id":5250,"name":"VariableDeclaration","src":"1765:18:14"}],"id":5251,"name":"ParameterList","src":"1750:34:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5356,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5252,"name":"ElementaryTypeName","src":"1808:7:14"}],"id":5253,"name":"VariableDeclaration","src":"1808:7:14"}],"id":5254,"name":"ParameterList","src":"1807:9:14"},{"children":[{"attributes":{"assignments":[5256]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":5355,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5255,"name":"ElementaryTypeName","src":"1827:7:14"}],"id":5256,"name":"VariableDeclaration","src":"1827:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5219,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5257,"name":"Identifier","src":"1849:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5248,"type":"bytes32","value":"node"},"id":5258,"name":"Identifier","src":"1860:4:14"}],"id":5259,"name":"IndexAccess","src":"1849:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5250,"type":"bytes4","value":"interfaceID"},"id":5260,"name":"Identifier","src":"1866:11:14"}],"id":5261,"name":"IndexAccess","src":"1849:29:14"}],"id":5262,"name":"VariableDeclarationStatement","src":"1827:51:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5256,"type":"address","value":"implementer"},"id":5263,"name":"Identifier","src":"1891:11:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5264,"name":"ElementaryTypeNameExpression","src":"1906:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5265,"name":"Literal","src":"1914:1:14"}],"id":5266,"name":"FunctionCall","src":"1906:10:14"}],"id":5267,"name":"BinaryOperation","src":"1891:25:14"},{"children":[{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5256,"type":"address","value":"implementer"},"id":5268,"name":"Identifier","src":"1939:11:14"}],"id":5269,"name":"Return","src":"1932:18:14"}],"id":5270,"name":"Block","src":"1918:43:14"}],"id":5271,"name":"IfStatement","src":"1888:73:14"},{"attributes":{"assignments":[5273]},"children":[{"attributes":{"constant":false,"name":"a","scope":5355,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5272,"name":"ElementaryTypeName","src":"1971:7:14"}],"id":5273,"name":"VariableDeclaration","src":"1971:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[4549,4604],"referencedDeclaration":4549,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":5274,"name":"Identifier","src":"1983:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5248,"type":"bytes32","value":"node"},"id":5275,"name":"Identifier","src":"1988:4:14"}],"id":5276,"name":"FunctionCall","src":"1983:10:14"}],"id":5277,"name":"VariableDeclarationStatement","src":"1971:22:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5273,"type":"address","value":"a"},"id":5278,"name":"Identifier","src":"2006:1:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5279,"name":"ElementaryTypeNameExpression","src":"2011:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5280,"name":"Literal","src":"2019:1:14"}],"id":5281,"name":"FunctionCall","src":"2011:10:14"}],"id":5282,"name":"BinaryOperation","src":"2006:15:14"},{"children":[{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5283,"name":"ElementaryTypeNameExpression","src":"2044:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5284,"name":"Literal","src":"2052:1:14"}],"id":5285,"name":"FunctionCall","src":"2044:10:14"}],"id":5286,"name":"Return","src":"2037:17:14"}],"id":5287,"name":"Block","src":"2023:42:14"}],"id":5288,"name":"IfStatement","src":"2003:62:14"},{"attributes":{"assignments":[5290,5292]},"children":[{"attributes":{"constant":false,"name":"success","scope":5355,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5289,"name":"ElementaryTypeName","src":"2076:4:14"}],"id":5290,"name":"VariableDeclaration","src":"2076:12:14"},{"attributes":{"constant":false,"name":"returnData","scope":5355,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5291,"name":"ElementaryTypeName","src":"2090:5:14"}],"id":5292,"name":"VariableDeclaration","src":"2090:23:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5273,"type":"address","value":"a"},"id":5293,"name":"Identifier","src":"2117:1:14"}],"id":5294,"name":"MemberAccess","src":"2117:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":5295,"name":"Identifier","src":"2130:3:14"}],"id":5296,"name":"MemberAccess","src":"2130:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5297,"name":"Literal","src":"2154:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5205,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5298,"name":"Identifier","src":"2183:17:14"}],"id":5299,"name":"FunctionCall","src":"2130:71:14"}],"id":5300,"name":"FunctionCall","src":"2117:85:14"}],"id":5301,"name":"VariableDeclarationStatement","src":"2075:127:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5290,"type":"bool","value":"success"},"id":5302,"name":"Identifier","src":"2216:7:14"}],"id":5303,"name":"UnaryOperation","src":"2215:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5304,"name":"Identifier","src":"2227:10:14"}],"id":5305,"name":"MemberAccess","src":"2227:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5306,"name":"Literal","src":"2247:2:14"}],"id":5307,"name":"BinaryOperation","src":"2227:22:14"}],"id":5308,"name":"BinaryOperation","src":"2215:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5309,"name":"Identifier","src":"2253:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5310,"name":"Literal","src":"2264:2:14"}],"id":5311,"name":"IndexAccess","src":"2253:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5312,"name":"Literal","src":"2271:1:14"}],"id":5313,"name":"BinaryOperation","src":"2253:19:14"}],"id":5314,"name":"BinaryOperation","src":"2215:57:14"},{"children":[{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5315,"name":"ElementaryTypeNameExpression","src":"2342:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5316,"name":"Literal","src":"2350:1:14"}],"id":5317,"name":"FunctionCall","src":"2342:10:14"}],"id":5318,"name":"Return","src":"2335:17:14"}],"id":5319,"name":"Block","src":"2274:89:14"}],"id":5320,"name":"IfStatement","src":"2212:151:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5290,"type":"bool","value":"success"},"id":5321,"name":"Identifier","src":"2374:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5322,"name":"Identifier","src":"2383:10:14"}],"id":5323,"name":"TupleExpression","src":"2373:21:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5273,"type":"address","value":"a"},"id":5324,"name":"Identifier","src":"2397:1:14"}],"id":5325,"name":"MemberAccess","src":"2397:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":5326,"name":"Identifier","src":"2410:3:14"}],"id":5327,"name":"MemberAccess","src":"2410:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5328,"name":"Literal","src":"2434:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5250,"type":"bytes4","value":"interfaceID"},"id":5329,"name":"Identifier","src":"2463:11:14"}],"id":5330,"name":"FunctionCall","src":"2410:65:14"}],"id":5331,"name":"FunctionCall","src":"2397:79:14"}],"id":5332,"name":"Assignment","src":"2373:103:14"}],"id":5333,"name":"ExpressionStatement","src":"2373:103:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5290,"type":"bool","value":"success"},"id":5334,"name":"Identifier","src":"2490:7:14"}],"id":5335,"name":"UnaryOperation","src":"2489:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5336,"name":"Identifier","src":"2501:10:14"}],"id":5337,"name":"MemberAccess","src":"2501:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5338,"name":"Literal","src":"2521:2:14"}],"id":5339,"name":"BinaryOperation","src":"2501:22:14"}],"id":5340,"name":"BinaryOperation","src":"2489:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5341,"name":"Identifier","src":"2527:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5342,"name":"Literal","src":"2538:2:14"}],"id":5343,"name":"IndexAccess","src":"2527:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5344,"name":"Literal","src":"2545:1:14"}],"id":5345,"name":"BinaryOperation","src":"2527:19:14"}],"id":5346,"name":"BinaryOperation","src":"2489:57:14"},{"children":[{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5347,"name":"ElementaryTypeNameExpression","src":"2628:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5348,"name":"Literal","src":"2636:1:14"}],"id":5349,"name":"FunctionCall","src":"2628:10:14"}],"id":5350,"name":"Return","src":"2621:17:14"}],"id":5351,"name":"Block","src":"2548:101:14"}],"id":5352,"name":"IfStatement","src":"2486:163:14"},{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5273,"type":"address","value":"a"},"id":5353,"name":"Identifier","src":"2666:1:14"}],"id":5354,"name":"Return","src":"2659:8:14"}],"id":5355,"name":"Block","src":"1817:857:14"}],"id":5356,"name":"FunctionDefinition","src":"1721:953:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5374,"stateMutability":"pure","superFunction":4625,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5373,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5357,"name":"ElementaryTypeName","src":"2707:6:14"}],"id":5358,"name":"VariableDeclaration","src":"2707:18:14"}],"id":5359,"name":"ParameterList","src":"2706:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5373,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5360,"name":"ElementaryTypeName","src":"2747:4:14"}],"id":5361,"name":"VariableDeclaration","src":"2747:4:14"}],"id":5362,"name":"ParameterList","src":"2746:6:14"},{"children":[{"attributes":{"functionReturnParameters":5362},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5358,"type":"bytes4","value":"interfaceID"},"id":5363,"name":"Identifier","src":"2770:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5202,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":5364,"name":"Identifier","src":"2785:22:14"}],"id":5365,"name":"BinaryOperation","src":"2770:37:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":4625,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7088,"type":"contract super InterfaceResolver","value":"super"},"id":5366,"name":"Identifier","src":"2811:5:14"}],"id":5367,"name":"MemberAccess","src":"2811:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5358,"type":"bytes4","value":"interfaceID"},"id":5368,"name":"Identifier","src":"2835:11:14"}],"id":5369,"name":"FunctionCall","src":"2811:36:14"}],"id":5370,"name":"BinaryOperation","src":"2770:77:14"}],"id":5371,"name":"Return","src":"2763:84:14"}],"id":5372,"name":"Block","src":"2753:101:14"}],"id":5373,"name":"FunctionDefinition","src":"2680:174:14"}],"id":5374,"name":"ContractDefinition","src":"85:2771:14"}],"id":5375,"name":"SourceUnit","src":"0:2857:14"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[5444]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5376,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5445,"symbolAliases":[null],"unitAlias":""},"id":5377,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5444,5687],"name":"NameResolver","scope":5445},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":5378,"name":"UserDefinedTypeName","src":"81:12:15"}],"id":5379,"name":"InheritanceSpecifier","src":"81:12:15"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":5444,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5380,"name":"ElementaryTypeName","src":"100:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":5381,"name":"Literal","src":"144:10:15"}],"id":5382,"name":"VariableDeclaration","src":"100:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5388,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5383,"name":"ElementaryTypeName","src":"179:7:15"}],"id":5384,"name":"VariableDeclaration","src":"179:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5388,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5385,"name":"ElementaryTypeName","src":"201:6:15"}],"id":5386,"name":"VariableDeclaration","src":"201:11:15"}],"id":5387,"name":"ParameterList","src":"178:35:15"}],"id":5388,"name":"EventDefinition","src":"161:53:15"},{"attributes":{"constant":false,"name":"names","scope":5444,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5389,"name":"ElementaryTypeName","src":"228:7:15"},{"attributes":{"name":"string","type":"string"},"id":5390,"name":"ElementaryTypeName","src":"237:6:15"}],"id":5391,"name":"Mapping","src":"220:24:15"}],"id":5392,"name":"VariableDeclaration","src":"220:30:15"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":5444,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5414,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5393,"name":"ElementaryTypeName","src":"509:7:15"}],"id":5394,"name":"VariableDeclaration","src":"509:12:15"},{"attributes":{"constant":false,"name":"name","scope":5414,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5395,"name":"ElementaryTypeName","src":"523:6:15"}],"id":5396,"name":"VariableDeclaration","src":"523:20:15"}],"id":5397,"name":"ParameterList","src":"508:36:15"},{"attributes":{"parameters":[null]},"children":[],"id":5401,"name":"ParameterList","src":"571:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5398,"name":"Identifier","src":"554:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"bytes32","value":"node"},"id":5399,"name":"Identifier","src":"565:4:15"}],"id":5400,"name":"ModifierInvocation","src":"554:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5402,"name":"Identifier","src":"581:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"bytes32","value":"node"},"id":5403,"name":"Identifier","src":"587:4:15"}],"id":5404,"name":"IndexAccess","src":"581:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5396,"type":"string calldata","value":"name"},"id":5405,"name":"Identifier","src":"595:4:15"}],"id":5406,"name":"Assignment","src":"581:18:15"}],"id":5407,"name":"ExpressionStatement","src":"581:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5388,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":5408,"name":"Identifier","src":"614:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"bytes32","value":"node"},"id":5409,"name":"Identifier","src":"626:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5396,"type":"string calldata","value":"name"},"id":5410,"name":"Identifier","src":"632:4:15"}],"id":5411,"name":"FunctionCall","src":"614:23:15"}],"id":5412,"name":"EmitStatement","src":"609:28:15"}],"id":5413,"name":"Block","src":"571:73:15"}],"id":5414,"name":"FunctionDefinition","src":"492:152:15"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":5444,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5426,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5415,"name":"ElementaryTypeName","src":"858:7:15"}],"id":5416,"name":"VariableDeclaration","src":"858:12:15"}],"id":5417,"name":"ParameterList","src":"857:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5426,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5418,"name":"ElementaryTypeName","src":"895:6:15"}],"id":5419,"name":"VariableDeclaration","src":"895:13:15"}],"id":5420,"name":"ParameterList","src":"894:15:15"},{"children":[{"attributes":{"functionReturnParameters":5420},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5421,"name":"Identifier","src":"927:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5416,"type":"bytes32","value":"node"},"id":5422,"name":"Identifier","src":"933:4:15"}],"id":5423,"name":"IndexAccess","src":"927:11:15"}],"id":5424,"name":"Return","src":"920:18:15"}],"id":5425,"name":"Block","src":"910:35:15"}],"id":5426,"name":"FunctionDefinition","src":"844:101:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5444,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5443,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5427,"name":"ElementaryTypeName","src":"978:6:15"}],"id":5428,"name":"VariableDeclaration","src":"978:18:15"}],"id":5429,"name":"ParameterList","src":"977:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5443,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5430,"name":"ElementaryTypeName","src":"1018:4:15"}],"id":5431,"name":"VariableDeclaration","src":"1018:4:15"}],"id":5432,"name":"ParameterList","src":"1017:6:15"},{"children":[{"attributes":{"functionReturnParameters":5432},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5428,"type":"bytes4","value":"interfaceID"},"id":5433,"name":"Identifier","src":"1041:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5382,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":5434,"name":"Identifier","src":"1056:17:15"}],"id":5435,"name":"BinaryOperation","src":"1041:32:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7090,"type":"contract super NameResolver","value":"super"},"id":5436,"name":"Identifier","src":"1077:5:15"}],"id":5437,"name":"MemberAccess","src":"1077:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5428,"type":"bytes4","value":"interfaceID"},"id":5438,"name":"Identifier","src":"1101:11:15"}],"id":5439,"name":"FunctionCall","src":"1077:36:15"}],"id":5440,"name":"BinaryOperation","src":"1041:72:15"}],"id":5441,"name":"Return","src":"1034:79:15"}],"id":5442,"name":"Block","src":"1024:96:15"}],"id":5443,"name":"FunctionDefinition","src":"951:169:15"}],"id":5444,"name":"ContractDefinition","src":"56:1066:15"}],"id":5445,"name":"SourceUnit","src":"0:1123:15"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[5535]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5446,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5536,"symbolAliases":[null],"unitAlias":""},"id":5447,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5535,5687],"name":"PubkeyResolver","scope":5536},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":5448,"name":"UserDefinedTypeName","src":"83:12:16"}],"id":5449,"name":"InheritanceSpecifier","src":"83:12:16"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":5535,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5450,"name":"ElementaryTypeName","src":"102:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":5451,"name":"Literal","src":"148:10:16"}],"id":5452,"name":"VariableDeclaration","src":"102:56:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5453,"name":"ElementaryTypeName","src":"185:7:16"}],"id":5454,"name":"VariableDeclaration","src":"185:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":5460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5455,"name":"ElementaryTypeName","src":"207:7:16"}],"id":5456,"name":"VariableDeclaration","src":"207:9:16"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":5460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5457,"name":"ElementaryTypeName","src":"218:7:16"}],"id":5458,"name":"VariableDeclaration","src":"218:9:16"}],"id":5459,"name":"ParameterList","src":"184:44:16"}],"id":5460,"name":"EventDefinition","src":"165:64:16"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":5535,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":5465,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5461,"name":"ElementaryTypeName","src":"262:7:16"}],"id":5462,"name":"VariableDeclaration","src":"262:9:16"},{"attributes":{"constant":false,"name":"y","scope":5465,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5463,"name":"ElementaryTypeName","src":"281:7:16"}],"id":5464,"name":"VariableDeclaration","src":"281:9:16"}],"id":5465,"name":"StructDefinition","src":"235:62:16"},{"attributes":{"constant":false,"name":"pubkeys","scope":5535,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5466,"name":"ElementaryTypeName","src":"311:7:16"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":5465,"type":"struct PubkeyResolver.PublicKey"},"id":5467,"name":"UserDefinedTypeName","src":"320:9:16"}],"id":5468,"name":"Mapping","src":"303:27:16"}],"id":5469,"name":"VariableDeclaration","src":"303:35:16"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":5535,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5497,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5470,"name":"ElementaryTypeName","src":"631:7:16"}],"id":5471,"name":"VariableDeclaration","src":"631:12:16"},{"attributes":{"constant":false,"name":"x","scope":5497,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5472,"name":"ElementaryTypeName","src":"645:7:16"}],"id":5473,"name":"VariableDeclaration","src":"645:9:16"},{"attributes":{"constant":false,"name":"y","scope":5497,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5474,"name":"ElementaryTypeName","src":"656:7:16"}],"id":5475,"name":"VariableDeclaration","src":"656:9:16"}],"id":5476,"name":"ParameterList","src":"630:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":5480,"name":"ParameterList","src":"693:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5477,"name":"Identifier","src":"676:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5471,"type":"bytes32","value":"node"},"id":5478,"name":"Identifier","src":"687:4:16"}],"id":5479,"name":"ModifierInvocation","src":"676:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5469,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5481,"name":"Identifier","src":"703:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5471,"type":"bytes32","value":"node"},"id":5482,"name":"Identifier","src":"711:4:16"}],"id":5483,"name":"IndexAccess","src":"703:13:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5465,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":5484,"name":"Identifier","src":"719:9:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5473,"type":"bytes32","value":"x"},"id":5485,"name":"Identifier","src":"729:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5475,"type":"bytes32","value":"y"},"id":5486,"name":"Identifier","src":"732:1:16"}],"id":5487,"name":"FunctionCall","src":"719:15:16"}],"id":5488,"name":"Assignment","src":"703:31:16"}],"id":5489,"name":"ExpressionStatement","src":"703:31:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":5490,"name":"Identifier","src":"749:13:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5471,"type":"bytes32","value":"node"},"id":5491,"name":"Identifier","src":"763:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5473,"type":"bytes32","value":"x"},"id":5492,"name":"Identifier","src":"769:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5475,"type":"bytes32","value":"y"},"id":5493,"name":"Identifier","src":"772:1:16"}],"id":5494,"name":"FunctionCall","src":"749:25:16"}],"id":5495,"name":"EmitStatement","src":"744:30:16"}],"id":5496,"name":"Block","src":"693:88:16"}],"id":5497,"name":"FunctionDefinition","src":"612:169:16"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":5535,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5517,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5498,"name":"ElementaryTypeName","src":"1039:7:16"}],"id":5499,"name":"VariableDeclaration","src":"1039:12:16"}],"id":5500,"name":"ParameterList","src":"1038:14:16"},{"children":[{"attributes":{"constant":false,"name":"x","scope":5517,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5501,"name":"ElementaryTypeName","src":"1076:7:16"}],"id":5502,"name":"VariableDeclaration","src":"1076:9:16"},{"attributes":{"constant":false,"name":"y","scope":5517,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5503,"name":"ElementaryTypeName","src":"1087:7:16"}],"id":5504,"name":"VariableDeclaration","src":"1087:9:16"}],"id":5505,"name":"ParameterList","src":"1075:22:16"},{"children":[{"attributes":{"functionReturnParameters":5505},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":5462,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5469,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5506,"name":"Identifier","src":"1116:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5499,"type":"bytes32","value":"node"},"id":5507,"name":"Identifier","src":"1124:4:16"}],"id":5508,"name":"IndexAccess","src":"1116:13:16"}],"id":5509,"name":"MemberAccess","src":"1116:15:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":5464,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5469,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5510,"name":"Identifier","src":"1133:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5499,"type":"bytes32","value":"node"},"id":5511,"name":"Identifier","src":"1141:4:16"}],"id":5512,"name":"IndexAccess","src":"1133:13:16"}],"id":5513,"name":"MemberAccess","src":"1133:15:16"}],"id":5514,"name":"TupleExpression","src":"1115:34:16"}],"id":5515,"name":"Return","src":"1108:41:16"}],"id":5516,"name":"Block","src":"1098:58:16"}],"id":5517,"name":"FunctionDefinition","src":"1023:133:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5535,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5534,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5518,"name":"ElementaryTypeName","src":"1189:6:16"}],"id":5519,"name":"VariableDeclaration","src":"1189:18:16"}],"id":5520,"name":"ParameterList","src":"1188:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":5534,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5521,"name":"ElementaryTypeName","src":"1229:4:16"}],"id":5522,"name":"VariableDeclaration","src":"1229:4:16"}],"id":5523,"name":"ParameterList","src":"1228:6:16"},{"children":[{"attributes":{"functionReturnParameters":5523},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5519,"type":"bytes4","value":"interfaceID"},"id":5524,"name":"Identifier","src":"1252:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5452,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":5525,"name":"Identifier","src":"1267:19:16"}],"id":5526,"name":"BinaryOperation","src":"1252:34:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7092,"type":"contract super PubkeyResolver","value":"super"},"id":5527,"name":"Identifier","src":"1290:5:16"}],"id":5528,"name":"MemberAccess","src":"1290:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5519,"type":"bytes4","value":"interfaceID"},"id":5529,"name":"Identifier","src":"1314:11:16"}],"id":5530,"name":"FunctionCall","src":"1290:36:16"}],"id":5531,"name":"BinaryOperation","src":"1252:74:16"}],"id":5532,"name":"Return","src":"1245:81:16"}],"id":5533,"name":"Block","src":"1235:98:16"}],"id":5534,"name":"FunctionDefinition","src":"1162:171:16"}],"id":5535,"name":"ContractDefinition","src":"56:1279:16"}],"id":5536,"name":"SourceUnit","src":"0:1336:16"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[5618]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5537,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5619,"symbolAliases":[null],"unitAlias":""},"id":5538,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5618,5687],"name":"TextResolver","scope":5619},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":5539,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":5540,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":5618,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5541,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":5542,"name":"Literal","src":"144:10:17"}],"id":5543,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5551,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5544,"name":"ElementaryTypeName","src":"179:7:17"}],"id":5545,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":5551,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5546,"name":"ElementaryTypeName","src":"201:6:17"}],"id":5547,"name":"VariableDeclaration","src":"201:25:17"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":5551,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5548,"name":"ElementaryTypeName","src":"228:6:17"}],"id":5549,"name":"VariableDeclaration","src":"228:10:17"}],"id":5550,"name":"ParameterList","src":"178:61:17"}],"id":5551,"name":"EventDefinition","src":"161:79:17"},{"attributes":{"constant":false,"name":"texts","scope":5618,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5552,"name":"ElementaryTypeName","src":"254:7:17"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":5553,"name":"ElementaryTypeName","src":"271:6:17"},{"attributes":{"name":"string","type":"string"},"id":5554,"name":"ElementaryTypeName","src":"279:6:17"}],"id":5555,"name":"Mapping","src":"263:23:17"}],"id":5556,"name":"Mapping","src":"246:41:17"}],"id":5557,"name":"VariableDeclaration","src":"246:47:17"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":5618,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5584,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5558,"name":"ElementaryTypeName","src":"590:7:17"}],"id":5559,"name":"VariableDeclaration","src":"590:12:17"},{"attributes":{"constant":false,"name":"key","scope":5584,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5560,"name":"ElementaryTypeName","src":"604:6:17"}],"id":5561,"name":"VariableDeclaration","src":"604:19:17"},{"attributes":{"constant":false,"name":"value","scope":5584,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5562,"name":"ElementaryTypeName","src":"625:6:17"}],"id":5563,"name":"VariableDeclaration","src":"625:21:17"}],"id":5564,"name":"ParameterList","src":"589:58:17"},{"attributes":{"parameters":[null]},"children":[],"id":5568,"name":"ParameterList","src":"674:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5565,"name":"Identifier","src":"657:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5559,"type":"bytes32","value":"node"},"id":5566,"name":"Identifier","src":"668:4:17"}],"id":5567,"name":"ModifierInvocation","src":"657:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5557,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":5569,"name":"Identifier","src":"684:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5559,"type":"bytes32","value":"node"},"id":5570,"name":"Identifier","src":"690:4:17"}],"id":5572,"name":"IndexAccess","src":"684:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5561,"type":"string calldata","value":"key"},"id":5571,"name":"Identifier","src":"696:3:17"}],"id":5573,"name":"IndexAccess","src":"684:16:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5563,"type":"string calldata","value":"value"},"id":5574,"name":"Identifier","src":"703:5:17"}],"id":5575,"name":"Assignment","src":"684:24:17"}],"id":5576,"name":"ExpressionStatement","src":"684:24:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5551,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":5577,"name":"Identifier","src":"723:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5559,"type":"bytes32","value":"node"},"id":5578,"name":"Identifier","src":"735:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5561,"type":"string calldata","value":"key"},"id":5579,"name":"Identifier","src":"741:3:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5561,"type":"string calldata","value":"key"},"id":5580,"name":"Identifier","src":"746:3:17"}],"id":5581,"name":"FunctionCall","src":"723:27:17"}],"id":5582,"name":"EmitStatement","src":"718:32:17"}],"id":5583,"name":"Block","src":"674:83:17"}],"id":5584,"name":"FunctionDefinition","src":"573:184:17"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":5618,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5600,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5585,"name":"ElementaryTypeName","src":"988:7:17"}],"id":5586,"name":"VariableDeclaration","src":"988:12:17"},{"attributes":{"constant":false,"name":"key","scope":5600,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5587,"name":"ElementaryTypeName","src":"1002:6:17"}],"id":5588,"name":"VariableDeclaration","src":"1002:19:17"}],"id":5589,"name":"ParameterList","src":"987:35:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":5600,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5590,"name":"ElementaryTypeName","src":"1046:6:17"}],"id":5591,"name":"VariableDeclaration","src":"1046:13:17"}],"id":5592,"name":"ParameterList","src":"1045:15:17"},{"children":[{"attributes":{"functionReturnParameters":5592},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5557,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":5593,"name":"Identifier","src":"1078:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5586,"type":"bytes32","value":"node"},"id":5594,"name":"Identifier","src":"1084:4:17"}],"id":5595,"name":"IndexAccess","src":"1078:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5588,"type":"string calldata","value":"key"},"id":5596,"name":"Identifier","src":"1090:3:17"}],"id":5597,"name":"IndexAccess","src":"1078:16:17"}],"id":5598,"name":"Return","src":"1071:23:17"}],"id":5599,"name":"Block","src":"1061:40:17"}],"id":5600,"name":"FunctionDefinition","src":"974:127:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5618,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5617,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5601,"name":"ElementaryTypeName","src":"1134:6:17"}],"id":5602,"name":"VariableDeclaration","src":"1134:18:17"}],"id":5603,"name":"ParameterList","src":"1133:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":5617,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5604,"name":"ElementaryTypeName","src":"1174:4:17"}],"id":5605,"name":"VariableDeclaration","src":"1174:4:17"}],"id":5606,"name":"ParameterList","src":"1173:6:17"},{"children":[{"attributes":{"functionReturnParameters":5606},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5602,"type":"bytes4","value":"interfaceID"},"id":5607,"name":"Identifier","src":"1197:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5543,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":5608,"name":"Identifier","src":"1212:17:17"}],"id":5609,"name":"BinaryOperation","src":"1197:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7094,"type":"contract super TextResolver","value":"super"},"id":5610,"name":"Identifier","src":"1233:5:17"}],"id":5611,"name":"MemberAccess","src":"1233:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5602,"type":"bytes4","value":"interfaceID"},"id":5612,"name":"Identifier","src":"1257:11:17"}],"id":5613,"name":"FunctionCall","src":"1233:36:17"}],"id":5614,"name":"BinaryOperation","src":"1197:72:17"}],"id":5615,"name":"Return","src":"1190:79:17"}],"id":5616,"name":"Block","src":"1180:96:17"}],"id":5617,"name":"FunctionDefinition","src":"1107:169:17"}],"id":5618,"name":"ContractDefinition","src":"56:1222:17"}],"id":5619,"name":"SourceUnit","src":"0:1278:17"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[2826]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1122,"name":"PragmaDirective","src":"2574:23:18"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[2826],"name":"strings","scope":2827},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":2826,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":1127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1123,"name":"ElementaryTypeName","src":"2644:4:18"}],"id":1124,"name":"VariableDeclaration","src":"2644:9:18"},{"attributes":{"constant":false,"name":"_ptr","scope":1127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1125,"name":"ElementaryTypeName","src":"2663:4:18"}],"id":1126,"name":"VariableDeclaration","src":"2663:9:18"}],"id":1127,"name":"StructDefinition","src":"2621:58:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":1167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1128,"name":"ElementaryTypeName","src":"2701:4:18"}],"id":1129,"name":"VariableDeclaration","src":"2701:9:18"},{"attributes":{"constant":false,"name":"src","scope":1167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1130,"name":"ElementaryTypeName","src":"2712:4:18"}],"id":1131,"name":"VariableDeclaration","src":"2712:8:18"},{"attributes":{"constant":false,"name":"len","scope":1167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1132,"name":"ElementaryTypeName","src":"2722:4:18"}],"id":1133,"name":"VariableDeclaration","src":"2722:8:18"}],"id":1134,"name":"ParameterList","src":"2700:31:18"},{"attributes":{"parameters":[null]},"children":[],"id":1135,"name":"ParameterList","src":"2745:0:18"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"len"},"id":1136,"name":"Identifier","src":"2811:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1137,"name":"Literal","src":"2818:2:18"}],"id":1138,"name":"BinaryOperation","src":"2811:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"len"},"id":1139,"name":"Identifier","src":"2822:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1140,"name":"Literal","src":"2829:2:18"}],"id":1141,"name":"Assignment","src":"2822:9:18"}],"id":1142,"name":"ExpressionStatement","src":"2822:9:18"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":1131,"isOffset":false,"isSlot":false,"src":"2893:3:18","valueSize":1}},{"dest":{"declaration":1129,"isOffset":false,"isSlot":false,"src":"2881:4:18","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":1143,"name":"InlineAssembly","src":"2847:65:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1129,"type":"uint256","value":"dest"},"id":1144,"name":"Identifier","src":"2925:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1145,"name":"Literal","src":"2933:2:18"}],"id":1146,"name":"Assignment","src":"2925:10:18"}],"id":1147,"name":"ExpressionStatement","src":"2925:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1131,"type":"uint256","value":"src"},"id":1148,"name":"Identifier","src":"2949:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1149,"name":"Literal","src":"2956:2:18"}],"id":1150,"name":"Assignment","src":"2949:9:18"}],"id":1151,"name":"ExpressionStatement","src":"2949:9:18"}],"id":1152,"name":"Block","src":"2833:136:18"}],"id":1153,"name":"ForStatement","src":"2805:164:18"},{"attributes":{"assignments":[1155]},"children":[{"attributes":{"constant":false,"name":"mask","scope":1166,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1154,"name":"ElementaryTypeName","src":"3011:4:18"}],"id":1155,"name":"VariableDeclaration","src":"3011:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":1156,"name":"Literal","src":"3023:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1157,"name":"Literal","src":"3031:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"len"},"id":1158,"name":"Identifier","src":"3036:3:18"}],"id":1159,"name":"BinaryOperation","src":"3031:8:18"}],"id":1160,"name":"TupleExpression","src":"3030:10:18"}],"id":1161,"name":"BinaryOperation","src":"3023:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1162,"name":"Literal","src":"3043:1:18"}],"id":1163,"name":"BinaryOperation","src":"3023:21:18"}],"id":1164,"name":"VariableDeclarationStatement","src":"3011:33:18"},{"attributes":{"externalReferences":[{"src":{"declaration":1131,"isOffset":false,"isSlot":false,"src":"3102:3:18","valueSize":1}},{"mask":{"declaration":1155,"isOffset":false,"isSlot":false,"src":"3112:4:18","valueSize":1}},{"dest":{"declaration":1129,"isOffset":false,"isSlot":false,"src":"3189:4:18","valueSize":1}},{"dest":{"declaration":1129,"isOffset":false,"isSlot":false,"src":"3157:4:18","valueSize":1}},{"mask":{"declaration":1155,"isOffset":false,"isSlot":false,"src":"3164:4:18","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":1165,"name":"InlineAssembly","src":"3054:173:18"}],"id":1166,"name":"Block","src":"2745:488:18"}],"id":1167,"name":"FunctionDefinition","src":"2685:548:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1187,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1168,"name":"ElementaryTypeName","src":"3450:6:18"}],"id":1169,"name":"VariableDeclaration","src":"3450:18:18"}],"id":1170,"name":"ParameterList","src":"3449:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1187,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1171,"name":"UserDefinedTypeName","src":"3493:5:18"}],"id":1172,"name":"VariableDeclaration","src":"3493:12:18"}],"id":1173,"name":"ParameterList","src":"3492:14:18"},{"children":[{"attributes":{"assignments":[1175],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":1186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1174,"name":"ElementaryTypeName","src":"3517:4:18"}],"id":1175,"name":"VariableDeclaration","src":"3517:8:18"}],"id":1176,"name":"VariableDeclarationStatement","src":"3517:8:18"},{"attributes":{"externalReferences":[{"ptr":{"declaration":1175,"isOffset":false,"isSlot":false,"src":"3558:3:18","valueSize":1}},{"self":{"declaration":1169,"isOffset":false,"isSlot":false,"src":"3569:4:18","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":1177,"name":"InlineAssembly","src":"3535:55:18"},{"attributes":{"functionReturnParameters":1173},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1127,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":1178,"name":"Identifier","src":"3606:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":1179,"name":"ElementaryTypeNameExpression","src":"3612:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1169,"type":"string memory","value":"self"},"id":1180,"name":"Identifier","src":"3618:4:18"}],"id":1181,"name":"FunctionCall","src":"3612:11:18"}],"id":1182,"name":"MemberAccess","src":"3612:18:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1175,"type":"uint256","value":"ptr"},"id":1183,"name":"Identifier","src":"3632:3:18"}],"id":1184,"name":"FunctionCall","src":"3606:30:18"}],"id":1185,"name":"Return","src":"3599:37:18"}],"id":1186,"name":"Block","src":"3507:136:18"}],"id":1187,"name":"FunctionDefinition","src":"3433:210:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1313,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1188,"name":"ElementaryTypeName","src":"3852:7:18"}],"id":1189,"name":"VariableDeclaration","src":"3852:12:18"}],"id":1190,"name":"ParameterList","src":"3851:14:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1313,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1191,"name":"ElementaryTypeName","src":"3889:4:18"}],"id":1192,"name":"VariableDeclaration","src":"3889:4:18"}],"id":1193,"name":"ParameterList","src":"3888:6:18"},{"children":[{"attributes":{"assignments":[1195],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":1312,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1194,"name":"ElementaryTypeName","src":"3905:4:18"}],"id":1195,"name":"VariableDeclaration","src":"3905:8:18"}],"id":1196,"name":"VariableDeclarationStatement","src":"3905:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1197,"name":"Identifier","src":"3927:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1198,"name":"Literal","src":"3935:1:18"}],"id":1199,"name":"BinaryOperation","src":"3927:9:18"},{"attributes":{"functionReturnParameters":1193},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1200,"name":"Literal","src":"3957:1:18"}],"id":1201,"name":"Return","src":"3950:8:18"}],"id":1202,"name":"IfStatement","src":"3923:35:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1203,"name":"ElementaryTypeNameExpression","src":"3972:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1204,"name":"Identifier","src":"3977:4:18"}],"id":1205,"name":"FunctionCall","src":"3972:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":1206,"name":"Literal","src":"3985:34:18"}],"id":1207,"name":"BinaryOperation","src":"3972:47:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1208,"name":"Literal","src":"4023:1:18"}],"id":1209,"name":"BinaryOperation","src":"3972:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1210,"name":"Identifier","src":"4040:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":1211,"name":"Literal","src":"4047:2:18"}],"id":1212,"name":"Assignment","src":"4040:9:18"}],"id":1213,"name":"ExpressionStatement","src":"4040:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1214,"name":"Identifier","src":"4063:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":1215,"name":"ElementaryTypeNameExpression","src":"4070:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1216,"name":"ElementaryTypeNameExpression","src":"4078:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1217,"name":"Identifier","src":"4083:4:18"}],"id":1218,"name":"FunctionCall","src":"4078:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":1219,"name":"Literal","src":"4091:35:18"}],"id":1220,"name":"BinaryOperation","src":"4078:48:18"}],"id":1221,"name":"FunctionCall","src":"4070:57:18"}],"id":1222,"name":"Assignment","src":"4063:64:18"}],"id":1223,"name":"ExpressionStatement","src":"4063:64:18"}],"id":1224,"name":"Block","src":"4026:112:18"}],"id":1225,"name":"IfStatement","src":"3968:170:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1226,"name":"ElementaryTypeNameExpression","src":"4151:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1227,"name":"Identifier","src":"4156:4:18"}],"id":1228,"name":"FunctionCall","src":"4151:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":1229,"name":"Literal","src":"4164:18:18"}],"id":1230,"name":"BinaryOperation","src":"4151:31:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1231,"name":"Literal","src":"4186:1:18"}],"id":1232,"name":"BinaryOperation","src":"4151:36:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1233,"name":"Identifier","src":"4203:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":1234,"name":"Literal","src":"4210:1:18"}],"id":1235,"name":"Assignment","src":"4203:8:18"}],"id":1236,"name":"ExpressionStatement","src":"4203:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1237,"name":"Identifier","src":"4225:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":1238,"name":"ElementaryTypeNameExpression","src":"4232:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1239,"name":"ElementaryTypeNameExpression","src":"4240:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1240,"name":"Identifier","src":"4245:4:18"}],"id":1241,"name":"FunctionCall","src":"4240:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":1242,"name":"Literal","src":"4253:19:18"}],"id":1243,"name":"BinaryOperation","src":"4240:32:18"}],"id":1244,"name":"FunctionCall","src":"4232:41:18"}],"id":1245,"name":"Assignment","src":"4225:48:18"}],"id":1246,"name":"ExpressionStatement","src":"4225:48:18"}],"id":1247,"name":"Block","src":"4189:95:18"}],"id":1248,"name":"IfStatement","src":"4147:137:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1249,"name":"ElementaryTypeNameExpression","src":"4297:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1250,"name":"Identifier","src":"4302:4:18"}],"id":1251,"name":"FunctionCall","src":"4297:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":1252,"name":"Literal","src":"4310:10:18"}],"id":1253,"name":"BinaryOperation","src":"4297:23:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1254,"name":"Literal","src":"4324:1:18"}],"id":1255,"name":"BinaryOperation","src":"4297:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1256,"name":"Identifier","src":"4341:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1257,"name":"Literal","src":"4348:1:18"}],"id":1258,"name":"Assignment","src":"4341:8:18"}],"id":1259,"name":"ExpressionStatement","src":"4341:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1260,"name":"Identifier","src":"4363:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":1261,"name":"ElementaryTypeNameExpression","src":"4370:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1262,"name":"ElementaryTypeNameExpression","src":"4378:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1263,"name":"Identifier","src":"4383:4:18"}],"id":1264,"name":"FunctionCall","src":"4378:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":1265,"name":"Literal","src":"4391:11:18"}],"id":1266,"name":"BinaryOperation","src":"4378:24:18"}],"id":1267,"name":"FunctionCall","src":"4370:33:18"}],"id":1268,"name":"Assignment","src":"4363:40:18"}],"id":1269,"name":"ExpressionStatement","src":"4363:40:18"}],"id":1270,"name":"Block","src":"4327:87:18"}],"id":1271,"name":"IfStatement","src":"4293:121:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1272,"name":"ElementaryTypeNameExpression","src":"4427:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1273,"name":"Identifier","src":"4432:4:18"}],"id":1274,"name":"FunctionCall","src":"4427:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":1275,"name":"Literal","src":"4440:6:18"}],"id":1276,"name":"BinaryOperation","src":"4427:19:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1277,"name":"Literal","src":"4450:1:18"}],"id":1278,"name":"BinaryOperation","src":"4427:24:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1279,"name":"Identifier","src":"4467:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1280,"name":"Literal","src":"4474:1:18"}],"id":1281,"name":"Assignment","src":"4467:8:18"}],"id":1282,"name":"ExpressionStatement","src":"4467:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1283,"name":"Identifier","src":"4489:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":1284,"name":"ElementaryTypeNameExpression","src":"4496:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1285,"name":"ElementaryTypeNameExpression","src":"4504:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1286,"name":"Identifier","src":"4509:4:18"}],"id":1287,"name":"FunctionCall","src":"4504:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":1288,"name":"Literal","src":"4517:7:18"}],"id":1289,"name":"BinaryOperation","src":"4504:20:18"}],"id":1290,"name":"FunctionCall","src":"4496:29:18"}],"id":1291,"name":"Assignment","src":"4489:36:18"}],"id":1292,"name":"ExpressionStatement","src":"4489:36:18"}],"id":1293,"name":"Block","src":"4453:83:18"}],"id":1294,"name":"IfStatement","src":"4423:113:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1295,"name":"ElementaryTypeNameExpression","src":"4549:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1296,"name":"Identifier","src":"4554:4:18"}],"id":1297,"name":"FunctionCall","src":"4549:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1298,"name":"Literal","src":"4562:4:18"}],"id":1299,"name":"BinaryOperation","src":"4549:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1300,"name":"Literal","src":"4570:1:18"}],"id":1301,"name":"BinaryOperation","src":"4549:22:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1302,"name":"Identifier","src":"4587:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1303,"name":"Literal","src":"4594:1:18"}],"id":1304,"name":"Assignment","src":"4587:8:18"}],"id":1305,"name":"ExpressionStatement","src":"4587:8:18"}],"id":1306,"name":"Block","src":"4573:33:18"}],"id":1307,"name":"IfStatement","src":"4545:61:18"},{"attributes":{"functionReturnParameters":1193},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1308,"name":"Literal","src":"4622:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1309,"name":"Identifier","src":"4627:3:18"}],"id":1310,"name":"BinaryOperation","src":"4622:8:18"}],"id":1311,"name":"Return","src":"4615:15:18"}],"id":1312,"name":"Block","src":"3895:742:18"}],"id":1313,"name":"FunctionDefinition","src":"3839:798:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1330,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1314,"name":"ElementaryTypeName","src":"4963:7:18"}],"id":1315,"name":"VariableDeclaration","src":"4963:12:18"}],"id":1316,"name":"ParameterList","src":"4962:14:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":1330,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1317,"name":"UserDefinedTypeName","src":"5000:5:18"}],"id":1318,"name":"VariableDeclaration","src":"5000:16:18"}],"id":1319,"name":"ParameterList","src":"4999:18:18"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":1315,"isOffset":false,"isSlot":false,"src":"5222:4:18","valueSize":1}},{"ret":{"declaration":1318,"isOffset":false,"isSlot":false,"src":"5251:3:18","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":1320,"name":"InlineAssembly","src":"5111:166:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1318,"type":"struct strings.slice memory","value":"ret"},"id":1321,"name":"Identifier","src":"5286:3:18"}],"id":1323,"name":"MemberAccess","src":"5286:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[1313,1463],"referencedDeclaration":1313,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":1324,"name":"Identifier","src":"5297:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1315,"type":"bytes32","value":"self"},"id":1325,"name":"Identifier","src":"5301:4:18"}],"id":1326,"name":"FunctionCall","src":"5297:9:18"}],"id":1327,"name":"Assignment","src":"5286:20:18"}],"id":1328,"name":"ExpressionStatement","src":"5286:20:18"}],"id":1329,"name":"Block","src":"5018:295:18"}],"id":1330,"name":"FunctionDefinition","src":"4943:370:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1345,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1331,"name":"UserDefinedTypeName","src":"5528:5:18"}],"id":1332,"name":"VariableDeclaration","src":"5528:17:18"}],"id":1333,"name":"ParameterList","src":"5527:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1345,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1334,"name":"UserDefinedTypeName","src":"5570:5:18"}],"id":1335,"name":"VariableDeclaration","src":"5570:12:18"}],"id":1336,"name":"ParameterList","src":"5569:14:18"},{"children":[{"attributes":{"functionReturnParameters":1336},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1127,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":1337,"name":"Identifier","src":"5601:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1332,"type":"struct strings.slice memory","value":"self"},"id":1338,"name":"Identifier","src":"5607:4:18"}],"id":1339,"name":"MemberAccess","src":"5607:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1332,"type":"struct strings.slice memory","value":"self"},"id":1340,"name":"Identifier","src":"5618:4:18"}],"id":1341,"name":"MemberAccess","src":"5618:9:18"}],"id":1342,"name":"FunctionCall","src":"5601:27:18"}],"id":1343,"name":"Return","src":"5594:34:18"}],"id":1344,"name":"Block","src":"5584:51:18"}],"id":1345,"name":"FunctionDefinition","src":"5514:121:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1375,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1346,"name":"UserDefinedTypeName","src":"5825:5:18"}],"id":1347,"name":"VariableDeclaration","src":"5825:17:18"}],"id":1348,"name":"ParameterList","src":"5824:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1375,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1349,"name":"ElementaryTypeName","src":"5867:6:18"}],"id":1350,"name":"VariableDeclaration","src":"5867:13:18"}],"id":1351,"name":"ParameterList","src":"5866:15:18"},{"children":[{"attributes":{"assignments":[1353]},"children":[{"attributes":{"constant":false,"name":"ret","scope":1374,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1352,"name":"ElementaryTypeName","src":"5892:6:18"}],"id":1353,"name":"VariableDeclaration","src":"5892:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":1354,"name":"ElementaryTypeName","src":"5916:6:18"}],"id":1355,"name":"NewExpression","src":"5912:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1347,"type":"struct strings.slice memory","value":"self"},"id":1356,"name":"Identifier","src":"5923:4:18"}],"id":1357,"name":"MemberAccess","src":"5923:9:18"}],"id":1358,"name":"FunctionCall","src":"5912:21:18"}],"id":1359,"name":"VariableDeclarationStatement","src":"5892:41:18"},{"attributes":{"assignments":[1361],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":1374,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1360,"name":"ElementaryTypeName","src":"5943:4:18"}],"id":1361,"name":"VariableDeclaration","src":"5943:11:18"}],"id":1362,"name":"VariableDeclarationStatement","src":"5943:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":1361,"isOffset":false,"isSlot":false,"src":"5975:6:18","valueSize":1}},{"ret":{"declaration":1353,"isOffset":false,"isSlot":false,"src":"5989:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":1363,"name":"InlineAssembly","src":"5964:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":1364,"name":"Identifier","src":"6009:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1361,"type":"uint256","value":"retptr"},"id":1365,"name":"Identifier","src":"6016:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1347,"type":"struct strings.slice memory","value":"self"},"id":1366,"name":"Identifier","src":"6024:4:18"}],"id":1367,"name":"MemberAccess","src":"6024:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1347,"type":"struct strings.slice memory","value":"self"},"id":1368,"name":"Identifier","src":"6035:4:18"}],"id":1369,"name":"MemberAccess","src":"6035:9:18"}],"id":1370,"name":"FunctionCall","src":"6009:36:18"}],"id":1371,"name":"ExpressionStatement","src":"6009:36:18"},{"attributes":{"functionReturnParameters":1351},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1353,"type":"string memory","value":"ret"},"id":1372,"name":"Identifier","src":"6062:3:18"}],"id":1373,"name":"Return","src":"6055:10:18"}],"id":1374,"name":"Block","src":"5882:190:18"}],"id":1375,"name":"FunctionDefinition","src":"5807:265:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1463,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1376,"name":"UserDefinedTypeName","src":"6476:5:18"}],"id":1377,"name":"VariableDeclaration","src":"6476:17:18"}],"id":1378,"name":"ParameterList","src":"6475:19:18"},{"children":[{"attributes":{"constant":false,"name":"l","scope":1463,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1379,"name":"ElementaryTypeName","src":"6518:4:18"}],"id":1380,"name":"VariableDeclaration","src":"6518:6:18"}],"id":1381,"name":"ParameterList","src":"6517:8:18"},{"children":[{"attributes":{"assignments":[1383]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":1462,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1382,"name":"ElementaryTypeName","src":"6611:4:18"}],"id":1383,"name":"VariableDeclaration","src":"6611:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1377,"type":"struct strings.slice memory","value":"self"},"id":1384,"name":"Identifier","src":"6622:4:18"}],"id":1385,"name":"MemberAccess","src":"6622:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":1386,"name":"Literal","src":"6634:2:18"}],"id":1387,"name":"BinaryOperation","src":"6622:14:18"}],"id":1388,"name":"VariableDeclarationStatement","src":"6611:25:18"},{"attributes":{"assignments":[1390]},"children":[{"attributes":{"constant":false,"name":"end","scope":1462,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1389,"name":"ElementaryTypeName","src":"6646:4:18"}],"id":1390,"name":"VariableDeclaration","src":"6646:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1391,"name":"Identifier","src":"6657:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1377,"type":"struct strings.slice memory","value":"self"},"id":1392,"name":"Identifier","src":"6663:4:18"}],"id":1393,"name":"MemberAccess","src":"6663:9:18"}],"id":1394,"name":"BinaryOperation","src":"6657:15:18"}],"id":1395,"name":"VariableDeclarationStatement","src":"6646:26:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"uint256","value":"l"},"id":1396,"name":"Identifier","src":"6687:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1397,"name":"Literal","src":"6691:1:18"}],"id":1398,"name":"Assignment","src":"6687:5:18"}],"id":1399,"name":"ExpressionStatement","src":"6687:5:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1400,"name":"Identifier","src":"6694:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1390,"type":"uint256","value":"end"},"id":1401,"name":"Identifier","src":"6700:3:18"}],"id":1402,"name":"BinaryOperation","src":"6694:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"uint256","value":"l"},"id":1403,"name":"Identifier","src":"6705:1:18"}],"id":1404,"name":"UnaryOperation","src":"6705:3:18"}],"id":1405,"name":"ExpressionStatement","src":"6705:3:18"},{"children":[{"attributes":{"assignments":[1407],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":1460,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1406,"name":"ElementaryTypeName","src":"6724:5:18"}],"id":1407,"name":"VariableDeclaration","src":"6724:7:18"}],"id":1408,"name":"VariableDeclarationStatement","src":"6724:7:18"},{"attributes":{"externalReferences":[{"b":{"declaration":1407,"isOffset":false,"isSlot":false,"src":"6756:1:18","valueSize":1}},{"ptr":{"declaration":1383,"isOffset":false,"isSlot":false,"src":"6771:3:18","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":1409,"name":"InlineAssembly","src":"6745:39:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1410,"name":"Identifier","src":"6801:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":1411,"name":"Literal","src":"6805:4:18"}],"id":1412,"name":"BinaryOperation","src":"6801:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1413,"name":"Identifier","src":"6829:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1414,"name":"Literal","src":"6836:1:18"}],"id":1415,"name":"Assignment","src":"6829:8:18"}],"id":1416,"name":"ExpressionStatement","src":"6829:8:18"}],"id":1417,"name":"Block","src":"6811:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1418,"name":"Identifier","src":"6862:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":1419,"name":"Literal","src":"6866:4:18"}],"id":1420,"name":"BinaryOperation","src":"6862:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1421,"name":"Identifier","src":"6890:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1422,"name":"Literal","src":"6897:1:18"}],"id":1423,"name":"Assignment","src":"6890:8:18"}],"id":1424,"name":"ExpressionStatement","src":"6890:8:18"}],"id":1425,"name":"Block","src":"6872:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1426,"name":"Identifier","src":"6923:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":1427,"name":"Literal","src":"6927:4:18"}],"id":1428,"name":"BinaryOperation","src":"6923:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1429,"name":"Identifier","src":"6951:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1430,"name":"Literal","src":"6958:1:18"}],"id":1431,"name":"Assignment","src":"6951:8:18"}],"id":1432,"name":"ExpressionStatement","src":"6951:8:18"}],"id":1433,"name":"Block","src":"6933:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1434,"name":"Identifier","src":"6984:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":1435,"name":"Literal","src":"6988:4:18"}],"id":1436,"name":"BinaryOperation","src":"6984:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1437,"name":"Identifier","src":"7012:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1438,"name":"Literal","src":"7019:1:18"}],"id":1439,"name":"Assignment","src":"7012:8:18"}],"id":1440,"name":"ExpressionStatement","src":"7012:8:18"}],"id":1441,"name":"Block","src":"6994:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1442,"name":"Identifier","src":"7045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":1443,"name":"Literal","src":"7049:4:18"}],"id":1444,"name":"BinaryOperation","src":"7045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1445,"name":"Identifier","src":"7073:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":1446,"name":"Literal","src":"7080:1:18"}],"id":1447,"name":"Assignment","src":"7073:8:18"}],"id":1448,"name":"ExpressionStatement","src":"7073:8:18"}],"id":1449,"name":"Block","src":"7055:41:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1450,"name":"Identifier","src":"7120:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":1451,"name":"Literal","src":"7127:1:18"}],"id":1452,"name":"Assignment","src":"7120:8:18"}],"id":1453,"name":"ExpressionStatement","src":"7120:8:18"}],"id":1454,"name":"Block","src":"7102:41:18"}],"id":1455,"name":"IfStatement","src":"7041:102:18"}],"id":1456,"name":"IfStatement","src":"6980:163:18"}],"id":1457,"name":"IfStatement","src":"6919:224:18"}],"id":1458,"name":"IfStatement","src":"6858:285:18"}],"id":1459,"name":"IfStatement","src":"6797:346:18"}],"id":1460,"name":"Block","src":"6710:443:18"}],"id":1461,"name":"ForStatement","src":"6682:471:18"}],"id":1462,"name":"Block","src":"6526:633:18"}],"id":1463,"name":"FunctionDefinition","src":"6463:696:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1476,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1464,"name":"UserDefinedTypeName","src":"7367:5:18"}],"id":1465,"name":"VariableDeclaration","src":"7367:17:18"}],"id":1466,"name":"ParameterList","src":"7366:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1476,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1467,"name":"ElementaryTypeName","src":"7409:4:18"}],"id":1468,"name":"VariableDeclaration","src":"7409:4:18"}],"id":1469,"name":"ParameterList","src":"7408:6:18"},{"children":[{"attributes":{"functionReturnParameters":1469},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"struct strings.slice memory","value":"self"},"id":1470,"name":"Identifier","src":"7432:4:18"}],"id":1471,"name":"MemberAccess","src":"7432:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1472,"name":"Literal","src":"7445:1:18"}],"id":1473,"name":"BinaryOperation","src":"7432:14:18"}],"id":1474,"name":"Return","src":"7425:21:18"}],"id":1475,"name":"Block","src":"7415:38:18"}],"id":1476,"name":"FunctionDefinition","src":"7352:101:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1605,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1477,"name":"UserDefinedTypeName","src":"7898:5:18"}],"id":1478,"name":"VariableDeclaration","src":"7898:17:18"},{"attributes":{"constant":false,"name":"other","scope":1605,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1479,"name":"UserDefinedTypeName","src":"7917:5:18"}],"id":1480,"name":"VariableDeclaration","src":"7917:18:18"}],"id":1481,"name":"ParameterList","src":"7897:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1605,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":1482,"name":"ElementaryTypeName","src":"7960:3:18"}],"id":1483,"name":"VariableDeclaration","src":"7960:3:18"}],"id":1484,"name":"ParameterList","src":"7959:5:18"},{"children":[{"attributes":{"assignments":[1486]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":1604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1485,"name":"ElementaryTypeName","src":"7975:4:18"}],"id":1486,"name":"VariableDeclaration","src":"7975:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1478,"type":"struct strings.slice memory","value":"self"},"id":1487,"name":"Identifier","src":"7991:4:18"}],"id":1488,"name":"MemberAccess","src":"7991:9:18"}],"id":1489,"name":"VariableDeclarationStatement","src":"7975:25:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1480,"type":"struct strings.slice memory","value":"other"},"id":1490,"name":"Identifier","src":"8014:5:18"}],"id":1491,"name":"MemberAccess","src":"8014:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1478,"type":"struct strings.slice memory","value":"self"},"id":1492,"name":"Identifier","src":"8027:4:18"}],"id":1493,"name":"MemberAccess","src":"8027:9:18"}],"id":1494,"name":"BinaryOperation","src":"8014:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"uint256","value":"shortest"},"id":1495,"name":"Identifier","src":"8050:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1480,"type":"struct strings.slice memory","value":"other"},"id":1496,"name":"Identifier","src":"8061:5:18"}],"id":1497,"name":"MemberAccess","src":"8061:10:18"}],"id":1498,"name":"Assignment","src":"8050:21:18"}],"id":1499,"name":"ExpressionStatement","src":"8050:21:18"}],"id":1500,"name":"IfStatement","src":"8010:61:18"},{"attributes":{"assignments":[1502]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":1604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1501,"name":"ElementaryTypeName","src":"8082:4:18"}],"id":1502,"name":"VariableDeclaration","src":"8082:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1478,"type":"struct strings.slice memory","value":"self"},"id":1503,"name":"Identifier","src":"8097:4:18"}],"id":1504,"name":"MemberAccess","src":"8097:9:18"}],"id":1505,"name":"VariableDeclarationStatement","src":"8082:24:18"},{"attributes":{"assignments":[1507]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":1604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1506,"name":"ElementaryTypeName","src":"8116:4:18"}],"id":1507,"name":"VariableDeclaration","src":"8116:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1480,"type":"struct strings.slice memory","value":"other"},"id":1508,"name":"Identifier","src":"8132:5:18"}],"id":1509,"name":"MemberAccess","src":"8132:10:18"}],"id":1510,"name":"VariableDeclarationStatement","src":"8116:26:18"},{"children":[{"attributes":{"assignments":[1512]},"children":[{"attributes":{"constant":false,"name":"idx","scope":1593,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1511,"name":"ElementaryTypeName","src":"8157:4:18"}],"id":1512,"name":"VariableDeclaration","src":"8157:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1513,"name":"Literal","src":"8168:1:18"}],"id":1514,"name":"VariableDeclarationStatement","src":"8157:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1512,"type":"uint256","value":"idx"},"id":1515,"name":"Identifier","src":"8171:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"uint256","value":"shortest"},"id":1516,"name":"Identifier","src":"8177:8:18"}],"id":1517,"name":"BinaryOperation","src":"8171:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1512,"type":"uint256","value":"idx"},"id":1518,"name":"Identifier","src":"8187:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1519,"name":"Literal","src":"8194:2:18"}],"id":1520,"name":"Assignment","src":"8187:9:18"}],"id":1521,"name":"ExpressionStatement","src":"8187:9:18"},{"children":[{"attributes":{"assignments":[1523],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":1592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1522,"name":"ElementaryTypeName","src":"8212:4:18"}],"id":1523,"name":"VariableDeclaration","src":"8212:6:18"}],"id":1524,"name":"VariableDeclarationStatement","src":"8212:6:18"},{"attributes":{"assignments":[1526],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":1592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1525,"name":"ElementaryTypeName","src":"8232:4:18"}],"id":1526,"name":"VariableDeclaration","src":"8232:6:18"}],"id":1527,"name":"VariableDeclarationStatement","src":"8232:6:18"},{"attributes":{"externalReferences":[{"a":{"declaration":1523,"isOffset":false,"isSlot":false,"src":"8279:1:18","valueSize":1}},{"selfptr":{"declaration":1502,"isOffset":false,"isSlot":false,"src":"8290:7:18","valueSize":1}},{"b":{"declaration":1526,"isOffset":false,"isSlot":false,"src":"8315:1:18","valueSize":1}},{"otherptr":{"declaration":1507,"isOffset":false,"isSlot":false,"src":"8326:8:18","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":1528,"name":"InlineAssembly","src":"8252:97:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1523,"type":"uint256","value":"a"},"id":1529,"name":"Identifier","src":"8366:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1526,"type":"uint256","value":"b"},"id":1530,"name":"Identifier","src":"8371:1:18"}],"id":1531,"name":"BinaryOperation","src":"8366:6:18"},{"children":[{"attributes":{"assignments":[1533]},"children":[{"attributes":{"constant":false,"name":"mask","scope":1582,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1532,"name":"ElementaryTypeName","src":"8453:7:18"}],"id":1533,"name":"VariableDeclaration","src":"8453:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":1534,"name":"ElementaryTypeNameExpression","src":"8468:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1535,"name":"Literal","src":"8477:1:18"}],"id":1536,"name":"UnaryOperation","src":"8476:2:18"}],"id":1537,"name":"FunctionCall","src":"8468:11:18"}],"id":1538,"name":"VariableDeclarationStatement","src":"8453:26:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"uint256","value":"shortest"},"id":1539,"name":"Identifier","src":"8514:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1540,"name":"Literal","src":"8525:2:18"}],"id":1541,"name":"BinaryOperation","src":"8514:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1533,"type":"uint256","value":"mask"},"id":1542,"name":"Identifier","src":"8551:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1543,"name":"Literal","src":"8560:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":1544,"name":"Literal","src":"8566:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1545,"name":"Literal","src":"8571:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"uint256","value":"shortest"},"id":1546,"name":"Identifier","src":"8576:8:18"}],"id":1547,"name":"BinaryOperation","src":"8571:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1512,"type":"uint256","value":"idx"},"id":1548,"name":"Identifier","src":"8587:3:18"}],"id":1549,"name":"BinaryOperation","src":"8571:19:18"}],"id":1550,"name":"TupleExpression","src":"8570:21:18"}],"id":1551,"name":"BinaryOperation","src":"8566:25:18"}],"id":1552,"name":"TupleExpression","src":"8565:27:18"}],"id":1553,"name":"BinaryOperation","src":"8560:32:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1554,"name":"Literal","src":"8595:1:18"}],"id":1555,"name":"BinaryOperation","src":"8560:36:18"}],"id":1556,"name":"TupleExpression","src":"8559:38:18"}],"id":1557,"name":"UnaryOperation","src":"8558:39:18"}],"id":1558,"name":"Assignment","src":"8551:46:18"}],"id":1559,"name":"ExpressionStatement","src":"8551:46:18"}],"id":1560,"name":"Block","src":"8529:87:18"}],"id":1561,"name":"IfStatement","src":"8510:106:18"},{"attributes":{"assignments":[1563]},"children":[{"attributes":{"constant":false,"name":"diff","scope":1582,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1562,"name":"ElementaryTypeName","src":"8633:7:18"}],"id":1563,"name":"VariableDeclaration","src":"8633:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1523,"type":"uint256","value":"a"},"id":1564,"name":"Identifier","src":"8649:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1533,"type":"uint256","value":"mask"},"id":1565,"name":"Identifier","src":"8653:4:18"}],"id":1566,"name":"BinaryOperation","src":"8649:8:18"}],"id":1567,"name":"TupleExpression","src":"8648:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1526,"type":"uint256","value":"b"},"id":1568,"name":"Identifier","src":"8662:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1533,"type":"uint256","value":"mask"},"id":1569,"name":"Identifier","src":"8666:4:18"}],"id":1570,"name":"BinaryOperation","src":"8662:8:18"}],"id":1571,"name":"TupleExpression","src":"8661:10:18"}],"id":1572,"name":"BinaryOperation","src":"8648:23:18"}],"id":1573,"name":"VariableDeclarationStatement","src":"8633:38:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1563,"type":"uint256","value":"diff"},"id":1574,"name":"Identifier","src":"8693:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1575,"name":"Literal","src":"8701:1:18"}],"id":1576,"name":"BinaryOperation","src":"8693:9:18"},{"attributes":{"functionReturnParameters":1484},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":1577,"name":"ElementaryTypeNameExpression","src":"8731:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1563,"type":"uint256","value":"diff"},"id":1578,"name":"Identifier","src":"8735:4:18"}],"id":1579,"name":"FunctionCall","src":"8731:9:18"}],"id":1580,"name":"Return","src":"8724:16:18"}],"id":1581,"name":"IfStatement","src":"8689:51:18"}],"id":1582,"name":"Block","src":"8374:381:18"}],"id":1583,"name":"IfStatement","src":"8362:393:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1502,"type":"uint256","value":"selfptr"},"id":1584,"name":"Identifier","src":"8768:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1585,"name":"Literal","src":"8779:2:18"}],"id":1586,"name":"Assignment","src":"8768:13:18"}],"id":1587,"name":"ExpressionStatement","src":"8768:13:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1507,"type":"uint256","value":"otherptr"},"id":1588,"name":"Identifier","src":"8795:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1589,"name":"Literal","src":"8807:2:18"}],"id":1590,"name":"Assignment","src":"8795:14:18"}],"id":1591,"name":"ExpressionStatement","src":"8795:14:18"}],"id":1592,"name":"Block","src":"8198:622:18"}],"id":1593,"name":"ForStatement","src":"8152:668:18"},{"attributes":{"functionReturnParameters":1484},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":1594,"name":"ElementaryTypeNameExpression","src":"8836:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1478,"type":"struct strings.slice memory","value":"self"},"id":1595,"name":"Identifier","src":"8840:4:18"}],"id":1596,"name":"MemberAccess","src":"8840:9:18"}],"id":1597,"name":"FunctionCall","src":"8836:14:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":1598,"name":"ElementaryTypeNameExpression","src":"8853:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1480,"type":"struct strings.slice memory","value":"other"},"id":1599,"name":"Identifier","src":"8857:5:18"}],"id":1600,"name":"MemberAccess","src":"8857:10:18"}],"id":1601,"name":"FunctionCall","src":"8853:15:18"}],"id":1602,"name":"BinaryOperation","src":"8836:32:18"}],"id":1603,"name":"Return","src":"8829:39:18"}],"id":1604,"name":"Block","src":"7965:910:18"}],"id":1605,"name":"FunctionDefinition","src":"7881:994:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1622,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1606,"name":"UserDefinedTypeName","src":"9135:5:18"}],"id":1607,"name":"VariableDeclaration","src":"9135:17:18"},{"attributes":{"constant":false,"name":"other","scope":1622,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1608,"name":"UserDefinedTypeName","src":"9154:5:18"}],"id":1609,"name":"VariableDeclaration","src":"9154:18:18"}],"id":1610,"name":"ParameterList","src":"9134:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1622,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1611,"name":"ElementaryTypeName","src":"9197:4:18"}],"id":1612,"name":"VariableDeclaration","src":"9197:4:18"}],"id":1613,"name":"ParameterList","src":"9196:6:18"},{"children":[{"attributes":{"functionReturnParameters":1613},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1605,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":1614,"name":"Identifier","src":"9220:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1607,"type":"struct strings.slice memory","value":"self"},"id":1615,"name":"Identifier","src":"9228:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1609,"type":"struct strings.slice memory","value":"other"},"id":1616,"name":"Identifier","src":"9234:5:18"}],"id":1617,"name":"FunctionCall","src":"9220:20:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1618,"name":"Literal","src":"9244:1:18"}],"id":1619,"name":"BinaryOperation","src":"9220:25:18"}],"id":1620,"name":"Return","src":"9213:32:18"}],"id":1621,"name":"Block","src":"9203:49:18"}],"id":1622,"name":"FunctionDefinition","src":"9119:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1740,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1623,"name":"UserDefinedTypeName","src":"9563:5:18"}],"id":1624,"name":"VariableDeclaration","src":"9563:17:18"},{"attributes":{"constant":false,"name":"rune","scope":1740,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1625,"name":"UserDefinedTypeName","src":"9582:5:18"}],"id":1626,"name":"VariableDeclaration","src":"9582:17:18"}],"id":1627,"name":"ParameterList","src":"9562:38:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1740,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1628,"name":"UserDefinedTypeName","src":"9624:5:18"}],"id":1629,"name":"VariableDeclaration","src":"9624:12:18"}],"id":1630,"name":"ParameterList","src":"9623:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1631,"name":"Identifier","src":"9648:4:18"}],"id":1633,"name":"MemberAccess","src":"9648:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1634,"name":"Identifier","src":"9660:4:18"}],"id":1635,"name":"MemberAccess","src":"9660:9:18"}],"id":1636,"name":"Assignment","src":"9648:21:18"}],"id":1637,"name":"ExpressionStatement","src":"9648:21:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1638,"name":"Identifier","src":"9684:4:18"}],"id":1639,"name":"MemberAccess","src":"9684:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1640,"name":"Literal","src":"9697:1:18"}],"id":1641,"name":"BinaryOperation","src":"9684:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1642,"name":"Identifier","src":"9714:4:18"}],"id":1644,"name":"MemberAccess","src":"9714:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1645,"name":"Literal","src":"9726:1:18"}],"id":1646,"name":"Assignment","src":"9714:13:18"}],"id":1647,"name":"ExpressionStatement","src":"9714:13:18"},{"attributes":{"functionReturnParameters":1630},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1648,"name":"Identifier","src":"9748:4:18"}],"id":1649,"name":"Return","src":"9741:11:18"}],"id":1650,"name":"Block","src":"9700:63:18"}],"id":1651,"name":"IfStatement","src":"9680:83:18"},{"attributes":{"assignments":[1653],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":1739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1652,"name":"ElementaryTypeName","src":"9773:4:18"}],"id":1653,"name":"VariableDeclaration","src":"9773:6:18"}],"id":1654,"name":"VariableDeclarationStatement","src":"9773:6:18"},{"attributes":{"assignments":[1656],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":1739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1655,"name":"ElementaryTypeName","src":"9789:4:18"}],"id":1656,"name":"VariableDeclaration","src":"9789:6:18"}],"id":1657,"name":"VariableDeclarationStatement","src":"9789:6:18"},{"attributes":{"externalReferences":[{"b":{"declaration":1656,"isOffset":false,"isSlot":false,"src":"9878:1:18","valueSize":1}},{"self":{"declaration":1624,"isOffset":false,"isSlot":false,"src":"9907:4:18","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":1658,"name":"InlineAssembly","src":"9867:65:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1656,"type":"uint256","value":"b"},"id":1659,"name":"Identifier","src":"9945:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":1660,"name":"Literal","src":"9949:4:18"}],"id":1661,"name":"BinaryOperation","src":"9945:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1662,"name":"Identifier","src":"9969:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1663,"name":"Literal","src":"9973:1:18"}],"id":1664,"name":"Assignment","src":"9969:5:18"}],"id":1665,"name":"ExpressionStatement","src":"9969:5:18"}],"id":1666,"name":"Block","src":"9955:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1656,"type":"uint256","value":"b"},"id":1667,"name":"Identifier","src":"9995:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":1668,"name":"Literal","src":"9999:4:18"}],"id":1669,"name":"BinaryOperation","src":"9995:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1670,"name":"Identifier","src":"10019:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1671,"name":"Literal","src":"10023:1:18"}],"id":1672,"name":"Assignment","src":"10019:5:18"}],"id":1673,"name":"ExpressionStatement","src":"10019:5:18"}],"id":1674,"name":"Block","src":"10005:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1656,"type":"uint256","value":"b"},"id":1675,"name":"Identifier","src":"10045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":1676,"name":"Literal","src":"10049:4:18"}],"id":1677,"name":"BinaryOperation","src":"10045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1678,"name":"Identifier","src":"10069:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1679,"name":"Literal","src":"10073:1:18"}],"id":1680,"name":"Assignment","src":"10069:5:18"}],"id":1681,"name":"ExpressionStatement","src":"10069:5:18"}],"id":1682,"name":"Block","src":"10055:30:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1683,"name":"Identifier","src":"10105:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1684,"name":"Literal","src":"10109:1:18"}],"id":1685,"name":"Assignment","src":"10105:5:18"}],"id":1686,"name":"ExpressionStatement","src":"10105:5:18"}],"id":1687,"name":"Block","src":"10091:30:18"}],"id":1688,"name":"IfStatement","src":"10041:80:18"}],"id":1689,"name":"IfStatement","src":"9991:130:18"}],"id":1690,"name":"IfStatement","src":"9941:180:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1691,"name":"Identifier","src":"10177:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1692,"name":"Identifier","src":"10181:4:18"}],"id":1693,"name":"MemberAccess","src":"10181:9:18"}],"id":1694,"name":"BinaryOperation","src":"10177:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1695,"name":"Identifier","src":"10206:4:18"}],"id":1697,"name":"MemberAccess","src":"10206:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1698,"name":"Identifier","src":"10218:4:18"}],"id":1699,"name":"MemberAccess","src":"10218:9:18"}],"id":1700,"name":"Assignment","src":"10206:21:18"}],"id":1701,"name":"ExpressionStatement","src":"10206:21:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1702,"name":"Identifier","src":"10241:4:18"}],"id":1704,"name":"MemberAccess","src":"10241:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1705,"name":"Identifier","src":"10254:4:18"}],"id":1706,"name":"MemberAccess","src":"10254:9:18"}],"id":1707,"name":"Assignment","src":"10241:22:18"}],"id":1708,"name":"ExpressionStatement","src":"10241:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1709,"name":"Identifier","src":"10277:4:18"}],"id":1711,"name":"MemberAccess","src":"10277:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1712,"name":"Literal","src":"10289:1:18"}],"id":1713,"name":"Assignment","src":"10277:13:18"}],"id":1714,"name":"ExpressionStatement","src":"10277:13:18"},{"attributes":{"functionReturnParameters":1630},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1715,"name":"Identifier","src":"10311:4:18"}],"id":1716,"name":"Return","src":"10304:11:18"}],"id":1717,"name":"Block","src":"10192:134:18"}],"id":1718,"name":"IfStatement","src":"10173:153:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1719,"name":"Identifier","src":"10336:4:18"}],"id":1721,"name":"MemberAccess","src":"10336:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1722,"name":"Identifier","src":"10349:1:18"}],"id":1723,"name":"Assignment","src":"10336:14:18"}],"id":1724,"name":"ExpressionStatement","src":"10336:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1725,"name":"Identifier","src":"10360:4:18"}],"id":1727,"name":"MemberAccess","src":"10360:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1728,"name":"Identifier","src":"10373:1:18"}],"id":1729,"name":"Assignment","src":"10360:14:18"}],"id":1730,"name":"ExpressionStatement","src":"10360:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1731,"name":"Identifier","src":"10384:4:18"}],"id":1733,"name":"MemberAccess","src":"10384:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1734,"name":"Identifier","src":"10396:1:18"}],"id":1735,"name":"Assignment","src":"10384:13:18"}],"id":1736,"name":"ExpressionStatement","src":"10384:13:18"},{"attributes":{"functionReturnParameters":1630},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1737,"name":"Identifier","src":"10414:4:18"}],"id":1738,"name":"Return","src":"10407:11:18"}],"id":1739,"name":"Block","src":"9638:787:18"}],"id":1740,"name":"FunctionDefinition","src":"9545:880:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1753,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1741,"name":"UserDefinedTypeName","src":"10683:5:18"}],"id":1742,"name":"VariableDeclaration","src":"10683:17:18"}],"id":1743,"name":"ParameterList","src":"10682:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":1753,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1744,"name":"UserDefinedTypeName","src":"10725:5:18"}],"id":1745,"name":"VariableDeclaration","src":"10725:16:18"}],"id":1746,"name":"ParameterList","src":"10724:18:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[1740,1753],"referencedDeclaration":1740,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":1747,"name":"Identifier","src":"10753:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1742,"type":"struct strings.slice memory","value":"self"},"id":1748,"name":"Identifier","src":"10762:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1745,"type":"struct strings.slice memory","value":"ret"},"id":1749,"name":"Identifier","src":"10768:3:18"}],"id":1750,"name":"FunctionCall","src":"10753:19:18"}],"id":1751,"name":"ExpressionStatement","src":"10753:19:18"}],"id":1752,"name":"Block","src":"10743:36:18"}],"id":1753,"name":"FunctionDefinition","src":"10665:114:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1900,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1754,"name":"UserDefinedTypeName","src":"10988:5:18"}],"id":1755,"name":"VariableDeclaration","src":"10988:17:18"}],"id":1756,"name":"ParameterList","src":"10987:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":1900,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1757,"name":"ElementaryTypeName","src":"11030:4:18"}],"id":1758,"name":"VariableDeclaration","src":"11030:8:18"}],"id":1759,"name":"ParameterList","src":"11029:10:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1755,"type":"struct strings.slice memory","value":"self"},"id":1760,"name":"Identifier","src":"11054:4:18"}],"id":1761,"name":"MemberAccess","src":"11054:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1762,"name":"Literal","src":"11067:1:18"}],"id":1763,"name":"BinaryOperation","src":"11054:14:18"},{"children":[{"attributes":{"functionReturnParameters":1759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1764,"name":"Literal","src":"11091:1:18"}],"id":1765,"name":"Return","src":"11084:8:18"}],"id":1766,"name":"Block","src":"11070:33:18"}],"id":1767,"name":"IfStatement","src":"11050:53:18"},{"attributes":{"assignments":[1769],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":1899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1768,"name":"ElementaryTypeName","src":"11113:4:18"}],"id":1769,"name":"VariableDeclaration","src":"11113:9:18"}],"id":1770,"name":"VariableDeclarationStatement","src":"11113:9:18"},{"attributes":{"assignments":[1772],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":1899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1771,"name":"ElementaryTypeName","src":"11132:4:18"}],"id":1772,"name":"VariableDeclaration","src":"11132:11:18"}],"id":1773,"name":"VariableDeclarationStatement","src":"11132:11:18"},{"attributes":{"assignments":[1775]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":1899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1774,"name":"ElementaryTypeName","src":"11153:4:18"}],"id":1775,"name":"VariableDeclaration","src":"11153:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1776,"name":"Literal","src":"11168:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":1777,"name":"Literal","src":"11173:3:18"}],"id":1778,"name":"BinaryOperation","src":"11168:8:18"}],"id":1779,"name":"VariableDeclarationStatement","src":"11153:23:18"},{"attributes":{"externalReferences":[{"word":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"11242:4:18","valueSize":1}},{"self":{"declaration":1755,"isOffset":false,"isSlot":false,"src":"11265:4:18","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":1780,"name":"InlineAssembly","src":"11231:47:18"},{"attributes":{"assignments":[1782]},"children":[{"attributes":{"constant":false,"name":"b","scope":1899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1781,"name":"ElementaryTypeName","src":"11287:4:18"}],"id":1782,"name":"VariableDeclaration","src":"11287:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"word"},"id":1783,"name":"Identifier","src":"11296:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1775,"type":"uint256","value":"divisor"},"id":1784,"name":"Identifier","src":"11303:7:18"}],"id":1785,"name":"BinaryOperation","src":"11296:14:18"}],"id":1786,"name":"VariableDeclarationStatement","src":"11287:23:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1787,"name":"Identifier","src":"11324:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":1788,"name":"Literal","src":"11328:4:18"}],"id":1789,"name":"BinaryOperation","src":"11324:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1790,"name":"Identifier","src":"11348:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1791,"name":"Identifier","src":"11354:1:18"}],"id":1792,"name":"Assignment","src":"11348:7:18"}],"id":1793,"name":"ExpressionStatement","src":"11348:7:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1794,"name":"Identifier","src":"11369:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1795,"name":"Literal","src":"11378:1:18"}],"id":1796,"name":"Assignment","src":"11369:10:18"}],"id":1797,"name":"ExpressionStatement","src":"11369:10:18"}],"id":1798,"name":"Block","src":"11334:56:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1799,"name":"Identifier","src":"11400:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":1800,"name":"Literal","src":"11404:4:18"}],"id":1801,"name":"BinaryOperation","src":"11400:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1802,"name":"Identifier","src":"11424:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1803,"name":"Identifier","src":"11430:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":1804,"name":"Literal","src":"11434:4:18"}],"id":1805,"name":"BinaryOperation","src":"11430:8:18"}],"id":1806,"name":"Assignment","src":"11424:14:18"}],"id":1807,"name":"ExpressionStatement","src":"11424:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1808,"name":"Identifier","src":"11452:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1809,"name":"Literal","src":"11461:1:18"}],"id":1810,"name":"Assignment","src":"11452:10:18"}],"id":1811,"name":"ExpressionStatement","src":"11452:10:18"}],"id":1812,"name":"Block","src":"11410:63:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1813,"name":"Identifier","src":"11483:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":1814,"name":"Literal","src":"11487:4:18"}],"id":1815,"name":"BinaryOperation","src":"11483:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1816,"name":"Identifier","src":"11507:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1817,"name":"Identifier","src":"11513:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":1818,"name":"Literal","src":"11517:4:18"}],"id":1819,"name":"BinaryOperation","src":"11513:8:18"}],"id":1820,"name":"Assignment","src":"11507:14:18"}],"id":1821,"name":"ExpressionStatement","src":"11507:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1822,"name":"Identifier","src":"11535:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1823,"name":"Literal","src":"11544:1:18"}],"id":1824,"name":"Assignment","src":"11535:10:18"}],"id":1825,"name":"ExpressionStatement","src":"11535:10:18"}],"id":1826,"name":"Block","src":"11493:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1827,"name":"Identifier","src":"11576:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1828,"name":"Identifier","src":"11582:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":1829,"name":"Literal","src":"11586:4:18"}],"id":1830,"name":"BinaryOperation","src":"11582:8:18"}],"id":1831,"name":"Assignment","src":"11576:14:18"}],"id":1832,"name":"ExpressionStatement","src":"11576:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1833,"name":"Identifier","src":"11604:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1834,"name":"Literal","src":"11613:1:18"}],"id":1835,"name":"Assignment","src":"11604:10:18"}],"id":1836,"name":"ExpressionStatement","src":"11604:10:18"}],"id":1837,"name":"Block","src":"11562:63:18"}],"id":1838,"name":"IfStatement","src":"11479:146:18"}],"id":1839,"name":"IfStatement","src":"11396:229:18"}],"id":1840,"name":"IfStatement","src":"11320:305:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1841,"name":"Identifier","src":"11681:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1755,"type":"struct strings.slice memory","value":"self"},"id":1842,"name":"Identifier","src":"11690:4:18"}],"id":1843,"name":"MemberAccess","src":"11690:9:18"}],"id":1844,"name":"BinaryOperation","src":"11681:18:18"},{"children":[{"attributes":{"functionReturnParameters":1759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1845,"name":"Literal","src":"11722:1:18"}],"id":1846,"name":"Return","src":"11715:8:18"}],"id":1847,"name":"Block","src":"11701:33:18"}],"id":1848,"name":"IfStatement","src":"11677:57:18"},{"children":[{"attributes":{"assignments":[1850]},"children":[{"attributes":{"constant":false,"name":"i","scope":1896,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1849,"name":"ElementaryTypeName","src":"11749:4:18"}],"id":1850,"name":"VariableDeclaration","src":"11749:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1851,"name":"Literal","src":"11758:1:18"}],"id":1852,"name":"VariableDeclarationStatement","src":"11749:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1850,"type":"uint256","value":"i"},"id":1853,"name":"Identifier","src":"11761:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1854,"name":"Identifier","src":"11765:6:18"}],"id":1855,"name":"BinaryOperation","src":"11761:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1850,"type":"uint256","value":"i"},"id":1856,"name":"Identifier","src":"11773:1:18"}],"id":1857,"name":"UnaryOperation","src":"11773:3:18"}],"id":1858,"name":"ExpressionStatement","src":"11773:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1775,"type":"uint256","value":"divisor"},"id":1859,"name":"Identifier","src":"11792:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1775,"type":"uint256","value":"divisor"},"id":1860,"name":"Identifier","src":"11802:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":1861,"name":"Literal","src":"11812:3:18"}],"id":1862,"name":"BinaryOperation","src":"11802:13:18"}],"id":1863,"name":"Assignment","src":"11792:23:18"}],"id":1864,"name":"ExpressionStatement","src":"11792:23:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1865,"name":"Identifier","src":"11829:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"word"},"id":1866,"name":"Identifier","src":"11834:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1775,"type":"uint256","value":"divisor"},"id":1867,"name":"Identifier","src":"11841:7:18"}],"id":1868,"name":"BinaryOperation","src":"11834:14:18"}],"id":1869,"name":"TupleExpression","src":"11833:16:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":1870,"name":"Literal","src":"11852:4:18"}],"id":1871,"name":"BinaryOperation","src":"11833:23:18"}],"id":1872,"name":"Assignment","src":"11829:27:18"}],"id":1873,"name":"ExpressionStatement","src":"11829:27:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1874,"name":"Identifier","src":"11874:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":1875,"name":"Literal","src":"11878:4:18"}],"id":1876,"name":"BinaryOperation","src":"11874:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":1877,"name":"Literal","src":"11886:4:18"}],"id":1878,"name":"BinaryOperation","src":"11874:16:18"},{"children":[{"attributes":{"functionReturnParameters":1759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1879,"name":"Literal","src":"11959:1:18"}],"id":1880,"name":"Return","src":"11952:8:18"}],"id":1881,"name":"Block","src":"11892:83:18"}],"id":1882,"name":"IfStatement","src":"11870:105:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1883,"name":"Identifier","src":"11988:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1884,"name":"Identifier","src":"11995:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":1885,"name":"Literal","src":"12001:2:18"}],"id":1886,"name":"BinaryOperation","src":"11995:8:18"}],"id":1887,"name":"TupleExpression","src":"11994:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1888,"name":"Identifier","src":"12008:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":1889,"name":"Literal","src":"12012:4:18"}],"id":1890,"name":"BinaryOperation","src":"12008:8:18"}],"id":1891,"name":"TupleExpression","src":"12007:10:18"}],"id":1892,"name":"BinaryOperation","src":"11994:23:18"}],"id":1893,"name":"Assignment","src":"11988:29:18"}],"id":1894,"name":"ExpressionStatement","src":"11988:29:18"}],"id":1895,"name":"Block","src":"11778:250:18"}],"id":1896,"name":"ForStatement","src":"11744:284:18"},{"attributes":{"functionReturnParameters":1759},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1897,"name":"Identifier","src":"12045:3:18"}],"id":1898,"name":"Return","src":"12038:10:18"}],"id":1899,"name":"Block","src":"11040:1015:18"}],"id":1900,"name":"FunctionDefinition","src":"10975:1080:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1909,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1901,"name":"UserDefinedTypeName","src":"12222:5:18"}],"id":1902,"name":"VariableDeclaration","src":"12222:17:18"}],"id":1903,"name":"ParameterList","src":"12221:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":1909,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1904,"name":"ElementaryTypeName","src":"12264:7:18"}],"id":1905,"name":"VariableDeclaration","src":"12264:11:18"}],"id":1906,"name":"ParameterList","src":"12263:13:18"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":1905,"isOffset":false,"isSlot":false,"src":"12310:3:18","valueSize":1}},{"self":{"declaration":1902,"isOffset":false,"isSlot":false,"src":"12337:4:18","valueSize":1}},{"self":{"declaration":1902,"isOffset":false,"isSlot":false,"src":"12355:4:18","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":1907,"name":"InlineAssembly","src":"12287:84:18"}],"id":1908,"name":"Block","src":"12277:100:18"}],"id":1909,"name":"FunctionDefinition","src":"12206:171:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1943,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1910,"name":"UserDefinedTypeName","src":"12646:5:18"}],"id":1911,"name":"VariableDeclaration","src":"12646:17:18"},{"attributes":{"constant":false,"name":"needle","scope":1943,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1912,"name":"UserDefinedTypeName","src":"12665:5:18"}],"id":1913,"name":"VariableDeclaration","src":"12665:19:18"}],"id":1914,"name":"ParameterList","src":"12645:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1943,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1915,"name":"ElementaryTypeName","src":"12709:4:18"}],"id":1916,"name":"VariableDeclaration","src":"12709:4:18"}],"id":1917,"name":"ParameterList","src":"12708:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1911,"type":"struct strings.slice memory","value":"self"},"id":1918,"name":"Identifier","src":"12729:4:18"}],"id":1919,"name":"MemberAccess","src":"12729:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1913,"type":"struct strings.slice memory","value":"needle"},"id":1920,"name":"Identifier","src":"12741:6:18"}],"id":1921,"name":"MemberAccess","src":"12741:11:18"}],"id":1922,"name":"BinaryOperation","src":"12729:23:18"},{"children":[{"attributes":{"functionReturnParameters":1917},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1923,"name":"Literal","src":"12775:5:18"}],"id":1924,"name":"Return","src":"12768:12:18"}],"id":1925,"name":"Block","src":"12754:37:18"}],"id":1926,"name":"IfStatement","src":"12725:66:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1911,"type":"struct strings.slice memory","value":"self"},"id":1927,"name":"Identifier","src":"12805:4:18"}],"id":1928,"name":"MemberAccess","src":"12805:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1913,"type":"struct strings.slice memory","value":"needle"},"id":1929,"name":"Identifier","src":"12818:6:18"}],"id":1930,"name":"MemberAccess","src":"12818:11:18"}],"id":1931,"name":"BinaryOperation","src":"12805:24:18"},{"children":[{"attributes":{"functionReturnParameters":1917},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1932,"name":"Literal","src":"12852:4:18"}],"id":1933,"name":"Return","src":"12845:11:18"}],"id":1934,"name":"Block","src":"12831:36:18"}],"id":1935,"name":"IfStatement","src":"12801:66:18"},{"attributes":{"assignments":[1937],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":1942,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1936,"name":"ElementaryTypeName","src":"12877:4:18"}],"id":1937,"name":"VariableDeclaration","src":"12877:10:18"}],"id":1938,"name":"VariableDeclarationStatement","src":"12877:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":1913,"isOffset":false,"isSlot":false,"src":"12940:6:18","valueSize":1}},{"self":{"declaration":1911,"isOffset":false,"isSlot":false,"src":"12985:4:18","valueSize":1}},{"needle":{"declaration":1913,"isOffset":false,"isSlot":false,"src":"13037:6:18","valueSize":1}},{"equal":{"declaration":1937,"isOffset":false,"isSlot":false,"src":"13064:5:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":1939,"name":"InlineAssembly","src":"12897:246:18"},{"attributes":{"functionReturnParameters":1917},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bool","value":"equal"},"id":1940,"name":"Identifier","src":"13159:5:18"}],"id":1941,"name":"Return","src":"13152:12:18"}],"id":1942,"name":"Block","src":"12715:456:18"}],"id":1943,"name":"FunctionDefinition","src":"12626:545:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1993,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1944,"name":"UserDefinedTypeName","src":"13459:5:18"}],"id":1945,"name":"VariableDeclaration","src":"13459:17:18"},{"attributes":{"constant":false,"name":"needle","scope":1993,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1946,"name":"UserDefinedTypeName","src":"13478:5:18"}],"id":1947,"name":"VariableDeclaration","src":"13478:19:18"}],"id":1948,"name":"ParameterList","src":"13458:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1993,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1949,"name":"UserDefinedTypeName","src":"13522:5:18"}],"id":1950,"name":"VariableDeclaration","src":"13522:12:18"}],"id":1951,"name":"ParameterList","src":"13521:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1952,"name":"Identifier","src":"13550:4:18"}],"id":1953,"name":"MemberAccess","src":"13550:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"struct strings.slice memory","value":"needle"},"id":1954,"name":"Identifier","src":"13562:6:18"}],"id":1955,"name":"MemberAccess","src":"13562:11:18"}],"id":1956,"name":"BinaryOperation","src":"13550:23:18"},{"children":[{"attributes":{"functionReturnParameters":1951},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1957,"name":"Identifier","src":"13596:4:18"}],"id":1958,"name":"Return","src":"13589:11:18"}],"id":1959,"name":"Block","src":"13575:36:18"}],"id":1960,"name":"IfStatement","src":"13546:65:18"},{"attributes":{"assignments":[1962]},"children":[{"attributes":{"constant":false,"name":"equal","scope":1992,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1961,"name":"ElementaryTypeName","src":"13621:4:18"}],"id":1962,"name":"VariableDeclaration","src":"13621:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1963,"name":"Literal","src":"13634:4:18"}],"id":1964,"name":"VariableDeclarationStatement","src":"13621:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1965,"name":"Identifier","src":"13652:4:18"}],"id":1966,"name":"MemberAccess","src":"13652:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"struct strings.slice memory","value":"needle"},"id":1967,"name":"Identifier","src":"13665:6:18"}],"id":1968,"name":"MemberAccess","src":"13665:11:18"}],"id":1969,"name":"BinaryOperation","src":"13652:24:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":1947,"isOffset":false,"isSlot":false,"src":"13739:6:18","valueSize":1}},{"self":{"declaration":1945,"isOffset":false,"isSlot":false,"src":"13788:4:18","valueSize":1}},{"equal":{"declaration":1962,"isOffset":false,"isSlot":false,"src":"13875:5:18","valueSize":1}},{"needle":{"declaration":1947,"isOffset":false,"isSlot":false,"src":"13844:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":1970,"name":"InlineAssembly","src":"13692:266:18"}],"id":1971,"name":"Block","src":"13678:290:18"}],"id":1972,"name":"IfStatement","src":"13648:320:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1962,"type":"bool","value":"equal"},"id":1973,"name":"Identifier","src":"13982:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1974,"name":"Identifier","src":"14003:4:18"}],"id":1976,"name":"MemberAccess","src":"14003:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"struct strings.slice memory","value":"needle"},"id":1977,"name":"Identifier","src":"14016:6:18"}],"id":1978,"name":"MemberAccess","src":"14016:11:18"}],"id":1979,"name":"Assignment","src":"14003:24:18"}],"id":1980,"name":"ExpressionStatement","src":"14003:24:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1981,"name":"Identifier","src":"14041:4:18"}],"id":1983,"name":"MemberAccess","src":"14041:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"struct strings.slice memory","value":"needle"},"id":1984,"name":"Identifier","src":"14054:6:18"}],"id":1985,"name":"MemberAccess","src":"14054:11:18"}],"id":1986,"name":"Assignment","src":"14041:24:18"}],"id":1987,"name":"ExpressionStatement","src":"14041:24:18"}],"id":1988,"name":"Block","src":"13989:87:18"}],"id":1989,"name":"IfStatement","src":"13978:98:18"},{"attributes":{"functionReturnParameters":1951},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1990,"name":"Identifier","src":"14093:4:18"}],"id":1991,"name":"Return","src":"14086:11:18"}],"id":1992,"name":"Block","src":"13536:568:18"}],"id":1993,"name":"FunctionDefinition","src":"13443:661:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2037,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1994,"name":"UserDefinedTypeName","src":"14372:5:18"}],"id":1995,"name":"VariableDeclaration","src":"14372:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2037,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1996,"name":"UserDefinedTypeName","src":"14391:5:18"}],"id":1997,"name":"VariableDeclaration","src":"14391:19:18"}],"id":1998,"name":"ParameterList","src":"14371:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2037,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1999,"name":"ElementaryTypeName","src":"14435:4:18"}],"id":2000,"name":"VariableDeclaration","src":"14435:4:18"}],"id":2001,"name":"ParameterList","src":"14434:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"struct strings.slice memory","value":"self"},"id":2002,"name":"Identifier","src":"14455:4:18"}],"id":2003,"name":"MemberAccess","src":"14455:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"struct strings.slice memory","value":"needle"},"id":2004,"name":"Identifier","src":"14467:6:18"}],"id":2005,"name":"MemberAccess","src":"14467:11:18"}],"id":2006,"name":"BinaryOperation","src":"14455:23:18"},{"children":[{"attributes":{"functionReturnParameters":2001},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2007,"name":"Literal","src":"14501:5:18"}],"id":2008,"name":"Return","src":"14494:12:18"}],"id":2009,"name":"Block","src":"14480:37:18"}],"id":2010,"name":"IfStatement","src":"14451:66:18"},{"attributes":{"assignments":[2012]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":2036,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2011,"name":"ElementaryTypeName","src":"14527:4:18"}],"id":2012,"name":"VariableDeclaration","src":"14527:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"struct strings.slice memory","value":"self"},"id":2013,"name":"Identifier","src":"14542:4:18"}],"id":2014,"name":"MemberAccess","src":"14542:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"struct strings.slice memory","value":"self"},"id":2015,"name":"Identifier","src":"14554:4:18"}],"id":2016,"name":"MemberAccess","src":"14554:9:18"}],"id":2017,"name":"BinaryOperation","src":"14542:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"struct strings.slice memory","value":"needle"},"id":2018,"name":"Identifier","src":"14566:6:18"}],"id":2019,"name":"MemberAccess","src":"14566:11:18"}],"id":2020,"name":"BinaryOperation","src":"14542:35:18"}],"id":2021,"name":"VariableDeclarationStatement","src":"14527:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"uint256","value":"selfptr"},"id":2022,"name":"Identifier","src":"14592:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"struct strings.slice memory","value":"needle"},"id":2023,"name":"Identifier","src":"14603:6:18"}],"id":2024,"name":"MemberAccess","src":"14603:11:18"}],"id":2025,"name":"BinaryOperation","src":"14592:22:18"},{"children":[{"attributes":{"functionReturnParameters":2001},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2026,"name":"Literal","src":"14637:4:18"}],"id":2027,"name":"Return","src":"14630:11:18"}],"id":2028,"name":"Block","src":"14616:36:18"}],"id":2029,"name":"IfStatement","src":"14588:64:18"},{"attributes":{"assignments":[2031],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":2036,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2030,"name":"ElementaryTypeName","src":"14662:4:18"}],"id":2031,"name":"VariableDeclaration","src":"14662:10:18"}],"id":2032,"name":"VariableDeclarationStatement","src":"14662:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":1997,"isOffset":false,"isSlot":false,"src":"14725:6:18","valueSize":1}},{"equal":{"declaration":2031,"isOffset":false,"isSlot":false,"src":"14799:5:18","valueSize":1}},{"needle":{"declaration":1997,"isOffset":false,"isSlot":false,"src":"14772:6:18","valueSize":1}},{"selfptr":{"declaration":2012,"isOffset":false,"isSlot":false,"src":"14821:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":2033,"name":"InlineAssembly","src":"14682:196:18"},{"attributes":{"functionReturnParameters":2001},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2031,"type":"bool","value":"equal"},"id":2034,"name":"Identifier","src":"14895:5:18"}],"id":2035,"name":"Return","src":"14888:12:18"}],"id":2036,"name":"Block","src":"14441:466:18"}],"id":2037,"name":"FunctionDefinition","src":"14354:553:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2038,"name":"UserDefinedTypeName","src":"15186:5:18"}],"id":2039,"name":"VariableDeclaration","src":"15186:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2040,"name":"UserDefinedTypeName","src":"15205:5:18"}],"id":2041,"name":"VariableDeclaration","src":"15205:19:18"}],"id":2042,"name":"ParameterList","src":"15185:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2043,"name":"UserDefinedTypeName","src":"15249:5:18"}],"id":2044,"name":"VariableDeclaration","src":"15249:12:18"}],"id":2045,"name":"ParameterList","src":"15248:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2046,"name":"Identifier","src":"15277:4:18"}],"id":2047,"name":"MemberAccess","src":"15277:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"struct strings.slice memory","value":"needle"},"id":2048,"name":"Identifier","src":"15289:6:18"}],"id":2049,"name":"MemberAccess","src":"15289:11:18"}],"id":2050,"name":"BinaryOperation","src":"15277:23:18"},{"children":[{"attributes":{"functionReturnParameters":2045},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2051,"name":"Identifier","src":"15323:4:18"}],"id":2052,"name":"Return","src":"15316:11:18"}],"id":2053,"name":"Block","src":"15302:36:18"}],"id":2054,"name":"IfStatement","src":"15273:65:18"},{"attributes":{"assignments":[2056]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":2089,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2055,"name":"ElementaryTypeName","src":"15348:4:18"}],"id":2056,"name":"VariableDeclaration","src":"15348:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2057,"name":"Identifier","src":"15363:4:18"}],"id":2058,"name":"MemberAccess","src":"15363:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2059,"name":"Identifier","src":"15375:4:18"}],"id":2060,"name":"MemberAccess","src":"15375:9:18"}],"id":2061,"name":"BinaryOperation","src":"15363:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"struct strings.slice memory","value":"needle"},"id":2062,"name":"Identifier","src":"15387:6:18"}],"id":2063,"name":"MemberAccess","src":"15387:11:18"}],"id":2064,"name":"BinaryOperation","src":"15363:35:18"}],"id":2065,"name":"VariableDeclarationStatement","src":"15348:50:18"},{"attributes":{"assignments":[2067]},"children":[{"attributes":{"constant":false,"name":"equal","scope":2089,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2066,"name":"ElementaryTypeName","src":"15408:4:18"}],"id":2067,"name":"VariableDeclaration","src":"15408:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2068,"name":"Literal","src":"15421:4:18"}],"id":2069,"name":"VariableDeclarationStatement","src":"15408:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2056,"type":"uint256","value":"selfptr"},"id":2070,"name":"Identifier","src":"15439:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"struct strings.slice memory","value":"needle"},"id":2071,"name":"Identifier","src":"15450:6:18"}],"id":2072,"name":"MemberAccess","src":"15450:11:18"}],"id":2073,"name":"BinaryOperation","src":"15439:22:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":2041,"isOffset":false,"isSlot":false,"src":"15524:6:18","valueSize":1}},{"equal":{"declaration":2067,"isOffset":false,"isSlot":false,"src":"15606:5:18","valueSize":1}},{"needle":{"declaration":2041,"isOffset":false,"isSlot":false,"src":"15575:6:18","valueSize":1}},{"selfptr":{"declaration":2056,"isOffset":false,"isSlot":false,"src":"15628:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":2074,"name":"InlineAssembly","src":"15477:212:18"}],"id":2075,"name":"Block","src":"15463:236:18"}],"id":2076,"name":"IfStatement","src":"15435:264:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2067,"type":"bool","value":"equal"},"id":2077,"name":"Identifier","src":"15713:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2078,"name":"Identifier","src":"15734:4:18"}],"id":2080,"name":"MemberAccess","src":"15734:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"struct strings.slice memory","value":"needle"},"id":2081,"name":"Identifier","src":"15747:6:18"}],"id":2082,"name":"MemberAccess","src":"15747:11:18"}],"id":2083,"name":"Assignment","src":"15734:24:18"}],"id":2084,"name":"ExpressionStatement","src":"15734:24:18"}],"id":2085,"name":"Block","src":"15720:49:18"}],"id":2086,"name":"IfStatement","src":"15709:60:18"},{"attributes":{"functionReturnParameters":2045},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2087,"name":"Identifier","src":"15786:4:18"}],"id":2088,"name":"Return","src":"15779:11:18"}],"id":2089,"name":"Block","src":"15263:534:18"}],"id":2090,"name":"FunctionDefinition","src":"15171:626:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2091,"name":"ElementaryTypeName","src":"15971:4:18"}],"id":2092,"name":"VariableDeclaration","src":"15971:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2093,"name":"ElementaryTypeName","src":"15985:4:18"}],"id":2094,"name":"VariableDeclaration","src":"15985:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2095,"name":"ElementaryTypeName","src":"15999:4:18"}],"id":2096,"name":"VariableDeclaration","src":"15999:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2097,"name":"ElementaryTypeName","src":"16015:4:18"}],"id":2098,"name":"VariableDeclaration","src":"16015:14:18"}],"id":2099,"name":"ParameterList","src":"15970:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2100,"name":"ElementaryTypeName","src":"16053:4:18"}],"id":2101,"name":"VariableDeclaration","src":"16053:4:18"}],"id":2102,"name":"ParameterList","src":"16052:6:18"},{"children":[{"attributes":{"assignments":[2104]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2103,"name":"ElementaryTypeName","src":"16069:4:18"}],"id":2104,"name":"VariableDeclaration","src":"16069:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"selfptr"},"id":2105,"name":"Identifier","src":"16080:7:18"}],"id":2106,"name":"VariableDeclarationStatement","src":"16069:18:18"},{"attributes":{"assignments":[2108],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":2210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2107,"name":"ElementaryTypeName","src":"16097:4:18"}],"id":2108,"name":"VariableDeclaration","src":"16097:8:18"}],"id":2109,"name":"VariableDeclarationStatement","src":"16097:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2110,"name":"Identifier","src":"16120:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2111,"name":"Identifier","src":"16133:7:18"}],"id":2112,"name":"BinaryOperation","src":"16120:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2113,"name":"Identifier","src":"16160:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2114,"name":"Literal","src":"16173:2:18"}],"id":2115,"name":"BinaryOperation","src":"16160:15:18"},{"children":[{"attributes":{"assignments":[2117]},"children":[{"attributes":{"constant":false,"name":"mask","scope":2169,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2116,"name":"ElementaryTypeName","src":"16195:7:18"}],"id":2117,"name":"VariableDeclaration","src":"16195:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2118,"name":"ElementaryTypeNameExpression","src":"16210:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2119,"name":"Literal","src":"16220:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":2120,"name":"Literal","src":"16226:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2121,"name":"Literal","src":"16231:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2122,"name":"Identifier","src":"16236:9:18"}],"id":2123,"name":"BinaryOperation","src":"16231:14:18"}],"id":2124,"name":"TupleExpression","src":"16230:16:18"}],"id":2125,"name":"BinaryOperation","src":"16226:20:18"}],"id":2126,"name":"TupleExpression","src":"16225:22:18"}],"id":2127,"name":"BinaryOperation","src":"16220:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2128,"name":"Literal","src":"16250:1:18"}],"id":2129,"name":"BinaryOperation","src":"16220:31:18"}],"id":2130,"name":"TupleExpression","src":"16219:33:18"}],"id":2131,"name":"UnaryOperation","src":"16218:34:18"}],"id":2132,"name":"FunctionCall","src":"16210:43:18"}],"id":2133,"name":"VariableDeclarationStatement","src":"16195:58:18"},{"attributes":{"assignments":[2135],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":2169,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2134,"name":"ElementaryTypeName","src":"16272:7:18"}],"id":2135,"name":"VariableDeclaration","src":"16272:18:18"}],"id":2136,"name":"VariableDeclarationStatement","src":"16272:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":2135,"isOffset":false,"isSlot":false,"src":"16319:10:18","valueSize":1}},{"needleptr":{"declaration":2098,"isOffset":false,"isSlot":false,"src":"16343:9:18","valueSize":1}},{"mask":{"declaration":2117,"isOffset":false,"isSlot":false,"src":"16355:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":2137,"name":"InlineAssembly","src":"16308:54:18"},{"attributes":{"assignments":[2139]},"children":[{"attributes":{"constant":false,"name":"end","scope":2169,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2138,"name":"ElementaryTypeName","src":"16380:4:18"}],"id":2139,"name":"VariableDeclaration","src":"16380:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"selfptr"},"id":2140,"name":"Identifier","src":"16391:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2141,"name":"Identifier","src":"16401:7:18"}],"id":2142,"name":"BinaryOperation","src":"16391:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2143,"name":"Identifier","src":"16411:9:18"}],"id":2144,"name":"BinaryOperation","src":"16391:29:18"}],"id":2145,"name":"VariableDeclarationStatement","src":"16380:40:18"},{"attributes":{"assignments":[2147],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":2169,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2146,"name":"ElementaryTypeName","src":"16438:7:18"}],"id":2147,"name":"VariableDeclaration","src":"16438:15:18"}],"id":2148,"name":"VariableDeclarationStatement","src":"16438:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":2147,"isOffset":false,"isSlot":false,"src":"16482:7:18","valueSize":1}},{"ptr":{"declaration":2104,"isOffset":false,"isSlot":false,"src":"16503:3:18","valueSize":1}},{"mask":{"declaration":2117,"isOffset":false,"isSlot":false,"src":"16509:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":2149,"name":"InlineAssembly","src":"16471:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"bytes32","value":"ptrdata"},"id":2150,"name":"Identifier","src":"16541:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2135,"type":"bytes32","value":"needledata"},"id":2151,"name":"Identifier","src":"16552:10:18"}],"id":2152,"name":"BinaryOperation","src":"16541:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2153,"name":"Identifier","src":"16590:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2139,"type":"uint256","value":"end"},"id":2154,"name":"Identifier","src":"16597:3:18"}],"id":2155,"name":"BinaryOperation","src":"16590:10:18"},{"attributes":{"functionReturnParameters":2102},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"selfptr"},"id":2156,"name":"Identifier","src":"16633:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2157,"name":"Identifier","src":"16643:7:18"}],"id":2158,"name":"BinaryOperation","src":"16633:17:18"}],"id":2159,"name":"Return","src":"16626:24:18"}],"id":2160,"name":"IfStatement","src":"16586:64:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2161,"name":"Identifier","src":"16672:3:18"}],"id":2162,"name":"UnaryOperation","src":"16672:5:18"}],"id":2163,"name":"ExpressionStatement","src":"16672:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":2147,"isOffset":false,"isSlot":false,"src":"16710:7:18","valueSize":1}},{"ptr":{"declaration":2104,"isOffset":false,"isSlot":false,"src":"16731:3:18","valueSize":1}},{"mask":{"declaration":2117,"isOffset":false,"isSlot":false,"src":"16737:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":2164,"name":"InlineAssembly","src":"16699:45:18"}],"id":2165,"name":"Block","src":"16564:198:18"}],"id":2166,"name":"WhileStatement","src":"16534:228:18"},{"attributes":{"functionReturnParameters":2102},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2167,"name":"Identifier","src":"16786:3:18"}],"id":2168,"name":"Return","src":"16779:10:18"}],"id":2169,"name":"Block","src":"16177:627:18"},{"children":[{"attributes":{"assignments":[2171],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":2202,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2170,"name":"ElementaryTypeName","src":"16877:7:18"}],"id":2171,"name":"VariableDeclaration","src":"16877:12:18"}],"id":2172,"name":"VariableDeclarationStatement","src":"16877:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":2171,"isOffset":false,"isSlot":false,"src":"16918:4:18","valueSize":1}},{"needleptr":{"declaration":2098,"isOffset":false,"isSlot":false,"src":"16936:9:18","valueSize":1}},{"needlelen":{"declaration":2096,"isOffset":false,"isSlot":false,"src":"16947:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":2173,"name":"InlineAssembly","src":"16907:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"idx"},"id":2174,"name":"Identifier","src":"16982:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2175,"name":"Literal","src":"16988:1:18"}],"id":2176,"name":"Assignment","src":"16982:7:18"}],"id":2177,"name":"ExpressionStatement","src":"16982:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"idx"},"id":2178,"name":"Identifier","src":"16991:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2179,"name":"Identifier","src":"16998:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2180,"name":"Identifier","src":"17008:9:18"}],"id":2181,"name":"BinaryOperation","src":"16998:19:18"}],"id":2182,"name":"BinaryOperation","src":"16991:26:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"idx"},"id":2183,"name":"Identifier","src":"17019:3:18"}],"id":2184,"name":"UnaryOperation","src":"17019:5:18"}],"id":2185,"name":"ExpressionStatement","src":"17019:5:18"},{"children":[{"attributes":{"assignments":[2187],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":2200,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2186,"name":"ElementaryTypeName","src":"17048:7:18"}],"id":2187,"name":"VariableDeclaration","src":"17048:16:18"}],"id":2188,"name":"VariableDeclarationStatement","src":"17048:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":2187,"isOffset":false,"isSlot":false,"src":"17097:8:18","valueSize":1}},{"ptr":{"declaration":2104,"isOffset":false,"isSlot":false,"src":"17119:3:18","valueSize":1}},{"needlelen":{"declaration":2096,"isOffset":false,"isSlot":false,"src":"17124:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":2189,"name":"InlineAssembly","src":"17086:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2171,"type":"bytes32","value":"hash"},"id":2190,"name":"Identifier","src":"17161:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2187,"type":"bytes32","value":"testHash"},"id":2191,"name":"Identifier","src":"17169:8:18"}],"id":2192,"name":"BinaryOperation","src":"17161:16:18"},{"attributes":{"functionReturnParameters":2102},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2193,"name":"Identifier","src":"17210:3:18"}],"id":2194,"name":"Return","src":"17203:10:18"}],"id":2195,"name":"IfStatement","src":"17157:56:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2196,"name":"Identifier","src":"17235:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2197,"name":"Literal","src":"17242:1:18"}],"id":2198,"name":"Assignment","src":"17235:8:18"}],"id":2199,"name":"ExpressionStatement","src":"17235:8:18"}],"id":2200,"name":"Block","src":"17026:236:18"}],"id":2201,"name":"ForStatement","src":"16977:285:18"}],"id":2202,"name":"Block","src":"16810:466:18"}],"id":2203,"name":"IfStatement","src":"16156:1120:18"}],"id":2204,"name":"Block","src":"16142:1144:18"}],"id":2205,"name":"IfStatement","src":"16116:1170:18"},{"attributes":{"functionReturnParameters":2102},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"selfptr"},"id":2206,"name":"Identifier","src":"17302:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2207,"name":"Identifier","src":"17312:7:18"}],"id":2208,"name":"BinaryOperation","src":"17302:17:18"}],"id":2209,"name":"Return","src":"17295:24:18"}],"id":2210,"name":"Block","src":"16059:1267:18"}],"id":2211,"name":"FunctionDefinition","src":"15954:1372:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2212,"name":"ElementaryTypeName","src":"17497:4:18"}],"id":2213,"name":"VariableDeclaration","src":"17497:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2214,"name":"ElementaryTypeName","src":"17511:4:18"}],"id":2215,"name":"VariableDeclaration","src":"17511:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2216,"name":"ElementaryTypeName","src":"17525:4:18"}],"id":2217,"name":"VariableDeclaration","src":"17525:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2218,"name":"ElementaryTypeName","src":"17541:4:18"}],"id":2219,"name":"VariableDeclaration","src":"17541:14:18"}],"id":2220,"name":"ParameterList","src":"17496:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2221,"name":"ElementaryTypeName","src":"17579:4:18"}],"id":2222,"name":"VariableDeclaration","src":"17579:4:18"}],"id":2223,"name":"ParameterList","src":"17578:6:18"},{"children":[{"attributes":{"assignments":[2225],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2224,"name":"ElementaryTypeName","src":"17595:4:18"}],"id":2225,"name":"VariableDeclaration","src":"17595:8:18"}],"id":2226,"name":"VariableDeclarationStatement","src":"17595:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2227,"name":"Identifier","src":"17618:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"uint256","value":"selflen"},"id":2228,"name":"Identifier","src":"17631:7:18"}],"id":2229,"name":"BinaryOperation","src":"17618:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2230,"name":"Identifier","src":"17658:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2231,"name":"Literal","src":"17671:2:18"}],"id":2232,"name":"BinaryOperation","src":"17658:15:18"},{"children":[{"attributes":{"assignments":[2234]},"children":[{"attributes":{"constant":false,"name":"mask","scope":2286,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2233,"name":"ElementaryTypeName","src":"17693:7:18"}],"id":2234,"name":"VariableDeclaration","src":"17693:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2235,"name":"ElementaryTypeNameExpression","src":"17708:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2236,"name":"Literal","src":"17718:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":2237,"name":"Literal","src":"17724:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2238,"name":"Literal","src":"17729:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2239,"name":"Identifier","src":"17734:9:18"}],"id":2240,"name":"BinaryOperation","src":"17729:14:18"}],"id":2241,"name":"TupleExpression","src":"17728:16:18"}],"id":2242,"name":"BinaryOperation","src":"17724:20:18"}],"id":2243,"name":"TupleExpression","src":"17723:22:18"}],"id":2244,"name":"BinaryOperation","src":"17718:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2245,"name":"Literal","src":"17748:1:18"}],"id":2246,"name":"BinaryOperation","src":"17718:31:18"}],"id":2247,"name":"TupleExpression","src":"17717:33:18"}],"id":2248,"name":"UnaryOperation","src":"17716:34:18"}],"id":2249,"name":"FunctionCall","src":"17708:43:18"}],"id":2250,"name":"VariableDeclarationStatement","src":"17693:58:18"},{"attributes":{"assignments":[2252],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":2286,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2251,"name":"ElementaryTypeName","src":"17770:7:18"}],"id":2252,"name":"VariableDeclaration","src":"17770:18:18"}],"id":2253,"name":"VariableDeclarationStatement","src":"17770:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":2252,"isOffset":false,"isSlot":false,"src":"17817:10:18","valueSize":1}},{"needleptr":{"declaration":2219,"isOffset":false,"isSlot":false,"src":"17841:9:18","valueSize":1}},{"mask":{"declaration":2234,"isOffset":false,"isSlot":false,"src":"17853:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":2254,"name":"InlineAssembly","src":"17806:54:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2255,"name":"Identifier","src":"17878:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2256,"name":"Identifier","src":"17884:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"uint256","value":"selflen"},"id":2257,"name":"Identifier","src":"17894:7:18"}],"id":2258,"name":"BinaryOperation","src":"17884:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2259,"name":"Identifier","src":"17904:9:18"}],"id":2260,"name":"BinaryOperation","src":"17884:29:18"}],"id":2261,"name":"Assignment","src":"17878:35:18"}],"id":2262,"name":"ExpressionStatement","src":"17878:35:18"},{"attributes":{"assignments":[2264],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":2286,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2263,"name":"ElementaryTypeName","src":"17931:7:18"}],"id":2264,"name":"VariableDeclaration","src":"17931:15:18"}],"id":2265,"name":"VariableDeclarationStatement","src":"17931:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":2264,"isOffset":false,"isSlot":false,"src":"17975:7:18","valueSize":1}},{"ptr":{"declaration":2225,"isOffset":false,"isSlot":false,"src":"17996:3:18","valueSize":1}},{"mask":{"declaration":2234,"isOffset":false,"isSlot":false,"src":"18002:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":2266,"name":"InlineAssembly","src":"17964:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2264,"type":"bytes32","value":"ptrdata"},"id":2267,"name":"Identifier","src":"18034:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2252,"type":"bytes32","value":"needledata"},"id":2268,"name":"Identifier","src":"18045:10:18"}],"id":2269,"name":"BinaryOperation","src":"18034:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2270,"name":"Identifier","src":"18083:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2271,"name":"Identifier","src":"18090:7:18"}],"id":2272,"name":"BinaryOperation","src":"18083:14:18"},{"attributes":{"functionReturnParameters":2223},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2273,"name":"Identifier","src":"18130:7:18"}],"id":2274,"name":"Return","src":"18123:14:18"}],"id":2275,"name":"IfStatement","src":"18079:58:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2276,"name":"Identifier","src":"18159:3:18"}],"id":2277,"name":"UnaryOperation","src":"18159:5:18"}],"id":2278,"name":"ExpressionStatement","src":"18159:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":2264,"isOffset":false,"isSlot":false,"src":"18197:7:18","valueSize":1}},{"ptr":{"declaration":2225,"isOffset":false,"isSlot":false,"src":"18218:3:18","valueSize":1}},{"mask":{"declaration":2234,"isOffset":false,"isSlot":false,"src":"18224:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":2279,"name":"InlineAssembly","src":"18186:45:18"}],"id":2280,"name":"Block","src":"18057:192:18"}],"id":2281,"name":"WhileStatement","src":"18027:222:18"},{"attributes":{"functionReturnParameters":2223},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2282,"name":"Identifier","src":"18273:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2283,"name":"Identifier","src":"18279:9:18"}],"id":2284,"name":"BinaryOperation","src":"18273:15:18"}],"id":2285,"name":"Return","src":"18266:22:18"}],"id":2286,"name":"Block","src":"17675:628:18"},{"children":[{"attributes":{"assignments":[2288],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":2321,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2287,"name":"ElementaryTypeName","src":"18376:7:18"}],"id":2288,"name":"VariableDeclaration","src":"18376:12:18"}],"id":2289,"name":"VariableDeclarationStatement","src":"18376:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":2288,"isOffset":false,"isSlot":false,"src":"18417:4:18","valueSize":1}},{"needleptr":{"declaration":2219,"isOffset":false,"isSlot":false,"src":"18435:9:18","valueSize":1}},{"needlelen":{"declaration":2217,"isOffset":false,"isSlot":false,"src":"18446:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":2290,"name":"InlineAssembly","src":"18406:52:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2291,"name":"Identifier","src":"18475:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2292,"name":"Identifier","src":"18481:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"uint256","value":"selflen"},"id":2293,"name":"Identifier","src":"18492:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2294,"name":"Identifier","src":"18502:9:18"}],"id":2295,"name":"BinaryOperation","src":"18492:19:18"}],"id":2296,"name":"TupleExpression","src":"18491:21:18"}],"id":2297,"name":"BinaryOperation","src":"18481:31:18"}],"id":2298,"name":"Assignment","src":"18475:37:18"}],"id":2299,"name":"ExpressionStatement","src":"18475:37:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2300,"name":"Identifier","src":"18537:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2301,"name":"Identifier","src":"18544:7:18"}],"id":2302,"name":"BinaryOperation","src":"18537:14:18"},{"children":[{"attributes":{"assignments":[2304],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":2319,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2303,"name":"ElementaryTypeName","src":"18575:7:18"}],"id":2304,"name":"VariableDeclaration","src":"18575:16:18"}],"id":2305,"name":"VariableDeclarationStatement","src":"18575:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":2304,"isOffset":false,"isSlot":false,"src":"18624:8:18","valueSize":1}},{"ptr":{"declaration":2225,"isOffset":false,"isSlot":false,"src":"18646:3:18","valueSize":1}},{"needlelen":{"declaration":2217,"isOffset":false,"isSlot":false,"src":"18651:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":2306,"name":"InlineAssembly","src":"18613:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2288,"type":"bytes32","value":"hash"},"id":2307,"name":"Identifier","src":"18688:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2304,"type":"bytes32","value":"testHash"},"id":2308,"name":"Identifier","src":"18696:8:18"}],"id":2309,"name":"BinaryOperation","src":"18688:16:18"},{"attributes":{"functionReturnParameters":2223},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2310,"name":"Identifier","src":"18737:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2311,"name":"Identifier","src":"18743:9:18"}],"id":2312,"name":"BinaryOperation","src":"18737:15:18"}],"id":2313,"name":"Return","src":"18730:22:18"}],"id":2314,"name":"IfStatement","src":"18684:68:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2315,"name":"Identifier","src":"18774:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2316,"name":"Literal","src":"18781:1:18"}],"id":2317,"name":"Assignment","src":"18774:8:18"}],"id":2318,"name":"ExpressionStatement","src":"18774:8:18"}],"id":2319,"name":"Block","src":"18553:248:18"}],"id":2320,"name":"WhileStatement","src":"18530:271:18"}],"id":2321,"name":"Block","src":"18309:506:18"}],"id":2322,"name":"IfStatement","src":"17654:1161:18"}],"id":2323,"name":"Block","src":"17640:1185:18"}],"id":2324,"name":"IfStatement","src":"17614:1211:18"},{"attributes":{"functionReturnParameters":2223},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2325,"name":"Identifier","src":"18841:7:18"}],"id":2326,"name":"Return","src":"18834:14:18"}],"id":2327,"name":"Block","src":"17585:1270:18"}],"id":2328,"name":"FunctionDefinition","src":"17479:1376:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2368,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2329,"name":"UserDefinedTypeName","src":"19205:5:18"}],"id":2330,"name":"VariableDeclaration","src":"19205:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2368,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2331,"name":"UserDefinedTypeName","src":"19224:5:18"}],"id":2332,"name":"VariableDeclaration","src":"19224:19:18"}],"id":2333,"name":"ParameterList","src":"19204:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2368,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2334,"name":"UserDefinedTypeName","src":"19268:5:18"}],"id":2335,"name":"VariableDeclaration","src":"19268:12:18"}],"id":2336,"name":"ParameterList","src":"19267:14:18"},{"children":[{"attributes":{"assignments":[2338]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2367,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2337,"name":"ElementaryTypeName","src":"19292:4:18"}],"id":2338,"name":"VariableDeclaration","src":"19292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":2339,"name":"Identifier","src":"19303:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2340,"name":"Identifier","src":"19311:4:18"}],"id":2341,"name":"MemberAccess","src":"19311:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2342,"name":"Identifier","src":"19322:4:18"}],"id":2343,"name":"MemberAccess","src":"19322:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2332,"type":"struct strings.slice memory","value":"needle"},"id":2344,"name":"Identifier","src":"19333:6:18"}],"id":2345,"name":"MemberAccess","src":"19333:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2332,"type":"struct strings.slice memory","value":"needle"},"id":2346,"name":"Identifier","src":"19346:6:18"}],"id":2347,"name":"MemberAccess","src":"19346:11:18"}],"id":2348,"name":"FunctionCall","src":"19303:55:18"}],"id":2349,"name":"VariableDeclarationStatement","src":"19292:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2350,"name":"Identifier","src":"19368:4:18"}],"id":2352,"name":"MemberAccess","src":"19368:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2338,"type":"uint256","value":"ptr"},"id":2353,"name":"Identifier","src":"19381:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2354,"name":"Identifier","src":"19387:4:18"}],"id":2355,"name":"MemberAccess","src":"19387:9:18"}],"id":2356,"name":"BinaryOperation","src":"19381:15:18"}],"id":2357,"name":"Assignment","src":"19368:28:18"}],"id":2358,"name":"ExpressionStatement","src":"19368:28:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2359,"name":"Identifier","src":"19406:4:18"}],"id":2361,"name":"MemberAccess","src":"19406:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2338,"type":"uint256","value":"ptr"},"id":2362,"name":"Identifier","src":"19418:3:18"}],"id":2363,"name":"Assignment","src":"19406:15:18"}],"id":2364,"name":"ExpressionStatement","src":"19406:15:18"},{"attributes":{"functionReturnParameters":2336},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2365,"name":"Identifier","src":"19438:4:18"}],"id":2366,"name":"Return","src":"19431:11:18"}],"id":2367,"name":"Block","src":"19282:167:18"}],"id":2368,"name":"FunctionDefinition","src":"19191:258:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2402,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2369,"name":"UserDefinedTypeName","src":"19823:5:18"}],"id":2370,"name":"VariableDeclaration","src":"19823:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2402,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2371,"name":"UserDefinedTypeName","src":"19842:5:18"}],"id":2372,"name":"VariableDeclaration","src":"19842:19:18"}],"id":2373,"name":"ParameterList","src":"19822:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2402,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2374,"name":"UserDefinedTypeName","src":"19886:5:18"}],"id":2375,"name":"VariableDeclaration","src":"19886:12:18"}],"id":2376,"name":"ParameterList","src":"19885:14:18"},{"children":[{"attributes":{"assignments":[2378]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2401,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2377,"name":"ElementaryTypeName","src":"19910:4:18"}],"id":2378,"name":"VariableDeclaration","src":"19910:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2328,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":2379,"name":"Identifier","src":"19921:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2380,"name":"Identifier","src":"19930:4:18"}],"id":2381,"name":"MemberAccess","src":"19930:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2382,"name":"Identifier","src":"19941:4:18"}],"id":2383,"name":"MemberAccess","src":"19941:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2372,"type":"struct strings.slice memory","value":"needle"},"id":2384,"name":"Identifier","src":"19952:6:18"}],"id":2385,"name":"MemberAccess","src":"19952:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2372,"type":"struct strings.slice memory","value":"needle"},"id":2386,"name":"Identifier","src":"19965:6:18"}],"id":2387,"name":"MemberAccess","src":"19965:11:18"}],"id":2388,"name":"FunctionCall","src":"19921:56:18"}],"id":2389,"name":"VariableDeclarationStatement","src":"19910:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2390,"name":"Identifier","src":"19987:4:18"}],"id":2392,"name":"MemberAccess","src":"19987:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2378,"type":"uint256","value":"ptr"},"id":2393,"name":"Identifier","src":"19999:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2394,"name":"Identifier","src":"20005:4:18"}],"id":2395,"name":"MemberAccess","src":"20005:9:18"}],"id":2396,"name":"BinaryOperation","src":"19999:15:18"}],"id":2397,"name":"Assignment","src":"19987:27:18"}],"id":2398,"name":"ExpressionStatement","src":"19987:27:18"},{"attributes":{"functionReturnParameters":2376},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2399,"name":"Identifier","src":"20031:4:18"}],"id":2400,"name":"Return","src":"20024:11:18"}],"id":2401,"name":"Block","src":"19900:142:18"}],"id":2402,"name":"FunctionDefinition","src":"19808:234:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2403,"name":"UserDefinedTypeName","src":"20563:5:18"}],"id":2404,"name":"VariableDeclaration","src":"20563:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2405,"name":"UserDefinedTypeName","src":"20582:5:18"}],"id":2406,"name":"VariableDeclaration","src":"20582:19:18"},{"attributes":{"constant":false,"name":"token","scope":2480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2407,"name":"UserDefinedTypeName","src":"20603:5:18"}],"id":2408,"name":"VariableDeclaration","src":"20603:18:18"}],"id":2409,"name":"ParameterList","src":"20562:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2410,"name":"UserDefinedTypeName","src":"20646:5:18"}],"id":2411,"name":"VariableDeclaration","src":"20646:12:18"}],"id":2412,"name":"ParameterList","src":"20645:14:18"},{"children":[{"attributes":{"assignments":[2414]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2413,"name":"ElementaryTypeName","src":"20670:4:18"}],"id":2414,"name":"VariableDeclaration","src":"20670:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":2415,"name":"Identifier","src":"20681:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2416,"name":"Identifier","src":"20689:4:18"}],"id":2417,"name":"MemberAccess","src":"20689:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2418,"name":"Identifier","src":"20700:4:18"}],"id":2419,"name":"MemberAccess","src":"20700:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"struct strings.slice memory","value":"needle"},"id":2420,"name":"Identifier","src":"20711:6:18"}],"id":2421,"name":"MemberAccess","src":"20711:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"struct strings.slice memory","value":"needle"},"id":2422,"name":"Identifier","src":"20724:6:18"}],"id":2423,"name":"MemberAccess","src":"20724:11:18"}],"id":2424,"name":"FunctionCall","src":"20681:55:18"}],"id":2425,"name":"VariableDeclarationStatement","src":"20670:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"struct strings.slice memory","value":"token"},"id":2426,"name":"Identifier","src":"20746:5:18"}],"id":2428,"name":"MemberAccess","src":"20746:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2429,"name":"Identifier","src":"20759:4:18"}],"id":2430,"name":"MemberAccess","src":"20759:9:18"}],"id":2431,"name":"Assignment","src":"20746:22:18"}],"id":2432,"name":"ExpressionStatement","src":"20746:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"struct strings.slice memory","value":"token"},"id":2433,"name":"Identifier","src":"20778:5:18"}],"id":2435,"name":"MemberAccess","src":"20778:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2414,"type":"uint256","value":"ptr"},"id":2436,"name":"Identifier","src":"20791:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2437,"name":"Identifier","src":"20797:4:18"}],"id":2438,"name":"MemberAccess","src":"20797:9:18"}],"id":2439,"name":"BinaryOperation","src":"20791:15:18"}],"id":2440,"name":"Assignment","src":"20778:28:18"}],"id":2441,"name":"ExpressionStatement","src":"20778:28:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2414,"type":"uint256","value":"ptr"},"id":2442,"name":"Identifier","src":"20820:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2443,"name":"Identifier","src":"20827:4:18"}],"id":2444,"name":"MemberAccess","src":"20827:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2445,"name":"Identifier","src":"20839:4:18"}],"id":2446,"name":"MemberAccess","src":"20839:9:18"}],"id":2447,"name":"BinaryOperation","src":"20827:21:18"}],"id":2448,"name":"BinaryOperation","src":"20820:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2449,"name":"Identifier","src":"20889:4:18"}],"id":2451,"name":"MemberAccess","src":"20889:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2452,"name":"Literal","src":"20901:1:18"}],"id":2453,"name":"Assignment","src":"20889:13:18"}],"id":2454,"name":"ExpressionStatement","src":"20889:13:18"}],"id":2455,"name":"Block","src":"20850:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2456,"name":"Identifier","src":"20933:4:18"}],"id":2458,"name":"MemberAccess","src":"20933:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"struct strings.slice memory","value":"token"},"id":2459,"name":"Identifier","src":"20946:5:18"}],"id":2460,"name":"MemberAccess","src":"20946:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"struct strings.slice memory","value":"needle"},"id":2461,"name":"Identifier","src":"20959:6:18"}],"id":2462,"name":"MemberAccess","src":"20959:11:18"}],"id":2463,"name":"BinaryOperation","src":"20946:24:18"}],"id":2464,"name":"Assignment","src":"20933:37:18"}],"id":2465,"name":"ExpressionStatement","src":"20933:37:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2466,"name":"Identifier","src":"20984:4:18"}],"id":2468,"name":"MemberAccess","src":"20984:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2414,"type":"uint256","value":"ptr"},"id":2469,"name":"Identifier","src":"20996:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"struct strings.slice memory","value":"needle"},"id":2470,"name":"Identifier","src":"21002:6:18"}],"id":2471,"name":"MemberAccess","src":"21002:11:18"}],"id":2472,"name":"BinaryOperation","src":"20996:17:18"}],"id":2473,"name":"Assignment","src":"20984:29:18"}],"id":2474,"name":"ExpressionStatement","src":"20984:29:18"}],"id":2475,"name":"Block","src":"20919:105:18"}],"id":2476,"name":"IfStatement","src":"20816:208:18"},{"attributes":{"functionReturnParameters":2412},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"struct strings.slice memory","value":"token"},"id":2477,"name":"Identifier","src":"21040:5:18"}],"id":2478,"name":"Return","src":"21033:12:18"}],"id":2479,"name":"Block","src":"20660:392:18"}],"id":2480,"name":"FunctionDefinition","src":"20548:504:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2496,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2481,"name":"UserDefinedTypeName","src":"21538:5:18"}],"id":2482,"name":"VariableDeclaration","src":"21538:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2496,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2483,"name":"UserDefinedTypeName","src":"21557:5:18"}],"id":2484,"name":"VariableDeclaration","src":"21557:19:18"}],"id":2485,"name":"ParameterList","src":"21537:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":2496,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2486,"name":"UserDefinedTypeName","src":"21601:5:18"}],"id":2487,"name":"VariableDeclaration","src":"21601:18:18"}],"id":2488,"name":"ParameterList","src":"21600:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[2480,2496],"referencedDeclaration":2480,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":2489,"name":"Identifier","src":"21631:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"struct strings.slice memory","value":"self"},"id":2490,"name":"Identifier","src":"21637:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2484,"type":"struct strings.slice memory","value":"needle"},"id":2491,"name":"Identifier","src":"21643:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2487,"type":"struct strings.slice memory","value":"token"},"id":2492,"name":"Identifier","src":"21651:5:18"}],"id":2493,"name":"FunctionCall","src":"21631:26:18"}],"id":2494,"name":"ExpressionStatement","src":"21631:26:18"}],"id":2495,"name":"Block","src":"21621:43:18"}],"id":2496,"name":"FunctionDefinition","src":"21523:141:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2565,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2497,"name":"UserDefinedTypeName","src":"22185:5:18"}],"id":2498,"name":"VariableDeclaration","src":"22185:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2565,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2499,"name":"UserDefinedTypeName","src":"22204:5:18"}],"id":2500,"name":"VariableDeclaration","src":"22204:19:18"},{"attributes":{"constant":false,"name":"token","scope":2565,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2501,"name":"UserDefinedTypeName","src":"22225:5:18"}],"id":2502,"name":"VariableDeclaration","src":"22225:18:18"}],"id":2503,"name":"ParameterList","src":"22184:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2565,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2504,"name":"UserDefinedTypeName","src":"22268:5:18"}],"id":2505,"name":"VariableDeclaration","src":"22268:12:18"}],"id":2506,"name":"ParameterList","src":"22267:14:18"},{"children":[{"attributes":{"assignments":[2508]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2564,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2507,"name":"ElementaryTypeName","src":"22292:4:18"}],"id":2508,"name":"VariableDeclaration","src":"22292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2328,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":2509,"name":"Identifier","src":"22303:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2510,"name":"Identifier","src":"22312:4:18"}],"id":2511,"name":"MemberAccess","src":"22312:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2512,"name":"Identifier","src":"22323:4:18"}],"id":2513,"name":"MemberAccess","src":"22323:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"struct strings.slice memory","value":"needle"},"id":2514,"name":"Identifier","src":"22334:6:18"}],"id":2515,"name":"MemberAccess","src":"22334:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"struct strings.slice memory","value":"needle"},"id":2516,"name":"Identifier","src":"22347:6:18"}],"id":2517,"name":"MemberAccess","src":"22347:11:18"}],"id":2518,"name":"FunctionCall","src":"22303:56:18"}],"id":2519,"name":"VariableDeclarationStatement","src":"22292:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2502,"type":"struct strings.slice memory","value":"token"},"id":2520,"name":"Identifier","src":"22369:5:18"}],"id":2522,"name":"MemberAccess","src":"22369:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"uint256","value":"ptr"},"id":2523,"name":"Identifier","src":"22382:3:18"}],"id":2524,"name":"Assignment","src":"22369:16:18"}],"id":2525,"name":"ExpressionStatement","src":"22369:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2502,"type":"struct strings.slice memory","value":"token"},"id":2526,"name":"Identifier","src":"22395:5:18"}],"id":2528,"name":"MemberAccess","src":"22395:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2529,"name":"Identifier","src":"22408:4:18"}],"id":2530,"name":"MemberAccess","src":"22408:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"uint256","value":"ptr"},"id":2531,"name":"Identifier","src":"22421:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2532,"name":"Identifier","src":"22427:4:18"}],"id":2533,"name":"MemberAccess","src":"22427:9:18"}],"id":2534,"name":"BinaryOperation","src":"22421:15:18"}],"id":2535,"name":"TupleExpression","src":"22420:17:18"}],"id":2536,"name":"BinaryOperation","src":"22408:29:18"}],"id":2537,"name":"Assignment","src":"22395:42:18"}],"id":2538,"name":"ExpressionStatement","src":"22395:42:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"uint256","value":"ptr"},"id":2539,"name":"Identifier","src":"22451:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2540,"name":"Identifier","src":"22458:4:18"}],"id":2541,"name":"MemberAccess","src":"22458:9:18"}],"id":2542,"name":"BinaryOperation","src":"22451:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2543,"name":"Identifier","src":"22508:4:18"}],"id":2545,"name":"MemberAccess","src":"22508:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2546,"name":"Literal","src":"22520:1:18"}],"id":2547,"name":"Assignment","src":"22508:13:18"}],"id":2548,"name":"ExpressionStatement","src":"22508:13:18"}],"id":2549,"name":"Block","src":"22469:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2550,"name":"Identifier","src":"22552:4:18"}],"id":2552,"name":"MemberAccess","src":"22552:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2502,"type":"struct strings.slice memory","value":"token"},"id":2553,"name":"Identifier","src":"22565:5:18"}],"id":2554,"name":"MemberAccess","src":"22565:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"struct strings.slice memory","value":"needle"},"id":2555,"name":"Identifier","src":"22578:6:18"}],"id":2556,"name":"MemberAccess","src":"22578:11:18"}],"id":2557,"name":"BinaryOperation","src":"22565:24:18"}],"id":2558,"name":"Assignment","src":"22552:37:18"}],"id":2559,"name":"ExpressionStatement","src":"22552:37:18"}],"id":2560,"name":"Block","src":"22538:62:18"}],"id":2561,"name":"IfStatement","src":"22447:153:18"},{"attributes":{"functionReturnParameters":2506},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2502,"type":"struct strings.slice memory","value":"token"},"id":2562,"name":"Identifier","src":"22616:5:18"}],"id":2563,"name":"Return","src":"22609:12:18"}],"id":2564,"name":"Block","src":"22282:346:18"}],"id":2565,"name":"FunctionDefinition","src":"22169:459:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2581,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2566,"name":"UserDefinedTypeName","src":"23113:5:18"}],"id":2567,"name":"VariableDeclaration","src":"23113:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2581,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2568,"name":"UserDefinedTypeName","src":"23132:5:18"}],"id":2569,"name":"VariableDeclaration","src":"23132:19:18"}],"id":2570,"name":"ParameterList","src":"23112:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":2581,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2571,"name":"UserDefinedTypeName","src":"23176:5:18"}],"id":2572,"name":"VariableDeclaration","src":"23176:18:18"}],"id":2573,"name":"ParameterList","src":"23175:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[2565,2581],"referencedDeclaration":2565,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":2574,"name":"Identifier","src":"23206:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"struct strings.slice memory","value":"self"},"id":2575,"name":"Identifier","src":"23213:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"struct strings.slice memory","value":"needle"},"id":2576,"name":"Identifier","src":"23219:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2572,"type":"struct strings.slice memory","value":"token"},"id":2577,"name":"Identifier","src":"23227:5:18"}],"id":2578,"name":"FunctionCall","src":"23206:27:18"}],"id":2579,"name":"ExpressionStatement","src":"23206:27:18"}],"id":2580,"name":"Block","src":"23196:44:18"}],"id":2581,"name":"FunctionDefinition","src":"23097:143:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2640,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2582,"name":"UserDefinedTypeName","src":"23524:5:18"}],"id":2583,"name":"VariableDeclaration","src":"23524:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2640,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2584,"name":"UserDefinedTypeName","src":"23543:5:18"}],"id":2585,"name":"VariableDeclaration","src":"23543:19:18"}],"id":2586,"name":"ParameterList","src":"23523:40:18"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":2640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2587,"name":"ElementaryTypeName","src":"23587:4:18"}],"id":2588,"name":"VariableDeclaration","src":"23587:8:18"}],"id":2589,"name":"ParameterList","src":"23586:10:18"},{"children":[{"attributes":{"assignments":[2591]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2590,"name":"ElementaryTypeName","src":"23607:4:18"}],"id":2591,"name":"VariableDeclaration","src":"23607:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":2592,"name":"Identifier","src":"23618:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2593,"name":"Identifier","src":"23626:4:18"}],"id":2594,"name":"MemberAccess","src":"23626:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2595,"name":"Identifier","src":"23637:4:18"}],"id":2596,"name":"MemberAccess","src":"23637:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2597,"name":"Identifier","src":"23648:6:18"}],"id":2598,"name":"MemberAccess","src":"23648:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2599,"name":"Identifier","src":"23661:6:18"}],"id":2600,"name":"MemberAccess","src":"23661:11:18"}],"id":2601,"name":"FunctionCall","src":"23618:55:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2602,"name":"Identifier","src":"23676:6:18"}],"id":2603,"name":"MemberAccess","src":"23676:11:18"}],"id":2604,"name":"BinaryOperation","src":"23618:69:18"}],"id":2605,"name":"VariableDeclarationStatement","src":"23607:80:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"uint256","value":"ptr"},"id":2606,"name":"Identifier","src":"23704:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2607,"name":"Identifier","src":"23711:4:18"}],"id":2608,"name":"MemberAccess","src":"23711:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2609,"name":"Identifier","src":"23723:4:18"}],"id":2610,"name":"MemberAccess","src":"23723:9:18"}],"id":2611,"name":"BinaryOperation","src":"23711:21:18"}],"id":2612,"name":"BinaryOperation","src":"23704:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2588,"type":"uint256","value":"cnt"},"id":2613,"name":"Identifier","src":"23748:3:18"}],"id":2614,"name":"UnaryOperation","src":"23748:5:18"}],"id":2615,"name":"ExpressionStatement","src":"23748:5:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"uint256","value":"ptr"},"id":2616,"name":"Identifier","src":"23767:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":2617,"name":"Identifier","src":"23773:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2618,"name":"Identifier","src":"23781:4:18"}],"id":2619,"name":"MemberAccess","src":"23781:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"uint256","value":"ptr"},"id":2620,"name":"Identifier","src":"23794:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2621,"name":"Identifier","src":"23800:4:18"}],"id":2622,"name":"MemberAccess","src":"23800:9:18"}],"id":2623,"name":"BinaryOperation","src":"23794:15:18"}],"id":2624,"name":"TupleExpression","src":"23793:17:18"}],"id":2625,"name":"BinaryOperation","src":"23781:29:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"uint256","value":"ptr"},"id":2626,"name":"Identifier","src":"23812:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2627,"name":"Identifier","src":"23817:6:18"}],"id":2628,"name":"MemberAccess","src":"23817:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2629,"name":"Identifier","src":"23830:6:18"}],"id":2630,"name":"MemberAccess","src":"23830:11:18"}],"id":2631,"name":"FunctionCall","src":"23773:69:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2632,"name":"Identifier","src":"23845:6:18"}],"id":2633,"name":"MemberAccess","src":"23845:11:18"}],"id":2634,"name":"BinaryOperation","src":"23773:83:18"}],"id":2635,"name":"Assignment","src":"23767:89:18"}],"id":2636,"name":"ExpressionStatement","src":"23767:89:18"}],"id":2637,"name":"Block","src":"23734:133:18"}],"id":2638,"name":"WhileStatement","src":"23697:170:18"}],"id":2639,"name":"Block","src":"23597:276:18"}],"id":2640,"name":"FunctionDefinition","src":"23509:364:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2664,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2641,"name":"UserDefinedTypeName","src":"24130:5:18"}],"id":2642,"name":"VariableDeclaration","src":"24130:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2664,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2643,"name":"UserDefinedTypeName","src":"24149:5:18"}],"id":2644,"name":"VariableDeclaration","src":"24149:19:18"}],"id":2645,"name":"ParameterList","src":"24129:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2646,"name":"ElementaryTypeName","src":"24193:4:18"}],"id":2647,"name":"VariableDeclaration","src":"24193:4:18"}],"id":2648,"name":"ParameterList","src":"24192:6:18"},{"children":[{"attributes":{"functionReturnParameters":2648},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2328,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":2649,"name":"Identifier","src":"24216:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"struct strings.slice memory","value":"self"},"id":2650,"name":"Identifier","src":"24225:4:18"}],"id":2651,"name":"MemberAccess","src":"24225:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"struct strings.slice memory","value":"self"},"id":2652,"name":"Identifier","src":"24236:4:18"}],"id":2653,"name":"MemberAccess","src":"24236:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2644,"type":"struct strings.slice memory","value":"needle"},"id":2654,"name":"Identifier","src":"24247:6:18"}],"id":2655,"name":"MemberAccess","src":"24247:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2644,"type":"struct strings.slice memory","value":"needle"},"id":2656,"name":"Identifier","src":"24260:6:18"}],"id":2657,"name":"MemberAccess","src":"24260:11:18"}],"id":2658,"name":"FunctionCall","src":"24216:56:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"struct strings.slice memory","value":"self"},"id":2659,"name":"Identifier","src":"24276:4:18"}],"id":2660,"name":"MemberAccess","src":"24276:9:18"}],"id":2661,"name":"BinaryOperation","src":"24216:69:18"}],"id":2662,"name":"Return","src":"24209:76:18"}],"id":2663,"name":"Block","src":"24199:93:18"}],"id":2664,"name":"FunctionDefinition","src":"24112:180:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2710,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2665,"name":"UserDefinedTypeName","src":"24595:5:18"}],"id":2666,"name":"VariableDeclaration","src":"24595:17:18"},{"attributes":{"constant":false,"name":"other","scope":2710,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2667,"name":"UserDefinedTypeName","src":"24614:5:18"}],"id":2668,"name":"VariableDeclaration","src":"24614:18:18"}],"id":2669,"name":"ParameterList","src":"24594:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2710,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2670,"name":"ElementaryTypeName","src":"24657:6:18"}],"id":2671,"name":"VariableDeclaration","src":"24657:13:18"}],"id":2672,"name":"ParameterList","src":"24656:15:18"},{"children":[{"attributes":{"assignments":[2674]},"children":[{"attributes":{"constant":false,"name":"ret","scope":2709,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2673,"name":"ElementaryTypeName","src":"24682:6:18"}],"id":2674,"name":"VariableDeclaration","src":"24682:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":2675,"name":"ElementaryTypeName","src":"24706:6:18"}],"id":2676,"name":"NewExpression","src":"24702:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2666,"type":"struct strings.slice memory","value":"self"},"id":2677,"name":"Identifier","src":"24713:4:18"}],"id":2678,"name":"MemberAccess","src":"24713:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2668,"type":"struct strings.slice memory","value":"other"},"id":2679,"name":"Identifier","src":"24725:5:18"}],"id":2680,"name":"MemberAccess","src":"24725:10:18"}],"id":2681,"name":"BinaryOperation","src":"24713:22:18"}],"id":2682,"name":"FunctionCall","src":"24702:34:18"}],"id":2683,"name":"VariableDeclarationStatement","src":"24682:54:18"},{"attributes":{"assignments":[2685],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":2709,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2684,"name":"ElementaryTypeName","src":"24746:4:18"}],"id":2685,"name":"VariableDeclaration","src":"24746:11:18"}],"id":2686,"name":"VariableDeclarationStatement","src":"24746:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":2685,"isOffset":false,"isSlot":false,"src":"24778:6:18","valueSize":1}},{"ret":{"declaration":2674,"isOffset":false,"isSlot":false,"src":"24792:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":2687,"name":"InlineAssembly","src":"24767:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":2688,"name":"Identifier","src":"24811:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2685,"type":"uint256","value":"retptr"},"id":2689,"name":"Identifier","src":"24818:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2666,"type":"struct strings.slice memory","value":"self"},"id":2690,"name":"Identifier","src":"24826:4:18"}],"id":2691,"name":"MemberAccess","src":"24826:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2666,"type":"struct strings.slice memory","value":"self"},"id":2692,"name":"Identifier","src":"24837:4:18"}],"id":2693,"name":"MemberAccess","src":"24837:9:18"}],"id":2694,"name":"FunctionCall","src":"24811:36:18"}],"id":2695,"name":"ExpressionStatement","src":"24811:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":2696,"name":"Identifier","src":"24857:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2685,"type":"uint256","value":"retptr"},"id":2697,"name":"Identifier","src":"24864:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2666,"type":"struct strings.slice memory","value":"self"},"id":2698,"name":"Identifier","src":"24873:4:18"}],"id":2699,"name":"MemberAccess","src":"24873:9:18"}],"id":2700,"name":"BinaryOperation","src":"24864:18:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2668,"type":"struct strings.slice memory","value":"other"},"id":2701,"name":"Identifier","src":"24884:5:18"}],"id":2702,"name":"MemberAccess","src":"24884:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2668,"type":"struct strings.slice memory","value":"other"},"id":2703,"name":"Identifier","src":"24896:5:18"}],"id":2704,"name":"MemberAccess","src":"24896:10:18"}],"id":2705,"name":"FunctionCall","src":"24857:50:18"}],"id":2706,"name":"ExpressionStatement","src":"24857:50:18"},{"attributes":{"functionReturnParameters":2672},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2674,"type":"string memory","value":"ret"},"id":2707,"name":"Identifier","src":"24924:3:18"}],"id":2708,"name":"Return","src":"24917:10:18"}],"id":2709,"name":"Block","src":"24672:262:18"}],"id":2710,"name":"FunctionDefinition","src":"24579:355:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2825,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2711,"name":"UserDefinedTypeName","src":"25284:5:18"}],"id":2712,"name":"VariableDeclaration","src":"25284:17:18"},{"attributes":{"constant":false,"name":"parts","scope":2825,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2713,"name":"UserDefinedTypeName","src":"25303:5:18"}],"id":2714,"name":"ArrayTypeName","src":"25303:7:18"}],"id":2715,"name":"VariableDeclaration","src":"25303:20:18"}],"id":2716,"name":"ParameterList","src":"25283:41:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2825,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2717,"name":"ElementaryTypeName","src":"25348:6:18"}],"id":2718,"name":"VariableDeclaration","src":"25348:13:18"}],"id":2719,"name":"ParameterList","src":"25347:15:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2720,"name":"Identifier","src":"25377:5:18"}],"id":2721,"name":"MemberAccess","src":"25377:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2722,"name":"Literal","src":"25393:1:18"}],"id":2723,"name":"BinaryOperation","src":"25377:17:18"},{"attributes":{"functionReturnParameters":2719},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":2724,"name":"Literal","src":"25415:2:18"}],"id":2725,"name":"Return","src":"25408:9:18"}],"id":2726,"name":"IfStatement","src":"25373:44:18"},{"attributes":{"assignments":[2728]},"children":[{"attributes":{"constant":false,"name":"length","scope":2824,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2727,"name":"ElementaryTypeName","src":"25428:4:18"}],"id":2728,"name":"VariableDeclaration","src":"25428:11:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"struct strings.slice memory","value":"self"},"id":2729,"name":"Identifier","src":"25442:4:18"}],"id":2730,"name":"MemberAccess","src":"25442:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2731,"name":"Identifier","src":"25455:5:18"}],"id":2732,"name":"MemberAccess","src":"25455:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2733,"name":"Literal","src":"25470:1:18"}],"id":2734,"name":"BinaryOperation","src":"25455:16:18"}],"id":2735,"name":"TupleExpression","src":"25454:18:18"}],"id":2736,"name":"BinaryOperation","src":"25442:30:18"}],"id":2737,"name":"VariableDeclarationStatement","src":"25428:44:18"},{"children":[{"attributes":{"assignments":[2739]},"children":[{"attributes":{"constant":false,"name":"i","scope":2757,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2738,"name":"ElementaryTypeName","src":"25487:4:18"}],"id":2739,"name":"VariableDeclaration","src":"25487:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2740,"name":"Literal","src":"25496:1:18"}],"id":2741,"name":"VariableDeclarationStatement","src":"25487:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"i"},"id":2742,"name":"Identifier","src":"25499:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2743,"name":"Identifier","src":"25503:5:18"}],"id":2744,"name":"MemberAccess","src":"25503:12:18"}],"id":2745,"name":"BinaryOperation","src":"25499:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"i"},"id":2746,"name":"Identifier","src":"25517:1:18"}],"id":2747,"name":"UnaryOperation","src":"25517:3:18"}],"id":2748,"name":"ExpressionStatement","src":"25517:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2728,"type":"uint256","value":"length"},"id":2749,"name":"Identifier","src":"25536:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2750,"name":"Identifier","src":"25546:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"i"},"id":2751,"name":"Identifier","src":"25552:1:18"}],"id":2752,"name":"IndexAccess","src":"25546:8:18"}],"id":2753,"name":"MemberAccess","src":"25546:13:18"}],"id":2754,"name":"Assignment","src":"25536:23:18"}],"id":2755,"name":"ExpressionStatement","src":"25536:23:18"}],"id":2756,"name":"Block","src":"25522:48:18"}],"id":2757,"name":"ForStatement","src":"25482:88:18"},{"attributes":{"assignments":[2759]},"children":[{"attributes":{"constant":false,"name":"ret","scope":2824,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2758,"name":"ElementaryTypeName","src":"25580:6:18"}],"id":2759,"name":"VariableDeclaration","src":"25580:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":2760,"name":"ElementaryTypeName","src":"25604:6:18"}],"id":2761,"name":"NewExpression","src":"25600:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2728,"type":"uint256","value":"length"},"id":2762,"name":"Identifier","src":"25611:6:18"}],"id":2763,"name":"FunctionCall","src":"25600:18:18"}],"id":2764,"name":"VariableDeclarationStatement","src":"25580:38:18"},{"attributes":{"assignments":[2766],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":2824,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2765,"name":"ElementaryTypeName","src":"25628:4:18"}],"id":2766,"name":"VariableDeclaration","src":"25628:11:18"}],"id":2767,"name":"VariableDeclarationStatement","src":"25628:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":2766,"isOffset":false,"isSlot":false,"src":"25660:6:18","valueSize":1}},{"ret":{"declaration":2759,"isOffset":false,"isSlot":false,"src":"25674:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":2768,"name":"InlineAssembly","src":"25649:35:18"},{"children":[{"attributes":{"assignments":[2770]},"children":[{"attributes":{"constant":false,"name":"i","scope":2821,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2769,"name":"ElementaryTypeName","src":"25699:4:18"}],"id":2770,"name":"VariableDeclaration","src":"25699:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2771,"name":"Literal","src":"25708:1:18"}],"id":2772,"name":"VariableDeclarationStatement","src":"25699:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2773,"name":"Identifier","src":"25711:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2774,"name":"Identifier","src":"25715:5:18"}],"id":2775,"name":"MemberAccess","src":"25715:12:18"}],"id":2776,"name":"BinaryOperation","src":"25711:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2777,"name":"Identifier","src":"25729:1:18"}],"id":2778,"name":"UnaryOperation","src":"25729:3:18"}],"id":2779,"name":"ExpressionStatement","src":"25729:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":2780,"name":"Identifier","src":"25748:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2766,"type":"uint256","value":"retptr"},"id":2781,"name":"Identifier","src":"25755:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2782,"name":"Identifier","src":"25763:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2783,"name":"Identifier","src":"25769:1:18"}],"id":2784,"name":"IndexAccess","src":"25763:8:18"}],"id":2785,"name":"MemberAccess","src":"25763:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2786,"name":"Identifier","src":"25778:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2787,"name":"Identifier","src":"25784:1:18"}],"id":2788,"name":"IndexAccess","src":"25778:8:18"}],"id":2789,"name":"MemberAccess","src":"25778:13:18"}],"id":2790,"name":"FunctionCall","src":"25748:44:18"}],"id":2791,"name":"ExpressionStatement","src":"25748:44:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2766,"type":"uint256","value":"retptr"},"id":2792,"name":"Identifier","src":"25806:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2793,"name":"Identifier","src":"25816:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2794,"name":"Identifier","src":"25822:1:18"}],"id":2795,"name":"IndexAccess","src":"25816:8:18"}],"id":2796,"name":"MemberAccess","src":"25816:13:18"}],"id":2797,"name":"Assignment","src":"25806:23:18"}],"id":2798,"name":"ExpressionStatement","src":"25806:23:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2799,"name":"Identifier","src":"25847:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2800,"name":"Identifier","src":"25851:5:18"}],"id":2801,"name":"MemberAccess","src":"25851:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2802,"name":"Literal","src":"25866:1:18"}],"id":2803,"name":"BinaryOperation","src":"25851:16:18"}],"id":2804,"name":"BinaryOperation","src":"25847:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":2805,"name":"Identifier","src":"25887:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2766,"type":"uint256","value":"retptr"},"id":2806,"name":"Identifier","src":"25894:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"struct strings.slice memory","value":"self"},"id":2807,"name":"Identifier","src":"25902:4:18"}],"id":2808,"name":"MemberAccess","src":"25902:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"struct strings.slice memory","value":"self"},"id":2809,"name":"Identifier","src":"25913:4:18"}],"id":2810,"name":"MemberAccess","src":"25913:9:18"}],"id":2811,"name":"FunctionCall","src":"25887:36:18"}],"id":2812,"name":"ExpressionStatement","src":"25887:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2766,"type":"uint256","value":"retptr"},"id":2813,"name":"Identifier","src":"25941:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"struct strings.slice memory","value":"self"},"id":2814,"name":"Identifier","src":"25951:4:18"}],"id":2815,"name":"MemberAccess","src":"25951:9:18"}],"id":2816,"name":"Assignment","src":"25941:19:18"}],"id":2817,"name":"ExpressionStatement","src":"25941:19:18"}],"id":2818,"name":"Block","src":"25869:106:18"}],"id":2819,"name":"IfStatement","src":"25843:132:18"}],"id":2820,"name":"Block","src":"25734:251:18"}],"id":2821,"name":"ForStatement","src":"25694:291:18"},{"attributes":{"functionReturnParameters":2719},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2759,"type":"string memory","value":"ret"},"id":2822,"name":"Identifier","src":"26002:3:18"}],"id":2823,"name":"Return","src":"25995:10:18"}],"id":2824,"name":"Block","src":"25363:649:18"}],"id":2825,"name":"FunctionDefinition","src":"25270:742:18"}],"id":2826,"name":"ContractDefinition","src":"2599:23415:18"}],"id":2827,"name":"SourceUnit","src":"2574:23441:18"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[2937]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2828,"name":"PragmaDirective","src":"770:24:19"},{"attributes":{"SourceUnit":1121,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":2938,"symbolAliases":[null],"unitAlias":""},"id":2829,"name":"ImportDirective","src":"796:35:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[2937],"name":"BytesUtils","scope":2938},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1120,"type":"library SafeMath"},"id":2830,"name":"UserDefinedTypeName","src":"942:8:19"},{"attributes":{"name":"uint256","type":"uint256"},"id":2831,"name":"ElementaryTypeName","src":"955:7:19"}],"id":2832,"name":"UsingForDirective","src":"936:27:19"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":2937,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":2868,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2833,"name":"ElementaryTypeName","src":"1106:5:19"}],"id":2834,"name":"VariableDeclaration","src":"1106:17:19"},{"attributes":{"constant":false,"name":"_from","scope":2868,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2835,"name":"ElementaryTypeName","src":"1125:7:19"}],"id":2836,"name":"VariableDeclaration","src":"1125:13:19"}],"id":2837,"name":"ParameterList","src":"1105:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":2868,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2838,"name":"ElementaryTypeName","src":"1163:7:19"}],"id":2839,"name":"VariableDeclaration","src":"1163:7:19"}],"id":2840,"name":"ParameterList","src":"1162:9:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2841,"name":"Identifier","src":"1182:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2834,"type":"bytes memory","value":"_bts"},"id":2842,"name":"Identifier","src":"1190:4:19"}],"id":2843,"name":"MemberAccess","src":"1190:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"uint256","value":"_from"},"id":2844,"name":"Identifier","src":"1205:5:19"}],"id":2845,"name":"MemberAccess","src":"1205:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":2846,"name":"Literal","src":"1215:2:19"}],"id":2847,"name":"FunctionCall","src":"1205:13:19"}],"id":2848,"name":"BinaryOperation","src":"1190:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":2849,"name":"Literal","src":"1220:22:19"}],"id":2850,"name":"FunctionCall","src":"1182:61:19"}],"id":2851,"name":"ExpressionStatement","src":"1182:61:19"},{"attributes":{"assignments":[2853],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":2867,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":2852,"name":"ElementaryTypeName","src":"1254:7:19"}],"id":2853,"name":"VariableDeclaration","src":"1254:24:19"}],"id":2854,"name":"VariableDeclarationStatement","src":"1254:24:19"},{"attributes":{"assignments":[2856]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":2867,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2855,"name":"ElementaryTypeName","src":"1288:7:19"}],"id":2856,"name":"VariableDeclaration","src":"1288:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"uint256","value":"_from"},"id":2857,"name":"Identifier","src":"1308:5:19"}],"id":2858,"name":"MemberAccess","src":"1308:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2859,"name":"Literal","src":"1318:2:19"}],"id":2860,"name":"FunctionCall","src":"1308:13:19"}],"id":2861,"name":"VariableDeclarationStatement","src":"1288:33:19"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":2853,"isOffset":false,"isSlot":false,"src":"1396:16:19","valueSize":1}},{"_bts":{"declaration":2834,"isOffset":false,"isSlot":false,"src":"1426:4:19","valueSize":1}},{"startByte":{"declaration":2856,"isOffset":false,"isSlot":false,"src":"1432:9:19","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":2862,"name":"InlineAssembly","src":"1373:80:19"},{"attributes":{"functionReturnParameters":2840},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2863,"name":"ElementaryTypeNameExpression","src":"1470:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2853,"type":"bytes20","value":"convertedAddress"},"id":2864,"name":"Identifier","src":"1478:16:19"}],"id":2865,"name":"FunctionCall","src":"1470:25:19"}],"id":2866,"name":"Return","src":"1463:32:19"}],"id":2867,"name":"Block","src":"1172:330:19"}],"id":2868,"name":"FunctionDefinition","src":"1081:421:19"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":2937,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":2902,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2869,"name":"ElementaryTypeName","src":"1651:5:19"}],"id":2870,"name":"VariableDeclaration","src":"1651:17:19"},{"attributes":{"constant":false,"name":"_from","scope":2902,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2871,"name":"ElementaryTypeName","src":"1670:7:19"}],"id":2872,"name":"VariableDeclaration","src":"1670:13:19"}],"id":2873,"name":"ParameterList","src":"1650:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":2902,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2874,"name":"ElementaryTypeName","src":"1708:6:19"}],"id":2875,"name":"VariableDeclaration","src":"1708:6:19"}],"id":2876,"name":"ParameterList","src":"1707:8:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2877,"name":"Identifier","src":"1726:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"bytes memory","value":"_bts"},"id":2878,"name":"Identifier","src":"1734:4:19"}],"id":2879,"name":"MemberAccess","src":"1734:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2872,"type":"uint256","value":"_from"},"id":2880,"name":"Identifier","src":"1749:5:19"}],"id":2881,"name":"MemberAccess","src":"1749:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":2882,"name":"Literal","src":"1759:1:19"}],"id":2883,"name":"FunctionCall","src":"1749:12:19"}],"id":2884,"name":"BinaryOperation","src":"1734:27:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":2885,"name":"Literal","src":"1763:22:19"}],"id":2886,"name":"FunctionCall","src":"1726:60:19"}],"id":2887,"name":"ExpressionStatement","src":"1726:60:19"},{"attributes":{"assignments":[2889],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":2901,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2888,"name":"ElementaryTypeName","src":"1797:6:19"}],"id":2889,"name":"VariableDeclaration","src":"1797:19:19"}],"id":2890,"name":"VariableDeclarationStatement","src":"1797:19:19"},{"attributes":{"assignments":[2892]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":2901,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2891,"name":"ElementaryTypeName","src":"1826:7:19"}],"id":2892,"name":"VariableDeclaration","src":"1826:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2872,"type":"uint256","value":"_from"},"id":2893,"name":"Identifier","src":"1846:5:19"}],"id":2894,"name":"MemberAccess","src":"1846:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2895,"name":"Literal","src":"1856:2:19"}],"id":2896,"name":"FunctionCall","src":"1846:13:19"}],"id":2897,"name":"VariableDeclarationStatement","src":"1826:33:19"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":2889,"isOffset":false,"isSlot":false,"src":"1934:12:19","valueSize":1}},{"_bts":{"declaration":2870,"isOffset":false,"isSlot":false,"src":"1960:4:19","valueSize":1}},{"startByte":{"declaration":2892,"isOffset":false,"isSlot":false,"src":"1966:9:19","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":2898,"name":"InlineAssembly","src":"1911:76:19"},{"attributes":{"functionReturnParameters":2876},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2889,"type":"bytes4","value":"slicedBytes4"},"id":2899,"name":"Identifier","src":"2004:12:19"}],"id":2900,"name":"Return","src":"1997:19:19"}],"id":2901,"name":"Block","src":"1716:307:19"}],"id":2902,"name":"FunctionDefinition","src":"1627:396:19"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":2937,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":2936,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2903,"name":"ElementaryTypeName","src":"2398:5:19"}],"id":2904,"name":"VariableDeclaration","src":"2398:17:19"},{"attributes":{"constant":false,"name":"_from","scope":2936,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2905,"name":"ElementaryTypeName","src":"2417:7:19"}],"id":2906,"name":"VariableDeclaration","src":"2417:13:19"}],"id":2907,"name":"ParameterList","src":"2397:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":2936,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2908,"name":"ElementaryTypeName","src":"2455:7:19"}],"id":2909,"name":"VariableDeclaration","src":"2455:7:19"}],"id":2910,"name":"ParameterList","src":"2454:9:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2911,"name":"Identifier","src":"2474:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2904,"type":"bytes memory","value":"_bts"},"id":2912,"name":"Identifier","src":"2482:4:19"}],"id":2913,"name":"MemberAccess","src":"2482:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2906,"type":"uint256","value":"_from"},"id":2914,"name":"Identifier","src":"2497:5:19"}],"id":2915,"name":"MemberAccess","src":"2497:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2916,"name":"Literal","src":"2507:2:19"}],"id":2917,"name":"FunctionCall","src":"2497:13:19"}],"id":2918,"name":"BinaryOperation","src":"2482:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":2919,"name":"Literal","src":"2512:22:19"}],"id":2920,"name":"FunctionCall","src":"2474:61:19"}],"id":2921,"name":"ExpressionStatement","src":"2474:61:19"},{"attributes":{"assignments":[2923],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":2935,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2922,"name":"ElementaryTypeName","src":"2546:7:19"}],"id":2923,"name":"VariableDeclaration","src":"2546:24:19"}],"id":2924,"name":"VariableDeclarationStatement","src":"2546:24:19"},{"attributes":{"assignments":[2926]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":2935,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2925,"name":"ElementaryTypeName","src":"2580:7:19"}],"id":2926,"name":"VariableDeclaration","src":"2580:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2906,"type":"uint256","value":"_from"},"id":2927,"name":"Identifier","src":"2600:5:19"}],"id":2928,"name":"MemberAccess","src":"2600:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2929,"name":"Literal","src":"2610:2:19"}],"id":2930,"name":"FunctionCall","src":"2600:13:19"}],"id":2931,"name":"VariableDeclarationStatement","src":"2580:33:19"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":2923,"isOffset":false,"isSlot":false,"src":"2688:16:19","valueSize":1}},{"_bts":{"declaration":2904,"isOffset":false,"isSlot":false,"src":"2718:4:19","valueSize":1}},{"startByte":{"declaration":2926,"isOffset":false,"isSlot":false,"src":"2724:9:19","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":2932,"name":"InlineAssembly","src":"2665:80:19"},{"attributes":{"functionReturnParameters":2910},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"uint256","value":"convertedUint256"},"id":2933,"name":"Identifier","src":"2762:16:19"}],"id":2934,"name":"Return","src":"2755:23:19"}],"id":2935,"name":"Block","src":"2464:321:19"}],"id":2936,"name":"FunctionDefinition","src":"2373:412:19"}],"id":2937,"name":"ContractDefinition","src":"911:1876:19"}],"id":2938,"name":"SourceUnit","src":"770:2018:19"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[3033]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2939,"name":"PragmaDirective","src":"772:24:20"},{"attributes":{"SourceUnit":3528,"absolutePath":"controller.sol","file":"../controller.sol","scope":3034,"symbolAliases":[null],"unitAlias":""},"id":2940,"name":"ImportDirective","src":"798:27:20"},{"attributes":{"SourceUnit":3573,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":3034,"symbolAliases":[null],"unitAlias":""},"id":2941,"name":"ImportDirective","src":"826:29:20"},{"attributes":{"contractDependencies":[3572],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[3033,3572],"name":"Controllable","scope":3034},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3572,"type":"contract ENSResolvable"},"id":2942,"name":"UserDefinedTypeName","src":"980:13:20"}],"id":2943,"name":"InheritanceSpecifier","src":"980:13:20"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":3033,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2944,"name":"ElementaryTypeName","src":"1070:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":2945,"name":"Literal","src":"1122:66:20"}],"id":2946,"name":"VariableDeclaration","src":"1070:118:20"},{"attributes":{"constant":false,"name":"_controllerNode","scope":3033,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2947,"name":"ElementaryTypeName","src":"1272:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2946,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":2948,"name":"Identifier","src":"1306:24:20"}],"id":2949,"name":"VariableDeclaration","src":"1272:58:20"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3033,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":2966,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2950,"name":"ElementaryTypeName","src":"1571:7:20"}],"id":2951,"name":"VariableDeclaration","src":"1571:24:20"}],"id":2952,"name":"ParameterList","src":"1570:26:20"},{"attributes":{"parameters":[null]},"children":[],"id":2953,"name":"ParameterList","src":"1606:0:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2951,"type":"bytes32","value":"_controllerNode_"},"id":2954,"name":"Identifier","src":"1665:16:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2955,"name":"ElementaryTypeNameExpression","src":"1685:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2956,"name":"Literal","src":"1693:1:20"}],"id":2957,"name":"FunctionCall","src":"1685:10:20"}],"id":2958,"name":"BinaryOperation","src":"1665:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"bytes32","value":"_controllerNode"},"id":2959,"name":"Identifier","src":"1711:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2951,"type":"bytes32","value":"_controllerNode_"},"id":2960,"name":"Identifier","src":"1729:16:20"}],"id":2961,"name":"Assignment","src":"1711:34:20"}],"id":2962,"name":"ExpressionStatement","src":"1711:34:20"}],"id":2963,"name":"Block","src":"1697:59:20"}],"id":2964,"name":"IfStatement","src":"1661:95:20"}],"id":2965,"name":"Block","src":"1606:156:20"}],"id":2966,"name":"FunctionDefinition","src":"1559:203:20"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2967,"name":"ParameterList","src":"1849:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2968,"name":"Identifier","src":"1862:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3015,"type":"function (address) view returns (bool)","value":"_isController"},"id":2969,"name":"Identifier","src":"1870:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":2970,"name":"Identifier","src":"1884:3:20"}],"id":2971,"name":"MemberAccess","src":"1884:10:20"}],"id":2972,"name":"FunctionCall","src":"1870:25:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":2973,"name":"Literal","src":"1897:28:20"}],"id":2974,"name":"FunctionCall","src":"1862:64:20"}],"id":2975,"name":"ExpressionStatement","src":"1862:64:20"},{"id":2976,"name":"PlaceholderStatement","src":"1936:1:20"}],"id":2977,"name":"Block","src":"1852:92:20"}],"id":2978,"name":"ModifierDefinition","src":"1826:118:20"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2979,"name":"ParameterList","src":"2022:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2980,"name":"Identifier","src":"2035:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":2981,"name":"Identifier","src":"2043:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":2982,"name":"Identifier","src":"2052:3:20"}],"id":2983,"name":"MemberAccess","src":"2052:10:20"}],"id":2984,"name":"FunctionCall","src":"2043:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2985,"name":"Literal","src":"2065:24:20"}],"id":2986,"name":"FunctionCall","src":"2035:55:20"}],"id":2987,"name":"ExpressionStatement","src":"2035:55:20"},{"id":2988,"name":"PlaceholderStatement","src":"2100:1:20"}],"id":2989,"name":"Block","src":"2025:83:20"}],"id":2990,"name":"ModifierDefinition","src":"2004:104:20"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":3033,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2991,"name":"ParameterList","src":"2192:2:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":2998,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2992,"name":"ElementaryTypeName","src":"2216:7:20"}],"id":2993,"name":"VariableDeclaration","src":"2216:7:20"}],"id":2994,"name":"ParameterList","src":"2215:9:20"},{"children":[{"attributes":{"functionReturnParameters":2994},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"bytes32","value":"_controllerNode"},"id":2995,"name":"Identifier","src":"2242:15:20"}],"id":2996,"name":"Return","src":"2235:22:20"}],"id":2997,"name":"Block","src":"2225:39:20"}],"id":2998,"name":"FunctionDefinition","src":"2169:95:20"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":3033,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3015,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2999,"name":"ElementaryTypeName","src":"2355:7:20"}],"id":3000,"name":"VariableDeclaration","src":"2355:16:20"}],"id":3001,"name":"ParameterList","src":"2354:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":3015,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3002,"name":"ElementaryTypeName","src":"2396:4:20"}],"id":3003,"name":"VariableDeclaration","src":"2396:4:20"}],"id":3004,"name":"ParameterList","src":"2395:6:20"},{"children":[{"attributes":{"functionReturnParameters":3004},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":3084,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3092,"type":"type(contract IController)","value":"IController"},"id":3005,"name":"Identifier","src":"2419:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3571,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3006,"name":"Identifier","src":"2431:11:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"bytes32","value":"_controllerNode"},"id":3007,"name":"Identifier","src":"2443:15:20"}],"id":3008,"name":"FunctionCall","src":"2431:28:20"}],"id":3009,"name":"FunctionCall","src":"2419:41:20"}],"id":3010,"name":"MemberAccess","src":"2419:54:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3000,"type":"address","value":"_account"},"id":3011,"name":"Identifier","src":"2474:8:20"}],"id":3012,"name":"FunctionCall","src":"2419:64:20"}],"id":3013,"name":"Return","src":"2412:71:20"}],"id":3014,"name":"Block","src":"2402:88:20"}],"id":3015,"name":"FunctionDefinition","src":"2332:158:20"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":3033,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3032,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3016,"name":"ElementaryTypeName","src":"2572:7:20"}],"id":3017,"name":"VariableDeclaration","src":"2572:16:20"}],"id":3018,"name":"ParameterList","src":"2571:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":3032,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3019,"name":"ElementaryTypeName","src":"2613:4:20"}],"id":3020,"name":"VariableDeclaration","src":"2613:4:20"}],"id":3021,"name":"ParameterList","src":"2612:6:20"},{"children":[{"attributes":{"functionReturnParameters":3021},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":3091,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3092,"type":"type(contract IController)","value":"IController"},"id":3022,"name":"Identifier","src":"2636:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3571,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3023,"name":"Identifier","src":"2648:11:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"bytes32","value":"_controllerNode"},"id":3024,"name":"Identifier","src":"2660:15:20"}],"id":3025,"name":"FunctionCall","src":"2648:28:20"}],"id":3026,"name":"FunctionCall","src":"2636:41:20"}],"id":3027,"name":"MemberAccess","src":"2636:49:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3017,"type":"address","value":"_account"},"id":3028,"name":"Identifier","src":"2686:8:20"}],"id":3029,"name":"FunctionCall","src":"2636:59:20"}],"id":3030,"name":"Return","src":"2629:66:20"}],"id":3031,"name":"Block","src":"2619:83:20"}],"id":3032,"name":"FunctionDefinition","src":"2554:148:20"}],"id":3033,"name":"ContractDefinition","src":"955:1749:20"}],"id":3034,"name":"SourceUnit","src":"772:1933:20"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[3572]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3529,"name":"PragmaDirective","src":"773:24:21"},{"attributes":{"SourceUnit":4139,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":3573,"symbolAliases":[null],"unitAlias":""},"id":3530,"name":"ImportDirective","src":"799:34:21"},{"attributes":{"SourceUnit":4313,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":3573,"symbolAliases":[null],"unitAlias":""},"id":3531,"name":"ImportDirective","src":"834:45:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[3572],"name":"ENSResolvable","scope":3573},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":3572,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3532,"name":"ElementaryTypeName","src":"1109:7:21"}],"id":3533,"name":"VariableDeclaration","src":"1109:28:21"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3572,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":3543,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3534,"name":"ElementaryTypeName","src":"1205:7:21"}],"id":3535,"name":"VariableDeclaration","src":"1205:16:21"}],"id":3536,"name":"ParameterList","src":"1204:18:21"},{"attributes":{"parameters":[null]},"children":[],"id":3537,"name":"ParameterList","src":"1232:0:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3533,"type":"address","value":"_ensRegistry"},"id":3538,"name":"Identifier","src":"1242:12:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3535,"type":"address","value":"_ensReg_"},"id":3539,"name":"Identifier","src":"1257:8:21"}],"id":3540,"name":"Assignment","src":"1242:23:21"}],"id":3541,"name":"ExpressionStatement","src":"1242:23:21"}],"id":3542,"name":"Block","src":"1232:40:21"}],"id":3543,"name":"FunctionDefinition","src":"1193:79:21"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":3572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3544,"name":"ParameterList","src":"1384:2:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":3551,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3545,"name":"ElementaryTypeName","src":"1410:7:21"}],"id":3546,"name":"VariableDeclaration","src":"1410:7:21"}],"id":3547,"name":"ParameterList","src":"1409:9:21"},{"children":[{"attributes":{"functionReturnParameters":3547},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3533,"type":"address","value":"_ensRegistry"},"id":3548,"name":"Identifier","src":"1436:12:21"}],"id":3549,"name":"Return","src":"1429:19:21"}],"id":3550,"name":"Block","src":"1419:36:21"}],"id":3551,"name":"FunctionDefinition","src":"1364:91:21"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":3572,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3571,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3552,"name":"ElementaryTypeName","src":"1652:7:21"}],"id":3553,"name":"VariableDeclaration","src":"1652:13:21"}],"id":3554,"name":"ParameterList","src":"1651:15:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":3571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3555,"name":"ElementaryTypeName","src":"1690:7:21"}],"id":3556,"name":"VariableDeclaration","src":"1690:7:21"}],"id":3557,"name":"ParameterList","src":"1689:9:21"},{"children":[{"attributes":{"functionReturnParameters":3557},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":4549,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4312,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":3558,"name":"Identifier","src":"1716:14:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":4114,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4138,"type":"type(contract ENS)","value":"ENS"},"id":3559,"name":"Identifier","src":"1731:3:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3533,"type":"address","value":"_ensRegistry"},"id":3560,"name":"Identifier","src":"1735:12:21"}],"id":3561,"name":"FunctionCall","src":"1731:17:21"}],"id":3562,"name":"MemberAccess","src":"1731:26:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3553,"type":"bytes32","value":"_node"},"id":3563,"name":"Identifier","src":"1758:5:21"}],"id":3564,"name":"FunctionCall","src":"1731:33:21"}],"id":3565,"name":"FunctionCall","src":"1716:49:21"}],"id":3566,"name":"MemberAccess","src":"1716:54:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3553,"type":"bytes32","value":"_node"},"id":3567,"name":"Identifier","src":"1771:5:21"}],"id":3568,"name":"FunctionCall","src":"1716:61:21"}],"id":3569,"name":"Return","src":"1709:68:21"}],"id":3570,"name":"Block","src":"1699:85:21"}],"id":3571,"name":"FunctionDefinition","src":"1631:153:21"}],"id":3572,"name":"ContractDefinition","src":"1008:778:21"}],"id":3573,"name":"SourceUnit","src":"773:1014:21"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[4001]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3846,"name":"PragmaDirective","src":"767:24:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[4001],"name":"Ownable","scope":4002},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3852,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3847,"name":"ElementaryTypeName","src":"1199:7:22"}],"id":3848,"name":"VariableDeclaration","src":"1199:13:22"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3852,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3849,"name":"ElementaryTypeName","src":"1214:7:22"}],"id":3850,"name":"VariableDeclaration","src":"1214:11:22"}],"id":3851,"name":"ParameterList","src":"1198:28:22"}],"id":3852,"name":"EventDefinition","src":"1172:55:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":3856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3853,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":3854,"name":"VariableDeclaration","src":"1254:15:22"}],"id":3855,"name":"ParameterList","src":"1253:17:22"}],"id":3856,"name":"EventDefinition","src":"1232:39:22"},{"attributes":{"constant":false,"name":"_owner","scope":4001,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3857,"name":"ElementaryTypeName","src":"1277:15:22"}],"id":3858,"name":"VariableDeclaration","src":"1277:30:22"},{"attributes":{"constant":false,"name":"_isTransferable","scope":4001,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3859,"name":"ElementaryTypeName","src":"1313:4:22"}],"id":3860,"name":"VariableDeclaration","src":"1313:28:22"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4001,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":3891,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3861,"name":"ElementaryTypeName","src":"1476:15:22"}],"id":3862,"name":"VariableDeclaration","src":"1476:25:22"},{"attributes":{"constant":false,"name":"_transferable_","scope":3891,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3863,"name":"ElementaryTypeName","src":"1503:4:22"}],"id":3864,"name":"VariableDeclaration","src":"1503:19:22"}],"id":3865,"name":"ParameterList","src":"1475:48:22"},{"attributes":{"parameters":[null]},"children":[],"id":3866,"name":"ParameterList","src":"1533:0:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3867,"name":"Identifier","src":"1543:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"address payable","value":"_account_"},"id":3868,"name":"Identifier","src":"1552:9:22"}],"id":3869,"name":"Assignment","src":"1543:18:22"}],"id":3870,"name":"ExpressionStatement","src":"1543:18:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3871,"name":"Identifier","src":"1571:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3864,"type":"bool","value":"_transferable_"},"id":3872,"name":"Identifier","src":"1589:14:22"}],"id":3873,"name":"Assignment","src":"1571:32:22"}],"id":3874,"name":"ExpressionStatement","src":"1571:32:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3875,"name":"Identifier","src":"1687:15:22"}],"id":3876,"name":"UnaryOperation","src":"1686:16:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3856,"type":"function (address)","value":"LockedOwnership"},"id":3877,"name":"Identifier","src":"1723:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"address payable","value":"_account_"},"id":3878,"name":"Identifier","src":"1739:9:22"}],"id":3879,"name":"FunctionCall","src":"1723:26:22"}],"id":3880,"name":"EmitStatement","src":"1718:31:22"}],"id":3881,"name":"Block","src":"1704:56:22"}],"id":3882,"name":"IfStatement","src":"1682:78:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"function (address,address)","value":"TransferredOwnership"},"id":3883,"name":"Identifier","src":"1774:20:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3884,"name":"ElementaryTypeNameExpression","src":"1795:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3885,"name":"Literal","src":"1803:1:22"}],"id":3886,"name":"FunctionCall","src":"1795:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"address payable","value":"_account_"},"id":3887,"name":"Identifier","src":"1807:9:22"}],"id":3888,"name":"FunctionCall","src":"1774:43:22"}],"id":3889,"name":"EmitStatement","src":"1769:48:22"}],"id":3890,"name":"Block","src":"1533:291:22"}],"id":3891,"name":"FunctionDefinition","src":"1464:360:22"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3892,"name":"ParameterList","src":"1919:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3893,"name":"Identifier","src":"1932:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4000,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3894,"name":"Identifier","src":"1940:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3895,"name":"Identifier","src":"1949:3:22"}],"id":3896,"name":"MemberAccess","src":"1949:10:22"}],"id":3897,"name":"FunctionCall","src":"1940:20:22"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":3898,"name":"Literal","src":"1962:24:22"}],"id":3899,"name":"FunctionCall","src":"1932:55:22"}],"id":3900,"name":"ExpressionStatement","src":"1932:55:22"},{"id":3901,"name":"PlaceholderStatement","src":"1997:1:22"}],"id":3902,"name":"Block","src":"1922:83:22"}],"id":3903,"name":"ModifierDefinition","src":"1901:104:22"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":4001,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3948,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3904,"name":"ElementaryTypeName","src":"2274:15:22"}],"id":3905,"name":"VariableDeclaration","src":"2274:24:22"},{"attributes":{"constant":false,"name":"_transferable","scope":3948,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3906,"name":"ElementaryTypeName","src":"2300:4:22"}],"id":3907,"name":"VariableDeclaration","src":"2300:18:22"}],"id":3908,"name":"ParameterList","src":"2273:46:22"},{"attributes":{"parameters":[null]},"children":[],"id":3911,"name":"ParameterList","src":"2339:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3909,"name":"Identifier","src":"2329:9:22"}],"id":3910,"name":"ModifierInvocation","src":"2329:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3912,"name":"Identifier","src":"2404:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3913,"name":"Identifier","src":"2412:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3914,"name":"Literal","src":"2429:31:22"}],"id":3915,"name":"FunctionCall","src":"2404:57:22"}],"id":3916,"name":"ExpressionStatement","src":"2404:57:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3917,"name":"Identifier","src":"2534:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3905,"type":"address payable","value":"_account"},"id":3918,"name":"Identifier","src":"2542:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3919,"name":"ElementaryTypeNameExpression","src":"2554:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3920,"name":"Literal","src":"2562:1:22"}],"id":3921,"name":"FunctionCall","src":"2554:10:22"}],"id":3922,"name":"BinaryOperation","src":"2542:22:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":3923,"name":"Literal","src":"2566:37:22"}],"id":3924,"name":"FunctionCall","src":"2534:70:22"}],"id":3925,"name":"ExpressionStatement","src":"2534:70:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3926,"name":"Identifier","src":"2689:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3907,"type":"bool","value":"_transferable"},"id":3927,"name":"Identifier","src":"2707:13:22"}],"id":3928,"name":"Assignment","src":"2689:31:22"}],"id":3929,"name":"ExpressionStatement","src":"2689:31:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3907,"type":"bool","value":"_transferable"},"id":3930,"name":"Identifier","src":"2804:13:22"}],"id":3931,"name":"UnaryOperation","src":"2803:14:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3856,"type":"function (address)","value":"LockedOwnership"},"id":3932,"name":"Identifier","src":"2838:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3905,"type":"address payable","value":"_account"},"id":3933,"name":"Identifier","src":"2854:8:22"}],"id":3934,"name":"FunctionCall","src":"2838:25:22"}],"id":3935,"name":"EmitStatement","src":"2833:30:22"}],"id":3936,"name":"Block","src":"2819:55:22"}],"id":3937,"name":"IfStatement","src":"2799:75:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"function (address,address)","value":"TransferredOwnership"},"id":3938,"name":"Identifier","src":"2934:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3939,"name":"Identifier","src":"2955:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3905,"type":"address payable","value":"_account"},"id":3940,"name":"Identifier","src":"2963:8:22"}],"id":3941,"name":"FunctionCall","src":"2934:38:22"}],"id":3942,"name":"EmitStatement","src":"2929:43:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3943,"name":"Identifier","src":"3032:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3905,"type":"address payable","value":"_account"},"id":3944,"name":"Identifier","src":"3041:8:22"}],"id":3945,"name":"Assignment","src":"3032:17:22"}],"id":3946,"name":"ExpressionStatement","src":"3032:17:22"}],"id":3947,"name":"Block","src":"2339:717:22"}],"id":3948,"name":"FunctionDefinition","src":"2247:809:22"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":4001,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3949,"name":"ParameterList","src":"3196:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":3956,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3950,"name":"ElementaryTypeName","src":"3222:4:22"}],"id":3951,"name":"VariableDeclaration","src":"3222:4:22"}],"id":3952,"name":"ParameterList","src":"3221:6:22"},{"children":[{"attributes":{"functionReturnParameters":3952},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3953,"name":"Identifier","src":"3245:15:22"}],"id":3954,"name":"Return","src":"3238:22:22"}],"id":3955,"name":"Block","src":"3228:39:22"}],"id":3956,"name":"FunctionDefinition","src":"3173:94:22"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":4001,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3957,"name":"ParameterList","src":"3569:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":3960,"name":"ParameterList","src":"3591:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3958,"name":"Identifier","src":"3581:9:22"}],"id":3959,"name":"ModifierInvocation","src":"3581:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3961,"name":"Identifier","src":"3656:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3962,"name":"Identifier","src":"3664:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3963,"name":"Literal","src":"3681:31:22"}],"id":3964,"name":"FunctionCall","src":"3656:57:22"}],"id":3965,"name":"ExpressionStatement","src":"3656:57:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3966,"name":"Identifier","src":"3767:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3967,"name":"ElementaryTypeNameExpression","src":"3776:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3968,"name":"Literal","src":"3784:1:22"}],"id":3969,"name":"FunctionCall","src":"3776:10:22"}],"id":3970,"name":"Assignment","src":"3767:19:22"}],"id":3971,"name":"ExpressionStatement","src":"3767:19:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"function (address,address)","value":"TransferredOwnership"},"id":3972,"name":"Identifier","src":"3802:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3973,"name":"Identifier","src":"3823:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3974,"name":"ElementaryTypeNameExpression","src":"3831:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3975,"name":"Literal","src":"3839:1:22"}],"id":3976,"name":"FunctionCall","src":"3831:10:22"}],"id":3977,"name":"FunctionCall","src":"3802:40:22"}],"id":3978,"name":"EmitStatement","src":"3797:45:22"}],"id":3979,"name":"Block","src":"3591:258:22"}],"id":3980,"name":"FunctionDefinition","src":"3543:306:22"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4001,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3981,"name":"ParameterList","src":"3946:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":3988,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3982,"name":"ElementaryTypeName","src":"3970:15:22"}],"id":3983,"name":"VariableDeclaration","src":"3970:15:22"}],"id":3984,"name":"ParameterList","src":"3969:17:22"},{"children":[{"attributes":{"functionReturnParameters":3984},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3985,"name":"Identifier","src":"4004:6:22"}],"id":3986,"name":"Return","src":"3997:13:22"}],"id":3987,"name":"Block","src":"3987:30:22"}],"id":3988,"name":"FunctionDefinition","src":"3932:85:22"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":4001,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":4000,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3989,"name":"ElementaryTypeName","src":"4141:7:22"}],"id":3990,"name":"VariableDeclaration","src":"4141:16:22"}],"id":3991,"name":"ParameterList","src":"4140:18:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":4000,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3992,"name":"ElementaryTypeName","src":"4182:4:22"}],"id":3993,"name":"VariableDeclaration","src":"4182:4:22"}],"id":3994,"name":"ParameterList","src":"4181:6:22"},{"children":[{"attributes":{"functionReturnParameters":3994},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"address","value":"_address"},"id":3995,"name":"Identifier","src":"4205:8:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3996,"name":"Identifier","src":"4217:6:22"}],"id":3997,"name":"BinaryOperation","src":"4205:18:22"}],"id":3998,"name":"Return","src":"4198:25:22"}],"id":3999,"name":"Block","src":"4188:42:22"}],"id":4000,"name":"FunctionDefinition","src":"4123:107:22"}],"id":4001,"name":"ContractDefinition","src":"1149:3083:22"}],"id":4002,"name":"SourceUnit","src":"767:3466:22"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[3073]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3035,"name":"PragmaDirective","src":"773:24:23"},{"attributes":{"SourceUnit":3626,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3074,"symbolAliases":[null],"unitAlias":""},"id":3036,"name":"ImportDirective","src":"799:32:23"},{"attributes":{"SourceUnit":3845,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":3074,"symbolAliases":[null],"unitAlias":""},"id":3037,"name":"ImportDirective","src":"832:36:23"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[3073],"name":"Transferrable","scope":3074},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3844,"type":"library SafeERC20"},"id":3038,"name":"UserDefinedTypeName","src":"996:9:23"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3039,"name":"UserDefinedTypeName","src":"1010:5:23"}],"id":3040,"name":"UsingForDirective","src":"990:26:23"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":3073,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3072,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3041,"name":"ElementaryTypeName","src":"1389:15:23"}],"id":3042,"name":"VariableDeclaration","src":"1389:19:23"},{"attributes":{"constant":false,"name":"_asset","scope":3072,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3043,"name":"ElementaryTypeName","src":"1410:7:23"}],"id":3044,"name":"VariableDeclaration","src":"1410:14:23"},{"attributes":{"constant":false,"name":"_amount","scope":3072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3045,"name":"ElementaryTypeName","src":"1426:7:23"}],"id":3046,"name":"VariableDeclaration","src":"1426:15:23"}],"id":3047,"name":"ParameterList","src":"1388:54:23"},{"attributes":{"parameters":[null]},"children":[],"id":3048,"name":"ParameterList","src":"1452:0:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3044,"type":"address","value":"_asset"},"id":3049,"name":"Identifier","src":"1510:6:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3050,"name":"ElementaryTypeNameExpression","src":"1520:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3051,"name":"Literal","src":"1528:1:23"}],"id":3052,"name":"FunctionCall","src":"1520:10:23"}],"id":3053,"name":"BinaryOperation","src":"1510:20:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3042,"type":"address payable","value":"_to"},"id":3054,"name":"Identifier","src":"1546:3:23"}],"id":3056,"name":"MemberAccess","src":"1546:12:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3046,"type":"uint256","value":"_amount"},"id":3057,"name":"Identifier","src":"1559:7:23"}],"id":3058,"name":"FunctionCall","src":"1546:21:23"}],"id":3059,"name":"ExpressionStatement","src":"1546:21:23"}],"id":3060,"name":"Block","src":"1532:46:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":3658,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3625,"type":"type(contract ERC20)","value":"ERC20"},"id":3061,"name":"Identifier","src":"1598:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3044,"type":"address","value":"_asset"},"id":3062,"name":"Identifier","src":"1604:6:23"}],"id":3063,"name":"FunctionCall","src":"1598:13:23"}],"id":3064,"name":"MemberAccess","src":"1598:26:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3042,"type":"address payable","value":"_to"},"id":3065,"name":"Identifier","src":"1625:3:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3046,"type":"uint256","value":"_amount"},"id":3066,"name":"Identifier","src":"1630:7:23"}],"id":3067,"name":"FunctionCall","src":"1598:40:23"}],"id":3068,"name":"ExpressionStatement","src":"1598:40:23"}],"id":3069,"name":"Block","src":"1584:65:23"}],"id":3070,"name":"IfStatement","src":"1506:143:23"}],"id":3071,"name":"Block","src":"1452:203:23"}],"id":3072,"name":"FunctionDefinition","src":"1366:289:23"}],"id":3073,"name":"ContractDefinition","src":"961:696:23"}],"id":3074,"name":"SourceUnit","src":"773:885:23"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[87],"TokenWhitelist":[987]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"774:24:24"},{"attributes":{"SourceUnit":3034,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"800:38:24"},{"attributes":{"SourceUnit":3074,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"839:39:24"},{"attributes":{"SourceUnit":2938,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"879:36:24"},{"attributes":{"SourceUnit":2827,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"916:33:24"},{"attributes":{"SourceUnit":1121,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"950:34:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[87],"name":"ITokenWhitelist","scope":988},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7,"name":"ElementaryTypeName","src":"1124:7:24"}],"id":8,"name":"VariableDeclaration","src":"1124:7:24"}],"id":9,"name":"ParameterList","src":"1123:9:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":10,"name":"ElementaryTypeName","src":"1156:6:24"}],"id":11,"name":"VariableDeclaration","src":"1156:13:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":12,"name":"ElementaryTypeName","src":"1171:7:24"}],"id":13,"name":"VariableDeclaration","src":"1171:7:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14,"name":"ElementaryTypeName","src":"1180:7:24"}],"id":15,"name":"VariableDeclaration","src":"1180:7:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":16,"name":"ElementaryTypeName","src":"1189:4:24"}],"id":17,"name":"VariableDeclaration","src":"1189:4:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":18,"name":"ElementaryTypeName","src":"1195:4:24"}],"id":19,"name":"VariableDeclaration","src":"1195:4:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":20,"name":"ElementaryTypeName","src":"1201:4:24"}],"id":21,"name":"VariableDeclaration","src":"1201:4:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":22,"name":"ElementaryTypeName","src":"1207:7:24"}],"id":23,"name":"VariableDeclaration","src":"1207:7:24"}],"id":24,"name":"ParameterList","src":"1155:60:24"}],"id":25,"name":"FunctionDefinition","src":"1102:114:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":26,"name":"ParameterList","src":"1248:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":27,"name":"ElementaryTypeName","src":"1274:6:24"}],"id":28,"name":"VariableDeclaration","src":"1274:13:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":29,"name":"ElementaryTypeName","src":"1289:7:24"}],"id":30,"name":"VariableDeclaration","src":"1289:7:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":31,"name":"ElementaryTypeName","src":"1298:7:24"}],"id":32,"name":"VariableDeclaration","src":"1298:7:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":33,"name":"ElementaryTypeName","src":"1307:4:24"}],"id":34,"name":"VariableDeclaration","src":"1307:4:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":35,"name":"ElementaryTypeName","src":"1313:4:24"}],"id":36,"name":"VariableDeclaration","src":"1313:4:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":37,"name":"ElementaryTypeName","src":"1319:4:24"}],"id":38,"name":"VariableDeclaration","src":"1319:4:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":39,"name":"ElementaryTypeName","src":"1325:7:24"}],"id":40,"name":"VariableDeclaration","src":"1325:7:24"}],"id":41,"name":"ParameterList","src":"1273:60:24"}],"id":42,"name":"FunctionDefinition","src":"1222:112:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":43,"name":"ParameterList","src":"1366:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":48,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":44,"name":"ElementaryTypeName","src":"1392:7:24"}],"id":45,"name":"ArrayTypeName","src":"1392:9:24"}],"id":46,"name":"VariableDeclaration","src":"1392:16:24"}],"id":47,"name":"ParameterList","src":"1391:18:24"}],"id":48,"name":"FunctionDefinition","src":"1340:70:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":49,"name":"ParameterList","src":"1441:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":54,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":50,"name":"ElementaryTypeName","src":"1467:7:24"}],"id":51,"name":"ArrayTypeName","src":"1467:9:24"}],"id":52,"name":"VariableDeclaration","src":"1467:16:24"}],"id":53,"name":"ParameterList","src":"1466:18:24"}],"id":54,"name":"FunctionDefinition","src":"1416:69:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":61,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":55,"name":"ElementaryTypeName","src":"1518:6:24"}],"id":56,"name":"VariableDeclaration","src":"1518:6:24"}],"id":57,"name":"ParameterList","src":"1517:8:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":61,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":58,"name":"ElementaryTypeName","src":"1549:4:24"}],"id":59,"name":"VariableDeclaration","src":"1549:4:24"}],"id":60,"name":"ParameterList","src":"1548:6:24"}],"id":61,"name":"FunctionDefinition","src":"1491:64:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":72,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":62,"name":"ElementaryTypeName","src":"1597:7:24"}],"id":63,"name":"VariableDeclaration","src":"1597:7:24"},{"attributes":{"constant":false,"name":"","scope":72,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":64,"name":"ElementaryTypeName","src":"1606:5:24"}],"id":65,"name":"VariableDeclaration","src":"1606:14:24"}],"id":66,"name":"ParameterList","src":"1596:25:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":72,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":67,"name":"ElementaryTypeName","src":"1645:7:24"}],"id":68,"name":"VariableDeclaration","src":"1645:7:24"},{"attributes":{"constant":false,"name":"","scope":72,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":69,"name":"ElementaryTypeName","src":"1654:7:24"}],"id":70,"name":"VariableDeclaration","src":"1654:7:24"}],"id":71,"name":"ParameterList","src":"1644:18:24"}],"id":72,"name":"FunctionDefinition","src":"1561:102:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":73,"name":"ParameterList","src":"1688:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":77,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":74,"name":"ElementaryTypeName","src":"1714:7:24"}],"id":75,"name":"VariableDeclaration","src":"1714:7:24"}],"id":76,"name":"ParameterList","src":"1713:9:24"}],"id":77,"name":"FunctionDefinition","src":"1669:54:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":87,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":86,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":78,"name":"ElementaryTypeName","src":"1754:7:24"}],"id":79,"name":"VariableDeclaration","src":"1754:7:24"},{"attributes":{"constant":false,"name":"","scope":86,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":80,"name":"ElementaryTypeName","src":"1763:7:24"}],"id":81,"name":"VariableDeclaration","src":"1763:7:24"},{"attributes":{"constant":false,"name":"","scope":86,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":82,"name":"ElementaryTypeName","src":"1772:7:24"}],"id":83,"name":"VariableDeclaration","src":"1772:7:24"}],"id":84,"name":"ParameterList","src":"1753:27:24"},{"attributes":{"parameters":[null]},"children":[],"id":85,"name":"ParameterList","src":"1789:0:24"}],"id":86,"name":"FunctionDefinition","src":"1729:61:24"}],"id":87,"name":"ContractDefinition","src":"1070:722:24"},{"attributes":{"contractDependencies":[3033,3073,3572],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[987,3073,3033,3572],"name":"TokenWhitelist","scope":988},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3572,"type":"contract ENSResolvable"},"id":88,"name":"UserDefinedTypeName","src":"1966:13:24"}],"id":89,"name":"InheritanceSpecifier","src":"1966:13:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":3033,"type":"contract Controllable"},"id":90,"name":"UserDefinedTypeName","src":"1981:12:24"}],"id":91,"name":"InheritanceSpecifier","src":"1981:12:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3073,"type":"contract Transferrable"},"id":92,"name":"UserDefinedTypeName","src":"1995:13:24"}],"id":93,"name":"InheritanceSpecifier","src":"1995:13:24"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":2826,"type":"library strings"},"id":94,"name":"UserDefinedTypeName","src":"2021:7:24"}],"id":95,"name":"UsingForDirective","src":"2015:20:24"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1120,"type":"library SafeMath"},"id":96,"name":"UserDefinedTypeName","src":"2046:8:24"},{"attributes":{"name":"uint256","type":"uint256"},"id":97,"name":"ElementaryTypeName","src":"2059:7:24"}],"id":98,"name":"UsingForDirective","src":"2040:27:24"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":2937,"type":"library BytesUtils"},"id":99,"name":"UserDefinedTypeName","src":"2078:10:24"},{"attributes":{"name":"bytes","type":"bytes"},"id":100,"name":"ElementaryTypeName","src":"2093:5:24"}],"id":101,"name":"UsingForDirective","src":"2072:27:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":109,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":102,"name":"ElementaryTypeName","src":"2128:7:24"}],"id":103,"name":"VariableDeclaration","src":"2128:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":109,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":104,"name":"ElementaryTypeName","src":"2145:7:24"}],"id":105,"name":"VariableDeclaration","src":"2145:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":106,"name":"ElementaryTypeName","src":"2161:7:24"}],"id":107,"name":"VariableDeclaration","src":"2161:13:24"}],"id":108,"name":"ParameterList","src":"2127:48:24"}],"id":109,"name":"EventDefinition","src":"2105:71:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":117,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":110,"name":"ElementaryTypeName","src":"2209:7:24"}],"id":111,"name":"VariableDeclaration","src":"2209:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":117,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":112,"name":"ElementaryTypeName","src":"2226:7:24"}],"id":113,"name":"VariableDeclaration","src":"2226:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":117,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":114,"name":"ElementaryTypeName","src":"2242:4:24"}],"id":115,"name":"VariableDeclaration","src":"2242:14:24"}],"id":116,"name":"ParameterList","src":"2208:49:24"}],"id":117,"name":"EventDefinition","src":"2182:76:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":125,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":118,"name":"ElementaryTypeName","src":"2292:7:24"}],"id":119,"name":"VariableDeclaration","src":"2292:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":125,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":120,"name":"ElementaryTypeName","src":"2309:7:24"}],"id":121,"name":"VariableDeclaration","src":"2309:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":125,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":122,"name":"ElementaryTypeName","src":"2325:4:24"}],"id":123,"name":"VariableDeclaration","src":"2325:16:24"}],"id":124,"name":"ParameterList","src":"2291:51:24"}],"id":125,"name":"EventDefinition","src":"2263:80:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":139,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":126,"name":"ElementaryTypeName","src":"2366:7:24"}],"id":127,"name":"VariableDeclaration","src":"2366:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":139,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":128,"name":"ElementaryTypeName","src":"2383:7:24"}],"id":129,"name":"VariableDeclaration","src":"2383:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":139,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":130,"name":"ElementaryTypeName","src":"2399:6:24"}],"id":131,"name":"VariableDeclaration","src":"2399:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":139,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":132,"name":"ElementaryTypeName","src":"2415:7:24"}],"id":133,"name":"VariableDeclaration","src":"2415:18:24"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":139,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":134,"name":"ElementaryTypeName","src":"2435:4:24"}],"id":135,"name":"VariableDeclaration","src":"2435:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":139,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":136,"name":"ElementaryTypeName","src":"2451:4:24"}],"id":137,"name":"VariableDeclaration","src":"2451:16:24"}],"id":138,"name":"ParameterList","src":"2365:103:24"}],"id":139,"name":"EventDefinition","src":"2349:120:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":145,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":140,"name":"ElementaryTypeName","src":"2493:7:24"}],"id":141,"name":"VariableDeclaration","src":"2493:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":145,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":142,"name":"ElementaryTypeName","src":"2510:7:24"}],"id":143,"name":"VariableDeclaration","src":"2510:14:24"}],"id":144,"name":"ParameterList","src":"2492:33:24"}],"id":145,"name":"EventDefinition","src":"2474:52:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":149,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":146,"name":"ElementaryTypeName","src":"2552:6:24"}],"id":147,"name":"VariableDeclaration","src":"2552:16:24"}],"id":148,"name":"ParameterList","src":"2551:18:24"}],"id":149,"name":"EventDefinition","src":"2532:38:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":153,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":150,"name":"ElementaryTypeName","src":"2597:6:24"}],"id":151,"name":"VariableDeclaration","src":"2597:16:24"}],"id":152,"name":"ParameterList","src":"2596:18:24"}],"id":153,"name":"EventDefinition","src":"2575:40:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":159,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":154,"name":"ElementaryTypeName","src":"2647:7:24"}],"id":155,"name":"VariableDeclaration","src":"2647:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":159,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":156,"name":"ElementaryTypeName","src":"2663:6:24"}],"id":157,"name":"VariableDeclaration","src":"2663:16:24"}],"id":158,"name":"ParameterList","src":"2646:34:24"}],"id":159,"name":"EventDefinition","src":"2620:61:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":165,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":160,"name":"ElementaryTypeName","src":"2715:7:24"}],"id":161,"name":"VariableDeclaration","src":"2715:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":165,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":162,"name":"ElementaryTypeName","src":"2731:6:24"}],"id":163,"name":"VariableDeclaration","src":"2731:16:24"}],"id":164,"name":"ParameterList","src":"2714:34:24"}],"id":165,"name":"EventDefinition","src":"2686:63:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":173,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":166,"name":"ElementaryTypeName","src":"2769:7:24"}],"id":167,"name":"VariableDeclaration","src":"2769:11:24"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":173,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":168,"name":"ElementaryTypeName","src":"2782:7:24"}],"id":169,"name":"VariableDeclaration","src":"2782:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":173,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":170,"name":"ElementaryTypeName","src":"2798:7:24"}],"id":171,"name":"VariableDeclaration","src":"2798:15:24"}],"id":172,"name":"ParameterList","src":"2768:46:24"}],"id":173,"name":"EventDefinition","src":"2755:60:24"},{"attributes":{"constant":true,"name":"_APPROVE","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":174,"name":"ElementaryTypeName","src":"2924:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":175,"name":"Literal","src":"2959:10:24"}],"id":176,"name":"VariableDeclaration","src":"2924:45:24"},{"attributes":{"constant":true,"name":"_BURN","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":177,"name":"ElementaryTypeName","src":"3028:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":178,"name":"Literal","src":"3060:10:24"}],"id":179,"name":"VariableDeclaration","src":"3028:42:24"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":180,"name":"ElementaryTypeName","src":"3118:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":181,"name":"Literal","src":"3154:10:24"}],"id":182,"name":"VariableDeclaration","src":"3118:46:24"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":183,"name":"ElementaryTypeName","src":"3224:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":184,"name":"Literal","src":"3265:10:24"}],"id":185,"name":"VariableDeclaration","src":"3224:51:24"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":987,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":200,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":186,"name":"ElementaryTypeName","src":"3371:6:24"}],"id":187,"name":"VariableDeclaration","src":"3371:13:24"},{"attributes":{"constant":false,"name":"magnitude","scope":200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":188,"name":"ElementaryTypeName","src":"3410:7:24"}],"id":189,"name":"VariableDeclaration","src":"3410:17:24"},{"attributes":{"constant":false,"name":"rate","scope":200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":190,"name":"ElementaryTypeName","src":"3452:7:24"}],"id":191,"name":"VariableDeclaration","src":"3452:12:24"},{"attributes":{"constant":false,"name":"available","scope":200,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":192,"name":"ElementaryTypeName","src":"3504:4:24"}],"id":193,"name":"VariableDeclaration","src":"3504:14:24"},{"attributes":{"constant":false,"name":"loadable","scope":200,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":194,"name":"ElementaryTypeName","src":"3570:4:24"}],"id":195,"name":"VariableDeclaration","src":"3570:13:24"},{"attributes":{"constant":false,"name":"redeemable","scope":200,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":196,"name":"ElementaryTypeName","src":"3640:4:24"}],"id":197,"name":"VariableDeclaration","src":"3640:15:24"},{"attributes":{"constant":false,"name":"lastUpdate","scope":200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":198,"name":"ElementaryTypeName","src":"3724:7:24"}],"id":199,"name":"VariableDeclaration","src":"3724:18:24"}],"id":200,"name":"StructDefinition","src":"3348:433:24"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":987,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":201,"name":"ElementaryTypeName","src":"3795:7:24"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":200,"type":"struct TokenWhitelist.Token"},"id":202,"name":"UserDefinedTypeName","src":"3806:5:24"}],"id":203,"name":"Mapping","src":"3787:25:24"}],"id":204,"name":"VariableDeclaration","src":"3787:47:24"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":987,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":205,"name":"ElementaryTypeName","src":"4004:6:24"},{"attributes":{"name":"bool","type":"bool"},"id":206,"name":"ElementaryTypeName","src":"4014:4:24"}],"id":207,"name":"Mapping","src":"3996:23:24"}],"id":208,"name":"VariableDeclaration","src":"3996:50:24"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":987,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":209,"name":"ElementaryTypeName","src":"4053:7:24"}],"id":210,"name":"ArrayTypeName","src":"4053:9:24"}],"id":211,"name":"VariableDeclaration","src":"4053:36:24"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":987,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":212,"name":"ElementaryTypeName","src":"4182:7:24"}],"id":213,"name":"VariableDeclaration","src":"4182:34:24"},{"attributes":{"constant":false,"name":"_stablecoin","scope":987,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":214,"name":"ElementaryTypeName","src":"4266:7:24"}],"id":215,"name":"VariableDeclaration","src":"4266:27:24"},{"attributes":{"constant":false,"name":"_oracleNode","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":216,"name":"ElementaryTypeName","src":"4372:7:24"}],"id":217,"name":"VariableDeclaration","src":"4372:27:24"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":267,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":218,"name":"ElementaryTypeName","src":"4770:7:24"}],"id":219,"name":"VariableDeclaration","src":"4770:13:24"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":267,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":220,"name":"ElementaryTypeName","src":"4785:7:24"}],"id":221,"name":"VariableDeclaration","src":"4785:20:24"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":267,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":222,"name":"ElementaryTypeName","src":"4807:7:24"}],"id":223,"name":"VariableDeclaration","src":"4807:24:24"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":267,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":224,"name":"ElementaryTypeName","src":"4833:7:24"}],"id":225,"name":"VariableDeclaration","src":"4833:27:24"}],"id":226,"name":"ParameterList","src":"4769:92:24"},{"attributes":{"parameters":[null]},"children":[],"id":233,"name":"ParameterList","src":"4949:0:24"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3572,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":227,"name":"Identifier","src":"4885:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":219,"type":"address","value":"_ens_"},"id":228,"name":"Identifier","src":"4899:5:24"}],"id":229,"name":"ModifierInvocation","src":"4885:20:24"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3033,"type":"type(contract Controllable)","value":"Controllable"},"id":230,"name":"Identifier","src":"4914:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":223,"type":"bytes32","value":"_controllerNode_"},"id":231,"name":"Identifier","src":"4927:16:24"}],"id":232,"name":"ModifierInvocation","src":"4914:30:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":217,"type":"bytes32","value":"_oracleNode"},"id":234,"name":"Identifier","src":"4959:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":221,"type":"bytes32","value":"_oracleNode_"},"id":235,"name":"Identifier","src":"4973:12:24"}],"id":236,"name":"Assignment","src":"4959:26:24"}],"id":237,"name":"ExpressionStatement","src":"4959:26:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"address","value":"_stablecoin"},"id":238,"name":"Identifier","src":"4995:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":225,"type":"address","value":"_stablecoinAddress_"},"id":239,"name":"Identifier","src":"5009:19:24"}],"id":240,"name":"Assignment","src":"4995:33:24"}],"id":241,"name":"ExpressionStatement","src":"4995:33:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":242,"name":"Identifier","src":"5083:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":176,"type":"bytes4","value":"_APPROVE"},"id":243,"name":"Identifier","src":"5102:8:24"}],"id":244,"name":"IndexAccess","src":"5083:28:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":245,"name":"Literal","src":"5114:4:24"}],"id":246,"name":"Assignment","src":"5083:35:24"}],"id":247,"name":"ExpressionStatement","src":"5083:35:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":248,"name":"Identifier","src":"5128:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":179,"type":"bytes4","value":"_BURN"},"id":249,"name":"Identifier","src":"5147:5:24"}],"id":250,"name":"IndexAccess","src":"5128:25:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":251,"name":"Literal","src":"5156:4:24"}],"id":252,"name":"Assignment","src":"5128:32:24"}],"id":253,"name":"ExpressionStatement","src":"5128:32:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":254,"name":"Identifier","src":"5170:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":182,"type":"bytes4","value":"_TRANSFER"},"id":255,"name":"Identifier","src":"5189:9:24"}],"id":256,"name":"IndexAccess","src":"5170:29:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":257,"name":"Literal","src":"5202:4:24"}],"id":258,"name":"Assignment","src":"5170:36:24"}],"id":259,"name":"ExpressionStatement","src":"5170:36:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":260,"name":"Identifier","src":"5216:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":185,"type":"bytes4","value":"_TRANSFER_FROM"},"id":261,"name":"Identifier","src":"5235:14:24"}],"id":262,"name":"IndexAccess","src":"5216:34:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":263,"name":"Literal","src":"5253:4:24"}],"id":264,"name":"Assignment","src":"5216:41:24"}],"id":265,"name":"ExpressionStatement","src":"5216:41:24"}],"id":266,"name":"Block","src":"4949:315:24"}],"id":267,"name":"FunctionDefinition","src":"4758:506:24"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":268,"name":"ParameterList","src":"5296:2:24"},{"children":[{"attributes":{"assignments":[270]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":289,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":269,"name":"ElementaryTypeName","src":"5309:7:24"}],"id":270,"name":"VariableDeclaration","src":"5309:21:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3571,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":271,"name":"Identifier","src":"5333:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":217,"type":"bytes32","value":"_oracleNode"},"id":272,"name":"Identifier","src":"5345:11:24"}],"id":273,"name":"FunctionCall","src":"5333:24:24"}],"id":274,"name":"VariableDeclarationStatement","src":"5309:48:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":275,"name":"Identifier","src":"5367:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":276,"name":"Identifier","src":"5375:8:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":277,"name":"Identifier","src":"5384:3:24"}],"id":278,"name":"MemberAccess","src":"5384:10:24"}],"id":279,"name":"FunctionCall","src":"5375:20:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":280,"name":"Identifier","src":"5399:3:24"}],"id":281,"name":"MemberAccess","src":"5399:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"address","value":"oracleAddress"},"id":282,"name":"Identifier","src":"5413:13:24"}],"id":283,"name":"BinaryOperation","src":"5399:27:24"}],"id":284,"name":"BinaryOperation","src":"5375:51:24"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":285,"name":"Literal","src":"5428:24:24"}],"id":286,"name":"FunctionCall","src":"5367:86:24"}],"id":287,"name":"ExpressionStatement","src":"5367:86:24"},{"id":288,"name":"PlaceholderStatement","src":"5463:1:24"}],"id":289,"name":"Block","src":"5299:172:24"}],"id":290,"name":"ModifierDefinition","src":"5270:201:24"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":291,"name":"ElementaryTypeName","src":"6068:7:24"}],"id":292,"name":"ArrayTypeName","src":"6068:9:24"}],"id":293,"name":"VariableDeclaration","src":"6068:26:24"},{"attributes":{"constant":false,"name":"_symbols","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":294,"name":"ElementaryTypeName","src":"6104:7:24"}],"id":295,"name":"ArrayTypeName","src":"6104:9:24"}],"id":296,"name":"VariableDeclaration","src":"6104:27:24"},{"attributes":{"constant":false,"name":"_magnitude","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":297,"name":"ElementaryTypeName","src":"6141:7:24"}],"id":298,"name":"ArrayTypeName","src":"6141:9:24"}],"id":299,"name":"VariableDeclaration","src":"6141:29:24"},{"attributes":{"constant":false,"name":"_loadable","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":300,"name":"ElementaryTypeName","src":"6180:4:24"}],"id":301,"name":"ArrayTypeName","src":"6180:6:24"}],"id":302,"name":"VariableDeclaration","src":"6180:25:24"},{"attributes":{"constant":false,"name":"_redeemable","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":303,"name":"ElementaryTypeName","src":"6215:4:24"}],"id":304,"name":"ArrayTypeName","src":"6215:6:24"}],"id":305,"name":"VariableDeclaration","src":"6215:27:24"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":434,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":306,"name":"ElementaryTypeName","src":"6252:7:24"}],"id":307,"name":"VariableDeclaration","src":"6252:19:24"}],"id":308,"name":"ParameterList","src":"6058:219:24"},{"attributes":{"parameters":[null]},"children":[],"id":311,"name":"ParameterList","src":"6297:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":309,"name":"Identifier","src":"6287:9:24"}],"id":310,"name":"ModifierInvocation","src":"6287:9:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":312,"name":"Identifier","src":"6368:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":313,"name":"Identifier","src":"6389:7:24"}],"id":314,"name":"MemberAccess","src":"6389:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":296,"type":"bytes32[] calldata","value":"_symbols"},"id":315,"name":"Identifier","src":"6407:8:24"}],"id":316,"name":"MemberAccess","src":"6407:15:24"}],"id":317,"name":"BinaryOperation","src":"6389:33:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":318,"name":"Identifier","src":"6442:7:24"}],"id":319,"name":"MemberAccess","src":"6442:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"uint256[] calldata","value":"_magnitude"},"id":320,"name":"Identifier","src":"6460:10:24"}],"id":321,"name":"MemberAccess","src":"6460:17:24"}],"id":322,"name":"BinaryOperation","src":"6442:35:24"}],"id":323,"name":"BinaryOperation","src":"6389:88:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":324,"name":"Identifier","src":"6497:7:24"}],"id":325,"name":"MemberAccess","src":"6497:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":302,"type":"bool[] calldata","value":"_loadable"},"id":326,"name":"Identifier","src":"6515:9:24"}],"id":327,"name":"MemberAccess","src":"6515:16:24"}],"id":328,"name":"BinaryOperation","src":"6497:34:24"}],"id":329,"name":"BinaryOperation","src":"6389:142:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":330,"name":"Identifier","src":"6551:7:24"}],"id":331,"name":"MemberAccess","src":"6551:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":302,"type":"bool[] calldata","value":"_loadable"},"id":332,"name":"Identifier","src":"6569:9:24"}],"id":333,"name":"MemberAccess","src":"6569:16:24"}],"id":334,"name":"BinaryOperation","src":"6551:34:24"}],"id":335,"name":"BinaryOperation","src":"6389:196:24"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":336,"name":"Literal","src":"6599:32:24"}],"id":337,"name":"FunctionCall","src":"6368:273:24"}],"id":338,"name":"ExpressionStatement","src":"6368:273:24"},{"children":[{"attributes":{"assignments":[340]},"children":[{"attributes":{"constant":false,"name":"i","scope":432,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":339,"name":"ElementaryTypeName","src":"6715:7:24"}],"id":340,"name":"VariableDeclaration","src":"6715:9:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":341,"name":"Literal","src":"6727:1:24"}],"id":342,"name":"VariableDeclarationStatement","src":"6715:13:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":343,"name":"Identifier","src":"6730:1:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":344,"name":"Identifier","src":"6734:7:24"}],"id":345,"name":"MemberAccess","src":"6734:14:24"}],"id":346,"name":"BinaryOperation","src":"6730:18:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":347,"name":"Identifier","src":"6750:1:24"}],"id":348,"name":"UnaryOperation","src":"6750:3:24"}],"id":349,"name":"ExpressionStatement","src":"6750:3:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":350,"name":"Identifier","src":"6832:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":351,"name":"Identifier","src":"6841:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":352,"name":"Identifier","src":"6855:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":353,"name":"Identifier","src":"6863:1:24"}],"id":354,"name":"IndexAccess","src":"6855:10:24"}],"id":355,"name":"IndexAccess","src":"6841:25:24"}],"id":356,"name":"MemberAccess","src":"6841:35:24"}],"id":357,"name":"UnaryOperation","src":"6840:36:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":358,"name":"Literal","src":"6878:25:24"}],"id":359,"name":"FunctionCall","src":"6832:72:24"}],"id":360,"name":"ExpressionStatement","src":"6832:72:24"},{"attributes":{"assignments":[362]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":431,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":361,"name":"ElementaryTypeName","src":"6964:6:24"}],"id":362,"name":"VariableDeclaration","src":"6964:20:24"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":1375,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":1330,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":296,"type":"bytes32[] calldata","value":"_symbols"},"id":363,"name":"Identifier","src":"6987:8:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":364,"name":"Identifier","src":"6996:1:24"}],"id":365,"name":"IndexAccess","src":"6987:11:24"}],"id":366,"name":"MemberAccess","src":"6987:22:24"}],"id":367,"name":"FunctionCall","src":"6987:24:24"}],"id":368,"name":"MemberAccess","src":"6987:33:24"}],"id":369,"name":"FunctionCall","src":"6987:35:24"}],"id":370,"name":"VariableDeclarationStatement","src":"6964:58:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":371,"name":"Identifier","src":"7084:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":372,"name":"Identifier","src":"7098:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":373,"name":"Identifier","src":"7106:1:24"}],"id":374,"name":"IndexAccess","src":"7098:10:24"}],"id":375,"name":"IndexAccess","src":"7084:25:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":376,"name":"Identifier","src":"7112:5:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":362,"type":"string memory","value":"symbol"},"id":377,"name":"Identifier","src":"7144:6:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"uint256[] calldata","value":"_magnitude"},"id":378,"name":"Identifier","src":"7179:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":379,"name":"Identifier","src":"7190:1:24"}],"id":380,"name":"IndexAccess","src":"7179:13:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":381,"name":"Literal","src":"7216:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":382,"name":"Literal","src":"7246:4:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":302,"type":"bool[] calldata","value":"_loadable"},"id":383,"name":"Identifier","src":"7278:9:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":384,"name":"Identifier","src":"7288:1:24"}],"id":385,"name":"IndexAccess","src":"7278:12:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":305,"type":"bool[] calldata","value":"_redeemable"},"id":386,"name":"Identifier","src":"7320:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":387,"name":"Identifier","src":"7332:1:24"}],"id":388,"name":"IndexAccess","src":"7320:14:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":307,"type":"uint256","value":"_lastUpdate"},"id":389,"name":"Identifier","src":"7364:11:24"}],"id":390,"name":"FunctionCall","src":"7112:278:24"}],"id":391,"name":"Assignment","src":"7084:306:24"}],"id":392,"name":"ExpressionStatement","src":"7084:306:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":393,"name":"Identifier","src":"7462:18:24"}],"id":395,"name":"MemberAccess","src":"7462:23:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":396,"name":"Identifier","src":"7486:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":397,"name":"Identifier","src":"7494:1:24"}],"id":398,"name":"IndexAccess","src":"7486:10:24"}],"id":399,"name":"FunctionCall","src":"7462:35:24"}],"id":400,"name":"ExpressionStatement","src":"7462:35:24"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":305,"type":"bool[] calldata","value":"_redeemable"},"id":401,"name":"Identifier","src":"7587:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":402,"name":"Identifier","src":"7599:1:24"}],"id":403,"name":"IndexAccess","src":"7587:14:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":404,"name":"Identifier","src":"7621:18:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":405,"name":"Identifier","src":"7642:18:24"}],"id":406,"name":"MemberAccess","src":"7642:22:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":407,"name":"Literal","src":"7665:1:24"}],"id":408,"name":"FunctionCall","src":"7642:25:24"}],"id":409,"name":"Assignment","src":"7621:46:24"}],"id":410,"name":"ExpressionStatement","src":"7621:46:24"}],"id":411,"name":"Block","src":"7603:79:24"}],"id":412,"name":"IfStatement","src":"7583:99:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":139,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":413,"name":"Identifier","src":"7742:10:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":414,"name":"Identifier","src":"7753:3:24"}],"id":415,"name":"MemberAccess","src":"7753:10:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":416,"name":"Identifier","src":"7765:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":417,"name":"Identifier","src":"7773:1:24"}],"id":418,"name":"IndexAccess","src":"7765:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":362,"type":"string memory","value":"symbol"},"id":419,"name":"Identifier","src":"7777:6:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"uint256[] calldata","value":"_magnitude"},"id":420,"name":"Identifier","src":"7785:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":421,"name":"Identifier","src":"7796:1:24"}],"id":422,"name":"IndexAccess","src":"7785:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":302,"type":"bool[] calldata","value":"_loadable"},"id":423,"name":"Identifier","src":"7800:9:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":424,"name":"Identifier","src":"7810:1:24"}],"id":425,"name":"IndexAccess","src":"7800:12:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":305,"type":"bool[] calldata","value":"_redeemable"},"id":426,"name":"Identifier","src":"7814:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":427,"name":"Identifier","src":"7826:1:24"}],"id":428,"name":"IndexAccess","src":"7814:14:24"}],"id":429,"name":"FunctionCall","src":"7742:87:24"}],"id":430,"name":"EmitStatement","src":"7737:92:24"}],"id":431,"name":"Block","src":"6755:1085:24"}],"id":432,"name":"ForStatement","src":"6710:1130:24"}],"id":433,"name":"Block","src":"6297:1549:24"}],"id":434,"name":"FunctionDefinition","src":"6040:1806:24"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":535,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":435,"name":"ElementaryTypeName","src":"7995:7:24"}],"id":436,"name":"ArrayTypeName","src":"7995:9:24"}],"id":437,"name":"VariableDeclaration","src":"7995:26:24"}],"id":438,"name":"ParameterList","src":"7994:28:24"},{"attributes":{"parameters":[null]},"children":[],"id":441,"name":"ParameterList","src":"8042:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":439,"name":"Identifier","src":"8032:9:24"}],"id":440,"name":"ModifierInvocation","src":"8032:9:24"},{"children":[{"children":[{"attributes":{"assignments":[443]},"children":[{"attributes":{"constant":false,"name":"i","scope":533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":442,"name":"ElementaryTypeName","src":"8160:7:24"}],"id":443,"name":"VariableDeclaration","src":"8160:9:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":444,"name":"Literal","src":"8172:1:24"}],"id":445,"name":"VariableDeclarationStatement","src":"8160:13:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":443,"type":"uint256","value":"i"},"id":446,"name":"Identifier","src":"8175:1:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":437,"type":"address[] calldata","value":"_tokens"},"id":447,"name":"Identifier","src":"8179:7:24"}],"id":448,"name":"MemberAccess","src":"8179:14:24"}],"id":449,"name":"BinaryOperation","src":"8175:18:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":443,"type":"uint256","value":"i"},"id":450,"name":"Identifier","src":"8195:1:24"}],"id":451,"name":"UnaryOperation","src":"8195:3:24"}],"id":452,"name":"ExpressionStatement","src":"8195:3:24"},{"children":[{"attributes":{"assignments":[454]},"children":[{"attributes":{"constant":false,"name":"token","scope":532,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":453,"name":"ElementaryTypeName","src":"8254:7:24"}],"id":454,"name":"VariableDeclaration","src":"8254:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":437,"type":"address[] calldata","value":"_tokens"},"id":455,"name":"Identifier","src":"8270:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":443,"type":"uint256","value":"i"},"id":456,"name":"Identifier","src":"8278:1:24"}],"id":457,"name":"IndexAccess","src":"8270:10:24"}],"id":458,"name":"VariableDeclarationStatement","src":"8254:26:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":459,"name":"Identifier","src":"8363:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":460,"name":"Identifier","src":"8371:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":461,"name":"Identifier","src":"8385:5:24"}],"id":462,"name":"IndexAccess","src":"8371:20:24"}],"id":463,"name":"MemberAccess","src":"8371:30:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":464,"name":"Literal","src":"8403:24:24"}],"id":465,"name":"FunctionCall","src":"8363:65:24"}],"id":466,"name":"ExpressionStatement","src":"8363:65:24"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":467,"name":"Identifier","src":"8518:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":468,"name":"Identifier","src":"8532:5:24"}],"id":469,"name":"IndexAccess","src":"8518:20:24"}],"id":470,"name":"MemberAccess","src":"8518:31:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":471,"name":"Identifier","src":"8569:18:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1039,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":472,"name":"Identifier","src":"8590:18:24"}],"id":473,"name":"MemberAccess","src":"8590:22:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":474,"name":"Literal","src":"8613:1:24"}],"id":475,"name":"FunctionCall","src":"8590:25:24"}],"id":476,"name":"Assignment","src":"8569:46:24"}],"id":477,"name":"ExpressionStatement","src":"8569:46:24"}],"id":478,"name":"Block","src":"8551:79:24"}],"id":479,"name":"IfStatement","src":"8514:116:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":480,"name":"Identifier","src":"8690:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":481,"name":"Identifier","src":"8704:5:24"}],"id":482,"name":"IndexAccess","src":"8690:20:24"}],"id":483,"name":"UnaryOperation","src":"8683:27:24"}],"id":484,"name":"ExpressionStatement","src":"8683:27:24"},{"children":[{"attributes":{"assignments":[486]},"children":[{"attributes":{"constant":false,"name":"j","scope":520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":485,"name":"ElementaryTypeName","src":"8792:7:24"}],"id":486,"name":"VariableDeclaration","src":"8792:9:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":487,"name":"Literal","src":"8804:1:24"}],"id":488,"name":"VariableDeclarationStatement","src":"8792:13:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":486,"type":"uint256","value":"j"},"id":489,"name":"Identifier","src":"8807:1:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1039,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":490,"name":"Identifier","src":"8811:18:24"}],"id":491,"name":"MemberAccess","src":"8811:25:24"}],"id":492,"name":"MemberAccess","src":"8811:29:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":493,"name":"Literal","src":"8841:1:24"}],"id":494,"name":"FunctionCall","src":"8811:32:24"}],"id":495,"name":"BinaryOperation","src":"8807:36:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":486,"type":"uint256","value":"j"},"id":496,"name":"Identifier","src":"8845:1:24"}],"id":497,"name":"UnaryOperation","src":"8845:3:24"}],"id":498,"name":"ExpressionStatement","src":"8845:3:24"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":499,"name":"Identifier","src":"8872:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":486,"type":"uint256","value":"j"},"id":500,"name":"Identifier","src":"8891:1:24"}],"id":501,"name":"IndexAccess","src":"8872:21:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":502,"name":"Identifier","src":"8897:5:24"}],"id":503,"name":"BinaryOperation","src":"8872:30:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":504,"name":"Identifier","src":"8926:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":486,"type":"uint256","value":"j"},"id":505,"name":"Identifier","src":"8945:1:24"}],"id":506,"name":"IndexAccess","src":"8926:21:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":507,"name":"Identifier","src":"8950:18:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1039,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":508,"name":"Identifier","src":"8969:18:24"}],"id":509,"name":"MemberAccess","src":"8969:25:24"}],"id":510,"name":"MemberAccess","src":"8969:29:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":511,"name":"Literal","src":"8999:1:24"}],"id":512,"name":"FunctionCall","src":"8969:32:24"}],"id":513,"name":"IndexAccess","src":"8950:52:24"}],"id":514,"name":"Assignment","src":"8926:76:24"}],"id":515,"name":"ExpressionStatement","src":"8926:76:24"},{"id":516,"name":"Break","src":"9024:5:24"}],"id":517,"name":"Block","src":"8904:144:24"}],"id":518,"name":"IfStatement","src":"8868:180:24"}],"id":519,"name":"Block","src":"8850:212:24"}],"id":520,"name":"ForStatement","src":"8787:275:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":521,"name":"Identifier","src":"9075:18:24"}],"id":523,"name":"MemberAccess","src":"9075:25:24"}],"id":524,"name":"UnaryOperation","src":"9075:27:24"}],"id":525,"name":"ExpressionStatement","src":"9075:27:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":145,"type":"function (address,address)","value":"RemovedToken"},"id":526,"name":"Identifier","src":"9162:12:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":527,"name":"Identifier","src":"9175:3:24"}],"id":528,"name":"MemberAccess","src":"9175:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":529,"name":"Identifier","src":"9187:5:24"}],"id":530,"name":"FunctionCall","src":"9162:31:24"}],"id":531,"name":"EmitStatement","src":"9157:36:24"}],"id":532,"name":"Block","src":"8200:1004:24"}],"id":533,"name":"ForStatement","src":"8155:1049:24"}],"id":534,"name":"Block","src":"8042:1168:24"}],"id":535,"name":"FunctionDefinition","src":"7973:1237:24"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":648,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":536,"name":"ElementaryTypeName","src":"9404:7:24"}],"id":537,"name":"VariableDeclaration","src":"9404:14:24"},{"attributes":{"constant":false,"name":"_data","scope":648,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":538,"name":"ElementaryTypeName","src":"9420:5:24"}],"id":539,"name":"VariableDeclaration","src":"9420:20:24"}],"id":540,"name":"ParameterList","src":"9403:38:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":648,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":541,"name":"ElementaryTypeName","src":"9465:7:24"}],"id":542,"name":"VariableDeclaration","src":"9465:7:24"},{"attributes":{"constant":false,"name":"","scope":648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":543,"name":"ElementaryTypeName","src":"9474:7:24"}],"id":544,"name":"VariableDeclaration","src":"9474:7:24"}],"id":545,"name":"ParameterList","src":"9464:18:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":546,"name":"Identifier","src":"9669:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":547,"name":"Identifier","src":"9677:5:24"}],"id":548,"name":"MemberAccess","src":"9677:12:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":549,"name":"Literal","src":"9693:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":550,"name":"Literal","src":"9697:2:24"}],"id":551,"name":"BinaryOperation","src":"9693:6:24"}],"id":552,"name":"BinaryOperation","src":"9677:22:24"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":553,"name":"Literal","src":"9701:34:24"}],"id":554,"name":"FunctionCall","src":"9669:67:24"}],"id":555,"name":"ExpressionStatement","src":"9669:67:24"},{"attributes":{"assignments":[557]},"children":[{"attributes":{"constant":false,"name":"signature","scope":647,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":556,"name":"ElementaryTypeName","src":"9782:6:24"}],"id":557,"name":"VariableDeclaration","src":"9782:16:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":2902,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":558,"name":"Identifier","src":"9801:5:24"}],"id":559,"name":"MemberAccess","src":"9801:20:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":560,"name":"Literal","src":"9822:1:24"}],"id":561,"name":"FunctionCall","src":"9801:23:24"}],"id":562,"name":"VariableDeclarationStatement","src":"9782:42:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":563,"name":"Identifier","src":"9877:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":949,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":564,"name":"Identifier","src":"9885:22:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":537,"type":"address","value":"_token"},"id":565,"name":"Identifier","src":"9908:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":557,"type":"bytes4","value":"signature"},"id":566,"name":"Identifier","src":"9916:9:24"}],"id":567,"name":"FunctionCall","src":"9885:41:24"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":568,"name":"Literal","src":"9928:20:24"}],"id":569,"name":"FunctionCall","src":"9877:72:24"}],"id":570,"name":"ExpressionStatement","src":"9877:72:24"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":557,"type":"bytes4","value":"signature"},"id":571,"name":"Identifier","src":"10048:9:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":179,"type":"bytes4","value":"_BURN"},"id":572,"name":"Identifier","src":"10061:5:24"}],"id":573,"name":"BinaryOperation","src":"10048:18:24"},{"children":[{"attributes":{"functionReturnParameters":545},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":537,"type":"address","value":"_token"},"id":574,"name":"Identifier","src":"10133:6:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":2936,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":575,"name":"Identifier","src":"10141:5:24"}],"id":576,"name":"MemberAccess","src":"10141:21:24"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":577,"name":"Literal","src":"10163:1:24"}],"id":578,"name":"FunctionCall","src":"10141:24:24"}],"id":579,"name":"TupleExpression","src":"10132:34:24"}],"id":580,"name":"Return","src":"10125:41:24"}],"id":581,"name":"Block","src":"10068:109:24"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":557,"type":"bytes4","value":"signature"},"id":582,"name":"Identifier","src":"10187:9:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":185,"type":"bytes4","value":"_TRANSFER_FROM"},"id":583,"name":"Identifier","src":"10200:14:24"}],"id":584,"name":"BinaryOperation","src":"10187:27:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":585,"name":"Identifier","src":"10301:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":586,"name":"Identifier","src":"10309:5:24"}],"id":587,"name":"MemberAccess","src":"10309:12:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":588,"name":"Literal","src":"10325:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":589,"name":"Literal","src":"10329:2:24"}],"id":590,"name":"BinaryOperation","src":"10325:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":591,"name":"Literal","src":"10334:2:24"}],"id":592,"name":"BinaryOperation","src":"10325:11:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":593,"name":"Literal","src":"10339:2:24"}],"id":594,"name":"BinaryOperation","src":"10325:16:24"}],"id":595,"name":"BinaryOperation","src":"10309:32:24"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":596,"name":"Literal","src":"10343:34:24"}],"id":597,"name":"FunctionCall","src":"10301:77:24"}],"id":598,"name":"ExpressionStatement","src":"10301:77:24"},{"attributes":{"functionReturnParameters":545},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":2868,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":599,"name":"Identifier","src":"10400:5:24"}],"id":600,"name":"MemberAccess","src":"10400:21:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":601,"name":"Literal","src":"10422:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":602,"name":"Literal","src":"10426:2:24"}],"id":603,"name":"BinaryOperation","src":"10422:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":604,"name":"Literal","src":"10431:2:24"}],"id":605,"name":"BinaryOperation","src":"10422:11:24"}],"id":606,"name":"FunctionCall","src":"10400:34:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":2936,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":607,"name":"Identifier","src":"10436:5:24"}],"id":608,"name":"MemberAccess","src":"10436:21:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":609,"name":"Literal","src":"10458:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":610,"name":"Literal","src":"10462:2:24"}],"id":611,"name":"BinaryOperation","src":"10458:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":612,"name":"Literal","src":"10467:2:24"}],"id":613,"name":"BinaryOperation","src":"10458:11:24"}],"id":614,"name":"FunctionCall","src":"10436:34:24"}],"id":615,"name":"TupleExpression","src":"10399:72:24"}],"id":616,"name":"Return","src":"10392:79:24"}],"id":617,"name":"Block","src":"10216:266:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":618,"name":"Identifier","src":"10590:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":619,"name":"Identifier","src":"10598:5:24"}],"id":620,"name":"MemberAccess","src":"10598:12:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":621,"name":"Literal","src":"10614:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":622,"name":"Literal","src":"10618:2:24"}],"id":623,"name":"BinaryOperation","src":"10614:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":624,"name":"Literal","src":"10623:2:24"}],"id":625,"name":"BinaryOperation","src":"10614:11:24"}],"id":626,"name":"BinaryOperation","src":"10598:27:24"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":627,"name":"Literal","src":"10627:39:24"}],"id":628,"name":"FunctionCall","src":"10590:77:24"}],"id":629,"name":"ExpressionStatement","src":"10590:77:24"},{"attributes":{"functionReturnParameters":545},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":2868,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":630,"name":"Identifier","src":"10689:5:24"}],"id":631,"name":"MemberAccess","src":"10689:21:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":632,"name":"Literal","src":"10711:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":633,"name":"Literal","src":"10715:2:24"}],"id":634,"name":"BinaryOperation","src":"10711:6:24"}],"id":635,"name":"FunctionCall","src":"10689:29:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":2936,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":636,"name":"Identifier","src":"10720:5:24"}],"id":637,"name":"MemberAccess","src":"10720:21:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":638,"name":"Literal","src":"10742:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":639,"name":"Literal","src":"10746:2:24"}],"id":640,"name":"BinaryOperation","src":"10742:6:24"}],"id":641,"name":"FunctionCall","src":"10720:29:24"}],"id":642,"name":"TupleExpression","src":"10688:62:24"}],"id":643,"name":"Return","src":"10681:69:24"}],"id":644,"name":"Block","src":"10488:273:24"}],"id":645,"name":"IfStatement","src":"10183:578:24"}],"id":646,"name":"IfStatement","src":"10044:717:24"}],"id":647,"name":"Block","src":"9483:1284:24"}],"id":648,"name":"FunctionDefinition","src":"9368:1399:24"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":680,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":649,"name":"ElementaryTypeName","src":"10866:7:24"}],"id":650,"name":"VariableDeclaration","src":"10866:14:24"},{"attributes":{"constant":false,"name":"_loadable","scope":680,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":651,"name":"ElementaryTypeName","src":"10882:4:24"}],"id":652,"name":"VariableDeclaration","src":"10882:14:24"}],"id":653,"name":"ParameterList","src":"10865:32:24"},{"attributes":{"parameters":[null]},"children":[],"id":656,"name":"ParameterList","src":"10917:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":654,"name":"Identifier","src":"10907:9:24"}],"id":655,"name":"ModifierInvocation","src":"10907:9:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":657,"name":"Identifier","src":"10969:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":658,"name":"Identifier","src":"10977:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"_token"},"id":659,"name":"Identifier","src":"10991:6:24"}],"id":660,"name":"IndexAccess","src":"10977:21:24"}],"id":661,"name":"MemberAccess","src":"10977:31:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":662,"name":"Literal","src":"11010:24:24"}],"id":663,"name":"FunctionCall","src":"10969:66:24"}],"id":664,"name":"ExpressionStatement","src":"10969:66:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":195,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":665,"name":"Identifier","src":"11108:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"_token"},"id":666,"name":"Identifier","src":"11122:6:24"}],"id":667,"name":"IndexAccess","src":"11108:21:24"}],"id":668,"name":"MemberAccess","src":"11108:30:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":652,"type":"bool","value":"_loadable"},"id":669,"name":"Identifier","src":"11141:9:24"}],"id":670,"name":"Assignment","src":"11108:42:24"}],"id":671,"name":"ExpressionStatement","src":"11108:42:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":672,"name":"Identifier","src":"11166:20:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":673,"name":"Identifier","src":"11187:3:24"}],"id":674,"name":"MemberAccess","src":"11187:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"_token"},"id":675,"name":"Identifier","src":"11199:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":652,"type":"bool","value":"_loadable"},"id":676,"name":"Identifier","src":"11207:9:24"}],"id":677,"name":"FunctionCall","src":"11166:51:24"}],"id":678,"name":"EmitStatement","src":"11161:56:24"}],"id":679,"name":"Block","src":"10917:307:24"}],"id":680,"name":"FunctionDefinition","src":"10840:384:24"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":712,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":681,"name":"ElementaryTypeName","src":"11327:7:24"}],"id":682,"name":"VariableDeclaration","src":"11327:14:24"},{"attributes":{"constant":false,"name":"_redeemable","scope":712,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":683,"name":"ElementaryTypeName","src":"11343:4:24"}],"id":684,"name":"VariableDeclaration","src":"11343:16:24"}],"id":685,"name":"ParameterList","src":"11326:34:24"},{"attributes":{"parameters":[null]},"children":[],"id":688,"name":"ParameterList","src":"11380:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":686,"name":"Identifier","src":"11370:9:24"}],"id":687,"name":"ModifierInvocation","src":"11370:9:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":689,"name":"Identifier","src":"11432:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":690,"name":"Identifier","src":"11440:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":682,"type":"address","value":"_token"},"id":691,"name":"Identifier","src":"11454:6:24"}],"id":692,"name":"IndexAccess","src":"11440:21:24"}],"id":693,"name":"MemberAccess","src":"11440:31:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":694,"name":"Literal","src":"11473:24:24"}],"id":695,"name":"FunctionCall","src":"11432:66:24"}],"id":696,"name":"ExpressionStatement","src":"11432:66:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":697,"name":"Identifier","src":"11573:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":682,"type":"address","value":"_token"},"id":698,"name":"Identifier","src":"11587:6:24"}],"id":699,"name":"IndexAccess","src":"11573:21:24"}],"id":700,"name":"MemberAccess","src":"11573:32:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":684,"type":"bool","value":"_redeemable"},"id":701,"name":"Identifier","src":"11608:11:24"}],"id":702,"name":"Assignment","src":"11573:46:24"}],"id":703,"name":"ExpressionStatement","src":"11573:46:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":704,"name":"Identifier","src":"11635:22:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":705,"name":"Identifier","src":"11658:3:24"}],"id":706,"name":"MemberAccess","src":"11658:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":682,"type":"address","value":"_token"},"id":707,"name":"Identifier","src":"11670:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":684,"type":"bool","value":"_redeemable"},"id":708,"name":"Identifier","src":"11678:11:24"}],"id":709,"name":"FunctionCall","src":"11635:55:24"}],"id":710,"name":"EmitStatement","src":"11630:60:24"}],"id":711,"name":"Block","src":"11380:317:24"}],"id":712,"name":"FunctionDefinition","src":"11299:398:24"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":753,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":713,"name":"ElementaryTypeName","src":"11999:7:24"}],"id":714,"name":"VariableDeclaration","src":"11999:14:24"},{"attributes":{"constant":false,"name":"_rate","scope":753,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":715,"name":"ElementaryTypeName","src":"12015:7:24"}],"id":716,"name":"VariableDeclaration","src":"12015:13:24"},{"attributes":{"constant":false,"name":"_updateDate","scope":753,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":717,"name":"ElementaryTypeName","src":"12030:7:24"}],"id":718,"name":"VariableDeclaration","src":"12030:19:24"}],"id":719,"name":"ParameterList","src":"11998:52:24"},{"attributes":{"parameters":[null]},"children":[],"id":722,"name":"ParameterList","src":"12078:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":290,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":720,"name":"Identifier","src":"12060:17:24"}],"id":721,"name":"ModifierInvocation","src":"12060:17:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":723,"name":"Identifier","src":"12130:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":724,"name":"Identifier","src":"12138:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"address","value":"_token"},"id":725,"name":"Identifier","src":"12152:6:24"}],"id":726,"name":"IndexAccess","src":"12138:21:24"}],"id":727,"name":"MemberAccess","src":"12138:31:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":728,"name":"Literal","src":"12171:24:24"}],"id":729,"name":"FunctionCall","src":"12130:66:24"}],"id":730,"name":"ExpressionStatement","src":"12130:66:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":191,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":731,"name":"Identifier","src":"12242:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"address","value":"_token"},"id":732,"name":"Identifier","src":"12256:6:24"}],"id":733,"name":"IndexAccess","src":"12242:21:24"}],"id":734,"name":"MemberAccess","src":"12242:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"uint256","value":"_rate"},"id":735,"name":"Identifier","src":"12271:5:24"}],"id":736,"name":"Assignment","src":"12242:34:24"}],"id":737,"name":"ExpressionStatement","src":"12242:34:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":199,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":738,"name":"Identifier","src":"12339:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"address","value":"_token"},"id":739,"name":"Identifier","src":"12353:6:24"}],"id":740,"name":"IndexAccess","src":"12339:21:24"}],"id":741,"name":"MemberAccess","src":"12339:32:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":718,"type":"uint256","value":"_updateDate"},"id":742,"name":"Identifier","src":"12374:11:24"}],"id":743,"name":"Assignment","src":"12339:46:24"}],"id":744,"name":"ExpressionStatement","src":"12339:46:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":745,"name":"Identifier","src":"12439:16:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":746,"name":"Identifier","src":"12456:3:24"}],"id":747,"name":"MemberAccess","src":"12456:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"address","value":"_token"},"id":748,"name":"Identifier","src":"12468:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"uint256","value":"_rate"},"id":749,"name":"Identifier","src":"12476:5:24"}],"id":750,"name":"FunctionCall","src":"12439:43:24"}],"id":751,"name":"EmitStatement","src":"12434:48:24"}],"id":752,"name":"Block","src":"12078:411:24"}],"id":753,"name":"FunctionDefinition","src":"11974:515:24"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":777,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":754,"name":"ElementaryTypeName","src":"12593:15:24"}],"id":755,"name":"VariableDeclaration","src":"12593:19:24"},{"attributes":{"constant":false,"name":"_asset","scope":777,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":756,"name":"ElementaryTypeName","src":"12614:7:24"}],"id":757,"name":"VariableDeclaration","src":"12614:14:24"},{"attributes":{"constant":false,"name":"_amount","scope":777,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":758,"name":"ElementaryTypeName","src":"12630:7:24"}],"id":759,"name":"VariableDeclaration","src":"12630:15:24"}],"id":760,"name":"ParameterList","src":"12592:54:24"},{"attributes":{"parameters":[null]},"children":[],"id":763,"name":"ParameterList","src":"12666:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":761,"name":"Identifier","src":"12656:9:24"}],"id":762,"name":"ModifierInvocation","src":"12656:9:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3072,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":764,"name":"Identifier","src":"12676:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":755,"type":"address payable","value":"_to"},"id":765,"name":"Identifier","src":"12690:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":757,"type":"address","value":"_asset"},"id":766,"name":"Identifier","src":"12695:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":759,"type":"uint256","value":"_amount"},"id":767,"name":"Identifier","src":"12703:7:24"}],"id":768,"name":"FunctionCall","src":"12676:35:24"}],"id":769,"name":"ExpressionStatement","src":"12676:35:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":173,"type":"function (address,address,uint256)","value":"Claimed"},"id":770,"name":"Identifier","src":"12726:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":755,"type":"address payable","value":"_to"},"id":771,"name":"Identifier","src":"12734:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":757,"type":"address","value":"_asset"},"id":772,"name":"Identifier","src":"12739:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":759,"type":"uint256","value":"_amount"},"id":773,"name":"Identifier","src":"12747:7:24"}],"id":774,"name":"FunctionCall","src":"12726:29:24"}],"id":775,"name":"EmitStatement","src":"12721:34:24"}],"id":776,"name":"Block","src":"12666:96:24"}],"id":777,"name":"FunctionDefinition","src":"12578:184:24"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":819,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":778,"name":"ElementaryTypeName","src":"13336:7:24"}],"id":779,"name":"VariableDeclaration","src":"13336:10:24"}],"id":780,"name":"ParameterList","src":"13335:12:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":781,"name":"ElementaryTypeName","src":"13371:6:24"}],"id":782,"name":"VariableDeclaration","src":"13371:13:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":783,"name":"ElementaryTypeName","src":"13386:7:24"}],"id":784,"name":"VariableDeclaration","src":"13386:7:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":785,"name":"ElementaryTypeName","src":"13395:7:24"}],"id":786,"name":"VariableDeclaration","src":"13395:7:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":787,"name":"ElementaryTypeName","src":"13404:4:24"}],"id":788,"name":"VariableDeclaration","src":"13404:4:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":789,"name":"ElementaryTypeName","src":"13410:4:24"}],"id":790,"name":"VariableDeclaration","src":"13410:4:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":791,"name":"ElementaryTypeName","src":"13416:4:24"}],"id":792,"name":"VariableDeclaration","src":"13416:4:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":793,"name":"ElementaryTypeName","src":"13422:7:24"}],"id":794,"name":"VariableDeclaration","src":"13422:7:24"}],"id":795,"name":"ParameterList","src":"13370:60:24"},{"children":[{"attributes":{"assignments":[797]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":818,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":200,"type":"struct TokenWhitelist.Token"},"id":796,"name":"UserDefinedTypeName","src":"13441:5:24"}],"id":797,"name":"VariableDeclaration","src":"13441:23:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":798,"name":"Identifier","src":"13467:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":779,"type":"address","value":"_a"},"id":799,"name":"Identifier","src":"13481:2:24"}],"id":800,"name":"IndexAccess","src":"13467:17:24"}],"id":801,"name":"VariableDeclarationStatement","src":"13441:43:24"},{"attributes":{"functionReturnParameters":795},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":187,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":802,"name":"Identifier","src":"13502:9:24"}],"id":803,"name":"MemberAccess","src":"13502:16:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":189,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":804,"name":"Identifier","src":"13520:9:24"}],"id":805,"name":"MemberAccess","src":"13520:19:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":191,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":806,"name":"Identifier","src":"13541:9:24"}],"id":807,"name":"MemberAccess","src":"13541:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":808,"name":"Identifier","src":"13557:9:24"}],"id":809,"name":"MemberAccess","src":"13557:19:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":195,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":810,"name":"Identifier","src":"13578:9:24"}],"id":811,"name":"MemberAccess","src":"13578:18:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":812,"name":"Identifier","src":"13598:9:24"}],"id":813,"name":"MemberAccess","src":"13598:20:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":199,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":814,"name":"Identifier","src":"13620:9:24"}],"id":815,"name":"MemberAccess","src":"13620:20:24"}],"id":816,"name":"TupleExpression","src":"13501:140:24"}],"id":817,"name":"Return","src":"13494:147:24"}],"id":818,"name":"Block","src":"13431:217:24"}],"id":819,"name":"FunctionDefinition","src":"13314:334:24"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":820,"name":"ParameterList","src":"14176:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":821,"name":"ElementaryTypeName","src":"14202:6:24"}],"id":822,"name":"VariableDeclaration","src":"14202:13:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":823,"name":"ElementaryTypeName","src":"14217:7:24"}],"id":824,"name":"VariableDeclaration","src":"14217:7:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":825,"name":"ElementaryTypeName","src":"14226:7:24"}],"id":826,"name":"VariableDeclaration","src":"14226:7:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":827,"name":"ElementaryTypeName","src":"14235:4:24"}],"id":828,"name":"VariableDeclaration","src":"14235:4:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":829,"name":"ElementaryTypeName","src":"14241:4:24"}],"id":830,"name":"VariableDeclaration","src":"14241:4:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":831,"name":"ElementaryTypeName","src":"14247:4:24"}],"id":832,"name":"VariableDeclaration","src":"14247:4:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":833,"name":"ElementaryTypeName","src":"14253:7:24"}],"id":834,"name":"VariableDeclaration","src":"14253:7:24"}],"id":835,"name":"ParameterList","src":"14201:60:24"},{"children":[{"attributes":{"assignments":[837]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":858,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":200,"type":"struct TokenWhitelist.Token"},"id":836,"name":"UserDefinedTypeName","src":"14272:5:24"}],"id":837,"name":"VariableDeclaration","src":"14272:28:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":838,"name":"Identifier","src":"14303:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"address","value":"_stablecoin"},"id":839,"name":"Identifier","src":"14317:11:24"}],"id":840,"name":"IndexAccess","src":"14303:26:24"}],"id":841,"name":"VariableDeclarationStatement","src":"14272:57:24"},{"attributes":{"functionReturnParameters":835},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":187,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":842,"name":"Identifier","src":"14360:14:24"}],"id":843,"name":"MemberAccess","src":"14360:21:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":189,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":844,"name":"Identifier","src":"14395:14:24"}],"id":845,"name":"MemberAccess","src":"14395:24:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":191,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":846,"name":"Identifier","src":"14433:14:24"}],"id":847,"name":"MemberAccess","src":"14433:19:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":848,"name":"Identifier","src":"14466:14:24"}],"id":849,"name":"MemberAccess","src":"14466:24:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":195,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":850,"name":"Identifier","src":"14504:14:24"}],"id":851,"name":"MemberAccess","src":"14504:23:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":852,"name":"Identifier","src":"14541:14:24"}],"id":853,"name":"MemberAccess","src":"14541:25:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":199,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":854,"name":"Identifier","src":"14580:14:24"}],"id":855,"name":"MemberAccess","src":"14580:25:24"}],"id":856,"name":"TupleExpression","src":"14346:269:24"}],"id":857,"name":"Return","src":"14339:276:24"}],"id":858,"name":"Block","src":"14262:360:24"}],"id":859,"name":"FunctionDefinition","src":"14150:472:24"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":860,"name":"ParameterList","src":"14777:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":868,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":861,"name":"ElementaryTypeName","src":"14803:7:24"}],"id":862,"name":"ArrayTypeName","src":"14803:9:24"}],"id":863,"name":"VariableDeclaration","src":"14803:16:24"}],"id":864,"name":"ParameterList","src":"14802:18:24"},{"children":[{"attributes":{"functionReturnParameters":864},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":865,"name":"Identifier","src":"14838:18:24"}],"id":866,"name":"Return","src":"14831:25:24"}],"id":867,"name":"Block","src":"14821:42:24"}],"id":868,"name":"FunctionDefinition","src":"14751:112:24"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":869,"name":"ParameterList","src":"15015:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":926,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":870,"name":"ElementaryTypeName","src":"15041:7:24"}],"id":871,"name":"ArrayTypeName","src":"15041:9:24"}],"id":872,"name":"VariableDeclaration","src":"15041:16:24"}],"id":873,"name":"ParameterList","src":"15040:18:24"},{"children":[{"attributes":{"assignments":[877]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":925,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":875,"name":"ElementaryTypeName","src":"15069:7:24"}],"id":876,"name":"ArrayTypeName","src":"15069:9:24"}],"id":877,"name":"VariableDeclaration","src":"15069:36:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":878,"name":"ElementaryTypeName","src":"15112:7:24"}],"id":879,"name":"ArrayTypeName","src":"15112:9:24"}],"id":880,"name":"NewExpression","src":"15108:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":881,"name":"Identifier","src":"15122:18:24"}],"id":882,"name":"FunctionCall","src":"15108:33:24"}],"id":883,"name":"VariableDeclarationStatement","src":"15069:72:24"},{"attributes":{"assignments":[885]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":925,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":884,"name":"ElementaryTypeName","src":"15151:7:24"}],"id":885,"name":"VariableDeclaration","src":"15151:23:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":886,"name":"Literal","src":"15177:1:24"}],"id":887,"name":"VariableDeclarationStatement","src":"15151:27:24"},{"children":[{"attributes":{"assignments":[889]},"children":[{"attributes":{"constant":false,"name":"i","scope":922,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":888,"name":"ElementaryTypeName","src":"15193:7:24"}],"id":889,"name":"VariableDeclaration","src":"15193:9:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":890,"name":"Literal","src":"15205:1:24"}],"id":891,"name":"VariableDeclarationStatement","src":"15193:13:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":889,"type":"uint256","value":"i"},"id":892,"name":"Identifier","src":"15208:1:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":893,"name":"Identifier","src":"15212:18:24"}],"id":894,"name":"MemberAccess","src":"15212:25:24"}],"id":895,"name":"BinaryOperation","src":"15208:29:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":889,"type":"uint256","value":"i"},"id":896,"name":"Identifier","src":"15239:1:24"}],"id":897,"name":"UnaryOperation","src":"15239:3:24"}],"id":898,"name":"ExpressionStatement","src":"15239:3:24"},{"children":[{"attributes":{"assignments":[900]},"children":[{"attributes":{"constant":false,"name":"token","scope":921,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":899,"name":"ElementaryTypeName","src":"15258:7:24"}],"id":900,"name":"VariableDeclaration","src":"15258:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":901,"name":"Identifier","src":"15274:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":889,"type":"uint256","value":"i"},"id":902,"name":"Identifier","src":"15293:1:24"}],"id":903,"name":"IndexAccess","src":"15274:21:24"}],"id":904,"name":"VariableDeclarationStatement","src":"15258:37:24"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":905,"name":"Identifier","src":"15313:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":900,"type":"address","value":"token"},"id":906,"name":"Identifier","src":"15327:5:24"}],"id":907,"name":"IndexAccess","src":"15313:20:24"}],"id":908,"name":"MemberAccess","src":"15313:31:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"address[] memory","value":"redeemableAddresses"},"id":909,"name":"Identifier","src":"15364:19:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":885,"type":"uint256","value":"redeemableIndex"},"id":910,"name":"Identifier","src":"15384:15:24"}],"id":911,"name":"IndexAccess","src":"15364:36:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":900,"type":"address","value":"token"},"id":912,"name":"Identifier","src":"15403:5:24"}],"id":913,"name":"Assignment","src":"15364:44:24"}],"id":914,"name":"ExpressionStatement","src":"15364:44:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":885,"type":"uint256","value":"redeemableIndex"},"id":915,"name":"Identifier","src":"15426:15:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":916,"name":"Literal","src":"15445:1:24"}],"id":917,"name":"Assignment","src":"15426:20:24"}],"id":918,"name":"ExpressionStatement","src":"15426:20:24"}],"id":919,"name":"Block","src":"15346:115:24"}],"id":920,"name":"IfStatement","src":"15309:152:24"}],"id":921,"name":"Block","src":"15244:227:24"}],"id":922,"name":"ForStatement","src":"15188:283:24"},{"attributes":{"functionReturnParameters":873},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"address[] memory","value":"redeemableAddresses"},"id":923,"name":"Identifier","src":"15487:19:24"}],"id":924,"name":"Return","src":"15480:26:24"}],"id":925,"name":"Block","src":"15059:454:24"}],"id":926,"name":"FunctionDefinition","src":"14990:523:24"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":987,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":949,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":927,"name":"ElementaryTypeName","src":"15727:7:24"}],"id":928,"name":"VariableDeclaration","src":"15727:14:24"},{"attributes":{"constant":false,"name":"_methodId","scope":949,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":929,"name":"ElementaryTypeName","src":"15743:6:24"}],"id":930,"name":"VariableDeclaration","src":"15743:16:24"}],"id":931,"name":"ParameterList","src":"15726:34:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":949,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":932,"name":"ElementaryTypeName","src":"15782:4:24"}],"id":933,"name":"VariableDeclaration","src":"15782:4:24"}],"id":934,"name":"ParameterList","src":"15781:6:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":935,"name":"Identifier","src":"15798:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":936,"name":"Identifier","src":"15806:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":928,"type":"address","value":"_token"},"id":937,"name":"Identifier","src":"15820:6:24"}],"id":938,"name":"IndexAccess","src":"15806:21:24"}],"id":939,"name":"MemberAccess","src":"15806:31:24"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":940,"name":"Literal","src":"15839:20:24"}],"id":941,"name":"FunctionCall","src":"15798:62:24"}],"id":942,"name":"ExpressionStatement","src":"15798:62:24"},{"attributes":{"functionReturnParameters":934},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":943,"name":"Identifier","src":"15878:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":930,"type":"bytes4","value":"_methodId"},"id":944,"name":"Identifier","src":"15897:9:24"}],"id":945,"name":"IndexAccess","src":"15878:29:24"}],"id":946,"name":"TupleExpression","src":"15877:31:24"}],"id":947,"name":"Return","src":"15870:38:24"}],"id":948,"name":"Block","src":"15788:127:24"}],"id":949,"name":"FunctionDefinition","src":"15695:220:24"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":962,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":950,"name":"ElementaryTypeName","src":"16104:6:24"}],"id":951,"name":"VariableDeclaration","src":"16104:16:24"}],"id":952,"name":"ParameterList","src":"16103:18:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":962,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":953,"name":"ElementaryTypeName","src":"16145:4:24"}],"id":954,"name":"VariableDeclaration","src":"16145:4:24"}],"id":955,"name":"ParameterList","src":"16144:6:24"},{"children":[{"attributes":{"functionReturnParameters":955},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":956,"name":"Identifier","src":"16169:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"bytes4","value":"_methodId"},"id":957,"name":"Identifier","src":"16188:9:24"}],"id":958,"name":"IndexAccess","src":"16169:29:24"}],"id":959,"name":"TupleExpression","src":"16168:31:24"}],"id":960,"name":"Return","src":"16161:38:24"}],"id":961,"name":"Block","src":"16151:55:24"}],"id":962,"name":"FunctionDefinition","src":"16070:136:24"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":963,"name":"ParameterList","src":"16342:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":970,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":964,"name":"ElementaryTypeName","src":"16368:7:24"}],"id":965,"name":"VariableDeclaration","src":"16368:7:24"}],"id":966,"name":"ParameterList","src":"16367:9:24"},{"children":[{"attributes":{"functionReturnParameters":966},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":967,"name":"Identifier","src":"16394:18:24"}],"id":968,"name":"Return","src":"16387:25:24"}],"id":969,"name":"Block","src":"16377:42:24"}],"id":970,"name":"FunctionDefinition","src":"16316:103:24"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":971,"name":"ParameterList","src":"16570:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":978,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":972,"name":"ElementaryTypeName","src":"16596:7:24"}],"id":973,"name":"VariableDeclaration","src":"16596:7:24"}],"id":974,"name":"ParameterList","src":"16595:9:24"},{"children":[{"attributes":{"functionReturnParameters":974},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"address","value":"_stablecoin"},"id":975,"name":"Identifier","src":"16622:11:24"}],"id":976,"name":"Return","src":"16615:18:24"}],"id":977,"name":"Block","src":"16605:35:24"}],"id":978,"name":"FunctionDefinition","src":"16551:89:24"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":979,"name":"ParameterList","src":"16774:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":980,"name":"ElementaryTypeName","src":"16800:7:24"}],"id":981,"name":"VariableDeclaration","src":"16800:7:24"}],"id":982,"name":"ParameterList","src":"16799:9:24"},{"children":[{"attributes":{"functionReturnParameters":982},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":217,"type":"bytes32","value":"_oracleNode"},"id":983,"name":"Identifier","src":"16826:11:24"}],"id":984,"name":"Return","src":"16819:18:24"}],"id":985,"name":"Block","src":"16809:35:24"}],"id":986,"name":"FunctionDefinition","src":"16755:89:24"}],"id":987,"name":"ContractDefinition","src":"1939:14907:24"}],"id":988,"name":"SourceUnit","src":"774:16073:24"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:22;;-1:-1:-1;;;;;;1543:18:22;-1:-1:-1;;;;;1543:18:22;;;-1:-1:-1;;;;1571:32:22;;;;2239:84:0;;2314:5;1571:32:22;-1:-1:-1;;;1687:15:22;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:22;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:22;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:22:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:22:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:22;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:22:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:22;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:22:-;3222:4;3245:15;-1:-1:-1;;;3245:15:22;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:22:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:22;;;;3656:57;;;;;-1:-1:-1;;;3656:57:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:22;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:22;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:22:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:22;;;;2404:57;;;;;-1:-1:-1;;;2404:57:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:22;;2534:70;;;;-1:-1:-1;;;2534:70:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:22;-1:-1:-1;;;2689:31:22;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:22;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:22;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:22;:17;;-1:-1:-1;;;;;;3032:17:22;-1:-1:-1;;;;;3032:17:22;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:22;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;-1:-1:-1;;;1932:55:22;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:22:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:22;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:23:-;-1:-1:-1;;;;;1510:20:23;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:23;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:23;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:23;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:3:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:3:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:4:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:4:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:6:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:7:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:7;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:7;-1:-1:-1;;;;;2567:10:7;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:7;;;;;;","srcmap-runtime":"1897:2174:7:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:17;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:13;;;;;;;;;:::i;:::-;;573:184:17;;;;;;;;;:::i;1721:953:14:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:10;;;;;;;;;:::i;:::-;;;;;;;;;612:169:16;;;;;;;;;:::i;505:166:12:-;;;;;;;;;:::i;980:228:11:-;;;;;;;;;:::i;3269:231:7:-;;;;;;;;;:::i;4901:153:13:-;;;;;;;;;:::i;974:127:17:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:13;;;;;;;;;:::i;582:292:10:-;;;;;;;;;:::i;844:101:15:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:11:-;;;;;;;;;:::i;4519:168:13:-;;;;;;;;;:::i;3703:366:7:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:13;;;;;;;;;:::i;838:108:12:-;;;;;;;;;:::i;1023:133:16:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:13;;;;;;;;;:::i;681:140:11:-;;;;;;;;;:::i;858:226:14:-;;;;;;;;;:::i;1514:127:11:-;;;;;;;;;:::i;2320:80:7:-;;;;;;;;;:::i;1107:169:17:-;1174:4;-1:-1:-1;;;;;;1197:32:17;;-1:-1:-1;;;1197:32:17;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:13:-;2932:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:13;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:13;;:18;-1:-1:-1;;3185:18:13;:15;:18;;-1:-1:-1;3185:18:13:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:13;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:13;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:13;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:13;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:13;;4052:6;;-1:-1:-1;4060:20:13;;;;-1:-1:-1;4082:17:13;4012:11;:88::i;:::-;400:1:9;;;;;2854:1263:13;;;;:::o;573:184:17:-;668:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:17;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:14:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:14;;;;;;;;;;-1:-1:-1;;;;;1849:29:14;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:14;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:14;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:14;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:14;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:14;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:14;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:14;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:14;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:14;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:14;;-1:-1:-1;2373:103:14;-1:-1:-1;2489:8:14;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:14;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:14;;-1:-1:-1;;;1721:953:14;;;;;:::o;1195:454:10:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:10;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:10;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:10;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:10;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:10;-1:-1:-1;1195:454:10;;;;;;:::o;612:169:16:-;687:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:16;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:16;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:12:-;584:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:12;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:11;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:11:o;3269:231:7:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:7;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:7;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:13:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:17:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:17;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:13:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:10:-;674:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:10;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:10;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:15:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:15;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:11;1302:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:11;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:13:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:7;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:7;-1:-1:-1;3844:6:7;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:7;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:7;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:7;;3840:199;;;-1:-1:-1;3703:366:7;;;;:::o;5193:128:13:-;5247:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:13;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:12:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:12;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:16;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:13:-;5617:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:13;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:13;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:13;;:16;-1:-1:-1;5701:4:13;;-1:-1:-1;5701:4:13;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:9;5541:225:13;;;;:::o;681:140:11:-;743:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:11;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:14:-;955:4;371:18:9;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:14;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:14;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:14;-1:-1:-1;;;;;971:43:14;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:11:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:11;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:16:-;1229:4;-1:-1:-1;;;;;;1252:34:16;;-1:-1:-1;;;1252:34:16;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:7:-;3596:3;;:15;;-1:-1:-1;;;3596:15:7;;3564:4;;;;-1:-1:-1;;;;;3596:3:7;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:7;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:7;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:7;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:7;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:7;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:7;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:8:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:6:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:13:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:13;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:13;;;;;;-1:-1:-1;;6760:43:13;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:13;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:13;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:8:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:8;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:8;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:8;;:::o;414:204:9:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:9;576:10;570:17;-1:-1:-1;;;566:36:9;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:9;87:34:-1;-1:-1;;;;;;776:20:9;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:9;743:64::o;951:169:15:-;1018:4;-1:-1:-1;;;;;;1041:32:15;;-1:-1:-1;;;1041:32:15;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:8:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:8;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:8:o;8685:393:6:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:6;87:34:-1;135:17;;-1:-1;8858:14:6;-1:-1:-1;8839:33:6;-1:-1:-1;8960:2:6;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:6;;8685:393;-1:-1:-1;;;;;8685:393:6:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:6:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:6;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:6;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:14:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:14;;:11;-1:-1:-1;;;;;2770:37:14;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:6:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:6;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:6;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:6;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:6;;513:2;499:26;489:42;;468:73::o;6035:245:13:-;6102:4;-1:-1:-1;;;;;;6125:38:13;;-1:-1:-1;;;6125:38:13;;:93;;-1:-1:-1;;;;;;;6182:36:13;;-1:-1:-1;;;6182:36:13;6125:93;:148;;;;6237:36;6261:11;1019:4:12;-1:-1:-1;;;;;;1042:40:12;;-1:-1:-1;;;1042:40:12;;:80;;;1086:36;1110:11;1714:4:11;-1:-1:-1;;;;;;1737:32:11;;-1:-1:-1;;;1737:32:11;;:71;;-1:-1:-1;;;;;;;1773:35:11;;-1:-1:-1;;;1773:35:11;1737:71;:111;;;;1812:36;1836:11;1722:4:10;-1:-1:-1;;;;;;1745:31:10;;-1:-1:-1;;;1745:31:10;;:71;;-1:-1:-1;;;;;;;;;;204:32:9;;;1780:36:10;114:129:9:o;1897:2174:7:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:7;;;-1:-1:-1;1897:2174:7;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:8:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:18:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:18:-;;;;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:19:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:19:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:23:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:23;;;;;;;","srcmap-runtime":"961:696:23:-;;;;;"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","srcmap":"1939:14907:24:-;;;1122:66:20;1272:58;;4758:506:24;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:24;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:24;;;;;;;;;;;;;;;1242:12:21;:23;;-1:-1:-1;;;;;;1242:23:21;-1:-1:-1;;;;;1242:23:21;;;;;4758:506:24;;;;;1665:30:20;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:24;:26;;;;-1:-1:-1;4995:11:24;:33;;-1:-1:-1;;;;;4995:33:24;;;-1:-1:-1;;;;;;4995:33:24;;;;;;;;;-1:-1:-1;5083:18:24;:28;;;:35;;-1:-1:-1;;5083:35:24;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:24;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:24:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:24;-1:-1:-1;;;;;;16070:136:24;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:24;-1:-1:-1;;;;;13314:334:24;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:24;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:24;;-1:-1:-1;6040:1806:24;-1:-1:-1;6040:1806:24;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:24;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:24;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:24;;-1:-1:-1;;;;;15695:220:24;;;;;-1:-1:-1;;;;;;15695:220:24;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:24;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:24;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:24;;-1:-1:-1;7973:1237:24;-1:-1:-1;7973:1237:24;:::i;1364:91:21:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:21;;;;;;;;;;;;;;16755:89:24;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:24;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:24;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:24;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:24;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:24;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:24;;-1:-1:-1;9368:1399:24;-1:-1:-1;9368:1399:24;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:24;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:24;;;;;;;;;;;;;:::i;2169:95:20:-;;;:::i;16551:89:24:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:24;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:24;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:24;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;6389:33:24;;;:88;;;;-1:-1:-1;6442:35:24;;;6389:88;:142;;;;-1:-1:-1;6497:34:24;;;6389:142;:196;;;;-1:-1:-1;6551:34:24;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:24;6841:25;;-1:-1:-1;6841:25:24;;;;;;;;-1:-1:-1;6841:25:24;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:24;-1:-1:-1;;;;;7084:25:24;-1:-1:-1;;;;;7084:25:24;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:24;;;;;-1:-1:-1;;7084:306:24;;;-1:-1:-1;;7084:306:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:24;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:24;-1:-1:-1;;;;;7486:10:24;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:24;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:24;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:24;-1:-1:-1;;;;;7742:87:24;;;;;;-1:-1:-1;;;;;7742:87:24;-1:-1:-1;;;;;7742:87:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:24;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:24;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:24;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:24;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:24;-1:-1:-1;15069:72:24;-1:-1:-1;15151:23:24;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:24;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:24;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:24;;;-1:-1:-1;;;;;15364:44:24;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:24;;15188:283;;;-1:-1:-1;15487:19:24;;-1:-1:-1;;14990:523:24;:::o;11299:398::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:24;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:24;;;;;;;;;;;;-1:-1:-1;;;11432:66:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:24;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:24;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:24;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:24;;;;;;;;;;;;-1:-1:-1;;;15798:62:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:24;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:24:o;7973:1237::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;8160:9:24;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:24;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:24;;8363:65;;;;;-1:-1:-1;;;8363:65:24;;;;;;;;;;;;-1:-1:-1;;;8363:65:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:24;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:24;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:24;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:24;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:24;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:24;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:24;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:24;;;;;-1:-1:-1;;;;;8926:76:24;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:24;:27;;;;;-1:-1:-1;;9075:27:24;;;:::i;:::-;-1:-1:-1;9162:31:24;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:24;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:24;;8155:1049;;;;7973:1237;;:::o;1364:91:21:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:21;1364:91;:::o;16755:89:24:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:24;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:24;;;;;;;;;;;;-1:-1:-1;;;10969:66:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:24;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:24;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:20;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;-1:-1:-1;;;2035:55:20;;;;;;;;;;;;;;;12676:35:24;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:24;;:23;-1:-1:-1;;9801:23:24;:20;:23;;-1:-1:-1;9801:23:24:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:24;;;;;;;;;;;;-1:-1:-1;;;9877:72:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:24;;-1:-1:-1;;;10048:18:24;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:24;;:24;-1:-1:-1;;10141:24:24;:21;:24;;-1:-1:-1;10141:24:24:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:24;;-1:-1:-1;;;10187:27:24;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:24;;:34;-1:-1:-1;;10400:34:24;:21;:34;;-1:-1:-1;10400:34:24:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:24;;:34;-1:-1:-1;;10436:34:24;:21;:34;;-1:-1:-1;10436:34:24:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:24;;:29;-1:-1:-1;;10689:29:24;:21;:29;;-1:-1:-1;10689:29:24:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:24;;:29;-1:-1:-1;;10720:29:24;:21;:29;;-1:-1:-1;10720:29:24:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:24;-1:-1:-1;;;;;5399:27:24;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:24;;;;;;;;;;;;-1:-1:-1;;;5367:86:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:24;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:24;;;;;;;;;;;;-1:-1:-1;;;12130:66:24;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:24;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:20:-;2242:15;;2169:95;:::o;16551:89:24:-;16622:11;;-1:-1:-1;;;;;16622:11:24;16551:89;:::o;2554:148:20:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:20;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:20;-1:-1:-1;;;;;2636:59:20;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:20;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:20;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:20;;2554:148;-1:-1:-1;;2554:148:20:o;4943:370:18:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:18:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:18;87:34:-1;135:17;;-1:-1;5912:21:18;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:18;5807:265;-1:-1:-1;;5807:265:18:o;834:176:4:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:4:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:4;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:4;;;1274:179::o;1366:289:23:-;-1:-1:-1;;;;;1510:20:23;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:23;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:23;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:23;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:19:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:19;;;;;;;;;;;;-1:-1:-1;;;1726:60:19;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:19:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:19;;;;;;;;;;;;-1:-1:-1;;;1182:61:19;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:19:o;1631:153:21:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:21;;;;;;;;;;-1:-1:-1;;;;;1735:12:21;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:21;1716:61;;;-1:-1:-1;;;1716:61:21;;;;;;;;;;-1:-1:-1;;;;;1716:54:21;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:18;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:18;4078:48;;-1:-1:-1;3968:170:18;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:18;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:18;4378:24;;-1:-1:-1;4293:121:18;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:18;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:18:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:18;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:18;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:3:-;1910:58;;;-1:-1:-1;;;;;1910:58:3;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:3;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:3;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:3;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:3;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:3;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:3;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:3;4750:85;;;;-1:-1:-1;;;4750:85:3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:24:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:24;;;-1:-1:-1;1939:14907:24;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/transferrable.sol","tokenWhitelist.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[3527],"IController":[3092]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3075,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":4002,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":3528,"symbolAliases":[null],"unitAlias":""},"id":3076,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":3074,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":3528,"symbolAliases":[null],"unitAlias":""},"id":3077,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[3092],"name":"IController","scope":3528},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":3092,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3084,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3078,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":3079,"name":"VariableDeclaration","src":"1015:7:0"}],"id":3080,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3084,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3081,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":3082,"name":"VariableDeclaration","src":"1047:4:0"}],"id":3083,"name":"ParameterList","src":"1046:6:0"}],"id":3084,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":3092,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3091,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3085,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":3086,"name":"VariableDeclaration","src":"1076:7:0"}],"id":3087,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3091,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3088,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":3089,"name":"VariableDeclaration","src":"1108:4:0"}],"id":3090,"name":"ParameterList","src":"1107:6:0"}],"id":3091,"name":"FunctionDefinition","src":"1059:55:0"}],"id":3092,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[3073,3092,4001],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[3527,3073,4001,3092],"name":"Controller","scope":3528},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":3092,"type":"contract IController"},"id":3093,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":3094,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":4001,"type":"contract Ownable"},"id":3095,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":3096,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3073,"type":"contract Transferrable"},"id":3097,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":3098,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3104,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3099,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":3100,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3104,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3101,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":3102,"name":"VariableDeclaration","src":"1564:19:0"}],"id":3103,"name":"ParameterList","src":"1546:38:0"}],"id":3104,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3110,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3105,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":3106,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3110,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3107,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":3108,"name":"VariableDeclaration","src":"1631:19:0"}],"id":3109,"name":"ParameterList","src":"1613:38:0"}],"id":3110,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3116,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3111,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":3112,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3116,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3113,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":3114,"name":"VariableDeclaration","src":"1692:14:0"}],"id":3115,"name":"ParameterList","src":"1674:33:0"}],"id":3116,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3117,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":3118,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3122,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3119,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":3120,"name":"VariableDeclaration","src":"1749:14:0"}],"id":3121,"name":"ParameterList","src":"1731:33:0"}],"id":3122,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3130,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3123,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":3124,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3130,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3125,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":3126,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3130,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3127,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":3128,"name":"VariableDeclaration","src":"1814:15:0"}],"id":3129,"name":"ParameterList","src":"1784:46:0"}],"id":3130,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3134,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3131,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":3132,"name":"VariableDeclaration","src":"1851:15:0"}],"id":3133,"name":"ParameterList","src":"1850:17:0"}],"id":3134,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3138,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3135,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":3136,"name":"VariableDeclaration","src":"1887:15:0"}],"id":3137,"name":"ParameterList","src":"1886:17:0"}],"id":3138,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":3527,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3139,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3140,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":3141,"name":"Mapping","src":"1910:24:0"}],"id":3142,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":3527,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3143,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":3144,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":3527,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3145,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3146,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":3147,"name":"Mapping","src":"1991:24:0"}],"id":3148,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":3527,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3149,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":3150,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":3527,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3151,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":3152,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":3162,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3153,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":3154,"name":"VariableDeclaration","src":"2251:30:0"}],"id":3155,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":3160,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4001,"type":"type(contract Ownable)","value":"Ownable"},"id":3156,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3154,"type":"address payable","value":"_ownerAddress_"},"id":3157,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3158,"name":"Literal","src":"2314:5:0"}],"id":3159,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":3161,"name":"Block","src":"2321:2:0"}],"id":3162,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3163,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3164,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3165,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3166,"name":"Identifier","src":"2431:3:0"}],"id":3167,"name":"MemberAccess","src":"2431:10:0"}],"id":3168,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":3169,"name":"Literal","src":"2444:21:0"}],"id":3170,"name":"FunctionCall","src":"2414:52:0"}],"id":3171,"name":"ExpressionStatement","src":"2414:52:0"},{"id":3172,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":3173,"name":"Block","src":"2404:80:0"}],"id":3174,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3175,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3176,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4000,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3177,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3178,"name":"Identifier","src":"2585:3:0"}],"id":3179,"name":"MemberAccess","src":"2585:10:0"}],"id":3180,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3181,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3182,"name":"Identifier","src":"2609:3:0"}],"id":3183,"name":"MemberAccess","src":"2609:10:0"}],"id":3184,"name":"IndexAccess","src":"2600:20:0"}],"id":3185,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":3186,"name":"Literal","src":"2622:30:0"}],"id":3187,"name":"FunctionCall","src":"2568:85:0"}],"id":3188,"name":"ExpressionStatement","src":"2568:85:0"},{"id":3189,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":3190,"name":"Block","src":"2558:113:0"}],"id":3191,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3192,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3193,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3306,"type":"function () view returns (bool)","value":"isStopped"},"id":3194,"name":"Identifier","src":"2765:9:0"}],"id":3195,"name":"FunctionCall","src":"2765:11:0"}],"id":3196,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":3197,"name":"Literal","src":"2778:23:0"}],"id":3198,"name":"FunctionCall","src":"2756:46:0"}],"id":3199,"name":"ExpressionStatement","src":"2756:46:0"},{"id":3200,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":3201,"name":"Block","src":"2746:74:0"}],"id":3202,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3216,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3203,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":3204,"name":"VariableDeclaration","src":"2961:16:0"}],"id":3205,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3210,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3206,"name":"Identifier","src":"2988:9:0"}],"id":3207,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3208,"name":"Identifier","src":"2998:10:0"}],"id":3209,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3360,"type":"function (address)","value":"_addAdmin"},"id":3211,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3204,"type":"address","value":"_account"},"id":3212,"name":"Identifier","src":"3029:8:0"}],"id":3213,"name":"FunctionCall","src":"3019:19:0"}],"id":3214,"name":"ExpressionStatement","src":"3019:19:0"}],"id":3215,"name":"Block","src":"3009:36:0"}],"id":3216,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3228,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3217,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":3218,"name":"VariableDeclaration","src":"3195:16:0"}],"id":3219,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3222,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3220,"name":"Identifier","src":"3222:9:0"}],"id":3221,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3388,"type":"function (address)","value":"_removeAdmin"},"id":3223,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3218,"type":"address","value":"_account"},"id":3224,"name":"Identifier","src":"3255:8:0"}],"id":3225,"name":"FunctionCall","src":"3242:22:0"}],"id":3226,"name":"ExpressionStatement","src":"3242:22:0"}],"id":3227,"name":"Block","src":"3232:39:0"}],"id":3228,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":3527,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3229,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3236,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3230,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":3231,"name":"VariableDeclaration","src":"3368:7:0"}],"id":3232,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":3232},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"uint256","value":"_adminCount"},"id":3233,"name":"Identifier","src":"3394:11:0"}],"id":3234,"name":"Return","src":"3387:18:0"}],"id":3235,"name":"Block","src":"3377:35:0"}],"id":3236,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3250,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3237,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":3238,"name":"VariableDeclaration","src":"3573:16:0"}],"id":3239,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3244,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3191,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3240,"name":"Identifier","src":"3600:16:0"}],"id":3241,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3242,"name":"Identifier","src":"3617:10:0"}],"id":3243,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3442,"type":"function (address)","value":"_addController"},"id":3245,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3238,"type":"address","value":"_account"},"id":3246,"name":"Identifier","src":"3653:8:0"}],"id":3247,"name":"FunctionCall","src":"3638:24:0"}],"id":3248,"name":"ExpressionStatement","src":"3638:24:0"}],"id":3249,"name":"Block","src":"3628:41:0"}],"id":3250,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3262,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3251,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":3252,"name":"VariableDeclaration","src":"3839:16:0"}],"id":3253,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3256,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3191,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3254,"name":"Identifier","src":"3866:16:0"}],"id":3255,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"function (address)","value":"_removeController"},"id":3257,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3252,"type":"address","value":"_account"},"id":3258,"name":"Identifier","src":"3911:8:0"}],"id":3259,"name":"FunctionCall","src":"3893:27:0"}],"id":3260,"name":"ExpressionStatement","src":"3893:27:0"}],"id":3261,"name":"Block","src":"3883:44:0"}],"id":3262,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":3527,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3263,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3270,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3264,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":3265,"name":"VariableDeclaration","src":"4072:7:0"}],"id":3266,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":3266},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"_controllerCount"},"id":3267,"name":"Identifier","src":"4098:16:0"}],"id":3268,"name":"Return","src":"4091:23:0"}],"id":3269,"name":"Block","src":"4081:40:0"}],"id":3270,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":3527,"stateMutability":"view","superFunction":3091,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3284,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3271,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":3272,"name":"VariableDeclaration","src":"4242:16:0"}],"id":3273,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3284,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3276,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":3277,"name":"VariableDeclaration","src":"4294:4:0"}],"id":3278,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3274,"name":"Identifier","src":"4274:10:0"}],"id":3275,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":3278},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3279,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3272,"type":"address","value":"_account"},"id":3280,"name":"Identifier","src":"4326:8:0"}],"id":3281,"name":"IndexAccess","src":"4317:18:0"}],"id":3282,"name":"Return","src":"4310:25:0"}],"id":3283,"name":"Block","src":"4300:42:0"}],"id":3284,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":3527,"stateMutability":"view","superFunction":3084,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3298,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3285,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":3286,"name":"VariableDeclaration","src":"4476:16:0"}],"id":3287,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3298,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3290,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":3291,"name":"VariableDeclaration","src":"4528:4:0"}],"id":3292,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3288,"name":"Identifier","src":"4508:10:0"}],"id":3289,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":3292},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3293,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3286,"type":"address","value":"_account"},"id":3294,"name":"Identifier","src":"4565:8:0"}],"id":3295,"name":"IndexAccess","src":"4551:23:0"}],"id":3296,"name":"Return","src":"4544:30:0"}],"id":3297,"name":"Block","src":"4534:47:0"}],"id":3298,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":3527,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3299,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3306,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3300,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":3301,"name":"VariableDeclaration","src":"4769:4:0"}],"id":3302,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":3302},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3152,"type":"bool","value":"_stopped"},"id":3303,"name":"Identifier","src":"4792:8:0"}],"id":3304,"name":"Return","src":"4785:15:0"}],"id":3305,"name":"Block","src":"4775:32:0"}],"id":3306,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3360,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3307,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":3308,"name":"VariableDeclaration","src":"4894:16:0"}],"id":3309,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3310,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3311,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3312,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3313,"name":"Identifier","src":"4948:8:0"}],"id":3314,"name":"IndexAccess","src":"4939:18:0"}],"id":3315,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":3316,"name":"Literal","src":"4959:38:0"}],"id":3317,"name":"FunctionCall","src":"4930:68:0"}],"id":3318,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3319,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3320,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3321,"name":"Identifier","src":"5031:8:0"}],"id":3322,"name":"IndexAccess","src":"5017:23:0"}],"id":3323,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":3324,"name":"Literal","src":"5042:42:0"}],"id":3325,"name":"FunctionCall","src":"5008:77:0"}],"id":3326,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3327,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4000,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3328,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3329,"name":"Identifier","src":"5113:8:0"}],"id":3330,"name":"FunctionCall","src":"5104:18:0"}],"id":3331,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":3332,"name":"Literal","src":"5124:39:0"}],"id":3333,"name":"FunctionCall","src":"5095:69:0"}],"id":3334,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3335,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3336,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3337,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3338,"name":"Literal","src":"5202:1:0"}],"id":3339,"name":"FunctionCall","src":"5194:10:0"}],"id":3340,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":3341,"name":"Literal","src":"5206:38:0"}],"id":3342,"name":"FunctionCall","src":"5174:71:0"}],"id":3343,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3344,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3345,"name":"Identifier","src":"5264:8:0"}],"id":3346,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3347,"name":"Literal","src":"5276:4:0"}],"id":3348,"name":"Assignment","src":"5255:25:0"}],"id":3349,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"uint256","value":"_adminCount"},"id":3350,"name":"Identifier","src":"5290:11:0"}],"id":3351,"name":"UnaryOperation","src":"5290:13:0"}],"id":3352,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3116,"type":"function (address,address)","value":"AddedAdmin"},"id":3353,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3354,"name":"Identifier","src":"5329:3:0"}],"id":3355,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3308,"type":"address","value":"_account"},"id":3356,"name":"Identifier","src":"5341:8:0"}],"id":3357,"name":"FunctionCall","src":"5318:32:0"}],"id":3358,"name":"EmitStatement","src":"5313:37:0"}],"id":3359,"name":"Block","src":"4920:437:0"}],"id":3360,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3388,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3361,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":3362,"name":"VariableDeclaration","src":"5456:16:0"}],"id":3363,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3364,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3365,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3366,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3362,"type":"address","value":"_account"},"id":3367,"name":"Identifier","src":"5509:8:0"}],"id":3368,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":3369,"name":"Literal","src":"5520:34:0"}],"id":3370,"name":"FunctionCall","src":"5492:63:0"}],"id":3371,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3372,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3362,"type":"address","value":"_account"},"id":3373,"name":"Identifier","src":"5574:8:0"}],"id":3374,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3375,"name":"Literal","src":"5586:5:0"}],"id":3376,"name":"Assignment","src":"5565:26:0"}],"id":3377,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3144,"type":"uint256","value":"_adminCount"},"id":3378,"name":"Identifier","src":"5601:11:0"}],"id":3379,"name":"UnaryOperation","src":"5601:13:0"}],"id":3380,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3122,"type":"function (address,address)","value":"RemovedAdmin"},"id":3381,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3382,"name":"Identifier","src":"5642:3:0"}],"id":3383,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3362,"type":"address","value":"_account"},"id":3384,"name":"Identifier","src":"5654:8:0"}],"id":3385,"name":"FunctionCall","src":"5629:34:0"}],"id":3386,"name":"EmitStatement","src":"5624:39:0"}],"id":3387,"name":"Block","src":"5482:188:0"}],"id":3388,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3442,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3389,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":3390,"name":"VariableDeclaration","src":"5767:16:0"}],"id":3391,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3392,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3393,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3142,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3394,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3395,"name":"Identifier","src":"5821:8:0"}],"id":3396,"name":"IndexAccess","src":"5812:18:0"}],"id":3397,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":3398,"name":"Literal","src":"5832:38:0"}],"id":3399,"name":"FunctionCall","src":"5803:68:0"}],"id":3400,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3401,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3402,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3403,"name":"Identifier","src":"5904:8:0"}],"id":3404,"name":"IndexAccess","src":"5890:23:0"}],"id":3405,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":3406,"name":"Literal","src":"5915:42:0"}],"id":3407,"name":"FunctionCall","src":"5881:77:0"}],"id":3408,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3409,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4000,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3410,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3411,"name":"Identifier","src":"5986:8:0"}],"id":3412,"name":"FunctionCall","src":"5977:18:0"}],"id":3413,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":3414,"name":"Literal","src":"5997:39:0"}],"id":3415,"name":"FunctionCall","src":"5968:69:0"}],"id":3416,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3417,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3418,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3419,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3420,"name":"Literal","src":"6075:1:0"}],"id":3421,"name":"FunctionCall","src":"6067:10:0"}],"id":3422,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":3423,"name":"Literal","src":"6079:38:0"}],"id":3424,"name":"FunctionCall","src":"6047:71:0"}],"id":3425,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3426,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3427,"name":"Identifier","src":"6142:8:0"}],"id":3428,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3429,"name":"Literal","src":"6154:4:0"}],"id":3430,"name":"Assignment","src":"6128:30:0"}],"id":3431,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"_controllerCount"},"id":3432,"name":"Identifier","src":"6168:16:0"}],"id":3433,"name":"UnaryOperation","src":"6168:18:0"}],"id":3434,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3104,"type":"function (address,address)","value":"AddedController"},"id":3435,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3436,"name":"Identifier","src":"6217:3:0"}],"id":3437,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"address","value":"_account"},"id":3438,"name":"Identifier","src":"6229:8:0"}],"id":3439,"name":"FunctionCall","src":"6201:37:0"}],"id":3440,"name":"EmitStatement","src":"6196:42:0"}],"id":3441,"name":"Block","src":"5793:452:0"}],"id":3442,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3470,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3443,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":3444,"name":"VariableDeclaration","src":"6354:16:0"}],"id":3445,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3446,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3447,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3448,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3444,"type":"address","value":"_account"},"id":3449,"name":"Identifier","src":"6412:8:0"}],"id":3450,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":3451,"name":"Literal","src":"6423:38:0"}],"id":3452,"name":"FunctionCall","src":"6390:72:0"}],"id":3453,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3148,"type":"mapping(address => bool)","value":"_isController"},"id":3454,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3444,"type":"address","value":"_account"},"id":3455,"name":"Identifier","src":"6486:8:0"}],"id":3456,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3457,"name":"Literal","src":"6498:5:0"}],"id":3458,"name":"Assignment","src":"6472:31:0"}],"id":3459,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3150,"type":"uint256","value":"_controllerCount"},"id":3460,"name":"Identifier","src":"6513:16:0"}],"id":3461,"name":"UnaryOperation","src":"6513:18:0"}],"id":3462,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3110,"type":"function (address,address)","value":"RemovedController"},"id":3463,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3464,"name":"Identifier","src":"6564:3:0"}],"id":3465,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3444,"type":"address","value":"_account"},"id":3466,"name":"Identifier","src":"6576:8:0"}],"id":3467,"name":"FunctionCall","src":"6546:39:0"}],"id":3468,"name":"EmitStatement","src":"6541:44:0"}],"id":3469,"name":"Block","src":"6380:212:0"}],"id":3470,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3471,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":3474,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3191,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3472,"name":"Identifier","src":"6690:16:0"}],"id":3473,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3152,"type":"bool","value":"_stopped"},"id":3475,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3476,"name":"Literal","src":"6728:4:0"}],"id":3477,"name":"Assignment","src":"6717:15:0"}],"id":3478,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3134,"type":"function (address)","value":"Stopped"},"id":3479,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3480,"name":"Identifier","src":"6755:3:0"}],"id":3481,"name":"MemberAccess","src":"6755:10:0"}],"id":3482,"name":"FunctionCall","src":"6747:19:0"}],"id":3483,"name":"EmitStatement","src":"6742:24:0"}],"id":3484,"name":"Block","src":"6707:66:0"}],"id":3485,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3486,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":3489,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3487,"name":"Identifier","src":"6848:9:0"}],"id":3488,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3152,"type":"bool","value":"_stopped"},"id":3490,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3491,"name":"Literal","src":"6879:5:0"}],"id":3492,"name":"Assignment","src":"6868:16:0"}],"id":3493,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3138,"type":"function (address)","value":"Started"},"id":3494,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3495,"name":"Identifier","src":"6907:3:0"}],"id":3496,"name":"MemberAccess","src":"6907:10:0"}],"id":3497,"name":"FunctionCall","src":"6899:19:0"}],"id":3498,"name":"EmitStatement","src":"6894:24:0"}],"id":3499,"name":"Block","src":"6858:67:0"}],"id":3500,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":3527,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3526,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3501,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":3502,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":3526,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3503,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":3504,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":3526,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3505,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":3506,"name":"VariableDeclaration","src":"7066:15:0"}],"id":3507,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":3512,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3174,"type":"modifier ()","value":"onlyAdmin"},"id":3508,"name":"Identifier","src":"7092:9:0"}],"id":3509,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"modifier ()","value":"notStopped"},"id":3510,"name":"Identifier","src":"7102:10:0"}],"id":3511,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3072,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":3513,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3502,"type":"address payable","value":"_to"},"id":3514,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3504,"type":"address","value":"_asset"},"id":3515,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3506,"type":"uint256","value":"_amount"},"id":3516,"name":"Identifier","src":"7150:7:0"}],"id":3517,"name":"FunctionCall","src":"7123:35:0"}],"id":3518,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3130,"type":"function (address,address,uint256)","value":"Claimed"},"id":3519,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3502,"type":"address payable","value":"_to"},"id":3520,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3504,"type":"address","value":"_asset"},"id":3521,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3506,"type":"uint256","value":"_amount"},"id":3522,"name":"Identifier","src":"7194:7:0"}],"id":3523,"name":"FunctionCall","src":"7173:29:0"}],"id":3524,"name":"EmitStatement","src":"7168:34:0"}],"id":3525,"name":"Block","src":"7113:96:0"}],"id":3526,"name":"FunctionDefinition","src":"7014:195:0"}],"id":3527,"name":"ContractDefinition","src":"1460:5751:0"}],"id":3528,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[4331]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4314,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[4331],"name":"Address","scope":4332},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":4331,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":4330,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4315,"name":"ElementaryTypeName","src":"562:7:1"}],"id":4316,"name":"VariableDeclaration","src":"562:15:1"}],"id":4317,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":4330,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4318,"name":"ElementaryTypeName","src":"602:4:1"}],"id":4319,"name":"VariableDeclaration","src":"602:4:1"}],"id":4320,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[4322],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":4329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4321,"name":"ElementaryTypeName","src":"805:7:1"}],"id":4322,"name":"VariableDeclaration","src":"805:12:1"}],"id":4323,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":4322,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":4316,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":4324,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":4320},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4322,"type":"uint256","value":"size"},"id":4325,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4326,"name":"Literal","src":"947:1:1"}],"id":4327,"name":"BinaryOperation","src":"940:8:1"}],"id":4328,"name":"Return","src":"933:15:1"}],"id":4329,"name":"Block","src":"608:347:1"}],"id":4330,"name":"FunctionDefinition","src":"542:413:1"}],"id":4331,"name":"ContractDefinition","src":"94:863:1"}],"id":4332,"name":"SourceUnit","src":"0:958:1"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[3625]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3574,"name":"PragmaDirective","src":"0:24:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[3625],"name":"ERC20","scope":3626},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":3625,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":3583,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3575,"name":"ElementaryTypeName","src":"193:7:2"}],"id":3576,"name":"VariableDeclaration","src":"193:14:2"},{"attributes":{"constant":false,"name":"_spender","scope":3583,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3577,"name":"ElementaryTypeName","src":"209:7:2"}],"id":3578,"name":"VariableDeclaration","src":"209:16:2"}],"id":3579,"name":"ParameterList","src":"192:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3580,"name":"ElementaryTypeName","src":"250:7:2"}],"id":3581,"name":"VariableDeclaration","src":"250:7:2"}],"id":3582,"name":"ParameterList","src":"249:9:2"}],"id":3583,"name":"FunctionDefinition","src":"174:85:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":3625,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":3592,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3584,"name":"ElementaryTypeName","src":"281:7:2"}],"id":3585,"name":"VariableDeclaration","src":"281:16:2"},{"attributes":{"constant":false,"name":"_value","scope":3592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3586,"name":"ElementaryTypeName","src":"299:7:2"}],"id":3587,"name":"VariableDeclaration","src":"299:14:2"}],"id":3588,"name":"ParameterList","src":"280:34:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3592,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3589,"name":"ElementaryTypeName","src":"333:4:2"}],"id":3590,"name":"VariableDeclaration","src":"333:4:2"}],"id":3591,"name":"ParameterList","src":"332:6:2"}],"id":3592,"name":"FunctionDefinition","src":"264:75:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":3625,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":3599,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3593,"name":"ElementaryTypeName","src":"363:7:2"}],"id":3594,"name":"VariableDeclaration","src":"363:12:2"}],"id":3595,"name":"ParameterList","src":"362:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3599,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3596,"name":"ElementaryTypeName","src":"400:7:2"}],"id":3597,"name":"VariableDeclaration","src":"400:7:2"}],"id":3598,"name":"ParameterList","src":"399:9:2"}],"id":3599,"name":"FunctionDefinition","src":"344:65:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":3625,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3600,"name":"ParameterList","src":"434:2:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3601,"name":"ElementaryTypeName","src":"460:7:2"}],"id":3602,"name":"VariableDeclaration","src":"460:7:2"}],"id":3603,"name":"ParameterList","src":"459:9:2"}],"id":3604,"name":"FunctionDefinition","src":"414:55:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":3625,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3613,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3605,"name":"ElementaryTypeName","src":"492:7:2"}],"id":3606,"name":"VariableDeclaration","src":"492:11:2"},{"attributes":{"constant":false,"name":"_value","scope":3613,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3607,"name":"ElementaryTypeName","src":"505:7:2"}],"id":3608,"name":"VariableDeclaration","src":"505:14:2"}],"id":3609,"name":"ParameterList","src":"491:29:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3613,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3610,"name":"ElementaryTypeName","src":"539:4:2"}],"id":3611,"name":"VariableDeclaration","src":"539:4:2"}],"id":3612,"name":"ParameterList","src":"538:6:2"}],"id":3613,"name":"FunctionDefinition","src":"474:71:2"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":3625,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":3624,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3614,"name":"ElementaryTypeName","src":"572:7:2"}],"id":3615,"name":"VariableDeclaration","src":"572:13:2"},{"attributes":{"constant":false,"name":"_to","scope":3624,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3616,"name":"ElementaryTypeName","src":"587:7:2"}],"id":3617,"name":"VariableDeclaration","src":"587:11:2"},{"attributes":{"constant":false,"name":"_value","scope":3624,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3618,"name":"ElementaryTypeName","src":"600:7:2"}],"id":3619,"name":"VariableDeclaration","src":"600:14:2"}],"id":3620,"name":"ParameterList","src":"571:44:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3624,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3621,"name":"ElementaryTypeName","src":"634:4:2"}],"id":3622,"name":"VariableDeclaration","src":"634:4:2"}],"id":3623,"name":"ParameterList","src":"633:6:2"}],"id":3624,"name":"FunctionDefinition","src":"550:90:2"}],"id":3625,"name":"ContractDefinition","src":"152:490:2"}],"id":3626,"name":"SourceUnit","src":"0:643:2"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[3844]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3627,"name":"PragmaDirective","src":"1161:23:3"},{"attributes":{"SourceUnit":3626,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":3845,"symbolAliases":[null],"unitAlias":""},"id":3628,"name":"ImportDirective","src":"1186:21:3"},{"attributes":{"SourceUnit":1121,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":3845,"symbolAliases":[null],"unitAlias":""},"id":3629,"name":"ImportDirective","src":"1208:24:3"},{"attributes":{"SourceUnit":4332,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":3845,"symbolAliases":[null],"unitAlias":""},"id":3630,"name":"ImportDirective","src":"1233:23:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[3844],"name":"SafeERC20","scope":3845},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1120,"type":"library SafeMath"},"id":3631,"name":"UserDefinedTypeName","src":"1745:8:3"},{"attributes":{"name":"uint256","type":"uint256"},"id":3632,"name":"ElementaryTypeName","src":"1758:7:3"}],"id":3633,"name":"UsingForDirective","src":"1739:27:3"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":4331,"type":"library Address"},"id":3634,"name":"UserDefinedTypeName","src":"1777:7:3"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3635,"name":"ElementaryTypeName","src":"1789:7:3"}],"id":3636,"name":"UsingForDirective","src":"1771:26:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3658,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3637,"name":"UserDefinedTypeName","src":"1825:5:3"}],"id":3638,"name":"VariableDeclaration","src":"1825:11:3"},{"attributes":{"constant":false,"name":"to","scope":3658,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3639,"name":"ElementaryTypeName","src":"1838:7:3"}],"id":3640,"name":"VariableDeclaration","src":"1838:10:3"},{"attributes":{"constant":false,"name":"value","scope":3658,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3641,"name":"ElementaryTypeName","src":"1850:7:3"}],"id":3642,"name":"VariableDeclaration","src":"1850:13:3"}],"id":3643,"name":"ParameterList","src":"1824:40:3"},{"attributes":{"parameters":[null]},"children":[],"id":3644,"name":"ParameterList","src":"1874:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3645,"name":"Identifier","src":"1884:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3638,"type":"contract ERC20","value":"token"},"id":3646,"name":"Identifier","src":"1903:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3647,"name":"Identifier","src":"1910:3:3"}],"id":3648,"name":"MemberAccess","src":"1910:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":3613,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3638,"type":"contract ERC20","value":"token"},"id":3649,"name":"Identifier","src":"1933:5:3"}],"id":3650,"name":"MemberAccess","src":"1933:14:3"}],"id":3651,"name":"MemberAccess","src":"1933:23:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3640,"type":"address","value":"to"},"id":3652,"name":"Identifier","src":"1958:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3642,"type":"uint256","value":"value"},"id":3653,"name":"Identifier","src":"1962:5:3"}],"id":3654,"name":"FunctionCall","src":"1910:58:3"}],"id":3655,"name":"FunctionCall","src":"1884:85:3"}],"id":3656,"name":"ExpressionStatement","src":"1884:85:3"}],"id":3657,"name":"Block","src":"1874:102:3"}],"id":3658,"name":"FunctionDefinition","src":"1803:173:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3683,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3659,"name":"UserDefinedTypeName","src":"2008:5:3"}],"id":3660,"name":"VariableDeclaration","src":"2008:11:3"},{"attributes":{"constant":false,"name":"from","scope":3683,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3661,"name":"ElementaryTypeName","src":"2021:7:3"}],"id":3662,"name":"VariableDeclaration","src":"2021:12:3"},{"attributes":{"constant":false,"name":"to","scope":3683,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3663,"name":"ElementaryTypeName","src":"2035:7:3"}],"id":3664,"name":"VariableDeclaration","src":"2035:10:3"},{"attributes":{"constant":false,"name":"value","scope":3683,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3665,"name":"ElementaryTypeName","src":"2047:7:3"}],"id":3666,"name":"VariableDeclaration","src":"2047:13:3"}],"id":3667,"name":"ParameterList","src":"2007:54:3"},{"attributes":{"parameters":[null]},"children":[],"id":3668,"name":"ParameterList","src":"2071:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3669,"name":"Identifier","src":"2081:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3660,"type":"contract ERC20","value":"token"},"id":3670,"name":"Identifier","src":"2100:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3671,"name":"Identifier","src":"2107:3:3"}],"id":3672,"name":"MemberAccess","src":"2107:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":3624,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3660,"type":"contract ERC20","value":"token"},"id":3673,"name":"Identifier","src":"2130:5:3"}],"id":3674,"name":"MemberAccess","src":"2130:18:3"}],"id":3675,"name":"MemberAccess","src":"2130:27:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3662,"type":"address","value":"from"},"id":3676,"name":"Identifier","src":"2159:4:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3664,"type":"address","value":"to"},"id":3677,"name":"Identifier","src":"2165:2:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3666,"type":"uint256","value":"value"},"id":3678,"name":"Identifier","src":"2169:5:3"}],"id":3679,"name":"FunctionCall","src":"2107:68:3"}],"id":3680,"name":"FunctionCall","src":"2081:95:3"}],"id":3681,"name":"ExpressionStatement","src":"2081:95:3"}],"id":3682,"name":"Block","src":"2071:112:3"}],"id":3683,"name":"FunctionDefinition","src":"1982:201:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3724,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3684,"name":"UserDefinedTypeName","src":"2210:5:3"}],"id":3685,"name":"VariableDeclaration","src":"2210:11:3"},{"attributes":{"constant":false,"name":"spender","scope":3724,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3686,"name":"ElementaryTypeName","src":"2223:7:3"}],"id":3687,"name":"VariableDeclaration","src":"2223:15:3"},{"attributes":{"constant":false,"name":"value","scope":3724,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3688,"name":"ElementaryTypeName","src":"2240:7:3"}],"id":3689,"name":"VariableDeclaration","src":"2240:13:3"}],"id":3690,"name":"ParameterList","src":"2209:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":3691,"name":"ParameterList","src":"2264:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3692,"name":"Identifier","src":"2544:7:3"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3689,"type":"uint256","value":"value"},"id":3693,"name":"Identifier","src":"2553:5:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3694,"name":"Literal","src":"2562:1:3"}],"id":3695,"name":"BinaryOperation","src":"2553:10:3"}],"id":3696,"name":"TupleExpression","src":"2552:12:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3583,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3685,"type":"contract ERC20","value":"token"},"id":3697,"name":"Identifier","src":"2569:5:3"}],"id":3698,"name":"MemberAccess","src":"2569:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3844","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3699,"name":"ElementaryTypeNameExpression","src":"2585:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7063,"type":"library SafeERC20","value":"this"},"id":3700,"name":"Identifier","src":"2593:4:3"}],"id":3701,"name":"FunctionCall","src":"2585:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3687,"type":"address","value":"spender"},"id":3702,"name":"Identifier","src":"2600:7:3"}],"id":3703,"name":"FunctionCall","src":"2569:39:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3704,"name":"Literal","src":"2612:1:3"}],"id":3705,"name":"BinaryOperation","src":"2569:44:3"}],"id":3706,"name":"TupleExpression","src":"2568:46:3"}],"id":3707,"name":"BinaryOperation","src":"2552:62:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":3708,"name":"Literal","src":"2628:56:3"}],"id":3709,"name":"FunctionCall","src":"2544:150:3"}],"id":3710,"name":"ExpressionStatement","src":"2544:150:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3711,"name":"Identifier","src":"2704:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3685,"type":"contract ERC20","value":"token"},"id":3712,"name":"Identifier","src":"2723:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3713,"name":"Identifier","src":"2730:3:3"}],"id":3714,"name":"MemberAccess","src":"2730:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3592,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3685,"type":"contract ERC20","value":"token"},"id":3715,"name":"Identifier","src":"2753:5:3"}],"id":3716,"name":"MemberAccess","src":"2753:13:3"}],"id":3717,"name":"MemberAccess","src":"2753:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3687,"type":"address","value":"spender"},"id":3718,"name":"Identifier","src":"2777:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3689,"type":"uint256","value":"value"},"id":3719,"name":"Identifier","src":"2786:5:3"}],"id":3720,"name":"FunctionCall","src":"2730:62:3"}],"id":3721,"name":"FunctionCall","src":"2704:89:3"}],"id":3722,"name":"ExpressionStatement","src":"2704:89:3"}],"id":3723,"name":"Block","src":"2264:536:3"}],"id":3724,"name":"FunctionDefinition","src":"2189:611:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3759,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3725,"name":"UserDefinedTypeName","src":"2837:5:3"}],"id":3726,"name":"VariableDeclaration","src":"2837:11:3"},{"attributes":{"constant":false,"name":"spender","scope":3759,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3727,"name":"ElementaryTypeName","src":"2850:7:3"}],"id":3728,"name":"VariableDeclaration","src":"2850:15:3"},{"attributes":{"constant":false,"name":"value","scope":3759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3729,"name":"ElementaryTypeName","src":"2867:7:3"}],"id":3730,"name":"VariableDeclaration","src":"2867:13:3"}],"id":3731,"name":"ParameterList","src":"2836:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":3732,"name":"ParameterList","src":"2891:0:3"},{"children":[{"attributes":{"assignments":[3734]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3758,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3733,"name":"ElementaryTypeName","src":"2901:7:3"}],"id":3734,"name":"VariableDeclaration","src":"2901:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3583,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"contract ERC20","value":"token"},"id":3735,"name":"Identifier","src":"2924:5:3"}],"id":3736,"name":"MemberAccess","src":"2924:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3844","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3737,"name":"ElementaryTypeNameExpression","src":"2940:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7063,"type":"library SafeERC20","value":"this"},"id":3738,"name":"Identifier","src":"2948:4:3"}],"id":3739,"name":"FunctionCall","src":"2940:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3728,"type":"address","value":"spender"},"id":3740,"name":"Identifier","src":"2955:7:3"}],"id":3741,"name":"FunctionCall","src":"2924:39:3"}],"id":3742,"name":"MemberAccess","src":"2924:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3730,"type":"uint256","value":"value"},"id":3743,"name":"Identifier","src":"2968:5:3"}],"id":3744,"name":"FunctionCall","src":"2924:50:3"}],"id":3745,"name":"VariableDeclarationStatement","src":"2901:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3746,"name":"Identifier","src":"2984:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"contract ERC20","value":"token"},"id":3747,"name":"Identifier","src":"3003:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3748,"name":"Identifier","src":"3010:3:3"}],"id":3749,"name":"MemberAccess","src":"3010:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3592,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"contract ERC20","value":"token"},"id":3750,"name":"Identifier","src":"3033:5:3"}],"id":3751,"name":"MemberAccess","src":"3033:13:3"}],"id":3752,"name":"MemberAccess","src":"3033:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3728,"type":"address","value":"spender"},"id":3753,"name":"Identifier","src":"3057:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3734,"type":"uint256","value":"newAllowance"},"id":3754,"name":"Identifier","src":"3066:12:3"}],"id":3755,"name":"FunctionCall","src":"3010:69:3"}],"id":3756,"name":"FunctionCall","src":"2984:96:3"}],"id":3757,"name":"ExpressionStatement","src":"2984:96:3"}],"id":3758,"name":"Block","src":"2891:196:3"}],"id":3759,"name":"FunctionDefinition","src":"2806:281:3"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3794,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3760,"name":"UserDefinedTypeName","src":"3124:5:3"}],"id":3761,"name":"VariableDeclaration","src":"3124:11:3"},{"attributes":{"constant":false,"name":"spender","scope":3794,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3762,"name":"ElementaryTypeName","src":"3137:7:3"}],"id":3763,"name":"VariableDeclaration","src":"3137:15:3"},{"attributes":{"constant":false,"name":"value","scope":3794,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3764,"name":"ElementaryTypeName","src":"3154:7:3"}],"id":3765,"name":"VariableDeclaration","src":"3154:13:3"}],"id":3766,"name":"ParameterList","src":"3123:45:3"},{"attributes":{"parameters":[null]},"children":[],"id":3767,"name":"ParameterList","src":"3178:0:3"},{"children":[{"attributes":{"assignments":[3769]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3793,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3768,"name":"ElementaryTypeName","src":"3188:7:3"}],"id":3769,"name":"VariableDeclaration","src":"3188:20:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1039,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3583,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"contract ERC20","value":"token"},"id":3770,"name":"Identifier","src":"3211:5:3"}],"id":3771,"name":"MemberAccess","src":"3211:15:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3844","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3772,"name":"ElementaryTypeNameExpression","src":"3227:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7063,"type":"library SafeERC20","value":"this"},"id":3773,"name":"Identifier","src":"3235:4:3"}],"id":3774,"name":"FunctionCall","src":"3227:13:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3763,"type":"address","value":"spender"},"id":3775,"name":"Identifier","src":"3242:7:3"}],"id":3776,"name":"FunctionCall","src":"3211:39:3"}],"id":3777,"name":"MemberAccess","src":"3211:43:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3765,"type":"uint256","value":"value"},"id":3778,"name":"Identifier","src":"3255:5:3"}],"id":3779,"name":"FunctionCall","src":"3211:50:3"}],"id":3780,"name":"VariableDeclarationStatement","src":"3188:73:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3843,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3781,"name":"Identifier","src":"3271:18:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"contract ERC20","value":"token"},"id":3782,"name":"Identifier","src":"3290:5:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3783,"name":"Identifier","src":"3297:3:3"}],"id":3784,"name":"MemberAccess","src":"3297:22:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3592,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"contract ERC20","value":"token"},"id":3785,"name":"Identifier","src":"3320:5:3"}],"id":3786,"name":"MemberAccess","src":"3320:13:3"}],"id":3787,"name":"MemberAccess","src":"3320:22:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3763,"type":"address","value":"spender"},"id":3788,"name":"Identifier","src":"3344:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"uint256","value":"newAllowance"},"id":3789,"name":"Identifier","src":"3353:12:3"}],"id":3790,"name":"FunctionCall","src":"3297:69:3"}],"id":3791,"name":"FunctionCall","src":"3271:96:3"}],"id":3792,"name":"ExpressionStatement","src":"3271:96:3"}],"id":3793,"name":"Block","src":"3178:196:3"}],"id":3794,"name":"FunctionDefinition","src":"3093:281:3"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":3844,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3843,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3795,"name":"UserDefinedTypeName","src":"3785:5:3"}],"id":3796,"name":"VariableDeclaration","src":"3785:11:3"},{"attributes":{"constant":false,"name":"data","scope":3843,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3797,"name":"ElementaryTypeName","src":"3798:5:3"}],"id":3798,"name":"VariableDeclaration","src":"3798:17:3"}],"id":3799,"name":"ParameterList","src":"3784:32:3"},{"attributes":{"parameters":[null]},"children":[],"id":3800,"name":"ParameterList","src":"3826:0:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3801,"name":"Identifier","src":"4344:7:3"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":4330,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3802,"name":"ElementaryTypeNameExpression","src":"4352:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3796,"type":"contract ERC20","value":"token"},"id":3803,"name":"Identifier","src":"4360:5:3"}],"id":3804,"name":"FunctionCall","src":"4352:14:3"}],"id":3805,"name":"MemberAccess","src":"4352:25:3"}],"id":3806,"name":"FunctionCall","src":"4352:27:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":3807,"name":"Literal","src":"4381:33:3"}],"id":3808,"name":"FunctionCall","src":"4344:71:3"}],"id":3809,"name":"ExpressionStatement","src":"4344:71:3"},{"attributes":{"assignments":[3811,3813]},"children":[{"attributes":{"constant":false,"name":"success","scope":3842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3810,"name":"ElementaryTypeName","src":"4486:4:3"}],"id":3811,"name":"VariableDeclaration","src":"4486:12:3"},{"attributes":{"constant":false,"name":"returndata","scope":3842,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3812,"name":"ElementaryTypeName","src":"4500:5:3"}],"id":3813,"name":"VariableDeclaration","src":"4500:23:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3625","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3814,"name":"ElementaryTypeNameExpression","src":"4527:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3796,"type":"contract ERC20","value":"token"},"id":3815,"name":"Identifier","src":"4535:5:3"}],"id":3816,"name":"FunctionCall","src":"4527:14:3"}],"id":3817,"name":"MemberAccess","src":"4527:19:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3798,"type":"bytes memory","value":"data"},"id":3818,"name":"Identifier","src":"4547:4:3"}],"id":3819,"name":"FunctionCall","src":"4527:25:3"}],"id":3820,"name":"VariableDeclarationStatement","src":"4485:67:3"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3821,"name":"Identifier","src":"4562:7:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3811,"type":"bool","value":"success"},"id":3822,"name":"Identifier","src":"4570:7:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":3823,"name":"Literal","src":"4579:34:3"}],"id":3824,"name":"FunctionCall","src":"4562:52:3"}],"id":3825,"name":"ExpressionStatement","src":"4562:52:3"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3813,"type":"bytes memory","value":"returndata"},"id":3826,"name":"Identifier","src":"4629:10:3"}],"id":3827,"name":"MemberAccess","src":"4629:17:3"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3828,"name":"Literal","src":"4649:1:3"}],"id":3829,"name":"BinaryOperation","src":"4629:21:3"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3830,"name":"Identifier","src":"4750:7:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":3831,"name":"Identifier","src":"4758:3:3"}],"id":3832,"name":"MemberAccess","src":"4758:10:3"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3813,"type":"bytes memory","value":"returndata"},"id":3833,"name":"Identifier","src":"4769:10:3"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":3834,"name":"ElementaryTypeNameExpression","src":"4782:4:3"}],"id":3835,"name":"TupleExpression","src":"4781:6:3"}],"id":3836,"name":"FunctionCall","src":"4758:30:3"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":3837,"name":"Literal","src":"4790:44:3"}],"id":3838,"name":"FunctionCall","src":"4750:85:3"}],"id":3839,"name":"ExpressionStatement","src":"4750:85:3"}],"id":3840,"name":"Block","src":"4652:194:3"}],"id":3841,"name":"IfStatement","src":"4625:221:3"}],"id":3842,"name":"Block","src":"3826:1026:3"}],"id":3843,"name":"FunctionDefinition","src":"3757:1095:3"}],"id":3844,"name":"ContractDefinition","src":"1715:3139:3"}],"id":3845,"name":"SourceUnit","src":"1161:3694:3"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[1120]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":989,"name":"PragmaDirective","src":"0:23:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[1120],"name":"SafeMath","scope":1121},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1014,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":990,"name":"ElementaryTypeName","src":"847:7:4"}],"id":991,"name":"VariableDeclaration","src":"847:9:4"},{"attributes":{"constant":false,"name":"b","scope":1014,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":992,"name":"ElementaryTypeName","src":"858:7:4"}],"id":993,"name":"VariableDeclaration","src":"858:9:4"}],"id":994,"name":"ParameterList","src":"846:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1014,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":995,"name":"ElementaryTypeName","src":"892:7:4"}],"id":996,"name":"VariableDeclaration","src":"892:7:4"}],"id":997,"name":"ParameterList","src":"891:9:4"},{"children":[{"attributes":{"assignments":[999]},"children":[{"attributes":{"constant":false,"name":"c","scope":1013,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":998,"name":"ElementaryTypeName","src":"911:7:4"}],"id":999,"name":"VariableDeclaration","src":"911:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":991,"type":"uint256","value":"a"},"id":1000,"name":"Identifier","src":"923:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":993,"type":"uint256","value":"b"},"id":1001,"name":"Identifier","src":"927:1:4"}],"id":1002,"name":"BinaryOperation","src":"923:5:4"}],"id":1003,"name":"VariableDeclarationStatement","src":"911:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1004,"name":"Identifier","src":"938:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":999,"type":"uint256","value":"c"},"id":1005,"name":"Identifier","src":"946:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":991,"type":"uint256","value":"a"},"id":1006,"name":"Identifier","src":"951:1:4"}],"id":1007,"name":"BinaryOperation","src":"946:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":1008,"name":"Literal","src":"954:29:4"}],"id":1009,"name":"FunctionCall","src":"938:46:4"}],"id":1010,"name":"ExpressionStatement","src":"938:46:4"},{"attributes":{"functionReturnParameters":997},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":999,"type":"uint256","value":"c"},"id":1011,"name":"Identifier","src":"1002:1:4"}],"id":1012,"name":"Return","src":"995:8:4"}],"id":1013,"name":"Block","src":"901:109:4"}],"id":1014,"name":"FunctionDefinition","src":"834:176:4"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1015,"name":"ElementaryTypeName","src":"1287:7:4"}],"id":1016,"name":"VariableDeclaration","src":"1287:9:4"},{"attributes":{"constant":false,"name":"b","scope":1039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1017,"name":"ElementaryTypeName","src":"1298:7:4"}],"id":1018,"name":"VariableDeclaration","src":"1298:9:4"}],"id":1019,"name":"ParameterList","src":"1286:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1039,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1020,"name":"ElementaryTypeName","src":"1332:7:4"}],"id":1021,"name":"VariableDeclaration","src":"1332:7:4"}],"id":1022,"name":"ParameterList","src":"1331:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1023,"name":"Identifier","src":"1351:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1018,"type":"uint256","value":"b"},"id":1024,"name":"Identifier","src":"1359:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1016,"type":"uint256","value":"a"},"id":1025,"name":"Identifier","src":"1364:1:4"}],"id":1026,"name":"BinaryOperation","src":"1359:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":1027,"name":"Literal","src":"1367:32:4"}],"id":1028,"name":"FunctionCall","src":"1351:49:4"}],"id":1029,"name":"ExpressionStatement","src":"1351:49:4"},{"attributes":{"assignments":[1031]},"children":[{"attributes":{"constant":false,"name":"c","scope":1038,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1030,"name":"ElementaryTypeName","src":"1410:7:4"}],"id":1031,"name":"VariableDeclaration","src":"1410:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1016,"type":"uint256","value":"a"},"id":1032,"name":"Identifier","src":"1422:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1018,"type":"uint256","value":"b"},"id":1033,"name":"Identifier","src":"1426:1:4"}],"id":1034,"name":"BinaryOperation","src":"1422:5:4"}],"id":1035,"name":"VariableDeclarationStatement","src":"1410:17:4"},{"attributes":{"functionReturnParameters":1022},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1031,"type":"uint256","value":"c"},"id":1036,"name":"Identifier","src":"1445:1:4"}],"id":1037,"name":"Return","src":"1438:8:4"}],"id":1038,"name":"Block","src":"1341:112:4"}],"id":1039,"name":"FunctionDefinition","src":"1274:179:4"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1040,"name":"ElementaryTypeName","src":"1706:7:4"}],"id":1041,"name":"VariableDeclaration","src":"1706:9:4"},{"attributes":{"constant":false,"name":"b","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1042,"name":"ElementaryTypeName","src":"1717:7:4"}],"id":1043,"name":"VariableDeclaration","src":"1717:9:4"}],"id":1044,"name":"ParameterList","src":"1705:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1045,"name":"ElementaryTypeName","src":"1751:7:4"}],"id":1046,"name":"VariableDeclaration","src":"1751:7:4"}],"id":1047,"name":"ParameterList","src":"1750:9:4"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1041,"type":"uint256","value":"a"},"id":1048,"name":"Identifier","src":"1991:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1049,"name":"Literal","src":"1996:1:4"}],"id":1050,"name":"BinaryOperation","src":"1991:6:4"},{"children":[{"attributes":{"functionReturnParameters":1047},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1051,"name":"Literal","src":"2020:1:4"}],"id":1052,"name":"Return","src":"2013:8:4"}],"id":1053,"name":"Block","src":"1999:33:4"}],"id":1054,"name":"IfStatement","src":"1987:45:4"},{"attributes":{"assignments":[1056]},"children":[{"attributes":{"constant":false,"name":"c","scope":1072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1055,"name":"ElementaryTypeName","src":"2042:7:4"}],"id":1056,"name":"VariableDeclaration","src":"2042:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1041,"type":"uint256","value":"a"},"id":1057,"name":"Identifier","src":"2054:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1043,"type":"uint256","value":"b"},"id":1058,"name":"Identifier","src":"2058:1:4"}],"id":1059,"name":"BinaryOperation","src":"2054:5:4"}],"id":1060,"name":"VariableDeclarationStatement","src":"2042:17:4"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1061,"name":"Identifier","src":"2069:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"uint256","value":"c"},"id":1062,"name":"Identifier","src":"2077:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1041,"type":"uint256","value":"a"},"id":1063,"name":"Identifier","src":"2081:1:4"}],"id":1064,"name":"BinaryOperation","src":"2077:5:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1043,"type":"uint256","value":"b"},"id":1065,"name":"Identifier","src":"2086:1:4"}],"id":1066,"name":"BinaryOperation","src":"2077:10:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":1067,"name":"Literal","src":"2089:35:4"}],"id":1068,"name":"FunctionCall","src":"2069:56:4"}],"id":1069,"name":"ExpressionStatement","src":"2069:56:4"},{"attributes":{"functionReturnParameters":1047},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"uint256","value":"c"},"id":1070,"name":"Identifier","src":"2143:1:4"}],"id":1071,"name":"Return","src":"2136:8:4"}],"id":1072,"name":"Block","src":"1760:391:4"}],"id":1073,"name":"FunctionDefinition","src":"1693:458:4"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1074,"name":"ElementaryTypeName","src":"2619:7:4"}],"id":1075,"name":"VariableDeclaration","src":"2619:9:4"},{"attributes":{"constant":false,"name":"b","scope":1098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1076,"name":"ElementaryTypeName","src":"2630:7:4"}],"id":1077,"name":"VariableDeclaration","src":"2630:9:4"}],"id":1078,"name":"ParameterList","src":"2618:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1098,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1079,"name":"ElementaryTypeName","src":"2664:7:4"}],"id":1080,"name":"VariableDeclaration","src":"2664:7:4"}],"id":1081,"name":"ParameterList","src":"2663:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1082,"name":"Identifier","src":"2749:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1077,"type":"uint256","value":"b"},"id":1083,"name":"Identifier","src":"2757:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1084,"name":"Literal","src":"2761:1:4"}],"id":1085,"name":"BinaryOperation","src":"2757:5:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":1086,"name":"Literal","src":"2764:28:4"}],"id":1087,"name":"FunctionCall","src":"2749:44:4"}],"id":1088,"name":"ExpressionStatement","src":"2749:44:4"},{"attributes":{"assignments":[1090]},"children":[{"attributes":{"constant":false,"name":"c","scope":1097,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1089,"name":"ElementaryTypeName","src":"2803:7:4"}],"id":1090,"name":"VariableDeclaration","src":"2803:9:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1075,"type":"uint256","value":"a"},"id":1091,"name":"Identifier","src":"2815:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1077,"type":"uint256","value":"b"},"id":1092,"name":"Identifier","src":"2819:1:4"}],"id":1093,"name":"BinaryOperation","src":"2815:5:4"}],"id":1094,"name":"VariableDeclarationStatement","src":"2803:17:4"},{"attributes":{"functionReturnParameters":1081},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1090,"type":"uint256","value":"c"},"id":1095,"name":"Identifier","src":"2924:1:4"}],"id":1096,"name":"Return","src":"2917:8:4"}],"id":1097,"name":"Block","src":"2673:259:4"}],"id":1098,"name":"FunctionDefinition","src":"2606:326:4"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":1120,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":1119,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1099,"name":"ElementaryTypeName","src":"3389:7:4"}],"id":1100,"name":"VariableDeclaration","src":"3389:9:4"},{"attributes":{"constant":false,"name":"b","scope":1119,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1101,"name":"ElementaryTypeName","src":"3400:7:4"}],"id":1102,"name":"VariableDeclaration","src":"3400:9:4"}],"id":1103,"name":"ParameterList","src":"3388:22:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":1119,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1104,"name":"ElementaryTypeName","src":"3434:7:4"}],"id":1105,"name":"VariableDeclaration","src":"3434:7:4"}],"id":1106,"name":"ParameterList","src":"3433:9:4"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":1107,"name":"Identifier","src":"3453:7:4"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1102,"type":"uint256","value":"b"},"id":1108,"name":"Identifier","src":"3461:1:4"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1109,"name":"Literal","src":"3466:1:4"}],"id":1110,"name":"BinaryOperation","src":"3461:6:4"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":1111,"name":"Literal","src":"3469:26:4"}],"id":1112,"name":"FunctionCall","src":"3453:43:4"}],"id":1113,"name":"ExpressionStatement","src":"3453:43:4"},{"attributes":{"functionReturnParameters":1106},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1100,"type":"uint256","value":"a"},"id":1114,"name":"Identifier","src":"3513:1:4"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1102,"type":"uint256","value":"b"},"id":1115,"name":"Identifier","src":"3517:1:4"}],"id":1116,"name":"BinaryOperation","src":"3513:5:4"}],"id":1117,"name":"Return","src":"3506:12:4"}],"id":1118,"name":"Block","src":"3443:82:4"}],"id":1119,"name":"FunctionDefinition","src":"3376:149:4"}],"id":1120,"name":"ContractDefinition","src":"589:2938:4"}],"id":1121,"name":"SourceUnit","src":"0:3528:4"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[4138]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4003,"name":"PragmaDirective","src":"1400:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4138],"name":"ENS","scope":4139},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4011,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4004,"name":"ElementaryTypeName","src":"1534:7:5"}],"id":4005,"name":"VariableDeclaration","src":"1534:21:5"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":4011,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4006,"name":"ElementaryTypeName","src":"1557:7:5"}],"id":4007,"name":"VariableDeclaration","src":"1557:22:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4011,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4008,"name":"ElementaryTypeName","src":"1581:7:5"}],"id":4009,"name":"VariableDeclaration","src":"1581:14:5"}],"id":4010,"name":"ParameterList","src":"1533:63:5"}],"id":4011,"name":"EventDefinition","src":"1519:78:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4017,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4012,"name":"ElementaryTypeName","src":"1695:7:5"}],"id":4013,"name":"VariableDeclaration","src":"1695:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4017,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4014,"name":"ElementaryTypeName","src":"1718:7:5"}],"id":4015,"name":"VariableDeclaration","src":"1718:14:5"}],"id":4016,"name":"ParameterList","src":"1694:39:5"}],"id":4017,"name":"EventDefinition","src":"1680:54:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4023,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4018,"name":"ElementaryTypeName","src":"1810:7:5"}],"id":4019,"name":"VariableDeclaration","src":"1810:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":4023,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4020,"name":"ElementaryTypeName","src":"1833:7:5"}],"id":4021,"name":"VariableDeclaration","src":"1833:17:5"}],"id":4022,"name":"ParameterList","src":"1809:42:5"}],"id":4023,"name":"EventDefinition","src":"1792:60:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4029,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4024,"name":"ElementaryTypeName","src":"1916:7:5"}],"id":4025,"name":"VariableDeclaration","src":"1916:21:5"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":4029,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4026,"name":"ElementaryTypeName","src":"1939:6:5"}],"id":4027,"name":"VariableDeclaration","src":"1939:11:5"}],"id":4028,"name":"ParameterList","src":"1915:36:5"}],"id":4029,"name":"EventDefinition","src":"1903:49:5"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":4037,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4030,"name":"ElementaryTypeName","src":"2031:7:5"}],"id":4031,"name":"VariableDeclaration","src":"2031:22:5"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":4037,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4032,"name":"ElementaryTypeName","src":"2055:7:5"}],"id":4033,"name":"VariableDeclaration","src":"2055:25:5"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":4037,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4034,"name":"ElementaryTypeName","src":"2082:4:5"}],"id":4035,"name":"VariableDeclaration","src":"2082:14:5"}],"id":4036,"name":"ParameterList","src":"2030:67:5"}],"id":4037,"name":"EventDefinition","src":"2010:88:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4048,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4038,"name":"ElementaryTypeName","src":"2123:7:5"}],"id":4039,"name":"VariableDeclaration","src":"2123:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":4048,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4040,"name":"ElementaryTypeName","src":"2138:7:5"}],"id":4041,"name":"VariableDeclaration","src":"2138:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":4048,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4042,"name":"ElementaryTypeName","src":"2154:7:5"}],"id":4043,"name":"VariableDeclaration","src":"2154:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":4048,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4044,"name":"ElementaryTypeName","src":"2173:6:5"}],"id":4045,"name":"VariableDeclaration","src":"2173:11:5"}],"id":4046,"name":"ParameterList","src":"2122:63:5"},{"attributes":{"parameters":[null]},"children":[],"id":4047,"name":"ParameterList","src":"2194:0:5"}],"id":4048,"name":"FunctionDefinition","src":"2104:91:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4061,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4049,"name":"ElementaryTypeName","src":"2226:7:5"}],"id":4050,"name":"VariableDeclaration","src":"2226:13:5"},{"attributes":{"constant":false,"name":"_label","scope":4061,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4051,"name":"ElementaryTypeName","src":"2241:7:5"}],"id":4052,"name":"VariableDeclaration","src":"2241:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":4061,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4053,"name":"ElementaryTypeName","src":"2257:7:5"}],"id":4054,"name":"VariableDeclaration","src":"2257:14:5"},{"attributes":{"constant":false,"name":"_resolver","scope":4061,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4055,"name":"ElementaryTypeName","src":"2273:7:5"}],"id":4056,"name":"VariableDeclaration","src":"2273:17:5"},{"attributes":{"constant":false,"name":"_ttl","scope":4061,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4057,"name":"ElementaryTypeName","src":"2292:6:5"}],"id":4058,"name":"VariableDeclaration","src":"2292:11:5"}],"id":4059,"name":"ParameterList","src":"2225:79:5"},{"attributes":{"parameters":[null]},"children":[],"id":4060,"name":"ParameterList","src":"2313:0:5"}],"id":4061,"name":"FunctionDefinition","src":"2200:114:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4062,"name":"ElementaryTypeName","src":"2344:7:5"}],"id":4063,"name":"VariableDeclaration","src":"2344:13:5"},{"attributes":{"constant":false,"name":"_label","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4064,"name":"ElementaryTypeName","src":"2359:7:5"}],"id":4065,"name":"VariableDeclaration","src":"2359:14:5"},{"attributes":{"constant":false,"name":"_owner","scope":4072,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4066,"name":"ElementaryTypeName","src":"2375:7:5"}],"id":4067,"name":"VariableDeclaration","src":"2375:14:5"}],"id":4068,"name":"ParameterList","src":"2343:47:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4069,"name":"ElementaryTypeName","src":"2408:7:5"}],"id":4070,"name":"VariableDeclaration","src":"2408:7:5"}],"id":4071,"name":"ParameterList","src":"2407:9:5"}],"id":4072,"name":"FunctionDefinition","src":"2319:98:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4073,"name":"ElementaryTypeName","src":"2443:7:5"}],"id":4074,"name":"VariableDeclaration","src":"2443:13:5"},{"attributes":{"constant":false,"name":"_resolver","scope":4079,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4075,"name":"ElementaryTypeName","src":"2458:7:5"}],"id":4076,"name":"VariableDeclaration","src":"2458:17:5"}],"id":4077,"name":"ParameterList","src":"2442:34:5"},{"attributes":{"parameters":[null]},"children":[],"id":4078,"name":"ParameterList","src":"2485:0:5"}],"id":4079,"name":"FunctionDefinition","src":"2422:64:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4086,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4080,"name":"ElementaryTypeName","src":"2509:7:5"}],"id":4081,"name":"VariableDeclaration","src":"2509:13:5"},{"attributes":{"constant":false,"name":"_owner","scope":4086,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4082,"name":"ElementaryTypeName","src":"2524:7:5"}],"id":4083,"name":"VariableDeclaration","src":"2524:14:5"}],"id":4084,"name":"ParameterList","src":"2508:31:5"},{"attributes":{"parameters":[null]},"children":[],"id":4085,"name":"ParameterList","src":"2548:0:5"}],"id":4086,"name":"FunctionDefinition","src":"2491:58:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4093,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4087,"name":"ElementaryTypeName","src":"2570:7:5"}],"id":4088,"name":"VariableDeclaration","src":"2570:13:5"},{"attributes":{"constant":false,"name":"_ttl","scope":4093,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4089,"name":"ElementaryTypeName","src":"2585:6:5"}],"id":4090,"name":"VariableDeclaration","src":"2585:11:5"}],"id":4091,"name":"ParameterList","src":"2569:28:5"},{"attributes":{"parameters":[null]},"children":[],"id":4092,"name":"ParameterList","src":"2606:0:5"}],"id":4093,"name":"FunctionDefinition","src":"2554:53:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":4138,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":4100,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4094,"name":"ElementaryTypeName","src":"2639:7:5"}],"id":4095,"name":"VariableDeclaration","src":"2639:17:5"},{"attributes":{"constant":false,"name":"_approved","scope":4100,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4096,"name":"ElementaryTypeName","src":"2658:4:5"}],"id":4097,"name":"VariableDeclaration","src":"2658:14:5"}],"id":4098,"name":"ParameterList","src":"2638:35:5"},{"attributes":{"parameters":[null]},"children":[],"id":4099,"name":"ParameterList","src":"2682:0:5"}],"id":4100,"name":"FunctionDefinition","src":"2612:71:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4107,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4101,"name":"ElementaryTypeName","src":"2703:7:5"}],"id":4102,"name":"VariableDeclaration","src":"2703:13:5"}],"id":4103,"name":"ParameterList","src":"2702:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4107,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4104,"name":"ElementaryTypeName","src":"2741:7:5"}],"id":4105,"name":"VariableDeclaration","src":"2741:7:5"}],"id":4106,"name":"ParameterList","src":"2740:9:5"}],"id":4107,"name":"FunctionDefinition","src":"2688:62:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4114,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4108,"name":"ElementaryTypeName","src":"2773:7:5"}],"id":4109,"name":"VariableDeclaration","src":"2773:13:5"}],"id":4110,"name":"ParameterList","src":"2772:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4114,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4111,"name":"ElementaryTypeName","src":"2811:7:5"}],"id":4112,"name":"VariableDeclaration","src":"2811:7:5"}],"id":4113,"name":"ParameterList","src":"2810:9:5"}],"id":4114,"name":"FunctionDefinition","src":"2755:65:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4121,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4115,"name":"ElementaryTypeName","src":"2838:7:5"}],"id":4116,"name":"VariableDeclaration","src":"2838:13:5"}],"id":4117,"name":"ParameterList","src":"2837:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4121,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4118,"name":"ElementaryTypeName","src":"2876:6:5"}],"id":4119,"name":"VariableDeclaration","src":"2876:6:5"}],"id":4120,"name":"ParameterList","src":"2875:8:5"}],"id":4121,"name":"FunctionDefinition","src":"2825:59:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4128,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4122,"name":"ElementaryTypeName","src":"2911:7:5"}],"id":4123,"name":"VariableDeclaration","src":"2911:13:5"}],"id":4124,"name":"ParameterList","src":"2910:15:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4128,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4125,"name":"ElementaryTypeName","src":"2949:4:5"}],"id":4126,"name":"VariableDeclaration","src":"2949:4:5"}],"id":4127,"name":"ParameterList","src":"2948:6:5"}],"id":4128,"name":"FunctionDefinition","src":"2889:66:5"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":4138,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":4137,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4129,"name":"ElementaryTypeName","src":"2986:7:5"}],"id":4130,"name":"VariableDeclaration","src":"2986:14:5"},{"attributes":{"constant":false,"name":"_operator","scope":4137,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4131,"name":"ElementaryTypeName","src":"3002:7:5"}],"id":4132,"name":"VariableDeclaration","src":"3002:17:5"}],"id":4133,"name":"ParameterList","src":"2985:35:5"},{"children":[{"attributes":{"constant":false,"name":"","scope":4137,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4134,"name":"ElementaryTypeName","src":"3044:4:5"}],"id":4135,"name":"VariableDeclaration","src":"3044:4:5"}],"id":4136,"name":"ParameterList","src":"3043:6:5"}],"id":4137,"name":"FunctionDefinition","src":"2960:90:5"}],"id":4138,"name":"ContractDefinition","src":"1425:1627:5"}],"id":4139,"name":"SourceUnit","src":"1400:1653:5"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[7026]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":6307,"name":"PragmaDirective","src":"0:24:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[7026],"name":"ENSBytesUtils","scope":7027},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6329,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6308,"name":"ElementaryTypeName","src":"325:5:6"}],"id":6309,"name":"VariableDeclaration","src":"325:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6310,"name":"ElementaryTypeName","src":"344:4:6"}],"id":6311,"name":"VariableDeclaration","src":"344:11:6"},{"attributes":{"constant":false,"name":"len","scope":6329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6312,"name":"ElementaryTypeName","src":"357:4:6"}],"id":6313,"name":"VariableDeclaration","src":"357:8:6"}],"id":6314,"name":"ParameterList","src":"324:42:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6329,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6315,"name":"ElementaryTypeName","src":"390:7:6"}],"id":6316,"name":"VariableDeclaration","src":"390:11:6"}],"id":6317,"name":"ParameterList","src":"389:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6318,"name":"Identifier","src":"413:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6311,"type":"uint256","value":"offset"},"id":6319,"name":"Identifier","src":"421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6313,"type":"uint256","value":"len"},"id":6320,"name":"Identifier","src":"430:3:6"}],"id":6321,"name":"BinaryOperation","src":"421:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6309,"type":"bytes memory","value":"self"},"id":6322,"name":"Identifier","src":"437:4:6"}],"id":6323,"name":"MemberAccess","src":"437:11:6"}],"id":6324,"name":"BinaryOperation","src":"421:27:6"}],"id":6325,"name":"FunctionCall","src":"413:36:6"}],"id":6326,"name":"ExpressionStatement","src":"413:36:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6316,"isOffset":false,"isSlot":false,"src":"482:3:6","valueSize":1}},{"self":{"declaration":6309,"isOffset":false,"isSlot":false,"src":"507:4:6","valueSize":1}},{"offset":{"declaration":6311,"isOffset":false,"isSlot":false,"src":"518:6:6","valueSize":1}},{"len":{"declaration":6313,"isOffset":false,"isSlot":false,"src":"527:3:6","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":6327,"name":"InlineAssembly","src":"459:82:6"}],"id":6328,"name":"Block","src":"403:144:6"}],"id":6329,"name":"FunctionDefinition","src":"309:238:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6350,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6330,"name":"ElementaryTypeName","src":"920:5:6"}],"id":6331,"name":"VariableDeclaration","src":"920:17:6"},{"attributes":{"constant":false,"name":"other","scope":6350,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6332,"name":"ElementaryTypeName","src":"939:5:6"}],"id":6333,"name":"VariableDeclaration","src":"939:18:6"}],"id":6334,"name":"ParameterList","src":"919:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6350,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6335,"name":"ElementaryTypeName","src":"982:3:6"}],"id":6336,"name":"VariableDeclaration","src":"982:3:6"}],"id":6337,"name":"ParameterList","src":"981:5:6"},{"children":[{"attributes":{"functionReturnParameters":6337},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6350,6482],"referencedDeclaration":6482,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":6338,"name":"Identifier","src":"1004:7:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6331,"type":"bytes memory","value":"self"},"id":6339,"name":"Identifier","src":"1012:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6340,"name":"Literal","src":"1018:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6331,"type":"bytes memory","value":"self"},"id":6341,"name":"Identifier","src":"1021:4:6"}],"id":6342,"name":"MemberAccess","src":"1021:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6333,"type":"bytes memory","value":"other"},"id":6343,"name":"Identifier","src":"1034:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6344,"name":"Literal","src":"1041:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6333,"type":"bytes memory","value":"other"},"id":6345,"name":"Identifier","src":"1044:5:6"}],"id":6346,"name":"MemberAccess","src":"1044:12:6"}],"id":6347,"name":"FunctionCall","src":"1004:53:6"}],"id":6348,"name":"Return","src":"997:60:6"}],"id":6349,"name":"Block","src":"987:77:6"}],"id":6350,"name":"FunctionDefinition","src":"903:161:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6482,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6351,"name":"ElementaryTypeName","src":"1694:5:6"}],"id":6352,"name":"VariableDeclaration","src":"1694:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6482,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6353,"name":"ElementaryTypeName","src":"1713:4:6"}],"id":6354,"name":"VariableDeclaration","src":"1713:11:6"},{"attributes":{"constant":false,"name":"len","scope":6482,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6355,"name":"ElementaryTypeName","src":"1726:4:6"}],"id":6356,"name":"VariableDeclaration","src":"1726:8:6"},{"attributes":{"constant":false,"name":"other","scope":6482,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6357,"name":"ElementaryTypeName","src":"1736:5:6"}],"id":6358,"name":"VariableDeclaration","src":"1736:18:6"},{"attributes":{"constant":false,"name":"otheroffset","scope":6482,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6359,"name":"ElementaryTypeName","src":"1756:4:6"}],"id":6360,"name":"VariableDeclaration","src":"1756:16:6"},{"attributes":{"constant":false,"name":"otherlen","scope":6482,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6361,"name":"ElementaryTypeName","src":"1774:4:6"}],"id":6362,"name":"VariableDeclaration","src":"1774:13:6"}],"id":6363,"name":"ParameterList","src":"1693:95:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6482,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6364,"name":"ElementaryTypeName","src":"1812:3:6"}],"id":6365,"name":"VariableDeclaration","src":"1812:3:6"}],"id":6366,"name":"ParameterList","src":"1811:5:6"},{"children":[{"attributes":{"assignments":[6368]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6367,"name":"ElementaryTypeName","src":"1827:4:6"}],"id":6368,"name":"VariableDeclaration","src":"1827:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6356,"type":"uint256","value":"len"},"id":6369,"name":"Identifier","src":"1843:3:6"}],"id":6370,"name":"VariableDeclarationStatement","src":"1827:19:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint256","value":"otherlen"},"id":6371,"name":"Identifier","src":"1860:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6356,"type":"uint256","value":"len"},"id":6372,"name":"Identifier","src":"1871:3:6"}],"id":6373,"name":"BinaryOperation","src":"1860:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"shortest"},"id":6374,"name":"Identifier","src":"1884:8:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint256","value":"otherlen"},"id":6375,"name":"Identifier","src":"1895:8:6"}],"id":6376,"name":"Assignment","src":"1884:19:6"}],"id":6377,"name":"ExpressionStatement","src":"1884:19:6"}],"id":6378,"name":"IfStatement","src":"1856:47:6"},{"attributes":{"assignments":[6380],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6379,"name":"ElementaryTypeName","src":"1914:4:6"}],"id":6380,"name":"VariableDeclaration","src":"1914:12:6"}],"id":6381,"name":"VariableDeclarationStatement","src":"1914:12:6"},{"attributes":{"assignments":[6383],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":6481,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6382,"name":"ElementaryTypeName","src":"1936:4:6"}],"id":6383,"name":"VariableDeclaration","src":"1936:13:6"}],"id":6384,"name":"VariableDeclarationStatement","src":"1936:13:6"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":6380,"isOffset":false,"isSlot":false,"src":"1983:7:6","valueSize":1}},{"otherptr":{"declaration":6383,"isOffset":false,"isSlot":false,"src":"2033:8:6","valueSize":1}},{"offset":{"declaration":6354,"isOffset":false,"isSlot":false,"src":"2008:6:6","valueSize":1}},{"self":{"declaration":6352,"isOffset":false,"isSlot":false,"src":"1998:4:6","valueSize":1}},{"otheroffset":{"declaration":6360,"isOffset":false,"isSlot":false,"src":"2060:11:6","valueSize":1}},{"other":{"declaration":6358,"isOffset":false,"isSlot":false,"src":"2049:5:6","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":6385,"name":"InlineAssembly","src":"1960:127:6"},{"children":[{"attributes":{"assignments":[6387]},"children":[{"attributes":{"constant":false,"name":"idx","scope":6472,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6386,"name":"ElementaryTypeName","src":"2101:4:6"}],"id":6387,"name":"VariableDeclaration","src":"2101:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6388,"name":"Literal","src":"2112:1:6"}],"id":6389,"name":"VariableDeclarationStatement","src":"2101:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"uint256","value":"idx"},"id":6390,"name":"Identifier","src":"2115:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"shortest"},"id":6391,"name":"Identifier","src":"2121:8:6"}],"id":6392,"name":"BinaryOperation","src":"2115:14:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"uint256","value":"idx"},"id":6393,"name":"Identifier","src":"2131:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6394,"name":"Literal","src":"2138:2:6"}],"id":6395,"name":"Assignment","src":"2131:9:6"}],"id":6396,"name":"ExpressionStatement","src":"2131:9:6"},{"children":[{"attributes":{"assignments":[6398],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":6471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6397,"name":"ElementaryTypeName","src":"2156:4:6"}],"id":6398,"name":"VariableDeclaration","src":"2156:6:6"}],"id":6399,"name":"VariableDeclarationStatement","src":"2156:6:6"},{"attributes":{"assignments":[6401],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":6471,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6400,"name":"ElementaryTypeName","src":"2176:4:6"}],"id":6401,"name":"VariableDeclaration","src":"2176:6:6"}],"id":6402,"name":"VariableDeclarationStatement","src":"2176:6:6"},{"attributes":{"externalReferences":[{"a":{"declaration":6398,"isOffset":false,"isSlot":false,"src":"2223:1:6","valueSize":1}},{"selfptr":{"declaration":6380,"isOffset":false,"isSlot":false,"src":"2234:7:6","valueSize":1}},{"b":{"declaration":6401,"isOffset":false,"isSlot":false,"src":"2259:1:6","valueSize":1}},{"otherptr":{"declaration":6383,"isOffset":false,"isSlot":false,"src":"2270:8:6","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":6403,"name":"InlineAssembly","src":"2196:97:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6398,"type":"uint256","value":"a"},"id":6404,"name":"Identifier","src":"2310:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6401,"type":"uint256","value":"b"},"id":6405,"name":"Identifier","src":"2315:1:6"}],"id":6406,"name":"BinaryOperation","src":"2310:6:6"},{"children":[{"attributes":{"assignments":[6408],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":6461,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6407,"name":"ElementaryTypeName","src":"2397:4:6"}],"id":6408,"name":"VariableDeclaration","src":"2397:9:6"}],"id":6409,"name":"VariableDeclarationStatement","src":"2397:9:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"shortest"},"id":6410,"name":"Identifier","src":"2428:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6411,"name":"Literal","src":"2439:2:6"}],"id":6412,"name":"BinaryOperation","src":"2428:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6408,"type":"uint256","value":"mask"},"id":6413,"name":"Identifier","src":"2465:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":6414,"name":"ElementaryTypeNameExpression","src":"2472:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6415,"name":"Literal","src":"2482:1:6"}],"id":6416,"name":"UnaryOperation","src":"2480:3:6"}],"id":6417,"name":"FunctionCall","src":"2472:12:6"}],"id":6418,"name":"Assignment","src":"2465:19:6"}],"id":6419,"name":"ExpressionStatement","src":"2465:19:6"}],"id":6420,"name":"Block","src":"2443:80:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6408,"type":"uint256","value":"mask"},"id":6421,"name":"Identifier","src":"2551:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6422,"name":"Literal","src":"2560:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6423,"name":"Literal","src":"2566:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6424,"name":"Literal","src":"2571:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6368,"type":"uint256","value":"shortest"},"id":6425,"name":"Identifier","src":"2576:8:6"}],"id":6426,"name":"BinaryOperation","src":"2571:13:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"uint256","value":"idx"},"id":6427,"name":"Identifier","src":"2587:3:6"}],"id":6428,"name":"BinaryOperation","src":"2571:19:6"}],"id":6429,"name":"TupleExpression","src":"2570:21:6"}],"id":6430,"name":"BinaryOperation","src":"2566:25:6"}],"id":6431,"name":"TupleExpression","src":"2565:27:6"}],"id":6432,"name":"BinaryOperation","src":"2560:32:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6433,"name":"Literal","src":"2595:1:6"}],"id":6434,"name":"BinaryOperation","src":"2560:36:6"}],"id":6435,"name":"TupleExpression","src":"2559:38:6"}],"id":6436,"name":"UnaryOperation","src":"2558:39:6"}],"id":6437,"name":"Assignment","src":"2551:46:6"}],"id":6438,"name":"ExpressionStatement","src":"2551:46:6"}],"id":6439,"name":"Block","src":"2529:87:6"}],"id":6440,"name":"IfStatement","src":"2424:192:6"},{"attributes":{"assignments":[6442]},"children":[{"attributes":{"constant":false,"name":"diff","scope":6461,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6441,"name":"ElementaryTypeName","src":"2633:4:6"}],"id":6442,"name":"VariableDeclaration","src":"2633:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6398,"type":"uint256","value":"a"},"id":6443,"name":"Identifier","src":"2646:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6408,"type":"uint256","value":"mask"},"id":6444,"name":"Identifier","src":"2650:4:6"}],"id":6445,"name":"BinaryOperation","src":"2646:8:6"}],"id":6446,"name":"TupleExpression","src":"2645:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6401,"type":"uint256","value":"b"},"id":6447,"name":"Identifier","src":"2659:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6408,"type":"uint256","value":"mask"},"id":6448,"name":"Identifier","src":"2663:4:6"}],"id":6449,"name":"BinaryOperation","src":"2659:8:6"}],"id":6450,"name":"TupleExpression","src":"2658:10:6"}],"id":6451,"name":"BinaryOperation","src":"2645:23:6"}],"id":6452,"name":"VariableDeclarationStatement","src":"2633:35:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6442,"type":"uint256","value":"diff"},"id":6453,"name":"Identifier","src":"2690:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6454,"name":"Literal","src":"2698:1:6"}],"id":6455,"name":"BinaryOperation","src":"2690:9:6"},{"attributes":{"functionReturnParameters":6366},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6456,"name":"ElementaryTypeNameExpression","src":"2724:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6442,"type":"uint256","value":"diff"},"id":6457,"name":"Identifier","src":"2728:4:6"}],"id":6458,"name":"FunctionCall","src":"2724:9:6"}],"id":6459,"name":"Return","src":"2717:16:6"}],"id":6460,"name":"IfStatement","src":"2686:47:6"}],"id":6461,"name":"Block","src":"2318:430:6"}],"id":6462,"name":"IfStatement","src":"2306:442:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6380,"type":"uint256","value":"selfptr"},"id":6463,"name":"Identifier","src":"2761:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6464,"name":"Literal","src":"2772:2:6"}],"id":6465,"name":"Assignment","src":"2761:13:6"}],"id":6466,"name":"ExpressionStatement","src":"2761:13:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6383,"type":"uint256","value":"otherptr"},"id":6467,"name":"Identifier","src":"2788:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6468,"name":"Literal","src":"2800:2:6"}],"id":6469,"name":"Assignment","src":"2788:14:6"}],"id":6470,"name":"ExpressionStatement","src":"2788:14:6"}],"id":6471,"name":"Block","src":"2142:671:6"}],"id":6472,"name":"ForStatement","src":"2096:717:6"},{"attributes":{"functionReturnParameters":6366},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6473,"name":"ElementaryTypeNameExpression","src":"2830:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6356,"type":"uint256","value":"len"},"id":6474,"name":"Identifier","src":"2834:3:6"}],"id":6475,"name":"FunctionCall","src":"2830:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":6476,"name":"ElementaryTypeNameExpression","src":"2841:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6362,"type":"uint256","value":"otherlen"},"id":6477,"name":"Identifier","src":"2845:8:6"}],"id":6478,"name":"FunctionCall","src":"2841:13:6"}],"id":6479,"name":"BinaryOperation","src":"2830:24:6"}],"id":6480,"name":"Return","src":"2823:31:6"}],"id":6481,"name":"Block","src":"1817:1044:6"}],"id":6482,"name":"FunctionDefinition","src":"1677:1184:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6510,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6483,"name":"ElementaryTypeName","src":"3295:5:6"}],"id":6484,"name":"VariableDeclaration","src":"3295:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6510,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6485,"name":"ElementaryTypeName","src":"3314:4:6"}],"id":6486,"name":"VariableDeclaration","src":"3314:11:6"},{"attributes":{"constant":false,"name":"other","scope":6510,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6487,"name":"ElementaryTypeName","src":"3327:5:6"}],"id":6488,"name":"VariableDeclaration","src":"3327:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":6510,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6489,"name":"ElementaryTypeName","src":"3347:4:6"}],"id":6490,"name":"VariableDeclaration","src":"3347:16:6"},{"attributes":{"constant":false,"name":"len","scope":6510,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6491,"name":"ElementaryTypeName","src":"3365:4:6"}],"id":6492,"name":"VariableDeclaration","src":"3365:8:6"}],"id":6493,"name":"ParameterList","src":"3294:80:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6510,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6494,"name":"ElementaryTypeName","src":"3398:4:6"}],"id":6495,"name":"VariableDeclaration","src":"3398:4:6"}],"id":6496,"name":"ParameterList","src":"3397:6:6"},{"children":[{"attributes":{"functionReturnParameters":6496},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6329,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6497,"name":"Identifier","src":"3421:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6484,"type":"bytes memory","value":"self"},"id":6498,"name":"Identifier","src":"3428:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6486,"type":"uint256","value":"offset"},"id":6499,"name":"Identifier","src":"3434:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6492,"type":"uint256","value":"len"},"id":6500,"name":"Identifier","src":"3442:3:6"}],"id":6501,"name":"FunctionCall","src":"3421:25:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6329,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6502,"name":"Identifier","src":"3450:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6488,"type":"bytes memory","value":"other"},"id":6503,"name":"Identifier","src":"3457:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6490,"type":"uint256","value":"otherOffset"},"id":6504,"name":"Identifier","src":"3464:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6492,"type":"uint256","value":"len"},"id":6505,"name":"Identifier","src":"3477:3:6"}],"id":6506,"name":"FunctionCall","src":"3450:31:6"}],"id":6507,"name":"BinaryOperation","src":"3421:60:6"}],"id":6508,"name":"Return","src":"3414:67:6"}],"id":6509,"name":"Block","src":"3404:84:6"}],"id":6510,"name":"FunctionDefinition","src":"3279:209:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6542,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6511,"name":"ElementaryTypeName","src":"3887:5:6"}],"id":6512,"name":"VariableDeclaration","src":"3887:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6542,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6513,"name":"ElementaryTypeName","src":"3906:4:6"}],"id":6514,"name":"VariableDeclaration","src":"3906:11:6"},{"attributes":{"constant":false,"name":"other","scope":6542,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6515,"name":"ElementaryTypeName","src":"3919:5:6"}],"id":6516,"name":"VariableDeclaration","src":"3919:18:6"},{"attributes":{"constant":false,"name":"otherOffset","scope":6542,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6517,"name":"ElementaryTypeName","src":"3939:4:6"}],"id":6518,"name":"VariableDeclaration","src":"3939:16:6"}],"id":6519,"name":"ParameterList","src":"3886:70:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6542,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6520,"name":"ElementaryTypeName","src":"3980:4:6"}],"id":6521,"name":"VariableDeclaration","src":"3980:4:6"}],"id":6522,"name":"ParameterList","src":"3979:6:6"},{"children":[{"attributes":{"functionReturnParameters":6522},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6329,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6523,"name":"Identifier","src":"4003:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6512,"type":"bytes memory","value":"self"},"id":6524,"name":"Identifier","src":"4010:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6514,"type":"uint256","value":"offset"},"id":6525,"name":"Identifier","src":"4016:6:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6512,"type":"bytes memory","value":"self"},"id":6526,"name":"Identifier","src":"4024:4:6"}],"id":6527,"name":"MemberAccess","src":"4024:11:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6514,"type":"uint256","value":"offset"},"id":6528,"name":"Identifier","src":"4038:6:6"}],"id":6529,"name":"BinaryOperation","src":"4024:20:6"}],"id":6530,"name":"FunctionCall","src":"4003:42:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6329,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":6531,"name":"Identifier","src":"4049:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes memory","value":"other"},"id":6532,"name":"Identifier","src":"4056:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6518,"type":"uint256","value":"otherOffset"},"id":6533,"name":"Identifier","src":"4063:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6516,"type":"bytes memory","value":"other"},"id":6534,"name":"Identifier","src":"4076:5:6"}],"id":6535,"name":"MemberAccess","src":"4076:12:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6518,"type":"uint256","value":"otherOffset"},"id":6536,"name":"Identifier","src":"4091:11:6"}],"id":6537,"name":"BinaryOperation","src":"4076:26:6"}],"id":6538,"name":"FunctionCall","src":"4049:54:6"}],"id":6539,"name":"BinaryOperation","src":"4003:100:6"}],"id":6540,"name":"Return","src":"3996:107:6"}],"id":6541,"name":"Block","src":"3986:124:6"}],"id":6542,"name":"FunctionDefinition","src":"3871:239:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6571,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6543,"name":"ElementaryTypeName","src":"4478:5:6"}],"id":6544,"name":"VariableDeclaration","src":"4478:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6571,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6545,"name":"ElementaryTypeName","src":"4497:4:6"}],"id":6546,"name":"VariableDeclaration","src":"4497:11:6"},{"attributes":{"constant":false,"name":"other","scope":6571,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6547,"name":"ElementaryTypeName","src":"4510:5:6"}],"id":6548,"name":"VariableDeclaration","src":"4510:18:6"}],"id":6549,"name":"ParameterList","src":"4477:52:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6571,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6550,"name":"ElementaryTypeName","src":"4553:4:6"}],"id":6551,"name":"VariableDeclaration","src":"4553:4:6"}],"id":6552,"name":"ParameterList","src":"4552:6:6"},{"children":[{"attributes":{"functionReturnParameters":6552},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6544,"type":"bytes memory","value":"self"},"id":6553,"name":"Identifier","src":"4576:4:6"}],"id":6554,"name":"MemberAccess","src":"4576:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6546,"type":"uint256","value":"offset"},"id":6555,"name":"Identifier","src":"4591:6:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6548,"type":"bytes memory","value":"other"},"id":6556,"name":"Identifier","src":"4600:5:6"}],"id":6557,"name":"MemberAccess","src":"4600:12:6"}],"id":6558,"name":"BinaryOperation","src":"4591:21:6"}],"id":6559,"name":"BinaryOperation","src":"4576:36:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6510,6542,6571,6596],"referencedDeclaration":6510,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":6560,"name":"Identifier","src":"4616:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6544,"type":"bytes memory","value":"self"},"id":6561,"name":"Identifier","src":"4623:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6546,"type":"uint256","value":"offset"},"id":6562,"name":"Identifier","src":"4629:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6548,"type":"bytes memory","value":"other"},"id":6563,"name":"Identifier","src":"4637:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6564,"name":"Literal","src":"4644:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6548,"type":"bytes memory","value":"other"},"id":6565,"name":"Identifier","src":"4647:5:6"}],"id":6566,"name":"MemberAccess","src":"4647:12:6"}],"id":6567,"name":"FunctionCall","src":"4616:44:6"}],"id":6568,"name":"BinaryOperation","src":"4576:84:6"}],"id":6569,"name":"Return","src":"4569:91:6"}],"id":6570,"name":"Block","src":"4559:108:6"}],"id":6571,"name":"FunctionDefinition","src":"4462:205:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6596,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6572,"name":"ElementaryTypeName","src":"4931:5:6"}],"id":6573,"name":"VariableDeclaration","src":"4931:17:6"},{"attributes":{"constant":false,"name":"other","scope":6596,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6574,"name":"ElementaryTypeName","src":"4950:5:6"}],"id":6575,"name":"VariableDeclaration","src":"4950:18:6"}],"id":6576,"name":"ParameterList","src":"4930:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6596,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6577,"name":"ElementaryTypeName","src":"4992:4:6"}],"id":6578,"name":"VariableDeclaration","src":"4992:4:6"}],"id":6579,"name":"ParameterList","src":"4991:6:6"},{"children":[{"attributes":{"functionReturnParameters":6579},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6573,"type":"bytes memory","value":"self"},"id":6580,"name":"Identifier","src":"5015:4:6"}],"id":6581,"name":"MemberAccess","src":"5015:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6575,"type":"bytes memory","value":"other"},"id":6582,"name":"Identifier","src":"5030:5:6"}],"id":6583,"name":"MemberAccess","src":"5030:12:6"}],"id":6584,"name":"BinaryOperation","src":"5015:27:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6510,6542,6571,6596],"referencedDeclaration":6510,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":6585,"name":"Identifier","src":"5046:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6573,"type":"bytes memory","value":"self"},"id":6586,"name":"Identifier","src":"5053:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6587,"name":"Literal","src":"5059:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6575,"type":"bytes memory","value":"other"},"id":6588,"name":"Identifier","src":"5062:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6589,"name":"Literal","src":"5069:1:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6573,"type":"bytes memory","value":"self"},"id":6590,"name":"Identifier","src":"5072:4:6"}],"id":6591,"name":"MemberAccess","src":"5072:11:6"}],"id":6592,"name":"FunctionCall","src":"5046:38:6"}],"id":6593,"name":"BinaryOperation","src":"5015:69:6"}],"id":6594,"name":"Return","src":"5008:76:6"}],"id":6595,"name":"Block","src":"4998:93:6"}],"id":6596,"name":"FunctionDefinition","src":"4915:176:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6612,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6597,"name":"ElementaryTypeName","src":"5352:5:6"}],"id":6598,"name":"VariableDeclaration","src":"5352:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6612,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6599,"name":"ElementaryTypeName","src":"5371:4:6"}],"id":6600,"name":"VariableDeclaration","src":"5371:8:6"}],"id":6601,"name":"ParameterList","src":"5351:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6612,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6602,"name":"ElementaryTypeName","src":"5404:5:6"}],"id":6603,"name":"VariableDeclaration","src":"5404:9:6"}],"id":6604,"name":"ParameterList","src":"5403:11:6"},{"children":[{"attributes":{"functionReturnParameters":6604},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6605,"name":"ElementaryTypeNameExpression","src":"5432:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6598,"type":"bytes memory","value":"self"},"id":6606,"name":"Identifier","src":"5438:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6600,"type":"uint256","value":"idx"},"id":6607,"name":"Identifier","src":"5443:3:6"}],"id":6608,"name":"IndexAccess","src":"5438:9:6"}],"id":6609,"name":"FunctionCall","src":"5432:16:6"}],"id":6610,"name":"Return","src":"5425:23:6"}],"id":6611,"name":"Block","src":"5415:40:6"}],"id":6612,"name":"FunctionDefinition","src":"5333:122:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6632,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6613,"name":"ElementaryTypeName","src":"5719:5:6"}],"id":6614,"name":"VariableDeclaration","src":"5719:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6632,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6615,"name":"ElementaryTypeName","src":"5738:4:6"}],"id":6616,"name":"VariableDeclaration","src":"5738:8:6"}],"id":6617,"name":"ParameterList","src":"5718:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6632,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6618,"name":"ElementaryTypeName","src":"5771:6:6"}],"id":6619,"name":"VariableDeclaration","src":"5771:10:6"}],"id":6620,"name":"ParameterList","src":"5770:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6621,"name":"Identifier","src":"5793:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6616,"type":"uint256","value":"idx"},"id":6622,"name":"Identifier","src":"5801:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6623,"name":"Literal","src":"5807:1:6"}],"id":6624,"name":"BinaryOperation","src":"5801:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6614,"type":"bytes memory","value":"self"},"id":6625,"name":"Identifier","src":"5812:4:6"}],"id":6626,"name":"MemberAccess","src":"5812:11:6"}],"id":6627,"name":"BinaryOperation","src":"5801:22:6"}],"id":6628,"name":"FunctionCall","src":"5793:31:6"}],"id":6629,"name":"ExpressionStatement","src":"5793:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6619,"isOffset":false,"isSlot":false,"src":"5857:3:6","valueSize":1}},{"self":{"declaration":6614,"isOffset":false,"isSlot":false,"src":"5882:4:6","valueSize":1}},{"idx":{"declaration":6616,"isOffset":false,"isSlot":false,"src":"5892:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":6630,"name":"InlineAssembly","src":"5834:82:6"}],"id":6631,"name":"Block","src":"5783:139:6"}],"id":6632,"name":"FunctionDefinition","src":"5699:223:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6652,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6633,"name":"ElementaryTypeName","src":"6186:5:6"}],"id":6634,"name":"VariableDeclaration","src":"6186:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6652,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6635,"name":"ElementaryTypeName","src":"6205:4:6"}],"id":6636,"name":"VariableDeclaration","src":"6205:8:6"}],"id":6637,"name":"ParameterList","src":"6185:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6652,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":6638,"name":"ElementaryTypeName","src":"6238:6:6"}],"id":6639,"name":"VariableDeclaration","src":"6238:10:6"}],"id":6640,"name":"ParameterList","src":"6237:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6641,"name":"Identifier","src":"6260:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6636,"type":"uint256","value":"idx"},"id":6642,"name":"Identifier","src":"6268:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6643,"name":"Literal","src":"6274:1:6"}],"id":6644,"name":"BinaryOperation","src":"6268:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6634,"type":"bytes memory","value":"self"},"id":6645,"name":"Identifier","src":"6279:4:6"}],"id":6646,"name":"MemberAccess","src":"6279:11:6"}],"id":6647,"name":"BinaryOperation","src":"6268:22:6"}],"id":6648,"name":"FunctionCall","src":"6260:31:6"}],"id":6649,"name":"ExpressionStatement","src":"6260:31:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6639,"isOffset":false,"isSlot":false,"src":"6324:3:6","valueSize":1}},{"self":{"declaration":6634,"isOffset":false,"isSlot":false,"src":"6349:4:6","valueSize":1}},{"idx":{"declaration":6636,"isOffset":false,"isSlot":false,"src":"6359:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":6650,"name":"InlineAssembly","src":"6301:86:6"}],"id":6651,"name":"Block","src":"6250:143:6"}],"id":6652,"name":"FunctionDefinition","src":"6166:227:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6672,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6653,"name":"ElementaryTypeName","src":"6632:5:6"}],"id":6654,"name":"VariableDeclaration","src":"6632:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6672,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6655,"name":"ElementaryTypeName","src":"6651:4:6"}],"id":6656,"name":"VariableDeclaration","src":"6651:8:6"}],"id":6657,"name":"ParameterList","src":"6631:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6672,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6658,"name":"ElementaryTypeName","src":"6684:7:6"}],"id":6659,"name":"VariableDeclaration","src":"6684:11:6"}],"id":6660,"name":"ParameterList","src":"6683:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6661,"name":"Identifier","src":"6707:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6656,"type":"uint256","value":"idx"},"id":6662,"name":"Identifier","src":"6715:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6663,"name":"Literal","src":"6721:2:6"}],"id":6664,"name":"BinaryOperation","src":"6715:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6654,"type":"bytes memory","value":"self"},"id":6665,"name":"Identifier","src":"6727:4:6"}],"id":6666,"name":"MemberAccess","src":"6727:11:6"}],"id":6667,"name":"BinaryOperation","src":"6715:23:6"}],"id":6668,"name":"FunctionCall","src":"6707:32:6"}],"id":6669,"name":"ExpressionStatement","src":"6707:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6659,"isOffset":false,"isSlot":false,"src":"6772:3:6","valueSize":1}},{"self":{"declaration":6654,"isOffset":false,"isSlot":false,"src":"6793:4:6","valueSize":1}},{"idx":{"declaration":6656,"isOffset":false,"isSlot":false,"src":"6804:3:6","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":6670,"name":"InlineAssembly","src":"6749:70:6"}],"id":6671,"name":"Block","src":"6697:128:6"}],"id":6672,"name":"FunctionDefinition","src":"6611:214:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6692,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6673,"name":"ElementaryTypeName","src":"7064:5:6"}],"id":6674,"name":"VariableDeclaration","src":"7064:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6675,"name":"ElementaryTypeName","src":"7083:4:6"}],"id":6676,"name":"VariableDeclaration","src":"7083:8:6"}],"id":6677,"name":"ParameterList","src":"7063:29:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6692,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":6678,"name":"ElementaryTypeName","src":"7116:7:6"}],"id":6679,"name":"VariableDeclaration","src":"7116:11:6"}],"id":6680,"name":"ParameterList","src":"7115:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6681,"name":"Identifier","src":"7139:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6676,"type":"uint256","value":"idx"},"id":6682,"name":"Identifier","src":"7147:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":6683,"name":"Literal","src":"7153:2:6"}],"id":6684,"name":"BinaryOperation","src":"7147:8:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6674,"type":"bytes memory","value":"self"},"id":6685,"name":"Identifier","src":"7159:4:6"}],"id":6686,"name":"MemberAccess","src":"7159:11:6"}],"id":6687,"name":"BinaryOperation","src":"7147:23:6"}],"id":6688,"name":"FunctionCall","src":"7139:32:6"}],"id":6689,"name":"ExpressionStatement","src":"7139:32:6"},{"attributes":{"externalReferences":[{"ret":{"declaration":6679,"isOffset":false,"isSlot":false,"src":"7204:3:6","valueSize":1}},{"self":{"declaration":6674,"isOffset":false,"isSlot":false,"src":"7229:4:6","valueSize":1}},{"idx":{"declaration":6676,"isOffset":false,"isSlot":false,"src":"7240:3:6","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":6690,"name":"InlineAssembly","src":"7181:143:6"}],"id":6691,"name":"Block","src":"7129:201:6"}],"id":6692,"name":"FunctionDefinition","src":"7043:287:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6720,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6693,"name":"ElementaryTypeName","src":"7606:5:6"}],"id":6694,"name":"VariableDeclaration","src":"7606:17:6"},{"attributes":{"constant":false,"name":"idx","scope":6720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6695,"name":"ElementaryTypeName","src":"7625:4:6"}],"id":6696,"name":"VariableDeclaration","src":"7625:8:6"},{"attributes":{"constant":false,"name":"len","scope":6720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6697,"name":"ElementaryTypeName","src":"7635:4:6"}],"id":6698,"name":"VariableDeclaration","src":"7635:8:6"}],"id":6699,"name":"ParameterList","src":"7605:39:6"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":6720,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6700,"name":"ElementaryTypeName","src":"7668:7:6"}],"id":6701,"name":"VariableDeclaration","src":"7668:11:6"}],"id":6702,"name":"ParameterList","src":"7667:13:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6703,"name":"Identifier","src":"7691:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6698,"type":"uint256","value":"len"},"id":6704,"name":"Identifier","src":"7699:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6705,"name":"Literal","src":"7706:2:6"}],"id":6706,"name":"BinaryOperation","src":"7699:9:6"}],"id":6707,"name":"FunctionCall","src":"7691:18:6"}],"id":6708,"name":"ExpressionStatement","src":"7691:18:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6709,"name":"Identifier","src":"7719:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6696,"type":"uint256","value":"idx"},"id":6710,"name":"Identifier","src":"7727:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6698,"type":"uint256","value":"len"},"id":6711,"name":"Identifier","src":"7733:3:6"}],"id":6712,"name":"BinaryOperation","src":"7727:9:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6694,"type":"bytes memory","value":"self"},"id":6713,"name":"Identifier","src":"7740:4:6"}],"id":6714,"name":"MemberAccess","src":"7740:11:6"}],"id":6715,"name":"BinaryOperation","src":"7727:24:6"}],"id":6716,"name":"FunctionCall","src":"7719:33:6"}],"id":6717,"name":"ExpressionStatement","src":"7719:33:6"},{"attributes":{"externalReferences":[{"len":{"declaration":6698,"isOffset":false,"isSlot":false,"src":"7822:3:6","valueSize":1}},{"ret":{"declaration":6701,"isOffset":false,"isSlot":false,"src":"7845:3:6","valueSize":1}},{"self":{"declaration":6694,"isOffset":false,"isSlot":false,"src":"7870:4:6","valueSize":1}},{"idx":{"declaration":6696,"isOffset":false,"isSlot":false,"src":"7881:3:6","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":6718,"name":"InlineAssembly","src":"7762:142:6"}],"id":6719,"name":"Block","src":"7681:229:6"}],"id":6720,"name":"FunctionDefinition","src":"7586:324:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":6760,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6721,"name":"ElementaryTypeName","src":"7932:4:6"}],"id":6722,"name":"VariableDeclaration","src":"7932:9:6"},{"attributes":{"constant":false,"name":"src","scope":6760,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6723,"name":"ElementaryTypeName","src":"7943:4:6"}],"id":6724,"name":"VariableDeclaration","src":"7943:8:6"},{"attributes":{"constant":false,"name":"len","scope":6760,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6725,"name":"ElementaryTypeName","src":"7953:4:6"}],"id":6726,"name":"VariableDeclaration","src":"7953:8:6"}],"id":6727,"name":"ParameterList","src":"7931:31:6"},{"attributes":{"parameters":[null]},"children":[],"id":6728,"name":"ParameterList","src":"7976:0:6"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"uint256","value":"len"},"id":6729,"name":"Identifier","src":"8043:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6730,"name":"Literal","src":"8050:2:6"}],"id":6731,"name":"BinaryOperation","src":"8043:9:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"uint256","value":"len"},"id":6732,"name":"Identifier","src":"8054:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6733,"name":"Literal","src":"8061:2:6"}],"id":6734,"name":"Assignment","src":"8054:9:6"}],"id":6735,"name":"ExpressionStatement","src":"8054:9:6"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":6724,"isOffset":false,"isSlot":false,"src":"8125:3:6","valueSize":1}},{"dest":{"declaration":6722,"isOffset":false,"isSlot":false,"src":"8113:4:6","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":6736,"name":"InlineAssembly","src":"8079:65:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6722,"type":"uint256","value":"dest"},"id":6737,"name":"Identifier","src":"8157:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6738,"name":"Literal","src":"8165:2:6"}],"id":6739,"name":"Assignment","src":"8157:10:6"}],"id":6740,"name":"ExpressionStatement","src":"8157:10:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6724,"type":"uint256","value":"src"},"id":6741,"name":"Identifier","src":"8181:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6742,"name":"Literal","src":"8188:2:6"}],"id":6743,"name":"Assignment","src":"8181:9:6"}],"id":6744,"name":"ExpressionStatement","src":"8181:9:6"}],"id":6745,"name":"Block","src":"8065:136:6"}],"id":6746,"name":"ForStatement","src":"8036:165:6"},{"attributes":{"assignments":[6748]},"children":[{"attributes":{"constant":false,"name":"mask","scope":6759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6747,"name":"ElementaryTypeName","src":"8243:4:6"}],"id":6748,"name":"VariableDeclaration","src":"8243:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":6749,"name":"Literal","src":"8255:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6750,"name":"Literal","src":"8263:2:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"uint256","value":"len"},"id":6751,"name":"Identifier","src":"8268:3:6"}],"id":6752,"name":"BinaryOperation","src":"8263:8:6"}],"id":6753,"name":"TupleExpression","src":"8262:10:6"}],"id":6754,"name":"BinaryOperation","src":"8255:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6755,"name":"Literal","src":"8275:1:6"}],"id":6756,"name":"BinaryOperation","src":"8255:21:6"}],"id":6757,"name":"VariableDeclarationStatement","src":"8243:33:6"},{"attributes":{"externalReferences":[{"src":{"declaration":6724,"isOffset":false,"isSlot":false,"src":"8334:3:6","valueSize":1}},{"mask":{"declaration":6748,"isOffset":false,"isSlot":false,"src":"8344:4:6","valueSize":1}},{"dest":{"declaration":6722,"isOffset":false,"isSlot":false,"src":"8421:4:6","valueSize":1}},{"dest":{"declaration":6722,"isOffset":false,"isSlot":false,"src":"8389:4:6","valueSize":1}},{"mask":{"declaration":6748,"isOffset":false,"isSlot":false,"src":"8396:4:6","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":6758,"name":"InlineAssembly","src":"8286:173:6"}],"id":6759,"name":"Block","src":"7976:489:6"}],"id":6760,"name":"FunctionDefinition","src":"7916:549:6"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6803,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6761,"name":"ElementaryTypeName","src":"8704:5:6"}],"id":6762,"name":"VariableDeclaration","src":"8704:17:6"},{"attributes":{"constant":false,"name":"offset","scope":6803,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6763,"name":"ElementaryTypeName","src":"8723:4:6"}],"id":6764,"name":"VariableDeclaration","src":"8723:11:6"},{"attributes":{"constant":false,"name":"len","scope":6803,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6765,"name":"ElementaryTypeName","src":"8736:4:6"}],"id":6766,"name":"VariableDeclaration","src":"8736:8:6"}],"id":6767,"name":"ParameterList","src":"8703:42:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":6803,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6768,"name":"ElementaryTypeName","src":"8768:5:6"}],"id":6769,"name":"VariableDeclaration","src":"8768:12:6"}],"id":6770,"name":"ParameterList","src":"8767:14:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6771,"name":"Identifier","src":"8792:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"uint256","value":"offset"},"id":6772,"name":"Identifier","src":"8800:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"uint256","value":"len"},"id":6773,"name":"Identifier","src":"8809:3:6"}],"id":6774,"name":"BinaryOperation","src":"8800:12:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"bytes memory","value":"self"},"id":6775,"name":"Identifier","src":"8816:4:6"}],"id":6776,"name":"MemberAccess","src":"8816:11:6"}],"id":6777,"name":"BinaryOperation","src":"8800:27:6"}],"id":6778,"name":"FunctionCall","src":"8792:36:6"}],"id":6779,"name":"ExpressionStatement","src":"8792:36:6"},{"attributes":{"assignments":[6781]},"children":[{"attributes":{"constant":false,"name":"ret","scope":6802,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6780,"name":"ElementaryTypeName","src":"8839:5:6"}],"id":6781,"name":"VariableDeclaration","src":"8839:16:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6782,"name":"ElementaryTypeName","src":"8862:5:6"}],"id":6783,"name":"NewExpression","src":"8858:9:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"uint256","value":"len"},"id":6784,"name":"Identifier","src":"8868:3:6"}],"id":6785,"name":"FunctionCall","src":"8858:14:6"}],"id":6786,"name":"VariableDeclarationStatement","src":"8839:33:6"},{"attributes":{"assignments":[6788],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":6802,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6787,"name":"ElementaryTypeName","src":"8882:4:6"}],"id":6788,"name":"VariableDeclaration","src":"8882:9:6"}],"id":6789,"name":"VariableDeclarationStatement","src":"8882:9:6"},{"attributes":{"assignments":[6791],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":6802,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6790,"name":"ElementaryTypeName","src":"8901:4:6"}],"id":6791,"name":"VariableDeclaration","src":"8901:8:6"}],"id":6792,"name":"VariableDeclarationStatement","src":"8901:8:6"},{"attributes":{"externalReferences":[{"dest":{"declaration":6788,"isOffset":false,"isSlot":false,"src":"8943:4:6","valueSize":1}},{"ret":{"declaration":6781,"isOffset":false,"isSlot":false,"src":"8955:3:6","valueSize":1}},{"src":{"declaration":6791,"isOffset":false,"isSlot":false,"src":"8976:3:6","valueSize":1}},{"self":{"declaration":6762,"isOffset":false,"isSlot":false,"src":"8991:4:6","valueSize":1}},{"offset":{"declaration":6764,"isOffset":false,"isSlot":false,"src":"9002:6:6","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":6793,"name":"InlineAssembly","src":"8920:99:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6760,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":6794,"name":"Identifier","src":"9028:6:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6788,"type":"uint256","value":"dest"},"id":6795,"name":"Identifier","src":"9035:4:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6791,"type":"uint256","value":"src"},"id":6796,"name":"Identifier","src":"9041:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6766,"type":"uint256","value":"len"},"id":6797,"name":"Identifier","src":"9046:3:6"}],"id":6798,"name":"FunctionCall","src":"9028:22:6"}],"id":6799,"name":"ExpressionStatement","src":"9028:22:6"},{"attributes":{"functionReturnParameters":6770},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6781,"type":"bytes memory","value":"ret"},"id":6800,"name":"Identifier","src":"9068:3:6"}],"id":6801,"name":"Return","src":"9061:10:6"}],"id":6802,"name":"Block","src":"8782:296:6"}],"id":6803,"name":"FunctionDefinition","src":"8685:393:6"},{"attributes":{"constant":true,"name":"base32HexTable","scope":7026,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6804,"name":"ElementaryTypeName","src":"9206:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":6805,"name":"Literal","src":"9238:147:6"}],"id":6806,"name":"VariableDeclaration","src":"9206:179:6"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":7026,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7025,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6807,"name":"ElementaryTypeName","src":"9697:5:6"}],"id":6808,"name":"VariableDeclaration","src":"9697:17:6"},{"attributes":{"constant":false,"name":"off","scope":7025,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6809,"name":"ElementaryTypeName","src":"9716:4:6"}],"id":6810,"name":"VariableDeclaration","src":"9716:8:6"},{"attributes":{"constant":false,"name":"len","scope":7025,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6811,"name":"ElementaryTypeName","src":"9726:4:6"}],"id":6812,"name":"VariableDeclaration","src":"9726:8:6"}],"id":6813,"name":"ParameterList","src":"9696:39:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":7025,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6814,"name":"ElementaryTypeName","src":"9758:7:6"}],"id":6815,"name":"VariableDeclaration","src":"9758:7:6"}],"id":6816,"name":"ParameterList","src":"9757:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6817,"name":"Identifier","src":"9777:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6818,"name":"Identifier","src":"9785:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":6819,"name":"Literal","src":"9792:2:6"}],"id":6820,"name":"BinaryOperation","src":"9785:9:6"}],"id":6821,"name":"FunctionCall","src":"9777:18:6"}],"id":6822,"name":"ExpressionStatement","src":"9777:18:6"},{"attributes":{"assignments":[6824]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7024,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6823,"name":"ElementaryTypeName","src":"9806:4:6"}],"id":6824,"name":"VariableDeclaration","src":"9806:8:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6825,"name":"Literal","src":"9817:1:6"}],"id":6826,"name":"VariableDeclarationStatement","src":"9806:12:6"},{"attributes":{"assignments":[6828],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":7024,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6827,"name":"ElementaryTypeName","src":"9828:5:6"}],"id":6828,"name":"VariableDeclaration","src":"9828:13:6"}],"id":6829,"name":"VariableDeclarationStatement","src":"9828:13:6"},{"children":[{"attributes":{"assignments":[6831]},"children":[{"attributes":{"constant":false,"name":"i","scope":6896,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6830,"name":"ElementaryTypeName","src":"9855:4:6"}],"id":6831,"name":"VariableDeclaration","src":"9855:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6832,"name":"Literal","src":"9864:1:6"}],"id":6833,"name":"VariableDeclarationStatement","src":"9855:10:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6831,"type":"uint256","value":"i"},"id":6834,"name":"Identifier","src":"9867:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6835,"name":"Identifier","src":"9871:3:6"}],"id":6836,"name":"BinaryOperation","src":"9867:7:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6831,"type":"uint256","value":"i"},"id":6837,"name":"Identifier","src":"9876:1:6"}],"id":6838,"name":"UnaryOperation","src":"9876:3:6"}],"id":6839,"name":"ExpressionStatement","src":"9876:3:6"},{"children":[{"attributes":{"assignments":[6841]},"children":[{"attributes":{"constant":false,"name":"char","scope":6895,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":6840,"name":"ElementaryTypeName","src":"9895:6:6"}],"id":6841,"name":"VariableDeclaration","src":"9895:11:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6808,"type":"bytes memory","value":"self"},"id":6842,"name":"Identifier","src":"9909:4:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6810,"type":"uint256","value":"off"},"id":6843,"name":"Identifier","src":"9914:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6831,"type":"uint256","value":"i"},"id":6844,"name":"Identifier","src":"9920:1:6"}],"id":6845,"name":"BinaryOperation","src":"9914:7:6"}],"id":6846,"name":"IndexAccess","src":"9909:13:6"}],"id":6847,"name":"VariableDeclarationStatement","src":"9895:27:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6848,"name":"Identifier","src":"9936:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6841,"type":"bytes1","value":"char"},"id":6849,"name":"Identifier","src":"9944:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":6850,"name":"Literal","src":"9952:4:6"}],"id":6851,"name":"BinaryOperation","src":"9944:12:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6841,"type":"bytes1","value":"char"},"id":6852,"name":"Identifier","src":"9960:4:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":6853,"name":"Literal","src":"9968:4:6"}],"id":6854,"name":"BinaryOperation","src":"9960:12:6"}],"id":6855,"name":"BinaryOperation","src":"9944:28:6"}],"id":6856,"name":"FunctionCall","src":"9936:37:6"}],"id":6857,"name":"ExpressionStatement","src":"9936:37:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6858,"name":"Identifier","src":"9987:7:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6859,"name":"ElementaryTypeNameExpression","src":"9997:5:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6806,"type":"bytes memory","value":"base32HexTable"},"id":6860,"name":"Identifier","src":"10003:14:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6861,"name":"ElementaryTypeNameExpression","src":"10018:4:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6862,"name":"ElementaryTypeNameExpression","src":"10023:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6841,"type":"bytes1","value":"char"},"id":6863,"name":"Identifier","src":"10029:4:6"}],"id":6864,"name":"FunctionCall","src":"10023:11:6"}],"id":6865,"name":"FunctionCall","src":"10018:17:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":6866,"name":"Literal","src":"10038:4:6"}],"id":6867,"name":"BinaryOperation","src":"10018:24:6"}],"id":6868,"name":"IndexAccess","src":"10003:40:6"}],"id":6869,"name":"FunctionCall","src":"9997:47:6"}],"id":6870,"name":"Assignment","src":"9987:57:6"}],"id":6871,"name":"ExpressionStatement","src":"9987:57:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":6872,"name":"Identifier","src":"10058:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6873,"name":"Identifier","src":"10066:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":6874,"name":"Literal","src":"10077:4:6"}],"id":6875,"name":"BinaryOperation","src":"10066:15:6"}],"id":6876,"name":"FunctionCall","src":"10058:24:6"}],"id":6877,"name":"ExpressionStatement","src":"10058:24:6"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6831,"type":"uint256","value":"i"},"id":6878,"name":"Identifier","src":"10099:1:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6879,"name":"Identifier","src":"10104:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6880,"name":"Literal","src":"10110:1:6"}],"id":6881,"name":"BinaryOperation","src":"10104:7:6"}],"id":6882,"name":"BinaryOperation","src":"10099:12:6"},{"children":[{"id":6883,"name":"Break","src":"10131:5:6"}],"id":6884,"name":"Block","src":"10113:38:6"}],"id":6885,"name":"IfStatement","src":"10096:55:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6886,"name":"Identifier","src":"10164:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6887,"name":"Identifier","src":"10171:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":6888,"name":"Literal","src":"10178:1:6"}],"id":6889,"name":"BinaryOperation","src":"10171:8:6"}],"id":6890,"name":"TupleExpression","src":"10170:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6891,"name":"Identifier","src":"10183:7:6"}],"id":6892,"name":"BinaryOperation","src":"10170:20:6"}],"id":6893,"name":"Assignment","src":"10164:26:6"}],"id":6894,"name":"ExpressionStatement","src":"10164:26:6"}],"id":6895,"name":"Block","src":"9881:320:6"}],"id":6896,"name":"ForStatement","src":"9851:350:6"},{"attributes":{"assignments":[6898]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":7024,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6897,"name":"ElementaryTypeName","src":"10211:4:6"}],"id":6898,"name":"VariableDeclaration","src":"10211:11:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6899,"name":"Identifier","src":"10225:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":6900,"name":"Literal","src":"10231:1:6"}],"id":6901,"name":"BinaryOperation","src":"10225:7:6"}],"id":6902,"name":"VariableDeclarationStatement","src":"10211:21:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6903,"name":"Identifier","src":"10245:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6904,"name":"Literal","src":"10251:1:6"}],"id":6905,"name":"BinaryOperation","src":"10245:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6906,"name":"Literal","src":"10256:1:6"}],"id":6907,"name":"BinaryOperation","src":"10245:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6908,"name":"Identifier","src":"10325:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6909,"name":"Identifier","src":"10332:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":6910,"name":"Literal","src":"10339:1:6"}],"id":6911,"name":"BinaryOperation","src":"10332:8:6"}],"id":6912,"name":"TupleExpression","src":"10331:10:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6913,"name":"Identifier","src":"10344:7:6"}],"id":6914,"name":"BinaryOperation","src":"10331:20:6"}],"id":6915,"name":"Assignment","src":"10325:26:6"}],"id":6916,"name":"ExpressionStatement","src":"10325:26:6"}],"id":6917,"name":"Block","src":"10259:103:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6918,"name":"Identifier","src":"10371:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6919,"name":"Literal","src":"10377:1:6"}],"id":6920,"name":"BinaryOperation","src":"10371:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6921,"name":"Literal","src":"10382:1:6"}],"id":6922,"name":"BinaryOperation","src":"10371:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6923,"name":"Identifier","src":"10444:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6924,"name":"Identifier","src":"10451:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":6925,"name":"Literal","src":"10458:1:6"}],"id":6926,"name":"BinaryOperation","src":"10451:8:6"}],"id":6927,"name":"TupleExpression","src":"10450:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6928,"name":"Identifier","src":"10464:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6929,"name":"Literal","src":"10475:1:6"}],"id":6930,"name":"BinaryOperation","src":"10464:12:6"}],"id":6931,"name":"TupleExpression","src":"10463:14:6"}],"id":6932,"name":"BinaryOperation","src":"10450:27:6"}],"id":6933,"name":"Assignment","src":"10444:33:6"}],"id":6934,"name":"ExpressionStatement","src":"10444:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":6935,"name":"Identifier","src":"10491:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6936,"name":"Literal","src":"10501:1:6"}],"id":6937,"name":"Assignment","src":"10491:11:6"}],"id":6938,"name":"ExpressionStatement","src":"10491:11:6"}],"id":6939,"name":"Block","src":"10385:128:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6940,"name":"Identifier","src":"10522:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6941,"name":"Literal","src":"10528:1:6"}],"id":6942,"name":"BinaryOperation","src":"10522:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6943,"name":"Literal","src":"10533:1:6"}],"id":6944,"name":"BinaryOperation","src":"10522:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6945,"name":"Identifier","src":"10597:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6946,"name":"Identifier","src":"10604:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6947,"name":"Literal","src":"10611:1:6"}],"id":6948,"name":"BinaryOperation","src":"10604:8:6"}],"id":6949,"name":"TupleExpression","src":"10603:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6950,"name":"Identifier","src":"10617:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6951,"name":"Literal","src":"10628:1:6"}],"id":6952,"name":"BinaryOperation","src":"10617:12:6"}],"id":6953,"name":"TupleExpression","src":"10616:14:6"}],"id":6954,"name":"BinaryOperation","src":"10603:27:6"}],"id":6955,"name":"Assignment","src":"10597:33:6"}],"id":6956,"name":"ExpressionStatement","src":"10597:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":6957,"name":"Identifier","src":"10644:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6958,"name":"Literal","src":"10654:1:6"}],"id":6959,"name":"Assignment","src":"10644:11:6"}],"id":6960,"name":"ExpressionStatement","src":"10644:11:6"}],"id":6961,"name":"Block","src":"10536:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6962,"name":"Identifier","src":"10675:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6963,"name":"Literal","src":"10681:1:6"}],"id":6964,"name":"BinaryOperation","src":"10675:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":6965,"name":"Literal","src":"10686:1:6"}],"id":6966,"name":"BinaryOperation","src":"10675:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6967,"name":"Identifier","src":"10750:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6968,"name":"Identifier","src":"10757:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6969,"name":"Literal","src":"10764:1:6"}],"id":6970,"name":"BinaryOperation","src":"10757:8:6"}],"id":6971,"name":"TupleExpression","src":"10756:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6972,"name":"Identifier","src":"10770:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6973,"name":"Literal","src":"10781:1:6"}],"id":6974,"name":"BinaryOperation","src":"10770:12:6"}],"id":6975,"name":"TupleExpression","src":"10769:14:6"}],"id":6976,"name":"BinaryOperation","src":"10756:27:6"}],"id":6977,"name":"Assignment","src":"10750:33:6"}],"id":6978,"name":"ExpressionStatement","src":"10750:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":6979,"name":"Identifier","src":"10797:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6980,"name":"Literal","src":"10807:1:6"}],"id":6981,"name":"Assignment","src":"10797:11:6"}],"id":6982,"name":"ExpressionStatement","src":"10797:11:6"}],"id":6983,"name":"Block","src":"10689:130:6"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"uint256","value":"len"},"id":6984,"name":"Identifier","src":"10828:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6985,"name":"Literal","src":"10834:1:6"}],"id":6986,"name":"BinaryOperation","src":"10828:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":6987,"name":"Literal","src":"10839:1:6"}],"id":6988,"name":"BinaryOperation","src":"10828:12:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6989,"name":"Identifier","src":"10904:3:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":6990,"name":"Identifier","src":"10911:3:6"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6991,"name":"Literal","src":"10918:1:6"}],"id":6992,"name":"BinaryOperation","src":"10911:8:6"}],"id":6993,"name":"TupleExpression","src":"10910:10:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6828,"type":"uint8","value":"decoded"},"id":6994,"name":"Identifier","src":"10924:7:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":6995,"name":"Literal","src":"10935:1:6"}],"id":6996,"name":"BinaryOperation","src":"10924:12:6"}],"id":6997,"name":"TupleExpression","src":"10923:14:6"}],"id":6998,"name":"BinaryOperation","src":"10910:27:6"}],"id":6999,"name":"Assignment","src":"10904:33:6"}],"id":7000,"name":"ExpressionStatement","src":"10904:33:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":7001,"name":"Identifier","src":"10951:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7002,"name":"Literal","src":"10961:1:6"}],"id":7003,"name":"Assignment","src":"10951:11:6"}],"id":7004,"name":"ExpressionStatement","src":"10951:11:6"}],"id":7005,"name":"Block","src":"10842:131:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[7046,7047],"referencedDeclaration":7046,"type":"function () pure","value":"revert"},"id":7006,"name":"Identifier","src":"10993:6:6"}],"id":7007,"name":"FunctionCall","src":"10993:8:6"}],"id":7008,"name":"ExpressionStatement","src":"10993:8:6"}],"id":7009,"name":"Block","src":"10979:33:6"}],"id":7010,"name":"IfStatement","src":"10825:187:6"}],"id":7011,"name":"IfStatement","src":"10672:340:6"}],"id":7012,"name":"IfStatement","src":"10519:493:6"}],"id":7013,"name":"IfStatement","src":"10368:644:6"}],"id":7014,"name":"IfStatement","src":"10242:770:6"},{"attributes":{"functionReturnParameters":6816},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7015,"name":"ElementaryTypeNameExpression","src":"11029:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6824,"type":"uint256","value":"ret"},"id":7016,"name":"Identifier","src":"11037:3:6"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7017,"name":"Literal","src":"11045:3:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"uint256","value":"bitlen"},"id":7018,"name":"Identifier","src":"11051:6:6"}],"id":7019,"name":"BinaryOperation","src":"11045:12:6"}],"id":7020,"name":"TupleExpression","src":"11044:14:6"}],"id":7021,"name":"BinaryOperation","src":"11037:21:6"}],"id":7022,"name":"FunctionCall","src":"11029:30:6"}],"id":7023,"name":"Return","src":"11022:37:6"}],"id":7024,"name":"Block","src":"9767:1299:6"}],"id":7025,"name":"FunctionDefinition","src":"9668:1398:6"}],"id":7026,"name":"ContractDefinition","src":"26:11042:6"}],"id":7027,"name":"SourceUnit","src":"0:11069:6"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[4312]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4140,"name":"PragmaDirective","src":"1401:23:7"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":4141,"name":"PragmaDirective","src":"1425:33:7"},{"attributes":{"SourceUnit":4139,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4142,"name":"ImportDirective","src":"1460:19:7"},{"attributes":{"SourceUnit":4468,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4143,"name":"ImportDirective","src":"1480:36:7"},{"attributes":{"SourceUnit":4627,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4144,"name":"ImportDirective","src":"1517:37:7"},{"attributes":{"SourceUnit":4697,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4145,"name":"ImportDirective","src":"1555:44:7"},{"attributes":{"SourceUnit":5188,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4146,"name":"ImportDirective","src":"1600:36:7"},{"attributes":{"SourceUnit":5375,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4147,"name":"ImportDirective","src":"1637:42:7"},{"attributes":{"SourceUnit":5445,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4148,"name":"ImportDirective","src":"1680:37:7"},{"attributes":{"SourceUnit":5536,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4149,"name":"ImportDirective","src":"1718:39:7"},{"attributes":{"SourceUnit":5619,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":4313,"symbolAliases":[null],"unitAlias":""},"id":4150,"name":"ImportDirective","src":"1758:37:7"},{"attributes":{"contractDependencies":[4467,4626,4696,5187,5374,5444,5535,5618,5687],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[4312,5618,5535,5444,5374,5187,4696,4626,4467,5687],"name":"PublicResolver","scope":4313},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":4467,"type":"contract ABIResolver"},"id":4151,"name":"UserDefinedTypeName","src":"1924:11:7"}],"id":4152,"name":"InheritanceSpecifier","src":"1924:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":4626,"type":"contract AddrResolver"},"id":4153,"name":"UserDefinedTypeName","src":"1937:12:7"}],"id":4154,"name":"InheritanceSpecifier","src":"1937:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":4696,"type":"contract ContentHashResolver"},"id":4155,"name":"UserDefinedTypeName","src":"1951:19:7"}],"id":4156,"name":"InheritanceSpecifier","src":"1951:19:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":5187,"type":"contract DNSResolver"},"id":4157,"name":"UserDefinedTypeName","src":"1972:11:7"}],"id":4158,"name":"InheritanceSpecifier","src":"1972:11:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":5374,"type":"contract InterfaceResolver"},"id":4159,"name":"UserDefinedTypeName","src":"1985:17:7"}],"id":4160,"name":"InheritanceSpecifier","src":"1985:17:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":5444,"type":"contract NameResolver"},"id":4161,"name":"UserDefinedTypeName","src":"2004:12:7"}],"id":4162,"name":"InheritanceSpecifier","src":"2004:12:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":5535,"type":"contract PubkeyResolver"},"id":4163,"name":"UserDefinedTypeName","src":"2018:14:7"}],"id":4164,"name":"InheritanceSpecifier","src":"2018:14:7"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":5618,"type":"contract TextResolver"},"id":4165,"name":"UserDefinedTypeName","src":"2034:12:7"}],"id":4166,"name":"InheritanceSpecifier","src":"2034:12:7"},{"attributes":{"constant":false,"name":"ens","scope":4312,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4138,"type":"contract ENS"},"id":4167,"name":"UserDefinedTypeName","src":"2053:3:7"}],"id":4168,"name":"VariableDeclaration","src":"2053:7:7"},{"attributes":{"constant":false,"name":"authorisations","scope":4312,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4169,"name":"ElementaryTypeName","src":"2328:7:7"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":4170,"name":"ElementaryTypeName","src":"2345:7:7"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4171,"name":"ElementaryTypeName","src":"2362:7:7"},{"attributes":{"name":"bool","type":"bool"},"id":4172,"name":"ElementaryTypeName","src":"2371:4:7"}],"id":4173,"name":"Mapping","src":"2354:22:7"}],"id":4174,"name":"Mapping","src":"2337:40:7"}],"id":4175,"name":"Mapping","src":"2320:58:7"}],"id":4176,"name":"VariableDeclaration","src":"2320:80:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4177,"name":"ElementaryTypeName","src":"2434:7:7"}],"id":4178,"name":"VariableDeclaration","src":"2434:20:7"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":4186,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4179,"name":"ElementaryTypeName","src":"2456:7:7"}],"id":4180,"name":"VariableDeclaration","src":"2456:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":4186,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4181,"name":"ElementaryTypeName","src":"2479:7:7"}],"id":4182,"name":"VariableDeclaration","src":"2479:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":4186,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4183,"name":"ElementaryTypeName","src":"2503:4:7"}],"id":4184,"name":"VariableDeclaration","src":"2503:17:7"}],"id":4185,"name":"ParameterList","src":"2433:88:7"}],"id":4186,"name":"EventDefinition","src":"2407:115:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4312,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":4196,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4138,"type":"contract ENS"},"id":4187,"name":"UserDefinedTypeName","src":"2540:3:7"}],"id":4188,"name":"VariableDeclaration","src":"2540:8:7"}],"id":4189,"name":"ParameterList","src":"2539:10:7"},{"attributes":{"parameters":[null]},"children":[],"id":4190,"name":"ParameterList","src":"2557:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4168,"type":"contract ENS","value":"ens"},"id":4191,"name":"Identifier","src":"2567:3:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4188,"type":"contract ENS","value":"_ens"},"id":4192,"name":"Identifier","src":"2573:4:7"}],"id":4193,"name":"Assignment","src":"2567:10:7"}],"id":4194,"name":"ExpressionStatement","src":"2567:10:7"}],"id":4195,"name":"Block","src":"2557:27:7"}],"id":4196,"name":"FunctionDefinition","src":"2528:56:7"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":4312,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4225,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4197,"name":"ElementaryTypeName","src":"3295:7:7"}],"id":4198,"name":"VariableDeclaration","src":"3295:12:7"},{"attributes":{"constant":false,"name":"target","scope":4225,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4199,"name":"ElementaryTypeName","src":"3309:7:7"}],"id":4200,"name":"VariableDeclaration","src":"3309:14:7"},{"attributes":{"constant":false,"name":"isAuthorised","scope":4225,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4201,"name":"ElementaryTypeName","src":"3325:4:7"}],"id":4202,"name":"VariableDeclaration","src":"3325:17:7"}],"id":4203,"name":"ParameterList","src":"3294:49:7"},{"attributes":{"parameters":[null]},"children":[],"id":4204,"name":"ParameterList","src":"3353:0:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4176,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4205,"name":"Identifier","src":"3363:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4198,"type":"bytes32","value":"node"},"id":4206,"name":"Identifier","src":"3378:4:7"}],"id":4210,"name":"IndexAccess","src":"3363:20:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":4207,"name":"Identifier","src":"3384:3:7"}],"id":4208,"name":"MemberAccess","src":"3384:10:7"}],"id":4211,"name":"IndexAccess","src":"3363:32:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"target"},"id":4209,"name":"Identifier","src":"3396:6:7"}],"id":4212,"name":"IndexAccess","src":"3363:40:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4202,"type":"bool","value":"isAuthorised"},"id":4213,"name":"Identifier","src":"3406:12:7"}],"id":4214,"name":"Assignment","src":"3363:55:7"}],"id":4215,"name":"ExpressionStatement","src":"3363:55:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4186,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":4216,"name":"Identifier","src":"3433:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4198,"type":"bytes32","value":"node"},"id":4217,"name":"Identifier","src":"3454:4:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":4218,"name":"Identifier","src":"3460:3:7"}],"id":4219,"name":"MemberAccess","src":"3460:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"target"},"id":4220,"name":"Identifier","src":"3472:6:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4202,"type":"bool","value":"isAuthorised"},"id":4221,"name":"Identifier","src":"3480:12:7"}],"id":4222,"name":"FunctionCall","src":"3433:60:7"}],"id":4223,"name":"EmitStatement","src":"3428:65:7"}],"id":4224,"name":"Block","src":"3353:147:7"}],"id":4225,"name":"FunctionDefinition","src":"3269:231:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":4312,"stateMutability":"view","superFunction":5642,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4254,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4226,"name":"ElementaryTypeName","src":"3528:7:7"}],"id":4227,"name":"VariableDeclaration","src":"3528:12:7"}],"id":4228,"name":"ParameterList","src":"3527:14:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4254,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4229,"name":"ElementaryTypeName","src":"3564:4:7"}],"id":4230,"name":"VariableDeclaration","src":"3564:4:7"}],"id":4231,"name":"ParameterList","src":"3563:6:7"},{"children":[{"attributes":{"assignments":[4233]},"children":[{"attributes":{"constant":false,"name":"owner","scope":4253,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4232,"name":"ElementaryTypeName","src":"3580:7:7"}],"id":4233,"name":"VariableDeclaration","src":"3580:13:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":4107,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4168,"type":"contract ENS","value":"ens"},"id":4234,"name":"Identifier","src":"3596:3:7"}],"id":4235,"name":"MemberAccess","src":"3596:9:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"bytes32","value":"node"},"id":4236,"name":"Identifier","src":"3606:4:7"}],"id":4237,"name":"FunctionCall","src":"3596:15:7"}],"id":4238,"name":"VariableDeclarationStatement","src":"3580:31:7"},{"attributes":{"functionReturnParameters":4231},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4233,"type":"address","value":"owner"},"id":4239,"name":"Identifier","src":"3628:5:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":4240,"name":"Identifier","src":"3637:3:7"}],"id":4241,"name":"MemberAccess","src":"3637:10:7"}],"id":4242,"name":"BinaryOperation","src":"3628:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4176,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4243,"name":"Identifier","src":"3651:14:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4227,"type":"bytes32","value":"node"},"id":4244,"name":"Identifier","src":"3666:4:7"}],"id":4245,"name":"IndexAccess","src":"3651:20:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4233,"type":"address","value":"owner"},"id":4246,"name":"Identifier","src":"3672:5:7"}],"id":4247,"name":"IndexAccess","src":"3651:27:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":4248,"name":"Identifier","src":"3679:3:7"}],"id":4249,"name":"MemberAccess","src":"3679:10:7"}],"id":4250,"name":"IndexAccess","src":"3651:39:7"}],"id":4251,"name":"BinaryOperation","src":"3628:62:7"}],"id":4252,"name":"Return","src":"3621:69:7"}],"id":4253,"name":"Block","src":"3570:127:7"}],"id":4254,"name":"FunctionDefinition","src":"3506:191:7"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":4312,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":4311,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4255,"name":"ElementaryTypeName","src":"3722:5:7"}],"id":4256,"name":"ArrayTypeName","src":"3722:7:7"}],"id":4257,"name":"VariableDeclaration","src":"3722:21:7"}],"id":4258,"name":"ParameterList","src":"3721:23:7"},{"children":[{"attributes":{"constant":false,"name":"results","scope":4311,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4259,"name":"ElementaryTypeName","src":"3762:5:7"}],"id":4260,"name":"ArrayTypeName","src":"3762:7:7"}],"id":4261,"name":"VariableDeclaration","src":"3762:22:7"}],"id":4262,"name":"ParameterList","src":"3761:24:7"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"bytes memory[] memory","value":"results"},"id":4263,"name":"Identifier","src":"3796:7:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4264,"name":"ElementaryTypeName","src":"3810:5:7"}],"id":4265,"name":"ArrayTypeName","src":"3810:7:7"}],"id":4266,"name":"NewExpression","src":"3806:11:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"bytes calldata[] calldata","value":"data"},"id":4267,"name":"Identifier","src":"3818:4:7"}],"id":4268,"name":"MemberAccess","src":"3818:11:7"}],"id":4269,"name":"FunctionCall","src":"3806:24:7"}],"id":4270,"name":"Assignment","src":"3796:34:7"}],"id":4271,"name":"ExpressionStatement","src":"3796:34:7"},{"children":[{"attributes":{"assignments":[4273]},"children":[{"attributes":{"constant":false,"name":"i","scope":4307,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4272,"name":"ElementaryTypeName","src":"3844:4:7"}],"id":4273,"name":"VariableDeclaration","src":"3844:6:7"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4274,"name":"Literal","src":"3853:1:7"}],"id":4275,"name":"VariableDeclarationStatement","src":"3844:10:7"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"uint256","value":"i"},"id":4276,"name":"Identifier","src":"3856:1:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"bytes calldata[] calldata","value":"data"},"id":4277,"name":"Identifier","src":"3860:4:7"}],"id":4278,"name":"MemberAccess","src":"3860:11:7"}],"id":4279,"name":"BinaryOperation","src":"3856:15:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"uint256","value":"i"},"id":4280,"name":"Identifier","src":"3873:1:7"}],"id":4281,"name":"UnaryOperation","src":"3873:3:7"}],"id":4282,"name":"ExpressionStatement","src":"3873:3:7"},{"children":[{"attributes":{"assignments":[4284,4286]},"children":[{"attributes":{"constant":false,"name":"success","scope":4306,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4283,"name":"ElementaryTypeName","src":"3893:4:7"}],"id":4284,"name":"VariableDeclaration","src":"3893:12:7"},{"attributes":{"constant":false,"name":"result","scope":4306,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4285,"name":"ElementaryTypeName","src":"3907:5:7"}],"id":4286,"name":"VariableDeclaration","src":"3907:19:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$4312","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4287,"name":"ElementaryTypeNameExpression","src":"3930:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7095,"type":"contract PublicResolver","value":"this"},"id":4288,"name":"Identifier","src":"3938:4:7"}],"id":4289,"name":"FunctionCall","src":"3930:13:7"}],"id":4290,"name":"MemberAccess","src":"3930:26:7"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4257,"type":"bytes calldata[] calldata","value":"data"},"id":4291,"name":"Identifier","src":"3957:4:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"uint256","value":"i"},"id":4292,"name":"Identifier","src":"3962:1:7"}],"id":4293,"name":"IndexAccess","src":"3957:7:7"}],"id":4294,"name":"FunctionCall","src":"3930:35:7"}],"id":4295,"name":"VariableDeclarationStatement","src":"3892:73:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":4296,"name":"Identifier","src":"3979:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4284,"type":"bool","value":"success"},"id":4297,"name":"Identifier","src":"3987:7:7"}],"id":4298,"name":"FunctionCall","src":"3979:16:7"}],"id":4299,"name":"ExpressionStatement","src":"3979:16:7"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"bytes memory[] memory","value":"results"},"id":4300,"name":"Identifier","src":"4009:7:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4273,"type":"uint256","value":"i"},"id":4301,"name":"Identifier","src":"4017:1:7"}],"id":4302,"name":"IndexAccess","src":"4009:10:7"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4286,"type":"bytes memory","value":"result"},"id":4303,"name":"Identifier","src":"4022:6:7"}],"id":4304,"name":"Assignment","src":"4009:19:7"}],"id":4305,"name":"ExpressionStatement","src":"4009:19:7"}],"id":4306,"name":"Block","src":"3878:161:7"}],"id":4307,"name":"ForStatement","src":"3840:199:7"},{"attributes":{"functionReturnParameters":4262},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4261,"type":"bytes memory[] memory","value":"results"},"id":4308,"name":"Identifier","src":"4055:7:7"}],"id":4309,"name":"Return","src":"4048:14:7"}],"id":4310,"name":"Block","src":"3786:283:7"}],"id":4311,"name":"FunctionDefinition","src":"3703:366:7"}],"id":4312,"name":"ContractDefinition","src":"1897:2174:7"}],"id":4313,"name":"SourceUnit","src":"1401:2671:7"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[6305]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":5689,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"SourceUnit":7027,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":6306,"symbolAliases":[null],"unitAlias":""},"id":5690,"name":"ImportDirective","src":"26:29:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[6305],"name":"RRUtils","scope":6306},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7026,"type":"library ENSBytesUtils"},"id":5691,"name":"UserDefinedTypeName","src":"178:13:8"}],"id":5692,"name":"UsingForDirective","src":"172:26:8"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5739,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5693,"name":"ElementaryTypeName","src":"487:5:8"}],"id":5694,"name":"VariableDeclaration","src":"487:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5695,"name":"ElementaryTypeName","src":"506:4:8"}],"id":5696,"name":"VariableDeclaration","src":"506:11:8"}],"id":5697,"name":"ParameterList","src":"486:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5698,"name":"ElementaryTypeName","src":"541:4:8"}],"id":5699,"name":"VariableDeclaration","src":"541:4:8"}],"id":5700,"name":"ParameterList","src":"540:6:8"},{"children":[{"attributes":{"assignments":[5702]},"children":[{"attributes":{"constant":false,"name":"idx","scope":5738,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5701,"name":"ElementaryTypeName","src":"557:4:8"}],"id":5702,"name":"VariableDeclaration","src":"557:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5696,"type":"uint256","value":"offset"},"id":5703,"name":"Identifier","src":"568:6:8"}],"id":5704,"name":"VariableDeclarationStatement","src":"557:17:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5705,"name":"Literal","src":"591:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7030,"type":"function (bool) pure","value":"assert"},"id":5706,"name":"Identifier","src":"611:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"uint256","value":"idx"},"id":5707,"name":"Identifier","src":"618:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5694,"type":"bytes memory","value":"self"},"id":5708,"name":"Identifier","src":"624:4:8"}],"id":5709,"name":"MemberAccess","src":"624:11:8"}],"id":5710,"name":"BinaryOperation","src":"618:17:8"}],"id":5711,"name":"FunctionCall","src":"611:25:8"}],"id":5712,"name":"ExpressionStatement","src":"611:25:8"},{"attributes":{"assignments":[5714]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":5732,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5713,"name":"ElementaryTypeName","src":"650:4:8"}],"id":5714,"name":"VariableDeclaration","src":"650:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5694,"type":"bytes memory","value":"self"},"id":5715,"name":"Identifier","src":"666:4:8"}],"id":5716,"name":"MemberAccess","src":"666:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"uint256","value":"idx"},"id":5717,"name":"Identifier","src":"681:3:8"}],"id":5718,"name":"FunctionCall","src":"666:19:8"}],"id":5719,"name":"VariableDeclarationStatement","src":"650:35:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"uint256","value":"idx"},"id":5720,"name":"Identifier","src":"699:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5714,"type":"uint256","value":"labelLen"},"id":5721,"name":"Identifier","src":"706:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5722,"name":"Literal","src":"717:1:8"}],"id":5723,"name":"BinaryOperation","src":"706:12:8"}],"id":5724,"name":"Assignment","src":"699:19:8"}],"id":5725,"name":"ExpressionStatement","src":"699:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5714,"type":"uint256","value":"labelLen"},"id":5726,"name":"Identifier","src":"736:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5727,"name":"Literal","src":"748:1:8"}],"id":5728,"name":"BinaryOperation","src":"736:13:8"},{"children":[{"id":5729,"name":"Break","src":"769:5:8"}],"id":5730,"name":"Block","src":"751:38:8"}],"id":5731,"name":"IfStatement","src":"732:57:8"}],"id":5732,"name":"Block","src":"597:202:8"}],"id":5733,"name":"WhileStatement","src":"584:215:8"},{"attributes":{"functionReturnParameters":5700},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"uint256","value":"idx"},"id":5734,"name":"Identifier","src":"815:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5696,"type":"uint256","value":"offset"},"id":5735,"name":"Identifier","src":"821:6:8"}],"id":5736,"name":"BinaryOperation","src":"815:12:8"}],"id":5737,"name":"Return","src":"808:19:8"}],"id":5738,"name":"Block","src":"547:287:8"}],"id":5739,"name":"FunctionDefinition","src":"467:367:8"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5762,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5740,"name":"ElementaryTypeName","src":"1073:5:8"}],"id":5741,"name":"VariableDeclaration","src":"1073:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5762,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5742,"name":"ElementaryTypeName","src":"1092:4:8"}],"id":5743,"name":"VariableDeclaration","src":"1092:11:8"}],"id":5744,"name":"ParameterList","src":"1072:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":5762,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5745,"name":"ElementaryTypeName","src":"1127:5:8"}],"id":5746,"name":"VariableDeclaration","src":"1127:16:8"}],"id":5747,"name":"ParameterList","src":"1126:18:8"},{"children":[{"attributes":{"assignments":[5749]},"children":[{"attributes":{"constant":false,"name":"len","scope":5761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5748,"name":"ElementaryTypeName","src":"1155:4:8"}],"id":5749,"name":"VariableDeclaration","src":"1155:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5750,"name":"Identifier","src":"1166:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5741,"type":"bytes memory","value":"self"},"id":5751,"name":"Identifier","src":"1177:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5743,"type":"uint256","value":"offset"},"id":5752,"name":"Identifier","src":"1183:6:8"}],"id":5753,"name":"FunctionCall","src":"1166:24:8"}],"id":5754,"name":"VariableDeclarationStatement","src":"1155:35:8"},{"attributes":{"functionReturnParameters":5747},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":6803,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5741,"type":"bytes memory","value":"self"},"id":5755,"name":"Identifier","src":"1207:4:8"}],"id":5756,"name":"MemberAccess","src":"1207:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5743,"type":"uint256","value":"offset"},"id":5757,"name":"Identifier","src":"1222:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5749,"type":"uint256","value":"len"},"id":5758,"name":"Identifier","src":"1230:3:8"}],"id":5759,"name":"FunctionCall","src":"1207:27:8"}],"id":5760,"name":"Return","src":"1200:34:8"}],"id":5761,"name":"Block","src":"1145:96:8"}],"id":5762,"name":"FunctionDefinition","src":"1055:186:8"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5811,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5763,"name":"ElementaryTypeName","src":"1541:5:8"}],"id":5764,"name":"VariableDeclaration","src":"1541:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5811,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5765,"name":"ElementaryTypeName","src":"1560:4:8"}],"id":5766,"name":"VariableDeclaration","src":"1560:11:8"}],"id":5767,"name":"ParameterList","src":"1540:32:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5811,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5768,"name":"ElementaryTypeName","src":"1595:4:8"}],"id":5769,"name":"VariableDeclaration","src":"1595:4:8"}],"id":5770,"name":"ParameterList","src":"1594:6:8"},{"children":[{"attributes":{"assignments":[5772]},"children":[{"attributes":{"constant":false,"name":"count","scope":5810,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5771,"name":"ElementaryTypeName","src":"1611:4:8"}],"id":5772,"name":"VariableDeclaration","src":"1611:10:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5773,"name":"Literal","src":"1624:1:8"}],"id":5774,"name":"VariableDeclarationStatement","src":"1611:14:8"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5775,"name":"Literal","src":"1642:4:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":7030,"type":"function (bool) pure","value":"assert"},"id":5776,"name":"Identifier","src":"1662:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5766,"type":"uint256","value":"offset"},"id":5777,"name":"Identifier","src":"1669:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5764,"type":"bytes memory","value":"self"},"id":5778,"name":"Identifier","src":"1678:4:8"}],"id":5779,"name":"MemberAccess","src":"1678:11:8"}],"id":5780,"name":"BinaryOperation","src":"1669:20:8"}],"id":5781,"name":"FunctionCall","src":"1662:28:8"}],"id":5782,"name":"ExpressionStatement","src":"1662:28:8"},{"attributes":{"assignments":[5784]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":5806,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5783,"name":"ElementaryTypeName","src":"1704:4:8"}],"id":5784,"name":"VariableDeclaration","src":"1704:13:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5764,"type":"bytes memory","value":"self"},"id":5785,"name":"Identifier","src":"1720:4:8"}],"id":5786,"name":"MemberAccess","src":"1720:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5766,"type":"uint256","value":"offset"},"id":5787,"name":"Identifier","src":"1735:6:8"}],"id":5788,"name":"FunctionCall","src":"1720:22:8"}],"id":5789,"name":"VariableDeclarationStatement","src":"1704:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5766,"type":"uint256","value":"offset"},"id":5790,"name":"Identifier","src":"1756:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5784,"type":"uint256","value":"labelLen"},"id":5791,"name":"Identifier","src":"1766:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5792,"name":"Literal","src":"1777:1:8"}],"id":5793,"name":"BinaryOperation","src":"1766:12:8"}],"id":5794,"name":"Assignment","src":"1756:22:8"}],"id":5795,"name":"ExpressionStatement","src":"1756:22:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5784,"type":"uint256","value":"labelLen"},"id":5796,"name":"Identifier","src":"1796:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5797,"name":"Literal","src":"1808:1:8"}],"id":5798,"name":"BinaryOperation","src":"1796:13:8"},{"children":[{"id":5799,"name":"Break","src":"1829:5:8"}],"id":5800,"name":"Block","src":"1811:38:8"}],"id":5801,"name":"IfStatement","src":"1792:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5772,"type":"uint256","value":"count"},"id":5802,"name":"Identifier","src":"1862:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5803,"name":"Literal","src":"1871:1:8"}],"id":5804,"name":"Assignment","src":"1862:10:8"}],"id":5805,"name":"ExpressionStatement","src":"1862:10:8"}],"id":5806,"name":"Block","src":"1648:235:8"}],"id":5807,"name":"WhileStatement","src":"1635:248:8"},{"attributes":{"functionReturnParameters":5770},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5772,"type":"uint256","value":"count"},"id":5808,"name":"Identifier","src":"1899:5:8"}],"id":5809,"name":"Return","src":"1892:12:8"}],"id":5810,"name":"Block","src":"1601:310:8"}],"id":5811,"name":"FunctionDefinition","src":"1521:390:8"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":6305,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":5826,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5812,"name":"ElementaryTypeName","src":"2006:5:8"}],"id":5813,"name":"VariableDeclaration","src":"2006:10:8"},{"attributes":{"constant":false,"name":"offset","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5814,"name":"ElementaryTypeName","src":"2026:4:8"}],"id":5815,"name":"VariableDeclaration","src":"2026:11:8"},{"attributes":{"constant":false,"name":"dnstype","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5816,"name":"ElementaryTypeName","src":"2047:6:8"}],"id":5817,"name":"VariableDeclaration","src":"2047:14:8"},{"attributes":{"constant":false,"name":"class","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5818,"name":"ElementaryTypeName","src":"2071:6:8"}],"id":5819,"name":"VariableDeclaration","src":"2071:12:8"},{"attributes":{"constant":false,"name":"ttl","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":5820,"name":"ElementaryTypeName","src":"2093:6:8"}],"id":5821,"name":"VariableDeclaration","src":"2093:10:8"},{"attributes":{"constant":false,"name":"rdataOffset","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5822,"name":"ElementaryTypeName","src":"2113:4:8"}],"id":5823,"name":"VariableDeclaration","src":"2113:16:8"},{"attributes":{"constant":false,"name":"nextOffset","scope":5826,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5824,"name":"ElementaryTypeName","src":"2139:4:8"}],"id":5825,"name":"VariableDeclaration","src":"2139:15:8"}],"id":5826,"name":"StructDefinition","src":"1978:183:8"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":5852,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5827,"name":"ElementaryTypeName","src":"2387:5:8"}],"id":5828,"name":"VariableDeclaration","src":"2387:17:8"},{"attributes":{"constant":false,"name":"offset","scope":5852,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5829,"name":"ElementaryTypeName","src":"2406:4:8"}],"id":5830,"name":"VariableDeclaration","src":"2406:11:8"}],"id":5831,"name":"ParameterList","src":"2386:32:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":5852,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5832,"name":"UserDefinedTypeName","src":"2442:10:8"}],"id":5833,"name":"VariableDeclaration","src":"2442:21:8"}],"id":5834,"name":"ParameterList","src":"2441:23:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5833,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5835,"name":"Identifier","src":"2475:3:8"}],"id":5837,"name":"MemberAccess","src":"2475:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5828,"type":"bytes memory","value":"self"},"id":5838,"name":"Identifier","src":"2486:4:8"}],"id":5839,"name":"Assignment","src":"2475:15:8"}],"id":5840,"name":"ExpressionStatement","src":"2475:15:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":5825,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5833,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5841,"name":"Identifier","src":"2500:3:8"}],"id":5843,"name":"MemberAccess","src":"2500:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5830,"type":"uint256","value":"offset"},"id":5844,"name":"Identifier","src":"2517:6:8"}],"id":5845,"name":"Assignment","src":"2500:23:8"}],"id":5846,"name":"ExpressionStatement","src":"2500:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$5826_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5969,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":5847,"name":"Identifier","src":"2533:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5833,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":5848,"name":"Identifier","src":"2538:3:8"}],"id":5849,"name":"FunctionCall","src":"2533:9:8"}],"id":5850,"name":"ExpressionStatement","src":"2533:9:8"}],"id":5851,"name":"Block","src":"2465:84:8"}],"id":5852,"name":"FunctionDefinition","src":"2367:182:8"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5867,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5853,"name":"UserDefinedTypeName","src":"2734:10:8"}],"id":5854,"name":"VariableDeclaration","src":"2734:22:8"}],"id":5855,"name":"ParameterList","src":"2733:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5867,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5856,"name":"ElementaryTypeName","src":"2780:4:8"}],"id":5857,"name":"VariableDeclaration","src":"2780:4:8"}],"id":5858,"name":"ParameterList","src":"2779:6:8"},{"children":[{"attributes":{"functionReturnParameters":5858},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5859,"name":"Identifier","src":"2803:4:8"}],"id":5860,"name":"MemberAccess","src":"2803:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5854,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5861,"name":"Identifier","src":"2818:4:8"}],"id":5862,"name":"MemberAccess","src":"2818:9:8"}],"id":5863,"name":"MemberAccess","src":"2818:16:8"}],"id":5864,"name":"BinaryOperation","src":"2803:31:8"}],"id":5865,"name":"Return","src":"2796:38:8"}],"id":5866,"name":"Block","src":"2786:55:8"}],"id":5867,"name":"FunctionDefinition","src":"2720:121:8"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5969,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5868,"name":"UserDefinedTypeName","src":"2978:10:8"}],"id":5869,"name":"VariableDeclaration","src":"2978:22:8"}],"id":5870,"name":"ParameterList","src":"2977:24:8"},{"attributes":{"parameters":[null]},"children":[],"id":5871,"name":"ParameterList","src":"3016:0:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5872,"name":"Identifier","src":"3026:4:8"}],"id":5874,"name":"MemberAccess","src":"3026:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":5825,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5875,"name":"Identifier","src":"3040:4:8"}],"id":5876,"name":"MemberAccess","src":"3040:15:8"}],"id":5877,"name":"Assignment","src":"3026:29:8"}],"id":5878,"name":"ExpressionStatement","src":"3026:29:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5879,"name":"Identifier","src":"3069:4:8"}],"id":5880,"name":"MemberAccess","src":"3069:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5881,"name":"Identifier","src":"3084:4:8"}],"id":5882,"name":"MemberAccess","src":"3084:9:8"}],"id":5883,"name":"MemberAccess","src":"3084:16:8"}],"id":5884,"name":"BinaryOperation","src":"3069:31:8"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":5871},"id":5885,"name":"Return","src":"3116:7:8"}],"id":5886,"name":"Block","src":"3102:31:8"}],"id":5887,"name":"IfStatement","src":"3065:68:8"},{"attributes":{"assignments":[5889]},"children":[{"attributes":{"constant":false,"name":"off","scope":5968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5888,"name":"ElementaryTypeName","src":"3168:4:8"}],"id":5889,"name":"VariableDeclaration","src":"3168:8:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5890,"name":"Identifier","src":"3179:4:8"}],"id":5891,"name":"MemberAccess","src":"3179:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5892,"name":"Identifier","src":"3193:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5893,"name":"Identifier","src":"3204:4:8"}],"id":5894,"name":"MemberAccess","src":"3204:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5895,"name":"Identifier","src":"3215:4:8"}],"id":5896,"name":"MemberAccess","src":"3215:11:8"}],"id":5897,"name":"FunctionCall","src":"3193:34:8"}],"id":5898,"name":"BinaryOperation","src":"3179:48:8"}],"id":5899,"name":"VariableDeclarationStatement","src":"3168:59:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":5817,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5900,"name":"Identifier","src":"3275:4:8"}],"id":5902,"name":"MemberAccess","src":"3275:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6632,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5903,"name":"Identifier","src":"3290:4:8"}],"id":5904,"name":"MemberAccess","src":"3290:9:8"}],"id":5905,"name":"MemberAccess","src":"3290:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5906,"name":"Identifier","src":"3311:3:8"}],"id":5907,"name":"FunctionCall","src":"3290:25:8"}],"id":5908,"name":"Assignment","src":"3275:40:8"}],"id":5909,"name":"ExpressionStatement","src":"3275:40:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5910,"name":"Identifier","src":"3325:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5911,"name":"Literal","src":"3332:1:8"}],"id":5912,"name":"Assignment","src":"3325:8:8"}],"id":5913,"name":"ExpressionStatement","src":"3325:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":5819,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5914,"name":"Identifier","src":"3343:4:8"}],"id":5916,"name":"MemberAccess","src":"3343:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6632,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5917,"name":"Identifier","src":"3356:4:8"}],"id":5918,"name":"MemberAccess","src":"3356:9:8"}],"id":5919,"name":"MemberAccess","src":"3356:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5920,"name":"Identifier","src":"3377:3:8"}],"id":5921,"name":"FunctionCall","src":"3356:25:8"}],"id":5922,"name":"Assignment","src":"3343:38:8"}],"id":5923,"name":"ExpressionStatement","src":"3343:38:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5924,"name":"Identifier","src":"3391:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5925,"name":"Literal","src":"3398:1:8"}],"id":5926,"name":"Assignment","src":"3391:8:8"}],"id":5927,"name":"ExpressionStatement","src":"3391:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":5821,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5928,"name":"Identifier","src":"3409:4:8"}],"id":5930,"name":"MemberAccess","src":"3409:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":6652,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5931,"name":"Identifier","src":"3420:4:8"}],"id":5932,"name":"MemberAccess","src":"3420:9:8"}],"id":5933,"name":"MemberAccess","src":"3420:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5934,"name":"Identifier","src":"3441:3:8"}],"id":5935,"name":"FunctionCall","src":"3420:25:8"}],"id":5936,"name":"Assignment","src":"3409:36:8"}],"id":5937,"name":"ExpressionStatement","src":"3409:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5938,"name":"Identifier","src":"3455:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5939,"name":"Literal","src":"3462:1:8"}],"id":5940,"name":"Assignment","src":"3455:8:8"}],"id":5941,"name":"ExpressionStatement","src":"3455:8:8"},{"attributes":{"assignments":[5943]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":5968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5942,"name":"ElementaryTypeName","src":"3500:4:8"}],"id":5943,"name":"VariableDeclaration","src":"3500:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":6632,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5944,"name":"Identifier","src":"3519:4:8"}],"id":5945,"name":"MemberAccess","src":"3519:9:8"}],"id":5946,"name":"MemberAccess","src":"3519:20:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5947,"name":"Identifier","src":"3540:3:8"}],"id":5948,"name":"FunctionCall","src":"3519:25:8"}],"id":5949,"name":"VariableDeclarationStatement","src":"3500:44:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5950,"name":"Identifier","src":"3554:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":5951,"name":"Literal","src":"3561:1:8"}],"id":5952,"name":"Assignment","src":"3554:8:8"}],"id":5953,"name":"ExpressionStatement","src":"3554:8:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":5823,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5954,"name":"Identifier","src":"3572:4:8"}],"id":5956,"name":"MemberAccess","src":"3572:16:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5957,"name":"Identifier","src":"3591:3:8"}],"id":5958,"name":"Assignment","src":"3572:22:8"}],"id":5959,"name":"ExpressionStatement","src":"3572:22:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":5825,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5869,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5960,"name":"Identifier","src":"3604:4:8"}],"id":5962,"name":"MemberAccess","src":"3604:15:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"uint256","value":"off"},"id":5963,"name":"Identifier","src":"3622:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5943,"type":"uint256","value":"rdataLength"},"id":5964,"name":"Identifier","src":"3628:11:8"}],"id":5965,"name":"BinaryOperation","src":"3622:17:8"}],"id":5966,"name":"Assignment","src":"3604:35:8"}],"id":5967,"name":"ExpressionStatement","src":"3604:35:8"}],"id":5968,"name":"Block","src":"3016:630:8"}],"id":5969,"name":"FunctionDefinition","src":"2964:682:8"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":5990,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5970,"name":"UserDefinedTypeName","src":"3836:10:8"}],"id":5971,"name":"VariableDeclaration","src":"3836:22:8"}],"id":5972,"name":"ParameterList","src":"3835:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":5990,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5973,"name":"ElementaryTypeName","src":"3882:5:8"}],"id":5974,"name":"VariableDeclaration","src":"3882:12:8"}],"id":5975,"name":"ParameterList","src":"3881:14:8"},{"children":[{"attributes":{"functionReturnParameters":5975},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":6803,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5971,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5976,"name":"Identifier","src":"3913:4:8"}],"id":5977,"name":"MemberAccess","src":"3913:9:8"}],"id":5978,"name":"MemberAccess","src":"3913:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5971,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5979,"name":"Identifier","src":"3933:4:8"}],"id":5980,"name":"MemberAccess","src":"3933:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":5981,"name":"Identifier","src":"3946:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5971,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5982,"name":"Identifier","src":"3957:4:8"}],"id":5983,"name":"MemberAccess","src":"3957:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5971,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5984,"name":"Identifier","src":"3968:4:8"}],"id":5985,"name":"MemberAccess","src":"3968:11:8"}],"id":5986,"name":"FunctionCall","src":"3946:34:8"}],"id":5987,"name":"FunctionCall","src":"3913:68:8"}],"id":5988,"name":"Return","src":"3906:75:8"}],"id":5989,"name":"Block","src":"3896:92:8"}],"id":5990,"name":"FunctionDefinition","src":"3822:166:8"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":6010,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":5991,"name":"UserDefinedTypeName","src":"4176:10:8"}],"id":5992,"name":"VariableDeclaration","src":"4176:22:8"}],"id":5993,"name":"ParameterList","src":"4175:24:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6010,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5994,"name":"ElementaryTypeName","src":"4222:5:8"}],"id":5995,"name":"VariableDeclaration","src":"4222:12:8"}],"id":5996,"name":"ParameterList","src":"4221:14:8"},{"children":[{"attributes":{"functionReturnParameters":5996},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":6803,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":5813,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5992,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5997,"name":"Identifier","src":"4253:4:8"}],"id":5998,"name":"MemberAccess","src":"4253:9:8"}],"id":5999,"name":"MemberAccess","src":"4253:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":5823,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5992,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6000,"name":"Identifier","src":"4273:4:8"}],"id":6001,"name":"MemberAccess","src":"4273:16:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":5825,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5992,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6002,"name":"Identifier","src":"4291:4:8"}],"id":6003,"name":"MemberAccess","src":"4291:15:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":5823,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5992,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6004,"name":"Identifier","src":"4309:4:8"}],"id":6005,"name":"MemberAccess","src":"4309:16:8"}],"id":6006,"name":"BinaryOperation","src":"4291:34:8"}],"id":6007,"name":"FunctionCall","src":"4253:73:8"}],"id":6008,"name":"Return","src":"4246:80:8"}],"id":6009,"name":"Block","src":"4236:97:8"}],"id":6010,"name":"FunctionDefinition","src":"4161:172:8"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6130,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6011,"name":"ElementaryTypeName","src":"4675:5:8"}],"id":6012,"name":"VariableDeclaration","src":"4675:17:8"},{"attributes":{"constant":false,"name":"offset","scope":6130,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6013,"name":"ElementaryTypeName","src":"4694:4:8"}],"id":6014,"name":"VariableDeclaration","src":"4694:11:8"},{"attributes":{"constant":false,"name":"rrtype","scope":6130,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6015,"name":"ElementaryTypeName","src":"4707:6:8"}],"id":6016,"name":"VariableDeclaration","src":"4707:13:8"}],"id":6017,"name":"ParameterList","src":"4674:47:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6130,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6018,"name":"ElementaryTypeName","src":"4745:4:8"}],"id":6019,"name":"VariableDeclaration","src":"4745:4:8"}],"id":6020,"name":"ParameterList","src":"4744:6:8"},{"children":[{"attributes":{"assignments":[6022]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":6129,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6021,"name":"ElementaryTypeName","src":"4761:5:8"}],"id":6022,"name":"VariableDeclaration","src":"4761:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6023,"name":"ElementaryTypeNameExpression","src":"4780:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6016,"type":"uint16","value":"rrtype"},"id":6024,"name":"Identifier","src":"4786:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6025,"name":"Literal","src":"4796:1:8"}],"id":6026,"name":"BinaryOperation","src":"4786:11:8"}],"id":6027,"name":"FunctionCall","src":"4780:18:8"}],"id":6028,"name":"VariableDeclarationStatement","src":"4761:37:8"},{"attributes":{"assignments":[6030]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":6129,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6029,"name":"ElementaryTypeName","src":"4808:5:8"}],"id":6030,"name":"VariableDeclaration","src":"4808:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6031,"name":"ElementaryTypeNameExpression","src":"4827:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6016,"type":"uint16","value":"rrtype"},"id":6032,"name":"Identifier","src":"4834:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":6033,"name":"Literal","src":"4843:4:8"}],"id":6034,"name":"BinaryOperation","src":"4834:13:8"}],"id":6035,"name":"TupleExpression","src":"4833:15:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6036,"name":"Literal","src":"4851:1:8"}],"id":6037,"name":"BinaryOperation","src":"4833:19:8"}],"id":6038,"name":"FunctionCall","src":"4827:26:8"}],"id":6039,"name":"VariableDeclarationStatement","src":"4808:45:8"},{"attributes":{"assignments":[6041]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":6129,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6040,"name":"ElementaryTypeName","src":"4863:5:8"}],"id":6041,"name":"VariableDeclaration","src":"4863:19:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6042,"name":"ElementaryTypeNameExpression","src":"4885:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6043,"name":"ElementaryTypeNameExpression","src":"4891:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6044,"name":"Literal","src":"4897:1:8"}],"id":6045,"name":"FunctionCall","src":"4891:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6046,"name":"ElementaryTypeNameExpression","src":"4904:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":6047,"name":"Literal","src":"4910:1:8"}],"id":6048,"name":"FunctionCall","src":"4904:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":6049,"name":"ElementaryTypeNameExpression","src":"4915:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6016,"type":"uint16","value":"rrtype"},"id":6050,"name":"Identifier","src":"4921:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":6051,"name":"Literal","src":"4930:3:8"}],"id":6052,"name":"BinaryOperation","src":"4921:12:8"}],"id":6053,"name":"FunctionCall","src":"4915:19:8"}],"id":6054,"name":"BinaryOperation","src":"4904:30:8"}],"id":6055,"name":"TupleExpression","src":"4903:32:8"}],"id":6056,"name":"BinaryOperation","src":"4891:44:8"}],"id":6057,"name":"FunctionCall","src":"4885:51:8"}],"id":6058,"name":"VariableDeclarationStatement","src":"4863:73:8"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[6060]},"children":[{"attributes":{"constant":false,"name":"off","scope":6126,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6059,"name":"ElementaryTypeName","src":"4951:4:8"}],"id":6060,"name":"VariableDeclaration","src":"4951:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6014,"type":"uint256","value":"offset"},"id":6061,"name":"Identifier","src":"4962:6:8"}],"id":6062,"name":"VariableDeclarationStatement","src":"4951:17:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6063,"name":"Identifier","src":"4970:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"bytes memory","value":"self"},"id":6064,"name":"Identifier","src":"4976:4:8"}],"id":6065,"name":"MemberAccess","src":"4976:11:8"}],"id":6066,"name":"BinaryOperation","src":"4970:17:8"},{"children":[{"attributes":{"assignments":[6068]},"children":[{"attributes":{"constant":false,"name":"window","scope":6125,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6067,"name":"ElementaryTypeName","src":"5004:5:8"}],"id":6068,"name":"VariableDeclaration","src":"5004:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"bytes memory","value":"self"},"id":6069,"name":"Identifier","src":"5019:4:8"}],"id":6070,"name":"MemberAccess","src":"5019:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6071,"name":"Identifier","src":"5034:3:8"}],"id":6072,"name":"FunctionCall","src":"5019:19:8"}],"id":6073,"name":"VariableDeclarationStatement","src":"5004:34:8"},{"attributes":{"assignments":[6075]},"children":[{"attributes":{"constant":false,"name":"len","scope":6125,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":6074,"name":"ElementaryTypeName","src":"5052:5:8"}],"id":6075,"name":"VariableDeclaration","src":"5052:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"bytes memory","value":"self"},"id":6076,"name":"Identifier","src":"5064:4:8"}],"id":6077,"name":"MemberAccess","src":"5064:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6078,"name":"Identifier","src":"5079:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6079,"name":"Literal","src":"5085:1:8"}],"id":6080,"name":"BinaryOperation","src":"5079:7:8"}],"id":6081,"name":"FunctionCall","src":"5064:23:8"}],"id":6082,"name":"VariableDeclarationStatement","src":"5052:35:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"uint8","value":"typeWindow"},"id":6083,"name":"Identifier","src":"5105:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"uint8","value":"window"},"id":6084,"name":"Identifier","src":"5118:6:8"}],"id":6085,"name":"BinaryOperation","src":"5105:19:8"},{"children":[{"attributes":{"functionReturnParameters":6020},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6086,"name":"Literal","src":"5213:5:8"}],"id":6087,"name":"Return","src":"5206:12:8"}],"id":6088,"name":"Block","src":"5126:107:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"uint8","value":"typeWindow"},"id":6089,"name":"Identifier","src":"5243:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6068,"type":"uint8","value":"window"},"id":6090,"name":"Identifier","src":"5257:6:8"}],"id":6091,"name":"BinaryOperation","src":"5243:20:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint8","value":"len"},"id":6092,"name":"Identifier","src":"5329:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6093,"name":"Literal","src":"5335:1:8"}],"id":6094,"name":"BinaryOperation","src":"5329:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint8","value":"windowByte"},"id":6095,"name":"Identifier","src":"5340:10:8"}],"id":6096,"name":"BinaryOperation","src":"5329:21:8"},{"children":[{"attributes":{"functionReturnParameters":6020},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6097,"name":"Literal","src":"5443:5:8"}],"id":6098,"name":"Return","src":"5436:12:8"}],"id":6099,"name":"Block","src":"5352:115:8"}],"id":6100,"name":"IfStatement","src":"5325:142:8"},{"attributes":{"functionReturnParameters":6020},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"bytes memory","value":"self"},"id":6101,"name":"Identifier","src":"5492:4:8"}],"id":6102,"name":"MemberAccess","src":"5492:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6103,"name":"Identifier","src":"5507:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"uint8","value":"windowByte"},"id":6104,"name":"Identifier","src":"5513:10:8"}],"id":6105,"name":"BinaryOperation","src":"5507:16:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6106,"name":"Literal","src":"5526:1:8"}],"id":6107,"name":"BinaryOperation","src":"5507:20:8"}],"id":6108,"name":"FunctionCall","src":"5492:36:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6041,"type":"uint8","value":"windowBitmask"},"id":6109,"name":"Identifier","src":"5531:13:8"}],"id":6110,"name":"BinaryOperation","src":"5492:52:8"}],"id":6111,"name":"TupleExpression","src":"5491:54:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6112,"name":"Literal","src":"5549:1:8"}],"id":6113,"name":"BinaryOperation","src":"5491:59:8"}],"id":6114,"name":"Return","src":"5484:66:8"}],"id":6115,"name":"Block","src":"5265:300:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6060,"type":"uint256","value":"off"},"id":6116,"name":"Identifier","src":"5630:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6075,"type":"uint8","value":"len"},"id":6117,"name":"Identifier","src":"5637:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":6118,"name":"Literal","src":"5643:1:8"}],"id":6119,"name":"BinaryOperation","src":"5637:7:8"}],"id":6120,"name":"Assignment","src":"5630:14:8"}],"id":6121,"name":"ExpressionStatement","src":"5630:14:8"}],"id":6122,"name":"Block","src":"5571:88:8"}],"id":6123,"name":"IfStatement","src":"5239:420:8"}],"id":6124,"name":"IfStatement","src":"5101:558:8"}],"id":6125,"name":"Block","src":"4990:679:8"}],"id":6126,"name":"ForStatement","src":"4946:723:8"},{"attributes":{"functionReturnParameters":6020},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":6127,"name":"Literal","src":"5686:5:8"}],"id":6128,"name":"Return","src":"5679:12:8"}],"id":6129,"name":"Block","src":"4751:947:8"}],"id":6130,"name":"FunctionDefinition","src":"4650:1048:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6285,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6131,"name":"ElementaryTypeName","src":"5726:5:8"}],"id":6132,"name":"VariableDeclaration","src":"5726:17:8"},{"attributes":{"constant":false,"name":"other","scope":6285,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6133,"name":"ElementaryTypeName","src":"5745:5:8"}],"id":6134,"name":"VariableDeclaration","src":"5745:18:8"}],"id":6135,"name":"ParameterList","src":"5725:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6285,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":6136,"name":"ElementaryTypeName","src":"5788:3:8"}],"id":6137,"name":"VariableDeclaration","src":"5788:3:8"}],"id":6138,"name":"ParameterList","src":"5787:5:8"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6596,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6139,"name":"Identifier","src":"5807:4:8"}],"id":6140,"name":"MemberAccess","src":"5807:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6141,"name":"Identifier","src":"5819:5:8"}],"id":6142,"name":"FunctionCall","src":"5807:18:8"},{"children":[{"attributes":{"functionReturnParameters":6138},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6143,"name":"Literal","src":"5848:1:8"}],"id":6144,"name":"Return","src":"5841:8:8"}],"id":6145,"name":"Block","src":"5827:33:8"}],"id":6146,"name":"IfStatement","src":"5803:57:8"},{"attributes":{"assignments":[6148],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6147,"name":"ElementaryTypeName","src":"5870:4:8"}],"id":6148,"name":"VariableDeclaration","src":"5870:8:8"}],"id":6149,"name":"VariableDeclarationStatement","src":"5870:8:8"},{"attributes":{"assignments":[6151],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6150,"name":"ElementaryTypeName","src":"5888:4:8"}],"id":6151,"name":"VariableDeclaration","src":"5888:13:8"}],"id":6152,"name":"VariableDeclarationStatement","src":"5888:13:8"},{"attributes":{"assignments":[6154],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6153,"name":"ElementaryTypeName","src":"5911:4:8"}],"id":6154,"name":"VariableDeclaration","src":"5911:12:8"}],"id":6155,"name":"VariableDeclarationStatement","src":"5911:12:8"},{"attributes":{"assignments":[6157],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6156,"name":"ElementaryTypeName","src":"5933:4:8"}],"id":6157,"name":"VariableDeclaration","src":"5933:17:8"}],"id":6158,"name":"VariableDeclarationStatement","src":"5933:17:8"},{"attributes":{"assignments":[6160]},"children":[{"attributes":{"constant":false,"name":"counts","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6159,"name":"ElementaryTypeName","src":"5960:4:8"}],"id":6160,"name":"VariableDeclaration","src":"5960:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":5811,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":6161,"name":"Identifier","src":"5974:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6162,"name":"Identifier","src":"5985:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6163,"name":"Literal","src":"5991:1:8"}],"id":6164,"name":"FunctionCall","src":"5974:19:8"}],"id":6165,"name":"VariableDeclarationStatement","src":"5960:33:8"},{"attributes":{"assignments":[6167]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":6284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6166,"name":"ElementaryTypeName","src":"6003:4:8"}],"id":6167,"name":"VariableDeclaration","src":"6003:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":5811,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":6168,"name":"Identifier","src":"6022:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6169,"name":"Identifier","src":"6033:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6170,"name":"Literal","src":"6040:1:8"}],"id":6171,"name":"FunctionCall","src":"6022:20:8"}],"id":6172,"name":"VariableDeclarationStatement","src":"6003:39:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6173,"name":"Identifier","src":"6153:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"uint256","value":"othercounts"},"id":6174,"name":"Identifier","src":"6162:11:8"}],"id":6175,"name":"BinaryOperation","src":"6153:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"uint256","value":"prevoff"},"id":6176,"name":"Identifier","src":"6189:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6177,"name":"Identifier","src":"6199:3:8"}],"id":6178,"name":"Assignment","src":"6189:13:8"}],"id":6179,"name":"ExpressionStatement","src":"6189:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6180,"name":"Identifier","src":"6216:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6304,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6181,"name":"Identifier","src":"6222:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6182,"name":"Identifier","src":"6231:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6183,"name":"Identifier","src":"6237:3:8"}],"id":6184,"name":"FunctionCall","src":"6222:19:8"}],"id":6185,"name":"Assignment","src":"6216:25:8"}],"id":6186,"name":"ExpressionStatement","src":"6216:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6187,"name":"Identifier","src":"6255:6:8"}],"id":6188,"name":"UnaryOperation","src":"6255:8:8"}],"id":6189,"name":"ExpressionStatement","src":"6255:8:8"}],"id":6190,"name":"Block","src":"6175:99:8"}],"id":6191,"name":"WhileStatement","src":"6146:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"uint256","value":"othercounts"},"id":6192,"name":"Identifier","src":"6291:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6193,"name":"Identifier","src":"6305:6:8"}],"id":6194,"name":"BinaryOperation","src":"6291:20:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"uint256","value":"otherprevoff"},"id":6195,"name":"Identifier","src":"6327:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6196,"name":"Identifier","src":"6342:8:8"}],"id":6197,"name":"Assignment","src":"6327:23:8"}],"id":6198,"name":"ExpressionStatement","src":"6327:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6199,"name":"Identifier","src":"6364:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6304,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6200,"name":"Identifier","src":"6375:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6201,"name":"Identifier","src":"6384:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6202,"name":"Identifier","src":"6391:8:8"}],"id":6203,"name":"FunctionCall","src":"6375:25:8"}],"id":6204,"name":"Assignment","src":"6364:36:8"}],"id":6205,"name":"ExpressionStatement","src":"6364:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"uint256","value":"othercounts"},"id":6206,"name":"Identifier","src":"6414:11:8"}],"id":6207,"name":"UnaryOperation","src":"6414:13:8"}],"id":6208,"name":"ExpressionStatement","src":"6414:13:8"}],"id":6209,"name":"Block","src":"6313:125:8"}],"id":6210,"name":"WhileStatement","src":"6284:154:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6211,"name":"Identifier","src":"6513:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6212,"name":"Literal","src":"6522:1:8"}],"id":6213,"name":"BinaryOperation","src":"6513:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6542,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6214,"name":"Identifier","src":"6528:4:8"}],"id":6215,"name":"MemberAccess","src":"6528:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6216,"name":"Identifier","src":"6540:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6217,"name":"Identifier","src":"6545:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6218,"name":"Identifier","src":"6552:8:8"}],"id":6219,"name":"FunctionCall","src":"6528:33:8"}],"id":6220,"name":"UnaryOperation","src":"6527:34:8"}],"id":6221,"name":"BinaryOperation","src":"6513:48:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"uint256","value":"prevoff"},"id":6222,"name":"Identifier","src":"6577:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6223,"name":"Identifier","src":"6587:3:8"}],"id":6224,"name":"Assignment","src":"6577:13:8"}],"id":6225,"name":"ExpressionStatement","src":"6577:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6226,"name":"Identifier","src":"6604:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6304,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6227,"name":"Identifier","src":"6610:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6228,"name":"Identifier","src":"6619:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6229,"name":"Identifier","src":"6625:3:8"}],"id":6230,"name":"FunctionCall","src":"6610:19:8"}],"id":6231,"name":"Assignment","src":"6604:25:8"}],"id":6232,"name":"ExpressionStatement","src":"6604:25:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"uint256","value":"otherprevoff"},"id":6233,"name":"Identifier","src":"6643:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6234,"name":"Identifier","src":"6658:8:8"}],"id":6235,"name":"Assignment","src":"6643:23:8"}],"id":6236,"name":"ExpressionStatement","src":"6643:23:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6237,"name":"Identifier","src":"6680:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6304,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":6238,"name":"Identifier","src":"6691:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6239,"name":"Identifier","src":"6700:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6240,"name":"Identifier","src":"6707:8:8"}],"id":6241,"name":"FunctionCall","src":"6691:25:8"}],"id":6242,"name":"Assignment","src":"6680:36:8"}],"id":6243,"name":"ExpressionStatement","src":"6680:36:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"counts"},"id":6244,"name":"Identifier","src":"6730:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6245,"name":"Literal","src":"6740:1:8"}],"id":6246,"name":"Assignment","src":"6730:11:8"}],"id":6247,"name":"ExpressionStatement","src":"6730:11:8"}],"id":6248,"name":"Block","src":"6563:189:8"}],"id":6249,"name":"WhileStatement","src":"6506:246:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6148,"type":"uint256","value":"off"},"id":6250,"name":"Identifier","src":"6766:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6251,"name":"Literal","src":"6773:1:8"}],"id":6252,"name":"BinaryOperation","src":"6766:8:8"},{"children":[{"attributes":{"functionReturnParameters":6138},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6253,"name":"Literal","src":"6798:1:8"}],"id":6254,"name":"UnaryOperation","src":"6797:2:8"}],"id":6255,"name":"Return","src":"6790:9:8"}],"id":6256,"name":"Block","src":"6776:34:8"}],"id":6257,"name":"IfStatement","src":"6762:48:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6151,"type":"uint256","value":"otheroff"},"id":6258,"name":"Identifier","src":"6822:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6259,"name":"Literal","src":"6834:1:8"}],"id":6260,"name":"BinaryOperation","src":"6822:13:8"},{"children":[{"attributes":{"functionReturnParameters":6138},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6261,"name":"Literal","src":"6858:1:8"}],"id":6262,"name":"Return","src":"6851:8:8"}],"id":6263,"name":"Block","src":"6837:33:8"}],"id":6264,"name":"IfStatement","src":"6819:51:8"},{"attributes":{"functionReturnParameters":6138},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":6482,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6265,"name":"Identifier","src":"6887:4:8"}],"id":6266,"name":"MemberAccess","src":"6887:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"uint256","value":"prevoff"},"id":6267,"name":"Identifier","src":"6900:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6268,"name":"Literal","src":"6910:1:8"}],"id":6269,"name":"BinaryOperation","src":"6900:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6132,"type":"bytes memory","value":"self"},"id":6270,"name":"Identifier","src":"6913:4:8"}],"id":6271,"name":"MemberAccess","src":"6913:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"uint256","value":"prevoff"},"id":6272,"name":"Identifier","src":"6928:7:8"}],"id":6273,"name":"FunctionCall","src":"6913:23:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6274,"name":"Identifier","src":"6938:5:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"uint256","value":"otherprevoff"},"id":6275,"name":"Identifier","src":"6945:12:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6276,"name":"Literal","src":"6960:1:8"}],"id":6277,"name":"BinaryOperation","src":"6945:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6134,"type":"bytes memory","value":"other"},"id":6278,"name":"Identifier","src":"6963:5:8"}],"id":6279,"name":"MemberAccess","src":"6963:15:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"uint256","value":"otherprevoff"},"id":6280,"name":"Identifier","src":"6979:12:8"}],"id":6281,"name":"FunctionCall","src":"6963:29:8"}],"id":6282,"name":"FunctionCall","src":"6887:106:8"}],"id":6283,"name":"Return","src":"6880:113:8"}],"id":6284,"name":"Block","src":"5793:1207:8"}],"id":6285,"name":"FunctionDefinition","src":"5704:1296:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":6305,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":6304,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6286,"name":"ElementaryTypeName","src":"7024:5:8"}],"id":6287,"name":"VariableDeclaration","src":"7024:17:8"},{"attributes":{"constant":false,"name":"off","scope":6304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6288,"name":"ElementaryTypeName","src":"7043:4:8"}],"id":6289,"name":"VariableDeclaration","src":"7043:8:8"}],"id":6290,"name":"ParameterList","src":"7023:29:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":6304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6291,"name":"ElementaryTypeName","src":"7075:4:8"}],"id":6292,"name":"VariableDeclaration","src":"7075:4:8"}],"id":6293,"name":"ParameterList","src":"7074:6:8"},{"children":[{"attributes":{"functionReturnParameters":6293},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6289,"type":"uint256","value":"off"},"id":6294,"name":"Identifier","src":"7098:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6295,"name":"Literal","src":"7104:1:8"}],"id":6296,"name":"BinaryOperation","src":"7098:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":6612,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6287,"type":"bytes memory","value":"body"},"id":6297,"name":"Identifier","src":"7108:4:8"}],"id":6298,"name":"MemberAccess","src":"7108:14:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6289,"type":"uint256","value":"off"},"id":6299,"name":"Identifier","src":"7123:3:8"}],"id":6300,"name":"FunctionCall","src":"7108:19:8"}],"id":6301,"name":"BinaryOperation","src":"7098:29:8"}],"id":6302,"name":"Return","src":"7091:36:8"}],"id":6303,"name":"Block","src":"7081:53:8"}],"id":6304,"name":"FunctionDefinition","src":"7006:128:8"}],"id":6305,"name":"ContractDefinition","src":"150:6986:8"}],"id":6306,"name":"SourceUnit","src":"0:7137:8"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[5687]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5620,"name":"PragmaDirective","src":"0:23:9"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5687],"name":"ResolverBase","scope":5688},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5687,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5621,"name":"ElementaryTypeName","src":"53:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5622,"name":"Literal","src":"97:10:9"}],"id":5623,"name":"VariableDeclaration","src":"53:54:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5687,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5635,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5624,"name":"ElementaryTypeName","src":"141:6:9"}],"id":5625,"name":"VariableDeclaration","src":"141:18:9"}],"id":5626,"name":"ParameterList","src":"140:20:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":5635,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5627,"name":"ElementaryTypeName","src":"181:4:9"}],"id":5628,"name":"VariableDeclaration","src":"181:4:9"}],"id":5629,"name":"ParameterList","src":"180:6:9"},{"children":[{"attributes":{"functionReturnParameters":5629},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5625,"type":"bytes4","value":"interfaceID"},"id":5630,"name":"Identifier","src":"204:11:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5623,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5631,"name":"Identifier","src":"219:17:9"}],"id":5632,"name":"BinaryOperation","src":"204:32:9"}],"id":5633,"name":"Return","src":"197:39:9"}],"id":5634,"name":"Block","src":"187:56:9"}],"id":5635,"name":"FunctionDefinition","src":"114:129:9"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":5687,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5642,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5636,"name":"ElementaryTypeName","src":"271:7:9"}],"id":5637,"name":"VariableDeclaration","src":"271:12:9"}],"id":5638,"name":"ParameterList","src":"270:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":5642,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5639,"name":"ElementaryTypeName","src":"307:4:9"}],"id":5640,"name":"VariableDeclaration","src":"307:4:9"}],"id":5641,"name":"ParameterList","src":"306:6:9"}],"id":5642,"name":"FunctionDefinition","src":"249:64:9"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5654,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5643,"name":"ElementaryTypeName","src":"339:7:9"}],"id":5644,"name":"VariableDeclaration","src":"339:12:9"}],"id":5645,"name":"ParameterList","src":"338:14:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":5646,"name":"Identifier","src":"363:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5642,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":5647,"name":"Identifier","src":"371:12:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5644,"type":"bytes32","value":"node"},"id":5648,"name":"Identifier","src":"384:4:9"}],"id":5649,"name":"FunctionCall","src":"371:18:9"}],"id":5650,"name":"FunctionCall","src":"363:27:9"}],"id":5651,"name":"ExpressionStatement","src":"363:27:9"},{"id":5652,"name":"PlaceholderStatement","src":"400:1:9"}],"id":5653,"name":"Block","src":"353:55:9"}],"id":5654,"name":"ModifierDefinition","src":"319:89:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":5687,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":5670,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5655,"name":"ElementaryTypeName","src":"438:5:9"}],"id":5656,"name":"VariableDeclaration","src":"438:14:9"}],"id":5657,"name":"ParameterList","src":"437:16:9"},{"children":[{"attributes":{"constant":false,"name":"a","scope":5670,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5658,"name":"ElementaryTypeName","src":"476:15:9"}],"id":5659,"name":"VariableDeclaration","src":"476:17:9"}],"id":5660,"name":"ParameterList","src":"475:19:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":5661,"name":"Identifier","src":"505:7:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5656,"type":"bytes memory","value":"b"},"id":5662,"name":"Identifier","src":"513:1:9"}],"id":5663,"name":"MemberAccess","src":"513:8:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5664,"name":"Literal","src":"525:2:9"}],"id":5665,"name":"BinaryOperation","src":"513:14:9"}],"id":5666,"name":"FunctionCall","src":"505:23:9"}],"id":5667,"name":"ExpressionStatement","src":"505:23:9"},{"attributes":{"externalReferences":[{"a":{"declaration":5659,"isOffset":false,"isSlot":false,"src":"561:1:9","valueSize":1}},{"b":{"declaration":5656,"isOffset":false,"isSlot":false,"src":"580:1:9","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":5668,"name":"InlineAssembly","src":"538:74:9"}],"id":5669,"name":"Block","src":"495:123:9"}],"id":5670,"name":"FunctionDefinition","src":"414:204:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":5687,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":5686,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5671,"name":"ElementaryTypeName","src":"648:7:9"}],"id":5672,"name":"VariableDeclaration","src":"648:9:9"}],"id":5673,"name":"ParameterList","src":"647:11:9"},{"children":[{"attributes":{"constant":false,"name":"b","scope":5686,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5674,"name":"ElementaryTypeName","src":"681:5:9"}],"id":5675,"name":"VariableDeclaration","src":"681:14:9"}],"id":5676,"name":"ParameterList","src":"680:16:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5675,"type":"bytes memory","value":"b"},"id":5677,"name":"Identifier","src":"707:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5678,"name":"ElementaryTypeName","src":"715:5:9"}],"id":5679,"name":"NewExpression","src":"711:9:9"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":5680,"name":"Literal","src":"721:2:9"}],"id":5681,"name":"FunctionCall","src":"711:13:9"}],"id":5682,"name":"Assignment","src":"707:17:9"}],"id":5683,"name":"ExpressionStatement","src":"707:17:9"},{"attributes":{"externalReferences":[{"b":{"declaration":5675,"isOffset":false,"isSlot":false,"src":"768:1:9","valueSize":1}},{"a":{"declaration":5672,"isOffset":false,"isSlot":false,"src":"780:1:9","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":5684,"name":"InlineAssembly","src":"734:73:9"}],"id":5685,"name":"Block","src":"697:116:9"}],"id":5686,"name":"FunctionDefinition","src":"624:189:9"}],"id":5687,"name":"ContractDefinition","src":"25:790:9"}],"id":5688,"name":"SourceUnit","src":"0:816:9"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[4467]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4333,"name":"PragmaDirective","src":"0:23:10"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4468,"symbolAliases":[null],"unitAlias":""},"id":4334,"name":"ImportDirective","src":"25:29:10"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4467,5687],"name":"ABIResolver","scope":4468},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":4335,"name":"UserDefinedTypeName","src":"80:12:10"}],"id":4336,"name":"InheritanceSpecifier","src":"80:12:10"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":4467,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4337,"name":"ElementaryTypeName","src":"99:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":4338,"name":"Literal","src":"142:10:10"}],"id":4339,"name":"VariableDeclaration","src":"99:53:10"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4345,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4340,"name":"ElementaryTypeName","src":"176:7:10"}],"id":4341,"name":"VariableDeclaration","src":"176:20:10"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":4345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4342,"name":"ElementaryTypeName","src":"198:7:10"}],"id":4343,"name":"VariableDeclaration","src":"198:27:10"}],"id":4344,"name":"ParameterList","src":"175:51:10"}],"id":4345,"name":"EventDefinition","src":"159:68:10"},{"attributes":{"constant":false,"name":"abis","scope":4467,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4346,"name":"ElementaryTypeName","src":"241:7:10"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4347,"name":"ElementaryTypeName","src":"258:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":4348,"name":"ElementaryTypeName","src":"267:5:10"}],"id":4349,"name":"Mapping","src":"250:23:10"}],"id":4350,"name":"Mapping","src":"233:41:10"}],"id":4351,"name":"VariableDeclaration","src":"233:46:10"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":4467,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4389,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4352,"name":"ElementaryTypeName","src":"598:7:10"}],"id":4353,"name":"VariableDeclaration","src":"598:12:10"},{"attributes":{"constant":false,"name":"contentType","scope":4389,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4354,"name":"ElementaryTypeName","src":"612:7:10"}],"id":4355,"name":"VariableDeclaration","src":"612:19:10"},{"attributes":{"constant":false,"name":"data","scope":4389,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4356,"name":"ElementaryTypeName","src":"633:5:10"}],"id":4357,"name":"VariableDeclaration","src":"633:19:10"}],"id":4358,"name":"ParameterList","src":"597:56:10"},{"attributes":{"parameters":[null]},"children":[],"id":4362,"name":"ParameterList","src":"680:0:10"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4359,"name":"Identifier","src":"663:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"bytes32","value":"node"},"id":4360,"name":"Identifier","src":"674:4:10"}],"id":4361,"name":"ModifierInvocation","src":"663:16:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7044,"type":"function (bool) pure","value":"require"},"id":4363,"name":"Identifier","src":"735:7:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"contentType"},"id":4364,"name":"Identifier","src":"745:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4365,"name":"Literal","src":"759:1:10"}],"id":4366,"name":"BinaryOperation","src":"745:15:10"}],"id":4367,"name":"TupleExpression","src":"744:17:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"contentType"},"id":4368,"name":"Identifier","src":"764:11:10"}],"id":4369,"name":"BinaryOperation","src":"744:31:10"}],"id":4370,"name":"TupleExpression","src":"743:33:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4371,"name":"Literal","src":"780:1:10"}],"id":4372,"name":"BinaryOperation","src":"743:38:10"}],"id":4373,"name":"FunctionCall","src":"735:47:10"}],"id":4374,"name":"ExpressionStatement","src":"735:47:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4351,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4375,"name":"Identifier","src":"793:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"bytes32","value":"node"},"id":4376,"name":"Identifier","src":"798:4:10"}],"id":4378,"name":"IndexAccess","src":"793:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"contentType"},"id":4377,"name":"Identifier","src":"804:11:10"}],"id":4379,"name":"IndexAccess","src":"793:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4357,"type":"bytes calldata","value":"data"},"id":4380,"name":"Identifier","src":"819:4:10"}],"id":4381,"name":"Assignment","src":"793:30:10"}],"id":4382,"name":"ExpressionStatement","src":"793:30:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":4383,"name":"Identifier","src":"838:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"bytes32","value":"node"},"id":4384,"name":"Identifier","src":"849:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4355,"type":"uint256","value":"contentType"},"id":4385,"name":"Identifier","src":"855:11:10"}],"id":4386,"name":"FunctionCall","src":"838:29:10"}],"id":4387,"name":"EmitStatement","src":"833:34:10"}],"id":4388,"name":"Block","src":"680:194:10"}],"id":4389,"name":"FunctionDefinition","src":"582:292:10"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":4467,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4449,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4390,"name":"ElementaryTypeName","src":"1208:7:10"}],"id":4391,"name":"VariableDeclaration","src":"1208:12:10"},{"attributes":{"constant":false,"name":"contentTypes","scope":4449,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4392,"name":"ElementaryTypeName","src":"1222:7:10"}],"id":4393,"name":"VariableDeclaration","src":"1222:20:10"}],"id":4394,"name":"ParameterList","src":"1207:36:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":4449,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4395,"name":"ElementaryTypeName","src":"1267:7:10"}],"id":4396,"name":"VariableDeclaration","src":"1267:7:10"},{"attributes":{"constant":false,"name":"","scope":4449,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4397,"name":"ElementaryTypeName","src":"1276:5:10"}],"id":4398,"name":"VariableDeclaration","src":"1276:12:10"}],"id":4399,"name":"ParameterList","src":"1266:23:10"},{"children":[{"attributes":{"assignments":[4403]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":4448,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4400,"name":"ElementaryTypeName","src":"1308:7:10"},{"attributes":{"name":"bytes","type":"bytes"},"id":4401,"name":"ElementaryTypeName","src":"1317:5:10"}],"id":4402,"name":"Mapping","src":"1300:23:10"}],"id":4403,"name":"VariableDeclaration","src":"1300:38:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4351,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4404,"name":"Identifier","src":"1341:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4391,"type":"bytes32","value":"node"},"id":4405,"name":"Identifier","src":"1346:4:10"}],"id":4406,"name":"IndexAccess","src":"1341:10:10"}],"id":4407,"name":"VariableDeclarationStatement","src":"1300:51:10"},{"children":[{"attributes":{"assignments":[4409]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":4441,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4408,"name":"ElementaryTypeName","src":"1367:7:10"}],"id":4409,"name":"VariableDeclaration","src":"1367:19:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4410,"name":"Literal","src":"1389:1:10"}],"id":4411,"name":"VariableDeclarationStatement","src":"1367:23:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4412,"name":"Identifier","src":"1392:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4393,"type":"uint256","value":"contentTypes"},"id":4413,"name":"Identifier","src":"1407:12:10"}],"id":4414,"name":"BinaryOperation","src":"1392:27:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4415,"name":"Identifier","src":"1421:11:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4416,"name":"Literal","src":"1437:1:10"}],"id":4417,"name":"Assignment","src":"1421:17:10"}],"id":4418,"name":"ExpressionStatement","src":"1421:17:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4419,"name":"Identifier","src":"1459:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4393,"type":"uint256","value":"contentTypes"},"id":4420,"name":"Identifier","src":"1473:12:10"}],"id":4421,"name":"BinaryOperation","src":"1459:26:10"}],"id":4422,"name":"TupleExpression","src":"1458:28:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4423,"name":"Literal","src":"1490:1:10"}],"id":4424,"name":"BinaryOperation","src":"1458:33:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4403,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4425,"name":"Identifier","src":"1495:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4426,"name":"Identifier","src":"1502:11:10"}],"id":4427,"name":"IndexAccess","src":"1495:19:10"}],"id":4428,"name":"MemberAccess","src":"1495:26:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4429,"name":"Literal","src":"1524:1:10"}],"id":4430,"name":"BinaryOperation","src":"1495:30:10"}],"id":4431,"name":"BinaryOperation","src":"1458:67:10"},{"children":[{"attributes":{"functionReturnParameters":4399},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4432,"name":"Identifier","src":"1553:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4403,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4433,"name":"Identifier","src":"1566:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4409,"type":"uint256","value":"contentType"},"id":4434,"name":"Identifier","src":"1573:11:10"}],"id":4435,"name":"IndexAccess","src":"1566:19:10"}],"id":4436,"name":"TupleExpression","src":"1552:34:10"}],"id":4437,"name":"Return","src":"1545:41:10"}],"id":4438,"name":"Block","src":"1527:74:10"}],"id":4439,"name":"IfStatement","src":"1454:147:10"}],"id":4440,"name":"Block","src":"1440:171:10"}],"id":4441,"name":"ForStatement","src":"1362:249:10"},{"attributes":{"functionReturnParameters":4399},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4442,"name":"Literal","src":"1629:1:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4443,"name":"ElementaryTypeNameExpression","src":"1632:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4444,"name":"Literal","src":"1638:2:10"}],"id":4445,"name":"FunctionCall","src":"1632:9:10"}],"id":4446,"name":"TupleExpression","src":"1628:14:10"}],"id":4447,"name":"Return","src":"1621:21:10"}],"id":4448,"name":"Block","src":"1290:359:10"}],"id":4449,"name":"FunctionDefinition","src":"1195:454:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4467,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4466,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4450,"name":"ElementaryTypeName","src":"1682:6:10"}],"id":4451,"name":"VariableDeclaration","src":"1682:18:10"}],"id":4452,"name":"ParameterList","src":"1681:20:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":4466,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4453,"name":"ElementaryTypeName","src":"1722:4:10"}],"id":4454,"name":"VariableDeclaration","src":"1722:4:10"}],"id":4455,"name":"ParameterList","src":"1721:6:10"},{"children":[{"attributes":{"functionReturnParameters":4455},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4451,"type":"bytes4","value":"interfaceID"},"id":4456,"name":"Identifier","src":"1745:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":4457,"name":"Identifier","src":"1760:16:10"}],"id":4458,"name":"BinaryOperation","src":"1745:31:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7078,"type":"contract super ABIResolver","value":"super"},"id":4459,"name":"Identifier","src":"1780:5:10"}],"id":4460,"name":"MemberAccess","src":"1780:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4451,"type":"bytes4","value":"interfaceID"},"id":4461,"name":"Identifier","src":"1804:11:10"}],"id":4462,"name":"FunctionCall","src":"1780:36:10"}],"id":4463,"name":"BinaryOperation","src":"1745:71:10"}],"id":4464,"name":"Return","src":"1738:78:10"}],"id":4465,"name":"Block","src":"1728:95:10"}],"id":4466,"name":"FunctionDefinition","src":"1655:168:10"}],"id":4467,"name":"ContractDefinition","src":"56:1769:10"}],"id":4468,"name":"SourceUnit","src":"0:1826:10"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[4626]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4469,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4627,"symbolAliases":[null],"unitAlias":""},"id":4470,"name":"ImportDirective","src":"25:29:11"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4626,5687],"name":"AddrResolver","scope":4627},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":4471,"name":"UserDefinedTypeName","src":"81:12:11"}],"id":4472,"name":"InheritanceSpecifier","src":"81:12:11"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":4626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4473,"name":"ElementaryTypeName","src":"100:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":4474,"name":"Literal","src":"144:10:11"}],"id":4475,"name":"VariableDeclaration","src":"100:54:11"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":4626,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4476,"name":"ElementaryTypeName","src":"160:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":4477,"name":"Literal","src":"207:10:11"}],"id":4478,"name":"VariableDeclaration","src":"160:57:11"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":4626,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4479,"name":"ElementaryTypeName","src":"223:4:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":4480,"name":"Literal","src":"261:2:11"}],"id":4481,"name":"VariableDeclaration","src":"223:40:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4487,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4482,"name":"ElementaryTypeName","src":"288:7:11"}],"id":4483,"name":"VariableDeclaration","src":"288:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":4487,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4484,"name":"ElementaryTypeName","src":"310:7:11"}],"id":4485,"name":"VariableDeclaration","src":"310:9:11"}],"id":4486,"name":"ParameterList","src":"287:33:11"}],"id":4487,"name":"EventDefinition","src":"270:51:11"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4495,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4488,"name":"ElementaryTypeName","src":"347:7:11"}],"id":4489,"name":"VariableDeclaration","src":"347:20:11"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":4495,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4490,"name":"ElementaryTypeName","src":"369:4:11"}],"id":4491,"name":"VariableDeclaration","src":"369:13:11"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":4495,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4492,"name":"ElementaryTypeName","src":"384:5:11"}],"id":4493,"name":"VariableDeclaration","src":"384:16:11"}],"id":4494,"name":"ParameterList","src":"346:55:11"}],"id":4495,"name":"EventDefinition","src":"326:76:11"},{"attributes":{"constant":false,"name":"_addresses","scope":4626,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4496,"name":"ElementaryTypeName","src":"416:7:11"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4497,"name":"ElementaryTypeName","src":"433:4:11"},{"attributes":{"name":"bytes","type":"bytes"},"id":4498,"name":"ElementaryTypeName","src":"439:5:11"}],"id":4499,"name":"Mapping","src":"425:20:11"}],"id":4500,"name":"Mapping","src":"408:38:11"}],"id":4501,"name":"VariableDeclaration","src":"408:49:11"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":4626,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4520,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4502,"name":"ElementaryTypeName","src":"698:7:11"}],"id":4503,"name":"VariableDeclaration","src":"698:12:11"},{"attributes":{"constant":false,"name":"a","scope":4520,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4504,"name":"ElementaryTypeName","src":"712:7:11"}],"id":4505,"name":"VariableDeclaration","src":"712:9:11"}],"id":4506,"name":"ParameterList","src":"697:25:11"},{"attributes":{"parameters":[null]},"children":[],"id":4510,"name":"ParameterList","src":"749:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4507,"name":"Identifier","src":"732:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4503,"type":"bytes32","value":"node"},"id":4508,"name":"Identifier","src":"743:4:11"}],"id":4509,"name":"ModifierInvocation","src":"732:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4588,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":4511,"name":"Identifier","src":"759:15:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4503,"type":"bytes32","value":"node"},"id":4512,"name":"Identifier","src":"775:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4513,"name":"Identifier","src":"781:13:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5686,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":4514,"name":"Identifier","src":"796:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4505,"type":"address","value":"a"},"id":4515,"name":"Identifier","src":"811:1:11"}],"id":4516,"name":"FunctionCall","src":"796:17:11"}],"id":4517,"name":"FunctionCall","src":"759:55:11"}],"id":4518,"name":"ExpressionStatement","src":"759:55:11"}],"id":4519,"name":"Block","src":"749:72:11"}],"id":4520,"name":"FunctionDefinition","src":"681:140:11"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":4626,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4549,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4521,"name":"ElementaryTypeName","src":"994:7:11"}],"id":4522,"name":"VariableDeclaration","src":"994:12:11"}],"id":4523,"name":"ParameterList","src":"993:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":4549,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4524,"name":"ElementaryTypeName","src":"1029:15:11"}],"id":4525,"name":"VariableDeclaration","src":"1029:15:11"}],"id":4526,"name":"ParameterList","src":"1028:17:11"},{"children":[{"attributes":{"assignments":[4528]},"children":[{"attributes":{"constant":false,"name":"a","scope":4548,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4527,"name":"ElementaryTypeName","src":"1056:5:11"}],"id":4528,"name":"VariableDeclaration","src":"1056:14:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[4549,4604],"referencedDeclaration":4604,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":4529,"name":"Identifier","src":"1073:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4522,"type":"bytes32","value":"node"},"id":4530,"name":"Identifier","src":"1078:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4531,"name":"Identifier","src":"1084:13:11"}],"id":4532,"name":"FunctionCall","src":"1073:25:11"}],"id":4533,"name":"VariableDeclarationStatement","src":"1056:42:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4528,"type":"bytes memory","value":"a"},"id":4534,"name":"Identifier","src":"1111:1:11"}],"id":4535,"name":"MemberAccess","src":"1111:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4536,"name":"Literal","src":"1123:1:11"}],"id":4537,"name":"BinaryOperation","src":"1111:13:11"},{"children":[{"attributes":{"functionReturnParameters":4526},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4538,"name":"ElementaryTypeNameExpression","src":"1147:7:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4539,"name":"Literal","src":"1155:1:11"}],"id":4540,"name":"FunctionCall","src":"1147:10:11"}],"id":4541,"name":"Return","src":"1140:17:11"}],"id":4542,"name":"Block","src":"1126:42:11"}],"id":4543,"name":"IfStatement","src":"1108:60:11"},{"attributes":{"functionReturnParameters":4526},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5670,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":4544,"name":"Identifier","src":"1184:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4528,"type":"bytes memory","value":"a"},"id":4545,"name":"Identifier","src":"1199:1:11"}],"id":4546,"name":"FunctionCall","src":"1184:17:11"}],"id":4547,"name":"Return","src":"1177:24:11"}],"id":4548,"name":"Block","src":"1046:162:11"}],"id":4549,"name":"FunctionDefinition","src":"980:228:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":4626,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4588,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4550,"name":"ElementaryTypeName","src":"1239:7:11"}],"id":4551,"name":"VariableDeclaration","src":"1239:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":4588,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4552,"name":"ElementaryTypeName","src":"1253:4:11"}],"id":4553,"name":"VariableDeclaration","src":"1253:13:11"},{"attributes":{"constant":false,"name":"a","scope":4588,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4554,"name":"ElementaryTypeName","src":"1268:5:11"}],"id":4555,"name":"VariableDeclaration","src":"1268:14:11"}],"id":4556,"name":"ParameterList","src":"1238:45:11"},{"attributes":{"parameters":[null]},"children":[],"id":4560,"name":"ParameterList","src":"1308:0:11"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4557,"name":"Identifier","src":"1291:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"bytes32","value":"node"},"id":4558,"name":"Identifier","src":"1302:4:11"}],"id":4559,"name":"ModifierInvocation","src":"1291:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4495,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":4561,"name":"Identifier","src":"1323:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"bytes32","value":"node"},"id":4562,"name":"Identifier","src":"1338:4:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"uint256","value":"coinType"},"id":4563,"name":"Identifier","src":"1344:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"bytes memory","value":"a"},"id":4564,"name":"Identifier","src":"1354:1:11"}],"id":4565,"name":"FunctionCall","src":"1323:33:11"}],"id":4566,"name":"EmitStatement","src":"1318:38:11"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"uint256","value":"coinType"},"id":4567,"name":"Identifier","src":"1369:8:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4481,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4568,"name":"Identifier","src":"1381:13:11"}],"id":4569,"name":"BinaryOperation","src":"1369:25:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4487,"type":"function (bytes32,address)","value":"AddrChanged"},"id":4570,"name":"Identifier","src":"1415:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"bytes32","value":"node"},"id":4571,"name":"Identifier","src":"1427:4:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5670,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":4572,"name":"Identifier","src":"1433:14:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"bytes memory","value":"a"},"id":4573,"name":"Identifier","src":"1448:1:11"}],"id":4574,"name":"FunctionCall","src":"1433:17:11"}],"id":4575,"name":"FunctionCall","src":"1415:36:11"}],"id":4576,"name":"EmitStatement","src":"1410:41:11"}],"id":4577,"name":"Block","src":"1396:66:11"}],"id":4578,"name":"IfStatement","src":"1366:96:11"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4501,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":4579,"name":"Identifier","src":"1471:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"bytes32","value":"node"},"id":4580,"name":"Identifier","src":"1482:4:11"}],"id":4582,"name":"IndexAccess","src":"1471:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"uint256","value":"coinType"},"id":4581,"name":"Identifier","src":"1488:8:11"}],"id":4583,"name":"IndexAccess","src":"1471:26:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"bytes memory","value":"a"},"id":4584,"name":"Identifier","src":"1500:1:11"}],"id":4585,"name":"Assignment","src":"1471:30:11"}],"id":4586,"name":"ExpressionStatement","src":"1471:30:11"}],"id":4587,"name":"Block","src":"1308:200:11"}],"id":4588,"name":"FunctionDefinition","src":"1214:294:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":4626,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4604,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4589,"name":"ElementaryTypeName","src":"1528:7:11"}],"id":4590,"name":"VariableDeclaration","src":"1528:12:11"},{"attributes":{"constant":false,"name":"coinType","scope":4604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4591,"name":"ElementaryTypeName","src":"1542:4:11"}],"id":4592,"name":"VariableDeclaration","src":"1542:13:11"}],"id":4593,"name":"ParameterList","src":"1527:29:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":4604,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4594,"name":"ElementaryTypeName","src":"1577:5:11"}],"id":4595,"name":"VariableDeclaration","src":"1577:12:11"}],"id":4596,"name":"ParameterList","src":"1576:14:11"},{"children":[{"attributes":{"functionReturnParameters":4596},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4501,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":4597,"name":"Identifier","src":"1608:10:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4590,"type":"bytes32","value":"node"},"id":4598,"name":"Identifier","src":"1619:4:11"}],"id":4599,"name":"IndexAccess","src":"1608:16:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4592,"type":"uint256","value":"coinType"},"id":4600,"name":"Identifier","src":"1625:8:11"}],"id":4601,"name":"IndexAccess","src":"1608:26:11"}],"id":4602,"name":"Return","src":"1601:33:11"}],"id":4603,"name":"Block","src":"1591:50:11"}],"id":4604,"name":"FunctionDefinition","src":"1514:127:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4626,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4625,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4605,"name":"ElementaryTypeName","src":"1674:6:11"}],"id":4606,"name":"VariableDeclaration","src":"1674:18:11"}],"id":4607,"name":"ParameterList","src":"1673:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":4625,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4608,"name":"ElementaryTypeName","src":"1714:4:11"}],"id":4609,"name":"VariableDeclaration","src":"1714:4:11"}],"id":4610,"name":"ParameterList","src":"1713:6:11"},{"children":[{"attributes":{"functionReturnParameters":4610},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4606,"type":"bytes4","value":"interfaceID"},"id":4611,"name":"Identifier","src":"1737:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4475,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":4612,"name":"Identifier","src":"1752:17:11"}],"id":4613,"name":"BinaryOperation","src":"1737:32:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4606,"type":"bytes4","value":"interfaceID"},"id":4614,"name":"Identifier","src":"1773:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4478,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":4615,"name":"Identifier","src":"1788:20:11"}],"id":4616,"name":"BinaryOperation","src":"1773:35:11"}],"id":4617,"name":"BinaryOperation","src":"1737:71:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7080,"type":"contract super AddrResolver","value":"super"},"id":4618,"name":"Identifier","src":"1812:5:11"}],"id":4619,"name":"MemberAccess","src":"1812:23:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4606,"type":"bytes4","value":"interfaceID"},"id":4620,"name":"Identifier","src":"1836:11:11"}],"id":4621,"name":"FunctionCall","src":"1812:36:11"}],"id":4622,"name":"BinaryOperation","src":"1737:111:11"}],"id":4623,"name":"Return","src":"1730:118:11"}],"id":4624,"name":"Block","src":"1720:135:11"}],"id":4625,"name":"FunctionDefinition","src":"1647:208:11"}],"id":4626,"name":"ContractDefinition","src":"56:1801:11"}],"id":4627,"name":"SourceUnit","src":"0:1857:11"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[4696]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4628,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4697,"symbolAliases":[null],"unitAlias":""},"id":4629,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4696,5687],"name":"ContentHashResolver","scope":4697},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":4630,"name":"UserDefinedTypeName","src":"88:12:12"}],"id":4631,"name":"InheritanceSpecifier","src":"88:12:12"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":4696,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4632,"name":"ElementaryTypeName","src":"107:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":4633,"name":"Literal","src":"159:10:12"}],"id":4634,"name":"VariableDeclaration","src":"107:62:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4640,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4635,"name":"ElementaryTypeName","src":"201:7:12"}],"id":4636,"name":"VariableDeclaration","src":"201:20:12"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":4640,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4637,"name":"ElementaryTypeName","src":"223:5:12"}],"id":4638,"name":"VariableDeclaration","src":"223:10:12"}],"id":4639,"name":"ParameterList","src":"200:34:12"}],"id":4640,"name":"EventDefinition","src":"176:59:12"},{"attributes":{"constant":false,"name":"hashes","scope":4696,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4641,"name":"ElementaryTypeName","src":"249:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":4642,"name":"ElementaryTypeName","src":"258:5:12"}],"id":4643,"name":"Mapping","src":"241:23:12"}],"id":4644,"name":"VariableDeclaration","src":"241:30:12"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":4696,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4666,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4645,"name":"ElementaryTypeName","src":"529:7:12"}],"id":4646,"name":"VariableDeclaration","src":"529:12:12"},{"attributes":{"constant":false,"name":"hash","scope":4666,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4647,"name":"ElementaryTypeName","src":"543:5:12"}],"id":4648,"name":"VariableDeclaration","src":"543:19:12"}],"id":4649,"name":"ParameterList","src":"528:35:12"},{"attributes":{"parameters":[null]},"children":[],"id":4653,"name":"ParameterList","src":"590:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4650,"name":"Identifier","src":"573:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4646,"type":"bytes32","value":"node"},"id":4651,"name":"Identifier","src":"584:4:12"}],"id":4652,"name":"ModifierInvocation","src":"573:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4644,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":4654,"name":"Identifier","src":"600:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4646,"type":"bytes32","value":"node"},"id":4655,"name":"Identifier","src":"607:4:12"}],"id":4656,"name":"IndexAccess","src":"600:12:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4648,"type":"bytes calldata","value":"hash"},"id":4657,"name":"Identifier","src":"615:4:12"}],"id":4658,"name":"Assignment","src":"600:19:12"}],"id":4659,"name":"ExpressionStatement","src":"600:19:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":4640,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":4660,"name":"Identifier","src":"634:18:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4646,"type":"bytes32","value":"node"},"id":4661,"name":"Identifier","src":"653:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4648,"type":"bytes calldata","value":"hash"},"id":4662,"name":"Identifier","src":"659:4:12"}],"id":4663,"name":"FunctionCall","src":"634:30:12"}],"id":4664,"name":"EmitStatement","src":"629:35:12"}],"id":4665,"name":"Block","src":"590:81:12"}],"id":4666,"name":"FunctionDefinition","src":"505:166:12"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":4696,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4678,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4667,"name":"ElementaryTypeName","src":"859:7:12"}],"id":4668,"name":"VariableDeclaration","src":"859:12:12"}],"id":4669,"name":"ParameterList","src":"858:14:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":4678,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4670,"name":"ElementaryTypeName","src":"896:5:12"}],"id":4671,"name":"VariableDeclaration","src":"896:12:12"}],"id":4672,"name":"ParameterList","src":"895:14:12"},{"children":[{"attributes":{"functionReturnParameters":4672},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4644,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":4673,"name":"Identifier","src":"927:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4668,"type":"bytes32","value":"node"},"id":4674,"name":"Identifier","src":"934:4:12"}],"id":4675,"name":"IndexAccess","src":"927:12:12"}],"id":4676,"name":"Return","src":"920:19:12"}],"id":4677,"name":"Block","src":"910:36:12"}],"id":4678,"name":"FunctionDefinition","src":"838:108:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4696,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4695,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4679,"name":"ElementaryTypeName","src":"979:6:12"}],"id":4680,"name":"VariableDeclaration","src":"979:18:12"}],"id":4681,"name":"ParameterList","src":"978:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":4695,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4682,"name":"ElementaryTypeName","src":"1019:4:12"}],"id":4683,"name":"VariableDeclaration","src":"1019:4:12"}],"id":4684,"name":"ParameterList","src":"1018:6:12"},{"children":[{"attributes":{"functionReturnParameters":4684},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4680,"type":"bytes4","value":"interfaceID"},"id":4685,"name":"Identifier","src":"1042:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4634,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":4686,"name":"Identifier","src":"1057:25:12"}],"id":4687,"name":"BinaryOperation","src":"1042:40:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7082,"type":"contract super ContentHashResolver","value":"super"},"id":4688,"name":"Identifier","src":"1086:5:12"}],"id":4689,"name":"MemberAccess","src":"1086:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4680,"type":"bytes4","value":"interfaceID"},"id":4690,"name":"Identifier","src":"1110:11:12"}],"id":4691,"name":"FunctionCall","src":"1086:36:12"}],"id":4692,"name":"BinaryOperation","src":"1042:80:12"}],"id":4693,"name":"Return","src":"1035:87:12"}],"id":4694,"name":"Block","src":"1025:104:12"}],"id":4695,"name":"FunctionDefinition","src":"952:177:12"}],"id":4696,"name":"ContractDefinition","src":"56:1075:12"}],"id":4697,"name":"SourceUnit","src":"0:1132:12"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[5187]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4698,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5188,"symbolAliases":[null],"unitAlias":""},"id":4699,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"SourceUnit":6306,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":5188,"symbolAliases":[null],"unitAlias":""},"id":4700,"name":"ImportDirective","src":"55:24:13"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5187,5687],"name":"DNSResolver","scope":5188},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":4701,"name":"UserDefinedTypeName","src":"105:12:13"}],"id":4702,"name":"InheritanceSpecifier","src":"105:12:13"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":6305,"type":"library RRUtils"},"id":4703,"name":"UserDefinedTypeName","src":"130:7:13"}],"id":4704,"name":"UsingForDirective","src":"124:20:13"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":7026,"type":"library ENSBytesUtils"},"id":4705,"name":"UserDefinedTypeName","src":"155:13:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":4706,"name":"ElementaryTypeName","src":"173:5:13"}],"id":4707,"name":"UsingForDirective","src":"149:30:13"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":5187,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4708,"name":"ElementaryTypeName","src":"185:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":4709,"name":"Literal","src":"235:10:13"}],"id":4710,"name":"VariableDeclaration","src":"185:60:13"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":5187,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4711,"name":"ElementaryTypeName","src":"251:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":4712,"name":"Literal","src":"299:10:13"}],"id":4713,"name":"VariableDeclaration","src":"251:58:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4723,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4714,"name":"ElementaryTypeName","src":"430:7:13"}],"id":4715,"name":"VariableDeclaration","src":"430:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":4723,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4716,"name":"ElementaryTypeName","src":"452:5:13"}],"id":4717,"name":"VariableDeclaration","src":"452:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":4723,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4718,"name":"ElementaryTypeName","src":"464:6:13"}],"id":4719,"name":"VariableDeclaration","src":"464:15:13"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":4723,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4720,"name":"ElementaryTypeName","src":"481:5:13"}],"id":4721,"name":"VariableDeclaration","src":"481:12:13"}],"id":4722,"name":"ParameterList","src":"429:65:13"}],"id":4723,"name":"EventDefinition","src":"407:88:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4731,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4724,"name":"ElementaryTypeName","src":"614:7:13"}],"id":4725,"name":"VariableDeclaration","src":"614:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":4731,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4726,"name":"ElementaryTypeName","src":"636:5:13"}],"id":4727,"name":"VariableDeclaration","src":"636:10:13"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":4731,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4728,"name":"ElementaryTypeName","src":"648:6:13"}],"id":4729,"name":"VariableDeclaration","src":"648:15:13"}],"id":4730,"name":"ParameterList","src":"613:51:13"}],"id":4731,"name":"EventDefinition","src":"591:74:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4735,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4732,"name":"ElementaryTypeName","src":"777:7:13"}],"id":4733,"name":"VariableDeclaration","src":"777:20:13"}],"id":4734,"name":"ParameterList","src":"776:22:13"}],"id":4735,"name":"EventDefinition","src":"756:43:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4743,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4736,"name":"ElementaryTypeName","src":"913:7:13"}],"id":4737,"name":"VariableDeclaration","src":"913:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":4743,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4738,"name":"ElementaryTypeName","src":"935:5:13"}],"id":4739,"name":"VariableDeclaration","src":"935:18:13"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":4743,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4740,"name":"ElementaryTypeName","src":"955:5:13"}],"id":4741,"name":"VariableDeclaration","src":"955:14:13"}],"id":4742,"name":"ParameterList","src":"912:58:13"}],"id":4743,"name":"EventDefinition","src":"888:83:13"},{"attributes":{"constant":false,"name":"zonehashes","scope":5187,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4744,"name":"ElementaryTypeName","src":"1181:7:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":4745,"name":"ElementaryTypeName","src":"1190:5:13"}],"id":4746,"name":"Mapping","src":"1173:23:13"}],"id":4747,"name":"VariableDeclaration","src":"1173:42:13"},{"attributes":{"constant":false,"name":"versions","scope":5187,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4748,"name":"ElementaryTypeName","src":"1433:7:13"},{"attributes":{"name":"uint256","type":"uint256"},"id":4749,"name":"ElementaryTypeName","src":"1442:7:13"}],"id":4750,"name":"Mapping","src":"1425:25:13"}],"id":4751,"name":"VariableDeclaration","src":"1425:42:13"},{"attributes":{"constant":false,"name":"records","scope":5187,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4752,"name":"ElementaryTypeName","src":"1589:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4753,"name":"ElementaryTypeName","src":"1606:7:13"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4754,"name":"ElementaryTypeName","src":"1623:7:13"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4755,"name":"ElementaryTypeName","src":"1640:6:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":4756,"name":"ElementaryTypeName","src":"1648:5:13"}],"id":4757,"name":"Mapping","src":"1632:22:13"}],"id":4758,"name":"Mapping","src":"1615:40:13"}],"id":4759,"name":"Mapping","src":"1598:58:13"}],"id":4760,"name":"Mapping","src":"1581:76:13"}],"id":4761,"name":"VariableDeclaration","src":"1581:92:13"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":5187,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4762,"name":"ElementaryTypeName","src":"1853:7:13"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4763,"name":"ElementaryTypeName","src":"1870:7:13"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4764,"name":"ElementaryTypeName","src":"1887:7:13"},{"attributes":{"name":"uint16","type":"uint16"},"id":4765,"name":"ElementaryTypeName","src":"1896:6:13"}],"id":4766,"name":"Mapping","src":"1879:24:13"}],"id":4767,"name":"Mapping","src":"1862:42:13"}],"id":4768,"name":"Mapping","src":"1845:60:13"}],"id":4769,"name":"VariableDeclaration","src":"1845:85:13"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":5187,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4934,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4770,"name":"ElementaryTypeName","src":"2877:7:13"}],"id":4771,"name":"VariableDeclaration","src":"2877:12:13"},{"attributes":{"constant":false,"name":"data","scope":4934,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4772,"name":"ElementaryTypeName","src":"2891:5:13"}],"id":4773,"name":"VariableDeclaration","src":"2891:19:13"}],"id":4774,"name":"ParameterList","src":"2876:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":4778,"name":"ParameterList","src":"2938:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4775,"name":"Identifier","src":"2921:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"bytes32","value":"node"},"id":4776,"name":"Identifier","src":"2932:4:13"}],"id":4777,"name":"ModifierInvocation","src":"2921:16:13"},{"children":[{"attributes":{"assignments":[4780]},"children":[{"attributes":{"constant":false,"name":"resource","scope":4933,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4779,"name":"ElementaryTypeName","src":"2948:6:13"}],"id":4780,"name":"VariableDeclaration","src":"2948:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4781,"name":"Literal","src":"2966:1:13"}],"id":4782,"name":"VariableDeclarationStatement","src":"2948:19:13"},{"attributes":{"assignments":[4784]},"children":[{"attributes":{"constant":false,"name":"offset","scope":4933,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4783,"name":"ElementaryTypeName","src":"2977:7:13"}],"id":4784,"name":"VariableDeclaration","src":"2977:14:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4785,"name":"Literal","src":"2994:1:13"}],"id":4786,"name":"VariableDeclarationStatement","src":"2977:18:13"},{"attributes":{"assignments":[4788],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":4933,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4787,"name":"ElementaryTypeName","src":"3005:5:13"}],"id":4788,"name":"VariableDeclaration","src":"3005:17:13"}],"id":4789,"name":"VariableDeclarationStatement","src":"3005:17:13"},{"attributes":{"assignments":[4791],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":4933,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4790,"name":"ElementaryTypeName","src":"3032:5:13"}],"id":4791,"name":"VariableDeclaration","src":"3032:18:13"}],"id":4792,"name":"VariableDeclarationStatement","src":"3032:18:13"},{"attributes":{"assignments":[4794],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":4933,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4793,"name":"ElementaryTypeName","src":"3060:7:13"}],"id":4794,"name":"VariableDeclaration","src":"3060:16:13"}],"id":4795,"name":"VariableDeclarationStatement","src":"3060:16:13"},{"children":[{"attributes":{"assignments":[4799]},"children":[{"attributes":{"constant":false,"name":"iter","scope":4910,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":5826,"type":"struct RRUtils.RRIterator"},"id":4798,"name":"UserDefinedTypeName","src":"3152:18:13"}],"id":4799,"name":"VariableDeclaration","src":"3152:30:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":5852,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4773,"type":"bytes calldata","value":"data"},"id":4800,"name":"Identifier","src":"3185:4:13"}],"id":4801,"name":"MemberAccess","src":"3185:15:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4802,"name":"Literal","src":"3201:1:13"}],"id":4803,"name":"FunctionCall","src":"3185:18:13"}],"id":4804,"name":"VariableDeclarationStatement","src":"3152:51:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":5867,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4805,"name":"Identifier","src":"3206:4:13"}],"id":4806,"name":"MemberAccess","src":"3206:9:13"}],"id":4807,"name":"FunctionCall","src":"3206:11:13"}],"id":4808,"name":"UnaryOperation","src":"3205:12:13"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":5969,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4809,"name":"Identifier","src":"3219:4:13"}],"id":4810,"name":"MemberAccess","src":"3219:9:13"}],"id":4811,"name":"FunctionCall","src":"3219:11:13"}],"id":4812,"name":"ExpressionStatement","src":"3219:11:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4813,"name":"Identifier","src":"3250:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4814,"name":"Literal","src":"3262:1:13"}],"id":4815,"name":"BinaryOperation","src":"3250:13:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4816,"name":"Identifier","src":"3283:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5817,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4817,"name":"Identifier","src":"3294:4:13"}],"id":4818,"name":"MemberAccess","src":"3294:12:13"}],"id":4819,"name":"Assignment","src":"3283:23:13"}],"id":4820,"name":"ExpressionStatement","src":"3283:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4821,"name":"Identifier","src":"3324:4:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":5990,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4822,"name":"Identifier","src":"3331:4:13"}],"id":4823,"name":"MemberAccess","src":"3331:9:13"}],"id":4824,"name":"FunctionCall","src":"3331:11:13"}],"id":4825,"name":"Assignment","src":"3324:18:13"}],"id":4826,"name":"ExpressionStatement","src":"3324:18:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4794,"type":"bytes32","value":"nameHash"},"id":4827,"name":"Identifier","src":"3360:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7035,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":4828,"name":"Identifier","src":"3371:9:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":4829,"name":"Identifier","src":"3381:3:13"}],"id":4830,"name":"MemberAccess","src":"3381:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4831,"name":"Identifier","src":"3398:4:13"}],"id":4832,"name":"FunctionCall","src":"3381:22:13"}],"id":4833,"name":"FunctionCall","src":"3371:33:13"}],"id":4834,"name":"Assignment","src":"3360:44:13"}],"id":4835,"name":"ExpressionStatement","src":"3360:44:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"bytes memory","value":"value"},"id":4836,"name":"Identifier","src":"3422:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4837,"name":"ElementaryTypeNameExpression","src":"3430:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":6010,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4838,"name":"Identifier","src":"3436:4:13"}],"id":4839,"name":"MemberAccess","src":"3436:10:13"}],"id":4840,"name":"FunctionCall","src":"3436:12:13"}],"id":4841,"name":"FunctionCall","src":"3430:19:13"}],"id":4842,"name":"Assignment","src":"3422:27:13"}],"id":4843,"name":"ExpressionStatement","src":"3422:27:13"}],"id":4844,"name":"Block","src":"3265:199:13"},{"children":[{"attributes":{"assignments":[4846]},"children":[{"attributes":{"constant":false,"name":"newName","scope":4907,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4845,"name":"ElementaryTypeName","src":"3488:5:13"}],"id":4846,"name":"VariableDeclaration","src":"3488:20:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":5990,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4847,"name":"Identifier","src":"3511:4:13"}],"id":4848,"name":"MemberAccess","src":"3511:9:13"}],"id":4849,"name":"FunctionCall","src":"3511:11:13"}],"id":4850,"name":"VariableDeclarationStatement","src":"3488:34:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4851,"name":"Identifier","src":"3544:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5817,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4852,"name":"Identifier","src":"3556:4:13"}],"id":4853,"name":"MemberAccess","src":"3556:12:13"}],"id":4854,"name":"BinaryOperation","src":"3544:24:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":6596,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4855,"name":"Identifier","src":"3573:4:13"}],"id":4856,"name":"MemberAccess","src":"3573:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4846,"type":"bytes memory","value":"newName"},"id":4857,"name":"Identifier","src":"3585:7:13"}],"id":4858,"name":"FunctionCall","src":"3573:20:13"}],"id":4859,"name":"UnaryOperation","src":"3572:21:13"}],"id":4860,"name":"BinaryOperation","src":"3544:49:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":4861,"name":"Identifier","src":"3617:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"bytes32","value":"node"},"id":4862,"name":"Identifier","src":"3629:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4863,"name":"Identifier","src":"3635:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4864,"name":"Identifier","src":"3641:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4773,"type":"bytes calldata","value":"data"},"id":4865,"name":"Identifier","src":"3651:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4866,"name":"Identifier","src":"3657:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4867,"name":"Identifier","src":"3665:4:13"}],"id":4868,"name":"MemberAccess","src":"3665:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4869,"name":"Identifier","src":"3679:6:13"}],"id":4870,"name":"BinaryOperation","src":"3665:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"bytes memory","value":"value"},"id":4871,"name":"Identifier","src":"3687:5:13"}],"id":4872,"name":"MemberAccess","src":"3687:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4873,"name":"Literal","src":"3703:1:13"}],"id":4874,"name":"BinaryOperation","src":"3687:17:13"}],"id":4875,"name":"FunctionCall","src":"3617:88:13"}],"id":4876,"name":"ExpressionStatement","src":"3617:88:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4877,"name":"Identifier","src":"3727:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":5817,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4878,"name":"Identifier","src":"3738:4:13"}],"id":4879,"name":"MemberAccess","src":"3738:12:13"}],"id":4880,"name":"Assignment","src":"3727:23:13"}],"id":4881,"name":"ExpressionStatement","src":"3727:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4882,"name":"Identifier","src":"3772:6:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":5815,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4883,"name":"Identifier","src":"3781:4:13"}],"id":4884,"name":"MemberAccess","src":"3781:11:13"}],"id":4885,"name":"Assignment","src":"3772:20:13"}],"id":4886,"name":"ExpressionStatement","src":"3772:20:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4887,"name":"Identifier","src":"3814:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4846,"type":"bytes memory","value":"newName"},"id":4888,"name":"Identifier","src":"3821:7:13"}],"id":4889,"name":"Assignment","src":"3814:14:13"}],"id":4890,"name":"ExpressionStatement","src":"3814:14:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4794,"type":"bytes32","value":"nameHash"},"id":4891,"name":"Identifier","src":"3850:8:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7035,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":4892,"name":"Identifier","src":"3861:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4893,"name":"Identifier","src":"3871:4:13"}],"id":4894,"name":"FunctionCall","src":"3861:15:13"}],"id":4895,"name":"Assignment","src":"3850:26:13"}],"id":4896,"name":"ExpressionStatement","src":"3850:26:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"bytes memory","value":"value"},"id":4897,"name":"Identifier","src":"3898:5:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4898,"name":"ElementaryTypeNameExpression","src":"3906:5:13"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":6010,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":4899,"name":"Identifier","src":"3912:4:13"}],"id":4900,"name":"MemberAccess","src":"3912:10:13"}],"id":4901,"name":"FunctionCall","src":"3912:12:13"}],"id":4902,"name":"FunctionCall","src":"3906:19:13"}],"id":4903,"name":"Assignment","src":"3898:27:13"}],"id":4904,"name":"ExpressionStatement","src":"3898:27:13"}],"id":4905,"name":"Block","src":"3595:349:13"}],"id":4906,"name":"IfStatement","src":"3540:404:13"}],"id":4907,"name":"Block","src":"3470:488:13"}],"id":4908,"name":"IfStatement","src":"3246:712:13"}],"id":4909,"name":"Block","src":"3232:736:13"}],"id":4910,"name":"ForStatement","src":"3147:821:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4911,"name":"Identifier","src":"3981:4:13"}],"id":4912,"name":"MemberAccess","src":"3981:11:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4913,"name":"Literal","src":"3995:1:13"}],"id":4914,"name":"BinaryOperation","src":"3981:15:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5186,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":4915,"name":"Identifier","src":"4012:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"bytes32","value":"node"},"id":4916,"name":"Identifier","src":"4024:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4788,"type":"bytes memory","value":"name"},"id":4917,"name":"Identifier","src":"4030:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"uint16","value":"resource"},"id":4918,"name":"Identifier","src":"4036:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4773,"type":"bytes calldata","value":"data"},"id":4919,"name":"Identifier","src":"4046:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4920,"name":"Identifier","src":"4052:6:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4773,"type":"bytes calldata","value":"data"},"id":4921,"name":"Identifier","src":"4060:4:13"}],"id":4922,"name":"MemberAccess","src":"4060:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4784,"type":"uint256","value":"offset"},"id":4923,"name":"Identifier","src":"4074:6:13"}],"id":4924,"name":"BinaryOperation","src":"4060:20:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"bytes memory","value":"value"},"id":4925,"name":"Identifier","src":"4082:5:13"}],"id":4926,"name":"MemberAccess","src":"4082:12:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4927,"name":"Literal","src":"4098:1:13"}],"id":4928,"name":"BinaryOperation","src":"4082:17:13"}],"id":4929,"name":"FunctionCall","src":"4012:88:13"}],"id":4930,"name":"ExpressionStatement","src":"4012:88:13"}],"id":4931,"name":"Block","src":"3998:113:13"}],"id":4932,"name":"IfStatement","src":"3977:134:13"}],"id":4933,"name":"Block","src":"2938:1179:13"}],"id":4934,"name":"FunctionDefinition","src":"2854:1263:13"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":5187,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4935,"name":"ElementaryTypeName","src":"4538:7:13"}],"id":4936,"name":"VariableDeclaration","src":"4538:12:13"},{"attributes":{"constant":false,"name":"name","scope":4958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4937,"name":"ElementaryTypeName","src":"4552:7:13"}],"id":4938,"name":"VariableDeclaration","src":"4552:12:13"},{"attributes":{"constant":false,"name":"resource","scope":4958,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":4939,"name":"ElementaryTypeName","src":"4566:6:13"}],"id":4940,"name":"VariableDeclaration","src":"4566:15:13"}],"id":4941,"name":"ParameterList","src":"4537:45:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":4958,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4942,"name":"ElementaryTypeName","src":"4604:5:13"}],"id":4943,"name":"VariableDeclaration","src":"4604:12:13"}],"id":4944,"name":"ParameterList","src":"4603:14:13"},{"children":[{"attributes":{"functionReturnParameters":4944},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":4945,"name":"Identifier","src":"4635:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4936,"type":"bytes32","value":"node"},"id":4946,"name":"Identifier","src":"4643:4:13"}],"id":4947,"name":"IndexAccess","src":"4635:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4751,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":4948,"name":"Identifier","src":"4649:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4936,"type":"bytes32","value":"node"},"id":4949,"name":"Identifier","src":"4658:4:13"}],"id":4950,"name":"IndexAccess","src":"4649:14:13"}],"id":4951,"name":"IndexAccess","src":"4635:29:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4938,"type":"bytes32","value":"name"},"id":4952,"name":"Identifier","src":"4665:4:13"}],"id":4953,"name":"IndexAccess","src":"4635:35:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4940,"type":"uint16","value":"resource"},"id":4954,"name":"Identifier","src":"4671:8:13"}],"id":4955,"name":"IndexAccess","src":"4635:45:13"}],"id":4956,"name":"Return","src":"4628:52:13"}],"id":4957,"name":"Block","src":"4618:69:13"}],"id":4958,"name":"FunctionDefinition","src":"4519:168:13"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":5187,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4981,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4959,"name":"ElementaryTypeName","src":"4924:7:13"}],"id":4960,"name":"VariableDeclaration","src":"4924:12:13"},{"attributes":{"constant":false,"name":"name","scope":4981,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4961,"name":"ElementaryTypeName","src":"4938:7:13"}],"id":4962,"name":"VariableDeclaration","src":"4938:12:13"}],"id":4963,"name":"ParameterList","src":"4923:28:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":4981,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4964,"name":"ElementaryTypeName","src":"4973:4:13"}],"id":4965,"name":"VariableDeclaration","src":"4973:4:13"}],"id":4966,"name":"ParameterList","src":"4972:6:13"},{"children":[{"attributes":{"functionReturnParameters":4966},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":4967,"name":"Identifier","src":"4997:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4960,"type":"bytes32","value":"node"},"id":4968,"name":"Identifier","src":"5014:4:13"}],"id":4969,"name":"IndexAccess","src":"4997:22:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4751,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":4970,"name":"Identifier","src":"5020:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4960,"type":"bytes32","value":"node"},"id":4971,"name":"Identifier","src":"5029:4:13"}],"id":4972,"name":"IndexAccess","src":"5020:14:13"}],"id":4973,"name":"IndexAccess","src":"4997:38:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4962,"type":"bytes32","value":"name"},"id":4974,"name":"Identifier","src":"5036:4:13"}],"id":4975,"name":"IndexAccess","src":"4997:44:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4976,"name":"Literal","src":"5045:1:13"}],"id":4977,"name":"BinaryOperation","src":"4997:49:13"}],"id":4978,"name":"TupleExpression","src":"4996:51:13"}],"id":4979,"name":"Return","src":"4989:58:13"}],"id":4980,"name":"Block","src":"4979:75:13"}],"id":4981,"name":"FunctionDefinition","src":"4901:153:13"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":5187,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4999,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4982,"name":"ElementaryTypeName","src":"5215:7:13"}],"id":4983,"name":"VariableDeclaration","src":"5215:12:13"}],"id":4984,"name":"ParameterList","src":"5214:14:13"},{"attributes":{"parameters":[null]},"children":[],"id":4988,"name":"ParameterList","src":"5253:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":4985,"name":"Identifier","src":"5236:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"bytes32","value":"node"},"id":4986,"name":"Identifier","src":"5247:4:13"}],"id":4987,"name":"ModifierInvocation","src":"5236:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4751,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":4989,"name":"Identifier","src":"5263:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"bytes32","value":"node"},"id":4990,"name":"Identifier","src":"5272:4:13"}],"id":4991,"name":"IndexAccess","src":"5263:14:13"}],"id":4992,"name":"UnaryOperation","src":"5263:16:13"}],"id":4993,"name":"ExpressionStatement","src":"5263:16:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":4735,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":4994,"name":"Identifier","src":"5294:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"bytes32","value":"node"},"id":4995,"name":"Identifier","src":"5309:4:13"}],"id":4996,"name":"FunctionCall","src":"5294:20:13"}],"id":4997,"name":"EmitStatement","src":"5289:25:13"}],"id":4998,"name":"Block","src":"5253:68:13"}],"id":4999,"name":"FunctionDefinition","src":"5193:128:13"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":5187,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5028,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5000,"name":"ElementaryTypeName","src":"5562:7:13"}],"id":5001,"name":"VariableDeclaration","src":"5562:12:13"},{"attributes":{"constant":false,"name":"hash","scope":5028,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5002,"name":"ElementaryTypeName","src":"5576:5:13"}],"id":5003,"name":"VariableDeclaration","src":"5576:19:13"}],"id":5004,"name":"ParameterList","src":"5561:35:13"},{"attributes":{"parameters":[null]},"children":[],"id":5008,"name":"ParameterList","src":"5623:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5005,"name":"Identifier","src":"5606:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"bytes32","value":"node"},"id":5006,"name":"Identifier","src":"5617:4:13"}],"id":5007,"name":"ModifierInvocation","src":"5606:16:13"},{"children":[{"attributes":{"assignments":[5010]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":5027,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5009,"name":"ElementaryTypeName","src":"5633:5:13"}],"id":5010,"name":"VariableDeclaration","src":"5633:20:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4747,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5011,"name":"Identifier","src":"5656:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"bytes32","value":"node"},"id":5012,"name":"Identifier","src":"5667:4:13"}],"id":5013,"name":"IndexAccess","src":"5656:16:13"}],"id":5014,"name":"VariableDeclarationStatement","src":"5633:39:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4747,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5015,"name":"Identifier","src":"5682:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"bytes32","value":"node"},"id":5016,"name":"Identifier","src":"5693:4:13"}],"id":5017,"name":"IndexAccess","src":"5682:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5003,"type":"bytes calldata","value":"hash"},"id":5018,"name":"Identifier","src":"5701:4:13"}],"id":5019,"name":"Assignment","src":"5682:23:13"}],"id":5020,"name":"ExpressionStatement","src":"5682:23:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":4743,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":5021,"name":"Identifier","src":"5720:18:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5001,"type":"bytes32","value":"node"},"id":5022,"name":"Identifier","src":"5739:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5010,"type":"bytes memory","value":"oldhash"},"id":5023,"name":"Identifier","src":"5745:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5003,"type":"bytes calldata","value":"hash"},"id":5024,"name":"Identifier","src":"5754:4:13"}],"id":5025,"name":"FunctionCall","src":"5720:39:13"}],"id":5026,"name":"EmitStatement","src":"5715:44:13"}],"id":5027,"name":"Block","src":"5623:143:13"}],"id":5028,"name":"FunctionDefinition","src":"5541:225:13"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":5187,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5040,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5029,"name":"ElementaryTypeName","src":"5938:7:13"}],"id":5030,"name":"VariableDeclaration","src":"5938:12:13"}],"id":5031,"name":"ParameterList","src":"5937:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5040,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5032,"name":"ElementaryTypeName","src":"5975:5:13"}],"id":5033,"name":"VariableDeclaration","src":"5975:12:13"}],"id":5034,"name":"ParameterList","src":"5974:14:13"},{"children":[{"attributes":{"functionReturnParameters":5034},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4747,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5035,"name":"Identifier","src":"6006:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5030,"type":"bytes32","value":"node"},"id":5036,"name":"Identifier","src":"6017:4:13"}],"id":5037,"name":"IndexAccess","src":"6006:16:13"}],"id":5038,"name":"Return","src":"5999:23:13"}],"id":5039,"name":"Block","src":"5989:40:13"}],"id":5040,"name":"FunctionDefinition","src":"5920:109:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5187,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5061,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5041,"name":"ElementaryTypeName","src":"6062:6:13"}],"id":5042,"name":"VariableDeclaration","src":"6062:18:13"}],"id":5043,"name":"ParameterList","src":"6061:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5061,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5044,"name":"ElementaryTypeName","src":"6102:4:13"}],"id":5045,"name":"VariableDeclaration","src":"6102:4:13"}],"id":5046,"name":"ParameterList","src":"6101:6:13"},{"children":[{"attributes":{"functionReturnParameters":5046},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5042,"type":"bytes4","value":"interfaceID"},"id":5047,"name":"Identifier","src":"6125:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4710,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":5048,"name":"Identifier","src":"6140:23:13"}],"id":5049,"name":"BinaryOperation","src":"6125:38:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5042,"type":"bytes4","value":"interfaceID"},"id":5050,"name":"Identifier","src":"6182:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4713,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":5051,"name":"Identifier","src":"6197:21:13"}],"id":5052,"name":"BinaryOperation","src":"6182:36:13"}],"id":5053,"name":"BinaryOperation","src":"6125:93:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7086,"type":"contract super DNSResolver","value":"super"},"id":5054,"name":"Identifier","src":"6237:5:13"}],"id":5055,"name":"MemberAccess","src":"6237:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5042,"type":"bytes4","value":"interfaceID"},"id":5056,"name":"Identifier","src":"6261:11:13"}],"id":5057,"name":"FunctionCall","src":"6237:36:13"}],"id":5058,"name":"BinaryOperation","src":"6125:148:13"}],"id":5059,"name":"Return","src":"6118:155:13"}],"id":5060,"name":"Block","src":"6108:172:13"}],"id":5061,"name":"FunctionDefinition","src":"6035:245:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":5187,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5186,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5062,"name":"ElementaryTypeName","src":"6316:7:13"}],"id":5063,"name":"VariableDeclaration","src":"6316:12:13"},{"attributes":{"constant":false,"name":"name","scope":5186,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5064,"name":"ElementaryTypeName","src":"6338:5:13"}],"id":5065,"name":"VariableDeclaration","src":"6338:17:13"},{"attributes":{"constant":false,"name":"resource","scope":5186,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5066,"name":"ElementaryTypeName","src":"6365:6:13"}],"id":5067,"name":"VariableDeclaration","src":"6365:15:13"},{"attributes":{"constant":false,"name":"data","scope":5186,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5068,"name":"ElementaryTypeName","src":"6390:5:13"}],"id":5069,"name":"VariableDeclaration","src":"6390:17:13"},{"attributes":{"constant":false,"name":"offset","scope":5186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5070,"name":"ElementaryTypeName","src":"6417:7:13"}],"id":5071,"name":"VariableDeclaration","src":"6417:14:13"},{"attributes":{"constant":false,"name":"size","scope":5186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5072,"name":"ElementaryTypeName","src":"6441:7:13"}],"id":5073,"name":"VariableDeclaration","src":"6441:12:13"},{"attributes":{"constant":false,"name":"deleteRecord","scope":5186,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5074,"name":"ElementaryTypeName","src":"6463:4:13"}],"id":5075,"name":"VariableDeclaration","src":"6463:17:13"}],"id":5076,"name":"ParameterList","src":"6306:175:13"},{"attributes":{"parameters":[null]},"children":[],"id":5077,"name":"ParameterList","src":"6494:0:13"},{"children":[{"attributes":{"assignments":[5079]},"children":[{"attributes":{"constant":false,"name":"version","scope":5185,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5078,"name":"ElementaryTypeName","src":"6504:7:13"}],"id":5079,"name":"VariableDeclaration","src":"6504:15:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4751,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5080,"name":"Identifier","src":"6522:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5081,"name":"Identifier","src":"6531:4:13"}],"id":5082,"name":"IndexAccess","src":"6522:14:13"}],"id":5083,"name":"VariableDeclarationStatement","src":"6504:32:13"},{"attributes":{"assignments":[5085]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5084,"name":"ElementaryTypeName","src":"6546:7:13"}],"id":5085,"name":"VariableDeclaration","src":"6546:16:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7035,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5086,"name":"Identifier","src":"6565:9:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5065,"type":"bytes memory","value":"name"},"id":5087,"name":"Identifier","src":"6575:4:13"}],"id":5088,"name":"FunctionCall","src":"6565:15:13"}],"id":5089,"name":"VariableDeclarationStatement","src":"6546:34:13"},{"attributes":{"assignments":[5091]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":5185,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5090,"name":"ElementaryTypeName","src":"6590:5:13"}],"id":5091,"name":"VariableDeclaration","src":"6590:19:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":6803,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5069,"type":"bytes memory","value":"data"},"id":5092,"name":"Identifier","src":"6612:4:13"}],"id":5093,"name":"MemberAccess","src":"6612:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5071,"type":"uint256","value":"offset"},"id":5094,"name":"Identifier","src":"6627:6:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5073,"type":"uint256","value":"size"},"id":5095,"name":"Identifier","src":"6635:4:13"}],"id":5096,"name":"FunctionCall","src":"6612:28:13"}],"id":5097,"name":"VariableDeclarationStatement","src":"6590:50:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5075,"type":"bool","value":"deleteRecord"},"id":5098,"name":"Identifier","src":"6654:12:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5099,"name":"Identifier","src":"6686:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5100,"name":"Identifier","src":"6694:4:13"}],"id":5101,"name":"IndexAccess","src":"6686:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5102,"name":"Identifier","src":"6700:7:13"}],"id":5103,"name":"IndexAccess","src":"6686:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5104,"name":"Identifier","src":"6709:8:13"}],"id":5105,"name":"IndexAccess","src":"6686:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5106,"name":"Identifier","src":"6719:8:13"}],"id":5107,"name":"IndexAccess","src":"6686:42:13"}],"id":5108,"name":"MemberAccess","src":"6686:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5109,"name":"Literal","src":"6739:1:13"}],"id":5110,"name":"BinaryOperation","src":"6686:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5111,"name":"Identifier","src":"6760:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5112,"name":"Identifier","src":"6777:4:13"}],"id":5115,"name":"IndexAccess","src":"6760:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5113,"name":"Identifier","src":"6783:7:13"}],"id":5116,"name":"IndexAccess","src":"6760:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5114,"name":"Identifier","src":"6792:8:13"}],"id":5117,"name":"IndexAccess","src":"6760:41:13"}],"id":5118,"name":"UnaryOperation","src":"6760:43:13"}],"id":5119,"name":"ExpressionStatement","src":"6760:43:13"}],"id":5120,"name":"Block","src":"6742:76:13"}],"id":5121,"name":"IfStatement","src":"6682:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5122,"name":"Identifier","src":"6838:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5123,"name":"Identifier","src":"6846:4:13"}],"id":5124,"name":"IndexAccess","src":"6838:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5125,"name":"Identifier","src":"6852:7:13"}],"id":5126,"name":"IndexAccess","src":"6838:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5127,"name":"Identifier","src":"6861:8:13"}],"id":5128,"name":"IndexAccess","src":"6838:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5129,"name":"Identifier","src":"6871:8:13"}],"id":5130,"name":"IndexAccess","src":"6838:42:13"}],"id":5131,"name":"TupleExpression","src":"6837:44:13"}],"id":5132,"name":"UnaryOperation","src":"6831:50:13"}],"id":5133,"name":"ExpressionStatement","src":"6831:50:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":4731,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":5134,"name":"Identifier","src":"6900:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5135,"name":"Identifier","src":"6917:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5065,"type":"bytes memory","value":"name"},"id":5136,"name":"Identifier","src":"6923:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5137,"name":"Identifier","src":"6929:8:13"}],"id":5138,"name":"FunctionCall","src":"6900:38:13"}],"id":5139,"name":"EmitStatement","src":"6895:43:13"}],"id":5140,"name":"Block","src":"6668:281:13"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5141,"name":"Identifier","src":"6973:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5142,"name":"Identifier","src":"6981:4:13"}],"id":5143,"name":"IndexAccess","src":"6973:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5144,"name":"Identifier","src":"6987:7:13"}],"id":5145,"name":"IndexAccess","src":"6973:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5146,"name":"Identifier","src":"6996:8:13"}],"id":5147,"name":"IndexAccess","src":"6973:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5148,"name":"Identifier","src":"7006:8:13"}],"id":5149,"name":"IndexAccess","src":"6973:42:13"}],"id":5150,"name":"MemberAccess","src":"6973:49:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5151,"name":"Literal","src":"7026:1:13"}],"id":5152,"name":"BinaryOperation","src":"6973:54:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4769,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5153,"name":"Identifier","src":"7047:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5154,"name":"Identifier","src":"7064:4:13"}],"id":5157,"name":"IndexAccess","src":"7047:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5155,"name":"Identifier","src":"7070:7:13"}],"id":5158,"name":"IndexAccess","src":"7047:31:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5156,"name":"Identifier","src":"7079:8:13"}],"id":5159,"name":"IndexAccess","src":"7047:41:13"}],"id":5160,"name":"UnaryOperation","src":"7047:43:13"}],"id":5161,"name":"ExpressionStatement","src":"7047:43:13"}],"id":5162,"name":"Block","src":"7029:76:13"}],"id":5163,"name":"IfStatement","src":"6969:136:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4761,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5164,"name":"Identifier","src":"7118:7:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5165,"name":"Identifier","src":"7126:4:13"}],"id":5169,"name":"IndexAccess","src":"7118:13:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5079,"type":"uint256","value":"version"},"id":5166,"name":"Identifier","src":"7132:7:13"}],"id":5170,"name":"IndexAccess","src":"7118:22:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5085,"type":"bytes32","value":"nameHash"},"id":5167,"name":"Identifier","src":"7141:8:13"}],"id":5171,"name":"IndexAccess","src":"7118:32:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5168,"name":"Identifier","src":"7151:8:13"}],"id":5172,"name":"IndexAccess","src":"7118:42:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5091,"type":"bytes memory","value":"rrData"},"id":5173,"name":"Identifier","src":"7163:6:13"}],"id":5174,"name":"Assignment","src":"7118:51:13"}],"id":5175,"name":"ExpressionStatement","src":"7118:51:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4723,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":5176,"name":"Identifier","src":"7188:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5063,"type":"bytes32","value":"node"},"id":5177,"name":"Identifier","src":"7205:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5065,"type":"bytes memory","value":"name"},"id":5178,"name":"Identifier","src":"7211:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"uint16","value":"resource"},"id":5179,"name":"Identifier","src":"7217:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5091,"type":"bytes memory","value":"rrData"},"id":5180,"name":"Identifier","src":"7227:6:13"}],"id":5181,"name":"FunctionCall","src":"7188:46:13"}],"id":5182,"name":"EmitStatement","src":"7183:51:13"}],"id":5183,"name":"Block","src":"6955:290:13"}],"id":5184,"name":"IfStatement","src":"6650:595:13"}],"id":5185,"name":"Block","src":"6494:757:13"}],"id":5186,"name":"FunctionDefinition","src":"6286:965:13"}],"id":5187,"name":"ContractDefinition","src":"81:7172:13"}],"id":5188,"name":"SourceUnit","src":"0:7253:13"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[5374]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5189,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5375,"symbolAliases":[null],"unitAlias":""},"id":5190,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"SourceUnit":4627,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":5375,"symbolAliases":[null],"unitAlias":""},"id":5191,"name":"ImportDirective","src":"55:28:14"},{"attributes":{"contractDependencies":[4626,5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5374,4626,5687],"name":"InterfaceResolver","scope":5375},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":5192,"name":"UserDefinedTypeName","src":"115:12:14"}],"id":5193,"name":"InheritanceSpecifier","src":"115:12:14"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":4626,"type":"contract AddrResolver"},"id":5194,"name":"UserDefinedTypeName","src":"129:12:14"}],"id":5195,"name":"InheritanceSpecifier","src":"129:12:14"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":5374,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5196,"name":"ElementaryTypeName","src":"148:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":5197,"name":"ElementaryTypeNameExpression","src":"197:6:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":7035,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5198,"name":"Identifier","src":"204:9:14"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":5199,"name":"Literal","src":"214:38:14"}],"id":5200,"name":"FunctionCall","src":"204:49:14"}],"id":5201,"name":"FunctionCall","src":"197:57:14"}],"id":5202,"name":"VariableDeclaration","src":"148:106:14"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5374,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5203,"name":"ElementaryTypeName","src":"260:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5204,"name":"Literal","src":"304:10:14"}],"id":5205,"name":"VariableDeclaration","src":"260:54:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5213,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5206,"name":"ElementaryTypeName","src":"344:7:14"}],"id":5207,"name":"VariableDeclaration","src":"344:20:14"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":5213,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5208,"name":"ElementaryTypeName","src":"366:6:14"}],"id":5209,"name":"VariableDeclaration","src":"366:26:14"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":5213,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5210,"name":"ElementaryTypeName","src":"394:7:14"}],"id":5211,"name":"VariableDeclaration","src":"394:19:14"}],"id":5212,"name":"ParameterList","src":"343:71:14"}],"id":5213,"name":"EventDefinition","src":"321:94:14"},{"attributes":{"constant":false,"name":"interfaces","scope":5374,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5214,"name":"ElementaryTypeName","src":"429:7:14"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5215,"name":"ElementaryTypeName","src":"446:6:14"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5216,"name":"ElementaryTypeName","src":"454:7:14"}],"id":5217,"name":"Mapping","src":"438:24:14"}],"id":5218,"name":"Mapping","src":"421:42:14"}],"id":5219,"name":"VariableDeclaration","src":"421:53:14"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":5374,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5246,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5220,"name":"ElementaryTypeName","src":"880:7:14"}],"id":5221,"name":"VariableDeclaration","src":"880:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":5246,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5222,"name":"ElementaryTypeName","src":"894:6:14"}],"id":5223,"name":"VariableDeclaration","src":"894:18:14"},{"attributes":{"constant":false,"name":"implementer","scope":5246,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5224,"name":"ElementaryTypeName","src":"914:7:14"}],"id":5225,"name":"VariableDeclaration","src":"914:19:14"}],"id":5226,"name":"ParameterList","src":"879:55:14"},{"attributes":{"parameters":[null]},"children":[],"id":5230,"name":"ParameterList","src":"961:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5227,"name":"Identifier","src":"944:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5221,"type":"bytes32","value":"node"},"id":5228,"name":"Identifier","src":"955:4:14"}],"id":5229,"name":"ModifierInvocation","src":"944:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5219,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5231,"name":"Identifier","src":"971:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5221,"type":"bytes32","value":"node"},"id":5232,"name":"Identifier","src":"982:4:14"}],"id":5234,"name":"IndexAccess","src":"971:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5223,"type":"bytes4","value":"interfaceID"},"id":5233,"name":"Identifier","src":"988:11:14"}],"id":5235,"name":"IndexAccess","src":"971:29:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5225,"type":"address","value":"implementer"},"id":5236,"name":"Identifier","src":"1003:11:14"}],"id":5237,"name":"Assignment","src":"971:43:14"}],"id":5238,"name":"ExpressionStatement","src":"971:43:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5213,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":5239,"name":"Identifier","src":"1029:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5221,"type":"bytes32","value":"node"},"id":5240,"name":"Identifier","src":"1046:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5223,"type":"bytes4","value":"interfaceID"},"id":5241,"name":"Identifier","src":"1052:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5225,"type":"address","value":"implementer"},"id":5242,"name":"Identifier","src":"1065:11:14"}],"id":5243,"name":"FunctionCall","src":"1029:48:14"}],"id":5244,"name":"EmitStatement","src":"1024:53:14"}],"id":5245,"name":"Block","src":"961:123:14"}],"id":5246,"name":"FunctionDefinition","src":"858:226:14"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":5374,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5356,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5247,"name":"ElementaryTypeName","src":"1751:7:14"}],"id":5248,"name":"VariableDeclaration","src":"1751:12:14"},{"attributes":{"constant":false,"name":"interfaceID","scope":5356,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5249,"name":"ElementaryTypeName","src":"1765:6:14"}],"id":5250,"name":"VariableDeclaration","src":"1765:18:14"}],"id":5251,"name":"ParameterList","src":"1750:34:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5356,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5252,"name":"ElementaryTypeName","src":"1808:7:14"}],"id":5253,"name":"VariableDeclaration","src":"1808:7:14"}],"id":5254,"name":"ParameterList","src":"1807:9:14"},{"children":[{"attributes":{"assignments":[5256]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":5355,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5255,"name":"ElementaryTypeName","src":"1827:7:14"}],"id":5256,"name":"VariableDeclaration","src":"1827:19:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5219,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5257,"name":"Identifier","src":"1849:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5248,"type":"bytes32","value":"node"},"id":5258,"name":"Identifier","src":"1860:4:14"}],"id":5259,"name":"IndexAccess","src":"1849:16:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5250,"type":"bytes4","value":"interfaceID"},"id":5260,"name":"Identifier","src":"1866:11:14"}],"id":5261,"name":"IndexAccess","src":"1849:29:14"}],"id":5262,"name":"VariableDeclarationStatement","src":"1827:51:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5256,"type":"address","value":"implementer"},"id":5263,"name":"Identifier","src":"1891:11:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5264,"name":"ElementaryTypeNameExpression","src":"1906:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5265,"name":"Literal","src":"1914:1:14"}],"id":5266,"name":"FunctionCall","src":"1906:10:14"}],"id":5267,"name":"BinaryOperation","src":"1891:25:14"},{"children":[{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5256,"type":"address","value":"implementer"},"id":5268,"name":"Identifier","src":"1939:11:14"}],"id":5269,"name":"Return","src":"1932:18:14"}],"id":5270,"name":"Block","src":"1918:43:14"}],"id":5271,"name":"IfStatement","src":"1888:73:14"},{"attributes":{"assignments":[5273]},"children":[{"attributes":{"constant":false,"name":"a","scope":5355,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5272,"name":"ElementaryTypeName","src":"1971:7:14"}],"id":5273,"name":"VariableDeclaration","src":"1971:9:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[4549,4604],"referencedDeclaration":4549,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":5274,"name":"Identifier","src":"1983:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5248,"type":"bytes32","value":"node"},"id":5275,"name":"Identifier","src":"1988:4:14"}],"id":5276,"name":"FunctionCall","src":"1983:10:14"}],"id":5277,"name":"VariableDeclarationStatement","src":"1971:22:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5273,"type":"address","value":"a"},"id":5278,"name":"Identifier","src":"2006:1:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5279,"name":"ElementaryTypeNameExpression","src":"2011:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5280,"name":"Literal","src":"2019:1:14"}],"id":5281,"name":"FunctionCall","src":"2011:10:14"}],"id":5282,"name":"BinaryOperation","src":"2006:15:14"},{"children":[{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5283,"name":"ElementaryTypeNameExpression","src":"2044:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5284,"name":"Literal","src":"2052:1:14"}],"id":5285,"name":"FunctionCall","src":"2044:10:14"}],"id":5286,"name":"Return","src":"2037:17:14"}],"id":5287,"name":"Block","src":"2023:42:14"}],"id":5288,"name":"IfStatement","src":"2003:62:14"},{"attributes":{"assignments":[5290,5292]},"children":[{"attributes":{"constant":false,"name":"success","scope":5355,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5289,"name":"ElementaryTypeName","src":"2076:4:14"}],"id":5290,"name":"VariableDeclaration","src":"2076:12:14"},{"attributes":{"constant":false,"name":"returnData","scope":5355,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5291,"name":"ElementaryTypeName","src":"2090:5:14"}],"id":5292,"name":"VariableDeclaration","src":"2090:23:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5273,"type":"address","value":"a"},"id":5293,"name":"Identifier","src":"2117:1:14"}],"id":5294,"name":"MemberAccess","src":"2117:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":5295,"name":"Identifier","src":"2130:3:14"}],"id":5296,"name":"MemberAccess","src":"2130:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5297,"name":"Literal","src":"2154:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5205,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5298,"name":"Identifier","src":"2183:17:14"}],"id":5299,"name":"FunctionCall","src":"2130:71:14"}],"id":5300,"name":"FunctionCall","src":"2117:85:14"}],"id":5301,"name":"VariableDeclarationStatement","src":"2075:127:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5290,"type":"bool","value":"success"},"id":5302,"name":"Identifier","src":"2216:7:14"}],"id":5303,"name":"UnaryOperation","src":"2215:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5304,"name":"Identifier","src":"2227:10:14"}],"id":5305,"name":"MemberAccess","src":"2227:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5306,"name":"Literal","src":"2247:2:14"}],"id":5307,"name":"BinaryOperation","src":"2227:22:14"}],"id":5308,"name":"BinaryOperation","src":"2215:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5309,"name":"Identifier","src":"2253:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5310,"name":"Literal","src":"2264:2:14"}],"id":5311,"name":"IndexAccess","src":"2253:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5312,"name":"Literal","src":"2271:1:14"}],"id":5313,"name":"BinaryOperation","src":"2253:19:14"}],"id":5314,"name":"BinaryOperation","src":"2215:57:14"},{"children":[{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5315,"name":"ElementaryTypeNameExpression","src":"2342:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5316,"name":"Literal","src":"2350:1:14"}],"id":5317,"name":"FunctionCall","src":"2342:10:14"}],"id":5318,"name":"Return","src":"2335:17:14"}],"id":5319,"name":"Block","src":"2274:89:14"}],"id":5320,"name":"IfStatement","src":"2212:151:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5290,"type":"bool","value":"success"},"id":5321,"name":"Identifier","src":"2374:7:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5322,"name":"Identifier","src":"2383:10:14"}],"id":5323,"name":"TupleExpression","src":"2373:21:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5273,"type":"address","value":"a"},"id":5324,"name":"Identifier","src":"2397:1:14"}],"id":5325,"name":"MemberAccess","src":"2397:12:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7028,"type":"abi","value":"abi"},"id":5326,"name":"Identifier","src":"2410:3:14"}],"id":5327,"name":"MemberAccess","src":"2410:23:14"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5328,"name":"Literal","src":"2434:27:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5250,"type":"bytes4","value":"interfaceID"},"id":5329,"name":"Identifier","src":"2463:11:14"}],"id":5330,"name":"FunctionCall","src":"2410:65:14"}],"id":5331,"name":"FunctionCall","src":"2397:79:14"}],"id":5332,"name":"Assignment","src":"2373:103:14"}],"id":5333,"name":"ExpressionStatement","src":"2373:103:14"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5290,"type":"bool","value":"success"},"id":5334,"name":"Identifier","src":"2490:7:14"}],"id":5335,"name":"UnaryOperation","src":"2489:8:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5336,"name":"Identifier","src":"2501:10:14"}],"id":5337,"name":"MemberAccess","src":"2501:17:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5338,"name":"Literal","src":"2521:2:14"}],"id":5339,"name":"BinaryOperation","src":"2501:22:14"}],"id":5340,"name":"BinaryOperation","src":"2489:34:14"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5292,"type":"bytes memory","value":"returnData"},"id":5341,"name":"Identifier","src":"2527:10:14"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5342,"name":"Literal","src":"2538:2:14"}],"id":5343,"name":"IndexAccess","src":"2527:14:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5344,"name":"Literal","src":"2545:1:14"}],"id":5345,"name":"BinaryOperation","src":"2527:19:14"}],"id":5346,"name":"BinaryOperation","src":"2489:57:14"},{"children":[{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5347,"name":"ElementaryTypeNameExpression","src":"2628:7:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5348,"name":"Literal","src":"2636:1:14"}],"id":5349,"name":"FunctionCall","src":"2628:10:14"}],"id":5350,"name":"Return","src":"2621:17:14"}],"id":5351,"name":"Block","src":"2548:101:14"}],"id":5352,"name":"IfStatement","src":"2486:163:14"},{"attributes":{"functionReturnParameters":5254},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5273,"type":"address","value":"a"},"id":5353,"name":"Identifier","src":"2666:1:14"}],"id":5354,"name":"Return","src":"2659:8:14"}],"id":5355,"name":"Block","src":"1817:857:14"}],"id":5356,"name":"FunctionDefinition","src":"1721:953:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5374,"stateMutability":"pure","superFunction":4625,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5373,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5357,"name":"ElementaryTypeName","src":"2707:6:14"}],"id":5358,"name":"VariableDeclaration","src":"2707:18:14"}],"id":5359,"name":"ParameterList","src":"2706:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5373,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5360,"name":"ElementaryTypeName","src":"2747:4:14"}],"id":5361,"name":"VariableDeclaration","src":"2747:4:14"}],"id":5362,"name":"ParameterList","src":"2746:6:14"},{"children":[{"attributes":{"functionReturnParameters":5362},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5358,"type":"bytes4","value":"interfaceID"},"id":5363,"name":"Identifier","src":"2770:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5202,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":5364,"name":"Identifier","src":"2785:22:14"}],"id":5365,"name":"BinaryOperation","src":"2770:37:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":4625,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7088,"type":"contract super InterfaceResolver","value":"super"},"id":5366,"name":"Identifier","src":"2811:5:14"}],"id":5367,"name":"MemberAccess","src":"2811:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5358,"type":"bytes4","value":"interfaceID"},"id":5368,"name":"Identifier","src":"2835:11:14"}],"id":5369,"name":"FunctionCall","src":"2811:36:14"}],"id":5370,"name":"BinaryOperation","src":"2770:77:14"}],"id":5371,"name":"Return","src":"2763:84:14"}],"id":5372,"name":"Block","src":"2753:101:14"}],"id":5373,"name":"FunctionDefinition","src":"2680:174:14"}],"id":5374,"name":"ContractDefinition","src":"85:2771:14"}],"id":5375,"name":"SourceUnit","src":"0:2857:14"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[5444]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5376,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5445,"symbolAliases":[null],"unitAlias":""},"id":5377,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5444,5687],"name":"NameResolver","scope":5445},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":5378,"name":"UserDefinedTypeName","src":"81:12:15"}],"id":5379,"name":"InheritanceSpecifier","src":"81:12:15"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":5444,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5380,"name":"ElementaryTypeName","src":"100:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":5381,"name":"Literal","src":"144:10:15"}],"id":5382,"name":"VariableDeclaration","src":"100:54:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5388,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5383,"name":"ElementaryTypeName","src":"179:7:15"}],"id":5384,"name":"VariableDeclaration","src":"179:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5388,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5385,"name":"ElementaryTypeName","src":"201:6:15"}],"id":5386,"name":"VariableDeclaration","src":"201:11:15"}],"id":5387,"name":"ParameterList","src":"178:35:15"}],"id":5388,"name":"EventDefinition","src":"161:53:15"},{"attributes":{"constant":false,"name":"names","scope":5444,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5389,"name":"ElementaryTypeName","src":"228:7:15"},{"attributes":{"name":"string","type":"string"},"id":5390,"name":"ElementaryTypeName","src":"237:6:15"}],"id":5391,"name":"Mapping","src":"220:24:15"}],"id":5392,"name":"VariableDeclaration","src":"220:30:15"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":5444,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5414,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5393,"name":"ElementaryTypeName","src":"509:7:15"}],"id":5394,"name":"VariableDeclaration","src":"509:12:15"},{"attributes":{"constant":false,"name":"name","scope":5414,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5395,"name":"ElementaryTypeName","src":"523:6:15"}],"id":5396,"name":"VariableDeclaration","src":"523:20:15"}],"id":5397,"name":"ParameterList","src":"508:36:15"},{"attributes":{"parameters":[null]},"children":[],"id":5401,"name":"ParameterList","src":"571:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5398,"name":"Identifier","src":"554:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"bytes32","value":"node"},"id":5399,"name":"Identifier","src":"565:4:15"}],"id":5400,"name":"ModifierInvocation","src":"554:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5402,"name":"Identifier","src":"581:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"bytes32","value":"node"},"id":5403,"name":"Identifier","src":"587:4:15"}],"id":5404,"name":"IndexAccess","src":"581:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5396,"type":"string calldata","value":"name"},"id":5405,"name":"Identifier","src":"595:4:15"}],"id":5406,"name":"Assignment","src":"581:18:15"}],"id":5407,"name":"ExpressionStatement","src":"581:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5388,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":5408,"name":"Identifier","src":"614:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5394,"type":"bytes32","value":"node"},"id":5409,"name":"Identifier","src":"626:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5396,"type":"string calldata","value":"name"},"id":5410,"name":"Identifier","src":"632:4:15"}],"id":5411,"name":"FunctionCall","src":"614:23:15"}],"id":5412,"name":"EmitStatement","src":"609:28:15"}],"id":5413,"name":"Block","src":"571:73:15"}],"id":5414,"name":"FunctionDefinition","src":"492:152:15"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":5444,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5426,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5415,"name":"ElementaryTypeName","src":"858:7:15"}],"id":5416,"name":"VariableDeclaration","src":"858:12:15"}],"id":5417,"name":"ParameterList","src":"857:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5426,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5418,"name":"ElementaryTypeName","src":"895:6:15"}],"id":5419,"name":"VariableDeclaration","src":"895:13:15"}],"id":5420,"name":"ParameterList","src":"894:15:15"},{"children":[{"attributes":{"functionReturnParameters":5420},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5421,"name":"Identifier","src":"927:5:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5416,"type":"bytes32","value":"node"},"id":5422,"name":"Identifier","src":"933:4:15"}],"id":5423,"name":"IndexAccess","src":"927:11:15"}],"id":5424,"name":"Return","src":"920:18:15"}],"id":5425,"name":"Block","src":"910:35:15"}],"id":5426,"name":"FunctionDefinition","src":"844:101:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5444,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5443,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5427,"name":"ElementaryTypeName","src":"978:6:15"}],"id":5428,"name":"VariableDeclaration","src":"978:18:15"}],"id":5429,"name":"ParameterList","src":"977:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5443,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5430,"name":"ElementaryTypeName","src":"1018:4:15"}],"id":5431,"name":"VariableDeclaration","src":"1018:4:15"}],"id":5432,"name":"ParameterList","src":"1017:6:15"},{"children":[{"attributes":{"functionReturnParameters":5432},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5428,"type":"bytes4","value":"interfaceID"},"id":5433,"name":"Identifier","src":"1041:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5382,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":5434,"name":"Identifier","src":"1056:17:15"}],"id":5435,"name":"BinaryOperation","src":"1041:32:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7090,"type":"contract super NameResolver","value":"super"},"id":5436,"name":"Identifier","src":"1077:5:15"}],"id":5437,"name":"MemberAccess","src":"1077:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5428,"type":"bytes4","value":"interfaceID"},"id":5438,"name":"Identifier","src":"1101:11:15"}],"id":5439,"name":"FunctionCall","src":"1077:36:15"}],"id":5440,"name":"BinaryOperation","src":"1041:72:15"}],"id":5441,"name":"Return","src":"1034:79:15"}],"id":5442,"name":"Block","src":"1024:96:15"}],"id":5443,"name":"FunctionDefinition","src":"951:169:15"}],"id":5444,"name":"ContractDefinition","src":"56:1066:15"}],"id":5445,"name":"SourceUnit","src":"0:1123:15"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[5535]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5446,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5536,"symbolAliases":[null],"unitAlias":""},"id":5447,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5535,5687],"name":"PubkeyResolver","scope":5536},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":5448,"name":"UserDefinedTypeName","src":"83:12:16"}],"id":5449,"name":"InheritanceSpecifier","src":"83:12:16"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":5535,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5450,"name":"ElementaryTypeName","src":"102:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":5451,"name":"Literal","src":"148:10:16"}],"id":5452,"name":"VariableDeclaration","src":"102:56:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5453,"name":"ElementaryTypeName","src":"185:7:16"}],"id":5454,"name":"VariableDeclaration","src":"185:20:16"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":5460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5455,"name":"ElementaryTypeName","src":"207:7:16"}],"id":5456,"name":"VariableDeclaration","src":"207:9:16"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":5460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5457,"name":"ElementaryTypeName","src":"218:7:16"}],"id":5458,"name":"VariableDeclaration","src":"218:9:16"}],"id":5459,"name":"ParameterList","src":"184:44:16"}],"id":5460,"name":"EventDefinition","src":"165:64:16"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":5535,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":5465,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5461,"name":"ElementaryTypeName","src":"262:7:16"}],"id":5462,"name":"VariableDeclaration","src":"262:9:16"},{"attributes":{"constant":false,"name":"y","scope":5465,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5463,"name":"ElementaryTypeName","src":"281:7:16"}],"id":5464,"name":"VariableDeclaration","src":"281:9:16"}],"id":5465,"name":"StructDefinition","src":"235:62:16"},{"attributes":{"constant":false,"name":"pubkeys","scope":5535,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5466,"name":"ElementaryTypeName","src":"311:7:16"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":5465,"type":"struct PubkeyResolver.PublicKey"},"id":5467,"name":"UserDefinedTypeName","src":"320:9:16"}],"id":5468,"name":"Mapping","src":"303:27:16"}],"id":5469,"name":"VariableDeclaration","src":"303:35:16"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":5535,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5497,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5470,"name":"ElementaryTypeName","src":"631:7:16"}],"id":5471,"name":"VariableDeclaration","src":"631:12:16"},{"attributes":{"constant":false,"name":"x","scope":5497,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5472,"name":"ElementaryTypeName","src":"645:7:16"}],"id":5473,"name":"VariableDeclaration","src":"645:9:16"},{"attributes":{"constant":false,"name":"y","scope":5497,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5474,"name":"ElementaryTypeName","src":"656:7:16"}],"id":5475,"name":"VariableDeclaration","src":"656:9:16"}],"id":5476,"name":"ParameterList","src":"630:36:16"},{"attributes":{"parameters":[null]},"children":[],"id":5480,"name":"ParameterList","src":"693:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5477,"name":"Identifier","src":"676:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5471,"type":"bytes32","value":"node"},"id":5478,"name":"Identifier","src":"687:4:16"}],"id":5479,"name":"ModifierInvocation","src":"676:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5469,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5481,"name":"Identifier","src":"703:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5471,"type":"bytes32","value":"node"},"id":5482,"name":"Identifier","src":"711:4:16"}],"id":5483,"name":"IndexAccess","src":"703:13:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5465,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":5484,"name":"Identifier","src":"719:9:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5473,"type":"bytes32","value":"x"},"id":5485,"name":"Identifier","src":"729:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5475,"type":"bytes32","value":"y"},"id":5486,"name":"Identifier","src":"732:1:16"}],"id":5487,"name":"FunctionCall","src":"719:15:16"}],"id":5488,"name":"Assignment","src":"703:31:16"}],"id":5489,"name":"ExpressionStatement","src":"703:31:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":5490,"name":"Identifier","src":"749:13:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5471,"type":"bytes32","value":"node"},"id":5491,"name":"Identifier","src":"763:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5473,"type":"bytes32","value":"x"},"id":5492,"name":"Identifier","src":"769:1:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5475,"type":"bytes32","value":"y"},"id":5493,"name":"Identifier","src":"772:1:16"}],"id":5494,"name":"FunctionCall","src":"749:25:16"}],"id":5495,"name":"EmitStatement","src":"744:30:16"}],"id":5496,"name":"Block","src":"693:88:16"}],"id":5497,"name":"FunctionDefinition","src":"612:169:16"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":5535,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5517,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5498,"name":"ElementaryTypeName","src":"1039:7:16"}],"id":5499,"name":"VariableDeclaration","src":"1039:12:16"}],"id":5500,"name":"ParameterList","src":"1038:14:16"},{"children":[{"attributes":{"constant":false,"name":"x","scope":5517,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5501,"name":"ElementaryTypeName","src":"1076:7:16"}],"id":5502,"name":"VariableDeclaration","src":"1076:9:16"},{"attributes":{"constant":false,"name":"y","scope":5517,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5503,"name":"ElementaryTypeName","src":"1087:7:16"}],"id":5504,"name":"VariableDeclaration","src":"1087:9:16"}],"id":5505,"name":"ParameterList","src":"1075:22:16"},{"children":[{"attributes":{"functionReturnParameters":5505},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":5462,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5469,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5506,"name":"Identifier","src":"1116:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5499,"type":"bytes32","value":"node"},"id":5507,"name":"Identifier","src":"1124:4:16"}],"id":5508,"name":"IndexAccess","src":"1116:13:16"}],"id":5509,"name":"MemberAccess","src":"1116:15:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":5464,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5469,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5510,"name":"Identifier","src":"1133:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5499,"type":"bytes32","value":"node"},"id":5511,"name":"Identifier","src":"1141:4:16"}],"id":5512,"name":"IndexAccess","src":"1133:13:16"}],"id":5513,"name":"MemberAccess","src":"1133:15:16"}],"id":5514,"name":"TupleExpression","src":"1115:34:16"}],"id":5515,"name":"Return","src":"1108:41:16"}],"id":5516,"name":"Block","src":"1098:58:16"}],"id":5517,"name":"FunctionDefinition","src":"1023:133:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5535,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5534,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5518,"name":"ElementaryTypeName","src":"1189:6:16"}],"id":5519,"name":"VariableDeclaration","src":"1189:18:16"}],"id":5520,"name":"ParameterList","src":"1188:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":5534,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5521,"name":"ElementaryTypeName","src":"1229:4:16"}],"id":5522,"name":"VariableDeclaration","src":"1229:4:16"}],"id":5523,"name":"ParameterList","src":"1228:6:16"},{"children":[{"attributes":{"functionReturnParameters":5523},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5519,"type":"bytes4","value":"interfaceID"},"id":5524,"name":"Identifier","src":"1252:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5452,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":5525,"name":"Identifier","src":"1267:19:16"}],"id":5526,"name":"BinaryOperation","src":"1252:34:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7092,"type":"contract super PubkeyResolver","value":"super"},"id":5527,"name":"Identifier","src":"1290:5:16"}],"id":5528,"name":"MemberAccess","src":"1290:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5519,"type":"bytes4","value":"interfaceID"},"id":5529,"name":"Identifier","src":"1314:11:16"}],"id":5530,"name":"FunctionCall","src":"1290:36:16"}],"id":5531,"name":"BinaryOperation","src":"1252:74:16"}],"id":5532,"name":"Return","src":"1245:81:16"}],"id":5533,"name":"Block","src":"1235:98:16"}],"id":5534,"name":"FunctionDefinition","src":"1162:171:16"}],"id":5535,"name":"ContractDefinition","src":"56:1279:16"}],"id":5536,"name":"SourceUnit","src":"0:1336:16"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[5618]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5537,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":5688,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5619,"symbolAliases":[null],"unitAlias":""},"id":5538,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[5687],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5618,5687],"name":"TextResolver","scope":5619},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":5687,"type":"contract ResolverBase"},"id":5539,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":5540,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":5618,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5541,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":5542,"name":"Literal","src":"144:10:17"}],"id":5543,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5551,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5544,"name":"ElementaryTypeName","src":"179:7:17"}],"id":5545,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":5551,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5546,"name":"ElementaryTypeName","src":"201:6:17"}],"id":5547,"name":"VariableDeclaration","src":"201:25:17"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":5551,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5548,"name":"ElementaryTypeName","src":"228:6:17"}],"id":5549,"name":"VariableDeclaration","src":"228:10:17"}],"id":5550,"name":"ParameterList","src":"178:61:17"}],"id":5551,"name":"EventDefinition","src":"161:79:17"},{"attributes":{"constant":false,"name":"texts","scope":5618,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5552,"name":"ElementaryTypeName","src":"254:7:17"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":5553,"name":"ElementaryTypeName","src":"271:6:17"},{"attributes":{"name":"string","type":"string"},"id":5554,"name":"ElementaryTypeName","src":"279:6:17"}],"id":5555,"name":"Mapping","src":"263:23:17"}],"id":5556,"name":"Mapping","src":"246:41:17"}],"id":5557,"name":"VariableDeclaration","src":"246:47:17"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":5618,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5584,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5558,"name":"ElementaryTypeName","src":"590:7:17"}],"id":5559,"name":"VariableDeclaration","src":"590:12:17"},{"attributes":{"constant":false,"name":"key","scope":5584,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5560,"name":"ElementaryTypeName","src":"604:6:17"}],"id":5561,"name":"VariableDeclaration","src":"604:19:17"},{"attributes":{"constant":false,"name":"value","scope":5584,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5562,"name":"ElementaryTypeName","src":"625:6:17"}],"id":5563,"name":"VariableDeclaration","src":"625:21:17"}],"id":5564,"name":"ParameterList","src":"589:58:17"},{"attributes":{"parameters":[null]},"children":[],"id":5568,"name":"ParameterList","src":"674:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"modifier (bytes32)","value":"authorised"},"id":5565,"name":"Identifier","src":"657:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5559,"type":"bytes32","value":"node"},"id":5566,"name":"Identifier","src":"668:4:17"}],"id":5567,"name":"ModifierInvocation","src":"657:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5557,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":5569,"name":"Identifier","src":"684:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5559,"type":"bytes32","value":"node"},"id":5570,"name":"Identifier","src":"690:4:17"}],"id":5572,"name":"IndexAccess","src":"684:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5561,"type":"string calldata","value":"key"},"id":5571,"name":"Identifier","src":"696:3:17"}],"id":5573,"name":"IndexAccess","src":"684:16:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5563,"type":"string calldata","value":"value"},"id":5574,"name":"Identifier","src":"703:5:17"}],"id":5575,"name":"Assignment","src":"684:24:17"}],"id":5576,"name":"ExpressionStatement","src":"684:24:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5551,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":5577,"name":"Identifier","src":"723:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5559,"type":"bytes32","value":"node"},"id":5578,"name":"Identifier","src":"735:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5561,"type":"string calldata","value":"key"},"id":5579,"name":"Identifier","src":"741:3:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5561,"type":"string calldata","value":"key"},"id":5580,"name":"Identifier","src":"746:3:17"}],"id":5581,"name":"FunctionCall","src":"723:27:17"}],"id":5582,"name":"EmitStatement","src":"718:32:17"}],"id":5583,"name":"Block","src":"674:83:17"}],"id":5584,"name":"FunctionDefinition","src":"573:184:17"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":5618,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5600,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5585,"name":"ElementaryTypeName","src":"988:7:17"}],"id":5586,"name":"VariableDeclaration","src":"988:12:17"},{"attributes":{"constant":false,"name":"key","scope":5600,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5587,"name":"ElementaryTypeName","src":"1002:6:17"}],"id":5588,"name":"VariableDeclaration","src":"1002:19:17"}],"id":5589,"name":"ParameterList","src":"987:35:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":5600,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5590,"name":"ElementaryTypeName","src":"1046:6:17"}],"id":5591,"name":"VariableDeclaration","src":"1046:13:17"}],"id":5592,"name":"ParameterList","src":"1045:15:17"},{"children":[{"attributes":{"functionReturnParameters":5592},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5557,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":5593,"name":"Identifier","src":"1078:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5586,"type":"bytes32","value":"node"},"id":5594,"name":"Identifier","src":"1084:4:17"}],"id":5595,"name":"IndexAccess","src":"1078:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5588,"type":"string calldata","value":"key"},"id":5596,"name":"Identifier","src":"1090:3:17"}],"id":5597,"name":"IndexAccess","src":"1078:16:17"}],"id":5598,"name":"Return","src":"1071:23:17"}],"id":5599,"name":"Block","src":"1061:40:17"}],"id":5600,"name":"FunctionDefinition","src":"974:127:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5618,"stateMutability":"pure","superFunction":5635,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5617,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5601,"name":"ElementaryTypeName","src":"1134:6:17"}],"id":5602,"name":"VariableDeclaration","src":"1134:18:17"}],"id":5603,"name":"ParameterList","src":"1133:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":5617,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5604,"name":"ElementaryTypeName","src":"1174:4:17"}],"id":5605,"name":"VariableDeclaration","src":"1174:4:17"}],"id":5606,"name":"ParameterList","src":"1173:6:17"},{"children":[{"attributes":{"functionReturnParameters":5606},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5602,"type":"bytes4","value":"interfaceID"},"id":5607,"name":"Identifier","src":"1197:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5543,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":5608,"name":"Identifier","src":"1212:17:17"}],"id":5609,"name":"BinaryOperation","src":"1197:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5635,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7094,"type":"contract super TextResolver","value":"super"},"id":5610,"name":"Identifier","src":"1233:5:17"}],"id":5611,"name":"MemberAccess","src":"1233:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5602,"type":"bytes4","value":"interfaceID"},"id":5612,"name":"Identifier","src":"1257:11:17"}],"id":5613,"name":"FunctionCall","src":"1233:36:17"}],"id":5614,"name":"BinaryOperation","src":"1197:72:17"}],"id":5615,"name":"Return","src":"1190:79:17"}],"id":5616,"name":"Block","src":"1180:96:17"}],"id":5617,"name":"FunctionDefinition","src":"1107:169:17"}],"id":5618,"name":"ContractDefinition","src":"56:1222:17"}],"id":5619,"name":"SourceUnit","src":"0:1278:17"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[2826]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":1122,"name":"PragmaDirective","src":"2574:23:18"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[2826],"name":"strings","scope":2827},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":2826,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":1127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1123,"name":"ElementaryTypeName","src":"2644:4:18"}],"id":1124,"name":"VariableDeclaration","src":"2644:9:18"},{"attributes":{"constant":false,"name":"_ptr","scope":1127,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1125,"name":"ElementaryTypeName","src":"2663:4:18"}],"id":1126,"name":"VariableDeclaration","src":"2663:9:18"}],"id":1127,"name":"StructDefinition","src":"2621:58:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":1167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1128,"name":"ElementaryTypeName","src":"2701:4:18"}],"id":1129,"name":"VariableDeclaration","src":"2701:9:18"},{"attributes":{"constant":false,"name":"src","scope":1167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1130,"name":"ElementaryTypeName","src":"2712:4:18"}],"id":1131,"name":"VariableDeclaration","src":"2712:8:18"},{"attributes":{"constant":false,"name":"len","scope":1167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1132,"name":"ElementaryTypeName","src":"2722:4:18"}],"id":1133,"name":"VariableDeclaration","src":"2722:8:18"}],"id":1134,"name":"ParameterList","src":"2700:31:18"},{"attributes":{"parameters":[null]},"children":[],"id":1135,"name":"ParameterList","src":"2745:0:18"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"len"},"id":1136,"name":"Identifier","src":"2811:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1137,"name":"Literal","src":"2818:2:18"}],"id":1138,"name":"BinaryOperation","src":"2811:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"len"},"id":1139,"name":"Identifier","src":"2822:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1140,"name":"Literal","src":"2829:2:18"}],"id":1141,"name":"Assignment","src":"2822:9:18"}],"id":1142,"name":"ExpressionStatement","src":"2822:9:18"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":1131,"isOffset":false,"isSlot":false,"src":"2893:3:18","valueSize":1}},{"dest":{"declaration":1129,"isOffset":false,"isSlot":false,"src":"2881:4:18","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":1143,"name":"InlineAssembly","src":"2847:65:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1129,"type":"uint256","value":"dest"},"id":1144,"name":"Identifier","src":"2925:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1145,"name":"Literal","src":"2933:2:18"}],"id":1146,"name":"Assignment","src":"2925:10:18"}],"id":1147,"name":"ExpressionStatement","src":"2925:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1131,"type":"uint256","value":"src"},"id":1148,"name":"Identifier","src":"2949:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1149,"name":"Literal","src":"2956:2:18"}],"id":1150,"name":"Assignment","src":"2949:9:18"}],"id":1151,"name":"ExpressionStatement","src":"2949:9:18"}],"id":1152,"name":"Block","src":"2833:136:18"}],"id":1153,"name":"ForStatement","src":"2805:164:18"},{"attributes":{"assignments":[1155]},"children":[{"attributes":{"constant":false,"name":"mask","scope":1166,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1154,"name":"ElementaryTypeName","src":"3011:4:18"}],"id":1155,"name":"VariableDeclaration","src":"3011:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":1156,"name":"Literal","src":"3023:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1157,"name":"Literal","src":"3031:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"len"},"id":1158,"name":"Identifier","src":"3036:3:18"}],"id":1159,"name":"BinaryOperation","src":"3031:8:18"}],"id":1160,"name":"TupleExpression","src":"3030:10:18"}],"id":1161,"name":"BinaryOperation","src":"3023:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1162,"name":"Literal","src":"3043:1:18"}],"id":1163,"name":"BinaryOperation","src":"3023:21:18"}],"id":1164,"name":"VariableDeclarationStatement","src":"3011:33:18"},{"attributes":{"externalReferences":[{"src":{"declaration":1131,"isOffset":false,"isSlot":false,"src":"3102:3:18","valueSize":1}},{"mask":{"declaration":1155,"isOffset":false,"isSlot":false,"src":"3112:4:18","valueSize":1}},{"dest":{"declaration":1129,"isOffset":false,"isSlot":false,"src":"3189:4:18","valueSize":1}},{"dest":{"declaration":1129,"isOffset":false,"isSlot":false,"src":"3157:4:18","valueSize":1}},{"mask":{"declaration":1155,"isOffset":false,"isSlot":false,"src":"3164:4:18","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":1165,"name":"InlineAssembly","src":"3054:173:18"}],"id":1166,"name":"Block","src":"2745:488:18"}],"id":1167,"name":"FunctionDefinition","src":"2685:548:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1187,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1168,"name":"ElementaryTypeName","src":"3450:6:18"}],"id":1169,"name":"VariableDeclaration","src":"3450:18:18"}],"id":1170,"name":"ParameterList","src":"3449:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1187,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1171,"name":"UserDefinedTypeName","src":"3493:5:18"}],"id":1172,"name":"VariableDeclaration","src":"3493:12:18"}],"id":1173,"name":"ParameterList","src":"3492:14:18"},{"children":[{"attributes":{"assignments":[1175],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":1186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1174,"name":"ElementaryTypeName","src":"3517:4:18"}],"id":1175,"name":"VariableDeclaration","src":"3517:8:18"}],"id":1176,"name":"VariableDeclarationStatement","src":"3517:8:18"},{"attributes":{"externalReferences":[{"ptr":{"declaration":1175,"isOffset":false,"isSlot":false,"src":"3558:3:18","valueSize":1}},{"self":{"declaration":1169,"isOffset":false,"isSlot":false,"src":"3569:4:18","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":1177,"name":"InlineAssembly","src":"3535:55:18"},{"attributes":{"functionReturnParameters":1173},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1127,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":1178,"name":"Identifier","src":"3606:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":1179,"name":"ElementaryTypeNameExpression","src":"3612:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1169,"type":"string memory","value":"self"},"id":1180,"name":"Identifier","src":"3618:4:18"}],"id":1181,"name":"FunctionCall","src":"3612:11:18"}],"id":1182,"name":"MemberAccess","src":"3612:18:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1175,"type":"uint256","value":"ptr"},"id":1183,"name":"Identifier","src":"3632:3:18"}],"id":1184,"name":"FunctionCall","src":"3606:30:18"}],"id":1185,"name":"Return","src":"3599:37:18"}],"id":1186,"name":"Block","src":"3507:136:18"}],"id":1187,"name":"FunctionDefinition","src":"3433:210:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1313,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1188,"name":"ElementaryTypeName","src":"3852:7:18"}],"id":1189,"name":"VariableDeclaration","src":"3852:12:18"}],"id":1190,"name":"ParameterList","src":"3851:14:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1313,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1191,"name":"ElementaryTypeName","src":"3889:4:18"}],"id":1192,"name":"VariableDeclaration","src":"3889:4:18"}],"id":1193,"name":"ParameterList","src":"3888:6:18"},{"children":[{"attributes":{"assignments":[1195],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":1312,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1194,"name":"ElementaryTypeName","src":"3905:4:18"}],"id":1195,"name":"VariableDeclaration","src":"3905:8:18"}],"id":1196,"name":"VariableDeclarationStatement","src":"3905:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1197,"name":"Identifier","src":"3927:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1198,"name":"Literal","src":"3935:1:18"}],"id":1199,"name":"BinaryOperation","src":"3927:9:18"},{"attributes":{"functionReturnParameters":1193},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1200,"name":"Literal","src":"3957:1:18"}],"id":1201,"name":"Return","src":"3950:8:18"}],"id":1202,"name":"IfStatement","src":"3923:35:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1203,"name":"ElementaryTypeNameExpression","src":"3972:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1204,"name":"Identifier","src":"3977:4:18"}],"id":1205,"name":"FunctionCall","src":"3972:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":1206,"name":"Literal","src":"3985:34:18"}],"id":1207,"name":"BinaryOperation","src":"3972:47:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1208,"name":"Literal","src":"4023:1:18"}],"id":1209,"name":"BinaryOperation","src":"3972:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1210,"name":"Identifier","src":"4040:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":1211,"name":"Literal","src":"4047:2:18"}],"id":1212,"name":"Assignment","src":"4040:9:18"}],"id":1213,"name":"ExpressionStatement","src":"4040:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1214,"name":"Identifier","src":"4063:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":1215,"name":"ElementaryTypeNameExpression","src":"4070:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1216,"name":"ElementaryTypeNameExpression","src":"4078:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1217,"name":"Identifier","src":"4083:4:18"}],"id":1218,"name":"FunctionCall","src":"4078:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":1219,"name":"Literal","src":"4091:35:18"}],"id":1220,"name":"BinaryOperation","src":"4078:48:18"}],"id":1221,"name":"FunctionCall","src":"4070:57:18"}],"id":1222,"name":"Assignment","src":"4063:64:18"}],"id":1223,"name":"ExpressionStatement","src":"4063:64:18"}],"id":1224,"name":"Block","src":"4026:112:18"}],"id":1225,"name":"IfStatement","src":"3968:170:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1226,"name":"ElementaryTypeNameExpression","src":"4151:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1227,"name":"Identifier","src":"4156:4:18"}],"id":1228,"name":"FunctionCall","src":"4151:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":1229,"name":"Literal","src":"4164:18:18"}],"id":1230,"name":"BinaryOperation","src":"4151:31:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1231,"name":"Literal","src":"4186:1:18"}],"id":1232,"name":"BinaryOperation","src":"4151:36:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1233,"name":"Identifier","src":"4203:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":1234,"name":"Literal","src":"4210:1:18"}],"id":1235,"name":"Assignment","src":"4203:8:18"}],"id":1236,"name":"ExpressionStatement","src":"4203:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1237,"name":"Identifier","src":"4225:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":1238,"name":"ElementaryTypeNameExpression","src":"4232:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1239,"name":"ElementaryTypeNameExpression","src":"4240:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1240,"name":"Identifier","src":"4245:4:18"}],"id":1241,"name":"FunctionCall","src":"4240:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":1242,"name":"Literal","src":"4253:19:18"}],"id":1243,"name":"BinaryOperation","src":"4240:32:18"}],"id":1244,"name":"FunctionCall","src":"4232:41:18"}],"id":1245,"name":"Assignment","src":"4225:48:18"}],"id":1246,"name":"ExpressionStatement","src":"4225:48:18"}],"id":1247,"name":"Block","src":"4189:95:18"}],"id":1248,"name":"IfStatement","src":"4147:137:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1249,"name":"ElementaryTypeNameExpression","src":"4297:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1250,"name":"Identifier","src":"4302:4:18"}],"id":1251,"name":"FunctionCall","src":"4297:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":1252,"name":"Literal","src":"4310:10:18"}],"id":1253,"name":"BinaryOperation","src":"4297:23:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1254,"name":"Literal","src":"4324:1:18"}],"id":1255,"name":"BinaryOperation","src":"4297:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1256,"name":"Identifier","src":"4341:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1257,"name":"Literal","src":"4348:1:18"}],"id":1258,"name":"Assignment","src":"4341:8:18"}],"id":1259,"name":"ExpressionStatement","src":"4341:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1260,"name":"Identifier","src":"4363:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":1261,"name":"ElementaryTypeNameExpression","src":"4370:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1262,"name":"ElementaryTypeNameExpression","src":"4378:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1263,"name":"Identifier","src":"4383:4:18"}],"id":1264,"name":"FunctionCall","src":"4378:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":1265,"name":"Literal","src":"4391:11:18"}],"id":1266,"name":"BinaryOperation","src":"4378:24:18"}],"id":1267,"name":"FunctionCall","src":"4370:33:18"}],"id":1268,"name":"Assignment","src":"4363:40:18"}],"id":1269,"name":"ExpressionStatement","src":"4363:40:18"}],"id":1270,"name":"Block","src":"4327:87:18"}],"id":1271,"name":"IfStatement","src":"4293:121:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1272,"name":"ElementaryTypeNameExpression","src":"4427:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1273,"name":"Identifier","src":"4432:4:18"}],"id":1274,"name":"FunctionCall","src":"4427:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":1275,"name":"Literal","src":"4440:6:18"}],"id":1276,"name":"BinaryOperation","src":"4427:19:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1277,"name":"Literal","src":"4450:1:18"}],"id":1278,"name":"BinaryOperation","src":"4427:24:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1279,"name":"Identifier","src":"4467:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1280,"name":"Literal","src":"4474:1:18"}],"id":1281,"name":"Assignment","src":"4467:8:18"}],"id":1282,"name":"ExpressionStatement","src":"4467:8:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1283,"name":"Identifier","src":"4489:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":1284,"name":"ElementaryTypeNameExpression","src":"4496:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1285,"name":"ElementaryTypeNameExpression","src":"4504:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1286,"name":"Identifier","src":"4509:4:18"}],"id":1287,"name":"FunctionCall","src":"4504:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":1288,"name":"Literal","src":"4517:7:18"}],"id":1289,"name":"BinaryOperation","src":"4504:20:18"}],"id":1290,"name":"FunctionCall","src":"4496:29:18"}],"id":1291,"name":"Assignment","src":"4489:36:18"}],"id":1292,"name":"ExpressionStatement","src":"4489:36:18"}],"id":1293,"name":"Block","src":"4453:83:18"}],"id":1294,"name":"IfStatement","src":"4423:113:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":1295,"name":"ElementaryTypeNameExpression","src":"4549:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1189,"type":"bytes32","value":"self"},"id":1296,"name":"Identifier","src":"4554:4:18"}],"id":1297,"name":"FunctionCall","src":"4549:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":1298,"name":"Literal","src":"4562:4:18"}],"id":1299,"name":"BinaryOperation","src":"4549:17:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1300,"name":"Literal","src":"4570:1:18"}],"id":1301,"name":"BinaryOperation","src":"4549:22:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1302,"name":"Identifier","src":"4587:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1303,"name":"Literal","src":"4594:1:18"}],"id":1304,"name":"Assignment","src":"4587:8:18"}],"id":1305,"name":"ExpressionStatement","src":"4587:8:18"}],"id":1306,"name":"Block","src":"4573:33:18"}],"id":1307,"name":"IfStatement","src":"4545:61:18"},{"attributes":{"functionReturnParameters":1193},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1308,"name":"Literal","src":"4622:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1195,"type":"uint256","value":"ret"},"id":1309,"name":"Identifier","src":"4627:3:18"}],"id":1310,"name":"BinaryOperation","src":"4622:8:18"}],"id":1311,"name":"Return","src":"4615:15:18"}],"id":1312,"name":"Block","src":"3895:742:18"}],"id":1313,"name":"FunctionDefinition","src":"3839:798:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1330,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1314,"name":"ElementaryTypeName","src":"4963:7:18"}],"id":1315,"name":"VariableDeclaration","src":"4963:12:18"}],"id":1316,"name":"ParameterList","src":"4962:14:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":1330,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1317,"name":"UserDefinedTypeName","src":"5000:5:18"}],"id":1318,"name":"VariableDeclaration","src":"5000:16:18"}],"id":1319,"name":"ParameterList","src":"4999:18:18"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":1315,"isOffset":false,"isSlot":false,"src":"5222:4:18","valueSize":1}},{"ret":{"declaration":1318,"isOffset":false,"isSlot":false,"src":"5251:3:18","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":1320,"name":"InlineAssembly","src":"5111:166:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1318,"type":"struct strings.slice memory","value":"ret"},"id":1321,"name":"Identifier","src":"5286:3:18"}],"id":1323,"name":"MemberAccess","src":"5286:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[1313,1463],"referencedDeclaration":1313,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":1324,"name":"Identifier","src":"5297:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1315,"type":"bytes32","value":"self"},"id":1325,"name":"Identifier","src":"5301:4:18"}],"id":1326,"name":"FunctionCall","src":"5297:9:18"}],"id":1327,"name":"Assignment","src":"5286:20:18"}],"id":1328,"name":"ExpressionStatement","src":"5286:20:18"}],"id":1329,"name":"Block","src":"5018:295:18"}],"id":1330,"name":"FunctionDefinition","src":"4943:370:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1345,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1331,"name":"UserDefinedTypeName","src":"5528:5:18"}],"id":1332,"name":"VariableDeclaration","src":"5528:17:18"}],"id":1333,"name":"ParameterList","src":"5527:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1345,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1334,"name":"UserDefinedTypeName","src":"5570:5:18"}],"id":1335,"name":"VariableDeclaration","src":"5570:12:18"}],"id":1336,"name":"ParameterList","src":"5569:14:18"},{"children":[{"attributes":{"functionReturnParameters":1336},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1127,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":1337,"name":"Identifier","src":"5601:5:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1332,"type":"struct strings.slice memory","value":"self"},"id":1338,"name":"Identifier","src":"5607:4:18"}],"id":1339,"name":"MemberAccess","src":"5607:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1332,"type":"struct strings.slice memory","value":"self"},"id":1340,"name":"Identifier","src":"5618:4:18"}],"id":1341,"name":"MemberAccess","src":"5618:9:18"}],"id":1342,"name":"FunctionCall","src":"5601:27:18"}],"id":1343,"name":"Return","src":"5594:34:18"}],"id":1344,"name":"Block","src":"5584:51:18"}],"id":1345,"name":"FunctionDefinition","src":"5514:121:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1375,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1346,"name":"UserDefinedTypeName","src":"5825:5:18"}],"id":1347,"name":"VariableDeclaration","src":"5825:17:18"}],"id":1348,"name":"ParameterList","src":"5824:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1375,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1349,"name":"ElementaryTypeName","src":"5867:6:18"}],"id":1350,"name":"VariableDeclaration","src":"5867:13:18"}],"id":1351,"name":"ParameterList","src":"5866:15:18"},{"children":[{"attributes":{"assignments":[1353]},"children":[{"attributes":{"constant":false,"name":"ret","scope":1374,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":1352,"name":"ElementaryTypeName","src":"5892:6:18"}],"id":1353,"name":"VariableDeclaration","src":"5892:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":1354,"name":"ElementaryTypeName","src":"5916:6:18"}],"id":1355,"name":"NewExpression","src":"5912:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1347,"type":"struct strings.slice memory","value":"self"},"id":1356,"name":"Identifier","src":"5923:4:18"}],"id":1357,"name":"MemberAccess","src":"5923:9:18"}],"id":1358,"name":"FunctionCall","src":"5912:21:18"}],"id":1359,"name":"VariableDeclarationStatement","src":"5892:41:18"},{"attributes":{"assignments":[1361],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":1374,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1360,"name":"ElementaryTypeName","src":"5943:4:18"}],"id":1361,"name":"VariableDeclaration","src":"5943:11:18"}],"id":1362,"name":"VariableDeclarationStatement","src":"5943:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":1361,"isOffset":false,"isSlot":false,"src":"5975:6:18","valueSize":1}},{"ret":{"declaration":1353,"isOffset":false,"isSlot":false,"src":"5989:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":1363,"name":"InlineAssembly","src":"5964:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":1364,"name":"Identifier","src":"6009:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1361,"type":"uint256","value":"retptr"},"id":1365,"name":"Identifier","src":"6016:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1347,"type":"struct strings.slice memory","value":"self"},"id":1366,"name":"Identifier","src":"6024:4:18"}],"id":1367,"name":"MemberAccess","src":"6024:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1347,"type":"struct strings.slice memory","value":"self"},"id":1368,"name":"Identifier","src":"6035:4:18"}],"id":1369,"name":"MemberAccess","src":"6035:9:18"}],"id":1370,"name":"FunctionCall","src":"6009:36:18"}],"id":1371,"name":"ExpressionStatement","src":"6009:36:18"},{"attributes":{"functionReturnParameters":1351},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1353,"type":"string memory","value":"ret"},"id":1372,"name":"Identifier","src":"6062:3:18"}],"id":1373,"name":"Return","src":"6055:10:18"}],"id":1374,"name":"Block","src":"5882:190:18"}],"id":1375,"name":"FunctionDefinition","src":"5807:265:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1463,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1376,"name":"UserDefinedTypeName","src":"6476:5:18"}],"id":1377,"name":"VariableDeclaration","src":"6476:17:18"}],"id":1378,"name":"ParameterList","src":"6475:19:18"},{"children":[{"attributes":{"constant":false,"name":"l","scope":1463,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1379,"name":"ElementaryTypeName","src":"6518:4:18"}],"id":1380,"name":"VariableDeclaration","src":"6518:6:18"}],"id":1381,"name":"ParameterList","src":"6517:8:18"},{"children":[{"attributes":{"assignments":[1383]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":1462,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1382,"name":"ElementaryTypeName","src":"6611:4:18"}],"id":1383,"name":"VariableDeclaration","src":"6611:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1377,"type":"struct strings.slice memory","value":"self"},"id":1384,"name":"Identifier","src":"6622:4:18"}],"id":1385,"name":"MemberAccess","src":"6622:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":1386,"name":"Literal","src":"6634:2:18"}],"id":1387,"name":"BinaryOperation","src":"6622:14:18"}],"id":1388,"name":"VariableDeclarationStatement","src":"6611:25:18"},{"attributes":{"assignments":[1390]},"children":[{"attributes":{"constant":false,"name":"end","scope":1462,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1389,"name":"ElementaryTypeName","src":"6646:4:18"}],"id":1390,"name":"VariableDeclaration","src":"6646:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1391,"name":"Identifier","src":"6657:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1377,"type":"struct strings.slice memory","value":"self"},"id":1392,"name":"Identifier","src":"6663:4:18"}],"id":1393,"name":"MemberAccess","src":"6663:9:18"}],"id":1394,"name":"BinaryOperation","src":"6657:15:18"}],"id":1395,"name":"VariableDeclarationStatement","src":"6646:26:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"uint256","value":"l"},"id":1396,"name":"Identifier","src":"6687:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1397,"name":"Literal","src":"6691:1:18"}],"id":1398,"name":"Assignment","src":"6687:5:18"}],"id":1399,"name":"ExpressionStatement","src":"6687:5:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1400,"name":"Identifier","src":"6694:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1390,"type":"uint256","value":"end"},"id":1401,"name":"Identifier","src":"6700:3:18"}],"id":1402,"name":"BinaryOperation","src":"6694:9:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1380,"type":"uint256","value":"l"},"id":1403,"name":"Identifier","src":"6705:1:18"}],"id":1404,"name":"UnaryOperation","src":"6705:3:18"}],"id":1405,"name":"ExpressionStatement","src":"6705:3:18"},{"children":[{"attributes":{"assignments":[1407],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":1460,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":1406,"name":"ElementaryTypeName","src":"6724:5:18"}],"id":1407,"name":"VariableDeclaration","src":"6724:7:18"}],"id":1408,"name":"VariableDeclarationStatement","src":"6724:7:18"},{"attributes":{"externalReferences":[{"b":{"declaration":1407,"isOffset":false,"isSlot":false,"src":"6756:1:18","valueSize":1}},{"ptr":{"declaration":1383,"isOffset":false,"isSlot":false,"src":"6771:3:18","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":1409,"name":"InlineAssembly","src":"6745:39:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1410,"name":"Identifier","src":"6801:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":1411,"name":"Literal","src":"6805:4:18"}],"id":1412,"name":"BinaryOperation","src":"6801:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1413,"name":"Identifier","src":"6829:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1414,"name":"Literal","src":"6836:1:18"}],"id":1415,"name":"Assignment","src":"6829:8:18"}],"id":1416,"name":"ExpressionStatement","src":"6829:8:18"}],"id":1417,"name":"Block","src":"6811:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1418,"name":"Identifier","src":"6862:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":1419,"name":"Literal","src":"6866:4:18"}],"id":1420,"name":"BinaryOperation","src":"6862:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1421,"name":"Identifier","src":"6890:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1422,"name":"Literal","src":"6897:1:18"}],"id":1423,"name":"Assignment","src":"6890:8:18"}],"id":1424,"name":"ExpressionStatement","src":"6890:8:18"}],"id":1425,"name":"Block","src":"6872:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1426,"name":"Identifier","src":"6923:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":1427,"name":"Literal","src":"6927:4:18"}],"id":1428,"name":"BinaryOperation","src":"6923:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1429,"name":"Identifier","src":"6951:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1430,"name":"Literal","src":"6958:1:18"}],"id":1431,"name":"Assignment","src":"6951:8:18"}],"id":1432,"name":"ExpressionStatement","src":"6951:8:18"}],"id":1433,"name":"Block","src":"6933:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1434,"name":"Identifier","src":"6984:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":1435,"name":"Literal","src":"6988:4:18"}],"id":1436,"name":"BinaryOperation","src":"6984:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1437,"name":"Identifier","src":"7012:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1438,"name":"Literal","src":"7019:1:18"}],"id":1439,"name":"Assignment","src":"7012:8:18"}],"id":1440,"name":"ExpressionStatement","src":"7012:8:18"}],"id":1441,"name":"Block","src":"6994:41:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1407,"type":"uint8","value":"b"},"id":1442,"name":"Identifier","src":"7045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":1443,"name":"Literal","src":"7049:4:18"}],"id":1444,"name":"BinaryOperation","src":"7045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1445,"name":"Identifier","src":"7073:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":1446,"name":"Literal","src":"7080:1:18"}],"id":1447,"name":"Assignment","src":"7073:8:18"}],"id":1448,"name":"ExpressionStatement","src":"7073:8:18"}],"id":1449,"name":"Block","src":"7055:41:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"uint256","value":"ptr"},"id":1450,"name":"Identifier","src":"7120:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":1451,"name":"Literal","src":"7127:1:18"}],"id":1452,"name":"Assignment","src":"7120:8:18"}],"id":1453,"name":"ExpressionStatement","src":"7120:8:18"}],"id":1454,"name":"Block","src":"7102:41:18"}],"id":1455,"name":"IfStatement","src":"7041:102:18"}],"id":1456,"name":"IfStatement","src":"6980:163:18"}],"id":1457,"name":"IfStatement","src":"6919:224:18"}],"id":1458,"name":"IfStatement","src":"6858:285:18"}],"id":1459,"name":"IfStatement","src":"6797:346:18"}],"id":1460,"name":"Block","src":"6710:443:18"}],"id":1461,"name":"ForStatement","src":"6682:471:18"}],"id":1462,"name":"Block","src":"6526:633:18"}],"id":1463,"name":"FunctionDefinition","src":"6463:696:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1476,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1464,"name":"UserDefinedTypeName","src":"7367:5:18"}],"id":1465,"name":"VariableDeclaration","src":"7367:17:18"}],"id":1466,"name":"ParameterList","src":"7366:19:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1476,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1467,"name":"ElementaryTypeName","src":"7409:4:18"}],"id":1468,"name":"VariableDeclaration","src":"7409:4:18"}],"id":1469,"name":"ParameterList","src":"7408:6:18"},{"children":[{"attributes":{"functionReturnParameters":1469},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"struct strings.slice memory","value":"self"},"id":1470,"name":"Identifier","src":"7432:4:18"}],"id":1471,"name":"MemberAccess","src":"7432:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1472,"name":"Literal","src":"7445:1:18"}],"id":1473,"name":"BinaryOperation","src":"7432:14:18"}],"id":1474,"name":"Return","src":"7425:21:18"}],"id":1475,"name":"Block","src":"7415:38:18"}],"id":1476,"name":"FunctionDefinition","src":"7352:101:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1605,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1477,"name":"UserDefinedTypeName","src":"7898:5:18"}],"id":1478,"name":"VariableDeclaration","src":"7898:17:18"},{"attributes":{"constant":false,"name":"other","scope":1605,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1479,"name":"UserDefinedTypeName","src":"7917:5:18"}],"id":1480,"name":"VariableDeclaration","src":"7917:18:18"}],"id":1481,"name":"ParameterList","src":"7897:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1605,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":1482,"name":"ElementaryTypeName","src":"7960:3:18"}],"id":1483,"name":"VariableDeclaration","src":"7960:3:18"}],"id":1484,"name":"ParameterList","src":"7959:5:18"},{"children":[{"attributes":{"assignments":[1486]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":1604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1485,"name":"ElementaryTypeName","src":"7975:4:18"}],"id":1486,"name":"VariableDeclaration","src":"7975:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1478,"type":"struct strings.slice memory","value":"self"},"id":1487,"name":"Identifier","src":"7991:4:18"}],"id":1488,"name":"MemberAccess","src":"7991:9:18"}],"id":1489,"name":"VariableDeclarationStatement","src":"7975:25:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1480,"type":"struct strings.slice memory","value":"other"},"id":1490,"name":"Identifier","src":"8014:5:18"}],"id":1491,"name":"MemberAccess","src":"8014:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1478,"type":"struct strings.slice memory","value":"self"},"id":1492,"name":"Identifier","src":"8027:4:18"}],"id":1493,"name":"MemberAccess","src":"8027:9:18"}],"id":1494,"name":"BinaryOperation","src":"8014:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"uint256","value":"shortest"},"id":1495,"name":"Identifier","src":"8050:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1480,"type":"struct strings.slice memory","value":"other"},"id":1496,"name":"Identifier","src":"8061:5:18"}],"id":1497,"name":"MemberAccess","src":"8061:10:18"}],"id":1498,"name":"Assignment","src":"8050:21:18"}],"id":1499,"name":"ExpressionStatement","src":"8050:21:18"}],"id":1500,"name":"IfStatement","src":"8010:61:18"},{"attributes":{"assignments":[1502]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":1604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1501,"name":"ElementaryTypeName","src":"8082:4:18"}],"id":1502,"name":"VariableDeclaration","src":"8082:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1478,"type":"struct strings.slice memory","value":"self"},"id":1503,"name":"Identifier","src":"8097:4:18"}],"id":1504,"name":"MemberAccess","src":"8097:9:18"}],"id":1505,"name":"VariableDeclarationStatement","src":"8082:24:18"},{"attributes":{"assignments":[1507]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":1604,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1506,"name":"ElementaryTypeName","src":"8116:4:18"}],"id":1507,"name":"VariableDeclaration","src":"8116:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1480,"type":"struct strings.slice memory","value":"other"},"id":1508,"name":"Identifier","src":"8132:5:18"}],"id":1509,"name":"MemberAccess","src":"8132:10:18"}],"id":1510,"name":"VariableDeclarationStatement","src":"8116:26:18"},{"children":[{"attributes":{"assignments":[1512]},"children":[{"attributes":{"constant":false,"name":"idx","scope":1593,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1511,"name":"ElementaryTypeName","src":"8157:4:18"}],"id":1512,"name":"VariableDeclaration","src":"8157:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1513,"name":"Literal","src":"8168:1:18"}],"id":1514,"name":"VariableDeclarationStatement","src":"8157:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1512,"type":"uint256","value":"idx"},"id":1515,"name":"Identifier","src":"8171:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"uint256","value":"shortest"},"id":1516,"name":"Identifier","src":"8177:8:18"}],"id":1517,"name":"BinaryOperation","src":"8171:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1512,"type":"uint256","value":"idx"},"id":1518,"name":"Identifier","src":"8187:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1519,"name":"Literal","src":"8194:2:18"}],"id":1520,"name":"Assignment","src":"8187:9:18"}],"id":1521,"name":"ExpressionStatement","src":"8187:9:18"},{"children":[{"attributes":{"assignments":[1523],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":1592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1522,"name":"ElementaryTypeName","src":"8212:4:18"}],"id":1523,"name":"VariableDeclaration","src":"8212:6:18"}],"id":1524,"name":"VariableDeclarationStatement","src":"8212:6:18"},{"attributes":{"assignments":[1526],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":1592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1525,"name":"ElementaryTypeName","src":"8232:4:18"}],"id":1526,"name":"VariableDeclaration","src":"8232:6:18"}],"id":1527,"name":"VariableDeclarationStatement","src":"8232:6:18"},{"attributes":{"externalReferences":[{"a":{"declaration":1523,"isOffset":false,"isSlot":false,"src":"8279:1:18","valueSize":1}},{"selfptr":{"declaration":1502,"isOffset":false,"isSlot":false,"src":"8290:7:18","valueSize":1}},{"b":{"declaration":1526,"isOffset":false,"isSlot":false,"src":"8315:1:18","valueSize":1}},{"otherptr":{"declaration":1507,"isOffset":false,"isSlot":false,"src":"8326:8:18","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":1528,"name":"InlineAssembly","src":"8252:97:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1523,"type":"uint256","value":"a"},"id":1529,"name":"Identifier","src":"8366:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1526,"type":"uint256","value":"b"},"id":1530,"name":"Identifier","src":"8371:1:18"}],"id":1531,"name":"BinaryOperation","src":"8366:6:18"},{"children":[{"attributes":{"assignments":[1533]},"children":[{"attributes":{"constant":false,"name":"mask","scope":1582,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1532,"name":"ElementaryTypeName","src":"8453:7:18"}],"id":1533,"name":"VariableDeclaration","src":"8453:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":1534,"name":"ElementaryTypeNameExpression","src":"8468:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1535,"name":"Literal","src":"8477:1:18"}],"id":1536,"name":"UnaryOperation","src":"8476:2:18"}],"id":1537,"name":"FunctionCall","src":"8468:11:18"}],"id":1538,"name":"VariableDeclarationStatement","src":"8453:26:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"uint256","value":"shortest"},"id":1539,"name":"Identifier","src":"8514:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1540,"name":"Literal","src":"8525:2:18"}],"id":1541,"name":"BinaryOperation","src":"8514:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1533,"type":"uint256","value":"mask"},"id":1542,"name":"Identifier","src":"8551:4:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1543,"name":"Literal","src":"8560:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":1544,"name":"Literal","src":"8566:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1545,"name":"Literal","src":"8571:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1486,"type":"uint256","value":"shortest"},"id":1546,"name":"Identifier","src":"8576:8:18"}],"id":1547,"name":"BinaryOperation","src":"8571:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1512,"type":"uint256","value":"idx"},"id":1548,"name":"Identifier","src":"8587:3:18"}],"id":1549,"name":"BinaryOperation","src":"8571:19:18"}],"id":1550,"name":"TupleExpression","src":"8570:21:18"}],"id":1551,"name":"BinaryOperation","src":"8566:25:18"}],"id":1552,"name":"TupleExpression","src":"8565:27:18"}],"id":1553,"name":"BinaryOperation","src":"8560:32:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1554,"name":"Literal","src":"8595:1:18"}],"id":1555,"name":"BinaryOperation","src":"8560:36:18"}],"id":1556,"name":"TupleExpression","src":"8559:38:18"}],"id":1557,"name":"UnaryOperation","src":"8558:39:18"}],"id":1558,"name":"Assignment","src":"8551:46:18"}],"id":1559,"name":"ExpressionStatement","src":"8551:46:18"}],"id":1560,"name":"Block","src":"8529:87:18"}],"id":1561,"name":"IfStatement","src":"8510:106:18"},{"attributes":{"assignments":[1563]},"children":[{"attributes":{"constant":false,"name":"diff","scope":1582,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1562,"name":"ElementaryTypeName","src":"8633:7:18"}],"id":1563,"name":"VariableDeclaration","src":"8633:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1523,"type":"uint256","value":"a"},"id":1564,"name":"Identifier","src":"8649:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1533,"type":"uint256","value":"mask"},"id":1565,"name":"Identifier","src":"8653:4:18"}],"id":1566,"name":"BinaryOperation","src":"8649:8:18"}],"id":1567,"name":"TupleExpression","src":"8648:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1526,"type":"uint256","value":"b"},"id":1568,"name":"Identifier","src":"8662:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1533,"type":"uint256","value":"mask"},"id":1569,"name":"Identifier","src":"8666:4:18"}],"id":1570,"name":"BinaryOperation","src":"8662:8:18"}],"id":1571,"name":"TupleExpression","src":"8661:10:18"}],"id":1572,"name":"BinaryOperation","src":"8648:23:18"}],"id":1573,"name":"VariableDeclarationStatement","src":"8633:38:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1563,"type":"uint256","value":"diff"},"id":1574,"name":"Identifier","src":"8693:4:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1575,"name":"Literal","src":"8701:1:18"}],"id":1576,"name":"BinaryOperation","src":"8693:9:18"},{"attributes":{"functionReturnParameters":1484},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":1577,"name":"ElementaryTypeNameExpression","src":"8731:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1563,"type":"uint256","value":"diff"},"id":1578,"name":"Identifier","src":"8735:4:18"}],"id":1579,"name":"FunctionCall","src":"8731:9:18"}],"id":1580,"name":"Return","src":"8724:16:18"}],"id":1581,"name":"IfStatement","src":"8689:51:18"}],"id":1582,"name":"Block","src":"8374:381:18"}],"id":1583,"name":"IfStatement","src":"8362:393:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1502,"type":"uint256","value":"selfptr"},"id":1584,"name":"Identifier","src":"8768:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1585,"name":"Literal","src":"8779:2:18"}],"id":1586,"name":"Assignment","src":"8768:13:18"}],"id":1587,"name":"ExpressionStatement","src":"8768:13:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1507,"type":"uint256","value":"otherptr"},"id":1588,"name":"Identifier","src":"8795:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1589,"name":"Literal","src":"8807:2:18"}],"id":1590,"name":"Assignment","src":"8795:14:18"}],"id":1591,"name":"ExpressionStatement","src":"8795:14:18"}],"id":1592,"name":"Block","src":"8198:622:18"}],"id":1593,"name":"ForStatement","src":"8152:668:18"},{"attributes":{"functionReturnParameters":1484},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":1594,"name":"ElementaryTypeNameExpression","src":"8836:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1478,"type":"struct strings.slice memory","value":"self"},"id":1595,"name":"Identifier","src":"8840:4:18"}],"id":1596,"name":"MemberAccess","src":"8840:9:18"}],"id":1597,"name":"FunctionCall","src":"8836:14:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":1598,"name":"ElementaryTypeNameExpression","src":"8853:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1480,"type":"struct strings.slice memory","value":"other"},"id":1599,"name":"Identifier","src":"8857:5:18"}],"id":1600,"name":"MemberAccess","src":"8857:10:18"}],"id":1601,"name":"FunctionCall","src":"8853:15:18"}],"id":1602,"name":"BinaryOperation","src":"8836:32:18"}],"id":1603,"name":"Return","src":"8829:39:18"}],"id":1604,"name":"Block","src":"7965:910:18"}],"id":1605,"name":"FunctionDefinition","src":"7881:994:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1622,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1606,"name":"UserDefinedTypeName","src":"9135:5:18"}],"id":1607,"name":"VariableDeclaration","src":"9135:17:18"},{"attributes":{"constant":false,"name":"other","scope":1622,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1608,"name":"UserDefinedTypeName","src":"9154:5:18"}],"id":1609,"name":"VariableDeclaration","src":"9154:18:18"}],"id":1610,"name":"ParameterList","src":"9134:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1622,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1611,"name":"ElementaryTypeName","src":"9197:4:18"}],"id":1612,"name":"VariableDeclaration","src":"9197:4:18"}],"id":1613,"name":"ParameterList","src":"9196:6:18"},{"children":[{"attributes":{"functionReturnParameters":1613},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1605,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":1614,"name":"Identifier","src":"9220:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1607,"type":"struct strings.slice memory","value":"self"},"id":1615,"name":"Identifier","src":"9228:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1609,"type":"struct strings.slice memory","value":"other"},"id":1616,"name":"Identifier","src":"9234:5:18"}],"id":1617,"name":"FunctionCall","src":"9220:20:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1618,"name":"Literal","src":"9244:1:18"}],"id":1619,"name":"BinaryOperation","src":"9220:25:18"}],"id":1620,"name":"Return","src":"9213:32:18"}],"id":1621,"name":"Block","src":"9203:49:18"}],"id":1622,"name":"FunctionDefinition","src":"9119:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1740,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1623,"name":"UserDefinedTypeName","src":"9563:5:18"}],"id":1624,"name":"VariableDeclaration","src":"9563:17:18"},{"attributes":{"constant":false,"name":"rune","scope":1740,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1625,"name":"UserDefinedTypeName","src":"9582:5:18"}],"id":1626,"name":"VariableDeclaration","src":"9582:17:18"}],"id":1627,"name":"ParameterList","src":"9562:38:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1740,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1628,"name":"UserDefinedTypeName","src":"9624:5:18"}],"id":1629,"name":"VariableDeclaration","src":"9624:12:18"}],"id":1630,"name":"ParameterList","src":"9623:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1631,"name":"Identifier","src":"9648:4:18"}],"id":1633,"name":"MemberAccess","src":"9648:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1634,"name":"Identifier","src":"9660:4:18"}],"id":1635,"name":"MemberAccess","src":"9660:9:18"}],"id":1636,"name":"Assignment","src":"9648:21:18"}],"id":1637,"name":"ExpressionStatement","src":"9648:21:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1638,"name":"Identifier","src":"9684:4:18"}],"id":1639,"name":"MemberAccess","src":"9684:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1640,"name":"Literal","src":"9697:1:18"}],"id":1641,"name":"BinaryOperation","src":"9684:14:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1642,"name":"Identifier","src":"9714:4:18"}],"id":1644,"name":"MemberAccess","src":"9714:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1645,"name":"Literal","src":"9726:1:18"}],"id":1646,"name":"Assignment","src":"9714:13:18"}],"id":1647,"name":"ExpressionStatement","src":"9714:13:18"},{"attributes":{"functionReturnParameters":1630},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1648,"name":"Identifier","src":"9748:4:18"}],"id":1649,"name":"Return","src":"9741:11:18"}],"id":1650,"name":"Block","src":"9700:63:18"}],"id":1651,"name":"IfStatement","src":"9680:83:18"},{"attributes":{"assignments":[1653],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":1739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1652,"name":"ElementaryTypeName","src":"9773:4:18"}],"id":1653,"name":"VariableDeclaration","src":"9773:6:18"}],"id":1654,"name":"VariableDeclarationStatement","src":"9773:6:18"},{"attributes":{"assignments":[1656],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":1739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1655,"name":"ElementaryTypeName","src":"9789:4:18"}],"id":1656,"name":"VariableDeclaration","src":"9789:6:18"}],"id":1657,"name":"VariableDeclarationStatement","src":"9789:6:18"},{"attributes":{"externalReferences":[{"b":{"declaration":1656,"isOffset":false,"isSlot":false,"src":"9878:1:18","valueSize":1}},{"self":{"declaration":1624,"isOffset":false,"isSlot":false,"src":"9907:4:18","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":1658,"name":"InlineAssembly","src":"9867:65:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1656,"type":"uint256","value":"b"},"id":1659,"name":"Identifier","src":"9945:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":1660,"name":"Literal","src":"9949:4:18"}],"id":1661,"name":"BinaryOperation","src":"9945:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1662,"name":"Identifier","src":"9969:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1663,"name":"Literal","src":"9973:1:18"}],"id":1664,"name":"Assignment","src":"9969:5:18"}],"id":1665,"name":"ExpressionStatement","src":"9969:5:18"}],"id":1666,"name":"Block","src":"9955:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1656,"type":"uint256","value":"b"},"id":1667,"name":"Identifier","src":"9995:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":1668,"name":"Literal","src":"9999:4:18"}],"id":1669,"name":"BinaryOperation","src":"9995:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1670,"name":"Identifier","src":"10019:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1671,"name":"Literal","src":"10023:1:18"}],"id":1672,"name":"Assignment","src":"10019:5:18"}],"id":1673,"name":"ExpressionStatement","src":"10019:5:18"}],"id":1674,"name":"Block","src":"10005:30:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1656,"type":"uint256","value":"b"},"id":1675,"name":"Identifier","src":"10045:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":1676,"name":"Literal","src":"10049:4:18"}],"id":1677,"name":"BinaryOperation","src":"10045:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1678,"name":"Identifier","src":"10069:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1679,"name":"Literal","src":"10073:1:18"}],"id":1680,"name":"Assignment","src":"10069:5:18"}],"id":1681,"name":"ExpressionStatement","src":"10069:5:18"}],"id":1682,"name":"Block","src":"10055:30:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1683,"name":"Identifier","src":"10105:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1684,"name":"Literal","src":"10109:1:18"}],"id":1685,"name":"Assignment","src":"10105:5:18"}],"id":1686,"name":"ExpressionStatement","src":"10105:5:18"}],"id":1687,"name":"Block","src":"10091:30:18"}],"id":1688,"name":"IfStatement","src":"10041:80:18"}],"id":1689,"name":"IfStatement","src":"9991:130:18"}],"id":1690,"name":"IfStatement","src":"9941:180:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1691,"name":"Identifier","src":"10177:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1692,"name":"Identifier","src":"10181:4:18"}],"id":1693,"name":"MemberAccess","src":"10181:9:18"}],"id":1694,"name":"BinaryOperation","src":"10177:13:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1695,"name":"Identifier","src":"10206:4:18"}],"id":1697,"name":"MemberAccess","src":"10206:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1698,"name":"Identifier","src":"10218:4:18"}],"id":1699,"name":"MemberAccess","src":"10218:9:18"}],"id":1700,"name":"Assignment","src":"10206:21:18"}],"id":1701,"name":"ExpressionStatement","src":"10206:21:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1702,"name":"Identifier","src":"10241:4:18"}],"id":1704,"name":"MemberAccess","src":"10241:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1705,"name":"Identifier","src":"10254:4:18"}],"id":1706,"name":"MemberAccess","src":"10254:9:18"}],"id":1707,"name":"Assignment","src":"10241:22:18"}],"id":1708,"name":"ExpressionStatement","src":"10241:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1709,"name":"Identifier","src":"10277:4:18"}],"id":1711,"name":"MemberAccess","src":"10277:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1712,"name":"Literal","src":"10289:1:18"}],"id":1713,"name":"Assignment","src":"10277:13:18"}],"id":1714,"name":"ExpressionStatement","src":"10277:13:18"},{"attributes":{"functionReturnParameters":1630},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1715,"name":"Identifier","src":"10311:4:18"}],"id":1716,"name":"Return","src":"10304:11:18"}],"id":1717,"name":"Block","src":"10192:134:18"}],"id":1718,"name":"IfStatement","src":"10173:153:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1719,"name":"Identifier","src":"10336:4:18"}],"id":1721,"name":"MemberAccess","src":"10336:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1722,"name":"Identifier","src":"10349:1:18"}],"id":1723,"name":"Assignment","src":"10336:14:18"}],"id":1724,"name":"ExpressionStatement","src":"10336:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1624,"type":"struct strings.slice memory","value":"self"},"id":1725,"name":"Identifier","src":"10360:4:18"}],"id":1727,"name":"MemberAccess","src":"10360:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1728,"name":"Identifier","src":"10373:1:18"}],"id":1729,"name":"Assignment","src":"10360:14:18"}],"id":1730,"name":"ExpressionStatement","src":"10360:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1731,"name":"Identifier","src":"10384:4:18"}],"id":1733,"name":"MemberAccess","src":"10384:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1653,"type":"uint256","value":"l"},"id":1734,"name":"Identifier","src":"10396:1:18"}],"id":1735,"name":"Assignment","src":"10384:13:18"}],"id":1736,"name":"ExpressionStatement","src":"10384:13:18"},{"attributes":{"functionReturnParameters":1630},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1626,"type":"struct strings.slice memory","value":"rune"},"id":1737,"name":"Identifier","src":"10414:4:18"}],"id":1738,"name":"Return","src":"10407:11:18"}],"id":1739,"name":"Block","src":"9638:787:18"}],"id":1740,"name":"FunctionDefinition","src":"9545:880:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1753,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1741,"name":"UserDefinedTypeName","src":"10683:5:18"}],"id":1742,"name":"VariableDeclaration","src":"10683:17:18"}],"id":1743,"name":"ParameterList","src":"10682:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":1753,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1744,"name":"UserDefinedTypeName","src":"10725:5:18"}],"id":1745,"name":"VariableDeclaration","src":"10725:16:18"}],"id":1746,"name":"ParameterList","src":"10724:18:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[1740,1753],"referencedDeclaration":1740,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":1747,"name":"Identifier","src":"10753:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1742,"type":"struct strings.slice memory","value":"self"},"id":1748,"name":"Identifier","src":"10762:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1745,"type":"struct strings.slice memory","value":"ret"},"id":1749,"name":"Identifier","src":"10768:3:18"}],"id":1750,"name":"FunctionCall","src":"10753:19:18"}],"id":1751,"name":"ExpressionStatement","src":"10753:19:18"}],"id":1752,"name":"Block","src":"10743:36:18"}],"id":1753,"name":"FunctionDefinition","src":"10665:114:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1900,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1754,"name":"UserDefinedTypeName","src":"10988:5:18"}],"id":1755,"name":"VariableDeclaration","src":"10988:17:18"}],"id":1756,"name":"ParameterList","src":"10987:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":1900,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1757,"name":"ElementaryTypeName","src":"11030:4:18"}],"id":1758,"name":"VariableDeclaration","src":"11030:8:18"}],"id":1759,"name":"ParameterList","src":"11029:10:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1755,"type":"struct strings.slice memory","value":"self"},"id":1760,"name":"Identifier","src":"11054:4:18"}],"id":1761,"name":"MemberAccess","src":"11054:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1762,"name":"Literal","src":"11067:1:18"}],"id":1763,"name":"BinaryOperation","src":"11054:14:18"},{"children":[{"attributes":{"functionReturnParameters":1759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1764,"name":"Literal","src":"11091:1:18"}],"id":1765,"name":"Return","src":"11084:8:18"}],"id":1766,"name":"Block","src":"11070:33:18"}],"id":1767,"name":"IfStatement","src":"11050:53:18"},{"attributes":{"assignments":[1769],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":1899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1768,"name":"ElementaryTypeName","src":"11113:4:18"}],"id":1769,"name":"VariableDeclaration","src":"11113:9:18"}],"id":1770,"name":"VariableDeclarationStatement","src":"11113:9:18"},{"attributes":{"assignments":[1772],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":1899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1771,"name":"ElementaryTypeName","src":"11132:4:18"}],"id":1772,"name":"VariableDeclaration","src":"11132:11:18"}],"id":1773,"name":"VariableDeclarationStatement","src":"11132:11:18"},{"attributes":{"assignments":[1775]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":1899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1774,"name":"ElementaryTypeName","src":"11153:4:18"}],"id":1775,"name":"VariableDeclaration","src":"11153:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1776,"name":"Literal","src":"11168:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":1777,"name":"Literal","src":"11173:3:18"}],"id":1778,"name":"BinaryOperation","src":"11168:8:18"}],"id":1779,"name":"VariableDeclarationStatement","src":"11153:23:18"},{"attributes":{"externalReferences":[{"word":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"11242:4:18","valueSize":1}},{"self":{"declaration":1755,"isOffset":false,"isSlot":false,"src":"11265:4:18","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":1780,"name":"InlineAssembly","src":"11231:47:18"},{"attributes":{"assignments":[1782]},"children":[{"attributes":{"constant":false,"name":"b","scope":1899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1781,"name":"ElementaryTypeName","src":"11287:4:18"}],"id":1782,"name":"VariableDeclaration","src":"11287:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"word"},"id":1783,"name":"Identifier","src":"11296:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1775,"type":"uint256","value":"divisor"},"id":1784,"name":"Identifier","src":"11303:7:18"}],"id":1785,"name":"BinaryOperation","src":"11296:14:18"}],"id":1786,"name":"VariableDeclarationStatement","src":"11287:23:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1787,"name":"Identifier","src":"11324:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":1788,"name":"Literal","src":"11328:4:18"}],"id":1789,"name":"BinaryOperation","src":"11324:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1790,"name":"Identifier","src":"11348:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1791,"name":"Identifier","src":"11354:1:18"}],"id":1792,"name":"Assignment","src":"11348:7:18"}],"id":1793,"name":"ExpressionStatement","src":"11348:7:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1794,"name":"Identifier","src":"11369:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1795,"name":"Literal","src":"11378:1:18"}],"id":1796,"name":"Assignment","src":"11369:10:18"}],"id":1797,"name":"ExpressionStatement","src":"11369:10:18"}],"id":1798,"name":"Block","src":"11334:56:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1799,"name":"Identifier","src":"11400:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":1800,"name":"Literal","src":"11404:4:18"}],"id":1801,"name":"BinaryOperation","src":"11400:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1802,"name":"Identifier","src":"11424:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1803,"name":"Identifier","src":"11430:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":1804,"name":"Literal","src":"11434:4:18"}],"id":1805,"name":"BinaryOperation","src":"11430:8:18"}],"id":1806,"name":"Assignment","src":"11424:14:18"}],"id":1807,"name":"ExpressionStatement","src":"11424:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1808,"name":"Identifier","src":"11452:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":1809,"name":"Literal","src":"11461:1:18"}],"id":1810,"name":"Assignment","src":"11452:10:18"}],"id":1811,"name":"ExpressionStatement","src":"11452:10:18"}],"id":1812,"name":"Block","src":"11410:63:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1813,"name":"Identifier","src":"11483:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":1814,"name":"Literal","src":"11487:4:18"}],"id":1815,"name":"BinaryOperation","src":"11483:8:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1816,"name":"Identifier","src":"11507:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1817,"name":"Identifier","src":"11513:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":1818,"name":"Literal","src":"11517:4:18"}],"id":1819,"name":"BinaryOperation","src":"11513:8:18"}],"id":1820,"name":"Assignment","src":"11507:14:18"}],"id":1821,"name":"ExpressionStatement","src":"11507:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1822,"name":"Identifier","src":"11535:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":1823,"name":"Literal","src":"11544:1:18"}],"id":1824,"name":"Assignment","src":"11535:10:18"}],"id":1825,"name":"ExpressionStatement","src":"11535:10:18"}],"id":1826,"name":"Block","src":"11493:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1827,"name":"Identifier","src":"11576:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1828,"name":"Identifier","src":"11582:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":1829,"name":"Literal","src":"11586:4:18"}],"id":1830,"name":"BinaryOperation","src":"11582:8:18"}],"id":1831,"name":"Assignment","src":"11576:14:18"}],"id":1832,"name":"ExpressionStatement","src":"11576:14:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1833,"name":"Identifier","src":"11604:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":1834,"name":"Literal","src":"11613:1:18"}],"id":1835,"name":"Assignment","src":"11604:10:18"}],"id":1836,"name":"ExpressionStatement","src":"11604:10:18"}],"id":1837,"name":"Block","src":"11562:63:18"}],"id":1838,"name":"IfStatement","src":"11479:146:18"}],"id":1839,"name":"IfStatement","src":"11396:229:18"}],"id":1840,"name":"IfStatement","src":"11320:305:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1841,"name":"Identifier","src":"11681:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1755,"type":"struct strings.slice memory","value":"self"},"id":1842,"name":"Identifier","src":"11690:4:18"}],"id":1843,"name":"MemberAccess","src":"11690:9:18"}],"id":1844,"name":"BinaryOperation","src":"11681:18:18"},{"children":[{"attributes":{"functionReturnParameters":1759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1845,"name":"Literal","src":"11722:1:18"}],"id":1846,"name":"Return","src":"11715:8:18"}],"id":1847,"name":"Block","src":"11701:33:18"}],"id":1848,"name":"IfStatement","src":"11677:57:18"},{"children":[{"attributes":{"assignments":[1850]},"children":[{"attributes":{"constant":false,"name":"i","scope":1896,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":1849,"name":"ElementaryTypeName","src":"11749:4:18"}],"id":1850,"name":"VariableDeclaration","src":"11749:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":1851,"name":"Literal","src":"11758:1:18"}],"id":1852,"name":"VariableDeclarationStatement","src":"11749:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1850,"type":"uint256","value":"i"},"id":1853,"name":"Identifier","src":"11761:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1772,"type":"uint256","value":"length"},"id":1854,"name":"Identifier","src":"11765:6:18"}],"id":1855,"name":"BinaryOperation","src":"11761:10:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1850,"type":"uint256","value":"i"},"id":1856,"name":"Identifier","src":"11773:1:18"}],"id":1857,"name":"UnaryOperation","src":"11773:3:18"}],"id":1858,"name":"ExpressionStatement","src":"11773:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1775,"type":"uint256","value":"divisor"},"id":1859,"name":"Identifier","src":"11792:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1775,"type":"uint256","value":"divisor"},"id":1860,"name":"Identifier","src":"11802:7:18"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":1861,"name":"Literal","src":"11812:3:18"}],"id":1862,"name":"BinaryOperation","src":"11802:13:18"}],"id":1863,"name":"Assignment","src":"11792:23:18"}],"id":1864,"name":"ExpressionStatement","src":"11792:23:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1865,"name":"Identifier","src":"11829:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"word"},"id":1866,"name":"Identifier","src":"11834:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1775,"type":"uint256","value":"divisor"},"id":1867,"name":"Identifier","src":"11841:7:18"}],"id":1868,"name":"BinaryOperation","src":"11834:14:18"}],"id":1869,"name":"TupleExpression","src":"11833:16:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":1870,"name":"Literal","src":"11852:4:18"}],"id":1871,"name":"BinaryOperation","src":"11833:23:18"}],"id":1872,"name":"Assignment","src":"11829:27:18"}],"id":1873,"name":"ExpressionStatement","src":"11829:27:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1874,"name":"Identifier","src":"11874:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":1875,"name":"Literal","src":"11878:4:18"}],"id":1876,"name":"BinaryOperation","src":"11874:8:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":1877,"name":"Literal","src":"11886:4:18"}],"id":1878,"name":"BinaryOperation","src":"11874:16:18"},{"children":[{"attributes":{"functionReturnParameters":1759},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1879,"name":"Literal","src":"11959:1:18"}],"id":1880,"name":"Return","src":"11952:8:18"}],"id":1881,"name":"Block","src":"11892:83:18"}],"id":1882,"name":"IfStatement","src":"11870:105:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1883,"name":"Identifier","src":"11988:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1884,"name":"Identifier","src":"11995:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":1885,"name":"Literal","src":"12001:2:18"}],"id":1886,"name":"BinaryOperation","src":"11995:8:18"}],"id":1887,"name":"TupleExpression","src":"11994:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"b"},"id":1888,"name":"Identifier","src":"12008:1:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":1889,"name":"Literal","src":"12012:4:18"}],"id":1890,"name":"BinaryOperation","src":"12008:8:18"}],"id":1891,"name":"TupleExpression","src":"12007:10:18"}],"id":1892,"name":"BinaryOperation","src":"11994:23:18"}],"id":1893,"name":"Assignment","src":"11988:29:18"}],"id":1894,"name":"ExpressionStatement","src":"11988:29:18"}],"id":1895,"name":"Block","src":"11778:250:18"}],"id":1896,"name":"ForStatement","src":"11744:284:18"},{"attributes":{"functionReturnParameters":1759},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1758,"type":"uint256","value":"ret"},"id":1897,"name":"Identifier","src":"12045:3:18"}],"id":1898,"name":"Return","src":"12038:10:18"}],"id":1899,"name":"Block","src":"11040:1015:18"}],"id":1900,"name":"FunctionDefinition","src":"10975:1080:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1909,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1901,"name":"UserDefinedTypeName","src":"12222:5:18"}],"id":1902,"name":"VariableDeclaration","src":"12222:17:18"}],"id":1903,"name":"ParameterList","src":"12221:19:18"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":1909,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1904,"name":"ElementaryTypeName","src":"12264:7:18"}],"id":1905,"name":"VariableDeclaration","src":"12264:11:18"}],"id":1906,"name":"ParameterList","src":"12263:13:18"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":1905,"isOffset":false,"isSlot":false,"src":"12310:3:18","valueSize":1}},{"self":{"declaration":1902,"isOffset":false,"isSlot":false,"src":"12337:4:18","valueSize":1}},{"self":{"declaration":1902,"isOffset":false,"isSlot":false,"src":"12355:4:18","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":1907,"name":"InlineAssembly","src":"12287:84:18"}],"id":1908,"name":"Block","src":"12277:100:18"}],"id":1909,"name":"FunctionDefinition","src":"12206:171:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1943,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1910,"name":"UserDefinedTypeName","src":"12646:5:18"}],"id":1911,"name":"VariableDeclaration","src":"12646:17:18"},{"attributes":{"constant":false,"name":"needle","scope":1943,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1912,"name":"UserDefinedTypeName","src":"12665:5:18"}],"id":1913,"name":"VariableDeclaration","src":"12665:19:18"}],"id":1914,"name":"ParameterList","src":"12645:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1943,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1915,"name":"ElementaryTypeName","src":"12709:4:18"}],"id":1916,"name":"VariableDeclaration","src":"12709:4:18"}],"id":1917,"name":"ParameterList","src":"12708:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1911,"type":"struct strings.slice memory","value":"self"},"id":1918,"name":"Identifier","src":"12729:4:18"}],"id":1919,"name":"MemberAccess","src":"12729:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1913,"type":"struct strings.slice memory","value":"needle"},"id":1920,"name":"Identifier","src":"12741:6:18"}],"id":1921,"name":"MemberAccess","src":"12741:11:18"}],"id":1922,"name":"BinaryOperation","src":"12729:23:18"},{"children":[{"attributes":{"functionReturnParameters":1917},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1923,"name":"Literal","src":"12775:5:18"}],"id":1924,"name":"Return","src":"12768:12:18"}],"id":1925,"name":"Block","src":"12754:37:18"}],"id":1926,"name":"IfStatement","src":"12725:66:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1911,"type":"struct strings.slice memory","value":"self"},"id":1927,"name":"Identifier","src":"12805:4:18"}],"id":1928,"name":"MemberAccess","src":"12805:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1913,"type":"struct strings.slice memory","value":"needle"},"id":1929,"name":"Identifier","src":"12818:6:18"}],"id":1930,"name":"MemberAccess","src":"12818:11:18"}],"id":1931,"name":"BinaryOperation","src":"12805:24:18"},{"children":[{"attributes":{"functionReturnParameters":1917},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1932,"name":"Literal","src":"12852:4:18"}],"id":1933,"name":"Return","src":"12845:11:18"}],"id":1934,"name":"Block","src":"12831:36:18"}],"id":1935,"name":"IfStatement","src":"12801:66:18"},{"attributes":{"assignments":[1937],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":1942,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1936,"name":"ElementaryTypeName","src":"12877:4:18"}],"id":1937,"name":"VariableDeclaration","src":"12877:10:18"}],"id":1938,"name":"VariableDeclarationStatement","src":"12877:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":1913,"isOffset":false,"isSlot":false,"src":"12940:6:18","valueSize":1}},{"self":{"declaration":1911,"isOffset":false,"isSlot":false,"src":"12985:4:18","valueSize":1}},{"needle":{"declaration":1913,"isOffset":false,"isSlot":false,"src":"13037:6:18","valueSize":1}},{"equal":{"declaration":1937,"isOffset":false,"isSlot":false,"src":"13064:5:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":1939,"name":"InlineAssembly","src":"12897:246:18"},{"attributes":{"functionReturnParameters":1917},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bool","value":"equal"},"id":1940,"name":"Identifier","src":"13159:5:18"}],"id":1941,"name":"Return","src":"13152:12:18"}],"id":1942,"name":"Block","src":"12715:456:18"}],"id":1943,"name":"FunctionDefinition","src":"12626:545:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1993,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1944,"name":"UserDefinedTypeName","src":"13459:5:18"}],"id":1945,"name":"VariableDeclaration","src":"13459:17:18"},{"attributes":{"constant":false,"name":"needle","scope":1993,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1946,"name":"UserDefinedTypeName","src":"13478:5:18"}],"id":1947,"name":"VariableDeclaration","src":"13478:19:18"}],"id":1948,"name":"ParameterList","src":"13458:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":1993,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1949,"name":"UserDefinedTypeName","src":"13522:5:18"}],"id":1950,"name":"VariableDeclaration","src":"13522:12:18"}],"id":1951,"name":"ParameterList","src":"13521:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1952,"name":"Identifier","src":"13550:4:18"}],"id":1953,"name":"MemberAccess","src":"13550:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"struct strings.slice memory","value":"needle"},"id":1954,"name":"Identifier","src":"13562:6:18"}],"id":1955,"name":"MemberAccess","src":"13562:11:18"}],"id":1956,"name":"BinaryOperation","src":"13550:23:18"},{"children":[{"attributes":{"functionReturnParameters":1951},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1957,"name":"Identifier","src":"13596:4:18"}],"id":1958,"name":"Return","src":"13589:11:18"}],"id":1959,"name":"Block","src":"13575:36:18"}],"id":1960,"name":"IfStatement","src":"13546:65:18"},{"attributes":{"assignments":[1962]},"children":[{"attributes":{"constant":false,"name":"equal","scope":1992,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1961,"name":"ElementaryTypeName","src":"13621:4:18"}],"id":1962,"name":"VariableDeclaration","src":"13621:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1963,"name":"Literal","src":"13634:4:18"}],"id":1964,"name":"VariableDeclarationStatement","src":"13621:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1965,"name":"Identifier","src":"13652:4:18"}],"id":1966,"name":"MemberAccess","src":"13652:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"struct strings.slice memory","value":"needle"},"id":1967,"name":"Identifier","src":"13665:6:18"}],"id":1968,"name":"MemberAccess","src":"13665:11:18"}],"id":1969,"name":"BinaryOperation","src":"13652:24:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":1947,"isOffset":false,"isSlot":false,"src":"13739:6:18","valueSize":1}},{"self":{"declaration":1945,"isOffset":false,"isSlot":false,"src":"13788:4:18","valueSize":1}},{"equal":{"declaration":1962,"isOffset":false,"isSlot":false,"src":"13875:5:18","valueSize":1}},{"needle":{"declaration":1947,"isOffset":false,"isSlot":false,"src":"13844:6:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":1970,"name":"InlineAssembly","src":"13692:266:18"}],"id":1971,"name":"Block","src":"13678:290:18"}],"id":1972,"name":"IfStatement","src":"13648:320:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1962,"type":"bool","value":"equal"},"id":1973,"name":"Identifier","src":"13982:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1974,"name":"Identifier","src":"14003:4:18"}],"id":1976,"name":"MemberAccess","src":"14003:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"struct strings.slice memory","value":"needle"},"id":1977,"name":"Identifier","src":"14016:6:18"}],"id":1978,"name":"MemberAccess","src":"14016:11:18"}],"id":1979,"name":"Assignment","src":"14003:24:18"}],"id":1980,"name":"ExpressionStatement","src":"14003:24:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1981,"name":"Identifier","src":"14041:4:18"}],"id":1983,"name":"MemberAccess","src":"14041:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1947,"type":"struct strings.slice memory","value":"needle"},"id":1984,"name":"Identifier","src":"14054:6:18"}],"id":1985,"name":"MemberAccess","src":"14054:11:18"}],"id":1986,"name":"Assignment","src":"14041:24:18"}],"id":1987,"name":"ExpressionStatement","src":"14041:24:18"}],"id":1988,"name":"Block","src":"13989:87:18"}],"id":1989,"name":"IfStatement","src":"13978:98:18"},{"attributes":{"functionReturnParameters":1951},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1945,"type":"struct strings.slice memory","value":"self"},"id":1990,"name":"Identifier","src":"14093:4:18"}],"id":1991,"name":"Return","src":"14086:11:18"}],"id":1992,"name":"Block","src":"13536:568:18"}],"id":1993,"name":"FunctionDefinition","src":"13443:661:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2037,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1994,"name":"UserDefinedTypeName","src":"14372:5:18"}],"id":1995,"name":"VariableDeclaration","src":"14372:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2037,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":1996,"name":"UserDefinedTypeName","src":"14391:5:18"}],"id":1997,"name":"VariableDeclaration","src":"14391:19:18"}],"id":1998,"name":"ParameterList","src":"14371:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2037,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1999,"name":"ElementaryTypeName","src":"14435:4:18"}],"id":2000,"name":"VariableDeclaration","src":"14435:4:18"}],"id":2001,"name":"ParameterList","src":"14434:6:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"struct strings.slice memory","value":"self"},"id":2002,"name":"Identifier","src":"14455:4:18"}],"id":2003,"name":"MemberAccess","src":"14455:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"struct strings.slice memory","value":"needle"},"id":2004,"name":"Identifier","src":"14467:6:18"}],"id":2005,"name":"MemberAccess","src":"14467:11:18"}],"id":2006,"name":"BinaryOperation","src":"14455:23:18"},{"children":[{"attributes":{"functionReturnParameters":2001},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2007,"name":"Literal","src":"14501:5:18"}],"id":2008,"name":"Return","src":"14494:12:18"}],"id":2009,"name":"Block","src":"14480:37:18"}],"id":2010,"name":"IfStatement","src":"14451:66:18"},{"attributes":{"assignments":[2012]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":2036,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2011,"name":"ElementaryTypeName","src":"14527:4:18"}],"id":2012,"name":"VariableDeclaration","src":"14527:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"struct strings.slice memory","value":"self"},"id":2013,"name":"Identifier","src":"14542:4:18"}],"id":2014,"name":"MemberAccess","src":"14542:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1995,"type":"struct strings.slice memory","value":"self"},"id":2015,"name":"Identifier","src":"14554:4:18"}],"id":2016,"name":"MemberAccess","src":"14554:9:18"}],"id":2017,"name":"BinaryOperation","src":"14542:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"struct strings.slice memory","value":"needle"},"id":2018,"name":"Identifier","src":"14566:6:18"}],"id":2019,"name":"MemberAccess","src":"14566:11:18"}],"id":2020,"name":"BinaryOperation","src":"14542:35:18"}],"id":2021,"name":"VariableDeclarationStatement","src":"14527:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2012,"type":"uint256","value":"selfptr"},"id":2022,"name":"Identifier","src":"14592:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"struct strings.slice memory","value":"needle"},"id":2023,"name":"Identifier","src":"14603:6:18"}],"id":2024,"name":"MemberAccess","src":"14603:11:18"}],"id":2025,"name":"BinaryOperation","src":"14592:22:18"},{"children":[{"attributes":{"functionReturnParameters":2001},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2026,"name":"Literal","src":"14637:4:18"}],"id":2027,"name":"Return","src":"14630:11:18"}],"id":2028,"name":"Block","src":"14616:36:18"}],"id":2029,"name":"IfStatement","src":"14588:64:18"},{"attributes":{"assignments":[2031],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":2036,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2030,"name":"ElementaryTypeName","src":"14662:4:18"}],"id":2031,"name":"VariableDeclaration","src":"14662:10:18"}],"id":2032,"name":"VariableDeclarationStatement","src":"14662:10:18"},{"attributes":{"externalReferences":[{"needle":{"declaration":1997,"isOffset":false,"isSlot":false,"src":"14725:6:18","valueSize":1}},{"equal":{"declaration":2031,"isOffset":false,"isSlot":false,"src":"14799:5:18","valueSize":1}},{"needle":{"declaration":1997,"isOffset":false,"isSlot":false,"src":"14772:6:18","valueSize":1}},{"selfptr":{"declaration":2012,"isOffset":false,"isSlot":false,"src":"14821:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":2033,"name":"InlineAssembly","src":"14682:196:18"},{"attributes":{"functionReturnParameters":2001},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2031,"type":"bool","value":"equal"},"id":2034,"name":"Identifier","src":"14895:5:18"}],"id":2035,"name":"Return","src":"14888:12:18"}],"id":2036,"name":"Block","src":"14441:466:18"}],"id":2037,"name":"FunctionDefinition","src":"14354:553:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2038,"name":"UserDefinedTypeName","src":"15186:5:18"}],"id":2039,"name":"VariableDeclaration","src":"15186:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2040,"name":"UserDefinedTypeName","src":"15205:5:18"}],"id":2041,"name":"VariableDeclaration","src":"15205:19:18"}],"id":2042,"name":"ParameterList","src":"15185:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2043,"name":"UserDefinedTypeName","src":"15249:5:18"}],"id":2044,"name":"VariableDeclaration","src":"15249:12:18"}],"id":2045,"name":"ParameterList","src":"15248:14:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2046,"name":"Identifier","src":"15277:4:18"}],"id":2047,"name":"MemberAccess","src":"15277:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"struct strings.slice memory","value":"needle"},"id":2048,"name":"Identifier","src":"15289:6:18"}],"id":2049,"name":"MemberAccess","src":"15289:11:18"}],"id":2050,"name":"BinaryOperation","src":"15277:23:18"},{"children":[{"attributes":{"functionReturnParameters":2045},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2051,"name":"Identifier","src":"15323:4:18"}],"id":2052,"name":"Return","src":"15316:11:18"}],"id":2053,"name":"Block","src":"15302:36:18"}],"id":2054,"name":"IfStatement","src":"15273:65:18"},{"attributes":{"assignments":[2056]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":2089,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2055,"name":"ElementaryTypeName","src":"15348:4:18"}],"id":2056,"name":"VariableDeclaration","src":"15348:12:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2057,"name":"Identifier","src":"15363:4:18"}],"id":2058,"name":"MemberAccess","src":"15363:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2059,"name":"Identifier","src":"15375:4:18"}],"id":2060,"name":"MemberAccess","src":"15375:9:18"}],"id":2061,"name":"BinaryOperation","src":"15363:21:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"struct strings.slice memory","value":"needle"},"id":2062,"name":"Identifier","src":"15387:6:18"}],"id":2063,"name":"MemberAccess","src":"15387:11:18"}],"id":2064,"name":"BinaryOperation","src":"15363:35:18"}],"id":2065,"name":"VariableDeclarationStatement","src":"15348:50:18"},{"attributes":{"assignments":[2067]},"children":[{"attributes":{"constant":false,"name":"equal","scope":2089,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2066,"name":"ElementaryTypeName","src":"15408:4:18"}],"id":2067,"name":"VariableDeclaration","src":"15408:10:18"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2068,"name":"Literal","src":"15421:4:18"}],"id":2069,"name":"VariableDeclarationStatement","src":"15408:17:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2056,"type":"uint256","value":"selfptr"},"id":2070,"name":"Identifier","src":"15439:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"struct strings.slice memory","value":"needle"},"id":2071,"name":"Identifier","src":"15450:6:18"}],"id":2072,"name":"MemberAccess","src":"15450:11:18"}],"id":2073,"name":"BinaryOperation","src":"15439:22:18"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":2041,"isOffset":false,"isSlot":false,"src":"15524:6:18","valueSize":1}},{"equal":{"declaration":2067,"isOffset":false,"isSlot":false,"src":"15606:5:18","valueSize":1}},{"needle":{"declaration":2041,"isOffset":false,"isSlot":false,"src":"15575:6:18","valueSize":1}},{"selfptr":{"declaration":2056,"isOffset":false,"isSlot":false,"src":"15628:7:18","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":2074,"name":"InlineAssembly","src":"15477:212:18"}],"id":2075,"name":"Block","src":"15463:236:18"}],"id":2076,"name":"IfStatement","src":"15435:264:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2067,"type":"bool","value":"equal"},"id":2077,"name":"Identifier","src":"15713:5:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2078,"name":"Identifier","src":"15734:4:18"}],"id":2080,"name":"MemberAccess","src":"15734:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2041,"type":"struct strings.slice memory","value":"needle"},"id":2081,"name":"Identifier","src":"15747:6:18"}],"id":2082,"name":"MemberAccess","src":"15747:11:18"}],"id":2083,"name":"Assignment","src":"15734:24:18"}],"id":2084,"name":"ExpressionStatement","src":"15734:24:18"}],"id":2085,"name":"Block","src":"15720:49:18"}],"id":2086,"name":"IfStatement","src":"15709:60:18"},{"attributes":{"functionReturnParameters":2045},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2039,"type":"struct strings.slice memory","value":"self"},"id":2087,"name":"Identifier","src":"15786:4:18"}],"id":2088,"name":"Return","src":"15779:11:18"}],"id":2089,"name":"Block","src":"15263:534:18"}],"id":2090,"name":"FunctionDefinition","src":"15171:626:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2091,"name":"ElementaryTypeName","src":"15971:4:18"}],"id":2092,"name":"VariableDeclaration","src":"15971:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2093,"name":"ElementaryTypeName","src":"15985:4:18"}],"id":2094,"name":"VariableDeclaration","src":"15985:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2095,"name":"ElementaryTypeName","src":"15999:4:18"}],"id":2096,"name":"VariableDeclaration","src":"15999:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2097,"name":"ElementaryTypeName","src":"16015:4:18"}],"id":2098,"name":"VariableDeclaration","src":"16015:14:18"}],"id":2099,"name":"ParameterList","src":"15970:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2100,"name":"ElementaryTypeName","src":"16053:4:18"}],"id":2101,"name":"VariableDeclaration","src":"16053:4:18"}],"id":2102,"name":"ParameterList","src":"16052:6:18"},{"children":[{"attributes":{"assignments":[2104]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2103,"name":"ElementaryTypeName","src":"16069:4:18"}],"id":2104,"name":"VariableDeclaration","src":"16069:8:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"selfptr"},"id":2105,"name":"Identifier","src":"16080:7:18"}],"id":2106,"name":"VariableDeclarationStatement","src":"16069:18:18"},{"attributes":{"assignments":[2108],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":2210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2107,"name":"ElementaryTypeName","src":"16097:4:18"}],"id":2108,"name":"VariableDeclaration","src":"16097:8:18"}],"id":2109,"name":"VariableDeclarationStatement","src":"16097:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2110,"name":"Identifier","src":"16120:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2111,"name":"Identifier","src":"16133:7:18"}],"id":2112,"name":"BinaryOperation","src":"16120:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2113,"name":"Identifier","src":"16160:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2114,"name":"Literal","src":"16173:2:18"}],"id":2115,"name":"BinaryOperation","src":"16160:15:18"},{"children":[{"attributes":{"assignments":[2117]},"children":[{"attributes":{"constant":false,"name":"mask","scope":2169,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2116,"name":"ElementaryTypeName","src":"16195:7:18"}],"id":2117,"name":"VariableDeclaration","src":"16195:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2118,"name":"ElementaryTypeNameExpression","src":"16210:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2119,"name":"Literal","src":"16220:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":2120,"name":"Literal","src":"16226:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2121,"name":"Literal","src":"16231:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2122,"name":"Identifier","src":"16236:9:18"}],"id":2123,"name":"BinaryOperation","src":"16231:14:18"}],"id":2124,"name":"TupleExpression","src":"16230:16:18"}],"id":2125,"name":"BinaryOperation","src":"16226:20:18"}],"id":2126,"name":"TupleExpression","src":"16225:22:18"}],"id":2127,"name":"BinaryOperation","src":"16220:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2128,"name":"Literal","src":"16250:1:18"}],"id":2129,"name":"BinaryOperation","src":"16220:31:18"}],"id":2130,"name":"TupleExpression","src":"16219:33:18"}],"id":2131,"name":"UnaryOperation","src":"16218:34:18"}],"id":2132,"name":"FunctionCall","src":"16210:43:18"}],"id":2133,"name":"VariableDeclarationStatement","src":"16195:58:18"},{"attributes":{"assignments":[2135],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":2169,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2134,"name":"ElementaryTypeName","src":"16272:7:18"}],"id":2135,"name":"VariableDeclaration","src":"16272:18:18"}],"id":2136,"name":"VariableDeclarationStatement","src":"16272:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":2135,"isOffset":false,"isSlot":false,"src":"16319:10:18","valueSize":1}},{"needleptr":{"declaration":2098,"isOffset":false,"isSlot":false,"src":"16343:9:18","valueSize":1}},{"mask":{"declaration":2117,"isOffset":false,"isSlot":false,"src":"16355:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":2137,"name":"InlineAssembly","src":"16308:54:18"},{"attributes":{"assignments":[2139]},"children":[{"attributes":{"constant":false,"name":"end","scope":2169,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2138,"name":"ElementaryTypeName","src":"16380:4:18"}],"id":2139,"name":"VariableDeclaration","src":"16380:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"selfptr"},"id":2140,"name":"Identifier","src":"16391:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2141,"name":"Identifier","src":"16401:7:18"}],"id":2142,"name":"BinaryOperation","src":"16391:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2143,"name":"Identifier","src":"16411:9:18"}],"id":2144,"name":"BinaryOperation","src":"16391:29:18"}],"id":2145,"name":"VariableDeclarationStatement","src":"16380:40:18"},{"attributes":{"assignments":[2147],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":2169,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2146,"name":"ElementaryTypeName","src":"16438:7:18"}],"id":2147,"name":"VariableDeclaration","src":"16438:15:18"}],"id":2148,"name":"VariableDeclarationStatement","src":"16438:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":2147,"isOffset":false,"isSlot":false,"src":"16482:7:18","valueSize":1}},{"ptr":{"declaration":2104,"isOffset":false,"isSlot":false,"src":"16503:3:18","valueSize":1}},{"mask":{"declaration":2117,"isOffset":false,"isSlot":false,"src":"16509:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":2149,"name":"InlineAssembly","src":"16471:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2147,"type":"bytes32","value":"ptrdata"},"id":2150,"name":"Identifier","src":"16541:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2135,"type":"bytes32","value":"needledata"},"id":2151,"name":"Identifier","src":"16552:10:18"}],"id":2152,"name":"BinaryOperation","src":"16541:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2153,"name":"Identifier","src":"16590:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2139,"type":"uint256","value":"end"},"id":2154,"name":"Identifier","src":"16597:3:18"}],"id":2155,"name":"BinaryOperation","src":"16590:10:18"},{"attributes":{"functionReturnParameters":2102},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"selfptr"},"id":2156,"name":"Identifier","src":"16633:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2157,"name":"Identifier","src":"16643:7:18"}],"id":2158,"name":"BinaryOperation","src":"16633:17:18"}],"id":2159,"name":"Return","src":"16626:24:18"}],"id":2160,"name":"IfStatement","src":"16586:64:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2161,"name":"Identifier","src":"16672:3:18"}],"id":2162,"name":"UnaryOperation","src":"16672:5:18"}],"id":2163,"name":"ExpressionStatement","src":"16672:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":2147,"isOffset":false,"isSlot":false,"src":"16710:7:18","valueSize":1}},{"ptr":{"declaration":2104,"isOffset":false,"isSlot":false,"src":"16731:3:18","valueSize":1}},{"mask":{"declaration":2117,"isOffset":false,"isSlot":false,"src":"16737:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":2164,"name":"InlineAssembly","src":"16699:45:18"}],"id":2165,"name":"Block","src":"16564:198:18"}],"id":2166,"name":"WhileStatement","src":"16534:228:18"},{"attributes":{"functionReturnParameters":2102},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2167,"name":"Identifier","src":"16786:3:18"}],"id":2168,"name":"Return","src":"16779:10:18"}],"id":2169,"name":"Block","src":"16177:627:18"},{"children":[{"attributes":{"assignments":[2171],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":2202,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2170,"name":"ElementaryTypeName","src":"16877:7:18"}],"id":2171,"name":"VariableDeclaration","src":"16877:12:18"}],"id":2172,"name":"VariableDeclarationStatement","src":"16877:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":2171,"isOffset":false,"isSlot":false,"src":"16918:4:18","valueSize":1}},{"needleptr":{"declaration":2098,"isOffset":false,"isSlot":false,"src":"16936:9:18","valueSize":1}},{"needlelen":{"declaration":2096,"isOffset":false,"isSlot":false,"src":"16947:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":2173,"name":"InlineAssembly","src":"16907:52:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"idx"},"id":2174,"name":"Identifier","src":"16982:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2175,"name":"Literal","src":"16988:1:18"}],"id":2176,"name":"Assignment","src":"16982:7:18"}],"id":2177,"name":"ExpressionStatement","src":"16982:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"idx"},"id":2178,"name":"Identifier","src":"16991:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2179,"name":"Identifier","src":"16998:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"needlelen"},"id":2180,"name":"Identifier","src":"17008:9:18"}],"id":2181,"name":"BinaryOperation","src":"16998:19:18"}],"id":2182,"name":"BinaryOperation","src":"16991:26:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"idx"},"id":2183,"name":"Identifier","src":"17019:3:18"}],"id":2184,"name":"UnaryOperation","src":"17019:5:18"}],"id":2185,"name":"ExpressionStatement","src":"17019:5:18"},{"children":[{"attributes":{"assignments":[2187],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":2200,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2186,"name":"ElementaryTypeName","src":"17048:7:18"}],"id":2187,"name":"VariableDeclaration","src":"17048:16:18"}],"id":2188,"name":"VariableDeclarationStatement","src":"17048:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":2187,"isOffset":false,"isSlot":false,"src":"17097:8:18","valueSize":1}},{"ptr":{"declaration":2104,"isOffset":false,"isSlot":false,"src":"17119:3:18","valueSize":1}},{"needlelen":{"declaration":2096,"isOffset":false,"isSlot":false,"src":"17124:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":2189,"name":"InlineAssembly","src":"17086:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2171,"type":"bytes32","value":"hash"},"id":2190,"name":"Identifier","src":"17161:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2187,"type":"bytes32","value":"testHash"},"id":2191,"name":"Identifier","src":"17169:8:18"}],"id":2192,"name":"BinaryOperation","src":"17161:16:18"},{"attributes":{"functionReturnParameters":2102},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2193,"name":"Identifier","src":"17210:3:18"}],"id":2194,"name":"Return","src":"17203:10:18"}],"id":2195,"name":"IfStatement","src":"17157:56:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2104,"type":"uint256","value":"ptr"},"id":2196,"name":"Identifier","src":"17235:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2197,"name":"Literal","src":"17242:1:18"}],"id":2198,"name":"Assignment","src":"17235:8:18"}],"id":2199,"name":"ExpressionStatement","src":"17235:8:18"}],"id":2200,"name":"Block","src":"17026:236:18"}],"id":2201,"name":"ForStatement","src":"16977:285:18"}],"id":2202,"name":"Block","src":"16810:466:18"}],"id":2203,"name":"IfStatement","src":"16156:1120:18"}],"id":2204,"name":"Block","src":"16142:1144:18"}],"id":2205,"name":"IfStatement","src":"16116:1170:18"},{"attributes":{"functionReturnParameters":2102},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"uint256","value":"selfptr"},"id":2206,"name":"Identifier","src":"17302:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"uint256","value":"selflen"},"id":2207,"name":"Identifier","src":"17312:7:18"}],"id":2208,"name":"BinaryOperation","src":"17302:17:18"}],"id":2209,"name":"Return","src":"17295:24:18"}],"id":2210,"name":"Block","src":"16059:1267:18"}],"id":2211,"name":"FunctionDefinition","src":"15954:1372:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2212,"name":"ElementaryTypeName","src":"17497:4:18"}],"id":2213,"name":"VariableDeclaration","src":"17497:12:18"},{"attributes":{"constant":false,"name":"selfptr","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2214,"name":"ElementaryTypeName","src":"17511:4:18"}],"id":2215,"name":"VariableDeclaration","src":"17511:12:18"},{"attributes":{"constant":false,"name":"needlelen","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2216,"name":"ElementaryTypeName","src":"17525:4:18"}],"id":2217,"name":"VariableDeclaration","src":"17525:14:18"},{"attributes":{"constant":false,"name":"needleptr","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2218,"name":"ElementaryTypeName","src":"17541:4:18"}],"id":2219,"name":"VariableDeclaration","src":"17541:14:18"}],"id":2220,"name":"ParameterList","src":"17496:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2221,"name":"ElementaryTypeName","src":"17579:4:18"}],"id":2222,"name":"VariableDeclaration","src":"17579:4:18"}],"id":2223,"name":"ParameterList","src":"17578:6:18"},{"children":[{"attributes":{"assignments":[2225],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2224,"name":"ElementaryTypeName","src":"17595:4:18"}],"id":2225,"name":"VariableDeclaration","src":"17595:8:18"}],"id":2226,"name":"VariableDeclarationStatement","src":"17595:8:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2227,"name":"Identifier","src":"17618:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"uint256","value":"selflen"},"id":2228,"name":"Identifier","src":"17631:7:18"}],"id":2229,"name":"BinaryOperation","src":"17618:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2230,"name":"Identifier","src":"17658:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2231,"name":"Literal","src":"17671:2:18"}],"id":2232,"name":"BinaryOperation","src":"17658:15:18"},{"children":[{"attributes":{"assignments":[2234]},"children":[{"attributes":{"constant":false,"name":"mask","scope":2286,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2233,"name":"ElementaryTypeName","src":"17693:7:18"}],"id":2234,"name":"VariableDeclaration","src":"17693:12:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2235,"name":"ElementaryTypeNameExpression","src":"17708:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":2236,"name":"Literal","src":"17718:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":2237,"name":"Literal","src":"17724:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2238,"name":"Literal","src":"17729:2:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2239,"name":"Identifier","src":"17734:9:18"}],"id":2240,"name":"BinaryOperation","src":"17729:14:18"}],"id":2241,"name":"TupleExpression","src":"17728:16:18"}],"id":2242,"name":"BinaryOperation","src":"17724:20:18"}],"id":2243,"name":"TupleExpression","src":"17723:22:18"}],"id":2244,"name":"BinaryOperation","src":"17718:27:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2245,"name":"Literal","src":"17748:1:18"}],"id":2246,"name":"BinaryOperation","src":"17718:31:18"}],"id":2247,"name":"TupleExpression","src":"17717:33:18"}],"id":2248,"name":"UnaryOperation","src":"17716:34:18"}],"id":2249,"name":"FunctionCall","src":"17708:43:18"}],"id":2250,"name":"VariableDeclarationStatement","src":"17693:58:18"},{"attributes":{"assignments":[2252],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":2286,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2251,"name":"ElementaryTypeName","src":"17770:7:18"}],"id":2252,"name":"VariableDeclaration","src":"17770:18:18"}],"id":2253,"name":"VariableDeclarationStatement","src":"17770:18:18"},{"attributes":{"externalReferences":[{"needledata":{"declaration":2252,"isOffset":false,"isSlot":false,"src":"17817:10:18","valueSize":1}},{"needleptr":{"declaration":2219,"isOffset":false,"isSlot":false,"src":"17841:9:18","valueSize":1}},{"mask":{"declaration":2234,"isOffset":false,"isSlot":false,"src":"17853:4:18","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":2254,"name":"InlineAssembly","src":"17806:54:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2255,"name":"Identifier","src":"17878:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2256,"name":"Identifier","src":"17884:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"uint256","value":"selflen"},"id":2257,"name":"Identifier","src":"17894:7:18"}],"id":2258,"name":"BinaryOperation","src":"17884:17:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2259,"name":"Identifier","src":"17904:9:18"}],"id":2260,"name":"BinaryOperation","src":"17884:29:18"}],"id":2261,"name":"Assignment","src":"17878:35:18"}],"id":2262,"name":"ExpressionStatement","src":"17878:35:18"},{"attributes":{"assignments":[2264],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":2286,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2263,"name":"ElementaryTypeName","src":"17931:7:18"}],"id":2264,"name":"VariableDeclaration","src":"17931:15:18"}],"id":2265,"name":"VariableDeclarationStatement","src":"17931:15:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":2264,"isOffset":false,"isSlot":false,"src":"17975:7:18","valueSize":1}},{"ptr":{"declaration":2225,"isOffset":false,"isSlot":false,"src":"17996:3:18","valueSize":1}},{"mask":{"declaration":2234,"isOffset":false,"isSlot":false,"src":"18002:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":2266,"name":"InlineAssembly","src":"17964:45:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2264,"type":"bytes32","value":"ptrdata"},"id":2267,"name":"Identifier","src":"18034:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2252,"type":"bytes32","value":"needledata"},"id":2268,"name":"Identifier","src":"18045:10:18"}],"id":2269,"name":"BinaryOperation","src":"18034:21:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2270,"name":"Identifier","src":"18083:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2271,"name":"Identifier","src":"18090:7:18"}],"id":2272,"name":"BinaryOperation","src":"18083:14:18"},{"attributes":{"functionReturnParameters":2223},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2273,"name":"Identifier","src":"18130:7:18"}],"id":2274,"name":"Return","src":"18123:14:18"}],"id":2275,"name":"IfStatement","src":"18079:58:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2276,"name":"Identifier","src":"18159:3:18"}],"id":2277,"name":"UnaryOperation","src":"18159:5:18"}],"id":2278,"name":"ExpressionStatement","src":"18159:5:18"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":2264,"isOffset":false,"isSlot":false,"src":"18197:7:18","valueSize":1}},{"ptr":{"declaration":2225,"isOffset":false,"isSlot":false,"src":"18218:3:18","valueSize":1}},{"mask":{"declaration":2234,"isOffset":false,"isSlot":false,"src":"18224:4:18","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":2279,"name":"InlineAssembly","src":"18186:45:18"}],"id":2280,"name":"Block","src":"18057:192:18"}],"id":2281,"name":"WhileStatement","src":"18027:222:18"},{"attributes":{"functionReturnParameters":2223},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2282,"name":"Identifier","src":"18273:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2283,"name":"Identifier","src":"18279:9:18"}],"id":2284,"name":"BinaryOperation","src":"18273:15:18"}],"id":2285,"name":"Return","src":"18266:22:18"}],"id":2286,"name":"Block","src":"17675:628:18"},{"children":[{"attributes":{"assignments":[2288],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":2321,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2287,"name":"ElementaryTypeName","src":"18376:7:18"}],"id":2288,"name":"VariableDeclaration","src":"18376:12:18"}],"id":2289,"name":"VariableDeclarationStatement","src":"18376:12:18"},{"attributes":{"externalReferences":[{"hash":{"declaration":2288,"isOffset":false,"isSlot":false,"src":"18417:4:18","valueSize":1}},{"needleptr":{"declaration":2219,"isOffset":false,"isSlot":false,"src":"18435:9:18","valueSize":1}},{"needlelen":{"declaration":2217,"isOffset":false,"isSlot":false,"src":"18446:9:18","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":2290,"name":"InlineAssembly","src":"18406:52:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2291,"name":"Identifier","src":"18475:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2292,"name":"Identifier","src":"18481:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"uint256","value":"selflen"},"id":2293,"name":"Identifier","src":"18492:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2294,"name":"Identifier","src":"18502:9:18"}],"id":2295,"name":"BinaryOperation","src":"18492:19:18"}],"id":2296,"name":"TupleExpression","src":"18491:21:18"}],"id":2297,"name":"BinaryOperation","src":"18481:31:18"}],"id":2298,"name":"Assignment","src":"18475:37:18"}],"id":2299,"name":"ExpressionStatement","src":"18475:37:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2300,"name":"Identifier","src":"18537:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2301,"name":"Identifier","src":"18544:7:18"}],"id":2302,"name":"BinaryOperation","src":"18537:14:18"},{"children":[{"attributes":{"assignments":[2304],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":2319,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2303,"name":"ElementaryTypeName","src":"18575:7:18"}],"id":2304,"name":"VariableDeclaration","src":"18575:16:18"}],"id":2305,"name":"VariableDeclarationStatement","src":"18575:16:18"},{"attributes":{"externalReferences":[{"testHash":{"declaration":2304,"isOffset":false,"isSlot":false,"src":"18624:8:18","valueSize":1}},{"ptr":{"declaration":2225,"isOffset":false,"isSlot":false,"src":"18646:3:18","valueSize":1}},{"needlelen":{"declaration":2217,"isOffset":false,"isSlot":false,"src":"18651:9:18","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":2306,"name":"InlineAssembly","src":"18613:50:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2288,"type":"bytes32","value":"hash"},"id":2307,"name":"Identifier","src":"18688:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2304,"type":"bytes32","value":"testHash"},"id":2308,"name":"Identifier","src":"18696:8:18"}],"id":2309,"name":"BinaryOperation","src":"18688:16:18"},{"attributes":{"functionReturnParameters":2223},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2310,"name":"Identifier","src":"18737:3:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2217,"type":"uint256","value":"needlelen"},"id":2311,"name":"Identifier","src":"18743:9:18"}],"id":2312,"name":"BinaryOperation","src":"18737:15:18"}],"id":2313,"name":"Return","src":"18730:22:18"}],"id":2314,"name":"IfStatement","src":"18684:68:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"ptr"},"id":2315,"name":"Identifier","src":"18774:3:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2316,"name":"Literal","src":"18781:1:18"}],"id":2317,"name":"Assignment","src":"18774:8:18"}],"id":2318,"name":"ExpressionStatement","src":"18774:8:18"}],"id":2319,"name":"Block","src":"18553:248:18"}],"id":2320,"name":"WhileStatement","src":"18530:271:18"}],"id":2321,"name":"Block","src":"18309:506:18"}],"id":2322,"name":"IfStatement","src":"17654:1161:18"}],"id":2323,"name":"Block","src":"17640:1185:18"}],"id":2324,"name":"IfStatement","src":"17614:1211:18"},{"attributes":{"functionReturnParameters":2223},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"selfptr"},"id":2325,"name":"Identifier","src":"18841:7:18"}],"id":2326,"name":"Return","src":"18834:14:18"}],"id":2327,"name":"Block","src":"17585:1270:18"}],"id":2328,"name":"FunctionDefinition","src":"17479:1376:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2368,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2329,"name":"UserDefinedTypeName","src":"19205:5:18"}],"id":2330,"name":"VariableDeclaration","src":"19205:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2368,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2331,"name":"UserDefinedTypeName","src":"19224:5:18"}],"id":2332,"name":"VariableDeclaration","src":"19224:19:18"}],"id":2333,"name":"ParameterList","src":"19204:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2368,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2334,"name":"UserDefinedTypeName","src":"19268:5:18"}],"id":2335,"name":"VariableDeclaration","src":"19268:12:18"}],"id":2336,"name":"ParameterList","src":"19267:14:18"},{"children":[{"attributes":{"assignments":[2338]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2367,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2337,"name":"ElementaryTypeName","src":"19292:4:18"}],"id":2338,"name":"VariableDeclaration","src":"19292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":2339,"name":"Identifier","src":"19303:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2340,"name":"Identifier","src":"19311:4:18"}],"id":2341,"name":"MemberAccess","src":"19311:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2342,"name":"Identifier","src":"19322:4:18"}],"id":2343,"name":"MemberAccess","src":"19322:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2332,"type":"struct strings.slice memory","value":"needle"},"id":2344,"name":"Identifier","src":"19333:6:18"}],"id":2345,"name":"MemberAccess","src":"19333:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2332,"type":"struct strings.slice memory","value":"needle"},"id":2346,"name":"Identifier","src":"19346:6:18"}],"id":2347,"name":"MemberAccess","src":"19346:11:18"}],"id":2348,"name":"FunctionCall","src":"19303:55:18"}],"id":2349,"name":"VariableDeclarationStatement","src":"19292:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2350,"name":"Identifier","src":"19368:4:18"}],"id":2352,"name":"MemberAccess","src":"19368:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2338,"type":"uint256","value":"ptr"},"id":2353,"name":"Identifier","src":"19381:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2354,"name":"Identifier","src":"19387:4:18"}],"id":2355,"name":"MemberAccess","src":"19387:9:18"}],"id":2356,"name":"BinaryOperation","src":"19381:15:18"}],"id":2357,"name":"Assignment","src":"19368:28:18"}],"id":2358,"name":"ExpressionStatement","src":"19368:28:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2359,"name":"Identifier","src":"19406:4:18"}],"id":2361,"name":"MemberAccess","src":"19406:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2338,"type":"uint256","value":"ptr"},"id":2362,"name":"Identifier","src":"19418:3:18"}],"id":2363,"name":"Assignment","src":"19406:15:18"}],"id":2364,"name":"ExpressionStatement","src":"19406:15:18"},{"attributes":{"functionReturnParameters":2336},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2330,"type":"struct strings.slice memory","value":"self"},"id":2365,"name":"Identifier","src":"19438:4:18"}],"id":2366,"name":"Return","src":"19431:11:18"}],"id":2367,"name":"Block","src":"19282:167:18"}],"id":2368,"name":"FunctionDefinition","src":"19191:258:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2402,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2369,"name":"UserDefinedTypeName","src":"19823:5:18"}],"id":2370,"name":"VariableDeclaration","src":"19823:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2402,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2371,"name":"UserDefinedTypeName","src":"19842:5:18"}],"id":2372,"name":"VariableDeclaration","src":"19842:19:18"}],"id":2373,"name":"ParameterList","src":"19822:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2402,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2374,"name":"UserDefinedTypeName","src":"19886:5:18"}],"id":2375,"name":"VariableDeclaration","src":"19886:12:18"}],"id":2376,"name":"ParameterList","src":"19885:14:18"},{"children":[{"attributes":{"assignments":[2378]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2401,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2377,"name":"ElementaryTypeName","src":"19910:4:18"}],"id":2378,"name":"VariableDeclaration","src":"19910:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2328,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":2379,"name":"Identifier","src":"19921:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2380,"name":"Identifier","src":"19930:4:18"}],"id":2381,"name":"MemberAccess","src":"19930:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2382,"name":"Identifier","src":"19941:4:18"}],"id":2383,"name":"MemberAccess","src":"19941:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2372,"type":"struct strings.slice memory","value":"needle"},"id":2384,"name":"Identifier","src":"19952:6:18"}],"id":2385,"name":"MemberAccess","src":"19952:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2372,"type":"struct strings.slice memory","value":"needle"},"id":2386,"name":"Identifier","src":"19965:6:18"}],"id":2387,"name":"MemberAccess","src":"19965:11:18"}],"id":2388,"name":"FunctionCall","src":"19921:56:18"}],"id":2389,"name":"VariableDeclarationStatement","src":"19910:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2390,"name":"Identifier","src":"19987:4:18"}],"id":2392,"name":"MemberAccess","src":"19987:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2378,"type":"uint256","value":"ptr"},"id":2393,"name":"Identifier","src":"19999:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2394,"name":"Identifier","src":"20005:4:18"}],"id":2395,"name":"MemberAccess","src":"20005:9:18"}],"id":2396,"name":"BinaryOperation","src":"19999:15:18"}],"id":2397,"name":"Assignment","src":"19987:27:18"}],"id":2398,"name":"ExpressionStatement","src":"19987:27:18"},{"attributes":{"functionReturnParameters":2376},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2370,"type":"struct strings.slice memory","value":"self"},"id":2399,"name":"Identifier","src":"20031:4:18"}],"id":2400,"name":"Return","src":"20024:11:18"}],"id":2401,"name":"Block","src":"19900:142:18"}],"id":2402,"name":"FunctionDefinition","src":"19808:234:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2403,"name":"UserDefinedTypeName","src":"20563:5:18"}],"id":2404,"name":"VariableDeclaration","src":"20563:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2405,"name":"UserDefinedTypeName","src":"20582:5:18"}],"id":2406,"name":"VariableDeclaration","src":"20582:19:18"},{"attributes":{"constant":false,"name":"token","scope":2480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2407,"name":"UserDefinedTypeName","src":"20603:5:18"}],"id":2408,"name":"VariableDeclaration","src":"20603:18:18"}],"id":2409,"name":"ParameterList","src":"20562:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2480,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2410,"name":"UserDefinedTypeName","src":"20646:5:18"}],"id":2411,"name":"VariableDeclaration","src":"20646:12:18"}],"id":2412,"name":"ParameterList","src":"20645:14:18"},{"children":[{"attributes":{"assignments":[2414]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2413,"name":"ElementaryTypeName","src":"20670:4:18"}],"id":2414,"name":"VariableDeclaration","src":"20670:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":2415,"name":"Identifier","src":"20681:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2416,"name":"Identifier","src":"20689:4:18"}],"id":2417,"name":"MemberAccess","src":"20689:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2418,"name":"Identifier","src":"20700:4:18"}],"id":2419,"name":"MemberAccess","src":"20700:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"struct strings.slice memory","value":"needle"},"id":2420,"name":"Identifier","src":"20711:6:18"}],"id":2421,"name":"MemberAccess","src":"20711:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"struct strings.slice memory","value":"needle"},"id":2422,"name":"Identifier","src":"20724:6:18"}],"id":2423,"name":"MemberAccess","src":"20724:11:18"}],"id":2424,"name":"FunctionCall","src":"20681:55:18"}],"id":2425,"name":"VariableDeclarationStatement","src":"20670:66:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"struct strings.slice memory","value":"token"},"id":2426,"name":"Identifier","src":"20746:5:18"}],"id":2428,"name":"MemberAccess","src":"20746:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2429,"name":"Identifier","src":"20759:4:18"}],"id":2430,"name":"MemberAccess","src":"20759:9:18"}],"id":2431,"name":"Assignment","src":"20746:22:18"}],"id":2432,"name":"ExpressionStatement","src":"20746:22:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"struct strings.slice memory","value":"token"},"id":2433,"name":"Identifier","src":"20778:5:18"}],"id":2435,"name":"MemberAccess","src":"20778:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2414,"type":"uint256","value":"ptr"},"id":2436,"name":"Identifier","src":"20791:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2437,"name":"Identifier","src":"20797:4:18"}],"id":2438,"name":"MemberAccess","src":"20797:9:18"}],"id":2439,"name":"BinaryOperation","src":"20791:15:18"}],"id":2440,"name":"Assignment","src":"20778:28:18"}],"id":2441,"name":"ExpressionStatement","src":"20778:28:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2414,"type":"uint256","value":"ptr"},"id":2442,"name":"Identifier","src":"20820:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2443,"name":"Identifier","src":"20827:4:18"}],"id":2444,"name":"MemberAccess","src":"20827:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2445,"name":"Identifier","src":"20839:4:18"}],"id":2446,"name":"MemberAccess","src":"20839:9:18"}],"id":2447,"name":"BinaryOperation","src":"20827:21:18"}],"id":2448,"name":"BinaryOperation","src":"20820:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2449,"name":"Identifier","src":"20889:4:18"}],"id":2451,"name":"MemberAccess","src":"20889:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2452,"name":"Literal","src":"20901:1:18"}],"id":2453,"name":"Assignment","src":"20889:13:18"}],"id":2454,"name":"ExpressionStatement","src":"20889:13:18"}],"id":2455,"name":"Block","src":"20850:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2456,"name":"Identifier","src":"20933:4:18"}],"id":2458,"name":"MemberAccess","src":"20933:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"struct strings.slice memory","value":"token"},"id":2459,"name":"Identifier","src":"20946:5:18"}],"id":2460,"name":"MemberAccess","src":"20946:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"struct strings.slice memory","value":"needle"},"id":2461,"name":"Identifier","src":"20959:6:18"}],"id":2462,"name":"MemberAccess","src":"20959:11:18"}],"id":2463,"name":"BinaryOperation","src":"20946:24:18"}],"id":2464,"name":"Assignment","src":"20933:37:18"}],"id":2465,"name":"ExpressionStatement","src":"20933:37:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2404,"type":"struct strings.slice memory","value":"self"},"id":2466,"name":"Identifier","src":"20984:4:18"}],"id":2468,"name":"MemberAccess","src":"20984:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2414,"type":"uint256","value":"ptr"},"id":2469,"name":"Identifier","src":"20996:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"struct strings.slice memory","value":"needle"},"id":2470,"name":"Identifier","src":"21002:6:18"}],"id":2471,"name":"MemberAccess","src":"21002:11:18"}],"id":2472,"name":"BinaryOperation","src":"20996:17:18"}],"id":2473,"name":"Assignment","src":"20984:29:18"}],"id":2474,"name":"ExpressionStatement","src":"20984:29:18"}],"id":2475,"name":"Block","src":"20919:105:18"}],"id":2476,"name":"IfStatement","src":"20816:208:18"},{"attributes":{"functionReturnParameters":2412},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"struct strings.slice memory","value":"token"},"id":2477,"name":"Identifier","src":"21040:5:18"}],"id":2478,"name":"Return","src":"21033:12:18"}],"id":2479,"name":"Block","src":"20660:392:18"}],"id":2480,"name":"FunctionDefinition","src":"20548:504:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2496,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2481,"name":"UserDefinedTypeName","src":"21538:5:18"}],"id":2482,"name":"VariableDeclaration","src":"21538:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2496,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2483,"name":"UserDefinedTypeName","src":"21557:5:18"}],"id":2484,"name":"VariableDeclaration","src":"21557:19:18"}],"id":2485,"name":"ParameterList","src":"21537:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":2496,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2486,"name":"UserDefinedTypeName","src":"21601:5:18"}],"id":2487,"name":"VariableDeclaration","src":"21601:18:18"}],"id":2488,"name":"ParameterList","src":"21600:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[2480,2496],"referencedDeclaration":2480,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":2489,"name":"Identifier","src":"21631:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"struct strings.slice memory","value":"self"},"id":2490,"name":"Identifier","src":"21637:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2484,"type":"struct strings.slice memory","value":"needle"},"id":2491,"name":"Identifier","src":"21643:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2487,"type":"struct strings.slice memory","value":"token"},"id":2492,"name":"Identifier","src":"21651:5:18"}],"id":2493,"name":"FunctionCall","src":"21631:26:18"}],"id":2494,"name":"ExpressionStatement","src":"21631:26:18"}],"id":2495,"name":"Block","src":"21621:43:18"}],"id":2496,"name":"FunctionDefinition","src":"21523:141:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2565,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2497,"name":"UserDefinedTypeName","src":"22185:5:18"}],"id":2498,"name":"VariableDeclaration","src":"22185:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2565,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2499,"name":"UserDefinedTypeName","src":"22204:5:18"}],"id":2500,"name":"VariableDeclaration","src":"22204:19:18"},{"attributes":{"constant":false,"name":"token","scope":2565,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2501,"name":"UserDefinedTypeName","src":"22225:5:18"}],"id":2502,"name":"VariableDeclaration","src":"22225:18:18"}],"id":2503,"name":"ParameterList","src":"22184:60:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2565,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2504,"name":"UserDefinedTypeName","src":"22268:5:18"}],"id":2505,"name":"VariableDeclaration","src":"22268:12:18"}],"id":2506,"name":"ParameterList","src":"22267:14:18"},{"children":[{"attributes":{"assignments":[2508]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2564,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2507,"name":"ElementaryTypeName","src":"22292:4:18"}],"id":2508,"name":"VariableDeclaration","src":"22292:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2328,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":2509,"name":"Identifier","src":"22303:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2510,"name":"Identifier","src":"22312:4:18"}],"id":2511,"name":"MemberAccess","src":"22312:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2512,"name":"Identifier","src":"22323:4:18"}],"id":2513,"name":"MemberAccess","src":"22323:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"struct strings.slice memory","value":"needle"},"id":2514,"name":"Identifier","src":"22334:6:18"}],"id":2515,"name":"MemberAccess","src":"22334:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"struct strings.slice memory","value":"needle"},"id":2516,"name":"Identifier","src":"22347:6:18"}],"id":2517,"name":"MemberAccess","src":"22347:11:18"}],"id":2518,"name":"FunctionCall","src":"22303:56:18"}],"id":2519,"name":"VariableDeclarationStatement","src":"22292:67:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2502,"type":"struct strings.slice memory","value":"token"},"id":2520,"name":"Identifier","src":"22369:5:18"}],"id":2522,"name":"MemberAccess","src":"22369:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"uint256","value":"ptr"},"id":2523,"name":"Identifier","src":"22382:3:18"}],"id":2524,"name":"Assignment","src":"22369:16:18"}],"id":2525,"name":"ExpressionStatement","src":"22369:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2502,"type":"struct strings.slice memory","value":"token"},"id":2526,"name":"Identifier","src":"22395:5:18"}],"id":2528,"name":"MemberAccess","src":"22395:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2529,"name":"Identifier","src":"22408:4:18"}],"id":2530,"name":"MemberAccess","src":"22408:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"uint256","value":"ptr"},"id":2531,"name":"Identifier","src":"22421:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2532,"name":"Identifier","src":"22427:4:18"}],"id":2533,"name":"MemberAccess","src":"22427:9:18"}],"id":2534,"name":"BinaryOperation","src":"22421:15:18"}],"id":2535,"name":"TupleExpression","src":"22420:17:18"}],"id":2536,"name":"BinaryOperation","src":"22408:29:18"}],"id":2537,"name":"Assignment","src":"22395:42:18"}],"id":2538,"name":"ExpressionStatement","src":"22395:42:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"uint256","value":"ptr"},"id":2539,"name":"Identifier","src":"22451:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2540,"name":"Identifier","src":"22458:4:18"}],"id":2541,"name":"MemberAccess","src":"22458:9:18"}],"id":2542,"name":"BinaryOperation","src":"22451:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2543,"name":"Identifier","src":"22508:4:18"}],"id":2545,"name":"MemberAccess","src":"22508:9:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2546,"name":"Literal","src":"22520:1:18"}],"id":2547,"name":"Assignment","src":"22508:13:18"}],"id":2548,"name":"ExpressionStatement","src":"22508:13:18"}],"id":2549,"name":"Block","src":"22469:63:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2498,"type":"struct strings.slice memory","value":"self"},"id":2550,"name":"Identifier","src":"22552:4:18"}],"id":2552,"name":"MemberAccess","src":"22552:9:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2502,"type":"struct strings.slice memory","value":"token"},"id":2553,"name":"Identifier","src":"22565:5:18"}],"id":2554,"name":"MemberAccess","src":"22565:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2500,"type":"struct strings.slice memory","value":"needle"},"id":2555,"name":"Identifier","src":"22578:6:18"}],"id":2556,"name":"MemberAccess","src":"22578:11:18"}],"id":2557,"name":"BinaryOperation","src":"22565:24:18"}],"id":2558,"name":"Assignment","src":"22552:37:18"}],"id":2559,"name":"ExpressionStatement","src":"22552:37:18"}],"id":2560,"name":"Block","src":"22538:62:18"}],"id":2561,"name":"IfStatement","src":"22447:153:18"},{"attributes":{"functionReturnParameters":2506},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2502,"type":"struct strings.slice memory","value":"token"},"id":2562,"name":"Identifier","src":"22616:5:18"}],"id":2563,"name":"Return","src":"22609:12:18"}],"id":2564,"name":"Block","src":"22282:346:18"}],"id":2565,"name":"FunctionDefinition","src":"22169:459:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2581,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2566,"name":"UserDefinedTypeName","src":"23113:5:18"}],"id":2567,"name":"VariableDeclaration","src":"23113:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2581,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2568,"name":"UserDefinedTypeName","src":"23132:5:18"}],"id":2569,"name":"VariableDeclaration","src":"23132:19:18"}],"id":2570,"name":"ParameterList","src":"23112:40:18"},{"children":[{"attributes":{"constant":false,"name":"token","scope":2581,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2571,"name":"UserDefinedTypeName","src":"23176:5:18"}],"id":2572,"name":"VariableDeclaration","src":"23176:18:18"}],"id":2573,"name":"ParameterList","src":"23175:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$1127_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[2565,2581],"referencedDeclaration":2565,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":2574,"name":"Identifier","src":"23206:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2567,"type":"struct strings.slice memory","value":"self"},"id":2575,"name":"Identifier","src":"23213:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"struct strings.slice memory","value":"needle"},"id":2576,"name":"Identifier","src":"23219:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2572,"type":"struct strings.slice memory","value":"token"},"id":2577,"name":"Identifier","src":"23227:5:18"}],"id":2578,"name":"FunctionCall","src":"23206:27:18"}],"id":2579,"name":"ExpressionStatement","src":"23206:27:18"}],"id":2580,"name":"Block","src":"23196:44:18"}],"id":2581,"name":"FunctionDefinition","src":"23097:143:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2640,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2582,"name":"UserDefinedTypeName","src":"23524:5:18"}],"id":2583,"name":"VariableDeclaration","src":"23524:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2640,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2584,"name":"UserDefinedTypeName","src":"23543:5:18"}],"id":2585,"name":"VariableDeclaration","src":"23543:19:18"}],"id":2586,"name":"ParameterList","src":"23523:40:18"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":2640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2587,"name":"ElementaryTypeName","src":"23587:4:18"}],"id":2588,"name":"VariableDeclaration","src":"23587:8:18"}],"id":2589,"name":"ParameterList","src":"23586:10:18"},{"children":[{"attributes":{"assignments":[2591]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":2639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2590,"name":"ElementaryTypeName","src":"23607:4:18"}],"id":2591,"name":"VariableDeclaration","src":"23607:8:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":2592,"name":"Identifier","src":"23618:7:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2593,"name":"Identifier","src":"23626:4:18"}],"id":2594,"name":"MemberAccess","src":"23626:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2595,"name":"Identifier","src":"23637:4:18"}],"id":2596,"name":"MemberAccess","src":"23637:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2597,"name":"Identifier","src":"23648:6:18"}],"id":2598,"name":"MemberAccess","src":"23648:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2599,"name":"Identifier","src":"23661:6:18"}],"id":2600,"name":"MemberAccess","src":"23661:11:18"}],"id":2601,"name":"FunctionCall","src":"23618:55:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2602,"name":"Identifier","src":"23676:6:18"}],"id":2603,"name":"MemberAccess","src":"23676:11:18"}],"id":2604,"name":"BinaryOperation","src":"23618:69:18"}],"id":2605,"name":"VariableDeclarationStatement","src":"23607:80:18"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"uint256","value":"ptr"},"id":2606,"name":"Identifier","src":"23704:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2607,"name":"Identifier","src":"23711:4:18"}],"id":2608,"name":"MemberAccess","src":"23711:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2609,"name":"Identifier","src":"23723:4:18"}],"id":2610,"name":"MemberAccess","src":"23723:9:18"}],"id":2611,"name":"BinaryOperation","src":"23711:21:18"}],"id":2612,"name":"BinaryOperation","src":"23704:28:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2588,"type":"uint256","value":"cnt"},"id":2613,"name":"Identifier","src":"23748:3:18"}],"id":2614,"name":"UnaryOperation","src":"23748:5:18"}],"id":2615,"name":"ExpressionStatement","src":"23748:5:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"uint256","value":"ptr"},"id":2616,"name":"Identifier","src":"23767:3:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":2617,"name":"Identifier","src":"23773:7:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2618,"name":"Identifier","src":"23781:4:18"}],"id":2619,"name":"MemberAccess","src":"23781:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"uint256","value":"ptr"},"id":2620,"name":"Identifier","src":"23794:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"struct strings.slice memory","value":"self"},"id":2621,"name":"Identifier","src":"23800:4:18"}],"id":2622,"name":"MemberAccess","src":"23800:9:18"}],"id":2623,"name":"BinaryOperation","src":"23794:15:18"}],"id":2624,"name":"TupleExpression","src":"23793:17:18"}],"id":2625,"name":"BinaryOperation","src":"23781:29:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"uint256","value":"ptr"},"id":2626,"name":"Identifier","src":"23812:3:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2627,"name":"Identifier","src":"23817:6:18"}],"id":2628,"name":"MemberAccess","src":"23817:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2629,"name":"Identifier","src":"23830:6:18"}],"id":2630,"name":"MemberAccess","src":"23830:11:18"}],"id":2631,"name":"FunctionCall","src":"23773:69:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2585,"type":"struct strings.slice memory","value":"needle"},"id":2632,"name":"Identifier","src":"23845:6:18"}],"id":2633,"name":"MemberAccess","src":"23845:11:18"}],"id":2634,"name":"BinaryOperation","src":"23773:83:18"}],"id":2635,"name":"Assignment","src":"23767:89:18"}],"id":2636,"name":"ExpressionStatement","src":"23767:89:18"}],"id":2637,"name":"Block","src":"23734:133:18"}],"id":2638,"name":"WhileStatement","src":"23697:170:18"}],"id":2639,"name":"Block","src":"23597:276:18"}],"id":2640,"name":"FunctionDefinition","src":"23509:364:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2664,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2641,"name":"UserDefinedTypeName","src":"24130:5:18"}],"id":2642,"name":"VariableDeclaration","src":"24130:17:18"},{"attributes":{"constant":false,"name":"needle","scope":2664,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2643,"name":"UserDefinedTypeName","src":"24149:5:18"}],"id":2644,"name":"VariableDeclaration","src":"24149:19:18"}],"id":2645,"name":"ParameterList","src":"24129:40:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2646,"name":"ElementaryTypeName","src":"24193:4:18"}],"id":2647,"name":"VariableDeclaration","src":"24193:4:18"}],"id":2648,"name":"ParameterList","src":"24192:6:18"},{"children":[{"attributes":{"functionReturnParameters":2648},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2328,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":2649,"name":"Identifier","src":"24216:8:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"struct strings.slice memory","value":"self"},"id":2650,"name":"Identifier","src":"24225:4:18"}],"id":2651,"name":"MemberAccess","src":"24225:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"struct strings.slice memory","value":"self"},"id":2652,"name":"Identifier","src":"24236:4:18"}],"id":2653,"name":"MemberAccess","src":"24236:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2644,"type":"struct strings.slice memory","value":"needle"},"id":2654,"name":"Identifier","src":"24247:6:18"}],"id":2655,"name":"MemberAccess","src":"24247:11:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2644,"type":"struct strings.slice memory","value":"needle"},"id":2656,"name":"Identifier","src":"24260:6:18"}],"id":2657,"name":"MemberAccess","src":"24260:11:18"}],"id":2658,"name":"FunctionCall","src":"24216:56:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2642,"type":"struct strings.slice memory","value":"self"},"id":2659,"name":"Identifier","src":"24276:4:18"}],"id":2660,"name":"MemberAccess","src":"24276:9:18"}],"id":2661,"name":"BinaryOperation","src":"24216:69:18"}],"id":2662,"name":"Return","src":"24209:76:18"}],"id":2663,"name":"Block","src":"24199:93:18"}],"id":2664,"name":"FunctionDefinition","src":"24112:180:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2710,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2665,"name":"UserDefinedTypeName","src":"24595:5:18"}],"id":2666,"name":"VariableDeclaration","src":"24595:17:18"},{"attributes":{"constant":false,"name":"other","scope":2710,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2667,"name":"UserDefinedTypeName","src":"24614:5:18"}],"id":2668,"name":"VariableDeclaration","src":"24614:18:18"}],"id":2669,"name":"ParameterList","src":"24594:39:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2710,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2670,"name":"ElementaryTypeName","src":"24657:6:18"}],"id":2671,"name":"VariableDeclaration","src":"24657:13:18"}],"id":2672,"name":"ParameterList","src":"24656:15:18"},{"children":[{"attributes":{"assignments":[2674]},"children":[{"attributes":{"constant":false,"name":"ret","scope":2709,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2673,"name":"ElementaryTypeName","src":"24682:6:18"}],"id":2674,"name":"VariableDeclaration","src":"24682:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":2675,"name":"ElementaryTypeName","src":"24706:6:18"}],"id":2676,"name":"NewExpression","src":"24702:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2666,"type":"struct strings.slice memory","value":"self"},"id":2677,"name":"Identifier","src":"24713:4:18"}],"id":2678,"name":"MemberAccess","src":"24713:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2668,"type":"struct strings.slice memory","value":"other"},"id":2679,"name":"Identifier","src":"24725:5:18"}],"id":2680,"name":"MemberAccess","src":"24725:10:18"}],"id":2681,"name":"BinaryOperation","src":"24713:22:18"}],"id":2682,"name":"FunctionCall","src":"24702:34:18"}],"id":2683,"name":"VariableDeclarationStatement","src":"24682:54:18"},{"attributes":{"assignments":[2685],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":2709,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2684,"name":"ElementaryTypeName","src":"24746:4:18"}],"id":2685,"name":"VariableDeclaration","src":"24746:11:18"}],"id":2686,"name":"VariableDeclarationStatement","src":"24746:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":2685,"isOffset":false,"isSlot":false,"src":"24778:6:18","valueSize":1}},{"ret":{"declaration":2674,"isOffset":false,"isSlot":false,"src":"24792:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":2687,"name":"InlineAssembly","src":"24767:35:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":2688,"name":"Identifier","src":"24811:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2685,"type":"uint256","value":"retptr"},"id":2689,"name":"Identifier","src":"24818:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2666,"type":"struct strings.slice memory","value":"self"},"id":2690,"name":"Identifier","src":"24826:4:18"}],"id":2691,"name":"MemberAccess","src":"24826:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2666,"type":"struct strings.slice memory","value":"self"},"id":2692,"name":"Identifier","src":"24837:4:18"}],"id":2693,"name":"MemberAccess","src":"24837:9:18"}],"id":2694,"name":"FunctionCall","src":"24811:36:18"}],"id":2695,"name":"ExpressionStatement","src":"24811:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":2696,"name":"Identifier","src":"24857:6:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2685,"type":"uint256","value":"retptr"},"id":2697,"name":"Identifier","src":"24864:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2666,"type":"struct strings.slice memory","value":"self"},"id":2698,"name":"Identifier","src":"24873:4:18"}],"id":2699,"name":"MemberAccess","src":"24873:9:18"}],"id":2700,"name":"BinaryOperation","src":"24864:18:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2668,"type":"struct strings.slice memory","value":"other"},"id":2701,"name":"Identifier","src":"24884:5:18"}],"id":2702,"name":"MemberAccess","src":"24884:10:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2668,"type":"struct strings.slice memory","value":"other"},"id":2703,"name":"Identifier","src":"24896:5:18"}],"id":2704,"name":"MemberAccess","src":"24896:10:18"}],"id":2705,"name":"FunctionCall","src":"24857:50:18"}],"id":2706,"name":"ExpressionStatement","src":"24857:50:18"},{"attributes":{"functionReturnParameters":2672},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2674,"type":"string memory","value":"ret"},"id":2707,"name":"Identifier","src":"24924:3:18"}],"id":2708,"name":"Return","src":"24917:10:18"}],"id":2709,"name":"Block","src":"24672:262:18"}],"id":2710,"name":"FunctionDefinition","src":"24579:355:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":2826,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":2825,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2711,"name":"UserDefinedTypeName","src":"25284:5:18"}],"id":2712,"name":"VariableDeclaration","src":"25284:17:18"},{"attributes":{"constant":false,"name":"parts","scope":2825,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":1127,"type":"struct strings.slice"},"id":2713,"name":"UserDefinedTypeName","src":"25303:5:18"}],"id":2714,"name":"ArrayTypeName","src":"25303:7:18"}],"id":2715,"name":"VariableDeclaration","src":"25303:20:18"}],"id":2716,"name":"ParameterList","src":"25283:41:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":2825,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2717,"name":"ElementaryTypeName","src":"25348:6:18"}],"id":2718,"name":"VariableDeclaration","src":"25348:13:18"}],"id":2719,"name":"ParameterList","src":"25347:15:18"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2720,"name":"Identifier","src":"25377:5:18"}],"id":2721,"name":"MemberAccess","src":"25377:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2722,"name":"Literal","src":"25393:1:18"}],"id":2723,"name":"BinaryOperation","src":"25377:17:18"},{"attributes":{"functionReturnParameters":2719},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":2724,"name":"Literal","src":"25415:2:18"}],"id":2725,"name":"Return","src":"25408:9:18"}],"id":2726,"name":"IfStatement","src":"25373:44:18"},{"attributes":{"assignments":[2728]},"children":[{"attributes":{"constant":false,"name":"length","scope":2824,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2727,"name":"ElementaryTypeName","src":"25428:4:18"}],"id":2728,"name":"VariableDeclaration","src":"25428:11:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"struct strings.slice memory","value":"self"},"id":2729,"name":"Identifier","src":"25442:4:18"}],"id":2730,"name":"MemberAccess","src":"25442:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2731,"name":"Identifier","src":"25455:5:18"}],"id":2732,"name":"MemberAccess","src":"25455:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2733,"name":"Literal","src":"25470:1:18"}],"id":2734,"name":"BinaryOperation","src":"25455:16:18"}],"id":2735,"name":"TupleExpression","src":"25454:18:18"}],"id":2736,"name":"BinaryOperation","src":"25442:30:18"}],"id":2737,"name":"VariableDeclarationStatement","src":"25428:44:18"},{"children":[{"attributes":{"assignments":[2739]},"children":[{"attributes":{"constant":false,"name":"i","scope":2757,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2738,"name":"ElementaryTypeName","src":"25487:4:18"}],"id":2739,"name":"VariableDeclaration","src":"25487:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2740,"name":"Literal","src":"25496:1:18"}],"id":2741,"name":"VariableDeclarationStatement","src":"25487:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"i"},"id":2742,"name":"Identifier","src":"25499:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2743,"name":"Identifier","src":"25503:5:18"}],"id":2744,"name":"MemberAccess","src":"25503:12:18"}],"id":2745,"name":"BinaryOperation","src":"25499:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"i"},"id":2746,"name":"Identifier","src":"25517:1:18"}],"id":2747,"name":"UnaryOperation","src":"25517:3:18"}],"id":2748,"name":"ExpressionStatement","src":"25517:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2728,"type":"uint256","value":"length"},"id":2749,"name":"Identifier","src":"25536:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2750,"name":"Identifier","src":"25546:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"uint256","value":"i"},"id":2751,"name":"Identifier","src":"25552:1:18"}],"id":2752,"name":"IndexAccess","src":"25546:8:18"}],"id":2753,"name":"MemberAccess","src":"25546:13:18"}],"id":2754,"name":"Assignment","src":"25536:23:18"}],"id":2755,"name":"ExpressionStatement","src":"25536:23:18"}],"id":2756,"name":"Block","src":"25522:48:18"}],"id":2757,"name":"ForStatement","src":"25482:88:18"},{"attributes":{"assignments":[2759]},"children":[{"attributes":{"constant":false,"name":"ret","scope":2824,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":2758,"name":"ElementaryTypeName","src":"25580:6:18"}],"id":2759,"name":"VariableDeclaration","src":"25580:17:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":2760,"name":"ElementaryTypeName","src":"25604:6:18"}],"id":2761,"name":"NewExpression","src":"25600:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2728,"type":"uint256","value":"length"},"id":2762,"name":"Identifier","src":"25611:6:18"}],"id":2763,"name":"FunctionCall","src":"25600:18:18"}],"id":2764,"name":"VariableDeclarationStatement","src":"25580:38:18"},{"attributes":{"assignments":[2766],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":2824,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2765,"name":"ElementaryTypeName","src":"25628:4:18"}],"id":2766,"name":"VariableDeclaration","src":"25628:11:18"}],"id":2767,"name":"VariableDeclarationStatement","src":"25628:11:18"},{"attributes":{"externalReferences":[{"retptr":{"declaration":2766,"isOffset":false,"isSlot":false,"src":"25660:6:18","valueSize":1}},{"ret":{"declaration":2759,"isOffset":false,"isSlot":false,"src":"25674:3:18","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":2768,"name":"InlineAssembly","src":"25649:35:18"},{"children":[{"attributes":{"assignments":[2770]},"children":[{"attributes":{"constant":false,"name":"i","scope":2821,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":2769,"name":"ElementaryTypeName","src":"25699:4:18"}],"id":2770,"name":"VariableDeclaration","src":"25699:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2771,"name":"Literal","src":"25708:1:18"}],"id":2772,"name":"VariableDeclarationStatement","src":"25699:10:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2773,"name":"Identifier","src":"25711:1:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2774,"name":"Identifier","src":"25715:5:18"}],"id":2775,"name":"MemberAccess","src":"25715:12:18"}],"id":2776,"name":"BinaryOperation","src":"25711:16:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2777,"name":"Identifier","src":"25729:1:18"}],"id":2778,"name":"UnaryOperation","src":"25729:3:18"}],"id":2779,"name":"ExpressionStatement","src":"25729:3:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":2780,"name":"Identifier","src":"25748:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2766,"type":"uint256","value":"retptr"},"id":2781,"name":"Identifier","src":"25755:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2782,"name":"Identifier","src":"25763:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2783,"name":"Identifier","src":"25769:1:18"}],"id":2784,"name":"IndexAccess","src":"25763:8:18"}],"id":2785,"name":"MemberAccess","src":"25763:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2786,"name":"Identifier","src":"25778:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2787,"name":"Identifier","src":"25784:1:18"}],"id":2788,"name":"IndexAccess","src":"25778:8:18"}],"id":2789,"name":"MemberAccess","src":"25778:13:18"}],"id":2790,"name":"FunctionCall","src":"25748:44:18"}],"id":2791,"name":"ExpressionStatement","src":"25748:44:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2766,"type":"uint256","value":"retptr"},"id":2792,"name":"Identifier","src":"25806:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2793,"name":"Identifier","src":"25816:5:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2794,"name":"Identifier","src":"25822:1:18"}],"id":2795,"name":"IndexAccess","src":"25816:8:18"}],"id":2796,"name":"MemberAccess","src":"25816:13:18"}],"id":2797,"name":"Assignment","src":"25806:23:18"}],"id":2798,"name":"ExpressionStatement","src":"25806:23:18"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2770,"type":"uint256","value":"i"},"id":2799,"name":"Identifier","src":"25847:1:18"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2715,"type":"struct strings.slice memory[] memory","value":"parts"},"id":2800,"name":"Identifier","src":"25851:5:18"}],"id":2801,"name":"MemberAccess","src":"25851:12:18"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2802,"name":"Literal","src":"25866:1:18"}],"id":2803,"name":"BinaryOperation","src":"25851:16:18"}],"id":2804,"name":"BinaryOperation","src":"25847:20:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1167,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":2805,"name":"Identifier","src":"25887:6:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2766,"type":"uint256","value":"retptr"},"id":2806,"name":"Identifier","src":"25894:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":1126,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"struct strings.slice memory","value":"self"},"id":2807,"name":"Identifier","src":"25902:4:18"}],"id":2808,"name":"MemberAccess","src":"25902:9:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"struct strings.slice memory","value":"self"},"id":2809,"name":"Identifier","src":"25913:4:18"}],"id":2810,"name":"MemberAccess","src":"25913:9:18"}],"id":2811,"name":"FunctionCall","src":"25887:36:18"}],"id":2812,"name":"ExpressionStatement","src":"25887:36:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2766,"type":"uint256","value":"retptr"},"id":2813,"name":"Identifier","src":"25941:6:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":1124,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2712,"type":"struct strings.slice memory","value":"self"},"id":2814,"name":"Identifier","src":"25951:4:18"}],"id":2815,"name":"MemberAccess","src":"25951:9:18"}],"id":2816,"name":"Assignment","src":"25941:19:18"}],"id":2817,"name":"ExpressionStatement","src":"25941:19:18"}],"id":2818,"name":"Block","src":"25869:106:18"}],"id":2819,"name":"IfStatement","src":"25843:132:18"}],"id":2820,"name":"Block","src":"25734:251:18"}],"id":2821,"name":"ForStatement","src":"25694:291:18"},{"attributes":{"functionReturnParameters":2719},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2759,"type":"string memory","value":"ret"},"id":2822,"name":"Identifier","src":"26002:3:18"}],"id":2823,"name":"Return","src":"25995:10:18"}],"id":2824,"name":"Block","src":"25363:649:18"}],"id":2825,"name":"FunctionDefinition","src":"25270:742:18"}],"id":2826,"name":"ContractDefinition","src":"2599:23415:18"}],"id":2827,"name":"SourceUnit","src":"2574:23441:18"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[2937]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2828,"name":"PragmaDirective","src":"770:24:19"},{"attributes":{"SourceUnit":1121,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":2938,"symbolAliases":[null],"unitAlias":""},"id":2829,"name":"ImportDirective","src":"796:35:19"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[2937],"name":"BytesUtils","scope":2938},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1120,"type":"library SafeMath"},"id":2830,"name":"UserDefinedTypeName","src":"942:8:19"},{"attributes":{"name":"uint256","type":"uint256"},"id":2831,"name":"ElementaryTypeName","src":"955:7:19"}],"id":2832,"name":"UsingForDirective","src":"936:27:19"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":2937,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":2868,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2833,"name":"ElementaryTypeName","src":"1106:5:19"}],"id":2834,"name":"VariableDeclaration","src":"1106:17:19"},{"attributes":{"constant":false,"name":"_from","scope":2868,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2835,"name":"ElementaryTypeName","src":"1125:7:19"}],"id":2836,"name":"VariableDeclaration","src":"1125:13:19"}],"id":2837,"name":"ParameterList","src":"1105:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":2868,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2838,"name":"ElementaryTypeName","src":"1163:7:19"}],"id":2839,"name":"VariableDeclaration","src":"1163:7:19"}],"id":2840,"name":"ParameterList","src":"1162:9:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2841,"name":"Identifier","src":"1182:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2834,"type":"bytes memory","value":"_bts"},"id":2842,"name":"Identifier","src":"1190:4:19"}],"id":2843,"name":"MemberAccess","src":"1190:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"uint256","value":"_from"},"id":2844,"name":"Identifier","src":"1205:5:19"}],"id":2845,"name":"MemberAccess","src":"1205:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":2846,"name":"Literal","src":"1215:2:19"}],"id":2847,"name":"FunctionCall","src":"1205:13:19"}],"id":2848,"name":"BinaryOperation","src":"1190:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":2849,"name":"Literal","src":"1220:22:19"}],"id":2850,"name":"FunctionCall","src":"1182:61:19"}],"id":2851,"name":"ExpressionStatement","src":"1182:61:19"},{"attributes":{"assignments":[2853],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":2867,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":2852,"name":"ElementaryTypeName","src":"1254:7:19"}],"id":2853,"name":"VariableDeclaration","src":"1254:24:19"}],"id":2854,"name":"VariableDeclarationStatement","src":"1254:24:19"},{"attributes":{"assignments":[2856]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":2867,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2855,"name":"ElementaryTypeName","src":"1288:7:19"}],"id":2856,"name":"VariableDeclaration","src":"1288:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"uint256","value":"_from"},"id":2857,"name":"Identifier","src":"1308:5:19"}],"id":2858,"name":"MemberAccess","src":"1308:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2859,"name":"Literal","src":"1318:2:19"}],"id":2860,"name":"FunctionCall","src":"1308:13:19"}],"id":2861,"name":"VariableDeclarationStatement","src":"1288:33:19"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":2853,"isOffset":false,"isSlot":false,"src":"1396:16:19","valueSize":1}},{"_bts":{"declaration":2834,"isOffset":false,"isSlot":false,"src":"1426:4:19","valueSize":1}},{"startByte":{"declaration":2856,"isOffset":false,"isSlot":false,"src":"1432:9:19","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":2862,"name":"InlineAssembly","src":"1373:80:19"},{"attributes":{"functionReturnParameters":2840},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2863,"name":"ElementaryTypeNameExpression","src":"1470:7:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2853,"type":"bytes20","value":"convertedAddress"},"id":2864,"name":"Identifier","src":"1478:16:19"}],"id":2865,"name":"FunctionCall","src":"1470:25:19"}],"id":2866,"name":"Return","src":"1463:32:19"}],"id":2867,"name":"Block","src":"1172:330:19"}],"id":2868,"name":"FunctionDefinition","src":"1081:421:19"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":2937,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":2902,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2869,"name":"ElementaryTypeName","src":"1651:5:19"}],"id":2870,"name":"VariableDeclaration","src":"1651:17:19"},{"attributes":{"constant":false,"name":"_from","scope":2902,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2871,"name":"ElementaryTypeName","src":"1670:7:19"}],"id":2872,"name":"VariableDeclaration","src":"1670:13:19"}],"id":2873,"name":"ParameterList","src":"1650:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":2902,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2874,"name":"ElementaryTypeName","src":"1708:6:19"}],"id":2875,"name":"VariableDeclaration","src":"1708:6:19"}],"id":2876,"name":"ParameterList","src":"1707:8:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2877,"name":"Identifier","src":"1726:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"bytes memory","value":"_bts"},"id":2878,"name":"Identifier","src":"1734:4:19"}],"id":2879,"name":"MemberAccess","src":"1734:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2872,"type":"uint256","value":"_from"},"id":2880,"name":"Identifier","src":"1749:5:19"}],"id":2881,"name":"MemberAccess","src":"1749:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":2882,"name":"Literal","src":"1759:1:19"}],"id":2883,"name":"FunctionCall","src":"1749:12:19"}],"id":2884,"name":"BinaryOperation","src":"1734:27:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":2885,"name":"Literal","src":"1763:22:19"}],"id":2886,"name":"FunctionCall","src":"1726:60:19"}],"id":2887,"name":"ExpressionStatement","src":"1726:60:19"},{"attributes":{"assignments":[2889],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":2901,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2888,"name":"ElementaryTypeName","src":"1797:6:19"}],"id":2889,"name":"VariableDeclaration","src":"1797:19:19"}],"id":2890,"name":"VariableDeclarationStatement","src":"1797:19:19"},{"attributes":{"assignments":[2892]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":2901,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2891,"name":"ElementaryTypeName","src":"1826:7:19"}],"id":2892,"name":"VariableDeclaration","src":"1826:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2872,"type":"uint256","value":"_from"},"id":2893,"name":"Identifier","src":"1846:5:19"}],"id":2894,"name":"MemberAccess","src":"1846:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2895,"name":"Literal","src":"1856:2:19"}],"id":2896,"name":"FunctionCall","src":"1846:13:19"}],"id":2897,"name":"VariableDeclarationStatement","src":"1826:33:19"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":2889,"isOffset":false,"isSlot":false,"src":"1934:12:19","valueSize":1}},{"_bts":{"declaration":2870,"isOffset":false,"isSlot":false,"src":"1960:4:19","valueSize":1}},{"startByte":{"declaration":2892,"isOffset":false,"isSlot":false,"src":"1966:9:19","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":2898,"name":"InlineAssembly","src":"1911:76:19"},{"attributes":{"functionReturnParameters":2876},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2889,"type":"bytes4","value":"slicedBytes4"},"id":2899,"name":"Identifier","src":"2004:12:19"}],"id":2900,"name":"Return","src":"1997:19:19"}],"id":2901,"name":"Block","src":"1716:307:19"}],"id":2902,"name":"FunctionDefinition","src":"1627:396:19"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":2937,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":2936,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2903,"name":"ElementaryTypeName","src":"2398:5:19"}],"id":2904,"name":"VariableDeclaration","src":"2398:17:19"},{"attributes":{"constant":false,"name":"_from","scope":2936,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2905,"name":"ElementaryTypeName","src":"2417:7:19"}],"id":2906,"name":"VariableDeclaration","src":"2417:13:19"}],"id":2907,"name":"ParameterList","src":"2397:34:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":2936,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2908,"name":"ElementaryTypeName","src":"2455:7:19"}],"id":2909,"name":"VariableDeclaration","src":"2455:7:19"}],"id":2910,"name":"ParameterList","src":"2454:9:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2911,"name":"Identifier","src":"2474:7:19"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2904,"type":"bytes memory","value":"_bts"},"id":2912,"name":"Identifier","src":"2482:4:19"}],"id":2913,"name":"MemberAccess","src":"2482:11:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2906,"type":"uint256","value":"_from"},"id":2914,"name":"Identifier","src":"2497:5:19"}],"id":2915,"name":"MemberAccess","src":"2497:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2916,"name":"Literal","src":"2507:2:19"}],"id":2917,"name":"FunctionCall","src":"2497:13:19"}],"id":2918,"name":"BinaryOperation","src":"2482:28:19"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":2919,"name":"Literal","src":"2512:22:19"}],"id":2920,"name":"FunctionCall","src":"2474:61:19"}],"id":2921,"name":"ExpressionStatement","src":"2474:61:19"},{"attributes":{"assignments":[2923],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":2935,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2922,"name":"ElementaryTypeName","src":"2546:7:19"}],"id":2923,"name":"VariableDeclaration","src":"2546:24:19"}],"id":2924,"name":"VariableDeclarationStatement","src":"2546:24:19"},{"attributes":{"assignments":[2926]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":2935,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2925,"name":"ElementaryTypeName","src":"2580:7:19"}],"id":2926,"name":"VariableDeclaration","src":"2580:17:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2906,"type":"uint256","value":"_from"},"id":2927,"name":"Identifier","src":"2600:5:19"}],"id":2928,"name":"MemberAccess","src":"2600:9:19"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2929,"name":"Literal","src":"2610:2:19"}],"id":2930,"name":"FunctionCall","src":"2600:13:19"}],"id":2931,"name":"VariableDeclarationStatement","src":"2580:33:19"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":2923,"isOffset":false,"isSlot":false,"src":"2688:16:19","valueSize":1}},{"_bts":{"declaration":2904,"isOffset":false,"isSlot":false,"src":"2718:4:19","valueSize":1}},{"startByte":{"declaration":2926,"isOffset":false,"isSlot":false,"src":"2724:9:19","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":2932,"name":"InlineAssembly","src":"2665:80:19"},{"attributes":{"functionReturnParameters":2910},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2923,"type":"uint256","value":"convertedUint256"},"id":2933,"name":"Identifier","src":"2762:16:19"}],"id":2934,"name":"Return","src":"2755:23:19"}],"id":2935,"name":"Block","src":"2464:321:19"}],"id":2936,"name":"FunctionDefinition","src":"2373:412:19"}],"id":2937,"name":"ContractDefinition","src":"911:1876:19"}],"id":2938,"name":"SourceUnit","src":"770:2018:19"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[3033]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2939,"name":"PragmaDirective","src":"772:24:20"},{"attributes":{"SourceUnit":3528,"absolutePath":"controller.sol","file":"../controller.sol","scope":3034,"symbolAliases":[null],"unitAlias":""},"id":2940,"name":"ImportDirective","src":"798:27:20"},{"attributes":{"SourceUnit":3573,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":3034,"symbolAliases":[null],"unitAlias":""},"id":2941,"name":"ImportDirective","src":"826:29:20"},{"attributes":{"contractDependencies":[3572],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[3033,3572],"name":"Controllable","scope":3034},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3572,"type":"contract ENSResolvable"},"id":2942,"name":"UserDefinedTypeName","src":"980:13:20"}],"id":2943,"name":"InheritanceSpecifier","src":"980:13:20"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":3033,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2944,"name":"ElementaryTypeName","src":"1070:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":2945,"name":"Literal","src":"1122:66:20"}],"id":2946,"name":"VariableDeclaration","src":"1070:118:20"},{"attributes":{"constant":false,"name":"_controllerNode","scope":3033,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2947,"name":"ElementaryTypeName","src":"1272:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2946,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":2948,"name":"Identifier","src":"1306:24:20"}],"id":2949,"name":"VariableDeclaration","src":"1272:58:20"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3033,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":2966,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2950,"name":"ElementaryTypeName","src":"1571:7:20"}],"id":2951,"name":"VariableDeclaration","src":"1571:24:20"}],"id":2952,"name":"ParameterList","src":"1570:26:20"},{"attributes":{"parameters":[null]},"children":[],"id":2953,"name":"ParameterList","src":"1606:0:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2951,"type":"bytes32","value":"_controllerNode_"},"id":2954,"name":"Identifier","src":"1665:16:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2955,"name":"ElementaryTypeNameExpression","src":"1685:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2956,"name":"Literal","src":"1693:1:20"}],"id":2957,"name":"FunctionCall","src":"1685:10:20"}],"id":2958,"name":"BinaryOperation","src":"1665:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"bytes32","value":"_controllerNode"},"id":2959,"name":"Identifier","src":"1711:15:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2951,"type":"bytes32","value":"_controllerNode_"},"id":2960,"name":"Identifier","src":"1729:16:20"}],"id":2961,"name":"Assignment","src":"1711:34:20"}],"id":2962,"name":"ExpressionStatement","src":"1711:34:20"}],"id":2963,"name":"Block","src":"1697:59:20"}],"id":2964,"name":"IfStatement","src":"1661:95:20"}],"id":2965,"name":"Block","src":"1606:156:20"}],"id":2966,"name":"FunctionDefinition","src":"1559:203:20"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2967,"name":"ParameterList","src":"1849:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2968,"name":"Identifier","src":"1862:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3015,"type":"function (address) view returns (bool)","value":"_isController"},"id":2969,"name":"Identifier","src":"1870:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":2970,"name":"Identifier","src":"1884:3:20"}],"id":2971,"name":"MemberAccess","src":"1884:10:20"}],"id":2972,"name":"FunctionCall","src":"1870:25:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":2973,"name":"Literal","src":"1897:28:20"}],"id":2974,"name":"FunctionCall","src":"1862:64:20"}],"id":2975,"name":"ExpressionStatement","src":"1862:64:20"},{"id":2976,"name":"PlaceholderStatement","src":"1936:1:20"}],"id":2977,"name":"Block","src":"1852:92:20"}],"id":2978,"name":"ModifierDefinition","src":"1826:118:20"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2979,"name":"ParameterList","src":"2022:2:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":2980,"name":"Identifier","src":"2035:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":2981,"name":"Identifier","src":"2043:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":2982,"name":"Identifier","src":"2052:3:20"}],"id":2983,"name":"MemberAccess","src":"2052:10:20"}],"id":2984,"name":"FunctionCall","src":"2043:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2985,"name":"Literal","src":"2065:24:20"}],"id":2986,"name":"FunctionCall","src":"2035:55:20"}],"id":2987,"name":"ExpressionStatement","src":"2035:55:20"},{"id":2988,"name":"PlaceholderStatement","src":"2100:1:20"}],"id":2989,"name":"Block","src":"2025:83:20"}],"id":2990,"name":"ModifierDefinition","src":"2004:104:20"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":3033,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2991,"name":"ParameterList","src":"2192:2:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":2998,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2992,"name":"ElementaryTypeName","src":"2216:7:20"}],"id":2993,"name":"VariableDeclaration","src":"2216:7:20"}],"id":2994,"name":"ParameterList","src":"2215:9:20"},{"children":[{"attributes":{"functionReturnParameters":2994},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"bytes32","value":"_controllerNode"},"id":2995,"name":"Identifier","src":"2242:15:20"}],"id":2996,"name":"Return","src":"2235:22:20"}],"id":2997,"name":"Block","src":"2225:39:20"}],"id":2998,"name":"FunctionDefinition","src":"2169:95:20"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":3033,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3015,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2999,"name":"ElementaryTypeName","src":"2355:7:20"}],"id":3000,"name":"VariableDeclaration","src":"2355:16:20"}],"id":3001,"name":"ParameterList","src":"2354:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":3015,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3002,"name":"ElementaryTypeName","src":"2396:4:20"}],"id":3003,"name":"VariableDeclaration","src":"2396:4:20"}],"id":3004,"name":"ParameterList","src":"2395:6:20"},{"children":[{"attributes":{"functionReturnParameters":3004},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":3084,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3092,"type":"type(contract IController)","value":"IController"},"id":3005,"name":"Identifier","src":"2419:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3571,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3006,"name":"Identifier","src":"2431:11:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"bytes32","value":"_controllerNode"},"id":3007,"name":"Identifier","src":"2443:15:20"}],"id":3008,"name":"FunctionCall","src":"2431:28:20"}],"id":3009,"name":"FunctionCall","src":"2419:41:20"}],"id":3010,"name":"MemberAccess","src":"2419:54:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3000,"type":"address","value":"_account"},"id":3011,"name":"Identifier","src":"2474:8:20"}],"id":3012,"name":"FunctionCall","src":"2419:64:20"}],"id":3013,"name":"Return","src":"2412:71:20"}],"id":3014,"name":"Block","src":"2402:88:20"}],"id":3015,"name":"FunctionDefinition","src":"2332:158:20"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":3033,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3032,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3016,"name":"ElementaryTypeName","src":"2572:7:20"}],"id":3017,"name":"VariableDeclaration","src":"2572:16:20"}],"id":3018,"name":"ParameterList","src":"2571:18:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":3032,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3019,"name":"ElementaryTypeName","src":"2613:4:20"}],"id":3020,"name":"VariableDeclaration","src":"2613:4:20"}],"id":3021,"name":"ParameterList","src":"2612:6:20"},{"children":[{"attributes":{"functionReturnParameters":3021},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":3091,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3092,"type":"type(contract IController)","value":"IController"},"id":3022,"name":"Identifier","src":"2636:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3571,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3023,"name":"Identifier","src":"2648:11:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2949,"type":"bytes32","value":"_controllerNode"},"id":3024,"name":"Identifier","src":"2660:15:20"}],"id":3025,"name":"FunctionCall","src":"2648:28:20"}],"id":3026,"name":"FunctionCall","src":"2636:41:20"}],"id":3027,"name":"MemberAccess","src":"2636:49:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3017,"type":"address","value":"_account"},"id":3028,"name":"Identifier","src":"2686:8:20"}],"id":3029,"name":"FunctionCall","src":"2636:59:20"}],"id":3030,"name":"Return","src":"2629:66:20"}],"id":3031,"name":"Block","src":"2619:83:20"}],"id":3032,"name":"FunctionDefinition","src":"2554:148:20"}],"id":3033,"name":"ContractDefinition","src":"955:1749:20"}],"id":3034,"name":"SourceUnit","src":"772:1933:20"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[3572]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3529,"name":"PragmaDirective","src":"773:24:21"},{"attributes":{"SourceUnit":4139,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":3573,"symbolAliases":[null],"unitAlias":""},"id":3530,"name":"ImportDirective","src":"799:34:21"},{"attributes":{"SourceUnit":4313,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":3573,"symbolAliases":[null],"unitAlias":""},"id":3531,"name":"ImportDirective","src":"834:45:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[3572],"name":"ENSResolvable","scope":3573},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":3572,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3532,"name":"ElementaryTypeName","src":"1109:7:21"}],"id":3533,"name":"VariableDeclaration","src":"1109:28:21"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3572,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":3543,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3534,"name":"ElementaryTypeName","src":"1205:7:21"}],"id":3535,"name":"VariableDeclaration","src":"1205:16:21"}],"id":3536,"name":"ParameterList","src":"1204:18:21"},{"attributes":{"parameters":[null]},"children":[],"id":3537,"name":"ParameterList","src":"1232:0:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3533,"type":"address","value":"_ensRegistry"},"id":3538,"name":"Identifier","src":"1242:12:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3535,"type":"address","value":"_ensReg_"},"id":3539,"name":"Identifier","src":"1257:8:21"}],"id":3540,"name":"Assignment","src":"1242:23:21"}],"id":3541,"name":"ExpressionStatement","src":"1242:23:21"}],"id":3542,"name":"Block","src":"1232:40:21"}],"id":3543,"name":"FunctionDefinition","src":"1193:79:21"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":3572,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3544,"name":"ParameterList","src":"1384:2:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":3551,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3545,"name":"ElementaryTypeName","src":"1410:7:21"}],"id":3546,"name":"VariableDeclaration","src":"1410:7:21"}],"id":3547,"name":"ParameterList","src":"1409:9:21"},{"children":[{"attributes":{"functionReturnParameters":3547},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3533,"type":"address","value":"_ensRegistry"},"id":3548,"name":"Identifier","src":"1436:12:21"}],"id":3549,"name":"Return","src":"1429:19:21"}],"id":3550,"name":"Block","src":"1419:36:21"}],"id":3551,"name":"FunctionDefinition","src":"1364:91:21"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":3572,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3571,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3552,"name":"ElementaryTypeName","src":"1652:7:21"}],"id":3553,"name":"VariableDeclaration","src":"1652:13:21"}],"id":3554,"name":"ParameterList","src":"1651:15:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":3571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3555,"name":"ElementaryTypeName","src":"1690:7:21"}],"id":3556,"name":"VariableDeclaration","src":"1690:7:21"}],"id":3557,"name":"ParameterList","src":"1689:9:21"},{"children":[{"attributes":{"functionReturnParameters":3557},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":4549,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4312,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":3558,"name":"Identifier","src":"1716:14:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":4114,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4138,"type":"type(contract ENS)","value":"ENS"},"id":3559,"name":"Identifier","src":"1731:3:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3533,"type":"address","value":"_ensRegistry"},"id":3560,"name":"Identifier","src":"1735:12:21"}],"id":3561,"name":"FunctionCall","src":"1731:17:21"}],"id":3562,"name":"MemberAccess","src":"1731:26:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3553,"type":"bytes32","value":"_node"},"id":3563,"name":"Identifier","src":"1758:5:21"}],"id":3564,"name":"FunctionCall","src":"1731:33:21"}],"id":3565,"name":"FunctionCall","src":"1716:49:21"}],"id":3566,"name":"MemberAccess","src":"1716:54:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3553,"type":"bytes32","value":"_node"},"id":3567,"name":"Identifier","src":"1771:5:21"}],"id":3568,"name":"FunctionCall","src":"1716:61:21"}],"id":3569,"name":"Return","src":"1709:68:21"}],"id":3570,"name":"Block","src":"1699:85:21"}],"id":3571,"name":"FunctionDefinition","src":"1631:153:21"}],"id":3572,"name":"ContractDefinition","src":"1008:778:21"}],"id":3573,"name":"SourceUnit","src":"773:1014:21"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[4001]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3846,"name":"PragmaDirective","src":"767:24:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[4001],"name":"Ownable","scope":4002},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3852,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3847,"name":"ElementaryTypeName","src":"1199:7:22"}],"id":3848,"name":"VariableDeclaration","src":"1199:13:22"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3852,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3849,"name":"ElementaryTypeName","src":"1214:7:22"}],"id":3850,"name":"VariableDeclaration","src":"1214:11:22"}],"id":3851,"name":"ParameterList","src":"1198:28:22"}],"id":3852,"name":"EventDefinition","src":"1172:55:22"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":3856,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3853,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":3854,"name":"VariableDeclaration","src":"1254:15:22"}],"id":3855,"name":"ParameterList","src":"1253:17:22"}],"id":3856,"name":"EventDefinition","src":"1232:39:22"},{"attributes":{"constant":false,"name":"_owner","scope":4001,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3857,"name":"ElementaryTypeName","src":"1277:15:22"}],"id":3858,"name":"VariableDeclaration","src":"1277:30:22"},{"attributes":{"constant":false,"name":"_isTransferable","scope":4001,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3859,"name":"ElementaryTypeName","src":"1313:4:22"}],"id":3860,"name":"VariableDeclaration","src":"1313:28:22"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4001,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":3891,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3861,"name":"ElementaryTypeName","src":"1476:15:22"}],"id":3862,"name":"VariableDeclaration","src":"1476:25:22"},{"attributes":{"constant":false,"name":"_transferable_","scope":3891,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3863,"name":"ElementaryTypeName","src":"1503:4:22"}],"id":3864,"name":"VariableDeclaration","src":"1503:19:22"}],"id":3865,"name":"ParameterList","src":"1475:48:22"},{"attributes":{"parameters":[null]},"children":[],"id":3866,"name":"ParameterList","src":"1533:0:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3867,"name":"Identifier","src":"1543:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"address payable","value":"_account_"},"id":3868,"name":"Identifier","src":"1552:9:22"}],"id":3869,"name":"Assignment","src":"1543:18:22"}],"id":3870,"name":"ExpressionStatement","src":"1543:18:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3871,"name":"Identifier","src":"1571:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3864,"type":"bool","value":"_transferable_"},"id":3872,"name":"Identifier","src":"1589:14:22"}],"id":3873,"name":"Assignment","src":"1571:32:22"}],"id":3874,"name":"ExpressionStatement","src":"1571:32:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3875,"name":"Identifier","src":"1687:15:22"}],"id":3876,"name":"UnaryOperation","src":"1686:16:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3856,"type":"function (address)","value":"LockedOwnership"},"id":3877,"name":"Identifier","src":"1723:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"address payable","value":"_account_"},"id":3878,"name":"Identifier","src":"1739:9:22"}],"id":3879,"name":"FunctionCall","src":"1723:26:22"}],"id":3880,"name":"EmitStatement","src":"1718:31:22"}],"id":3881,"name":"Block","src":"1704:56:22"}],"id":3882,"name":"IfStatement","src":"1682:78:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"function (address,address)","value":"TransferredOwnership"},"id":3883,"name":"Identifier","src":"1774:20:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3884,"name":"ElementaryTypeNameExpression","src":"1795:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3885,"name":"Literal","src":"1803:1:22"}],"id":3886,"name":"FunctionCall","src":"1795:10:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3862,"type":"address payable","value":"_account_"},"id":3887,"name":"Identifier","src":"1807:9:22"}],"id":3888,"name":"FunctionCall","src":"1774:43:22"}],"id":3889,"name":"EmitStatement","src":"1769:48:22"}],"id":3890,"name":"Block","src":"1533:291:22"}],"id":3891,"name":"FunctionDefinition","src":"1464:360:22"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3892,"name":"ParameterList","src":"1919:2:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3893,"name":"Identifier","src":"1932:7:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4000,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3894,"name":"Identifier","src":"1940:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":3895,"name":"Identifier","src":"1949:3:22"}],"id":3896,"name":"MemberAccess","src":"1949:10:22"}],"id":3897,"name":"FunctionCall","src":"1940:20:22"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":3898,"name":"Literal","src":"1962:24:22"}],"id":3899,"name":"FunctionCall","src":"1932:55:22"}],"id":3900,"name":"ExpressionStatement","src":"1932:55:22"},{"id":3901,"name":"PlaceholderStatement","src":"1997:1:22"}],"id":3902,"name":"Block","src":"1922:83:22"}],"id":3903,"name":"ModifierDefinition","src":"1901:104:22"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":4001,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3948,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3904,"name":"ElementaryTypeName","src":"2274:15:22"}],"id":3905,"name":"VariableDeclaration","src":"2274:24:22"},{"attributes":{"constant":false,"name":"_transferable","scope":3948,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3906,"name":"ElementaryTypeName","src":"2300:4:22"}],"id":3907,"name":"VariableDeclaration","src":"2300:18:22"}],"id":3908,"name":"ParameterList","src":"2273:46:22"},{"attributes":{"parameters":[null]},"children":[],"id":3911,"name":"ParameterList","src":"2339:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3909,"name":"Identifier","src":"2329:9:22"}],"id":3910,"name":"ModifierInvocation","src":"2329:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3912,"name":"Identifier","src":"2404:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3913,"name":"Identifier","src":"2412:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3914,"name":"Literal","src":"2429:31:22"}],"id":3915,"name":"FunctionCall","src":"2404:57:22"}],"id":3916,"name":"ExpressionStatement","src":"2404:57:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3917,"name":"Identifier","src":"2534:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3905,"type":"address payable","value":"_account"},"id":3918,"name":"Identifier","src":"2542:8:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3919,"name":"ElementaryTypeNameExpression","src":"2554:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3920,"name":"Literal","src":"2562:1:22"}],"id":3921,"name":"FunctionCall","src":"2554:10:22"}],"id":3922,"name":"BinaryOperation","src":"2542:22:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":3923,"name":"Literal","src":"2566:37:22"}],"id":3924,"name":"FunctionCall","src":"2534:70:22"}],"id":3925,"name":"ExpressionStatement","src":"2534:70:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3926,"name":"Identifier","src":"2689:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3907,"type":"bool","value":"_transferable"},"id":3927,"name":"Identifier","src":"2707:13:22"}],"id":3928,"name":"Assignment","src":"2689:31:22"}],"id":3929,"name":"ExpressionStatement","src":"2689:31:22"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3907,"type":"bool","value":"_transferable"},"id":3930,"name":"Identifier","src":"2804:13:22"}],"id":3931,"name":"UnaryOperation","src":"2803:14:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3856,"type":"function (address)","value":"LockedOwnership"},"id":3932,"name":"Identifier","src":"2838:15:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3905,"type":"address payable","value":"_account"},"id":3933,"name":"Identifier","src":"2854:8:22"}],"id":3934,"name":"FunctionCall","src":"2838:25:22"}],"id":3935,"name":"EmitStatement","src":"2833:30:22"}],"id":3936,"name":"Block","src":"2819:55:22"}],"id":3937,"name":"IfStatement","src":"2799:75:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"function (address,address)","value":"TransferredOwnership"},"id":3938,"name":"Identifier","src":"2934:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3939,"name":"Identifier","src":"2955:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3905,"type":"address payable","value":"_account"},"id":3940,"name":"Identifier","src":"2963:8:22"}],"id":3941,"name":"FunctionCall","src":"2934:38:22"}],"id":3942,"name":"EmitStatement","src":"2929:43:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3943,"name":"Identifier","src":"3032:6:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3905,"type":"address payable","value":"_account"},"id":3944,"name":"Identifier","src":"3041:8:22"}],"id":3945,"name":"Assignment","src":"3032:17:22"}],"id":3946,"name":"ExpressionStatement","src":"3032:17:22"}],"id":3947,"name":"Block","src":"2339:717:22"}],"id":3948,"name":"FunctionDefinition","src":"2247:809:22"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":4001,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3949,"name":"ParameterList","src":"3196:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":3956,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3950,"name":"ElementaryTypeName","src":"3222:4:22"}],"id":3951,"name":"VariableDeclaration","src":"3222:4:22"}],"id":3952,"name":"ParameterList","src":"3221:6:22"},{"children":[{"attributes":{"functionReturnParameters":3952},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3953,"name":"Identifier","src":"3245:15:22"}],"id":3954,"name":"Return","src":"3238:22:22"}],"id":3955,"name":"Block","src":"3228:39:22"}],"id":3956,"name":"FunctionDefinition","src":"3173:94:22"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":4001,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3957,"name":"ParameterList","src":"3569:2:22"},{"attributes":{"parameters":[null]},"children":[],"id":3960,"name":"ParameterList","src":"3591:0:22"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3903,"type":"modifier ()","value":"onlyOwner"},"id":3958,"name":"Identifier","src":"3581:9:22"}],"id":3959,"name":"ModifierInvocation","src":"3581:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":3961,"name":"Identifier","src":"3656:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"bool","value":"_isTransferable"},"id":3962,"name":"Identifier","src":"3664:15:22"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3963,"name":"Literal","src":"3681:31:22"}],"id":3964,"name":"FunctionCall","src":"3656:57:22"}],"id":3965,"name":"ExpressionStatement","src":"3656:57:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3966,"name":"Identifier","src":"3767:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3967,"name":"ElementaryTypeNameExpression","src":"3776:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3968,"name":"Literal","src":"3784:1:22"}],"id":3969,"name":"FunctionCall","src":"3776:10:22"}],"id":3970,"name":"Assignment","src":"3767:19:22"}],"id":3971,"name":"ExpressionStatement","src":"3767:19:22"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"function (address,address)","value":"TransferredOwnership"},"id":3972,"name":"Identifier","src":"3802:20:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3973,"name":"Identifier","src":"3823:6:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3974,"name":"ElementaryTypeNameExpression","src":"3831:7:22"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3975,"name":"Literal","src":"3839:1:22"}],"id":3976,"name":"FunctionCall","src":"3831:10:22"}],"id":3977,"name":"FunctionCall","src":"3802:40:22"}],"id":3978,"name":"EmitStatement","src":"3797:45:22"}],"id":3979,"name":"Block","src":"3591:258:22"}],"id":3980,"name":"FunctionDefinition","src":"3543:306:22"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4001,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3981,"name":"ParameterList","src":"3946:2:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":3988,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3982,"name":"ElementaryTypeName","src":"3970:15:22"}],"id":3983,"name":"VariableDeclaration","src":"3970:15:22"}],"id":3984,"name":"ParameterList","src":"3969:17:22"},{"children":[{"attributes":{"functionReturnParameters":3984},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3985,"name":"Identifier","src":"4004:6:22"}],"id":3986,"name":"Return","src":"3997:13:22"}],"id":3987,"name":"Block","src":"3987:30:22"}],"id":3988,"name":"FunctionDefinition","src":"3932:85:22"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":4001,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":4000,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3989,"name":"ElementaryTypeName","src":"4141:7:22"}],"id":3990,"name":"VariableDeclaration","src":"4141:16:22"}],"id":3991,"name":"ParameterList","src":"4140:18:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":4000,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3992,"name":"ElementaryTypeName","src":"4182:4:22"}],"id":3993,"name":"VariableDeclaration","src":"4182:4:22"}],"id":3994,"name":"ParameterList","src":"4181:6:22"},{"children":[{"attributes":{"functionReturnParameters":3994},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"address","value":"_address"},"id":3995,"name":"Identifier","src":"4205:8:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3858,"type":"address payable","value":"_owner"},"id":3996,"name":"Identifier","src":"4217:6:22"}],"id":3997,"name":"BinaryOperation","src":"4205:18:22"}],"id":3998,"name":"Return","src":"4198:25:22"}],"id":3999,"name":"Block","src":"4188:42:22"}],"id":4000,"name":"FunctionDefinition","src":"4123:107:22"}],"id":4001,"name":"ContractDefinition","src":"1149:3083:22"}],"id":4002,"name":"SourceUnit","src":"767:3466:22"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[3073]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3035,"name":"PragmaDirective","src":"773:24:23"},{"attributes":{"SourceUnit":3626,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3074,"symbolAliases":[null],"unitAlias":""},"id":3036,"name":"ImportDirective","src":"799:32:23"},{"attributes":{"SourceUnit":3845,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":3074,"symbolAliases":[null],"unitAlias":""},"id":3037,"name":"ImportDirective","src":"832:36:23"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[3073],"name":"Transferrable","scope":3074},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3844,"type":"library SafeERC20"},"id":3038,"name":"UserDefinedTypeName","src":"996:9:23"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3625,"type":"contract ERC20"},"id":3039,"name":"UserDefinedTypeName","src":"1010:5:23"}],"id":3040,"name":"UsingForDirective","src":"990:26:23"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":3073,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3072,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3041,"name":"ElementaryTypeName","src":"1389:15:23"}],"id":3042,"name":"VariableDeclaration","src":"1389:19:23"},{"attributes":{"constant":false,"name":"_asset","scope":3072,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3043,"name":"ElementaryTypeName","src":"1410:7:23"}],"id":3044,"name":"VariableDeclaration","src":"1410:14:23"},{"attributes":{"constant":false,"name":"_amount","scope":3072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3045,"name":"ElementaryTypeName","src":"1426:7:23"}],"id":3046,"name":"VariableDeclaration","src":"1426:15:23"}],"id":3047,"name":"ParameterList","src":"1388:54:23"},{"attributes":{"parameters":[null]},"children":[],"id":3048,"name":"ParameterList","src":"1452:0:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3044,"type":"address","value":"_asset"},"id":3049,"name":"Identifier","src":"1510:6:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3050,"name":"ElementaryTypeNameExpression","src":"1520:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3051,"name":"Literal","src":"1528:1:23"}],"id":3052,"name":"FunctionCall","src":"1520:10:23"}],"id":3053,"name":"BinaryOperation","src":"1510:20:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3042,"type":"address payable","value":"_to"},"id":3054,"name":"Identifier","src":"1546:3:23"}],"id":3056,"name":"MemberAccess","src":"1546:12:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3046,"type":"uint256","value":"_amount"},"id":3057,"name":"Identifier","src":"1559:7:23"}],"id":3058,"name":"FunctionCall","src":"1546:21:23"}],"id":3059,"name":"ExpressionStatement","src":"1546:21:23"}],"id":3060,"name":"Block","src":"1532:46:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":3658,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3625,"type":"type(contract ERC20)","value":"ERC20"},"id":3061,"name":"Identifier","src":"1598:5:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3044,"type":"address","value":"_asset"},"id":3062,"name":"Identifier","src":"1604:6:23"}],"id":3063,"name":"FunctionCall","src":"1598:13:23"}],"id":3064,"name":"MemberAccess","src":"1598:26:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3042,"type":"address payable","value":"_to"},"id":3065,"name":"Identifier","src":"1625:3:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3046,"type":"uint256","value":"_amount"},"id":3066,"name":"Identifier","src":"1630:7:23"}],"id":3067,"name":"FunctionCall","src":"1598:40:23"}],"id":3068,"name":"ExpressionStatement","src":"1598:40:23"}],"id":3069,"name":"Block","src":"1584:65:23"}],"id":3070,"name":"IfStatement","src":"1506:143:23"}],"id":3071,"name":"Block","src":"1452:203:23"}],"id":3072,"name":"FunctionDefinition","src":"1366:289:23"}],"id":3073,"name":"ContractDefinition","src":"961:696:23"}],"id":3074,"name":"SourceUnit","src":"773:885:23"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[87],"TokenWhitelist":[987]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"774:24:24"},{"attributes":{"SourceUnit":3034,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"800:38:24"},{"attributes":{"SourceUnit":3074,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"839:39:24"},{"attributes":{"SourceUnit":2938,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"879:36:24"},{"attributes":{"SourceUnit":2827,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"916:33:24"},{"attributes":{"SourceUnit":1121,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":988,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"950:34:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[87],"name":"ITokenWhitelist","scope":988},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7,"name":"ElementaryTypeName","src":"1124:7:24"}],"id":8,"name":"VariableDeclaration","src":"1124:7:24"}],"id":9,"name":"ParameterList","src":"1123:9:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":10,"name":"ElementaryTypeName","src":"1156:6:24"}],"id":11,"name":"VariableDeclaration","src":"1156:13:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":12,"name":"ElementaryTypeName","src":"1171:7:24"}],"id":13,"name":"VariableDeclaration","src":"1171:7:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":14,"name":"ElementaryTypeName","src":"1180:7:24"}],"id":15,"name":"VariableDeclaration","src":"1180:7:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":16,"name":"ElementaryTypeName","src":"1189:4:24"}],"id":17,"name":"VariableDeclaration","src":"1189:4:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":18,"name":"ElementaryTypeName","src":"1195:4:24"}],"id":19,"name":"VariableDeclaration","src":"1195:4:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":20,"name":"ElementaryTypeName","src":"1201:4:24"}],"id":21,"name":"VariableDeclaration","src":"1201:4:24"},{"attributes":{"constant":false,"name":"","scope":25,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":22,"name":"ElementaryTypeName","src":"1207:7:24"}],"id":23,"name":"VariableDeclaration","src":"1207:7:24"}],"id":24,"name":"ParameterList","src":"1155:60:24"}],"id":25,"name":"FunctionDefinition","src":"1102:114:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":26,"name":"ParameterList","src":"1248:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":27,"name":"ElementaryTypeName","src":"1274:6:24"}],"id":28,"name":"VariableDeclaration","src":"1274:13:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":29,"name":"ElementaryTypeName","src":"1289:7:24"}],"id":30,"name":"VariableDeclaration","src":"1289:7:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":31,"name":"ElementaryTypeName","src":"1298:7:24"}],"id":32,"name":"VariableDeclaration","src":"1298:7:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":33,"name":"ElementaryTypeName","src":"1307:4:24"}],"id":34,"name":"VariableDeclaration","src":"1307:4:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":35,"name":"ElementaryTypeName","src":"1313:4:24"}],"id":36,"name":"VariableDeclaration","src":"1313:4:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":37,"name":"ElementaryTypeName","src":"1319:4:24"}],"id":38,"name":"VariableDeclaration","src":"1319:4:24"},{"attributes":{"constant":false,"name":"","scope":42,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":39,"name":"ElementaryTypeName","src":"1325:7:24"}],"id":40,"name":"VariableDeclaration","src":"1325:7:24"}],"id":41,"name":"ParameterList","src":"1273:60:24"}],"id":42,"name":"FunctionDefinition","src":"1222:112:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":43,"name":"ParameterList","src":"1366:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":48,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":44,"name":"ElementaryTypeName","src":"1392:7:24"}],"id":45,"name":"ArrayTypeName","src":"1392:9:24"}],"id":46,"name":"VariableDeclaration","src":"1392:16:24"}],"id":47,"name":"ParameterList","src":"1391:18:24"}],"id":48,"name":"FunctionDefinition","src":"1340:70:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":49,"name":"ParameterList","src":"1441:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":54,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":50,"name":"ElementaryTypeName","src":"1467:7:24"}],"id":51,"name":"ArrayTypeName","src":"1467:9:24"}],"id":52,"name":"VariableDeclaration","src":"1467:16:24"}],"id":53,"name":"ParameterList","src":"1466:18:24"}],"id":54,"name":"FunctionDefinition","src":"1416:69:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":61,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":55,"name":"ElementaryTypeName","src":"1518:6:24"}],"id":56,"name":"VariableDeclaration","src":"1518:6:24"}],"id":57,"name":"ParameterList","src":"1517:8:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":61,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":58,"name":"ElementaryTypeName","src":"1549:4:24"}],"id":59,"name":"VariableDeclaration","src":"1549:4:24"}],"id":60,"name":"ParameterList","src":"1548:6:24"}],"id":61,"name":"FunctionDefinition","src":"1491:64:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":72,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":62,"name":"ElementaryTypeName","src":"1597:7:24"}],"id":63,"name":"VariableDeclaration","src":"1597:7:24"},{"attributes":{"constant":false,"name":"","scope":72,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":64,"name":"ElementaryTypeName","src":"1606:5:24"}],"id":65,"name":"VariableDeclaration","src":"1606:14:24"}],"id":66,"name":"ParameterList","src":"1596:25:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":72,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":67,"name":"ElementaryTypeName","src":"1645:7:24"}],"id":68,"name":"VariableDeclaration","src":"1645:7:24"},{"attributes":{"constant":false,"name":"","scope":72,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":69,"name":"ElementaryTypeName","src":"1654:7:24"}],"id":70,"name":"VariableDeclaration","src":"1654:7:24"}],"id":71,"name":"ParameterList","src":"1644:18:24"}],"id":72,"name":"FunctionDefinition","src":"1561:102:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":87,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":73,"name":"ParameterList","src":"1688:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":77,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":74,"name":"ElementaryTypeName","src":"1714:7:24"}],"id":75,"name":"VariableDeclaration","src":"1714:7:24"}],"id":76,"name":"ParameterList","src":"1713:9:24"}],"id":77,"name":"FunctionDefinition","src":"1669:54:24"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":87,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":86,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":78,"name":"ElementaryTypeName","src":"1754:7:24"}],"id":79,"name":"VariableDeclaration","src":"1754:7:24"},{"attributes":{"constant":false,"name":"","scope":86,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":80,"name":"ElementaryTypeName","src":"1763:7:24"}],"id":81,"name":"VariableDeclaration","src":"1763:7:24"},{"attributes":{"constant":false,"name":"","scope":86,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":82,"name":"ElementaryTypeName","src":"1772:7:24"}],"id":83,"name":"VariableDeclaration","src":"1772:7:24"}],"id":84,"name":"ParameterList","src":"1753:27:24"},{"attributes":{"parameters":[null]},"children":[],"id":85,"name":"ParameterList","src":"1789:0:24"}],"id":86,"name":"FunctionDefinition","src":"1729:61:24"}],"id":87,"name":"ContractDefinition","src":"1070:722:24"},{"attributes":{"contractDependencies":[3033,3073,3572],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[987,3073,3033,3572],"name":"TokenWhitelist","scope":988},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3572,"type":"contract ENSResolvable"},"id":88,"name":"UserDefinedTypeName","src":"1966:13:24"}],"id":89,"name":"InheritanceSpecifier","src":"1966:13:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":3033,"type":"contract Controllable"},"id":90,"name":"UserDefinedTypeName","src":"1981:12:24"}],"id":91,"name":"InheritanceSpecifier","src":"1981:12:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3073,"type":"contract Transferrable"},"id":92,"name":"UserDefinedTypeName","src":"1995:13:24"}],"id":93,"name":"InheritanceSpecifier","src":"1995:13:24"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":2826,"type":"library strings"},"id":94,"name":"UserDefinedTypeName","src":"2021:7:24"}],"id":95,"name":"UsingForDirective","src":"2015:20:24"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":1120,"type":"library SafeMath"},"id":96,"name":"UserDefinedTypeName","src":"2046:8:24"},{"attributes":{"name":"uint256","type":"uint256"},"id":97,"name":"ElementaryTypeName","src":"2059:7:24"}],"id":98,"name":"UsingForDirective","src":"2040:27:24"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":2937,"type":"library BytesUtils"},"id":99,"name":"UserDefinedTypeName","src":"2078:10:24"},{"attributes":{"name":"bytes","type":"bytes"},"id":100,"name":"ElementaryTypeName","src":"2093:5:24"}],"id":101,"name":"UsingForDirective","src":"2072:27:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":109,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":102,"name":"ElementaryTypeName","src":"2128:7:24"}],"id":103,"name":"VariableDeclaration","src":"2128:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":109,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":104,"name":"ElementaryTypeName","src":"2145:7:24"}],"id":105,"name":"VariableDeclaration","src":"2145:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":106,"name":"ElementaryTypeName","src":"2161:7:24"}],"id":107,"name":"VariableDeclaration","src":"2161:13:24"}],"id":108,"name":"ParameterList","src":"2127:48:24"}],"id":109,"name":"EventDefinition","src":"2105:71:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":117,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":110,"name":"ElementaryTypeName","src":"2209:7:24"}],"id":111,"name":"VariableDeclaration","src":"2209:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":117,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":112,"name":"ElementaryTypeName","src":"2226:7:24"}],"id":113,"name":"VariableDeclaration","src":"2226:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":117,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":114,"name":"ElementaryTypeName","src":"2242:4:24"}],"id":115,"name":"VariableDeclaration","src":"2242:14:24"}],"id":116,"name":"ParameterList","src":"2208:49:24"}],"id":117,"name":"EventDefinition","src":"2182:76:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":125,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":118,"name":"ElementaryTypeName","src":"2292:7:24"}],"id":119,"name":"VariableDeclaration","src":"2292:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":125,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":120,"name":"ElementaryTypeName","src":"2309:7:24"}],"id":121,"name":"VariableDeclaration","src":"2309:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":125,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":122,"name":"ElementaryTypeName","src":"2325:4:24"}],"id":123,"name":"VariableDeclaration","src":"2325:16:24"}],"id":124,"name":"ParameterList","src":"2291:51:24"}],"id":125,"name":"EventDefinition","src":"2263:80:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":139,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":126,"name":"ElementaryTypeName","src":"2366:7:24"}],"id":127,"name":"VariableDeclaration","src":"2366:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":139,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":128,"name":"ElementaryTypeName","src":"2383:7:24"}],"id":129,"name":"VariableDeclaration","src":"2383:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":139,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":130,"name":"ElementaryTypeName","src":"2399:6:24"}],"id":131,"name":"VariableDeclaration","src":"2399:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":139,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":132,"name":"ElementaryTypeName","src":"2415:7:24"}],"id":133,"name":"VariableDeclaration","src":"2415:18:24"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":139,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":134,"name":"ElementaryTypeName","src":"2435:4:24"}],"id":135,"name":"VariableDeclaration","src":"2435:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":139,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":136,"name":"ElementaryTypeName","src":"2451:4:24"}],"id":137,"name":"VariableDeclaration","src":"2451:16:24"}],"id":138,"name":"ParameterList","src":"2365:103:24"}],"id":139,"name":"EventDefinition","src":"2349:120:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":145,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":140,"name":"ElementaryTypeName","src":"2493:7:24"}],"id":141,"name":"VariableDeclaration","src":"2493:15:24"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":145,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":142,"name":"ElementaryTypeName","src":"2510:7:24"}],"id":143,"name":"VariableDeclaration","src":"2510:14:24"}],"id":144,"name":"ParameterList","src":"2492:33:24"}],"id":145,"name":"EventDefinition","src":"2474:52:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":149,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":146,"name":"ElementaryTypeName","src":"2552:6:24"}],"id":147,"name":"VariableDeclaration","src":"2552:16:24"}],"id":148,"name":"ParameterList","src":"2551:18:24"}],"id":149,"name":"EventDefinition","src":"2532:38:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":153,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":150,"name":"ElementaryTypeName","src":"2597:6:24"}],"id":151,"name":"VariableDeclaration","src":"2597:16:24"}],"id":152,"name":"ParameterList","src":"2596:18:24"}],"id":153,"name":"EventDefinition","src":"2575:40:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":159,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":154,"name":"ElementaryTypeName","src":"2647:7:24"}],"id":155,"name":"VariableDeclaration","src":"2647:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":159,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":156,"name":"ElementaryTypeName","src":"2663:6:24"}],"id":157,"name":"VariableDeclaration","src":"2663:16:24"}],"id":158,"name":"ParameterList","src":"2646:34:24"}],"id":159,"name":"EventDefinition","src":"2620:61:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":165,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":160,"name":"ElementaryTypeName","src":"2715:7:24"}],"id":161,"name":"VariableDeclaration","src":"2715:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":165,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":162,"name":"ElementaryTypeName","src":"2731:6:24"}],"id":163,"name":"VariableDeclaration","src":"2731:16:24"}],"id":164,"name":"ParameterList","src":"2714:34:24"}],"id":165,"name":"EventDefinition","src":"2686:63:24"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":173,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":166,"name":"ElementaryTypeName","src":"2769:7:24"}],"id":167,"name":"VariableDeclaration","src":"2769:11:24"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":173,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":168,"name":"ElementaryTypeName","src":"2782:7:24"}],"id":169,"name":"VariableDeclaration","src":"2782:14:24"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":173,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":170,"name":"ElementaryTypeName","src":"2798:7:24"}],"id":171,"name":"VariableDeclaration","src":"2798:15:24"}],"id":172,"name":"ParameterList","src":"2768:46:24"}],"id":173,"name":"EventDefinition","src":"2755:60:24"},{"attributes":{"constant":true,"name":"_APPROVE","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":174,"name":"ElementaryTypeName","src":"2924:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":175,"name":"Literal","src":"2959:10:24"}],"id":176,"name":"VariableDeclaration","src":"2924:45:24"},{"attributes":{"constant":true,"name":"_BURN","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":177,"name":"ElementaryTypeName","src":"3028:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":178,"name":"Literal","src":"3060:10:24"}],"id":179,"name":"VariableDeclaration","src":"3028:42:24"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":180,"name":"ElementaryTypeName","src":"3118:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":181,"name":"Literal","src":"3154:10:24"}],"id":182,"name":"VariableDeclaration","src":"3118:46:24"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":183,"name":"ElementaryTypeName","src":"3224:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":184,"name":"Literal","src":"3265:10:24"}],"id":185,"name":"VariableDeclaration","src":"3224:51:24"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":987,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":200,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":186,"name":"ElementaryTypeName","src":"3371:6:24"}],"id":187,"name":"VariableDeclaration","src":"3371:13:24"},{"attributes":{"constant":false,"name":"magnitude","scope":200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":188,"name":"ElementaryTypeName","src":"3410:7:24"}],"id":189,"name":"VariableDeclaration","src":"3410:17:24"},{"attributes":{"constant":false,"name":"rate","scope":200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":190,"name":"ElementaryTypeName","src":"3452:7:24"}],"id":191,"name":"VariableDeclaration","src":"3452:12:24"},{"attributes":{"constant":false,"name":"available","scope":200,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":192,"name":"ElementaryTypeName","src":"3504:4:24"}],"id":193,"name":"VariableDeclaration","src":"3504:14:24"},{"attributes":{"constant":false,"name":"loadable","scope":200,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":194,"name":"ElementaryTypeName","src":"3570:4:24"}],"id":195,"name":"VariableDeclaration","src":"3570:13:24"},{"attributes":{"constant":false,"name":"redeemable","scope":200,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":196,"name":"ElementaryTypeName","src":"3640:4:24"}],"id":197,"name":"VariableDeclaration","src":"3640:15:24"},{"attributes":{"constant":false,"name":"lastUpdate","scope":200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":198,"name":"ElementaryTypeName","src":"3724:7:24"}],"id":199,"name":"VariableDeclaration","src":"3724:18:24"}],"id":200,"name":"StructDefinition","src":"3348:433:24"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":987,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":201,"name":"ElementaryTypeName","src":"3795:7:24"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":200,"type":"struct TokenWhitelist.Token"},"id":202,"name":"UserDefinedTypeName","src":"3806:5:24"}],"id":203,"name":"Mapping","src":"3787:25:24"}],"id":204,"name":"VariableDeclaration","src":"3787:47:24"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":987,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":205,"name":"ElementaryTypeName","src":"4004:6:24"},{"attributes":{"name":"bool","type":"bool"},"id":206,"name":"ElementaryTypeName","src":"4014:4:24"}],"id":207,"name":"Mapping","src":"3996:23:24"}],"id":208,"name":"VariableDeclaration","src":"3996:50:24"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":987,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":209,"name":"ElementaryTypeName","src":"4053:7:24"}],"id":210,"name":"ArrayTypeName","src":"4053:9:24"}],"id":211,"name":"VariableDeclaration","src":"4053:36:24"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":987,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":212,"name":"ElementaryTypeName","src":"4182:7:24"}],"id":213,"name":"VariableDeclaration","src":"4182:34:24"},{"attributes":{"constant":false,"name":"_stablecoin","scope":987,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":214,"name":"ElementaryTypeName","src":"4266:7:24"}],"id":215,"name":"VariableDeclaration","src":"4266:27:24"},{"attributes":{"constant":false,"name":"_oracleNode","scope":987,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":216,"name":"ElementaryTypeName","src":"4372:7:24"}],"id":217,"name":"VariableDeclaration","src":"4372:27:24"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":267,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":218,"name":"ElementaryTypeName","src":"4770:7:24"}],"id":219,"name":"VariableDeclaration","src":"4770:13:24"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":267,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":220,"name":"ElementaryTypeName","src":"4785:7:24"}],"id":221,"name":"VariableDeclaration","src":"4785:20:24"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":267,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":222,"name":"ElementaryTypeName","src":"4807:7:24"}],"id":223,"name":"VariableDeclaration","src":"4807:24:24"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":267,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":224,"name":"ElementaryTypeName","src":"4833:7:24"}],"id":225,"name":"VariableDeclaration","src":"4833:27:24"}],"id":226,"name":"ParameterList","src":"4769:92:24"},{"attributes":{"parameters":[null]},"children":[],"id":233,"name":"ParameterList","src":"4949:0:24"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3572,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":227,"name":"Identifier","src":"4885:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":219,"type":"address","value":"_ens_"},"id":228,"name":"Identifier","src":"4899:5:24"}],"id":229,"name":"ModifierInvocation","src":"4885:20:24"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3033,"type":"type(contract Controllable)","value":"Controllable"},"id":230,"name":"Identifier","src":"4914:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":223,"type":"bytes32","value":"_controllerNode_"},"id":231,"name":"Identifier","src":"4927:16:24"}],"id":232,"name":"ModifierInvocation","src":"4914:30:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":217,"type":"bytes32","value":"_oracleNode"},"id":234,"name":"Identifier","src":"4959:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":221,"type":"bytes32","value":"_oracleNode_"},"id":235,"name":"Identifier","src":"4973:12:24"}],"id":236,"name":"Assignment","src":"4959:26:24"}],"id":237,"name":"ExpressionStatement","src":"4959:26:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"address","value":"_stablecoin"},"id":238,"name":"Identifier","src":"4995:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":225,"type":"address","value":"_stablecoinAddress_"},"id":239,"name":"Identifier","src":"5009:19:24"}],"id":240,"name":"Assignment","src":"4995:33:24"}],"id":241,"name":"ExpressionStatement","src":"4995:33:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":242,"name":"Identifier","src":"5083:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":176,"type":"bytes4","value":"_APPROVE"},"id":243,"name":"Identifier","src":"5102:8:24"}],"id":244,"name":"IndexAccess","src":"5083:28:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":245,"name":"Literal","src":"5114:4:24"}],"id":246,"name":"Assignment","src":"5083:35:24"}],"id":247,"name":"ExpressionStatement","src":"5083:35:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":248,"name":"Identifier","src":"5128:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":179,"type":"bytes4","value":"_BURN"},"id":249,"name":"Identifier","src":"5147:5:24"}],"id":250,"name":"IndexAccess","src":"5128:25:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":251,"name":"Literal","src":"5156:4:24"}],"id":252,"name":"Assignment","src":"5128:32:24"}],"id":253,"name":"ExpressionStatement","src":"5128:32:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":254,"name":"Identifier","src":"5170:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":182,"type":"bytes4","value":"_TRANSFER"},"id":255,"name":"Identifier","src":"5189:9:24"}],"id":256,"name":"IndexAccess","src":"5170:29:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":257,"name":"Literal","src":"5202:4:24"}],"id":258,"name":"Assignment","src":"5170:36:24"}],"id":259,"name":"ExpressionStatement","src":"5170:36:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":260,"name":"Identifier","src":"5216:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":185,"type":"bytes4","value":"_TRANSFER_FROM"},"id":261,"name":"Identifier","src":"5235:14:24"}],"id":262,"name":"IndexAccess","src":"5216:34:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":263,"name":"Literal","src":"5253:4:24"}],"id":264,"name":"Assignment","src":"5216:41:24"}],"id":265,"name":"ExpressionStatement","src":"5216:41:24"}],"id":266,"name":"Block","src":"4949:315:24"}],"id":267,"name":"FunctionDefinition","src":"4758:506:24"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":268,"name":"ParameterList","src":"5296:2:24"},{"children":[{"attributes":{"assignments":[270]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":289,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":269,"name":"ElementaryTypeName","src":"5309:7:24"}],"id":270,"name":"VariableDeclaration","src":"5309:21:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3571,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":271,"name":"Identifier","src":"5333:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":217,"type":"bytes32","value":"_oracleNode"},"id":272,"name":"Identifier","src":"5345:11:24"}],"id":273,"name":"FunctionCall","src":"5333:24:24"}],"id":274,"name":"VariableDeclarationStatement","src":"5309:48:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":275,"name":"Identifier","src":"5367:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3032,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":276,"name":"Identifier","src":"5375:8:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":277,"name":"Identifier","src":"5384:3:24"}],"id":278,"name":"MemberAccess","src":"5384:10:24"}],"id":279,"name":"FunctionCall","src":"5375:20:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":280,"name":"Identifier","src":"5399:3:24"}],"id":281,"name":"MemberAccess","src":"5399:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"address","value":"oracleAddress"},"id":282,"name":"Identifier","src":"5413:13:24"}],"id":283,"name":"BinaryOperation","src":"5399:27:24"}],"id":284,"name":"BinaryOperation","src":"5375:51:24"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":285,"name":"Literal","src":"5428:24:24"}],"id":286,"name":"FunctionCall","src":"5367:86:24"}],"id":287,"name":"ExpressionStatement","src":"5367:86:24"},{"id":288,"name":"PlaceholderStatement","src":"5463:1:24"}],"id":289,"name":"Block","src":"5299:172:24"}],"id":290,"name":"ModifierDefinition","src":"5270:201:24"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":291,"name":"ElementaryTypeName","src":"6068:7:24"}],"id":292,"name":"ArrayTypeName","src":"6068:9:24"}],"id":293,"name":"VariableDeclaration","src":"6068:26:24"},{"attributes":{"constant":false,"name":"_symbols","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":294,"name":"ElementaryTypeName","src":"6104:7:24"}],"id":295,"name":"ArrayTypeName","src":"6104:9:24"}],"id":296,"name":"VariableDeclaration","src":"6104:27:24"},{"attributes":{"constant":false,"name":"_magnitude","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":297,"name":"ElementaryTypeName","src":"6141:7:24"}],"id":298,"name":"ArrayTypeName","src":"6141:9:24"}],"id":299,"name":"VariableDeclaration","src":"6141:29:24"},{"attributes":{"constant":false,"name":"_loadable","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":300,"name":"ElementaryTypeName","src":"6180:4:24"}],"id":301,"name":"ArrayTypeName","src":"6180:6:24"}],"id":302,"name":"VariableDeclaration","src":"6180:25:24"},{"attributes":{"constant":false,"name":"_redeemable","scope":434,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":303,"name":"ElementaryTypeName","src":"6215:4:24"}],"id":304,"name":"ArrayTypeName","src":"6215:6:24"}],"id":305,"name":"VariableDeclaration","src":"6215:27:24"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":434,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":306,"name":"ElementaryTypeName","src":"6252:7:24"}],"id":307,"name":"VariableDeclaration","src":"6252:19:24"}],"id":308,"name":"ParameterList","src":"6058:219:24"},{"attributes":{"parameters":[null]},"children":[],"id":311,"name":"ParameterList","src":"6297:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":309,"name":"Identifier","src":"6287:9:24"}],"id":310,"name":"ModifierInvocation","src":"6287:9:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":312,"name":"Identifier","src":"6368:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":313,"name":"Identifier","src":"6389:7:24"}],"id":314,"name":"MemberAccess","src":"6389:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":296,"type":"bytes32[] calldata","value":"_symbols"},"id":315,"name":"Identifier","src":"6407:8:24"}],"id":316,"name":"MemberAccess","src":"6407:15:24"}],"id":317,"name":"BinaryOperation","src":"6389:33:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":318,"name":"Identifier","src":"6442:7:24"}],"id":319,"name":"MemberAccess","src":"6442:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"uint256[] calldata","value":"_magnitude"},"id":320,"name":"Identifier","src":"6460:10:24"}],"id":321,"name":"MemberAccess","src":"6460:17:24"}],"id":322,"name":"BinaryOperation","src":"6442:35:24"}],"id":323,"name":"BinaryOperation","src":"6389:88:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":324,"name":"Identifier","src":"6497:7:24"}],"id":325,"name":"MemberAccess","src":"6497:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":302,"type":"bool[] calldata","value":"_loadable"},"id":326,"name":"Identifier","src":"6515:9:24"}],"id":327,"name":"MemberAccess","src":"6515:16:24"}],"id":328,"name":"BinaryOperation","src":"6497:34:24"}],"id":329,"name":"BinaryOperation","src":"6389:142:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":330,"name":"Identifier","src":"6551:7:24"}],"id":331,"name":"MemberAccess","src":"6551:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":302,"type":"bool[] calldata","value":"_loadable"},"id":332,"name":"Identifier","src":"6569:9:24"}],"id":333,"name":"MemberAccess","src":"6569:16:24"}],"id":334,"name":"BinaryOperation","src":"6551:34:24"}],"id":335,"name":"BinaryOperation","src":"6389:196:24"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":336,"name":"Literal","src":"6599:32:24"}],"id":337,"name":"FunctionCall","src":"6368:273:24"}],"id":338,"name":"ExpressionStatement","src":"6368:273:24"},{"children":[{"attributes":{"assignments":[340]},"children":[{"attributes":{"constant":false,"name":"i","scope":432,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":339,"name":"ElementaryTypeName","src":"6715:7:24"}],"id":340,"name":"VariableDeclaration","src":"6715:9:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":341,"name":"Literal","src":"6727:1:24"}],"id":342,"name":"VariableDeclarationStatement","src":"6715:13:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":343,"name":"Identifier","src":"6730:1:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":344,"name":"Identifier","src":"6734:7:24"}],"id":345,"name":"MemberAccess","src":"6734:14:24"}],"id":346,"name":"BinaryOperation","src":"6730:18:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":347,"name":"Identifier","src":"6750:1:24"}],"id":348,"name":"UnaryOperation","src":"6750:3:24"}],"id":349,"name":"ExpressionStatement","src":"6750:3:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":350,"name":"Identifier","src":"6832:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":351,"name":"Identifier","src":"6841:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":352,"name":"Identifier","src":"6855:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":353,"name":"Identifier","src":"6863:1:24"}],"id":354,"name":"IndexAccess","src":"6855:10:24"}],"id":355,"name":"IndexAccess","src":"6841:25:24"}],"id":356,"name":"MemberAccess","src":"6841:35:24"}],"id":357,"name":"UnaryOperation","src":"6840:36:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":358,"name":"Literal","src":"6878:25:24"}],"id":359,"name":"FunctionCall","src":"6832:72:24"}],"id":360,"name":"ExpressionStatement","src":"6832:72:24"},{"attributes":{"assignments":[362]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":431,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":361,"name":"ElementaryTypeName","src":"6964:6:24"}],"id":362,"name":"VariableDeclaration","src":"6964:20:24"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":1375,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":1330,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":296,"type":"bytes32[] calldata","value":"_symbols"},"id":363,"name":"Identifier","src":"6987:8:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":364,"name":"Identifier","src":"6996:1:24"}],"id":365,"name":"IndexAccess","src":"6987:11:24"}],"id":366,"name":"MemberAccess","src":"6987:22:24"}],"id":367,"name":"FunctionCall","src":"6987:24:24"}],"id":368,"name":"MemberAccess","src":"6987:33:24"}],"id":369,"name":"FunctionCall","src":"6987:35:24"}],"id":370,"name":"VariableDeclarationStatement","src":"6964:58:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":371,"name":"Identifier","src":"7084:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":372,"name":"Identifier","src":"7098:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":373,"name":"Identifier","src":"7106:1:24"}],"id":374,"name":"IndexAccess","src":"7098:10:24"}],"id":375,"name":"IndexAccess","src":"7084:25:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":200,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":376,"name":"Identifier","src":"7112:5:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":362,"type":"string memory","value":"symbol"},"id":377,"name":"Identifier","src":"7144:6:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"uint256[] calldata","value":"_magnitude"},"id":378,"name":"Identifier","src":"7179:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":379,"name":"Identifier","src":"7190:1:24"}],"id":380,"name":"IndexAccess","src":"7179:13:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":381,"name":"Literal","src":"7216:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":382,"name":"Literal","src":"7246:4:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":302,"type":"bool[] calldata","value":"_loadable"},"id":383,"name":"Identifier","src":"7278:9:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":384,"name":"Identifier","src":"7288:1:24"}],"id":385,"name":"IndexAccess","src":"7278:12:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":305,"type":"bool[] calldata","value":"_redeemable"},"id":386,"name":"Identifier","src":"7320:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":387,"name":"Identifier","src":"7332:1:24"}],"id":388,"name":"IndexAccess","src":"7320:14:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":307,"type":"uint256","value":"_lastUpdate"},"id":389,"name":"Identifier","src":"7364:11:24"}],"id":390,"name":"FunctionCall","src":"7112:278:24"}],"id":391,"name":"Assignment","src":"7084:306:24"}],"id":392,"name":"ExpressionStatement","src":"7084:306:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":393,"name":"Identifier","src":"7462:18:24"}],"id":395,"name":"MemberAccess","src":"7462:23:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":396,"name":"Identifier","src":"7486:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":397,"name":"Identifier","src":"7494:1:24"}],"id":398,"name":"IndexAccess","src":"7486:10:24"}],"id":399,"name":"FunctionCall","src":"7462:35:24"}],"id":400,"name":"ExpressionStatement","src":"7462:35:24"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":305,"type":"bool[] calldata","value":"_redeemable"},"id":401,"name":"Identifier","src":"7587:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":402,"name":"Identifier","src":"7599:1:24"}],"id":403,"name":"IndexAccess","src":"7587:14:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":404,"name":"Identifier","src":"7621:18:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":1014,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":405,"name":"Identifier","src":"7642:18:24"}],"id":406,"name":"MemberAccess","src":"7642:22:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":407,"name":"Literal","src":"7665:1:24"}],"id":408,"name":"FunctionCall","src":"7642:25:24"}],"id":409,"name":"Assignment","src":"7621:46:24"}],"id":410,"name":"ExpressionStatement","src":"7621:46:24"}],"id":411,"name":"Block","src":"7603:79:24"}],"id":412,"name":"IfStatement","src":"7583:99:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":139,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":413,"name":"Identifier","src":"7742:10:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":414,"name":"Identifier","src":"7753:3:24"}],"id":415,"name":"MemberAccess","src":"7753:10:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"address[] calldata","value":"_tokens"},"id":416,"name":"Identifier","src":"7765:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":417,"name":"Identifier","src":"7773:1:24"}],"id":418,"name":"IndexAccess","src":"7765:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":362,"type":"string memory","value":"symbol"},"id":419,"name":"Identifier","src":"7777:6:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"uint256[] calldata","value":"_magnitude"},"id":420,"name":"Identifier","src":"7785:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":421,"name":"Identifier","src":"7796:1:24"}],"id":422,"name":"IndexAccess","src":"7785:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":302,"type":"bool[] calldata","value":"_loadable"},"id":423,"name":"Identifier","src":"7800:9:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":424,"name":"Identifier","src":"7810:1:24"}],"id":425,"name":"IndexAccess","src":"7800:12:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":305,"type":"bool[] calldata","value":"_redeemable"},"id":426,"name":"Identifier","src":"7814:11:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":340,"type":"uint256","value":"i"},"id":427,"name":"Identifier","src":"7826:1:24"}],"id":428,"name":"IndexAccess","src":"7814:14:24"}],"id":429,"name":"FunctionCall","src":"7742:87:24"}],"id":430,"name":"EmitStatement","src":"7737:92:24"}],"id":431,"name":"Block","src":"6755:1085:24"}],"id":432,"name":"ForStatement","src":"6710:1130:24"}],"id":433,"name":"Block","src":"6297:1549:24"}],"id":434,"name":"FunctionDefinition","src":"6040:1806:24"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":535,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":435,"name":"ElementaryTypeName","src":"7995:7:24"}],"id":436,"name":"ArrayTypeName","src":"7995:9:24"}],"id":437,"name":"VariableDeclaration","src":"7995:26:24"}],"id":438,"name":"ParameterList","src":"7994:28:24"},{"attributes":{"parameters":[null]},"children":[],"id":441,"name":"ParameterList","src":"8042:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":439,"name":"Identifier","src":"8032:9:24"}],"id":440,"name":"ModifierInvocation","src":"8032:9:24"},{"children":[{"children":[{"attributes":{"assignments":[443]},"children":[{"attributes":{"constant":false,"name":"i","scope":533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":442,"name":"ElementaryTypeName","src":"8160:7:24"}],"id":443,"name":"VariableDeclaration","src":"8160:9:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":444,"name":"Literal","src":"8172:1:24"}],"id":445,"name":"VariableDeclarationStatement","src":"8160:13:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":443,"type":"uint256","value":"i"},"id":446,"name":"Identifier","src":"8175:1:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":437,"type":"address[] calldata","value":"_tokens"},"id":447,"name":"Identifier","src":"8179:7:24"}],"id":448,"name":"MemberAccess","src":"8179:14:24"}],"id":449,"name":"BinaryOperation","src":"8175:18:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":443,"type":"uint256","value":"i"},"id":450,"name":"Identifier","src":"8195:1:24"}],"id":451,"name":"UnaryOperation","src":"8195:3:24"}],"id":452,"name":"ExpressionStatement","src":"8195:3:24"},{"children":[{"attributes":{"assignments":[454]},"children":[{"attributes":{"constant":false,"name":"token","scope":532,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":453,"name":"ElementaryTypeName","src":"8254:7:24"}],"id":454,"name":"VariableDeclaration","src":"8254:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":437,"type":"address[] calldata","value":"_tokens"},"id":455,"name":"Identifier","src":"8270:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":443,"type":"uint256","value":"i"},"id":456,"name":"Identifier","src":"8278:1:24"}],"id":457,"name":"IndexAccess","src":"8270:10:24"}],"id":458,"name":"VariableDeclarationStatement","src":"8254:26:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":459,"name":"Identifier","src":"8363:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":460,"name":"Identifier","src":"8371:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":461,"name":"Identifier","src":"8385:5:24"}],"id":462,"name":"IndexAccess","src":"8371:20:24"}],"id":463,"name":"MemberAccess","src":"8371:30:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":464,"name":"Literal","src":"8403:24:24"}],"id":465,"name":"FunctionCall","src":"8363:65:24"}],"id":466,"name":"ExpressionStatement","src":"8363:65:24"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":467,"name":"Identifier","src":"8518:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":468,"name":"Identifier","src":"8532:5:24"}],"id":469,"name":"IndexAccess","src":"8518:20:24"}],"id":470,"name":"MemberAccess","src":"8518:31:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":471,"name":"Identifier","src":"8569:18:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1039,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":472,"name":"Identifier","src":"8590:18:24"}],"id":473,"name":"MemberAccess","src":"8590:22:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":474,"name":"Literal","src":"8613:1:24"}],"id":475,"name":"FunctionCall","src":"8590:25:24"}],"id":476,"name":"Assignment","src":"8569:46:24"}],"id":477,"name":"ExpressionStatement","src":"8569:46:24"}],"id":478,"name":"Block","src":"8551:79:24"}],"id":479,"name":"IfStatement","src":"8514:116:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":480,"name":"Identifier","src":"8690:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":481,"name":"Identifier","src":"8704:5:24"}],"id":482,"name":"IndexAccess","src":"8690:20:24"}],"id":483,"name":"UnaryOperation","src":"8683:27:24"}],"id":484,"name":"ExpressionStatement","src":"8683:27:24"},{"children":[{"attributes":{"assignments":[486]},"children":[{"attributes":{"constant":false,"name":"j","scope":520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":485,"name":"ElementaryTypeName","src":"8792:7:24"}],"id":486,"name":"VariableDeclaration","src":"8792:9:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":487,"name":"Literal","src":"8804:1:24"}],"id":488,"name":"VariableDeclarationStatement","src":"8792:13:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":486,"type":"uint256","value":"j"},"id":489,"name":"Identifier","src":"8807:1:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1039,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":490,"name":"Identifier","src":"8811:18:24"}],"id":491,"name":"MemberAccess","src":"8811:25:24"}],"id":492,"name":"MemberAccess","src":"8811:29:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":493,"name":"Literal","src":"8841:1:24"}],"id":494,"name":"FunctionCall","src":"8811:32:24"}],"id":495,"name":"BinaryOperation","src":"8807:36:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":486,"type":"uint256","value":"j"},"id":496,"name":"Identifier","src":"8845:1:24"}],"id":497,"name":"UnaryOperation","src":"8845:3:24"}],"id":498,"name":"ExpressionStatement","src":"8845:3:24"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":499,"name":"Identifier","src":"8872:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":486,"type":"uint256","value":"j"},"id":500,"name":"Identifier","src":"8891:1:24"}],"id":501,"name":"IndexAccess","src":"8872:21:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":502,"name":"Identifier","src":"8897:5:24"}],"id":503,"name":"BinaryOperation","src":"8872:30:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":504,"name":"Identifier","src":"8926:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":486,"type":"uint256","value":"j"},"id":505,"name":"Identifier","src":"8945:1:24"}],"id":506,"name":"IndexAccess","src":"8926:21:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":507,"name":"Identifier","src":"8950:18:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":1039,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":508,"name":"Identifier","src":"8969:18:24"}],"id":509,"name":"MemberAccess","src":"8969:25:24"}],"id":510,"name":"MemberAccess","src":"8969:29:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":511,"name":"Literal","src":"8999:1:24"}],"id":512,"name":"FunctionCall","src":"8969:32:24"}],"id":513,"name":"IndexAccess","src":"8950:52:24"}],"id":514,"name":"Assignment","src":"8926:76:24"}],"id":515,"name":"ExpressionStatement","src":"8926:76:24"},{"id":516,"name":"Break","src":"9024:5:24"}],"id":517,"name":"Block","src":"8904:144:24"}],"id":518,"name":"IfStatement","src":"8868:180:24"}],"id":519,"name":"Block","src":"8850:212:24"}],"id":520,"name":"ForStatement","src":"8787:275:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":521,"name":"Identifier","src":"9075:18:24"}],"id":523,"name":"MemberAccess","src":"9075:25:24"}],"id":524,"name":"UnaryOperation","src":"9075:27:24"}],"id":525,"name":"ExpressionStatement","src":"9075:27:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":145,"type":"function (address,address)","value":"RemovedToken"},"id":526,"name":"Identifier","src":"9162:12:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":527,"name":"Identifier","src":"9175:3:24"}],"id":528,"name":"MemberAccess","src":"9175:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address","value":"token"},"id":529,"name":"Identifier","src":"9187:5:24"}],"id":530,"name":"FunctionCall","src":"9162:31:24"}],"id":531,"name":"EmitStatement","src":"9157:36:24"}],"id":532,"name":"Block","src":"8200:1004:24"}],"id":533,"name":"ForStatement","src":"8155:1049:24"}],"id":534,"name":"Block","src":"8042:1168:24"}],"id":535,"name":"FunctionDefinition","src":"7973:1237:24"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":648,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":536,"name":"ElementaryTypeName","src":"9404:7:24"}],"id":537,"name":"VariableDeclaration","src":"9404:14:24"},{"attributes":{"constant":false,"name":"_data","scope":648,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":538,"name":"ElementaryTypeName","src":"9420:5:24"}],"id":539,"name":"VariableDeclaration","src":"9420:20:24"}],"id":540,"name":"ParameterList","src":"9403:38:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":648,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":541,"name":"ElementaryTypeName","src":"9465:7:24"}],"id":542,"name":"VariableDeclaration","src":"9465:7:24"},{"attributes":{"constant":false,"name":"","scope":648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":543,"name":"ElementaryTypeName","src":"9474:7:24"}],"id":544,"name":"VariableDeclaration","src":"9474:7:24"}],"id":545,"name":"ParameterList","src":"9464:18:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":546,"name":"Identifier","src":"9669:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":547,"name":"Identifier","src":"9677:5:24"}],"id":548,"name":"MemberAccess","src":"9677:12:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":549,"name":"Literal","src":"9693:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":550,"name":"Literal","src":"9697:2:24"}],"id":551,"name":"BinaryOperation","src":"9693:6:24"}],"id":552,"name":"BinaryOperation","src":"9677:22:24"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":553,"name":"Literal","src":"9701:34:24"}],"id":554,"name":"FunctionCall","src":"9669:67:24"}],"id":555,"name":"ExpressionStatement","src":"9669:67:24"},{"attributes":{"assignments":[557]},"children":[{"attributes":{"constant":false,"name":"signature","scope":647,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":556,"name":"ElementaryTypeName","src":"9782:6:24"}],"id":557,"name":"VariableDeclaration","src":"9782:16:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":2902,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":558,"name":"Identifier","src":"9801:5:24"}],"id":559,"name":"MemberAccess","src":"9801:20:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":560,"name":"Literal","src":"9822:1:24"}],"id":561,"name":"FunctionCall","src":"9801:23:24"}],"id":562,"name":"VariableDeclarationStatement","src":"9782:42:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":563,"name":"Identifier","src":"9877:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":949,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":564,"name":"Identifier","src":"9885:22:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":537,"type":"address","value":"_token"},"id":565,"name":"Identifier","src":"9908:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":557,"type":"bytes4","value":"signature"},"id":566,"name":"Identifier","src":"9916:9:24"}],"id":567,"name":"FunctionCall","src":"9885:41:24"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":568,"name":"Literal","src":"9928:20:24"}],"id":569,"name":"FunctionCall","src":"9877:72:24"}],"id":570,"name":"ExpressionStatement","src":"9877:72:24"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":557,"type":"bytes4","value":"signature"},"id":571,"name":"Identifier","src":"10048:9:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":179,"type":"bytes4","value":"_BURN"},"id":572,"name":"Identifier","src":"10061:5:24"}],"id":573,"name":"BinaryOperation","src":"10048:18:24"},{"children":[{"attributes":{"functionReturnParameters":545},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":537,"type":"address","value":"_token"},"id":574,"name":"Identifier","src":"10133:6:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":2936,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":575,"name":"Identifier","src":"10141:5:24"}],"id":576,"name":"MemberAccess","src":"10141:21:24"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":577,"name":"Literal","src":"10163:1:24"}],"id":578,"name":"FunctionCall","src":"10141:24:24"}],"id":579,"name":"TupleExpression","src":"10132:34:24"}],"id":580,"name":"Return","src":"10125:41:24"}],"id":581,"name":"Block","src":"10068:109:24"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":557,"type":"bytes4","value":"signature"},"id":582,"name":"Identifier","src":"10187:9:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":185,"type":"bytes4","value":"_TRANSFER_FROM"},"id":583,"name":"Identifier","src":"10200:14:24"}],"id":584,"name":"BinaryOperation","src":"10187:27:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":585,"name":"Identifier","src":"10301:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":586,"name":"Identifier","src":"10309:5:24"}],"id":587,"name":"MemberAccess","src":"10309:12:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":588,"name":"Literal","src":"10325:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":589,"name":"Literal","src":"10329:2:24"}],"id":590,"name":"BinaryOperation","src":"10325:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":591,"name":"Literal","src":"10334:2:24"}],"id":592,"name":"BinaryOperation","src":"10325:11:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":593,"name":"Literal","src":"10339:2:24"}],"id":594,"name":"BinaryOperation","src":"10325:16:24"}],"id":595,"name":"BinaryOperation","src":"10309:32:24"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":596,"name":"Literal","src":"10343:34:24"}],"id":597,"name":"FunctionCall","src":"10301:77:24"}],"id":598,"name":"ExpressionStatement","src":"10301:77:24"},{"attributes":{"functionReturnParameters":545},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":2868,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":599,"name":"Identifier","src":"10400:5:24"}],"id":600,"name":"MemberAccess","src":"10400:21:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":601,"name":"Literal","src":"10422:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":602,"name":"Literal","src":"10426:2:24"}],"id":603,"name":"BinaryOperation","src":"10422:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":604,"name":"Literal","src":"10431:2:24"}],"id":605,"name":"BinaryOperation","src":"10422:11:24"}],"id":606,"name":"FunctionCall","src":"10400:34:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":2936,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":607,"name":"Identifier","src":"10436:5:24"}],"id":608,"name":"MemberAccess","src":"10436:21:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":609,"name":"Literal","src":"10458:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":610,"name":"Literal","src":"10462:2:24"}],"id":611,"name":"BinaryOperation","src":"10458:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":612,"name":"Literal","src":"10467:2:24"}],"id":613,"name":"BinaryOperation","src":"10458:11:24"}],"id":614,"name":"FunctionCall","src":"10436:34:24"}],"id":615,"name":"TupleExpression","src":"10399:72:24"}],"id":616,"name":"Return","src":"10392:79:24"}],"id":617,"name":"Block","src":"10216:266:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":618,"name":"Identifier","src":"10590:7:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":619,"name":"Identifier","src":"10598:5:24"}],"id":620,"name":"MemberAccess","src":"10598:12:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":621,"name":"Literal","src":"10614:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":622,"name":"Literal","src":"10618:2:24"}],"id":623,"name":"BinaryOperation","src":"10614:6:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":624,"name":"Literal","src":"10623:2:24"}],"id":625,"name":"BinaryOperation","src":"10614:11:24"}],"id":626,"name":"BinaryOperation","src":"10598:27:24"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":627,"name":"Literal","src":"10627:39:24"}],"id":628,"name":"FunctionCall","src":"10590:77:24"}],"id":629,"name":"ExpressionStatement","src":"10590:77:24"},{"attributes":{"functionReturnParameters":545},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":2868,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":630,"name":"Identifier","src":"10689:5:24"}],"id":631,"name":"MemberAccess","src":"10689:21:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":632,"name":"Literal","src":"10711:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":633,"name":"Literal","src":"10715:2:24"}],"id":634,"name":"BinaryOperation","src":"10711:6:24"}],"id":635,"name":"FunctionCall","src":"10689:29:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":2936,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":539,"type":"bytes calldata","value":"_data"},"id":636,"name":"Identifier","src":"10720:5:24"}],"id":637,"name":"MemberAccess","src":"10720:21:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":638,"name":"Literal","src":"10742:1:24"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":639,"name":"Literal","src":"10746:2:24"}],"id":640,"name":"BinaryOperation","src":"10742:6:24"}],"id":641,"name":"FunctionCall","src":"10720:29:24"}],"id":642,"name":"TupleExpression","src":"10688:62:24"}],"id":643,"name":"Return","src":"10681:69:24"}],"id":644,"name":"Block","src":"10488:273:24"}],"id":645,"name":"IfStatement","src":"10183:578:24"}],"id":646,"name":"IfStatement","src":"10044:717:24"}],"id":647,"name":"Block","src":"9483:1284:24"}],"id":648,"name":"FunctionDefinition","src":"9368:1399:24"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":680,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":649,"name":"ElementaryTypeName","src":"10866:7:24"}],"id":650,"name":"VariableDeclaration","src":"10866:14:24"},{"attributes":{"constant":false,"name":"_loadable","scope":680,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":651,"name":"ElementaryTypeName","src":"10882:4:24"}],"id":652,"name":"VariableDeclaration","src":"10882:14:24"}],"id":653,"name":"ParameterList","src":"10865:32:24"},{"attributes":{"parameters":[null]},"children":[],"id":656,"name":"ParameterList","src":"10917:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":654,"name":"Identifier","src":"10907:9:24"}],"id":655,"name":"ModifierInvocation","src":"10907:9:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":657,"name":"Identifier","src":"10969:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":658,"name":"Identifier","src":"10977:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"_token"},"id":659,"name":"Identifier","src":"10991:6:24"}],"id":660,"name":"IndexAccess","src":"10977:21:24"}],"id":661,"name":"MemberAccess","src":"10977:31:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":662,"name":"Literal","src":"11010:24:24"}],"id":663,"name":"FunctionCall","src":"10969:66:24"}],"id":664,"name":"ExpressionStatement","src":"10969:66:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":195,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":665,"name":"Identifier","src":"11108:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"_token"},"id":666,"name":"Identifier","src":"11122:6:24"}],"id":667,"name":"IndexAccess","src":"11108:21:24"}],"id":668,"name":"MemberAccess","src":"11108:30:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":652,"type":"bool","value":"_loadable"},"id":669,"name":"Identifier","src":"11141:9:24"}],"id":670,"name":"Assignment","src":"11108:42:24"}],"id":671,"name":"ExpressionStatement","src":"11108:42:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":672,"name":"Identifier","src":"11166:20:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":673,"name":"Identifier","src":"11187:3:24"}],"id":674,"name":"MemberAccess","src":"11187:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":650,"type":"address","value":"_token"},"id":675,"name":"Identifier","src":"11199:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":652,"type":"bool","value":"_loadable"},"id":676,"name":"Identifier","src":"11207:9:24"}],"id":677,"name":"FunctionCall","src":"11166:51:24"}],"id":678,"name":"EmitStatement","src":"11161:56:24"}],"id":679,"name":"Block","src":"10917:307:24"}],"id":680,"name":"FunctionDefinition","src":"10840:384:24"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":712,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":681,"name":"ElementaryTypeName","src":"11327:7:24"}],"id":682,"name":"VariableDeclaration","src":"11327:14:24"},{"attributes":{"constant":false,"name":"_redeemable","scope":712,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":683,"name":"ElementaryTypeName","src":"11343:4:24"}],"id":684,"name":"VariableDeclaration","src":"11343:16:24"}],"id":685,"name":"ParameterList","src":"11326:34:24"},{"attributes":{"parameters":[null]},"children":[],"id":688,"name":"ParameterList","src":"11380:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":686,"name":"Identifier","src":"11370:9:24"}],"id":687,"name":"ModifierInvocation","src":"11370:9:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":689,"name":"Identifier","src":"11432:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":690,"name":"Identifier","src":"11440:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":682,"type":"address","value":"_token"},"id":691,"name":"Identifier","src":"11454:6:24"}],"id":692,"name":"IndexAccess","src":"11440:21:24"}],"id":693,"name":"MemberAccess","src":"11440:31:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":694,"name":"Literal","src":"11473:24:24"}],"id":695,"name":"FunctionCall","src":"11432:66:24"}],"id":696,"name":"ExpressionStatement","src":"11432:66:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":697,"name":"Identifier","src":"11573:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":682,"type":"address","value":"_token"},"id":698,"name":"Identifier","src":"11587:6:24"}],"id":699,"name":"IndexAccess","src":"11573:21:24"}],"id":700,"name":"MemberAccess","src":"11573:32:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":684,"type":"bool","value":"_redeemable"},"id":701,"name":"Identifier","src":"11608:11:24"}],"id":702,"name":"Assignment","src":"11573:46:24"}],"id":703,"name":"ExpressionStatement","src":"11573:46:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":125,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":704,"name":"Identifier","src":"11635:22:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":705,"name":"Identifier","src":"11658:3:24"}],"id":706,"name":"MemberAccess","src":"11658:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":682,"type":"address","value":"_token"},"id":707,"name":"Identifier","src":"11670:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":684,"type":"bool","value":"_redeemable"},"id":708,"name":"Identifier","src":"11678:11:24"}],"id":709,"name":"FunctionCall","src":"11635:55:24"}],"id":710,"name":"EmitStatement","src":"11630:60:24"}],"id":711,"name":"Block","src":"11380:317:24"}],"id":712,"name":"FunctionDefinition","src":"11299:398:24"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":753,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":713,"name":"ElementaryTypeName","src":"11999:7:24"}],"id":714,"name":"VariableDeclaration","src":"11999:14:24"},{"attributes":{"constant":false,"name":"_rate","scope":753,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":715,"name":"ElementaryTypeName","src":"12015:7:24"}],"id":716,"name":"VariableDeclaration","src":"12015:13:24"},{"attributes":{"constant":false,"name":"_updateDate","scope":753,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":717,"name":"ElementaryTypeName","src":"12030:7:24"}],"id":718,"name":"VariableDeclaration","src":"12030:19:24"}],"id":719,"name":"ParameterList","src":"11998:52:24"},{"attributes":{"parameters":[null]},"children":[],"id":722,"name":"ParameterList","src":"12078:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":290,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":720,"name":"Identifier","src":"12060:17:24"}],"id":721,"name":"ModifierInvocation","src":"12060:17:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":723,"name":"Identifier","src":"12130:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":724,"name":"Identifier","src":"12138:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"address","value":"_token"},"id":725,"name":"Identifier","src":"12152:6:24"}],"id":726,"name":"IndexAccess","src":"12138:21:24"}],"id":727,"name":"MemberAccess","src":"12138:31:24"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":728,"name":"Literal","src":"12171:24:24"}],"id":729,"name":"FunctionCall","src":"12130:66:24"}],"id":730,"name":"ExpressionStatement","src":"12130:66:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":191,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":731,"name":"Identifier","src":"12242:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"address","value":"_token"},"id":732,"name":"Identifier","src":"12256:6:24"}],"id":733,"name":"IndexAccess","src":"12242:21:24"}],"id":734,"name":"MemberAccess","src":"12242:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"uint256","value":"_rate"},"id":735,"name":"Identifier","src":"12271:5:24"}],"id":736,"name":"Assignment","src":"12242:34:24"}],"id":737,"name":"ExpressionStatement","src":"12242:34:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":199,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":738,"name":"Identifier","src":"12339:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"address","value":"_token"},"id":739,"name":"Identifier","src":"12353:6:24"}],"id":740,"name":"IndexAccess","src":"12339:21:24"}],"id":741,"name":"MemberAccess","src":"12339:32:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":718,"type":"uint256","value":"_updateDate"},"id":742,"name":"Identifier","src":"12374:11:24"}],"id":743,"name":"Assignment","src":"12339:46:24"}],"id":744,"name":"ExpressionStatement","src":"12339:46:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":745,"name":"Identifier","src":"12439:16:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7041,"type":"msg","value":"msg"},"id":746,"name":"Identifier","src":"12456:3:24"}],"id":747,"name":"MemberAccess","src":"12456:10:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":714,"type":"address","value":"_token"},"id":748,"name":"Identifier","src":"12468:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":716,"type":"uint256","value":"_rate"},"id":749,"name":"Identifier","src":"12476:5:24"}],"id":750,"name":"FunctionCall","src":"12439:43:24"}],"id":751,"name":"EmitStatement","src":"12434:48:24"}],"id":752,"name":"Block","src":"12078:411:24"}],"id":753,"name":"FunctionDefinition","src":"11974:515:24"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":987,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":777,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":754,"name":"ElementaryTypeName","src":"12593:15:24"}],"id":755,"name":"VariableDeclaration","src":"12593:19:24"},{"attributes":{"constant":false,"name":"_asset","scope":777,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":756,"name":"ElementaryTypeName","src":"12614:7:24"}],"id":757,"name":"VariableDeclaration","src":"12614:14:24"},{"attributes":{"constant":false,"name":"_amount","scope":777,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":758,"name":"ElementaryTypeName","src":"12630:7:24"}],"id":759,"name":"VariableDeclaration","src":"12630:15:24"}],"id":760,"name":"ParameterList","src":"12592:54:24"},{"attributes":{"parameters":[null]},"children":[],"id":763,"name":"ParameterList","src":"12666:0:24"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2990,"type":"modifier ()","value":"onlyAdmin"},"id":761,"name":"Identifier","src":"12656:9:24"}],"id":762,"name":"ModifierInvocation","src":"12656:9:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3072,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":764,"name":"Identifier","src":"12676:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":755,"type":"address payable","value":"_to"},"id":765,"name":"Identifier","src":"12690:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":757,"type":"address","value":"_asset"},"id":766,"name":"Identifier","src":"12695:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":759,"type":"uint256","value":"_amount"},"id":767,"name":"Identifier","src":"12703:7:24"}],"id":768,"name":"FunctionCall","src":"12676:35:24"}],"id":769,"name":"ExpressionStatement","src":"12676:35:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":173,"type":"function (address,address,uint256)","value":"Claimed"},"id":770,"name":"Identifier","src":"12726:7:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":755,"type":"address payable","value":"_to"},"id":771,"name":"Identifier","src":"12734:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":757,"type":"address","value":"_asset"},"id":772,"name":"Identifier","src":"12739:6:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":759,"type":"uint256","value":"_amount"},"id":773,"name":"Identifier","src":"12747:7:24"}],"id":774,"name":"FunctionCall","src":"12726:29:24"}],"id":775,"name":"EmitStatement","src":"12721:34:24"}],"id":776,"name":"Block","src":"12666:96:24"}],"id":777,"name":"FunctionDefinition","src":"12578:184:24"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":819,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":778,"name":"ElementaryTypeName","src":"13336:7:24"}],"id":779,"name":"VariableDeclaration","src":"13336:10:24"}],"id":780,"name":"ParameterList","src":"13335:12:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":781,"name":"ElementaryTypeName","src":"13371:6:24"}],"id":782,"name":"VariableDeclaration","src":"13371:13:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":783,"name":"ElementaryTypeName","src":"13386:7:24"}],"id":784,"name":"VariableDeclaration","src":"13386:7:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":785,"name":"ElementaryTypeName","src":"13395:7:24"}],"id":786,"name":"VariableDeclaration","src":"13395:7:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":787,"name":"ElementaryTypeName","src":"13404:4:24"}],"id":788,"name":"VariableDeclaration","src":"13404:4:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":789,"name":"ElementaryTypeName","src":"13410:4:24"}],"id":790,"name":"VariableDeclaration","src":"13410:4:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":791,"name":"ElementaryTypeName","src":"13416:4:24"}],"id":792,"name":"VariableDeclaration","src":"13416:4:24"},{"attributes":{"constant":false,"name":"","scope":819,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":793,"name":"ElementaryTypeName","src":"13422:7:24"}],"id":794,"name":"VariableDeclaration","src":"13422:7:24"}],"id":795,"name":"ParameterList","src":"13370:60:24"},{"children":[{"attributes":{"assignments":[797]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":818,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":200,"type":"struct TokenWhitelist.Token"},"id":796,"name":"UserDefinedTypeName","src":"13441:5:24"}],"id":797,"name":"VariableDeclaration","src":"13441:23:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":798,"name":"Identifier","src":"13467:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":779,"type":"address","value":"_a"},"id":799,"name":"Identifier","src":"13481:2:24"}],"id":800,"name":"IndexAccess","src":"13467:17:24"}],"id":801,"name":"VariableDeclarationStatement","src":"13441:43:24"},{"attributes":{"functionReturnParameters":795},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":187,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":802,"name":"Identifier","src":"13502:9:24"}],"id":803,"name":"MemberAccess","src":"13502:16:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":189,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":804,"name":"Identifier","src":"13520:9:24"}],"id":805,"name":"MemberAccess","src":"13520:19:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":191,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":806,"name":"Identifier","src":"13541:9:24"}],"id":807,"name":"MemberAccess","src":"13541:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":808,"name":"Identifier","src":"13557:9:24"}],"id":809,"name":"MemberAccess","src":"13557:19:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":195,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":810,"name":"Identifier","src":"13578:9:24"}],"id":811,"name":"MemberAccess","src":"13578:18:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":812,"name":"Identifier","src":"13598:9:24"}],"id":813,"name":"MemberAccess","src":"13598:20:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":199,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":797,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":814,"name":"Identifier","src":"13620:9:24"}],"id":815,"name":"MemberAccess","src":"13620:20:24"}],"id":816,"name":"TupleExpression","src":"13501:140:24"}],"id":817,"name":"Return","src":"13494:147:24"}],"id":818,"name":"Block","src":"13431:217:24"}],"id":819,"name":"FunctionDefinition","src":"13314:334:24"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":820,"name":"ParameterList","src":"14176:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":821,"name":"ElementaryTypeName","src":"14202:6:24"}],"id":822,"name":"VariableDeclaration","src":"14202:13:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":823,"name":"ElementaryTypeName","src":"14217:7:24"}],"id":824,"name":"VariableDeclaration","src":"14217:7:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":825,"name":"ElementaryTypeName","src":"14226:7:24"}],"id":826,"name":"VariableDeclaration","src":"14226:7:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":827,"name":"ElementaryTypeName","src":"14235:4:24"}],"id":828,"name":"VariableDeclaration","src":"14235:4:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":829,"name":"ElementaryTypeName","src":"14241:4:24"}],"id":830,"name":"VariableDeclaration","src":"14241:4:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":831,"name":"ElementaryTypeName","src":"14247:4:24"}],"id":832,"name":"VariableDeclaration","src":"14247:4:24"},{"attributes":{"constant":false,"name":"","scope":859,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":833,"name":"ElementaryTypeName","src":"14253:7:24"}],"id":834,"name":"VariableDeclaration","src":"14253:7:24"}],"id":835,"name":"ParameterList","src":"14201:60:24"},{"children":[{"attributes":{"assignments":[837]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":858,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":200,"type":"struct TokenWhitelist.Token"},"id":836,"name":"UserDefinedTypeName","src":"14272:5:24"}],"id":837,"name":"VariableDeclaration","src":"14272:28:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":838,"name":"Identifier","src":"14303:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"address","value":"_stablecoin"},"id":839,"name":"Identifier","src":"14317:11:24"}],"id":840,"name":"IndexAccess","src":"14303:26:24"}],"id":841,"name":"VariableDeclarationStatement","src":"14272:57:24"},{"attributes":{"functionReturnParameters":835},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":187,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":842,"name":"Identifier","src":"14360:14:24"}],"id":843,"name":"MemberAccess","src":"14360:21:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":189,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":844,"name":"Identifier","src":"14395:14:24"}],"id":845,"name":"MemberAccess","src":"14395:24:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":191,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":846,"name":"Identifier","src":"14433:14:24"}],"id":847,"name":"MemberAccess","src":"14433:19:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":848,"name":"Identifier","src":"14466:14:24"}],"id":849,"name":"MemberAccess","src":"14466:24:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":195,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":850,"name":"Identifier","src":"14504:14:24"}],"id":851,"name":"MemberAccess","src":"14504:23:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":852,"name":"Identifier","src":"14541:14:24"}],"id":853,"name":"MemberAccess","src":"14541:25:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":199,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":854,"name":"Identifier","src":"14580:14:24"}],"id":855,"name":"MemberAccess","src":"14580:25:24"}],"id":856,"name":"TupleExpression","src":"14346:269:24"}],"id":857,"name":"Return","src":"14339:276:24"}],"id":858,"name":"Block","src":"14262:360:24"}],"id":859,"name":"FunctionDefinition","src":"14150:472:24"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":860,"name":"ParameterList","src":"14777:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":868,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":861,"name":"ElementaryTypeName","src":"14803:7:24"}],"id":862,"name":"ArrayTypeName","src":"14803:9:24"}],"id":863,"name":"VariableDeclaration","src":"14803:16:24"}],"id":864,"name":"ParameterList","src":"14802:18:24"},{"children":[{"attributes":{"functionReturnParameters":864},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":865,"name":"Identifier","src":"14838:18:24"}],"id":866,"name":"Return","src":"14831:25:24"}],"id":867,"name":"Block","src":"14821:42:24"}],"id":868,"name":"FunctionDefinition","src":"14751:112:24"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":869,"name":"ParameterList","src":"15015:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":926,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":870,"name":"ElementaryTypeName","src":"15041:7:24"}],"id":871,"name":"ArrayTypeName","src":"15041:9:24"}],"id":872,"name":"VariableDeclaration","src":"15041:16:24"}],"id":873,"name":"ParameterList","src":"15040:18:24"},{"children":[{"attributes":{"assignments":[877]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":925,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":875,"name":"ElementaryTypeName","src":"15069:7:24"}],"id":876,"name":"ArrayTypeName","src":"15069:9:24"}],"id":877,"name":"VariableDeclaration","src":"15069:36:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":878,"name":"ElementaryTypeName","src":"15112:7:24"}],"id":879,"name":"ArrayTypeName","src":"15112:9:24"}],"id":880,"name":"NewExpression","src":"15108:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":881,"name":"Identifier","src":"15122:18:24"}],"id":882,"name":"FunctionCall","src":"15108:33:24"}],"id":883,"name":"VariableDeclarationStatement","src":"15069:72:24"},{"attributes":{"assignments":[885]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":925,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":884,"name":"ElementaryTypeName","src":"15151:7:24"}],"id":885,"name":"VariableDeclaration","src":"15151:23:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":886,"name":"Literal","src":"15177:1:24"}],"id":887,"name":"VariableDeclarationStatement","src":"15151:27:24"},{"children":[{"attributes":{"assignments":[889]},"children":[{"attributes":{"constant":false,"name":"i","scope":922,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":888,"name":"ElementaryTypeName","src":"15193:7:24"}],"id":889,"name":"VariableDeclaration","src":"15193:9:24"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":890,"name":"Literal","src":"15205:1:24"}],"id":891,"name":"VariableDeclarationStatement","src":"15193:13:24"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":889,"type":"uint256","value":"i"},"id":892,"name":"Identifier","src":"15208:1:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":893,"name":"Identifier","src":"15212:18:24"}],"id":894,"name":"MemberAccess","src":"15212:25:24"}],"id":895,"name":"BinaryOperation","src":"15208:29:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":889,"type":"uint256","value":"i"},"id":896,"name":"Identifier","src":"15239:1:24"}],"id":897,"name":"UnaryOperation","src":"15239:3:24"}],"id":898,"name":"ExpressionStatement","src":"15239:3:24"},{"children":[{"attributes":{"assignments":[900]},"children":[{"attributes":{"constant":false,"name":"token","scope":921,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":899,"name":"ElementaryTypeName","src":"15258:7:24"}],"id":900,"name":"VariableDeclaration","src":"15258:13:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":901,"name":"Identifier","src":"15274:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":889,"type":"uint256","value":"i"},"id":902,"name":"Identifier","src":"15293:1:24"}],"id":903,"name":"IndexAccess","src":"15274:21:24"}],"id":904,"name":"VariableDeclarationStatement","src":"15258:37:24"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":197,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":905,"name":"Identifier","src":"15313:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":900,"type":"address","value":"token"},"id":906,"name":"Identifier","src":"15327:5:24"}],"id":907,"name":"IndexAccess","src":"15313:20:24"}],"id":908,"name":"MemberAccess","src":"15313:31:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"address[] memory","value":"redeemableAddresses"},"id":909,"name":"Identifier","src":"15364:19:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":885,"type":"uint256","value":"redeemableIndex"},"id":910,"name":"Identifier","src":"15384:15:24"}],"id":911,"name":"IndexAccess","src":"15364:36:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":900,"type":"address","value":"token"},"id":912,"name":"Identifier","src":"15403:5:24"}],"id":913,"name":"Assignment","src":"15364:44:24"}],"id":914,"name":"ExpressionStatement","src":"15364:44:24"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":885,"type":"uint256","value":"redeemableIndex"},"id":915,"name":"Identifier","src":"15426:15:24"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":916,"name":"Literal","src":"15445:1:24"}],"id":917,"name":"Assignment","src":"15426:20:24"}],"id":918,"name":"ExpressionStatement","src":"15426:20:24"}],"id":919,"name":"Block","src":"15346:115:24"}],"id":920,"name":"IfStatement","src":"15309:152:24"}],"id":921,"name":"Block","src":"15244:227:24"}],"id":922,"name":"ForStatement","src":"15188:283:24"},{"attributes":{"functionReturnParameters":873},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":877,"type":"address[] memory","value":"redeemableAddresses"},"id":923,"name":"Identifier","src":"15487:19:24"}],"id":924,"name":"Return","src":"15480:26:24"}],"id":925,"name":"Block","src":"15059:454:24"}],"id":926,"name":"FunctionDefinition","src":"14990:523:24"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":987,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":949,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":927,"name":"ElementaryTypeName","src":"15727:7:24"}],"id":928,"name":"VariableDeclaration","src":"15727:14:24"},{"attributes":{"constant":false,"name":"_methodId","scope":949,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":929,"name":"ElementaryTypeName","src":"15743:6:24"}],"id":930,"name":"VariableDeclaration","src":"15743:16:24"}],"id":931,"name":"ParameterList","src":"15726:34:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":949,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":932,"name":"ElementaryTypeName","src":"15782:4:24"}],"id":933,"name":"VariableDeclaration","src":"15782:4:24"}],"id":934,"name":"ParameterList","src":"15781:6:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[7044,7045],"referencedDeclaration":7045,"type":"function (bool,string memory) pure","value":"require"},"id":935,"name":"Identifier","src":"15798:7:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":193,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":204,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":936,"name":"Identifier","src":"15806:13:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":928,"type":"address","value":"_token"},"id":937,"name":"Identifier","src":"15820:6:24"}],"id":938,"name":"IndexAccess","src":"15806:21:24"}],"id":939,"name":"MemberAccess","src":"15806:31:24"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":940,"name":"Literal","src":"15839:20:24"}],"id":941,"name":"FunctionCall","src":"15798:62:24"}],"id":942,"name":"ExpressionStatement","src":"15798:62:24"},{"attributes":{"functionReturnParameters":934},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":943,"name":"Identifier","src":"15878:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":930,"type":"bytes4","value":"_methodId"},"id":944,"name":"Identifier","src":"15897:9:24"}],"id":945,"name":"IndexAccess","src":"15878:29:24"}],"id":946,"name":"TupleExpression","src":"15877:31:24"}],"id":947,"name":"Return","src":"15870:38:24"}],"id":948,"name":"Block","src":"15788:127:24"}],"id":949,"name":"FunctionDefinition","src":"15695:220:24"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":962,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":950,"name":"ElementaryTypeName","src":"16104:6:24"}],"id":951,"name":"VariableDeclaration","src":"16104:16:24"}],"id":952,"name":"ParameterList","src":"16103:18:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":962,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":953,"name":"ElementaryTypeName","src":"16145:4:24"}],"id":954,"name":"VariableDeclaration","src":"16145:4:24"}],"id":955,"name":"ParameterList","src":"16144:6:24"},{"children":[{"attributes":{"functionReturnParameters":955},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":208,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":956,"name":"Identifier","src":"16169:18:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":951,"type":"bytes4","value":"_methodId"},"id":957,"name":"Identifier","src":"16188:9:24"}],"id":958,"name":"IndexAccess","src":"16169:29:24"}],"id":959,"name":"TupleExpression","src":"16168:31:24"}],"id":960,"name":"Return","src":"16161:38:24"}],"id":961,"name":"Block","src":"16151:55:24"}],"id":962,"name":"FunctionDefinition","src":"16070:136:24"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":963,"name":"ParameterList","src":"16342:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":970,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":964,"name":"ElementaryTypeName","src":"16368:7:24"}],"id":965,"name":"VariableDeclaration","src":"16368:7:24"}],"id":966,"name":"ParameterList","src":"16367:9:24"},{"children":[{"attributes":{"functionReturnParameters":966},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":213,"type":"uint256","value":"_redeemableCounter"},"id":967,"name":"Identifier","src":"16394:18:24"}],"id":968,"name":"Return","src":"16387:25:24"}],"id":969,"name":"Block","src":"16377:42:24"}],"id":970,"name":"FunctionDefinition","src":"16316:103:24"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":971,"name":"ParameterList","src":"16570:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":978,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":972,"name":"ElementaryTypeName","src":"16596:7:24"}],"id":973,"name":"VariableDeclaration","src":"16596:7:24"}],"id":974,"name":"ParameterList","src":"16595:9:24"},{"children":[{"attributes":{"functionReturnParameters":974},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"address","value":"_stablecoin"},"id":975,"name":"Identifier","src":"16622:11:24"}],"id":976,"name":"Return","src":"16615:18:24"}],"id":977,"name":"Block","src":"16605:35:24"}],"id":978,"name":"FunctionDefinition","src":"16551:89:24"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":987,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":979,"name":"ParameterList","src":"16774:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":980,"name":"ElementaryTypeName","src":"16800:7:24"}],"id":981,"name":"VariableDeclaration","src":"16800:7:24"}],"id":982,"name":"ParameterList","src":"16799:9:24"},{"children":[{"attributes":{"functionReturnParameters":982},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":217,"type":"bytes32","value":"_oracleNode"},"id":983,"name":"Identifier","src":"16826:11:24"}],"id":984,"name":"Return","src":"16819:18:24"}],"id":985,"name":"Block","src":"16809:35:24"}],"id":986,"name":"FunctionDefinition","src":"16755:89:24"}],"id":987,"name":"ContractDefinition","src":"1939:14907:24"}],"id":988,"name":"SourceUnit","src":"774:16073:24"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/wallet/Controller.bin b/build/wallet/Controller.bin index a69c0549..264e63ba 100644 --- a/build/wallet/Controller.bin +++ b/build/wallet/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/wallet/DailyLimitTrait.bin b/build/wallet/DailyLimitTrait.bin index b38ae5c8..d7eed637 100644 --- a/build/wallet/DailyLimitTrait.bin +++ b/build/wallet/DailyLimitTrait.bin @@ -1 +1 @@ -60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032 \ No newline at end of file +60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032 \ No newline at end of file diff --git a/build/wallet/Licence.bin b/build/wallet/Licence.bin index 20bb2284..464341a7 100644 --- a/build/wallet/Licence.bin +++ b/build/wallet/Licence.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032 \ No newline at end of file diff --git a/build/wallet/TokenWhitelist.bin b/build/wallet/TokenWhitelist.bin index 60f52176..5a283843 100644 --- a/build/wallet/TokenWhitelist.bin +++ b/build/wallet/TokenWhitelist.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032 \ No newline at end of file diff --git a/build/wallet/Wallet.bin b/build/wallet/Wallet.bin index f12dd9cc..550210e0 100644 --- a/build/wallet/Wallet.bin +++ b/build/wallet/Wallet.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032 \ No newline at end of file diff --git a/build/wallet/combined.json b/build/wallet/combined.json index ffde4e7c..19ad360b 100644 --- a/build/wallet/combined.json +++ b/build/wallet/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ECDSA.sol:ECDSA":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","srcmap":"1392:3417:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1392:3417:2:-;;;;;;;;"},"externals/ERC165.sol:ERC165":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:5:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:6:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:8:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:9:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:9;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:9;-1:-1:-1;;;;;2567:10:9;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:9;;;;;;","srcmap-runtime":"1897:2174:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:15;;;;;;;;;:::i;:::-;;573:184:19;;;;;;;;;:::i;1721:953:16:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:12;;;;;;;;;:::i;:::-;;;;;;;;;612:169:18;;;;;;;;;:::i;505:166:14:-;;;;;;;;;:::i;980:228:13:-;;;;;;;;;:::i;3269:231:9:-;;;;;;;;;:::i;4901:153:15:-;;;;;;;;;:::i;974:127:19:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:15;;;;;;;;;:::i;582:292:12:-;;;;;;;;;:::i;844:101:17:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:13:-;;;;;;;;;:::i;4519:168:15:-;;;;;;;;;:::i;3703:366:9:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:15;;;;;;;;;:::i;838:108:14:-;;;;;;;;;:::i;1023:133:18:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:15;;;;;;;;;:::i;681:140:13:-;;;;;;;;;:::i;858:226:16:-;;;;;;;;;:::i;1514:127:13:-;;;;;;;;;:::i;2320:80:9:-;;;;;;;;;:::i;1107:169:19:-;1174:4;-1:-1:-1;;;;;;1197:32:19;;-1:-1:-1;;;1197:32:19;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:15:-;2932:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:15;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:15;;:18;-1:-1:-1;;3185:18:15;:15;:18;;-1:-1:-1;3185:18:15:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:15;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:15;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:15;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:15;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:15;;4052:6;;-1:-1:-1;4060:20:15;;;;-1:-1:-1;4082:17:15;4012:11;:88::i;:::-;400:1:11;;;;;2854:1263:15;;;;:::o;573:184:19:-;668:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:19;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:16:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:16;;;;;;;;;;-1:-1:-1;;;;;1849:29:16;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:16;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:16;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:16;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:16;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:16;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:16;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:16;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:16;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:16;;-1:-1:-1;2373:103:16;-1:-1:-1;2489:8:16;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:16;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:16;;-1:-1:-1;;;1721:953:16;;;;;:::o;1195:454:12:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:12;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:12;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:12;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:12;-1:-1:-1;1195:454:12;;;;;;:::o;612:169:18:-;687:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:18;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:18;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:14:-;584:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:14;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:13;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:13:o;3269:231:9:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:9;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:9;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:15:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:19:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:19;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:15:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:12:-;674:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:12;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:12;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:17:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:17;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:13;1302:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:13;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:15:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:9;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:9;-1:-1:-1;3844:6:9;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:9;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:9;;3840:199;;;-1:-1:-1;3703:366:9;;;;:::o;5193:128:15:-;5247:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:15;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:14:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:14;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:18;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:15:-;5617:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:15;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:15;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:15;;:16;-1:-1:-1;5701:4:15;;-1:-1:-1;5701:4:15;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:11;5541:225:15;;;;:::o;681:140:13:-;743:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:13;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:16:-;955:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:16;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:16;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:16;-1:-1:-1;;;;;971:43:16;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:13:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:13;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:18:-;1229:4;-1:-1:-1;;;;;;1252:34:18;;-1:-1:-1;;;1252:34:18;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:9:-;3596:3;;:15;;-1:-1:-1;;;3596:15:9;;3564:4;;;;-1:-1:-1;;;;;3596:3:9;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:9;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:9;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:9;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:9;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:10:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:8:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:15:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:15;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:15;;;;;;-1:-1:-1;;6760:43:15;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:15;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:15;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:10:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:10;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:10;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:10;;:::o;414:204:11:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:11;576:10;570:17;-1:-1:-1;;;566:36:11;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:11;87:34:-1;-1:-1;;;;;;776:20:11;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:11;743:64::o;951:169:17:-;1018:4;-1:-1:-1;;;;;;1041:32:17;;-1:-1:-1;;;1041:32:17;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:10:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:10;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:10:o;8685:393:8:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:8;87:34:-1;135:17;;-1:-1;8858:14:8;-1:-1:-1;8839:33:8;-1:-1:-1;8960:2:8;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:8;;8685:393;-1:-1:-1;;;;;8685:393:8:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:8:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:8;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:8;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:16:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:16;;:11;-1:-1:-1;;;;;2770:37:16;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:8:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:8;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:8;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:8;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:8;;513:2;499:26;489:42;;468:73::o;6035:245:15:-;6102:4;-1:-1:-1;;;;;;6125:38:15;;-1:-1:-1;;;6125:38:15;;:93;;-1:-1:-1;;;;;;;6182:36:15;;-1:-1:-1;;;6182:36:15;6125:93;:148;;;;6237:36;6261:11;1019:4:14;-1:-1:-1;;;;;;1042:40:14;;-1:-1:-1;;;1042:40:14;;:80;;;1086:36;1110:11;1714:4:13;-1:-1:-1;;;;;;1737:32:13;;-1:-1:-1;;;1737:32:13;;:71;;-1:-1:-1;;;;;;;1773:35:13;;-1:-1:-1;;;1773:35:13;1737:71;:111;;;;1812:36;1836:11;1722:4:12;-1:-1:-1;;;;;;1745:31:12;;-1:-1:-1;;;1745:31:12;;:71;;-1:-1:-1;;;;;;;;;;204:32:11;;;1780:36:12;114:129:11:o;1897:2174:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:9;;;-1:-1:-1;1897:2174:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:10:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:10:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:21;;;;;;;","srcmap-runtime":"898:556:21:-;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","srcmap":"1381:8954:28:-;;;1122:66:23;1272:58;;2313:80:28;;;-1:-1:-1;;;;;;2313:80:28;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:28;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3616:558:28;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:28;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:28;;;-1:-1:-1;;;;;;4012:22:28;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:28;-1:-1:-1;;;;;4123:34:28;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:28;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:28;-1:-1:-1;;;;;7354:228:28;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:28;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:28;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:28;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:28;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:28;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:28;-1:-1:-1;;;;;6678:219:28;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:28;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:28;;:::i;1364:91:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;10221:112:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:28;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:28;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:28;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:28;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:28;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:28;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:28;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:28;-1:-1:-1;;;;;6338:204:28;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:28;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;10054:96:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:28;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:28;-1:-1:-1;;;;;7027:196:28;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:28;;;:::i;6106:102::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6169:25:28;:32;;-1:-1:-1;;;;6169:32:28;-1:-1:-1;;;6169:32:28;;;6106:102::o;7354:228::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7443:26:28;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:28;;-1:-1:-1;;;;;;7497:29:28;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:28;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:28;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:28;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:28;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:28;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:28;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:28;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:28;;:33;;-1:-1:-1;;;;;9116:12:28;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:28;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:28;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:28;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:28;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:28;4950:91;:::o;6678:219::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6766:14:28;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:28;;-1:-1:-1;;;;;;6820:25:28;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5977:17:28;:24;;-1:-1:-1;;;;5977:24:28;-1:-1:-1;;;5977:24:28;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:28;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;10221:112:28:-;10301:25;;-1:-1:-1;;;10301:25:28;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:28;;;;;9711:92::o;9448:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;9546:35:28;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:28;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:28;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5603:18:28;:25;;-1:-1:-1;;;;5603:25:28;-1:-1:-1;;;5603:25:28;;;5553:82::o;6338:204::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6424:13:28;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:28;;-1:-1:-1;;;;;;6467:24:28;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5792:18:28;:25;;-1:-1:-1;;;;5792:25:28;-1:-1:-1;;;5792:25:28;;;5741:83::o;2169:95:23:-;2242:15;;2169:95;:::o;10054:96:28:-;10126:17;;-1:-1:-1;;;10126:17:28;;;;;10054:96::o;7027:196::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7108:18:28;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:28;;-1:-1:-1;;;;;;7154:21:28;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:28;;;;;9882:93::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;1982:201:5:-;2107:68;;;-1:-1:-1;;;;;2107:68:5;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:5;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:6;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:5;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","srcmap":"1939:14907:29:-;;;1122:66:23;1272:58;;4758:506:29;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:29;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:29;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:29;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:29;:26;;;;-1:-1:-1;4995:11:29;:33;;-1:-1:-1;;;;;4995:33:29;;;-1:-1:-1;;;;;;4995:33:29;;;;;;;;;-1:-1:-1;5083:18:29;:28;;;:35;;-1:-1:-1;;5083:35:29;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:29;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:29;-1:-1:-1;;;;;;16070:136:29;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:29;-1:-1:-1;;;;;13314:334:29;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;-1:-1:-1;6040:1806:29;-1:-1:-1;6040:1806:29;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:29;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:29;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:29;;-1:-1:-1;;;;;15695:220:29;;;;;-1:-1:-1;;;;;;15695:220:29;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:29;;-1:-1:-1;7973:1237:29;-1:-1:-1;7973:1237:29;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:29;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:29;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:29;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:29;;-1:-1:-1;9368:1399:29;-1:-1:-1;9368:1399:29;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:29;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:29:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:29;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:29;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:29;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:29;;;:88;;;;-1:-1:-1;6442:35:29;;;6389:88;:142;;;;-1:-1:-1;6497:34:29;;;6389:142;:196;;;;-1:-1:-1;6551:34:29;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:29;6841:25;;-1:-1:-1;6841:25:29;;;;;;;;-1:-1:-1;6841:25:29;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:29;-1:-1:-1;;;;;7084:25:29;-1:-1:-1;;;;;7084:25:29;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:29;;;;;-1:-1:-1;;7084:306:29;;;-1:-1:-1;;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:29;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:29;-1:-1:-1;;;;;7486:10:29;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:29;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:29;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:29;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:29;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:29;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:29;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:29;-1:-1:-1;15069:72:29;-1:-1:-1;15151:23:29;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:29;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:29;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:29;;;-1:-1:-1;;;;;15364:44:29;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:29;;15188:283;;;-1:-1:-1;15487:19:29;;-1:-1:-1;;14990:523:29;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:29;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:29;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:29;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:29;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:29;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:29:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:29;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:29;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:29;;8363:65;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:29;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:29;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:29;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:29;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:29;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:29;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:29;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:29;;;;;-1:-1:-1;;;;;8926:76:29;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:29;:27;;;;;-1:-1:-1;;9075:27:29;;;:::i;:::-;-1:-1:-1;9162:31:29;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:29;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:29:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:29;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:29;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:29;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:29;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:29;;:23;-1:-1:-1;;9801:23:29;:20;:23;;-1:-1:-1;9801:23:29:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:29;;-1:-1:-1;;;10048:18:29;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:29;;:24;-1:-1:-1;;10141:24:29;:21;:24;;-1:-1:-1;10141:24:29:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:29;;-1:-1:-1;;;10187:27:29;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:29;;:34;-1:-1:-1;;10400:34:29;:21;:34;;-1:-1:-1;10400:34:29:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:29;;:34;-1:-1:-1;;10436:34:29;:21;:34;;-1:-1:-1;10436:34:29:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:29;;:29;-1:-1:-1;;10689:29:29;:21;:29;;-1:-1:-1;10689:29:29:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:29;;:29;-1:-1:-1;;10720:29:29;:21;:29;;-1:-1:-1;10720:29:29:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:29;-1:-1:-1;;;;;5399:27:29;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:29;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:29;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:29:-;16622:11;;-1:-1:-1;;;;;16622:11:29;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:29;;;-1:-1:-1;1939:14907:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"wallet.sol:AddressWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:ControllableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:DailyLimitTrait":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032","srcmap":"11411:3455:30:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"11411:3455:30:-;;;;;;;;"},"wallet.sol:GasTopUpLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:LoadLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SelfCallableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SpendLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:Wallet":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032","bin-runtime":"60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032","srcmap":"22209:17557:30:-;;;1122:66:23;1272:58;;24474:430:30;5:2:-1;;;;30:1;27;20:12;5:2;24474:430:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24474:430:30;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;24474:430:30;;;;;;;;;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1543:6:25;:18;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;-1:-1:-1;;;1571:32:25;;;;;;;;;;;;;;1687:15;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17616:93:30;;;;;;;;17296:10;17616:93;;;;;;;;;17695:3;17616:93;;;;;;-1:-1:-1;17616:93:30;;;;;;;;;;;;;17599:14;:110;;;;;;;;;;;;;;;;;-1:-1:-1;;17599:110:30;;;1341:19:26;:42;;;;20179:20:30;-1:-1:-1;;;;;20179:18:30;:20;:::i;:::-;20135:64;;;;;;;;20239:1;20217:19;:23;20209:49;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;;;;19863:5;20288:52;20268:17;:72;;;20363:79;;;;;;;;;;;;;;;;;;;20428:3;20363:79;;;;;;-1:-1:-1;20363:79:30;;;;;;;;;;;;;;20350:10;:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20350:92:30;;;;;;15352:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:11;:73;;;;;;;;;;;;;;;-1:-1:-1;15338:73:30;;;;;;;;-1:-1:-1;24869:12:30;:28;-1:-1:-1;22209:17557:30;;-1:-1:-1;;;;22209:17557:30;2887:206:26;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;;;:32;;:::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;22209:17557:30:-;;;;;;;","srcmap-runtime":"22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25196:31;;;25205:10;25196:31;;25217:9;25196:31;;;;;;;;;;;;;;;;;22209:17557;30101:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30101:137:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30101:137:30;-1:-1:-1;;;;;;30101:137:30;;:::i;:::-;;;;;;;;;;;;;;;;;;16199:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16199:104:30;;;:::i;:::-;;;;;;;;;;;;;;;;18820:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18820:286:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:286:30;;:::i;:::-;;3896:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:677:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3896:677:30;;:::i;23125:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23125:47:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23125:47:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38146:244:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38146:244:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38146:244:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38146:244:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38146:244:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38146:244:30;;-1:-1:-1;38146:244:30;;-1:-1:-1;;;;;38146:244:30:i;:::-;;;;-1:-1:-1;;;;;;38146:244:30;;;;;;;;;;;;;;25576:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25576:565:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;25576:565:30;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25576:565:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25576:565:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25576:565:30;;-1:-1:-1;25576:565:30;-1:-1:-1;25576:565:30;:::i;21466:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21466:117:30;;;:::i;28299:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28299:344:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28299:344:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28299:344:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28299:344:30;;-1:-1:-1;28299:344:30;-1:-1:-1;28299:344:30;:::i;3173:94:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3173:94:25;;;:::i;16806:179:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16806:179:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16806:179:30;;:::i;18606:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18606:106:30;;;:::i;3082:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3082:38:30;;;:::i;8300:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8300:124:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8300:124:30;;;;;;;;;;;;;;;;;2898:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2898:44:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2898:44:30;-1:-1:-1;;;;;2898:44:30;;:::i;29093:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;29093:943:30;;;;;;;;:::i;20579:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20579:233:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20579:233:30;;:::i;15817:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15817:161:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15817:161:30;;:::i;35929:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35929:1934:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;35929:1934:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;35929:1934:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;35929:1934:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35929:1934:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35929:1934:30;;-1:-1:-1;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30:i;26493:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26493:1111:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26493:1111:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26493:1111:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26493:1111:30;;-1:-1:-1;26493:1111:30;-1:-1:-1;26493:1111:30;:::i;8121:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8121:126:30;;;:::i;5523:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5523:1117:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5523:1117:30;;:::i;16023:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16023:119:30;;;:::i;10340:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10340:673:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10340:673:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10340:673:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10340:673:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10340:673:30;;-1:-1:-1;10340:673:30;-1:-1:-1;10340:673:30;:::i;3543:306:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:306:25;;;:::i;19233:304:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19233:304:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19233:304:30;;:::i;28706:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:91:30;;;:::i;1364::24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;18028:125:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:125:30;;;:::i;9505:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9505:711:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9505:711:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9505:711:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9505:711:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9505:711:30;;-1:-1:-1;9505:711:30;-1:-1:-1;9505:711:30;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;3932:85:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:85:25;;;:::i;27713:87:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27713:87:30;;;:::i;16562:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16562:100:30;;;:::i;31175:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31175:2016:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31175:2016:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31175:2016:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31175:2016:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31175:2016:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31175:2016:30;;-1:-1:-1;31175:2016:30;;-1:-1:-1;;;;;31175:2016:30:i;21796:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:145:30;;;:::i;20927:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20927:251:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20927:251:30;;:::i;2247:809:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2247:809:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;33378:550:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33378:550:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33378:550:30;;;;;;;;:::i;16359:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16359:147:30;;;:::i;3169:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:26:30;;;:::i;38667:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38667:1097:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38667:1097:30;;;;;;;;;;;;;;;;;:::i;21639:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21639:102:30;;;:::i;6709:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6709:1358:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6709:1358:30;;:::i;18215:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:110:30;;;:::i;23739:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23739:25:30;;;:::i;11082:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11082:145:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11082:145:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11082:145:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11082:145:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:145:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11082:145:30;;-1:-1:-1;11082:145:30;;-1:-1:-1;;;;;11082:145:30:i;4641:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:659:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4641:659:30;;:::i;2948:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:31:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2948:31:30;;:::i;22008:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:98:30;;;:::i;3126:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3126:37:30;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;30418:425:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30418:425:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30418:425:30;;:::i;15480:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:180:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15480:180:30;;:::i;34129:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34129:1540:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34129:1540:30;;;;;;;;:::i;21239:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21239:177:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21239:177:30;;:::i;17783:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17783:189:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17783:189:30;;:::i;8555:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:827:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8555:827:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8555:827:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8555:827:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8555:827:30;;-1:-1:-1;8555:827:30;-1:-1:-1;8555:827:30;:::i;18386:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18386:153:30;;;:::i;30101:137::-;-1:-1:-1;;;;;;30195:36:30;;-1:-1:-1;;;30195:36:30;30101:137;;;;:::o;16199:104::-;16277:19;;16199:104;;:::o;18820:286::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;18934:7;17364:8;18906:35;;:74;;;;;17296:10;18945:7;:35;;18906:74;18898:106;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;;;;19014:33;:14;19039:7;19014:33;:24;:33;:::i;:::-;19062:37;;;19079:10;19062:37;;;;;;;;;;;;;;;;;;;;;18820:286;:::o;3896:677::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4043:26;;;;4035:60;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;;;;4217:40;4231:25;4217:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4217:40:30;;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4208:5;:49;4200:97;;;;-1:-1:-1;;;4200:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:32;4350:25;;4343:32;:::i;:::-;4432:26;:34;;-1:-1:-1;;4432:34:30;;;4521:45;;;4548:10;4521:45;;;;;;;;;;;;;;;;;;;;;3896:677;:::o;23125:47::-;;;;;;;;;;;;;;-1:-1:-1;;;23125:47:30;;;;:::o;38146:244::-;38239:6;;38272:31;:11;38292:10;38272:31;:19;:31;:::i;:::-;38257:46;;38321:14;38330:4;38321:8;:14::i;:::-;38313:44;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;;;;-1:-1:-1;;;;38374:9:30;-1:-1:-1;38146:244:30;;;;;:::o;25576:565::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;25745:19;25737:52;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;;;;25866:9;25861:229;25881:18;;;25861:229;;;25920:14;25937:35;25954:4;25961:7;;25969:1;25961:10;;;;;;;;;;;;;-1:-1:-1;;;;;25961:10:30;25937:8;:35::i;:::-;25920:52;;26046:33;26055:3;26060:7;;26068:1;26060:10;;;;;;;;;;;;;-1:-1:-1;;;;;26060:10:30;26072:6;26046:8;:33::i;:::-;-1:-1:-1;25901:3:30;;25861:229;;;;26105:29;26121:3;26126:7;;26105:29;;;;-1:-1:-1;;;;;26105:29:30;-1:-1:-1;;;;;26105:29:30;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;26105:29:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26105:29:30;;;;-1:-1:-1;26105:29:30;;-1:-1:-1;;;;;26105:29:30;25576:565;;;:::o;21466:117::-;21519:7;21545:31;:10;:29;:31::i;:::-;21538:38;;21466:117;:::o;28299:344::-;28397:6;28415:16;28461:5;;28444:23;;;;;;;30:3:-1;22:6;14;1:33;28444:23:30;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28444:23:30;;;28434:34;;49:4:-1;28434:34:30;;;;28541:38;;;;;;;;;;;;;;;;;;28434:34;;-1:-1:-1;;;;28583:9:30;-1:-1:-1;28541:38:30;;-1:-1:-1;28434:34:30;;-1:-1:-1;28568:10:30;;-1:-1:-1;28541:38:30;;;;;;28568:10;28541:38;;28568:10;28541:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28541:16:30;;-1:-1:-1;;;28541:38:30:i;:::-;-1:-1:-1;;;;;;28541:51:30;;28533:77;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;;;;-1:-1:-1;;;;28627:9:30;28299:344;-1:-1:-1;;;;;28299:344:30:o;3173:94:25:-;3245:15;;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;16806:179:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;16890:39;:11;16921:7;16890:39;:30;:39;:::i;:::-;16944:34;;;;;;;;;;;;;;;;;16806:179;:::o;18606:106::-;18685:14;:20;18606:106;:::o;3082:38::-;;;;;;:::o;8300:124::-;8358:16;8393:24;8386:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8386:31:30;;;;;;;;;;;;;;;;;;;;;;;8300:124;:::o;2898:44::-;;;;;;;;;;;;;;;:::o;29093:943::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;29269:24;29286:6;29269:16;:24::i;:::-;29261:55;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;;;;29379:23;29405:36;29425:6;29433:7;29405:19;:36::i;:::-;29379:62;-1:-1:-1;29571:41:30;:10;29379:62;29571:41;:24;:41;:::i;:::-;29669:22;29694:25;29706:12;;29694:11;:25::i;:::-;29669:50;-1:-1:-1;;;;;;29733:20:30;;;29729:253;;29769:50;-1:-1:-1;;;;;29769:25:30;;29795:14;29811:7;29769:50;:25;:50;:::i;:::-;29842:14;-1:-1:-1;;;;;29833:29:30;;29863:6;29871:7;29833:46;;;;;;;;;;;;;-1:-1:-1;;;;;29833:46:30;-1:-1:-1;;;;;29833:46:30;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29833:46:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29833:46:30;;;;29729:253;;;29919:14;-1:-1:-1;;;;;29910:29:30;;29946:7;29955:6;29963:7;29910:61;;;;;;;;;;;;;-1:-1:-1;;;;;29910:61:30;-1:-1:-1;;;;;29910:61:30;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29910:61:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29910:61:30;;;;;29729:253;29997:32;;;-1:-1:-1;;;;;29997:32:30;;;;;;;;;;;;;;;;;;;;;;;2129:1;;29093:943;;:::o;20579:233::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;20672:17;;20661:7;:28;;20653:65;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;;;;20728:29;:10;20749:7;20728:29;:20;:29;:::i;:::-;20772:33;;;20785:10;20772:33;;;;;;;;;;;;;;;;;;;;;20579:233;:::o;15817:161::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;15892:30;:11;15914:7;15892:30;:21;:30;:::i;:::-;15937:34;;;15951:10;15937:34;;;;;;;;;;;;;;;;;;;;;15817:161;:::o;35929:1934::-;36047:12;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;36266:26:30;;;;;;:12;:26;;;;;;;;36261:91;;36308:33;:11;36334:6;36308:33;:25;:33;:::i;:::-;36453:34;36461:12;-1:-1:-1;;;;;36453:32:30;;:34::i;:::-;:69;;;;;36491:31;36509:12;36491:17;:31::i;:::-;36449:1098;;;36625:10;36649:14;36692:48;36720:12;36734:5;36692:27;:48::i;:::-;-1:-1:-1;;;;;36759:16:30;;;;;;:12;:16;;;;;;36677:63;;-1:-1:-1;36677:63:30;-1:-1:-1;36759:16:30;;36754:335;;36962:18;36983:36;36998:12;37012:6;36983:14;:36::i;:::-;36962:57;-1:-1:-1;37037:37:30;:11;36962:57;37037:37;:25;:37;:::i;:::-;36754:335;;37238:45;-1:-1:-1;;;;;37238:38:30;;37277:5;37238:45;:38;:45;:::i;:::-;37404:13;;;37414:2;37404:13;;;;;;;;;37387:14;;37404:13;;;21:6:-1;;104:10;37404:13:30;87:34:-1;135:17;;-1:-1;37404:13:30;37387:30;;37439:4;37431:12;;:1;37433:2;37431:5;;;;;;;;;;;:12;-1:-1:-1;;;;;37431:12:30;;;;;;;;;37463:51;37483:12;37497:6;37505:5;37512:1;37463:51;;;;-1:-1:-1;;;;;37463:51:30;-1:-1:-1;;;;;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37463:51:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37535:1;-1:-1:-1;37528:8:30;;-1:-1:-1;;37528:8:30;36449:1098;37558:12;37572:23;37599:12;-1:-1:-1;;;;;37599:17:30;37623:6;37631:5;37599:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37599:38:30;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37557:80:30;;;;37655:7;37671:10;37647:36;;;;;-1:-1:-1;;;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37699:60;37719:12;37733:6;37741:5;37748:10;37699:60;;;;-1:-1:-1;;;;;37699:60:30;-1:-1:-1;;;;;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37846:10;-1:-1:-1;;2129:1:30;35929:1934;;;;;:::o;26493:1111::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;26797:10:30;26846:9;26840:15;;26925:16;26944:99;26984:2;26996:4;27003:6;27011:5;;26954:63;;;;;;-1:-1:-1;;;26954:63:30;;;;;;;;;;;-1:-1:-1;;;;;26954:63:30;-1:-1:-1;;;;;26954:63:30;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;26954:63:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26954:63:30;;;26944:74;;;;;;:97;:99::i;:::-;26925:118;;23503:10;27161:9;;-1:-1:-1;;;;;27119:51:30;;:38;27136:8;27146:10;;27119:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;27119:16:30;;-1:-1:-1;;;27119:38:30:i;:::-;-1:-1:-1;;;;;;27119:51:30;;27111:77;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;;;;27301:10;;27291:6;:20;27283:42;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;;;;27335:21;:19;:21::i;:::-;27424:12;27438:23;27473:4;-1:-1:-1;;;;;27465:18:30;27484:5;;27465:25;;;;;30:3:-1;22:6;14;1:33;27465:25:30;;45:16:-1;;;-1:-1;27465:25:30;;-1:-1:-1;27465:25:30;;-1:-1:-1;;27465:25:30;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27423:67:30;;;;27508:7;27524:10;27500:36;;;;;-1:-1:-1;;;27500:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27500:36:30;;27552:45;27579:5;;27586:10;27552:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27552:45:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27552:45:30;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27552:45:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:1:23;;;;26493:1111:30;;;;;:::o;8121:126::-;8180:16;8215:25;8208:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8208:32:30;;;;;;;;;;;;;;;;;;;;;;8121:126;:::o;5523:1117::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;5681:26:30;;;;5673:60;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;;;;5855:40;5869:25;5855:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5855:40:30;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;5846:5;:49;5838:97;;;;-1:-1:-1;;;5838:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:9;5985:383;6009:25;:32;6005:36;;5985:383;;;6117:12;:42;6130:25;6156:1;6130:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6130:28:30;6117:42;;;;;;;;;;;;;;;6112:246;;6272:4;6227:12;:42;6240:25;6266:1;6240:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6240:28:30;6227:42;;;;;;;;;;;;:49;;-1:-1:-1;;6227:49:30;;;;;;;;;;6314:25;:28;;6294:14;;6314:25;6340:1;;6314:28;;;;;;;;;;;;;;;;;;27:10:-1;;6314:28:30;23:18:-1;;45:23;;6294:49:30;;;;;;;;;;-1:-1:-1;;;;;;6294:49:30;-1:-1:-1;;;;;6314:28:30;;;6294:49;;;;;;6112:246;6043:3;;5985:383;;;;6418:55;6435:10;6447:25;6418:55;;;;-1:-1:-1;;;;;6418:55:30;-1:-1:-1;;;;;6418:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6418:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:32;6526:25;;6519:32;:::i;:::-;-1:-1:-1;6599:26:30;:34;;-1:-1:-1;;6599:34:30;;;5523:1117::o;16023:119::-;16077:7;16103:32;:11;:30;:32::i;10340:673::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:14;;;;;;;10517:52;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;;;;10647:21;10639:49;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;;;;10766:37;:24;10793:10;;10766:37;:::i;:::-;-1:-1:-1;10857:25:30;:32;;-1:-1:-1;;10857:32:30;;;;;10980:25;;;;;;;;;;;;;;;;;;10942:64;;10968:10;;;;10980:25;;10968:10;;;;;;10980:25;;;10968:10;;10980:25;10968:10;10980:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10980:13:30;;-1:-1:-1;;;10980:25:30:i;:::-;10942:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10942:64:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10942:64:30;;;;-1:-1:-1;10942:64:30;;-1:-1:-1;;;;;10942:64:30;10340:673;;:::o;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:6;:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;3784:1;3802:40;;;;;;;;;;;;;;;;;;;;3543:306::o;19233:304:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;19356:7;17364:8;19328:35;;:74;;;;;17296:10;19367:7;:35;;19328:74;19320:106;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;;;;19436:42;:14;19470:7;19436:42;:33;:42;:::i;:::-;19493:37;;;;;;;;;;;;;;;;;19233:304;:::o;28706:91::-;28778:12;;28706:91;:::o;1364::24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;18028:125:30:-;18085:7;18111:35;:14;:33;:35::i;9505:711::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;;;;;;;;3437:8;:23::i;:::-;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3534:1;-1:-1:-1;;;;;3509:27:30;:10;3520:1;3509:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;9727:14:30;;;;;;;9719:52;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;;;;9842:21;9834:49;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;;;;9966:38;:25;9994:10;;9966:38;:::i;:::-;-1:-1:-1;10058:26:30;:33;;-1:-1:-1;;10058:33:30;10087:4;10058:33;;;10183:25;;;;;;;;;;;;;;;;;;10144:65;;10171:10;;;;10183:25;;10171:10;;;;;;10183:25;;;10171:10;;10183:25;10171:10;10183:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10183:13:30;;-1:-1:-1;;;10183:25:30:i;:::-;10144:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10144:65:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10144:65:30;;;;-1:-1:-1;10144:65:30;;-1:-1:-1;;;;;10144:65:30;3834:1;9505:711;;:::o;1514:105:26:-;1593:19;;1514:105;:::o;3932:85:25:-;4004:6;;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;27713:87:30:-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;27772:21:30;:19;:21::i;:::-;27713:87::o;16562:100::-;16638:11;:17;16562:100;:::o;31175:2016::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;31295:24;;31322:2;31295:29;;;;:24;31273:19;;;31723:17;31764:1421;31777:11;31771:3;:17;31764:1421;;;31937:28;:20;31962:2;31937:28;:24;:28;:::i;:::-;32151:27;;;32145:34;;32312:2;32280:36;;32274:43;32533:2;32501:36;;;32495:43;;31914:51;;-1:-1:-1;32141:2:30;32137:43;;;;;-1:-1:-1;32274:43:30;;-1:-1:-1;32495:43:30;;-1:-1:-1;32501:36:30;-1:-1:-1;32709:27:30;32733:2;32709:19;32174:3;32495:43;32709:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32703:33;;32856:11;32849:3;:18;;32841:44;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;;;;32956:15;32952:70;;-1:-1:-1;32998:9:30;;;;;;;;;-1:-1:-1;32998:9:30;;32952:70;33130:44;33149:11;33162:5;33169:4;33130:18;:44::i;:::-;;31764:1421;;;2129:1;;;;;;;31175:2016;:::o;21796:145::-;21893:41;;;;21796:145;:::o;20927:251::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;21029:17;;21018:7;:28;;21010:65;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;;;;21085:38;:10;21115:7;21085:38;:29;:38;:::i;:::-;21138:33;;;;;;;;;;;;;;;;;20927:251;:::o;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;33378:550:30:-;33456:7;33545:17;33564:12;33578:14;33602:21;33616:6;33602:13;:21::i;:::-;33542:81;;;;;;;;;;33703:9;33699:205;;;33736:9;33728:28;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;;;;33861:32;33883:9;33861:17;:7;33873:4;33861:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;33854:39;;;;;;;33699:205;-1:-1:-1;33920:1:30;;33378:550;-1:-1:-1;;;;;33378:550:30:o;16359:147::-;16457:42;;;;16359:147;:::o;3169:26::-;;;;;;;;;:::o;38667:1097::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;38772:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38860:17:30;;38852:43;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38984:17:30;;;;;;:12;:17;;;;;;;;38979:584;;39101:7;-1:-1:-1;;;;;39205:20:30;;;39201:103;;39258:31;39273:6;39281:7;39258:14;:31::i;:::-;39245:44;;39201:103;39515:37;:11;39541:10;39515:37;:25;:37;:::i;:::-;38979:584;;39638:35;39652:3;39657:6;39665:7;39638:13;:35::i;:::-;39724:33;;;-1:-1:-1;;;;;39724:33:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;38667:1097;;;:::o;21639:102::-;21716:18;;21639:102;:::o;6709:1358::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;6896:25:30;;;;;;;6888:59;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;;;;7068:39;7082:24;7068:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7068:39:30;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;7059:5;:48;7051:96;;;;-1:-1:-1;;;7051:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:9;7194:601;7218:24;:31;7214:35;;7194:601;;;7308:12;:41;7321:24;7346:1;7321:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7321:27:30;7308:41;;;;;;;;;;;;;;;7304:481;;;7413:5;7369:12;:41;7382:24;7407:1;7382:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7382:27:30;7369:41;;;;;;;;;;;;:49;;-1:-1:-1;;7369:49:30;;;;;;;;;;;7436:294;7460:14;:21;:28;;7486:1;7460:28;:25;:28;:::i;:::-;7456:1;:32;7436:294;;;7542:24;7567:1;7542:27;;;;;;;;;;;;;;;;;;7521:14;:17;;-1:-1:-1;;;;;7542:27:30;;;;7536:1;;7521:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:17:30;:48;7517:195;;;7617:14;7632:21;;-1:-1:-1;;7632:25:30;;;7617:41;;;;;;;;;;;;;;;;7597:14;:17;;-1:-1:-1;;;;;7617:41:30;;;;7612:1;;7597:17;;;;;;;;;;;;;;:61;;;;;-1:-1:-1;;;;;7597:61:30;;;;;-1:-1:-1;;;;;7597:61:30;;;;;;7684:5;;7517:195;7490:3;;7436:294;;;-1:-1:-1;7747:14:30;:23;;;;;-1:-1:-1;;7747:23:30;;;:::i;:::-;;7304:481;7251:3;;7194:601;;;;7844:58;7865:10;7877:24;7844:58;;;;-1:-1:-1;;;;;7844:58:30;-1:-1:-1;;;;;7844:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7844:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7948:31;7955:24;;7948:31;:::i;:::-;-1:-1:-1;8027:25:30;:33;;-1:-1:-1;;8027:33:30;;;6709:1358::o;18215:110::-;18296:22;;18215:110;:::o;23739:25::-;;;;:::o;11082:145::-;11155:7;11208:10;11191:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11191:28:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11191:28:30;;;11181:39;;;;;;11174:46;;11082:145;;;:::o;4641:659::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4787:25;;;;;;;4779:59;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;;;;4959:39;4973:24;4959:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4959:39:30;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;4950:5;:48;4942:96;;;;-1:-1:-1;;;4942:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:31;5091:24;;5084:31;:::i;:::-;5161:25;:33;;-1:-1:-1;;5161:33:30;;;5249:44;;;5275:10;5249:44;;;;;;;;;;;;;;;;;;;;;4641:659;:::o;2948:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2948:31:30;;-1:-1:-1;2948:31:30;:::o;22008:98::-;22083:10;:16;22008:98;:::o;3126:37::-;;;;;;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;30418:425:30:-;30472:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;30633:37;:14;30662:7;30633:37;:28;:37;:::i;:::-;30717:7;:5;:7::i;:::-;-1:-1:-1;;;;;30717:16:30;:25;30734:7;30717:25;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30717:25:30;30795:41;30807:10;30819:7;:5;:7::i;:::-;30795:41;;;-1:-1:-1;;;;;30795:41:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30418:425;;:::o;15480:180::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;15564:40:30;:11;15596:7;15564:40;:31;:40;:::i;34129:1540::-;34212:7;34342:13;:11;:13::i;:::-;-1:-1:-1;;;;;34332:23:30;:6;-1:-1:-1;;;;;34332:23:30;;34328:68;;;-1:-1:-1;34378:7:30;34371:14;;34328:68;34428:7;-1:-1:-1;;;;;34482:20:30;;;34478:600;;34654:17;34673:12;34687:14;34711:21;34725:6;34711:13;:21::i;:::-;34651:81;;;;;;;;;;34843:9;34835:41;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;;;;34898:9;34890:28;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;;;;35035:32;35057:9;35035:17;:7;35047:4;35035:17;:11;:17;:::i;:32::-;35020:47;;34478:600;;;;35195:27;35224:22;35248:24;35282:20;:18;:20::i;:::-;35192:110;;;;;;;;;;35368:19;35360:51;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;;;;35429:19;35421:49;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;;;;35605:57;35647:14;35605:37;:12;35622:19;35605:37;:16;:37;:::i;:57::-;35598:64;34129:1540;-1:-1:-1;;;;;;;34129:1540:30:o;21239:177::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;21322:39:30;:10;21353:7;21322:39;:30;:39;:::i;17783:189::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;17870:43:30;:14;17905:7;17870:43;:34;:43;:::i;8555:827::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;8657:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;3437:23;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3534:1;-1:-1:-1;;;;;3509:27:30;:10;3520:1;3509:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;8752:14:30;;;;;;;8751:15;8743:49;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;;;;8871:9;8866:384;8886:21;;;8866:384;;;8996:12;:27;9009:10;;9020:1;9009:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9009:13:30;8996:27;;-1:-1:-1;8996:27:30;;;;;;;;-1:-1:-1;8996:27:30;;;;8991:249;;9122:4;9092:12;:27;9105:10;;9116:1;9105:13;;;;;;;;;;;;;-1:-1:-1;;;;;9105:13:30;-1:-1:-1;;;;;9092:27:30;-1:-1:-1;;;;;9092:27:30;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9191:14;9211:10;;9222:1;9211:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9191:34:30;;;9211:13;9191:34;;;;;;;-1:-1:-1;;;;;;9191:34:30;-1:-1:-1;;;;;9211:13:30;;;;;;;;;;;;;9191:34;;;;;;-1:-1:-1;8991:249:30;8909:3;;8866:384;;;-1:-1:-1;9259:14:30;:21;;-1:-1:-1;;9259:21:30;;;;;9331:44;;;9348:10;9331:44;;;;;;;;;9360:14;9331:44;;;;;;;;;;9348:10;;9360:14;;9331:44;;;;;;;9360:14;;9331:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9331:44:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;8555:827;;:::o;18386:153::-;18487:45;;;;18386:153;:::o;4123:107:25:-;4217:6;;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;13567:401:30:-;13718:35;;;;;;13717:36;13709:66;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;;;;13844:27;13857:4;13863:7;13844:12;:27::i;:::-;-1:-1:-1;13919:35:30;;:42;;-1:-1:-1;;13919:42:30;13957:4;13919:42;;;13567:401::o;2332:158:23:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;-1:-1:-1;;;;;2419:54:23;;2474:8;2419:64;;;;;;;;;;;;;-1:-1:-1;;;;;2419:64:23;-1:-1:-1;;;;;2419:64:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;2387:1891;-1:-1:-1;;;;;;;2387:1891:2:o;1207:245:21:-;1282:7;-1:-1:-1;;;;;1305:20:21;;;1301:145;;1354:6;-1:-1:-1;;;;;1348:23:21;;1372:8;1348:33;;;;;;;;;;;;;-1:-1:-1;;;;;1348:33:21;-1:-1:-1;;;;;1348:33:21;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1348:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:21;;-1:-1:-1;1341:40:21;;1301:145;-1:-1:-1;;;;;;1419:16:21;;;1412:23;;12652:240:30;12757:19;;;;12728:7;;12757:33;;12781:8;12757:33;:23;:33;:::i;:::-;12751:3;:39;12747:139;;;-1:-1:-1;12813:10:30;;12806:17;;12747:139;-1:-1:-1;12861:14:30;;;;12854:21;;14103:317;14254:35;;;;;;14246:73;;;;;-1:-1:-1;;;14246:73:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:12;;;;:22;14103:317::o;5161:156:26:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:26;;5161:156;-1:-1:-1;;;;;;;;5161:156:26:o;12192:288:30:-;12328:27;12350:4;12328:21;:27::i;:::-;12391:7;12373:4;:14;;;:25;;12365:54;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;;;;12446:14;;;;:27;;12465:7;12446:27;:18;:27;:::i;:::-;12429:4;:14;;:44;;;;12192:288;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;4644:159:26:-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:26;;4644:159;-1:-1:-1;;;;;;;;4644:159:26:o;4305:241::-;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;-1:-1:-1;;;;;4442:76:26;;4519:12;4533:5;4442:97;;;;;;;;;;;;;-1:-1:-1;;;;;4442:97:26;-1:-1:-1;;;;;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:26;;;;;;;;;;;-1:-1:-1;4305:241:26;-1:-1:-1;;;4305:241:26:o;3757:1095:5:-;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;27876:128:30:-;27926:10;:12;;;;;;;;27954:43;;;27974:10;27954:43;;;;;;;;;;;;;;;;;;;;;27876:128::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:26;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:26;-1:-1:-1;;;;;2306:66:26;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;11749:338:30:-;11934:7;11918:4;:12;;;:23;11910:70;;;;-1:-1:-1;;;11910:70:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12048:32;12061:4;12067;:12;;;12048;:32::i;:::-;11749:338;;:::o;5436:141:26:-;5482:7;5524:32;5536:19;;5524:11;:32::i;:::-;-1:-1:-1;;;;;5508:60:26;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5508:62:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5508:62:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5508:62:26;;-1:-1:-1;5436:141:26;:::o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;13038:425:30:-;13172:27;13194:4;13172:21;:27::i;:::-;13264:20;;;13376:14;;;;:27;-1:-1:-1;13372:85:30;;;13436:10;;13419:14;;;:27;13038:425;;:::o;14494:370::-;14578:19;;;;:33;;14602:8;14578:33;:23;:33;:::i;:::-;14572:3;:39;14568:290;;;14694:3;14672:19;;;:25;14795:10;;14778:14;;;:27;14824:23;;;;14795:10;;14824:23;14568:290;14494:370;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;-1:-1:-1;;;;;22209:17557:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;22209:17557:30;;;-1:-1:-1;22209:17557:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ECDSA.sol","externals/ERC165.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/balanceable.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","licence.sol","tokenWhitelist.sol","wallet.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[4283],"IController":[3848]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3831,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":3029,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":4284,"symbolAliases":[null],"unitAlias":""},"id":3832,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":3286,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":4284,"symbolAliases":[null],"unitAlias":""},"id":3833,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[3848],"name":"IController","scope":4284},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":3848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3840,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3834,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":3835,"name":"VariableDeclaration","src":"1015:7:0"}],"id":3836,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3840,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3837,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":3838,"name":"VariableDeclaration","src":"1047:4:0"}],"id":3839,"name":"ParameterList","src":"1046:6:0"}],"id":3840,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":3848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3841,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":3842,"name":"VariableDeclaration","src":"1076:7:0"}],"id":3843,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3847,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3844,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":3845,"name":"VariableDeclaration","src":"1108:4:0"}],"id":3846,"name":"ParameterList","src":"1107:6:0"}],"id":3847,"name":"FunctionDefinition","src":"1059:55:0"}],"id":3848,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[3028,3285,3848],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[4283,3285,3028,3848],"name":"Controller","scope":4284},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":3848,"type":"contract IController"},"id":3849,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":3850,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3028,"type":"contract Ownable"},"id":3851,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":3852,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3285,"type":"contract Transferrable"},"id":3853,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":3854,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3860,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3855,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":3856,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3860,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3857,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":3858,"name":"VariableDeclaration","src":"1564:19:0"}],"id":3859,"name":"ParameterList","src":"1546:38:0"}],"id":3860,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3866,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3861,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":3862,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3866,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3863,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":3864,"name":"VariableDeclaration","src":"1631:19:0"}],"id":3865,"name":"ParameterList","src":"1613:38:0"}],"id":3866,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3867,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":3868,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3869,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":3870,"name":"VariableDeclaration","src":"1692:14:0"}],"id":3871,"name":"ParameterList","src":"1674:33:0"}],"id":3872,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3878,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3873,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":3874,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3878,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3875,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":3876,"name":"VariableDeclaration","src":"1749:14:0"}],"id":3877,"name":"ParameterList","src":"1731:33:0"}],"id":3878,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3879,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":3880,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3881,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":3882,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3886,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3883,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":3884,"name":"VariableDeclaration","src":"1814:15:0"}],"id":3885,"name":"ParameterList","src":"1784:46:0"}],"id":3886,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3890,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3887,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":3888,"name":"VariableDeclaration","src":"1851:15:0"}],"id":3889,"name":"ParameterList","src":"1850:17:0"}],"id":3890,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3891,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":3892,"name":"VariableDeclaration","src":"1887:15:0"}],"id":3893,"name":"ParameterList","src":"1886:17:0"}],"id":3894,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":4283,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3895,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3896,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":3897,"name":"Mapping","src":"1910:24:0"}],"id":3898,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":4283,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3899,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":3900,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":4283,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3901,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3902,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":3903,"name":"Mapping","src":"1991:24:0"}],"id":3904,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":4283,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3905,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":3906,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":4283,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3907,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":3908,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":3918,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3909,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":3910,"name":"VariableDeclaration","src":"2251:30:0"}],"id":3911,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":3916,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3028,"type":"type(contract Ownable)","value":"Ownable"},"id":3912,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"address payable","value":"_ownerAddress_"},"id":3913,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3914,"name":"Literal","src":"2314:5:0"}],"id":3915,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":3917,"name":"Block","src":"2321:2:0"}],"id":3918,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3919,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3920,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3921,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3922,"name":"Identifier","src":"2431:3:0"}],"id":3923,"name":"MemberAccess","src":"2431:10:0"}],"id":3924,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":3925,"name":"Literal","src":"2444:24:0"}],"id":3926,"name":"FunctionCall","src":"2414:55:0"}],"id":3927,"name":"ExpressionStatement","src":"2414:55:0"},{"id":3928,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":3929,"name":"Block","src":"2404:83:0"}],"id":3930,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3931,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3932,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3933,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3934,"name":"Identifier","src":"2588:3:0"}],"id":3935,"name":"MemberAccess","src":"2588:10:0"}],"id":3936,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3937,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3938,"name":"Identifier","src":"2612:3:0"}],"id":3939,"name":"MemberAccess","src":"2612:10:0"}],"id":3940,"name":"IndexAccess","src":"2603:20:0"}],"id":3941,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":3942,"name":"Literal","src":"2625:24:0"}],"id":3943,"name":"FunctionCall","src":"2571:79:0"}],"id":3944,"name":"ExpressionStatement","src":"2571:79:0"},{"id":3945,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":3946,"name":"Block","src":"2561:107:0"}],"id":3947,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3948,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3949,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4062,"type":"function () view returns (bool)","value":"isStopped"},"id":3950,"name":"Identifier","src":"2762:9:0"}],"id":3951,"name":"FunctionCall","src":"2762:11:0"}],"id":3952,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":3953,"name":"Literal","src":"2775:23:0"}],"id":3954,"name":"FunctionCall","src":"2753:46:0"}],"id":3955,"name":"ExpressionStatement","src":"2753:46:0"},{"id":3956,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":3957,"name":"Block","src":"2743:74:0"}],"id":3958,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3972,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3959,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":3960,"name":"VariableDeclaration","src":"2958:16:0"}],"id":3961,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3966,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":3962,"name":"Identifier","src":"2985:9:0"}],"id":3963,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":3964,"name":"Identifier","src":"2995:10:0"}],"id":3965,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"function (address)","value":"_addAdmin"},"id":3967,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3960,"type":"address","value":"_account"},"id":3968,"name":"Identifier","src":"3026:8:0"}],"id":3969,"name":"FunctionCall","src":"3016:19:0"}],"id":3970,"name":"ExpressionStatement","src":"3016:19:0"}],"id":3971,"name":"Block","src":"3006:36:0"}],"id":3972,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3984,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3973,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":3974,"name":"VariableDeclaration","src":"3192:16:0"}],"id":3975,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3978,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":3976,"name":"Identifier","src":"3219:9:0"}],"id":3977,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4144,"type":"function (address)","value":"_removeAdmin"},"id":3979,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3974,"type":"address","value":"_account"},"id":3980,"name":"Identifier","src":"3252:8:0"}],"id":3981,"name":"FunctionCall","src":"3239:22:0"}],"id":3982,"name":"ExpressionStatement","src":"3239:22:0"}],"id":3983,"name":"Block","src":"3229:39:0"}],"id":3984,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":4283,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3985,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3992,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3986,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":3987,"name":"VariableDeclaration","src":"3365:7:0"}],"id":3988,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":3988},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3900,"type":"uint256","value":"_adminCount"},"id":3989,"name":"Identifier","src":"3391:11:0"}],"id":3990,"name":"Return","src":"3384:18:0"}],"id":3991,"name":"Block","src":"3374:35:0"}],"id":3992,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4006,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3993,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":3994,"name":"VariableDeclaration","src":"3570:16:0"}],"id":3995,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4000,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3947,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3996,"name":"Identifier","src":"3597:16:0"}],"id":3997,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":3998,"name":"Identifier","src":"3614:10:0"}],"id":3999,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4198,"type":"function (address)","value":"_addController"},"id":4001,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3994,"type":"address","value":"_account"},"id":4002,"name":"Identifier","src":"3650:8:0"}],"id":4003,"name":"FunctionCall","src":"3635:24:0"}],"id":4004,"name":"ExpressionStatement","src":"3635:24:0"}],"id":4005,"name":"Block","src":"3625:41:0"}],"id":4006,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4018,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4007,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":4008,"name":"VariableDeclaration","src":"3836:16:0"}],"id":4009,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4012,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3947,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4010,"name":"Identifier","src":"3863:16:0"}],"id":4011,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4226,"type":"function (address)","value":"_removeController"},"id":4013,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4008,"type":"address","value":"_account"},"id":4014,"name":"Identifier","src":"3908:8:0"}],"id":4015,"name":"FunctionCall","src":"3890:27:0"}],"id":4016,"name":"ExpressionStatement","src":"3890:27:0"}],"id":4017,"name":"Block","src":"3880:44:0"}],"id":4018,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":4283,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4019,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4020,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":4021,"name":"VariableDeclaration","src":"4069:7:0"}],"id":4022,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":4022},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"_controllerCount"},"id":4023,"name":"Identifier","src":"4095:16:0"}],"id":4024,"name":"Return","src":"4088:23:0"}],"id":4025,"name":"Block","src":"4078:40:0"}],"id":4026,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":4283,"stateMutability":"view","superFunction":3847,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4040,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4027,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":4028,"name":"VariableDeclaration","src":"4239:16:0"}],"id":4029,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4040,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4032,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":4033,"name":"VariableDeclaration","src":"4291:4:0"}],"id":4034,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":4030,"name":"Identifier","src":"4271:10:0"}],"id":4031,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":4034},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4035,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4028,"type":"address","value":"_account"},"id":4036,"name":"Identifier","src":"4323:8:0"}],"id":4037,"name":"IndexAccess","src":"4314:18:0"}],"id":4038,"name":"Return","src":"4307:25:0"}],"id":4039,"name":"Block","src":"4297:42:0"}],"id":4040,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":4283,"stateMutability":"view","superFunction":3840,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4054,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4041,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":4042,"name":"VariableDeclaration","src":"4473:16:0"}],"id":4043,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4054,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4046,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":4047,"name":"VariableDeclaration","src":"4525:4:0"}],"id":4048,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":4044,"name":"Identifier","src":"4505:10:0"}],"id":4045,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":4048},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4049,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4042,"type":"address","value":"_account"},"id":4050,"name":"Identifier","src":"4562:8:0"}],"id":4051,"name":"IndexAccess","src":"4548:23:0"}],"id":4052,"name":"Return","src":"4541:30:0"}],"id":4053,"name":"Block","src":"4531:47:0"}],"id":4054,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":4283,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4055,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4062,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4056,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":4057,"name":"VariableDeclaration","src":"4766:4:0"}],"id":4058,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":4058},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3908,"type":"bool","value":"_stopped"},"id":4059,"name":"Identifier","src":"4789:8:0"}],"id":4060,"name":"Return","src":"4782:15:0"}],"id":4061,"name":"Block","src":"4772:32:0"}],"id":4062,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4116,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4063,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":4064,"name":"VariableDeclaration","src":"4891:16:0"}],"id":4065,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4066,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4067,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4068,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4069,"name":"Identifier","src":"4945:8:0"}],"id":4070,"name":"IndexAccess","src":"4936:18:0"}],"id":4071,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":4072,"name":"Literal","src":"4956:38:0"}],"id":4073,"name":"FunctionCall","src":"4927:68:0"}],"id":4074,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4075,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4076,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4077,"name":"Identifier","src":"5028:8:0"}],"id":4078,"name":"IndexAccess","src":"5014:23:0"}],"id":4079,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":4080,"name":"Literal","src":"5039:42:0"}],"id":4081,"name":"FunctionCall","src":"5005:77:0"}],"id":4082,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4083,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":4084,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4085,"name":"Identifier","src":"5110:8:0"}],"id":4086,"name":"FunctionCall","src":"5101:18:0"}],"id":4087,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":4088,"name":"Literal","src":"5121:39:0"}],"id":4089,"name":"FunctionCall","src":"5092:69:0"}],"id":4090,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4091,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4092,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4093,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4094,"name":"Literal","src":"5199:1:0"}],"id":4095,"name":"FunctionCall","src":"5191:10:0"}],"id":4096,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":4097,"name":"Literal","src":"5203:38:0"}],"id":4098,"name":"FunctionCall","src":"5171:71:0"}],"id":4099,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4100,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4101,"name":"Identifier","src":"5261:8:0"}],"id":4102,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4103,"name":"Literal","src":"5273:4:0"}],"id":4104,"name":"Assignment","src":"5252:25:0"}],"id":4105,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3900,"type":"uint256","value":"_adminCount"},"id":4106,"name":"Identifier","src":"5287:11:0"}],"id":4107,"name":"UnaryOperation","src":"5287:13:0"}],"id":4108,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3872,"type":"function (address,address)","value":"AddedAdmin"},"id":4109,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4110,"name":"Identifier","src":"5326:3:0"}],"id":4111,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4112,"name":"Identifier","src":"5338:8:0"}],"id":4113,"name":"FunctionCall","src":"5315:32:0"}],"id":4114,"name":"EmitStatement","src":"5310:37:0"}],"id":4115,"name":"Block","src":"4917:437:0"}],"id":4116,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4144,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4117,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":4118,"name":"VariableDeclaration","src":"5453:16:0"}],"id":4119,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4120,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4121,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4122,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4118,"type":"address","value":"_account"},"id":4123,"name":"Identifier","src":"5506:8:0"}],"id":4124,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":4125,"name":"Literal","src":"5517:34:0"}],"id":4126,"name":"FunctionCall","src":"5489:63:0"}],"id":4127,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4128,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4118,"type":"address","value":"_account"},"id":4129,"name":"Identifier","src":"5571:8:0"}],"id":4130,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4131,"name":"Literal","src":"5583:5:0"}],"id":4132,"name":"Assignment","src":"5562:26:0"}],"id":4133,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3900,"type":"uint256","value":"_adminCount"},"id":4134,"name":"Identifier","src":"5598:11:0"}],"id":4135,"name":"UnaryOperation","src":"5598:13:0"}],"id":4136,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3878,"type":"function (address,address)","value":"RemovedAdmin"},"id":4137,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4138,"name":"Identifier","src":"5639:3:0"}],"id":4139,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4118,"type":"address","value":"_account"},"id":4140,"name":"Identifier","src":"5651:8:0"}],"id":4141,"name":"FunctionCall","src":"5626:34:0"}],"id":4142,"name":"EmitStatement","src":"5621:39:0"}],"id":4143,"name":"Block","src":"5479:188:0"}],"id":4144,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4198,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4145,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":4146,"name":"VariableDeclaration","src":"5764:16:0"}],"id":4147,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4148,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4149,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4150,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4151,"name":"Identifier","src":"5818:8:0"}],"id":4152,"name":"IndexAccess","src":"5809:18:0"}],"id":4153,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":4154,"name":"Literal","src":"5829:38:0"}],"id":4155,"name":"FunctionCall","src":"5800:68:0"}],"id":4156,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4157,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4158,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4159,"name":"Identifier","src":"5901:8:0"}],"id":4160,"name":"IndexAccess","src":"5887:23:0"}],"id":4161,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":4162,"name":"Literal","src":"5912:42:0"}],"id":4163,"name":"FunctionCall","src":"5878:77:0"}],"id":4164,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4165,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":4166,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4167,"name":"Identifier","src":"5983:8:0"}],"id":4168,"name":"FunctionCall","src":"5974:18:0"}],"id":4169,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":4170,"name":"Literal","src":"5994:39:0"}],"id":4171,"name":"FunctionCall","src":"5965:69:0"}],"id":4172,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4173,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4174,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4175,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4176,"name":"Literal","src":"6072:1:0"}],"id":4177,"name":"FunctionCall","src":"6064:10:0"}],"id":4178,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":4179,"name":"Literal","src":"6076:38:0"}],"id":4180,"name":"FunctionCall","src":"6044:71:0"}],"id":4181,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4182,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4183,"name":"Identifier","src":"6139:8:0"}],"id":4184,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4185,"name":"Literal","src":"6151:4:0"}],"id":4186,"name":"Assignment","src":"6125:30:0"}],"id":4187,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"_controllerCount"},"id":4188,"name":"Identifier","src":"6165:16:0"}],"id":4189,"name":"UnaryOperation","src":"6165:18:0"}],"id":4190,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"function (address,address)","value":"AddedController"},"id":4191,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4192,"name":"Identifier","src":"6214:3:0"}],"id":4193,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4194,"name":"Identifier","src":"6226:8:0"}],"id":4195,"name":"FunctionCall","src":"6198:37:0"}],"id":4196,"name":"EmitStatement","src":"6193:42:0"}],"id":4197,"name":"Block","src":"5790:452:0"}],"id":4198,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4199,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":4200,"name":"VariableDeclaration","src":"6351:16:0"}],"id":4201,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4202,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4203,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4204,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"_account"},"id":4205,"name":"Identifier","src":"6409:8:0"}],"id":4206,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":4207,"name":"Literal","src":"6420:38:0"}],"id":4208,"name":"FunctionCall","src":"6387:72:0"}],"id":4209,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4210,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"_account"},"id":4211,"name":"Identifier","src":"6483:8:0"}],"id":4212,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4213,"name":"Literal","src":"6495:5:0"}],"id":4214,"name":"Assignment","src":"6469:31:0"}],"id":4215,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"_controllerCount"},"id":4216,"name":"Identifier","src":"6510:16:0"}],"id":4217,"name":"UnaryOperation","src":"6510:18:0"}],"id":4218,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3866,"type":"function (address,address)","value":"RemovedController"},"id":4219,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4220,"name":"Identifier","src":"6561:3:0"}],"id":4221,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"_account"},"id":4222,"name":"Identifier","src":"6573:8:0"}],"id":4223,"name":"FunctionCall","src":"6543:39:0"}],"id":4224,"name":"EmitStatement","src":"6538:44:0"}],"id":4225,"name":"Block","src":"6377:212:0"}],"id":4226,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4227,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":4230,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3947,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4228,"name":"Identifier","src":"6687:16:0"}],"id":4229,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3908,"type":"bool","value":"_stopped"},"id":4231,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4232,"name":"Literal","src":"6725:4:0"}],"id":4233,"name":"Assignment","src":"6714:15:0"}],"id":4234,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"function (address)","value":"Stopped"},"id":4235,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4236,"name":"Identifier","src":"6752:3:0"}],"id":4237,"name":"MemberAccess","src":"6752:10:0"}],"id":4238,"name":"FunctionCall","src":"6744:19:0"}],"id":4239,"name":"EmitStatement","src":"6739:24:0"}],"id":4240,"name":"Block","src":"6704:66:0"}],"id":4241,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4242,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":4245,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":4243,"name":"Identifier","src":"6845:9:0"}],"id":4244,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3908,"type":"bool","value":"_stopped"},"id":4246,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4247,"name":"Literal","src":"6876:5:0"}],"id":4248,"name":"Assignment","src":"6865:16:0"}],"id":4249,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3894,"type":"function (address)","value":"Started"},"id":4250,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4251,"name":"Identifier","src":"6904:3:0"}],"id":4252,"name":"MemberAccess","src":"6904:10:0"}],"id":4253,"name":"FunctionCall","src":"6896:19:0"}],"id":4254,"name":"EmitStatement","src":"6891:24:0"}],"id":4255,"name":"Block","src":"6855:67:0"}],"id":4256,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4282,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4257,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":4258,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":4282,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4259,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":4260,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":4282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4261,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":4262,"name":"VariableDeclaration","src":"7063:15:0"}],"id":4263,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":4268,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"modifier ()","value":"onlyAdmin"},"id":4264,"name":"Identifier","src":"7089:9:0"}],"id":4265,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":4266,"name":"Identifier","src":"7099:10:0"}],"id":4267,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3284,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":4269,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_to"},"id":4270,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address","value":"_asset"},"id":4271,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"uint256","value":"_amount"},"id":4272,"name":"Identifier","src":"7147:7:0"}],"id":4273,"name":"FunctionCall","src":"7120:35:0"}],"id":4274,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3886,"type":"function (address,address,uint256)","value":"Claimed"},"id":4275,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_to"},"id":4276,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address","value":"_asset"},"id":4277,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"uint256","value":"_amount"},"id":4278,"name":"Identifier","src":"7191:7:0"}],"id":4279,"name":"FunctionCall","src":"7170:29:0"}],"id":4280,"name":"EmitStatement","src":"7165:34:0"}],"id":4281,"name":"Block","src":"7110:96:0"}],"id":4282,"name":"FunctionDefinition","src":"7011:195:0"}],"id":4283,"name":"ContractDefinition","src":"1460:5748:0"}],"id":4284,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[2202]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2185,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[2202],"name":"Address","scope":2203},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":2202,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":2201,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2186,"name":"ElementaryTypeName","src":"562:7:1"}],"id":2187,"name":"VariableDeclaration","src":"562:15:1"}],"id":2188,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":2201,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2189,"name":"ElementaryTypeName","src":"602:4:1"}],"id":2190,"name":"VariableDeclaration","src":"602:4:1"}],"id":2191,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[2193],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":2200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2192,"name":"ElementaryTypeName","src":"805:7:1"}],"id":2193,"name":"VariableDeclaration","src":"805:12:1"}],"id":2194,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":2193,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":2187,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":2195,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":2191},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2193,"type":"uint256","value":"size"},"id":2196,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2197,"name":"Literal","src":"947:1:1"}],"id":2198,"name":"BinaryOperation","src":"940:8:1"}],"id":2199,"name":"Return","src":"933:15:1"}],"id":2200,"name":"Block","src":"608:347:1"}],"id":2201,"name":"FunctionDefinition","src":"542:413:1"}],"id":2202,"name":"ContractDefinition","src":"94:863:1"}],"id":2203,"name":"SourceUnit","src":"0:958:1"}},"externals/ECDSA.sol":{"AST":{"attributes":{"absolutePath":"externals/ECDSA.sol","exportedSymbols":{"ECDSA":[2283]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2204,"name":"PragmaDirective","src":"1161:23:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n * These functions can be used to verify that a message was signed by the holder\nof the private keys of a given address.","fullyImplemented":true,"linearizedBaseContracts":[2283],"name":"ECDSA","scope":2284},"children":[{"attributes":{"documentation":"@dev Returns the address that signed a hashed message (`hash`) with\n`signature`. This address can then be used for verification purposes.\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\nthis function rejects them by requiring the `s` value to be in the lower\nhalf order, and the `v` value to be either 27 or 28.\n * NOTE: This call _does not revert_ if the signature is invalid, or\nif the signer is otherwise unable to be retrieved. In those scenarios,\nthe zero address is returned.\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\nverification to be secure: it is possible to craft signatures that\nrecover to arbitrary addresses for non-hashed data. A safe way to ensure\nthis is by receiving a hash of the original message (which may otherwise\nbe too long), and then calling {toEthSignedMessageHash} on it.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recover","scope":2283,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":2266,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2205,"name":"ElementaryTypeName","src":"2404:7:2"}],"id":2206,"name":"VariableDeclaration","src":"2404:12:2"},{"attributes":{"constant":false,"name":"signature","scope":2266,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2207,"name":"ElementaryTypeName","src":"2418:5:2"}],"id":2208,"name":"VariableDeclaration","src":"2418:22:2"}],"id":2209,"name":"ParameterList","src":"2403:38:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":2266,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2210,"name":"ElementaryTypeName","src":"2465:7:2"}],"id":2211,"name":"VariableDeclaration","src":"2465:7:2"}],"id":2212,"name":"ParameterList","src":"2464:9:2"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2208,"type":"bytes memory","value":"signature"},"id":2213,"name":"Identifier","src":"2526:9:2"}],"id":2214,"name":"MemberAccess","src":"2526:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":2215,"name":"Literal","src":"2546:2:2"}],"id":2216,"name":"BinaryOperation","src":"2526:22:2"},{"children":[{"attributes":{"functionReturnParameters":2212},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2217,"name":"ElementaryTypeNameExpression","src":"2572:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2218,"name":"Literal","src":"2580:1:2"}],"id":2219,"name":"FunctionCall","src":"2572:10:2"}],"id":2220,"name":"TupleExpression","src":"2571:12:2"}],"id":2221,"name":"Return","src":"2564:19:2"}],"id":2222,"name":"Block","src":"2550:44:2"}],"id":2223,"name":"IfStatement","src":"2522:72:2"},{"attributes":{"assignments":[2225],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":2265,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2224,"name":"ElementaryTypeName","src":"2660:7:2"}],"id":2225,"name":"VariableDeclaration","src":"2660:9:2"}],"id":2226,"name":"VariableDeclarationStatement","src":"2660:9:2"},{"attributes":{"assignments":[2228],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":2265,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2227,"name":"ElementaryTypeName","src":"2679:7:2"}],"id":2228,"name":"VariableDeclaration","src":"2679:9:2"}],"id":2229,"name":"VariableDeclarationStatement","src":"2679:9:2"},{"attributes":{"assignments":[2231],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":2265,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2230,"name":"ElementaryTypeName","src":"2698:5:2"}],"id":2231,"name":"VariableDeclaration","src":"2698:7:2"}],"id":2232,"name":"VariableDeclarationStatement","src":"2698:7:2"},{"attributes":{"externalReferences":[{"r":{"declaration":2225,"isOffset":false,"isSlot":false,"src":"2918:1:2","valueSize":1}},{"signature":{"declaration":2208,"isOffset":false,"isSlot":false,"src":"2933:9:2","valueSize":1}},{"v":{"declaration":2231,"isOffset":false,"isSlot":false,"src":"3008:1:2","valueSize":1}},{"s":{"declaration":2228,"isOffset":false,"isSlot":false,"src":"2963:1:2","valueSize":1}},{"signature":{"declaration":2208,"isOffset":false,"isSlot":false,"src":"2978:9:2","valueSize":1}},{"signature":{"declaration":2208,"isOffset":false,"isSlot":false,"src":"3031:9:2","valueSize":1}}],"operations":"{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}"},"children":[],"id":2233,"name":"InlineAssembly","src":"2895:164:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":2234,"name":"ElementaryTypeNameExpression","src":"3947:7:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2228,"type":"bytes32","value":"s"},"id":2235,"name":"Identifier","src":"3955:1:2"}],"id":2236,"name":"FunctionCall","src":"3947:10:2"},{"attributes":{"argumentTypes":null,"hexvalue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5789...(69 digits omitted)...7168","value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"id":2237,"name":"Literal","src":"3960:66:2"}],"id":2238,"name":"BinaryOperation","src":"3947:79:2"},{"children":[{"attributes":{"functionReturnParameters":2212},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2239,"name":"ElementaryTypeNameExpression","src":"4049:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2240,"name":"Literal","src":"4057:1:2"}],"id":2241,"name":"FunctionCall","src":"4049:10:2"}],"id":2242,"name":"Return","src":"4042:17:2"}],"id":2243,"name":"Block","src":"4028:42:2"}],"id":2244,"name":"IfStatement","src":"3943:127:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2231,"type":"uint8","value":"v"},"id":2245,"name":"Identifier","src":"4084:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":2246,"name":"Literal","src":"4089:2:2"}],"id":2247,"name":"BinaryOperation","src":"4084:7:2"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2231,"type":"uint8","value":"v"},"id":2248,"name":"Identifier","src":"4095:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":2249,"name":"Literal","src":"4100:2:2"}],"id":2250,"name":"BinaryOperation","src":"4095:7:2"}],"id":2251,"name":"BinaryOperation","src":"4084:18:2"},{"children":[{"attributes":{"functionReturnParameters":2212},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2252,"name":"ElementaryTypeNameExpression","src":"4125:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2253,"name":"Literal","src":"4133:1:2"}],"id":2254,"name":"FunctionCall","src":"4125:10:2"}],"id":2255,"name":"Return","src":"4118:17:2"}],"id":2256,"name":"Block","src":"4104:42:2"}],"id":2257,"name":"IfStatement","src":"4080:66:2"},{"attributes":{"functionReturnParameters":2212},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":10101,"type":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)","value":"ecrecover"},"id":2258,"name":"Identifier","src":"4247:9:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2206,"type":"bytes32","value":"hash"},"id":2259,"name":"Identifier","src":"4257:4:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2231,"type":"uint8","value":"v"},"id":2260,"name":"Identifier","src":"4263:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"bytes32","value":"r"},"id":2261,"name":"Identifier","src":"4266:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2228,"type":"bytes32","value":"s"},"id":2262,"name":"Identifier","src":"4269:1:2"}],"id":2263,"name":"FunctionCall","src":"4247:24:2"}],"id":2264,"name":"Return","src":"4240:31:2"}],"id":2265,"name":"Block","src":"2474:1804:2"}],"id":2266,"name":"FunctionDefinition","src":"2387:1891:2"},{"attributes":{"documentation":"@dev Returns an Ethereum Signed Message, created from a `hash`. This\nreplicates the behavior of the\nhttps://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\nJSON-RPC method.\n * See {recover}.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toEthSignedMessageHash","scope":2283,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":2282,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2267,"name":"ElementaryTypeName","src":"4574:7:2"}],"id":2268,"name":"VariableDeclaration","src":"4574:12:2"}],"id":2269,"name":"ParameterList","src":"4573:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":2282,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2270,"name":"ElementaryTypeName","src":"4611:7:2"}],"id":2271,"name":"VariableDeclaration","src":"4611:7:2"}],"id":2272,"name":"ParameterList","src":"4610:9:2"},{"children":[{"attributes":{"functionReturnParameters":2272},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2273,"name":"Identifier","src":"4731:9:2"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string \"\u0019Ethereum Signed Message:\n32\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2274,"name":"Identifier","src":"4741:3:2"}],"id":2275,"name":"MemberAccess","src":"4741:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"19457468657265756d205369676e6564204d6573736167653a0a3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0019Ethereum Signed Message:\n32\"","value":"\u0019Ethereum Signed Message:\n32"},"id":2276,"name":"Literal","src":"4758:34:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2268,"type":"bytes32","value":"hash"},"id":2277,"name":"Identifier","src":"4794:4:2"}],"id":2278,"name":"FunctionCall","src":"4741:58:2"}],"id":2279,"name":"FunctionCall","src":"4731:69:2"}],"id":2280,"name":"Return","src":"4724:76:2"}],"id":2281,"name":"Block","src":"4620:187:2"}],"id":2282,"name":"FunctionDefinition","src":"4542:265:2"}],"id":2283,"name":"ContractDefinition","src":"1392:3417:2"}],"id":2284,"name":"SourceUnit","src":"1161:3649:2"}},"externals/ERC165.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC165.sol","exportedSymbols":{"ERC165":[2293]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":2285,"name":"PragmaDirective","src":"0:24:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC165 interface specifies a standard way of querying if a contract implements an interface.","fullyImplemented":false,"linearizedBaseContracts":[2293],"name":"ERC165","scope":2294},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2293,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2292,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2286,"name":"ElementaryTypeName","src":"180:6:3"}],"id":2287,"name":"VariableDeclaration","src":"180:6:3"}],"id":2288,"name":"ParameterList","src":"179:8:3"},{"children":[{"attributes":{"constant":false,"name":"","scope":2292,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2289,"name":"ElementaryTypeName","src":"211:4:3"}],"id":2290,"name":"VariableDeclaration","src":"211:4:3"}],"id":2291,"name":"ParameterList","src":"210:6:3"}],"id":2292,"name":"FunctionDefinition","src":"153:64:3"}],"id":2293,"name":"ContractDefinition","src":"130:89:3"}],"id":2294,"name":"SourceUnit","src":"0:220:3"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[2346]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":2295,"name":"PragmaDirective","src":"0:24:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[2346],"name":"ERC20","scope":2347},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":2346,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":2304,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2296,"name":"ElementaryTypeName","src":"193:7:4"}],"id":2297,"name":"VariableDeclaration","src":"193:14:4"},{"attributes":{"constant":false,"name":"_spender","scope":2304,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2298,"name":"ElementaryTypeName","src":"209:7:4"}],"id":2299,"name":"VariableDeclaration","src":"209:16:4"}],"id":2300,"name":"ParameterList","src":"192:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2301,"name":"ElementaryTypeName","src":"250:7:4"}],"id":2302,"name":"VariableDeclaration","src":"250:7:4"}],"id":2303,"name":"ParameterList","src":"249:9:4"}],"id":2304,"name":"FunctionDefinition","src":"174:85:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":2346,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":2313,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2305,"name":"ElementaryTypeName","src":"281:7:4"}],"id":2306,"name":"VariableDeclaration","src":"281:16:4"},{"attributes":{"constant":false,"name":"_value","scope":2313,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2307,"name":"ElementaryTypeName","src":"299:7:4"}],"id":2308,"name":"VariableDeclaration","src":"299:14:4"}],"id":2309,"name":"ParameterList","src":"280:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2313,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2310,"name":"ElementaryTypeName","src":"333:4:4"}],"id":2311,"name":"VariableDeclaration","src":"333:4:4"}],"id":2312,"name":"ParameterList","src":"332:6:4"}],"id":2313,"name":"FunctionDefinition","src":"264:75:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":2346,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":2320,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2314,"name":"ElementaryTypeName","src":"363:7:4"}],"id":2315,"name":"VariableDeclaration","src":"363:12:4"}],"id":2316,"name":"ParameterList","src":"362:14:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2320,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2317,"name":"ElementaryTypeName","src":"400:7:4"}],"id":2318,"name":"VariableDeclaration","src":"400:7:4"}],"id":2319,"name":"ParameterList","src":"399:9:4"}],"id":2320,"name":"FunctionDefinition","src":"344:65:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":2346,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2321,"name":"ParameterList","src":"434:2:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2325,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2322,"name":"ElementaryTypeName","src":"460:7:4"}],"id":2323,"name":"VariableDeclaration","src":"460:7:4"}],"id":2324,"name":"ParameterList","src":"459:9:4"}],"id":2325,"name":"FunctionDefinition","src":"414:55:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":2346,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2334,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2326,"name":"ElementaryTypeName","src":"492:7:4"}],"id":2327,"name":"VariableDeclaration","src":"492:11:4"},{"attributes":{"constant":false,"name":"_value","scope":2334,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2328,"name":"ElementaryTypeName","src":"505:7:4"}],"id":2329,"name":"VariableDeclaration","src":"505:14:4"}],"id":2330,"name":"ParameterList","src":"491:29:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2334,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2331,"name":"ElementaryTypeName","src":"539:4:4"}],"id":2332,"name":"VariableDeclaration","src":"539:4:4"}],"id":2333,"name":"ParameterList","src":"538:6:4"}],"id":2334,"name":"FunctionDefinition","src":"474:71:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":2346,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":2345,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2335,"name":"ElementaryTypeName","src":"572:7:4"}],"id":2336,"name":"VariableDeclaration","src":"572:13:4"},{"attributes":{"constant":false,"name":"_to","scope":2345,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2337,"name":"ElementaryTypeName","src":"587:7:4"}],"id":2338,"name":"VariableDeclaration","src":"587:11:4"},{"attributes":{"constant":false,"name":"_value","scope":2345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2339,"name":"ElementaryTypeName","src":"600:7:4"}],"id":2340,"name":"VariableDeclaration","src":"600:14:4"}],"id":2341,"name":"ParameterList","src":"571:44:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2345,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2342,"name":"ElementaryTypeName","src":"634:4:4"}],"id":2343,"name":"VariableDeclaration","src":"634:4:4"}],"id":2344,"name":"ParameterList","src":"633:6:4"}],"id":2345,"name":"FunctionDefinition","src":"550:90:4"}],"id":2346,"name":"ContractDefinition","src":"152:490:4"}],"id":2347,"name":"SourceUnit","src":"0:643:4"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[2565]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2348,"name":"PragmaDirective","src":"1161:23:5"},{"attributes":{"SourceUnit":2347,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":2566,"symbolAliases":[null],"unitAlias":""},"id":2349,"name":"ImportDirective","src":"1186:21:5"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":2566,"symbolAliases":[null],"unitAlias":""},"id":2350,"name":"ImportDirective","src":"1208:24:5"},{"attributes":{"SourceUnit":2203,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":2566,"symbolAliases":[null],"unitAlias":""},"id":2351,"name":"ImportDirective","src":"1233:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[2565],"name":"SafeERC20","scope":2566},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":2352,"name":"UserDefinedTypeName","src":"1745:8:5"},{"attributes":{"name":"uint256","type":"uint256"},"id":2353,"name":"ElementaryTypeName","src":"1758:7:5"}],"id":2354,"name":"UsingForDirective","src":"1739:27:5"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":2202,"type":"library Address"},"id":2355,"name":"UserDefinedTypeName","src":"1777:7:5"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2356,"name":"ElementaryTypeName","src":"1789:7:5"}],"id":2357,"name":"UsingForDirective","src":"1771:26:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2379,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2358,"name":"UserDefinedTypeName","src":"1825:5:5"}],"id":2359,"name":"VariableDeclaration","src":"1825:11:5"},{"attributes":{"constant":false,"name":"to","scope":2379,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2360,"name":"ElementaryTypeName","src":"1838:7:5"}],"id":2361,"name":"VariableDeclaration","src":"1838:10:5"},{"attributes":{"constant":false,"name":"value","scope":2379,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2362,"name":"ElementaryTypeName","src":"1850:7:5"}],"id":2363,"name":"VariableDeclaration","src":"1850:13:5"}],"id":2364,"name":"ParameterList","src":"1824:40:5"},{"attributes":{"parameters":[null]},"children":[],"id":2365,"name":"ParameterList","src":"1874:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2366,"name":"Identifier","src":"1884:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2359,"type":"contract ERC20","value":"token"},"id":2367,"name":"Identifier","src":"1903:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2368,"name":"Identifier","src":"1910:3:5"}],"id":2369,"name":"MemberAccess","src":"1910:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":2334,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2359,"type":"contract ERC20","value":"token"},"id":2370,"name":"Identifier","src":"1933:5:5"}],"id":2371,"name":"MemberAccess","src":"1933:14:5"}],"id":2372,"name":"MemberAccess","src":"1933:23:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2361,"type":"address","value":"to"},"id":2373,"name":"Identifier","src":"1958:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2363,"type":"uint256","value":"value"},"id":2374,"name":"Identifier","src":"1962:5:5"}],"id":2375,"name":"FunctionCall","src":"1910:58:5"}],"id":2376,"name":"FunctionCall","src":"1884:85:5"}],"id":2377,"name":"ExpressionStatement","src":"1884:85:5"}],"id":2378,"name":"Block","src":"1874:102:5"}],"id":2379,"name":"FunctionDefinition","src":"1803:173:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2404,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2380,"name":"UserDefinedTypeName","src":"2008:5:5"}],"id":2381,"name":"VariableDeclaration","src":"2008:11:5"},{"attributes":{"constant":false,"name":"from","scope":2404,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2382,"name":"ElementaryTypeName","src":"2021:7:5"}],"id":2383,"name":"VariableDeclaration","src":"2021:12:5"},{"attributes":{"constant":false,"name":"to","scope":2404,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2384,"name":"ElementaryTypeName","src":"2035:7:5"}],"id":2385,"name":"VariableDeclaration","src":"2035:10:5"},{"attributes":{"constant":false,"name":"value","scope":2404,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2386,"name":"ElementaryTypeName","src":"2047:7:5"}],"id":2387,"name":"VariableDeclaration","src":"2047:13:5"}],"id":2388,"name":"ParameterList","src":"2007:54:5"},{"attributes":{"parameters":[null]},"children":[],"id":2389,"name":"ParameterList","src":"2071:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2390,"name":"Identifier","src":"2081:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2381,"type":"contract ERC20","value":"token"},"id":2391,"name":"Identifier","src":"2100:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2392,"name":"Identifier","src":"2107:3:5"}],"id":2393,"name":"MemberAccess","src":"2107:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":2345,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2381,"type":"contract ERC20","value":"token"},"id":2394,"name":"Identifier","src":"2130:5:5"}],"id":2395,"name":"MemberAccess","src":"2130:18:5"}],"id":2396,"name":"MemberAccess","src":"2130:27:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2383,"type":"address","value":"from"},"id":2397,"name":"Identifier","src":"2159:4:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2385,"type":"address","value":"to"},"id":2398,"name":"Identifier","src":"2165:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"uint256","value":"value"},"id":2399,"name":"Identifier","src":"2169:5:5"}],"id":2400,"name":"FunctionCall","src":"2107:68:5"}],"id":2401,"name":"FunctionCall","src":"2081:95:5"}],"id":2402,"name":"ExpressionStatement","src":"2081:95:5"}],"id":2403,"name":"Block","src":"2071:112:5"}],"id":2404,"name":"FunctionDefinition","src":"1982:201:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2445,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2405,"name":"UserDefinedTypeName","src":"2210:5:5"}],"id":2406,"name":"VariableDeclaration","src":"2210:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2445,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2407,"name":"ElementaryTypeName","src":"2223:7:5"}],"id":2408,"name":"VariableDeclaration","src":"2223:15:5"},{"attributes":{"constant":false,"name":"value","scope":2445,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2409,"name":"ElementaryTypeName","src":"2240:7:5"}],"id":2410,"name":"VariableDeclaration","src":"2240:13:5"}],"id":2411,"name":"ParameterList","src":"2209:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2412,"name":"ParameterList","src":"2264:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2413,"name":"Identifier","src":"2544:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2410,"type":"uint256","value":"value"},"id":2414,"name":"Identifier","src":"2553:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2415,"name":"Literal","src":"2562:1:5"}],"id":2416,"name":"BinaryOperation","src":"2553:10:5"}],"id":2417,"name":"TupleExpression","src":"2552:12:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2304,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"contract ERC20","value":"token"},"id":2418,"name":"Identifier","src":"2569:5:5"}],"id":2419,"name":"MemberAccess","src":"2569:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2565","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2420,"name":"ElementaryTypeNameExpression","src":"2585:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10131,"type":"library SafeERC20","value":"this"},"id":2421,"name":"Identifier","src":"2593:4:5"}],"id":2422,"name":"FunctionCall","src":"2585:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"address","value":"spender"},"id":2423,"name":"Identifier","src":"2600:7:5"}],"id":2424,"name":"FunctionCall","src":"2569:39:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2425,"name":"Literal","src":"2612:1:5"}],"id":2426,"name":"BinaryOperation","src":"2569:44:5"}],"id":2427,"name":"TupleExpression","src":"2568:46:5"}],"id":2428,"name":"BinaryOperation","src":"2552:62:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":2429,"name":"Literal","src":"2628:56:5"}],"id":2430,"name":"FunctionCall","src":"2544:150:5"}],"id":2431,"name":"ExpressionStatement","src":"2544:150:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2432,"name":"Identifier","src":"2704:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"contract ERC20","value":"token"},"id":2433,"name":"Identifier","src":"2723:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2434,"name":"Identifier","src":"2730:3:5"}],"id":2435,"name":"MemberAccess","src":"2730:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2313,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"contract ERC20","value":"token"},"id":2436,"name":"Identifier","src":"2753:5:5"}],"id":2437,"name":"MemberAccess","src":"2753:13:5"}],"id":2438,"name":"MemberAccess","src":"2753:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"address","value":"spender"},"id":2439,"name":"Identifier","src":"2777:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2410,"type":"uint256","value":"value"},"id":2440,"name":"Identifier","src":"2786:5:5"}],"id":2441,"name":"FunctionCall","src":"2730:62:5"}],"id":2442,"name":"FunctionCall","src":"2704:89:5"}],"id":2443,"name":"ExpressionStatement","src":"2704:89:5"}],"id":2444,"name":"Block","src":"2264:536:5"}],"id":2445,"name":"FunctionDefinition","src":"2189:611:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2480,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2446,"name":"UserDefinedTypeName","src":"2837:5:5"}],"id":2447,"name":"VariableDeclaration","src":"2837:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2480,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2448,"name":"ElementaryTypeName","src":"2850:7:5"}],"id":2449,"name":"VariableDeclaration","src":"2850:15:5"},{"attributes":{"constant":false,"name":"value","scope":2480,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2450,"name":"ElementaryTypeName","src":"2867:7:5"}],"id":2451,"name":"VariableDeclaration","src":"2867:13:5"}],"id":2452,"name":"ParameterList","src":"2836:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2453,"name":"ParameterList","src":"2891:0:5"},{"children":[{"attributes":{"assignments":[2455]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2454,"name":"ElementaryTypeName","src":"2901:7:5"}],"id":2455,"name":"VariableDeclaration","src":"2901:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2304,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2447,"type":"contract ERC20","value":"token"},"id":2456,"name":"Identifier","src":"2924:5:5"}],"id":2457,"name":"MemberAccess","src":"2924:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2565","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2458,"name":"ElementaryTypeNameExpression","src":"2940:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10131,"type":"library SafeERC20","value":"this"},"id":2459,"name":"Identifier","src":"2948:4:5"}],"id":2460,"name":"FunctionCall","src":"2940:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"address","value":"spender"},"id":2461,"name":"Identifier","src":"2955:7:5"}],"id":2462,"name":"FunctionCall","src":"2924:39:5"}],"id":2463,"name":"MemberAccess","src":"2924:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2451,"type":"uint256","value":"value"},"id":2464,"name":"Identifier","src":"2968:5:5"}],"id":2465,"name":"FunctionCall","src":"2924:50:5"}],"id":2466,"name":"VariableDeclarationStatement","src":"2901:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2467,"name":"Identifier","src":"2984:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2447,"type":"contract ERC20","value":"token"},"id":2468,"name":"Identifier","src":"3003:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2469,"name":"Identifier","src":"3010:3:5"}],"id":2470,"name":"MemberAccess","src":"3010:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2313,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2447,"type":"contract ERC20","value":"token"},"id":2471,"name":"Identifier","src":"3033:5:5"}],"id":2472,"name":"MemberAccess","src":"3033:13:5"}],"id":2473,"name":"MemberAccess","src":"3033:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"address","value":"spender"},"id":2474,"name":"Identifier","src":"3057:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2455,"type":"uint256","value":"newAllowance"},"id":2475,"name":"Identifier","src":"3066:12:5"}],"id":2476,"name":"FunctionCall","src":"3010:69:5"}],"id":2477,"name":"FunctionCall","src":"2984:96:5"}],"id":2478,"name":"ExpressionStatement","src":"2984:96:5"}],"id":2479,"name":"Block","src":"2891:196:5"}],"id":2480,"name":"FunctionDefinition","src":"2806:281:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2515,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2481,"name":"UserDefinedTypeName","src":"3124:5:5"}],"id":2482,"name":"VariableDeclaration","src":"3124:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2515,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2483,"name":"ElementaryTypeName","src":"3137:7:5"}],"id":2484,"name":"VariableDeclaration","src":"3137:15:5"},{"attributes":{"constant":false,"name":"value","scope":2515,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2485,"name":"ElementaryTypeName","src":"3154:7:5"}],"id":2486,"name":"VariableDeclaration","src":"3154:13:5"}],"id":2487,"name":"ParameterList","src":"3123:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2488,"name":"ParameterList","src":"3178:0:5"},{"children":[{"attributes":{"assignments":[2490]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2514,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2489,"name":"ElementaryTypeName","src":"3188:7:5"}],"id":2490,"name":"VariableDeclaration","src":"3188:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2304,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"contract ERC20","value":"token"},"id":2491,"name":"Identifier","src":"3211:5:5"}],"id":2492,"name":"MemberAccess","src":"3211:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2565","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2493,"name":"ElementaryTypeNameExpression","src":"3227:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10131,"type":"library SafeERC20","value":"this"},"id":2494,"name":"Identifier","src":"3235:4:5"}],"id":2495,"name":"FunctionCall","src":"3227:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2484,"type":"address","value":"spender"},"id":2496,"name":"Identifier","src":"3242:7:5"}],"id":2497,"name":"FunctionCall","src":"3211:39:5"}],"id":2498,"name":"MemberAccess","src":"3211:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2486,"type":"uint256","value":"value"},"id":2499,"name":"Identifier","src":"3255:5:5"}],"id":2500,"name":"FunctionCall","src":"3211:50:5"}],"id":2501,"name":"VariableDeclarationStatement","src":"3188:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2502,"name":"Identifier","src":"3271:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"contract ERC20","value":"token"},"id":2503,"name":"Identifier","src":"3290:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2504,"name":"Identifier","src":"3297:3:5"}],"id":2505,"name":"MemberAccess","src":"3297:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2313,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"contract ERC20","value":"token"},"id":2506,"name":"Identifier","src":"3320:5:5"}],"id":2507,"name":"MemberAccess","src":"3320:13:5"}],"id":2508,"name":"MemberAccess","src":"3320:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2484,"type":"address","value":"spender"},"id":2509,"name":"Identifier","src":"3344:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"uint256","value":"newAllowance"},"id":2510,"name":"Identifier","src":"3353:12:5"}],"id":2511,"name":"FunctionCall","src":"3297:69:5"}],"id":2512,"name":"FunctionCall","src":"3271:96:5"}],"id":2513,"name":"ExpressionStatement","src":"3271:96:5"}],"id":2514,"name":"Block","src":"3178:196:5"}],"id":2515,"name":"FunctionDefinition","src":"3093:281:5"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2564,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2516,"name":"UserDefinedTypeName","src":"3785:5:5"}],"id":2517,"name":"VariableDeclaration","src":"3785:11:5"},{"attributes":{"constant":false,"name":"data","scope":2564,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2518,"name":"ElementaryTypeName","src":"3798:5:5"}],"id":2519,"name":"VariableDeclaration","src":"3798:17:5"}],"id":2520,"name":"ParameterList","src":"3784:32:5"},{"attributes":{"parameters":[null]},"children":[],"id":2521,"name":"ParameterList","src":"3826:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2522,"name":"Identifier","src":"4344:7:5"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":2201,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2523,"name":"ElementaryTypeNameExpression","src":"4352:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2517,"type":"contract ERC20","value":"token"},"id":2524,"name":"Identifier","src":"4360:5:5"}],"id":2525,"name":"FunctionCall","src":"4352:14:5"}],"id":2526,"name":"MemberAccess","src":"4352:25:5"}],"id":2527,"name":"FunctionCall","src":"4352:27:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":2528,"name":"Literal","src":"4381:33:5"}],"id":2529,"name":"FunctionCall","src":"4344:71:5"}],"id":2530,"name":"ExpressionStatement","src":"4344:71:5"},{"attributes":{"assignments":[2532,2534]},"children":[{"attributes":{"constant":false,"name":"success","scope":2563,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2531,"name":"ElementaryTypeName","src":"4486:4:5"}],"id":2532,"name":"VariableDeclaration","src":"4486:12:5"},{"attributes":{"constant":false,"name":"returndata","scope":2563,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2533,"name":"ElementaryTypeName","src":"4500:5:5"}],"id":2534,"name":"VariableDeclaration","src":"4500:23:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2535,"name":"ElementaryTypeNameExpression","src":"4527:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2517,"type":"contract ERC20","value":"token"},"id":2536,"name":"Identifier","src":"4535:5:5"}],"id":2537,"name":"FunctionCall","src":"4527:14:5"}],"id":2538,"name":"MemberAccess","src":"4527:19:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"bytes memory","value":"data"},"id":2539,"name":"Identifier","src":"4547:4:5"}],"id":2540,"name":"FunctionCall","src":"4527:25:5"}],"id":2541,"name":"VariableDeclarationStatement","src":"4485:67:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2542,"name":"Identifier","src":"4562:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2532,"type":"bool","value":"success"},"id":2543,"name":"Identifier","src":"4570:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":2544,"name":"Literal","src":"4579:34:5"}],"id":2545,"name":"FunctionCall","src":"4562:52:5"}],"id":2546,"name":"ExpressionStatement","src":"4562:52:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2534,"type":"bytes memory","value":"returndata"},"id":2547,"name":"Identifier","src":"4629:10:5"}],"id":2548,"name":"MemberAccess","src":"4629:17:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2549,"name":"Literal","src":"4649:1:5"}],"id":2550,"name":"BinaryOperation","src":"4629:21:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2551,"name":"Identifier","src":"4750:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2552,"name":"Identifier","src":"4758:3:5"}],"id":2553,"name":"MemberAccess","src":"4758:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2534,"type":"bytes memory","value":"returndata"},"id":2554,"name":"Identifier","src":"4769:10:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":2555,"name":"ElementaryTypeNameExpression","src":"4782:4:5"}],"id":2556,"name":"TupleExpression","src":"4781:6:5"}],"id":2557,"name":"FunctionCall","src":"4758:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":2558,"name":"Literal","src":"4790:44:5"}],"id":2559,"name":"FunctionCall","src":"4750:85:5"}],"id":2560,"name":"ExpressionStatement","src":"4750:85:5"}],"id":2561,"name":"Block","src":"4652:194:5"}],"id":2562,"name":"IfStatement","src":"4625:221:5"}],"id":2563,"name":"Block","src":"3826:1026:5"}],"id":2564,"name":"FunctionDefinition","src":"3757:1095:5"}],"id":2565,"name":"ContractDefinition","src":"1715:3139:5"}],"id":2566,"name":"SourceUnit","src":"1161:3694:5"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[2698]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2567,"name":"PragmaDirective","src":"0:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[2698],"name":"SafeMath","scope":2699},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2568,"name":"ElementaryTypeName","src":"847:7:6"}],"id":2569,"name":"VariableDeclaration","src":"847:9:6"},{"attributes":{"constant":false,"name":"b","scope":2592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2570,"name":"ElementaryTypeName","src":"858:7:6"}],"id":2571,"name":"VariableDeclaration","src":"858:9:6"}],"id":2572,"name":"ParameterList","src":"846:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2573,"name":"ElementaryTypeName","src":"892:7:6"}],"id":2574,"name":"VariableDeclaration","src":"892:7:6"}],"id":2575,"name":"ParameterList","src":"891:9:6"},{"children":[{"attributes":{"assignments":[2577]},"children":[{"attributes":{"constant":false,"name":"c","scope":2591,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2576,"name":"ElementaryTypeName","src":"911:7:6"}],"id":2577,"name":"VariableDeclaration","src":"911:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"uint256","value":"a"},"id":2578,"name":"Identifier","src":"923:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2571,"type":"uint256","value":"b"},"id":2579,"name":"Identifier","src":"927:1:6"}],"id":2580,"name":"BinaryOperation","src":"923:5:6"}],"id":2581,"name":"VariableDeclarationStatement","src":"911:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2582,"name":"Identifier","src":"938:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2577,"type":"uint256","value":"c"},"id":2583,"name":"Identifier","src":"946:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"uint256","value":"a"},"id":2584,"name":"Identifier","src":"951:1:6"}],"id":2585,"name":"BinaryOperation","src":"946:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":2586,"name":"Literal","src":"954:29:6"}],"id":2587,"name":"FunctionCall","src":"938:46:6"}],"id":2588,"name":"ExpressionStatement","src":"938:46:6"},{"attributes":{"functionReturnParameters":2575},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2577,"type":"uint256","value":"c"},"id":2589,"name":"Identifier","src":"1002:1:6"}],"id":2590,"name":"Return","src":"995:8:6"}],"id":2591,"name":"Block","src":"901:109:6"}],"id":2592,"name":"FunctionDefinition","src":"834:176:6"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2593,"name":"ElementaryTypeName","src":"1287:7:6"}],"id":2594,"name":"VariableDeclaration","src":"1287:9:6"},{"attributes":{"constant":false,"name":"b","scope":2617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2595,"name":"ElementaryTypeName","src":"1298:7:6"}],"id":2596,"name":"VariableDeclaration","src":"1298:9:6"}],"id":2597,"name":"ParameterList","src":"1286:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2598,"name":"ElementaryTypeName","src":"1332:7:6"}],"id":2599,"name":"VariableDeclaration","src":"1332:7:6"}],"id":2600,"name":"ParameterList","src":"1331:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2601,"name":"Identifier","src":"1351:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2596,"type":"uint256","value":"b"},"id":2602,"name":"Identifier","src":"1359:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2594,"type":"uint256","value":"a"},"id":2603,"name":"Identifier","src":"1364:1:6"}],"id":2604,"name":"BinaryOperation","src":"1359:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":2605,"name":"Literal","src":"1367:32:6"}],"id":2606,"name":"FunctionCall","src":"1351:49:6"}],"id":2607,"name":"ExpressionStatement","src":"1351:49:6"},{"attributes":{"assignments":[2609]},"children":[{"attributes":{"constant":false,"name":"c","scope":2616,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2608,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":2609,"name":"VariableDeclaration","src":"1410:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2594,"type":"uint256","value":"a"},"id":2610,"name":"Identifier","src":"1422:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2596,"type":"uint256","value":"b"},"id":2611,"name":"Identifier","src":"1426:1:6"}],"id":2612,"name":"BinaryOperation","src":"1422:5:6"}],"id":2613,"name":"VariableDeclarationStatement","src":"1410:17:6"},{"attributes":{"functionReturnParameters":2600},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2609,"type":"uint256","value":"c"},"id":2614,"name":"Identifier","src":"1445:1:6"}],"id":2615,"name":"Return","src":"1438:8:6"}],"id":2616,"name":"Block","src":"1341:112:6"}],"id":2617,"name":"FunctionDefinition","src":"1274:179:6"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2618,"name":"ElementaryTypeName","src":"1706:7:6"}],"id":2619,"name":"VariableDeclaration","src":"1706:9:6"},{"attributes":{"constant":false,"name":"b","scope":2651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2620,"name":"ElementaryTypeName","src":"1717:7:6"}],"id":2621,"name":"VariableDeclaration","src":"1717:9:6"}],"id":2622,"name":"ParameterList","src":"1705:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2623,"name":"ElementaryTypeName","src":"1751:7:6"}],"id":2624,"name":"VariableDeclaration","src":"1751:7:6"}],"id":2625,"name":"ParameterList","src":"1750:9:6"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2619,"type":"uint256","value":"a"},"id":2626,"name":"Identifier","src":"1991:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2627,"name":"Literal","src":"1996:1:6"}],"id":2628,"name":"BinaryOperation","src":"1991:6:6"},{"children":[{"attributes":{"functionReturnParameters":2625},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2629,"name":"Literal","src":"2020:1:6"}],"id":2630,"name":"Return","src":"2013:8:6"}],"id":2631,"name":"Block","src":"1999:33:6"}],"id":2632,"name":"IfStatement","src":"1987:45:6"},{"attributes":{"assignments":[2634]},"children":[{"attributes":{"constant":false,"name":"c","scope":2650,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2633,"name":"ElementaryTypeName","src":"2042:7:6"}],"id":2634,"name":"VariableDeclaration","src":"2042:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2619,"type":"uint256","value":"a"},"id":2635,"name":"Identifier","src":"2054:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2621,"type":"uint256","value":"b"},"id":2636,"name":"Identifier","src":"2058:1:6"}],"id":2637,"name":"BinaryOperation","src":"2054:5:6"}],"id":2638,"name":"VariableDeclarationStatement","src":"2042:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2639,"name":"Identifier","src":"2069:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"uint256","value":"c"},"id":2640,"name":"Identifier","src":"2077:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2619,"type":"uint256","value":"a"},"id":2641,"name":"Identifier","src":"2081:1:6"}],"id":2642,"name":"BinaryOperation","src":"2077:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2621,"type":"uint256","value":"b"},"id":2643,"name":"Identifier","src":"2086:1:6"}],"id":2644,"name":"BinaryOperation","src":"2077:10:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":2645,"name":"Literal","src":"2089:35:6"}],"id":2646,"name":"FunctionCall","src":"2069:56:6"}],"id":2647,"name":"ExpressionStatement","src":"2069:56:6"},{"attributes":{"functionReturnParameters":2625},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"uint256","value":"c"},"id":2648,"name":"Identifier","src":"2143:1:6"}],"id":2649,"name":"Return","src":"2136:8:6"}],"id":2650,"name":"Block","src":"1760:391:6"}],"id":2651,"name":"FunctionDefinition","src":"1693:458:6"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2652,"name":"ElementaryTypeName","src":"2619:7:6"}],"id":2653,"name":"VariableDeclaration","src":"2619:9:6"},{"attributes":{"constant":false,"name":"b","scope":2676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2654,"name":"ElementaryTypeName","src":"2630:7:6"}],"id":2655,"name":"VariableDeclaration","src":"2630:9:6"}],"id":2656,"name":"ParameterList","src":"2618:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2657,"name":"ElementaryTypeName","src":"2664:7:6"}],"id":2658,"name":"VariableDeclaration","src":"2664:7:6"}],"id":2659,"name":"ParameterList","src":"2663:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2660,"name":"Identifier","src":"2749:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2655,"type":"uint256","value":"b"},"id":2661,"name":"Identifier","src":"2757:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2662,"name":"Literal","src":"2761:1:6"}],"id":2663,"name":"BinaryOperation","src":"2757:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":2664,"name":"Literal","src":"2764:28:6"}],"id":2665,"name":"FunctionCall","src":"2749:44:6"}],"id":2666,"name":"ExpressionStatement","src":"2749:44:6"},{"attributes":{"assignments":[2668]},"children":[{"attributes":{"constant":false,"name":"c","scope":2675,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2667,"name":"ElementaryTypeName","src":"2803:7:6"}],"id":2668,"name":"VariableDeclaration","src":"2803:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2653,"type":"uint256","value":"a"},"id":2669,"name":"Identifier","src":"2815:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2655,"type":"uint256","value":"b"},"id":2670,"name":"Identifier","src":"2819:1:6"}],"id":2671,"name":"BinaryOperation","src":"2815:5:6"}],"id":2672,"name":"VariableDeclarationStatement","src":"2803:17:6"},{"attributes":{"functionReturnParameters":2659},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2668,"type":"uint256","value":"c"},"id":2673,"name":"Identifier","src":"2924:1:6"}],"id":2674,"name":"Return","src":"2917:8:6"}],"id":2675,"name":"Block","src":"2673:259:6"}],"id":2676,"name":"FunctionDefinition","src":"2606:326:6"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2697,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2677,"name":"ElementaryTypeName","src":"3389:7:6"}],"id":2678,"name":"VariableDeclaration","src":"3389:9:6"},{"attributes":{"constant":false,"name":"b","scope":2697,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2679,"name":"ElementaryTypeName","src":"3400:7:6"}],"id":2680,"name":"VariableDeclaration","src":"3400:9:6"}],"id":2681,"name":"ParameterList","src":"3388:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2697,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2682,"name":"ElementaryTypeName","src":"3434:7:6"}],"id":2683,"name":"VariableDeclaration","src":"3434:7:6"}],"id":2684,"name":"ParameterList","src":"3433:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2685,"name":"Identifier","src":"3453:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2680,"type":"uint256","value":"b"},"id":2686,"name":"Identifier","src":"3461:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2687,"name":"Literal","src":"3466:1:6"}],"id":2688,"name":"BinaryOperation","src":"3461:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":2689,"name":"Literal","src":"3469:26:6"}],"id":2690,"name":"FunctionCall","src":"3453:43:6"}],"id":2691,"name":"ExpressionStatement","src":"3453:43:6"},{"attributes":{"functionReturnParameters":2684},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"uint256","value":"a"},"id":2692,"name":"Identifier","src":"3513:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2680,"type":"uint256","value":"b"},"id":2693,"name":"Identifier","src":"3517:1:6"}],"id":2694,"name":"BinaryOperation","src":"3513:5:6"}],"id":2695,"name":"Return","src":"3506:12:6"}],"id":2696,"name":"Block","src":"3443:82:6"}],"id":2697,"name":"FunctionDefinition","src":"3376:149:6"}],"id":2698,"name":"ContractDefinition","src":"589:2938:6"}],"id":2699,"name":"SourceUnit","src":"0:3528:6"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[4420]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4285,"name":"PragmaDirective","src":"1400:23:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4420],"name":"ENS","scope":4421},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4293,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4286,"name":"ElementaryTypeName","src":"1534:7:7"}],"id":4287,"name":"VariableDeclaration","src":"1534:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":4293,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4288,"name":"ElementaryTypeName","src":"1557:7:7"}],"id":4289,"name":"VariableDeclaration","src":"1557:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4293,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4290,"name":"ElementaryTypeName","src":"1581:7:7"}],"id":4291,"name":"VariableDeclaration","src":"1581:14:7"}],"id":4292,"name":"ParameterList","src":"1533:63:7"}],"id":4293,"name":"EventDefinition","src":"1519:78:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4299,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4294,"name":"ElementaryTypeName","src":"1695:7:7"}],"id":4295,"name":"VariableDeclaration","src":"1695:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4299,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4296,"name":"ElementaryTypeName","src":"1718:7:7"}],"id":4297,"name":"VariableDeclaration","src":"1718:14:7"}],"id":4298,"name":"ParameterList","src":"1694:39:7"}],"id":4299,"name":"EventDefinition","src":"1680:54:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4305,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4300,"name":"ElementaryTypeName","src":"1810:7:7"}],"id":4301,"name":"VariableDeclaration","src":"1810:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":4305,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4302,"name":"ElementaryTypeName","src":"1833:7:7"}],"id":4303,"name":"VariableDeclaration","src":"1833:17:7"}],"id":4304,"name":"ParameterList","src":"1809:42:7"}],"id":4305,"name":"EventDefinition","src":"1792:60:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4311,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4306,"name":"ElementaryTypeName","src":"1916:7:7"}],"id":4307,"name":"VariableDeclaration","src":"1916:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":4311,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4308,"name":"ElementaryTypeName","src":"1939:6:7"}],"id":4309,"name":"VariableDeclaration","src":"1939:11:7"}],"id":4310,"name":"ParameterList","src":"1915:36:7"}],"id":4311,"name":"EventDefinition","src":"1903:49:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":4319,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4312,"name":"ElementaryTypeName","src":"2031:7:7"}],"id":4313,"name":"VariableDeclaration","src":"2031:22:7"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":4319,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4314,"name":"ElementaryTypeName","src":"2055:7:7"}],"id":4315,"name":"VariableDeclaration","src":"2055:25:7"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":4319,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4316,"name":"ElementaryTypeName","src":"2082:4:7"}],"id":4317,"name":"VariableDeclaration","src":"2082:14:7"}],"id":4318,"name":"ParameterList","src":"2030:67:7"}],"id":4319,"name":"EventDefinition","src":"2010:88:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4330,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4320,"name":"ElementaryTypeName","src":"2123:7:7"}],"id":4321,"name":"VariableDeclaration","src":"2123:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4330,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4322,"name":"ElementaryTypeName","src":"2138:7:7"}],"id":4323,"name":"VariableDeclaration","src":"2138:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4330,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4324,"name":"ElementaryTypeName","src":"2154:7:7"}],"id":4325,"name":"VariableDeclaration","src":"2154:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4330,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4326,"name":"ElementaryTypeName","src":"2173:6:7"}],"id":4327,"name":"VariableDeclaration","src":"2173:11:7"}],"id":4328,"name":"ParameterList","src":"2122:63:7"},{"attributes":{"parameters":[null]},"children":[],"id":4329,"name":"ParameterList","src":"2194:0:7"}],"id":4330,"name":"FunctionDefinition","src":"2104:91:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4331,"name":"ElementaryTypeName","src":"2226:7:7"}],"id":4332,"name":"VariableDeclaration","src":"2226:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4333,"name":"ElementaryTypeName","src":"2241:7:7"}],"id":4334,"name":"VariableDeclaration","src":"2241:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4335,"name":"ElementaryTypeName","src":"2257:7:7"}],"id":4336,"name":"VariableDeclaration","src":"2257:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4337,"name":"ElementaryTypeName","src":"2273:7:7"}],"id":4338,"name":"VariableDeclaration","src":"2273:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4343,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4339,"name":"ElementaryTypeName","src":"2292:6:7"}],"id":4340,"name":"VariableDeclaration","src":"2292:11:7"}],"id":4341,"name":"ParameterList","src":"2225:79:7"},{"attributes":{"parameters":[null]},"children":[],"id":4342,"name":"ParameterList","src":"2313:0:7"}],"id":4343,"name":"FunctionDefinition","src":"2200:114:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4354,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4344,"name":"ElementaryTypeName","src":"2344:7:7"}],"id":4345,"name":"VariableDeclaration","src":"2344:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4354,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4346,"name":"ElementaryTypeName","src":"2359:7:7"}],"id":4347,"name":"VariableDeclaration","src":"2359:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4354,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4348,"name":"ElementaryTypeName","src":"2375:7:7"}],"id":4349,"name":"VariableDeclaration","src":"2375:14:7"}],"id":4350,"name":"ParameterList","src":"2343:47:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4354,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4351,"name":"ElementaryTypeName","src":"2408:7:7"}],"id":4352,"name":"VariableDeclaration","src":"2408:7:7"}],"id":4353,"name":"ParameterList","src":"2407:9:7"}],"id":4354,"name":"FunctionDefinition","src":"2319:98:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4361,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4355,"name":"ElementaryTypeName","src":"2443:7:7"}],"id":4356,"name":"VariableDeclaration","src":"2443:13:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4361,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4357,"name":"ElementaryTypeName","src":"2458:7:7"}],"id":4358,"name":"VariableDeclaration","src":"2458:17:7"}],"id":4359,"name":"ParameterList","src":"2442:34:7"},{"attributes":{"parameters":[null]},"children":[],"id":4360,"name":"ParameterList","src":"2485:0:7"}],"id":4361,"name":"FunctionDefinition","src":"2422:64:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4368,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4362,"name":"ElementaryTypeName","src":"2509:7:7"}],"id":4363,"name":"VariableDeclaration","src":"2509:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4364,"name":"ElementaryTypeName","src":"2524:7:7"}],"id":4365,"name":"VariableDeclaration","src":"2524:14:7"}],"id":4366,"name":"ParameterList","src":"2508:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":4367,"name":"ParameterList","src":"2548:0:7"}],"id":4368,"name":"FunctionDefinition","src":"2491:58:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4375,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4369,"name":"ElementaryTypeName","src":"2570:7:7"}],"id":4370,"name":"VariableDeclaration","src":"2570:13:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4375,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4371,"name":"ElementaryTypeName","src":"2585:6:7"}],"id":4372,"name":"VariableDeclaration","src":"2585:11:7"}],"id":4373,"name":"ParameterList","src":"2569:28:7"},{"attributes":{"parameters":[null]},"children":[],"id":4374,"name":"ParameterList","src":"2606:0:7"}],"id":4375,"name":"FunctionDefinition","src":"2554:53:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":4382,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4376,"name":"ElementaryTypeName","src":"2639:7:7"}],"id":4377,"name":"VariableDeclaration","src":"2639:17:7"},{"attributes":{"constant":false,"name":"_approved","scope":4382,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4378,"name":"ElementaryTypeName","src":"2658:4:7"}],"id":4379,"name":"VariableDeclaration","src":"2658:14:7"}],"id":4380,"name":"ParameterList","src":"2638:35:7"},{"attributes":{"parameters":[null]},"children":[],"id":4381,"name":"ParameterList","src":"2682:0:7"}],"id":4382,"name":"FunctionDefinition","src":"2612:71:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4389,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4383,"name":"ElementaryTypeName","src":"2703:7:7"}],"id":4384,"name":"VariableDeclaration","src":"2703:13:7"}],"id":4385,"name":"ParameterList","src":"2702:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4389,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4386,"name":"ElementaryTypeName","src":"2741:7:7"}],"id":4387,"name":"VariableDeclaration","src":"2741:7:7"}],"id":4388,"name":"ParameterList","src":"2740:9:7"}],"id":4389,"name":"FunctionDefinition","src":"2688:62:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4396,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4390,"name":"ElementaryTypeName","src":"2773:7:7"}],"id":4391,"name":"VariableDeclaration","src":"2773:13:7"}],"id":4392,"name":"ParameterList","src":"2772:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4396,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4393,"name":"ElementaryTypeName","src":"2811:7:7"}],"id":4394,"name":"VariableDeclaration","src":"2811:7:7"}],"id":4395,"name":"ParameterList","src":"2810:9:7"}],"id":4396,"name":"FunctionDefinition","src":"2755:65:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4403,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4397,"name":"ElementaryTypeName","src":"2838:7:7"}],"id":4398,"name":"VariableDeclaration","src":"2838:13:7"}],"id":4399,"name":"ParameterList","src":"2837:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4403,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4400,"name":"ElementaryTypeName","src":"2876:6:7"}],"id":4401,"name":"VariableDeclaration","src":"2876:6:7"}],"id":4402,"name":"ParameterList","src":"2875:8:7"}],"id":4403,"name":"FunctionDefinition","src":"2825:59:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4410,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4404,"name":"ElementaryTypeName","src":"2911:7:7"}],"id":4405,"name":"VariableDeclaration","src":"2911:13:7"}],"id":4406,"name":"ParameterList","src":"2910:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4410,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4407,"name":"ElementaryTypeName","src":"2949:4:7"}],"id":4408,"name":"VariableDeclaration","src":"2949:4:7"}],"id":4409,"name":"ParameterList","src":"2948:6:7"}],"id":4410,"name":"FunctionDefinition","src":"2889:66:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":4419,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4411,"name":"ElementaryTypeName","src":"2986:7:7"}],"id":4412,"name":"VariableDeclaration","src":"2986:14:7"},{"attributes":{"constant":false,"name":"_operator","scope":4419,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4413,"name":"ElementaryTypeName","src":"3002:7:7"}],"id":4414,"name":"VariableDeclaration","src":"3002:17:7"}],"id":4415,"name":"ParameterList","src":"2985:35:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4419,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4416,"name":"ElementaryTypeName","src":"3044:4:7"}],"id":4417,"name":"VariableDeclaration","src":"3044:4:7"}],"id":4418,"name":"ParameterList","src":"3043:6:7"}],"id":4419,"name":"FunctionDefinition","src":"2960:90:7"}],"id":4420,"name":"ContractDefinition","src":"1425:1627:7"}],"id":4421,"name":"SourceUnit","src":"1400:1653:7"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[10094]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9375,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[10094],"name":"ENSBytesUtils","scope":10095},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9397,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9376,"name":"ElementaryTypeName","src":"325:5:8"}],"id":9377,"name":"VariableDeclaration","src":"325:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9378,"name":"ElementaryTypeName","src":"344:4:8"}],"id":9379,"name":"VariableDeclaration","src":"344:11:8"},{"attributes":{"constant":false,"name":"len","scope":9397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9380,"name":"ElementaryTypeName","src":"357:4:8"}],"id":9381,"name":"VariableDeclaration","src":"357:8:8"}],"id":9382,"name":"ParameterList","src":"324:42:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9397,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9383,"name":"ElementaryTypeName","src":"390:7:8"}],"id":9384,"name":"VariableDeclaration","src":"390:11:8"}],"id":9385,"name":"ParameterList","src":"389:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9386,"name":"Identifier","src":"413:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9379,"type":"uint256","value":"offset"},"id":9387,"name":"Identifier","src":"421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9381,"type":"uint256","value":"len"},"id":9388,"name":"Identifier","src":"430:3:8"}],"id":9389,"name":"BinaryOperation","src":"421:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9377,"type":"bytes memory","value":"self"},"id":9390,"name":"Identifier","src":"437:4:8"}],"id":9391,"name":"MemberAccess","src":"437:11:8"}],"id":9392,"name":"BinaryOperation","src":"421:27:8"}],"id":9393,"name":"FunctionCall","src":"413:36:8"}],"id":9394,"name":"ExpressionStatement","src":"413:36:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9384,"isOffset":false,"isSlot":false,"src":"482:3:8","valueSize":1}},{"self":{"declaration":9377,"isOffset":false,"isSlot":false,"src":"507:4:8","valueSize":1}},{"offset":{"declaration":9379,"isOffset":false,"isSlot":false,"src":"518:6:8","valueSize":1}},{"len":{"declaration":9381,"isOffset":false,"isSlot":false,"src":"527:3:8","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":9395,"name":"InlineAssembly","src":"459:82:8"}],"id":9396,"name":"Block","src":"403:144:8"}],"id":9397,"name":"FunctionDefinition","src":"309:238:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9418,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9398,"name":"ElementaryTypeName","src":"920:5:8"}],"id":9399,"name":"VariableDeclaration","src":"920:17:8"},{"attributes":{"constant":false,"name":"other","scope":9418,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9400,"name":"ElementaryTypeName","src":"939:5:8"}],"id":9401,"name":"VariableDeclaration","src":"939:18:8"}],"id":9402,"name":"ParameterList","src":"919:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9418,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9403,"name":"ElementaryTypeName","src":"982:3:8"}],"id":9404,"name":"VariableDeclaration","src":"982:3:8"}],"id":9405,"name":"ParameterList","src":"981:5:8"},{"children":[{"attributes":{"functionReturnParameters":9405},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9418,9550],"referencedDeclaration":9550,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":9406,"name":"Identifier","src":"1004:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9399,"type":"bytes memory","value":"self"},"id":9407,"name":"Identifier","src":"1012:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9408,"name":"Literal","src":"1018:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9399,"type":"bytes memory","value":"self"},"id":9409,"name":"Identifier","src":"1021:4:8"}],"id":9410,"name":"MemberAccess","src":"1021:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9401,"type":"bytes memory","value":"other"},"id":9411,"name":"Identifier","src":"1034:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9412,"name":"Literal","src":"1041:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9401,"type":"bytes memory","value":"other"},"id":9413,"name":"Identifier","src":"1044:5:8"}],"id":9414,"name":"MemberAccess","src":"1044:12:8"}],"id":9415,"name":"FunctionCall","src":"1004:53:8"}],"id":9416,"name":"Return","src":"997:60:8"}],"id":9417,"name":"Block","src":"987:77:8"}],"id":9418,"name":"FunctionDefinition","src":"903:161:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9550,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9419,"name":"ElementaryTypeName","src":"1694:5:8"}],"id":9420,"name":"VariableDeclaration","src":"1694:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9421,"name":"ElementaryTypeName","src":"1713:4:8"}],"id":9422,"name":"VariableDeclaration","src":"1713:11:8"},{"attributes":{"constant":false,"name":"len","scope":9550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9423,"name":"ElementaryTypeName","src":"1726:4:8"}],"id":9424,"name":"VariableDeclaration","src":"1726:8:8"},{"attributes":{"constant":false,"name":"other","scope":9550,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9425,"name":"ElementaryTypeName","src":"1736:5:8"}],"id":9426,"name":"VariableDeclaration","src":"1736:18:8"},{"attributes":{"constant":false,"name":"otheroffset","scope":9550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9427,"name":"ElementaryTypeName","src":"1756:4:8"}],"id":9428,"name":"VariableDeclaration","src":"1756:16:8"},{"attributes":{"constant":false,"name":"otherlen","scope":9550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9429,"name":"ElementaryTypeName","src":"1774:4:8"}],"id":9430,"name":"VariableDeclaration","src":"1774:13:8"}],"id":9431,"name":"ParameterList","src":"1693:95:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9550,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9432,"name":"ElementaryTypeName","src":"1812:3:8"}],"id":9433,"name":"VariableDeclaration","src":"1812:3:8"}],"id":9434,"name":"ParameterList","src":"1811:5:8"},{"children":[{"attributes":{"assignments":[9436]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":9549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9435,"name":"ElementaryTypeName","src":"1827:4:8"}],"id":9436,"name":"VariableDeclaration","src":"1827:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9424,"type":"uint256","value":"len"},"id":9437,"name":"Identifier","src":"1843:3:8"}],"id":9438,"name":"VariableDeclarationStatement","src":"1827:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9430,"type":"uint256","value":"otherlen"},"id":9439,"name":"Identifier","src":"1860:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9424,"type":"uint256","value":"len"},"id":9440,"name":"Identifier","src":"1871:3:8"}],"id":9441,"name":"BinaryOperation","src":"1860:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9436,"type":"uint256","value":"shortest"},"id":9442,"name":"Identifier","src":"1884:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9430,"type":"uint256","value":"otherlen"},"id":9443,"name":"Identifier","src":"1895:8:8"}],"id":9444,"name":"Assignment","src":"1884:19:8"}],"id":9445,"name":"ExpressionStatement","src":"1884:19:8"}],"id":9446,"name":"IfStatement","src":"1856:47:8"},{"attributes":{"assignments":[9448],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":9549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9447,"name":"ElementaryTypeName","src":"1914:4:8"}],"id":9448,"name":"VariableDeclaration","src":"1914:12:8"}],"id":9449,"name":"VariableDeclarationStatement","src":"1914:12:8"},{"attributes":{"assignments":[9451],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":9549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9450,"name":"ElementaryTypeName","src":"1936:4:8"}],"id":9451,"name":"VariableDeclaration","src":"1936:13:8"}],"id":9452,"name":"VariableDeclarationStatement","src":"1936:13:8"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":9448,"isOffset":false,"isSlot":false,"src":"1983:7:8","valueSize":1}},{"otherptr":{"declaration":9451,"isOffset":false,"isSlot":false,"src":"2033:8:8","valueSize":1}},{"offset":{"declaration":9422,"isOffset":false,"isSlot":false,"src":"2008:6:8","valueSize":1}},{"self":{"declaration":9420,"isOffset":false,"isSlot":false,"src":"1998:4:8","valueSize":1}},{"otheroffset":{"declaration":9428,"isOffset":false,"isSlot":false,"src":"2060:11:8","valueSize":1}},{"other":{"declaration":9426,"isOffset":false,"isSlot":false,"src":"2049:5:8","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":9453,"name":"InlineAssembly","src":"1960:127:8"},{"children":[{"attributes":{"assignments":[9455]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9454,"name":"ElementaryTypeName","src":"2101:4:8"}],"id":9455,"name":"VariableDeclaration","src":"2101:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9456,"name":"Literal","src":"2112:1:8"}],"id":9457,"name":"VariableDeclarationStatement","src":"2101:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9455,"type":"uint256","value":"idx"},"id":9458,"name":"Identifier","src":"2115:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9436,"type":"uint256","value":"shortest"},"id":9459,"name":"Identifier","src":"2121:8:8"}],"id":9460,"name":"BinaryOperation","src":"2115:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9455,"type":"uint256","value":"idx"},"id":9461,"name":"Identifier","src":"2131:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9462,"name":"Literal","src":"2138:2:8"}],"id":9463,"name":"Assignment","src":"2131:9:8"}],"id":9464,"name":"ExpressionStatement","src":"2131:9:8"},{"children":[{"attributes":{"assignments":[9466],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":9539,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9465,"name":"ElementaryTypeName","src":"2156:4:8"}],"id":9466,"name":"VariableDeclaration","src":"2156:6:8"}],"id":9467,"name":"VariableDeclarationStatement","src":"2156:6:8"},{"attributes":{"assignments":[9469],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":9539,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9468,"name":"ElementaryTypeName","src":"2176:4:8"}],"id":9469,"name":"VariableDeclaration","src":"2176:6:8"}],"id":9470,"name":"VariableDeclarationStatement","src":"2176:6:8"},{"attributes":{"externalReferences":[{"a":{"declaration":9466,"isOffset":false,"isSlot":false,"src":"2223:1:8","valueSize":1}},{"selfptr":{"declaration":9448,"isOffset":false,"isSlot":false,"src":"2234:7:8","valueSize":1}},{"b":{"declaration":9469,"isOffset":false,"isSlot":false,"src":"2259:1:8","valueSize":1}},{"otherptr":{"declaration":9451,"isOffset":false,"isSlot":false,"src":"2270:8:8","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":9471,"name":"InlineAssembly","src":"2196:97:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9466,"type":"uint256","value":"a"},"id":9472,"name":"Identifier","src":"2310:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9469,"type":"uint256","value":"b"},"id":9473,"name":"Identifier","src":"2315:1:8"}],"id":9474,"name":"BinaryOperation","src":"2310:6:8"},{"children":[{"attributes":{"assignments":[9476],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":9529,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9475,"name":"ElementaryTypeName","src":"2397:4:8"}],"id":9476,"name":"VariableDeclaration","src":"2397:9:8"}],"id":9477,"name":"VariableDeclarationStatement","src":"2397:9:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9436,"type":"uint256","value":"shortest"},"id":9478,"name":"Identifier","src":"2428:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9479,"name":"Literal","src":"2439:2:8"}],"id":9480,"name":"BinaryOperation","src":"2428:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9476,"type":"uint256","value":"mask"},"id":9481,"name":"Identifier","src":"2465:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":9482,"name":"ElementaryTypeNameExpression","src":"2472:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9483,"name":"Literal","src":"2482:1:8"}],"id":9484,"name":"UnaryOperation","src":"2480:3:8"}],"id":9485,"name":"FunctionCall","src":"2472:12:8"}],"id":9486,"name":"Assignment","src":"2465:19:8"}],"id":9487,"name":"ExpressionStatement","src":"2465:19:8"}],"id":9488,"name":"Block","src":"2443:80:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9476,"type":"uint256","value":"mask"},"id":9489,"name":"Identifier","src":"2551:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9490,"name":"Literal","src":"2560:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9491,"name":"Literal","src":"2566:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9492,"name":"Literal","src":"2571:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9436,"type":"uint256","value":"shortest"},"id":9493,"name":"Identifier","src":"2576:8:8"}],"id":9494,"name":"BinaryOperation","src":"2571:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9455,"type":"uint256","value":"idx"},"id":9495,"name":"Identifier","src":"2587:3:8"}],"id":9496,"name":"BinaryOperation","src":"2571:19:8"}],"id":9497,"name":"TupleExpression","src":"2570:21:8"}],"id":9498,"name":"BinaryOperation","src":"2566:25:8"}],"id":9499,"name":"TupleExpression","src":"2565:27:8"}],"id":9500,"name":"BinaryOperation","src":"2560:32:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9501,"name":"Literal","src":"2595:1:8"}],"id":9502,"name":"BinaryOperation","src":"2560:36:8"}],"id":9503,"name":"TupleExpression","src":"2559:38:8"}],"id":9504,"name":"UnaryOperation","src":"2558:39:8"}],"id":9505,"name":"Assignment","src":"2551:46:8"}],"id":9506,"name":"ExpressionStatement","src":"2551:46:8"}],"id":9507,"name":"Block","src":"2529:87:8"}],"id":9508,"name":"IfStatement","src":"2424:192:8"},{"attributes":{"assignments":[9510]},"children":[{"attributes":{"constant":false,"name":"diff","scope":9529,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9509,"name":"ElementaryTypeName","src":"2633:4:8"}],"id":9510,"name":"VariableDeclaration","src":"2633:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9466,"type":"uint256","value":"a"},"id":9511,"name":"Identifier","src":"2646:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9476,"type":"uint256","value":"mask"},"id":9512,"name":"Identifier","src":"2650:4:8"}],"id":9513,"name":"BinaryOperation","src":"2646:8:8"}],"id":9514,"name":"TupleExpression","src":"2645:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9469,"type":"uint256","value":"b"},"id":9515,"name":"Identifier","src":"2659:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9476,"type":"uint256","value":"mask"},"id":9516,"name":"Identifier","src":"2663:4:8"}],"id":9517,"name":"BinaryOperation","src":"2659:8:8"}],"id":9518,"name":"TupleExpression","src":"2658:10:8"}],"id":9519,"name":"BinaryOperation","src":"2645:23:8"}],"id":9520,"name":"VariableDeclarationStatement","src":"2633:35:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"diff"},"id":9521,"name":"Identifier","src":"2690:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9522,"name":"Literal","src":"2698:1:8"}],"id":9523,"name":"BinaryOperation","src":"2690:9:8"},{"attributes":{"functionReturnParameters":9434},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9524,"name":"ElementaryTypeNameExpression","src":"2724:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"diff"},"id":9525,"name":"Identifier","src":"2728:4:8"}],"id":9526,"name":"FunctionCall","src":"2724:9:8"}],"id":9527,"name":"Return","src":"2717:16:8"}],"id":9528,"name":"IfStatement","src":"2686:47:8"}],"id":9529,"name":"Block","src":"2318:430:8"}],"id":9530,"name":"IfStatement","src":"2306:442:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9448,"type":"uint256","value":"selfptr"},"id":9531,"name":"Identifier","src":"2761:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9532,"name":"Literal","src":"2772:2:8"}],"id":9533,"name":"Assignment","src":"2761:13:8"}],"id":9534,"name":"ExpressionStatement","src":"2761:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9451,"type":"uint256","value":"otherptr"},"id":9535,"name":"Identifier","src":"2788:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9536,"name":"Literal","src":"2800:2:8"}],"id":9537,"name":"Assignment","src":"2788:14:8"}],"id":9538,"name":"ExpressionStatement","src":"2788:14:8"}],"id":9539,"name":"Block","src":"2142:671:8"}],"id":9540,"name":"ForStatement","src":"2096:717:8"},{"attributes":{"functionReturnParameters":9434},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9541,"name":"ElementaryTypeNameExpression","src":"2830:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9424,"type":"uint256","value":"len"},"id":9542,"name":"Identifier","src":"2834:3:8"}],"id":9543,"name":"FunctionCall","src":"2830:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9544,"name":"ElementaryTypeNameExpression","src":"2841:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9430,"type":"uint256","value":"otherlen"},"id":9545,"name":"Identifier","src":"2845:8:8"}],"id":9546,"name":"FunctionCall","src":"2841:13:8"}],"id":9547,"name":"BinaryOperation","src":"2830:24:8"}],"id":9548,"name":"Return","src":"2823:31:8"}],"id":9549,"name":"Block","src":"1817:1044:8"}],"id":9550,"name":"FunctionDefinition","src":"1677:1184:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9578,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9551,"name":"ElementaryTypeName","src":"3295:5:8"}],"id":9552,"name":"VariableDeclaration","src":"3295:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9578,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9553,"name":"ElementaryTypeName","src":"3314:4:8"}],"id":9554,"name":"VariableDeclaration","src":"3314:11:8"},{"attributes":{"constant":false,"name":"other","scope":9578,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9555,"name":"ElementaryTypeName","src":"3327:5:8"}],"id":9556,"name":"VariableDeclaration","src":"3327:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9578,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9557,"name":"ElementaryTypeName","src":"3347:4:8"}],"id":9558,"name":"VariableDeclaration","src":"3347:16:8"},{"attributes":{"constant":false,"name":"len","scope":9578,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9559,"name":"ElementaryTypeName","src":"3365:4:8"}],"id":9560,"name":"VariableDeclaration","src":"3365:8:8"}],"id":9561,"name":"ParameterList","src":"3294:80:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9578,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9562,"name":"ElementaryTypeName","src":"3398:4:8"}],"id":9563,"name":"VariableDeclaration","src":"3398:4:8"}],"id":9564,"name":"ParameterList","src":"3397:6:8"},{"children":[{"attributes":{"functionReturnParameters":9564},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9397,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9565,"name":"Identifier","src":"3421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9552,"type":"bytes memory","value":"self"},"id":9566,"name":"Identifier","src":"3428:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9554,"type":"uint256","value":"offset"},"id":9567,"name":"Identifier","src":"3434:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9560,"type":"uint256","value":"len"},"id":9568,"name":"Identifier","src":"3442:3:8"}],"id":9569,"name":"FunctionCall","src":"3421:25:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9397,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9570,"name":"Identifier","src":"3450:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"bytes memory","value":"other"},"id":9571,"name":"Identifier","src":"3457:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9558,"type":"uint256","value":"otherOffset"},"id":9572,"name":"Identifier","src":"3464:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9560,"type":"uint256","value":"len"},"id":9573,"name":"Identifier","src":"3477:3:8"}],"id":9574,"name":"FunctionCall","src":"3450:31:8"}],"id":9575,"name":"BinaryOperation","src":"3421:60:8"}],"id":9576,"name":"Return","src":"3414:67:8"}],"id":9577,"name":"Block","src":"3404:84:8"}],"id":9578,"name":"FunctionDefinition","src":"3279:209:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9610,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9579,"name":"ElementaryTypeName","src":"3887:5:8"}],"id":9580,"name":"VariableDeclaration","src":"3887:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9610,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9581,"name":"ElementaryTypeName","src":"3906:4:8"}],"id":9582,"name":"VariableDeclaration","src":"3906:11:8"},{"attributes":{"constant":false,"name":"other","scope":9610,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9583,"name":"ElementaryTypeName","src":"3919:5:8"}],"id":9584,"name":"VariableDeclaration","src":"3919:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9610,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9585,"name":"ElementaryTypeName","src":"3939:4:8"}],"id":9586,"name":"VariableDeclaration","src":"3939:16:8"}],"id":9587,"name":"ParameterList","src":"3886:70:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9610,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9588,"name":"ElementaryTypeName","src":"3980:4:8"}],"id":9589,"name":"VariableDeclaration","src":"3980:4:8"}],"id":9590,"name":"ParameterList","src":"3979:6:8"},{"children":[{"attributes":{"functionReturnParameters":9590},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9397,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9591,"name":"Identifier","src":"4003:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9580,"type":"bytes memory","value":"self"},"id":9592,"name":"Identifier","src":"4010:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9582,"type":"uint256","value":"offset"},"id":9593,"name":"Identifier","src":"4016:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9580,"type":"bytes memory","value":"self"},"id":9594,"name":"Identifier","src":"4024:4:8"}],"id":9595,"name":"MemberAccess","src":"4024:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9582,"type":"uint256","value":"offset"},"id":9596,"name":"Identifier","src":"4038:6:8"}],"id":9597,"name":"BinaryOperation","src":"4024:20:8"}],"id":9598,"name":"FunctionCall","src":"4003:42:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9397,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9599,"name":"Identifier","src":"4049:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9584,"type":"bytes memory","value":"other"},"id":9600,"name":"Identifier","src":"4056:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9586,"type":"uint256","value":"otherOffset"},"id":9601,"name":"Identifier","src":"4063:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9584,"type":"bytes memory","value":"other"},"id":9602,"name":"Identifier","src":"4076:5:8"}],"id":9603,"name":"MemberAccess","src":"4076:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9586,"type":"uint256","value":"otherOffset"},"id":9604,"name":"Identifier","src":"4091:11:8"}],"id":9605,"name":"BinaryOperation","src":"4076:26:8"}],"id":9606,"name":"FunctionCall","src":"4049:54:8"}],"id":9607,"name":"BinaryOperation","src":"4003:100:8"}],"id":9608,"name":"Return","src":"3996:107:8"}],"id":9609,"name":"Block","src":"3986:124:8"}],"id":9610,"name":"FunctionDefinition","src":"3871:239:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9639,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9611,"name":"ElementaryTypeName","src":"4478:5:8"}],"id":9612,"name":"VariableDeclaration","src":"4478:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9613,"name":"ElementaryTypeName","src":"4497:4:8"}],"id":9614,"name":"VariableDeclaration","src":"4497:11:8"},{"attributes":{"constant":false,"name":"other","scope":9639,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9615,"name":"ElementaryTypeName","src":"4510:5:8"}],"id":9616,"name":"VariableDeclaration","src":"4510:18:8"}],"id":9617,"name":"ParameterList","src":"4477:52:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9639,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9618,"name":"ElementaryTypeName","src":"4553:4:8"}],"id":9619,"name":"VariableDeclaration","src":"4553:4:8"}],"id":9620,"name":"ParameterList","src":"4552:6:8"},{"children":[{"attributes":{"functionReturnParameters":9620},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9612,"type":"bytes memory","value":"self"},"id":9621,"name":"Identifier","src":"4576:4:8"}],"id":9622,"name":"MemberAccess","src":"4576:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9614,"type":"uint256","value":"offset"},"id":9623,"name":"Identifier","src":"4591:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9616,"type":"bytes memory","value":"other"},"id":9624,"name":"Identifier","src":"4600:5:8"}],"id":9625,"name":"MemberAccess","src":"4600:12:8"}],"id":9626,"name":"BinaryOperation","src":"4591:21:8"}],"id":9627,"name":"BinaryOperation","src":"4576:36:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9578,9610,9639,9664],"referencedDeclaration":9578,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9628,"name":"Identifier","src":"4616:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9612,"type":"bytes memory","value":"self"},"id":9629,"name":"Identifier","src":"4623:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9614,"type":"uint256","value":"offset"},"id":9630,"name":"Identifier","src":"4629:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9616,"type":"bytes memory","value":"other"},"id":9631,"name":"Identifier","src":"4637:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9632,"name":"Literal","src":"4644:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9616,"type":"bytes memory","value":"other"},"id":9633,"name":"Identifier","src":"4647:5:8"}],"id":9634,"name":"MemberAccess","src":"4647:12:8"}],"id":9635,"name":"FunctionCall","src":"4616:44:8"}],"id":9636,"name":"BinaryOperation","src":"4576:84:8"}],"id":9637,"name":"Return","src":"4569:91:8"}],"id":9638,"name":"Block","src":"4559:108:8"}],"id":9639,"name":"FunctionDefinition","src":"4462:205:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9664,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9640,"name":"ElementaryTypeName","src":"4931:5:8"}],"id":9641,"name":"VariableDeclaration","src":"4931:17:8"},{"attributes":{"constant":false,"name":"other","scope":9664,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9642,"name":"ElementaryTypeName","src":"4950:5:8"}],"id":9643,"name":"VariableDeclaration","src":"4950:18:8"}],"id":9644,"name":"ParameterList","src":"4930:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9645,"name":"ElementaryTypeName","src":"4992:4:8"}],"id":9646,"name":"VariableDeclaration","src":"4992:4:8"}],"id":9647,"name":"ParameterList","src":"4991:6:8"},{"children":[{"attributes":{"functionReturnParameters":9647},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9641,"type":"bytes memory","value":"self"},"id":9648,"name":"Identifier","src":"5015:4:8"}],"id":9649,"name":"MemberAccess","src":"5015:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9643,"type":"bytes memory","value":"other"},"id":9650,"name":"Identifier","src":"5030:5:8"}],"id":9651,"name":"MemberAccess","src":"5030:12:8"}],"id":9652,"name":"BinaryOperation","src":"5015:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9578,9610,9639,9664],"referencedDeclaration":9578,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9653,"name":"Identifier","src":"5046:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9641,"type":"bytes memory","value":"self"},"id":9654,"name":"Identifier","src":"5053:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9655,"name":"Literal","src":"5059:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9643,"type":"bytes memory","value":"other"},"id":9656,"name":"Identifier","src":"5062:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9657,"name":"Literal","src":"5069:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9641,"type":"bytes memory","value":"self"},"id":9658,"name":"Identifier","src":"5072:4:8"}],"id":9659,"name":"MemberAccess","src":"5072:11:8"}],"id":9660,"name":"FunctionCall","src":"5046:38:8"}],"id":9661,"name":"BinaryOperation","src":"5015:69:8"}],"id":9662,"name":"Return","src":"5008:76:8"}],"id":9663,"name":"Block","src":"4998:93:8"}],"id":9664,"name":"FunctionDefinition","src":"4915:176:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9680,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9665,"name":"ElementaryTypeName","src":"5352:5:8"}],"id":9666,"name":"VariableDeclaration","src":"5352:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9667,"name":"ElementaryTypeName","src":"5371:4:8"}],"id":9668,"name":"VariableDeclaration","src":"5371:8:8"}],"id":9669,"name":"ParameterList","src":"5351:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9680,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9670,"name":"ElementaryTypeName","src":"5404:5:8"}],"id":9671,"name":"VariableDeclaration","src":"5404:9:8"}],"id":9672,"name":"ParameterList","src":"5403:11:8"},{"children":[{"attributes":{"functionReturnParameters":9672},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9673,"name":"ElementaryTypeNameExpression","src":"5432:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9666,"type":"bytes memory","value":"self"},"id":9674,"name":"Identifier","src":"5438:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9668,"type":"uint256","value":"idx"},"id":9675,"name":"Identifier","src":"5443:3:8"}],"id":9676,"name":"IndexAccess","src":"5438:9:8"}],"id":9677,"name":"FunctionCall","src":"5432:16:8"}],"id":9678,"name":"Return","src":"5425:23:8"}],"id":9679,"name":"Block","src":"5415:40:8"}],"id":9680,"name":"FunctionDefinition","src":"5333:122:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9700,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9681,"name":"ElementaryTypeName","src":"5719:5:8"}],"id":9682,"name":"VariableDeclaration","src":"5719:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9683,"name":"ElementaryTypeName","src":"5738:4:8"}],"id":9684,"name":"VariableDeclaration","src":"5738:8:8"}],"id":9685,"name":"ParameterList","src":"5718:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9700,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9686,"name":"ElementaryTypeName","src":"5771:6:8"}],"id":9687,"name":"VariableDeclaration","src":"5771:10:8"}],"id":9688,"name":"ParameterList","src":"5770:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9689,"name":"Identifier","src":"5793:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9684,"type":"uint256","value":"idx"},"id":9690,"name":"Identifier","src":"5801:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9691,"name":"Literal","src":"5807:1:8"}],"id":9692,"name":"BinaryOperation","src":"5801:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9682,"type":"bytes memory","value":"self"},"id":9693,"name":"Identifier","src":"5812:4:8"}],"id":9694,"name":"MemberAccess","src":"5812:11:8"}],"id":9695,"name":"BinaryOperation","src":"5801:22:8"}],"id":9696,"name":"FunctionCall","src":"5793:31:8"}],"id":9697,"name":"ExpressionStatement","src":"5793:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9687,"isOffset":false,"isSlot":false,"src":"5857:3:8","valueSize":1}},{"self":{"declaration":9682,"isOffset":false,"isSlot":false,"src":"5882:4:8","valueSize":1}},{"idx":{"declaration":9684,"isOffset":false,"isSlot":false,"src":"5892:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":9698,"name":"InlineAssembly","src":"5834:82:8"}],"id":9699,"name":"Block","src":"5783:139:8"}],"id":9700,"name":"FunctionDefinition","src":"5699:223:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9720,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9701,"name":"ElementaryTypeName","src":"6186:5:8"}],"id":9702,"name":"VariableDeclaration","src":"6186:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9703,"name":"ElementaryTypeName","src":"6205:4:8"}],"id":9704,"name":"VariableDeclaration","src":"6205:8:8"}],"id":9705,"name":"ParameterList","src":"6185:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9720,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":9706,"name":"ElementaryTypeName","src":"6238:6:8"}],"id":9707,"name":"VariableDeclaration","src":"6238:10:8"}],"id":9708,"name":"ParameterList","src":"6237:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9709,"name":"Identifier","src":"6260:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9704,"type":"uint256","value":"idx"},"id":9710,"name":"Identifier","src":"6268:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9711,"name":"Literal","src":"6274:1:8"}],"id":9712,"name":"BinaryOperation","src":"6268:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9702,"type":"bytes memory","value":"self"},"id":9713,"name":"Identifier","src":"6279:4:8"}],"id":9714,"name":"MemberAccess","src":"6279:11:8"}],"id":9715,"name":"BinaryOperation","src":"6268:22:8"}],"id":9716,"name":"FunctionCall","src":"6260:31:8"}],"id":9717,"name":"ExpressionStatement","src":"6260:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9707,"isOffset":false,"isSlot":false,"src":"6324:3:8","valueSize":1}},{"self":{"declaration":9702,"isOffset":false,"isSlot":false,"src":"6349:4:8","valueSize":1}},{"idx":{"declaration":9704,"isOffset":false,"isSlot":false,"src":"6359:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":9718,"name":"InlineAssembly","src":"6301:86:8"}],"id":9719,"name":"Block","src":"6250:143:8"}],"id":9720,"name":"FunctionDefinition","src":"6166:227:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9740,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9721,"name":"ElementaryTypeName","src":"6632:5:8"}],"id":9722,"name":"VariableDeclaration","src":"6632:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9740,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9723,"name":"ElementaryTypeName","src":"6651:4:8"}],"id":9724,"name":"VariableDeclaration","src":"6651:8:8"}],"id":9725,"name":"ParameterList","src":"6631:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9740,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9726,"name":"ElementaryTypeName","src":"6684:7:8"}],"id":9727,"name":"VariableDeclaration","src":"6684:11:8"}],"id":9728,"name":"ParameterList","src":"6683:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9729,"name":"Identifier","src":"6707:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9724,"type":"uint256","value":"idx"},"id":9730,"name":"Identifier","src":"6715:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9731,"name":"Literal","src":"6721:2:8"}],"id":9732,"name":"BinaryOperation","src":"6715:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9722,"type":"bytes memory","value":"self"},"id":9733,"name":"Identifier","src":"6727:4:8"}],"id":9734,"name":"MemberAccess","src":"6727:11:8"}],"id":9735,"name":"BinaryOperation","src":"6715:23:8"}],"id":9736,"name":"FunctionCall","src":"6707:32:8"}],"id":9737,"name":"ExpressionStatement","src":"6707:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9727,"isOffset":false,"isSlot":false,"src":"6772:3:8","valueSize":1}},{"self":{"declaration":9722,"isOffset":false,"isSlot":false,"src":"6793:4:8","valueSize":1}},{"idx":{"declaration":9724,"isOffset":false,"isSlot":false,"src":"6804:3:8","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":9738,"name":"InlineAssembly","src":"6749:70:8"}],"id":9739,"name":"Block","src":"6697:128:8"}],"id":9740,"name":"FunctionDefinition","src":"6611:214:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9760,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9741,"name":"ElementaryTypeName","src":"7064:5:8"}],"id":9742,"name":"VariableDeclaration","src":"7064:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9760,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9743,"name":"ElementaryTypeName","src":"7083:4:8"}],"id":9744,"name":"VariableDeclaration","src":"7083:8:8"}],"id":9745,"name":"ParameterList","src":"7063:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9760,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9746,"name":"ElementaryTypeName","src":"7116:7:8"}],"id":9747,"name":"VariableDeclaration","src":"7116:11:8"}],"id":9748,"name":"ParameterList","src":"7115:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9749,"name":"Identifier","src":"7139:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9744,"type":"uint256","value":"idx"},"id":9750,"name":"Identifier","src":"7147:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9751,"name":"Literal","src":"7153:2:8"}],"id":9752,"name":"BinaryOperation","src":"7147:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9742,"type":"bytes memory","value":"self"},"id":9753,"name":"Identifier","src":"7159:4:8"}],"id":9754,"name":"MemberAccess","src":"7159:11:8"}],"id":9755,"name":"BinaryOperation","src":"7147:23:8"}],"id":9756,"name":"FunctionCall","src":"7139:32:8"}],"id":9757,"name":"ExpressionStatement","src":"7139:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9747,"isOffset":false,"isSlot":false,"src":"7204:3:8","valueSize":1}},{"self":{"declaration":9742,"isOffset":false,"isSlot":false,"src":"7229:4:8","valueSize":1}},{"idx":{"declaration":9744,"isOffset":false,"isSlot":false,"src":"7240:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":9758,"name":"InlineAssembly","src":"7181:143:8"}],"id":9759,"name":"Block","src":"7129:201:8"}],"id":9760,"name":"FunctionDefinition","src":"7043:287:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9788,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9761,"name":"ElementaryTypeName","src":"7606:5:8"}],"id":9762,"name":"VariableDeclaration","src":"7606:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9788,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9763,"name":"ElementaryTypeName","src":"7625:4:8"}],"id":9764,"name":"VariableDeclaration","src":"7625:8:8"},{"attributes":{"constant":false,"name":"len","scope":9788,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9765,"name":"ElementaryTypeName","src":"7635:4:8"}],"id":9766,"name":"VariableDeclaration","src":"7635:8:8"}],"id":9767,"name":"ParameterList","src":"7605:39:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9788,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9768,"name":"ElementaryTypeName","src":"7668:7:8"}],"id":9769,"name":"VariableDeclaration","src":"7668:11:8"}],"id":9770,"name":"ParameterList","src":"7667:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9771,"name":"Identifier","src":"7691:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9766,"type":"uint256","value":"len"},"id":9772,"name":"Identifier","src":"7699:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9773,"name":"Literal","src":"7706:2:8"}],"id":9774,"name":"BinaryOperation","src":"7699:9:8"}],"id":9775,"name":"FunctionCall","src":"7691:18:8"}],"id":9776,"name":"ExpressionStatement","src":"7691:18:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9777,"name":"Identifier","src":"7719:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9764,"type":"uint256","value":"idx"},"id":9778,"name":"Identifier","src":"7727:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9766,"type":"uint256","value":"len"},"id":9779,"name":"Identifier","src":"7733:3:8"}],"id":9780,"name":"BinaryOperation","src":"7727:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9762,"type":"bytes memory","value":"self"},"id":9781,"name":"Identifier","src":"7740:4:8"}],"id":9782,"name":"MemberAccess","src":"7740:11:8"}],"id":9783,"name":"BinaryOperation","src":"7727:24:8"}],"id":9784,"name":"FunctionCall","src":"7719:33:8"}],"id":9785,"name":"ExpressionStatement","src":"7719:33:8"},{"attributes":{"externalReferences":[{"len":{"declaration":9766,"isOffset":false,"isSlot":false,"src":"7822:3:8","valueSize":1}},{"ret":{"declaration":9769,"isOffset":false,"isSlot":false,"src":"7845:3:8","valueSize":1}},{"self":{"declaration":9762,"isOffset":false,"isSlot":false,"src":"7870:4:8","valueSize":1}},{"idx":{"declaration":9764,"isOffset":false,"isSlot":false,"src":"7881:3:8","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":9786,"name":"InlineAssembly","src":"7762:142:8"}],"id":9787,"name":"Block","src":"7681:229:8"}],"id":9788,"name":"FunctionDefinition","src":"7586:324:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":9828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9789,"name":"ElementaryTypeName","src":"7932:4:8"}],"id":9790,"name":"VariableDeclaration","src":"7932:9:8"},{"attributes":{"constant":false,"name":"src","scope":9828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9791,"name":"ElementaryTypeName","src":"7943:4:8"}],"id":9792,"name":"VariableDeclaration","src":"7943:8:8"},{"attributes":{"constant":false,"name":"len","scope":9828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9793,"name":"ElementaryTypeName","src":"7953:4:8"}],"id":9794,"name":"VariableDeclaration","src":"7953:8:8"}],"id":9795,"name":"ParameterList","src":"7931:31:8"},{"attributes":{"parameters":[null]},"children":[],"id":9796,"name":"ParameterList","src":"7976:0:8"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9794,"type":"uint256","value":"len"},"id":9797,"name":"Identifier","src":"8043:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9798,"name":"Literal","src":"8050:2:8"}],"id":9799,"name":"BinaryOperation","src":"8043:9:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9794,"type":"uint256","value":"len"},"id":9800,"name":"Identifier","src":"8054:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9801,"name":"Literal","src":"8061:2:8"}],"id":9802,"name":"Assignment","src":"8054:9:8"}],"id":9803,"name":"ExpressionStatement","src":"8054:9:8"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":9792,"isOffset":false,"isSlot":false,"src":"8125:3:8","valueSize":1}},{"dest":{"declaration":9790,"isOffset":false,"isSlot":false,"src":"8113:4:8","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":9804,"name":"InlineAssembly","src":"8079:65:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9790,"type":"uint256","value":"dest"},"id":9805,"name":"Identifier","src":"8157:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9806,"name":"Literal","src":"8165:2:8"}],"id":9807,"name":"Assignment","src":"8157:10:8"}],"id":9808,"name":"ExpressionStatement","src":"8157:10:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9792,"type":"uint256","value":"src"},"id":9809,"name":"Identifier","src":"8181:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9810,"name":"Literal","src":"8188:2:8"}],"id":9811,"name":"Assignment","src":"8181:9:8"}],"id":9812,"name":"ExpressionStatement","src":"8181:9:8"}],"id":9813,"name":"Block","src":"8065:136:8"}],"id":9814,"name":"ForStatement","src":"8036:165:8"},{"attributes":{"assignments":[9816]},"children":[{"attributes":{"constant":false,"name":"mask","scope":9827,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9815,"name":"ElementaryTypeName","src":"8243:4:8"}],"id":9816,"name":"VariableDeclaration","src":"8243:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":9817,"name":"Literal","src":"8255:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9818,"name":"Literal","src":"8263:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9794,"type":"uint256","value":"len"},"id":9819,"name":"Identifier","src":"8268:3:8"}],"id":9820,"name":"BinaryOperation","src":"8263:8:8"}],"id":9821,"name":"TupleExpression","src":"8262:10:8"}],"id":9822,"name":"BinaryOperation","src":"8255:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9823,"name":"Literal","src":"8275:1:8"}],"id":9824,"name":"BinaryOperation","src":"8255:21:8"}],"id":9825,"name":"VariableDeclarationStatement","src":"8243:33:8"},{"attributes":{"externalReferences":[{"src":{"declaration":9792,"isOffset":false,"isSlot":false,"src":"8334:3:8","valueSize":1}},{"mask":{"declaration":9816,"isOffset":false,"isSlot":false,"src":"8344:4:8","valueSize":1}},{"dest":{"declaration":9790,"isOffset":false,"isSlot":false,"src":"8421:4:8","valueSize":1}},{"dest":{"declaration":9790,"isOffset":false,"isSlot":false,"src":"8389:4:8","valueSize":1}},{"mask":{"declaration":9816,"isOffset":false,"isSlot":false,"src":"8396:4:8","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":9826,"name":"InlineAssembly","src":"8286:173:8"}],"id":9827,"name":"Block","src":"7976:489:8"}],"id":9828,"name":"FunctionDefinition","src":"7916:549:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9871,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9829,"name":"ElementaryTypeName","src":"8704:5:8"}],"id":9830,"name":"VariableDeclaration","src":"8704:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9831,"name":"ElementaryTypeName","src":"8723:4:8"}],"id":9832,"name":"VariableDeclaration","src":"8723:11:8"},{"attributes":{"constant":false,"name":"len","scope":9871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9833,"name":"ElementaryTypeName","src":"8736:4:8"}],"id":9834,"name":"VariableDeclaration","src":"8736:8:8"}],"id":9835,"name":"ParameterList","src":"8703:42:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9871,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9836,"name":"ElementaryTypeName","src":"8768:5:8"}],"id":9837,"name":"VariableDeclaration","src":"8768:12:8"}],"id":9838,"name":"ParameterList","src":"8767:14:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9839,"name":"Identifier","src":"8792:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9832,"type":"uint256","value":"offset"},"id":9840,"name":"Identifier","src":"8800:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"uint256","value":"len"},"id":9841,"name":"Identifier","src":"8809:3:8"}],"id":9842,"name":"BinaryOperation","src":"8800:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9830,"type":"bytes memory","value":"self"},"id":9843,"name":"Identifier","src":"8816:4:8"}],"id":9844,"name":"MemberAccess","src":"8816:11:8"}],"id":9845,"name":"BinaryOperation","src":"8800:27:8"}],"id":9846,"name":"FunctionCall","src":"8792:36:8"}],"id":9847,"name":"ExpressionStatement","src":"8792:36:8"},{"attributes":{"assignments":[9849]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9870,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9848,"name":"ElementaryTypeName","src":"8839:5:8"}],"id":9849,"name":"VariableDeclaration","src":"8839:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9850,"name":"ElementaryTypeName","src":"8862:5:8"}],"id":9851,"name":"NewExpression","src":"8858:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"uint256","value":"len"},"id":9852,"name":"Identifier","src":"8868:3:8"}],"id":9853,"name":"FunctionCall","src":"8858:14:8"}],"id":9854,"name":"VariableDeclarationStatement","src":"8839:33:8"},{"attributes":{"assignments":[9856],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":9870,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9855,"name":"ElementaryTypeName","src":"8882:4:8"}],"id":9856,"name":"VariableDeclaration","src":"8882:9:8"}],"id":9857,"name":"VariableDeclarationStatement","src":"8882:9:8"},{"attributes":{"assignments":[9859],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":9870,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9858,"name":"ElementaryTypeName","src":"8901:4:8"}],"id":9859,"name":"VariableDeclaration","src":"8901:8:8"}],"id":9860,"name":"VariableDeclarationStatement","src":"8901:8:8"},{"attributes":{"externalReferences":[{"dest":{"declaration":9856,"isOffset":false,"isSlot":false,"src":"8943:4:8","valueSize":1}},{"ret":{"declaration":9849,"isOffset":false,"isSlot":false,"src":"8955:3:8","valueSize":1}},{"src":{"declaration":9859,"isOffset":false,"isSlot":false,"src":"8976:3:8","valueSize":1}},{"self":{"declaration":9830,"isOffset":false,"isSlot":false,"src":"8991:4:8","valueSize":1}},{"offset":{"declaration":9832,"isOffset":false,"isSlot":false,"src":"9002:6:8","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":9861,"name":"InlineAssembly","src":"8920:99:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9828,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9862,"name":"Identifier","src":"9028:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9856,"type":"uint256","value":"dest"},"id":9863,"name":"Identifier","src":"9035:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9859,"type":"uint256","value":"src"},"id":9864,"name":"Identifier","src":"9041:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"uint256","value":"len"},"id":9865,"name":"Identifier","src":"9046:3:8"}],"id":9866,"name":"FunctionCall","src":"9028:22:8"}],"id":9867,"name":"ExpressionStatement","src":"9028:22:8"},{"attributes":{"functionReturnParameters":9838},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9849,"type":"bytes memory","value":"ret"},"id":9868,"name":"Identifier","src":"9068:3:8"}],"id":9869,"name":"Return","src":"9061:10:8"}],"id":9870,"name":"Block","src":"8782:296:8"}],"id":9871,"name":"FunctionDefinition","src":"8685:393:8"},{"attributes":{"constant":true,"name":"base32HexTable","scope":10094,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9872,"name":"ElementaryTypeName","src":"9206:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":9873,"name":"Literal","src":"9238:147:8"}],"id":9874,"name":"VariableDeclaration","src":"9206:179:8"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10093,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9875,"name":"ElementaryTypeName","src":"9697:5:8"}],"id":9876,"name":"VariableDeclaration","src":"9697:17:8"},{"attributes":{"constant":false,"name":"off","scope":10093,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9877,"name":"ElementaryTypeName","src":"9716:4:8"}],"id":9878,"name":"VariableDeclaration","src":"9716:8:8"},{"attributes":{"constant":false,"name":"len","scope":10093,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9879,"name":"ElementaryTypeName","src":"9726:4:8"}],"id":9880,"name":"VariableDeclaration","src":"9726:8:8"}],"id":9881,"name":"ParameterList","src":"9696:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10093,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9882,"name":"ElementaryTypeName","src":"9758:7:8"}],"id":9883,"name":"VariableDeclaration","src":"9758:7:8"}],"id":9884,"name":"ParameterList","src":"9757:9:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9885,"name":"Identifier","src":"9777:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9886,"name":"Identifier","src":"9785:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":9887,"name":"Literal","src":"9792:2:8"}],"id":9888,"name":"BinaryOperation","src":"9785:9:8"}],"id":9889,"name":"FunctionCall","src":"9777:18:8"}],"id":9890,"name":"ExpressionStatement","src":"9777:18:8"},{"attributes":{"assignments":[9892]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10092,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9891,"name":"ElementaryTypeName","src":"9806:4:8"}],"id":9892,"name":"VariableDeclaration","src":"9806:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9893,"name":"Literal","src":"9817:1:8"}],"id":9894,"name":"VariableDeclarationStatement","src":"9806:12:8"},{"attributes":{"assignments":[9896],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":10092,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9895,"name":"ElementaryTypeName","src":"9828:5:8"}],"id":9896,"name":"VariableDeclaration","src":"9828:13:8"}],"id":9897,"name":"VariableDeclarationStatement","src":"9828:13:8"},{"children":[{"attributes":{"assignments":[9899]},"children":[{"attributes":{"constant":false,"name":"i","scope":9964,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9898,"name":"ElementaryTypeName","src":"9855:4:8"}],"id":9899,"name":"VariableDeclaration","src":"9855:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9900,"name":"Literal","src":"9864:1:8"}],"id":9901,"name":"VariableDeclarationStatement","src":"9855:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9899,"type":"uint256","value":"i"},"id":9902,"name":"Identifier","src":"9867:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9903,"name":"Identifier","src":"9871:3:8"}],"id":9904,"name":"BinaryOperation","src":"9867:7:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9899,"type":"uint256","value":"i"},"id":9905,"name":"Identifier","src":"9876:1:8"}],"id":9906,"name":"UnaryOperation","src":"9876:3:8"}],"id":9907,"name":"ExpressionStatement","src":"9876:3:8"},{"children":[{"attributes":{"assignments":[9909]},"children":[{"attributes":{"constant":false,"name":"char","scope":9963,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":9908,"name":"ElementaryTypeName","src":"9895:6:8"}],"id":9909,"name":"VariableDeclaration","src":"9895:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9876,"type":"bytes memory","value":"self"},"id":9910,"name":"Identifier","src":"9909:4:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9878,"type":"uint256","value":"off"},"id":9911,"name":"Identifier","src":"9914:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9899,"type":"uint256","value":"i"},"id":9912,"name":"Identifier","src":"9920:1:8"}],"id":9913,"name":"BinaryOperation","src":"9914:7:8"}],"id":9914,"name":"IndexAccess","src":"9909:13:8"}],"id":9915,"name":"VariableDeclarationStatement","src":"9895:27:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9916,"name":"Identifier","src":"9936:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9909,"type":"bytes1","value":"char"},"id":9917,"name":"Identifier","src":"9944:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":9918,"name":"Literal","src":"9952:4:8"}],"id":9919,"name":"BinaryOperation","src":"9944:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9909,"type":"bytes1","value":"char"},"id":9920,"name":"Identifier","src":"9960:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":9921,"name":"Literal","src":"9968:4:8"}],"id":9922,"name":"BinaryOperation","src":"9960:12:8"}],"id":9923,"name":"BinaryOperation","src":"9944:28:8"}],"id":9924,"name":"FunctionCall","src":"9936:37:8"}],"id":9925,"name":"ExpressionStatement","src":"9936:37:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9926,"name":"Identifier","src":"9987:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9927,"name":"ElementaryTypeNameExpression","src":"9997:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9874,"type":"bytes memory","value":"base32HexTable"},"id":9928,"name":"Identifier","src":"10003:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":9929,"name":"ElementaryTypeNameExpression","src":"10018:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9930,"name":"ElementaryTypeNameExpression","src":"10023:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9909,"type":"bytes1","value":"char"},"id":9931,"name":"Identifier","src":"10029:4:8"}],"id":9932,"name":"FunctionCall","src":"10023:11:8"}],"id":9933,"name":"FunctionCall","src":"10018:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":9934,"name":"Literal","src":"10038:4:8"}],"id":9935,"name":"BinaryOperation","src":"10018:24:8"}],"id":9936,"name":"IndexAccess","src":"10003:40:8"}],"id":9937,"name":"FunctionCall","src":"9997:47:8"}],"id":9938,"name":"Assignment","src":"9987:57:8"}],"id":9939,"name":"ExpressionStatement","src":"9987:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9940,"name":"Identifier","src":"10058:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9941,"name":"Identifier","src":"10066:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":9942,"name":"Literal","src":"10077:4:8"}],"id":9943,"name":"BinaryOperation","src":"10066:15:8"}],"id":9944,"name":"FunctionCall","src":"10058:24:8"}],"id":9945,"name":"ExpressionStatement","src":"10058:24:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9899,"type":"uint256","value":"i"},"id":9946,"name":"Identifier","src":"10099:1:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9947,"name":"Identifier","src":"10104:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9948,"name":"Literal","src":"10110:1:8"}],"id":9949,"name":"BinaryOperation","src":"10104:7:8"}],"id":9950,"name":"BinaryOperation","src":"10099:12:8"},{"children":[{"id":9951,"name":"Break","src":"10131:5:8"}],"id":9952,"name":"Block","src":"10113:38:8"}],"id":9953,"name":"IfStatement","src":"10096:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9954,"name":"Identifier","src":"10164:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9955,"name":"Identifier","src":"10171:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":9956,"name":"Literal","src":"10178:1:8"}],"id":9957,"name":"BinaryOperation","src":"10171:8:8"}],"id":9958,"name":"TupleExpression","src":"10170:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9959,"name":"Identifier","src":"10183:7:8"}],"id":9960,"name":"BinaryOperation","src":"10170:20:8"}],"id":9961,"name":"Assignment","src":"10164:26:8"}],"id":9962,"name":"ExpressionStatement","src":"10164:26:8"}],"id":9963,"name":"Block","src":"9881:320:8"}],"id":9964,"name":"ForStatement","src":"9851:350:8"},{"attributes":{"assignments":[9966]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":10092,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9965,"name":"ElementaryTypeName","src":"10211:4:8"}],"id":9966,"name":"VariableDeclaration","src":"10211:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9967,"name":"Identifier","src":"10225:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":9968,"name":"Literal","src":"10231:1:8"}],"id":9969,"name":"BinaryOperation","src":"10225:7:8"}],"id":9970,"name":"VariableDeclarationStatement","src":"10211:21:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9971,"name":"Identifier","src":"10245:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9972,"name":"Literal","src":"10251:1:8"}],"id":9973,"name":"BinaryOperation","src":"10245:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9974,"name":"Literal","src":"10256:1:8"}],"id":9975,"name":"BinaryOperation","src":"10245:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9976,"name":"Identifier","src":"10325:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9977,"name":"Identifier","src":"10332:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":9978,"name":"Literal","src":"10339:1:8"}],"id":9979,"name":"BinaryOperation","src":"10332:8:8"}],"id":9980,"name":"TupleExpression","src":"10331:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9981,"name":"Identifier","src":"10344:7:8"}],"id":9982,"name":"BinaryOperation","src":"10331:20:8"}],"id":9983,"name":"Assignment","src":"10325:26:8"}],"id":9984,"name":"ExpressionStatement","src":"10325:26:8"}],"id":9985,"name":"Block","src":"10259:103:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9986,"name":"Identifier","src":"10371:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9987,"name":"Literal","src":"10377:1:8"}],"id":9988,"name":"BinaryOperation","src":"10371:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9989,"name":"Literal","src":"10382:1:8"}],"id":9990,"name":"BinaryOperation","src":"10371:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9991,"name":"Identifier","src":"10444:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9992,"name":"Identifier","src":"10451:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":9993,"name":"Literal","src":"10458:1:8"}],"id":9994,"name":"BinaryOperation","src":"10451:8:8"}],"id":9995,"name":"TupleExpression","src":"10450:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9996,"name":"Identifier","src":"10464:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9997,"name":"Literal","src":"10475:1:8"}],"id":9998,"name":"BinaryOperation","src":"10464:12:8"}],"id":9999,"name":"TupleExpression","src":"10463:14:8"}],"id":10000,"name":"BinaryOperation","src":"10450:27:8"}],"id":10001,"name":"Assignment","src":"10444:33:8"}],"id":10002,"name":"ExpressionStatement","src":"10444:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10003,"name":"Identifier","src":"10491:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10004,"name":"Literal","src":"10501:1:8"}],"id":10005,"name":"Assignment","src":"10491:11:8"}],"id":10006,"name":"ExpressionStatement","src":"10491:11:8"}],"id":10007,"name":"Block","src":"10385:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":10008,"name":"Identifier","src":"10522:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10009,"name":"Literal","src":"10528:1:8"}],"id":10010,"name":"BinaryOperation","src":"10522:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10011,"name":"Literal","src":"10533:1:8"}],"id":10012,"name":"BinaryOperation","src":"10522:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10013,"name":"Identifier","src":"10597:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10014,"name":"Identifier","src":"10604:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10015,"name":"Literal","src":"10611:1:8"}],"id":10016,"name":"BinaryOperation","src":"10604:8:8"}],"id":10017,"name":"TupleExpression","src":"10603:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":10018,"name":"Identifier","src":"10617:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10019,"name":"Literal","src":"10628:1:8"}],"id":10020,"name":"BinaryOperation","src":"10617:12:8"}],"id":10021,"name":"TupleExpression","src":"10616:14:8"}],"id":10022,"name":"BinaryOperation","src":"10603:27:8"}],"id":10023,"name":"Assignment","src":"10597:33:8"}],"id":10024,"name":"ExpressionStatement","src":"10597:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10025,"name":"Identifier","src":"10644:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10026,"name":"Literal","src":"10654:1:8"}],"id":10027,"name":"Assignment","src":"10644:11:8"}],"id":10028,"name":"ExpressionStatement","src":"10644:11:8"}],"id":10029,"name":"Block","src":"10536:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":10030,"name":"Identifier","src":"10675:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10031,"name":"Literal","src":"10681:1:8"}],"id":10032,"name":"BinaryOperation","src":"10675:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10033,"name":"Literal","src":"10686:1:8"}],"id":10034,"name":"BinaryOperation","src":"10675:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10035,"name":"Identifier","src":"10750:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10036,"name":"Identifier","src":"10757:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10037,"name":"Literal","src":"10764:1:8"}],"id":10038,"name":"BinaryOperation","src":"10757:8:8"}],"id":10039,"name":"TupleExpression","src":"10756:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":10040,"name":"Identifier","src":"10770:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10041,"name":"Literal","src":"10781:1:8"}],"id":10042,"name":"BinaryOperation","src":"10770:12:8"}],"id":10043,"name":"TupleExpression","src":"10769:14:8"}],"id":10044,"name":"BinaryOperation","src":"10756:27:8"}],"id":10045,"name":"Assignment","src":"10750:33:8"}],"id":10046,"name":"ExpressionStatement","src":"10750:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10047,"name":"Identifier","src":"10797:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10048,"name":"Literal","src":"10807:1:8"}],"id":10049,"name":"Assignment","src":"10797:11:8"}],"id":10050,"name":"ExpressionStatement","src":"10797:11:8"}],"id":10051,"name":"Block","src":"10689:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":10052,"name":"Identifier","src":"10828:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10053,"name":"Literal","src":"10834:1:8"}],"id":10054,"name":"BinaryOperation","src":"10828:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":10055,"name":"Literal","src":"10839:1:8"}],"id":10056,"name":"BinaryOperation","src":"10828:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10057,"name":"Identifier","src":"10904:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10058,"name":"Identifier","src":"10911:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10059,"name":"Literal","src":"10918:1:8"}],"id":10060,"name":"BinaryOperation","src":"10911:8:8"}],"id":10061,"name":"TupleExpression","src":"10910:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":10062,"name":"Identifier","src":"10924:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10063,"name":"Literal","src":"10935:1:8"}],"id":10064,"name":"BinaryOperation","src":"10924:12:8"}],"id":10065,"name":"TupleExpression","src":"10923:14:8"}],"id":10066,"name":"BinaryOperation","src":"10910:27:8"}],"id":10067,"name":"Assignment","src":"10904:33:8"}],"id":10068,"name":"ExpressionStatement","src":"10904:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10069,"name":"Identifier","src":"10951:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10070,"name":"Literal","src":"10961:1:8"}],"id":10071,"name":"Assignment","src":"10951:11:8"}],"id":10072,"name":"ExpressionStatement","src":"10951:11:8"}],"id":10073,"name":"Block","src":"10842:131:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[10114,10115],"referencedDeclaration":10114,"type":"function () pure","value":"revert"},"id":10074,"name":"Identifier","src":"10993:6:8"}],"id":10075,"name":"FunctionCall","src":"10993:8:8"}],"id":10076,"name":"ExpressionStatement","src":"10993:8:8"}],"id":10077,"name":"Block","src":"10979:33:8"}],"id":10078,"name":"IfStatement","src":"10825:187:8"}],"id":10079,"name":"IfStatement","src":"10672:340:8"}],"id":10080,"name":"IfStatement","src":"10519:493:8"}],"id":10081,"name":"IfStatement","src":"10368:644:8"}],"id":10082,"name":"IfStatement","src":"10242:770:8"},{"attributes":{"functionReturnParameters":9884},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":10083,"name":"ElementaryTypeNameExpression","src":"11029:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10084,"name":"Identifier","src":"11037:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10085,"name":"Literal","src":"11045:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10086,"name":"Identifier","src":"11051:6:8"}],"id":10087,"name":"BinaryOperation","src":"11045:12:8"}],"id":10088,"name":"TupleExpression","src":"11044:14:8"}],"id":10089,"name":"BinaryOperation","src":"11037:21:8"}],"id":10090,"name":"FunctionCall","src":"11029:30:8"}],"id":10091,"name":"Return","src":"11022:37:8"}],"id":10092,"name":"Block","src":"9767:1299:8"}],"id":10093,"name":"FunctionDefinition","src":"9668:1398:8"}],"id":10094,"name":"ContractDefinition","src":"26:11042:8"}],"id":10095,"name":"SourceUnit","src":"0:11069:8"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[4594]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4422,"name":"PragmaDirective","src":"1401:23:9"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":4423,"name":"PragmaDirective","src":"1425:33:9"},{"attributes":{"SourceUnit":4421,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4424,"name":"ImportDirective","src":"1460:19:9"},{"attributes":{"SourceUnit":5719,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4425,"name":"ImportDirective","src":"1480:36:9"},{"attributes":{"SourceUnit":5878,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4426,"name":"ImportDirective","src":"1517:37:9"},{"attributes":{"SourceUnit":5948,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4427,"name":"ImportDirective","src":"1555:44:9"},{"attributes":{"SourceUnit":6439,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4428,"name":"ImportDirective","src":"1600:36:9"},{"attributes":{"SourceUnit":6626,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4429,"name":"ImportDirective","src":"1637:42:9"},{"attributes":{"SourceUnit":6696,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4430,"name":"ImportDirective","src":"1680:37:9"},{"attributes":{"SourceUnit":6787,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4431,"name":"ImportDirective","src":"1718:39:9"},{"attributes":{"SourceUnit":6870,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4432,"name":"ImportDirective","src":"1758:37:9"},{"attributes":{"contractDependencies":[5718,5877,5947,6438,6625,6695,6786,6869,8755],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[4594,6869,6786,6695,6625,6438,5947,5877,5718,8755],"name":"PublicResolver","scope":4595},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":5718,"type":"contract ABIResolver"},"id":4433,"name":"UserDefinedTypeName","src":"1924:11:9"}],"id":4434,"name":"InheritanceSpecifier","src":"1924:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5877,"type":"contract AddrResolver"},"id":4435,"name":"UserDefinedTypeName","src":"1937:12:9"}],"id":4436,"name":"InheritanceSpecifier","src":"1937:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":5947,"type":"contract ContentHashResolver"},"id":4437,"name":"UserDefinedTypeName","src":"1951:19:9"}],"id":4438,"name":"InheritanceSpecifier","src":"1951:19:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":6438,"type":"contract DNSResolver"},"id":4439,"name":"UserDefinedTypeName","src":"1972:11:9"}],"id":4440,"name":"InheritanceSpecifier","src":"1972:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":6625,"type":"contract InterfaceResolver"},"id":4441,"name":"UserDefinedTypeName","src":"1985:17:9"}],"id":4442,"name":"InheritanceSpecifier","src":"1985:17:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":6695,"type":"contract NameResolver"},"id":4443,"name":"UserDefinedTypeName","src":"2004:12:9"}],"id":4444,"name":"InheritanceSpecifier","src":"2004:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":6786,"type":"contract PubkeyResolver"},"id":4445,"name":"UserDefinedTypeName","src":"2018:14:9"}],"id":4446,"name":"InheritanceSpecifier","src":"2018:14:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":6869,"type":"contract TextResolver"},"id":4447,"name":"UserDefinedTypeName","src":"2034:12:9"}],"id":4448,"name":"InheritanceSpecifier","src":"2034:12:9"},{"attributes":{"constant":false,"name":"ens","scope":4594,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4420,"type":"contract ENS"},"id":4449,"name":"UserDefinedTypeName","src":"2053:3:9"}],"id":4450,"name":"VariableDeclaration","src":"2053:7:9"},{"attributes":{"constant":false,"name":"authorisations","scope":4594,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4451,"name":"ElementaryTypeName","src":"2328:7:9"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":4452,"name":"ElementaryTypeName","src":"2345:7:9"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4453,"name":"ElementaryTypeName","src":"2362:7:9"},{"attributes":{"name":"bool","type":"bool"},"id":4454,"name":"ElementaryTypeName","src":"2371:4:9"}],"id":4455,"name":"Mapping","src":"2354:22:9"}],"id":4456,"name":"Mapping","src":"2337:40:9"}],"id":4457,"name":"Mapping","src":"2320:58:9"}],"id":4458,"name":"VariableDeclaration","src":"2320:80:9"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4468,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4459,"name":"ElementaryTypeName","src":"2434:7:9"}],"id":4460,"name":"VariableDeclaration","src":"2434:20:9"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":4468,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4461,"name":"ElementaryTypeName","src":"2456:7:9"}],"id":4462,"name":"VariableDeclaration","src":"2456:21:9"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":4468,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4463,"name":"ElementaryTypeName","src":"2479:7:9"}],"id":4464,"name":"VariableDeclaration","src":"2479:22:9"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":4468,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4465,"name":"ElementaryTypeName","src":"2503:4:9"}],"id":4466,"name":"VariableDeclaration","src":"2503:17:9"}],"id":4467,"name":"ParameterList","src":"2433:88:9"}],"id":4468,"name":"EventDefinition","src":"2407:115:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4594,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":4478,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4420,"type":"contract ENS"},"id":4469,"name":"UserDefinedTypeName","src":"2540:3:9"}],"id":4470,"name":"VariableDeclaration","src":"2540:8:9"}],"id":4471,"name":"ParameterList","src":"2539:10:9"},{"attributes":{"parameters":[null]},"children":[],"id":4472,"name":"ParameterList","src":"2557:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4450,"type":"contract ENS","value":"ens"},"id":4473,"name":"Identifier","src":"2567:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4470,"type":"contract ENS","value":"_ens"},"id":4474,"name":"Identifier","src":"2573:4:9"}],"id":4475,"name":"Assignment","src":"2567:10:9"}],"id":4476,"name":"ExpressionStatement","src":"2567:10:9"}],"id":4477,"name":"Block","src":"2557:27:9"}],"id":4478,"name":"FunctionDefinition","src":"2528:56:9"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":4594,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4507,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4479,"name":"ElementaryTypeName","src":"3295:7:9"}],"id":4480,"name":"VariableDeclaration","src":"3295:12:9"},{"attributes":{"constant":false,"name":"target","scope":4507,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4481,"name":"ElementaryTypeName","src":"3309:7:9"}],"id":4482,"name":"VariableDeclaration","src":"3309:14:9"},{"attributes":{"constant":false,"name":"isAuthorised","scope":4507,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4483,"name":"ElementaryTypeName","src":"3325:4:9"}],"id":4484,"name":"VariableDeclaration","src":"3325:17:9"}],"id":4485,"name":"ParameterList","src":"3294:49:9"},{"attributes":{"parameters":[null]},"children":[],"id":4486,"name":"ParameterList","src":"3353:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4458,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4487,"name":"Identifier","src":"3363:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4480,"type":"bytes32","value":"node"},"id":4488,"name":"Identifier","src":"3378:4:9"}],"id":4492,"name":"IndexAccess","src":"3363:20:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4489,"name":"Identifier","src":"3384:3:9"}],"id":4490,"name":"MemberAccess","src":"3384:10:9"}],"id":4493,"name":"IndexAccess","src":"3363:32:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"address","value":"target"},"id":4491,"name":"Identifier","src":"3396:6:9"}],"id":4494,"name":"IndexAccess","src":"3363:40:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"bool","value":"isAuthorised"},"id":4495,"name":"Identifier","src":"3406:12:9"}],"id":4496,"name":"Assignment","src":"3363:55:9"}],"id":4497,"name":"ExpressionStatement","src":"3363:55:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4468,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":4498,"name":"Identifier","src":"3433:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4480,"type":"bytes32","value":"node"},"id":4499,"name":"Identifier","src":"3454:4:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4500,"name":"Identifier","src":"3460:3:9"}],"id":4501,"name":"MemberAccess","src":"3460:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"address","value":"target"},"id":4502,"name":"Identifier","src":"3472:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"bool","value":"isAuthorised"},"id":4503,"name":"Identifier","src":"3480:12:9"}],"id":4504,"name":"FunctionCall","src":"3433:60:9"}],"id":4505,"name":"EmitStatement","src":"3428:65:9"}],"id":4506,"name":"Block","src":"3353:147:9"}],"id":4507,"name":"FunctionDefinition","src":"3269:231:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":4594,"stateMutability":"view","superFunction":8710,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4536,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4508,"name":"ElementaryTypeName","src":"3528:7:9"}],"id":4509,"name":"VariableDeclaration","src":"3528:12:9"}],"id":4510,"name":"ParameterList","src":"3527:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":4536,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4511,"name":"ElementaryTypeName","src":"3564:4:9"}],"id":4512,"name":"VariableDeclaration","src":"3564:4:9"}],"id":4513,"name":"ParameterList","src":"3563:6:9"},{"children":[{"attributes":{"assignments":[4515]},"children":[{"attributes":{"constant":false,"name":"owner","scope":4535,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4514,"name":"ElementaryTypeName","src":"3580:7:9"}],"id":4515,"name":"VariableDeclaration","src":"3580:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":4389,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4450,"type":"contract ENS","value":"ens"},"id":4516,"name":"Identifier","src":"3596:3:9"}],"id":4517,"name":"MemberAccess","src":"3596:9:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4509,"type":"bytes32","value":"node"},"id":4518,"name":"Identifier","src":"3606:4:9"}],"id":4519,"name":"FunctionCall","src":"3596:15:9"}],"id":4520,"name":"VariableDeclarationStatement","src":"3580:31:9"},{"attributes":{"functionReturnParameters":4513},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"address","value":"owner"},"id":4521,"name":"Identifier","src":"3628:5:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4522,"name":"Identifier","src":"3637:3:9"}],"id":4523,"name":"MemberAccess","src":"3637:10:9"}],"id":4524,"name":"BinaryOperation","src":"3628:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4458,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4525,"name":"Identifier","src":"3651:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4509,"type":"bytes32","value":"node"},"id":4526,"name":"Identifier","src":"3666:4:9"}],"id":4527,"name":"IndexAccess","src":"3651:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"address","value":"owner"},"id":4528,"name":"Identifier","src":"3672:5:9"}],"id":4529,"name":"IndexAccess","src":"3651:27:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4530,"name":"Identifier","src":"3679:3:9"}],"id":4531,"name":"MemberAccess","src":"3679:10:9"}],"id":4532,"name":"IndexAccess","src":"3651:39:9"}],"id":4533,"name":"BinaryOperation","src":"3628:62:9"}],"id":4534,"name":"Return","src":"3621:69:9"}],"id":4535,"name":"Block","src":"3570:127:9"}],"id":4536,"name":"FunctionDefinition","src":"3506:191:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":4594,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":4593,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4537,"name":"ElementaryTypeName","src":"3722:5:9"}],"id":4538,"name":"ArrayTypeName","src":"3722:7:9"}],"id":4539,"name":"VariableDeclaration","src":"3722:21:9"}],"id":4540,"name":"ParameterList","src":"3721:23:9"},{"children":[{"attributes":{"constant":false,"name":"results","scope":4593,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4541,"name":"ElementaryTypeName","src":"3762:5:9"}],"id":4542,"name":"ArrayTypeName","src":"3762:7:9"}],"id":4543,"name":"VariableDeclaration","src":"3762:22:9"}],"id":4544,"name":"ParameterList","src":"3761:24:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"bytes memory[] memory","value":"results"},"id":4545,"name":"Identifier","src":"3796:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4546,"name":"ElementaryTypeName","src":"3810:5:9"}],"id":4547,"name":"ArrayTypeName","src":"3810:7:9"}],"id":4548,"name":"NewExpression","src":"3806:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4539,"type":"bytes calldata[] calldata","value":"data"},"id":4549,"name":"Identifier","src":"3818:4:9"}],"id":4550,"name":"MemberAccess","src":"3818:11:9"}],"id":4551,"name":"FunctionCall","src":"3806:24:9"}],"id":4552,"name":"Assignment","src":"3796:34:9"}],"id":4553,"name":"ExpressionStatement","src":"3796:34:9"},{"children":[{"attributes":{"assignments":[4555]},"children":[{"attributes":{"constant":false,"name":"i","scope":4589,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4554,"name":"ElementaryTypeName","src":"3844:4:9"}],"id":4555,"name":"VariableDeclaration","src":"3844:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4556,"name":"Literal","src":"3853:1:9"}],"id":4557,"name":"VariableDeclarationStatement","src":"3844:10:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"uint256","value":"i"},"id":4558,"name":"Identifier","src":"3856:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4539,"type":"bytes calldata[] calldata","value":"data"},"id":4559,"name":"Identifier","src":"3860:4:9"}],"id":4560,"name":"MemberAccess","src":"3860:11:9"}],"id":4561,"name":"BinaryOperation","src":"3856:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"uint256","value":"i"},"id":4562,"name":"Identifier","src":"3873:1:9"}],"id":4563,"name":"UnaryOperation","src":"3873:3:9"}],"id":4564,"name":"ExpressionStatement","src":"3873:3:9"},{"children":[{"attributes":{"assignments":[4566,4568]},"children":[{"attributes":{"constant":false,"name":"success","scope":4588,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4565,"name":"ElementaryTypeName","src":"3893:4:9"}],"id":4566,"name":"VariableDeclaration","src":"3893:12:9"},{"attributes":{"constant":false,"name":"result","scope":4588,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4567,"name":"ElementaryTypeName","src":"3907:5:9"}],"id":4568,"name":"VariableDeclaration","src":"3907:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$4594","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4569,"name":"ElementaryTypeNameExpression","src":"3930:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10167,"type":"contract PublicResolver","value":"this"},"id":4570,"name":"Identifier","src":"3938:4:9"}],"id":4571,"name":"FunctionCall","src":"3930:13:9"}],"id":4572,"name":"MemberAccess","src":"3930:26:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4539,"type":"bytes calldata[] calldata","value":"data"},"id":4573,"name":"Identifier","src":"3957:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"uint256","value":"i"},"id":4574,"name":"Identifier","src":"3962:1:9"}],"id":4575,"name":"IndexAccess","src":"3957:7:9"}],"id":4576,"name":"FunctionCall","src":"3930:35:9"}],"id":4577,"name":"VariableDeclarationStatement","src":"3892:73:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":4578,"name":"Identifier","src":"3979:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4566,"type":"bool","value":"success"},"id":4579,"name":"Identifier","src":"3987:7:9"}],"id":4580,"name":"FunctionCall","src":"3979:16:9"}],"id":4581,"name":"ExpressionStatement","src":"3979:16:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"bytes memory[] memory","value":"results"},"id":4582,"name":"Identifier","src":"4009:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"uint256","value":"i"},"id":4583,"name":"Identifier","src":"4017:1:9"}],"id":4584,"name":"IndexAccess","src":"4009:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4568,"type":"bytes memory","value":"result"},"id":4585,"name":"Identifier","src":"4022:6:9"}],"id":4586,"name":"Assignment","src":"4009:19:9"}],"id":4587,"name":"ExpressionStatement","src":"4009:19:9"}],"id":4588,"name":"Block","src":"3878:161:9"}],"id":4589,"name":"ForStatement","src":"3840:199:9"},{"attributes":{"functionReturnParameters":4544},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"bytes memory[] memory","value":"results"},"id":4590,"name":"Identifier","src":"4055:7:9"}],"id":4591,"name":"Return","src":"4048:14:9"}],"id":4592,"name":"Block","src":"3786:283:9"}],"id":4593,"name":"FunctionDefinition","src":"3703:366:9"}],"id":4594,"name":"ContractDefinition","src":"1897:2174:9"}],"id":4595,"name":"SourceUnit","src":"1401:2671:9"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[9373]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":8757,"name":"PragmaDirective","src":"0:24:10"},{"attributes":{"SourceUnit":10095,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":9374,"symbolAliases":[null],"unitAlias":""},"id":8758,"name":"ImportDirective","src":"26:29:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[9373],"name":"RRUtils","scope":9374},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10094,"type":"library ENSBytesUtils"},"id":8759,"name":"UserDefinedTypeName","src":"178:13:10"}],"id":8760,"name":"UsingForDirective","src":"172:26:10"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8807,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8761,"name":"ElementaryTypeName","src":"487:5:10"}],"id":8762,"name":"VariableDeclaration","src":"487:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8807,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8763,"name":"ElementaryTypeName","src":"506:4:10"}],"id":8764,"name":"VariableDeclaration","src":"506:11:10"}],"id":8765,"name":"ParameterList","src":"486:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8807,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8766,"name":"ElementaryTypeName","src":"541:4:10"}],"id":8767,"name":"VariableDeclaration","src":"541:4:10"}],"id":8768,"name":"ParameterList","src":"540:6:10"},{"children":[{"attributes":{"assignments":[8770]},"children":[{"attributes":{"constant":false,"name":"idx","scope":8806,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8769,"name":"ElementaryTypeName","src":"557:4:10"}],"id":8770,"name":"VariableDeclaration","src":"557:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8764,"type":"uint256","value":"offset"},"id":8771,"name":"Identifier","src":"568:6:10"}],"id":8772,"name":"VariableDeclarationStatement","src":"557:17:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8773,"name":"Literal","src":"591:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10098,"type":"function (bool) pure","value":"assert"},"id":8774,"name":"Identifier","src":"611:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8770,"type":"uint256","value":"idx"},"id":8775,"name":"Identifier","src":"618:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"bytes memory","value":"self"},"id":8776,"name":"Identifier","src":"624:4:10"}],"id":8777,"name":"MemberAccess","src":"624:11:10"}],"id":8778,"name":"BinaryOperation","src":"618:17:10"}],"id":8779,"name":"FunctionCall","src":"611:25:10"}],"id":8780,"name":"ExpressionStatement","src":"611:25:10"},{"attributes":{"assignments":[8782]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":8800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8781,"name":"ElementaryTypeName","src":"650:4:10"}],"id":8782,"name":"VariableDeclaration","src":"650:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"bytes memory","value":"self"},"id":8783,"name":"Identifier","src":"666:4:10"}],"id":8784,"name":"MemberAccess","src":"666:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8770,"type":"uint256","value":"idx"},"id":8785,"name":"Identifier","src":"681:3:10"}],"id":8786,"name":"FunctionCall","src":"666:19:10"}],"id":8787,"name":"VariableDeclarationStatement","src":"650:35:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8770,"type":"uint256","value":"idx"},"id":8788,"name":"Identifier","src":"699:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8782,"type":"uint256","value":"labelLen"},"id":8789,"name":"Identifier","src":"706:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8790,"name":"Literal","src":"717:1:10"}],"id":8791,"name":"BinaryOperation","src":"706:12:10"}],"id":8792,"name":"Assignment","src":"699:19:10"}],"id":8793,"name":"ExpressionStatement","src":"699:19:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8782,"type":"uint256","value":"labelLen"},"id":8794,"name":"Identifier","src":"736:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8795,"name":"Literal","src":"748:1:10"}],"id":8796,"name":"BinaryOperation","src":"736:13:10"},{"children":[{"id":8797,"name":"Break","src":"769:5:10"}],"id":8798,"name":"Block","src":"751:38:10"}],"id":8799,"name":"IfStatement","src":"732:57:10"}],"id":8800,"name":"Block","src":"597:202:10"}],"id":8801,"name":"WhileStatement","src":"584:215:10"},{"attributes":{"functionReturnParameters":8768},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8770,"type":"uint256","value":"idx"},"id":8802,"name":"Identifier","src":"815:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8764,"type":"uint256","value":"offset"},"id":8803,"name":"Identifier","src":"821:6:10"}],"id":8804,"name":"BinaryOperation","src":"815:12:10"}],"id":8805,"name":"Return","src":"808:19:10"}],"id":8806,"name":"Block","src":"547:287:10"}],"id":8807,"name":"FunctionDefinition","src":"467:367:10"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8830,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8808,"name":"ElementaryTypeName","src":"1073:5:10"}],"id":8809,"name":"VariableDeclaration","src":"1073:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8830,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8810,"name":"ElementaryTypeName","src":"1092:4:10"}],"id":8811,"name":"VariableDeclaration","src":"1092:11:10"}],"id":8812,"name":"ParameterList","src":"1072:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8830,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8813,"name":"ElementaryTypeName","src":"1127:5:10"}],"id":8814,"name":"VariableDeclaration","src":"1127:16:10"}],"id":8815,"name":"ParameterList","src":"1126:18:10"},{"children":[{"attributes":{"assignments":[8817]},"children":[{"attributes":{"constant":false,"name":"len","scope":8829,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8816,"name":"ElementaryTypeName","src":"1155:4:10"}],"id":8817,"name":"VariableDeclaration","src":"1155:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8807,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":8818,"name":"Identifier","src":"1166:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8809,"type":"bytes memory","value":"self"},"id":8819,"name":"Identifier","src":"1177:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8811,"type":"uint256","value":"offset"},"id":8820,"name":"Identifier","src":"1183:6:10"}],"id":8821,"name":"FunctionCall","src":"1166:24:10"}],"id":8822,"name":"VariableDeclarationStatement","src":"1155:35:10"},{"attributes":{"functionReturnParameters":8815},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9871,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8809,"type":"bytes memory","value":"self"},"id":8823,"name":"Identifier","src":"1207:4:10"}],"id":8824,"name":"MemberAccess","src":"1207:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8811,"type":"uint256","value":"offset"},"id":8825,"name":"Identifier","src":"1222:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8817,"type":"uint256","value":"len"},"id":8826,"name":"Identifier","src":"1230:3:10"}],"id":8827,"name":"FunctionCall","src":"1207:27:10"}],"id":8828,"name":"Return","src":"1200:34:10"}],"id":8829,"name":"Block","src":"1145:96:10"}],"id":8830,"name":"FunctionDefinition","src":"1055:186:10"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8879,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8831,"name":"ElementaryTypeName","src":"1541:5:10"}],"id":8832,"name":"VariableDeclaration","src":"1541:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8879,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8833,"name":"ElementaryTypeName","src":"1560:4:10"}],"id":8834,"name":"VariableDeclaration","src":"1560:11:10"}],"id":8835,"name":"ParameterList","src":"1540:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8879,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8836,"name":"ElementaryTypeName","src":"1595:4:10"}],"id":8837,"name":"VariableDeclaration","src":"1595:4:10"}],"id":8838,"name":"ParameterList","src":"1594:6:10"},{"children":[{"attributes":{"assignments":[8840]},"children":[{"attributes":{"constant":false,"name":"count","scope":8878,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8839,"name":"ElementaryTypeName","src":"1611:4:10"}],"id":8840,"name":"VariableDeclaration","src":"1611:10:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8841,"name":"Literal","src":"1624:1:10"}],"id":8842,"name":"VariableDeclarationStatement","src":"1611:14:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8843,"name":"Literal","src":"1642:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10098,"type":"function (bool) pure","value":"assert"},"id":8844,"name":"Identifier","src":"1662:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8834,"type":"uint256","value":"offset"},"id":8845,"name":"Identifier","src":"1669:6:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8832,"type":"bytes memory","value":"self"},"id":8846,"name":"Identifier","src":"1678:4:10"}],"id":8847,"name":"MemberAccess","src":"1678:11:10"}],"id":8848,"name":"BinaryOperation","src":"1669:20:10"}],"id":8849,"name":"FunctionCall","src":"1662:28:10"}],"id":8850,"name":"ExpressionStatement","src":"1662:28:10"},{"attributes":{"assignments":[8852]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":8874,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8851,"name":"ElementaryTypeName","src":"1704:4:10"}],"id":8852,"name":"VariableDeclaration","src":"1704:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8832,"type":"bytes memory","value":"self"},"id":8853,"name":"Identifier","src":"1720:4:10"}],"id":8854,"name":"MemberAccess","src":"1720:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8834,"type":"uint256","value":"offset"},"id":8855,"name":"Identifier","src":"1735:6:10"}],"id":8856,"name":"FunctionCall","src":"1720:22:10"}],"id":8857,"name":"VariableDeclarationStatement","src":"1704:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8834,"type":"uint256","value":"offset"},"id":8858,"name":"Identifier","src":"1756:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8852,"type":"uint256","value":"labelLen"},"id":8859,"name":"Identifier","src":"1766:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8860,"name":"Literal","src":"1777:1:10"}],"id":8861,"name":"BinaryOperation","src":"1766:12:10"}],"id":8862,"name":"Assignment","src":"1756:22:10"}],"id":8863,"name":"ExpressionStatement","src":"1756:22:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8852,"type":"uint256","value":"labelLen"},"id":8864,"name":"Identifier","src":"1796:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8865,"name":"Literal","src":"1808:1:10"}],"id":8866,"name":"BinaryOperation","src":"1796:13:10"},{"children":[{"id":8867,"name":"Break","src":"1829:5:10"}],"id":8868,"name":"Block","src":"1811:38:10"}],"id":8869,"name":"IfStatement","src":"1792:57:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8840,"type":"uint256","value":"count"},"id":8870,"name":"Identifier","src":"1862:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8871,"name":"Literal","src":"1871:1:10"}],"id":8872,"name":"Assignment","src":"1862:10:10"}],"id":8873,"name":"ExpressionStatement","src":"1862:10:10"}],"id":8874,"name":"Block","src":"1648:235:10"}],"id":8875,"name":"WhileStatement","src":"1635:248:10"},{"attributes":{"functionReturnParameters":8838},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8840,"type":"uint256","value":"count"},"id":8876,"name":"Identifier","src":"1899:5:10"}],"id":8877,"name":"Return","src":"1892:12:10"}],"id":8878,"name":"Block","src":"1601:310:10"}],"id":8879,"name":"FunctionDefinition","src":"1521:390:10"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":9373,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":8894,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8880,"name":"ElementaryTypeName","src":"2006:5:10"}],"id":8881,"name":"VariableDeclaration","src":"2006:10:10"},{"attributes":{"constant":false,"name":"offset","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8882,"name":"ElementaryTypeName","src":"2026:4:10"}],"id":8883,"name":"VariableDeclaration","src":"2026:11:10"},{"attributes":{"constant":false,"name":"dnstype","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":8884,"name":"ElementaryTypeName","src":"2047:6:10"}],"id":8885,"name":"VariableDeclaration","src":"2047:14:10"},{"attributes":{"constant":false,"name":"class","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":8886,"name":"ElementaryTypeName","src":"2071:6:10"}],"id":8887,"name":"VariableDeclaration","src":"2071:12:10"},{"attributes":{"constant":false,"name":"ttl","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":8888,"name":"ElementaryTypeName","src":"2093:6:10"}],"id":8889,"name":"VariableDeclaration","src":"2093:10:10"},{"attributes":{"constant":false,"name":"rdataOffset","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8890,"name":"ElementaryTypeName","src":"2113:4:10"}],"id":8891,"name":"VariableDeclaration","src":"2113:16:10"},{"attributes":{"constant":false,"name":"nextOffset","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8892,"name":"ElementaryTypeName","src":"2139:4:10"}],"id":8893,"name":"VariableDeclaration","src":"2139:15:10"}],"id":8894,"name":"StructDefinition","src":"1978:183:10"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8920,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8895,"name":"ElementaryTypeName","src":"2387:5:10"}],"id":8896,"name":"VariableDeclaration","src":"2387:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8897,"name":"ElementaryTypeName","src":"2406:4:10"}],"id":8898,"name":"VariableDeclaration","src":"2406:11:10"}],"id":8899,"name":"ParameterList","src":"2386:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8920,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":8900,"name":"UserDefinedTypeName","src":"2442:10:10"}],"id":8901,"name":"VariableDeclaration","src":"2442:21:10"}],"id":8902,"name":"ParameterList","src":"2441:23:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8901,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8903,"name":"Identifier","src":"2475:3:10"}],"id":8905,"name":"MemberAccess","src":"2475:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8896,"type":"bytes memory","value":"self"},"id":8906,"name":"Identifier","src":"2486:4:10"}],"id":8907,"name":"Assignment","src":"2475:15:10"}],"id":8908,"name":"ExpressionStatement","src":"2475:15:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":8893,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8901,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8909,"name":"Identifier","src":"2500:3:10"}],"id":8911,"name":"MemberAccess","src":"2500:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8898,"type":"uint256","value":"offset"},"id":8912,"name":"Identifier","src":"2517:6:10"}],"id":8913,"name":"Assignment","src":"2500:23:10"}],"id":8914,"name":"ExpressionStatement","src":"2500:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$8894_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9037,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":8915,"name":"Identifier","src":"2533:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8901,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8916,"name":"Identifier","src":"2538:3:10"}],"id":8917,"name":"FunctionCall","src":"2533:9:10"}],"id":8918,"name":"ExpressionStatement","src":"2533:9:10"}],"id":8919,"name":"Block","src":"2465:84:10"}],"id":8920,"name":"FunctionDefinition","src":"2367:182:10"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":8935,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":8921,"name":"UserDefinedTypeName","src":"2734:10:10"}],"id":8922,"name":"VariableDeclaration","src":"2734:22:10"}],"id":8923,"name":"ParameterList","src":"2733:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8935,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8924,"name":"ElementaryTypeName","src":"2780:4:10"}],"id":8925,"name":"VariableDeclaration","src":"2780:4:10"}],"id":8926,"name":"ParameterList","src":"2779:6:10"},{"children":[{"attributes":{"functionReturnParameters":8926},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8922,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8927,"name":"Identifier","src":"2803:4:10"}],"id":8928,"name":"MemberAccess","src":"2803:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8922,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8929,"name":"Identifier","src":"2818:4:10"}],"id":8930,"name":"MemberAccess","src":"2818:9:10"}],"id":8931,"name":"MemberAccess","src":"2818:16:10"}],"id":8932,"name":"BinaryOperation","src":"2803:31:10"}],"id":8933,"name":"Return","src":"2796:38:10"}],"id":8934,"name":"Block","src":"2786:55:10"}],"id":8935,"name":"FunctionDefinition","src":"2720:121:10"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9037,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":8936,"name":"UserDefinedTypeName","src":"2978:10:10"}],"id":8937,"name":"VariableDeclaration","src":"2978:22:10"}],"id":8938,"name":"ParameterList","src":"2977:24:10"},{"attributes":{"parameters":[null]},"children":[],"id":8939,"name":"ParameterList","src":"3016:0:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8940,"name":"Identifier","src":"3026:4:10"}],"id":8942,"name":"MemberAccess","src":"3026:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":8893,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8943,"name":"Identifier","src":"3040:4:10"}],"id":8944,"name":"MemberAccess","src":"3040:15:10"}],"id":8945,"name":"Assignment","src":"3026:29:10"}],"id":8946,"name":"ExpressionStatement","src":"3026:29:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8947,"name":"Identifier","src":"3069:4:10"}],"id":8948,"name":"MemberAccess","src":"3069:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8949,"name":"Identifier","src":"3084:4:10"}],"id":8950,"name":"MemberAccess","src":"3084:9:10"}],"id":8951,"name":"MemberAccess","src":"3084:16:10"}],"id":8952,"name":"BinaryOperation","src":"3069:31:10"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":8939},"id":8953,"name":"Return","src":"3116:7:10"}],"id":8954,"name":"Block","src":"3102:31:10"}],"id":8955,"name":"IfStatement","src":"3065:68:10"},{"attributes":{"assignments":[8957]},"children":[{"attributes":{"constant":false,"name":"off","scope":9036,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8956,"name":"ElementaryTypeName","src":"3168:4:10"}],"id":8957,"name":"VariableDeclaration","src":"3168:8:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8958,"name":"Identifier","src":"3179:4:10"}],"id":8959,"name":"MemberAccess","src":"3179:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8807,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":8960,"name":"Identifier","src":"3193:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8961,"name":"Identifier","src":"3204:4:10"}],"id":8962,"name":"MemberAccess","src":"3204:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8963,"name":"Identifier","src":"3215:4:10"}],"id":8964,"name":"MemberAccess","src":"3215:11:10"}],"id":8965,"name":"FunctionCall","src":"3193:34:10"}],"id":8966,"name":"BinaryOperation","src":"3179:48:10"}],"id":8967,"name":"VariableDeclarationStatement","src":"3168:59:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":8885,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8968,"name":"Identifier","src":"3275:4:10"}],"id":8970,"name":"MemberAccess","src":"3275:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9700,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8971,"name":"Identifier","src":"3290:4:10"}],"id":8972,"name":"MemberAccess","src":"3290:9:10"}],"id":8973,"name":"MemberAccess","src":"3290:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":8974,"name":"Identifier","src":"3311:3:10"}],"id":8975,"name":"FunctionCall","src":"3290:25:10"}],"id":8976,"name":"Assignment","src":"3275:40:10"}],"id":8977,"name":"ExpressionStatement","src":"3275:40:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":8978,"name":"Identifier","src":"3325:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8979,"name":"Literal","src":"3332:1:10"}],"id":8980,"name":"Assignment","src":"3325:8:10"}],"id":8981,"name":"ExpressionStatement","src":"3325:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":8887,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8982,"name":"Identifier","src":"3343:4:10"}],"id":8984,"name":"MemberAccess","src":"3343:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9700,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8985,"name":"Identifier","src":"3356:4:10"}],"id":8986,"name":"MemberAccess","src":"3356:9:10"}],"id":8987,"name":"MemberAccess","src":"3356:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":8988,"name":"Identifier","src":"3377:3:10"}],"id":8989,"name":"FunctionCall","src":"3356:25:10"}],"id":8990,"name":"Assignment","src":"3343:38:10"}],"id":8991,"name":"ExpressionStatement","src":"3343:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":8992,"name":"Identifier","src":"3391:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8993,"name":"Literal","src":"3398:1:10"}],"id":8994,"name":"Assignment","src":"3391:8:10"}],"id":8995,"name":"ExpressionStatement","src":"3391:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":8889,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8996,"name":"Identifier","src":"3409:4:10"}],"id":8998,"name":"MemberAccess","src":"3409:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":9720,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8999,"name":"Identifier","src":"3420:4:10"}],"id":9000,"name":"MemberAccess","src":"3420:9:10"}],"id":9001,"name":"MemberAccess","src":"3420:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9002,"name":"Identifier","src":"3441:3:10"}],"id":9003,"name":"FunctionCall","src":"3420:25:10"}],"id":9004,"name":"Assignment","src":"3409:36:10"}],"id":9005,"name":"ExpressionStatement","src":"3409:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9006,"name":"Identifier","src":"3455:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9007,"name":"Literal","src":"3462:1:10"}],"id":9008,"name":"Assignment","src":"3455:8:10"}],"id":9009,"name":"ExpressionStatement","src":"3455:8:10"},{"attributes":{"assignments":[9011]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":9036,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9010,"name":"ElementaryTypeName","src":"3500:4:10"}],"id":9011,"name":"VariableDeclaration","src":"3500:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9700,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9012,"name":"Identifier","src":"3519:4:10"}],"id":9013,"name":"MemberAccess","src":"3519:9:10"}],"id":9014,"name":"MemberAccess","src":"3519:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9015,"name":"Identifier","src":"3540:3:10"}],"id":9016,"name":"FunctionCall","src":"3519:25:10"}],"id":9017,"name":"VariableDeclarationStatement","src":"3500:44:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9018,"name":"Identifier","src":"3554:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9019,"name":"Literal","src":"3561:1:10"}],"id":9020,"name":"Assignment","src":"3554:8:10"}],"id":9021,"name":"ExpressionStatement","src":"3554:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":8891,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9022,"name":"Identifier","src":"3572:4:10"}],"id":9024,"name":"MemberAccess","src":"3572:16:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9025,"name":"Identifier","src":"3591:3:10"}],"id":9026,"name":"Assignment","src":"3572:22:10"}],"id":9027,"name":"ExpressionStatement","src":"3572:22:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":8893,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9028,"name":"Identifier","src":"3604:4:10"}],"id":9030,"name":"MemberAccess","src":"3604:15:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9031,"name":"Identifier","src":"3622:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9011,"type":"uint256","value":"rdataLength"},"id":9032,"name":"Identifier","src":"3628:11:10"}],"id":9033,"name":"BinaryOperation","src":"3622:17:10"}],"id":9034,"name":"Assignment","src":"3604:35:10"}],"id":9035,"name":"ExpressionStatement","src":"3604:35:10"}],"id":9036,"name":"Block","src":"3016:630:10"}],"id":9037,"name":"FunctionDefinition","src":"2964:682:10"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9058,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":9038,"name":"UserDefinedTypeName","src":"3836:10:10"}],"id":9039,"name":"VariableDeclaration","src":"3836:22:10"}],"id":9040,"name":"ParameterList","src":"3835:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9058,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9041,"name":"ElementaryTypeName","src":"3882:5:10"}],"id":9042,"name":"VariableDeclaration","src":"3882:12:10"}],"id":9043,"name":"ParameterList","src":"3881:14:10"},{"children":[{"attributes":{"functionReturnParameters":9043},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9871,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9039,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9044,"name":"Identifier","src":"3913:4:10"}],"id":9045,"name":"MemberAccess","src":"3913:9:10"}],"id":9046,"name":"MemberAccess","src":"3913:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9039,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9047,"name":"Identifier","src":"3933:4:10"}],"id":9048,"name":"MemberAccess","src":"3933:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8807,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9049,"name":"Identifier","src":"3946:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9039,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9050,"name":"Identifier","src":"3957:4:10"}],"id":9051,"name":"MemberAccess","src":"3957:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9039,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9052,"name":"Identifier","src":"3968:4:10"}],"id":9053,"name":"MemberAccess","src":"3968:11:10"}],"id":9054,"name":"FunctionCall","src":"3946:34:10"}],"id":9055,"name":"FunctionCall","src":"3913:68:10"}],"id":9056,"name":"Return","src":"3906:75:10"}],"id":9057,"name":"Block","src":"3896:92:10"}],"id":9058,"name":"FunctionDefinition","src":"3822:166:10"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9078,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":9059,"name":"UserDefinedTypeName","src":"4176:10:10"}],"id":9060,"name":"VariableDeclaration","src":"4176:22:10"}],"id":9061,"name":"ParameterList","src":"4175:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9078,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9062,"name":"ElementaryTypeName","src":"4222:5:10"}],"id":9063,"name":"VariableDeclaration","src":"4222:12:10"}],"id":9064,"name":"ParameterList","src":"4221:14:10"},{"children":[{"attributes":{"functionReturnParameters":9064},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9871,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9065,"name":"Identifier","src":"4253:4:10"}],"id":9066,"name":"MemberAccess","src":"4253:9:10"}],"id":9067,"name":"MemberAccess","src":"4253:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":8891,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9068,"name":"Identifier","src":"4273:4:10"}],"id":9069,"name":"MemberAccess","src":"4273:16:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":8893,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9070,"name":"Identifier","src":"4291:4:10"}],"id":9071,"name":"MemberAccess","src":"4291:15:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":8891,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9072,"name":"Identifier","src":"4309:4:10"}],"id":9073,"name":"MemberAccess","src":"4309:16:10"}],"id":9074,"name":"BinaryOperation","src":"4291:34:10"}],"id":9075,"name":"FunctionCall","src":"4253:73:10"}],"id":9076,"name":"Return","src":"4246:80:10"}],"id":9077,"name":"Block","src":"4236:97:10"}],"id":9078,"name":"FunctionDefinition","src":"4161:172:10"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9198,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9079,"name":"ElementaryTypeName","src":"4675:5:10"}],"id":9080,"name":"VariableDeclaration","src":"4675:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9081,"name":"ElementaryTypeName","src":"4694:4:10"}],"id":9082,"name":"VariableDeclaration","src":"4694:11:10"},{"attributes":{"constant":false,"name":"rrtype","scope":9198,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9083,"name":"ElementaryTypeName","src":"4707:6:10"}],"id":9084,"name":"VariableDeclaration","src":"4707:13:10"}],"id":9085,"name":"ParameterList","src":"4674:47:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9198,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9086,"name":"ElementaryTypeName","src":"4745:4:10"}],"id":9087,"name":"VariableDeclaration","src":"4745:4:10"}],"id":9088,"name":"ParameterList","src":"4744:6:10"},{"children":[{"attributes":{"assignments":[9090]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":9197,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9089,"name":"ElementaryTypeName","src":"4761:5:10"}],"id":9090,"name":"VariableDeclaration","src":"4761:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9091,"name":"ElementaryTypeNameExpression","src":"4780:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9084,"type":"uint16","value":"rrtype"},"id":9092,"name":"Identifier","src":"4786:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9093,"name":"Literal","src":"4796:1:10"}],"id":9094,"name":"BinaryOperation","src":"4786:11:10"}],"id":9095,"name":"FunctionCall","src":"4780:18:10"}],"id":9096,"name":"VariableDeclarationStatement","src":"4761:37:10"},{"attributes":{"assignments":[9098]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":9197,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9097,"name":"ElementaryTypeName","src":"4808:5:10"}],"id":9098,"name":"VariableDeclaration","src":"4808:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9099,"name":"ElementaryTypeNameExpression","src":"4827:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9084,"type":"uint16","value":"rrtype"},"id":9100,"name":"Identifier","src":"4834:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":9101,"name":"Literal","src":"4843:4:10"}],"id":9102,"name":"BinaryOperation","src":"4834:13:10"}],"id":9103,"name":"TupleExpression","src":"4833:15:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9104,"name":"Literal","src":"4851:1:10"}],"id":9105,"name":"BinaryOperation","src":"4833:19:10"}],"id":9106,"name":"FunctionCall","src":"4827:26:10"}],"id":9107,"name":"VariableDeclarationStatement","src":"4808:45:10"},{"attributes":{"assignments":[9109]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":9197,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9108,"name":"ElementaryTypeName","src":"4863:5:10"}],"id":9109,"name":"VariableDeclaration","src":"4863:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9110,"name":"ElementaryTypeNameExpression","src":"4885:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9111,"name":"ElementaryTypeNameExpression","src":"4891:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9112,"name":"Literal","src":"4897:1:10"}],"id":9113,"name":"FunctionCall","src":"4891:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9114,"name":"ElementaryTypeNameExpression","src":"4904:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":9115,"name":"Literal","src":"4910:1:10"}],"id":9116,"name":"FunctionCall","src":"4904:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9117,"name":"ElementaryTypeNameExpression","src":"4915:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9084,"type":"uint16","value":"rrtype"},"id":9118,"name":"Identifier","src":"4921:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":9119,"name":"Literal","src":"4930:3:10"}],"id":9120,"name":"BinaryOperation","src":"4921:12:10"}],"id":9121,"name":"FunctionCall","src":"4915:19:10"}],"id":9122,"name":"BinaryOperation","src":"4904:30:10"}],"id":9123,"name":"TupleExpression","src":"4903:32:10"}],"id":9124,"name":"BinaryOperation","src":"4891:44:10"}],"id":9125,"name":"FunctionCall","src":"4885:51:10"}],"id":9126,"name":"VariableDeclarationStatement","src":"4863:73:10"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[9128]},"children":[{"attributes":{"constant":false,"name":"off","scope":9194,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9127,"name":"ElementaryTypeName","src":"4951:4:10"}],"id":9128,"name":"VariableDeclaration","src":"4951:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9082,"type":"uint256","value":"offset"},"id":9129,"name":"Identifier","src":"4962:6:10"}],"id":9130,"name":"VariableDeclarationStatement","src":"4951:17:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9131,"name":"Identifier","src":"4970:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9080,"type":"bytes memory","value":"self"},"id":9132,"name":"Identifier","src":"4976:4:10"}],"id":9133,"name":"MemberAccess","src":"4976:11:10"}],"id":9134,"name":"BinaryOperation","src":"4970:17:10"},{"children":[{"attributes":{"assignments":[9136]},"children":[{"attributes":{"constant":false,"name":"window","scope":9193,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9135,"name":"ElementaryTypeName","src":"5004:5:10"}],"id":9136,"name":"VariableDeclaration","src":"5004:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9080,"type":"bytes memory","value":"self"},"id":9137,"name":"Identifier","src":"5019:4:10"}],"id":9138,"name":"MemberAccess","src":"5019:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9139,"name":"Identifier","src":"5034:3:10"}],"id":9140,"name":"FunctionCall","src":"5019:19:10"}],"id":9141,"name":"VariableDeclarationStatement","src":"5004:34:10"},{"attributes":{"assignments":[9143]},"children":[{"attributes":{"constant":false,"name":"len","scope":9193,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9142,"name":"ElementaryTypeName","src":"5052:5:10"}],"id":9143,"name":"VariableDeclaration","src":"5052:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9080,"type":"bytes memory","value":"self"},"id":9144,"name":"Identifier","src":"5064:4:10"}],"id":9145,"name":"MemberAccess","src":"5064:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9146,"name":"Identifier","src":"5079:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9147,"name":"Literal","src":"5085:1:10"}],"id":9148,"name":"BinaryOperation","src":"5079:7:10"}],"id":9149,"name":"FunctionCall","src":"5064:23:10"}],"id":9150,"name":"VariableDeclarationStatement","src":"5052:35:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9090,"type":"uint8","value":"typeWindow"},"id":9151,"name":"Identifier","src":"5105:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"uint8","value":"window"},"id":9152,"name":"Identifier","src":"5118:6:10"}],"id":9153,"name":"BinaryOperation","src":"5105:19:10"},{"children":[{"attributes":{"functionReturnParameters":9088},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9154,"name":"Literal","src":"5213:5:10"}],"id":9155,"name":"Return","src":"5206:12:10"}],"id":9156,"name":"Block","src":"5126:107:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9090,"type":"uint8","value":"typeWindow"},"id":9157,"name":"Identifier","src":"5243:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"uint8","value":"window"},"id":9158,"name":"Identifier","src":"5257:6:10"}],"id":9159,"name":"BinaryOperation","src":"5243:20:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9143,"type":"uint8","value":"len"},"id":9160,"name":"Identifier","src":"5329:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9161,"name":"Literal","src":"5335:1:10"}],"id":9162,"name":"BinaryOperation","src":"5329:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9098,"type":"uint8","value":"windowByte"},"id":9163,"name":"Identifier","src":"5340:10:10"}],"id":9164,"name":"BinaryOperation","src":"5329:21:10"},{"children":[{"attributes":{"functionReturnParameters":9088},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9165,"name":"Literal","src":"5443:5:10"}],"id":9166,"name":"Return","src":"5436:12:10"}],"id":9167,"name":"Block","src":"5352:115:10"}],"id":9168,"name":"IfStatement","src":"5325:142:10"},{"attributes":{"functionReturnParameters":9088},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9080,"type":"bytes memory","value":"self"},"id":9169,"name":"Identifier","src":"5492:4:10"}],"id":9170,"name":"MemberAccess","src":"5492:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9171,"name":"Identifier","src":"5507:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9098,"type":"uint8","value":"windowByte"},"id":9172,"name":"Identifier","src":"5513:10:10"}],"id":9173,"name":"BinaryOperation","src":"5507:16:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9174,"name":"Literal","src":"5526:1:10"}],"id":9175,"name":"BinaryOperation","src":"5507:20:10"}],"id":9176,"name":"FunctionCall","src":"5492:36:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9109,"type":"uint8","value":"windowBitmask"},"id":9177,"name":"Identifier","src":"5531:13:10"}],"id":9178,"name":"BinaryOperation","src":"5492:52:10"}],"id":9179,"name":"TupleExpression","src":"5491:54:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9180,"name":"Literal","src":"5549:1:10"}],"id":9181,"name":"BinaryOperation","src":"5491:59:10"}],"id":9182,"name":"Return","src":"5484:66:10"}],"id":9183,"name":"Block","src":"5265:300:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9184,"name":"Identifier","src":"5630:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9143,"type":"uint8","value":"len"},"id":9185,"name":"Identifier","src":"5637:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9186,"name":"Literal","src":"5643:1:10"}],"id":9187,"name":"BinaryOperation","src":"5637:7:10"}],"id":9188,"name":"Assignment","src":"5630:14:10"}],"id":9189,"name":"ExpressionStatement","src":"5630:14:10"}],"id":9190,"name":"Block","src":"5571:88:10"}],"id":9191,"name":"IfStatement","src":"5239:420:10"}],"id":9192,"name":"IfStatement","src":"5101:558:10"}],"id":9193,"name":"Block","src":"4990:679:10"}],"id":9194,"name":"ForStatement","src":"4946:723:10"},{"attributes":{"functionReturnParameters":9088},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9195,"name":"Literal","src":"5686:5:10"}],"id":9196,"name":"Return","src":"5679:12:10"}],"id":9197,"name":"Block","src":"4751:947:10"}],"id":9198,"name":"FunctionDefinition","src":"4650:1048:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9353,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9199,"name":"ElementaryTypeName","src":"5726:5:10"}],"id":9200,"name":"VariableDeclaration","src":"5726:17:10"},{"attributes":{"constant":false,"name":"other","scope":9353,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9201,"name":"ElementaryTypeName","src":"5745:5:10"}],"id":9202,"name":"VariableDeclaration","src":"5745:18:10"}],"id":9203,"name":"ParameterList","src":"5725:39:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9353,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9204,"name":"ElementaryTypeName","src":"5788:3:10"}],"id":9205,"name":"VariableDeclaration","src":"5788:3:10"}],"id":9206,"name":"ParameterList","src":"5787:5:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9664,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9207,"name":"Identifier","src":"5807:4:10"}],"id":9208,"name":"MemberAccess","src":"5807:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9209,"name":"Identifier","src":"5819:5:10"}],"id":9210,"name":"FunctionCall","src":"5807:18:10"},{"children":[{"attributes":{"functionReturnParameters":9206},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9211,"name":"Literal","src":"5848:1:10"}],"id":9212,"name":"Return","src":"5841:8:10"}],"id":9213,"name":"Block","src":"5827:33:10"}],"id":9214,"name":"IfStatement","src":"5803:57:10"},{"attributes":{"assignments":[9216],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9215,"name":"ElementaryTypeName","src":"5870:4:10"}],"id":9216,"name":"VariableDeclaration","src":"5870:8:10"}],"id":9217,"name":"VariableDeclarationStatement","src":"5870:8:10"},{"attributes":{"assignments":[9219],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9218,"name":"ElementaryTypeName","src":"5888:4:10"}],"id":9219,"name":"VariableDeclaration","src":"5888:13:10"}],"id":9220,"name":"VariableDeclarationStatement","src":"5888:13:10"},{"attributes":{"assignments":[9222],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9221,"name":"ElementaryTypeName","src":"5911:4:10"}],"id":9222,"name":"VariableDeclaration","src":"5911:12:10"}],"id":9223,"name":"VariableDeclarationStatement","src":"5911:12:10"},{"attributes":{"assignments":[9225],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9224,"name":"ElementaryTypeName","src":"5933:4:10"}],"id":9225,"name":"VariableDeclaration","src":"5933:17:10"}],"id":9226,"name":"VariableDeclarationStatement","src":"5933:17:10"},{"attributes":{"assignments":[9228]},"children":[{"attributes":{"constant":false,"name":"counts","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9227,"name":"ElementaryTypeName","src":"5960:4:10"}],"id":9228,"name":"VariableDeclaration","src":"5960:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":8879,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9229,"name":"Identifier","src":"5974:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9230,"name":"Identifier","src":"5985:4:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9231,"name":"Literal","src":"5991:1:10"}],"id":9232,"name":"FunctionCall","src":"5974:19:10"}],"id":9233,"name":"VariableDeclarationStatement","src":"5960:33:10"},{"attributes":{"assignments":[9235]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9234,"name":"ElementaryTypeName","src":"6003:4:10"}],"id":9235,"name":"VariableDeclaration","src":"6003:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":8879,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9236,"name":"Identifier","src":"6022:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9237,"name":"Identifier","src":"6033:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9238,"name":"Literal","src":"6040:1:10"}],"id":9239,"name":"FunctionCall","src":"6022:20:10"}],"id":9240,"name":"VariableDeclarationStatement","src":"6003:39:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9241,"name":"Identifier","src":"6153:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"uint256","value":"othercounts"},"id":9242,"name":"Identifier","src":"6162:11:10"}],"id":9243,"name":"BinaryOperation","src":"6153:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"prevoff"},"id":9244,"name":"Identifier","src":"6189:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9245,"name":"Identifier","src":"6199:3:10"}],"id":9246,"name":"Assignment","src":"6189:13:10"}],"id":9247,"name":"ExpressionStatement","src":"6189:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9248,"name":"Identifier","src":"6216:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9372,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9249,"name":"Identifier","src":"6222:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9250,"name":"Identifier","src":"6231:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9251,"name":"Identifier","src":"6237:3:10"}],"id":9252,"name":"FunctionCall","src":"6222:19:10"}],"id":9253,"name":"Assignment","src":"6216:25:10"}],"id":9254,"name":"ExpressionStatement","src":"6216:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9255,"name":"Identifier","src":"6255:6:10"}],"id":9256,"name":"UnaryOperation","src":"6255:8:10"}],"id":9257,"name":"ExpressionStatement","src":"6255:8:10"}],"id":9258,"name":"Block","src":"6175:99:10"}],"id":9259,"name":"WhileStatement","src":"6146:128:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"uint256","value":"othercounts"},"id":9260,"name":"Identifier","src":"6291:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9261,"name":"Identifier","src":"6305:6:10"}],"id":9262,"name":"BinaryOperation","src":"6291:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"otherprevoff"},"id":9263,"name":"Identifier","src":"6327:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9264,"name":"Identifier","src":"6342:8:10"}],"id":9265,"name":"Assignment","src":"6327:23:10"}],"id":9266,"name":"ExpressionStatement","src":"6327:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9267,"name":"Identifier","src":"6364:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9372,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9268,"name":"Identifier","src":"6375:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9269,"name":"Identifier","src":"6384:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9270,"name":"Identifier","src":"6391:8:10"}],"id":9271,"name":"FunctionCall","src":"6375:25:10"}],"id":9272,"name":"Assignment","src":"6364:36:10"}],"id":9273,"name":"ExpressionStatement","src":"6364:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"uint256","value":"othercounts"},"id":9274,"name":"Identifier","src":"6414:11:10"}],"id":9275,"name":"UnaryOperation","src":"6414:13:10"}],"id":9276,"name":"ExpressionStatement","src":"6414:13:10"}],"id":9277,"name":"Block","src":"6313:125:10"}],"id":9278,"name":"WhileStatement","src":"6284:154:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9279,"name":"Identifier","src":"6513:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9280,"name":"Literal","src":"6522:1:10"}],"id":9281,"name":"BinaryOperation","src":"6513:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9610,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9282,"name":"Identifier","src":"6528:4:10"}],"id":9283,"name":"MemberAccess","src":"6528:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9284,"name":"Identifier","src":"6540:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9285,"name":"Identifier","src":"6545:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9286,"name":"Identifier","src":"6552:8:10"}],"id":9287,"name":"FunctionCall","src":"6528:33:10"}],"id":9288,"name":"UnaryOperation","src":"6527:34:10"}],"id":9289,"name":"BinaryOperation","src":"6513:48:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"prevoff"},"id":9290,"name":"Identifier","src":"6577:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9291,"name":"Identifier","src":"6587:3:10"}],"id":9292,"name":"Assignment","src":"6577:13:10"}],"id":9293,"name":"ExpressionStatement","src":"6577:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9294,"name":"Identifier","src":"6604:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9372,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9295,"name":"Identifier","src":"6610:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9296,"name":"Identifier","src":"6619:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9297,"name":"Identifier","src":"6625:3:10"}],"id":9298,"name":"FunctionCall","src":"6610:19:10"}],"id":9299,"name":"Assignment","src":"6604:25:10"}],"id":9300,"name":"ExpressionStatement","src":"6604:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"otherprevoff"},"id":9301,"name":"Identifier","src":"6643:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9302,"name":"Identifier","src":"6658:8:10"}],"id":9303,"name":"Assignment","src":"6643:23:10"}],"id":9304,"name":"ExpressionStatement","src":"6643:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9305,"name":"Identifier","src":"6680:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9372,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9306,"name":"Identifier","src":"6691:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9307,"name":"Identifier","src":"6700:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9308,"name":"Identifier","src":"6707:8:10"}],"id":9309,"name":"FunctionCall","src":"6691:25:10"}],"id":9310,"name":"Assignment","src":"6680:36:10"}],"id":9311,"name":"ExpressionStatement","src":"6680:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9312,"name":"Identifier","src":"6730:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9313,"name":"Literal","src":"6740:1:10"}],"id":9314,"name":"Assignment","src":"6730:11:10"}],"id":9315,"name":"ExpressionStatement","src":"6730:11:10"}],"id":9316,"name":"Block","src":"6563:189:10"}],"id":9317,"name":"WhileStatement","src":"6506:246:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9318,"name":"Identifier","src":"6766:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9319,"name":"Literal","src":"6773:1:10"}],"id":9320,"name":"BinaryOperation","src":"6766:8:10"},{"children":[{"attributes":{"functionReturnParameters":9206},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9321,"name":"Literal","src":"6798:1:10"}],"id":9322,"name":"UnaryOperation","src":"6797:2:10"}],"id":9323,"name":"Return","src":"6790:9:10"}],"id":9324,"name":"Block","src":"6776:34:10"}],"id":9325,"name":"IfStatement","src":"6762:48:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9326,"name":"Identifier","src":"6822:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9327,"name":"Literal","src":"6834:1:10"}],"id":9328,"name":"BinaryOperation","src":"6822:13:10"},{"children":[{"attributes":{"functionReturnParameters":9206},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9329,"name":"Literal","src":"6858:1:10"}],"id":9330,"name":"Return","src":"6851:8:10"}],"id":9331,"name":"Block","src":"6837:33:10"}],"id":9332,"name":"IfStatement","src":"6819:51:10"},{"attributes":{"functionReturnParameters":9206},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":9550,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9333,"name":"Identifier","src":"6887:4:10"}],"id":9334,"name":"MemberAccess","src":"6887:12:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"prevoff"},"id":9335,"name":"Identifier","src":"6900:7:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9336,"name":"Literal","src":"6910:1:10"}],"id":9337,"name":"BinaryOperation","src":"6900:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9338,"name":"Identifier","src":"6913:4:10"}],"id":9339,"name":"MemberAccess","src":"6913:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"prevoff"},"id":9340,"name":"Identifier","src":"6928:7:10"}],"id":9341,"name":"FunctionCall","src":"6913:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9342,"name":"Identifier","src":"6938:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"otherprevoff"},"id":9343,"name":"Identifier","src":"6945:12:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9344,"name":"Literal","src":"6960:1:10"}],"id":9345,"name":"BinaryOperation","src":"6945:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9346,"name":"Identifier","src":"6963:5:10"}],"id":9347,"name":"MemberAccess","src":"6963:15:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"otherprevoff"},"id":9348,"name":"Identifier","src":"6979:12:10"}],"id":9349,"name":"FunctionCall","src":"6963:29:10"}],"id":9350,"name":"FunctionCall","src":"6887:106:10"}],"id":9351,"name":"Return","src":"6880:113:10"}],"id":9352,"name":"Block","src":"5793:1207:10"}],"id":9353,"name":"FunctionDefinition","src":"5704:1296:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":9372,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9354,"name":"ElementaryTypeName","src":"7024:5:10"}],"id":9355,"name":"VariableDeclaration","src":"7024:17:10"},{"attributes":{"constant":false,"name":"off","scope":9372,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9356,"name":"ElementaryTypeName","src":"7043:4:10"}],"id":9357,"name":"VariableDeclaration","src":"7043:8:10"}],"id":9358,"name":"ParameterList","src":"7023:29:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9372,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9359,"name":"ElementaryTypeName","src":"7075:4:10"}],"id":9360,"name":"VariableDeclaration","src":"7075:4:10"}],"id":9361,"name":"ParameterList","src":"7074:6:10"},{"children":[{"attributes":{"functionReturnParameters":9361},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9357,"type":"uint256","value":"off"},"id":9362,"name":"Identifier","src":"7098:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9363,"name":"Literal","src":"7104:1:10"}],"id":9364,"name":"BinaryOperation","src":"7098:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9355,"type":"bytes memory","value":"body"},"id":9365,"name":"Identifier","src":"7108:4:10"}],"id":9366,"name":"MemberAccess","src":"7108:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9357,"type":"uint256","value":"off"},"id":9367,"name":"Identifier","src":"7123:3:10"}],"id":9368,"name":"FunctionCall","src":"7108:19:10"}],"id":9369,"name":"BinaryOperation","src":"7098:29:10"}],"id":9370,"name":"Return","src":"7091:36:10"}],"id":9371,"name":"Block","src":"7081:53:10"}],"id":9372,"name":"FunctionDefinition","src":"7006:128:10"}],"id":9373,"name":"ContractDefinition","src":"150:6986:10"}],"id":9374,"name":"SourceUnit","src":"0:7137:10"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[8755]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":8688,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[8755],"name":"ResolverBase","scope":8756},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":8755,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8689,"name":"ElementaryTypeName","src":"53:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":8690,"name":"Literal","src":"97:10:11"}],"id":8691,"name":"VariableDeclaration","src":"53:54:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":8755,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":8703,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8692,"name":"ElementaryTypeName","src":"141:6:11"}],"id":8693,"name":"VariableDeclaration","src":"141:18:11"}],"id":8694,"name":"ParameterList","src":"140:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":8703,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8695,"name":"ElementaryTypeName","src":"181:4:11"}],"id":8696,"name":"VariableDeclaration","src":"181:4:11"}],"id":8697,"name":"ParameterList","src":"180:6:11"},{"children":[{"attributes":{"functionReturnParameters":8697},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8693,"type":"bytes4","value":"interfaceID"},"id":8698,"name":"Identifier","src":"204:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8691,"type":"bytes4","value":"INTERFACE_META_ID"},"id":8699,"name":"Identifier","src":"219:17:11"}],"id":8700,"name":"BinaryOperation","src":"204:32:11"}],"id":8701,"name":"Return","src":"197:39:11"}],"id":8702,"name":"Block","src":"187:56:11"}],"id":8703,"name":"FunctionDefinition","src":"114:129:11"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":8755,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":8710,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8704,"name":"ElementaryTypeName","src":"271:7:11"}],"id":8705,"name":"VariableDeclaration","src":"271:12:11"}],"id":8706,"name":"ParameterList","src":"270:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":8710,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8707,"name":"ElementaryTypeName","src":"307:4:11"}],"id":8708,"name":"VariableDeclaration","src":"307:4:11"}],"id":8709,"name":"ParameterList","src":"306:6:11"}],"id":8710,"name":"FunctionDefinition","src":"249:64:11"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8711,"name":"ElementaryTypeName","src":"339:7:11"}],"id":8712,"name":"VariableDeclaration","src":"339:12:11"}],"id":8713,"name":"ParameterList","src":"338:14:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":8714,"name":"Identifier","src":"363:7:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8710,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":8715,"name":"Identifier","src":"371:12:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8712,"type":"bytes32","value":"node"},"id":8716,"name":"Identifier","src":"384:4:11"}],"id":8717,"name":"FunctionCall","src":"371:18:11"}],"id":8718,"name":"FunctionCall","src":"363:27:11"}],"id":8719,"name":"ExpressionStatement","src":"363:27:11"},{"id":8720,"name":"PlaceholderStatement","src":"400:1:11"}],"id":8721,"name":"Block","src":"353:55:11"}],"id":8722,"name":"ModifierDefinition","src":"319:89:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":8755,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":8738,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8723,"name":"ElementaryTypeName","src":"438:5:11"}],"id":8724,"name":"VariableDeclaration","src":"438:14:11"}],"id":8725,"name":"ParameterList","src":"437:16:11"},{"children":[{"attributes":{"constant":false,"name":"a","scope":8738,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":8726,"name":"ElementaryTypeName","src":"476:15:11"}],"id":8727,"name":"VariableDeclaration","src":"476:17:11"}],"id":8728,"name":"ParameterList","src":"475:19:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":8729,"name":"Identifier","src":"505:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8724,"type":"bytes memory","value":"b"},"id":8730,"name":"Identifier","src":"513:1:11"}],"id":8731,"name":"MemberAccess","src":"513:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8732,"name":"Literal","src":"525:2:11"}],"id":8733,"name":"BinaryOperation","src":"513:14:11"}],"id":8734,"name":"FunctionCall","src":"505:23:11"}],"id":8735,"name":"ExpressionStatement","src":"505:23:11"},{"attributes":{"externalReferences":[{"a":{"declaration":8727,"isOffset":false,"isSlot":false,"src":"561:1:11","valueSize":1}},{"b":{"declaration":8724,"isOffset":false,"isSlot":false,"src":"580:1:11","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":8736,"name":"InlineAssembly","src":"538:74:11"}],"id":8737,"name":"Block","src":"495:123:11"}],"id":8738,"name":"FunctionDefinition","src":"414:204:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":8755,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":8754,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8739,"name":"ElementaryTypeName","src":"648:7:11"}],"id":8740,"name":"VariableDeclaration","src":"648:9:11"}],"id":8741,"name":"ParameterList","src":"647:11:11"},{"children":[{"attributes":{"constant":false,"name":"b","scope":8754,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8742,"name":"ElementaryTypeName","src":"681:5:11"}],"id":8743,"name":"VariableDeclaration","src":"681:14:11"}],"id":8744,"name":"ParameterList","src":"680:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8743,"type":"bytes memory","value":"b"},"id":8745,"name":"Identifier","src":"707:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8746,"name":"ElementaryTypeName","src":"715:5:11"}],"id":8747,"name":"NewExpression","src":"711:9:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8748,"name":"Literal","src":"721:2:11"}],"id":8749,"name":"FunctionCall","src":"711:13:11"}],"id":8750,"name":"Assignment","src":"707:17:11"}],"id":8751,"name":"ExpressionStatement","src":"707:17:11"},{"attributes":{"externalReferences":[{"b":{"declaration":8743,"isOffset":false,"isSlot":false,"src":"768:1:11","valueSize":1}},{"a":{"declaration":8740,"isOffset":false,"isSlot":false,"src":"780:1:11","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":8752,"name":"InlineAssembly","src":"734:73:11"}],"id":8753,"name":"Block","src":"697:116:11"}],"id":8754,"name":"FunctionDefinition","src":"624:189:11"}],"id":8755,"name":"ContractDefinition","src":"25:790:11"}],"id":8756,"name":"SourceUnit","src":"0:816:11"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[5718]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5584,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5719,"symbolAliases":[null],"unitAlias":""},"id":5585,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5718,8755],"name":"ABIResolver","scope":5719},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":5586,"name":"UserDefinedTypeName","src":"80:12:12"}],"id":5587,"name":"InheritanceSpecifier","src":"80:12:12"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":5718,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5588,"name":"ElementaryTypeName","src":"99:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":5589,"name":"Literal","src":"142:10:12"}],"id":5590,"name":"VariableDeclaration","src":"99:53:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5596,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5591,"name":"ElementaryTypeName","src":"176:7:12"}],"id":5592,"name":"VariableDeclaration","src":"176:20:12"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":5596,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5593,"name":"ElementaryTypeName","src":"198:7:12"}],"id":5594,"name":"VariableDeclaration","src":"198:27:12"}],"id":5595,"name":"ParameterList","src":"175:51:12"}],"id":5596,"name":"EventDefinition","src":"159:68:12"},{"attributes":{"constant":false,"name":"abis","scope":5718,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5597,"name":"ElementaryTypeName","src":"241:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5598,"name":"ElementaryTypeName","src":"258:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5599,"name":"ElementaryTypeName","src":"267:5:12"}],"id":5600,"name":"Mapping","src":"250:23:12"}],"id":5601,"name":"Mapping","src":"233:41:12"}],"id":5602,"name":"VariableDeclaration","src":"233:46:12"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":5718,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5640,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5603,"name":"ElementaryTypeName","src":"598:7:12"}],"id":5604,"name":"VariableDeclaration","src":"598:12:12"},{"attributes":{"constant":false,"name":"contentType","scope":5640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5605,"name":"ElementaryTypeName","src":"612:7:12"}],"id":5606,"name":"VariableDeclaration","src":"612:19:12"},{"attributes":{"constant":false,"name":"data","scope":5640,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5607,"name":"ElementaryTypeName","src":"633:5:12"}],"id":5608,"name":"VariableDeclaration","src":"633:19:12"}],"id":5609,"name":"ParameterList","src":"597:56:12"},{"attributes":{"parameters":[null]},"children":[],"id":5613,"name":"ParameterList","src":"680:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":5610,"name":"Identifier","src":"663:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes32","value":"node"},"id":5611,"name":"Identifier","src":"674:4:12"}],"id":5612,"name":"ModifierInvocation","src":"663:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":5614,"name":"Identifier","src":"735:7:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"uint256","value":"contentType"},"id":5615,"name":"Identifier","src":"745:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5616,"name":"Literal","src":"759:1:12"}],"id":5617,"name":"BinaryOperation","src":"745:15:12"}],"id":5618,"name":"TupleExpression","src":"744:17:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"uint256","value":"contentType"},"id":5619,"name":"Identifier","src":"764:11:12"}],"id":5620,"name":"BinaryOperation","src":"744:31:12"}],"id":5621,"name":"TupleExpression","src":"743:33:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5622,"name":"Literal","src":"780:1:12"}],"id":5623,"name":"BinaryOperation","src":"743:38:12"}],"id":5624,"name":"FunctionCall","src":"735:47:12"}],"id":5625,"name":"ExpressionStatement","src":"735:47:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5602,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":5626,"name":"Identifier","src":"793:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes32","value":"node"},"id":5627,"name":"Identifier","src":"798:4:12"}],"id":5629,"name":"IndexAccess","src":"793:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"uint256","value":"contentType"},"id":5628,"name":"Identifier","src":"804:11:12"}],"id":5630,"name":"IndexAccess","src":"793:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5608,"type":"bytes calldata","value":"data"},"id":5631,"name":"Identifier","src":"819:4:12"}],"id":5632,"name":"Assignment","src":"793:30:12"}],"id":5633,"name":"ExpressionStatement","src":"793:30:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5596,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":5634,"name":"Identifier","src":"838:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes32","value":"node"},"id":5635,"name":"Identifier","src":"849:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"uint256","value":"contentType"},"id":5636,"name":"Identifier","src":"855:11:12"}],"id":5637,"name":"FunctionCall","src":"838:29:12"}],"id":5638,"name":"EmitStatement","src":"833:34:12"}],"id":5639,"name":"Block","src":"680:194:12"}],"id":5640,"name":"FunctionDefinition","src":"582:292:12"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":5718,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5700,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5641,"name":"ElementaryTypeName","src":"1208:7:12"}],"id":5642,"name":"VariableDeclaration","src":"1208:12:12"},{"attributes":{"constant":false,"name":"contentTypes","scope":5700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5643,"name":"ElementaryTypeName","src":"1222:7:12"}],"id":5644,"name":"VariableDeclaration","src":"1222:20:12"}],"id":5645,"name":"ParameterList","src":"1207:36:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5646,"name":"ElementaryTypeName","src":"1267:7:12"}],"id":5647,"name":"VariableDeclaration","src":"1267:7:12"},{"attributes":{"constant":false,"name":"","scope":5700,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5648,"name":"ElementaryTypeName","src":"1276:5:12"}],"id":5649,"name":"VariableDeclaration","src":"1276:12:12"}],"id":5650,"name":"ParameterList","src":"1266:23:12"},{"children":[{"attributes":{"assignments":[5654]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":5699,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5651,"name":"ElementaryTypeName","src":"1308:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5652,"name":"ElementaryTypeName","src":"1317:5:12"}],"id":5653,"name":"Mapping","src":"1300:23:12"}],"id":5654,"name":"VariableDeclaration","src":"1300:38:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5602,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":5655,"name":"Identifier","src":"1341:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5642,"type":"bytes32","value":"node"},"id":5656,"name":"Identifier","src":"1346:4:12"}],"id":5657,"name":"IndexAccess","src":"1341:10:12"}],"id":5658,"name":"VariableDeclarationStatement","src":"1300:51:12"},{"children":[{"attributes":{"assignments":[5660]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":5692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5659,"name":"ElementaryTypeName","src":"1367:7:12"}],"id":5660,"name":"VariableDeclaration","src":"1367:19:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5661,"name":"Literal","src":"1389:1:12"}],"id":5662,"name":"VariableDeclarationStatement","src":"1367:23:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5663,"name":"Identifier","src":"1392:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5644,"type":"uint256","value":"contentTypes"},"id":5664,"name":"Identifier","src":"1407:12:12"}],"id":5665,"name":"BinaryOperation","src":"1392:27:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5666,"name":"Identifier","src":"1421:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5667,"name":"Literal","src":"1437:1:12"}],"id":5668,"name":"Assignment","src":"1421:17:12"}],"id":5669,"name":"ExpressionStatement","src":"1421:17:12"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5670,"name":"Identifier","src":"1459:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5644,"type":"uint256","value":"contentTypes"},"id":5671,"name":"Identifier","src":"1473:12:12"}],"id":5672,"name":"BinaryOperation","src":"1459:26:12"}],"id":5673,"name":"TupleExpression","src":"1458:28:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5674,"name":"Literal","src":"1490:1:12"}],"id":5675,"name":"BinaryOperation","src":"1458:33:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":5676,"name":"Identifier","src":"1495:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5677,"name":"Identifier","src":"1502:11:12"}],"id":5678,"name":"IndexAccess","src":"1495:19:12"}],"id":5679,"name":"MemberAccess","src":"1495:26:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5680,"name":"Literal","src":"1524:1:12"}],"id":5681,"name":"BinaryOperation","src":"1495:30:12"}],"id":5682,"name":"BinaryOperation","src":"1458:67:12"},{"children":[{"attributes":{"functionReturnParameters":5650},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5683,"name":"Identifier","src":"1553:11:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":5684,"name":"Identifier","src":"1566:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5685,"name":"Identifier","src":"1573:11:12"}],"id":5686,"name":"IndexAccess","src":"1566:19:12"}],"id":5687,"name":"TupleExpression","src":"1552:34:12"}],"id":5688,"name":"Return","src":"1545:41:12"}],"id":5689,"name":"Block","src":"1527:74:12"}],"id":5690,"name":"IfStatement","src":"1454:147:12"}],"id":5691,"name":"Block","src":"1440:171:12"}],"id":5692,"name":"ForStatement","src":"1362:249:12"},{"attributes":{"functionReturnParameters":5650},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5693,"name":"Literal","src":"1629:1:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5694,"name":"ElementaryTypeNameExpression","src":"1632:5:12"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":5695,"name":"Literal","src":"1638:2:12"}],"id":5696,"name":"FunctionCall","src":"1632:9:12"}],"id":5697,"name":"TupleExpression","src":"1628:14:12"}],"id":5698,"name":"Return","src":"1621:21:12"}],"id":5699,"name":"Block","src":"1290:359:12"}],"id":5700,"name":"FunctionDefinition","src":"1195:454:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5718,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5717,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5701,"name":"ElementaryTypeName","src":"1682:6:12"}],"id":5702,"name":"VariableDeclaration","src":"1682:18:12"}],"id":5703,"name":"ParameterList","src":"1681:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5717,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5704,"name":"ElementaryTypeName","src":"1722:4:12"}],"id":5705,"name":"VariableDeclaration","src":"1722:4:12"}],"id":5706,"name":"ParameterList","src":"1721:6:12"},{"children":[{"attributes":{"functionReturnParameters":5706},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"bytes4","value":"interfaceID"},"id":5707,"name":"Identifier","src":"1745:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5590,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":5708,"name":"Identifier","src":"1760:16:12"}],"id":5709,"name":"BinaryOperation","src":"1745:31:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10150,"type":"contract super ABIResolver","value":"super"},"id":5710,"name":"Identifier","src":"1780:5:12"}],"id":5711,"name":"MemberAccess","src":"1780:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"bytes4","value":"interfaceID"},"id":5712,"name":"Identifier","src":"1804:11:12"}],"id":5713,"name":"FunctionCall","src":"1780:36:12"}],"id":5714,"name":"BinaryOperation","src":"1745:71:12"}],"id":5715,"name":"Return","src":"1738:78:12"}],"id":5716,"name":"Block","src":"1728:95:12"}],"id":5717,"name":"FunctionDefinition","src":"1655:168:12"}],"id":5718,"name":"ContractDefinition","src":"56:1769:12"}],"id":5719,"name":"SourceUnit","src":"0:1826:12"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[5877]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5720,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5878,"symbolAliases":[null],"unitAlias":""},"id":5721,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5877,8755],"name":"AddrResolver","scope":5878},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":5722,"name":"UserDefinedTypeName","src":"81:12:13"}],"id":5723,"name":"InheritanceSpecifier","src":"81:12:13"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":5877,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5724,"name":"ElementaryTypeName","src":"100:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":5725,"name":"Literal","src":"144:10:13"}],"id":5726,"name":"VariableDeclaration","src":"100:54:13"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":5877,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5727,"name":"ElementaryTypeName","src":"160:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":5728,"name":"Literal","src":"207:10:13"}],"id":5729,"name":"VariableDeclaration","src":"160:57:13"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":5877,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5730,"name":"ElementaryTypeName","src":"223:4:13"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":5731,"name":"Literal","src":"261:2:13"}],"id":5732,"name":"VariableDeclaration","src":"223:40:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5738,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5733,"name":"ElementaryTypeName","src":"288:7:13"}],"id":5734,"name":"VariableDeclaration","src":"288:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":5738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5735,"name":"ElementaryTypeName","src":"310:7:13"}],"id":5736,"name":"VariableDeclaration","src":"310:9:13"}],"id":5737,"name":"ParameterList","src":"287:33:13"}],"id":5738,"name":"EventDefinition","src":"270:51:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5746,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5739,"name":"ElementaryTypeName","src":"347:7:13"}],"id":5740,"name":"VariableDeclaration","src":"347:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":5746,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5741,"name":"ElementaryTypeName","src":"369:4:13"}],"id":5742,"name":"VariableDeclaration","src":"369:13:13"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":5746,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5743,"name":"ElementaryTypeName","src":"384:5:13"}],"id":5744,"name":"VariableDeclaration","src":"384:16:13"}],"id":5745,"name":"ParameterList","src":"346:55:13"}],"id":5746,"name":"EventDefinition","src":"326:76:13"},{"attributes":{"constant":false,"name":"_addresses","scope":5877,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5747,"name":"ElementaryTypeName","src":"416:7:13"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5748,"name":"ElementaryTypeName","src":"433:4:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5749,"name":"ElementaryTypeName","src":"439:5:13"}],"id":5750,"name":"Mapping","src":"425:20:13"}],"id":5751,"name":"Mapping","src":"408:38:13"}],"id":5752,"name":"VariableDeclaration","src":"408:49:13"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":5877,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5771,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5753,"name":"ElementaryTypeName","src":"698:7:13"}],"id":5754,"name":"VariableDeclaration","src":"698:12:13"},{"attributes":{"constant":false,"name":"a","scope":5771,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5755,"name":"ElementaryTypeName","src":"712:7:13"}],"id":5756,"name":"VariableDeclaration","src":"712:9:13"}],"id":5757,"name":"ParameterList","src":"697:25:13"},{"attributes":{"parameters":[null]},"children":[],"id":5761,"name":"ParameterList","src":"749:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":5758,"name":"Identifier","src":"732:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5754,"type":"bytes32","value":"node"},"id":5759,"name":"Identifier","src":"743:4:13"}],"id":5760,"name":"ModifierInvocation","src":"732:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5839,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":5762,"name":"Identifier","src":"759:15:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5754,"type":"bytes32","value":"node"},"id":5763,"name":"Identifier","src":"775:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5732,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5764,"name":"Identifier","src":"781:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8754,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":5765,"name":"Identifier","src":"796:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5756,"type":"address","value":"a"},"id":5766,"name":"Identifier","src":"811:1:13"}],"id":5767,"name":"FunctionCall","src":"796:17:13"}],"id":5768,"name":"FunctionCall","src":"759:55:13"}],"id":5769,"name":"ExpressionStatement","src":"759:55:13"}],"id":5770,"name":"Block","src":"749:72:13"}],"id":5771,"name":"FunctionDefinition","src":"681:140:13"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5877,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5800,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5772,"name":"ElementaryTypeName","src":"994:7:13"}],"id":5773,"name":"VariableDeclaration","src":"994:12:13"}],"id":5774,"name":"ParameterList","src":"993:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5800,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5775,"name":"ElementaryTypeName","src":"1029:15:13"}],"id":5776,"name":"VariableDeclaration","src":"1029:15:13"}],"id":5777,"name":"ParameterList","src":"1028:17:13"},{"children":[{"attributes":{"assignments":[5779]},"children":[{"attributes":{"constant":false,"name":"a","scope":5799,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5778,"name":"ElementaryTypeName","src":"1056:5:13"}],"id":5779,"name":"VariableDeclaration","src":"1056:14:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[5800,5855],"referencedDeclaration":5855,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":5780,"name":"Identifier","src":"1073:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5773,"type":"bytes32","value":"node"},"id":5781,"name":"Identifier","src":"1078:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5732,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5782,"name":"Identifier","src":"1084:13:13"}],"id":5783,"name":"FunctionCall","src":"1073:25:13"}],"id":5784,"name":"VariableDeclarationStatement","src":"1056:42:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5779,"type":"bytes memory","value":"a"},"id":5785,"name":"Identifier","src":"1111:1:13"}],"id":5786,"name":"MemberAccess","src":"1111:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5787,"name":"Literal","src":"1123:1:13"}],"id":5788,"name":"BinaryOperation","src":"1111:13:13"},{"children":[{"attributes":{"functionReturnParameters":5777},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5789,"name":"ElementaryTypeNameExpression","src":"1147:7:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5790,"name":"Literal","src":"1155:1:13"}],"id":5791,"name":"FunctionCall","src":"1147:10:13"}],"id":5792,"name":"Return","src":"1140:17:13"}],"id":5793,"name":"Block","src":"1126:42:13"}],"id":5794,"name":"IfStatement","src":"1108:60:13"},{"attributes":{"functionReturnParameters":5777},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5795,"name":"Identifier","src":"1184:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5779,"type":"bytes memory","value":"a"},"id":5796,"name":"Identifier","src":"1199:1:13"}],"id":5797,"name":"FunctionCall","src":"1184:17:13"}],"id":5798,"name":"Return","src":"1177:24:13"}],"id":5799,"name":"Block","src":"1046:162:13"}],"id":5800,"name":"FunctionDefinition","src":"980:228:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":5877,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5839,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5801,"name":"ElementaryTypeName","src":"1239:7:13"}],"id":5802,"name":"VariableDeclaration","src":"1239:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5803,"name":"ElementaryTypeName","src":"1253:4:13"}],"id":5804,"name":"VariableDeclaration","src":"1253:13:13"},{"attributes":{"constant":false,"name":"a","scope":5839,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5805,"name":"ElementaryTypeName","src":"1268:5:13"}],"id":5806,"name":"VariableDeclaration","src":"1268:14:13"}],"id":5807,"name":"ParameterList","src":"1238:45:13"},{"attributes":{"parameters":[null]},"children":[],"id":5811,"name":"ParameterList","src":"1308:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":5808,"name":"Identifier","src":"1291:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"bytes32","value":"node"},"id":5809,"name":"Identifier","src":"1302:4:13"}],"id":5810,"name":"ModifierInvocation","src":"1291:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5746,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":5812,"name":"Identifier","src":"1323:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"bytes32","value":"node"},"id":5813,"name":"Identifier","src":"1338:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5804,"type":"uint256","value":"coinType"},"id":5814,"name":"Identifier","src":"1344:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5806,"type":"bytes memory","value":"a"},"id":5815,"name":"Identifier","src":"1354:1:13"}],"id":5816,"name":"FunctionCall","src":"1323:33:13"}],"id":5817,"name":"EmitStatement","src":"1318:38:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5804,"type":"uint256","value":"coinType"},"id":5818,"name":"Identifier","src":"1369:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5732,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5819,"name":"Identifier","src":"1381:13:13"}],"id":5820,"name":"BinaryOperation","src":"1369:25:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5738,"type":"function (bytes32,address)","value":"AddrChanged"},"id":5821,"name":"Identifier","src":"1415:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"bytes32","value":"node"},"id":5822,"name":"Identifier","src":"1427:4:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5823,"name":"Identifier","src":"1433:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5806,"type":"bytes memory","value":"a"},"id":5824,"name":"Identifier","src":"1448:1:13"}],"id":5825,"name":"FunctionCall","src":"1433:17:13"}],"id":5826,"name":"FunctionCall","src":"1415:36:13"}],"id":5827,"name":"EmitStatement","src":"1410:41:13"}],"id":5828,"name":"Block","src":"1396:66:13"}],"id":5829,"name":"IfStatement","src":"1366:96:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5752,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5830,"name":"Identifier","src":"1471:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"bytes32","value":"node"},"id":5831,"name":"Identifier","src":"1482:4:13"}],"id":5833,"name":"IndexAccess","src":"1471:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5804,"type":"uint256","value":"coinType"},"id":5832,"name":"Identifier","src":"1488:8:13"}],"id":5834,"name":"IndexAccess","src":"1471:26:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5806,"type":"bytes memory","value":"a"},"id":5835,"name":"Identifier","src":"1500:1:13"}],"id":5836,"name":"Assignment","src":"1471:30:13"}],"id":5837,"name":"ExpressionStatement","src":"1471:30:13"}],"id":5838,"name":"Block","src":"1308:200:13"}],"id":5839,"name":"FunctionDefinition","src":"1214:294:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5877,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5855,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5840,"name":"ElementaryTypeName","src":"1528:7:13"}],"id":5841,"name":"VariableDeclaration","src":"1528:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5855,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5842,"name":"ElementaryTypeName","src":"1542:4:13"}],"id":5843,"name":"VariableDeclaration","src":"1542:13:13"}],"id":5844,"name":"ParameterList","src":"1527:29:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5855,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5845,"name":"ElementaryTypeName","src":"1577:5:13"}],"id":5846,"name":"VariableDeclaration","src":"1577:12:13"}],"id":5847,"name":"ParameterList","src":"1576:14:13"},{"children":[{"attributes":{"functionReturnParameters":5847},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5752,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5848,"name":"Identifier","src":"1608:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5841,"type":"bytes32","value":"node"},"id":5849,"name":"Identifier","src":"1619:4:13"}],"id":5850,"name":"IndexAccess","src":"1608:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5843,"type":"uint256","value":"coinType"},"id":5851,"name":"Identifier","src":"1625:8:13"}],"id":5852,"name":"IndexAccess","src":"1608:26:13"}],"id":5853,"name":"Return","src":"1601:33:13"}],"id":5854,"name":"Block","src":"1591:50:13"}],"id":5855,"name":"FunctionDefinition","src":"1514:127:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5877,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5876,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5856,"name":"ElementaryTypeName","src":"1674:6:13"}],"id":5857,"name":"VariableDeclaration","src":"1674:18:13"}],"id":5858,"name":"ParameterList","src":"1673:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5876,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5859,"name":"ElementaryTypeName","src":"1714:4:13"}],"id":5860,"name":"VariableDeclaration","src":"1714:4:13"}],"id":5861,"name":"ParameterList","src":"1713:6:13"},{"children":[{"attributes":{"functionReturnParameters":5861},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"bytes4","value":"interfaceID"},"id":5862,"name":"Identifier","src":"1737:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5726,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":5863,"name":"Identifier","src":"1752:17:13"}],"id":5864,"name":"BinaryOperation","src":"1737:32:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"bytes4","value":"interfaceID"},"id":5865,"name":"Identifier","src":"1773:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5729,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":5866,"name":"Identifier","src":"1788:20:13"}],"id":5867,"name":"BinaryOperation","src":"1773:35:13"}],"id":5868,"name":"BinaryOperation","src":"1737:71:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10152,"type":"contract super AddrResolver","value":"super"},"id":5869,"name":"Identifier","src":"1812:5:13"}],"id":5870,"name":"MemberAccess","src":"1812:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"bytes4","value":"interfaceID"},"id":5871,"name":"Identifier","src":"1836:11:13"}],"id":5872,"name":"FunctionCall","src":"1812:36:13"}],"id":5873,"name":"BinaryOperation","src":"1737:111:13"}],"id":5874,"name":"Return","src":"1730:118:13"}],"id":5875,"name":"Block","src":"1720:135:13"}],"id":5876,"name":"FunctionDefinition","src":"1647:208:13"}],"id":5877,"name":"ContractDefinition","src":"56:1801:13"}],"id":5878,"name":"SourceUnit","src":"0:1857:13"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[5947]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5879,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5948,"symbolAliases":[null],"unitAlias":""},"id":5880,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5947,8755],"name":"ContentHashResolver","scope":5948},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":5881,"name":"UserDefinedTypeName","src":"88:12:14"}],"id":5882,"name":"InheritanceSpecifier","src":"88:12:14"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":5947,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5883,"name":"ElementaryTypeName","src":"107:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":5884,"name":"Literal","src":"159:10:14"}],"id":5885,"name":"VariableDeclaration","src":"107:62:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5891,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5886,"name":"ElementaryTypeName","src":"201:7:14"}],"id":5887,"name":"VariableDeclaration","src":"201:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":5891,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5888,"name":"ElementaryTypeName","src":"223:5:14"}],"id":5889,"name":"VariableDeclaration","src":"223:10:14"}],"id":5890,"name":"ParameterList","src":"200:34:14"}],"id":5891,"name":"EventDefinition","src":"176:59:14"},{"attributes":{"constant":false,"name":"hashes","scope":5947,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5892,"name":"ElementaryTypeName","src":"249:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":5893,"name":"ElementaryTypeName","src":"258:5:14"}],"id":5894,"name":"Mapping","src":"241:23:14"}],"id":5895,"name":"VariableDeclaration","src":"241:30:14"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":5947,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5917,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5896,"name":"ElementaryTypeName","src":"529:7:14"}],"id":5897,"name":"VariableDeclaration","src":"529:12:14"},{"attributes":{"constant":false,"name":"hash","scope":5917,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5898,"name":"ElementaryTypeName","src":"543:5:14"}],"id":5899,"name":"VariableDeclaration","src":"543:19:14"}],"id":5900,"name":"ParameterList","src":"528:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":5904,"name":"ParameterList","src":"590:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":5901,"name":"Identifier","src":"573:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5897,"type":"bytes32","value":"node"},"id":5902,"name":"Identifier","src":"584:4:14"}],"id":5903,"name":"ModifierInvocation","src":"573:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5905,"name":"Identifier","src":"600:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5897,"type":"bytes32","value":"node"},"id":5906,"name":"Identifier","src":"607:4:14"}],"id":5907,"name":"IndexAccess","src":"600:12:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5899,"type":"bytes calldata","value":"hash"},"id":5908,"name":"Identifier","src":"615:4:14"}],"id":5909,"name":"Assignment","src":"600:19:14"}],"id":5910,"name":"ExpressionStatement","src":"600:19:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5891,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":5911,"name":"Identifier","src":"634:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5897,"type":"bytes32","value":"node"},"id":5912,"name":"Identifier","src":"653:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5899,"type":"bytes calldata","value":"hash"},"id":5913,"name":"Identifier","src":"659:4:14"}],"id":5914,"name":"FunctionCall","src":"634:30:14"}],"id":5915,"name":"EmitStatement","src":"629:35:14"}],"id":5916,"name":"Block","src":"590:81:14"}],"id":5917,"name":"FunctionDefinition","src":"505:166:14"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":5947,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5929,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5918,"name":"ElementaryTypeName","src":"859:7:14"}],"id":5919,"name":"VariableDeclaration","src":"859:12:14"}],"id":5920,"name":"ParameterList","src":"858:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5929,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5921,"name":"ElementaryTypeName","src":"896:5:14"}],"id":5922,"name":"VariableDeclaration","src":"896:12:14"}],"id":5923,"name":"ParameterList","src":"895:14:14"},{"children":[{"attributes":{"functionReturnParameters":5923},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5924,"name":"Identifier","src":"927:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5919,"type":"bytes32","value":"node"},"id":5925,"name":"Identifier","src":"934:4:14"}],"id":5926,"name":"IndexAccess","src":"927:12:14"}],"id":5927,"name":"Return","src":"920:19:14"}],"id":5928,"name":"Block","src":"910:36:14"}],"id":5929,"name":"FunctionDefinition","src":"838:108:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5947,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5946,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5930,"name":"ElementaryTypeName","src":"979:6:14"}],"id":5931,"name":"VariableDeclaration","src":"979:18:14"}],"id":5932,"name":"ParameterList","src":"978:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5946,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5933,"name":"ElementaryTypeName","src":"1019:4:14"}],"id":5934,"name":"VariableDeclaration","src":"1019:4:14"}],"id":5935,"name":"ParameterList","src":"1018:6:14"},{"children":[{"attributes":{"functionReturnParameters":5935},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5931,"type":"bytes4","value":"interfaceID"},"id":5936,"name":"Identifier","src":"1042:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5885,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":5937,"name":"Identifier","src":"1057:25:14"}],"id":5938,"name":"BinaryOperation","src":"1042:40:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10154,"type":"contract super ContentHashResolver","value":"super"},"id":5939,"name":"Identifier","src":"1086:5:14"}],"id":5940,"name":"MemberAccess","src":"1086:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5931,"type":"bytes4","value":"interfaceID"},"id":5941,"name":"Identifier","src":"1110:11:14"}],"id":5942,"name":"FunctionCall","src":"1086:36:14"}],"id":5943,"name":"BinaryOperation","src":"1042:80:14"}],"id":5944,"name":"Return","src":"1035:87:14"}],"id":5945,"name":"Block","src":"1025:104:14"}],"id":5946,"name":"FunctionDefinition","src":"952:177:14"}],"id":5947,"name":"ContractDefinition","src":"56:1075:14"}],"id":5948,"name":"SourceUnit","src":"0:1132:14"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[6438]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5949,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6439,"symbolAliases":[null],"unitAlias":""},"id":5950,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":9374,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":6439,"symbolAliases":[null],"unitAlias":""},"id":5951,"name":"ImportDirective","src":"55:24:15"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6438,8755],"name":"DNSResolver","scope":6439},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":5952,"name":"UserDefinedTypeName","src":"105:12:15"}],"id":5953,"name":"InheritanceSpecifier","src":"105:12:15"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":9373,"type":"library RRUtils"},"id":5954,"name":"UserDefinedTypeName","src":"130:7:15"}],"id":5955,"name":"UsingForDirective","src":"124:20:15"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10094,"type":"library ENSBytesUtils"},"id":5956,"name":"UserDefinedTypeName","src":"155:13:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5957,"name":"ElementaryTypeName","src":"173:5:15"}],"id":5958,"name":"UsingForDirective","src":"149:30:15"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":6438,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5959,"name":"ElementaryTypeName","src":"185:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":5960,"name":"Literal","src":"235:10:15"}],"id":5961,"name":"VariableDeclaration","src":"185:60:15"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":6438,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5962,"name":"ElementaryTypeName","src":"251:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":5963,"name":"Literal","src":"299:10:15"}],"id":5964,"name":"VariableDeclaration","src":"251:58:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5974,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5965,"name":"ElementaryTypeName","src":"430:7:15"}],"id":5966,"name":"VariableDeclaration","src":"430:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5974,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5967,"name":"ElementaryTypeName","src":"452:5:15"}],"id":5968,"name":"VariableDeclaration","src":"452:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5974,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5969,"name":"ElementaryTypeName","src":"464:6:15"}],"id":5970,"name":"VariableDeclaration","src":"464:15:15"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":5974,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5971,"name":"ElementaryTypeName","src":"481:5:15"}],"id":5972,"name":"VariableDeclaration","src":"481:12:15"}],"id":5973,"name":"ParameterList","src":"429:65:15"}],"id":5974,"name":"EventDefinition","src":"407:88:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5982,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5975,"name":"ElementaryTypeName","src":"614:7:15"}],"id":5976,"name":"VariableDeclaration","src":"614:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5982,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5977,"name":"ElementaryTypeName","src":"636:5:15"}],"id":5978,"name":"VariableDeclaration","src":"636:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5982,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5979,"name":"ElementaryTypeName","src":"648:6:15"}],"id":5980,"name":"VariableDeclaration","src":"648:15:15"}],"id":5981,"name":"ParameterList","src":"613:51:15"}],"id":5982,"name":"EventDefinition","src":"591:74:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5983,"name":"ElementaryTypeName","src":"777:7:15"}],"id":5984,"name":"VariableDeclaration","src":"777:20:15"}],"id":5985,"name":"ParameterList","src":"776:22:15"}],"id":5986,"name":"EventDefinition","src":"756:43:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5994,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5987,"name":"ElementaryTypeName","src":"913:7:15"}],"id":5988,"name":"VariableDeclaration","src":"913:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":5994,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5989,"name":"ElementaryTypeName","src":"935:5:15"}],"id":5990,"name":"VariableDeclaration","src":"935:18:15"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":5994,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5991,"name":"ElementaryTypeName","src":"955:5:15"}],"id":5992,"name":"VariableDeclaration","src":"955:14:15"}],"id":5993,"name":"ParameterList","src":"912:58:15"}],"id":5994,"name":"EventDefinition","src":"888:83:15"},{"attributes":{"constant":false,"name":"zonehashes","scope":6438,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5995,"name":"ElementaryTypeName","src":"1181:7:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5996,"name":"ElementaryTypeName","src":"1190:5:15"}],"id":5997,"name":"Mapping","src":"1173:23:15"}],"id":5998,"name":"VariableDeclaration","src":"1173:42:15"},{"attributes":{"constant":false,"name":"versions","scope":6438,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5999,"name":"ElementaryTypeName","src":"1433:7:15"},{"attributes":{"name":"uint256","type":"uint256"},"id":6000,"name":"ElementaryTypeName","src":"1442:7:15"}],"id":6001,"name":"Mapping","src":"1425:25:15"}],"id":6002,"name":"VariableDeclaration","src":"1425:42:15"},{"attributes":{"constant":false,"name":"records","scope":6438,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6003,"name":"ElementaryTypeName","src":"1589:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6004,"name":"ElementaryTypeName","src":"1606:7:15"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6005,"name":"ElementaryTypeName","src":"1623:7:15"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6006,"name":"ElementaryTypeName","src":"1640:6:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6007,"name":"ElementaryTypeName","src":"1648:5:15"}],"id":6008,"name":"Mapping","src":"1632:22:15"}],"id":6009,"name":"Mapping","src":"1615:40:15"}],"id":6010,"name":"Mapping","src":"1598:58:15"}],"id":6011,"name":"Mapping","src":"1581:76:15"}],"id":6012,"name":"VariableDeclaration","src":"1581:92:15"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":6438,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6013,"name":"ElementaryTypeName","src":"1853:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6014,"name":"ElementaryTypeName","src":"1870:7:15"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6015,"name":"ElementaryTypeName","src":"1887:7:15"},{"attributes":{"name":"uint16","type":"uint16"},"id":6016,"name":"ElementaryTypeName","src":"1896:6:15"}],"id":6017,"name":"Mapping","src":"1879:24:15"}],"id":6018,"name":"Mapping","src":"1862:42:15"}],"id":6019,"name":"Mapping","src":"1845:60:15"}],"id":6020,"name":"VariableDeclaration","src":"1845:85:15"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":6438,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6021,"name":"ElementaryTypeName","src":"2877:7:15"}],"id":6022,"name":"VariableDeclaration","src":"2877:12:15"},{"attributes":{"constant":false,"name":"data","scope":6185,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6023,"name":"ElementaryTypeName","src":"2891:5:15"}],"id":6024,"name":"VariableDeclaration","src":"2891:19:15"}],"id":6025,"name":"ParameterList","src":"2876:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6029,"name":"ParameterList","src":"2938:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6026,"name":"Identifier","src":"2921:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"bytes32","value":"node"},"id":6027,"name":"Identifier","src":"2932:4:15"}],"id":6028,"name":"ModifierInvocation","src":"2921:16:15"},{"children":[{"attributes":{"assignments":[6031]},"children":[{"attributes":{"constant":false,"name":"resource","scope":6184,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6030,"name":"ElementaryTypeName","src":"2948:6:15"}],"id":6031,"name":"VariableDeclaration","src":"2948:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6032,"name":"Literal","src":"2966:1:15"}],"id":6033,"name":"VariableDeclarationStatement","src":"2948:19:15"},{"attributes":{"assignments":[6035]},"children":[{"attributes":{"constant":false,"name":"offset","scope":6184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6034,"name":"ElementaryTypeName","src":"2977:7:15"}],"id":6035,"name":"VariableDeclaration","src":"2977:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6036,"name":"Literal","src":"2994:1:15"}],"id":6037,"name":"VariableDeclarationStatement","src":"2977:18:15"},{"attributes":{"assignments":[6039],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":6184,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6038,"name":"ElementaryTypeName","src":"3005:5:15"}],"id":6039,"name":"VariableDeclaration","src":"3005:17:15"}],"id":6040,"name":"VariableDeclarationStatement","src":"3005:17:15"},{"attributes":{"assignments":[6042],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":6184,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6041,"name":"ElementaryTypeName","src":"3032:5:15"}],"id":6042,"name":"VariableDeclaration","src":"3032:18:15"}],"id":6043,"name":"VariableDeclarationStatement","src":"3032:18:15"},{"attributes":{"assignments":[6045],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6184,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6044,"name":"ElementaryTypeName","src":"3060:7:15"}],"id":6045,"name":"VariableDeclaration","src":"3060:16:15"}],"id":6046,"name":"VariableDeclarationStatement","src":"3060:16:15"},{"children":[{"attributes":{"assignments":[6050]},"children":[{"attributes":{"constant":false,"name":"iter","scope":6161,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":6049,"name":"UserDefinedTypeName","src":"3152:18:15"}],"id":6050,"name":"VariableDeclaration","src":"3152:30:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":8920,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"bytes calldata","value":"data"},"id":6051,"name":"Identifier","src":"3185:4:15"}],"id":6052,"name":"MemberAccess","src":"3185:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6053,"name":"Literal","src":"3201:1:15"}],"id":6054,"name":"FunctionCall","src":"3185:18:15"}],"id":6055,"name":"VariableDeclarationStatement","src":"3152:51:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":8935,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6056,"name":"Identifier","src":"3206:4:15"}],"id":6057,"name":"MemberAccess","src":"3206:9:15"}],"id":6058,"name":"FunctionCall","src":"3206:11:15"}],"id":6059,"name":"UnaryOperation","src":"3205:12:15"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":9037,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6060,"name":"Identifier","src":"3219:4:15"}],"id":6061,"name":"MemberAccess","src":"3219:9:15"}],"id":6062,"name":"FunctionCall","src":"3219:11:15"}],"id":6063,"name":"ExpressionStatement","src":"3219:11:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6064,"name":"Identifier","src":"3250:8:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6065,"name":"Literal","src":"3262:1:15"}],"id":6066,"name":"BinaryOperation","src":"3250:13:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6067,"name":"Identifier","src":"3283:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8885,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6068,"name":"Identifier","src":"3294:4:15"}],"id":6069,"name":"MemberAccess","src":"3294:12:15"}],"id":6070,"name":"Assignment","src":"3283:23:15"}],"id":6071,"name":"ExpressionStatement","src":"3283:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6072,"name":"Identifier","src":"3324:4:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9058,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6073,"name":"Identifier","src":"3331:4:15"}],"id":6074,"name":"MemberAccess","src":"3331:9:15"}],"id":6075,"name":"FunctionCall","src":"3331:11:15"}],"id":6076,"name":"Assignment","src":"3324:18:15"}],"id":6077,"name":"ExpressionStatement","src":"3324:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6045,"type":"bytes32","value":"nameHash"},"id":6078,"name":"Identifier","src":"3360:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6079,"name":"Identifier","src":"3371:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":6080,"name":"Identifier","src":"3381:3:15"}],"id":6081,"name":"MemberAccess","src":"3381:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6082,"name":"Identifier","src":"3398:4:15"}],"id":6083,"name":"FunctionCall","src":"3381:22:15"}],"id":6084,"name":"FunctionCall","src":"3371:33:15"}],"id":6085,"name":"Assignment","src":"3360:44:15"}],"id":6086,"name":"ExpressionStatement","src":"3360:44:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"bytes memory","value":"value"},"id":6087,"name":"Identifier","src":"3422:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6088,"name":"ElementaryTypeNameExpression","src":"3430:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9078,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6089,"name":"Identifier","src":"3436:4:15"}],"id":6090,"name":"MemberAccess","src":"3436:10:15"}],"id":6091,"name":"FunctionCall","src":"3436:12:15"}],"id":6092,"name":"FunctionCall","src":"3430:19:15"}],"id":6093,"name":"Assignment","src":"3422:27:15"}],"id":6094,"name":"ExpressionStatement","src":"3422:27:15"}],"id":6095,"name":"Block","src":"3265:199:15"},{"children":[{"attributes":{"assignments":[6097]},"children":[{"attributes":{"constant":false,"name":"newName","scope":6158,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6096,"name":"ElementaryTypeName","src":"3488:5:15"}],"id":6097,"name":"VariableDeclaration","src":"3488:20:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9058,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6098,"name":"Identifier","src":"3511:4:15"}],"id":6099,"name":"MemberAccess","src":"3511:9:15"}],"id":6100,"name":"FunctionCall","src":"3511:11:15"}],"id":6101,"name":"VariableDeclarationStatement","src":"3488:34:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6102,"name":"Identifier","src":"3544:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8885,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6103,"name":"Identifier","src":"3556:4:15"}],"id":6104,"name":"MemberAccess","src":"3556:12:15"}],"id":6105,"name":"BinaryOperation","src":"3544:24:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9664,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6106,"name":"Identifier","src":"3573:4:15"}],"id":6107,"name":"MemberAccess","src":"3573:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6097,"type":"bytes memory","value":"newName"},"id":6108,"name":"Identifier","src":"3585:7:15"}],"id":6109,"name":"FunctionCall","src":"3573:20:15"}],"id":6110,"name":"UnaryOperation","src":"3572:21:15"}],"id":6111,"name":"BinaryOperation","src":"3544:49:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6437,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6112,"name":"Identifier","src":"3617:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"bytes32","value":"node"},"id":6113,"name":"Identifier","src":"3629:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6114,"name":"Identifier","src":"3635:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6115,"name":"Identifier","src":"3641:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"bytes calldata","value":"data"},"id":6116,"name":"Identifier","src":"3651:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6117,"name":"Identifier","src":"3657:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6118,"name":"Identifier","src":"3665:4:15"}],"id":6119,"name":"MemberAccess","src":"3665:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6120,"name":"Identifier","src":"3679:6:15"}],"id":6121,"name":"BinaryOperation","src":"3665:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"bytes memory","value":"value"},"id":6122,"name":"Identifier","src":"3687:5:15"}],"id":6123,"name":"MemberAccess","src":"3687:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6124,"name":"Literal","src":"3703:1:15"}],"id":6125,"name":"BinaryOperation","src":"3687:17:15"}],"id":6126,"name":"FunctionCall","src":"3617:88:15"}],"id":6127,"name":"ExpressionStatement","src":"3617:88:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6128,"name":"Identifier","src":"3727:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8885,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6129,"name":"Identifier","src":"3738:4:15"}],"id":6130,"name":"MemberAccess","src":"3738:12:15"}],"id":6131,"name":"Assignment","src":"3727:23:15"}],"id":6132,"name":"ExpressionStatement","src":"3727:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6133,"name":"Identifier","src":"3772:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6134,"name":"Identifier","src":"3781:4:15"}],"id":6135,"name":"MemberAccess","src":"3781:11:15"}],"id":6136,"name":"Assignment","src":"3772:20:15"}],"id":6137,"name":"ExpressionStatement","src":"3772:20:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6138,"name":"Identifier","src":"3814:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6097,"type":"bytes memory","value":"newName"},"id":6139,"name":"Identifier","src":"3821:7:15"}],"id":6140,"name":"Assignment","src":"3814:14:15"}],"id":6141,"name":"ExpressionStatement","src":"3814:14:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6045,"type":"bytes32","value":"nameHash"},"id":6142,"name":"Identifier","src":"3850:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6143,"name":"Identifier","src":"3861:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6144,"name":"Identifier","src":"3871:4:15"}],"id":6145,"name":"FunctionCall","src":"3861:15:15"}],"id":6146,"name":"Assignment","src":"3850:26:15"}],"id":6147,"name":"ExpressionStatement","src":"3850:26:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"bytes memory","value":"value"},"id":6148,"name":"Identifier","src":"3898:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6149,"name":"ElementaryTypeNameExpression","src":"3906:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9078,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6150,"name":"Identifier","src":"3912:4:15"}],"id":6151,"name":"MemberAccess","src":"3912:10:15"}],"id":6152,"name":"FunctionCall","src":"3912:12:15"}],"id":6153,"name":"FunctionCall","src":"3906:19:15"}],"id":6154,"name":"Assignment","src":"3898:27:15"}],"id":6155,"name":"ExpressionStatement","src":"3898:27:15"}],"id":6156,"name":"Block","src":"3595:349:15"}],"id":6157,"name":"IfStatement","src":"3540:404:15"}],"id":6158,"name":"Block","src":"3470:488:15"}],"id":6159,"name":"IfStatement","src":"3246:712:15"}],"id":6160,"name":"Block","src":"3232:736:15"}],"id":6161,"name":"ForStatement","src":"3147:821:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6162,"name":"Identifier","src":"3981:4:15"}],"id":6163,"name":"MemberAccess","src":"3981:11:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6164,"name":"Literal","src":"3995:1:15"}],"id":6165,"name":"BinaryOperation","src":"3981:15:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6437,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6166,"name":"Identifier","src":"4012:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"bytes32","value":"node"},"id":6167,"name":"Identifier","src":"4024:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6168,"name":"Identifier","src":"4030:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6169,"name":"Identifier","src":"4036:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"bytes calldata","value":"data"},"id":6170,"name":"Identifier","src":"4046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6171,"name":"Identifier","src":"4052:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"bytes calldata","value":"data"},"id":6172,"name":"Identifier","src":"4060:4:15"}],"id":6173,"name":"MemberAccess","src":"4060:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6174,"name":"Identifier","src":"4074:6:15"}],"id":6175,"name":"BinaryOperation","src":"4060:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"bytes memory","value":"value"},"id":6176,"name":"Identifier","src":"4082:5:15"}],"id":6177,"name":"MemberAccess","src":"4082:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6178,"name":"Literal","src":"4098:1:15"}],"id":6179,"name":"BinaryOperation","src":"4082:17:15"}],"id":6180,"name":"FunctionCall","src":"4012:88:15"}],"id":6181,"name":"ExpressionStatement","src":"4012:88:15"}],"id":6182,"name":"Block","src":"3998:113:15"}],"id":6183,"name":"IfStatement","src":"3977:134:15"}],"id":6184,"name":"Block","src":"2938:1179:15"}],"id":6185,"name":"FunctionDefinition","src":"2854:1263:15"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":6438,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6209,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6186,"name":"ElementaryTypeName","src":"4538:7:15"}],"id":6187,"name":"VariableDeclaration","src":"4538:12:15"},{"attributes":{"constant":false,"name":"name","scope":6209,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6188,"name":"ElementaryTypeName","src":"4552:7:15"}],"id":6189,"name":"VariableDeclaration","src":"4552:12:15"},{"attributes":{"constant":false,"name":"resource","scope":6209,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6190,"name":"ElementaryTypeName","src":"4566:6:15"}],"id":6191,"name":"VariableDeclaration","src":"4566:15:15"}],"id":6192,"name":"ParameterList","src":"4537:45:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6209,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6193,"name":"ElementaryTypeName","src":"4604:5:15"}],"id":6194,"name":"VariableDeclaration","src":"4604:12:15"}],"id":6195,"name":"ParameterList","src":"4603:14:15"},{"children":[{"attributes":{"functionReturnParameters":6195},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6196,"name":"Identifier","src":"4635:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6187,"type":"bytes32","value":"node"},"id":6197,"name":"Identifier","src":"4643:4:15"}],"id":6198,"name":"IndexAccess","src":"4635:13:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6002,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6199,"name":"Identifier","src":"4649:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6187,"type":"bytes32","value":"node"},"id":6200,"name":"Identifier","src":"4658:4:15"}],"id":6201,"name":"IndexAccess","src":"4649:14:15"}],"id":6202,"name":"IndexAccess","src":"4635:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6189,"type":"bytes32","value":"name"},"id":6203,"name":"Identifier","src":"4665:4:15"}],"id":6204,"name":"IndexAccess","src":"4635:35:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6191,"type":"uint16","value":"resource"},"id":6205,"name":"Identifier","src":"4671:8:15"}],"id":6206,"name":"IndexAccess","src":"4635:45:15"}],"id":6207,"name":"Return","src":"4628:52:15"}],"id":6208,"name":"Block","src":"4618:69:15"}],"id":6209,"name":"FunctionDefinition","src":"4519:168:15"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":6438,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6232,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6210,"name":"ElementaryTypeName","src":"4924:7:15"}],"id":6211,"name":"VariableDeclaration","src":"4924:12:15"},{"attributes":{"constant":false,"name":"name","scope":6232,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6212,"name":"ElementaryTypeName","src":"4938:7:15"}],"id":6213,"name":"VariableDeclaration","src":"4938:12:15"}],"id":6214,"name":"ParameterList","src":"4923:28:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6232,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6215,"name":"ElementaryTypeName","src":"4973:4:15"}],"id":6216,"name":"VariableDeclaration","src":"4973:4:15"}],"id":6217,"name":"ParameterList","src":"4972:6:15"},{"children":[{"attributes":{"functionReturnParameters":6217},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6218,"name":"Identifier","src":"4997:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6211,"type":"bytes32","value":"node"},"id":6219,"name":"Identifier","src":"5014:4:15"}],"id":6220,"name":"IndexAccess","src":"4997:22:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6002,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6221,"name":"Identifier","src":"5020:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6211,"type":"bytes32","value":"node"},"id":6222,"name":"Identifier","src":"5029:4:15"}],"id":6223,"name":"IndexAccess","src":"5020:14:15"}],"id":6224,"name":"IndexAccess","src":"4997:38:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6213,"type":"bytes32","value":"name"},"id":6225,"name":"Identifier","src":"5036:4:15"}],"id":6226,"name":"IndexAccess","src":"4997:44:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6227,"name":"Literal","src":"5045:1:15"}],"id":6228,"name":"BinaryOperation","src":"4997:49:15"}],"id":6229,"name":"TupleExpression","src":"4996:51:15"}],"id":6230,"name":"Return","src":"4989:58:15"}],"id":6231,"name":"Block","src":"4979:75:15"}],"id":6232,"name":"FunctionDefinition","src":"4901:153:15"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":6438,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6250,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6233,"name":"ElementaryTypeName","src":"5215:7:15"}],"id":6234,"name":"VariableDeclaration","src":"5215:12:15"}],"id":6235,"name":"ParameterList","src":"5214:14:15"},{"attributes":{"parameters":[null]},"children":[],"id":6239,"name":"ParameterList","src":"5253:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6236,"name":"Identifier","src":"5236:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes32","value":"node"},"id":6237,"name":"Identifier","src":"5247:4:15"}],"id":6238,"name":"ModifierInvocation","src":"5236:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6002,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6240,"name":"Identifier","src":"5263:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes32","value":"node"},"id":6241,"name":"Identifier","src":"5272:4:15"}],"id":6242,"name":"IndexAccess","src":"5263:14:15"}],"id":6243,"name":"UnaryOperation","src":"5263:16:15"}],"id":6244,"name":"ExpressionStatement","src":"5263:16:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5986,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":6245,"name":"Identifier","src":"5294:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes32","value":"node"},"id":6246,"name":"Identifier","src":"5309:4:15"}],"id":6247,"name":"FunctionCall","src":"5294:20:15"}],"id":6248,"name":"EmitStatement","src":"5289:25:15"}],"id":6249,"name":"Block","src":"5253:68:15"}],"id":6250,"name":"FunctionDefinition","src":"5193:128:15"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":6438,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6279,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6251,"name":"ElementaryTypeName","src":"5562:7:15"}],"id":6252,"name":"VariableDeclaration","src":"5562:12:15"},{"attributes":{"constant":false,"name":"hash","scope":6279,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6253,"name":"ElementaryTypeName","src":"5576:5:15"}],"id":6254,"name":"VariableDeclaration","src":"5576:19:15"}],"id":6255,"name":"ParameterList","src":"5561:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6259,"name":"ParameterList","src":"5623:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6256,"name":"Identifier","src":"5606:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6252,"type":"bytes32","value":"node"},"id":6257,"name":"Identifier","src":"5617:4:15"}],"id":6258,"name":"ModifierInvocation","src":"5606:16:15"},{"children":[{"attributes":{"assignments":[6261]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":6278,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6260,"name":"ElementaryTypeName","src":"5633:5:15"}],"id":6261,"name":"VariableDeclaration","src":"5633:20:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5998,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6262,"name":"Identifier","src":"5656:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6252,"type":"bytes32","value":"node"},"id":6263,"name":"Identifier","src":"5667:4:15"}],"id":6264,"name":"IndexAccess","src":"5656:16:15"}],"id":6265,"name":"VariableDeclarationStatement","src":"5633:39:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5998,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6266,"name":"Identifier","src":"5682:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6252,"type":"bytes32","value":"node"},"id":6267,"name":"Identifier","src":"5693:4:15"}],"id":6268,"name":"IndexAccess","src":"5682:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6254,"type":"bytes calldata","value":"hash"},"id":6269,"name":"Identifier","src":"5701:4:15"}],"id":6270,"name":"Assignment","src":"5682:23:15"}],"id":6271,"name":"ExpressionStatement","src":"5682:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5994,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":6272,"name":"Identifier","src":"5720:18:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6252,"type":"bytes32","value":"node"},"id":6273,"name":"Identifier","src":"5739:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6261,"type":"bytes memory","value":"oldhash"},"id":6274,"name":"Identifier","src":"5745:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6254,"type":"bytes calldata","value":"hash"},"id":6275,"name":"Identifier","src":"5754:4:15"}],"id":6276,"name":"FunctionCall","src":"5720:39:15"}],"id":6277,"name":"EmitStatement","src":"5715:44:15"}],"id":6278,"name":"Block","src":"5623:143:15"}],"id":6279,"name":"FunctionDefinition","src":"5541:225:15"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":6438,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6291,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6280,"name":"ElementaryTypeName","src":"5938:7:15"}],"id":6281,"name":"VariableDeclaration","src":"5938:12:15"}],"id":6282,"name":"ParameterList","src":"5937:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6291,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6283,"name":"ElementaryTypeName","src":"5975:5:15"}],"id":6284,"name":"VariableDeclaration","src":"5975:12:15"}],"id":6285,"name":"ParameterList","src":"5974:14:15"},{"children":[{"attributes":{"functionReturnParameters":6285},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5998,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6286,"name":"Identifier","src":"6006:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6281,"type":"bytes32","value":"node"},"id":6287,"name":"Identifier","src":"6017:4:15"}],"id":6288,"name":"IndexAccess","src":"6006:16:15"}],"id":6289,"name":"Return","src":"5999:23:15"}],"id":6290,"name":"Block","src":"5989:40:15"}],"id":6291,"name":"FunctionDefinition","src":"5920:109:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6438,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6312,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6292,"name":"ElementaryTypeName","src":"6062:6:15"}],"id":6293,"name":"VariableDeclaration","src":"6062:18:15"}],"id":6294,"name":"ParameterList","src":"6061:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6312,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6295,"name":"ElementaryTypeName","src":"6102:4:15"}],"id":6296,"name":"VariableDeclaration","src":"6102:4:15"}],"id":6297,"name":"ParameterList","src":"6101:6:15"},{"children":[{"attributes":{"functionReturnParameters":6297},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"bytes4","value":"interfaceID"},"id":6298,"name":"Identifier","src":"6125:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5961,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":6299,"name":"Identifier","src":"6140:23:15"}],"id":6300,"name":"BinaryOperation","src":"6125:38:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"bytes4","value":"interfaceID"},"id":6301,"name":"Identifier","src":"6182:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5964,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":6302,"name":"Identifier","src":"6197:21:15"}],"id":6303,"name":"BinaryOperation","src":"6182:36:15"}],"id":6304,"name":"BinaryOperation","src":"6125:93:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10158,"type":"contract super DNSResolver","value":"super"},"id":6305,"name":"Identifier","src":"6237:5:15"}],"id":6306,"name":"MemberAccess","src":"6237:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"bytes4","value":"interfaceID"},"id":6307,"name":"Identifier","src":"6261:11:15"}],"id":6308,"name":"FunctionCall","src":"6237:36:15"}],"id":6309,"name":"BinaryOperation","src":"6125:148:15"}],"id":6310,"name":"Return","src":"6118:155:15"}],"id":6311,"name":"Block","src":"6108:172:15"}],"id":6312,"name":"FunctionDefinition","src":"6035:245:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":6438,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6437,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6313,"name":"ElementaryTypeName","src":"6316:7:15"}],"id":6314,"name":"VariableDeclaration","src":"6316:12:15"},{"attributes":{"constant":false,"name":"name","scope":6437,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6315,"name":"ElementaryTypeName","src":"6338:5:15"}],"id":6316,"name":"VariableDeclaration","src":"6338:17:15"},{"attributes":{"constant":false,"name":"resource","scope":6437,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6317,"name":"ElementaryTypeName","src":"6365:6:15"}],"id":6318,"name":"VariableDeclaration","src":"6365:15:15"},{"attributes":{"constant":false,"name":"data","scope":6437,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6319,"name":"ElementaryTypeName","src":"6390:5:15"}],"id":6320,"name":"VariableDeclaration","src":"6390:17:15"},{"attributes":{"constant":false,"name":"offset","scope":6437,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6321,"name":"ElementaryTypeName","src":"6417:7:15"}],"id":6322,"name":"VariableDeclaration","src":"6417:14:15"},{"attributes":{"constant":false,"name":"size","scope":6437,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6323,"name":"ElementaryTypeName","src":"6441:7:15"}],"id":6324,"name":"VariableDeclaration","src":"6441:12:15"},{"attributes":{"constant":false,"name":"deleteRecord","scope":6437,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6325,"name":"ElementaryTypeName","src":"6463:4:15"}],"id":6326,"name":"VariableDeclaration","src":"6463:17:15"}],"id":6327,"name":"ParameterList","src":"6306:175:15"},{"attributes":{"parameters":[null]},"children":[],"id":6328,"name":"ParameterList","src":"6494:0:15"},{"children":[{"attributes":{"assignments":[6330]},"children":[{"attributes":{"constant":false,"name":"version","scope":6436,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6329,"name":"ElementaryTypeName","src":"6504:7:15"}],"id":6330,"name":"VariableDeclaration","src":"6504:15:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6002,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6331,"name":"Identifier","src":"6522:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6332,"name":"Identifier","src":"6531:4:15"}],"id":6333,"name":"IndexAccess","src":"6522:14:15"}],"id":6334,"name":"VariableDeclarationStatement","src":"6504:32:15"},{"attributes":{"assignments":[6336]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6436,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6335,"name":"ElementaryTypeName","src":"6546:7:15"}],"id":6336,"name":"VariableDeclaration","src":"6546:16:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6337,"name":"Identifier","src":"6565:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6316,"type":"bytes memory","value":"name"},"id":6338,"name":"Identifier","src":"6575:4:15"}],"id":6339,"name":"FunctionCall","src":"6565:15:15"}],"id":6340,"name":"VariableDeclarationStatement","src":"6546:34:15"},{"attributes":{"assignments":[6342]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":6436,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6341,"name":"ElementaryTypeName","src":"6590:5:15"}],"id":6342,"name":"VariableDeclaration","src":"6590:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9871,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6320,"type":"bytes memory","value":"data"},"id":6343,"name":"Identifier","src":"6612:4:15"}],"id":6344,"name":"MemberAccess","src":"6612:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6322,"type":"uint256","value":"offset"},"id":6345,"name":"Identifier","src":"6627:6:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6324,"type":"uint256","value":"size"},"id":6346,"name":"Identifier","src":"6635:4:15"}],"id":6347,"name":"FunctionCall","src":"6612:28:15"}],"id":6348,"name":"VariableDeclarationStatement","src":"6590:50:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6326,"type":"bool","value":"deleteRecord"},"id":6349,"name":"Identifier","src":"6654:12:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6350,"name":"Identifier","src":"6686:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6351,"name":"Identifier","src":"6694:4:15"}],"id":6352,"name":"IndexAccess","src":"6686:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6353,"name":"Identifier","src":"6700:7:15"}],"id":6354,"name":"IndexAccess","src":"6686:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6355,"name":"Identifier","src":"6709:8:15"}],"id":6356,"name":"IndexAccess","src":"6686:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6357,"name":"Identifier","src":"6719:8:15"}],"id":6358,"name":"IndexAccess","src":"6686:42:15"}],"id":6359,"name":"MemberAccess","src":"6686:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6360,"name":"Literal","src":"6739:1:15"}],"id":6361,"name":"BinaryOperation","src":"6686:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6362,"name":"Identifier","src":"6760:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6363,"name":"Identifier","src":"6777:4:15"}],"id":6366,"name":"IndexAccess","src":"6760:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6364,"name":"Identifier","src":"6783:7:15"}],"id":6367,"name":"IndexAccess","src":"6760:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6365,"name":"Identifier","src":"6792:8:15"}],"id":6368,"name":"IndexAccess","src":"6760:41:15"}],"id":6369,"name":"UnaryOperation","src":"6760:43:15"}],"id":6370,"name":"ExpressionStatement","src":"6760:43:15"}],"id":6371,"name":"Block","src":"6742:76:15"}],"id":6372,"name":"IfStatement","src":"6682:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6373,"name":"Identifier","src":"6838:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6374,"name":"Identifier","src":"6846:4:15"}],"id":6375,"name":"IndexAccess","src":"6838:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6376,"name":"Identifier","src":"6852:7:15"}],"id":6377,"name":"IndexAccess","src":"6838:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6378,"name":"Identifier","src":"6861:8:15"}],"id":6379,"name":"IndexAccess","src":"6838:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6380,"name":"Identifier","src":"6871:8:15"}],"id":6381,"name":"IndexAccess","src":"6838:42:15"}],"id":6382,"name":"TupleExpression","src":"6837:44:15"}],"id":6383,"name":"UnaryOperation","src":"6831:50:15"}],"id":6384,"name":"ExpressionStatement","src":"6831:50:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":5982,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":6385,"name":"Identifier","src":"6900:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6386,"name":"Identifier","src":"6917:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6316,"type":"bytes memory","value":"name"},"id":6387,"name":"Identifier","src":"6923:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6388,"name":"Identifier","src":"6929:8:15"}],"id":6389,"name":"FunctionCall","src":"6900:38:15"}],"id":6390,"name":"EmitStatement","src":"6895:43:15"}],"id":6391,"name":"Block","src":"6668:281:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6392,"name":"Identifier","src":"6973:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6393,"name":"Identifier","src":"6981:4:15"}],"id":6394,"name":"IndexAccess","src":"6973:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6395,"name":"Identifier","src":"6987:7:15"}],"id":6396,"name":"IndexAccess","src":"6973:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6397,"name":"Identifier","src":"6996:8:15"}],"id":6398,"name":"IndexAccess","src":"6973:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6399,"name":"Identifier","src":"7006:8:15"}],"id":6400,"name":"IndexAccess","src":"6973:42:15"}],"id":6401,"name":"MemberAccess","src":"6973:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6402,"name":"Literal","src":"7026:1:15"}],"id":6403,"name":"BinaryOperation","src":"6973:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6404,"name":"Identifier","src":"7047:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6405,"name":"Identifier","src":"7064:4:15"}],"id":6408,"name":"IndexAccess","src":"7047:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6406,"name":"Identifier","src":"7070:7:15"}],"id":6409,"name":"IndexAccess","src":"7047:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6407,"name":"Identifier","src":"7079:8:15"}],"id":6410,"name":"IndexAccess","src":"7047:41:15"}],"id":6411,"name":"UnaryOperation","src":"7047:43:15"}],"id":6412,"name":"ExpressionStatement","src":"7047:43:15"}],"id":6413,"name":"Block","src":"7029:76:15"}],"id":6414,"name":"IfStatement","src":"6969:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6415,"name":"Identifier","src":"7118:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6416,"name":"Identifier","src":"7126:4:15"}],"id":6420,"name":"IndexAccess","src":"7118:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6417,"name":"Identifier","src":"7132:7:15"}],"id":6421,"name":"IndexAccess","src":"7118:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6418,"name":"Identifier","src":"7141:8:15"}],"id":6422,"name":"IndexAccess","src":"7118:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6419,"name":"Identifier","src":"7151:8:15"}],"id":6423,"name":"IndexAccess","src":"7118:42:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6342,"type":"bytes memory","value":"rrData"},"id":6424,"name":"Identifier","src":"7163:6:15"}],"id":6425,"name":"Assignment","src":"7118:51:15"}],"id":6426,"name":"ExpressionStatement","src":"7118:51:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5974,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":6427,"name":"Identifier","src":"7188:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6428,"name":"Identifier","src":"7205:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6316,"type":"bytes memory","value":"name"},"id":6429,"name":"Identifier","src":"7211:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6430,"name":"Identifier","src":"7217:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6342,"type":"bytes memory","value":"rrData"},"id":6431,"name":"Identifier","src":"7227:6:15"}],"id":6432,"name":"FunctionCall","src":"7188:46:15"}],"id":6433,"name":"EmitStatement","src":"7183:51:15"}],"id":6434,"name":"Block","src":"6955:290:15"}],"id":6435,"name":"IfStatement","src":"6650:595:15"}],"id":6436,"name":"Block","src":"6494:757:15"}],"id":6437,"name":"FunctionDefinition","src":"6286:965:15"}],"id":6438,"name":"ContractDefinition","src":"81:7172:15"}],"id":6439,"name":"SourceUnit","src":"0:7253:15"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[6625]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6440,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6626,"symbolAliases":[null],"unitAlias":""},"id":6441,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"SourceUnit":5878,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":6626,"symbolAliases":[null],"unitAlias":""},"id":6442,"name":"ImportDirective","src":"55:28:16"},{"attributes":{"contractDependencies":[5877,8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6625,5877,8755],"name":"InterfaceResolver","scope":6626},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":6443,"name":"UserDefinedTypeName","src":"115:12:16"}],"id":6444,"name":"InheritanceSpecifier","src":"115:12:16"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5877,"type":"contract AddrResolver"},"id":6445,"name":"UserDefinedTypeName","src":"129:12:16"}],"id":6446,"name":"InheritanceSpecifier","src":"129:12:16"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":6625,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6447,"name":"ElementaryTypeName","src":"148:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":6448,"name":"ElementaryTypeNameExpression","src":"197:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6449,"name":"Identifier","src":"204:9:16"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":6450,"name":"Literal","src":"214:38:16"}],"id":6451,"name":"FunctionCall","src":"204:49:16"}],"id":6452,"name":"FunctionCall","src":"197:57:16"}],"id":6453,"name":"VariableDeclaration","src":"148:106:16"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":6625,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6454,"name":"ElementaryTypeName","src":"260:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":6455,"name":"Literal","src":"304:10:16"}],"id":6456,"name":"VariableDeclaration","src":"260:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6464,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6457,"name":"ElementaryTypeName","src":"344:7:16"}],"id":6458,"name":"VariableDeclaration","src":"344:20:16"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":6464,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6459,"name":"ElementaryTypeName","src":"366:6:16"}],"id":6460,"name":"VariableDeclaration","src":"366:26:16"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":6464,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6461,"name":"ElementaryTypeName","src":"394:7:16"}],"id":6462,"name":"VariableDeclaration","src":"394:19:16"}],"id":6463,"name":"ParameterList","src":"343:71:16"}],"id":6464,"name":"EventDefinition","src":"321:94:16"},{"attributes":{"constant":false,"name":"interfaces","scope":6625,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6465,"name":"ElementaryTypeName","src":"429:7:16"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6466,"name":"ElementaryTypeName","src":"446:6:16"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6467,"name":"ElementaryTypeName","src":"454:7:16"}],"id":6468,"name":"Mapping","src":"438:24:16"}],"id":6469,"name":"Mapping","src":"421:42:16"}],"id":6470,"name":"VariableDeclaration","src":"421:53:16"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":6625,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6497,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6471,"name":"ElementaryTypeName","src":"880:7:16"}],"id":6472,"name":"VariableDeclaration","src":"880:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6497,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6473,"name":"ElementaryTypeName","src":"894:6:16"}],"id":6474,"name":"VariableDeclaration","src":"894:18:16"},{"attributes":{"constant":false,"name":"implementer","scope":6497,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6475,"name":"ElementaryTypeName","src":"914:7:16"}],"id":6476,"name":"VariableDeclaration","src":"914:19:16"}],"id":6477,"name":"ParameterList","src":"879:55:16"},{"attributes":{"parameters":[null]},"children":[],"id":6481,"name":"ParameterList","src":"961:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6478,"name":"Identifier","src":"944:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes32","value":"node"},"id":6479,"name":"Identifier","src":"955:4:16"}],"id":6480,"name":"ModifierInvocation","src":"944:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6482,"name":"Identifier","src":"971:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes32","value":"node"},"id":6483,"name":"Identifier","src":"982:4:16"}],"id":6485,"name":"IndexAccess","src":"971:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6474,"type":"bytes4","value":"interfaceID"},"id":6484,"name":"Identifier","src":"988:11:16"}],"id":6486,"name":"IndexAccess","src":"971:29:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6476,"type":"address","value":"implementer"},"id":6487,"name":"Identifier","src":"1003:11:16"}],"id":6488,"name":"Assignment","src":"971:43:16"}],"id":6489,"name":"ExpressionStatement","src":"971:43:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6464,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":6490,"name":"Identifier","src":"1029:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes32","value":"node"},"id":6491,"name":"Identifier","src":"1046:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6474,"type":"bytes4","value":"interfaceID"},"id":6492,"name":"Identifier","src":"1052:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6476,"type":"address","value":"implementer"},"id":6493,"name":"Identifier","src":"1065:11:16"}],"id":6494,"name":"FunctionCall","src":"1029:48:16"}],"id":6495,"name":"EmitStatement","src":"1024:53:16"}],"id":6496,"name":"Block","src":"961:123:16"}],"id":6497,"name":"FunctionDefinition","src":"858:226:16"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":6625,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6607,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6498,"name":"ElementaryTypeName","src":"1751:7:16"}],"id":6499,"name":"VariableDeclaration","src":"1751:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6607,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6500,"name":"ElementaryTypeName","src":"1765:6:16"}],"id":6501,"name":"VariableDeclaration","src":"1765:18:16"}],"id":6502,"name":"ParameterList","src":"1750:34:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6607,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6503,"name":"ElementaryTypeName","src":"1808:7:16"}],"id":6504,"name":"VariableDeclaration","src":"1808:7:16"}],"id":6505,"name":"ParameterList","src":"1807:9:16"},{"children":[{"attributes":{"assignments":[6507]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":6606,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6506,"name":"ElementaryTypeName","src":"1827:7:16"}],"id":6507,"name":"VariableDeclaration","src":"1827:19:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6508,"name":"Identifier","src":"1849:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6499,"type":"bytes32","value":"node"},"id":6509,"name":"Identifier","src":"1860:4:16"}],"id":6510,"name":"IndexAccess","src":"1849:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6501,"type":"bytes4","value":"interfaceID"},"id":6511,"name":"Identifier","src":"1866:11:16"}],"id":6512,"name":"IndexAccess","src":"1849:29:16"}],"id":6513,"name":"VariableDeclarationStatement","src":"1827:51:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6507,"type":"address","value":"implementer"},"id":6514,"name":"Identifier","src":"1891:11:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6515,"name":"ElementaryTypeNameExpression","src":"1906:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6516,"name":"Literal","src":"1914:1:16"}],"id":6517,"name":"FunctionCall","src":"1906:10:16"}],"id":6518,"name":"BinaryOperation","src":"1891:25:16"},{"children":[{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6507,"type":"address","value":"implementer"},"id":6519,"name":"Identifier","src":"1939:11:16"}],"id":6520,"name":"Return","src":"1932:18:16"}],"id":6521,"name":"Block","src":"1918:43:16"}],"id":6522,"name":"IfStatement","src":"1888:73:16"},{"attributes":{"assignments":[6524]},"children":[{"attributes":{"constant":false,"name":"a","scope":6606,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6523,"name":"ElementaryTypeName","src":"1971:7:16"}],"id":6524,"name":"VariableDeclaration","src":"1971:9:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[5800,5855],"referencedDeclaration":5800,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":6525,"name":"Identifier","src":"1983:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6499,"type":"bytes32","value":"node"},"id":6526,"name":"Identifier","src":"1988:4:16"}],"id":6527,"name":"FunctionCall","src":"1983:10:16"}],"id":6528,"name":"VariableDeclarationStatement","src":"1971:22:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6524,"type":"address","value":"a"},"id":6529,"name":"Identifier","src":"2006:1:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6530,"name":"ElementaryTypeNameExpression","src":"2011:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6531,"name":"Literal","src":"2019:1:16"}],"id":6532,"name":"FunctionCall","src":"2011:10:16"}],"id":6533,"name":"BinaryOperation","src":"2006:15:16"},{"children":[{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6534,"name":"ElementaryTypeNameExpression","src":"2044:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6535,"name":"Literal","src":"2052:1:16"}],"id":6536,"name":"FunctionCall","src":"2044:10:16"}],"id":6537,"name":"Return","src":"2037:17:16"}],"id":6538,"name":"Block","src":"2023:42:16"}],"id":6539,"name":"IfStatement","src":"2003:62:16"},{"attributes":{"assignments":[6541,6543]},"children":[{"attributes":{"constant":false,"name":"success","scope":6606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6540,"name":"ElementaryTypeName","src":"2076:4:16"}],"id":6541,"name":"VariableDeclaration","src":"2076:12:16"},{"attributes":{"constant":false,"name":"returnData","scope":6606,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6542,"name":"ElementaryTypeName","src":"2090:5:16"}],"id":6543,"name":"VariableDeclaration","src":"2090:23:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6524,"type":"address","value":"a"},"id":6544,"name":"Identifier","src":"2117:1:16"}],"id":6545,"name":"MemberAccess","src":"2117:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":6546,"name":"Identifier","src":"2130:3:16"}],"id":6547,"name":"MemberAccess","src":"2130:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6548,"name":"Literal","src":"2154:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6456,"type":"bytes4","value":"INTERFACE_META_ID"},"id":6549,"name":"Identifier","src":"2183:17:16"}],"id":6550,"name":"FunctionCall","src":"2130:71:16"}],"id":6551,"name":"FunctionCall","src":"2117:85:16"}],"id":6552,"name":"VariableDeclarationStatement","src":"2075:127:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6541,"type":"bool","value":"success"},"id":6553,"name":"Identifier","src":"2216:7:16"}],"id":6554,"name":"UnaryOperation","src":"2215:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6555,"name":"Identifier","src":"2227:10:16"}],"id":6556,"name":"MemberAccess","src":"2227:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6557,"name":"Literal","src":"2247:2:16"}],"id":6558,"name":"BinaryOperation","src":"2227:22:16"}],"id":6559,"name":"BinaryOperation","src":"2215:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6560,"name":"Identifier","src":"2253:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6561,"name":"Literal","src":"2264:2:16"}],"id":6562,"name":"IndexAccess","src":"2253:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6563,"name":"Literal","src":"2271:1:16"}],"id":6564,"name":"BinaryOperation","src":"2253:19:16"}],"id":6565,"name":"BinaryOperation","src":"2215:57:16"},{"children":[{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6566,"name":"ElementaryTypeNameExpression","src":"2342:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6567,"name":"Literal","src":"2350:1:16"}],"id":6568,"name":"FunctionCall","src":"2342:10:16"}],"id":6569,"name":"Return","src":"2335:17:16"}],"id":6570,"name":"Block","src":"2274:89:16"}],"id":6571,"name":"IfStatement","src":"2212:151:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6541,"type":"bool","value":"success"},"id":6572,"name":"Identifier","src":"2374:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6573,"name":"Identifier","src":"2383:10:16"}],"id":6574,"name":"TupleExpression","src":"2373:21:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6524,"type":"address","value":"a"},"id":6575,"name":"Identifier","src":"2397:1:16"}],"id":6576,"name":"MemberAccess","src":"2397:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":6577,"name":"Identifier","src":"2410:3:16"}],"id":6578,"name":"MemberAccess","src":"2410:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6579,"name":"Literal","src":"2434:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6501,"type":"bytes4","value":"interfaceID"},"id":6580,"name":"Identifier","src":"2463:11:16"}],"id":6581,"name":"FunctionCall","src":"2410:65:16"}],"id":6582,"name":"FunctionCall","src":"2397:79:16"}],"id":6583,"name":"Assignment","src":"2373:103:16"}],"id":6584,"name":"ExpressionStatement","src":"2373:103:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6541,"type":"bool","value":"success"},"id":6585,"name":"Identifier","src":"2490:7:16"}],"id":6586,"name":"UnaryOperation","src":"2489:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6587,"name":"Identifier","src":"2501:10:16"}],"id":6588,"name":"MemberAccess","src":"2501:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6589,"name":"Literal","src":"2521:2:16"}],"id":6590,"name":"BinaryOperation","src":"2501:22:16"}],"id":6591,"name":"BinaryOperation","src":"2489:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6592,"name":"Identifier","src":"2527:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6593,"name":"Literal","src":"2538:2:16"}],"id":6594,"name":"IndexAccess","src":"2527:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6595,"name":"Literal","src":"2545:1:16"}],"id":6596,"name":"BinaryOperation","src":"2527:19:16"}],"id":6597,"name":"BinaryOperation","src":"2489:57:16"},{"children":[{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6598,"name":"ElementaryTypeNameExpression","src":"2628:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6599,"name":"Literal","src":"2636:1:16"}],"id":6600,"name":"FunctionCall","src":"2628:10:16"}],"id":6601,"name":"Return","src":"2621:17:16"}],"id":6602,"name":"Block","src":"2548:101:16"}],"id":6603,"name":"IfStatement","src":"2486:163:16"},{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6524,"type":"address","value":"a"},"id":6604,"name":"Identifier","src":"2666:1:16"}],"id":6605,"name":"Return","src":"2659:8:16"}],"id":6606,"name":"Block","src":"1817:857:16"}],"id":6607,"name":"FunctionDefinition","src":"1721:953:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6625,"stateMutability":"pure","superFunction":5876,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6624,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6608,"name":"ElementaryTypeName","src":"2707:6:16"}],"id":6609,"name":"VariableDeclaration","src":"2707:18:16"}],"id":6610,"name":"ParameterList","src":"2706:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6624,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6611,"name":"ElementaryTypeName","src":"2747:4:16"}],"id":6612,"name":"VariableDeclaration","src":"2747:4:16"}],"id":6613,"name":"ParameterList","src":"2746:6:16"},{"children":[{"attributes":{"functionReturnParameters":6613},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6609,"type":"bytes4","value":"interfaceID"},"id":6614,"name":"Identifier","src":"2770:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6453,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":6615,"name":"Identifier","src":"2785:22:16"}],"id":6616,"name":"BinaryOperation","src":"2770:37:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5876,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10160,"type":"contract super InterfaceResolver","value":"super"},"id":6617,"name":"Identifier","src":"2811:5:16"}],"id":6618,"name":"MemberAccess","src":"2811:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6609,"type":"bytes4","value":"interfaceID"},"id":6619,"name":"Identifier","src":"2835:11:16"}],"id":6620,"name":"FunctionCall","src":"2811:36:16"}],"id":6621,"name":"BinaryOperation","src":"2770:77:16"}],"id":6622,"name":"Return","src":"2763:84:16"}],"id":6623,"name":"Block","src":"2753:101:16"}],"id":6624,"name":"FunctionDefinition","src":"2680:174:16"}],"id":6625,"name":"ContractDefinition","src":"85:2771:16"}],"id":6626,"name":"SourceUnit","src":"0:2857:16"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[6695]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6627,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6696,"symbolAliases":[null],"unitAlias":""},"id":6628,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6695,8755],"name":"NameResolver","scope":6696},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":6629,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":6630,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":6695,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6631,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":6632,"name":"Literal","src":"144:10:17"}],"id":6633,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6639,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6634,"name":"ElementaryTypeName","src":"179:7:17"}],"id":6635,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6639,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6636,"name":"ElementaryTypeName","src":"201:6:17"}],"id":6637,"name":"VariableDeclaration","src":"201:11:17"}],"id":6638,"name":"ParameterList","src":"178:35:17"}],"id":6639,"name":"EventDefinition","src":"161:53:17"},{"attributes":{"constant":false,"name":"names","scope":6695,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6640,"name":"ElementaryTypeName","src":"228:7:17"},{"attributes":{"name":"string","type":"string"},"id":6641,"name":"ElementaryTypeName","src":"237:6:17"}],"id":6642,"name":"Mapping","src":"220:24:17"}],"id":6643,"name":"VariableDeclaration","src":"220:30:17"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":6695,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6665,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6644,"name":"ElementaryTypeName","src":"509:7:17"}],"id":6645,"name":"VariableDeclaration","src":"509:12:17"},{"attributes":{"constant":false,"name":"name","scope":6665,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6646,"name":"ElementaryTypeName","src":"523:6:17"}],"id":6647,"name":"VariableDeclaration","src":"523:20:17"}],"id":6648,"name":"ParameterList","src":"508:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":6652,"name":"ParameterList","src":"571:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6649,"name":"Identifier","src":"554:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"bytes32","value":"node"},"id":6650,"name":"Identifier","src":"565:4:17"}],"id":6651,"name":"ModifierInvocation","src":"554:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6643,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":6653,"name":"Identifier","src":"581:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"bytes32","value":"node"},"id":6654,"name":"Identifier","src":"587:4:17"}],"id":6655,"name":"IndexAccess","src":"581:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6647,"type":"string calldata","value":"name"},"id":6656,"name":"Identifier","src":"595:4:17"}],"id":6657,"name":"Assignment","src":"581:18:17"}],"id":6658,"name":"ExpressionStatement","src":"581:18:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6639,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":6659,"name":"Identifier","src":"614:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"bytes32","value":"node"},"id":6660,"name":"Identifier","src":"626:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6647,"type":"string calldata","value":"name"},"id":6661,"name":"Identifier","src":"632:4:17"}],"id":6662,"name":"FunctionCall","src":"614:23:17"}],"id":6663,"name":"EmitStatement","src":"609:28:17"}],"id":6664,"name":"Block","src":"571:73:17"}],"id":6665,"name":"FunctionDefinition","src":"492:152:17"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":6695,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6677,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6666,"name":"ElementaryTypeName","src":"858:7:17"}],"id":6667,"name":"VariableDeclaration","src":"858:12:17"}],"id":6668,"name":"ParameterList","src":"857:14:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6677,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6669,"name":"ElementaryTypeName","src":"895:6:17"}],"id":6670,"name":"VariableDeclaration","src":"895:13:17"}],"id":6671,"name":"ParameterList","src":"894:15:17"},{"children":[{"attributes":{"functionReturnParameters":6671},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6643,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":6672,"name":"Identifier","src":"927:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6667,"type":"bytes32","value":"node"},"id":6673,"name":"Identifier","src":"933:4:17"}],"id":6674,"name":"IndexAccess","src":"927:11:17"}],"id":6675,"name":"Return","src":"920:18:17"}],"id":6676,"name":"Block","src":"910:35:17"}],"id":6677,"name":"FunctionDefinition","src":"844:101:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6695,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6694,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6678,"name":"ElementaryTypeName","src":"978:6:17"}],"id":6679,"name":"VariableDeclaration","src":"978:18:17"}],"id":6680,"name":"ParameterList","src":"977:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6694,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6681,"name":"ElementaryTypeName","src":"1018:4:17"}],"id":6682,"name":"VariableDeclaration","src":"1018:4:17"}],"id":6683,"name":"ParameterList","src":"1017:6:17"},{"children":[{"attributes":{"functionReturnParameters":6683},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6679,"type":"bytes4","value":"interfaceID"},"id":6684,"name":"Identifier","src":"1041:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6633,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":6685,"name":"Identifier","src":"1056:17:17"}],"id":6686,"name":"BinaryOperation","src":"1041:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10162,"type":"contract super NameResolver","value":"super"},"id":6687,"name":"Identifier","src":"1077:5:17"}],"id":6688,"name":"MemberAccess","src":"1077:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6679,"type":"bytes4","value":"interfaceID"},"id":6689,"name":"Identifier","src":"1101:11:17"}],"id":6690,"name":"FunctionCall","src":"1077:36:17"}],"id":6691,"name":"BinaryOperation","src":"1041:72:17"}],"id":6692,"name":"Return","src":"1034:79:17"}],"id":6693,"name":"Block","src":"1024:96:17"}],"id":6694,"name":"FunctionDefinition","src":"951:169:17"}],"id":6695,"name":"ContractDefinition","src":"56:1066:17"}],"id":6696,"name":"SourceUnit","src":"0:1123:17"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[6786]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6697,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6787,"symbolAliases":[null],"unitAlias":""},"id":6698,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6786,8755],"name":"PubkeyResolver","scope":6787},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":6699,"name":"UserDefinedTypeName","src":"83:12:18"}],"id":6700,"name":"InheritanceSpecifier","src":"83:12:18"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":6786,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6701,"name":"ElementaryTypeName","src":"102:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":6702,"name":"Literal","src":"148:10:18"}],"id":6703,"name":"VariableDeclaration","src":"102:56:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6711,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6704,"name":"ElementaryTypeName","src":"185:7:18"}],"id":6705,"name":"VariableDeclaration","src":"185:20:18"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":6711,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6706,"name":"ElementaryTypeName","src":"207:7:18"}],"id":6707,"name":"VariableDeclaration","src":"207:9:18"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":6711,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6708,"name":"ElementaryTypeName","src":"218:7:18"}],"id":6709,"name":"VariableDeclaration","src":"218:9:18"}],"id":6710,"name":"ParameterList","src":"184:44:18"}],"id":6711,"name":"EventDefinition","src":"165:64:18"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":6786,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":6716,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6712,"name":"ElementaryTypeName","src":"262:7:18"}],"id":6713,"name":"VariableDeclaration","src":"262:9:18"},{"attributes":{"constant":false,"name":"y","scope":6716,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6714,"name":"ElementaryTypeName","src":"281:7:18"}],"id":6715,"name":"VariableDeclaration","src":"281:9:18"}],"id":6716,"name":"StructDefinition","src":"235:62:18"},{"attributes":{"constant":false,"name":"pubkeys","scope":6786,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6717,"name":"ElementaryTypeName","src":"311:7:18"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":6716,"type":"struct PubkeyResolver.PublicKey"},"id":6718,"name":"UserDefinedTypeName","src":"320:9:18"}],"id":6719,"name":"Mapping","src":"303:27:18"}],"id":6720,"name":"VariableDeclaration","src":"303:35:18"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":6786,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6748,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6721,"name":"ElementaryTypeName","src":"631:7:18"}],"id":6722,"name":"VariableDeclaration","src":"631:12:18"},{"attributes":{"constant":false,"name":"x","scope":6748,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6723,"name":"ElementaryTypeName","src":"645:7:18"}],"id":6724,"name":"VariableDeclaration","src":"645:9:18"},{"attributes":{"constant":false,"name":"y","scope":6748,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6725,"name":"ElementaryTypeName","src":"656:7:18"}],"id":6726,"name":"VariableDeclaration","src":"656:9:18"}],"id":6727,"name":"ParameterList","src":"630:36:18"},{"attributes":{"parameters":[null]},"children":[],"id":6731,"name":"ParameterList","src":"693:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6728,"name":"Identifier","src":"676:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6722,"type":"bytes32","value":"node"},"id":6729,"name":"Identifier","src":"687:4:18"}],"id":6730,"name":"ModifierInvocation","src":"676:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6720,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6732,"name":"Identifier","src":"703:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6722,"type":"bytes32","value":"node"},"id":6733,"name":"Identifier","src":"711:4:18"}],"id":6734,"name":"IndexAccess","src":"703:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6716,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":6735,"name":"Identifier","src":"719:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6724,"type":"bytes32","value":"x"},"id":6736,"name":"Identifier","src":"729:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"bytes32","value":"y"},"id":6737,"name":"Identifier","src":"732:1:18"}],"id":6738,"name":"FunctionCall","src":"719:15:18"}],"id":6739,"name":"Assignment","src":"703:31:18"}],"id":6740,"name":"ExpressionStatement","src":"703:31:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6711,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":6741,"name":"Identifier","src":"749:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6722,"type":"bytes32","value":"node"},"id":6742,"name":"Identifier","src":"763:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6724,"type":"bytes32","value":"x"},"id":6743,"name":"Identifier","src":"769:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"bytes32","value":"y"},"id":6744,"name":"Identifier","src":"772:1:18"}],"id":6745,"name":"FunctionCall","src":"749:25:18"}],"id":6746,"name":"EmitStatement","src":"744:30:18"}],"id":6747,"name":"Block","src":"693:88:18"}],"id":6748,"name":"FunctionDefinition","src":"612:169:18"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":6786,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6749,"name":"ElementaryTypeName","src":"1039:7:18"}],"id":6750,"name":"VariableDeclaration","src":"1039:12:18"}],"id":6751,"name":"ParameterList","src":"1038:14:18"},{"children":[{"attributes":{"constant":false,"name":"x","scope":6768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6752,"name":"ElementaryTypeName","src":"1076:7:18"}],"id":6753,"name":"VariableDeclaration","src":"1076:9:18"},{"attributes":{"constant":false,"name":"y","scope":6768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6754,"name":"ElementaryTypeName","src":"1087:7:18"}],"id":6755,"name":"VariableDeclaration","src":"1087:9:18"}],"id":6756,"name":"ParameterList","src":"1075:22:18"},{"children":[{"attributes":{"functionReturnParameters":6756},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":6713,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6720,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6757,"name":"Identifier","src":"1116:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6750,"type":"bytes32","value":"node"},"id":6758,"name":"Identifier","src":"1124:4:18"}],"id":6759,"name":"IndexAccess","src":"1116:13:18"}],"id":6760,"name":"MemberAccess","src":"1116:15:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":6715,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6720,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6761,"name":"Identifier","src":"1133:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6750,"type":"bytes32","value":"node"},"id":6762,"name":"Identifier","src":"1141:4:18"}],"id":6763,"name":"IndexAccess","src":"1133:13:18"}],"id":6764,"name":"MemberAccess","src":"1133:15:18"}],"id":6765,"name":"TupleExpression","src":"1115:34:18"}],"id":6766,"name":"Return","src":"1108:41:18"}],"id":6767,"name":"Block","src":"1098:58:18"}],"id":6768,"name":"FunctionDefinition","src":"1023:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6786,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6785,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6769,"name":"ElementaryTypeName","src":"1189:6:18"}],"id":6770,"name":"VariableDeclaration","src":"1189:18:18"}],"id":6771,"name":"ParameterList","src":"1188:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":6785,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6772,"name":"ElementaryTypeName","src":"1229:4:18"}],"id":6773,"name":"VariableDeclaration","src":"1229:4:18"}],"id":6774,"name":"ParameterList","src":"1228:6:18"},{"children":[{"attributes":{"functionReturnParameters":6774},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes4","value":"interfaceID"},"id":6775,"name":"Identifier","src":"1252:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6703,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":6776,"name":"Identifier","src":"1267:19:18"}],"id":6777,"name":"BinaryOperation","src":"1252:34:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"contract super PubkeyResolver","value":"super"},"id":6778,"name":"Identifier","src":"1290:5:18"}],"id":6779,"name":"MemberAccess","src":"1290:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes4","value":"interfaceID"},"id":6780,"name":"Identifier","src":"1314:11:18"}],"id":6781,"name":"FunctionCall","src":"1290:36:18"}],"id":6782,"name":"BinaryOperation","src":"1252:74:18"}],"id":6783,"name":"Return","src":"1245:81:18"}],"id":6784,"name":"Block","src":"1235:98:18"}],"id":6785,"name":"FunctionDefinition","src":"1162:171:18"}],"id":6786,"name":"ContractDefinition","src":"56:1279:18"}],"id":6787,"name":"SourceUnit","src":"0:1336:18"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[6869]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6788,"name":"PragmaDirective","src":"0:23:19"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6870,"symbolAliases":[null],"unitAlias":""},"id":6789,"name":"ImportDirective","src":"25:29:19"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6869,8755],"name":"TextResolver","scope":6870},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":6790,"name":"UserDefinedTypeName","src":"81:12:19"}],"id":6791,"name":"InheritanceSpecifier","src":"81:12:19"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":6869,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6792,"name":"ElementaryTypeName","src":"100:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":6793,"name":"Literal","src":"144:10:19"}],"id":6794,"name":"VariableDeclaration","src":"100:54:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6802,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6795,"name":"ElementaryTypeName","src":"179:7:19"}],"id":6796,"name":"VariableDeclaration","src":"179:20:19"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":6802,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6797,"name":"ElementaryTypeName","src":"201:6:19"}],"id":6798,"name":"VariableDeclaration","src":"201:25:19"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":6802,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6799,"name":"ElementaryTypeName","src":"228:6:19"}],"id":6800,"name":"VariableDeclaration","src":"228:10:19"}],"id":6801,"name":"ParameterList","src":"178:61:19"}],"id":6802,"name":"EventDefinition","src":"161:79:19"},{"attributes":{"constant":false,"name":"texts","scope":6869,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6803,"name":"ElementaryTypeName","src":"254:7:19"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6804,"name":"ElementaryTypeName","src":"271:6:19"},{"attributes":{"name":"string","type":"string"},"id":6805,"name":"ElementaryTypeName","src":"279:6:19"}],"id":6806,"name":"Mapping","src":"263:23:19"}],"id":6807,"name":"Mapping","src":"246:41:19"}],"id":6808,"name":"VariableDeclaration","src":"246:47:19"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":6869,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6809,"name":"ElementaryTypeName","src":"590:7:19"}],"id":6810,"name":"VariableDeclaration","src":"590:12:19"},{"attributes":{"constant":false,"name":"key","scope":6835,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6811,"name":"ElementaryTypeName","src":"604:6:19"}],"id":6812,"name":"VariableDeclaration","src":"604:19:19"},{"attributes":{"constant":false,"name":"value","scope":6835,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6813,"name":"ElementaryTypeName","src":"625:6:19"}],"id":6814,"name":"VariableDeclaration","src":"625:21:19"}],"id":6815,"name":"ParameterList","src":"589:58:19"},{"attributes":{"parameters":[null]},"children":[],"id":6819,"name":"ParameterList","src":"674:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6816,"name":"Identifier","src":"657:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6810,"type":"bytes32","value":"node"},"id":6817,"name":"Identifier","src":"668:4:19"}],"id":6818,"name":"ModifierInvocation","src":"657:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6808,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6820,"name":"Identifier","src":"684:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6810,"type":"bytes32","value":"node"},"id":6821,"name":"Identifier","src":"690:4:19"}],"id":6823,"name":"IndexAccess","src":"684:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"string calldata","value":"key"},"id":6822,"name":"Identifier","src":"696:3:19"}],"id":6824,"name":"IndexAccess","src":"684:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6814,"type":"string calldata","value":"value"},"id":6825,"name":"Identifier","src":"703:5:19"}],"id":6826,"name":"Assignment","src":"684:24:19"}],"id":6827,"name":"ExpressionStatement","src":"684:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6802,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":6828,"name":"Identifier","src":"723:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6810,"type":"bytes32","value":"node"},"id":6829,"name":"Identifier","src":"735:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"string calldata","value":"key"},"id":6830,"name":"Identifier","src":"741:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"string calldata","value":"key"},"id":6831,"name":"Identifier","src":"746:3:19"}],"id":6832,"name":"FunctionCall","src":"723:27:19"}],"id":6833,"name":"EmitStatement","src":"718:32:19"}],"id":6834,"name":"Block","src":"674:83:19"}],"id":6835,"name":"FunctionDefinition","src":"573:184:19"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":6869,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6851,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6836,"name":"ElementaryTypeName","src":"988:7:19"}],"id":6837,"name":"VariableDeclaration","src":"988:12:19"},{"attributes":{"constant":false,"name":"key","scope":6851,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6838,"name":"ElementaryTypeName","src":"1002:6:19"}],"id":6839,"name":"VariableDeclaration","src":"1002:19:19"}],"id":6840,"name":"ParameterList","src":"987:35:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6851,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6841,"name":"ElementaryTypeName","src":"1046:6:19"}],"id":6842,"name":"VariableDeclaration","src":"1046:13:19"}],"id":6843,"name":"ParameterList","src":"1045:15:19"},{"children":[{"attributes":{"functionReturnParameters":6843},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6808,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6844,"name":"Identifier","src":"1078:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6837,"type":"bytes32","value":"node"},"id":6845,"name":"Identifier","src":"1084:4:19"}],"id":6846,"name":"IndexAccess","src":"1078:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6839,"type":"string calldata","value":"key"},"id":6847,"name":"Identifier","src":"1090:3:19"}],"id":6848,"name":"IndexAccess","src":"1078:16:19"}],"id":6849,"name":"Return","src":"1071:23:19"}],"id":6850,"name":"Block","src":"1061:40:19"}],"id":6851,"name":"FunctionDefinition","src":"974:127:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6869,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6868,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6852,"name":"ElementaryTypeName","src":"1134:6:19"}],"id":6853,"name":"VariableDeclaration","src":"1134:18:19"}],"id":6854,"name":"ParameterList","src":"1133:20:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6868,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6855,"name":"ElementaryTypeName","src":"1174:4:19"}],"id":6856,"name":"VariableDeclaration","src":"1174:4:19"}],"id":6857,"name":"ParameterList","src":"1173:6:19"},{"children":[{"attributes":{"functionReturnParameters":6857},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"bytes4","value":"interfaceID"},"id":6858,"name":"Identifier","src":"1197:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":6859,"name":"Identifier","src":"1212:17:19"}],"id":6860,"name":"BinaryOperation","src":"1197:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10166,"type":"contract super TextResolver","value":"super"},"id":6861,"name":"Identifier","src":"1233:5:19"}],"id":6862,"name":"MemberAccess","src":"1233:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"bytes4","value":"interfaceID"},"id":6863,"name":"Identifier","src":"1257:11:19"}],"id":6864,"name":"FunctionCall","src":"1233:36:19"}],"id":6865,"name":"BinaryOperation","src":"1197:72:19"}],"id":6866,"name":"Return","src":"1190:79:19"}],"id":6867,"name":"Block","src":"1180:96:19"}],"id":6868,"name":"FunctionDefinition","src":"1107:169:19"}],"id":6869,"name":"ContractDefinition","src":"56:1222:19"}],"id":6870,"name":"SourceUnit","src":"0:1278:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[8575]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6871,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[8575],"name":"strings","scope":8576},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":8575,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":6876,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6872,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":6873,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":6876,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6874,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":6875,"name":"VariableDeclaration","src":"2663:9:20"}],"id":6876,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":6916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6877,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":6878,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":6916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6879,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":6880,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":6916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6881,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":6882,"name":"VariableDeclaration","src":"2722:8:20"}],"id":6883,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":6884,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"uint256","value":"len"},"id":6885,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6886,"name":"Literal","src":"2818:2:20"}],"id":6887,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"uint256","value":"len"},"id":6888,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6889,"name":"Literal","src":"2829:2:20"}],"id":6890,"name":"Assignment","src":"2822:9:20"}],"id":6891,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":6880,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":6878,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":6892,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6878,"type":"uint256","value":"dest"},"id":6893,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6894,"name":"Literal","src":"2933:2:20"}],"id":6895,"name":"Assignment","src":"2925:10:20"}],"id":6896,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6880,"type":"uint256","value":"src"},"id":6897,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6898,"name":"Literal","src":"2956:2:20"}],"id":6899,"name":"Assignment","src":"2949:9:20"}],"id":6900,"name":"ExpressionStatement","src":"2949:9:20"}],"id":6901,"name":"Block","src":"2833:136:20"}],"id":6902,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[6904]},"children":[{"attributes":{"constant":false,"name":"mask","scope":6915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6903,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":6904,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":6905,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6906,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"uint256","value":"len"},"id":6907,"name":"Identifier","src":"3036:3:20"}],"id":6908,"name":"BinaryOperation","src":"3031:8:20"}],"id":6909,"name":"TupleExpression","src":"3030:10:20"}],"id":6910,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6911,"name":"Literal","src":"3043:1:20"}],"id":6912,"name":"BinaryOperation","src":"3023:21:20"}],"id":6913,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":6880,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":6904,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":6878,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":6878,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":6904,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":6914,"name":"InlineAssembly","src":"3054:173:20"}],"id":6915,"name":"Block","src":"2745:488:20"}],"id":6916,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6936,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6917,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":6918,"name":"VariableDeclaration","src":"3450:18:20"}],"id":6919,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":6936,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":6920,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":6921,"name":"VariableDeclaration","src":"3493:12:20"}],"id":6922,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[6924],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":6935,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6923,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":6924,"name":"VariableDeclaration","src":"3517:8:20"}],"id":6925,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":6918,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":6926,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":6922},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6876,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":6927,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6928,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6918,"type":"string memory","value":"self"},"id":6929,"name":"Identifier","src":"3618:4:20"}],"id":6930,"name":"FunctionCall","src":"3612:11:20"}],"id":6931,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"ptr"},"id":6932,"name":"Identifier","src":"3632:3:20"}],"id":6933,"name":"FunctionCall","src":"3606:30:20"}],"id":6934,"name":"Return","src":"3599:37:20"}],"id":6935,"name":"Block","src":"3507:136:20"}],"id":6936,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7062,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6937,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":6938,"name":"VariableDeclaration","src":"3852:12:20"}],"id":6939,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7062,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6940,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":6941,"name":"VariableDeclaration","src":"3889:4:20"}],"id":6942,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[6944],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7061,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6943,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":6944,"name":"VariableDeclaration","src":"3905:8:20"}],"id":6945,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6946,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6947,"name":"Literal","src":"3935:1:20"}],"id":6948,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":6942},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6949,"name":"Literal","src":"3957:1:20"}],"id":6950,"name":"Return","src":"3950:8:20"}],"id":6951,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6952,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6953,"name":"Identifier","src":"3977:4:20"}],"id":6954,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":6955,"name":"Literal","src":"3985:34:20"}],"id":6956,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6957,"name":"Literal","src":"4023:1:20"}],"id":6958,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":6959,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":6960,"name":"Literal","src":"4047:2:20"}],"id":6961,"name":"Assignment","src":"4040:9:20"}],"id":6962,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6963,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":6964,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6965,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6966,"name":"Identifier","src":"4083:4:20"}],"id":6967,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":6968,"name":"Literal","src":"4091:35:20"}],"id":6969,"name":"BinaryOperation","src":"4078:48:20"}],"id":6970,"name":"FunctionCall","src":"4070:57:20"}],"id":6971,"name":"Assignment","src":"4063:64:20"}],"id":6972,"name":"ExpressionStatement","src":"4063:64:20"}],"id":6973,"name":"Block","src":"4026:112:20"}],"id":6974,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6975,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6976,"name":"Identifier","src":"4156:4:20"}],"id":6977,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":6978,"name":"Literal","src":"4164:18:20"}],"id":6979,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6980,"name":"Literal","src":"4186:1:20"}],"id":6981,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":6982,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6983,"name":"Literal","src":"4210:1:20"}],"id":6984,"name":"Assignment","src":"4203:8:20"}],"id":6985,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6986,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":6987,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6988,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6989,"name":"Identifier","src":"4245:4:20"}],"id":6990,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":6991,"name":"Literal","src":"4253:19:20"}],"id":6992,"name":"BinaryOperation","src":"4240:32:20"}],"id":6993,"name":"FunctionCall","src":"4232:41:20"}],"id":6994,"name":"Assignment","src":"4225:48:20"}],"id":6995,"name":"ExpressionStatement","src":"4225:48:20"}],"id":6996,"name":"Block","src":"4189:95:20"}],"id":6997,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6998,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6999,"name":"Identifier","src":"4302:4:20"}],"id":7000,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":7001,"name":"Literal","src":"4310:10:20"}],"id":7002,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7003,"name":"Literal","src":"4324:1:20"}],"id":7004,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":7005,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7006,"name":"Literal","src":"4348:1:20"}],"id":7007,"name":"Assignment","src":"4341:8:20"}],"id":7008,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7009,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7010,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7011,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7012,"name":"Identifier","src":"4383:4:20"}],"id":7013,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":7014,"name":"Literal","src":"4391:11:20"}],"id":7015,"name":"BinaryOperation","src":"4378:24:20"}],"id":7016,"name":"FunctionCall","src":"4370:33:20"}],"id":7017,"name":"Assignment","src":"4363:40:20"}],"id":7018,"name":"ExpressionStatement","src":"4363:40:20"}],"id":7019,"name":"Block","src":"4327:87:20"}],"id":7020,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7021,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7022,"name":"Identifier","src":"4432:4:20"}],"id":7023,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":7024,"name":"Literal","src":"4440:6:20"}],"id":7025,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7026,"name":"Literal","src":"4450:1:20"}],"id":7027,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":7028,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7029,"name":"Literal","src":"4474:1:20"}],"id":7030,"name":"Assignment","src":"4467:8:20"}],"id":7031,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7032,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7033,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7034,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7035,"name":"Identifier","src":"4509:4:20"}],"id":7036,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":7037,"name":"Literal","src":"4517:7:20"}],"id":7038,"name":"BinaryOperation","src":"4504:20:20"}],"id":7039,"name":"FunctionCall","src":"4496:29:20"}],"id":7040,"name":"Assignment","src":"4489:36:20"}],"id":7041,"name":"ExpressionStatement","src":"4489:36:20"}],"id":7042,"name":"Block","src":"4453:83:20"}],"id":7043,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7044,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7045,"name":"Identifier","src":"4554:4:20"}],"id":7046,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7047,"name":"Literal","src":"4562:4:20"}],"id":7048,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7049,"name":"Literal","src":"4570:1:20"}],"id":7050,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":7051,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7052,"name":"Literal","src":"4594:1:20"}],"id":7053,"name":"Assignment","src":"4587:8:20"}],"id":7054,"name":"ExpressionStatement","src":"4587:8:20"}],"id":7055,"name":"Block","src":"4573:33:20"}],"id":7056,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":6942},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7057,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":7058,"name":"Identifier","src":"4627:3:20"}],"id":7059,"name":"BinaryOperation","src":"4622:8:20"}],"id":7060,"name":"Return","src":"4615:15:20"}],"id":7061,"name":"Block","src":"3895:742:20"}],"id":7062,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7063,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":7064,"name":"VariableDeclaration","src":"4963:12:20"}],"id":7065,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7079,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7066,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":7067,"name":"VariableDeclaration","src":"5000:16:20"}],"id":7068,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":7064,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":7067,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":7069,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7067,"type":"struct strings.slice memory","value":"ret"},"id":7070,"name":"Identifier","src":"5286:3:20"}],"id":7072,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[7062,7212],"referencedDeclaration":7062,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":7073,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7064,"type":"bytes32","value":"self"},"id":7074,"name":"Identifier","src":"5301:4:20"}],"id":7075,"name":"FunctionCall","src":"5297:9:20"}],"id":7076,"name":"Assignment","src":"5286:20:20"}],"id":7077,"name":"ExpressionStatement","src":"5286:20:20"}],"id":7078,"name":"Block","src":"5018:295:20"}],"id":7079,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7094,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7080,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":7081,"name":"VariableDeclaration","src":"5528:17:20"}],"id":7082,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7094,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7083,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":7084,"name":"VariableDeclaration","src":"5570:12:20"}],"id":7085,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":7085},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6876,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7086,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7081,"type":"struct strings.slice memory","value":"self"},"id":7087,"name":"Identifier","src":"5607:4:20"}],"id":7088,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7081,"type":"struct strings.slice memory","value":"self"},"id":7089,"name":"Identifier","src":"5618:4:20"}],"id":7090,"name":"MemberAccess","src":"5618:9:20"}],"id":7091,"name":"FunctionCall","src":"5601:27:20"}],"id":7092,"name":"Return","src":"5594:34:20"}],"id":7093,"name":"Block","src":"5584:51:20"}],"id":7094,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7124,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7095,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":7096,"name":"VariableDeclaration","src":"5825:17:20"}],"id":7097,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7124,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7098,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":7099,"name":"VariableDeclaration","src":"5867:13:20"}],"id":7100,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[7102]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7123,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7101,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":7102,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7103,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":7104,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"struct strings.slice memory","value":"self"},"id":7105,"name":"Identifier","src":"5923:4:20"}],"id":7106,"name":"MemberAccess","src":"5923:9:20"}],"id":7107,"name":"FunctionCall","src":"5912:21:20"}],"id":7108,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[7110],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":7123,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7109,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":7110,"name":"VariableDeclaration","src":"5943:11:20"}],"id":7111,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":7110,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":7102,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":7112,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7113,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7110,"type":"uint256","value":"retptr"},"id":7114,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"struct strings.slice memory","value":"self"},"id":7115,"name":"Identifier","src":"6024:4:20"}],"id":7116,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"struct strings.slice memory","value":"self"},"id":7117,"name":"Identifier","src":"6035:4:20"}],"id":7118,"name":"MemberAccess","src":"6035:9:20"}],"id":7119,"name":"FunctionCall","src":"6009:36:20"}],"id":7120,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":7100},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7102,"type":"string memory","value":"ret"},"id":7121,"name":"Identifier","src":"6062:3:20"}],"id":7122,"name":"Return","src":"6055:10:20"}],"id":7123,"name":"Block","src":"5882:190:20"}],"id":7124,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7212,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7125,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":7126,"name":"VariableDeclaration","src":"6476:17:20"}],"id":7127,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":7212,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7128,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":7129,"name":"VariableDeclaration","src":"6518:6:20"}],"id":7130,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[7132]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7131,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":7132,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"struct strings.slice memory","value":"self"},"id":7133,"name":"Identifier","src":"6622:4:20"}],"id":7134,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":7135,"name":"Literal","src":"6634:2:20"}],"id":7136,"name":"BinaryOperation","src":"6622:14:20"}],"id":7137,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[7139]},"children":[{"attributes":{"constant":false,"name":"end","scope":7211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7138,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":7139,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7140,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"struct strings.slice memory","value":"self"},"id":7141,"name":"Identifier","src":"6663:4:20"}],"id":7142,"name":"MemberAccess","src":"6663:9:20"}],"id":7143,"name":"BinaryOperation","src":"6657:15:20"}],"id":7144,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7129,"type":"uint256","value":"l"},"id":7145,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7146,"name":"Literal","src":"6691:1:20"}],"id":7147,"name":"Assignment","src":"6687:5:20"}],"id":7148,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7149,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7139,"type":"uint256","value":"end"},"id":7150,"name":"Identifier","src":"6700:3:20"}],"id":7151,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7129,"type":"uint256","value":"l"},"id":7152,"name":"Identifier","src":"6705:1:20"}],"id":7153,"name":"UnaryOperation","src":"6705:3:20"}],"id":7154,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[7156],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7209,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7155,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":7156,"name":"VariableDeclaration","src":"6724:7:20"}],"id":7157,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7156,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":7132,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":7158,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7159,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7160,"name":"Literal","src":"6805:4:20"}],"id":7161,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7162,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7163,"name":"Literal","src":"6836:1:20"}],"id":7164,"name":"Assignment","src":"6829:8:20"}],"id":7165,"name":"ExpressionStatement","src":"6829:8:20"}],"id":7166,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7167,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7168,"name":"Literal","src":"6866:4:20"}],"id":7169,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7170,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7171,"name":"Literal","src":"6897:1:20"}],"id":7172,"name":"Assignment","src":"6890:8:20"}],"id":7173,"name":"ExpressionStatement","src":"6890:8:20"}],"id":7174,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7175,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7176,"name":"Literal","src":"6927:4:20"}],"id":7177,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7178,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7179,"name":"Literal","src":"6958:1:20"}],"id":7180,"name":"Assignment","src":"6951:8:20"}],"id":7181,"name":"ExpressionStatement","src":"6951:8:20"}],"id":7182,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7183,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":7184,"name":"Literal","src":"6988:4:20"}],"id":7185,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7186,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7187,"name":"Literal","src":"7019:1:20"}],"id":7188,"name":"Assignment","src":"7012:8:20"}],"id":7189,"name":"ExpressionStatement","src":"7012:8:20"}],"id":7190,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7191,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":7192,"name":"Literal","src":"7049:4:20"}],"id":7193,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7194,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7195,"name":"Literal","src":"7080:1:20"}],"id":7196,"name":"Assignment","src":"7073:8:20"}],"id":7197,"name":"ExpressionStatement","src":"7073:8:20"}],"id":7198,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7199,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":7200,"name":"Literal","src":"7127:1:20"}],"id":7201,"name":"Assignment","src":"7120:8:20"}],"id":7202,"name":"ExpressionStatement","src":"7120:8:20"}],"id":7203,"name":"Block","src":"7102:41:20"}],"id":7204,"name":"IfStatement","src":"7041:102:20"}],"id":7205,"name":"IfStatement","src":"6980:163:20"}],"id":7206,"name":"IfStatement","src":"6919:224:20"}],"id":7207,"name":"IfStatement","src":"6858:285:20"}],"id":7208,"name":"IfStatement","src":"6797:346:20"}],"id":7209,"name":"Block","src":"6710:443:20"}],"id":7210,"name":"ForStatement","src":"6682:471:20"}],"id":7211,"name":"Block","src":"6526:633:20"}],"id":7212,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7225,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7213,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":7214,"name":"VariableDeclaration","src":"7367:17:20"}],"id":7215,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7225,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7216,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":7217,"name":"VariableDeclaration","src":"7409:4:20"}],"id":7218,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":7218},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7214,"type":"struct strings.slice memory","value":"self"},"id":7219,"name":"Identifier","src":"7432:4:20"}],"id":7220,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7221,"name":"Literal","src":"7445:1:20"}],"id":7222,"name":"BinaryOperation","src":"7432:14:20"}],"id":7223,"name":"Return","src":"7425:21:20"}],"id":7224,"name":"Block","src":"7415:38:20"}],"id":7225,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7354,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7226,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":7227,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":7354,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7228,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":7229,"name":"VariableDeclaration","src":"7917:18:20"}],"id":7230,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7354,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":7231,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":7232,"name":"VariableDeclaration","src":"7960:3:20"}],"id":7233,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[7235]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":7353,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7234,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":7235,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7227,"type":"struct strings.slice memory","value":"self"},"id":7236,"name":"Identifier","src":"7991:4:20"}],"id":7237,"name":"MemberAccess","src":"7991:9:20"}],"id":7238,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7229,"type":"struct strings.slice memory","value":"other"},"id":7239,"name":"Identifier","src":"8014:5:20"}],"id":7240,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7227,"type":"struct strings.slice memory","value":"self"},"id":7241,"name":"Identifier","src":"8027:4:20"}],"id":7242,"name":"MemberAccess","src":"8027:9:20"}],"id":7243,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7235,"type":"uint256","value":"shortest"},"id":7244,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7229,"type":"struct strings.slice memory","value":"other"},"id":7245,"name":"Identifier","src":"8061:5:20"}],"id":7246,"name":"MemberAccess","src":"8061:10:20"}],"id":7247,"name":"Assignment","src":"8050:21:20"}],"id":7248,"name":"ExpressionStatement","src":"8050:21:20"}],"id":7249,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[7251]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7353,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7250,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":7251,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7227,"type":"struct strings.slice memory","value":"self"},"id":7252,"name":"Identifier","src":"8097:4:20"}],"id":7253,"name":"MemberAccess","src":"8097:9:20"}],"id":7254,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[7256]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":7353,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7255,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":7256,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7229,"type":"struct strings.slice memory","value":"other"},"id":7257,"name":"Identifier","src":"8132:5:20"}],"id":7258,"name":"MemberAccess","src":"8132:10:20"}],"id":7259,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[7261]},"children":[{"attributes":{"constant":false,"name":"idx","scope":7342,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7260,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":7261,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7262,"name":"Literal","src":"8168:1:20"}],"id":7263,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7261,"type":"uint256","value":"idx"},"id":7264,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7235,"type":"uint256","value":"shortest"},"id":7265,"name":"Identifier","src":"8177:8:20"}],"id":7266,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7261,"type":"uint256","value":"idx"},"id":7267,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7268,"name":"Literal","src":"8194:2:20"}],"id":7269,"name":"Assignment","src":"8187:9:20"}],"id":7270,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[7272],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":7341,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7271,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":7272,"name":"VariableDeclaration","src":"8212:6:20"}],"id":7273,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[7275],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7341,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7274,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":7275,"name":"VariableDeclaration","src":"8232:6:20"}],"id":7276,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":7272,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":7251,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":7275,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":7256,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":7277,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7272,"type":"uint256","value":"a"},"id":7278,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7275,"type":"uint256","value":"b"},"id":7279,"name":"Identifier","src":"8371:1:20"}],"id":7280,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[7282]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7331,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7281,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":7282,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7283,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7284,"name":"Literal","src":"8477:1:20"}],"id":7285,"name":"UnaryOperation","src":"8476:2:20"}],"id":7286,"name":"FunctionCall","src":"8468:11:20"}],"id":7287,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7235,"type":"uint256","value":"shortest"},"id":7288,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7289,"name":"Literal","src":"8525:2:20"}],"id":7290,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"uint256","value":"mask"},"id":7291,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7292,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7293,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7294,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7235,"type":"uint256","value":"shortest"},"id":7295,"name":"Identifier","src":"8576:8:20"}],"id":7296,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7261,"type":"uint256","value":"idx"},"id":7297,"name":"Identifier","src":"8587:3:20"}],"id":7298,"name":"BinaryOperation","src":"8571:19:20"}],"id":7299,"name":"TupleExpression","src":"8570:21:20"}],"id":7300,"name":"BinaryOperation","src":"8566:25:20"}],"id":7301,"name":"TupleExpression","src":"8565:27:20"}],"id":7302,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7303,"name":"Literal","src":"8595:1:20"}],"id":7304,"name":"BinaryOperation","src":"8560:36:20"}],"id":7305,"name":"TupleExpression","src":"8559:38:20"}],"id":7306,"name":"UnaryOperation","src":"8558:39:20"}],"id":7307,"name":"Assignment","src":"8551:46:20"}],"id":7308,"name":"ExpressionStatement","src":"8551:46:20"}],"id":7309,"name":"Block","src":"8529:87:20"}],"id":7310,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[7312]},"children":[{"attributes":{"constant":false,"name":"diff","scope":7331,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7311,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":7312,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7272,"type":"uint256","value":"a"},"id":7313,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"uint256","value":"mask"},"id":7314,"name":"Identifier","src":"8653:4:20"}],"id":7315,"name":"BinaryOperation","src":"8649:8:20"}],"id":7316,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7275,"type":"uint256","value":"b"},"id":7317,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"uint256","value":"mask"},"id":7318,"name":"Identifier","src":"8666:4:20"}],"id":7319,"name":"BinaryOperation","src":"8662:8:20"}],"id":7320,"name":"TupleExpression","src":"8661:10:20"}],"id":7321,"name":"BinaryOperation","src":"8648:23:20"}],"id":7322,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7312,"type":"uint256","value":"diff"},"id":7323,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7324,"name":"Literal","src":"8701:1:20"}],"id":7325,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":7233},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7326,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7312,"type":"uint256","value":"diff"},"id":7327,"name":"Identifier","src":"8735:4:20"}],"id":7328,"name":"FunctionCall","src":"8731:9:20"}],"id":7329,"name":"Return","src":"8724:16:20"}],"id":7330,"name":"IfStatement","src":"8689:51:20"}],"id":7331,"name":"Block","src":"8374:381:20"}],"id":7332,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7251,"type":"uint256","value":"selfptr"},"id":7333,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7334,"name":"Literal","src":"8779:2:20"}],"id":7335,"name":"Assignment","src":"8768:13:20"}],"id":7336,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7256,"type":"uint256","value":"otherptr"},"id":7337,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7338,"name":"Literal","src":"8807:2:20"}],"id":7339,"name":"Assignment","src":"8795:14:20"}],"id":7340,"name":"ExpressionStatement","src":"8795:14:20"}],"id":7341,"name":"Block","src":"8198:622:20"}],"id":7342,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":7233},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7343,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7227,"type":"struct strings.slice memory","value":"self"},"id":7344,"name":"Identifier","src":"8840:4:20"}],"id":7345,"name":"MemberAccess","src":"8840:9:20"}],"id":7346,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7347,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7229,"type":"struct strings.slice memory","value":"other"},"id":7348,"name":"Identifier","src":"8857:5:20"}],"id":7349,"name":"MemberAccess","src":"8857:10:20"}],"id":7350,"name":"FunctionCall","src":"8853:15:20"}],"id":7351,"name":"BinaryOperation","src":"8836:32:20"}],"id":7352,"name":"Return","src":"8829:39:20"}],"id":7353,"name":"Block","src":"7965:910:20"}],"id":7354,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7371,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7355,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":7356,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":7371,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7357,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":7358,"name":"VariableDeclaration","src":"9154:18:20"}],"id":7359,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7371,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7360,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":7361,"name":"VariableDeclaration","src":"9197:4:20"}],"id":7362,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":7362},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7354,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":7363,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7356,"type":"struct strings.slice memory","value":"self"},"id":7364,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7358,"type":"struct strings.slice memory","value":"other"},"id":7365,"name":"Identifier","src":"9234:5:20"}],"id":7366,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7367,"name":"Literal","src":"9244:1:20"}],"id":7368,"name":"BinaryOperation","src":"9220:25:20"}],"id":7369,"name":"Return","src":"9213:32:20"}],"id":7370,"name":"Block","src":"9203:49:20"}],"id":7371,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7489,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7372,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":7373,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":7489,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7374,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":7375,"name":"VariableDeclaration","src":"9582:17:20"}],"id":7376,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7489,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7377,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":7378,"name":"VariableDeclaration","src":"9624:12:20"}],"id":7379,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7380,"name":"Identifier","src":"9648:4:20"}],"id":7382,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7383,"name":"Identifier","src":"9660:4:20"}],"id":7384,"name":"MemberAccess","src":"9660:9:20"}],"id":7385,"name":"Assignment","src":"9648:21:20"}],"id":7386,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7387,"name":"Identifier","src":"9684:4:20"}],"id":7388,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7389,"name":"Literal","src":"9697:1:20"}],"id":7390,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7391,"name":"Identifier","src":"9714:4:20"}],"id":7393,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7394,"name":"Literal","src":"9726:1:20"}],"id":7395,"name":"Assignment","src":"9714:13:20"}],"id":7396,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":7379},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7397,"name":"Identifier","src":"9748:4:20"}],"id":7398,"name":"Return","src":"9741:11:20"}],"id":7399,"name":"Block","src":"9700:63:20"}],"id":7400,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[7402],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":7488,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7401,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":7402,"name":"VariableDeclaration","src":"9773:6:20"}],"id":7403,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[7405],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7488,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7404,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":7405,"name":"VariableDeclaration","src":"9789:6:20"}],"id":7406,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7405,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":7373,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":7407,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7405,"type":"uint256","value":"b"},"id":7408,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7409,"name":"Literal","src":"9949:4:20"}],"id":7410,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7411,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7412,"name":"Literal","src":"9973:1:20"}],"id":7413,"name":"Assignment","src":"9969:5:20"}],"id":7414,"name":"ExpressionStatement","src":"9969:5:20"}],"id":7415,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7405,"type":"uint256","value":"b"},"id":7416,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7417,"name":"Literal","src":"9999:4:20"}],"id":7418,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7419,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7420,"name":"Literal","src":"10023:1:20"}],"id":7421,"name":"Assignment","src":"10019:5:20"}],"id":7422,"name":"ExpressionStatement","src":"10019:5:20"}],"id":7423,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7405,"type":"uint256","value":"b"},"id":7424,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7425,"name":"Literal","src":"10049:4:20"}],"id":7426,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7427,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7428,"name":"Literal","src":"10073:1:20"}],"id":7429,"name":"Assignment","src":"10069:5:20"}],"id":7430,"name":"ExpressionStatement","src":"10069:5:20"}],"id":7431,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7432,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7433,"name":"Literal","src":"10109:1:20"}],"id":7434,"name":"Assignment","src":"10105:5:20"}],"id":7435,"name":"ExpressionStatement","src":"10105:5:20"}],"id":7436,"name":"Block","src":"10091:30:20"}],"id":7437,"name":"IfStatement","src":"10041:80:20"}],"id":7438,"name":"IfStatement","src":"9991:130:20"}],"id":7439,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7440,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7441,"name":"Identifier","src":"10181:4:20"}],"id":7442,"name":"MemberAccess","src":"10181:9:20"}],"id":7443,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7444,"name":"Identifier","src":"10206:4:20"}],"id":7446,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7447,"name":"Identifier","src":"10218:4:20"}],"id":7448,"name":"MemberAccess","src":"10218:9:20"}],"id":7449,"name":"Assignment","src":"10206:21:20"}],"id":7450,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7451,"name":"Identifier","src":"10241:4:20"}],"id":7453,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7454,"name":"Identifier","src":"10254:4:20"}],"id":7455,"name":"MemberAccess","src":"10254:9:20"}],"id":7456,"name":"Assignment","src":"10241:22:20"}],"id":7457,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7458,"name":"Identifier","src":"10277:4:20"}],"id":7460,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7461,"name":"Literal","src":"10289:1:20"}],"id":7462,"name":"Assignment","src":"10277:13:20"}],"id":7463,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":7379},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7464,"name":"Identifier","src":"10311:4:20"}],"id":7465,"name":"Return","src":"10304:11:20"}],"id":7466,"name":"Block","src":"10192:134:20"}],"id":7467,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7468,"name":"Identifier","src":"10336:4:20"}],"id":7470,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7471,"name":"Identifier","src":"10349:1:20"}],"id":7472,"name":"Assignment","src":"10336:14:20"}],"id":7473,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7474,"name":"Identifier","src":"10360:4:20"}],"id":7476,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7477,"name":"Identifier","src":"10373:1:20"}],"id":7478,"name":"Assignment","src":"10360:14:20"}],"id":7479,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7480,"name":"Identifier","src":"10384:4:20"}],"id":7482,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7483,"name":"Identifier","src":"10396:1:20"}],"id":7484,"name":"Assignment","src":"10384:13:20"}],"id":7485,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":7379},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7486,"name":"Identifier","src":"10414:4:20"}],"id":7487,"name":"Return","src":"10407:11:20"}],"id":7488,"name":"Block","src":"9638:787:20"}],"id":7489,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7502,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7490,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":7491,"name":"VariableDeclaration","src":"10683:17:20"}],"id":7492,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7502,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7493,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":7494,"name":"VariableDeclaration","src":"10725:16:20"}],"id":7495,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[7489,7502],"referencedDeclaration":7489,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":7496,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7491,"type":"struct strings.slice memory","value":"self"},"id":7497,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7494,"type":"struct strings.slice memory","value":"ret"},"id":7498,"name":"Identifier","src":"10768:3:20"}],"id":7499,"name":"FunctionCall","src":"10753:19:20"}],"id":7500,"name":"ExpressionStatement","src":"10753:19:20"}],"id":7501,"name":"Block","src":"10743:36:20"}],"id":7502,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7649,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7503,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":7504,"name":"VariableDeclaration","src":"10988:17:20"}],"id":7505,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7649,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7506,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":7507,"name":"VariableDeclaration","src":"11030:8:20"}],"id":7508,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7504,"type":"struct strings.slice memory","value":"self"},"id":7509,"name":"Identifier","src":"11054:4:20"}],"id":7510,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7511,"name":"Literal","src":"11067:1:20"}],"id":7512,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":7508},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7513,"name":"Literal","src":"11091:1:20"}],"id":7514,"name":"Return","src":"11084:8:20"}],"id":7515,"name":"Block","src":"11070:33:20"}],"id":7516,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[7518],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":7648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7517,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":7518,"name":"VariableDeclaration","src":"11113:9:20"}],"id":7519,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[7521],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":7648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7520,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":7521,"name":"VariableDeclaration","src":"11132:11:20"}],"id":7522,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[7524]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":7648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7523,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":7524,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7525,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":7526,"name":"Literal","src":"11173:3:20"}],"id":7527,"name":"BinaryOperation","src":"11168:8:20"}],"id":7528,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":7518,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":7504,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":7529,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[7531]},"children":[{"attributes":{"constant":false,"name":"b","scope":7648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7530,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":7531,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7518,"type":"uint256","value":"word"},"id":7532,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint256","value":"divisor"},"id":7533,"name":"Identifier","src":"11303:7:20"}],"id":7534,"name":"BinaryOperation","src":"11296:14:20"}],"id":7535,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7536,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7537,"name":"Literal","src":"11328:4:20"}],"id":7538,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7539,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7540,"name":"Identifier","src":"11354:1:20"}],"id":7541,"name":"Assignment","src":"11348:7:20"}],"id":7542,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7543,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7544,"name":"Literal","src":"11378:1:20"}],"id":7545,"name":"Assignment","src":"11369:10:20"}],"id":7546,"name":"ExpressionStatement","src":"11369:10:20"}],"id":7547,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7548,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7549,"name":"Literal","src":"11404:4:20"}],"id":7550,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7551,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7552,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":7553,"name":"Literal","src":"11434:4:20"}],"id":7554,"name":"BinaryOperation","src":"11430:8:20"}],"id":7555,"name":"Assignment","src":"11424:14:20"}],"id":7556,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7557,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7558,"name":"Literal","src":"11461:1:20"}],"id":7559,"name":"Assignment","src":"11452:10:20"}],"id":7560,"name":"ExpressionStatement","src":"11452:10:20"}],"id":7561,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7562,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7563,"name":"Literal","src":"11487:4:20"}],"id":7564,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7565,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7566,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":7567,"name":"Literal","src":"11517:4:20"}],"id":7568,"name":"BinaryOperation","src":"11513:8:20"}],"id":7569,"name":"Assignment","src":"11507:14:20"}],"id":7570,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7571,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7572,"name":"Literal","src":"11544:1:20"}],"id":7573,"name":"Assignment","src":"11535:10:20"}],"id":7574,"name":"ExpressionStatement","src":"11535:10:20"}],"id":7575,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7576,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7577,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":7578,"name":"Literal","src":"11586:4:20"}],"id":7579,"name":"BinaryOperation","src":"11582:8:20"}],"id":7580,"name":"Assignment","src":"11576:14:20"}],"id":7581,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7582,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7583,"name":"Literal","src":"11613:1:20"}],"id":7584,"name":"Assignment","src":"11604:10:20"}],"id":7585,"name":"ExpressionStatement","src":"11604:10:20"}],"id":7586,"name":"Block","src":"11562:63:20"}],"id":7587,"name":"IfStatement","src":"11479:146:20"}],"id":7588,"name":"IfStatement","src":"11396:229:20"}],"id":7589,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7590,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7504,"type":"struct strings.slice memory","value":"self"},"id":7591,"name":"Identifier","src":"11690:4:20"}],"id":7592,"name":"MemberAccess","src":"11690:9:20"}],"id":7593,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":7508},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7594,"name":"Literal","src":"11722:1:20"}],"id":7595,"name":"Return","src":"11715:8:20"}],"id":7596,"name":"Block","src":"11701:33:20"}],"id":7597,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[7599]},"children":[{"attributes":{"constant":false,"name":"i","scope":7645,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7598,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":7599,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7600,"name":"Literal","src":"11758:1:20"}],"id":7601,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7599,"type":"uint256","value":"i"},"id":7602,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7603,"name":"Identifier","src":"11765:6:20"}],"id":7604,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7599,"type":"uint256","value":"i"},"id":7605,"name":"Identifier","src":"11773:1:20"}],"id":7606,"name":"UnaryOperation","src":"11773:3:20"}],"id":7607,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint256","value":"divisor"},"id":7608,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint256","value":"divisor"},"id":7609,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7610,"name":"Literal","src":"11812:3:20"}],"id":7611,"name":"BinaryOperation","src":"11802:13:20"}],"id":7612,"name":"Assignment","src":"11792:23:20"}],"id":7613,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7614,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7518,"type":"uint256","value":"word"},"id":7615,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint256","value":"divisor"},"id":7616,"name":"Identifier","src":"11841:7:20"}],"id":7617,"name":"BinaryOperation","src":"11834:14:20"}],"id":7618,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":7619,"name":"Literal","src":"11852:4:20"}],"id":7620,"name":"BinaryOperation","src":"11833:23:20"}],"id":7621,"name":"Assignment","src":"11829:27:20"}],"id":7622,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7623,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":7624,"name":"Literal","src":"11878:4:20"}],"id":7625,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7626,"name":"Literal","src":"11886:4:20"}],"id":7627,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":7508},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7628,"name":"Literal","src":"11959:1:20"}],"id":7629,"name":"Return","src":"11952:8:20"}],"id":7630,"name":"Block","src":"11892:83:20"}],"id":7631,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7632,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7633,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7634,"name":"Literal","src":"12001:2:20"}],"id":7635,"name":"BinaryOperation","src":"11995:8:20"}],"id":7636,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7637,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":7638,"name":"Literal","src":"12012:4:20"}],"id":7639,"name":"BinaryOperation","src":"12008:8:20"}],"id":7640,"name":"TupleExpression","src":"12007:10:20"}],"id":7641,"name":"BinaryOperation","src":"11994:23:20"}],"id":7642,"name":"Assignment","src":"11988:29:20"}],"id":7643,"name":"ExpressionStatement","src":"11988:29:20"}],"id":7644,"name":"Block","src":"11778:250:20"}],"id":7645,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":7508},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7646,"name":"Identifier","src":"12045:3:20"}],"id":7647,"name":"Return","src":"12038:10:20"}],"id":7648,"name":"Block","src":"11040:1015:20"}],"id":7649,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7658,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7650,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":7651,"name":"VariableDeclaration","src":"12222:17:20"}],"id":7652,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7658,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7653,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":7654,"name":"VariableDeclaration","src":"12264:11:20"}],"id":7655,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":7654,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":7651,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":7651,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":7656,"name":"InlineAssembly","src":"12287:84:20"}],"id":7657,"name":"Block","src":"12277:100:20"}],"id":7658,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7659,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":7660,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7661,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":7662,"name":"VariableDeclaration","src":"12665:19:20"}],"id":7663,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7692,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7664,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":7665,"name":"VariableDeclaration","src":"12709:4:20"}],"id":7666,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7660,"type":"struct strings.slice memory","value":"self"},"id":7667,"name":"Identifier","src":"12729:4:20"}],"id":7668,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7662,"type":"struct strings.slice memory","value":"needle"},"id":7669,"name":"Identifier","src":"12741:6:20"}],"id":7670,"name":"MemberAccess","src":"12741:11:20"}],"id":7671,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":7666},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7672,"name":"Literal","src":"12775:5:20"}],"id":7673,"name":"Return","src":"12768:12:20"}],"id":7674,"name":"Block","src":"12754:37:20"}],"id":7675,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7660,"type":"struct strings.slice memory","value":"self"},"id":7676,"name":"Identifier","src":"12805:4:20"}],"id":7677,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7662,"type":"struct strings.slice memory","value":"needle"},"id":7678,"name":"Identifier","src":"12818:6:20"}],"id":7679,"name":"MemberAccess","src":"12818:11:20"}],"id":7680,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":7666},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7681,"name":"Literal","src":"12852:4:20"}],"id":7682,"name":"Return","src":"12845:11:20"}],"id":7683,"name":"Block","src":"12831:36:20"}],"id":7684,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[7686],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":7691,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7685,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":7686,"name":"VariableDeclaration","src":"12877:10:20"}],"id":7687,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":7662,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":7660,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":7686,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":7662,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7688,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":7666},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7686,"type":"bool","value":"equal"},"id":7689,"name":"Identifier","src":"13159:5:20"}],"id":7690,"name":"Return","src":"13152:12:20"}],"id":7691,"name":"Block","src":"12715:456:20"}],"id":7692,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7693,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":7694,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7695,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":7696,"name":"VariableDeclaration","src":"13478:19:20"}],"id":7697,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7698,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":7699,"name":"VariableDeclaration","src":"13522:12:20"}],"id":7700,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7701,"name":"Identifier","src":"13550:4:20"}],"id":7702,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7696,"type":"struct strings.slice memory","value":"needle"},"id":7703,"name":"Identifier","src":"13562:6:20"}],"id":7704,"name":"MemberAccess","src":"13562:11:20"}],"id":7705,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":7700},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7706,"name":"Identifier","src":"13596:4:20"}],"id":7707,"name":"Return","src":"13589:11:20"}],"id":7708,"name":"Block","src":"13575:36:20"}],"id":7709,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[7711]},"children":[{"attributes":{"constant":false,"name":"equal","scope":7741,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7710,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":7711,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7712,"name":"Literal","src":"13634:4:20"}],"id":7713,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7714,"name":"Identifier","src":"13652:4:20"}],"id":7715,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7696,"type":"struct strings.slice memory","value":"needle"},"id":7716,"name":"Identifier","src":"13665:6:20"}],"id":7717,"name":"MemberAccess","src":"13665:11:20"}],"id":7718,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":7696,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":7694,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"equal":{"declaration":7711,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}},{"needle":{"declaration":7696,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7719,"name":"InlineAssembly","src":"13692:266:20"}],"id":7720,"name":"Block","src":"13678:290:20"}],"id":7721,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7711,"type":"bool","value":"equal"},"id":7722,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7723,"name":"Identifier","src":"14003:4:20"}],"id":7725,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7696,"type":"struct strings.slice memory","value":"needle"},"id":7726,"name":"Identifier","src":"14016:6:20"}],"id":7727,"name":"MemberAccess","src":"14016:11:20"}],"id":7728,"name":"Assignment","src":"14003:24:20"}],"id":7729,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7730,"name":"Identifier","src":"14041:4:20"}],"id":7732,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7696,"type":"struct strings.slice memory","value":"needle"},"id":7733,"name":"Identifier","src":"14054:6:20"}],"id":7734,"name":"MemberAccess","src":"14054:11:20"}],"id":7735,"name":"Assignment","src":"14041:24:20"}],"id":7736,"name":"ExpressionStatement","src":"14041:24:20"}],"id":7737,"name":"Block","src":"13989:87:20"}],"id":7738,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":7700},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7739,"name":"Identifier","src":"14093:4:20"}],"id":7740,"name":"Return","src":"14086:11:20"}],"id":7741,"name":"Block","src":"13536:568:20"}],"id":7742,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7743,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":7744,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7745,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":7746,"name":"VariableDeclaration","src":"14391:19:20"}],"id":7747,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7786,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7748,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":7749,"name":"VariableDeclaration","src":"14435:4:20"}],"id":7750,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7744,"type":"struct strings.slice memory","value":"self"},"id":7751,"name":"Identifier","src":"14455:4:20"}],"id":7752,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7746,"type":"struct strings.slice memory","value":"needle"},"id":7753,"name":"Identifier","src":"14467:6:20"}],"id":7754,"name":"MemberAccess","src":"14467:11:20"}],"id":7755,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":7750},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7756,"name":"Literal","src":"14501:5:20"}],"id":7757,"name":"Return","src":"14494:12:20"}],"id":7758,"name":"Block","src":"14480:37:20"}],"id":7759,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[7761]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7785,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7760,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":7761,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7744,"type":"struct strings.slice memory","value":"self"},"id":7762,"name":"Identifier","src":"14542:4:20"}],"id":7763,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7744,"type":"struct strings.slice memory","value":"self"},"id":7764,"name":"Identifier","src":"14554:4:20"}],"id":7765,"name":"MemberAccess","src":"14554:9:20"}],"id":7766,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7746,"type":"struct strings.slice memory","value":"needle"},"id":7767,"name":"Identifier","src":"14566:6:20"}],"id":7768,"name":"MemberAccess","src":"14566:11:20"}],"id":7769,"name":"BinaryOperation","src":"14542:35:20"}],"id":7770,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7761,"type":"uint256","value":"selfptr"},"id":7771,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7746,"type":"struct strings.slice memory","value":"needle"},"id":7772,"name":"Identifier","src":"14603:6:20"}],"id":7773,"name":"MemberAccess","src":"14603:11:20"}],"id":7774,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":7750},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7775,"name":"Literal","src":"14637:4:20"}],"id":7776,"name":"Return","src":"14630:11:20"}],"id":7777,"name":"Block","src":"14616:36:20"}],"id":7778,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[7780],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":7785,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7779,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":7780,"name":"VariableDeclaration","src":"14662:10:20"}],"id":7781,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":7746,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":7780,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":7746,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":7761,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7782,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":7750},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7780,"type":"bool","value":"equal"},"id":7783,"name":"Identifier","src":"14895:5:20"}],"id":7784,"name":"Return","src":"14888:12:20"}],"id":7785,"name":"Block","src":"14441:466:20"}],"id":7786,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7839,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7787,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":7788,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7839,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7789,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":7790,"name":"VariableDeclaration","src":"15205:19:20"}],"id":7791,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7839,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7792,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":7793,"name":"VariableDeclaration","src":"15249:12:20"}],"id":7794,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7795,"name":"Identifier","src":"15277:4:20"}],"id":7796,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7797,"name":"Identifier","src":"15289:6:20"}],"id":7798,"name":"MemberAccess","src":"15289:11:20"}],"id":7799,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7800,"name":"Identifier","src":"15323:4:20"}],"id":7801,"name":"Return","src":"15316:11:20"}],"id":7802,"name":"Block","src":"15302:36:20"}],"id":7803,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[7805]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7838,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7804,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":7805,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7806,"name":"Identifier","src":"15363:4:20"}],"id":7807,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7808,"name":"Identifier","src":"15375:4:20"}],"id":7809,"name":"MemberAccess","src":"15375:9:20"}],"id":7810,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7811,"name":"Identifier","src":"15387:6:20"}],"id":7812,"name":"MemberAccess","src":"15387:11:20"}],"id":7813,"name":"BinaryOperation","src":"15363:35:20"}],"id":7814,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[7816]},"children":[{"attributes":{"constant":false,"name":"equal","scope":7838,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7815,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":7816,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7817,"name":"Literal","src":"15421:4:20"}],"id":7818,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7805,"type":"uint256","value":"selfptr"},"id":7819,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7820,"name":"Identifier","src":"15450:6:20"}],"id":7821,"name":"MemberAccess","src":"15450:11:20"}],"id":7822,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":7790,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":7816,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":7790,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":7805,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7823,"name":"InlineAssembly","src":"15477:212:20"}],"id":7824,"name":"Block","src":"15463:236:20"}],"id":7825,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7816,"type":"bool","value":"equal"},"id":7826,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7827,"name":"Identifier","src":"15734:4:20"}],"id":7829,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7830,"name":"Identifier","src":"15747:6:20"}],"id":7831,"name":"MemberAccess","src":"15747:11:20"}],"id":7832,"name":"Assignment","src":"15734:24:20"}],"id":7833,"name":"ExpressionStatement","src":"15734:24:20"}],"id":7834,"name":"Block","src":"15720:49:20"}],"id":7835,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7836,"name":"Identifier","src":"15786:4:20"}],"id":7837,"name":"Return","src":"15779:11:20"}],"id":7838,"name":"Block","src":"15263:534:20"}],"id":7839,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7840,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":7841,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7842,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":7843,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7844,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":7845,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7846,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":7847,"name":"VariableDeclaration","src":"16015:14:20"}],"id":7848,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7849,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":7850,"name":"VariableDeclaration","src":"16053:4:20"}],"id":7851,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[7853]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7959,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7852,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":7853,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7843,"type":"uint256","value":"selfptr"},"id":7854,"name":"Identifier","src":"16080:7:20"}],"id":7855,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[7857],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":7959,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7856,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":7857,"name":"VariableDeclaration","src":"16097:8:20"}],"id":7858,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7859,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7860,"name":"Identifier","src":"16133:7:20"}],"id":7861,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7862,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7863,"name":"Literal","src":"16173:2:20"}],"id":7864,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[7866]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7918,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7865,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":7866,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7867,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7868,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7869,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7870,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7871,"name":"Identifier","src":"16236:9:20"}],"id":7872,"name":"BinaryOperation","src":"16231:14:20"}],"id":7873,"name":"TupleExpression","src":"16230:16:20"}],"id":7874,"name":"BinaryOperation","src":"16226:20:20"}],"id":7875,"name":"TupleExpression","src":"16225:22:20"}],"id":7876,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7877,"name":"Literal","src":"16250:1:20"}],"id":7878,"name":"BinaryOperation","src":"16220:31:20"}],"id":7879,"name":"TupleExpression","src":"16219:33:20"}],"id":7880,"name":"UnaryOperation","src":"16218:34:20"}],"id":7881,"name":"FunctionCall","src":"16210:43:20"}],"id":7882,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[7884],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":7918,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7883,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":7884,"name":"VariableDeclaration","src":"16272:18:20"}],"id":7885,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":7884,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":7847,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":7866,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":7886,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[7888]},"children":[{"attributes":{"constant":false,"name":"end","scope":7918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7887,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":7888,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7843,"type":"uint256","value":"selfptr"},"id":7889,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7890,"name":"Identifier","src":"16401:7:20"}],"id":7891,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7892,"name":"Identifier","src":"16411:9:20"}],"id":7893,"name":"BinaryOperation","src":"16391:29:20"}],"id":7894,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[7896],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":7918,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7895,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":7896,"name":"VariableDeclaration","src":"16438:15:20"}],"id":7897,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":7896,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":7853,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":7866,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":7898,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7896,"type":"bytes32","value":"ptrdata"},"id":7899,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7884,"type":"bytes32","value":"needledata"},"id":7900,"name":"Identifier","src":"16552:10:20"}],"id":7901,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7902,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7888,"type":"uint256","value":"end"},"id":7903,"name":"Identifier","src":"16597:3:20"}],"id":7904,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":7851},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7843,"type":"uint256","value":"selfptr"},"id":7905,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7906,"name":"Identifier","src":"16643:7:20"}],"id":7907,"name":"BinaryOperation","src":"16633:17:20"}],"id":7908,"name":"Return","src":"16626:24:20"}],"id":7909,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7910,"name":"Identifier","src":"16672:3:20"}],"id":7911,"name":"UnaryOperation","src":"16672:5:20"}],"id":7912,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":7896,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":7853,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":7866,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":7913,"name":"InlineAssembly","src":"16699:45:20"}],"id":7914,"name":"Block","src":"16564:198:20"}],"id":7915,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":7851},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7916,"name":"Identifier","src":"16786:3:20"}],"id":7917,"name":"Return","src":"16779:10:20"}],"id":7918,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[7920],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":7951,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7919,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":7920,"name":"VariableDeclaration","src":"16877:12:20"}],"id":7921,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":7920,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":7847,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":7845,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":7922,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7857,"type":"uint256","value":"idx"},"id":7923,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7924,"name":"Literal","src":"16988:1:20"}],"id":7925,"name":"Assignment","src":"16982:7:20"}],"id":7926,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7857,"type":"uint256","value":"idx"},"id":7927,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7928,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7929,"name":"Identifier","src":"17008:9:20"}],"id":7930,"name":"BinaryOperation","src":"16998:19:20"}],"id":7931,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7857,"type":"uint256","value":"idx"},"id":7932,"name":"Identifier","src":"17019:3:20"}],"id":7933,"name":"UnaryOperation","src":"17019:5:20"}],"id":7934,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[7936],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":7949,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7935,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":7936,"name":"VariableDeclaration","src":"17048:16:20"}],"id":7937,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":7936,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":7853,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":7845,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":7938,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7920,"type":"bytes32","value":"hash"},"id":7939,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7936,"type":"bytes32","value":"testHash"},"id":7940,"name":"Identifier","src":"17169:8:20"}],"id":7941,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":7851},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7942,"name":"Identifier","src":"17210:3:20"}],"id":7943,"name":"Return","src":"17203:10:20"}],"id":7944,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7945,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7946,"name":"Literal","src":"17242:1:20"}],"id":7947,"name":"Assignment","src":"17235:8:20"}],"id":7948,"name":"ExpressionStatement","src":"17235:8:20"}],"id":7949,"name":"Block","src":"17026:236:20"}],"id":7950,"name":"ForStatement","src":"16977:285:20"}],"id":7951,"name":"Block","src":"16810:466:20"}],"id":7952,"name":"IfStatement","src":"16156:1120:20"}],"id":7953,"name":"Block","src":"16142:1144:20"}],"id":7954,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":7851},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7843,"type":"uint256","value":"selfptr"},"id":7955,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7956,"name":"Identifier","src":"17312:7:20"}],"id":7957,"name":"BinaryOperation","src":"17302:17:20"}],"id":7958,"name":"Return","src":"17295:24:20"}],"id":7959,"name":"Block","src":"16059:1267:20"}],"id":7960,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7961,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":7962,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7963,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":7964,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7965,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":7966,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7967,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":7968,"name":"VariableDeclaration","src":"17541:14:20"}],"id":7969,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7970,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":7971,"name":"VariableDeclaration","src":"17579:4:20"}],"id":7972,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[7974],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7973,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":7974,"name":"VariableDeclaration","src":"17595:8:20"}],"id":7975,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":7976,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7962,"type":"uint256","value":"selflen"},"id":7977,"name":"Identifier","src":"17631:7:20"}],"id":7978,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":7979,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7980,"name":"Literal","src":"17671:2:20"}],"id":7981,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[7983]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7982,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":7983,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7984,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7985,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7986,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7987,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":7988,"name":"Identifier","src":"17734:9:20"}],"id":7989,"name":"BinaryOperation","src":"17729:14:20"}],"id":7990,"name":"TupleExpression","src":"17728:16:20"}],"id":7991,"name":"BinaryOperation","src":"17724:20:20"}],"id":7992,"name":"TupleExpression","src":"17723:22:20"}],"id":7993,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7994,"name":"Literal","src":"17748:1:20"}],"id":7995,"name":"BinaryOperation","src":"17718:31:20"}],"id":7996,"name":"TupleExpression","src":"17717:33:20"}],"id":7997,"name":"UnaryOperation","src":"17716:34:20"}],"id":7998,"name":"FunctionCall","src":"17708:43:20"}],"id":7999,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[8001],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8000,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":8001,"name":"VariableDeclaration","src":"17770:18:20"}],"id":8002,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8001,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":7968,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":7983,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8003,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8004,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8005,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7962,"type":"uint256","value":"selflen"},"id":8006,"name":"Identifier","src":"17894:7:20"}],"id":8007,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":8008,"name":"Identifier","src":"17904:9:20"}],"id":8009,"name":"BinaryOperation","src":"17884:29:20"}],"id":8010,"name":"Assignment","src":"17878:35:20"}],"id":8011,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[8013],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8012,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":8013,"name":"VariableDeclaration","src":"17931:15:20"}],"id":8014,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8013,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":7974,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":7983,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8015,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8013,"type":"bytes32","value":"ptrdata"},"id":8016,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8001,"type":"bytes32","value":"needledata"},"id":8017,"name":"Identifier","src":"18045:10:20"}],"id":8018,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8019,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8020,"name":"Identifier","src":"18090:7:20"}],"id":8021,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":7972},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8022,"name":"Identifier","src":"18130:7:20"}],"id":8023,"name":"Return","src":"18123:14:20"}],"id":8024,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8025,"name":"Identifier","src":"18159:3:20"}],"id":8026,"name":"UnaryOperation","src":"18159:5:20"}],"id":8027,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8013,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":7974,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":7983,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8028,"name":"InlineAssembly","src":"18186:45:20"}],"id":8029,"name":"Block","src":"18057:192:20"}],"id":8030,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":7972},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8031,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":8032,"name":"Identifier","src":"18279:9:20"}],"id":8033,"name":"BinaryOperation","src":"18273:15:20"}],"id":8034,"name":"Return","src":"18266:22:20"}],"id":8035,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[8037],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8070,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8036,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":8037,"name":"VariableDeclaration","src":"18376:12:20"}],"id":8038,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8037,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":7968,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":7966,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8039,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8040,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8041,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7962,"type":"uint256","value":"selflen"},"id":8042,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":8043,"name":"Identifier","src":"18502:9:20"}],"id":8044,"name":"BinaryOperation","src":"18492:19:20"}],"id":8045,"name":"TupleExpression","src":"18491:21:20"}],"id":8046,"name":"BinaryOperation","src":"18481:31:20"}],"id":8047,"name":"Assignment","src":"18475:37:20"}],"id":8048,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8049,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8050,"name":"Identifier","src":"18544:7:20"}],"id":8051,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[8053],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8052,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":8053,"name":"VariableDeclaration","src":"18575:16:20"}],"id":8054,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8053,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":7974,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":7966,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8055,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8037,"type":"bytes32","value":"hash"},"id":8056,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8053,"type":"bytes32","value":"testHash"},"id":8057,"name":"Identifier","src":"18696:8:20"}],"id":8058,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":7972},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8059,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":8060,"name":"Identifier","src":"18743:9:20"}],"id":8061,"name":"BinaryOperation","src":"18737:15:20"}],"id":8062,"name":"Return","src":"18730:22:20"}],"id":8063,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8064,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8065,"name":"Literal","src":"18781:1:20"}],"id":8066,"name":"Assignment","src":"18774:8:20"}],"id":8067,"name":"ExpressionStatement","src":"18774:8:20"}],"id":8068,"name":"Block","src":"18553:248:20"}],"id":8069,"name":"WhileStatement","src":"18530:271:20"}],"id":8070,"name":"Block","src":"18309:506:20"}],"id":8071,"name":"IfStatement","src":"17654:1161:20"}],"id":8072,"name":"Block","src":"17640:1185:20"}],"id":8073,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":7972},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8074,"name":"Identifier","src":"18841:7:20"}],"id":8075,"name":"Return","src":"18834:14:20"}],"id":8076,"name":"Block","src":"17585:1270:20"}],"id":8077,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8117,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8078,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":8079,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8117,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8080,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":8081,"name":"VariableDeclaration","src":"19224:19:20"}],"id":8082,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8117,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8083,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":8084,"name":"VariableDeclaration","src":"19268:12:20"}],"id":8085,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[8087]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8116,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8086,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":8087,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7960,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8088,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8089,"name":"Identifier","src":"19311:4:20"}],"id":8090,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8091,"name":"Identifier","src":"19322:4:20"}],"id":8092,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8081,"type":"struct strings.slice memory","value":"needle"},"id":8093,"name":"Identifier","src":"19333:6:20"}],"id":8094,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8081,"type":"struct strings.slice memory","value":"needle"},"id":8095,"name":"Identifier","src":"19346:6:20"}],"id":8096,"name":"MemberAccess","src":"19346:11:20"}],"id":8097,"name":"FunctionCall","src":"19303:55:20"}],"id":8098,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8099,"name":"Identifier","src":"19368:4:20"}],"id":8101,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8087,"type":"uint256","value":"ptr"},"id":8102,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8103,"name":"Identifier","src":"19387:4:20"}],"id":8104,"name":"MemberAccess","src":"19387:9:20"}],"id":8105,"name":"BinaryOperation","src":"19381:15:20"}],"id":8106,"name":"Assignment","src":"19368:28:20"}],"id":8107,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8108,"name":"Identifier","src":"19406:4:20"}],"id":8110,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8087,"type":"uint256","value":"ptr"},"id":8111,"name":"Identifier","src":"19418:3:20"}],"id":8112,"name":"Assignment","src":"19406:15:20"}],"id":8113,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":8085},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8114,"name":"Identifier","src":"19438:4:20"}],"id":8115,"name":"Return","src":"19431:11:20"}],"id":8116,"name":"Block","src":"19282:167:20"}],"id":8117,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8151,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8118,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":8119,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8151,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8120,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":8121,"name":"VariableDeclaration","src":"19842:19:20"}],"id":8122,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8151,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8123,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":8124,"name":"VariableDeclaration","src":"19886:12:20"}],"id":8125,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[8127]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8126,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":8127,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8077,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8128,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8129,"name":"Identifier","src":"19930:4:20"}],"id":8130,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8131,"name":"Identifier","src":"19941:4:20"}],"id":8132,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"struct strings.slice memory","value":"needle"},"id":8133,"name":"Identifier","src":"19952:6:20"}],"id":8134,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"struct strings.slice memory","value":"needle"},"id":8135,"name":"Identifier","src":"19965:6:20"}],"id":8136,"name":"MemberAccess","src":"19965:11:20"}],"id":8137,"name":"FunctionCall","src":"19921:56:20"}],"id":8138,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8139,"name":"Identifier","src":"19987:4:20"}],"id":8141,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8127,"type":"uint256","value":"ptr"},"id":8142,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8143,"name":"Identifier","src":"20005:4:20"}],"id":8144,"name":"MemberAccess","src":"20005:9:20"}],"id":8145,"name":"BinaryOperation","src":"19999:15:20"}],"id":8146,"name":"Assignment","src":"19987:27:20"}],"id":8147,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":8125},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8148,"name":"Identifier","src":"20031:4:20"}],"id":8149,"name":"Return","src":"20024:11:20"}],"id":8150,"name":"Block","src":"19900:142:20"}],"id":8151,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8152,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":8153,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8154,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":8155,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":8229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8156,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":8157,"name":"VariableDeclaration","src":"20603:18:20"}],"id":8158,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8159,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":8160,"name":"VariableDeclaration","src":"20646:12:20"}],"id":8161,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[8163]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8162,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":8163,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7960,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8164,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8165,"name":"Identifier","src":"20689:4:20"}],"id":8166,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8167,"name":"Identifier","src":"20700:4:20"}],"id":8168,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8155,"type":"struct strings.slice memory","value":"needle"},"id":8169,"name":"Identifier","src":"20711:6:20"}],"id":8170,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8155,"type":"struct strings.slice memory","value":"needle"},"id":8171,"name":"Identifier","src":"20724:6:20"}],"id":8172,"name":"MemberAccess","src":"20724:11:20"}],"id":8173,"name":"FunctionCall","src":"20681:55:20"}],"id":8174,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"struct strings.slice memory","value":"token"},"id":8175,"name":"Identifier","src":"20746:5:20"}],"id":8177,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8178,"name":"Identifier","src":"20759:4:20"}],"id":8179,"name":"MemberAccess","src":"20759:9:20"}],"id":8180,"name":"Assignment","src":"20746:22:20"}],"id":8181,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"struct strings.slice memory","value":"token"},"id":8182,"name":"Identifier","src":"20778:5:20"}],"id":8184,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"uint256","value":"ptr"},"id":8185,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8186,"name":"Identifier","src":"20797:4:20"}],"id":8187,"name":"MemberAccess","src":"20797:9:20"}],"id":8188,"name":"BinaryOperation","src":"20791:15:20"}],"id":8189,"name":"Assignment","src":"20778:28:20"}],"id":8190,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"uint256","value":"ptr"},"id":8191,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8192,"name":"Identifier","src":"20827:4:20"}],"id":8193,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8194,"name":"Identifier","src":"20839:4:20"}],"id":8195,"name":"MemberAccess","src":"20839:9:20"}],"id":8196,"name":"BinaryOperation","src":"20827:21:20"}],"id":8197,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8198,"name":"Identifier","src":"20889:4:20"}],"id":8200,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8201,"name":"Literal","src":"20901:1:20"}],"id":8202,"name":"Assignment","src":"20889:13:20"}],"id":8203,"name":"ExpressionStatement","src":"20889:13:20"}],"id":8204,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8205,"name":"Identifier","src":"20933:4:20"}],"id":8207,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"struct strings.slice memory","value":"token"},"id":8208,"name":"Identifier","src":"20946:5:20"}],"id":8209,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8155,"type":"struct strings.slice memory","value":"needle"},"id":8210,"name":"Identifier","src":"20959:6:20"}],"id":8211,"name":"MemberAccess","src":"20959:11:20"}],"id":8212,"name":"BinaryOperation","src":"20946:24:20"}],"id":8213,"name":"Assignment","src":"20933:37:20"}],"id":8214,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8215,"name":"Identifier","src":"20984:4:20"}],"id":8217,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"uint256","value":"ptr"},"id":8218,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8155,"type":"struct strings.slice memory","value":"needle"},"id":8219,"name":"Identifier","src":"21002:6:20"}],"id":8220,"name":"MemberAccess","src":"21002:11:20"}],"id":8221,"name":"BinaryOperation","src":"20996:17:20"}],"id":8222,"name":"Assignment","src":"20984:29:20"}],"id":8223,"name":"ExpressionStatement","src":"20984:29:20"}],"id":8224,"name":"Block","src":"20919:105:20"}],"id":8225,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":8161},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"struct strings.slice memory","value":"token"},"id":8226,"name":"Identifier","src":"21040:5:20"}],"id":8227,"name":"Return","src":"21033:12:20"}],"id":8228,"name":"Block","src":"20660:392:20"}],"id":8229,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8245,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8230,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":8231,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8245,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8232,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":8233,"name":"VariableDeclaration","src":"21557:19:20"}],"id":8234,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8245,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8235,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":8236,"name":"VariableDeclaration","src":"21601:18:20"}],"id":8237,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8229,8245],"referencedDeclaration":8229,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":8238,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8231,"type":"struct strings.slice memory","value":"self"},"id":8239,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8233,"type":"struct strings.slice memory","value":"needle"},"id":8240,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8236,"type":"struct strings.slice memory","value":"token"},"id":8241,"name":"Identifier","src":"21651:5:20"}],"id":8242,"name":"FunctionCall","src":"21631:26:20"}],"id":8243,"name":"ExpressionStatement","src":"21631:26:20"}],"id":8244,"name":"Block","src":"21621:43:20"}],"id":8245,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8314,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8246,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":8247,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8314,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8248,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":8249,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":8314,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8250,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":8251,"name":"VariableDeclaration","src":"22225:18:20"}],"id":8252,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8314,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8253,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":8254,"name":"VariableDeclaration","src":"22268:12:20"}],"id":8255,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[8257]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8313,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8256,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":8257,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8077,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8258,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8259,"name":"Identifier","src":"22312:4:20"}],"id":8260,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8261,"name":"Identifier","src":"22323:4:20"}],"id":8262,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8249,"type":"struct strings.slice memory","value":"needle"},"id":8263,"name":"Identifier","src":"22334:6:20"}],"id":8264,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8249,"type":"struct strings.slice memory","value":"needle"},"id":8265,"name":"Identifier","src":"22347:6:20"}],"id":8266,"name":"MemberAccess","src":"22347:11:20"}],"id":8267,"name":"FunctionCall","src":"22303:56:20"}],"id":8268,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8251,"type":"struct strings.slice memory","value":"token"},"id":8269,"name":"Identifier","src":"22369:5:20"}],"id":8271,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8257,"type":"uint256","value":"ptr"},"id":8272,"name":"Identifier","src":"22382:3:20"}],"id":8273,"name":"Assignment","src":"22369:16:20"}],"id":8274,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8251,"type":"struct strings.slice memory","value":"token"},"id":8275,"name":"Identifier","src":"22395:5:20"}],"id":8277,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8278,"name":"Identifier","src":"22408:4:20"}],"id":8279,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8257,"type":"uint256","value":"ptr"},"id":8280,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8281,"name":"Identifier","src":"22427:4:20"}],"id":8282,"name":"MemberAccess","src":"22427:9:20"}],"id":8283,"name":"BinaryOperation","src":"22421:15:20"}],"id":8284,"name":"TupleExpression","src":"22420:17:20"}],"id":8285,"name":"BinaryOperation","src":"22408:29:20"}],"id":8286,"name":"Assignment","src":"22395:42:20"}],"id":8287,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8257,"type":"uint256","value":"ptr"},"id":8288,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8289,"name":"Identifier","src":"22458:4:20"}],"id":8290,"name":"MemberAccess","src":"22458:9:20"}],"id":8291,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8292,"name":"Identifier","src":"22508:4:20"}],"id":8294,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8295,"name":"Literal","src":"22520:1:20"}],"id":8296,"name":"Assignment","src":"22508:13:20"}],"id":8297,"name":"ExpressionStatement","src":"22508:13:20"}],"id":8298,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8299,"name":"Identifier","src":"22552:4:20"}],"id":8301,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8251,"type":"struct strings.slice memory","value":"token"},"id":8302,"name":"Identifier","src":"22565:5:20"}],"id":8303,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8249,"type":"struct strings.slice memory","value":"needle"},"id":8304,"name":"Identifier","src":"22578:6:20"}],"id":8305,"name":"MemberAccess","src":"22578:11:20"}],"id":8306,"name":"BinaryOperation","src":"22565:24:20"}],"id":8307,"name":"Assignment","src":"22552:37:20"}],"id":8308,"name":"ExpressionStatement","src":"22552:37:20"}],"id":8309,"name":"Block","src":"22538:62:20"}],"id":8310,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":8255},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8251,"type":"struct strings.slice memory","value":"token"},"id":8311,"name":"Identifier","src":"22616:5:20"}],"id":8312,"name":"Return","src":"22609:12:20"}],"id":8313,"name":"Block","src":"22282:346:20"}],"id":8314,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8330,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8315,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":8316,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8330,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8317,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":8318,"name":"VariableDeclaration","src":"23132:19:20"}],"id":8319,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8330,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8320,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":8321,"name":"VariableDeclaration","src":"23176:18:20"}],"id":8322,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8314,8330],"referencedDeclaration":8314,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":8323,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8316,"type":"struct strings.slice memory","value":"self"},"id":8324,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8318,"type":"struct strings.slice memory","value":"needle"},"id":8325,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8321,"type":"struct strings.slice memory","value":"token"},"id":8326,"name":"Identifier","src":"23227:5:20"}],"id":8327,"name":"FunctionCall","src":"23206:27:20"}],"id":8328,"name":"ExpressionStatement","src":"23206:27:20"}],"id":8329,"name":"Block","src":"23196:44:20"}],"id":8330,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8389,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8331,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":8332,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8389,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8333,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":8334,"name":"VariableDeclaration","src":"23543:19:20"}],"id":8335,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":8389,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8336,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":8337,"name":"VariableDeclaration","src":"23587:8:20"}],"id":8338,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[8340]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8339,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":8340,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7960,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8341,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8342,"name":"Identifier","src":"23626:4:20"}],"id":8343,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8344,"name":"Identifier","src":"23637:4:20"}],"id":8345,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8346,"name":"Identifier","src":"23648:6:20"}],"id":8347,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8348,"name":"Identifier","src":"23661:6:20"}],"id":8349,"name":"MemberAccess","src":"23661:11:20"}],"id":8350,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8351,"name":"Identifier","src":"23676:6:20"}],"id":8352,"name":"MemberAccess","src":"23676:11:20"}],"id":8353,"name":"BinaryOperation","src":"23618:69:20"}],"id":8354,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8340,"type":"uint256","value":"ptr"},"id":8355,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8356,"name":"Identifier","src":"23711:4:20"}],"id":8357,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8358,"name":"Identifier","src":"23723:4:20"}],"id":8359,"name":"MemberAccess","src":"23723:9:20"}],"id":8360,"name":"BinaryOperation","src":"23711:21:20"}],"id":8361,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8337,"type":"uint256","value":"cnt"},"id":8362,"name":"Identifier","src":"23748:3:20"}],"id":8363,"name":"UnaryOperation","src":"23748:5:20"}],"id":8364,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8340,"type":"uint256","value":"ptr"},"id":8365,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7960,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8366,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8367,"name":"Identifier","src":"23781:4:20"}],"id":8368,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8340,"type":"uint256","value":"ptr"},"id":8369,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8370,"name":"Identifier","src":"23800:4:20"}],"id":8371,"name":"MemberAccess","src":"23800:9:20"}],"id":8372,"name":"BinaryOperation","src":"23794:15:20"}],"id":8373,"name":"TupleExpression","src":"23793:17:20"}],"id":8374,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8340,"type":"uint256","value":"ptr"},"id":8375,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8376,"name":"Identifier","src":"23817:6:20"}],"id":8377,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8378,"name":"Identifier","src":"23830:6:20"}],"id":8379,"name":"MemberAccess","src":"23830:11:20"}],"id":8380,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8381,"name":"Identifier","src":"23845:6:20"}],"id":8382,"name":"MemberAccess","src":"23845:11:20"}],"id":8383,"name":"BinaryOperation","src":"23773:83:20"}],"id":8384,"name":"Assignment","src":"23767:89:20"}],"id":8385,"name":"ExpressionStatement","src":"23767:89:20"}],"id":8386,"name":"Block","src":"23734:133:20"}],"id":8387,"name":"WhileStatement","src":"23697:170:20"}],"id":8388,"name":"Block","src":"23597:276:20"}],"id":8389,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8413,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8390,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":8391,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8413,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8392,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":8393,"name":"VariableDeclaration","src":"24149:19:20"}],"id":8394,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8413,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8395,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":8396,"name":"VariableDeclaration","src":"24193:4:20"}],"id":8397,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":8397},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8077,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8398,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8391,"type":"struct strings.slice memory","value":"self"},"id":8399,"name":"Identifier","src":"24225:4:20"}],"id":8400,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8391,"type":"struct strings.slice memory","value":"self"},"id":8401,"name":"Identifier","src":"24236:4:20"}],"id":8402,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8393,"type":"struct strings.slice memory","value":"needle"},"id":8403,"name":"Identifier","src":"24247:6:20"}],"id":8404,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8393,"type":"struct strings.slice memory","value":"needle"},"id":8405,"name":"Identifier","src":"24260:6:20"}],"id":8406,"name":"MemberAccess","src":"24260:11:20"}],"id":8407,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8391,"type":"struct strings.slice memory","value":"self"},"id":8408,"name":"Identifier","src":"24276:4:20"}],"id":8409,"name":"MemberAccess","src":"24276:9:20"}],"id":8410,"name":"BinaryOperation","src":"24216:69:20"}],"id":8411,"name":"Return","src":"24209:76:20"}],"id":8412,"name":"Block","src":"24199:93:20"}],"id":8413,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8459,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8414,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":8415,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":8459,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8416,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":8417,"name":"VariableDeclaration","src":"24614:18:20"}],"id":8418,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8459,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8419,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":8420,"name":"VariableDeclaration","src":"24657:13:20"}],"id":8421,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[8423]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8458,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8422,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":8423,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8424,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":8425,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8415,"type":"struct strings.slice memory","value":"self"},"id":8426,"name":"Identifier","src":"24713:4:20"}],"id":8427,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8417,"type":"struct strings.slice memory","value":"other"},"id":8428,"name":"Identifier","src":"24725:5:20"}],"id":8429,"name":"MemberAccess","src":"24725:10:20"}],"id":8430,"name":"BinaryOperation","src":"24713:22:20"}],"id":8431,"name":"FunctionCall","src":"24702:34:20"}],"id":8432,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[8434],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8433,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":8434,"name":"VariableDeclaration","src":"24746:11:20"}],"id":8435,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8434,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":8423,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8436,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8437,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8434,"type":"uint256","value":"retptr"},"id":8438,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8415,"type":"struct strings.slice memory","value":"self"},"id":8439,"name":"Identifier","src":"24826:4:20"}],"id":8440,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8415,"type":"struct strings.slice memory","value":"self"},"id":8441,"name":"Identifier","src":"24837:4:20"}],"id":8442,"name":"MemberAccess","src":"24837:9:20"}],"id":8443,"name":"FunctionCall","src":"24811:36:20"}],"id":8444,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8445,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8434,"type":"uint256","value":"retptr"},"id":8446,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8415,"type":"struct strings.slice memory","value":"self"},"id":8447,"name":"Identifier","src":"24873:4:20"}],"id":8448,"name":"MemberAccess","src":"24873:9:20"}],"id":8449,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8417,"type":"struct strings.slice memory","value":"other"},"id":8450,"name":"Identifier","src":"24884:5:20"}],"id":8451,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8417,"type":"struct strings.slice memory","value":"other"},"id":8452,"name":"Identifier","src":"24896:5:20"}],"id":8453,"name":"MemberAccess","src":"24896:10:20"}],"id":8454,"name":"FunctionCall","src":"24857:50:20"}],"id":8455,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":8421},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8423,"type":"string memory","value":"ret"},"id":8456,"name":"Identifier","src":"24924:3:20"}],"id":8457,"name":"Return","src":"24917:10:20"}],"id":8458,"name":"Block","src":"24672:262:20"}],"id":8459,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8574,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8460,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":8461,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":8574,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8462,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":8463,"name":"ArrayTypeName","src":"25303:7:20"}],"id":8464,"name":"VariableDeclaration","src":"25303:20:20"}],"id":8465,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8574,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8466,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":8467,"name":"VariableDeclaration","src":"25348:13:20"}],"id":8468,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8469,"name":"Identifier","src":"25377:5:20"}],"id":8470,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8471,"name":"Literal","src":"25393:1:20"}],"id":8472,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":8468},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":8473,"name":"Literal","src":"25415:2:20"}],"id":8474,"name":"Return","src":"25408:9:20"}],"id":8475,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[8477]},"children":[{"attributes":{"constant":false,"name":"length","scope":8573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8476,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":8477,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"self"},"id":8478,"name":"Identifier","src":"25442:4:20"}],"id":8479,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8480,"name":"Identifier","src":"25455:5:20"}],"id":8481,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8482,"name":"Literal","src":"25470:1:20"}],"id":8483,"name":"BinaryOperation","src":"25455:16:20"}],"id":8484,"name":"TupleExpression","src":"25454:18:20"}],"id":8485,"name":"BinaryOperation","src":"25442:30:20"}],"id":8486,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[8488]},"children":[{"attributes":{"constant":false,"name":"i","scope":8506,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8487,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":8488,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8489,"name":"Literal","src":"25496:1:20"}],"id":8490,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8488,"type":"uint256","value":"i"},"id":8491,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8492,"name":"Identifier","src":"25503:5:20"}],"id":8493,"name":"MemberAccess","src":"25503:12:20"}],"id":8494,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8488,"type":"uint256","value":"i"},"id":8495,"name":"Identifier","src":"25517:1:20"}],"id":8496,"name":"UnaryOperation","src":"25517:3:20"}],"id":8497,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8477,"type":"uint256","value":"length"},"id":8498,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8499,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8488,"type":"uint256","value":"i"},"id":8500,"name":"Identifier","src":"25552:1:20"}],"id":8501,"name":"IndexAccess","src":"25546:8:20"}],"id":8502,"name":"MemberAccess","src":"25546:13:20"}],"id":8503,"name":"Assignment","src":"25536:23:20"}],"id":8504,"name":"ExpressionStatement","src":"25536:23:20"}],"id":8505,"name":"Block","src":"25522:48:20"}],"id":8506,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[8508]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8573,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8507,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":8508,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8509,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":8510,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8477,"type":"uint256","value":"length"},"id":8511,"name":"Identifier","src":"25611:6:20"}],"id":8512,"name":"FunctionCall","src":"25600:18:20"}],"id":8513,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[8515],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8514,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":8515,"name":"VariableDeclaration","src":"25628:11:20"}],"id":8516,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8515,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":8508,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8517,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[8519]},"children":[{"attributes":{"constant":false,"name":"i","scope":8570,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8518,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":8519,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8520,"name":"Literal","src":"25708:1:20"}],"id":8521,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8522,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8523,"name":"Identifier","src":"25715:5:20"}],"id":8524,"name":"MemberAccess","src":"25715:12:20"}],"id":8525,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8526,"name":"Identifier","src":"25729:1:20"}],"id":8527,"name":"UnaryOperation","src":"25729:3:20"}],"id":8528,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8529,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"retptr"},"id":8530,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8531,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8532,"name":"Identifier","src":"25769:1:20"}],"id":8533,"name":"IndexAccess","src":"25763:8:20"}],"id":8534,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8535,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8536,"name":"Identifier","src":"25784:1:20"}],"id":8537,"name":"IndexAccess","src":"25778:8:20"}],"id":8538,"name":"MemberAccess","src":"25778:13:20"}],"id":8539,"name":"FunctionCall","src":"25748:44:20"}],"id":8540,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"retptr"},"id":8541,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8542,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8543,"name":"Identifier","src":"25822:1:20"}],"id":8544,"name":"IndexAccess","src":"25816:8:20"}],"id":8545,"name":"MemberAccess","src":"25816:13:20"}],"id":8546,"name":"Assignment","src":"25806:23:20"}],"id":8547,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8548,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8549,"name":"Identifier","src":"25851:5:20"}],"id":8550,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8551,"name":"Literal","src":"25866:1:20"}],"id":8552,"name":"BinaryOperation","src":"25851:16:20"}],"id":8553,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8554,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"retptr"},"id":8555,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"self"},"id":8556,"name":"Identifier","src":"25902:4:20"}],"id":8557,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"self"},"id":8558,"name":"Identifier","src":"25913:4:20"}],"id":8559,"name":"MemberAccess","src":"25913:9:20"}],"id":8560,"name":"FunctionCall","src":"25887:36:20"}],"id":8561,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"retptr"},"id":8562,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"self"},"id":8563,"name":"Identifier","src":"25951:4:20"}],"id":8564,"name":"MemberAccess","src":"25951:9:20"}],"id":8565,"name":"Assignment","src":"25941:19:20"}],"id":8566,"name":"ExpressionStatement","src":"25941:19:20"}],"id":8567,"name":"Block","src":"25869:106:20"}],"id":8568,"name":"IfStatement","src":"25843:132:20"}],"id":8569,"name":"Block","src":"25734:251:20"}],"id":8570,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":8468},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"string memory","value":"ret"},"id":8571,"name":"Identifier","src":"26002:3:20"}],"id":8572,"name":"Return","src":"25995:10:20"}],"id":8573,"name":"Block","src":"25363:649:20"}],"id":8574,"name":"FunctionDefinition","src":"25270:742:20"}],"id":8575,"name":"ContractDefinition","src":"2599:23415:20"}],"id":8576,"name":"SourceUnit","src":"2574:23441:20"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[2730]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2700,"name":"PragmaDirective","src":"771:24:21"},{"attributes":{"SourceUnit":2347,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":2731,"symbolAliases":[null],"unitAlias":""},"id":2701,"name":"ImportDirective","src":"797:32:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[2730],"name":"Balanceable","scope":2731},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":2730,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":2729,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2702,"name":"ElementaryTypeName","src":"1225:7:21"}],"id":2703,"name":"VariableDeclaration","src":"1225:16:21"},{"attributes":{"constant":false,"name":"_asset","scope":2729,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2704,"name":"ElementaryTypeName","src":"1243:7:21"}],"id":2705,"name":"VariableDeclaration","src":"1243:14:21"}],"id":2706,"name":"ParameterList","src":"1224:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":2729,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2707,"name":"ElementaryTypeName","src":"1282:7:21"}],"id":2708,"name":"VariableDeclaration","src":"1282:7:21"}],"id":2709,"name":"ParameterList","src":"1281:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2705,"type":"address","value":"_asset"},"id":2710,"name":"Identifier","src":"1305:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2711,"name":"ElementaryTypeNameExpression","src":"1315:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2712,"name":"Literal","src":"1323:1:21"}],"id":2713,"name":"FunctionCall","src":"1315:10:21"}],"id":2714,"name":"BinaryOperation","src":"1305:20:21"},{"children":[{"attributes":{"functionReturnParameters":2709},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":2320,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":2715,"name":"Identifier","src":"1348:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2705,"type":"address","value":"_asset"},"id":2716,"name":"Identifier","src":"1354:6:21"}],"id":2717,"name":"FunctionCall","src":"1348:13:21"}],"id":2718,"name":"MemberAccess","src":"1348:23:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2703,"type":"address","value":"_address"},"id":2719,"name":"Identifier","src":"1372:8:21"}],"id":2720,"name":"FunctionCall","src":"1348:33:21"}],"id":2721,"name":"Return","src":"1341:40:21"}],"id":2722,"name":"Block","src":"1327:65:21"},{"children":[{"attributes":{"functionReturnParameters":2709},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2703,"type":"address","value":"_address"},"id":2723,"name":"Identifier","src":"1419:8:21"}],"id":2724,"name":"MemberAccess","src":"1419:16:21"}],"id":2725,"name":"Return","src":"1412:23:21"}],"id":2726,"name":"Block","src":"1398:48:21"}],"id":2727,"name":"IfStatement","src":"1301:145:21"}],"id":2728,"name":"Block","src":"1291:161:21"}],"id":2729,"name":"FunctionDefinition","src":"1207:245:21"}],"id":2730,"name":"ContractDefinition","src":"898:556:21"}],"id":2731,"name":"SourceUnit","src":"771:684:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[8686]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8577,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":8687,"symbolAliases":[null],"unitAlias":""},"id":8578,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[8686],"name":"BytesUtils","scope":8687},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":8579,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":8580,"name":"ElementaryTypeName","src":"955:7:22"}],"id":8581,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":8686,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8617,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8582,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":8583,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8584,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":8585,"name":"VariableDeclaration","src":"1125:13:22"}],"id":8586,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8617,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8587,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":8588,"name":"VariableDeclaration","src":"1163:7:22"}],"id":8589,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":8590,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"bytes memory","value":"_bts"},"id":8591,"name":"Identifier","src":"1190:4:22"}],"id":8592,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"uint256","value":"_from"},"id":8593,"name":"Identifier","src":"1205:5:22"}],"id":8594,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8595,"name":"Literal","src":"1215:2:22"}],"id":8596,"name":"FunctionCall","src":"1205:13:22"}],"id":8597,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8598,"name":"Literal","src":"1220:22:22"}],"id":8599,"name":"FunctionCall","src":"1182:61:22"}],"id":8600,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[8602],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":8616,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":8601,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":8602,"name":"VariableDeclaration","src":"1254:24:22"}],"id":8603,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[8605]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8616,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8604,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":8605,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"uint256","value":"_from"},"id":8606,"name":"Identifier","src":"1308:5:22"}],"id":8607,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8608,"name":"Literal","src":"1318:2:22"}],"id":8609,"name":"FunctionCall","src":"1308:13:22"}],"id":8610,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":8602,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":8583,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":8605,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":8611,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":8589},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":8612,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8602,"type":"bytes20","value":"convertedAddress"},"id":8613,"name":"Identifier","src":"1478:16:22"}],"id":8614,"name":"FunctionCall","src":"1470:25:22"}],"id":8615,"name":"Return","src":"1463:32:22"}],"id":8616,"name":"Block","src":"1172:330:22"}],"id":8617,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":8686,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8651,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8618,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":8619,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8620,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":8621,"name":"VariableDeclaration","src":"1670:13:22"}],"id":8622,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8651,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8623,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":8624,"name":"VariableDeclaration","src":"1708:6:22"}],"id":8625,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":8626,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8619,"type":"bytes memory","value":"_bts"},"id":8627,"name":"Identifier","src":"1734:4:22"}],"id":8628,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8621,"type":"uint256","value":"_from"},"id":8629,"name":"Identifier","src":"1749:5:22"}],"id":8630,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8631,"name":"Literal","src":"1759:1:22"}],"id":8632,"name":"FunctionCall","src":"1749:12:22"}],"id":8633,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8634,"name":"Literal","src":"1763:22:22"}],"id":8635,"name":"FunctionCall","src":"1726:60:22"}],"id":8636,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[8638],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":8650,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8637,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":8638,"name":"VariableDeclaration","src":"1797:19:22"}],"id":8639,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[8641]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8650,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8640,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":8641,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8621,"type":"uint256","value":"_from"},"id":8642,"name":"Identifier","src":"1846:5:22"}],"id":8643,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8644,"name":"Literal","src":"1856:2:22"}],"id":8645,"name":"FunctionCall","src":"1846:13:22"}],"id":8646,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":8638,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":8619,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":8641,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":8647,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":8625},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8638,"type":"bytes4","value":"slicedBytes4"},"id":8648,"name":"Identifier","src":"2004:12:22"}],"id":8649,"name":"Return","src":"1997:19:22"}],"id":8650,"name":"Block","src":"1716:307:22"}],"id":8651,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":8686,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8685,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8652,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":8653,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8685,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8654,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":8655,"name":"VariableDeclaration","src":"2417:13:22"}],"id":8656,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8685,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8657,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":8658,"name":"VariableDeclaration","src":"2455:7:22"}],"id":8659,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":8660,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8653,"type":"bytes memory","value":"_bts"},"id":8661,"name":"Identifier","src":"2482:4:22"}],"id":8662,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8655,"type":"uint256","value":"_from"},"id":8663,"name":"Identifier","src":"2497:5:22"}],"id":8664,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8665,"name":"Literal","src":"2507:2:22"}],"id":8666,"name":"FunctionCall","src":"2497:13:22"}],"id":8667,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8668,"name":"Literal","src":"2512:22:22"}],"id":8669,"name":"FunctionCall","src":"2474:61:22"}],"id":8670,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[8672],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":8684,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8671,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":8672,"name":"VariableDeclaration","src":"2546:24:22"}],"id":8673,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[8675]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8684,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8674,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":8675,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8655,"type":"uint256","value":"_from"},"id":8676,"name":"Identifier","src":"2600:5:22"}],"id":8677,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8678,"name":"Literal","src":"2610:2:22"}],"id":8679,"name":"FunctionCall","src":"2600:13:22"}],"id":8680,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":8672,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}},{"_bts":{"declaration":8653,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":8675,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":8681,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":8659},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8672,"type":"uint256","value":"convertedUint256"},"id":8682,"name":"Identifier","src":"2762:16:22"}],"id":8683,"name":"Return","src":"2755:23:22"}],"id":8684,"name":"Block","src":"2464:321:22"}],"id":8685,"name":"FunctionDefinition","src":"2373:412:22"}],"id":8686,"name":"ContractDefinition","src":"911:1876:22"}],"id":8687,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[2826]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2732,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":4284,"absolutePath":"controller.sol","file":"../controller.sol","scope":2827,"symbolAliases":[null],"unitAlias":""},"id":2733,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":2872,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":2827,"symbolAliases":[null],"unitAlias":""},"id":2734,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[2871],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[2826,2871],"name":"Controllable","scope":2827},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":2735,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":2736,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":2826,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2737,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":2738,"name":"Literal","src":"1122:66:23"}],"id":2739,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":2826,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2740,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":2741,"name":"Identifier","src":"1306:24:23"}],"id":2742,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2826,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":2759,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2743,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":2744,"name":"VariableDeclaration","src":"1571:24:23"}],"id":2745,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":2746,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"bytes32","value":"_controllerNode_"},"id":2747,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2748,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2749,"name":"Literal","src":"1693:1:23"}],"id":2750,"name":"FunctionCall","src":"1685:10:23"}],"id":2751,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes32","value":"_controllerNode"},"id":2752,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"bytes32","value":"_controllerNode_"},"id":2753,"name":"Identifier","src":"1729:16:23"}],"id":2754,"name":"Assignment","src":"1711:34:23"}],"id":2755,"name":"ExpressionStatement","src":"1711:34:23"}],"id":2756,"name":"Block","src":"1697:59:23"}],"id":2757,"name":"IfStatement","src":"1661:95:23"}],"id":2758,"name":"Block","src":"1606:156:23"}],"id":2759,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2760,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2761,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2808,"type":"function (address) view returns (bool)","value":"_isController"},"id":2762,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":2763,"name":"Identifier","src":"1884:3:23"}],"id":2764,"name":"MemberAccess","src":"1884:10:23"}],"id":2765,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":2766,"name":"Literal","src":"1897:28:23"}],"id":2767,"name":"FunctionCall","src":"1862:64:23"}],"id":2768,"name":"ExpressionStatement","src":"1862:64:23"},{"id":2769,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":2770,"name":"Block","src":"1852:92:23"}],"id":2771,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2772,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2773,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":2774,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":2775,"name":"Identifier","src":"2052:3:23"}],"id":2776,"name":"MemberAccess","src":"2052:10:23"}],"id":2777,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2778,"name":"Literal","src":"2065:24:23"}],"id":2779,"name":"FunctionCall","src":"2035:55:23"}],"id":2780,"name":"ExpressionStatement","src":"2035:55:23"},{"id":2781,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":2782,"name":"Block","src":"2025:83:23"}],"id":2783,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":2826,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2784,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2791,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2785,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":2786,"name":"VariableDeclaration","src":"2216:7:23"}],"id":2787,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":2787},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes32","value":"_controllerNode"},"id":2788,"name":"Identifier","src":"2242:15:23"}],"id":2789,"name":"Return","src":"2235:22:23"}],"id":2790,"name":"Block","src":"2225:39:23"}],"id":2791,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":2826,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2808,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2792,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":2793,"name":"VariableDeclaration","src":"2355:16:23"}],"id":2794,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2808,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2795,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":2796,"name":"VariableDeclaration","src":"2396:4:23"}],"id":2797,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":2797},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":3840,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"type(contract IController)","value":"IController"},"id":2798,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2799,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes32","value":"_controllerNode"},"id":2800,"name":"Identifier","src":"2443:15:23"}],"id":2801,"name":"FunctionCall","src":"2431:28:23"}],"id":2802,"name":"FunctionCall","src":"2419:41:23"}],"id":2803,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2793,"type":"address","value":"_account"},"id":2804,"name":"Identifier","src":"2474:8:23"}],"id":2805,"name":"FunctionCall","src":"2419:64:23"}],"id":2806,"name":"Return","src":"2412:71:23"}],"id":2807,"name":"Block","src":"2402:88:23"}],"id":2808,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":2826,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2825,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2809,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":2810,"name":"VariableDeclaration","src":"2572:16:23"}],"id":2811,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2825,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2812,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":2813,"name":"VariableDeclaration","src":"2613:4:23"}],"id":2814,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":2814},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":3847,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"type(contract IController)","value":"IController"},"id":2815,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2816,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes32","value":"_controllerNode"},"id":2817,"name":"Identifier","src":"2660:15:23"}],"id":2818,"name":"FunctionCall","src":"2648:28:23"}],"id":2819,"name":"FunctionCall","src":"2636:41:23"}],"id":2820,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2810,"type":"address","value":"_account"},"id":2821,"name":"Identifier","src":"2686:8:23"}],"id":2822,"name":"FunctionCall","src":"2636:59:23"}],"id":2823,"name":"Return","src":"2629:66:23"}],"id":2824,"name":"Block","src":"2619:83:23"}],"id":2825,"name":"FunctionDefinition","src":"2554:148:23"}],"id":2826,"name":"ContractDefinition","src":"955:1749:23"}],"id":2827,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[2871]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2828,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":4421,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":2872,"symbolAliases":[null],"unitAlias":""},"id":2829,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":4595,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":2872,"symbolAliases":[null],"unitAlias":""},"id":2830,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[2871],"name":"ENSResolvable","scope":2872},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":2871,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2831,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":2832,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2871,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":2842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2833,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":2834,"name":"VariableDeclaration","src":"1205:16:24"}],"id":2835,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":2836,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2832,"type":"address","value":"_ensRegistry"},"id":2837,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2834,"type":"address","value":"_ensReg_"},"id":2838,"name":"Identifier","src":"1257:8:24"}],"id":2839,"name":"Assignment","src":"1242:23:24"}],"id":2840,"name":"ExpressionStatement","src":"1242:23:24"}],"id":2841,"name":"Block","src":"1232:40:24"}],"id":2842,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":2871,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2843,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":2850,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2844,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":2845,"name":"VariableDeclaration","src":"1410:7:24"}],"id":2846,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":2846},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2832,"type":"address","value":"_ensRegistry"},"id":2847,"name":"Identifier","src":"1436:12:24"}],"id":2848,"name":"Return","src":"1429:19:24"}],"id":2849,"name":"Block","src":"1419:36:24"}],"id":2850,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":2871,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2870,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2851,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":2852,"name":"VariableDeclaration","src":"1652:13:24"}],"id":2853,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":2870,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2854,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":2855,"name":"VariableDeclaration","src":"1690:7:24"}],"id":2856,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":2856},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":5800,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4594,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":2857,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":4396,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4420,"type":"type(contract ENS)","value":"ENS"},"id":2858,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2832,"type":"address","value":"_ensRegistry"},"id":2859,"name":"Identifier","src":"1735:12:24"}],"id":2860,"name":"FunctionCall","src":"1731:17:24"}],"id":2861,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"bytes32","value":"_node"},"id":2862,"name":"Identifier","src":"1758:5:24"}],"id":2863,"name":"FunctionCall","src":"1731:33:24"}],"id":2864,"name":"FunctionCall","src":"1716:49:24"}],"id":2865,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"bytes32","value":"_node"},"id":2866,"name":"Identifier","src":"1771:5:24"}],"id":2867,"name":"FunctionCall","src":"1716:61:24"}],"id":2868,"name":"Return","src":"1709:68:24"}],"id":2869,"name":"Block","src":"1699:85:24"}],"id":2870,"name":"FunctionDefinition","src":"1631:153:24"}],"id":2871,"name":"ContractDefinition","src":"1008:778:24"}],"id":2872,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[3028]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2873,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[3028],"name":"Ownable","scope":3029},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":2879,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2874,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":2875,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2879,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2876,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":2877,"name":"VariableDeclaration","src":"1214:11:25"}],"id":2878,"name":"ParameterList","src":"1198:28:25"}],"id":2879,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":2883,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2880,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":2881,"name":"VariableDeclaration","src":"1254:15:25"}],"id":2882,"name":"ParameterList","src":"1253:17:25"}],"id":2883,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":3028,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2884,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":2885,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":3028,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2886,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":2887,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3028,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":2918,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2888,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":2889,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":2918,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2890,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":2891,"name":"VariableDeclaration","src":"1503:19:25"}],"id":2892,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":2893,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":2894,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2889,"type":"address payable","value":"_account_"},"id":2895,"name":"Identifier","src":"1552:9:25"}],"id":2896,"name":"Assignment","src":"1543:18:25"}],"id":2897,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2898,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2891,"type":"bool","value":"_transferable_"},"id":2899,"name":"Identifier","src":"1589:14:25"}],"id":2900,"name":"Assignment","src":"1571:32:25"}],"id":2901,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2902,"name":"Identifier","src":"1687:15:25"}],"id":2903,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2883,"type":"function (address)","value":"LockedOwnership"},"id":2904,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2889,"type":"address payable","value":"_account_"},"id":2905,"name":"Identifier","src":"1739:9:25"}],"id":2906,"name":"FunctionCall","src":"1723:26:25"}],"id":2907,"name":"EmitStatement","src":"1718:31:25"}],"id":2908,"name":"Block","src":"1704:56:25"}],"id":2909,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2879,"type":"function (address,address)","value":"TransferredOwnership"},"id":2910,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2911,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2912,"name":"Literal","src":"1803:1:25"}],"id":2913,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2889,"type":"address payable","value":"_account_"},"id":2914,"name":"Identifier","src":"1807:9:25"}],"id":2915,"name":"FunctionCall","src":"1774:43:25"}],"id":2916,"name":"EmitStatement","src":"1769:48:25"}],"id":2917,"name":"Block","src":"1533:291:25"}],"id":2918,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2919,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2920,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2921,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":2922,"name":"Identifier","src":"1949:3:25"}],"id":2923,"name":"MemberAccess","src":"1949:10:25"}],"id":2924,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":2925,"name":"Literal","src":"1962:24:25"}],"id":2926,"name":"FunctionCall","src":"1932:55:25"}],"id":2927,"name":"ExpressionStatement","src":"1932:55:25"},{"id":2928,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":2929,"name":"Block","src":"1922:83:25"}],"id":2930,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":3028,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2975,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2931,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":2932,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":2975,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2933,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":2934,"name":"VariableDeclaration","src":"2300:18:25"}],"id":2935,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":2938,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":2936,"name":"Identifier","src":"2329:9:25"}],"id":2937,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2939,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2940,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2941,"name":"Literal","src":"2429:31:25"}],"id":2942,"name":"FunctionCall","src":"2404:57:25"}],"id":2943,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2944,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2932,"type":"address payable","value":"_account"},"id":2945,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2946,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2947,"name":"Literal","src":"2562:1:25"}],"id":2948,"name":"FunctionCall","src":"2554:10:25"}],"id":2949,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":2950,"name":"Literal","src":"2566:37:25"}],"id":2951,"name":"FunctionCall","src":"2534:70:25"}],"id":2952,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2953,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2934,"type":"bool","value":"_transferable"},"id":2954,"name":"Identifier","src":"2707:13:25"}],"id":2955,"name":"Assignment","src":"2689:31:25"}],"id":2956,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2934,"type":"bool","value":"_transferable"},"id":2957,"name":"Identifier","src":"2804:13:25"}],"id":2958,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2883,"type":"function (address)","value":"LockedOwnership"},"id":2959,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2932,"type":"address payable","value":"_account"},"id":2960,"name":"Identifier","src":"2854:8:25"}],"id":2961,"name":"FunctionCall","src":"2838:25:25"}],"id":2962,"name":"EmitStatement","src":"2833:30:25"}],"id":2963,"name":"Block","src":"2819:55:25"}],"id":2964,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2879,"type":"function (address,address)","value":"TransferredOwnership"},"id":2965,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":2966,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2932,"type":"address payable","value":"_account"},"id":2967,"name":"Identifier","src":"2963:8:25"}],"id":2968,"name":"FunctionCall","src":"2934:38:25"}],"id":2969,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":2970,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2932,"type":"address payable","value":"_account"},"id":2971,"name":"Identifier","src":"3041:8:25"}],"id":2972,"name":"Assignment","src":"3032:17:25"}],"id":2973,"name":"ExpressionStatement","src":"3032:17:25"}],"id":2974,"name":"Block","src":"2339:717:25"}],"id":2975,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":3028,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2976,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":2983,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2977,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":2978,"name":"VariableDeclaration","src":"3222:4:25"}],"id":2979,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":2979},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2980,"name":"Identifier","src":"3245:15:25"}],"id":2981,"name":"Return","src":"3238:22:25"}],"id":2982,"name":"Block","src":"3228:39:25"}],"id":2983,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":3028,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2984,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":2987,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":2985,"name":"Identifier","src":"3581:9:25"}],"id":2986,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2988,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2989,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2990,"name":"Literal","src":"3681:31:25"}],"id":2991,"name":"FunctionCall","src":"3656:57:25"}],"id":2992,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":2993,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2994,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2995,"name":"Literal","src":"3784:1:25"}],"id":2996,"name":"FunctionCall","src":"3776:10:25"}],"id":2997,"name":"Assignment","src":"3767:19:25"}],"id":2998,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2879,"type":"function (address,address)","value":"TransferredOwnership"},"id":2999,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":3000,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3001,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3002,"name":"Literal","src":"3839:1:25"}],"id":3003,"name":"FunctionCall","src":"3831:10:25"}],"id":3004,"name":"FunctionCall","src":"3802:40:25"}],"id":3005,"name":"EmitStatement","src":"3797:45:25"}],"id":3006,"name":"Block","src":"3591:258:25"}],"id":3007,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3028,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3008,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3015,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3009,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":3010,"name":"VariableDeclaration","src":"3970:15:25"}],"id":3011,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":3011},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":3012,"name":"Identifier","src":"4004:6:25"}],"id":3013,"name":"Return","src":"3997:13:25"}],"id":3014,"name":"Block","src":"3987:30:25"}],"id":3015,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":3028,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3027,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3016,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":3017,"name":"VariableDeclaration","src":"4141:16:25"}],"id":3018,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3027,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3019,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":3020,"name":"VariableDeclaration","src":"4182:4:25"}],"id":3021,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":3021},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3017,"type":"address","value":"_address"},"id":3022,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":3023,"name":"Identifier","src":"4217:6:25"}],"id":3024,"name":"BinaryOperation","src":"4205:18:25"}],"id":3025,"name":"Return","src":"4198:25:25"}],"id":3026,"name":"Block","src":"4188:42:25"}],"id":3027,"name":"FunctionDefinition","src":"4123:107:25"}],"id":3028,"name":"ContractDefinition","src":"1149:3083:25"}],"id":3029,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[3245]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3030,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":5583,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":3246,"symbolAliases":[null],"unitAlias":""},"id":3031,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":2872,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":3246,"symbolAliases":[null],"unitAlias":""},"id":3032,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[2871],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[3245,2871],"name":"TokenWhitelistable","scope":3246},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":3033,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":3034,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":3245,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3035,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":3036,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3245,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":3046,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3037,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":3038,"name":"VariableDeclaration","src":"1292:28:26"}],"id":3039,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":3040,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3041,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3038,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":3042,"name":"Identifier","src":"1363:20:26"}],"id":3043,"name":"Assignment","src":"1341:42:26"}],"id":3044,"name":"ExpressionStatement","src":"1341:42:26"}],"id":3045,"name":"Block","src":"1331:59:26"}],"id":3046,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3047,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3054,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3048,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":3049,"name":"VariableDeclaration","src":"1567:7:26"}],"id":3050,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":3050},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3051,"name":"Identifier","src":"1593:19:26"}],"id":3052,"name":"Return","src":"1586:26:26"}],"id":3053,"name":"Block","src":"1576:43:26"}],"id":3054,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3083,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3055,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":3056,"name":"VariableDeclaration","src":"2194:10:26"}],"id":3057,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3058,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":3059,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3060,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":3061,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3062,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":3063,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3064,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":3065,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3066,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":3067,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3068,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":3069,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3070,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":3071,"name":"VariableDeclaration","src":"2280:7:26"}],"id":3072,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":3072},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":4620,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3073,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3074,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3075,"name":"Identifier","src":"2334:19:26"}],"id":3076,"name":"FunctionCall","src":"2322:32:26"}],"id":3077,"name":"FunctionCall","src":"2306:49:26"}],"id":3078,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3056,"type":"address","value":"_a"},"id":3079,"name":"Identifier","src":"2369:2:26"}],"id":3080,"name":"FunctionCall","src":"2306:66:26"}],"id":3081,"name":"Return","src":"2299:73:26"}],"id":3082,"name":"Block","src":"2289:90:26"}],"id":3083,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3084,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3085,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":3086,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3087,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":3088,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3089,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":3090,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3091,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":3092,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3093,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":3094,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3095,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":3096,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3097,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":3098,"name":"VariableDeclaration","src":"2991:7:26"}],"id":3099,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":3099},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":4637,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3100,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3101,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3102,"name":"Identifier","src":"3045:19:26"}],"id":3103,"name":"FunctionCall","src":"3033:32:26"}],"id":3104,"name":"FunctionCall","src":"3017:49:26"}],"id":3105,"name":"MemberAccess","src":"3017:67:26"}],"id":3106,"name":"FunctionCall","src":"3017:69:26"}],"id":3107,"name":"Return","src":"3010:76:26"}],"id":3108,"name":"Block","src":"3000:93:26"}],"id":3109,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3110,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3124,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3111,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":3112,"name":"ArrayTypeName","src":"3273:9:26"}],"id":3113,"name":"VariableDeclaration","src":"3273:16:26"}],"id":3114,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":3114},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":4643,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3115,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3116,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3117,"name":"Identifier","src":"3336:19:26"}],"id":3118,"name":"FunctionCall","src":"3324:32:26"}],"id":3119,"name":"FunctionCall","src":"3308:49:26"}],"id":3120,"name":"MemberAccess","src":"3308:67:26"}],"id":3121,"name":"FunctionCall","src":"3308:69:26"}],"id":3122,"name":"Return","src":"3301:76:26"}],"id":3123,"name":"Block","src":"3291:93:26"}],"id":3124,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3125,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3139,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3126,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":3127,"name":"ArrayTypeName","src":"3563:9:26"}],"id":3128,"name":"VariableDeclaration","src":"3563:16:26"}],"id":3129,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":3129},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":4649,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3130,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3131,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3132,"name":"Identifier","src":"3626:19:26"}],"id":3133,"name":"FunctionCall","src":"3614:32:26"}],"id":3134,"name":"FunctionCall","src":"3598:49:26"}],"id":3135,"name":"MemberAccess","src":"3598:66:26"}],"id":3136,"name":"FunctionCall","src":"3598:68:26"}],"id":3137,"name":"Return","src":"3591:75:26"}],"id":3138,"name":"Block","src":"3581:92:26"}],"id":3139,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":3245,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":3160,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3140,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":3141,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":3160,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3142,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":3143,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":3160,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3144,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":3145,"name":"VariableDeclaration","src":"4007:19:26"}],"id":3146,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":3147,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":4681,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3148,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3149,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3150,"name":"Identifier","src":"4075:19:26"}],"id":3151,"name":"FunctionCall","src":"4063:32:26"}],"id":3152,"name":"FunctionCall","src":"4047:49:26"}],"id":3153,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3141,"type":"address","value":"_token"},"id":3154,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3143,"type":"uint256","value":"_rate"},"id":3155,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3145,"type":"uint256","value":"_updateDate"},"id":3156,"name":"Identifier","src":"4128:11:26"}],"id":3157,"name":"FunctionCall","src":"4047:93:26"}],"id":3158,"name":"ExpressionStatement","src":"4047:93:26"}],"id":3159,"name":"Block","src":"4037:110:26"}],"id":3160,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":3182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3161,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":3162,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":3182,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3163,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":3164,"name":"VariableDeclaration","src":"4364:18:26"}],"id":3165,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3166,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":3167,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":3182,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3168,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":3169,"name":"VariableDeclaration","src":"4416:7:26"}],"id":3170,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":3170},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":4667,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3171,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3172,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3173,"name":"Identifier","src":"4470:19:26"}],"id":3174,"name":"FunctionCall","src":"4458:32:26"}],"id":3175,"name":"FunctionCall","src":"4442:49:26"}],"id":3176,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3162,"type":"address","value":"_destination"},"id":3177,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3164,"type":"bytes memory","value":"_data"},"id":3178,"name":"Identifier","src":"4533:5:26"}],"id":3179,"name":"FunctionCall","src":"4442:97:26"}],"id":3180,"name":"Return","src":"4435:104:26"}],"id":3181,"name":"Block","src":"4425:121:26"}],"id":3182,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3198,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3183,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":3184,"name":"VariableDeclaration","src":"4671:10:26"}],"id":3185,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3198,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3186,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":3187,"name":"VariableDeclaration","src":"4706:4:26"}],"id":3188,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,3190,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":3197,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3189,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":3190,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3191,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"address","value":"_a"},"id":3192,"name":"Identifier","src":"4767:2:26"}],"id":3193,"name":"FunctionCall","src":"4753:17:26"}],"id":3194,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":3188},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3190,"type":"bool","value":"available"},"id":3195,"name":"Identifier","src":"4787:9:26"}],"id":3196,"name":"Return","src":"4780:16:26"}],"id":3197,"name":"Block","src":"4712:91:26"}],"id":3198,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3214,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3199,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":3200,"name":"VariableDeclaration","src":"4931:10:26"}],"id":3201,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3214,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3202,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":3203,"name":"VariableDeclaration","src":"4966:4:26"}],"id":3204,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,3206,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":3213,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3205,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":3206,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3207,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3200,"type":"address","value":"_a"},"id":3208,"name":"Identifier","src":"5028:2:26"}],"id":3209,"name":"FunctionCall","src":"5014:17:26"}],"id":3210,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":3204},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bool","value":"redeemable"},"id":3211,"name":"Identifier","src":"5048:10:26"}],"id":3212,"name":"Return","src":"5041:17:26"}],"id":3213,"name":"Block","src":"4972:93:26"}],"id":3214,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3230,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3215,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":3216,"name":"VariableDeclaration","src":"5187:10:26"}],"id":3217,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3230,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3218,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":3219,"name":"VariableDeclaration","src":"5222:4:26"}],"id":3220,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,3222,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":3229,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3221,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":3222,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3223,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3216,"type":"address","value":"_a"},"id":3224,"name":"Identifier","src":"5282:2:26"}],"id":3225,"name":"FunctionCall","src":"5268:17:26"}],"id":3226,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":3220},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3222,"type":"bool","value":"loadable"},"id":3227,"name":"Identifier","src":"5302:8:26"}],"id":3228,"name":"Return","src":"5295:15:26"}],"id":3229,"name":"Block","src":"5228:89:26"}],"id":3230,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3231,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3244,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3232,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":3233,"name":"VariableDeclaration","src":"5482:7:26"}],"id":3234,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":3234},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":4672,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3235,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3236,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3237,"name":"Identifier","src":"5536:19:26"}],"id":3238,"name":"FunctionCall","src":"5524:32:26"}],"id":3239,"name":"FunctionCall","src":"5508:49:26"}],"id":3240,"name":"MemberAccess","src":"5508:60:26"}],"id":3241,"name":"FunctionCall","src":"5508:62:26"}],"id":3242,"name":"Return","src":"5501:69:26"}],"id":3243,"name":"Block","src":"5491:86:26"}],"id":3244,"name":"FunctionDefinition","src":"5436:141:26"}],"id":3245,"name":"ContractDefinition","src":"958:4621:26"}],"id":3246,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[3285]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3247,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":2347,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3286,"symbolAliases":[null],"unitAlias":""},"id":3248,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":2566,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":3286,"symbolAliases":[null],"unitAlias":""},"id":3249,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[3285],"name":"Transferrable","scope":3286},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2565,"type":"library SafeERC20"},"id":3250,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":3251,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":3252,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":3285,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3284,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3253,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":3254,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":3284,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3255,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":3256,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":3284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3257,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":3258,"name":"VariableDeclaration","src":"1426:15:27"}],"id":3259,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":3260,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3256,"type":"address","value":"_asset"},"id":3261,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3262,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3263,"name":"Literal","src":"1528:1:27"}],"id":3264,"name":"FunctionCall","src":"1520:10:27"}],"id":3265,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"address payable","value":"_to"},"id":3266,"name":"Identifier","src":"1546:3:27"}],"id":3268,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3258,"type":"uint256","value":"_amount"},"id":3269,"name":"Identifier","src":"1559:7:27"}],"id":3270,"name":"FunctionCall","src":"1546:21:27"}],"id":3271,"name":"ExpressionStatement","src":"1546:21:27"}],"id":3272,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":2379,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":3273,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3256,"type":"address","value":"_asset"},"id":3274,"name":"Identifier","src":"1604:6:27"}],"id":3275,"name":"FunctionCall","src":"1598:13:27"}],"id":3276,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"address payable","value":"_to"},"id":3277,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3258,"type":"uint256","value":"_amount"},"id":3278,"name":"Identifier","src":"1630:7:27"}],"id":3279,"name":"FunctionCall","src":"1598:40:27"}],"id":3280,"name":"ExpressionStatement","src":"1598:40:27"}],"id":3281,"name":"Block","src":"1584:65:27"}],"id":3282,"name":"IfStatement","src":"1506:143:27"}],"id":3283,"name":"Block","src":"1452:203:27"}],"id":3284,"name":"FunctionDefinition","src":"1366:289:27"}],"id":3285,"name":"ContractDefinition","src":"961:696:27"}],"id":3286,"name":"SourceUnit","src":"773:885:27"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[3305],"Licence":[3829]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3287,"name":"PragmaDirective","src":"767:24:28"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3288,"name":"ImportDirective","src":"793:34:28"},{"attributes":{"SourceUnit":2566,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3289,"name":"ImportDirective","src":"828:35:28"},{"attributes":{"SourceUnit":2827,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3290,"name":"ImportDirective","src":"864:38:28"},{"attributes":{"SourceUnit":2872,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3291,"name":"ImportDirective","src":"903:39:28"},{"attributes":{"SourceUnit":3286,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3292,"name":"ImportDirective","src":"943:39:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[3305],"name":"ILicence","scope":3830},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":3305,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3299,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3293,"name":"ElementaryTypeName","src":"1125:7:28"}],"id":3294,"name":"VariableDeclaration","src":"1125:7:28"},{"attributes":{"constant":false,"name":"","scope":3299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3295,"name":"ElementaryTypeName","src":"1134:7:28"}],"id":3296,"name":"VariableDeclaration","src":"1134:7:28"}],"id":3297,"name":"ParameterList","src":"1124:18:28"},{"attributes":{"parameters":[null]},"children":[],"id":3298,"name":"ParameterList","src":"1159:0:28"}],"id":3299,"name":"FunctionDefinition","src":"1111:49:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":3305,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3300,"name":"ElementaryTypeName","src":"1195:7:28"}],"id":3301,"name":"VariableDeclaration","src":"1195:7:28"}],"id":3302,"name":"ParameterList","src":"1194:9:28"},{"attributes":{"parameters":[null]},"children":[],"id":3303,"name":"ParameterList","src":"1212:0:28"}],"id":3304,"name":"FunctionDefinition","src":"1166:47:28"}],"id":3305,"name":"ContractDefinition","src":"1086:129:28"},{"attributes":{"contractDependencies":[2826,2871,3285],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[3829,2826,2871,3285],"name":"Licence","scope":3830},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3285,"type":"contract Transferrable"},"id":3306,"name":"UserDefinedTypeName","src":"1401:13:28"}],"id":3307,"name":"InheritanceSpecifier","src":"1401:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":3308,"name":"UserDefinedTypeName","src":"1416:13:28"}],"id":3309,"name":"InheritanceSpecifier","src":"1416:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2826,"type":"contract Controllable"},"id":3310,"name":"UserDefinedTypeName","src":"1431:12:28"}],"id":3311,"name":"InheritanceSpecifier","src":"1431:12:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":3312,"name":"UserDefinedTypeName","src":"1456:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":3313,"name":"ElementaryTypeName","src":"1469:7:28"}],"id":3314,"name":"UsingForDirective","src":"1450:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2565,"type":"library SafeERC20"},"id":3315,"name":"UserDefinedTypeName","src":"1488:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":3316,"name":"UserDefinedTypeName","src":"1502:5:28"}],"id":3317,"name":"UsingForDirective","src":"1482:26:28"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":3321,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3318,"name":"ElementaryTypeName","src":"1614:7:28"}],"id":3319,"name":"VariableDeclaration","src":"1614:15:28"}],"id":3320,"name":"ParameterList","src":"1613:17:28"}],"id":3321,"name":"EventDefinition","src":"1590:41:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":3325,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3322,"name":"ElementaryTypeName","src":"1661:7:28"}],"id":3323,"name":"VariableDeclaration","src":"1661:17:28"}],"id":3324,"name":"ParameterList","src":"1660:19:28"}],"id":3325,"name":"EventDefinition","src":"1636:44:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":3329,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3326,"name":"ElementaryTypeName","src":"1710:7:28"}],"id":3327,"name":"VariableDeclaration","src":"1710:18:28"}],"id":3328,"name":"ParameterList","src":"1709:20:28"}],"id":3329,"name":"EventDefinition","src":"1685:45:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":3333,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3330,"name":"ElementaryTypeName","src":"1767:7:28"}],"id":3331,"name":"VariableDeclaration","src":"1767:15:28"}],"id":3332,"name":"ParameterList","src":"1766:17:28"}],"id":3333,"name":"EventDefinition","src":"1735:49:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":3337,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3334,"name":"ElementaryTypeName","src":"1816:7:28"}],"id":3335,"name":"VariableDeclaration","src":"1816:18:28"}],"id":3336,"name":"ParameterList","src":"1815:20:28"}],"id":3337,"name":"EventDefinition","src":"1789:47:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3338,"name":"ElementaryTypeName","src":"1873:7:28"}],"id":3339,"name":"VariableDeclaration","src":"1873:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3340,"name":"ElementaryTypeName","src":"1888:7:28"}],"id":3341,"name":"VariableDeclaration","src":"1888:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3342,"name":"ElementaryTypeName","src":"1901:7:28"}],"id":3343,"name":"VariableDeclaration","src":"1901:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3347,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3344,"name":"ElementaryTypeName","src":"1917:7:28"}],"id":3345,"name":"VariableDeclaration","src":"1917:15:28"}],"id":3346,"name":"ParameterList","src":"1872:61:28"}],"id":3347,"name":"EventDefinition","src":"1842:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3348,"name":"ElementaryTypeName","src":"1970:7:28"}],"id":3349,"name":"VariableDeclaration","src":"1970:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3350,"name":"ElementaryTypeName","src":"1985:7:28"}],"id":3351,"name":"VariableDeclaration","src":"1985:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3352,"name":"ElementaryTypeName","src":"1998:7:28"}],"id":3353,"name":"VariableDeclaration","src":"1998:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3354,"name":"ElementaryTypeName","src":"2014:7:28"}],"id":3355,"name":"VariableDeclaration","src":"2014:15:28"}],"id":3356,"name":"ParameterList","src":"1969:61:28"}],"id":3357,"name":"EventDefinition","src":"1939:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3365,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3358,"name":"ElementaryTypeName","src":"2051:7:28"}],"id":3359,"name":"VariableDeclaration","src":"2051:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3365,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3360,"name":"ElementaryTypeName","src":"2064:7:28"}],"id":3361,"name":"VariableDeclaration","src":"2064:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3365,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3362,"name":"ElementaryTypeName","src":"2080:7:28"}],"id":3363,"name":"VariableDeclaration","src":"2080:15:28"}],"id":3364,"name":"ParameterList","src":"2050:46:28"}],"id":3365,"name":"EventDefinition","src":"2037:60:28"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":3829,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3366,"name":"ElementaryTypeName","src":"2209:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":3367,"name":"Literal","src":"2252:4:28"}],"id":3368,"name":"VariableDeclaration","src":"2209:47:28"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":3829,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3369,"name":"ElementaryTypeName","src":"2262:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3370,"name":"Literal","src":"2305:1:28"}],"id":3371,"name":"VariableDeclaration","src":"2262:44:28"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":3829,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3372,"name":"ElementaryTypeName","src":"2313:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":3373,"name":"Literal","src":"2351:42:28"}],"id":3374,"name":"VariableDeclaration","src":"2313:80:28"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":3829,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3375,"name":"ElementaryTypeName","src":"2433:15:28"}],"id":3376,"name":"VariableDeclaration","src":"2433:36:28"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":3829,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3377,"name":"ElementaryTypeName","src":"2475:15:28"}],"id":3378,"name":"VariableDeclaration","src":"2475:36:28"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":3829,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3379,"name":"ElementaryTypeName","src":"2517:7:28"}],"id":3380,"name":"VariableDeclaration","src":"2517:27:28"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":3829,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3381,"name":"ElementaryTypeName","src":"2551:4:28"}],"id":3382,"name":"VariableDeclaration","src":"2551:31:28"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":3829,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3383,"name":"ElementaryTypeName","src":"2588:4:28"}],"id":3384,"name":"VariableDeclaration","src":"2588:31:28"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":3829,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3385,"name":"ElementaryTypeName","src":"2625:4:28"}],"id":3386,"name":"VariableDeclaration","src":"2625:30:28"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":3829,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3387,"name":"ElementaryTypeName","src":"2661:4:28"}],"id":3388,"name":"VariableDeclaration","src":"2661:38:28"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":3829,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3389,"name":"ElementaryTypeName","src":"2853:7:28"}],"id":3390,"name":"VariableDeclaration","src":"2853:36:28"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3391,"name":"ParameterList","src":"2990:2:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3392,"name":"Identifier","src":"3003:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3393,"name":"Identifier","src":"3011:3:28"}],"id":3394,"name":"MemberAccess","src":"3011:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3380,"type":"address","value":"_licenceDAO"},"id":3395,"name":"Identifier","src":"3025:11:28"}],"id":3396,"name":"BinaryOperation","src":"3011:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":3397,"name":"Literal","src":"3038:26:28"}],"id":3398,"name":"FunctionCall","src":"3003:62:28"}],"id":3399,"name":"ExpressionStatement","src":"3003:62:28"},{"id":3400,"name":"PlaceholderStatement","src":"3075:1:28"}],"id":3401,"name":"Block","src":"2993:90:28"}],"id":3402,"name":"ModifierDefinition","src":"2974:109:28"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3403,"name":"ElementaryTypeName","src":"3628:7:28"}],"id":3404,"name":"VariableDeclaration","src":"3628:17:28"},{"attributes":{"constant":false,"name":"_float_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3405,"name":"ElementaryTypeName","src":"3647:15:28"}],"id":3406,"name":"VariableDeclaration","src":"3647:23:28"},{"attributes":{"constant":false,"name":"_holder_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3407,"name":"ElementaryTypeName","src":"3672:15:28"}],"id":3408,"name":"VariableDeclaration","src":"3672:24:28"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3409,"name":"ElementaryTypeName","src":"3698:7:28"}],"id":3410,"name":"VariableDeclaration","src":"3698:20:28"},{"attributes":{"constant":false,"name":"_ens_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3411,"name":"ElementaryTypeName","src":"3720:7:28"}],"id":3412,"name":"VariableDeclaration","src":"3720:13:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3413,"name":"ElementaryTypeName","src":"3735:7:28"}],"id":3414,"name":"VariableDeclaration","src":"3735:24:28"}],"id":3415,"name":"ParameterList","src":"3627:133:28"},{"attributes":{"parameters":[null]},"children":[],"id":3422,"name":"ParameterList","src":"3848:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2871,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":3416,"name":"Identifier","src":"3784:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"address","value":"_ens_"},"id":3417,"name":"Identifier","src":"3798:5:28"}],"id":3418,"name":"ModifierInvocation","src":"3784:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2826,"type":"type(contract Controllable)","value":"Controllable"},"id":3419,"name":"Identifier","src":"3813:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3414,"type":"bytes32","value":"_controllerNode_"},"id":3420,"name":"Identifier","src":"3826:16:28"}],"id":3421,"name":"ModifierInvocation","src":"3813:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3423,"name":"Identifier","src":"3858:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3371,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":3424,"name":"Identifier","src":"3866:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"uint256","value":"_licence_"},"id":3425,"name":"Identifier","src":"3886:9:28"}],"id":3426,"name":"BinaryOperation","src":"3866:29:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"uint256","value":"_licence_"},"id":3427,"name":"Identifier","src":"3899:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3368,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3428,"name":"Identifier","src":"3912:16:28"}],"id":3429,"name":"BinaryOperation","src":"3899:29:28"}],"id":3430,"name":"BinaryOperation","src":"3866:62:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":3431,"name":"Literal","src":"3930:29:28"}],"id":3432,"name":"FunctionCall","src":"3858:102:28"}],"id":3433,"name":"ExpressionStatement","src":"3858:102:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"uint256","value":"_licenceAmountScaled"},"id":3434,"name":"Identifier","src":"3970:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"uint256","value":"_licence_"},"id":3435,"name":"Identifier","src":"3993:9:28"}],"id":3436,"name":"Assignment","src":"3970:32:28"}],"id":3437,"name":"ExpressionStatement","src":"3970:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3438,"name":"Identifier","src":"4012:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3406,"type":"address payable","value":"_float_"},"id":3439,"name":"Identifier","src":"4027:7:28"}],"id":3440,"name":"Assignment","src":"4012:22:28"}],"id":3441,"name":"ExpressionStatement","src":"4012:22:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3442,"name":"Identifier","src":"4044:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3408,"type":"address payable","value":"_holder_"},"id":3443,"name":"Identifier","src":"4059:8:28"}],"id":3444,"name":"Assignment","src":"4044:23:28"}],"id":3445,"name":"ExpressionStatement","src":"4044:23:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3410,"type":"address","value":"_tknAddress_"},"id":3446,"name":"Identifier","src":"4081:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3447,"name":"ElementaryTypeNameExpression","src":"4097:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3448,"name":"Literal","src":"4105:1:28"}],"id":3449,"name":"FunctionCall","src":"4097:10:28"}],"id":3450,"name":"BinaryOperation","src":"4081:26:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3374,"type":"address","value":"_tknContractAddress"},"id":3451,"name":"Identifier","src":"4123:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3410,"type":"address","value":"_tknAddress_"},"id":3452,"name":"Identifier","src":"4145:12:28"}],"id":3453,"name":"Assignment","src":"4123:34:28"}],"id":3454,"name":"ExpressionStatement","src":"4123:34:28"}],"id":3455,"name":"Block","src":"4109:59:28"}],"id":3456,"name":"IfStatement","src":"4077:91:28"}],"id":3457,"name":"Block","src":"3848:326:28"}],"id":3458,"name":"FunctionDefinition","src":"3616:558:28"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":3829,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3459,"name":"ParameterList","src":"4290:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3460,"name":"ParameterList","src":"4310:0:28"},{"attributes":{"statements":[null]},"children":[],"id":3461,"name":"Block","src":"4310:2:28"}],"id":3462,"name":"FunctionDefinition","src":"4282:30:28"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3463,"name":"ParameterList","src":"4503:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3470,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3464,"name":"ElementaryTypeName","src":"4529:7:28"}],"id":3465,"name":"VariableDeclaration","src":"4529:7:28"}],"id":3466,"name":"ParameterList","src":"4528:9:28"},{"children":[{"attributes":{"functionReturnParameters":3466},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"uint256","value":"_licenceAmountScaled"},"id":3467,"name":"Identifier","src":"4555:20:28"}],"id":3468,"name":"Return","src":"4548:27:28"}],"id":3469,"name":"Block","src":"4538:44:28"}],"id":3470,"name":"FunctionDefinition","src":"4475:107:28"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3471,"name":"ParameterList","src":"4749:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3478,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3472,"name":"ElementaryTypeName","src":"4775:7:28"}],"id":3473,"name":"VariableDeclaration","src":"4775:7:28"}],"id":3474,"name":"ParameterList","src":"4774:9:28"},{"children":[{"attributes":{"functionReturnParameters":3474},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3475,"name":"Identifier","src":"4801:12:28"}],"id":3476,"name":"Return","src":"4794:19:28"}],"id":3477,"name":"Block","src":"4784:36:28"}],"id":3478,"name":"FunctionDefinition","src":"4729:91:28"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3479,"name":"ParameterList","src":"4970:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3486,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3480,"name":"ElementaryTypeName","src":"4996:7:28"}],"id":3481,"name":"VariableDeclaration","src":"4996:7:28"}],"id":3482,"name":"ParameterList","src":"4995:9:28"},{"children":[{"attributes":{"functionReturnParameters":3482},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3483,"name":"Identifier","src":"5022:12:28"}],"id":3484,"name":"Return","src":"5015:19:28"}],"id":3485,"name":"Block","src":"5005:36:28"}],"id":3486,"name":"FunctionDefinition","src":"4950:91:28"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3487,"name":"ParameterList","src":"5172:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3494,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3488,"name":"ElementaryTypeName","src":"5198:7:28"}],"id":3489,"name":"VariableDeclaration","src":"5198:7:28"}],"id":3490,"name":"ParameterList","src":"5197:9:28"},{"children":[{"attributes":{"functionReturnParameters":3490},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3380,"type":"address","value":"_licenceDAO"},"id":3491,"name":"Identifier","src":"5224:11:28"}],"id":3492,"name":"Return","src":"5217:18:28"}],"id":3493,"name":"Block","src":"5207:35:28"}],"id":3494,"name":"FunctionDefinition","src":"5153:89:28"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3495,"name":"ParameterList","src":"5369:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3496,"name":"ElementaryTypeName","src":"5395:7:28"}],"id":3497,"name":"VariableDeclaration","src":"5395:7:28"}],"id":3498,"name":"ParameterList","src":"5394:9:28"},{"children":[{"attributes":{"functionReturnParameters":3498},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3374,"type":"address","value":"_tknContractAddress"},"id":3499,"name":"Identifier","src":"5421:19:28"}],"id":3500,"name":"Return","src":"5414:26:28"}],"id":3501,"name":"Block","src":"5404:43:28"}],"id":3502,"name":"FunctionDefinition","src":"5342:105:28"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3503,"name":"ParameterList","src":"5571:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3506,"name":"ParameterList","src":"5593:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3504,"name":"Identifier","src":"5583:9:28"}],"id":3505,"name":"ModifierInvocation","src":"5583:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3382,"type":"bool","value":"_lockedCryptoFloat"},"id":3507,"name":"Identifier","src":"5603:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3508,"name":"Literal","src":"5624:4:28"}],"id":3509,"name":"Assignment","src":"5603:25:28"}],"id":3510,"name":"ExpressionStatement","src":"5603:25:28"}],"id":3511,"name":"Block","src":"5593:42:28"}],"id":3512,"name":"FunctionDefinition","src":"5553:82:28"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3513,"name":"ParameterList","src":"5760:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3516,"name":"ParameterList","src":"5782:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3514,"name":"Identifier","src":"5772:9:28"}],"id":3515,"name":"ModifierInvocation","src":"5772:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3384,"type":"bool","value":"_lockedTokenHolder"},"id":3517,"name":"Identifier","src":"5792:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3518,"name":"Literal","src":"5813:4:28"}],"id":3519,"name":"Assignment","src":"5792:25:28"}],"id":3520,"name":"ExpressionStatement","src":"5792:25:28"}],"id":3521,"name":"Block","src":"5782:42:28"}],"id":3522,"name":"FunctionDefinition","src":"5741:83:28"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3523,"name":"ParameterList","src":"5945:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3526,"name":"ParameterList","src":"5967:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3524,"name":"Identifier","src":"5957:9:28"}],"id":3525,"name":"ModifierInvocation","src":"5957:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3386,"type":"bool","value":"_lockedLicenceDAO"},"id":3527,"name":"Identifier","src":"5977:17:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3528,"name":"Literal","src":"5997:4:28"}],"id":3529,"name":"Assignment","src":"5977:24:28"}],"id":3530,"name":"ExpressionStatement","src":"5977:24:28"}],"id":3531,"name":"Block","src":"5967:41:28"}],"id":3532,"name":"FunctionDefinition","src":"5922:86:28"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3533,"name":"ParameterList","src":"6137:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3536,"name":"ParameterList","src":"6159:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3534,"name":"Identifier","src":"6149:9:28"}],"id":3535,"name":"ModifierInvocation","src":"6149:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3388,"type":"bool","value":"_lockedTKNContractAddress"},"id":3537,"name":"Identifier","src":"6169:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3538,"name":"Literal","src":"6197:4:28"}],"id":3539,"name":"Assignment","src":"6169:32:28"}],"id":3540,"name":"ExpressionStatement","src":"6169:32:28"}],"id":3541,"name":"Block","src":"6159:49:28"}],"id":3542,"name":"FunctionDefinition","src":"6106:102:28"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":3565,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3543,"name":"ElementaryTypeName","src":"6359:15:28"}],"id":3544,"name":"VariableDeclaration","src":"6359:25:28"}],"id":3545,"name":"ParameterList","src":"6358:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":3548,"name":"ParameterList","src":"6405:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3546,"name":"Identifier","src":"6395:9:28"}],"id":3547,"name":"ModifierInvocation","src":"6395:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3549,"name":"Identifier","src":"6415:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3804,"type":"function () view returns (bool)","value":"floatLocked"},"id":3550,"name":"Identifier","src":"6424:11:28"}],"id":3551,"name":"FunctionCall","src":"6424:13:28"}],"id":3552,"name":"UnaryOperation","src":"6423:14:28"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":3553,"name":"Literal","src":"6439:17:28"}],"id":3554,"name":"FunctionCall","src":"6415:42:28"}],"id":3555,"name":"ExpressionStatement","src":"6415:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3556,"name":"Identifier","src":"6467:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3544,"type":"address payable","value":"_newFloat"},"id":3557,"name":"Identifier","src":"6482:9:28"}],"id":3558,"name":"Assignment","src":"6467:24:28"}],"id":3559,"name":"ExpressionStatement","src":"6467:24:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3325,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":3560,"name":"Identifier","src":"6506:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3544,"type":"address payable","value":"_newFloat"},"id":3561,"name":"Identifier","src":"6525:9:28"}],"id":3562,"name":"FunctionCall","src":"6506:29:28"}],"id":3563,"name":"EmitStatement","src":"6501:34:28"}],"id":3564,"name":"Block","src":"6405:137:28"}],"id":3565,"name":"FunctionDefinition","src":"6338:204:28"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":3588,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3566,"name":"ElementaryTypeName","src":"6700:15:28"}],"id":3567,"name":"VariableDeclaration","src":"6700:26:28"}],"id":3568,"name":"ParameterList","src":"6699:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":3571,"name":"ParameterList","src":"6747:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3569,"name":"Identifier","src":"6737:9:28"}],"id":3570,"name":"ModifierInvocation","src":"6737:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3572,"name":"Identifier","src":"6757:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"function () view returns (bool)","value":"holderLocked"},"id":3573,"name":"Identifier","src":"6766:12:28"}],"id":3574,"name":"FunctionCall","src":"6766:14:28"}],"id":3575,"name":"UnaryOperation","src":"6765:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":3576,"name":"Literal","src":"6782:27:28"}],"id":3577,"name":"FunctionCall","src":"6757:53:28"}],"id":3578,"name":"ExpressionStatement","src":"6757:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3579,"name":"Identifier","src":"6820:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3567,"type":"address payable","value":"_newHolder"},"id":3580,"name":"Identifier","src":"6835:10:28"}],"id":3581,"name":"Assignment","src":"6820:25:28"}],"id":3582,"name":"ExpressionStatement","src":"6820:25:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3329,"type":"function (address)","value":"UpdatedTokenHolder"},"id":3583,"name":"Identifier","src":"6860:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3567,"type":"address payable","value":"_newHolder"},"id":3584,"name":"Identifier","src":"6879:10:28"}],"id":3585,"name":"FunctionCall","src":"6860:30:28"}],"id":3586,"name":"EmitStatement","src":"6855:35:28"}],"id":3587,"name":"Block","src":"6747:150:28"}],"id":3588,"name":"FunctionDefinition","src":"6678:219:28"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":3611,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3589,"name":"ElementaryTypeName","src":"7053:7:28"}],"id":3590,"name":"VariableDeclaration","src":"7053:15:28"}],"id":3591,"name":"ParameterList","src":"7052:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":3594,"name":"ParameterList","src":"7089:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3592,"name":"Identifier","src":"7079:9:28"}],"id":3593,"name":"ModifierInvocation","src":"7079:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3595,"name":"Identifier","src":"7099:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3820,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":3596,"name":"Identifier","src":"7108:16:28"}],"id":3597,"name":"FunctionCall","src":"7108:18:28"}],"id":3598,"name":"UnaryOperation","src":"7107:19:28"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":3599,"name":"Literal","src":"7128:15:28"}],"id":3600,"name":"FunctionCall","src":"7099:45:28"}],"id":3601,"name":"ExpressionStatement","src":"7099:45:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3380,"type":"address","value":"_licenceDAO"},"id":3602,"name":"Identifier","src":"7154:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3590,"type":"address","value":"_newDAO"},"id":3603,"name":"Identifier","src":"7168:7:28"}],"id":3604,"name":"Assignment","src":"7154:21:28"}],"id":3605,"name":"ExpressionStatement","src":"7154:21:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3321,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":3606,"name":"Identifier","src":"7190:17:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3590,"type":"address","value":"_newDAO"},"id":3607,"name":"Identifier","src":"7208:7:28"}],"id":3608,"name":"FunctionCall","src":"7190:26:28"}],"id":3609,"name":"EmitStatement","src":"7185:31:28"}],"id":3610,"name":"Block","src":"7089:134:28"}],"id":3611,"name":"FunctionDefinition","src":"7027:196:28"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":3634,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3612,"name":"ElementaryTypeName","src":"7388:7:28"}],"id":3613,"name":"VariableDeclaration","src":"7388:15:28"}],"id":3614,"name":"ParameterList","src":"7387:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":3617,"name":"ParameterList","src":"7424:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3615,"name":"Identifier","src":"7414:9:28"}],"id":3616,"name":"ModifierInvocation","src":"7414:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3618,"name":"Identifier","src":"7434:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3828,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":3619,"name":"Identifier","src":"7443:24:28"}],"id":3620,"name":"FunctionCall","src":"7443:26:28"}],"id":3621,"name":"UnaryOperation","src":"7442:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":3622,"name":"Literal","src":"7471:15:28"}],"id":3623,"name":"FunctionCall","src":"7434:53:28"}],"id":3624,"name":"ExpressionStatement","src":"7434:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3374,"type":"address","value":"_tknContractAddress"},"id":3625,"name":"Identifier","src":"7497:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3613,"type":"address","value":"_newTKN"},"id":3626,"name":"Identifier","src":"7519:7:28"}],"id":3627,"name":"Assignment","src":"7497:29:28"}],"id":3628,"name":"ExpressionStatement","src":"7497:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3333,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":3629,"name":"Identifier","src":"7541:25:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3613,"type":"address","value":"_newTKN"},"id":3630,"name":"Identifier","src":"7567:7:28"}],"id":3631,"name":"FunctionCall","src":"7541:34:28"}],"id":3632,"name":"EmitStatement","src":"7536:39:28"}],"id":3633,"name":"Block","src":"7424:158:28"}],"id":3634,"name":"FunctionDefinition","src":"7354:228:28"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":3661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3635,"name":"ElementaryTypeName","src":"7752:7:28"}],"id":3636,"name":"VariableDeclaration","src":"7752:18:28"}],"id":3637,"name":"ParameterList","src":"7751:20:28"},{"attributes":{"parameters":[null]},"children":[],"id":3640,"name":"ParameterList","src":"7789:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3402,"type":"modifier ()","value":"onlyDAO"},"id":3638,"name":"Identifier","src":"7781:7:28"}],"id":3639,"name":"ModifierInvocation","src":"7781:7:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3641,"name":"Identifier","src":"7799:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3371,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":3642,"name":"Identifier","src":"7807:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"uint256","value":"_newAmount"},"id":3643,"name":"Identifier","src":"7827:10:28"}],"id":3644,"name":"BinaryOperation","src":"7807:30:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"uint256","value":"_newAmount"},"id":3645,"name":"Identifier","src":"7841:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3368,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3646,"name":"Identifier","src":"7855:16:28"}],"id":3647,"name":"BinaryOperation","src":"7841:30:28"}],"id":3648,"name":"BinaryOperation","src":"7807:64:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":3649,"name":"Literal","src":"7873:29:28"}],"id":3650,"name":"FunctionCall","src":"7799:104:28"}],"id":3651,"name":"ExpressionStatement","src":"7799:104:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"uint256","value":"_licenceAmountScaled"},"id":3652,"name":"Identifier","src":"7913:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"uint256","value":"_newAmount"},"id":3653,"name":"Identifier","src":"7936:10:28"}],"id":3654,"name":"Assignment","src":"7913:33:28"}],"id":3655,"name":"ExpressionStatement","src":"7913:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3337,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":3656,"name":"Identifier","src":"7961:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"uint256","value":"_newAmount"},"id":3657,"name":"Identifier","src":"7982:10:28"}],"id":3658,"name":"FunctionCall","src":"7961:32:28"}],"id":3659,"name":"EmitStatement","src":"7956:37:28"}],"id":3660,"name":"Block","src":"7789:211:28"}],"id":3661,"name":"FunctionDefinition","src":"7723:277:28"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":3829,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":3772,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3662,"name":"ElementaryTypeName","src":"8286:7:28"}],"id":3663,"name":"VariableDeclaration","src":"8286:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":3772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3664,"name":"ElementaryTypeName","src":"8302:7:28"}],"id":3665,"name":"VariableDeclaration","src":"8302:15:28"}],"id":3666,"name":"ParameterList","src":"8285:33:28"},{"attributes":{"parameters":[null]},"children":[],"id":3667,"name":"ParameterList","src":"8336:0:28"},{"children":[{"attributes":{"assignments":[3669]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":3771,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3668,"name":"ElementaryTypeName","src":"8346:7:28"}],"id":3669,"name":"VariableDeclaration","src":"8346:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3665,"type":"uint256","value":"_amount"},"id":3670,"name":"Identifier","src":"8367:7:28"}],"id":3671,"name":"VariableDeclarationStatement","src":"8346:28:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3672,"name":"Identifier","src":"8433:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3374,"type":"address","value":"_tknContractAddress"},"id":3673,"name":"Identifier","src":"8443:19:28"}],"id":3674,"name":"BinaryOperation","src":"8433:29:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2404,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":3675,"name":"Identifier","src":"8478:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3676,"name":"Identifier","src":"8484:6:28"}],"id":3677,"name":"FunctionCall","src":"8478:13:28"}],"id":3678,"name":"MemberAccess","src":"8478:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3679,"name":"Identifier","src":"8509:3:28"}],"id":3680,"name":"MemberAccess","src":"8509:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3681,"name":"Identifier","src":"8521:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3682,"name":"Identifier","src":"8535:10:28"}],"id":3683,"name":"FunctionCall","src":"8478:68:28"}],"id":3684,"name":"ExpressionStatement","src":"8478:68:28"}],"id":3685,"name":"Block","src":"8464:93:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3686,"name":"Identifier","src":"8577:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2676,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2651,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3665,"type":"uint256","value":"_amount"},"id":3687,"name":"Identifier","src":"8590:7:28"}],"id":3688,"name":"MemberAccess","src":"8590:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3368,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3689,"name":"Identifier","src":"8602:16:28"}],"id":3690,"name":"FunctionCall","src":"8590:29:28"}],"id":3691,"name":"MemberAccess","src":"8590:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"uint256","value":"_licenceAmountScaled"},"id":3692,"name":"Identifier","src":"8624:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3368,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3693,"name":"Identifier","src":"8647:16:28"}],"id":3694,"name":"BinaryOperation","src":"8624:39:28"}],"id":3695,"name":"FunctionCall","src":"8590:74:28"}],"id":3696,"name":"Assignment","src":"8577:87:28"}],"id":3697,"name":"ExpressionStatement","src":"8577:87:28"},{"attributes":{"assignments":[3699]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":3761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3698,"name":"ElementaryTypeName","src":"8678:7:28"}],"id":3699,"name":"VariableDeclaration","src":"8678:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3665,"type":"uint256","value":"_amount"},"id":3700,"name":"Identifier","src":"8702:7:28"}],"id":3701,"name":"MemberAccess","src":"8702:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3702,"name":"Identifier","src":"8714:10:28"}],"id":3703,"name":"FunctionCall","src":"8702:23:28"}],"id":3704,"name":"VariableDeclarationStatement","src":"8678:47:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3705,"name":"Identifier","src":"8744:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3706,"name":"ElementaryTypeNameExpression","src":"8754:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3707,"name":"Literal","src":"8762:1:28"}],"id":3708,"name":"FunctionCall","src":"8754:10:28"}],"id":3709,"name":"BinaryOperation","src":"8744:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2404,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":3710,"name":"Identifier","src":"8784:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3711,"name":"Identifier","src":"8790:6:28"}],"id":3712,"name":"FunctionCall","src":"8784:13:28"}],"id":3713,"name":"MemberAccess","src":"8784:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3714,"name":"Identifier","src":"8815:3:28"}],"id":3715,"name":"MemberAccess","src":"8815:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3716,"name":"Identifier","src":"8827:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3699,"type":"uint256","value":"licenceAmount"},"id":3717,"name":"Identifier","src":"8841:13:28"}],"id":3718,"name":"FunctionCall","src":"8784:71:28"}],"id":3719,"name":"ExpressionStatement","src":"8784:71:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2404,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":3720,"name":"Identifier","src":"8873:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3721,"name":"Identifier","src":"8879:6:28"}],"id":3722,"name":"FunctionCall","src":"8873:13:28"}],"id":3723,"name":"MemberAccess","src":"8873:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3724,"name":"Identifier","src":"8904:3:28"}],"id":3725,"name":"MemberAccess","src":"8904:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3726,"name":"Identifier","src":"8916:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3727,"name":"Identifier","src":"8930:10:28"}],"id":3728,"name":"FunctionCall","src":"8873:68:28"}],"id":3729,"name":"ExpressionStatement","src":"8873:68:28"}],"id":3730,"name":"Block","src":"8766:190:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3731,"name":"Identifier","src":"8980:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3732,"name":"Identifier","src":"8988:3:28"}],"id":3733,"name":"MemberAccess","src":"8988:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3665,"type":"uint256","value":"_amount"},"id":3734,"name":"Identifier","src":"9001:7:28"}],"id":3735,"name":"BinaryOperation","src":"8988:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":3736,"name":"Literal","src":"9010:33:28"}],"id":3737,"name":"FunctionCall","src":"8980:64:28"}],"id":3738,"name":"ExpressionStatement","src":"8980:64:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3739,"name":"Identifier","src":"9062:12:28"}],"id":3741,"name":"MemberAccess","src":"9062:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3699,"type":"uint256","value":"licenceAmount"},"id":3742,"name":"Identifier","src":"9084:13:28"}],"id":3743,"name":"FunctionCall","src":"9062:36:28"}],"id":3744,"name":"ExpressionStatement","src":"9062:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3745,"name":"Identifier","src":"9116:12:28"}],"id":3747,"name":"MemberAccess","src":"9116:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3748,"name":"Identifier","src":"9138:10:28"}],"id":3749,"name":"FunctionCall","src":"9116:33:28"}],"id":3750,"name":"ExpressionStatement","src":"9116:33:28"}],"id":3751,"name":"Block","src":"8962:202:28"}],"id":3752,"name":"IfStatement","src":"8740:424:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3347,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":3753,"name":"Identifier","src":"9183:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3754,"name":"Identifier","src":"9208:3:28"}],"id":3755,"name":"MemberAccess","src":"9208:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3756,"name":"Identifier","src":"9220:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3757,"name":"Identifier","src":"9234:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3699,"type":"uint256","value":"licenceAmount"},"id":3758,"name":"Identifier","src":"9242:13:28"}],"id":3759,"name":"FunctionCall","src":"9183:73:28"}],"id":3760,"name":"EmitStatement","src":"9178:78:28"}],"id":3761,"name":"Block","src":"8563:704:28"}],"id":3762,"name":"IfStatement","src":"8429:838:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3357,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":3763,"name":"Identifier","src":"9282:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3764,"name":"Identifier","src":"9307:3:28"}],"id":3765,"name":"MemberAccess","src":"9307:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3766,"name":"Identifier","src":"9319:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3767,"name":"Identifier","src":"9333:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3768,"name":"Identifier","src":"9341:10:28"}],"id":3769,"name":"FunctionCall","src":"9282:70:28"}],"id":3770,"name":"EmitStatement","src":"9277:75:28"}],"id":3771,"name":"Block","src":"8336:1023:28"}],"id":3772,"name":"FunctionDefinition","src":"8272:1087:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3796,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3773,"name":"ElementaryTypeName","src":"9463:15:28"}],"id":3774,"name":"VariableDeclaration","src":"9463:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":3796,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3775,"name":"ElementaryTypeName","src":"9484:7:28"}],"id":3776,"name":"VariableDeclaration","src":"9484:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":3796,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3777,"name":"ElementaryTypeName","src":"9500:7:28"}],"id":3778,"name":"VariableDeclaration","src":"9500:15:28"}],"id":3779,"name":"ParameterList","src":"9462:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":3782,"name":"ParameterList","src":"9536:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3780,"name":"Identifier","src":"9526:9:28"}],"id":3781,"name":"ModifierInvocation","src":"9526:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3284,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":3783,"name":"Identifier","src":"9546:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3774,"type":"address payable","value":"_to"},"id":3784,"name":"Identifier","src":"9560:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3776,"type":"address","value":"_asset"},"id":3785,"name":"Identifier","src":"9565:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3778,"type":"uint256","value":"_amount"},"id":3786,"name":"Identifier","src":"9573:7:28"}],"id":3787,"name":"FunctionCall","src":"9546:35:28"}],"id":3788,"name":"ExpressionStatement","src":"9546:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3365,"type":"function (address,address,uint256)","value":"Claimed"},"id":3789,"name":"Identifier","src":"9596:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3774,"type":"address payable","value":"_to"},"id":3790,"name":"Identifier","src":"9604:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3776,"type":"address","value":"_asset"},"id":3791,"name":"Identifier","src":"9609:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3778,"type":"uint256","value":"_amount"},"id":3792,"name":"Identifier","src":"9617:7:28"}],"id":3793,"name":"FunctionCall","src":"9596:29:28"}],"id":3794,"name":"EmitStatement","src":"9591:34:28"}],"id":3795,"name":"Block","src":"9536:96:28"}],"id":3796,"name":"FunctionDefinition","src":"9448:184:28"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3797,"name":"ParameterList","src":"9731:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3804,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3798,"name":"ElementaryTypeName","src":"9755:4:28"}],"id":3799,"name":"VariableDeclaration","src":"9755:4:28"}],"id":3800,"name":"ParameterList","src":"9754:6:28"},{"children":[{"attributes":{"functionReturnParameters":3800},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3382,"type":"bool","value":"_lockedCryptoFloat"},"id":3801,"name":"Identifier","src":"9778:18:28"}],"id":3802,"name":"Return","src":"9771:25:28"}],"id":3803,"name":"Block","src":"9761:42:28"}],"id":3804,"name":"FunctionDefinition","src":"9711:92:28"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3805,"name":"ParameterList","src":"9903:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3812,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3806,"name":"ElementaryTypeName","src":"9927:4:28"}],"id":3807,"name":"VariableDeclaration","src":"9927:4:28"}],"id":3808,"name":"ParameterList","src":"9926:6:28"},{"children":[{"attributes":{"functionReturnParameters":3808},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3384,"type":"bool","value":"_lockedTokenHolder"},"id":3809,"name":"Identifier","src":"9950:18:28"}],"id":3810,"name":"Return","src":"9943:25:28"}],"id":3811,"name":"Block","src":"9933:42:28"}],"id":3812,"name":"FunctionDefinition","src":"9882:93:28"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3813,"name":"ParameterList","src":"10079:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3820,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3814,"name":"ElementaryTypeName","src":"10103:4:28"}],"id":3815,"name":"VariableDeclaration","src":"10103:4:28"}],"id":3816,"name":"ParameterList","src":"10102:6:28"},{"children":[{"attributes":{"functionReturnParameters":3816},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3386,"type":"bool","value":"_lockedLicenceDAO"},"id":3817,"name":"Identifier","src":"10126:17:28"}],"id":3818,"name":"Return","src":"10119:24:28"}],"id":3819,"name":"Block","src":"10109:41:28"}],"id":3820,"name":"FunctionDefinition","src":"10054:96:28"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3821,"name":"ParameterList","src":"10254:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3828,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3822,"name":"ElementaryTypeName","src":"10278:4:28"}],"id":3823,"name":"VariableDeclaration","src":"10278:4:28"}],"id":3824,"name":"ParameterList","src":"10277:6:28"},{"children":[{"attributes":{"functionReturnParameters":3824},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3388,"type":"bool","value":"_lockedTKNContractAddress"},"id":3825,"name":"Identifier","src":"10301:25:28"}],"id":3826,"name":"Return","src":"10294:32:28"}],"id":3827,"name":"Block","src":"10284:49:28"}],"id":3828,"name":"FunctionDefinition","src":"10221:112:28"}],"id":3829,"name":"ContractDefinition","src":"1381:8954:28"}],"id":3830,"name":"SourceUnit","src":"767:9569:28"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[4682],"TokenWhitelist":[5582]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4596,"name":"PragmaDirective","src":"774:24:29"},{"attributes":{"SourceUnit":2827,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4597,"name":"ImportDirective","src":"800:38:29"},{"attributes":{"SourceUnit":3286,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4598,"name":"ImportDirective","src":"839:39:29"},{"attributes":{"SourceUnit":8687,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4599,"name":"ImportDirective","src":"879:36:29"},{"attributes":{"SourceUnit":8576,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4600,"name":"ImportDirective","src":"916:33:29"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4601,"name":"ImportDirective","src":"950:34:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[4682],"name":"ITokenWhitelist","scope":5583},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4602,"name":"ElementaryTypeName","src":"1124:7:29"}],"id":4603,"name":"VariableDeclaration","src":"1124:7:29"}],"id":4604,"name":"ParameterList","src":"1123:9:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4605,"name":"ElementaryTypeName","src":"1156:6:29"}],"id":4606,"name":"VariableDeclaration","src":"1156:13:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4607,"name":"ElementaryTypeName","src":"1171:7:29"}],"id":4608,"name":"VariableDeclaration","src":"1171:7:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4609,"name":"ElementaryTypeName","src":"1180:7:29"}],"id":4610,"name":"VariableDeclaration","src":"1180:7:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4611,"name":"ElementaryTypeName","src":"1189:4:29"}],"id":4612,"name":"VariableDeclaration","src":"1189:4:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4613,"name":"ElementaryTypeName","src":"1195:4:29"}],"id":4614,"name":"VariableDeclaration","src":"1195:4:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4615,"name":"ElementaryTypeName","src":"1201:4:29"}],"id":4616,"name":"VariableDeclaration","src":"1201:4:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4617,"name":"ElementaryTypeName","src":"1207:7:29"}],"id":4618,"name":"VariableDeclaration","src":"1207:7:29"}],"id":4619,"name":"ParameterList","src":"1155:60:29"}],"id":4620,"name":"FunctionDefinition","src":"1102:114:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4621,"name":"ParameterList","src":"1248:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4622,"name":"ElementaryTypeName","src":"1274:6:29"}],"id":4623,"name":"VariableDeclaration","src":"1274:13:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4624,"name":"ElementaryTypeName","src":"1289:7:29"}],"id":4625,"name":"VariableDeclaration","src":"1289:7:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4626,"name":"ElementaryTypeName","src":"1298:7:29"}],"id":4627,"name":"VariableDeclaration","src":"1298:7:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4628,"name":"ElementaryTypeName","src":"1307:4:29"}],"id":4629,"name":"VariableDeclaration","src":"1307:4:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4630,"name":"ElementaryTypeName","src":"1313:4:29"}],"id":4631,"name":"VariableDeclaration","src":"1313:4:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4632,"name":"ElementaryTypeName","src":"1319:4:29"}],"id":4633,"name":"VariableDeclaration","src":"1319:4:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4634,"name":"ElementaryTypeName","src":"1325:7:29"}],"id":4635,"name":"VariableDeclaration","src":"1325:7:29"}],"id":4636,"name":"ParameterList","src":"1273:60:29"}],"id":4637,"name":"FunctionDefinition","src":"1222:112:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4638,"name":"ParameterList","src":"1366:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4643,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4639,"name":"ElementaryTypeName","src":"1392:7:29"}],"id":4640,"name":"ArrayTypeName","src":"1392:9:29"}],"id":4641,"name":"VariableDeclaration","src":"1392:16:29"}],"id":4642,"name":"ParameterList","src":"1391:18:29"}],"id":4643,"name":"FunctionDefinition","src":"1340:70:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4644,"name":"ParameterList","src":"1441:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4649,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4645,"name":"ElementaryTypeName","src":"1467:7:29"}],"id":4646,"name":"ArrayTypeName","src":"1467:9:29"}],"id":4647,"name":"VariableDeclaration","src":"1467:16:29"}],"id":4648,"name":"ParameterList","src":"1466:18:29"}],"id":4649,"name":"FunctionDefinition","src":"1416:69:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4656,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4650,"name":"ElementaryTypeName","src":"1518:6:29"}],"id":4651,"name":"VariableDeclaration","src":"1518:6:29"}],"id":4652,"name":"ParameterList","src":"1517:8:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4656,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4653,"name":"ElementaryTypeName","src":"1549:4:29"}],"id":4654,"name":"VariableDeclaration","src":"1549:4:29"}],"id":4655,"name":"ParameterList","src":"1548:6:29"}],"id":4656,"name":"FunctionDefinition","src":"1491:64:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4667,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4657,"name":"ElementaryTypeName","src":"1597:7:29"}],"id":4658,"name":"VariableDeclaration","src":"1597:7:29"},{"attributes":{"constant":false,"name":"","scope":4667,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4659,"name":"ElementaryTypeName","src":"1606:5:29"}],"id":4660,"name":"VariableDeclaration","src":"1606:14:29"}],"id":4661,"name":"ParameterList","src":"1596:25:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4667,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4662,"name":"ElementaryTypeName","src":"1645:7:29"}],"id":4663,"name":"VariableDeclaration","src":"1645:7:29"},{"attributes":{"constant":false,"name":"","scope":4667,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4664,"name":"ElementaryTypeName","src":"1654:7:29"}],"id":4665,"name":"VariableDeclaration","src":"1654:7:29"}],"id":4666,"name":"ParameterList","src":"1644:18:29"}],"id":4667,"name":"FunctionDefinition","src":"1561:102:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4668,"name":"ParameterList","src":"1688:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4672,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4669,"name":"ElementaryTypeName","src":"1714:7:29"}],"id":4670,"name":"VariableDeclaration","src":"1714:7:29"}],"id":4671,"name":"ParameterList","src":"1713:9:29"}],"id":4672,"name":"FunctionDefinition","src":"1669:54:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":4682,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4673,"name":"ElementaryTypeName","src":"1754:7:29"}],"id":4674,"name":"VariableDeclaration","src":"1754:7:29"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4675,"name":"ElementaryTypeName","src":"1763:7:29"}],"id":4676,"name":"VariableDeclaration","src":"1763:7:29"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4677,"name":"ElementaryTypeName","src":"1772:7:29"}],"id":4678,"name":"VariableDeclaration","src":"1772:7:29"}],"id":4679,"name":"ParameterList","src":"1753:27:29"},{"attributes":{"parameters":[null]},"children":[],"id":4680,"name":"ParameterList","src":"1789:0:29"}],"id":4681,"name":"FunctionDefinition","src":"1729:61:29"}],"id":4682,"name":"ContractDefinition","src":"1070:722:29"},{"attributes":{"contractDependencies":[2826,2871,3285],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[5582,3285,2826,2871],"name":"TokenWhitelist","scope":5583},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":4683,"name":"UserDefinedTypeName","src":"1966:13:29"}],"id":4684,"name":"InheritanceSpecifier","src":"1966:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2826,"type":"contract Controllable"},"id":4685,"name":"UserDefinedTypeName","src":"1981:12:29"}],"id":4686,"name":"InheritanceSpecifier","src":"1981:12:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3285,"type":"contract Transferrable"},"id":4687,"name":"UserDefinedTypeName","src":"1995:13:29"}],"id":4688,"name":"InheritanceSpecifier","src":"1995:13:29"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":8575,"type":"library strings"},"id":4689,"name":"UserDefinedTypeName","src":"2021:7:29"}],"id":4690,"name":"UsingForDirective","src":"2015:20:29"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":4691,"name":"UserDefinedTypeName","src":"2046:8:29"},{"attributes":{"name":"uint256","type":"uint256"},"id":4692,"name":"ElementaryTypeName","src":"2059:7:29"}],"id":4693,"name":"UsingForDirective","src":"2040:27:29"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":8686,"type":"library BytesUtils"},"id":4694,"name":"UserDefinedTypeName","src":"2078:10:29"},{"attributes":{"name":"bytes","type":"bytes"},"id":4695,"name":"ElementaryTypeName","src":"2093:5:29"}],"id":4696,"name":"UsingForDirective","src":"2072:27:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4704,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4697,"name":"ElementaryTypeName","src":"2128:7:29"}],"id":4698,"name":"VariableDeclaration","src":"2128:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4704,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4699,"name":"ElementaryTypeName","src":"2145:7:29"}],"id":4700,"name":"VariableDeclaration","src":"2145:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":4704,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4701,"name":"ElementaryTypeName","src":"2161:7:29"}],"id":4702,"name":"VariableDeclaration","src":"2161:13:29"}],"id":4703,"name":"ParameterList","src":"2127:48:29"}],"id":4704,"name":"EventDefinition","src":"2105:71:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4712,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4705,"name":"ElementaryTypeName","src":"2209:7:29"}],"id":4706,"name":"VariableDeclaration","src":"2209:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4712,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4707,"name":"ElementaryTypeName","src":"2226:7:29"}],"id":4708,"name":"VariableDeclaration","src":"2226:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":4712,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4709,"name":"ElementaryTypeName","src":"2242:4:29"}],"id":4710,"name":"VariableDeclaration","src":"2242:14:29"}],"id":4711,"name":"ParameterList","src":"2208:49:29"}],"id":4712,"name":"EventDefinition","src":"2182:76:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4720,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4713,"name":"ElementaryTypeName","src":"2292:7:29"}],"id":4714,"name":"VariableDeclaration","src":"2292:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4720,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4715,"name":"ElementaryTypeName","src":"2309:7:29"}],"id":4716,"name":"VariableDeclaration","src":"2309:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":4720,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4717,"name":"ElementaryTypeName","src":"2325:4:29"}],"id":4718,"name":"VariableDeclaration","src":"2325:16:29"}],"id":4719,"name":"ParameterList","src":"2291:51:29"}],"id":4720,"name":"EventDefinition","src":"2263:80:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4734,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4721,"name":"ElementaryTypeName","src":"2366:7:29"}],"id":4722,"name":"VariableDeclaration","src":"2366:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4734,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4723,"name":"ElementaryTypeName","src":"2383:7:29"}],"id":4724,"name":"VariableDeclaration","src":"2383:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":4734,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4725,"name":"ElementaryTypeName","src":"2399:6:29"}],"id":4726,"name":"VariableDeclaration","src":"2399:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":4734,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4727,"name":"ElementaryTypeName","src":"2415:7:29"}],"id":4728,"name":"VariableDeclaration","src":"2415:18:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":4734,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4729,"name":"ElementaryTypeName","src":"2435:4:29"}],"id":4730,"name":"VariableDeclaration","src":"2435:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":4734,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4731,"name":"ElementaryTypeName","src":"2451:4:29"}],"id":4732,"name":"VariableDeclaration","src":"2451:16:29"}],"id":4733,"name":"ParameterList","src":"2365:103:29"}],"id":4734,"name":"EventDefinition","src":"2349:120:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4740,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4735,"name":"ElementaryTypeName","src":"2493:7:29"}],"id":4736,"name":"VariableDeclaration","src":"2493:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4740,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4737,"name":"ElementaryTypeName","src":"2510:7:29"}],"id":4738,"name":"VariableDeclaration","src":"2510:14:29"}],"id":4739,"name":"ParameterList","src":"2492:33:29"}],"id":4740,"name":"EventDefinition","src":"2474:52:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4744,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4741,"name":"ElementaryTypeName","src":"2552:6:29"}],"id":4742,"name":"VariableDeclaration","src":"2552:16:29"}],"id":4743,"name":"ParameterList","src":"2551:18:29"}],"id":4744,"name":"EventDefinition","src":"2532:38:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4748,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4745,"name":"ElementaryTypeName","src":"2597:6:29"}],"id":4746,"name":"VariableDeclaration","src":"2597:16:29"}],"id":4747,"name":"ParameterList","src":"2596:18:29"}],"id":4748,"name":"EventDefinition","src":"2575:40:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4754,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4749,"name":"ElementaryTypeName","src":"2647:7:29"}],"id":4750,"name":"VariableDeclaration","src":"2647:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4754,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4751,"name":"ElementaryTypeName","src":"2663:6:29"}],"id":4752,"name":"VariableDeclaration","src":"2663:16:29"}],"id":4753,"name":"ParameterList","src":"2646:34:29"}],"id":4754,"name":"EventDefinition","src":"2620:61:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4760,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4755,"name":"ElementaryTypeName","src":"2715:7:29"}],"id":4756,"name":"VariableDeclaration","src":"2715:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4760,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4757,"name":"ElementaryTypeName","src":"2731:6:29"}],"id":4758,"name":"VariableDeclaration","src":"2731:16:29"}],"id":4759,"name":"ParameterList","src":"2714:34:29"}],"id":4760,"name":"EventDefinition","src":"2686:63:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4761,"name":"ElementaryTypeName","src":"2769:7:29"}],"id":4762,"name":"VariableDeclaration","src":"2769:11:29"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4763,"name":"ElementaryTypeName","src":"2782:7:29"}],"id":4764,"name":"VariableDeclaration","src":"2782:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4768,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4765,"name":"ElementaryTypeName","src":"2798:7:29"}],"id":4766,"name":"VariableDeclaration","src":"2798:15:29"}],"id":4767,"name":"ParameterList","src":"2768:46:29"}],"id":4768,"name":"EventDefinition","src":"2755:60:29"},{"attributes":{"constant":true,"name":"_APPROVE","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4769,"name":"ElementaryTypeName","src":"2924:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":4770,"name":"Literal","src":"2959:10:29"}],"id":4771,"name":"VariableDeclaration","src":"2924:45:29"},{"attributes":{"constant":true,"name":"_BURN","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4772,"name":"ElementaryTypeName","src":"3028:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":4773,"name":"Literal","src":"3060:10:29"}],"id":4774,"name":"VariableDeclaration","src":"3028:42:29"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4775,"name":"ElementaryTypeName","src":"3118:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":4776,"name":"Literal","src":"3154:10:29"}],"id":4777,"name":"VariableDeclaration","src":"3118:46:29"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4778,"name":"ElementaryTypeName","src":"3224:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":4779,"name":"Literal","src":"3265:10:29"}],"id":4780,"name":"VariableDeclaration","src":"3224:51:29"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":5582,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":4795,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4781,"name":"ElementaryTypeName","src":"3371:6:29"}],"id":4782,"name":"VariableDeclaration","src":"3371:13:29"},{"attributes":{"constant":false,"name":"magnitude","scope":4795,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4783,"name":"ElementaryTypeName","src":"3410:7:29"}],"id":4784,"name":"VariableDeclaration","src":"3410:17:29"},{"attributes":{"constant":false,"name":"rate","scope":4795,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4785,"name":"ElementaryTypeName","src":"3452:7:29"}],"id":4786,"name":"VariableDeclaration","src":"3452:12:29"},{"attributes":{"constant":false,"name":"available","scope":4795,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4787,"name":"ElementaryTypeName","src":"3504:4:29"}],"id":4788,"name":"VariableDeclaration","src":"3504:14:29"},{"attributes":{"constant":false,"name":"loadable","scope":4795,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4789,"name":"ElementaryTypeName","src":"3570:4:29"}],"id":4790,"name":"VariableDeclaration","src":"3570:13:29"},{"attributes":{"constant":false,"name":"redeemable","scope":4795,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4791,"name":"ElementaryTypeName","src":"3640:4:29"}],"id":4792,"name":"VariableDeclaration","src":"3640:15:29"},{"attributes":{"constant":false,"name":"lastUpdate","scope":4795,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4793,"name":"ElementaryTypeName","src":"3724:7:29"}],"id":4794,"name":"VariableDeclaration","src":"3724:18:29"}],"id":4795,"name":"StructDefinition","src":"3348:433:29"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":5582,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4796,"name":"ElementaryTypeName","src":"3795:7:29"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4795,"type":"struct TokenWhitelist.Token"},"id":4797,"name":"UserDefinedTypeName","src":"3806:5:29"}],"id":4798,"name":"Mapping","src":"3787:25:29"}],"id":4799,"name":"VariableDeclaration","src":"3787:47:29"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":5582,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4800,"name":"ElementaryTypeName","src":"4004:6:29"},{"attributes":{"name":"bool","type":"bool"},"id":4801,"name":"ElementaryTypeName","src":"4014:4:29"}],"id":4802,"name":"Mapping","src":"3996:23:29"}],"id":4803,"name":"VariableDeclaration","src":"3996:50:29"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":5582,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4804,"name":"ElementaryTypeName","src":"4053:7:29"}],"id":4805,"name":"ArrayTypeName","src":"4053:9:29"}],"id":4806,"name":"VariableDeclaration","src":"4053:36:29"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":5582,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4807,"name":"ElementaryTypeName","src":"4182:7:29"}],"id":4808,"name":"VariableDeclaration","src":"4182:34:29"},{"attributes":{"constant":false,"name":"_stablecoin","scope":5582,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4809,"name":"ElementaryTypeName","src":"4266:7:29"}],"id":4810,"name":"VariableDeclaration","src":"4266:27:29"},{"attributes":{"constant":false,"name":"_oracleNode","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4811,"name":"ElementaryTypeName","src":"4372:7:29"}],"id":4812,"name":"VariableDeclaration","src":"4372:27:29"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":4862,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4813,"name":"ElementaryTypeName","src":"4770:7:29"}],"id":4814,"name":"VariableDeclaration","src":"4770:13:29"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":4862,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4815,"name":"ElementaryTypeName","src":"4785:7:29"}],"id":4816,"name":"VariableDeclaration","src":"4785:20:29"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":4862,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4817,"name":"ElementaryTypeName","src":"4807:7:29"}],"id":4818,"name":"VariableDeclaration","src":"4807:24:29"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":4862,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4819,"name":"ElementaryTypeName","src":"4833:7:29"}],"id":4820,"name":"VariableDeclaration","src":"4833:27:29"}],"id":4821,"name":"ParameterList","src":"4769:92:29"},{"attributes":{"parameters":[null]},"children":[],"id":4828,"name":"ParameterList","src":"4949:0:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2871,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":4822,"name":"Identifier","src":"4885:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4814,"type":"address","value":"_ens_"},"id":4823,"name":"Identifier","src":"4899:5:29"}],"id":4824,"name":"ModifierInvocation","src":"4885:20:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2826,"type":"type(contract Controllable)","value":"Controllable"},"id":4825,"name":"Identifier","src":"4914:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4818,"type":"bytes32","value":"_controllerNode_"},"id":4826,"name":"Identifier","src":"4927:16:29"}],"id":4827,"name":"ModifierInvocation","src":"4914:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"bytes32","value":"_oracleNode"},"id":4829,"name":"Identifier","src":"4959:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"bytes32","value":"_oracleNode_"},"id":4830,"name":"Identifier","src":"4973:12:29"}],"id":4831,"name":"Assignment","src":"4959:26:29"}],"id":4832,"name":"ExpressionStatement","src":"4959:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4810,"type":"address","value":"_stablecoin"},"id":4833,"name":"Identifier","src":"4995:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4820,"type":"address","value":"_stablecoinAddress_"},"id":4834,"name":"Identifier","src":"5009:19:29"}],"id":4835,"name":"Assignment","src":"4995:33:29"}],"id":4836,"name":"ExpressionStatement","src":"4995:33:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4837,"name":"Identifier","src":"5083:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"bytes4","value":"_APPROVE"},"id":4838,"name":"Identifier","src":"5102:8:29"}],"id":4839,"name":"IndexAccess","src":"5083:28:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4840,"name":"Literal","src":"5114:4:29"}],"id":4841,"name":"Assignment","src":"5083:35:29"}],"id":4842,"name":"ExpressionStatement","src":"5083:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4843,"name":"Identifier","src":"5128:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"bytes4","value":"_BURN"},"id":4844,"name":"Identifier","src":"5147:5:29"}],"id":4845,"name":"IndexAccess","src":"5128:25:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4846,"name":"Literal","src":"5156:4:29"}],"id":4847,"name":"Assignment","src":"5128:32:29"}],"id":4848,"name":"ExpressionStatement","src":"5128:32:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4849,"name":"Identifier","src":"5170:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4777,"type":"bytes4","value":"_TRANSFER"},"id":4850,"name":"Identifier","src":"5189:9:29"}],"id":4851,"name":"IndexAccess","src":"5170:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4852,"name":"Literal","src":"5202:4:29"}],"id":4853,"name":"Assignment","src":"5170:36:29"}],"id":4854,"name":"ExpressionStatement","src":"5170:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4855,"name":"Identifier","src":"5216:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"bytes4","value":"_TRANSFER_FROM"},"id":4856,"name":"Identifier","src":"5235:14:29"}],"id":4857,"name":"IndexAccess","src":"5216:34:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4858,"name":"Literal","src":"5253:4:29"}],"id":4859,"name":"Assignment","src":"5216:41:29"}],"id":4860,"name":"ExpressionStatement","src":"5216:41:29"}],"id":4861,"name":"Block","src":"4949:315:29"}],"id":4862,"name":"FunctionDefinition","src":"4758:506:29"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4863,"name":"ParameterList","src":"5296:2:29"},{"children":[{"attributes":{"assignments":[4865]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":4884,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4864,"name":"ElementaryTypeName","src":"5309:7:29"}],"id":4865,"name":"VariableDeclaration","src":"5309:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4866,"name":"Identifier","src":"5333:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"bytes32","value":"_oracleNode"},"id":4867,"name":"Identifier","src":"5345:11:29"}],"id":4868,"name":"FunctionCall","src":"5333:24:29"}],"id":4869,"name":"VariableDeclarationStatement","src":"5309:48:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4870,"name":"Identifier","src":"5367:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":4871,"name":"Identifier","src":"5375:8:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4872,"name":"Identifier","src":"5384:3:29"}],"id":4873,"name":"MemberAccess","src":"5384:10:29"}],"id":4874,"name":"FunctionCall","src":"5375:20:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4875,"name":"Identifier","src":"5399:3:29"}],"id":4876,"name":"MemberAccess","src":"5399:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4865,"type":"address","value":"oracleAddress"},"id":4877,"name":"Identifier","src":"5413:13:29"}],"id":4878,"name":"BinaryOperation","src":"5399:27:29"}],"id":4879,"name":"BinaryOperation","src":"5375:51:29"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":4880,"name":"Literal","src":"5428:24:29"}],"id":4881,"name":"FunctionCall","src":"5367:86:29"}],"id":4882,"name":"ExpressionStatement","src":"5367:86:29"},{"id":4883,"name":"PlaceholderStatement","src":"5463:1:29"}],"id":4884,"name":"Block","src":"5299:172:29"}],"id":4885,"name":"ModifierDefinition","src":"5270:201:29"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4886,"name":"ElementaryTypeName","src":"6068:7:29"}],"id":4887,"name":"ArrayTypeName","src":"6068:9:29"}],"id":4888,"name":"VariableDeclaration","src":"6068:26:29"},{"attributes":{"constant":false,"name":"_symbols","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4889,"name":"ElementaryTypeName","src":"6104:7:29"}],"id":4890,"name":"ArrayTypeName","src":"6104:9:29"}],"id":4891,"name":"VariableDeclaration","src":"6104:27:29"},{"attributes":{"constant":false,"name":"_magnitude","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4892,"name":"ElementaryTypeName","src":"6141:7:29"}],"id":4893,"name":"ArrayTypeName","src":"6141:9:29"}],"id":4894,"name":"VariableDeclaration","src":"6141:29:29"},{"attributes":{"constant":false,"name":"_loadable","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4895,"name":"ElementaryTypeName","src":"6180:4:29"}],"id":4896,"name":"ArrayTypeName","src":"6180:6:29"}],"id":4897,"name":"VariableDeclaration","src":"6180:25:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4898,"name":"ElementaryTypeName","src":"6215:4:29"}],"id":4899,"name":"ArrayTypeName","src":"6215:6:29"}],"id":4900,"name":"VariableDeclaration","src":"6215:27:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":5029,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4901,"name":"ElementaryTypeName","src":"6252:7:29"}],"id":4902,"name":"VariableDeclaration","src":"6252:19:29"}],"id":4903,"name":"ParameterList","src":"6058:219:29"},{"attributes":{"parameters":[null]},"children":[],"id":4906,"name":"ParameterList","src":"6297:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":4904,"name":"Identifier","src":"6287:9:29"}],"id":4905,"name":"ModifierInvocation","src":"6287:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4907,"name":"Identifier","src":"6368:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4908,"name":"Identifier","src":"6389:7:29"}],"id":4909,"name":"MemberAccess","src":"6389:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4891,"type":"bytes32[] calldata","value":"_symbols"},"id":4910,"name":"Identifier","src":"6407:8:29"}],"id":4911,"name":"MemberAccess","src":"6407:15:29"}],"id":4912,"name":"BinaryOperation","src":"6389:33:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4913,"name":"Identifier","src":"6442:7:29"}],"id":4914,"name":"MemberAccess","src":"6442:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4894,"type":"uint256[] calldata","value":"_magnitude"},"id":4915,"name":"Identifier","src":"6460:10:29"}],"id":4916,"name":"MemberAccess","src":"6460:17:29"}],"id":4917,"name":"BinaryOperation","src":"6442:35:29"}],"id":4918,"name":"BinaryOperation","src":"6389:88:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4919,"name":"Identifier","src":"6497:7:29"}],"id":4920,"name":"MemberAccess","src":"6497:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4897,"type":"bool[] calldata","value":"_loadable"},"id":4921,"name":"Identifier","src":"6515:9:29"}],"id":4922,"name":"MemberAccess","src":"6515:16:29"}],"id":4923,"name":"BinaryOperation","src":"6497:34:29"}],"id":4924,"name":"BinaryOperation","src":"6389:142:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4925,"name":"Identifier","src":"6551:7:29"}],"id":4926,"name":"MemberAccess","src":"6551:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4897,"type":"bool[] calldata","value":"_loadable"},"id":4927,"name":"Identifier","src":"6569:9:29"}],"id":4928,"name":"MemberAccess","src":"6569:16:29"}],"id":4929,"name":"BinaryOperation","src":"6551:34:29"}],"id":4930,"name":"BinaryOperation","src":"6389:196:29"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":4931,"name":"Literal","src":"6599:32:29"}],"id":4932,"name":"FunctionCall","src":"6368:273:29"}],"id":4933,"name":"ExpressionStatement","src":"6368:273:29"},{"children":[{"attributes":{"assignments":[4935]},"children":[{"attributes":{"constant":false,"name":"i","scope":5027,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4934,"name":"ElementaryTypeName","src":"6715:7:29"}],"id":4935,"name":"VariableDeclaration","src":"6715:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4936,"name":"Literal","src":"6727:1:29"}],"id":4937,"name":"VariableDeclarationStatement","src":"6715:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4938,"name":"Identifier","src":"6730:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4939,"name":"Identifier","src":"6734:7:29"}],"id":4940,"name":"MemberAccess","src":"6734:14:29"}],"id":4941,"name":"BinaryOperation","src":"6730:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4942,"name":"Identifier","src":"6750:1:29"}],"id":4943,"name":"UnaryOperation","src":"6750:3:29"}],"id":4944,"name":"ExpressionStatement","src":"6750:3:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4945,"name":"Identifier","src":"6832:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":4946,"name":"Identifier","src":"6841:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4947,"name":"Identifier","src":"6855:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4948,"name":"Identifier","src":"6863:1:29"}],"id":4949,"name":"IndexAccess","src":"6855:10:29"}],"id":4950,"name":"IndexAccess","src":"6841:25:29"}],"id":4951,"name":"MemberAccess","src":"6841:35:29"}],"id":4952,"name":"UnaryOperation","src":"6840:36:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":4953,"name":"Literal","src":"6878:25:29"}],"id":4954,"name":"FunctionCall","src":"6832:72:29"}],"id":4955,"name":"ExpressionStatement","src":"6832:72:29"},{"attributes":{"assignments":[4957]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":5026,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4956,"name":"ElementaryTypeName","src":"6964:6:29"}],"id":4957,"name":"VariableDeclaration","src":"6964:20:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":7124,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":7079,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4891,"type":"bytes32[] calldata","value":"_symbols"},"id":4958,"name":"Identifier","src":"6987:8:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4959,"name":"Identifier","src":"6996:1:29"}],"id":4960,"name":"IndexAccess","src":"6987:11:29"}],"id":4961,"name":"MemberAccess","src":"6987:22:29"}],"id":4962,"name":"FunctionCall","src":"6987:24:29"}],"id":4963,"name":"MemberAccess","src":"6987:33:29"}],"id":4964,"name":"FunctionCall","src":"6987:35:29"}],"id":4965,"name":"VariableDeclarationStatement","src":"6964:58:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":4966,"name":"Identifier","src":"7084:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4967,"name":"Identifier","src":"7098:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4968,"name":"Identifier","src":"7106:1:29"}],"id":4969,"name":"IndexAccess","src":"7098:10:29"}],"id":4970,"name":"IndexAccess","src":"7084:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4795,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":4971,"name":"Identifier","src":"7112:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4957,"type":"string memory","value":"symbol"},"id":4972,"name":"Identifier","src":"7144:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4894,"type":"uint256[] calldata","value":"_magnitude"},"id":4973,"name":"Identifier","src":"7179:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4974,"name":"Identifier","src":"7190:1:29"}],"id":4975,"name":"IndexAccess","src":"7179:13:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4976,"name":"Literal","src":"7216:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4977,"name":"Literal","src":"7246:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4897,"type":"bool[] calldata","value":"_loadable"},"id":4978,"name":"Identifier","src":"7278:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4979,"name":"Identifier","src":"7288:1:29"}],"id":4980,"name":"IndexAccess","src":"7278:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4900,"type":"bool[] calldata","value":"_redeemable"},"id":4981,"name":"Identifier","src":"7320:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4982,"name":"Identifier","src":"7332:1:29"}],"id":4983,"name":"IndexAccess","src":"7320:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4902,"type":"uint256","value":"_lastUpdate"},"id":4984,"name":"Identifier","src":"7364:11:29"}],"id":4985,"name":"FunctionCall","src":"7112:278:29"}],"id":4986,"name":"Assignment","src":"7084:306:29"}],"id":4987,"name":"ExpressionStatement","src":"7084:306:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":4988,"name":"Identifier","src":"7462:18:29"}],"id":4990,"name":"MemberAccess","src":"7462:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4991,"name":"Identifier","src":"7486:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4992,"name":"Identifier","src":"7494:1:29"}],"id":4993,"name":"IndexAccess","src":"7486:10:29"}],"id":4994,"name":"FunctionCall","src":"7462:35:29"}],"id":4995,"name":"ExpressionStatement","src":"7462:35:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4900,"type":"bool[] calldata","value":"_redeemable"},"id":4996,"name":"Identifier","src":"7587:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4997,"name":"Identifier","src":"7599:1:29"}],"id":4998,"name":"IndexAccess","src":"7587:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":4999,"name":"Identifier","src":"7621:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5000,"name":"Identifier","src":"7642:18:29"}],"id":5001,"name":"MemberAccess","src":"7642:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5002,"name":"Literal","src":"7665:1:29"}],"id":5003,"name":"FunctionCall","src":"7642:25:29"}],"id":5004,"name":"Assignment","src":"7621:46:29"}],"id":5005,"name":"ExpressionStatement","src":"7621:46:29"}],"id":5006,"name":"Block","src":"7603:79:29"}],"id":5007,"name":"IfStatement","src":"7583:99:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4734,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":5008,"name":"Identifier","src":"7742:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5009,"name":"Identifier","src":"7753:3:29"}],"id":5010,"name":"MemberAccess","src":"7753:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":5011,"name":"Identifier","src":"7765:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":5012,"name":"Identifier","src":"7773:1:29"}],"id":5013,"name":"IndexAccess","src":"7765:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4957,"type":"string memory","value":"symbol"},"id":5014,"name":"Identifier","src":"7777:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4894,"type":"uint256[] calldata","value":"_magnitude"},"id":5015,"name":"Identifier","src":"7785:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":5016,"name":"Identifier","src":"7796:1:29"}],"id":5017,"name":"IndexAccess","src":"7785:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4897,"type":"bool[] calldata","value":"_loadable"},"id":5018,"name":"Identifier","src":"7800:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":5019,"name":"Identifier","src":"7810:1:29"}],"id":5020,"name":"IndexAccess","src":"7800:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4900,"type":"bool[] calldata","value":"_redeemable"},"id":5021,"name":"Identifier","src":"7814:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":5022,"name":"Identifier","src":"7826:1:29"}],"id":5023,"name":"IndexAccess","src":"7814:14:29"}],"id":5024,"name":"FunctionCall","src":"7742:87:29"}],"id":5025,"name":"EmitStatement","src":"7737:92:29"}],"id":5026,"name":"Block","src":"6755:1085:29"}],"id":5027,"name":"ForStatement","src":"6710:1130:29"}],"id":5028,"name":"Block","src":"6297:1549:29"}],"id":5029,"name":"FunctionDefinition","src":"6040:1806:29"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5130,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5030,"name":"ElementaryTypeName","src":"7995:7:29"}],"id":5031,"name":"ArrayTypeName","src":"7995:9:29"}],"id":5032,"name":"VariableDeclaration","src":"7995:26:29"}],"id":5033,"name":"ParameterList","src":"7994:28:29"},{"attributes":{"parameters":[null]},"children":[],"id":5036,"name":"ParameterList","src":"8042:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":5034,"name":"Identifier","src":"8032:9:29"}],"id":5035,"name":"ModifierInvocation","src":"8032:9:29"},{"children":[{"children":[{"attributes":{"assignments":[5038]},"children":[{"attributes":{"constant":false,"name":"i","scope":5128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5037,"name":"ElementaryTypeName","src":"8160:7:29"}],"id":5038,"name":"VariableDeclaration","src":"8160:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5039,"name":"Literal","src":"8172:1:29"}],"id":5040,"name":"VariableDeclarationStatement","src":"8160:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5038,"type":"uint256","value":"i"},"id":5041,"name":"Identifier","src":"8175:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5032,"type":"address[] calldata","value":"_tokens"},"id":5042,"name":"Identifier","src":"8179:7:29"}],"id":5043,"name":"MemberAccess","src":"8179:14:29"}],"id":5044,"name":"BinaryOperation","src":"8175:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5038,"type":"uint256","value":"i"},"id":5045,"name":"Identifier","src":"8195:1:29"}],"id":5046,"name":"UnaryOperation","src":"8195:3:29"}],"id":5047,"name":"ExpressionStatement","src":"8195:3:29"},{"children":[{"attributes":{"assignments":[5049]},"children":[{"attributes":{"constant":false,"name":"token","scope":5127,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5048,"name":"ElementaryTypeName","src":"8254:7:29"}],"id":5049,"name":"VariableDeclaration","src":"8254:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5032,"type":"address[] calldata","value":"_tokens"},"id":5050,"name":"Identifier","src":"8270:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5038,"type":"uint256","value":"i"},"id":5051,"name":"Identifier","src":"8278:1:29"}],"id":5052,"name":"IndexAccess","src":"8270:10:29"}],"id":5053,"name":"VariableDeclarationStatement","src":"8254:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5054,"name":"Identifier","src":"8363:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5055,"name":"Identifier","src":"8371:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5056,"name":"Identifier","src":"8385:5:29"}],"id":5057,"name":"IndexAccess","src":"8371:20:29"}],"id":5058,"name":"MemberAccess","src":"8371:30:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5059,"name":"Literal","src":"8403:24:29"}],"id":5060,"name":"FunctionCall","src":"8363:65:29"}],"id":5061,"name":"ExpressionStatement","src":"8363:65:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5062,"name":"Identifier","src":"8518:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5063,"name":"Identifier","src":"8532:5:29"}],"id":5064,"name":"IndexAccess","src":"8518:20:29"}],"id":5065,"name":"MemberAccess","src":"8518:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5066,"name":"Identifier","src":"8569:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5067,"name":"Identifier","src":"8590:18:29"}],"id":5068,"name":"MemberAccess","src":"8590:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5069,"name":"Literal","src":"8613:1:29"}],"id":5070,"name":"FunctionCall","src":"8590:25:29"}],"id":5071,"name":"Assignment","src":"8569:46:29"}],"id":5072,"name":"ExpressionStatement","src":"8569:46:29"}],"id":5073,"name":"Block","src":"8551:79:29"}],"id":5074,"name":"IfStatement","src":"8514:116:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5075,"name":"Identifier","src":"8690:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5076,"name":"Identifier","src":"8704:5:29"}],"id":5077,"name":"IndexAccess","src":"8690:20:29"}],"id":5078,"name":"UnaryOperation","src":"8683:27:29"}],"id":5079,"name":"ExpressionStatement","src":"8683:27:29"},{"children":[{"attributes":{"assignments":[5081]},"children":[{"attributes":{"constant":false,"name":"j","scope":5115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5080,"name":"ElementaryTypeName","src":"8792:7:29"}],"id":5081,"name":"VariableDeclaration","src":"8792:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5082,"name":"Literal","src":"8804:1:29"}],"id":5083,"name":"VariableDeclarationStatement","src":"8792:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5081,"type":"uint256","value":"j"},"id":5084,"name":"Identifier","src":"8807:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5085,"name":"Identifier","src":"8811:18:29"}],"id":5086,"name":"MemberAccess","src":"8811:25:29"}],"id":5087,"name":"MemberAccess","src":"8811:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5088,"name":"Literal","src":"8841:1:29"}],"id":5089,"name":"FunctionCall","src":"8811:32:29"}],"id":5090,"name":"BinaryOperation","src":"8807:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5081,"type":"uint256","value":"j"},"id":5091,"name":"Identifier","src":"8845:1:29"}],"id":5092,"name":"UnaryOperation","src":"8845:3:29"}],"id":5093,"name":"ExpressionStatement","src":"8845:3:29"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5094,"name":"Identifier","src":"8872:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5081,"type":"uint256","value":"j"},"id":5095,"name":"Identifier","src":"8891:1:29"}],"id":5096,"name":"IndexAccess","src":"8872:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5097,"name":"Identifier","src":"8897:5:29"}],"id":5098,"name":"BinaryOperation","src":"8872:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5099,"name":"Identifier","src":"8926:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5081,"type":"uint256","value":"j"},"id":5100,"name":"Identifier","src":"8945:1:29"}],"id":5101,"name":"IndexAccess","src":"8926:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5102,"name":"Identifier","src":"8950:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5103,"name":"Identifier","src":"8969:18:29"}],"id":5104,"name":"MemberAccess","src":"8969:25:29"}],"id":5105,"name":"MemberAccess","src":"8969:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5106,"name":"Literal","src":"8999:1:29"}],"id":5107,"name":"FunctionCall","src":"8969:32:29"}],"id":5108,"name":"IndexAccess","src":"8950:52:29"}],"id":5109,"name":"Assignment","src":"8926:76:29"}],"id":5110,"name":"ExpressionStatement","src":"8926:76:29"},{"id":5111,"name":"Break","src":"9024:5:29"}],"id":5112,"name":"Block","src":"8904:144:29"}],"id":5113,"name":"IfStatement","src":"8868:180:29"}],"id":5114,"name":"Block","src":"8850:212:29"}],"id":5115,"name":"ForStatement","src":"8787:275:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5116,"name":"Identifier","src":"9075:18:29"}],"id":5118,"name":"MemberAccess","src":"9075:25:29"}],"id":5119,"name":"UnaryOperation","src":"9075:27:29"}],"id":5120,"name":"ExpressionStatement","src":"9075:27:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4740,"type":"function (address,address)","value":"RemovedToken"},"id":5121,"name":"Identifier","src":"9162:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5122,"name":"Identifier","src":"9175:3:29"}],"id":5123,"name":"MemberAccess","src":"9175:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5124,"name":"Identifier","src":"9187:5:29"}],"id":5125,"name":"FunctionCall","src":"9162:31:29"}],"id":5126,"name":"EmitStatement","src":"9157:36:29"}],"id":5127,"name":"Block","src":"8200:1004:29"}],"id":5128,"name":"ForStatement","src":"8155:1049:29"}],"id":5129,"name":"Block","src":"8042:1168:29"}],"id":5130,"name":"FunctionDefinition","src":"7973:1237:29"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5243,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5131,"name":"ElementaryTypeName","src":"9404:7:29"}],"id":5132,"name":"VariableDeclaration","src":"9404:14:29"},{"attributes":{"constant":false,"name":"_data","scope":5243,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5133,"name":"ElementaryTypeName","src":"9420:5:29"}],"id":5134,"name":"VariableDeclaration","src":"9420:20:29"}],"id":5135,"name":"ParameterList","src":"9403:38:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5243,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5136,"name":"ElementaryTypeName","src":"9465:7:29"}],"id":5137,"name":"VariableDeclaration","src":"9465:7:29"},{"attributes":{"constant":false,"name":"","scope":5243,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5138,"name":"ElementaryTypeName","src":"9474:7:29"}],"id":5139,"name":"VariableDeclaration","src":"9474:7:29"}],"id":5140,"name":"ParameterList","src":"9464:18:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5141,"name":"Identifier","src":"9669:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5142,"name":"Identifier","src":"9677:5:29"}],"id":5143,"name":"MemberAccess","src":"9677:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5144,"name":"Literal","src":"9693:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5145,"name":"Literal","src":"9697:2:29"}],"id":5146,"name":"BinaryOperation","src":"9693:6:29"}],"id":5147,"name":"BinaryOperation","src":"9677:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":5148,"name":"Literal","src":"9701:34:29"}],"id":5149,"name":"FunctionCall","src":"9669:67:29"}],"id":5150,"name":"ExpressionStatement","src":"9669:67:29"},{"attributes":{"assignments":[5152]},"children":[{"attributes":{"constant":false,"name":"signature","scope":5242,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5151,"name":"ElementaryTypeName","src":"9782:6:29"}],"id":5152,"name":"VariableDeclaration","src":"9782:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":8651,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5153,"name":"Identifier","src":"9801:5:29"}],"id":5154,"name":"MemberAccess","src":"9801:20:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5155,"name":"Literal","src":"9822:1:29"}],"id":5156,"name":"FunctionCall","src":"9801:23:29"}],"id":5157,"name":"VariableDeclarationStatement","src":"9782:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5158,"name":"Identifier","src":"9877:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":5544,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":5159,"name":"Identifier","src":"9885:22:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5132,"type":"address","value":"_token"},"id":5160,"name":"Identifier","src":"9908:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5152,"type":"bytes4","value":"signature"},"id":5161,"name":"Identifier","src":"9916:9:29"}],"id":5162,"name":"FunctionCall","src":"9885:41:29"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":5163,"name":"Literal","src":"9928:20:29"}],"id":5164,"name":"FunctionCall","src":"9877:72:29"}],"id":5165,"name":"ExpressionStatement","src":"9877:72:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5152,"type":"bytes4","value":"signature"},"id":5166,"name":"Identifier","src":"10048:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"bytes4","value":"_BURN"},"id":5167,"name":"Identifier","src":"10061:5:29"}],"id":5168,"name":"BinaryOperation","src":"10048:18:29"},{"children":[{"attributes":{"functionReturnParameters":5140},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5132,"type":"address","value":"_token"},"id":5169,"name":"Identifier","src":"10133:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8685,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5170,"name":"Identifier","src":"10141:5:29"}],"id":5171,"name":"MemberAccess","src":"10141:21:29"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5172,"name":"Literal","src":"10163:1:29"}],"id":5173,"name":"FunctionCall","src":"10141:24:29"}],"id":5174,"name":"TupleExpression","src":"10132:34:29"}],"id":5175,"name":"Return","src":"10125:41:29"}],"id":5176,"name":"Block","src":"10068:109:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5152,"type":"bytes4","value":"signature"},"id":5177,"name":"Identifier","src":"10187:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"bytes4","value":"_TRANSFER_FROM"},"id":5178,"name":"Identifier","src":"10200:14:29"}],"id":5179,"name":"BinaryOperation","src":"10187:27:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5180,"name":"Identifier","src":"10301:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5181,"name":"Identifier","src":"10309:5:29"}],"id":5182,"name":"MemberAccess","src":"10309:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5183,"name":"Literal","src":"10325:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5184,"name":"Literal","src":"10329:2:29"}],"id":5185,"name":"BinaryOperation","src":"10325:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5186,"name":"Literal","src":"10334:2:29"}],"id":5187,"name":"BinaryOperation","src":"10325:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5188,"name":"Literal","src":"10339:2:29"}],"id":5189,"name":"BinaryOperation","src":"10325:16:29"}],"id":5190,"name":"BinaryOperation","src":"10309:32:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":5191,"name":"Literal","src":"10343:34:29"}],"id":5192,"name":"FunctionCall","src":"10301:77:29"}],"id":5193,"name":"ExpressionStatement","src":"10301:77:29"},{"attributes":{"functionReturnParameters":5140},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":8617,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5194,"name":"Identifier","src":"10400:5:29"}],"id":5195,"name":"MemberAccess","src":"10400:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5196,"name":"Literal","src":"10422:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5197,"name":"Literal","src":"10426:2:29"}],"id":5198,"name":"BinaryOperation","src":"10422:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5199,"name":"Literal","src":"10431:2:29"}],"id":5200,"name":"BinaryOperation","src":"10422:11:29"}],"id":5201,"name":"FunctionCall","src":"10400:34:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8685,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5202,"name":"Identifier","src":"10436:5:29"}],"id":5203,"name":"MemberAccess","src":"10436:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5204,"name":"Literal","src":"10458:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5205,"name":"Literal","src":"10462:2:29"}],"id":5206,"name":"BinaryOperation","src":"10458:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5207,"name":"Literal","src":"10467:2:29"}],"id":5208,"name":"BinaryOperation","src":"10458:11:29"}],"id":5209,"name":"FunctionCall","src":"10436:34:29"}],"id":5210,"name":"TupleExpression","src":"10399:72:29"}],"id":5211,"name":"Return","src":"10392:79:29"}],"id":5212,"name":"Block","src":"10216:266:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5213,"name":"Identifier","src":"10590:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5214,"name":"Identifier","src":"10598:5:29"}],"id":5215,"name":"MemberAccess","src":"10598:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5216,"name":"Literal","src":"10614:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5217,"name":"Literal","src":"10618:2:29"}],"id":5218,"name":"BinaryOperation","src":"10614:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5219,"name":"Literal","src":"10623:2:29"}],"id":5220,"name":"BinaryOperation","src":"10614:11:29"}],"id":5221,"name":"BinaryOperation","src":"10598:27:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":5222,"name":"Literal","src":"10627:39:29"}],"id":5223,"name":"FunctionCall","src":"10590:77:29"}],"id":5224,"name":"ExpressionStatement","src":"10590:77:29"},{"attributes":{"functionReturnParameters":5140},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":8617,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5225,"name":"Identifier","src":"10689:5:29"}],"id":5226,"name":"MemberAccess","src":"10689:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5227,"name":"Literal","src":"10711:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5228,"name":"Literal","src":"10715:2:29"}],"id":5229,"name":"BinaryOperation","src":"10711:6:29"}],"id":5230,"name":"FunctionCall","src":"10689:29:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8685,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5231,"name":"Identifier","src":"10720:5:29"}],"id":5232,"name":"MemberAccess","src":"10720:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5233,"name":"Literal","src":"10742:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5234,"name":"Literal","src":"10746:2:29"}],"id":5235,"name":"BinaryOperation","src":"10742:6:29"}],"id":5236,"name":"FunctionCall","src":"10720:29:29"}],"id":5237,"name":"TupleExpression","src":"10688:62:29"}],"id":5238,"name":"Return","src":"10681:69:29"}],"id":5239,"name":"Block","src":"10488:273:29"}],"id":5240,"name":"IfStatement","src":"10183:578:29"}],"id":5241,"name":"IfStatement","src":"10044:717:29"}],"id":5242,"name":"Block","src":"9483:1284:29"}],"id":5243,"name":"FunctionDefinition","src":"9368:1399:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5275,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5244,"name":"ElementaryTypeName","src":"10866:7:29"}],"id":5245,"name":"VariableDeclaration","src":"10866:14:29"},{"attributes":{"constant":false,"name":"_loadable","scope":5275,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5246,"name":"ElementaryTypeName","src":"10882:4:29"}],"id":5247,"name":"VariableDeclaration","src":"10882:14:29"}],"id":5248,"name":"ParameterList","src":"10865:32:29"},{"attributes":{"parameters":[null]},"children":[],"id":5251,"name":"ParameterList","src":"10917:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":5249,"name":"Identifier","src":"10907:9:29"}],"id":5250,"name":"ModifierInvocation","src":"10907:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5252,"name":"Identifier","src":"10969:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5253,"name":"Identifier","src":"10977:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"address","value":"_token"},"id":5254,"name":"Identifier","src":"10991:6:29"}],"id":5255,"name":"IndexAccess","src":"10977:21:29"}],"id":5256,"name":"MemberAccess","src":"10977:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5257,"name":"Literal","src":"11010:24:29"}],"id":5258,"name":"FunctionCall","src":"10969:66:29"}],"id":5259,"name":"ExpressionStatement","src":"10969:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":4790,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5260,"name":"Identifier","src":"11108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"address","value":"_token"},"id":5261,"name":"Identifier","src":"11122:6:29"}],"id":5262,"name":"IndexAccess","src":"11108:21:29"}],"id":5263,"name":"MemberAccess","src":"11108:30:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5247,"type":"bool","value":"_loadable"},"id":5264,"name":"Identifier","src":"11141:9:29"}],"id":5265,"name":"Assignment","src":"11108:42:29"}],"id":5266,"name":"ExpressionStatement","src":"11108:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4712,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":5267,"name":"Identifier","src":"11166:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5268,"name":"Identifier","src":"11187:3:29"}],"id":5269,"name":"MemberAccess","src":"11187:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"address","value":"_token"},"id":5270,"name":"Identifier","src":"11199:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5247,"type":"bool","value":"_loadable"},"id":5271,"name":"Identifier","src":"11207:9:29"}],"id":5272,"name":"FunctionCall","src":"11166:51:29"}],"id":5273,"name":"EmitStatement","src":"11161:56:29"}],"id":5274,"name":"Block","src":"10917:307:29"}],"id":5275,"name":"FunctionDefinition","src":"10840:384:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5307,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5276,"name":"ElementaryTypeName","src":"11327:7:29"}],"id":5277,"name":"VariableDeclaration","src":"11327:14:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":5307,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5278,"name":"ElementaryTypeName","src":"11343:4:29"}],"id":5279,"name":"VariableDeclaration","src":"11343:16:29"}],"id":5280,"name":"ParameterList","src":"11326:34:29"},{"attributes":{"parameters":[null]},"children":[],"id":5283,"name":"ParameterList","src":"11380:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":5281,"name":"Identifier","src":"11370:9:29"}],"id":5282,"name":"ModifierInvocation","src":"11370:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5284,"name":"Identifier","src":"11432:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5285,"name":"Identifier","src":"11440:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5277,"type":"address","value":"_token"},"id":5286,"name":"Identifier","src":"11454:6:29"}],"id":5287,"name":"IndexAccess","src":"11440:21:29"}],"id":5288,"name":"MemberAccess","src":"11440:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5289,"name":"Literal","src":"11473:24:29"}],"id":5290,"name":"FunctionCall","src":"11432:66:29"}],"id":5291,"name":"ExpressionStatement","src":"11432:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5292,"name":"Identifier","src":"11573:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5277,"type":"address","value":"_token"},"id":5293,"name":"Identifier","src":"11587:6:29"}],"id":5294,"name":"IndexAccess","src":"11573:21:29"}],"id":5295,"name":"MemberAccess","src":"11573:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5279,"type":"bool","value":"_redeemable"},"id":5296,"name":"Identifier","src":"11608:11:29"}],"id":5297,"name":"Assignment","src":"11573:46:29"}],"id":5298,"name":"ExpressionStatement","src":"11573:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4720,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":5299,"name":"Identifier","src":"11635:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5300,"name":"Identifier","src":"11658:3:29"}],"id":5301,"name":"MemberAccess","src":"11658:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5277,"type":"address","value":"_token"},"id":5302,"name":"Identifier","src":"11670:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5279,"type":"bool","value":"_redeemable"},"id":5303,"name":"Identifier","src":"11678:11:29"}],"id":5304,"name":"FunctionCall","src":"11635:55:29"}],"id":5305,"name":"EmitStatement","src":"11630:60:29"}],"id":5306,"name":"Block","src":"11380:317:29"}],"id":5307,"name":"FunctionDefinition","src":"11299:398:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5348,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5308,"name":"ElementaryTypeName","src":"11999:7:29"}],"id":5309,"name":"VariableDeclaration","src":"11999:14:29"},{"attributes":{"constant":false,"name":"_rate","scope":5348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5310,"name":"ElementaryTypeName","src":"12015:7:29"}],"id":5311,"name":"VariableDeclaration","src":"12015:13:29"},{"attributes":{"constant":false,"name":"_updateDate","scope":5348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5312,"name":"ElementaryTypeName","src":"12030:7:29"}],"id":5313,"name":"VariableDeclaration","src":"12030:19:29"}],"id":5314,"name":"ParameterList","src":"11998:52:29"},{"attributes":{"parameters":[null]},"children":[],"id":5317,"name":"ParameterList","src":"12078:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4885,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":5315,"name":"Identifier","src":"12060:17:29"}],"id":5316,"name":"ModifierInvocation","src":"12060:17:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5318,"name":"Identifier","src":"12130:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5319,"name":"Identifier","src":"12138:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5309,"type":"address","value":"_token"},"id":5320,"name":"Identifier","src":"12152:6:29"}],"id":5321,"name":"IndexAccess","src":"12138:21:29"}],"id":5322,"name":"MemberAccess","src":"12138:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5323,"name":"Literal","src":"12171:24:29"}],"id":5324,"name":"FunctionCall","src":"12130:66:29"}],"id":5325,"name":"ExpressionStatement","src":"12130:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":4786,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5326,"name":"Identifier","src":"12242:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5309,"type":"address","value":"_token"},"id":5327,"name":"Identifier","src":"12256:6:29"}],"id":5328,"name":"IndexAccess","src":"12242:21:29"}],"id":5329,"name":"MemberAccess","src":"12242:26:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5311,"type":"uint256","value":"_rate"},"id":5330,"name":"Identifier","src":"12271:5:29"}],"id":5331,"name":"Assignment","src":"12242:34:29"}],"id":5332,"name":"ExpressionStatement","src":"12242:34:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":4794,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5333,"name":"Identifier","src":"12339:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5309,"type":"address","value":"_token"},"id":5334,"name":"Identifier","src":"12353:6:29"}],"id":5335,"name":"IndexAccess","src":"12339:21:29"}],"id":5336,"name":"MemberAccess","src":"12339:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5313,"type":"uint256","value":"_updateDate"},"id":5337,"name":"Identifier","src":"12374:11:29"}],"id":5338,"name":"Assignment","src":"12339:46:29"}],"id":5339,"name":"ExpressionStatement","src":"12339:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4704,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":5340,"name":"Identifier","src":"12439:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5341,"name":"Identifier","src":"12456:3:29"}],"id":5342,"name":"MemberAccess","src":"12456:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5309,"type":"address","value":"_token"},"id":5343,"name":"Identifier","src":"12468:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5311,"type":"uint256","value":"_rate"},"id":5344,"name":"Identifier","src":"12476:5:29"}],"id":5345,"name":"FunctionCall","src":"12439:43:29"}],"id":5346,"name":"EmitStatement","src":"12434:48:29"}],"id":5347,"name":"Block","src":"12078:411:29"}],"id":5348,"name":"FunctionDefinition","src":"11974:515:29"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":5372,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5349,"name":"ElementaryTypeName","src":"12593:15:29"}],"id":5350,"name":"VariableDeclaration","src":"12593:19:29"},{"attributes":{"constant":false,"name":"_asset","scope":5372,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5351,"name":"ElementaryTypeName","src":"12614:7:29"}],"id":5352,"name":"VariableDeclaration","src":"12614:14:29"},{"attributes":{"constant":false,"name":"_amount","scope":5372,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5353,"name":"ElementaryTypeName","src":"12630:7:29"}],"id":5354,"name":"VariableDeclaration","src":"12630:15:29"}],"id":5355,"name":"ParameterList","src":"12592:54:29"},{"attributes":{"parameters":[null]},"children":[],"id":5358,"name":"ParameterList","src":"12666:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":5356,"name":"Identifier","src":"12656:9:29"}],"id":5357,"name":"ModifierInvocation","src":"12656:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3284,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":5359,"name":"Identifier","src":"12676:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5350,"type":"address payable","value":"_to"},"id":5360,"name":"Identifier","src":"12690:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5352,"type":"address","value":"_asset"},"id":5361,"name":"Identifier","src":"12695:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5354,"type":"uint256","value":"_amount"},"id":5362,"name":"Identifier","src":"12703:7:29"}],"id":5363,"name":"FunctionCall","src":"12676:35:29"}],"id":5364,"name":"ExpressionStatement","src":"12676:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4768,"type":"function (address,address,uint256)","value":"Claimed"},"id":5365,"name":"Identifier","src":"12726:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5350,"type":"address payable","value":"_to"},"id":5366,"name":"Identifier","src":"12734:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5352,"type":"address","value":"_asset"},"id":5367,"name":"Identifier","src":"12739:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5354,"type":"uint256","value":"_amount"},"id":5368,"name":"Identifier","src":"12747:7:29"}],"id":5369,"name":"FunctionCall","src":"12726:29:29"}],"id":5370,"name":"EmitStatement","src":"12721:34:29"}],"id":5371,"name":"Block","src":"12666:96:29"}],"id":5372,"name":"FunctionDefinition","src":"12578:184:29"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5414,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5373,"name":"ElementaryTypeName","src":"13336:7:29"}],"id":5374,"name":"VariableDeclaration","src":"13336:10:29"}],"id":5375,"name":"ParameterList","src":"13335:12:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5376,"name":"ElementaryTypeName","src":"13371:6:29"}],"id":5377,"name":"VariableDeclaration","src":"13371:13:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5378,"name":"ElementaryTypeName","src":"13386:7:29"}],"id":5379,"name":"VariableDeclaration","src":"13386:7:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5380,"name":"ElementaryTypeName","src":"13395:7:29"}],"id":5381,"name":"VariableDeclaration","src":"13395:7:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5382,"name":"ElementaryTypeName","src":"13404:4:29"}],"id":5383,"name":"VariableDeclaration","src":"13404:4:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5384,"name":"ElementaryTypeName","src":"13410:4:29"}],"id":5385,"name":"VariableDeclaration","src":"13410:4:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5386,"name":"ElementaryTypeName","src":"13416:4:29"}],"id":5387,"name":"VariableDeclaration","src":"13416:4:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5388,"name":"ElementaryTypeName","src":"13422:7:29"}],"id":5389,"name":"VariableDeclaration","src":"13422:7:29"}],"id":5390,"name":"ParameterList","src":"13370:60:29"},{"children":[{"attributes":{"assignments":[5392]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":5413,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4795,"type":"struct TokenWhitelist.Token"},"id":5391,"name":"UserDefinedTypeName","src":"13441:5:29"}],"id":5392,"name":"VariableDeclaration","src":"13441:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5393,"name":"Identifier","src":"13467:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5374,"type":"address","value":"_a"},"id":5394,"name":"Identifier","src":"13481:2:29"}],"id":5395,"name":"IndexAccess","src":"13467:17:29"}],"id":5396,"name":"VariableDeclarationStatement","src":"13441:43:29"},{"attributes":{"functionReturnParameters":5390},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":4782,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5397,"name":"Identifier","src":"13502:9:29"}],"id":5398,"name":"MemberAccess","src":"13502:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":4784,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5399,"name":"Identifier","src":"13520:9:29"}],"id":5400,"name":"MemberAccess","src":"13520:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":4786,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5401,"name":"Identifier","src":"13541:9:29"}],"id":5402,"name":"MemberAccess","src":"13541:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5403,"name":"Identifier","src":"13557:9:29"}],"id":5404,"name":"MemberAccess","src":"13557:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":4790,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5405,"name":"Identifier","src":"13578:9:29"}],"id":5406,"name":"MemberAccess","src":"13578:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5407,"name":"Identifier","src":"13598:9:29"}],"id":5408,"name":"MemberAccess","src":"13598:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":4794,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5409,"name":"Identifier","src":"13620:9:29"}],"id":5410,"name":"MemberAccess","src":"13620:20:29"}],"id":5411,"name":"TupleExpression","src":"13501:140:29"}],"id":5412,"name":"Return","src":"13494:147:29"}],"id":5413,"name":"Block","src":"13431:217:29"}],"id":5414,"name":"FunctionDefinition","src":"13314:334:29"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5415,"name":"ParameterList","src":"14176:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5416,"name":"ElementaryTypeName","src":"14202:6:29"}],"id":5417,"name":"VariableDeclaration","src":"14202:13:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5418,"name":"ElementaryTypeName","src":"14217:7:29"}],"id":5419,"name":"VariableDeclaration","src":"14217:7:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5420,"name":"ElementaryTypeName","src":"14226:7:29"}],"id":5421,"name":"VariableDeclaration","src":"14226:7:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5422,"name":"ElementaryTypeName","src":"14235:4:29"}],"id":5423,"name":"VariableDeclaration","src":"14235:4:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5424,"name":"ElementaryTypeName","src":"14241:4:29"}],"id":5425,"name":"VariableDeclaration","src":"14241:4:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5426,"name":"ElementaryTypeName","src":"14247:4:29"}],"id":5427,"name":"VariableDeclaration","src":"14247:4:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5428,"name":"ElementaryTypeName","src":"14253:7:29"}],"id":5429,"name":"VariableDeclaration","src":"14253:7:29"}],"id":5430,"name":"ParameterList","src":"14201:60:29"},{"children":[{"attributes":{"assignments":[5432]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":5453,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4795,"type":"struct TokenWhitelist.Token"},"id":5431,"name":"UserDefinedTypeName","src":"14272:5:29"}],"id":5432,"name":"VariableDeclaration","src":"14272:28:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5433,"name":"Identifier","src":"14303:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4810,"type":"address","value":"_stablecoin"},"id":5434,"name":"Identifier","src":"14317:11:29"}],"id":5435,"name":"IndexAccess","src":"14303:26:29"}],"id":5436,"name":"VariableDeclarationStatement","src":"14272:57:29"},{"attributes":{"functionReturnParameters":5430},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":4782,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5437,"name":"Identifier","src":"14360:14:29"}],"id":5438,"name":"MemberAccess","src":"14360:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":4784,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5439,"name":"Identifier","src":"14395:14:29"}],"id":5440,"name":"MemberAccess","src":"14395:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":4786,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5441,"name":"Identifier","src":"14433:14:29"}],"id":5442,"name":"MemberAccess","src":"14433:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5443,"name":"Identifier","src":"14466:14:29"}],"id":5444,"name":"MemberAccess","src":"14466:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":4790,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5445,"name":"Identifier","src":"14504:14:29"}],"id":5446,"name":"MemberAccess","src":"14504:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5447,"name":"Identifier","src":"14541:14:29"}],"id":5448,"name":"MemberAccess","src":"14541:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":4794,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5449,"name":"Identifier","src":"14580:14:29"}],"id":5450,"name":"MemberAccess","src":"14580:25:29"}],"id":5451,"name":"TupleExpression","src":"14346:269:29"}],"id":5452,"name":"Return","src":"14339:276:29"}],"id":5453,"name":"Block","src":"14262:360:29"}],"id":5454,"name":"FunctionDefinition","src":"14150:472:29"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5455,"name":"ParameterList","src":"14777:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5463,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5456,"name":"ElementaryTypeName","src":"14803:7:29"}],"id":5457,"name":"ArrayTypeName","src":"14803:9:29"}],"id":5458,"name":"VariableDeclaration","src":"14803:16:29"}],"id":5459,"name":"ParameterList","src":"14802:18:29"},{"children":[{"attributes":{"functionReturnParameters":5459},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5460,"name":"Identifier","src":"14838:18:29"}],"id":5461,"name":"Return","src":"14831:25:29"}],"id":5462,"name":"Block","src":"14821:42:29"}],"id":5463,"name":"FunctionDefinition","src":"14751:112:29"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5464,"name":"ParameterList","src":"15015:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5521,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5465,"name":"ElementaryTypeName","src":"15041:7:29"}],"id":5466,"name":"ArrayTypeName","src":"15041:9:29"}],"id":5467,"name":"VariableDeclaration","src":"15041:16:29"}],"id":5468,"name":"ParameterList","src":"15040:18:29"},{"children":[{"attributes":{"assignments":[5472]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":5520,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":5470,"name":"ElementaryTypeName","src":"15069:7:29"}],"id":5471,"name":"ArrayTypeName","src":"15069:9:29"}],"id":5472,"name":"VariableDeclaration","src":"15069:36:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5473,"name":"ElementaryTypeName","src":"15112:7:29"}],"id":5474,"name":"ArrayTypeName","src":"15112:9:29"}],"id":5475,"name":"NewExpression","src":"15108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5476,"name":"Identifier","src":"15122:18:29"}],"id":5477,"name":"FunctionCall","src":"15108:33:29"}],"id":5478,"name":"VariableDeclarationStatement","src":"15069:72:29"},{"attributes":{"assignments":[5480]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":5520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5479,"name":"ElementaryTypeName","src":"15151:7:29"}],"id":5480,"name":"VariableDeclaration","src":"15151:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5481,"name":"Literal","src":"15177:1:29"}],"id":5482,"name":"VariableDeclarationStatement","src":"15151:27:29"},{"children":[{"attributes":{"assignments":[5484]},"children":[{"attributes":{"constant":false,"name":"i","scope":5517,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5483,"name":"ElementaryTypeName","src":"15193:7:29"}],"id":5484,"name":"VariableDeclaration","src":"15193:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5485,"name":"Literal","src":"15205:1:29"}],"id":5486,"name":"VariableDeclarationStatement","src":"15193:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"uint256","value":"i"},"id":5487,"name":"Identifier","src":"15208:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5488,"name":"Identifier","src":"15212:18:29"}],"id":5489,"name":"MemberAccess","src":"15212:25:29"}],"id":5490,"name":"BinaryOperation","src":"15208:29:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"uint256","value":"i"},"id":5491,"name":"Identifier","src":"15239:1:29"}],"id":5492,"name":"UnaryOperation","src":"15239:3:29"}],"id":5493,"name":"ExpressionStatement","src":"15239:3:29"},{"children":[{"attributes":{"assignments":[5495]},"children":[{"attributes":{"constant":false,"name":"token","scope":5516,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5494,"name":"ElementaryTypeName","src":"15258:7:29"}],"id":5495,"name":"VariableDeclaration","src":"15258:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5496,"name":"Identifier","src":"15274:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"uint256","value":"i"},"id":5497,"name":"Identifier","src":"15293:1:29"}],"id":5498,"name":"IndexAccess","src":"15274:21:29"}],"id":5499,"name":"VariableDeclarationStatement","src":"15258:37:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5500,"name":"Identifier","src":"15313:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5495,"type":"address","value":"token"},"id":5501,"name":"Identifier","src":"15327:5:29"}],"id":5502,"name":"IndexAccess","src":"15313:20:29"}],"id":5503,"name":"MemberAccess","src":"15313:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5472,"type":"address[] memory","value":"redeemableAddresses"},"id":5504,"name":"Identifier","src":"15364:19:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5480,"type":"uint256","value":"redeemableIndex"},"id":5505,"name":"Identifier","src":"15384:15:29"}],"id":5506,"name":"IndexAccess","src":"15364:36:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5495,"type":"address","value":"token"},"id":5507,"name":"Identifier","src":"15403:5:29"}],"id":5508,"name":"Assignment","src":"15364:44:29"}],"id":5509,"name":"ExpressionStatement","src":"15364:44:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5480,"type":"uint256","value":"redeemableIndex"},"id":5510,"name":"Identifier","src":"15426:15:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5511,"name":"Literal","src":"15445:1:29"}],"id":5512,"name":"Assignment","src":"15426:20:29"}],"id":5513,"name":"ExpressionStatement","src":"15426:20:29"}],"id":5514,"name":"Block","src":"15346:115:29"}],"id":5515,"name":"IfStatement","src":"15309:152:29"}],"id":5516,"name":"Block","src":"15244:227:29"}],"id":5517,"name":"ForStatement","src":"15188:283:29"},{"attributes":{"functionReturnParameters":5468},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5472,"type":"address[] memory","value":"redeemableAddresses"},"id":5518,"name":"Identifier","src":"15487:19:29"}],"id":5519,"name":"Return","src":"15480:26:29"}],"id":5520,"name":"Block","src":"15059:454:29"}],"id":5521,"name":"FunctionDefinition","src":"14990:523:29"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5544,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5522,"name":"ElementaryTypeName","src":"15727:7:29"}],"id":5523,"name":"VariableDeclaration","src":"15727:14:29"},{"attributes":{"constant":false,"name":"_methodId","scope":5544,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5524,"name":"ElementaryTypeName","src":"15743:6:29"}],"id":5525,"name":"VariableDeclaration","src":"15743:16:29"}],"id":5526,"name":"ParameterList","src":"15726:34:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5544,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5527,"name":"ElementaryTypeName","src":"15782:4:29"}],"id":5528,"name":"VariableDeclaration","src":"15782:4:29"}],"id":5529,"name":"ParameterList","src":"15781:6:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5530,"name":"Identifier","src":"15798:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5531,"name":"Identifier","src":"15806:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5523,"type":"address","value":"_token"},"id":5532,"name":"Identifier","src":"15820:6:29"}],"id":5533,"name":"IndexAccess","src":"15806:21:29"}],"id":5534,"name":"MemberAccess","src":"15806:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":5535,"name":"Literal","src":"15839:20:29"}],"id":5536,"name":"FunctionCall","src":"15798:62:29"}],"id":5537,"name":"ExpressionStatement","src":"15798:62:29"},{"attributes":{"functionReturnParameters":5529},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5538,"name":"Identifier","src":"15878:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes4","value":"_methodId"},"id":5539,"name":"Identifier","src":"15897:9:29"}],"id":5540,"name":"IndexAccess","src":"15878:29:29"}],"id":5541,"name":"TupleExpression","src":"15877:31:29"}],"id":5542,"name":"Return","src":"15870:38:29"}],"id":5543,"name":"Block","src":"15788:127:29"}],"id":5544,"name":"FunctionDefinition","src":"15695:220:29"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":5557,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5545,"name":"ElementaryTypeName","src":"16104:6:29"}],"id":5546,"name":"VariableDeclaration","src":"16104:16:29"}],"id":5547,"name":"ParameterList","src":"16103:18:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5557,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5548,"name":"ElementaryTypeName","src":"16145:4:29"}],"id":5549,"name":"VariableDeclaration","src":"16145:4:29"}],"id":5550,"name":"ParameterList","src":"16144:6:29"},{"children":[{"attributes":{"functionReturnParameters":5550},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5551,"name":"Identifier","src":"16169:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes4","value":"_methodId"},"id":5552,"name":"Identifier","src":"16188:9:29"}],"id":5553,"name":"IndexAccess","src":"16169:29:29"}],"id":5554,"name":"TupleExpression","src":"16168:31:29"}],"id":5555,"name":"Return","src":"16161:38:29"}],"id":5556,"name":"Block","src":"16151:55:29"}],"id":5557,"name":"FunctionDefinition","src":"16070:136:29"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5558,"name":"ParameterList","src":"16342:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5565,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5559,"name":"ElementaryTypeName","src":"16368:7:29"}],"id":5560,"name":"VariableDeclaration","src":"16368:7:29"}],"id":5561,"name":"ParameterList","src":"16367:9:29"},{"children":[{"attributes":{"functionReturnParameters":5561},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5562,"name":"Identifier","src":"16394:18:29"}],"id":5563,"name":"Return","src":"16387:25:29"}],"id":5564,"name":"Block","src":"16377:42:29"}],"id":5565,"name":"FunctionDefinition","src":"16316:103:29"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5566,"name":"ParameterList","src":"16570:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5573,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5567,"name":"ElementaryTypeName","src":"16596:7:29"}],"id":5568,"name":"VariableDeclaration","src":"16596:7:29"}],"id":5569,"name":"ParameterList","src":"16595:9:29"},{"children":[{"attributes":{"functionReturnParameters":5569},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4810,"type":"address","value":"_stablecoin"},"id":5570,"name":"Identifier","src":"16622:11:29"}],"id":5571,"name":"Return","src":"16615:18:29"}],"id":5572,"name":"Block","src":"16605:35:29"}],"id":5573,"name":"FunctionDefinition","src":"16551:89:29"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5574,"name":"ParameterList","src":"16774:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5581,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5575,"name":"ElementaryTypeName","src":"16800:7:29"}],"id":5576,"name":"VariableDeclaration","src":"16800:7:29"}],"id":5577,"name":"ParameterList","src":"16799:9:29"},{"children":[{"attributes":{"functionReturnParameters":5577},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"bytes32","value":"_oracleNode"},"id":5578,"name":"Identifier","src":"16826:11:29"}],"id":5579,"name":"Return","src":"16819:18:29"}],"id":5580,"name":"Block","src":"16809:35:29"}],"id":5581,"name":"FunctionDefinition","src":"16755:89:29"}],"id":5582,"name":"ContractDefinition","src":"1939:14907:29"}],"id":5583,"name":"SourceUnit","src":"774:16073:29"}},"wallet.sol":{"AST":{"attributes":{"absolutePath":"wallet.sol","exportedSymbols":{"AddressWhitelist":[606],"ControllableOwnable":[36],"DailyLimitTrait":[808],"GasTopUpLimit":[1098],"LoadLimit":[1272],"SelfCallableOwnable":[58],"SpendLimit":[940],"Wallet":[2183]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"757:24:30"},{"attributes":{"SourceUnit":3830,"absolutePath":"licence.sol","file":"./licence.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"783:23:30"},{"attributes":{"SourceUnit":3029,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"807:33:30"},{"attributes":{"SourceUnit":2827,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"841:38:30"},{"attributes":{"SourceUnit":2731,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"880:37:30"},{"attributes":{"SourceUnit":3286,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"918:39:30"},{"attributes":{"SourceUnit":2872,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":7,"name":"ImportDirective","src":"958:39:30"},{"attributes":{"SourceUnit":3246,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":8,"name":"ImportDirective","src":"998:44:30"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":9,"name":"ImportDirective","src":"1043:34:30"},{"attributes":{"SourceUnit":2203,"absolutePath":"externals/Address.sol","file":"./externals/Address.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":10,"name":"ImportDirective","src":"1078:33:30"},{"attributes":{"SourceUnit":2347,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":11,"name":"ImportDirective","src":"1112:31:30"},{"attributes":{"SourceUnit":2566,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":12,"name":"ImportDirective","src":"1144:35:30"},{"attributes":{"SourceUnit":2294,"absolutePath":"externals/ERC165.sol","file":"./externals/ERC165.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":13,"name":"ImportDirective","src":"1180:32:30"},{"attributes":{"SourceUnit":2284,"absolutePath":"externals/ECDSA.sol","file":"./externals/ECDSA.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":14,"name":"ImportDirective","src":"1213:31:30"},{"attributes":{"contractDependencies":[2826,2871,3028],"contractKind":"contract","documentation":"@title ControllableOwnable combines Controllable and Ownable\n @dev providing an additional modifier to check if Owner or Controller","fullyImplemented":false,"linearizedBaseContracts":[36,3028,2826,2871],"name":"ControllableOwnable","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2826,"type":"contract Controllable"},"id":15,"name":"UserDefinedTypeName","src":"1418:12:30"}],"id":16,"name":"InheritanceSpecifier","src":"1418:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3028,"type":"contract Ownable"},"id":17,"name":"UserDefinedTypeName","src":"1432:7:30"}],"id":18,"name":"InheritanceSpecifier","src":"1432:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or one of the Controllers","name":"onlyOwnerOrController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":19,"name":"ParameterList","src":"1548:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a244313930a94a6f5de4548387c8c245a5d11002ac47a2e54f96214a9879106","typeString":"literal_string \"only owner||controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":20,"name":"Identifier","src":"1561:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":21,"name":"Identifier","src":"1569:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":22,"name":"Identifier","src":"1578:3:30"}],"id":23,"name":"MemberAccess","src":"1578:10:30"}],"id":24,"name":"FunctionCall","src":"1569:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2808,"type":"function (address) view returns (bool)","value":"_isController"},"id":25,"name":"Identifier","src":"1593:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":26,"name":"Identifier","src":"1607:3:30"}],"id":27,"name":"MemberAccess","src":"1607:10:30"}],"id":28,"name":"FunctionCall","src":"1593:25:30"}],"id":29,"name":"BinaryOperation","src":"1569:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||controller\"","value":"only owner||controller"},"id":30,"name":"Literal","src":"1620:24:30"}],"id":31,"name":"FunctionCall","src":"1561:84:30"}],"id":32,"name":"ExpressionStatement","src":"1561:84:30"},{"id":33,"name":"PlaceholderStatement","src":"1655:1:30"}],"id":34,"name":"Block","src":"1551:112:30"}],"id":35,"name":"ModifierDefinition","src":"1518:145:30"}],"id":36,"name":"ContractDefinition","src":"1386:279:30"},{"attributes":{"contractDependencies":[3028],"contractKind":"contract","documentation":"@title SelfCallableOwnable allows either owner or the contract itself to call its functions\n @dev providing an additional modifier to check if Owner or self is calling\n @dev the \"self\" here is used for the meta transactions","fullyImplemented":false,"linearizedBaseContracts":[58,3028],"name":"SelfCallableOwnable","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3028,"type":"contract Ownable"},"id":37,"name":"UserDefinedTypeName","src":"1934:7:30"}],"id":38,"name":"InheritanceSpecifier","src":"1934:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or self","name":"onlyOwnerOrSelf","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":39,"name":"ParameterList","src":"2026:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c98ff749bed2b5f266d255ad845f8a2a0dba28f389ec62046d9aad839ae2d6","typeString":"literal_string \"only owner||self\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":40,"name":"Identifier","src":"2039:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":41,"name":"Identifier","src":"2047:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":42,"name":"Identifier","src":"2056:3:30"}],"id":43,"name":"MemberAccess","src":"2056:10:30"}],"id":44,"name":"FunctionCall","src":"2047:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":45,"name":"Identifier","src":"2071:3:30"}],"id":46,"name":"MemberAccess","src":"2071:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfCallableOwnable_$58","typeString":"contract SelfCallableOwnable"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":47,"name":"ElementaryTypeNameExpression","src":"2085:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10191,"type":"contract SelfCallableOwnable","value":"this"},"id":48,"name":"Identifier","src":"2093:4:30"}],"id":49,"name":"FunctionCall","src":"2085:13:30"}],"id":50,"name":"BinaryOperation","src":"2071:27:30"}],"id":51,"name":"BinaryOperation","src":"2047:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c73656c66","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||self\"","value":"only owner||self"},"id":52,"name":"Literal","src":"2100:18:30"}],"id":53,"name":"FunctionCall","src":"2039:80:30"}],"id":54,"name":"ExpressionStatement","src":"2039:80:30"},{"id":55,"name":"PlaceholderStatement","src":"2129:1:30"}],"id":56,"name":"Block","src":"2029:108:30"}],"id":57,"name":"ModifierDefinition","src":"2002:135:30"}],"id":58,"name":"ContractDefinition","src":"1902:237:30"},{"attributes":{"contractDependencies":[36,58,2826,2871,3028],"contractKind":"contract","documentation":"@title AddressWhitelist provides payee-whitelist functionality.\n @dev This contract will allow the user to maintain a whitelist of addresses\n @dev These addresses will live outside of the various spend limits","fullyImplemented":false,"linearizedBaseContracts":[606,58,36,3028,2826,2871],"name":"AddressWhitelist","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":36,"type":"contract ControllableOwnable"},"id":59,"name":"UserDefinedTypeName","src":"2390:19:30"}],"id":60,"name":"InheritanceSpecifier","src":"2390:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":58,"type":"contract SelfCallableOwnable"},"id":61,"name":"UserDefinedTypeName","src":"2411:19:30"}],"id":62,"name":"InheritanceSpecifier","src":"2411:19:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":63,"name":"UserDefinedTypeName","src":"2443:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":64,"name":"ElementaryTypeName","src":"2456:7:30"}],"id":65,"name":"UsingForDirective","src":"2437:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":72,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":66,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":67,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":72,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":68,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":69,"name":"ArrayTypeName","src":"2510:9:30"}],"id":70,"name":"VariableDeclaration","src":"2510:20:30"}],"id":71,"name":"ParameterList","src":"2492:39:30"}],"id":72,"name":"EventDefinition","src":"2470:62:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":78,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":73,"name":"ElementaryTypeName","src":"2570:7:30"}],"id":74,"name":"VariableDeclaration","src":"2570:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":78,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":75,"name":"ElementaryTypeName","src":"2587:7:30"}],"id":76,"name":"VariableDeclaration","src":"2587:13:30"}],"id":77,"name":"ParameterList","src":"2569:32:30"}],"id":78,"name":"EventDefinition","src":"2537:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":85,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":79,"name":"ElementaryTypeName","src":"2640:7:30"}],"id":80,"name":"ArrayTypeName","src":"2640:9:30"}],"id":81,"name":"VariableDeclaration","src":"2640:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":85,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":82,"name":"ElementaryTypeName","src":"2662:7:30"}],"id":83,"name":"VariableDeclaration","src":"2662:13:30"}],"id":84,"name":"ParameterList","src":"2639:37:30"}],"id":85,"name":"EventDefinition","src":"2607:70:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":91,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":86,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":87,"name":"VariableDeclaration","src":"2715:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":91,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":88,"name":"ElementaryTypeName","src":"2732:7:30"}],"id":89,"name":"VariableDeclaration","src":"2732:13:30"}],"id":90,"name":"ParameterList","src":"2714:32:30"}],"id":91,"name":"EventDefinition","src":"2683:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedFromWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":98,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":92,"name":"ElementaryTypeName","src":"2779:7:30"}],"id":93,"name":"VariableDeclaration","src":"2779:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":98,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":94,"name":"ElementaryTypeName","src":"2796:7:30"}],"id":95,"name":"ArrayTypeName","src":"2796:9:30"}],"id":96,"name":"VariableDeclaration","src":"2796:20:30"}],"id":97,"name":"ParameterList","src":"2778:39:30"}],"id":98,"name":"EventDefinition","src":"2752:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":105,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":99,"name":"ElementaryTypeName","src":"2855:7:30"}],"id":100,"name":"ArrayTypeName","src":"2855:9:30"}],"id":101,"name":"VariableDeclaration","src":"2855:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":105,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":102,"name":"ElementaryTypeName","src":"2877:7:30"}],"id":103,"name":"VariableDeclaration","src":"2877:13:30"}],"id":104,"name":"ParameterList","src":"2854:37:30"}],"id":105,"name":"EventDefinition","src":"2823:69:30"},{"attributes":{"constant":false,"name":"whitelistMap","scope":606,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":106,"name":"ElementaryTypeName","src":"2906:7:30"},{"attributes":{"name":"bool","type":"bool"},"id":107,"name":"ElementaryTypeName","src":"2917:4:30"}],"id":108,"name":"Mapping","src":"2898:24:30"}],"id":109,"name":"VariableDeclaration","src":"2898:44:30"},{"attributes":{"constant":false,"name":"whitelistArray","scope":606,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":110,"name":"ElementaryTypeName","src":"2948:7:30"}],"id":111,"name":"ArrayTypeName","src":"2948:9:30"}],"id":112,"name":"VariableDeclaration","src":"2948:31:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistAddition","scope":606,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":113,"name":"ElementaryTypeName","src":"2985:7:30"}],"id":114,"name":"ArrayTypeName","src":"2985:9:30"}],"id":115,"name":"VariableDeclaration","src":"2985:43:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistRemoval","scope":606,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":116,"name":"ElementaryTypeName","src":"3034:7:30"}],"id":117,"name":"ArrayTypeName","src":"3034:9:30"}],"id":118,"name":"VariableDeclaration","src":"3034:42:30"},{"attributes":{"constant":false,"name":"submittedWhitelistAddition","scope":606,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":119,"name":"ElementaryTypeName","src":"3082:4:30"}],"id":120,"name":"VariableDeclaration","src":"3082:38:30"},{"attributes":{"constant":false,"name":"submittedWhitelistRemoval","scope":606,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":121,"name":"ElementaryTypeName","src":"3126:4:30"}],"id":122,"name":"VariableDeclaration","src":"3126:37:30"},{"attributes":{"constant":false,"name":"isSetWhitelist","scope":606,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":123,"name":"ElementaryTypeName","src":"3169:4:30"}],"id":124,"name":"VariableDeclaration","src":"3169:26:30"},{"attributes":{"documentation":"@dev Check if the provided addresses contain the owner or the zero-address address.","name":"hasNoOwnerOrZeroAddress","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":165,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":125,"name":"ElementaryTypeName","src":"3327:7:30"}],"id":126,"name":"ArrayTypeName","src":"3327:9:30"}],"id":127,"name":"VariableDeclaration","src":"3327:27:30"}],"id":128,"name":"ParameterList","src":"3326:29:30"},{"children":[{"children":[{"attributes":{"assignments":[130]},"children":[{"attributes":{"constant":false,"name":"i","scope":162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":129,"name":"ElementaryTypeName","src":"3371:7:30"}],"id":130,"name":"VariableDeclaration","src":"3371:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":131,"name":"Literal","src":"3383:1:30"}],"id":132,"name":"VariableDeclarationStatement","src":"3371:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":133,"name":"Identifier","src":"3386:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":127,"type":"address[] memory","value":"_addresses"},"id":134,"name":"Identifier","src":"3390:10:30"}],"id":135,"name":"MemberAccess","src":"3390:17:30"}],"id":136,"name":"BinaryOperation","src":"3386:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":137,"name":"Identifier","src":"3409:1:30"}],"id":138,"name":"UnaryOperation","src":"3409:3:30"}],"id":139,"name":"ExpressionStatement","src":"3409:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83144f57b92473167e9ce74530b82e833e4f010b46d8a2562f84cdc754bd4967","typeString":"literal_string \"contains owner address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":140,"name":"Identifier","src":"3428:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":141,"name":"Identifier","src":"3437:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":127,"type":"address[] memory","value":"_addresses"},"id":142,"name":"Identifier","src":"3446:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":143,"name":"Identifier","src":"3457:1:30"}],"id":144,"name":"IndexAccess","src":"3446:13:30"}],"id":145,"name":"FunctionCall","src":"3437:23:30"}],"id":146,"name":"UnaryOperation","src":"3436:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e73206f776e65722061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains owner address\"","value":"contains owner address"},"id":147,"name":"Literal","src":"3462:24:30"}],"id":148,"name":"FunctionCall","src":"3428:59:30"}],"id":149,"name":"ExpressionStatement","src":"3428:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab14c1506b1b0c03aad2feb5e5b965df7dffe18036562732ceabd49019d58098","typeString":"literal_string \"contains 0 address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":150,"name":"Identifier","src":"3501:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":127,"type":"address[] memory","value":"_addresses"},"id":151,"name":"Identifier","src":"3509:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":152,"name":"Identifier","src":"3520:1:30"}],"id":153,"name":"IndexAccess","src":"3509:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":154,"name":"ElementaryTypeNameExpression","src":"3526:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":155,"name":"Literal","src":"3534:1:30"}],"id":156,"name":"FunctionCall","src":"3526:10:30"}],"id":157,"name":"BinaryOperation","src":"3509:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e7320302061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains 0 address\"","value":"contains 0 address"},"id":158,"name":"Literal","src":"3538:20:30"}],"id":159,"name":"FunctionCall","src":"3501:58:30"}],"id":160,"name":"ExpressionStatement","src":"3501:58:30"}],"id":161,"name":"Block","src":"3414:156:30"}],"id":162,"name":"ForStatement","src":"3366:204:30"},{"id":163,"name":"PlaceholderStatement","src":"3579:1:30"}],"id":164,"name":"Block","src":"3356:231:30"}],"id":165,"name":"ModifierDefinition","src":"3294:293:30"},{"attributes":{"documentation":"@dev Check that neither addition nor removal operations have already been submitted.","name":"noActiveSubmission","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":166,"name":"ParameterList","src":"3713:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_218a99457edaa7c4d6a4ca4023db54cf2e31e2ca8b9a350a6c9ab56a1ea1df99","typeString":"literal_string \"whitelist sumbission pending\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":167,"name":"Identifier","src":"3726:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":168,"name":"Identifier","src":"3735:26:30"}],"id":169,"name":"UnaryOperation","src":"3734:27:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":170,"name":"Identifier","src":"3766:25:30"}],"id":171,"name":"UnaryOperation","src":"3765:26:30"}],"id":172,"name":"BinaryOperation","src":"3734:57:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c6973742073756d62697373696f6e2070656e64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist sumbission pending\"","value":"whitelist sumbission pending"},"id":173,"name":"Literal","src":"3793:30:30"}],"id":174,"name":"FunctionCall","src":"3726:98:30"}],"id":175,"name":"ExpressionStatement","src":"3726:98:30"},{"id":176,"name":"PlaceholderStatement","src":"3834:1:30"}],"id":177,"name":"Block","src":"3716:126:30"}],"id":178,"name":"ModifierDefinition","src":"3686:156:30"},{"attributes":{"documentation":"@dev Cancel pending whitelist addition.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistAddition","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":213,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":179,"name":"ElementaryTypeName","src":"3929:7:30"}],"id":180,"name":"VariableDeclaration","src":"3929:13:30"}],"id":181,"name":"ParameterList","src":"3928:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":184,"name":"ParameterList","src":"3975:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"modifier ()","value":"onlyOwnerOrController"},"id":182,"name":"Identifier","src":"3953:21:30"}],"id":183,"name":"ModifierInvocation","src":"3953:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":185,"name":"Identifier","src":"4035:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":186,"name":"Identifier","src":"4043:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":187,"name":"Literal","src":"4071:23:30"}],"id":188,"name":"FunctionCall","src":"4035:60:30"}],"id":189,"name":"ExpressionStatement","src":"4035:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":190,"name":"Identifier","src":"4200:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":180,"type":"bytes32","value":"_hash"},"id":191,"name":"Identifier","src":"4208:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":192,"name":"Identifier","src":"4217:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":193,"name":"Identifier","src":"4231:25:30"}],"id":194,"name":"FunctionCall","src":"4217:40:30"}],"id":195,"name":"BinaryOperation","src":"4208:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":196,"name":"Literal","src":"4259:37:30"}],"id":197,"name":"FunctionCall","src":"4200:97:30"}],"id":198,"name":"ExpressionStatement","src":"4200:97:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":199,"name":"Identifier","src":"4350:25:30"}],"id":200,"name":"UnaryOperation","src":"4343:32:30"}],"id":201,"name":"ExpressionStatement","src":"4343:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":202,"name":"Identifier","src":"4432:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":203,"name":"Literal","src":"4461:5:30"}],"id":204,"name":"Assignment","src":"4432:34:30"}],"id":205,"name":"ExpressionStatement","src":"4432:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":78,"type":"function (address,bytes32)","value":"CancelledWhitelistAddition"},"id":206,"name":"Identifier","src":"4521:26:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":207,"name":"Identifier","src":"4548:3:30"}],"id":208,"name":"MemberAccess","src":"4548:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":180,"type":"bytes32","value":"_hash"},"id":209,"name":"Identifier","src":"4560:5:30"}],"id":210,"name":"FunctionCall","src":"4521:45:30"}],"id":211,"name":"EmitStatement","src":"4516:50:30"}],"id":212,"name":"Block","src":"3975:598:30"}],"id":213,"name":"FunctionDefinition","src":"3896:677:30"},{"attributes":{"documentation":"@dev Cancel pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistRemoval","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":248,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":214,"name":"ElementaryTypeName","src":"4673:7:30"}],"id":215,"name":"VariableDeclaration","src":"4673:13:30"}],"id":216,"name":"ParameterList","src":"4672:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":219,"name":"ParameterList","src":"4719:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"modifier ()","value":"onlyOwnerOrController"},"id":217,"name":"Identifier","src":"4697:21:30"}],"id":218,"name":"ModifierInvocation","src":"4697:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":220,"name":"Identifier","src":"4779:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":221,"name":"Identifier","src":"4787:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":222,"name":"Literal","src":"4814:23:30"}],"id":223,"name":"FunctionCall","src":"4779:59:30"}],"id":224,"name":"ExpressionStatement","src":"4779:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":225,"name":"Identifier","src":"4942:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"bytes32","value":"_hash"},"id":226,"name":"Identifier","src":"4950:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":227,"name":"Identifier","src":"4959:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":228,"name":"Identifier","src":"4973:24:30"}],"id":229,"name":"FunctionCall","src":"4959:39:30"}],"id":230,"name":"BinaryOperation","src":"4950:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":231,"name":"Literal","src":"5000:37:30"}],"id":232,"name":"FunctionCall","src":"4942:96:30"}],"id":233,"name":"ExpressionStatement","src":"4942:96:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":234,"name":"Identifier","src":"5091:24:30"}],"id":235,"name":"UnaryOperation","src":"5084:31:30"}],"id":236,"name":"ExpressionStatement","src":"5084:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":237,"name":"Identifier","src":"5161:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":238,"name":"Literal","src":"5189:5:30"}],"id":239,"name":"Assignment","src":"5161:33:30"}],"id":240,"name":"ExpressionStatement","src":"5161:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":91,"type":"function (address,bytes32)","value":"CancelledWhitelistRemoval"},"id":241,"name":"Identifier","src":"5249:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":242,"name":"Identifier","src":"5275:3:30"}],"id":243,"name":"MemberAccess","src":"5275:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"bytes32","value":"_hash"},"id":244,"name":"Identifier","src":"5287:5:30"}],"id":245,"name":"FunctionCall","src":"5249:44:30"}],"id":246,"name":"EmitStatement","src":"5244:49:30"}],"id":247,"name":"Block","src":"4719:581:30"}],"id":248,"name":"FunctionDefinition","src":"4641:659:30"},{"attributes":{"documentation":"@dev Confirm pending whitelist addition.\n @dev This will only ever be applied post 2FA, by one of the Controllers\n @param _hash is the hash of the pending whitelist array, a form of lamport lock","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistAddition","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":320,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":249,"name":"ElementaryTypeName","src":"5557:7:30"}],"id":250,"name":"VariableDeclaration","src":"5557:13:30"}],"id":251,"name":"ParameterList","src":"5556:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":254,"name":"ParameterList","src":"5596:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":252,"name":"Identifier","src":"5581:14:30"}],"id":253,"name":"ModifierInvocation","src":"5581:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":255,"name":"Identifier","src":"5673:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":256,"name":"Identifier","src":"5681:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":257,"name":"Literal","src":"5709:23:30"}],"id":258,"name":"FunctionCall","src":"5673:60:30"}],"id":259,"name":"ExpressionStatement","src":"5673:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":260,"name":"Identifier","src":"5838:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"bytes32","value":"_hash"},"id":261,"name":"Identifier","src":"5846:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":262,"name":"Identifier","src":"5855:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":263,"name":"Identifier","src":"5869:25:30"}],"id":264,"name":"FunctionCall","src":"5855:40:30"}],"id":265,"name":"BinaryOperation","src":"5846:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":266,"name":"Literal","src":"5897:37:30"}],"id":267,"name":"FunctionCall","src":"5838:97:30"}],"id":268,"name":"ExpressionStatement","src":"5838:97:30"},{"children":[{"attributes":{"assignments":[270]},"children":[{"attributes":{"constant":false,"name":"i","scope":305,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":269,"name":"ElementaryTypeName","src":"5990:7:30"}],"id":270,"name":"VariableDeclaration","src":"5990:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":271,"name":"Literal","src":"6002:1:30"}],"id":272,"name":"VariableDeclarationStatement","src":"5990:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":273,"name":"Identifier","src":"6005:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":274,"name":"Identifier","src":"6009:25:30"}],"id":275,"name":"MemberAccess","src":"6009:32:30"}],"id":276,"name":"BinaryOperation","src":"6005:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":277,"name":"Identifier","src":"6043:1:30"}],"id":278,"name":"UnaryOperation","src":"6043:3:30"}],"id":279,"name":"ExpressionStatement","src":"6043:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":280,"name":"Identifier","src":"6117:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":281,"name":"Identifier","src":"6130:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":282,"name":"Identifier","src":"6156:1:30"}],"id":283,"name":"IndexAccess","src":"6130:28:30"}],"id":284,"name":"IndexAccess","src":"6117:42:30"}],"id":285,"name":"UnaryOperation","src":"6116:43:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":286,"name":"Identifier","src":"6227:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":287,"name":"Identifier","src":"6240:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":288,"name":"Identifier","src":"6266:1:30"}],"id":289,"name":"IndexAccess","src":"6240:28:30"}],"id":290,"name":"IndexAccess","src":"6227:42:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":291,"name":"Literal","src":"6272:4:30"}],"id":292,"name":"Assignment","src":"6227:49:30"}],"id":293,"name":"ExpressionStatement","src":"6227:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":294,"name":"Identifier","src":"6294:14:30"}],"id":296,"name":"MemberAccess","src":"6294:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":297,"name":"Identifier","src":"6314:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":298,"name":"Identifier","src":"6340:1:30"}],"id":299,"name":"IndexAccess","src":"6314:28:30"}],"id":300,"name":"FunctionCall","src":"6294:49:30"}],"id":301,"name":"ExpressionStatement","src":"6294:49:30"}],"id":302,"name":"Block","src":"6161:197:30"}],"id":303,"name":"IfStatement","src":"6112:246:30"}],"id":304,"name":"Block","src":"6048:320:30"}],"id":305,"name":"ForStatement","src":"5985:383:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":72,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":306,"name":"Identifier","src":"6418:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":307,"name":"Identifier","src":"6435:3:30"}],"id":308,"name":"MemberAccess","src":"6435:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":309,"name":"Identifier","src":"6447:25:30"}],"id":310,"name":"FunctionCall","src":"6418:55:30"}],"id":311,"name":"EmitStatement","src":"6413:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":312,"name":"Identifier","src":"6526:25:30"}],"id":313,"name":"UnaryOperation","src":"6519:32:30"}],"id":314,"name":"ExpressionStatement","src":"6519:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":315,"name":"Identifier","src":"6599:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":316,"name":"Literal","src":"6628:5:30"}],"id":317,"name":"Assignment","src":"6599:34:30"}],"id":318,"name":"ExpressionStatement","src":"6599:34:30"}],"id":319,"name":"Block","src":"5596:1044:30"}],"id":320,"name":"FunctionDefinition","src":"5523:1117:30"},{"attributes":{"documentation":"@dev Confirm pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistRemoval","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":425,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":321,"name":"ElementaryTypeName","src":"6742:7:30"}],"id":322,"name":"VariableDeclaration","src":"6742:13:30"}],"id":323,"name":"ParameterList","src":"6741:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":326,"name":"ParameterList","src":"6781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":324,"name":"Identifier","src":"6766:14:30"}],"id":325,"name":"ModifierInvocation","src":"6766:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":327,"name":"Identifier","src":"6888:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":328,"name":"Identifier","src":"6896:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":329,"name":"Literal","src":"6923:23:30"}],"id":330,"name":"FunctionCall","src":"6888:59:30"}],"id":331,"name":"ExpressionStatement","src":"6888:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":332,"name":"Identifier","src":"7051:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":322,"type":"bytes32","value":"_hash"},"id":333,"name":"Identifier","src":"7059:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":334,"name":"Identifier","src":"7068:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":335,"name":"Identifier","src":"7082:24:30"}],"id":336,"name":"FunctionCall","src":"7068:39:30"}],"id":337,"name":"BinaryOperation","src":"7059:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":338,"name":"Literal","src":"7109:37:30"}],"id":339,"name":"FunctionCall","src":"7051:96:30"}],"id":340,"name":"ExpressionStatement","src":"7051:96:30"},{"children":[{"attributes":{"assignments":[342]},"children":[{"attributes":{"constant":false,"name":"i","scope":410,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":341,"name":"ElementaryTypeName","src":"7199:7:30"}],"id":342,"name":"VariableDeclaration","src":"7199:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":343,"name":"Literal","src":"7211:1:30"}],"id":344,"name":"VariableDeclarationStatement","src":"7199:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":345,"name":"Identifier","src":"7214:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":346,"name":"Identifier","src":"7218:24:30"}],"id":347,"name":"MemberAccess","src":"7218:31:30"}],"id":348,"name":"BinaryOperation","src":"7214:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":349,"name":"Identifier","src":"7251:1:30"}],"id":350,"name":"UnaryOperation","src":"7251:3:30"}],"id":351,"name":"ExpressionStatement","src":"7251:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":352,"name":"Identifier","src":"7308:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":353,"name":"Identifier","src":"7321:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":354,"name":"Identifier","src":"7346:1:30"}],"id":355,"name":"IndexAccess","src":"7321:27:30"}],"id":356,"name":"IndexAccess","src":"7308:41:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":357,"name":"Identifier","src":"7369:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":358,"name":"Identifier","src":"7382:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":359,"name":"Identifier","src":"7407:1:30"}],"id":360,"name":"IndexAccess","src":"7382:27:30"}],"id":361,"name":"IndexAccess","src":"7369:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":362,"name":"Literal","src":"7413:5:30"}],"id":363,"name":"Assignment","src":"7369:49:30"}],"id":364,"name":"ExpressionStatement","src":"7369:49:30"},{"children":[{"attributes":{"assignments":[366]},"children":[{"attributes":{"constant":false,"name":"j","scope":401,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":365,"name":"ElementaryTypeName","src":"7441:7:30"}],"id":366,"name":"VariableDeclaration","src":"7441:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":367,"name":"Literal","src":"7453:1:30"}],"id":368,"name":"VariableDeclarationStatement","src":"7441:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"uint256","value":"j"},"id":369,"name":"Identifier","src":"7456:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":370,"name":"Identifier","src":"7460:14:30"}],"id":371,"name":"MemberAccess","src":"7460:21:30"}],"id":372,"name":"MemberAccess","src":"7460:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":373,"name":"Literal","src":"7486:1:30"}],"id":374,"name":"FunctionCall","src":"7460:28:30"}],"id":375,"name":"BinaryOperation","src":"7456:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"uint256","value":"j"},"id":376,"name":"Identifier","src":"7490:1:30"}],"id":377,"name":"UnaryOperation","src":"7490:3:30"}],"id":378,"name":"ExpressionStatement","src":"7490:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":379,"name":"Identifier","src":"7521:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"uint256","value":"j"},"id":380,"name":"Identifier","src":"7536:1:30"}],"id":381,"name":"IndexAccess","src":"7521:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":382,"name":"Identifier","src":"7542:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":383,"name":"Identifier","src":"7567:1:30"}],"id":384,"name":"IndexAccess","src":"7542:27:30"}],"id":385,"name":"BinaryOperation","src":"7521:48:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":386,"name":"Identifier","src":"7597:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"uint256","value":"j"},"id":387,"name":"Identifier","src":"7612:1:30"}],"id":388,"name":"IndexAccess","src":"7597:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":389,"name":"Identifier","src":"7617:14:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":390,"name":"Identifier","src":"7632:14:30"}],"id":391,"name":"MemberAccess","src":"7632:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":392,"name":"Literal","src":"7656:1:30"}],"id":393,"name":"BinaryOperation","src":"7632:25:30"}],"id":394,"name":"IndexAccess","src":"7617:41:30"}],"id":395,"name":"Assignment","src":"7597:61:30"}],"id":396,"name":"ExpressionStatement","src":"7597:61:30"},{"id":397,"name":"Break","src":"7684:5:30"}],"id":398,"name":"Block","src":"7571:141:30"}],"id":399,"name":"IfStatement","src":"7517:195:30"}],"id":400,"name":"Block","src":"7495:235:30"}],"id":401,"name":"ForStatement","src":"7436:294:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":402,"name":"Identifier","src":"7747:14:30"}],"id":404,"name":"MemberAccess","src":"7747:21:30"}],"id":405,"name":"UnaryOperation","src":"7747:23:30"}],"id":406,"name":"ExpressionStatement","src":"7747:23:30"}],"id":407,"name":"Block","src":"7351:434:30"}],"id":408,"name":"IfStatement","src":"7304:481:30"}],"id":409,"name":"Block","src":"7256:539:30"}],"id":410,"name":"ForStatement","src":"7194:601:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":98,"type":"function (address,address[] memory)","value":"RemovedFromWhitelist"},"id":411,"name":"Identifier","src":"7844:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":412,"name":"Identifier","src":"7865:3:30"}],"id":413,"name":"MemberAccess","src":"7865:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":414,"name":"Identifier","src":"7877:24:30"}],"id":415,"name":"FunctionCall","src":"7844:58:30"}],"id":416,"name":"EmitStatement","src":"7839:63:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":417,"name":"Identifier","src":"7955:24:30"}],"id":418,"name":"UnaryOperation","src":"7948:31:30"}],"id":419,"name":"ExpressionStatement","src":"7948:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":420,"name":"Identifier","src":"8027:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":421,"name":"Literal","src":"8055:5:30"}],"id":422,"name":"Assignment","src":"8027:33:30"}],"id":423,"name":"ExpressionStatement","src":"8027:33:30"}],"id":424,"name":"Block","src":"6781:1286:30"}],"id":425,"name":"FunctionDefinition","src":"6709:1358:30"},{"attributes":{"documentation":"@dev Getter for pending addition array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistAddition","scope":606,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":426,"name":"ParameterList","src":"8154:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":434,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":427,"name":"ElementaryTypeName","src":"8180:7:30"}],"id":428,"name":"ArrayTypeName","src":"8180:9:30"}],"id":429,"name":"VariableDeclaration","src":"8180:16:30"}],"id":430,"name":"ParameterList","src":"8179:18:30"},{"children":[{"attributes":{"functionReturnParameters":430},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":431,"name":"Identifier","src":"8215:25:30"}],"id":432,"name":"Return","src":"8208:32:30"}],"id":433,"name":"Block","src":"8198:49:30"}],"id":434,"name":"FunctionDefinition","src":"8121:126:30"},{"attributes":{"documentation":"@dev Getter for pending removal array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistRemoval","scope":606,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":435,"name":"ParameterList","src":"8332:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":443,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":436,"name":"ElementaryTypeName","src":"8358:7:30"}],"id":437,"name":"ArrayTypeName","src":"8358:9:30"}],"id":438,"name":"VariableDeclaration","src":"8358:16:30"}],"id":439,"name":"ParameterList","src":"8357:18:30"},{"children":[{"attributes":{"functionReturnParameters":439},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":440,"name":"Identifier","src":"8393:24:30"}],"id":441,"name":"Return","src":"8386:31:30"}],"id":442,"name":"Block","src":"8376:48:30"}],"id":443,"name":"FunctionDefinition","src":"8300:124:30"},{"attributes":{"documentation":"@dev Add initial addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"setWhitelist","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":508,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":444,"name":"ElementaryTypeName","src":"8577:7:30"}],"id":445,"name":"ArrayTypeName","src":"8577:9:30"}],"id":446,"name":"VariableDeclaration","src":"8577:29:30"}],"id":447,"name":"ParameterList","src":"8576:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":453,"name":"ParameterList","src":"8669:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":448,"name":"Identifier","src":"8617:15:30"}],"id":449,"name":"ModifierInvocation","src":"8617:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":165,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":450,"name":"Identifier","src":"8633:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":451,"name":"Identifier","src":"8657:10:30"}],"id":452,"name":"ModifierInvocation","src":"8633:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_072b1c10273a06de91a80d81d357e8bd73084529b5cc99d2ec03a7bf6d5fb2b9","typeString":"literal_string \"whitelist initialized\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":454,"name":"Identifier","src":"8743:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"bool","value":"isSetWhitelist"},"id":455,"name":"Identifier","src":"8752:14:30"}],"id":456,"name":"UnaryOperation","src":"8751:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c69737420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist initialized\"","value":"whitelist initialized"},"id":457,"name":"Literal","src":"8768:23:30"}],"id":458,"name":"FunctionCall","src":"8743:49:30"}],"id":459,"name":"ExpressionStatement","src":"8743:49:30"},{"children":[{"attributes":{"assignments":[461]},"children":[{"attributes":{"constant":false,"name":"i","scope":496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":460,"name":"ElementaryTypeName","src":"8871:7:30"}],"id":461,"name":"VariableDeclaration","src":"8871:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":462,"name":"Literal","src":"8883:1:30"}],"id":463,"name":"VariableDeclarationStatement","src":"8871:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":464,"name":"Identifier","src":"8886:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":465,"name":"Identifier","src":"8890:10:30"}],"id":466,"name":"MemberAccess","src":"8890:17:30"}],"id":467,"name":"BinaryOperation","src":"8886:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":468,"name":"Identifier","src":"8909:1:30"}],"id":469,"name":"UnaryOperation","src":"8909:3:30"}],"id":470,"name":"ExpressionStatement","src":"8909:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":471,"name":"Identifier","src":"8996:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":472,"name":"Identifier","src":"9009:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":473,"name":"Identifier","src":"9020:1:30"}],"id":474,"name":"IndexAccess","src":"9009:13:30"}],"id":475,"name":"IndexAccess","src":"8996:27:30"}],"id":476,"name":"UnaryOperation","src":"8995:28:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":477,"name":"Identifier","src":"9092:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":478,"name":"Identifier","src":"9105:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":479,"name":"Identifier","src":"9116:1:30"}],"id":480,"name":"IndexAccess","src":"9105:13:30"}],"id":481,"name":"IndexAccess","src":"9092:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":482,"name":"Literal","src":"9122:4:30"}],"id":483,"name":"Assignment","src":"9092:34:30"}],"id":484,"name":"ExpressionStatement","src":"9092:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":485,"name":"Identifier","src":"9191:14:30"}],"id":487,"name":"MemberAccess","src":"9191:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":488,"name":"Identifier","src":"9211:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":489,"name":"Identifier","src":"9222:1:30"}],"id":490,"name":"IndexAccess","src":"9211:13:30"}],"id":491,"name":"FunctionCall","src":"9191:34:30"}],"id":492,"name":"ExpressionStatement","src":"9191:34:30"}],"id":493,"name":"Block","src":"9025:215:30"}],"id":494,"name":"IfStatement","src":"8991:249:30"}],"id":495,"name":"Block","src":"8914:336:30"}],"id":496,"name":"ForStatement","src":"8866:384:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"bool","value":"isSetWhitelist"},"id":497,"name":"Identifier","src":"9259:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":498,"name":"Literal","src":"9276:4:30"}],"id":499,"name":"Assignment","src":"9259:21:30"}],"id":500,"name":"ExpressionStatement","src":"9259:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":72,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":501,"name":"Identifier","src":"9331:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":502,"name":"Identifier","src":"9348:3:30"}],"id":503,"name":"MemberAccess","src":"9348:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":504,"name":"Identifier","src":"9360:14:30"}],"id":505,"name":"FunctionCall","src":"9331:44:30"}],"id":506,"name":"EmitStatement","src":"9326:49:30"}],"id":507,"name":"Block","src":"8669:713:30"}],"id":508,"name":"FunctionDefinition","src":"8555:827:30"},{"attributes":{"documentation":"@dev Add addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistAddition","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":550,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":509,"name":"ElementaryTypeName","src":"9538:7:30"}],"id":510,"name":"ArrayTypeName","src":"9538:9:30"}],"id":511,"name":"VariableDeclaration","src":"9538:29:30"}],"id":512,"name":"ParameterList","src":"9537:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":520,"name":"ParameterList","src":"9649:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":513,"name":"Identifier","src":"9578:15:30"}],"id":514,"name":"ModifierInvocation","src":"9578:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":178,"type":"modifier ()","value":"noActiveSubmission"},"id":515,"name":"Identifier","src":"9594:18:30"}],"id":516,"name":"ModifierInvocation","src":"9594:18:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":165,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":517,"name":"Identifier","src":"9613:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":518,"name":"Identifier","src":"9637:10:30"}],"id":519,"name":"ModifierInvocation","src":"9613:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":521,"name":"Identifier","src":"9719:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"bool","value":"isSetWhitelist"},"id":522,"name":"Identifier","src":"9727:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":523,"name":"Literal","src":"9743:27:30"}],"id":524,"name":"FunctionCall","src":"9719:52:30"}],"id":525,"name":"ExpressionStatement","src":"9719:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":526,"name":"Identifier","src":"9834:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":527,"name":"Identifier","src":"9842:10:30"}],"id":528,"name":"MemberAccess","src":"9842:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":529,"name":"Literal","src":"9862:1:30"}],"id":530,"name":"BinaryOperation","src":"9842:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":531,"name":"Literal","src":"9865:17:30"}],"id":532,"name":"FunctionCall","src":"9834:49:30"}],"id":533,"name":"ExpressionStatement","src":"9834:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":534,"name":"Identifier","src":"9966:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":535,"name":"Identifier","src":"9994:10:30"}],"id":536,"name":"Assignment","src":"9966:38:30"}],"id":537,"name":"ExpressionStatement","src":"9966:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":538,"name":"Identifier","src":"10058:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":539,"name":"Literal","src":"10087:4:30"}],"id":540,"name":"Assignment","src":"10058:33:30"}],"id":541,"name":"ExpressionStatement","src":"10058:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistAddition"},"id":542,"name":"Identifier","src":"10144:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":543,"name":"Identifier","src":"10171:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":544,"name":"Identifier","src":"10183:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":545,"name":"Identifier","src":"10197:10:30"}],"id":546,"name":"FunctionCall","src":"10183:25:30"}],"id":547,"name":"FunctionCall","src":"10144:65:30"}],"id":548,"name":"EmitStatement","src":"10139:70:30"}],"id":549,"name":"Block","src":"9649:567:30"}],"id":550,"name":"FunctionDefinition","src":"9505:711:30"},{"attributes":{"documentation":"@dev Remove addresses from the whitelist.\n @param _addresses are the Ethereum addresses to be removed.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistRemoval","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":589,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":551,"name":"ElementaryTypeName","src":"10372:7:30"}],"id":552,"name":"ArrayTypeName","src":"10372:9:30"}],"id":553,"name":"VariableDeclaration","src":"10372:29:30"}],"id":554,"name":"ParameterList","src":"10371:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":559,"name":"ParameterList","src":"10447:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":555,"name":"Identifier","src":"10412:15:30"}],"id":556,"name":"ModifierInvocation","src":"10412:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":178,"type":"modifier ()","value":"noActiveSubmission"},"id":557,"name":"Identifier","src":"10428:18:30"}],"id":558,"name":"ModifierInvocation","src":"10428:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":560,"name":"Identifier","src":"10517:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"bool","value":"isSetWhitelist"},"id":561,"name":"Identifier","src":"10525:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":562,"name":"Literal","src":"10541:27:30"}],"id":563,"name":"FunctionCall","src":"10517:52:30"}],"id":564,"name":"ExpressionStatement","src":"10517:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":565,"name":"Identifier","src":"10639:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":553,"type":"address[] calldata","value":"_addresses"},"id":566,"name":"Identifier","src":"10647:10:30"}],"id":567,"name":"MemberAccess","src":"10647:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":568,"name":"Literal","src":"10667:1:30"}],"id":569,"name":"BinaryOperation","src":"10647:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":570,"name":"Literal","src":"10670:17:30"}],"id":571,"name":"FunctionCall","src":"10639:49:30"}],"id":572,"name":"ExpressionStatement","src":"10639:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":573,"name":"Identifier","src":"10766:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":553,"type":"address[] calldata","value":"_addresses"},"id":574,"name":"Identifier","src":"10793:10:30"}],"id":575,"name":"Assignment","src":"10766:37:30"}],"id":576,"name":"ExpressionStatement","src":"10766:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":577,"name":"Identifier","src":"10857:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":578,"name":"Literal","src":"10885:4:30"}],"id":579,"name":"Assignment","src":"10857:32:30"}],"id":580,"name":"ExpressionStatement","src":"10857:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":105,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistRemoval"},"id":581,"name":"Identifier","src":"10942:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":553,"type":"address[] calldata","value":"_addresses"},"id":582,"name":"Identifier","src":"10968:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":583,"name":"Identifier","src":"10980:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":553,"type":"address[] calldata","value":"_addresses"},"id":584,"name":"Identifier","src":"10994:10:30"}],"id":585,"name":"FunctionCall","src":"10980:25:30"}],"id":586,"name":"FunctionCall","src":"10942:64:30"}],"id":587,"name":"EmitStatement","src":"10937:69:30"}],"id":588,"name":"Block","src":"10447:566:30"}],"id":589,"name":"FunctionDefinition","src":"10340:673:30"},{"attributes":{"documentation":"@dev Method used to hash our whitelist address arrays.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"calculateHash","scope":606,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":605,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":590,"name":"ElementaryTypeName","src":"11105:7:30"}],"id":591,"name":"ArrayTypeName","src":"11105:9:30"}],"id":592,"name":"VariableDeclaration","src":"11105:27:30"}],"id":593,"name":"ParameterList","src":"11104:29:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":605,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":594,"name":"ElementaryTypeName","src":"11155:7:30"}],"id":595,"name":"VariableDeclaration","src":"11155:7:30"}],"id":596,"name":"ParameterList","src":"11154:9:30"},{"children":[{"attributes":{"functionReturnParameters":596},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":597,"name":"Identifier","src":"11181:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":598,"name":"Identifier","src":"11191:3:30"}],"id":599,"name":"MemberAccess","src":"11191:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":592,"type":"address[] memory","value":"_addresses"},"id":600,"name":"Identifier","src":"11208:10:30"}],"id":601,"name":"FunctionCall","src":"11191:28:30"}],"id":602,"name":"FunctionCall","src":"11181:39:30"}],"id":603,"name":"Return","src":"11174:46:30"}],"id":604,"name":"Block","src":"11164:63:30"}],"id":605,"name":"FunctionDefinition","src":"11082:145:30"}],"id":606,"name":"ContractDefinition","src":"2361:8868:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title DailyLimitTrait This trait allows for daily limits to be included in other contracts.\n This contract will allow for a DailyLimit object to be instantiated and used.","fullyImplemented":true,"linearizedBaseContracts":[808],"name":"DailyLimitTrait","scope":2184},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":607,"name":"UserDefinedTypeName","src":"11447:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":608,"name":"ElementaryTypeName","src":"11460:7:30"}],"id":609,"name":"UsingForDirective","src":"11441:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":610,"name":"ParameterList","src":"11501:2:30"}],"id":611,"name":"EventDefinition","src":"11474:30:30"},{"attributes":{"canonicalName":"DailyLimitTrait.DailyLimit","name":"DailyLimit","scope":808,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"value","scope":622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":612,"name":"ElementaryTypeName","src":"11538:7:30"}],"id":613,"name":"VariableDeclaration","src":"11538:13:30"},{"attributes":{"constant":false,"name":"available","scope":622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":614,"name":"ElementaryTypeName","src":"11561:7:30"}],"id":615,"name":"VariableDeclaration","src":"11561:17:30"},{"attributes":{"constant":false,"name":"limitTimestamp","scope":622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":616,"name":"ElementaryTypeName","src":"11588:7:30"}],"id":617,"name":"VariableDeclaration","src":"11588:22:30"},{"attributes":{"constant":false,"name":"pending","scope":622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":618,"name":"ElementaryTypeName","src":"11620:7:30"}],"id":619,"name":"VariableDeclaration","src":"11620:15:30"},{"attributes":{"constant":false,"name":"controllerConfirmationRequired","scope":622,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":620,"name":"ElementaryTypeName","src":"11645:4:30"}],"id":621,"name":"VariableDeclaration","src":"11645:35:30"}],"id":622,"name":"StructDefinition","src":"11510:177:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_confirmLimitUpdate","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":644,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":623,"name":"UserDefinedTypeName","src":"11778:10:30"}],"id":624,"name":"VariableDeclaration","src":"11778:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":644,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":625,"name":"ElementaryTypeName","src":"11803:7:30"}],"id":626,"name":"VariableDeclaration","src":"11803:15:30"}],"id":627,"name":"ParameterList","src":"11777:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":628,"name":"ParameterList","src":"11829:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51a99e4fe0e7ccb76d7b5ddb649e7516f5e27e1195b905cd87f22fbc56fc219b","typeString":"literal_string \"confirmed/submitted limit mismatch\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":629,"name":"Identifier","src":"11910:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":624,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":630,"name":"Identifier","src":"11918:4:30"}],"id":631,"name":"MemberAccess","src":"11918:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":626,"type":"uint256","value":"_amount"},"id":632,"name":"Identifier","src":"11934:7:30"}],"id":633,"name":"BinaryOperation","src":"11918:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"confirmed/submitted limit mismatch\"","value":"confirmed/submitted limit mismatch"},"id":634,"name":"Literal","src":"11943:36:30"}],"id":635,"name":"FunctionCall","src":"11910:70:30"}],"id":636,"name":"ExpressionStatement","src":"11910:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$622_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":730,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":637,"name":"Identifier","src":"12048:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":624,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":638,"name":"Identifier","src":"12061:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":624,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":639,"name":"Identifier","src":"12067:4:30"}],"id":640,"name":"MemberAccess","src":"12067:12:30"}],"id":641,"name":"FunctionCall","src":"12048:32:30"}],"id":642,"name":"ExpressionStatement","src":"12048:32:30"}],"id":643,"name":"Block","src":"11829:258:30"}],"id":644,"name":"FunctionDefinition","src":"11749:338:30"},{"attributes":{"documentation":"@dev Use up amount within the daily limit. Will fail if amount is larger than daily limit.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_enforceLimit","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":674,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":645,"name":"UserDefinedTypeName","src":"12215:10:30"}],"id":646,"name":"VariableDeclaration","src":"12215:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":647,"name":"ElementaryTypeName","src":"12240:7:30"}],"id":648,"name":"VariableDeclaration","src":"12240:15:30"}],"id":649,"name":"ParameterList","src":"12214:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":650,"name":"ParameterList","src":"12266:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$622_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":807,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":651,"name":"Identifier","src":"12328:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":646,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":652,"name":"Identifier","src":"12350:4:30"}],"id":653,"name":"FunctionCall","src":"12328:27:30"}],"id":654,"name":"ExpressionStatement","src":"12328:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76fdd6ba40b4885ab45b8708dbc1ff56b4ee0a701903e21ff02ec4fc90e97cfd","typeString":"literal_string \"available=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":646,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":656,"name":"Identifier","src":"12373:4:30"}],"id":657,"name":"MemberAccess","src":"12373:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":648,"type":"uint256","value":"_amount"},"id":658,"name":"Identifier","src":"12391:7:30"}],"id":659,"name":"BinaryOperation","src":"12373:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617661696c61626c653c616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"available","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":681,"name":"Identifier","src":"12751:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":617,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":676,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":682,"name":"Identifier","src":"12757:4:30"}],"id":683,"name":"MemberAccess","src":"12757:19:30"}],"id":684,"name":"MemberAccess","src":"12757:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":685,"name":"Literal","src":"12781:8:30"}],"id":686,"name":"FunctionCall","src":"12757:33:30"}],"id":687,"name":"BinaryOperation","src":"12751:39:30"},{"children":[{"attributes":{"functionReturnParameters":680},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":676,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":688,"name":"Identifier","src":"12813:4:30"}],"id":689,"name":"MemberAccess","src":"12813:10:30"}],"id":690,"name":"Return","src":"12806:17:30"}],"id":691,"name":"Block","src":"12792:42:30"},{"children":[{"attributes":{"functionReturnParameters":680},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":676,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":692,"name":"Identifier","src":"12861:4:30"}],"id":693,"name":"MemberAccess","src":"12861:14:30"}],"id":694,"name":"Return","src":"12854:21:30"}],"id":695,"name":"Block","src":"12840:46:30"}],"id":696,"name":"IfStatement","src":"12747:139:30"}],"id":697,"name":"Block","src":"12737:155:30"}],"id":698,"name":"FunctionDefinition","src":"12652:240:30"},{"attributes":{"documentation":"@dev Modify the spend limit and spend available based on the provided value.\n @dev _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_modifyLimit","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":730,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":699,"name":"UserDefinedTypeName","src":"13060:10:30"}],"id":700,"name":"VariableDeclaration","src":"13060:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":730,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":701,"name":"ElementaryTypeName","src":"13085:7:30"}],"id":702,"name":"VariableDeclaration","src":"13085:15:30"}],"id":703,"name":"ParameterList","src":"13059:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":704,"name":"ParameterList","src":"13110:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$622_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":807,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":705,"name":"Identifier","src":"13172:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":706,"name":"Identifier","src":"13194:4:30"}],"id":707,"name":"FunctionCall","src":"13172:27:30"}],"id":708,"name":"ExpressionStatement","src":"13172:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":709,"name":"Identifier","src":"13264:4:30"}],"id":711,"name":"MemberAccess","src":"13264:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":702,"type":"uint256","value":"_amount"},"id":712,"name":"Identifier","src":"13277:7:30"}],"id":713,"name":"Assignment","src":"13264:20:30"}],"id":714,"name":"ExpressionStatement","src":"13264:20:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":715,"name":"Identifier","src":"13376:4:30"}],"id":716,"name":"MemberAccess","src":"13376:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":717,"name":"Identifier","src":"13393:4:30"}],"id":718,"name":"MemberAccess","src":"13393:10:30"}],"id":719,"name":"BinaryOperation","src":"13376:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":720,"name":"Identifier","src":"13419:4:30"}],"id":722,"name":"MemberAccess","src":"13419:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":723,"name":"Identifier","src":"13436:4:30"}],"id":724,"name":"MemberAccess","src":"13436:10:30"}],"id":725,"name":"Assignment","src":"13419:27:30"}],"id":726,"name":"ExpressionStatement","src":"13419:27:30"}],"id":727,"name":"Block","src":"13405:52:30"}],"id":728,"name":"IfStatement","src":"13372:85:30"}],"id":729,"name":"Block","src":"13110:353:30"}],"id":730,"name":"FunctionDefinition","src":"13038:425:30"},{"attributes":{"documentation":"@dev Set the daily limit.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_setLimit","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":756,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":731,"name":"UserDefinedTypeName","src":"13586:10:30"}],"id":732,"name":"VariableDeclaration","src":"13586:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":733,"name":"ElementaryTypeName","src":"13611:7:30"}],"id":734,"name":"VariableDeclaration","src":"13611:15:30"}],"id":735,"name":"ParameterList","src":"13585:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":736,"name":"ParameterList","src":"13637:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5515161ef75a198a2c79d5b0927b7d4cad620073ea22f64fc9faac79dbcba501","typeString":"literal_string \"limit already set\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":737,"name":"Identifier","src":"13709:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":732,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":738,"name":"Identifier","src":"13718:4:30"}],"id":739,"name":"MemberAccess","src":"13718:35:30"}],"id":740,"name":"UnaryOperation","src":"13717:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d697420616c726561647920736574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit already set\"","value":"limit already set"},"id":741,"name":"Literal","src":"13755:19:30"}],"id":742,"name":"FunctionCall","src":"13709:66:30"}],"id":743,"name":"ExpressionStatement","src":"13709:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$622_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":730,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":744,"name":"Identifier","src":"13844:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":732,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":745,"name":"Identifier","src":"13857:4:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":734,"type":"uint256","value":"_amount"},"id":746,"name":"Identifier","src":"13863:7:30"}],"id":747,"name":"FunctionCall","src":"13844:27:30"}],"id":748,"name":"ExpressionStatement","src":"13844:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":732,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":749,"name":"Identifier","src":"13919:4:30"}],"id":751,"name":"MemberAccess","src":"13919:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":752,"name":"Literal","src":"13957:4:30"}],"id":753,"name":"Assignment","src":"13919:42:30"}],"id":754,"name":"ExpressionStatement","src":"13919:42:30"}],"id":755,"name":"Block","src":"13637:331:30"}],"id":756,"name":"FunctionDefinition","src":"13567:401:30"},{"attributes":{"documentation":"@dev Submit a daily limit update, needs to be confirmed.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_submitLimitUpdate","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":776,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":757,"name":"UserDefinedTypeName","src":"14131:10:30"}],"id":758,"name":"VariableDeclaration","src":"14131:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":759,"name":"ElementaryTypeName","src":"14156:7:30"}],"id":760,"name":"VariableDeclaration","src":"14156:15:30"}],"id":761,"name":"ParameterList","src":"14130:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":762,"name":"ParameterList","src":"14182:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d667d750d47924f17f0479d6107ac25f4e8879366a2d600f6b5ea07705c561f3","typeString":"literal_string \"limit hasn't been set yet\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":763,"name":"Identifier","src":"14246:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":758,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":764,"name":"Identifier","src":"14254:4:30"}],"id":765,"name":"MemberAccess","src":"14254:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d6974206861736e2774206265656e2073657420796574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit hasn't been set yet\"","value":"limit hasn't been set yet"},"id":766,"name":"Literal","src":"14291:27:30"}],"id":767,"name":"FunctionCall","src":"14246:73:30"}],"id":768,"name":"ExpressionStatement","src":"14246:73:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":758,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":769,"name":"Identifier","src":"14391:4:30"}],"id":771,"name":"MemberAccess","src":"14391:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":760,"type":"uint256","value":"_amount"},"id":772,"name":"Identifier","src":"14406:7:30"}],"id":773,"name":"Assignment","src":"14391:22:30"}],"id":774,"name":"ExpressionStatement","src":"14391:22:30"}],"id":775,"name":"Block","src":"14182:238:30"}],"id":776,"name":"FunctionDefinition","src":"14103:317:30"},{"attributes":{"documentation":"@dev Update available spend limit based on the daily reset.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateAvailableLimit","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":807,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":777,"name":"UserDefinedTypeName","src":"14525:10:30"}],"id":778,"name":"VariableDeclaration","src":"14525:23:30"}],"id":779,"name":"ParameterList","src":"14524:25:30"},{"attributes":{"parameters":[null]},"children":[],"id":780,"name":"ParameterList","src":"14558:0:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":781,"name":"Identifier","src":"14572:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":617,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":782,"name":"Identifier","src":"14578:4:30"}],"id":783,"name":"MemberAccess","src":"14578:19:30"}],"id":784,"name":"MemberAccess","src":"14578:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":785,"name":"Literal","src":"14602:8:30"}],"id":786,"name":"FunctionCall","src":"14578:33:30"}],"id":787,"name":"BinaryOperation","src":"14572:39:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"limitTimestamp","referencedDeclaration":617,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":788,"name":"Identifier","src":"14672:4:30"}],"id":790,"name":"MemberAccess","src":"14672:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":791,"name":"Identifier","src":"14694:3:30"}],"id":792,"name":"Assignment","src":"14672:25:30"}],"id":793,"name":"ExpressionStatement","src":"14672:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":794,"name":"Identifier","src":"14778:4:30"}],"id":796,"name":"MemberAccess","src":"14778:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":797,"name":"Identifier","src":"14795:4:30"}],"id":798,"name":"MemberAccess","src":"14795:10:30"}],"id":799,"name":"Assignment","src":"14778:27:30"}],"id":800,"name":"ExpressionStatement","src":"14778:27:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":611,"type":"function ()","value":"UpdatedAvailableLimit"},"id":801,"name":"Identifier","src":"14824:21:30"}],"id":802,"name":"FunctionCall","src":"14824:23:30"}],"id":803,"name":"EmitStatement","src":"14819:28:30"}],"id":804,"name":"Block","src":"14613:245:30"}],"id":805,"name":"IfStatement","src":"14568:290:30"}],"id":806,"name":"Block","src":"14558:306:30"}],"id":807,"name":"FunctionDefinition","src":"14494:370:30"}],"id":808,"name":"ContractDefinition","src":"11411:3455:30"},{"attributes":{"contractDependencies":[36,58,2826,2871,3028],"contractKind":"contract","documentation":"@title it provides daily spend limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[940,58,36,3028,2826,2871],"name":"SpendLimit","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":36,"type":"contract ControllableOwnable"},"id":809,"name":"UserDefinedTypeName","src":"14949:19:30"}],"id":810,"name":"InheritanceSpecifier","src":"14949:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":58,"type":"contract SelfCallableOwnable"},"id":811,"name":"UserDefinedTypeName","src":"14970:19:30"}],"id":812,"name":"InheritanceSpecifier","src":"14970:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetSpendLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":818,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":813,"name":"ElementaryTypeName","src":"15016:7:30"}],"id":814,"name":"VariableDeclaration","src":"15016:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":818,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":815,"name":"ElementaryTypeName","src":"15033:7:30"}],"id":816,"name":"VariableDeclaration","src":"15033:15:30"}],"id":817,"name":"ParameterList","src":"15015:34:30"}],"id":818,"name":"EventDefinition","src":"14996:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedSpendLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":822,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":819,"name":"ElementaryTypeName","src":"15087:7:30"}],"id":820,"name":"VariableDeclaration","src":"15087:15:30"}],"id":821,"name":"ParameterList","src":"15086:17:30"}],"id":822,"name":"EventDefinition","src":"15055:49:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":808,"type":"library DailyLimitTrait"},"id":823,"name":"UserDefinedTypeName","src":"15116:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":824,"name":"UserDefinedTypeName","src":"15136:26:30"}],"id":825,"name":"UsingForDirective","src":"15110:53:30"},{"attributes":{"constant":false,"name":"_spendLimit","scope":940,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":826,"name":"UserDefinedTypeName","src":"15169:26:30"}],"id":827,"name":"VariableDeclaration","src":"15169:47:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily spend limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":940,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_limit_","scope":844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":828,"name":"ElementaryTypeName","src":"15302:7:30"}],"id":829,"name":"VariableDeclaration","src":"15302:15:30"}],"id":830,"name":"ParameterList","src":"15301:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":831,"name":"ParameterList","src":"15328:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":832,"name":"Identifier","src":"15338:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":622,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":808,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":833,"name":"Identifier","src":"15352:15:30"}],"id":834,"name":"MemberAccess","src":"15352:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":829,"type":"uint256","value":"_limit_"},"id":835,"name":"Identifier","src":"15379:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":829,"type":"uint256","value":"_limit_"},"id":836,"name":"Identifier","src":"15388:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":837,"name":"Identifier","src":"15397:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":838,"name":"Literal","src":"15402:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":839,"name":"Literal","src":"15405:5:30"}],"id":840,"name":"FunctionCall","src":"15352:59:30"}],"id":841,"name":"Assignment","src":"15338:73:30"}],"id":842,"name":"ExpressionStatement","src":"15338:73:30"}],"id":843,"name":"Block","src":"15328:90:30"}],"id":844,"name":"FunctionDefinition","src":"15290:128:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmSpendLimitUpdate","scope":940,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":864,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":845,"name":"ElementaryTypeName","src":"15513:7:30"}],"id":846,"name":"VariableDeclaration","src":"15513:15:30"}],"id":847,"name":"ParameterList","src":"15512:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":850,"name":"ParameterList","src":"15554:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":848,"name":"Identifier","src":"15539:14:30"}],"id":849,"name":"ModifierInvocation","src":"15539:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":644,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":851,"name":"Identifier","src":"15564:11:30"}],"id":853,"name":"MemberAccess","src":"15564:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":846,"type":"uint256","value":"_amount"},"id":854,"name":"Identifier","src":"15596:7:30"}],"id":855,"name":"FunctionCall","src":"15564:40:30"}],"id":856,"name":"ExpressionStatement","src":"15564:40:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":857,"name":"Identifier","src":"15619:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":858,"name":"Identifier","src":"15633:3:30"}],"id":859,"name":"MemberAccess","src":"15633:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":846,"type":"uint256","value":"_amount"},"id":860,"name":"Identifier","src":"15645:7:30"}],"id":861,"name":"FunctionCall","src":"15619:34:30"}],"id":862,"name":"EmitStatement","src":"15614:39:30"}],"id":863,"name":"Block","src":"15554:106:30"}],"id":864,"name":"FunctionDefinition","src":"15480:180:30"},{"attributes":{"documentation":"@dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setSpendLimit","scope":940,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":884,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":865,"name":"ElementaryTypeName","src":"15840:7:30"}],"id":866,"name":"VariableDeclaration","src":"15840:15:30"}],"id":867,"name":"ParameterList","src":"15839:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":870,"name":"ParameterList","src":"15882:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":868,"name":"Identifier","src":"15866:15:30"}],"id":869,"name":"ModifierInvocation","src":"15866:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":756,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":871,"name":"Identifier","src":"15892:11:30"}],"id":873,"name":"MemberAccess","src":"15892:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":866,"type":"uint256","value":"_amount"},"id":874,"name":"Identifier","src":"15914:7:30"}],"id":875,"name":"FunctionCall","src":"15892:30:30"}],"id":876,"name":"ExpressionStatement","src":"15892:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":877,"name":"Identifier","src":"15937:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":878,"name":"Identifier","src":"15951:3:30"}],"id":879,"name":"MemberAccess","src":"15951:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":866,"type":"uint256","value":"_amount"},"id":880,"name":"Identifier","src":"15963:7:30"}],"id":881,"name":"FunctionCall","src":"15937:34:30"}],"id":882,"name":"EmitStatement","src":"15932:39:30"}],"id":883,"name":"Block","src":"15882:96:30"}],"id":884,"name":"FunctionDefinition","src":"15817:161:30"},{"attributes":{"documentation":"@dev View your available limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitAvailable","scope":940,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":885,"name":"ParameterList","src":"16051:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":886,"name":"ElementaryTypeName","src":"16077:7:30"}],"id":887,"name":"VariableDeclaration","src":"16077:7:30"}],"id":888,"name":"ParameterList","src":"16076:9:30"},{"children":[{"attributes":{"functionReturnParameters":888},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":698,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":889,"name":"Identifier","src":"16103:11:30"}],"id":890,"name":"MemberAccess","src":"16103:30:30"}],"id":891,"name":"FunctionCall","src":"16103:32:30"}],"id":892,"name":"Return","src":"16096:39:30"}],"id":893,"name":"Block","src":"16086:56:30"}],"id":894,"name":"FunctionDefinition","src":"16023:119:30"},{"attributes":{"documentation":"@dev Is there an active spend limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitPending","scope":940,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":895,"name":"ParameterList","src":"16225:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":903,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":896,"name":"ElementaryTypeName","src":"16251:7:30"}],"id":897,"name":"VariableDeclaration","src":"16251:7:30"}],"id":898,"name":"ParameterList","src":"16250:9:30"},{"children":[{"attributes":{"functionReturnParameters":898},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":899,"name":"Identifier","src":"16277:11:30"}],"id":900,"name":"MemberAccess","src":"16277:19:30"}],"id":901,"name":"Return","src":"16270:26:30"}],"id":902,"name":"Block","src":"16260:43:30"}],"id":903,"name":"FunctionDefinition","src":"16199:104:30"},{"attributes":{"documentation":"@dev Has the spend limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitControllerConfirmationRequired","scope":940,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":904,"name":"ParameterList","src":"16408:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":912,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":905,"name":"ElementaryTypeName","src":"16434:4:30"}],"id":906,"name":"VariableDeclaration","src":"16434:4:30"}],"id":907,"name":"ParameterList","src":"16433:6:30"},{"children":[{"attributes":{"functionReturnParameters":907},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":908,"name":"Identifier","src":"16457:11:30"}],"id":909,"name":"MemberAccess","src":"16457:42:30"}],"id":910,"name":"Return","src":"16450:49:30"}],"id":911,"name":"Block","src":"16440:66:30"}],"id":912,"name":"FunctionDefinition","src":"16359:147:30"},{"attributes":{"documentation":"@dev View how much has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitValue","scope":940,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":913,"name":"ParameterList","src":"16586:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":921,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":914,"name":"ElementaryTypeName","src":"16612:7:30"}],"id":915,"name":"VariableDeclaration","src":"16612:7:30"}],"id":916,"name":"ParameterList","src":"16611:9:30"},{"children":[{"attributes":{"functionReturnParameters":916},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":917,"name":"Identifier","src":"16638:11:30"}],"id":918,"name":"MemberAccess","src":"16638:17:30"}],"id":919,"name":"Return","src":"16631:24:30"}],"id":920,"name":"Block","src":"16621:41:30"}],"id":921,"name":"FunctionDefinition","src":"16562:100:30"},{"attributes":{"documentation":"@dev Submit a daily transfer limit update for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitSpendLimitUpdate","scope":940,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":922,"name":"ElementaryTypeName","src":"16838:7:30"}],"id":923,"name":"VariableDeclaration","src":"16838:15:30"}],"id":924,"name":"ParameterList","src":"16837:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":927,"name":"ParameterList","src":"16880:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":925,"name":"Identifier","src":"16864:15:30"}],"id":926,"name":"ModifierInvocation","src":"16864:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":776,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":928,"name":"Identifier","src":"16890:11:30"}],"id":930,"name":"MemberAccess","src":"16890:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":923,"type":"uint256","value":"_amount"},"id":931,"name":"Identifier","src":"16921:7:30"}],"id":932,"name":"FunctionCall","src":"16890:39:30"}],"id":933,"name":"ExpressionStatement","src":"16890:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"function (uint256)","value":"SubmittedSpendLimitUpdate"},"id":934,"name":"Identifier","src":"16944:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":923,"type":"uint256","value":"_amount"},"id":935,"name":"Identifier","src":"16970:7:30"}],"id":936,"name":"FunctionCall","src":"16944:34:30"}],"id":937,"name":"EmitStatement","src":"16939:39:30"}],"id":938,"name":"Block","src":"16880:105:30"}],"id":939,"name":"FunctionDefinition","src":"16806:179:30"}],"id":940,"name":"ContractDefinition","src":"14926:2061:30"},{"attributes":{"contractDependencies":[36,58,2826,2871,3028],"contractKind":"contract","documentation":"@title GasTopUpLimit provides daily limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1098,58,36,3028,2826,2871],"name":"GasTopUpLimit","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":36,"type":"contract ControllableOwnable"},"id":941,"name":"UserDefinedTypeName","src":"17077:19:30"}],"id":942,"name":"InheritanceSpecifier","src":"17077:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":58,"type":"contract SelfCallableOwnable"},"id":943,"name":"UserDefinedTypeName","src":"17098:19:30"}],"id":944,"name":"InheritanceSpecifier","src":"17098:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetGasTopUpLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":950,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":945,"name":"ElementaryTypeName","src":"17147:7:30"}],"id":946,"name":"VariableDeclaration","src":"17147:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":950,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":947,"name":"ElementaryTypeName","src":"17164:7:30"}],"id":948,"name":"VariableDeclaration","src":"17164:15:30"}],"id":949,"name":"ParameterList","src":"17146:34:30"}],"id":950,"name":"EventDefinition","src":"17124:57:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedGasTopUpLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":954,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":951,"name":"ElementaryTypeName","src":"17221:7:30"}],"id":952,"name":"VariableDeclaration","src":"17221:15:30"}],"id":953,"name":"ParameterList","src":"17220:17:30"}],"id":954,"name":"EventDefinition","src":"17186:52:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_GAS_TOPUP_LIMIT","scope":1098,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":955,"name":"ElementaryTypeName","src":"17244:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"353030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 500000000000000000","value":"500"},"id":956,"name":"Literal","src":"17296:10:30"}],"id":957,"name":"VariableDeclaration","src":"17244:62:30"},{"attributes":{"constant":true,"name":"_MINIMUM_GAS_TOPUP_LIMIT","scope":1098,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":958,"name":"ElementaryTypeName","src":"17312:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 1000000000000000","value":"1"},"id":959,"name":"Literal","src":"17364:8:30"}],"id":960,"name":"VariableDeclaration","src":"17312:60:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":808,"type":"library DailyLimitTrait"},"id":961,"name":"UserDefinedTypeName","src":"17385:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":962,"name":"UserDefinedTypeName","src":"17405:26:30"}],"id":963,"name":"UsingForDirective","src":"17379:53:30"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":1098,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":964,"name":"UserDefinedTypeName","src":"17438:26:30"}],"id":965,"name":"VariableDeclaration","src":"17438:50:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily gas topup limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1098,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":966,"name":"ParameterList","src":"17577:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":967,"name":"ParameterList","src":"17589:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":968,"name":"Identifier","src":"17599:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":622,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":808,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":969,"name":"Identifier","src":"17616:15:30"}],"id":970,"name":"MemberAccess","src":"17616:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":957,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":971,"name":"Identifier","src":"17643:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":957,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":972,"name":"Identifier","src":"17669:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":973,"name":"Identifier","src":"17695:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":974,"name":"Literal","src":"17700:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":975,"name":"Literal","src":"17703:5:30"}],"id":976,"name":"FunctionCall","src":"17616:93:30"}],"id":977,"name":"Assignment","src":"17599:110:30"}],"id":978,"name":"ExpressionStatement","src":"17599:110:30"}],"id":979,"name":"Block","src":"17589:127:30"}],"id":980,"name":"FunctionDefinition","src":"17566:150:30"},{"attributes":{"documentation":"@dev Confirm pending set top up gas limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmGasTopUpLimitUpdate","scope":1098,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1000,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":981,"name":"ElementaryTypeName","src":"17819:7:30"}],"id":982,"name":"VariableDeclaration","src":"17819:15:30"}],"id":983,"name":"ParameterList","src":"17818:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":986,"name":"ParameterList","src":"17860:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":984,"name":"Identifier","src":"17845:14:30"}],"id":985,"name":"ModifierInvocation","src":"17845:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":644,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":987,"name":"Identifier","src":"17870:14:30"}],"id":989,"name":"MemberAccess","src":"17870:34:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":982,"type":"uint256","value":"_amount"},"id":990,"name":"Identifier","src":"17905:7:30"}],"id":991,"name":"FunctionCall","src":"17870:43:30"}],"id":992,"name":"ExpressionStatement","src":"17870:43:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":993,"name":"Identifier","src":"17928:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":994,"name":"Identifier","src":"17945:3:30"}],"id":995,"name":"MemberAccess","src":"17945:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":982,"type":"uint256","value":"_amount"},"id":996,"name":"Identifier","src":"17957:7:30"}],"id":997,"name":"FunctionCall","src":"17928:37:30"}],"id":998,"name":"EmitStatement","src":"17923:42:30"}],"id":999,"name":"Block","src":"17860:112:30"}],"id":1000,"name":"FunctionDefinition","src":"17783:189:30"},{"attributes":{"documentation":"@dev View your available gas top-up limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitAvailable","scope":1098,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1001,"name":"ParameterList","src":"18059:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1010,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1002,"name":"ElementaryTypeName","src":"18085:7:30"}],"id":1003,"name":"VariableDeclaration","src":"18085:7:30"}],"id":1004,"name":"ParameterList","src":"18084:9:30"},{"children":[{"attributes":{"functionReturnParameters":1004},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":698,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1005,"name":"Identifier","src":"18111:14:30"}],"id":1006,"name":"MemberAccess","src":"18111:33:30"}],"id":1007,"name":"FunctionCall","src":"18111:35:30"}],"id":1008,"name":"Return","src":"18104:42:30"}],"id":1009,"name":"Block","src":"18094:59:30"}],"id":1010,"name":"FunctionDefinition","src":"18028:125:30"},{"attributes":{"documentation":"@dev Is there an active gas top-up limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitPending","scope":1098,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1011,"name":"ParameterList","src":"18244:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1019,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1012,"name":"ElementaryTypeName","src":"18270:7:30"}],"id":1013,"name":"VariableDeclaration","src":"18270:7:30"}],"id":1014,"name":"ParameterList","src":"18269:9:30"},{"children":[{"attributes":{"functionReturnParameters":1014},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1015,"name":"Identifier","src":"18296:14:30"}],"id":1016,"name":"MemberAccess","src":"18296:22:30"}],"id":1017,"name":"Return","src":"18289:29:30"}],"id":1018,"name":"Block","src":"18279:46:30"}],"id":1019,"name":"FunctionDefinition","src":"18215:110:30"},{"attributes":{"documentation":"@dev Has the gas top-up limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitControllerConfirmationRequired","scope":1098,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1020,"name":"ParameterList","src":"18438:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1028,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1021,"name":"ElementaryTypeName","src":"18464:4:30"}],"id":1022,"name":"VariableDeclaration","src":"18464:4:30"}],"id":1023,"name":"ParameterList","src":"18463:6:30"},{"children":[{"attributes":{"functionReturnParameters":1023},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1024,"name":"Identifier","src":"18487:14:30"}],"id":1025,"name":"MemberAccess","src":"18487:45:30"}],"id":1026,"name":"Return","src":"18480:52:30"}],"id":1027,"name":"Block","src":"18470:69:30"}],"id":1028,"name":"FunctionDefinition","src":"18386:153:30"},{"attributes":{"documentation":"@dev View how much gas top-up has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitValue","scope":1098,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1029,"name":"ParameterList","src":"18633:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1037,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1030,"name":"ElementaryTypeName","src":"18659:7:30"}],"id":1031,"name":"VariableDeclaration","src":"18659:7:30"}],"id":1032,"name":"ParameterList","src":"18658:9:30"},{"children":[{"attributes":{"functionReturnParameters":1032},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1033,"name":"Identifier","src":"18685:14:30"}],"id":1034,"name":"MemberAccess","src":"18685:20:30"}],"id":1035,"name":"Return","src":"18678:27:30"}],"id":1036,"name":"Block","src":"18668:44:30"}],"id":1037,"name":"FunctionDefinition","src":"18606:106:30"},{"attributes":{"documentation":"@dev Sets the daily gas top up limit.\n @param _amount is the gas top up amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setGasTopUpLimit","scope":1098,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1038,"name":"ElementaryTypeName","src":"18846:7:30"}],"id":1039,"name":"VariableDeclaration","src":"18846:15:30"}],"id":1040,"name":"ParameterList","src":"18845:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1043,"name":"ParameterList","src":"18888:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1041,"name":"Identifier","src":"18872:15:30"}],"id":1042,"name":"ModifierInvocation","src":"18872:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1044,"name":"Identifier","src":"18898:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":960,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1045,"name":"Identifier","src":"18906:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"uint256","value":"_amount"},"id":1046,"name":"Identifier","src":"18934:7:30"}],"id":1047,"name":"BinaryOperation","src":"18906:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"uint256","value":"_amount"},"id":1048,"name":"Identifier","src":"18945:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":957,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1049,"name":"Identifier","src":"18956:24:30"}],"id":1050,"name":"BinaryOperation","src":"18945:35:30"}],"id":1051,"name":"BinaryOperation","src":"18906:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1052,"name":"Literal","src":"18982:21:30"}],"id":1053,"name":"FunctionCall","src":"18898:106:30"}],"id":1054,"name":"ExpressionStatement","src":"18898:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":756,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1055,"name":"Identifier","src":"19014:14:30"}],"id":1057,"name":"MemberAccess","src":"19014:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"uint256","value":"_amount"},"id":1058,"name":"Identifier","src":"19039:7:30"}],"id":1059,"name":"FunctionCall","src":"19014:33:30"}],"id":1060,"name":"ExpressionStatement","src":"19014:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1061,"name":"Identifier","src":"19062:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1062,"name":"Identifier","src":"19079:3:30"}],"id":1063,"name":"MemberAccess","src":"19079:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"uint256","value":"_amount"},"id":1064,"name":"Identifier","src":"19091:7:30"}],"id":1065,"name":"FunctionCall","src":"19062:37:30"}],"id":1066,"name":"EmitStatement","src":"19057:42:30"}],"id":1067,"name":"Block","src":"18888:218:30"}],"id":1068,"name":"FunctionDefinition","src":"18820:286:30"},{"attributes":{"documentation":"@dev Submit a daily gas top up limit update.\n @param _amount is the daily top up gas limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitGasTopUpLimitUpdate","scope":1098,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1097,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1069,"name":"ElementaryTypeName","src":"19268:7:30"}],"id":1070,"name":"VariableDeclaration","src":"19268:15:30"}],"id":1071,"name":"ParameterList","src":"19267:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1074,"name":"ParameterList","src":"19310:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1072,"name":"Identifier","src":"19294:15:30"}],"id":1073,"name":"ModifierInvocation","src":"19294:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1075,"name":"Identifier","src":"19320:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":960,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1076,"name":"Identifier","src":"19328:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"_amount"},"id":1077,"name":"Identifier","src":"19356:7:30"}],"id":1078,"name":"BinaryOperation","src":"19328:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"_amount"},"id":1079,"name":"Identifier","src":"19367:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":957,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1080,"name":"Identifier","src":"19378:24:30"}],"id":1081,"name":"BinaryOperation","src":"19367:35:30"}],"id":1082,"name":"BinaryOperation","src":"19328:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1083,"name":"Literal","src":"19404:21:30"}],"id":1084,"name":"FunctionCall","src":"19320:106:30"}],"id":1085,"name":"ExpressionStatement","src":"19320:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":776,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1086,"name":"Identifier","src":"19436:14:30"}],"id":1088,"name":"MemberAccess","src":"19436:33:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"_amount"},"id":1089,"name":"Identifier","src":"19470:7:30"}],"id":1090,"name":"FunctionCall","src":"19436:42:30"}],"id":1091,"name":"ExpressionStatement","src":"19436:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":954,"type":"function (uint256)","value":"SubmittedGasTopUpLimitUpdate"},"id":1092,"name":"Identifier","src":"19493:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"_amount"},"id":1093,"name":"Identifier","src":"19522:7:30"}],"id":1094,"name":"FunctionCall","src":"19493:37:30"}],"id":1095,"name":"EmitStatement","src":"19488:42:30"}],"id":1096,"name":"Block","src":"19310:227:30"}],"id":1097,"name":"FunctionDefinition","src":"19233:304:30"}],"id":1098,"name":"ContractDefinition","src":"17051:2488:30"},{"attributes":{"contractDependencies":[36,58,2826,2871,3028,3245],"contractKind":"contract","documentation":"@title LoadLimit provides daily load limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1272,3245,58,36,3028,2826,2871],"name":"LoadLimit","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":36,"type":"contract ControllableOwnable"},"id":1099,"name":"UserDefinedTypeName","src":"19626:19:30"}],"id":1100,"name":"InheritanceSpecifier","src":"19626:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":58,"type":"contract SelfCallableOwnable"},"id":1101,"name":"UserDefinedTypeName","src":"19647:19:30"}],"id":1102,"name":"InheritanceSpecifier","src":"19647:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":3245,"type":"contract TokenWhitelistable"},"id":1103,"name":"UserDefinedTypeName","src":"19668:18:30"}],"id":1104,"name":"InheritanceSpecifier","src":"19668:18:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetLoadLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1110,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1105,"name":"ElementaryTypeName","src":"19712:7:30"}],"id":1106,"name":"VariableDeclaration","src":"19712:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1107,"name":"ElementaryTypeName","src":"19729:7:30"}],"id":1108,"name":"VariableDeclaration","src":"19729:15:30"}],"id":1109,"name":"ParameterList","src":"19711:34:30"}],"id":1110,"name":"EventDefinition","src":"19693:53:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedLoadLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1114,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1111,"name":"ElementaryTypeName","src":"19782:7:30"}],"id":1112,"name":"VariableDeclaration","src":"19782:15:30"}],"id":1113,"name":"ParameterList","src":"19781:17:30"}],"id":1114,"name":"EventDefinition","src":"19751:48:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_STABLECOIN_LOAD_LIMIT","scope":1272,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1115,"name":"ElementaryTypeName","src":"19805:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000","value":"10000"},"id":1116,"name":"Literal","src":"19863:5:30"}],"id":1117,"name":"VariableDeclaration","src":"19805:63:30"},{"attributes":{"constant":false,"name":"_maximumLoadLimit","scope":1272,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1118,"name":"ElementaryTypeName","src":"19881:7:30"}],"id":1119,"name":"VariableDeclaration","src":"19881:33:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":808,"type":"library DailyLimitTrait"},"id":1120,"name":"UserDefinedTypeName","src":"19927:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":1121,"name":"UserDefinedTypeName","src":"19947:26:30"}],"id":1122,"name":"UsingForDirective","src":"19921:53:30"},{"attributes":{"constant":false,"name":"_loadLimit","scope":1272,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":1123,"name":"UserDefinedTypeName","src":"19980:26:30"}],"id":1124,"name":"VariableDeclaration","src":"19980:46:30"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1272,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1162,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1125,"name":"ElementaryTypeName","src":"20045:7:30"}],"id":1126,"name":"VariableDeclaration","src":"20045:28:30"}],"id":1127,"name":"ParameterList","src":"20044:30:30"},{"attributes":{"parameters":[null]},"children":[],"id":1131,"name":"ParameterList","src":"20125:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3245,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":1128,"name":"Identifier","src":"20084:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1126,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1129,"name":"Identifier","src":"20103:20:30"}],"id":1130,"name":"ModifierInvocation","src":"20084:40:30"},{"children":[{"attributes":{"assignments":[null,1133,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1161,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1132,"name":"ElementaryTypeName","src":"20138:7:30"}],"id":1133,"name":"VariableDeclaration","src":"20138:27:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3109,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1134,"name":"Identifier","src":"20179:18:30"}],"id":1135,"name":"FunctionCall","src":"20179:20:30"}],"id":1136,"name":"VariableDeclarationStatement","src":"20135:64:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e91ed084014006e202586b158c3035ec40db0f637c146d3fdad49cda6c7a17a","typeString":"literal_string \"no stablecoin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1137,"name":"Identifier","src":"20209:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"stablecoinMagnitude"},"id":1138,"name":"Identifier","src":"20217:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1139,"name":"Literal","src":"20239:1:30"}],"id":1140,"name":"BinaryOperation","src":"20217:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20737461626c65636f696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no stablecoin\"","value":"no stablecoin"},"id":1141,"name":"Literal","src":"20242:15:30"}],"id":1142,"name":"FunctionCall","src":"20209:49:30"}],"id":1143,"name":"ExpressionStatement","src":"20209:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1144,"name":"Identifier","src":"20268:17:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"uint256","value":"_MAXIMUM_STABLECOIN_LOAD_LIMIT"},"id":1145,"name":"Identifier","src":"20288:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"stablecoinMagnitude"},"id":1146,"name":"Identifier","src":"20321:19:30"}],"id":1147,"name":"BinaryOperation","src":"20288:52:30"}],"id":1148,"name":"Assignment","src":"20268:72:30"}],"id":1149,"name":"ExpressionStatement","src":"20268:72:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1150,"name":"Identifier","src":"20350:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":622,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":808,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1151,"name":"Identifier","src":"20363:15:30"}],"id":1152,"name":"MemberAccess","src":"20363:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1153,"name":"Identifier","src":"20390:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1154,"name":"Identifier","src":"20409:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":1155,"name":"Identifier","src":"20428:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1156,"name":"Literal","src":"20433:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1157,"name":"Literal","src":"20436:5:30"}],"id":1158,"name":"FunctionCall","src":"20363:79:30"}],"id":1159,"name":"Assignment","src":"20350:92:30"}],"id":1160,"name":"ExpressionStatement","src":"20350:92:30"}],"id":1161,"name":"Block","src":"20125:324:30"}],"id":1162,"name":"FunctionDefinition","src":"20033:416:30"},{"attributes":{"documentation":"@dev Sets a daily card load limit.\n @param _amount is the card load amount in current stablecoin base units.","implemented":true,"isConstructor":false,"kind":"function","name":"setLoadLimit","scope":1272,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1189,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1163,"name":"ElementaryTypeName","src":"20601:7:30"}],"id":1164,"name":"VariableDeclaration","src":"20601:15:30"}],"id":1165,"name":"ParameterList","src":"20600:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1168,"name":"ParameterList","src":"20643:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1166,"name":"Identifier","src":"20627:15:30"}],"id":1167,"name":"ModifierInvocation","src":"20627:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1169,"name":"Identifier","src":"20653:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1164,"type":"uint256","value":"_amount"},"id":1170,"name":"Identifier","src":"20661:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1171,"name":"Identifier","src":"20672:17:30"}],"id":1172,"name":"BinaryOperation","src":"20661:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1173,"name":"Literal","src":"20691:26:30"}],"id":1174,"name":"FunctionCall","src":"20653:65:30"}],"id":1175,"name":"ExpressionStatement","src":"20653:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":756,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1176,"name":"Identifier","src":"20728:10:30"}],"id":1178,"name":"MemberAccess","src":"20728:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1164,"type":"uint256","value":"_amount"},"id":1179,"name":"Identifier","src":"20749:7:30"}],"id":1180,"name":"FunctionCall","src":"20728:29:30"}],"id":1181,"name":"ExpressionStatement","src":"20728:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1110,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1182,"name":"Identifier","src":"20772:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1183,"name":"Identifier","src":"20785:3:30"}],"id":1184,"name":"MemberAccess","src":"20785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1164,"type":"uint256","value":"_amount"},"id":1185,"name":"Identifier","src":"20797:7:30"}],"id":1186,"name":"FunctionCall","src":"20772:33:30"}],"id":1187,"name":"EmitStatement","src":"20767:38:30"}],"id":1188,"name":"Block","src":"20643:169:30"}],"id":1189,"name":"FunctionDefinition","src":"20579:233:30"},{"attributes":{"documentation":"@dev Submit a daily load limit update.\n @param _amount is the daily load limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitLoadLimitUpdate","scope":1272,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1214,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1190,"name":"ElementaryTypeName","src":"20958:7:30"}],"id":1191,"name":"VariableDeclaration","src":"20958:15:30"}],"id":1192,"name":"ParameterList","src":"20957:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1195,"name":"ParameterList","src":"21000:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1193,"name":"Identifier","src":"20984:15:30"}],"id":1194,"name":"ModifierInvocation","src":"20984:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1196,"name":"Identifier","src":"21010:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1191,"type":"uint256","value":"_amount"},"id":1197,"name":"Identifier","src":"21018:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1198,"name":"Identifier","src":"21029:17:30"}],"id":1199,"name":"BinaryOperation","src":"21018:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1200,"name":"Literal","src":"21048:26:30"}],"id":1201,"name":"FunctionCall","src":"21010:65:30"}],"id":1202,"name":"ExpressionStatement","src":"21010:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":776,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1203,"name":"Identifier","src":"21085:10:30"}],"id":1205,"name":"MemberAccess","src":"21085:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1191,"type":"uint256","value":"_amount"},"id":1206,"name":"Identifier","src":"21115:7:30"}],"id":1207,"name":"FunctionCall","src":"21085:38:30"}],"id":1208,"name":"ExpressionStatement","src":"21085:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"function (uint256)","value":"SubmittedLoadLimitUpdate"},"id":1209,"name":"Identifier","src":"21138:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1191,"type":"uint256","value":"_amount"},"id":1210,"name":"Identifier","src":"21163:7:30"}],"id":1211,"name":"FunctionCall","src":"21138:33:30"}],"id":1212,"name":"EmitStatement","src":"21133:38:30"}],"id":1213,"name":"Block","src":"21000:178:30"}],"id":1214,"name":"FunctionDefinition","src":"20927:251:30"},{"attributes":{"documentation":"@dev Confirm pending set load limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmLoadLimitUpdate","scope":1272,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1215,"name":"ElementaryTypeName","src":"21271:7:30"}],"id":1216,"name":"VariableDeclaration","src":"21271:15:30"}],"id":1217,"name":"ParameterList","src":"21270:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1220,"name":"ParameterList","src":"21312:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":1218,"name":"Identifier","src":"21297:14:30"}],"id":1219,"name":"ModifierInvocation","src":"21297:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":644,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1221,"name":"Identifier","src":"21322:10:30"}],"id":1223,"name":"MemberAccess","src":"21322:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"_amount"},"id":1224,"name":"Identifier","src":"21353:7:30"}],"id":1225,"name":"FunctionCall","src":"21322:39:30"}],"id":1226,"name":"ExpressionStatement","src":"21322:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1110,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1227,"name":"Identifier","src":"21376:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1228,"name":"Identifier","src":"21389:3:30"}],"id":1229,"name":"MemberAccess","src":"21389:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"_amount"},"id":1230,"name":"Identifier","src":"21401:7:30"}],"id":1231,"name":"FunctionCall","src":"21376:33:30"}],"id":1232,"name":"EmitStatement","src":"21371:38:30"}],"id":1233,"name":"Block","src":"21312:104:30"}],"id":1234,"name":"FunctionDefinition","src":"21239:177:30"},{"attributes":{"documentation":"@dev View your available load limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitAvailable","scope":1272,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1235,"name":"ParameterList","src":"21493:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1236,"name":"ElementaryTypeName","src":"21519:7:30"}],"id":1237,"name":"VariableDeclaration","src":"21519:7:30"}],"id":1238,"name":"ParameterList","src":"21518:9:30"},{"children":[{"attributes":{"functionReturnParameters":1238},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":698,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1239,"name":"Identifier","src":"21545:10:30"}],"id":1240,"name":"MemberAccess","src":"21545:29:30"}],"id":1241,"name":"FunctionCall","src":"21545:31:30"}],"id":1242,"name":"Return","src":"21538:38:30"}],"id":1243,"name":"Block","src":"21528:55:30"}],"id":1244,"name":"FunctionDefinition","src":"21466:117:30"},{"attributes":{"documentation":"@dev Is there an active load limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitPending","scope":1272,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1245,"name":"ParameterList","src":"21664:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1253,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1246,"name":"ElementaryTypeName","src":"21690:7:30"}],"id":1247,"name":"VariableDeclaration","src":"21690:7:30"}],"id":1248,"name":"ParameterList","src":"21689:9:30"},{"children":[{"attributes":{"functionReturnParameters":1248},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1249,"name":"Identifier","src":"21716:10:30"}],"id":1250,"name":"MemberAccess","src":"21716:18:30"}],"id":1251,"name":"Return","src":"21709:25:30"}],"id":1252,"name":"Block","src":"21699:42:30"}],"id":1253,"name":"FunctionDefinition","src":"21639:102:30"},{"attributes":{"documentation":"@dev Has the load limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitControllerConfirmationRequired","scope":1272,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1254,"name":"ParameterList","src":"21844:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1262,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1255,"name":"ElementaryTypeName","src":"21870:4:30"}],"id":1256,"name":"VariableDeclaration","src":"21870:4:30"}],"id":1257,"name":"ParameterList","src":"21869:6:30"},{"children":[{"attributes":{"functionReturnParameters":1257},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1258,"name":"Identifier","src":"21893:10:30"}],"id":1259,"name":"MemberAccess","src":"21893:41:30"}],"id":1260,"name":"Return","src":"21886:48:30"}],"id":1261,"name":"Block","src":"21876:65:30"}],"id":1262,"name":"FunctionDefinition","src":"21796:145:30"},{"attributes":{"documentation":"@dev View how much laod limit has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitValue","scope":1272,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1263,"name":"ParameterList","src":"22031:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1271,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1264,"name":"ElementaryTypeName","src":"22057:7:30"}],"id":1265,"name":"VariableDeclaration","src":"22057:7:30"}],"id":1266,"name":"ParameterList","src":"22056:9:30"},{"children":[{"attributes":{"functionReturnParameters":1266},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1267,"name":"Identifier","src":"22083:10:30"}],"id":1268,"name":"MemberAccess","src":"22083:16:30"}],"id":1269,"name":"Return","src":"22076:23:30"}],"id":1270,"name":"Block","src":"22066:40:30"}],"id":1271,"name":"FunctionDefinition","src":"22008:98:30"}],"id":1272,"name":"ContractDefinition","src":"19604:2504:30"},{"attributes":{"contractDependencies":[36,58,606,940,1098,1272,2293,2730,2826,2871,3028,3245,3285],"contractKind":"contract","documentation":"@title Asset wallet with extra security features, gas top up management and card integration.","fullyImplemented":true,"linearizedBaseContracts":[2183,2730,3285,2293,940,606,1272,3245,1098,58,36,3028,2826,2871],"name":"Wallet","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":1273,"name":"UserDefinedTypeName","src":"22228:13:30"}],"id":1274,"name":"InheritanceSpecifier","src":"22228:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"GasTopUpLimit","referencedDeclaration":1098,"type":"contract GasTopUpLimit"},"id":1275,"name":"UserDefinedTypeName","src":"22243:13:30"}],"id":1276,"name":"InheritanceSpecifier","src":"22243:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"LoadLimit","referencedDeclaration":1272,"type":"contract LoadLimit"},"id":1277,"name":"UserDefinedTypeName","src":"22258:9:30"}],"id":1278,"name":"InheritanceSpecifier","src":"22258:9:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddressWhitelist","referencedDeclaration":606,"type":"contract AddressWhitelist"},"id":1279,"name":"UserDefinedTypeName","src":"22269:16:30"}],"id":1280,"name":"InheritanceSpecifier","src":"22269:16:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SpendLimit","referencedDeclaration":940,"type":"contract SpendLimit"},"id":1281,"name":"UserDefinedTypeName","src":"22287:10:30"}],"id":1282,"name":"InheritanceSpecifier","src":"22287:10:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ERC165","referencedDeclaration":2293,"type":"contract ERC165"},"id":1283,"name":"UserDefinedTypeName","src":"22299:6:30"}],"id":1284,"name":"InheritanceSpecifier","src":"22299:6:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3285,"type":"contract Transferrable"},"id":1285,"name":"UserDefinedTypeName","src":"22307:13:30"}],"id":1286,"name":"InheritanceSpecifier","src":"22307:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":2730,"type":"contract Balanceable"},"id":1287,"name":"UserDefinedTypeName","src":"22322:11:30"}],"id":1288,"name":"InheritanceSpecifier","src":"22322:11:30"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":2202,"type":"library Address"},"id":1289,"name":"UserDefinedTypeName","src":"22346:7:30"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1290,"name":"ElementaryTypeName","src":"22358:7:30"}],"id":1291,"name":"UsingForDirective","src":"22340:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"ECDSA","referencedDeclaration":2283,"type":"library ECDSA"},"id":1292,"name":"UserDefinedTypeName","src":"22377:5:30"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":1293,"name":"ElementaryTypeName","src":"22387:7:30"}],"id":1294,"name":"UsingForDirective","src":"22371:24:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2565,"type":"library SafeERC20"},"id":1295,"name":"UserDefinedTypeName","src":"22406:9:30"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":1296,"name":"UserDefinedTypeName","src":"22420:5:30"}],"id":1297,"name":"UsingForDirective","src":"22400:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":1298,"name":"UserDefinedTypeName","src":"22437:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":1299,"name":"ElementaryTypeName","src":"22450:7:30"}],"id":1300,"name":"UsingForDirective","src":"22431:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"BulkTransferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1307,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1301,"name":"ElementaryTypeName","src":"22486:7:30"}],"id":1302,"name":"VariableDeclaration","src":"22486:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_assets","scope":1307,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1303,"name":"ElementaryTypeName","src":"22499:7:30"}],"id":1304,"name":"ArrayTypeName","src":"22499:9:30"}],"id":1305,"name":"VariableDeclaration","src":"22499:17:30"}],"id":1306,"name":"ParameterList","src":"22485:32:30"}],"id":1307,"name":"EventDefinition","src":"22464:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedRelayedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1313,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1308,"name":"ElementaryTypeName","src":"22556:5:30"}],"id":1309,"name":"VariableDeclaration","src":"22556:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1313,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1310,"name":"ElementaryTypeName","src":"22569:5:30"}],"id":1311,"name":"VariableDeclaration","src":"22569:17:30"}],"id":1312,"name":"ParameterList","src":"22555:32:30"}],"id":1313,"name":"EventDefinition","src":"22523:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_destination","scope":1323,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1314,"name":"ElementaryTypeName","src":"22619:7:30"}],"id":1315,"name":"VariableDeclaration","src":"22619:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_value","scope":1323,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1316,"name":"ElementaryTypeName","src":"22641:7:30"}],"id":1317,"name":"VariableDeclaration","src":"22641:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1323,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1318,"name":"ElementaryTypeName","src":"22657:5:30"}],"id":1319,"name":"VariableDeclaration","src":"22657:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1323,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1320,"name":"ElementaryTypeName","src":"22670:5:30"}],"id":1321,"name":"VariableDeclaration","src":"22670:17:30"}],"id":1322,"name":"ParameterList","src":"22618:70:30"}],"id":1323,"name":"EventDefinition","src":"22593:96:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"IncreasedRelayNonce"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1329,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1324,"name":"ElementaryTypeName","src":"22720:7:30"}],"id":1325,"name":"VariableDeclaration","src":"22720:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_currentNonce","scope":1329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1326,"name":"ElementaryTypeName","src":"22737:7:30"}],"id":1327,"name":"VariableDeclaration","src":"22737:21:30"}],"id":1328,"name":"ParameterList","src":"22719:40:30"}],"id":1329,"name":"EventDefinition","src":"22694:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"LoadedTokenCard"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1335,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1330,"name":"ElementaryTypeName","src":"22787:7:30"}],"id":1331,"name":"VariableDeclaration","src":"22787:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1335,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1332,"name":"ElementaryTypeName","src":"22803:7:30"}],"id":1333,"name":"VariableDeclaration","src":"22803:15:30"}],"id":1334,"name":"ParameterList","src":"22786:33:30"}],"id":1335,"name":"EventDefinition","src":"22765:55:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1341,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1336,"name":"ElementaryTypeName","src":"22840:7:30"}],"id":1337,"name":"VariableDeclaration","src":"22840:13:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1341,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1338,"name":"ElementaryTypeName","src":"22855:7:30"}],"id":1339,"name":"VariableDeclaration","src":"22855:15:30"}],"id":1340,"name":"ParameterList","src":"22839:32:30"}],"id":1341,"name":"EventDefinition","src":"22825:47:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ToppedUpGas"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1349,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1342,"name":"ElementaryTypeName","src":"22895:7:30"}],"id":1343,"name":"VariableDeclaration","src":"22895:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1349,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1344,"name":"ElementaryTypeName","src":"22912:7:30"}],"id":1345,"name":"VariableDeclaration","src":"22912:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1349,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1346,"name":"ElementaryTypeName","src":"22928:7:30"}],"id":1347,"name":"VariableDeclaration","src":"22928:15:30"}],"id":1348,"name":"ParameterList","src":"22894:50:30"}],"id":1349,"name":"EventDefinition","src":"22877:68:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1350,"name":"ElementaryTypeName","src":"22968:7:30"}],"id":1351,"name":"VariableDeclaration","src":"22968:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1352,"name":"ElementaryTypeName","src":"22981:7:30"}],"id":1353,"name":"VariableDeclaration","src":"22981:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1354,"name":"ElementaryTypeName","src":"22997:7:30"}],"id":1355,"name":"VariableDeclaration","src":"22997:15:30"}],"id":1356,"name":"ParameterList","src":"22967:46:30"}],"id":1357,"name":"EventDefinition","src":"22950:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1358,"name":"ParameterList","src":"23046:2:30"}],"id":1359,"name":"EventDefinition","src":"23019:30:30"},{"attributes":{"constant":true,"name":"WALLET_VERSION","scope":2183,"stateVariable":true,"storageLocation":"default","type":"string","visibility":"public"},"children":[{"attributes":{"name":"string","type":"string"},"id":1360,"name":"ElementaryTypeName","src":"23125:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"332e322e30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"3.2.0\"","value":"3.2.0"},"id":1361,"name":"Literal","src":"23165:7:30"}],"id":1362,"name":"VariableDeclaration","src":"23125:47:30"},{"attributes":{"constant":true,"name":"_EIP_1271","scope":2183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1363,"name":"ElementaryTypeName","src":"23296:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230633133623062","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 549534475","value":"0x20c13b0b"},"id":1364,"name":"Literal","src":"23332:10:30"}],"id":1365,"name":"VariableDeclaration","src":"23296:46:30"},{"attributes":{"constant":true,"name":"_EIP_1654","scope":2183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1366,"name":"ElementaryTypeName","src":"23467:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783136323662613765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 371636862","value":"0x1626ba7e"},"id":1367,"name":"Literal","src":"23503:10:30"}],"id":1368,"name":"VariableDeclaration","src":"23467:46:30"},{"attributes":{"constant":true,"name":"_ERC165_INTERFACE_ID","scope":2183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1369,"name":"ElementaryTypeName","src":"23564:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":1370,"name":"Literal","src":"23611:10:30"}],"id":1371,"name":"VariableDeclaration","src":"23564:57:30"},{"attributes":{"constant":false,"name":"relayNonce","scope":2183,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1372,"name":"ElementaryTypeName","src":"23739:7:30"}],"id":1373,"name":"VariableDeclaration","src":"23739:25:30"},{"attributes":{"constant":false,"name":"_licenceNode","scope":2183,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1374,"name":"ElementaryTypeName","src":"23845:7:30"}],"id":1375,"name":"VariableDeclaration","src":"23845:28:30"},{"attributes":{"documentation":"@dev Constructor initializes the wallet top up limit and the vault contract.\n @param _owner_ is the owner account of the wallet contract.\n @param _transferable_ indicates whether the contract ownership can be transferred.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist.\n @param _controllerNode_ is the ENS name node of the Controller contract.\n @param _licenceNode_ is the ENS name node of the Licence contract.\n @param _spendLimit_ is the initial spend limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1376,"name":"ElementaryTypeName","src":"24495:15:30"}],"id":1377,"name":"VariableDeclaration","src":"24495:23:30"},{"attributes":{"constant":false,"name":"_transferable_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1378,"name":"ElementaryTypeName","src":"24528:4:30"}],"id":1379,"name":"VariableDeclaration","src":"24528:19:30"},{"attributes":{"constant":false,"name":"_ens_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1380,"name":"ElementaryTypeName","src":"24557:7:30"}],"id":1381,"name":"VariableDeclaration","src":"24557:13:30"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1382,"name":"ElementaryTypeName","src":"24580:7:30"}],"id":1383,"name":"VariableDeclaration","src":"24580:28:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1384,"name":"ElementaryTypeName","src":"24618:7:30"}],"id":1385,"name":"VariableDeclaration","src":"24618:24:30"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1386,"name":"ElementaryTypeName","src":"24652:7:30"}],"id":1387,"name":"VariableDeclaration","src":"24652:21:30"},{"attributes":{"constant":false,"name":"_spendLimit_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1388,"name":"ElementaryTypeName","src":"24683:7:30"}],"id":1389,"name":"VariableDeclaration","src":"24683:20:30"}],"id":1390,"name":"ParameterList","src":"24485:224:30"},{"attributes":{"parameters":[null]},"children":[],"id":1407,"name":"ParameterList","src":"24859:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2871,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1391,"name":"Identifier","src":"24717:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1381,"type":"address","value":"_ens_"},"id":1392,"name":"Identifier","src":"24731:5:30"}],"id":1393,"name":"ModifierInvocation","src":"24717:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":940,"type":"type(contract SpendLimit)","value":"SpendLimit"},"id":1394,"name":"Identifier","src":"24738:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1389,"type":"uint256","value":"_spendLimit_"},"id":1395,"name":"Identifier","src":"24749:12:30"}],"id":1396,"name":"ModifierInvocation","src":"24738:24:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3028,"type":"type(contract Ownable)","value":"Ownable"},"id":1397,"name":"Identifier","src":"24763:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1377,"type":"address payable","value":"_owner_"},"id":1398,"name":"Identifier","src":"24771:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1379,"type":"bool","value":"_transferable_"},"id":1399,"name":"Identifier","src":"24780:14:30"}],"id":1400,"name":"ModifierInvocation","src":"24763:32:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2826,"type":"type(contract Controllable)","value":"Controllable"},"id":1401,"name":"Identifier","src":"24796:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1385,"type":"bytes32","value":"_controllerNode_"},"id":1402,"name":"Identifier","src":"24809:16:30"}],"id":1403,"name":"ModifierInvocation","src":"24796:30:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1272,"type":"type(contract LoadLimit)","value":"LoadLimit"},"id":1404,"name":"Identifier","src":"24827:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1405,"name":"Identifier","src":"24837:20:30"}],"id":1406,"name":"ModifierInvocation","src":"24827:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1375,"type":"bytes32","value":"_licenceNode"},"id":1408,"name":"Identifier","src":"24869:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1387,"type":"bytes32","value":"_licenceNode_"},"id":1409,"name":"Identifier","src":"24884:13:30"}],"id":1410,"name":"Assignment","src":"24869:28:30"}],"id":1411,"name":"ExpressionStatement","src":"24869:28:30"}],"id":1412,"name":"Block","src":"24859:45:30"}],"id":1413,"name":"FunctionDefinition","src":"24474:430:30"},{"attributes":{"documentation":"@dev Checks if the value is not zero.","name":"isNotZero","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_value","scope":1426,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1414,"name":"ElementaryTypeName","src":"24975:7:30"}],"id":1415,"name":"VariableDeclaration","src":"24975:14:30"}],"id":1416,"name":"ParameterList","src":"24974:16:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d553a348030c1ee763b9cde2d3cc60fc831e78f559cd3758c25113c454c7f3","typeString":"literal_string \"value=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1417,"name":"Identifier","src":"25001:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1415,"type":"uint256","value":"_value"},"id":1418,"name":"Identifier","src":"25009:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1419,"name":"Literal","src":"25019:1:30"}],"id":1420,"name":"BinaryOperation","src":"25009:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"76616c75653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"value=0\"","value":"value=0"},"id":1421,"name":"Literal","src":"25022:9:30"}],"id":1422,"name":"FunctionCall","src":"25001:31:30"}],"id":1423,"name":"ExpressionStatement","src":"25001:31:30"},{"id":1424,"name":"PlaceholderStatement","src":"25042:1:30"}],"id":1425,"name":"Block","src":"24991:59:30"}],"id":1426,"name":"ModifierDefinition","src":"24956:94:30"},{"attributes":{"documentation":"@dev Ether can be deposited from any source, so this contract must be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":2183,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1427,"name":"ParameterList","src":"25161:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1428,"name":"ParameterList","src":"25181:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1341,"type":"function (address,uint256)","value":"Received"},"id":1429,"name":"Identifier","src":"25196:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1430,"name":"Identifier","src":"25205:3:30"}],"id":1431,"name":"MemberAccess","src":"25205:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1432,"name":"Identifier","src":"25217:3:30"}],"id":1433,"name":"MemberAccess","src":"25217:9:30"}],"id":1434,"name":"FunctionCall","src":"25196:31:30"}],"id":1435,"name":"EmitStatement","src":"25191:36:30"}],"id":1436,"name":"Block","src":"25181:53:30"}],"id":1437,"name":"FunctionDefinition","src":"25153:81:30"},{"attributes":{"documentation":"@dev This is a bulk transfer convenience function, used to migrate contracts.\n @notice If any of the transfers fail, this will revert.\n @param _to is the recipient's address, can't be the zero (0x0) address: transfer() will revert.\n @param _assets is an array of addresses of ERC20 tokens or 0x0 for ether.","implemented":true,"isConstructor":false,"kind":"function","name":"bulkTransfer","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1493,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1438,"name":"ElementaryTypeName","src":"25598:15:30"}],"id":1439,"name":"VariableDeclaration","src":"25598:19:30"},{"attributes":{"constant":false,"name":"_assets","scope":1493,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1440,"name":"ElementaryTypeName","src":"25619:7:30"}],"id":1441,"name":"ArrayTypeName","src":"25619:9:30"}],"id":1442,"name":"VariableDeclaration","src":"25619:26:30"}],"id":1443,"name":"ParameterList","src":"25597:49:30"},{"attributes":{"parameters":[null]},"children":[],"id":1446,"name":"ParameterList","src":"25672:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1444,"name":"Identifier","src":"25656:15:30"}],"id":1445,"name":"ModifierInvocation","src":"25656:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc6fe91796d2ae20b0ff36bc5dfbb8543f76fc0a4077e7ae85858f799173eb60","typeString":"literal_string \"asset array is empty\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1447,"name":"Identifier","src":"25737:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1448,"name":"Identifier","src":"25745:7:30"}],"id":1449,"name":"MemberAccess","src":"25745:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1450,"name":"Literal","src":"25763:1:30"}],"id":1451,"name":"BinaryOperation","src":"25745:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617373657420617272617920697320656d707479","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"asset array is empty\"","value":"asset array is empty"},"id":1452,"name":"Literal","src":"25766:22:30"}],"id":1453,"name":"FunctionCall","src":"25737:52:30"}],"id":1454,"name":"ExpressionStatement","src":"25737:52:30"},{"children":[{"attributes":{"assignments":[1456]},"children":[{"attributes":{"constant":false,"name":"i","scope":1486,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1455,"name":"ElementaryTypeName","src":"25866:7:30"}],"id":1456,"name":"VariableDeclaration","src":"25866:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1457,"name":"Literal","src":"25878:1:30"}],"id":1458,"name":"VariableDeclarationStatement","src":"25866:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"i"},"id":1459,"name":"Identifier","src":"25881:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1460,"name":"Identifier","src":"25885:7:30"}],"id":1461,"name":"MemberAccess","src":"25885:14:30"}],"id":1462,"name":"BinaryOperation","src":"25881:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"i"},"id":1463,"name":"Identifier","src":"25901:1:30"}],"id":1464,"name":"UnaryOperation","src":"25901:3:30"}],"id":1465,"name":"ExpressionStatement","src":"25901:3:30"},{"children":[{"attributes":{"assignments":[1467]},"children":[{"attributes":{"constant":false,"name":"amount","scope":1485,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1466,"name":"ElementaryTypeName","src":"25920:7:30"}],"id":1467,"name":"VariableDeclaration","src":"25920:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2729,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":1468,"name":"Identifier","src":"25937:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2183","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1469,"name":"ElementaryTypeNameExpression","src":"25946:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10203,"type":"contract Wallet","value":"this"},"id":1470,"name":"Identifier","src":"25954:4:30"}],"id":1471,"name":"FunctionCall","src":"25946:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1472,"name":"Identifier","src":"25961:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"i"},"id":1473,"name":"Identifier","src":"25969:1:30"}],"id":1474,"name":"IndexAccess","src":"25961:10:30"}],"id":1475,"name":"FunctionCall","src":"25937:35:30"}],"id":1476,"name":"VariableDeclarationStatement","src":"25920:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"function (address payable,address,uint256)","value":"transfer"},"id":1477,"name":"Identifier","src":"26046:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1439,"type":"address payable","value":"_to"},"id":1478,"name":"Identifier","src":"26055:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1479,"name":"Identifier","src":"26060:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"i"},"id":1480,"name":"Identifier","src":"26068:1:30"}],"id":1481,"name":"IndexAccess","src":"26060:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1467,"type":"uint256","value":"amount"},"id":1482,"name":"Identifier","src":"26072:6:30"}],"id":1483,"name":"FunctionCall","src":"26046:33:30"}],"id":1484,"name":"ExpressionStatement","src":"26046:33:30"}],"id":1485,"name":"Block","src":"25906:184:30"}],"id":1486,"name":"ForStatement","src":"25861:229:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":1307,"type":"function (address,address[] memory)","value":"BulkTransferred"},"id":1487,"name":"Identifier","src":"26105:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1439,"type":"address payable","value":"_to"},"id":1488,"name":"Identifier","src":"26121:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1489,"name":"Identifier","src":"26126:7:30"}],"id":1490,"name":"FunctionCall","src":"26105:29:30"}],"id":1491,"name":"EmitStatement","src":"26100:34:30"}],"id":1492,"name":"Block","src":"25672:469:30"}],"id":1493,"name":"FunctionDefinition","src":"25576:565:30"},{"attributes":{"documentation":"@dev This function allows for the controller to relay transactions on the owner's behalf,\n the relayed message has to be signed by the owner.\n @param _nonce only used for relayed transactions, must match the wallet's relayNonce.\n @param _data abi encoded data payload.\n @param _signature signed prefix + data.","implemented":true,"isConstructor":false,"kind":"function","name":"executeRelayedTransaction","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_nonce","scope":1569,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1494,"name":"ElementaryTypeName","src":"26528:7:30"}],"id":1495,"name":"VariableDeclaration","src":"26528:14:30"},{"attributes":{"constant":false,"name":"_data","scope":1569,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1496,"name":"ElementaryTypeName","src":"26544:5:30"}],"id":1497,"name":"VariableDeclaration","src":"26544:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1569,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1498,"name":"ElementaryTypeName","src":"26566:5:30"}],"id":1499,"name":"VariableDeclaration","src":"26566:25:30"}],"id":1500,"name":"ParameterList","src":"26527:65:30"},{"attributes":{"parameters":[null]},"children":[],"id":1503,"name":"ParameterList","src":"26617:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":1501,"name":"Identifier","src":"26602:14:30"}],"id":1502,"name":"ModifierInvocation","src":"26602:14:30"},{"children":[{"attributes":{"assignments":[1505],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"id","scope":1568,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1504,"name":"ElementaryTypeName","src":"26797:7:30"}],"id":1505,"name":"VariableDeclaration","src":"26797:10:30"}],"id":1506,"name":"VariableDeclarationStatement","src":"26797:10:30"},{"attributes":{"externalReferences":[{"id":{"declaration":1505,"isOffset":false,"isSlot":false,"src":"26840:2:30","valueSize":1}}],"operations":"{ id := chainid() }"},"children":[],"id":1507,"name":"InlineAssembly","src":"26817:99:30"},{"attributes":{"assignments":[1509]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1568,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1508,"name":"ElementaryTypeName","src":"26925:7:30"}],"id":1509,"name":"VariableDeclaration","src":"26925:16:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toEthSignedMessageHash","referencedDeclaration":2282,"type":"function (bytes32) pure returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1510,"name":"Identifier","src":"26944:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_64973292d287a9bdfbf2540b56114a2ccf5255f1a0f38436d52dc69f44e83d8d","typeString":"literal_string \"monolith:\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":1511,"name":"Identifier","src":"26954:3:30"}],"id":1512,"name":"MemberAccess","src":"26954:16:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e6f6c6974683a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"monolith:\"","value":"monolith:"},"id":1513,"name":"Literal","src":"26971:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1505,"type":"uint256","value":"id"},"id":1514,"name":"Identifier","src":"26984:2:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2183","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1515,"name":"ElementaryTypeNameExpression","src":"26988:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10203,"type":"contract Wallet","value":"this"},"id":1516,"name":"Identifier","src":"26996:4:30"}],"id":1517,"name":"FunctionCall","src":"26988:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1495,"type":"uint256","value":"_nonce"},"id":1518,"name":"Identifier","src":"27003:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1497,"type":"bytes calldata","value":"_data"},"id":1519,"name":"Identifier","src":"27011:5:30"}],"id":1520,"name":"FunctionCall","src":"26954:63:30"}],"id":1521,"name":"FunctionCall","src":"26944:74:30"}],"id":1522,"name":"MemberAccess","src":"26944:97:30"}],"id":1523,"name":"FunctionCall","src":"26944:99:30"}],"id":1524,"name":"VariableDeclarationStatement","src":"26925:118:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1525,"name":"Identifier","src":"27111:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2116,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1526,"name":"Identifier","src":"27119:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1509,"type":"bytes32","value":"dataHash"},"id":1527,"name":"Identifier","src":"27136:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1499,"type":"bytes calldata","value":"_signature"},"id":1528,"name":"Identifier","src":"27146:10:30"}],"id":1529,"name":"FunctionCall","src":"27119:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1368,"type":"bytes4","value":"_EIP_1654"},"id":1530,"name":"Identifier","src":"27161:9:30"}],"id":1531,"name":"BinaryOperation","src":"27119:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1532,"name":"Literal","src":"27172:15:30"}],"id":1533,"name":"FunctionCall","src":"27111:77:30"}],"id":1534,"name":"ExpressionStatement","src":"27111:77:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_34adcd0a74b814374d2f97634e18f1e1bbbc6244d3bcc4bf9469772fc5d9d0ea","typeString":"literal_string \"tx replay\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1535,"name":"Identifier","src":"27283:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1495,"type":"uint256","value":"_nonce"},"id":1536,"name":"Identifier","src":"27291:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1373,"type":"uint256","value":"relayNonce"},"id":1537,"name":"Identifier","src":"27301:10:30"}],"id":1538,"name":"BinaryOperation","src":"27291:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"7478207265706c6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"tx replay\"","value":"tx replay"},"id":1539,"name":"Literal","src":"27313:11:30"}],"id":1540,"name":"FunctionCall","src":"27283:42:30"}],"id":1541,"name":"ExpressionStatement","src":"27283:42:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1591,"type":"function ()","value":"_increaseRelayNonce"},"id":1542,"name":"Identifier","src":"27335:19:30"}],"id":1543,"name":"FunctionCall","src":"27335:21:30"}],"id":1544,"name":"ExpressionStatement","src":"27335:21:30"},{"attributes":{"assignments":[1546,1548]},"children":[{"attributes":{"constant":false,"name":"success","scope":1568,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1545,"name":"ElementaryTypeName","src":"27424:4:30"}],"id":1546,"name":"VariableDeclaration","src":"27424:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":1568,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1547,"name":"ElementaryTypeName","src":"27438:5:30"}],"id":1548,"name":"VariableDeclaration","src":"27438:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2183","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1549,"name":"ElementaryTypeNameExpression","src":"27465:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10203,"type":"contract Wallet","value":"this"},"id":1550,"name":"Identifier","src":"27473:4:30"}],"id":1551,"name":"FunctionCall","src":"27465:13:30"}],"id":1552,"name":"MemberAccess","src":"27465:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1497,"type":"bytes calldata","value":"_data"},"id":1553,"name":"Identifier","src":"27484:5:30"}],"id":1554,"name":"FunctionCall","src":"27465:25:30"}],"id":1555,"name":"VariableDeclarationStatement","src":"27423:67:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1556,"name":"Identifier","src":"27500:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1546,"type":"bool","value":"success"},"id":1557,"name":"Identifier","src":"27508:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":1558,"name":"ElementaryTypeNameExpression","src":"27517:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1548,"type":"bytes memory","value":"returndata"},"id":1559,"name":"Identifier","src":"27524:10:30"}],"id":1560,"name":"FunctionCall","src":"27517:18:30"}],"id":1561,"name":"FunctionCall","src":"27500:36:30"}],"id":1562,"name":"ExpressionStatement","src":"27500:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1313,"type":"function (bytes memory,bytes memory)","value":"ExecutedRelayedTransaction"},"id":1563,"name":"Identifier","src":"27552:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1497,"type":"bytes calldata","value":"_data"},"id":1564,"name":"Identifier","src":"27579:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1548,"type":"bytes memory","value":"returndata"},"id":1565,"name":"Identifier","src":"27586:10:30"}],"id":1566,"name":"FunctionCall","src":"27552:45:30"}],"id":1567,"name":"EmitStatement","src":"27547:50:30"}],"id":1568,"name":"Block","src":"26617:987:30"}],"id":1569,"name":"FunctionDefinition","src":"26493:1111:30"},{"attributes":{"documentation":"@dev This allows the user to cancel a transaction that was unexpectedly delayed by the relayer","implemented":true,"isConstructor":false,"kind":"function","name":"increaseRelayNonce","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1570,"name":"ParameterList","src":"27740:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1573,"name":"ParameterList","src":"27762:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":1571,"name":"Identifier","src":"27752:9:30"}],"id":1572,"name":"ModifierInvocation","src":"27752:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1591,"type":"function ()","value":"_increaseRelayNonce"},"id":1574,"name":"Identifier","src":"27772:19:30"}],"id":1575,"name":"FunctionCall","src":"27772:21:30"}],"id":1576,"name":"ExpressionStatement","src":"27772:21:30"}],"id":1577,"name":"Block","src":"27762:38:30"}],"id":1578,"name":"FunctionDefinition","src":"27713:87:30"},{"attributes":{"documentation":"@dev This bumps the relayNonce and emits an event accordingly","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_increaseRelayNonce","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1579,"name":"ParameterList","src":"27904:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1580,"name":"ParameterList","src":"27916:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1373,"type":"uint256","value":"relayNonce"},"id":1581,"name":"Identifier","src":"27926:10:30"}],"id":1582,"name":"UnaryOperation","src":"27926:12:30"}],"id":1583,"name":"ExpressionStatement","src":"27926:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1329,"type":"function (address,uint256)","value":"IncreasedRelayNonce"},"id":1584,"name":"Identifier","src":"27954:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1585,"name":"Identifier","src":"27974:3:30"}],"id":1586,"name":"MemberAccess","src":"27974:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1373,"type":"uint256","value":"relayNonce"},"id":1587,"name":"Identifier","src":"27986:10:30"}],"id":1588,"name":"FunctionCall","src":"27954:43:30"}],"id":1589,"name":"EmitStatement","src":"27949:48:30"}],"id":1590,"name":"Block","src":"27916:88:30"}],"id":1591,"name":"FunctionDefinition","src":"27876:128:30"},{"attributes":{"documentation":"@dev Implements EIP-1271: receives the raw data (bytes)\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":1622,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1592,"name":"ElementaryTypeName","src":"28325:5:30"}],"id":1593,"name":"VariableDeclaration","src":"28325:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1622,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1594,"name":"ElementaryTypeName","src":"28347:5:30"}],"id":1595,"name":"VariableDeclaration","src":"28347:25:30"}],"id":1596,"name":"ParameterList","src":"28324:49:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1622,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1597,"name":"ElementaryTypeName","src":"28397:6:30"}],"id":1598,"name":"VariableDeclaration","src":"28397:6:30"}],"id":1599,"name":"ParameterList","src":"28396:8:30"},{"children":[{"attributes":{"assignments":[1601]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1621,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1600,"name":"ElementaryTypeName","src":"28415:7:30"}],"id":1601,"name":"VariableDeclaration","src":"28415:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1602,"name":"Identifier","src":"28434:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":1603,"name":"Identifier","src":"28444:3:30"}],"id":1604,"name":"MemberAccess","src":"28444:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1593,"type":"bytes calldata","value":"_data"},"id":1605,"name":"Identifier","src":"28461:5:30"}],"id":1606,"name":"FunctionCall","src":"28444:23:30"}],"id":1607,"name":"FunctionCall","src":"28434:34:30"}],"id":1608,"name":"VariableDeclarationStatement","src":"28415:53:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1609,"name":"Identifier","src":"28533:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2116,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1610,"name":"Identifier","src":"28541:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1601,"type":"bytes32","value":"dataHash"},"id":1611,"name":"Identifier","src":"28558:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1595,"type":"bytes calldata","value":"_signature"},"id":1612,"name":"Identifier","src":"28568:10:30"}],"id":1613,"name":"FunctionCall","src":"28541:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1368,"type":"bytes4","value":"_EIP_1654"},"id":1614,"name":"Identifier","src":"28583:9:30"}],"id":1615,"name":"BinaryOperation","src":"28541:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1616,"name":"Literal","src":"28594:15:30"}],"id":1617,"name":"FunctionCall","src":"28533:77:30"}],"id":1618,"name":"ExpressionStatement","src":"28533:77:30"},{"attributes":{"functionReturnParameters":1599},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"bytes4","value":"_EIP_1271"},"id":1619,"name":"Identifier","src":"28627:9:30"}],"id":1620,"name":"Return","src":"28620:16:30"}],"id":1621,"name":"Block","src":"28405:238:30"}],"id":1622,"name":"FunctionDefinition","src":"28299:344:30"},{"attributes":{"documentation":"@return licence contract node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceNode","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1623,"name":"ParameterList","src":"28726:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1630,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1624,"name":"ElementaryTypeName","src":"28752:7:30"}],"id":1625,"name":"VariableDeclaration","src":"28752:7:30"}],"id":1626,"name":"ParameterList","src":"28751:9:30"},{"children":[{"attributes":{"functionReturnParameters":1626},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1375,"type":"bytes32","value":"_licenceNode"},"id":1627,"name":"Identifier","src":"28778:12:30"}],"id":1628,"name":"Return","src":"28771:19:30"}],"id":1629,"name":"Block","src":"28761:36:30"}],"id":1630,"name":"FunctionDefinition","src":"28706:91:30"},{"attributes":{"documentation":"@dev Load a token card with the specified asset amount.\n @dev the amount send should be inclusive of the percent licence.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"loadTokenCard","scope":2183,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":1706,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1631,"name":"ElementaryTypeName","src":"29116:7:30"}],"id":1632,"name":"VariableDeclaration","src":"29116:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":1706,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1633,"name":"ElementaryTypeName","src":"29132:7:30"}],"id":1634,"name":"VariableDeclaration","src":"29132:15:30"}],"id":1635,"name":"ParameterList","src":"29115:33:30"},{"attributes":{"parameters":[null]},"children":[],"id":1638,"name":"ParameterList","src":"29182:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1636,"name":"Identifier","src":"29166:15:30"}],"id":1637,"name":"ModifierInvocation","src":"29166:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96e30e7359d705e51778d9ae05179a78cb34ab813d824e29a3cd9fe209b16a67","typeString":"literal_string \"token not loadable\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1639,"name":"Identifier","src":"29261:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3230,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":1640,"name":"Identifier","src":"29269:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1641,"name":"Identifier","src":"29286:6:30"}],"id":1642,"name":"FunctionCall","src":"29269:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f74206c6f616461626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not loadable\"","value":"token not loadable"},"id":1643,"name":"Literal","src":"29295:20:30"}],"id":1644,"name":"FunctionCall","src":"29261:55:30"}],"id":1645,"name":"ExpressionStatement","src":"29261:55:30"},{"attributes":{"assignments":[1647]},"children":[{"attributes":{"constant":false,"name":"stablecoinValue","scope":1705,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1646,"name":"ElementaryTypeName","src":"29379:7:30"}],"id":1647,"name":"VariableDeclaration","src":"29379:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1962,"type":"function (address,uint256) view returns (uint256)","value":"convertToStablecoin"},"id":1648,"name":"Identifier","src":"29405:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1649,"name":"Identifier","src":"29425:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1650,"name":"Identifier","src":"29433:7:30"}],"id":1651,"name":"FunctionCall","src":"29405:36:30"}],"id":1652,"name":"VariableDeclarationStatement","src":"29379:62:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1653,"name":"Identifier","src":"29571:10:30"}],"id":1655,"name":"MemberAccess","src":"29571:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"uint256","value":"stablecoinValue"},"id":1656,"name":"Identifier","src":"29596:15:30"}],"id":1657,"name":"FunctionCall","src":"29571:41:30"}],"id":1658,"name":"ExpressionStatement","src":"29571:41:30"},{"attributes":{"assignments":[1660]},"children":[{"attributes":{"constant":false,"name":"licenceAddress","scope":1705,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1659,"name":"ElementaryTypeName","src":"29669:7:30"}],"id":1660,"name":"VariableDeclaration","src":"29669:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1661,"name":"Identifier","src":"29694:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1375,"type":"bytes32","value":"_licenceNode"},"id":1662,"name":"Identifier","src":"29706:12:30"}],"id":1663,"name":"FunctionCall","src":"29694:25:30"}],"id":1664,"name":"VariableDeclarationStatement","src":"29669:50:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1665,"name":"Identifier","src":"29733:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1666,"name":"ElementaryTypeNameExpression","src":"29743:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1667,"name":"Literal","src":"29751:1:30"}],"id":1668,"name":"FunctionCall","src":"29743:10:30"}],"id":1669,"name":"BinaryOperation","src":"29733:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeApprove","referencedDeclaration":2445,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":1670,"name":"Identifier","src":"29769:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1671,"name":"Identifier","src":"29775:6:30"}],"id":1672,"name":"FunctionCall","src":"29769:13:30"}],"id":1673,"name":"MemberAccess","src":"29769:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1660,"type":"address","value":"licenceAddress"},"id":1674,"name":"Identifier","src":"29795:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1675,"name":"Identifier","src":"29811:7:30"}],"id":1676,"name":"FunctionCall","src":"29769:50:30"}],"id":1677,"name":"ExpressionStatement","src":"29769:50:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":3299,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3305,"type":"type(contract ILicence)","value":"ILicence"},"id":1678,"name":"Identifier","src":"29833:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1660,"type":"address","value":"licenceAddress"},"id":1679,"name":"Identifier","src":"29842:14:30"}],"id":1680,"name":"FunctionCall","src":"29833:24:30"}],"id":1681,"name":"MemberAccess","src":"29833:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1682,"name":"Identifier","src":"29863:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1683,"name":"Identifier","src":"29871:7:30"}],"id":1684,"name":"FunctionCall","src":"29833:46:30"}],"id":1685,"name":"ExpressionStatement","src":"29833:46:30"}],"id":1686,"name":"Block","src":"29755:135:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (address,uint256) payable external","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (address,uint256) payable external)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":3299,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3305,"type":"type(contract ILicence)","value":"ILicence"},"id":1687,"name":"Identifier","src":"29910:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1660,"type":"address","value":"licenceAddress"},"id":1688,"name":"Identifier","src":"29919:14:30"}],"id":1689,"name":"FunctionCall","src":"29910:24:30"}],"id":1690,"name":"MemberAccess","src":"29910:29:30"}],"id":1691,"name":"MemberAccess","src":"29910:35:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1692,"name":"Identifier","src":"29946:7:30"}],"id":1693,"name":"FunctionCall","src":"29910:44:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1694,"name":"Identifier","src":"29955:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1695,"name":"Identifier","src":"29963:7:30"}],"id":1696,"name":"FunctionCall","src":"29910:61:30"}],"id":1697,"name":"ExpressionStatement","src":"29910:61:30"}],"id":1698,"name":"Block","src":"29896:86:30"}],"id":1699,"name":"IfStatement","src":"29729:253:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1335,"type":"function (address,uint256)","value":"LoadedTokenCard"},"id":1700,"name":"Identifier","src":"29997:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1701,"name":"Identifier","src":"30013:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1702,"name":"Identifier","src":"30021:7:30"}],"id":1703,"name":"FunctionCall","src":"29997:32:30"}],"id":1704,"name":"EmitStatement","src":"29992:37:30"}],"id":1705,"name":"Block","src":"29182:854:30"}],"id":1706,"name":"FunctionDefinition","src":"29093:943:30"},{"attributes":{"documentation":"@dev Checks for interface support based on ERC165.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2183,"stateMutability":"view","superFunction":2292,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_interfaceID","scope":1718,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1707,"name":"ElementaryTypeName","src":"30128:6:30"}],"id":1708,"name":"VariableDeclaration","src":"30128:19:30"}],"id":1709,"name":"ParameterList","src":"30127:21:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1718,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1710,"name":"ElementaryTypeName","src":"30172:4:30"}],"id":1711,"name":"VariableDeclaration","src":"30172:4:30"}],"id":1712,"name":"ParameterList","src":"30171:6:30"},{"children":[{"attributes":{"functionReturnParameters":1712},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1708,"type":"bytes4","value":"_interfaceID"},"id":1713,"name":"Identifier","src":"30195:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1371,"type":"bytes4","value":"_ERC165_INTERFACE_ID"},"id":1714,"name":"Identifier","src":"30211:20:30"}],"id":1715,"name":"BinaryOperation","src":"30195:36:30"}],"id":1716,"name":"Return","src":"30188:43:30"}],"id":1717,"name":"Block","src":"30178:60:30"}],"id":1718,"name":"FunctionDefinition","src":"30101:137:30"},{"attributes":{"documentation":"@dev Refill owner's gas balance, revert if the transaction amount is too large\n @param _amount is the amount of ether to transfer to the owner account in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"topUpGas","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1749,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1719,"name":"ElementaryTypeName","src":"30436:7:30"}],"id":1720,"name":"VariableDeclaration","src":"30436:15:30"}],"id":1721,"name":"ParameterList","src":"30435:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1727,"name":"ParameterList","src":"30503:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1426,"type":"modifier (uint256)","value":"isNotZero"},"id":1722,"name":"Identifier","src":"30462:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"uint256","value":"_amount"},"id":1723,"name":"Identifier","src":"30472:7:30"}],"id":1724,"name":"ModifierInvocation","src":"30462:18:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"modifier ()","value":"onlyOwnerOrController"},"id":1725,"name":"Identifier","src":"30481:21:30"}],"id":1726,"name":"ModifierInvocation","src":"30481:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1728,"name":"Identifier","src":"30633:14:30"}],"id":1730,"name":"MemberAccess","src":"30633:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"uint256","value":"_amount"},"id":1731,"name":"Identifier","src":"30662:7:30"}],"id":1732,"name":"FunctionCall","src":"30633:37:30"}],"id":1733,"name":"ExpressionStatement","src":"30633:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3015,"type":"function () view returns (address payable)","value":"owner"},"id":1734,"name":"Identifier","src":"30717:5:30"}],"id":1735,"name":"FunctionCall","src":"30717:7:30"}],"id":1736,"name":"MemberAccess","src":"30717:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"uint256","value":"_amount"},"id":1737,"name":"Identifier","src":"30734:7:30"}],"id":1738,"name":"FunctionCall","src":"30717:25:30"}],"id":1739,"name":"ExpressionStatement","src":"30717:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1349,"type":"function (address,address,uint256)","value":"ToppedUpGas"},"id":1740,"name":"Identifier","src":"30795:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1741,"name":"Identifier","src":"30807:3:30"}],"id":1742,"name":"MemberAccess","src":"30807:10:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3015,"type":"function () view returns (address payable)","value":"owner"},"id":1743,"name":"Identifier","src":"30819:5:30"}],"id":1744,"name":"FunctionCall","src":"30819:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"uint256","value":"_amount"},"id":1745,"name":"Identifier","src":"30828:7:30"}],"id":1746,"name":"FunctionCall","src":"30795:41:30"}],"id":1747,"name":"EmitStatement","src":"30790:46:30"}],"id":1748,"name":"Block","src":"30503:340:30"}],"id":1749,"name":"FunctionDefinition","src":"30418:425:30"},{"attributes":{"documentation":"@dev This function allows for the wallet to send a batch of transactions instead of one,\n it calls executeTransaction() so that the daily limit is enforced.\n @param _transactionBatch data encoding the transactions to be sent,\n following executeTransaction's format i.e. (destination, value, data)","implemented":true,"isConstructor":false,"kind":"function","name":"batchExecuteTransaction","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_transactionBatch","scope":1832,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1750,"name":"ElementaryTypeName","src":"31208:5:30"}],"id":1751,"name":"VariableDeclaration","src":"31208:30:30"}],"id":1752,"name":"ParameterList","src":"31207:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":1755,"name":"ParameterList","src":"31263:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1753,"name":"Identifier","src":"31247:15:30"}],"id":1754,"name":"ModifierInvocation","src":"31247:15:30"},{"children":[{"attributes":{"assignments":[1757]},"children":[{"attributes":{"constant":false,"name":"batchLength","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1756,"name":"ElementaryTypeName","src":"31273:7:30"}],"id":1757,"name":"VariableDeclaration","src":"31273:19:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1751,"type":"bytes memory","value":"_transactionBatch"},"id":1758,"name":"Identifier","src":"31295:17:30"}],"id":1759,"name":"MemberAccess","src":"31295:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1760,"name":"Literal","src":"31322:2:30"}],"id":1761,"name":"BinaryOperation","src":"31295:29:30"}],"id":1762,"name":"VariableDeclarationStatement","src":"31273:51:30"},{"attributes":{"assignments":[1764]},"children":[{"attributes":{"constant":false,"name":"remainingBytesLength","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1763,"name":"ElementaryTypeName","src":"31368:7:30"}],"id":1764,"name":"VariableDeclaration","src":"31368:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1751,"type":"bytes memory","value":"_transactionBatch"},"id":1765,"name":"Identifier","src":"31399:17:30"}],"id":1766,"name":"MemberAccess","src":"31399:24:30"}],"id":1767,"name":"VariableDeclarationStatement","src":"31368:55:30"},{"attributes":{"assignments":[1769]},"children":[{"attributes":{"constant":false,"name":"pos","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1768,"name":"ElementaryTypeName","src":"31468:7:30"}],"id":1769,"name":"VariableDeclaration","src":"31468:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1770,"name":"Literal","src":"31482:2:30"}],"id":1771,"name":"VariableDeclarationStatement","src":"31468:16:30"},{"attributes":{"assignments":[1773],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"destination","scope":1831,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1772,"name":"ElementaryTypeName","src":"31569:7:30"}],"id":1773,"name":"VariableDeclaration","src":"31569:19:30"}],"id":1774,"name":"VariableDeclarationStatement","src":"31569:19:30"},{"attributes":{"assignments":[1776],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1775,"name":"ElementaryTypeName","src":"31621:7:30"}],"id":1776,"name":"VariableDeclaration","src":"31621:13:30"}],"id":1777,"name":"VariableDeclarationStatement","src":"31621:13:30"},{"attributes":{"assignments":[1779],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dataLength","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1778,"name":"ElementaryTypeName","src":"31665:7:30"}],"id":1779,"name":"VariableDeclaration","src":"31665:18:30"}],"id":1780,"name":"VariableDeclarationStatement","src":"31665:18:30"},{"attributes":{"assignments":[1782],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"data","scope":1831,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1781,"name":"ElementaryTypeName","src":"31723:5:30"}],"id":1782,"name":"VariableDeclaration","src":"31723:17:30"}],"id":1783,"name":"VariableDeclarationStatement","src":"31723:17:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"pos"},"id":1784,"name":"Identifier","src":"31771:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1757,"type":"uint256","value":"batchLength"},"id":1785,"name":"Identifier","src":"31777:11:30"}],"id":1786,"name":"BinaryOperation","src":"31771:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"remainingBytesLength"},"id":1787,"name":"Identifier","src":"31914:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"remainingBytesLength"},"id":1788,"name":"Identifier","src":"31937:20:30"}],"id":1789,"name":"MemberAccess","src":"31937:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":1790,"name":"Literal","src":"31962:2:30"}],"id":1791,"name":"FunctionCall","src":"31937:28:30"}],"id":1792,"name":"Assignment","src":"31914:51:30"}],"id":1793,"name":"ExpressionStatement","src":"31914:51:30"},{"attributes":{"externalReferences":[{"destination":{"declaration":1773,"isOffset":false,"isSlot":false,"src":"32122:11:30","valueSize":1}},{"_transactionBatch":{"declaration":1751,"isOffset":false,"isSlot":false,"src":"32155:17:30","valueSize":1}},{"pos":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"32174:3:30","valueSize":1}},{"dataLength":{"declaration":1779,"isOffset":false,"isSlot":false,"src":"32481:10:30","valueSize":1}},{"value":{"declaration":1776,"isOffset":false,"isSlot":false,"src":"32265:5:30","valueSize":1}},{"pos":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"32307:3:30","valueSize":1}},{"_transactionBatch":{"declaration":1751,"isOffset":false,"isSlot":false,"src":"32284:17:30","valueSize":1}},{"data":{"declaration":1782,"isOffset":false,"isSlot":false,"src":"32555:4:30","valueSize":1}},{"pos":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"32528:3:30","valueSize":1}},{"_transactionBatch":{"declaration":1751,"isOffset":false,"isSlot":false,"src":"32505:17:30","valueSize":1}},{"pos":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"32590:3:30","valueSize":1}},{"_transactionBatch":{"declaration":1751,"isOffset":false,"isSlot":false,"src":"32567:17:30","valueSize":1}}],"operations":"{\n destination := shr(96, mload(add(_transactionBatch, pos)))\n value := mload(add(_transactionBatch, add(pos, 20)))\n dataLength := mload(add(_transactionBatch, add(pos, 52)))\n data := add(_transactionBatch, add(pos, 52))\n}"},"children":[],"id":1794,"name":"InlineAssembly","src":"31979:634:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"pos"},"id":1795,"name":"Identifier","src":"32703:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"pos"},"id":1796,"name":"Identifier","src":"32709:3:30"}],"id":1797,"name":"MemberAccess","src":"32709:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1779,"type":"uint256","value":"dataLength"},"id":1798,"name":"Identifier","src":"32717:10:30"}],"id":1799,"name":"FunctionCall","src":"32709:19:30"}],"id":1800,"name":"MemberAccess","src":"32709:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":1801,"name":"Literal","src":"32733:2:30"}],"id":1802,"name":"FunctionCall","src":"32709:27:30"}],"id":1803,"name":"Assignment","src":"32703:33:30"}],"id":1804,"name":"ExpressionStatement","src":"32703:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d4d7e869602fd07d121f8992a03b812eac20f2f3831f876bce9993aae915a2b","typeString":"literal_string \"out of bounds\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1805,"name":"Identifier","src":"32841:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"pos"},"id":1806,"name":"Identifier","src":"32849:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1757,"type":"uint256","value":"batchLength"},"id":1807,"name":"Identifier","src":"32856:11:30"}],"id":1808,"name":"BinaryOperation","src":"32849:18:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f6620626f756e6473","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of bounds\"","value":"out of bounds"},"id":1809,"name":"Literal","src":"32869:15:30"}],"id":1810,"name":"FunctionCall","src":"32841:44:30"}],"id":1811,"name":"ExpressionStatement","src":"32841:44:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1779,"type":"uint256","value":"dataLength"},"id":1812,"name":"Identifier","src":"32956:10:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1813,"name":"Literal","src":"32970:1:30"}],"id":1814,"name":"BinaryOperation","src":"32956:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"bytes memory","value":"data"},"id":1815,"name":"Identifier","src":"32991:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":1816,"name":"ElementaryTypeNameExpression","src":"32998:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":1817,"name":"Literal","src":"33004:2:30"}],"id":1818,"name":"FunctionCall","src":"32998:9:30"}],"id":1819,"name":"Assignment","src":"32991:16:30"}],"id":1820,"name":"ExpressionStatement","src":"32991:16:30"}],"id":1821,"name":"Block","src":"32973:49:30"}],"id":1822,"name":"IfStatement","src":"32952:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"function (address,uint256,bytes memory) returns (bytes memory)","value":"executeTransaction"},"id":1823,"name":"Identifier","src":"33130:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1773,"type":"address","value":"destination"},"id":1824,"name":"Identifier","src":"33149:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1776,"type":"uint256","value":"value"},"id":1825,"name":"Identifier","src":"33162:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"bytes memory","value":"data"},"id":1826,"name":"Identifier","src":"33169:4:30"}],"id":1827,"name":"FunctionCall","src":"33130:44:30"}],"id":1828,"name":"ExpressionStatement","src":"33130:44:30"}],"id":1829,"name":"Block","src":"31790:1395:30"}],"id":1830,"name":"WhileStatement","src":"31764:1421:30"}],"id":1831,"name":"Block","src":"31263:1928:30"}],"id":1832,"name":"FunctionDefinition","src":"31175:2016:30"},{"attributes":{"documentation":"@dev Convert ERC20 token amount to the corresponding ether amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToEther","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1833,"name":"ElementaryTypeName","src":"33402:7:30"}],"id":1834,"name":"VariableDeclaration","src":"33402:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":1872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1835,"name":"ElementaryTypeName","src":"33418:7:30"}],"id":1836,"name":"VariableDeclaration","src":"33418:15:30"}],"id":1837,"name":"ParameterList","src":"33401:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1838,"name":"ElementaryTypeName","src":"33456:7:30"}],"id":1839,"name":"VariableDeclaration","src":"33456:7:30"}],"id":1840,"name":"ParameterList","src":"33455:9:30"},{"children":[{"attributes":{"assignments":[null,1842,1844,1846,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":1871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1841,"name":"ElementaryTypeName","src":"33545:7:30"}],"id":1842,"name":"VariableDeclaration","src":"33545:17:30"},{"attributes":{"constant":false,"name":"rate","scope":1871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1843,"name":"ElementaryTypeName","src":"33564:7:30"}],"id":1844,"name":"VariableDeclaration","src":"33564:12:30"},{"attributes":{"constant":false,"name":"available","scope":1871,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1845,"name":"ElementaryTypeName","src":"33578:4:30"}],"id":1846,"name":"VariableDeclaration","src":"33578:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":1847,"name":"Identifier","src":"33602:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"address","value":"_token"},"id":1848,"name":"Identifier","src":"33616:6:30"}],"id":1849,"name":"FunctionCall","src":"33602:21:30"}],"id":1850,"name":"VariableDeclarationStatement","src":"33542:81:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1846,"type":"bool","value":"available"},"id":1851,"name":"Identifier","src":"33703:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1852,"name":"Identifier","src":"33728:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1844,"type":"uint256","value":"rate"},"id":1853,"name":"Identifier","src":"33736:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1854,"name":"Literal","src":"33744:1:30"}],"id":1855,"name":"BinaryOperation","src":"33736:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":1856,"name":"Literal","src":"33747:8:30"}],"id":1857,"name":"FunctionCall","src":"33728:28:30"}],"id":1858,"name":"ExpressionStatement","src":"33728:28:30"},{"attributes":{"functionReturnParameters":1840},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2676,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2651,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1836,"type":"uint256","value":"_amount"},"id":1859,"name":"Identifier","src":"33861:7:30"}],"id":1860,"name":"MemberAccess","src":"33861:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1844,"type":"uint256","value":"rate"},"id":1861,"name":"Identifier","src":"33873:4:30"}],"id":1862,"name":"FunctionCall","src":"33861:17:30"}],"id":1863,"name":"MemberAccess","src":"33861:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1842,"type":"uint256","value":"magnitude"},"id":1864,"name":"Identifier","src":"33883:9:30"}],"id":1865,"name":"FunctionCall","src":"33861:32:30"}],"id":1866,"name":"Return","src":"33854:39:30"}],"id":1867,"name":"Block","src":"33714:190:30"}],"id":1868,"name":"IfStatement","src":"33699:205:30"},{"attributes":{"functionReturnParameters":1840},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1869,"name":"Literal","src":"33920:1:30"}],"id":1870,"name":"Return","src":"33913:8:30"}],"id":1871,"name":"Block","src":"33465:463:30"}],"id":1872,"name":"FunctionDefinition","src":"33378:550:30"},{"attributes":{"documentation":"@dev Convert ether or ERC20 token amount to the corresponding stablecoin amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToStablecoin","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1962,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1873,"name":"ElementaryTypeName","src":"34158:7:30"}],"id":1874,"name":"VariableDeclaration","src":"34158:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":1962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1875,"name":"ElementaryTypeName","src":"34174:7:30"}],"id":1876,"name":"VariableDeclaration","src":"34174:15:30"}],"id":1877,"name":"ParameterList","src":"34157:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1878,"name":"ElementaryTypeName","src":"34212:7:30"}],"id":1879,"name":"VariableDeclaration","src":"34212:7:30"}],"id":1880,"name":"ParameterList","src":"34211:9:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"address","value":"_token"},"id":1881,"name":"Identifier","src":"34332:6:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3244,"type":"function () view returns (address)","value":"_stablecoin"},"id":1882,"name":"Identifier","src":"34342:11:30"}],"id":1883,"name":"FunctionCall","src":"34342:13:30"}],"id":1884,"name":"BinaryOperation","src":"34332:23:30"},{"children":[{"attributes":{"functionReturnParameters":1880},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1876,"type":"uint256","value":"_amount"},"id":1885,"name":"Identifier","src":"34378:7:30"}],"id":1886,"name":"Return","src":"34371:14:30"}],"id":1887,"name":"Block","src":"34357:39:30"}],"id":1888,"name":"IfStatement","src":"34328:68:30"},{"attributes":{"assignments":[1890]},"children":[{"attributes":{"constant":false,"name":"amountToSend","scope":1961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1889,"name":"ElementaryTypeName","src":"34405:7:30"}],"id":1890,"name":"VariableDeclaration","src":"34405:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1876,"type":"uint256","value":"_amount"},"id":1891,"name":"Identifier","src":"34428:7:30"}],"id":1892,"name":"VariableDeclarationStatement","src":"34405:30:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"address","value":"_token"},"id":1893,"name":"Identifier","src":"34482:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1894,"name":"ElementaryTypeNameExpression","src":"34492:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1895,"name":"Literal","src":"34500:1:30"}],"id":1896,"name":"FunctionCall","src":"34492:10:30"}],"id":1897,"name":"BinaryOperation","src":"34482:20:30"},{"children":[{"attributes":{"assignments":[null,1899,1901,1903,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":1930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1898,"name":"ElementaryTypeName","src":"34654:7:30"}],"id":1899,"name":"VariableDeclaration","src":"34654:17:30"},{"attributes":{"constant":false,"name":"rate","scope":1930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1900,"name":"ElementaryTypeName","src":"34673:7:30"}],"id":1901,"name":"VariableDeclaration","src":"34673:12:30"},{"attributes":{"constant":false,"name":"available","scope":1930,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1902,"name":"ElementaryTypeName","src":"34687:4:30"}],"id":1903,"name":"VariableDeclaration","src":"34687:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":1904,"name":"Identifier","src":"34711:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"address","value":"_token"},"id":1905,"name":"Identifier","src":"34725:6:30"}],"id":1906,"name":"FunctionCall","src":"34711:21:30"}],"id":1907,"name":"VariableDeclarationStatement","src":"34651:81:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1908,"name":"Identifier","src":"34835:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1903,"type":"bool","value":"available"},"id":1909,"name":"Identifier","src":"34843:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":1910,"name":"Literal","src":"34854:21:30"}],"id":1911,"name":"FunctionCall","src":"34835:41:30"}],"id":1912,"name":"ExpressionStatement","src":"34835:41:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1913,"name":"Identifier","src":"34890:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1901,"type":"uint256","value":"rate"},"id":1914,"name":"Identifier","src":"34898:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1915,"name":"Literal","src":"34906:1:30"}],"id":1916,"name":"BinaryOperation","src":"34898:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":1917,"name":"Literal","src":"34909:8:30"}],"id":1918,"name":"FunctionCall","src":"34890:28:30"}],"id":1919,"name":"ExpressionStatement","src":"34890:28:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"amountToSend"},"id":1920,"name":"Identifier","src":"35020:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2676,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2651,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1876,"type":"uint256","value":"_amount"},"id":1921,"name":"Identifier","src":"35035:7:30"}],"id":1922,"name":"MemberAccess","src":"35035:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1901,"type":"uint256","value":"rate"},"id":1923,"name":"Identifier","src":"35047:4:30"}],"id":1924,"name":"FunctionCall","src":"35035:17:30"}],"id":1925,"name":"MemberAccess","src":"35035:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1899,"type":"uint256","value":"magnitude"},"id":1926,"name":"Identifier","src":"35057:9:30"}],"id":1927,"name":"FunctionCall","src":"35035:32:30"}],"id":1928,"name":"Assignment","src":"35020:47:30"}],"id":1929,"name":"ExpressionStatement","src":"35020:47:30"}],"id":1930,"name":"Block","src":"34504:574:30"}],"id":1931,"name":"IfStatement","src":"34478:600:30"},{"attributes":{"assignments":[null,1933,1935,1937,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1932,"name":"ElementaryTypeName","src":"35195:7:30"}],"id":1933,"name":"VariableDeclaration","src":"35195:27:30"},{"attributes":{"constant":false,"name":"stablecoinRate","scope":1961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1934,"name":"ElementaryTypeName","src":"35224:7:30"}],"id":1935,"name":"VariableDeclaration","src":"35224:22:30"},{"attributes":{"constant":false,"name":"stablecoinAvailable","scope":1961,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1936,"name":"ElementaryTypeName","src":"35248:4:30"}],"id":1937,"name":"VariableDeclaration","src":"35248:24:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3109,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1938,"name":"Identifier","src":"35282:18:30"}],"id":1939,"name":"FunctionCall","src":"35282:20:30"}],"id":1940,"name":"VariableDeclarationStatement","src":"35192:110:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1941,"name":"Identifier","src":"35360:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bool","value":"stablecoinAvailable"},"id":1942,"name":"Identifier","src":"35368:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":1943,"name":"Literal","src":"35389:21:30"}],"id":1944,"name":"FunctionCall","src":"35360:51:30"}],"id":1945,"name":"ExpressionStatement","src":"35360:51:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18bfbbfdaee82cb0eebcce67c25e7747234386e0bcace876720c3090918b5d3f","typeString":"literal_string \"stablecoin rate=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1946,"name":"Identifier","src":"35421:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1935,"type":"uint256","value":"stablecoinRate"},"id":1947,"name":"Identifier","src":"35429:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1948,"name":"Literal","src":"35447:1:30"}],"id":1949,"name":"BinaryOperation","src":"35429:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"737461626c65636f696e20726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"stablecoin rate=0\"","value":"stablecoin rate=0"},"id":1950,"name":"Literal","src":"35450:19:30"}],"id":1951,"name":"FunctionCall","src":"35421:49:30"}],"id":1952,"name":"ExpressionStatement","src":"35421:49:30"},{"attributes":{"functionReturnParameters":1880},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2676,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2651,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"amountToSend"},"id":1953,"name":"Identifier","src":"35605:12:30"}],"id":1954,"name":"MemberAccess","src":"35605:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1933,"type":"uint256","value":"stablecoinMagnitude"},"id":1955,"name":"Identifier","src":"35622:19:30"}],"id":1956,"name":"FunctionCall","src":"35605:37:30"}],"id":1957,"name":"MemberAccess","src":"35605:41:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1935,"type":"uint256","value":"stablecoinRate"},"id":1958,"name":"Identifier","src":"35647:14:30"}],"id":1959,"name":"FunctionCall","src":"35605:57:30"}],"id":1960,"name":"Return","src":"35598:64:30"}],"id":1961,"name":"Block","src":"34221:1448:30"}],"id":1962,"name":"FunctionDefinition","src":"34129:1540:30"},{"attributes":{"documentation":"@dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses\n @param _destination address of the transaction\n @param _value ETH amount in wei\n @param _data transaction payload binary","implemented":true,"isConstructor":false,"kind":"function","name":"executeTransaction","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":2090,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1963,"name":"ElementaryTypeName","src":"35957:7:30"}],"id":1964,"name":"VariableDeclaration","src":"35957:20:30"},{"attributes":{"constant":false,"name":"_value","scope":2090,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1965,"name":"ElementaryTypeName","src":"35979:7:30"}],"id":1966,"name":"VariableDeclaration","src":"35979:14:30"},{"attributes":{"constant":false,"name":"_data","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1967,"name":"ElementaryTypeName","src":"35995:5:30"}],"id":1968,"name":"VariableDeclaration","src":"35995:18:30"}],"id":1969,"name":"ParameterList","src":"35956:58:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1972,"name":"ElementaryTypeName","src":"36047:5:30"}],"id":1973,"name":"VariableDeclaration","src":"36047:12:30"}],"id":1974,"name":"ParameterList","src":"36046:14:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1970,"name":"Identifier","src":"36022:15:30"}],"id":1971,"name":"ModifierInvocation","src":"36022:15:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":1975,"name":"Identifier","src":"36266:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":1976,"name":"Identifier","src":"36279:12:30"}],"id":1977,"name":"IndexAccess","src":"36266:26:30"}],"id":1978,"name":"UnaryOperation","src":"36265:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1979,"name":"Identifier","src":"36308:11:30"}],"id":1981,"name":"MemberAccess","src":"36308:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1966,"type":"uint256","value":"_value"},"id":1982,"name":"Identifier","src":"36334:6:30"}],"id":1983,"name":"FunctionCall","src":"36308:33:30"}],"id":1984,"name":"ExpressionStatement","src":"36308:33:30"}],"id":1985,"name":"Block","src":"36294:58:30"}],"id":1986,"name":"IfStatement","src":"36261:91:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":2201,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1987,"name":"ElementaryTypeNameExpression","src":"36453:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":1988,"name":"Identifier","src":"36461:12:30"}],"id":1989,"name":"FunctionCall","src":"36453:21:30"}],"id":1990,"name":"MemberAccess","src":"36453:32:30"}],"id":1991,"name":"FunctionCall","src":"36453:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3198,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":1992,"name":"Identifier","src":"36491:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":1993,"name":"Identifier","src":"36509:12:30"}],"id":1994,"name":"FunctionCall","src":"36491:31:30"}],"id":1995,"name":"BinaryOperation","src":"36453:69:30"},{"children":[{"attributes":{"assignments":[1997],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"to","scope":2059,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1996,"name":"ElementaryTypeName","src":"36625:7:30"}],"id":1997,"name":"VariableDeclaration","src":"36625:10:30"}],"id":1998,"name":"VariableDeclarationStatement","src":"36625:10:30"},{"attributes":{"assignments":[2000],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"amount","scope":2059,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1999,"name":"ElementaryTypeName","src":"36649:7:30"}],"id":2000,"name":"VariableDeclaration","src":"36649:14:30"}],"id":2001,"name":"VariableDeclarationStatement","src":"36649:14:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"address","value":"to"},"id":2002,"name":"Identifier","src":"36678:2:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2000,"type":"uint256","value":"amount"},"id":2003,"name":"Identifier","src":"36682:6:30"}],"id":2004,"name":"TupleExpression","src":"36677:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3182,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":2005,"name":"Identifier","src":"36692:27:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2006,"name":"Identifier","src":"36720:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2007,"name":"Identifier","src":"36734:5:30"}],"id":2008,"name":"FunctionCall","src":"36692:48:30"}],"id":2009,"name":"Assignment","src":"36677:63:30"}],"id":2010,"name":"ExpressionStatement","src":"36677:63:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2011,"name":"Identifier","src":"36759:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"address","value":"to"},"id":2012,"name":"Identifier","src":"36772:2:30"}],"id":2013,"name":"IndexAccess","src":"36759:16:30"}],"id":2014,"name":"UnaryOperation","src":"36758:17:30"},{"children":[{"attributes":{"assignments":[2016]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2028,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2015,"name":"ElementaryTypeName","src":"36962:7:30"}],"id":2016,"name":"VariableDeclaration","src":"36962:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1872,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2017,"name":"Identifier","src":"36983:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2018,"name":"Identifier","src":"36998:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2000,"type":"uint256","value":"amount"},"id":2019,"name":"Identifier","src":"37012:6:30"}],"id":2020,"name":"FunctionCall","src":"36983:36:30"}],"id":2021,"name":"VariableDeclarationStatement","src":"36962:57:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2022,"name":"Identifier","src":"37037:11:30"}],"id":2024,"name":"MemberAccess","src":"37037:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2016,"type":"uint256","value":"etherValue"},"id":2025,"name":"Identifier","src":"37063:10:30"}],"id":2026,"name":"FunctionCall","src":"37037:37:30"}],"id":2027,"name":"ExpressionStatement","src":"37037:37:30"}],"id":2028,"name":"Block","src":"36777:312:30"}],"id":2029,"name":"IfStatement","src":"36754:335:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"callOptionalReturn","referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":2030,"name":"Identifier","src":"37238:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2031,"name":"Identifier","src":"37244:12:30"}],"id":2032,"name":"FunctionCall","src":"37238:19:30"}],"id":2033,"name":"MemberAccess","src":"37238:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2034,"name":"Identifier","src":"37277:5:30"}],"id":2035,"name":"FunctionCall","src":"37238:45:30"}],"id":2036,"name":"ExpressionStatement","src":"37238:45:30"},{"attributes":{"assignments":[2038]},"children":[{"attributes":{"constant":false,"name":"b","scope":2059,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2037,"name":"ElementaryTypeName","src":"37387:5:30"}],"id":2038,"name":"VariableDeclaration","src":"37387:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2039,"name":"ElementaryTypeName","src":"37408:5:30"}],"id":2040,"name":"NewExpression","src":"37404:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2041,"name":"Literal","src":"37414:2:30"}],"id":2042,"name":"FunctionCall","src":"37404:13:30"}],"id":2043,"name":"VariableDeclarationStatement","src":"37387:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2038,"type":"bytes memory","value":"b"},"id":2044,"name":"Identifier","src":"37431:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2045,"name":"Literal","src":"37433:2:30"}],"id":2046,"name":"IndexAccess","src":"37431:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2047,"name":"Literal","src":"37439:4:30"}],"id":2048,"name":"Assignment","src":"37431:12:30"}],"id":2049,"name":"ExpressionStatement","src":"37431:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1323,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2050,"name":"Identifier","src":"37463:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2051,"name":"Identifier","src":"37483:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1966,"type":"uint256","value":"_value"},"id":2052,"name":"Identifier","src":"37497:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2053,"name":"Identifier","src":"37505:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2038,"type":"bytes memory","value":"b"},"id":2054,"name":"Identifier","src":"37512:1:30"}],"id":2055,"name":"FunctionCall","src":"37463:51:30"}],"id":2056,"name":"EmitStatement","src":"37458:56:30"},{"attributes":{"functionReturnParameters":1974},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2038,"type":"bytes memory","value":"b"},"id":2057,"name":"Identifier","src":"37535:1:30"}],"id":2058,"name":"Return","src":"37528:8:30"}],"id":2059,"name":"Block","src":"36524:1023:30"}],"id":2060,"name":"IfStatement","src":"36449:1098:30"},{"attributes":{"assignments":[2062,2064]},"children":[{"attributes":{"constant":false,"name":"success","scope":2089,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2061,"name":"ElementaryTypeName","src":"37558:4:30"}],"id":2062,"name":"VariableDeclaration","src":"37558:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":2089,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2063,"name":"ElementaryTypeName","src":"37572:5:30"}],"id":2064,"name":"VariableDeclaration","src":"37572:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (bytes memory) payable returns (bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2065,"name":"Identifier","src":"37599:12:30"}],"id":2066,"name":"MemberAccess","src":"37599:17:30"}],"id":2067,"name":"MemberAccess","src":"37599:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1966,"type":"uint256","value":"_value"},"id":2068,"name":"Identifier","src":"37623:6:30"}],"id":2069,"name":"FunctionCall","src":"37599:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2070,"name":"Identifier","src":"37631:5:30"}],"id":2071,"name":"FunctionCall","src":"37599:38:30"}],"id":2072,"name":"VariableDeclarationStatement","src":"37557:80:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2073,"name":"Identifier","src":"37647:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2062,"type":"bool","value":"success"},"id":2074,"name":"Identifier","src":"37655:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":2075,"name":"ElementaryTypeNameExpression","src":"37664:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2064,"type":"bytes memory","value":"returndata"},"id":2076,"name":"Identifier","src":"37671:10:30"}],"id":2077,"name":"FunctionCall","src":"37664:18:30"}],"id":2078,"name":"FunctionCall","src":"37647:36:30"}],"id":2079,"name":"ExpressionStatement","src":"37647:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1323,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2080,"name":"Identifier","src":"37699:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2081,"name":"Identifier","src":"37719:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1966,"type":"uint256","value":"_value"},"id":2082,"name":"Identifier","src":"37733:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2083,"name":"Identifier","src":"37741:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2064,"type":"bytes memory","value":"returndata"},"id":2084,"name":"Identifier","src":"37748:10:30"}],"id":2085,"name":"FunctionCall","src":"37699:60:30"}],"id":2086,"name":"EmitStatement","src":"37694:65:30"},{"attributes":{"functionReturnParameters":1974},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2064,"type":"bytes memory","value":"returndata"},"id":2087,"name":"Identifier","src":"37846:10:30"}],"id":2088,"name":"Return","src":"37839:17:30"}],"id":2089,"name":"Block","src":"36061:1802:30"}],"id":2090,"name":"FunctionDefinition","src":"35929:1934:30"},{"attributes":{"documentation":"@dev Implements EIP-1654: receives the hashed message(bytes32)\n https://github.com/ethereum/EIPs/issues/1654.md\n @param _hashedData Hashed data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _dataHash","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hashedData","scope":2116,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2091,"name":"ElementaryTypeName","src":"38172:7:30"}],"id":2092,"name":"VariableDeclaration","src":"38172:19:30"},{"attributes":{"constant":false,"name":"_signature","scope":2116,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2093,"name":"ElementaryTypeName","src":"38193:5:30"}],"id":2094,"name":"VariableDeclaration","src":"38193:23:30"}],"id":2095,"name":"ParameterList","src":"38171:46:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2116,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2096,"name":"ElementaryTypeName","src":"38239:6:30"}],"id":2097,"name":"VariableDeclaration","src":"38239:6:30"}],"id":2098,"name":"ParameterList","src":"38238:8:30"},{"children":[{"attributes":{"assignments":[2100]},"children":[{"attributes":{"constant":false,"name":"from","scope":2115,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2099,"name":"ElementaryTypeName","src":"38257:7:30"}],"id":2100,"name":"VariableDeclaration","src":"38257:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"recover","referencedDeclaration":2266,"type":"function (bytes32,bytes memory) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"bytes32","value":"_hashedData"},"id":2101,"name":"Identifier","src":"38272:11:30"}],"id":2102,"name":"MemberAccess","src":"38272:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"bytes memory","value":"_signature"},"id":2103,"name":"Identifier","src":"38292:10:30"}],"id":2104,"name":"FunctionCall","src":"38272:31:30"}],"id":2105,"name":"VariableDeclarationStatement","src":"38257:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2106,"name":"Identifier","src":"38313:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2107,"name":"Identifier","src":"38321:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2100,"type":"address","value":"from"},"id":2108,"name":"Identifier","src":"38330:4:30"}],"id":2109,"name":"FunctionCall","src":"38321:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":2110,"name":"Literal","src":"38337:19:30"}],"id":2111,"name":"FunctionCall","src":"38313:44:30"}],"id":2112,"name":"ExpressionStatement","src":"38313:44:30"},{"attributes":{"functionReturnParameters":2098},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1368,"type":"bytes4","value":"_EIP_1654"},"id":2113,"name":"Identifier","src":"38374:9:30"}],"id":2114,"name":"Return","src":"38367:16:30"}],"id":2115,"name":"Block","src":"38247:143:30"}],"id":2116,"name":"FunctionDefinition","src":"38146:244:30"},{"attributes":{"documentation":"@dev Transfers the specified asset to the recipient's address.\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"transfer","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2182,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2117,"name":"ElementaryTypeName","src":"38685:15:30"}],"id":2118,"name":"VariableDeclaration","src":"38685:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":2182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2119,"name":"ElementaryTypeName","src":"38706:7:30"}],"id":2120,"name":"VariableDeclaration","src":"38706:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2182,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2121,"name":"ElementaryTypeName","src":"38722:7:30"}],"id":2122,"name":"VariableDeclaration","src":"38722:15:30"}],"id":2123,"name":"ParameterList","src":"38684:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":2129,"name":"ParameterList","src":"38781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2124,"name":"Identifier","src":"38746:15:30"}],"id":2125,"name":"ModifierInvocation","src":"38746:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1426,"type":"modifier (uint256)","value":"isNotZero"},"id":2126,"name":"Identifier","src":"38762:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2127,"name":"Identifier","src":"38772:7:30"}],"id":2128,"name":"ModifierInvocation","src":"38762:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_680f6a32e9231c9e20746c0afa2d6c3a5c617d8ed04badee4157b674b70920f8","typeString":"literal_string \"destination=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2130,"name":"Identifier","src":"38852:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"address payable","value":"_to"},"id":2131,"name":"Identifier","src":"38860:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2132,"name":"ElementaryTypeNameExpression","src":"38867:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2133,"name":"Literal","src":"38875:1:30"}],"id":2134,"name":"FunctionCall","src":"38867:10:30"}],"id":2135,"name":"BinaryOperation","src":"38860:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"64657374696e6174696f6e3d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"destination=0\"","value":"destination=0"},"id":2136,"name":"Literal","src":"38879:15:30"}],"id":2137,"name":"FunctionCall","src":"38852:43:30"}],"id":2138,"name":"ExpressionStatement","src":"38852:43:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2139,"name":"Identifier","src":"38984:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"address payable","value":"_to"},"id":2140,"name":"Identifier","src":"38997:3:30"}],"id":2141,"name":"IndexAccess","src":"38984:17:30"}],"id":2142,"name":"UnaryOperation","src":"38983:18:30"},{"children":[{"attributes":{"assignments":[2144]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2143,"name":"ElementaryTypeName","src":"39080:7:30"}],"id":2144,"name":"VariableDeclaration","src":"39080:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2145,"name":"Identifier","src":"39101:7:30"}],"id":2146,"name":"VariableDeclarationStatement","src":"39080:28:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"address","value":"_asset"},"id":2147,"name":"Identifier","src":"39205:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2148,"name":"ElementaryTypeNameExpression","src":"39215:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2149,"name":"Literal","src":"39223:1:30"}],"id":2150,"name":"FunctionCall","src":"39215:10:30"}],"id":2151,"name":"BinaryOperation","src":"39205:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2144,"type":"uint256","value":"etherValue"},"id":2152,"name":"Identifier","src":"39245:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1872,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2153,"name":"Identifier","src":"39258:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"address","value":"_asset"},"id":2154,"name":"Identifier","src":"39273:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2155,"name":"Identifier","src":"39281:7:30"}],"id":2156,"name":"FunctionCall","src":"39258:31:30"}],"id":2157,"name":"Assignment","src":"39245:44:30"}],"id":2158,"name":"ExpressionStatement","src":"39245:44:30"}],"id":2159,"name":"Block","src":"39227:77:30"}],"id":2160,"name":"IfStatement","src":"39201:103:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2161,"name":"Identifier","src":"39515:11:30"}],"id":2163,"name":"MemberAccess","src":"39515:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2144,"type":"uint256","value":"etherValue"},"id":2164,"name":"Identifier","src":"39541:10:30"}],"id":2165,"name":"FunctionCall","src":"39515:37:30"}],"id":2166,"name":"ExpressionStatement","src":"39515:37:30"}],"id":2167,"name":"Block","src":"39003:560:30"}],"id":2168,"name":"IfStatement","src":"38979:584:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3284,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2169,"name":"Identifier","src":"39638:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"address payable","value":"_to"},"id":2170,"name":"Identifier","src":"39652:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"address","value":"_asset"},"id":2171,"name":"Identifier","src":"39657:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2172,"name":"Identifier","src":"39665:7:30"}],"id":2173,"name":"FunctionCall","src":"39638:35:30"}],"id":2174,"name":"ExpressionStatement","src":"39638:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1357,"type":"function (address,address,uint256)","value":"Transferred"},"id":2175,"name":"Identifier","src":"39724:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"address payable","value":"_to"},"id":2176,"name":"Identifier","src":"39736:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"address","value":"_asset"},"id":2177,"name":"Identifier","src":"39741:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2178,"name":"Identifier","src":"39749:7:30"}],"id":2179,"name":"FunctionCall","src":"39724:33:30"}],"id":2180,"name":"EmitStatement","src":"39719:38:30"}],"id":2181,"name":"Block","src":"38781:983:30"}],"id":2182,"name":"FunctionDefinition","src":"38667:1097:30"}],"id":2183,"name":"ContractDefinition","src":"22209:17557:30"}],"id":2184,"name":"SourceUnit","src":"757:39010:30"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ECDSA.sol:ECDSA":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","srcmap":"1392:3417:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1392:3417:2:-;;;;;;;;"},"externals/ERC165.sol:ERC165":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:5:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:6:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:8:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:9:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:9;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:9;-1:-1:-1;;;;;2567:10:9;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:9;;;;;;","srcmap-runtime":"1897:2174:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:15;;;;;;;;;:::i;:::-;;573:184:19;;;;;;;;;:::i;1721:953:16:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:12;;;;;;;;;:::i;:::-;;;;;;;;;612:169:18;;;;;;;;;:::i;505:166:14:-;;;;;;;;;:::i;980:228:13:-;;;;;;;;;:::i;3269:231:9:-;;;;;;;;;:::i;4901:153:15:-;;;;;;;;;:::i;974:127:19:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:15;;;;;;;;;:::i;582:292:12:-;;;;;;;;;:::i;844:101:17:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:13:-;;;;;;;;;:::i;4519:168:15:-;;;;;;;;;:::i;3703:366:9:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:15;;;;;;;;;:::i;838:108:14:-;;;;;;;;;:::i;1023:133:18:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:15;;;;;;;;;:::i;681:140:13:-;;;;;;;;;:::i;858:226:16:-;;;;;;;;;:::i;1514:127:13:-;;;;;;;;;:::i;2320:80:9:-;;;;;;;;;:::i;1107:169:19:-;1174:4;-1:-1:-1;;;;;;1197:32:19;;-1:-1:-1;;;1197:32:19;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:15:-;2932:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:15;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:15;;:18;-1:-1:-1;;3185:18:15;:15;:18;;-1:-1:-1;3185:18:15:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:15;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:15;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:15;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:15;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:15;;4052:6;;-1:-1:-1;4060:20:15;;;;-1:-1:-1;4082:17:15;4012:11;:88::i;:::-;400:1:11;;;;;2854:1263:15;;;;:::o;573:184:19:-;668:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:19;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:16:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:16;;;;;;;;;;-1:-1:-1;;;;;1849:29:16;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:16;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:16;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:16;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:16;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:16;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:16;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:16;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:16;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:16;;-1:-1:-1;2373:103:16;-1:-1:-1;2489:8:16;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:16;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:16;;-1:-1:-1;;;1721:953:16;;;;;:::o;1195:454:12:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:12;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:12;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:12;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:12;-1:-1:-1;1195:454:12;;;;;;:::o;612:169:18:-;687:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:18;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:18;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:14:-;584:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:14;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:13;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:13:o;3269:231:9:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:9;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:9;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:15:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:19:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:19;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:15:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:12:-;674:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:12;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:12;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:17:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:17;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:13;1302:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:13;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:15:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:9;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:9;-1:-1:-1;3844:6:9;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:9;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:9;;3840:199;;;-1:-1:-1;3703:366:9;;;;:::o;5193:128:15:-;5247:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:15;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:14:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:14;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:18;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:15:-;5617:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:15;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:15;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:15;;:16;-1:-1:-1;5701:4:15;;-1:-1:-1;5701:4:15;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:11;5541:225:15;;;;:::o;681:140:13:-;743:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:13;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:16:-;955:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:16;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:16;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:16;-1:-1:-1;;;;;971:43:16;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:13:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:13;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:18:-;1229:4;-1:-1:-1;;;;;;1252:34:18;;-1:-1:-1;;;1252:34:18;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:9:-;3596:3;;:15;;-1:-1:-1;;;3596:15:9;;3564:4;;;;-1:-1:-1;;;;;3596:3:9;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:9;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:9;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:9;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:9;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:10:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:8:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:15:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:15;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:15;;;;;;-1:-1:-1;;6760:43:15;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:15;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:15;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:10:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:10;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:10;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:10;;:::o;414:204:11:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:11;576:10;570:17;-1:-1:-1;;;566:36:11;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:11;87:34:-1;-1:-1;;;;;;776:20:11;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:11;743:64::o;951:169:17:-;1018:4;-1:-1:-1;;;;;;1041:32:17;;-1:-1:-1;;;1041:32:17;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:10:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:10;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:10:o;8685:393:8:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:8;87:34:-1;135:17;;-1:-1;8858:14:8;-1:-1:-1;8839:33:8;-1:-1:-1;8960:2:8;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:8;;8685:393;-1:-1:-1;;;;;8685:393:8:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:8:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:8;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:8;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:16:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:16;;:11;-1:-1:-1;;;;;2770:37:16;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:8:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:8;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:8;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:8;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:8;;513:2;499:26;489:42;;468:73::o;6035:245:15:-;6102:4;-1:-1:-1;;;;;;6125:38:15;;-1:-1:-1;;;6125:38:15;;:93;;-1:-1:-1;;;;;;;6182:36:15;;-1:-1:-1;;;6182:36:15;6125:93;:148;;;;6237:36;6261:11;1019:4:14;-1:-1:-1;;;;;;1042:40:14;;-1:-1:-1;;;1042:40:14;;:80;;;1086:36;1110:11;1714:4:13;-1:-1:-1;;;;;;1737:32:13;;-1:-1:-1;;;1737:32:13;;:71;;-1:-1:-1;;;;;;;1773:35:13;;-1:-1:-1;;;1773:35:13;1737:71;:111;;;;1812:36;1836:11;1722:4:12;-1:-1:-1;;;;;;1745:31:12;;-1:-1:-1;;;1745:31:12;;:71;;-1:-1:-1;;;;;;;;;;204:32:11;;;1780:36:12;114:129:11:o;1897:2174:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:9;;;-1:-1:-1;1897:2174:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:10:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:10:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:21;;;;;;;","srcmap-runtime":"898:556:21:-;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","srcmap":"1381:8954:28:-;;;1122:66:23;1272:58;;2313:80:28;;;-1:-1:-1;;;;;;2313:80:28;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:28;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3616:558:28;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:28;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:28;;;-1:-1:-1;;;;;;4012:22:28;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:28;-1:-1:-1;;;;;4123:34:28;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:28;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:28;-1:-1:-1;;;;;7354:228:28;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:28;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:28;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:28;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:28;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:28;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:28;-1:-1:-1;;;;;6678:219:28;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:28;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:28;;:::i;1364:91:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;10221:112:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:28;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:28;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:28;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:28;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:28;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:28;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:28;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:28;-1:-1:-1;;;;;6338:204:28;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:28;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;10054:96:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:28;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:28;-1:-1:-1;;;;;7027:196:28;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:28;;;:::i;6106:102::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6169:25:28;:32;;-1:-1:-1;;;;6169:32:28;-1:-1:-1;;;6169:32:28;;;6106:102::o;7354:228::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7443:26:28;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:28;;-1:-1:-1;;;;;;7497:29:28;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:28;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:28;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:28;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:28;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:28;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:28;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:28;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:28;;:33;;-1:-1:-1;;;;;9116:12:28;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:28;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:28;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:28;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:28;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:28;4950:91;:::o;6678:219::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6766:14:28;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:28;;-1:-1:-1;;;;;;6820:25:28;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5977:17:28;:24;;-1:-1:-1;;;;5977:24:28;-1:-1:-1;;;5977:24:28;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:28;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;10221:112:28:-;10301:25;;-1:-1:-1;;;10301:25:28;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:28;;;;;9711:92::o;9448:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;9546:35:28;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:28;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:28;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5603:18:28;:25;;-1:-1:-1;;;;5603:25:28;-1:-1:-1;;;5603:25:28;;;5553:82::o;6338:204::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6424:13:28;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:28;;-1:-1:-1;;;;;;6467:24:28;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5792:18:28;:25;;-1:-1:-1;;;;5792:25:28;-1:-1:-1;;;5792:25:28;;;5741:83::o;2169:95:23:-;2242:15;;2169:95;:::o;10054:96:28:-;10126:17;;-1:-1:-1;;;10126:17:28;;;;;10054:96::o;7027:196::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7108:18:28;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:28;;-1:-1:-1;;;;;;7154:21:28;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:28;;;;;9882:93::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;1982:201:5:-;2107:68;;;-1:-1:-1;;;;;2107:68:5;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:5;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:6;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:5;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","srcmap":"1939:14907:29:-;;;1122:66:23;1272:58;;4758:506:29;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:29;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:29;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:29;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:29;:26;;;;-1:-1:-1;4995:11:29;:33;;-1:-1:-1;;;;;4995:33:29;;;-1:-1:-1;;;;;;4995:33:29;;;;;;;;;-1:-1:-1;5083:18:29;:28;;;:35;;-1:-1:-1;;5083:35:29;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:29;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:29;-1:-1:-1;;;;;;16070:136:29;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:29;-1:-1:-1;;;;;13314:334:29;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;-1:-1:-1;6040:1806:29;-1:-1:-1;6040:1806:29;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:29;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:29;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:29;;-1:-1:-1;;;;;15695:220:29;;;;;-1:-1:-1;;;;;;15695:220:29;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:29;;-1:-1:-1;7973:1237:29;-1:-1:-1;7973:1237:29;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:29;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:29;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:29;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:29;;-1:-1:-1;9368:1399:29;-1:-1:-1;9368:1399:29;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:29;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:29:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:29;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:29;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:29;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:29;;;:88;;;;-1:-1:-1;6442:35:29;;;6389:88;:142;;;;-1:-1:-1;6497:34:29;;;6389:142;:196;;;;-1:-1:-1;6551:34:29;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:29;6841:25;;-1:-1:-1;6841:25:29;;;;;;;;-1:-1:-1;6841:25:29;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:29;-1:-1:-1;;;;;7084:25:29;-1:-1:-1;;;;;7084:25:29;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:29;;;;;-1:-1:-1;;7084:306:29;;;-1:-1:-1;;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:29;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:29;-1:-1:-1;;;;;7486:10:29;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:29;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:29;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:29;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:29;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:29;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:29;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:29;-1:-1:-1;15069:72:29;-1:-1:-1;15151:23:29;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:29;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:29;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:29;;;-1:-1:-1;;;;;15364:44:29;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:29;;15188:283;;;-1:-1:-1;15487:19:29;;-1:-1:-1;;14990:523:29;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:29;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:29;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:29;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:29;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:29;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:29:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:29;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:29;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:29;;8363:65;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:29;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:29;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:29;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:29;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:29;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:29;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:29;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:29;;;;;-1:-1:-1;;;;;8926:76:29;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:29;:27;;;;;-1:-1:-1;;9075:27:29;;;:::i;:::-;-1:-1:-1;9162:31:29;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:29;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:29:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:29;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:29;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:29;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:29;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:29;;:23;-1:-1:-1;;9801:23:29;:20;:23;;-1:-1:-1;9801:23:29:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:29;;-1:-1:-1;;;10048:18:29;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:29;;:24;-1:-1:-1;;10141:24:29;:21;:24;;-1:-1:-1;10141:24:29:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:29;;-1:-1:-1;;;10187:27:29;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:29;;:34;-1:-1:-1;;10400:34:29;:21;:34;;-1:-1:-1;10400:34:29:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:29;;:34;-1:-1:-1;;10436:34:29;:21;:34;;-1:-1:-1;10436:34:29:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:29;;:29;-1:-1:-1;;10689:29:29;:21;:29;;-1:-1:-1;10689:29:29:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:29;;:29;-1:-1:-1;;10720:29:29;:21;:29;;-1:-1:-1;10720:29:29:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:29;-1:-1:-1;;;;;5399:27:29;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:29;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:29;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:29:-;16622:11;;-1:-1:-1;;;;;16622:11:29;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:29;;;-1:-1:-1;1939:14907:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"wallet.sol:AddressWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:ControllableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:DailyLimitTrait":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032","srcmap":"11411:3455:30:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"11411:3455:30:-;;;;;;;;"},"wallet.sol:GasTopUpLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:LoadLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SelfCallableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SpendLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:Wallet":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032","bin-runtime":"60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032","srcmap":"22209:17557:30:-;;;1122:66:23;1272:58;;24474:430:30;5:2:-1;;;;30:1;27;20:12;5:2;24474:430:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24474:430:30;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;24474:430:30;;;;;;;;;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1543:6:25;:18;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;-1:-1:-1;;;1571:32:25;;;;;;;;;;;;;;1687:15;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17616:93:30;;;;;;;;17296:10;17616:93;;;;;;;;;17695:3;17616:93;;;;;;-1:-1:-1;17616:93:30;;;;;;;;;;;;;17599:14;:110;;;;;;;;;;;;;;;;;-1:-1:-1;;17599:110:30;;;1341:19:26;:42;;;;20179:20:30;-1:-1:-1;;;;;20179:18:30;:20;:::i;:::-;20135:64;;;;;;;;20239:1;20217:19;:23;20209:49;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;;;;19863:5;20288:52;20268:17;:72;;;20363:79;;;;;;;;;;;;;;;;;;;20428:3;20363:79;;;;;;-1:-1:-1;20363:79:30;;;;;;;;;;;;;;20350:10;:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20350:92:30;;;;;;15352:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:11;:73;;;;;;;;;;;;;;;-1:-1:-1;15338:73:30;;;;;;;;-1:-1:-1;24869:12:30;:28;-1:-1:-1;22209:17557:30;;-1:-1:-1;;;;22209:17557:30;2887:206:26;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;;;:32;;:::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;22209:17557:30:-;;;;;;;","srcmap-runtime":"22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25196:31;;;25205:10;25196:31;;25217:9;25196:31;;;;;;;;;;;;;;;;;22209:17557;30101:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30101:137:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30101:137:30;-1:-1:-1;;;;;;30101:137:30;;:::i;:::-;;;;;;;;;;;;;;;;;;16199:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16199:104:30;;;:::i;:::-;;;;;;;;;;;;;;;;18820:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18820:286:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:286:30;;:::i;:::-;;3896:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:677:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3896:677:30;;:::i;23125:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23125:47:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23125:47:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38146:244:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38146:244:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38146:244:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38146:244:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38146:244:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38146:244:30;;-1:-1:-1;38146:244:30;;-1:-1:-1;;;;;38146:244:30:i;:::-;;;;-1:-1:-1;;;;;;38146:244:30;;;;;;;;;;;;;;25576:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25576:565:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;25576:565:30;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25576:565:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25576:565:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25576:565:30;;-1:-1:-1;25576:565:30;-1:-1:-1;25576:565:30;:::i;21466:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21466:117:30;;;:::i;28299:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28299:344:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28299:344:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28299:344:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28299:344:30;;-1:-1:-1;28299:344:30;-1:-1:-1;28299:344:30;:::i;3173:94:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3173:94:25;;;:::i;16806:179:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16806:179:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16806:179:30;;:::i;18606:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18606:106:30;;;:::i;3082:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3082:38:30;;;:::i;8300:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8300:124:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8300:124:30;;;;;;;;;;;;;;;;;2898:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2898:44:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2898:44:30;-1:-1:-1;;;;;2898:44:30;;:::i;29093:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;29093:943:30;;;;;;;;:::i;20579:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20579:233:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20579:233:30;;:::i;15817:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15817:161:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15817:161:30;;:::i;35929:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35929:1934:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;35929:1934:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;35929:1934:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;35929:1934:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35929:1934:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35929:1934:30;;-1:-1:-1;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30:i;26493:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26493:1111:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26493:1111:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26493:1111:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26493:1111:30;;-1:-1:-1;26493:1111:30;-1:-1:-1;26493:1111:30;:::i;8121:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8121:126:30;;;:::i;5523:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5523:1117:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5523:1117:30;;:::i;16023:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16023:119:30;;;:::i;10340:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10340:673:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10340:673:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10340:673:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10340:673:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10340:673:30;;-1:-1:-1;10340:673:30;-1:-1:-1;10340:673:30;:::i;3543:306:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:306:25;;;:::i;19233:304:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19233:304:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19233:304:30;;:::i;28706:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:91:30;;;:::i;1364::24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;18028:125:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:125:30;;;:::i;9505:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9505:711:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9505:711:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9505:711:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9505:711:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9505:711:30;;-1:-1:-1;9505:711:30;-1:-1:-1;9505:711:30;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;3932:85:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:85:25;;;:::i;27713:87:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27713:87:30;;;:::i;16562:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16562:100:30;;;:::i;31175:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31175:2016:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31175:2016:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31175:2016:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31175:2016:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31175:2016:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31175:2016:30;;-1:-1:-1;31175:2016:30;;-1:-1:-1;;;;;31175:2016:30:i;21796:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:145:30;;;:::i;20927:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20927:251:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20927:251:30;;:::i;2247:809:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2247:809:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;33378:550:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33378:550:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;33378:550:30;;;;;;;;:::i;16359:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16359:147:30;;;:::i;3169:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:26:30;;;:::i;38667:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38667:1097:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38667:1097:30;;;;;;;;;;;;;;;;;:::i;21639:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21639:102:30;;;:::i;6709:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6709:1358:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6709:1358:30;;:::i;18215:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:110:30;;;:::i;23739:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23739:25:30;;;:::i;11082:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11082:145:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11082:145:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11082:145:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11082:145:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:145:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11082:145:30;;-1:-1:-1;11082:145:30;;-1:-1:-1;;;;;11082:145:30:i;4641:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:659:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4641:659:30;;:::i;2948:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:31:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2948:31:30;;:::i;22008:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:98:30;;;:::i;3126:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3126:37:30;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;30418:425:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30418:425:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30418:425:30;;:::i;15480:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:180:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15480:180:30;;:::i;34129:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34129:1540:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;34129:1540:30;;;;;;;;:::i;21239:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21239:177:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21239:177:30;;:::i;17783:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17783:189:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17783:189:30;;:::i;8555:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:827:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8555:827:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8555:827:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8555:827:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8555:827:30;;-1:-1:-1;8555:827:30;-1:-1:-1;8555:827:30;:::i;18386:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18386:153:30;;;:::i;30101:137::-;-1:-1:-1;;;;;;30195:36:30;;-1:-1:-1;;;30195:36:30;30101:137;;;;:::o;16199:104::-;16277:19;;16199:104;;:::o;18820:286::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;18934:7;17364:8;18906:35;;:74;;;;;17296:10;18945:7;:35;;18906:74;18898:106;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;;;;19014:33;:14;19039:7;19014:33;:24;:33;:::i;:::-;19062:37;;;19079:10;19062:37;;;;;;;;;;;;;;;;;;;;;18820:286;:::o;3896:677::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4043:26;;;;4035:60;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;;;;4217:40;4231:25;4217:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4217:40:30;;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4208:5;:49;4200:97;;;;-1:-1:-1;;;4200:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:32;4350:25;;4343:32;:::i;:::-;4432:26;:34;;-1:-1:-1;;4432:34:30;;;4521:45;;;4548:10;4521:45;;;;;;;;;;;;;;;;;;;;;3896:677;:::o;23125:47::-;;;;;;;;;;;;;;-1:-1:-1;;;23125:47:30;;;;:::o;38146:244::-;38239:6;;38272:31;:11;38292:10;38272:31;:19;:31;:::i;:::-;38257:46;;38321:14;38330:4;38321:8;:14::i;:::-;38313:44;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;;;;-1:-1:-1;;;;38374:9:30;-1:-1:-1;38146:244:30;;;;;:::o;25576:565::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;25745:19;25737:52;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;;;;25866:9;25861:229;25881:18;;;25861:229;;;25920:14;25937:35;25954:4;25961:7;;25969:1;25961:10;;;;;;;;;;;;;-1:-1:-1;;;;;25961:10:30;25937:8;:35::i;:::-;25920:52;;26046:33;26055:3;26060:7;;26068:1;26060:10;;;;;;;;;;;;;-1:-1:-1;;;;;26060:10:30;26072:6;26046:8;:33::i;:::-;-1:-1:-1;25901:3:30;;25861:229;;;;26105:29;26121:3;26126:7;;26105:29;;;;-1:-1:-1;;;;;26105:29:30;-1:-1:-1;;;;;26105:29:30;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;26105:29:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26105:29:30;;;;-1:-1:-1;26105:29:30;;-1:-1:-1;;;;;26105:29:30;25576:565;;;:::o;21466:117::-;21519:7;21545:31;:10;:29;:31::i;:::-;21538:38;;21466:117;:::o;28299:344::-;28397:6;28415:16;28461:5;;28444:23;;;;;;;30:3:-1;22:6;14;1:33;28444:23:30;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28444:23:30;;;28434:34;;49:4:-1;28434:34:30;;;;28541:38;;;;;;;;;;;;;;;;;;28434:34;;-1:-1:-1;;;;28583:9:30;-1:-1:-1;28541:38:30;;-1:-1:-1;28434:34:30;;-1:-1:-1;28568:10:30;;-1:-1:-1;28541:38:30;;;;;;28568:10;28541:38;;28568:10;28541:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28541:16:30;;-1:-1:-1;;;28541:38:30:i;:::-;-1:-1:-1;;;;;;28541:51:30;;28533:77;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;;;;-1:-1:-1;;;;28627:9:30;28299:344;-1:-1:-1;;;;;28299:344:30:o;3173:94:25:-;3245:15;;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;16806:179:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;16890:39;:11;16921:7;16890:39;:30;:39;:::i;:::-;16944:34;;;;;;;;;;;;;;;;;16806:179;:::o;18606:106::-;18685:14;:20;18606:106;:::o;3082:38::-;;;;;;:::o;8300:124::-;8358:16;8393:24;8386:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8386:31:30;;;;;;;;;;;;;;;;;;;;;;;8300:124;:::o;2898:44::-;;;;;;;;;;;;;;;:::o;29093:943::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;29269:24;29286:6;29269:16;:24::i;:::-;29261:55;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;;;;29379:23;29405:36;29425:6;29433:7;29405:19;:36::i;:::-;29379:62;-1:-1:-1;29571:41:30;:10;29379:62;29571:41;:24;:41;:::i;:::-;29669:22;29694:25;29706:12;;29694:11;:25::i;:::-;29669:50;-1:-1:-1;;;;;;29733:20:30;;;29729:253;;29769:50;-1:-1:-1;;;;;29769:25:30;;29795:14;29811:7;29769:50;:25;:50;:::i;:::-;29842:14;-1:-1:-1;;;;;29833:29:30;;29863:6;29871:7;29833:46;;;;;;;;;;;;;-1:-1:-1;;;;;29833:46:30;-1:-1:-1;;;;;29833:46:30;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29833:46:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29833:46:30;;;;29729:253;;;29919:14;-1:-1:-1;;;;;29910:29:30;;29946:7;29955:6;29963:7;29910:61;;;;;;;;;;;;;-1:-1:-1;;;;;29910:61:30;-1:-1:-1;;;;;29910:61:30;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;29910:61:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29910:61:30;;;;;29729:253;29997:32;;;-1:-1:-1;;;;;29997:32:30;;;;;;;;;;;;;;;;;;;;;;;2129:1;;29093:943;;:::o;20579:233::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;20672:17;;20661:7;:28;;20653:65;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;;;;20728:29;:10;20749:7;20728:29;:20;:29;:::i;:::-;20772:33;;;20785:10;20772:33;;;;;;;;;;;;;;;;;;;;;20579:233;:::o;15817:161::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;15892:30;:11;15914:7;15892:30;:21;:30;:::i;:::-;15937:34;;;15951:10;15937:34;;;;;;;;;;;;;;;;;;;;;15817:161;:::o;35929:1934::-;36047:12;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;36266:26:30;;;;;;:12;:26;;;;;;;;36261:91;;36308:33;:11;36334:6;36308:33;:25;:33;:::i;:::-;36453:34;36461:12;-1:-1:-1;;;;;36453:32:30;;:34::i;:::-;:69;;;;;36491:31;36509:12;36491:17;:31::i;:::-;36449:1098;;;36625:10;36649:14;36692:48;36720:12;36734:5;36692:27;:48::i;:::-;-1:-1:-1;;;;;36759:16:30;;;;;;:12;:16;;;;;;36677:63;;-1:-1:-1;36677:63:30;-1:-1:-1;36759:16:30;;36754:335;;36962:18;36983:36;36998:12;37012:6;36983:14;:36::i;:::-;36962:57;-1:-1:-1;37037:37:30;:11;36962:57;37037:37;:25;:37;:::i;:::-;36754:335;;37238:45;-1:-1:-1;;;;;37238:38:30;;37277:5;37238:45;:38;:45;:::i;:::-;37404:13;;;37414:2;37404:13;;;;;;;;;37387:14;;37404:13;;;21:6:-1;;104:10;37404:13:30;87:34:-1;135:17;;-1:-1;37404:13:30;37387:30;;37439:4;37431:12;;:1;37433:2;37431:5;;;;;;;;;;;:12;-1:-1:-1;;;;;37431:12:30;;;;;;;;;37463:51;37483:12;37497:6;37505:5;37512:1;37463:51;;;;-1:-1:-1;;;;;37463:51:30;-1:-1:-1;;;;;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37463:51:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37535:1;-1:-1:-1;37528:8:30;;-1:-1:-1;;37528:8:30;36449:1098;37558:12;37572:23;37599:12;-1:-1:-1;;;;;37599:17:30;37623:6;37631:5;37599:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37599:38:30;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37557:80:30;;;;37655:7;37671:10;37647:36;;;;;-1:-1:-1;;;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37699:60;37719:12;37733:6;37741:5;37748:10;37699:60;;;;-1:-1:-1;;;;;37699:60:30;-1:-1:-1;;;;;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37846:10;-1:-1:-1;;2129:1:30;35929:1934;;;;;:::o;26493:1111::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;26797:10:30;26846:9;26840:15;;26925:16;26944:99;26984:2;26996:4;27003:6;27011:5;;26954:63;;;;;;-1:-1:-1;;;26954:63:30;;;;;;;;;;;-1:-1:-1;;;;;26954:63:30;-1:-1:-1;;;;;26954:63:30;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;57:3;49:6;45:16;35:26;;26954:63:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26954:63:30;;;26944:74;;;;;;:97;:99::i;:::-;26925:118;;23503:10;27161:9;;-1:-1:-1;;;;;27119:51:30;;:38;27136:8;27146:10;;27119:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;27119:16:30;;-1:-1:-1;;;27119:38:30:i;:::-;-1:-1:-1;;;;;;27119:51:30;;27111:77;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;;;;27301:10;;27291:6;:20;27283:42;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;;;;27335:21;:19;:21::i;:::-;27424:12;27438:23;27473:4;-1:-1:-1;;;;;27465:18:30;27484:5;;27465:25;;;;;30:3:-1;22:6;14;1:33;27465:25:30;;45:16:-1;;;-1:-1;27465:25:30;;-1:-1:-1;27465:25:30;;-1:-1:-1;;27465:25:30;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27423:67:30;;;;27508:7;27524:10;27500:36;;;;;-1:-1:-1;;;27500:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27:10:-1;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27500:36:30;;27552:45;27579:5;;27586:10;27552:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27552:45:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27552:45:30;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27552:45:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:1:23;;;;26493:1111:30;;;;;:::o;8121:126::-;8180:16;8215:25;8208:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8208:32:30;;;;;;;;;;;;;;;;;;;;;;8121:126;:::o;5523:1117::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;5681:26:30;;;;5673:60;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;;;;5855:40;5869:25;5855:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5855:40:30;;;;;;;;;;;;;;;;;;;;:13;:40::i;:::-;5846:5;:49;5838:97;;;;-1:-1:-1;;;5838:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:9;5985:383;6009:25;:32;6005:36;;5985:383;;;6117:12;:42;6130:25;6156:1;6130:28;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6130:28:30;6117:42;;;;;;;;;;;;;;;6112:246;;6272:4;6227:12;:42;6240:25;6266:1;6240:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6240:28:30;6227:42;;;;;;;;;;;;:49;;-1:-1:-1;;6227:49:30;;;;;;;;;;6314:25;:28;;6294:14;;6314:25;6340:1;;6314:28;;;;;;;;;;;;;;;;;;27:10:-1;;6314:28:30;23:18:-1;;45:23;;6294:49:30;;;;;;;;;;-1:-1:-1;;;;;;6294:49:30;-1:-1:-1;;;;;6314:28:30;;;6294:49;;;;;;6112:246;6043:3;;5985:383;;;;6418:55;6435:10;6447:25;6418:55;;;;-1:-1:-1;;;;;6418:55:30;-1:-1:-1;;;;;6418:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6418:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6519:32;6526:25;;6519:32;:::i;:::-;-1:-1:-1;6599:26:30;:34;;-1:-1:-1;;6599:34:30;;;5523:1117::o;16023:119::-;16077:7;16103:32;:11;:30;:32::i;10340:673::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:14;;;;;;;10517:52;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;;;;10647:21;10639:49;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;;;;10766:37;:24;10793:10;;10766:37;:::i;:::-;-1:-1:-1;10857:25:30;:32;;-1:-1:-1;;10857:32:30;;;;;10980:25;;;;;;;;;;;;;;;;;;10942:64;;10968:10;;;;10980:25;;10968:10;;;;;;10980:25;;;10968:10;;10980:25;10968:10;10980:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10980:13:30;;-1:-1:-1;;;10980:25:30:i;:::-;10942:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10942:64:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10942:64:30;;;;-1:-1:-1;10942:64:30;;-1:-1:-1;;;;;10942:64:30;10340:673;;:::o;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:6;:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;3784:1;3802:40;;;;;;;;;;;;;;;;;;;;3543:306::o;19233:304:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;19356:7;17364:8;19328:35;;:74;;;;;17296:10;19367:7;:35;;19328:74;19320:106;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;;;;19436:42;:14;19470:7;19436:42;:33;:42;:::i;:::-;19493:37;;;;;;;;;;;;;;;;;19233:304;:::o;28706:91::-;28778:12;;28706:91;:::o;1364::24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;18028:125:30:-;18085:7;18111:35;:14;:33;:35::i;9505:711::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;;;;;;;;3437:8;:23::i;:::-;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3534:1;-1:-1:-1;;;;;3509:27:30;:10;3520:1;3509:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;9727:14:30;;;;;;;9719:52;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;;;;9842:21;9834:49;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;;;;9966:38;:25;9994:10;;9966:38;:::i;:::-;-1:-1:-1;10058:26:30;:33;;-1:-1:-1;;10058:33:30;10087:4;10058:33;;;10183:25;;;;;;;;;;;;;;;;;;10144:65;;10171:10;;;;10183:25;;10171:10;;;;;;10183:25;;;10171:10;;10183:25;10171:10;10183:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10183:13:30;;-1:-1:-1;;;10183:25:30:i;:::-;10144:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10144:65:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10144:65:30;;;;-1:-1:-1;10144:65:30;;-1:-1:-1;;;;;10144:65:30;3834:1;9505:711;;:::o;1514:105:26:-;1593:19;;1514:105;:::o;3932:85:25:-;4004:6;;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;27713:87:30:-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;27772:21:30;:19;:21::i;:::-;27713:87::o;16562:100::-;16638:11;:17;16562:100;:::o;31175:2016::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;31295:24;;31322:2;31295:29;;;;:24;31273:19;;;31723:17;31764:1421;31777:11;31771:3;:17;31764:1421;;;31937:28;:20;31962:2;31937:28;:24;:28;:::i;:::-;32151:27;;;32145:34;;32312:2;32280:36;;32274:43;32533:2;32501:36;;;32495:43;;31914:51;;-1:-1:-1;32141:2:30;32137:43;;;;;-1:-1:-1;32274:43:30;;-1:-1:-1;32495:43:30;;-1:-1:-1;32501:36:30;-1:-1:-1;32709:27:30;32733:2;32709:19;32174:3;32495:43;32709:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32703:33;;32856:11;32849:3;:18;;32841:44;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;;;;32956:15;32952:70;;-1:-1:-1;32998:9:30;;;;;;;;;-1:-1:-1;32998:9:30;;32952:70;33130:44;33149:11;33162:5;33169:4;33130:18;:44::i;:::-;;31764:1421;;;2129:1;;;;;;;31175:2016;:::o;21796:145::-;21893:41;;;;21796:145;:::o;20927:251::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;21029:17;;21018:7;:28;;21010:65;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;;;;21085:38;:10;21115:7;21085:38;:29;:38;:::i;:::-;21138:33;;;;;;;;;;;;;;;;;20927:251;:::o;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;33378:550:30:-;33456:7;33545:17;33564:12;33578:14;33602:21;33616:6;33602:13;:21::i;:::-;33542:81;;;;;;;;;;33703:9;33699:205;;;33736:9;33728:28;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;;;;33861:32;33883:9;33861:17;:7;33873:4;33861:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;33854:39;;;;;;;33699:205;-1:-1:-1;33920:1:30;;33378:550;-1:-1:-1;;;;;33378:550:30:o;16359:147::-;16457:42;;;;16359:147;:::o;3169:26::-;;;;;;;;;:::o;38667:1097::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;38772:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38860:17:30;;38852:43;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38984:17:30;;;;;;:12;:17;;;;;;;;38979:584;;39101:7;-1:-1:-1;;;;;39205:20:30;;;39201:103;;39258:31;39273:6;39281:7;39258:14;:31::i;:::-;39245:44;;39201:103;39515:37;:11;39541:10;39515:37;:25;:37;:::i;:::-;38979:584;;39638:35;39652:3;39657:6;39665:7;39638:13;:35::i;:::-;39724:33;;;-1:-1:-1;;;;;39724:33:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;38667:1097;;;:::o;21639:102::-;21716:18;;21639:102;:::o;6709:1358::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;6896:25:30;;;;;;;6888:59;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;;;;7068:39;7082:24;7068:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7068:39:30;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;7059:5;:48;7051:96;;;;-1:-1:-1;;;7051:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:9;7194:601;7218:24;:31;7214:35;;7194:601;;;7308:12;:41;7321:24;7346:1;7321:27;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7321:27:30;7308:41;;;;;;;;;;;;;;;7304:481;;;7413:5;7369:12;:41;7382:24;7407:1;7382:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7382:27:30;7369:41;;;;;;;;;;;;:49;;-1:-1:-1;;7369:49:30;;;;;;;;;;;7436:294;7460:14;:21;:28;;7486:1;7460:28;:25;:28;:::i;:::-;7456:1;:32;7436:294;;;7542:24;7567:1;7542:27;;;;;;;;;;;;;;;;;;7521:14;:17;;-1:-1:-1;;;;;7542:27:30;;;;7536:1;;7521:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:17:30;:48;7517:195;;;7617:14;7632:21;;-1:-1:-1;;7632:25:30;;;7617:41;;;;;;;;;;;;;;;;7597:14;:17;;-1:-1:-1;;;;;7617:41:30;;;;7612:1;;7597:17;;;;;;;;;;;;;;:61;;;;;-1:-1:-1;;;;;7597:61:30;;;;;-1:-1:-1;;;;;7597:61:30;;;;;;7684:5;;7517:195;7490:3;;7436:294;;;-1:-1:-1;7747:14:30;:23;;;;;-1:-1:-1;;7747:23:30;;;:::i;:::-;;7304:481;7251:3;;7194:601;;;;7844:58;7865:10;7877:24;7844:58;;;;-1:-1:-1;;;;;7844:58:30;-1:-1:-1;;;;;7844:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7844:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7948:31;7955:24;;7948:31;:::i;:::-;-1:-1:-1;8027:25:30;:33;;-1:-1:-1;;8027:33:30;;;6709:1358::o;18215:110::-;18296:22;;18215:110;:::o;23739:25::-;;;;:::o;11082:145::-;11155:7;11208:10;11191:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11191:28:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11191:28:30;;;11181:39;;;;;;11174:46;;11082:145;;;:::o;4641:659::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4787:25;;;;;;;4779:59;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;;;;4959:39;4973:24;4959:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4959:39:30;;;;;;;;;;;;;;;;;;;;:13;:39::i;:::-;4950:5;:48;4942:96;;;;-1:-1:-1;;;4942:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:31;5091:24;;5084:31;:::i;:::-;5161:25;:33;;-1:-1:-1;;5161:33:30;;;5249:44;;;5275:10;5249:44;;;;;;;;;;;;;;;;;;;;;4641:659;:::o;2948:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2948:31:30;;-1:-1:-1;2948:31:30;:::o;22008:98::-;22083:10;:16;22008:98;:::o;3126:37::-;;;;;;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;30418:425:30:-;30472:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;30633:37;:14;30662:7;30633:37;:28;:37;:::i;:::-;30717:7;:5;:7::i;:::-;-1:-1:-1;;;;;30717:16:30;:25;30734:7;30717:25;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30717:25:30;30795:41;30807:10;30819:7;:5;:7::i;:::-;30795:41;;;-1:-1:-1;;;;;30795:41:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30418:425;;:::o;15480:180::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;15564:40:30;:11;15596:7;15564:40;:31;:40;:::i;34129:1540::-;34212:7;34342:13;:11;:13::i;:::-;-1:-1:-1;;;;;34332:23:30;:6;-1:-1:-1;;;;;34332:23:30;;34328:68;;;-1:-1:-1;34378:7:30;34371:14;;34328:68;34428:7;-1:-1:-1;;;;;34482:20:30;;;34478:600;;34654:17;34673:12;34687:14;34711:21;34725:6;34711:13;:21::i;:::-;34651:81;;;;;;;;;;34843:9;34835:41;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;;;;34898:9;34890:28;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;;;;35035:32;35057:9;35035:17;:7;35047:4;35035:17;:11;:17;:::i;:32::-;35020:47;;34478:600;;;;35195:27;35224:22;35248:24;35282:20;:18;:20::i;:::-;35192:110;;;;;;;;;;35368:19;35360:51;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;;;;35429:19;35421:49;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;;;;35605:57;35647:14;35605:37;:12;35622:19;35605:37;:16;:37;:::i;:57::-;35598:64;34129:1540;-1:-1:-1;;;;;;;34129:1540:30:o;21239:177::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;21322:39:30;:10;21353:7;21322:39;:30;:39;:::i;17783:189::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;17870:43:30;:14;17905:7;17870:43;:34;:43;:::i;8555:827::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;8657:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;3437:23;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3534:1;-1:-1:-1;;;;;3509:27:30;:10;3520:1;3509:13;;;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;8752:14:30;;;;;;;8751:15;8743:49;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;;;;8871:9;8866:384;8886:21;;;8866:384;;;8996:12;:27;9009:10;;9020:1;9009:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9009:13:30;8996:27;;-1:-1:-1;8996:27:30;;;;;;;;-1:-1:-1;8996:27:30;;;;8991:249;;9122:4;9092:12;:27;9105:10;;9116:1;9105:13;;;;;;;;;;;;;-1:-1:-1;;;;;9105:13:30;-1:-1:-1;;;;;9092:27:30;-1:-1:-1;;;;;9092:27:30;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;9191:14;9211:10;;9222:1;9211:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9191:34:30;;;9211:13;9191:34;;;;;;;-1:-1:-1;;;;;;9191:34:30;-1:-1:-1;;;;;9211:13:30;;;;;;;;;;;;;9191:34;;;;;;-1:-1:-1;8991:249:30;8909:3;;8866:384;;;-1:-1:-1;9259:14:30;:21;;-1:-1:-1;;9259:21:30;;;;;9331:44;;;9348:10;9331:44;;;;;;;;;9360:14;9331:44;;;;;;;;;;9348:10;;9360:14;;9331:44;;;;;;;9360:14;;9331:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9331:44:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;8555:827;;:::o;18386:153::-;18487:45;;;;18386:153;:::o;4123:107:25:-;4217:6;;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;13567:401:30:-;13718:35;;;;;;13717:36;13709:66;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;;;;13844:27;13857:4;13863:7;13844:12;:27::i;:::-;-1:-1:-1;13919:35:30;;:42;;-1:-1:-1;;13919:42:30;13957:4;13919:42;;;13567:401::o;2332:158:23:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;-1:-1:-1;;;;;2419:54:23;;2474:8;2419:64;;;;;;;;;;;;;-1:-1:-1;;;;;2419:64:23;-1:-1:-1;;;;;2419:64:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;2387:1891;-1:-1:-1;;;;;;;2387:1891:2:o;1207:245:21:-;1282:7;-1:-1:-1;;;;;1305:20:21;;;1301:145;;1354:6;-1:-1:-1;;;;;1348:23:21;;1372:8;1348:33;;;;;;;;;;;;;-1:-1:-1;;;;;1348:33:21;-1:-1:-1;;;;;1348:33:21;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1348:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:21;;-1:-1:-1;1341:40:21;;1301:145;-1:-1:-1;;;;;;1419:16:21;;;1412:23;;12652:240:30;12757:19;;;;12728:7;;12757:33;;12781:8;12757:33;:23;:33;:::i;:::-;12751:3;:39;12747:139;;;-1:-1:-1;12813:10:30;;12806:17;;12747:139;-1:-1:-1;12861:14:30;;;;12854:21;;14103:317;14254:35;;;;;;14246:73;;;;;-1:-1:-1;;;14246:73:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:12;;;;:22;14103:317::o;5161:156:26:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:26;;5161:156;-1:-1:-1;;;;;;;;5161:156:26:o;12192:288:30:-;12328:27;12350:4;12328:21;:27::i;:::-;12391:7;12373:4;:14;;;:25;;12365:54;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;;;;12446:14;;;;:27;;12465:7;12446:27;:18;:27;:::i;:::-;12429:4;:14;;:44;;;;12192:288;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;4644:159:26:-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:26;;4644:159;-1:-1:-1;;;;;;;;4644:159:26:o;4305:241::-;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;-1:-1:-1;;;;;4442:76:26;;4519:12;4533:5;4442:97;;;;;;;;;;;;;-1:-1:-1;;;;;4442:97:26;-1:-1:-1;;;;;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:26;;;;;;;;;;;-1:-1:-1;4305:241:26;-1:-1:-1;;;4305:241:26:o;3757:1095:5:-;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;27876:128:30:-;27926:10;:12;;;;;;;;27954:43;;;27974:10;27954:43;;;;;;;;;;;;;;;;;;;;;27876:128::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;-1:-1:-1;;;;;2306:62:26;;2369:2;2306:66;;;;;;;;;;;;;-1:-1:-1;;;;;2306:66:26;-1:-1:-1;;;;;2306:66:26;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;11749:338:30:-;11934:7;11918:4;:12;;;:23;11910:70;;;;-1:-1:-1;;;11910:70:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12048:32;12061:4;12067;:12;;;12048;:32::i;:::-;11749:338;;:::o;5436:141:26:-;5482:7;5524:32;5536:19;;5524:11;:32::i;:::-;-1:-1:-1;;;;;5508:60:26;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5508:62:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5508:62:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5508:62:26;;-1:-1:-1;5436:141:26;:::o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;-1:-1:-1;;;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;-1:-1;;;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;13038:425:30:-;13172:27;13194:4;13172:21;:27::i;:::-;13264:20;;;13376:14;;;;:27;-1:-1:-1;13372:85:30;;;13436:10;;13419:14;;;:27;13038:425;;:::o;14494:370::-;14578:19;;;;:33;;14602:8;14578:33;:23;:33;:::i;:::-;14572:3;:39;14568:290;;;14694:3;14672:19;;;:25;14795:10;;14778:14;;;:27;14824:23;;;;14795:10;;14824:23;14568:290;14494:370;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;-1:-1:-1;;;;;22209:17557:30;;;;;;;;;;;;;;;;;;;-1:-1:-1;22209:17557:30;;;-1:-1:-1;22209:17557:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;;;;;;"}},"sourceList":["controller.sol","externals/Address.sol","externals/ECDSA.sol","externals/ERC165.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/balanceable.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","licence.sol","tokenWhitelist.sol","wallet.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[4283],"IController":[3848]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3831,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":3029,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":4284,"symbolAliases":[null],"unitAlias":""},"id":3832,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":3286,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":4284,"symbolAliases":[null],"unitAlias":""},"id":3833,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[3848],"name":"IController","scope":4284},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":3848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3840,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3834,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":3835,"name":"VariableDeclaration","src":"1015:7:0"}],"id":3836,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3840,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3837,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":3838,"name":"VariableDeclaration","src":"1047:4:0"}],"id":3839,"name":"ParameterList","src":"1046:6:0"}],"id":3840,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":3848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3841,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":3842,"name":"VariableDeclaration","src":"1076:7:0"}],"id":3843,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3847,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3844,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":3845,"name":"VariableDeclaration","src":"1108:4:0"}],"id":3846,"name":"ParameterList","src":"1107:6:0"}],"id":3847,"name":"FunctionDefinition","src":"1059:55:0"}],"id":3848,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[3028,3285,3848],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[4283,3285,3028,3848],"name":"Controller","scope":4284},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":3848,"type":"contract IController"},"id":3849,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":3850,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3028,"type":"contract Ownable"},"id":3851,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":3852,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3285,"type":"contract Transferrable"},"id":3853,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":3854,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3860,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3855,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":3856,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3860,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3857,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":3858,"name":"VariableDeclaration","src":"1564:19:0"}],"id":3859,"name":"ParameterList","src":"1546:38:0"}],"id":3860,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3866,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3861,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":3862,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":3866,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3863,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":3864,"name":"VariableDeclaration","src":"1631:19:0"}],"id":3865,"name":"ParameterList","src":"1613:38:0"}],"id":3866,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3867,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":3868,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3869,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":3870,"name":"VariableDeclaration","src":"1692:14:0"}],"id":3871,"name":"ParameterList","src":"1674:33:0"}],"id":3872,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3878,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3873,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":3874,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":3878,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3875,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":3876,"name":"VariableDeclaration","src":"1749:14:0"}],"id":3877,"name":"ParameterList","src":"1731:33:0"}],"id":3878,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3879,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":3880,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3886,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3881,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":3882,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3886,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3883,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":3884,"name":"VariableDeclaration","src":"1814:15:0"}],"id":3885,"name":"ParameterList","src":"1784:46:0"}],"id":3886,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3890,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3887,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":3888,"name":"VariableDeclaration","src":"1851:15:0"}],"id":3889,"name":"ParameterList","src":"1850:17:0"}],"id":3890,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":3894,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3891,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":3892,"name":"VariableDeclaration","src":"1887:15:0"}],"id":3893,"name":"ParameterList","src":"1886:17:0"}],"id":3894,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":4283,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3895,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3896,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":3897,"name":"Mapping","src":"1910:24:0"}],"id":3898,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":4283,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3899,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":3900,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":4283,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3901,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":3902,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":3903,"name":"Mapping","src":"1991:24:0"}],"id":3904,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":4283,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3905,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":3906,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":4283,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3907,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":3908,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":3918,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3909,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":3910,"name":"VariableDeclaration","src":"2251:30:0"}],"id":3911,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":3916,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3028,"type":"type(contract Ownable)","value":"Ownable"},"id":3912,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"address payable","value":"_ownerAddress_"},"id":3913,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3914,"name":"Literal","src":"2314:5:0"}],"id":3915,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":3917,"name":"Block","src":"2321:2:0"}],"id":3918,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3919,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3920,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3921,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3922,"name":"Identifier","src":"2431:3:0"}],"id":3923,"name":"MemberAccess","src":"2431:10:0"}],"id":3924,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":3925,"name":"Literal","src":"2444:21:0"}],"id":3926,"name":"FunctionCall","src":"2414:52:0"}],"id":3927,"name":"ExpressionStatement","src":"2414:52:0"},{"id":3928,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":3929,"name":"Block","src":"2404:80:0"}],"id":3930,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3931,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3932,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3933,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3934,"name":"Identifier","src":"2585:3:0"}],"id":3935,"name":"MemberAccess","src":"2585:10:0"}],"id":3936,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3937,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3938,"name":"Identifier","src":"2609:3:0"}],"id":3939,"name":"MemberAccess","src":"2609:10:0"}],"id":3940,"name":"IndexAccess","src":"2600:20:0"}],"id":3941,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":3942,"name":"Literal","src":"2622:30:0"}],"id":3943,"name":"FunctionCall","src":"2568:85:0"}],"id":3944,"name":"ExpressionStatement","src":"2568:85:0"},{"id":3945,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":3946,"name":"Block","src":"2558:113:0"}],"id":3947,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3948,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3949,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4062,"type":"function () view returns (bool)","value":"isStopped"},"id":3950,"name":"Identifier","src":"2765:9:0"}],"id":3951,"name":"FunctionCall","src":"2765:11:0"}],"id":3952,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":3953,"name":"Literal","src":"2778:23:0"}],"id":3954,"name":"FunctionCall","src":"2756:46:0"}],"id":3955,"name":"ExpressionStatement","src":"2756:46:0"},{"id":3956,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":3957,"name":"Block","src":"2746:74:0"}],"id":3958,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3972,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3959,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":3960,"name":"VariableDeclaration","src":"2961:16:0"}],"id":3961,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3966,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":3962,"name":"Identifier","src":"2988:9:0"}],"id":3963,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":3964,"name":"Identifier","src":"2998:10:0"}],"id":3965,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4116,"type":"function (address)","value":"_addAdmin"},"id":3967,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3960,"type":"address","value":"_account"},"id":3968,"name":"Identifier","src":"3029:8:0"}],"id":3969,"name":"FunctionCall","src":"3019:19:0"}],"id":3970,"name":"ExpressionStatement","src":"3019:19:0"}],"id":3971,"name":"Block","src":"3009:36:0"}],"id":3972,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3984,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3973,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":3974,"name":"VariableDeclaration","src":"3195:16:0"}],"id":3975,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3978,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":3976,"name":"Identifier","src":"3222:9:0"}],"id":3977,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4144,"type":"function (address)","value":"_removeAdmin"},"id":3979,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3974,"type":"address","value":"_account"},"id":3980,"name":"Identifier","src":"3255:8:0"}],"id":3981,"name":"FunctionCall","src":"3242:22:0"}],"id":3982,"name":"ExpressionStatement","src":"3242:22:0"}],"id":3983,"name":"Block","src":"3232:39:0"}],"id":3984,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":4283,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3985,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":3992,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3986,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":3987,"name":"VariableDeclaration","src":"3368:7:0"}],"id":3988,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":3988},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3900,"type":"uint256","value":"_adminCount"},"id":3989,"name":"Identifier","src":"3394:11:0"}],"id":3990,"name":"Return","src":"3387:18:0"}],"id":3991,"name":"Block","src":"3377:35:0"}],"id":3992,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4006,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3993,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":3994,"name":"VariableDeclaration","src":"3573:16:0"}],"id":3995,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4000,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3947,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3996,"name":"Identifier","src":"3600:16:0"}],"id":3997,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":3998,"name":"Identifier","src":"3617:10:0"}],"id":3999,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4198,"type":"function (address)","value":"_addController"},"id":4001,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3994,"type":"address","value":"_account"},"id":4002,"name":"Identifier","src":"3653:8:0"}],"id":4003,"name":"FunctionCall","src":"3638:24:0"}],"id":4004,"name":"ExpressionStatement","src":"3638:24:0"}],"id":4005,"name":"Block","src":"3628:41:0"}],"id":4006,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4018,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4007,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":4008,"name":"VariableDeclaration","src":"3839:16:0"}],"id":4009,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4012,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3947,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4010,"name":"Identifier","src":"3866:16:0"}],"id":4011,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4226,"type":"function (address)","value":"_removeController"},"id":4013,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4008,"type":"address","value":"_account"},"id":4014,"name":"Identifier","src":"3911:8:0"}],"id":4015,"name":"FunctionCall","src":"3893:27:0"}],"id":4016,"name":"ExpressionStatement","src":"3893:27:0"}],"id":4017,"name":"Block","src":"3883:44:0"}],"id":4018,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":4283,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4019,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4020,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":4021,"name":"VariableDeclaration","src":"4072:7:0"}],"id":4022,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":4022},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"_controllerCount"},"id":4023,"name":"Identifier","src":"4098:16:0"}],"id":4024,"name":"Return","src":"4091:23:0"}],"id":4025,"name":"Block","src":"4081:40:0"}],"id":4026,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":4283,"stateMutability":"view","superFunction":3847,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4040,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4027,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":4028,"name":"VariableDeclaration","src":"4242:16:0"}],"id":4029,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4040,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4032,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":4033,"name":"VariableDeclaration","src":"4294:4:0"}],"id":4034,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":4030,"name":"Identifier","src":"4274:10:0"}],"id":4031,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":4034},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4035,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4028,"type":"address","value":"_account"},"id":4036,"name":"Identifier","src":"4326:8:0"}],"id":4037,"name":"IndexAccess","src":"4317:18:0"}],"id":4038,"name":"Return","src":"4310:25:0"}],"id":4039,"name":"Block","src":"4300:42:0"}],"id":4040,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":4283,"stateMutability":"view","superFunction":3840,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4054,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4041,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":4042,"name":"VariableDeclaration","src":"4476:16:0"}],"id":4043,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4054,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4046,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":4047,"name":"VariableDeclaration","src":"4528:4:0"}],"id":4048,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":4044,"name":"Identifier","src":"4508:10:0"}],"id":4045,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":4048},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4049,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4042,"type":"address","value":"_account"},"id":4050,"name":"Identifier","src":"4565:8:0"}],"id":4051,"name":"IndexAccess","src":"4551:23:0"}],"id":4052,"name":"Return","src":"4544:30:0"}],"id":4053,"name":"Block","src":"4534:47:0"}],"id":4054,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":4283,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4055,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":4062,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4056,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":4057,"name":"VariableDeclaration","src":"4769:4:0"}],"id":4058,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":4058},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3908,"type":"bool","value":"_stopped"},"id":4059,"name":"Identifier","src":"4792:8:0"}],"id":4060,"name":"Return","src":"4785:15:0"}],"id":4061,"name":"Block","src":"4775:32:0"}],"id":4062,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4116,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4063,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":4064,"name":"VariableDeclaration","src":"4894:16:0"}],"id":4065,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4066,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4067,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4068,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4069,"name":"Identifier","src":"4948:8:0"}],"id":4070,"name":"IndexAccess","src":"4939:18:0"}],"id":4071,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":4072,"name":"Literal","src":"4959:38:0"}],"id":4073,"name":"FunctionCall","src":"4930:68:0"}],"id":4074,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4075,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4076,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4077,"name":"Identifier","src":"5031:8:0"}],"id":4078,"name":"IndexAccess","src":"5017:23:0"}],"id":4079,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":4080,"name":"Literal","src":"5042:42:0"}],"id":4081,"name":"FunctionCall","src":"5008:77:0"}],"id":4082,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4083,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":4084,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4085,"name":"Identifier","src":"5113:8:0"}],"id":4086,"name":"FunctionCall","src":"5104:18:0"}],"id":4087,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":4088,"name":"Literal","src":"5124:39:0"}],"id":4089,"name":"FunctionCall","src":"5095:69:0"}],"id":4090,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4091,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4092,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4093,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4094,"name":"Literal","src":"5202:1:0"}],"id":4095,"name":"FunctionCall","src":"5194:10:0"}],"id":4096,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":4097,"name":"Literal","src":"5206:38:0"}],"id":4098,"name":"FunctionCall","src":"5174:71:0"}],"id":4099,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4100,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4101,"name":"Identifier","src":"5264:8:0"}],"id":4102,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4103,"name":"Literal","src":"5276:4:0"}],"id":4104,"name":"Assignment","src":"5255:25:0"}],"id":4105,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3900,"type":"uint256","value":"_adminCount"},"id":4106,"name":"Identifier","src":"5290:11:0"}],"id":4107,"name":"UnaryOperation","src":"5290:13:0"}],"id":4108,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3872,"type":"function (address,address)","value":"AddedAdmin"},"id":4109,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4110,"name":"Identifier","src":"5329:3:0"}],"id":4111,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"address","value":"_account"},"id":4112,"name":"Identifier","src":"5341:8:0"}],"id":4113,"name":"FunctionCall","src":"5318:32:0"}],"id":4114,"name":"EmitStatement","src":"5313:37:0"}],"id":4115,"name":"Block","src":"4920:437:0"}],"id":4116,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4144,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4117,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":4118,"name":"VariableDeclaration","src":"5456:16:0"}],"id":4119,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4120,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4121,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4122,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4118,"type":"address","value":"_account"},"id":4123,"name":"Identifier","src":"5509:8:0"}],"id":4124,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":4125,"name":"Literal","src":"5520:34:0"}],"id":4126,"name":"FunctionCall","src":"5492:63:0"}],"id":4127,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4128,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4118,"type":"address","value":"_account"},"id":4129,"name":"Identifier","src":"5574:8:0"}],"id":4130,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4131,"name":"Literal","src":"5586:5:0"}],"id":4132,"name":"Assignment","src":"5565:26:0"}],"id":4133,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3900,"type":"uint256","value":"_adminCount"},"id":4134,"name":"Identifier","src":"5601:11:0"}],"id":4135,"name":"UnaryOperation","src":"5601:13:0"}],"id":4136,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3878,"type":"function (address,address)","value":"RemovedAdmin"},"id":4137,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4138,"name":"Identifier","src":"5642:3:0"}],"id":4139,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4118,"type":"address","value":"_account"},"id":4140,"name":"Identifier","src":"5654:8:0"}],"id":4141,"name":"FunctionCall","src":"5629:34:0"}],"id":4142,"name":"EmitStatement","src":"5624:39:0"}],"id":4143,"name":"Block","src":"5482:188:0"}],"id":4144,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4198,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4145,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":4146,"name":"VariableDeclaration","src":"5767:16:0"}],"id":4147,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4148,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4149,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3898,"type":"mapping(address => bool)","value":"_isAdmin"},"id":4150,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4151,"name":"Identifier","src":"5821:8:0"}],"id":4152,"name":"IndexAccess","src":"5812:18:0"}],"id":4153,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":4154,"name":"Literal","src":"5832:38:0"}],"id":4155,"name":"FunctionCall","src":"5803:68:0"}],"id":4156,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4157,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4158,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4159,"name":"Identifier","src":"5904:8:0"}],"id":4160,"name":"IndexAccess","src":"5890:23:0"}],"id":4161,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":4162,"name":"Literal","src":"5915:42:0"}],"id":4163,"name":"FunctionCall","src":"5881:77:0"}],"id":4164,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4165,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":4166,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4167,"name":"Identifier","src":"5986:8:0"}],"id":4168,"name":"FunctionCall","src":"5977:18:0"}],"id":4169,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":4170,"name":"Literal","src":"5997:39:0"}],"id":4171,"name":"FunctionCall","src":"5968:69:0"}],"id":4172,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4173,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4174,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4175,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4176,"name":"Literal","src":"6075:1:0"}],"id":4177,"name":"FunctionCall","src":"6067:10:0"}],"id":4178,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":4179,"name":"Literal","src":"6079:38:0"}],"id":4180,"name":"FunctionCall","src":"6047:71:0"}],"id":4181,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4182,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4183,"name":"Identifier","src":"6142:8:0"}],"id":4184,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4185,"name":"Literal","src":"6154:4:0"}],"id":4186,"name":"Assignment","src":"6128:30:0"}],"id":4187,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"_controllerCount"},"id":4188,"name":"Identifier","src":"6168:16:0"}],"id":4189,"name":"UnaryOperation","src":"6168:18:0"}],"id":4190,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3860,"type":"function (address,address)","value":"AddedController"},"id":4191,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4192,"name":"Identifier","src":"6217:3:0"}],"id":4193,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4146,"type":"address","value":"_account"},"id":4194,"name":"Identifier","src":"6229:8:0"}],"id":4195,"name":"FunctionCall","src":"6201:37:0"}],"id":4196,"name":"EmitStatement","src":"6196:42:0"}],"id":4197,"name":"Block","src":"5793:452:0"}],"id":4198,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":4226,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4199,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":4200,"name":"VariableDeclaration","src":"6354:16:0"}],"id":4201,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":4202,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4203,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4204,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"_account"},"id":4205,"name":"Identifier","src":"6412:8:0"}],"id":4206,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":4207,"name":"Literal","src":"6423:38:0"}],"id":4208,"name":"FunctionCall","src":"6390:72:0"}],"id":4209,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3904,"type":"mapping(address => bool)","value":"_isController"},"id":4210,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"_account"},"id":4211,"name":"Identifier","src":"6486:8:0"}],"id":4212,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4213,"name":"Literal","src":"6498:5:0"}],"id":4214,"name":"Assignment","src":"6472:31:0"}],"id":4215,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3906,"type":"uint256","value":"_controllerCount"},"id":4216,"name":"Identifier","src":"6513:16:0"}],"id":4217,"name":"UnaryOperation","src":"6513:18:0"}],"id":4218,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3866,"type":"function (address,address)","value":"RemovedController"},"id":4219,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4220,"name":"Identifier","src":"6564:3:0"}],"id":4221,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4200,"type":"address","value":"_account"},"id":4222,"name":"Identifier","src":"6576:8:0"}],"id":4223,"name":"FunctionCall","src":"6546:39:0"}],"id":4224,"name":"EmitStatement","src":"6541:44:0"}],"id":4225,"name":"Block","src":"6380:212:0"}],"id":4226,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4227,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":4230,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3947,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":4228,"name":"Identifier","src":"6690:16:0"}],"id":4229,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3908,"type":"bool","value":"_stopped"},"id":4231,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4232,"name":"Literal","src":"6728:4:0"}],"id":4233,"name":"Assignment","src":"6717:15:0"}],"id":4234,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3890,"type":"function (address)","value":"Stopped"},"id":4235,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4236,"name":"Identifier","src":"6755:3:0"}],"id":4237,"name":"MemberAccess","src":"6755:10:0"}],"id":4238,"name":"FunctionCall","src":"6747:19:0"}],"id":4239,"name":"EmitStatement","src":"6742:24:0"}],"id":4240,"name":"Block","src":"6707:66:0"}],"id":4241,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4242,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":4245,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":4243,"name":"Identifier","src":"6848:9:0"}],"id":4244,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3908,"type":"bool","value":"_stopped"},"id":4246,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":4247,"name":"Literal","src":"6879:5:0"}],"id":4248,"name":"Assignment","src":"6868:16:0"}],"id":4249,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3894,"type":"function (address)","value":"Started"},"id":4250,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4251,"name":"Identifier","src":"6907:3:0"}],"id":4252,"name":"MemberAccess","src":"6907:10:0"}],"id":4253,"name":"FunctionCall","src":"6899:19:0"}],"id":4254,"name":"EmitStatement","src":"6894:24:0"}],"id":4255,"name":"Block","src":"6858:67:0"}],"id":4256,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":4283,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4282,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4257,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":4258,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":4282,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4259,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":4260,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":4282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4261,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":4262,"name":"VariableDeclaration","src":"7066:15:0"}],"id":4263,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":4268,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3930,"type":"modifier ()","value":"onlyAdmin"},"id":4264,"name":"Identifier","src":"7092:9:0"}],"id":4265,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3958,"type":"modifier ()","value":"notStopped"},"id":4266,"name":"Identifier","src":"7102:10:0"}],"id":4267,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3284,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":4269,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_to"},"id":4270,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address","value":"_asset"},"id":4271,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"uint256","value":"_amount"},"id":4272,"name":"Identifier","src":"7150:7:0"}],"id":4273,"name":"FunctionCall","src":"7123:35:0"}],"id":4274,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3886,"type":"function (address,address,uint256)","value":"Claimed"},"id":4275,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_to"},"id":4276,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address","value":"_asset"},"id":4277,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"uint256","value":"_amount"},"id":4278,"name":"Identifier","src":"7194:7:0"}],"id":4279,"name":"FunctionCall","src":"7173:29:0"}],"id":4280,"name":"EmitStatement","src":"7168:34:0"}],"id":4281,"name":"Block","src":"7113:96:0"}],"id":4282,"name":"FunctionDefinition","src":"7014:195:0"}],"id":4283,"name":"ContractDefinition","src":"1460:5751:0"}],"id":4284,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[2202]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2185,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[2202],"name":"Address","scope":2203},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":2202,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":2201,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2186,"name":"ElementaryTypeName","src":"562:7:1"}],"id":2187,"name":"VariableDeclaration","src":"562:15:1"}],"id":2188,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":2201,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2189,"name":"ElementaryTypeName","src":"602:4:1"}],"id":2190,"name":"VariableDeclaration","src":"602:4:1"}],"id":2191,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[2193],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":2200,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2192,"name":"ElementaryTypeName","src":"805:7:1"}],"id":2193,"name":"VariableDeclaration","src":"805:12:1"}],"id":2194,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":2193,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":2187,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":2195,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":2191},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2193,"type":"uint256","value":"size"},"id":2196,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2197,"name":"Literal","src":"947:1:1"}],"id":2198,"name":"BinaryOperation","src":"940:8:1"}],"id":2199,"name":"Return","src":"933:15:1"}],"id":2200,"name":"Block","src":"608:347:1"}],"id":2201,"name":"FunctionDefinition","src":"542:413:1"}],"id":2202,"name":"ContractDefinition","src":"94:863:1"}],"id":2203,"name":"SourceUnit","src":"0:958:1"}},"externals/ECDSA.sol":{"AST":{"attributes":{"absolutePath":"externals/ECDSA.sol","exportedSymbols":{"ECDSA":[2283]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2204,"name":"PragmaDirective","src":"1161:23:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n * These functions can be used to verify that a message was signed by the holder\nof the private keys of a given address.","fullyImplemented":true,"linearizedBaseContracts":[2283],"name":"ECDSA","scope":2284},"children":[{"attributes":{"documentation":"@dev Returns the address that signed a hashed message (`hash`) with\n`signature`. This address can then be used for verification purposes.\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\nthis function rejects them by requiring the `s` value to be in the lower\nhalf order, and the `v` value to be either 27 or 28.\n * NOTE: This call _does not revert_ if the signature is invalid, or\nif the signer is otherwise unable to be retrieved. In those scenarios,\nthe zero address is returned.\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\nverification to be secure: it is possible to craft signatures that\nrecover to arbitrary addresses for non-hashed data. A safe way to ensure\nthis is by receiving a hash of the original message (which may otherwise\nbe too long), and then calling {toEthSignedMessageHash} on it.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recover","scope":2283,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":2266,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2205,"name":"ElementaryTypeName","src":"2404:7:2"}],"id":2206,"name":"VariableDeclaration","src":"2404:12:2"},{"attributes":{"constant":false,"name":"signature","scope":2266,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2207,"name":"ElementaryTypeName","src":"2418:5:2"}],"id":2208,"name":"VariableDeclaration","src":"2418:22:2"}],"id":2209,"name":"ParameterList","src":"2403:38:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":2266,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2210,"name":"ElementaryTypeName","src":"2465:7:2"}],"id":2211,"name":"VariableDeclaration","src":"2465:7:2"}],"id":2212,"name":"ParameterList","src":"2464:9:2"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2208,"type":"bytes memory","value":"signature"},"id":2213,"name":"Identifier","src":"2526:9:2"}],"id":2214,"name":"MemberAccess","src":"2526:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":2215,"name":"Literal","src":"2546:2:2"}],"id":2216,"name":"BinaryOperation","src":"2526:22:2"},{"children":[{"attributes":{"functionReturnParameters":2212},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2217,"name":"ElementaryTypeNameExpression","src":"2572:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2218,"name":"Literal","src":"2580:1:2"}],"id":2219,"name":"FunctionCall","src":"2572:10:2"}],"id":2220,"name":"TupleExpression","src":"2571:12:2"}],"id":2221,"name":"Return","src":"2564:19:2"}],"id":2222,"name":"Block","src":"2550:44:2"}],"id":2223,"name":"IfStatement","src":"2522:72:2"},{"attributes":{"assignments":[2225],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":2265,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2224,"name":"ElementaryTypeName","src":"2660:7:2"}],"id":2225,"name":"VariableDeclaration","src":"2660:9:2"}],"id":2226,"name":"VariableDeclarationStatement","src":"2660:9:2"},{"attributes":{"assignments":[2228],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":2265,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2227,"name":"ElementaryTypeName","src":"2679:7:2"}],"id":2228,"name":"VariableDeclaration","src":"2679:9:2"}],"id":2229,"name":"VariableDeclarationStatement","src":"2679:9:2"},{"attributes":{"assignments":[2231],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":2265,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":2230,"name":"ElementaryTypeName","src":"2698:5:2"}],"id":2231,"name":"VariableDeclaration","src":"2698:7:2"}],"id":2232,"name":"VariableDeclarationStatement","src":"2698:7:2"},{"attributes":{"externalReferences":[{"r":{"declaration":2225,"isOffset":false,"isSlot":false,"src":"2918:1:2","valueSize":1}},{"signature":{"declaration":2208,"isOffset":false,"isSlot":false,"src":"2933:9:2","valueSize":1}},{"v":{"declaration":2231,"isOffset":false,"isSlot":false,"src":"3008:1:2","valueSize":1}},{"s":{"declaration":2228,"isOffset":false,"isSlot":false,"src":"2963:1:2","valueSize":1}},{"signature":{"declaration":2208,"isOffset":false,"isSlot":false,"src":"2978:9:2","valueSize":1}},{"signature":{"declaration":2208,"isOffset":false,"isSlot":false,"src":"3031:9:2","valueSize":1}}],"operations":"{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}"},"children":[],"id":2233,"name":"InlineAssembly","src":"2895:164:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":2234,"name":"ElementaryTypeNameExpression","src":"3947:7:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2228,"type":"bytes32","value":"s"},"id":2235,"name":"Identifier","src":"3955:1:2"}],"id":2236,"name":"FunctionCall","src":"3947:10:2"},{"attributes":{"argumentTypes":null,"hexvalue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5789...(69 digits omitted)...7168","value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"id":2237,"name":"Literal","src":"3960:66:2"}],"id":2238,"name":"BinaryOperation","src":"3947:79:2"},{"children":[{"attributes":{"functionReturnParameters":2212},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2239,"name":"ElementaryTypeNameExpression","src":"4049:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2240,"name":"Literal","src":"4057:1:2"}],"id":2241,"name":"FunctionCall","src":"4049:10:2"}],"id":2242,"name":"Return","src":"4042:17:2"}],"id":2243,"name":"Block","src":"4028:42:2"}],"id":2244,"name":"IfStatement","src":"3943:127:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2231,"type":"uint8","value":"v"},"id":2245,"name":"Identifier","src":"4084:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":2246,"name":"Literal","src":"4089:2:2"}],"id":2247,"name":"BinaryOperation","src":"4084:7:2"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2231,"type":"uint8","value":"v"},"id":2248,"name":"Identifier","src":"4095:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":2249,"name":"Literal","src":"4100:2:2"}],"id":2250,"name":"BinaryOperation","src":"4095:7:2"}],"id":2251,"name":"BinaryOperation","src":"4084:18:2"},{"children":[{"attributes":{"functionReturnParameters":2212},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2252,"name":"ElementaryTypeNameExpression","src":"4125:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2253,"name":"Literal","src":"4133:1:2"}],"id":2254,"name":"FunctionCall","src":"4125:10:2"}],"id":2255,"name":"Return","src":"4118:17:2"}],"id":2256,"name":"Block","src":"4104:42:2"}],"id":2257,"name":"IfStatement","src":"4080:66:2"},{"attributes":{"functionReturnParameters":2212},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":10101,"type":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)","value":"ecrecover"},"id":2258,"name":"Identifier","src":"4247:9:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2206,"type":"bytes32","value":"hash"},"id":2259,"name":"Identifier","src":"4257:4:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2231,"type":"uint8","value":"v"},"id":2260,"name":"Identifier","src":"4263:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"bytes32","value":"r"},"id":2261,"name":"Identifier","src":"4266:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2228,"type":"bytes32","value":"s"},"id":2262,"name":"Identifier","src":"4269:1:2"}],"id":2263,"name":"FunctionCall","src":"4247:24:2"}],"id":2264,"name":"Return","src":"4240:31:2"}],"id":2265,"name":"Block","src":"2474:1804:2"}],"id":2266,"name":"FunctionDefinition","src":"2387:1891:2"},{"attributes":{"documentation":"@dev Returns an Ethereum Signed Message, created from a `hash`. This\nreplicates the behavior of the\nhttps://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\nJSON-RPC method.\n * See {recover}.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toEthSignedMessageHash","scope":2283,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":2282,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2267,"name":"ElementaryTypeName","src":"4574:7:2"}],"id":2268,"name":"VariableDeclaration","src":"4574:12:2"}],"id":2269,"name":"ParameterList","src":"4573:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":2282,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2270,"name":"ElementaryTypeName","src":"4611:7:2"}],"id":2271,"name":"VariableDeclaration","src":"4611:7:2"}],"id":2272,"name":"ParameterList","src":"4610:9:2"},{"children":[{"attributes":{"functionReturnParameters":2272},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":2273,"name":"Identifier","src":"4731:9:2"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string \"\u0019Ethereum Signed Message:\n32\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2274,"name":"Identifier","src":"4741:3:2"}],"id":2275,"name":"MemberAccess","src":"4741:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"19457468657265756d205369676e6564204d6573736167653a0a3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0019Ethereum Signed Message:\n32\"","value":"\u0019Ethereum Signed Message:\n32"},"id":2276,"name":"Literal","src":"4758:34:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2268,"type":"bytes32","value":"hash"},"id":2277,"name":"Identifier","src":"4794:4:2"}],"id":2278,"name":"FunctionCall","src":"4741:58:2"}],"id":2279,"name":"FunctionCall","src":"4731:69:2"}],"id":2280,"name":"Return","src":"4724:76:2"}],"id":2281,"name":"Block","src":"4620:187:2"}],"id":2282,"name":"FunctionDefinition","src":"4542:265:2"}],"id":2283,"name":"ContractDefinition","src":"1392:3417:2"}],"id":2284,"name":"SourceUnit","src":"1161:3649:2"}},"externals/ERC165.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC165.sol","exportedSymbols":{"ERC165":[2293]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":2285,"name":"PragmaDirective","src":"0:24:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC165 interface specifies a standard way of querying if a contract implements an interface.","fullyImplemented":false,"linearizedBaseContracts":[2293],"name":"ERC165","scope":2294},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2293,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2292,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2286,"name":"ElementaryTypeName","src":"180:6:3"}],"id":2287,"name":"VariableDeclaration","src":"180:6:3"}],"id":2288,"name":"ParameterList","src":"179:8:3"},{"children":[{"attributes":{"constant":false,"name":"","scope":2292,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2289,"name":"ElementaryTypeName","src":"211:4:3"}],"id":2290,"name":"VariableDeclaration","src":"211:4:3"}],"id":2291,"name":"ParameterList","src":"210:6:3"}],"id":2292,"name":"FunctionDefinition","src":"153:64:3"}],"id":2293,"name":"ContractDefinition","src":"130:89:3"}],"id":2294,"name":"SourceUnit","src":"0:220:3"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[2346]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":2295,"name":"PragmaDirective","src":"0:24:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[2346],"name":"ERC20","scope":2347},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":2346,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":2304,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2296,"name":"ElementaryTypeName","src":"193:7:4"}],"id":2297,"name":"VariableDeclaration","src":"193:14:4"},{"attributes":{"constant":false,"name":"_spender","scope":2304,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2298,"name":"ElementaryTypeName","src":"209:7:4"}],"id":2299,"name":"VariableDeclaration","src":"209:16:4"}],"id":2300,"name":"ParameterList","src":"192:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2301,"name":"ElementaryTypeName","src":"250:7:4"}],"id":2302,"name":"VariableDeclaration","src":"250:7:4"}],"id":2303,"name":"ParameterList","src":"249:9:4"}],"id":2304,"name":"FunctionDefinition","src":"174:85:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":2346,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":2313,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2305,"name":"ElementaryTypeName","src":"281:7:4"}],"id":2306,"name":"VariableDeclaration","src":"281:16:4"},{"attributes":{"constant":false,"name":"_value","scope":2313,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2307,"name":"ElementaryTypeName","src":"299:7:4"}],"id":2308,"name":"VariableDeclaration","src":"299:14:4"}],"id":2309,"name":"ParameterList","src":"280:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2313,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2310,"name":"ElementaryTypeName","src":"333:4:4"}],"id":2311,"name":"VariableDeclaration","src":"333:4:4"}],"id":2312,"name":"ParameterList","src":"332:6:4"}],"id":2313,"name":"FunctionDefinition","src":"264:75:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":2346,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":2320,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2314,"name":"ElementaryTypeName","src":"363:7:4"}],"id":2315,"name":"VariableDeclaration","src":"363:12:4"}],"id":2316,"name":"ParameterList","src":"362:14:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2320,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2317,"name":"ElementaryTypeName","src":"400:7:4"}],"id":2318,"name":"VariableDeclaration","src":"400:7:4"}],"id":2319,"name":"ParameterList","src":"399:9:4"}],"id":2320,"name":"FunctionDefinition","src":"344:65:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":2346,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2321,"name":"ParameterList","src":"434:2:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2325,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2322,"name":"ElementaryTypeName","src":"460:7:4"}],"id":2323,"name":"VariableDeclaration","src":"460:7:4"}],"id":2324,"name":"ParameterList","src":"459:9:4"}],"id":2325,"name":"FunctionDefinition","src":"414:55:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":2346,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2334,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2326,"name":"ElementaryTypeName","src":"492:7:4"}],"id":2327,"name":"VariableDeclaration","src":"492:11:4"},{"attributes":{"constant":false,"name":"_value","scope":2334,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2328,"name":"ElementaryTypeName","src":"505:7:4"}],"id":2329,"name":"VariableDeclaration","src":"505:14:4"}],"id":2330,"name":"ParameterList","src":"491:29:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2334,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2331,"name":"ElementaryTypeName","src":"539:4:4"}],"id":2332,"name":"VariableDeclaration","src":"539:4:4"}],"id":2333,"name":"ParameterList","src":"538:6:4"}],"id":2334,"name":"FunctionDefinition","src":"474:71:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":2346,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":2345,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2335,"name":"ElementaryTypeName","src":"572:7:4"}],"id":2336,"name":"VariableDeclaration","src":"572:13:4"},{"attributes":{"constant":false,"name":"_to","scope":2345,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2337,"name":"ElementaryTypeName","src":"587:7:4"}],"id":2338,"name":"VariableDeclaration","src":"587:11:4"},{"attributes":{"constant":false,"name":"_value","scope":2345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2339,"name":"ElementaryTypeName","src":"600:7:4"}],"id":2340,"name":"VariableDeclaration","src":"600:14:4"}],"id":2341,"name":"ParameterList","src":"571:44:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":2345,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2342,"name":"ElementaryTypeName","src":"634:4:4"}],"id":2343,"name":"VariableDeclaration","src":"634:4:4"}],"id":2344,"name":"ParameterList","src":"633:6:4"}],"id":2345,"name":"FunctionDefinition","src":"550:90:4"}],"id":2346,"name":"ContractDefinition","src":"152:490:4"}],"id":2347,"name":"SourceUnit","src":"0:643:4"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[2565]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2348,"name":"PragmaDirective","src":"1161:23:5"},{"attributes":{"SourceUnit":2347,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":2566,"symbolAliases":[null],"unitAlias":""},"id":2349,"name":"ImportDirective","src":"1186:21:5"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":2566,"symbolAliases":[null],"unitAlias":""},"id":2350,"name":"ImportDirective","src":"1208:24:5"},{"attributes":{"SourceUnit":2203,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":2566,"symbolAliases":[null],"unitAlias":""},"id":2351,"name":"ImportDirective","src":"1233:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[2565],"name":"SafeERC20","scope":2566},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":2352,"name":"UserDefinedTypeName","src":"1745:8:5"},{"attributes":{"name":"uint256","type":"uint256"},"id":2353,"name":"ElementaryTypeName","src":"1758:7:5"}],"id":2354,"name":"UsingForDirective","src":"1739:27:5"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":2202,"type":"library Address"},"id":2355,"name":"UserDefinedTypeName","src":"1777:7:5"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2356,"name":"ElementaryTypeName","src":"1789:7:5"}],"id":2357,"name":"UsingForDirective","src":"1771:26:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2379,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2358,"name":"UserDefinedTypeName","src":"1825:5:5"}],"id":2359,"name":"VariableDeclaration","src":"1825:11:5"},{"attributes":{"constant":false,"name":"to","scope":2379,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2360,"name":"ElementaryTypeName","src":"1838:7:5"}],"id":2361,"name":"VariableDeclaration","src":"1838:10:5"},{"attributes":{"constant":false,"name":"value","scope":2379,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2362,"name":"ElementaryTypeName","src":"1850:7:5"}],"id":2363,"name":"VariableDeclaration","src":"1850:13:5"}],"id":2364,"name":"ParameterList","src":"1824:40:5"},{"attributes":{"parameters":[null]},"children":[],"id":2365,"name":"ParameterList","src":"1874:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2366,"name":"Identifier","src":"1884:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2359,"type":"contract ERC20","value":"token"},"id":2367,"name":"Identifier","src":"1903:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2368,"name":"Identifier","src":"1910:3:5"}],"id":2369,"name":"MemberAccess","src":"1910:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":2334,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2359,"type":"contract ERC20","value":"token"},"id":2370,"name":"Identifier","src":"1933:5:5"}],"id":2371,"name":"MemberAccess","src":"1933:14:5"}],"id":2372,"name":"MemberAccess","src":"1933:23:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2361,"type":"address","value":"to"},"id":2373,"name":"Identifier","src":"1958:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2363,"type":"uint256","value":"value"},"id":2374,"name":"Identifier","src":"1962:5:5"}],"id":2375,"name":"FunctionCall","src":"1910:58:5"}],"id":2376,"name":"FunctionCall","src":"1884:85:5"}],"id":2377,"name":"ExpressionStatement","src":"1884:85:5"}],"id":2378,"name":"Block","src":"1874:102:5"}],"id":2379,"name":"FunctionDefinition","src":"1803:173:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2404,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2380,"name":"UserDefinedTypeName","src":"2008:5:5"}],"id":2381,"name":"VariableDeclaration","src":"2008:11:5"},{"attributes":{"constant":false,"name":"from","scope":2404,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2382,"name":"ElementaryTypeName","src":"2021:7:5"}],"id":2383,"name":"VariableDeclaration","src":"2021:12:5"},{"attributes":{"constant":false,"name":"to","scope":2404,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2384,"name":"ElementaryTypeName","src":"2035:7:5"}],"id":2385,"name":"VariableDeclaration","src":"2035:10:5"},{"attributes":{"constant":false,"name":"value","scope":2404,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2386,"name":"ElementaryTypeName","src":"2047:7:5"}],"id":2387,"name":"VariableDeclaration","src":"2047:13:5"}],"id":2388,"name":"ParameterList","src":"2007:54:5"},{"attributes":{"parameters":[null]},"children":[],"id":2389,"name":"ParameterList","src":"2071:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2390,"name":"Identifier","src":"2081:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2381,"type":"contract ERC20","value":"token"},"id":2391,"name":"Identifier","src":"2100:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2392,"name":"Identifier","src":"2107:3:5"}],"id":2393,"name":"MemberAccess","src":"2107:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":2345,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2381,"type":"contract ERC20","value":"token"},"id":2394,"name":"Identifier","src":"2130:5:5"}],"id":2395,"name":"MemberAccess","src":"2130:18:5"}],"id":2396,"name":"MemberAccess","src":"2130:27:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2383,"type":"address","value":"from"},"id":2397,"name":"Identifier","src":"2159:4:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2385,"type":"address","value":"to"},"id":2398,"name":"Identifier","src":"2165:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2387,"type":"uint256","value":"value"},"id":2399,"name":"Identifier","src":"2169:5:5"}],"id":2400,"name":"FunctionCall","src":"2107:68:5"}],"id":2401,"name":"FunctionCall","src":"2081:95:5"}],"id":2402,"name":"ExpressionStatement","src":"2081:95:5"}],"id":2403,"name":"Block","src":"2071:112:5"}],"id":2404,"name":"FunctionDefinition","src":"1982:201:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2445,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2405,"name":"UserDefinedTypeName","src":"2210:5:5"}],"id":2406,"name":"VariableDeclaration","src":"2210:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2445,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2407,"name":"ElementaryTypeName","src":"2223:7:5"}],"id":2408,"name":"VariableDeclaration","src":"2223:15:5"},{"attributes":{"constant":false,"name":"value","scope":2445,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2409,"name":"ElementaryTypeName","src":"2240:7:5"}],"id":2410,"name":"VariableDeclaration","src":"2240:13:5"}],"id":2411,"name":"ParameterList","src":"2209:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2412,"name":"ParameterList","src":"2264:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2413,"name":"Identifier","src":"2544:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2410,"type":"uint256","value":"value"},"id":2414,"name":"Identifier","src":"2553:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2415,"name":"Literal","src":"2562:1:5"}],"id":2416,"name":"BinaryOperation","src":"2553:10:5"}],"id":2417,"name":"TupleExpression","src":"2552:12:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2304,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"contract ERC20","value":"token"},"id":2418,"name":"Identifier","src":"2569:5:5"}],"id":2419,"name":"MemberAccess","src":"2569:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2565","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2420,"name":"ElementaryTypeNameExpression","src":"2585:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10131,"type":"library SafeERC20","value":"this"},"id":2421,"name":"Identifier","src":"2593:4:5"}],"id":2422,"name":"FunctionCall","src":"2585:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"address","value":"spender"},"id":2423,"name":"Identifier","src":"2600:7:5"}],"id":2424,"name":"FunctionCall","src":"2569:39:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2425,"name":"Literal","src":"2612:1:5"}],"id":2426,"name":"BinaryOperation","src":"2569:44:5"}],"id":2427,"name":"TupleExpression","src":"2568:46:5"}],"id":2428,"name":"BinaryOperation","src":"2552:62:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":2429,"name":"Literal","src":"2628:56:5"}],"id":2430,"name":"FunctionCall","src":"2544:150:5"}],"id":2431,"name":"ExpressionStatement","src":"2544:150:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2432,"name":"Identifier","src":"2704:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"contract ERC20","value":"token"},"id":2433,"name":"Identifier","src":"2723:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2434,"name":"Identifier","src":"2730:3:5"}],"id":2435,"name":"MemberAccess","src":"2730:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2313,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2406,"type":"contract ERC20","value":"token"},"id":2436,"name":"Identifier","src":"2753:5:5"}],"id":2437,"name":"MemberAccess","src":"2753:13:5"}],"id":2438,"name":"MemberAccess","src":"2753:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2408,"type":"address","value":"spender"},"id":2439,"name":"Identifier","src":"2777:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2410,"type":"uint256","value":"value"},"id":2440,"name":"Identifier","src":"2786:5:5"}],"id":2441,"name":"FunctionCall","src":"2730:62:5"}],"id":2442,"name":"FunctionCall","src":"2704:89:5"}],"id":2443,"name":"ExpressionStatement","src":"2704:89:5"}],"id":2444,"name":"Block","src":"2264:536:5"}],"id":2445,"name":"FunctionDefinition","src":"2189:611:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2480,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2446,"name":"UserDefinedTypeName","src":"2837:5:5"}],"id":2447,"name":"VariableDeclaration","src":"2837:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2480,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2448,"name":"ElementaryTypeName","src":"2850:7:5"}],"id":2449,"name":"VariableDeclaration","src":"2850:15:5"},{"attributes":{"constant":false,"name":"value","scope":2480,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2450,"name":"ElementaryTypeName","src":"2867:7:5"}],"id":2451,"name":"VariableDeclaration","src":"2867:13:5"}],"id":2452,"name":"ParameterList","src":"2836:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2453,"name":"ParameterList","src":"2891:0:5"},{"children":[{"attributes":{"assignments":[2455]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2479,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2454,"name":"ElementaryTypeName","src":"2901:7:5"}],"id":2455,"name":"VariableDeclaration","src":"2901:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2304,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2447,"type":"contract ERC20","value":"token"},"id":2456,"name":"Identifier","src":"2924:5:5"}],"id":2457,"name":"MemberAccess","src":"2924:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2565","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2458,"name":"ElementaryTypeNameExpression","src":"2940:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10131,"type":"library SafeERC20","value":"this"},"id":2459,"name":"Identifier","src":"2948:4:5"}],"id":2460,"name":"FunctionCall","src":"2940:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"address","value":"spender"},"id":2461,"name":"Identifier","src":"2955:7:5"}],"id":2462,"name":"FunctionCall","src":"2924:39:5"}],"id":2463,"name":"MemberAccess","src":"2924:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2451,"type":"uint256","value":"value"},"id":2464,"name":"Identifier","src":"2968:5:5"}],"id":2465,"name":"FunctionCall","src":"2924:50:5"}],"id":2466,"name":"VariableDeclarationStatement","src":"2901:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2467,"name":"Identifier","src":"2984:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2447,"type":"contract ERC20","value":"token"},"id":2468,"name":"Identifier","src":"3003:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2469,"name":"Identifier","src":"3010:3:5"}],"id":2470,"name":"MemberAccess","src":"3010:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2313,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2447,"type":"contract ERC20","value":"token"},"id":2471,"name":"Identifier","src":"3033:5:5"}],"id":2472,"name":"MemberAccess","src":"3033:13:5"}],"id":2473,"name":"MemberAccess","src":"3033:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2449,"type":"address","value":"spender"},"id":2474,"name":"Identifier","src":"3057:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2455,"type":"uint256","value":"newAllowance"},"id":2475,"name":"Identifier","src":"3066:12:5"}],"id":2476,"name":"FunctionCall","src":"3010:69:5"}],"id":2477,"name":"FunctionCall","src":"2984:96:5"}],"id":2478,"name":"ExpressionStatement","src":"2984:96:5"}],"id":2479,"name":"Block","src":"2891:196:5"}],"id":2480,"name":"FunctionDefinition","src":"2806:281:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2515,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2481,"name":"UserDefinedTypeName","src":"3124:5:5"}],"id":2482,"name":"VariableDeclaration","src":"3124:11:5"},{"attributes":{"constant":false,"name":"spender","scope":2515,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2483,"name":"ElementaryTypeName","src":"3137:7:5"}],"id":2484,"name":"VariableDeclaration","src":"3137:15:5"},{"attributes":{"constant":false,"name":"value","scope":2515,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2485,"name":"ElementaryTypeName","src":"3154:7:5"}],"id":2486,"name":"VariableDeclaration","src":"3154:13:5"}],"id":2487,"name":"ParameterList","src":"3123:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":2488,"name":"ParameterList","src":"3178:0:5"},{"children":[{"attributes":{"assignments":[2490]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":2514,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2489,"name":"ElementaryTypeName","src":"3188:7:5"}],"id":2490,"name":"VariableDeclaration","src":"3188:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":2304,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"contract ERC20","value":"token"},"id":2491,"name":"Identifier","src":"3211:5:5"}],"id":2492,"name":"MemberAccess","src":"3211:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$2565","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2493,"name":"ElementaryTypeNameExpression","src":"3227:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10131,"type":"library SafeERC20","value":"this"},"id":2494,"name":"Identifier","src":"3235:4:5"}],"id":2495,"name":"FunctionCall","src":"3227:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2484,"type":"address","value":"spender"},"id":2496,"name":"Identifier","src":"3242:7:5"}],"id":2497,"name":"FunctionCall","src":"3211:39:5"}],"id":2498,"name":"MemberAccess","src":"3211:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2486,"type":"uint256","value":"value"},"id":2499,"name":"Identifier","src":"3255:5:5"}],"id":2500,"name":"FunctionCall","src":"3211:50:5"}],"id":2501,"name":"VariableDeclarationStatement","src":"3188:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":2502,"name":"Identifier","src":"3271:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"contract ERC20","value":"token"},"id":2503,"name":"Identifier","src":"3290:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2504,"name":"Identifier","src":"3297:3:5"}],"id":2505,"name":"MemberAccess","src":"3297:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":2313,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2482,"type":"contract ERC20","value":"token"},"id":2506,"name":"Identifier","src":"3320:5:5"}],"id":2507,"name":"MemberAccess","src":"3320:13:5"}],"id":2508,"name":"MemberAccess","src":"3320:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2484,"type":"address","value":"spender"},"id":2509,"name":"Identifier","src":"3344:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2490,"type":"uint256","value":"newAllowance"},"id":2510,"name":"Identifier","src":"3353:12:5"}],"id":2511,"name":"FunctionCall","src":"3297:69:5"}],"id":2512,"name":"FunctionCall","src":"3271:96:5"}],"id":2513,"name":"ExpressionStatement","src":"3271:96:5"}],"id":2514,"name":"Block","src":"3178:196:5"}],"id":2515,"name":"FunctionDefinition","src":"3093:281:5"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":2565,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":2564,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":2516,"name":"UserDefinedTypeName","src":"3785:5:5"}],"id":2517,"name":"VariableDeclaration","src":"3785:11:5"},{"attributes":{"constant":false,"name":"data","scope":2564,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2518,"name":"ElementaryTypeName","src":"3798:5:5"}],"id":2519,"name":"VariableDeclaration","src":"3798:17:5"}],"id":2520,"name":"ParameterList","src":"3784:32:5"},{"attributes":{"parameters":[null]},"children":[],"id":2521,"name":"ParameterList","src":"3826:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2522,"name":"Identifier","src":"4344:7:5"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":2201,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2523,"name":"ElementaryTypeNameExpression","src":"4352:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2517,"type":"contract ERC20","value":"token"},"id":2524,"name":"Identifier","src":"4360:5:5"}],"id":2525,"name":"FunctionCall","src":"4352:14:5"}],"id":2526,"name":"MemberAccess","src":"4352:25:5"}],"id":2527,"name":"FunctionCall","src":"4352:27:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":2528,"name":"Literal","src":"4381:33:5"}],"id":2529,"name":"FunctionCall","src":"4344:71:5"}],"id":2530,"name":"ExpressionStatement","src":"4344:71:5"},{"attributes":{"assignments":[2532,2534]},"children":[{"attributes":{"constant":false,"name":"success","scope":2563,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2531,"name":"ElementaryTypeName","src":"4486:4:5"}],"id":2532,"name":"VariableDeclaration","src":"4486:12:5"},{"attributes":{"constant":false,"name":"returndata","scope":2563,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2533,"name":"ElementaryTypeName","src":"4500:5:5"}],"id":2534,"name":"VariableDeclaration","src":"4500:23:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$2346","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2535,"name":"ElementaryTypeNameExpression","src":"4527:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2517,"type":"contract ERC20","value":"token"},"id":2536,"name":"Identifier","src":"4535:5:5"}],"id":2537,"name":"FunctionCall","src":"4527:14:5"}],"id":2538,"name":"MemberAccess","src":"4527:19:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2519,"type":"bytes memory","value":"data"},"id":2539,"name":"Identifier","src":"4547:4:5"}],"id":2540,"name":"FunctionCall","src":"4527:25:5"}],"id":2541,"name":"VariableDeclarationStatement","src":"4485:67:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2542,"name":"Identifier","src":"4562:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2532,"type":"bool","value":"success"},"id":2543,"name":"Identifier","src":"4570:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":2544,"name":"Literal","src":"4579:34:5"}],"id":2545,"name":"FunctionCall","src":"4562:52:5"}],"id":2546,"name":"ExpressionStatement","src":"4562:52:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2534,"type":"bytes memory","value":"returndata"},"id":2547,"name":"Identifier","src":"4629:10:5"}],"id":2548,"name":"MemberAccess","src":"4629:17:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2549,"name":"Literal","src":"4649:1:5"}],"id":2550,"name":"BinaryOperation","src":"4629:21:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2551,"name":"Identifier","src":"4750:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":2552,"name":"Identifier","src":"4758:3:5"}],"id":2553,"name":"MemberAccess","src":"4758:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2534,"type":"bytes memory","value":"returndata"},"id":2554,"name":"Identifier","src":"4769:10:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":2555,"name":"ElementaryTypeNameExpression","src":"4782:4:5"}],"id":2556,"name":"TupleExpression","src":"4781:6:5"}],"id":2557,"name":"FunctionCall","src":"4758:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":2558,"name":"Literal","src":"4790:44:5"}],"id":2559,"name":"FunctionCall","src":"4750:85:5"}],"id":2560,"name":"ExpressionStatement","src":"4750:85:5"}],"id":2561,"name":"Block","src":"4652:194:5"}],"id":2562,"name":"IfStatement","src":"4625:221:5"}],"id":2563,"name":"Block","src":"3826:1026:5"}],"id":2564,"name":"FunctionDefinition","src":"3757:1095:5"}],"id":2565,"name":"ContractDefinition","src":"1715:3139:5"}],"id":2566,"name":"SourceUnit","src":"1161:3694:5"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[2698]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2567,"name":"PragmaDirective","src":"0:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[2698],"name":"SafeMath","scope":2699},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2568,"name":"ElementaryTypeName","src":"847:7:6"}],"id":2569,"name":"VariableDeclaration","src":"847:9:6"},{"attributes":{"constant":false,"name":"b","scope":2592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2570,"name":"ElementaryTypeName","src":"858:7:6"}],"id":2571,"name":"VariableDeclaration","src":"858:9:6"}],"id":2572,"name":"ParameterList","src":"846:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2573,"name":"ElementaryTypeName","src":"892:7:6"}],"id":2574,"name":"VariableDeclaration","src":"892:7:6"}],"id":2575,"name":"ParameterList","src":"891:9:6"},{"children":[{"attributes":{"assignments":[2577]},"children":[{"attributes":{"constant":false,"name":"c","scope":2591,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2576,"name":"ElementaryTypeName","src":"911:7:6"}],"id":2577,"name":"VariableDeclaration","src":"911:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"uint256","value":"a"},"id":2578,"name":"Identifier","src":"923:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2571,"type":"uint256","value":"b"},"id":2579,"name":"Identifier","src":"927:1:6"}],"id":2580,"name":"BinaryOperation","src":"923:5:6"}],"id":2581,"name":"VariableDeclarationStatement","src":"911:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2582,"name":"Identifier","src":"938:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2577,"type":"uint256","value":"c"},"id":2583,"name":"Identifier","src":"946:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2569,"type":"uint256","value":"a"},"id":2584,"name":"Identifier","src":"951:1:6"}],"id":2585,"name":"BinaryOperation","src":"946:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":2586,"name":"Literal","src":"954:29:6"}],"id":2587,"name":"FunctionCall","src":"938:46:6"}],"id":2588,"name":"ExpressionStatement","src":"938:46:6"},{"attributes":{"functionReturnParameters":2575},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2577,"type":"uint256","value":"c"},"id":2589,"name":"Identifier","src":"1002:1:6"}],"id":2590,"name":"Return","src":"995:8:6"}],"id":2591,"name":"Block","src":"901:109:6"}],"id":2592,"name":"FunctionDefinition","src":"834:176:6"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2593,"name":"ElementaryTypeName","src":"1287:7:6"}],"id":2594,"name":"VariableDeclaration","src":"1287:9:6"},{"attributes":{"constant":false,"name":"b","scope":2617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2595,"name":"ElementaryTypeName","src":"1298:7:6"}],"id":2596,"name":"VariableDeclaration","src":"1298:9:6"}],"id":2597,"name":"ParameterList","src":"1286:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2598,"name":"ElementaryTypeName","src":"1332:7:6"}],"id":2599,"name":"VariableDeclaration","src":"1332:7:6"}],"id":2600,"name":"ParameterList","src":"1331:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2601,"name":"Identifier","src":"1351:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2596,"type":"uint256","value":"b"},"id":2602,"name":"Identifier","src":"1359:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2594,"type":"uint256","value":"a"},"id":2603,"name":"Identifier","src":"1364:1:6"}],"id":2604,"name":"BinaryOperation","src":"1359:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":2605,"name":"Literal","src":"1367:32:6"}],"id":2606,"name":"FunctionCall","src":"1351:49:6"}],"id":2607,"name":"ExpressionStatement","src":"1351:49:6"},{"attributes":{"assignments":[2609]},"children":[{"attributes":{"constant":false,"name":"c","scope":2616,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2608,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":2609,"name":"VariableDeclaration","src":"1410:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2594,"type":"uint256","value":"a"},"id":2610,"name":"Identifier","src":"1422:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2596,"type":"uint256","value":"b"},"id":2611,"name":"Identifier","src":"1426:1:6"}],"id":2612,"name":"BinaryOperation","src":"1422:5:6"}],"id":2613,"name":"VariableDeclarationStatement","src":"1410:17:6"},{"attributes":{"functionReturnParameters":2600},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2609,"type":"uint256","value":"c"},"id":2614,"name":"Identifier","src":"1445:1:6"}],"id":2615,"name":"Return","src":"1438:8:6"}],"id":2616,"name":"Block","src":"1341:112:6"}],"id":2617,"name":"FunctionDefinition","src":"1274:179:6"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2618,"name":"ElementaryTypeName","src":"1706:7:6"}],"id":2619,"name":"VariableDeclaration","src":"1706:9:6"},{"attributes":{"constant":false,"name":"b","scope":2651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2620,"name":"ElementaryTypeName","src":"1717:7:6"}],"id":2621,"name":"VariableDeclaration","src":"1717:9:6"}],"id":2622,"name":"ParameterList","src":"1705:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2623,"name":"ElementaryTypeName","src":"1751:7:6"}],"id":2624,"name":"VariableDeclaration","src":"1751:7:6"}],"id":2625,"name":"ParameterList","src":"1750:9:6"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2619,"type":"uint256","value":"a"},"id":2626,"name":"Identifier","src":"1991:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2627,"name":"Literal","src":"1996:1:6"}],"id":2628,"name":"BinaryOperation","src":"1991:6:6"},{"children":[{"attributes":{"functionReturnParameters":2625},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2629,"name":"Literal","src":"2020:1:6"}],"id":2630,"name":"Return","src":"2013:8:6"}],"id":2631,"name":"Block","src":"1999:33:6"}],"id":2632,"name":"IfStatement","src":"1987:45:6"},{"attributes":{"assignments":[2634]},"children":[{"attributes":{"constant":false,"name":"c","scope":2650,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2633,"name":"ElementaryTypeName","src":"2042:7:6"}],"id":2634,"name":"VariableDeclaration","src":"2042:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2619,"type":"uint256","value":"a"},"id":2635,"name":"Identifier","src":"2054:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2621,"type":"uint256","value":"b"},"id":2636,"name":"Identifier","src":"2058:1:6"}],"id":2637,"name":"BinaryOperation","src":"2054:5:6"}],"id":2638,"name":"VariableDeclarationStatement","src":"2042:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2639,"name":"Identifier","src":"2069:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"uint256","value":"c"},"id":2640,"name":"Identifier","src":"2077:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2619,"type":"uint256","value":"a"},"id":2641,"name":"Identifier","src":"2081:1:6"}],"id":2642,"name":"BinaryOperation","src":"2077:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2621,"type":"uint256","value":"b"},"id":2643,"name":"Identifier","src":"2086:1:6"}],"id":2644,"name":"BinaryOperation","src":"2077:10:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":2645,"name":"Literal","src":"2089:35:6"}],"id":2646,"name":"FunctionCall","src":"2069:56:6"}],"id":2647,"name":"ExpressionStatement","src":"2069:56:6"},{"attributes":{"functionReturnParameters":2625},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"uint256","value":"c"},"id":2648,"name":"Identifier","src":"2143:1:6"}],"id":2649,"name":"Return","src":"2136:8:6"}],"id":2650,"name":"Block","src":"1760:391:6"}],"id":2651,"name":"FunctionDefinition","src":"1693:458:6"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2652,"name":"ElementaryTypeName","src":"2619:7:6"}],"id":2653,"name":"VariableDeclaration","src":"2619:9:6"},{"attributes":{"constant":false,"name":"b","scope":2676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2654,"name":"ElementaryTypeName","src":"2630:7:6"}],"id":2655,"name":"VariableDeclaration","src":"2630:9:6"}],"id":2656,"name":"ParameterList","src":"2618:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2676,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2657,"name":"ElementaryTypeName","src":"2664:7:6"}],"id":2658,"name":"VariableDeclaration","src":"2664:7:6"}],"id":2659,"name":"ParameterList","src":"2663:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2660,"name":"Identifier","src":"2749:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2655,"type":"uint256","value":"b"},"id":2661,"name":"Identifier","src":"2757:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2662,"name":"Literal","src":"2761:1:6"}],"id":2663,"name":"BinaryOperation","src":"2757:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":2664,"name":"Literal","src":"2764:28:6"}],"id":2665,"name":"FunctionCall","src":"2749:44:6"}],"id":2666,"name":"ExpressionStatement","src":"2749:44:6"},{"attributes":{"assignments":[2668]},"children":[{"attributes":{"constant":false,"name":"c","scope":2675,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2667,"name":"ElementaryTypeName","src":"2803:7:6"}],"id":2668,"name":"VariableDeclaration","src":"2803:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2653,"type":"uint256","value":"a"},"id":2669,"name":"Identifier","src":"2815:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2655,"type":"uint256","value":"b"},"id":2670,"name":"Identifier","src":"2819:1:6"}],"id":2671,"name":"BinaryOperation","src":"2815:5:6"}],"id":2672,"name":"VariableDeclarationStatement","src":"2803:17:6"},{"attributes":{"functionReturnParameters":2659},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2668,"type":"uint256","value":"c"},"id":2673,"name":"Identifier","src":"2924:1:6"}],"id":2674,"name":"Return","src":"2917:8:6"}],"id":2675,"name":"Block","src":"2673:259:6"}],"id":2676,"name":"FunctionDefinition","src":"2606:326:6"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":2698,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":2697,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2677,"name":"ElementaryTypeName","src":"3389:7:6"}],"id":2678,"name":"VariableDeclaration","src":"3389:9:6"},{"attributes":{"constant":false,"name":"b","scope":2697,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2679,"name":"ElementaryTypeName","src":"3400:7:6"}],"id":2680,"name":"VariableDeclaration","src":"3400:9:6"}],"id":2681,"name":"ParameterList","src":"3388:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":2697,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2682,"name":"ElementaryTypeName","src":"3434:7:6"}],"id":2683,"name":"VariableDeclaration","src":"3434:7:6"}],"id":2684,"name":"ParameterList","src":"3433:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2685,"name":"Identifier","src":"3453:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2680,"type":"uint256","value":"b"},"id":2686,"name":"Identifier","src":"3461:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2687,"name":"Literal","src":"3466:1:6"}],"id":2688,"name":"BinaryOperation","src":"3461:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":2689,"name":"Literal","src":"3469:26:6"}],"id":2690,"name":"FunctionCall","src":"3453:43:6"}],"id":2691,"name":"ExpressionStatement","src":"3453:43:6"},{"attributes":{"functionReturnParameters":2684},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2678,"type":"uint256","value":"a"},"id":2692,"name":"Identifier","src":"3513:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2680,"type":"uint256","value":"b"},"id":2693,"name":"Identifier","src":"3517:1:6"}],"id":2694,"name":"BinaryOperation","src":"3513:5:6"}],"id":2695,"name":"Return","src":"3506:12:6"}],"id":2696,"name":"Block","src":"3443:82:6"}],"id":2697,"name":"FunctionDefinition","src":"3376:149:6"}],"id":2698,"name":"ContractDefinition","src":"589:2938:6"}],"id":2699,"name":"SourceUnit","src":"0:3528:6"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[4420]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4285,"name":"PragmaDirective","src":"1400:23:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4420],"name":"ENS","scope":4421},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4293,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4286,"name":"ElementaryTypeName","src":"1534:7:7"}],"id":4287,"name":"VariableDeclaration","src":"1534:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":4293,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4288,"name":"ElementaryTypeName","src":"1557:7:7"}],"id":4289,"name":"VariableDeclaration","src":"1557:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4293,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4290,"name":"ElementaryTypeName","src":"1581:7:7"}],"id":4291,"name":"VariableDeclaration","src":"1581:14:7"}],"id":4292,"name":"ParameterList","src":"1533:63:7"}],"id":4293,"name":"EventDefinition","src":"1519:78:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4299,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4294,"name":"ElementaryTypeName","src":"1695:7:7"}],"id":4295,"name":"VariableDeclaration","src":"1695:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4299,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4296,"name":"ElementaryTypeName","src":"1718:7:7"}],"id":4297,"name":"VariableDeclaration","src":"1718:14:7"}],"id":4298,"name":"ParameterList","src":"1694:39:7"}],"id":4299,"name":"EventDefinition","src":"1680:54:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4305,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4300,"name":"ElementaryTypeName","src":"1810:7:7"}],"id":4301,"name":"VariableDeclaration","src":"1810:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":4305,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4302,"name":"ElementaryTypeName","src":"1833:7:7"}],"id":4303,"name":"VariableDeclaration","src":"1833:17:7"}],"id":4304,"name":"ParameterList","src":"1809:42:7"}],"id":4305,"name":"EventDefinition","src":"1792:60:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4311,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4306,"name":"ElementaryTypeName","src":"1916:7:7"}],"id":4307,"name":"VariableDeclaration","src":"1916:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":4311,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4308,"name":"ElementaryTypeName","src":"1939:6:7"}],"id":4309,"name":"VariableDeclaration","src":"1939:11:7"}],"id":4310,"name":"ParameterList","src":"1915:36:7"}],"id":4311,"name":"EventDefinition","src":"1903:49:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":4319,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4312,"name":"ElementaryTypeName","src":"2031:7:7"}],"id":4313,"name":"VariableDeclaration","src":"2031:22:7"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":4319,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4314,"name":"ElementaryTypeName","src":"2055:7:7"}],"id":4315,"name":"VariableDeclaration","src":"2055:25:7"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":4319,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4316,"name":"ElementaryTypeName","src":"2082:4:7"}],"id":4317,"name":"VariableDeclaration","src":"2082:14:7"}],"id":4318,"name":"ParameterList","src":"2030:67:7"}],"id":4319,"name":"EventDefinition","src":"2010:88:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4330,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4320,"name":"ElementaryTypeName","src":"2123:7:7"}],"id":4321,"name":"VariableDeclaration","src":"2123:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4330,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4322,"name":"ElementaryTypeName","src":"2138:7:7"}],"id":4323,"name":"VariableDeclaration","src":"2138:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4330,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4324,"name":"ElementaryTypeName","src":"2154:7:7"}],"id":4325,"name":"VariableDeclaration","src":"2154:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4330,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4326,"name":"ElementaryTypeName","src":"2173:6:7"}],"id":4327,"name":"VariableDeclaration","src":"2173:11:7"}],"id":4328,"name":"ParameterList","src":"2122:63:7"},{"attributes":{"parameters":[null]},"children":[],"id":4329,"name":"ParameterList","src":"2194:0:7"}],"id":4330,"name":"FunctionDefinition","src":"2104:91:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4331,"name":"ElementaryTypeName","src":"2226:7:7"}],"id":4332,"name":"VariableDeclaration","src":"2226:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4343,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4333,"name":"ElementaryTypeName","src":"2241:7:7"}],"id":4334,"name":"VariableDeclaration","src":"2241:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4335,"name":"ElementaryTypeName","src":"2257:7:7"}],"id":4336,"name":"VariableDeclaration","src":"2257:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4337,"name":"ElementaryTypeName","src":"2273:7:7"}],"id":4338,"name":"VariableDeclaration","src":"2273:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4343,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4339,"name":"ElementaryTypeName","src":"2292:6:7"}],"id":4340,"name":"VariableDeclaration","src":"2292:11:7"}],"id":4341,"name":"ParameterList","src":"2225:79:7"},{"attributes":{"parameters":[null]},"children":[],"id":4342,"name":"ParameterList","src":"2313:0:7"}],"id":4343,"name":"FunctionDefinition","src":"2200:114:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4354,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4344,"name":"ElementaryTypeName","src":"2344:7:7"}],"id":4345,"name":"VariableDeclaration","src":"2344:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4354,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4346,"name":"ElementaryTypeName","src":"2359:7:7"}],"id":4347,"name":"VariableDeclaration","src":"2359:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4354,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4348,"name":"ElementaryTypeName","src":"2375:7:7"}],"id":4349,"name":"VariableDeclaration","src":"2375:14:7"}],"id":4350,"name":"ParameterList","src":"2343:47:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4354,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4351,"name":"ElementaryTypeName","src":"2408:7:7"}],"id":4352,"name":"VariableDeclaration","src":"2408:7:7"}],"id":4353,"name":"ParameterList","src":"2407:9:7"}],"id":4354,"name":"FunctionDefinition","src":"2319:98:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4361,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4355,"name":"ElementaryTypeName","src":"2443:7:7"}],"id":4356,"name":"VariableDeclaration","src":"2443:13:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4361,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4357,"name":"ElementaryTypeName","src":"2458:7:7"}],"id":4358,"name":"VariableDeclaration","src":"2458:17:7"}],"id":4359,"name":"ParameterList","src":"2442:34:7"},{"attributes":{"parameters":[null]},"children":[],"id":4360,"name":"ParameterList","src":"2485:0:7"}],"id":4361,"name":"FunctionDefinition","src":"2422:64:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4368,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4362,"name":"ElementaryTypeName","src":"2509:7:7"}],"id":4363,"name":"VariableDeclaration","src":"2509:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4364,"name":"ElementaryTypeName","src":"2524:7:7"}],"id":4365,"name":"VariableDeclaration","src":"2524:14:7"}],"id":4366,"name":"ParameterList","src":"2508:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":4367,"name":"ParameterList","src":"2548:0:7"}],"id":4368,"name":"FunctionDefinition","src":"2491:58:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4375,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4369,"name":"ElementaryTypeName","src":"2570:7:7"}],"id":4370,"name":"VariableDeclaration","src":"2570:13:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4375,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4371,"name":"ElementaryTypeName","src":"2585:6:7"}],"id":4372,"name":"VariableDeclaration","src":"2585:11:7"}],"id":4373,"name":"ParameterList","src":"2569:28:7"},{"attributes":{"parameters":[null]},"children":[],"id":4374,"name":"ParameterList","src":"2606:0:7"}],"id":4375,"name":"FunctionDefinition","src":"2554:53:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":4420,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":4382,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4376,"name":"ElementaryTypeName","src":"2639:7:7"}],"id":4377,"name":"VariableDeclaration","src":"2639:17:7"},{"attributes":{"constant":false,"name":"_approved","scope":4382,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4378,"name":"ElementaryTypeName","src":"2658:4:7"}],"id":4379,"name":"VariableDeclaration","src":"2658:14:7"}],"id":4380,"name":"ParameterList","src":"2638:35:7"},{"attributes":{"parameters":[null]},"children":[],"id":4381,"name":"ParameterList","src":"2682:0:7"}],"id":4382,"name":"FunctionDefinition","src":"2612:71:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4389,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4383,"name":"ElementaryTypeName","src":"2703:7:7"}],"id":4384,"name":"VariableDeclaration","src":"2703:13:7"}],"id":4385,"name":"ParameterList","src":"2702:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4389,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4386,"name":"ElementaryTypeName","src":"2741:7:7"}],"id":4387,"name":"VariableDeclaration","src":"2741:7:7"}],"id":4388,"name":"ParameterList","src":"2740:9:7"}],"id":4389,"name":"FunctionDefinition","src":"2688:62:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4396,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4390,"name":"ElementaryTypeName","src":"2773:7:7"}],"id":4391,"name":"VariableDeclaration","src":"2773:13:7"}],"id":4392,"name":"ParameterList","src":"2772:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4396,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4393,"name":"ElementaryTypeName","src":"2811:7:7"}],"id":4394,"name":"VariableDeclaration","src":"2811:7:7"}],"id":4395,"name":"ParameterList","src":"2810:9:7"}],"id":4396,"name":"FunctionDefinition","src":"2755:65:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4403,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4397,"name":"ElementaryTypeName","src":"2838:7:7"}],"id":4398,"name":"VariableDeclaration","src":"2838:13:7"}],"id":4399,"name":"ParameterList","src":"2837:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4403,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4400,"name":"ElementaryTypeName","src":"2876:6:7"}],"id":4401,"name":"VariableDeclaration","src":"2876:6:7"}],"id":4402,"name":"ParameterList","src":"2875:8:7"}],"id":4403,"name":"FunctionDefinition","src":"2825:59:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4410,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4404,"name":"ElementaryTypeName","src":"2911:7:7"}],"id":4405,"name":"VariableDeclaration","src":"2911:13:7"}],"id":4406,"name":"ParameterList","src":"2910:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4410,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4407,"name":"ElementaryTypeName","src":"2949:4:7"}],"id":4408,"name":"VariableDeclaration","src":"2949:4:7"}],"id":4409,"name":"ParameterList","src":"2948:6:7"}],"id":4410,"name":"FunctionDefinition","src":"2889:66:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":4420,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":4419,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4411,"name":"ElementaryTypeName","src":"2986:7:7"}],"id":4412,"name":"VariableDeclaration","src":"2986:14:7"},{"attributes":{"constant":false,"name":"_operator","scope":4419,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4413,"name":"ElementaryTypeName","src":"3002:7:7"}],"id":4414,"name":"VariableDeclaration","src":"3002:17:7"}],"id":4415,"name":"ParameterList","src":"2985:35:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4419,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4416,"name":"ElementaryTypeName","src":"3044:4:7"}],"id":4417,"name":"VariableDeclaration","src":"3044:4:7"}],"id":4418,"name":"ParameterList","src":"3043:6:7"}],"id":4419,"name":"FunctionDefinition","src":"2960:90:7"}],"id":4420,"name":"ContractDefinition","src":"1425:1627:7"}],"id":4421,"name":"SourceUnit","src":"1400:1653:7"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[10094]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9375,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[10094],"name":"ENSBytesUtils","scope":10095},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9397,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9376,"name":"ElementaryTypeName","src":"325:5:8"}],"id":9377,"name":"VariableDeclaration","src":"325:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9378,"name":"ElementaryTypeName","src":"344:4:8"}],"id":9379,"name":"VariableDeclaration","src":"344:11:8"},{"attributes":{"constant":false,"name":"len","scope":9397,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9380,"name":"ElementaryTypeName","src":"357:4:8"}],"id":9381,"name":"VariableDeclaration","src":"357:8:8"}],"id":9382,"name":"ParameterList","src":"324:42:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9397,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9383,"name":"ElementaryTypeName","src":"390:7:8"}],"id":9384,"name":"VariableDeclaration","src":"390:11:8"}],"id":9385,"name":"ParameterList","src":"389:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9386,"name":"Identifier","src":"413:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9379,"type":"uint256","value":"offset"},"id":9387,"name":"Identifier","src":"421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9381,"type":"uint256","value":"len"},"id":9388,"name":"Identifier","src":"430:3:8"}],"id":9389,"name":"BinaryOperation","src":"421:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9377,"type":"bytes memory","value":"self"},"id":9390,"name":"Identifier","src":"437:4:8"}],"id":9391,"name":"MemberAccess","src":"437:11:8"}],"id":9392,"name":"BinaryOperation","src":"421:27:8"}],"id":9393,"name":"FunctionCall","src":"413:36:8"}],"id":9394,"name":"ExpressionStatement","src":"413:36:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9384,"isOffset":false,"isSlot":false,"src":"482:3:8","valueSize":1}},{"self":{"declaration":9377,"isOffset":false,"isSlot":false,"src":"507:4:8","valueSize":1}},{"offset":{"declaration":9379,"isOffset":false,"isSlot":false,"src":"518:6:8","valueSize":1}},{"len":{"declaration":9381,"isOffset":false,"isSlot":false,"src":"527:3:8","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":9395,"name":"InlineAssembly","src":"459:82:8"}],"id":9396,"name":"Block","src":"403:144:8"}],"id":9397,"name":"FunctionDefinition","src":"309:238:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9418,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9398,"name":"ElementaryTypeName","src":"920:5:8"}],"id":9399,"name":"VariableDeclaration","src":"920:17:8"},{"attributes":{"constant":false,"name":"other","scope":9418,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9400,"name":"ElementaryTypeName","src":"939:5:8"}],"id":9401,"name":"VariableDeclaration","src":"939:18:8"}],"id":9402,"name":"ParameterList","src":"919:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9418,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9403,"name":"ElementaryTypeName","src":"982:3:8"}],"id":9404,"name":"VariableDeclaration","src":"982:3:8"}],"id":9405,"name":"ParameterList","src":"981:5:8"},{"children":[{"attributes":{"functionReturnParameters":9405},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9418,9550],"referencedDeclaration":9550,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":9406,"name":"Identifier","src":"1004:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9399,"type":"bytes memory","value":"self"},"id":9407,"name":"Identifier","src":"1012:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9408,"name":"Literal","src":"1018:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9399,"type":"bytes memory","value":"self"},"id":9409,"name":"Identifier","src":"1021:4:8"}],"id":9410,"name":"MemberAccess","src":"1021:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9401,"type":"bytes memory","value":"other"},"id":9411,"name":"Identifier","src":"1034:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9412,"name":"Literal","src":"1041:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9401,"type":"bytes memory","value":"other"},"id":9413,"name":"Identifier","src":"1044:5:8"}],"id":9414,"name":"MemberAccess","src":"1044:12:8"}],"id":9415,"name":"FunctionCall","src":"1004:53:8"}],"id":9416,"name":"Return","src":"997:60:8"}],"id":9417,"name":"Block","src":"987:77:8"}],"id":9418,"name":"FunctionDefinition","src":"903:161:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9550,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9419,"name":"ElementaryTypeName","src":"1694:5:8"}],"id":9420,"name":"VariableDeclaration","src":"1694:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9421,"name":"ElementaryTypeName","src":"1713:4:8"}],"id":9422,"name":"VariableDeclaration","src":"1713:11:8"},{"attributes":{"constant":false,"name":"len","scope":9550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9423,"name":"ElementaryTypeName","src":"1726:4:8"}],"id":9424,"name":"VariableDeclaration","src":"1726:8:8"},{"attributes":{"constant":false,"name":"other","scope":9550,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9425,"name":"ElementaryTypeName","src":"1736:5:8"}],"id":9426,"name":"VariableDeclaration","src":"1736:18:8"},{"attributes":{"constant":false,"name":"otheroffset","scope":9550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9427,"name":"ElementaryTypeName","src":"1756:4:8"}],"id":9428,"name":"VariableDeclaration","src":"1756:16:8"},{"attributes":{"constant":false,"name":"otherlen","scope":9550,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9429,"name":"ElementaryTypeName","src":"1774:4:8"}],"id":9430,"name":"VariableDeclaration","src":"1774:13:8"}],"id":9431,"name":"ParameterList","src":"1693:95:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9550,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9432,"name":"ElementaryTypeName","src":"1812:3:8"}],"id":9433,"name":"VariableDeclaration","src":"1812:3:8"}],"id":9434,"name":"ParameterList","src":"1811:5:8"},{"children":[{"attributes":{"assignments":[9436]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":9549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9435,"name":"ElementaryTypeName","src":"1827:4:8"}],"id":9436,"name":"VariableDeclaration","src":"1827:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9424,"type":"uint256","value":"len"},"id":9437,"name":"Identifier","src":"1843:3:8"}],"id":9438,"name":"VariableDeclarationStatement","src":"1827:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9430,"type":"uint256","value":"otherlen"},"id":9439,"name":"Identifier","src":"1860:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9424,"type":"uint256","value":"len"},"id":9440,"name":"Identifier","src":"1871:3:8"}],"id":9441,"name":"BinaryOperation","src":"1860:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9436,"type":"uint256","value":"shortest"},"id":9442,"name":"Identifier","src":"1884:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9430,"type":"uint256","value":"otherlen"},"id":9443,"name":"Identifier","src":"1895:8:8"}],"id":9444,"name":"Assignment","src":"1884:19:8"}],"id":9445,"name":"ExpressionStatement","src":"1884:19:8"}],"id":9446,"name":"IfStatement","src":"1856:47:8"},{"attributes":{"assignments":[9448],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":9549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9447,"name":"ElementaryTypeName","src":"1914:4:8"}],"id":9448,"name":"VariableDeclaration","src":"1914:12:8"}],"id":9449,"name":"VariableDeclarationStatement","src":"1914:12:8"},{"attributes":{"assignments":[9451],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":9549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9450,"name":"ElementaryTypeName","src":"1936:4:8"}],"id":9451,"name":"VariableDeclaration","src":"1936:13:8"}],"id":9452,"name":"VariableDeclarationStatement","src":"1936:13:8"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":9448,"isOffset":false,"isSlot":false,"src":"1983:7:8","valueSize":1}},{"otherptr":{"declaration":9451,"isOffset":false,"isSlot":false,"src":"2033:8:8","valueSize":1}},{"offset":{"declaration":9422,"isOffset":false,"isSlot":false,"src":"2008:6:8","valueSize":1}},{"self":{"declaration":9420,"isOffset":false,"isSlot":false,"src":"1998:4:8","valueSize":1}},{"otheroffset":{"declaration":9428,"isOffset":false,"isSlot":false,"src":"2060:11:8","valueSize":1}},{"other":{"declaration":9426,"isOffset":false,"isSlot":false,"src":"2049:5:8","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":9453,"name":"InlineAssembly","src":"1960:127:8"},{"children":[{"attributes":{"assignments":[9455]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9454,"name":"ElementaryTypeName","src":"2101:4:8"}],"id":9455,"name":"VariableDeclaration","src":"2101:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9456,"name":"Literal","src":"2112:1:8"}],"id":9457,"name":"VariableDeclarationStatement","src":"2101:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9455,"type":"uint256","value":"idx"},"id":9458,"name":"Identifier","src":"2115:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9436,"type":"uint256","value":"shortest"},"id":9459,"name":"Identifier","src":"2121:8:8"}],"id":9460,"name":"BinaryOperation","src":"2115:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9455,"type":"uint256","value":"idx"},"id":9461,"name":"Identifier","src":"2131:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9462,"name":"Literal","src":"2138:2:8"}],"id":9463,"name":"Assignment","src":"2131:9:8"}],"id":9464,"name":"ExpressionStatement","src":"2131:9:8"},{"children":[{"attributes":{"assignments":[9466],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":9539,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9465,"name":"ElementaryTypeName","src":"2156:4:8"}],"id":9466,"name":"VariableDeclaration","src":"2156:6:8"}],"id":9467,"name":"VariableDeclarationStatement","src":"2156:6:8"},{"attributes":{"assignments":[9469],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":9539,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9468,"name":"ElementaryTypeName","src":"2176:4:8"}],"id":9469,"name":"VariableDeclaration","src":"2176:6:8"}],"id":9470,"name":"VariableDeclarationStatement","src":"2176:6:8"},{"attributes":{"externalReferences":[{"a":{"declaration":9466,"isOffset":false,"isSlot":false,"src":"2223:1:8","valueSize":1}},{"selfptr":{"declaration":9448,"isOffset":false,"isSlot":false,"src":"2234:7:8","valueSize":1}},{"b":{"declaration":9469,"isOffset":false,"isSlot":false,"src":"2259:1:8","valueSize":1}},{"otherptr":{"declaration":9451,"isOffset":false,"isSlot":false,"src":"2270:8:8","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":9471,"name":"InlineAssembly","src":"2196:97:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9466,"type":"uint256","value":"a"},"id":9472,"name":"Identifier","src":"2310:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9469,"type":"uint256","value":"b"},"id":9473,"name":"Identifier","src":"2315:1:8"}],"id":9474,"name":"BinaryOperation","src":"2310:6:8"},{"children":[{"attributes":{"assignments":[9476],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":9529,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9475,"name":"ElementaryTypeName","src":"2397:4:8"}],"id":9476,"name":"VariableDeclaration","src":"2397:9:8"}],"id":9477,"name":"VariableDeclarationStatement","src":"2397:9:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9436,"type":"uint256","value":"shortest"},"id":9478,"name":"Identifier","src":"2428:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9479,"name":"Literal","src":"2439:2:8"}],"id":9480,"name":"BinaryOperation","src":"2428:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9476,"type":"uint256","value":"mask"},"id":9481,"name":"Identifier","src":"2465:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":9482,"name":"ElementaryTypeNameExpression","src":"2472:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9483,"name":"Literal","src":"2482:1:8"}],"id":9484,"name":"UnaryOperation","src":"2480:3:8"}],"id":9485,"name":"FunctionCall","src":"2472:12:8"}],"id":9486,"name":"Assignment","src":"2465:19:8"}],"id":9487,"name":"ExpressionStatement","src":"2465:19:8"}],"id":9488,"name":"Block","src":"2443:80:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9476,"type":"uint256","value":"mask"},"id":9489,"name":"Identifier","src":"2551:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9490,"name":"Literal","src":"2560:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9491,"name":"Literal","src":"2566:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9492,"name":"Literal","src":"2571:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9436,"type":"uint256","value":"shortest"},"id":9493,"name":"Identifier","src":"2576:8:8"}],"id":9494,"name":"BinaryOperation","src":"2571:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9455,"type":"uint256","value":"idx"},"id":9495,"name":"Identifier","src":"2587:3:8"}],"id":9496,"name":"BinaryOperation","src":"2571:19:8"}],"id":9497,"name":"TupleExpression","src":"2570:21:8"}],"id":9498,"name":"BinaryOperation","src":"2566:25:8"}],"id":9499,"name":"TupleExpression","src":"2565:27:8"}],"id":9500,"name":"BinaryOperation","src":"2560:32:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9501,"name":"Literal","src":"2595:1:8"}],"id":9502,"name":"BinaryOperation","src":"2560:36:8"}],"id":9503,"name":"TupleExpression","src":"2559:38:8"}],"id":9504,"name":"UnaryOperation","src":"2558:39:8"}],"id":9505,"name":"Assignment","src":"2551:46:8"}],"id":9506,"name":"ExpressionStatement","src":"2551:46:8"}],"id":9507,"name":"Block","src":"2529:87:8"}],"id":9508,"name":"IfStatement","src":"2424:192:8"},{"attributes":{"assignments":[9510]},"children":[{"attributes":{"constant":false,"name":"diff","scope":9529,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9509,"name":"ElementaryTypeName","src":"2633:4:8"}],"id":9510,"name":"VariableDeclaration","src":"2633:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9466,"type":"uint256","value":"a"},"id":9511,"name":"Identifier","src":"2646:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9476,"type":"uint256","value":"mask"},"id":9512,"name":"Identifier","src":"2650:4:8"}],"id":9513,"name":"BinaryOperation","src":"2646:8:8"}],"id":9514,"name":"TupleExpression","src":"2645:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9469,"type":"uint256","value":"b"},"id":9515,"name":"Identifier","src":"2659:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9476,"type":"uint256","value":"mask"},"id":9516,"name":"Identifier","src":"2663:4:8"}],"id":9517,"name":"BinaryOperation","src":"2659:8:8"}],"id":9518,"name":"TupleExpression","src":"2658:10:8"}],"id":9519,"name":"BinaryOperation","src":"2645:23:8"}],"id":9520,"name":"VariableDeclarationStatement","src":"2633:35:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"diff"},"id":9521,"name":"Identifier","src":"2690:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9522,"name":"Literal","src":"2698:1:8"}],"id":9523,"name":"BinaryOperation","src":"2690:9:8"},{"attributes":{"functionReturnParameters":9434},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9524,"name":"ElementaryTypeNameExpression","src":"2724:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"diff"},"id":9525,"name":"Identifier","src":"2728:4:8"}],"id":9526,"name":"FunctionCall","src":"2724:9:8"}],"id":9527,"name":"Return","src":"2717:16:8"}],"id":9528,"name":"IfStatement","src":"2686:47:8"}],"id":9529,"name":"Block","src":"2318:430:8"}],"id":9530,"name":"IfStatement","src":"2306:442:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9448,"type":"uint256","value":"selfptr"},"id":9531,"name":"Identifier","src":"2761:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9532,"name":"Literal","src":"2772:2:8"}],"id":9533,"name":"Assignment","src":"2761:13:8"}],"id":9534,"name":"ExpressionStatement","src":"2761:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9451,"type":"uint256","value":"otherptr"},"id":9535,"name":"Identifier","src":"2788:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9536,"name":"Literal","src":"2800:2:8"}],"id":9537,"name":"Assignment","src":"2788:14:8"}],"id":9538,"name":"ExpressionStatement","src":"2788:14:8"}],"id":9539,"name":"Block","src":"2142:671:8"}],"id":9540,"name":"ForStatement","src":"2096:717:8"},{"attributes":{"functionReturnParameters":9434},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9541,"name":"ElementaryTypeNameExpression","src":"2830:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9424,"type":"uint256","value":"len"},"id":9542,"name":"Identifier","src":"2834:3:8"}],"id":9543,"name":"FunctionCall","src":"2830:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9544,"name":"ElementaryTypeNameExpression","src":"2841:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9430,"type":"uint256","value":"otherlen"},"id":9545,"name":"Identifier","src":"2845:8:8"}],"id":9546,"name":"FunctionCall","src":"2841:13:8"}],"id":9547,"name":"BinaryOperation","src":"2830:24:8"}],"id":9548,"name":"Return","src":"2823:31:8"}],"id":9549,"name":"Block","src":"1817:1044:8"}],"id":9550,"name":"FunctionDefinition","src":"1677:1184:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9578,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9551,"name":"ElementaryTypeName","src":"3295:5:8"}],"id":9552,"name":"VariableDeclaration","src":"3295:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9578,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9553,"name":"ElementaryTypeName","src":"3314:4:8"}],"id":9554,"name":"VariableDeclaration","src":"3314:11:8"},{"attributes":{"constant":false,"name":"other","scope":9578,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9555,"name":"ElementaryTypeName","src":"3327:5:8"}],"id":9556,"name":"VariableDeclaration","src":"3327:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9578,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9557,"name":"ElementaryTypeName","src":"3347:4:8"}],"id":9558,"name":"VariableDeclaration","src":"3347:16:8"},{"attributes":{"constant":false,"name":"len","scope":9578,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9559,"name":"ElementaryTypeName","src":"3365:4:8"}],"id":9560,"name":"VariableDeclaration","src":"3365:8:8"}],"id":9561,"name":"ParameterList","src":"3294:80:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9578,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9562,"name":"ElementaryTypeName","src":"3398:4:8"}],"id":9563,"name":"VariableDeclaration","src":"3398:4:8"}],"id":9564,"name":"ParameterList","src":"3397:6:8"},{"children":[{"attributes":{"functionReturnParameters":9564},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9397,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9565,"name":"Identifier","src":"3421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9552,"type":"bytes memory","value":"self"},"id":9566,"name":"Identifier","src":"3428:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9554,"type":"uint256","value":"offset"},"id":9567,"name":"Identifier","src":"3434:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9560,"type":"uint256","value":"len"},"id":9568,"name":"Identifier","src":"3442:3:8"}],"id":9569,"name":"FunctionCall","src":"3421:25:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9397,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9570,"name":"Identifier","src":"3450:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"bytes memory","value":"other"},"id":9571,"name":"Identifier","src":"3457:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9558,"type":"uint256","value":"otherOffset"},"id":9572,"name":"Identifier","src":"3464:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9560,"type":"uint256","value":"len"},"id":9573,"name":"Identifier","src":"3477:3:8"}],"id":9574,"name":"FunctionCall","src":"3450:31:8"}],"id":9575,"name":"BinaryOperation","src":"3421:60:8"}],"id":9576,"name":"Return","src":"3414:67:8"}],"id":9577,"name":"Block","src":"3404:84:8"}],"id":9578,"name":"FunctionDefinition","src":"3279:209:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9610,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9579,"name":"ElementaryTypeName","src":"3887:5:8"}],"id":9580,"name":"VariableDeclaration","src":"3887:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9610,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9581,"name":"ElementaryTypeName","src":"3906:4:8"}],"id":9582,"name":"VariableDeclaration","src":"3906:11:8"},{"attributes":{"constant":false,"name":"other","scope":9610,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9583,"name":"ElementaryTypeName","src":"3919:5:8"}],"id":9584,"name":"VariableDeclaration","src":"3919:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9610,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9585,"name":"ElementaryTypeName","src":"3939:4:8"}],"id":9586,"name":"VariableDeclaration","src":"3939:16:8"}],"id":9587,"name":"ParameterList","src":"3886:70:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9610,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9588,"name":"ElementaryTypeName","src":"3980:4:8"}],"id":9589,"name":"VariableDeclaration","src":"3980:4:8"}],"id":9590,"name":"ParameterList","src":"3979:6:8"},{"children":[{"attributes":{"functionReturnParameters":9590},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9397,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9591,"name":"Identifier","src":"4003:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9580,"type":"bytes memory","value":"self"},"id":9592,"name":"Identifier","src":"4010:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9582,"type":"uint256","value":"offset"},"id":9593,"name":"Identifier","src":"4016:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9580,"type":"bytes memory","value":"self"},"id":9594,"name":"Identifier","src":"4024:4:8"}],"id":9595,"name":"MemberAccess","src":"4024:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9582,"type":"uint256","value":"offset"},"id":9596,"name":"Identifier","src":"4038:6:8"}],"id":9597,"name":"BinaryOperation","src":"4024:20:8"}],"id":9598,"name":"FunctionCall","src":"4003:42:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9397,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9599,"name":"Identifier","src":"4049:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9584,"type":"bytes memory","value":"other"},"id":9600,"name":"Identifier","src":"4056:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9586,"type":"uint256","value":"otherOffset"},"id":9601,"name":"Identifier","src":"4063:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9584,"type":"bytes memory","value":"other"},"id":9602,"name":"Identifier","src":"4076:5:8"}],"id":9603,"name":"MemberAccess","src":"4076:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9586,"type":"uint256","value":"otherOffset"},"id":9604,"name":"Identifier","src":"4091:11:8"}],"id":9605,"name":"BinaryOperation","src":"4076:26:8"}],"id":9606,"name":"FunctionCall","src":"4049:54:8"}],"id":9607,"name":"BinaryOperation","src":"4003:100:8"}],"id":9608,"name":"Return","src":"3996:107:8"}],"id":9609,"name":"Block","src":"3986:124:8"}],"id":9610,"name":"FunctionDefinition","src":"3871:239:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9639,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9611,"name":"ElementaryTypeName","src":"4478:5:8"}],"id":9612,"name":"VariableDeclaration","src":"4478:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9613,"name":"ElementaryTypeName","src":"4497:4:8"}],"id":9614,"name":"VariableDeclaration","src":"4497:11:8"},{"attributes":{"constant":false,"name":"other","scope":9639,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9615,"name":"ElementaryTypeName","src":"4510:5:8"}],"id":9616,"name":"VariableDeclaration","src":"4510:18:8"}],"id":9617,"name":"ParameterList","src":"4477:52:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9639,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9618,"name":"ElementaryTypeName","src":"4553:4:8"}],"id":9619,"name":"VariableDeclaration","src":"4553:4:8"}],"id":9620,"name":"ParameterList","src":"4552:6:8"},{"children":[{"attributes":{"functionReturnParameters":9620},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9612,"type":"bytes memory","value":"self"},"id":9621,"name":"Identifier","src":"4576:4:8"}],"id":9622,"name":"MemberAccess","src":"4576:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9614,"type":"uint256","value":"offset"},"id":9623,"name":"Identifier","src":"4591:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9616,"type":"bytes memory","value":"other"},"id":9624,"name":"Identifier","src":"4600:5:8"}],"id":9625,"name":"MemberAccess","src":"4600:12:8"}],"id":9626,"name":"BinaryOperation","src":"4591:21:8"}],"id":9627,"name":"BinaryOperation","src":"4576:36:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9578,9610,9639,9664],"referencedDeclaration":9578,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9628,"name":"Identifier","src":"4616:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9612,"type":"bytes memory","value":"self"},"id":9629,"name":"Identifier","src":"4623:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9614,"type":"uint256","value":"offset"},"id":9630,"name":"Identifier","src":"4629:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9616,"type":"bytes memory","value":"other"},"id":9631,"name":"Identifier","src":"4637:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9632,"name":"Literal","src":"4644:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9616,"type":"bytes memory","value":"other"},"id":9633,"name":"Identifier","src":"4647:5:8"}],"id":9634,"name":"MemberAccess","src":"4647:12:8"}],"id":9635,"name":"FunctionCall","src":"4616:44:8"}],"id":9636,"name":"BinaryOperation","src":"4576:84:8"}],"id":9637,"name":"Return","src":"4569:91:8"}],"id":9638,"name":"Block","src":"4559:108:8"}],"id":9639,"name":"FunctionDefinition","src":"4462:205:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9664,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9640,"name":"ElementaryTypeName","src":"4931:5:8"}],"id":9641,"name":"VariableDeclaration","src":"4931:17:8"},{"attributes":{"constant":false,"name":"other","scope":9664,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9642,"name":"ElementaryTypeName","src":"4950:5:8"}],"id":9643,"name":"VariableDeclaration","src":"4950:18:8"}],"id":9644,"name":"ParameterList","src":"4930:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9664,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9645,"name":"ElementaryTypeName","src":"4992:4:8"}],"id":9646,"name":"VariableDeclaration","src":"4992:4:8"}],"id":9647,"name":"ParameterList","src":"4991:6:8"},{"children":[{"attributes":{"functionReturnParameters":9647},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9641,"type":"bytes memory","value":"self"},"id":9648,"name":"Identifier","src":"5015:4:8"}],"id":9649,"name":"MemberAccess","src":"5015:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9643,"type":"bytes memory","value":"other"},"id":9650,"name":"Identifier","src":"5030:5:8"}],"id":9651,"name":"MemberAccess","src":"5030:12:8"}],"id":9652,"name":"BinaryOperation","src":"5015:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9578,9610,9639,9664],"referencedDeclaration":9578,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9653,"name":"Identifier","src":"5046:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9641,"type":"bytes memory","value":"self"},"id":9654,"name":"Identifier","src":"5053:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9655,"name":"Literal","src":"5059:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9643,"type":"bytes memory","value":"other"},"id":9656,"name":"Identifier","src":"5062:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9657,"name":"Literal","src":"5069:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9641,"type":"bytes memory","value":"self"},"id":9658,"name":"Identifier","src":"5072:4:8"}],"id":9659,"name":"MemberAccess","src":"5072:11:8"}],"id":9660,"name":"FunctionCall","src":"5046:38:8"}],"id":9661,"name":"BinaryOperation","src":"5015:69:8"}],"id":9662,"name":"Return","src":"5008:76:8"}],"id":9663,"name":"Block","src":"4998:93:8"}],"id":9664,"name":"FunctionDefinition","src":"4915:176:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9680,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9665,"name":"ElementaryTypeName","src":"5352:5:8"}],"id":9666,"name":"VariableDeclaration","src":"5352:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9667,"name":"ElementaryTypeName","src":"5371:4:8"}],"id":9668,"name":"VariableDeclaration","src":"5371:8:8"}],"id":9669,"name":"ParameterList","src":"5351:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9680,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9670,"name":"ElementaryTypeName","src":"5404:5:8"}],"id":9671,"name":"VariableDeclaration","src":"5404:9:8"}],"id":9672,"name":"ParameterList","src":"5403:11:8"},{"children":[{"attributes":{"functionReturnParameters":9672},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9673,"name":"ElementaryTypeNameExpression","src":"5432:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9666,"type":"bytes memory","value":"self"},"id":9674,"name":"Identifier","src":"5438:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9668,"type":"uint256","value":"idx"},"id":9675,"name":"Identifier","src":"5443:3:8"}],"id":9676,"name":"IndexAccess","src":"5438:9:8"}],"id":9677,"name":"FunctionCall","src":"5432:16:8"}],"id":9678,"name":"Return","src":"5425:23:8"}],"id":9679,"name":"Block","src":"5415:40:8"}],"id":9680,"name":"FunctionDefinition","src":"5333:122:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9700,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9681,"name":"ElementaryTypeName","src":"5719:5:8"}],"id":9682,"name":"VariableDeclaration","src":"5719:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9683,"name":"ElementaryTypeName","src":"5738:4:8"}],"id":9684,"name":"VariableDeclaration","src":"5738:8:8"}],"id":9685,"name":"ParameterList","src":"5718:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9700,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9686,"name":"ElementaryTypeName","src":"5771:6:8"}],"id":9687,"name":"VariableDeclaration","src":"5771:10:8"}],"id":9688,"name":"ParameterList","src":"5770:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9689,"name":"Identifier","src":"5793:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9684,"type":"uint256","value":"idx"},"id":9690,"name":"Identifier","src":"5801:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9691,"name":"Literal","src":"5807:1:8"}],"id":9692,"name":"BinaryOperation","src":"5801:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9682,"type":"bytes memory","value":"self"},"id":9693,"name":"Identifier","src":"5812:4:8"}],"id":9694,"name":"MemberAccess","src":"5812:11:8"}],"id":9695,"name":"BinaryOperation","src":"5801:22:8"}],"id":9696,"name":"FunctionCall","src":"5793:31:8"}],"id":9697,"name":"ExpressionStatement","src":"5793:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9687,"isOffset":false,"isSlot":false,"src":"5857:3:8","valueSize":1}},{"self":{"declaration":9682,"isOffset":false,"isSlot":false,"src":"5882:4:8","valueSize":1}},{"idx":{"declaration":9684,"isOffset":false,"isSlot":false,"src":"5892:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":9698,"name":"InlineAssembly","src":"5834:82:8"}],"id":9699,"name":"Block","src":"5783:139:8"}],"id":9700,"name":"FunctionDefinition","src":"5699:223:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9720,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9701,"name":"ElementaryTypeName","src":"6186:5:8"}],"id":9702,"name":"VariableDeclaration","src":"6186:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9703,"name":"ElementaryTypeName","src":"6205:4:8"}],"id":9704,"name":"VariableDeclaration","src":"6205:8:8"}],"id":9705,"name":"ParameterList","src":"6185:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9720,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":9706,"name":"ElementaryTypeName","src":"6238:6:8"}],"id":9707,"name":"VariableDeclaration","src":"6238:10:8"}],"id":9708,"name":"ParameterList","src":"6237:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9709,"name":"Identifier","src":"6260:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9704,"type":"uint256","value":"idx"},"id":9710,"name":"Identifier","src":"6268:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9711,"name":"Literal","src":"6274:1:8"}],"id":9712,"name":"BinaryOperation","src":"6268:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9702,"type":"bytes memory","value":"self"},"id":9713,"name":"Identifier","src":"6279:4:8"}],"id":9714,"name":"MemberAccess","src":"6279:11:8"}],"id":9715,"name":"BinaryOperation","src":"6268:22:8"}],"id":9716,"name":"FunctionCall","src":"6260:31:8"}],"id":9717,"name":"ExpressionStatement","src":"6260:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9707,"isOffset":false,"isSlot":false,"src":"6324:3:8","valueSize":1}},{"self":{"declaration":9702,"isOffset":false,"isSlot":false,"src":"6349:4:8","valueSize":1}},{"idx":{"declaration":9704,"isOffset":false,"isSlot":false,"src":"6359:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":9718,"name":"InlineAssembly","src":"6301:86:8"}],"id":9719,"name":"Block","src":"6250:143:8"}],"id":9720,"name":"FunctionDefinition","src":"6166:227:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9740,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9721,"name":"ElementaryTypeName","src":"6632:5:8"}],"id":9722,"name":"VariableDeclaration","src":"6632:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9740,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9723,"name":"ElementaryTypeName","src":"6651:4:8"}],"id":9724,"name":"VariableDeclaration","src":"6651:8:8"}],"id":9725,"name":"ParameterList","src":"6631:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9740,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9726,"name":"ElementaryTypeName","src":"6684:7:8"}],"id":9727,"name":"VariableDeclaration","src":"6684:11:8"}],"id":9728,"name":"ParameterList","src":"6683:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9729,"name":"Identifier","src":"6707:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9724,"type":"uint256","value":"idx"},"id":9730,"name":"Identifier","src":"6715:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9731,"name":"Literal","src":"6721:2:8"}],"id":9732,"name":"BinaryOperation","src":"6715:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9722,"type":"bytes memory","value":"self"},"id":9733,"name":"Identifier","src":"6727:4:8"}],"id":9734,"name":"MemberAccess","src":"6727:11:8"}],"id":9735,"name":"BinaryOperation","src":"6715:23:8"}],"id":9736,"name":"FunctionCall","src":"6707:32:8"}],"id":9737,"name":"ExpressionStatement","src":"6707:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9727,"isOffset":false,"isSlot":false,"src":"6772:3:8","valueSize":1}},{"self":{"declaration":9722,"isOffset":false,"isSlot":false,"src":"6793:4:8","valueSize":1}},{"idx":{"declaration":9724,"isOffset":false,"isSlot":false,"src":"6804:3:8","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":9738,"name":"InlineAssembly","src":"6749:70:8"}],"id":9739,"name":"Block","src":"6697:128:8"}],"id":9740,"name":"FunctionDefinition","src":"6611:214:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9760,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9741,"name":"ElementaryTypeName","src":"7064:5:8"}],"id":9742,"name":"VariableDeclaration","src":"7064:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9760,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9743,"name":"ElementaryTypeName","src":"7083:4:8"}],"id":9744,"name":"VariableDeclaration","src":"7083:8:8"}],"id":9745,"name":"ParameterList","src":"7063:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9760,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9746,"name":"ElementaryTypeName","src":"7116:7:8"}],"id":9747,"name":"VariableDeclaration","src":"7116:11:8"}],"id":9748,"name":"ParameterList","src":"7115:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9749,"name":"Identifier","src":"7139:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9744,"type":"uint256","value":"idx"},"id":9750,"name":"Identifier","src":"7147:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9751,"name":"Literal","src":"7153:2:8"}],"id":9752,"name":"BinaryOperation","src":"7147:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9742,"type":"bytes memory","value":"self"},"id":9753,"name":"Identifier","src":"7159:4:8"}],"id":9754,"name":"MemberAccess","src":"7159:11:8"}],"id":9755,"name":"BinaryOperation","src":"7147:23:8"}],"id":9756,"name":"FunctionCall","src":"7139:32:8"}],"id":9757,"name":"ExpressionStatement","src":"7139:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9747,"isOffset":false,"isSlot":false,"src":"7204:3:8","valueSize":1}},{"self":{"declaration":9742,"isOffset":false,"isSlot":false,"src":"7229:4:8","valueSize":1}},{"idx":{"declaration":9744,"isOffset":false,"isSlot":false,"src":"7240:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":9758,"name":"InlineAssembly","src":"7181:143:8"}],"id":9759,"name":"Block","src":"7129:201:8"}],"id":9760,"name":"FunctionDefinition","src":"7043:287:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9788,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9761,"name":"ElementaryTypeName","src":"7606:5:8"}],"id":9762,"name":"VariableDeclaration","src":"7606:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9788,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9763,"name":"ElementaryTypeName","src":"7625:4:8"}],"id":9764,"name":"VariableDeclaration","src":"7625:8:8"},{"attributes":{"constant":false,"name":"len","scope":9788,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9765,"name":"ElementaryTypeName","src":"7635:4:8"}],"id":9766,"name":"VariableDeclaration","src":"7635:8:8"}],"id":9767,"name":"ParameterList","src":"7605:39:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9788,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9768,"name":"ElementaryTypeName","src":"7668:7:8"}],"id":9769,"name":"VariableDeclaration","src":"7668:11:8"}],"id":9770,"name":"ParameterList","src":"7667:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9771,"name":"Identifier","src":"7691:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9766,"type":"uint256","value":"len"},"id":9772,"name":"Identifier","src":"7699:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9773,"name":"Literal","src":"7706:2:8"}],"id":9774,"name":"BinaryOperation","src":"7699:9:8"}],"id":9775,"name":"FunctionCall","src":"7691:18:8"}],"id":9776,"name":"ExpressionStatement","src":"7691:18:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9777,"name":"Identifier","src":"7719:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9764,"type":"uint256","value":"idx"},"id":9778,"name":"Identifier","src":"7727:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9766,"type":"uint256","value":"len"},"id":9779,"name":"Identifier","src":"7733:3:8"}],"id":9780,"name":"BinaryOperation","src":"7727:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9762,"type":"bytes memory","value":"self"},"id":9781,"name":"Identifier","src":"7740:4:8"}],"id":9782,"name":"MemberAccess","src":"7740:11:8"}],"id":9783,"name":"BinaryOperation","src":"7727:24:8"}],"id":9784,"name":"FunctionCall","src":"7719:33:8"}],"id":9785,"name":"ExpressionStatement","src":"7719:33:8"},{"attributes":{"externalReferences":[{"len":{"declaration":9766,"isOffset":false,"isSlot":false,"src":"7822:3:8","valueSize":1}},{"ret":{"declaration":9769,"isOffset":false,"isSlot":false,"src":"7845:3:8","valueSize":1}},{"self":{"declaration":9762,"isOffset":false,"isSlot":false,"src":"7870:4:8","valueSize":1}},{"idx":{"declaration":9764,"isOffset":false,"isSlot":false,"src":"7881:3:8","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":9786,"name":"InlineAssembly","src":"7762:142:8"}],"id":9787,"name":"Block","src":"7681:229:8"}],"id":9788,"name":"FunctionDefinition","src":"7586:324:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":9828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9789,"name":"ElementaryTypeName","src":"7932:4:8"}],"id":9790,"name":"VariableDeclaration","src":"7932:9:8"},{"attributes":{"constant":false,"name":"src","scope":9828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9791,"name":"ElementaryTypeName","src":"7943:4:8"}],"id":9792,"name":"VariableDeclaration","src":"7943:8:8"},{"attributes":{"constant":false,"name":"len","scope":9828,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9793,"name":"ElementaryTypeName","src":"7953:4:8"}],"id":9794,"name":"VariableDeclaration","src":"7953:8:8"}],"id":9795,"name":"ParameterList","src":"7931:31:8"},{"attributes":{"parameters":[null]},"children":[],"id":9796,"name":"ParameterList","src":"7976:0:8"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9794,"type":"uint256","value":"len"},"id":9797,"name":"Identifier","src":"8043:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9798,"name":"Literal","src":"8050:2:8"}],"id":9799,"name":"BinaryOperation","src":"8043:9:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9794,"type":"uint256","value":"len"},"id":9800,"name":"Identifier","src":"8054:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9801,"name":"Literal","src":"8061:2:8"}],"id":9802,"name":"Assignment","src":"8054:9:8"}],"id":9803,"name":"ExpressionStatement","src":"8054:9:8"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":9792,"isOffset":false,"isSlot":false,"src":"8125:3:8","valueSize":1}},{"dest":{"declaration":9790,"isOffset":false,"isSlot":false,"src":"8113:4:8","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":9804,"name":"InlineAssembly","src":"8079:65:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9790,"type":"uint256","value":"dest"},"id":9805,"name":"Identifier","src":"8157:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9806,"name":"Literal","src":"8165:2:8"}],"id":9807,"name":"Assignment","src":"8157:10:8"}],"id":9808,"name":"ExpressionStatement","src":"8157:10:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9792,"type":"uint256","value":"src"},"id":9809,"name":"Identifier","src":"8181:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9810,"name":"Literal","src":"8188:2:8"}],"id":9811,"name":"Assignment","src":"8181:9:8"}],"id":9812,"name":"ExpressionStatement","src":"8181:9:8"}],"id":9813,"name":"Block","src":"8065:136:8"}],"id":9814,"name":"ForStatement","src":"8036:165:8"},{"attributes":{"assignments":[9816]},"children":[{"attributes":{"constant":false,"name":"mask","scope":9827,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9815,"name":"ElementaryTypeName","src":"8243:4:8"}],"id":9816,"name":"VariableDeclaration","src":"8243:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":9817,"name":"Literal","src":"8255:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9818,"name":"Literal","src":"8263:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9794,"type":"uint256","value":"len"},"id":9819,"name":"Identifier","src":"8268:3:8"}],"id":9820,"name":"BinaryOperation","src":"8263:8:8"}],"id":9821,"name":"TupleExpression","src":"8262:10:8"}],"id":9822,"name":"BinaryOperation","src":"8255:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9823,"name":"Literal","src":"8275:1:8"}],"id":9824,"name":"BinaryOperation","src":"8255:21:8"}],"id":9825,"name":"VariableDeclarationStatement","src":"8243:33:8"},{"attributes":{"externalReferences":[{"src":{"declaration":9792,"isOffset":false,"isSlot":false,"src":"8334:3:8","valueSize":1}},{"mask":{"declaration":9816,"isOffset":false,"isSlot":false,"src":"8344:4:8","valueSize":1}},{"dest":{"declaration":9790,"isOffset":false,"isSlot":false,"src":"8421:4:8","valueSize":1}},{"dest":{"declaration":9790,"isOffset":false,"isSlot":false,"src":"8389:4:8","valueSize":1}},{"mask":{"declaration":9816,"isOffset":false,"isSlot":false,"src":"8396:4:8","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":9826,"name":"InlineAssembly","src":"8286:173:8"}],"id":9827,"name":"Block","src":"7976:489:8"}],"id":9828,"name":"FunctionDefinition","src":"7916:549:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9871,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9829,"name":"ElementaryTypeName","src":"8704:5:8"}],"id":9830,"name":"VariableDeclaration","src":"8704:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9831,"name":"ElementaryTypeName","src":"8723:4:8"}],"id":9832,"name":"VariableDeclaration","src":"8723:11:8"},{"attributes":{"constant":false,"name":"len","scope":9871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9833,"name":"ElementaryTypeName","src":"8736:4:8"}],"id":9834,"name":"VariableDeclaration","src":"8736:8:8"}],"id":9835,"name":"ParameterList","src":"8703:42:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9871,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9836,"name":"ElementaryTypeName","src":"8768:5:8"}],"id":9837,"name":"VariableDeclaration","src":"8768:12:8"}],"id":9838,"name":"ParameterList","src":"8767:14:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9839,"name":"Identifier","src":"8792:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9832,"type":"uint256","value":"offset"},"id":9840,"name":"Identifier","src":"8800:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"uint256","value":"len"},"id":9841,"name":"Identifier","src":"8809:3:8"}],"id":9842,"name":"BinaryOperation","src":"8800:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9830,"type":"bytes memory","value":"self"},"id":9843,"name":"Identifier","src":"8816:4:8"}],"id":9844,"name":"MemberAccess","src":"8816:11:8"}],"id":9845,"name":"BinaryOperation","src":"8800:27:8"}],"id":9846,"name":"FunctionCall","src":"8792:36:8"}],"id":9847,"name":"ExpressionStatement","src":"8792:36:8"},{"attributes":{"assignments":[9849]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9870,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9848,"name":"ElementaryTypeName","src":"8839:5:8"}],"id":9849,"name":"VariableDeclaration","src":"8839:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9850,"name":"ElementaryTypeName","src":"8862:5:8"}],"id":9851,"name":"NewExpression","src":"8858:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"uint256","value":"len"},"id":9852,"name":"Identifier","src":"8868:3:8"}],"id":9853,"name":"FunctionCall","src":"8858:14:8"}],"id":9854,"name":"VariableDeclarationStatement","src":"8839:33:8"},{"attributes":{"assignments":[9856],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":9870,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9855,"name":"ElementaryTypeName","src":"8882:4:8"}],"id":9856,"name":"VariableDeclaration","src":"8882:9:8"}],"id":9857,"name":"VariableDeclarationStatement","src":"8882:9:8"},{"attributes":{"assignments":[9859],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":9870,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9858,"name":"ElementaryTypeName","src":"8901:4:8"}],"id":9859,"name":"VariableDeclaration","src":"8901:8:8"}],"id":9860,"name":"VariableDeclarationStatement","src":"8901:8:8"},{"attributes":{"externalReferences":[{"dest":{"declaration":9856,"isOffset":false,"isSlot":false,"src":"8943:4:8","valueSize":1}},{"ret":{"declaration":9849,"isOffset":false,"isSlot":false,"src":"8955:3:8","valueSize":1}},{"src":{"declaration":9859,"isOffset":false,"isSlot":false,"src":"8976:3:8","valueSize":1}},{"self":{"declaration":9830,"isOffset":false,"isSlot":false,"src":"8991:4:8","valueSize":1}},{"offset":{"declaration":9832,"isOffset":false,"isSlot":false,"src":"9002:6:8","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":9861,"name":"InlineAssembly","src":"8920:99:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9828,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9862,"name":"Identifier","src":"9028:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9856,"type":"uint256","value":"dest"},"id":9863,"name":"Identifier","src":"9035:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9859,"type":"uint256","value":"src"},"id":9864,"name":"Identifier","src":"9041:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9834,"type":"uint256","value":"len"},"id":9865,"name":"Identifier","src":"9046:3:8"}],"id":9866,"name":"FunctionCall","src":"9028:22:8"}],"id":9867,"name":"ExpressionStatement","src":"9028:22:8"},{"attributes":{"functionReturnParameters":9838},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9849,"type":"bytes memory","value":"ret"},"id":9868,"name":"Identifier","src":"9068:3:8"}],"id":9869,"name":"Return","src":"9061:10:8"}],"id":9870,"name":"Block","src":"8782:296:8"}],"id":9871,"name":"FunctionDefinition","src":"8685:393:8"},{"attributes":{"constant":true,"name":"base32HexTable","scope":10094,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9872,"name":"ElementaryTypeName","src":"9206:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":9873,"name":"Literal","src":"9238:147:8"}],"id":9874,"name":"VariableDeclaration","src":"9206:179:8"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":10094,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10093,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9875,"name":"ElementaryTypeName","src":"9697:5:8"}],"id":9876,"name":"VariableDeclaration","src":"9697:17:8"},{"attributes":{"constant":false,"name":"off","scope":10093,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9877,"name":"ElementaryTypeName","src":"9716:4:8"}],"id":9878,"name":"VariableDeclaration","src":"9716:8:8"},{"attributes":{"constant":false,"name":"len","scope":10093,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9879,"name":"ElementaryTypeName","src":"9726:4:8"}],"id":9880,"name":"VariableDeclaration","src":"9726:8:8"}],"id":9881,"name":"ParameterList","src":"9696:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10093,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9882,"name":"ElementaryTypeName","src":"9758:7:8"}],"id":9883,"name":"VariableDeclaration","src":"9758:7:8"}],"id":9884,"name":"ParameterList","src":"9757:9:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9885,"name":"Identifier","src":"9777:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9886,"name":"Identifier","src":"9785:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":9887,"name":"Literal","src":"9792:2:8"}],"id":9888,"name":"BinaryOperation","src":"9785:9:8"}],"id":9889,"name":"FunctionCall","src":"9777:18:8"}],"id":9890,"name":"ExpressionStatement","src":"9777:18:8"},{"attributes":{"assignments":[9892]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10092,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9891,"name":"ElementaryTypeName","src":"9806:4:8"}],"id":9892,"name":"VariableDeclaration","src":"9806:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9893,"name":"Literal","src":"9817:1:8"}],"id":9894,"name":"VariableDeclarationStatement","src":"9806:12:8"},{"attributes":{"assignments":[9896],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":10092,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9895,"name":"ElementaryTypeName","src":"9828:5:8"}],"id":9896,"name":"VariableDeclaration","src":"9828:13:8"}],"id":9897,"name":"VariableDeclarationStatement","src":"9828:13:8"},{"children":[{"attributes":{"assignments":[9899]},"children":[{"attributes":{"constant":false,"name":"i","scope":9964,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9898,"name":"ElementaryTypeName","src":"9855:4:8"}],"id":9899,"name":"VariableDeclaration","src":"9855:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9900,"name":"Literal","src":"9864:1:8"}],"id":9901,"name":"VariableDeclarationStatement","src":"9855:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9899,"type":"uint256","value":"i"},"id":9902,"name":"Identifier","src":"9867:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9903,"name":"Identifier","src":"9871:3:8"}],"id":9904,"name":"BinaryOperation","src":"9867:7:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9899,"type":"uint256","value":"i"},"id":9905,"name":"Identifier","src":"9876:1:8"}],"id":9906,"name":"UnaryOperation","src":"9876:3:8"}],"id":9907,"name":"ExpressionStatement","src":"9876:3:8"},{"children":[{"attributes":{"assignments":[9909]},"children":[{"attributes":{"constant":false,"name":"char","scope":9963,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":9908,"name":"ElementaryTypeName","src":"9895:6:8"}],"id":9909,"name":"VariableDeclaration","src":"9895:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9876,"type":"bytes memory","value":"self"},"id":9910,"name":"Identifier","src":"9909:4:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9878,"type":"uint256","value":"off"},"id":9911,"name":"Identifier","src":"9914:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9899,"type":"uint256","value":"i"},"id":9912,"name":"Identifier","src":"9920:1:8"}],"id":9913,"name":"BinaryOperation","src":"9914:7:8"}],"id":9914,"name":"IndexAccess","src":"9909:13:8"}],"id":9915,"name":"VariableDeclarationStatement","src":"9895:27:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9916,"name":"Identifier","src":"9936:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9909,"type":"bytes1","value":"char"},"id":9917,"name":"Identifier","src":"9944:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":9918,"name":"Literal","src":"9952:4:8"}],"id":9919,"name":"BinaryOperation","src":"9944:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9909,"type":"bytes1","value":"char"},"id":9920,"name":"Identifier","src":"9960:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":9921,"name":"Literal","src":"9968:4:8"}],"id":9922,"name":"BinaryOperation","src":"9960:12:8"}],"id":9923,"name":"BinaryOperation","src":"9944:28:8"}],"id":9924,"name":"FunctionCall","src":"9936:37:8"}],"id":9925,"name":"ExpressionStatement","src":"9936:37:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9926,"name":"Identifier","src":"9987:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9927,"name":"ElementaryTypeNameExpression","src":"9997:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9874,"type":"bytes memory","value":"base32HexTable"},"id":9928,"name":"Identifier","src":"10003:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":9929,"name":"ElementaryTypeNameExpression","src":"10018:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9930,"name":"ElementaryTypeNameExpression","src":"10023:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9909,"type":"bytes1","value":"char"},"id":9931,"name":"Identifier","src":"10029:4:8"}],"id":9932,"name":"FunctionCall","src":"10023:11:8"}],"id":9933,"name":"FunctionCall","src":"10018:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":9934,"name":"Literal","src":"10038:4:8"}],"id":9935,"name":"BinaryOperation","src":"10018:24:8"}],"id":9936,"name":"IndexAccess","src":"10003:40:8"}],"id":9937,"name":"FunctionCall","src":"9997:47:8"}],"id":9938,"name":"Assignment","src":"9987:57:8"}],"id":9939,"name":"ExpressionStatement","src":"9987:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":9940,"name":"Identifier","src":"10058:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9941,"name":"Identifier","src":"10066:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":9942,"name":"Literal","src":"10077:4:8"}],"id":9943,"name":"BinaryOperation","src":"10066:15:8"}],"id":9944,"name":"FunctionCall","src":"10058:24:8"}],"id":9945,"name":"ExpressionStatement","src":"10058:24:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9899,"type":"uint256","value":"i"},"id":9946,"name":"Identifier","src":"10099:1:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9947,"name":"Identifier","src":"10104:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9948,"name":"Literal","src":"10110:1:8"}],"id":9949,"name":"BinaryOperation","src":"10104:7:8"}],"id":9950,"name":"BinaryOperation","src":"10099:12:8"},{"children":[{"id":9951,"name":"Break","src":"10131:5:8"}],"id":9952,"name":"Block","src":"10113:38:8"}],"id":9953,"name":"IfStatement","src":"10096:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9954,"name":"Identifier","src":"10164:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9955,"name":"Identifier","src":"10171:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":9956,"name":"Literal","src":"10178:1:8"}],"id":9957,"name":"BinaryOperation","src":"10171:8:8"}],"id":9958,"name":"TupleExpression","src":"10170:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9959,"name":"Identifier","src":"10183:7:8"}],"id":9960,"name":"BinaryOperation","src":"10170:20:8"}],"id":9961,"name":"Assignment","src":"10164:26:8"}],"id":9962,"name":"ExpressionStatement","src":"10164:26:8"}],"id":9963,"name":"Block","src":"9881:320:8"}],"id":9964,"name":"ForStatement","src":"9851:350:8"},{"attributes":{"assignments":[9966]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":10092,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9965,"name":"ElementaryTypeName","src":"10211:4:8"}],"id":9966,"name":"VariableDeclaration","src":"10211:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9967,"name":"Identifier","src":"10225:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":9968,"name":"Literal","src":"10231:1:8"}],"id":9969,"name":"BinaryOperation","src":"10225:7:8"}],"id":9970,"name":"VariableDeclarationStatement","src":"10211:21:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9971,"name":"Identifier","src":"10245:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9972,"name":"Literal","src":"10251:1:8"}],"id":9973,"name":"BinaryOperation","src":"10245:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9974,"name":"Literal","src":"10256:1:8"}],"id":9975,"name":"BinaryOperation","src":"10245:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9976,"name":"Identifier","src":"10325:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9977,"name":"Identifier","src":"10332:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":9978,"name":"Literal","src":"10339:1:8"}],"id":9979,"name":"BinaryOperation","src":"10332:8:8"}],"id":9980,"name":"TupleExpression","src":"10331:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9981,"name":"Identifier","src":"10344:7:8"}],"id":9982,"name":"BinaryOperation","src":"10331:20:8"}],"id":9983,"name":"Assignment","src":"10325:26:8"}],"id":9984,"name":"ExpressionStatement","src":"10325:26:8"}],"id":9985,"name":"Block","src":"10259:103:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":9986,"name":"Identifier","src":"10371:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9987,"name":"Literal","src":"10377:1:8"}],"id":9988,"name":"BinaryOperation","src":"10371:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9989,"name":"Literal","src":"10382:1:8"}],"id":9990,"name":"BinaryOperation","src":"10371:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9991,"name":"Identifier","src":"10444:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":9992,"name":"Identifier","src":"10451:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":9993,"name":"Literal","src":"10458:1:8"}],"id":9994,"name":"BinaryOperation","src":"10451:8:8"}],"id":9995,"name":"TupleExpression","src":"10450:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":9996,"name":"Identifier","src":"10464:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9997,"name":"Literal","src":"10475:1:8"}],"id":9998,"name":"BinaryOperation","src":"10464:12:8"}],"id":9999,"name":"TupleExpression","src":"10463:14:8"}],"id":10000,"name":"BinaryOperation","src":"10450:27:8"}],"id":10001,"name":"Assignment","src":"10444:33:8"}],"id":10002,"name":"ExpressionStatement","src":"10444:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10003,"name":"Identifier","src":"10491:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10004,"name":"Literal","src":"10501:1:8"}],"id":10005,"name":"Assignment","src":"10491:11:8"}],"id":10006,"name":"ExpressionStatement","src":"10491:11:8"}],"id":10007,"name":"Block","src":"10385:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":10008,"name":"Identifier","src":"10522:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10009,"name":"Literal","src":"10528:1:8"}],"id":10010,"name":"BinaryOperation","src":"10522:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10011,"name":"Literal","src":"10533:1:8"}],"id":10012,"name":"BinaryOperation","src":"10522:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10013,"name":"Identifier","src":"10597:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10014,"name":"Identifier","src":"10604:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10015,"name":"Literal","src":"10611:1:8"}],"id":10016,"name":"BinaryOperation","src":"10604:8:8"}],"id":10017,"name":"TupleExpression","src":"10603:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":10018,"name":"Identifier","src":"10617:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10019,"name":"Literal","src":"10628:1:8"}],"id":10020,"name":"BinaryOperation","src":"10617:12:8"}],"id":10021,"name":"TupleExpression","src":"10616:14:8"}],"id":10022,"name":"BinaryOperation","src":"10603:27:8"}],"id":10023,"name":"Assignment","src":"10597:33:8"}],"id":10024,"name":"ExpressionStatement","src":"10597:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10025,"name":"Identifier","src":"10644:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10026,"name":"Literal","src":"10654:1:8"}],"id":10027,"name":"Assignment","src":"10644:11:8"}],"id":10028,"name":"ExpressionStatement","src":"10644:11:8"}],"id":10029,"name":"Block","src":"10536:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":10030,"name":"Identifier","src":"10675:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10031,"name":"Literal","src":"10681:1:8"}],"id":10032,"name":"BinaryOperation","src":"10675:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10033,"name":"Literal","src":"10686:1:8"}],"id":10034,"name":"BinaryOperation","src":"10675:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10035,"name":"Identifier","src":"10750:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10036,"name":"Identifier","src":"10757:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10037,"name":"Literal","src":"10764:1:8"}],"id":10038,"name":"BinaryOperation","src":"10757:8:8"}],"id":10039,"name":"TupleExpression","src":"10756:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":10040,"name":"Identifier","src":"10770:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10041,"name":"Literal","src":"10781:1:8"}],"id":10042,"name":"BinaryOperation","src":"10770:12:8"}],"id":10043,"name":"TupleExpression","src":"10769:14:8"}],"id":10044,"name":"BinaryOperation","src":"10756:27:8"}],"id":10045,"name":"Assignment","src":"10750:33:8"}],"id":10046,"name":"ExpressionStatement","src":"10750:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10047,"name":"Identifier","src":"10797:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10048,"name":"Literal","src":"10807:1:8"}],"id":10049,"name":"Assignment","src":"10797:11:8"}],"id":10050,"name":"ExpressionStatement","src":"10797:11:8"}],"id":10051,"name":"Block","src":"10689:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"uint256","value":"len"},"id":10052,"name":"Identifier","src":"10828:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10053,"name":"Literal","src":"10834:1:8"}],"id":10054,"name":"BinaryOperation","src":"10828:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":10055,"name":"Literal","src":"10839:1:8"}],"id":10056,"name":"BinaryOperation","src":"10828:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10057,"name":"Identifier","src":"10904:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10058,"name":"Identifier","src":"10911:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10059,"name":"Literal","src":"10918:1:8"}],"id":10060,"name":"BinaryOperation","src":"10911:8:8"}],"id":10061,"name":"TupleExpression","src":"10910:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9896,"type":"uint8","value":"decoded"},"id":10062,"name":"Identifier","src":"10924:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10063,"name":"Literal","src":"10935:1:8"}],"id":10064,"name":"BinaryOperation","src":"10924:12:8"}],"id":10065,"name":"TupleExpression","src":"10923:14:8"}],"id":10066,"name":"BinaryOperation","src":"10910:27:8"}],"id":10067,"name":"Assignment","src":"10904:33:8"}],"id":10068,"name":"ExpressionStatement","src":"10904:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10069,"name":"Identifier","src":"10951:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10070,"name":"Literal","src":"10961:1:8"}],"id":10071,"name":"Assignment","src":"10951:11:8"}],"id":10072,"name":"ExpressionStatement","src":"10951:11:8"}],"id":10073,"name":"Block","src":"10842:131:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[10114,10115],"referencedDeclaration":10114,"type":"function () pure","value":"revert"},"id":10074,"name":"Identifier","src":"10993:6:8"}],"id":10075,"name":"FunctionCall","src":"10993:8:8"}],"id":10076,"name":"ExpressionStatement","src":"10993:8:8"}],"id":10077,"name":"Block","src":"10979:33:8"}],"id":10078,"name":"IfStatement","src":"10825:187:8"}],"id":10079,"name":"IfStatement","src":"10672:340:8"}],"id":10080,"name":"IfStatement","src":"10519:493:8"}],"id":10081,"name":"IfStatement","src":"10368:644:8"}],"id":10082,"name":"IfStatement","src":"10242:770:8"},{"attributes":{"functionReturnParameters":9884},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":10083,"name":"ElementaryTypeNameExpression","src":"11029:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9892,"type":"uint256","value":"ret"},"id":10084,"name":"Identifier","src":"11037:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10085,"name":"Literal","src":"11045:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9966,"type":"uint256","value":"bitlen"},"id":10086,"name":"Identifier","src":"11051:6:8"}],"id":10087,"name":"BinaryOperation","src":"11045:12:8"}],"id":10088,"name":"TupleExpression","src":"11044:14:8"}],"id":10089,"name":"BinaryOperation","src":"11037:21:8"}],"id":10090,"name":"FunctionCall","src":"11029:30:8"}],"id":10091,"name":"Return","src":"11022:37:8"}],"id":10092,"name":"Block","src":"9767:1299:8"}],"id":10093,"name":"FunctionDefinition","src":"9668:1398:8"}],"id":10094,"name":"ContractDefinition","src":"26:11042:8"}],"id":10095,"name":"SourceUnit","src":"0:11069:8"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[4594]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4422,"name":"PragmaDirective","src":"1401:23:9"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":4423,"name":"PragmaDirective","src":"1425:33:9"},{"attributes":{"SourceUnit":4421,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4424,"name":"ImportDirective","src":"1460:19:9"},{"attributes":{"SourceUnit":5719,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4425,"name":"ImportDirective","src":"1480:36:9"},{"attributes":{"SourceUnit":5878,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4426,"name":"ImportDirective","src":"1517:37:9"},{"attributes":{"SourceUnit":5948,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4427,"name":"ImportDirective","src":"1555:44:9"},{"attributes":{"SourceUnit":6439,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4428,"name":"ImportDirective","src":"1600:36:9"},{"attributes":{"SourceUnit":6626,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4429,"name":"ImportDirective","src":"1637:42:9"},{"attributes":{"SourceUnit":6696,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4430,"name":"ImportDirective","src":"1680:37:9"},{"attributes":{"SourceUnit":6787,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4431,"name":"ImportDirective","src":"1718:39:9"},{"attributes":{"SourceUnit":6870,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":4595,"symbolAliases":[null],"unitAlias":""},"id":4432,"name":"ImportDirective","src":"1758:37:9"},{"attributes":{"contractDependencies":[5718,5877,5947,6438,6625,6695,6786,6869,8755],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[4594,6869,6786,6695,6625,6438,5947,5877,5718,8755],"name":"PublicResolver","scope":4595},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":5718,"type":"contract ABIResolver"},"id":4433,"name":"UserDefinedTypeName","src":"1924:11:9"}],"id":4434,"name":"InheritanceSpecifier","src":"1924:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5877,"type":"contract AddrResolver"},"id":4435,"name":"UserDefinedTypeName","src":"1937:12:9"}],"id":4436,"name":"InheritanceSpecifier","src":"1937:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":5947,"type":"contract ContentHashResolver"},"id":4437,"name":"UserDefinedTypeName","src":"1951:19:9"}],"id":4438,"name":"InheritanceSpecifier","src":"1951:19:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":6438,"type":"contract DNSResolver"},"id":4439,"name":"UserDefinedTypeName","src":"1972:11:9"}],"id":4440,"name":"InheritanceSpecifier","src":"1972:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":6625,"type":"contract InterfaceResolver"},"id":4441,"name":"UserDefinedTypeName","src":"1985:17:9"}],"id":4442,"name":"InheritanceSpecifier","src":"1985:17:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":6695,"type":"contract NameResolver"},"id":4443,"name":"UserDefinedTypeName","src":"2004:12:9"}],"id":4444,"name":"InheritanceSpecifier","src":"2004:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":6786,"type":"contract PubkeyResolver"},"id":4445,"name":"UserDefinedTypeName","src":"2018:14:9"}],"id":4446,"name":"InheritanceSpecifier","src":"2018:14:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":6869,"type":"contract TextResolver"},"id":4447,"name":"UserDefinedTypeName","src":"2034:12:9"}],"id":4448,"name":"InheritanceSpecifier","src":"2034:12:9"},{"attributes":{"constant":false,"name":"ens","scope":4594,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4420,"type":"contract ENS"},"id":4449,"name":"UserDefinedTypeName","src":"2053:3:9"}],"id":4450,"name":"VariableDeclaration","src":"2053:7:9"},{"attributes":{"constant":false,"name":"authorisations","scope":4594,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4451,"name":"ElementaryTypeName","src":"2328:7:9"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":4452,"name":"ElementaryTypeName","src":"2345:7:9"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4453,"name":"ElementaryTypeName","src":"2362:7:9"},{"attributes":{"name":"bool","type":"bool"},"id":4454,"name":"ElementaryTypeName","src":"2371:4:9"}],"id":4455,"name":"Mapping","src":"2354:22:9"}],"id":4456,"name":"Mapping","src":"2337:40:9"}],"id":4457,"name":"Mapping","src":"2320:58:9"}],"id":4458,"name":"VariableDeclaration","src":"2320:80:9"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4468,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4459,"name":"ElementaryTypeName","src":"2434:7:9"}],"id":4460,"name":"VariableDeclaration","src":"2434:20:9"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":4468,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4461,"name":"ElementaryTypeName","src":"2456:7:9"}],"id":4462,"name":"VariableDeclaration","src":"2456:21:9"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":4468,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4463,"name":"ElementaryTypeName","src":"2479:7:9"}],"id":4464,"name":"VariableDeclaration","src":"2479:22:9"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":4468,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4465,"name":"ElementaryTypeName","src":"2503:4:9"}],"id":4466,"name":"VariableDeclaration","src":"2503:17:9"}],"id":4467,"name":"ParameterList","src":"2433:88:9"}],"id":4468,"name":"EventDefinition","src":"2407:115:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4594,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":4478,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4420,"type":"contract ENS"},"id":4469,"name":"UserDefinedTypeName","src":"2540:3:9"}],"id":4470,"name":"VariableDeclaration","src":"2540:8:9"}],"id":4471,"name":"ParameterList","src":"2539:10:9"},{"attributes":{"parameters":[null]},"children":[],"id":4472,"name":"ParameterList","src":"2557:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4450,"type":"contract ENS","value":"ens"},"id":4473,"name":"Identifier","src":"2567:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4470,"type":"contract ENS","value":"_ens"},"id":4474,"name":"Identifier","src":"2573:4:9"}],"id":4475,"name":"Assignment","src":"2567:10:9"}],"id":4476,"name":"ExpressionStatement","src":"2567:10:9"}],"id":4477,"name":"Block","src":"2557:27:9"}],"id":4478,"name":"FunctionDefinition","src":"2528:56:9"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":4594,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4507,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4479,"name":"ElementaryTypeName","src":"3295:7:9"}],"id":4480,"name":"VariableDeclaration","src":"3295:12:9"},{"attributes":{"constant":false,"name":"target","scope":4507,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4481,"name":"ElementaryTypeName","src":"3309:7:9"}],"id":4482,"name":"VariableDeclaration","src":"3309:14:9"},{"attributes":{"constant":false,"name":"isAuthorised","scope":4507,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4483,"name":"ElementaryTypeName","src":"3325:4:9"}],"id":4484,"name":"VariableDeclaration","src":"3325:17:9"}],"id":4485,"name":"ParameterList","src":"3294:49:9"},{"attributes":{"parameters":[null]},"children":[],"id":4486,"name":"ParameterList","src":"3353:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4458,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4487,"name":"Identifier","src":"3363:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4480,"type":"bytes32","value":"node"},"id":4488,"name":"Identifier","src":"3378:4:9"}],"id":4492,"name":"IndexAccess","src":"3363:20:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4489,"name":"Identifier","src":"3384:3:9"}],"id":4490,"name":"MemberAccess","src":"3384:10:9"}],"id":4493,"name":"IndexAccess","src":"3363:32:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"address","value":"target"},"id":4491,"name":"Identifier","src":"3396:6:9"}],"id":4494,"name":"IndexAccess","src":"3363:40:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"bool","value":"isAuthorised"},"id":4495,"name":"Identifier","src":"3406:12:9"}],"id":4496,"name":"Assignment","src":"3363:55:9"}],"id":4497,"name":"ExpressionStatement","src":"3363:55:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4468,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":4498,"name":"Identifier","src":"3433:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4480,"type":"bytes32","value":"node"},"id":4499,"name":"Identifier","src":"3454:4:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4500,"name":"Identifier","src":"3460:3:9"}],"id":4501,"name":"MemberAccess","src":"3460:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4482,"type":"address","value":"target"},"id":4502,"name":"Identifier","src":"3472:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4484,"type":"bool","value":"isAuthorised"},"id":4503,"name":"Identifier","src":"3480:12:9"}],"id":4504,"name":"FunctionCall","src":"3433:60:9"}],"id":4505,"name":"EmitStatement","src":"3428:65:9"}],"id":4506,"name":"Block","src":"3353:147:9"}],"id":4507,"name":"FunctionDefinition","src":"3269:231:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":4594,"stateMutability":"view","superFunction":8710,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4536,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4508,"name":"ElementaryTypeName","src":"3528:7:9"}],"id":4509,"name":"VariableDeclaration","src":"3528:12:9"}],"id":4510,"name":"ParameterList","src":"3527:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":4536,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4511,"name":"ElementaryTypeName","src":"3564:4:9"}],"id":4512,"name":"VariableDeclaration","src":"3564:4:9"}],"id":4513,"name":"ParameterList","src":"3563:6:9"},{"children":[{"attributes":{"assignments":[4515]},"children":[{"attributes":{"constant":false,"name":"owner","scope":4535,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4514,"name":"ElementaryTypeName","src":"3580:7:9"}],"id":4515,"name":"VariableDeclaration","src":"3580:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":4389,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4450,"type":"contract ENS","value":"ens"},"id":4516,"name":"Identifier","src":"3596:3:9"}],"id":4517,"name":"MemberAccess","src":"3596:9:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4509,"type":"bytes32","value":"node"},"id":4518,"name":"Identifier","src":"3606:4:9"}],"id":4519,"name":"FunctionCall","src":"3596:15:9"}],"id":4520,"name":"VariableDeclarationStatement","src":"3580:31:9"},{"attributes":{"functionReturnParameters":4513},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"address","value":"owner"},"id":4521,"name":"Identifier","src":"3628:5:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4522,"name":"Identifier","src":"3637:3:9"}],"id":4523,"name":"MemberAccess","src":"3637:10:9"}],"id":4524,"name":"BinaryOperation","src":"3628:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4458,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4525,"name":"Identifier","src":"3651:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4509,"type":"bytes32","value":"node"},"id":4526,"name":"Identifier","src":"3666:4:9"}],"id":4527,"name":"IndexAccess","src":"3651:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4515,"type":"address","value":"owner"},"id":4528,"name":"Identifier","src":"3672:5:9"}],"id":4529,"name":"IndexAccess","src":"3651:27:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4530,"name":"Identifier","src":"3679:3:9"}],"id":4531,"name":"MemberAccess","src":"3679:10:9"}],"id":4532,"name":"IndexAccess","src":"3651:39:9"}],"id":4533,"name":"BinaryOperation","src":"3628:62:9"}],"id":4534,"name":"Return","src":"3621:69:9"}],"id":4535,"name":"Block","src":"3570:127:9"}],"id":4536,"name":"FunctionDefinition","src":"3506:191:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":4594,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":4593,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4537,"name":"ElementaryTypeName","src":"3722:5:9"}],"id":4538,"name":"ArrayTypeName","src":"3722:7:9"}],"id":4539,"name":"VariableDeclaration","src":"3722:21:9"}],"id":4540,"name":"ParameterList","src":"3721:23:9"},{"children":[{"attributes":{"constant":false,"name":"results","scope":4593,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4541,"name":"ElementaryTypeName","src":"3762:5:9"}],"id":4542,"name":"ArrayTypeName","src":"3762:7:9"}],"id":4543,"name":"VariableDeclaration","src":"3762:22:9"}],"id":4544,"name":"ParameterList","src":"3761:24:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"bytes memory[] memory","value":"results"},"id":4545,"name":"Identifier","src":"3796:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4546,"name":"ElementaryTypeName","src":"3810:5:9"}],"id":4547,"name":"ArrayTypeName","src":"3810:7:9"}],"id":4548,"name":"NewExpression","src":"3806:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4539,"type":"bytes calldata[] calldata","value":"data"},"id":4549,"name":"Identifier","src":"3818:4:9"}],"id":4550,"name":"MemberAccess","src":"3818:11:9"}],"id":4551,"name":"FunctionCall","src":"3806:24:9"}],"id":4552,"name":"Assignment","src":"3796:34:9"}],"id":4553,"name":"ExpressionStatement","src":"3796:34:9"},{"children":[{"attributes":{"assignments":[4555]},"children":[{"attributes":{"constant":false,"name":"i","scope":4589,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4554,"name":"ElementaryTypeName","src":"3844:4:9"}],"id":4555,"name":"VariableDeclaration","src":"3844:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4556,"name":"Literal","src":"3853:1:9"}],"id":4557,"name":"VariableDeclarationStatement","src":"3844:10:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"uint256","value":"i"},"id":4558,"name":"Identifier","src":"3856:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4539,"type":"bytes calldata[] calldata","value":"data"},"id":4559,"name":"Identifier","src":"3860:4:9"}],"id":4560,"name":"MemberAccess","src":"3860:11:9"}],"id":4561,"name":"BinaryOperation","src":"3856:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"uint256","value":"i"},"id":4562,"name":"Identifier","src":"3873:1:9"}],"id":4563,"name":"UnaryOperation","src":"3873:3:9"}],"id":4564,"name":"ExpressionStatement","src":"3873:3:9"},{"children":[{"attributes":{"assignments":[4566,4568]},"children":[{"attributes":{"constant":false,"name":"success","scope":4588,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4565,"name":"ElementaryTypeName","src":"3893:4:9"}],"id":4566,"name":"VariableDeclaration","src":"3893:12:9"},{"attributes":{"constant":false,"name":"result","scope":4588,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4567,"name":"ElementaryTypeName","src":"3907:5:9"}],"id":4568,"name":"VariableDeclaration","src":"3907:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$4594","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4569,"name":"ElementaryTypeNameExpression","src":"3930:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10167,"type":"contract PublicResolver","value":"this"},"id":4570,"name":"Identifier","src":"3938:4:9"}],"id":4571,"name":"FunctionCall","src":"3930:13:9"}],"id":4572,"name":"MemberAccess","src":"3930:26:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4539,"type":"bytes calldata[] calldata","value":"data"},"id":4573,"name":"Identifier","src":"3957:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"uint256","value":"i"},"id":4574,"name":"Identifier","src":"3962:1:9"}],"id":4575,"name":"IndexAccess","src":"3957:7:9"}],"id":4576,"name":"FunctionCall","src":"3930:35:9"}],"id":4577,"name":"VariableDeclarationStatement","src":"3892:73:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":4578,"name":"Identifier","src":"3979:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4566,"type":"bool","value":"success"},"id":4579,"name":"Identifier","src":"3987:7:9"}],"id":4580,"name":"FunctionCall","src":"3979:16:9"}],"id":4581,"name":"ExpressionStatement","src":"3979:16:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"bytes memory[] memory","value":"results"},"id":4582,"name":"Identifier","src":"4009:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4555,"type":"uint256","value":"i"},"id":4583,"name":"Identifier","src":"4017:1:9"}],"id":4584,"name":"IndexAccess","src":"4009:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4568,"type":"bytes memory","value":"result"},"id":4585,"name":"Identifier","src":"4022:6:9"}],"id":4586,"name":"Assignment","src":"4009:19:9"}],"id":4587,"name":"ExpressionStatement","src":"4009:19:9"}],"id":4588,"name":"Block","src":"3878:161:9"}],"id":4589,"name":"ForStatement","src":"3840:199:9"},{"attributes":{"functionReturnParameters":4544},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4543,"type":"bytes memory[] memory","value":"results"},"id":4590,"name":"Identifier","src":"4055:7:9"}],"id":4591,"name":"Return","src":"4048:14:9"}],"id":4592,"name":"Block","src":"3786:283:9"}],"id":4593,"name":"FunctionDefinition","src":"3703:366:9"}],"id":4594,"name":"ContractDefinition","src":"1897:2174:9"}],"id":4595,"name":"SourceUnit","src":"1401:2671:9"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[9373]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":8757,"name":"PragmaDirective","src":"0:24:10"},{"attributes":{"SourceUnit":10095,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":9374,"symbolAliases":[null],"unitAlias":""},"id":8758,"name":"ImportDirective","src":"26:29:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[9373],"name":"RRUtils","scope":9374},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10094,"type":"library ENSBytesUtils"},"id":8759,"name":"UserDefinedTypeName","src":"178:13:10"}],"id":8760,"name":"UsingForDirective","src":"172:26:10"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8807,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8761,"name":"ElementaryTypeName","src":"487:5:10"}],"id":8762,"name":"VariableDeclaration","src":"487:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8807,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8763,"name":"ElementaryTypeName","src":"506:4:10"}],"id":8764,"name":"VariableDeclaration","src":"506:11:10"}],"id":8765,"name":"ParameterList","src":"486:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8807,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8766,"name":"ElementaryTypeName","src":"541:4:10"}],"id":8767,"name":"VariableDeclaration","src":"541:4:10"}],"id":8768,"name":"ParameterList","src":"540:6:10"},{"children":[{"attributes":{"assignments":[8770]},"children":[{"attributes":{"constant":false,"name":"idx","scope":8806,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8769,"name":"ElementaryTypeName","src":"557:4:10"}],"id":8770,"name":"VariableDeclaration","src":"557:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8764,"type":"uint256","value":"offset"},"id":8771,"name":"Identifier","src":"568:6:10"}],"id":8772,"name":"VariableDeclarationStatement","src":"557:17:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8773,"name":"Literal","src":"591:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10098,"type":"function (bool) pure","value":"assert"},"id":8774,"name":"Identifier","src":"611:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8770,"type":"uint256","value":"idx"},"id":8775,"name":"Identifier","src":"618:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"bytes memory","value":"self"},"id":8776,"name":"Identifier","src":"624:4:10"}],"id":8777,"name":"MemberAccess","src":"624:11:10"}],"id":8778,"name":"BinaryOperation","src":"618:17:10"}],"id":8779,"name":"FunctionCall","src":"611:25:10"}],"id":8780,"name":"ExpressionStatement","src":"611:25:10"},{"attributes":{"assignments":[8782]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":8800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8781,"name":"ElementaryTypeName","src":"650:4:10"}],"id":8782,"name":"VariableDeclaration","src":"650:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"bytes memory","value":"self"},"id":8783,"name":"Identifier","src":"666:4:10"}],"id":8784,"name":"MemberAccess","src":"666:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8770,"type":"uint256","value":"idx"},"id":8785,"name":"Identifier","src":"681:3:10"}],"id":8786,"name":"FunctionCall","src":"666:19:10"}],"id":8787,"name":"VariableDeclarationStatement","src":"650:35:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8770,"type":"uint256","value":"idx"},"id":8788,"name":"Identifier","src":"699:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8782,"type":"uint256","value":"labelLen"},"id":8789,"name":"Identifier","src":"706:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8790,"name":"Literal","src":"717:1:10"}],"id":8791,"name":"BinaryOperation","src":"706:12:10"}],"id":8792,"name":"Assignment","src":"699:19:10"}],"id":8793,"name":"ExpressionStatement","src":"699:19:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8782,"type":"uint256","value":"labelLen"},"id":8794,"name":"Identifier","src":"736:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8795,"name":"Literal","src":"748:1:10"}],"id":8796,"name":"BinaryOperation","src":"736:13:10"},{"children":[{"id":8797,"name":"Break","src":"769:5:10"}],"id":8798,"name":"Block","src":"751:38:10"}],"id":8799,"name":"IfStatement","src":"732:57:10"}],"id":8800,"name":"Block","src":"597:202:10"}],"id":8801,"name":"WhileStatement","src":"584:215:10"},{"attributes":{"functionReturnParameters":8768},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8770,"type":"uint256","value":"idx"},"id":8802,"name":"Identifier","src":"815:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8764,"type":"uint256","value":"offset"},"id":8803,"name":"Identifier","src":"821:6:10"}],"id":8804,"name":"BinaryOperation","src":"815:12:10"}],"id":8805,"name":"Return","src":"808:19:10"}],"id":8806,"name":"Block","src":"547:287:10"}],"id":8807,"name":"FunctionDefinition","src":"467:367:10"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8830,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8808,"name":"ElementaryTypeName","src":"1073:5:10"}],"id":8809,"name":"VariableDeclaration","src":"1073:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8830,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8810,"name":"ElementaryTypeName","src":"1092:4:10"}],"id":8811,"name":"VariableDeclaration","src":"1092:11:10"}],"id":8812,"name":"ParameterList","src":"1072:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8830,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8813,"name":"ElementaryTypeName","src":"1127:5:10"}],"id":8814,"name":"VariableDeclaration","src":"1127:16:10"}],"id":8815,"name":"ParameterList","src":"1126:18:10"},{"children":[{"attributes":{"assignments":[8817]},"children":[{"attributes":{"constant":false,"name":"len","scope":8829,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8816,"name":"ElementaryTypeName","src":"1155:4:10"}],"id":8817,"name":"VariableDeclaration","src":"1155:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8807,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":8818,"name":"Identifier","src":"1166:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8809,"type":"bytes memory","value":"self"},"id":8819,"name":"Identifier","src":"1177:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8811,"type":"uint256","value":"offset"},"id":8820,"name":"Identifier","src":"1183:6:10"}],"id":8821,"name":"FunctionCall","src":"1166:24:10"}],"id":8822,"name":"VariableDeclarationStatement","src":"1155:35:10"},{"attributes":{"functionReturnParameters":8815},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9871,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8809,"type":"bytes memory","value":"self"},"id":8823,"name":"Identifier","src":"1207:4:10"}],"id":8824,"name":"MemberAccess","src":"1207:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8811,"type":"uint256","value":"offset"},"id":8825,"name":"Identifier","src":"1222:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8817,"type":"uint256","value":"len"},"id":8826,"name":"Identifier","src":"1230:3:10"}],"id":8827,"name":"FunctionCall","src":"1207:27:10"}],"id":8828,"name":"Return","src":"1200:34:10"}],"id":8829,"name":"Block","src":"1145:96:10"}],"id":8830,"name":"FunctionDefinition","src":"1055:186:10"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8879,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8831,"name":"ElementaryTypeName","src":"1541:5:10"}],"id":8832,"name":"VariableDeclaration","src":"1541:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8879,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8833,"name":"ElementaryTypeName","src":"1560:4:10"}],"id":8834,"name":"VariableDeclaration","src":"1560:11:10"}],"id":8835,"name":"ParameterList","src":"1540:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8879,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8836,"name":"ElementaryTypeName","src":"1595:4:10"}],"id":8837,"name":"VariableDeclaration","src":"1595:4:10"}],"id":8838,"name":"ParameterList","src":"1594:6:10"},{"children":[{"attributes":{"assignments":[8840]},"children":[{"attributes":{"constant":false,"name":"count","scope":8878,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8839,"name":"ElementaryTypeName","src":"1611:4:10"}],"id":8840,"name":"VariableDeclaration","src":"1611:10:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8841,"name":"Literal","src":"1624:1:10"}],"id":8842,"name":"VariableDeclarationStatement","src":"1611:14:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8843,"name":"Literal","src":"1642:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10098,"type":"function (bool) pure","value":"assert"},"id":8844,"name":"Identifier","src":"1662:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8834,"type":"uint256","value":"offset"},"id":8845,"name":"Identifier","src":"1669:6:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8832,"type":"bytes memory","value":"self"},"id":8846,"name":"Identifier","src":"1678:4:10"}],"id":8847,"name":"MemberAccess","src":"1678:11:10"}],"id":8848,"name":"BinaryOperation","src":"1669:20:10"}],"id":8849,"name":"FunctionCall","src":"1662:28:10"}],"id":8850,"name":"ExpressionStatement","src":"1662:28:10"},{"attributes":{"assignments":[8852]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":8874,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8851,"name":"ElementaryTypeName","src":"1704:4:10"}],"id":8852,"name":"VariableDeclaration","src":"1704:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8832,"type":"bytes memory","value":"self"},"id":8853,"name":"Identifier","src":"1720:4:10"}],"id":8854,"name":"MemberAccess","src":"1720:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8834,"type":"uint256","value":"offset"},"id":8855,"name":"Identifier","src":"1735:6:10"}],"id":8856,"name":"FunctionCall","src":"1720:22:10"}],"id":8857,"name":"VariableDeclarationStatement","src":"1704:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8834,"type":"uint256","value":"offset"},"id":8858,"name":"Identifier","src":"1756:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8852,"type":"uint256","value":"labelLen"},"id":8859,"name":"Identifier","src":"1766:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8860,"name":"Literal","src":"1777:1:10"}],"id":8861,"name":"BinaryOperation","src":"1766:12:10"}],"id":8862,"name":"Assignment","src":"1756:22:10"}],"id":8863,"name":"ExpressionStatement","src":"1756:22:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8852,"type":"uint256","value":"labelLen"},"id":8864,"name":"Identifier","src":"1796:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8865,"name":"Literal","src":"1808:1:10"}],"id":8866,"name":"BinaryOperation","src":"1796:13:10"},{"children":[{"id":8867,"name":"Break","src":"1829:5:10"}],"id":8868,"name":"Block","src":"1811:38:10"}],"id":8869,"name":"IfStatement","src":"1792:57:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8840,"type":"uint256","value":"count"},"id":8870,"name":"Identifier","src":"1862:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8871,"name":"Literal","src":"1871:1:10"}],"id":8872,"name":"Assignment","src":"1862:10:10"}],"id":8873,"name":"ExpressionStatement","src":"1862:10:10"}],"id":8874,"name":"Block","src":"1648:235:10"}],"id":8875,"name":"WhileStatement","src":"1635:248:10"},{"attributes":{"functionReturnParameters":8838},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8840,"type":"uint256","value":"count"},"id":8876,"name":"Identifier","src":"1899:5:10"}],"id":8877,"name":"Return","src":"1892:12:10"}],"id":8878,"name":"Block","src":"1601:310:10"}],"id":8879,"name":"FunctionDefinition","src":"1521:390:10"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":9373,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":8894,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8880,"name":"ElementaryTypeName","src":"2006:5:10"}],"id":8881,"name":"VariableDeclaration","src":"2006:10:10"},{"attributes":{"constant":false,"name":"offset","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8882,"name":"ElementaryTypeName","src":"2026:4:10"}],"id":8883,"name":"VariableDeclaration","src":"2026:11:10"},{"attributes":{"constant":false,"name":"dnstype","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":8884,"name":"ElementaryTypeName","src":"2047:6:10"}],"id":8885,"name":"VariableDeclaration","src":"2047:14:10"},{"attributes":{"constant":false,"name":"class","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":8886,"name":"ElementaryTypeName","src":"2071:6:10"}],"id":8887,"name":"VariableDeclaration","src":"2071:12:10"},{"attributes":{"constant":false,"name":"ttl","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":8888,"name":"ElementaryTypeName","src":"2093:6:10"}],"id":8889,"name":"VariableDeclaration","src":"2093:10:10"},{"attributes":{"constant":false,"name":"rdataOffset","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8890,"name":"ElementaryTypeName","src":"2113:4:10"}],"id":8891,"name":"VariableDeclaration","src":"2113:16:10"},{"attributes":{"constant":false,"name":"nextOffset","scope":8894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8892,"name":"ElementaryTypeName","src":"2139:4:10"}],"id":8893,"name":"VariableDeclaration","src":"2139:15:10"}],"id":8894,"name":"StructDefinition","src":"1978:183:10"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8920,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8895,"name":"ElementaryTypeName","src":"2387:5:10"}],"id":8896,"name":"VariableDeclaration","src":"2387:17:10"},{"attributes":{"constant":false,"name":"offset","scope":8920,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8897,"name":"ElementaryTypeName","src":"2406:4:10"}],"id":8898,"name":"VariableDeclaration","src":"2406:11:10"}],"id":8899,"name":"ParameterList","src":"2386:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8920,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":8900,"name":"UserDefinedTypeName","src":"2442:10:10"}],"id":8901,"name":"VariableDeclaration","src":"2442:21:10"}],"id":8902,"name":"ParameterList","src":"2441:23:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8901,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8903,"name":"Identifier","src":"2475:3:10"}],"id":8905,"name":"MemberAccess","src":"2475:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8896,"type":"bytes memory","value":"self"},"id":8906,"name":"Identifier","src":"2486:4:10"}],"id":8907,"name":"Assignment","src":"2475:15:10"}],"id":8908,"name":"ExpressionStatement","src":"2475:15:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":8893,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8901,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8909,"name":"Identifier","src":"2500:3:10"}],"id":8911,"name":"MemberAccess","src":"2500:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8898,"type":"uint256","value":"offset"},"id":8912,"name":"Identifier","src":"2517:6:10"}],"id":8913,"name":"Assignment","src":"2500:23:10"}],"id":8914,"name":"ExpressionStatement","src":"2500:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$8894_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9037,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":8915,"name":"Identifier","src":"2533:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8901,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":8916,"name":"Identifier","src":"2538:3:10"}],"id":8917,"name":"FunctionCall","src":"2533:9:10"}],"id":8918,"name":"ExpressionStatement","src":"2533:9:10"}],"id":8919,"name":"Block","src":"2465:84:10"}],"id":8920,"name":"FunctionDefinition","src":"2367:182:10"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":8935,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":8921,"name":"UserDefinedTypeName","src":"2734:10:10"}],"id":8922,"name":"VariableDeclaration","src":"2734:22:10"}],"id":8923,"name":"ParameterList","src":"2733:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":8935,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8924,"name":"ElementaryTypeName","src":"2780:4:10"}],"id":8925,"name":"VariableDeclaration","src":"2780:4:10"}],"id":8926,"name":"ParameterList","src":"2779:6:10"},{"children":[{"attributes":{"functionReturnParameters":8926},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8922,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8927,"name":"Identifier","src":"2803:4:10"}],"id":8928,"name":"MemberAccess","src":"2803:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8922,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8929,"name":"Identifier","src":"2818:4:10"}],"id":8930,"name":"MemberAccess","src":"2818:9:10"}],"id":8931,"name":"MemberAccess","src":"2818:16:10"}],"id":8932,"name":"BinaryOperation","src":"2803:31:10"}],"id":8933,"name":"Return","src":"2796:38:10"}],"id":8934,"name":"Block","src":"2786:55:10"}],"id":8935,"name":"FunctionDefinition","src":"2720:121:10"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9037,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":8936,"name":"UserDefinedTypeName","src":"2978:10:10"}],"id":8937,"name":"VariableDeclaration","src":"2978:22:10"}],"id":8938,"name":"ParameterList","src":"2977:24:10"},{"attributes":{"parameters":[null]},"children":[],"id":8939,"name":"ParameterList","src":"3016:0:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8940,"name":"Identifier","src":"3026:4:10"}],"id":8942,"name":"MemberAccess","src":"3026:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":8893,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8943,"name":"Identifier","src":"3040:4:10"}],"id":8944,"name":"MemberAccess","src":"3040:15:10"}],"id":8945,"name":"Assignment","src":"3026:29:10"}],"id":8946,"name":"ExpressionStatement","src":"3026:29:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8947,"name":"Identifier","src":"3069:4:10"}],"id":8948,"name":"MemberAccess","src":"3069:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8949,"name":"Identifier","src":"3084:4:10"}],"id":8950,"name":"MemberAccess","src":"3084:9:10"}],"id":8951,"name":"MemberAccess","src":"3084:16:10"}],"id":8952,"name":"BinaryOperation","src":"3069:31:10"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":8939},"id":8953,"name":"Return","src":"3116:7:10"}],"id":8954,"name":"Block","src":"3102:31:10"}],"id":8955,"name":"IfStatement","src":"3065:68:10"},{"attributes":{"assignments":[8957]},"children":[{"attributes":{"constant":false,"name":"off","scope":9036,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8956,"name":"ElementaryTypeName","src":"3168:4:10"}],"id":8957,"name":"VariableDeclaration","src":"3168:8:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8958,"name":"Identifier","src":"3179:4:10"}],"id":8959,"name":"MemberAccess","src":"3179:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8807,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":8960,"name":"Identifier","src":"3193:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8961,"name":"Identifier","src":"3204:4:10"}],"id":8962,"name":"MemberAccess","src":"3204:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8963,"name":"Identifier","src":"3215:4:10"}],"id":8964,"name":"MemberAccess","src":"3215:11:10"}],"id":8965,"name":"FunctionCall","src":"3193:34:10"}],"id":8966,"name":"BinaryOperation","src":"3179:48:10"}],"id":8967,"name":"VariableDeclarationStatement","src":"3168:59:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":8885,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8968,"name":"Identifier","src":"3275:4:10"}],"id":8970,"name":"MemberAccess","src":"3275:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9700,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8971,"name":"Identifier","src":"3290:4:10"}],"id":8972,"name":"MemberAccess","src":"3290:9:10"}],"id":8973,"name":"MemberAccess","src":"3290:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":8974,"name":"Identifier","src":"3311:3:10"}],"id":8975,"name":"FunctionCall","src":"3290:25:10"}],"id":8976,"name":"Assignment","src":"3275:40:10"}],"id":8977,"name":"ExpressionStatement","src":"3275:40:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":8978,"name":"Identifier","src":"3325:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8979,"name":"Literal","src":"3332:1:10"}],"id":8980,"name":"Assignment","src":"3325:8:10"}],"id":8981,"name":"ExpressionStatement","src":"3325:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":8887,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8982,"name":"Identifier","src":"3343:4:10"}],"id":8984,"name":"MemberAccess","src":"3343:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9700,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8985,"name":"Identifier","src":"3356:4:10"}],"id":8986,"name":"MemberAccess","src":"3356:9:10"}],"id":8987,"name":"MemberAccess","src":"3356:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":8988,"name":"Identifier","src":"3377:3:10"}],"id":8989,"name":"FunctionCall","src":"3356:25:10"}],"id":8990,"name":"Assignment","src":"3343:38:10"}],"id":8991,"name":"ExpressionStatement","src":"3343:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":8992,"name":"Identifier","src":"3391:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8993,"name":"Literal","src":"3398:1:10"}],"id":8994,"name":"Assignment","src":"3391:8:10"}],"id":8995,"name":"ExpressionStatement","src":"3391:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":8889,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8996,"name":"Identifier","src":"3409:4:10"}],"id":8998,"name":"MemberAccess","src":"3409:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":9720,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":8999,"name":"Identifier","src":"3420:4:10"}],"id":9000,"name":"MemberAccess","src":"3420:9:10"}],"id":9001,"name":"MemberAccess","src":"3420:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9002,"name":"Identifier","src":"3441:3:10"}],"id":9003,"name":"FunctionCall","src":"3420:25:10"}],"id":9004,"name":"Assignment","src":"3409:36:10"}],"id":9005,"name":"ExpressionStatement","src":"3409:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9006,"name":"Identifier","src":"3455:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9007,"name":"Literal","src":"3462:1:10"}],"id":9008,"name":"Assignment","src":"3455:8:10"}],"id":9009,"name":"ExpressionStatement","src":"3455:8:10"},{"attributes":{"assignments":[9011]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":9036,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9010,"name":"ElementaryTypeName","src":"3500:4:10"}],"id":9011,"name":"VariableDeclaration","src":"3500:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9700,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9012,"name":"Identifier","src":"3519:4:10"}],"id":9013,"name":"MemberAccess","src":"3519:9:10"}],"id":9014,"name":"MemberAccess","src":"3519:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9015,"name":"Identifier","src":"3540:3:10"}],"id":9016,"name":"FunctionCall","src":"3519:25:10"}],"id":9017,"name":"VariableDeclarationStatement","src":"3500:44:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9018,"name":"Identifier","src":"3554:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9019,"name":"Literal","src":"3561:1:10"}],"id":9020,"name":"Assignment","src":"3554:8:10"}],"id":9021,"name":"ExpressionStatement","src":"3554:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":8891,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9022,"name":"Identifier","src":"3572:4:10"}],"id":9024,"name":"MemberAccess","src":"3572:16:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9025,"name":"Identifier","src":"3591:3:10"}],"id":9026,"name":"Assignment","src":"3572:22:10"}],"id":9027,"name":"ExpressionStatement","src":"3572:22:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":8893,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8937,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9028,"name":"Identifier","src":"3604:4:10"}],"id":9030,"name":"MemberAccess","src":"3604:15:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8957,"type":"uint256","value":"off"},"id":9031,"name":"Identifier","src":"3622:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9011,"type":"uint256","value":"rdataLength"},"id":9032,"name":"Identifier","src":"3628:11:10"}],"id":9033,"name":"BinaryOperation","src":"3622:17:10"}],"id":9034,"name":"Assignment","src":"3604:35:10"}],"id":9035,"name":"ExpressionStatement","src":"3604:35:10"}],"id":9036,"name":"Block","src":"3016:630:10"}],"id":9037,"name":"FunctionDefinition","src":"2964:682:10"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9058,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":9038,"name":"UserDefinedTypeName","src":"3836:10:10"}],"id":9039,"name":"VariableDeclaration","src":"3836:22:10"}],"id":9040,"name":"ParameterList","src":"3835:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9058,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9041,"name":"ElementaryTypeName","src":"3882:5:10"}],"id":9042,"name":"VariableDeclaration","src":"3882:12:10"}],"id":9043,"name":"ParameterList","src":"3881:14:10"},{"children":[{"attributes":{"functionReturnParameters":9043},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9871,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9039,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9044,"name":"Identifier","src":"3913:4:10"}],"id":9045,"name":"MemberAccess","src":"3913:9:10"}],"id":9046,"name":"MemberAccess","src":"3913:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9039,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9047,"name":"Identifier","src":"3933:4:10"}],"id":9048,"name":"MemberAccess","src":"3933:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8807,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9049,"name":"Identifier","src":"3946:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9039,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9050,"name":"Identifier","src":"3957:4:10"}],"id":9051,"name":"MemberAccess","src":"3957:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9039,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9052,"name":"Identifier","src":"3968:4:10"}],"id":9053,"name":"MemberAccess","src":"3968:11:10"}],"id":9054,"name":"FunctionCall","src":"3946:34:10"}],"id":9055,"name":"FunctionCall","src":"3913:68:10"}],"id":9056,"name":"Return","src":"3906:75:10"}],"id":9057,"name":"Block","src":"3896:92:10"}],"id":9058,"name":"FunctionDefinition","src":"3822:166:10"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9078,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":9059,"name":"UserDefinedTypeName","src":"4176:10:10"}],"id":9060,"name":"VariableDeclaration","src":"4176:22:10"}],"id":9061,"name":"ParameterList","src":"4175:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9078,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9062,"name":"ElementaryTypeName","src":"4222:5:10"}],"id":9063,"name":"VariableDeclaration","src":"4222:12:10"}],"id":9064,"name":"ParameterList","src":"4221:14:10"},{"children":[{"attributes":{"functionReturnParameters":9064},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9871,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":8881,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9065,"name":"Identifier","src":"4253:4:10"}],"id":9066,"name":"MemberAccess","src":"4253:9:10"}],"id":9067,"name":"MemberAccess","src":"4253:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":8891,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9068,"name":"Identifier","src":"4273:4:10"}],"id":9069,"name":"MemberAccess","src":"4273:16:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":8893,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9070,"name":"Identifier","src":"4291:4:10"}],"id":9071,"name":"MemberAccess","src":"4291:15:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":8891,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9060,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9072,"name":"Identifier","src":"4309:4:10"}],"id":9073,"name":"MemberAccess","src":"4309:16:10"}],"id":9074,"name":"BinaryOperation","src":"4291:34:10"}],"id":9075,"name":"FunctionCall","src":"4253:73:10"}],"id":9076,"name":"Return","src":"4246:80:10"}],"id":9077,"name":"Block","src":"4236:97:10"}],"id":9078,"name":"FunctionDefinition","src":"4161:172:10"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9198,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9079,"name":"ElementaryTypeName","src":"4675:5:10"}],"id":9080,"name":"VariableDeclaration","src":"4675:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9081,"name":"ElementaryTypeName","src":"4694:4:10"}],"id":9082,"name":"VariableDeclaration","src":"4694:11:10"},{"attributes":{"constant":false,"name":"rrtype","scope":9198,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9083,"name":"ElementaryTypeName","src":"4707:6:10"}],"id":9084,"name":"VariableDeclaration","src":"4707:13:10"}],"id":9085,"name":"ParameterList","src":"4674:47:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9198,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9086,"name":"ElementaryTypeName","src":"4745:4:10"}],"id":9087,"name":"VariableDeclaration","src":"4745:4:10"}],"id":9088,"name":"ParameterList","src":"4744:6:10"},{"children":[{"attributes":{"assignments":[9090]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":9197,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9089,"name":"ElementaryTypeName","src":"4761:5:10"}],"id":9090,"name":"VariableDeclaration","src":"4761:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9091,"name":"ElementaryTypeNameExpression","src":"4780:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9084,"type":"uint16","value":"rrtype"},"id":9092,"name":"Identifier","src":"4786:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9093,"name":"Literal","src":"4796:1:10"}],"id":9094,"name":"BinaryOperation","src":"4786:11:10"}],"id":9095,"name":"FunctionCall","src":"4780:18:10"}],"id":9096,"name":"VariableDeclarationStatement","src":"4761:37:10"},{"attributes":{"assignments":[9098]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":9197,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9097,"name":"ElementaryTypeName","src":"4808:5:10"}],"id":9098,"name":"VariableDeclaration","src":"4808:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9099,"name":"ElementaryTypeNameExpression","src":"4827:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9084,"type":"uint16","value":"rrtype"},"id":9100,"name":"Identifier","src":"4834:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":9101,"name":"Literal","src":"4843:4:10"}],"id":9102,"name":"BinaryOperation","src":"4834:13:10"}],"id":9103,"name":"TupleExpression","src":"4833:15:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9104,"name":"Literal","src":"4851:1:10"}],"id":9105,"name":"BinaryOperation","src":"4833:19:10"}],"id":9106,"name":"FunctionCall","src":"4827:26:10"}],"id":9107,"name":"VariableDeclarationStatement","src":"4808:45:10"},{"attributes":{"assignments":[9109]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":9197,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9108,"name":"ElementaryTypeName","src":"4863:5:10"}],"id":9109,"name":"VariableDeclaration","src":"4863:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9110,"name":"ElementaryTypeNameExpression","src":"4885:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9111,"name":"ElementaryTypeNameExpression","src":"4891:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9112,"name":"Literal","src":"4897:1:10"}],"id":9113,"name":"FunctionCall","src":"4891:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9114,"name":"ElementaryTypeNameExpression","src":"4904:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":9115,"name":"Literal","src":"4910:1:10"}],"id":9116,"name":"FunctionCall","src":"4904:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9117,"name":"ElementaryTypeNameExpression","src":"4915:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9084,"type":"uint16","value":"rrtype"},"id":9118,"name":"Identifier","src":"4921:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":9119,"name":"Literal","src":"4930:3:10"}],"id":9120,"name":"BinaryOperation","src":"4921:12:10"}],"id":9121,"name":"FunctionCall","src":"4915:19:10"}],"id":9122,"name":"BinaryOperation","src":"4904:30:10"}],"id":9123,"name":"TupleExpression","src":"4903:32:10"}],"id":9124,"name":"BinaryOperation","src":"4891:44:10"}],"id":9125,"name":"FunctionCall","src":"4885:51:10"}],"id":9126,"name":"VariableDeclarationStatement","src":"4863:73:10"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[9128]},"children":[{"attributes":{"constant":false,"name":"off","scope":9194,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9127,"name":"ElementaryTypeName","src":"4951:4:10"}],"id":9128,"name":"VariableDeclaration","src":"4951:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9082,"type":"uint256","value":"offset"},"id":9129,"name":"Identifier","src":"4962:6:10"}],"id":9130,"name":"VariableDeclarationStatement","src":"4951:17:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9131,"name":"Identifier","src":"4970:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9080,"type":"bytes memory","value":"self"},"id":9132,"name":"Identifier","src":"4976:4:10"}],"id":9133,"name":"MemberAccess","src":"4976:11:10"}],"id":9134,"name":"BinaryOperation","src":"4970:17:10"},{"children":[{"attributes":{"assignments":[9136]},"children":[{"attributes":{"constant":false,"name":"window","scope":9193,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9135,"name":"ElementaryTypeName","src":"5004:5:10"}],"id":9136,"name":"VariableDeclaration","src":"5004:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9080,"type":"bytes memory","value":"self"},"id":9137,"name":"Identifier","src":"5019:4:10"}],"id":9138,"name":"MemberAccess","src":"5019:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9139,"name":"Identifier","src":"5034:3:10"}],"id":9140,"name":"FunctionCall","src":"5019:19:10"}],"id":9141,"name":"VariableDeclarationStatement","src":"5004:34:10"},{"attributes":{"assignments":[9143]},"children":[{"attributes":{"constant":false,"name":"len","scope":9193,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9142,"name":"ElementaryTypeName","src":"5052:5:10"}],"id":9143,"name":"VariableDeclaration","src":"5052:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9080,"type":"bytes memory","value":"self"},"id":9144,"name":"Identifier","src":"5064:4:10"}],"id":9145,"name":"MemberAccess","src":"5064:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9146,"name":"Identifier","src":"5079:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9147,"name":"Literal","src":"5085:1:10"}],"id":9148,"name":"BinaryOperation","src":"5079:7:10"}],"id":9149,"name":"FunctionCall","src":"5064:23:10"}],"id":9150,"name":"VariableDeclarationStatement","src":"5052:35:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9090,"type":"uint8","value":"typeWindow"},"id":9151,"name":"Identifier","src":"5105:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"uint8","value":"window"},"id":9152,"name":"Identifier","src":"5118:6:10"}],"id":9153,"name":"BinaryOperation","src":"5105:19:10"},{"children":[{"attributes":{"functionReturnParameters":9088},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9154,"name":"Literal","src":"5213:5:10"}],"id":9155,"name":"Return","src":"5206:12:10"}],"id":9156,"name":"Block","src":"5126:107:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9090,"type":"uint8","value":"typeWindow"},"id":9157,"name":"Identifier","src":"5243:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"uint8","value":"window"},"id":9158,"name":"Identifier","src":"5257:6:10"}],"id":9159,"name":"BinaryOperation","src":"5243:20:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9143,"type":"uint8","value":"len"},"id":9160,"name":"Identifier","src":"5329:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9161,"name":"Literal","src":"5335:1:10"}],"id":9162,"name":"BinaryOperation","src":"5329:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9098,"type":"uint8","value":"windowByte"},"id":9163,"name":"Identifier","src":"5340:10:10"}],"id":9164,"name":"BinaryOperation","src":"5329:21:10"},{"children":[{"attributes":{"functionReturnParameters":9088},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9165,"name":"Literal","src":"5443:5:10"}],"id":9166,"name":"Return","src":"5436:12:10"}],"id":9167,"name":"Block","src":"5352:115:10"}],"id":9168,"name":"IfStatement","src":"5325:142:10"},{"attributes":{"functionReturnParameters":9088},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9080,"type":"bytes memory","value":"self"},"id":9169,"name":"Identifier","src":"5492:4:10"}],"id":9170,"name":"MemberAccess","src":"5492:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9171,"name":"Identifier","src":"5507:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9098,"type":"uint8","value":"windowByte"},"id":9172,"name":"Identifier","src":"5513:10:10"}],"id":9173,"name":"BinaryOperation","src":"5507:16:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9174,"name":"Literal","src":"5526:1:10"}],"id":9175,"name":"BinaryOperation","src":"5507:20:10"}],"id":9176,"name":"FunctionCall","src":"5492:36:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9109,"type":"uint8","value":"windowBitmask"},"id":9177,"name":"Identifier","src":"5531:13:10"}],"id":9178,"name":"BinaryOperation","src":"5492:52:10"}],"id":9179,"name":"TupleExpression","src":"5491:54:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9180,"name":"Literal","src":"5549:1:10"}],"id":9181,"name":"BinaryOperation","src":"5491:59:10"}],"id":9182,"name":"Return","src":"5484:66:10"}],"id":9183,"name":"Block","src":"5265:300:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9128,"type":"uint256","value":"off"},"id":9184,"name":"Identifier","src":"5630:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9143,"type":"uint8","value":"len"},"id":9185,"name":"Identifier","src":"5637:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9186,"name":"Literal","src":"5643:1:10"}],"id":9187,"name":"BinaryOperation","src":"5637:7:10"}],"id":9188,"name":"Assignment","src":"5630:14:10"}],"id":9189,"name":"ExpressionStatement","src":"5630:14:10"}],"id":9190,"name":"Block","src":"5571:88:10"}],"id":9191,"name":"IfStatement","src":"5239:420:10"}],"id":9192,"name":"IfStatement","src":"5101:558:10"}],"id":9193,"name":"Block","src":"4990:679:10"}],"id":9194,"name":"ForStatement","src":"4946:723:10"},{"attributes":{"functionReturnParameters":9088},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9195,"name":"Literal","src":"5686:5:10"}],"id":9196,"name":"Return","src":"5679:12:10"}],"id":9197,"name":"Block","src":"4751:947:10"}],"id":9198,"name":"FunctionDefinition","src":"4650:1048:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9353,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9199,"name":"ElementaryTypeName","src":"5726:5:10"}],"id":9200,"name":"VariableDeclaration","src":"5726:17:10"},{"attributes":{"constant":false,"name":"other","scope":9353,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9201,"name":"ElementaryTypeName","src":"5745:5:10"}],"id":9202,"name":"VariableDeclaration","src":"5745:18:10"}],"id":9203,"name":"ParameterList","src":"5725:39:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9353,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9204,"name":"ElementaryTypeName","src":"5788:3:10"}],"id":9205,"name":"VariableDeclaration","src":"5788:3:10"}],"id":9206,"name":"ParameterList","src":"5787:5:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9664,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9207,"name":"Identifier","src":"5807:4:10"}],"id":9208,"name":"MemberAccess","src":"5807:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9209,"name":"Identifier","src":"5819:5:10"}],"id":9210,"name":"FunctionCall","src":"5807:18:10"},{"children":[{"attributes":{"functionReturnParameters":9206},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9211,"name":"Literal","src":"5848:1:10"}],"id":9212,"name":"Return","src":"5841:8:10"}],"id":9213,"name":"Block","src":"5827:33:10"}],"id":9214,"name":"IfStatement","src":"5803:57:10"},{"attributes":{"assignments":[9216],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9215,"name":"ElementaryTypeName","src":"5870:4:10"}],"id":9216,"name":"VariableDeclaration","src":"5870:8:10"}],"id":9217,"name":"VariableDeclarationStatement","src":"5870:8:10"},{"attributes":{"assignments":[9219],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9218,"name":"ElementaryTypeName","src":"5888:4:10"}],"id":9219,"name":"VariableDeclaration","src":"5888:13:10"}],"id":9220,"name":"VariableDeclarationStatement","src":"5888:13:10"},{"attributes":{"assignments":[9222],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9221,"name":"ElementaryTypeName","src":"5911:4:10"}],"id":9222,"name":"VariableDeclaration","src":"5911:12:10"}],"id":9223,"name":"VariableDeclarationStatement","src":"5911:12:10"},{"attributes":{"assignments":[9225],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9224,"name":"ElementaryTypeName","src":"5933:4:10"}],"id":9225,"name":"VariableDeclaration","src":"5933:17:10"}],"id":9226,"name":"VariableDeclarationStatement","src":"5933:17:10"},{"attributes":{"assignments":[9228]},"children":[{"attributes":{"constant":false,"name":"counts","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9227,"name":"ElementaryTypeName","src":"5960:4:10"}],"id":9228,"name":"VariableDeclaration","src":"5960:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":8879,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9229,"name":"Identifier","src":"5974:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9230,"name":"Identifier","src":"5985:4:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9231,"name":"Literal","src":"5991:1:10"}],"id":9232,"name":"FunctionCall","src":"5974:19:10"}],"id":9233,"name":"VariableDeclarationStatement","src":"5960:33:10"},{"attributes":{"assignments":[9235]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":9352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9234,"name":"ElementaryTypeName","src":"6003:4:10"}],"id":9235,"name":"VariableDeclaration","src":"6003:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":8879,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9236,"name":"Identifier","src":"6022:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9237,"name":"Identifier","src":"6033:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9238,"name":"Literal","src":"6040:1:10"}],"id":9239,"name":"FunctionCall","src":"6022:20:10"}],"id":9240,"name":"VariableDeclarationStatement","src":"6003:39:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9241,"name":"Identifier","src":"6153:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"uint256","value":"othercounts"},"id":9242,"name":"Identifier","src":"6162:11:10"}],"id":9243,"name":"BinaryOperation","src":"6153:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"prevoff"},"id":9244,"name":"Identifier","src":"6189:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9245,"name":"Identifier","src":"6199:3:10"}],"id":9246,"name":"Assignment","src":"6189:13:10"}],"id":9247,"name":"ExpressionStatement","src":"6189:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9248,"name":"Identifier","src":"6216:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9372,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9249,"name":"Identifier","src":"6222:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9250,"name":"Identifier","src":"6231:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9251,"name":"Identifier","src":"6237:3:10"}],"id":9252,"name":"FunctionCall","src":"6222:19:10"}],"id":9253,"name":"Assignment","src":"6216:25:10"}],"id":9254,"name":"ExpressionStatement","src":"6216:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9255,"name":"Identifier","src":"6255:6:10"}],"id":9256,"name":"UnaryOperation","src":"6255:8:10"}],"id":9257,"name":"ExpressionStatement","src":"6255:8:10"}],"id":9258,"name":"Block","src":"6175:99:10"}],"id":9259,"name":"WhileStatement","src":"6146:128:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"uint256","value":"othercounts"},"id":9260,"name":"Identifier","src":"6291:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9261,"name":"Identifier","src":"6305:6:10"}],"id":9262,"name":"BinaryOperation","src":"6291:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"otherprevoff"},"id":9263,"name":"Identifier","src":"6327:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9264,"name":"Identifier","src":"6342:8:10"}],"id":9265,"name":"Assignment","src":"6327:23:10"}],"id":9266,"name":"ExpressionStatement","src":"6327:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9267,"name":"Identifier","src":"6364:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9372,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9268,"name":"Identifier","src":"6375:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9269,"name":"Identifier","src":"6384:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9270,"name":"Identifier","src":"6391:8:10"}],"id":9271,"name":"FunctionCall","src":"6375:25:10"}],"id":9272,"name":"Assignment","src":"6364:36:10"}],"id":9273,"name":"ExpressionStatement","src":"6364:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"uint256","value":"othercounts"},"id":9274,"name":"Identifier","src":"6414:11:10"}],"id":9275,"name":"UnaryOperation","src":"6414:13:10"}],"id":9276,"name":"ExpressionStatement","src":"6414:13:10"}],"id":9277,"name":"Block","src":"6313:125:10"}],"id":9278,"name":"WhileStatement","src":"6284:154:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9279,"name":"Identifier","src":"6513:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9280,"name":"Literal","src":"6522:1:10"}],"id":9281,"name":"BinaryOperation","src":"6513:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9610,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9282,"name":"Identifier","src":"6528:4:10"}],"id":9283,"name":"MemberAccess","src":"6528:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9284,"name":"Identifier","src":"6540:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9285,"name":"Identifier","src":"6545:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9286,"name":"Identifier","src":"6552:8:10"}],"id":9287,"name":"FunctionCall","src":"6528:33:10"}],"id":9288,"name":"UnaryOperation","src":"6527:34:10"}],"id":9289,"name":"BinaryOperation","src":"6513:48:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"prevoff"},"id":9290,"name":"Identifier","src":"6577:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9291,"name":"Identifier","src":"6587:3:10"}],"id":9292,"name":"Assignment","src":"6577:13:10"}],"id":9293,"name":"ExpressionStatement","src":"6577:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9294,"name":"Identifier","src":"6604:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9372,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9295,"name":"Identifier","src":"6610:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9296,"name":"Identifier","src":"6619:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9297,"name":"Identifier","src":"6625:3:10"}],"id":9298,"name":"FunctionCall","src":"6610:19:10"}],"id":9299,"name":"Assignment","src":"6604:25:10"}],"id":9300,"name":"ExpressionStatement","src":"6604:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"otherprevoff"},"id":9301,"name":"Identifier","src":"6643:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9302,"name":"Identifier","src":"6658:8:10"}],"id":9303,"name":"Assignment","src":"6643:23:10"}],"id":9304,"name":"ExpressionStatement","src":"6643:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9305,"name":"Identifier","src":"6680:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9372,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9306,"name":"Identifier","src":"6691:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9307,"name":"Identifier","src":"6700:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9308,"name":"Identifier","src":"6707:8:10"}],"id":9309,"name":"FunctionCall","src":"6691:25:10"}],"id":9310,"name":"Assignment","src":"6680:36:10"}],"id":9311,"name":"ExpressionStatement","src":"6680:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9228,"type":"uint256","value":"counts"},"id":9312,"name":"Identifier","src":"6730:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9313,"name":"Literal","src":"6740:1:10"}],"id":9314,"name":"Assignment","src":"6730:11:10"}],"id":9315,"name":"ExpressionStatement","src":"6730:11:10"}],"id":9316,"name":"Block","src":"6563:189:10"}],"id":9317,"name":"WhileStatement","src":"6506:246:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9216,"type":"uint256","value":"off"},"id":9318,"name":"Identifier","src":"6766:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9319,"name":"Literal","src":"6773:1:10"}],"id":9320,"name":"BinaryOperation","src":"6766:8:10"},{"children":[{"attributes":{"functionReturnParameters":9206},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9321,"name":"Literal","src":"6798:1:10"}],"id":9322,"name":"UnaryOperation","src":"6797:2:10"}],"id":9323,"name":"Return","src":"6790:9:10"}],"id":9324,"name":"Block","src":"6776:34:10"}],"id":9325,"name":"IfStatement","src":"6762:48:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"uint256","value":"otheroff"},"id":9326,"name":"Identifier","src":"6822:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9327,"name":"Literal","src":"6834:1:10"}],"id":9328,"name":"BinaryOperation","src":"6822:13:10"},{"children":[{"attributes":{"functionReturnParameters":9206},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9329,"name":"Literal","src":"6858:1:10"}],"id":9330,"name":"Return","src":"6851:8:10"}],"id":9331,"name":"Block","src":"6837:33:10"}],"id":9332,"name":"IfStatement","src":"6819:51:10"},{"attributes":{"functionReturnParameters":9206},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":9550,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9333,"name":"Identifier","src":"6887:4:10"}],"id":9334,"name":"MemberAccess","src":"6887:12:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"prevoff"},"id":9335,"name":"Identifier","src":"6900:7:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9336,"name":"Literal","src":"6910:1:10"}],"id":9337,"name":"BinaryOperation","src":"6900:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9200,"type":"bytes memory","value":"self"},"id":9338,"name":"Identifier","src":"6913:4:10"}],"id":9339,"name":"MemberAccess","src":"6913:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"prevoff"},"id":9340,"name":"Identifier","src":"6928:7:10"}],"id":9341,"name":"FunctionCall","src":"6913:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9342,"name":"Identifier","src":"6938:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"otherprevoff"},"id":9343,"name":"Identifier","src":"6945:12:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9344,"name":"Literal","src":"6960:1:10"}],"id":9345,"name":"BinaryOperation","src":"6945:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9202,"type":"bytes memory","value":"other"},"id":9346,"name":"Identifier","src":"6963:5:10"}],"id":9347,"name":"MemberAccess","src":"6963:15:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"otherprevoff"},"id":9348,"name":"Identifier","src":"6979:12:10"}],"id":9349,"name":"FunctionCall","src":"6963:29:10"}],"id":9350,"name":"FunctionCall","src":"6887:106:10"}],"id":9351,"name":"Return","src":"6880:113:10"}],"id":9352,"name":"Block","src":"5793:1207:10"}],"id":9353,"name":"FunctionDefinition","src":"5704:1296:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":9373,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":9372,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9354,"name":"ElementaryTypeName","src":"7024:5:10"}],"id":9355,"name":"VariableDeclaration","src":"7024:17:10"},{"attributes":{"constant":false,"name":"off","scope":9372,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9356,"name":"ElementaryTypeName","src":"7043:4:10"}],"id":9357,"name":"VariableDeclaration","src":"7043:8:10"}],"id":9358,"name":"ParameterList","src":"7023:29:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9372,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9359,"name":"ElementaryTypeName","src":"7075:4:10"}],"id":9360,"name":"VariableDeclaration","src":"7075:4:10"}],"id":9361,"name":"ParameterList","src":"7074:6:10"},{"children":[{"attributes":{"functionReturnParameters":9361},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9357,"type":"uint256","value":"off"},"id":9362,"name":"Identifier","src":"7098:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9363,"name":"Literal","src":"7104:1:10"}],"id":9364,"name":"BinaryOperation","src":"7098:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9680,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9355,"type":"bytes memory","value":"body"},"id":9365,"name":"Identifier","src":"7108:4:10"}],"id":9366,"name":"MemberAccess","src":"7108:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9357,"type":"uint256","value":"off"},"id":9367,"name":"Identifier","src":"7123:3:10"}],"id":9368,"name":"FunctionCall","src":"7108:19:10"}],"id":9369,"name":"BinaryOperation","src":"7098:29:10"}],"id":9370,"name":"Return","src":"7091:36:10"}],"id":9371,"name":"Block","src":"7081:53:10"}],"id":9372,"name":"FunctionDefinition","src":"7006:128:10"}],"id":9373,"name":"ContractDefinition","src":"150:6986:10"}],"id":9374,"name":"SourceUnit","src":"0:7137:10"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[8755]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":8688,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[8755],"name":"ResolverBase","scope":8756},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":8755,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8689,"name":"ElementaryTypeName","src":"53:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":8690,"name":"Literal","src":"97:10:11"}],"id":8691,"name":"VariableDeclaration","src":"53:54:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":8755,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":8703,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8692,"name":"ElementaryTypeName","src":"141:6:11"}],"id":8693,"name":"VariableDeclaration","src":"141:18:11"}],"id":8694,"name":"ParameterList","src":"140:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":8703,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8695,"name":"ElementaryTypeName","src":"181:4:11"}],"id":8696,"name":"VariableDeclaration","src":"181:4:11"}],"id":8697,"name":"ParameterList","src":"180:6:11"},{"children":[{"attributes":{"functionReturnParameters":8697},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8693,"type":"bytes4","value":"interfaceID"},"id":8698,"name":"Identifier","src":"204:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8691,"type":"bytes4","value":"INTERFACE_META_ID"},"id":8699,"name":"Identifier","src":"219:17:11"}],"id":8700,"name":"BinaryOperation","src":"204:32:11"}],"id":8701,"name":"Return","src":"197:39:11"}],"id":8702,"name":"Block","src":"187:56:11"}],"id":8703,"name":"FunctionDefinition","src":"114:129:11"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":8755,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":8710,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8704,"name":"ElementaryTypeName","src":"271:7:11"}],"id":8705,"name":"VariableDeclaration","src":"271:12:11"}],"id":8706,"name":"ParameterList","src":"270:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":8710,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8707,"name":"ElementaryTypeName","src":"307:4:11"}],"id":8708,"name":"VariableDeclaration","src":"307:4:11"}],"id":8709,"name":"ParameterList","src":"306:6:11"}],"id":8710,"name":"FunctionDefinition","src":"249:64:11"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":8722,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8711,"name":"ElementaryTypeName","src":"339:7:11"}],"id":8712,"name":"VariableDeclaration","src":"339:12:11"}],"id":8713,"name":"ParameterList","src":"338:14:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":8714,"name":"Identifier","src":"363:7:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":8710,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":8715,"name":"Identifier","src":"371:12:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8712,"type":"bytes32","value":"node"},"id":8716,"name":"Identifier","src":"384:4:11"}],"id":8717,"name":"FunctionCall","src":"371:18:11"}],"id":8718,"name":"FunctionCall","src":"363:27:11"}],"id":8719,"name":"ExpressionStatement","src":"363:27:11"},{"id":8720,"name":"PlaceholderStatement","src":"400:1:11"}],"id":8721,"name":"Block","src":"353:55:11"}],"id":8722,"name":"ModifierDefinition","src":"319:89:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":8755,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":8738,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8723,"name":"ElementaryTypeName","src":"438:5:11"}],"id":8724,"name":"VariableDeclaration","src":"438:14:11"}],"id":8725,"name":"ParameterList","src":"437:16:11"},{"children":[{"attributes":{"constant":false,"name":"a","scope":8738,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":8726,"name":"ElementaryTypeName","src":"476:15:11"}],"id":8727,"name":"VariableDeclaration","src":"476:17:11"}],"id":8728,"name":"ParameterList","src":"475:19:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":8729,"name":"Identifier","src":"505:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8724,"type":"bytes memory","value":"b"},"id":8730,"name":"Identifier","src":"513:1:11"}],"id":8731,"name":"MemberAccess","src":"513:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8732,"name":"Literal","src":"525:2:11"}],"id":8733,"name":"BinaryOperation","src":"513:14:11"}],"id":8734,"name":"FunctionCall","src":"505:23:11"}],"id":8735,"name":"ExpressionStatement","src":"505:23:11"},{"attributes":{"externalReferences":[{"a":{"declaration":8727,"isOffset":false,"isSlot":false,"src":"561:1:11","valueSize":1}},{"b":{"declaration":8724,"isOffset":false,"isSlot":false,"src":"580:1:11","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":8736,"name":"InlineAssembly","src":"538:74:11"}],"id":8737,"name":"Block","src":"495:123:11"}],"id":8738,"name":"FunctionDefinition","src":"414:204:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":8755,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":8754,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8739,"name":"ElementaryTypeName","src":"648:7:11"}],"id":8740,"name":"VariableDeclaration","src":"648:9:11"}],"id":8741,"name":"ParameterList","src":"647:11:11"},{"children":[{"attributes":{"constant":false,"name":"b","scope":8754,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8742,"name":"ElementaryTypeName","src":"681:5:11"}],"id":8743,"name":"VariableDeclaration","src":"681:14:11"}],"id":8744,"name":"ParameterList","src":"680:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8743,"type":"bytes memory","value":"b"},"id":8745,"name":"Identifier","src":"707:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8746,"name":"ElementaryTypeName","src":"715:5:11"}],"id":8747,"name":"NewExpression","src":"711:9:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8748,"name":"Literal","src":"721:2:11"}],"id":8749,"name":"FunctionCall","src":"711:13:11"}],"id":8750,"name":"Assignment","src":"707:17:11"}],"id":8751,"name":"ExpressionStatement","src":"707:17:11"},{"attributes":{"externalReferences":[{"b":{"declaration":8743,"isOffset":false,"isSlot":false,"src":"768:1:11","valueSize":1}},{"a":{"declaration":8740,"isOffset":false,"isSlot":false,"src":"780:1:11","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":8752,"name":"InlineAssembly","src":"734:73:11"}],"id":8753,"name":"Block","src":"697:116:11"}],"id":8754,"name":"FunctionDefinition","src":"624:189:11"}],"id":8755,"name":"ContractDefinition","src":"25:790:11"}],"id":8756,"name":"SourceUnit","src":"0:816:11"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[5718]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5584,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5719,"symbolAliases":[null],"unitAlias":""},"id":5585,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5718,8755],"name":"ABIResolver","scope":5719},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":5586,"name":"UserDefinedTypeName","src":"80:12:12"}],"id":5587,"name":"InheritanceSpecifier","src":"80:12:12"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":5718,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5588,"name":"ElementaryTypeName","src":"99:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":5589,"name":"Literal","src":"142:10:12"}],"id":5590,"name":"VariableDeclaration","src":"99:53:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5596,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5591,"name":"ElementaryTypeName","src":"176:7:12"}],"id":5592,"name":"VariableDeclaration","src":"176:20:12"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":5596,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5593,"name":"ElementaryTypeName","src":"198:7:12"}],"id":5594,"name":"VariableDeclaration","src":"198:27:12"}],"id":5595,"name":"ParameterList","src":"175:51:12"}],"id":5596,"name":"EventDefinition","src":"159:68:12"},{"attributes":{"constant":false,"name":"abis","scope":5718,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5597,"name":"ElementaryTypeName","src":"241:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5598,"name":"ElementaryTypeName","src":"258:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5599,"name":"ElementaryTypeName","src":"267:5:12"}],"id":5600,"name":"Mapping","src":"250:23:12"}],"id":5601,"name":"Mapping","src":"233:41:12"}],"id":5602,"name":"VariableDeclaration","src":"233:46:12"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":5718,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5640,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5603,"name":"ElementaryTypeName","src":"598:7:12"}],"id":5604,"name":"VariableDeclaration","src":"598:12:12"},{"attributes":{"constant":false,"name":"contentType","scope":5640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5605,"name":"ElementaryTypeName","src":"612:7:12"}],"id":5606,"name":"VariableDeclaration","src":"612:19:12"},{"attributes":{"constant":false,"name":"data","scope":5640,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5607,"name":"ElementaryTypeName","src":"633:5:12"}],"id":5608,"name":"VariableDeclaration","src":"633:19:12"}],"id":5609,"name":"ParameterList","src":"597:56:12"},{"attributes":{"parameters":[null]},"children":[],"id":5613,"name":"ParameterList","src":"680:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":5610,"name":"Identifier","src":"663:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes32","value":"node"},"id":5611,"name":"Identifier","src":"674:4:12"}],"id":5612,"name":"ModifierInvocation","src":"663:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10112,"type":"function (bool) pure","value":"require"},"id":5614,"name":"Identifier","src":"735:7:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"uint256","value":"contentType"},"id":5615,"name":"Identifier","src":"745:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5616,"name":"Literal","src":"759:1:12"}],"id":5617,"name":"BinaryOperation","src":"745:15:12"}],"id":5618,"name":"TupleExpression","src":"744:17:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"uint256","value":"contentType"},"id":5619,"name":"Identifier","src":"764:11:12"}],"id":5620,"name":"BinaryOperation","src":"744:31:12"}],"id":5621,"name":"TupleExpression","src":"743:33:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5622,"name":"Literal","src":"780:1:12"}],"id":5623,"name":"BinaryOperation","src":"743:38:12"}],"id":5624,"name":"FunctionCall","src":"735:47:12"}],"id":5625,"name":"ExpressionStatement","src":"735:47:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5602,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":5626,"name":"Identifier","src":"793:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes32","value":"node"},"id":5627,"name":"Identifier","src":"798:4:12"}],"id":5629,"name":"IndexAccess","src":"793:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"uint256","value":"contentType"},"id":5628,"name":"Identifier","src":"804:11:12"}],"id":5630,"name":"IndexAccess","src":"793:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5608,"type":"bytes calldata","value":"data"},"id":5631,"name":"Identifier","src":"819:4:12"}],"id":5632,"name":"Assignment","src":"793:30:12"}],"id":5633,"name":"ExpressionStatement","src":"793:30:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5596,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":5634,"name":"Identifier","src":"838:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5604,"type":"bytes32","value":"node"},"id":5635,"name":"Identifier","src":"849:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5606,"type":"uint256","value":"contentType"},"id":5636,"name":"Identifier","src":"855:11:12"}],"id":5637,"name":"FunctionCall","src":"838:29:12"}],"id":5638,"name":"EmitStatement","src":"833:34:12"}],"id":5639,"name":"Block","src":"680:194:12"}],"id":5640,"name":"FunctionDefinition","src":"582:292:12"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":5718,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5700,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5641,"name":"ElementaryTypeName","src":"1208:7:12"}],"id":5642,"name":"VariableDeclaration","src":"1208:12:12"},{"attributes":{"constant":false,"name":"contentTypes","scope":5700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5643,"name":"ElementaryTypeName","src":"1222:7:12"}],"id":5644,"name":"VariableDeclaration","src":"1222:20:12"}],"id":5645,"name":"ParameterList","src":"1207:36:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5700,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5646,"name":"ElementaryTypeName","src":"1267:7:12"}],"id":5647,"name":"VariableDeclaration","src":"1267:7:12"},{"attributes":{"constant":false,"name":"","scope":5700,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5648,"name":"ElementaryTypeName","src":"1276:5:12"}],"id":5649,"name":"VariableDeclaration","src":"1276:12:12"}],"id":5650,"name":"ParameterList","src":"1266:23:12"},{"children":[{"attributes":{"assignments":[5654]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":5699,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5651,"name":"ElementaryTypeName","src":"1308:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":5652,"name":"ElementaryTypeName","src":"1317:5:12"}],"id":5653,"name":"Mapping","src":"1300:23:12"}],"id":5654,"name":"VariableDeclaration","src":"1300:38:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5602,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":5655,"name":"Identifier","src":"1341:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5642,"type":"bytes32","value":"node"},"id":5656,"name":"Identifier","src":"1346:4:12"}],"id":5657,"name":"IndexAccess","src":"1341:10:12"}],"id":5658,"name":"VariableDeclarationStatement","src":"1300:51:12"},{"children":[{"attributes":{"assignments":[5660]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":5692,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5659,"name":"ElementaryTypeName","src":"1367:7:12"}],"id":5660,"name":"VariableDeclaration","src":"1367:19:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5661,"name":"Literal","src":"1389:1:12"}],"id":5662,"name":"VariableDeclarationStatement","src":"1367:23:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5663,"name":"Identifier","src":"1392:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5644,"type":"uint256","value":"contentTypes"},"id":5664,"name":"Identifier","src":"1407:12:12"}],"id":5665,"name":"BinaryOperation","src":"1392:27:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5666,"name":"Identifier","src":"1421:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5667,"name":"Literal","src":"1437:1:12"}],"id":5668,"name":"Assignment","src":"1421:17:12"}],"id":5669,"name":"ExpressionStatement","src":"1421:17:12"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5670,"name":"Identifier","src":"1459:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5644,"type":"uint256","value":"contentTypes"},"id":5671,"name":"Identifier","src":"1473:12:12"}],"id":5672,"name":"BinaryOperation","src":"1459:26:12"}],"id":5673,"name":"TupleExpression","src":"1458:28:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5674,"name":"Literal","src":"1490:1:12"}],"id":5675,"name":"BinaryOperation","src":"1458:33:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":5676,"name":"Identifier","src":"1495:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5677,"name":"Identifier","src":"1502:11:12"}],"id":5678,"name":"IndexAccess","src":"1495:19:12"}],"id":5679,"name":"MemberAccess","src":"1495:26:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5680,"name":"Literal","src":"1524:1:12"}],"id":5681,"name":"BinaryOperation","src":"1495:30:12"}],"id":5682,"name":"BinaryOperation","src":"1458:67:12"},{"children":[{"attributes":{"functionReturnParameters":5650},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5683,"name":"Identifier","src":"1553:11:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5654,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":5684,"name":"Identifier","src":"1566:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5660,"type":"uint256","value":"contentType"},"id":5685,"name":"Identifier","src":"1573:11:12"}],"id":5686,"name":"IndexAccess","src":"1566:19:12"}],"id":5687,"name":"TupleExpression","src":"1552:34:12"}],"id":5688,"name":"Return","src":"1545:41:12"}],"id":5689,"name":"Block","src":"1527:74:12"}],"id":5690,"name":"IfStatement","src":"1454:147:12"}],"id":5691,"name":"Block","src":"1440:171:12"}],"id":5692,"name":"ForStatement","src":"1362:249:12"},{"attributes":{"functionReturnParameters":5650},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5693,"name":"Literal","src":"1629:1:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5694,"name":"ElementaryTypeNameExpression","src":"1632:5:12"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":5695,"name":"Literal","src":"1638:2:12"}],"id":5696,"name":"FunctionCall","src":"1632:9:12"}],"id":5697,"name":"TupleExpression","src":"1628:14:12"}],"id":5698,"name":"Return","src":"1621:21:12"}],"id":5699,"name":"Block","src":"1290:359:12"}],"id":5700,"name":"FunctionDefinition","src":"1195:454:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5718,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5717,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5701,"name":"ElementaryTypeName","src":"1682:6:12"}],"id":5702,"name":"VariableDeclaration","src":"1682:18:12"}],"id":5703,"name":"ParameterList","src":"1681:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":5717,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5704,"name":"ElementaryTypeName","src":"1722:4:12"}],"id":5705,"name":"VariableDeclaration","src":"1722:4:12"}],"id":5706,"name":"ParameterList","src":"1721:6:12"},{"children":[{"attributes":{"functionReturnParameters":5706},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"bytes4","value":"interfaceID"},"id":5707,"name":"Identifier","src":"1745:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5590,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":5708,"name":"Identifier","src":"1760:16:12"}],"id":5709,"name":"BinaryOperation","src":"1745:31:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10150,"type":"contract super ABIResolver","value":"super"},"id":5710,"name":"Identifier","src":"1780:5:12"}],"id":5711,"name":"MemberAccess","src":"1780:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5702,"type":"bytes4","value":"interfaceID"},"id":5712,"name":"Identifier","src":"1804:11:12"}],"id":5713,"name":"FunctionCall","src":"1780:36:12"}],"id":5714,"name":"BinaryOperation","src":"1745:71:12"}],"id":5715,"name":"Return","src":"1738:78:12"}],"id":5716,"name":"Block","src":"1728:95:12"}],"id":5717,"name":"FunctionDefinition","src":"1655:168:12"}],"id":5718,"name":"ContractDefinition","src":"56:1769:12"}],"id":5719,"name":"SourceUnit","src":"0:1826:12"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[5877]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5720,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5878,"symbolAliases":[null],"unitAlias":""},"id":5721,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5877,8755],"name":"AddrResolver","scope":5878},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":5722,"name":"UserDefinedTypeName","src":"81:12:13"}],"id":5723,"name":"InheritanceSpecifier","src":"81:12:13"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":5877,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5724,"name":"ElementaryTypeName","src":"100:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":5725,"name":"Literal","src":"144:10:13"}],"id":5726,"name":"VariableDeclaration","src":"100:54:13"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":5877,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5727,"name":"ElementaryTypeName","src":"160:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":5728,"name":"Literal","src":"207:10:13"}],"id":5729,"name":"VariableDeclaration","src":"160:57:13"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":5877,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5730,"name":"ElementaryTypeName","src":"223:4:13"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":5731,"name":"Literal","src":"261:2:13"}],"id":5732,"name":"VariableDeclaration","src":"223:40:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5738,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5733,"name":"ElementaryTypeName","src":"288:7:13"}],"id":5734,"name":"VariableDeclaration","src":"288:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":5738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5735,"name":"ElementaryTypeName","src":"310:7:13"}],"id":5736,"name":"VariableDeclaration","src":"310:9:13"}],"id":5737,"name":"ParameterList","src":"287:33:13"}],"id":5738,"name":"EventDefinition","src":"270:51:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5746,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5739,"name":"ElementaryTypeName","src":"347:7:13"}],"id":5740,"name":"VariableDeclaration","src":"347:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":5746,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5741,"name":"ElementaryTypeName","src":"369:4:13"}],"id":5742,"name":"VariableDeclaration","src":"369:13:13"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":5746,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5743,"name":"ElementaryTypeName","src":"384:5:13"}],"id":5744,"name":"VariableDeclaration","src":"384:16:13"}],"id":5745,"name":"ParameterList","src":"346:55:13"}],"id":5746,"name":"EventDefinition","src":"326:76:13"},{"attributes":{"constant":false,"name":"_addresses","scope":5877,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5747,"name":"ElementaryTypeName","src":"416:7:13"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5748,"name":"ElementaryTypeName","src":"433:4:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":5749,"name":"ElementaryTypeName","src":"439:5:13"}],"id":5750,"name":"Mapping","src":"425:20:13"}],"id":5751,"name":"Mapping","src":"408:38:13"}],"id":5752,"name":"VariableDeclaration","src":"408:49:13"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":5877,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5771,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5753,"name":"ElementaryTypeName","src":"698:7:13"}],"id":5754,"name":"VariableDeclaration","src":"698:12:13"},{"attributes":{"constant":false,"name":"a","scope":5771,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5755,"name":"ElementaryTypeName","src":"712:7:13"}],"id":5756,"name":"VariableDeclaration","src":"712:9:13"}],"id":5757,"name":"ParameterList","src":"697:25:13"},{"attributes":{"parameters":[null]},"children":[],"id":5761,"name":"ParameterList","src":"749:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":5758,"name":"Identifier","src":"732:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5754,"type":"bytes32","value":"node"},"id":5759,"name":"Identifier","src":"743:4:13"}],"id":5760,"name":"ModifierInvocation","src":"732:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5839,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":5762,"name":"Identifier","src":"759:15:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5754,"type":"bytes32","value":"node"},"id":5763,"name":"Identifier","src":"775:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5732,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5764,"name":"Identifier","src":"781:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":8754,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":5765,"name":"Identifier","src":"796:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5756,"type":"address","value":"a"},"id":5766,"name":"Identifier","src":"811:1:13"}],"id":5767,"name":"FunctionCall","src":"796:17:13"}],"id":5768,"name":"FunctionCall","src":"759:55:13"}],"id":5769,"name":"ExpressionStatement","src":"759:55:13"}],"id":5770,"name":"Block","src":"749:72:13"}],"id":5771,"name":"FunctionDefinition","src":"681:140:13"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5877,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5800,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5772,"name":"ElementaryTypeName","src":"994:7:13"}],"id":5773,"name":"VariableDeclaration","src":"994:12:13"}],"id":5774,"name":"ParameterList","src":"993:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5800,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5775,"name":"ElementaryTypeName","src":"1029:15:13"}],"id":5776,"name":"VariableDeclaration","src":"1029:15:13"}],"id":5777,"name":"ParameterList","src":"1028:17:13"},{"children":[{"attributes":{"assignments":[5779]},"children":[{"attributes":{"constant":false,"name":"a","scope":5799,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5778,"name":"ElementaryTypeName","src":"1056:5:13"}],"id":5779,"name":"VariableDeclaration","src":"1056:14:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[5800,5855],"referencedDeclaration":5855,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":5780,"name":"Identifier","src":"1073:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5773,"type":"bytes32","value":"node"},"id":5781,"name":"Identifier","src":"1078:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5732,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5782,"name":"Identifier","src":"1084:13:13"}],"id":5783,"name":"FunctionCall","src":"1073:25:13"}],"id":5784,"name":"VariableDeclarationStatement","src":"1056:42:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5779,"type":"bytes memory","value":"a"},"id":5785,"name":"Identifier","src":"1111:1:13"}],"id":5786,"name":"MemberAccess","src":"1111:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5787,"name":"Literal","src":"1123:1:13"}],"id":5788,"name":"BinaryOperation","src":"1111:13:13"},{"children":[{"attributes":{"functionReturnParameters":5777},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5789,"name":"ElementaryTypeNameExpression","src":"1147:7:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5790,"name":"Literal","src":"1155:1:13"}],"id":5791,"name":"FunctionCall","src":"1147:10:13"}],"id":5792,"name":"Return","src":"1140:17:13"}],"id":5793,"name":"Block","src":"1126:42:13"}],"id":5794,"name":"IfStatement","src":"1108:60:13"},{"attributes":{"functionReturnParameters":5777},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5795,"name":"Identifier","src":"1184:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5779,"type":"bytes memory","value":"a"},"id":5796,"name":"Identifier","src":"1199:1:13"}],"id":5797,"name":"FunctionCall","src":"1184:17:13"}],"id":5798,"name":"Return","src":"1177:24:13"}],"id":5799,"name":"Block","src":"1046:162:13"}],"id":5800,"name":"FunctionDefinition","src":"980:228:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":5877,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5839,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5801,"name":"ElementaryTypeName","src":"1239:7:13"}],"id":5802,"name":"VariableDeclaration","src":"1239:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5839,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5803,"name":"ElementaryTypeName","src":"1253:4:13"}],"id":5804,"name":"VariableDeclaration","src":"1253:13:13"},{"attributes":{"constant":false,"name":"a","scope":5839,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5805,"name":"ElementaryTypeName","src":"1268:5:13"}],"id":5806,"name":"VariableDeclaration","src":"1268:14:13"}],"id":5807,"name":"ParameterList","src":"1238:45:13"},{"attributes":{"parameters":[null]},"children":[],"id":5811,"name":"ParameterList","src":"1308:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":5808,"name":"Identifier","src":"1291:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"bytes32","value":"node"},"id":5809,"name":"Identifier","src":"1302:4:13"}],"id":5810,"name":"ModifierInvocation","src":"1291:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5746,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":5812,"name":"Identifier","src":"1323:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"bytes32","value":"node"},"id":5813,"name":"Identifier","src":"1338:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5804,"type":"uint256","value":"coinType"},"id":5814,"name":"Identifier","src":"1344:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5806,"type":"bytes memory","value":"a"},"id":5815,"name":"Identifier","src":"1354:1:13"}],"id":5816,"name":"FunctionCall","src":"1323:33:13"}],"id":5817,"name":"EmitStatement","src":"1318:38:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5804,"type":"uint256","value":"coinType"},"id":5818,"name":"Identifier","src":"1369:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5732,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5819,"name":"Identifier","src":"1381:13:13"}],"id":5820,"name":"BinaryOperation","src":"1369:25:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":5738,"type":"function (bytes32,address)","value":"AddrChanged"},"id":5821,"name":"Identifier","src":"1415:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"bytes32","value":"node"},"id":5822,"name":"Identifier","src":"1427:4:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5823,"name":"Identifier","src":"1433:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5806,"type":"bytes memory","value":"a"},"id":5824,"name":"Identifier","src":"1448:1:13"}],"id":5825,"name":"FunctionCall","src":"1433:17:13"}],"id":5826,"name":"FunctionCall","src":"1415:36:13"}],"id":5827,"name":"EmitStatement","src":"1410:41:13"}],"id":5828,"name":"Block","src":"1396:66:13"}],"id":5829,"name":"IfStatement","src":"1366:96:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5752,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5830,"name":"Identifier","src":"1471:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"bytes32","value":"node"},"id":5831,"name":"Identifier","src":"1482:4:13"}],"id":5833,"name":"IndexAccess","src":"1471:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5804,"type":"uint256","value":"coinType"},"id":5832,"name":"Identifier","src":"1488:8:13"}],"id":5834,"name":"IndexAccess","src":"1471:26:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5806,"type":"bytes memory","value":"a"},"id":5835,"name":"Identifier","src":"1500:1:13"}],"id":5836,"name":"Assignment","src":"1471:30:13"}],"id":5837,"name":"ExpressionStatement","src":"1471:30:13"}],"id":5838,"name":"Block","src":"1308:200:13"}],"id":5839,"name":"FunctionDefinition","src":"1214:294:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5877,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5855,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5840,"name":"ElementaryTypeName","src":"1528:7:13"}],"id":5841,"name":"VariableDeclaration","src":"1528:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5855,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5842,"name":"ElementaryTypeName","src":"1542:4:13"}],"id":5843,"name":"VariableDeclaration","src":"1542:13:13"}],"id":5844,"name":"ParameterList","src":"1527:29:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5855,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5845,"name":"ElementaryTypeName","src":"1577:5:13"}],"id":5846,"name":"VariableDeclaration","src":"1577:12:13"}],"id":5847,"name":"ParameterList","src":"1576:14:13"},{"children":[{"attributes":{"functionReturnParameters":5847},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5752,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5848,"name":"Identifier","src":"1608:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5841,"type":"bytes32","value":"node"},"id":5849,"name":"Identifier","src":"1619:4:13"}],"id":5850,"name":"IndexAccess","src":"1608:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5843,"type":"uint256","value":"coinType"},"id":5851,"name":"Identifier","src":"1625:8:13"}],"id":5852,"name":"IndexAccess","src":"1608:26:13"}],"id":5853,"name":"Return","src":"1601:33:13"}],"id":5854,"name":"Block","src":"1591:50:13"}],"id":5855,"name":"FunctionDefinition","src":"1514:127:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5877,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5876,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5856,"name":"ElementaryTypeName","src":"1674:6:13"}],"id":5857,"name":"VariableDeclaration","src":"1674:18:13"}],"id":5858,"name":"ParameterList","src":"1673:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5876,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5859,"name":"ElementaryTypeName","src":"1714:4:13"}],"id":5860,"name":"VariableDeclaration","src":"1714:4:13"}],"id":5861,"name":"ParameterList","src":"1713:6:13"},{"children":[{"attributes":{"functionReturnParameters":5861},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"bytes4","value":"interfaceID"},"id":5862,"name":"Identifier","src":"1737:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5726,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":5863,"name":"Identifier","src":"1752:17:13"}],"id":5864,"name":"BinaryOperation","src":"1737:32:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"bytes4","value":"interfaceID"},"id":5865,"name":"Identifier","src":"1773:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5729,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":5866,"name":"Identifier","src":"1788:20:13"}],"id":5867,"name":"BinaryOperation","src":"1773:35:13"}],"id":5868,"name":"BinaryOperation","src":"1737:71:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10152,"type":"contract super AddrResolver","value":"super"},"id":5869,"name":"Identifier","src":"1812:5:13"}],"id":5870,"name":"MemberAccess","src":"1812:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"bytes4","value":"interfaceID"},"id":5871,"name":"Identifier","src":"1836:11:13"}],"id":5872,"name":"FunctionCall","src":"1812:36:13"}],"id":5873,"name":"BinaryOperation","src":"1737:111:13"}],"id":5874,"name":"Return","src":"1730:118:13"}],"id":5875,"name":"Block","src":"1720:135:13"}],"id":5876,"name":"FunctionDefinition","src":"1647:208:13"}],"id":5877,"name":"ContractDefinition","src":"56:1801:13"}],"id":5878,"name":"SourceUnit","src":"0:1857:13"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[5947]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5879,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5948,"symbolAliases":[null],"unitAlias":""},"id":5880,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5947,8755],"name":"ContentHashResolver","scope":5948},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":5881,"name":"UserDefinedTypeName","src":"88:12:14"}],"id":5882,"name":"InheritanceSpecifier","src":"88:12:14"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":5947,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5883,"name":"ElementaryTypeName","src":"107:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":5884,"name":"Literal","src":"159:10:14"}],"id":5885,"name":"VariableDeclaration","src":"107:62:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5891,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5886,"name":"ElementaryTypeName","src":"201:7:14"}],"id":5887,"name":"VariableDeclaration","src":"201:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":5891,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5888,"name":"ElementaryTypeName","src":"223:5:14"}],"id":5889,"name":"VariableDeclaration","src":"223:10:14"}],"id":5890,"name":"ParameterList","src":"200:34:14"}],"id":5891,"name":"EventDefinition","src":"176:59:14"},{"attributes":{"constant":false,"name":"hashes","scope":5947,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5892,"name":"ElementaryTypeName","src":"249:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":5893,"name":"ElementaryTypeName","src":"258:5:14"}],"id":5894,"name":"Mapping","src":"241:23:14"}],"id":5895,"name":"VariableDeclaration","src":"241:30:14"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":5947,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5917,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5896,"name":"ElementaryTypeName","src":"529:7:14"}],"id":5897,"name":"VariableDeclaration","src":"529:12:14"},{"attributes":{"constant":false,"name":"hash","scope":5917,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5898,"name":"ElementaryTypeName","src":"543:5:14"}],"id":5899,"name":"VariableDeclaration","src":"543:19:14"}],"id":5900,"name":"ParameterList","src":"528:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":5904,"name":"ParameterList","src":"590:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":5901,"name":"Identifier","src":"573:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5897,"type":"bytes32","value":"node"},"id":5902,"name":"Identifier","src":"584:4:14"}],"id":5903,"name":"ModifierInvocation","src":"573:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5905,"name":"Identifier","src":"600:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5897,"type":"bytes32","value":"node"},"id":5906,"name":"Identifier","src":"607:4:14"}],"id":5907,"name":"IndexAccess","src":"600:12:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5899,"type":"bytes calldata","value":"hash"},"id":5908,"name":"Identifier","src":"615:4:14"}],"id":5909,"name":"Assignment","src":"600:19:14"}],"id":5910,"name":"ExpressionStatement","src":"600:19:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5891,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":5911,"name":"Identifier","src":"634:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5897,"type":"bytes32","value":"node"},"id":5912,"name":"Identifier","src":"653:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5899,"type":"bytes calldata","value":"hash"},"id":5913,"name":"Identifier","src":"659:4:14"}],"id":5914,"name":"FunctionCall","src":"634:30:14"}],"id":5915,"name":"EmitStatement","src":"629:35:14"}],"id":5916,"name":"Block","src":"590:81:14"}],"id":5917,"name":"FunctionDefinition","src":"505:166:14"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":5947,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5929,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5918,"name":"ElementaryTypeName","src":"859:7:14"}],"id":5919,"name":"VariableDeclaration","src":"859:12:14"}],"id":5920,"name":"ParameterList","src":"858:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5929,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5921,"name":"ElementaryTypeName","src":"896:5:14"}],"id":5922,"name":"VariableDeclaration","src":"896:12:14"}],"id":5923,"name":"ParameterList","src":"895:14:14"},{"children":[{"attributes":{"functionReturnParameters":5923},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5895,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5924,"name":"Identifier","src":"927:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5919,"type":"bytes32","value":"node"},"id":5925,"name":"Identifier","src":"934:4:14"}],"id":5926,"name":"IndexAccess","src":"927:12:14"}],"id":5927,"name":"Return","src":"920:19:14"}],"id":5928,"name":"Block","src":"910:36:14"}],"id":5929,"name":"FunctionDefinition","src":"838:108:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5947,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5946,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5930,"name":"ElementaryTypeName","src":"979:6:14"}],"id":5931,"name":"VariableDeclaration","src":"979:18:14"}],"id":5932,"name":"ParameterList","src":"978:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5946,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5933,"name":"ElementaryTypeName","src":"1019:4:14"}],"id":5934,"name":"VariableDeclaration","src":"1019:4:14"}],"id":5935,"name":"ParameterList","src":"1018:6:14"},{"children":[{"attributes":{"functionReturnParameters":5935},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5931,"type":"bytes4","value":"interfaceID"},"id":5936,"name":"Identifier","src":"1042:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5885,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":5937,"name":"Identifier","src":"1057:25:14"}],"id":5938,"name":"BinaryOperation","src":"1042:40:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10154,"type":"contract super ContentHashResolver","value":"super"},"id":5939,"name":"Identifier","src":"1086:5:14"}],"id":5940,"name":"MemberAccess","src":"1086:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5931,"type":"bytes4","value":"interfaceID"},"id":5941,"name":"Identifier","src":"1110:11:14"}],"id":5942,"name":"FunctionCall","src":"1086:36:14"}],"id":5943,"name":"BinaryOperation","src":"1042:80:14"}],"id":5944,"name":"Return","src":"1035:87:14"}],"id":5945,"name":"Block","src":"1025:104:14"}],"id":5946,"name":"FunctionDefinition","src":"952:177:14"}],"id":5947,"name":"ContractDefinition","src":"56:1075:14"}],"id":5948,"name":"SourceUnit","src":"0:1132:14"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[6438]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5949,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6439,"symbolAliases":[null],"unitAlias":""},"id":5950,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":9374,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":6439,"symbolAliases":[null],"unitAlias":""},"id":5951,"name":"ImportDirective","src":"55:24:15"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6438,8755],"name":"DNSResolver","scope":6439},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":5952,"name":"UserDefinedTypeName","src":"105:12:15"}],"id":5953,"name":"InheritanceSpecifier","src":"105:12:15"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":9373,"type":"library RRUtils"},"id":5954,"name":"UserDefinedTypeName","src":"130:7:15"}],"id":5955,"name":"UsingForDirective","src":"124:20:15"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10094,"type":"library ENSBytesUtils"},"id":5956,"name":"UserDefinedTypeName","src":"155:13:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5957,"name":"ElementaryTypeName","src":"173:5:15"}],"id":5958,"name":"UsingForDirective","src":"149:30:15"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":6438,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5959,"name":"ElementaryTypeName","src":"185:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":5960,"name":"Literal","src":"235:10:15"}],"id":5961,"name":"VariableDeclaration","src":"185:60:15"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":6438,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5962,"name":"ElementaryTypeName","src":"251:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":5963,"name":"Literal","src":"299:10:15"}],"id":5964,"name":"VariableDeclaration","src":"251:58:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5974,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5965,"name":"ElementaryTypeName","src":"430:7:15"}],"id":5966,"name":"VariableDeclaration","src":"430:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5974,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5967,"name":"ElementaryTypeName","src":"452:5:15"}],"id":5968,"name":"VariableDeclaration","src":"452:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5974,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5969,"name":"ElementaryTypeName","src":"464:6:15"}],"id":5970,"name":"VariableDeclaration","src":"464:15:15"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":5974,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5971,"name":"ElementaryTypeName","src":"481:5:15"}],"id":5972,"name":"VariableDeclaration","src":"481:12:15"}],"id":5973,"name":"ParameterList","src":"429:65:15"}],"id":5974,"name":"EventDefinition","src":"407:88:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5982,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5975,"name":"ElementaryTypeName","src":"614:7:15"}],"id":5976,"name":"VariableDeclaration","src":"614:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5982,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5977,"name":"ElementaryTypeName","src":"636:5:15"}],"id":5978,"name":"VariableDeclaration","src":"636:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5982,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5979,"name":"ElementaryTypeName","src":"648:6:15"}],"id":5980,"name":"VariableDeclaration","src":"648:15:15"}],"id":5981,"name":"ParameterList","src":"613:51:15"}],"id":5982,"name":"EventDefinition","src":"591:74:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5983,"name":"ElementaryTypeName","src":"777:7:15"}],"id":5984,"name":"VariableDeclaration","src":"777:20:15"}],"id":5985,"name":"ParameterList","src":"776:22:15"}],"id":5986,"name":"EventDefinition","src":"756:43:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5994,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5987,"name":"ElementaryTypeName","src":"913:7:15"}],"id":5988,"name":"VariableDeclaration","src":"913:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":5994,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5989,"name":"ElementaryTypeName","src":"935:5:15"}],"id":5990,"name":"VariableDeclaration","src":"935:18:15"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":5994,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5991,"name":"ElementaryTypeName","src":"955:5:15"}],"id":5992,"name":"VariableDeclaration","src":"955:14:15"}],"id":5993,"name":"ParameterList","src":"912:58:15"}],"id":5994,"name":"EventDefinition","src":"888:83:15"},{"attributes":{"constant":false,"name":"zonehashes","scope":6438,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5995,"name":"ElementaryTypeName","src":"1181:7:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5996,"name":"ElementaryTypeName","src":"1190:5:15"}],"id":5997,"name":"Mapping","src":"1173:23:15"}],"id":5998,"name":"VariableDeclaration","src":"1173:42:15"},{"attributes":{"constant":false,"name":"versions","scope":6438,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5999,"name":"ElementaryTypeName","src":"1433:7:15"},{"attributes":{"name":"uint256","type":"uint256"},"id":6000,"name":"ElementaryTypeName","src":"1442:7:15"}],"id":6001,"name":"Mapping","src":"1425:25:15"}],"id":6002,"name":"VariableDeclaration","src":"1425:42:15"},{"attributes":{"constant":false,"name":"records","scope":6438,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6003,"name":"ElementaryTypeName","src":"1589:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6004,"name":"ElementaryTypeName","src":"1606:7:15"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6005,"name":"ElementaryTypeName","src":"1623:7:15"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6006,"name":"ElementaryTypeName","src":"1640:6:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6007,"name":"ElementaryTypeName","src":"1648:5:15"}],"id":6008,"name":"Mapping","src":"1632:22:15"}],"id":6009,"name":"Mapping","src":"1615:40:15"}],"id":6010,"name":"Mapping","src":"1598:58:15"}],"id":6011,"name":"Mapping","src":"1581:76:15"}],"id":6012,"name":"VariableDeclaration","src":"1581:92:15"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":6438,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6013,"name":"ElementaryTypeName","src":"1853:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6014,"name":"ElementaryTypeName","src":"1870:7:15"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6015,"name":"ElementaryTypeName","src":"1887:7:15"},{"attributes":{"name":"uint16","type":"uint16"},"id":6016,"name":"ElementaryTypeName","src":"1896:6:15"}],"id":6017,"name":"Mapping","src":"1879:24:15"}],"id":6018,"name":"Mapping","src":"1862:42:15"}],"id":6019,"name":"Mapping","src":"1845:60:15"}],"id":6020,"name":"VariableDeclaration","src":"1845:85:15"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":6438,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6185,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6021,"name":"ElementaryTypeName","src":"2877:7:15"}],"id":6022,"name":"VariableDeclaration","src":"2877:12:15"},{"attributes":{"constant":false,"name":"data","scope":6185,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6023,"name":"ElementaryTypeName","src":"2891:5:15"}],"id":6024,"name":"VariableDeclaration","src":"2891:19:15"}],"id":6025,"name":"ParameterList","src":"2876:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6029,"name":"ParameterList","src":"2938:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6026,"name":"Identifier","src":"2921:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"bytes32","value":"node"},"id":6027,"name":"Identifier","src":"2932:4:15"}],"id":6028,"name":"ModifierInvocation","src":"2921:16:15"},{"children":[{"attributes":{"assignments":[6031]},"children":[{"attributes":{"constant":false,"name":"resource","scope":6184,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6030,"name":"ElementaryTypeName","src":"2948:6:15"}],"id":6031,"name":"VariableDeclaration","src":"2948:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6032,"name":"Literal","src":"2966:1:15"}],"id":6033,"name":"VariableDeclarationStatement","src":"2948:19:15"},{"attributes":{"assignments":[6035]},"children":[{"attributes":{"constant":false,"name":"offset","scope":6184,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6034,"name":"ElementaryTypeName","src":"2977:7:15"}],"id":6035,"name":"VariableDeclaration","src":"2977:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6036,"name":"Literal","src":"2994:1:15"}],"id":6037,"name":"VariableDeclarationStatement","src":"2977:18:15"},{"attributes":{"assignments":[6039],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":6184,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6038,"name":"ElementaryTypeName","src":"3005:5:15"}],"id":6039,"name":"VariableDeclaration","src":"3005:17:15"}],"id":6040,"name":"VariableDeclarationStatement","src":"3005:17:15"},{"attributes":{"assignments":[6042],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":6184,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6041,"name":"ElementaryTypeName","src":"3032:5:15"}],"id":6042,"name":"VariableDeclaration","src":"3032:18:15"}],"id":6043,"name":"VariableDeclarationStatement","src":"3032:18:15"},{"attributes":{"assignments":[6045],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6184,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6044,"name":"ElementaryTypeName","src":"3060:7:15"}],"id":6045,"name":"VariableDeclaration","src":"3060:16:15"}],"id":6046,"name":"VariableDeclarationStatement","src":"3060:16:15"},{"children":[{"attributes":{"assignments":[6050]},"children":[{"attributes":{"constant":false,"name":"iter","scope":6161,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":8894,"type":"struct RRUtils.RRIterator"},"id":6049,"name":"UserDefinedTypeName","src":"3152:18:15"}],"id":6050,"name":"VariableDeclaration","src":"3152:30:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":8920,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"bytes calldata","value":"data"},"id":6051,"name":"Identifier","src":"3185:4:15"}],"id":6052,"name":"MemberAccess","src":"3185:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6053,"name":"Literal","src":"3201:1:15"}],"id":6054,"name":"FunctionCall","src":"3185:18:15"}],"id":6055,"name":"VariableDeclarationStatement","src":"3152:51:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":8935,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6056,"name":"Identifier","src":"3206:4:15"}],"id":6057,"name":"MemberAccess","src":"3206:9:15"}],"id":6058,"name":"FunctionCall","src":"3206:11:15"}],"id":6059,"name":"UnaryOperation","src":"3205:12:15"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":9037,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6060,"name":"Identifier","src":"3219:4:15"}],"id":6061,"name":"MemberAccess","src":"3219:9:15"}],"id":6062,"name":"FunctionCall","src":"3219:11:15"}],"id":6063,"name":"ExpressionStatement","src":"3219:11:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6064,"name":"Identifier","src":"3250:8:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6065,"name":"Literal","src":"3262:1:15"}],"id":6066,"name":"BinaryOperation","src":"3250:13:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6067,"name":"Identifier","src":"3283:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8885,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6068,"name":"Identifier","src":"3294:4:15"}],"id":6069,"name":"MemberAccess","src":"3294:12:15"}],"id":6070,"name":"Assignment","src":"3283:23:15"}],"id":6071,"name":"ExpressionStatement","src":"3283:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6072,"name":"Identifier","src":"3324:4:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9058,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6073,"name":"Identifier","src":"3331:4:15"}],"id":6074,"name":"MemberAccess","src":"3331:9:15"}],"id":6075,"name":"FunctionCall","src":"3331:11:15"}],"id":6076,"name":"Assignment","src":"3324:18:15"}],"id":6077,"name":"ExpressionStatement","src":"3324:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6045,"type":"bytes32","value":"nameHash"},"id":6078,"name":"Identifier","src":"3360:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6079,"name":"Identifier","src":"3371:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":6080,"name":"Identifier","src":"3381:3:15"}],"id":6081,"name":"MemberAccess","src":"3381:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6082,"name":"Identifier","src":"3398:4:15"}],"id":6083,"name":"FunctionCall","src":"3381:22:15"}],"id":6084,"name":"FunctionCall","src":"3371:33:15"}],"id":6085,"name":"Assignment","src":"3360:44:15"}],"id":6086,"name":"ExpressionStatement","src":"3360:44:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"bytes memory","value":"value"},"id":6087,"name":"Identifier","src":"3422:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6088,"name":"ElementaryTypeNameExpression","src":"3430:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9078,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6089,"name":"Identifier","src":"3436:4:15"}],"id":6090,"name":"MemberAccess","src":"3436:10:15"}],"id":6091,"name":"FunctionCall","src":"3436:12:15"}],"id":6092,"name":"FunctionCall","src":"3430:19:15"}],"id":6093,"name":"Assignment","src":"3422:27:15"}],"id":6094,"name":"ExpressionStatement","src":"3422:27:15"}],"id":6095,"name":"Block","src":"3265:199:15"},{"children":[{"attributes":{"assignments":[6097]},"children":[{"attributes":{"constant":false,"name":"newName","scope":6158,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6096,"name":"ElementaryTypeName","src":"3488:5:15"}],"id":6097,"name":"VariableDeclaration","src":"3488:20:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9058,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6098,"name":"Identifier","src":"3511:4:15"}],"id":6099,"name":"MemberAccess","src":"3511:9:15"}],"id":6100,"name":"FunctionCall","src":"3511:11:15"}],"id":6101,"name":"VariableDeclarationStatement","src":"3488:34:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6102,"name":"Identifier","src":"3544:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8885,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6103,"name":"Identifier","src":"3556:4:15"}],"id":6104,"name":"MemberAccess","src":"3556:12:15"}],"id":6105,"name":"BinaryOperation","src":"3544:24:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9664,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6106,"name":"Identifier","src":"3573:4:15"}],"id":6107,"name":"MemberAccess","src":"3573:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6097,"type":"bytes memory","value":"newName"},"id":6108,"name":"Identifier","src":"3585:7:15"}],"id":6109,"name":"FunctionCall","src":"3573:20:15"}],"id":6110,"name":"UnaryOperation","src":"3572:21:15"}],"id":6111,"name":"BinaryOperation","src":"3544:49:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6437,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6112,"name":"Identifier","src":"3617:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"bytes32","value":"node"},"id":6113,"name":"Identifier","src":"3629:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6114,"name":"Identifier","src":"3635:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6115,"name":"Identifier","src":"3641:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"bytes calldata","value":"data"},"id":6116,"name":"Identifier","src":"3651:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6117,"name":"Identifier","src":"3657:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6118,"name":"Identifier","src":"3665:4:15"}],"id":6119,"name":"MemberAccess","src":"3665:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6120,"name":"Identifier","src":"3679:6:15"}],"id":6121,"name":"BinaryOperation","src":"3665:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"bytes memory","value":"value"},"id":6122,"name":"Identifier","src":"3687:5:15"}],"id":6123,"name":"MemberAccess","src":"3687:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6124,"name":"Literal","src":"3703:1:15"}],"id":6125,"name":"BinaryOperation","src":"3687:17:15"}],"id":6126,"name":"FunctionCall","src":"3617:88:15"}],"id":6127,"name":"ExpressionStatement","src":"3617:88:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6128,"name":"Identifier","src":"3727:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":8885,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6129,"name":"Identifier","src":"3738:4:15"}],"id":6130,"name":"MemberAccess","src":"3738:12:15"}],"id":6131,"name":"Assignment","src":"3727:23:15"}],"id":6132,"name":"ExpressionStatement","src":"3727:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6133,"name":"Identifier","src":"3772:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":8883,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6134,"name":"Identifier","src":"3781:4:15"}],"id":6135,"name":"MemberAccess","src":"3781:11:15"}],"id":6136,"name":"Assignment","src":"3772:20:15"}],"id":6137,"name":"ExpressionStatement","src":"3772:20:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6138,"name":"Identifier","src":"3814:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6097,"type":"bytes memory","value":"newName"},"id":6139,"name":"Identifier","src":"3821:7:15"}],"id":6140,"name":"Assignment","src":"3814:14:15"}],"id":6141,"name":"ExpressionStatement","src":"3814:14:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6045,"type":"bytes32","value":"nameHash"},"id":6142,"name":"Identifier","src":"3850:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6143,"name":"Identifier","src":"3861:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6144,"name":"Identifier","src":"3871:4:15"}],"id":6145,"name":"FunctionCall","src":"3861:15:15"}],"id":6146,"name":"Assignment","src":"3850:26:15"}],"id":6147,"name":"ExpressionStatement","src":"3850:26:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"bytes memory","value":"value"},"id":6148,"name":"Identifier","src":"3898:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6149,"name":"ElementaryTypeNameExpression","src":"3906:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9078,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6050,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6150,"name":"Identifier","src":"3912:4:15"}],"id":6151,"name":"MemberAccess","src":"3912:10:15"}],"id":6152,"name":"FunctionCall","src":"3912:12:15"}],"id":6153,"name":"FunctionCall","src":"3906:19:15"}],"id":6154,"name":"Assignment","src":"3898:27:15"}],"id":6155,"name":"ExpressionStatement","src":"3898:27:15"}],"id":6156,"name":"Block","src":"3595:349:15"}],"id":6157,"name":"IfStatement","src":"3540:404:15"}],"id":6158,"name":"Block","src":"3470:488:15"}],"id":6159,"name":"IfStatement","src":"3246:712:15"}],"id":6160,"name":"Block","src":"3232:736:15"}],"id":6161,"name":"ForStatement","src":"3147:821:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6162,"name":"Identifier","src":"3981:4:15"}],"id":6163,"name":"MemberAccess","src":"3981:11:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6164,"name":"Literal","src":"3995:1:15"}],"id":6165,"name":"BinaryOperation","src":"3981:15:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6437,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6166,"name":"Identifier","src":"4012:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"bytes32","value":"node"},"id":6167,"name":"Identifier","src":"4024:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6039,"type":"bytes memory","value":"name"},"id":6168,"name":"Identifier","src":"4030:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6031,"type":"uint16","value":"resource"},"id":6169,"name":"Identifier","src":"4036:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"bytes calldata","value":"data"},"id":6170,"name":"Identifier","src":"4046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6171,"name":"Identifier","src":"4052:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"bytes calldata","value":"data"},"id":6172,"name":"Identifier","src":"4060:4:15"}],"id":6173,"name":"MemberAccess","src":"4060:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6035,"type":"uint256","value":"offset"},"id":6174,"name":"Identifier","src":"4074:6:15"}],"id":6175,"name":"BinaryOperation","src":"4060:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6042,"type":"bytes memory","value":"value"},"id":6176,"name":"Identifier","src":"4082:5:15"}],"id":6177,"name":"MemberAccess","src":"4082:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6178,"name":"Literal","src":"4098:1:15"}],"id":6179,"name":"BinaryOperation","src":"4082:17:15"}],"id":6180,"name":"FunctionCall","src":"4012:88:15"}],"id":6181,"name":"ExpressionStatement","src":"4012:88:15"}],"id":6182,"name":"Block","src":"3998:113:15"}],"id":6183,"name":"IfStatement","src":"3977:134:15"}],"id":6184,"name":"Block","src":"2938:1179:15"}],"id":6185,"name":"FunctionDefinition","src":"2854:1263:15"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":6438,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6209,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6186,"name":"ElementaryTypeName","src":"4538:7:15"}],"id":6187,"name":"VariableDeclaration","src":"4538:12:15"},{"attributes":{"constant":false,"name":"name","scope":6209,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6188,"name":"ElementaryTypeName","src":"4552:7:15"}],"id":6189,"name":"VariableDeclaration","src":"4552:12:15"},{"attributes":{"constant":false,"name":"resource","scope":6209,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6190,"name":"ElementaryTypeName","src":"4566:6:15"}],"id":6191,"name":"VariableDeclaration","src":"4566:15:15"}],"id":6192,"name":"ParameterList","src":"4537:45:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6209,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6193,"name":"ElementaryTypeName","src":"4604:5:15"}],"id":6194,"name":"VariableDeclaration","src":"4604:12:15"}],"id":6195,"name":"ParameterList","src":"4603:14:15"},{"children":[{"attributes":{"functionReturnParameters":6195},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6196,"name":"Identifier","src":"4635:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6187,"type":"bytes32","value":"node"},"id":6197,"name":"Identifier","src":"4643:4:15"}],"id":6198,"name":"IndexAccess","src":"4635:13:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6002,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6199,"name":"Identifier","src":"4649:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6187,"type":"bytes32","value":"node"},"id":6200,"name":"Identifier","src":"4658:4:15"}],"id":6201,"name":"IndexAccess","src":"4649:14:15"}],"id":6202,"name":"IndexAccess","src":"4635:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6189,"type":"bytes32","value":"name"},"id":6203,"name":"Identifier","src":"4665:4:15"}],"id":6204,"name":"IndexAccess","src":"4635:35:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6191,"type":"uint16","value":"resource"},"id":6205,"name":"Identifier","src":"4671:8:15"}],"id":6206,"name":"IndexAccess","src":"4635:45:15"}],"id":6207,"name":"Return","src":"4628:52:15"}],"id":6208,"name":"Block","src":"4618:69:15"}],"id":6209,"name":"FunctionDefinition","src":"4519:168:15"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":6438,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6232,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6210,"name":"ElementaryTypeName","src":"4924:7:15"}],"id":6211,"name":"VariableDeclaration","src":"4924:12:15"},{"attributes":{"constant":false,"name":"name","scope":6232,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6212,"name":"ElementaryTypeName","src":"4938:7:15"}],"id":6213,"name":"VariableDeclaration","src":"4938:12:15"}],"id":6214,"name":"ParameterList","src":"4923:28:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6232,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6215,"name":"ElementaryTypeName","src":"4973:4:15"}],"id":6216,"name":"VariableDeclaration","src":"4973:4:15"}],"id":6217,"name":"ParameterList","src":"4972:6:15"},{"children":[{"attributes":{"functionReturnParameters":6217},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6218,"name":"Identifier","src":"4997:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6211,"type":"bytes32","value":"node"},"id":6219,"name":"Identifier","src":"5014:4:15"}],"id":6220,"name":"IndexAccess","src":"4997:22:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6002,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6221,"name":"Identifier","src":"5020:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6211,"type":"bytes32","value":"node"},"id":6222,"name":"Identifier","src":"5029:4:15"}],"id":6223,"name":"IndexAccess","src":"5020:14:15"}],"id":6224,"name":"IndexAccess","src":"4997:38:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6213,"type":"bytes32","value":"name"},"id":6225,"name":"Identifier","src":"5036:4:15"}],"id":6226,"name":"IndexAccess","src":"4997:44:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6227,"name":"Literal","src":"5045:1:15"}],"id":6228,"name":"BinaryOperation","src":"4997:49:15"}],"id":6229,"name":"TupleExpression","src":"4996:51:15"}],"id":6230,"name":"Return","src":"4989:58:15"}],"id":6231,"name":"Block","src":"4979:75:15"}],"id":6232,"name":"FunctionDefinition","src":"4901:153:15"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":6438,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6250,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6233,"name":"ElementaryTypeName","src":"5215:7:15"}],"id":6234,"name":"VariableDeclaration","src":"5215:12:15"}],"id":6235,"name":"ParameterList","src":"5214:14:15"},{"attributes":{"parameters":[null]},"children":[],"id":6239,"name":"ParameterList","src":"5253:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6236,"name":"Identifier","src":"5236:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes32","value":"node"},"id":6237,"name":"Identifier","src":"5247:4:15"}],"id":6238,"name":"ModifierInvocation","src":"5236:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6002,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6240,"name":"Identifier","src":"5263:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes32","value":"node"},"id":6241,"name":"Identifier","src":"5272:4:15"}],"id":6242,"name":"IndexAccess","src":"5263:14:15"}],"id":6243,"name":"UnaryOperation","src":"5263:16:15"}],"id":6244,"name":"ExpressionStatement","src":"5263:16:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5986,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":6245,"name":"Identifier","src":"5294:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes32","value":"node"},"id":6246,"name":"Identifier","src":"5309:4:15"}],"id":6247,"name":"FunctionCall","src":"5294:20:15"}],"id":6248,"name":"EmitStatement","src":"5289:25:15"}],"id":6249,"name":"Block","src":"5253:68:15"}],"id":6250,"name":"FunctionDefinition","src":"5193:128:15"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":6438,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6279,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6251,"name":"ElementaryTypeName","src":"5562:7:15"}],"id":6252,"name":"VariableDeclaration","src":"5562:12:15"},{"attributes":{"constant":false,"name":"hash","scope":6279,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6253,"name":"ElementaryTypeName","src":"5576:5:15"}],"id":6254,"name":"VariableDeclaration","src":"5576:19:15"}],"id":6255,"name":"ParameterList","src":"5561:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6259,"name":"ParameterList","src":"5623:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6256,"name":"Identifier","src":"5606:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6252,"type":"bytes32","value":"node"},"id":6257,"name":"Identifier","src":"5617:4:15"}],"id":6258,"name":"ModifierInvocation","src":"5606:16:15"},{"children":[{"attributes":{"assignments":[6261]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":6278,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6260,"name":"ElementaryTypeName","src":"5633:5:15"}],"id":6261,"name":"VariableDeclaration","src":"5633:20:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5998,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6262,"name":"Identifier","src":"5656:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6252,"type":"bytes32","value":"node"},"id":6263,"name":"Identifier","src":"5667:4:15"}],"id":6264,"name":"IndexAccess","src":"5656:16:15"}],"id":6265,"name":"VariableDeclarationStatement","src":"5633:39:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5998,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6266,"name":"Identifier","src":"5682:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6252,"type":"bytes32","value":"node"},"id":6267,"name":"Identifier","src":"5693:4:15"}],"id":6268,"name":"IndexAccess","src":"5682:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6254,"type":"bytes calldata","value":"hash"},"id":6269,"name":"Identifier","src":"5701:4:15"}],"id":6270,"name":"Assignment","src":"5682:23:15"}],"id":6271,"name":"ExpressionStatement","src":"5682:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5994,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":6272,"name":"Identifier","src":"5720:18:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6252,"type":"bytes32","value":"node"},"id":6273,"name":"Identifier","src":"5739:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6261,"type":"bytes memory","value":"oldhash"},"id":6274,"name":"Identifier","src":"5745:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6254,"type":"bytes calldata","value":"hash"},"id":6275,"name":"Identifier","src":"5754:4:15"}],"id":6276,"name":"FunctionCall","src":"5720:39:15"}],"id":6277,"name":"EmitStatement","src":"5715:44:15"}],"id":6278,"name":"Block","src":"5623:143:15"}],"id":6279,"name":"FunctionDefinition","src":"5541:225:15"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":6438,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6291,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6280,"name":"ElementaryTypeName","src":"5938:7:15"}],"id":6281,"name":"VariableDeclaration","src":"5938:12:15"}],"id":6282,"name":"ParameterList","src":"5937:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6291,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6283,"name":"ElementaryTypeName","src":"5975:5:15"}],"id":6284,"name":"VariableDeclaration","src":"5975:12:15"}],"id":6285,"name":"ParameterList","src":"5974:14:15"},{"children":[{"attributes":{"functionReturnParameters":6285},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5998,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6286,"name":"Identifier","src":"6006:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6281,"type":"bytes32","value":"node"},"id":6287,"name":"Identifier","src":"6017:4:15"}],"id":6288,"name":"IndexAccess","src":"6006:16:15"}],"id":6289,"name":"Return","src":"5999:23:15"}],"id":6290,"name":"Block","src":"5989:40:15"}],"id":6291,"name":"FunctionDefinition","src":"5920:109:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6438,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6312,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6292,"name":"ElementaryTypeName","src":"6062:6:15"}],"id":6293,"name":"VariableDeclaration","src":"6062:18:15"}],"id":6294,"name":"ParameterList","src":"6061:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6312,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6295,"name":"ElementaryTypeName","src":"6102:4:15"}],"id":6296,"name":"VariableDeclaration","src":"6102:4:15"}],"id":6297,"name":"ParameterList","src":"6101:6:15"},{"children":[{"attributes":{"functionReturnParameters":6297},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"bytes4","value":"interfaceID"},"id":6298,"name":"Identifier","src":"6125:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5961,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":6299,"name":"Identifier","src":"6140:23:15"}],"id":6300,"name":"BinaryOperation","src":"6125:38:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"bytes4","value":"interfaceID"},"id":6301,"name":"Identifier","src":"6182:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5964,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":6302,"name":"Identifier","src":"6197:21:15"}],"id":6303,"name":"BinaryOperation","src":"6182:36:15"}],"id":6304,"name":"BinaryOperation","src":"6125:93:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10158,"type":"contract super DNSResolver","value":"super"},"id":6305,"name":"Identifier","src":"6237:5:15"}],"id":6306,"name":"MemberAccess","src":"6237:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"bytes4","value":"interfaceID"},"id":6307,"name":"Identifier","src":"6261:11:15"}],"id":6308,"name":"FunctionCall","src":"6237:36:15"}],"id":6309,"name":"BinaryOperation","src":"6125:148:15"}],"id":6310,"name":"Return","src":"6118:155:15"}],"id":6311,"name":"Block","src":"6108:172:15"}],"id":6312,"name":"FunctionDefinition","src":"6035:245:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":6438,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6437,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6313,"name":"ElementaryTypeName","src":"6316:7:15"}],"id":6314,"name":"VariableDeclaration","src":"6316:12:15"},{"attributes":{"constant":false,"name":"name","scope":6437,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6315,"name":"ElementaryTypeName","src":"6338:5:15"}],"id":6316,"name":"VariableDeclaration","src":"6338:17:15"},{"attributes":{"constant":false,"name":"resource","scope":6437,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6317,"name":"ElementaryTypeName","src":"6365:6:15"}],"id":6318,"name":"VariableDeclaration","src":"6365:15:15"},{"attributes":{"constant":false,"name":"data","scope":6437,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6319,"name":"ElementaryTypeName","src":"6390:5:15"}],"id":6320,"name":"VariableDeclaration","src":"6390:17:15"},{"attributes":{"constant":false,"name":"offset","scope":6437,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6321,"name":"ElementaryTypeName","src":"6417:7:15"}],"id":6322,"name":"VariableDeclaration","src":"6417:14:15"},{"attributes":{"constant":false,"name":"size","scope":6437,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6323,"name":"ElementaryTypeName","src":"6441:7:15"}],"id":6324,"name":"VariableDeclaration","src":"6441:12:15"},{"attributes":{"constant":false,"name":"deleteRecord","scope":6437,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6325,"name":"ElementaryTypeName","src":"6463:4:15"}],"id":6326,"name":"VariableDeclaration","src":"6463:17:15"}],"id":6327,"name":"ParameterList","src":"6306:175:15"},{"attributes":{"parameters":[null]},"children":[],"id":6328,"name":"ParameterList","src":"6494:0:15"},{"children":[{"attributes":{"assignments":[6330]},"children":[{"attributes":{"constant":false,"name":"version","scope":6436,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6329,"name":"ElementaryTypeName","src":"6504:7:15"}],"id":6330,"name":"VariableDeclaration","src":"6504:15:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6002,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6331,"name":"Identifier","src":"6522:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6332,"name":"Identifier","src":"6531:4:15"}],"id":6333,"name":"IndexAccess","src":"6522:14:15"}],"id":6334,"name":"VariableDeclarationStatement","src":"6504:32:15"},{"attributes":{"assignments":[6336]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6436,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6335,"name":"ElementaryTypeName","src":"6546:7:15"}],"id":6336,"name":"VariableDeclaration","src":"6546:16:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6337,"name":"Identifier","src":"6565:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6316,"type":"bytes memory","value":"name"},"id":6338,"name":"Identifier","src":"6575:4:15"}],"id":6339,"name":"FunctionCall","src":"6565:15:15"}],"id":6340,"name":"VariableDeclarationStatement","src":"6546:34:15"},{"attributes":{"assignments":[6342]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":6436,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6341,"name":"ElementaryTypeName","src":"6590:5:15"}],"id":6342,"name":"VariableDeclaration","src":"6590:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":9871,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6320,"type":"bytes memory","value":"data"},"id":6343,"name":"Identifier","src":"6612:4:15"}],"id":6344,"name":"MemberAccess","src":"6612:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6322,"type":"uint256","value":"offset"},"id":6345,"name":"Identifier","src":"6627:6:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6324,"type":"uint256","value":"size"},"id":6346,"name":"Identifier","src":"6635:4:15"}],"id":6347,"name":"FunctionCall","src":"6612:28:15"}],"id":6348,"name":"VariableDeclarationStatement","src":"6590:50:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6326,"type":"bool","value":"deleteRecord"},"id":6349,"name":"Identifier","src":"6654:12:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6350,"name":"Identifier","src":"6686:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6351,"name":"Identifier","src":"6694:4:15"}],"id":6352,"name":"IndexAccess","src":"6686:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6353,"name":"Identifier","src":"6700:7:15"}],"id":6354,"name":"IndexAccess","src":"6686:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6355,"name":"Identifier","src":"6709:8:15"}],"id":6356,"name":"IndexAccess","src":"6686:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6357,"name":"Identifier","src":"6719:8:15"}],"id":6358,"name":"IndexAccess","src":"6686:42:15"}],"id":6359,"name":"MemberAccess","src":"6686:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6360,"name":"Literal","src":"6739:1:15"}],"id":6361,"name":"BinaryOperation","src":"6686:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6362,"name":"Identifier","src":"6760:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6363,"name":"Identifier","src":"6777:4:15"}],"id":6366,"name":"IndexAccess","src":"6760:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6364,"name":"Identifier","src":"6783:7:15"}],"id":6367,"name":"IndexAccess","src":"6760:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6365,"name":"Identifier","src":"6792:8:15"}],"id":6368,"name":"IndexAccess","src":"6760:41:15"}],"id":6369,"name":"UnaryOperation","src":"6760:43:15"}],"id":6370,"name":"ExpressionStatement","src":"6760:43:15"}],"id":6371,"name":"Block","src":"6742:76:15"}],"id":6372,"name":"IfStatement","src":"6682:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6373,"name":"Identifier","src":"6838:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6374,"name":"Identifier","src":"6846:4:15"}],"id":6375,"name":"IndexAccess","src":"6838:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6376,"name":"Identifier","src":"6852:7:15"}],"id":6377,"name":"IndexAccess","src":"6838:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6378,"name":"Identifier","src":"6861:8:15"}],"id":6379,"name":"IndexAccess","src":"6838:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6380,"name":"Identifier","src":"6871:8:15"}],"id":6381,"name":"IndexAccess","src":"6838:42:15"}],"id":6382,"name":"TupleExpression","src":"6837:44:15"}],"id":6383,"name":"UnaryOperation","src":"6831:50:15"}],"id":6384,"name":"ExpressionStatement","src":"6831:50:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":5982,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":6385,"name":"Identifier","src":"6900:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6386,"name":"Identifier","src":"6917:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6316,"type":"bytes memory","value":"name"},"id":6387,"name":"Identifier","src":"6923:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6388,"name":"Identifier","src":"6929:8:15"}],"id":6389,"name":"FunctionCall","src":"6900:38:15"}],"id":6390,"name":"EmitStatement","src":"6895:43:15"}],"id":6391,"name":"Block","src":"6668:281:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6392,"name":"Identifier","src":"6973:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6393,"name":"Identifier","src":"6981:4:15"}],"id":6394,"name":"IndexAccess","src":"6973:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6395,"name":"Identifier","src":"6987:7:15"}],"id":6396,"name":"IndexAccess","src":"6973:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6397,"name":"Identifier","src":"6996:8:15"}],"id":6398,"name":"IndexAccess","src":"6973:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6399,"name":"Identifier","src":"7006:8:15"}],"id":6400,"name":"IndexAccess","src":"6973:42:15"}],"id":6401,"name":"MemberAccess","src":"6973:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6402,"name":"Literal","src":"7026:1:15"}],"id":6403,"name":"BinaryOperation","src":"6973:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6404,"name":"Identifier","src":"7047:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6405,"name":"Identifier","src":"7064:4:15"}],"id":6408,"name":"IndexAccess","src":"7047:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6406,"name":"Identifier","src":"7070:7:15"}],"id":6409,"name":"IndexAccess","src":"7047:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6407,"name":"Identifier","src":"7079:8:15"}],"id":6410,"name":"IndexAccess","src":"7047:41:15"}],"id":6411,"name":"UnaryOperation","src":"7047:43:15"}],"id":6412,"name":"ExpressionStatement","src":"7047:43:15"}],"id":6413,"name":"Block","src":"7029:76:15"}],"id":6414,"name":"IfStatement","src":"6969:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6415,"name":"Identifier","src":"7118:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6416,"name":"Identifier","src":"7126:4:15"}],"id":6420,"name":"IndexAccess","src":"7118:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6330,"type":"uint256","value":"version"},"id":6417,"name":"Identifier","src":"7132:7:15"}],"id":6421,"name":"IndexAccess","src":"7118:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6336,"type":"bytes32","value":"nameHash"},"id":6418,"name":"Identifier","src":"7141:8:15"}],"id":6422,"name":"IndexAccess","src":"7118:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6419,"name":"Identifier","src":"7151:8:15"}],"id":6423,"name":"IndexAccess","src":"7118:42:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6342,"type":"bytes memory","value":"rrData"},"id":6424,"name":"Identifier","src":"7163:6:15"}],"id":6425,"name":"Assignment","src":"7118:51:15"}],"id":6426,"name":"ExpressionStatement","src":"7118:51:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5974,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":6427,"name":"Identifier","src":"7188:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6314,"type":"bytes32","value":"node"},"id":6428,"name":"Identifier","src":"7205:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6316,"type":"bytes memory","value":"name"},"id":6429,"name":"Identifier","src":"7211:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6318,"type":"uint16","value":"resource"},"id":6430,"name":"Identifier","src":"7217:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6342,"type":"bytes memory","value":"rrData"},"id":6431,"name":"Identifier","src":"7227:6:15"}],"id":6432,"name":"FunctionCall","src":"7188:46:15"}],"id":6433,"name":"EmitStatement","src":"7183:51:15"}],"id":6434,"name":"Block","src":"6955:290:15"}],"id":6435,"name":"IfStatement","src":"6650:595:15"}],"id":6436,"name":"Block","src":"6494:757:15"}],"id":6437,"name":"FunctionDefinition","src":"6286:965:15"}],"id":6438,"name":"ContractDefinition","src":"81:7172:15"}],"id":6439,"name":"SourceUnit","src":"0:7253:15"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[6625]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6440,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6626,"symbolAliases":[null],"unitAlias":""},"id":6441,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"SourceUnit":5878,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":6626,"symbolAliases":[null],"unitAlias":""},"id":6442,"name":"ImportDirective","src":"55:28:16"},{"attributes":{"contractDependencies":[5877,8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6625,5877,8755],"name":"InterfaceResolver","scope":6626},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":6443,"name":"UserDefinedTypeName","src":"115:12:16"}],"id":6444,"name":"InheritanceSpecifier","src":"115:12:16"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5877,"type":"contract AddrResolver"},"id":6445,"name":"UserDefinedTypeName","src":"129:12:16"}],"id":6446,"name":"InheritanceSpecifier","src":"129:12:16"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":6625,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6447,"name":"ElementaryTypeName","src":"148:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":6448,"name":"ElementaryTypeNameExpression","src":"197:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6449,"name":"Identifier","src":"204:9:16"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":6450,"name":"Literal","src":"214:38:16"}],"id":6451,"name":"FunctionCall","src":"204:49:16"}],"id":6452,"name":"FunctionCall","src":"197:57:16"}],"id":6453,"name":"VariableDeclaration","src":"148:106:16"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":6625,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6454,"name":"ElementaryTypeName","src":"260:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":6455,"name":"Literal","src":"304:10:16"}],"id":6456,"name":"VariableDeclaration","src":"260:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6464,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6457,"name":"ElementaryTypeName","src":"344:7:16"}],"id":6458,"name":"VariableDeclaration","src":"344:20:16"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":6464,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6459,"name":"ElementaryTypeName","src":"366:6:16"}],"id":6460,"name":"VariableDeclaration","src":"366:26:16"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":6464,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6461,"name":"ElementaryTypeName","src":"394:7:16"}],"id":6462,"name":"VariableDeclaration","src":"394:19:16"}],"id":6463,"name":"ParameterList","src":"343:71:16"}],"id":6464,"name":"EventDefinition","src":"321:94:16"},{"attributes":{"constant":false,"name":"interfaces","scope":6625,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6465,"name":"ElementaryTypeName","src":"429:7:16"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6466,"name":"ElementaryTypeName","src":"446:6:16"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6467,"name":"ElementaryTypeName","src":"454:7:16"}],"id":6468,"name":"Mapping","src":"438:24:16"}],"id":6469,"name":"Mapping","src":"421:42:16"}],"id":6470,"name":"VariableDeclaration","src":"421:53:16"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":6625,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6497,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6471,"name":"ElementaryTypeName","src":"880:7:16"}],"id":6472,"name":"VariableDeclaration","src":"880:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6497,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6473,"name":"ElementaryTypeName","src":"894:6:16"}],"id":6474,"name":"VariableDeclaration","src":"894:18:16"},{"attributes":{"constant":false,"name":"implementer","scope":6497,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6475,"name":"ElementaryTypeName","src":"914:7:16"}],"id":6476,"name":"VariableDeclaration","src":"914:19:16"}],"id":6477,"name":"ParameterList","src":"879:55:16"},{"attributes":{"parameters":[null]},"children":[],"id":6481,"name":"ParameterList","src":"961:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6478,"name":"Identifier","src":"944:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes32","value":"node"},"id":6479,"name":"Identifier","src":"955:4:16"}],"id":6480,"name":"ModifierInvocation","src":"944:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6482,"name":"Identifier","src":"971:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes32","value":"node"},"id":6483,"name":"Identifier","src":"982:4:16"}],"id":6485,"name":"IndexAccess","src":"971:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6474,"type":"bytes4","value":"interfaceID"},"id":6484,"name":"Identifier","src":"988:11:16"}],"id":6486,"name":"IndexAccess","src":"971:29:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6476,"type":"address","value":"implementer"},"id":6487,"name":"Identifier","src":"1003:11:16"}],"id":6488,"name":"Assignment","src":"971:43:16"}],"id":6489,"name":"ExpressionStatement","src":"971:43:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6464,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":6490,"name":"Identifier","src":"1029:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6472,"type":"bytes32","value":"node"},"id":6491,"name":"Identifier","src":"1046:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6474,"type":"bytes4","value":"interfaceID"},"id":6492,"name":"Identifier","src":"1052:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6476,"type":"address","value":"implementer"},"id":6493,"name":"Identifier","src":"1065:11:16"}],"id":6494,"name":"FunctionCall","src":"1029:48:16"}],"id":6495,"name":"EmitStatement","src":"1024:53:16"}],"id":6496,"name":"Block","src":"961:123:16"}],"id":6497,"name":"FunctionDefinition","src":"858:226:16"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":6625,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6607,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6498,"name":"ElementaryTypeName","src":"1751:7:16"}],"id":6499,"name":"VariableDeclaration","src":"1751:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6607,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6500,"name":"ElementaryTypeName","src":"1765:6:16"}],"id":6501,"name":"VariableDeclaration","src":"1765:18:16"}],"id":6502,"name":"ParameterList","src":"1750:34:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6607,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6503,"name":"ElementaryTypeName","src":"1808:7:16"}],"id":6504,"name":"VariableDeclaration","src":"1808:7:16"}],"id":6505,"name":"ParameterList","src":"1807:9:16"},{"children":[{"attributes":{"assignments":[6507]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":6606,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6506,"name":"ElementaryTypeName","src":"1827:7:16"}],"id":6507,"name":"VariableDeclaration","src":"1827:19:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6508,"name":"Identifier","src":"1849:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6499,"type":"bytes32","value":"node"},"id":6509,"name":"Identifier","src":"1860:4:16"}],"id":6510,"name":"IndexAccess","src":"1849:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6501,"type":"bytes4","value":"interfaceID"},"id":6511,"name":"Identifier","src":"1866:11:16"}],"id":6512,"name":"IndexAccess","src":"1849:29:16"}],"id":6513,"name":"VariableDeclarationStatement","src":"1827:51:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6507,"type":"address","value":"implementer"},"id":6514,"name":"Identifier","src":"1891:11:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6515,"name":"ElementaryTypeNameExpression","src":"1906:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6516,"name":"Literal","src":"1914:1:16"}],"id":6517,"name":"FunctionCall","src":"1906:10:16"}],"id":6518,"name":"BinaryOperation","src":"1891:25:16"},{"children":[{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6507,"type":"address","value":"implementer"},"id":6519,"name":"Identifier","src":"1939:11:16"}],"id":6520,"name":"Return","src":"1932:18:16"}],"id":6521,"name":"Block","src":"1918:43:16"}],"id":6522,"name":"IfStatement","src":"1888:73:16"},{"attributes":{"assignments":[6524]},"children":[{"attributes":{"constant":false,"name":"a","scope":6606,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6523,"name":"ElementaryTypeName","src":"1971:7:16"}],"id":6524,"name":"VariableDeclaration","src":"1971:9:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[5800,5855],"referencedDeclaration":5800,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":6525,"name":"Identifier","src":"1983:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6499,"type":"bytes32","value":"node"},"id":6526,"name":"Identifier","src":"1988:4:16"}],"id":6527,"name":"FunctionCall","src":"1983:10:16"}],"id":6528,"name":"VariableDeclarationStatement","src":"1971:22:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6524,"type":"address","value":"a"},"id":6529,"name":"Identifier","src":"2006:1:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6530,"name":"ElementaryTypeNameExpression","src":"2011:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6531,"name":"Literal","src":"2019:1:16"}],"id":6532,"name":"FunctionCall","src":"2011:10:16"}],"id":6533,"name":"BinaryOperation","src":"2006:15:16"},{"children":[{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6534,"name":"ElementaryTypeNameExpression","src":"2044:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6535,"name":"Literal","src":"2052:1:16"}],"id":6536,"name":"FunctionCall","src":"2044:10:16"}],"id":6537,"name":"Return","src":"2037:17:16"}],"id":6538,"name":"Block","src":"2023:42:16"}],"id":6539,"name":"IfStatement","src":"2003:62:16"},{"attributes":{"assignments":[6541,6543]},"children":[{"attributes":{"constant":false,"name":"success","scope":6606,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6540,"name":"ElementaryTypeName","src":"2076:4:16"}],"id":6541,"name":"VariableDeclaration","src":"2076:12:16"},{"attributes":{"constant":false,"name":"returnData","scope":6606,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6542,"name":"ElementaryTypeName","src":"2090:5:16"}],"id":6543,"name":"VariableDeclaration","src":"2090:23:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6524,"type":"address","value":"a"},"id":6544,"name":"Identifier","src":"2117:1:16"}],"id":6545,"name":"MemberAccess","src":"2117:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":6546,"name":"Identifier","src":"2130:3:16"}],"id":6547,"name":"MemberAccess","src":"2130:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6548,"name":"Literal","src":"2154:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6456,"type":"bytes4","value":"INTERFACE_META_ID"},"id":6549,"name":"Identifier","src":"2183:17:16"}],"id":6550,"name":"FunctionCall","src":"2130:71:16"}],"id":6551,"name":"FunctionCall","src":"2117:85:16"}],"id":6552,"name":"VariableDeclarationStatement","src":"2075:127:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6541,"type":"bool","value":"success"},"id":6553,"name":"Identifier","src":"2216:7:16"}],"id":6554,"name":"UnaryOperation","src":"2215:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6555,"name":"Identifier","src":"2227:10:16"}],"id":6556,"name":"MemberAccess","src":"2227:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6557,"name":"Literal","src":"2247:2:16"}],"id":6558,"name":"BinaryOperation","src":"2227:22:16"}],"id":6559,"name":"BinaryOperation","src":"2215:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6560,"name":"Identifier","src":"2253:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6561,"name":"Literal","src":"2264:2:16"}],"id":6562,"name":"IndexAccess","src":"2253:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6563,"name":"Literal","src":"2271:1:16"}],"id":6564,"name":"BinaryOperation","src":"2253:19:16"}],"id":6565,"name":"BinaryOperation","src":"2215:57:16"},{"children":[{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6566,"name":"ElementaryTypeNameExpression","src":"2342:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6567,"name":"Literal","src":"2350:1:16"}],"id":6568,"name":"FunctionCall","src":"2342:10:16"}],"id":6569,"name":"Return","src":"2335:17:16"}],"id":6570,"name":"Block","src":"2274:89:16"}],"id":6571,"name":"IfStatement","src":"2212:151:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6541,"type":"bool","value":"success"},"id":6572,"name":"Identifier","src":"2374:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6573,"name":"Identifier","src":"2383:10:16"}],"id":6574,"name":"TupleExpression","src":"2373:21:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6524,"type":"address","value":"a"},"id":6575,"name":"Identifier","src":"2397:1:16"}],"id":6576,"name":"MemberAccess","src":"2397:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":6577,"name":"Identifier","src":"2410:3:16"}],"id":6578,"name":"MemberAccess","src":"2410:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6579,"name":"Literal","src":"2434:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6501,"type":"bytes4","value":"interfaceID"},"id":6580,"name":"Identifier","src":"2463:11:16"}],"id":6581,"name":"FunctionCall","src":"2410:65:16"}],"id":6582,"name":"FunctionCall","src":"2397:79:16"}],"id":6583,"name":"Assignment","src":"2373:103:16"}],"id":6584,"name":"ExpressionStatement","src":"2373:103:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6541,"type":"bool","value":"success"},"id":6585,"name":"Identifier","src":"2490:7:16"}],"id":6586,"name":"UnaryOperation","src":"2489:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6587,"name":"Identifier","src":"2501:10:16"}],"id":6588,"name":"MemberAccess","src":"2501:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6589,"name":"Literal","src":"2521:2:16"}],"id":6590,"name":"BinaryOperation","src":"2501:22:16"}],"id":6591,"name":"BinaryOperation","src":"2489:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6543,"type":"bytes memory","value":"returnData"},"id":6592,"name":"Identifier","src":"2527:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6593,"name":"Literal","src":"2538:2:16"}],"id":6594,"name":"IndexAccess","src":"2527:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6595,"name":"Literal","src":"2545:1:16"}],"id":6596,"name":"BinaryOperation","src":"2527:19:16"}],"id":6597,"name":"BinaryOperation","src":"2489:57:16"},{"children":[{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6598,"name":"ElementaryTypeNameExpression","src":"2628:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6599,"name":"Literal","src":"2636:1:16"}],"id":6600,"name":"FunctionCall","src":"2628:10:16"}],"id":6601,"name":"Return","src":"2621:17:16"}],"id":6602,"name":"Block","src":"2548:101:16"}],"id":6603,"name":"IfStatement","src":"2486:163:16"},{"attributes":{"functionReturnParameters":6505},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6524,"type":"address","value":"a"},"id":6604,"name":"Identifier","src":"2666:1:16"}],"id":6605,"name":"Return","src":"2659:8:16"}],"id":6606,"name":"Block","src":"1817:857:16"}],"id":6607,"name":"FunctionDefinition","src":"1721:953:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6625,"stateMutability":"pure","superFunction":5876,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6624,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6608,"name":"ElementaryTypeName","src":"2707:6:16"}],"id":6609,"name":"VariableDeclaration","src":"2707:18:16"}],"id":6610,"name":"ParameterList","src":"2706:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":6624,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6611,"name":"ElementaryTypeName","src":"2747:4:16"}],"id":6612,"name":"VariableDeclaration","src":"2747:4:16"}],"id":6613,"name":"ParameterList","src":"2746:6:16"},{"children":[{"attributes":{"functionReturnParameters":6613},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6609,"type":"bytes4","value":"interfaceID"},"id":6614,"name":"Identifier","src":"2770:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6453,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":6615,"name":"Identifier","src":"2785:22:16"}],"id":6616,"name":"BinaryOperation","src":"2770:37:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5876,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10160,"type":"contract super InterfaceResolver","value":"super"},"id":6617,"name":"Identifier","src":"2811:5:16"}],"id":6618,"name":"MemberAccess","src":"2811:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6609,"type":"bytes4","value":"interfaceID"},"id":6619,"name":"Identifier","src":"2835:11:16"}],"id":6620,"name":"FunctionCall","src":"2811:36:16"}],"id":6621,"name":"BinaryOperation","src":"2770:77:16"}],"id":6622,"name":"Return","src":"2763:84:16"}],"id":6623,"name":"Block","src":"2753:101:16"}],"id":6624,"name":"FunctionDefinition","src":"2680:174:16"}],"id":6625,"name":"ContractDefinition","src":"85:2771:16"}],"id":6626,"name":"SourceUnit","src":"0:2857:16"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[6695]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6627,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6696,"symbolAliases":[null],"unitAlias":""},"id":6628,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6695,8755],"name":"NameResolver","scope":6696},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":6629,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":6630,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":6695,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6631,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":6632,"name":"Literal","src":"144:10:17"}],"id":6633,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6639,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6634,"name":"ElementaryTypeName","src":"179:7:17"}],"id":6635,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6639,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6636,"name":"ElementaryTypeName","src":"201:6:17"}],"id":6637,"name":"VariableDeclaration","src":"201:11:17"}],"id":6638,"name":"ParameterList","src":"178:35:17"}],"id":6639,"name":"EventDefinition","src":"161:53:17"},{"attributes":{"constant":false,"name":"names","scope":6695,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6640,"name":"ElementaryTypeName","src":"228:7:17"},{"attributes":{"name":"string","type":"string"},"id":6641,"name":"ElementaryTypeName","src":"237:6:17"}],"id":6642,"name":"Mapping","src":"220:24:17"}],"id":6643,"name":"VariableDeclaration","src":"220:30:17"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":6695,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6665,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6644,"name":"ElementaryTypeName","src":"509:7:17"}],"id":6645,"name":"VariableDeclaration","src":"509:12:17"},{"attributes":{"constant":false,"name":"name","scope":6665,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6646,"name":"ElementaryTypeName","src":"523:6:17"}],"id":6647,"name":"VariableDeclaration","src":"523:20:17"}],"id":6648,"name":"ParameterList","src":"508:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":6652,"name":"ParameterList","src":"571:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6649,"name":"Identifier","src":"554:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"bytes32","value":"node"},"id":6650,"name":"Identifier","src":"565:4:17"}],"id":6651,"name":"ModifierInvocation","src":"554:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6643,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":6653,"name":"Identifier","src":"581:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"bytes32","value":"node"},"id":6654,"name":"Identifier","src":"587:4:17"}],"id":6655,"name":"IndexAccess","src":"581:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6647,"type":"string calldata","value":"name"},"id":6656,"name":"Identifier","src":"595:4:17"}],"id":6657,"name":"Assignment","src":"581:18:17"}],"id":6658,"name":"ExpressionStatement","src":"581:18:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6639,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":6659,"name":"Identifier","src":"614:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6645,"type":"bytes32","value":"node"},"id":6660,"name":"Identifier","src":"626:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6647,"type":"string calldata","value":"name"},"id":6661,"name":"Identifier","src":"632:4:17"}],"id":6662,"name":"FunctionCall","src":"614:23:17"}],"id":6663,"name":"EmitStatement","src":"609:28:17"}],"id":6664,"name":"Block","src":"571:73:17"}],"id":6665,"name":"FunctionDefinition","src":"492:152:17"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":6695,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6677,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6666,"name":"ElementaryTypeName","src":"858:7:17"}],"id":6667,"name":"VariableDeclaration","src":"858:12:17"}],"id":6668,"name":"ParameterList","src":"857:14:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6677,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6669,"name":"ElementaryTypeName","src":"895:6:17"}],"id":6670,"name":"VariableDeclaration","src":"895:13:17"}],"id":6671,"name":"ParameterList","src":"894:15:17"},{"children":[{"attributes":{"functionReturnParameters":6671},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6643,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":6672,"name":"Identifier","src":"927:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6667,"type":"bytes32","value":"node"},"id":6673,"name":"Identifier","src":"933:4:17"}],"id":6674,"name":"IndexAccess","src":"927:11:17"}],"id":6675,"name":"Return","src":"920:18:17"}],"id":6676,"name":"Block","src":"910:35:17"}],"id":6677,"name":"FunctionDefinition","src":"844:101:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6695,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6694,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6678,"name":"ElementaryTypeName","src":"978:6:17"}],"id":6679,"name":"VariableDeclaration","src":"978:18:17"}],"id":6680,"name":"ParameterList","src":"977:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":6694,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6681,"name":"ElementaryTypeName","src":"1018:4:17"}],"id":6682,"name":"VariableDeclaration","src":"1018:4:17"}],"id":6683,"name":"ParameterList","src":"1017:6:17"},{"children":[{"attributes":{"functionReturnParameters":6683},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6679,"type":"bytes4","value":"interfaceID"},"id":6684,"name":"Identifier","src":"1041:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6633,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":6685,"name":"Identifier","src":"1056:17:17"}],"id":6686,"name":"BinaryOperation","src":"1041:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10162,"type":"contract super NameResolver","value":"super"},"id":6687,"name":"Identifier","src":"1077:5:17"}],"id":6688,"name":"MemberAccess","src":"1077:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6679,"type":"bytes4","value":"interfaceID"},"id":6689,"name":"Identifier","src":"1101:11:17"}],"id":6690,"name":"FunctionCall","src":"1077:36:17"}],"id":6691,"name":"BinaryOperation","src":"1041:72:17"}],"id":6692,"name":"Return","src":"1034:79:17"}],"id":6693,"name":"Block","src":"1024:96:17"}],"id":6694,"name":"FunctionDefinition","src":"951:169:17"}],"id":6695,"name":"ContractDefinition","src":"56:1066:17"}],"id":6696,"name":"SourceUnit","src":"0:1123:17"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[6786]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6697,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6787,"symbolAliases":[null],"unitAlias":""},"id":6698,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6786,8755],"name":"PubkeyResolver","scope":6787},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":6699,"name":"UserDefinedTypeName","src":"83:12:18"}],"id":6700,"name":"InheritanceSpecifier","src":"83:12:18"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":6786,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6701,"name":"ElementaryTypeName","src":"102:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":6702,"name":"Literal","src":"148:10:18"}],"id":6703,"name":"VariableDeclaration","src":"102:56:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6711,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6704,"name":"ElementaryTypeName","src":"185:7:18"}],"id":6705,"name":"VariableDeclaration","src":"185:20:18"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":6711,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6706,"name":"ElementaryTypeName","src":"207:7:18"}],"id":6707,"name":"VariableDeclaration","src":"207:9:18"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":6711,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6708,"name":"ElementaryTypeName","src":"218:7:18"}],"id":6709,"name":"VariableDeclaration","src":"218:9:18"}],"id":6710,"name":"ParameterList","src":"184:44:18"}],"id":6711,"name":"EventDefinition","src":"165:64:18"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":6786,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":6716,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6712,"name":"ElementaryTypeName","src":"262:7:18"}],"id":6713,"name":"VariableDeclaration","src":"262:9:18"},{"attributes":{"constant":false,"name":"y","scope":6716,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6714,"name":"ElementaryTypeName","src":"281:7:18"}],"id":6715,"name":"VariableDeclaration","src":"281:9:18"}],"id":6716,"name":"StructDefinition","src":"235:62:18"},{"attributes":{"constant":false,"name":"pubkeys","scope":6786,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6717,"name":"ElementaryTypeName","src":"311:7:18"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":6716,"type":"struct PubkeyResolver.PublicKey"},"id":6718,"name":"UserDefinedTypeName","src":"320:9:18"}],"id":6719,"name":"Mapping","src":"303:27:18"}],"id":6720,"name":"VariableDeclaration","src":"303:35:18"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":6786,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6748,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6721,"name":"ElementaryTypeName","src":"631:7:18"}],"id":6722,"name":"VariableDeclaration","src":"631:12:18"},{"attributes":{"constant":false,"name":"x","scope":6748,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6723,"name":"ElementaryTypeName","src":"645:7:18"}],"id":6724,"name":"VariableDeclaration","src":"645:9:18"},{"attributes":{"constant":false,"name":"y","scope":6748,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6725,"name":"ElementaryTypeName","src":"656:7:18"}],"id":6726,"name":"VariableDeclaration","src":"656:9:18"}],"id":6727,"name":"ParameterList","src":"630:36:18"},{"attributes":{"parameters":[null]},"children":[],"id":6731,"name":"ParameterList","src":"693:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6728,"name":"Identifier","src":"676:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6722,"type":"bytes32","value":"node"},"id":6729,"name":"Identifier","src":"687:4:18"}],"id":6730,"name":"ModifierInvocation","src":"676:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6720,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6732,"name":"Identifier","src":"703:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6722,"type":"bytes32","value":"node"},"id":6733,"name":"Identifier","src":"711:4:18"}],"id":6734,"name":"IndexAccess","src":"703:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6716,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":6735,"name":"Identifier","src":"719:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6724,"type":"bytes32","value":"x"},"id":6736,"name":"Identifier","src":"729:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"bytes32","value":"y"},"id":6737,"name":"Identifier","src":"732:1:18"}],"id":6738,"name":"FunctionCall","src":"719:15:18"}],"id":6739,"name":"Assignment","src":"703:31:18"}],"id":6740,"name":"ExpressionStatement","src":"703:31:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6711,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":6741,"name":"Identifier","src":"749:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6722,"type":"bytes32","value":"node"},"id":6742,"name":"Identifier","src":"763:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6724,"type":"bytes32","value":"x"},"id":6743,"name":"Identifier","src":"769:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6726,"type":"bytes32","value":"y"},"id":6744,"name":"Identifier","src":"772:1:18"}],"id":6745,"name":"FunctionCall","src":"749:25:18"}],"id":6746,"name":"EmitStatement","src":"744:30:18"}],"id":6747,"name":"Block","src":"693:88:18"}],"id":6748,"name":"FunctionDefinition","src":"612:169:18"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":6786,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6749,"name":"ElementaryTypeName","src":"1039:7:18"}],"id":6750,"name":"VariableDeclaration","src":"1039:12:18"}],"id":6751,"name":"ParameterList","src":"1038:14:18"},{"children":[{"attributes":{"constant":false,"name":"x","scope":6768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6752,"name":"ElementaryTypeName","src":"1076:7:18"}],"id":6753,"name":"VariableDeclaration","src":"1076:9:18"},{"attributes":{"constant":false,"name":"y","scope":6768,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6754,"name":"ElementaryTypeName","src":"1087:7:18"}],"id":6755,"name":"VariableDeclaration","src":"1087:9:18"}],"id":6756,"name":"ParameterList","src":"1075:22:18"},{"children":[{"attributes":{"functionReturnParameters":6756},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":6713,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6720,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6757,"name":"Identifier","src":"1116:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6750,"type":"bytes32","value":"node"},"id":6758,"name":"Identifier","src":"1124:4:18"}],"id":6759,"name":"IndexAccess","src":"1116:13:18"}],"id":6760,"name":"MemberAccess","src":"1116:15:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":6715,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6720,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":6761,"name":"Identifier","src":"1133:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6750,"type":"bytes32","value":"node"},"id":6762,"name":"Identifier","src":"1141:4:18"}],"id":6763,"name":"IndexAccess","src":"1133:13:18"}],"id":6764,"name":"MemberAccess","src":"1133:15:18"}],"id":6765,"name":"TupleExpression","src":"1115:34:18"}],"id":6766,"name":"Return","src":"1108:41:18"}],"id":6767,"name":"Block","src":"1098:58:18"}],"id":6768,"name":"FunctionDefinition","src":"1023:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6786,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6785,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6769,"name":"ElementaryTypeName","src":"1189:6:18"}],"id":6770,"name":"VariableDeclaration","src":"1189:18:18"}],"id":6771,"name":"ParameterList","src":"1188:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":6785,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6772,"name":"ElementaryTypeName","src":"1229:4:18"}],"id":6773,"name":"VariableDeclaration","src":"1229:4:18"}],"id":6774,"name":"ParameterList","src":"1228:6:18"},{"children":[{"attributes":{"functionReturnParameters":6774},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes4","value":"interfaceID"},"id":6775,"name":"Identifier","src":"1252:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6703,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":6776,"name":"Identifier","src":"1267:19:18"}],"id":6777,"name":"BinaryOperation","src":"1252:34:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"contract super PubkeyResolver","value":"super"},"id":6778,"name":"Identifier","src":"1290:5:18"}],"id":6779,"name":"MemberAccess","src":"1290:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes4","value":"interfaceID"},"id":6780,"name":"Identifier","src":"1314:11:18"}],"id":6781,"name":"FunctionCall","src":"1290:36:18"}],"id":6782,"name":"BinaryOperation","src":"1252:74:18"}],"id":6783,"name":"Return","src":"1245:81:18"}],"id":6784,"name":"Block","src":"1235:98:18"}],"id":6785,"name":"FunctionDefinition","src":"1162:171:18"}],"id":6786,"name":"ContractDefinition","src":"56:1279:18"}],"id":6787,"name":"SourceUnit","src":"0:1336:18"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[6869]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6788,"name":"PragmaDirective","src":"0:23:19"},{"attributes":{"SourceUnit":8756,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6870,"symbolAliases":[null],"unitAlias":""},"id":6789,"name":"ImportDirective","src":"25:29:19"},{"attributes":{"contractDependencies":[8755],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6869,8755],"name":"TextResolver","scope":6870},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":8755,"type":"contract ResolverBase"},"id":6790,"name":"UserDefinedTypeName","src":"81:12:19"}],"id":6791,"name":"InheritanceSpecifier","src":"81:12:19"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":6869,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6792,"name":"ElementaryTypeName","src":"100:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":6793,"name":"Literal","src":"144:10:19"}],"id":6794,"name":"VariableDeclaration","src":"100:54:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6802,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6795,"name":"ElementaryTypeName","src":"179:7:19"}],"id":6796,"name":"VariableDeclaration","src":"179:20:19"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":6802,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6797,"name":"ElementaryTypeName","src":"201:6:19"}],"id":6798,"name":"VariableDeclaration","src":"201:25:19"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":6802,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6799,"name":"ElementaryTypeName","src":"228:6:19"}],"id":6800,"name":"VariableDeclaration","src":"228:10:19"}],"id":6801,"name":"ParameterList","src":"178:61:19"}],"id":6802,"name":"EventDefinition","src":"161:79:19"},{"attributes":{"constant":false,"name":"texts","scope":6869,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6803,"name":"ElementaryTypeName","src":"254:7:19"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6804,"name":"ElementaryTypeName","src":"271:6:19"},{"attributes":{"name":"string","type":"string"},"id":6805,"name":"ElementaryTypeName","src":"279:6:19"}],"id":6806,"name":"Mapping","src":"263:23:19"}],"id":6807,"name":"Mapping","src":"246:41:19"}],"id":6808,"name":"VariableDeclaration","src":"246:47:19"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":6869,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6835,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6809,"name":"ElementaryTypeName","src":"590:7:19"}],"id":6810,"name":"VariableDeclaration","src":"590:12:19"},{"attributes":{"constant":false,"name":"key","scope":6835,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6811,"name":"ElementaryTypeName","src":"604:6:19"}],"id":6812,"name":"VariableDeclaration","src":"604:19:19"},{"attributes":{"constant":false,"name":"value","scope":6835,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6813,"name":"ElementaryTypeName","src":"625:6:19"}],"id":6814,"name":"VariableDeclaration","src":"625:21:19"}],"id":6815,"name":"ParameterList","src":"589:58:19"},{"attributes":{"parameters":[null]},"children":[],"id":6819,"name":"ParameterList","src":"674:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8722,"type":"modifier (bytes32)","value":"authorised"},"id":6816,"name":"Identifier","src":"657:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6810,"type":"bytes32","value":"node"},"id":6817,"name":"Identifier","src":"668:4:19"}],"id":6818,"name":"ModifierInvocation","src":"657:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6808,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6820,"name":"Identifier","src":"684:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6810,"type":"bytes32","value":"node"},"id":6821,"name":"Identifier","src":"690:4:19"}],"id":6823,"name":"IndexAccess","src":"684:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"string calldata","value":"key"},"id":6822,"name":"Identifier","src":"696:3:19"}],"id":6824,"name":"IndexAccess","src":"684:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6814,"type":"string calldata","value":"value"},"id":6825,"name":"Identifier","src":"703:5:19"}],"id":6826,"name":"Assignment","src":"684:24:19"}],"id":6827,"name":"ExpressionStatement","src":"684:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6802,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":6828,"name":"Identifier","src":"723:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6810,"type":"bytes32","value":"node"},"id":6829,"name":"Identifier","src":"735:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"string calldata","value":"key"},"id":6830,"name":"Identifier","src":"741:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6812,"type":"string calldata","value":"key"},"id":6831,"name":"Identifier","src":"746:3:19"}],"id":6832,"name":"FunctionCall","src":"723:27:19"}],"id":6833,"name":"EmitStatement","src":"718:32:19"}],"id":6834,"name":"Block","src":"674:83:19"}],"id":6835,"name":"FunctionDefinition","src":"573:184:19"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":6869,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6851,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6836,"name":"ElementaryTypeName","src":"988:7:19"}],"id":6837,"name":"VariableDeclaration","src":"988:12:19"},{"attributes":{"constant":false,"name":"key","scope":6851,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6838,"name":"ElementaryTypeName","src":"1002:6:19"}],"id":6839,"name":"VariableDeclaration","src":"1002:19:19"}],"id":6840,"name":"ParameterList","src":"987:35:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6851,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6841,"name":"ElementaryTypeName","src":"1046:6:19"}],"id":6842,"name":"VariableDeclaration","src":"1046:13:19"}],"id":6843,"name":"ParameterList","src":"1045:15:19"},{"children":[{"attributes":{"functionReturnParameters":6843},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6808,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6844,"name":"Identifier","src":"1078:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6837,"type":"bytes32","value":"node"},"id":6845,"name":"Identifier","src":"1084:4:19"}],"id":6846,"name":"IndexAccess","src":"1078:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6839,"type":"string calldata","value":"key"},"id":6847,"name":"Identifier","src":"1090:3:19"}],"id":6848,"name":"IndexAccess","src":"1078:16:19"}],"id":6849,"name":"Return","src":"1071:23:19"}],"id":6850,"name":"Block","src":"1061:40:19"}],"id":6851,"name":"FunctionDefinition","src":"974:127:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6869,"stateMutability":"pure","superFunction":8703,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6868,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6852,"name":"ElementaryTypeName","src":"1134:6:19"}],"id":6853,"name":"VariableDeclaration","src":"1134:18:19"}],"id":6854,"name":"ParameterList","src":"1133:20:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6868,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6855,"name":"ElementaryTypeName","src":"1174:4:19"}],"id":6856,"name":"VariableDeclaration","src":"1174:4:19"}],"id":6857,"name":"ParameterList","src":"1173:6:19"},{"children":[{"attributes":{"functionReturnParameters":6857},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"bytes4","value":"interfaceID"},"id":6858,"name":"Identifier","src":"1197:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":6859,"name":"Identifier","src":"1212:17:19"}],"id":6860,"name":"BinaryOperation","src":"1197:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":8703,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10166,"type":"contract super TextResolver","value":"super"},"id":6861,"name":"Identifier","src":"1233:5:19"}],"id":6862,"name":"MemberAccess","src":"1233:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6853,"type":"bytes4","value":"interfaceID"},"id":6863,"name":"Identifier","src":"1257:11:19"}],"id":6864,"name":"FunctionCall","src":"1233:36:19"}],"id":6865,"name":"BinaryOperation","src":"1197:72:19"}],"id":6866,"name":"Return","src":"1190:79:19"}],"id":6867,"name":"Block","src":"1180:96:19"}],"id":6868,"name":"FunctionDefinition","src":"1107:169:19"}],"id":6869,"name":"ContractDefinition","src":"56:1222:19"}],"id":6870,"name":"SourceUnit","src":"0:1278:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[8575]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6871,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[8575],"name":"strings","scope":8576},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":8575,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":6876,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6872,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":6873,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":6876,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6874,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":6875,"name":"VariableDeclaration","src":"2663:9:20"}],"id":6876,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":6916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6877,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":6878,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":6916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6879,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":6880,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":6916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6881,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":6882,"name":"VariableDeclaration","src":"2722:8:20"}],"id":6883,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":6884,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"uint256","value":"len"},"id":6885,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6886,"name":"Literal","src":"2818:2:20"}],"id":6887,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"uint256","value":"len"},"id":6888,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6889,"name":"Literal","src":"2829:2:20"}],"id":6890,"name":"Assignment","src":"2822:9:20"}],"id":6891,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":6880,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":6878,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":6892,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6878,"type":"uint256","value":"dest"},"id":6893,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6894,"name":"Literal","src":"2933:2:20"}],"id":6895,"name":"Assignment","src":"2925:10:20"}],"id":6896,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6880,"type":"uint256","value":"src"},"id":6897,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6898,"name":"Literal","src":"2956:2:20"}],"id":6899,"name":"Assignment","src":"2949:9:20"}],"id":6900,"name":"ExpressionStatement","src":"2949:9:20"}],"id":6901,"name":"Block","src":"2833:136:20"}],"id":6902,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[6904]},"children":[{"attributes":{"constant":false,"name":"mask","scope":6915,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6903,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":6904,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":6905,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6906,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6882,"type":"uint256","value":"len"},"id":6907,"name":"Identifier","src":"3036:3:20"}],"id":6908,"name":"BinaryOperation","src":"3031:8:20"}],"id":6909,"name":"TupleExpression","src":"3030:10:20"}],"id":6910,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6911,"name":"Literal","src":"3043:1:20"}],"id":6912,"name":"BinaryOperation","src":"3023:21:20"}],"id":6913,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":6880,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":6904,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":6878,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":6878,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":6904,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":6914,"name":"InlineAssembly","src":"3054:173:20"}],"id":6915,"name":"Block","src":"2745:488:20"}],"id":6916,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":6936,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6917,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":6918,"name":"VariableDeclaration","src":"3450:18:20"}],"id":6919,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":6936,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":6920,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":6921,"name":"VariableDeclaration","src":"3493:12:20"}],"id":6922,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[6924],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":6935,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6923,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":6924,"name":"VariableDeclaration","src":"3517:8:20"}],"id":6925,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":6924,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":6918,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":6926,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":6922},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6876,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":6927,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6928,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6918,"type":"string memory","value":"self"},"id":6929,"name":"Identifier","src":"3618:4:20"}],"id":6930,"name":"FunctionCall","src":"3612:11:20"}],"id":6931,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6924,"type":"uint256","value":"ptr"},"id":6932,"name":"Identifier","src":"3632:3:20"}],"id":6933,"name":"FunctionCall","src":"3606:30:20"}],"id":6934,"name":"Return","src":"3599:37:20"}],"id":6935,"name":"Block","src":"3507:136:20"}],"id":6936,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7062,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6937,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":6938,"name":"VariableDeclaration","src":"3852:12:20"}],"id":6939,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7062,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6940,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":6941,"name":"VariableDeclaration","src":"3889:4:20"}],"id":6942,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[6944],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7061,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6943,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":6944,"name":"VariableDeclaration","src":"3905:8:20"}],"id":6945,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6946,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6947,"name":"Literal","src":"3935:1:20"}],"id":6948,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":6942},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6949,"name":"Literal","src":"3957:1:20"}],"id":6950,"name":"Return","src":"3950:8:20"}],"id":6951,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6952,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6953,"name":"Identifier","src":"3977:4:20"}],"id":6954,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":6955,"name":"Literal","src":"3985:34:20"}],"id":6956,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6957,"name":"Literal","src":"4023:1:20"}],"id":6958,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":6959,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":6960,"name":"Literal","src":"4047:2:20"}],"id":6961,"name":"Assignment","src":"4040:9:20"}],"id":6962,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6963,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":6964,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6965,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6966,"name":"Identifier","src":"4083:4:20"}],"id":6967,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":6968,"name":"Literal","src":"4091:35:20"}],"id":6969,"name":"BinaryOperation","src":"4078:48:20"}],"id":6970,"name":"FunctionCall","src":"4070:57:20"}],"id":6971,"name":"Assignment","src":"4063:64:20"}],"id":6972,"name":"ExpressionStatement","src":"4063:64:20"}],"id":6973,"name":"Block","src":"4026:112:20"}],"id":6974,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6975,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6976,"name":"Identifier","src":"4156:4:20"}],"id":6977,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":6978,"name":"Literal","src":"4164:18:20"}],"id":6979,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6980,"name":"Literal","src":"4186:1:20"}],"id":6981,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":6982,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":6983,"name":"Literal","src":"4210:1:20"}],"id":6984,"name":"Assignment","src":"4203:8:20"}],"id":6985,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6986,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":6987,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6988,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6989,"name":"Identifier","src":"4245:4:20"}],"id":6990,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":6991,"name":"Literal","src":"4253:19:20"}],"id":6992,"name":"BinaryOperation","src":"4240:32:20"}],"id":6993,"name":"FunctionCall","src":"4232:41:20"}],"id":6994,"name":"Assignment","src":"4225:48:20"}],"id":6995,"name":"ExpressionStatement","src":"4225:48:20"}],"id":6996,"name":"Block","src":"4189:95:20"}],"id":6997,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":6998,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":6999,"name":"Identifier","src":"4302:4:20"}],"id":7000,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":7001,"name":"Literal","src":"4310:10:20"}],"id":7002,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7003,"name":"Literal","src":"4324:1:20"}],"id":7004,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":7005,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7006,"name":"Literal","src":"4348:1:20"}],"id":7007,"name":"Assignment","src":"4341:8:20"}],"id":7008,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7009,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7010,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7011,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7012,"name":"Identifier","src":"4383:4:20"}],"id":7013,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":7014,"name":"Literal","src":"4391:11:20"}],"id":7015,"name":"BinaryOperation","src":"4378:24:20"}],"id":7016,"name":"FunctionCall","src":"4370:33:20"}],"id":7017,"name":"Assignment","src":"4363:40:20"}],"id":7018,"name":"ExpressionStatement","src":"4363:40:20"}],"id":7019,"name":"Block","src":"4327:87:20"}],"id":7020,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7021,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7022,"name":"Identifier","src":"4432:4:20"}],"id":7023,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":7024,"name":"Literal","src":"4440:6:20"}],"id":7025,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7026,"name":"Literal","src":"4450:1:20"}],"id":7027,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":7028,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7029,"name":"Literal","src":"4474:1:20"}],"id":7030,"name":"Assignment","src":"4467:8:20"}],"id":7031,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7032,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7033,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7034,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7035,"name":"Identifier","src":"4509:4:20"}],"id":7036,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":7037,"name":"Literal","src":"4517:7:20"}],"id":7038,"name":"BinaryOperation","src":"4504:20:20"}],"id":7039,"name":"FunctionCall","src":"4496:29:20"}],"id":7040,"name":"Assignment","src":"4489:36:20"}],"id":7041,"name":"ExpressionStatement","src":"4489:36:20"}],"id":7042,"name":"Block","src":"4453:83:20"}],"id":7043,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7044,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6938,"type":"bytes32","value":"self"},"id":7045,"name":"Identifier","src":"4554:4:20"}],"id":7046,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7047,"name":"Literal","src":"4562:4:20"}],"id":7048,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7049,"name":"Literal","src":"4570:1:20"}],"id":7050,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":7051,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7052,"name":"Literal","src":"4594:1:20"}],"id":7053,"name":"Assignment","src":"4587:8:20"}],"id":7054,"name":"ExpressionStatement","src":"4587:8:20"}],"id":7055,"name":"Block","src":"4573:33:20"}],"id":7056,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":6942},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7057,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6944,"type":"uint256","value":"ret"},"id":7058,"name":"Identifier","src":"4627:3:20"}],"id":7059,"name":"BinaryOperation","src":"4622:8:20"}],"id":7060,"name":"Return","src":"4615:15:20"}],"id":7061,"name":"Block","src":"3895:742:20"}],"id":7062,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7079,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7063,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":7064,"name":"VariableDeclaration","src":"4963:12:20"}],"id":7065,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7079,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7066,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":7067,"name":"VariableDeclaration","src":"5000:16:20"}],"id":7068,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":7064,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":7067,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":7069,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7067,"type":"struct strings.slice memory","value":"ret"},"id":7070,"name":"Identifier","src":"5286:3:20"}],"id":7072,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[7062,7212],"referencedDeclaration":7062,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":7073,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7064,"type":"bytes32","value":"self"},"id":7074,"name":"Identifier","src":"5301:4:20"}],"id":7075,"name":"FunctionCall","src":"5297:9:20"}],"id":7076,"name":"Assignment","src":"5286:20:20"}],"id":7077,"name":"ExpressionStatement","src":"5286:20:20"}],"id":7078,"name":"Block","src":"5018:295:20"}],"id":7079,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7094,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7080,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":7081,"name":"VariableDeclaration","src":"5528:17:20"}],"id":7082,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7094,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7083,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":7084,"name":"VariableDeclaration","src":"5570:12:20"}],"id":7085,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":7085},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6876,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7086,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7081,"type":"struct strings.slice memory","value":"self"},"id":7087,"name":"Identifier","src":"5607:4:20"}],"id":7088,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7081,"type":"struct strings.slice memory","value":"self"},"id":7089,"name":"Identifier","src":"5618:4:20"}],"id":7090,"name":"MemberAccess","src":"5618:9:20"}],"id":7091,"name":"FunctionCall","src":"5601:27:20"}],"id":7092,"name":"Return","src":"5594:34:20"}],"id":7093,"name":"Block","src":"5584:51:20"}],"id":7094,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7124,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7095,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":7096,"name":"VariableDeclaration","src":"5825:17:20"}],"id":7097,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7124,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7098,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":7099,"name":"VariableDeclaration","src":"5867:13:20"}],"id":7100,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[7102]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7123,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7101,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":7102,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7103,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":7104,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"struct strings.slice memory","value":"self"},"id":7105,"name":"Identifier","src":"5923:4:20"}],"id":7106,"name":"MemberAccess","src":"5923:9:20"}],"id":7107,"name":"FunctionCall","src":"5912:21:20"}],"id":7108,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[7110],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":7123,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7109,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":7110,"name":"VariableDeclaration","src":"5943:11:20"}],"id":7111,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":7110,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":7102,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":7112,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7113,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7110,"type":"uint256","value":"retptr"},"id":7114,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"struct strings.slice memory","value":"self"},"id":7115,"name":"Identifier","src":"6024:4:20"}],"id":7116,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7096,"type":"struct strings.slice memory","value":"self"},"id":7117,"name":"Identifier","src":"6035:4:20"}],"id":7118,"name":"MemberAccess","src":"6035:9:20"}],"id":7119,"name":"FunctionCall","src":"6009:36:20"}],"id":7120,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":7100},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7102,"type":"string memory","value":"ret"},"id":7121,"name":"Identifier","src":"6062:3:20"}],"id":7122,"name":"Return","src":"6055:10:20"}],"id":7123,"name":"Block","src":"5882:190:20"}],"id":7124,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7212,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7125,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":7126,"name":"VariableDeclaration","src":"6476:17:20"}],"id":7127,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":7212,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7128,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":7129,"name":"VariableDeclaration","src":"6518:6:20"}],"id":7130,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[7132]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7131,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":7132,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"struct strings.slice memory","value":"self"},"id":7133,"name":"Identifier","src":"6622:4:20"}],"id":7134,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":7135,"name":"Literal","src":"6634:2:20"}],"id":7136,"name":"BinaryOperation","src":"6622:14:20"}],"id":7137,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[7139]},"children":[{"attributes":{"constant":false,"name":"end","scope":7211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7138,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":7139,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7140,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7126,"type":"struct strings.slice memory","value":"self"},"id":7141,"name":"Identifier","src":"6663:4:20"}],"id":7142,"name":"MemberAccess","src":"6663:9:20"}],"id":7143,"name":"BinaryOperation","src":"6657:15:20"}],"id":7144,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7129,"type":"uint256","value":"l"},"id":7145,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7146,"name":"Literal","src":"6691:1:20"}],"id":7147,"name":"Assignment","src":"6687:5:20"}],"id":7148,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7149,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7139,"type":"uint256","value":"end"},"id":7150,"name":"Identifier","src":"6700:3:20"}],"id":7151,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7129,"type":"uint256","value":"l"},"id":7152,"name":"Identifier","src":"6705:1:20"}],"id":7153,"name":"UnaryOperation","src":"6705:3:20"}],"id":7154,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[7156],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7209,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7155,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":7156,"name":"VariableDeclaration","src":"6724:7:20"}],"id":7157,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7156,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":7132,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":7158,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7159,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7160,"name":"Literal","src":"6805:4:20"}],"id":7161,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7162,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7163,"name":"Literal","src":"6836:1:20"}],"id":7164,"name":"Assignment","src":"6829:8:20"}],"id":7165,"name":"ExpressionStatement","src":"6829:8:20"}],"id":7166,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7167,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7168,"name":"Literal","src":"6866:4:20"}],"id":7169,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7170,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7171,"name":"Literal","src":"6897:1:20"}],"id":7172,"name":"Assignment","src":"6890:8:20"}],"id":7173,"name":"ExpressionStatement","src":"6890:8:20"}],"id":7174,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7175,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7176,"name":"Literal","src":"6927:4:20"}],"id":7177,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7178,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7179,"name":"Literal","src":"6958:1:20"}],"id":7180,"name":"Assignment","src":"6951:8:20"}],"id":7181,"name":"ExpressionStatement","src":"6951:8:20"}],"id":7182,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7183,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":7184,"name":"Literal","src":"6988:4:20"}],"id":7185,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7186,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7187,"name":"Literal","src":"7019:1:20"}],"id":7188,"name":"Assignment","src":"7012:8:20"}],"id":7189,"name":"ExpressionStatement","src":"7012:8:20"}],"id":7190,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7156,"type":"uint8","value":"b"},"id":7191,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":7192,"name":"Literal","src":"7049:4:20"}],"id":7193,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7194,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7195,"name":"Literal","src":"7080:1:20"}],"id":7196,"name":"Assignment","src":"7073:8:20"}],"id":7197,"name":"ExpressionStatement","src":"7073:8:20"}],"id":7198,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7132,"type":"uint256","value":"ptr"},"id":7199,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":7200,"name":"Literal","src":"7127:1:20"}],"id":7201,"name":"Assignment","src":"7120:8:20"}],"id":7202,"name":"ExpressionStatement","src":"7120:8:20"}],"id":7203,"name":"Block","src":"7102:41:20"}],"id":7204,"name":"IfStatement","src":"7041:102:20"}],"id":7205,"name":"IfStatement","src":"6980:163:20"}],"id":7206,"name":"IfStatement","src":"6919:224:20"}],"id":7207,"name":"IfStatement","src":"6858:285:20"}],"id":7208,"name":"IfStatement","src":"6797:346:20"}],"id":7209,"name":"Block","src":"6710:443:20"}],"id":7210,"name":"ForStatement","src":"6682:471:20"}],"id":7211,"name":"Block","src":"6526:633:20"}],"id":7212,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7225,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7213,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":7214,"name":"VariableDeclaration","src":"7367:17:20"}],"id":7215,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7225,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7216,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":7217,"name":"VariableDeclaration","src":"7409:4:20"}],"id":7218,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":7218},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7214,"type":"struct strings.slice memory","value":"self"},"id":7219,"name":"Identifier","src":"7432:4:20"}],"id":7220,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7221,"name":"Literal","src":"7445:1:20"}],"id":7222,"name":"BinaryOperation","src":"7432:14:20"}],"id":7223,"name":"Return","src":"7425:21:20"}],"id":7224,"name":"Block","src":"7415:38:20"}],"id":7225,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7354,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7226,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":7227,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":7354,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7228,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":7229,"name":"VariableDeclaration","src":"7917:18:20"}],"id":7230,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7354,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":7231,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":7232,"name":"VariableDeclaration","src":"7960:3:20"}],"id":7233,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[7235]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":7353,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7234,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":7235,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7227,"type":"struct strings.slice memory","value":"self"},"id":7236,"name":"Identifier","src":"7991:4:20"}],"id":7237,"name":"MemberAccess","src":"7991:9:20"}],"id":7238,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7229,"type":"struct strings.slice memory","value":"other"},"id":7239,"name":"Identifier","src":"8014:5:20"}],"id":7240,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7227,"type":"struct strings.slice memory","value":"self"},"id":7241,"name":"Identifier","src":"8027:4:20"}],"id":7242,"name":"MemberAccess","src":"8027:9:20"}],"id":7243,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7235,"type":"uint256","value":"shortest"},"id":7244,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7229,"type":"struct strings.slice memory","value":"other"},"id":7245,"name":"Identifier","src":"8061:5:20"}],"id":7246,"name":"MemberAccess","src":"8061:10:20"}],"id":7247,"name":"Assignment","src":"8050:21:20"}],"id":7248,"name":"ExpressionStatement","src":"8050:21:20"}],"id":7249,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[7251]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7353,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7250,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":7251,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7227,"type":"struct strings.slice memory","value":"self"},"id":7252,"name":"Identifier","src":"8097:4:20"}],"id":7253,"name":"MemberAccess","src":"8097:9:20"}],"id":7254,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[7256]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":7353,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7255,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":7256,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7229,"type":"struct strings.slice memory","value":"other"},"id":7257,"name":"Identifier","src":"8132:5:20"}],"id":7258,"name":"MemberAccess","src":"8132:10:20"}],"id":7259,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[7261]},"children":[{"attributes":{"constant":false,"name":"idx","scope":7342,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7260,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":7261,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7262,"name":"Literal","src":"8168:1:20"}],"id":7263,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7261,"type":"uint256","value":"idx"},"id":7264,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7235,"type":"uint256","value":"shortest"},"id":7265,"name":"Identifier","src":"8177:8:20"}],"id":7266,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7261,"type":"uint256","value":"idx"},"id":7267,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7268,"name":"Literal","src":"8194:2:20"}],"id":7269,"name":"Assignment","src":"8187:9:20"}],"id":7270,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[7272],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":7341,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7271,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":7272,"name":"VariableDeclaration","src":"8212:6:20"}],"id":7273,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[7275],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7341,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7274,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":7275,"name":"VariableDeclaration","src":"8232:6:20"}],"id":7276,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":7272,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":7251,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":7275,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":7256,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":7277,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7272,"type":"uint256","value":"a"},"id":7278,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7275,"type":"uint256","value":"b"},"id":7279,"name":"Identifier","src":"8371:1:20"}],"id":7280,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[7282]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7331,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7281,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":7282,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7283,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7284,"name":"Literal","src":"8477:1:20"}],"id":7285,"name":"UnaryOperation","src":"8476:2:20"}],"id":7286,"name":"FunctionCall","src":"8468:11:20"}],"id":7287,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7235,"type":"uint256","value":"shortest"},"id":7288,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7289,"name":"Literal","src":"8525:2:20"}],"id":7290,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"uint256","value":"mask"},"id":7291,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7292,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7293,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7294,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7235,"type":"uint256","value":"shortest"},"id":7295,"name":"Identifier","src":"8576:8:20"}],"id":7296,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7261,"type":"uint256","value":"idx"},"id":7297,"name":"Identifier","src":"8587:3:20"}],"id":7298,"name":"BinaryOperation","src":"8571:19:20"}],"id":7299,"name":"TupleExpression","src":"8570:21:20"}],"id":7300,"name":"BinaryOperation","src":"8566:25:20"}],"id":7301,"name":"TupleExpression","src":"8565:27:20"}],"id":7302,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7303,"name":"Literal","src":"8595:1:20"}],"id":7304,"name":"BinaryOperation","src":"8560:36:20"}],"id":7305,"name":"TupleExpression","src":"8559:38:20"}],"id":7306,"name":"UnaryOperation","src":"8558:39:20"}],"id":7307,"name":"Assignment","src":"8551:46:20"}],"id":7308,"name":"ExpressionStatement","src":"8551:46:20"}],"id":7309,"name":"Block","src":"8529:87:20"}],"id":7310,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[7312]},"children":[{"attributes":{"constant":false,"name":"diff","scope":7331,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7311,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":7312,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7272,"type":"uint256","value":"a"},"id":7313,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"uint256","value":"mask"},"id":7314,"name":"Identifier","src":"8653:4:20"}],"id":7315,"name":"BinaryOperation","src":"8649:8:20"}],"id":7316,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7275,"type":"uint256","value":"b"},"id":7317,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"uint256","value":"mask"},"id":7318,"name":"Identifier","src":"8666:4:20"}],"id":7319,"name":"BinaryOperation","src":"8662:8:20"}],"id":7320,"name":"TupleExpression","src":"8661:10:20"}],"id":7321,"name":"BinaryOperation","src":"8648:23:20"}],"id":7322,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7312,"type":"uint256","value":"diff"},"id":7323,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7324,"name":"Literal","src":"8701:1:20"}],"id":7325,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":7233},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7326,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7312,"type":"uint256","value":"diff"},"id":7327,"name":"Identifier","src":"8735:4:20"}],"id":7328,"name":"FunctionCall","src":"8731:9:20"}],"id":7329,"name":"Return","src":"8724:16:20"}],"id":7330,"name":"IfStatement","src":"8689:51:20"}],"id":7331,"name":"Block","src":"8374:381:20"}],"id":7332,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7251,"type":"uint256","value":"selfptr"},"id":7333,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7334,"name":"Literal","src":"8779:2:20"}],"id":7335,"name":"Assignment","src":"8768:13:20"}],"id":7336,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7256,"type":"uint256","value":"otherptr"},"id":7337,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7338,"name":"Literal","src":"8807:2:20"}],"id":7339,"name":"Assignment","src":"8795:14:20"}],"id":7340,"name":"ExpressionStatement","src":"8795:14:20"}],"id":7341,"name":"Block","src":"8198:622:20"}],"id":7342,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":7233},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7343,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7227,"type":"struct strings.slice memory","value":"self"},"id":7344,"name":"Identifier","src":"8840:4:20"}],"id":7345,"name":"MemberAccess","src":"8840:9:20"}],"id":7346,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7347,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7229,"type":"struct strings.slice memory","value":"other"},"id":7348,"name":"Identifier","src":"8857:5:20"}],"id":7349,"name":"MemberAccess","src":"8857:10:20"}],"id":7350,"name":"FunctionCall","src":"8853:15:20"}],"id":7351,"name":"BinaryOperation","src":"8836:32:20"}],"id":7352,"name":"Return","src":"8829:39:20"}],"id":7353,"name":"Block","src":"7965:910:20"}],"id":7354,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7371,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7355,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":7356,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":7371,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7357,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":7358,"name":"VariableDeclaration","src":"9154:18:20"}],"id":7359,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7371,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7360,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":7361,"name":"VariableDeclaration","src":"9197:4:20"}],"id":7362,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":7362},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7354,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":7363,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7356,"type":"struct strings.slice memory","value":"self"},"id":7364,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7358,"type":"struct strings.slice memory","value":"other"},"id":7365,"name":"Identifier","src":"9234:5:20"}],"id":7366,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7367,"name":"Literal","src":"9244:1:20"}],"id":7368,"name":"BinaryOperation","src":"9220:25:20"}],"id":7369,"name":"Return","src":"9213:32:20"}],"id":7370,"name":"Block","src":"9203:49:20"}],"id":7371,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7489,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7372,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":7373,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":7489,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7374,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":7375,"name":"VariableDeclaration","src":"9582:17:20"}],"id":7376,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7489,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7377,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":7378,"name":"VariableDeclaration","src":"9624:12:20"}],"id":7379,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7380,"name":"Identifier","src":"9648:4:20"}],"id":7382,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7383,"name":"Identifier","src":"9660:4:20"}],"id":7384,"name":"MemberAccess","src":"9660:9:20"}],"id":7385,"name":"Assignment","src":"9648:21:20"}],"id":7386,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7387,"name":"Identifier","src":"9684:4:20"}],"id":7388,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7389,"name":"Literal","src":"9697:1:20"}],"id":7390,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7391,"name":"Identifier","src":"9714:4:20"}],"id":7393,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7394,"name":"Literal","src":"9726:1:20"}],"id":7395,"name":"Assignment","src":"9714:13:20"}],"id":7396,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":7379},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7397,"name":"Identifier","src":"9748:4:20"}],"id":7398,"name":"Return","src":"9741:11:20"}],"id":7399,"name":"Block","src":"9700:63:20"}],"id":7400,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[7402],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":7488,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7401,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":7402,"name":"VariableDeclaration","src":"9773:6:20"}],"id":7403,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[7405],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7488,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7404,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":7405,"name":"VariableDeclaration","src":"9789:6:20"}],"id":7406,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7405,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":7373,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":7407,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7405,"type":"uint256","value":"b"},"id":7408,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7409,"name":"Literal","src":"9949:4:20"}],"id":7410,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7411,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7412,"name":"Literal","src":"9973:1:20"}],"id":7413,"name":"Assignment","src":"9969:5:20"}],"id":7414,"name":"ExpressionStatement","src":"9969:5:20"}],"id":7415,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7405,"type":"uint256","value":"b"},"id":7416,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7417,"name":"Literal","src":"9999:4:20"}],"id":7418,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7419,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7420,"name":"Literal","src":"10023:1:20"}],"id":7421,"name":"Assignment","src":"10019:5:20"}],"id":7422,"name":"ExpressionStatement","src":"10019:5:20"}],"id":7423,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7405,"type":"uint256","value":"b"},"id":7424,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7425,"name":"Literal","src":"10049:4:20"}],"id":7426,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7427,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7428,"name":"Literal","src":"10073:1:20"}],"id":7429,"name":"Assignment","src":"10069:5:20"}],"id":7430,"name":"ExpressionStatement","src":"10069:5:20"}],"id":7431,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7432,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7433,"name":"Literal","src":"10109:1:20"}],"id":7434,"name":"Assignment","src":"10105:5:20"}],"id":7435,"name":"ExpressionStatement","src":"10105:5:20"}],"id":7436,"name":"Block","src":"10091:30:20"}],"id":7437,"name":"IfStatement","src":"10041:80:20"}],"id":7438,"name":"IfStatement","src":"9991:130:20"}],"id":7439,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7440,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7441,"name":"Identifier","src":"10181:4:20"}],"id":7442,"name":"MemberAccess","src":"10181:9:20"}],"id":7443,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7444,"name":"Identifier","src":"10206:4:20"}],"id":7446,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7447,"name":"Identifier","src":"10218:4:20"}],"id":7448,"name":"MemberAccess","src":"10218:9:20"}],"id":7449,"name":"Assignment","src":"10206:21:20"}],"id":7450,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7451,"name":"Identifier","src":"10241:4:20"}],"id":7453,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7454,"name":"Identifier","src":"10254:4:20"}],"id":7455,"name":"MemberAccess","src":"10254:9:20"}],"id":7456,"name":"Assignment","src":"10241:22:20"}],"id":7457,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7458,"name":"Identifier","src":"10277:4:20"}],"id":7460,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7461,"name":"Literal","src":"10289:1:20"}],"id":7462,"name":"Assignment","src":"10277:13:20"}],"id":7463,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":7379},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7464,"name":"Identifier","src":"10311:4:20"}],"id":7465,"name":"Return","src":"10304:11:20"}],"id":7466,"name":"Block","src":"10192:134:20"}],"id":7467,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7468,"name":"Identifier","src":"10336:4:20"}],"id":7470,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7471,"name":"Identifier","src":"10349:1:20"}],"id":7472,"name":"Assignment","src":"10336:14:20"}],"id":7473,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7373,"type":"struct strings.slice memory","value":"self"},"id":7474,"name":"Identifier","src":"10360:4:20"}],"id":7476,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7477,"name":"Identifier","src":"10373:1:20"}],"id":7478,"name":"Assignment","src":"10360:14:20"}],"id":7479,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7480,"name":"Identifier","src":"10384:4:20"}],"id":7482,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7402,"type":"uint256","value":"l"},"id":7483,"name":"Identifier","src":"10396:1:20"}],"id":7484,"name":"Assignment","src":"10384:13:20"}],"id":7485,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":7379},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7375,"type":"struct strings.slice memory","value":"rune"},"id":7486,"name":"Identifier","src":"10414:4:20"}],"id":7487,"name":"Return","src":"10407:11:20"}],"id":7488,"name":"Block","src":"9638:787:20"}],"id":7489,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7502,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7490,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":7491,"name":"VariableDeclaration","src":"10683:17:20"}],"id":7492,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7502,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7493,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":7494,"name":"VariableDeclaration","src":"10725:16:20"}],"id":7495,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[7489,7502],"referencedDeclaration":7489,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":7496,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7491,"type":"struct strings.slice memory","value":"self"},"id":7497,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7494,"type":"struct strings.slice memory","value":"ret"},"id":7498,"name":"Identifier","src":"10768:3:20"}],"id":7499,"name":"FunctionCall","src":"10753:19:20"}],"id":7500,"name":"ExpressionStatement","src":"10753:19:20"}],"id":7501,"name":"Block","src":"10743:36:20"}],"id":7502,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7649,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7503,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":7504,"name":"VariableDeclaration","src":"10988:17:20"}],"id":7505,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7649,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7506,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":7507,"name":"VariableDeclaration","src":"11030:8:20"}],"id":7508,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7504,"type":"struct strings.slice memory","value":"self"},"id":7509,"name":"Identifier","src":"11054:4:20"}],"id":7510,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7511,"name":"Literal","src":"11067:1:20"}],"id":7512,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":7508},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7513,"name":"Literal","src":"11091:1:20"}],"id":7514,"name":"Return","src":"11084:8:20"}],"id":7515,"name":"Block","src":"11070:33:20"}],"id":7516,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[7518],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":7648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7517,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":7518,"name":"VariableDeclaration","src":"11113:9:20"}],"id":7519,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[7521],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":7648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7520,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":7521,"name":"VariableDeclaration","src":"11132:11:20"}],"id":7522,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[7524]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":7648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7523,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":7524,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7525,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":7526,"name":"Literal","src":"11173:3:20"}],"id":7527,"name":"BinaryOperation","src":"11168:8:20"}],"id":7528,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":7518,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":7504,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":7529,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[7531]},"children":[{"attributes":{"constant":false,"name":"b","scope":7648,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7530,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":7531,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7518,"type":"uint256","value":"word"},"id":7532,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint256","value":"divisor"},"id":7533,"name":"Identifier","src":"11303:7:20"}],"id":7534,"name":"BinaryOperation","src":"11296:14:20"}],"id":7535,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7536,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7537,"name":"Literal","src":"11328:4:20"}],"id":7538,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7539,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7540,"name":"Identifier","src":"11354:1:20"}],"id":7541,"name":"Assignment","src":"11348:7:20"}],"id":7542,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7543,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7544,"name":"Literal","src":"11378:1:20"}],"id":7545,"name":"Assignment","src":"11369:10:20"}],"id":7546,"name":"ExpressionStatement","src":"11369:10:20"}],"id":7547,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7548,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7549,"name":"Literal","src":"11404:4:20"}],"id":7550,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7551,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7552,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":7553,"name":"Literal","src":"11434:4:20"}],"id":7554,"name":"BinaryOperation","src":"11430:8:20"}],"id":7555,"name":"Assignment","src":"11424:14:20"}],"id":7556,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7557,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7558,"name":"Literal","src":"11461:1:20"}],"id":7559,"name":"Assignment","src":"11452:10:20"}],"id":7560,"name":"ExpressionStatement","src":"11452:10:20"}],"id":7561,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7562,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7563,"name":"Literal","src":"11487:4:20"}],"id":7564,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7565,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7566,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":7567,"name":"Literal","src":"11517:4:20"}],"id":7568,"name":"BinaryOperation","src":"11513:8:20"}],"id":7569,"name":"Assignment","src":"11507:14:20"}],"id":7570,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7571,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7572,"name":"Literal","src":"11544:1:20"}],"id":7573,"name":"Assignment","src":"11535:10:20"}],"id":7574,"name":"ExpressionStatement","src":"11535:10:20"}],"id":7575,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7576,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7577,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":7578,"name":"Literal","src":"11586:4:20"}],"id":7579,"name":"BinaryOperation","src":"11582:8:20"}],"id":7580,"name":"Assignment","src":"11576:14:20"}],"id":7581,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7582,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7583,"name":"Literal","src":"11613:1:20"}],"id":7584,"name":"Assignment","src":"11604:10:20"}],"id":7585,"name":"ExpressionStatement","src":"11604:10:20"}],"id":7586,"name":"Block","src":"11562:63:20"}],"id":7587,"name":"IfStatement","src":"11479:146:20"}],"id":7588,"name":"IfStatement","src":"11396:229:20"}],"id":7589,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7590,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7504,"type":"struct strings.slice memory","value":"self"},"id":7591,"name":"Identifier","src":"11690:4:20"}],"id":7592,"name":"MemberAccess","src":"11690:9:20"}],"id":7593,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":7508},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7594,"name":"Literal","src":"11722:1:20"}],"id":7595,"name":"Return","src":"11715:8:20"}],"id":7596,"name":"Block","src":"11701:33:20"}],"id":7597,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[7599]},"children":[{"attributes":{"constant":false,"name":"i","scope":7645,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7598,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":7599,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7600,"name":"Literal","src":"11758:1:20"}],"id":7601,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7599,"type":"uint256","value":"i"},"id":7602,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7521,"type":"uint256","value":"length"},"id":7603,"name":"Identifier","src":"11765:6:20"}],"id":7604,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7599,"type":"uint256","value":"i"},"id":7605,"name":"Identifier","src":"11773:1:20"}],"id":7606,"name":"UnaryOperation","src":"11773:3:20"}],"id":7607,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint256","value":"divisor"},"id":7608,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint256","value":"divisor"},"id":7609,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7610,"name":"Literal","src":"11812:3:20"}],"id":7611,"name":"BinaryOperation","src":"11802:13:20"}],"id":7612,"name":"Assignment","src":"11792:23:20"}],"id":7613,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7614,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7518,"type":"uint256","value":"word"},"id":7615,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint256","value":"divisor"},"id":7616,"name":"Identifier","src":"11841:7:20"}],"id":7617,"name":"BinaryOperation","src":"11834:14:20"}],"id":7618,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":7619,"name":"Literal","src":"11852:4:20"}],"id":7620,"name":"BinaryOperation","src":"11833:23:20"}],"id":7621,"name":"Assignment","src":"11829:27:20"}],"id":7622,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7623,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":7624,"name":"Literal","src":"11878:4:20"}],"id":7625,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7626,"name":"Literal","src":"11886:4:20"}],"id":7627,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":7508},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7628,"name":"Literal","src":"11959:1:20"}],"id":7629,"name":"Return","src":"11952:8:20"}],"id":7630,"name":"Block","src":"11892:83:20"}],"id":7631,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7632,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7633,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":7634,"name":"Literal","src":"12001:2:20"}],"id":7635,"name":"BinaryOperation","src":"11995:8:20"}],"id":7636,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7531,"type":"uint256","value":"b"},"id":7637,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":7638,"name":"Literal","src":"12012:4:20"}],"id":7639,"name":"BinaryOperation","src":"12008:8:20"}],"id":7640,"name":"TupleExpression","src":"12007:10:20"}],"id":7641,"name":"BinaryOperation","src":"11994:23:20"}],"id":7642,"name":"Assignment","src":"11988:29:20"}],"id":7643,"name":"ExpressionStatement","src":"11988:29:20"}],"id":7644,"name":"Block","src":"11778:250:20"}],"id":7645,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":7508},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7507,"type":"uint256","value":"ret"},"id":7646,"name":"Identifier","src":"12045:3:20"}],"id":7647,"name":"Return","src":"12038:10:20"}],"id":7648,"name":"Block","src":"11040:1015:20"}],"id":7649,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7658,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7650,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":7651,"name":"VariableDeclaration","src":"12222:17:20"}],"id":7652,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7658,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7653,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":7654,"name":"VariableDeclaration","src":"12264:11:20"}],"id":7655,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":7654,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":7651,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":7651,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":7656,"name":"InlineAssembly","src":"12287:84:20"}],"id":7657,"name":"Block","src":"12277:100:20"}],"id":7658,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7659,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":7660,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7692,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7661,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":7662,"name":"VariableDeclaration","src":"12665:19:20"}],"id":7663,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7692,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7664,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":7665,"name":"VariableDeclaration","src":"12709:4:20"}],"id":7666,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7660,"type":"struct strings.slice memory","value":"self"},"id":7667,"name":"Identifier","src":"12729:4:20"}],"id":7668,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7662,"type":"struct strings.slice memory","value":"needle"},"id":7669,"name":"Identifier","src":"12741:6:20"}],"id":7670,"name":"MemberAccess","src":"12741:11:20"}],"id":7671,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":7666},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7672,"name":"Literal","src":"12775:5:20"}],"id":7673,"name":"Return","src":"12768:12:20"}],"id":7674,"name":"Block","src":"12754:37:20"}],"id":7675,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7660,"type":"struct strings.slice memory","value":"self"},"id":7676,"name":"Identifier","src":"12805:4:20"}],"id":7677,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7662,"type":"struct strings.slice memory","value":"needle"},"id":7678,"name":"Identifier","src":"12818:6:20"}],"id":7679,"name":"MemberAccess","src":"12818:11:20"}],"id":7680,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":7666},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7681,"name":"Literal","src":"12852:4:20"}],"id":7682,"name":"Return","src":"12845:11:20"}],"id":7683,"name":"Block","src":"12831:36:20"}],"id":7684,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[7686],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":7691,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7685,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":7686,"name":"VariableDeclaration","src":"12877:10:20"}],"id":7687,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":7662,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":7660,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":7686,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":7662,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7688,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":7666},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7686,"type":"bool","value":"equal"},"id":7689,"name":"Identifier","src":"13159:5:20"}],"id":7690,"name":"Return","src":"13152:12:20"}],"id":7691,"name":"Block","src":"12715:456:20"}],"id":7692,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7693,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":7694,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7695,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":7696,"name":"VariableDeclaration","src":"13478:19:20"}],"id":7697,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7698,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":7699,"name":"VariableDeclaration","src":"13522:12:20"}],"id":7700,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7701,"name":"Identifier","src":"13550:4:20"}],"id":7702,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7696,"type":"struct strings.slice memory","value":"needle"},"id":7703,"name":"Identifier","src":"13562:6:20"}],"id":7704,"name":"MemberAccess","src":"13562:11:20"}],"id":7705,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":7700},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7706,"name":"Identifier","src":"13596:4:20"}],"id":7707,"name":"Return","src":"13589:11:20"}],"id":7708,"name":"Block","src":"13575:36:20"}],"id":7709,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[7711]},"children":[{"attributes":{"constant":false,"name":"equal","scope":7741,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7710,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":7711,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7712,"name":"Literal","src":"13634:4:20"}],"id":7713,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7714,"name":"Identifier","src":"13652:4:20"}],"id":7715,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7696,"type":"struct strings.slice memory","value":"needle"},"id":7716,"name":"Identifier","src":"13665:6:20"}],"id":7717,"name":"MemberAccess","src":"13665:11:20"}],"id":7718,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":7696,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":7694,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"equal":{"declaration":7711,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}},{"needle":{"declaration":7696,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7719,"name":"InlineAssembly","src":"13692:266:20"}],"id":7720,"name":"Block","src":"13678:290:20"}],"id":7721,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7711,"type":"bool","value":"equal"},"id":7722,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7723,"name":"Identifier","src":"14003:4:20"}],"id":7725,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7696,"type":"struct strings.slice memory","value":"needle"},"id":7726,"name":"Identifier","src":"14016:6:20"}],"id":7727,"name":"MemberAccess","src":"14016:11:20"}],"id":7728,"name":"Assignment","src":"14003:24:20"}],"id":7729,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7730,"name":"Identifier","src":"14041:4:20"}],"id":7732,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7696,"type":"struct strings.slice memory","value":"needle"},"id":7733,"name":"Identifier","src":"14054:6:20"}],"id":7734,"name":"MemberAccess","src":"14054:11:20"}],"id":7735,"name":"Assignment","src":"14041:24:20"}],"id":7736,"name":"ExpressionStatement","src":"14041:24:20"}],"id":7737,"name":"Block","src":"13989:87:20"}],"id":7738,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":7700},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7694,"type":"struct strings.slice memory","value":"self"},"id":7739,"name":"Identifier","src":"14093:4:20"}],"id":7740,"name":"Return","src":"14086:11:20"}],"id":7741,"name":"Block","src":"13536:568:20"}],"id":7742,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7743,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":7744,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7786,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7745,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":7746,"name":"VariableDeclaration","src":"14391:19:20"}],"id":7747,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7786,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7748,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":7749,"name":"VariableDeclaration","src":"14435:4:20"}],"id":7750,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7744,"type":"struct strings.slice memory","value":"self"},"id":7751,"name":"Identifier","src":"14455:4:20"}],"id":7752,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7746,"type":"struct strings.slice memory","value":"needle"},"id":7753,"name":"Identifier","src":"14467:6:20"}],"id":7754,"name":"MemberAccess","src":"14467:11:20"}],"id":7755,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":7750},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7756,"name":"Literal","src":"14501:5:20"}],"id":7757,"name":"Return","src":"14494:12:20"}],"id":7758,"name":"Block","src":"14480:37:20"}],"id":7759,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[7761]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7785,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7760,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":7761,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7744,"type":"struct strings.slice memory","value":"self"},"id":7762,"name":"Identifier","src":"14542:4:20"}],"id":7763,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7744,"type":"struct strings.slice memory","value":"self"},"id":7764,"name":"Identifier","src":"14554:4:20"}],"id":7765,"name":"MemberAccess","src":"14554:9:20"}],"id":7766,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7746,"type":"struct strings.slice memory","value":"needle"},"id":7767,"name":"Identifier","src":"14566:6:20"}],"id":7768,"name":"MemberAccess","src":"14566:11:20"}],"id":7769,"name":"BinaryOperation","src":"14542:35:20"}],"id":7770,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7761,"type":"uint256","value":"selfptr"},"id":7771,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7746,"type":"struct strings.slice memory","value":"needle"},"id":7772,"name":"Identifier","src":"14603:6:20"}],"id":7773,"name":"MemberAccess","src":"14603:11:20"}],"id":7774,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":7750},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7775,"name":"Literal","src":"14637:4:20"}],"id":7776,"name":"Return","src":"14630:11:20"}],"id":7777,"name":"Block","src":"14616:36:20"}],"id":7778,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[7780],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":7785,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7779,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":7780,"name":"VariableDeclaration","src":"14662:10:20"}],"id":7781,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":7746,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":7780,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":7746,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":7761,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7782,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":7750},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7780,"type":"bool","value":"equal"},"id":7783,"name":"Identifier","src":"14895:5:20"}],"id":7784,"name":"Return","src":"14888:12:20"}],"id":7785,"name":"Block","src":"14441:466:20"}],"id":7786,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7839,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7787,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":7788,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":7839,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7789,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":7790,"name":"VariableDeclaration","src":"15205:19:20"}],"id":7791,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7839,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":7792,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":7793,"name":"VariableDeclaration","src":"15249:12:20"}],"id":7794,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7795,"name":"Identifier","src":"15277:4:20"}],"id":7796,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7797,"name":"Identifier","src":"15289:6:20"}],"id":7798,"name":"MemberAccess","src":"15289:11:20"}],"id":7799,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7800,"name":"Identifier","src":"15323:4:20"}],"id":7801,"name":"Return","src":"15316:11:20"}],"id":7802,"name":"Block","src":"15302:36:20"}],"id":7803,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[7805]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7838,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7804,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":7805,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7806,"name":"Identifier","src":"15363:4:20"}],"id":7807,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7808,"name":"Identifier","src":"15375:4:20"}],"id":7809,"name":"MemberAccess","src":"15375:9:20"}],"id":7810,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7811,"name":"Identifier","src":"15387:6:20"}],"id":7812,"name":"MemberAccess","src":"15387:11:20"}],"id":7813,"name":"BinaryOperation","src":"15363:35:20"}],"id":7814,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[7816]},"children":[{"attributes":{"constant":false,"name":"equal","scope":7838,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7815,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":7816,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7817,"name":"Literal","src":"15421:4:20"}],"id":7818,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7805,"type":"uint256","value":"selfptr"},"id":7819,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7820,"name":"Identifier","src":"15450:6:20"}],"id":7821,"name":"MemberAccess","src":"15450:11:20"}],"id":7822,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":7790,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":7816,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":7790,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":7805,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":7823,"name":"InlineAssembly","src":"15477:212:20"}],"id":7824,"name":"Block","src":"15463:236:20"}],"id":7825,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7816,"type":"bool","value":"equal"},"id":7826,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7827,"name":"Identifier","src":"15734:4:20"}],"id":7829,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7790,"type":"struct strings.slice memory","value":"needle"},"id":7830,"name":"Identifier","src":"15747:6:20"}],"id":7831,"name":"MemberAccess","src":"15747:11:20"}],"id":7832,"name":"Assignment","src":"15734:24:20"}],"id":7833,"name":"ExpressionStatement","src":"15734:24:20"}],"id":7834,"name":"Block","src":"15720:49:20"}],"id":7835,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":7794},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7788,"type":"struct strings.slice memory","value":"self"},"id":7836,"name":"Identifier","src":"15786:4:20"}],"id":7837,"name":"Return","src":"15779:11:20"}],"id":7838,"name":"Block","src":"15263:534:20"}],"id":7839,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7840,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":7841,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7842,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":7843,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7844,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":7845,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7846,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":7847,"name":"VariableDeclaration","src":"16015:14:20"}],"id":7848,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7960,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7849,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":7850,"name":"VariableDeclaration","src":"16053:4:20"}],"id":7851,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[7853]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7959,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7852,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":7853,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7843,"type":"uint256","value":"selfptr"},"id":7854,"name":"Identifier","src":"16080:7:20"}],"id":7855,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[7857],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":7959,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7856,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":7857,"name":"VariableDeclaration","src":"16097:8:20"}],"id":7858,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7859,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7860,"name":"Identifier","src":"16133:7:20"}],"id":7861,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7862,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7863,"name":"Literal","src":"16173:2:20"}],"id":7864,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[7866]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7918,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7865,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":7866,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7867,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7868,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7869,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7870,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7871,"name":"Identifier","src":"16236:9:20"}],"id":7872,"name":"BinaryOperation","src":"16231:14:20"}],"id":7873,"name":"TupleExpression","src":"16230:16:20"}],"id":7874,"name":"BinaryOperation","src":"16226:20:20"}],"id":7875,"name":"TupleExpression","src":"16225:22:20"}],"id":7876,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7877,"name":"Literal","src":"16250:1:20"}],"id":7878,"name":"BinaryOperation","src":"16220:31:20"}],"id":7879,"name":"TupleExpression","src":"16219:33:20"}],"id":7880,"name":"UnaryOperation","src":"16218:34:20"}],"id":7881,"name":"FunctionCall","src":"16210:43:20"}],"id":7882,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[7884],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":7918,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7883,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":7884,"name":"VariableDeclaration","src":"16272:18:20"}],"id":7885,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":7884,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":7847,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":7866,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":7886,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[7888]},"children":[{"attributes":{"constant":false,"name":"end","scope":7918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7887,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":7888,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7843,"type":"uint256","value":"selfptr"},"id":7889,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7890,"name":"Identifier","src":"16401:7:20"}],"id":7891,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7892,"name":"Identifier","src":"16411:9:20"}],"id":7893,"name":"BinaryOperation","src":"16391:29:20"}],"id":7894,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[7896],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":7918,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7895,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":7896,"name":"VariableDeclaration","src":"16438:15:20"}],"id":7897,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":7896,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":7853,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":7866,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":7898,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7896,"type":"bytes32","value":"ptrdata"},"id":7899,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7884,"type":"bytes32","value":"needledata"},"id":7900,"name":"Identifier","src":"16552:10:20"}],"id":7901,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7902,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7888,"type":"uint256","value":"end"},"id":7903,"name":"Identifier","src":"16597:3:20"}],"id":7904,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":7851},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7843,"type":"uint256","value":"selfptr"},"id":7905,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7906,"name":"Identifier","src":"16643:7:20"}],"id":7907,"name":"BinaryOperation","src":"16633:17:20"}],"id":7908,"name":"Return","src":"16626:24:20"}],"id":7909,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7910,"name":"Identifier","src":"16672:3:20"}],"id":7911,"name":"UnaryOperation","src":"16672:5:20"}],"id":7912,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":7896,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":7853,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":7866,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":7913,"name":"InlineAssembly","src":"16699:45:20"}],"id":7914,"name":"Block","src":"16564:198:20"}],"id":7915,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":7851},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7916,"name":"Identifier","src":"16786:3:20"}],"id":7917,"name":"Return","src":"16779:10:20"}],"id":7918,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[7920],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":7951,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7919,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":7920,"name":"VariableDeclaration","src":"16877:12:20"}],"id":7921,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":7920,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":7847,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":7845,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":7922,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7857,"type":"uint256","value":"idx"},"id":7923,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7924,"name":"Literal","src":"16988:1:20"}],"id":7925,"name":"Assignment","src":"16982:7:20"}],"id":7926,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7857,"type":"uint256","value":"idx"},"id":7927,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7928,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7845,"type":"uint256","value":"needlelen"},"id":7929,"name":"Identifier","src":"17008:9:20"}],"id":7930,"name":"BinaryOperation","src":"16998:19:20"}],"id":7931,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7857,"type":"uint256","value":"idx"},"id":7932,"name":"Identifier","src":"17019:3:20"}],"id":7933,"name":"UnaryOperation","src":"17019:5:20"}],"id":7934,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[7936],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":7949,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7935,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":7936,"name":"VariableDeclaration","src":"17048:16:20"}],"id":7937,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":7936,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":7853,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":7845,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":7938,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7920,"type":"bytes32","value":"hash"},"id":7939,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7936,"type":"bytes32","value":"testHash"},"id":7940,"name":"Identifier","src":"17169:8:20"}],"id":7941,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":7851},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7942,"name":"Identifier","src":"17210:3:20"}],"id":7943,"name":"Return","src":"17203:10:20"}],"id":7944,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7853,"type":"uint256","value":"ptr"},"id":7945,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7946,"name":"Literal","src":"17242:1:20"}],"id":7947,"name":"Assignment","src":"17235:8:20"}],"id":7948,"name":"ExpressionStatement","src":"17235:8:20"}],"id":7949,"name":"Block","src":"17026:236:20"}],"id":7950,"name":"ForStatement","src":"16977:285:20"}],"id":7951,"name":"Block","src":"16810:466:20"}],"id":7952,"name":"IfStatement","src":"16156:1120:20"}],"id":7953,"name":"Block","src":"16142:1144:20"}],"id":7954,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":7851},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7843,"type":"uint256","value":"selfptr"},"id":7955,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7841,"type":"uint256","value":"selflen"},"id":7956,"name":"Identifier","src":"17312:7:20"}],"id":7957,"name":"BinaryOperation","src":"17302:17:20"}],"id":7958,"name":"Return","src":"17295:24:20"}],"id":7959,"name":"Block","src":"16059:1267:20"}],"id":7960,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7961,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":7962,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7963,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":7964,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7965,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":7966,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7967,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":7968,"name":"VariableDeclaration","src":"17541:14:20"}],"id":7969,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7970,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":7971,"name":"VariableDeclaration","src":"17579:4:20"}],"id":7972,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[7974],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7973,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":7974,"name":"VariableDeclaration","src":"17595:8:20"}],"id":7975,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":7976,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7962,"type":"uint256","value":"selflen"},"id":7977,"name":"Identifier","src":"17631:7:20"}],"id":7978,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":7979,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7980,"name":"Literal","src":"17671:2:20"}],"id":7981,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[7983]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7982,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":7983,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7984,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7985,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7986,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7987,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":7988,"name":"Identifier","src":"17734:9:20"}],"id":7989,"name":"BinaryOperation","src":"17729:14:20"}],"id":7990,"name":"TupleExpression","src":"17728:16:20"}],"id":7991,"name":"BinaryOperation","src":"17724:20:20"}],"id":7992,"name":"TupleExpression","src":"17723:22:20"}],"id":7993,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7994,"name":"Literal","src":"17748:1:20"}],"id":7995,"name":"BinaryOperation","src":"17718:31:20"}],"id":7996,"name":"TupleExpression","src":"17717:33:20"}],"id":7997,"name":"UnaryOperation","src":"17716:34:20"}],"id":7998,"name":"FunctionCall","src":"17708:43:20"}],"id":7999,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[8001],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8000,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":8001,"name":"VariableDeclaration","src":"17770:18:20"}],"id":8002,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8001,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":7968,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":7983,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8003,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8004,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8005,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7962,"type":"uint256","value":"selflen"},"id":8006,"name":"Identifier","src":"17894:7:20"}],"id":8007,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":8008,"name":"Identifier","src":"17904:9:20"}],"id":8009,"name":"BinaryOperation","src":"17884:29:20"}],"id":8010,"name":"Assignment","src":"17878:35:20"}],"id":8011,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[8013],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8012,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":8013,"name":"VariableDeclaration","src":"17931:15:20"}],"id":8014,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8013,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":7974,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":7983,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8015,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8013,"type":"bytes32","value":"ptrdata"},"id":8016,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8001,"type":"bytes32","value":"needledata"},"id":8017,"name":"Identifier","src":"18045:10:20"}],"id":8018,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8019,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8020,"name":"Identifier","src":"18090:7:20"}],"id":8021,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":7972},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8022,"name":"Identifier","src":"18130:7:20"}],"id":8023,"name":"Return","src":"18123:14:20"}],"id":8024,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8025,"name":"Identifier","src":"18159:3:20"}],"id":8026,"name":"UnaryOperation","src":"18159:5:20"}],"id":8027,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8013,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":7974,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":7983,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8028,"name":"InlineAssembly","src":"18186:45:20"}],"id":8029,"name":"Block","src":"18057:192:20"}],"id":8030,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":7972},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8031,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":8032,"name":"Identifier","src":"18279:9:20"}],"id":8033,"name":"BinaryOperation","src":"18273:15:20"}],"id":8034,"name":"Return","src":"18266:22:20"}],"id":8035,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[8037],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8070,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8036,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":8037,"name":"VariableDeclaration","src":"18376:12:20"}],"id":8038,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8037,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":7968,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":7966,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8039,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8040,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8041,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7962,"type":"uint256","value":"selflen"},"id":8042,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":8043,"name":"Identifier","src":"18502:9:20"}],"id":8044,"name":"BinaryOperation","src":"18492:19:20"}],"id":8045,"name":"TupleExpression","src":"18491:21:20"}],"id":8046,"name":"BinaryOperation","src":"18481:31:20"}],"id":8047,"name":"Assignment","src":"18475:37:20"}],"id":8048,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8049,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8050,"name":"Identifier","src":"18544:7:20"}],"id":8051,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[8053],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8052,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":8053,"name":"VariableDeclaration","src":"18575:16:20"}],"id":8054,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8053,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":7974,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":7966,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8055,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8037,"type":"bytes32","value":"hash"},"id":8056,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8053,"type":"bytes32","value":"testHash"},"id":8057,"name":"Identifier","src":"18696:8:20"}],"id":8058,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":7972},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8059,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"uint256","value":"needlelen"},"id":8060,"name":"Identifier","src":"18743:9:20"}],"id":8061,"name":"BinaryOperation","src":"18737:15:20"}],"id":8062,"name":"Return","src":"18730:22:20"}],"id":8063,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7974,"type":"uint256","value":"ptr"},"id":8064,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8065,"name":"Literal","src":"18781:1:20"}],"id":8066,"name":"Assignment","src":"18774:8:20"}],"id":8067,"name":"ExpressionStatement","src":"18774:8:20"}],"id":8068,"name":"Block","src":"18553:248:20"}],"id":8069,"name":"WhileStatement","src":"18530:271:20"}],"id":8070,"name":"Block","src":"18309:506:20"}],"id":8071,"name":"IfStatement","src":"17654:1161:20"}],"id":8072,"name":"Block","src":"17640:1185:20"}],"id":8073,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":7972},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7964,"type":"uint256","value":"selfptr"},"id":8074,"name":"Identifier","src":"18841:7:20"}],"id":8075,"name":"Return","src":"18834:14:20"}],"id":8076,"name":"Block","src":"17585:1270:20"}],"id":8077,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8117,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8078,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":8079,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8117,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8080,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":8081,"name":"VariableDeclaration","src":"19224:19:20"}],"id":8082,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8117,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8083,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":8084,"name":"VariableDeclaration","src":"19268:12:20"}],"id":8085,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[8087]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8116,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8086,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":8087,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7960,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8088,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8089,"name":"Identifier","src":"19311:4:20"}],"id":8090,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8091,"name":"Identifier","src":"19322:4:20"}],"id":8092,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8081,"type":"struct strings.slice memory","value":"needle"},"id":8093,"name":"Identifier","src":"19333:6:20"}],"id":8094,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8081,"type":"struct strings.slice memory","value":"needle"},"id":8095,"name":"Identifier","src":"19346:6:20"}],"id":8096,"name":"MemberAccess","src":"19346:11:20"}],"id":8097,"name":"FunctionCall","src":"19303:55:20"}],"id":8098,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8099,"name":"Identifier","src":"19368:4:20"}],"id":8101,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8087,"type":"uint256","value":"ptr"},"id":8102,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8103,"name":"Identifier","src":"19387:4:20"}],"id":8104,"name":"MemberAccess","src":"19387:9:20"}],"id":8105,"name":"BinaryOperation","src":"19381:15:20"}],"id":8106,"name":"Assignment","src":"19368:28:20"}],"id":8107,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8108,"name":"Identifier","src":"19406:4:20"}],"id":8110,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8087,"type":"uint256","value":"ptr"},"id":8111,"name":"Identifier","src":"19418:3:20"}],"id":8112,"name":"Assignment","src":"19406:15:20"}],"id":8113,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":8085},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8079,"type":"struct strings.slice memory","value":"self"},"id":8114,"name":"Identifier","src":"19438:4:20"}],"id":8115,"name":"Return","src":"19431:11:20"}],"id":8116,"name":"Block","src":"19282:167:20"}],"id":8117,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8151,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8118,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":8119,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8151,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8120,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":8121,"name":"VariableDeclaration","src":"19842:19:20"}],"id":8122,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8151,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8123,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":8124,"name":"VariableDeclaration","src":"19886:12:20"}],"id":8125,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[8127]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8150,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8126,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":8127,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8077,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8128,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8129,"name":"Identifier","src":"19930:4:20"}],"id":8130,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8131,"name":"Identifier","src":"19941:4:20"}],"id":8132,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"struct strings.slice memory","value":"needle"},"id":8133,"name":"Identifier","src":"19952:6:20"}],"id":8134,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8121,"type":"struct strings.slice memory","value":"needle"},"id":8135,"name":"Identifier","src":"19965:6:20"}],"id":8136,"name":"MemberAccess","src":"19965:11:20"}],"id":8137,"name":"FunctionCall","src":"19921:56:20"}],"id":8138,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8139,"name":"Identifier","src":"19987:4:20"}],"id":8141,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8127,"type":"uint256","value":"ptr"},"id":8142,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8143,"name":"Identifier","src":"20005:4:20"}],"id":8144,"name":"MemberAccess","src":"20005:9:20"}],"id":8145,"name":"BinaryOperation","src":"19999:15:20"}],"id":8146,"name":"Assignment","src":"19987:27:20"}],"id":8147,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":8125},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8119,"type":"struct strings.slice memory","value":"self"},"id":8148,"name":"Identifier","src":"20031:4:20"}],"id":8149,"name":"Return","src":"20024:11:20"}],"id":8150,"name":"Block","src":"19900:142:20"}],"id":8151,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8152,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":8153,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8154,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":8155,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":8229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8156,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":8157,"name":"VariableDeclaration","src":"20603:18:20"}],"id":8158,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8229,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8159,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":8160,"name":"VariableDeclaration","src":"20646:12:20"}],"id":8161,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[8163]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8162,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":8163,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7960,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8164,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8165,"name":"Identifier","src":"20689:4:20"}],"id":8166,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8167,"name":"Identifier","src":"20700:4:20"}],"id":8168,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8155,"type":"struct strings.slice memory","value":"needle"},"id":8169,"name":"Identifier","src":"20711:6:20"}],"id":8170,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8155,"type":"struct strings.slice memory","value":"needle"},"id":8171,"name":"Identifier","src":"20724:6:20"}],"id":8172,"name":"MemberAccess","src":"20724:11:20"}],"id":8173,"name":"FunctionCall","src":"20681:55:20"}],"id":8174,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"struct strings.slice memory","value":"token"},"id":8175,"name":"Identifier","src":"20746:5:20"}],"id":8177,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8178,"name":"Identifier","src":"20759:4:20"}],"id":8179,"name":"MemberAccess","src":"20759:9:20"}],"id":8180,"name":"Assignment","src":"20746:22:20"}],"id":8181,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"struct strings.slice memory","value":"token"},"id":8182,"name":"Identifier","src":"20778:5:20"}],"id":8184,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"uint256","value":"ptr"},"id":8185,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8186,"name":"Identifier","src":"20797:4:20"}],"id":8187,"name":"MemberAccess","src":"20797:9:20"}],"id":8188,"name":"BinaryOperation","src":"20791:15:20"}],"id":8189,"name":"Assignment","src":"20778:28:20"}],"id":8190,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"uint256","value":"ptr"},"id":8191,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8192,"name":"Identifier","src":"20827:4:20"}],"id":8193,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8194,"name":"Identifier","src":"20839:4:20"}],"id":8195,"name":"MemberAccess","src":"20839:9:20"}],"id":8196,"name":"BinaryOperation","src":"20827:21:20"}],"id":8197,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8198,"name":"Identifier","src":"20889:4:20"}],"id":8200,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8201,"name":"Literal","src":"20901:1:20"}],"id":8202,"name":"Assignment","src":"20889:13:20"}],"id":8203,"name":"ExpressionStatement","src":"20889:13:20"}],"id":8204,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8205,"name":"Identifier","src":"20933:4:20"}],"id":8207,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"struct strings.slice memory","value":"token"},"id":8208,"name":"Identifier","src":"20946:5:20"}],"id":8209,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8155,"type":"struct strings.slice memory","value":"needle"},"id":8210,"name":"Identifier","src":"20959:6:20"}],"id":8211,"name":"MemberAccess","src":"20959:11:20"}],"id":8212,"name":"BinaryOperation","src":"20946:24:20"}],"id":8213,"name":"Assignment","src":"20933:37:20"}],"id":8214,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8153,"type":"struct strings.slice memory","value":"self"},"id":8215,"name":"Identifier","src":"20984:4:20"}],"id":8217,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8163,"type":"uint256","value":"ptr"},"id":8218,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8155,"type":"struct strings.slice memory","value":"needle"},"id":8219,"name":"Identifier","src":"21002:6:20"}],"id":8220,"name":"MemberAccess","src":"21002:11:20"}],"id":8221,"name":"BinaryOperation","src":"20996:17:20"}],"id":8222,"name":"Assignment","src":"20984:29:20"}],"id":8223,"name":"ExpressionStatement","src":"20984:29:20"}],"id":8224,"name":"Block","src":"20919:105:20"}],"id":8225,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":8161},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"struct strings.slice memory","value":"token"},"id":8226,"name":"Identifier","src":"21040:5:20"}],"id":8227,"name":"Return","src":"21033:12:20"}],"id":8228,"name":"Block","src":"20660:392:20"}],"id":8229,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8245,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8230,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":8231,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8245,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8232,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":8233,"name":"VariableDeclaration","src":"21557:19:20"}],"id":8234,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8245,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8235,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":8236,"name":"VariableDeclaration","src":"21601:18:20"}],"id":8237,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8229,8245],"referencedDeclaration":8229,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":8238,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8231,"type":"struct strings.slice memory","value":"self"},"id":8239,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8233,"type":"struct strings.slice memory","value":"needle"},"id":8240,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8236,"type":"struct strings.slice memory","value":"token"},"id":8241,"name":"Identifier","src":"21651:5:20"}],"id":8242,"name":"FunctionCall","src":"21631:26:20"}],"id":8243,"name":"ExpressionStatement","src":"21631:26:20"}],"id":8244,"name":"Block","src":"21621:43:20"}],"id":8245,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8314,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8246,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":8247,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8314,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8248,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":8249,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":8314,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8250,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":8251,"name":"VariableDeclaration","src":"22225:18:20"}],"id":8252,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8314,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8253,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":8254,"name":"VariableDeclaration","src":"22268:12:20"}],"id":8255,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[8257]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8313,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8256,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":8257,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8077,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8258,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8259,"name":"Identifier","src":"22312:4:20"}],"id":8260,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8261,"name":"Identifier","src":"22323:4:20"}],"id":8262,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8249,"type":"struct strings.slice memory","value":"needle"},"id":8263,"name":"Identifier","src":"22334:6:20"}],"id":8264,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8249,"type":"struct strings.slice memory","value":"needle"},"id":8265,"name":"Identifier","src":"22347:6:20"}],"id":8266,"name":"MemberAccess","src":"22347:11:20"}],"id":8267,"name":"FunctionCall","src":"22303:56:20"}],"id":8268,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8251,"type":"struct strings.slice memory","value":"token"},"id":8269,"name":"Identifier","src":"22369:5:20"}],"id":8271,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8257,"type":"uint256","value":"ptr"},"id":8272,"name":"Identifier","src":"22382:3:20"}],"id":8273,"name":"Assignment","src":"22369:16:20"}],"id":8274,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8251,"type":"struct strings.slice memory","value":"token"},"id":8275,"name":"Identifier","src":"22395:5:20"}],"id":8277,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8278,"name":"Identifier","src":"22408:4:20"}],"id":8279,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8257,"type":"uint256","value":"ptr"},"id":8280,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8281,"name":"Identifier","src":"22427:4:20"}],"id":8282,"name":"MemberAccess","src":"22427:9:20"}],"id":8283,"name":"BinaryOperation","src":"22421:15:20"}],"id":8284,"name":"TupleExpression","src":"22420:17:20"}],"id":8285,"name":"BinaryOperation","src":"22408:29:20"}],"id":8286,"name":"Assignment","src":"22395:42:20"}],"id":8287,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8257,"type":"uint256","value":"ptr"},"id":8288,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8289,"name":"Identifier","src":"22458:4:20"}],"id":8290,"name":"MemberAccess","src":"22458:9:20"}],"id":8291,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8292,"name":"Identifier","src":"22508:4:20"}],"id":8294,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8295,"name":"Literal","src":"22520:1:20"}],"id":8296,"name":"Assignment","src":"22508:13:20"}],"id":8297,"name":"ExpressionStatement","src":"22508:13:20"}],"id":8298,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8247,"type":"struct strings.slice memory","value":"self"},"id":8299,"name":"Identifier","src":"22552:4:20"}],"id":8301,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8251,"type":"struct strings.slice memory","value":"token"},"id":8302,"name":"Identifier","src":"22565:5:20"}],"id":8303,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8249,"type":"struct strings.slice memory","value":"needle"},"id":8304,"name":"Identifier","src":"22578:6:20"}],"id":8305,"name":"MemberAccess","src":"22578:11:20"}],"id":8306,"name":"BinaryOperation","src":"22565:24:20"}],"id":8307,"name":"Assignment","src":"22552:37:20"}],"id":8308,"name":"ExpressionStatement","src":"22552:37:20"}],"id":8309,"name":"Block","src":"22538:62:20"}],"id":8310,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":8255},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8251,"type":"struct strings.slice memory","value":"token"},"id":8311,"name":"Identifier","src":"22616:5:20"}],"id":8312,"name":"Return","src":"22609:12:20"}],"id":8313,"name":"Block","src":"22282:346:20"}],"id":8314,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8330,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8315,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":8316,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8330,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8317,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":8318,"name":"VariableDeclaration","src":"23132:19:20"}],"id":8319,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8330,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8320,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":8321,"name":"VariableDeclaration","src":"23176:18:20"}],"id":8322,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$6876_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8314,8330],"referencedDeclaration":8314,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":8323,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8316,"type":"struct strings.slice memory","value":"self"},"id":8324,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8318,"type":"struct strings.slice memory","value":"needle"},"id":8325,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8321,"type":"struct strings.slice memory","value":"token"},"id":8326,"name":"Identifier","src":"23227:5:20"}],"id":8327,"name":"FunctionCall","src":"23206:27:20"}],"id":8328,"name":"ExpressionStatement","src":"23206:27:20"}],"id":8329,"name":"Block","src":"23196:44:20"}],"id":8330,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8389,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8331,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":8332,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8389,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8333,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":8334,"name":"VariableDeclaration","src":"23543:19:20"}],"id":8335,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":8389,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8336,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":8337,"name":"VariableDeclaration","src":"23587:8:20"}],"id":8338,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[8340]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8339,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":8340,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7960,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8341,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8342,"name":"Identifier","src":"23626:4:20"}],"id":8343,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8344,"name":"Identifier","src":"23637:4:20"}],"id":8345,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8346,"name":"Identifier","src":"23648:6:20"}],"id":8347,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8348,"name":"Identifier","src":"23661:6:20"}],"id":8349,"name":"MemberAccess","src":"23661:11:20"}],"id":8350,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8351,"name":"Identifier","src":"23676:6:20"}],"id":8352,"name":"MemberAccess","src":"23676:11:20"}],"id":8353,"name":"BinaryOperation","src":"23618:69:20"}],"id":8354,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8340,"type":"uint256","value":"ptr"},"id":8355,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8356,"name":"Identifier","src":"23711:4:20"}],"id":8357,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8358,"name":"Identifier","src":"23723:4:20"}],"id":8359,"name":"MemberAccess","src":"23723:9:20"}],"id":8360,"name":"BinaryOperation","src":"23711:21:20"}],"id":8361,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8337,"type":"uint256","value":"cnt"},"id":8362,"name":"Identifier","src":"23748:3:20"}],"id":8363,"name":"UnaryOperation","src":"23748:5:20"}],"id":8364,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8340,"type":"uint256","value":"ptr"},"id":8365,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7960,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8366,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8367,"name":"Identifier","src":"23781:4:20"}],"id":8368,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8340,"type":"uint256","value":"ptr"},"id":8369,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8332,"type":"struct strings.slice memory","value":"self"},"id":8370,"name":"Identifier","src":"23800:4:20"}],"id":8371,"name":"MemberAccess","src":"23800:9:20"}],"id":8372,"name":"BinaryOperation","src":"23794:15:20"}],"id":8373,"name":"TupleExpression","src":"23793:17:20"}],"id":8374,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8340,"type":"uint256","value":"ptr"},"id":8375,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8376,"name":"Identifier","src":"23817:6:20"}],"id":8377,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8378,"name":"Identifier","src":"23830:6:20"}],"id":8379,"name":"MemberAccess","src":"23830:11:20"}],"id":8380,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8334,"type":"struct strings.slice memory","value":"needle"},"id":8381,"name":"Identifier","src":"23845:6:20"}],"id":8382,"name":"MemberAccess","src":"23845:11:20"}],"id":8383,"name":"BinaryOperation","src":"23773:83:20"}],"id":8384,"name":"Assignment","src":"23767:89:20"}],"id":8385,"name":"ExpressionStatement","src":"23767:89:20"}],"id":8386,"name":"Block","src":"23734:133:20"}],"id":8387,"name":"WhileStatement","src":"23697:170:20"}],"id":8388,"name":"Block","src":"23597:276:20"}],"id":8389,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8413,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8390,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":8391,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8413,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8392,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":8393,"name":"VariableDeclaration","src":"24149:19:20"}],"id":8394,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8413,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8395,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":8396,"name":"VariableDeclaration","src":"24193:4:20"}],"id":8397,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":8397},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8077,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8398,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8391,"type":"struct strings.slice memory","value":"self"},"id":8399,"name":"Identifier","src":"24225:4:20"}],"id":8400,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8391,"type":"struct strings.slice memory","value":"self"},"id":8401,"name":"Identifier","src":"24236:4:20"}],"id":8402,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8393,"type":"struct strings.slice memory","value":"needle"},"id":8403,"name":"Identifier","src":"24247:6:20"}],"id":8404,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8393,"type":"struct strings.slice memory","value":"needle"},"id":8405,"name":"Identifier","src":"24260:6:20"}],"id":8406,"name":"MemberAccess","src":"24260:11:20"}],"id":8407,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8391,"type":"struct strings.slice memory","value":"self"},"id":8408,"name":"Identifier","src":"24276:4:20"}],"id":8409,"name":"MemberAccess","src":"24276:9:20"}],"id":8410,"name":"BinaryOperation","src":"24216:69:20"}],"id":8411,"name":"Return","src":"24209:76:20"}],"id":8412,"name":"Block","src":"24199:93:20"}],"id":8413,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8459,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8414,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":8415,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":8459,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8416,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":8417,"name":"VariableDeclaration","src":"24614:18:20"}],"id":8418,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8459,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8419,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":8420,"name":"VariableDeclaration","src":"24657:13:20"}],"id":8421,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[8423]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8458,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8422,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":8423,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8424,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":8425,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8415,"type":"struct strings.slice memory","value":"self"},"id":8426,"name":"Identifier","src":"24713:4:20"}],"id":8427,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8417,"type":"struct strings.slice memory","value":"other"},"id":8428,"name":"Identifier","src":"24725:5:20"}],"id":8429,"name":"MemberAccess","src":"24725:10:20"}],"id":8430,"name":"BinaryOperation","src":"24713:22:20"}],"id":8431,"name":"FunctionCall","src":"24702:34:20"}],"id":8432,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[8434],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8433,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":8434,"name":"VariableDeclaration","src":"24746:11:20"}],"id":8435,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8434,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":8423,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8436,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8437,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8434,"type":"uint256","value":"retptr"},"id":8438,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8415,"type":"struct strings.slice memory","value":"self"},"id":8439,"name":"Identifier","src":"24826:4:20"}],"id":8440,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8415,"type":"struct strings.slice memory","value":"self"},"id":8441,"name":"Identifier","src":"24837:4:20"}],"id":8442,"name":"MemberAccess","src":"24837:9:20"}],"id":8443,"name":"FunctionCall","src":"24811:36:20"}],"id":8444,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8445,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8434,"type":"uint256","value":"retptr"},"id":8446,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8415,"type":"struct strings.slice memory","value":"self"},"id":8447,"name":"Identifier","src":"24873:4:20"}],"id":8448,"name":"MemberAccess","src":"24873:9:20"}],"id":8449,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8417,"type":"struct strings.slice memory","value":"other"},"id":8450,"name":"Identifier","src":"24884:5:20"}],"id":8451,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8417,"type":"struct strings.slice memory","value":"other"},"id":8452,"name":"Identifier","src":"24896:5:20"}],"id":8453,"name":"MemberAccess","src":"24896:10:20"}],"id":8454,"name":"FunctionCall","src":"24857:50:20"}],"id":8455,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":8421},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8423,"type":"string memory","value":"ret"},"id":8456,"name":"Identifier","src":"24924:3:20"}],"id":8457,"name":"Return","src":"24917:10:20"}],"id":8458,"name":"Block","src":"24672:262:20"}],"id":8459,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":8575,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8574,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8460,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":8461,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":8574,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":6876,"type":"struct strings.slice"},"id":8462,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":8463,"name":"ArrayTypeName","src":"25303:7:20"}],"id":8464,"name":"VariableDeclaration","src":"25303:20:20"}],"id":8465,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8574,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8466,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":8467,"name":"VariableDeclaration","src":"25348:13:20"}],"id":8468,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8469,"name":"Identifier","src":"25377:5:20"}],"id":8470,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8471,"name":"Literal","src":"25393:1:20"}],"id":8472,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":8468},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":8473,"name":"Literal","src":"25415:2:20"}],"id":8474,"name":"Return","src":"25408:9:20"}],"id":8475,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[8477]},"children":[{"attributes":{"constant":false,"name":"length","scope":8573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8476,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":8477,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"self"},"id":8478,"name":"Identifier","src":"25442:4:20"}],"id":8479,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8480,"name":"Identifier","src":"25455:5:20"}],"id":8481,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8482,"name":"Literal","src":"25470:1:20"}],"id":8483,"name":"BinaryOperation","src":"25455:16:20"}],"id":8484,"name":"TupleExpression","src":"25454:18:20"}],"id":8485,"name":"BinaryOperation","src":"25442:30:20"}],"id":8486,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[8488]},"children":[{"attributes":{"constant":false,"name":"i","scope":8506,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8487,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":8488,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8489,"name":"Literal","src":"25496:1:20"}],"id":8490,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8488,"type":"uint256","value":"i"},"id":8491,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8492,"name":"Identifier","src":"25503:5:20"}],"id":8493,"name":"MemberAccess","src":"25503:12:20"}],"id":8494,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8488,"type":"uint256","value":"i"},"id":8495,"name":"Identifier","src":"25517:1:20"}],"id":8496,"name":"UnaryOperation","src":"25517:3:20"}],"id":8497,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8477,"type":"uint256","value":"length"},"id":8498,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8499,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8488,"type":"uint256","value":"i"},"id":8500,"name":"Identifier","src":"25552:1:20"}],"id":8501,"name":"IndexAccess","src":"25546:8:20"}],"id":8502,"name":"MemberAccess","src":"25546:13:20"}],"id":8503,"name":"Assignment","src":"25536:23:20"}],"id":8504,"name":"ExpressionStatement","src":"25536:23:20"}],"id":8505,"name":"Block","src":"25522:48:20"}],"id":8506,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[8508]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8573,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8507,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":8508,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8509,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":8510,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8477,"type":"uint256","value":"length"},"id":8511,"name":"Identifier","src":"25611:6:20"}],"id":8512,"name":"FunctionCall","src":"25600:18:20"}],"id":8513,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[8515],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8514,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":8515,"name":"VariableDeclaration","src":"25628:11:20"}],"id":8516,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8515,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":8508,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8517,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[8519]},"children":[{"attributes":{"constant":false,"name":"i","scope":8570,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8518,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":8519,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8520,"name":"Literal","src":"25708:1:20"}],"id":8521,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8522,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8523,"name":"Identifier","src":"25715:5:20"}],"id":8524,"name":"MemberAccess","src":"25715:12:20"}],"id":8525,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8526,"name":"Identifier","src":"25729:1:20"}],"id":8527,"name":"UnaryOperation","src":"25729:3:20"}],"id":8528,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8529,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"retptr"},"id":8530,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8531,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8532,"name":"Identifier","src":"25769:1:20"}],"id":8533,"name":"IndexAccess","src":"25763:8:20"}],"id":8534,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8535,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8536,"name":"Identifier","src":"25784:1:20"}],"id":8537,"name":"IndexAccess","src":"25778:8:20"}],"id":8538,"name":"MemberAccess","src":"25778:13:20"}],"id":8539,"name":"FunctionCall","src":"25748:44:20"}],"id":8540,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"retptr"},"id":8541,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8542,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8543,"name":"Identifier","src":"25822:1:20"}],"id":8544,"name":"IndexAccess","src":"25816:8:20"}],"id":8545,"name":"MemberAccess","src":"25816:13:20"}],"id":8546,"name":"Assignment","src":"25806:23:20"}],"id":8547,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8519,"type":"uint256","value":"i"},"id":8548,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8464,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8549,"name":"Identifier","src":"25851:5:20"}],"id":8550,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8551,"name":"Literal","src":"25866:1:20"}],"id":8552,"name":"BinaryOperation","src":"25851:16:20"}],"id":8553,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6916,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8554,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"retptr"},"id":8555,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":6875,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"self"},"id":8556,"name":"Identifier","src":"25902:4:20"}],"id":8557,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"self"},"id":8558,"name":"Identifier","src":"25913:4:20"}],"id":8559,"name":"MemberAccess","src":"25913:9:20"}],"id":8560,"name":"FunctionCall","src":"25887:36:20"}],"id":8561,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"retptr"},"id":8562,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":6873,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8461,"type":"struct strings.slice memory","value":"self"},"id":8563,"name":"Identifier","src":"25951:4:20"}],"id":8564,"name":"MemberAccess","src":"25951:9:20"}],"id":8565,"name":"Assignment","src":"25941:19:20"}],"id":8566,"name":"ExpressionStatement","src":"25941:19:20"}],"id":8567,"name":"Block","src":"25869:106:20"}],"id":8568,"name":"IfStatement","src":"25843:132:20"}],"id":8569,"name":"Block","src":"25734:251:20"}],"id":8570,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":8468},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8508,"type":"string memory","value":"ret"},"id":8571,"name":"Identifier","src":"26002:3:20"}],"id":8572,"name":"Return","src":"25995:10:20"}],"id":8573,"name":"Block","src":"25363:649:20"}],"id":8574,"name":"FunctionDefinition","src":"25270:742:20"}],"id":8575,"name":"ContractDefinition","src":"2599:23415:20"}],"id":8576,"name":"SourceUnit","src":"2574:23441:20"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[2730]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2700,"name":"PragmaDirective","src":"771:24:21"},{"attributes":{"SourceUnit":2347,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":2731,"symbolAliases":[null],"unitAlias":""},"id":2701,"name":"ImportDirective","src":"797:32:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[2730],"name":"Balanceable","scope":2731},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":2730,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":2729,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2702,"name":"ElementaryTypeName","src":"1225:7:21"}],"id":2703,"name":"VariableDeclaration","src":"1225:16:21"},{"attributes":{"constant":false,"name":"_asset","scope":2729,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2704,"name":"ElementaryTypeName","src":"1243:7:21"}],"id":2705,"name":"VariableDeclaration","src":"1243:14:21"}],"id":2706,"name":"ParameterList","src":"1224:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":2729,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2707,"name":"ElementaryTypeName","src":"1282:7:21"}],"id":2708,"name":"VariableDeclaration","src":"1282:7:21"}],"id":2709,"name":"ParameterList","src":"1281:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2705,"type":"address","value":"_asset"},"id":2710,"name":"Identifier","src":"1305:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2711,"name":"ElementaryTypeNameExpression","src":"1315:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2712,"name":"Literal","src":"1323:1:21"}],"id":2713,"name":"FunctionCall","src":"1315:10:21"}],"id":2714,"name":"BinaryOperation","src":"1305:20:21"},{"children":[{"attributes":{"functionReturnParameters":2709},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":2320,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":2715,"name":"Identifier","src":"1348:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2705,"type":"address","value":"_asset"},"id":2716,"name":"Identifier","src":"1354:6:21"}],"id":2717,"name":"FunctionCall","src":"1348:13:21"}],"id":2718,"name":"MemberAccess","src":"1348:23:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2703,"type":"address","value":"_address"},"id":2719,"name":"Identifier","src":"1372:8:21"}],"id":2720,"name":"FunctionCall","src":"1348:33:21"}],"id":2721,"name":"Return","src":"1341:40:21"}],"id":2722,"name":"Block","src":"1327:65:21"},{"children":[{"attributes":{"functionReturnParameters":2709},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2703,"type":"address","value":"_address"},"id":2723,"name":"Identifier","src":"1419:8:21"}],"id":2724,"name":"MemberAccess","src":"1419:16:21"}],"id":2725,"name":"Return","src":"1412:23:21"}],"id":2726,"name":"Block","src":"1398:48:21"}],"id":2727,"name":"IfStatement","src":"1301:145:21"}],"id":2728,"name":"Block","src":"1291:161:21"}],"id":2729,"name":"FunctionDefinition","src":"1207:245:21"}],"id":2730,"name":"ContractDefinition","src":"898:556:21"}],"id":2731,"name":"SourceUnit","src":"771:684:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[8686]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":8577,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":8687,"symbolAliases":[null],"unitAlias":""},"id":8578,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[8686],"name":"BytesUtils","scope":8687},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":8579,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":8580,"name":"ElementaryTypeName","src":"955:7:22"}],"id":8581,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":8686,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8617,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8582,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":8583,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8617,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8584,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":8585,"name":"VariableDeclaration","src":"1125:13:22"}],"id":8586,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8617,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":8587,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":8588,"name":"VariableDeclaration","src":"1163:7:22"}],"id":8589,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":8590,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"bytes memory","value":"_bts"},"id":8591,"name":"Identifier","src":"1190:4:22"}],"id":8592,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"uint256","value":"_from"},"id":8593,"name":"Identifier","src":"1205:5:22"}],"id":8594,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":8595,"name":"Literal","src":"1215:2:22"}],"id":8596,"name":"FunctionCall","src":"1205:13:22"}],"id":8597,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8598,"name":"Literal","src":"1220:22:22"}],"id":8599,"name":"FunctionCall","src":"1182:61:22"}],"id":8600,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[8602],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":8616,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":8601,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":8602,"name":"VariableDeclaration","src":"1254:24:22"}],"id":8603,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[8605]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8616,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8604,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":8605,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"uint256","value":"_from"},"id":8606,"name":"Identifier","src":"1308:5:22"}],"id":8607,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8608,"name":"Literal","src":"1318:2:22"}],"id":8609,"name":"FunctionCall","src":"1308:13:22"}],"id":8610,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":8602,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":8583,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":8605,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":8611,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":8589},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":8612,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8602,"type":"bytes20","value":"convertedAddress"},"id":8613,"name":"Identifier","src":"1478:16:22"}],"id":8614,"name":"FunctionCall","src":"1470:25:22"}],"id":8615,"name":"Return","src":"1463:32:22"}],"id":8616,"name":"Block","src":"1172:330:22"}],"id":8617,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":8686,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8651,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8618,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":8619,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8651,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8620,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":8621,"name":"VariableDeclaration","src":"1670:13:22"}],"id":8622,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8651,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8623,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":8624,"name":"VariableDeclaration","src":"1708:6:22"}],"id":8625,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":8626,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8619,"type":"bytes memory","value":"_bts"},"id":8627,"name":"Identifier","src":"1734:4:22"}],"id":8628,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8621,"type":"uint256","value":"_from"},"id":8629,"name":"Identifier","src":"1749:5:22"}],"id":8630,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8631,"name":"Literal","src":"1759:1:22"}],"id":8632,"name":"FunctionCall","src":"1749:12:22"}],"id":8633,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8634,"name":"Literal","src":"1763:22:22"}],"id":8635,"name":"FunctionCall","src":"1726:60:22"}],"id":8636,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[8638],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":8650,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":8637,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":8638,"name":"VariableDeclaration","src":"1797:19:22"}],"id":8639,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[8641]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8650,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8640,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":8641,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8621,"type":"uint256","value":"_from"},"id":8642,"name":"Identifier","src":"1846:5:22"}],"id":8643,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8644,"name":"Literal","src":"1856:2:22"}],"id":8645,"name":"FunctionCall","src":"1846:13:22"}],"id":8646,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":8638,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":8619,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":8641,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":8647,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":8625},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8638,"type":"bytes4","value":"slicedBytes4"},"id":8648,"name":"Identifier","src":"2004:12:22"}],"id":8649,"name":"Return","src":"1997:19:22"}],"id":8650,"name":"Block","src":"1716:307:22"}],"id":8651,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":8686,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":8685,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":8652,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":8653,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":8685,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8654,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":8655,"name":"VariableDeclaration","src":"2417:13:22"}],"id":8656,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":8685,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8657,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":8658,"name":"VariableDeclaration","src":"2455:7:22"}],"id":8659,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":8660,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8653,"type":"bytes memory","value":"_bts"},"id":8661,"name":"Identifier","src":"2482:4:22"}],"id":8662,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8655,"type":"uint256","value":"_from"},"id":8663,"name":"Identifier","src":"2497:5:22"}],"id":8664,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8665,"name":"Literal","src":"2507:2:22"}],"id":8666,"name":"FunctionCall","src":"2497:13:22"}],"id":8667,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":8668,"name":"Literal","src":"2512:22:22"}],"id":8669,"name":"FunctionCall","src":"2474:61:22"}],"id":8670,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[8672],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":8684,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8671,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":8672,"name":"VariableDeclaration","src":"2546:24:22"}],"id":8673,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[8675]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":8684,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8674,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":8675,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8655,"type":"uint256","value":"_from"},"id":8676,"name":"Identifier","src":"2600:5:22"}],"id":8677,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8678,"name":"Literal","src":"2610:2:22"}],"id":8679,"name":"FunctionCall","src":"2600:13:22"}],"id":8680,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":8672,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}},{"_bts":{"declaration":8653,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":8675,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":8681,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":8659},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8672,"type":"uint256","value":"convertedUint256"},"id":8682,"name":"Identifier","src":"2762:16:22"}],"id":8683,"name":"Return","src":"2755:23:22"}],"id":8684,"name":"Block","src":"2464:321:22"}],"id":8685,"name":"FunctionDefinition","src":"2373:412:22"}],"id":8686,"name":"ContractDefinition","src":"911:1876:22"}],"id":8687,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[2826]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2732,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":4284,"absolutePath":"controller.sol","file":"../controller.sol","scope":2827,"symbolAliases":[null],"unitAlias":""},"id":2733,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":2872,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":2827,"symbolAliases":[null],"unitAlias":""},"id":2734,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[2871],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[2826,2871],"name":"Controllable","scope":2827},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":2735,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":2736,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":2826,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2737,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":2738,"name":"Literal","src":"1122:66:23"}],"id":2739,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":2826,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2740,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2739,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":2741,"name":"Identifier","src":"1306:24:23"}],"id":2742,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2826,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":2759,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2743,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":2744,"name":"VariableDeclaration","src":"1571:24:23"}],"id":2745,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":2746,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"bytes32","value":"_controllerNode_"},"id":2747,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2748,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2749,"name":"Literal","src":"1693:1:23"}],"id":2750,"name":"FunctionCall","src":"1685:10:23"}],"id":2751,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes32","value":"_controllerNode"},"id":2752,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"bytes32","value":"_controllerNode_"},"id":2753,"name":"Identifier","src":"1729:16:23"}],"id":2754,"name":"Assignment","src":"1711:34:23"}],"id":2755,"name":"ExpressionStatement","src":"1711:34:23"}],"id":2756,"name":"Block","src":"1697:59:23"}],"id":2757,"name":"IfStatement","src":"1661:95:23"}],"id":2758,"name":"Block","src":"1606:156:23"}],"id":2759,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2760,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2761,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2808,"type":"function (address) view returns (bool)","value":"_isController"},"id":2762,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":2763,"name":"Identifier","src":"1884:3:23"}],"id":2764,"name":"MemberAccess","src":"1884:10:23"}],"id":2765,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":2766,"name":"Literal","src":"1897:28:23"}],"id":2767,"name":"FunctionCall","src":"1862:64:23"}],"id":2768,"name":"ExpressionStatement","src":"1862:64:23"},{"id":2769,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":2770,"name":"Block","src":"1852:92:23"}],"id":2771,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2772,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2773,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":2774,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":2775,"name":"Identifier","src":"2052:3:23"}],"id":2776,"name":"MemberAccess","src":"2052:10:23"}],"id":2777,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2778,"name":"Literal","src":"2065:24:23"}],"id":2779,"name":"FunctionCall","src":"2035:55:23"}],"id":2780,"name":"ExpressionStatement","src":"2035:55:23"},{"id":2781,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":2782,"name":"Block","src":"2025:83:23"}],"id":2783,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":2826,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2784,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2791,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2785,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":2786,"name":"VariableDeclaration","src":"2216:7:23"}],"id":2787,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":2787},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes32","value":"_controllerNode"},"id":2788,"name":"Identifier","src":"2242:15:23"}],"id":2789,"name":"Return","src":"2235:22:23"}],"id":2790,"name":"Block","src":"2225:39:23"}],"id":2791,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":2826,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2808,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2792,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":2793,"name":"VariableDeclaration","src":"2355:16:23"}],"id":2794,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2808,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2795,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":2796,"name":"VariableDeclaration","src":"2396:4:23"}],"id":2797,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":2797},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":3840,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"type(contract IController)","value":"IController"},"id":2798,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2799,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes32","value":"_controllerNode"},"id":2800,"name":"Identifier","src":"2443:15:23"}],"id":2801,"name":"FunctionCall","src":"2431:28:23"}],"id":2802,"name":"FunctionCall","src":"2419:41:23"}],"id":2803,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2793,"type":"address","value":"_account"},"id":2804,"name":"Identifier","src":"2474:8:23"}],"id":2805,"name":"FunctionCall","src":"2419:64:23"}],"id":2806,"name":"Return","src":"2412:71:23"}],"id":2807,"name":"Block","src":"2402:88:23"}],"id":2808,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":2826,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2825,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2809,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":2810,"name":"VariableDeclaration","src":"2572:16:23"}],"id":2811,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":2825,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2812,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":2813,"name":"VariableDeclaration","src":"2613:4:23"}],"id":2814,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":2814},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":3847,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"type(contract IController)","value":"IController"},"id":2815,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2816,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2742,"type":"bytes32","value":"_controllerNode"},"id":2817,"name":"Identifier","src":"2660:15:23"}],"id":2818,"name":"FunctionCall","src":"2648:28:23"}],"id":2819,"name":"FunctionCall","src":"2636:41:23"}],"id":2820,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2810,"type":"address","value":"_account"},"id":2821,"name":"Identifier","src":"2686:8:23"}],"id":2822,"name":"FunctionCall","src":"2636:59:23"}],"id":2823,"name":"Return","src":"2629:66:23"}],"id":2824,"name":"Block","src":"2619:83:23"}],"id":2825,"name":"FunctionDefinition","src":"2554:148:23"}],"id":2826,"name":"ContractDefinition","src":"955:1749:23"}],"id":2827,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[2871]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2828,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":4421,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":2872,"symbolAliases":[null],"unitAlias":""},"id":2829,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":4595,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":2872,"symbolAliases":[null],"unitAlias":""},"id":2830,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[2871],"name":"ENSResolvable","scope":2872},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":2871,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2831,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":2832,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":2871,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":2842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2833,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":2834,"name":"VariableDeclaration","src":"1205:16:24"}],"id":2835,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":2836,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2832,"type":"address","value":"_ensRegistry"},"id":2837,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2834,"type":"address","value":"_ensReg_"},"id":2838,"name":"Identifier","src":"1257:8:24"}],"id":2839,"name":"Assignment","src":"1242:23:24"}],"id":2840,"name":"ExpressionStatement","src":"1242:23:24"}],"id":2841,"name":"Block","src":"1232:40:24"}],"id":2842,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":2871,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2843,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":2850,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2844,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":2845,"name":"VariableDeclaration","src":"1410:7:24"}],"id":2846,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":2846},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2832,"type":"address","value":"_ensRegistry"},"id":2847,"name":"Identifier","src":"1436:12:24"}],"id":2848,"name":"Return","src":"1429:19:24"}],"id":2849,"name":"Block","src":"1419:36:24"}],"id":2850,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":2871,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":2870,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2851,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":2852,"name":"VariableDeclaration","src":"1652:13:24"}],"id":2853,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":2870,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2854,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":2855,"name":"VariableDeclaration","src":"1690:7:24"}],"id":2856,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":2856},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":5800,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4594,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":2857,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":4396,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4420,"type":"type(contract ENS)","value":"ENS"},"id":2858,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2832,"type":"address","value":"_ensRegistry"},"id":2859,"name":"Identifier","src":"1735:12:24"}],"id":2860,"name":"FunctionCall","src":"1731:17:24"}],"id":2861,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"bytes32","value":"_node"},"id":2862,"name":"Identifier","src":"1758:5:24"}],"id":2863,"name":"FunctionCall","src":"1731:33:24"}],"id":2864,"name":"FunctionCall","src":"1716:49:24"}],"id":2865,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"bytes32","value":"_node"},"id":2866,"name":"Identifier","src":"1771:5:24"}],"id":2867,"name":"FunctionCall","src":"1716:61:24"}],"id":2868,"name":"Return","src":"1709:68:24"}],"id":2869,"name":"Block","src":"1699:85:24"}],"id":2870,"name":"FunctionDefinition","src":"1631:153:24"}],"id":2871,"name":"ContractDefinition","src":"1008:778:24"}],"id":2872,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[3028]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2873,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[3028],"name":"Ownable","scope":3029},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":2879,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2874,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":2875,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2879,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2876,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":2877,"name":"VariableDeclaration","src":"1214:11:25"}],"id":2878,"name":"ParameterList","src":"1198:28:25"}],"id":2879,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":2883,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2880,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":2881,"name":"VariableDeclaration","src":"1254:15:25"}],"id":2882,"name":"ParameterList","src":"1253:17:25"}],"id":2883,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":3028,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2884,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":2885,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":3028,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2886,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":2887,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3028,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":2918,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2888,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":2889,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":2918,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2890,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":2891,"name":"VariableDeclaration","src":"1503:19:25"}],"id":2892,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":2893,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":2894,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2889,"type":"address payable","value":"_account_"},"id":2895,"name":"Identifier","src":"1552:9:25"}],"id":2896,"name":"Assignment","src":"1543:18:25"}],"id":2897,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2898,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2891,"type":"bool","value":"_transferable_"},"id":2899,"name":"Identifier","src":"1589:14:25"}],"id":2900,"name":"Assignment","src":"1571:32:25"}],"id":2901,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2902,"name":"Identifier","src":"1687:15:25"}],"id":2903,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2883,"type":"function (address)","value":"LockedOwnership"},"id":2904,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2889,"type":"address payable","value":"_account_"},"id":2905,"name":"Identifier","src":"1739:9:25"}],"id":2906,"name":"FunctionCall","src":"1723:26:25"}],"id":2907,"name":"EmitStatement","src":"1718:31:25"}],"id":2908,"name":"Block","src":"1704:56:25"}],"id":2909,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2879,"type":"function (address,address)","value":"TransferredOwnership"},"id":2910,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2911,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2912,"name":"Literal","src":"1803:1:25"}],"id":2913,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2889,"type":"address payable","value":"_account_"},"id":2914,"name":"Identifier","src":"1807:9:25"}],"id":2915,"name":"FunctionCall","src":"1774:43:25"}],"id":2916,"name":"EmitStatement","src":"1769:48:25"}],"id":2917,"name":"Block","src":"1533:291:25"}],"id":2918,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2919,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2920,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2921,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":2922,"name":"Identifier","src":"1949:3:25"}],"id":2923,"name":"MemberAccess","src":"1949:10:25"}],"id":2924,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":2925,"name":"Literal","src":"1962:24:25"}],"id":2926,"name":"FunctionCall","src":"1932:55:25"}],"id":2927,"name":"ExpressionStatement","src":"1932:55:25"},{"id":2928,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":2929,"name":"Block","src":"1922:83:25"}],"id":2930,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":3028,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2975,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2931,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":2932,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":2975,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2933,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":2934,"name":"VariableDeclaration","src":"2300:18:25"}],"id":2935,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":2938,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":2936,"name":"Identifier","src":"2329:9:25"}],"id":2937,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2939,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2940,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2941,"name":"Literal","src":"2429:31:25"}],"id":2942,"name":"FunctionCall","src":"2404:57:25"}],"id":2943,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2944,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2932,"type":"address payable","value":"_account"},"id":2945,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2946,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2947,"name":"Literal","src":"2562:1:25"}],"id":2948,"name":"FunctionCall","src":"2554:10:25"}],"id":2949,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":2950,"name":"Literal","src":"2566:37:25"}],"id":2951,"name":"FunctionCall","src":"2534:70:25"}],"id":2952,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2953,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2934,"type":"bool","value":"_transferable"},"id":2954,"name":"Identifier","src":"2707:13:25"}],"id":2955,"name":"Assignment","src":"2689:31:25"}],"id":2956,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2934,"type":"bool","value":"_transferable"},"id":2957,"name":"Identifier","src":"2804:13:25"}],"id":2958,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2883,"type":"function (address)","value":"LockedOwnership"},"id":2959,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2932,"type":"address payable","value":"_account"},"id":2960,"name":"Identifier","src":"2854:8:25"}],"id":2961,"name":"FunctionCall","src":"2838:25:25"}],"id":2962,"name":"EmitStatement","src":"2833:30:25"}],"id":2963,"name":"Block","src":"2819:55:25"}],"id":2964,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2879,"type":"function (address,address)","value":"TransferredOwnership"},"id":2965,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":2966,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2932,"type":"address payable","value":"_account"},"id":2967,"name":"Identifier","src":"2963:8:25"}],"id":2968,"name":"FunctionCall","src":"2934:38:25"}],"id":2969,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":2970,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2932,"type":"address payable","value":"_account"},"id":2971,"name":"Identifier","src":"3041:8:25"}],"id":2972,"name":"Assignment","src":"3032:17:25"}],"id":2973,"name":"ExpressionStatement","src":"3032:17:25"}],"id":2974,"name":"Block","src":"2339:717:25"}],"id":2975,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":3028,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2976,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":2983,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2977,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":2978,"name":"VariableDeclaration","src":"3222:4:25"}],"id":2979,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":2979},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2980,"name":"Identifier","src":"3245:15:25"}],"id":2981,"name":"Return","src":"3238:22:25"}],"id":2982,"name":"Block","src":"3228:39:25"}],"id":2983,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":3028,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2984,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":2987,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":2985,"name":"Identifier","src":"3581:9:25"}],"id":2986,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2988,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2887,"type":"bool","value":"_isTransferable"},"id":2989,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":2990,"name":"Literal","src":"3681:31:25"}],"id":2991,"name":"FunctionCall","src":"3656:57:25"}],"id":2992,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":2993,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2994,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2995,"name":"Literal","src":"3784:1:25"}],"id":2996,"name":"FunctionCall","src":"3776:10:25"}],"id":2997,"name":"Assignment","src":"3767:19:25"}],"id":2998,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2879,"type":"function (address,address)","value":"TransferredOwnership"},"id":2999,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":3000,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3001,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3002,"name":"Literal","src":"3839:1:25"}],"id":3003,"name":"FunctionCall","src":"3831:10:25"}],"id":3004,"name":"FunctionCall","src":"3802:40:25"}],"id":3005,"name":"EmitStatement","src":"3797:45:25"}],"id":3006,"name":"Block","src":"3591:258:25"}],"id":3007,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3028,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3008,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3015,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3009,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":3010,"name":"VariableDeclaration","src":"3970:15:25"}],"id":3011,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":3011},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":3012,"name":"Identifier","src":"4004:6:25"}],"id":3013,"name":"Return","src":"3997:13:25"}],"id":3014,"name":"Block","src":"3987:30:25"}],"id":3015,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":3028,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3027,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3016,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":3017,"name":"VariableDeclaration","src":"4141:16:25"}],"id":3018,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3027,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3019,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":3020,"name":"VariableDeclaration","src":"4182:4:25"}],"id":3021,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":3021},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3017,"type":"address","value":"_address"},"id":3022,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2885,"type":"address payable","value":"_owner"},"id":3023,"name":"Identifier","src":"4217:6:25"}],"id":3024,"name":"BinaryOperation","src":"4205:18:25"}],"id":3025,"name":"Return","src":"4198:25:25"}],"id":3026,"name":"Block","src":"4188:42:25"}],"id":3027,"name":"FunctionDefinition","src":"4123:107:25"}],"id":3028,"name":"ContractDefinition","src":"1149:3083:25"}],"id":3029,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[3245]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3030,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":5583,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":3246,"symbolAliases":[null],"unitAlias":""},"id":3031,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":2872,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":3246,"symbolAliases":[null],"unitAlias":""},"id":3032,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[2871],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[3245,2871],"name":"TokenWhitelistable","scope":3246},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":3033,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":3034,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":3245,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3035,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":3036,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3245,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":3046,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3037,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":3038,"name":"VariableDeclaration","src":"1292:28:26"}],"id":3039,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":3040,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3041,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3038,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":3042,"name":"Identifier","src":"1363:20:26"}],"id":3043,"name":"Assignment","src":"1341:42:26"}],"id":3044,"name":"ExpressionStatement","src":"1341:42:26"}],"id":3045,"name":"Block","src":"1331:59:26"}],"id":3046,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3047,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3054,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3048,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":3049,"name":"VariableDeclaration","src":"1567:7:26"}],"id":3050,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":3050},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3051,"name":"Identifier","src":"1593:19:26"}],"id":3052,"name":"Return","src":"1586:26:26"}],"id":3053,"name":"Block","src":"1576:43:26"}],"id":3054,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3083,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3055,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":3056,"name":"VariableDeclaration","src":"2194:10:26"}],"id":3057,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3058,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":3059,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3060,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":3061,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3062,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":3063,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3064,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":3065,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3066,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":3067,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3068,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":3069,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":3083,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3070,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":3071,"name":"VariableDeclaration","src":"2280:7:26"}],"id":3072,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":3072},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":4620,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3073,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3074,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3075,"name":"Identifier","src":"2334:19:26"}],"id":3076,"name":"FunctionCall","src":"2322:32:26"}],"id":3077,"name":"FunctionCall","src":"2306:49:26"}],"id":3078,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3056,"type":"address","value":"_a"},"id":3079,"name":"Identifier","src":"2369:2:26"}],"id":3080,"name":"FunctionCall","src":"2306:66:26"}],"id":3081,"name":"Return","src":"2299:73:26"}],"id":3082,"name":"Block","src":"2289:90:26"}],"id":3083,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3084,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3085,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":3086,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3087,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":3088,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3089,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":3090,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3091,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":3092,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3093,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":3094,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3095,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":3096,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":3109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3097,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":3098,"name":"VariableDeclaration","src":"2991:7:26"}],"id":3099,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":3099},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":4637,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3100,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3101,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3102,"name":"Identifier","src":"3045:19:26"}],"id":3103,"name":"FunctionCall","src":"3033:32:26"}],"id":3104,"name":"FunctionCall","src":"3017:49:26"}],"id":3105,"name":"MemberAccess","src":"3017:67:26"}],"id":3106,"name":"FunctionCall","src":"3017:69:26"}],"id":3107,"name":"Return","src":"3010:76:26"}],"id":3108,"name":"Block","src":"3000:93:26"}],"id":3109,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3110,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3124,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3111,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":3112,"name":"ArrayTypeName","src":"3273:9:26"}],"id":3113,"name":"VariableDeclaration","src":"3273:16:26"}],"id":3114,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":3114},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":4643,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3115,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3116,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3117,"name":"Identifier","src":"3336:19:26"}],"id":3118,"name":"FunctionCall","src":"3324:32:26"}],"id":3119,"name":"FunctionCall","src":"3308:49:26"}],"id":3120,"name":"MemberAccess","src":"3308:67:26"}],"id":3121,"name":"FunctionCall","src":"3308:69:26"}],"id":3122,"name":"Return","src":"3301:76:26"}],"id":3123,"name":"Block","src":"3291:93:26"}],"id":3124,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3125,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3139,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3126,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":3127,"name":"ArrayTypeName","src":"3563:9:26"}],"id":3128,"name":"VariableDeclaration","src":"3563:16:26"}],"id":3129,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":3129},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":4649,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3130,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3131,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3132,"name":"Identifier","src":"3626:19:26"}],"id":3133,"name":"FunctionCall","src":"3614:32:26"}],"id":3134,"name":"FunctionCall","src":"3598:49:26"}],"id":3135,"name":"MemberAccess","src":"3598:66:26"}],"id":3136,"name":"FunctionCall","src":"3598:68:26"}],"id":3137,"name":"Return","src":"3591:75:26"}],"id":3138,"name":"Block","src":"3581:92:26"}],"id":3139,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":3245,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":3160,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3140,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":3141,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":3160,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3142,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":3143,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":3160,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3144,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":3145,"name":"VariableDeclaration","src":"4007:19:26"}],"id":3146,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":3147,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":4681,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3148,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3149,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3150,"name":"Identifier","src":"4075:19:26"}],"id":3151,"name":"FunctionCall","src":"4063:32:26"}],"id":3152,"name":"FunctionCall","src":"4047:49:26"}],"id":3153,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3141,"type":"address","value":"_token"},"id":3154,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3143,"type":"uint256","value":"_rate"},"id":3155,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3145,"type":"uint256","value":"_updateDate"},"id":3156,"name":"Identifier","src":"4128:11:26"}],"id":3157,"name":"FunctionCall","src":"4047:93:26"}],"id":3158,"name":"ExpressionStatement","src":"4047:93:26"}],"id":3159,"name":"Block","src":"4037:110:26"}],"id":3160,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":3182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3161,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":3162,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":3182,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3163,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":3164,"name":"VariableDeclaration","src":"4364:18:26"}],"id":3165,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3166,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":3167,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":3182,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3168,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":3169,"name":"VariableDeclaration","src":"4416:7:26"}],"id":3170,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":3170},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":4667,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3171,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3172,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3173,"name":"Identifier","src":"4470:19:26"}],"id":3174,"name":"FunctionCall","src":"4458:32:26"}],"id":3175,"name":"FunctionCall","src":"4442:49:26"}],"id":3176,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3162,"type":"address","value":"_destination"},"id":3177,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3164,"type":"bytes memory","value":"_data"},"id":3178,"name":"Identifier","src":"4533:5:26"}],"id":3179,"name":"FunctionCall","src":"4442:97:26"}],"id":3180,"name":"Return","src":"4435:104:26"}],"id":3181,"name":"Block","src":"4425:121:26"}],"id":3182,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3198,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3183,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":3184,"name":"VariableDeclaration","src":"4671:10:26"}],"id":3185,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3198,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3186,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":3187,"name":"VariableDeclaration","src":"4706:4:26"}],"id":3188,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,3190,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":3197,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3189,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":3190,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3191,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3184,"type":"address","value":"_a"},"id":3192,"name":"Identifier","src":"4767:2:26"}],"id":3193,"name":"FunctionCall","src":"4753:17:26"}],"id":3194,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":3188},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3190,"type":"bool","value":"available"},"id":3195,"name":"Identifier","src":"4787:9:26"}],"id":3196,"name":"Return","src":"4780:16:26"}],"id":3197,"name":"Block","src":"4712:91:26"}],"id":3198,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3214,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3199,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":3200,"name":"VariableDeclaration","src":"4931:10:26"}],"id":3201,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3214,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3202,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":3203,"name":"VariableDeclaration","src":"4966:4:26"}],"id":3204,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,3206,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":3213,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3205,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":3206,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3207,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3200,"type":"address","value":"_a"},"id":3208,"name":"Identifier","src":"5028:2:26"}],"id":3209,"name":"FunctionCall","src":"5014:17:26"}],"id":3210,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":3204},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"bool","value":"redeemable"},"id":3211,"name":"Identifier","src":"5048:10:26"}],"id":3212,"name":"Return","src":"5041:17:26"}],"id":3213,"name":"Block","src":"4972:93:26"}],"id":3214,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3230,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3215,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":3216,"name":"VariableDeclaration","src":"5187:10:26"}],"id":3217,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3230,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3218,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":3219,"name":"VariableDeclaration","src":"5222:4:26"}],"id":3220,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,3222,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":3229,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3221,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":3222,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":3223,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3216,"type":"address","value":"_a"},"id":3224,"name":"Identifier","src":"5282:2:26"}],"id":3225,"name":"FunctionCall","src":"5268:17:26"}],"id":3226,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":3220},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3222,"type":"bool","value":"loadable"},"id":3227,"name":"Identifier","src":"5302:8:26"}],"id":3228,"name":"Return","src":"5295:15:26"}],"id":3229,"name":"Block","src":"5228:89:26"}],"id":3230,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":3245,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3231,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3244,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3232,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":3233,"name":"VariableDeclaration","src":"5482:7:26"}],"id":3234,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":3234},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":4672,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4682,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3235,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3236,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3036,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3237,"name":"Identifier","src":"5536:19:26"}],"id":3238,"name":"FunctionCall","src":"5524:32:26"}],"id":3239,"name":"FunctionCall","src":"5508:49:26"}],"id":3240,"name":"MemberAccess","src":"5508:60:26"}],"id":3241,"name":"FunctionCall","src":"5508:62:26"}],"id":3242,"name":"Return","src":"5501:69:26"}],"id":3243,"name":"Block","src":"5491:86:26"}],"id":3244,"name":"FunctionDefinition","src":"5436:141:26"}],"id":3245,"name":"ContractDefinition","src":"958:4621:26"}],"id":3246,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[3285]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3247,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":2347,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3286,"symbolAliases":[null],"unitAlias":""},"id":3248,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":2566,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":3286,"symbolAliases":[null],"unitAlias":""},"id":3249,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[3285],"name":"Transferrable","scope":3286},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2565,"type":"library SafeERC20"},"id":3250,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":3251,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":3252,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":3285,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3284,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3253,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":3254,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":3284,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3255,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":3256,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":3284,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3257,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":3258,"name":"VariableDeclaration","src":"1426:15:27"}],"id":3259,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":3260,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3256,"type":"address","value":"_asset"},"id":3261,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3262,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3263,"name":"Literal","src":"1528:1:27"}],"id":3264,"name":"FunctionCall","src":"1520:10:27"}],"id":3265,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"address payable","value":"_to"},"id":3266,"name":"Identifier","src":"1546:3:27"}],"id":3268,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3258,"type":"uint256","value":"_amount"},"id":3269,"name":"Identifier","src":"1559:7:27"}],"id":3270,"name":"FunctionCall","src":"1546:21:27"}],"id":3271,"name":"ExpressionStatement","src":"1546:21:27"}],"id":3272,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":2379,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":3273,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3256,"type":"address","value":"_asset"},"id":3274,"name":"Identifier","src":"1604:6:27"}],"id":3275,"name":"FunctionCall","src":"1598:13:27"}],"id":3276,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"address payable","value":"_to"},"id":3277,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3258,"type":"uint256","value":"_amount"},"id":3278,"name":"Identifier","src":"1630:7:27"}],"id":3279,"name":"FunctionCall","src":"1598:40:27"}],"id":3280,"name":"ExpressionStatement","src":"1598:40:27"}],"id":3281,"name":"Block","src":"1584:65:27"}],"id":3282,"name":"IfStatement","src":"1506:143:27"}],"id":3283,"name":"Block","src":"1452:203:27"}],"id":3284,"name":"FunctionDefinition","src":"1366:289:27"}],"id":3285,"name":"ContractDefinition","src":"961:696:27"}],"id":3286,"name":"SourceUnit","src":"773:885:27"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[3305],"Licence":[3829]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3287,"name":"PragmaDirective","src":"767:24:28"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3288,"name":"ImportDirective","src":"793:34:28"},{"attributes":{"SourceUnit":2566,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3289,"name":"ImportDirective","src":"828:35:28"},{"attributes":{"SourceUnit":2827,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3290,"name":"ImportDirective","src":"864:38:28"},{"attributes":{"SourceUnit":2872,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3291,"name":"ImportDirective","src":"903:39:28"},{"attributes":{"SourceUnit":3286,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":3830,"symbolAliases":[null],"unitAlias":""},"id":3292,"name":"ImportDirective","src":"943:39:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[3305],"name":"ILicence","scope":3830},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":3305,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3299,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3293,"name":"ElementaryTypeName","src":"1125:7:28"}],"id":3294,"name":"VariableDeclaration","src":"1125:7:28"},{"attributes":{"constant":false,"name":"","scope":3299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3295,"name":"ElementaryTypeName","src":"1134:7:28"}],"id":3296,"name":"VariableDeclaration","src":"1134:7:28"}],"id":3297,"name":"ParameterList","src":"1124:18:28"},{"attributes":{"parameters":[null]},"children":[],"id":3298,"name":"ParameterList","src":"1159:0:28"}],"id":3299,"name":"FunctionDefinition","src":"1111:49:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":3305,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3300,"name":"ElementaryTypeName","src":"1195:7:28"}],"id":3301,"name":"VariableDeclaration","src":"1195:7:28"}],"id":3302,"name":"ParameterList","src":"1194:9:28"},{"attributes":{"parameters":[null]},"children":[],"id":3303,"name":"ParameterList","src":"1212:0:28"}],"id":3304,"name":"FunctionDefinition","src":"1166:47:28"}],"id":3305,"name":"ContractDefinition","src":"1086:129:28"},{"attributes":{"contractDependencies":[2826,2871,3285],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[3829,2826,2871,3285],"name":"Licence","scope":3830},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3285,"type":"contract Transferrable"},"id":3306,"name":"UserDefinedTypeName","src":"1401:13:28"}],"id":3307,"name":"InheritanceSpecifier","src":"1401:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":3308,"name":"UserDefinedTypeName","src":"1416:13:28"}],"id":3309,"name":"InheritanceSpecifier","src":"1416:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2826,"type":"contract Controllable"},"id":3310,"name":"UserDefinedTypeName","src":"1431:12:28"}],"id":3311,"name":"InheritanceSpecifier","src":"1431:12:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":3312,"name":"UserDefinedTypeName","src":"1456:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":3313,"name":"ElementaryTypeName","src":"1469:7:28"}],"id":3314,"name":"UsingForDirective","src":"1450:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2565,"type":"library SafeERC20"},"id":3315,"name":"UserDefinedTypeName","src":"1488:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":3316,"name":"UserDefinedTypeName","src":"1502:5:28"}],"id":3317,"name":"UsingForDirective","src":"1482:26:28"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":3321,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3318,"name":"ElementaryTypeName","src":"1614:7:28"}],"id":3319,"name":"VariableDeclaration","src":"1614:15:28"}],"id":3320,"name":"ParameterList","src":"1613:17:28"}],"id":3321,"name":"EventDefinition","src":"1590:41:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":3325,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3322,"name":"ElementaryTypeName","src":"1661:7:28"}],"id":3323,"name":"VariableDeclaration","src":"1661:17:28"}],"id":3324,"name":"ParameterList","src":"1660:19:28"}],"id":3325,"name":"EventDefinition","src":"1636:44:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":3329,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3326,"name":"ElementaryTypeName","src":"1710:7:28"}],"id":3327,"name":"VariableDeclaration","src":"1710:18:28"}],"id":3328,"name":"ParameterList","src":"1709:20:28"}],"id":3329,"name":"EventDefinition","src":"1685:45:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":3333,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3330,"name":"ElementaryTypeName","src":"1767:7:28"}],"id":3331,"name":"VariableDeclaration","src":"1767:15:28"}],"id":3332,"name":"ParameterList","src":"1766:17:28"}],"id":3333,"name":"EventDefinition","src":"1735:49:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":3337,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3334,"name":"ElementaryTypeName","src":"1816:7:28"}],"id":3335,"name":"VariableDeclaration","src":"1816:18:28"}],"id":3336,"name":"ParameterList","src":"1815:20:28"}],"id":3337,"name":"EventDefinition","src":"1789:47:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3338,"name":"ElementaryTypeName","src":"1873:7:28"}],"id":3339,"name":"VariableDeclaration","src":"1873:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3340,"name":"ElementaryTypeName","src":"1888:7:28"}],"id":3341,"name":"VariableDeclaration","src":"1888:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3342,"name":"ElementaryTypeName","src":"1901:7:28"}],"id":3343,"name":"VariableDeclaration","src":"1901:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3347,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3344,"name":"ElementaryTypeName","src":"1917:7:28"}],"id":3345,"name":"VariableDeclaration","src":"1917:15:28"}],"id":3346,"name":"ParameterList","src":"1872:61:28"}],"id":3347,"name":"EventDefinition","src":"1842:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3348,"name":"ElementaryTypeName","src":"1970:7:28"}],"id":3349,"name":"VariableDeclaration","src":"1970:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3350,"name":"ElementaryTypeName","src":"1985:7:28"}],"id":3351,"name":"VariableDeclaration","src":"1985:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3352,"name":"ElementaryTypeName","src":"1998:7:28"}],"id":3353,"name":"VariableDeclaration","src":"1998:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3354,"name":"ElementaryTypeName","src":"2014:7:28"}],"id":3355,"name":"VariableDeclaration","src":"2014:15:28"}],"id":3356,"name":"ParameterList","src":"1969:61:28"}],"id":3357,"name":"EventDefinition","src":"1939:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3365,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3358,"name":"ElementaryTypeName","src":"2051:7:28"}],"id":3359,"name":"VariableDeclaration","src":"2051:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":3365,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3360,"name":"ElementaryTypeName","src":"2064:7:28"}],"id":3361,"name":"VariableDeclaration","src":"2064:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":3365,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3362,"name":"ElementaryTypeName","src":"2080:7:28"}],"id":3363,"name":"VariableDeclaration","src":"2080:15:28"}],"id":3364,"name":"ParameterList","src":"2050:46:28"}],"id":3365,"name":"EventDefinition","src":"2037:60:28"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":3829,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3366,"name":"ElementaryTypeName","src":"2209:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":3367,"name":"Literal","src":"2252:4:28"}],"id":3368,"name":"VariableDeclaration","src":"2209:47:28"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":3829,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3369,"name":"ElementaryTypeName","src":"2262:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":3370,"name":"Literal","src":"2305:1:28"}],"id":3371,"name":"VariableDeclaration","src":"2262:44:28"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":3829,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3372,"name":"ElementaryTypeName","src":"2313:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":3373,"name":"Literal","src":"2351:42:28"}],"id":3374,"name":"VariableDeclaration","src":"2313:80:28"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":3829,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3375,"name":"ElementaryTypeName","src":"2433:15:28"}],"id":3376,"name":"VariableDeclaration","src":"2433:36:28"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":3829,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3377,"name":"ElementaryTypeName","src":"2475:15:28"}],"id":3378,"name":"VariableDeclaration","src":"2475:36:28"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":3829,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3379,"name":"ElementaryTypeName","src":"2517:7:28"}],"id":3380,"name":"VariableDeclaration","src":"2517:27:28"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":3829,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3381,"name":"ElementaryTypeName","src":"2551:4:28"}],"id":3382,"name":"VariableDeclaration","src":"2551:31:28"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":3829,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3383,"name":"ElementaryTypeName","src":"2588:4:28"}],"id":3384,"name":"VariableDeclaration","src":"2588:31:28"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":3829,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3385,"name":"ElementaryTypeName","src":"2625:4:28"}],"id":3386,"name":"VariableDeclaration","src":"2625:30:28"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":3829,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3387,"name":"ElementaryTypeName","src":"2661:4:28"}],"id":3388,"name":"VariableDeclaration","src":"2661:38:28"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":3829,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3389,"name":"ElementaryTypeName","src":"2853:7:28"}],"id":3390,"name":"VariableDeclaration","src":"2853:36:28"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3391,"name":"ParameterList","src":"2990:2:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3392,"name":"Identifier","src":"3003:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3393,"name":"Identifier","src":"3011:3:28"}],"id":3394,"name":"MemberAccess","src":"3011:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3380,"type":"address","value":"_licenceDAO"},"id":3395,"name":"Identifier","src":"3025:11:28"}],"id":3396,"name":"BinaryOperation","src":"3011:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":3397,"name":"Literal","src":"3038:26:28"}],"id":3398,"name":"FunctionCall","src":"3003:62:28"}],"id":3399,"name":"ExpressionStatement","src":"3003:62:28"},{"id":3400,"name":"PlaceholderStatement","src":"3075:1:28"}],"id":3401,"name":"Block","src":"2993:90:28"}],"id":3402,"name":"ModifierDefinition","src":"2974:109:28"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3403,"name":"ElementaryTypeName","src":"3628:7:28"}],"id":3404,"name":"VariableDeclaration","src":"3628:17:28"},{"attributes":{"constant":false,"name":"_float_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3405,"name":"ElementaryTypeName","src":"3647:15:28"}],"id":3406,"name":"VariableDeclaration","src":"3647:23:28"},{"attributes":{"constant":false,"name":"_holder_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3407,"name":"ElementaryTypeName","src":"3672:15:28"}],"id":3408,"name":"VariableDeclaration","src":"3672:24:28"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3409,"name":"ElementaryTypeName","src":"3698:7:28"}],"id":3410,"name":"VariableDeclaration","src":"3698:20:28"},{"attributes":{"constant":false,"name":"_ens_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3411,"name":"ElementaryTypeName","src":"3720:7:28"}],"id":3412,"name":"VariableDeclaration","src":"3720:13:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":3458,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3413,"name":"ElementaryTypeName","src":"3735:7:28"}],"id":3414,"name":"VariableDeclaration","src":"3735:24:28"}],"id":3415,"name":"ParameterList","src":"3627:133:28"},{"attributes":{"parameters":[null]},"children":[],"id":3422,"name":"ParameterList","src":"3848:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2871,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":3416,"name":"Identifier","src":"3784:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3412,"type":"address","value":"_ens_"},"id":3417,"name":"Identifier","src":"3798:5:28"}],"id":3418,"name":"ModifierInvocation","src":"3784:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2826,"type":"type(contract Controllable)","value":"Controllable"},"id":3419,"name":"Identifier","src":"3813:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3414,"type":"bytes32","value":"_controllerNode_"},"id":3420,"name":"Identifier","src":"3826:16:28"}],"id":3421,"name":"ModifierInvocation","src":"3813:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3423,"name":"Identifier","src":"3858:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3371,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":3424,"name":"Identifier","src":"3866:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"uint256","value":"_licence_"},"id":3425,"name":"Identifier","src":"3886:9:28"}],"id":3426,"name":"BinaryOperation","src":"3866:29:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"uint256","value":"_licence_"},"id":3427,"name":"Identifier","src":"3899:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3368,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3428,"name":"Identifier","src":"3912:16:28"}],"id":3429,"name":"BinaryOperation","src":"3899:29:28"}],"id":3430,"name":"BinaryOperation","src":"3866:62:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":3431,"name":"Literal","src":"3930:29:28"}],"id":3432,"name":"FunctionCall","src":"3858:102:28"}],"id":3433,"name":"ExpressionStatement","src":"3858:102:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"uint256","value":"_licenceAmountScaled"},"id":3434,"name":"Identifier","src":"3970:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"uint256","value":"_licence_"},"id":3435,"name":"Identifier","src":"3993:9:28"}],"id":3436,"name":"Assignment","src":"3970:32:28"}],"id":3437,"name":"ExpressionStatement","src":"3970:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3438,"name":"Identifier","src":"4012:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3406,"type":"address payable","value":"_float_"},"id":3439,"name":"Identifier","src":"4027:7:28"}],"id":3440,"name":"Assignment","src":"4012:22:28"}],"id":3441,"name":"ExpressionStatement","src":"4012:22:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3442,"name":"Identifier","src":"4044:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3408,"type":"address payable","value":"_holder_"},"id":3443,"name":"Identifier","src":"4059:8:28"}],"id":3444,"name":"Assignment","src":"4044:23:28"}],"id":3445,"name":"ExpressionStatement","src":"4044:23:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3410,"type":"address","value":"_tknAddress_"},"id":3446,"name":"Identifier","src":"4081:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3447,"name":"ElementaryTypeNameExpression","src":"4097:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3448,"name":"Literal","src":"4105:1:28"}],"id":3449,"name":"FunctionCall","src":"4097:10:28"}],"id":3450,"name":"BinaryOperation","src":"4081:26:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3374,"type":"address","value":"_tknContractAddress"},"id":3451,"name":"Identifier","src":"4123:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3410,"type":"address","value":"_tknAddress_"},"id":3452,"name":"Identifier","src":"4145:12:28"}],"id":3453,"name":"Assignment","src":"4123:34:28"}],"id":3454,"name":"ExpressionStatement","src":"4123:34:28"}],"id":3455,"name":"Block","src":"4109:59:28"}],"id":3456,"name":"IfStatement","src":"4077:91:28"}],"id":3457,"name":"Block","src":"3848:326:28"}],"id":3458,"name":"FunctionDefinition","src":"3616:558:28"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":3829,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3459,"name":"ParameterList","src":"4290:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3460,"name":"ParameterList","src":"4310:0:28"},{"attributes":{"statements":[null]},"children":[],"id":3461,"name":"Block","src":"4310:2:28"}],"id":3462,"name":"FunctionDefinition","src":"4282:30:28"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3463,"name":"ParameterList","src":"4503:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3470,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3464,"name":"ElementaryTypeName","src":"4529:7:28"}],"id":3465,"name":"VariableDeclaration","src":"4529:7:28"}],"id":3466,"name":"ParameterList","src":"4528:9:28"},{"children":[{"attributes":{"functionReturnParameters":3466},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"uint256","value":"_licenceAmountScaled"},"id":3467,"name":"Identifier","src":"4555:20:28"}],"id":3468,"name":"Return","src":"4548:27:28"}],"id":3469,"name":"Block","src":"4538:44:28"}],"id":3470,"name":"FunctionDefinition","src":"4475:107:28"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3471,"name":"ParameterList","src":"4749:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3478,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3472,"name":"ElementaryTypeName","src":"4775:7:28"}],"id":3473,"name":"VariableDeclaration","src":"4775:7:28"}],"id":3474,"name":"ParameterList","src":"4774:9:28"},{"children":[{"attributes":{"functionReturnParameters":3474},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3475,"name":"Identifier","src":"4801:12:28"}],"id":3476,"name":"Return","src":"4794:19:28"}],"id":3477,"name":"Block","src":"4784:36:28"}],"id":3478,"name":"FunctionDefinition","src":"4729:91:28"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3479,"name":"ParameterList","src":"4970:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3486,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3480,"name":"ElementaryTypeName","src":"4996:7:28"}],"id":3481,"name":"VariableDeclaration","src":"4996:7:28"}],"id":3482,"name":"ParameterList","src":"4995:9:28"},{"children":[{"attributes":{"functionReturnParameters":3482},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3483,"name":"Identifier","src":"5022:12:28"}],"id":3484,"name":"Return","src":"5015:19:28"}],"id":3485,"name":"Block","src":"5005:36:28"}],"id":3486,"name":"FunctionDefinition","src":"4950:91:28"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3487,"name":"ParameterList","src":"5172:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3494,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3488,"name":"ElementaryTypeName","src":"5198:7:28"}],"id":3489,"name":"VariableDeclaration","src":"5198:7:28"}],"id":3490,"name":"ParameterList","src":"5197:9:28"},{"children":[{"attributes":{"functionReturnParameters":3490},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3380,"type":"address","value":"_licenceDAO"},"id":3491,"name":"Identifier","src":"5224:11:28"}],"id":3492,"name":"Return","src":"5217:18:28"}],"id":3493,"name":"Block","src":"5207:35:28"}],"id":3494,"name":"FunctionDefinition","src":"5153:89:28"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3495,"name":"ParameterList","src":"5369:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3502,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3496,"name":"ElementaryTypeName","src":"5395:7:28"}],"id":3497,"name":"VariableDeclaration","src":"5395:7:28"}],"id":3498,"name":"ParameterList","src":"5394:9:28"},{"children":[{"attributes":{"functionReturnParameters":3498},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3374,"type":"address","value":"_tknContractAddress"},"id":3499,"name":"Identifier","src":"5421:19:28"}],"id":3500,"name":"Return","src":"5414:26:28"}],"id":3501,"name":"Block","src":"5404:43:28"}],"id":3502,"name":"FunctionDefinition","src":"5342:105:28"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3503,"name":"ParameterList","src":"5571:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3506,"name":"ParameterList","src":"5593:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3504,"name":"Identifier","src":"5583:9:28"}],"id":3505,"name":"ModifierInvocation","src":"5583:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3382,"type":"bool","value":"_lockedCryptoFloat"},"id":3507,"name":"Identifier","src":"5603:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3508,"name":"Literal","src":"5624:4:28"}],"id":3509,"name":"Assignment","src":"5603:25:28"}],"id":3510,"name":"ExpressionStatement","src":"5603:25:28"}],"id":3511,"name":"Block","src":"5593:42:28"}],"id":3512,"name":"FunctionDefinition","src":"5553:82:28"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3513,"name":"ParameterList","src":"5760:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3516,"name":"ParameterList","src":"5782:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3514,"name":"Identifier","src":"5772:9:28"}],"id":3515,"name":"ModifierInvocation","src":"5772:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3384,"type":"bool","value":"_lockedTokenHolder"},"id":3517,"name":"Identifier","src":"5792:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3518,"name":"Literal","src":"5813:4:28"}],"id":3519,"name":"Assignment","src":"5792:25:28"}],"id":3520,"name":"ExpressionStatement","src":"5792:25:28"}],"id":3521,"name":"Block","src":"5782:42:28"}],"id":3522,"name":"FunctionDefinition","src":"5741:83:28"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3523,"name":"ParameterList","src":"5945:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3526,"name":"ParameterList","src":"5967:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3524,"name":"Identifier","src":"5957:9:28"}],"id":3525,"name":"ModifierInvocation","src":"5957:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3386,"type":"bool","value":"_lockedLicenceDAO"},"id":3527,"name":"Identifier","src":"5977:17:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3528,"name":"Literal","src":"5997:4:28"}],"id":3529,"name":"Assignment","src":"5977:24:28"}],"id":3530,"name":"ExpressionStatement","src":"5977:24:28"}],"id":3531,"name":"Block","src":"5967:41:28"}],"id":3532,"name":"FunctionDefinition","src":"5922:86:28"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3533,"name":"ParameterList","src":"6137:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":3536,"name":"ParameterList","src":"6159:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3534,"name":"Identifier","src":"6149:9:28"}],"id":3535,"name":"ModifierInvocation","src":"6149:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3388,"type":"bool","value":"_lockedTKNContractAddress"},"id":3537,"name":"Identifier","src":"6169:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3538,"name":"Literal","src":"6197:4:28"}],"id":3539,"name":"Assignment","src":"6169:32:28"}],"id":3540,"name":"ExpressionStatement","src":"6169:32:28"}],"id":3541,"name":"Block","src":"6159:49:28"}],"id":3542,"name":"FunctionDefinition","src":"6106:102:28"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":3565,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3543,"name":"ElementaryTypeName","src":"6359:15:28"}],"id":3544,"name":"VariableDeclaration","src":"6359:25:28"}],"id":3545,"name":"ParameterList","src":"6358:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":3548,"name":"ParameterList","src":"6405:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3546,"name":"Identifier","src":"6395:9:28"}],"id":3547,"name":"ModifierInvocation","src":"6395:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3549,"name":"Identifier","src":"6415:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3804,"type":"function () view returns (bool)","value":"floatLocked"},"id":3550,"name":"Identifier","src":"6424:11:28"}],"id":3551,"name":"FunctionCall","src":"6424:13:28"}],"id":3552,"name":"UnaryOperation","src":"6423:14:28"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":3553,"name":"Literal","src":"6439:17:28"}],"id":3554,"name":"FunctionCall","src":"6415:42:28"}],"id":3555,"name":"ExpressionStatement","src":"6415:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3556,"name":"Identifier","src":"6467:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3544,"type":"address payable","value":"_newFloat"},"id":3557,"name":"Identifier","src":"6482:9:28"}],"id":3558,"name":"Assignment","src":"6467:24:28"}],"id":3559,"name":"ExpressionStatement","src":"6467:24:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3325,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":3560,"name":"Identifier","src":"6506:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3544,"type":"address payable","value":"_newFloat"},"id":3561,"name":"Identifier","src":"6525:9:28"}],"id":3562,"name":"FunctionCall","src":"6506:29:28"}],"id":3563,"name":"EmitStatement","src":"6501:34:28"}],"id":3564,"name":"Block","src":"6405:137:28"}],"id":3565,"name":"FunctionDefinition","src":"6338:204:28"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":3588,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3566,"name":"ElementaryTypeName","src":"6700:15:28"}],"id":3567,"name":"VariableDeclaration","src":"6700:26:28"}],"id":3568,"name":"ParameterList","src":"6699:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":3571,"name":"ParameterList","src":"6747:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3569,"name":"Identifier","src":"6737:9:28"}],"id":3570,"name":"ModifierInvocation","src":"6737:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3572,"name":"Identifier","src":"6757:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"function () view returns (bool)","value":"holderLocked"},"id":3573,"name":"Identifier","src":"6766:12:28"}],"id":3574,"name":"FunctionCall","src":"6766:14:28"}],"id":3575,"name":"UnaryOperation","src":"6765:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":3576,"name":"Literal","src":"6782:27:28"}],"id":3577,"name":"FunctionCall","src":"6757:53:28"}],"id":3578,"name":"ExpressionStatement","src":"6757:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3579,"name":"Identifier","src":"6820:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3567,"type":"address payable","value":"_newHolder"},"id":3580,"name":"Identifier","src":"6835:10:28"}],"id":3581,"name":"Assignment","src":"6820:25:28"}],"id":3582,"name":"ExpressionStatement","src":"6820:25:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3329,"type":"function (address)","value":"UpdatedTokenHolder"},"id":3583,"name":"Identifier","src":"6860:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3567,"type":"address payable","value":"_newHolder"},"id":3584,"name":"Identifier","src":"6879:10:28"}],"id":3585,"name":"FunctionCall","src":"6860:30:28"}],"id":3586,"name":"EmitStatement","src":"6855:35:28"}],"id":3587,"name":"Block","src":"6747:150:28"}],"id":3588,"name":"FunctionDefinition","src":"6678:219:28"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":3611,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3589,"name":"ElementaryTypeName","src":"7053:7:28"}],"id":3590,"name":"VariableDeclaration","src":"7053:15:28"}],"id":3591,"name":"ParameterList","src":"7052:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":3594,"name":"ParameterList","src":"7089:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3592,"name":"Identifier","src":"7079:9:28"}],"id":3593,"name":"ModifierInvocation","src":"7079:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3595,"name":"Identifier","src":"7099:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3820,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":3596,"name":"Identifier","src":"7108:16:28"}],"id":3597,"name":"FunctionCall","src":"7108:18:28"}],"id":3598,"name":"UnaryOperation","src":"7107:19:28"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":3599,"name":"Literal","src":"7128:15:28"}],"id":3600,"name":"FunctionCall","src":"7099:45:28"}],"id":3601,"name":"ExpressionStatement","src":"7099:45:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3380,"type":"address","value":"_licenceDAO"},"id":3602,"name":"Identifier","src":"7154:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3590,"type":"address","value":"_newDAO"},"id":3603,"name":"Identifier","src":"7168:7:28"}],"id":3604,"name":"Assignment","src":"7154:21:28"}],"id":3605,"name":"ExpressionStatement","src":"7154:21:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3321,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":3606,"name":"Identifier","src":"7190:17:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3590,"type":"address","value":"_newDAO"},"id":3607,"name":"Identifier","src":"7208:7:28"}],"id":3608,"name":"FunctionCall","src":"7190:26:28"}],"id":3609,"name":"EmitStatement","src":"7185:31:28"}],"id":3610,"name":"Block","src":"7089:134:28"}],"id":3611,"name":"FunctionDefinition","src":"7027:196:28"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":3634,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3612,"name":"ElementaryTypeName","src":"7388:7:28"}],"id":3613,"name":"VariableDeclaration","src":"7388:15:28"}],"id":3614,"name":"ParameterList","src":"7387:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":3617,"name":"ParameterList","src":"7424:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3615,"name":"Identifier","src":"7414:9:28"}],"id":3616,"name":"ModifierInvocation","src":"7414:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3618,"name":"Identifier","src":"7434:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3828,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":3619,"name":"Identifier","src":"7443:24:28"}],"id":3620,"name":"FunctionCall","src":"7443:26:28"}],"id":3621,"name":"UnaryOperation","src":"7442:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":3622,"name":"Literal","src":"7471:15:28"}],"id":3623,"name":"FunctionCall","src":"7434:53:28"}],"id":3624,"name":"ExpressionStatement","src":"7434:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3374,"type":"address","value":"_tknContractAddress"},"id":3625,"name":"Identifier","src":"7497:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3613,"type":"address","value":"_newTKN"},"id":3626,"name":"Identifier","src":"7519:7:28"}],"id":3627,"name":"Assignment","src":"7497:29:28"}],"id":3628,"name":"ExpressionStatement","src":"7497:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3333,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":3629,"name":"Identifier","src":"7541:25:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3613,"type":"address","value":"_newTKN"},"id":3630,"name":"Identifier","src":"7567:7:28"}],"id":3631,"name":"FunctionCall","src":"7541:34:28"}],"id":3632,"name":"EmitStatement","src":"7536:39:28"}],"id":3633,"name":"Block","src":"7424:158:28"}],"id":3634,"name":"FunctionDefinition","src":"7354:228:28"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":3661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3635,"name":"ElementaryTypeName","src":"7752:7:28"}],"id":3636,"name":"VariableDeclaration","src":"7752:18:28"}],"id":3637,"name":"ParameterList","src":"7751:20:28"},{"attributes":{"parameters":[null]},"children":[],"id":3640,"name":"ParameterList","src":"7789:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3402,"type":"modifier ()","value":"onlyDAO"},"id":3638,"name":"Identifier","src":"7781:7:28"}],"id":3639,"name":"ModifierInvocation","src":"7781:7:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3641,"name":"Identifier","src":"7799:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3371,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":3642,"name":"Identifier","src":"7807:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"uint256","value":"_newAmount"},"id":3643,"name":"Identifier","src":"7827:10:28"}],"id":3644,"name":"BinaryOperation","src":"7807:30:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"uint256","value":"_newAmount"},"id":3645,"name":"Identifier","src":"7841:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3368,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3646,"name":"Identifier","src":"7855:16:28"}],"id":3647,"name":"BinaryOperation","src":"7841:30:28"}],"id":3648,"name":"BinaryOperation","src":"7807:64:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":3649,"name":"Literal","src":"7873:29:28"}],"id":3650,"name":"FunctionCall","src":"7799:104:28"}],"id":3651,"name":"ExpressionStatement","src":"7799:104:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"uint256","value":"_licenceAmountScaled"},"id":3652,"name":"Identifier","src":"7913:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"uint256","value":"_newAmount"},"id":3653,"name":"Identifier","src":"7936:10:28"}],"id":3654,"name":"Assignment","src":"7913:33:28"}],"id":3655,"name":"ExpressionStatement","src":"7913:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3337,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":3656,"name":"Identifier","src":"7961:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"uint256","value":"_newAmount"},"id":3657,"name":"Identifier","src":"7982:10:28"}],"id":3658,"name":"FunctionCall","src":"7961:32:28"}],"id":3659,"name":"EmitStatement","src":"7956:37:28"}],"id":3660,"name":"Block","src":"7789:211:28"}],"id":3661,"name":"FunctionDefinition","src":"7723:277:28"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":3829,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":3772,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3662,"name":"ElementaryTypeName","src":"8286:7:28"}],"id":3663,"name":"VariableDeclaration","src":"8286:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":3772,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3664,"name":"ElementaryTypeName","src":"8302:7:28"}],"id":3665,"name":"VariableDeclaration","src":"8302:15:28"}],"id":3666,"name":"ParameterList","src":"8285:33:28"},{"attributes":{"parameters":[null]},"children":[],"id":3667,"name":"ParameterList","src":"8336:0:28"},{"children":[{"attributes":{"assignments":[3669]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":3771,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3668,"name":"ElementaryTypeName","src":"8346:7:28"}],"id":3669,"name":"VariableDeclaration","src":"8346:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3665,"type":"uint256","value":"_amount"},"id":3670,"name":"Identifier","src":"8367:7:28"}],"id":3671,"name":"VariableDeclarationStatement","src":"8346:28:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3672,"name":"Identifier","src":"8433:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3374,"type":"address","value":"_tknContractAddress"},"id":3673,"name":"Identifier","src":"8443:19:28"}],"id":3674,"name":"BinaryOperation","src":"8433:29:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2404,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":3675,"name":"Identifier","src":"8478:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3676,"name":"Identifier","src":"8484:6:28"}],"id":3677,"name":"FunctionCall","src":"8478:13:28"}],"id":3678,"name":"MemberAccess","src":"8478:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3679,"name":"Identifier","src":"8509:3:28"}],"id":3680,"name":"MemberAccess","src":"8509:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3681,"name":"Identifier","src":"8521:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3682,"name":"Identifier","src":"8535:10:28"}],"id":3683,"name":"FunctionCall","src":"8478:68:28"}],"id":3684,"name":"ExpressionStatement","src":"8478:68:28"}],"id":3685,"name":"Block","src":"8464:93:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3686,"name":"Identifier","src":"8577:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2676,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2651,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3665,"type":"uint256","value":"_amount"},"id":3687,"name":"Identifier","src":"8590:7:28"}],"id":3688,"name":"MemberAccess","src":"8590:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3368,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3689,"name":"Identifier","src":"8602:16:28"}],"id":3690,"name":"FunctionCall","src":"8590:29:28"}],"id":3691,"name":"MemberAccess","src":"8590:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3390,"type":"uint256","value":"_licenceAmountScaled"},"id":3692,"name":"Identifier","src":"8624:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3368,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":3693,"name":"Identifier","src":"8647:16:28"}],"id":3694,"name":"BinaryOperation","src":"8624:39:28"}],"id":3695,"name":"FunctionCall","src":"8590:74:28"}],"id":3696,"name":"Assignment","src":"8577:87:28"}],"id":3697,"name":"ExpressionStatement","src":"8577:87:28"},{"attributes":{"assignments":[3699]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":3761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3698,"name":"ElementaryTypeName","src":"8678:7:28"}],"id":3699,"name":"VariableDeclaration","src":"8678:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3665,"type":"uint256","value":"_amount"},"id":3700,"name":"Identifier","src":"8702:7:28"}],"id":3701,"name":"MemberAccess","src":"8702:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3702,"name":"Identifier","src":"8714:10:28"}],"id":3703,"name":"FunctionCall","src":"8702:23:28"}],"id":3704,"name":"VariableDeclarationStatement","src":"8678:47:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3705,"name":"Identifier","src":"8744:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3706,"name":"ElementaryTypeNameExpression","src":"8754:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3707,"name":"Literal","src":"8762:1:28"}],"id":3708,"name":"FunctionCall","src":"8754:10:28"}],"id":3709,"name":"BinaryOperation","src":"8744:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2404,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":3710,"name":"Identifier","src":"8784:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3711,"name":"Identifier","src":"8790:6:28"}],"id":3712,"name":"FunctionCall","src":"8784:13:28"}],"id":3713,"name":"MemberAccess","src":"8784:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3714,"name":"Identifier","src":"8815:3:28"}],"id":3715,"name":"MemberAccess","src":"8815:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3716,"name":"Identifier","src":"8827:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3699,"type":"uint256","value":"licenceAmount"},"id":3717,"name":"Identifier","src":"8841:13:28"}],"id":3718,"name":"FunctionCall","src":"8784:71:28"}],"id":3719,"name":"ExpressionStatement","src":"8784:71:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":2404,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":3720,"name":"Identifier","src":"8873:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3721,"name":"Identifier","src":"8879:6:28"}],"id":3722,"name":"FunctionCall","src":"8873:13:28"}],"id":3723,"name":"MemberAccess","src":"8873:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3724,"name":"Identifier","src":"8904:3:28"}],"id":3725,"name":"MemberAccess","src":"8904:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3726,"name":"Identifier","src":"8916:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3727,"name":"Identifier","src":"8930:10:28"}],"id":3728,"name":"FunctionCall","src":"8873:68:28"}],"id":3729,"name":"ExpressionStatement","src":"8873:68:28"}],"id":3730,"name":"Block","src":"8766:190:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":3731,"name":"Identifier","src":"8980:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3732,"name":"Identifier","src":"8988:3:28"}],"id":3733,"name":"MemberAccess","src":"8988:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3665,"type":"uint256","value":"_amount"},"id":3734,"name":"Identifier","src":"9001:7:28"}],"id":3735,"name":"BinaryOperation","src":"8988:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":3736,"name":"Literal","src":"9010:33:28"}],"id":3737,"name":"FunctionCall","src":"8980:64:28"}],"id":3738,"name":"ExpressionStatement","src":"8980:64:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3739,"name":"Identifier","src":"9062:12:28"}],"id":3741,"name":"MemberAccess","src":"9062:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3699,"type":"uint256","value":"licenceAmount"},"id":3742,"name":"Identifier","src":"9084:13:28"}],"id":3743,"name":"FunctionCall","src":"9062:36:28"}],"id":3744,"name":"ExpressionStatement","src":"9062:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3745,"name":"Identifier","src":"9116:12:28"}],"id":3747,"name":"MemberAccess","src":"9116:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3748,"name":"Identifier","src":"9138:10:28"}],"id":3749,"name":"FunctionCall","src":"9116:33:28"}],"id":3750,"name":"ExpressionStatement","src":"9116:33:28"}],"id":3751,"name":"Block","src":"8962:202:28"}],"id":3752,"name":"IfStatement","src":"8740:424:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3347,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":3753,"name":"Identifier","src":"9183:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3754,"name":"Identifier","src":"9208:3:28"}],"id":3755,"name":"MemberAccess","src":"9208:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3378,"type":"address payable","value":"_tokenHolder"},"id":3756,"name":"Identifier","src":"9220:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3757,"name":"Identifier","src":"9234:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3699,"type":"uint256","value":"licenceAmount"},"id":3758,"name":"Identifier","src":"9242:13:28"}],"id":3759,"name":"FunctionCall","src":"9183:73:28"}],"id":3760,"name":"EmitStatement","src":"9178:78:28"}],"id":3761,"name":"Block","src":"8563:704:28"}],"id":3762,"name":"IfStatement","src":"8429:838:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3357,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":3763,"name":"Identifier","src":"9282:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":3764,"name":"Identifier","src":"9307:3:28"}],"id":3765,"name":"MemberAccess","src":"9307:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3376,"type":"address payable","value":"_cryptoFloat"},"id":3766,"name":"Identifier","src":"9319:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3663,"type":"address","value":"_asset"},"id":3767,"name":"Identifier","src":"9333:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3669,"type":"uint256","value":"loadAmount"},"id":3768,"name":"Identifier","src":"9341:10:28"}],"id":3769,"name":"FunctionCall","src":"9282:70:28"}],"id":3770,"name":"EmitStatement","src":"9277:75:28"}],"id":3771,"name":"Block","src":"8336:1023:28"}],"id":3772,"name":"FunctionDefinition","src":"8272:1087:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":3829,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3796,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3773,"name":"ElementaryTypeName","src":"9463:15:28"}],"id":3774,"name":"VariableDeclaration","src":"9463:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":3796,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3775,"name":"ElementaryTypeName","src":"9484:7:28"}],"id":3776,"name":"VariableDeclaration","src":"9484:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":3796,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3777,"name":"ElementaryTypeName","src":"9500:7:28"}],"id":3778,"name":"VariableDeclaration","src":"9500:15:28"}],"id":3779,"name":"ParameterList","src":"9462:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":3782,"name":"ParameterList","src":"9536:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":3780,"name":"Identifier","src":"9526:9:28"}],"id":3781,"name":"ModifierInvocation","src":"9526:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3284,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":3783,"name":"Identifier","src":"9546:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3774,"type":"address payable","value":"_to"},"id":3784,"name":"Identifier","src":"9560:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3776,"type":"address","value":"_asset"},"id":3785,"name":"Identifier","src":"9565:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3778,"type":"uint256","value":"_amount"},"id":3786,"name":"Identifier","src":"9573:7:28"}],"id":3787,"name":"FunctionCall","src":"9546:35:28"}],"id":3788,"name":"ExpressionStatement","src":"9546:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3365,"type":"function (address,address,uint256)","value":"Claimed"},"id":3789,"name":"Identifier","src":"9596:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3774,"type":"address payable","value":"_to"},"id":3790,"name":"Identifier","src":"9604:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3776,"type":"address","value":"_asset"},"id":3791,"name":"Identifier","src":"9609:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3778,"type":"uint256","value":"_amount"},"id":3792,"name":"Identifier","src":"9617:7:28"}],"id":3793,"name":"FunctionCall","src":"9596:29:28"}],"id":3794,"name":"EmitStatement","src":"9591:34:28"}],"id":3795,"name":"Block","src":"9536:96:28"}],"id":3796,"name":"FunctionDefinition","src":"9448:184:28"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3797,"name":"ParameterList","src":"9731:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3804,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3798,"name":"ElementaryTypeName","src":"9755:4:28"}],"id":3799,"name":"VariableDeclaration","src":"9755:4:28"}],"id":3800,"name":"ParameterList","src":"9754:6:28"},{"children":[{"attributes":{"functionReturnParameters":3800},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3382,"type":"bool","value":"_lockedCryptoFloat"},"id":3801,"name":"Identifier","src":"9778:18:28"}],"id":3802,"name":"Return","src":"9771:25:28"}],"id":3803,"name":"Block","src":"9761:42:28"}],"id":3804,"name":"FunctionDefinition","src":"9711:92:28"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3805,"name":"ParameterList","src":"9903:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3812,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3806,"name":"ElementaryTypeName","src":"9927:4:28"}],"id":3807,"name":"VariableDeclaration","src":"9927:4:28"}],"id":3808,"name":"ParameterList","src":"9926:6:28"},{"children":[{"attributes":{"functionReturnParameters":3808},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3384,"type":"bool","value":"_lockedTokenHolder"},"id":3809,"name":"Identifier","src":"9950:18:28"}],"id":3810,"name":"Return","src":"9943:25:28"}],"id":3811,"name":"Block","src":"9933:42:28"}],"id":3812,"name":"FunctionDefinition","src":"9882:93:28"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3813,"name":"ParameterList","src":"10079:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3820,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3814,"name":"ElementaryTypeName","src":"10103:4:28"}],"id":3815,"name":"VariableDeclaration","src":"10103:4:28"}],"id":3816,"name":"ParameterList","src":"10102:6:28"},{"children":[{"attributes":{"functionReturnParameters":3816},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3386,"type":"bool","value":"_lockedLicenceDAO"},"id":3817,"name":"Identifier","src":"10126:17:28"}],"id":3818,"name":"Return","src":"10119:24:28"}],"id":3819,"name":"Block","src":"10109:41:28"}],"id":3820,"name":"FunctionDefinition","src":"10054:96:28"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":3829,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3821,"name":"ParameterList","src":"10254:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":3828,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3822,"name":"ElementaryTypeName","src":"10278:4:28"}],"id":3823,"name":"VariableDeclaration","src":"10278:4:28"}],"id":3824,"name":"ParameterList","src":"10277:6:28"},{"children":[{"attributes":{"functionReturnParameters":3824},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3388,"type":"bool","value":"_lockedTKNContractAddress"},"id":3825,"name":"Identifier","src":"10301:25:28"}],"id":3826,"name":"Return","src":"10294:32:28"}],"id":3827,"name":"Block","src":"10284:49:28"}],"id":3828,"name":"FunctionDefinition","src":"10221:112:28"}],"id":3829,"name":"ContractDefinition","src":"1381:8954:28"}],"id":3830,"name":"SourceUnit","src":"767:9569:28"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[4682],"TokenWhitelist":[5582]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4596,"name":"PragmaDirective","src":"774:24:29"},{"attributes":{"SourceUnit":2827,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4597,"name":"ImportDirective","src":"800:38:29"},{"attributes":{"SourceUnit":3286,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4598,"name":"ImportDirective","src":"839:39:29"},{"attributes":{"SourceUnit":8687,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4599,"name":"ImportDirective","src":"879:36:29"},{"attributes":{"SourceUnit":8576,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4600,"name":"ImportDirective","src":"916:33:29"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":5583,"symbolAliases":[null],"unitAlias":""},"id":4601,"name":"ImportDirective","src":"950:34:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[4682],"name":"ITokenWhitelist","scope":5583},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4602,"name":"ElementaryTypeName","src":"1124:7:29"}],"id":4603,"name":"VariableDeclaration","src":"1124:7:29"}],"id":4604,"name":"ParameterList","src":"1123:9:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4605,"name":"ElementaryTypeName","src":"1156:6:29"}],"id":4606,"name":"VariableDeclaration","src":"1156:13:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4607,"name":"ElementaryTypeName","src":"1171:7:29"}],"id":4608,"name":"VariableDeclaration","src":"1171:7:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4609,"name":"ElementaryTypeName","src":"1180:7:29"}],"id":4610,"name":"VariableDeclaration","src":"1180:7:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4611,"name":"ElementaryTypeName","src":"1189:4:29"}],"id":4612,"name":"VariableDeclaration","src":"1189:4:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4613,"name":"ElementaryTypeName","src":"1195:4:29"}],"id":4614,"name":"VariableDeclaration","src":"1195:4:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4615,"name":"ElementaryTypeName","src":"1201:4:29"}],"id":4616,"name":"VariableDeclaration","src":"1201:4:29"},{"attributes":{"constant":false,"name":"","scope":4620,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4617,"name":"ElementaryTypeName","src":"1207:7:29"}],"id":4618,"name":"VariableDeclaration","src":"1207:7:29"}],"id":4619,"name":"ParameterList","src":"1155:60:29"}],"id":4620,"name":"FunctionDefinition","src":"1102:114:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4621,"name":"ParameterList","src":"1248:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4622,"name":"ElementaryTypeName","src":"1274:6:29"}],"id":4623,"name":"VariableDeclaration","src":"1274:13:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4624,"name":"ElementaryTypeName","src":"1289:7:29"}],"id":4625,"name":"VariableDeclaration","src":"1289:7:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4626,"name":"ElementaryTypeName","src":"1298:7:29"}],"id":4627,"name":"VariableDeclaration","src":"1298:7:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4628,"name":"ElementaryTypeName","src":"1307:4:29"}],"id":4629,"name":"VariableDeclaration","src":"1307:4:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4630,"name":"ElementaryTypeName","src":"1313:4:29"}],"id":4631,"name":"VariableDeclaration","src":"1313:4:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4632,"name":"ElementaryTypeName","src":"1319:4:29"}],"id":4633,"name":"VariableDeclaration","src":"1319:4:29"},{"attributes":{"constant":false,"name":"","scope":4637,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4634,"name":"ElementaryTypeName","src":"1325:7:29"}],"id":4635,"name":"VariableDeclaration","src":"1325:7:29"}],"id":4636,"name":"ParameterList","src":"1273:60:29"}],"id":4637,"name":"FunctionDefinition","src":"1222:112:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4638,"name":"ParameterList","src":"1366:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4643,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4639,"name":"ElementaryTypeName","src":"1392:7:29"}],"id":4640,"name":"ArrayTypeName","src":"1392:9:29"}],"id":4641,"name":"VariableDeclaration","src":"1392:16:29"}],"id":4642,"name":"ParameterList","src":"1391:18:29"}],"id":4643,"name":"FunctionDefinition","src":"1340:70:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4644,"name":"ParameterList","src":"1441:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4649,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4645,"name":"ElementaryTypeName","src":"1467:7:29"}],"id":4646,"name":"ArrayTypeName","src":"1467:9:29"}],"id":4647,"name":"VariableDeclaration","src":"1467:16:29"}],"id":4648,"name":"ParameterList","src":"1466:18:29"}],"id":4649,"name":"FunctionDefinition","src":"1416:69:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4656,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4650,"name":"ElementaryTypeName","src":"1518:6:29"}],"id":4651,"name":"VariableDeclaration","src":"1518:6:29"}],"id":4652,"name":"ParameterList","src":"1517:8:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4656,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4653,"name":"ElementaryTypeName","src":"1549:4:29"}],"id":4654,"name":"VariableDeclaration","src":"1549:4:29"}],"id":4655,"name":"ParameterList","src":"1548:6:29"}],"id":4656,"name":"FunctionDefinition","src":"1491:64:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4667,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4657,"name":"ElementaryTypeName","src":"1597:7:29"}],"id":4658,"name":"VariableDeclaration","src":"1597:7:29"},{"attributes":{"constant":false,"name":"","scope":4667,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4659,"name":"ElementaryTypeName","src":"1606:5:29"}],"id":4660,"name":"VariableDeclaration","src":"1606:14:29"}],"id":4661,"name":"ParameterList","src":"1596:25:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4667,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4662,"name":"ElementaryTypeName","src":"1645:7:29"}],"id":4663,"name":"VariableDeclaration","src":"1645:7:29"},{"attributes":{"constant":false,"name":"","scope":4667,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4664,"name":"ElementaryTypeName","src":"1654:7:29"}],"id":4665,"name":"VariableDeclaration","src":"1654:7:29"}],"id":4666,"name":"ParameterList","src":"1644:18:29"}],"id":4667,"name":"FunctionDefinition","src":"1561:102:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":4682,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4668,"name":"ParameterList","src":"1688:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":4672,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4669,"name":"ElementaryTypeName","src":"1714:7:29"}],"id":4670,"name":"VariableDeclaration","src":"1714:7:29"}],"id":4671,"name":"ParameterList","src":"1713:9:29"}],"id":4672,"name":"FunctionDefinition","src":"1669:54:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":4682,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4673,"name":"ElementaryTypeName","src":"1754:7:29"}],"id":4674,"name":"VariableDeclaration","src":"1754:7:29"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4675,"name":"ElementaryTypeName","src":"1763:7:29"}],"id":4676,"name":"VariableDeclaration","src":"1763:7:29"},{"attributes":{"constant":false,"name":"","scope":4681,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4677,"name":"ElementaryTypeName","src":"1772:7:29"}],"id":4678,"name":"VariableDeclaration","src":"1772:7:29"}],"id":4679,"name":"ParameterList","src":"1753:27:29"},{"attributes":{"parameters":[null]},"children":[],"id":4680,"name":"ParameterList","src":"1789:0:29"}],"id":4681,"name":"FunctionDefinition","src":"1729:61:29"}],"id":4682,"name":"ContractDefinition","src":"1070:722:29"},{"attributes":{"contractDependencies":[2826,2871,3285],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[5582,3285,2826,2871],"name":"TokenWhitelist","scope":5583},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":4683,"name":"UserDefinedTypeName","src":"1966:13:29"}],"id":4684,"name":"InheritanceSpecifier","src":"1966:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2826,"type":"contract Controllable"},"id":4685,"name":"UserDefinedTypeName","src":"1981:12:29"}],"id":4686,"name":"InheritanceSpecifier","src":"1981:12:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3285,"type":"contract Transferrable"},"id":4687,"name":"UserDefinedTypeName","src":"1995:13:29"}],"id":4688,"name":"InheritanceSpecifier","src":"1995:13:29"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":8575,"type":"library strings"},"id":4689,"name":"UserDefinedTypeName","src":"2021:7:29"}],"id":4690,"name":"UsingForDirective","src":"2015:20:29"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":4691,"name":"UserDefinedTypeName","src":"2046:8:29"},{"attributes":{"name":"uint256","type":"uint256"},"id":4692,"name":"ElementaryTypeName","src":"2059:7:29"}],"id":4693,"name":"UsingForDirective","src":"2040:27:29"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":8686,"type":"library BytesUtils"},"id":4694,"name":"UserDefinedTypeName","src":"2078:10:29"},{"attributes":{"name":"bytes","type":"bytes"},"id":4695,"name":"ElementaryTypeName","src":"2093:5:29"}],"id":4696,"name":"UsingForDirective","src":"2072:27:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4704,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4697,"name":"ElementaryTypeName","src":"2128:7:29"}],"id":4698,"name":"VariableDeclaration","src":"2128:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4704,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4699,"name":"ElementaryTypeName","src":"2145:7:29"}],"id":4700,"name":"VariableDeclaration","src":"2145:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":4704,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4701,"name":"ElementaryTypeName","src":"2161:7:29"}],"id":4702,"name":"VariableDeclaration","src":"2161:13:29"}],"id":4703,"name":"ParameterList","src":"2127:48:29"}],"id":4704,"name":"EventDefinition","src":"2105:71:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4712,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4705,"name":"ElementaryTypeName","src":"2209:7:29"}],"id":4706,"name":"VariableDeclaration","src":"2209:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4712,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4707,"name":"ElementaryTypeName","src":"2226:7:29"}],"id":4708,"name":"VariableDeclaration","src":"2226:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":4712,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4709,"name":"ElementaryTypeName","src":"2242:4:29"}],"id":4710,"name":"VariableDeclaration","src":"2242:14:29"}],"id":4711,"name":"ParameterList","src":"2208:49:29"}],"id":4712,"name":"EventDefinition","src":"2182:76:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4720,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4713,"name":"ElementaryTypeName","src":"2292:7:29"}],"id":4714,"name":"VariableDeclaration","src":"2292:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4720,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4715,"name":"ElementaryTypeName","src":"2309:7:29"}],"id":4716,"name":"VariableDeclaration","src":"2309:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":4720,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4717,"name":"ElementaryTypeName","src":"2325:4:29"}],"id":4718,"name":"VariableDeclaration","src":"2325:16:29"}],"id":4719,"name":"ParameterList","src":"2291:51:29"}],"id":4720,"name":"EventDefinition","src":"2263:80:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4734,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4721,"name":"ElementaryTypeName","src":"2366:7:29"}],"id":4722,"name":"VariableDeclaration","src":"2366:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4734,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4723,"name":"ElementaryTypeName","src":"2383:7:29"}],"id":4724,"name":"VariableDeclaration","src":"2383:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":4734,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4725,"name":"ElementaryTypeName","src":"2399:6:29"}],"id":4726,"name":"VariableDeclaration","src":"2399:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":4734,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4727,"name":"ElementaryTypeName","src":"2415:7:29"}],"id":4728,"name":"VariableDeclaration","src":"2415:18:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":4734,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4729,"name":"ElementaryTypeName","src":"2435:4:29"}],"id":4730,"name":"VariableDeclaration","src":"2435:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":4734,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4731,"name":"ElementaryTypeName","src":"2451:4:29"}],"id":4732,"name":"VariableDeclaration","src":"2451:16:29"}],"id":4733,"name":"ParameterList","src":"2365:103:29"}],"id":4734,"name":"EventDefinition","src":"2349:120:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":4740,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4735,"name":"ElementaryTypeName","src":"2493:7:29"}],"id":4736,"name":"VariableDeclaration","src":"2493:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4740,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4737,"name":"ElementaryTypeName","src":"2510:7:29"}],"id":4738,"name":"VariableDeclaration","src":"2510:14:29"}],"id":4739,"name":"ParameterList","src":"2492:33:29"}],"id":4740,"name":"EventDefinition","src":"2474:52:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4744,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4741,"name":"ElementaryTypeName","src":"2552:6:29"}],"id":4742,"name":"VariableDeclaration","src":"2552:16:29"}],"id":4743,"name":"ParameterList","src":"2551:18:29"}],"id":4744,"name":"EventDefinition","src":"2532:38:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4748,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4745,"name":"ElementaryTypeName","src":"2597:6:29"}],"id":4746,"name":"VariableDeclaration","src":"2597:16:29"}],"id":4747,"name":"ParameterList","src":"2596:18:29"}],"id":4748,"name":"EventDefinition","src":"2575:40:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4754,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4749,"name":"ElementaryTypeName","src":"2647:7:29"}],"id":4750,"name":"VariableDeclaration","src":"2647:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4754,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4751,"name":"ElementaryTypeName","src":"2663:6:29"}],"id":4752,"name":"VariableDeclaration","src":"2663:16:29"}],"id":4753,"name":"ParameterList","src":"2646:34:29"}],"id":4754,"name":"EventDefinition","src":"2620:61:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":4760,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4755,"name":"ElementaryTypeName","src":"2715:7:29"}],"id":4756,"name":"VariableDeclaration","src":"2715:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":4760,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4757,"name":"ElementaryTypeName","src":"2731:6:29"}],"id":4758,"name":"VariableDeclaration","src":"2731:16:29"}],"id":4759,"name":"ParameterList","src":"2714:34:29"}],"id":4760,"name":"EventDefinition","src":"2686:63:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4761,"name":"ElementaryTypeName","src":"2769:7:29"}],"id":4762,"name":"VariableDeclaration","src":"2769:11:29"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4763,"name":"ElementaryTypeName","src":"2782:7:29"}],"id":4764,"name":"VariableDeclaration","src":"2782:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4768,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4765,"name":"ElementaryTypeName","src":"2798:7:29"}],"id":4766,"name":"VariableDeclaration","src":"2798:15:29"}],"id":4767,"name":"ParameterList","src":"2768:46:29"}],"id":4768,"name":"EventDefinition","src":"2755:60:29"},{"attributes":{"constant":true,"name":"_APPROVE","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4769,"name":"ElementaryTypeName","src":"2924:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":4770,"name":"Literal","src":"2959:10:29"}],"id":4771,"name":"VariableDeclaration","src":"2924:45:29"},{"attributes":{"constant":true,"name":"_BURN","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4772,"name":"ElementaryTypeName","src":"3028:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":4773,"name":"Literal","src":"3060:10:29"}],"id":4774,"name":"VariableDeclaration","src":"3028:42:29"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4775,"name":"ElementaryTypeName","src":"3118:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":4776,"name":"Literal","src":"3154:10:29"}],"id":4777,"name":"VariableDeclaration","src":"3118:46:29"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4778,"name":"ElementaryTypeName","src":"3224:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":4779,"name":"Literal","src":"3265:10:29"}],"id":4780,"name":"VariableDeclaration","src":"3224:51:29"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":5582,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":4795,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4781,"name":"ElementaryTypeName","src":"3371:6:29"}],"id":4782,"name":"VariableDeclaration","src":"3371:13:29"},{"attributes":{"constant":false,"name":"magnitude","scope":4795,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4783,"name":"ElementaryTypeName","src":"3410:7:29"}],"id":4784,"name":"VariableDeclaration","src":"3410:17:29"},{"attributes":{"constant":false,"name":"rate","scope":4795,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4785,"name":"ElementaryTypeName","src":"3452:7:29"}],"id":4786,"name":"VariableDeclaration","src":"3452:12:29"},{"attributes":{"constant":false,"name":"available","scope":4795,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4787,"name":"ElementaryTypeName","src":"3504:4:29"}],"id":4788,"name":"VariableDeclaration","src":"3504:14:29"},{"attributes":{"constant":false,"name":"loadable","scope":4795,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4789,"name":"ElementaryTypeName","src":"3570:4:29"}],"id":4790,"name":"VariableDeclaration","src":"3570:13:29"},{"attributes":{"constant":false,"name":"redeemable","scope":4795,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4791,"name":"ElementaryTypeName","src":"3640:4:29"}],"id":4792,"name":"VariableDeclaration","src":"3640:15:29"},{"attributes":{"constant":false,"name":"lastUpdate","scope":4795,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4793,"name":"ElementaryTypeName","src":"3724:7:29"}],"id":4794,"name":"VariableDeclaration","src":"3724:18:29"}],"id":4795,"name":"StructDefinition","src":"3348:433:29"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":5582,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4796,"name":"ElementaryTypeName","src":"3795:7:29"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4795,"type":"struct TokenWhitelist.Token"},"id":4797,"name":"UserDefinedTypeName","src":"3806:5:29"}],"id":4798,"name":"Mapping","src":"3787:25:29"}],"id":4799,"name":"VariableDeclaration","src":"3787:47:29"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":5582,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4800,"name":"ElementaryTypeName","src":"4004:6:29"},{"attributes":{"name":"bool","type":"bool"},"id":4801,"name":"ElementaryTypeName","src":"4014:4:29"}],"id":4802,"name":"Mapping","src":"3996:23:29"}],"id":4803,"name":"VariableDeclaration","src":"3996:50:29"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":5582,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4804,"name":"ElementaryTypeName","src":"4053:7:29"}],"id":4805,"name":"ArrayTypeName","src":"4053:9:29"}],"id":4806,"name":"VariableDeclaration","src":"4053:36:29"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":5582,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4807,"name":"ElementaryTypeName","src":"4182:7:29"}],"id":4808,"name":"VariableDeclaration","src":"4182:34:29"},{"attributes":{"constant":false,"name":"_stablecoin","scope":5582,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4809,"name":"ElementaryTypeName","src":"4266:7:29"}],"id":4810,"name":"VariableDeclaration","src":"4266:27:29"},{"attributes":{"constant":false,"name":"_oracleNode","scope":5582,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4811,"name":"ElementaryTypeName","src":"4372:7:29"}],"id":4812,"name":"VariableDeclaration","src":"4372:27:29"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":4862,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4813,"name":"ElementaryTypeName","src":"4770:7:29"}],"id":4814,"name":"VariableDeclaration","src":"4770:13:29"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":4862,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4815,"name":"ElementaryTypeName","src":"4785:7:29"}],"id":4816,"name":"VariableDeclaration","src":"4785:20:29"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":4862,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4817,"name":"ElementaryTypeName","src":"4807:7:29"}],"id":4818,"name":"VariableDeclaration","src":"4807:24:29"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":4862,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4819,"name":"ElementaryTypeName","src":"4833:7:29"}],"id":4820,"name":"VariableDeclaration","src":"4833:27:29"}],"id":4821,"name":"ParameterList","src":"4769:92:29"},{"attributes":{"parameters":[null]},"children":[],"id":4828,"name":"ParameterList","src":"4949:0:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2871,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":4822,"name":"Identifier","src":"4885:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4814,"type":"address","value":"_ens_"},"id":4823,"name":"Identifier","src":"4899:5:29"}],"id":4824,"name":"ModifierInvocation","src":"4885:20:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2826,"type":"type(contract Controllable)","value":"Controllable"},"id":4825,"name":"Identifier","src":"4914:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4818,"type":"bytes32","value":"_controllerNode_"},"id":4826,"name":"Identifier","src":"4927:16:29"}],"id":4827,"name":"ModifierInvocation","src":"4914:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"bytes32","value":"_oracleNode"},"id":4829,"name":"Identifier","src":"4959:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"bytes32","value":"_oracleNode_"},"id":4830,"name":"Identifier","src":"4973:12:29"}],"id":4831,"name":"Assignment","src":"4959:26:29"}],"id":4832,"name":"ExpressionStatement","src":"4959:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4810,"type":"address","value":"_stablecoin"},"id":4833,"name":"Identifier","src":"4995:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4820,"type":"address","value":"_stablecoinAddress_"},"id":4834,"name":"Identifier","src":"5009:19:29"}],"id":4835,"name":"Assignment","src":"4995:33:29"}],"id":4836,"name":"ExpressionStatement","src":"4995:33:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4837,"name":"Identifier","src":"5083:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4771,"type":"bytes4","value":"_APPROVE"},"id":4838,"name":"Identifier","src":"5102:8:29"}],"id":4839,"name":"IndexAccess","src":"5083:28:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4840,"name":"Literal","src":"5114:4:29"}],"id":4841,"name":"Assignment","src":"5083:35:29"}],"id":4842,"name":"ExpressionStatement","src":"5083:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4843,"name":"Identifier","src":"5128:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"bytes4","value":"_BURN"},"id":4844,"name":"Identifier","src":"5147:5:29"}],"id":4845,"name":"IndexAccess","src":"5128:25:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4846,"name":"Literal","src":"5156:4:29"}],"id":4847,"name":"Assignment","src":"5128:32:29"}],"id":4848,"name":"ExpressionStatement","src":"5128:32:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4849,"name":"Identifier","src":"5170:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4777,"type":"bytes4","value":"_TRANSFER"},"id":4850,"name":"Identifier","src":"5189:9:29"}],"id":4851,"name":"IndexAccess","src":"5170:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4852,"name":"Literal","src":"5202:4:29"}],"id":4853,"name":"Assignment","src":"5170:36:29"}],"id":4854,"name":"ExpressionStatement","src":"5170:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":4855,"name":"Identifier","src":"5216:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"bytes4","value":"_TRANSFER_FROM"},"id":4856,"name":"Identifier","src":"5235:14:29"}],"id":4857,"name":"IndexAccess","src":"5216:34:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4858,"name":"Literal","src":"5253:4:29"}],"id":4859,"name":"Assignment","src":"5216:41:29"}],"id":4860,"name":"ExpressionStatement","src":"5216:41:29"}],"id":4861,"name":"Block","src":"4949:315:29"}],"id":4862,"name":"FunctionDefinition","src":"4758:506:29"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4863,"name":"ParameterList","src":"5296:2:29"},{"children":[{"attributes":{"assignments":[4865]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":4884,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4864,"name":"ElementaryTypeName","src":"5309:7:29"}],"id":4865,"name":"VariableDeclaration","src":"5309:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4866,"name":"Identifier","src":"5333:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"bytes32","value":"_oracleNode"},"id":4867,"name":"Identifier","src":"5345:11:29"}],"id":4868,"name":"FunctionCall","src":"5333:24:29"}],"id":4869,"name":"VariableDeclarationStatement","src":"5309:48:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4870,"name":"Identifier","src":"5367:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":4871,"name":"Identifier","src":"5375:8:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4872,"name":"Identifier","src":"5384:3:29"}],"id":4873,"name":"MemberAccess","src":"5384:10:29"}],"id":4874,"name":"FunctionCall","src":"5375:20:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":4875,"name":"Identifier","src":"5399:3:29"}],"id":4876,"name":"MemberAccess","src":"5399:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4865,"type":"address","value":"oracleAddress"},"id":4877,"name":"Identifier","src":"5413:13:29"}],"id":4878,"name":"BinaryOperation","src":"5399:27:29"}],"id":4879,"name":"BinaryOperation","src":"5375:51:29"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":4880,"name":"Literal","src":"5428:24:29"}],"id":4881,"name":"FunctionCall","src":"5367:86:29"}],"id":4882,"name":"ExpressionStatement","src":"5367:86:29"},{"id":4883,"name":"PlaceholderStatement","src":"5463:1:29"}],"id":4884,"name":"Block","src":"5299:172:29"}],"id":4885,"name":"ModifierDefinition","src":"5270:201:29"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4886,"name":"ElementaryTypeName","src":"6068:7:29"}],"id":4887,"name":"ArrayTypeName","src":"6068:9:29"}],"id":4888,"name":"VariableDeclaration","src":"6068:26:29"},{"attributes":{"constant":false,"name":"_symbols","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4889,"name":"ElementaryTypeName","src":"6104:7:29"}],"id":4890,"name":"ArrayTypeName","src":"6104:9:29"}],"id":4891,"name":"VariableDeclaration","src":"6104:27:29"},{"attributes":{"constant":false,"name":"_magnitude","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4892,"name":"ElementaryTypeName","src":"6141:7:29"}],"id":4893,"name":"ArrayTypeName","src":"6141:9:29"}],"id":4894,"name":"VariableDeclaration","src":"6141:29:29"},{"attributes":{"constant":false,"name":"_loadable","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4895,"name":"ElementaryTypeName","src":"6180:4:29"}],"id":4896,"name":"ArrayTypeName","src":"6180:6:29"}],"id":4897,"name":"VariableDeclaration","src":"6180:25:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":5029,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4898,"name":"ElementaryTypeName","src":"6215:4:29"}],"id":4899,"name":"ArrayTypeName","src":"6215:6:29"}],"id":4900,"name":"VariableDeclaration","src":"6215:27:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":5029,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4901,"name":"ElementaryTypeName","src":"6252:7:29"}],"id":4902,"name":"VariableDeclaration","src":"6252:19:29"}],"id":4903,"name":"ParameterList","src":"6058:219:29"},{"attributes":{"parameters":[null]},"children":[],"id":4906,"name":"ParameterList","src":"6297:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":4904,"name":"Identifier","src":"6287:9:29"}],"id":4905,"name":"ModifierInvocation","src":"6287:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4907,"name":"Identifier","src":"6368:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4908,"name":"Identifier","src":"6389:7:29"}],"id":4909,"name":"MemberAccess","src":"6389:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4891,"type":"bytes32[] calldata","value":"_symbols"},"id":4910,"name":"Identifier","src":"6407:8:29"}],"id":4911,"name":"MemberAccess","src":"6407:15:29"}],"id":4912,"name":"BinaryOperation","src":"6389:33:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4913,"name":"Identifier","src":"6442:7:29"}],"id":4914,"name":"MemberAccess","src":"6442:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4894,"type":"uint256[] calldata","value":"_magnitude"},"id":4915,"name":"Identifier","src":"6460:10:29"}],"id":4916,"name":"MemberAccess","src":"6460:17:29"}],"id":4917,"name":"BinaryOperation","src":"6442:35:29"}],"id":4918,"name":"BinaryOperation","src":"6389:88:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4919,"name":"Identifier","src":"6497:7:29"}],"id":4920,"name":"MemberAccess","src":"6497:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4897,"type":"bool[] calldata","value":"_loadable"},"id":4921,"name":"Identifier","src":"6515:9:29"}],"id":4922,"name":"MemberAccess","src":"6515:16:29"}],"id":4923,"name":"BinaryOperation","src":"6497:34:29"}],"id":4924,"name":"BinaryOperation","src":"6389:142:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4925,"name":"Identifier","src":"6551:7:29"}],"id":4926,"name":"MemberAccess","src":"6551:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4897,"type":"bool[] calldata","value":"_loadable"},"id":4927,"name":"Identifier","src":"6569:9:29"}],"id":4928,"name":"MemberAccess","src":"6569:16:29"}],"id":4929,"name":"BinaryOperation","src":"6551:34:29"}],"id":4930,"name":"BinaryOperation","src":"6389:196:29"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":4931,"name":"Literal","src":"6599:32:29"}],"id":4932,"name":"FunctionCall","src":"6368:273:29"}],"id":4933,"name":"ExpressionStatement","src":"6368:273:29"},{"children":[{"attributes":{"assignments":[4935]},"children":[{"attributes":{"constant":false,"name":"i","scope":5027,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4934,"name":"ElementaryTypeName","src":"6715:7:29"}],"id":4935,"name":"VariableDeclaration","src":"6715:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4936,"name":"Literal","src":"6727:1:29"}],"id":4937,"name":"VariableDeclarationStatement","src":"6715:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4938,"name":"Identifier","src":"6730:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4939,"name":"Identifier","src":"6734:7:29"}],"id":4940,"name":"MemberAccess","src":"6734:14:29"}],"id":4941,"name":"BinaryOperation","src":"6730:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4942,"name":"Identifier","src":"6750:1:29"}],"id":4943,"name":"UnaryOperation","src":"6750:3:29"}],"id":4944,"name":"ExpressionStatement","src":"6750:3:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":4945,"name":"Identifier","src":"6832:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":4946,"name":"Identifier","src":"6841:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4947,"name":"Identifier","src":"6855:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4948,"name":"Identifier","src":"6863:1:29"}],"id":4949,"name":"IndexAccess","src":"6855:10:29"}],"id":4950,"name":"IndexAccess","src":"6841:25:29"}],"id":4951,"name":"MemberAccess","src":"6841:35:29"}],"id":4952,"name":"UnaryOperation","src":"6840:36:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":4953,"name":"Literal","src":"6878:25:29"}],"id":4954,"name":"FunctionCall","src":"6832:72:29"}],"id":4955,"name":"ExpressionStatement","src":"6832:72:29"},{"attributes":{"assignments":[4957]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":5026,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4956,"name":"ElementaryTypeName","src":"6964:6:29"}],"id":4957,"name":"VariableDeclaration","src":"6964:20:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":7124,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":7079,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4891,"type":"bytes32[] calldata","value":"_symbols"},"id":4958,"name":"Identifier","src":"6987:8:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4959,"name":"Identifier","src":"6996:1:29"}],"id":4960,"name":"IndexAccess","src":"6987:11:29"}],"id":4961,"name":"MemberAccess","src":"6987:22:29"}],"id":4962,"name":"FunctionCall","src":"6987:24:29"}],"id":4963,"name":"MemberAccess","src":"6987:33:29"}],"id":4964,"name":"FunctionCall","src":"6987:35:29"}],"id":4965,"name":"VariableDeclarationStatement","src":"6964:58:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":4966,"name":"Identifier","src":"7084:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4967,"name":"Identifier","src":"7098:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4968,"name":"Identifier","src":"7106:1:29"}],"id":4969,"name":"IndexAccess","src":"7098:10:29"}],"id":4970,"name":"IndexAccess","src":"7084:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4795,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":4971,"name":"Identifier","src":"7112:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4957,"type":"string memory","value":"symbol"},"id":4972,"name":"Identifier","src":"7144:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4894,"type":"uint256[] calldata","value":"_magnitude"},"id":4973,"name":"Identifier","src":"7179:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4974,"name":"Identifier","src":"7190:1:29"}],"id":4975,"name":"IndexAccess","src":"7179:13:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4976,"name":"Literal","src":"7216:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4977,"name":"Literal","src":"7246:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4897,"type":"bool[] calldata","value":"_loadable"},"id":4978,"name":"Identifier","src":"7278:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4979,"name":"Identifier","src":"7288:1:29"}],"id":4980,"name":"IndexAccess","src":"7278:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4900,"type":"bool[] calldata","value":"_redeemable"},"id":4981,"name":"Identifier","src":"7320:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4982,"name":"Identifier","src":"7332:1:29"}],"id":4983,"name":"IndexAccess","src":"7320:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4902,"type":"uint256","value":"_lastUpdate"},"id":4984,"name":"Identifier","src":"7364:11:29"}],"id":4985,"name":"FunctionCall","src":"7112:278:29"}],"id":4986,"name":"Assignment","src":"7084:306:29"}],"id":4987,"name":"ExpressionStatement","src":"7084:306:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":4988,"name":"Identifier","src":"7462:18:29"}],"id":4990,"name":"MemberAccess","src":"7462:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":4991,"name":"Identifier","src":"7486:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4992,"name":"Identifier","src":"7494:1:29"}],"id":4993,"name":"IndexAccess","src":"7486:10:29"}],"id":4994,"name":"FunctionCall","src":"7462:35:29"}],"id":4995,"name":"ExpressionStatement","src":"7462:35:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4900,"type":"bool[] calldata","value":"_redeemable"},"id":4996,"name":"Identifier","src":"7587:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":4997,"name":"Identifier","src":"7599:1:29"}],"id":4998,"name":"IndexAccess","src":"7587:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":4999,"name":"Identifier","src":"7621:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5000,"name":"Identifier","src":"7642:18:29"}],"id":5001,"name":"MemberAccess","src":"7642:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5002,"name":"Literal","src":"7665:1:29"}],"id":5003,"name":"FunctionCall","src":"7642:25:29"}],"id":5004,"name":"Assignment","src":"7621:46:29"}],"id":5005,"name":"ExpressionStatement","src":"7621:46:29"}],"id":5006,"name":"Block","src":"7603:79:29"}],"id":5007,"name":"IfStatement","src":"7583:99:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4734,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":5008,"name":"Identifier","src":"7742:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5009,"name":"Identifier","src":"7753:3:29"}],"id":5010,"name":"MemberAccess","src":"7753:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4888,"type":"address[] calldata","value":"_tokens"},"id":5011,"name":"Identifier","src":"7765:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":5012,"name":"Identifier","src":"7773:1:29"}],"id":5013,"name":"IndexAccess","src":"7765:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4957,"type":"string memory","value":"symbol"},"id":5014,"name":"Identifier","src":"7777:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4894,"type":"uint256[] calldata","value":"_magnitude"},"id":5015,"name":"Identifier","src":"7785:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":5016,"name":"Identifier","src":"7796:1:29"}],"id":5017,"name":"IndexAccess","src":"7785:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4897,"type":"bool[] calldata","value":"_loadable"},"id":5018,"name":"Identifier","src":"7800:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":5019,"name":"Identifier","src":"7810:1:29"}],"id":5020,"name":"IndexAccess","src":"7800:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4900,"type":"bool[] calldata","value":"_redeemable"},"id":5021,"name":"Identifier","src":"7814:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4935,"type":"uint256","value":"i"},"id":5022,"name":"Identifier","src":"7826:1:29"}],"id":5023,"name":"IndexAccess","src":"7814:14:29"}],"id":5024,"name":"FunctionCall","src":"7742:87:29"}],"id":5025,"name":"EmitStatement","src":"7737:92:29"}],"id":5026,"name":"Block","src":"6755:1085:29"}],"id":5027,"name":"ForStatement","src":"6710:1130:29"}],"id":5028,"name":"Block","src":"6297:1549:29"}],"id":5029,"name":"FunctionDefinition","src":"6040:1806:29"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5130,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5030,"name":"ElementaryTypeName","src":"7995:7:29"}],"id":5031,"name":"ArrayTypeName","src":"7995:9:29"}],"id":5032,"name":"VariableDeclaration","src":"7995:26:29"}],"id":5033,"name":"ParameterList","src":"7994:28:29"},{"attributes":{"parameters":[null]},"children":[],"id":5036,"name":"ParameterList","src":"8042:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":5034,"name":"Identifier","src":"8032:9:29"}],"id":5035,"name":"ModifierInvocation","src":"8032:9:29"},{"children":[{"children":[{"attributes":{"assignments":[5038]},"children":[{"attributes":{"constant":false,"name":"i","scope":5128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5037,"name":"ElementaryTypeName","src":"8160:7:29"}],"id":5038,"name":"VariableDeclaration","src":"8160:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5039,"name":"Literal","src":"8172:1:29"}],"id":5040,"name":"VariableDeclarationStatement","src":"8160:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5038,"type":"uint256","value":"i"},"id":5041,"name":"Identifier","src":"8175:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5032,"type":"address[] calldata","value":"_tokens"},"id":5042,"name":"Identifier","src":"8179:7:29"}],"id":5043,"name":"MemberAccess","src":"8179:14:29"}],"id":5044,"name":"BinaryOperation","src":"8175:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5038,"type":"uint256","value":"i"},"id":5045,"name":"Identifier","src":"8195:1:29"}],"id":5046,"name":"UnaryOperation","src":"8195:3:29"}],"id":5047,"name":"ExpressionStatement","src":"8195:3:29"},{"children":[{"attributes":{"assignments":[5049]},"children":[{"attributes":{"constant":false,"name":"token","scope":5127,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5048,"name":"ElementaryTypeName","src":"8254:7:29"}],"id":5049,"name":"VariableDeclaration","src":"8254:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5032,"type":"address[] calldata","value":"_tokens"},"id":5050,"name":"Identifier","src":"8270:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5038,"type":"uint256","value":"i"},"id":5051,"name":"Identifier","src":"8278:1:29"}],"id":5052,"name":"IndexAccess","src":"8270:10:29"}],"id":5053,"name":"VariableDeclarationStatement","src":"8254:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5054,"name":"Identifier","src":"8363:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5055,"name":"Identifier","src":"8371:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5056,"name":"Identifier","src":"8385:5:29"}],"id":5057,"name":"IndexAccess","src":"8371:20:29"}],"id":5058,"name":"MemberAccess","src":"8371:30:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5059,"name":"Literal","src":"8403:24:29"}],"id":5060,"name":"FunctionCall","src":"8363:65:29"}],"id":5061,"name":"ExpressionStatement","src":"8363:65:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5062,"name":"Identifier","src":"8518:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5063,"name":"Identifier","src":"8532:5:29"}],"id":5064,"name":"IndexAccess","src":"8518:20:29"}],"id":5065,"name":"MemberAccess","src":"8518:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5066,"name":"Identifier","src":"8569:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5067,"name":"Identifier","src":"8590:18:29"}],"id":5068,"name":"MemberAccess","src":"8590:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5069,"name":"Literal","src":"8613:1:29"}],"id":5070,"name":"FunctionCall","src":"8590:25:29"}],"id":5071,"name":"Assignment","src":"8569:46:29"}],"id":5072,"name":"ExpressionStatement","src":"8569:46:29"}],"id":5073,"name":"Block","src":"8551:79:29"}],"id":5074,"name":"IfStatement","src":"8514:116:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5075,"name":"Identifier","src":"8690:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5076,"name":"Identifier","src":"8704:5:29"}],"id":5077,"name":"IndexAccess","src":"8690:20:29"}],"id":5078,"name":"UnaryOperation","src":"8683:27:29"}],"id":5079,"name":"ExpressionStatement","src":"8683:27:29"},{"children":[{"attributes":{"assignments":[5081]},"children":[{"attributes":{"constant":false,"name":"j","scope":5115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5080,"name":"ElementaryTypeName","src":"8792:7:29"}],"id":5081,"name":"VariableDeclaration","src":"8792:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5082,"name":"Literal","src":"8804:1:29"}],"id":5083,"name":"VariableDeclarationStatement","src":"8792:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5081,"type":"uint256","value":"j"},"id":5084,"name":"Identifier","src":"8807:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5085,"name":"Identifier","src":"8811:18:29"}],"id":5086,"name":"MemberAccess","src":"8811:25:29"}],"id":5087,"name":"MemberAccess","src":"8811:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5088,"name":"Literal","src":"8841:1:29"}],"id":5089,"name":"FunctionCall","src":"8811:32:29"}],"id":5090,"name":"BinaryOperation","src":"8807:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5081,"type":"uint256","value":"j"},"id":5091,"name":"Identifier","src":"8845:1:29"}],"id":5092,"name":"UnaryOperation","src":"8845:3:29"}],"id":5093,"name":"ExpressionStatement","src":"8845:3:29"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5094,"name":"Identifier","src":"8872:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5081,"type":"uint256","value":"j"},"id":5095,"name":"Identifier","src":"8891:1:29"}],"id":5096,"name":"IndexAccess","src":"8872:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5097,"name":"Identifier","src":"8897:5:29"}],"id":5098,"name":"BinaryOperation","src":"8872:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5099,"name":"Identifier","src":"8926:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5081,"type":"uint256","value":"j"},"id":5100,"name":"Identifier","src":"8945:1:29"}],"id":5101,"name":"IndexAccess","src":"8926:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5102,"name":"Identifier","src":"8950:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5103,"name":"Identifier","src":"8969:18:29"}],"id":5104,"name":"MemberAccess","src":"8969:25:29"}],"id":5105,"name":"MemberAccess","src":"8969:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5106,"name":"Literal","src":"8999:1:29"}],"id":5107,"name":"FunctionCall","src":"8969:32:29"}],"id":5108,"name":"IndexAccess","src":"8950:52:29"}],"id":5109,"name":"Assignment","src":"8926:76:29"}],"id":5110,"name":"ExpressionStatement","src":"8926:76:29"},{"id":5111,"name":"Break","src":"9024:5:29"}],"id":5112,"name":"Block","src":"8904:144:29"}],"id":5113,"name":"IfStatement","src":"8868:180:29"}],"id":5114,"name":"Block","src":"8850:212:29"}],"id":5115,"name":"ForStatement","src":"8787:275:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5116,"name":"Identifier","src":"9075:18:29"}],"id":5118,"name":"MemberAccess","src":"9075:25:29"}],"id":5119,"name":"UnaryOperation","src":"9075:27:29"}],"id":5120,"name":"ExpressionStatement","src":"9075:27:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4740,"type":"function (address,address)","value":"RemovedToken"},"id":5121,"name":"Identifier","src":"9162:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5122,"name":"Identifier","src":"9175:3:29"}],"id":5123,"name":"MemberAccess","src":"9175:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"address","value":"token"},"id":5124,"name":"Identifier","src":"9187:5:29"}],"id":5125,"name":"FunctionCall","src":"9162:31:29"}],"id":5126,"name":"EmitStatement","src":"9157:36:29"}],"id":5127,"name":"Block","src":"8200:1004:29"}],"id":5128,"name":"ForStatement","src":"8155:1049:29"}],"id":5129,"name":"Block","src":"8042:1168:29"}],"id":5130,"name":"FunctionDefinition","src":"7973:1237:29"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5243,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5131,"name":"ElementaryTypeName","src":"9404:7:29"}],"id":5132,"name":"VariableDeclaration","src":"9404:14:29"},{"attributes":{"constant":false,"name":"_data","scope":5243,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5133,"name":"ElementaryTypeName","src":"9420:5:29"}],"id":5134,"name":"VariableDeclaration","src":"9420:20:29"}],"id":5135,"name":"ParameterList","src":"9403:38:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5243,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5136,"name":"ElementaryTypeName","src":"9465:7:29"}],"id":5137,"name":"VariableDeclaration","src":"9465:7:29"},{"attributes":{"constant":false,"name":"","scope":5243,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5138,"name":"ElementaryTypeName","src":"9474:7:29"}],"id":5139,"name":"VariableDeclaration","src":"9474:7:29"}],"id":5140,"name":"ParameterList","src":"9464:18:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5141,"name":"Identifier","src":"9669:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5142,"name":"Identifier","src":"9677:5:29"}],"id":5143,"name":"MemberAccess","src":"9677:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5144,"name":"Literal","src":"9693:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5145,"name":"Literal","src":"9697:2:29"}],"id":5146,"name":"BinaryOperation","src":"9693:6:29"}],"id":5147,"name":"BinaryOperation","src":"9677:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":5148,"name":"Literal","src":"9701:34:29"}],"id":5149,"name":"FunctionCall","src":"9669:67:29"}],"id":5150,"name":"ExpressionStatement","src":"9669:67:29"},{"attributes":{"assignments":[5152]},"children":[{"attributes":{"constant":false,"name":"signature","scope":5242,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5151,"name":"ElementaryTypeName","src":"9782:6:29"}],"id":5152,"name":"VariableDeclaration","src":"9782:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":8651,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5153,"name":"Identifier","src":"9801:5:29"}],"id":5154,"name":"MemberAccess","src":"9801:20:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5155,"name":"Literal","src":"9822:1:29"}],"id":5156,"name":"FunctionCall","src":"9801:23:29"}],"id":5157,"name":"VariableDeclarationStatement","src":"9782:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5158,"name":"Identifier","src":"9877:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":5544,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":5159,"name":"Identifier","src":"9885:22:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5132,"type":"address","value":"_token"},"id":5160,"name":"Identifier","src":"9908:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5152,"type":"bytes4","value":"signature"},"id":5161,"name":"Identifier","src":"9916:9:29"}],"id":5162,"name":"FunctionCall","src":"9885:41:29"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":5163,"name":"Literal","src":"9928:20:29"}],"id":5164,"name":"FunctionCall","src":"9877:72:29"}],"id":5165,"name":"ExpressionStatement","src":"9877:72:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5152,"type":"bytes4","value":"signature"},"id":5166,"name":"Identifier","src":"10048:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4774,"type":"bytes4","value":"_BURN"},"id":5167,"name":"Identifier","src":"10061:5:29"}],"id":5168,"name":"BinaryOperation","src":"10048:18:29"},{"children":[{"attributes":{"functionReturnParameters":5140},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5132,"type":"address","value":"_token"},"id":5169,"name":"Identifier","src":"10133:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8685,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5170,"name":"Identifier","src":"10141:5:29"}],"id":5171,"name":"MemberAccess","src":"10141:21:29"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5172,"name":"Literal","src":"10163:1:29"}],"id":5173,"name":"FunctionCall","src":"10141:24:29"}],"id":5174,"name":"TupleExpression","src":"10132:34:29"}],"id":5175,"name":"Return","src":"10125:41:29"}],"id":5176,"name":"Block","src":"10068:109:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5152,"type":"bytes4","value":"signature"},"id":5177,"name":"Identifier","src":"10187:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4780,"type":"bytes4","value":"_TRANSFER_FROM"},"id":5178,"name":"Identifier","src":"10200:14:29"}],"id":5179,"name":"BinaryOperation","src":"10187:27:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5180,"name":"Identifier","src":"10301:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5181,"name":"Identifier","src":"10309:5:29"}],"id":5182,"name":"MemberAccess","src":"10309:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5183,"name":"Literal","src":"10325:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5184,"name":"Literal","src":"10329:2:29"}],"id":5185,"name":"BinaryOperation","src":"10325:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5186,"name":"Literal","src":"10334:2:29"}],"id":5187,"name":"BinaryOperation","src":"10325:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5188,"name":"Literal","src":"10339:2:29"}],"id":5189,"name":"BinaryOperation","src":"10325:16:29"}],"id":5190,"name":"BinaryOperation","src":"10309:32:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":5191,"name":"Literal","src":"10343:34:29"}],"id":5192,"name":"FunctionCall","src":"10301:77:29"}],"id":5193,"name":"ExpressionStatement","src":"10301:77:29"},{"attributes":{"functionReturnParameters":5140},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":8617,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5194,"name":"Identifier","src":"10400:5:29"}],"id":5195,"name":"MemberAccess","src":"10400:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5196,"name":"Literal","src":"10422:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5197,"name":"Literal","src":"10426:2:29"}],"id":5198,"name":"BinaryOperation","src":"10422:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5199,"name":"Literal","src":"10431:2:29"}],"id":5200,"name":"BinaryOperation","src":"10422:11:29"}],"id":5201,"name":"FunctionCall","src":"10400:34:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8685,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5202,"name":"Identifier","src":"10436:5:29"}],"id":5203,"name":"MemberAccess","src":"10436:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5204,"name":"Literal","src":"10458:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5205,"name":"Literal","src":"10462:2:29"}],"id":5206,"name":"BinaryOperation","src":"10458:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5207,"name":"Literal","src":"10467:2:29"}],"id":5208,"name":"BinaryOperation","src":"10458:11:29"}],"id":5209,"name":"FunctionCall","src":"10436:34:29"}],"id":5210,"name":"TupleExpression","src":"10399:72:29"}],"id":5211,"name":"Return","src":"10392:79:29"}],"id":5212,"name":"Block","src":"10216:266:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5213,"name":"Identifier","src":"10590:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5214,"name":"Identifier","src":"10598:5:29"}],"id":5215,"name":"MemberAccess","src":"10598:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5216,"name":"Literal","src":"10614:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5217,"name":"Literal","src":"10618:2:29"}],"id":5218,"name":"BinaryOperation","src":"10614:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5219,"name":"Literal","src":"10623:2:29"}],"id":5220,"name":"BinaryOperation","src":"10614:11:29"}],"id":5221,"name":"BinaryOperation","src":"10598:27:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":5222,"name":"Literal","src":"10627:39:29"}],"id":5223,"name":"FunctionCall","src":"10590:77:29"}],"id":5224,"name":"ExpressionStatement","src":"10590:77:29"},{"attributes":{"functionReturnParameters":5140},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":8617,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5225,"name":"Identifier","src":"10689:5:29"}],"id":5226,"name":"MemberAccess","src":"10689:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5227,"name":"Literal","src":"10711:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5228,"name":"Literal","src":"10715:2:29"}],"id":5229,"name":"BinaryOperation","src":"10711:6:29"}],"id":5230,"name":"FunctionCall","src":"10689:29:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":8685,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5134,"type":"bytes calldata","value":"_data"},"id":5231,"name":"Identifier","src":"10720:5:29"}],"id":5232,"name":"MemberAccess","src":"10720:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5233,"name":"Literal","src":"10742:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5234,"name":"Literal","src":"10746:2:29"}],"id":5235,"name":"BinaryOperation","src":"10742:6:29"}],"id":5236,"name":"FunctionCall","src":"10720:29:29"}],"id":5237,"name":"TupleExpression","src":"10688:62:29"}],"id":5238,"name":"Return","src":"10681:69:29"}],"id":5239,"name":"Block","src":"10488:273:29"}],"id":5240,"name":"IfStatement","src":"10183:578:29"}],"id":5241,"name":"IfStatement","src":"10044:717:29"}],"id":5242,"name":"Block","src":"9483:1284:29"}],"id":5243,"name":"FunctionDefinition","src":"9368:1399:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5275,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5244,"name":"ElementaryTypeName","src":"10866:7:29"}],"id":5245,"name":"VariableDeclaration","src":"10866:14:29"},{"attributes":{"constant":false,"name":"_loadable","scope":5275,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5246,"name":"ElementaryTypeName","src":"10882:4:29"}],"id":5247,"name":"VariableDeclaration","src":"10882:14:29"}],"id":5248,"name":"ParameterList","src":"10865:32:29"},{"attributes":{"parameters":[null]},"children":[],"id":5251,"name":"ParameterList","src":"10917:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":5249,"name":"Identifier","src":"10907:9:29"}],"id":5250,"name":"ModifierInvocation","src":"10907:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5252,"name":"Identifier","src":"10969:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5253,"name":"Identifier","src":"10977:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"address","value":"_token"},"id":5254,"name":"Identifier","src":"10991:6:29"}],"id":5255,"name":"IndexAccess","src":"10977:21:29"}],"id":5256,"name":"MemberAccess","src":"10977:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5257,"name":"Literal","src":"11010:24:29"}],"id":5258,"name":"FunctionCall","src":"10969:66:29"}],"id":5259,"name":"ExpressionStatement","src":"10969:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":4790,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5260,"name":"Identifier","src":"11108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"address","value":"_token"},"id":5261,"name":"Identifier","src":"11122:6:29"}],"id":5262,"name":"IndexAccess","src":"11108:21:29"}],"id":5263,"name":"MemberAccess","src":"11108:30:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5247,"type":"bool","value":"_loadable"},"id":5264,"name":"Identifier","src":"11141:9:29"}],"id":5265,"name":"Assignment","src":"11108:42:29"}],"id":5266,"name":"ExpressionStatement","src":"11108:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4712,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":5267,"name":"Identifier","src":"11166:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5268,"name":"Identifier","src":"11187:3:29"}],"id":5269,"name":"MemberAccess","src":"11187:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"address","value":"_token"},"id":5270,"name":"Identifier","src":"11199:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5247,"type":"bool","value":"_loadable"},"id":5271,"name":"Identifier","src":"11207:9:29"}],"id":5272,"name":"FunctionCall","src":"11166:51:29"}],"id":5273,"name":"EmitStatement","src":"11161:56:29"}],"id":5274,"name":"Block","src":"10917:307:29"}],"id":5275,"name":"FunctionDefinition","src":"10840:384:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5307,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5276,"name":"ElementaryTypeName","src":"11327:7:29"}],"id":5277,"name":"VariableDeclaration","src":"11327:14:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":5307,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5278,"name":"ElementaryTypeName","src":"11343:4:29"}],"id":5279,"name":"VariableDeclaration","src":"11343:16:29"}],"id":5280,"name":"ParameterList","src":"11326:34:29"},{"attributes":{"parameters":[null]},"children":[],"id":5283,"name":"ParameterList","src":"11380:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":5281,"name":"Identifier","src":"11370:9:29"}],"id":5282,"name":"ModifierInvocation","src":"11370:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5284,"name":"Identifier","src":"11432:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5285,"name":"Identifier","src":"11440:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5277,"type":"address","value":"_token"},"id":5286,"name":"Identifier","src":"11454:6:29"}],"id":5287,"name":"IndexAccess","src":"11440:21:29"}],"id":5288,"name":"MemberAccess","src":"11440:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5289,"name":"Literal","src":"11473:24:29"}],"id":5290,"name":"FunctionCall","src":"11432:66:29"}],"id":5291,"name":"ExpressionStatement","src":"11432:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5292,"name":"Identifier","src":"11573:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5277,"type":"address","value":"_token"},"id":5293,"name":"Identifier","src":"11587:6:29"}],"id":5294,"name":"IndexAccess","src":"11573:21:29"}],"id":5295,"name":"MemberAccess","src":"11573:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5279,"type":"bool","value":"_redeemable"},"id":5296,"name":"Identifier","src":"11608:11:29"}],"id":5297,"name":"Assignment","src":"11573:46:29"}],"id":5298,"name":"ExpressionStatement","src":"11573:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4720,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":5299,"name":"Identifier","src":"11635:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5300,"name":"Identifier","src":"11658:3:29"}],"id":5301,"name":"MemberAccess","src":"11658:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5277,"type":"address","value":"_token"},"id":5302,"name":"Identifier","src":"11670:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5279,"type":"bool","value":"_redeemable"},"id":5303,"name":"Identifier","src":"11678:11:29"}],"id":5304,"name":"FunctionCall","src":"11635:55:29"}],"id":5305,"name":"EmitStatement","src":"11630:60:29"}],"id":5306,"name":"Block","src":"11380:317:29"}],"id":5307,"name":"FunctionDefinition","src":"11299:398:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5348,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5308,"name":"ElementaryTypeName","src":"11999:7:29"}],"id":5309,"name":"VariableDeclaration","src":"11999:14:29"},{"attributes":{"constant":false,"name":"_rate","scope":5348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5310,"name":"ElementaryTypeName","src":"12015:7:29"}],"id":5311,"name":"VariableDeclaration","src":"12015:13:29"},{"attributes":{"constant":false,"name":"_updateDate","scope":5348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5312,"name":"ElementaryTypeName","src":"12030:7:29"}],"id":5313,"name":"VariableDeclaration","src":"12030:19:29"}],"id":5314,"name":"ParameterList","src":"11998:52:29"},{"attributes":{"parameters":[null]},"children":[],"id":5317,"name":"ParameterList","src":"12078:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4885,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":5315,"name":"Identifier","src":"12060:17:29"}],"id":5316,"name":"ModifierInvocation","src":"12060:17:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5318,"name":"Identifier","src":"12130:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5319,"name":"Identifier","src":"12138:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5309,"type":"address","value":"_token"},"id":5320,"name":"Identifier","src":"12152:6:29"}],"id":5321,"name":"IndexAccess","src":"12138:21:29"}],"id":5322,"name":"MemberAccess","src":"12138:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5323,"name":"Literal","src":"12171:24:29"}],"id":5324,"name":"FunctionCall","src":"12130:66:29"}],"id":5325,"name":"ExpressionStatement","src":"12130:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":4786,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5326,"name":"Identifier","src":"12242:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5309,"type":"address","value":"_token"},"id":5327,"name":"Identifier","src":"12256:6:29"}],"id":5328,"name":"IndexAccess","src":"12242:21:29"}],"id":5329,"name":"MemberAccess","src":"12242:26:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5311,"type":"uint256","value":"_rate"},"id":5330,"name":"Identifier","src":"12271:5:29"}],"id":5331,"name":"Assignment","src":"12242:34:29"}],"id":5332,"name":"ExpressionStatement","src":"12242:34:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":4794,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5333,"name":"Identifier","src":"12339:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5309,"type":"address","value":"_token"},"id":5334,"name":"Identifier","src":"12353:6:29"}],"id":5335,"name":"IndexAccess","src":"12339:21:29"}],"id":5336,"name":"MemberAccess","src":"12339:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5313,"type":"uint256","value":"_updateDate"},"id":5337,"name":"Identifier","src":"12374:11:29"}],"id":5338,"name":"Assignment","src":"12339:46:29"}],"id":5339,"name":"ExpressionStatement","src":"12339:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4704,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":5340,"name":"Identifier","src":"12439:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":5341,"name":"Identifier","src":"12456:3:29"}],"id":5342,"name":"MemberAccess","src":"12456:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5309,"type":"address","value":"_token"},"id":5343,"name":"Identifier","src":"12468:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5311,"type":"uint256","value":"_rate"},"id":5344,"name":"Identifier","src":"12476:5:29"}],"id":5345,"name":"FunctionCall","src":"12439:43:29"}],"id":5346,"name":"EmitStatement","src":"12434:48:29"}],"id":5347,"name":"Block","src":"12078:411:29"}],"id":5348,"name":"FunctionDefinition","src":"11974:515:29"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":5582,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":5372,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5349,"name":"ElementaryTypeName","src":"12593:15:29"}],"id":5350,"name":"VariableDeclaration","src":"12593:19:29"},{"attributes":{"constant":false,"name":"_asset","scope":5372,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5351,"name":"ElementaryTypeName","src":"12614:7:29"}],"id":5352,"name":"VariableDeclaration","src":"12614:14:29"},{"attributes":{"constant":false,"name":"_amount","scope":5372,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5353,"name":"ElementaryTypeName","src":"12630:7:29"}],"id":5354,"name":"VariableDeclaration","src":"12630:15:29"}],"id":5355,"name":"ParameterList","src":"12592:54:29"},{"attributes":{"parameters":[null]},"children":[],"id":5358,"name":"ParameterList","src":"12666:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2783,"type":"modifier ()","value":"onlyAdmin"},"id":5356,"name":"Identifier","src":"12656:9:29"}],"id":5357,"name":"ModifierInvocation","src":"12656:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3284,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":5359,"name":"Identifier","src":"12676:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5350,"type":"address payable","value":"_to"},"id":5360,"name":"Identifier","src":"12690:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5352,"type":"address","value":"_asset"},"id":5361,"name":"Identifier","src":"12695:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5354,"type":"uint256","value":"_amount"},"id":5362,"name":"Identifier","src":"12703:7:29"}],"id":5363,"name":"FunctionCall","src":"12676:35:29"}],"id":5364,"name":"ExpressionStatement","src":"12676:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4768,"type":"function (address,address,uint256)","value":"Claimed"},"id":5365,"name":"Identifier","src":"12726:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5350,"type":"address payable","value":"_to"},"id":5366,"name":"Identifier","src":"12734:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5352,"type":"address","value":"_asset"},"id":5367,"name":"Identifier","src":"12739:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5354,"type":"uint256","value":"_amount"},"id":5368,"name":"Identifier","src":"12747:7:29"}],"id":5369,"name":"FunctionCall","src":"12726:29:29"}],"id":5370,"name":"EmitStatement","src":"12721:34:29"}],"id":5371,"name":"Block","src":"12666:96:29"}],"id":5372,"name":"FunctionDefinition","src":"12578:184:29"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5414,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5373,"name":"ElementaryTypeName","src":"13336:7:29"}],"id":5374,"name":"VariableDeclaration","src":"13336:10:29"}],"id":5375,"name":"ParameterList","src":"13335:12:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5376,"name":"ElementaryTypeName","src":"13371:6:29"}],"id":5377,"name":"VariableDeclaration","src":"13371:13:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5378,"name":"ElementaryTypeName","src":"13386:7:29"}],"id":5379,"name":"VariableDeclaration","src":"13386:7:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5380,"name":"ElementaryTypeName","src":"13395:7:29"}],"id":5381,"name":"VariableDeclaration","src":"13395:7:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5382,"name":"ElementaryTypeName","src":"13404:4:29"}],"id":5383,"name":"VariableDeclaration","src":"13404:4:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5384,"name":"ElementaryTypeName","src":"13410:4:29"}],"id":5385,"name":"VariableDeclaration","src":"13410:4:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5386,"name":"ElementaryTypeName","src":"13416:4:29"}],"id":5387,"name":"VariableDeclaration","src":"13416:4:29"},{"attributes":{"constant":false,"name":"","scope":5414,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5388,"name":"ElementaryTypeName","src":"13422:7:29"}],"id":5389,"name":"VariableDeclaration","src":"13422:7:29"}],"id":5390,"name":"ParameterList","src":"13370:60:29"},{"children":[{"attributes":{"assignments":[5392]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":5413,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4795,"type":"struct TokenWhitelist.Token"},"id":5391,"name":"UserDefinedTypeName","src":"13441:5:29"}],"id":5392,"name":"VariableDeclaration","src":"13441:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5393,"name":"Identifier","src":"13467:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5374,"type":"address","value":"_a"},"id":5394,"name":"Identifier","src":"13481:2:29"}],"id":5395,"name":"IndexAccess","src":"13467:17:29"}],"id":5396,"name":"VariableDeclarationStatement","src":"13441:43:29"},{"attributes":{"functionReturnParameters":5390},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":4782,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5397,"name":"Identifier","src":"13502:9:29"}],"id":5398,"name":"MemberAccess","src":"13502:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":4784,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5399,"name":"Identifier","src":"13520:9:29"}],"id":5400,"name":"MemberAccess","src":"13520:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":4786,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5401,"name":"Identifier","src":"13541:9:29"}],"id":5402,"name":"MemberAccess","src":"13541:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5403,"name":"Identifier","src":"13557:9:29"}],"id":5404,"name":"MemberAccess","src":"13557:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":4790,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5405,"name":"Identifier","src":"13578:9:29"}],"id":5406,"name":"MemberAccess","src":"13578:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5407,"name":"Identifier","src":"13598:9:29"}],"id":5408,"name":"MemberAccess","src":"13598:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":4794,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5392,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5409,"name":"Identifier","src":"13620:9:29"}],"id":5410,"name":"MemberAccess","src":"13620:20:29"}],"id":5411,"name":"TupleExpression","src":"13501:140:29"}],"id":5412,"name":"Return","src":"13494:147:29"}],"id":5413,"name":"Block","src":"13431:217:29"}],"id":5414,"name":"FunctionDefinition","src":"13314:334:29"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5415,"name":"ParameterList","src":"14176:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5416,"name":"ElementaryTypeName","src":"14202:6:29"}],"id":5417,"name":"VariableDeclaration","src":"14202:13:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5418,"name":"ElementaryTypeName","src":"14217:7:29"}],"id":5419,"name":"VariableDeclaration","src":"14217:7:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5420,"name":"ElementaryTypeName","src":"14226:7:29"}],"id":5421,"name":"VariableDeclaration","src":"14226:7:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5422,"name":"ElementaryTypeName","src":"14235:4:29"}],"id":5423,"name":"VariableDeclaration","src":"14235:4:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5424,"name":"ElementaryTypeName","src":"14241:4:29"}],"id":5425,"name":"VariableDeclaration","src":"14241:4:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5426,"name":"ElementaryTypeName","src":"14247:4:29"}],"id":5427,"name":"VariableDeclaration","src":"14247:4:29"},{"attributes":{"constant":false,"name":"","scope":5454,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5428,"name":"ElementaryTypeName","src":"14253:7:29"}],"id":5429,"name":"VariableDeclaration","src":"14253:7:29"}],"id":5430,"name":"ParameterList","src":"14201:60:29"},{"children":[{"attributes":{"assignments":[5432]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":5453,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":4795,"type":"struct TokenWhitelist.Token"},"id":5431,"name":"UserDefinedTypeName","src":"14272:5:29"}],"id":5432,"name":"VariableDeclaration","src":"14272:28:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5433,"name":"Identifier","src":"14303:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4810,"type":"address","value":"_stablecoin"},"id":5434,"name":"Identifier","src":"14317:11:29"}],"id":5435,"name":"IndexAccess","src":"14303:26:29"}],"id":5436,"name":"VariableDeclarationStatement","src":"14272:57:29"},{"attributes":{"functionReturnParameters":5430},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":4782,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5437,"name":"Identifier","src":"14360:14:29"}],"id":5438,"name":"MemberAccess","src":"14360:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":4784,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5439,"name":"Identifier","src":"14395:14:29"}],"id":5440,"name":"MemberAccess","src":"14395:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":4786,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5441,"name":"Identifier","src":"14433:14:29"}],"id":5442,"name":"MemberAccess","src":"14433:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5443,"name":"Identifier","src":"14466:14:29"}],"id":5444,"name":"MemberAccess","src":"14466:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":4790,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5445,"name":"Identifier","src":"14504:14:29"}],"id":5446,"name":"MemberAccess","src":"14504:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5447,"name":"Identifier","src":"14541:14:29"}],"id":5448,"name":"MemberAccess","src":"14541:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":4794,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5432,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5449,"name":"Identifier","src":"14580:14:29"}],"id":5450,"name":"MemberAccess","src":"14580:25:29"}],"id":5451,"name":"TupleExpression","src":"14346:269:29"}],"id":5452,"name":"Return","src":"14339:276:29"}],"id":5453,"name":"Block","src":"14262:360:29"}],"id":5454,"name":"FunctionDefinition","src":"14150:472:29"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5455,"name":"ParameterList","src":"14777:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5463,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5456,"name":"ElementaryTypeName","src":"14803:7:29"}],"id":5457,"name":"ArrayTypeName","src":"14803:9:29"}],"id":5458,"name":"VariableDeclaration","src":"14803:16:29"}],"id":5459,"name":"ParameterList","src":"14802:18:29"},{"children":[{"attributes":{"functionReturnParameters":5459},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5460,"name":"Identifier","src":"14838:18:29"}],"id":5461,"name":"Return","src":"14831:25:29"}],"id":5462,"name":"Block","src":"14821:42:29"}],"id":5463,"name":"FunctionDefinition","src":"14751:112:29"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5464,"name":"ParameterList","src":"15015:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5521,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5465,"name":"ElementaryTypeName","src":"15041:7:29"}],"id":5466,"name":"ArrayTypeName","src":"15041:9:29"}],"id":5467,"name":"VariableDeclaration","src":"15041:16:29"}],"id":5468,"name":"ParameterList","src":"15040:18:29"},{"children":[{"attributes":{"assignments":[5472]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":5520,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":5470,"name":"ElementaryTypeName","src":"15069:7:29"}],"id":5471,"name":"ArrayTypeName","src":"15069:9:29"}],"id":5472,"name":"VariableDeclaration","src":"15069:36:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5473,"name":"ElementaryTypeName","src":"15112:7:29"}],"id":5474,"name":"ArrayTypeName","src":"15112:9:29"}],"id":5475,"name":"NewExpression","src":"15108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5476,"name":"Identifier","src":"15122:18:29"}],"id":5477,"name":"FunctionCall","src":"15108:33:29"}],"id":5478,"name":"VariableDeclarationStatement","src":"15069:72:29"},{"attributes":{"assignments":[5480]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":5520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5479,"name":"ElementaryTypeName","src":"15151:7:29"}],"id":5480,"name":"VariableDeclaration","src":"15151:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5481,"name":"Literal","src":"15177:1:29"}],"id":5482,"name":"VariableDeclarationStatement","src":"15151:27:29"},{"children":[{"attributes":{"assignments":[5484]},"children":[{"attributes":{"constant":false,"name":"i","scope":5517,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5483,"name":"ElementaryTypeName","src":"15193:7:29"}],"id":5484,"name":"VariableDeclaration","src":"15193:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5485,"name":"Literal","src":"15205:1:29"}],"id":5486,"name":"VariableDeclarationStatement","src":"15193:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"uint256","value":"i"},"id":5487,"name":"Identifier","src":"15208:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5488,"name":"Identifier","src":"15212:18:29"}],"id":5489,"name":"MemberAccess","src":"15212:25:29"}],"id":5490,"name":"BinaryOperation","src":"15208:29:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"uint256","value":"i"},"id":5491,"name":"Identifier","src":"15239:1:29"}],"id":5492,"name":"UnaryOperation","src":"15239:3:29"}],"id":5493,"name":"ExpressionStatement","src":"15239:3:29"},{"children":[{"attributes":{"assignments":[5495]},"children":[{"attributes":{"constant":false,"name":"token","scope":5516,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5494,"name":"ElementaryTypeName","src":"15258:7:29"}],"id":5495,"name":"VariableDeclaration","src":"15258:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5496,"name":"Identifier","src":"15274:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5484,"type":"uint256","value":"i"},"id":5497,"name":"Identifier","src":"15293:1:29"}],"id":5498,"name":"IndexAccess","src":"15274:21:29"}],"id":5499,"name":"VariableDeclarationStatement","src":"15258:37:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":4792,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5500,"name":"Identifier","src":"15313:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5495,"type":"address","value":"token"},"id":5501,"name":"Identifier","src":"15327:5:29"}],"id":5502,"name":"IndexAccess","src":"15313:20:29"}],"id":5503,"name":"MemberAccess","src":"15313:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5472,"type":"address[] memory","value":"redeemableAddresses"},"id":5504,"name":"Identifier","src":"15364:19:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5480,"type":"uint256","value":"redeemableIndex"},"id":5505,"name":"Identifier","src":"15384:15:29"}],"id":5506,"name":"IndexAccess","src":"15364:36:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5495,"type":"address","value":"token"},"id":5507,"name":"Identifier","src":"15403:5:29"}],"id":5508,"name":"Assignment","src":"15364:44:29"}],"id":5509,"name":"ExpressionStatement","src":"15364:44:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5480,"type":"uint256","value":"redeemableIndex"},"id":5510,"name":"Identifier","src":"15426:15:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5511,"name":"Literal","src":"15445:1:29"}],"id":5512,"name":"Assignment","src":"15426:20:29"}],"id":5513,"name":"ExpressionStatement","src":"15426:20:29"}],"id":5514,"name":"Block","src":"15346:115:29"}],"id":5515,"name":"IfStatement","src":"15309:152:29"}],"id":5516,"name":"Block","src":"15244:227:29"}],"id":5517,"name":"ForStatement","src":"15188:283:29"},{"attributes":{"functionReturnParameters":5468},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5472,"type":"address[] memory","value":"redeemableAddresses"},"id":5518,"name":"Identifier","src":"15487:19:29"}],"id":5519,"name":"Return","src":"15480:26:29"}],"id":5520,"name":"Block","src":"15059:454:29"}],"id":5521,"name":"FunctionDefinition","src":"14990:523:29"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5544,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5522,"name":"ElementaryTypeName","src":"15727:7:29"}],"id":5523,"name":"VariableDeclaration","src":"15727:14:29"},{"attributes":{"constant":false,"name":"_methodId","scope":5544,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5524,"name":"ElementaryTypeName","src":"15743:6:29"}],"id":5525,"name":"VariableDeclaration","src":"15743:16:29"}],"id":5526,"name":"ParameterList","src":"15726:34:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5544,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5527,"name":"ElementaryTypeName","src":"15782:4:29"}],"id":5528,"name":"VariableDeclaration","src":"15782:4:29"}],"id":5529,"name":"ParameterList","src":"15781:6:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":5530,"name":"Identifier","src":"15798:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":4788,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4799,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5531,"name":"Identifier","src":"15806:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5523,"type":"address","value":"_token"},"id":5532,"name":"Identifier","src":"15820:6:29"}],"id":5533,"name":"IndexAccess","src":"15806:21:29"}],"id":5534,"name":"MemberAccess","src":"15806:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":5535,"name":"Literal","src":"15839:20:29"}],"id":5536,"name":"FunctionCall","src":"15798:62:29"}],"id":5537,"name":"ExpressionStatement","src":"15798:62:29"},{"attributes":{"functionReturnParameters":5529},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5538,"name":"Identifier","src":"15878:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5525,"type":"bytes4","value":"_methodId"},"id":5539,"name":"Identifier","src":"15897:9:29"}],"id":5540,"name":"IndexAccess","src":"15878:29:29"}],"id":5541,"name":"TupleExpression","src":"15877:31:29"}],"id":5542,"name":"Return","src":"15870:38:29"}],"id":5543,"name":"Block","src":"15788:127:29"}],"id":5544,"name":"FunctionDefinition","src":"15695:220:29"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":5557,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5545,"name":"ElementaryTypeName","src":"16104:6:29"}],"id":5546,"name":"VariableDeclaration","src":"16104:16:29"}],"id":5547,"name":"ParameterList","src":"16103:18:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5557,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5548,"name":"ElementaryTypeName","src":"16145:4:29"}],"id":5549,"name":"VariableDeclaration","src":"16145:4:29"}],"id":5550,"name":"ParameterList","src":"16144:6:29"},{"children":[{"attributes":{"functionReturnParameters":5550},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4803,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5551,"name":"Identifier","src":"16169:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes4","value":"_methodId"},"id":5552,"name":"Identifier","src":"16188:9:29"}],"id":5553,"name":"IndexAccess","src":"16169:29:29"}],"id":5554,"name":"TupleExpression","src":"16168:31:29"}],"id":5555,"name":"Return","src":"16161:38:29"}],"id":5556,"name":"Block","src":"16151:55:29"}],"id":5557,"name":"FunctionDefinition","src":"16070:136:29"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5558,"name":"ParameterList","src":"16342:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5565,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5559,"name":"ElementaryTypeName","src":"16368:7:29"}],"id":5560,"name":"VariableDeclaration","src":"16368:7:29"}],"id":5561,"name":"ParameterList","src":"16367:9:29"},{"children":[{"attributes":{"functionReturnParameters":5561},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4808,"type":"uint256","value":"_redeemableCounter"},"id":5562,"name":"Identifier","src":"16394:18:29"}],"id":5563,"name":"Return","src":"16387:25:29"}],"id":5564,"name":"Block","src":"16377:42:29"}],"id":5565,"name":"FunctionDefinition","src":"16316:103:29"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5566,"name":"ParameterList","src":"16570:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5573,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5567,"name":"ElementaryTypeName","src":"16596:7:29"}],"id":5568,"name":"VariableDeclaration","src":"16596:7:29"}],"id":5569,"name":"ParameterList","src":"16595:9:29"},{"children":[{"attributes":{"functionReturnParameters":5569},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4810,"type":"address","value":"_stablecoin"},"id":5570,"name":"Identifier","src":"16622:11:29"}],"id":5571,"name":"Return","src":"16615:18:29"}],"id":5572,"name":"Block","src":"16605:35:29"}],"id":5573,"name":"FunctionDefinition","src":"16551:89:29"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":5582,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5574,"name":"ParameterList","src":"16774:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5581,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5575,"name":"ElementaryTypeName","src":"16800:7:29"}],"id":5576,"name":"VariableDeclaration","src":"16800:7:29"}],"id":5577,"name":"ParameterList","src":"16799:9:29"},{"children":[{"attributes":{"functionReturnParameters":5577},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"bytes32","value":"_oracleNode"},"id":5578,"name":"Identifier","src":"16826:11:29"}],"id":5579,"name":"Return","src":"16819:18:29"}],"id":5580,"name":"Block","src":"16809:35:29"}],"id":5581,"name":"FunctionDefinition","src":"16755:89:29"}],"id":5582,"name":"ContractDefinition","src":"1939:14907:29"}],"id":5583,"name":"SourceUnit","src":"774:16073:29"}},"wallet.sol":{"AST":{"attributes":{"absolutePath":"wallet.sol","exportedSymbols":{"AddressWhitelist":[606],"ControllableOwnable":[36],"DailyLimitTrait":[808],"GasTopUpLimit":[1098],"LoadLimit":[1272],"SelfCallableOwnable":[58],"SpendLimit":[940],"Wallet":[2183]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"757:24:30"},{"attributes":{"SourceUnit":3830,"absolutePath":"licence.sol","file":"./licence.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"783:23:30"},{"attributes":{"SourceUnit":3029,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"807:33:30"},{"attributes":{"SourceUnit":2827,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"841:38:30"},{"attributes":{"SourceUnit":2731,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":5,"name":"ImportDirective","src":"880:37:30"},{"attributes":{"SourceUnit":3286,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":6,"name":"ImportDirective","src":"918:39:30"},{"attributes":{"SourceUnit":2872,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":7,"name":"ImportDirective","src":"958:39:30"},{"attributes":{"SourceUnit":3246,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":8,"name":"ImportDirective","src":"998:44:30"},{"attributes":{"SourceUnit":2699,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":9,"name":"ImportDirective","src":"1043:34:30"},{"attributes":{"SourceUnit":2203,"absolutePath":"externals/Address.sol","file":"./externals/Address.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":10,"name":"ImportDirective","src":"1078:33:30"},{"attributes":{"SourceUnit":2347,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":11,"name":"ImportDirective","src":"1112:31:30"},{"attributes":{"SourceUnit":2566,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":12,"name":"ImportDirective","src":"1144:35:30"},{"attributes":{"SourceUnit":2294,"absolutePath":"externals/ERC165.sol","file":"./externals/ERC165.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":13,"name":"ImportDirective","src":"1180:32:30"},{"attributes":{"SourceUnit":2284,"absolutePath":"externals/ECDSA.sol","file":"./externals/ECDSA.sol","scope":2184,"symbolAliases":[null],"unitAlias":""},"id":14,"name":"ImportDirective","src":"1213:31:30"},{"attributes":{"contractDependencies":[2826,2871,3028],"contractKind":"contract","documentation":"@title ControllableOwnable combines Controllable and Ownable\n @dev providing an additional modifier to check if Owner or Controller","fullyImplemented":false,"linearizedBaseContracts":[36,3028,2826,2871],"name":"ControllableOwnable","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":2826,"type":"contract Controllable"},"id":15,"name":"UserDefinedTypeName","src":"1418:12:30"}],"id":16,"name":"InheritanceSpecifier","src":"1418:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3028,"type":"contract Ownable"},"id":17,"name":"UserDefinedTypeName","src":"1432:7:30"}],"id":18,"name":"InheritanceSpecifier","src":"1432:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or one of the Controllers","name":"onlyOwnerOrController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":19,"name":"ParameterList","src":"1548:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a244313930a94a6f5de4548387c8c245a5d11002ac47a2e54f96214a9879106","typeString":"literal_string \"only owner||controller\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":20,"name":"Identifier","src":"1561:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":21,"name":"Identifier","src":"1569:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":22,"name":"Identifier","src":"1578:3:30"}],"id":23,"name":"MemberAccess","src":"1578:10:30"}],"id":24,"name":"FunctionCall","src":"1569:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2808,"type":"function (address) view returns (bool)","value":"_isController"},"id":25,"name":"Identifier","src":"1593:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":26,"name":"Identifier","src":"1607:3:30"}],"id":27,"name":"MemberAccess","src":"1607:10:30"}],"id":28,"name":"FunctionCall","src":"1593:25:30"}],"id":29,"name":"BinaryOperation","src":"1569:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||controller\"","value":"only owner||controller"},"id":30,"name":"Literal","src":"1620:24:30"}],"id":31,"name":"FunctionCall","src":"1561:84:30"}],"id":32,"name":"ExpressionStatement","src":"1561:84:30"},{"id":33,"name":"PlaceholderStatement","src":"1655:1:30"}],"id":34,"name":"Block","src":"1551:112:30"}],"id":35,"name":"ModifierDefinition","src":"1518:145:30"}],"id":36,"name":"ContractDefinition","src":"1386:279:30"},{"attributes":{"contractDependencies":[3028],"contractKind":"contract","documentation":"@title SelfCallableOwnable allows either owner or the contract itself to call its functions\n @dev providing an additional modifier to check if Owner or self is calling\n @dev the \"self\" here is used for the meta transactions","fullyImplemented":false,"linearizedBaseContracts":[58,3028],"name":"SelfCallableOwnable","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3028,"type":"contract Ownable"},"id":37,"name":"UserDefinedTypeName","src":"1934:7:30"}],"id":38,"name":"InheritanceSpecifier","src":"1934:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or self","name":"onlyOwnerOrSelf","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":39,"name":"ParameterList","src":"2026:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c98ff749bed2b5f266d255ad845f8a2a0dba28f389ec62046d9aad839ae2d6","typeString":"literal_string \"only owner||self\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":40,"name":"Identifier","src":"2039:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":41,"name":"Identifier","src":"2047:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":42,"name":"Identifier","src":"2056:3:30"}],"id":43,"name":"MemberAccess","src":"2056:10:30"}],"id":44,"name":"FunctionCall","src":"2047:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":45,"name":"Identifier","src":"2071:3:30"}],"id":46,"name":"MemberAccess","src":"2071:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfCallableOwnable_$58","typeString":"contract SelfCallableOwnable"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":47,"name":"ElementaryTypeNameExpression","src":"2085:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10191,"type":"contract SelfCallableOwnable","value":"this"},"id":48,"name":"Identifier","src":"2093:4:30"}],"id":49,"name":"FunctionCall","src":"2085:13:30"}],"id":50,"name":"BinaryOperation","src":"2071:27:30"}],"id":51,"name":"BinaryOperation","src":"2047:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c73656c66","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||self\"","value":"only owner||self"},"id":52,"name":"Literal","src":"2100:18:30"}],"id":53,"name":"FunctionCall","src":"2039:80:30"}],"id":54,"name":"ExpressionStatement","src":"2039:80:30"},{"id":55,"name":"PlaceholderStatement","src":"2129:1:30"}],"id":56,"name":"Block","src":"2029:108:30"}],"id":57,"name":"ModifierDefinition","src":"2002:135:30"}],"id":58,"name":"ContractDefinition","src":"1902:237:30"},{"attributes":{"contractDependencies":[36,58,2826,2871,3028],"contractKind":"contract","documentation":"@title AddressWhitelist provides payee-whitelist functionality.\n @dev This contract will allow the user to maintain a whitelist of addresses\n @dev These addresses will live outside of the various spend limits","fullyImplemented":false,"linearizedBaseContracts":[606,58,36,3028,2826,2871],"name":"AddressWhitelist","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":36,"type":"contract ControllableOwnable"},"id":59,"name":"UserDefinedTypeName","src":"2390:19:30"}],"id":60,"name":"InheritanceSpecifier","src":"2390:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":58,"type":"contract SelfCallableOwnable"},"id":61,"name":"UserDefinedTypeName","src":"2411:19:30"}],"id":62,"name":"InheritanceSpecifier","src":"2411:19:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":63,"name":"UserDefinedTypeName","src":"2443:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":64,"name":"ElementaryTypeName","src":"2456:7:30"}],"id":65,"name":"UsingForDirective","src":"2437:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":72,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":66,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":67,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":72,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":68,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":69,"name":"ArrayTypeName","src":"2510:9:30"}],"id":70,"name":"VariableDeclaration","src":"2510:20:30"}],"id":71,"name":"ParameterList","src":"2492:39:30"}],"id":72,"name":"EventDefinition","src":"2470:62:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":78,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":73,"name":"ElementaryTypeName","src":"2570:7:30"}],"id":74,"name":"VariableDeclaration","src":"2570:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":78,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":75,"name":"ElementaryTypeName","src":"2587:7:30"}],"id":76,"name":"VariableDeclaration","src":"2587:13:30"}],"id":77,"name":"ParameterList","src":"2569:32:30"}],"id":78,"name":"EventDefinition","src":"2537:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":85,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":79,"name":"ElementaryTypeName","src":"2640:7:30"}],"id":80,"name":"ArrayTypeName","src":"2640:9:30"}],"id":81,"name":"VariableDeclaration","src":"2640:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":85,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":82,"name":"ElementaryTypeName","src":"2662:7:30"}],"id":83,"name":"VariableDeclaration","src":"2662:13:30"}],"id":84,"name":"ParameterList","src":"2639:37:30"}],"id":85,"name":"EventDefinition","src":"2607:70:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":91,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":86,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":87,"name":"VariableDeclaration","src":"2715:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":91,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":88,"name":"ElementaryTypeName","src":"2732:7:30"}],"id":89,"name":"VariableDeclaration","src":"2732:13:30"}],"id":90,"name":"ParameterList","src":"2714:32:30"}],"id":91,"name":"EventDefinition","src":"2683:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedFromWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":98,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":92,"name":"ElementaryTypeName","src":"2779:7:30"}],"id":93,"name":"VariableDeclaration","src":"2779:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":98,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":94,"name":"ElementaryTypeName","src":"2796:7:30"}],"id":95,"name":"ArrayTypeName","src":"2796:9:30"}],"id":96,"name":"VariableDeclaration","src":"2796:20:30"}],"id":97,"name":"ParameterList","src":"2778:39:30"}],"id":98,"name":"EventDefinition","src":"2752:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":105,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":99,"name":"ElementaryTypeName","src":"2855:7:30"}],"id":100,"name":"ArrayTypeName","src":"2855:9:30"}],"id":101,"name":"VariableDeclaration","src":"2855:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":105,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":102,"name":"ElementaryTypeName","src":"2877:7:30"}],"id":103,"name":"VariableDeclaration","src":"2877:13:30"}],"id":104,"name":"ParameterList","src":"2854:37:30"}],"id":105,"name":"EventDefinition","src":"2823:69:30"},{"attributes":{"constant":false,"name":"whitelistMap","scope":606,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":106,"name":"ElementaryTypeName","src":"2906:7:30"},{"attributes":{"name":"bool","type":"bool"},"id":107,"name":"ElementaryTypeName","src":"2917:4:30"}],"id":108,"name":"Mapping","src":"2898:24:30"}],"id":109,"name":"VariableDeclaration","src":"2898:44:30"},{"attributes":{"constant":false,"name":"whitelistArray","scope":606,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":110,"name":"ElementaryTypeName","src":"2948:7:30"}],"id":111,"name":"ArrayTypeName","src":"2948:9:30"}],"id":112,"name":"VariableDeclaration","src":"2948:31:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistAddition","scope":606,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":113,"name":"ElementaryTypeName","src":"2985:7:30"}],"id":114,"name":"ArrayTypeName","src":"2985:9:30"}],"id":115,"name":"VariableDeclaration","src":"2985:43:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistRemoval","scope":606,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":116,"name":"ElementaryTypeName","src":"3034:7:30"}],"id":117,"name":"ArrayTypeName","src":"3034:9:30"}],"id":118,"name":"VariableDeclaration","src":"3034:42:30"},{"attributes":{"constant":false,"name":"submittedWhitelistAddition","scope":606,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":119,"name":"ElementaryTypeName","src":"3082:4:30"}],"id":120,"name":"VariableDeclaration","src":"3082:38:30"},{"attributes":{"constant":false,"name":"submittedWhitelistRemoval","scope":606,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":121,"name":"ElementaryTypeName","src":"3126:4:30"}],"id":122,"name":"VariableDeclaration","src":"3126:37:30"},{"attributes":{"constant":false,"name":"isSetWhitelist","scope":606,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":123,"name":"ElementaryTypeName","src":"3169:4:30"}],"id":124,"name":"VariableDeclaration","src":"3169:26:30"},{"attributes":{"documentation":"@dev Check if the provided addresses contain the owner or the zero-address address.","name":"hasNoOwnerOrZeroAddress","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":165,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":125,"name":"ElementaryTypeName","src":"3327:7:30"}],"id":126,"name":"ArrayTypeName","src":"3327:9:30"}],"id":127,"name":"VariableDeclaration","src":"3327:27:30"}],"id":128,"name":"ParameterList","src":"3326:29:30"},{"children":[{"children":[{"attributes":{"assignments":[130]},"children":[{"attributes":{"constant":false,"name":"i","scope":162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":129,"name":"ElementaryTypeName","src":"3371:7:30"}],"id":130,"name":"VariableDeclaration","src":"3371:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":131,"name":"Literal","src":"3383:1:30"}],"id":132,"name":"VariableDeclarationStatement","src":"3371:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":133,"name":"Identifier","src":"3386:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":127,"type":"address[] memory","value":"_addresses"},"id":134,"name":"Identifier","src":"3390:10:30"}],"id":135,"name":"MemberAccess","src":"3390:17:30"}],"id":136,"name":"BinaryOperation","src":"3386:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":137,"name":"Identifier","src":"3409:1:30"}],"id":138,"name":"UnaryOperation","src":"3409:3:30"}],"id":139,"name":"ExpressionStatement","src":"3409:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83144f57b92473167e9ce74530b82e833e4f010b46d8a2562f84cdc754bd4967","typeString":"literal_string \"contains owner address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":140,"name":"Identifier","src":"3428:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":141,"name":"Identifier","src":"3437:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":127,"type":"address[] memory","value":"_addresses"},"id":142,"name":"Identifier","src":"3446:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":143,"name":"Identifier","src":"3457:1:30"}],"id":144,"name":"IndexAccess","src":"3446:13:30"}],"id":145,"name":"FunctionCall","src":"3437:23:30"}],"id":146,"name":"UnaryOperation","src":"3436:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e73206f776e65722061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains owner address\"","value":"contains owner address"},"id":147,"name":"Literal","src":"3462:24:30"}],"id":148,"name":"FunctionCall","src":"3428:59:30"}],"id":149,"name":"ExpressionStatement","src":"3428:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab14c1506b1b0c03aad2feb5e5b965df7dffe18036562732ceabd49019d58098","typeString":"literal_string \"contains 0 address\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":150,"name":"Identifier","src":"3501:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":127,"type":"address[] memory","value":"_addresses"},"id":151,"name":"Identifier","src":"3509:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":130,"type":"uint256","value":"i"},"id":152,"name":"Identifier","src":"3520:1:30"}],"id":153,"name":"IndexAccess","src":"3509:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":154,"name":"ElementaryTypeNameExpression","src":"3526:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":155,"name":"Literal","src":"3534:1:30"}],"id":156,"name":"FunctionCall","src":"3526:10:30"}],"id":157,"name":"BinaryOperation","src":"3509:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e7320302061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains 0 address\"","value":"contains 0 address"},"id":158,"name":"Literal","src":"3538:20:30"}],"id":159,"name":"FunctionCall","src":"3501:58:30"}],"id":160,"name":"ExpressionStatement","src":"3501:58:30"}],"id":161,"name":"Block","src":"3414:156:30"}],"id":162,"name":"ForStatement","src":"3366:204:30"},{"id":163,"name":"PlaceholderStatement","src":"3579:1:30"}],"id":164,"name":"Block","src":"3356:231:30"}],"id":165,"name":"ModifierDefinition","src":"3294:293:30"},{"attributes":{"documentation":"@dev Check that neither addition nor removal operations have already been submitted.","name":"noActiveSubmission","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":166,"name":"ParameterList","src":"3713:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_218a99457edaa7c4d6a4ca4023db54cf2e31e2ca8b9a350a6c9ab56a1ea1df99","typeString":"literal_string \"whitelist sumbission pending\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":167,"name":"Identifier","src":"3726:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":168,"name":"Identifier","src":"3735:26:30"}],"id":169,"name":"UnaryOperation","src":"3734:27:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":170,"name":"Identifier","src":"3766:25:30"}],"id":171,"name":"UnaryOperation","src":"3765:26:30"}],"id":172,"name":"BinaryOperation","src":"3734:57:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c6973742073756d62697373696f6e2070656e64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist sumbission pending\"","value":"whitelist sumbission pending"},"id":173,"name":"Literal","src":"3793:30:30"}],"id":174,"name":"FunctionCall","src":"3726:98:30"}],"id":175,"name":"ExpressionStatement","src":"3726:98:30"},{"id":176,"name":"PlaceholderStatement","src":"3834:1:30"}],"id":177,"name":"Block","src":"3716:126:30"}],"id":178,"name":"ModifierDefinition","src":"3686:156:30"},{"attributes":{"documentation":"@dev Cancel pending whitelist addition.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistAddition","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":213,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":179,"name":"ElementaryTypeName","src":"3929:7:30"}],"id":180,"name":"VariableDeclaration","src":"3929:13:30"}],"id":181,"name":"ParameterList","src":"3928:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":184,"name":"ParameterList","src":"3975:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"modifier ()","value":"onlyOwnerOrController"},"id":182,"name":"Identifier","src":"3953:21:30"}],"id":183,"name":"ModifierInvocation","src":"3953:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":185,"name":"Identifier","src":"4035:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":186,"name":"Identifier","src":"4043:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":187,"name":"Literal","src":"4071:23:30"}],"id":188,"name":"FunctionCall","src":"4035:60:30"}],"id":189,"name":"ExpressionStatement","src":"4035:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":190,"name":"Identifier","src":"4200:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":180,"type":"bytes32","value":"_hash"},"id":191,"name":"Identifier","src":"4208:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":192,"name":"Identifier","src":"4217:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":193,"name":"Identifier","src":"4231:25:30"}],"id":194,"name":"FunctionCall","src":"4217:40:30"}],"id":195,"name":"BinaryOperation","src":"4208:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":196,"name":"Literal","src":"4259:37:30"}],"id":197,"name":"FunctionCall","src":"4200:97:30"}],"id":198,"name":"ExpressionStatement","src":"4200:97:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":199,"name":"Identifier","src":"4350:25:30"}],"id":200,"name":"UnaryOperation","src":"4343:32:30"}],"id":201,"name":"ExpressionStatement","src":"4343:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":202,"name":"Identifier","src":"4432:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":203,"name":"Literal","src":"4461:5:30"}],"id":204,"name":"Assignment","src":"4432:34:30"}],"id":205,"name":"ExpressionStatement","src":"4432:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":78,"type":"function (address,bytes32)","value":"CancelledWhitelistAddition"},"id":206,"name":"Identifier","src":"4521:26:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":207,"name":"Identifier","src":"4548:3:30"}],"id":208,"name":"MemberAccess","src":"4548:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":180,"type":"bytes32","value":"_hash"},"id":209,"name":"Identifier","src":"4560:5:30"}],"id":210,"name":"FunctionCall","src":"4521:45:30"}],"id":211,"name":"EmitStatement","src":"4516:50:30"}],"id":212,"name":"Block","src":"3975:598:30"}],"id":213,"name":"FunctionDefinition","src":"3896:677:30"},{"attributes":{"documentation":"@dev Cancel pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistRemoval","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":248,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":214,"name":"ElementaryTypeName","src":"4673:7:30"}],"id":215,"name":"VariableDeclaration","src":"4673:13:30"}],"id":216,"name":"ParameterList","src":"4672:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":219,"name":"ParameterList","src":"4719:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"modifier ()","value":"onlyOwnerOrController"},"id":217,"name":"Identifier","src":"4697:21:30"}],"id":218,"name":"ModifierInvocation","src":"4697:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":220,"name":"Identifier","src":"4779:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":221,"name":"Identifier","src":"4787:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":222,"name":"Literal","src":"4814:23:30"}],"id":223,"name":"FunctionCall","src":"4779:59:30"}],"id":224,"name":"ExpressionStatement","src":"4779:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":225,"name":"Identifier","src":"4942:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"bytes32","value":"_hash"},"id":226,"name":"Identifier","src":"4950:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":227,"name":"Identifier","src":"4959:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":228,"name":"Identifier","src":"4973:24:30"}],"id":229,"name":"FunctionCall","src":"4959:39:30"}],"id":230,"name":"BinaryOperation","src":"4950:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":231,"name":"Literal","src":"5000:37:30"}],"id":232,"name":"FunctionCall","src":"4942:96:30"}],"id":233,"name":"ExpressionStatement","src":"4942:96:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":234,"name":"Identifier","src":"5091:24:30"}],"id":235,"name":"UnaryOperation","src":"5084:31:30"}],"id":236,"name":"ExpressionStatement","src":"5084:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":237,"name":"Identifier","src":"5161:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":238,"name":"Literal","src":"5189:5:30"}],"id":239,"name":"Assignment","src":"5161:33:30"}],"id":240,"name":"ExpressionStatement","src":"5161:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":91,"type":"function (address,bytes32)","value":"CancelledWhitelistRemoval"},"id":241,"name":"Identifier","src":"5249:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":242,"name":"Identifier","src":"5275:3:30"}],"id":243,"name":"MemberAccess","src":"5275:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":215,"type":"bytes32","value":"_hash"},"id":244,"name":"Identifier","src":"5287:5:30"}],"id":245,"name":"FunctionCall","src":"5249:44:30"}],"id":246,"name":"EmitStatement","src":"5244:49:30"}],"id":247,"name":"Block","src":"4719:581:30"}],"id":248,"name":"FunctionDefinition","src":"4641:659:30"},{"attributes":{"documentation":"@dev Confirm pending whitelist addition.\n @dev This will only ever be applied post 2FA, by one of the Controllers\n @param _hash is the hash of the pending whitelist array, a form of lamport lock","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistAddition","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":320,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":249,"name":"ElementaryTypeName","src":"5557:7:30"}],"id":250,"name":"VariableDeclaration","src":"5557:13:30"}],"id":251,"name":"ParameterList","src":"5556:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":254,"name":"ParameterList","src":"5596:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":252,"name":"Identifier","src":"5581:14:30"}],"id":253,"name":"ModifierInvocation","src":"5581:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":255,"name":"Identifier","src":"5673:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":256,"name":"Identifier","src":"5681:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":257,"name":"Literal","src":"5709:23:30"}],"id":258,"name":"FunctionCall","src":"5673:60:30"}],"id":259,"name":"ExpressionStatement","src":"5673:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":260,"name":"Identifier","src":"5838:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"bytes32","value":"_hash"},"id":261,"name":"Identifier","src":"5846:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":262,"name":"Identifier","src":"5855:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":263,"name":"Identifier","src":"5869:25:30"}],"id":264,"name":"FunctionCall","src":"5855:40:30"}],"id":265,"name":"BinaryOperation","src":"5846:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":266,"name":"Literal","src":"5897:37:30"}],"id":267,"name":"FunctionCall","src":"5838:97:30"}],"id":268,"name":"ExpressionStatement","src":"5838:97:30"},{"children":[{"attributes":{"assignments":[270]},"children":[{"attributes":{"constant":false,"name":"i","scope":305,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":269,"name":"ElementaryTypeName","src":"5990:7:30"}],"id":270,"name":"VariableDeclaration","src":"5990:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":271,"name":"Literal","src":"6002:1:30"}],"id":272,"name":"VariableDeclarationStatement","src":"5990:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":273,"name":"Identifier","src":"6005:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":274,"name":"Identifier","src":"6009:25:30"}],"id":275,"name":"MemberAccess","src":"6009:32:30"}],"id":276,"name":"BinaryOperation","src":"6005:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":277,"name":"Identifier","src":"6043:1:30"}],"id":278,"name":"UnaryOperation","src":"6043:3:30"}],"id":279,"name":"ExpressionStatement","src":"6043:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":280,"name":"Identifier","src":"6117:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":281,"name":"Identifier","src":"6130:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":282,"name":"Identifier","src":"6156:1:30"}],"id":283,"name":"IndexAccess","src":"6130:28:30"}],"id":284,"name":"IndexAccess","src":"6117:42:30"}],"id":285,"name":"UnaryOperation","src":"6116:43:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":286,"name":"Identifier","src":"6227:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":287,"name":"Identifier","src":"6240:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":288,"name":"Identifier","src":"6266:1:30"}],"id":289,"name":"IndexAccess","src":"6240:28:30"}],"id":290,"name":"IndexAccess","src":"6227:42:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":291,"name":"Literal","src":"6272:4:30"}],"id":292,"name":"Assignment","src":"6227:49:30"}],"id":293,"name":"ExpressionStatement","src":"6227:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":294,"name":"Identifier","src":"6294:14:30"}],"id":296,"name":"MemberAccess","src":"6294:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":297,"name":"Identifier","src":"6314:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"uint256","value":"i"},"id":298,"name":"Identifier","src":"6340:1:30"}],"id":299,"name":"IndexAccess","src":"6314:28:30"}],"id":300,"name":"FunctionCall","src":"6294:49:30"}],"id":301,"name":"ExpressionStatement","src":"6294:49:30"}],"id":302,"name":"Block","src":"6161:197:30"}],"id":303,"name":"IfStatement","src":"6112:246:30"}],"id":304,"name":"Block","src":"6048:320:30"}],"id":305,"name":"ForStatement","src":"5985:383:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":72,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":306,"name":"Identifier","src":"6418:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":307,"name":"Identifier","src":"6435:3:30"}],"id":308,"name":"MemberAccess","src":"6435:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":309,"name":"Identifier","src":"6447:25:30"}],"id":310,"name":"FunctionCall","src":"6418:55:30"}],"id":311,"name":"EmitStatement","src":"6413:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":312,"name":"Identifier","src":"6526:25:30"}],"id":313,"name":"UnaryOperation","src":"6519:32:30"}],"id":314,"name":"ExpressionStatement","src":"6519:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":315,"name":"Identifier","src":"6599:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":316,"name":"Literal","src":"6628:5:30"}],"id":317,"name":"Assignment","src":"6599:34:30"}],"id":318,"name":"ExpressionStatement","src":"6599:34:30"}],"id":319,"name":"Block","src":"5596:1044:30"}],"id":320,"name":"FunctionDefinition","src":"5523:1117:30"},{"attributes":{"documentation":"@dev Confirm pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistRemoval","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":425,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":321,"name":"ElementaryTypeName","src":"6742:7:30"}],"id":322,"name":"VariableDeclaration","src":"6742:13:30"}],"id":323,"name":"ParameterList","src":"6741:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":326,"name":"ParameterList","src":"6781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":324,"name":"Identifier","src":"6766:14:30"}],"id":325,"name":"ModifierInvocation","src":"6766:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":327,"name":"Identifier","src":"6888:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":328,"name":"Identifier","src":"6896:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":329,"name":"Literal","src":"6923:23:30"}],"id":330,"name":"FunctionCall","src":"6888:59:30"}],"id":331,"name":"ExpressionStatement","src":"6888:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":332,"name":"Identifier","src":"7051:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":322,"type":"bytes32","value":"_hash"},"id":333,"name":"Identifier","src":"7059:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":334,"name":"Identifier","src":"7068:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":335,"name":"Identifier","src":"7082:24:30"}],"id":336,"name":"FunctionCall","src":"7068:39:30"}],"id":337,"name":"BinaryOperation","src":"7059:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":338,"name":"Literal","src":"7109:37:30"}],"id":339,"name":"FunctionCall","src":"7051:96:30"}],"id":340,"name":"ExpressionStatement","src":"7051:96:30"},{"children":[{"attributes":{"assignments":[342]},"children":[{"attributes":{"constant":false,"name":"i","scope":410,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":341,"name":"ElementaryTypeName","src":"7199:7:30"}],"id":342,"name":"VariableDeclaration","src":"7199:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":343,"name":"Literal","src":"7211:1:30"}],"id":344,"name":"VariableDeclarationStatement","src":"7199:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":345,"name":"Identifier","src":"7214:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":346,"name":"Identifier","src":"7218:24:30"}],"id":347,"name":"MemberAccess","src":"7218:31:30"}],"id":348,"name":"BinaryOperation","src":"7214:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":349,"name":"Identifier","src":"7251:1:30"}],"id":350,"name":"UnaryOperation","src":"7251:3:30"}],"id":351,"name":"ExpressionStatement","src":"7251:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":352,"name":"Identifier","src":"7308:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":353,"name":"Identifier","src":"7321:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":354,"name":"Identifier","src":"7346:1:30"}],"id":355,"name":"IndexAccess","src":"7321:27:30"}],"id":356,"name":"IndexAccess","src":"7308:41:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":357,"name":"Identifier","src":"7369:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":358,"name":"Identifier","src":"7382:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":359,"name":"Identifier","src":"7407:1:30"}],"id":360,"name":"IndexAccess","src":"7382:27:30"}],"id":361,"name":"IndexAccess","src":"7369:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":362,"name":"Literal","src":"7413:5:30"}],"id":363,"name":"Assignment","src":"7369:49:30"}],"id":364,"name":"ExpressionStatement","src":"7369:49:30"},{"children":[{"attributes":{"assignments":[366]},"children":[{"attributes":{"constant":false,"name":"j","scope":401,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":365,"name":"ElementaryTypeName","src":"7441:7:30"}],"id":366,"name":"VariableDeclaration","src":"7441:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":367,"name":"Literal","src":"7453:1:30"}],"id":368,"name":"VariableDeclarationStatement","src":"7441:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"uint256","value":"j"},"id":369,"name":"Identifier","src":"7456:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":370,"name":"Identifier","src":"7460:14:30"}],"id":371,"name":"MemberAccess","src":"7460:21:30"}],"id":372,"name":"MemberAccess","src":"7460:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":373,"name":"Literal","src":"7486:1:30"}],"id":374,"name":"FunctionCall","src":"7460:28:30"}],"id":375,"name":"BinaryOperation","src":"7456:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"uint256","value":"j"},"id":376,"name":"Identifier","src":"7490:1:30"}],"id":377,"name":"UnaryOperation","src":"7490:3:30"}],"id":378,"name":"ExpressionStatement","src":"7490:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":379,"name":"Identifier","src":"7521:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"uint256","value":"j"},"id":380,"name":"Identifier","src":"7536:1:30"}],"id":381,"name":"IndexAccess","src":"7521:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":382,"name":"Identifier","src":"7542:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":342,"type":"uint256","value":"i"},"id":383,"name":"Identifier","src":"7567:1:30"}],"id":384,"name":"IndexAccess","src":"7542:27:30"}],"id":385,"name":"BinaryOperation","src":"7521:48:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":386,"name":"Identifier","src":"7597:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":366,"type":"uint256","value":"j"},"id":387,"name":"Identifier","src":"7612:1:30"}],"id":388,"name":"IndexAccess","src":"7597:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":389,"name":"Identifier","src":"7617:14:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":390,"name":"Identifier","src":"7632:14:30"}],"id":391,"name":"MemberAccess","src":"7632:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":392,"name":"Literal","src":"7656:1:30"}],"id":393,"name":"BinaryOperation","src":"7632:25:30"}],"id":394,"name":"IndexAccess","src":"7617:41:30"}],"id":395,"name":"Assignment","src":"7597:61:30"}],"id":396,"name":"ExpressionStatement","src":"7597:61:30"},{"id":397,"name":"Break","src":"7684:5:30"}],"id":398,"name":"Block","src":"7571:141:30"}],"id":399,"name":"IfStatement","src":"7517:195:30"}],"id":400,"name":"Block","src":"7495:235:30"}],"id":401,"name":"ForStatement","src":"7436:294:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":402,"name":"Identifier","src":"7747:14:30"}],"id":404,"name":"MemberAccess","src":"7747:21:30"}],"id":405,"name":"UnaryOperation","src":"7747:23:30"}],"id":406,"name":"ExpressionStatement","src":"7747:23:30"}],"id":407,"name":"Block","src":"7351:434:30"}],"id":408,"name":"IfStatement","src":"7304:481:30"}],"id":409,"name":"Block","src":"7256:539:30"}],"id":410,"name":"ForStatement","src":"7194:601:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":98,"type":"function (address,address[] memory)","value":"RemovedFromWhitelist"},"id":411,"name":"Identifier","src":"7844:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":412,"name":"Identifier","src":"7865:3:30"}],"id":413,"name":"MemberAccess","src":"7865:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":414,"name":"Identifier","src":"7877:24:30"}],"id":415,"name":"FunctionCall","src":"7844:58:30"}],"id":416,"name":"EmitStatement","src":"7839:63:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":417,"name":"Identifier","src":"7955:24:30"}],"id":418,"name":"UnaryOperation","src":"7948:31:30"}],"id":419,"name":"ExpressionStatement","src":"7948:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":420,"name":"Identifier","src":"8027:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":421,"name":"Literal","src":"8055:5:30"}],"id":422,"name":"Assignment","src":"8027:33:30"}],"id":423,"name":"ExpressionStatement","src":"8027:33:30"}],"id":424,"name":"Block","src":"6781:1286:30"}],"id":425,"name":"FunctionDefinition","src":"6709:1358:30"},{"attributes":{"documentation":"@dev Getter for pending addition array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistAddition","scope":606,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":426,"name":"ParameterList","src":"8154:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":434,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":427,"name":"ElementaryTypeName","src":"8180:7:30"}],"id":428,"name":"ArrayTypeName","src":"8180:9:30"}],"id":429,"name":"VariableDeclaration","src":"8180:16:30"}],"id":430,"name":"ParameterList","src":"8179:18:30"},{"children":[{"attributes":{"functionReturnParameters":430},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":431,"name":"Identifier","src":"8215:25:30"}],"id":432,"name":"Return","src":"8208:32:30"}],"id":433,"name":"Block","src":"8198:49:30"}],"id":434,"name":"FunctionDefinition","src":"8121:126:30"},{"attributes":{"documentation":"@dev Getter for pending removal array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistRemoval","scope":606,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":435,"name":"ParameterList","src":"8332:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":443,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":436,"name":"ElementaryTypeName","src":"8358:7:30"}],"id":437,"name":"ArrayTypeName","src":"8358:9:30"}],"id":438,"name":"VariableDeclaration","src":"8358:16:30"}],"id":439,"name":"ParameterList","src":"8357:18:30"},{"children":[{"attributes":{"functionReturnParameters":439},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":440,"name":"Identifier","src":"8393:24:30"}],"id":441,"name":"Return","src":"8386:31:30"}],"id":442,"name":"Block","src":"8376:48:30"}],"id":443,"name":"FunctionDefinition","src":"8300:124:30"},{"attributes":{"documentation":"@dev Add initial addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"setWhitelist","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":508,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":444,"name":"ElementaryTypeName","src":"8577:7:30"}],"id":445,"name":"ArrayTypeName","src":"8577:9:30"}],"id":446,"name":"VariableDeclaration","src":"8577:29:30"}],"id":447,"name":"ParameterList","src":"8576:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":453,"name":"ParameterList","src":"8669:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":448,"name":"Identifier","src":"8617:15:30"}],"id":449,"name":"ModifierInvocation","src":"8617:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":165,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":450,"name":"Identifier","src":"8633:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":451,"name":"Identifier","src":"8657:10:30"}],"id":452,"name":"ModifierInvocation","src":"8633:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_072b1c10273a06de91a80d81d357e8bd73084529b5cc99d2ec03a7bf6d5fb2b9","typeString":"literal_string \"whitelist initialized\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":454,"name":"Identifier","src":"8743:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"bool","value":"isSetWhitelist"},"id":455,"name":"Identifier","src":"8752:14:30"}],"id":456,"name":"UnaryOperation","src":"8751:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c69737420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist initialized\"","value":"whitelist initialized"},"id":457,"name":"Literal","src":"8768:23:30"}],"id":458,"name":"FunctionCall","src":"8743:49:30"}],"id":459,"name":"ExpressionStatement","src":"8743:49:30"},{"children":[{"attributes":{"assignments":[461]},"children":[{"attributes":{"constant":false,"name":"i","scope":496,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":460,"name":"ElementaryTypeName","src":"8871:7:30"}],"id":461,"name":"VariableDeclaration","src":"8871:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":462,"name":"Literal","src":"8883:1:30"}],"id":463,"name":"VariableDeclarationStatement","src":"8871:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":464,"name":"Identifier","src":"8886:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":465,"name":"Identifier","src":"8890:10:30"}],"id":466,"name":"MemberAccess","src":"8890:17:30"}],"id":467,"name":"BinaryOperation","src":"8886:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":468,"name":"Identifier","src":"8909:1:30"}],"id":469,"name":"UnaryOperation","src":"8909:3:30"}],"id":470,"name":"ExpressionStatement","src":"8909:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":471,"name":"Identifier","src":"8996:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":472,"name":"Identifier","src":"9009:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":473,"name":"Identifier","src":"9020:1:30"}],"id":474,"name":"IndexAccess","src":"9009:13:30"}],"id":475,"name":"IndexAccess","src":"8996:27:30"}],"id":476,"name":"UnaryOperation","src":"8995:28:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":477,"name":"Identifier","src":"9092:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":478,"name":"Identifier","src":"9105:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":479,"name":"Identifier","src":"9116:1:30"}],"id":480,"name":"IndexAccess","src":"9105:13:30"}],"id":481,"name":"IndexAccess","src":"9092:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":482,"name":"Literal","src":"9122:4:30"}],"id":483,"name":"Assignment","src":"9092:34:30"}],"id":484,"name":"ExpressionStatement","src":"9092:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":485,"name":"Identifier","src":"9191:14:30"}],"id":487,"name":"MemberAccess","src":"9191:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"address[] calldata","value":"_addresses"},"id":488,"name":"Identifier","src":"9211:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"uint256","value":"i"},"id":489,"name":"Identifier","src":"9222:1:30"}],"id":490,"name":"IndexAccess","src":"9211:13:30"}],"id":491,"name":"FunctionCall","src":"9191:34:30"}],"id":492,"name":"ExpressionStatement","src":"9191:34:30"}],"id":493,"name":"Block","src":"9025:215:30"}],"id":494,"name":"IfStatement","src":"8991:249:30"}],"id":495,"name":"Block","src":"8914:336:30"}],"id":496,"name":"ForStatement","src":"8866:384:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"bool","value":"isSetWhitelist"},"id":497,"name":"Identifier","src":"9259:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":498,"name":"Literal","src":"9276:4:30"}],"id":499,"name":"Assignment","src":"9259:21:30"}],"id":500,"name":"ExpressionStatement","src":"9259:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":72,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":501,"name":"Identifier","src":"9331:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":502,"name":"Identifier","src":"9348:3:30"}],"id":503,"name":"MemberAccess","src":"9348:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":112,"type":"address[] storage ref","value":"whitelistArray"},"id":504,"name":"Identifier","src":"9360:14:30"}],"id":505,"name":"FunctionCall","src":"9331:44:30"}],"id":506,"name":"EmitStatement","src":"9326:49:30"}],"id":507,"name":"Block","src":"8669:713:30"}],"id":508,"name":"FunctionDefinition","src":"8555:827:30"},{"attributes":{"documentation":"@dev Add addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistAddition","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":550,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":509,"name":"ElementaryTypeName","src":"9538:7:30"}],"id":510,"name":"ArrayTypeName","src":"9538:9:30"}],"id":511,"name":"VariableDeclaration","src":"9538:29:30"}],"id":512,"name":"ParameterList","src":"9537:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":520,"name":"ParameterList","src":"9649:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":513,"name":"Identifier","src":"9578:15:30"}],"id":514,"name":"ModifierInvocation","src":"9578:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":178,"type":"modifier ()","value":"noActiveSubmission"},"id":515,"name":"Identifier","src":"9594:18:30"}],"id":516,"name":"ModifierInvocation","src":"9594:18:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":165,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":517,"name":"Identifier","src":"9613:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":518,"name":"Identifier","src":"9637:10:30"}],"id":519,"name":"ModifierInvocation","src":"9613:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":521,"name":"Identifier","src":"9719:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"bool","value":"isSetWhitelist"},"id":522,"name":"Identifier","src":"9727:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":523,"name":"Literal","src":"9743:27:30"}],"id":524,"name":"FunctionCall","src":"9719:52:30"}],"id":525,"name":"ExpressionStatement","src":"9719:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":526,"name":"Identifier","src":"9834:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":527,"name":"Identifier","src":"9842:10:30"}],"id":528,"name":"MemberAccess","src":"9842:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":529,"name":"Literal","src":"9862:1:30"}],"id":530,"name":"BinaryOperation","src":"9842:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":531,"name":"Literal","src":"9865:17:30"}],"id":532,"name":"FunctionCall","src":"9834:49:30"}],"id":533,"name":"ExpressionStatement","src":"9834:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":534,"name":"Identifier","src":"9966:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":535,"name":"Identifier","src":"9994:10:30"}],"id":536,"name":"Assignment","src":"9966:38:30"}],"id":537,"name":"ExpressionStatement","src":"9966:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"bool","value":"submittedWhitelistAddition"},"id":538,"name":"Identifier","src":"10058:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":539,"name":"Literal","src":"10087:4:30"}],"id":540,"name":"Assignment","src":"10058:33:30"}],"id":541,"name":"ExpressionStatement","src":"10058:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":85,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistAddition"},"id":542,"name":"Identifier","src":"10144:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":543,"name":"Identifier","src":"10171:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":544,"name":"Identifier","src":"10183:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":511,"type":"address[] calldata","value":"_addresses"},"id":545,"name":"Identifier","src":"10197:10:30"}],"id":546,"name":"FunctionCall","src":"10183:25:30"}],"id":547,"name":"FunctionCall","src":"10144:65:30"}],"id":548,"name":"EmitStatement","src":"10139:70:30"}],"id":549,"name":"Block","src":"9649:567:30"}],"id":550,"name":"FunctionDefinition","src":"9505:711:30"},{"attributes":{"documentation":"@dev Remove addresses from the whitelist.\n @param _addresses are the Ethereum addresses to be removed.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistRemoval","scope":606,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":589,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":551,"name":"ElementaryTypeName","src":"10372:7:30"}],"id":552,"name":"ArrayTypeName","src":"10372:9:30"}],"id":553,"name":"VariableDeclaration","src":"10372:29:30"}],"id":554,"name":"ParameterList","src":"10371:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":559,"name":"ParameterList","src":"10447:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":555,"name":"Identifier","src":"10412:15:30"}],"id":556,"name":"ModifierInvocation","src":"10412:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":178,"type":"modifier ()","value":"noActiveSubmission"},"id":557,"name":"Identifier","src":"10428:18:30"}],"id":558,"name":"ModifierInvocation","src":"10428:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":560,"name":"Identifier","src":"10517:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"bool","value":"isSetWhitelist"},"id":561,"name":"Identifier","src":"10525:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":562,"name":"Literal","src":"10541:27:30"}],"id":563,"name":"FunctionCall","src":"10517:52:30"}],"id":564,"name":"ExpressionStatement","src":"10517:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":565,"name":"Identifier","src":"10639:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":553,"type":"address[] calldata","value":"_addresses"},"id":566,"name":"Identifier","src":"10647:10:30"}],"id":567,"name":"MemberAccess","src":"10647:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":568,"name":"Literal","src":"10667:1:30"}],"id":569,"name":"BinaryOperation","src":"10647:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":570,"name":"Literal","src":"10670:17:30"}],"id":571,"name":"FunctionCall","src":"10639:49:30"}],"id":572,"name":"ExpressionStatement","src":"10639:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":118,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":573,"name":"Identifier","src":"10766:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":553,"type":"address[] calldata","value":"_addresses"},"id":574,"name":"Identifier","src":"10793:10:30"}],"id":575,"name":"Assignment","src":"10766:37:30"}],"id":576,"name":"ExpressionStatement","src":"10766:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":122,"type":"bool","value":"submittedWhitelistRemoval"},"id":577,"name":"Identifier","src":"10857:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":578,"name":"Literal","src":"10885:4:30"}],"id":579,"name":"Assignment","src":"10857:32:30"}],"id":580,"name":"ExpressionStatement","src":"10857:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":105,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistRemoval"},"id":581,"name":"Identifier","src":"10942:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":553,"type":"address[] calldata","value":"_addresses"},"id":582,"name":"Identifier","src":"10968:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":605,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":583,"name":"Identifier","src":"10980:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":553,"type":"address[] calldata","value":"_addresses"},"id":584,"name":"Identifier","src":"10994:10:30"}],"id":585,"name":"FunctionCall","src":"10980:25:30"}],"id":586,"name":"FunctionCall","src":"10942:64:30"}],"id":587,"name":"EmitStatement","src":"10937:69:30"}],"id":588,"name":"Block","src":"10447:566:30"}],"id":589,"name":"FunctionDefinition","src":"10340:673:30"},{"attributes":{"documentation":"@dev Method used to hash our whitelist address arrays.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"calculateHash","scope":606,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":605,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":590,"name":"ElementaryTypeName","src":"11105:7:30"}],"id":591,"name":"ArrayTypeName","src":"11105:9:30"}],"id":592,"name":"VariableDeclaration","src":"11105:27:30"}],"id":593,"name":"ParameterList","src":"11104:29:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":605,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":594,"name":"ElementaryTypeName","src":"11155:7:30"}],"id":595,"name":"VariableDeclaration","src":"11155:7:30"}],"id":596,"name":"ParameterList","src":"11154:9:30"},{"children":[{"attributes":{"functionReturnParameters":596},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":597,"name":"Identifier","src":"11181:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":598,"name":"Identifier","src":"11191:3:30"}],"id":599,"name":"MemberAccess","src":"11191:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":592,"type":"address[] memory","value":"_addresses"},"id":600,"name":"Identifier","src":"11208:10:30"}],"id":601,"name":"FunctionCall","src":"11191:28:30"}],"id":602,"name":"FunctionCall","src":"11181:39:30"}],"id":603,"name":"Return","src":"11174:46:30"}],"id":604,"name":"Block","src":"11164:63:30"}],"id":605,"name":"FunctionDefinition","src":"11082:145:30"}],"id":606,"name":"ContractDefinition","src":"2361:8868:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title DailyLimitTrait This trait allows for daily limits to be included in other contracts.\n This contract will allow for a DailyLimit object to be instantiated and used.","fullyImplemented":true,"linearizedBaseContracts":[808],"name":"DailyLimitTrait","scope":2184},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":607,"name":"UserDefinedTypeName","src":"11447:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":608,"name":"ElementaryTypeName","src":"11460:7:30"}],"id":609,"name":"UsingForDirective","src":"11441:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":610,"name":"ParameterList","src":"11501:2:30"}],"id":611,"name":"EventDefinition","src":"11474:30:30"},{"attributes":{"canonicalName":"DailyLimitTrait.DailyLimit","name":"DailyLimit","scope":808,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"value","scope":622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":612,"name":"ElementaryTypeName","src":"11538:7:30"}],"id":613,"name":"VariableDeclaration","src":"11538:13:30"},{"attributes":{"constant":false,"name":"available","scope":622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":614,"name":"ElementaryTypeName","src":"11561:7:30"}],"id":615,"name":"VariableDeclaration","src":"11561:17:30"},{"attributes":{"constant":false,"name":"limitTimestamp","scope":622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":616,"name":"ElementaryTypeName","src":"11588:7:30"}],"id":617,"name":"VariableDeclaration","src":"11588:22:30"},{"attributes":{"constant":false,"name":"pending","scope":622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":618,"name":"ElementaryTypeName","src":"11620:7:30"}],"id":619,"name":"VariableDeclaration","src":"11620:15:30"},{"attributes":{"constant":false,"name":"controllerConfirmationRequired","scope":622,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":620,"name":"ElementaryTypeName","src":"11645:4:30"}],"id":621,"name":"VariableDeclaration","src":"11645:35:30"}],"id":622,"name":"StructDefinition","src":"11510:177:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_confirmLimitUpdate","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":644,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":623,"name":"UserDefinedTypeName","src":"11778:10:30"}],"id":624,"name":"VariableDeclaration","src":"11778:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":644,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":625,"name":"ElementaryTypeName","src":"11803:7:30"}],"id":626,"name":"VariableDeclaration","src":"11803:15:30"}],"id":627,"name":"ParameterList","src":"11777:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":628,"name":"ParameterList","src":"11829:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51a99e4fe0e7ccb76d7b5ddb649e7516f5e27e1195b905cd87f22fbc56fc219b","typeString":"literal_string \"confirmed/submitted limit mismatch\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":629,"name":"Identifier","src":"11910:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":624,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":630,"name":"Identifier","src":"11918:4:30"}],"id":631,"name":"MemberAccess","src":"11918:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":626,"type":"uint256","value":"_amount"},"id":632,"name":"Identifier","src":"11934:7:30"}],"id":633,"name":"BinaryOperation","src":"11918:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"confirmed/submitted limit mismatch\"","value":"confirmed/submitted limit mismatch"},"id":634,"name":"Literal","src":"11943:36:30"}],"id":635,"name":"FunctionCall","src":"11910:70:30"}],"id":636,"name":"ExpressionStatement","src":"11910:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$622_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":730,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":637,"name":"Identifier","src":"12048:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":624,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":638,"name":"Identifier","src":"12061:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":624,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":639,"name":"Identifier","src":"12067:4:30"}],"id":640,"name":"MemberAccess","src":"12067:12:30"}],"id":641,"name":"FunctionCall","src":"12048:32:30"}],"id":642,"name":"ExpressionStatement","src":"12048:32:30"}],"id":643,"name":"Block","src":"11829:258:30"}],"id":644,"name":"FunctionDefinition","src":"11749:338:30"},{"attributes":{"documentation":"@dev Use up amount within the daily limit. Will fail if amount is larger than daily limit.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_enforceLimit","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":674,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":645,"name":"UserDefinedTypeName","src":"12215:10:30"}],"id":646,"name":"VariableDeclaration","src":"12215:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":647,"name":"ElementaryTypeName","src":"12240:7:30"}],"id":648,"name":"VariableDeclaration","src":"12240:15:30"}],"id":649,"name":"ParameterList","src":"12214:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":650,"name":"ParameterList","src":"12266:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$622_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":807,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":651,"name":"Identifier","src":"12328:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":646,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":652,"name":"Identifier","src":"12350:4:30"}],"id":653,"name":"FunctionCall","src":"12328:27:30"}],"id":654,"name":"ExpressionStatement","src":"12328:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76fdd6ba40b4885ab45b8708dbc1ff56b4ee0a701903e21ff02ec4fc90e97cfd","typeString":"literal_string \"available=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":646,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":656,"name":"Identifier","src":"12373:4:30"}],"id":657,"name":"MemberAccess","src":"12373:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":648,"type":"uint256","value":"_amount"},"id":658,"name":"Identifier","src":"12391:7:30"}],"id":659,"name":"BinaryOperation","src":"12373:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617661696c61626c653c616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"available","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":681,"name":"Identifier","src":"12751:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":617,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":676,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":682,"name":"Identifier","src":"12757:4:30"}],"id":683,"name":"MemberAccess","src":"12757:19:30"}],"id":684,"name":"MemberAccess","src":"12757:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":685,"name":"Literal","src":"12781:8:30"}],"id":686,"name":"FunctionCall","src":"12757:33:30"}],"id":687,"name":"BinaryOperation","src":"12751:39:30"},{"children":[{"attributes":{"functionReturnParameters":680},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":676,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":688,"name":"Identifier","src":"12813:4:30"}],"id":689,"name":"MemberAccess","src":"12813:10:30"}],"id":690,"name":"Return","src":"12806:17:30"}],"id":691,"name":"Block","src":"12792:42:30"},{"children":[{"attributes":{"functionReturnParameters":680},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":676,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":692,"name":"Identifier","src":"12861:4:30"}],"id":693,"name":"MemberAccess","src":"12861:14:30"}],"id":694,"name":"Return","src":"12854:21:30"}],"id":695,"name":"Block","src":"12840:46:30"}],"id":696,"name":"IfStatement","src":"12747:139:30"}],"id":697,"name":"Block","src":"12737:155:30"}],"id":698,"name":"FunctionDefinition","src":"12652:240:30"},{"attributes":{"documentation":"@dev Modify the spend limit and spend available based on the provided value.\n @dev _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_modifyLimit","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":730,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":699,"name":"UserDefinedTypeName","src":"13060:10:30"}],"id":700,"name":"VariableDeclaration","src":"13060:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":730,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":701,"name":"ElementaryTypeName","src":"13085:7:30"}],"id":702,"name":"VariableDeclaration","src":"13085:15:30"}],"id":703,"name":"ParameterList","src":"13059:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":704,"name":"ParameterList","src":"13110:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$622_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":807,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":705,"name":"Identifier","src":"13172:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":706,"name":"Identifier","src":"13194:4:30"}],"id":707,"name":"FunctionCall","src":"13172:27:30"}],"id":708,"name":"ExpressionStatement","src":"13172:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":709,"name":"Identifier","src":"13264:4:30"}],"id":711,"name":"MemberAccess","src":"13264:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":702,"type":"uint256","value":"_amount"},"id":712,"name":"Identifier","src":"13277:7:30"}],"id":713,"name":"Assignment","src":"13264:20:30"}],"id":714,"name":"ExpressionStatement","src":"13264:20:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":715,"name":"Identifier","src":"13376:4:30"}],"id":716,"name":"MemberAccess","src":"13376:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":717,"name":"Identifier","src":"13393:4:30"}],"id":718,"name":"MemberAccess","src":"13393:10:30"}],"id":719,"name":"BinaryOperation","src":"13376:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":720,"name":"Identifier","src":"13419:4:30"}],"id":722,"name":"MemberAccess","src":"13419:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":700,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":723,"name":"Identifier","src":"13436:4:30"}],"id":724,"name":"MemberAccess","src":"13436:10:30"}],"id":725,"name":"Assignment","src":"13419:27:30"}],"id":726,"name":"ExpressionStatement","src":"13419:27:30"}],"id":727,"name":"Block","src":"13405:52:30"}],"id":728,"name":"IfStatement","src":"13372:85:30"}],"id":729,"name":"Block","src":"13110:353:30"}],"id":730,"name":"FunctionDefinition","src":"13038:425:30"},{"attributes":{"documentation":"@dev Set the daily limit.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_setLimit","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":756,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":731,"name":"UserDefinedTypeName","src":"13586:10:30"}],"id":732,"name":"VariableDeclaration","src":"13586:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":756,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":733,"name":"ElementaryTypeName","src":"13611:7:30"}],"id":734,"name":"VariableDeclaration","src":"13611:15:30"}],"id":735,"name":"ParameterList","src":"13585:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":736,"name":"ParameterList","src":"13637:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5515161ef75a198a2c79d5b0927b7d4cad620073ea22f64fc9faac79dbcba501","typeString":"literal_string \"limit already set\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":737,"name":"Identifier","src":"13709:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":732,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":738,"name":"Identifier","src":"13718:4:30"}],"id":739,"name":"MemberAccess","src":"13718:35:30"}],"id":740,"name":"UnaryOperation","src":"13717:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d697420616c726561647920736574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit already set\"","value":"limit already set"},"id":741,"name":"Literal","src":"13755:19:30"}],"id":742,"name":"FunctionCall","src":"13709:66:30"}],"id":743,"name":"ExpressionStatement","src":"13709:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$622_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":730,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":744,"name":"Identifier","src":"13844:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":732,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":745,"name":"Identifier","src":"13857:4:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":734,"type":"uint256","value":"_amount"},"id":746,"name":"Identifier","src":"13863:7:30"}],"id":747,"name":"FunctionCall","src":"13844:27:30"}],"id":748,"name":"ExpressionStatement","src":"13844:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":732,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":749,"name":"Identifier","src":"13919:4:30"}],"id":751,"name":"MemberAccess","src":"13919:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":752,"name":"Literal","src":"13957:4:30"}],"id":753,"name":"Assignment","src":"13919:42:30"}],"id":754,"name":"ExpressionStatement","src":"13919:42:30"}],"id":755,"name":"Block","src":"13637:331:30"}],"id":756,"name":"FunctionDefinition","src":"13567:401:30"},{"attributes":{"documentation":"@dev Submit a daily limit update, needs to be confirmed.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_submitLimitUpdate","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":776,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":757,"name":"UserDefinedTypeName","src":"14131:10:30"}],"id":758,"name":"VariableDeclaration","src":"14131:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":759,"name":"ElementaryTypeName","src":"14156:7:30"}],"id":760,"name":"VariableDeclaration","src":"14156:15:30"}],"id":761,"name":"ParameterList","src":"14130:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":762,"name":"ParameterList","src":"14182:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d667d750d47924f17f0479d6107ac25f4e8879366a2d600f6b5ea07705c561f3","typeString":"literal_string \"limit hasn't been set yet\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":763,"name":"Identifier","src":"14246:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":758,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":764,"name":"Identifier","src":"14254:4:30"}],"id":765,"name":"MemberAccess","src":"14254:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d6974206861736e2774206265656e2073657420796574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit hasn't been set yet\"","value":"limit hasn't been set yet"},"id":766,"name":"Literal","src":"14291:27:30"}],"id":767,"name":"FunctionCall","src":"14246:73:30"}],"id":768,"name":"ExpressionStatement","src":"14246:73:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":758,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":769,"name":"Identifier","src":"14391:4:30"}],"id":771,"name":"MemberAccess","src":"14391:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":760,"type":"uint256","value":"_amount"},"id":772,"name":"Identifier","src":"14406:7:30"}],"id":773,"name":"Assignment","src":"14391:22:30"}],"id":774,"name":"ExpressionStatement","src":"14391:22:30"}],"id":775,"name":"Block","src":"14182:238:30"}],"id":776,"name":"FunctionDefinition","src":"14103:317:30"},{"attributes":{"documentation":"@dev Update available spend limit based on the daily reset.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateAvailableLimit","scope":808,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":807,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":777,"name":"UserDefinedTypeName","src":"14525:10:30"}],"id":778,"name":"VariableDeclaration","src":"14525:23:30"}],"id":779,"name":"ParameterList","src":"14524:25:30"},{"attributes":{"parameters":[null]},"children":[],"id":780,"name":"ParameterList","src":"14558:0:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":781,"name":"Identifier","src":"14572:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":617,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":782,"name":"Identifier","src":"14578:4:30"}],"id":783,"name":"MemberAccess","src":"14578:19:30"}],"id":784,"name":"MemberAccess","src":"14578:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":785,"name":"Literal","src":"14602:8:30"}],"id":786,"name":"FunctionCall","src":"14578:33:30"}],"id":787,"name":"BinaryOperation","src":"14572:39:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"limitTimestamp","referencedDeclaration":617,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":788,"name":"Identifier","src":"14672:4:30"}],"id":790,"name":"MemberAccess","src":"14672:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":791,"name":"Identifier","src":"14694:3:30"}],"id":792,"name":"Assignment","src":"14672:25:30"}],"id":793,"name":"ExpressionStatement","src":"14672:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":615,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":794,"name":"Identifier","src":"14778:4:30"}],"id":796,"name":"MemberAccess","src":"14778:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":778,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":797,"name":"Identifier","src":"14795:4:30"}],"id":798,"name":"MemberAccess","src":"14795:10:30"}],"id":799,"name":"Assignment","src":"14778:27:30"}],"id":800,"name":"ExpressionStatement","src":"14778:27:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":611,"type":"function ()","value":"UpdatedAvailableLimit"},"id":801,"name":"Identifier","src":"14824:21:30"}],"id":802,"name":"FunctionCall","src":"14824:23:30"}],"id":803,"name":"EmitStatement","src":"14819:28:30"}],"id":804,"name":"Block","src":"14613:245:30"}],"id":805,"name":"IfStatement","src":"14568:290:30"}],"id":806,"name":"Block","src":"14558:306:30"}],"id":807,"name":"FunctionDefinition","src":"14494:370:30"}],"id":808,"name":"ContractDefinition","src":"11411:3455:30"},{"attributes":{"contractDependencies":[36,58,2826,2871,3028],"contractKind":"contract","documentation":"@title it provides daily spend limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[940,58,36,3028,2826,2871],"name":"SpendLimit","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":36,"type":"contract ControllableOwnable"},"id":809,"name":"UserDefinedTypeName","src":"14949:19:30"}],"id":810,"name":"InheritanceSpecifier","src":"14949:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":58,"type":"contract SelfCallableOwnable"},"id":811,"name":"UserDefinedTypeName","src":"14970:19:30"}],"id":812,"name":"InheritanceSpecifier","src":"14970:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetSpendLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":818,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":813,"name":"ElementaryTypeName","src":"15016:7:30"}],"id":814,"name":"VariableDeclaration","src":"15016:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":818,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":815,"name":"ElementaryTypeName","src":"15033:7:30"}],"id":816,"name":"VariableDeclaration","src":"15033:15:30"}],"id":817,"name":"ParameterList","src":"15015:34:30"}],"id":818,"name":"EventDefinition","src":"14996:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedSpendLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":822,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":819,"name":"ElementaryTypeName","src":"15087:7:30"}],"id":820,"name":"VariableDeclaration","src":"15087:15:30"}],"id":821,"name":"ParameterList","src":"15086:17:30"}],"id":822,"name":"EventDefinition","src":"15055:49:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":808,"type":"library DailyLimitTrait"},"id":823,"name":"UserDefinedTypeName","src":"15116:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":824,"name":"UserDefinedTypeName","src":"15136:26:30"}],"id":825,"name":"UsingForDirective","src":"15110:53:30"},{"attributes":{"constant":false,"name":"_spendLimit","scope":940,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":826,"name":"UserDefinedTypeName","src":"15169:26:30"}],"id":827,"name":"VariableDeclaration","src":"15169:47:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily spend limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":940,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_limit_","scope":844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":828,"name":"ElementaryTypeName","src":"15302:7:30"}],"id":829,"name":"VariableDeclaration","src":"15302:15:30"}],"id":830,"name":"ParameterList","src":"15301:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":831,"name":"ParameterList","src":"15328:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":832,"name":"Identifier","src":"15338:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":622,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":808,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":833,"name":"Identifier","src":"15352:15:30"}],"id":834,"name":"MemberAccess","src":"15352:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":829,"type":"uint256","value":"_limit_"},"id":835,"name":"Identifier","src":"15379:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":829,"type":"uint256","value":"_limit_"},"id":836,"name":"Identifier","src":"15388:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":837,"name":"Identifier","src":"15397:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":838,"name":"Literal","src":"15402:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":839,"name":"Literal","src":"15405:5:30"}],"id":840,"name":"FunctionCall","src":"15352:59:30"}],"id":841,"name":"Assignment","src":"15338:73:30"}],"id":842,"name":"ExpressionStatement","src":"15338:73:30"}],"id":843,"name":"Block","src":"15328:90:30"}],"id":844,"name":"FunctionDefinition","src":"15290:128:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmSpendLimitUpdate","scope":940,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":864,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":845,"name":"ElementaryTypeName","src":"15513:7:30"}],"id":846,"name":"VariableDeclaration","src":"15513:15:30"}],"id":847,"name":"ParameterList","src":"15512:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":850,"name":"ParameterList","src":"15554:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":848,"name":"Identifier","src":"15539:14:30"}],"id":849,"name":"ModifierInvocation","src":"15539:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":644,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":851,"name":"Identifier","src":"15564:11:30"}],"id":853,"name":"MemberAccess","src":"15564:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":846,"type":"uint256","value":"_amount"},"id":854,"name":"Identifier","src":"15596:7:30"}],"id":855,"name":"FunctionCall","src":"15564:40:30"}],"id":856,"name":"ExpressionStatement","src":"15564:40:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":857,"name":"Identifier","src":"15619:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":858,"name":"Identifier","src":"15633:3:30"}],"id":859,"name":"MemberAccess","src":"15633:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":846,"type":"uint256","value":"_amount"},"id":860,"name":"Identifier","src":"15645:7:30"}],"id":861,"name":"FunctionCall","src":"15619:34:30"}],"id":862,"name":"EmitStatement","src":"15614:39:30"}],"id":863,"name":"Block","src":"15554:106:30"}],"id":864,"name":"FunctionDefinition","src":"15480:180:30"},{"attributes":{"documentation":"@dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setSpendLimit","scope":940,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":884,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":865,"name":"ElementaryTypeName","src":"15840:7:30"}],"id":866,"name":"VariableDeclaration","src":"15840:15:30"}],"id":867,"name":"ParameterList","src":"15839:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":870,"name":"ParameterList","src":"15882:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":868,"name":"Identifier","src":"15866:15:30"}],"id":869,"name":"ModifierInvocation","src":"15866:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":756,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":871,"name":"Identifier","src":"15892:11:30"}],"id":873,"name":"MemberAccess","src":"15892:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":866,"type":"uint256","value":"_amount"},"id":874,"name":"Identifier","src":"15914:7:30"}],"id":875,"name":"FunctionCall","src":"15892:30:30"}],"id":876,"name":"ExpressionStatement","src":"15892:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":818,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":877,"name":"Identifier","src":"15937:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":878,"name":"Identifier","src":"15951:3:30"}],"id":879,"name":"MemberAccess","src":"15951:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":866,"type":"uint256","value":"_amount"},"id":880,"name":"Identifier","src":"15963:7:30"}],"id":881,"name":"FunctionCall","src":"15937:34:30"}],"id":882,"name":"EmitStatement","src":"15932:39:30"}],"id":883,"name":"Block","src":"15882:96:30"}],"id":884,"name":"FunctionDefinition","src":"15817:161:30"},{"attributes":{"documentation":"@dev View your available limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitAvailable","scope":940,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":885,"name":"ParameterList","src":"16051:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":886,"name":"ElementaryTypeName","src":"16077:7:30"}],"id":887,"name":"VariableDeclaration","src":"16077:7:30"}],"id":888,"name":"ParameterList","src":"16076:9:30"},{"children":[{"attributes":{"functionReturnParameters":888},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":698,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":889,"name":"Identifier","src":"16103:11:30"}],"id":890,"name":"MemberAccess","src":"16103:30:30"}],"id":891,"name":"FunctionCall","src":"16103:32:30"}],"id":892,"name":"Return","src":"16096:39:30"}],"id":893,"name":"Block","src":"16086:56:30"}],"id":894,"name":"FunctionDefinition","src":"16023:119:30"},{"attributes":{"documentation":"@dev Is there an active spend limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitPending","scope":940,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":895,"name":"ParameterList","src":"16225:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":903,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":896,"name":"ElementaryTypeName","src":"16251:7:30"}],"id":897,"name":"VariableDeclaration","src":"16251:7:30"}],"id":898,"name":"ParameterList","src":"16250:9:30"},{"children":[{"attributes":{"functionReturnParameters":898},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":899,"name":"Identifier","src":"16277:11:30"}],"id":900,"name":"MemberAccess","src":"16277:19:30"}],"id":901,"name":"Return","src":"16270:26:30"}],"id":902,"name":"Block","src":"16260:43:30"}],"id":903,"name":"FunctionDefinition","src":"16199:104:30"},{"attributes":{"documentation":"@dev Has the spend limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitControllerConfirmationRequired","scope":940,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":904,"name":"ParameterList","src":"16408:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":912,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":905,"name":"ElementaryTypeName","src":"16434:4:30"}],"id":906,"name":"VariableDeclaration","src":"16434:4:30"}],"id":907,"name":"ParameterList","src":"16433:6:30"},{"children":[{"attributes":{"functionReturnParameters":907},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":908,"name":"Identifier","src":"16457:11:30"}],"id":909,"name":"MemberAccess","src":"16457:42:30"}],"id":910,"name":"Return","src":"16450:49:30"}],"id":911,"name":"Block","src":"16440:66:30"}],"id":912,"name":"FunctionDefinition","src":"16359:147:30"},{"attributes":{"documentation":"@dev View how much has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitValue","scope":940,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":913,"name":"ParameterList","src":"16586:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":921,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":914,"name":"ElementaryTypeName","src":"16612:7:30"}],"id":915,"name":"VariableDeclaration","src":"16612:7:30"}],"id":916,"name":"ParameterList","src":"16611:9:30"},{"children":[{"attributes":{"functionReturnParameters":916},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":917,"name":"Identifier","src":"16638:11:30"}],"id":918,"name":"MemberAccess","src":"16638:17:30"}],"id":919,"name":"Return","src":"16631:24:30"}],"id":920,"name":"Block","src":"16621:41:30"}],"id":921,"name":"FunctionDefinition","src":"16562:100:30"},{"attributes":{"documentation":"@dev Submit a daily transfer limit update for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitSpendLimitUpdate","scope":940,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":922,"name":"ElementaryTypeName","src":"16838:7:30"}],"id":923,"name":"VariableDeclaration","src":"16838:15:30"}],"id":924,"name":"ParameterList","src":"16837:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":927,"name":"ParameterList","src":"16880:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":925,"name":"Identifier","src":"16864:15:30"}],"id":926,"name":"ModifierInvocation","src":"16864:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":776,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":928,"name":"Identifier","src":"16890:11:30"}],"id":930,"name":"MemberAccess","src":"16890:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":923,"type":"uint256","value":"_amount"},"id":931,"name":"Identifier","src":"16921:7:30"}],"id":932,"name":"FunctionCall","src":"16890:39:30"}],"id":933,"name":"ExpressionStatement","src":"16890:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":822,"type":"function (uint256)","value":"SubmittedSpendLimitUpdate"},"id":934,"name":"Identifier","src":"16944:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":923,"type":"uint256","value":"_amount"},"id":935,"name":"Identifier","src":"16970:7:30"}],"id":936,"name":"FunctionCall","src":"16944:34:30"}],"id":937,"name":"EmitStatement","src":"16939:39:30"}],"id":938,"name":"Block","src":"16880:105:30"}],"id":939,"name":"FunctionDefinition","src":"16806:179:30"}],"id":940,"name":"ContractDefinition","src":"14926:2061:30"},{"attributes":{"contractDependencies":[36,58,2826,2871,3028],"contractKind":"contract","documentation":"@title GasTopUpLimit provides daily limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1098,58,36,3028,2826,2871],"name":"GasTopUpLimit","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":36,"type":"contract ControllableOwnable"},"id":941,"name":"UserDefinedTypeName","src":"17077:19:30"}],"id":942,"name":"InheritanceSpecifier","src":"17077:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":58,"type":"contract SelfCallableOwnable"},"id":943,"name":"UserDefinedTypeName","src":"17098:19:30"}],"id":944,"name":"InheritanceSpecifier","src":"17098:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetGasTopUpLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":950,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":945,"name":"ElementaryTypeName","src":"17147:7:30"}],"id":946,"name":"VariableDeclaration","src":"17147:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":950,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":947,"name":"ElementaryTypeName","src":"17164:7:30"}],"id":948,"name":"VariableDeclaration","src":"17164:15:30"}],"id":949,"name":"ParameterList","src":"17146:34:30"}],"id":950,"name":"EventDefinition","src":"17124:57:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedGasTopUpLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":954,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":951,"name":"ElementaryTypeName","src":"17221:7:30"}],"id":952,"name":"VariableDeclaration","src":"17221:15:30"}],"id":953,"name":"ParameterList","src":"17220:17:30"}],"id":954,"name":"EventDefinition","src":"17186:52:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_GAS_TOPUP_LIMIT","scope":1098,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":955,"name":"ElementaryTypeName","src":"17244:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"353030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 500000000000000000","value":"500"},"id":956,"name":"Literal","src":"17296:10:30"}],"id":957,"name":"VariableDeclaration","src":"17244:62:30"},{"attributes":{"constant":true,"name":"_MINIMUM_GAS_TOPUP_LIMIT","scope":1098,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":958,"name":"ElementaryTypeName","src":"17312:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 1000000000000000","value":"1"},"id":959,"name":"Literal","src":"17364:8:30"}],"id":960,"name":"VariableDeclaration","src":"17312:60:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":808,"type":"library DailyLimitTrait"},"id":961,"name":"UserDefinedTypeName","src":"17385:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":962,"name":"UserDefinedTypeName","src":"17405:26:30"}],"id":963,"name":"UsingForDirective","src":"17379:53:30"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":1098,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":964,"name":"UserDefinedTypeName","src":"17438:26:30"}],"id":965,"name":"VariableDeclaration","src":"17438:50:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily gas topup limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1098,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":966,"name":"ParameterList","src":"17577:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":967,"name":"ParameterList","src":"17589:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":968,"name":"Identifier","src":"17599:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":622,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":808,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":969,"name":"Identifier","src":"17616:15:30"}],"id":970,"name":"MemberAccess","src":"17616:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":957,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":971,"name":"Identifier","src":"17643:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":957,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":972,"name":"Identifier","src":"17669:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":973,"name":"Identifier","src":"17695:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":974,"name":"Literal","src":"17700:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":975,"name":"Literal","src":"17703:5:30"}],"id":976,"name":"FunctionCall","src":"17616:93:30"}],"id":977,"name":"Assignment","src":"17599:110:30"}],"id":978,"name":"ExpressionStatement","src":"17599:110:30"}],"id":979,"name":"Block","src":"17589:127:30"}],"id":980,"name":"FunctionDefinition","src":"17566:150:30"},{"attributes":{"documentation":"@dev Confirm pending set top up gas limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmGasTopUpLimitUpdate","scope":1098,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1000,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":981,"name":"ElementaryTypeName","src":"17819:7:30"}],"id":982,"name":"VariableDeclaration","src":"17819:15:30"}],"id":983,"name":"ParameterList","src":"17818:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":986,"name":"ParameterList","src":"17860:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":984,"name":"Identifier","src":"17845:14:30"}],"id":985,"name":"ModifierInvocation","src":"17845:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":644,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":987,"name":"Identifier","src":"17870:14:30"}],"id":989,"name":"MemberAccess","src":"17870:34:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":982,"type":"uint256","value":"_amount"},"id":990,"name":"Identifier","src":"17905:7:30"}],"id":991,"name":"FunctionCall","src":"17870:43:30"}],"id":992,"name":"ExpressionStatement","src":"17870:43:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":993,"name":"Identifier","src":"17928:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":994,"name":"Identifier","src":"17945:3:30"}],"id":995,"name":"MemberAccess","src":"17945:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":982,"type":"uint256","value":"_amount"},"id":996,"name":"Identifier","src":"17957:7:30"}],"id":997,"name":"FunctionCall","src":"17928:37:30"}],"id":998,"name":"EmitStatement","src":"17923:42:30"}],"id":999,"name":"Block","src":"17860:112:30"}],"id":1000,"name":"FunctionDefinition","src":"17783:189:30"},{"attributes":{"documentation":"@dev View your available gas top-up limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitAvailable","scope":1098,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1001,"name":"ParameterList","src":"18059:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1010,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1002,"name":"ElementaryTypeName","src":"18085:7:30"}],"id":1003,"name":"VariableDeclaration","src":"18085:7:30"}],"id":1004,"name":"ParameterList","src":"18084:9:30"},{"children":[{"attributes":{"functionReturnParameters":1004},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":698,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1005,"name":"Identifier","src":"18111:14:30"}],"id":1006,"name":"MemberAccess","src":"18111:33:30"}],"id":1007,"name":"FunctionCall","src":"18111:35:30"}],"id":1008,"name":"Return","src":"18104:42:30"}],"id":1009,"name":"Block","src":"18094:59:30"}],"id":1010,"name":"FunctionDefinition","src":"18028:125:30"},{"attributes":{"documentation":"@dev Is there an active gas top-up limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitPending","scope":1098,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1011,"name":"ParameterList","src":"18244:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1019,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1012,"name":"ElementaryTypeName","src":"18270:7:30"}],"id":1013,"name":"VariableDeclaration","src":"18270:7:30"}],"id":1014,"name":"ParameterList","src":"18269:9:30"},{"children":[{"attributes":{"functionReturnParameters":1014},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1015,"name":"Identifier","src":"18296:14:30"}],"id":1016,"name":"MemberAccess","src":"18296:22:30"}],"id":1017,"name":"Return","src":"18289:29:30"}],"id":1018,"name":"Block","src":"18279:46:30"}],"id":1019,"name":"FunctionDefinition","src":"18215:110:30"},{"attributes":{"documentation":"@dev Has the gas top-up limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitControllerConfirmationRequired","scope":1098,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1020,"name":"ParameterList","src":"18438:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1028,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1021,"name":"ElementaryTypeName","src":"18464:4:30"}],"id":1022,"name":"VariableDeclaration","src":"18464:4:30"}],"id":1023,"name":"ParameterList","src":"18463:6:30"},{"children":[{"attributes":{"functionReturnParameters":1023},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1024,"name":"Identifier","src":"18487:14:30"}],"id":1025,"name":"MemberAccess","src":"18487:45:30"}],"id":1026,"name":"Return","src":"18480:52:30"}],"id":1027,"name":"Block","src":"18470:69:30"}],"id":1028,"name":"FunctionDefinition","src":"18386:153:30"},{"attributes":{"documentation":"@dev View how much gas top-up has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitValue","scope":1098,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1029,"name":"ParameterList","src":"18633:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1037,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1030,"name":"ElementaryTypeName","src":"18659:7:30"}],"id":1031,"name":"VariableDeclaration","src":"18659:7:30"}],"id":1032,"name":"ParameterList","src":"18658:9:30"},{"children":[{"attributes":{"functionReturnParameters":1032},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1033,"name":"Identifier","src":"18685:14:30"}],"id":1034,"name":"MemberAccess","src":"18685:20:30"}],"id":1035,"name":"Return","src":"18678:27:30"}],"id":1036,"name":"Block","src":"18668:44:30"}],"id":1037,"name":"FunctionDefinition","src":"18606:106:30"},{"attributes":{"documentation":"@dev Sets the daily gas top up limit.\n @param _amount is the gas top up amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setGasTopUpLimit","scope":1098,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1038,"name":"ElementaryTypeName","src":"18846:7:30"}],"id":1039,"name":"VariableDeclaration","src":"18846:15:30"}],"id":1040,"name":"ParameterList","src":"18845:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1043,"name":"ParameterList","src":"18888:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1041,"name":"Identifier","src":"18872:15:30"}],"id":1042,"name":"ModifierInvocation","src":"18872:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1044,"name":"Identifier","src":"18898:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":960,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1045,"name":"Identifier","src":"18906:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"uint256","value":"_amount"},"id":1046,"name":"Identifier","src":"18934:7:30"}],"id":1047,"name":"BinaryOperation","src":"18906:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"uint256","value":"_amount"},"id":1048,"name":"Identifier","src":"18945:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":957,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1049,"name":"Identifier","src":"18956:24:30"}],"id":1050,"name":"BinaryOperation","src":"18945:35:30"}],"id":1051,"name":"BinaryOperation","src":"18906:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1052,"name":"Literal","src":"18982:21:30"}],"id":1053,"name":"FunctionCall","src":"18898:106:30"}],"id":1054,"name":"ExpressionStatement","src":"18898:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":756,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1055,"name":"Identifier","src":"19014:14:30"}],"id":1057,"name":"MemberAccess","src":"19014:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"uint256","value":"_amount"},"id":1058,"name":"Identifier","src":"19039:7:30"}],"id":1059,"name":"FunctionCall","src":"19014:33:30"}],"id":1060,"name":"ExpressionStatement","src":"19014:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1061,"name":"Identifier","src":"19062:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1062,"name":"Identifier","src":"19079:3:30"}],"id":1063,"name":"MemberAccess","src":"19079:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"uint256","value":"_amount"},"id":1064,"name":"Identifier","src":"19091:7:30"}],"id":1065,"name":"FunctionCall","src":"19062:37:30"}],"id":1066,"name":"EmitStatement","src":"19057:42:30"}],"id":1067,"name":"Block","src":"18888:218:30"}],"id":1068,"name":"FunctionDefinition","src":"18820:286:30"},{"attributes":{"documentation":"@dev Submit a daily gas top up limit update.\n @param _amount is the daily top up gas limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitGasTopUpLimitUpdate","scope":1098,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1097,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1069,"name":"ElementaryTypeName","src":"19268:7:30"}],"id":1070,"name":"VariableDeclaration","src":"19268:15:30"}],"id":1071,"name":"ParameterList","src":"19267:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1074,"name":"ParameterList","src":"19310:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1072,"name":"Identifier","src":"19294:15:30"}],"id":1073,"name":"ModifierInvocation","src":"19294:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1075,"name":"Identifier","src":"19320:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":960,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1076,"name":"Identifier","src":"19328:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"_amount"},"id":1077,"name":"Identifier","src":"19356:7:30"}],"id":1078,"name":"BinaryOperation","src":"19328:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"_amount"},"id":1079,"name":"Identifier","src":"19367:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":957,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1080,"name":"Identifier","src":"19378:24:30"}],"id":1081,"name":"BinaryOperation","src":"19367:35:30"}],"id":1082,"name":"BinaryOperation","src":"19328:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1083,"name":"Literal","src":"19404:21:30"}],"id":1084,"name":"FunctionCall","src":"19320:106:30"}],"id":1085,"name":"ExpressionStatement","src":"19320:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":776,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1086,"name":"Identifier","src":"19436:14:30"}],"id":1088,"name":"MemberAccess","src":"19436:33:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"_amount"},"id":1089,"name":"Identifier","src":"19470:7:30"}],"id":1090,"name":"FunctionCall","src":"19436:42:30"}],"id":1091,"name":"ExpressionStatement","src":"19436:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":954,"type":"function (uint256)","value":"SubmittedGasTopUpLimitUpdate"},"id":1092,"name":"Identifier","src":"19493:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1070,"type":"uint256","value":"_amount"},"id":1093,"name":"Identifier","src":"19522:7:30"}],"id":1094,"name":"FunctionCall","src":"19493:37:30"}],"id":1095,"name":"EmitStatement","src":"19488:42:30"}],"id":1096,"name":"Block","src":"19310:227:30"}],"id":1097,"name":"FunctionDefinition","src":"19233:304:30"}],"id":1098,"name":"ContractDefinition","src":"17051:2488:30"},{"attributes":{"contractDependencies":[36,58,2826,2871,3028,3245],"contractKind":"contract","documentation":"@title LoadLimit provides daily load limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1272,3245,58,36,3028,2826,2871],"name":"LoadLimit","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":36,"type":"contract ControllableOwnable"},"id":1099,"name":"UserDefinedTypeName","src":"19626:19:30"}],"id":1100,"name":"InheritanceSpecifier","src":"19626:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":58,"type":"contract SelfCallableOwnable"},"id":1101,"name":"UserDefinedTypeName","src":"19647:19:30"}],"id":1102,"name":"InheritanceSpecifier","src":"19647:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":3245,"type":"contract TokenWhitelistable"},"id":1103,"name":"UserDefinedTypeName","src":"19668:18:30"}],"id":1104,"name":"InheritanceSpecifier","src":"19668:18:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetLoadLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1110,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1105,"name":"ElementaryTypeName","src":"19712:7:30"}],"id":1106,"name":"VariableDeclaration","src":"19712:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1110,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1107,"name":"ElementaryTypeName","src":"19729:7:30"}],"id":1108,"name":"VariableDeclaration","src":"19729:15:30"}],"id":1109,"name":"ParameterList","src":"19711:34:30"}],"id":1110,"name":"EventDefinition","src":"19693:53:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedLoadLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1114,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1111,"name":"ElementaryTypeName","src":"19782:7:30"}],"id":1112,"name":"VariableDeclaration","src":"19782:15:30"}],"id":1113,"name":"ParameterList","src":"19781:17:30"}],"id":1114,"name":"EventDefinition","src":"19751:48:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_STABLECOIN_LOAD_LIMIT","scope":1272,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1115,"name":"ElementaryTypeName","src":"19805:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000","value":"10000"},"id":1116,"name":"Literal","src":"19863:5:30"}],"id":1117,"name":"VariableDeclaration","src":"19805:63:30"},{"attributes":{"constant":false,"name":"_maximumLoadLimit","scope":1272,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1118,"name":"ElementaryTypeName","src":"19881:7:30"}],"id":1119,"name":"VariableDeclaration","src":"19881:33:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":808,"type":"library DailyLimitTrait"},"id":1120,"name":"UserDefinedTypeName","src":"19927:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":1121,"name":"UserDefinedTypeName","src":"19947:26:30"}],"id":1122,"name":"UsingForDirective","src":"19921:53:30"},{"attributes":{"constant":false,"name":"_loadLimit","scope":1272,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":622,"type":"struct DailyLimitTrait.DailyLimit"},"id":1123,"name":"UserDefinedTypeName","src":"19980:26:30"}],"id":1124,"name":"VariableDeclaration","src":"19980:46:30"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1272,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1162,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1125,"name":"ElementaryTypeName","src":"20045:7:30"}],"id":1126,"name":"VariableDeclaration","src":"20045:28:30"}],"id":1127,"name":"ParameterList","src":"20044:30:30"},{"attributes":{"parameters":[null]},"children":[],"id":1131,"name":"ParameterList","src":"20125:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3245,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":1128,"name":"Identifier","src":"20084:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1126,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1129,"name":"Identifier","src":"20103:20:30"}],"id":1130,"name":"ModifierInvocation","src":"20084:40:30"},{"children":[{"attributes":{"assignments":[null,1133,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1161,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1132,"name":"ElementaryTypeName","src":"20138:7:30"}],"id":1133,"name":"VariableDeclaration","src":"20138:27:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3109,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1134,"name":"Identifier","src":"20179:18:30"}],"id":1135,"name":"FunctionCall","src":"20179:20:30"}],"id":1136,"name":"VariableDeclarationStatement","src":"20135:64:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e91ed084014006e202586b158c3035ec40db0f637c146d3fdad49cda6c7a17a","typeString":"literal_string \"no stablecoin\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1137,"name":"Identifier","src":"20209:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"stablecoinMagnitude"},"id":1138,"name":"Identifier","src":"20217:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1139,"name":"Literal","src":"20239:1:30"}],"id":1140,"name":"BinaryOperation","src":"20217:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20737461626c65636f696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no stablecoin\"","value":"no stablecoin"},"id":1141,"name":"Literal","src":"20242:15:30"}],"id":1142,"name":"FunctionCall","src":"20209:49:30"}],"id":1143,"name":"ExpressionStatement","src":"20209:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1144,"name":"Identifier","src":"20268:17:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"uint256","value":"_MAXIMUM_STABLECOIN_LOAD_LIMIT"},"id":1145,"name":"Identifier","src":"20288:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"uint256","value":"stablecoinMagnitude"},"id":1146,"name":"Identifier","src":"20321:19:30"}],"id":1147,"name":"BinaryOperation","src":"20288:52:30"}],"id":1148,"name":"Assignment","src":"20268:72:30"}],"id":1149,"name":"ExpressionStatement","src":"20268:72:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1150,"name":"Identifier","src":"20350:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":622,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":808,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1151,"name":"Identifier","src":"20363:15:30"}],"id":1152,"name":"MemberAccess","src":"20363:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1153,"name":"Identifier","src":"20390:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1154,"name":"Identifier","src":"20409:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10111,"type":"uint256","value":"now"},"id":1155,"name":"Identifier","src":"20428:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1156,"name":"Literal","src":"20433:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1157,"name":"Literal","src":"20436:5:30"}],"id":1158,"name":"FunctionCall","src":"20363:79:30"}],"id":1159,"name":"Assignment","src":"20350:92:30"}],"id":1160,"name":"ExpressionStatement","src":"20350:92:30"}],"id":1161,"name":"Block","src":"20125:324:30"}],"id":1162,"name":"FunctionDefinition","src":"20033:416:30"},{"attributes":{"documentation":"@dev Sets a daily card load limit.\n @param _amount is the card load amount in current stablecoin base units.","implemented":true,"isConstructor":false,"kind":"function","name":"setLoadLimit","scope":1272,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1189,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1163,"name":"ElementaryTypeName","src":"20601:7:30"}],"id":1164,"name":"VariableDeclaration","src":"20601:15:30"}],"id":1165,"name":"ParameterList","src":"20600:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1168,"name":"ParameterList","src":"20643:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1166,"name":"Identifier","src":"20627:15:30"}],"id":1167,"name":"ModifierInvocation","src":"20627:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1169,"name":"Identifier","src":"20653:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1164,"type":"uint256","value":"_amount"},"id":1170,"name":"Identifier","src":"20661:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1171,"name":"Identifier","src":"20672:17:30"}],"id":1172,"name":"BinaryOperation","src":"20661:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1173,"name":"Literal","src":"20691:26:30"}],"id":1174,"name":"FunctionCall","src":"20653:65:30"}],"id":1175,"name":"ExpressionStatement","src":"20653:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":756,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1176,"name":"Identifier","src":"20728:10:30"}],"id":1178,"name":"MemberAccess","src":"20728:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1164,"type":"uint256","value":"_amount"},"id":1179,"name":"Identifier","src":"20749:7:30"}],"id":1180,"name":"FunctionCall","src":"20728:29:30"}],"id":1181,"name":"ExpressionStatement","src":"20728:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1110,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1182,"name":"Identifier","src":"20772:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1183,"name":"Identifier","src":"20785:3:30"}],"id":1184,"name":"MemberAccess","src":"20785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1164,"type":"uint256","value":"_amount"},"id":1185,"name":"Identifier","src":"20797:7:30"}],"id":1186,"name":"FunctionCall","src":"20772:33:30"}],"id":1187,"name":"EmitStatement","src":"20767:38:30"}],"id":1188,"name":"Block","src":"20643:169:30"}],"id":1189,"name":"FunctionDefinition","src":"20579:233:30"},{"attributes":{"documentation":"@dev Submit a daily load limit update.\n @param _amount is the daily load limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitLoadLimitUpdate","scope":1272,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1214,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1190,"name":"ElementaryTypeName","src":"20958:7:30"}],"id":1191,"name":"VariableDeclaration","src":"20958:15:30"}],"id":1192,"name":"ParameterList","src":"20957:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1195,"name":"ParameterList","src":"21000:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1193,"name":"Identifier","src":"20984:15:30"}],"id":1194,"name":"ModifierInvocation","src":"20984:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1196,"name":"Identifier","src":"21010:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1191,"type":"uint256","value":"_amount"},"id":1197,"name":"Identifier","src":"21018:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1119,"type":"uint256","value":"_maximumLoadLimit"},"id":1198,"name":"Identifier","src":"21029:17:30"}],"id":1199,"name":"BinaryOperation","src":"21018:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1200,"name":"Literal","src":"21048:26:30"}],"id":1201,"name":"FunctionCall","src":"21010:65:30"}],"id":1202,"name":"ExpressionStatement","src":"21010:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":776,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1203,"name":"Identifier","src":"21085:10:30"}],"id":1205,"name":"MemberAccess","src":"21085:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1191,"type":"uint256","value":"_amount"},"id":1206,"name":"Identifier","src":"21115:7:30"}],"id":1207,"name":"FunctionCall","src":"21085:38:30"}],"id":1208,"name":"ExpressionStatement","src":"21085:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1114,"type":"function (uint256)","value":"SubmittedLoadLimitUpdate"},"id":1209,"name":"Identifier","src":"21138:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1191,"type":"uint256","value":"_amount"},"id":1210,"name":"Identifier","src":"21163:7:30"}],"id":1211,"name":"FunctionCall","src":"21138:33:30"}],"id":1212,"name":"EmitStatement","src":"21133:38:30"}],"id":1213,"name":"Block","src":"21000:178:30"}],"id":1214,"name":"FunctionDefinition","src":"20927:251:30"},{"attributes":{"documentation":"@dev Confirm pending set load limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmLoadLimitUpdate","scope":1272,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1215,"name":"ElementaryTypeName","src":"21271:7:30"}],"id":1216,"name":"VariableDeclaration","src":"21271:15:30"}],"id":1217,"name":"ParameterList","src":"21270:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1220,"name":"ParameterList","src":"21312:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":1218,"name":"Identifier","src":"21297:14:30"}],"id":1219,"name":"ModifierInvocation","src":"21297:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":644,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1221,"name":"Identifier","src":"21322:10:30"}],"id":1223,"name":"MemberAccess","src":"21322:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"_amount"},"id":1224,"name":"Identifier","src":"21353:7:30"}],"id":1225,"name":"FunctionCall","src":"21322:39:30"}],"id":1226,"name":"ExpressionStatement","src":"21322:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1110,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1227,"name":"Identifier","src":"21376:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1228,"name":"Identifier","src":"21389:3:30"}],"id":1229,"name":"MemberAccess","src":"21389:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1216,"type":"uint256","value":"_amount"},"id":1230,"name":"Identifier","src":"21401:7:30"}],"id":1231,"name":"FunctionCall","src":"21376:33:30"}],"id":1232,"name":"EmitStatement","src":"21371:38:30"}],"id":1233,"name":"Block","src":"21312:104:30"}],"id":1234,"name":"FunctionDefinition","src":"21239:177:30"},{"attributes":{"documentation":"@dev View your available load limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitAvailable","scope":1272,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1235,"name":"ParameterList","src":"21493:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1244,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1236,"name":"ElementaryTypeName","src":"21519:7:30"}],"id":1237,"name":"VariableDeclaration","src":"21519:7:30"}],"id":1238,"name":"ParameterList","src":"21518:9:30"},{"children":[{"attributes":{"functionReturnParameters":1238},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":698,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1239,"name":"Identifier","src":"21545:10:30"}],"id":1240,"name":"MemberAccess","src":"21545:29:30"}],"id":1241,"name":"FunctionCall","src":"21545:31:30"}],"id":1242,"name":"Return","src":"21538:38:30"}],"id":1243,"name":"Block","src":"21528:55:30"}],"id":1244,"name":"FunctionDefinition","src":"21466:117:30"},{"attributes":{"documentation":"@dev Is there an active load limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitPending","scope":1272,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1245,"name":"ParameterList","src":"21664:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1253,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1246,"name":"ElementaryTypeName","src":"21690:7:30"}],"id":1247,"name":"VariableDeclaration","src":"21690:7:30"}],"id":1248,"name":"ParameterList","src":"21689:9:30"},{"children":[{"attributes":{"functionReturnParameters":1248},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":619,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1249,"name":"Identifier","src":"21716:10:30"}],"id":1250,"name":"MemberAccess","src":"21716:18:30"}],"id":1251,"name":"Return","src":"21709:25:30"}],"id":1252,"name":"Block","src":"21699:42:30"}],"id":1253,"name":"FunctionDefinition","src":"21639:102:30"},{"attributes":{"documentation":"@dev Has the load limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitControllerConfirmationRequired","scope":1272,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1254,"name":"ParameterList","src":"21844:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1262,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1255,"name":"ElementaryTypeName","src":"21870:4:30"}],"id":1256,"name":"VariableDeclaration","src":"21870:4:30"}],"id":1257,"name":"ParameterList","src":"21869:6:30"},{"children":[{"attributes":{"functionReturnParameters":1257},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":621,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1258,"name":"Identifier","src":"21893:10:30"}],"id":1259,"name":"MemberAccess","src":"21893:41:30"}],"id":1260,"name":"Return","src":"21886:48:30"}],"id":1261,"name":"Block","src":"21876:65:30"}],"id":1262,"name":"FunctionDefinition","src":"21796:145:30"},{"attributes":{"documentation":"@dev View how much laod limit has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitValue","scope":1272,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1263,"name":"ParameterList","src":"22031:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1271,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1264,"name":"ElementaryTypeName","src":"22057:7:30"}],"id":1265,"name":"VariableDeclaration","src":"22057:7:30"}],"id":1266,"name":"ParameterList","src":"22056:9:30"},{"children":[{"attributes":{"functionReturnParameters":1266},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":613,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1267,"name":"Identifier","src":"22083:10:30"}],"id":1268,"name":"MemberAccess","src":"22083:16:30"}],"id":1269,"name":"Return","src":"22076:23:30"}],"id":1270,"name":"Block","src":"22066:40:30"}],"id":1271,"name":"FunctionDefinition","src":"22008:98:30"}],"id":1272,"name":"ContractDefinition","src":"19604:2504:30"},{"attributes":{"contractDependencies":[36,58,606,940,1098,1272,2293,2730,2826,2871,3028,3245,3285],"contractKind":"contract","documentation":"@title Asset wallet with extra security features, gas top up management and card integration.","fullyImplemented":true,"linearizedBaseContracts":[2183,2730,3285,2293,940,606,1272,3245,1098,58,36,3028,2826,2871],"name":"Wallet","scope":2184},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":2871,"type":"contract ENSResolvable"},"id":1273,"name":"UserDefinedTypeName","src":"22228:13:30"}],"id":1274,"name":"InheritanceSpecifier","src":"22228:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"GasTopUpLimit","referencedDeclaration":1098,"type":"contract GasTopUpLimit"},"id":1275,"name":"UserDefinedTypeName","src":"22243:13:30"}],"id":1276,"name":"InheritanceSpecifier","src":"22243:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"LoadLimit","referencedDeclaration":1272,"type":"contract LoadLimit"},"id":1277,"name":"UserDefinedTypeName","src":"22258:9:30"}],"id":1278,"name":"InheritanceSpecifier","src":"22258:9:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddressWhitelist","referencedDeclaration":606,"type":"contract AddressWhitelist"},"id":1279,"name":"UserDefinedTypeName","src":"22269:16:30"}],"id":1280,"name":"InheritanceSpecifier","src":"22269:16:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SpendLimit","referencedDeclaration":940,"type":"contract SpendLimit"},"id":1281,"name":"UserDefinedTypeName","src":"22287:10:30"}],"id":1282,"name":"InheritanceSpecifier","src":"22287:10:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ERC165","referencedDeclaration":2293,"type":"contract ERC165"},"id":1283,"name":"UserDefinedTypeName","src":"22299:6:30"}],"id":1284,"name":"InheritanceSpecifier","src":"22299:6:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":3285,"type":"contract Transferrable"},"id":1285,"name":"UserDefinedTypeName","src":"22307:13:30"}],"id":1286,"name":"InheritanceSpecifier","src":"22307:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":2730,"type":"contract Balanceable"},"id":1287,"name":"UserDefinedTypeName","src":"22322:11:30"}],"id":1288,"name":"InheritanceSpecifier","src":"22322:11:30"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":2202,"type":"library Address"},"id":1289,"name":"UserDefinedTypeName","src":"22346:7:30"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1290,"name":"ElementaryTypeName","src":"22358:7:30"}],"id":1291,"name":"UsingForDirective","src":"22340:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"ECDSA","referencedDeclaration":2283,"type":"library ECDSA"},"id":1292,"name":"UserDefinedTypeName","src":"22377:5:30"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":1293,"name":"ElementaryTypeName","src":"22387:7:30"}],"id":1294,"name":"UsingForDirective","src":"22371:24:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":2565,"type":"library SafeERC20"},"id":1295,"name":"UserDefinedTypeName","src":"22406:9:30"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":2346,"type":"contract ERC20"},"id":1296,"name":"UserDefinedTypeName","src":"22420:5:30"}],"id":1297,"name":"UsingForDirective","src":"22400:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":2698,"type":"library SafeMath"},"id":1298,"name":"UserDefinedTypeName","src":"22437:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":1299,"name":"ElementaryTypeName","src":"22450:7:30"}],"id":1300,"name":"UsingForDirective","src":"22431:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"BulkTransferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1307,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1301,"name":"ElementaryTypeName","src":"22486:7:30"}],"id":1302,"name":"VariableDeclaration","src":"22486:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_assets","scope":1307,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1303,"name":"ElementaryTypeName","src":"22499:7:30"}],"id":1304,"name":"ArrayTypeName","src":"22499:9:30"}],"id":1305,"name":"VariableDeclaration","src":"22499:17:30"}],"id":1306,"name":"ParameterList","src":"22485:32:30"}],"id":1307,"name":"EventDefinition","src":"22464:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedRelayedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1313,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1308,"name":"ElementaryTypeName","src":"22556:5:30"}],"id":1309,"name":"VariableDeclaration","src":"22556:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1313,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1310,"name":"ElementaryTypeName","src":"22569:5:30"}],"id":1311,"name":"VariableDeclaration","src":"22569:17:30"}],"id":1312,"name":"ParameterList","src":"22555:32:30"}],"id":1313,"name":"EventDefinition","src":"22523:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_destination","scope":1323,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1314,"name":"ElementaryTypeName","src":"22619:7:30"}],"id":1315,"name":"VariableDeclaration","src":"22619:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_value","scope":1323,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1316,"name":"ElementaryTypeName","src":"22641:7:30"}],"id":1317,"name":"VariableDeclaration","src":"22641:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1323,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1318,"name":"ElementaryTypeName","src":"22657:5:30"}],"id":1319,"name":"VariableDeclaration","src":"22657:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1323,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1320,"name":"ElementaryTypeName","src":"22670:5:30"}],"id":1321,"name":"VariableDeclaration","src":"22670:17:30"}],"id":1322,"name":"ParameterList","src":"22618:70:30"}],"id":1323,"name":"EventDefinition","src":"22593:96:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"IncreasedRelayNonce"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1329,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1324,"name":"ElementaryTypeName","src":"22720:7:30"}],"id":1325,"name":"VariableDeclaration","src":"22720:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_currentNonce","scope":1329,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1326,"name":"ElementaryTypeName","src":"22737:7:30"}],"id":1327,"name":"VariableDeclaration","src":"22737:21:30"}],"id":1328,"name":"ParameterList","src":"22719:40:30"}],"id":1329,"name":"EventDefinition","src":"22694:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"LoadedTokenCard"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1335,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1330,"name":"ElementaryTypeName","src":"22787:7:30"}],"id":1331,"name":"VariableDeclaration","src":"22787:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1335,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1332,"name":"ElementaryTypeName","src":"22803:7:30"}],"id":1333,"name":"VariableDeclaration","src":"22803:15:30"}],"id":1334,"name":"ParameterList","src":"22786:33:30"}],"id":1335,"name":"EventDefinition","src":"22765:55:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1341,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1336,"name":"ElementaryTypeName","src":"22840:7:30"}],"id":1337,"name":"VariableDeclaration","src":"22840:13:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1341,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1338,"name":"ElementaryTypeName","src":"22855:7:30"}],"id":1339,"name":"VariableDeclaration","src":"22855:15:30"}],"id":1340,"name":"ParameterList","src":"22839:32:30"}],"id":1341,"name":"EventDefinition","src":"22825:47:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ToppedUpGas"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1349,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1342,"name":"ElementaryTypeName","src":"22895:7:30"}],"id":1343,"name":"VariableDeclaration","src":"22895:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1349,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1344,"name":"ElementaryTypeName","src":"22912:7:30"}],"id":1345,"name":"VariableDeclaration","src":"22912:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1349,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1346,"name":"ElementaryTypeName","src":"22928:7:30"}],"id":1347,"name":"VariableDeclaration","src":"22928:15:30"}],"id":1348,"name":"ParameterList","src":"22894:50:30"}],"id":1349,"name":"EventDefinition","src":"22877:68:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1350,"name":"ElementaryTypeName","src":"22968:7:30"}],"id":1351,"name":"VariableDeclaration","src":"22968:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1352,"name":"ElementaryTypeName","src":"22981:7:30"}],"id":1353,"name":"VariableDeclaration","src":"22981:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1354,"name":"ElementaryTypeName","src":"22997:7:30"}],"id":1355,"name":"VariableDeclaration","src":"22997:15:30"}],"id":1356,"name":"ParameterList","src":"22967:46:30"}],"id":1357,"name":"EventDefinition","src":"22950:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1358,"name":"ParameterList","src":"23046:2:30"}],"id":1359,"name":"EventDefinition","src":"23019:30:30"},{"attributes":{"constant":true,"name":"WALLET_VERSION","scope":2183,"stateVariable":true,"storageLocation":"default","type":"string","visibility":"public"},"children":[{"attributes":{"name":"string","type":"string"},"id":1360,"name":"ElementaryTypeName","src":"23125:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"332e322e30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"3.2.0\"","value":"3.2.0"},"id":1361,"name":"Literal","src":"23165:7:30"}],"id":1362,"name":"VariableDeclaration","src":"23125:47:30"},{"attributes":{"constant":true,"name":"_EIP_1271","scope":2183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1363,"name":"ElementaryTypeName","src":"23296:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230633133623062","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 549534475","value":"0x20c13b0b"},"id":1364,"name":"Literal","src":"23332:10:30"}],"id":1365,"name":"VariableDeclaration","src":"23296:46:30"},{"attributes":{"constant":true,"name":"_EIP_1654","scope":2183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1366,"name":"ElementaryTypeName","src":"23467:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783136323662613765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 371636862","value":"0x1626ba7e"},"id":1367,"name":"Literal","src":"23503:10:30"}],"id":1368,"name":"VariableDeclaration","src":"23467:46:30"},{"attributes":{"constant":true,"name":"_ERC165_INTERFACE_ID","scope":2183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1369,"name":"ElementaryTypeName","src":"23564:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":1370,"name":"Literal","src":"23611:10:30"}],"id":1371,"name":"VariableDeclaration","src":"23564:57:30"},{"attributes":{"constant":false,"name":"relayNonce","scope":2183,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1372,"name":"ElementaryTypeName","src":"23739:7:30"}],"id":1373,"name":"VariableDeclaration","src":"23739:25:30"},{"attributes":{"constant":false,"name":"_licenceNode","scope":2183,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1374,"name":"ElementaryTypeName","src":"23845:7:30"}],"id":1375,"name":"VariableDeclaration","src":"23845:28:30"},{"attributes":{"documentation":"@dev Constructor initializes the wallet top up limit and the vault contract.\n @param _owner_ is the owner account of the wallet contract.\n @param _transferable_ indicates whether the contract ownership can be transferred.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist.\n @param _controllerNode_ is the ENS name node of the Controller contract.\n @param _licenceNode_ is the ENS name node of the Licence contract.\n @param _spendLimit_ is the initial spend limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1376,"name":"ElementaryTypeName","src":"24495:15:30"}],"id":1377,"name":"VariableDeclaration","src":"24495:23:30"},{"attributes":{"constant":false,"name":"_transferable_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1378,"name":"ElementaryTypeName","src":"24528:4:30"}],"id":1379,"name":"VariableDeclaration","src":"24528:19:30"},{"attributes":{"constant":false,"name":"_ens_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1380,"name":"ElementaryTypeName","src":"24557:7:30"}],"id":1381,"name":"VariableDeclaration","src":"24557:13:30"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1382,"name":"ElementaryTypeName","src":"24580:7:30"}],"id":1383,"name":"VariableDeclaration","src":"24580:28:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1384,"name":"ElementaryTypeName","src":"24618:7:30"}],"id":1385,"name":"VariableDeclaration","src":"24618:24:30"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1386,"name":"ElementaryTypeName","src":"24652:7:30"}],"id":1387,"name":"VariableDeclaration","src":"24652:21:30"},{"attributes":{"constant":false,"name":"_spendLimit_","scope":1413,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1388,"name":"ElementaryTypeName","src":"24683:7:30"}],"id":1389,"name":"VariableDeclaration","src":"24683:20:30"}],"id":1390,"name":"ParameterList","src":"24485:224:30"},{"attributes":{"parameters":[null]},"children":[],"id":1407,"name":"ParameterList","src":"24859:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2871,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1391,"name":"Identifier","src":"24717:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1381,"type":"address","value":"_ens_"},"id":1392,"name":"Identifier","src":"24731:5:30"}],"id":1393,"name":"ModifierInvocation","src":"24717:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":940,"type":"type(contract SpendLimit)","value":"SpendLimit"},"id":1394,"name":"Identifier","src":"24738:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1389,"type":"uint256","value":"_spendLimit_"},"id":1395,"name":"Identifier","src":"24749:12:30"}],"id":1396,"name":"ModifierInvocation","src":"24738:24:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3028,"type":"type(contract Ownable)","value":"Ownable"},"id":1397,"name":"Identifier","src":"24763:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1377,"type":"address payable","value":"_owner_"},"id":1398,"name":"Identifier","src":"24771:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1379,"type":"bool","value":"_transferable_"},"id":1399,"name":"Identifier","src":"24780:14:30"}],"id":1400,"name":"ModifierInvocation","src":"24763:32:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2826,"type":"type(contract Controllable)","value":"Controllable"},"id":1401,"name":"Identifier","src":"24796:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1385,"type":"bytes32","value":"_controllerNode_"},"id":1402,"name":"Identifier","src":"24809:16:30"}],"id":1403,"name":"ModifierInvocation","src":"24796:30:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1272,"type":"type(contract LoadLimit)","value":"LoadLimit"},"id":1404,"name":"Identifier","src":"24827:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1383,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1405,"name":"Identifier","src":"24837:20:30"}],"id":1406,"name":"ModifierInvocation","src":"24827:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1375,"type":"bytes32","value":"_licenceNode"},"id":1408,"name":"Identifier","src":"24869:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1387,"type":"bytes32","value":"_licenceNode_"},"id":1409,"name":"Identifier","src":"24884:13:30"}],"id":1410,"name":"Assignment","src":"24869:28:30"}],"id":1411,"name":"ExpressionStatement","src":"24869:28:30"}],"id":1412,"name":"Block","src":"24859:45:30"}],"id":1413,"name":"FunctionDefinition","src":"24474:430:30"},{"attributes":{"documentation":"@dev Checks if the value is not zero.","name":"isNotZero","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_value","scope":1426,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1414,"name":"ElementaryTypeName","src":"24975:7:30"}],"id":1415,"name":"VariableDeclaration","src":"24975:14:30"}],"id":1416,"name":"ParameterList","src":"24974:16:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d553a348030c1ee763b9cde2d3cc60fc831e78f559cd3758c25113c454c7f3","typeString":"literal_string \"value=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1417,"name":"Identifier","src":"25001:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1415,"type":"uint256","value":"_value"},"id":1418,"name":"Identifier","src":"25009:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1419,"name":"Literal","src":"25019:1:30"}],"id":1420,"name":"BinaryOperation","src":"25009:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"76616c75653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"value=0\"","value":"value=0"},"id":1421,"name":"Literal","src":"25022:9:30"}],"id":1422,"name":"FunctionCall","src":"25001:31:30"}],"id":1423,"name":"ExpressionStatement","src":"25001:31:30"},{"id":1424,"name":"PlaceholderStatement","src":"25042:1:30"}],"id":1425,"name":"Block","src":"24991:59:30"}],"id":1426,"name":"ModifierDefinition","src":"24956:94:30"},{"attributes":{"documentation":"@dev Ether can be deposited from any source, so this contract must be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":2183,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1427,"name":"ParameterList","src":"25161:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1428,"name":"ParameterList","src":"25181:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1341,"type":"function (address,uint256)","value":"Received"},"id":1429,"name":"Identifier","src":"25196:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1430,"name":"Identifier","src":"25205:3:30"}],"id":1431,"name":"MemberAccess","src":"25205:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1432,"name":"Identifier","src":"25217:3:30"}],"id":1433,"name":"MemberAccess","src":"25217:9:30"}],"id":1434,"name":"FunctionCall","src":"25196:31:30"}],"id":1435,"name":"EmitStatement","src":"25191:36:30"}],"id":1436,"name":"Block","src":"25181:53:30"}],"id":1437,"name":"FunctionDefinition","src":"25153:81:30"},{"attributes":{"documentation":"@dev This is a bulk transfer convenience function, used to migrate contracts.\n @notice If any of the transfers fail, this will revert.\n @param _to is the recipient's address, can't be the zero (0x0) address: transfer() will revert.\n @param _assets is an array of addresses of ERC20 tokens or 0x0 for ether.","implemented":true,"isConstructor":false,"kind":"function","name":"bulkTransfer","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1493,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1438,"name":"ElementaryTypeName","src":"25598:15:30"}],"id":1439,"name":"VariableDeclaration","src":"25598:19:30"},{"attributes":{"constant":false,"name":"_assets","scope":1493,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1440,"name":"ElementaryTypeName","src":"25619:7:30"}],"id":1441,"name":"ArrayTypeName","src":"25619:9:30"}],"id":1442,"name":"VariableDeclaration","src":"25619:26:30"}],"id":1443,"name":"ParameterList","src":"25597:49:30"},{"attributes":{"parameters":[null]},"children":[],"id":1446,"name":"ParameterList","src":"25672:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1444,"name":"Identifier","src":"25656:15:30"}],"id":1445,"name":"ModifierInvocation","src":"25656:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc6fe91796d2ae20b0ff36bc5dfbb8543f76fc0a4077e7ae85858f799173eb60","typeString":"literal_string \"asset array is empty\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1447,"name":"Identifier","src":"25737:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1448,"name":"Identifier","src":"25745:7:30"}],"id":1449,"name":"MemberAccess","src":"25745:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1450,"name":"Literal","src":"25763:1:30"}],"id":1451,"name":"BinaryOperation","src":"25745:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617373657420617272617920697320656d707479","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"asset array is empty\"","value":"asset array is empty"},"id":1452,"name":"Literal","src":"25766:22:30"}],"id":1453,"name":"FunctionCall","src":"25737:52:30"}],"id":1454,"name":"ExpressionStatement","src":"25737:52:30"},{"children":[{"attributes":{"assignments":[1456]},"children":[{"attributes":{"constant":false,"name":"i","scope":1486,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1455,"name":"ElementaryTypeName","src":"25866:7:30"}],"id":1456,"name":"VariableDeclaration","src":"25866:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1457,"name":"Literal","src":"25878:1:30"}],"id":1458,"name":"VariableDeclarationStatement","src":"25866:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"i"},"id":1459,"name":"Identifier","src":"25881:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1460,"name":"Identifier","src":"25885:7:30"}],"id":1461,"name":"MemberAccess","src":"25885:14:30"}],"id":1462,"name":"BinaryOperation","src":"25881:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"i"},"id":1463,"name":"Identifier","src":"25901:1:30"}],"id":1464,"name":"UnaryOperation","src":"25901:3:30"}],"id":1465,"name":"ExpressionStatement","src":"25901:3:30"},{"children":[{"attributes":{"assignments":[1467]},"children":[{"attributes":{"constant":false,"name":"amount","scope":1485,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1466,"name":"ElementaryTypeName","src":"25920:7:30"}],"id":1467,"name":"VariableDeclaration","src":"25920:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2729,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":1468,"name":"Identifier","src":"25937:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2183","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1469,"name":"ElementaryTypeNameExpression","src":"25946:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10203,"type":"contract Wallet","value":"this"},"id":1470,"name":"Identifier","src":"25954:4:30"}],"id":1471,"name":"FunctionCall","src":"25946:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1472,"name":"Identifier","src":"25961:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"i"},"id":1473,"name":"Identifier","src":"25969:1:30"}],"id":1474,"name":"IndexAccess","src":"25961:10:30"}],"id":1475,"name":"FunctionCall","src":"25937:35:30"}],"id":1476,"name":"VariableDeclarationStatement","src":"25920:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2182,"type":"function (address payable,address,uint256)","value":"transfer"},"id":1477,"name":"Identifier","src":"26046:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1439,"type":"address payable","value":"_to"},"id":1478,"name":"Identifier","src":"26055:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1479,"name":"Identifier","src":"26060:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"i"},"id":1480,"name":"Identifier","src":"26068:1:30"}],"id":1481,"name":"IndexAccess","src":"26060:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1467,"type":"uint256","value":"amount"},"id":1482,"name":"Identifier","src":"26072:6:30"}],"id":1483,"name":"FunctionCall","src":"26046:33:30"}],"id":1484,"name":"ExpressionStatement","src":"26046:33:30"}],"id":1485,"name":"Block","src":"25906:184:30"}],"id":1486,"name":"ForStatement","src":"25861:229:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":1307,"type":"function (address,address[] memory)","value":"BulkTransferred"},"id":1487,"name":"Identifier","src":"26105:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1439,"type":"address payable","value":"_to"},"id":1488,"name":"Identifier","src":"26121:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1442,"type":"address[] calldata","value":"_assets"},"id":1489,"name":"Identifier","src":"26126:7:30"}],"id":1490,"name":"FunctionCall","src":"26105:29:30"}],"id":1491,"name":"EmitStatement","src":"26100:34:30"}],"id":1492,"name":"Block","src":"25672:469:30"}],"id":1493,"name":"FunctionDefinition","src":"25576:565:30"},{"attributes":{"documentation":"@dev This function allows for the controller to relay transactions on the owner's behalf,\n the relayed message has to be signed by the owner.\n @param _nonce only used for relayed transactions, must match the wallet's relayNonce.\n @param _data abi encoded data payload.\n @param _signature signed prefix + data.","implemented":true,"isConstructor":false,"kind":"function","name":"executeRelayedTransaction","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_nonce","scope":1569,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1494,"name":"ElementaryTypeName","src":"26528:7:30"}],"id":1495,"name":"VariableDeclaration","src":"26528:14:30"},{"attributes":{"constant":false,"name":"_data","scope":1569,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1496,"name":"ElementaryTypeName","src":"26544:5:30"}],"id":1497,"name":"VariableDeclaration","src":"26544:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1569,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1498,"name":"ElementaryTypeName","src":"26566:5:30"}],"id":1499,"name":"VariableDeclaration","src":"26566:25:30"}],"id":1500,"name":"ParameterList","src":"26527:65:30"},{"attributes":{"parameters":[null]},"children":[],"id":1503,"name":"ParameterList","src":"26617:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2771,"type":"modifier ()","value":"onlyController"},"id":1501,"name":"Identifier","src":"26602:14:30"}],"id":1502,"name":"ModifierInvocation","src":"26602:14:30"},{"children":[{"attributes":{"assignments":[1505],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"id","scope":1568,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1504,"name":"ElementaryTypeName","src":"26797:7:30"}],"id":1505,"name":"VariableDeclaration","src":"26797:10:30"}],"id":1506,"name":"VariableDeclarationStatement","src":"26797:10:30"},{"attributes":{"externalReferences":[{"id":{"declaration":1505,"isOffset":false,"isSlot":false,"src":"26840:2:30","valueSize":1}}],"operations":"{ id := chainid() }"},"children":[],"id":1507,"name":"InlineAssembly","src":"26817:99:30"},{"attributes":{"assignments":[1509]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1568,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1508,"name":"ElementaryTypeName","src":"26925:7:30"}],"id":1509,"name":"VariableDeclaration","src":"26925:16:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toEthSignedMessageHash","referencedDeclaration":2282,"type":"function (bytes32) pure returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1510,"name":"Identifier","src":"26944:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_64973292d287a9bdfbf2540b56114a2ccf5255f1a0f38436d52dc69f44e83d8d","typeString":"literal_string \"monolith:\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":1511,"name":"Identifier","src":"26954:3:30"}],"id":1512,"name":"MemberAccess","src":"26954:16:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e6f6c6974683a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"monolith:\"","value":"monolith:"},"id":1513,"name":"Literal","src":"26971:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1505,"type":"uint256","value":"id"},"id":1514,"name":"Identifier","src":"26984:2:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2183","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1515,"name":"ElementaryTypeNameExpression","src":"26988:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10203,"type":"contract Wallet","value":"this"},"id":1516,"name":"Identifier","src":"26996:4:30"}],"id":1517,"name":"FunctionCall","src":"26988:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1495,"type":"uint256","value":"_nonce"},"id":1518,"name":"Identifier","src":"27003:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1497,"type":"bytes calldata","value":"_data"},"id":1519,"name":"Identifier","src":"27011:5:30"}],"id":1520,"name":"FunctionCall","src":"26954:63:30"}],"id":1521,"name":"FunctionCall","src":"26944:74:30"}],"id":1522,"name":"MemberAccess","src":"26944:97:30"}],"id":1523,"name":"FunctionCall","src":"26944:99:30"}],"id":1524,"name":"VariableDeclarationStatement","src":"26925:118:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1525,"name":"Identifier","src":"27111:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2116,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1526,"name":"Identifier","src":"27119:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1509,"type":"bytes32","value":"dataHash"},"id":1527,"name":"Identifier","src":"27136:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1499,"type":"bytes calldata","value":"_signature"},"id":1528,"name":"Identifier","src":"27146:10:30"}],"id":1529,"name":"FunctionCall","src":"27119:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1368,"type":"bytes4","value":"_EIP_1654"},"id":1530,"name":"Identifier","src":"27161:9:30"}],"id":1531,"name":"BinaryOperation","src":"27119:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1532,"name":"Literal","src":"27172:15:30"}],"id":1533,"name":"FunctionCall","src":"27111:77:30"}],"id":1534,"name":"ExpressionStatement","src":"27111:77:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_34adcd0a74b814374d2f97634e18f1e1bbbc6244d3bcc4bf9469772fc5d9d0ea","typeString":"literal_string \"tx replay\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1535,"name":"Identifier","src":"27283:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1495,"type":"uint256","value":"_nonce"},"id":1536,"name":"Identifier","src":"27291:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1373,"type":"uint256","value":"relayNonce"},"id":1537,"name":"Identifier","src":"27301:10:30"}],"id":1538,"name":"BinaryOperation","src":"27291:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"7478207265706c6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"tx replay\"","value":"tx replay"},"id":1539,"name":"Literal","src":"27313:11:30"}],"id":1540,"name":"FunctionCall","src":"27283:42:30"}],"id":1541,"name":"ExpressionStatement","src":"27283:42:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1591,"type":"function ()","value":"_increaseRelayNonce"},"id":1542,"name":"Identifier","src":"27335:19:30"}],"id":1543,"name":"FunctionCall","src":"27335:21:30"}],"id":1544,"name":"ExpressionStatement","src":"27335:21:30"},{"attributes":{"assignments":[1546,1548]},"children":[{"attributes":{"constant":false,"name":"success","scope":1568,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1545,"name":"ElementaryTypeName","src":"27424:4:30"}],"id":1546,"name":"VariableDeclaration","src":"27424:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":1568,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1547,"name":"ElementaryTypeName","src":"27438:5:30"}],"id":1548,"name":"VariableDeclaration","src":"27438:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2183","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1549,"name":"ElementaryTypeNameExpression","src":"27465:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10203,"type":"contract Wallet","value":"this"},"id":1550,"name":"Identifier","src":"27473:4:30"}],"id":1551,"name":"FunctionCall","src":"27465:13:30"}],"id":1552,"name":"MemberAccess","src":"27465:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1497,"type":"bytes calldata","value":"_data"},"id":1553,"name":"Identifier","src":"27484:5:30"}],"id":1554,"name":"FunctionCall","src":"27465:25:30"}],"id":1555,"name":"VariableDeclarationStatement","src":"27423:67:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1556,"name":"Identifier","src":"27500:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1546,"type":"bool","value":"success"},"id":1557,"name":"Identifier","src":"27508:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":1558,"name":"ElementaryTypeNameExpression","src":"27517:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1548,"type":"bytes memory","value":"returndata"},"id":1559,"name":"Identifier","src":"27524:10:30"}],"id":1560,"name":"FunctionCall","src":"27517:18:30"}],"id":1561,"name":"FunctionCall","src":"27500:36:30"}],"id":1562,"name":"ExpressionStatement","src":"27500:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1313,"type":"function (bytes memory,bytes memory)","value":"ExecutedRelayedTransaction"},"id":1563,"name":"Identifier","src":"27552:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1497,"type":"bytes calldata","value":"_data"},"id":1564,"name":"Identifier","src":"27579:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1548,"type":"bytes memory","value":"returndata"},"id":1565,"name":"Identifier","src":"27586:10:30"}],"id":1566,"name":"FunctionCall","src":"27552:45:30"}],"id":1567,"name":"EmitStatement","src":"27547:50:30"}],"id":1568,"name":"Block","src":"26617:987:30"}],"id":1569,"name":"FunctionDefinition","src":"26493:1111:30"},{"attributes":{"documentation":"@dev This allows the user to cancel a transaction that was unexpectedly delayed by the relayer","implemented":true,"isConstructor":false,"kind":"function","name":"increaseRelayNonce","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1570,"name":"ParameterList","src":"27740:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1573,"name":"ParameterList","src":"27762:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2930,"type":"modifier ()","value":"onlyOwner"},"id":1571,"name":"Identifier","src":"27752:9:30"}],"id":1572,"name":"ModifierInvocation","src":"27752:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1591,"type":"function ()","value":"_increaseRelayNonce"},"id":1574,"name":"Identifier","src":"27772:19:30"}],"id":1575,"name":"FunctionCall","src":"27772:21:30"}],"id":1576,"name":"ExpressionStatement","src":"27772:21:30"}],"id":1577,"name":"Block","src":"27762:38:30"}],"id":1578,"name":"FunctionDefinition","src":"27713:87:30"},{"attributes":{"documentation":"@dev This bumps the relayNonce and emits an event accordingly","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_increaseRelayNonce","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1579,"name":"ParameterList","src":"27904:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1580,"name":"ParameterList","src":"27916:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1373,"type":"uint256","value":"relayNonce"},"id":1581,"name":"Identifier","src":"27926:10:30"}],"id":1582,"name":"UnaryOperation","src":"27926:12:30"}],"id":1583,"name":"ExpressionStatement","src":"27926:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1329,"type":"function (address,uint256)","value":"IncreasedRelayNonce"},"id":1584,"name":"Identifier","src":"27954:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1585,"name":"Identifier","src":"27974:3:30"}],"id":1586,"name":"MemberAccess","src":"27974:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1373,"type":"uint256","value":"relayNonce"},"id":1587,"name":"Identifier","src":"27986:10:30"}],"id":1588,"name":"FunctionCall","src":"27954:43:30"}],"id":1589,"name":"EmitStatement","src":"27949:48:30"}],"id":1590,"name":"Block","src":"27916:88:30"}],"id":1591,"name":"FunctionDefinition","src":"27876:128:30"},{"attributes":{"documentation":"@dev Implements EIP-1271: receives the raw data (bytes)\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":1622,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1592,"name":"ElementaryTypeName","src":"28325:5:30"}],"id":1593,"name":"VariableDeclaration","src":"28325:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1622,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1594,"name":"ElementaryTypeName","src":"28347:5:30"}],"id":1595,"name":"VariableDeclaration","src":"28347:25:30"}],"id":1596,"name":"ParameterList","src":"28324:49:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1622,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1597,"name":"ElementaryTypeName","src":"28397:6:30"}],"id":1598,"name":"VariableDeclaration","src":"28397:6:30"}],"id":1599,"name":"ParameterList","src":"28396:8:30"},{"children":[{"attributes":{"assignments":[1601]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1621,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1600,"name":"ElementaryTypeName","src":"28415:7:30"}],"id":1601,"name":"VariableDeclaration","src":"28415:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10103,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1602,"name":"Identifier","src":"28434:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"abi","value":"abi"},"id":1603,"name":"Identifier","src":"28444:3:30"}],"id":1604,"name":"MemberAccess","src":"28444:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1593,"type":"bytes calldata","value":"_data"},"id":1605,"name":"Identifier","src":"28461:5:30"}],"id":1606,"name":"FunctionCall","src":"28444:23:30"}],"id":1607,"name":"FunctionCall","src":"28434:34:30"}],"id":1608,"name":"VariableDeclarationStatement","src":"28415:53:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1609,"name":"Identifier","src":"28533:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2116,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1610,"name":"Identifier","src":"28541:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1601,"type":"bytes32","value":"dataHash"},"id":1611,"name":"Identifier","src":"28558:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1595,"type":"bytes calldata","value":"_signature"},"id":1612,"name":"Identifier","src":"28568:10:30"}],"id":1613,"name":"FunctionCall","src":"28541:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1368,"type":"bytes4","value":"_EIP_1654"},"id":1614,"name":"Identifier","src":"28583:9:30"}],"id":1615,"name":"BinaryOperation","src":"28541:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1616,"name":"Literal","src":"28594:15:30"}],"id":1617,"name":"FunctionCall","src":"28533:77:30"}],"id":1618,"name":"ExpressionStatement","src":"28533:77:30"},{"attributes":{"functionReturnParameters":1599},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"bytes4","value":"_EIP_1271"},"id":1619,"name":"Identifier","src":"28627:9:30"}],"id":1620,"name":"Return","src":"28620:16:30"}],"id":1621,"name":"Block","src":"28405:238:30"}],"id":1622,"name":"FunctionDefinition","src":"28299:344:30"},{"attributes":{"documentation":"@return licence contract node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceNode","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1623,"name":"ParameterList","src":"28726:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1630,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1624,"name":"ElementaryTypeName","src":"28752:7:30"}],"id":1625,"name":"VariableDeclaration","src":"28752:7:30"}],"id":1626,"name":"ParameterList","src":"28751:9:30"},{"children":[{"attributes":{"functionReturnParameters":1626},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1375,"type":"bytes32","value":"_licenceNode"},"id":1627,"name":"Identifier","src":"28778:12:30"}],"id":1628,"name":"Return","src":"28771:19:30"}],"id":1629,"name":"Block","src":"28761:36:30"}],"id":1630,"name":"FunctionDefinition","src":"28706:91:30"},{"attributes":{"documentation":"@dev Load a token card with the specified asset amount.\n @dev the amount send should be inclusive of the percent licence.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"loadTokenCard","scope":2183,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":1706,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1631,"name":"ElementaryTypeName","src":"29116:7:30"}],"id":1632,"name":"VariableDeclaration","src":"29116:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":1706,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1633,"name":"ElementaryTypeName","src":"29132:7:30"}],"id":1634,"name":"VariableDeclaration","src":"29132:15:30"}],"id":1635,"name":"ParameterList","src":"29115:33:30"},{"attributes":{"parameters":[null]},"children":[],"id":1638,"name":"ParameterList","src":"29182:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1636,"name":"Identifier","src":"29166:15:30"}],"id":1637,"name":"ModifierInvocation","src":"29166:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96e30e7359d705e51778d9ae05179a78cb34ab813d824e29a3cd9fe209b16a67","typeString":"literal_string \"token not loadable\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1639,"name":"Identifier","src":"29261:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3230,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":1640,"name":"Identifier","src":"29269:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1641,"name":"Identifier","src":"29286:6:30"}],"id":1642,"name":"FunctionCall","src":"29269:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f74206c6f616461626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not loadable\"","value":"token not loadable"},"id":1643,"name":"Literal","src":"29295:20:30"}],"id":1644,"name":"FunctionCall","src":"29261:55:30"}],"id":1645,"name":"ExpressionStatement","src":"29261:55:30"},{"attributes":{"assignments":[1647]},"children":[{"attributes":{"constant":false,"name":"stablecoinValue","scope":1705,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1646,"name":"ElementaryTypeName","src":"29379:7:30"}],"id":1647,"name":"VariableDeclaration","src":"29379:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1962,"type":"function (address,uint256) view returns (uint256)","value":"convertToStablecoin"},"id":1648,"name":"Identifier","src":"29405:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1649,"name":"Identifier","src":"29425:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1650,"name":"Identifier","src":"29433:7:30"}],"id":1651,"name":"FunctionCall","src":"29405:36:30"}],"id":1652,"name":"VariableDeclarationStatement","src":"29379:62:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1124,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1653,"name":"Identifier","src":"29571:10:30"}],"id":1655,"name":"MemberAccess","src":"29571:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1647,"type":"uint256","value":"stablecoinValue"},"id":1656,"name":"Identifier","src":"29596:15:30"}],"id":1657,"name":"FunctionCall","src":"29571:41:30"}],"id":1658,"name":"ExpressionStatement","src":"29571:41:30"},{"attributes":{"assignments":[1660]},"children":[{"attributes":{"constant":false,"name":"licenceAddress","scope":1705,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1659,"name":"ElementaryTypeName","src":"29669:7:30"}],"id":1660,"name":"VariableDeclaration","src":"29669:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":2870,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1661,"name":"Identifier","src":"29694:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1375,"type":"bytes32","value":"_licenceNode"},"id":1662,"name":"Identifier","src":"29706:12:30"}],"id":1663,"name":"FunctionCall","src":"29694:25:30"}],"id":1664,"name":"VariableDeclarationStatement","src":"29669:50:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1665,"name":"Identifier","src":"29733:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1666,"name":"ElementaryTypeNameExpression","src":"29743:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1667,"name":"Literal","src":"29751:1:30"}],"id":1668,"name":"FunctionCall","src":"29743:10:30"}],"id":1669,"name":"BinaryOperation","src":"29733:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeApprove","referencedDeclaration":2445,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":1670,"name":"Identifier","src":"29769:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1671,"name":"Identifier","src":"29775:6:30"}],"id":1672,"name":"FunctionCall","src":"29769:13:30"}],"id":1673,"name":"MemberAccess","src":"29769:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1660,"type":"address","value":"licenceAddress"},"id":1674,"name":"Identifier","src":"29795:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1675,"name":"Identifier","src":"29811:7:30"}],"id":1676,"name":"FunctionCall","src":"29769:50:30"}],"id":1677,"name":"ExpressionStatement","src":"29769:50:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":3299,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3305,"type":"type(contract ILicence)","value":"ILicence"},"id":1678,"name":"Identifier","src":"29833:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1660,"type":"address","value":"licenceAddress"},"id":1679,"name":"Identifier","src":"29842:14:30"}],"id":1680,"name":"FunctionCall","src":"29833:24:30"}],"id":1681,"name":"MemberAccess","src":"29833:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1682,"name":"Identifier","src":"29863:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1683,"name":"Identifier","src":"29871:7:30"}],"id":1684,"name":"FunctionCall","src":"29833:46:30"}],"id":1685,"name":"ExpressionStatement","src":"29833:46:30"}],"id":1686,"name":"Block","src":"29755:135:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (address,uint256) payable external","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (address,uint256) payable external)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":3299,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3305,"type":"type(contract ILicence)","value":"ILicence"},"id":1687,"name":"Identifier","src":"29910:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1660,"type":"address","value":"licenceAddress"},"id":1688,"name":"Identifier","src":"29919:14:30"}],"id":1689,"name":"FunctionCall","src":"29910:24:30"}],"id":1690,"name":"MemberAccess","src":"29910:29:30"}],"id":1691,"name":"MemberAccess","src":"29910:35:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1692,"name":"Identifier","src":"29946:7:30"}],"id":1693,"name":"FunctionCall","src":"29910:44:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1694,"name":"Identifier","src":"29955:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1695,"name":"Identifier","src":"29963:7:30"}],"id":1696,"name":"FunctionCall","src":"29910:61:30"}],"id":1697,"name":"ExpressionStatement","src":"29910:61:30"}],"id":1698,"name":"Block","src":"29896:86:30"}],"id":1699,"name":"IfStatement","src":"29729:253:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1335,"type":"function (address,uint256)","value":"LoadedTokenCard"},"id":1700,"name":"Identifier","src":"29997:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1632,"type":"address","value":"_asset"},"id":1701,"name":"Identifier","src":"30013:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1634,"type":"uint256","value":"_amount"},"id":1702,"name":"Identifier","src":"30021:7:30"}],"id":1703,"name":"FunctionCall","src":"29997:32:30"}],"id":1704,"name":"EmitStatement","src":"29992:37:30"}],"id":1705,"name":"Block","src":"29182:854:30"}],"id":1706,"name":"FunctionDefinition","src":"29093:943:30"},{"attributes":{"documentation":"@dev Checks for interface support based on ERC165.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2183,"stateMutability":"view","superFunction":2292,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_interfaceID","scope":1718,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1707,"name":"ElementaryTypeName","src":"30128:6:30"}],"id":1708,"name":"VariableDeclaration","src":"30128:19:30"}],"id":1709,"name":"ParameterList","src":"30127:21:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1718,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1710,"name":"ElementaryTypeName","src":"30172:4:30"}],"id":1711,"name":"VariableDeclaration","src":"30172:4:30"}],"id":1712,"name":"ParameterList","src":"30171:6:30"},{"children":[{"attributes":{"functionReturnParameters":1712},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1708,"type":"bytes4","value":"_interfaceID"},"id":1713,"name":"Identifier","src":"30195:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1371,"type":"bytes4","value":"_ERC165_INTERFACE_ID"},"id":1714,"name":"Identifier","src":"30211:20:30"}],"id":1715,"name":"BinaryOperation","src":"30195:36:30"}],"id":1716,"name":"Return","src":"30188:43:30"}],"id":1717,"name":"Block","src":"30178:60:30"}],"id":1718,"name":"FunctionDefinition","src":"30101:137:30"},{"attributes":{"documentation":"@dev Refill owner's gas balance, revert if the transaction amount is too large\n @param _amount is the amount of ether to transfer to the owner account in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"topUpGas","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1749,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1719,"name":"ElementaryTypeName","src":"30436:7:30"}],"id":1720,"name":"VariableDeclaration","src":"30436:15:30"}],"id":1721,"name":"ParameterList","src":"30435:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1727,"name":"ParameterList","src":"30503:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1426,"type":"modifier (uint256)","value":"isNotZero"},"id":1722,"name":"Identifier","src":"30462:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"uint256","value":"_amount"},"id":1723,"name":"Identifier","src":"30472:7:30"}],"id":1724,"name":"ModifierInvocation","src":"30462:18:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":35,"type":"modifier ()","value":"onlyOwnerOrController"},"id":1725,"name":"Identifier","src":"30481:21:30"}],"id":1726,"name":"ModifierInvocation","src":"30481:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1728,"name":"Identifier","src":"30633:14:30"}],"id":1730,"name":"MemberAccess","src":"30633:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"uint256","value":"_amount"},"id":1731,"name":"Identifier","src":"30662:7:30"}],"id":1732,"name":"FunctionCall","src":"30633:37:30"}],"id":1733,"name":"ExpressionStatement","src":"30633:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3015,"type":"function () view returns (address payable)","value":"owner"},"id":1734,"name":"Identifier","src":"30717:5:30"}],"id":1735,"name":"FunctionCall","src":"30717:7:30"}],"id":1736,"name":"MemberAccess","src":"30717:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"uint256","value":"_amount"},"id":1737,"name":"Identifier","src":"30734:7:30"}],"id":1738,"name":"FunctionCall","src":"30717:25:30"}],"id":1739,"name":"ExpressionStatement","src":"30717:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1349,"type":"function (address,address,uint256)","value":"ToppedUpGas"},"id":1740,"name":"Identifier","src":"30795:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10109,"type":"msg","value":"msg"},"id":1741,"name":"Identifier","src":"30807:3:30"}],"id":1742,"name":"MemberAccess","src":"30807:10:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3015,"type":"function () view returns (address payable)","value":"owner"},"id":1743,"name":"Identifier","src":"30819:5:30"}],"id":1744,"name":"FunctionCall","src":"30819:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"uint256","value":"_amount"},"id":1745,"name":"Identifier","src":"30828:7:30"}],"id":1746,"name":"FunctionCall","src":"30795:41:30"}],"id":1747,"name":"EmitStatement","src":"30790:46:30"}],"id":1748,"name":"Block","src":"30503:340:30"}],"id":1749,"name":"FunctionDefinition","src":"30418:425:30"},{"attributes":{"documentation":"@dev This function allows for the wallet to send a batch of transactions instead of one,\n it calls executeTransaction() so that the daily limit is enforced.\n @param _transactionBatch data encoding the transactions to be sent,\n following executeTransaction's format i.e. (destination, value, data)","implemented":true,"isConstructor":false,"kind":"function","name":"batchExecuteTransaction","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_transactionBatch","scope":1832,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1750,"name":"ElementaryTypeName","src":"31208:5:30"}],"id":1751,"name":"VariableDeclaration","src":"31208:30:30"}],"id":1752,"name":"ParameterList","src":"31207:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":1755,"name":"ParameterList","src":"31263:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1753,"name":"Identifier","src":"31247:15:30"}],"id":1754,"name":"ModifierInvocation","src":"31247:15:30"},{"children":[{"attributes":{"assignments":[1757]},"children":[{"attributes":{"constant":false,"name":"batchLength","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1756,"name":"ElementaryTypeName","src":"31273:7:30"}],"id":1757,"name":"VariableDeclaration","src":"31273:19:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1751,"type":"bytes memory","value":"_transactionBatch"},"id":1758,"name":"Identifier","src":"31295:17:30"}],"id":1759,"name":"MemberAccess","src":"31295:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1760,"name":"Literal","src":"31322:2:30"}],"id":1761,"name":"BinaryOperation","src":"31295:29:30"}],"id":1762,"name":"VariableDeclarationStatement","src":"31273:51:30"},{"attributes":{"assignments":[1764]},"children":[{"attributes":{"constant":false,"name":"remainingBytesLength","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1763,"name":"ElementaryTypeName","src":"31368:7:30"}],"id":1764,"name":"VariableDeclaration","src":"31368:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1751,"type":"bytes memory","value":"_transactionBatch"},"id":1765,"name":"Identifier","src":"31399:17:30"}],"id":1766,"name":"MemberAccess","src":"31399:24:30"}],"id":1767,"name":"VariableDeclarationStatement","src":"31368:55:30"},{"attributes":{"assignments":[1769]},"children":[{"attributes":{"constant":false,"name":"pos","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1768,"name":"ElementaryTypeName","src":"31468:7:30"}],"id":1769,"name":"VariableDeclaration","src":"31468:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":1770,"name":"Literal","src":"31482:2:30"}],"id":1771,"name":"VariableDeclarationStatement","src":"31468:16:30"},{"attributes":{"assignments":[1773],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"destination","scope":1831,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1772,"name":"ElementaryTypeName","src":"31569:7:30"}],"id":1773,"name":"VariableDeclaration","src":"31569:19:30"}],"id":1774,"name":"VariableDeclarationStatement","src":"31569:19:30"},{"attributes":{"assignments":[1776],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1775,"name":"ElementaryTypeName","src":"31621:7:30"}],"id":1776,"name":"VariableDeclaration","src":"31621:13:30"}],"id":1777,"name":"VariableDeclarationStatement","src":"31621:13:30"},{"attributes":{"assignments":[1779],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dataLength","scope":1831,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1778,"name":"ElementaryTypeName","src":"31665:7:30"}],"id":1779,"name":"VariableDeclaration","src":"31665:18:30"}],"id":1780,"name":"VariableDeclarationStatement","src":"31665:18:30"},{"attributes":{"assignments":[1782],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"data","scope":1831,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1781,"name":"ElementaryTypeName","src":"31723:5:30"}],"id":1782,"name":"VariableDeclaration","src":"31723:17:30"}],"id":1783,"name":"VariableDeclarationStatement","src":"31723:17:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"pos"},"id":1784,"name":"Identifier","src":"31771:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1757,"type":"uint256","value":"batchLength"},"id":1785,"name":"Identifier","src":"31777:11:30"}],"id":1786,"name":"BinaryOperation","src":"31771:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"remainingBytesLength"},"id":1787,"name":"Identifier","src":"31914:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":2617,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1764,"type":"uint256","value":"remainingBytesLength"},"id":1788,"name":"Identifier","src":"31937:20:30"}],"id":1789,"name":"MemberAccess","src":"31937:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":1790,"name":"Literal","src":"31962:2:30"}],"id":1791,"name":"FunctionCall","src":"31937:28:30"}],"id":1792,"name":"Assignment","src":"31914:51:30"}],"id":1793,"name":"ExpressionStatement","src":"31914:51:30"},{"attributes":{"externalReferences":[{"destination":{"declaration":1773,"isOffset":false,"isSlot":false,"src":"32122:11:30","valueSize":1}},{"_transactionBatch":{"declaration":1751,"isOffset":false,"isSlot":false,"src":"32155:17:30","valueSize":1}},{"pos":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"32174:3:30","valueSize":1}},{"dataLength":{"declaration":1779,"isOffset":false,"isSlot":false,"src":"32481:10:30","valueSize":1}},{"value":{"declaration":1776,"isOffset":false,"isSlot":false,"src":"32265:5:30","valueSize":1}},{"pos":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"32307:3:30","valueSize":1}},{"_transactionBatch":{"declaration":1751,"isOffset":false,"isSlot":false,"src":"32284:17:30","valueSize":1}},{"data":{"declaration":1782,"isOffset":false,"isSlot":false,"src":"32555:4:30","valueSize":1}},{"pos":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"32528:3:30","valueSize":1}},{"_transactionBatch":{"declaration":1751,"isOffset":false,"isSlot":false,"src":"32505:17:30","valueSize":1}},{"pos":{"declaration":1769,"isOffset":false,"isSlot":false,"src":"32590:3:30","valueSize":1}},{"_transactionBatch":{"declaration":1751,"isOffset":false,"isSlot":false,"src":"32567:17:30","valueSize":1}}],"operations":"{\n destination := shr(96, mload(add(_transactionBatch, pos)))\n value := mload(add(_transactionBatch, add(pos, 20)))\n dataLength := mload(add(_transactionBatch, add(pos, 52)))\n data := add(_transactionBatch, add(pos, 52))\n}"},"children":[],"id":1794,"name":"InlineAssembly","src":"31979:634:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"pos"},"id":1795,"name":"Identifier","src":"32703:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":2592,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"pos"},"id":1796,"name":"Identifier","src":"32709:3:30"}],"id":1797,"name":"MemberAccess","src":"32709:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1779,"type":"uint256","value":"dataLength"},"id":1798,"name":"Identifier","src":"32717:10:30"}],"id":1799,"name":"FunctionCall","src":"32709:19:30"}],"id":1800,"name":"MemberAccess","src":"32709:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":1801,"name":"Literal","src":"32733:2:30"}],"id":1802,"name":"FunctionCall","src":"32709:27:30"}],"id":1803,"name":"Assignment","src":"32703:33:30"}],"id":1804,"name":"ExpressionStatement","src":"32703:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d4d7e869602fd07d121f8992a03b812eac20f2f3831f876bce9993aae915a2b","typeString":"literal_string \"out of bounds\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1805,"name":"Identifier","src":"32841:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1769,"type":"uint256","value":"pos"},"id":1806,"name":"Identifier","src":"32849:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1757,"type":"uint256","value":"batchLength"},"id":1807,"name":"Identifier","src":"32856:11:30"}],"id":1808,"name":"BinaryOperation","src":"32849:18:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f6620626f756e6473","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of bounds\"","value":"out of bounds"},"id":1809,"name":"Literal","src":"32869:15:30"}],"id":1810,"name":"FunctionCall","src":"32841:44:30"}],"id":1811,"name":"ExpressionStatement","src":"32841:44:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1779,"type":"uint256","value":"dataLength"},"id":1812,"name":"Identifier","src":"32956:10:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1813,"name":"Literal","src":"32970:1:30"}],"id":1814,"name":"BinaryOperation","src":"32956:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"bytes memory","value":"data"},"id":1815,"name":"Identifier","src":"32991:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":1816,"name":"ElementaryTypeNameExpression","src":"32998:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":1817,"name":"Literal","src":"33004:2:30"}],"id":1818,"name":"FunctionCall","src":"32998:9:30"}],"id":1819,"name":"Assignment","src":"32991:16:30"}],"id":1820,"name":"ExpressionStatement","src":"32991:16:30"}],"id":1821,"name":"Block","src":"32973:49:30"}],"id":1822,"name":"IfStatement","src":"32952:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"function (address,uint256,bytes memory) returns (bytes memory)","value":"executeTransaction"},"id":1823,"name":"Identifier","src":"33130:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1773,"type":"address","value":"destination"},"id":1824,"name":"Identifier","src":"33149:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1776,"type":"uint256","value":"value"},"id":1825,"name":"Identifier","src":"33162:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"bytes memory","value":"data"},"id":1826,"name":"Identifier","src":"33169:4:30"}],"id":1827,"name":"FunctionCall","src":"33130:44:30"}],"id":1828,"name":"ExpressionStatement","src":"33130:44:30"}],"id":1829,"name":"Block","src":"31790:1395:30"}],"id":1830,"name":"WhileStatement","src":"31764:1421:30"}],"id":1831,"name":"Block","src":"31263:1928:30"}],"id":1832,"name":"FunctionDefinition","src":"31175:2016:30"},{"attributes":{"documentation":"@dev Convert ERC20 token amount to the corresponding ether amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToEther","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1872,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1833,"name":"ElementaryTypeName","src":"33402:7:30"}],"id":1834,"name":"VariableDeclaration","src":"33402:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":1872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1835,"name":"ElementaryTypeName","src":"33418:7:30"}],"id":1836,"name":"VariableDeclaration","src":"33418:15:30"}],"id":1837,"name":"ParameterList","src":"33401:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1872,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1838,"name":"ElementaryTypeName","src":"33456:7:30"}],"id":1839,"name":"VariableDeclaration","src":"33456:7:30"}],"id":1840,"name":"ParameterList","src":"33455:9:30"},{"children":[{"attributes":{"assignments":[null,1842,1844,1846,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":1871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1841,"name":"ElementaryTypeName","src":"33545:7:30"}],"id":1842,"name":"VariableDeclaration","src":"33545:17:30"},{"attributes":{"constant":false,"name":"rate","scope":1871,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1843,"name":"ElementaryTypeName","src":"33564:7:30"}],"id":1844,"name":"VariableDeclaration","src":"33564:12:30"},{"attributes":{"constant":false,"name":"available","scope":1871,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1845,"name":"ElementaryTypeName","src":"33578:4:30"}],"id":1846,"name":"VariableDeclaration","src":"33578:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":1847,"name":"Identifier","src":"33602:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"address","value":"_token"},"id":1848,"name":"Identifier","src":"33616:6:30"}],"id":1849,"name":"FunctionCall","src":"33602:21:30"}],"id":1850,"name":"VariableDeclarationStatement","src":"33542:81:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1846,"type":"bool","value":"available"},"id":1851,"name":"Identifier","src":"33703:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1852,"name":"Identifier","src":"33728:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1844,"type":"uint256","value":"rate"},"id":1853,"name":"Identifier","src":"33736:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1854,"name":"Literal","src":"33744:1:30"}],"id":1855,"name":"BinaryOperation","src":"33736:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":1856,"name":"Literal","src":"33747:8:30"}],"id":1857,"name":"FunctionCall","src":"33728:28:30"}],"id":1858,"name":"ExpressionStatement","src":"33728:28:30"},{"attributes":{"functionReturnParameters":1840},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2676,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2651,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1836,"type":"uint256","value":"_amount"},"id":1859,"name":"Identifier","src":"33861:7:30"}],"id":1860,"name":"MemberAccess","src":"33861:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1844,"type":"uint256","value":"rate"},"id":1861,"name":"Identifier","src":"33873:4:30"}],"id":1862,"name":"FunctionCall","src":"33861:17:30"}],"id":1863,"name":"MemberAccess","src":"33861:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1842,"type":"uint256","value":"magnitude"},"id":1864,"name":"Identifier","src":"33883:9:30"}],"id":1865,"name":"FunctionCall","src":"33861:32:30"}],"id":1866,"name":"Return","src":"33854:39:30"}],"id":1867,"name":"Block","src":"33714:190:30"}],"id":1868,"name":"IfStatement","src":"33699:205:30"},{"attributes":{"functionReturnParameters":1840},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1869,"name":"Literal","src":"33920:1:30"}],"id":1870,"name":"Return","src":"33913:8:30"}],"id":1871,"name":"Block","src":"33465:463:30"}],"id":1872,"name":"FunctionDefinition","src":"33378:550:30"},{"attributes":{"documentation":"@dev Convert ether or ERC20 token amount to the corresponding stablecoin amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToStablecoin","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":1962,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1873,"name":"ElementaryTypeName","src":"34158:7:30"}],"id":1874,"name":"VariableDeclaration","src":"34158:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":1962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1875,"name":"ElementaryTypeName","src":"34174:7:30"}],"id":1876,"name":"VariableDeclaration","src":"34174:15:30"}],"id":1877,"name":"ParameterList","src":"34157:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1878,"name":"ElementaryTypeName","src":"34212:7:30"}],"id":1879,"name":"VariableDeclaration","src":"34212:7:30"}],"id":1880,"name":"ParameterList","src":"34211:9:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"address","value":"_token"},"id":1881,"name":"Identifier","src":"34332:6:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3244,"type":"function () view returns (address)","value":"_stablecoin"},"id":1882,"name":"Identifier","src":"34342:11:30"}],"id":1883,"name":"FunctionCall","src":"34342:13:30"}],"id":1884,"name":"BinaryOperation","src":"34332:23:30"},{"children":[{"attributes":{"functionReturnParameters":1880},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1876,"type":"uint256","value":"_amount"},"id":1885,"name":"Identifier","src":"34378:7:30"}],"id":1886,"name":"Return","src":"34371:14:30"}],"id":1887,"name":"Block","src":"34357:39:30"}],"id":1888,"name":"IfStatement","src":"34328:68:30"},{"attributes":{"assignments":[1890]},"children":[{"attributes":{"constant":false,"name":"amountToSend","scope":1961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1889,"name":"ElementaryTypeName","src":"34405:7:30"}],"id":1890,"name":"VariableDeclaration","src":"34405:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1876,"type":"uint256","value":"_amount"},"id":1891,"name":"Identifier","src":"34428:7:30"}],"id":1892,"name":"VariableDeclarationStatement","src":"34405:30:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"address","value":"_token"},"id":1893,"name":"Identifier","src":"34482:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1894,"name":"ElementaryTypeNameExpression","src":"34492:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1895,"name":"Literal","src":"34500:1:30"}],"id":1896,"name":"FunctionCall","src":"34492:10:30"}],"id":1897,"name":"BinaryOperation","src":"34482:20:30"},{"children":[{"attributes":{"assignments":[null,1899,1901,1903,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":1930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1898,"name":"ElementaryTypeName","src":"34654:7:30"}],"id":1899,"name":"VariableDeclaration","src":"34654:17:30"},{"attributes":{"constant":false,"name":"rate","scope":1930,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1900,"name":"ElementaryTypeName","src":"34673:7:30"}],"id":1901,"name":"VariableDeclaration","src":"34673:12:30"},{"attributes":{"constant":false,"name":"available","scope":1930,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1902,"name":"ElementaryTypeName","src":"34687:4:30"}],"id":1903,"name":"VariableDeclaration","src":"34687:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3083,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":1904,"name":"Identifier","src":"34711:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"address","value":"_token"},"id":1905,"name":"Identifier","src":"34725:6:30"}],"id":1906,"name":"FunctionCall","src":"34711:21:30"}],"id":1907,"name":"VariableDeclarationStatement","src":"34651:81:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1908,"name":"Identifier","src":"34835:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1903,"type":"bool","value":"available"},"id":1909,"name":"Identifier","src":"34843:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":1910,"name":"Literal","src":"34854:21:30"}],"id":1911,"name":"FunctionCall","src":"34835:41:30"}],"id":1912,"name":"ExpressionStatement","src":"34835:41:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1913,"name":"Identifier","src":"34890:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1901,"type":"uint256","value":"rate"},"id":1914,"name":"Identifier","src":"34898:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1915,"name":"Literal","src":"34906:1:30"}],"id":1916,"name":"BinaryOperation","src":"34898:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":1917,"name":"Literal","src":"34909:8:30"}],"id":1918,"name":"FunctionCall","src":"34890:28:30"}],"id":1919,"name":"ExpressionStatement","src":"34890:28:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"amountToSend"},"id":1920,"name":"Identifier","src":"35020:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2676,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2651,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1876,"type":"uint256","value":"_amount"},"id":1921,"name":"Identifier","src":"35035:7:30"}],"id":1922,"name":"MemberAccess","src":"35035:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1901,"type":"uint256","value":"rate"},"id":1923,"name":"Identifier","src":"35047:4:30"}],"id":1924,"name":"FunctionCall","src":"35035:17:30"}],"id":1925,"name":"MemberAccess","src":"35035:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1899,"type":"uint256","value":"magnitude"},"id":1926,"name":"Identifier","src":"35057:9:30"}],"id":1927,"name":"FunctionCall","src":"35035:32:30"}],"id":1928,"name":"Assignment","src":"35020:47:30"}],"id":1929,"name":"ExpressionStatement","src":"35020:47:30"}],"id":1930,"name":"Block","src":"34504:574:30"}],"id":1931,"name":"IfStatement","src":"34478:600:30"},{"attributes":{"assignments":[null,1933,1935,1937,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1932,"name":"ElementaryTypeName","src":"35195:7:30"}],"id":1933,"name":"VariableDeclaration","src":"35195:27:30"},{"attributes":{"constant":false,"name":"stablecoinRate","scope":1961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1934,"name":"ElementaryTypeName","src":"35224:7:30"}],"id":1935,"name":"VariableDeclaration","src":"35224:22:30"},{"attributes":{"constant":false,"name":"stablecoinAvailable","scope":1961,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1936,"name":"ElementaryTypeName","src":"35248:4:30"}],"id":1937,"name":"VariableDeclaration","src":"35248:24:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3109,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1938,"name":"Identifier","src":"35282:18:30"}],"id":1939,"name":"FunctionCall","src":"35282:20:30"}],"id":1940,"name":"VariableDeclarationStatement","src":"35192:110:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1941,"name":"Identifier","src":"35360:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1937,"type":"bool","value":"stablecoinAvailable"},"id":1942,"name":"Identifier","src":"35368:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":1943,"name":"Literal","src":"35389:21:30"}],"id":1944,"name":"FunctionCall","src":"35360:51:30"}],"id":1945,"name":"ExpressionStatement","src":"35360:51:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18bfbbfdaee82cb0eebcce67c25e7747234386e0bcace876720c3090918b5d3f","typeString":"literal_string \"stablecoin rate=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":1946,"name":"Identifier","src":"35421:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1935,"type":"uint256","value":"stablecoinRate"},"id":1947,"name":"Identifier","src":"35429:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1948,"name":"Literal","src":"35447:1:30"}],"id":1949,"name":"BinaryOperation","src":"35429:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"737461626c65636f696e20726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"stablecoin rate=0\"","value":"stablecoin rate=0"},"id":1950,"name":"Literal","src":"35450:19:30"}],"id":1951,"name":"FunctionCall","src":"35421:49:30"}],"id":1952,"name":"ExpressionStatement","src":"35421:49:30"},{"attributes":{"functionReturnParameters":1880},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":2676,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":2651,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1890,"type":"uint256","value":"amountToSend"},"id":1953,"name":"Identifier","src":"35605:12:30"}],"id":1954,"name":"MemberAccess","src":"35605:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1933,"type":"uint256","value":"stablecoinMagnitude"},"id":1955,"name":"Identifier","src":"35622:19:30"}],"id":1956,"name":"FunctionCall","src":"35605:37:30"}],"id":1957,"name":"MemberAccess","src":"35605:41:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1935,"type":"uint256","value":"stablecoinRate"},"id":1958,"name":"Identifier","src":"35647:14:30"}],"id":1959,"name":"FunctionCall","src":"35605:57:30"}],"id":1960,"name":"Return","src":"35598:64:30"}],"id":1961,"name":"Block","src":"34221:1448:30"}],"id":1962,"name":"FunctionDefinition","src":"34129:1540:30"},{"attributes":{"documentation":"@dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses\n @param _destination address of the transaction\n @param _value ETH amount in wei\n @param _data transaction payload binary","implemented":true,"isConstructor":false,"kind":"function","name":"executeTransaction","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":2090,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1963,"name":"ElementaryTypeName","src":"35957:7:30"}],"id":1964,"name":"VariableDeclaration","src":"35957:20:30"},{"attributes":{"constant":false,"name":"_value","scope":2090,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1965,"name":"ElementaryTypeName","src":"35979:7:30"}],"id":1966,"name":"VariableDeclaration","src":"35979:14:30"},{"attributes":{"constant":false,"name":"_data","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1967,"name":"ElementaryTypeName","src":"35995:5:30"}],"id":1968,"name":"VariableDeclaration","src":"35995:18:30"}],"id":1969,"name":"ParameterList","src":"35956:58:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2090,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1972,"name":"ElementaryTypeName","src":"36047:5:30"}],"id":1973,"name":"VariableDeclaration","src":"36047:12:30"}],"id":1974,"name":"ParameterList","src":"36046:14:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1970,"name":"Identifier","src":"36022:15:30"}],"id":1971,"name":"ModifierInvocation","src":"36022:15:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":1975,"name":"Identifier","src":"36266:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":1976,"name":"Identifier","src":"36279:12:30"}],"id":1977,"name":"IndexAccess","src":"36266:26:30"}],"id":1978,"name":"UnaryOperation","src":"36265:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1979,"name":"Identifier","src":"36308:11:30"}],"id":1981,"name":"MemberAccess","src":"36308:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1966,"type":"uint256","value":"_value"},"id":1982,"name":"Identifier","src":"36334:6:30"}],"id":1983,"name":"FunctionCall","src":"36308:33:30"}],"id":1984,"name":"ExpressionStatement","src":"36308:33:30"}],"id":1985,"name":"Block","src":"36294:58:30"}],"id":1986,"name":"IfStatement","src":"36261:91:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":2201,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1987,"name":"ElementaryTypeNameExpression","src":"36453:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":1988,"name":"Identifier","src":"36461:12:30"}],"id":1989,"name":"FunctionCall","src":"36453:21:30"}],"id":1990,"name":"MemberAccess","src":"36453:32:30"}],"id":1991,"name":"FunctionCall","src":"36453:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3198,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":1992,"name":"Identifier","src":"36491:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":1993,"name":"Identifier","src":"36509:12:30"}],"id":1994,"name":"FunctionCall","src":"36491:31:30"}],"id":1995,"name":"BinaryOperation","src":"36453:69:30"},{"children":[{"attributes":{"assignments":[1997],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"to","scope":2059,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1996,"name":"ElementaryTypeName","src":"36625:7:30"}],"id":1997,"name":"VariableDeclaration","src":"36625:10:30"}],"id":1998,"name":"VariableDeclarationStatement","src":"36625:10:30"},{"attributes":{"assignments":[2000],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"amount","scope":2059,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1999,"name":"ElementaryTypeName","src":"36649:7:30"}],"id":2000,"name":"VariableDeclaration","src":"36649:14:30"}],"id":2001,"name":"VariableDeclarationStatement","src":"36649:14:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"address","value":"to"},"id":2002,"name":"Identifier","src":"36678:2:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2000,"type":"uint256","value":"amount"},"id":2003,"name":"Identifier","src":"36682:6:30"}],"id":2004,"name":"TupleExpression","src":"36677:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3182,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":2005,"name":"Identifier","src":"36692:27:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2006,"name":"Identifier","src":"36720:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2007,"name":"Identifier","src":"36734:5:30"}],"id":2008,"name":"FunctionCall","src":"36692:48:30"}],"id":2009,"name":"Assignment","src":"36677:63:30"}],"id":2010,"name":"ExpressionStatement","src":"36677:63:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2011,"name":"Identifier","src":"36759:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1997,"type":"address","value":"to"},"id":2012,"name":"Identifier","src":"36772:2:30"}],"id":2013,"name":"IndexAccess","src":"36759:16:30"}],"id":2014,"name":"UnaryOperation","src":"36758:17:30"},{"children":[{"attributes":{"assignments":[2016]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2028,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2015,"name":"ElementaryTypeName","src":"36962:7:30"}],"id":2016,"name":"VariableDeclaration","src":"36962:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1872,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2017,"name":"Identifier","src":"36983:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2018,"name":"Identifier","src":"36998:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2000,"type":"uint256","value":"amount"},"id":2019,"name":"Identifier","src":"37012:6:30"}],"id":2020,"name":"FunctionCall","src":"36983:36:30"}],"id":2021,"name":"VariableDeclarationStatement","src":"36962:57:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2022,"name":"Identifier","src":"37037:11:30"}],"id":2024,"name":"MemberAccess","src":"37037:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2016,"type":"uint256","value":"etherValue"},"id":2025,"name":"Identifier","src":"37063:10:30"}],"id":2026,"name":"FunctionCall","src":"37037:37:30"}],"id":2027,"name":"ExpressionStatement","src":"37037:37:30"}],"id":2028,"name":"Block","src":"36777:312:30"}],"id":2029,"name":"IfStatement","src":"36754:335:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"callOptionalReturn","referencedDeclaration":2564,"type":"function (contract ERC20,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2346,"type":"type(contract ERC20)","value":"ERC20"},"id":2030,"name":"Identifier","src":"37238:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2031,"name":"Identifier","src":"37244:12:30"}],"id":2032,"name":"FunctionCall","src":"37238:19:30"}],"id":2033,"name":"MemberAccess","src":"37238:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2034,"name":"Identifier","src":"37277:5:30"}],"id":2035,"name":"FunctionCall","src":"37238:45:30"}],"id":2036,"name":"ExpressionStatement","src":"37238:45:30"},{"attributes":{"assignments":[2038]},"children":[{"attributes":{"constant":false,"name":"b","scope":2059,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2037,"name":"ElementaryTypeName","src":"37387:5:30"}],"id":2038,"name":"VariableDeclaration","src":"37387:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2039,"name":"ElementaryTypeName","src":"37408:5:30"}],"id":2040,"name":"NewExpression","src":"37404:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2041,"name":"Literal","src":"37414:2:30"}],"id":2042,"name":"FunctionCall","src":"37404:13:30"}],"id":2043,"name":"VariableDeclarationStatement","src":"37387:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2038,"type":"bytes memory","value":"b"},"id":2044,"name":"Identifier","src":"37431:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2045,"name":"Literal","src":"37433:2:30"}],"id":2046,"name":"IndexAccess","src":"37431:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2047,"name":"Literal","src":"37439:4:30"}],"id":2048,"name":"Assignment","src":"37431:12:30"}],"id":2049,"name":"ExpressionStatement","src":"37431:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1323,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2050,"name":"Identifier","src":"37463:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2051,"name":"Identifier","src":"37483:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1966,"type":"uint256","value":"_value"},"id":2052,"name":"Identifier","src":"37497:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2053,"name":"Identifier","src":"37505:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2038,"type":"bytes memory","value":"b"},"id":2054,"name":"Identifier","src":"37512:1:30"}],"id":2055,"name":"FunctionCall","src":"37463:51:30"}],"id":2056,"name":"EmitStatement","src":"37458:56:30"},{"attributes":{"functionReturnParameters":1974},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2038,"type":"bytes memory","value":"b"},"id":2057,"name":"Identifier","src":"37535:1:30"}],"id":2058,"name":"Return","src":"37528:8:30"}],"id":2059,"name":"Block","src":"36524:1023:30"}],"id":2060,"name":"IfStatement","src":"36449:1098:30"},{"attributes":{"assignments":[2062,2064]},"children":[{"attributes":{"constant":false,"name":"success","scope":2089,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2061,"name":"ElementaryTypeName","src":"37558:4:30"}],"id":2062,"name":"VariableDeclaration","src":"37558:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":2089,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2063,"name":"ElementaryTypeName","src":"37572:5:30"}],"id":2064,"name":"VariableDeclaration","src":"37572:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (bytes memory) payable returns (bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2065,"name":"Identifier","src":"37599:12:30"}],"id":2066,"name":"MemberAccess","src":"37599:17:30"}],"id":2067,"name":"MemberAccess","src":"37599:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1966,"type":"uint256","value":"_value"},"id":2068,"name":"Identifier","src":"37623:6:30"}],"id":2069,"name":"FunctionCall","src":"37599:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2070,"name":"Identifier","src":"37631:5:30"}],"id":2071,"name":"FunctionCall","src":"37599:38:30"}],"id":2072,"name":"VariableDeclarationStatement","src":"37557:80:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2073,"name":"Identifier","src":"37647:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2062,"type":"bool","value":"success"},"id":2074,"name":"Identifier","src":"37655:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":2075,"name":"ElementaryTypeNameExpression","src":"37664:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2064,"type":"bytes memory","value":"returndata"},"id":2076,"name":"Identifier","src":"37671:10:30"}],"id":2077,"name":"FunctionCall","src":"37664:18:30"}],"id":2078,"name":"FunctionCall","src":"37647:36:30"}],"id":2079,"name":"ExpressionStatement","src":"37647:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1323,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2080,"name":"Identifier","src":"37699:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1964,"type":"address","value":"_destination"},"id":2081,"name":"Identifier","src":"37719:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1966,"type":"uint256","value":"_value"},"id":2082,"name":"Identifier","src":"37733:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1968,"type":"bytes memory","value":"_data"},"id":2083,"name":"Identifier","src":"37741:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2064,"type":"bytes memory","value":"returndata"},"id":2084,"name":"Identifier","src":"37748:10:30"}],"id":2085,"name":"FunctionCall","src":"37699:60:30"}],"id":2086,"name":"EmitStatement","src":"37694:65:30"},{"attributes":{"functionReturnParameters":1974},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2064,"type":"bytes memory","value":"returndata"},"id":2087,"name":"Identifier","src":"37846:10:30"}],"id":2088,"name":"Return","src":"37839:17:30"}],"id":2089,"name":"Block","src":"36061:1802:30"}],"id":2090,"name":"FunctionDefinition","src":"35929:1934:30"},{"attributes":{"documentation":"@dev Implements EIP-1654: receives the hashed message(bytes32)\n https://github.com/ethereum/EIPs/issues/1654.md\n @param _hashedData Hashed data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _dataHash","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2183,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hashedData","scope":2116,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2091,"name":"ElementaryTypeName","src":"38172:7:30"}],"id":2092,"name":"VariableDeclaration","src":"38172:19:30"},{"attributes":{"constant":false,"name":"_signature","scope":2116,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2093,"name":"ElementaryTypeName","src":"38193:5:30"}],"id":2094,"name":"VariableDeclaration","src":"38193:23:30"}],"id":2095,"name":"ParameterList","src":"38171:46:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2116,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2096,"name":"ElementaryTypeName","src":"38239:6:30"}],"id":2097,"name":"VariableDeclaration","src":"38239:6:30"}],"id":2098,"name":"ParameterList","src":"38238:8:30"},{"children":[{"attributes":{"assignments":[2100]},"children":[{"attributes":{"constant":false,"name":"from","scope":2115,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2099,"name":"ElementaryTypeName","src":"38257:7:30"}],"id":2100,"name":"VariableDeclaration","src":"38257:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"recover","referencedDeclaration":2266,"type":"function (bytes32,bytes memory) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2092,"type":"bytes32","value":"_hashedData"},"id":2101,"name":"Identifier","src":"38272:11:30"}],"id":2102,"name":"MemberAccess","src":"38272:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2094,"type":"bytes memory","value":"_signature"},"id":2103,"name":"Identifier","src":"38292:10:30"}],"id":2104,"name":"FunctionCall","src":"38272:31:30"}],"id":2105,"name":"VariableDeclarationStatement","src":"38257:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2106,"name":"Identifier","src":"38313:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3027,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2107,"name":"Identifier","src":"38321:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2100,"type":"address","value":"from"},"id":2108,"name":"Identifier","src":"38330:4:30"}],"id":2109,"name":"FunctionCall","src":"38321:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":2110,"name":"Literal","src":"38337:19:30"}],"id":2111,"name":"FunctionCall","src":"38313:44:30"}],"id":2112,"name":"ExpressionStatement","src":"38313:44:30"},{"attributes":{"functionReturnParameters":2098},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1368,"type":"bytes4","value":"_EIP_1654"},"id":2113,"name":"Identifier","src":"38374:9:30"}],"id":2114,"name":"Return","src":"38367:16:30"}],"id":2115,"name":"Block","src":"38247:143:30"}],"id":2116,"name":"FunctionDefinition","src":"38146:244:30"},{"attributes":{"documentation":"@dev Transfers the specified asset to the recipient's address.\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"transfer","scope":2183,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2182,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2117,"name":"ElementaryTypeName","src":"38685:15:30"}],"id":2118,"name":"VariableDeclaration","src":"38685:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":2182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2119,"name":"ElementaryTypeName","src":"38706:7:30"}],"id":2120,"name":"VariableDeclaration","src":"38706:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2182,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2121,"name":"ElementaryTypeName","src":"38722:7:30"}],"id":2122,"name":"VariableDeclaration","src":"38722:15:30"}],"id":2123,"name":"ParameterList","src":"38684:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":2129,"name":"ParameterList","src":"38781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":57,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2124,"name":"Identifier","src":"38746:15:30"}],"id":2125,"name":"ModifierInvocation","src":"38746:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1426,"type":"modifier (uint256)","value":"isNotZero"},"id":2126,"name":"Identifier","src":"38762:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2127,"name":"Identifier","src":"38772:7:30"}],"id":2128,"name":"ModifierInvocation","src":"38762:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_680f6a32e9231c9e20746c0afa2d6c3a5c617d8ed04badee4157b674b70920f8","typeString":"literal_string \"destination=0\""}],"overloadedDeclarations":[10112,10113],"referencedDeclaration":10113,"type":"function (bool,string memory) pure","value":"require"},"id":2130,"name":"Identifier","src":"38852:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"address payable","value":"_to"},"id":2131,"name":"Identifier","src":"38860:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2132,"name":"ElementaryTypeNameExpression","src":"38867:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2133,"name":"Literal","src":"38875:1:30"}],"id":2134,"name":"FunctionCall","src":"38867:10:30"}],"id":2135,"name":"BinaryOperation","src":"38860:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"64657374696e6174696f6e3d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"destination=0\"","value":"destination=0"},"id":2136,"name":"Literal","src":"38879:15:30"}],"id":2137,"name":"FunctionCall","src":"38852:43:30"}],"id":2138,"name":"ExpressionStatement","src":"38852:43:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2139,"name":"Identifier","src":"38984:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"address payable","value":"_to"},"id":2140,"name":"Identifier","src":"38997:3:30"}],"id":2141,"name":"IndexAccess","src":"38984:17:30"}],"id":2142,"name":"UnaryOperation","src":"38983:18:30"},{"children":[{"attributes":{"assignments":[2144]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2167,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2143,"name":"ElementaryTypeName","src":"39080:7:30"}],"id":2144,"name":"VariableDeclaration","src":"39080:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2145,"name":"Identifier","src":"39101:7:30"}],"id":2146,"name":"VariableDeclarationStatement","src":"39080:28:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"address","value":"_asset"},"id":2147,"name":"Identifier","src":"39205:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2148,"name":"ElementaryTypeNameExpression","src":"39215:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2149,"name":"Literal","src":"39223:1:30"}],"id":2150,"name":"FunctionCall","src":"39215:10:30"}],"id":2151,"name":"BinaryOperation","src":"39205:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2144,"type":"uint256","value":"etherValue"},"id":2152,"name":"Identifier","src":"39245:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1872,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2153,"name":"Identifier","src":"39258:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"address","value":"_asset"},"id":2154,"name":"Identifier","src":"39273:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2155,"name":"Identifier","src":"39281:7:30"}],"id":2156,"name":"FunctionCall","src":"39258:31:30"}],"id":2157,"name":"Assignment","src":"39245:44:30"}],"id":2158,"name":"ExpressionStatement","src":"39245:44:30"}],"id":2159,"name":"Block","src":"39227:77:30"}],"id":2160,"name":"IfStatement","src":"39201:103:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":674,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":827,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2161,"name":"Identifier","src":"39515:11:30"}],"id":2163,"name":"MemberAccess","src":"39515:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2144,"type":"uint256","value":"etherValue"},"id":2164,"name":"Identifier","src":"39541:10:30"}],"id":2165,"name":"FunctionCall","src":"39515:37:30"}],"id":2166,"name":"ExpressionStatement","src":"39515:37:30"}],"id":2167,"name":"Block","src":"39003:560:30"}],"id":2168,"name":"IfStatement","src":"38979:584:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":3284,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2169,"name":"Identifier","src":"39638:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"address payable","value":"_to"},"id":2170,"name":"Identifier","src":"39652:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"address","value":"_asset"},"id":2171,"name":"Identifier","src":"39657:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2172,"name":"Identifier","src":"39665:7:30"}],"id":2173,"name":"FunctionCall","src":"39638:35:30"}],"id":2174,"name":"ExpressionStatement","src":"39638:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1357,"type":"function (address,address,uint256)","value":"Transferred"},"id":2175,"name":"Identifier","src":"39724:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"address payable","value":"_to"},"id":2176,"name":"Identifier","src":"39736:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2120,"type":"address","value":"_asset"},"id":2177,"name":"Identifier","src":"39741:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2122,"type":"uint256","value":"_amount"},"id":2178,"name":"Identifier","src":"39749:7:30"}],"id":2179,"name":"FunctionCall","src":"39724:33:30"}],"id":2180,"name":"EmitStatement","src":"39719:38:30"}],"id":2181,"name":"Block","src":"38781:983:30"}],"id":2182,"name":"FunctionDefinition","src":"38667:1097:30"}],"id":2183,"name":"ContractDefinition","src":"22209:17557:30"}],"id":2184,"name":"SourceUnit","src":"757:39010:30"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/walletCache/Controller.bin b/build/walletCache/Controller.bin index a69c0549..264e63ba 100644 --- a/build/walletCache/Controller.bin +++ b/build/walletCache/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/walletCache/DailyLimitTrait.bin b/build/walletCache/DailyLimitTrait.bin index b38ae5c8..d7eed637 100644 --- a/build/walletCache/DailyLimitTrait.bin +++ b/build/walletCache/DailyLimitTrait.bin @@ -1 +1 @@ -60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032 \ No newline at end of file +60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032 \ No newline at end of file diff --git a/build/walletCache/Licence.bin b/build/walletCache/Licence.bin index 20bb2284..464341a7 100644 --- a/build/walletCache/Licence.bin +++ b/build/walletCache/Licence.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032 \ No newline at end of file diff --git a/build/walletCache/TokenWhitelist.bin b/build/walletCache/TokenWhitelist.bin index 60f52176..5a283843 100644 --- a/build/walletCache/TokenWhitelist.bin +++ b/build/walletCache/TokenWhitelist.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032 \ No newline at end of file diff --git a/build/walletCache/Wallet.bin b/build/walletCache/Wallet.bin index f12dd9cc..550210e0 100644 --- a/build/walletCache/Wallet.bin +++ b/build/walletCache/Wallet.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032 \ No newline at end of file diff --git a/build/walletCache/WalletCache.bin b/build/walletCache/WalletCache.bin index ffe2e2a7..cd0fa441 100644 --- a/build/walletCache/WalletCache.bin +++ b/build/walletCache/WalletCache.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032a265627a7a723158200d133a1b20c5b8d7f88583b755e0cdb58d87241a8e32f00dc43a433c17cfbfdf64736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032a265627a7a723158205d913b62084d26757d50822529c7c40b09c9ceaa3ed83439bb340ec274648b3964736f6c63430005110032 \ No newline at end of file diff --git a/build/walletCache/combined.json b/build/walletCache/combined.json index 40cb142f..ae7c4420 100644 --- a/build/walletCache/combined.json +++ b/build/walletCache/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ECDSA.sol:ECDSA":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","srcmap":"1392:3417:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1392:3417:2:-;;;;;;;;"},"externals/ERC165.sol:ERC165":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:5:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:6:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:8:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:9:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:9;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:9;-1:-1:-1;;;;;2567:10:9;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:9;;;;;;","srcmap-runtime":"1897:2174:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:15;;;;;;;;;:::i;:::-;;573:184:19;;;;;;;;;:::i;1721:953:16:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:12;;;;;;;;;:::i;:::-;;;;;;;;;612:169:18;;;;;;;;;:::i;505:166:14:-;;;;;;;;;:::i;980:228:13:-;;;;;;;;;:::i;3269:231:9:-;;;;;;;;;:::i;4901:153:15:-;;;;;;;;;:::i;974:127:19:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:15;;;;;;;;;:::i;582:292:12:-;;;;;;;;;:::i;844:101:17:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:13:-;;;;;;;;;:::i;4519:168:15:-;;;;;;;;;:::i;3703:366:9:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:15;;;;;;;;;:::i;838:108:14:-;;;;;;;;;:::i;1023:133:18:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:15;;;;;;;;;:::i;681:140:13:-;;;;;;;;;:::i;858:226:16:-;;;;;;;;;:::i;1514:127:13:-;;;;;;;;;:::i;2320:80:9:-;;;;;;;;;:::i;1107:169:19:-;1174:4;-1:-1:-1;;;;;;1197:32:19;;-1:-1:-1;;;1197:32:19;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:15:-;2932:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:15;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:15;;:18;-1:-1:-1;;3185:18:15;:15;:18;;-1:-1:-1;3185:18:15:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:15;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:15;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:15;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:15;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:15;;4052:6;;-1:-1:-1;4060:20:15;;;;-1:-1:-1;4082:17:15;4012:11;:88::i;:::-;400:1:11;;;;;2854:1263:15;;;;:::o;573:184:19:-;668:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:19;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:16:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:16;;;;;;;;;;-1:-1:-1;;;;;1849:29:16;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:16;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:16;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:16;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:16;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:16;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:16;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:16;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:16;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:16;;-1:-1:-1;2373:103:16;-1:-1:-1;2489:8:16;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:16;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:16;;-1:-1:-1;;;1721:953:16;;;;;:::o;1195:454:12:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:12;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:12;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:12;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:12;-1:-1:-1;1195:454:12;;;;;;:::o;612:169:18:-;687:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:18;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:18;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:14:-;584:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:14;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:13;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:13:o;3269:231:9:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:9;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:9;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:15:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:19:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:19;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:15:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:12:-;674:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:12;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:12;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:17:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:17;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:13;1302:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:13;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:15:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:9;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:9;-1:-1:-1;3844:6:9;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:9;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:9;;3840:199;;;-1:-1:-1;3703:366:9;;;;:::o;5193:128:15:-;5247:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:15;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:14:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:14;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:18;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:15:-;5617:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:15;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:15;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:15;;:16;-1:-1:-1;5701:4:15;;-1:-1:-1;5701:4:15;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:11;5541:225:15;;;;:::o;681:140:13:-;743:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:13;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:16:-;955:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:16;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:16;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:16;-1:-1:-1;;;;;971:43:16;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:13:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:13;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:18:-;1229:4;-1:-1:-1;;;;;;1252:34:18;;-1:-1:-1;;;1252:34:18;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:9:-;3596:3;;:15;;-1:-1:-1;;;3596:15:9;;3564:4;;;;-1:-1:-1;;;;;3596:3:9;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:9;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:9;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:9;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:9;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:10:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:8:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:15:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:15;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:15;;;;;;-1:-1:-1;;6760:43:15;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:15;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:15;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:10:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:10;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:10;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:10;;:::o;414:204:11:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:11;576:10;570:17;-1:-1:-1;;;566:36:11;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:11;87:34:-1;-1:-1;;;;;;776:20:11;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:11;743:64::o;951:169:17:-;1018:4;-1:-1:-1;;;;;;1041:32:17;;-1:-1:-1;;;1041:32:17;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:10:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:10;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:10:o;8685:393:8:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:8;87:34:-1;135:17;;-1:-1;8858:14:8;-1:-1:-1;8839:33:8;-1:-1:-1;8960:2:8;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:8;;8685:393;-1:-1:-1;;;;;8685:393:8:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:8:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:8;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:8;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:16:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:16;;:11;-1:-1:-1;;;;;2770:37:16;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:8:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:8;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:8;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:8;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:8;;513:2;499:26;489:42;;468:73::o;6035:245:15:-;6102:4;-1:-1:-1;;;;;;6125:38:15;;-1:-1:-1;;;6125:38:15;;:93;;-1:-1:-1;;;;;;;6182:36:15;;-1:-1:-1;;;6182:36:15;6125:93;:148;;;;6237:36;6261:11;1019:4:14;-1:-1:-1;;;;;;1042:40:14;;-1:-1:-1;;;1042:40:14;;:80;;;1086:36;1110:11;1714:4:13;-1:-1:-1;;;;;;1737:32:13;;-1:-1:-1;;;1737:32:13;;:71;;-1:-1:-1;;;;;;;1773:35:13;;-1:-1:-1;;;1773:35:13;1737:71;:111;;;;1812:36;1836:11;1722:4:12;-1:-1:-1;;;;;;1745:31:12;;-1:-1:-1;;;1745:31:12;;:71;;-1:-1:-1;;;;;;;;;;204:32:11;;;1780:36:12;114:129:11:o;1897:2174:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:9;;;-1:-1:-1;1897:2174:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:10:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:10:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:21;;;;;;;","srcmap-runtime":"898:556:21:-;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","srcmap":"1381:8954:28:-;;;1122:66:23;1272:58;;2313:80:28;;;-1:-1:-1;;;;;;2313:80:28;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:28;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3616:558:28;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:28;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:28;;;-1:-1:-1;;;;;;4012:22:28;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:28;-1:-1:-1;;;;;4123:34:28;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:28;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:28;-1:-1:-1;;;;;7354:228:28;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:28;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:28;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:28;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:28;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:28;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:28;-1:-1:-1;;;;;6678:219:28;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:28;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:28;;:::i;1364:91:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;10221:112:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:28;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:28;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:28;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:28;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:28;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:28;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:28;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:28;-1:-1:-1;;;;;6338:204:28;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:28;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;10054:96:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:28;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:28;-1:-1:-1;;;;;7027:196:28;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:28;;;:::i;6106:102::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6169:25:28;:32;;-1:-1:-1;;;;6169:32:28;-1:-1:-1;;;6169:32:28;;;6106:102::o;7354:228::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7443:26:28;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:28;;-1:-1:-1;;;;;;7497:29:28;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:28;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:28;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:28;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:28;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:28;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:28;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:28;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:28;;:33;;-1:-1:-1;;;;;9116:12:28;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:28;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:28;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:28;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:28;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:28;4950:91;:::o;6678:219::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6766:14:28;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:28;;-1:-1:-1;;;;;;6820:25:28;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5977:17:28;:24;;-1:-1:-1;;;;5977:24:28;-1:-1:-1;;;5977:24:28;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:28;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;10221:112:28:-;10301:25;;-1:-1:-1;;;10301:25:28;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:28;;;;;9711:92::o;9448:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;9546:35:28;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:28;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:28;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5603:18:28;:25;;-1:-1:-1;;;;5603:25:28;-1:-1:-1;;;5603:25:28;;;5553:82::o;6338:204::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6424:13:28;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:28;;-1:-1:-1;;;;;;6467:24:28;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5792:18:28;:25;;-1:-1:-1;;;;5792:25:28;-1:-1:-1;;;5792:25:28;;;5741:83::o;2169:95:23:-;2242:15;;2169:95;:::o;10054:96:28:-;10126:17;;-1:-1:-1;;;10126:17:28;;;;;10054:96::o;7027:196::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7108:18:28;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:28;;-1:-1:-1;;;;;;7154:21:28;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:28;;;;;9882:93::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;1982:201:5:-;2107:68;;;-1:-1:-1;;;;;2107:68:5;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:5;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:6;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:5;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","srcmap":"1939:14907:29:-;;;1122:66:23;1272:58;;4758:506:29;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:29;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:29;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:29;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:29;:26;;;;-1:-1:-1;4995:11:29;:33;;-1:-1:-1;;;;;4995:33:29;;;-1:-1:-1;;;;;;4995:33:29;;;;;;;;;-1:-1:-1;5083:18:29;:28;;;:35;;-1:-1:-1;;5083:35:29;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:29;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:29;-1:-1:-1;;;;;;16070:136:29;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:29;-1:-1:-1;;;;;13314:334:29;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;-1:-1:-1;6040:1806:29;-1:-1:-1;6040:1806:29;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:29;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:29;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:29;;-1:-1:-1;;;;;15695:220:29;;;;;-1:-1:-1;;;;;;15695:220:29;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:29;;-1:-1:-1;7973:1237:29;-1:-1:-1;7973:1237:29;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:29;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:29;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:29;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:29;;-1:-1:-1;9368:1399:29;-1:-1:-1;9368:1399:29;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:29;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:29:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:29;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:29;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:29;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:29;;;:88;;;;-1:-1:-1;6442:35:29;;;6389:88;:142;;;;-1:-1:-1;6497:34:29;;;6389:142;:196;;;;-1:-1:-1;6551:34:29;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:29;6841:25;;-1:-1:-1;6841:25:29;;;;;;;;-1:-1:-1;6841:25:29;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:29;-1:-1:-1;;;;;7084:25:29;-1:-1:-1;;;;;7084:25:29;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:29;;;;;-1:-1:-1;;7084:306:29;;;-1:-1:-1;;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:29;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:29;-1:-1:-1;;;;;7486:10:29;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:29;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:29;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:29;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:29;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:29;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:29;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:29;-1:-1:-1;15069:72:29;-1:-1:-1;15151:23:29;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:29;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:29;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:29;;;-1:-1:-1;;;;;15364:44:29;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:29;;15188:283;;;-1:-1:-1;15487:19:29;;-1:-1:-1;;14990:523:29;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:29;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:29;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:29;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:29;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:29;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:29:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:29;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:29;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:29;;8363:65;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:29;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:29;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:29;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:29;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:29;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:29;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:29;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:29;;;;;-1:-1:-1;;;;;8926:76:29;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:29;:27;;;;;-1:-1:-1;;9075:27:29;;;:::i;:::-;-1:-1:-1;9162:31:29;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:29;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:29:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:29;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:29;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:29;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:29;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:29;;:23;-1:-1:-1;;9801:23:29;:20;:23;;-1:-1:-1;9801:23:29:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:29;;-1:-1:-1;;;10048:18:29;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:29;;:24;-1:-1:-1;;10141:24:29;:21;:24;;-1:-1:-1;10141:24:29:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:29;;-1:-1:-1;;;10187:27:29;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:29;;:34;-1:-1:-1;;10400:34:29;:21;:34;;-1:-1:-1;10400:34:29:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:29;;:34;-1:-1:-1;;10436:34:29;:21;:34;;-1:-1:-1;10436:34:29:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:29;;:29;-1:-1:-1;;10689:29:29;:21;:29;;-1:-1:-1;10689:29:29:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:29;;:29;-1:-1:-1;;10720:29:29;:21;:29;;-1:-1:-1;10720:29:29:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:29;-1:-1:-1;;;;;5399:27:29;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:29;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:29;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:29:-;16622:11;;-1:-1:-1;;;;;16622:11:29;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:29;;;-1:-1:-1;1939:14907:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"wallet.sol:AddressWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:ControllableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:DailyLimitTrait":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032","srcmap":"11411:3455:30:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"11411:3455:30:-;;;;;;;;"},"wallet.sol:GasTopUpLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:LoadLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SelfCallableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SpendLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:Wallet":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032","bin-runtime":"60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032","srcmap":"22209:17557:30:-;;;1122:66:23;1272:58;;24474:430:30;5:2:-1;;;;30:1;27;20:12;5:2;24474:430:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24474:430:30;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;24474:430:30;;;;;;;;;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1543:6:25;:18;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;-1:-1:-1;;;1571:32:25;;;;;;;;;;;;;-1:-1:-1;1687:15:25;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17616:93:30;;;;;;;;17296:10;17616:93;;;;;;;;;17695:3;17616:93;;;;;;-1:-1:-1;17616:93:30;;;;;;;;;;;;;17599:14;:110;;;;;;;;;;;;;;;;;-1:-1:-1;;17599:110:30;;;1341:19:26;:42;;;;20179:20:30;:18;:20::i;:::-;20135:64;;;;;;;;20239:1;20217:19;:23;20209:49;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;;;;19863:5;20288:52;20268:17;:72;;;20363:79;;;;;;;;;;;;;;;;;;;20428:3;20363:79;;;;;;-1:-1:-1;20363:79:30;;;;;;;;;;;;;;20350:10;:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20350:92:30;;;;;;15352:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:11;:73;;;;;;;;;;;;;;;-1:-1:-1;15338:73:30;;;;;;;;-1:-1:-1;24869:12:30;:28;-1:-1:-1;22209:17557:30;;-1:-1:-1;;;;22209:17557:30;2887:206:26;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;;;:32;;:::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;-1:-1:-1;;1731:33:24;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;22209:17557:30:-;;;;;;;","srcmap-runtime":"22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25196:31;;;25205:10;25196:31;;25217:9;25196:31;;;;;;;;;;;;;;;;;22209:17557;30101:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30101:137:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30101:137:30;-1:-1:-1;;;;;;30101:137:30;;:::i;:::-;;;;;;;;;;;;;;;;;;16199:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16199:104:30;;;:::i;:::-;;;;;;;;;;;;;;;;18820:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18820:286:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:286:30;;:::i;:::-;;3896:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:677:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3896:677:30;;:::i;23125:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23125:47:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23125:47:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38146:244:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38146:244:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38146:244:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38146:244:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38146:244:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38146:244:30;;-1:-1:-1;38146:244:30;;-1:-1:-1;;;;;38146:244:30:i;:::-;;;;-1:-1:-1;;;;;;38146:244:30;;;;;;;;;;;;;;;25576:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25576:565:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25576:565:30;;-1:-1:-1;;;;;25576:565:30;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25576:565:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25576:565:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25576:565:30;;-1:-1:-1;25576:565:30;-1:-1:-1;25576:565:30;:::i;21466:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21466:117:30;;;:::i;28299:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28299:344:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28299:344:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28299:344:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28299:344:30;;-1:-1:-1;28299:344:30;-1:-1:-1;28299:344:30;:::i;3173:94:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3173:94:25;;;:::i;16806:179:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16806:179:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16806:179:30;;:::i;18606:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18606:106:30;;;:::i;3082:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3082:38:30;;;:::i;8300:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8300:124:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8300:124:30;;;;;;;;;;;;;;;;;2898:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2898:44:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2898:44:30;-1:-1:-1;;;;;2898:44:30;;:::i;29093:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29093:943:30;;-1:-1:-1;;;;;29093:943:30;;;;;;:::i;20579:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20579:233:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20579:233:30;;:::i;15817:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15817:161:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15817:161:30;;:::i;35929:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35929:1934:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;35929:1934:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;35929:1934:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35929:1934:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35929:1934:30;;-1:-1:-1;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30:i;26493:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26493:1111:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26493:1111:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26493:1111:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26493:1111:30;;-1:-1:-1;26493:1111:30;-1:-1:-1;26493:1111:30;:::i;8121:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8121:126:30;;;:::i;5523:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5523:1117:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5523:1117:30;;:::i;16023:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16023:119:30;;;:::i;10340:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10340:673:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10340:673:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10340:673:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10340:673:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10340:673:30;;-1:-1:-1;10340:673:30;-1:-1:-1;10340:673:30;:::i;3543:306:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:306:25;;;:::i;19233:304:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19233:304:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19233:304:30;;:::i;28706:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:91:30;;;:::i;1364::24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;18028:125:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:125:30;;;:::i;9505:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9505:711:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9505:711:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9505:711:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9505:711:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9505:711:30;;-1:-1:-1;9505:711:30;-1:-1:-1;9505:711:30;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;3932:85:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:85:25;;;:::i;27713:87:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27713:87:30;;;:::i;16562:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16562:100:30;;;:::i;31175:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31175:2016:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31175:2016:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31175:2016:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31175:2016:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31175:2016:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31175:2016:30;;-1:-1:-1;31175:2016:30;;-1:-1:-1;;;;;31175:2016:30:i;21796:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:145:30;;;:::i;20927:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20927:251:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20927:251:30;;:::i;2247:809:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2247:809:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2247:809:25;;-1:-1:-1;;;;;2247:809:25;;;;;;;;:::i;33378:550:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33378:550:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33378:550:30;;-1:-1:-1;;;;;33378:550:30;;;;;;:::i;16359:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16359:147:30;;;:::i;3169:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:26:30;;;:::i;38667:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38667:1097:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38667:1097:30;;;;;;;;;;;;;;;;;:::i;21639:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21639:102:30;;;:::i;6709:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6709:1358:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6709:1358:30;;:::i;18215:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:110:30;;;:::i;23739:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23739:25:30;;;:::i;11082:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11082:145:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11082:145:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11082:145:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11082:145:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:145:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11082:145:30;;-1:-1:-1;11082:145:30;;-1:-1:-1;;;;;11082:145:30:i;4641:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:659:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4641:659:30;;:::i;2948:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:31:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2948:31:30;;:::i;22008:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:98:30;;;:::i;3126:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3126:37:30;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;30418:425:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30418:425:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30418:425:30;;:::i;15480:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:180:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15480:180:30;;:::i;34129:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34129:1540:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34129:1540:30;;-1:-1:-1;;;;;34129:1540:30;;;;;;:::i;21239:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21239:177:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21239:177:30;;:::i;17783:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17783:189:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17783:189:30;;:::i;8555:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:827:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8555:827:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8555:827:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8555:827:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8555:827:30;;-1:-1:-1;8555:827:30;-1:-1:-1;8555:827:30;:::i;18386:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18386:153:30;;;:::i;30101:137::-;-1:-1:-1;;;;;;;;;30195:36:30;;;30101:137;;;;:::o;16199:104::-;16277:19;;16199:104;;:::o;18820:286::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;18934:7;17364:8;18906:35;;:74;;;;;17296:10;18945:7;:35;;18906:74;18898:106;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;;;;19014:33;:14;19039:7;19014:33;:24;:33;:::i;:::-;19062:37;;;19079:10;19062:37;;;;;;;;;;;;;;;;;;;;;18820:286;:::o;3896:677::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4043:26;;;;4035:60;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;;;;4217:40;4231:25;4217:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4217:40:30;;;-1:-1:-1;4217:40:30;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4208:5;:49;4200:97;;;;-1:-1:-1;;;4200:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:32;4350:25;;4343:32;:::i;:::-;4432:26;:34;;-1:-1:-1;;4432:34:30;;;4521:45;;;4548:10;4521:45;;;;;;;;;;;;;;;;;;;;;3896:677;:::o;23125:47::-;;;;;;;;;;;;;-1:-1:-1;;;23125:47:30;;;;;:::o;38146:244::-;38239:6;;38272:31;:11;38292:10;38272:31;:19;:31;:::i;:::-;38257:46;;38321:14;38330:4;38321:8;:14::i;:::-;38313:44;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38146:244:30;;;;;:::o;25576:565::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;25745:19;25737:52;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;;;;25866:9;25861:229;25881:18;;;25861:229;;;25920:14;25937:35;25954:4;25961:7;;25969:1;25961:10;;;;;;;;;;;;;-1:-1:-1;;;;;25961:10:30;25937:8;:35::i;:::-;25920:52;;26046:33;26055:3;26060:7;;26068:1;26060:10;;;;;;;;;;;;;-1:-1:-1;;;;;26060:10:30;26072:6;26046:8;:33::i;:::-;-1:-1:-1;25901:3:30;;25861:229;;;-1:-1:-1;26105:29:30;;;-1:-1:-1;;;;;26105:29:30;;;;;;;;;;;;;;;;;;;26121:3;;26126:7;;;;26105:29;;;;;26126:7;;26105:29;;;26126:7;26105:29;1:33:-1;99:1;81:16;;;74:27;26105:29:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26105:29:30;;;;-1:-1:-1;26105:29:30;;-1:-1:-1;;;;;26105:29:30;25576:565;;;:::o;21466:117::-;21519:7;21545:31;:10;:29;:31::i;:::-;21538:38;;21466:117;:::o;28299:344::-;28397:6;28415:16;28461:5;;28444:23;;;;;;;30:3:-1;22:6;14;1:33;28444:23:30;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28444:23:30;;;28434:34;;49:4:-1;28434:34:30;;;;-1:-1:-1;28541:38:30;;;;;;;;;;;;;;;;;28434:34;;-1:-1:-1;;;;;;28541:38:30;;-1:-1:-1;28434:34:30;;-1:-1:-1;28568:10:30;;-1:-1:-1;28541:38:30;;;;;;28568:10;28541:38;;28568:10;28541:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28541:16:30;;-1:-1:-1;;;28541:38:30:i;:::-;-1:-1:-1;;;;;;28541:51:30;;28533:77;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;28627:9:30;-1:-1:-1;;;;;28299:344:30:o;3173:94:25:-;3245:15;;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;16806:179:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;16890:39;:11;16921:7;16890:39;:30;:39;:::i;:::-;16944:34;;;;;;;;;;;;;;;;;16806:179;:::o;18606:106::-;18685:14;:20;18606:106;:::o;3082:38::-;;;;;;:::o;8300:124::-;8358:16;8393:24;8386:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8386:31:30;;;-1:-1:-1;8386:31:30;;;;;;;;;;;;;;;;;;;8300:124;:::o;2898:44::-;;;;;;;;;;;;;;;:::o;29093:943::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;29269:24;29286:6;29269:16;:24::i;:::-;29261:55;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;;;;29379:23;29405:36;29425:6;29433:7;29405:19;:36::i;:::-;29379:62;-1:-1:-1;29571:41:30;:10;29379:62;29571:41;:24;:41;:::i;:::-;29669:22;29694:25;29706:12;;29694:11;:25::i;:::-;29669:50;-1:-1:-1;;;;;;29733:20:30;;;29729:253;;29769:50;-1:-1:-1;;;;;29769:25:30;;29795:14;29811:7;29769:25;:50::i;:::-;29833:46;;;-1:-1:-1;;;29833:46:30;;-1:-1:-1;;;;;29833:46:30;;;;;;;;;;;;;;;:29;;;;;;:46;;;;;-1:-1:-1;;29833:46:30;;;;;;;;-1:-1:-1;29833:29:30;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;29833:46:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29833:46:30;;;;29729:253;;;29910:61;;;-1:-1:-1;;;29910:61:30;;-1:-1:-1;;;;;29910:61:30;;;;;;;;;;;;;;;:29;;;;;;29946:7;;29910:61;;;;;-1:-1:-1;;29910:61:30;;;;;;;29946:7;29910:29;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;29910:61:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29910:61:30;;;;;29729:253;29997:32;;;-1:-1:-1;;;;;29997:32:30;;;;;;;;;;;;;;;;;;;;;;;2129:1;;29093:943;;:::o;20579:233::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;20672:17;;20661:7;:28;;20653:65;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;;;;20728:29;:10;20749:7;20728:29;:20;:29;:::i;:::-;20772:33;;;20785:10;20772:33;;;;;;;;;;;;;;;;;;;;;20579:233;:::o;15817:161::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;15892:30;:11;15914:7;15892:30;:21;:30;:::i;:::-;15937:34;;;15951:10;15937:34;;;;;;;;;;;;;;;;;;;;;15817:161;:::o;35929:1934::-;36047:12;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;36266:26:30;;;;;;:12;:26;;;;;;;;36261:91;;36308:33;:11;36334:6;36308:33;:25;:33;:::i;:::-;36453:34;-1:-1:-1;;;;;36453:32:30;;;:34::i;:::-;:69;;;;;36491:31;36509:12;36491:17;:31::i;:::-;36449:1098;;;36625:10;36649:14;36692:48;36720:12;36734:5;36692:27;:48::i;:::-;-1:-1:-1;;;;;36759:16:30;;;;;;:12;:16;;;;;;;;-1:-1:-1;36677:63:30;-1:-1:-1;36759:16:30;;36754:335;;36962:18;36983:36;36998:12;37012:6;36983:14;:36::i;:::-;36962:57;-1:-1:-1;37037:37:30;:11;36962:57;37037:37;:25;:37;:::i;:::-;36754:335;;37238:45;-1:-1:-1;;;;;37238:38:30;;37277:5;37238:38;:45::i;:::-;37404:13;;;37414:2;37404:13;;;;;;;;;37387:14;;37404:13;;;21:6:-1;;104:10;37404:13:30;87:34:-1;135:17;;-1:-1;37404:13:30;37387:30;;37439:4;37431:12;;:1;37433:2;37431:5;;;;;;;;-1:-1:-1;;;;;;37431:12:30;;;;;;;;;:5;;;:12;-1:-1:-1;37463:51:30;;;-1:-1:-1;;;;;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37483:12;;37497:6;;37505:5;;37512:1;;37463:51;;;;;-1:-1:-1;37463:51:30;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37463:51:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37535:1;-1:-1:-1;37528:8:30;;-1:-1:-1;;37528:8:30;36449:1098;37558:12;37572:23;37599:12;-1:-1:-1;;;;;37599:17:30;37623:6;37631:5;37599:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37599:38:30;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37557:80:30;;;;37655:7;37671:10;37647:36;;;;;-1:-1:-1;;;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;-1:-1:-1;;;;;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37719:12;;37733:6;;37741:5;;37748:10;;37699:60;;;;;-1:-1:-1;37699:60:30;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37846:10;-1:-1:-1;;2129:1:30;35929:1934;;;;;:::o;26493:1111::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;26954:63:30;;-1:-1:-1;;;26954:63:30;;;;;;26846:9;26954:63;;;;;;26996:4;26954:63;;;;;;;;;;;;;;26846:9;;26797:10;;26944:99;;26846:9;;26996:4;;27003:6;;27011:5;;;;26954:63;;27011:5;;;;26954:63;1:33:-1;57:3;49:6;45:16;35:26;;26954:63:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26954:63:30;;;26944:74;;;;;;:97;:99::i;:::-;27119:38;;;;;;;;;;;;;;;;;;;;;;26925:118;;-1:-1:-1;;;;27161:9:30;27119:38;;26925:118;;27119:38;27146:10;;;;;;27119:38;;27146:10;;;;27119:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;27119:16:30;;-1:-1:-1;;;27119:38:30:i;:::-;-1:-1:-1;;;;;;27119:51:30;;27111:77;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;;;;27301:10;;27291:6;:20;27283:42;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;;;;27335:21;:19;:21::i;:::-;27465:25;;27424:12;;27438:23;;27473:4;;27484:5;;;;27465:25;27484:5;;;;27465:25;1:33:-1;27465:25:30;;45:16:-1;;;-1:-1;27465:25:30;;-1:-1:-1;27465:25:30;;-1:-1:-1;;27465:25:30;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27423:67:30;;;;27508:7;27524:10;27500:36;;;;;-1:-1:-1;;;27500:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27:10;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27500:36:30;;27552:45;27579:5;;27586:10;27552:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27552:45:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27552:45:30;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27552:45:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:1:23;;;;26493:1111:30;;;;;:::o;8121:126::-;8180:16;8215:25;8208:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8208:32:30;;;;;;;;;-1:-1:-1;8208:32:30;;;;;;;;;;;;;;;;;8121:126;:::o;5523:1117::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;5681:26:30;;;;5673:60;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;;;;5855:40;5869:25;5855:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5855:40:30;;;;;;;;;-1:-1:-1;5855:40:30;;;;;;;;;;;;;;;:13;:40::i;:::-;5846:5;:49;5838:97;;;;-1:-1:-1;;;5838:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:9;5985:383;6009:25;:32;6005:36;;5985:383;;;6117:12;:42;6130:25;6156:1;6130:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6130:28:30;6117:42;;;;;;;;;;;;;;;6112:246;;6272:4;6227:12;:42;6240:25;6266:1;6240:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6240:28:30;6227:42;;;;;;;;;;;;:49;;-1:-1:-1;;6227:49:30;;;;;;;;;;6314:25;:28;;6294:14;;6314:25;6340:1;;6314:28;;;;;;;;;;;;;;;;;;;27:10:-1;;6314:28:30;23:18:-1;;45:23;;6294:49:30;;;;;;;;;;-1:-1:-1;;;;;;6294:49:30;-1:-1:-1;;;;;6314:28:30;;;6294:49;;;;;;6112:246;6043:3;;5985:383;;;-1:-1:-1;6418:55:30;;;6435:10;6418:55;;;;;;;;;6447:25;6418:55;;;;;;;;;;6435:10;;6447:25;;6418:55;;;;;;;6447:25;;6418:55;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6418:55:30;;;-1:-1:-1;6418:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;6519:32;6526:25;;6519:32;:::i;:::-;-1:-1:-1;6599:26:30;:34;;-1:-1:-1;;6599:34:30;;;5523:1117::o;16023:119::-;16077:7;16103:32;:11;:30;:32::i;10340:673::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:14;;;;;;;10517:52;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;;;;10647:21;10639:49;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;;;;10766:37;:24;10793:10;;10766:37;:::i;:::-;-1:-1:-1;10857:25:30;:32;;-1:-1:-1;;10857:32:30;;;;;10980:25;;;;;;;;;;;;;;;;;;10942:64;;10968:10;;;;10980:25;;10968:10;;;;;;10980:25;;;10968:10;;10980:25;10968:10;10980:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10980:13:30;;-1:-1:-1;;;10980:25:30:i;:::-;10942:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10942:64:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10942:64:30;;;;-1:-1:-1;10942:64:30;;-1:-1:-1;;;;;10942:64:30;10340:673;;:::o;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:6;:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;-1:-1:-1;3802:40:25;;;;;;;;;;;;;;;;;;;;3543:306::o;19233:304:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;19356:7;17364:8;19328:35;;:74;;;;;17296:10;19367:7;:35;;19328:74;19320:106;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;;;;19436:42;:14;19470:7;19436:42;:33;:42;:::i;:::-;19493:37;;;;;;;;;;;;;;;;;19233:304;:::o;28706:91::-;28778:12;;28706:91;:::o;1364::24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;;1364:91::o;18028:125:30:-;18085:7;18111:35;:14;:33;:35::i;9505:711::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;;;;;;;;3437:8;:23::i;:::-;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3509:13;;3534:1;;3509:10;;3520:1;;3509:13;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;9727:14:30;;;;;;;9719:52;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;;;;9842:21;9834:49;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;;;;9966:38;:25;9994:10;;9966:38;:::i;:::-;-1:-1:-1;10058:26:30;:33;;-1:-1:-1;;10058:33:30;10087:4;10058:33;;;10183:25;;;;;;;;;;;;;;;;;;10144:65;;10171:10;;;;10183:25;;10171:10;;;;;;10183:25;;;10171:10;;10183:25;10171:10;10183:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10183:13:30;;-1:-1:-1;;;10183:25:30:i;:::-;10144:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10144:65:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10144:65:30;;;;-1:-1:-1;10144:65:30;;-1:-1:-1;;;;;10144:65:30;3834:1;9505:711;;:::o;1514:105:26:-;1593:19;;1514:105;:::o;3932:85:25:-;4004:6;;-1:-1:-1;;;;;4004:6:25;;3932:85::o;27713:87:30:-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;27772:21:30;:19;:21::i;:::-;27713:87::o;16562:100::-;16638:11;:17;16562:100;:::o;31175:2016::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;31295:24;;31322:2;31295:29;;;;:24;31273:19;;;31723:17;31764:1421;31777:11;31771:3;:17;31764:1421;;;31937:28;:20;31962:2;31937:28;:24;:28;:::i;:::-;32151:27;;;32145:34;;32312:2;32280:36;;32274:43;32533:2;32501:36;;;32495:43;;31914:51;;-1:-1:-1;32141:2:30;32137:43;;;;;-1:-1:-1;32274:43:30;;-1:-1:-1;32495:43:30;;-1:-1:-1;32501:36:30;-1:-1:-1;32709:27:30;32733:2;32709:19;32174:3;32495:43;32709:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32703:33;;32856:11;32849:3;:18;;32841:44;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;;;;32956:15;32952:70;;-1:-1:-1;32998:9:30;;;;;;;;;-1:-1:-1;32998:9:30;;32952:70;33130:44;33149:11;33162:5;33169:4;33130:18;:44::i;:::-;;31764:1421;;;2129:1;;;;;;;31175:2016;:::o;21796:145::-;21893:41;;;;21796:145;:::o;20927:251::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;21029:17;;21018:7;:28;;21010:65;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;;;;21085:38;:10;21115:7;21085:38;:29;:38;:::i;:::-;21138:33;;;;;;;;;;;;;;;;;20927:251;:::o;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;33378:550:30:-;33456:7;33545:17;33564:12;33578:14;33602:21;33616:6;33602:13;:21::i;:::-;33542:81;;;;;;;;;;33703:9;33699:205;;;33736:9;33728:28;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;;;;33861:32;33883:9;33861:17;:7;33873:4;33861:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;33854:39;;;;;;;33699:205;-1:-1:-1;33920:1:30;;33378:550;-1:-1:-1;;;;;33378:550:30:o;16359:147::-;16457:42;;;;16359:147;:::o;3169:26::-;;;;;;;;;:::o;38667:1097::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;38772:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38860:17:30;;38852:43;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38984:17:30;;;;;;:12;:17;;;;;;;;38979:584;;39101:7;-1:-1:-1;;;;;39205:20:30;;;39201:103;;39258:31;39273:6;39281:7;39258:14;:31::i;:::-;39245:44;;39201:103;39515:37;:11;39541:10;39515:37;:25;:37;:::i;:::-;38979:584;;39638:35;39652:3;39657:6;39665:7;39638:13;:35::i;:::-;39724:33;;;-1:-1:-1;;;;;39724:33:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;38667:1097;;;:::o;21639:102::-;21716:18;;21639:102;:::o;6709:1358::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;6896:25:30;;;;;;;6888:59;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;;;;7068:39;7082:24;7068:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7068:39:30;;;;;;;;;-1:-1:-1;7068:39:30;;;;;;;;;;;;;;;:13;:39::i;:::-;7059:5;:48;7051:96;;;;-1:-1:-1;;;7051:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:9;7194:601;7218:24;:31;7214:35;;7194:601;;;7308:12;:41;7321:24;7346:1;7321:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7321:27:30;7308:41;;;;;;;;;;;;;;;7304:481;;;7413:5;7369:12;:41;7382:24;7407:1;7382:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7382:27:30;7369:41;;;;;;;;;;;;:49;;-1:-1:-1;;7369:49:30;;;;;;;;;;;7436:294;7460:14;:21;:28;;7486:1;7460:28;:25;:28;:::i;:::-;7456:1;:32;7436:294;;;7542:24;7567:1;7542:27;;;;;;;;;;;;;;;;;;7521:14;:17;;-1:-1:-1;;;;;7542:27:30;;;;7536:1;;7521:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:17:30;:48;7517:195;;;7617:14;7632:21;;-1:-1:-1;;7632:25:30;;;7617:41;;;;;;;;;;;;;;;;7597:14;:17;;-1:-1:-1;;;;;7617:41:30;;;;7612:1;;7597:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;7597:61:30;-1:-1:-1;;;;;7597:61:30;;;;;;;;;;7684:5;;7517:195;7490:3;;7436:294;;;-1:-1:-1;7747:14:30;:23;;;;;-1:-1:-1;;7747:23:30;;;:::i;:::-;;7304:481;7251:3;;7194:601;;;-1:-1:-1;7844:58:30;;;7865:10;7844:58;;;;;;;;;7877:24;7844:58;;;;;;;;;;7865:10;;7877:24;;7844:58;;;;;;;7877:24;;7844:58;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7844:58:30;;;-1:-1:-1;7844:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;7948:31;7955:24;;7948:31;:::i;:::-;-1:-1:-1;8027:25:30;:33;;-1:-1:-1;;8027:33:30;;;6709:1358::o;18215:110::-;18296:22;;18215:110;:::o;23739:25::-;;;;:::o;11082:145::-;11155:7;11208:10;11191:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11191:28:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11191:28:30;;;11181:39;;;;;;11174:46;;11082:145;;;:::o;4641:659::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4787:25;;;;;;;4779:59;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;;;;4959:39;4973:24;4959:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4959:39:30;;;;;;;;;-1:-1:-1;4959:39:30;;;;;;;;;;;;;;;:13;:39::i;:::-;4950:5;:48;4942:96;;;;-1:-1:-1;;;4942:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:31;5091:24;;5084:31;:::i;:::-;5161:25;:33;;-1:-1:-1;;5161:33:30;;;5249:44;;;5275:10;5249:44;;;;;;;;;;;;;;;;;;;;;4641:659;:::o;2948:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2948:31:30;;-1:-1:-1;2948:31:30;:::o;22008:98::-;22083:10;:16;22008:98;:::o;3126:37::-;;;;;;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;30418:425:30:-;30472:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;30633:37;:14;30662:7;30633:37;:28;:37;:::i;:::-;30717:7;:5;:7::i;:::-;:25;;-1:-1:-1;;;;;30717:16:30;;;;;:25;;;;;30734:7;;30717:25;;;;30734:7;30717:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30717:25:30;30795:41;30807:10;30819:7;:5;:7::i;:::-;30795:41;;;-1:-1:-1;;;;;30795:41:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30418:425;;:::o;15480:180::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;15564:40:30;:11;15596:7;15564:40;:31;:40;:::i;34129:1540::-;34212:7;34342:13;:11;:13::i;:::-;-1:-1:-1;;;;;34332:23:30;;;;;;34328:68;;;-1:-1:-1;34378:7:30;34371:14;;34328:68;34428:7;-1:-1:-1;;;;;34482:20:30;;;34478:600;;34654:17;34673:12;34687:14;34711:21;34725:6;34711:13;:21::i;:::-;34651:81;;;;;;;;;;34843:9;34835:41;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;;;;34898:9;34890:28;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;;;;35035:32;35057:9;35035:17;:7;35047:4;35035:17;:11;:17;:::i;:32::-;35020:47;;34478:600;;;;35195:27;35224:22;35248:24;35282:20;:18;:20::i;:::-;35192:110;;;;;;;;;;35368:19;35360:51;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;;;;35429:19;35421:49;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;;;;35605:57;35647:14;35605:37;:12;35622:19;35605:37;:16;:37;:::i;:57::-;35598:64;34129:1540;-1:-1:-1;;;;;;;34129:1540:30:o;21239:177::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;21322:39:30;:10;21353:7;21322:39;:30;:39;:::i;17783:189::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;17870:43:30;:14;17905:7;17870:43;:34;:43;:::i;8555:827::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;8657:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;3437:23;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3509:13;;3534:1;;3509:10;;3520:1;;3509:13;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;8752:14:30;;;;;;;8751:15;8743:49;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;;;;8871:9;8866:384;8886:21;;;8866:384;;;8996:12;:27;9009:10;;9020:1;9009:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9009:13:30;8996:27;;-1:-1:-1;8996:27:30;;;;;;;;-1:-1:-1;8996:27:30;;;;8991:249;;9122:4;9092:12;:27;9105:10;;9116:1;9105:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9105:13:30;9092:27;;-1:-1:-1;9092:27:30;;;;;;;;-1:-1:-1;9092:27:30;:34;;-1:-1:-1;;9092:34:30;;;;;;;;;;9191:14;9211:10;;9222:1;9211:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9191:34:30;;;9211:13;9191:34;;;;;;;-1:-1:-1;;;;;;9191:34:30;-1:-1:-1;;;;;9211:13:30;;;;;;;;;;9191:34;;;;;;-1:-1:-1;8991:249:30;8909:3;;8866:384;;;-1:-1:-1;9259:14:30;:21;;-1:-1:-1;;9259:21:30;;;;;9331:44;;;9348:10;9331:44;;;;;;;;;9360:14;9331:44;;;;;;;;;;9348:10;;9360:14;;9331:44;;;;;;;9360:14;;9331:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9331:44:30;;;-1:-1:-1;9331:44:30;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;8555:827;;:::o;18386:153::-;18487:45;;;;18386:153;:::o;4123:107:25:-;4217:6;;-1:-1:-1;;;;;4205:18:25;;;4217:6;;4205:18;;4123:107::o;13567:401:30:-;13718:35;;;;;;13717:36;13709:66;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;;;;13844:27;13857:4;13863:7;13844:12;:27::i;:::-;-1:-1:-1;13919:35:30;;:42;;-1:-1:-1;;13919:42:30;13957:4;13919:42;;;13567:401::o;2332:158:23:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;2419:64;;;-1:-1:-1;;;2419:64:23;;-1:-1:-1;;;;;2419:64:23;;;;;;;;;:54;;;;;;;:64;;;;;;;;;;;;;;;:54;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;;-1:-1:-1;;;;;;;2387:1891:2:o;1207:245:21:-;1282:7;-1:-1:-1;;;;;1305:20:21;;;1301:145;;1348:33;;;-1:-1:-1;;;1348:33:21;;-1:-1:-1;;;;;1348:33:21;;;;;;;;;:23;;;;;;:33;;;;;;;;;;;;;;;:23;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1348:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:21;;-1:-1:-1;1341:40:21;;1301:145;-1:-1:-1;;;;;;1419:16:21;;;1412:23;;12652:240:30;12757:19;;;;12728:7;;12757:33;;12781:8;12757:33;:23;:33;:::i;:::-;12751:3;:39;12747:139;;;-1:-1:-1;12813:10:30;;12806:17;;12747:139;-1:-1:-1;12861:14:30;;;;12854:21;;14103:317;14254:35;;;;;;14246:73;;;;;-1:-1:-1;;;14246:73:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:12;;;;:22;14103:317::o;5161:156:26:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:26;;5161:156;-1:-1:-1;;;;;;;;5161:156:26:o;12192:288:30:-;12328:27;12350:4;12328:21;:27::i;:::-;12391:7;12373:4;:14;;;:25;;12365:54;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;;;;12446:14;;;;:27;;12465:7;12446:27;:18;:27;:::i;:::-;12429:4;:14;;:44;;;;12192:288;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;-1:-1:-1;;1731:33:24;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;4644:159:26:-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:26;;4644:159;-1:-1:-1;;;;;;;;4644:159:26:o;4305:241::-;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;4442:97;;;-1:-1:-1;;;4442:97:26;;-1:-1:-1;;;;;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;:76;;;;;;;4519:12;;4533:5;;4442:97;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:26;;;;;;;;;;;-1:-1:-1;4305:241:26;-1:-1:-1;;;4305:241:26:o;3757:1095:5:-;4352:27;-1:-1:-1;;;;;4352:25:5;;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;27876:128:30:-;27926:10;:12;;;;;;;;27954:43;;;27974:10;27954:43;;;;;;;;;;;;;;;;;;;;;27876:128::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;2306:66;;;-1:-1:-1;;;2306:66:26;;-1:-1:-1;;;;;2306:66:26;;;;;;;;;:62;;;;;;;:66;;;;;-1:-1:-1;;2306:66:26;;;;;;;;:62;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;285:43;;;-1:-1;;;;;244:29;;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;;;;;;;;:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:26;:40::i;11749:338:30:-;11934:7;11918:4;:12;;;:23;11910:70;;;;-1:-1:-1;;;11910:70:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12048:32;12061:4;12067;:12;;;12048;:32::i;:::-;11749:338;;:::o;5436:141:26:-;5482:7;5524:32;5536:19;;5524:11;:32::i;:::-;-1:-1:-1;;;;;5508:60:26;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5508:62:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5508:62:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5508:62:26;;-1:-1:-1;5436:141:26;:::o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;285:43;;;-1:-1;;;;;244:29;;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;13038:425:30:-;13172:27;13194:4;13172:21;:27::i;:::-;13264:20;;;13376:14;;;;:27;-1:-1:-1;13372:85:30;;;13436:10;;13419:14;;;:27;13038:425;;:::o;14494:370::-;14578:19;;;;:33;;14602:8;14578:33;:23;:33;:::i;:::-;14572:3;:39;14568:290;;;14694:3;14672:19;;;:25;14795:10;;14778:14;;;:27;14824:23;;;;14795:10;;14824:23;14568:290;14494:370;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;-1:-1:-1;;;;;22209:17557:30;;;;;;;;;;;-1:-1:-1;22209:17557:30;;;;;;;-1:-1:-1;22209:17557:30;;;-1:-1:-1;22209:17557:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;;;-1:-1:-1;22209:17557:30;;"},"walletCache.sol:IWalletCache":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"walletCache.sol:WalletCache":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032a265627a7a723158200d133a1b20c5b8d7f88583b755e0cdb58d87241a8e32f00dc43a433c17cfbfdf64736f6c63430005110032","bin-runtime":"60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032a265627a7a723158200d133a1b20c5b8d7f88583b755e0cdb58d87241a8e32f00dc43a433c17cfbfdf64736f6c63430005110032","srcmap":"1150:3249:31:-;;;1122:66:23;1272:58;;1397:66:31;1805:50;;1563:66;1861:65;;1732:66;1932:65;;2290:820;5:2:-1;;;;30:1;27;20:12;5:2;2290:820:31;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2290:820:31;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;2290:820:31;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;2578:3:31;:11;;-1:-1:-1;;;;;;2578:11:31;-1:-1:-1;;;;;2578:11:31;;;;;2599:17;:39;;;2695:27;;2691:85;;2738:11;:27;;;2691:85;2838:34;;2834:106;;2888:18;:41;;;2834:106;3002:34;;2998:106;;3052:18;:41;;;2998:106;2290:820;;;;;;1150:3249;;;;;;","srcmap-runtime":"1150:3249:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1150:3249:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:18;;;:::i;:::-;;;;-1:-1:-1;;;;;2040:18:31;;;;;;;;;;;;;;3337:473;;;:::i;:::-;;4291:106;;;:::i;:::-;;;;;;;;;;;;;;;;1805:50;;;:::i;1364:91:24:-;;;:::i;1861:65:31:-;;;:::i;1932:::-;;;:::i;3954:274::-;;;:::i;2064:32::-;;;:::i;2169:95:23:-;;;:::i;2004:29:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2004:29:31;;:::i;2040:18::-;;;-1:-1:-1;;;;;2040:18:31;;:::o;3337:473::-;3479:13;3535:31;3547:18;;3535:11;:31::i;:::-;3600:3;;3617:18;;3582:4;;-1:-1:-1;;;;;3600:3:31;;3649:16;:14;:16::i;:::-;3679:11;;3704:17;;3495:236;;;;;:::i;:::-;-1:-1:-1;;;;;3495:236:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3495:236:31;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;3741:13:31;27:10:-1;;39:1;23:18;;45:23;;-1:-1;3741:26:31;;;;;;;;-1:-1:-1;;;;;3741:26:31;;-1:-1:-1;;;;;;3741:26:31;;;;;;;;3783:20;;;;;;;3479:252;;-1:-1:-1;3783:20:31;;;;;;3741:26;3783:20;;;3337:473;:::o;4291:106::-;4370:13;:20;4291:106;:::o;1805:50::-;;;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;1861:65:31:-;;;;:::o;1932:::-;;;;:::o;3954:274::-;4017:6;3178:31;3190:18;;3178:11;:31::i;:::-;-1:-1:-1;;;;;3164:45:31;:10;-1:-1:-1;;;;;3164:45:31;;3156:87;;;;;-1:-1:-1;;;3156:87:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;4039:13;:20;4062:1;-1:-1:-1;4035:68:31;;;4079:13;:11;:13::i;:::-;4129;4143:20;;4113:13;;4129;-1:-1:-1;;4143:24:31;;;4129:39;;;;;;;;;;;;;;;;4178:13;:19;;-1:-1:-1;;;;;4129:39:31;;;;-1:-1:-1;4178:13:31;:19;;;;;;;;;;;;;;-1:-1:-1;;4178:19:31;;;;;-1:-1:-1;;;;;;4178:19:31;;;;;;4215:6;-1:-1:-1;3954:274:31;:::o;2064:32::-;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;2004:29:31:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2004:29:31;;-1:-1:-1;2004:29:31;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;1150:3249:31:-;;;;;;;;:::o"}},"sourceList":["controller.sol","externals/Address.sol","externals/ECDSA.sol","externals/ERC165.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/balanceable.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","licence.sol","tokenWhitelist.sol","wallet.sol","walletCache.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[2976],"IController":[2541]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2524,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":3992,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2977,"symbolAliases":[null],"unitAlias":""},"id":2525,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":4249,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2977,"symbolAliases":[null],"unitAlias":""},"id":2526,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[2541],"name":"IController","scope":2977},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":2541,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2533,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2527,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":2528,"name":"VariableDeclaration","src":"1015:7:0"}],"id":2529,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2533,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2530,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":2531,"name":"VariableDeclaration","src":"1047:4:0"}],"id":2532,"name":"ParameterList","src":"1046:6:0"}],"id":2533,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":2541,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2540,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2534,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":2535,"name":"VariableDeclaration","src":"1076:7:0"}],"id":2536,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2540,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2537,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":2538,"name":"VariableDeclaration","src":"1108:4:0"}],"id":2539,"name":"ParameterList","src":"1107:6:0"}],"id":2540,"name":"FunctionDefinition","src":"1059:55:0"}],"id":2541,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[2541,3991,4248],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[2976,4248,3991,2541],"name":"Controller","scope":2977},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":2541,"type":"contract IController"},"id":2542,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":2543,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3991,"type":"contract Ownable"},"id":2544,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":2545,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4248,"type":"contract Transferrable"},"id":2546,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":2547,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2553,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2548,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":2549,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":2553,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2550,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":2551,"name":"VariableDeclaration","src":"1564:19:0"}],"id":2552,"name":"ParameterList","src":"1546:38:0"}],"id":2553,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2554,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":2555,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2556,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":2557,"name":"VariableDeclaration","src":"1631:19:0"}],"id":2558,"name":"ParameterList","src":"1613:38:0"}],"id":2559,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2565,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2560,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":2561,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":2565,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2562,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":2563,"name":"VariableDeclaration","src":"1692:14:0"}],"id":2564,"name":"ParameterList","src":"1674:33:0"}],"id":2565,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2566,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":2567,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":2571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2568,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":2569,"name":"VariableDeclaration","src":"1749:14:0"}],"id":2570,"name":"ParameterList","src":"1731:33:0"}],"id":2571,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2579,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2572,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":2573,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":2579,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2574,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":2575,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":2579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2576,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":2577,"name":"VariableDeclaration","src":"1814:15:0"}],"id":2578,"name":"ParameterList","src":"1784:46:0"}],"id":2579,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2583,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2580,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":2581,"name":"VariableDeclaration","src":"1851:15:0"}],"id":2582,"name":"ParameterList","src":"1850:17:0"}],"id":2583,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2587,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2584,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":2585,"name":"VariableDeclaration","src":"1887:15:0"}],"id":2586,"name":"ParameterList","src":"1886:17:0"}],"id":2587,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":2976,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2588,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":2589,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":2590,"name":"Mapping","src":"1910:24:0"}],"id":2591,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":2976,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2592,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":2593,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":2976,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2594,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":2595,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":2596,"name":"Mapping","src":"1991:24:0"}],"id":2597,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":2976,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2598,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":2599,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":2976,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2600,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":2601,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":2611,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2602,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":2603,"name":"VariableDeclaration","src":"2251:30:0"}],"id":2604,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":2609,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"type(contract Ownable)","value":"Ownable"},"id":2605,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2603,"type":"address payable","value":"_ownerAddress_"},"id":2606,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2607,"name":"Literal","src":"2314:5:0"}],"id":2608,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":2610,"name":"Block","src":"2321:2:0"}],"id":2611,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2612,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2613,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2614,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2615,"name":"Identifier","src":"2431:3:0"}],"id":2616,"name":"MemberAccess","src":"2431:10:0"}],"id":2617,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2618,"name":"Literal","src":"2444:24:0"}],"id":2619,"name":"FunctionCall","src":"2414:55:0"}],"id":2620,"name":"ExpressionStatement","src":"2414:55:0"},{"id":2621,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":2622,"name":"Block","src":"2404:83:0"}],"id":2623,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2624,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2625,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2626,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2627,"name":"Identifier","src":"2588:3:0"}],"id":2628,"name":"MemberAccess","src":"2588:10:0"}],"id":2629,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2630,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2631,"name":"Identifier","src":"2612:3:0"}],"id":2632,"name":"MemberAccess","src":"2612:10:0"}],"id":2633,"name":"IndexAccess","src":"2603:20:0"}],"id":2634,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2635,"name":"Literal","src":"2625:24:0"}],"id":2636,"name":"FunctionCall","src":"2571:79:0"}],"id":2637,"name":"ExpressionStatement","src":"2571:79:0"},{"id":2638,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":2639,"name":"Block","src":"2561:107:0"}],"id":2640,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2641,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2642,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2755,"type":"function () view returns (bool)","value":"isStopped"},"id":2643,"name":"Identifier","src":"2762:9:0"}],"id":2644,"name":"FunctionCall","src":"2762:11:0"}],"id":2645,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":2646,"name":"Literal","src":"2775:23:0"}],"id":2647,"name":"FunctionCall","src":"2753:46:0"}],"id":2648,"name":"ExpressionStatement","src":"2753:46:0"},{"id":2649,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":2650,"name":"Block","src":"2743:74:0"}],"id":2651,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2665,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2652,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":2653,"name":"VariableDeclaration","src":"2958:16:0"}],"id":2654,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2659,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":2655,"name":"Identifier","src":"2985:9:0"}],"id":2656,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2657,"name":"Identifier","src":"2995:10:0"}],"id":2658,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2809,"type":"function (address)","value":"_addAdmin"},"id":2660,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2653,"type":"address","value":"_account"},"id":2661,"name":"Identifier","src":"3026:8:0"}],"id":2662,"name":"FunctionCall","src":"3016:19:0"}],"id":2663,"name":"ExpressionStatement","src":"3016:19:0"}],"id":2664,"name":"Block","src":"3006:36:0"}],"id":2665,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2677,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2666,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":2667,"name":"VariableDeclaration","src":"3192:16:0"}],"id":2668,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2671,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":2669,"name":"Identifier","src":"3219:9:0"}],"id":2670,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2837,"type":"function (address)","value":"_removeAdmin"},"id":2672,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2667,"type":"address","value":"_account"},"id":2673,"name":"Identifier","src":"3252:8:0"}],"id":2674,"name":"FunctionCall","src":"3239:22:0"}],"id":2675,"name":"ExpressionStatement","src":"3239:22:0"}],"id":2676,"name":"Block","src":"3229:39:0"}],"id":2677,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":2976,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2678,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2685,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2679,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":2680,"name":"VariableDeclaration","src":"3365:7:0"}],"id":2681,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":2681},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2593,"type":"uint256","value":"_adminCount"},"id":2682,"name":"Identifier","src":"3391:11:0"}],"id":2683,"name":"Return","src":"3384:18:0"}],"id":2684,"name":"Block","src":"3374:35:0"}],"id":2685,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2699,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2686,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":2687,"name":"VariableDeclaration","src":"3570:16:0"}],"id":2688,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2693,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2689,"name":"Identifier","src":"3597:16:0"}],"id":2690,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2691,"name":"Identifier","src":"3614:10:0"}],"id":2692,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2891,"type":"function (address)","value":"_addController"},"id":2694,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2687,"type":"address","value":"_account"},"id":2695,"name":"Identifier","src":"3650:8:0"}],"id":2696,"name":"FunctionCall","src":"3635:24:0"}],"id":2697,"name":"ExpressionStatement","src":"3635:24:0"}],"id":2698,"name":"Block","src":"3625:41:0"}],"id":2699,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2711,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2700,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":2701,"name":"VariableDeclaration","src":"3836:16:0"}],"id":2702,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2705,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2703,"name":"Identifier","src":"3863:16:0"}],"id":2704,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2919,"type":"function (address)","value":"_removeController"},"id":2706,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2701,"type":"address","value":"_account"},"id":2707,"name":"Identifier","src":"3908:8:0"}],"id":2708,"name":"FunctionCall","src":"3890:27:0"}],"id":2709,"name":"ExpressionStatement","src":"3890:27:0"}],"id":2710,"name":"Block","src":"3880:44:0"}],"id":2711,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":2976,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2712,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2719,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2713,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":2714,"name":"VariableDeclaration","src":"4069:7:0"}],"id":2715,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":2715},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2599,"type":"uint256","value":"_controllerCount"},"id":2716,"name":"Identifier","src":"4095:16:0"}],"id":2717,"name":"Return","src":"4088:23:0"}],"id":2718,"name":"Block","src":"4078:40:0"}],"id":2719,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":2976,"stateMutability":"view","superFunction":2540,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2733,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2720,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":2721,"name":"VariableDeclaration","src":"4239:16:0"}],"id":2722,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2733,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2725,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":2726,"name":"VariableDeclaration","src":"4291:4:0"}],"id":2727,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2723,"name":"Identifier","src":"4271:10:0"}],"id":2724,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":2727},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2728,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2721,"type":"address","value":"_account"},"id":2729,"name":"Identifier","src":"4323:8:0"}],"id":2730,"name":"IndexAccess","src":"4314:18:0"}],"id":2731,"name":"Return","src":"4307:25:0"}],"id":2732,"name":"Block","src":"4297:42:0"}],"id":2733,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":2976,"stateMutability":"view","superFunction":2533,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2747,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2734,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":2735,"name":"VariableDeclaration","src":"4473:16:0"}],"id":2736,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2747,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2739,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":2740,"name":"VariableDeclaration","src":"4525:4:0"}],"id":2741,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2737,"name":"Identifier","src":"4505:10:0"}],"id":2738,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":2741},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2742,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2735,"type":"address","value":"_account"},"id":2743,"name":"Identifier","src":"4562:8:0"}],"id":2744,"name":"IndexAccess","src":"4548:23:0"}],"id":2745,"name":"Return","src":"4541:30:0"}],"id":2746,"name":"Block","src":"4531:47:0"}],"id":2747,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":2976,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2748,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2755,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2749,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":2750,"name":"VariableDeclaration","src":"4766:4:0"}],"id":2751,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":2751},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2601,"type":"bool","value":"_stopped"},"id":2752,"name":"Identifier","src":"4789:8:0"}],"id":2753,"name":"Return","src":"4782:15:0"}],"id":2754,"name":"Block","src":"4772:32:0"}],"id":2755,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2809,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2756,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":2757,"name":"VariableDeclaration","src":"4891:16:0"}],"id":2758,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2759,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2760,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2761,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2762,"name":"Identifier","src":"4945:8:0"}],"id":2763,"name":"IndexAccess","src":"4936:18:0"}],"id":2764,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":2765,"name":"Literal","src":"4956:38:0"}],"id":2766,"name":"FunctionCall","src":"4927:68:0"}],"id":2767,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2768,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2769,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2770,"name":"Identifier","src":"5028:8:0"}],"id":2771,"name":"IndexAccess","src":"5014:23:0"}],"id":2772,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":2773,"name":"Literal","src":"5039:42:0"}],"id":2774,"name":"FunctionCall","src":"5005:77:0"}],"id":2775,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2776,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2777,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2778,"name":"Identifier","src":"5110:8:0"}],"id":2779,"name":"FunctionCall","src":"5101:18:0"}],"id":2780,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":2781,"name":"Literal","src":"5121:39:0"}],"id":2782,"name":"FunctionCall","src":"5092:69:0"}],"id":2783,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2784,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2785,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2786,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2787,"name":"Literal","src":"5199:1:0"}],"id":2788,"name":"FunctionCall","src":"5191:10:0"}],"id":2789,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":2790,"name":"Literal","src":"5203:38:0"}],"id":2791,"name":"FunctionCall","src":"5171:71:0"}],"id":2792,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2793,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2794,"name":"Identifier","src":"5261:8:0"}],"id":2795,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2796,"name":"Literal","src":"5273:4:0"}],"id":2797,"name":"Assignment","src":"5252:25:0"}],"id":2798,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2593,"type":"uint256","value":"_adminCount"},"id":2799,"name":"Identifier","src":"5287:11:0"}],"id":2800,"name":"UnaryOperation","src":"5287:13:0"}],"id":2801,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"function (address,address)","value":"AddedAdmin"},"id":2802,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2803,"name":"Identifier","src":"5326:3:0"}],"id":2804,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2805,"name":"Identifier","src":"5338:8:0"}],"id":2806,"name":"FunctionCall","src":"5315:32:0"}],"id":2807,"name":"EmitStatement","src":"5310:37:0"}],"id":2808,"name":"Block","src":"4917:437:0"}],"id":2809,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2837,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2810,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":2811,"name":"VariableDeclaration","src":"5453:16:0"}],"id":2812,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2813,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2814,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2815,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2811,"type":"address","value":"_account"},"id":2816,"name":"Identifier","src":"5506:8:0"}],"id":2817,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":2818,"name":"Literal","src":"5517:34:0"}],"id":2819,"name":"FunctionCall","src":"5489:63:0"}],"id":2820,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2821,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2811,"type":"address","value":"_account"},"id":2822,"name":"Identifier","src":"5571:8:0"}],"id":2823,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2824,"name":"Literal","src":"5583:5:0"}],"id":2825,"name":"Assignment","src":"5562:26:0"}],"id":2826,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2593,"type":"uint256","value":"_adminCount"},"id":2827,"name":"Identifier","src":"5598:11:0"}],"id":2828,"name":"UnaryOperation","src":"5598:13:0"}],"id":2829,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2571,"type":"function (address,address)","value":"RemovedAdmin"},"id":2830,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2831,"name":"Identifier","src":"5639:3:0"}],"id":2832,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2811,"type":"address","value":"_account"},"id":2833,"name":"Identifier","src":"5651:8:0"}],"id":2834,"name":"FunctionCall","src":"5626:34:0"}],"id":2835,"name":"EmitStatement","src":"5621:39:0"}],"id":2836,"name":"Block","src":"5479:188:0"}],"id":2837,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2891,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2838,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":2839,"name":"VariableDeclaration","src":"5764:16:0"}],"id":2840,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2841,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2842,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2843,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2844,"name":"Identifier","src":"5818:8:0"}],"id":2845,"name":"IndexAccess","src":"5809:18:0"}],"id":2846,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":2847,"name":"Literal","src":"5829:38:0"}],"id":2848,"name":"FunctionCall","src":"5800:68:0"}],"id":2849,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2850,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2851,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2852,"name":"Identifier","src":"5901:8:0"}],"id":2853,"name":"IndexAccess","src":"5887:23:0"}],"id":2854,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":2855,"name":"Literal","src":"5912:42:0"}],"id":2856,"name":"FunctionCall","src":"5878:77:0"}],"id":2857,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2858,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2859,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2860,"name":"Identifier","src":"5983:8:0"}],"id":2861,"name":"FunctionCall","src":"5974:18:0"}],"id":2862,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":2863,"name":"Literal","src":"5994:39:0"}],"id":2864,"name":"FunctionCall","src":"5965:69:0"}],"id":2865,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2866,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2867,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2868,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2869,"name":"Literal","src":"6072:1:0"}],"id":2870,"name":"FunctionCall","src":"6064:10:0"}],"id":2871,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":2872,"name":"Literal","src":"6076:38:0"}],"id":2873,"name":"FunctionCall","src":"6044:71:0"}],"id":2874,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2875,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2876,"name":"Identifier","src":"6139:8:0"}],"id":2877,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2878,"name":"Literal","src":"6151:4:0"}],"id":2879,"name":"Assignment","src":"6125:30:0"}],"id":2880,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2599,"type":"uint256","value":"_controllerCount"},"id":2881,"name":"Identifier","src":"6165:16:0"}],"id":2882,"name":"UnaryOperation","src":"6165:18:0"}],"id":2883,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2553,"type":"function (address,address)","value":"AddedController"},"id":2884,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2885,"name":"Identifier","src":"6214:3:0"}],"id":2886,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2887,"name":"Identifier","src":"6226:8:0"}],"id":2888,"name":"FunctionCall","src":"6198:37:0"}],"id":2889,"name":"EmitStatement","src":"6193:42:0"}],"id":2890,"name":"Block","src":"5790:452:0"}],"id":2891,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2919,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2892,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":2893,"name":"VariableDeclaration","src":"6351:16:0"}],"id":2894,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2895,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2896,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2897,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2893,"type":"address","value":"_account"},"id":2898,"name":"Identifier","src":"6409:8:0"}],"id":2899,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":2900,"name":"Literal","src":"6420:38:0"}],"id":2901,"name":"FunctionCall","src":"6387:72:0"}],"id":2902,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2903,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2893,"type":"address","value":"_account"},"id":2904,"name":"Identifier","src":"6483:8:0"}],"id":2905,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2906,"name":"Literal","src":"6495:5:0"}],"id":2907,"name":"Assignment","src":"6469:31:0"}],"id":2908,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2599,"type":"uint256","value":"_controllerCount"},"id":2909,"name":"Identifier","src":"6510:16:0"}],"id":2910,"name":"UnaryOperation","src":"6510:18:0"}],"id":2911,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"function (address,address)","value":"RemovedController"},"id":2912,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2913,"name":"Identifier","src":"6561:3:0"}],"id":2914,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2893,"type":"address","value":"_account"},"id":2915,"name":"Identifier","src":"6573:8:0"}],"id":2916,"name":"FunctionCall","src":"6543:39:0"}],"id":2917,"name":"EmitStatement","src":"6538:44:0"}],"id":2918,"name":"Block","src":"6377:212:0"}],"id":2919,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2920,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":2923,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2921,"name":"Identifier","src":"6687:16:0"}],"id":2922,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2601,"type":"bool","value":"_stopped"},"id":2924,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2925,"name":"Literal","src":"6725:4:0"}],"id":2926,"name":"Assignment","src":"6714:15:0"}],"id":2927,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"function (address)","value":"Stopped"},"id":2928,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2929,"name":"Identifier","src":"6752:3:0"}],"id":2930,"name":"MemberAccess","src":"6752:10:0"}],"id":2931,"name":"FunctionCall","src":"6744:19:0"}],"id":2932,"name":"EmitStatement","src":"6739:24:0"}],"id":2933,"name":"Block","src":"6704:66:0"}],"id":2934,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2935,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":2938,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":2936,"name":"Identifier","src":"6845:9:0"}],"id":2937,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2601,"type":"bool","value":"_stopped"},"id":2939,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2940,"name":"Literal","src":"6876:5:0"}],"id":2941,"name":"Assignment","src":"6865:16:0"}],"id":2942,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2587,"type":"function (address)","value":"Started"},"id":2943,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2944,"name":"Identifier","src":"6904:3:0"}],"id":2945,"name":"MemberAccess","src":"6904:10:0"}],"id":2946,"name":"FunctionCall","src":"6896:19:0"}],"id":2947,"name":"EmitStatement","src":"6891:24:0"}],"id":2948,"name":"Block","src":"6855:67:0"}],"id":2949,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2975,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2950,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":2951,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":2975,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2952,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":2953,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":2975,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2954,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":2955,"name":"VariableDeclaration","src":"7063:15:0"}],"id":2956,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":2961,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2623,"type":"modifier ()","value":"onlyAdmin"},"id":2957,"name":"Identifier","src":"7089:9:0"}],"id":2958,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2959,"name":"Identifier","src":"7099:10:0"}],"id":2960,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2962,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2951,"type":"address payable","value":"_to"},"id":2963,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2953,"type":"address","value":"_asset"},"id":2964,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2955,"type":"uint256","value":"_amount"},"id":2965,"name":"Identifier","src":"7147:7:0"}],"id":2966,"name":"FunctionCall","src":"7120:35:0"}],"id":2967,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2579,"type":"function (address,address,uint256)","value":"Claimed"},"id":2968,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2951,"type":"address payable","value":"_to"},"id":2969,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2953,"type":"address","value":"_asset"},"id":2970,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2955,"type":"uint256","value":"_amount"},"id":2971,"name":"Identifier","src":"7191:7:0"}],"id":2972,"name":"FunctionCall","src":"7170:29:0"}],"id":2973,"name":"EmitStatement","src":"7165:34:0"}],"id":2974,"name":"Block","src":"7110:96:0"}],"id":2975,"name":"FunctionDefinition","src":"7011:195:0"}],"id":2976,"name":"ContractDefinition","src":"1460:5748:0"}],"id":2977,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[3306]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3289,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[3306],"name":"Address","scope":3307},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":3306,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":3305,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3290,"name":"ElementaryTypeName","src":"562:7:1"}],"id":3291,"name":"VariableDeclaration","src":"562:15:1"}],"id":3292,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":3305,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3293,"name":"ElementaryTypeName","src":"602:4:1"}],"id":3294,"name":"VariableDeclaration","src":"602:4:1"}],"id":3295,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[3297],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":3304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3296,"name":"ElementaryTypeName","src":"805:7:1"}],"id":3297,"name":"VariableDeclaration","src":"805:12:1"}],"id":3298,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":3297,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":3291,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":3299,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":3295},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3297,"type":"uint256","value":"size"},"id":3300,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3301,"name":"Literal","src":"947:1:1"}],"id":3302,"name":"BinaryOperation","src":"940:8:1"}],"id":3303,"name":"Return","src":"933:15:1"}],"id":3304,"name":"Block","src":"608:347:1"}],"id":3305,"name":"FunctionDefinition","src":"542:413:1"}],"id":3306,"name":"ContractDefinition","src":"94:863:1"}],"id":3307,"name":"SourceUnit","src":"0:958:1"}},"externals/ECDSA.sol":{"AST":{"attributes":{"absolutePath":"externals/ECDSA.sol","exportedSymbols":{"ECDSA":[3387]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3308,"name":"PragmaDirective","src":"1161:23:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n * These functions can be used to verify that a message was signed by the holder\nof the private keys of a given address.","fullyImplemented":true,"linearizedBaseContracts":[3387],"name":"ECDSA","scope":3388},"children":[{"attributes":{"documentation":"@dev Returns the address that signed a hashed message (`hash`) with\n`signature`. This address can then be used for verification purposes.\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\nthis function rejects them by requiring the `s` value to be in the lower\nhalf order, and the `v` value to be either 27 or 28.\n * NOTE: This call _does not revert_ if the signature is invalid, or\nif the signer is otherwise unable to be retrieved. In those scenarios,\nthe zero address is returned.\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\nverification to be secure: it is possible to craft signatures that\nrecover to arbitrary addresses for non-hashed data. A safe way to ensure\nthis is by receiving a hash of the original message (which may otherwise\nbe too long), and then calling {toEthSignedMessageHash} on it.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recover","scope":3387,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":3370,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3309,"name":"ElementaryTypeName","src":"2404:7:2"}],"id":3310,"name":"VariableDeclaration","src":"2404:12:2"},{"attributes":{"constant":false,"name":"signature","scope":3370,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3311,"name":"ElementaryTypeName","src":"2418:5:2"}],"id":3312,"name":"VariableDeclaration","src":"2418:22:2"}],"id":3313,"name":"ParameterList","src":"2403:38:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3370,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3314,"name":"ElementaryTypeName","src":"2465:7:2"}],"id":3315,"name":"VariableDeclaration","src":"2465:7:2"}],"id":3316,"name":"ParameterList","src":"2464:9:2"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3312,"type":"bytes memory","value":"signature"},"id":3317,"name":"Identifier","src":"2526:9:2"}],"id":3318,"name":"MemberAccess","src":"2526:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":3319,"name":"Literal","src":"2546:2:2"}],"id":3320,"name":"BinaryOperation","src":"2526:22:2"},{"children":[{"attributes":{"functionReturnParameters":3316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3321,"name":"ElementaryTypeNameExpression","src":"2572:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3322,"name":"Literal","src":"2580:1:2"}],"id":3323,"name":"FunctionCall","src":"2572:10:2"}],"id":3324,"name":"TupleExpression","src":"2571:12:2"}],"id":3325,"name":"Return","src":"2564:19:2"}],"id":3326,"name":"Block","src":"2550:44:2"}],"id":3327,"name":"IfStatement","src":"2522:72:2"},{"attributes":{"assignments":[3329],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":3369,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3328,"name":"ElementaryTypeName","src":"2660:7:2"}],"id":3329,"name":"VariableDeclaration","src":"2660:9:2"}],"id":3330,"name":"VariableDeclarationStatement","src":"2660:9:2"},{"attributes":{"assignments":[3332],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":3369,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3331,"name":"ElementaryTypeName","src":"2679:7:2"}],"id":3332,"name":"VariableDeclaration","src":"2679:9:2"}],"id":3333,"name":"VariableDeclarationStatement","src":"2679:9:2"},{"attributes":{"assignments":[3335],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":3369,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3334,"name":"ElementaryTypeName","src":"2698:5:2"}],"id":3335,"name":"VariableDeclaration","src":"2698:7:2"}],"id":3336,"name":"VariableDeclarationStatement","src":"2698:7:2"},{"attributes":{"externalReferences":[{"r":{"declaration":3329,"isOffset":false,"isSlot":false,"src":"2918:1:2","valueSize":1}},{"signature":{"declaration":3312,"isOffset":false,"isSlot":false,"src":"2933:9:2","valueSize":1}},{"v":{"declaration":3335,"isOffset":false,"isSlot":false,"src":"3008:1:2","valueSize":1}},{"s":{"declaration":3332,"isOffset":false,"isSlot":false,"src":"2963:1:2","valueSize":1}},{"signature":{"declaration":3312,"isOffset":false,"isSlot":false,"src":"2978:9:2","valueSize":1}},{"signature":{"declaration":3312,"isOffset":false,"isSlot":false,"src":"3031:9:2","valueSize":1}}],"operations":"{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}"},"children":[],"id":3337,"name":"InlineAssembly","src":"2895:164:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":3338,"name":"ElementaryTypeNameExpression","src":"3947:7:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3332,"type":"bytes32","value":"s"},"id":3339,"name":"Identifier","src":"3955:1:2"}],"id":3340,"name":"FunctionCall","src":"3947:10:2"},{"attributes":{"argumentTypes":null,"hexvalue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5789...(69 digits omitted)...7168","value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"id":3341,"name":"Literal","src":"3960:66:2"}],"id":3342,"name":"BinaryOperation","src":"3947:79:2"},{"children":[{"attributes":{"functionReturnParameters":3316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3343,"name":"ElementaryTypeNameExpression","src":"4049:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3344,"name":"Literal","src":"4057:1:2"}],"id":3345,"name":"FunctionCall","src":"4049:10:2"}],"id":3346,"name":"Return","src":"4042:17:2"}],"id":3347,"name":"Block","src":"4028:42:2"}],"id":3348,"name":"IfStatement","src":"3943:127:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"uint8","value":"v"},"id":3349,"name":"Identifier","src":"4084:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":3350,"name":"Literal","src":"4089:2:2"}],"id":3351,"name":"BinaryOperation","src":"4084:7:2"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"uint8","value":"v"},"id":3352,"name":"Identifier","src":"4095:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":3353,"name":"Literal","src":"4100:2:2"}],"id":3354,"name":"BinaryOperation","src":"4095:7:2"}],"id":3355,"name":"BinaryOperation","src":"4084:18:2"},{"children":[{"attributes":{"functionReturnParameters":3316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3356,"name":"ElementaryTypeNameExpression","src":"4125:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3357,"name":"Literal","src":"4133:1:2"}],"id":3358,"name":"FunctionCall","src":"4125:10:2"}],"id":3359,"name":"Return","src":"4118:17:2"}],"id":3360,"name":"Block","src":"4104:42:2"}],"id":3361,"name":"IfStatement","src":"4080:66:2"},{"attributes":{"functionReturnParameters":3316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":10299,"type":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)","value":"ecrecover"},"id":3362,"name":"Identifier","src":"4247:9:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3310,"type":"bytes32","value":"hash"},"id":3363,"name":"Identifier","src":"4257:4:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"uint8","value":"v"},"id":3364,"name":"Identifier","src":"4263:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3329,"type":"bytes32","value":"r"},"id":3365,"name":"Identifier","src":"4266:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3332,"type":"bytes32","value":"s"},"id":3366,"name":"Identifier","src":"4269:1:2"}],"id":3367,"name":"FunctionCall","src":"4247:24:2"}],"id":3368,"name":"Return","src":"4240:31:2"}],"id":3369,"name":"Block","src":"2474:1804:2"}],"id":3370,"name":"FunctionDefinition","src":"2387:1891:2"},{"attributes":{"documentation":"@dev Returns an Ethereum Signed Message, created from a `hash`. This\nreplicates the behavior of the\nhttps://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\nJSON-RPC method.\n * See {recover}.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toEthSignedMessageHash","scope":3387,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":3386,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3371,"name":"ElementaryTypeName","src":"4574:7:2"}],"id":3372,"name":"VariableDeclaration","src":"4574:12:2"}],"id":3373,"name":"ParameterList","src":"4573:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3386,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3374,"name":"ElementaryTypeName","src":"4611:7:2"}],"id":3375,"name":"VariableDeclaration","src":"4611:7:2"}],"id":3376,"name":"ParameterList","src":"4610:9:2"},{"children":[{"attributes":{"functionReturnParameters":3376},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":3377,"name":"Identifier","src":"4731:9:2"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string \"\u0019Ethereum Signed Message:\n32\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3378,"name":"Identifier","src":"4741:3:2"}],"id":3379,"name":"MemberAccess","src":"4741:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"19457468657265756d205369676e6564204d6573736167653a0a3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0019Ethereum Signed Message:\n32\"","value":"\u0019Ethereum Signed Message:\n32"},"id":3380,"name":"Literal","src":"4758:34:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3372,"type":"bytes32","value":"hash"},"id":3381,"name":"Identifier","src":"4794:4:2"}],"id":3382,"name":"FunctionCall","src":"4741:58:2"}],"id":3383,"name":"FunctionCall","src":"4731:69:2"}],"id":3384,"name":"Return","src":"4724:76:2"}],"id":3385,"name":"Block","src":"4620:187:2"}],"id":3386,"name":"FunctionDefinition","src":"4542:265:2"}],"id":3387,"name":"ContractDefinition","src":"1392:3417:2"}],"id":3388,"name":"SourceUnit","src":"1161:3649:2"}},"externals/ERC165.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC165.sol","exportedSymbols":{"ERC165":[3397]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3389,"name":"PragmaDirective","src":"0:24:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC165 interface specifies a standard way of querying if a contract implements an interface.","fullyImplemented":false,"linearizedBaseContracts":[3397],"name":"ERC165","scope":3398},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3397,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3396,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3390,"name":"ElementaryTypeName","src":"180:6:3"}],"id":3391,"name":"VariableDeclaration","src":"180:6:3"}],"id":3392,"name":"ParameterList","src":"179:8:3"},{"children":[{"attributes":{"constant":false,"name":"","scope":3396,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3393,"name":"ElementaryTypeName","src":"211:4:3"}],"id":3394,"name":"VariableDeclaration","src":"211:4:3"}],"id":3395,"name":"ParameterList","src":"210:6:3"}],"id":3396,"name":"FunctionDefinition","src":"153:64:3"}],"id":3397,"name":"ContractDefinition","src":"130:89:3"}],"id":3398,"name":"SourceUnit","src":"0:220:3"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[3450]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3399,"name":"PragmaDirective","src":"0:24:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[3450],"name":"ERC20","scope":3451},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":3450,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":3408,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3400,"name":"ElementaryTypeName","src":"193:7:4"}],"id":3401,"name":"VariableDeclaration","src":"193:14:4"},{"attributes":{"constant":false,"name":"_spender","scope":3408,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3402,"name":"ElementaryTypeName","src":"209:7:4"}],"id":3403,"name":"VariableDeclaration","src":"209:16:4"}],"id":3404,"name":"ParameterList","src":"192:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3408,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3405,"name":"ElementaryTypeName","src":"250:7:4"}],"id":3406,"name":"VariableDeclaration","src":"250:7:4"}],"id":3407,"name":"ParameterList","src":"249:9:4"}],"id":3408,"name":"FunctionDefinition","src":"174:85:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":3450,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":3417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3409,"name":"ElementaryTypeName","src":"281:7:4"}],"id":3410,"name":"VariableDeclaration","src":"281:16:4"},{"attributes":{"constant":false,"name":"_value","scope":3417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3411,"name":"ElementaryTypeName","src":"299:7:4"}],"id":3412,"name":"VariableDeclaration","src":"299:14:4"}],"id":3413,"name":"ParameterList","src":"280:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3417,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3414,"name":"ElementaryTypeName","src":"333:4:4"}],"id":3415,"name":"VariableDeclaration","src":"333:4:4"}],"id":3416,"name":"ParameterList","src":"332:6:4"}],"id":3417,"name":"FunctionDefinition","src":"264:75:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":3450,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":3424,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3418,"name":"ElementaryTypeName","src":"363:7:4"}],"id":3419,"name":"VariableDeclaration","src":"363:12:4"}],"id":3420,"name":"ParameterList","src":"362:14:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3424,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3421,"name":"ElementaryTypeName","src":"400:7:4"}],"id":3422,"name":"VariableDeclaration","src":"400:7:4"}],"id":3423,"name":"ParameterList","src":"399:9:4"}],"id":3424,"name":"FunctionDefinition","src":"344:65:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":3450,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3425,"name":"ParameterList","src":"434:2:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3429,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3426,"name":"ElementaryTypeName","src":"460:7:4"}],"id":3427,"name":"VariableDeclaration","src":"460:7:4"}],"id":3428,"name":"ParameterList","src":"459:9:4"}],"id":3429,"name":"FunctionDefinition","src":"414:55:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":3450,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3438,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3430,"name":"ElementaryTypeName","src":"492:7:4"}],"id":3431,"name":"VariableDeclaration","src":"492:11:4"},{"attributes":{"constant":false,"name":"_value","scope":3438,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3432,"name":"ElementaryTypeName","src":"505:7:4"}],"id":3433,"name":"VariableDeclaration","src":"505:14:4"}],"id":3434,"name":"ParameterList","src":"491:29:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3438,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3435,"name":"ElementaryTypeName","src":"539:4:4"}],"id":3436,"name":"VariableDeclaration","src":"539:4:4"}],"id":3437,"name":"ParameterList","src":"538:6:4"}],"id":3438,"name":"FunctionDefinition","src":"474:71:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":3450,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":3449,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3439,"name":"ElementaryTypeName","src":"572:7:4"}],"id":3440,"name":"VariableDeclaration","src":"572:13:4"},{"attributes":{"constant":false,"name":"_to","scope":3449,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3441,"name":"ElementaryTypeName","src":"587:7:4"}],"id":3442,"name":"VariableDeclaration","src":"587:11:4"},{"attributes":{"constant":false,"name":"_value","scope":3449,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3443,"name":"ElementaryTypeName","src":"600:7:4"}],"id":3444,"name":"VariableDeclaration","src":"600:14:4"}],"id":3445,"name":"ParameterList","src":"571:44:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3449,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3446,"name":"ElementaryTypeName","src":"634:4:4"}],"id":3447,"name":"VariableDeclaration","src":"634:4:4"}],"id":3448,"name":"ParameterList","src":"633:6:4"}],"id":3449,"name":"FunctionDefinition","src":"550:90:4"}],"id":3450,"name":"ContractDefinition","src":"152:490:4"}],"id":3451,"name":"SourceUnit","src":"0:643:4"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[3669]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3452,"name":"PragmaDirective","src":"1161:23:5"},{"attributes":{"SourceUnit":3451,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":3670,"symbolAliases":[null],"unitAlias":""},"id":3453,"name":"ImportDirective","src":"1186:21:5"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":3670,"symbolAliases":[null],"unitAlias":""},"id":3454,"name":"ImportDirective","src":"1208:24:5"},{"attributes":{"SourceUnit":3307,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":3670,"symbolAliases":[null],"unitAlias":""},"id":3455,"name":"ImportDirective","src":"1233:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[3669],"name":"SafeERC20","scope":3670},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":3456,"name":"UserDefinedTypeName","src":"1745:8:5"},{"attributes":{"name":"uint256","type":"uint256"},"id":3457,"name":"ElementaryTypeName","src":"1758:7:5"}],"id":3458,"name":"UsingForDirective","src":"1739:27:5"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":3306,"type":"library Address"},"id":3459,"name":"UserDefinedTypeName","src":"1777:7:5"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3460,"name":"ElementaryTypeName","src":"1789:7:5"}],"id":3461,"name":"UsingForDirective","src":"1771:26:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3483,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3462,"name":"UserDefinedTypeName","src":"1825:5:5"}],"id":3463,"name":"VariableDeclaration","src":"1825:11:5"},{"attributes":{"constant":false,"name":"to","scope":3483,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3464,"name":"ElementaryTypeName","src":"1838:7:5"}],"id":3465,"name":"VariableDeclaration","src":"1838:10:5"},{"attributes":{"constant":false,"name":"value","scope":3483,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3466,"name":"ElementaryTypeName","src":"1850:7:5"}],"id":3467,"name":"VariableDeclaration","src":"1850:13:5"}],"id":3468,"name":"ParameterList","src":"1824:40:5"},{"attributes":{"parameters":[null]},"children":[],"id":3469,"name":"ParameterList","src":"1874:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3470,"name":"Identifier","src":"1884:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3463,"type":"contract ERC20","value":"token"},"id":3471,"name":"Identifier","src":"1903:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3472,"name":"Identifier","src":"1910:3:5"}],"id":3473,"name":"MemberAccess","src":"1910:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":3438,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3463,"type":"contract ERC20","value":"token"},"id":3474,"name":"Identifier","src":"1933:5:5"}],"id":3475,"name":"MemberAccess","src":"1933:14:5"}],"id":3476,"name":"MemberAccess","src":"1933:23:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3465,"type":"address","value":"to"},"id":3477,"name":"Identifier","src":"1958:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3467,"type":"uint256","value":"value"},"id":3478,"name":"Identifier","src":"1962:5:5"}],"id":3479,"name":"FunctionCall","src":"1910:58:5"}],"id":3480,"name":"FunctionCall","src":"1884:85:5"}],"id":3481,"name":"ExpressionStatement","src":"1884:85:5"}],"id":3482,"name":"Block","src":"1874:102:5"}],"id":3483,"name":"FunctionDefinition","src":"1803:173:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3508,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3484,"name":"UserDefinedTypeName","src":"2008:5:5"}],"id":3485,"name":"VariableDeclaration","src":"2008:11:5"},{"attributes":{"constant":false,"name":"from","scope":3508,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3486,"name":"ElementaryTypeName","src":"2021:7:5"}],"id":3487,"name":"VariableDeclaration","src":"2021:12:5"},{"attributes":{"constant":false,"name":"to","scope":3508,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3488,"name":"ElementaryTypeName","src":"2035:7:5"}],"id":3489,"name":"VariableDeclaration","src":"2035:10:5"},{"attributes":{"constant":false,"name":"value","scope":3508,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3490,"name":"ElementaryTypeName","src":"2047:7:5"}],"id":3491,"name":"VariableDeclaration","src":"2047:13:5"}],"id":3492,"name":"ParameterList","src":"2007:54:5"},{"attributes":{"parameters":[null]},"children":[],"id":3493,"name":"ParameterList","src":"2071:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3494,"name":"Identifier","src":"2081:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3485,"type":"contract ERC20","value":"token"},"id":3495,"name":"Identifier","src":"2100:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3496,"name":"Identifier","src":"2107:3:5"}],"id":3497,"name":"MemberAccess","src":"2107:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":3449,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3485,"type":"contract ERC20","value":"token"},"id":3498,"name":"Identifier","src":"2130:5:5"}],"id":3499,"name":"MemberAccess","src":"2130:18:5"}],"id":3500,"name":"MemberAccess","src":"2130:27:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3487,"type":"address","value":"from"},"id":3501,"name":"Identifier","src":"2159:4:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3489,"type":"address","value":"to"},"id":3502,"name":"Identifier","src":"2165:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3491,"type":"uint256","value":"value"},"id":3503,"name":"Identifier","src":"2169:5:5"}],"id":3504,"name":"FunctionCall","src":"2107:68:5"}],"id":3505,"name":"FunctionCall","src":"2081:95:5"}],"id":3506,"name":"ExpressionStatement","src":"2081:95:5"}],"id":3507,"name":"Block","src":"2071:112:5"}],"id":3508,"name":"FunctionDefinition","src":"1982:201:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3549,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3509,"name":"UserDefinedTypeName","src":"2210:5:5"}],"id":3510,"name":"VariableDeclaration","src":"2210:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3549,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3511,"name":"ElementaryTypeName","src":"2223:7:5"}],"id":3512,"name":"VariableDeclaration","src":"2223:15:5"},{"attributes":{"constant":false,"name":"value","scope":3549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3513,"name":"ElementaryTypeName","src":"2240:7:5"}],"id":3514,"name":"VariableDeclaration","src":"2240:13:5"}],"id":3515,"name":"ParameterList","src":"2209:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3516,"name":"ParameterList","src":"2264:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3517,"name":"Identifier","src":"2544:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3514,"type":"uint256","value":"value"},"id":3518,"name":"Identifier","src":"2553:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3519,"name":"Literal","src":"2562:1:5"}],"id":3520,"name":"BinaryOperation","src":"2553:10:5"}],"id":3521,"name":"TupleExpression","src":"2552:12:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3408,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3510,"type":"contract ERC20","value":"token"},"id":3522,"name":"Identifier","src":"2569:5:5"}],"id":3523,"name":"MemberAccess","src":"2569:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3669","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3524,"name":"ElementaryTypeNameExpression","src":"2585:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10329,"type":"library SafeERC20","value":"this"},"id":3525,"name":"Identifier","src":"2593:4:5"}],"id":3526,"name":"FunctionCall","src":"2585:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3512,"type":"address","value":"spender"},"id":3527,"name":"Identifier","src":"2600:7:5"}],"id":3528,"name":"FunctionCall","src":"2569:39:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3529,"name":"Literal","src":"2612:1:5"}],"id":3530,"name":"BinaryOperation","src":"2569:44:5"}],"id":3531,"name":"TupleExpression","src":"2568:46:5"}],"id":3532,"name":"BinaryOperation","src":"2552:62:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":3533,"name":"Literal","src":"2628:56:5"}],"id":3534,"name":"FunctionCall","src":"2544:150:5"}],"id":3535,"name":"ExpressionStatement","src":"2544:150:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3536,"name":"Identifier","src":"2704:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3510,"type":"contract ERC20","value":"token"},"id":3537,"name":"Identifier","src":"2723:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3538,"name":"Identifier","src":"2730:3:5"}],"id":3539,"name":"MemberAccess","src":"2730:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3417,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3510,"type":"contract ERC20","value":"token"},"id":3540,"name":"Identifier","src":"2753:5:5"}],"id":3541,"name":"MemberAccess","src":"2753:13:5"}],"id":3542,"name":"MemberAccess","src":"2753:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3512,"type":"address","value":"spender"},"id":3543,"name":"Identifier","src":"2777:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3514,"type":"uint256","value":"value"},"id":3544,"name":"Identifier","src":"2786:5:5"}],"id":3545,"name":"FunctionCall","src":"2730:62:5"}],"id":3546,"name":"FunctionCall","src":"2704:89:5"}],"id":3547,"name":"ExpressionStatement","src":"2704:89:5"}],"id":3548,"name":"Block","src":"2264:536:5"}],"id":3549,"name":"FunctionDefinition","src":"2189:611:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3584,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3550,"name":"UserDefinedTypeName","src":"2837:5:5"}],"id":3551,"name":"VariableDeclaration","src":"2837:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3584,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3552,"name":"ElementaryTypeName","src":"2850:7:5"}],"id":3553,"name":"VariableDeclaration","src":"2850:15:5"},{"attributes":{"constant":false,"name":"value","scope":3584,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3554,"name":"ElementaryTypeName","src":"2867:7:5"}],"id":3555,"name":"VariableDeclaration","src":"2867:13:5"}],"id":3556,"name":"ParameterList","src":"2836:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3557,"name":"ParameterList","src":"2891:0:5"},{"children":[{"attributes":{"assignments":[3559]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3558,"name":"ElementaryTypeName","src":"2901:7:5"}],"id":3559,"name":"VariableDeclaration","src":"2901:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3408,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3551,"type":"contract ERC20","value":"token"},"id":3560,"name":"Identifier","src":"2924:5:5"}],"id":3561,"name":"MemberAccess","src":"2924:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3669","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3562,"name":"ElementaryTypeNameExpression","src":"2940:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10329,"type":"library SafeERC20","value":"this"},"id":3563,"name":"Identifier","src":"2948:4:5"}],"id":3564,"name":"FunctionCall","src":"2940:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3553,"type":"address","value":"spender"},"id":3565,"name":"Identifier","src":"2955:7:5"}],"id":3566,"name":"FunctionCall","src":"2924:39:5"}],"id":3567,"name":"MemberAccess","src":"2924:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"uint256","value":"value"},"id":3568,"name":"Identifier","src":"2968:5:5"}],"id":3569,"name":"FunctionCall","src":"2924:50:5"}],"id":3570,"name":"VariableDeclarationStatement","src":"2901:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3571,"name":"Identifier","src":"2984:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3551,"type":"contract ERC20","value":"token"},"id":3572,"name":"Identifier","src":"3003:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3573,"name":"Identifier","src":"3010:3:5"}],"id":3574,"name":"MemberAccess","src":"3010:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3417,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3551,"type":"contract ERC20","value":"token"},"id":3575,"name":"Identifier","src":"3033:5:5"}],"id":3576,"name":"MemberAccess","src":"3033:13:5"}],"id":3577,"name":"MemberAccess","src":"3033:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3553,"type":"address","value":"spender"},"id":3578,"name":"Identifier","src":"3057:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3559,"type":"uint256","value":"newAllowance"},"id":3579,"name":"Identifier","src":"3066:12:5"}],"id":3580,"name":"FunctionCall","src":"3010:69:5"}],"id":3581,"name":"FunctionCall","src":"2984:96:5"}],"id":3582,"name":"ExpressionStatement","src":"2984:96:5"}],"id":3583,"name":"Block","src":"2891:196:5"}],"id":3584,"name":"FunctionDefinition","src":"2806:281:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3619,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3585,"name":"UserDefinedTypeName","src":"3124:5:5"}],"id":3586,"name":"VariableDeclaration","src":"3124:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3619,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3587,"name":"ElementaryTypeName","src":"3137:7:5"}],"id":3588,"name":"VariableDeclaration","src":"3137:15:5"},{"attributes":{"constant":false,"name":"value","scope":3619,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3589,"name":"ElementaryTypeName","src":"3154:7:5"}],"id":3590,"name":"VariableDeclaration","src":"3154:13:5"}],"id":3591,"name":"ParameterList","src":"3123:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3592,"name":"ParameterList","src":"3178:0:5"},{"children":[{"attributes":{"assignments":[3594]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3618,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3593,"name":"ElementaryTypeName","src":"3188:7:5"}],"id":3594,"name":"VariableDeclaration","src":"3188:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3408,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3586,"type":"contract ERC20","value":"token"},"id":3595,"name":"Identifier","src":"3211:5:5"}],"id":3596,"name":"MemberAccess","src":"3211:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3669","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3597,"name":"ElementaryTypeNameExpression","src":"3227:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10329,"type":"library SafeERC20","value":"this"},"id":3598,"name":"Identifier","src":"3235:4:5"}],"id":3599,"name":"FunctionCall","src":"3227:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3588,"type":"address","value":"spender"},"id":3600,"name":"Identifier","src":"3242:7:5"}],"id":3601,"name":"FunctionCall","src":"3211:39:5"}],"id":3602,"name":"MemberAccess","src":"3211:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3590,"type":"uint256","value":"value"},"id":3603,"name":"Identifier","src":"3255:5:5"}],"id":3604,"name":"FunctionCall","src":"3211:50:5"}],"id":3605,"name":"VariableDeclarationStatement","src":"3188:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3606,"name":"Identifier","src":"3271:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3586,"type":"contract ERC20","value":"token"},"id":3607,"name":"Identifier","src":"3290:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3608,"name":"Identifier","src":"3297:3:5"}],"id":3609,"name":"MemberAccess","src":"3297:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3417,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3586,"type":"contract ERC20","value":"token"},"id":3610,"name":"Identifier","src":"3320:5:5"}],"id":3611,"name":"MemberAccess","src":"3320:13:5"}],"id":3612,"name":"MemberAccess","src":"3320:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3588,"type":"address","value":"spender"},"id":3613,"name":"Identifier","src":"3344:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3594,"type":"uint256","value":"newAllowance"},"id":3614,"name":"Identifier","src":"3353:12:5"}],"id":3615,"name":"FunctionCall","src":"3297:69:5"}],"id":3616,"name":"FunctionCall","src":"3271:96:5"}],"id":3617,"name":"ExpressionStatement","src":"3271:96:5"}],"id":3618,"name":"Block","src":"3178:196:5"}],"id":3619,"name":"FunctionDefinition","src":"3093:281:5"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3668,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3620,"name":"UserDefinedTypeName","src":"3785:5:5"}],"id":3621,"name":"VariableDeclaration","src":"3785:11:5"},{"attributes":{"constant":false,"name":"data","scope":3668,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3622,"name":"ElementaryTypeName","src":"3798:5:5"}],"id":3623,"name":"VariableDeclaration","src":"3798:17:5"}],"id":3624,"name":"ParameterList","src":"3784:32:5"},{"attributes":{"parameters":[null]},"children":[],"id":3625,"name":"ParameterList","src":"3826:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3626,"name":"Identifier","src":"4344:7:5"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":3305,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3627,"name":"ElementaryTypeNameExpression","src":"4352:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3621,"type":"contract ERC20","value":"token"},"id":3628,"name":"Identifier","src":"4360:5:5"}],"id":3629,"name":"FunctionCall","src":"4352:14:5"}],"id":3630,"name":"MemberAccess","src":"4352:25:5"}],"id":3631,"name":"FunctionCall","src":"4352:27:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":3632,"name":"Literal","src":"4381:33:5"}],"id":3633,"name":"FunctionCall","src":"4344:71:5"}],"id":3634,"name":"ExpressionStatement","src":"4344:71:5"},{"attributes":{"assignments":[3636,3638]},"children":[{"attributes":{"constant":false,"name":"success","scope":3667,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3635,"name":"ElementaryTypeName","src":"4486:4:5"}],"id":3636,"name":"VariableDeclaration","src":"4486:12:5"},{"attributes":{"constant":false,"name":"returndata","scope":3667,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3637,"name":"ElementaryTypeName","src":"4500:5:5"}],"id":3638,"name":"VariableDeclaration","src":"4500:23:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3639,"name":"ElementaryTypeNameExpression","src":"4527:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3621,"type":"contract ERC20","value":"token"},"id":3640,"name":"Identifier","src":"4535:5:5"}],"id":3641,"name":"FunctionCall","src":"4527:14:5"}],"id":3642,"name":"MemberAccess","src":"4527:19:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3623,"type":"bytes memory","value":"data"},"id":3643,"name":"Identifier","src":"4547:4:5"}],"id":3644,"name":"FunctionCall","src":"4527:25:5"}],"id":3645,"name":"VariableDeclarationStatement","src":"4485:67:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3646,"name":"Identifier","src":"4562:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"bool","value":"success"},"id":3647,"name":"Identifier","src":"4570:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":3648,"name":"Literal","src":"4579:34:5"}],"id":3649,"name":"FunctionCall","src":"4562:52:5"}],"id":3650,"name":"ExpressionStatement","src":"4562:52:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3638,"type":"bytes memory","value":"returndata"},"id":3651,"name":"Identifier","src":"4629:10:5"}],"id":3652,"name":"MemberAccess","src":"4629:17:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3653,"name":"Literal","src":"4649:1:5"}],"id":3654,"name":"BinaryOperation","src":"4629:21:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3655,"name":"Identifier","src":"4750:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3656,"name":"Identifier","src":"4758:3:5"}],"id":3657,"name":"MemberAccess","src":"4758:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3638,"type":"bytes memory","value":"returndata"},"id":3658,"name":"Identifier","src":"4769:10:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":3659,"name":"ElementaryTypeNameExpression","src":"4782:4:5"}],"id":3660,"name":"TupleExpression","src":"4781:6:5"}],"id":3661,"name":"FunctionCall","src":"4758:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":3662,"name":"Literal","src":"4790:44:5"}],"id":3663,"name":"FunctionCall","src":"4750:85:5"}],"id":3664,"name":"ExpressionStatement","src":"4750:85:5"}],"id":3665,"name":"Block","src":"4652:194:5"}],"id":3666,"name":"IfStatement","src":"4625:221:5"}],"id":3667,"name":"Block","src":"3826:1026:5"}],"id":3668,"name":"FunctionDefinition","src":"3757:1095:5"}],"id":3669,"name":"ContractDefinition","src":"1715:3139:5"}],"id":3670,"name":"SourceUnit","src":"1161:3694:5"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[3802]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3671,"name":"PragmaDirective","src":"0:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[3802],"name":"SafeMath","scope":3803},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3696,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3672,"name":"ElementaryTypeName","src":"847:7:6"}],"id":3673,"name":"VariableDeclaration","src":"847:9:6"},{"attributes":{"constant":false,"name":"b","scope":3696,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3674,"name":"ElementaryTypeName","src":"858:7:6"}],"id":3675,"name":"VariableDeclaration","src":"858:9:6"}],"id":3676,"name":"ParameterList","src":"846:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3696,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3677,"name":"ElementaryTypeName","src":"892:7:6"}],"id":3678,"name":"VariableDeclaration","src":"892:7:6"}],"id":3679,"name":"ParameterList","src":"891:9:6"},{"children":[{"attributes":{"assignments":[3681]},"children":[{"attributes":{"constant":false,"name":"c","scope":3695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3680,"name":"ElementaryTypeName","src":"911:7:6"}],"id":3681,"name":"VariableDeclaration","src":"911:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"a"},"id":3682,"name":"Identifier","src":"923:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3675,"type":"uint256","value":"b"},"id":3683,"name":"Identifier","src":"927:1:6"}],"id":3684,"name":"BinaryOperation","src":"923:5:6"}],"id":3685,"name":"VariableDeclarationStatement","src":"911:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3686,"name":"Identifier","src":"938:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"c"},"id":3687,"name":"Identifier","src":"946:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"a"},"id":3688,"name":"Identifier","src":"951:1:6"}],"id":3689,"name":"BinaryOperation","src":"946:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":3690,"name":"Literal","src":"954:29:6"}],"id":3691,"name":"FunctionCall","src":"938:46:6"}],"id":3692,"name":"ExpressionStatement","src":"938:46:6"},{"attributes":{"functionReturnParameters":3679},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"c"},"id":3693,"name":"Identifier","src":"1002:1:6"}],"id":3694,"name":"Return","src":"995:8:6"}],"id":3695,"name":"Block","src":"901:109:6"}],"id":3696,"name":"FunctionDefinition","src":"834:176:6"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3721,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3697,"name":"ElementaryTypeName","src":"1287:7:6"}],"id":3698,"name":"VariableDeclaration","src":"1287:9:6"},{"attributes":{"constant":false,"name":"b","scope":3721,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3699,"name":"ElementaryTypeName","src":"1298:7:6"}],"id":3700,"name":"VariableDeclaration","src":"1298:9:6"}],"id":3701,"name":"ParameterList","src":"1286:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3721,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3702,"name":"ElementaryTypeName","src":"1332:7:6"}],"id":3703,"name":"VariableDeclaration","src":"1332:7:6"}],"id":3704,"name":"ParameterList","src":"1331:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3705,"name":"Identifier","src":"1351:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3700,"type":"uint256","value":"b"},"id":3706,"name":"Identifier","src":"1359:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3698,"type":"uint256","value":"a"},"id":3707,"name":"Identifier","src":"1364:1:6"}],"id":3708,"name":"BinaryOperation","src":"1359:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":3709,"name":"Literal","src":"1367:32:6"}],"id":3710,"name":"FunctionCall","src":"1351:49:6"}],"id":3711,"name":"ExpressionStatement","src":"1351:49:6"},{"attributes":{"assignments":[3713]},"children":[{"attributes":{"constant":false,"name":"c","scope":3720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3712,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":3713,"name":"VariableDeclaration","src":"1410:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3698,"type":"uint256","value":"a"},"id":3714,"name":"Identifier","src":"1422:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3700,"type":"uint256","value":"b"},"id":3715,"name":"Identifier","src":"1426:1:6"}],"id":3716,"name":"BinaryOperation","src":"1422:5:6"}],"id":3717,"name":"VariableDeclarationStatement","src":"1410:17:6"},{"attributes":{"functionReturnParameters":3704},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"c"},"id":3718,"name":"Identifier","src":"1445:1:6"}],"id":3719,"name":"Return","src":"1438:8:6"}],"id":3720,"name":"Block","src":"1341:112:6"}],"id":3721,"name":"FunctionDefinition","src":"1274:179:6"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3722,"name":"ElementaryTypeName","src":"1706:7:6"}],"id":3723,"name":"VariableDeclaration","src":"1706:9:6"},{"attributes":{"constant":false,"name":"b","scope":3755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3724,"name":"ElementaryTypeName","src":"1717:7:6"}],"id":3725,"name":"VariableDeclaration","src":"1717:9:6"}],"id":3726,"name":"ParameterList","src":"1705:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3727,"name":"ElementaryTypeName","src":"1751:7:6"}],"id":3728,"name":"VariableDeclaration","src":"1751:7:6"}],"id":3729,"name":"ParameterList","src":"1750:9:6"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3723,"type":"uint256","value":"a"},"id":3730,"name":"Identifier","src":"1991:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3731,"name":"Literal","src":"1996:1:6"}],"id":3732,"name":"BinaryOperation","src":"1991:6:6"},{"children":[{"attributes":{"functionReturnParameters":3729},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3733,"name":"Literal","src":"2020:1:6"}],"id":3734,"name":"Return","src":"2013:8:6"}],"id":3735,"name":"Block","src":"1999:33:6"}],"id":3736,"name":"IfStatement","src":"1987:45:6"},{"attributes":{"assignments":[3738]},"children":[{"attributes":{"constant":false,"name":"c","scope":3754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3737,"name":"ElementaryTypeName","src":"2042:7:6"}],"id":3738,"name":"VariableDeclaration","src":"2042:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3723,"type":"uint256","value":"a"},"id":3739,"name":"Identifier","src":"2054:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3725,"type":"uint256","value":"b"},"id":3740,"name":"Identifier","src":"2058:1:6"}],"id":3741,"name":"BinaryOperation","src":"2054:5:6"}],"id":3742,"name":"VariableDeclarationStatement","src":"2042:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3743,"name":"Identifier","src":"2069:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3738,"type":"uint256","value":"c"},"id":3744,"name":"Identifier","src":"2077:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3723,"type":"uint256","value":"a"},"id":3745,"name":"Identifier","src":"2081:1:6"}],"id":3746,"name":"BinaryOperation","src":"2077:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3725,"type":"uint256","value":"b"},"id":3747,"name":"Identifier","src":"2086:1:6"}],"id":3748,"name":"BinaryOperation","src":"2077:10:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":3749,"name":"Literal","src":"2089:35:6"}],"id":3750,"name":"FunctionCall","src":"2069:56:6"}],"id":3751,"name":"ExpressionStatement","src":"2069:56:6"},{"attributes":{"functionReturnParameters":3729},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3738,"type":"uint256","value":"c"},"id":3752,"name":"Identifier","src":"2143:1:6"}],"id":3753,"name":"Return","src":"2136:8:6"}],"id":3754,"name":"Block","src":"1760:391:6"}],"id":3755,"name":"FunctionDefinition","src":"1693:458:6"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3756,"name":"ElementaryTypeName","src":"2619:7:6"}],"id":3757,"name":"VariableDeclaration","src":"2619:9:6"},{"attributes":{"constant":false,"name":"b","scope":3780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3758,"name":"ElementaryTypeName","src":"2630:7:6"}],"id":3759,"name":"VariableDeclaration","src":"2630:9:6"}],"id":3760,"name":"ParameterList","src":"2618:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3761,"name":"ElementaryTypeName","src":"2664:7:6"}],"id":3762,"name":"VariableDeclaration","src":"2664:7:6"}],"id":3763,"name":"ParameterList","src":"2663:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3764,"name":"Identifier","src":"2749:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3759,"type":"uint256","value":"b"},"id":3765,"name":"Identifier","src":"2757:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3766,"name":"Literal","src":"2761:1:6"}],"id":3767,"name":"BinaryOperation","src":"2757:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":3768,"name":"Literal","src":"2764:28:6"}],"id":3769,"name":"FunctionCall","src":"2749:44:6"}],"id":3770,"name":"ExpressionStatement","src":"2749:44:6"},{"attributes":{"assignments":[3772]},"children":[{"attributes":{"constant":false,"name":"c","scope":3779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3771,"name":"ElementaryTypeName","src":"2803:7:6"}],"id":3772,"name":"VariableDeclaration","src":"2803:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3757,"type":"uint256","value":"a"},"id":3773,"name":"Identifier","src":"2815:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3759,"type":"uint256","value":"b"},"id":3774,"name":"Identifier","src":"2819:1:6"}],"id":3775,"name":"BinaryOperation","src":"2815:5:6"}],"id":3776,"name":"VariableDeclarationStatement","src":"2803:17:6"},{"attributes":{"functionReturnParameters":3763},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3772,"type":"uint256","value":"c"},"id":3777,"name":"Identifier","src":"2924:1:6"}],"id":3778,"name":"Return","src":"2917:8:6"}],"id":3779,"name":"Block","src":"2673:259:6"}],"id":3780,"name":"FunctionDefinition","src":"2606:326:6"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3781,"name":"ElementaryTypeName","src":"3389:7:6"}],"id":3782,"name":"VariableDeclaration","src":"3389:9:6"},{"attributes":{"constant":false,"name":"b","scope":3801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3783,"name":"ElementaryTypeName","src":"3400:7:6"}],"id":3784,"name":"VariableDeclaration","src":"3400:9:6"}],"id":3785,"name":"ParameterList","src":"3388:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3786,"name":"ElementaryTypeName","src":"3434:7:6"}],"id":3787,"name":"VariableDeclaration","src":"3434:7:6"}],"id":3788,"name":"ParameterList","src":"3433:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3789,"name":"Identifier","src":"3453:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3784,"type":"uint256","value":"b"},"id":3790,"name":"Identifier","src":"3461:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3791,"name":"Literal","src":"3466:1:6"}],"id":3792,"name":"BinaryOperation","src":"3461:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":3793,"name":"Literal","src":"3469:26:6"}],"id":3794,"name":"FunctionCall","src":"3453:43:6"}],"id":3795,"name":"ExpressionStatement","src":"3453:43:6"},{"attributes":{"functionReturnParameters":3788},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3782,"type":"uint256","value":"a"},"id":3796,"name":"Identifier","src":"3513:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3784,"type":"uint256","value":"b"},"id":3797,"name":"Identifier","src":"3517:1:6"}],"id":3798,"name":"BinaryOperation","src":"3513:5:6"}],"id":3799,"name":"Return","src":"3506:12:6"}],"id":3800,"name":"Block","src":"3443:82:6"}],"id":3801,"name":"FunctionDefinition","src":"3376:149:6"}],"id":3802,"name":"ContractDefinition","src":"589:2938:6"}],"id":3803,"name":"SourceUnit","src":"0:3528:6"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[3113]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2978,"name":"PragmaDirective","src":"1400:23:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3113],"name":"ENS","scope":3114},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2979,"name":"ElementaryTypeName","src":"1534:7:7"}],"id":2980,"name":"VariableDeclaration","src":"1534:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":2986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2981,"name":"ElementaryTypeName","src":"1557:7:7"}],"id":2982,"name":"VariableDeclaration","src":"1557:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":2986,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2983,"name":"ElementaryTypeName","src":"1581:7:7"}],"id":2984,"name":"VariableDeclaration","src":"1581:14:7"}],"id":2985,"name":"ParameterList","src":"1533:63:7"}],"id":2986,"name":"EventDefinition","src":"1519:78:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2992,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2987,"name":"ElementaryTypeName","src":"1695:7:7"}],"id":2988,"name":"VariableDeclaration","src":"1695:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":2992,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2989,"name":"ElementaryTypeName","src":"1718:7:7"}],"id":2990,"name":"VariableDeclaration","src":"1718:14:7"}],"id":2991,"name":"ParameterList","src":"1694:39:7"}],"id":2992,"name":"EventDefinition","src":"1680:54:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2998,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2993,"name":"ElementaryTypeName","src":"1810:7:7"}],"id":2994,"name":"VariableDeclaration","src":"1810:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":2998,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2995,"name":"ElementaryTypeName","src":"1833:7:7"}],"id":2996,"name":"VariableDeclaration","src":"1833:17:7"}],"id":2997,"name":"ParameterList","src":"1809:42:7"}],"id":2998,"name":"EventDefinition","src":"1792:60:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":3004,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2999,"name":"ElementaryTypeName","src":"1916:7:7"}],"id":3000,"name":"VariableDeclaration","src":"1916:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":3004,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3001,"name":"ElementaryTypeName","src":"1939:6:7"}],"id":3002,"name":"VariableDeclaration","src":"1939:11:7"}],"id":3003,"name":"ParameterList","src":"1915:36:7"}],"id":3004,"name":"EventDefinition","src":"1903:49:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":3012,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3005,"name":"ElementaryTypeName","src":"2031:7:7"}],"id":3006,"name":"VariableDeclaration","src":"2031:22:7"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":3012,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3007,"name":"ElementaryTypeName","src":"2055:7:7"}],"id":3008,"name":"VariableDeclaration","src":"2055:25:7"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":3012,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3009,"name":"ElementaryTypeName","src":"2082:4:7"}],"id":3010,"name":"VariableDeclaration","src":"2082:14:7"}],"id":3011,"name":"ParameterList","src":"2030:67:7"}],"id":3012,"name":"EventDefinition","src":"2010:88:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3023,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3013,"name":"ElementaryTypeName","src":"2123:7:7"}],"id":3014,"name":"VariableDeclaration","src":"2123:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":3023,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3015,"name":"ElementaryTypeName","src":"2138:7:7"}],"id":3016,"name":"VariableDeclaration","src":"2138:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":3023,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3017,"name":"ElementaryTypeName","src":"2154:7:7"}],"id":3018,"name":"VariableDeclaration","src":"2154:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":3023,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3019,"name":"ElementaryTypeName","src":"2173:6:7"}],"id":3020,"name":"VariableDeclaration","src":"2173:11:7"}],"id":3021,"name":"ParameterList","src":"2122:63:7"},{"attributes":{"parameters":[null]},"children":[],"id":3022,"name":"ParameterList","src":"2194:0:7"}],"id":3023,"name":"FunctionDefinition","src":"2104:91:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3036,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3024,"name":"ElementaryTypeName","src":"2226:7:7"}],"id":3025,"name":"VariableDeclaration","src":"2226:13:7"},{"attributes":{"constant":false,"name":"_label","scope":3036,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3026,"name":"ElementaryTypeName","src":"2241:7:7"}],"id":3027,"name":"VariableDeclaration","src":"2241:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":3036,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3028,"name":"ElementaryTypeName","src":"2257:7:7"}],"id":3029,"name":"VariableDeclaration","src":"2257:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":3036,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3030,"name":"ElementaryTypeName","src":"2273:7:7"}],"id":3031,"name":"VariableDeclaration","src":"2273:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":3036,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3032,"name":"ElementaryTypeName","src":"2292:6:7"}],"id":3033,"name":"VariableDeclaration","src":"2292:11:7"}],"id":3034,"name":"ParameterList","src":"2225:79:7"},{"attributes":{"parameters":[null]},"children":[],"id":3035,"name":"ParameterList","src":"2313:0:7"}],"id":3036,"name":"FunctionDefinition","src":"2200:114:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3047,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3037,"name":"ElementaryTypeName","src":"2344:7:7"}],"id":3038,"name":"VariableDeclaration","src":"2344:13:7"},{"attributes":{"constant":false,"name":"_label","scope":3047,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3039,"name":"ElementaryTypeName","src":"2359:7:7"}],"id":3040,"name":"VariableDeclaration","src":"2359:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":3047,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3041,"name":"ElementaryTypeName","src":"2375:7:7"}],"id":3042,"name":"VariableDeclaration","src":"2375:14:7"}],"id":3043,"name":"ParameterList","src":"2343:47:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3047,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3044,"name":"ElementaryTypeName","src":"2408:7:7"}],"id":3045,"name":"VariableDeclaration","src":"2408:7:7"}],"id":3046,"name":"ParameterList","src":"2407:9:7"}],"id":3047,"name":"FunctionDefinition","src":"2319:98:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3054,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3048,"name":"ElementaryTypeName","src":"2443:7:7"}],"id":3049,"name":"VariableDeclaration","src":"2443:13:7"},{"attributes":{"constant":false,"name":"_resolver","scope":3054,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3050,"name":"ElementaryTypeName","src":"2458:7:7"}],"id":3051,"name":"VariableDeclaration","src":"2458:17:7"}],"id":3052,"name":"ParameterList","src":"2442:34:7"},{"attributes":{"parameters":[null]},"children":[],"id":3053,"name":"ParameterList","src":"2485:0:7"}],"id":3054,"name":"FunctionDefinition","src":"2422:64:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3061,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3055,"name":"ElementaryTypeName","src":"2509:7:7"}],"id":3056,"name":"VariableDeclaration","src":"2509:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":3061,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3057,"name":"ElementaryTypeName","src":"2524:7:7"}],"id":3058,"name":"VariableDeclaration","src":"2524:14:7"}],"id":3059,"name":"ParameterList","src":"2508:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":3060,"name":"ParameterList","src":"2548:0:7"}],"id":3061,"name":"FunctionDefinition","src":"2491:58:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3062,"name":"ElementaryTypeName","src":"2570:7:7"}],"id":3063,"name":"VariableDeclaration","src":"2570:13:7"},{"attributes":{"constant":false,"name":"_ttl","scope":3068,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3064,"name":"ElementaryTypeName","src":"2585:6:7"}],"id":3065,"name":"VariableDeclaration","src":"2585:11:7"}],"id":3066,"name":"ParameterList","src":"2569:28:7"},{"attributes":{"parameters":[null]},"children":[],"id":3067,"name":"ParameterList","src":"2606:0:7"}],"id":3068,"name":"FunctionDefinition","src":"2554:53:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":3075,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3069,"name":"ElementaryTypeName","src":"2639:7:7"}],"id":3070,"name":"VariableDeclaration","src":"2639:17:7"},{"attributes":{"constant":false,"name":"_approved","scope":3075,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3071,"name":"ElementaryTypeName","src":"2658:4:7"}],"id":3072,"name":"VariableDeclaration","src":"2658:14:7"}],"id":3073,"name":"ParameterList","src":"2638:35:7"},{"attributes":{"parameters":[null]},"children":[],"id":3074,"name":"ParameterList","src":"2682:0:7"}],"id":3075,"name":"FunctionDefinition","src":"2612:71:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3082,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3076,"name":"ElementaryTypeName","src":"2703:7:7"}],"id":3077,"name":"VariableDeclaration","src":"2703:13:7"}],"id":3078,"name":"ParameterList","src":"2702:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3082,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3079,"name":"ElementaryTypeName","src":"2741:7:7"}],"id":3080,"name":"VariableDeclaration","src":"2741:7:7"}],"id":3081,"name":"ParameterList","src":"2740:9:7"}],"id":3082,"name":"FunctionDefinition","src":"2688:62:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3089,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3083,"name":"ElementaryTypeName","src":"2773:7:7"}],"id":3084,"name":"VariableDeclaration","src":"2773:13:7"}],"id":3085,"name":"ParameterList","src":"2772:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3089,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3086,"name":"ElementaryTypeName","src":"2811:7:7"}],"id":3087,"name":"VariableDeclaration","src":"2811:7:7"}],"id":3088,"name":"ParameterList","src":"2810:9:7"}],"id":3089,"name":"FunctionDefinition","src":"2755:65:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3096,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3090,"name":"ElementaryTypeName","src":"2838:7:7"}],"id":3091,"name":"VariableDeclaration","src":"2838:13:7"}],"id":3092,"name":"ParameterList","src":"2837:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3096,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3093,"name":"ElementaryTypeName","src":"2876:6:7"}],"id":3094,"name":"VariableDeclaration","src":"2876:6:7"}],"id":3095,"name":"ParameterList","src":"2875:8:7"}],"id":3096,"name":"FunctionDefinition","src":"2825:59:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3103,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3097,"name":"ElementaryTypeName","src":"2911:7:7"}],"id":3098,"name":"VariableDeclaration","src":"2911:13:7"}],"id":3099,"name":"ParameterList","src":"2910:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3103,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3100,"name":"ElementaryTypeName","src":"2949:4:7"}],"id":3101,"name":"VariableDeclaration","src":"2949:4:7"}],"id":3102,"name":"ParameterList","src":"2948:6:7"}],"id":3103,"name":"FunctionDefinition","src":"2889:66:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":3112,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3104,"name":"ElementaryTypeName","src":"2986:7:7"}],"id":3105,"name":"VariableDeclaration","src":"2986:14:7"},{"attributes":{"constant":false,"name":"_operator","scope":3112,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3106,"name":"ElementaryTypeName","src":"3002:7:7"}],"id":3107,"name":"VariableDeclaration","src":"3002:17:7"}],"id":3108,"name":"ParameterList","src":"2985:35:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3112,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3109,"name":"ElementaryTypeName","src":"3044:4:7"}],"id":3110,"name":"VariableDeclaration","src":"3044:4:7"}],"id":3111,"name":"ParameterList","src":"3043:6:7"}],"id":3112,"name":"FunctionDefinition","src":"2960:90:7"}],"id":3113,"name":"ContractDefinition","src":"1425:1627:7"}],"id":3114,"name":"SourceUnit","src":"1400:1653:7"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[10292]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9573,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[10292],"name":"ENSBytesUtils","scope":10293},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9595,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9574,"name":"ElementaryTypeName","src":"325:5:8"}],"id":9575,"name":"VariableDeclaration","src":"325:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9595,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9576,"name":"ElementaryTypeName","src":"344:4:8"}],"id":9577,"name":"VariableDeclaration","src":"344:11:8"},{"attributes":{"constant":false,"name":"len","scope":9595,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9578,"name":"ElementaryTypeName","src":"357:4:8"}],"id":9579,"name":"VariableDeclaration","src":"357:8:8"}],"id":9580,"name":"ParameterList","src":"324:42:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9595,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9581,"name":"ElementaryTypeName","src":"390:7:8"}],"id":9582,"name":"VariableDeclaration","src":"390:11:8"}],"id":9583,"name":"ParameterList","src":"389:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9584,"name":"Identifier","src":"413:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9577,"type":"uint256","value":"offset"},"id":9585,"name":"Identifier","src":"421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9579,"type":"uint256","value":"len"},"id":9586,"name":"Identifier","src":"430:3:8"}],"id":9587,"name":"BinaryOperation","src":"421:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9575,"type":"bytes memory","value":"self"},"id":9588,"name":"Identifier","src":"437:4:8"}],"id":9589,"name":"MemberAccess","src":"437:11:8"}],"id":9590,"name":"BinaryOperation","src":"421:27:8"}],"id":9591,"name":"FunctionCall","src":"413:36:8"}],"id":9592,"name":"ExpressionStatement","src":"413:36:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9582,"isOffset":false,"isSlot":false,"src":"482:3:8","valueSize":1}},{"self":{"declaration":9575,"isOffset":false,"isSlot":false,"src":"507:4:8","valueSize":1}},{"offset":{"declaration":9577,"isOffset":false,"isSlot":false,"src":"518:6:8","valueSize":1}},{"len":{"declaration":9579,"isOffset":false,"isSlot":false,"src":"527:3:8","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":9593,"name":"InlineAssembly","src":"459:82:8"}],"id":9594,"name":"Block","src":"403:144:8"}],"id":9595,"name":"FunctionDefinition","src":"309:238:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9616,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9596,"name":"ElementaryTypeName","src":"920:5:8"}],"id":9597,"name":"VariableDeclaration","src":"920:17:8"},{"attributes":{"constant":false,"name":"other","scope":9616,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9598,"name":"ElementaryTypeName","src":"939:5:8"}],"id":9599,"name":"VariableDeclaration","src":"939:18:8"}],"id":9600,"name":"ParameterList","src":"919:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9616,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9601,"name":"ElementaryTypeName","src":"982:3:8"}],"id":9602,"name":"VariableDeclaration","src":"982:3:8"}],"id":9603,"name":"ParameterList","src":"981:5:8"},{"children":[{"attributes":{"functionReturnParameters":9603},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9616,9748],"referencedDeclaration":9748,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":9604,"name":"Identifier","src":"1004:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9597,"type":"bytes memory","value":"self"},"id":9605,"name":"Identifier","src":"1012:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9606,"name":"Literal","src":"1018:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9597,"type":"bytes memory","value":"self"},"id":9607,"name":"Identifier","src":"1021:4:8"}],"id":9608,"name":"MemberAccess","src":"1021:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9599,"type":"bytes memory","value":"other"},"id":9609,"name":"Identifier","src":"1034:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9610,"name":"Literal","src":"1041:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9599,"type":"bytes memory","value":"other"},"id":9611,"name":"Identifier","src":"1044:5:8"}],"id":9612,"name":"MemberAccess","src":"1044:12:8"}],"id":9613,"name":"FunctionCall","src":"1004:53:8"}],"id":9614,"name":"Return","src":"997:60:8"}],"id":9615,"name":"Block","src":"987:77:8"}],"id":9616,"name":"FunctionDefinition","src":"903:161:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9748,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9617,"name":"ElementaryTypeName","src":"1694:5:8"}],"id":9618,"name":"VariableDeclaration","src":"1694:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9619,"name":"ElementaryTypeName","src":"1713:4:8"}],"id":9620,"name":"VariableDeclaration","src":"1713:11:8"},{"attributes":{"constant":false,"name":"len","scope":9748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9621,"name":"ElementaryTypeName","src":"1726:4:8"}],"id":9622,"name":"VariableDeclaration","src":"1726:8:8"},{"attributes":{"constant":false,"name":"other","scope":9748,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9623,"name":"ElementaryTypeName","src":"1736:5:8"}],"id":9624,"name":"VariableDeclaration","src":"1736:18:8"},{"attributes":{"constant":false,"name":"otheroffset","scope":9748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9625,"name":"ElementaryTypeName","src":"1756:4:8"}],"id":9626,"name":"VariableDeclaration","src":"1756:16:8"},{"attributes":{"constant":false,"name":"otherlen","scope":9748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9627,"name":"ElementaryTypeName","src":"1774:4:8"}],"id":9628,"name":"VariableDeclaration","src":"1774:13:8"}],"id":9629,"name":"ParameterList","src":"1693:95:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9748,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9630,"name":"ElementaryTypeName","src":"1812:3:8"}],"id":9631,"name":"VariableDeclaration","src":"1812:3:8"}],"id":9632,"name":"ParameterList","src":"1811:5:8"},{"children":[{"attributes":{"assignments":[9634]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":9747,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9633,"name":"ElementaryTypeName","src":"1827:4:8"}],"id":9634,"name":"VariableDeclaration","src":"1827:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9622,"type":"uint256","value":"len"},"id":9635,"name":"Identifier","src":"1843:3:8"}],"id":9636,"name":"VariableDeclarationStatement","src":"1827:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"uint256","value":"otherlen"},"id":9637,"name":"Identifier","src":"1860:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9622,"type":"uint256","value":"len"},"id":9638,"name":"Identifier","src":"1871:3:8"}],"id":9639,"name":"BinaryOperation","src":"1860:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"uint256","value":"shortest"},"id":9640,"name":"Identifier","src":"1884:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"uint256","value":"otherlen"},"id":9641,"name":"Identifier","src":"1895:8:8"}],"id":9642,"name":"Assignment","src":"1884:19:8"}],"id":9643,"name":"ExpressionStatement","src":"1884:19:8"}],"id":9644,"name":"IfStatement","src":"1856:47:8"},{"attributes":{"assignments":[9646],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":9747,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9645,"name":"ElementaryTypeName","src":"1914:4:8"}],"id":9646,"name":"VariableDeclaration","src":"1914:12:8"}],"id":9647,"name":"VariableDeclarationStatement","src":"1914:12:8"},{"attributes":{"assignments":[9649],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":9747,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9648,"name":"ElementaryTypeName","src":"1936:4:8"}],"id":9649,"name":"VariableDeclaration","src":"1936:13:8"}],"id":9650,"name":"VariableDeclarationStatement","src":"1936:13:8"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":9646,"isOffset":false,"isSlot":false,"src":"1983:7:8","valueSize":1}},{"otherptr":{"declaration":9649,"isOffset":false,"isSlot":false,"src":"2033:8:8","valueSize":1}},{"offset":{"declaration":9620,"isOffset":false,"isSlot":false,"src":"2008:6:8","valueSize":1}},{"self":{"declaration":9618,"isOffset":false,"isSlot":false,"src":"1998:4:8","valueSize":1}},{"otheroffset":{"declaration":9626,"isOffset":false,"isSlot":false,"src":"2060:11:8","valueSize":1}},{"other":{"declaration":9624,"isOffset":false,"isSlot":false,"src":"2049:5:8","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":9651,"name":"InlineAssembly","src":"1960:127:8"},{"children":[{"attributes":{"assignments":[9653]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9738,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9652,"name":"ElementaryTypeName","src":"2101:4:8"}],"id":9653,"name":"VariableDeclaration","src":"2101:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9654,"name":"Literal","src":"2112:1:8"}],"id":9655,"name":"VariableDeclarationStatement","src":"2101:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"idx"},"id":9656,"name":"Identifier","src":"2115:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"uint256","value":"shortest"},"id":9657,"name":"Identifier","src":"2121:8:8"}],"id":9658,"name":"BinaryOperation","src":"2115:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"idx"},"id":9659,"name":"Identifier","src":"2131:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9660,"name":"Literal","src":"2138:2:8"}],"id":9661,"name":"Assignment","src":"2131:9:8"}],"id":9662,"name":"ExpressionStatement","src":"2131:9:8"},{"children":[{"attributes":{"assignments":[9664],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":9737,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9663,"name":"ElementaryTypeName","src":"2156:4:8"}],"id":9664,"name":"VariableDeclaration","src":"2156:6:8"}],"id":9665,"name":"VariableDeclarationStatement","src":"2156:6:8"},{"attributes":{"assignments":[9667],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":9737,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9666,"name":"ElementaryTypeName","src":"2176:4:8"}],"id":9667,"name":"VariableDeclaration","src":"2176:6:8"}],"id":9668,"name":"VariableDeclarationStatement","src":"2176:6:8"},{"attributes":{"externalReferences":[{"a":{"declaration":9664,"isOffset":false,"isSlot":false,"src":"2223:1:8","valueSize":1}},{"selfptr":{"declaration":9646,"isOffset":false,"isSlot":false,"src":"2234:7:8","valueSize":1}},{"b":{"declaration":9667,"isOffset":false,"isSlot":false,"src":"2259:1:8","valueSize":1}},{"otherptr":{"declaration":9649,"isOffset":false,"isSlot":false,"src":"2270:8:8","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":9669,"name":"InlineAssembly","src":"2196:97:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9664,"type":"uint256","value":"a"},"id":9670,"name":"Identifier","src":"2310:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9667,"type":"uint256","value":"b"},"id":9671,"name":"Identifier","src":"2315:1:8"}],"id":9672,"name":"BinaryOperation","src":"2310:6:8"},{"children":[{"attributes":{"assignments":[9674],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":9727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9673,"name":"ElementaryTypeName","src":"2397:4:8"}],"id":9674,"name":"VariableDeclaration","src":"2397:9:8"}],"id":9675,"name":"VariableDeclarationStatement","src":"2397:9:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"uint256","value":"shortest"},"id":9676,"name":"Identifier","src":"2428:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9677,"name":"Literal","src":"2439:2:8"}],"id":9678,"name":"BinaryOperation","src":"2428:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9674,"type":"uint256","value":"mask"},"id":9679,"name":"Identifier","src":"2465:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":9680,"name":"ElementaryTypeNameExpression","src":"2472:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9681,"name":"Literal","src":"2482:1:8"}],"id":9682,"name":"UnaryOperation","src":"2480:3:8"}],"id":9683,"name":"FunctionCall","src":"2472:12:8"}],"id":9684,"name":"Assignment","src":"2465:19:8"}],"id":9685,"name":"ExpressionStatement","src":"2465:19:8"}],"id":9686,"name":"Block","src":"2443:80:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9674,"type":"uint256","value":"mask"},"id":9687,"name":"Identifier","src":"2551:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9688,"name":"Literal","src":"2560:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9689,"name":"Literal","src":"2566:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9690,"name":"Literal","src":"2571:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"uint256","value":"shortest"},"id":9691,"name":"Identifier","src":"2576:8:8"}],"id":9692,"name":"BinaryOperation","src":"2571:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"idx"},"id":9693,"name":"Identifier","src":"2587:3:8"}],"id":9694,"name":"BinaryOperation","src":"2571:19:8"}],"id":9695,"name":"TupleExpression","src":"2570:21:8"}],"id":9696,"name":"BinaryOperation","src":"2566:25:8"}],"id":9697,"name":"TupleExpression","src":"2565:27:8"}],"id":9698,"name":"BinaryOperation","src":"2560:32:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9699,"name":"Literal","src":"2595:1:8"}],"id":9700,"name":"BinaryOperation","src":"2560:36:8"}],"id":9701,"name":"TupleExpression","src":"2559:38:8"}],"id":9702,"name":"UnaryOperation","src":"2558:39:8"}],"id":9703,"name":"Assignment","src":"2551:46:8"}],"id":9704,"name":"ExpressionStatement","src":"2551:46:8"}],"id":9705,"name":"Block","src":"2529:87:8"}],"id":9706,"name":"IfStatement","src":"2424:192:8"},{"attributes":{"assignments":[9708]},"children":[{"attributes":{"constant":false,"name":"diff","scope":9727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9707,"name":"ElementaryTypeName","src":"2633:4:8"}],"id":9708,"name":"VariableDeclaration","src":"2633:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9664,"type":"uint256","value":"a"},"id":9709,"name":"Identifier","src":"2646:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9674,"type":"uint256","value":"mask"},"id":9710,"name":"Identifier","src":"2650:4:8"}],"id":9711,"name":"BinaryOperation","src":"2646:8:8"}],"id":9712,"name":"TupleExpression","src":"2645:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9667,"type":"uint256","value":"b"},"id":9713,"name":"Identifier","src":"2659:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9674,"type":"uint256","value":"mask"},"id":9714,"name":"Identifier","src":"2663:4:8"}],"id":9715,"name":"BinaryOperation","src":"2659:8:8"}],"id":9716,"name":"TupleExpression","src":"2658:10:8"}],"id":9717,"name":"BinaryOperation","src":"2645:23:8"}],"id":9718,"name":"VariableDeclarationStatement","src":"2633:35:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9708,"type":"uint256","value":"diff"},"id":9719,"name":"Identifier","src":"2690:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9720,"name":"Literal","src":"2698:1:8"}],"id":9721,"name":"BinaryOperation","src":"2690:9:8"},{"attributes":{"functionReturnParameters":9632},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9722,"name":"ElementaryTypeNameExpression","src":"2724:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9708,"type":"uint256","value":"diff"},"id":9723,"name":"Identifier","src":"2728:4:8"}],"id":9724,"name":"FunctionCall","src":"2724:9:8"}],"id":9725,"name":"Return","src":"2717:16:8"}],"id":9726,"name":"IfStatement","src":"2686:47:8"}],"id":9727,"name":"Block","src":"2318:430:8"}],"id":9728,"name":"IfStatement","src":"2306:442:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9646,"type":"uint256","value":"selfptr"},"id":9729,"name":"Identifier","src":"2761:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9730,"name":"Literal","src":"2772:2:8"}],"id":9731,"name":"Assignment","src":"2761:13:8"}],"id":9732,"name":"ExpressionStatement","src":"2761:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9649,"type":"uint256","value":"otherptr"},"id":9733,"name":"Identifier","src":"2788:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9734,"name":"Literal","src":"2800:2:8"}],"id":9735,"name":"Assignment","src":"2788:14:8"}],"id":9736,"name":"ExpressionStatement","src":"2788:14:8"}],"id":9737,"name":"Block","src":"2142:671:8"}],"id":9738,"name":"ForStatement","src":"2096:717:8"},{"attributes":{"functionReturnParameters":9632},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9739,"name":"ElementaryTypeNameExpression","src":"2830:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9622,"type":"uint256","value":"len"},"id":9740,"name":"Identifier","src":"2834:3:8"}],"id":9741,"name":"FunctionCall","src":"2830:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9742,"name":"ElementaryTypeNameExpression","src":"2841:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"uint256","value":"otherlen"},"id":9743,"name":"Identifier","src":"2845:8:8"}],"id":9744,"name":"FunctionCall","src":"2841:13:8"}],"id":9745,"name":"BinaryOperation","src":"2830:24:8"}],"id":9746,"name":"Return","src":"2823:31:8"}],"id":9747,"name":"Block","src":"1817:1044:8"}],"id":9748,"name":"FunctionDefinition","src":"1677:1184:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9776,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9749,"name":"ElementaryTypeName","src":"3295:5:8"}],"id":9750,"name":"VariableDeclaration","src":"3295:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9751,"name":"ElementaryTypeName","src":"3314:4:8"}],"id":9752,"name":"VariableDeclaration","src":"3314:11:8"},{"attributes":{"constant":false,"name":"other","scope":9776,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9753,"name":"ElementaryTypeName","src":"3327:5:8"}],"id":9754,"name":"VariableDeclaration","src":"3327:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9755,"name":"ElementaryTypeName","src":"3347:4:8"}],"id":9756,"name":"VariableDeclaration","src":"3347:16:8"},{"attributes":{"constant":false,"name":"len","scope":9776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9757,"name":"ElementaryTypeName","src":"3365:4:8"}],"id":9758,"name":"VariableDeclaration","src":"3365:8:8"}],"id":9759,"name":"ParameterList","src":"3294:80:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9776,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9760,"name":"ElementaryTypeName","src":"3398:4:8"}],"id":9761,"name":"VariableDeclaration","src":"3398:4:8"}],"id":9762,"name":"ParameterList","src":"3397:6:8"},{"children":[{"attributes":{"functionReturnParameters":9762},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9595,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9763,"name":"Identifier","src":"3421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9750,"type":"bytes memory","value":"self"},"id":9764,"name":"Identifier","src":"3428:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9752,"type":"uint256","value":"offset"},"id":9765,"name":"Identifier","src":"3434:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9758,"type":"uint256","value":"len"},"id":9766,"name":"Identifier","src":"3442:3:8"}],"id":9767,"name":"FunctionCall","src":"3421:25:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9595,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9768,"name":"Identifier","src":"3450:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9754,"type":"bytes memory","value":"other"},"id":9769,"name":"Identifier","src":"3457:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9756,"type":"uint256","value":"otherOffset"},"id":9770,"name":"Identifier","src":"3464:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9758,"type":"uint256","value":"len"},"id":9771,"name":"Identifier","src":"3477:3:8"}],"id":9772,"name":"FunctionCall","src":"3450:31:8"}],"id":9773,"name":"BinaryOperation","src":"3421:60:8"}],"id":9774,"name":"Return","src":"3414:67:8"}],"id":9775,"name":"Block","src":"3404:84:8"}],"id":9776,"name":"FunctionDefinition","src":"3279:209:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9808,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9777,"name":"ElementaryTypeName","src":"3887:5:8"}],"id":9778,"name":"VariableDeclaration","src":"3887:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9779,"name":"ElementaryTypeName","src":"3906:4:8"}],"id":9780,"name":"VariableDeclaration","src":"3906:11:8"},{"attributes":{"constant":false,"name":"other","scope":9808,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9781,"name":"ElementaryTypeName","src":"3919:5:8"}],"id":9782,"name":"VariableDeclaration","src":"3919:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9783,"name":"ElementaryTypeName","src":"3939:4:8"}],"id":9784,"name":"VariableDeclaration","src":"3939:16:8"}],"id":9785,"name":"ParameterList","src":"3886:70:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9808,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9786,"name":"ElementaryTypeName","src":"3980:4:8"}],"id":9787,"name":"VariableDeclaration","src":"3980:4:8"}],"id":9788,"name":"ParameterList","src":"3979:6:8"},{"children":[{"attributes":{"functionReturnParameters":9788},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9595,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9789,"name":"Identifier","src":"4003:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9778,"type":"bytes memory","value":"self"},"id":9790,"name":"Identifier","src":"4010:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9780,"type":"uint256","value":"offset"},"id":9791,"name":"Identifier","src":"4016:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9778,"type":"bytes memory","value":"self"},"id":9792,"name":"Identifier","src":"4024:4:8"}],"id":9793,"name":"MemberAccess","src":"4024:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9780,"type":"uint256","value":"offset"},"id":9794,"name":"Identifier","src":"4038:6:8"}],"id":9795,"name":"BinaryOperation","src":"4024:20:8"}],"id":9796,"name":"FunctionCall","src":"4003:42:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9595,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9797,"name":"Identifier","src":"4049:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9782,"type":"bytes memory","value":"other"},"id":9798,"name":"Identifier","src":"4056:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9784,"type":"uint256","value":"otherOffset"},"id":9799,"name":"Identifier","src":"4063:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9782,"type":"bytes memory","value":"other"},"id":9800,"name":"Identifier","src":"4076:5:8"}],"id":9801,"name":"MemberAccess","src":"4076:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9784,"type":"uint256","value":"otherOffset"},"id":9802,"name":"Identifier","src":"4091:11:8"}],"id":9803,"name":"BinaryOperation","src":"4076:26:8"}],"id":9804,"name":"FunctionCall","src":"4049:54:8"}],"id":9805,"name":"BinaryOperation","src":"4003:100:8"}],"id":9806,"name":"Return","src":"3996:107:8"}],"id":9807,"name":"Block","src":"3986:124:8"}],"id":9808,"name":"FunctionDefinition","src":"3871:239:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9837,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9809,"name":"ElementaryTypeName","src":"4478:5:8"}],"id":9810,"name":"VariableDeclaration","src":"4478:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9837,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9811,"name":"ElementaryTypeName","src":"4497:4:8"}],"id":9812,"name":"VariableDeclaration","src":"4497:11:8"},{"attributes":{"constant":false,"name":"other","scope":9837,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9813,"name":"ElementaryTypeName","src":"4510:5:8"}],"id":9814,"name":"VariableDeclaration","src":"4510:18:8"}],"id":9815,"name":"ParameterList","src":"4477:52:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9837,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9816,"name":"ElementaryTypeName","src":"4553:4:8"}],"id":9817,"name":"VariableDeclaration","src":"4553:4:8"}],"id":9818,"name":"ParameterList","src":"4552:6:8"},{"children":[{"attributes":{"functionReturnParameters":9818},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9810,"type":"bytes memory","value":"self"},"id":9819,"name":"Identifier","src":"4576:4:8"}],"id":9820,"name":"MemberAccess","src":"4576:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9812,"type":"uint256","value":"offset"},"id":9821,"name":"Identifier","src":"4591:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9814,"type":"bytes memory","value":"other"},"id":9822,"name":"Identifier","src":"4600:5:8"}],"id":9823,"name":"MemberAccess","src":"4600:12:8"}],"id":9824,"name":"BinaryOperation","src":"4591:21:8"}],"id":9825,"name":"BinaryOperation","src":"4576:36:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9776,9808,9837,9862],"referencedDeclaration":9776,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9826,"name":"Identifier","src":"4616:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9810,"type":"bytes memory","value":"self"},"id":9827,"name":"Identifier","src":"4623:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9812,"type":"uint256","value":"offset"},"id":9828,"name":"Identifier","src":"4629:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9814,"type":"bytes memory","value":"other"},"id":9829,"name":"Identifier","src":"4637:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9830,"name":"Literal","src":"4644:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9814,"type":"bytes memory","value":"other"},"id":9831,"name":"Identifier","src":"4647:5:8"}],"id":9832,"name":"MemberAccess","src":"4647:12:8"}],"id":9833,"name":"FunctionCall","src":"4616:44:8"}],"id":9834,"name":"BinaryOperation","src":"4576:84:8"}],"id":9835,"name":"Return","src":"4569:91:8"}],"id":9836,"name":"Block","src":"4559:108:8"}],"id":9837,"name":"FunctionDefinition","src":"4462:205:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9862,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9838,"name":"ElementaryTypeName","src":"4931:5:8"}],"id":9839,"name":"VariableDeclaration","src":"4931:17:8"},{"attributes":{"constant":false,"name":"other","scope":9862,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9840,"name":"ElementaryTypeName","src":"4950:5:8"}],"id":9841,"name":"VariableDeclaration","src":"4950:18:8"}],"id":9842,"name":"ParameterList","src":"4930:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9862,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9843,"name":"ElementaryTypeName","src":"4992:4:8"}],"id":9844,"name":"VariableDeclaration","src":"4992:4:8"}],"id":9845,"name":"ParameterList","src":"4991:6:8"},{"children":[{"attributes":{"functionReturnParameters":9845},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9839,"type":"bytes memory","value":"self"},"id":9846,"name":"Identifier","src":"5015:4:8"}],"id":9847,"name":"MemberAccess","src":"5015:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9841,"type":"bytes memory","value":"other"},"id":9848,"name":"Identifier","src":"5030:5:8"}],"id":9849,"name":"MemberAccess","src":"5030:12:8"}],"id":9850,"name":"BinaryOperation","src":"5015:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9776,9808,9837,9862],"referencedDeclaration":9776,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9851,"name":"Identifier","src":"5046:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9839,"type":"bytes memory","value":"self"},"id":9852,"name":"Identifier","src":"5053:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9853,"name":"Literal","src":"5059:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9841,"type":"bytes memory","value":"other"},"id":9854,"name":"Identifier","src":"5062:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9855,"name":"Literal","src":"5069:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9839,"type":"bytes memory","value":"self"},"id":9856,"name":"Identifier","src":"5072:4:8"}],"id":9857,"name":"MemberAccess","src":"5072:11:8"}],"id":9858,"name":"FunctionCall","src":"5046:38:8"}],"id":9859,"name":"BinaryOperation","src":"5015:69:8"}],"id":9860,"name":"Return","src":"5008:76:8"}],"id":9861,"name":"Block","src":"4998:93:8"}],"id":9862,"name":"FunctionDefinition","src":"4915:176:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9878,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9863,"name":"ElementaryTypeName","src":"5352:5:8"}],"id":9864,"name":"VariableDeclaration","src":"5352:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9878,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9865,"name":"ElementaryTypeName","src":"5371:4:8"}],"id":9866,"name":"VariableDeclaration","src":"5371:8:8"}],"id":9867,"name":"ParameterList","src":"5351:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9878,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9868,"name":"ElementaryTypeName","src":"5404:5:8"}],"id":9869,"name":"VariableDeclaration","src":"5404:9:8"}],"id":9870,"name":"ParameterList","src":"5403:11:8"},{"children":[{"attributes":{"functionReturnParameters":9870},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9871,"name":"ElementaryTypeNameExpression","src":"5432:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"bytes memory","value":"self"},"id":9872,"name":"Identifier","src":"5438:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9866,"type":"uint256","value":"idx"},"id":9873,"name":"Identifier","src":"5443:3:8"}],"id":9874,"name":"IndexAccess","src":"5438:9:8"}],"id":9875,"name":"FunctionCall","src":"5432:16:8"}],"id":9876,"name":"Return","src":"5425:23:8"}],"id":9877,"name":"Block","src":"5415:40:8"}],"id":9878,"name":"FunctionDefinition","src":"5333:122:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9898,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9879,"name":"ElementaryTypeName","src":"5719:5:8"}],"id":9880,"name":"VariableDeclaration","src":"5719:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9898,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9881,"name":"ElementaryTypeName","src":"5738:4:8"}],"id":9882,"name":"VariableDeclaration","src":"5738:8:8"}],"id":9883,"name":"ParameterList","src":"5718:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9898,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9884,"name":"ElementaryTypeName","src":"5771:6:8"}],"id":9885,"name":"VariableDeclaration","src":"5771:10:8"}],"id":9886,"name":"ParameterList","src":"5770:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9887,"name":"Identifier","src":"5793:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9882,"type":"uint256","value":"idx"},"id":9888,"name":"Identifier","src":"5801:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9889,"name":"Literal","src":"5807:1:8"}],"id":9890,"name":"BinaryOperation","src":"5801:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"bytes memory","value":"self"},"id":9891,"name":"Identifier","src":"5812:4:8"}],"id":9892,"name":"MemberAccess","src":"5812:11:8"}],"id":9893,"name":"BinaryOperation","src":"5801:22:8"}],"id":9894,"name":"FunctionCall","src":"5793:31:8"}],"id":9895,"name":"ExpressionStatement","src":"5793:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9885,"isOffset":false,"isSlot":false,"src":"5857:3:8","valueSize":1}},{"self":{"declaration":9880,"isOffset":false,"isSlot":false,"src":"5882:4:8","valueSize":1}},{"idx":{"declaration":9882,"isOffset":false,"isSlot":false,"src":"5892:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":9896,"name":"InlineAssembly","src":"5834:82:8"}],"id":9897,"name":"Block","src":"5783:139:8"}],"id":9898,"name":"FunctionDefinition","src":"5699:223:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9918,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9899,"name":"ElementaryTypeName","src":"6186:5:8"}],"id":9900,"name":"VariableDeclaration","src":"6186:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9901,"name":"ElementaryTypeName","src":"6205:4:8"}],"id":9902,"name":"VariableDeclaration","src":"6205:8:8"}],"id":9903,"name":"ParameterList","src":"6185:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9918,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":9904,"name":"ElementaryTypeName","src":"6238:6:8"}],"id":9905,"name":"VariableDeclaration","src":"6238:10:8"}],"id":9906,"name":"ParameterList","src":"6237:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9907,"name":"Identifier","src":"6260:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9902,"type":"uint256","value":"idx"},"id":9908,"name":"Identifier","src":"6268:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9909,"name":"Literal","src":"6274:1:8"}],"id":9910,"name":"BinaryOperation","src":"6268:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9900,"type":"bytes memory","value":"self"},"id":9911,"name":"Identifier","src":"6279:4:8"}],"id":9912,"name":"MemberAccess","src":"6279:11:8"}],"id":9913,"name":"BinaryOperation","src":"6268:22:8"}],"id":9914,"name":"FunctionCall","src":"6260:31:8"}],"id":9915,"name":"ExpressionStatement","src":"6260:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9905,"isOffset":false,"isSlot":false,"src":"6324:3:8","valueSize":1}},{"self":{"declaration":9900,"isOffset":false,"isSlot":false,"src":"6349:4:8","valueSize":1}},{"idx":{"declaration":9902,"isOffset":false,"isSlot":false,"src":"6359:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":9916,"name":"InlineAssembly","src":"6301:86:8"}],"id":9917,"name":"Block","src":"6250:143:8"}],"id":9918,"name":"FunctionDefinition","src":"6166:227:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9938,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9919,"name":"ElementaryTypeName","src":"6632:5:8"}],"id":9920,"name":"VariableDeclaration","src":"6632:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9921,"name":"ElementaryTypeName","src":"6651:4:8"}],"id":9922,"name":"VariableDeclaration","src":"6651:8:8"}],"id":9923,"name":"ParameterList","src":"6631:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9938,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9924,"name":"ElementaryTypeName","src":"6684:7:8"}],"id":9925,"name":"VariableDeclaration","src":"6684:11:8"}],"id":9926,"name":"ParameterList","src":"6683:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9927,"name":"Identifier","src":"6707:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9922,"type":"uint256","value":"idx"},"id":9928,"name":"Identifier","src":"6715:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9929,"name":"Literal","src":"6721:2:8"}],"id":9930,"name":"BinaryOperation","src":"6715:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9920,"type":"bytes memory","value":"self"},"id":9931,"name":"Identifier","src":"6727:4:8"}],"id":9932,"name":"MemberAccess","src":"6727:11:8"}],"id":9933,"name":"BinaryOperation","src":"6715:23:8"}],"id":9934,"name":"FunctionCall","src":"6707:32:8"}],"id":9935,"name":"ExpressionStatement","src":"6707:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9925,"isOffset":false,"isSlot":false,"src":"6772:3:8","valueSize":1}},{"self":{"declaration":9920,"isOffset":false,"isSlot":false,"src":"6793:4:8","valueSize":1}},{"idx":{"declaration":9922,"isOffset":false,"isSlot":false,"src":"6804:3:8","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":9936,"name":"InlineAssembly","src":"6749:70:8"}],"id":9937,"name":"Block","src":"6697:128:8"}],"id":9938,"name":"FunctionDefinition","src":"6611:214:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9958,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9939,"name":"ElementaryTypeName","src":"7064:5:8"}],"id":9940,"name":"VariableDeclaration","src":"7064:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9958,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9941,"name":"ElementaryTypeName","src":"7083:4:8"}],"id":9942,"name":"VariableDeclaration","src":"7083:8:8"}],"id":9943,"name":"ParameterList","src":"7063:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9958,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9944,"name":"ElementaryTypeName","src":"7116:7:8"}],"id":9945,"name":"VariableDeclaration","src":"7116:11:8"}],"id":9946,"name":"ParameterList","src":"7115:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9947,"name":"Identifier","src":"7139:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9942,"type":"uint256","value":"idx"},"id":9948,"name":"Identifier","src":"7147:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9949,"name":"Literal","src":"7153:2:8"}],"id":9950,"name":"BinaryOperation","src":"7147:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"bytes memory","value":"self"},"id":9951,"name":"Identifier","src":"7159:4:8"}],"id":9952,"name":"MemberAccess","src":"7159:11:8"}],"id":9953,"name":"BinaryOperation","src":"7147:23:8"}],"id":9954,"name":"FunctionCall","src":"7139:32:8"}],"id":9955,"name":"ExpressionStatement","src":"7139:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9945,"isOffset":false,"isSlot":false,"src":"7204:3:8","valueSize":1}},{"self":{"declaration":9940,"isOffset":false,"isSlot":false,"src":"7229:4:8","valueSize":1}},{"idx":{"declaration":9942,"isOffset":false,"isSlot":false,"src":"7240:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":9956,"name":"InlineAssembly","src":"7181:143:8"}],"id":9957,"name":"Block","src":"7129:201:8"}],"id":9958,"name":"FunctionDefinition","src":"7043:287:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9986,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9959,"name":"ElementaryTypeName","src":"7606:5:8"}],"id":9960,"name":"VariableDeclaration","src":"7606:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9986,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9961,"name":"ElementaryTypeName","src":"7625:4:8"}],"id":9962,"name":"VariableDeclaration","src":"7625:8:8"},{"attributes":{"constant":false,"name":"len","scope":9986,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9963,"name":"ElementaryTypeName","src":"7635:4:8"}],"id":9964,"name":"VariableDeclaration","src":"7635:8:8"}],"id":9965,"name":"ParameterList","src":"7605:39:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9966,"name":"ElementaryTypeName","src":"7668:7:8"}],"id":9967,"name":"VariableDeclaration","src":"7668:11:8"}],"id":9968,"name":"ParameterList","src":"7667:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9969,"name":"Identifier","src":"7691:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"uint256","value":"len"},"id":9970,"name":"Identifier","src":"7699:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9971,"name":"Literal","src":"7706:2:8"}],"id":9972,"name":"BinaryOperation","src":"7699:9:8"}],"id":9973,"name":"FunctionCall","src":"7691:18:8"}],"id":9974,"name":"ExpressionStatement","src":"7691:18:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9975,"name":"Identifier","src":"7719:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9962,"type":"uint256","value":"idx"},"id":9976,"name":"Identifier","src":"7727:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"uint256","value":"len"},"id":9977,"name":"Identifier","src":"7733:3:8"}],"id":9978,"name":"BinaryOperation","src":"7727:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"bytes memory","value":"self"},"id":9979,"name":"Identifier","src":"7740:4:8"}],"id":9980,"name":"MemberAccess","src":"7740:11:8"}],"id":9981,"name":"BinaryOperation","src":"7727:24:8"}],"id":9982,"name":"FunctionCall","src":"7719:33:8"}],"id":9983,"name":"ExpressionStatement","src":"7719:33:8"},{"attributes":{"externalReferences":[{"len":{"declaration":9964,"isOffset":false,"isSlot":false,"src":"7822:3:8","valueSize":1}},{"ret":{"declaration":9967,"isOffset":false,"isSlot":false,"src":"7845:3:8","valueSize":1}},{"self":{"declaration":9960,"isOffset":false,"isSlot":false,"src":"7870:4:8","valueSize":1}},{"idx":{"declaration":9962,"isOffset":false,"isSlot":false,"src":"7881:3:8","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":9984,"name":"InlineAssembly","src":"7762:142:8"}],"id":9985,"name":"Block","src":"7681:229:8"}],"id":9986,"name":"FunctionDefinition","src":"7586:324:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":10026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9987,"name":"ElementaryTypeName","src":"7932:4:8"}],"id":9988,"name":"VariableDeclaration","src":"7932:9:8"},{"attributes":{"constant":false,"name":"src","scope":10026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9989,"name":"ElementaryTypeName","src":"7943:4:8"}],"id":9990,"name":"VariableDeclaration","src":"7943:8:8"},{"attributes":{"constant":false,"name":"len","scope":10026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9991,"name":"ElementaryTypeName","src":"7953:4:8"}],"id":9992,"name":"VariableDeclaration","src":"7953:8:8"}],"id":9993,"name":"ParameterList","src":"7931:31:8"},{"attributes":{"parameters":[null]},"children":[],"id":9994,"name":"ParameterList","src":"7976:0:8"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9992,"type":"uint256","value":"len"},"id":9995,"name":"Identifier","src":"8043:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9996,"name":"Literal","src":"8050:2:8"}],"id":9997,"name":"BinaryOperation","src":"8043:9:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9992,"type":"uint256","value":"len"},"id":9998,"name":"Identifier","src":"8054:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9999,"name":"Literal","src":"8061:2:8"}],"id":10000,"name":"Assignment","src":"8054:9:8"}],"id":10001,"name":"ExpressionStatement","src":"8054:9:8"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":9990,"isOffset":false,"isSlot":false,"src":"8125:3:8","valueSize":1}},{"dest":{"declaration":9988,"isOffset":false,"isSlot":false,"src":"8113:4:8","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":10002,"name":"InlineAssembly","src":"8079:65:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9988,"type":"uint256","value":"dest"},"id":10003,"name":"Identifier","src":"8157:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10004,"name":"Literal","src":"8165:2:8"}],"id":10005,"name":"Assignment","src":"8157:10:8"}],"id":10006,"name":"ExpressionStatement","src":"8157:10:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9990,"type":"uint256","value":"src"},"id":10007,"name":"Identifier","src":"8181:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10008,"name":"Literal","src":"8188:2:8"}],"id":10009,"name":"Assignment","src":"8181:9:8"}],"id":10010,"name":"ExpressionStatement","src":"8181:9:8"}],"id":10011,"name":"Block","src":"8065:136:8"}],"id":10012,"name":"ForStatement","src":"8036:165:8"},{"attributes":{"assignments":[10014]},"children":[{"attributes":{"constant":false,"name":"mask","scope":10025,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10013,"name":"ElementaryTypeName","src":"8243:4:8"}],"id":10014,"name":"VariableDeclaration","src":"8243:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10015,"name":"Literal","src":"8255:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10016,"name":"Literal","src":"8263:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9992,"type":"uint256","value":"len"},"id":10017,"name":"Identifier","src":"8268:3:8"}],"id":10018,"name":"BinaryOperation","src":"8263:8:8"}],"id":10019,"name":"TupleExpression","src":"8262:10:8"}],"id":10020,"name":"BinaryOperation","src":"8255:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10021,"name":"Literal","src":"8275:1:8"}],"id":10022,"name":"BinaryOperation","src":"8255:21:8"}],"id":10023,"name":"VariableDeclarationStatement","src":"8243:33:8"},{"attributes":{"externalReferences":[{"src":{"declaration":9990,"isOffset":false,"isSlot":false,"src":"8334:3:8","valueSize":1}},{"mask":{"declaration":10014,"isOffset":false,"isSlot":false,"src":"8344:4:8","valueSize":1}},{"dest":{"declaration":9988,"isOffset":false,"isSlot":false,"src":"8421:4:8","valueSize":1}},{"dest":{"declaration":9988,"isOffset":false,"isSlot":false,"src":"8389:4:8","valueSize":1}},{"mask":{"declaration":10014,"isOffset":false,"isSlot":false,"src":"8396:4:8","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":10024,"name":"InlineAssembly","src":"8286:173:8"}],"id":10025,"name":"Block","src":"7976:489:8"}],"id":10026,"name":"FunctionDefinition","src":"7916:549:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10069,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10027,"name":"ElementaryTypeName","src":"8704:5:8"}],"id":10028,"name":"VariableDeclaration","src":"8704:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10029,"name":"ElementaryTypeName","src":"8723:4:8"}],"id":10030,"name":"VariableDeclaration","src":"8723:11:8"},{"attributes":{"constant":false,"name":"len","scope":10069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10031,"name":"ElementaryTypeName","src":"8736:4:8"}],"id":10032,"name":"VariableDeclaration","src":"8736:8:8"}],"id":10033,"name":"ParameterList","src":"8703:42:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10069,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10034,"name":"ElementaryTypeName","src":"8768:5:8"}],"id":10035,"name":"VariableDeclaration","src":"8768:12:8"}],"id":10036,"name":"ParameterList","src":"8767:14:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":10037,"name":"Identifier","src":"8792:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10030,"type":"uint256","value":"offset"},"id":10038,"name":"Identifier","src":"8800:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10032,"type":"uint256","value":"len"},"id":10039,"name":"Identifier","src":"8809:3:8"}],"id":10040,"name":"BinaryOperation","src":"8800:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10028,"type":"bytes memory","value":"self"},"id":10041,"name":"Identifier","src":"8816:4:8"}],"id":10042,"name":"MemberAccess","src":"8816:11:8"}],"id":10043,"name":"BinaryOperation","src":"8800:27:8"}],"id":10044,"name":"FunctionCall","src":"8792:36:8"}],"id":10045,"name":"ExpressionStatement","src":"8792:36:8"},{"attributes":{"assignments":[10047]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10068,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10046,"name":"ElementaryTypeName","src":"8839:5:8"}],"id":10047,"name":"VariableDeclaration","src":"8839:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10048,"name":"ElementaryTypeName","src":"8862:5:8"}],"id":10049,"name":"NewExpression","src":"8858:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10032,"type":"uint256","value":"len"},"id":10050,"name":"Identifier","src":"8868:3:8"}],"id":10051,"name":"FunctionCall","src":"8858:14:8"}],"id":10052,"name":"VariableDeclarationStatement","src":"8839:33:8"},{"attributes":{"assignments":[10054],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":10068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10053,"name":"ElementaryTypeName","src":"8882:4:8"}],"id":10054,"name":"VariableDeclaration","src":"8882:9:8"}],"id":10055,"name":"VariableDeclarationStatement","src":"8882:9:8"},{"attributes":{"assignments":[10057],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":10068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10056,"name":"ElementaryTypeName","src":"8901:4:8"}],"id":10057,"name":"VariableDeclaration","src":"8901:8:8"}],"id":10058,"name":"VariableDeclarationStatement","src":"8901:8:8"},{"attributes":{"externalReferences":[{"dest":{"declaration":10054,"isOffset":false,"isSlot":false,"src":"8943:4:8","valueSize":1}},{"ret":{"declaration":10047,"isOffset":false,"isSlot":false,"src":"8955:3:8","valueSize":1}},{"src":{"declaration":10057,"isOffset":false,"isSlot":false,"src":"8976:3:8","valueSize":1}},{"self":{"declaration":10028,"isOffset":false,"isSlot":false,"src":"8991:4:8","valueSize":1}},{"offset":{"declaration":10030,"isOffset":false,"isSlot":false,"src":"9002:6:8","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":10059,"name":"InlineAssembly","src":"8920:99:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":10026,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":10060,"name":"Identifier","src":"9028:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10054,"type":"uint256","value":"dest"},"id":10061,"name":"Identifier","src":"9035:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10057,"type":"uint256","value":"src"},"id":10062,"name":"Identifier","src":"9041:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10032,"type":"uint256","value":"len"},"id":10063,"name":"Identifier","src":"9046:3:8"}],"id":10064,"name":"FunctionCall","src":"9028:22:8"}],"id":10065,"name":"ExpressionStatement","src":"9028:22:8"},{"attributes":{"functionReturnParameters":10036},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10047,"type":"bytes memory","value":"ret"},"id":10066,"name":"Identifier","src":"9068:3:8"}],"id":10067,"name":"Return","src":"9061:10:8"}],"id":10068,"name":"Block","src":"8782:296:8"}],"id":10069,"name":"FunctionDefinition","src":"8685:393:8"},{"attributes":{"constant":true,"name":"base32HexTable","scope":10292,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10070,"name":"ElementaryTypeName","src":"9206:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":10071,"name":"Literal","src":"9238:147:8"}],"id":10072,"name":"VariableDeclaration","src":"9206:179:8"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10291,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10073,"name":"ElementaryTypeName","src":"9697:5:8"}],"id":10074,"name":"VariableDeclaration","src":"9697:17:8"},{"attributes":{"constant":false,"name":"off","scope":10291,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10075,"name":"ElementaryTypeName","src":"9716:4:8"}],"id":10076,"name":"VariableDeclaration","src":"9716:8:8"},{"attributes":{"constant":false,"name":"len","scope":10291,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10077,"name":"ElementaryTypeName","src":"9726:4:8"}],"id":10078,"name":"VariableDeclaration","src":"9726:8:8"}],"id":10079,"name":"ParameterList","src":"9696:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10291,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10080,"name":"ElementaryTypeName","src":"9758:7:8"}],"id":10081,"name":"VariableDeclaration","src":"9758:7:8"}],"id":10082,"name":"ParameterList","src":"9757:9:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":10083,"name":"Identifier","src":"9777:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10084,"name":"Identifier","src":"9785:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":10085,"name":"Literal","src":"9792:2:8"}],"id":10086,"name":"BinaryOperation","src":"9785:9:8"}],"id":10087,"name":"FunctionCall","src":"9777:18:8"}],"id":10088,"name":"ExpressionStatement","src":"9777:18:8"},{"attributes":{"assignments":[10090]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10290,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10089,"name":"ElementaryTypeName","src":"9806:4:8"}],"id":10090,"name":"VariableDeclaration","src":"9806:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10091,"name":"Literal","src":"9817:1:8"}],"id":10092,"name":"VariableDeclarationStatement","src":"9806:12:8"},{"attributes":{"assignments":[10094],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":10290,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":10093,"name":"ElementaryTypeName","src":"9828:5:8"}],"id":10094,"name":"VariableDeclaration","src":"9828:13:8"}],"id":10095,"name":"VariableDeclarationStatement","src":"9828:13:8"},{"children":[{"attributes":{"assignments":[10097]},"children":[{"attributes":{"constant":false,"name":"i","scope":10162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10096,"name":"ElementaryTypeName","src":"9855:4:8"}],"id":10097,"name":"VariableDeclaration","src":"9855:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10098,"name":"Literal","src":"9864:1:8"}],"id":10099,"name":"VariableDeclarationStatement","src":"9855:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10097,"type":"uint256","value":"i"},"id":10100,"name":"Identifier","src":"9867:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10101,"name":"Identifier","src":"9871:3:8"}],"id":10102,"name":"BinaryOperation","src":"9867:7:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10097,"type":"uint256","value":"i"},"id":10103,"name":"Identifier","src":"9876:1:8"}],"id":10104,"name":"UnaryOperation","src":"9876:3:8"}],"id":10105,"name":"ExpressionStatement","src":"9876:3:8"},{"children":[{"attributes":{"assignments":[10107]},"children":[{"attributes":{"constant":false,"name":"char","scope":10161,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":10106,"name":"ElementaryTypeName","src":"9895:6:8"}],"id":10107,"name":"VariableDeclaration","src":"9895:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10074,"type":"bytes memory","value":"self"},"id":10108,"name":"Identifier","src":"9909:4:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10076,"type":"uint256","value":"off"},"id":10109,"name":"Identifier","src":"9914:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10097,"type":"uint256","value":"i"},"id":10110,"name":"Identifier","src":"9920:1:8"}],"id":10111,"name":"BinaryOperation","src":"9914:7:8"}],"id":10112,"name":"IndexAccess","src":"9909:13:8"}],"id":10113,"name":"VariableDeclarationStatement","src":"9895:27:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":10114,"name":"Identifier","src":"9936:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10107,"type":"bytes1","value":"char"},"id":10115,"name":"Identifier","src":"9944:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":10116,"name":"Literal","src":"9952:4:8"}],"id":10117,"name":"BinaryOperation","src":"9944:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10107,"type":"bytes1","value":"char"},"id":10118,"name":"Identifier","src":"9960:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":10119,"name":"Literal","src":"9968:4:8"}],"id":10120,"name":"BinaryOperation","src":"9960:12:8"}],"id":10121,"name":"BinaryOperation","src":"9944:28:8"}],"id":10122,"name":"FunctionCall","src":"9936:37:8"}],"id":10123,"name":"ExpressionStatement","src":"9936:37:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10124,"name":"Identifier","src":"9987:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10125,"name":"ElementaryTypeNameExpression","src":"9997:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10072,"type":"bytes memory","value":"base32HexTable"},"id":10126,"name":"Identifier","src":"10003:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":10127,"name":"ElementaryTypeNameExpression","src":"10018:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10128,"name":"ElementaryTypeNameExpression","src":"10023:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10107,"type":"bytes1","value":"char"},"id":10129,"name":"Identifier","src":"10029:4:8"}],"id":10130,"name":"FunctionCall","src":"10023:11:8"}],"id":10131,"name":"FunctionCall","src":"10018:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":10132,"name":"Literal","src":"10038:4:8"}],"id":10133,"name":"BinaryOperation","src":"10018:24:8"}],"id":10134,"name":"IndexAccess","src":"10003:40:8"}],"id":10135,"name":"FunctionCall","src":"9997:47:8"}],"id":10136,"name":"Assignment","src":"9987:57:8"}],"id":10137,"name":"ExpressionStatement","src":"9987:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":10138,"name":"Identifier","src":"10058:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10139,"name":"Identifier","src":"10066:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":10140,"name":"Literal","src":"10077:4:8"}],"id":10141,"name":"BinaryOperation","src":"10066:15:8"}],"id":10142,"name":"FunctionCall","src":"10058:24:8"}],"id":10143,"name":"ExpressionStatement","src":"10058:24:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10097,"type":"uint256","value":"i"},"id":10144,"name":"Identifier","src":"10099:1:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10145,"name":"Identifier","src":"10104:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10146,"name":"Literal","src":"10110:1:8"}],"id":10147,"name":"BinaryOperation","src":"10104:7:8"}],"id":10148,"name":"BinaryOperation","src":"10099:12:8"},{"children":[{"id":10149,"name":"Break","src":"10131:5:8"}],"id":10150,"name":"Block","src":"10113:38:8"}],"id":10151,"name":"IfStatement","src":"10096:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10152,"name":"Identifier","src":"10164:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10153,"name":"Identifier","src":"10171:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10154,"name":"Literal","src":"10178:1:8"}],"id":10155,"name":"BinaryOperation","src":"10171:8:8"}],"id":10156,"name":"TupleExpression","src":"10170:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10157,"name":"Identifier","src":"10183:7:8"}],"id":10158,"name":"BinaryOperation","src":"10170:20:8"}],"id":10159,"name":"Assignment","src":"10164:26:8"}],"id":10160,"name":"ExpressionStatement","src":"10164:26:8"}],"id":10161,"name":"Block","src":"9881:320:8"}],"id":10162,"name":"ForStatement","src":"9851:350:8"},{"attributes":{"assignments":[10164]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":10290,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10163,"name":"ElementaryTypeName","src":"10211:4:8"}],"id":10164,"name":"VariableDeclaration","src":"10211:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10165,"name":"Identifier","src":"10225:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10166,"name":"Literal","src":"10231:1:8"}],"id":10167,"name":"BinaryOperation","src":"10225:7:8"}],"id":10168,"name":"VariableDeclarationStatement","src":"10211:21:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10169,"name":"Identifier","src":"10245:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10170,"name":"Literal","src":"10251:1:8"}],"id":10171,"name":"BinaryOperation","src":"10245:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10172,"name":"Literal","src":"10256:1:8"}],"id":10173,"name":"BinaryOperation","src":"10245:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10174,"name":"Identifier","src":"10325:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10175,"name":"Identifier","src":"10332:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10176,"name":"Literal","src":"10339:1:8"}],"id":10177,"name":"BinaryOperation","src":"10332:8:8"}],"id":10178,"name":"TupleExpression","src":"10331:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10179,"name":"Identifier","src":"10344:7:8"}],"id":10180,"name":"BinaryOperation","src":"10331:20:8"}],"id":10181,"name":"Assignment","src":"10325:26:8"}],"id":10182,"name":"ExpressionStatement","src":"10325:26:8"}],"id":10183,"name":"Block","src":"10259:103:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10184,"name":"Identifier","src":"10371:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10185,"name":"Literal","src":"10377:1:8"}],"id":10186,"name":"BinaryOperation","src":"10371:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10187,"name":"Literal","src":"10382:1:8"}],"id":10188,"name":"BinaryOperation","src":"10371:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10189,"name":"Identifier","src":"10444:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10190,"name":"Identifier","src":"10451:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10191,"name":"Literal","src":"10458:1:8"}],"id":10192,"name":"BinaryOperation","src":"10451:8:8"}],"id":10193,"name":"TupleExpression","src":"10450:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10194,"name":"Identifier","src":"10464:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10195,"name":"Literal","src":"10475:1:8"}],"id":10196,"name":"BinaryOperation","src":"10464:12:8"}],"id":10197,"name":"TupleExpression","src":"10463:14:8"}],"id":10198,"name":"BinaryOperation","src":"10450:27:8"}],"id":10199,"name":"Assignment","src":"10444:33:8"}],"id":10200,"name":"ExpressionStatement","src":"10444:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10201,"name":"Identifier","src":"10491:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10202,"name":"Literal","src":"10501:1:8"}],"id":10203,"name":"Assignment","src":"10491:11:8"}],"id":10204,"name":"ExpressionStatement","src":"10491:11:8"}],"id":10205,"name":"Block","src":"10385:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10206,"name":"Identifier","src":"10522:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10207,"name":"Literal","src":"10528:1:8"}],"id":10208,"name":"BinaryOperation","src":"10522:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10209,"name":"Literal","src":"10533:1:8"}],"id":10210,"name":"BinaryOperation","src":"10522:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10211,"name":"Identifier","src":"10597:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10212,"name":"Identifier","src":"10604:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10213,"name":"Literal","src":"10611:1:8"}],"id":10214,"name":"BinaryOperation","src":"10604:8:8"}],"id":10215,"name":"TupleExpression","src":"10603:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10216,"name":"Identifier","src":"10617:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10217,"name":"Literal","src":"10628:1:8"}],"id":10218,"name":"BinaryOperation","src":"10617:12:8"}],"id":10219,"name":"TupleExpression","src":"10616:14:8"}],"id":10220,"name":"BinaryOperation","src":"10603:27:8"}],"id":10221,"name":"Assignment","src":"10597:33:8"}],"id":10222,"name":"ExpressionStatement","src":"10597:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10223,"name":"Identifier","src":"10644:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10224,"name":"Literal","src":"10654:1:8"}],"id":10225,"name":"Assignment","src":"10644:11:8"}],"id":10226,"name":"ExpressionStatement","src":"10644:11:8"}],"id":10227,"name":"Block","src":"10536:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10228,"name":"Identifier","src":"10675:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10229,"name":"Literal","src":"10681:1:8"}],"id":10230,"name":"BinaryOperation","src":"10675:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10231,"name":"Literal","src":"10686:1:8"}],"id":10232,"name":"BinaryOperation","src":"10675:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10233,"name":"Identifier","src":"10750:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10234,"name":"Identifier","src":"10757:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10235,"name":"Literal","src":"10764:1:8"}],"id":10236,"name":"BinaryOperation","src":"10757:8:8"}],"id":10237,"name":"TupleExpression","src":"10756:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10238,"name":"Identifier","src":"10770:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10239,"name":"Literal","src":"10781:1:8"}],"id":10240,"name":"BinaryOperation","src":"10770:12:8"}],"id":10241,"name":"TupleExpression","src":"10769:14:8"}],"id":10242,"name":"BinaryOperation","src":"10756:27:8"}],"id":10243,"name":"Assignment","src":"10750:33:8"}],"id":10244,"name":"ExpressionStatement","src":"10750:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10245,"name":"Identifier","src":"10797:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10246,"name":"Literal","src":"10807:1:8"}],"id":10247,"name":"Assignment","src":"10797:11:8"}],"id":10248,"name":"ExpressionStatement","src":"10797:11:8"}],"id":10249,"name":"Block","src":"10689:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10250,"name":"Identifier","src":"10828:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10251,"name":"Literal","src":"10834:1:8"}],"id":10252,"name":"BinaryOperation","src":"10828:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":10253,"name":"Literal","src":"10839:1:8"}],"id":10254,"name":"BinaryOperation","src":"10828:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10255,"name":"Identifier","src":"10904:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10256,"name":"Identifier","src":"10911:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10257,"name":"Literal","src":"10918:1:8"}],"id":10258,"name":"BinaryOperation","src":"10911:8:8"}],"id":10259,"name":"TupleExpression","src":"10910:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10260,"name":"Identifier","src":"10924:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10261,"name":"Literal","src":"10935:1:8"}],"id":10262,"name":"BinaryOperation","src":"10924:12:8"}],"id":10263,"name":"TupleExpression","src":"10923:14:8"}],"id":10264,"name":"BinaryOperation","src":"10910:27:8"}],"id":10265,"name":"Assignment","src":"10904:33:8"}],"id":10266,"name":"ExpressionStatement","src":"10904:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10267,"name":"Identifier","src":"10951:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10268,"name":"Literal","src":"10961:1:8"}],"id":10269,"name":"Assignment","src":"10951:11:8"}],"id":10270,"name":"ExpressionStatement","src":"10951:11:8"}],"id":10271,"name":"Block","src":"10842:131:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[10312,10313],"referencedDeclaration":10312,"type":"function () pure","value":"revert"},"id":10272,"name":"Identifier","src":"10993:6:8"}],"id":10273,"name":"FunctionCall","src":"10993:8:8"}],"id":10274,"name":"ExpressionStatement","src":"10993:8:8"}],"id":10275,"name":"Block","src":"10979:33:8"}],"id":10276,"name":"IfStatement","src":"10825:187:8"}],"id":10277,"name":"IfStatement","src":"10672:340:8"}],"id":10278,"name":"IfStatement","src":"10519:493:8"}],"id":10279,"name":"IfStatement","src":"10368:644:8"}],"id":10280,"name":"IfStatement","src":"10242:770:8"},{"attributes":{"functionReturnParameters":10082},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":10281,"name":"ElementaryTypeNameExpression","src":"11029:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10282,"name":"Identifier","src":"11037:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10283,"name":"Literal","src":"11045:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10284,"name":"Identifier","src":"11051:6:8"}],"id":10285,"name":"BinaryOperation","src":"11045:12:8"}],"id":10286,"name":"TupleExpression","src":"11044:14:8"}],"id":10287,"name":"BinaryOperation","src":"11037:21:8"}],"id":10288,"name":"FunctionCall","src":"11029:30:8"}],"id":10289,"name":"Return","src":"11022:37:8"}],"id":10290,"name":"Block","src":"9767:1299:8"}],"id":10291,"name":"FunctionDefinition","src":"9668:1398:8"}],"id":10292,"name":"ContractDefinition","src":"26:11042:8"}],"id":10293,"name":"SourceUnit","src":"0:11069:8"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[3287]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3115,"name":"PragmaDirective","src":"1401:23:9"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":3116,"name":"PragmaDirective","src":"1425:33:9"},{"attributes":{"SourceUnit":3114,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3117,"name":"ImportDirective","src":"1460:19:9"},{"attributes":{"SourceUnit":4929,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3118,"name":"ImportDirective","src":"1480:36:9"},{"attributes":{"SourceUnit":5088,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3119,"name":"ImportDirective","src":"1517:37:9"},{"attributes":{"SourceUnit":5158,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3120,"name":"ImportDirective","src":"1555:44:9"},{"attributes":{"SourceUnit":5649,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3121,"name":"ImportDirective","src":"1600:36:9"},{"attributes":{"SourceUnit":5836,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3122,"name":"ImportDirective","src":"1637:42:9"},{"attributes":{"SourceUnit":5906,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3123,"name":"ImportDirective","src":"1680:37:9"},{"attributes":{"SourceUnit":5997,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3124,"name":"ImportDirective","src":"1718:39:9"},{"attributes":{"SourceUnit":6080,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3125,"name":"ImportDirective","src":"1758:37:9"},{"attributes":{"contractDependencies":[4928,5087,5157,5648,5835,5905,5996,6079,7136],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[3287,6079,5996,5905,5835,5648,5157,5087,4928,7136],"name":"PublicResolver","scope":3288},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":4928,"type":"contract ABIResolver"},"id":3126,"name":"UserDefinedTypeName","src":"1924:11:9"}],"id":3127,"name":"InheritanceSpecifier","src":"1924:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5087,"type":"contract AddrResolver"},"id":3128,"name":"UserDefinedTypeName","src":"1937:12:9"}],"id":3129,"name":"InheritanceSpecifier","src":"1937:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":5157,"type":"contract ContentHashResolver"},"id":3130,"name":"UserDefinedTypeName","src":"1951:19:9"}],"id":3131,"name":"InheritanceSpecifier","src":"1951:19:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":5648,"type":"contract DNSResolver"},"id":3132,"name":"UserDefinedTypeName","src":"1972:11:9"}],"id":3133,"name":"InheritanceSpecifier","src":"1972:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":5835,"type":"contract InterfaceResolver"},"id":3134,"name":"UserDefinedTypeName","src":"1985:17:9"}],"id":3135,"name":"InheritanceSpecifier","src":"1985:17:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":5905,"type":"contract NameResolver"},"id":3136,"name":"UserDefinedTypeName","src":"2004:12:9"}],"id":3137,"name":"InheritanceSpecifier","src":"2004:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":5996,"type":"contract PubkeyResolver"},"id":3138,"name":"UserDefinedTypeName","src":"2018:14:9"}],"id":3139,"name":"InheritanceSpecifier","src":"2018:14:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":6079,"type":"contract TextResolver"},"id":3140,"name":"UserDefinedTypeName","src":"2034:12:9"}],"id":3141,"name":"InheritanceSpecifier","src":"2034:12:9"},{"attributes":{"constant":false,"name":"ens","scope":3287,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":3113,"type":"contract ENS"},"id":3142,"name":"UserDefinedTypeName","src":"2053:3:9"}],"id":3143,"name":"VariableDeclaration","src":"2053:7:9"},{"attributes":{"constant":false,"name":"authorisations","scope":3287,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3144,"name":"ElementaryTypeName","src":"2328:7:9"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":3145,"name":"ElementaryTypeName","src":"2345:7:9"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3146,"name":"ElementaryTypeName","src":"2362:7:9"},{"attributes":{"name":"bool","type":"bool"},"id":3147,"name":"ElementaryTypeName","src":"2371:4:9"}],"id":3148,"name":"Mapping","src":"2354:22:9"}],"id":3149,"name":"Mapping","src":"2337:40:9"}],"id":3150,"name":"Mapping","src":"2320:58:9"}],"id":3151,"name":"VariableDeclaration","src":"2320:80:9"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":3161,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3152,"name":"ElementaryTypeName","src":"2434:7:9"}],"id":3153,"name":"VariableDeclaration","src":"2434:20:9"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":3161,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3154,"name":"ElementaryTypeName","src":"2456:7:9"}],"id":3155,"name":"VariableDeclaration","src":"2456:21:9"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":3161,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3156,"name":"ElementaryTypeName","src":"2479:7:9"}],"id":3157,"name":"VariableDeclaration","src":"2479:22:9"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":3161,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3158,"name":"ElementaryTypeName","src":"2503:4:9"}],"id":3159,"name":"VariableDeclaration","src":"2503:17:9"}],"id":3160,"name":"ParameterList","src":"2433:88:9"}],"id":3161,"name":"EventDefinition","src":"2407:115:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3287,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":3171,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":3113,"type":"contract ENS"},"id":3162,"name":"UserDefinedTypeName","src":"2540:3:9"}],"id":3163,"name":"VariableDeclaration","src":"2540:8:9"}],"id":3164,"name":"ParameterList","src":"2539:10:9"},{"attributes":{"parameters":[null]},"children":[],"id":3165,"name":"ParameterList","src":"2557:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3143,"type":"contract ENS","value":"ens"},"id":3166,"name":"Identifier","src":"2567:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3163,"type":"contract ENS","value":"_ens"},"id":3167,"name":"Identifier","src":"2573:4:9"}],"id":3168,"name":"Assignment","src":"2567:10:9"}],"id":3169,"name":"ExpressionStatement","src":"2567:10:9"}],"id":3170,"name":"Block","src":"2557:27:9"}],"id":3171,"name":"FunctionDefinition","src":"2528:56:9"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":3287,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3200,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3172,"name":"ElementaryTypeName","src":"3295:7:9"}],"id":3173,"name":"VariableDeclaration","src":"3295:12:9"},{"attributes":{"constant":false,"name":"target","scope":3200,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3174,"name":"ElementaryTypeName","src":"3309:7:9"}],"id":3175,"name":"VariableDeclaration","src":"3309:14:9"},{"attributes":{"constant":false,"name":"isAuthorised","scope":3200,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3176,"name":"ElementaryTypeName","src":"3325:4:9"}],"id":3177,"name":"VariableDeclaration","src":"3325:17:9"}],"id":3178,"name":"ParameterList","src":"3294:49:9"},{"attributes":{"parameters":[null]},"children":[],"id":3179,"name":"ParameterList","src":"3353:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3151,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":3180,"name":"Identifier","src":"3363:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3173,"type":"bytes32","value":"node"},"id":3181,"name":"Identifier","src":"3378:4:9"}],"id":3185,"name":"IndexAccess","src":"3363:20:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3182,"name":"Identifier","src":"3384:3:9"}],"id":3183,"name":"MemberAccess","src":"3384:10:9"}],"id":3186,"name":"IndexAccess","src":"3363:32:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3175,"type":"address","value":"target"},"id":3184,"name":"Identifier","src":"3396:6:9"}],"id":3187,"name":"IndexAccess","src":"3363:40:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3177,"type":"bool","value":"isAuthorised"},"id":3188,"name":"Identifier","src":"3406:12:9"}],"id":3189,"name":"Assignment","src":"3363:55:9"}],"id":3190,"name":"ExpressionStatement","src":"3363:55:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":3161,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":3191,"name":"Identifier","src":"3433:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3173,"type":"bytes32","value":"node"},"id":3192,"name":"Identifier","src":"3454:4:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3193,"name":"Identifier","src":"3460:3:9"}],"id":3194,"name":"MemberAccess","src":"3460:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3175,"type":"address","value":"target"},"id":3195,"name":"Identifier","src":"3472:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3177,"type":"bool","value":"isAuthorised"},"id":3196,"name":"Identifier","src":"3480:12:9"}],"id":3197,"name":"FunctionCall","src":"3433:60:9"}],"id":3198,"name":"EmitStatement","src":"3428:65:9"}],"id":3199,"name":"Block","src":"3353:147:9"}],"id":3200,"name":"FunctionDefinition","src":"3269:231:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":3287,"stateMutability":"view","superFunction":7091,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3229,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3201,"name":"ElementaryTypeName","src":"3528:7:9"}],"id":3202,"name":"VariableDeclaration","src":"3528:12:9"}],"id":3203,"name":"ParameterList","src":"3527:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":3229,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3204,"name":"ElementaryTypeName","src":"3564:4:9"}],"id":3205,"name":"VariableDeclaration","src":"3564:4:9"}],"id":3206,"name":"ParameterList","src":"3563:6:9"},{"children":[{"attributes":{"assignments":[3208]},"children":[{"attributes":{"constant":false,"name":"owner","scope":3228,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3207,"name":"ElementaryTypeName","src":"3580:7:9"}],"id":3208,"name":"VariableDeclaration","src":"3580:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":3082,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3143,"type":"contract ENS","value":"ens"},"id":3209,"name":"Identifier","src":"3596:3:9"}],"id":3210,"name":"MemberAccess","src":"3596:9:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"bytes32","value":"node"},"id":3211,"name":"Identifier","src":"3606:4:9"}],"id":3212,"name":"FunctionCall","src":"3596:15:9"}],"id":3213,"name":"VariableDeclarationStatement","src":"3580:31:9"},{"attributes":{"functionReturnParameters":3206},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"address","value":"owner"},"id":3214,"name":"Identifier","src":"3628:5:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3215,"name":"Identifier","src":"3637:3:9"}],"id":3216,"name":"MemberAccess","src":"3637:10:9"}],"id":3217,"name":"BinaryOperation","src":"3628:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3151,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":3218,"name":"Identifier","src":"3651:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"bytes32","value":"node"},"id":3219,"name":"Identifier","src":"3666:4:9"}],"id":3220,"name":"IndexAccess","src":"3651:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"address","value":"owner"},"id":3221,"name":"Identifier","src":"3672:5:9"}],"id":3222,"name":"IndexAccess","src":"3651:27:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3223,"name":"Identifier","src":"3679:3:9"}],"id":3224,"name":"MemberAccess","src":"3679:10:9"}],"id":3225,"name":"IndexAccess","src":"3651:39:9"}],"id":3226,"name":"BinaryOperation","src":"3628:62:9"}],"id":3227,"name":"Return","src":"3621:69:9"}],"id":3228,"name":"Block","src":"3570:127:9"}],"id":3229,"name":"FunctionDefinition","src":"3506:191:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":3287,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":3286,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3230,"name":"ElementaryTypeName","src":"3722:5:9"}],"id":3231,"name":"ArrayTypeName","src":"3722:7:9"}],"id":3232,"name":"VariableDeclaration","src":"3722:21:9"}],"id":3233,"name":"ParameterList","src":"3721:23:9"},{"children":[{"attributes":{"constant":false,"name":"results","scope":3286,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3234,"name":"ElementaryTypeName","src":"3762:5:9"}],"id":3235,"name":"ArrayTypeName","src":"3762:7:9"}],"id":3236,"name":"VariableDeclaration","src":"3762:22:9"}],"id":3237,"name":"ParameterList","src":"3761:24:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3236,"type":"bytes memory[] memory","value":"results"},"id":3238,"name":"Identifier","src":"3796:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3239,"name":"ElementaryTypeName","src":"3810:5:9"}],"id":3240,"name":"ArrayTypeName","src":"3810:7:9"}],"id":3241,"name":"NewExpression","src":"3806:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3232,"type":"bytes calldata[] calldata","value":"data"},"id":3242,"name":"Identifier","src":"3818:4:9"}],"id":3243,"name":"MemberAccess","src":"3818:11:9"}],"id":3244,"name":"FunctionCall","src":"3806:24:9"}],"id":3245,"name":"Assignment","src":"3796:34:9"}],"id":3246,"name":"ExpressionStatement","src":"3796:34:9"},{"children":[{"attributes":{"assignments":[3248]},"children":[{"attributes":{"constant":false,"name":"i","scope":3282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3247,"name":"ElementaryTypeName","src":"3844:4:9"}],"id":3248,"name":"VariableDeclaration","src":"3844:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3249,"name":"Literal","src":"3853:1:9"}],"id":3250,"name":"VariableDeclarationStatement","src":"3844:10:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"uint256","value":"i"},"id":3251,"name":"Identifier","src":"3856:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3232,"type":"bytes calldata[] calldata","value":"data"},"id":3252,"name":"Identifier","src":"3860:4:9"}],"id":3253,"name":"MemberAccess","src":"3860:11:9"}],"id":3254,"name":"BinaryOperation","src":"3856:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"uint256","value":"i"},"id":3255,"name":"Identifier","src":"3873:1:9"}],"id":3256,"name":"UnaryOperation","src":"3873:3:9"}],"id":3257,"name":"ExpressionStatement","src":"3873:3:9"},{"children":[{"attributes":{"assignments":[3259,3261]},"children":[{"attributes":{"constant":false,"name":"success","scope":3281,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3258,"name":"ElementaryTypeName","src":"3893:4:9"}],"id":3259,"name":"VariableDeclaration","src":"3893:12:9"},{"attributes":{"constant":false,"name":"result","scope":3281,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3260,"name":"ElementaryTypeName","src":"3907:5:9"}],"id":3261,"name":"VariableDeclaration","src":"3907:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$3287","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3262,"name":"ElementaryTypeNameExpression","src":"3930:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10365,"type":"contract PublicResolver","value":"this"},"id":3263,"name":"Identifier","src":"3938:4:9"}],"id":3264,"name":"FunctionCall","src":"3930:13:9"}],"id":3265,"name":"MemberAccess","src":"3930:26:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3232,"type":"bytes calldata[] calldata","value":"data"},"id":3266,"name":"Identifier","src":"3957:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"uint256","value":"i"},"id":3267,"name":"Identifier","src":"3962:1:9"}],"id":3268,"name":"IndexAccess","src":"3957:7:9"}],"id":3269,"name":"FunctionCall","src":"3930:35:9"}],"id":3270,"name":"VariableDeclarationStatement","src":"3892:73:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":3271,"name":"Identifier","src":"3979:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3259,"type":"bool","value":"success"},"id":3272,"name":"Identifier","src":"3987:7:9"}],"id":3273,"name":"FunctionCall","src":"3979:16:9"}],"id":3274,"name":"ExpressionStatement","src":"3979:16:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3236,"type":"bytes memory[] memory","value":"results"},"id":3275,"name":"Identifier","src":"4009:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"uint256","value":"i"},"id":3276,"name":"Identifier","src":"4017:1:9"}],"id":3277,"name":"IndexAccess","src":"4009:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3261,"type":"bytes memory","value":"result"},"id":3278,"name":"Identifier","src":"4022:6:9"}],"id":3279,"name":"Assignment","src":"4009:19:9"}],"id":3280,"name":"ExpressionStatement","src":"4009:19:9"}],"id":3281,"name":"Block","src":"3878:161:9"}],"id":3282,"name":"ForStatement","src":"3840:199:9"},{"attributes":{"functionReturnParameters":3237},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3236,"type":"bytes memory[] memory","value":"results"},"id":3283,"name":"Identifier","src":"4055:7:9"}],"id":3284,"name":"Return","src":"4048:14:9"}],"id":3285,"name":"Block","src":"3786:283:9"}],"id":3286,"name":"FunctionDefinition","src":"3703:366:9"}],"id":3287,"name":"ContractDefinition","src":"1897:2174:9"}],"id":3288,"name":"SourceUnit","src":"1401:2671:9"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[7754]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":7138,"name":"PragmaDirective","src":"0:24:10"},{"attributes":{"SourceUnit":10293,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":7755,"symbolAliases":[null],"unitAlias":""},"id":7139,"name":"ImportDirective","src":"26:29:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[7754],"name":"RRUtils","scope":7755},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10292,"type":"library ENSBytesUtils"},"id":7140,"name":"UserDefinedTypeName","src":"178:13:10"}],"id":7141,"name":"UsingForDirective","src":"172:26:10"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7188,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7142,"name":"ElementaryTypeName","src":"487:5:10"}],"id":7143,"name":"VariableDeclaration","src":"487:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7144,"name":"ElementaryTypeName","src":"506:4:10"}],"id":7145,"name":"VariableDeclaration","src":"506:11:10"}],"id":7146,"name":"ParameterList","src":"486:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7147,"name":"ElementaryTypeName","src":"541:4:10"}],"id":7148,"name":"VariableDeclaration","src":"541:4:10"}],"id":7149,"name":"ParameterList","src":"540:6:10"},{"children":[{"attributes":{"assignments":[7151]},"children":[{"attributes":{"constant":false,"name":"idx","scope":7187,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7150,"name":"ElementaryTypeName","src":"557:4:10"}],"id":7151,"name":"VariableDeclaration","src":"557:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7145,"type":"uint256","value":"offset"},"id":7152,"name":"Identifier","src":"568:6:10"}],"id":7153,"name":"VariableDeclarationStatement","src":"557:17:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7154,"name":"Literal","src":"591:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10296,"type":"function (bool) pure","value":"assert"},"id":7155,"name":"Identifier","src":"611:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7151,"type":"uint256","value":"idx"},"id":7156,"name":"Identifier","src":"618:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7143,"type":"bytes memory","value":"self"},"id":7157,"name":"Identifier","src":"624:4:10"}],"id":7158,"name":"MemberAccess","src":"624:11:10"}],"id":7159,"name":"BinaryOperation","src":"618:17:10"}],"id":7160,"name":"FunctionCall","src":"611:25:10"}],"id":7161,"name":"ExpressionStatement","src":"611:25:10"},{"attributes":{"assignments":[7163]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":7181,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7162,"name":"ElementaryTypeName","src":"650:4:10"}],"id":7163,"name":"VariableDeclaration","src":"650:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7143,"type":"bytes memory","value":"self"},"id":7164,"name":"Identifier","src":"666:4:10"}],"id":7165,"name":"MemberAccess","src":"666:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7151,"type":"uint256","value":"idx"},"id":7166,"name":"Identifier","src":"681:3:10"}],"id":7167,"name":"FunctionCall","src":"666:19:10"}],"id":7168,"name":"VariableDeclarationStatement","src":"650:35:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7151,"type":"uint256","value":"idx"},"id":7169,"name":"Identifier","src":"699:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7163,"type":"uint256","value":"labelLen"},"id":7170,"name":"Identifier","src":"706:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7171,"name":"Literal","src":"717:1:10"}],"id":7172,"name":"BinaryOperation","src":"706:12:10"}],"id":7173,"name":"Assignment","src":"699:19:10"}],"id":7174,"name":"ExpressionStatement","src":"699:19:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7163,"type":"uint256","value":"labelLen"},"id":7175,"name":"Identifier","src":"736:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7176,"name":"Literal","src":"748:1:10"}],"id":7177,"name":"BinaryOperation","src":"736:13:10"},{"children":[{"id":7178,"name":"Break","src":"769:5:10"}],"id":7179,"name":"Block","src":"751:38:10"}],"id":7180,"name":"IfStatement","src":"732:57:10"}],"id":7181,"name":"Block","src":"597:202:10"}],"id":7182,"name":"WhileStatement","src":"584:215:10"},{"attributes":{"functionReturnParameters":7149},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7151,"type":"uint256","value":"idx"},"id":7183,"name":"Identifier","src":"815:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7145,"type":"uint256","value":"offset"},"id":7184,"name":"Identifier","src":"821:6:10"}],"id":7185,"name":"BinaryOperation","src":"815:12:10"}],"id":7186,"name":"Return","src":"808:19:10"}],"id":7187,"name":"Block","src":"547:287:10"}],"id":7188,"name":"FunctionDefinition","src":"467:367:10"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7211,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7189,"name":"ElementaryTypeName","src":"1073:5:10"}],"id":7190,"name":"VariableDeclaration","src":"1073:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7191,"name":"ElementaryTypeName","src":"1092:4:10"}],"id":7192,"name":"VariableDeclaration","src":"1092:11:10"}],"id":7193,"name":"ParameterList","src":"1072:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7211,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7194,"name":"ElementaryTypeName","src":"1127:5:10"}],"id":7195,"name":"VariableDeclaration","src":"1127:16:10"}],"id":7196,"name":"ParameterList","src":"1126:18:10"},{"children":[{"attributes":{"assignments":[7198]},"children":[{"attributes":{"constant":false,"name":"len","scope":7210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7197,"name":"ElementaryTypeName","src":"1155:4:10"}],"id":7198,"name":"VariableDeclaration","src":"1155:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7188,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":7199,"name":"Identifier","src":"1166:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7190,"type":"bytes memory","value":"self"},"id":7200,"name":"Identifier","src":"1177:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7192,"type":"uint256","value":"offset"},"id":7201,"name":"Identifier","src":"1183:6:10"}],"id":7202,"name":"FunctionCall","src":"1166:24:10"}],"id":7203,"name":"VariableDeclarationStatement","src":"1155:35:10"},{"attributes":{"functionReturnParameters":7196},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10069,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7190,"type":"bytes memory","value":"self"},"id":7204,"name":"Identifier","src":"1207:4:10"}],"id":7205,"name":"MemberAccess","src":"1207:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7192,"type":"uint256","value":"offset"},"id":7206,"name":"Identifier","src":"1222:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7198,"type":"uint256","value":"len"},"id":7207,"name":"Identifier","src":"1230:3:10"}],"id":7208,"name":"FunctionCall","src":"1207:27:10"}],"id":7209,"name":"Return","src":"1200:34:10"}],"id":7210,"name":"Block","src":"1145:96:10"}],"id":7211,"name":"FunctionDefinition","src":"1055:186:10"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7260,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7212,"name":"ElementaryTypeName","src":"1541:5:10"}],"id":7213,"name":"VariableDeclaration","src":"1541:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7260,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7214,"name":"ElementaryTypeName","src":"1560:4:10"}],"id":7215,"name":"VariableDeclaration","src":"1560:11:10"}],"id":7216,"name":"ParameterList","src":"1540:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7260,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7217,"name":"ElementaryTypeName","src":"1595:4:10"}],"id":7218,"name":"VariableDeclaration","src":"1595:4:10"}],"id":7219,"name":"ParameterList","src":"1594:6:10"},{"children":[{"attributes":{"assignments":[7221]},"children":[{"attributes":{"constant":false,"name":"count","scope":7259,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7220,"name":"ElementaryTypeName","src":"1611:4:10"}],"id":7221,"name":"VariableDeclaration","src":"1611:10:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7222,"name":"Literal","src":"1624:1:10"}],"id":7223,"name":"VariableDeclarationStatement","src":"1611:14:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7224,"name":"Literal","src":"1642:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10296,"type":"function (bool) pure","value":"assert"},"id":7225,"name":"Identifier","src":"1662:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7215,"type":"uint256","value":"offset"},"id":7226,"name":"Identifier","src":"1669:6:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7213,"type":"bytes memory","value":"self"},"id":7227,"name":"Identifier","src":"1678:4:10"}],"id":7228,"name":"MemberAccess","src":"1678:11:10"}],"id":7229,"name":"BinaryOperation","src":"1669:20:10"}],"id":7230,"name":"FunctionCall","src":"1662:28:10"}],"id":7231,"name":"ExpressionStatement","src":"1662:28:10"},{"attributes":{"assignments":[7233]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":7255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7232,"name":"ElementaryTypeName","src":"1704:4:10"}],"id":7233,"name":"VariableDeclaration","src":"1704:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7213,"type":"bytes memory","value":"self"},"id":7234,"name":"Identifier","src":"1720:4:10"}],"id":7235,"name":"MemberAccess","src":"1720:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7215,"type":"uint256","value":"offset"},"id":7236,"name":"Identifier","src":"1735:6:10"}],"id":7237,"name":"FunctionCall","src":"1720:22:10"}],"id":7238,"name":"VariableDeclarationStatement","src":"1704:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7215,"type":"uint256","value":"offset"},"id":7239,"name":"Identifier","src":"1756:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7233,"type":"uint256","value":"labelLen"},"id":7240,"name":"Identifier","src":"1766:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7241,"name":"Literal","src":"1777:1:10"}],"id":7242,"name":"BinaryOperation","src":"1766:12:10"}],"id":7243,"name":"Assignment","src":"1756:22:10"}],"id":7244,"name":"ExpressionStatement","src":"1756:22:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7233,"type":"uint256","value":"labelLen"},"id":7245,"name":"Identifier","src":"1796:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7246,"name":"Literal","src":"1808:1:10"}],"id":7247,"name":"BinaryOperation","src":"1796:13:10"},{"children":[{"id":7248,"name":"Break","src":"1829:5:10"}],"id":7249,"name":"Block","src":"1811:38:10"}],"id":7250,"name":"IfStatement","src":"1792:57:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7221,"type":"uint256","value":"count"},"id":7251,"name":"Identifier","src":"1862:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7252,"name":"Literal","src":"1871:1:10"}],"id":7253,"name":"Assignment","src":"1862:10:10"}],"id":7254,"name":"ExpressionStatement","src":"1862:10:10"}],"id":7255,"name":"Block","src":"1648:235:10"}],"id":7256,"name":"WhileStatement","src":"1635:248:10"},{"attributes":{"functionReturnParameters":7219},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7221,"type":"uint256","value":"count"},"id":7257,"name":"Identifier","src":"1899:5:10"}],"id":7258,"name":"Return","src":"1892:12:10"}],"id":7259,"name":"Block","src":"1601:310:10"}],"id":7260,"name":"FunctionDefinition","src":"1521:390:10"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":7754,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":7275,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7261,"name":"ElementaryTypeName","src":"2006:5:10"}],"id":7262,"name":"VariableDeclaration","src":"2006:10:10"},{"attributes":{"constant":false,"name":"offset","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7263,"name":"ElementaryTypeName","src":"2026:4:10"}],"id":7264,"name":"VariableDeclaration","src":"2026:11:10"},{"attributes":{"constant":false,"name":"dnstype","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":7265,"name":"ElementaryTypeName","src":"2047:6:10"}],"id":7266,"name":"VariableDeclaration","src":"2047:14:10"},{"attributes":{"constant":false,"name":"class","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":7267,"name":"ElementaryTypeName","src":"2071:6:10"}],"id":7268,"name":"VariableDeclaration","src":"2071:12:10"},{"attributes":{"constant":false,"name":"ttl","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":7269,"name":"ElementaryTypeName","src":"2093:6:10"}],"id":7270,"name":"VariableDeclaration","src":"2093:10:10"},{"attributes":{"constant":false,"name":"rdataOffset","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7271,"name":"ElementaryTypeName","src":"2113:4:10"}],"id":7272,"name":"VariableDeclaration","src":"2113:16:10"},{"attributes":{"constant":false,"name":"nextOffset","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7273,"name":"ElementaryTypeName","src":"2139:4:10"}],"id":7274,"name":"VariableDeclaration","src":"2139:15:10"}],"id":7275,"name":"StructDefinition","src":"1978:183:10"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7301,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7276,"name":"ElementaryTypeName","src":"2387:5:10"}],"id":7277,"name":"VariableDeclaration","src":"2387:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7301,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7278,"name":"ElementaryTypeName","src":"2406:4:10"}],"id":7279,"name":"VariableDeclaration","src":"2406:11:10"}],"id":7280,"name":"ParameterList","src":"2386:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7301,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7281,"name":"UserDefinedTypeName","src":"2442:10:10"}],"id":7282,"name":"VariableDeclaration","src":"2442:21:10"}],"id":7283,"name":"ParameterList","src":"2441:23:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":7284,"name":"Identifier","src":"2475:3:10"}],"id":7286,"name":"MemberAccess","src":"2475:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7277,"type":"bytes memory","value":"self"},"id":7287,"name":"Identifier","src":"2486:4:10"}],"id":7288,"name":"Assignment","src":"2475:15:10"}],"id":7289,"name":"ExpressionStatement","src":"2475:15:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":7274,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":7290,"name":"Identifier","src":"2500:3:10"}],"id":7292,"name":"MemberAccess","src":"2500:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"offset"},"id":7293,"name":"Identifier","src":"2517:6:10"}],"id":7294,"name":"Assignment","src":"2500:23:10"}],"id":7295,"name":"ExpressionStatement","src":"2500:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$7275_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7418,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":7296,"name":"Identifier","src":"2533:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":7297,"name":"Identifier","src":"2538:3:10"}],"id":7298,"name":"FunctionCall","src":"2533:9:10"}],"id":7299,"name":"ExpressionStatement","src":"2533:9:10"}],"id":7300,"name":"Block","src":"2465:84:10"}],"id":7301,"name":"FunctionDefinition","src":"2367:182:10"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":7316,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7302,"name":"UserDefinedTypeName","src":"2734:10:10"}],"id":7303,"name":"VariableDeclaration","src":"2734:22:10"}],"id":7304,"name":"ParameterList","src":"2733:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7316,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7305,"name":"ElementaryTypeName","src":"2780:4:10"}],"id":7306,"name":"VariableDeclaration","src":"2780:4:10"}],"id":7307,"name":"ParameterList","src":"2779:6:10"},{"children":[{"attributes":{"functionReturnParameters":7307},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7303,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7308,"name":"Identifier","src":"2803:4:10"}],"id":7309,"name":"MemberAccess","src":"2803:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7303,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7310,"name":"Identifier","src":"2818:4:10"}],"id":7311,"name":"MemberAccess","src":"2818:9:10"}],"id":7312,"name":"MemberAccess","src":"2818:16:10"}],"id":7313,"name":"BinaryOperation","src":"2803:31:10"}],"id":7314,"name":"Return","src":"2796:38:10"}],"id":7315,"name":"Block","src":"2786:55:10"}],"id":7316,"name":"FunctionDefinition","src":"2720:121:10"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":7418,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7317,"name":"UserDefinedTypeName","src":"2978:10:10"}],"id":7318,"name":"VariableDeclaration","src":"2978:22:10"}],"id":7319,"name":"ParameterList","src":"2977:24:10"},{"attributes":{"parameters":[null]},"children":[],"id":7320,"name":"ParameterList","src":"3016:0:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7321,"name":"Identifier","src":"3026:4:10"}],"id":7323,"name":"MemberAccess","src":"3026:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":7274,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7324,"name":"Identifier","src":"3040:4:10"}],"id":7325,"name":"MemberAccess","src":"3040:15:10"}],"id":7326,"name":"Assignment","src":"3026:29:10"}],"id":7327,"name":"ExpressionStatement","src":"3026:29:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7328,"name":"Identifier","src":"3069:4:10"}],"id":7329,"name":"MemberAccess","src":"3069:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7330,"name":"Identifier","src":"3084:4:10"}],"id":7331,"name":"MemberAccess","src":"3084:9:10"}],"id":7332,"name":"MemberAccess","src":"3084:16:10"}],"id":7333,"name":"BinaryOperation","src":"3069:31:10"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":7320},"id":7334,"name":"Return","src":"3116:7:10"}],"id":7335,"name":"Block","src":"3102:31:10"}],"id":7336,"name":"IfStatement","src":"3065:68:10"},{"attributes":{"assignments":[7338]},"children":[{"attributes":{"constant":false,"name":"off","scope":7417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7337,"name":"ElementaryTypeName","src":"3168:4:10"}],"id":7338,"name":"VariableDeclaration","src":"3168:8:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7339,"name":"Identifier","src":"3179:4:10"}],"id":7340,"name":"MemberAccess","src":"3179:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7188,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":7341,"name":"Identifier","src":"3193:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7342,"name":"Identifier","src":"3204:4:10"}],"id":7343,"name":"MemberAccess","src":"3204:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7344,"name":"Identifier","src":"3215:4:10"}],"id":7345,"name":"MemberAccess","src":"3215:11:10"}],"id":7346,"name":"FunctionCall","src":"3193:34:10"}],"id":7347,"name":"BinaryOperation","src":"3179:48:10"}],"id":7348,"name":"VariableDeclarationStatement","src":"3168:59:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":7266,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7349,"name":"Identifier","src":"3275:4:10"}],"id":7351,"name":"MemberAccess","src":"3275:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9898,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7352,"name":"Identifier","src":"3290:4:10"}],"id":7353,"name":"MemberAccess","src":"3290:9:10"}],"id":7354,"name":"MemberAccess","src":"3290:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7355,"name":"Identifier","src":"3311:3:10"}],"id":7356,"name":"FunctionCall","src":"3290:25:10"}],"id":7357,"name":"Assignment","src":"3275:40:10"}],"id":7358,"name":"ExpressionStatement","src":"3275:40:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7359,"name":"Identifier","src":"3325:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7360,"name":"Literal","src":"3332:1:10"}],"id":7361,"name":"Assignment","src":"3325:8:10"}],"id":7362,"name":"ExpressionStatement","src":"3325:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":7268,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7363,"name":"Identifier","src":"3343:4:10"}],"id":7365,"name":"MemberAccess","src":"3343:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9898,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7366,"name":"Identifier","src":"3356:4:10"}],"id":7367,"name":"MemberAccess","src":"3356:9:10"}],"id":7368,"name":"MemberAccess","src":"3356:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7369,"name":"Identifier","src":"3377:3:10"}],"id":7370,"name":"FunctionCall","src":"3356:25:10"}],"id":7371,"name":"Assignment","src":"3343:38:10"}],"id":7372,"name":"ExpressionStatement","src":"3343:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7373,"name":"Identifier","src":"3391:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7374,"name":"Literal","src":"3398:1:10"}],"id":7375,"name":"Assignment","src":"3391:8:10"}],"id":7376,"name":"ExpressionStatement","src":"3391:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":7270,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7377,"name":"Identifier","src":"3409:4:10"}],"id":7379,"name":"MemberAccess","src":"3409:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":9918,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7380,"name":"Identifier","src":"3420:4:10"}],"id":7381,"name":"MemberAccess","src":"3420:9:10"}],"id":7382,"name":"MemberAccess","src":"3420:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7383,"name":"Identifier","src":"3441:3:10"}],"id":7384,"name":"FunctionCall","src":"3420:25:10"}],"id":7385,"name":"Assignment","src":"3409:36:10"}],"id":7386,"name":"ExpressionStatement","src":"3409:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7387,"name":"Identifier","src":"3455:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7388,"name":"Literal","src":"3462:1:10"}],"id":7389,"name":"Assignment","src":"3455:8:10"}],"id":7390,"name":"ExpressionStatement","src":"3455:8:10"},{"attributes":{"assignments":[7392]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":7417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7391,"name":"ElementaryTypeName","src":"3500:4:10"}],"id":7392,"name":"VariableDeclaration","src":"3500:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9898,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7393,"name":"Identifier","src":"3519:4:10"}],"id":7394,"name":"MemberAccess","src":"3519:9:10"}],"id":7395,"name":"MemberAccess","src":"3519:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7396,"name":"Identifier","src":"3540:3:10"}],"id":7397,"name":"FunctionCall","src":"3519:25:10"}],"id":7398,"name":"VariableDeclarationStatement","src":"3500:44:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7399,"name":"Identifier","src":"3554:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7400,"name":"Literal","src":"3561:1:10"}],"id":7401,"name":"Assignment","src":"3554:8:10"}],"id":7402,"name":"ExpressionStatement","src":"3554:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":7272,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7403,"name":"Identifier","src":"3572:4:10"}],"id":7405,"name":"MemberAccess","src":"3572:16:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7406,"name":"Identifier","src":"3591:3:10"}],"id":7407,"name":"Assignment","src":"3572:22:10"}],"id":7408,"name":"ExpressionStatement","src":"3572:22:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":7274,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7409,"name":"Identifier","src":"3604:4:10"}],"id":7411,"name":"MemberAccess","src":"3604:15:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7412,"name":"Identifier","src":"3622:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7392,"type":"uint256","value":"rdataLength"},"id":7413,"name":"Identifier","src":"3628:11:10"}],"id":7414,"name":"BinaryOperation","src":"3622:17:10"}],"id":7415,"name":"Assignment","src":"3604:35:10"}],"id":7416,"name":"ExpressionStatement","src":"3604:35:10"}],"id":7417,"name":"Block","src":"3016:630:10"}],"id":7418,"name":"FunctionDefinition","src":"2964:682:10"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":7439,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7419,"name":"UserDefinedTypeName","src":"3836:10:10"}],"id":7420,"name":"VariableDeclaration","src":"3836:22:10"}],"id":7421,"name":"ParameterList","src":"3835:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7439,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7422,"name":"ElementaryTypeName","src":"3882:5:10"}],"id":7423,"name":"VariableDeclaration","src":"3882:12:10"}],"id":7424,"name":"ParameterList","src":"3881:14:10"},{"children":[{"attributes":{"functionReturnParameters":7424},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10069,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7420,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7425,"name":"Identifier","src":"3913:4:10"}],"id":7426,"name":"MemberAccess","src":"3913:9:10"}],"id":7427,"name":"MemberAccess","src":"3913:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7420,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7428,"name":"Identifier","src":"3933:4:10"}],"id":7429,"name":"MemberAccess","src":"3933:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7188,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":7430,"name":"Identifier","src":"3946:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7420,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7431,"name":"Identifier","src":"3957:4:10"}],"id":7432,"name":"MemberAccess","src":"3957:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7420,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7433,"name":"Identifier","src":"3968:4:10"}],"id":7434,"name":"MemberAccess","src":"3968:11:10"}],"id":7435,"name":"FunctionCall","src":"3946:34:10"}],"id":7436,"name":"FunctionCall","src":"3913:68:10"}],"id":7437,"name":"Return","src":"3906:75:10"}],"id":7438,"name":"Block","src":"3896:92:10"}],"id":7439,"name":"FunctionDefinition","src":"3822:166:10"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":7459,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7440,"name":"UserDefinedTypeName","src":"4176:10:10"}],"id":7441,"name":"VariableDeclaration","src":"4176:22:10"}],"id":7442,"name":"ParameterList","src":"4175:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7459,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7443,"name":"ElementaryTypeName","src":"4222:5:10"}],"id":7444,"name":"VariableDeclaration","src":"4222:12:10"}],"id":7445,"name":"ParameterList","src":"4221:14:10"},{"children":[{"attributes":{"functionReturnParameters":7445},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10069,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7441,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7446,"name":"Identifier","src":"4253:4:10"}],"id":7447,"name":"MemberAccess","src":"4253:9:10"}],"id":7448,"name":"MemberAccess","src":"4253:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":7272,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7441,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7449,"name":"Identifier","src":"4273:4:10"}],"id":7450,"name":"MemberAccess","src":"4273:16:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":7274,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7441,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7451,"name":"Identifier","src":"4291:4:10"}],"id":7452,"name":"MemberAccess","src":"4291:15:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":7272,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7441,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7453,"name":"Identifier","src":"4309:4:10"}],"id":7454,"name":"MemberAccess","src":"4309:16:10"}],"id":7455,"name":"BinaryOperation","src":"4291:34:10"}],"id":7456,"name":"FunctionCall","src":"4253:73:10"}],"id":7457,"name":"Return","src":"4246:80:10"}],"id":7458,"name":"Block","src":"4236:97:10"}],"id":7459,"name":"FunctionDefinition","src":"4161:172:10"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7579,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7460,"name":"ElementaryTypeName","src":"4675:5:10"}],"id":7461,"name":"VariableDeclaration","src":"4675:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7462,"name":"ElementaryTypeName","src":"4694:4:10"}],"id":7463,"name":"VariableDeclaration","src":"4694:11:10"},{"attributes":{"constant":false,"name":"rrtype","scope":7579,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":7464,"name":"ElementaryTypeName","src":"4707:6:10"}],"id":7465,"name":"VariableDeclaration","src":"4707:13:10"}],"id":7466,"name":"ParameterList","src":"4674:47:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7579,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7467,"name":"ElementaryTypeName","src":"4745:4:10"}],"id":7468,"name":"VariableDeclaration","src":"4745:4:10"}],"id":7469,"name":"ParameterList","src":"4744:6:10"},{"children":[{"attributes":{"assignments":[7471]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":7578,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7470,"name":"ElementaryTypeName","src":"4761:5:10"}],"id":7471,"name":"VariableDeclaration","src":"4761:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7472,"name":"ElementaryTypeNameExpression","src":"4780:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7465,"type":"uint16","value":"rrtype"},"id":7473,"name":"Identifier","src":"4786:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7474,"name":"Literal","src":"4796:1:10"}],"id":7475,"name":"BinaryOperation","src":"4786:11:10"}],"id":7476,"name":"FunctionCall","src":"4780:18:10"}],"id":7477,"name":"VariableDeclarationStatement","src":"4761:37:10"},{"attributes":{"assignments":[7479]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":7578,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7478,"name":"ElementaryTypeName","src":"4808:5:10"}],"id":7479,"name":"VariableDeclaration","src":"4808:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7480,"name":"ElementaryTypeNameExpression","src":"4827:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7465,"type":"uint16","value":"rrtype"},"id":7481,"name":"Identifier","src":"4834:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7482,"name":"Literal","src":"4843:4:10"}],"id":7483,"name":"BinaryOperation","src":"4834:13:10"}],"id":7484,"name":"TupleExpression","src":"4833:15:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7485,"name":"Literal","src":"4851:1:10"}],"id":7486,"name":"BinaryOperation","src":"4833:19:10"}],"id":7487,"name":"FunctionCall","src":"4827:26:10"}],"id":7488,"name":"VariableDeclarationStatement","src":"4808:45:10"},{"attributes":{"assignments":[7490]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":7578,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7489,"name":"ElementaryTypeName","src":"4863:5:10"}],"id":7490,"name":"VariableDeclaration","src":"4863:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7491,"name":"ElementaryTypeNameExpression","src":"4885:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7492,"name":"ElementaryTypeNameExpression","src":"4891:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7493,"name":"Literal","src":"4897:1:10"}],"id":7494,"name":"FunctionCall","src":"4891:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7495,"name":"ElementaryTypeNameExpression","src":"4904:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":7496,"name":"Literal","src":"4910:1:10"}],"id":7497,"name":"FunctionCall","src":"4904:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7498,"name":"ElementaryTypeNameExpression","src":"4915:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7465,"type":"uint16","value":"rrtype"},"id":7499,"name":"Identifier","src":"4921:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":7500,"name":"Literal","src":"4930:3:10"}],"id":7501,"name":"BinaryOperation","src":"4921:12:10"}],"id":7502,"name":"FunctionCall","src":"4915:19:10"}],"id":7503,"name":"BinaryOperation","src":"4904:30:10"}],"id":7504,"name":"TupleExpression","src":"4903:32:10"}],"id":7505,"name":"BinaryOperation","src":"4891:44:10"}],"id":7506,"name":"FunctionCall","src":"4885:51:10"}],"id":7507,"name":"VariableDeclarationStatement","src":"4863:73:10"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[7509]},"children":[{"attributes":{"constant":false,"name":"off","scope":7575,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7508,"name":"ElementaryTypeName","src":"4951:4:10"}],"id":7509,"name":"VariableDeclaration","src":"4951:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7463,"type":"uint256","value":"offset"},"id":7510,"name":"Identifier","src":"4962:6:10"}],"id":7511,"name":"VariableDeclarationStatement","src":"4951:17:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7512,"name":"Identifier","src":"4970:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7461,"type":"bytes memory","value":"self"},"id":7513,"name":"Identifier","src":"4976:4:10"}],"id":7514,"name":"MemberAccess","src":"4976:11:10"}],"id":7515,"name":"BinaryOperation","src":"4970:17:10"},{"children":[{"attributes":{"assignments":[7517]},"children":[{"attributes":{"constant":false,"name":"window","scope":7574,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7516,"name":"ElementaryTypeName","src":"5004:5:10"}],"id":7517,"name":"VariableDeclaration","src":"5004:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7461,"type":"bytes memory","value":"self"},"id":7518,"name":"Identifier","src":"5019:4:10"}],"id":7519,"name":"MemberAccess","src":"5019:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7520,"name":"Identifier","src":"5034:3:10"}],"id":7521,"name":"FunctionCall","src":"5019:19:10"}],"id":7522,"name":"VariableDeclarationStatement","src":"5004:34:10"},{"attributes":{"assignments":[7524]},"children":[{"attributes":{"constant":false,"name":"len","scope":7574,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7523,"name":"ElementaryTypeName","src":"5052:5:10"}],"id":7524,"name":"VariableDeclaration","src":"5052:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7461,"type":"bytes memory","value":"self"},"id":7525,"name":"Identifier","src":"5064:4:10"}],"id":7526,"name":"MemberAccess","src":"5064:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7527,"name":"Identifier","src":"5079:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7528,"name":"Literal","src":"5085:1:10"}],"id":7529,"name":"BinaryOperation","src":"5079:7:10"}],"id":7530,"name":"FunctionCall","src":"5064:23:10"}],"id":7531,"name":"VariableDeclarationStatement","src":"5052:35:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7471,"type":"uint8","value":"typeWindow"},"id":7532,"name":"Identifier","src":"5105:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7517,"type":"uint8","value":"window"},"id":7533,"name":"Identifier","src":"5118:6:10"}],"id":7534,"name":"BinaryOperation","src":"5105:19:10"},{"children":[{"attributes":{"functionReturnParameters":7469},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7535,"name":"Literal","src":"5213:5:10"}],"id":7536,"name":"Return","src":"5206:12:10"}],"id":7537,"name":"Block","src":"5126:107:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7471,"type":"uint8","value":"typeWindow"},"id":7538,"name":"Identifier","src":"5243:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7517,"type":"uint8","value":"window"},"id":7539,"name":"Identifier","src":"5257:6:10"}],"id":7540,"name":"BinaryOperation","src":"5243:20:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint8","value":"len"},"id":7541,"name":"Identifier","src":"5329:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7542,"name":"Literal","src":"5335:1:10"}],"id":7543,"name":"BinaryOperation","src":"5329:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7479,"type":"uint8","value":"windowByte"},"id":7544,"name":"Identifier","src":"5340:10:10"}],"id":7545,"name":"BinaryOperation","src":"5329:21:10"},{"children":[{"attributes":{"functionReturnParameters":7469},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7546,"name":"Literal","src":"5443:5:10"}],"id":7547,"name":"Return","src":"5436:12:10"}],"id":7548,"name":"Block","src":"5352:115:10"}],"id":7549,"name":"IfStatement","src":"5325:142:10"},{"attributes":{"functionReturnParameters":7469},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7461,"type":"bytes memory","value":"self"},"id":7550,"name":"Identifier","src":"5492:4:10"}],"id":7551,"name":"MemberAccess","src":"5492:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7552,"name":"Identifier","src":"5507:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7479,"type":"uint8","value":"windowByte"},"id":7553,"name":"Identifier","src":"5513:10:10"}],"id":7554,"name":"BinaryOperation","src":"5507:16:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7555,"name":"Literal","src":"5526:1:10"}],"id":7556,"name":"BinaryOperation","src":"5507:20:10"}],"id":7557,"name":"FunctionCall","src":"5492:36:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7490,"type":"uint8","value":"windowBitmask"},"id":7558,"name":"Identifier","src":"5531:13:10"}],"id":7559,"name":"BinaryOperation","src":"5492:52:10"}],"id":7560,"name":"TupleExpression","src":"5491:54:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7561,"name":"Literal","src":"5549:1:10"}],"id":7562,"name":"BinaryOperation","src":"5491:59:10"}],"id":7563,"name":"Return","src":"5484:66:10"}],"id":7564,"name":"Block","src":"5265:300:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7565,"name":"Identifier","src":"5630:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint8","value":"len"},"id":7566,"name":"Identifier","src":"5637:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7567,"name":"Literal","src":"5643:1:10"}],"id":7568,"name":"BinaryOperation","src":"5637:7:10"}],"id":7569,"name":"Assignment","src":"5630:14:10"}],"id":7570,"name":"ExpressionStatement","src":"5630:14:10"}],"id":7571,"name":"Block","src":"5571:88:10"}],"id":7572,"name":"IfStatement","src":"5239:420:10"}],"id":7573,"name":"IfStatement","src":"5101:558:10"}],"id":7574,"name":"Block","src":"4990:679:10"}],"id":7575,"name":"ForStatement","src":"4946:723:10"},{"attributes":{"functionReturnParameters":7469},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7576,"name":"Literal","src":"5686:5:10"}],"id":7577,"name":"Return","src":"5679:12:10"}],"id":7578,"name":"Block","src":"4751:947:10"}],"id":7579,"name":"FunctionDefinition","src":"4650:1048:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7734,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7580,"name":"ElementaryTypeName","src":"5726:5:10"}],"id":7581,"name":"VariableDeclaration","src":"5726:17:10"},{"attributes":{"constant":false,"name":"other","scope":7734,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7582,"name":"ElementaryTypeName","src":"5745:5:10"}],"id":7583,"name":"VariableDeclaration","src":"5745:18:10"}],"id":7584,"name":"ParameterList","src":"5725:39:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7734,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":7585,"name":"ElementaryTypeName","src":"5788:3:10"}],"id":7586,"name":"VariableDeclaration","src":"5788:3:10"}],"id":7587,"name":"ParameterList","src":"5787:5:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9862,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7588,"name":"Identifier","src":"5807:4:10"}],"id":7589,"name":"MemberAccess","src":"5807:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7590,"name":"Identifier","src":"5819:5:10"}],"id":7591,"name":"FunctionCall","src":"5807:18:10"},{"children":[{"attributes":{"functionReturnParameters":7587},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7592,"name":"Literal","src":"5848:1:10"}],"id":7593,"name":"Return","src":"5841:8:10"}],"id":7594,"name":"Block","src":"5827:33:10"}],"id":7595,"name":"IfStatement","src":"5803:57:10"},{"attributes":{"assignments":[7597],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7596,"name":"ElementaryTypeName","src":"5870:4:10"}],"id":7597,"name":"VariableDeclaration","src":"5870:8:10"}],"id":7598,"name":"VariableDeclarationStatement","src":"5870:8:10"},{"attributes":{"assignments":[7600],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7599,"name":"ElementaryTypeName","src":"5888:4:10"}],"id":7600,"name":"VariableDeclaration","src":"5888:13:10"}],"id":7601,"name":"VariableDeclarationStatement","src":"5888:13:10"},{"attributes":{"assignments":[7603],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7602,"name":"ElementaryTypeName","src":"5911:4:10"}],"id":7603,"name":"VariableDeclaration","src":"5911:12:10"}],"id":7604,"name":"VariableDeclarationStatement","src":"5911:12:10"},{"attributes":{"assignments":[7606],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7605,"name":"ElementaryTypeName","src":"5933:4:10"}],"id":7606,"name":"VariableDeclaration","src":"5933:17:10"}],"id":7607,"name":"VariableDeclarationStatement","src":"5933:17:10"},{"attributes":{"assignments":[7609]},"children":[{"attributes":{"constant":false,"name":"counts","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7608,"name":"ElementaryTypeName","src":"5960:4:10"}],"id":7609,"name":"VariableDeclaration","src":"5960:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7260,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":7610,"name":"Identifier","src":"5974:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7611,"name":"Identifier","src":"5985:4:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7612,"name":"Literal","src":"5991:1:10"}],"id":7613,"name":"FunctionCall","src":"5974:19:10"}],"id":7614,"name":"VariableDeclarationStatement","src":"5960:33:10"},{"attributes":{"assignments":[7616]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7615,"name":"ElementaryTypeName","src":"6003:4:10"}],"id":7616,"name":"VariableDeclaration","src":"6003:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7260,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":7617,"name":"Identifier","src":"6022:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7618,"name":"Identifier","src":"6033:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7619,"name":"Literal","src":"6040:1:10"}],"id":7620,"name":"FunctionCall","src":"6022:20:10"}],"id":7621,"name":"VariableDeclarationStatement","src":"6003:39:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7622,"name":"Identifier","src":"6153:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7616,"type":"uint256","value":"othercounts"},"id":7623,"name":"Identifier","src":"6162:11:10"}],"id":7624,"name":"BinaryOperation","src":"6153:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7603,"type":"uint256","value":"prevoff"},"id":7625,"name":"Identifier","src":"6189:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7626,"name":"Identifier","src":"6199:3:10"}],"id":7627,"name":"Assignment","src":"6189:13:10"}],"id":7628,"name":"ExpressionStatement","src":"6189:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7629,"name":"Identifier","src":"6216:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7753,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":7630,"name":"Identifier","src":"6222:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7631,"name":"Identifier","src":"6231:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7632,"name":"Identifier","src":"6237:3:10"}],"id":7633,"name":"FunctionCall","src":"6222:19:10"}],"id":7634,"name":"Assignment","src":"6216:25:10"}],"id":7635,"name":"ExpressionStatement","src":"6216:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7636,"name":"Identifier","src":"6255:6:10"}],"id":7637,"name":"UnaryOperation","src":"6255:8:10"}],"id":7638,"name":"ExpressionStatement","src":"6255:8:10"}],"id":7639,"name":"Block","src":"6175:99:10"}],"id":7640,"name":"WhileStatement","src":"6146:128:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7616,"type":"uint256","value":"othercounts"},"id":7641,"name":"Identifier","src":"6291:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7642,"name":"Identifier","src":"6305:6:10"}],"id":7643,"name":"BinaryOperation","src":"6291:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"uint256","value":"otherprevoff"},"id":7644,"name":"Identifier","src":"6327:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7645,"name":"Identifier","src":"6342:8:10"}],"id":7646,"name":"Assignment","src":"6327:23:10"}],"id":7647,"name":"ExpressionStatement","src":"6327:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7648,"name":"Identifier","src":"6364:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7753,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":7649,"name":"Identifier","src":"6375:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7650,"name":"Identifier","src":"6384:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7651,"name":"Identifier","src":"6391:8:10"}],"id":7652,"name":"FunctionCall","src":"6375:25:10"}],"id":7653,"name":"Assignment","src":"6364:36:10"}],"id":7654,"name":"ExpressionStatement","src":"6364:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7616,"type":"uint256","value":"othercounts"},"id":7655,"name":"Identifier","src":"6414:11:10"}],"id":7656,"name":"UnaryOperation","src":"6414:13:10"}],"id":7657,"name":"ExpressionStatement","src":"6414:13:10"}],"id":7658,"name":"Block","src":"6313:125:10"}],"id":7659,"name":"WhileStatement","src":"6284:154:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7660,"name":"Identifier","src":"6513:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7661,"name":"Literal","src":"6522:1:10"}],"id":7662,"name":"BinaryOperation","src":"6513:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9808,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7663,"name":"Identifier","src":"6528:4:10"}],"id":7664,"name":"MemberAccess","src":"6528:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7665,"name":"Identifier","src":"6540:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7666,"name":"Identifier","src":"6545:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7667,"name":"Identifier","src":"6552:8:10"}],"id":7668,"name":"FunctionCall","src":"6528:33:10"}],"id":7669,"name":"UnaryOperation","src":"6527:34:10"}],"id":7670,"name":"BinaryOperation","src":"6513:48:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7603,"type":"uint256","value":"prevoff"},"id":7671,"name":"Identifier","src":"6577:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7672,"name":"Identifier","src":"6587:3:10"}],"id":7673,"name":"Assignment","src":"6577:13:10"}],"id":7674,"name":"ExpressionStatement","src":"6577:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7675,"name":"Identifier","src":"6604:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7753,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":7676,"name":"Identifier","src":"6610:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7677,"name":"Identifier","src":"6619:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7678,"name":"Identifier","src":"6625:3:10"}],"id":7679,"name":"FunctionCall","src":"6610:19:10"}],"id":7680,"name":"Assignment","src":"6604:25:10"}],"id":7681,"name":"ExpressionStatement","src":"6604:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"uint256","value":"otherprevoff"},"id":7682,"name":"Identifier","src":"6643:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7683,"name":"Identifier","src":"6658:8:10"}],"id":7684,"name":"Assignment","src":"6643:23:10"}],"id":7685,"name":"ExpressionStatement","src":"6643:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7686,"name":"Identifier","src":"6680:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7753,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":7687,"name":"Identifier","src":"6691:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7688,"name":"Identifier","src":"6700:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7689,"name":"Identifier","src":"6707:8:10"}],"id":7690,"name":"FunctionCall","src":"6691:25:10"}],"id":7691,"name":"Assignment","src":"6680:36:10"}],"id":7692,"name":"ExpressionStatement","src":"6680:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7693,"name":"Identifier","src":"6730:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7694,"name":"Literal","src":"6740:1:10"}],"id":7695,"name":"Assignment","src":"6730:11:10"}],"id":7696,"name":"ExpressionStatement","src":"6730:11:10"}],"id":7697,"name":"Block","src":"6563:189:10"}],"id":7698,"name":"WhileStatement","src":"6506:246:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7699,"name":"Identifier","src":"6766:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7700,"name":"Literal","src":"6773:1:10"}],"id":7701,"name":"BinaryOperation","src":"6766:8:10"},{"children":[{"attributes":{"functionReturnParameters":7587},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7702,"name":"Literal","src":"6798:1:10"}],"id":7703,"name":"UnaryOperation","src":"6797:2:10"}],"id":7704,"name":"Return","src":"6790:9:10"}],"id":7705,"name":"Block","src":"6776:34:10"}],"id":7706,"name":"IfStatement","src":"6762:48:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7707,"name":"Identifier","src":"6822:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7708,"name":"Literal","src":"6834:1:10"}],"id":7709,"name":"BinaryOperation","src":"6822:13:10"},{"children":[{"attributes":{"functionReturnParameters":7587},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7710,"name":"Literal","src":"6858:1:10"}],"id":7711,"name":"Return","src":"6851:8:10"}],"id":7712,"name":"Block","src":"6837:33:10"}],"id":7713,"name":"IfStatement","src":"6819:51:10"},{"attributes":{"functionReturnParameters":7587},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":9748,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7714,"name":"Identifier","src":"6887:4:10"}],"id":7715,"name":"MemberAccess","src":"6887:12:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7603,"type":"uint256","value":"prevoff"},"id":7716,"name":"Identifier","src":"6900:7:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7717,"name":"Literal","src":"6910:1:10"}],"id":7718,"name":"BinaryOperation","src":"6900:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7719,"name":"Identifier","src":"6913:4:10"}],"id":7720,"name":"MemberAccess","src":"6913:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7603,"type":"uint256","value":"prevoff"},"id":7721,"name":"Identifier","src":"6928:7:10"}],"id":7722,"name":"FunctionCall","src":"6913:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7723,"name":"Identifier","src":"6938:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"uint256","value":"otherprevoff"},"id":7724,"name":"Identifier","src":"6945:12:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7725,"name":"Literal","src":"6960:1:10"}],"id":7726,"name":"BinaryOperation","src":"6945:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7727,"name":"Identifier","src":"6963:5:10"}],"id":7728,"name":"MemberAccess","src":"6963:15:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"uint256","value":"otherprevoff"},"id":7729,"name":"Identifier","src":"6979:12:10"}],"id":7730,"name":"FunctionCall","src":"6963:29:10"}],"id":7731,"name":"FunctionCall","src":"6887:106:10"}],"id":7732,"name":"Return","src":"6880:113:10"}],"id":7733,"name":"Block","src":"5793:1207:10"}],"id":7734,"name":"FunctionDefinition","src":"5704:1296:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":7753,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7735,"name":"ElementaryTypeName","src":"7024:5:10"}],"id":7736,"name":"VariableDeclaration","src":"7024:17:10"},{"attributes":{"constant":false,"name":"off","scope":7753,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7737,"name":"ElementaryTypeName","src":"7043:4:10"}],"id":7738,"name":"VariableDeclaration","src":"7043:8:10"}],"id":7739,"name":"ParameterList","src":"7023:29:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7753,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7740,"name":"ElementaryTypeName","src":"7075:4:10"}],"id":7741,"name":"VariableDeclaration","src":"7075:4:10"}],"id":7742,"name":"ParameterList","src":"7074:6:10"},{"children":[{"attributes":{"functionReturnParameters":7742},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"uint256","value":"off"},"id":7743,"name":"Identifier","src":"7098:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7744,"name":"Literal","src":"7104:1:10"}],"id":7745,"name":"BinaryOperation","src":"7098:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7736,"type":"bytes memory","value":"body"},"id":7746,"name":"Identifier","src":"7108:4:10"}],"id":7747,"name":"MemberAccess","src":"7108:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"uint256","value":"off"},"id":7748,"name":"Identifier","src":"7123:3:10"}],"id":7749,"name":"FunctionCall","src":"7108:19:10"}],"id":7750,"name":"BinaryOperation","src":"7098:29:10"}],"id":7751,"name":"Return","src":"7091:36:10"}],"id":7752,"name":"Block","src":"7081:53:10"}],"id":7753,"name":"FunctionDefinition","src":"7006:128:10"}],"id":7754,"name":"ContractDefinition","src":"150:6986:10"}],"id":7755,"name":"SourceUnit","src":"0:7137:10"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[7136]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7069,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7136],"name":"ResolverBase","scope":7137},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":7136,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7070,"name":"ElementaryTypeName","src":"53:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":7071,"name":"Literal","src":"97:10:11"}],"id":7072,"name":"VariableDeclaration","src":"53:54:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7136,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7084,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7073,"name":"ElementaryTypeName","src":"141:6:11"}],"id":7074,"name":"VariableDeclaration","src":"141:18:11"}],"id":7075,"name":"ParameterList","src":"140:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":7084,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7076,"name":"ElementaryTypeName","src":"181:4:11"}],"id":7077,"name":"VariableDeclaration","src":"181:4:11"}],"id":7078,"name":"ParameterList","src":"180:6:11"},{"children":[{"attributes":{"functionReturnParameters":7078},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7074,"type":"bytes4","value":"interfaceID"},"id":7079,"name":"Identifier","src":"204:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7072,"type":"bytes4","value":"INTERFACE_META_ID"},"id":7080,"name":"Identifier","src":"219:17:11"}],"id":7081,"name":"BinaryOperation","src":"204:32:11"}],"id":7082,"name":"Return","src":"197:39:11"}],"id":7083,"name":"Block","src":"187:56:11"}],"id":7084,"name":"FunctionDefinition","src":"114:129:11"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":7136,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7091,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7085,"name":"ElementaryTypeName","src":"271:7:11"}],"id":7086,"name":"VariableDeclaration","src":"271:12:11"}],"id":7087,"name":"ParameterList","src":"270:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":7091,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7088,"name":"ElementaryTypeName","src":"307:4:11"}],"id":7089,"name":"VariableDeclaration","src":"307:4:11"}],"id":7090,"name":"ParameterList","src":"306:6:11"}],"id":7091,"name":"FunctionDefinition","src":"249:64:11"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7103,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7092,"name":"ElementaryTypeName","src":"339:7:11"}],"id":7093,"name":"VariableDeclaration","src":"339:12:11"}],"id":7094,"name":"ParameterList","src":"338:14:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":7095,"name":"Identifier","src":"363:7:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7091,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":7096,"name":"Identifier","src":"371:12:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7093,"type":"bytes32","value":"node"},"id":7097,"name":"Identifier","src":"384:4:11"}],"id":7098,"name":"FunctionCall","src":"371:18:11"}],"id":7099,"name":"FunctionCall","src":"363:27:11"}],"id":7100,"name":"ExpressionStatement","src":"363:27:11"},{"id":7101,"name":"PlaceholderStatement","src":"400:1:11"}],"id":7102,"name":"Block","src":"353:55:11"}],"id":7103,"name":"ModifierDefinition","src":"319:89:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":7136,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":7119,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7104,"name":"ElementaryTypeName","src":"438:5:11"}],"id":7105,"name":"VariableDeclaration","src":"438:14:11"}],"id":7106,"name":"ParameterList","src":"437:16:11"},{"children":[{"attributes":{"constant":false,"name":"a","scope":7119,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7107,"name":"ElementaryTypeName","src":"476:15:11"}],"id":7108,"name":"VariableDeclaration","src":"476:17:11"}],"id":7109,"name":"ParameterList","src":"475:19:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":7110,"name":"Identifier","src":"505:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7105,"type":"bytes memory","value":"b"},"id":7111,"name":"Identifier","src":"513:1:11"}],"id":7112,"name":"MemberAccess","src":"513:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":7113,"name":"Literal","src":"525:2:11"}],"id":7114,"name":"BinaryOperation","src":"513:14:11"}],"id":7115,"name":"FunctionCall","src":"505:23:11"}],"id":7116,"name":"ExpressionStatement","src":"505:23:11"},{"attributes":{"externalReferences":[{"a":{"declaration":7108,"isOffset":false,"isSlot":false,"src":"561:1:11","valueSize":1}},{"b":{"declaration":7105,"isOffset":false,"isSlot":false,"src":"580:1:11","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":7117,"name":"InlineAssembly","src":"538:74:11"}],"id":7118,"name":"Block","src":"495:123:11"}],"id":7119,"name":"FunctionDefinition","src":"414:204:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":7136,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":7135,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7120,"name":"ElementaryTypeName","src":"648:7:11"}],"id":7121,"name":"VariableDeclaration","src":"648:9:11"}],"id":7122,"name":"ParameterList","src":"647:11:11"},{"children":[{"attributes":{"constant":false,"name":"b","scope":7135,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7123,"name":"ElementaryTypeName","src":"681:5:11"}],"id":7124,"name":"VariableDeclaration","src":"681:14:11"}],"id":7125,"name":"ParameterList","src":"680:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7124,"type":"bytes memory","value":"b"},"id":7126,"name":"Identifier","src":"707:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7127,"name":"ElementaryTypeName","src":"715:5:11"}],"id":7128,"name":"NewExpression","src":"711:9:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":7129,"name":"Literal","src":"721:2:11"}],"id":7130,"name":"FunctionCall","src":"711:13:11"}],"id":7131,"name":"Assignment","src":"707:17:11"}],"id":7132,"name":"ExpressionStatement","src":"707:17:11"},{"attributes":{"externalReferences":[{"b":{"declaration":7124,"isOffset":false,"isSlot":false,"src":"768:1:11","valueSize":1}},{"a":{"declaration":7121,"isOffset":false,"isSlot":false,"src":"780:1:11","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":7133,"name":"InlineAssembly","src":"734:73:11"}],"id":7134,"name":"Block","src":"697:116:11"}],"id":7135,"name":"FunctionDefinition","src":"624:189:11"}],"id":7136,"name":"ContractDefinition","src":"25:790:11"}],"id":7137,"name":"SourceUnit","src":"0:816:11"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[4928]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4794,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4929,"symbolAliases":[null],"unitAlias":""},"id":4795,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4928,7136],"name":"ABIResolver","scope":4929},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":4796,"name":"UserDefinedTypeName","src":"80:12:12"}],"id":4797,"name":"InheritanceSpecifier","src":"80:12:12"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":4928,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4798,"name":"ElementaryTypeName","src":"99:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":4799,"name":"Literal","src":"142:10:12"}],"id":4800,"name":"VariableDeclaration","src":"99:53:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4806,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4801,"name":"ElementaryTypeName","src":"176:7:12"}],"id":4802,"name":"VariableDeclaration","src":"176:20:12"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":4806,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4803,"name":"ElementaryTypeName","src":"198:7:12"}],"id":4804,"name":"VariableDeclaration","src":"198:27:12"}],"id":4805,"name":"ParameterList","src":"175:51:12"}],"id":4806,"name":"EventDefinition","src":"159:68:12"},{"attributes":{"constant":false,"name":"abis","scope":4928,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4807,"name":"ElementaryTypeName","src":"241:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4808,"name":"ElementaryTypeName","src":"258:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":4809,"name":"ElementaryTypeName","src":"267:5:12"}],"id":4810,"name":"Mapping","src":"250:23:12"}],"id":4811,"name":"Mapping","src":"233:41:12"}],"id":4812,"name":"VariableDeclaration","src":"233:46:12"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":4928,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4850,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4813,"name":"ElementaryTypeName","src":"598:7:12"}],"id":4814,"name":"VariableDeclaration","src":"598:12:12"},{"attributes":{"constant":false,"name":"contentType","scope":4850,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4815,"name":"ElementaryTypeName","src":"612:7:12"}],"id":4816,"name":"VariableDeclaration","src":"612:19:12"},{"attributes":{"constant":false,"name":"data","scope":4850,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4817,"name":"ElementaryTypeName","src":"633:5:12"}],"id":4818,"name":"VariableDeclaration","src":"633:19:12"}],"id":4819,"name":"ParameterList","src":"597:56:12"},{"attributes":{"parameters":[null]},"children":[],"id":4823,"name":"ParameterList","src":"680:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":4820,"name":"Identifier","src":"663:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4814,"type":"bytes32","value":"node"},"id":4821,"name":"Identifier","src":"674:4:12"}],"id":4822,"name":"ModifierInvocation","src":"663:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":4824,"name":"Identifier","src":"735:7:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"uint256","value":"contentType"},"id":4825,"name":"Identifier","src":"745:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4826,"name":"Literal","src":"759:1:12"}],"id":4827,"name":"BinaryOperation","src":"745:15:12"}],"id":4828,"name":"TupleExpression","src":"744:17:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"uint256","value":"contentType"},"id":4829,"name":"Identifier","src":"764:11:12"}],"id":4830,"name":"BinaryOperation","src":"744:31:12"}],"id":4831,"name":"TupleExpression","src":"743:33:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4832,"name":"Literal","src":"780:1:12"}],"id":4833,"name":"BinaryOperation","src":"743:38:12"}],"id":4834,"name":"FunctionCall","src":"735:47:12"}],"id":4835,"name":"ExpressionStatement","src":"735:47:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4836,"name":"Identifier","src":"793:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4814,"type":"bytes32","value":"node"},"id":4837,"name":"Identifier","src":"798:4:12"}],"id":4839,"name":"IndexAccess","src":"793:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"uint256","value":"contentType"},"id":4838,"name":"Identifier","src":"804:11:12"}],"id":4840,"name":"IndexAccess","src":"793:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4818,"type":"bytes calldata","value":"data"},"id":4841,"name":"Identifier","src":"819:4:12"}],"id":4842,"name":"Assignment","src":"793:30:12"}],"id":4843,"name":"ExpressionStatement","src":"793:30:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":4844,"name":"Identifier","src":"838:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4814,"type":"bytes32","value":"node"},"id":4845,"name":"Identifier","src":"849:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"uint256","value":"contentType"},"id":4846,"name":"Identifier","src":"855:11:12"}],"id":4847,"name":"FunctionCall","src":"838:29:12"}],"id":4848,"name":"EmitStatement","src":"833:34:12"}],"id":4849,"name":"Block","src":"680:194:12"}],"id":4850,"name":"FunctionDefinition","src":"582:292:12"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":4928,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4910,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4851,"name":"ElementaryTypeName","src":"1208:7:12"}],"id":4852,"name":"VariableDeclaration","src":"1208:12:12"},{"attributes":{"constant":false,"name":"contentTypes","scope":4910,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4853,"name":"ElementaryTypeName","src":"1222:7:12"}],"id":4854,"name":"VariableDeclaration","src":"1222:20:12"}],"id":4855,"name":"ParameterList","src":"1207:36:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":4910,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4856,"name":"ElementaryTypeName","src":"1267:7:12"}],"id":4857,"name":"VariableDeclaration","src":"1267:7:12"},{"attributes":{"constant":false,"name":"","scope":4910,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4858,"name":"ElementaryTypeName","src":"1276:5:12"}],"id":4859,"name":"VariableDeclaration","src":"1276:12:12"}],"id":4860,"name":"ParameterList","src":"1266:23:12"},{"children":[{"attributes":{"assignments":[4864]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":4909,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4861,"name":"ElementaryTypeName","src":"1308:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":4862,"name":"ElementaryTypeName","src":"1317:5:12"}],"id":4863,"name":"Mapping","src":"1300:23:12"}],"id":4864,"name":"VariableDeclaration","src":"1300:38:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4865,"name":"Identifier","src":"1341:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"bytes32","value":"node"},"id":4866,"name":"Identifier","src":"1346:4:12"}],"id":4867,"name":"IndexAccess","src":"1341:10:12"}],"id":4868,"name":"VariableDeclarationStatement","src":"1300:51:12"},{"children":[{"attributes":{"assignments":[4870]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":4902,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4869,"name":"ElementaryTypeName","src":"1367:7:12"}],"id":4870,"name":"VariableDeclaration","src":"1367:19:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4871,"name":"Literal","src":"1389:1:12"}],"id":4872,"name":"VariableDeclarationStatement","src":"1367:23:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4873,"name":"Identifier","src":"1392:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"uint256","value":"contentTypes"},"id":4874,"name":"Identifier","src":"1407:12:12"}],"id":4875,"name":"BinaryOperation","src":"1392:27:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4876,"name":"Identifier","src":"1421:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4877,"name":"Literal","src":"1437:1:12"}],"id":4878,"name":"Assignment","src":"1421:17:12"}],"id":4879,"name":"ExpressionStatement","src":"1421:17:12"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4880,"name":"Identifier","src":"1459:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"uint256","value":"contentTypes"},"id":4881,"name":"Identifier","src":"1473:12:12"}],"id":4882,"name":"BinaryOperation","src":"1459:26:12"}],"id":4883,"name":"TupleExpression","src":"1458:28:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4884,"name":"Literal","src":"1490:1:12"}],"id":4885,"name":"BinaryOperation","src":"1458:33:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4864,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4886,"name":"Identifier","src":"1495:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4887,"name":"Identifier","src":"1502:11:12"}],"id":4888,"name":"IndexAccess","src":"1495:19:12"}],"id":4889,"name":"MemberAccess","src":"1495:26:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4890,"name":"Literal","src":"1524:1:12"}],"id":4891,"name":"BinaryOperation","src":"1495:30:12"}],"id":4892,"name":"BinaryOperation","src":"1458:67:12"},{"children":[{"attributes":{"functionReturnParameters":4860},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4893,"name":"Identifier","src":"1553:11:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4864,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4894,"name":"Identifier","src":"1566:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4895,"name":"Identifier","src":"1573:11:12"}],"id":4896,"name":"IndexAccess","src":"1566:19:12"}],"id":4897,"name":"TupleExpression","src":"1552:34:12"}],"id":4898,"name":"Return","src":"1545:41:12"}],"id":4899,"name":"Block","src":"1527:74:12"}],"id":4900,"name":"IfStatement","src":"1454:147:12"}],"id":4901,"name":"Block","src":"1440:171:12"}],"id":4902,"name":"ForStatement","src":"1362:249:12"},{"attributes":{"functionReturnParameters":4860},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4903,"name":"Literal","src":"1629:1:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4904,"name":"ElementaryTypeNameExpression","src":"1632:5:12"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4905,"name":"Literal","src":"1638:2:12"}],"id":4906,"name":"FunctionCall","src":"1632:9:12"}],"id":4907,"name":"TupleExpression","src":"1628:14:12"}],"id":4908,"name":"Return","src":"1621:21:12"}],"id":4909,"name":"Block","src":"1290:359:12"}],"id":4910,"name":"FunctionDefinition","src":"1195:454:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4928,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4927,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4911,"name":"ElementaryTypeName","src":"1682:6:12"}],"id":4912,"name":"VariableDeclaration","src":"1682:18:12"}],"id":4913,"name":"ParameterList","src":"1681:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":4927,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4914,"name":"ElementaryTypeName","src":"1722:4:12"}],"id":4915,"name":"VariableDeclaration","src":"1722:4:12"}],"id":4916,"name":"ParameterList","src":"1721:6:12"},{"children":[{"attributes":{"functionReturnParameters":4916},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4912,"type":"bytes4","value":"interfaceID"},"id":4917,"name":"Identifier","src":"1745:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4800,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":4918,"name":"Identifier","src":"1760:16:12"}],"id":4919,"name":"BinaryOperation","src":"1745:31:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10348,"type":"contract super ABIResolver","value":"super"},"id":4920,"name":"Identifier","src":"1780:5:12"}],"id":4921,"name":"MemberAccess","src":"1780:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4912,"type":"bytes4","value":"interfaceID"},"id":4922,"name":"Identifier","src":"1804:11:12"}],"id":4923,"name":"FunctionCall","src":"1780:36:12"}],"id":4924,"name":"BinaryOperation","src":"1745:71:12"}],"id":4925,"name":"Return","src":"1738:78:12"}],"id":4926,"name":"Block","src":"1728:95:12"}],"id":4927,"name":"FunctionDefinition","src":"1655:168:12"}],"id":4928,"name":"ContractDefinition","src":"56:1769:12"}],"id":4929,"name":"SourceUnit","src":"0:1826:12"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[5087]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4930,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5088,"symbolAliases":[null],"unitAlias":""},"id":4931,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5087,7136],"name":"AddrResolver","scope":5088},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":4932,"name":"UserDefinedTypeName","src":"81:12:13"}],"id":4933,"name":"InheritanceSpecifier","src":"81:12:13"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":5087,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4934,"name":"ElementaryTypeName","src":"100:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":4935,"name":"Literal","src":"144:10:13"}],"id":4936,"name":"VariableDeclaration","src":"100:54:13"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":5087,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4937,"name":"ElementaryTypeName","src":"160:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":4938,"name":"Literal","src":"207:10:13"}],"id":4939,"name":"VariableDeclaration","src":"160:57:13"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":5087,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4940,"name":"ElementaryTypeName","src":"223:4:13"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":4941,"name":"Literal","src":"261:2:13"}],"id":4942,"name":"VariableDeclaration","src":"223:40:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4948,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4943,"name":"ElementaryTypeName","src":"288:7:13"}],"id":4944,"name":"VariableDeclaration","src":"288:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":4948,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4945,"name":"ElementaryTypeName","src":"310:7:13"}],"id":4946,"name":"VariableDeclaration","src":"310:9:13"}],"id":4947,"name":"ParameterList","src":"287:33:13"}],"id":4948,"name":"EventDefinition","src":"270:51:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4956,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4949,"name":"ElementaryTypeName","src":"347:7:13"}],"id":4950,"name":"VariableDeclaration","src":"347:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":4956,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4951,"name":"ElementaryTypeName","src":"369:4:13"}],"id":4952,"name":"VariableDeclaration","src":"369:13:13"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":4956,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4953,"name":"ElementaryTypeName","src":"384:5:13"}],"id":4954,"name":"VariableDeclaration","src":"384:16:13"}],"id":4955,"name":"ParameterList","src":"346:55:13"}],"id":4956,"name":"EventDefinition","src":"326:76:13"},{"attributes":{"constant":false,"name":"_addresses","scope":5087,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4957,"name":"ElementaryTypeName","src":"416:7:13"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4958,"name":"ElementaryTypeName","src":"433:4:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":4959,"name":"ElementaryTypeName","src":"439:5:13"}],"id":4960,"name":"Mapping","src":"425:20:13"}],"id":4961,"name":"Mapping","src":"408:38:13"}],"id":4962,"name":"VariableDeclaration","src":"408:49:13"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":5087,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4981,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4963,"name":"ElementaryTypeName","src":"698:7:13"}],"id":4964,"name":"VariableDeclaration","src":"698:12:13"},{"attributes":{"constant":false,"name":"a","scope":4981,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4965,"name":"ElementaryTypeName","src":"712:7:13"}],"id":4966,"name":"VariableDeclaration","src":"712:9:13"}],"id":4967,"name":"ParameterList","src":"697:25:13"},{"attributes":{"parameters":[null]},"children":[],"id":4971,"name":"ParameterList","src":"749:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":4968,"name":"Identifier","src":"732:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4964,"type":"bytes32","value":"node"},"id":4969,"name":"Identifier","src":"743:4:13"}],"id":4970,"name":"ModifierInvocation","src":"732:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":4972,"name":"Identifier","src":"759:15:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4964,"type":"bytes32","value":"node"},"id":4973,"name":"Identifier","src":"775:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4942,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4974,"name":"Identifier","src":"781:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":7135,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":4975,"name":"Identifier","src":"796:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"address","value":"a"},"id":4976,"name":"Identifier","src":"811:1:13"}],"id":4977,"name":"FunctionCall","src":"796:17:13"}],"id":4978,"name":"FunctionCall","src":"759:55:13"}],"id":4979,"name":"ExpressionStatement","src":"759:55:13"}],"id":4980,"name":"Block","src":"749:72:13"}],"id":4981,"name":"FunctionDefinition","src":"681:140:13"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5087,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5010,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4982,"name":"ElementaryTypeName","src":"994:7:13"}],"id":4983,"name":"VariableDeclaration","src":"994:12:13"}],"id":4984,"name":"ParameterList","src":"993:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5010,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4985,"name":"ElementaryTypeName","src":"1029:15:13"}],"id":4986,"name":"VariableDeclaration","src":"1029:15:13"}],"id":4987,"name":"ParameterList","src":"1028:17:13"},{"children":[{"attributes":{"assignments":[4989]},"children":[{"attributes":{"constant":false,"name":"a","scope":5009,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4988,"name":"ElementaryTypeName","src":"1056:5:13"}],"id":4989,"name":"VariableDeclaration","src":"1056:14:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[5010,5065],"referencedDeclaration":5065,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":4990,"name":"Identifier","src":"1073:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"bytes32","value":"node"},"id":4991,"name":"Identifier","src":"1078:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4942,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4992,"name":"Identifier","src":"1084:13:13"}],"id":4993,"name":"FunctionCall","src":"1073:25:13"}],"id":4994,"name":"VariableDeclarationStatement","src":"1056:42:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4989,"type":"bytes memory","value":"a"},"id":4995,"name":"Identifier","src":"1111:1:13"}],"id":4996,"name":"MemberAccess","src":"1111:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4997,"name":"Literal","src":"1123:1:13"}],"id":4998,"name":"BinaryOperation","src":"1111:13:13"},{"children":[{"attributes":{"functionReturnParameters":4987},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4999,"name":"ElementaryTypeNameExpression","src":"1147:7:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5000,"name":"Literal","src":"1155:1:13"}],"id":5001,"name":"FunctionCall","src":"1147:10:13"}],"id":5002,"name":"Return","src":"1140:17:13"}],"id":5003,"name":"Block","src":"1126:42:13"}],"id":5004,"name":"IfStatement","src":"1108:60:13"},{"attributes":{"functionReturnParameters":4987},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7119,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5005,"name":"Identifier","src":"1184:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4989,"type":"bytes memory","value":"a"},"id":5006,"name":"Identifier","src":"1199:1:13"}],"id":5007,"name":"FunctionCall","src":"1184:17:13"}],"id":5008,"name":"Return","src":"1177:24:13"}],"id":5009,"name":"Block","src":"1046:162:13"}],"id":5010,"name":"FunctionDefinition","src":"980:228:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":5087,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5049,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5011,"name":"ElementaryTypeName","src":"1239:7:13"}],"id":5012,"name":"VariableDeclaration","src":"1239:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5049,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5013,"name":"ElementaryTypeName","src":"1253:4:13"}],"id":5014,"name":"VariableDeclaration","src":"1253:13:13"},{"attributes":{"constant":false,"name":"a","scope":5049,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5015,"name":"ElementaryTypeName","src":"1268:5:13"}],"id":5016,"name":"VariableDeclaration","src":"1268:14:13"}],"id":5017,"name":"ParameterList","src":"1238:45:13"},{"attributes":{"parameters":[null]},"children":[],"id":5021,"name":"ParameterList","src":"1308:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5018,"name":"Identifier","src":"1291:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes32","value":"node"},"id":5019,"name":"Identifier","src":"1302:4:13"}],"id":5020,"name":"ModifierInvocation","src":"1291:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4956,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":5022,"name":"Identifier","src":"1323:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes32","value":"node"},"id":5023,"name":"Identifier","src":"1338:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5014,"type":"uint256","value":"coinType"},"id":5024,"name":"Identifier","src":"1344:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5016,"type":"bytes memory","value":"a"},"id":5025,"name":"Identifier","src":"1354:1:13"}],"id":5026,"name":"FunctionCall","src":"1323:33:13"}],"id":5027,"name":"EmitStatement","src":"1318:38:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5014,"type":"uint256","value":"coinType"},"id":5028,"name":"Identifier","src":"1369:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4942,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5029,"name":"Identifier","src":"1381:13:13"}],"id":5030,"name":"BinaryOperation","src":"1369:25:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4948,"type":"function (bytes32,address)","value":"AddrChanged"},"id":5031,"name":"Identifier","src":"1415:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes32","value":"node"},"id":5032,"name":"Identifier","src":"1427:4:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7119,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5033,"name":"Identifier","src":"1433:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5016,"type":"bytes memory","value":"a"},"id":5034,"name":"Identifier","src":"1448:1:13"}],"id":5035,"name":"FunctionCall","src":"1433:17:13"}],"id":5036,"name":"FunctionCall","src":"1415:36:13"}],"id":5037,"name":"EmitStatement","src":"1410:41:13"}],"id":5038,"name":"Block","src":"1396:66:13"}],"id":5039,"name":"IfStatement","src":"1366:96:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4962,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5040,"name":"Identifier","src":"1471:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes32","value":"node"},"id":5041,"name":"Identifier","src":"1482:4:13"}],"id":5043,"name":"IndexAccess","src":"1471:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5014,"type":"uint256","value":"coinType"},"id":5042,"name":"Identifier","src":"1488:8:13"}],"id":5044,"name":"IndexAccess","src":"1471:26:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5016,"type":"bytes memory","value":"a"},"id":5045,"name":"Identifier","src":"1500:1:13"}],"id":5046,"name":"Assignment","src":"1471:30:13"}],"id":5047,"name":"ExpressionStatement","src":"1471:30:13"}],"id":5048,"name":"Block","src":"1308:200:13"}],"id":5049,"name":"FunctionDefinition","src":"1214:294:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5087,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5065,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5050,"name":"ElementaryTypeName","src":"1528:7:13"}],"id":5051,"name":"VariableDeclaration","src":"1528:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5052,"name":"ElementaryTypeName","src":"1542:4:13"}],"id":5053,"name":"VariableDeclaration","src":"1542:13:13"}],"id":5054,"name":"ParameterList","src":"1527:29:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5055,"name":"ElementaryTypeName","src":"1577:5:13"}],"id":5056,"name":"VariableDeclaration","src":"1577:12:13"}],"id":5057,"name":"ParameterList","src":"1576:14:13"},{"children":[{"attributes":{"functionReturnParameters":5057},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4962,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5058,"name":"Identifier","src":"1608:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5051,"type":"bytes32","value":"node"},"id":5059,"name":"Identifier","src":"1619:4:13"}],"id":5060,"name":"IndexAccess","src":"1608:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5053,"type":"uint256","value":"coinType"},"id":5061,"name":"Identifier","src":"1625:8:13"}],"id":5062,"name":"IndexAccess","src":"1608:26:13"}],"id":5063,"name":"Return","src":"1601:33:13"}],"id":5064,"name":"Block","src":"1591:50:13"}],"id":5065,"name":"FunctionDefinition","src":"1514:127:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5087,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5086,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5066,"name":"ElementaryTypeName","src":"1674:6:13"}],"id":5067,"name":"VariableDeclaration","src":"1674:18:13"}],"id":5068,"name":"ParameterList","src":"1673:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5086,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5069,"name":"ElementaryTypeName","src":"1714:4:13"}],"id":5070,"name":"VariableDeclaration","src":"1714:4:13"}],"id":5071,"name":"ParameterList","src":"1713:6:13"},{"children":[{"attributes":{"functionReturnParameters":5071},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"bytes4","value":"interfaceID"},"id":5072,"name":"Identifier","src":"1737:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4936,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":5073,"name":"Identifier","src":"1752:17:13"}],"id":5074,"name":"BinaryOperation","src":"1737:32:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"bytes4","value":"interfaceID"},"id":5075,"name":"Identifier","src":"1773:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4939,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":5076,"name":"Identifier","src":"1788:20:13"}],"id":5077,"name":"BinaryOperation","src":"1773:35:13"}],"id":5078,"name":"BinaryOperation","src":"1737:71:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10350,"type":"contract super AddrResolver","value":"super"},"id":5079,"name":"Identifier","src":"1812:5:13"}],"id":5080,"name":"MemberAccess","src":"1812:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"bytes4","value":"interfaceID"},"id":5081,"name":"Identifier","src":"1836:11:13"}],"id":5082,"name":"FunctionCall","src":"1812:36:13"}],"id":5083,"name":"BinaryOperation","src":"1737:111:13"}],"id":5084,"name":"Return","src":"1730:118:13"}],"id":5085,"name":"Block","src":"1720:135:13"}],"id":5086,"name":"FunctionDefinition","src":"1647:208:13"}],"id":5087,"name":"ContractDefinition","src":"56:1801:13"}],"id":5088,"name":"SourceUnit","src":"0:1857:13"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[5157]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5089,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5158,"symbolAliases":[null],"unitAlias":""},"id":5090,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5157,7136],"name":"ContentHashResolver","scope":5158},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5091,"name":"UserDefinedTypeName","src":"88:12:14"}],"id":5092,"name":"InheritanceSpecifier","src":"88:12:14"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":5157,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5093,"name":"ElementaryTypeName","src":"107:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":5094,"name":"Literal","src":"159:10:14"}],"id":5095,"name":"VariableDeclaration","src":"107:62:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5101,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5096,"name":"ElementaryTypeName","src":"201:7:14"}],"id":5097,"name":"VariableDeclaration","src":"201:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":5101,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5098,"name":"ElementaryTypeName","src":"223:5:14"}],"id":5099,"name":"VariableDeclaration","src":"223:10:14"}],"id":5100,"name":"ParameterList","src":"200:34:14"}],"id":5101,"name":"EventDefinition","src":"176:59:14"},{"attributes":{"constant":false,"name":"hashes","scope":5157,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5102,"name":"ElementaryTypeName","src":"249:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":5103,"name":"ElementaryTypeName","src":"258:5:14"}],"id":5104,"name":"Mapping","src":"241:23:14"}],"id":5105,"name":"VariableDeclaration","src":"241:30:14"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":5157,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5127,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5106,"name":"ElementaryTypeName","src":"529:7:14"}],"id":5107,"name":"VariableDeclaration","src":"529:12:14"},{"attributes":{"constant":false,"name":"hash","scope":5127,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5108,"name":"ElementaryTypeName","src":"543:5:14"}],"id":5109,"name":"VariableDeclaration","src":"543:19:14"}],"id":5110,"name":"ParameterList","src":"528:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":5114,"name":"ParameterList","src":"590:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5111,"name":"Identifier","src":"573:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5107,"type":"bytes32","value":"node"},"id":5112,"name":"Identifier","src":"584:4:14"}],"id":5113,"name":"ModifierInvocation","src":"573:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5105,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5115,"name":"Identifier","src":"600:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5107,"type":"bytes32","value":"node"},"id":5116,"name":"Identifier","src":"607:4:14"}],"id":5117,"name":"IndexAccess","src":"600:12:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5109,"type":"bytes calldata","value":"hash"},"id":5118,"name":"Identifier","src":"615:4:14"}],"id":5119,"name":"Assignment","src":"600:19:14"}],"id":5120,"name":"ExpressionStatement","src":"600:19:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5101,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":5121,"name":"Identifier","src":"634:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5107,"type":"bytes32","value":"node"},"id":5122,"name":"Identifier","src":"653:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5109,"type":"bytes calldata","value":"hash"},"id":5123,"name":"Identifier","src":"659:4:14"}],"id":5124,"name":"FunctionCall","src":"634:30:14"}],"id":5125,"name":"EmitStatement","src":"629:35:14"}],"id":5126,"name":"Block","src":"590:81:14"}],"id":5127,"name":"FunctionDefinition","src":"505:166:14"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":5157,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5139,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5128,"name":"ElementaryTypeName","src":"859:7:14"}],"id":5129,"name":"VariableDeclaration","src":"859:12:14"}],"id":5130,"name":"ParameterList","src":"858:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5139,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5131,"name":"ElementaryTypeName","src":"896:5:14"}],"id":5132,"name":"VariableDeclaration","src":"896:12:14"}],"id":5133,"name":"ParameterList","src":"895:14:14"},{"children":[{"attributes":{"functionReturnParameters":5133},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5105,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5134,"name":"Identifier","src":"927:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5129,"type":"bytes32","value":"node"},"id":5135,"name":"Identifier","src":"934:4:14"}],"id":5136,"name":"IndexAccess","src":"927:12:14"}],"id":5137,"name":"Return","src":"920:19:14"}],"id":5138,"name":"Block","src":"910:36:14"}],"id":5139,"name":"FunctionDefinition","src":"838:108:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5157,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5156,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5140,"name":"ElementaryTypeName","src":"979:6:14"}],"id":5141,"name":"VariableDeclaration","src":"979:18:14"}],"id":5142,"name":"ParameterList","src":"978:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5156,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5143,"name":"ElementaryTypeName","src":"1019:4:14"}],"id":5144,"name":"VariableDeclaration","src":"1019:4:14"}],"id":5145,"name":"ParameterList","src":"1018:6:14"},{"children":[{"attributes":{"functionReturnParameters":5145},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5141,"type":"bytes4","value":"interfaceID"},"id":5146,"name":"Identifier","src":"1042:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5095,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":5147,"name":"Identifier","src":"1057:25:14"}],"id":5148,"name":"BinaryOperation","src":"1042:40:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10352,"type":"contract super ContentHashResolver","value":"super"},"id":5149,"name":"Identifier","src":"1086:5:14"}],"id":5150,"name":"MemberAccess","src":"1086:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5141,"type":"bytes4","value":"interfaceID"},"id":5151,"name":"Identifier","src":"1110:11:14"}],"id":5152,"name":"FunctionCall","src":"1086:36:14"}],"id":5153,"name":"BinaryOperation","src":"1042:80:14"}],"id":5154,"name":"Return","src":"1035:87:14"}],"id":5155,"name":"Block","src":"1025:104:14"}],"id":5156,"name":"FunctionDefinition","src":"952:177:14"}],"id":5157,"name":"ContractDefinition","src":"56:1075:14"}],"id":5158,"name":"SourceUnit","src":"0:1132:14"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[5648]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5159,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5649,"symbolAliases":[null],"unitAlias":""},"id":5160,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":7755,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":5649,"symbolAliases":[null],"unitAlias":""},"id":5161,"name":"ImportDirective","src":"55:24:15"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5648,7136],"name":"DNSResolver","scope":5649},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5162,"name":"UserDefinedTypeName","src":"105:12:15"}],"id":5163,"name":"InheritanceSpecifier","src":"105:12:15"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":7754,"type":"library RRUtils"},"id":5164,"name":"UserDefinedTypeName","src":"130:7:15"}],"id":5165,"name":"UsingForDirective","src":"124:20:15"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10292,"type":"library ENSBytesUtils"},"id":5166,"name":"UserDefinedTypeName","src":"155:13:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5167,"name":"ElementaryTypeName","src":"173:5:15"}],"id":5168,"name":"UsingForDirective","src":"149:30:15"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":5648,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5169,"name":"ElementaryTypeName","src":"185:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":5170,"name":"Literal","src":"235:10:15"}],"id":5171,"name":"VariableDeclaration","src":"185:60:15"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":5648,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5172,"name":"ElementaryTypeName","src":"251:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":5173,"name":"Literal","src":"299:10:15"}],"id":5174,"name":"VariableDeclaration","src":"251:58:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5184,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5175,"name":"ElementaryTypeName","src":"430:7:15"}],"id":5176,"name":"VariableDeclaration","src":"430:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5184,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5177,"name":"ElementaryTypeName","src":"452:5:15"}],"id":5178,"name":"VariableDeclaration","src":"452:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5184,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5179,"name":"ElementaryTypeName","src":"464:6:15"}],"id":5180,"name":"VariableDeclaration","src":"464:15:15"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":5184,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5181,"name":"ElementaryTypeName","src":"481:5:15"}],"id":5182,"name":"VariableDeclaration","src":"481:12:15"}],"id":5183,"name":"ParameterList","src":"429:65:15"}],"id":5184,"name":"EventDefinition","src":"407:88:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5192,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5185,"name":"ElementaryTypeName","src":"614:7:15"}],"id":5186,"name":"VariableDeclaration","src":"614:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5192,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5187,"name":"ElementaryTypeName","src":"636:5:15"}],"id":5188,"name":"VariableDeclaration","src":"636:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5192,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5189,"name":"ElementaryTypeName","src":"648:6:15"}],"id":5190,"name":"VariableDeclaration","src":"648:15:15"}],"id":5191,"name":"ParameterList","src":"613:51:15"}],"id":5192,"name":"EventDefinition","src":"591:74:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5193,"name":"ElementaryTypeName","src":"777:7:15"}],"id":5194,"name":"VariableDeclaration","src":"777:20:15"}],"id":5195,"name":"ParameterList","src":"776:22:15"}],"id":5196,"name":"EventDefinition","src":"756:43:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5204,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5197,"name":"ElementaryTypeName","src":"913:7:15"}],"id":5198,"name":"VariableDeclaration","src":"913:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":5204,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5199,"name":"ElementaryTypeName","src":"935:5:15"}],"id":5200,"name":"VariableDeclaration","src":"935:18:15"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":5204,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5201,"name":"ElementaryTypeName","src":"955:5:15"}],"id":5202,"name":"VariableDeclaration","src":"955:14:15"}],"id":5203,"name":"ParameterList","src":"912:58:15"}],"id":5204,"name":"EventDefinition","src":"888:83:15"},{"attributes":{"constant":false,"name":"zonehashes","scope":5648,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5205,"name":"ElementaryTypeName","src":"1181:7:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5206,"name":"ElementaryTypeName","src":"1190:5:15"}],"id":5207,"name":"Mapping","src":"1173:23:15"}],"id":5208,"name":"VariableDeclaration","src":"1173:42:15"},{"attributes":{"constant":false,"name":"versions","scope":5648,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5209,"name":"ElementaryTypeName","src":"1433:7:15"},{"attributes":{"name":"uint256","type":"uint256"},"id":5210,"name":"ElementaryTypeName","src":"1442:7:15"}],"id":5211,"name":"Mapping","src":"1425:25:15"}],"id":5212,"name":"VariableDeclaration","src":"1425:42:15"},{"attributes":{"constant":false,"name":"records","scope":5648,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5213,"name":"ElementaryTypeName","src":"1589:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5214,"name":"ElementaryTypeName","src":"1606:7:15"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5215,"name":"ElementaryTypeName","src":"1623:7:15"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5216,"name":"ElementaryTypeName","src":"1640:6:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5217,"name":"ElementaryTypeName","src":"1648:5:15"}],"id":5218,"name":"Mapping","src":"1632:22:15"}],"id":5219,"name":"Mapping","src":"1615:40:15"}],"id":5220,"name":"Mapping","src":"1598:58:15"}],"id":5221,"name":"Mapping","src":"1581:76:15"}],"id":5222,"name":"VariableDeclaration","src":"1581:92:15"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":5648,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5223,"name":"ElementaryTypeName","src":"1853:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5224,"name":"ElementaryTypeName","src":"1870:7:15"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5225,"name":"ElementaryTypeName","src":"1887:7:15"},{"attributes":{"name":"uint16","type":"uint16"},"id":5226,"name":"ElementaryTypeName","src":"1896:6:15"}],"id":5227,"name":"Mapping","src":"1879:24:15"}],"id":5228,"name":"Mapping","src":"1862:42:15"}],"id":5229,"name":"Mapping","src":"1845:60:15"}],"id":5230,"name":"VariableDeclaration","src":"1845:85:15"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":5648,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5395,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5231,"name":"ElementaryTypeName","src":"2877:7:15"}],"id":5232,"name":"VariableDeclaration","src":"2877:12:15"},{"attributes":{"constant":false,"name":"data","scope":5395,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5233,"name":"ElementaryTypeName","src":"2891:5:15"}],"id":5234,"name":"VariableDeclaration","src":"2891:19:15"}],"id":5235,"name":"ParameterList","src":"2876:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":5239,"name":"ParameterList","src":"2938:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5236,"name":"Identifier","src":"2921:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5232,"type":"bytes32","value":"node"},"id":5237,"name":"Identifier","src":"2932:4:15"}],"id":5238,"name":"ModifierInvocation","src":"2921:16:15"},{"children":[{"attributes":{"assignments":[5241]},"children":[{"attributes":{"constant":false,"name":"resource","scope":5394,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5240,"name":"ElementaryTypeName","src":"2948:6:15"}],"id":5241,"name":"VariableDeclaration","src":"2948:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5242,"name":"Literal","src":"2966:1:15"}],"id":5243,"name":"VariableDeclarationStatement","src":"2948:19:15"},{"attributes":{"assignments":[5245]},"children":[{"attributes":{"constant":false,"name":"offset","scope":5394,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5244,"name":"ElementaryTypeName","src":"2977:7:15"}],"id":5245,"name":"VariableDeclaration","src":"2977:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5246,"name":"Literal","src":"2994:1:15"}],"id":5247,"name":"VariableDeclarationStatement","src":"2977:18:15"},{"attributes":{"assignments":[5249],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":5394,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5248,"name":"ElementaryTypeName","src":"3005:5:15"}],"id":5249,"name":"VariableDeclaration","src":"3005:17:15"}],"id":5250,"name":"VariableDeclarationStatement","src":"3005:17:15"},{"attributes":{"assignments":[5252],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":5394,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5251,"name":"ElementaryTypeName","src":"3032:5:15"}],"id":5252,"name":"VariableDeclaration","src":"3032:18:15"}],"id":5253,"name":"VariableDeclarationStatement","src":"3032:18:15"},{"attributes":{"assignments":[5255],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5394,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5254,"name":"ElementaryTypeName","src":"3060:7:15"}],"id":5255,"name":"VariableDeclaration","src":"3060:16:15"}],"id":5256,"name":"VariableDeclarationStatement","src":"3060:16:15"},{"children":[{"attributes":{"assignments":[5260]},"children":[{"attributes":{"constant":false,"name":"iter","scope":5371,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":5259,"name":"UserDefinedTypeName","src":"3152:18:15"}],"id":5260,"name":"VariableDeclaration","src":"3152:30:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":7301,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes calldata","value":"data"},"id":5261,"name":"Identifier","src":"3185:4:15"}],"id":5262,"name":"MemberAccess","src":"3185:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5263,"name":"Literal","src":"3201:1:15"}],"id":5264,"name":"FunctionCall","src":"3185:18:15"}],"id":5265,"name":"VariableDeclarationStatement","src":"3152:51:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":7316,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5266,"name":"Identifier","src":"3206:4:15"}],"id":5267,"name":"MemberAccess","src":"3206:9:15"}],"id":5268,"name":"FunctionCall","src":"3206:11:15"}],"id":5269,"name":"UnaryOperation","src":"3205:12:15"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":7418,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5270,"name":"Identifier","src":"3219:4:15"}],"id":5271,"name":"MemberAccess","src":"3219:9:15"}],"id":5272,"name":"FunctionCall","src":"3219:11:15"}],"id":5273,"name":"ExpressionStatement","src":"3219:11:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5274,"name":"Identifier","src":"3250:8:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5275,"name":"Literal","src":"3262:1:15"}],"id":5276,"name":"BinaryOperation","src":"3250:13:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5277,"name":"Identifier","src":"3283:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":7266,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5278,"name":"Identifier","src":"3294:4:15"}],"id":5279,"name":"MemberAccess","src":"3294:12:15"}],"id":5280,"name":"Assignment","src":"3283:23:15"}],"id":5281,"name":"ExpressionStatement","src":"3283:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5282,"name":"Identifier","src":"3324:4:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":7439,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5283,"name":"Identifier","src":"3331:4:15"}],"id":5284,"name":"MemberAccess","src":"3331:9:15"}],"id":5285,"name":"FunctionCall","src":"3331:11:15"}],"id":5286,"name":"Assignment","src":"3324:18:15"}],"id":5287,"name":"ExpressionStatement","src":"3324:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5255,"type":"bytes32","value":"nameHash"},"id":5288,"name":"Identifier","src":"3360:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5289,"name":"Identifier","src":"3371:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":5290,"name":"Identifier","src":"3381:3:15"}],"id":5291,"name":"MemberAccess","src":"3381:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5292,"name":"Identifier","src":"3398:4:15"}],"id":5293,"name":"FunctionCall","src":"3381:22:15"}],"id":5294,"name":"FunctionCall","src":"3371:33:15"}],"id":5295,"name":"Assignment","src":"3360:44:15"}],"id":5296,"name":"ExpressionStatement","src":"3360:44:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory","value":"value"},"id":5297,"name":"Identifier","src":"3422:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5298,"name":"ElementaryTypeNameExpression","src":"3430:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":7459,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5299,"name":"Identifier","src":"3436:4:15"}],"id":5300,"name":"MemberAccess","src":"3436:10:15"}],"id":5301,"name":"FunctionCall","src":"3436:12:15"}],"id":5302,"name":"FunctionCall","src":"3430:19:15"}],"id":5303,"name":"Assignment","src":"3422:27:15"}],"id":5304,"name":"ExpressionStatement","src":"3422:27:15"}],"id":5305,"name":"Block","src":"3265:199:15"},{"children":[{"attributes":{"assignments":[5307]},"children":[{"attributes":{"constant":false,"name":"newName","scope":5368,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5306,"name":"ElementaryTypeName","src":"3488:5:15"}],"id":5307,"name":"VariableDeclaration","src":"3488:20:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":7439,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5308,"name":"Identifier","src":"3511:4:15"}],"id":5309,"name":"MemberAccess","src":"3511:9:15"}],"id":5310,"name":"FunctionCall","src":"3511:11:15"}],"id":5311,"name":"VariableDeclarationStatement","src":"3488:34:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5312,"name":"Identifier","src":"3544:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":7266,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5313,"name":"Identifier","src":"3556:4:15"}],"id":5314,"name":"MemberAccess","src":"3556:12:15"}],"id":5315,"name":"BinaryOperation","src":"3544:24:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9862,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5316,"name":"Identifier","src":"3573:4:15"}],"id":5317,"name":"MemberAccess","src":"3573:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5307,"type":"bytes memory","value":"newName"},"id":5318,"name":"Identifier","src":"3585:7:15"}],"id":5319,"name":"FunctionCall","src":"3573:20:15"}],"id":5320,"name":"UnaryOperation","src":"3572:21:15"}],"id":5321,"name":"BinaryOperation","src":"3544:49:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5647,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":5322,"name":"Identifier","src":"3617:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5232,"type":"bytes32","value":"node"},"id":5323,"name":"Identifier","src":"3629:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5324,"name":"Identifier","src":"3635:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5325,"name":"Identifier","src":"3641:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes calldata","value":"data"},"id":5326,"name":"Identifier","src":"3651:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5327,"name":"Identifier","src":"3657:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5328,"name":"Identifier","src":"3665:4:15"}],"id":5329,"name":"MemberAccess","src":"3665:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5330,"name":"Identifier","src":"3679:6:15"}],"id":5331,"name":"BinaryOperation","src":"3665:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory","value":"value"},"id":5332,"name":"Identifier","src":"3687:5:15"}],"id":5333,"name":"MemberAccess","src":"3687:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5334,"name":"Literal","src":"3703:1:15"}],"id":5335,"name":"BinaryOperation","src":"3687:17:15"}],"id":5336,"name":"FunctionCall","src":"3617:88:15"}],"id":5337,"name":"ExpressionStatement","src":"3617:88:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5338,"name":"Identifier","src":"3727:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":7266,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5339,"name":"Identifier","src":"3738:4:15"}],"id":5340,"name":"MemberAccess","src":"3738:12:15"}],"id":5341,"name":"Assignment","src":"3727:23:15"}],"id":5342,"name":"ExpressionStatement","src":"3727:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5343,"name":"Identifier","src":"3772:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5344,"name":"Identifier","src":"3781:4:15"}],"id":5345,"name":"MemberAccess","src":"3781:11:15"}],"id":5346,"name":"Assignment","src":"3772:20:15"}],"id":5347,"name":"ExpressionStatement","src":"3772:20:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5348,"name":"Identifier","src":"3814:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5307,"type":"bytes memory","value":"newName"},"id":5349,"name":"Identifier","src":"3821:7:15"}],"id":5350,"name":"Assignment","src":"3814:14:15"}],"id":5351,"name":"ExpressionStatement","src":"3814:14:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5255,"type":"bytes32","value":"nameHash"},"id":5352,"name":"Identifier","src":"3850:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5353,"name":"Identifier","src":"3861:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5354,"name":"Identifier","src":"3871:4:15"}],"id":5355,"name":"FunctionCall","src":"3861:15:15"}],"id":5356,"name":"Assignment","src":"3850:26:15"}],"id":5357,"name":"ExpressionStatement","src":"3850:26:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory","value":"value"},"id":5358,"name":"Identifier","src":"3898:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5359,"name":"ElementaryTypeNameExpression","src":"3906:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":7459,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5360,"name":"Identifier","src":"3912:4:15"}],"id":5361,"name":"MemberAccess","src":"3912:10:15"}],"id":5362,"name":"FunctionCall","src":"3912:12:15"}],"id":5363,"name":"FunctionCall","src":"3906:19:15"}],"id":5364,"name":"Assignment","src":"3898:27:15"}],"id":5365,"name":"ExpressionStatement","src":"3898:27:15"}],"id":5366,"name":"Block","src":"3595:349:15"}],"id":5367,"name":"IfStatement","src":"3540:404:15"}],"id":5368,"name":"Block","src":"3470:488:15"}],"id":5369,"name":"IfStatement","src":"3246:712:15"}],"id":5370,"name":"Block","src":"3232:736:15"}],"id":5371,"name":"ForStatement","src":"3147:821:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5372,"name":"Identifier","src":"3981:4:15"}],"id":5373,"name":"MemberAccess","src":"3981:11:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5374,"name":"Literal","src":"3995:1:15"}],"id":5375,"name":"BinaryOperation","src":"3981:15:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5647,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":5376,"name":"Identifier","src":"4012:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5232,"type":"bytes32","value":"node"},"id":5377,"name":"Identifier","src":"4024:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5378,"name":"Identifier","src":"4030:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5379,"name":"Identifier","src":"4036:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes calldata","value":"data"},"id":5380,"name":"Identifier","src":"4046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5381,"name":"Identifier","src":"4052:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes calldata","value":"data"},"id":5382,"name":"Identifier","src":"4060:4:15"}],"id":5383,"name":"MemberAccess","src":"4060:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5384,"name":"Identifier","src":"4074:6:15"}],"id":5385,"name":"BinaryOperation","src":"4060:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory","value":"value"},"id":5386,"name":"Identifier","src":"4082:5:15"}],"id":5387,"name":"MemberAccess","src":"4082:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5388,"name":"Literal","src":"4098:1:15"}],"id":5389,"name":"BinaryOperation","src":"4082:17:15"}],"id":5390,"name":"FunctionCall","src":"4012:88:15"}],"id":5391,"name":"ExpressionStatement","src":"4012:88:15"}],"id":5392,"name":"Block","src":"3998:113:15"}],"id":5393,"name":"IfStatement","src":"3977:134:15"}],"id":5394,"name":"Block","src":"2938:1179:15"}],"id":5395,"name":"FunctionDefinition","src":"2854:1263:15"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":5648,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5419,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5396,"name":"ElementaryTypeName","src":"4538:7:15"}],"id":5397,"name":"VariableDeclaration","src":"4538:12:15"},{"attributes":{"constant":false,"name":"name","scope":5419,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5398,"name":"ElementaryTypeName","src":"4552:7:15"}],"id":5399,"name":"VariableDeclaration","src":"4552:12:15"},{"attributes":{"constant":false,"name":"resource","scope":5419,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5400,"name":"ElementaryTypeName","src":"4566:6:15"}],"id":5401,"name":"VariableDeclaration","src":"4566:15:15"}],"id":5402,"name":"ParameterList","src":"4537:45:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5419,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5403,"name":"ElementaryTypeName","src":"4604:5:15"}],"id":5404,"name":"VariableDeclaration","src":"4604:12:15"}],"id":5405,"name":"ParameterList","src":"4603:14:15"},{"children":[{"attributes":{"functionReturnParameters":5405},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5406,"name":"Identifier","src":"4635:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5397,"type":"bytes32","value":"node"},"id":5407,"name":"Identifier","src":"4643:4:15"}],"id":5408,"name":"IndexAccess","src":"4635:13:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5212,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5409,"name":"Identifier","src":"4649:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5397,"type":"bytes32","value":"node"},"id":5410,"name":"Identifier","src":"4658:4:15"}],"id":5411,"name":"IndexAccess","src":"4649:14:15"}],"id":5412,"name":"IndexAccess","src":"4635:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5399,"type":"bytes32","value":"name"},"id":5413,"name":"Identifier","src":"4665:4:15"}],"id":5414,"name":"IndexAccess","src":"4635:35:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5401,"type":"uint16","value":"resource"},"id":5415,"name":"Identifier","src":"4671:8:15"}],"id":5416,"name":"IndexAccess","src":"4635:45:15"}],"id":5417,"name":"Return","src":"4628:52:15"}],"id":5418,"name":"Block","src":"4618:69:15"}],"id":5419,"name":"FunctionDefinition","src":"4519:168:15"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":5648,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5442,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5420,"name":"ElementaryTypeName","src":"4924:7:15"}],"id":5421,"name":"VariableDeclaration","src":"4924:12:15"},{"attributes":{"constant":false,"name":"name","scope":5442,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5422,"name":"ElementaryTypeName","src":"4938:7:15"}],"id":5423,"name":"VariableDeclaration","src":"4938:12:15"}],"id":5424,"name":"ParameterList","src":"4923:28:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5442,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5425,"name":"ElementaryTypeName","src":"4973:4:15"}],"id":5426,"name":"VariableDeclaration","src":"4973:4:15"}],"id":5427,"name":"ParameterList","src":"4972:6:15"},{"children":[{"attributes":{"functionReturnParameters":5427},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5230,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5428,"name":"Identifier","src":"4997:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5421,"type":"bytes32","value":"node"},"id":5429,"name":"Identifier","src":"5014:4:15"}],"id":5430,"name":"IndexAccess","src":"4997:22:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5212,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5431,"name":"Identifier","src":"5020:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5421,"type":"bytes32","value":"node"},"id":5432,"name":"Identifier","src":"5029:4:15"}],"id":5433,"name":"IndexAccess","src":"5020:14:15"}],"id":5434,"name":"IndexAccess","src":"4997:38:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5423,"type":"bytes32","value":"name"},"id":5435,"name":"Identifier","src":"5036:4:15"}],"id":5436,"name":"IndexAccess","src":"4997:44:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5437,"name":"Literal","src":"5045:1:15"}],"id":5438,"name":"BinaryOperation","src":"4997:49:15"}],"id":5439,"name":"TupleExpression","src":"4996:51:15"}],"id":5440,"name":"Return","src":"4989:58:15"}],"id":5441,"name":"Block","src":"4979:75:15"}],"id":5442,"name":"FunctionDefinition","src":"4901:153:15"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":5648,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5443,"name":"ElementaryTypeName","src":"5215:7:15"}],"id":5444,"name":"VariableDeclaration","src":"5215:12:15"}],"id":5445,"name":"ParameterList","src":"5214:14:15"},{"attributes":{"parameters":[null]},"children":[],"id":5449,"name":"ParameterList","src":"5253:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5446,"name":"Identifier","src":"5236:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5444,"type":"bytes32","value":"node"},"id":5447,"name":"Identifier","src":"5247:4:15"}],"id":5448,"name":"ModifierInvocation","src":"5236:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5212,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5450,"name":"Identifier","src":"5263:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5444,"type":"bytes32","value":"node"},"id":5451,"name":"Identifier","src":"5272:4:15"}],"id":5452,"name":"IndexAccess","src":"5263:14:15"}],"id":5453,"name":"UnaryOperation","src":"5263:16:15"}],"id":5454,"name":"ExpressionStatement","src":"5263:16:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":5455,"name":"Identifier","src":"5294:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5444,"type":"bytes32","value":"node"},"id":5456,"name":"Identifier","src":"5309:4:15"}],"id":5457,"name":"FunctionCall","src":"5294:20:15"}],"id":5458,"name":"EmitStatement","src":"5289:25:15"}],"id":5459,"name":"Block","src":"5253:68:15"}],"id":5460,"name":"FunctionDefinition","src":"5193:128:15"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":5648,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5489,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5461,"name":"ElementaryTypeName","src":"5562:7:15"}],"id":5462,"name":"VariableDeclaration","src":"5562:12:15"},{"attributes":{"constant":false,"name":"hash","scope":5489,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5463,"name":"ElementaryTypeName","src":"5576:5:15"}],"id":5464,"name":"VariableDeclaration","src":"5576:19:15"}],"id":5465,"name":"ParameterList","src":"5561:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":5469,"name":"ParameterList","src":"5623:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5466,"name":"Identifier","src":"5606:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"node"},"id":5467,"name":"Identifier","src":"5617:4:15"}],"id":5468,"name":"ModifierInvocation","src":"5606:16:15"},{"children":[{"attributes":{"assignments":[5471]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":5488,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5470,"name":"ElementaryTypeName","src":"5633:5:15"}],"id":5471,"name":"VariableDeclaration","src":"5633:20:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5472,"name":"Identifier","src":"5656:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"node"},"id":5473,"name":"Identifier","src":"5667:4:15"}],"id":5474,"name":"IndexAccess","src":"5656:16:15"}],"id":5475,"name":"VariableDeclarationStatement","src":"5633:39:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5476,"name":"Identifier","src":"5682:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"node"},"id":5477,"name":"Identifier","src":"5693:4:15"}],"id":5478,"name":"IndexAccess","src":"5682:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"bytes calldata","value":"hash"},"id":5479,"name":"Identifier","src":"5701:4:15"}],"id":5480,"name":"Assignment","src":"5682:23:15"}],"id":5481,"name":"ExpressionStatement","src":"5682:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5204,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":5482,"name":"Identifier","src":"5720:18:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"node"},"id":5483,"name":"Identifier","src":"5739:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5471,"type":"bytes memory","value":"oldhash"},"id":5484,"name":"Identifier","src":"5745:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"bytes calldata","value":"hash"},"id":5485,"name":"Identifier","src":"5754:4:15"}],"id":5486,"name":"FunctionCall","src":"5720:39:15"}],"id":5487,"name":"EmitStatement","src":"5715:44:15"}],"id":5488,"name":"Block","src":"5623:143:15"}],"id":5489,"name":"FunctionDefinition","src":"5541:225:15"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":5648,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5501,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5490,"name":"ElementaryTypeName","src":"5938:7:15"}],"id":5491,"name":"VariableDeclaration","src":"5938:12:15"}],"id":5492,"name":"ParameterList","src":"5937:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5501,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5493,"name":"ElementaryTypeName","src":"5975:5:15"}],"id":5494,"name":"VariableDeclaration","src":"5975:12:15"}],"id":5495,"name":"ParameterList","src":"5974:14:15"},{"children":[{"attributes":{"functionReturnParameters":5495},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5496,"name":"Identifier","src":"6006:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5491,"type":"bytes32","value":"node"},"id":5497,"name":"Identifier","src":"6017:4:15"}],"id":5498,"name":"IndexAccess","src":"6006:16:15"}],"id":5499,"name":"Return","src":"5999:23:15"}],"id":5500,"name":"Block","src":"5989:40:15"}],"id":5501,"name":"FunctionDefinition","src":"5920:109:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5648,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5522,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5502,"name":"ElementaryTypeName","src":"6062:6:15"}],"id":5503,"name":"VariableDeclaration","src":"6062:18:15"}],"id":5504,"name":"ParameterList","src":"6061:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5522,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5505,"name":"ElementaryTypeName","src":"6102:4:15"}],"id":5506,"name":"VariableDeclaration","src":"6102:4:15"}],"id":5507,"name":"ParameterList","src":"6101:6:15"},{"children":[{"attributes":{"functionReturnParameters":5507},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5503,"type":"bytes4","value":"interfaceID"},"id":5508,"name":"Identifier","src":"6125:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5171,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":5509,"name":"Identifier","src":"6140:23:15"}],"id":5510,"name":"BinaryOperation","src":"6125:38:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5503,"type":"bytes4","value":"interfaceID"},"id":5511,"name":"Identifier","src":"6182:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":5512,"name":"Identifier","src":"6197:21:15"}],"id":5513,"name":"BinaryOperation","src":"6182:36:15"}],"id":5514,"name":"BinaryOperation","src":"6125:93:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10356,"type":"contract super DNSResolver","value":"super"},"id":5515,"name":"Identifier","src":"6237:5:15"}],"id":5516,"name":"MemberAccess","src":"6237:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5503,"type":"bytes4","value":"interfaceID"},"id":5517,"name":"Identifier","src":"6261:11:15"}],"id":5518,"name":"FunctionCall","src":"6237:36:15"}],"id":5519,"name":"BinaryOperation","src":"6125:148:15"}],"id":5520,"name":"Return","src":"6118:155:15"}],"id":5521,"name":"Block","src":"6108:172:15"}],"id":5522,"name":"FunctionDefinition","src":"6035:245:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":5648,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5647,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5523,"name":"ElementaryTypeName","src":"6316:7:15"}],"id":5524,"name":"VariableDeclaration","src":"6316:12:15"},{"attributes":{"constant":false,"name":"name","scope":5647,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5525,"name":"ElementaryTypeName","src":"6338:5:15"}],"id":5526,"name":"VariableDeclaration","src":"6338:17:15"},{"attributes":{"constant":false,"name":"resource","scope":5647,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5527,"name":"ElementaryTypeName","src":"6365:6:15"}],"id":5528,"name":"VariableDeclaration","src":"6365:15:15"},{"attributes":{"constant":false,"name":"data","scope":5647,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5529,"name":"ElementaryTypeName","src":"6390:5:15"}],"id":5530,"name":"VariableDeclaration","src":"6390:17:15"},{"attributes":{"constant":false,"name":"offset","scope":5647,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5531,"name":"ElementaryTypeName","src":"6417:7:15"}],"id":5532,"name":"VariableDeclaration","src":"6417:14:15"},{"attributes":{"constant":false,"name":"size","scope":5647,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5533,"name":"ElementaryTypeName","src":"6441:7:15"}],"id":5534,"name":"VariableDeclaration","src":"6441:12:15"},{"attributes":{"constant":false,"name":"deleteRecord","scope":5647,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5535,"name":"ElementaryTypeName","src":"6463:4:15"}],"id":5536,"name":"VariableDeclaration","src":"6463:17:15"}],"id":5537,"name":"ParameterList","src":"6306:175:15"},{"attributes":{"parameters":[null]},"children":[],"id":5538,"name":"ParameterList","src":"6494:0:15"},{"children":[{"attributes":{"assignments":[5540]},"children":[{"attributes":{"constant":false,"name":"version","scope":5646,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5539,"name":"ElementaryTypeName","src":"6504:7:15"}],"id":5540,"name":"VariableDeclaration","src":"6504:15:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5212,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5541,"name":"Identifier","src":"6522:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5542,"name":"Identifier","src":"6531:4:15"}],"id":5543,"name":"IndexAccess","src":"6522:14:15"}],"id":5544,"name":"VariableDeclarationStatement","src":"6504:32:15"},{"attributes":{"assignments":[5546]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5646,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5545,"name":"ElementaryTypeName","src":"6546:7:15"}],"id":5546,"name":"VariableDeclaration","src":"6546:16:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5547,"name":"Identifier","src":"6565:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5526,"type":"bytes memory","value":"name"},"id":5548,"name":"Identifier","src":"6575:4:15"}],"id":5549,"name":"FunctionCall","src":"6565:15:15"}],"id":5550,"name":"VariableDeclarationStatement","src":"6546:34:15"},{"attributes":{"assignments":[5552]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":5646,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5551,"name":"ElementaryTypeName","src":"6590:5:15"}],"id":5552,"name":"VariableDeclaration","src":"6590:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10069,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5530,"type":"bytes memory","value":"data"},"id":5553,"name":"Identifier","src":"6612:4:15"}],"id":5554,"name":"MemberAccess","src":"6612:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"offset"},"id":5555,"name":"Identifier","src":"6627:6:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5534,"type":"uint256","value":"size"},"id":5556,"name":"Identifier","src":"6635:4:15"}],"id":5557,"name":"FunctionCall","src":"6612:28:15"}],"id":5558,"name":"VariableDeclarationStatement","src":"6590:50:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5536,"type":"bool","value":"deleteRecord"},"id":5559,"name":"Identifier","src":"6654:12:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5560,"name":"Identifier","src":"6686:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5561,"name":"Identifier","src":"6694:4:15"}],"id":5562,"name":"IndexAccess","src":"6686:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5563,"name":"Identifier","src":"6700:7:15"}],"id":5564,"name":"IndexAccess","src":"6686:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5565,"name":"Identifier","src":"6709:8:15"}],"id":5566,"name":"IndexAccess","src":"6686:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5567,"name":"Identifier","src":"6719:8:15"}],"id":5568,"name":"IndexAccess","src":"6686:42:15"}],"id":5569,"name":"MemberAccess","src":"6686:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5570,"name":"Literal","src":"6739:1:15"}],"id":5571,"name":"BinaryOperation","src":"6686:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5230,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5572,"name":"Identifier","src":"6760:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5573,"name":"Identifier","src":"6777:4:15"}],"id":5576,"name":"IndexAccess","src":"6760:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5574,"name":"Identifier","src":"6783:7:15"}],"id":5577,"name":"IndexAccess","src":"6760:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5575,"name":"Identifier","src":"6792:8:15"}],"id":5578,"name":"IndexAccess","src":"6760:41:15"}],"id":5579,"name":"UnaryOperation","src":"6760:43:15"}],"id":5580,"name":"ExpressionStatement","src":"6760:43:15"}],"id":5581,"name":"Block","src":"6742:76:15"}],"id":5582,"name":"IfStatement","src":"6682:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5583,"name":"Identifier","src":"6838:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5584,"name":"Identifier","src":"6846:4:15"}],"id":5585,"name":"IndexAccess","src":"6838:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5586,"name":"Identifier","src":"6852:7:15"}],"id":5587,"name":"IndexAccess","src":"6838:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5588,"name":"Identifier","src":"6861:8:15"}],"id":5589,"name":"IndexAccess","src":"6838:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5590,"name":"Identifier","src":"6871:8:15"}],"id":5591,"name":"IndexAccess","src":"6838:42:15"}],"id":5592,"name":"TupleExpression","src":"6837:44:15"}],"id":5593,"name":"UnaryOperation","src":"6831:50:15"}],"id":5594,"name":"ExpressionStatement","src":"6831:50:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":5192,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":5595,"name":"Identifier","src":"6900:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5596,"name":"Identifier","src":"6917:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5526,"type":"bytes memory","value":"name"},"id":5597,"name":"Identifier","src":"6923:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5598,"name":"Identifier","src":"6929:8:15"}],"id":5599,"name":"FunctionCall","src":"6900:38:15"}],"id":5600,"name":"EmitStatement","src":"6895:43:15"}],"id":5601,"name":"Block","src":"6668:281:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5602,"name":"Identifier","src":"6973:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5603,"name":"Identifier","src":"6981:4:15"}],"id":5604,"name":"IndexAccess","src":"6973:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5605,"name":"Identifier","src":"6987:7:15"}],"id":5606,"name":"IndexAccess","src":"6973:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5607,"name":"Identifier","src":"6996:8:15"}],"id":5608,"name":"IndexAccess","src":"6973:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5609,"name":"Identifier","src":"7006:8:15"}],"id":5610,"name":"IndexAccess","src":"6973:42:15"}],"id":5611,"name":"MemberAccess","src":"6973:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5612,"name":"Literal","src":"7026:1:15"}],"id":5613,"name":"BinaryOperation","src":"6973:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5230,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5614,"name":"Identifier","src":"7047:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5615,"name":"Identifier","src":"7064:4:15"}],"id":5618,"name":"IndexAccess","src":"7047:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5616,"name":"Identifier","src":"7070:7:15"}],"id":5619,"name":"IndexAccess","src":"7047:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5617,"name":"Identifier","src":"7079:8:15"}],"id":5620,"name":"IndexAccess","src":"7047:41:15"}],"id":5621,"name":"UnaryOperation","src":"7047:43:15"}],"id":5622,"name":"ExpressionStatement","src":"7047:43:15"}],"id":5623,"name":"Block","src":"7029:76:15"}],"id":5624,"name":"IfStatement","src":"6969:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5625,"name":"Identifier","src":"7118:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5626,"name":"Identifier","src":"7126:4:15"}],"id":5630,"name":"IndexAccess","src":"7118:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5627,"name":"Identifier","src":"7132:7:15"}],"id":5631,"name":"IndexAccess","src":"7118:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5628,"name":"Identifier","src":"7141:8:15"}],"id":5632,"name":"IndexAccess","src":"7118:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5629,"name":"Identifier","src":"7151:8:15"}],"id":5633,"name":"IndexAccess","src":"7118:42:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5552,"type":"bytes memory","value":"rrData"},"id":5634,"name":"Identifier","src":"7163:6:15"}],"id":5635,"name":"Assignment","src":"7118:51:15"}],"id":5636,"name":"ExpressionStatement","src":"7118:51:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5184,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":5637,"name":"Identifier","src":"7188:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5638,"name":"Identifier","src":"7205:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5526,"type":"bytes memory","value":"name"},"id":5639,"name":"Identifier","src":"7211:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5640,"name":"Identifier","src":"7217:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5552,"type":"bytes memory","value":"rrData"},"id":5641,"name":"Identifier","src":"7227:6:15"}],"id":5642,"name":"FunctionCall","src":"7188:46:15"}],"id":5643,"name":"EmitStatement","src":"7183:51:15"}],"id":5644,"name":"Block","src":"6955:290:15"}],"id":5645,"name":"IfStatement","src":"6650:595:15"}],"id":5646,"name":"Block","src":"6494:757:15"}],"id":5647,"name":"FunctionDefinition","src":"6286:965:15"}],"id":5648,"name":"ContractDefinition","src":"81:7172:15"}],"id":5649,"name":"SourceUnit","src":"0:7253:15"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[5835]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5650,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5836,"symbolAliases":[null],"unitAlias":""},"id":5651,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"SourceUnit":5088,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":5836,"symbolAliases":[null],"unitAlias":""},"id":5652,"name":"ImportDirective","src":"55:28:16"},{"attributes":{"contractDependencies":[5087,7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5835,5087,7136],"name":"InterfaceResolver","scope":5836},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5653,"name":"UserDefinedTypeName","src":"115:12:16"}],"id":5654,"name":"InheritanceSpecifier","src":"115:12:16"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5087,"type":"contract AddrResolver"},"id":5655,"name":"UserDefinedTypeName","src":"129:12:16"}],"id":5656,"name":"InheritanceSpecifier","src":"129:12:16"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":5835,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5657,"name":"ElementaryTypeName","src":"148:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":5658,"name":"ElementaryTypeNameExpression","src":"197:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5659,"name":"Identifier","src":"204:9:16"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":5660,"name":"Literal","src":"214:38:16"}],"id":5661,"name":"FunctionCall","src":"204:49:16"}],"id":5662,"name":"FunctionCall","src":"197:57:16"}],"id":5663,"name":"VariableDeclaration","src":"148:106:16"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5835,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5664,"name":"ElementaryTypeName","src":"260:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5665,"name":"Literal","src":"304:10:16"}],"id":5666,"name":"VariableDeclaration","src":"260:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5674,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5667,"name":"ElementaryTypeName","src":"344:7:16"}],"id":5668,"name":"VariableDeclaration","src":"344:20:16"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":5674,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5669,"name":"ElementaryTypeName","src":"366:6:16"}],"id":5670,"name":"VariableDeclaration","src":"366:26:16"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":5674,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5671,"name":"ElementaryTypeName","src":"394:7:16"}],"id":5672,"name":"VariableDeclaration","src":"394:19:16"}],"id":5673,"name":"ParameterList","src":"343:71:16"}],"id":5674,"name":"EventDefinition","src":"321:94:16"},{"attributes":{"constant":false,"name":"interfaces","scope":5835,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5675,"name":"ElementaryTypeName","src":"429:7:16"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5676,"name":"ElementaryTypeName","src":"446:6:16"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5677,"name":"ElementaryTypeName","src":"454:7:16"}],"id":5678,"name":"Mapping","src":"438:24:16"}],"id":5679,"name":"Mapping","src":"421:42:16"}],"id":5680,"name":"VariableDeclaration","src":"421:53:16"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":5835,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5707,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5681,"name":"ElementaryTypeName","src":"880:7:16"}],"id":5682,"name":"VariableDeclaration","src":"880:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":5707,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5683,"name":"ElementaryTypeName","src":"894:6:16"}],"id":5684,"name":"VariableDeclaration","src":"894:18:16"},{"attributes":{"constant":false,"name":"implementer","scope":5707,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5685,"name":"ElementaryTypeName","src":"914:7:16"}],"id":5686,"name":"VariableDeclaration","src":"914:19:16"}],"id":5687,"name":"ParameterList","src":"879:55:16"},{"attributes":{"parameters":[null]},"children":[],"id":5691,"name":"ParameterList","src":"961:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5688,"name":"Identifier","src":"944:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5682,"type":"bytes32","value":"node"},"id":5689,"name":"Identifier","src":"955:4:16"}],"id":5690,"name":"ModifierInvocation","src":"944:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5680,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5692,"name":"Identifier","src":"971:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5682,"type":"bytes32","value":"node"},"id":5693,"name":"Identifier","src":"982:4:16"}],"id":5695,"name":"IndexAccess","src":"971:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5684,"type":"bytes4","value":"interfaceID"},"id":5694,"name":"Identifier","src":"988:11:16"}],"id":5696,"name":"IndexAccess","src":"971:29:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5686,"type":"address","value":"implementer"},"id":5697,"name":"Identifier","src":"1003:11:16"}],"id":5698,"name":"Assignment","src":"971:43:16"}],"id":5699,"name":"ExpressionStatement","src":"971:43:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5674,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":5700,"name":"Identifier","src":"1029:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5682,"type":"bytes32","value":"node"},"id":5701,"name":"Identifier","src":"1046:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5684,"type":"bytes4","value":"interfaceID"},"id":5702,"name":"Identifier","src":"1052:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5686,"type":"address","value":"implementer"},"id":5703,"name":"Identifier","src":"1065:11:16"}],"id":5704,"name":"FunctionCall","src":"1029:48:16"}],"id":5705,"name":"EmitStatement","src":"1024:53:16"}],"id":5706,"name":"Block","src":"961:123:16"}],"id":5707,"name":"FunctionDefinition","src":"858:226:16"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":5835,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5817,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5708,"name":"ElementaryTypeName","src":"1751:7:16"}],"id":5709,"name":"VariableDeclaration","src":"1751:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":5817,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5710,"name":"ElementaryTypeName","src":"1765:6:16"}],"id":5711,"name":"VariableDeclaration","src":"1765:18:16"}],"id":5712,"name":"ParameterList","src":"1750:34:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":5817,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5713,"name":"ElementaryTypeName","src":"1808:7:16"}],"id":5714,"name":"VariableDeclaration","src":"1808:7:16"}],"id":5715,"name":"ParameterList","src":"1807:9:16"},{"children":[{"attributes":{"assignments":[5717]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":5816,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5716,"name":"ElementaryTypeName","src":"1827:7:16"}],"id":5717,"name":"VariableDeclaration","src":"1827:19:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5680,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5718,"name":"Identifier","src":"1849:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5709,"type":"bytes32","value":"node"},"id":5719,"name":"Identifier","src":"1860:4:16"}],"id":5720,"name":"IndexAccess","src":"1849:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5711,"type":"bytes4","value":"interfaceID"},"id":5721,"name":"Identifier","src":"1866:11:16"}],"id":5722,"name":"IndexAccess","src":"1849:29:16"}],"id":5723,"name":"VariableDeclarationStatement","src":"1827:51:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5717,"type":"address","value":"implementer"},"id":5724,"name":"Identifier","src":"1891:11:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5725,"name":"ElementaryTypeNameExpression","src":"1906:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5726,"name":"Literal","src":"1914:1:16"}],"id":5727,"name":"FunctionCall","src":"1906:10:16"}],"id":5728,"name":"BinaryOperation","src":"1891:25:16"},{"children":[{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5717,"type":"address","value":"implementer"},"id":5729,"name":"Identifier","src":"1939:11:16"}],"id":5730,"name":"Return","src":"1932:18:16"}],"id":5731,"name":"Block","src":"1918:43:16"}],"id":5732,"name":"IfStatement","src":"1888:73:16"},{"attributes":{"assignments":[5734]},"children":[{"attributes":{"constant":false,"name":"a","scope":5816,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5733,"name":"ElementaryTypeName","src":"1971:7:16"}],"id":5734,"name":"VariableDeclaration","src":"1971:9:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[5010,5065],"referencedDeclaration":5010,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":5735,"name":"Identifier","src":"1983:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5709,"type":"bytes32","value":"node"},"id":5736,"name":"Identifier","src":"1988:4:16"}],"id":5737,"name":"FunctionCall","src":"1983:10:16"}],"id":5738,"name":"VariableDeclarationStatement","src":"1971:22:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"address","value":"a"},"id":5739,"name":"Identifier","src":"2006:1:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5740,"name":"ElementaryTypeNameExpression","src":"2011:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5741,"name":"Literal","src":"2019:1:16"}],"id":5742,"name":"FunctionCall","src":"2011:10:16"}],"id":5743,"name":"BinaryOperation","src":"2006:15:16"},{"children":[{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5744,"name":"ElementaryTypeNameExpression","src":"2044:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5745,"name":"Literal","src":"2052:1:16"}],"id":5746,"name":"FunctionCall","src":"2044:10:16"}],"id":5747,"name":"Return","src":"2037:17:16"}],"id":5748,"name":"Block","src":"2023:42:16"}],"id":5749,"name":"IfStatement","src":"2003:62:16"},{"attributes":{"assignments":[5751,5753]},"children":[{"attributes":{"constant":false,"name":"success","scope":5816,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5750,"name":"ElementaryTypeName","src":"2076:4:16"}],"id":5751,"name":"VariableDeclaration","src":"2076:12:16"},{"attributes":{"constant":false,"name":"returnData","scope":5816,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5752,"name":"ElementaryTypeName","src":"2090:5:16"}],"id":5753,"name":"VariableDeclaration","src":"2090:23:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"address","value":"a"},"id":5754,"name":"Identifier","src":"2117:1:16"}],"id":5755,"name":"MemberAccess","src":"2117:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":5756,"name":"Identifier","src":"2130:3:16"}],"id":5757,"name":"MemberAccess","src":"2130:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5758,"name":"Literal","src":"2154:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5666,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5759,"name":"Identifier","src":"2183:17:16"}],"id":5760,"name":"FunctionCall","src":"2130:71:16"}],"id":5761,"name":"FunctionCall","src":"2117:85:16"}],"id":5762,"name":"VariableDeclarationStatement","src":"2075:127:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5751,"type":"bool","value":"success"},"id":5763,"name":"Identifier","src":"2216:7:16"}],"id":5764,"name":"UnaryOperation","src":"2215:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5765,"name":"Identifier","src":"2227:10:16"}],"id":5766,"name":"MemberAccess","src":"2227:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5767,"name":"Literal","src":"2247:2:16"}],"id":5768,"name":"BinaryOperation","src":"2227:22:16"}],"id":5769,"name":"BinaryOperation","src":"2215:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5770,"name":"Identifier","src":"2253:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5771,"name":"Literal","src":"2264:2:16"}],"id":5772,"name":"IndexAccess","src":"2253:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5773,"name":"Literal","src":"2271:1:16"}],"id":5774,"name":"BinaryOperation","src":"2253:19:16"}],"id":5775,"name":"BinaryOperation","src":"2215:57:16"},{"children":[{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5776,"name":"ElementaryTypeNameExpression","src":"2342:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5777,"name":"Literal","src":"2350:1:16"}],"id":5778,"name":"FunctionCall","src":"2342:10:16"}],"id":5779,"name":"Return","src":"2335:17:16"}],"id":5780,"name":"Block","src":"2274:89:16"}],"id":5781,"name":"IfStatement","src":"2212:151:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5751,"type":"bool","value":"success"},"id":5782,"name":"Identifier","src":"2374:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5783,"name":"Identifier","src":"2383:10:16"}],"id":5784,"name":"TupleExpression","src":"2373:21:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"address","value":"a"},"id":5785,"name":"Identifier","src":"2397:1:16"}],"id":5786,"name":"MemberAccess","src":"2397:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":5787,"name":"Identifier","src":"2410:3:16"}],"id":5788,"name":"MemberAccess","src":"2410:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5789,"name":"Literal","src":"2434:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5711,"type":"bytes4","value":"interfaceID"},"id":5790,"name":"Identifier","src":"2463:11:16"}],"id":5791,"name":"FunctionCall","src":"2410:65:16"}],"id":5792,"name":"FunctionCall","src":"2397:79:16"}],"id":5793,"name":"Assignment","src":"2373:103:16"}],"id":5794,"name":"ExpressionStatement","src":"2373:103:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5751,"type":"bool","value":"success"},"id":5795,"name":"Identifier","src":"2490:7:16"}],"id":5796,"name":"UnaryOperation","src":"2489:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5797,"name":"Identifier","src":"2501:10:16"}],"id":5798,"name":"MemberAccess","src":"2501:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5799,"name":"Literal","src":"2521:2:16"}],"id":5800,"name":"BinaryOperation","src":"2501:22:16"}],"id":5801,"name":"BinaryOperation","src":"2489:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5802,"name":"Identifier","src":"2527:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5803,"name":"Literal","src":"2538:2:16"}],"id":5804,"name":"IndexAccess","src":"2527:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5805,"name":"Literal","src":"2545:1:16"}],"id":5806,"name":"BinaryOperation","src":"2527:19:16"}],"id":5807,"name":"BinaryOperation","src":"2489:57:16"},{"children":[{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5808,"name":"ElementaryTypeNameExpression","src":"2628:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5809,"name":"Literal","src":"2636:1:16"}],"id":5810,"name":"FunctionCall","src":"2628:10:16"}],"id":5811,"name":"Return","src":"2621:17:16"}],"id":5812,"name":"Block","src":"2548:101:16"}],"id":5813,"name":"IfStatement","src":"2486:163:16"},{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"address","value":"a"},"id":5814,"name":"Identifier","src":"2666:1:16"}],"id":5815,"name":"Return","src":"2659:8:16"}],"id":5816,"name":"Block","src":"1817:857:16"}],"id":5817,"name":"FunctionDefinition","src":"1721:953:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5835,"stateMutability":"pure","superFunction":5086,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5834,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5818,"name":"ElementaryTypeName","src":"2707:6:16"}],"id":5819,"name":"VariableDeclaration","src":"2707:18:16"}],"id":5820,"name":"ParameterList","src":"2706:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":5834,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5821,"name":"ElementaryTypeName","src":"2747:4:16"}],"id":5822,"name":"VariableDeclaration","src":"2747:4:16"}],"id":5823,"name":"ParameterList","src":"2746:6:16"},{"children":[{"attributes":{"functionReturnParameters":5823},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5819,"type":"bytes4","value":"interfaceID"},"id":5824,"name":"Identifier","src":"2770:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5663,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":5825,"name":"Identifier","src":"2785:22:16"}],"id":5826,"name":"BinaryOperation","src":"2770:37:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5086,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10358,"type":"contract super InterfaceResolver","value":"super"},"id":5827,"name":"Identifier","src":"2811:5:16"}],"id":5828,"name":"MemberAccess","src":"2811:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5819,"type":"bytes4","value":"interfaceID"},"id":5829,"name":"Identifier","src":"2835:11:16"}],"id":5830,"name":"FunctionCall","src":"2811:36:16"}],"id":5831,"name":"BinaryOperation","src":"2770:77:16"}],"id":5832,"name":"Return","src":"2763:84:16"}],"id":5833,"name":"Block","src":"2753:101:16"}],"id":5834,"name":"FunctionDefinition","src":"2680:174:16"}],"id":5835,"name":"ContractDefinition","src":"85:2771:16"}],"id":5836,"name":"SourceUnit","src":"0:2857:16"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[5905]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5837,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5906,"symbolAliases":[null],"unitAlias":""},"id":5838,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5905,7136],"name":"NameResolver","scope":5906},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5839,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":5840,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":5905,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5841,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":5842,"name":"Literal","src":"144:10:17"}],"id":5843,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5849,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5844,"name":"ElementaryTypeName","src":"179:7:17"}],"id":5845,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5849,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5846,"name":"ElementaryTypeName","src":"201:6:17"}],"id":5847,"name":"VariableDeclaration","src":"201:11:17"}],"id":5848,"name":"ParameterList","src":"178:35:17"}],"id":5849,"name":"EventDefinition","src":"161:53:17"},{"attributes":{"constant":false,"name":"names","scope":5905,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5850,"name":"ElementaryTypeName","src":"228:7:17"},{"attributes":{"name":"string","type":"string"},"id":5851,"name":"ElementaryTypeName","src":"237:6:17"}],"id":5852,"name":"Mapping","src":"220:24:17"}],"id":5853,"name":"VariableDeclaration","src":"220:30:17"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":5905,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5875,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5854,"name":"ElementaryTypeName","src":"509:7:17"}],"id":5855,"name":"VariableDeclaration","src":"509:12:17"},{"attributes":{"constant":false,"name":"name","scope":5875,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5856,"name":"ElementaryTypeName","src":"523:6:17"}],"id":5857,"name":"VariableDeclaration","src":"523:20:17"}],"id":5858,"name":"ParameterList","src":"508:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":5862,"name":"ParameterList","src":"571:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5859,"name":"Identifier","src":"554:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5855,"type":"bytes32","value":"node"},"id":5860,"name":"Identifier","src":"565:4:17"}],"id":5861,"name":"ModifierInvocation","src":"554:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5853,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5863,"name":"Identifier","src":"581:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5855,"type":"bytes32","value":"node"},"id":5864,"name":"Identifier","src":"587:4:17"}],"id":5865,"name":"IndexAccess","src":"581:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"string calldata","value":"name"},"id":5866,"name":"Identifier","src":"595:4:17"}],"id":5867,"name":"Assignment","src":"581:18:17"}],"id":5868,"name":"ExpressionStatement","src":"581:18:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5849,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":5869,"name":"Identifier","src":"614:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5855,"type":"bytes32","value":"node"},"id":5870,"name":"Identifier","src":"626:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"string calldata","value":"name"},"id":5871,"name":"Identifier","src":"632:4:17"}],"id":5872,"name":"FunctionCall","src":"614:23:17"}],"id":5873,"name":"EmitStatement","src":"609:28:17"}],"id":5874,"name":"Block","src":"571:73:17"}],"id":5875,"name":"FunctionDefinition","src":"492:152:17"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":5905,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5887,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5876,"name":"ElementaryTypeName","src":"858:7:17"}],"id":5877,"name":"VariableDeclaration","src":"858:12:17"}],"id":5878,"name":"ParameterList","src":"857:14:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":5887,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5879,"name":"ElementaryTypeName","src":"895:6:17"}],"id":5880,"name":"VariableDeclaration","src":"895:13:17"}],"id":5881,"name":"ParameterList","src":"894:15:17"},{"children":[{"attributes":{"functionReturnParameters":5881},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5853,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5882,"name":"Identifier","src":"927:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5877,"type":"bytes32","value":"node"},"id":5883,"name":"Identifier","src":"933:4:17"}],"id":5884,"name":"IndexAccess","src":"927:11:17"}],"id":5885,"name":"Return","src":"920:18:17"}],"id":5886,"name":"Block","src":"910:35:17"}],"id":5887,"name":"FunctionDefinition","src":"844:101:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5905,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5904,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5888,"name":"ElementaryTypeName","src":"978:6:17"}],"id":5889,"name":"VariableDeclaration","src":"978:18:17"}],"id":5890,"name":"ParameterList","src":"977:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":5904,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5891,"name":"ElementaryTypeName","src":"1018:4:17"}],"id":5892,"name":"VariableDeclaration","src":"1018:4:17"}],"id":5893,"name":"ParameterList","src":"1017:6:17"},{"children":[{"attributes":{"functionReturnParameters":5893},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"bytes4","value":"interfaceID"},"id":5894,"name":"Identifier","src":"1041:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5843,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":5895,"name":"Identifier","src":"1056:17:17"}],"id":5896,"name":"BinaryOperation","src":"1041:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10360,"type":"contract super NameResolver","value":"super"},"id":5897,"name":"Identifier","src":"1077:5:17"}],"id":5898,"name":"MemberAccess","src":"1077:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"bytes4","value":"interfaceID"},"id":5899,"name":"Identifier","src":"1101:11:17"}],"id":5900,"name":"FunctionCall","src":"1077:36:17"}],"id":5901,"name":"BinaryOperation","src":"1041:72:17"}],"id":5902,"name":"Return","src":"1034:79:17"}],"id":5903,"name":"Block","src":"1024:96:17"}],"id":5904,"name":"FunctionDefinition","src":"951:169:17"}],"id":5905,"name":"ContractDefinition","src":"56:1066:17"}],"id":5906,"name":"SourceUnit","src":"0:1123:17"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[5996]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5907,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5997,"symbolAliases":[null],"unitAlias":""},"id":5908,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5996,7136],"name":"PubkeyResolver","scope":5997},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5909,"name":"UserDefinedTypeName","src":"83:12:18"}],"id":5910,"name":"InheritanceSpecifier","src":"83:12:18"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":5996,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5911,"name":"ElementaryTypeName","src":"102:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":5912,"name":"Literal","src":"148:10:18"}],"id":5913,"name":"VariableDeclaration","src":"102:56:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5921,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5914,"name":"ElementaryTypeName","src":"185:7:18"}],"id":5915,"name":"VariableDeclaration","src":"185:20:18"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":5921,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5916,"name":"ElementaryTypeName","src":"207:7:18"}],"id":5917,"name":"VariableDeclaration","src":"207:9:18"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":5921,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5918,"name":"ElementaryTypeName","src":"218:7:18"}],"id":5919,"name":"VariableDeclaration","src":"218:9:18"}],"id":5920,"name":"ParameterList","src":"184:44:18"}],"id":5921,"name":"EventDefinition","src":"165:64:18"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":5996,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":5926,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5922,"name":"ElementaryTypeName","src":"262:7:18"}],"id":5923,"name":"VariableDeclaration","src":"262:9:18"},{"attributes":{"constant":false,"name":"y","scope":5926,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5924,"name":"ElementaryTypeName","src":"281:7:18"}],"id":5925,"name":"VariableDeclaration","src":"281:9:18"}],"id":5926,"name":"StructDefinition","src":"235:62:18"},{"attributes":{"constant":false,"name":"pubkeys","scope":5996,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5927,"name":"ElementaryTypeName","src":"311:7:18"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":5926,"type":"struct PubkeyResolver.PublicKey"},"id":5928,"name":"UserDefinedTypeName","src":"320:9:18"}],"id":5929,"name":"Mapping","src":"303:27:18"}],"id":5930,"name":"VariableDeclaration","src":"303:35:18"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":5996,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5931,"name":"ElementaryTypeName","src":"631:7:18"}],"id":5932,"name":"VariableDeclaration","src":"631:12:18"},{"attributes":{"constant":false,"name":"x","scope":5958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5933,"name":"ElementaryTypeName","src":"645:7:18"}],"id":5934,"name":"VariableDeclaration","src":"645:9:18"},{"attributes":{"constant":false,"name":"y","scope":5958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5935,"name":"ElementaryTypeName","src":"656:7:18"}],"id":5936,"name":"VariableDeclaration","src":"656:9:18"}],"id":5937,"name":"ParameterList","src":"630:36:18"},{"attributes":{"parameters":[null]},"children":[],"id":5941,"name":"ParameterList","src":"693:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5938,"name":"Identifier","src":"676:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5932,"type":"bytes32","value":"node"},"id":5939,"name":"Identifier","src":"687:4:18"}],"id":5940,"name":"ModifierInvocation","src":"676:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5930,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5942,"name":"Identifier","src":"703:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5932,"type":"bytes32","value":"node"},"id":5943,"name":"Identifier","src":"711:4:18"}],"id":5944,"name":"IndexAccess","src":"703:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5926,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":5945,"name":"Identifier","src":"719:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5934,"type":"bytes32","value":"x"},"id":5946,"name":"Identifier","src":"729:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5936,"type":"bytes32","value":"y"},"id":5947,"name":"Identifier","src":"732:1:18"}],"id":5948,"name":"FunctionCall","src":"719:15:18"}],"id":5949,"name":"Assignment","src":"703:31:18"}],"id":5950,"name":"ExpressionStatement","src":"703:31:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5921,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":5951,"name":"Identifier","src":"749:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5932,"type":"bytes32","value":"node"},"id":5952,"name":"Identifier","src":"763:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5934,"type":"bytes32","value":"x"},"id":5953,"name":"Identifier","src":"769:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5936,"type":"bytes32","value":"y"},"id":5954,"name":"Identifier","src":"772:1:18"}],"id":5955,"name":"FunctionCall","src":"749:25:18"}],"id":5956,"name":"EmitStatement","src":"744:30:18"}],"id":5957,"name":"Block","src":"693:88:18"}],"id":5958,"name":"FunctionDefinition","src":"612:169:18"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":5996,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5978,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5959,"name":"ElementaryTypeName","src":"1039:7:18"}],"id":5960,"name":"VariableDeclaration","src":"1039:12:18"}],"id":5961,"name":"ParameterList","src":"1038:14:18"},{"children":[{"attributes":{"constant":false,"name":"x","scope":5978,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5962,"name":"ElementaryTypeName","src":"1076:7:18"}],"id":5963,"name":"VariableDeclaration","src":"1076:9:18"},{"attributes":{"constant":false,"name":"y","scope":5978,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5964,"name":"ElementaryTypeName","src":"1087:7:18"}],"id":5965,"name":"VariableDeclaration","src":"1087:9:18"}],"id":5966,"name":"ParameterList","src":"1075:22:18"},{"children":[{"attributes":{"functionReturnParameters":5966},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":5923,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5930,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5967,"name":"Identifier","src":"1116:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5960,"type":"bytes32","value":"node"},"id":5968,"name":"Identifier","src":"1124:4:18"}],"id":5969,"name":"IndexAccess","src":"1116:13:18"}],"id":5970,"name":"MemberAccess","src":"1116:15:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":5925,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5930,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5971,"name":"Identifier","src":"1133:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5960,"type":"bytes32","value":"node"},"id":5972,"name":"Identifier","src":"1141:4:18"}],"id":5973,"name":"IndexAccess","src":"1133:13:18"}],"id":5974,"name":"MemberAccess","src":"1133:15:18"}],"id":5975,"name":"TupleExpression","src":"1115:34:18"}],"id":5976,"name":"Return","src":"1108:41:18"}],"id":5977,"name":"Block","src":"1098:58:18"}],"id":5978,"name":"FunctionDefinition","src":"1023:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5996,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5995,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5979,"name":"ElementaryTypeName","src":"1189:6:18"}],"id":5980,"name":"VariableDeclaration","src":"1189:18:18"}],"id":5981,"name":"ParameterList","src":"1188:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":5995,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5982,"name":"ElementaryTypeName","src":"1229:4:18"}],"id":5983,"name":"VariableDeclaration","src":"1229:4:18"}],"id":5984,"name":"ParameterList","src":"1228:6:18"},{"children":[{"attributes":{"functionReturnParameters":5984},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5980,"type":"bytes4","value":"interfaceID"},"id":5985,"name":"Identifier","src":"1252:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5913,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":5986,"name":"Identifier","src":"1267:19:18"}],"id":5987,"name":"BinaryOperation","src":"1252:34:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10362,"type":"contract super PubkeyResolver","value":"super"},"id":5988,"name":"Identifier","src":"1290:5:18"}],"id":5989,"name":"MemberAccess","src":"1290:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5980,"type":"bytes4","value":"interfaceID"},"id":5990,"name":"Identifier","src":"1314:11:18"}],"id":5991,"name":"FunctionCall","src":"1290:36:18"}],"id":5992,"name":"BinaryOperation","src":"1252:74:18"}],"id":5993,"name":"Return","src":"1245:81:18"}],"id":5994,"name":"Block","src":"1235:98:18"}],"id":5995,"name":"FunctionDefinition","src":"1162:171:18"}],"id":5996,"name":"ContractDefinition","src":"56:1279:18"}],"id":5997,"name":"SourceUnit","src":"0:1336:18"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[6079]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5998,"name":"PragmaDirective","src":"0:23:19"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6080,"symbolAliases":[null],"unitAlias":""},"id":5999,"name":"ImportDirective","src":"25:29:19"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6079,7136],"name":"TextResolver","scope":6080},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":6000,"name":"UserDefinedTypeName","src":"81:12:19"}],"id":6001,"name":"InheritanceSpecifier","src":"81:12:19"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":6079,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6002,"name":"ElementaryTypeName","src":"100:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":6003,"name":"Literal","src":"144:10:19"}],"id":6004,"name":"VariableDeclaration","src":"100:54:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6012,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6005,"name":"ElementaryTypeName","src":"179:7:19"}],"id":6006,"name":"VariableDeclaration","src":"179:20:19"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":6012,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6007,"name":"ElementaryTypeName","src":"201:6:19"}],"id":6008,"name":"VariableDeclaration","src":"201:25:19"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":6012,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6009,"name":"ElementaryTypeName","src":"228:6:19"}],"id":6010,"name":"VariableDeclaration","src":"228:10:19"}],"id":6011,"name":"ParameterList","src":"178:61:19"}],"id":6012,"name":"EventDefinition","src":"161:79:19"},{"attributes":{"constant":false,"name":"texts","scope":6079,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6013,"name":"ElementaryTypeName","src":"254:7:19"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6014,"name":"ElementaryTypeName","src":"271:6:19"},{"attributes":{"name":"string","type":"string"},"id":6015,"name":"ElementaryTypeName","src":"279:6:19"}],"id":6016,"name":"Mapping","src":"263:23:19"}],"id":6017,"name":"Mapping","src":"246:41:19"}],"id":6018,"name":"VariableDeclaration","src":"246:47:19"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":6079,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6045,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6019,"name":"ElementaryTypeName","src":"590:7:19"}],"id":6020,"name":"VariableDeclaration","src":"590:12:19"},{"attributes":{"constant":false,"name":"key","scope":6045,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6021,"name":"ElementaryTypeName","src":"604:6:19"}],"id":6022,"name":"VariableDeclaration","src":"604:19:19"},{"attributes":{"constant":false,"name":"value","scope":6045,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6023,"name":"ElementaryTypeName","src":"625:6:19"}],"id":6024,"name":"VariableDeclaration","src":"625:21:19"}],"id":6025,"name":"ParameterList","src":"589:58:19"},{"attributes":{"parameters":[null]},"children":[],"id":6029,"name":"ParameterList","src":"674:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":6026,"name":"Identifier","src":"657:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"bytes32","value":"node"},"id":6027,"name":"Identifier","src":"668:4:19"}],"id":6028,"name":"ModifierInvocation","src":"657:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6018,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6030,"name":"Identifier","src":"684:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"bytes32","value":"node"},"id":6031,"name":"Identifier","src":"690:4:19"}],"id":6033,"name":"IndexAccess","src":"684:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"string calldata","value":"key"},"id":6032,"name":"Identifier","src":"696:3:19"}],"id":6034,"name":"IndexAccess","src":"684:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"string calldata","value":"value"},"id":6035,"name":"Identifier","src":"703:5:19"}],"id":6036,"name":"Assignment","src":"684:24:19"}],"id":6037,"name":"ExpressionStatement","src":"684:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":6038,"name":"Identifier","src":"723:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"bytes32","value":"node"},"id":6039,"name":"Identifier","src":"735:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"string calldata","value":"key"},"id":6040,"name":"Identifier","src":"741:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"string calldata","value":"key"},"id":6041,"name":"Identifier","src":"746:3:19"}],"id":6042,"name":"FunctionCall","src":"723:27:19"}],"id":6043,"name":"EmitStatement","src":"718:32:19"}],"id":6044,"name":"Block","src":"674:83:19"}],"id":6045,"name":"FunctionDefinition","src":"573:184:19"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":6079,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6061,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6046,"name":"ElementaryTypeName","src":"988:7:19"}],"id":6047,"name":"VariableDeclaration","src":"988:12:19"},{"attributes":{"constant":false,"name":"key","scope":6061,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6048,"name":"ElementaryTypeName","src":"1002:6:19"}],"id":6049,"name":"VariableDeclaration","src":"1002:19:19"}],"id":6050,"name":"ParameterList","src":"987:35:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6061,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6051,"name":"ElementaryTypeName","src":"1046:6:19"}],"id":6052,"name":"VariableDeclaration","src":"1046:13:19"}],"id":6053,"name":"ParameterList","src":"1045:15:19"},{"children":[{"attributes":{"functionReturnParameters":6053},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6018,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6054,"name":"Identifier","src":"1078:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6047,"type":"bytes32","value":"node"},"id":6055,"name":"Identifier","src":"1084:4:19"}],"id":6056,"name":"IndexAccess","src":"1078:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6049,"type":"string calldata","value":"key"},"id":6057,"name":"Identifier","src":"1090:3:19"}],"id":6058,"name":"IndexAccess","src":"1078:16:19"}],"id":6059,"name":"Return","src":"1071:23:19"}],"id":6060,"name":"Block","src":"1061:40:19"}],"id":6061,"name":"FunctionDefinition","src":"974:127:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6079,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6078,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6062,"name":"ElementaryTypeName","src":"1134:6:19"}],"id":6063,"name":"VariableDeclaration","src":"1134:18:19"}],"id":6064,"name":"ParameterList","src":"1133:20:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6078,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6065,"name":"ElementaryTypeName","src":"1174:4:19"}],"id":6066,"name":"VariableDeclaration","src":"1174:4:19"}],"id":6067,"name":"ParameterList","src":"1173:6:19"},{"children":[{"attributes":{"functionReturnParameters":6067},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6063,"type":"bytes4","value":"interfaceID"},"id":6068,"name":"Identifier","src":"1197:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6004,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":6069,"name":"Identifier","src":"1212:17:19"}],"id":6070,"name":"BinaryOperation","src":"1197:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10364,"type":"contract super TextResolver","value":"super"},"id":6071,"name":"Identifier","src":"1233:5:19"}],"id":6072,"name":"MemberAccess","src":"1233:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6063,"type":"bytes4","value":"interfaceID"},"id":6073,"name":"Identifier","src":"1257:11:19"}],"id":6074,"name":"FunctionCall","src":"1233:36:19"}],"id":6075,"name":"BinaryOperation","src":"1197:72:19"}],"id":6076,"name":"Return","src":"1190:79:19"}],"id":6077,"name":"Block","src":"1180:96:19"}],"id":6078,"name":"FunctionDefinition","src":"1107:169:19"}],"id":6079,"name":"ContractDefinition","src":"56:1222:19"}],"id":6080,"name":"SourceUnit","src":"0:1278:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[9460]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7756,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[9460],"name":"strings","scope":9461},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":9460,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":7761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7757,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":7758,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":7761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7759,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":7760,"name":"VariableDeclaration","src":"2663:9:20"}],"id":7761,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":7801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7762,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":7763,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":7801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7764,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":7765,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":7801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7766,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":7767,"name":"VariableDeclaration","src":"2722:8:20"}],"id":7768,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":7769,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7767,"type":"uint256","value":"len"},"id":7770,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7771,"name":"Literal","src":"2818:2:20"}],"id":7772,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7767,"type":"uint256","value":"len"},"id":7773,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7774,"name":"Literal","src":"2829:2:20"}],"id":7775,"name":"Assignment","src":"2822:9:20"}],"id":7776,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":7765,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":7763,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":7777,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7763,"type":"uint256","value":"dest"},"id":7778,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7779,"name":"Literal","src":"2933:2:20"}],"id":7780,"name":"Assignment","src":"2925:10:20"}],"id":7781,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7765,"type":"uint256","value":"src"},"id":7782,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7783,"name":"Literal","src":"2956:2:20"}],"id":7784,"name":"Assignment","src":"2949:9:20"}],"id":7785,"name":"ExpressionStatement","src":"2949:9:20"}],"id":7786,"name":"Block","src":"2833:136:20"}],"id":7787,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[7789]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7788,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":7789,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7790,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7791,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7767,"type":"uint256","value":"len"},"id":7792,"name":"Identifier","src":"3036:3:20"}],"id":7793,"name":"BinaryOperation","src":"3031:8:20"}],"id":7794,"name":"TupleExpression","src":"3030:10:20"}],"id":7795,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7796,"name":"Literal","src":"3043:1:20"}],"id":7797,"name":"BinaryOperation","src":"3023:21:20"}],"id":7798,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":7765,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":7789,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":7763,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":7763,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":7789,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":7799,"name":"InlineAssembly","src":"3054:173:20"}],"id":7800,"name":"Block","src":"2745:488:20"}],"id":7801,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7821,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7802,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":7803,"name":"VariableDeclaration","src":"3450:18:20"}],"id":7804,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7821,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7805,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":7806,"name":"VariableDeclaration","src":"3493:12:20"}],"id":7807,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[7809],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7820,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7808,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":7809,"name":"VariableDeclaration","src":"3517:8:20"}],"id":7810,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":7809,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":7803,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":7811,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":7807},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7761,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7812,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":7813,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"string memory","value":"self"},"id":7814,"name":"Identifier","src":"3618:4:20"}],"id":7815,"name":"FunctionCall","src":"3612:11:20"}],"id":7816,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7809,"type":"uint256","value":"ptr"},"id":7817,"name":"Identifier","src":"3632:3:20"}],"id":7818,"name":"FunctionCall","src":"3606:30:20"}],"id":7819,"name":"Return","src":"3599:37:20"}],"id":7820,"name":"Block","src":"3507:136:20"}],"id":7821,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7947,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7822,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":7823,"name":"VariableDeclaration","src":"3852:12:20"}],"id":7824,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7825,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":7826,"name":"VariableDeclaration","src":"3889:4:20"}],"id":7827,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[7829],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7946,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7828,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":7829,"name":"VariableDeclaration","src":"3905:8:20"}],"id":7830,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7831,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7832,"name":"Literal","src":"3935:1:20"}],"id":7833,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":7827},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7834,"name":"Literal","src":"3957:1:20"}],"id":7835,"name":"Return","src":"3950:8:20"}],"id":7836,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7837,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7838,"name":"Identifier","src":"3977:4:20"}],"id":7839,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":7840,"name":"Literal","src":"3985:34:20"}],"id":7841,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7842,"name":"Literal","src":"4023:1:20"}],"id":7843,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7844,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":7845,"name":"Literal","src":"4047:2:20"}],"id":7846,"name":"Assignment","src":"4040:9:20"}],"id":7847,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7848,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7849,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7850,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7851,"name":"Identifier","src":"4083:4:20"}],"id":7852,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":7853,"name":"Literal","src":"4091:35:20"}],"id":7854,"name":"BinaryOperation","src":"4078:48:20"}],"id":7855,"name":"FunctionCall","src":"4070:57:20"}],"id":7856,"name":"Assignment","src":"4063:64:20"}],"id":7857,"name":"ExpressionStatement","src":"4063:64:20"}],"id":7858,"name":"Block","src":"4026:112:20"}],"id":7859,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7860,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7861,"name":"Identifier","src":"4156:4:20"}],"id":7862,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":7863,"name":"Literal","src":"4164:18:20"}],"id":7864,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7865,"name":"Literal","src":"4186:1:20"}],"id":7866,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7867,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7868,"name":"Literal","src":"4210:1:20"}],"id":7869,"name":"Assignment","src":"4203:8:20"}],"id":7870,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7871,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7872,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7873,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7874,"name":"Identifier","src":"4245:4:20"}],"id":7875,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":7876,"name":"Literal","src":"4253:19:20"}],"id":7877,"name":"BinaryOperation","src":"4240:32:20"}],"id":7878,"name":"FunctionCall","src":"4232:41:20"}],"id":7879,"name":"Assignment","src":"4225:48:20"}],"id":7880,"name":"ExpressionStatement","src":"4225:48:20"}],"id":7881,"name":"Block","src":"4189:95:20"}],"id":7882,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7883,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7884,"name":"Identifier","src":"4302:4:20"}],"id":7885,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":7886,"name":"Literal","src":"4310:10:20"}],"id":7887,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7888,"name":"Literal","src":"4324:1:20"}],"id":7889,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7890,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7891,"name":"Literal","src":"4348:1:20"}],"id":7892,"name":"Assignment","src":"4341:8:20"}],"id":7893,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7894,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7895,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7896,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7897,"name":"Identifier","src":"4383:4:20"}],"id":7898,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":7899,"name":"Literal","src":"4391:11:20"}],"id":7900,"name":"BinaryOperation","src":"4378:24:20"}],"id":7901,"name":"FunctionCall","src":"4370:33:20"}],"id":7902,"name":"Assignment","src":"4363:40:20"}],"id":7903,"name":"ExpressionStatement","src":"4363:40:20"}],"id":7904,"name":"Block","src":"4327:87:20"}],"id":7905,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7906,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7907,"name":"Identifier","src":"4432:4:20"}],"id":7908,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":7909,"name":"Literal","src":"4440:6:20"}],"id":7910,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7911,"name":"Literal","src":"4450:1:20"}],"id":7912,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7913,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7914,"name":"Literal","src":"4474:1:20"}],"id":7915,"name":"Assignment","src":"4467:8:20"}],"id":7916,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7917,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7918,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7919,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7920,"name":"Identifier","src":"4509:4:20"}],"id":7921,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":7922,"name":"Literal","src":"4517:7:20"}],"id":7923,"name":"BinaryOperation","src":"4504:20:20"}],"id":7924,"name":"FunctionCall","src":"4496:29:20"}],"id":7925,"name":"Assignment","src":"4489:36:20"}],"id":7926,"name":"ExpressionStatement","src":"4489:36:20"}],"id":7927,"name":"Block","src":"4453:83:20"}],"id":7928,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7929,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7930,"name":"Identifier","src":"4554:4:20"}],"id":7931,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7932,"name":"Literal","src":"4562:4:20"}],"id":7933,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7934,"name":"Literal","src":"4570:1:20"}],"id":7935,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7936,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7937,"name":"Literal","src":"4594:1:20"}],"id":7938,"name":"Assignment","src":"4587:8:20"}],"id":7939,"name":"ExpressionStatement","src":"4587:8:20"}],"id":7940,"name":"Block","src":"4573:33:20"}],"id":7941,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":7827},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7942,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7943,"name":"Identifier","src":"4627:3:20"}],"id":7944,"name":"BinaryOperation","src":"4622:8:20"}],"id":7945,"name":"Return","src":"4615:15:20"}],"id":7946,"name":"Block","src":"3895:742:20"}],"id":7947,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7964,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7948,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":7949,"name":"VariableDeclaration","src":"4963:12:20"}],"id":7950,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7964,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7951,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":7952,"name":"VariableDeclaration","src":"5000:16:20"}],"id":7953,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":7949,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":7952,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":7954,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"struct strings.slice memory","value":"ret"},"id":7955,"name":"Identifier","src":"5286:3:20"}],"id":7957,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[7947,8097],"referencedDeclaration":7947,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":7958,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"bytes32","value":"self"},"id":7959,"name":"Identifier","src":"5301:4:20"}],"id":7960,"name":"FunctionCall","src":"5297:9:20"}],"id":7961,"name":"Assignment","src":"5286:20:20"}],"id":7962,"name":"ExpressionStatement","src":"5286:20:20"}],"id":7963,"name":"Block","src":"5018:295:20"}],"id":7964,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7979,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7965,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":7966,"name":"VariableDeclaration","src":"5528:17:20"}],"id":7967,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7979,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7968,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":7969,"name":"VariableDeclaration","src":"5570:12:20"}],"id":7970,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":7970},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7761,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7971,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"struct strings.slice memory","value":"self"},"id":7972,"name":"Identifier","src":"5607:4:20"}],"id":7973,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"struct strings.slice memory","value":"self"},"id":7974,"name":"Identifier","src":"5618:4:20"}],"id":7975,"name":"MemberAccess","src":"5618:9:20"}],"id":7976,"name":"FunctionCall","src":"5601:27:20"}],"id":7977,"name":"Return","src":"5594:34:20"}],"id":7978,"name":"Block","src":"5584:51:20"}],"id":7979,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8009,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7980,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":7981,"name":"VariableDeclaration","src":"5825:17:20"}],"id":7982,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8009,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7983,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":7984,"name":"VariableDeclaration","src":"5867:13:20"}],"id":7985,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[7987]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8008,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7986,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":7987,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7988,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":7989,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7981,"type":"struct strings.slice memory","value":"self"},"id":7990,"name":"Identifier","src":"5923:4:20"}],"id":7991,"name":"MemberAccess","src":"5923:9:20"}],"id":7992,"name":"FunctionCall","src":"5912:21:20"}],"id":7993,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[7995],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8008,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7994,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":7995,"name":"VariableDeclaration","src":"5943:11:20"}],"id":7996,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":7995,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":7987,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":7997,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7998,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7995,"type":"uint256","value":"retptr"},"id":7999,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7981,"type":"struct strings.slice memory","value":"self"},"id":8000,"name":"Identifier","src":"6024:4:20"}],"id":8001,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7981,"type":"struct strings.slice memory","value":"self"},"id":8002,"name":"Identifier","src":"6035:4:20"}],"id":8003,"name":"MemberAccess","src":"6035:9:20"}],"id":8004,"name":"FunctionCall","src":"6009:36:20"}],"id":8005,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":7985},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7987,"type":"string memory","value":"ret"},"id":8006,"name":"Identifier","src":"6062:3:20"}],"id":8007,"name":"Return","src":"6055:10:20"}],"id":8008,"name":"Block","src":"5882:190:20"}],"id":8009,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8097,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8010,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":8011,"name":"VariableDeclaration","src":"6476:17:20"}],"id":8012,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":8097,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8013,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":8014,"name":"VariableDeclaration","src":"6518:6:20"}],"id":8015,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[8017]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8096,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8016,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":8017,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8011,"type":"struct strings.slice memory","value":"self"},"id":8018,"name":"Identifier","src":"6622:4:20"}],"id":8019,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":8020,"name":"Literal","src":"6634:2:20"}],"id":8021,"name":"BinaryOperation","src":"6622:14:20"}],"id":8022,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[8024]},"children":[{"attributes":{"constant":false,"name":"end","scope":8096,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8023,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":8024,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8025,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8011,"type":"struct strings.slice memory","value":"self"},"id":8026,"name":"Identifier","src":"6663:4:20"}],"id":8027,"name":"MemberAccess","src":"6663:9:20"}],"id":8028,"name":"BinaryOperation","src":"6657:15:20"}],"id":8029,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8014,"type":"uint256","value":"l"},"id":8030,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8031,"name":"Literal","src":"6691:1:20"}],"id":8032,"name":"Assignment","src":"6687:5:20"}],"id":8033,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8034,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8024,"type":"uint256","value":"end"},"id":8035,"name":"Identifier","src":"6700:3:20"}],"id":8036,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8014,"type":"uint256","value":"l"},"id":8037,"name":"Identifier","src":"6705:1:20"}],"id":8038,"name":"UnaryOperation","src":"6705:3:20"}],"id":8039,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[8041],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":8094,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":8040,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":8041,"name":"VariableDeclaration","src":"6724:7:20"}],"id":8042,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":8041,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":8017,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":8043,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8044,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8045,"name":"Literal","src":"6805:4:20"}],"id":8046,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8047,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8048,"name":"Literal","src":"6836:1:20"}],"id":8049,"name":"Assignment","src":"6829:8:20"}],"id":8050,"name":"ExpressionStatement","src":"6829:8:20"}],"id":8051,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8052,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":8053,"name":"Literal","src":"6866:4:20"}],"id":8054,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8055,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8056,"name":"Literal","src":"6897:1:20"}],"id":8057,"name":"Assignment","src":"6890:8:20"}],"id":8058,"name":"ExpressionStatement","src":"6890:8:20"}],"id":8059,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8060,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":8061,"name":"Literal","src":"6927:4:20"}],"id":8062,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8063,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8064,"name":"Literal","src":"6958:1:20"}],"id":8065,"name":"Assignment","src":"6951:8:20"}],"id":8066,"name":"ExpressionStatement","src":"6951:8:20"}],"id":8067,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8068,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":8069,"name":"Literal","src":"6988:4:20"}],"id":8070,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8071,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8072,"name":"Literal","src":"7019:1:20"}],"id":8073,"name":"Assignment","src":"7012:8:20"}],"id":8074,"name":"ExpressionStatement","src":"7012:8:20"}],"id":8075,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8076,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":8077,"name":"Literal","src":"7049:4:20"}],"id":8078,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8079,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":8080,"name":"Literal","src":"7080:1:20"}],"id":8081,"name":"Assignment","src":"7073:8:20"}],"id":8082,"name":"ExpressionStatement","src":"7073:8:20"}],"id":8083,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8084,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":8085,"name":"Literal","src":"7127:1:20"}],"id":8086,"name":"Assignment","src":"7120:8:20"}],"id":8087,"name":"ExpressionStatement","src":"7120:8:20"}],"id":8088,"name":"Block","src":"7102:41:20"}],"id":8089,"name":"IfStatement","src":"7041:102:20"}],"id":8090,"name":"IfStatement","src":"6980:163:20"}],"id":8091,"name":"IfStatement","src":"6919:224:20"}],"id":8092,"name":"IfStatement","src":"6858:285:20"}],"id":8093,"name":"IfStatement","src":"6797:346:20"}],"id":8094,"name":"Block","src":"6710:443:20"}],"id":8095,"name":"ForStatement","src":"6682:471:20"}],"id":8096,"name":"Block","src":"6526:633:20"}],"id":8097,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8110,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8098,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":8099,"name":"VariableDeclaration","src":"7367:17:20"}],"id":8100,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8110,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8101,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":8102,"name":"VariableDeclaration","src":"7409:4:20"}],"id":8103,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":8103},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8099,"type":"struct strings.slice memory","value":"self"},"id":8104,"name":"Identifier","src":"7432:4:20"}],"id":8105,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8106,"name":"Literal","src":"7445:1:20"}],"id":8107,"name":"BinaryOperation","src":"7432:14:20"}],"id":8108,"name":"Return","src":"7425:21:20"}],"id":8109,"name":"Block","src":"7415:38:20"}],"id":8110,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8239,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8111,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":8112,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":8239,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8113,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":8114,"name":"VariableDeclaration","src":"7917:18:20"}],"id":8115,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8239,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":8116,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":8117,"name":"VariableDeclaration","src":"7960:3:20"}],"id":8118,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[8120]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":8238,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8119,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":8120,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8112,"type":"struct strings.slice memory","value":"self"},"id":8121,"name":"Identifier","src":"7991:4:20"}],"id":8122,"name":"MemberAccess","src":"7991:9:20"}],"id":8123,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"struct strings.slice memory","value":"other"},"id":8124,"name":"Identifier","src":"8014:5:20"}],"id":8125,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8112,"type":"struct strings.slice memory","value":"self"},"id":8126,"name":"Identifier","src":"8027:4:20"}],"id":8127,"name":"MemberAccess","src":"8027:9:20"}],"id":8128,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8120,"type":"uint256","value":"shortest"},"id":8129,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"struct strings.slice memory","value":"other"},"id":8130,"name":"Identifier","src":"8061:5:20"}],"id":8131,"name":"MemberAccess","src":"8061:10:20"}],"id":8132,"name":"Assignment","src":"8050:21:20"}],"id":8133,"name":"ExpressionStatement","src":"8050:21:20"}],"id":8134,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[8136]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8238,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8135,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":8136,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8112,"type":"struct strings.slice memory","value":"self"},"id":8137,"name":"Identifier","src":"8097:4:20"}],"id":8138,"name":"MemberAccess","src":"8097:9:20"}],"id":8139,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[8141]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":8238,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8140,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":8141,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"struct strings.slice memory","value":"other"},"id":8142,"name":"Identifier","src":"8132:5:20"}],"id":8143,"name":"MemberAccess","src":"8132:10:20"}],"id":8144,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[8146]},"children":[{"attributes":{"constant":false,"name":"idx","scope":8227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8145,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":8146,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8147,"name":"Literal","src":"8168:1:20"}],"id":8148,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8146,"type":"uint256","value":"idx"},"id":8149,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8120,"type":"uint256","value":"shortest"},"id":8150,"name":"Identifier","src":"8177:8:20"}],"id":8151,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8146,"type":"uint256","value":"idx"},"id":8152,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8153,"name":"Literal","src":"8194:2:20"}],"id":8154,"name":"Assignment","src":"8187:9:20"}],"id":8155,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[8157],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":8226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8156,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":8157,"name":"VariableDeclaration","src":"8212:6:20"}],"id":8158,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[8160],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":8226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8159,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":8160,"name":"VariableDeclaration","src":"8232:6:20"}],"id":8161,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":8157,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":8136,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":8160,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":8141,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":8162,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"uint256","value":"a"},"id":8163,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8160,"type":"uint256","value":"b"},"id":8164,"name":"Identifier","src":"8371:1:20"}],"id":8165,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[8167]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8166,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":8167,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":8168,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8169,"name":"Literal","src":"8477:1:20"}],"id":8170,"name":"UnaryOperation","src":"8476:2:20"}],"id":8171,"name":"FunctionCall","src":"8468:11:20"}],"id":8172,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8120,"type":"uint256","value":"shortest"},"id":8173,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8174,"name":"Literal","src":"8525:2:20"}],"id":8175,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8167,"type":"uint256","value":"mask"},"id":8176,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8177,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8178,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8179,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8120,"type":"uint256","value":"shortest"},"id":8180,"name":"Identifier","src":"8576:8:20"}],"id":8181,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8146,"type":"uint256","value":"idx"},"id":8182,"name":"Identifier","src":"8587:3:20"}],"id":8183,"name":"BinaryOperation","src":"8571:19:20"}],"id":8184,"name":"TupleExpression","src":"8570:21:20"}],"id":8185,"name":"BinaryOperation","src":"8566:25:20"}],"id":8186,"name":"TupleExpression","src":"8565:27:20"}],"id":8187,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8188,"name":"Literal","src":"8595:1:20"}],"id":8189,"name":"BinaryOperation","src":"8560:36:20"}],"id":8190,"name":"TupleExpression","src":"8559:38:20"}],"id":8191,"name":"UnaryOperation","src":"8558:39:20"}],"id":8192,"name":"Assignment","src":"8551:46:20"}],"id":8193,"name":"ExpressionStatement","src":"8551:46:20"}],"id":8194,"name":"Block","src":"8529:87:20"}],"id":8195,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[8197]},"children":[{"attributes":{"constant":false,"name":"diff","scope":8216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8196,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":8197,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"uint256","value":"a"},"id":8198,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8167,"type":"uint256","value":"mask"},"id":8199,"name":"Identifier","src":"8653:4:20"}],"id":8200,"name":"BinaryOperation","src":"8649:8:20"}],"id":8201,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8160,"type":"uint256","value":"b"},"id":8202,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8167,"type":"uint256","value":"mask"},"id":8203,"name":"Identifier","src":"8666:4:20"}],"id":8204,"name":"BinaryOperation","src":"8662:8:20"}],"id":8205,"name":"TupleExpression","src":"8661:10:20"}],"id":8206,"name":"BinaryOperation","src":"8648:23:20"}],"id":8207,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"uint256","value":"diff"},"id":8208,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8209,"name":"Literal","src":"8701:1:20"}],"id":8210,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":8118},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":8211,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"uint256","value":"diff"},"id":8212,"name":"Identifier","src":"8735:4:20"}],"id":8213,"name":"FunctionCall","src":"8731:9:20"}],"id":8214,"name":"Return","src":"8724:16:20"}],"id":8215,"name":"IfStatement","src":"8689:51:20"}],"id":8216,"name":"Block","src":"8374:381:20"}],"id":8217,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8136,"type":"uint256","value":"selfptr"},"id":8218,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8219,"name":"Literal","src":"8779:2:20"}],"id":8220,"name":"Assignment","src":"8768:13:20"}],"id":8221,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8141,"type":"uint256","value":"otherptr"},"id":8222,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8223,"name":"Literal","src":"8807:2:20"}],"id":8224,"name":"Assignment","src":"8795:14:20"}],"id":8225,"name":"ExpressionStatement","src":"8795:14:20"}],"id":8226,"name":"Block","src":"8198:622:20"}],"id":8227,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":8118},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":8228,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8112,"type":"struct strings.slice memory","value":"self"},"id":8229,"name":"Identifier","src":"8840:4:20"}],"id":8230,"name":"MemberAccess","src":"8840:9:20"}],"id":8231,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":8232,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"struct strings.slice memory","value":"other"},"id":8233,"name":"Identifier","src":"8857:5:20"}],"id":8234,"name":"MemberAccess","src":"8857:10:20"}],"id":8235,"name":"FunctionCall","src":"8853:15:20"}],"id":8236,"name":"BinaryOperation","src":"8836:32:20"}],"id":8237,"name":"Return","src":"8829:39:20"}],"id":8238,"name":"Block","src":"7965:910:20"}],"id":8239,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8256,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8240,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":8241,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":8256,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8242,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":8243,"name":"VariableDeclaration","src":"9154:18:20"}],"id":8244,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8245,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":8246,"name":"VariableDeclaration","src":"9197:4:20"}],"id":8247,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":8247},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8239,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":8248,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8241,"type":"struct strings.slice memory","value":"self"},"id":8249,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8243,"type":"struct strings.slice memory","value":"other"},"id":8250,"name":"Identifier","src":"9234:5:20"}],"id":8251,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8252,"name":"Literal","src":"9244:1:20"}],"id":8253,"name":"BinaryOperation","src":"9220:25:20"}],"id":8254,"name":"Return","src":"9213:32:20"}],"id":8255,"name":"Block","src":"9203:49:20"}],"id":8256,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8257,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":8258,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8259,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":8260,"name":"VariableDeclaration","src":"9582:17:20"}],"id":8261,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8262,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":8263,"name":"VariableDeclaration","src":"9624:12:20"}],"id":8264,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8265,"name":"Identifier","src":"9648:4:20"}],"id":8267,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8268,"name":"Identifier","src":"9660:4:20"}],"id":8269,"name":"MemberAccess","src":"9660:9:20"}],"id":8270,"name":"Assignment","src":"9648:21:20"}],"id":8271,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8272,"name":"Identifier","src":"9684:4:20"}],"id":8273,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8274,"name":"Literal","src":"9697:1:20"}],"id":8275,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8276,"name":"Identifier","src":"9714:4:20"}],"id":8278,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8279,"name":"Literal","src":"9726:1:20"}],"id":8280,"name":"Assignment","src":"9714:13:20"}],"id":8281,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":8264},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8282,"name":"Identifier","src":"9748:4:20"}],"id":8283,"name":"Return","src":"9741:11:20"}],"id":8284,"name":"Block","src":"9700:63:20"}],"id":8285,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[8287],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":8373,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8286,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":8287,"name":"VariableDeclaration","src":"9773:6:20"}],"id":8288,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[8290],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":8373,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8289,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":8290,"name":"VariableDeclaration","src":"9789:6:20"}],"id":8291,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":8290,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":8258,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":8292,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8290,"type":"uint256","value":"b"},"id":8293,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8294,"name":"Literal","src":"9949:4:20"}],"id":8295,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8296,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8297,"name":"Literal","src":"9973:1:20"}],"id":8298,"name":"Assignment","src":"9969:5:20"}],"id":8299,"name":"ExpressionStatement","src":"9969:5:20"}],"id":8300,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8290,"type":"uint256","value":"b"},"id":8301,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":8302,"name":"Literal","src":"9999:4:20"}],"id":8303,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8304,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8305,"name":"Literal","src":"10023:1:20"}],"id":8306,"name":"Assignment","src":"10019:5:20"}],"id":8307,"name":"ExpressionStatement","src":"10019:5:20"}],"id":8308,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8290,"type":"uint256","value":"b"},"id":8309,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":8310,"name":"Literal","src":"10049:4:20"}],"id":8311,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8312,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8313,"name":"Literal","src":"10073:1:20"}],"id":8314,"name":"Assignment","src":"10069:5:20"}],"id":8315,"name":"ExpressionStatement","src":"10069:5:20"}],"id":8316,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8317,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8318,"name":"Literal","src":"10109:1:20"}],"id":8319,"name":"Assignment","src":"10105:5:20"}],"id":8320,"name":"ExpressionStatement","src":"10105:5:20"}],"id":8321,"name":"Block","src":"10091:30:20"}],"id":8322,"name":"IfStatement","src":"10041:80:20"}],"id":8323,"name":"IfStatement","src":"9991:130:20"}],"id":8324,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8325,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8326,"name":"Identifier","src":"10181:4:20"}],"id":8327,"name":"MemberAccess","src":"10181:9:20"}],"id":8328,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8329,"name":"Identifier","src":"10206:4:20"}],"id":8331,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8332,"name":"Identifier","src":"10218:4:20"}],"id":8333,"name":"MemberAccess","src":"10218:9:20"}],"id":8334,"name":"Assignment","src":"10206:21:20"}],"id":8335,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8336,"name":"Identifier","src":"10241:4:20"}],"id":8338,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8339,"name":"Identifier","src":"10254:4:20"}],"id":8340,"name":"MemberAccess","src":"10254:9:20"}],"id":8341,"name":"Assignment","src":"10241:22:20"}],"id":8342,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8343,"name":"Identifier","src":"10277:4:20"}],"id":8345,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8346,"name":"Literal","src":"10289:1:20"}],"id":8347,"name":"Assignment","src":"10277:13:20"}],"id":8348,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":8264},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8349,"name":"Identifier","src":"10311:4:20"}],"id":8350,"name":"Return","src":"10304:11:20"}],"id":8351,"name":"Block","src":"10192:134:20"}],"id":8352,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8353,"name":"Identifier","src":"10336:4:20"}],"id":8355,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8356,"name":"Identifier","src":"10349:1:20"}],"id":8357,"name":"Assignment","src":"10336:14:20"}],"id":8358,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8359,"name":"Identifier","src":"10360:4:20"}],"id":8361,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8362,"name":"Identifier","src":"10373:1:20"}],"id":8363,"name":"Assignment","src":"10360:14:20"}],"id":8364,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8365,"name":"Identifier","src":"10384:4:20"}],"id":8367,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8368,"name":"Identifier","src":"10396:1:20"}],"id":8369,"name":"Assignment","src":"10384:13:20"}],"id":8370,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":8264},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8371,"name":"Identifier","src":"10414:4:20"}],"id":8372,"name":"Return","src":"10407:11:20"}],"id":8373,"name":"Block","src":"9638:787:20"}],"id":8374,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8387,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8375,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":8376,"name":"VariableDeclaration","src":"10683:17:20"}],"id":8377,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8387,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8378,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":8379,"name":"VariableDeclaration","src":"10725:16:20"}],"id":8380,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8374,8387],"referencedDeclaration":8374,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":8381,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8382,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8379,"type":"struct strings.slice memory","value":"ret"},"id":8383,"name":"Identifier","src":"10768:3:20"}],"id":8384,"name":"FunctionCall","src":"10753:19:20"}],"id":8385,"name":"ExpressionStatement","src":"10753:19:20"}],"id":8386,"name":"Block","src":"10743:36:20"}],"id":8387,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8534,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8388,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":8389,"name":"VariableDeclaration","src":"10988:17:20"}],"id":8390,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8534,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8391,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":8392,"name":"VariableDeclaration","src":"11030:8:20"}],"id":8393,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8389,"type":"struct strings.slice memory","value":"self"},"id":8394,"name":"Identifier","src":"11054:4:20"}],"id":8395,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8396,"name":"Literal","src":"11067:1:20"}],"id":8397,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":8393},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8398,"name":"Literal","src":"11091:1:20"}],"id":8399,"name":"Return","src":"11084:8:20"}],"id":8400,"name":"Block","src":"11070:33:20"}],"id":8401,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[8403],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":8533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8402,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":8403,"name":"VariableDeclaration","src":"11113:9:20"}],"id":8404,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[8406],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":8533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8405,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":8406,"name":"VariableDeclaration","src":"11132:11:20"}],"id":8407,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[8409]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":8533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8408,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":8409,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8410,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":8411,"name":"Literal","src":"11173:3:20"}],"id":8412,"name":"BinaryOperation","src":"11168:8:20"}],"id":8413,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":8403,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":8389,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":8414,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[8416]},"children":[{"attributes":{"constant":false,"name":"b","scope":8533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8415,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":8416,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8403,"type":"uint256","value":"word"},"id":8417,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8409,"type":"uint256","value":"divisor"},"id":8418,"name":"Identifier","src":"11303:7:20"}],"id":8419,"name":"BinaryOperation","src":"11296:14:20"}],"id":8420,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8421,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8422,"name":"Literal","src":"11328:4:20"}],"id":8423,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8424,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8425,"name":"Identifier","src":"11354:1:20"}],"id":8426,"name":"Assignment","src":"11348:7:20"}],"id":8427,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8428,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8429,"name":"Literal","src":"11378:1:20"}],"id":8430,"name":"Assignment","src":"11369:10:20"}],"id":8431,"name":"ExpressionStatement","src":"11369:10:20"}],"id":8432,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8433,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":8434,"name":"Literal","src":"11404:4:20"}],"id":8435,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8436,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8437,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":8438,"name":"Literal","src":"11434:4:20"}],"id":8439,"name":"BinaryOperation","src":"11430:8:20"}],"id":8440,"name":"Assignment","src":"11424:14:20"}],"id":8441,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8442,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8443,"name":"Literal","src":"11461:1:20"}],"id":8444,"name":"Assignment","src":"11452:10:20"}],"id":8445,"name":"ExpressionStatement","src":"11452:10:20"}],"id":8446,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8447,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":8448,"name":"Literal","src":"11487:4:20"}],"id":8449,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8450,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8451,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":8452,"name":"Literal","src":"11517:4:20"}],"id":8453,"name":"BinaryOperation","src":"11513:8:20"}],"id":8454,"name":"Assignment","src":"11507:14:20"}],"id":8455,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8456,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8457,"name":"Literal","src":"11544:1:20"}],"id":8458,"name":"Assignment","src":"11535:10:20"}],"id":8459,"name":"ExpressionStatement","src":"11535:10:20"}],"id":8460,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8461,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8462,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":8463,"name":"Literal","src":"11586:4:20"}],"id":8464,"name":"BinaryOperation","src":"11582:8:20"}],"id":8465,"name":"Assignment","src":"11576:14:20"}],"id":8466,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8467,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8468,"name":"Literal","src":"11613:1:20"}],"id":8469,"name":"Assignment","src":"11604:10:20"}],"id":8470,"name":"ExpressionStatement","src":"11604:10:20"}],"id":8471,"name":"Block","src":"11562:63:20"}],"id":8472,"name":"IfStatement","src":"11479:146:20"}],"id":8473,"name":"IfStatement","src":"11396:229:20"}],"id":8474,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8475,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8389,"type":"struct strings.slice memory","value":"self"},"id":8476,"name":"Identifier","src":"11690:4:20"}],"id":8477,"name":"MemberAccess","src":"11690:9:20"}],"id":8478,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":8393},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8479,"name":"Literal","src":"11722:1:20"}],"id":8480,"name":"Return","src":"11715:8:20"}],"id":8481,"name":"Block","src":"11701:33:20"}],"id":8482,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[8484]},"children":[{"attributes":{"constant":false,"name":"i","scope":8530,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8483,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":8484,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8485,"name":"Literal","src":"11758:1:20"}],"id":8486,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8484,"type":"uint256","value":"i"},"id":8487,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8488,"name":"Identifier","src":"11765:6:20"}],"id":8489,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8484,"type":"uint256","value":"i"},"id":8490,"name":"Identifier","src":"11773:1:20"}],"id":8491,"name":"UnaryOperation","src":"11773:3:20"}],"id":8492,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8409,"type":"uint256","value":"divisor"},"id":8493,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8409,"type":"uint256","value":"divisor"},"id":8494,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":8495,"name":"Literal","src":"11812:3:20"}],"id":8496,"name":"BinaryOperation","src":"11802:13:20"}],"id":8497,"name":"Assignment","src":"11792:23:20"}],"id":8498,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8499,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8403,"type":"uint256","value":"word"},"id":8500,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8409,"type":"uint256","value":"divisor"},"id":8501,"name":"Identifier","src":"11841:7:20"}],"id":8502,"name":"BinaryOperation","src":"11834:14:20"}],"id":8503,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":8504,"name":"Literal","src":"11852:4:20"}],"id":8505,"name":"BinaryOperation","src":"11833:23:20"}],"id":8506,"name":"Assignment","src":"11829:27:20"}],"id":8507,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8508,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":8509,"name":"Literal","src":"11878:4:20"}],"id":8510,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8511,"name":"Literal","src":"11886:4:20"}],"id":8512,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":8393},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8513,"name":"Literal","src":"11959:1:20"}],"id":8514,"name":"Return","src":"11952:8:20"}],"id":8515,"name":"Block","src":"11892:83:20"}],"id":8516,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8517,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8518,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":8519,"name":"Literal","src":"12001:2:20"}],"id":8520,"name":"BinaryOperation","src":"11995:8:20"}],"id":8521,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8522,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":8523,"name":"Literal","src":"12012:4:20"}],"id":8524,"name":"BinaryOperation","src":"12008:8:20"}],"id":8525,"name":"TupleExpression","src":"12007:10:20"}],"id":8526,"name":"BinaryOperation","src":"11994:23:20"}],"id":8527,"name":"Assignment","src":"11988:29:20"}],"id":8528,"name":"ExpressionStatement","src":"11988:29:20"}],"id":8529,"name":"Block","src":"11778:250:20"}],"id":8530,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":8393},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8531,"name":"Identifier","src":"12045:3:20"}],"id":8532,"name":"Return","src":"12038:10:20"}],"id":8533,"name":"Block","src":"11040:1015:20"}],"id":8534,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8543,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8535,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":8536,"name":"VariableDeclaration","src":"12222:17:20"}],"id":8537,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8543,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8538,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":8539,"name":"VariableDeclaration","src":"12264:11:20"}],"id":8540,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":8539,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":8536,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":8536,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":8541,"name":"InlineAssembly","src":"12287:84:20"}],"id":8542,"name":"Block","src":"12277:100:20"}],"id":8543,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8577,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8544,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":8545,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8577,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8546,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":8547,"name":"VariableDeclaration","src":"12665:19:20"}],"id":8548,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8577,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8549,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":8550,"name":"VariableDeclaration","src":"12709:4:20"}],"id":8551,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8545,"type":"struct strings.slice memory","value":"self"},"id":8552,"name":"Identifier","src":"12729:4:20"}],"id":8553,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"needle"},"id":8554,"name":"Identifier","src":"12741:6:20"}],"id":8555,"name":"MemberAccess","src":"12741:11:20"}],"id":8556,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":8551},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8557,"name":"Literal","src":"12775:5:20"}],"id":8558,"name":"Return","src":"12768:12:20"}],"id":8559,"name":"Block","src":"12754:37:20"}],"id":8560,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8545,"type":"struct strings.slice memory","value":"self"},"id":8561,"name":"Identifier","src":"12805:4:20"}],"id":8562,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"needle"},"id":8563,"name":"Identifier","src":"12818:6:20"}],"id":8564,"name":"MemberAccess","src":"12818:11:20"}],"id":8565,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":8551},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8566,"name":"Literal","src":"12852:4:20"}],"id":8567,"name":"Return","src":"12845:11:20"}],"id":8568,"name":"Block","src":"12831:36:20"}],"id":8569,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[8571],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":8576,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8570,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":8571,"name":"VariableDeclaration","src":"12877:10:20"}],"id":8572,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":8547,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":8545,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":8571,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":8547,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8573,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":8551},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8571,"type":"bool","value":"equal"},"id":8574,"name":"Identifier","src":"13159:5:20"}],"id":8575,"name":"Return","src":"13152:12:20"}],"id":8576,"name":"Block","src":"12715:456:20"}],"id":8577,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8627,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8578,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":8579,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8627,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8580,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":8581,"name":"VariableDeclaration","src":"13478:19:20"}],"id":8582,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8627,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8583,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":8584,"name":"VariableDeclaration","src":"13522:12:20"}],"id":8585,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8586,"name":"Identifier","src":"13550:4:20"}],"id":8587,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"needle"},"id":8588,"name":"Identifier","src":"13562:6:20"}],"id":8589,"name":"MemberAccess","src":"13562:11:20"}],"id":8590,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":8585},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8591,"name":"Identifier","src":"13596:4:20"}],"id":8592,"name":"Return","src":"13589:11:20"}],"id":8593,"name":"Block","src":"13575:36:20"}],"id":8594,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[8596]},"children":[{"attributes":{"constant":false,"name":"equal","scope":8626,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8595,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":8596,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8597,"name":"Literal","src":"13634:4:20"}],"id":8598,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8599,"name":"Identifier","src":"13652:4:20"}],"id":8600,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"needle"},"id":8601,"name":"Identifier","src":"13665:6:20"}],"id":8602,"name":"MemberAccess","src":"13665:11:20"}],"id":8603,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":8581,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":8579,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"equal":{"declaration":8596,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}},{"needle":{"declaration":8581,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8604,"name":"InlineAssembly","src":"13692:266:20"}],"id":8605,"name":"Block","src":"13678:290:20"}],"id":8606,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8596,"type":"bool","value":"equal"},"id":8607,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8608,"name":"Identifier","src":"14003:4:20"}],"id":8610,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"needle"},"id":8611,"name":"Identifier","src":"14016:6:20"}],"id":8612,"name":"MemberAccess","src":"14016:11:20"}],"id":8613,"name":"Assignment","src":"14003:24:20"}],"id":8614,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8615,"name":"Identifier","src":"14041:4:20"}],"id":8617,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"needle"},"id":8618,"name":"Identifier","src":"14054:6:20"}],"id":8619,"name":"MemberAccess","src":"14054:11:20"}],"id":8620,"name":"Assignment","src":"14041:24:20"}],"id":8621,"name":"ExpressionStatement","src":"14041:24:20"}],"id":8622,"name":"Block","src":"13989:87:20"}],"id":8623,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":8585},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8624,"name":"Identifier","src":"14093:4:20"}],"id":8625,"name":"Return","src":"14086:11:20"}],"id":8626,"name":"Block","src":"13536:568:20"}],"id":8627,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8671,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8628,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":8629,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8671,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8630,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":8631,"name":"VariableDeclaration","src":"14391:19:20"}],"id":8632,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8671,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8633,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":8634,"name":"VariableDeclaration","src":"14435:4:20"}],"id":8635,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"struct strings.slice memory","value":"self"},"id":8636,"name":"Identifier","src":"14455:4:20"}],"id":8637,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8631,"type":"struct strings.slice memory","value":"needle"},"id":8638,"name":"Identifier","src":"14467:6:20"}],"id":8639,"name":"MemberAccess","src":"14467:11:20"}],"id":8640,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":8635},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8641,"name":"Literal","src":"14501:5:20"}],"id":8642,"name":"Return","src":"14494:12:20"}],"id":8643,"name":"Block","src":"14480:37:20"}],"id":8644,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[8646]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8670,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8645,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":8646,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"struct strings.slice memory","value":"self"},"id":8647,"name":"Identifier","src":"14542:4:20"}],"id":8648,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"struct strings.slice memory","value":"self"},"id":8649,"name":"Identifier","src":"14554:4:20"}],"id":8650,"name":"MemberAccess","src":"14554:9:20"}],"id":8651,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8631,"type":"struct strings.slice memory","value":"needle"},"id":8652,"name":"Identifier","src":"14566:6:20"}],"id":8653,"name":"MemberAccess","src":"14566:11:20"}],"id":8654,"name":"BinaryOperation","src":"14542:35:20"}],"id":8655,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8646,"type":"uint256","value":"selfptr"},"id":8656,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8631,"type":"struct strings.slice memory","value":"needle"},"id":8657,"name":"Identifier","src":"14603:6:20"}],"id":8658,"name":"MemberAccess","src":"14603:11:20"}],"id":8659,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":8635},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8660,"name":"Literal","src":"14637:4:20"}],"id":8661,"name":"Return","src":"14630:11:20"}],"id":8662,"name":"Block","src":"14616:36:20"}],"id":8663,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[8665],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":8670,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8664,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":8665,"name":"VariableDeclaration","src":"14662:10:20"}],"id":8666,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":8631,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":8665,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":8631,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":8646,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8667,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":8635},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8665,"type":"bool","value":"equal"},"id":8668,"name":"Identifier","src":"14895:5:20"}],"id":8669,"name":"Return","src":"14888:12:20"}],"id":8670,"name":"Block","src":"14441:466:20"}],"id":8671,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8672,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":8673,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8674,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":8675,"name":"VariableDeclaration","src":"15205:19:20"}],"id":8676,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8677,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":8678,"name":"VariableDeclaration","src":"15249:12:20"}],"id":8679,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8680,"name":"Identifier","src":"15277:4:20"}],"id":8681,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"needle"},"id":8682,"name":"Identifier","src":"15289:6:20"}],"id":8683,"name":"MemberAccess","src":"15289:11:20"}],"id":8684,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":8679},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8685,"name":"Identifier","src":"15323:4:20"}],"id":8686,"name":"Return","src":"15316:11:20"}],"id":8687,"name":"Block","src":"15302:36:20"}],"id":8688,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[8690]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8689,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":8690,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8691,"name":"Identifier","src":"15363:4:20"}],"id":8692,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8693,"name":"Identifier","src":"15375:4:20"}],"id":8694,"name":"MemberAccess","src":"15375:9:20"}],"id":8695,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"needle"},"id":8696,"name":"Identifier","src":"15387:6:20"}],"id":8697,"name":"MemberAccess","src":"15387:11:20"}],"id":8698,"name":"BinaryOperation","src":"15363:35:20"}],"id":8699,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[8701]},"children":[{"attributes":{"constant":false,"name":"equal","scope":8723,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8700,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":8701,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8702,"name":"Literal","src":"15421:4:20"}],"id":8703,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8690,"type":"uint256","value":"selfptr"},"id":8704,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"needle"},"id":8705,"name":"Identifier","src":"15450:6:20"}],"id":8706,"name":"MemberAccess","src":"15450:11:20"}],"id":8707,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":8675,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":8701,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":8675,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":8690,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8708,"name":"InlineAssembly","src":"15477:212:20"}],"id":8709,"name":"Block","src":"15463:236:20"}],"id":8710,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8701,"type":"bool","value":"equal"},"id":8711,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8712,"name":"Identifier","src":"15734:4:20"}],"id":8714,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"needle"},"id":8715,"name":"Identifier","src":"15747:6:20"}],"id":8716,"name":"MemberAccess","src":"15747:11:20"}],"id":8717,"name":"Assignment","src":"15734:24:20"}],"id":8718,"name":"ExpressionStatement","src":"15734:24:20"}],"id":8719,"name":"Block","src":"15720:49:20"}],"id":8720,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":8679},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8721,"name":"Identifier","src":"15786:4:20"}],"id":8722,"name":"Return","src":"15779:11:20"}],"id":8723,"name":"Block","src":"15263:534:20"}],"id":8724,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8725,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":8726,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8727,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":8728,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8729,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":8730,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8731,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":8732,"name":"VariableDeclaration","src":"16015:14:20"}],"id":8733,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8734,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":8735,"name":"VariableDeclaration","src":"16053:4:20"}],"id":8736,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[8738]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8737,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":8738,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8728,"type":"uint256","value":"selfptr"},"id":8739,"name":"Identifier","src":"16080:7:20"}],"id":8740,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[8742],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":8844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8741,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":8742,"name":"VariableDeclaration","src":"16097:8:20"}],"id":8743,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8744,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8745,"name":"Identifier","src":"16133:7:20"}],"id":8746,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8747,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8748,"name":"Literal","src":"16173:2:20"}],"id":8749,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[8751]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8750,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":8751,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8752,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8753,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8754,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8755,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8756,"name":"Identifier","src":"16236:9:20"}],"id":8757,"name":"BinaryOperation","src":"16231:14:20"}],"id":8758,"name":"TupleExpression","src":"16230:16:20"}],"id":8759,"name":"BinaryOperation","src":"16226:20:20"}],"id":8760,"name":"TupleExpression","src":"16225:22:20"}],"id":8761,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8762,"name":"Literal","src":"16250:1:20"}],"id":8763,"name":"BinaryOperation","src":"16220:31:20"}],"id":8764,"name":"TupleExpression","src":"16219:33:20"}],"id":8765,"name":"UnaryOperation","src":"16218:34:20"}],"id":8766,"name":"FunctionCall","src":"16210:43:20"}],"id":8767,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[8769],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8768,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":8769,"name":"VariableDeclaration","src":"16272:18:20"}],"id":8770,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8769,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":8732,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":8751,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8771,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[8773]},"children":[{"attributes":{"constant":false,"name":"end","scope":8803,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8772,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":8773,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8728,"type":"uint256","value":"selfptr"},"id":8774,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8775,"name":"Identifier","src":"16401:7:20"}],"id":8776,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8777,"name":"Identifier","src":"16411:9:20"}],"id":8778,"name":"BinaryOperation","src":"16391:29:20"}],"id":8779,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[8781],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8780,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":8781,"name":"VariableDeclaration","src":"16438:15:20"}],"id":8782,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8781,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":8738,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":8751,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8783,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8781,"type":"bytes32","value":"ptrdata"},"id":8784,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8769,"type":"bytes32","value":"needledata"},"id":8785,"name":"Identifier","src":"16552:10:20"}],"id":8786,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8787,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8773,"type":"uint256","value":"end"},"id":8788,"name":"Identifier","src":"16597:3:20"}],"id":8789,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":8736},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8728,"type":"uint256","value":"selfptr"},"id":8790,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8791,"name":"Identifier","src":"16643:7:20"}],"id":8792,"name":"BinaryOperation","src":"16633:17:20"}],"id":8793,"name":"Return","src":"16626:24:20"}],"id":8794,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8795,"name":"Identifier","src":"16672:3:20"}],"id":8796,"name":"UnaryOperation","src":"16672:5:20"}],"id":8797,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8781,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":8738,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":8751,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8798,"name":"InlineAssembly","src":"16699:45:20"}],"id":8799,"name":"Block","src":"16564:198:20"}],"id":8800,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":8736},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8801,"name":"Identifier","src":"16786:3:20"}],"id":8802,"name":"Return","src":"16779:10:20"}],"id":8803,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[8805],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8836,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8804,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":8805,"name":"VariableDeclaration","src":"16877:12:20"}],"id":8806,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8805,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":8732,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":8730,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8807,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8742,"type":"uint256","value":"idx"},"id":8808,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8809,"name":"Literal","src":"16988:1:20"}],"id":8810,"name":"Assignment","src":"16982:7:20"}],"id":8811,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8742,"type":"uint256","value":"idx"},"id":8812,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8813,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8814,"name":"Identifier","src":"17008:9:20"}],"id":8815,"name":"BinaryOperation","src":"16998:19:20"}],"id":8816,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8742,"type":"uint256","value":"idx"},"id":8817,"name":"Identifier","src":"17019:3:20"}],"id":8818,"name":"UnaryOperation","src":"17019:5:20"}],"id":8819,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[8821],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8834,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8820,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":8821,"name":"VariableDeclaration","src":"17048:16:20"}],"id":8822,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8821,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":8738,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":8730,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8823,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8805,"type":"bytes32","value":"hash"},"id":8824,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8821,"type":"bytes32","value":"testHash"},"id":8825,"name":"Identifier","src":"17169:8:20"}],"id":8826,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":8736},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8827,"name":"Identifier","src":"17210:3:20"}],"id":8828,"name":"Return","src":"17203:10:20"}],"id":8829,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8830,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8831,"name":"Literal","src":"17242:1:20"}],"id":8832,"name":"Assignment","src":"17235:8:20"}],"id":8833,"name":"ExpressionStatement","src":"17235:8:20"}],"id":8834,"name":"Block","src":"17026:236:20"}],"id":8835,"name":"ForStatement","src":"16977:285:20"}],"id":8836,"name":"Block","src":"16810:466:20"}],"id":8837,"name":"IfStatement","src":"16156:1120:20"}],"id":8838,"name":"Block","src":"16142:1144:20"}],"id":8839,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":8736},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8728,"type":"uint256","value":"selfptr"},"id":8840,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8841,"name":"Identifier","src":"17312:7:20"}],"id":8842,"name":"BinaryOperation","src":"17302:17:20"}],"id":8843,"name":"Return","src":"17295:24:20"}],"id":8844,"name":"Block","src":"16059:1267:20"}],"id":8845,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8846,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":8847,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8848,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":8849,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8850,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":8851,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8852,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":8853,"name":"VariableDeclaration","src":"17541:14:20"}],"id":8854,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8855,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":8856,"name":"VariableDeclaration","src":"17579:4:20"}],"id":8857,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[8859],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8858,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":8859,"name":"VariableDeclaration","src":"17595:8:20"}],"id":8860,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8861,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8847,"type":"uint256","value":"selflen"},"id":8862,"name":"Identifier","src":"17631:7:20"}],"id":8863,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8864,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8865,"name":"Literal","src":"17671:2:20"}],"id":8866,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[8868]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8920,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8867,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":8868,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8869,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8870,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8871,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8872,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8873,"name":"Identifier","src":"17734:9:20"}],"id":8874,"name":"BinaryOperation","src":"17729:14:20"}],"id":8875,"name":"TupleExpression","src":"17728:16:20"}],"id":8876,"name":"BinaryOperation","src":"17724:20:20"}],"id":8877,"name":"TupleExpression","src":"17723:22:20"}],"id":8878,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8879,"name":"Literal","src":"17748:1:20"}],"id":8880,"name":"BinaryOperation","src":"17718:31:20"}],"id":8881,"name":"TupleExpression","src":"17717:33:20"}],"id":8882,"name":"UnaryOperation","src":"17716:34:20"}],"id":8883,"name":"FunctionCall","src":"17708:43:20"}],"id":8884,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[8886],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8920,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8885,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":8886,"name":"VariableDeclaration","src":"17770:18:20"}],"id":8887,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8886,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":8853,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":8868,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8888,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8889,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8890,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8847,"type":"uint256","value":"selflen"},"id":8891,"name":"Identifier","src":"17894:7:20"}],"id":8892,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8893,"name":"Identifier","src":"17904:9:20"}],"id":8894,"name":"BinaryOperation","src":"17884:29:20"}],"id":8895,"name":"Assignment","src":"17878:35:20"}],"id":8896,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[8898],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8920,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8897,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":8898,"name":"VariableDeclaration","src":"17931:15:20"}],"id":8899,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8898,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":8859,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":8868,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8900,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8898,"type":"bytes32","value":"ptrdata"},"id":8901,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8886,"type":"bytes32","value":"needledata"},"id":8902,"name":"Identifier","src":"18045:10:20"}],"id":8903,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8904,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8905,"name":"Identifier","src":"18090:7:20"}],"id":8906,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":8857},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8907,"name":"Identifier","src":"18130:7:20"}],"id":8908,"name":"Return","src":"18123:14:20"}],"id":8909,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8910,"name":"Identifier","src":"18159:3:20"}],"id":8911,"name":"UnaryOperation","src":"18159:5:20"}],"id":8912,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8898,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":8859,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":8868,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8913,"name":"InlineAssembly","src":"18186:45:20"}],"id":8914,"name":"Block","src":"18057:192:20"}],"id":8915,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":8857},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8916,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8917,"name":"Identifier","src":"18279:9:20"}],"id":8918,"name":"BinaryOperation","src":"18273:15:20"}],"id":8919,"name":"Return","src":"18266:22:20"}],"id":8920,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[8922],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8955,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8921,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":8922,"name":"VariableDeclaration","src":"18376:12:20"}],"id":8923,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8922,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":8853,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":8851,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8924,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8925,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8926,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8847,"type":"uint256","value":"selflen"},"id":8927,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8928,"name":"Identifier","src":"18502:9:20"}],"id":8929,"name":"BinaryOperation","src":"18492:19:20"}],"id":8930,"name":"TupleExpression","src":"18491:21:20"}],"id":8931,"name":"BinaryOperation","src":"18481:31:20"}],"id":8932,"name":"Assignment","src":"18475:37:20"}],"id":8933,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8934,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8935,"name":"Identifier","src":"18544:7:20"}],"id":8936,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[8938],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8953,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8937,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":8938,"name":"VariableDeclaration","src":"18575:16:20"}],"id":8939,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8938,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":8859,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":8851,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8940,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8922,"type":"bytes32","value":"hash"},"id":8941,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8938,"type":"bytes32","value":"testHash"},"id":8942,"name":"Identifier","src":"18696:8:20"}],"id":8943,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":8857},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8944,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8945,"name":"Identifier","src":"18743:9:20"}],"id":8946,"name":"BinaryOperation","src":"18737:15:20"}],"id":8947,"name":"Return","src":"18730:22:20"}],"id":8948,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8949,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8950,"name":"Literal","src":"18781:1:20"}],"id":8951,"name":"Assignment","src":"18774:8:20"}],"id":8952,"name":"ExpressionStatement","src":"18774:8:20"}],"id":8953,"name":"Block","src":"18553:248:20"}],"id":8954,"name":"WhileStatement","src":"18530:271:20"}],"id":8955,"name":"Block","src":"18309:506:20"}],"id":8956,"name":"IfStatement","src":"17654:1161:20"}],"id":8957,"name":"Block","src":"17640:1185:20"}],"id":8958,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":8857},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8959,"name":"Identifier","src":"18841:7:20"}],"id":8960,"name":"Return","src":"18834:14:20"}],"id":8961,"name":"Block","src":"17585:1270:20"}],"id":8962,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8963,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":8964,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8965,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":8966,"name":"VariableDeclaration","src":"19224:19:20"}],"id":8967,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8968,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":8969,"name":"VariableDeclaration","src":"19268:12:20"}],"id":8970,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[8972]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8971,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":8972,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8973,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8974,"name":"Identifier","src":"19311:4:20"}],"id":8975,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8976,"name":"Identifier","src":"19322:4:20"}],"id":8977,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8966,"type":"struct strings.slice memory","value":"needle"},"id":8978,"name":"Identifier","src":"19333:6:20"}],"id":8979,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8966,"type":"struct strings.slice memory","value":"needle"},"id":8980,"name":"Identifier","src":"19346:6:20"}],"id":8981,"name":"MemberAccess","src":"19346:11:20"}],"id":8982,"name":"FunctionCall","src":"19303:55:20"}],"id":8983,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8984,"name":"Identifier","src":"19368:4:20"}],"id":8986,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8972,"type":"uint256","value":"ptr"},"id":8987,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8988,"name":"Identifier","src":"19387:4:20"}],"id":8989,"name":"MemberAccess","src":"19387:9:20"}],"id":8990,"name":"BinaryOperation","src":"19381:15:20"}],"id":8991,"name":"Assignment","src":"19368:28:20"}],"id":8992,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8993,"name":"Identifier","src":"19406:4:20"}],"id":8995,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8972,"type":"uint256","value":"ptr"},"id":8996,"name":"Identifier","src":"19418:3:20"}],"id":8997,"name":"Assignment","src":"19406:15:20"}],"id":8998,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":8970},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8999,"name":"Identifier","src":"19438:4:20"}],"id":9000,"name":"Return","src":"19431:11:20"}],"id":9001,"name":"Block","src":"19282:167:20"}],"id":9002,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9036,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9003,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":9004,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9036,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9005,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":9006,"name":"VariableDeclaration","src":"19842:19:20"}],"id":9007,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9036,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9008,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":9009,"name":"VariableDeclaration","src":"19886:12:20"}],"id":9010,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[9012]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9035,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9011,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":9012,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8962,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":9013,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9014,"name":"Identifier","src":"19930:4:20"}],"id":9015,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9016,"name":"Identifier","src":"19941:4:20"}],"id":9017,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9006,"type":"struct strings.slice memory","value":"needle"},"id":9018,"name":"Identifier","src":"19952:6:20"}],"id":9019,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9006,"type":"struct strings.slice memory","value":"needle"},"id":9020,"name":"Identifier","src":"19965:6:20"}],"id":9021,"name":"MemberAccess","src":"19965:11:20"}],"id":9022,"name":"FunctionCall","src":"19921:56:20"}],"id":9023,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9024,"name":"Identifier","src":"19987:4:20"}],"id":9026,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9012,"type":"uint256","value":"ptr"},"id":9027,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9028,"name":"Identifier","src":"20005:4:20"}],"id":9029,"name":"MemberAccess","src":"20005:9:20"}],"id":9030,"name":"BinaryOperation","src":"19999:15:20"}],"id":9031,"name":"Assignment","src":"19987:27:20"}],"id":9032,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":9010},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9033,"name":"Identifier","src":"20031:4:20"}],"id":9034,"name":"Return","src":"20024:11:20"}],"id":9035,"name":"Block","src":"19900:142:20"}],"id":9036,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9114,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9037,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":9038,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9114,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9039,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":9040,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":9114,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9041,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":9042,"name":"VariableDeclaration","src":"20603:18:20"}],"id":9043,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9114,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9044,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":9045,"name":"VariableDeclaration","src":"20646:12:20"}],"id":9046,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[9048]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9113,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9047,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":9048,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":9049,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9050,"name":"Identifier","src":"20689:4:20"}],"id":9051,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9052,"name":"Identifier","src":"20700:4:20"}],"id":9053,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9040,"type":"struct strings.slice memory","value":"needle"},"id":9054,"name":"Identifier","src":"20711:6:20"}],"id":9055,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9040,"type":"struct strings.slice memory","value":"needle"},"id":9056,"name":"Identifier","src":"20724:6:20"}],"id":9057,"name":"MemberAccess","src":"20724:11:20"}],"id":9058,"name":"FunctionCall","src":"20681:55:20"}],"id":9059,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"struct strings.slice memory","value":"token"},"id":9060,"name":"Identifier","src":"20746:5:20"}],"id":9062,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9063,"name":"Identifier","src":"20759:4:20"}],"id":9064,"name":"MemberAccess","src":"20759:9:20"}],"id":9065,"name":"Assignment","src":"20746:22:20"}],"id":9066,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"struct strings.slice memory","value":"token"},"id":9067,"name":"Identifier","src":"20778:5:20"}],"id":9069,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9048,"type":"uint256","value":"ptr"},"id":9070,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9071,"name":"Identifier","src":"20797:4:20"}],"id":9072,"name":"MemberAccess","src":"20797:9:20"}],"id":9073,"name":"BinaryOperation","src":"20791:15:20"}],"id":9074,"name":"Assignment","src":"20778:28:20"}],"id":9075,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9048,"type":"uint256","value":"ptr"},"id":9076,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9077,"name":"Identifier","src":"20827:4:20"}],"id":9078,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9079,"name":"Identifier","src":"20839:4:20"}],"id":9080,"name":"MemberAccess","src":"20839:9:20"}],"id":9081,"name":"BinaryOperation","src":"20827:21:20"}],"id":9082,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9083,"name":"Identifier","src":"20889:4:20"}],"id":9085,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9086,"name":"Literal","src":"20901:1:20"}],"id":9087,"name":"Assignment","src":"20889:13:20"}],"id":9088,"name":"ExpressionStatement","src":"20889:13:20"}],"id":9089,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9090,"name":"Identifier","src":"20933:4:20"}],"id":9092,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"struct strings.slice memory","value":"token"},"id":9093,"name":"Identifier","src":"20946:5:20"}],"id":9094,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9040,"type":"struct strings.slice memory","value":"needle"},"id":9095,"name":"Identifier","src":"20959:6:20"}],"id":9096,"name":"MemberAccess","src":"20959:11:20"}],"id":9097,"name":"BinaryOperation","src":"20946:24:20"}],"id":9098,"name":"Assignment","src":"20933:37:20"}],"id":9099,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9100,"name":"Identifier","src":"20984:4:20"}],"id":9102,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9048,"type":"uint256","value":"ptr"},"id":9103,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9040,"type":"struct strings.slice memory","value":"needle"},"id":9104,"name":"Identifier","src":"21002:6:20"}],"id":9105,"name":"MemberAccess","src":"21002:11:20"}],"id":9106,"name":"BinaryOperation","src":"20996:17:20"}],"id":9107,"name":"Assignment","src":"20984:29:20"}],"id":9108,"name":"ExpressionStatement","src":"20984:29:20"}],"id":9109,"name":"Block","src":"20919:105:20"}],"id":9110,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":9046},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"struct strings.slice memory","value":"token"},"id":9111,"name":"Identifier","src":"21040:5:20"}],"id":9112,"name":"Return","src":"21033:12:20"}],"id":9113,"name":"Block","src":"20660:392:20"}],"id":9114,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9130,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9115,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":9116,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9130,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9117,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":9118,"name":"VariableDeclaration","src":"21557:19:20"}],"id":9119,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":9130,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9120,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":9121,"name":"VariableDeclaration","src":"21601:18:20"}],"id":9122,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[9114,9130],"referencedDeclaration":9114,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":9123,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9116,"type":"struct strings.slice memory","value":"self"},"id":9124,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9118,"type":"struct strings.slice memory","value":"needle"},"id":9125,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9121,"type":"struct strings.slice memory","value":"token"},"id":9126,"name":"Identifier","src":"21651:5:20"}],"id":9127,"name":"FunctionCall","src":"21631:26:20"}],"id":9128,"name":"ExpressionStatement","src":"21631:26:20"}],"id":9129,"name":"Block","src":"21621:43:20"}],"id":9130,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9199,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9131,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":9132,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9199,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9133,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":9134,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":9199,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9135,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":9136,"name":"VariableDeclaration","src":"22225:18:20"}],"id":9137,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9199,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9138,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":9139,"name":"VariableDeclaration","src":"22268:12:20"}],"id":9140,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[9142]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9141,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":9142,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8962,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":9143,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9144,"name":"Identifier","src":"22312:4:20"}],"id":9145,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9146,"name":"Identifier","src":"22323:4:20"}],"id":9147,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"struct strings.slice memory","value":"needle"},"id":9148,"name":"Identifier","src":"22334:6:20"}],"id":9149,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"struct strings.slice memory","value":"needle"},"id":9150,"name":"Identifier","src":"22347:6:20"}],"id":9151,"name":"MemberAccess","src":"22347:11:20"}],"id":9152,"name":"FunctionCall","src":"22303:56:20"}],"id":9153,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"struct strings.slice memory","value":"token"},"id":9154,"name":"Identifier","src":"22369:5:20"}],"id":9156,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint256","value":"ptr"},"id":9157,"name":"Identifier","src":"22382:3:20"}],"id":9158,"name":"Assignment","src":"22369:16:20"}],"id":9159,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"struct strings.slice memory","value":"token"},"id":9160,"name":"Identifier","src":"22395:5:20"}],"id":9162,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9163,"name":"Identifier","src":"22408:4:20"}],"id":9164,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint256","value":"ptr"},"id":9165,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9166,"name":"Identifier","src":"22427:4:20"}],"id":9167,"name":"MemberAccess","src":"22427:9:20"}],"id":9168,"name":"BinaryOperation","src":"22421:15:20"}],"id":9169,"name":"TupleExpression","src":"22420:17:20"}],"id":9170,"name":"BinaryOperation","src":"22408:29:20"}],"id":9171,"name":"Assignment","src":"22395:42:20"}],"id":9172,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint256","value":"ptr"},"id":9173,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9174,"name":"Identifier","src":"22458:4:20"}],"id":9175,"name":"MemberAccess","src":"22458:9:20"}],"id":9176,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9177,"name":"Identifier","src":"22508:4:20"}],"id":9179,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9180,"name":"Literal","src":"22520:1:20"}],"id":9181,"name":"Assignment","src":"22508:13:20"}],"id":9182,"name":"ExpressionStatement","src":"22508:13:20"}],"id":9183,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9184,"name":"Identifier","src":"22552:4:20"}],"id":9186,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"struct strings.slice memory","value":"token"},"id":9187,"name":"Identifier","src":"22565:5:20"}],"id":9188,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"struct strings.slice memory","value":"needle"},"id":9189,"name":"Identifier","src":"22578:6:20"}],"id":9190,"name":"MemberAccess","src":"22578:11:20"}],"id":9191,"name":"BinaryOperation","src":"22565:24:20"}],"id":9192,"name":"Assignment","src":"22552:37:20"}],"id":9193,"name":"ExpressionStatement","src":"22552:37:20"}],"id":9194,"name":"Block","src":"22538:62:20"}],"id":9195,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":9140},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"struct strings.slice memory","value":"token"},"id":9196,"name":"Identifier","src":"22616:5:20"}],"id":9197,"name":"Return","src":"22609:12:20"}],"id":9198,"name":"Block","src":"22282:346:20"}],"id":9199,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9215,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9200,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":9201,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9215,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9202,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":9203,"name":"VariableDeclaration","src":"23132:19:20"}],"id":9204,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":9215,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9205,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":9206,"name":"VariableDeclaration","src":"23176:18:20"}],"id":9207,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[9199,9215],"referencedDeclaration":9199,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":9208,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9201,"type":"struct strings.slice memory","value":"self"},"id":9209,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9203,"type":"struct strings.slice memory","value":"needle"},"id":9210,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9206,"type":"struct strings.slice memory","value":"token"},"id":9211,"name":"Identifier","src":"23227:5:20"}],"id":9212,"name":"FunctionCall","src":"23206:27:20"}],"id":9213,"name":"ExpressionStatement","src":"23206:27:20"}],"id":9214,"name":"Block","src":"23196:44:20"}],"id":9215,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9274,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9216,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":9217,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9274,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9218,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":9219,"name":"VariableDeclaration","src":"23543:19:20"}],"id":9220,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":9274,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9221,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":9222,"name":"VariableDeclaration","src":"23587:8:20"}],"id":9223,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[9225]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9273,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9224,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":9225,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":9226,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9227,"name":"Identifier","src":"23626:4:20"}],"id":9228,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9229,"name":"Identifier","src":"23637:4:20"}],"id":9230,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9231,"name":"Identifier","src":"23648:6:20"}],"id":9232,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9233,"name":"Identifier","src":"23661:6:20"}],"id":9234,"name":"MemberAccess","src":"23661:11:20"}],"id":9235,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9236,"name":"Identifier","src":"23676:6:20"}],"id":9237,"name":"MemberAccess","src":"23676:11:20"}],"id":9238,"name":"BinaryOperation","src":"23618:69:20"}],"id":9239,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"ptr"},"id":9240,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9241,"name":"Identifier","src":"23711:4:20"}],"id":9242,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9243,"name":"Identifier","src":"23723:4:20"}],"id":9244,"name":"MemberAccess","src":"23723:9:20"}],"id":9245,"name":"BinaryOperation","src":"23711:21:20"}],"id":9246,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"cnt"},"id":9247,"name":"Identifier","src":"23748:3:20"}],"id":9248,"name":"UnaryOperation","src":"23748:5:20"}],"id":9249,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"ptr"},"id":9250,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":9251,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9252,"name":"Identifier","src":"23781:4:20"}],"id":9253,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"ptr"},"id":9254,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9255,"name":"Identifier","src":"23800:4:20"}],"id":9256,"name":"MemberAccess","src":"23800:9:20"}],"id":9257,"name":"BinaryOperation","src":"23794:15:20"}],"id":9258,"name":"TupleExpression","src":"23793:17:20"}],"id":9259,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"ptr"},"id":9260,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9261,"name":"Identifier","src":"23817:6:20"}],"id":9262,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9263,"name":"Identifier","src":"23830:6:20"}],"id":9264,"name":"MemberAccess","src":"23830:11:20"}],"id":9265,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9266,"name":"Identifier","src":"23845:6:20"}],"id":9267,"name":"MemberAccess","src":"23845:11:20"}],"id":9268,"name":"BinaryOperation","src":"23773:83:20"}],"id":9269,"name":"Assignment","src":"23767:89:20"}],"id":9270,"name":"ExpressionStatement","src":"23767:89:20"}],"id":9271,"name":"Block","src":"23734:133:20"}],"id":9272,"name":"WhileStatement","src":"23697:170:20"}],"id":9273,"name":"Block","src":"23597:276:20"}],"id":9274,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9298,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9275,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":9276,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9298,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9277,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":9278,"name":"VariableDeclaration","src":"24149:19:20"}],"id":9279,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9298,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9280,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":9281,"name":"VariableDeclaration","src":"24193:4:20"}],"id":9282,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":9282},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8962,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":9283,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9276,"type":"struct strings.slice memory","value":"self"},"id":9284,"name":"Identifier","src":"24225:4:20"}],"id":9285,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9276,"type":"struct strings.slice memory","value":"self"},"id":9286,"name":"Identifier","src":"24236:4:20"}],"id":9287,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9278,"type":"struct strings.slice memory","value":"needle"},"id":9288,"name":"Identifier","src":"24247:6:20"}],"id":9289,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9278,"type":"struct strings.slice memory","value":"needle"},"id":9290,"name":"Identifier","src":"24260:6:20"}],"id":9291,"name":"MemberAccess","src":"24260:11:20"}],"id":9292,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9276,"type":"struct strings.slice memory","value":"self"},"id":9293,"name":"Identifier","src":"24276:4:20"}],"id":9294,"name":"MemberAccess","src":"24276:9:20"}],"id":9295,"name":"BinaryOperation","src":"24216:69:20"}],"id":9296,"name":"Return","src":"24209:76:20"}],"id":9297,"name":"Block","src":"24199:93:20"}],"id":9298,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9344,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9299,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":9300,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":9344,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9301,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":9302,"name":"VariableDeclaration","src":"24614:18:20"}],"id":9303,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9344,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9304,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":9305,"name":"VariableDeclaration","src":"24657:13:20"}],"id":9306,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[9308]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9343,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9307,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":9308,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":9309,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":9310,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9300,"type":"struct strings.slice memory","value":"self"},"id":9311,"name":"Identifier","src":"24713:4:20"}],"id":9312,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9302,"type":"struct strings.slice memory","value":"other"},"id":9313,"name":"Identifier","src":"24725:5:20"}],"id":9314,"name":"MemberAccess","src":"24725:10:20"}],"id":9315,"name":"BinaryOperation","src":"24713:22:20"}],"id":9316,"name":"FunctionCall","src":"24702:34:20"}],"id":9317,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[9319],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":9343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9318,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":9319,"name":"VariableDeclaration","src":"24746:11:20"}],"id":9320,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":9319,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":9308,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":9321,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9322,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9319,"type":"uint256","value":"retptr"},"id":9323,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9300,"type":"struct strings.slice memory","value":"self"},"id":9324,"name":"Identifier","src":"24826:4:20"}],"id":9325,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9300,"type":"struct strings.slice memory","value":"self"},"id":9326,"name":"Identifier","src":"24837:4:20"}],"id":9327,"name":"MemberAccess","src":"24837:9:20"}],"id":9328,"name":"FunctionCall","src":"24811:36:20"}],"id":9329,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9330,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9319,"type":"uint256","value":"retptr"},"id":9331,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9300,"type":"struct strings.slice memory","value":"self"},"id":9332,"name":"Identifier","src":"24873:4:20"}],"id":9333,"name":"MemberAccess","src":"24873:9:20"}],"id":9334,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9302,"type":"struct strings.slice memory","value":"other"},"id":9335,"name":"Identifier","src":"24884:5:20"}],"id":9336,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9302,"type":"struct strings.slice memory","value":"other"},"id":9337,"name":"Identifier","src":"24896:5:20"}],"id":9338,"name":"MemberAccess","src":"24896:10:20"}],"id":9339,"name":"FunctionCall","src":"24857:50:20"}],"id":9340,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":9306},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9308,"type":"string memory","value":"ret"},"id":9341,"name":"Identifier","src":"24924:3:20"}],"id":9342,"name":"Return","src":"24917:10:20"}],"id":9343,"name":"Block","src":"24672:262:20"}],"id":9344,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9459,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9345,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":9346,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":9459,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9347,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":9348,"name":"ArrayTypeName","src":"25303:7:20"}],"id":9349,"name":"VariableDeclaration","src":"25303:20:20"}],"id":9350,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9459,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9351,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":9352,"name":"VariableDeclaration","src":"25348:13:20"}],"id":9353,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9354,"name":"Identifier","src":"25377:5:20"}],"id":9355,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9356,"name":"Literal","src":"25393:1:20"}],"id":9357,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":9353},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":9358,"name":"Literal","src":"25415:2:20"}],"id":9359,"name":"Return","src":"25408:9:20"}],"id":9360,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[9362]},"children":[{"attributes":{"constant":false,"name":"length","scope":9458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9361,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":9362,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9346,"type":"struct strings.slice memory","value":"self"},"id":9363,"name":"Identifier","src":"25442:4:20"}],"id":9364,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9365,"name":"Identifier","src":"25455:5:20"}],"id":9366,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9367,"name":"Literal","src":"25470:1:20"}],"id":9368,"name":"BinaryOperation","src":"25455:16:20"}],"id":9369,"name":"TupleExpression","src":"25454:18:20"}],"id":9370,"name":"BinaryOperation","src":"25442:30:20"}],"id":9371,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[9373]},"children":[{"attributes":{"constant":false,"name":"i","scope":9391,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9372,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":9373,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9374,"name":"Literal","src":"25496:1:20"}],"id":9375,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9373,"type":"uint256","value":"i"},"id":9376,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9377,"name":"Identifier","src":"25503:5:20"}],"id":9378,"name":"MemberAccess","src":"25503:12:20"}],"id":9379,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9373,"type":"uint256","value":"i"},"id":9380,"name":"Identifier","src":"25517:1:20"}],"id":9381,"name":"UnaryOperation","src":"25517:3:20"}],"id":9382,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9362,"type":"uint256","value":"length"},"id":9383,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9384,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9373,"type":"uint256","value":"i"},"id":9385,"name":"Identifier","src":"25552:1:20"}],"id":9386,"name":"IndexAccess","src":"25546:8:20"}],"id":9387,"name":"MemberAccess","src":"25546:13:20"}],"id":9388,"name":"Assignment","src":"25536:23:20"}],"id":9389,"name":"ExpressionStatement","src":"25536:23:20"}],"id":9390,"name":"Block","src":"25522:48:20"}],"id":9391,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[9393]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9458,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9392,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":9393,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":9394,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":9395,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9362,"type":"uint256","value":"length"},"id":9396,"name":"Identifier","src":"25611:6:20"}],"id":9397,"name":"FunctionCall","src":"25600:18:20"}],"id":9398,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[9400],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":9458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9399,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":9400,"name":"VariableDeclaration","src":"25628:11:20"}],"id":9401,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":9400,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":9393,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":9402,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[9404]},"children":[{"attributes":{"constant":false,"name":"i","scope":9455,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9403,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":9404,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9405,"name":"Literal","src":"25708:1:20"}],"id":9406,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9407,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9408,"name":"Identifier","src":"25715:5:20"}],"id":9409,"name":"MemberAccess","src":"25715:12:20"}],"id":9410,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9411,"name":"Identifier","src":"25729:1:20"}],"id":9412,"name":"UnaryOperation","src":"25729:3:20"}],"id":9413,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9414,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9400,"type":"uint256","value":"retptr"},"id":9415,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9416,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9417,"name":"Identifier","src":"25769:1:20"}],"id":9418,"name":"IndexAccess","src":"25763:8:20"}],"id":9419,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9420,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9421,"name":"Identifier","src":"25784:1:20"}],"id":9422,"name":"IndexAccess","src":"25778:8:20"}],"id":9423,"name":"MemberAccess","src":"25778:13:20"}],"id":9424,"name":"FunctionCall","src":"25748:44:20"}],"id":9425,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9400,"type":"uint256","value":"retptr"},"id":9426,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9427,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9428,"name":"Identifier","src":"25822:1:20"}],"id":9429,"name":"IndexAccess","src":"25816:8:20"}],"id":9430,"name":"MemberAccess","src":"25816:13:20"}],"id":9431,"name":"Assignment","src":"25806:23:20"}],"id":9432,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9433,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9434,"name":"Identifier","src":"25851:5:20"}],"id":9435,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9436,"name":"Literal","src":"25866:1:20"}],"id":9437,"name":"BinaryOperation","src":"25851:16:20"}],"id":9438,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9439,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9400,"type":"uint256","value":"retptr"},"id":9440,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9346,"type":"struct strings.slice memory","value":"self"},"id":9441,"name":"Identifier","src":"25902:4:20"}],"id":9442,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9346,"type":"struct strings.slice memory","value":"self"},"id":9443,"name":"Identifier","src":"25913:4:20"}],"id":9444,"name":"MemberAccess","src":"25913:9:20"}],"id":9445,"name":"FunctionCall","src":"25887:36:20"}],"id":9446,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9400,"type":"uint256","value":"retptr"},"id":9447,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9346,"type":"struct strings.slice memory","value":"self"},"id":9448,"name":"Identifier","src":"25951:4:20"}],"id":9449,"name":"MemberAccess","src":"25951:9:20"}],"id":9450,"name":"Assignment","src":"25941:19:20"}],"id":9451,"name":"ExpressionStatement","src":"25941:19:20"}],"id":9452,"name":"Block","src":"25869:106:20"}],"id":9453,"name":"IfStatement","src":"25843:132:20"}],"id":9454,"name":"Block","src":"25734:251:20"}],"id":9455,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":9353},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9393,"type":"string memory","value":"ret"},"id":9456,"name":"Identifier","src":"26002:3:20"}],"id":9457,"name":"Return","src":"25995:10:20"}],"id":9458,"name":"Block","src":"25363:649:20"}],"id":9459,"name":"FunctionDefinition","src":"25270:742:20"}],"id":9460,"name":"ContractDefinition","src":"2599:23415:20"}],"id":9461,"name":"SourceUnit","src":"2574:23441:20"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[3834]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3804,"name":"PragmaDirective","src":"771:24:21"},{"attributes":{"SourceUnit":3451,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3835,"symbolAliases":[null],"unitAlias":""},"id":3805,"name":"ImportDirective","src":"797:32:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[3834],"name":"Balanceable","scope":3835},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":3834,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3833,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3806,"name":"ElementaryTypeName","src":"1225:7:21"}],"id":3807,"name":"VariableDeclaration","src":"1225:16:21"},{"attributes":{"constant":false,"name":"_asset","scope":3833,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3808,"name":"ElementaryTypeName","src":"1243:7:21"}],"id":3809,"name":"VariableDeclaration","src":"1243:14:21"}],"id":3810,"name":"ParameterList","src":"1224:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":3833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3811,"name":"ElementaryTypeName","src":"1282:7:21"}],"id":3812,"name":"VariableDeclaration","src":"1282:7:21"}],"id":3813,"name":"ParameterList","src":"1281:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3809,"type":"address","value":"_asset"},"id":3814,"name":"Identifier","src":"1305:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3815,"name":"ElementaryTypeNameExpression","src":"1315:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3816,"name":"Literal","src":"1323:1:21"}],"id":3817,"name":"FunctionCall","src":"1315:10:21"}],"id":3818,"name":"BinaryOperation","src":"1305:20:21"},{"children":[{"attributes":{"functionReturnParameters":3813},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":3424,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":3819,"name":"Identifier","src":"1348:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3809,"type":"address","value":"_asset"},"id":3820,"name":"Identifier","src":"1354:6:21"}],"id":3821,"name":"FunctionCall","src":"1348:13:21"}],"id":3822,"name":"MemberAccess","src":"1348:23:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3807,"type":"address","value":"_address"},"id":3823,"name":"Identifier","src":"1372:8:21"}],"id":3824,"name":"FunctionCall","src":"1348:33:21"}],"id":3825,"name":"Return","src":"1341:40:21"}],"id":3826,"name":"Block","src":"1327:65:21"},{"children":[{"attributes":{"functionReturnParameters":3813},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3807,"type":"address","value":"_address"},"id":3827,"name":"Identifier","src":"1419:8:21"}],"id":3828,"name":"MemberAccess","src":"1419:16:21"}],"id":3829,"name":"Return","src":"1412:23:21"}],"id":3830,"name":"Block","src":"1398:48:21"}],"id":3831,"name":"IfStatement","src":"1301:145:21"}],"id":3832,"name":"Block","src":"1291:161:21"}],"id":3833,"name":"FunctionDefinition","src":"1207:245:21"}],"id":3834,"name":"ContractDefinition","src":"898:556:21"}],"id":3835,"name":"SourceUnit","src":"771:684:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[9571]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":9462,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":9572,"symbolAliases":[null],"unitAlias":""},"id":9463,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[9571],"name":"BytesUtils","scope":9572},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":9464,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":9465,"name":"ElementaryTypeName","src":"955:7:22"}],"id":9466,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":9571,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9502,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9467,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":9468,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9502,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9469,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":9470,"name":"VariableDeclaration","src":"1125:13:22"}],"id":9471,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9502,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9472,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":9473,"name":"VariableDeclaration","src":"1163:7:22"}],"id":9474,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":9475,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9468,"type":"bytes memory","value":"_bts"},"id":9476,"name":"Identifier","src":"1190:4:22"}],"id":9477,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9470,"type":"uint256","value":"_from"},"id":9478,"name":"Identifier","src":"1205:5:22"}],"id":9479,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9480,"name":"Literal","src":"1215:2:22"}],"id":9481,"name":"FunctionCall","src":"1205:13:22"}],"id":9482,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9483,"name":"Literal","src":"1220:22:22"}],"id":9484,"name":"FunctionCall","src":"1182:61:22"}],"id":9485,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[9487],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":9501,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9486,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":9487,"name":"VariableDeclaration","src":"1254:24:22"}],"id":9488,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[9490]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9501,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9489,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":9490,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9470,"type":"uint256","value":"_from"},"id":9491,"name":"Identifier","src":"1308:5:22"}],"id":9492,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9493,"name":"Literal","src":"1318:2:22"}],"id":9494,"name":"FunctionCall","src":"1308:13:22"}],"id":9495,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":9487,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":9468,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":9490,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":9496,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":9474},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9497,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9487,"type":"bytes20","value":"convertedAddress"},"id":9498,"name":"Identifier","src":"1478:16:22"}],"id":9499,"name":"FunctionCall","src":"1470:25:22"}],"id":9500,"name":"Return","src":"1463:32:22"}],"id":9501,"name":"Block","src":"1172:330:22"}],"id":9502,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":9571,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9536,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9503,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":9504,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9536,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9505,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":9506,"name":"VariableDeclaration","src":"1670:13:22"}],"id":9507,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9536,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9508,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":9509,"name":"VariableDeclaration","src":"1708:6:22"}],"id":9510,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":9511,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9504,"type":"bytes memory","value":"_bts"},"id":9512,"name":"Identifier","src":"1734:4:22"}],"id":9513,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9506,"type":"uint256","value":"_from"},"id":9514,"name":"Identifier","src":"1749:5:22"}],"id":9515,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9516,"name":"Literal","src":"1759:1:22"}],"id":9517,"name":"FunctionCall","src":"1749:12:22"}],"id":9518,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9519,"name":"Literal","src":"1763:22:22"}],"id":9520,"name":"FunctionCall","src":"1726:60:22"}],"id":9521,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[9523],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":9535,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9522,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":9523,"name":"VariableDeclaration","src":"1797:19:22"}],"id":9524,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[9526]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9535,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9525,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":9526,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9506,"type":"uint256","value":"_from"},"id":9527,"name":"Identifier","src":"1846:5:22"}],"id":9528,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9529,"name":"Literal","src":"1856:2:22"}],"id":9530,"name":"FunctionCall","src":"1846:13:22"}],"id":9531,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":9523,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":9504,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":9526,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":9532,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":9510},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9523,"type":"bytes4","value":"slicedBytes4"},"id":9533,"name":"Identifier","src":"2004:12:22"}],"id":9534,"name":"Return","src":"1997:19:22"}],"id":9535,"name":"Block","src":"1716:307:22"}],"id":9536,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":9571,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9570,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9537,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":9538,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9570,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9539,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":9540,"name":"VariableDeclaration","src":"2417:13:22"}],"id":9541,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9570,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9542,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":9543,"name":"VariableDeclaration","src":"2455:7:22"}],"id":9544,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":9545,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9538,"type":"bytes memory","value":"_bts"},"id":9546,"name":"Identifier","src":"2482:4:22"}],"id":9547,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9540,"type":"uint256","value":"_from"},"id":9548,"name":"Identifier","src":"2497:5:22"}],"id":9549,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9550,"name":"Literal","src":"2507:2:22"}],"id":9551,"name":"FunctionCall","src":"2497:13:22"}],"id":9552,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9553,"name":"Literal","src":"2512:22:22"}],"id":9554,"name":"FunctionCall","src":"2474:61:22"}],"id":9555,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[9557],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":9569,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9556,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":9557,"name":"VariableDeclaration","src":"2546:24:22"}],"id":9558,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[9560]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9569,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9559,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":9560,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9540,"type":"uint256","value":"_from"},"id":9561,"name":"Identifier","src":"2600:5:22"}],"id":9562,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9563,"name":"Literal","src":"2610:2:22"}],"id":9564,"name":"FunctionCall","src":"2600:13:22"}],"id":9565,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"_bts":{"declaration":9538,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":9560,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}},{"convertedUint256":{"declaration":9557,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":9566,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":9544},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9557,"type":"uint256","value":"convertedUint256"},"id":9567,"name":"Identifier","src":"2762:16:22"}],"id":9568,"name":"Return","src":"2755:23:22"}],"id":9569,"name":"Block","src":"2464:321:22"}],"id":9570,"name":"FunctionDefinition","src":"2373:412:22"}],"id":9571,"name":"ContractDefinition","src":"911:1876:22"}],"id":9572,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[293]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":199,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":2977,"absolutePath":"controller.sol","file":"../controller.sol","scope":294,"symbolAliases":[null],"unitAlias":""},"id":200,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":294,"symbolAliases":[null],"unitAlias":""},"id":201,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[338],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[293,338],"name":"Controllable","scope":294},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":202,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":203,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":293,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":204,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":205,"name":"Literal","src":"1122:66:23"}],"id":206,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":293,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":207,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":206,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":208,"name":"Identifier","src":"1306:24:23"}],"id":209,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":293,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":226,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":210,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":211,"name":"VariableDeclaration","src":"1571:24:23"}],"id":212,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":213,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"bytes32","value":"_controllerNode_"},"id":214,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":215,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":216,"name":"Literal","src":"1693:1:23"}],"id":217,"name":"FunctionCall","src":"1685:10:23"}],"id":218,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_controllerNode"},"id":219,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"bytes32","value":"_controllerNode_"},"id":220,"name":"Identifier","src":"1729:16:23"}],"id":221,"name":"Assignment","src":"1711:34:23"}],"id":222,"name":"ExpressionStatement","src":"1711:34:23"}],"id":223,"name":"Block","src":"1697:59:23"}],"id":224,"name":"IfStatement","src":"1661:95:23"}],"id":225,"name":"Block","src":"1606:156:23"}],"id":226,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":227,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":228,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":275,"type":"function (address) view returns (bool)","value":"_isController"},"id":229,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":230,"name":"Identifier","src":"1884:3:23"}],"id":231,"name":"MemberAccess","src":"1884:10:23"}],"id":232,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":233,"name":"Literal","src":"1897:28:23"}],"id":234,"name":"FunctionCall","src":"1862:64:23"}],"id":235,"name":"ExpressionStatement","src":"1862:64:23"},{"id":236,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":237,"name":"Block","src":"1852:92:23"}],"id":238,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":239,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":240,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":292,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":241,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":242,"name":"Identifier","src":"2052:3:23"}],"id":243,"name":"MemberAccess","src":"2052:10:23"}],"id":244,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":245,"name":"Literal","src":"2065:24:23"}],"id":246,"name":"FunctionCall","src":"2035:55:23"}],"id":247,"name":"ExpressionStatement","src":"2035:55:23"},{"id":248,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":249,"name":"Block","src":"2025:83:23"}],"id":250,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":293,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":251,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":258,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":252,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":253,"name":"VariableDeclaration","src":"2216:7:23"}],"id":254,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":254},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_controllerNode"},"id":255,"name":"Identifier","src":"2242:15:23"}],"id":256,"name":"Return","src":"2235:22:23"}],"id":257,"name":"Block","src":"2225:39:23"}],"id":258,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":293,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":275,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":259,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":260,"name":"VariableDeclaration","src":"2355:16:23"}],"id":261,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":275,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":262,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":263,"name":"VariableDeclaration","src":"2396:4:23"}],"id":264,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":264},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":2533,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2541,"type":"type(contract IController)","value":"IController"},"id":265,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":266,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_controllerNode"},"id":267,"name":"Identifier","src":"2443:15:23"}],"id":268,"name":"FunctionCall","src":"2431:28:23"}],"id":269,"name":"FunctionCall","src":"2419:41:23"}],"id":270,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":260,"type":"address","value":"_account"},"id":271,"name":"Identifier","src":"2474:8:23"}],"id":272,"name":"FunctionCall","src":"2419:64:23"}],"id":273,"name":"Return","src":"2412:71:23"}],"id":274,"name":"Block","src":"2402:88:23"}],"id":275,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":293,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":292,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":276,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":277,"name":"VariableDeclaration","src":"2572:16:23"}],"id":278,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":292,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":279,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":280,"name":"VariableDeclaration","src":"2613:4:23"}],"id":281,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":281},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":2540,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2541,"type":"type(contract IController)","value":"IController"},"id":282,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":283,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_controllerNode"},"id":284,"name":"Identifier","src":"2660:15:23"}],"id":285,"name":"FunctionCall","src":"2648:28:23"}],"id":286,"name":"FunctionCall","src":"2636:41:23"}],"id":287,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":277,"type":"address","value":"_account"},"id":288,"name":"Identifier","src":"2686:8:23"}],"id":289,"name":"FunctionCall","src":"2636:59:23"}],"id":290,"name":"Return","src":"2629:66:23"}],"id":291,"name":"Block","src":"2619:83:23"}],"id":292,"name":"FunctionDefinition","src":"2554:148:23"}],"id":293,"name":"ContractDefinition","src":"955:1749:23"}],"id":294,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[338]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":295,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":3114,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":339,"symbolAliases":[null],"unitAlias":""},"id":296,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":3288,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":339,"symbolAliases":[null],"unitAlias":""},"id":297,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[338],"name":"ENSResolvable","scope":339},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":338,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":298,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":299,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":338,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":309,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":300,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":301,"name":"VariableDeclaration","src":"1205:16:24"}],"id":302,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":303,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"address","value":"_ensRegistry"},"id":304,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":301,"type":"address","value":"_ensReg_"},"id":305,"name":"Identifier","src":"1257:8:24"}],"id":306,"name":"Assignment","src":"1242:23:24"}],"id":307,"name":"ExpressionStatement","src":"1242:23:24"}],"id":308,"name":"Block","src":"1232:40:24"}],"id":309,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":338,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":310,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":317,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":311,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":312,"name":"VariableDeclaration","src":"1410:7:24"}],"id":313,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":313},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"address","value":"_ensRegistry"},"id":314,"name":"Identifier","src":"1436:12:24"}],"id":315,"name":"Return","src":"1429:19:24"}],"id":316,"name":"Block","src":"1419:36:24"}],"id":317,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":338,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":337,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":318,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":319,"name":"VariableDeclaration","src":"1652:13:24"}],"id":320,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":337,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":321,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":322,"name":"VariableDeclaration","src":"1690:7:24"}],"id":323,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":323},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":5010,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3287,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":324,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":3089,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3113,"type":"type(contract ENS)","value":"ENS"},"id":325,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"address","value":"_ensRegistry"},"id":326,"name":"Identifier","src":"1735:12:24"}],"id":327,"name":"FunctionCall","src":"1731:17:24"}],"id":328,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":319,"type":"bytes32","value":"_node"},"id":329,"name":"Identifier","src":"1758:5:24"}],"id":330,"name":"FunctionCall","src":"1731:33:24"}],"id":331,"name":"FunctionCall","src":"1716:49:24"}],"id":332,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":319,"type":"bytes32","value":"_node"},"id":333,"name":"Identifier","src":"1771:5:24"}],"id":334,"name":"FunctionCall","src":"1716:61:24"}],"id":335,"name":"Return","src":"1709:68:24"}],"id":336,"name":"Block","src":"1699:85:24"}],"id":337,"name":"FunctionDefinition","src":"1631:153:24"}],"id":338,"name":"ContractDefinition","src":"1008:778:24"}],"id":339,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[3991]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3836,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[3991],"name":"Ownable","scope":3992},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3837,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":3838,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3839,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":3840,"name":"VariableDeclaration","src":"1214:11:25"}],"id":3841,"name":"ParameterList","src":"1198:28:25"}],"id":3842,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":3846,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3843,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":3844,"name":"VariableDeclaration","src":"1254:15:25"}],"id":3845,"name":"ParameterList","src":"1253:17:25"}],"id":3846,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":3991,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3847,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":3848,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":3991,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3849,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":3850,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3991,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":3881,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3851,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":3852,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":3881,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3853,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":3854,"name":"VariableDeclaration","src":"1503:19:25"}],"id":3855,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":3856,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3857,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"address payable","value":"_account_"},"id":3858,"name":"Identifier","src":"1552:9:25"}],"id":3859,"name":"Assignment","src":"1543:18:25"}],"id":3860,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3861,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3854,"type":"bool","value":"_transferable_"},"id":3862,"name":"Identifier","src":"1589:14:25"}],"id":3863,"name":"Assignment","src":"1571:32:25"}],"id":3864,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3865,"name":"Identifier","src":"1687:15:25"}],"id":3866,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"function (address)","value":"LockedOwnership"},"id":3867,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"address payable","value":"_account_"},"id":3868,"name":"Identifier","src":"1739:9:25"}],"id":3869,"name":"FunctionCall","src":"1723:26:25"}],"id":3870,"name":"EmitStatement","src":"1718:31:25"}],"id":3871,"name":"Block","src":"1704:56:25"}],"id":3872,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3842,"type":"function (address,address)","value":"TransferredOwnership"},"id":3873,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3874,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3875,"name":"Literal","src":"1803:1:25"}],"id":3876,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"address payable","value":"_account_"},"id":3877,"name":"Identifier","src":"1807:9:25"}],"id":3878,"name":"FunctionCall","src":"1774:43:25"}],"id":3879,"name":"EmitStatement","src":"1769:48:25"}],"id":3880,"name":"Block","src":"1533:291:25"}],"id":3881,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3882,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3883,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3884,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3885,"name":"Identifier","src":"1949:3:25"}],"id":3886,"name":"MemberAccess","src":"1949:10:25"}],"id":3887,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":3888,"name":"Literal","src":"1962:24:25"}],"id":3889,"name":"FunctionCall","src":"1932:55:25"}],"id":3890,"name":"ExpressionStatement","src":"1932:55:25"},{"id":3891,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":3892,"name":"Block","src":"1922:83:25"}],"id":3893,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":3991,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3938,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3894,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":3895,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":3938,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3896,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":3897,"name":"VariableDeclaration","src":"2300:18:25"}],"id":3898,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":3901,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":3899,"name":"Identifier","src":"2329:9:25"}],"id":3900,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3902,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3903,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3904,"name":"Literal","src":"2429:31:25"}],"id":3905,"name":"FunctionCall","src":"2404:57:25"}],"id":3906,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3907,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3895,"type":"address payable","value":"_account"},"id":3908,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3909,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3910,"name":"Literal","src":"2562:1:25"}],"id":3911,"name":"FunctionCall","src":"2554:10:25"}],"id":3912,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":3913,"name":"Literal","src":"2566:37:25"}],"id":3914,"name":"FunctionCall","src":"2534:70:25"}],"id":3915,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3916,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3897,"type":"bool","value":"_transferable"},"id":3917,"name":"Identifier","src":"2707:13:25"}],"id":3918,"name":"Assignment","src":"2689:31:25"}],"id":3919,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3897,"type":"bool","value":"_transferable"},"id":3920,"name":"Identifier","src":"2804:13:25"}],"id":3921,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"function (address)","value":"LockedOwnership"},"id":3922,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3895,"type":"address payable","value":"_account"},"id":3923,"name":"Identifier","src":"2854:8:25"}],"id":3924,"name":"FunctionCall","src":"2838:25:25"}],"id":3925,"name":"EmitStatement","src":"2833:30:25"}],"id":3926,"name":"Block","src":"2819:55:25"}],"id":3927,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3842,"type":"function (address,address)","value":"TransferredOwnership"},"id":3928,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3929,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3895,"type":"address payable","value":"_account"},"id":3930,"name":"Identifier","src":"2963:8:25"}],"id":3931,"name":"FunctionCall","src":"2934:38:25"}],"id":3932,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3933,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3895,"type":"address payable","value":"_account"},"id":3934,"name":"Identifier","src":"3041:8:25"}],"id":3935,"name":"Assignment","src":"3032:17:25"}],"id":3936,"name":"ExpressionStatement","src":"3032:17:25"}],"id":3937,"name":"Block","src":"2339:717:25"}],"id":3938,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":3991,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3939,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3946,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3940,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":3941,"name":"VariableDeclaration","src":"3222:4:25"}],"id":3942,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":3942},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3943,"name":"Identifier","src":"3245:15:25"}],"id":3944,"name":"Return","src":"3238:22:25"}],"id":3945,"name":"Block","src":"3228:39:25"}],"id":3946,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":3991,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3947,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":3950,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":3948,"name":"Identifier","src":"3581:9:25"}],"id":3949,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3951,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3952,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3953,"name":"Literal","src":"3681:31:25"}],"id":3954,"name":"FunctionCall","src":"3656:57:25"}],"id":3955,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3956,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3957,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3958,"name":"Literal","src":"3784:1:25"}],"id":3959,"name":"FunctionCall","src":"3776:10:25"}],"id":3960,"name":"Assignment","src":"3767:19:25"}],"id":3961,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3842,"type":"function (address,address)","value":"TransferredOwnership"},"id":3962,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3963,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3964,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3965,"name":"Literal","src":"3839:1:25"}],"id":3966,"name":"FunctionCall","src":"3831:10:25"}],"id":3967,"name":"FunctionCall","src":"3802:40:25"}],"id":3968,"name":"EmitStatement","src":"3797:45:25"}],"id":3969,"name":"Block","src":"3591:258:25"}],"id":3970,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3991,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3971,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3978,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3972,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":3973,"name":"VariableDeclaration","src":"3970:15:25"}],"id":3974,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":3974},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3975,"name":"Identifier","src":"4004:6:25"}],"id":3976,"name":"Return","src":"3997:13:25"}],"id":3977,"name":"Block","src":"3987:30:25"}],"id":3978,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":3991,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3990,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3979,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":3980,"name":"VariableDeclaration","src":"4141:16:25"}],"id":3981,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3990,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3982,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":3983,"name":"VariableDeclaration","src":"4182:4:25"}],"id":3984,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":3984},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3980,"type":"address","value":"_address"},"id":3985,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3986,"name":"Identifier","src":"4217:6:25"}],"id":3987,"name":"BinaryOperation","src":"4205:18:25"}],"id":3988,"name":"Return","src":"4198:25:25"}],"id":3989,"name":"Block","src":"4188:42:25"}],"id":3990,"name":"FunctionDefinition","src":"4123:107:25"}],"id":3991,"name":"ContractDefinition","src":"1149:3083:25"}],"id":3992,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[4208]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3993,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":7068,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":4209,"symbolAliases":[null],"unitAlias":""},"id":3994,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":4209,"symbolAliases":[null],"unitAlias":""},"id":3995,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[338],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[4208,338],"name":"TokenWhitelistable","scope":4209},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":3996,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":3997,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":4208,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3998,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":3999,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4208,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":4009,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4000,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":4001,"name":"VariableDeclaration","src":"1292:28:26"}],"id":4002,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":4003,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4004,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4001,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":4005,"name":"Identifier","src":"1363:20:26"}],"id":4006,"name":"Assignment","src":"1341:42:26"}],"id":4007,"name":"ExpressionStatement","src":"1341:42:26"}],"id":4008,"name":"Block","src":"1331:59:26"}],"id":4009,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4010,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4017,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4011,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":4012,"name":"VariableDeclaration","src":"1567:7:26"}],"id":4013,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":4013},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4014,"name":"Identifier","src":"1593:19:26"}],"id":4015,"name":"Return","src":"1586:26:26"}],"id":4016,"name":"Block","src":"1576:43:26"}],"id":4017,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4046,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4018,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":4019,"name":"VariableDeclaration","src":"2194:10:26"}],"id":4020,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4021,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":4022,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4023,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":4024,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4025,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":4026,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4027,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":4028,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4029,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":4030,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4031,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":4032,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4033,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":4034,"name":"VariableDeclaration","src":"2280:7:26"}],"id":4035,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":4035},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":6105,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4036,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4037,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4038,"name":"Identifier","src":"2334:19:26"}],"id":4039,"name":"FunctionCall","src":"2322:32:26"}],"id":4040,"name":"FunctionCall","src":"2306:49:26"}],"id":4041,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4019,"type":"address","value":"_a"},"id":4042,"name":"Identifier","src":"2369:2:26"}],"id":4043,"name":"FunctionCall","src":"2306:66:26"}],"id":4044,"name":"Return","src":"2299:73:26"}],"id":4045,"name":"Block","src":"2289:90:26"}],"id":4046,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4047,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4048,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":4049,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4050,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":4051,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4052,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":4053,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4054,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":4055,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4056,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":4057,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4058,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":4059,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4060,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":4061,"name":"VariableDeclaration","src":"2991:7:26"}],"id":4062,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":4062},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":6122,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4063,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4064,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4065,"name":"Identifier","src":"3045:19:26"}],"id":4066,"name":"FunctionCall","src":"3033:32:26"}],"id":4067,"name":"FunctionCall","src":"3017:49:26"}],"id":4068,"name":"MemberAccess","src":"3017:67:26"}],"id":4069,"name":"FunctionCall","src":"3017:69:26"}],"id":4070,"name":"Return","src":"3010:76:26"}],"id":4071,"name":"Block","src":"3000:93:26"}],"id":4072,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4073,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4087,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4074,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":4075,"name":"ArrayTypeName","src":"3273:9:26"}],"id":4076,"name":"VariableDeclaration","src":"3273:16:26"}],"id":4077,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":4077},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":6128,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4078,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4079,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4080,"name":"Identifier","src":"3336:19:26"}],"id":4081,"name":"FunctionCall","src":"3324:32:26"}],"id":4082,"name":"FunctionCall","src":"3308:49:26"}],"id":4083,"name":"MemberAccess","src":"3308:67:26"}],"id":4084,"name":"FunctionCall","src":"3308:69:26"}],"id":4085,"name":"Return","src":"3301:76:26"}],"id":4086,"name":"Block","src":"3291:93:26"}],"id":4087,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4088,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4102,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4089,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":4090,"name":"ArrayTypeName","src":"3563:9:26"}],"id":4091,"name":"VariableDeclaration","src":"3563:16:26"}],"id":4092,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":4092},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":6134,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4093,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4094,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4095,"name":"Identifier","src":"3626:19:26"}],"id":4096,"name":"FunctionCall","src":"3614:32:26"}],"id":4097,"name":"FunctionCall","src":"3598:49:26"}],"id":4098,"name":"MemberAccess","src":"3598:66:26"}],"id":4099,"name":"FunctionCall","src":"3598:68:26"}],"id":4100,"name":"Return","src":"3591:75:26"}],"id":4101,"name":"Block","src":"3581:92:26"}],"id":4102,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":4208,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":4123,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4103,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":4104,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":4123,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4105,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":4106,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":4123,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4107,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":4108,"name":"VariableDeclaration","src":"4007:19:26"}],"id":4109,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":4110,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":6166,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4111,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4112,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4113,"name":"Identifier","src":"4075:19:26"}],"id":4114,"name":"FunctionCall","src":"4063:32:26"}],"id":4115,"name":"FunctionCall","src":"4047:49:26"}],"id":4116,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4104,"type":"address","value":"_token"},"id":4117,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4106,"type":"uint256","value":"_rate"},"id":4118,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"uint256","value":"_updateDate"},"id":4119,"name":"Identifier","src":"4128:11:26"}],"id":4120,"name":"FunctionCall","src":"4047:93:26"}],"id":4121,"name":"ExpressionStatement","src":"4047:93:26"}],"id":4122,"name":"Block","src":"4037:110:26"}],"id":4123,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":4145,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4124,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":4125,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":4145,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4126,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":4127,"name":"VariableDeclaration","src":"4364:18:26"}],"id":4128,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4145,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4129,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":4130,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":4145,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4131,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":4132,"name":"VariableDeclaration","src":"4416:7:26"}],"id":4133,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":4133},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":6152,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4134,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4135,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4136,"name":"Identifier","src":"4470:19:26"}],"id":4137,"name":"FunctionCall","src":"4458:32:26"}],"id":4138,"name":"FunctionCall","src":"4442:49:26"}],"id":4139,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4125,"type":"address","value":"_destination"},"id":4140,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4127,"type":"bytes memory","value":"_data"},"id":4141,"name":"Identifier","src":"4533:5:26"}],"id":4142,"name":"FunctionCall","src":"4442:97:26"}],"id":4143,"name":"Return","src":"4435:104:26"}],"id":4144,"name":"Block","src":"4425:121:26"}],"id":4145,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4161,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4146,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":4147,"name":"VariableDeclaration","src":"4671:10:26"}],"id":4148,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4161,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4149,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":4150,"name":"VariableDeclaration","src":"4706:4:26"}],"id":4151,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,4153,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":4160,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4152,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":4153,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4154,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"address","value":"_a"},"id":4155,"name":"Identifier","src":"4767:2:26"}],"id":4156,"name":"FunctionCall","src":"4753:17:26"}],"id":4157,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":4151},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4153,"type":"bool","value":"available"},"id":4158,"name":"Identifier","src":"4787:9:26"}],"id":4159,"name":"Return","src":"4780:16:26"}],"id":4160,"name":"Block","src":"4712:91:26"}],"id":4161,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4177,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4162,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":4163,"name":"VariableDeclaration","src":"4931:10:26"}],"id":4164,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4177,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4165,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":4166,"name":"VariableDeclaration","src":"4966:4:26"}],"id":4167,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,4169,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":4176,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4168,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":4169,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4170,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4163,"type":"address","value":"_a"},"id":4171,"name":"Identifier","src":"5028:2:26"}],"id":4172,"name":"FunctionCall","src":"5014:17:26"}],"id":4173,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":4167},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4169,"type":"bool","value":"redeemable"},"id":4174,"name":"Identifier","src":"5048:10:26"}],"id":4175,"name":"Return","src":"5041:17:26"}],"id":4176,"name":"Block","src":"4972:93:26"}],"id":4177,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4193,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4178,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":4179,"name":"VariableDeclaration","src":"5187:10:26"}],"id":4180,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4193,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4181,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":4182,"name":"VariableDeclaration","src":"5222:4:26"}],"id":4183,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,4185,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":4192,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4184,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":4185,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4186,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4179,"type":"address","value":"_a"},"id":4187,"name":"Identifier","src":"5282:2:26"}],"id":4188,"name":"FunctionCall","src":"5268:17:26"}],"id":4189,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":4183},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4185,"type":"bool","value":"loadable"},"id":4190,"name":"Identifier","src":"5302:8:26"}],"id":4191,"name":"Return","src":"5295:15:26"}],"id":4192,"name":"Block","src":"5228:89:26"}],"id":4193,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4194,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4207,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4195,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":4196,"name":"VariableDeclaration","src":"5482:7:26"}],"id":4197,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":4197},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":6157,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4198,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4199,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4200,"name":"Identifier","src":"5536:19:26"}],"id":4201,"name":"FunctionCall","src":"5524:32:26"}],"id":4202,"name":"FunctionCall","src":"5508:49:26"}],"id":4203,"name":"MemberAccess","src":"5508:60:26"}],"id":4204,"name":"FunctionCall","src":"5508:62:26"}],"id":4205,"name":"Return","src":"5501:69:26"}],"id":4206,"name":"Block","src":"5491:86:26"}],"id":4207,"name":"FunctionDefinition","src":"5436:141:26"}],"id":4208,"name":"ContractDefinition","src":"958:4621:26"}],"id":4209,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[4248]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4210,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":3451,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":4249,"symbolAliases":[null],"unitAlias":""},"id":4211,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":3670,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":4249,"symbolAliases":[null],"unitAlias":""},"id":4212,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[4248],"name":"Transferrable","scope":4249},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3669,"type":"library SafeERC20"},"id":4213,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":4214,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":4215,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":4248,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4247,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4216,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":4217,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":4247,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4218,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":4219,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":4247,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4220,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":4221,"name":"VariableDeclaration","src":"1426:15:27"}],"id":4222,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":4223,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4219,"type":"address","value":"_asset"},"id":4224,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4225,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4226,"name":"Literal","src":"1528:1:27"}],"id":4227,"name":"FunctionCall","src":"1520:10:27"}],"id":4228,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4217,"type":"address payable","value":"_to"},"id":4229,"name":"Identifier","src":"1546:3:27"}],"id":4231,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4221,"type":"uint256","value":"_amount"},"id":4232,"name":"Identifier","src":"1559:7:27"}],"id":4233,"name":"FunctionCall","src":"1546:21:27"}],"id":4234,"name":"ExpressionStatement","src":"1546:21:27"}],"id":4235,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":3483,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":4236,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4219,"type":"address","value":"_asset"},"id":4237,"name":"Identifier","src":"1604:6:27"}],"id":4238,"name":"FunctionCall","src":"1598:13:27"}],"id":4239,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4217,"type":"address payable","value":"_to"},"id":4240,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4221,"type":"uint256","value":"_amount"},"id":4241,"name":"Identifier","src":"1630:7:27"}],"id":4242,"name":"FunctionCall","src":"1598:40:27"}],"id":4243,"name":"ExpressionStatement","src":"1598:40:27"}],"id":4244,"name":"Block","src":"1584:65:27"}],"id":4245,"name":"IfStatement","src":"1506:143:27"}],"id":4246,"name":"Block","src":"1452:203:27"}],"id":4247,"name":"FunctionDefinition","src":"1366:289:27"}],"id":4248,"name":"ContractDefinition","src":"961:696:27"}],"id":4249,"name":"SourceUnit","src":"773:885:27"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[4268],"Licence":[4792]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4250,"name":"PragmaDirective","src":"767:24:28"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4251,"name":"ImportDirective","src":"793:34:28"},{"attributes":{"SourceUnit":3670,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4252,"name":"ImportDirective","src":"828:35:28"},{"attributes":{"SourceUnit":294,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4253,"name":"ImportDirective","src":"864:38:28"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4254,"name":"ImportDirective","src":"903:39:28"},{"attributes":{"SourceUnit":4249,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4255,"name":"ImportDirective","src":"943:39:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[4268],"name":"ILicence","scope":4793},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":4268,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4262,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4256,"name":"ElementaryTypeName","src":"1125:7:28"}],"id":4257,"name":"VariableDeclaration","src":"1125:7:28"},{"attributes":{"constant":false,"name":"","scope":4262,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4258,"name":"ElementaryTypeName","src":"1134:7:28"}],"id":4259,"name":"VariableDeclaration","src":"1134:7:28"}],"id":4260,"name":"ParameterList","src":"1124:18:28"},{"attributes":{"parameters":[null]},"children":[],"id":4261,"name":"ParameterList","src":"1159:0:28"}],"id":4262,"name":"FunctionDefinition","src":"1111:49:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":4268,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4267,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4263,"name":"ElementaryTypeName","src":"1195:7:28"}],"id":4264,"name":"VariableDeclaration","src":"1195:7:28"}],"id":4265,"name":"ParameterList","src":"1194:9:28"},{"attributes":{"parameters":[null]},"children":[],"id":4266,"name":"ParameterList","src":"1212:0:28"}],"id":4267,"name":"FunctionDefinition","src":"1166:47:28"}],"id":4268,"name":"ContractDefinition","src":"1086:129:28"},{"attributes":{"contractDependencies":[293,338,4248],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[4792,293,338,4248],"name":"Licence","scope":4793},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4248,"type":"contract Transferrable"},"id":4269,"name":"UserDefinedTypeName","src":"1401:13:28"}],"id":4270,"name":"InheritanceSpecifier","src":"1401:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":4271,"name":"UserDefinedTypeName","src":"1416:13:28"}],"id":4272,"name":"InheritanceSpecifier","src":"1416:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":293,"type":"contract Controllable"},"id":4273,"name":"UserDefinedTypeName","src":"1431:12:28"}],"id":4274,"name":"InheritanceSpecifier","src":"1431:12:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":4275,"name":"UserDefinedTypeName","src":"1456:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":4276,"name":"ElementaryTypeName","src":"1469:7:28"}],"id":4277,"name":"UsingForDirective","src":"1450:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3669,"type":"library SafeERC20"},"id":4278,"name":"UserDefinedTypeName","src":"1488:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":4279,"name":"UserDefinedTypeName","src":"1502:5:28"}],"id":4280,"name":"UsingForDirective","src":"1482:26:28"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":4284,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4281,"name":"ElementaryTypeName","src":"1614:7:28"}],"id":4282,"name":"VariableDeclaration","src":"1614:15:28"}],"id":4283,"name":"ParameterList","src":"1613:17:28"}],"id":4284,"name":"EventDefinition","src":"1590:41:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":4288,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4285,"name":"ElementaryTypeName","src":"1661:7:28"}],"id":4286,"name":"VariableDeclaration","src":"1661:17:28"}],"id":4287,"name":"ParameterList","src":"1660:19:28"}],"id":4288,"name":"EventDefinition","src":"1636:44:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":4292,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4289,"name":"ElementaryTypeName","src":"1710:7:28"}],"id":4290,"name":"VariableDeclaration","src":"1710:18:28"}],"id":4291,"name":"ParameterList","src":"1709:20:28"}],"id":4292,"name":"EventDefinition","src":"1685:45:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":4296,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4293,"name":"ElementaryTypeName","src":"1767:7:28"}],"id":4294,"name":"VariableDeclaration","src":"1767:15:28"}],"id":4295,"name":"ParameterList","src":"1766:17:28"}],"id":4296,"name":"EventDefinition","src":"1735:49:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":4300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4297,"name":"ElementaryTypeName","src":"1816:7:28"}],"id":4298,"name":"VariableDeclaration","src":"1816:18:28"}],"id":4299,"name":"ParameterList","src":"1815:20:28"}],"id":4300,"name":"EventDefinition","src":"1789:47:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":4310,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4301,"name":"ElementaryTypeName","src":"1873:7:28"}],"id":4302,"name":"VariableDeclaration","src":"1873:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4310,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4303,"name":"ElementaryTypeName","src":"1888:7:28"}],"id":4304,"name":"VariableDeclaration","src":"1888:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4310,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4305,"name":"ElementaryTypeName","src":"1901:7:28"}],"id":4306,"name":"VariableDeclaration","src":"1901:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4310,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4307,"name":"ElementaryTypeName","src":"1917:7:28"}],"id":4308,"name":"VariableDeclaration","src":"1917:15:28"}],"id":4309,"name":"ParameterList","src":"1872:61:28"}],"id":4310,"name":"EventDefinition","src":"1842:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":4320,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4311,"name":"ElementaryTypeName","src":"1970:7:28"}],"id":4312,"name":"VariableDeclaration","src":"1970:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4320,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4313,"name":"ElementaryTypeName","src":"1985:7:28"}],"id":4314,"name":"VariableDeclaration","src":"1985:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4320,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4315,"name":"ElementaryTypeName","src":"1998:7:28"}],"id":4316,"name":"VariableDeclaration","src":"1998:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4320,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4317,"name":"ElementaryTypeName","src":"2014:7:28"}],"id":4318,"name":"VariableDeclaration","src":"2014:15:28"}],"id":4319,"name":"ParameterList","src":"1969:61:28"}],"id":4320,"name":"EventDefinition","src":"1939:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4328,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4321,"name":"ElementaryTypeName","src":"2051:7:28"}],"id":4322,"name":"VariableDeclaration","src":"2051:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4328,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4323,"name":"ElementaryTypeName","src":"2064:7:28"}],"id":4324,"name":"VariableDeclaration","src":"2064:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4325,"name":"ElementaryTypeName","src":"2080:7:28"}],"id":4326,"name":"VariableDeclaration","src":"2080:15:28"}],"id":4327,"name":"ParameterList","src":"2050:46:28"}],"id":4328,"name":"EventDefinition","src":"2037:60:28"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":4792,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4329,"name":"ElementaryTypeName","src":"2209:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":4330,"name":"Literal","src":"2252:4:28"}],"id":4331,"name":"VariableDeclaration","src":"2209:47:28"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":4792,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4332,"name":"ElementaryTypeName","src":"2262:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4333,"name":"Literal","src":"2305:1:28"}],"id":4334,"name":"VariableDeclaration","src":"2262:44:28"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":4792,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4335,"name":"ElementaryTypeName","src":"2313:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":4336,"name":"Literal","src":"2351:42:28"}],"id":4337,"name":"VariableDeclaration","src":"2313:80:28"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":4792,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4338,"name":"ElementaryTypeName","src":"2433:15:28"}],"id":4339,"name":"VariableDeclaration","src":"2433:36:28"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":4792,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4340,"name":"ElementaryTypeName","src":"2475:15:28"}],"id":4341,"name":"VariableDeclaration","src":"2475:36:28"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":4792,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4342,"name":"ElementaryTypeName","src":"2517:7:28"}],"id":4343,"name":"VariableDeclaration","src":"2517:27:28"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":4792,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4344,"name":"ElementaryTypeName","src":"2551:4:28"}],"id":4345,"name":"VariableDeclaration","src":"2551:31:28"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":4792,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4346,"name":"ElementaryTypeName","src":"2588:4:28"}],"id":4347,"name":"VariableDeclaration","src":"2588:31:28"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":4792,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4348,"name":"ElementaryTypeName","src":"2625:4:28"}],"id":4349,"name":"VariableDeclaration","src":"2625:30:28"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":4792,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4350,"name":"ElementaryTypeName","src":"2661:4:28"}],"id":4351,"name":"VariableDeclaration","src":"2661:38:28"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":4792,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4352,"name":"ElementaryTypeName","src":"2853:7:28"}],"id":4353,"name":"VariableDeclaration","src":"2853:36:28"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4354,"name":"ParameterList","src":"2990:2:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4355,"name":"Identifier","src":"3003:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4356,"name":"Identifier","src":"3011:3:28"}],"id":4357,"name":"MemberAccess","src":"3011:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4343,"type":"address","value":"_licenceDAO"},"id":4358,"name":"Identifier","src":"3025:11:28"}],"id":4359,"name":"BinaryOperation","src":"3011:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":4360,"name":"Literal","src":"3038:26:28"}],"id":4361,"name":"FunctionCall","src":"3003:62:28"}],"id":4362,"name":"ExpressionStatement","src":"3003:62:28"},{"id":4363,"name":"PlaceholderStatement","src":"3075:1:28"}],"id":4364,"name":"Block","src":"2993:90:28"}],"id":4365,"name":"ModifierDefinition","src":"2974:109:28"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4366,"name":"ElementaryTypeName","src":"3628:7:28"}],"id":4367,"name":"VariableDeclaration","src":"3628:17:28"},{"attributes":{"constant":false,"name":"_float_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4368,"name":"ElementaryTypeName","src":"3647:15:28"}],"id":4369,"name":"VariableDeclaration","src":"3647:23:28"},{"attributes":{"constant":false,"name":"_holder_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4370,"name":"ElementaryTypeName","src":"3672:15:28"}],"id":4371,"name":"VariableDeclaration","src":"3672:24:28"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4372,"name":"ElementaryTypeName","src":"3698:7:28"}],"id":4373,"name":"VariableDeclaration","src":"3698:20:28"},{"attributes":{"constant":false,"name":"_ens_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4374,"name":"ElementaryTypeName","src":"3720:7:28"}],"id":4375,"name":"VariableDeclaration","src":"3720:13:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4376,"name":"ElementaryTypeName","src":"3735:7:28"}],"id":4377,"name":"VariableDeclaration","src":"3735:24:28"}],"id":4378,"name":"ParameterList","src":"3627:133:28"},{"attributes":{"parameters":[null]},"children":[],"id":4385,"name":"ParameterList","src":"3848:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":338,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":4379,"name":"Identifier","src":"3784:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4375,"type":"address","value":"_ens_"},"id":4380,"name":"Identifier","src":"3798:5:28"}],"id":4381,"name":"ModifierInvocation","src":"3784:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"type(contract Controllable)","value":"Controllable"},"id":4382,"name":"Identifier","src":"3813:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4377,"type":"bytes32","value":"_controllerNode_"},"id":4383,"name":"Identifier","src":"3826:16:28"}],"id":4384,"name":"ModifierInvocation","src":"3813:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4386,"name":"Identifier","src":"3858:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4334,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":4387,"name":"Identifier","src":"3866:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4367,"type":"uint256","value":"_licence_"},"id":4388,"name":"Identifier","src":"3886:9:28"}],"id":4389,"name":"BinaryOperation","src":"3866:29:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4367,"type":"uint256","value":"_licence_"},"id":4390,"name":"Identifier","src":"3899:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4331,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4391,"name":"Identifier","src":"3912:16:28"}],"id":4392,"name":"BinaryOperation","src":"3899:29:28"}],"id":4393,"name":"BinaryOperation","src":"3866:62:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":4394,"name":"Literal","src":"3930:29:28"}],"id":4395,"name":"FunctionCall","src":"3858:102:28"}],"id":4396,"name":"ExpressionStatement","src":"3858:102:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"uint256","value":"_licenceAmountScaled"},"id":4397,"name":"Identifier","src":"3970:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4367,"type":"uint256","value":"_licence_"},"id":4398,"name":"Identifier","src":"3993:9:28"}],"id":4399,"name":"Assignment","src":"3970:32:28"}],"id":4400,"name":"ExpressionStatement","src":"3970:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4401,"name":"Identifier","src":"4012:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4369,"type":"address payable","value":"_float_"},"id":4402,"name":"Identifier","src":"4027:7:28"}],"id":4403,"name":"Assignment","src":"4012:22:28"}],"id":4404,"name":"ExpressionStatement","src":"4012:22:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4405,"name":"Identifier","src":"4044:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4371,"type":"address payable","value":"_holder_"},"id":4406,"name":"Identifier","src":"4059:8:28"}],"id":4407,"name":"Assignment","src":"4044:23:28"}],"id":4408,"name":"ExpressionStatement","src":"4044:23:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4373,"type":"address","value":"_tknAddress_"},"id":4409,"name":"Identifier","src":"4081:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4410,"name":"ElementaryTypeNameExpression","src":"4097:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4411,"name":"Literal","src":"4105:1:28"}],"id":4412,"name":"FunctionCall","src":"4097:10:28"}],"id":4413,"name":"BinaryOperation","src":"4081:26:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"address","value":"_tknContractAddress"},"id":4414,"name":"Identifier","src":"4123:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4373,"type":"address","value":"_tknAddress_"},"id":4415,"name":"Identifier","src":"4145:12:28"}],"id":4416,"name":"Assignment","src":"4123:34:28"}],"id":4417,"name":"ExpressionStatement","src":"4123:34:28"}],"id":4418,"name":"Block","src":"4109:59:28"}],"id":4419,"name":"IfStatement","src":"4077:91:28"}],"id":4420,"name":"Block","src":"3848:326:28"}],"id":4421,"name":"FunctionDefinition","src":"3616:558:28"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":4792,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4422,"name":"ParameterList","src":"4290:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4423,"name":"ParameterList","src":"4310:0:28"},{"attributes":{"statements":[null]},"children":[],"id":4424,"name":"Block","src":"4310:2:28"}],"id":4425,"name":"FunctionDefinition","src":"4282:30:28"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4426,"name":"ParameterList","src":"4503:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4433,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4427,"name":"ElementaryTypeName","src":"4529:7:28"}],"id":4428,"name":"VariableDeclaration","src":"4529:7:28"}],"id":4429,"name":"ParameterList","src":"4528:9:28"},{"children":[{"attributes":{"functionReturnParameters":4429},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"uint256","value":"_licenceAmountScaled"},"id":4430,"name":"Identifier","src":"4555:20:28"}],"id":4431,"name":"Return","src":"4548:27:28"}],"id":4432,"name":"Block","src":"4538:44:28"}],"id":4433,"name":"FunctionDefinition","src":"4475:107:28"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4434,"name":"ParameterList","src":"4749:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4441,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4435,"name":"ElementaryTypeName","src":"4775:7:28"}],"id":4436,"name":"VariableDeclaration","src":"4775:7:28"}],"id":4437,"name":"ParameterList","src":"4774:9:28"},{"children":[{"attributes":{"functionReturnParameters":4437},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4438,"name":"Identifier","src":"4801:12:28"}],"id":4439,"name":"Return","src":"4794:19:28"}],"id":4440,"name":"Block","src":"4784:36:28"}],"id":4441,"name":"FunctionDefinition","src":"4729:91:28"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4442,"name":"ParameterList","src":"4970:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4449,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4443,"name":"ElementaryTypeName","src":"4996:7:28"}],"id":4444,"name":"VariableDeclaration","src":"4996:7:28"}],"id":4445,"name":"ParameterList","src":"4995:9:28"},{"children":[{"attributes":{"functionReturnParameters":4445},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4446,"name":"Identifier","src":"5022:12:28"}],"id":4447,"name":"Return","src":"5015:19:28"}],"id":4448,"name":"Block","src":"5005:36:28"}],"id":4449,"name":"FunctionDefinition","src":"4950:91:28"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4450,"name":"ParameterList","src":"5172:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4457,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4451,"name":"ElementaryTypeName","src":"5198:7:28"}],"id":4452,"name":"VariableDeclaration","src":"5198:7:28"}],"id":4453,"name":"ParameterList","src":"5197:9:28"},{"children":[{"attributes":{"functionReturnParameters":4453},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4343,"type":"address","value":"_licenceDAO"},"id":4454,"name":"Identifier","src":"5224:11:28"}],"id":4455,"name":"Return","src":"5217:18:28"}],"id":4456,"name":"Block","src":"5207:35:28"}],"id":4457,"name":"FunctionDefinition","src":"5153:89:28"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4458,"name":"ParameterList","src":"5369:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4465,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4459,"name":"ElementaryTypeName","src":"5395:7:28"}],"id":4460,"name":"VariableDeclaration","src":"5395:7:28"}],"id":4461,"name":"ParameterList","src":"5394:9:28"},{"children":[{"attributes":{"functionReturnParameters":4461},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"address","value":"_tknContractAddress"},"id":4462,"name":"Identifier","src":"5421:19:28"}],"id":4463,"name":"Return","src":"5414:26:28"}],"id":4464,"name":"Block","src":"5404:43:28"}],"id":4465,"name":"FunctionDefinition","src":"5342:105:28"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4466,"name":"ParameterList","src":"5571:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4469,"name":"ParameterList","src":"5593:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4467,"name":"Identifier","src":"5583:9:28"}],"id":4468,"name":"ModifierInvocation","src":"5583:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"bool","value":"_lockedCryptoFloat"},"id":4470,"name":"Identifier","src":"5603:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4471,"name":"Literal","src":"5624:4:28"}],"id":4472,"name":"Assignment","src":"5603:25:28"}],"id":4473,"name":"ExpressionStatement","src":"5603:25:28"}],"id":4474,"name":"Block","src":"5593:42:28"}],"id":4475,"name":"FunctionDefinition","src":"5553:82:28"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4476,"name":"ParameterList","src":"5760:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4479,"name":"ParameterList","src":"5782:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4477,"name":"Identifier","src":"5772:9:28"}],"id":4478,"name":"ModifierInvocation","src":"5772:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"bool","value":"_lockedTokenHolder"},"id":4480,"name":"Identifier","src":"5792:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4481,"name":"Literal","src":"5813:4:28"}],"id":4482,"name":"Assignment","src":"5792:25:28"}],"id":4483,"name":"ExpressionStatement","src":"5792:25:28"}],"id":4484,"name":"Block","src":"5782:42:28"}],"id":4485,"name":"FunctionDefinition","src":"5741:83:28"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4486,"name":"ParameterList","src":"5945:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4489,"name":"ParameterList","src":"5967:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4487,"name":"Identifier","src":"5957:9:28"}],"id":4488,"name":"ModifierInvocation","src":"5957:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4349,"type":"bool","value":"_lockedLicenceDAO"},"id":4490,"name":"Identifier","src":"5977:17:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4491,"name":"Literal","src":"5997:4:28"}],"id":4492,"name":"Assignment","src":"5977:24:28"}],"id":4493,"name":"ExpressionStatement","src":"5977:24:28"}],"id":4494,"name":"Block","src":"5967:41:28"}],"id":4495,"name":"FunctionDefinition","src":"5922:86:28"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4496,"name":"ParameterList","src":"6137:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4499,"name":"ParameterList","src":"6159:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4497,"name":"Identifier","src":"6149:9:28"}],"id":4498,"name":"ModifierInvocation","src":"6149:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4351,"type":"bool","value":"_lockedTKNContractAddress"},"id":4500,"name":"Identifier","src":"6169:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4501,"name":"Literal","src":"6197:4:28"}],"id":4502,"name":"Assignment","src":"6169:32:28"}],"id":4503,"name":"ExpressionStatement","src":"6169:32:28"}],"id":4504,"name":"Block","src":"6159:49:28"}],"id":4505,"name":"FunctionDefinition","src":"6106:102:28"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":4528,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4506,"name":"ElementaryTypeName","src":"6359:15:28"}],"id":4507,"name":"VariableDeclaration","src":"6359:25:28"}],"id":4508,"name":"ParameterList","src":"6358:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":4511,"name":"ParameterList","src":"6405:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4509,"name":"Identifier","src":"6395:9:28"}],"id":4510,"name":"ModifierInvocation","src":"6395:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4512,"name":"Identifier","src":"6415:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"function () view returns (bool)","value":"floatLocked"},"id":4513,"name":"Identifier","src":"6424:11:28"}],"id":4514,"name":"FunctionCall","src":"6424:13:28"}],"id":4515,"name":"UnaryOperation","src":"6423:14:28"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":4516,"name":"Literal","src":"6439:17:28"}],"id":4517,"name":"FunctionCall","src":"6415:42:28"}],"id":4518,"name":"ExpressionStatement","src":"6415:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4519,"name":"Identifier","src":"6467:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4507,"type":"address payable","value":"_newFloat"},"id":4520,"name":"Identifier","src":"6482:9:28"}],"id":4521,"name":"Assignment","src":"6467:24:28"}],"id":4522,"name":"ExpressionStatement","src":"6467:24:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4288,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":4523,"name":"Identifier","src":"6506:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4507,"type":"address payable","value":"_newFloat"},"id":4524,"name":"Identifier","src":"6525:9:28"}],"id":4525,"name":"FunctionCall","src":"6506:29:28"}],"id":4526,"name":"EmitStatement","src":"6501:34:28"}],"id":4527,"name":"Block","src":"6405:137:28"}],"id":4528,"name":"FunctionDefinition","src":"6338:204:28"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":4551,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4529,"name":"ElementaryTypeName","src":"6700:15:28"}],"id":4530,"name":"VariableDeclaration","src":"6700:26:28"}],"id":4531,"name":"ParameterList","src":"6699:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":4534,"name":"ParameterList","src":"6747:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4532,"name":"Identifier","src":"6737:9:28"}],"id":4533,"name":"ModifierInvocation","src":"6737:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4535,"name":"Identifier","src":"6757:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4775,"type":"function () view returns (bool)","value":"holderLocked"},"id":4536,"name":"Identifier","src":"6766:12:28"}],"id":4537,"name":"FunctionCall","src":"6766:14:28"}],"id":4538,"name":"UnaryOperation","src":"6765:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":4539,"name":"Literal","src":"6782:27:28"}],"id":4540,"name":"FunctionCall","src":"6757:53:28"}],"id":4541,"name":"ExpressionStatement","src":"6757:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4542,"name":"Identifier","src":"6820:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4530,"type":"address payable","value":"_newHolder"},"id":4543,"name":"Identifier","src":"6835:10:28"}],"id":4544,"name":"Assignment","src":"6820:25:28"}],"id":4545,"name":"ExpressionStatement","src":"6820:25:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4292,"type":"function (address)","value":"UpdatedTokenHolder"},"id":4546,"name":"Identifier","src":"6860:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4530,"type":"address payable","value":"_newHolder"},"id":4547,"name":"Identifier","src":"6879:10:28"}],"id":4548,"name":"FunctionCall","src":"6860:30:28"}],"id":4549,"name":"EmitStatement","src":"6855:35:28"}],"id":4550,"name":"Block","src":"6747:150:28"}],"id":4551,"name":"FunctionDefinition","src":"6678:219:28"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":4574,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4552,"name":"ElementaryTypeName","src":"7053:7:28"}],"id":4553,"name":"VariableDeclaration","src":"7053:15:28"}],"id":4554,"name":"ParameterList","src":"7052:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":4557,"name":"ParameterList","src":"7089:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4555,"name":"Identifier","src":"7079:9:28"}],"id":4556,"name":"ModifierInvocation","src":"7079:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4558,"name":"Identifier","src":"7099:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":4559,"name":"Identifier","src":"7108:16:28"}],"id":4560,"name":"FunctionCall","src":"7108:18:28"}],"id":4561,"name":"UnaryOperation","src":"7107:19:28"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":4562,"name":"Literal","src":"7128:15:28"}],"id":4563,"name":"FunctionCall","src":"7099:45:28"}],"id":4564,"name":"ExpressionStatement","src":"7099:45:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4343,"type":"address","value":"_licenceDAO"},"id":4565,"name":"Identifier","src":"7154:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"address","value":"_newDAO"},"id":4566,"name":"Identifier","src":"7168:7:28"}],"id":4567,"name":"Assignment","src":"7154:21:28"}],"id":4568,"name":"ExpressionStatement","src":"7154:21:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4284,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":4569,"name":"Identifier","src":"7190:17:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"address","value":"_newDAO"},"id":4570,"name":"Identifier","src":"7208:7:28"}],"id":4571,"name":"FunctionCall","src":"7190:26:28"}],"id":4572,"name":"EmitStatement","src":"7185:31:28"}],"id":4573,"name":"Block","src":"7089:134:28"}],"id":4574,"name":"FunctionDefinition","src":"7027:196:28"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":4597,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4575,"name":"ElementaryTypeName","src":"7388:7:28"}],"id":4576,"name":"VariableDeclaration","src":"7388:15:28"}],"id":4577,"name":"ParameterList","src":"7387:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":4580,"name":"ParameterList","src":"7424:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4578,"name":"Identifier","src":"7414:9:28"}],"id":4579,"name":"ModifierInvocation","src":"7414:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4581,"name":"Identifier","src":"7434:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":4582,"name":"Identifier","src":"7443:24:28"}],"id":4583,"name":"FunctionCall","src":"7443:26:28"}],"id":4584,"name":"UnaryOperation","src":"7442:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":4585,"name":"Literal","src":"7471:15:28"}],"id":4586,"name":"FunctionCall","src":"7434:53:28"}],"id":4587,"name":"ExpressionStatement","src":"7434:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"address","value":"_tknContractAddress"},"id":4588,"name":"Identifier","src":"7497:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4576,"type":"address","value":"_newTKN"},"id":4589,"name":"Identifier","src":"7519:7:28"}],"id":4590,"name":"Assignment","src":"7497:29:28"}],"id":4591,"name":"ExpressionStatement","src":"7497:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4296,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":4592,"name":"Identifier","src":"7541:25:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4576,"type":"address","value":"_newTKN"},"id":4593,"name":"Identifier","src":"7567:7:28"}],"id":4594,"name":"FunctionCall","src":"7541:34:28"}],"id":4595,"name":"EmitStatement","src":"7536:39:28"}],"id":4596,"name":"Block","src":"7424:158:28"}],"id":4597,"name":"FunctionDefinition","src":"7354:228:28"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":4624,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4598,"name":"ElementaryTypeName","src":"7752:7:28"}],"id":4599,"name":"VariableDeclaration","src":"7752:18:28"}],"id":4600,"name":"ParameterList","src":"7751:20:28"},{"attributes":{"parameters":[null]},"children":[],"id":4603,"name":"ParameterList","src":"7789:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4365,"type":"modifier ()","value":"onlyDAO"},"id":4601,"name":"Identifier","src":"7781:7:28"}],"id":4602,"name":"ModifierInvocation","src":"7781:7:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4604,"name":"Identifier","src":"7799:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4334,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":4605,"name":"Identifier","src":"7807:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"_newAmount"},"id":4606,"name":"Identifier","src":"7827:10:28"}],"id":4607,"name":"BinaryOperation","src":"7807:30:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"_newAmount"},"id":4608,"name":"Identifier","src":"7841:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4331,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4609,"name":"Identifier","src":"7855:16:28"}],"id":4610,"name":"BinaryOperation","src":"7841:30:28"}],"id":4611,"name":"BinaryOperation","src":"7807:64:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":4612,"name":"Literal","src":"7873:29:28"}],"id":4613,"name":"FunctionCall","src":"7799:104:28"}],"id":4614,"name":"ExpressionStatement","src":"7799:104:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"uint256","value":"_licenceAmountScaled"},"id":4615,"name":"Identifier","src":"7913:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"_newAmount"},"id":4616,"name":"Identifier","src":"7936:10:28"}],"id":4617,"name":"Assignment","src":"7913:33:28"}],"id":4618,"name":"ExpressionStatement","src":"7913:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4300,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":4619,"name":"Identifier","src":"7961:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"_newAmount"},"id":4620,"name":"Identifier","src":"7982:10:28"}],"id":4621,"name":"FunctionCall","src":"7961:32:28"}],"id":4622,"name":"EmitStatement","src":"7956:37:28"}],"id":4623,"name":"Block","src":"7789:211:28"}],"id":4624,"name":"FunctionDefinition","src":"7723:277:28"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":4792,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":4735,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4625,"name":"ElementaryTypeName","src":"8286:7:28"}],"id":4626,"name":"VariableDeclaration","src":"8286:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":4735,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4627,"name":"ElementaryTypeName","src":"8302:7:28"}],"id":4628,"name":"VariableDeclaration","src":"8302:15:28"}],"id":4629,"name":"ParameterList","src":"8285:33:28"},{"attributes":{"parameters":[null]},"children":[],"id":4630,"name":"ParameterList","src":"8336:0:28"},{"children":[{"attributes":{"assignments":[4632]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":4734,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4631,"name":"ElementaryTypeName","src":"8346:7:28"}],"id":4632,"name":"VariableDeclaration","src":"8346:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"uint256","value":"_amount"},"id":4633,"name":"Identifier","src":"8367:7:28"}],"id":4634,"name":"VariableDeclarationStatement","src":"8346:28:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4635,"name":"Identifier","src":"8433:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"address","value":"_tknContractAddress"},"id":4636,"name":"Identifier","src":"8443:19:28"}],"id":4637,"name":"BinaryOperation","src":"8433:29:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3508,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":4638,"name":"Identifier","src":"8478:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4639,"name":"Identifier","src":"8484:6:28"}],"id":4640,"name":"FunctionCall","src":"8478:13:28"}],"id":4641,"name":"MemberAccess","src":"8478:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4642,"name":"Identifier","src":"8509:3:28"}],"id":4643,"name":"MemberAccess","src":"8509:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4644,"name":"Identifier","src":"8521:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4645,"name":"Identifier","src":"8535:10:28"}],"id":4646,"name":"FunctionCall","src":"8478:68:28"}],"id":4647,"name":"ExpressionStatement","src":"8478:68:28"}],"id":4648,"name":"Block","src":"8464:93:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4649,"name":"Identifier","src":"8577:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3780,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3755,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"uint256","value":"_amount"},"id":4650,"name":"Identifier","src":"8590:7:28"}],"id":4651,"name":"MemberAccess","src":"8590:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4331,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4652,"name":"Identifier","src":"8602:16:28"}],"id":4653,"name":"FunctionCall","src":"8590:29:28"}],"id":4654,"name":"MemberAccess","src":"8590:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"uint256","value":"_licenceAmountScaled"},"id":4655,"name":"Identifier","src":"8624:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4331,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4656,"name":"Identifier","src":"8647:16:28"}],"id":4657,"name":"BinaryOperation","src":"8624:39:28"}],"id":4658,"name":"FunctionCall","src":"8590:74:28"}],"id":4659,"name":"Assignment","src":"8577:87:28"}],"id":4660,"name":"ExpressionStatement","src":"8577:87:28"},{"attributes":{"assignments":[4662]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":4724,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4661,"name":"ElementaryTypeName","src":"8678:7:28"}],"id":4662,"name":"VariableDeclaration","src":"8678:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"uint256","value":"_amount"},"id":4663,"name":"Identifier","src":"8702:7:28"}],"id":4664,"name":"MemberAccess","src":"8702:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4665,"name":"Identifier","src":"8714:10:28"}],"id":4666,"name":"FunctionCall","src":"8702:23:28"}],"id":4667,"name":"VariableDeclarationStatement","src":"8678:47:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4668,"name":"Identifier","src":"8744:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4669,"name":"ElementaryTypeNameExpression","src":"8754:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4670,"name":"Literal","src":"8762:1:28"}],"id":4671,"name":"FunctionCall","src":"8754:10:28"}],"id":4672,"name":"BinaryOperation","src":"8744:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3508,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":4673,"name":"Identifier","src":"8784:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4674,"name":"Identifier","src":"8790:6:28"}],"id":4675,"name":"FunctionCall","src":"8784:13:28"}],"id":4676,"name":"MemberAccess","src":"8784:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4677,"name":"Identifier","src":"8815:3:28"}],"id":4678,"name":"MemberAccess","src":"8815:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4679,"name":"Identifier","src":"8827:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4662,"type":"uint256","value":"licenceAmount"},"id":4680,"name":"Identifier","src":"8841:13:28"}],"id":4681,"name":"FunctionCall","src":"8784:71:28"}],"id":4682,"name":"ExpressionStatement","src":"8784:71:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3508,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":4683,"name":"Identifier","src":"8873:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4684,"name":"Identifier","src":"8879:6:28"}],"id":4685,"name":"FunctionCall","src":"8873:13:28"}],"id":4686,"name":"MemberAccess","src":"8873:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4687,"name":"Identifier","src":"8904:3:28"}],"id":4688,"name":"MemberAccess","src":"8904:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4689,"name":"Identifier","src":"8916:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4690,"name":"Identifier","src":"8930:10:28"}],"id":4691,"name":"FunctionCall","src":"8873:68:28"}],"id":4692,"name":"ExpressionStatement","src":"8873:68:28"}],"id":4693,"name":"Block","src":"8766:190:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4694,"name":"Identifier","src":"8980:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4695,"name":"Identifier","src":"8988:3:28"}],"id":4696,"name":"MemberAccess","src":"8988:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"uint256","value":"_amount"},"id":4697,"name":"Identifier","src":"9001:7:28"}],"id":4698,"name":"BinaryOperation","src":"8988:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":4699,"name":"Literal","src":"9010:33:28"}],"id":4700,"name":"FunctionCall","src":"8980:64:28"}],"id":4701,"name":"ExpressionStatement","src":"8980:64:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4702,"name":"Identifier","src":"9062:12:28"}],"id":4704,"name":"MemberAccess","src":"9062:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4662,"type":"uint256","value":"licenceAmount"},"id":4705,"name":"Identifier","src":"9084:13:28"}],"id":4706,"name":"FunctionCall","src":"9062:36:28"}],"id":4707,"name":"ExpressionStatement","src":"9062:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4708,"name":"Identifier","src":"9116:12:28"}],"id":4710,"name":"MemberAccess","src":"9116:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4711,"name":"Identifier","src":"9138:10:28"}],"id":4712,"name":"FunctionCall","src":"9116:33:28"}],"id":4713,"name":"ExpressionStatement","src":"9116:33:28"}],"id":4714,"name":"Block","src":"8962:202:28"}],"id":4715,"name":"IfStatement","src":"8740:424:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4310,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":4716,"name":"Identifier","src":"9183:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4717,"name":"Identifier","src":"9208:3:28"}],"id":4718,"name":"MemberAccess","src":"9208:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4719,"name":"Identifier","src":"9220:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4720,"name":"Identifier","src":"9234:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4662,"type":"uint256","value":"licenceAmount"},"id":4721,"name":"Identifier","src":"9242:13:28"}],"id":4722,"name":"FunctionCall","src":"9183:73:28"}],"id":4723,"name":"EmitStatement","src":"9178:78:28"}],"id":4724,"name":"Block","src":"8563:704:28"}],"id":4725,"name":"IfStatement","src":"8429:838:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4320,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":4726,"name":"Identifier","src":"9282:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4727,"name":"Identifier","src":"9307:3:28"}],"id":4728,"name":"MemberAccess","src":"9307:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4729,"name":"Identifier","src":"9319:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4730,"name":"Identifier","src":"9333:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4731,"name":"Identifier","src":"9341:10:28"}],"id":4732,"name":"FunctionCall","src":"9282:70:28"}],"id":4733,"name":"EmitStatement","src":"9277:75:28"}],"id":4734,"name":"Block","src":"8336:1023:28"}],"id":4735,"name":"FunctionDefinition","src":"8272:1087:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4759,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4736,"name":"ElementaryTypeName","src":"9463:15:28"}],"id":4737,"name":"VariableDeclaration","src":"9463:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":4759,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4738,"name":"ElementaryTypeName","src":"9484:7:28"}],"id":4739,"name":"VariableDeclaration","src":"9484:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":4759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4740,"name":"ElementaryTypeName","src":"9500:7:28"}],"id":4741,"name":"VariableDeclaration","src":"9500:15:28"}],"id":4742,"name":"ParameterList","src":"9462:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":4745,"name":"ParameterList","src":"9536:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4743,"name":"Identifier","src":"9526:9:28"}],"id":4744,"name":"ModifierInvocation","src":"9526:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":4746,"name":"Identifier","src":"9546:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4737,"type":"address payable","value":"_to"},"id":4747,"name":"Identifier","src":"9560:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4739,"type":"address","value":"_asset"},"id":4748,"name":"Identifier","src":"9565:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4741,"type":"uint256","value":"_amount"},"id":4749,"name":"Identifier","src":"9573:7:28"}],"id":4750,"name":"FunctionCall","src":"9546:35:28"}],"id":4751,"name":"ExpressionStatement","src":"9546:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4328,"type":"function (address,address,uint256)","value":"Claimed"},"id":4752,"name":"Identifier","src":"9596:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4737,"type":"address payable","value":"_to"},"id":4753,"name":"Identifier","src":"9604:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4739,"type":"address","value":"_asset"},"id":4754,"name":"Identifier","src":"9609:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4741,"type":"uint256","value":"_amount"},"id":4755,"name":"Identifier","src":"9617:7:28"}],"id":4756,"name":"FunctionCall","src":"9596:29:28"}],"id":4757,"name":"EmitStatement","src":"9591:34:28"}],"id":4758,"name":"Block","src":"9536:96:28"}],"id":4759,"name":"FunctionDefinition","src":"9448:184:28"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4760,"name":"ParameterList","src":"9731:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4767,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4761,"name":"ElementaryTypeName","src":"9755:4:28"}],"id":4762,"name":"VariableDeclaration","src":"9755:4:28"}],"id":4763,"name":"ParameterList","src":"9754:6:28"},{"children":[{"attributes":{"functionReturnParameters":4763},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"bool","value":"_lockedCryptoFloat"},"id":4764,"name":"Identifier","src":"9778:18:28"}],"id":4765,"name":"Return","src":"9771:25:28"}],"id":4766,"name":"Block","src":"9761:42:28"}],"id":4767,"name":"FunctionDefinition","src":"9711:92:28"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4768,"name":"ParameterList","src":"9903:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4775,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4769,"name":"ElementaryTypeName","src":"9927:4:28"}],"id":4770,"name":"VariableDeclaration","src":"9927:4:28"}],"id":4771,"name":"ParameterList","src":"9926:6:28"},{"children":[{"attributes":{"functionReturnParameters":4771},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"bool","value":"_lockedTokenHolder"},"id":4772,"name":"Identifier","src":"9950:18:28"}],"id":4773,"name":"Return","src":"9943:25:28"}],"id":4774,"name":"Block","src":"9933:42:28"}],"id":4775,"name":"FunctionDefinition","src":"9882:93:28"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4776,"name":"ParameterList","src":"10079:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4783,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4777,"name":"ElementaryTypeName","src":"10103:4:28"}],"id":4778,"name":"VariableDeclaration","src":"10103:4:28"}],"id":4779,"name":"ParameterList","src":"10102:6:28"},{"children":[{"attributes":{"functionReturnParameters":4779},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4349,"type":"bool","value":"_lockedLicenceDAO"},"id":4780,"name":"Identifier","src":"10126:17:28"}],"id":4781,"name":"Return","src":"10119:24:28"}],"id":4782,"name":"Block","src":"10109:41:28"}],"id":4783,"name":"FunctionDefinition","src":"10054:96:28"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4784,"name":"ParameterList","src":"10254:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4791,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4785,"name":"ElementaryTypeName","src":"10278:4:28"}],"id":4786,"name":"VariableDeclaration","src":"10278:4:28"}],"id":4787,"name":"ParameterList","src":"10277:6:28"},{"children":[{"attributes":{"functionReturnParameters":4787},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4351,"type":"bool","value":"_lockedTKNContractAddress"},"id":4788,"name":"Identifier","src":"10301:25:28"}],"id":4789,"name":"Return","src":"10294:32:28"}],"id":4790,"name":"Block","src":"10284:49:28"}],"id":4791,"name":"FunctionDefinition","src":"10221:112:28"}],"id":4792,"name":"ContractDefinition","src":"1381:8954:28"}],"id":4793,"name":"SourceUnit","src":"767:9569:28"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[6167],"TokenWhitelist":[7067]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":6081,"name":"PragmaDirective","src":"774:24:29"},{"attributes":{"SourceUnit":294,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6082,"name":"ImportDirective","src":"800:38:29"},{"attributes":{"SourceUnit":4249,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6083,"name":"ImportDirective","src":"839:39:29"},{"attributes":{"SourceUnit":9572,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6084,"name":"ImportDirective","src":"879:36:29"},{"attributes":{"SourceUnit":9461,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6085,"name":"ImportDirective","src":"916:33:29"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6086,"name":"ImportDirective","src":"950:34:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[6167],"name":"ITokenWhitelist","scope":7068},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6087,"name":"ElementaryTypeName","src":"1124:7:29"}],"id":6088,"name":"VariableDeclaration","src":"1124:7:29"}],"id":6089,"name":"ParameterList","src":"1123:9:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6090,"name":"ElementaryTypeName","src":"1156:6:29"}],"id":6091,"name":"VariableDeclaration","src":"1156:13:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6092,"name":"ElementaryTypeName","src":"1171:7:29"}],"id":6093,"name":"VariableDeclaration","src":"1171:7:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6094,"name":"ElementaryTypeName","src":"1180:7:29"}],"id":6095,"name":"VariableDeclaration","src":"1180:7:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6096,"name":"ElementaryTypeName","src":"1189:4:29"}],"id":6097,"name":"VariableDeclaration","src":"1189:4:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6098,"name":"ElementaryTypeName","src":"1195:4:29"}],"id":6099,"name":"VariableDeclaration","src":"1195:4:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6100,"name":"ElementaryTypeName","src":"1201:4:29"}],"id":6101,"name":"VariableDeclaration","src":"1201:4:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6102,"name":"ElementaryTypeName","src":"1207:7:29"}],"id":6103,"name":"VariableDeclaration","src":"1207:7:29"}],"id":6104,"name":"ParameterList","src":"1155:60:29"}],"id":6105,"name":"FunctionDefinition","src":"1102:114:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6106,"name":"ParameterList","src":"1248:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6107,"name":"ElementaryTypeName","src":"1274:6:29"}],"id":6108,"name":"VariableDeclaration","src":"1274:13:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6109,"name":"ElementaryTypeName","src":"1289:7:29"}],"id":6110,"name":"VariableDeclaration","src":"1289:7:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6111,"name":"ElementaryTypeName","src":"1298:7:29"}],"id":6112,"name":"VariableDeclaration","src":"1298:7:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6113,"name":"ElementaryTypeName","src":"1307:4:29"}],"id":6114,"name":"VariableDeclaration","src":"1307:4:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6115,"name":"ElementaryTypeName","src":"1313:4:29"}],"id":6116,"name":"VariableDeclaration","src":"1313:4:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6117,"name":"ElementaryTypeName","src":"1319:4:29"}],"id":6118,"name":"VariableDeclaration","src":"1319:4:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6119,"name":"ElementaryTypeName","src":"1325:7:29"}],"id":6120,"name":"VariableDeclaration","src":"1325:7:29"}],"id":6121,"name":"ParameterList","src":"1273:60:29"}],"id":6122,"name":"FunctionDefinition","src":"1222:112:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6123,"name":"ParameterList","src":"1366:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6128,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6124,"name":"ElementaryTypeName","src":"1392:7:29"}],"id":6125,"name":"ArrayTypeName","src":"1392:9:29"}],"id":6126,"name":"VariableDeclaration","src":"1392:16:29"}],"id":6127,"name":"ParameterList","src":"1391:18:29"}],"id":6128,"name":"FunctionDefinition","src":"1340:70:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6129,"name":"ParameterList","src":"1441:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6134,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6130,"name":"ElementaryTypeName","src":"1467:7:29"}],"id":6131,"name":"ArrayTypeName","src":"1467:9:29"}],"id":6132,"name":"VariableDeclaration","src":"1467:16:29"}],"id":6133,"name":"ParameterList","src":"1466:18:29"}],"id":6134,"name":"FunctionDefinition","src":"1416:69:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":6141,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6135,"name":"ElementaryTypeName","src":"1518:6:29"}],"id":6136,"name":"VariableDeclaration","src":"1518:6:29"}],"id":6137,"name":"ParameterList","src":"1517:8:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6141,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6138,"name":"ElementaryTypeName","src":"1549:4:29"}],"id":6139,"name":"VariableDeclaration","src":"1549:4:29"}],"id":6140,"name":"ParameterList","src":"1548:6:29"}],"id":6141,"name":"FunctionDefinition","src":"1491:64:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":6152,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6142,"name":"ElementaryTypeName","src":"1597:7:29"}],"id":6143,"name":"VariableDeclaration","src":"1597:7:29"},{"attributes":{"constant":false,"name":"","scope":6152,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6144,"name":"ElementaryTypeName","src":"1606:5:29"}],"id":6145,"name":"VariableDeclaration","src":"1606:14:29"}],"id":6146,"name":"ParameterList","src":"1596:25:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6152,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6147,"name":"ElementaryTypeName","src":"1645:7:29"}],"id":6148,"name":"VariableDeclaration","src":"1645:7:29"},{"attributes":{"constant":false,"name":"","scope":6152,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6149,"name":"ElementaryTypeName","src":"1654:7:29"}],"id":6150,"name":"VariableDeclaration","src":"1654:7:29"}],"id":6151,"name":"ParameterList","src":"1644:18:29"}],"id":6152,"name":"FunctionDefinition","src":"1561:102:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6153,"name":"ParameterList","src":"1688:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6157,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6154,"name":"ElementaryTypeName","src":"1714:7:29"}],"id":6155,"name":"VariableDeclaration","src":"1714:7:29"}],"id":6156,"name":"ParameterList","src":"1713:9:29"}],"id":6157,"name":"FunctionDefinition","src":"1669:54:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":6167,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":6166,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6158,"name":"ElementaryTypeName","src":"1754:7:29"}],"id":6159,"name":"VariableDeclaration","src":"1754:7:29"},{"attributes":{"constant":false,"name":"","scope":6166,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6160,"name":"ElementaryTypeName","src":"1763:7:29"}],"id":6161,"name":"VariableDeclaration","src":"1763:7:29"},{"attributes":{"constant":false,"name":"","scope":6166,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6162,"name":"ElementaryTypeName","src":"1772:7:29"}],"id":6163,"name":"VariableDeclaration","src":"1772:7:29"}],"id":6164,"name":"ParameterList","src":"1753:27:29"},{"attributes":{"parameters":[null]},"children":[],"id":6165,"name":"ParameterList","src":"1789:0:29"}],"id":6166,"name":"FunctionDefinition","src":"1729:61:29"}],"id":6167,"name":"ContractDefinition","src":"1070:722:29"},{"attributes":{"contractDependencies":[293,338,4248],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[7067,4248,293,338],"name":"TokenWhitelist","scope":7068},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":6168,"name":"UserDefinedTypeName","src":"1966:13:29"}],"id":6169,"name":"InheritanceSpecifier","src":"1966:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":293,"type":"contract Controllable"},"id":6170,"name":"UserDefinedTypeName","src":"1981:12:29"}],"id":6171,"name":"InheritanceSpecifier","src":"1981:12:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4248,"type":"contract Transferrable"},"id":6172,"name":"UserDefinedTypeName","src":"1995:13:29"}],"id":6173,"name":"InheritanceSpecifier","src":"1995:13:29"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":9460,"type":"library strings"},"id":6174,"name":"UserDefinedTypeName","src":"2021:7:29"}],"id":6175,"name":"UsingForDirective","src":"2015:20:29"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":6176,"name":"UserDefinedTypeName","src":"2046:8:29"},{"attributes":{"name":"uint256","type":"uint256"},"id":6177,"name":"ElementaryTypeName","src":"2059:7:29"}],"id":6178,"name":"UsingForDirective","src":"2040:27:29"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":9571,"type":"library BytesUtils"},"id":6179,"name":"UserDefinedTypeName","src":"2078:10:29"},{"attributes":{"name":"bytes","type":"bytes"},"id":6180,"name":"ElementaryTypeName","src":"2093:5:29"}],"id":6181,"name":"UsingForDirective","src":"2072:27:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6189,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6182,"name":"ElementaryTypeName","src":"2128:7:29"}],"id":6183,"name":"VariableDeclaration","src":"2128:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6189,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6184,"name":"ElementaryTypeName","src":"2145:7:29"}],"id":6185,"name":"VariableDeclaration","src":"2145:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":6189,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6186,"name":"ElementaryTypeName","src":"2161:7:29"}],"id":6187,"name":"VariableDeclaration","src":"2161:13:29"}],"id":6188,"name":"ParameterList","src":"2127:48:29"}],"id":6189,"name":"EventDefinition","src":"2105:71:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6197,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6190,"name":"ElementaryTypeName","src":"2209:7:29"}],"id":6191,"name":"VariableDeclaration","src":"2209:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6197,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6192,"name":"ElementaryTypeName","src":"2226:7:29"}],"id":6193,"name":"VariableDeclaration","src":"2226:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":6197,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6194,"name":"ElementaryTypeName","src":"2242:4:29"}],"id":6195,"name":"VariableDeclaration","src":"2242:14:29"}],"id":6196,"name":"ParameterList","src":"2208:49:29"}],"id":6197,"name":"EventDefinition","src":"2182:76:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6198,"name":"ElementaryTypeName","src":"2292:7:29"}],"id":6199,"name":"VariableDeclaration","src":"2292:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6200,"name":"ElementaryTypeName","src":"2309:7:29"}],"id":6201,"name":"VariableDeclaration","src":"2309:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":6205,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6202,"name":"ElementaryTypeName","src":"2325:4:29"}],"id":6203,"name":"VariableDeclaration","src":"2325:16:29"}],"id":6204,"name":"ParameterList","src":"2291:51:29"}],"id":6205,"name":"EventDefinition","src":"2263:80:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6219,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6206,"name":"ElementaryTypeName","src":"2366:7:29"}],"id":6207,"name":"VariableDeclaration","src":"2366:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6219,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6208,"name":"ElementaryTypeName","src":"2383:7:29"}],"id":6209,"name":"VariableDeclaration","src":"2383:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":6219,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6210,"name":"ElementaryTypeName","src":"2399:6:29"}],"id":6211,"name":"VariableDeclaration","src":"2399:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":6219,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6212,"name":"ElementaryTypeName","src":"2415:7:29"}],"id":6213,"name":"VariableDeclaration","src":"2415:18:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":6219,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6214,"name":"ElementaryTypeName","src":"2435:4:29"}],"id":6215,"name":"VariableDeclaration","src":"2435:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":6219,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6216,"name":"ElementaryTypeName","src":"2451:4:29"}],"id":6217,"name":"VariableDeclaration","src":"2451:16:29"}],"id":6218,"name":"ParameterList","src":"2365:103:29"}],"id":6219,"name":"EventDefinition","src":"2349:120:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6225,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6220,"name":"ElementaryTypeName","src":"2493:7:29"}],"id":6221,"name":"VariableDeclaration","src":"2493:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6225,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6222,"name":"ElementaryTypeName","src":"2510:7:29"}],"id":6223,"name":"VariableDeclaration","src":"2510:14:29"}],"id":6224,"name":"ParameterList","src":"2492:33:29"}],"id":6225,"name":"EventDefinition","src":"2474:52:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":6229,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6226,"name":"ElementaryTypeName","src":"2552:6:29"}],"id":6227,"name":"VariableDeclaration","src":"2552:16:29"}],"id":6228,"name":"ParameterList","src":"2551:18:29"}],"id":6229,"name":"EventDefinition","src":"2532:38:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":6233,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6230,"name":"ElementaryTypeName","src":"2597:6:29"}],"id":6231,"name":"VariableDeclaration","src":"2597:16:29"}],"id":6232,"name":"ParameterList","src":"2596:18:29"}],"id":6233,"name":"EventDefinition","src":"2575:40:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6239,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6234,"name":"ElementaryTypeName","src":"2647:7:29"}],"id":6235,"name":"VariableDeclaration","src":"2647:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":6239,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6236,"name":"ElementaryTypeName","src":"2663:6:29"}],"id":6237,"name":"VariableDeclaration","src":"2663:16:29"}],"id":6238,"name":"ParameterList","src":"2646:34:29"}],"id":6239,"name":"EventDefinition","src":"2620:61:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6245,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6240,"name":"ElementaryTypeName","src":"2715:7:29"}],"id":6241,"name":"VariableDeclaration","src":"2715:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":6245,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6242,"name":"ElementaryTypeName","src":"2731:6:29"}],"id":6243,"name":"VariableDeclaration","src":"2731:16:29"}],"id":6244,"name":"ParameterList","src":"2714:34:29"}],"id":6245,"name":"EventDefinition","src":"2686:63:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":6253,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6246,"name":"ElementaryTypeName","src":"2769:7:29"}],"id":6247,"name":"VariableDeclaration","src":"2769:11:29"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":6253,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6248,"name":"ElementaryTypeName","src":"2782:7:29"}],"id":6249,"name":"VariableDeclaration","src":"2782:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":6253,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6250,"name":"ElementaryTypeName","src":"2798:7:29"}],"id":6251,"name":"VariableDeclaration","src":"2798:15:29"}],"id":6252,"name":"ParameterList","src":"2768:46:29"}],"id":6253,"name":"EventDefinition","src":"2755:60:29"},{"attributes":{"constant":true,"name":"_APPROVE","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6254,"name":"ElementaryTypeName","src":"2924:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":6255,"name":"Literal","src":"2959:10:29"}],"id":6256,"name":"VariableDeclaration","src":"2924:45:29"},{"attributes":{"constant":true,"name":"_BURN","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6257,"name":"ElementaryTypeName","src":"3028:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":6258,"name":"Literal","src":"3060:10:29"}],"id":6259,"name":"VariableDeclaration","src":"3028:42:29"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6260,"name":"ElementaryTypeName","src":"3118:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":6261,"name":"Literal","src":"3154:10:29"}],"id":6262,"name":"VariableDeclaration","src":"3118:46:29"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6263,"name":"ElementaryTypeName","src":"3224:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":6264,"name":"Literal","src":"3265:10:29"}],"id":6265,"name":"VariableDeclaration","src":"3224:51:29"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":7067,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":6280,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6266,"name":"ElementaryTypeName","src":"3371:6:29"}],"id":6267,"name":"VariableDeclaration","src":"3371:13:29"},{"attributes":{"constant":false,"name":"magnitude","scope":6280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6268,"name":"ElementaryTypeName","src":"3410:7:29"}],"id":6269,"name":"VariableDeclaration","src":"3410:17:29"},{"attributes":{"constant":false,"name":"rate","scope":6280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6270,"name":"ElementaryTypeName","src":"3452:7:29"}],"id":6271,"name":"VariableDeclaration","src":"3452:12:29"},{"attributes":{"constant":false,"name":"available","scope":6280,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6272,"name":"ElementaryTypeName","src":"3504:4:29"}],"id":6273,"name":"VariableDeclaration","src":"3504:14:29"},{"attributes":{"constant":false,"name":"loadable","scope":6280,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6274,"name":"ElementaryTypeName","src":"3570:4:29"}],"id":6275,"name":"VariableDeclaration","src":"3570:13:29"},{"attributes":{"constant":false,"name":"redeemable","scope":6280,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6276,"name":"ElementaryTypeName","src":"3640:4:29"}],"id":6277,"name":"VariableDeclaration","src":"3640:15:29"},{"attributes":{"constant":false,"name":"lastUpdate","scope":6280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6278,"name":"ElementaryTypeName","src":"3724:7:29"}],"id":6279,"name":"VariableDeclaration","src":"3724:18:29"}],"id":6280,"name":"StructDefinition","src":"3348:433:29"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":7067,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":6281,"name":"ElementaryTypeName","src":"3795:7:29"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":6280,"type":"struct TokenWhitelist.Token"},"id":6282,"name":"UserDefinedTypeName","src":"3806:5:29"}],"id":6283,"name":"Mapping","src":"3787:25:29"}],"id":6284,"name":"VariableDeclaration","src":"3787:47:29"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":7067,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6285,"name":"ElementaryTypeName","src":"4004:6:29"},{"attributes":{"name":"bool","type":"bool"},"id":6286,"name":"ElementaryTypeName","src":"4014:4:29"}],"id":6287,"name":"Mapping","src":"3996:23:29"}],"id":6288,"name":"VariableDeclaration","src":"3996:50:29"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":7067,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6289,"name":"ElementaryTypeName","src":"4053:7:29"}],"id":6290,"name":"ArrayTypeName","src":"4053:9:29"}],"id":6291,"name":"VariableDeclaration","src":"4053:36:29"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":7067,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6292,"name":"ElementaryTypeName","src":"4182:7:29"}],"id":6293,"name":"VariableDeclaration","src":"4182:34:29"},{"attributes":{"constant":false,"name":"_stablecoin","scope":7067,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6294,"name":"ElementaryTypeName","src":"4266:7:29"}],"id":6295,"name":"VariableDeclaration","src":"4266:27:29"},{"attributes":{"constant":false,"name":"_oracleNode","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6296,"name":"ElementaryTypeName","src":"4372:7:29"}],"id":6297,"name":"VariableDeclaration","src":"4372:27:29"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":6347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6298,"name":"ElementaryTypeName","src":"4770:7:29"}],"id":6299,"name":"VariableDeclaration","src":"4770:13:29"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":6347,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6300,"name":"ElementaryTypeName","src":"4785:7:29"}],"id":6301,"name":"VariableDeclaration","src":"4785:20:29"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":6347,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6302,"name":"ElementaryTypeName","src":"4807:7:29"}],"id":6303,"name":"VariableDeclaration","src":"4807:24:29"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":6347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6304,"name":"ElementaryTypeName","src":"4833:7:29"}],"id":6305,"name":"VariableDeclaration","src":"4833:27:29"}],"id":6306,"name":"ParameterList","src":"4769:92:29"},{"attributes":{"parameters":[null]},"children":[],"id":6313,"name":"ParameterList","src":"4949:0:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":338,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":6307,"name":"Identifier","src":"4885:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6299,"type":"address","value":"_ens_"},"id":6308,"name":"Identifier","src":"4899:5:29"}],"id":6309,"name":"ModifierInvocation","src":"4885:20:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"type(contract Controllable)","value":"Controllable"},"id":6310,"name":"Identifier","src":"4914:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6303,"type":"bytes32","value":"_controllerNode_"},"id":6311,"name":"Identifier","src":"4927:16:29"}],"id":6312,"name":"ModifierInvocation","src":"4914:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"bytes32","value":"_oracleNode"},"id":6314,"name":"Identifier","src":"4959:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6301,"type":"bytes32","value":"_oracleNode_"},"id":6315,"name":"Identifier","src":"4973:12:29"}],"id":6316,"name":"Assignment","src":"4959:26:29"}],"id":6317,"name":"ExpressionStatement","src":"4959:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6295,"type":"address","value":"_stablecoin"},"id":6318,"name":"Identifier","src":"4995:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6305,"type":"address","value":"_stablecoinAddress_"},"id":6319,"name":"Identifier","src":"5009:19:29"}],"id":6320,"name":"Assignment","src":"4995:33:29"}],"id":6321,"name":"ExpressionStatement","src":"4995:33:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":6322,"name":"Identifier","src":"5083:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6256,"type":"bytes4","value":"_APPROVE"},"id":6323,"name":"Identifier","src":"5102:8:29"}],"id":6324,"name":"IndexAccess","src":"5083:28:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6325,"name":"Literal","src":"5114:4:29"}],"id":6326,"name":"Assignment","src":"5083:35:29"}],"id":6327,"name":"ExpressionStatement","src":"5083:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":6328,"name":"Identifier","src":"5128:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6259,"type":"bytes4","value":"_BURN"},"id":6329,"name":"Identifier","src":"5147:5:29"}],"id":6330,"name":"IndexAccess","src":"5128:25:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6331,"name":"Literal","src":"5156:4:29"}],"id":6332,"name":"Assignment","src":"5128:32:29"}],"id":6333,"name":"ExpressionStatement","src":"5128:32:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":6334,"name":"Identifier","src":"5170:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6262,"type":"bytes4","value":"_TRANSFER"},"id":6335,"name":"Identifier","src":"5189:9:29"}],"id":6336,"name":"IndexAccess","src":"5170:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6337,"name":"Literal","src":"5202:4:29"}],"id":6338,"name":"Assignment","src":"5170:36:29"}],"id":6339,"name":"ExpressionStatement","src":"5170:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":6340,"name":"Identifier","src":"5216:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6265,"type":"bytes4","value":"_TRANSFER_FROM"},"id":6341,"name":"Identifier","src":"5235:14:29"}],"id":6342,"name":"IndexAccess","src":"5216:34:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6343,"name":"Literal","src":"5253:4:29"}],"id":6344,"name":"Assignment","src":"5216:41:29"}],"id":6345,"name":"ExpressionStatement","src":"5216:41:29"}],"id":6346,"name":"Block","src":"4949:315:29"}],"id":6347,"name":"FunctionDefinition","src":"4758:506:29"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6348,"name":"ParameterList","src":"5296:2:29"},{"children":[{"attributes":{"assignments":[6350]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":6369,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6349,"name":"ElementaryTypeName","src":"5309:7:29"}],"id":6350,"name":"VariableDeclaration","src":"5309:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":6351,"name":"Identifier","src":"5333:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"bytes32","value":"_oracleNode"},"id":6352,"name":"Identifier","src":"5345:11:29"}],"id":6353,"name":"FunctionCall","src":"5333:24:29"}],"id":6354,"name":"VariableDeclarationStatement","src":"5309:48:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6355,"name":"Identifier","src":"5367:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":292,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":6356,"name":"Identifier","src":"5375:8:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6357,"name":"Identifier","src":"5384:3:29"}],"id":6358,"name":"MemberAccess","src":"5384:10:29"}],"id":6359,"name":"FunctionCall","src":"5375:20:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6360,"name":"Identifier","src":"5399:3:29"}],"id":6361,"name":"MemberAccess","src":"5399:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6350,"type":"address","value":"oracleAddress"},"id":6362,"name":"Identifier","src":"5413:13:29"}],"id":6363,"name":"BinaryOperation","src":"5399:27:29"}],"id":6364,"name":"BinaryOperation","src":"5375:51:29"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":6365,"name":"Literal","src":"5428:24:29"}],"id":6366,"name":"FunctionCall","src":"5367:86:29"}],"id":6367,"name":"ExpressionStatement","src":"5367:86:29"},{"id":6368,"name":"PlaceholderStatement","src":"5463:1:29"}],"id":6369,"name":"Block","src":"5299:172:29"}],"id":6370,"name":"ModifierDefinition","src":"5270:201:29"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6371,"name":"ElementaryTypeName","src":"6068:7:29"}],"id":6372,"name":"ArrayTypeName","src":"6068:9:29"}],"id":6373,"name":"VariableDeclaration","src":"6068:26:29"},{"attributes":{"constant":false,"name":"_symbols","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6374,"name":"ElementaryTypeName","src":"6104:7:29"}],"id":6375,"name":"ArrayTypeName","src":"6104:9:29"}],"id":6376,"name":"VariableDeclaration","src":"6104:27:29"},{"attributes":{"constant":false,"name":"_magnitude","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6377,"name":"ElementaryTypeName","src":"6141:7:29"}],"id":6378,"name":"ArrayTypeName","src":"6141:9:29"}],"id":6379,"name":"VariableDeclaration","src":"6141:29:29"},{"attributes":{"constant":false,"name":"_loadable","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6380,"name":"ElementaryTypeName","src":"6180:4:29"}],"id":6381,"name":"ArrayTypeName","src":"6180:6:29"}],"id":6382,"name":"VariableDeclaration","src":"6180:25:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6383,"name":"ElementaryTypeName","src":"6215:4:29"}],"id":6384,"name":"ArrayTypeName","src":"6215:6:29"}],"id":6385,"name":"VariableDeclaration","src":"6215:27:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":6514,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6386,"name":"ElementaryTypeName","src":"6252:7:29"}],"id":6387,"name":"VariableDeclaration","src":"6252:19:29"}],"id":6388,"name":"ParameterList","src":"6058:219:29"},{"attributes":{"parameters":[null]},"children":[],"id":6391,"name":"ParameterList","src":"6297:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6389,"name":"Identifier","src":"6287:9:29"}],"id":6390,"name":"ModifierInvocation","src":"6287:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6392,"name":"Identifier","src":"6368:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6393,"name":"Identifier","src":"6389:7:29"}],"id":6394,"name":"MemberAccess","src":"6389:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6376,"type":"bytes32[] calldata","value":"_symbols"},"id":6395,"name":"Identifier","src":"6407:8:29"}],"id":6396,"name":"MemberAccess","src":"6407:15:29"}],"id":6397,"name":"BinaryOperation","src":"6389:33:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6398,"name":"Identifier","src":"6442:7:29"}],"id":6399,"name":"MemberAccess","src":"6442:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6379,"type":"uint256[] calldata","value":"_magnitude"},"id":6400,"name":"Identifier","src":"6460:10:29"}],"id":6401,"name":"MemberAccess","src":"6460:17:29"}],"id":6402,"name":"BinaryOperation","src":"6442:35:29"}],"id":6403,"name":"BinaryOperation","src":"6389:88:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6404,"name":"Identifier","src":"6497:7:29"}],"id":6405,"name":"MemberAccess","src":"6497:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6382,"type":"bool[] calldata","value":"_loadable"},"id":6406,"name":"Identifier","src":"6515:9:29"}],"id":6407,"name":"MemberAccess","src":"6515:16:29"}],"id":6408,"name":"BinaryOperation","src":"6497:34:29"}],"id":6409,"name":"BinaryOperation","src":"6389:142:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6410,"name":"Identifier","src":"6551:7:29"}],"id":6411,"name":"MemberAccess","src":"6551:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6382,"type":"bool[] calldata","value":"_loadable"},"id":6412,"name":"Identifier","src":"6569:9:29"}],"id":6413,"name":"MemberAccess","src":"6569:16:29"}],"id":6414,"name":"BinaryOperation","src":"6551:34:29"}],"id":6415,"name":"BinaryOperation","src":"6389:196:29"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":6416,"name":"Literal","src":"6599:32:29"}],"id":6417,"name":"FunctionCall","src":"6368:273:29"}],"id":6418,"name":"ExpressionStatement","src":"6368:273:29"},{"children":[{"attributes":{"assignments":[6420]},"children":[{"attributes":{"constant":false,"name":"i","scope":6512,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6419,"name":"ElementaryTypeName","src":"6715:7:29"}],"id":6420,"name":"VariableDeclaration","src":"6715:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6421,"name":"Literal","src":"6727:1:29"}],"id":6422,"name":"VariableDeclarationStatement","src":"6715:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6423,"name":"Identifier","src":"6730:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6424,"name":"Identifier","src":"6734:7:29"}],"id":6425,"name":"MemberAccess","src":"6734:14:29"}],"id":6426,"name":"BinaryOperation","src":"6730:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6427,"name":"Identifier","src":"6750:1:29"}],"id":6428,"name":"UnaryOperation","src":"6750:3:29"}],"id":6429,"name":"ExpressionStatement","src":"6750:3:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6430,"name":"Identifier","src":"6832:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6431,"name":"Identifier","src":"6841:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6432,"name":"Identifier","src":"6855:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6433,"name":"Identifier","src":"6863:1:29"}],"id":6434,"name":"IndexAccess","src":"6855:10:29"}],"id":6435,"name":"IndexAccess","src":"6841:25:29"}],"id":6436,"name":"MemberAccess","src":"6841:35:29"}],"id":6437,"name":"UnaryOperation","src":"6840:36:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":6438,"name":"Literal","src":"6878:25:29"}],"id":6439,"name":"FunctionCall","src":"6832:72:29"}],"id":6440,"name":"ExpressionStatement","src":"6832:72:29"},{"attributes":{"assignments":[6442]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":6511,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6441,"name":"ElementaryTypeName","src":"6964:6:29"}],"id":6442,"name":"VariableDeclaration","src":"6964:20:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":8009,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":7964,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6376,"type":"bytes32[] calldata","value":"_symbols"},"id":6443,"name":"Identifier","src":"6987:8:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6444,"name":"Identifier","src":"6996:1:29"}],"id":6445,"name":"IndexAccess","src":"6987:11:29"}],"id":6446,"name":"MemberAccess","src":"6987:22:29"}],"id":6447,"name":"FunctionCall","src":"6987:24:29"}],"id":6448,"name":"MemberAccess","src":"6987:33:29"}],"id":6449,"name":"FunctionCall","src":"6987:35:29"}],"id":6450,"name":"VariableDeclarationStatement","src":"6964:58:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6451,"name":"Identifier","src":"7084:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6452,"name":"Identifier","src":"7098:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6453,"name":"Identifier","src":"7106:1:29"}],"id":6454,"name":"IndexAccess","src":"7098:10:29"}],"id":6455,"name":"IndexAccess","src":"7084:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6280,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":6456,"name":"Identifier","src":"7112:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6442,"type":"string memory","value":"symbol"},"id":6457,"name":"Identifier","src":"7144:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6379,"type":"uint256[] calldata","value":"_magnitude"},"id":6458,"name":"Identifier","src":"7179:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6459,"name":"Identifier","src":"7190:1:29"}],"id":6460,"name":"IndexAccess","src":"7179:13:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6461,"name":"Literal","src":"7216:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6462,"name":"Literal","src":"7246:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6382,"type":"bool[] calldata","value":"_loadable"},"id":6463,"name":"Identifier","src":"7278:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6464,"name":"Identifier","src":"7288:1:29"}],"id":6465,"name":"IndexAccess","src":"7278:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"bool[] calldata","value":"_redeemable"},"id":6466,"name":"Identifier","src":"7320:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6467,"name":"Identifier","src":"7332:1:29"}],"id":6468,"name":"IndexAccess","src":"7320:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"uint256","value":"_lastUpdate"},"id":6469,"name":"Identifier","src":"7364:11:29"}],"id":6470,"name":"FunctionCall","src":"7112:278:29"}],"id":6471,"name":"Assignment","src":"7084:306:29"}],"id":6472,"name":"ExpressionStatement","src":"7084:306:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6473,"name":"Identifier","src":"7462:18:29"}],"id":6475,"name":"MemberAccess","src":"7462:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6476,"name":"Identifier","src":"7486:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6477,"name":"Identifier","src":"7494:1:29"}],"id":6478,"name":"IndexAccess","src":"7486:10:29"}],"id":6479,"name":"FunctionCall","src":"7462:35:29"}],"id":6480,"name":"ExpressionStatement","src":"7462:35:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"bool[] calldata","value":"_redeemable"},"id":6481,"name":"Identifier","src":"7587:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6482,"name":"Identifier","src":"7599:1:29"}],"id":6483,"name":"IndexAccess","src":"7587:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6484,"name":"Identifier","src":"7621:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6485,"name":"Identifier","src":"7642:18:29"}],"id":6486,"name":"MemberAccess","src":"7642:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6487,"name":"Literal","src":"7665:1:29"}],"id":6488,"name":"FunctionCall","src":"7642:25:29"}],"id":6489,"name":"Assignment","src":"7621:46:29"}],"id":6490,"name":"ExpressionStatement","src":"7621:46:29"}],"id":6491,"name":"Block","src":"7603:79:29"}],"id":6492,"name":"IfStatement","src":"7583:99:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6219,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":6493,"name":"Identifier","src":"7742:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6494,"name":"Identifier","src":"7753:3:29"}],"id":6495,"name":"MemberAccess","src":"7753:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6496,"name":"Identifier","src":"7765:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6497,"name":"Identifier","src":"7773:1:29"}],"id":6498,"name":"IndexAccess","src":"7765:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6442,"type":"string memory","value":"symbol"},"id":6499,"name":"Identifier","src":"7777:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6379,"type":"uint256[] calldata","value":"_magnitude"},"id":6500,"name":"Identifier","src":"7785:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6501,"name":"Identifier","src":"7796:1:29"}],"id":6502,"name":"IndexAccess","src":"7785:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6382,"type":"bool[] calldata","value":"_loadable"},"id":6503,"name":"Identifier","src":"7800:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6504,"name":"Identifier","src":"7810:1:29"}],"id":6505,"name":"IndexAccess","src":"7800:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"bool[] calldata","value":"_redeemable"},"id":6506,"name":"Identifier","src":"7814:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6507,"name":"Identifier","src":"7826:1:29"}],"id":6508,"name":"IndexAccess","src":"7814:14:29"}],"id":6509,"name":"FunctionCall","src":"7742:87:29"}],"id":6510,"name":"EmitStatement","src":"7737:92:29"}],"id":6511,"name":"Block","src":"6755:1085:29"}],"id":6512,"name":"ForStatement","src":"6710:1130:29"}],"id":6513,"name":"Block","src":"6297:1549:29"}],"id":6514,"name":"FunctionDefinition","src":"6040:1806:29"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":6615,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6515,"name":"ElementaryTypeName","src":"7995:7:29"}],"id":6516,"name":"ArrayTypeName","src":"7995:9:29"}],"id":6517,"name":"VariableDeclaration","src":"7995:26:29"}],"id":6518,"name":"ParameterList","src":"7994:28:29"},{"attributes":{"parameters":[null]},"children":[],"id":6521,"name":"ParameterList","src":"8042:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6519,"name":"Identifier","src":"8032:9:29"}],"id":6520,"name":"ModifierInvocation","src":"8032:9:29"},{"children":[{"children":[{"attributes":{"assignments":[6523]},"children":[{"attributes":{"constant":false,"name":"i","scope":6613,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6522,"name":"ElementaryTypeName","src":"8160:7:29"}],"id":6523,"name":"VariableDeclaration","src":"8160:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6524,"name":"Literal","src":"8172:1:29"}],"id":6525,"name":"VariableDeclarationStatement","src":"8160:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6523,"type":"uint256","value":"i"},"id":6526,"name":"Identifier","src":"8175:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6517,"type":"address[] calldata","value":"_tokens"},"id":6527,"name":"Identifier","src":"8179:7:29"}],"id":6528,"name":"MemberAccess","src":"8179:14:29"}],"id":6529,"name":"BinaryOperation","src":"8175:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6523,"type":"uint256","value":"i"},"id":6530,"name":"Identifier","src":"8195:1:29"}],"id":6531,"name":"UnaryOperation","src":"8195:3:29"}],"id":6532,"name":"ExpressionStatement","src":"8195:3:29"},{"children":[{"attributes":{"assignments":[6534]},"children":[{"attributes":{"constant":false,"name":"token","scope":6612,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6533,"name":"ElementaryTypeName","src":"8254:7:29"}],"id":6534,"name":"VariableDeclaration","src":"8254:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6517,"type":"address[] calldata","value":"_tokens"},"id":6535,"name":"Identifier","src":"8270:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6523,"type":"uint256","value":"i"},"id":6536,"name":"Identifier","src":"8278:1:29"}],"id":6537,"name":"IndexAccess","src":"8270:10:29"}],"id":6538,"name":"VariableDeclarationStatement","src":"8254:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6539,"name":"Identifier","src":"8363:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6540,"name":"Identifier","src":"8371:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6541,"name":"Identifier","src":"8385:5:29"}],"id":6542,"name":"IndexAccess","src":"8371:20:29"}],"id":6543,"name":"MemberAccess","src":"8371:30:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":6544,"name":"Literal","src":"8403:24:29"}],"id":6545,"name":"FunctionCall","src":"8363:65:29"}],"id":6546,"name":"ExpressionStatement","src":"8363:65:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6547,"name":"Identifier","src":"8518:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6548,"name":"Identifier","src":"8532:5:29"}],"id":6549,"name":"IndexAccess","src":"8518:20:29"}],"id":6550,"name":"MemberAccess","src":"8518:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6551,"name":"Identifier","src":"8569:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6552,"name":"Identifier","src":"8590:18:29"}],"id":6553,"name":"MemberAccess","src":"8590:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6554,"name":"Literal","src":"8613:1:29"}],"id":6555,"name":"FunctionCall","src":"8590:25:29"}],"id":6556,"name":"Assignment","src":"8569:46:29"}],"id":6557,"name":"ExpressionStatement","src":"8569:46:29"}],"id":6558,"name":"Block","src":"8551:79:29"}],"id":6559,"name":"IfStatement","src":"8514:116:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6560,"name":"Identifier","src":"8690:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6561,"name":"Identifier","src":"8704:5:29"}],"id":6562,"name":"IndexAccess","src":"8690:20:29"}],"id":6563,"name":"UnaryOperation","src":"8683:27:29"}],"id":6564,"name":"ExpressionStatement","src":"8683:27:29"},{"children":[{"attributes":{"assignments":[6566]},"children":[{"attributes":{"constant":false,"name":"j","scope":6600,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6565,"name":"ElementaryTypeName","src":"8792:7:29"}],"id":6566,"name":"VariableDeclaration","src":"8792:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6567,"name":"Literal","src":"8804:1:29"}],"id":6568,"name":"VariableDeclarationStatement","src":"8792:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"j"},"id":6569,"name":"Identifier","src":"8807:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6570,"name":"Identifier","src":"8811:18:29"}],"id":6571,"name":"MemberAccess","src":"8811:25:29"}],"id":6572,"name":"MemberAccess","src":"8811:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6573,"name":"Literal","src":"8841:1:29"}],"id":6574,"name":"FunctionCall","src":"8811:32:29"}],"id":6575,"name":"BinaryOperation","src":"8807:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"j"},"id":6576,"name":"Identifier","src":"8845:1:29"}],"id":6577,"name":"UnaryOperation","src":"8845:3:29"}],"id":6578,"name":"ExpressionStatement","src":"8845:3:29"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6579,"name":"Identifier","src":"8872:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"j"},"id":6580,"name":"Identifier","src":"8891:1:29"}],"id":6581,"name":"IndexAccess","src":"8872:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6582,"name":"Identifier","src":"8897:5:29"}],"id":6583,"name":"BinaryOperation","src":"8872:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6584,"name":"Identifier","src":"8926:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"j"},"id":6585,"name":"Identifier","src":"8945:1:29"}],"id":6586,"name":"IndexAccess","src":"8926:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6587,"name":"Identifier","src":"8950:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6588,"name":"Identifier","src":"8969:18:29"}],"id":6589,"name":"MemberAccess","src":"8969:25:29"}],"id":6590,"name":"MemberAccess","src":"8969:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6591,"name":"Literal","src":"8999:1:29"}],"id":6592,"name":"FunctionCall","src":"8969:32:29"}],"id":6593,"name":"IndexAccess","src":"8950:52:29"}],"id":6594,"name":"Assignment","src":"8926:76:29"}],"id":6595,"name":"ExpressionStatement","src":"8926:76:29"},{"id":6596,"name":"Break","src":"9024:5:29"}],"id":6597,"name":"Block","src":"8904:144:29"}],"id":6598,"name":"IfStatement","src":"8868:180:29"}],"id":6599,"name":"Block","src":"8850:212:29"}],"id":6600,"name":"ForStatement","src":"8787:275:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6601,"name":"Identifier","src":"9075:18:29"}],"id":6603,"name":"MemberAccess","src":"9075:25:29"}],"id":6604,"name":"UnaryOperation","src":"9075:27:29"}],"id":6605,"name":"ExpressionStatement","src":"9075:27:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6225,"type":"function (address,address)","value":"RemovedToken"},"id":6606,"name":"Identifier","src":"9162:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6607,"name":"Identifier","src":"9175:3:29"}],"id":6608,"name":"MemberAccess","src":"9175:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6609,"name":"Identifier","src":"9187:5:29"}],"id":6610,"name":"FunctionCall","src":"9162:31:29"}],"id":6611,"name":"EmitStatement","src":"9157:36:29"}],"id":6612,"name":"Block","src":"8200:1004:29"}],"id":6613,"name":"ForStatement","src":"8155:1049:29"}],"id":6614,"name":"Block","src":"8042:1168:29"}],"id":6615,"name":"FunctionDefinition","src":"7973:1237:29"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":6728,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6616,"name":"ElementaryTypeName","src":"9404:7:29"}],"id":6617,"name":"VariableDeclaration","src":"9404:14:29"},{"attributes":{"constant":false,"name":"_data","scope":6728,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6618,"name":"ElementaryTypeName","src":"9420:5:29"}],"id":6619,"name":"VariableDeclaration","src":"9420:20:29"}],"id":6620,"name":"ParameterList","src":"9403:38:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6728,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6621,"name":"ElementaryTypeName","src":"9465:7:29"}],"id":6622,"name":"VariableDeclaration","src":"9465:7:29"},{"attributes":{"constant":false,"name":"","scope":6728,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6623,"name":"ElementaryTypeName","src":"9474:7:29"}],"id":6624,"name":"VariableDeclaration","src":"9474:7:29"}],"id":6625,"name":"ParameterList","src":"9464:18:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6626,"name":"Identifier","src":"9669:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6627,"name":"Identifier","src":"9677:5:29"}],"id":6628,"name":"MemberAccess","src":"9677:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6629,"name":"Literal","src":"9693:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6630,"name":"Literal","src":"9697:2:29"}],"id":6631,"name":"BinaryOperation","src":"9693:6:29"}],"id":6632,"name":"BinaryOperation","src":"9677:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":6633,"name":"Literal","src":"9701:34:29"}],"id":6634,"name":"FunctionCall","src":"9669:67:29"}],"id":6635,"name":"ExpressionStatement","src":"9669:67:29"},{"attributes":{"assignments":[6637]},"children":[{"attributes":{"constant":false,"name":"signature","scope":6727,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6636,"name":"ElementaryTypeName","src":"9782:6:29"}],"id":6637,"name":"VariableDeclaration","src":"9782:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":9536,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6638,"name":"Identifier","src":"9801:5:29"}],"id":6639,"name":"MemberAccess","src":"9801:20:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6640,"name":"Literal","src":"9822:1:29"}],"id":6641,"name":"FunctionCall","src":"9801:23:29"}],"id":6642,"name":"VariableDeclarationStatement","src":"9782:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6643,"name":"Identifier","src":"9877:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":6644,"name":"Identifier","src":"9885:22:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6617,"type":"address","value":"_token"},"id":6645,"name":"Identifier","src":"9908:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6637,"type":"bytes4","value":"signature"},"id":6646,"name":"Identifier","src":"9916:9:29"}],"id":6647,"name":"FunctionCall","src":"9885:41:29"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":6648,"name":"Literal","src":"9928:20:29"}],"id":6649,"name":"FunctionCall","src":"9877:72:29"}],"id":6650,"name":"ExpressionStatement","src":"9877:72:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6637,"type":"bytes4","value":"signature"},"id":6651,"name":"Identifier","src":"10048:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6259,"type":"bytes4","value":"_BURN"},"id":6652,"name":"Identifier","src":"10061:5:29"}],"id":6653,"name":"BinaryOperation","src":"10048:18:29"},{"children":[{"attributes":{"functionReturnParameters":6625},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6617,"type":"address","value":"_token"},"id":6654,"name":"Identifier","src":"10133:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9570,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6655,"name":"Identifier","src":"10141:5:29"}],"id":6656,"name":"MemberAccess","src":"10141:21:29"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6657,"name":"Literal","src":"10163:1:29"}],"id":6658,"name":"FunctionCall","src":"10141:24:29"}],"id":6659,"name":"TupleExpression","src":"10132:34:29"}],"id":6660,"name":"Return","src":"10125:41:29"}],"id":6661,"name":"Block","src":"10068:109:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6637,"type":"bytes4","value":"signature"},"id":6662,"name":"Identifier","src":"10187:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6265,"type":"bytes4","value":"_TRANSFER_FROM"},"id":6663,"name":"Identifier","src":"10200:14:29"}],"id":6664,"name":"BinaryOperation","src":"10187:27:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6665,"name":"Identifier","src":"10301:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6666,"name":"Identifier","src":"10309:5:29"}],"id":6667,"name":"MemberAccess","src":"10309:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6668,"name":"Literal","src":"10325:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6669,"name":"Literal","src":"10329:2:29"}],"id":6670,"name":"BinaryOperation","src":"10325:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6671,"name":"Literal","src":"10334:2:29"}],"id":6672,"name":"BinaryOperation","src":"10325:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6673,"name":"Literal","src":"10339:2:29"}],"id":6674,"name":"BinaryOperation","src":"10325:16:29"}],"id":6675,"name":"BinaryOperation","src":"10309:32:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":6676,"name":"Literal","src":"10343:34:29"}],"id":6677,"name":"FunctionCall","src":"10301:77:29"}],"id":6678,"name":"ExpressionStatement","src":"10301:77:29"},{"attributes":{"functionReturnParameters":6625},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":9502,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6679,"name":"Identifier","src":"10400:5:29"}],"id":6680,"name":"MemberAccess","src":"10400:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6681,"name":"Literal","src":"10422:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6682,"name":"Literal","src":"10426:2:29"}],"id":6683,"name":"BinaryOperation","src":"10422:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":6684,"name":"Literal","src":"10431:2:29"}],"id":6685,"name":"BinaryOperation","src":"10422:11:29"}],"id":6686,"name":"FunctionCall","src":"10400:34:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9570,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6687,"name":"Identifier","src":"10436:5:29"}],"id":6688,"name":"MemberAccess","src":"10436:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6689,"name":"Literal","src":"10458:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6690,"name":"Literal","src":"10462:2:29"}],"id":6691,"name":"BinaryOperation","src":"10458:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6692,"name":"Literal","src":"10467:2:29"}],"id":6693,"name":"BinaryOperation","src":"10458:11:29"}],"id":6694,"name":"FunctionCall","src":"10436:34:29"}],"id":6695,"name":"TupleExpression","src":"10399:72:29"}],"id":6696,"name":"Return","src":"10392:79:29"}],"id":6697,"name":"Block","src":"10216:266:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6698,"name":"Identifier","src":"10590:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6699,"name":"Identifier","src":"10598:5:29"}],"id":6700,"name":"MemberAccess","src":"10598:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6701,"name":"Literal","src":"10614:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6702,"name":"Literal","src":"10618:2:29"}],"id":6703,"name":"BinaryOperation","src":"10614:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6704,"name":"Literal","src":"10623:2:29"}],"id":6705,"name":"BinaryOperation","src":"10614:11:29"}],"id":6706,"name":"BinaryOperation","src":"10598:27:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":6707,"name":"Literal","src":"10627:39:29"}],"id":6708,"name":"FunctionCall","src":"10590:77:29"}],"id":6709,"name":"ExpressionStatement","src":"10590:77:29"},{"attributes":{"functionReturnParameters":6625},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":9502,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6710,"name":"Identifier","src":"10689:5:29"}],"id":6711,"name":"MemberAccess","src":"10689:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6712,"name":"Literal","src":"10711:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":6713,"name":"Literal","src":"10715:2:29"}],"id":6714,"name":"BinaryOperation","src":"10711:6:29"}],"id":6715,"name":"FunctionCall","src":"10689:29:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9570,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6716,"name":"Identifier","src":"10720:5:29"}],"id":6717,"name":"MemberAccess","src":"10720:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6718,"name":"Literal","src":"10742:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6719,"name":"Literal","src":"10746:2:29"}],"id":6720,"name":"BinaryOperation","src":"10742:6:29"}],"id":6721,"name":"FunctionCall","src":"10720:29:29"}],"id":6722,"name":"TupleExpression","src":"10688:62:29"}],"id":6723,"name":"Return","src":"10681:69:29"}],"id":6724,"name":"Block","src":"10488:273:29"}],"id":6725,"name":"IfStatement","src":"10183:578:29"}],"id":6726,"name":"IfStatement","src":"10044:717:29"}],"id":6727,"name":"Block","src":"9483:1284:29"}],"id":6728,"name":"FunctionDefinition","src":"9368:1399:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":6760,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6729,"name":"ElementaryTypeName","src":"10866:7:29"}],"id":6730,"name":"VariableDeclaration","src":"10866:14:29"},{"attributes":{"constant":false,"name":"_loadable","scope":6760,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6731,"name":"ElementaryTypeName","src":"10882:4:29"}],"id":6732,"name":"VariableDeclaration","src":"10882:14:29"}],"id":6733,"name":"ParameterList","src":"10865:32:29"},{"attributes":{"parameters":[null]},"children":[],"id":6736,"name":"ParameterList","src":"10917:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6734,"name":"Identifier","src":"10907:9:29"}],"id":6735,"name":"ModifierInvocation","src":"10907:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6737,"name":"Identifier","src":"10969:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6738,"name":"Identifier","src":"10977:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"address","value":"_token"},"id":6739,"name":"Identifier","src":"10991:6:29"}],"id":6740,"name":"IndexAccess","src":"10977:21:29"}],"id":6741,"name":"MemberAccess","src":"10977:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":6742,"name":"Literal","src":"11010:24:29"}],"id":6743,"name":"FunctionCall","src":"10969:66:29"}],"id":6744,"name":"ExpressionStatement","src":"10969:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":6275,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6745,"name":"Identifier","src":"11108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"address","value":"_token"},"id":6746,"name":"Identifier","src":"11122:6:29"}],"id":6747,"name":"IndexAccess","src":"11108:21:29"}],"id":6748,"name":"MemberAccess","src":"11108:30:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6732,"type":"bool","value":"_loadable"},"id":6749,"name":"Identifier","src":"11141:9:29"}],"id":6750,"name":"Assignment","src":"11108:42:29"}],"id":6751,"name":"ExpressionStatement","src":"11108:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6197,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":6752,"name":"Identifier","src":"11166:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6753,"name":"Identifier","src":"11187:3:29"}],"id":6754,"name":"MemberAccess","src":"11187:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"address","value":"_token"},"id":6755,"name":"Identifier","src":"11199:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6732,"type":"bool","value":"_loadable"},"id":6756,"name":"Identifier","src":"11207:9:29"}],"id":6757,"name":"FunctionCall","src":"11166:51:29"}],"id":6758,"name":"EmitStatement","src":"11161:56:29"}],"id":6759,"name":"Block","src":"10917:307:29"}],"id":6760,"name":"FunctionDefinition","src":"10840:384:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":6792,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6761,"name":"ElementaryTypeName","src":"11327:7:29"}],"id":6762,"name":"VariableDeclaration","src":"11327:14:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":6792,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6763,"name":"ElementaryTypeName","src":"11343:4:29"}],"id":6764,"name":"VariableDeclaration","src":"11343:16:29"}],"id":6765,"name":"ParameterList","src":"11326:34:29"},{"attributes":{"parameters":[null]},"children":[],"id":6768,"name":"ParameterList","src":"11380:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6766,"name":"Identifier","src":"11370:9:29"}],"id":6767,"name":"ModifierInvocation","src":"11370:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6769,"name":"Identifier","src":"11432:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6770,"name":"Identifier","src":"11440:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"address","value":"_token"},"id":6771,"name":"Identifier","src":"11454:6:29"}],"id":6772,"name":"IndexAccess","src":"11440:21:29"}],"id":6773,"name":"MemberAccess","src":"11440:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":6774,"name":"Literal","src":"11473:24:29"}],"id":6775,"name":"FunctionCall","src":"11432:66:29"}],"id":6776,"name":"ExpressionStatement","src":"11432:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6777,"name":"Identifier","src":"11573:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"address","value":"_token"},"id":6778,"name":"Identifier","src":"11587:6:29"}],"id":6779,"name":"IndexAccess","src":"11573:21:29"}],"id":6780,"name":"MemberAccess","src":"11573:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bool","value":"_redeemable"},"id":6781,"name":"Identifier","src":"11608:11:29"}],"id":6782,"name":"Assignment","src":"11573:46:29"}],"id":6783,"name":"ExpressionStatement","src":"11573:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6205,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":6784,"name":"Identifier","src":"11635:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6785,"name":"Identifier","src":"11658:3:29"}],"id":6786,"name":"MemberAccess","src":"11658:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"address","value":"_token"},"id":6787,"name":"Identifier","src":"11670:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bool","value":"_redeemable"},"id":6788,"name":"Identifier","src":"11678:11:29"}],"id":6789,"name":"FunctionCall","src":"11635:55:29"}],"id":6790,"name":"EmitStatement","src":"11630:60:29"}],"id":6791,"name":"Block","src":"11380:317:29"}],"id":6792,"name":"FunctionDefinition","src":"11299:398:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":6833,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6793,"name":"ElementaryTypeName","src":"11999:7:29"}],"id":6794,"name":"VariableDeclaration","src":"11999:14:29"},{"attributes":{"constant":false,"name":"_rate","scope":6833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6795,"name":"ElementaryTypeName","src":"12015:7:29"}],"id":6796,"name":"VariableDeclaration","src":"12015:13:29"},{"attributes":{"constant":false,"name":"_updateDate","scope":6833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6797,"name":"ElementaryTypeName","src":"12030:7:29"}],"id":6798,"name":"VariableDeclaration","src":"12030:19:29"}],"id":6799,"name":"ParameterList","src":"11998:52:29"},{"attributes":{"parameters":[null]},"children":[],"id":6802,"name":"ParameterList","src":"12078:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6370,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":6800,"name":"Identifier","src":"12060:17:29"}],"id":6801,"name":"ModifierInvocation","src":"12060:17:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6803,"name":"Identifier","src":"12130:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6804,"name":"Identifier","src":"12138:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"address","value":"_token"},"id":6805,"name":"Identifier","src":"12152:6:29"}],"id":6806,"name":"IndexAccess","src":"12138:21:29"}],"id":6807,"name":"MemberAccess","src":"12138:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":6808,"name":"Literal","src":"12171:24:29"}],"id":6809,"name":"FunctionCall","src":"12130:66:29"}],"id":6810,"name":"ExpressionStatement","src":"12130:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":6271,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6811,"name":"Identifier","src":"12242:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"address","value":"_token"},"id":6812,"name":"Identifier","src":"12256:6:29"}],"id":6813,"name":"IndexAccess","src":"12242:21:29"}],"id":6814,"name":"MemberAccess","src":"12242:26:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6796,"type":"uint256","value":"_rate"},"id":6815,"name":"Identifier","src":"12271:5:29"}],"id":6816,"name":"Assignment","src":"12242:34:29"}],"id":6817,"name":"ExpressionStatement","src":"12242:34:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":6279,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6818,"name":"Identifier","src":"12339:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"address","value":"_token"},"id":6819,"name":"Identifier","src":"12353:6:29"}],"id":6820,"name":"IndexAccess","src":"12339:21:29"}],"id":6821,"name":"MemberAccess","src":"12339:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6798,"type":"uint256","value":"_updateDate"},"id":6822,"name":"Identifier","src":"12374:11:29"}],"id":6823,"name":"Assignment","src":"12339:46:29"}],"id":6824,"name":"ExpressionStatement","src":"12339:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6189,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":6825,"name":"Identifier","src":"12439:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6826,"name":"Identifier","src":"12456:3:29"}],"id":6827,"name":"MemberAccess","src":"12456:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"address","value":"_token"},"id":6828,"name":"Identifier","src":"12468:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6796,"type":"uint256","value":"_rate"},"id":6829,"name":"Identifier","src":"12476:5:29"}],"id":6830,"name":"FunctionCall","src":"12439:43:29"}],"id":6831,"name":"EmitStatement","src":"12434:48:29"}],"id":6832,"name":"Block","src":"12078:411:29"}],"id":6833,"name":"FunctionDefinition","src":"11974:515:29"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":6857,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":6834,"name":"ElementaryTypeName","src":"12593:15:29"}],"id":6835,"name":"VariableDeclaration","src":"12593:19:29"},{"attributes":{"constant":false,"name":"_asset","scope":6857,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6836,"name":"ElementaryTypeName","src":"12614:7:29"}],"id":6837,"name":"VariableDeclaration","src":"12614:14:29"},{"attributes":{"constant":false,"name":"_amount","scope":6857,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6838,"name":"ElementaryTypeName","src":"12630:7:29"}],"id":6839,"name":"VariableDeclaration","src":"12630:15:29"}],"id":6840,"name":"ParameterList","src":"12592:54:29"},{"attributes":{"parameters":[null]},"children":[],"id":6843,"name":"ParameterList","src":"12666:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6841,"name":"Identifier","src":"12656:9:29"}],"id":6842,"name":"ModifierInvocation","src":"12656:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":6844,"name":"Identifier","src":"12676:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6835,"type":"address payable","value":"_to"},"id":6845,"name":"Identifier","src":"12690:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6837,"type":"address","value":"_asset"},"id":6846,"name":"Identifier","src":"12695:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6839,"type":"uint256","value":"_amount"},"id":6847,"name":"Identifier","src":"12703:7:29"}],"id":6848,"name":"FunctionCall","src":"12676:35:29"}],"id":6849,"name":"ExpressionStatement","src":"12676:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6253,"type":"function (address,address,uint256)","value":"Claimed"},"id":6850,"name":"Identifier","src":"12726:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6835,"type":"address payable","value":"_to"},"id":6851,"name":"Identifier","src":"12734:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6837,"type":"address","value":"_asset"},"id":6852,"name":"Identifier","src":"12739:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6839,"type":"uint256","value":"_amount"},"id":6853,"name":"Identifier","src":"12747:7:29"}],"id":6854,"name":"FunctionCall","src":"12726:29:29"}],"id":6855,"name":"EmitStatement","src":"12721:34:29"}],"id":6856,"name":"Block","src":"12666:96:29"}],"id":6857,"name":"FunctionDefinition","src":"12578:184:29"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6899,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6858,"name":"ElementaryTypeName","src":"13336:7:29"}],"id":6859,"name":"VariableDeclaration","src":"13336:10:29"}],"id":6860,"name":"ParameterList","src":"13335:12:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6861,"name":"ElementaryTypeName","src":"13371:6:29"}],"id":6862,"name":"VariableDeclaration","src":"13371:13:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6863,"name":"ElementaryTypeName","src":"13386:7:29"}],"id":6864,"name":"VariableDeclaration","src":"13386:7:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6865,"name":"ElementaryTypeName","src":"13395:7:29"}],"id":6866,"name":"VariableDeclaration","src":"13395:7:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6867,"name":"ElementaryTypeName","src":"13404:4:29"}],"id":6868,"name":"VariableDeclaration","src":"13404:4:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6869,"name":"ElementaryTypeName","src":"13410:4:29"}],"id":6870,"name":"VariableDeclaration","src":"13410:4:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6871,"name":"ElementaryTypeName","src":"13416:4:29"}],"id":6872,"name":"VariableDeclaration","src":"13416:4:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6873,"name":"ElementaryTypeName","src":"13422:7:29"}],"id":6874,"name":"VariableDeclaration","src":"13422:7:29"}],"id":6875,"name":"ParameterList","src":"13370:60:29"},{"children":[{"attributes":{"assignments":[6877]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":6898,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":6280,"type":"struct TokenWhitelist.Token"},"id":6876,"name":"UserDefinedTypeName","src":"13441:5:29"}],"id":6877,"name":"VariableDeclaration","src":"13441:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6878,"name":"Identifier","src":"13467:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6859,"type":"address","value":"_a"},"id":6879,"name":"Identifier","src":"13481:2:29"}],"id":6880,"name":"IndexAccess","src":"13467:17:29"}],"id":6881,"name":"VariableDeclarationStatement","src":"13441:43:29"},{"attributes":{"functionReturnParameters":6875},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":6267,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6882,"name":"Identifier","src":"13502:9:29"}],"id":6883,"name":"MemberAccess","src":"13502:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":6269,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6884,"name":"Identifier","src":"13520:9:29"}],"id":6885,"name":"MemberAccess","src":"13520:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":6271,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6886,"name":"Identifier","src":"13541:9:29"}],"id":6887,"name":"MemberAccess","src":"13541:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6888,"name":"Identifier","src":"13557:9:29"}],"id":6889,"name":"MemberAccess","src":"13557:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":6275,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6890,"name":"Identifier","src":"13578:9:29"}],"id":6891,"name":"MemberAccess","src":"13578:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6892,"name":"Identifier","src":"13598:9:29"}],"id":6893,"name":"MemberAccess","src":"13598:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":6279,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6894,"name":"Identifier","src":"13620:9:29"}],"id":6895,"name":"MemberAccess","src":"13620:20:29"}],"id":6896,"name":"TupleExpression","src":"13501:140:29"}],"id":6897,"name":"Return","src":"13494:147:29"}],"id":6898,"name":"Block","src":"13431:217:29"}],"id":6899,"name":"FunctionDefinition","src":"13314:334:29"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6900,"name":"ParameterList","src":"14176:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6901,"name":"ElementaryTypeName","src":"14202:6:29"}],"id":6902,"name":"VariableDeclaration","src":"14202:13:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6903,"name":"ElementaryTypeName","src":"14217:7:29"}],"id":6904,"name":"VariableDeclaration","src":"14217:7:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6905,"name":"ElementaryTypeName","src":"14226:7:29"}],"id":6906,"name":"VariableDeclaration","src":"14226:7:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6907,"name":"ElementaryTypeName","src":"14235:4:29"}],"id":6908,"name":"VariableDeclaration","src":"14235:4:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6909,"name":"ElementaryTypeName","src":"14241:4:29"}],"id":6910,"name":"VariableDeclaration","src":"14241:4:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6911,"name":"ElementaryTypeName","src":"14247:4:29"}],"id":6912,"name":"VariableDeclaration","src":"14247:4:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6913,"name":"ElementaryTypeName","src":"14253:7:29"}],"id":6914,"name":"VariableDeclaration","src":"14253:7:29"}],"id":6915,"name":"ParameterList","src":"14201:60:29"},{"children":[{"attributes":{"assignments":[6917]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":6938,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":6280,"type":"struct TokenWhitelist.Token"},"id":6916,"name":"UserDefinedTypeName","src":"14272:5:29"}],"id":6917,"name":"VariableDeclaration","src":"14272:28:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6918,"name":"Identifier","src":"14303:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6295,"type":"address","value":"_stablecoin"},"id":6919,"name":"Identifier","src":"14317:11:29"}],"id":6920,"name":"IndexAccess","src":"14303:26:29"}],"id":6921,"name":"VariableDeclarationStatement","src":"14272:57:29"},{"attributes":{"functionReturnParameters":6915},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":6267,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6922,"name":"Identifier","src":"14360:14:29"}],"id":6923,"name":"MemberAccess","src":"14360:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":6269,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6924,"name":"Identifier","src":"14395:14:29"}],"id":6925,"name":"MemberAccess","src":"14395:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":6271,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6926,"name":"Identifier","src":"14433:14:29"}],"id":6927,"name":"MemberAccess","src":"14433:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6928,"name":"Identifier","src":"14466:14:29"}],"id":6929,"name":"MemberAccess","src":"14466:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":6275,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6930,"name":"Identifier","src":"14504:14:29"}],"id":6931,"name":"MemberAccess","src":"14504:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6932,"name":"Identifier","src":"14541:14:29"}],"id":6933,"name":"MemberAccess","src":"14541:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":6279,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6934,"name":"Identifier","src":"14580:14:29"}],"id":6935,"name":"MemberAccess","src":"14580:25:29"}],"id":6936,"name":"TupleExpression","src":"14346:269:29"}],"id":6937,"name":"Return","src":"14339:276:29"}],"id":6938,"name":"Block","src":"14262:360:29"}],"id":6939,"name":"FunctionDefinition","src":"14150:472:29"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6940,"name":"ParameterList","src":"14777:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6948,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6941,"name":"ElementaryTypeName","src":"14803:7:29"}],"id":6942,"name":"ArrayTypeName","src":"14803:9:29"}],"id":6943,"name":"VariableDeclaration","src":"14803:16:29"}],"id":6944,"name":"ParameterList","src":"14802:18:29"},{"children":[{"attributes":{"functionReturnParameters":6944},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6945,"name":"Identifier","src":"14838:18:29"}],"id":6946,"name":"Return","src":"14831:25:29"}],"id":6947,"name":"Block","src":"14821:42:29"}],"id":6948,"name":"FunctionDefinition","src":"14751:112:29"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6949,"name":"ParameterList","src":"15015:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7006,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6950,"name":"ElementaryTypeName","src":"15041:7:29"}],"id":6951,"name":"ArrayTypeName","src":"15041:9:29"}],"id":6952,"name":"VariableDeclaration","src":"15041:16:29"}],"id":6953,"name":"ParameterList","src":"15040:18:29"},{"children":[{"attributes":{"assignments":[6957]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":7005,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":6955,"name":"ElementaryTypeName","src":"15069:7:29"}],"id":6956,"name":"ArrayTypeName","src":"15069:9:29"}],"id":6957,"name":"VariableDeclaration","src":"15069:36:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6958,"name":"ElementaryTypeName","src":"15112:7:29"}],"id":6959,"name":"ArrayTypeName","src":"15112:9:29"}],"id":6960,"name":"NewExpression","src":"15108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6961,"name":"Identifier","src":"15122:18:29"}],"id":6962,"name":"FunctionCall","src":"15108:33:29"}],"id":6963,"name":"VariableDeclarationStatement","src":"15069:72:29"},{"attributes":{"assignments":[6965]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":7005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6964,"name":"ElementaryTypeName","src":"15151:7:29"}],"id":6965,"name":"VariableDeclaration","src":"15151:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6966,"name":"Literal","src":"15177:1:29"}],"id":6967,"name":"VariableDeclarationStatement","src":"15151:27:29"},{"children":[{"attributes":{"assignments":[6969]},"children":[{"attributes":{"constant":false,"name":"i","scope":7002,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6968,"name":"ElementaryTypeName","src":"15193:7:29"}],"id":6969,"name":"VariableDeclaration","src":"15193:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6970,"name":"Literal","src":"15205:1:29"}],"id":6971,"name":"VariableDeclarationStatement","src":"15193:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"uint256","value":"i"},"id":6972,"name":"Identifier","src":"15208:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6973,"name":"Identifier","src":"15212:18:29"}],"id":6974,"name":"MemberAccess","src":"15212:25:29"}],"id":6975,"name":"BinaryOperation","src":"15208:29:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"uint256","value":"i"},"id":6976,"name":"Identifier","src":"15239:1:29"}],"id":6977,"name":"UnaryOperation","src":"15239:3:29"}],"id":6978,"name":"ExpressionStatement","src":"15239:3:29"},{"children":[{"attributes":{"assignments":[6980]},"children":[{"attributes":{"constant":false,"name":"token","scope":7001,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6979,"name":"ElementaryTypeName","src":"15258:7:29"}],"id":6980,"name":"VariableDeclaration","src":"15258:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6981,"name":"Identifier","src":"15274:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"uint256","value":"i"},"id":6982,"name":"Identifier","src":"15293:1:29"}],"id":6983,"name":"IndexAccess","src":"15274:21:29"}],"id":6984,"name":"VariableDeclarationStatement","src":"15258:37:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6985,"name":"Identifier","src":"15313:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6980,"type":"address","value":"token"},"id":6986,"name":"Identifier","src":"15327:5:29"}],"id":6987,"name":"IndexAccess","src":"15313:20:29"}],"id":6988,"name":"MemberAccess","src":"15313:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6957,"type":"address[] memory","value":"redeemableAddresses"},"id":6989,"name":"Identifier","src":"15364:19:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6965,"type":"uint256","value":"redeemableIndex"},"id":6990,"name":"Identifier","src":"15384:15:29"}],"id":6991,"name":"IndexAccess","src":"15364:36:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6980,"type":"address","value":"token"},"id":6992,"name":"Identifier","src":"15403:5:29"}],"id":6993,"name":"Assignment","src":"15364:44:29"}],"id":6994,"name":"ExpressionStatement","src":"15364:44:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6965,"type":"uint256","value":"redeemableIndex"},"id":6995,"name":"Identifier","src":"15426:15:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6996,"name":"Literal","src":"15445:1:29"}],"id":6997,"name":"Assignment","src":"15426:20:29"}],"id":6998,"name":"ExpressionStatement","src":"15426:20:29"}],"id":6999,"name":"Block","src":"15346:115:29"}],"id":7000,"name":"IfStatement","src":"15309:152:29"}],"id":7001,"name":"Block","src":"15244:227:29"}],"id":7002,"name":"ForStatement","src":"15188:283:29"},{"attributes":{"functionReturnParameters":6953},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6957,"type":"address[] memory","value":"redeemableAddresses"},"id":7003,"name":"Identifier","src":"15487:19:29"}],"id":7004,"name":"Return","src":"15480:26:29"}],"id":7005,"name":"Block","src":"15059:454:29"}],"id":7006,"name":"FunctionDefinition","src":"14990:523:29"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":7029,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7007,"name":"ElementaryTypeName","src":"15727:7:29"}],"id":7008,"name":"VariableDeclaration","src":"15727:14:29"},{"attributes":{"constant":false,"name":"_methodId","scope":7029,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7009,"name":"ElementaryTypeName","src":"15743:6:29"}],"id":7010,"name":"VariableDeclaration","src":"15743:16:29"}],"id":7011,"name":"ParameterList","src":"15726:34:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7029,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7012,"name":"ElementaryTypeName","src":"15782:4:29"}],"id":7013,"name":"VariableDeclaration","src":"15782:4:29"}],"id":7014,"name":"ParameterList","src":"15781:6:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":7015,"name":"Identifier","src":"15798:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":7016,"name":"Identifier","src":"15806:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7008,"type":"address","value":"_token"},"id":7017,"name":"Identifier","src":"15820:6:29"}],"id":7018,"name":"IndexAccess","src":"15806:21:29"}],"id":7019,"name":"MemberAccess","src":"15806:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":7020,"name":"Literal","src":"15839:20:29"}],"id":7021,"name":"FunctionCall","src":"15798:62:29"}],"id":7022,"name":"ExpressionStatement","src":"15798:62:29"},{"attributes":{"functionReturnParameters":7014},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":7023,"name":"Identifier","src":"15878:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"bytes4","value":"_methodId"},"id":7024,"name":"Identifier","src":"15897:9:29"}],"id":7025,"name":"IndexAccess","src":"15878:29:29"}],"id":7026,"name":"TupleExpression","src":"15877:31:29"}],"id":7027,"name":"Return","src":"15870:38:29"}],"id":7028,"name":"Block","src":"15788:127:29"}],"id":7029,"name":"FunctionDefinition","src":"15695:220:29"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":7042,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7030,"name":"ElementaryTypeName","src":"16104:6:29"}],"id":7031,"name":"VariableDeclaration","src":"16104:16:29"}],"id":7032,"name":"ParameterList","src":"16103:18:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7042,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7033,"name":"ElementaryTypeName","src":"16145:4:29"}],"id":7034,"name":"VariableDeclaration","src":"16145:4:29"}],"id":7035,"name":"ParameterList","src":"16144:6:29"},{"children":[{"attributes":{"functionReturnParameters":7035},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":7036,"name":"Identifier","src":"16169:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7031,"type":"bytes4","value":"_methodId"},"id":7037,"name":"Identifier","src":"16188:9:29"}],"id":7038,"name":"IndexAccess","src":"16169:29:29"}],"id":7039,"name":"TupleExpression","src":"16168:31:29"}],"id":7040,"name":"Return","src":"16161:38:29"}],"id":7041,"name":"Block","src":"16151:55:29"}],"id":7042,"name":"FunctionDefinition","src":"16070:136:29"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7043,"name":"ParameterList","src":"16342:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7050,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7044,"name":"ElementaryTypeName","src":"16368:7:29"}],"id":7045,"name":"VariableDeclaration","src":"16368:7:29"}],"id":7046,"name":"ParameterList","src":"16367:9:29"},{"children":[{"attributes":{"functionReturnParameters":7046},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":7047,"name":"Identifier","src":"16394:18:29"}],"id":7048,"name":"Return","src":"16387:25:29"}],"id":7049,"name":"Block","src":"16377:42:29"}],"id":7050,"name":"FunctionDefinition","src":"16316:103:29"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7051,"name":"ParameterList","src":"16570:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7058,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7052,"name":"ElementaryTypeName","src":"16596:7:29"}],"id":7053,"name":"VariableDeclaration","src":"16596:7:29"}],"id":7054,"name":"ParameterList","src":"16595:9:29"},{"children":[{"attributes":{"functionReturnParameters":7054},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6295,"type":"address","value":"_stablecoin"},"id":7055,"name":"Identifier","src":"16622:11:29"}],"id":7056,"name":"Return","src":"16615:18:29"}],"id":7057,"name":"Block","src":"16605:35:29"}],"id":7058,"name":"FunctionDefinition","src":"16551:89:29"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7059,"name":"ParameterList","src":"16774:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7066,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7060,"name":"ElementaryTypeName","src":"16800:7:29"}],"id":7061,"name":"VariableDeclaration","src":"16800:7:29"}],"id":7062,"name":"ParameterList","src":"16799:9:29"},{"children":[{"attributes":{"functionReturnParameters":7062},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"bytes32","value":"_oracleNode"},"id":7063,"name":"Identifier","src":"16826:11:29"}],"id":7064,"name":"Return","src":"16819:18:29"}],"id":7065,"name":"Block","src":"16809:35:29"}],"id":7066,"name":"FunctionDefinition","src":"16755:89:29"}],"id":7067,"name":"ContractDefinition","src":"1939:14907:29"}],"id":7068,"name":"SourceUnit","src":"774:16073:29"}},"wallet.sol":{"AST":{"attributes":{"absolutePath":"wallet.sol","exportedSymbols":{"AddressWhitelist":[945],"ControllableOwnable":[375],"DailyLimitTrait":[1147],"GasTopUpLimit":[1437],"LoadLimit":[1611],"SelfCallableOwnable":[397],"SpendLimit":[1279],"Wallet":[2522]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":340,"name":"PragmaDirective","src":"757:24:30"},{"attributes":{"SourceUnit":4793,"absolutePath":"licence.sol","file":"./licence.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":341,"name":"ImportDirective","src":"783:23:30"},{"attributes":{"SourceUnit":3992,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":342,"name":"ImportDirective","src":"807:33:30"},{"attributes":{"SourceUnit":294,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":343,"name":"ImportDirective","src":"841:38:30"},{"attributes":{"SourceUnit":3835,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":344,"name":"ImportDirective","src":"880:37:30"},{"attributes":{"SourceUnit":4249,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":345,"name":"ImportDirective","src":"918:39:30"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":346,"name":"ImportDirective","src":"958:39:30"},{"attributes":{"SourceUnit":4209,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":347,"name":"ImportDirective","src":"998:44:30"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":348,"name":"ImportDirective","src":"1043:34:30"},{"attributes":{"SourceUnit":3307,"absolutePath":"externals/Address.sol","file":"./externals/Address.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":349,"name":"ImportDirective","src":"1078:33:30"},{"attributes":{"SourceUnit":3451,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":350,"name":"ImportDirective","src":"1112:31:30"},{"attributes":{"SourceUnit":3670,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":351,"name":"ImportDirective","src":"1144:35:30"},{"attributes":{"SourceUnit":3398,"absolutePath":"externals/ERC165.sol","file":"./externals/ERC165.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":352,"name":"ImportDirective","src":"1180:32:30"},{"attributes":{"SourceUnit":3388,"absolutePath":"externals/ECDSA.sol","file":"./externals/ECDSA.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":353,"name":"ImportDirective","src":"1213:31:30"},{"attributes":{"contractDependencies":[293,338,3991],"contractKind":"contract","documentation":"@title ControllableOwnable combines Controllable and Ownable\n @dev providing an additional modifier to check if Owner or Controller","fullyImplemented":false,"linearizedBaseContracts":[375,3991,293,338],"name":"ControllableOwnable","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":293,"type":"contract Controllable"},"id":354,"name":"UserDefinedTypeName","src":"1418:12:30"}],"id":355,"name":"InheritanceSpecifier","src":"1418:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3991,"type":"contract Ownable"},"id":356,"name":"UserDefinedTypeName","src":"1432:7:30"}],"id":357,"name":"InheritanceSpecifier","src":"1432:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or one of the Controllers","name":"onlyOwnerOrController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":358,"name":"ParameterList","src":"1548:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a244313930a94a6f5de4548387c8c245a5d11002ac47a2e54f96214a9879106","typeString":"literal_string \"only owner||controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":359,"name":"Identifier","src":"1561:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":360,"name":"Identifier","src":"1569:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":361,"name":"Identifier","src":"1578:3:30"}],"id":362,"name":"MemberAccess","src":"1578:10:30"}],"id":363,"name":"FunctionCall","src":"1569:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":275,"type":"function (address) view returns (bool)","value":"_isController"},"id":364,"name":"Identifier","src":"1593:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":365,"name":"Identifier","src":"1607:3:30"}],"id":366,"name":"MemberAccess","src":"1607:10:30"}],"id":367,"name":"FunctionCall","src":"1593:25:30"}],"id":368,"name":"BinaryOperation","src":"1569:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||controller\"","value":"only owner||controller"},"id":369,"name":"Literal","src":"1620:24:30"}],"id":370,"name":"FunctionCall","src":"1561:84:30"}],"id":371,"name":"ExpressionStatement","src":"1561:84:30"},{"id":372,"name":"PlaceholderStatement","src":"1655:1:30"}],"id":373,"name":"Block","src":"1551:112:30"}],"id":374,"name":"ModifierDefinition","src":"1518:145:30"}],"id":375,"name":"ContractDefinition","src":"1386:279:30"},{"attributes":{"contractDependencies":[3991],"contractKind":"contract","documentation":"@title SelfCallableOwnable allows either owner or the contract itself to call its functions\n @dev providing an additional modifier to check if Owner or self is calling\n @dev the \"self\" here is used for the meta transactions","fullyImplemented":false,"linearizedBaseContracts":[397,3991],"name":"SelfCallableOwnable","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3991,"type":"contract Ownable"},"id":376,"name":"UserDefinedTypeName","src":"1934:7:30"}],"id":377,"name":"InheritanceSpecifier","src":"1934:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or self","name":"onlyOwnerOrSelf","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":378,"name":"ParameterList","src":"2026:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c98ff749bed2b5f266d255ad845f8a2a0dba28f389ec62046d9aad839ae2d6","typeString":"literal_string \"only owner||self\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":379,"name":"Identifier","src":"2039:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":380,"name":"Identifier","src":"2047:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":381,"name":"Identifier","src":"2056:3:30"}],"id":382,"name":"MemberAccess","src":"2056:10:30"}],"id":383,"name":"FunctionCall","src":"2047:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":384,"name":"Identifier","src":"2071:3:30"}],"id":385,"name":"MemberAccess","src":"2071:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfCallableOwnable_$397","typeString":"contract SelfCallableOwnable"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":386,"name":"ElementaryTypeNameExpression","src":"2085:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10389,"type":"contract SelfCallableOwnable","value":"this"},"id":387,"name":"Identifier","src":"2093:4:30"}],"id":388,"name":"FunctionCall","src":"2085:13:30"}],"id":389,"name":"BinaryOperation","src":"2071:27:30"}],"id":390,"name":"BinaryOperation","src":"2047:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c73656c66","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||self\"","value":"only owner||self"},"id":391,"name":"Literal","src":"2100:18:30"}],"id":392,"name":"FunctionCall","src":"2039:80:30"}],"id":393,"name":"ExpressionStatement","src":"2039:80:30"},{"id":394,"name":"PlaceholderStatement","src":"2129:1:30"}],"id":395,"name":"Block","src":"2029:108:30"}],"id":396,"name":"ModifierDefinition","src":"2002:135:30"}],"id":397,"name":"ContractDefinition","src":"1902:237:30"},{"attributes":{"contractDependencies":[293,338,375,397,3991],"contractKind":"contract","documentation":"@title AddressWhitelist provides payee-whitelist functionality.\n @dev This contract will allow the user to maintain a whitelist of addresses\n @dev These addresses will live outside of the various spend limits","fullyImplemented":false,"linearizedBaseContracts":[945,397,375,3991,293,338],"name":"AddressWhitelist","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":375,"type":"contract ControllableOwnable"},"id":398,"name":"UserDefinedTypeName","src":"2390:19:30"}],"id":399,"name":"InheritanceSpecifier","src":"2390:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":397,"type":"contract SelfCallableOwnable"},"id":400,"name":"UserDefinedTypeName","src":"2411:19:30"}],"id":401,"name":"InheritanceSpecifier","src":"2411:19:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":402,"name":"UserDefinedTypeName","src":"2443:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":403,"name":"ElementaryTypeName","src":"2456:7:30"}],"id":404,"name":"UsingForDirective","src":"2437:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":411,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":405,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":406,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":411,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":407,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":408,"name":"ArrayTypeName","src":"2510:9:30"}],"id":409,"name":"VariableDeclaration","src":"2510:20:30"}],"id":410,"name":"ParameterList","src":"2492:39:30"}],"id":411,"name":"EventDefinition","src":"2470:62:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":412,"name":"ElementaryTypeName","src":"2570:7:30"}],"id":413,"name":"VariableDeclaration","src":"2570:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":417,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":414,"name":"ElementaryTypeName","src":"2587:7:30"}],"id":415,"name":"VariableDeclaration","src":"2587:13:30"}],"id":416,"name":"ParameterList","src":"2569:32:30"}],"id":417,"name":"EventDefinition","src":"2537:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":424,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":418,"name":"ElementaryTypeName","src":"2640:7:30"}],"id":419,"name":"ArrayTypeName","src":"2640:9:30"}],"id":420,"name":"VariableDeclaration","src":"2640:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":424,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":421,"name":"ElementaryTypeName","src":"2662:7:30"}],"id":422,"name":"VariableDeclaration","src":"2662:13:30"}],"id":423,"name":"ParameterList","src":"2639:37:30"}],"id":424,"name":"EventDefinition","src":"2607:70:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":430,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":425,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":426,"name":"VariableDeclaration","src":"2715:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":430,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":427,"name":"ElementaryTypeName","src":"2732:7:30"}],"id":428,"name":"VariableDeclaration","src":"2732:13:30"}],"id":429,"name":"ParameterList","src":"2714:32:30"}],"id":430,"name":"EventDefinition","src":"2683:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedFromWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":437,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":431,"name":"ElementaryTypeName","src":"2779:7:30"}],"id":432,"name":"VariableDeclaration","src":"2779:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":437,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":433,"name":"ElementaryTypeName","src":"2796:7:30"}],"id":434,"name":"ArrayTypeName","src":"2796:9:30"}],"id":435,"name":"VariableDeclaration","src":"2796:20:30"}],"id":436,"name":"ParameterList","src":"2778:39:30"}],"id":437,"name":"EventDefinition","src":"2752:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":444,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":438,"name":"ElementaryTypeName","src":"2855:7:30"}],"id":439,"name":"ArrayTypeName","src":"2855:9:30"}],"id":440,"name":"VariableDeclaration","src":"2855:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":444,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":441,"name":"ElementaryTypeName","src":"2877:7:30"}],"id":442,"name":"VariableDeclaration","src":"2877:13:30"}],"id":443,"name":"ParameterList","src":"2854:37:30"}],"id":444,"name":"EventDefinition","src":"2823:69:30"},{"attributes":{"constant":false,"name":"whitelistMap","scope":945,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":445,"name":"ElementaryTypeName","src":"2906:7:30"},{"attributes":{"name":"bool","type":"bool"},"id":446,"name":"ElementaryTypeName","src":"2917:4:30"}],"id":447,"name":"Mapping","src":"2898:24:30"}],"id":448,"name":"VariableDeclaration","src":"2898:44:30"},{"attributes":{"constant":false,"name":"whitelistArray","scope":945,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":449,"name":"ElementaryTypeName","src":"2948:7:30"}],"id":450,"name":"ArrayTypeName","src":"2948:9:30"}],"id":451,"name":"VariableDeclaration","src":"2948:31:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistAddition","scope":945,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":452,"name":"ElementaryTypeName","src":"2985:7:30"}],"id":453,"name":"ArrayTypeName","src":"2985:9:30"}],"id":454,"name":"VariableDeclaration","src":"2985:43:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistRemoval","scope":945,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":455,"name":"ElementaryTypeName","src":"3034:7:30"}],"id":456,"name":"ArrayTypeName","src":"3034:9:30"}],"id":457,"name":"VariableDeclaration","src":"3034:42:30"},{"attributes":{"constant":false,"name":"submittedWhitelistAddition","scope":945,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":458,"name":"ElementaryTypeName","src":"3082:4:30"}],"id":459,"name":"VariableDeclaration","src":"3082:38:30"},{"attributes":{"constant":false,"name":"submittedWhitelistRemoval","scope":945,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":460,"name":"ElementaryTypeName","src":"3126:4:30"}],"id":461,"name":"VariableDeclaration","src":"3126:37:30"},{"attributes":{"constant":false,"name":"isSetWhitelist","scope":945,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":462,"name":"ElementaryTypeName","src":"3169:4:30"}],"id":463,"name":"VariableDeclaration","src":"3169:26:30"},{"attributes":{"documentation":"@dev Check if the provided addresses contain the owner or the zero-address address.","name":"hasNoOwnerOrZeroAddress","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":504,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":464,"name":"ElementaryTypeName","src":"3327:7:30"}],"id":465,"name":"ArrayTypeName","src":"3327:9:30"}],"id":466,"name":"VariableDeclaration","src":"3327:27:30"}],"id":467,"name":"ParameterList","src":"3326:29:30"},{"children":[{"children":[{"attributes":{"assignments":[469]},"children":[{"attributes":{"constant":false,"name":"i","scope":501,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":468,"name":"ElementaryTypeName","src":"3371:7:30"}],"id":469,"name":"VariableDeclaration","src":"3371:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":470,"name":"Literal","src":"3383:1:30"}],"id":471,"name":"VariableDeclarationStatement","src":"3371:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"uint256","value":"i"},"id":472,"name":"Identifier","src":"3386:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"address[] memory","value":"_addresses"},"id":473,"name":"Identifier","src":"3390:10:30"}],"id":474,"name":"MemberAccess","src":"3390:17:30"}],"id":475,"name":"BinaryOperation","src":"3386:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"uint256","value":"i"},"id":476,"name":"Identifier","src":"3409:1:30"}],"id":477,"name":"UnaryOperation","src":"3409:3:30"}],"id":478,"name":"ExpressionStatement","src":"3409:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83144f57b92473167e9ce74530b82e833e4f010b46d8a2562f84cdc754bd4967","typeString":"literal_string \"contains owner address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":479,"name":"Identifier","src":"3428:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":480,"name":"Identifier","src":"3437:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"address[] memory","value":"_addresses"},"id":481,"name":"Identifier","src":"3446:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"uint256","value":"i"},"id":482,"name":"Identifier","src":"3457:1:30"}],"id":483,"name":"IndexAccess","src":"3446:13:30"}],"id":484,"name":"FunctionCall","src":"3437:23:30"}],"id":485,"name":"UnaryOperation","src":"3436:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e73206f776e65722061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains owner address\"","value":"contains owner address"},"id":486,"name":"Literal","src":"3462:24:30"}],"id":487,"name":"FunctionCall","src":"3428:59:30"}],"id":488,"name":"ExpressionStatement","src":"3428:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab14c1506b1b0c03aad2feb5e5b965df7dffe18036562732ceabd49019d58098","typeString":"literal_string \"contains 0 address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":489,"name":"Identifier","src":"3501:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"address[] memory","value":"_addresses"},"id":490,"name":"Identifier","src":"3509:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"uint256","value":"i"},"id":491,"name":"Identifier","src":"3520:1:30"}],"id":492,"name":"IndexAccess","src":"3509:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":493,"name":"ElementaryTypeNameExpression","src":"3526:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":494,"name":"Literal","src":"3534:1:30"}],"id":495,"name":"FunctionCall","src":"3526:10:30"}],"id":496,"name":"BinaryOperation","src":"3509:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e7320302061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains 0 address\"","value":"contains 0 address"},"id":497,"name":"Literal","src":"3538:20:30"}],"id":498,"name":"FunctionCall","src":"3501:58:30"}],"id":499,"name":"ExpressionStatement","src":"3501:58:30"}],"id":500,"name":"Block","src":"3414:156:30"}],"id":501,"name":"ForStatement","src":"3366:204:30"},{"id":502,"name":"PlaceholderStatement","src":"3579:1:30"}],"id":503,"name":"Block","src":"3356:231:30"}],"id":504,"name":"ModifierDefinition","src":"3294:293:30"},{"attributes":{"documentation":"@dev Check that neither addition nor removal operations have already been submitted.","name":"noActiveSubmission","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":505,"name":"ParameterList","src":"3713:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_218a99457edaa7c4d6a4ca4023db54cf2e31e2ca8b9a350a6c9ab56a1ea1df99","typeString":"literal_string \"whitelist sumbission pending\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":506,"name":"Identifier","src":"3726:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":507,"name":"Identifier","src":"3735:26:30"}],"id":508,"name":"UnaryOperation","src":"3734:27:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":509,"name":"Identifier","src":"3766:25:30"}],"id":510,"name":"UnaryOperation","src":"3765:26:30"}],"id":511,"name":"BinaryOperation","src":"3734:57:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c6973742073756d62697373696f6e2070656e64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist sumbission pending\"","value":"whitelist sumbission pending"},"id":512,"name":"Literal","src":"3793:30:30"}],"id":513,"name":"FunctionCall","src":"3726:98:30"}],"id":514,"name":"ExpressionStatement","src":"3726:98:30"},{"id":515,"name":"PlaceholderStatement","src":"3834:1:30"}],"id":516,"name":"Block","src":"3716:126:30"}],"id":517,"name":"ModifierDefinition","src":"3686:156:30"},{"attributes":{"documentation":"@dev Cancel pending whitelist addition.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistAddition","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":552,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":518,"name":"ElementaryTypeName","src":"3929:7:30"}],"id":519,"name":"VariableDeclaration","src":"3929:13:30"}],"id":520,"name":"ParameterList","src":"3928:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":523,"name":"ParameterList","src":"3975:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":374,"type":"modifier ()","value":"onlyOwnerOrController"},"id":521,"name":"Identifier","src":"3953:21:30"}],"id":522,"name":"ModifierInvocation","src":"3953:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":524,"name":"Identifier","src":"4035:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":525,"name":"Identifier","src":"4043:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":526,"name":"Literal","src":"4071:23:30"}],"id":527,"name":"FunctionCall","src":"4035:60:30"}],"id":528,"name":"ExpressionStatement","src":"4035:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":529,"name":"Identifier","src":"4200:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":519,"type":"bytes32","value":"_hash"},"id":530,"name":"Identifier","src":"4208:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":531,"name":"Identifier","src":"4217:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":532,"name":"Identifier","src":"4231:25:30"}],"id":533,"name":"FunctionCall","src":"4217:40:30"}],"id":534,"name":"BinaryOperation","src":"4208:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":535,"name":"Literal","src":"4259:37:30"}],"id":536,"name":"FunctionCall","src":"4200:97:30"}],"id":537,"name":"ExpressionStatement","src":"4200:97:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":538,"name":"Identifier","src":"4350:25:30"}],"id":539,"name":"UnaryOperation","src":"4343:32:30"}],"id":540,"name":"ExpressionStatement","src":"4343:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":541,"name":"Identifier","src":"4432:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":542,"name":"Literal","src":"4461:5:30"}],"id":543,"name":"Assignment","src":"4432:34:30"}],"id":544,"name":"ExpressionStatement","src":"4432:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":417,"type":"function (address,bytes32)","value":"CancelledWhitelistAddition"},"id":545,"name":"Identifier","src":"4521:26:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":546,"name":"Identifier","src":"4548:3:30"}],"id":547,"name":"MemberAccess","src":"4548:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":519,"type":"bytes32","value":"_hash"},"id":548,"name":"Identifier","src":"4560:5:30"}],"id":549,"name":"FunctionCall","src":"4521:45:30"}],"id":550,"name":"EmitStatement","src":"4516:50:30"}],"id":551,"name":"Block","src":"3975:598:30"}],"id":552,"name":"FunctionDefinition","src":"3896:677:30"},{"attributes":{"documentation":"@dev Cancel pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistRemoval","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":587,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":553,"name":"ElementaryTypeName","src":"4673:7:30"}],"id":554,"name":"VariableDeclaration","src":"4673:13:30"}],"id":555,"name":"ParameterList","src":"4672:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":558,"name":"ParameterList","src":"4719:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":374,"type":"modifier ()","value":"onlyOwnerOrController"},"id":556,"name":"Identifier","src":"4697:21:30"}],"id":557,"name":"ModifierInvocation","src":"4697:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":559,"name":"Identifier","src":"4779:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":560,"name":"Identifier","src":"4787:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":561,"name":"Literal","src":"4814:23:30"}],"id":562,"name":"FunctionCall","src":"4779:59:30"}],"id":563,"name":"ExpressionStatement","src":"4779:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":564,"name":"Identifier","src":"4942:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":554,"type":"bytes32","value":"_hash"},"id":565,"name":"Identifier","src":"4950:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":566,"name":"Identifier","src":"4959:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":567,"name":"Identifier","src":"4973:24:30"}],"id":568,"name":"FunctionCall","src":"4959:39:30"}],"id":569,"name":"BinaryOperation","src":"4950:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":570,"name":"Literal","src":"5000:37:30"}],"id":571,"name":"FunctionCall","src":"4942:96:30"}],"id":572,"name":"ExpressionStatement","src":"4942:96:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":573,"name":"Identifier","src":"5091:24:30"}],"id":574,"name":"UnaryOperation","src":"5084:31:30"}],"id":575,"name":"ExpressionStatement","src":"5084:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":576,"name":"Identifier","src":"5161:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":577,"name":"Literal","src":"5189:5:30"}],"id":578,"name":"Assignment","src":"5161:33:30"}],"id":579,"name":"ExpressionStatement","src":"5161:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":430,"type":"function (address,bytes32)","value":"CancelledWhitelistRemoval"},"id":580,"name":"Identifier","src":"5249:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":581,"name":"Identifier","src":"5275:3:30"}],"id":582,"name":"MemberAccess","src":"5275:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":554,"type":"bytes32","value":"_hash"},"id":583,"name":"Identifier","src":"5287:5:30"}],"id":584,"name":"FunctionCall","src":"5249:44:30"}],"id":585,"name":"EmitStatement","src":"5244:49:30"}],"id":586,"name":"Block","src":"4719:581:30"}],"id":587,"name":"FunctionDefinition","src":"4641:659:30"},{"attributes":{"documentation":"@dev Confirm pending whitelist addition.\n @dev This will only ever be applied post 2FA, by one of the Controllers\n @param _hash is the hash of the pending whitelist array, a form of lamport lock","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistAddition","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":659,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":588,"name":"ElementaryTypeName","src":"5557:7:30"}],"id":589,"name":"VariableDeclaration","src":"5557:13:30"}],"id":590,"name":"ParameterList","src":"5556:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":593,"name":"ParameterList","src":"5596:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":591,"name":"Identifier","src":"5581:14:30"}],"id":592,"name":"ModifierInvocation","src":"5581:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":594,"name":"Identifier","src":"5673:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":595,"name":"Identifier","src":"5681:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":596,"name":"Literal","src":"5709:23:30"}],"id":597,"name":"FunctionCall","src":"5673:60:30"}],"id":598,"name":"ExpressionStatement","src":"5673:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":599,"name":"Identifier","src":"5838:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":589,"type":"bytes32","value":"_hash"},"id":600,"name":"Identifier","src":"5846:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":601,"name":"Identifier","src":"5855:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":602,"name":"Identifier","src":"5869:25:30"}],"id":603,"name":"FunctionCall","src":"5855:40:30"}],"id":604,"name":"BinaryOperation","src":"5846:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":605,"name":"Literal","src":"5897:37:30"}],"id":606,"name":"FunctionCall","src":"5838:97:30"}],"id":607,"name":"ExpressionStatement","src":"5838:97:30"},{"children":[{"attributes":{"assignments":[609]},"children":[{"attributes":{"constant":false,"name":"i","scope":644,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":608,"name":"ElementaryTypeName","src":"5990:7:30"}],"id":609,"name":"VariableDeclaration","src":"5990:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":610,"name":"Literal","src":"6002:1:30"}],"id":611,"name":"VariableDeclarationStatement","src":"5990:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":612,"name":"Identifier","src":"6005:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":613,"name":"Identifier","src":"6009:25:30"}],"id":614,"name":"MemberAccess","src":"6009:32:30"}],"id":615,"name":"BinaryOperation","src":"6005:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":616,"name":"Identifier","src":"6043:1:30"}],"id":617,"name":"UnaryOperation","src":"6043:3:30"}],"id":618,"name":"ExpressionStatement","src":"6043:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":619,"name":"Identifier","src":"6117:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":620,"name":"Identifier","src":"6130:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":621,"name":"Identifier","src":"6156:1:30"}],"id":622,"name":"IndexAccess","src":"6130:28:30"}],"id":623,"name":"IndexAccess","src":"6117:42:30"}],"id":624,"name":"UnaryOperation","src":"6116:43:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":625,"name":"Identifier","src":"6227:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":626,"name":"Identifier","src":"6240:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":627,"name":"Identifier","src":"6266:1:30"}],"id":628,"name":"IndexAccess","src":"6240:28:30"}],"id":629,"name":"IndexAccess","src":"6227:42:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":630,"name":"Literal","src":"6272:4:30"}],"id":631,"name":"Assignment","src":"6227:49:30"}],"id":632,"name":"ExpressionStatement","src":"6227:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":633,"name":"Identifier","src":"6294:14:30"}],"id":635,"name":"MemberAccess","src":"6294:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":636,"name":"Identifier","src":"6314:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":637,"name":"Identifier","src":"6340:1:30"}],"id":638,"name":"IndexAccess","src":"6314:28:30"}],"id":639,"name":"FunctionCall","src":"6294:49:30"}],"id":640,"name":"ExpressionStatement","src":"6294:49:30"}],"id":641,"name":"Block","src":"6161:197:30"}],"id":642,"name":"IfStatement","src":"6112:246:30"}],"id":643,"name":"Block","src":"6048:320:30"}],"id":644,"name":"ForStatement","src":"5985:383:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":411,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":645,"name":"Identifier","src":"6418:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":646,"name":"Identifier","src":"6435:3:30"}],"id":647,"name":"MemberAccess","src":"6435:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":648,"name":"Identifier","src":"6447:25:30"}],"id":649,"name":"FunctionCall","src":"6418:55:30"}],"id":650,"name":"EmitStatement","src":"6413:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":651,"name":"Identifier","src":"6526:25:30"}],"id":652,"name":"UnaryOperation","src":"6519:32:30"}],"id":653,"name":"ExpressionStatement","src":"6519:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":654,"name":"Identifier","src":"6599:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":655,"name":"Literal","src":"6628:5:30"}],"id":656,"name":"Assignment","src":"6599:34:30"}],"id":657,"name":"ExpressionStatement","src":"6599:34:30"}],"id":658,"name":"Block","src":"5596:1044:30"}],"id":659,"name":"FunctionDefinition","src":"5523:1117:30"},{"attributes":{"documentation":"@dev Confirm pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistRemoval","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":764,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":660,"name":"ElementaryTypeName","src":"6742:7:30"}],"id":661,"name":"VariableDeclaration","src":"6742:13:30"}],"id":662,"name":"ParameterList","src":"6741:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":665,"name":"ParameterList","src":"6781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":663,"name":"Identifier","src":"6766:14:30"}],"id":664,"name":"ModifierInvocation","src":"6766:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":666,"name":"Identifier","src":"6888:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":667,"name":"Identifier","src":"6896:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":668,"name":"Literal","src":"6923:23:30"}],"id":669,"name":"FunctionCall","src":"6888:59:30"}],"id":670,"name":"ExpressionStatement","src":"6888:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":671,"name":"Identifier","src":"7051:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":661,"type":"bytes32","value":"_hash"},"id":672,"name":"Identifier","src":"7059:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":673,"name":"Identifier","src":"7068:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":674,"name":"Identifier","src":"7082:24:30"}],"id":675,"name":"FunctionCall","src":"7068:39:30"}],"id":676,"name":"BinaryOperation","src":"7059:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":677,"name":"Literal","src":"7109:37:30"}],"id":678,"name":"FunctionCall","src":"7051:96:30"}],"id":679,"name":"ExpressionStatement","src":"7051:96:30"},{"children":[{"attributes":{"assignments":[681]},"children":[{"attributes":{"constant":false,"name":"i","scope":749,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":680,"name":"ElementaryTypeName","src":"7199:7:30"}],"id":681,"name":"VariableDeclaration","src":"7199:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":682,"name":"Literal","src":"7211:1:30"}],"id":683,"name":"VariableDeclarationStatement","src":"7199:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":684,"name":"Identifier","src":"7214:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":685,"name":"Identifier","src":"7218:24:30"}],"id":686,"name":"MemberAccess","src":"7218:31:30"}],"id":687,"name":"BinaryOperation","src":"7214:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":688,"name":"Identifier","src":"7251:1:30"}],"id":689,"name":"UnaryOperation","src":"7251:3:30"}],"id":690,"name":"ExpressionStatement","src":"7251:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":691,"name":"Identifier","src":"7308:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":692,"name":"Identifier","src":"7321:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":693,"name":"Identifier","src":"7346:1:30"}],"id":694,"name":"IndexAccess","src":"7321:27:30"}],"id":695,"name":"IndexAccess","src":"7308:41:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":696,"name":"Identifier","src":"7369:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":697,"name":"Identifier","src":"7382:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":698,"name":"Identifier","src":"7407:1:30"}],"id":699,"name":"IndexAccess","src":"7382:27:30"}],"id":700,"name":"IndexAccess","src":"7369:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":701,"name":"Literal","src":"7413:5:30"}],"id":702,"name":"Assignment","src":"7369:49:30"}],"id":703,"name":"ExpressionStatement","src":"7369:49:30"},{"children":[{"attributes":{"assignments":[705]},"children":[{"attributes":{"constant":false,"name":"j","scope":740,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":704,"name":"ElementaryTypeName","src":"7441:7:30"}],"id":705,"name":"VariableDeclaration","src":"7441:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":706,"name":"Literal","src":"7453:1:30"}],"id":707,"name":"VariableDeclarationStatement","src":"7441:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"j"},"id":708,"name":"Identifier","src":"7456:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":709,"name":"Identifier","src":"7460:14:30"}],"id":710,"name":"MemberAccess","src":"7460:21:30"}],"id":711,"name":"MemberAccess","src":"7460:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":712,"name":"Literal","src":"7486:1:30"}],"id":713,"name":"FunctionCall","src":"7460:28:30"}],"id":714,"name":"BinaryOperation","src":"7456:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"j"},"id":715,"name":"Identifier","src":"7490:1:30"}],"id":716,"name":"UnaryOperation","src":"7490:3:30"}],"id":717,"name":"ExpressionStatement","src":"7490:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":718,"name":"Identifier","src":"7521:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"j"},"id":719,"name":"Identifier","src":"7536:1:30"}],"id":720,"name":"IndexAccess","src":"7521:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":721,"name":"Identifier","src":"7542:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":722,"name":"Identifier","src":"7567:1:30"}],"id":723,"name":"IndexAccess","src":"7542:27:30"}],"id":724,"name":"BinaryOperation","src":"7521:48:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":725,"name":"Identifier","src":"7597:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"j"},"id":726,"name":"Identifier","src":"7612:1:30"}],"id":727,"name":"IndexAccess","src":"7597:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":728,"name":"Identifier","src":"7617:14:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":729,"name":"Identifier","src":"7632:14:30"}],"id":730,"name":"MemberAccess","src":"7632:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":731,"name":"Literal","src":"7656:1:30"}],"id":732,"name":"BinaryOperation","src":"7632:25:30"}],"id":733,"name":"IndexAccess","src":"7617:41:30"}],"id":734,"name":"Assignment","src":"7597:61:30"}],"id":735,"name":"ExpressionStatement","src":"7597:61:30"},{"id":736,"name":"Break","src":"7684:5:30"}],"id":737,"name":"Block","src":"7571:141:30"}],"id":738,"name":"IfStatement","src":"7517:195:30"}],"id":739,"name":"Block","src":"7495:235:30"}],"id":740,"name":"ForStatement","src":"7436:294:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":741,"name":"Identifier","src":"7747:14:30"}],"id":743,"name":"MemberAccess","src":"7747:21:30"}],"id":744,"name":"UnaryOperation","src":"7747:23:30"}],"id":745,"name":"ExpressionStatement","src":"7747:23:30"}],"id":746,"name":"Block","src":"7351:434:30"}],"id":747,"name":"IfStatement","src":"7304:481:30"}],"id":748,"name":"Block","src":"7256:539:30"}],"id":749,"name":"ForStatement","src":"7194:601:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":437,"type":"function (address,address[] memory)","value":"RemovedFromWhitelist"},"id":750,"name":"Identifier","src":"7844:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":751,"name":"Identifier","src":"7865:3:30"}],"id":752,"name":"MemberAccess","src":"7865:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":753,"name":"Identifier","src":"7877:24:30"}],"id":754,"name":"FunctionCall","src":"7844:58:30"}],"id":755,"name":"EmitStatement","src":"7839:63:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":756,"name":"Identifier","src":"7955:24:30"}],"id":757,"name":"UnaryOperation","src":"7948:31:30"}],"id":758,"name":"ExpressionStatement","src":"7948:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":759,"name":"Identifier","src":"8027:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":760,"name":"Literal","src":"8055:5:30"}],"id":761,"name":"Assignment","src":"8027:33:30"}],"id":762,"name":"ExpressionStatement","src":"8027:33:30"}],"id":763,"name":"Block","src":"6781:1286:30"}],"id":764,"name":"FunctionDefinition","src":"6709:1358:30"},{"attributes":{"documentation":"@dev Getter for pending addition array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistAddition","scope":945,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":765,"name":"ParameterList","src":"8154:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":773,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":766,"name":"ElementaryTypeName","src":"8180:7:30"}],"id":767,"name":"ArrayTypeName","src":"8180:9:30"}],"id":768,"name":"VariableDeclaration","src":"8180:16:30"}],"id":769,"name":"ParameterList","src":"8179:18:30"},{"children":[{"attributes":{"functionReturnParameters":769},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":770,"name":"Identifier","src":"8215:25:30"}],"id":771,"name":"Return","src":"8208:32:30"}],"id":772,"name":"Block","src":"8198:49:30"}],"id":773,"name":"FunctionDefinition","src":"8121:126:30"},{"attributes":{"documentation":"@dev Getter for pending removal array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistRemoval","scope":945,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":774,"name":"ParameterList","src":"8332:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":782,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":775,"name":"ElementaryTypeName","src":"8358:7:30"}],"id":776,"name":"ArrayTypeName","src":"8358:9:30"}],"id":777,"name":"VariableDeclaration","src":"8358:16:30"}],"id":778,"name":"ParameterList","src":"8357:18:30"},{"children":[{"attributes":{"functionReturnParameters":778},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":779,"name":"Identifier","src":"8393:24:30"}],"id":780,"name":"Return","src":"8386:31:30"}],"id":781,"name":"Block","src":"8376:48:30"}],"id":782,"name":"FunctionDefinition","src":"8300:124:30"},{"attributes":{"documentation":"@dev Add initial addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"setWhitelist","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":847,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":783,"name":"ElementaryTypeName","src":"8577:7:30"}],"id":784,"name":"ArrayTypeName","src":"8577:9:30"}],"id":785,"name":"VariableDeclaration","src":"8577:29:30"}],"id":786,"name":"ParameterList","src":"8576:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":792,"name":"ParameterList","src":"8669:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":787,"name":"Identifier","src":"8617:15:30"}],"id":788,"name":"ModifierInvocation","src":"8617:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":789,"name":"Identifier","src":"8633:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":790,"name":"Identifier","src":"8657:10:30"}],"id":791,"name":"ModifierInvocation","src":"8633:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_072b1c10273a06de91a80d81d357e8bd73084529b5cc99d2ec03a7bf6d5fb2b9","typeString":"literal_string \"whitelist initialized\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":793,"name":"Identifier","src":"8743:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":463,"type":"bool","value":"isSetWhitelist"},"id":794,"name":"Identifier","src":"8752:14:30"}],"id":795,"name":"UnaryOperation","src":"8751:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c69737420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist initialized\"","value":"whitelist initialized"},"id":796,"name":"Literal","src":"8768:23:30"}],"id":797,"name":"FunctionCall","src":"8743:49:30"}],"id":798,"name":"ExpressionStatement","src":"8743:49:30"},{"children":[{"attributes":{"assignments":[800]},"children":[{"attributes":{"constant":false,"name":"i","scope":835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":799,"name":"ElementaryTypeName","src":"8871:7:30"}],"id":800,"name":"VariableDeclaration","src":"8871:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":801,"name":"Literal","src":"8883:1:30"}],"id":802,"name":"VariableDeclarationStatement","src":"8871:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":803,"name":"Identifier","src":"8886:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":804,"name":"Identifier","src":"8890:10:30"}],"id":805,"name":"MemberAccess","src":"8890:17:30"}],"id":806,"name":"BinaryOperation","src":"8886:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":807,"name":"Identifier","src":"8909:1:30"}],"id":808,"name":"UnaryOperation","src":"8909:3:30"}],"id":809,"name":"ExpressionStatement","src":"8909:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":810,"name":"Identifier","src":"8996:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":811,"name":"Identifier","src":"9009:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":812,"name":"Identifier","src":"9020:1:30"}],"id":813,"name":"IndexAccess","src":"9009:13:30"}],"id":814,"name":"IndexAccess","src":"8996:27:30"}],"id":815,"name":"UnaryOperation","src":"8995:28:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":816,"name":"Identifier","src":"9092:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":817,"name":"Identifier","src":"9105:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":818,"name":"Identifier","src":"9116:1:30"}],"id":819,"name":"IndexAccess","src":"9105:13:30"}],"id":820,"name":"IndexAccess","src":"9092:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":821,"name":"Literal","src":"9122:4:30"}],"id":822,"name":"Assignment","src":"9092:34:30"}],"id":823,"name":"ExpressionStatement","src":"9092:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":824,"name":"Identifier","src":"9191:14:30"}],"id":826,"name":"MemberAccess","src":"9191:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":827,"name":"Identifier","src":"9211:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":828,"name":"Identifier","src":"9222:1:30"}],"id":829,"name":"IndexAccess","src":"9211:13:30"}],"id":830,"name":"FunctionCall","src":"9191:34:30"}],"id":831,"name":"ExpressionStatement","src":"9191:34:30"}],"id":832,"name":"Block","src":"9025:215:30"}],"id":833,"name":"IfStatement","src":"8991:249:30"}],"id":834,"name":"Block","src":"8914:336:30"}],"id":835,"name":"ForStatement","src":"8866:384:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":463,"type":"bool","value":"isSetWhitelist"},"id":836,"name":"Identifier","src":"9259:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":837,"name":"Literal","src":"9276:4:30"}],"id":838,"name":"Assignment","src":"9259:21:30"}],"id":839,"name":"ExpressionStatement","src":"9259:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":411,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":840,"name":"Identifier","src":"9331:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":841,"name":"Identifier","src":"9348:3:30"}],"id":842,"name":"MemberAccess","src":"9348:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":843,"name":"Identifier","src":"9360:14:30"}],"id":844,"name":"FunctionCall","src":"9331:44:30"}],"id":845,"name":"EmitStatement","src":"9326:49:30"}],"id":846,"name":"Block","src":"8669:713:30"}],"id":847,"name":"FunctionDefinition","src":"8555:827:30"},{"attributes":{"documentation":"@dev Add addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistAddition","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":889,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":848,"name":"ElementaryTypeName","src":"9538:7:30"}],"id":849,"name":"ArrayTypeName","src":"9538:9:30"}],"id":850,"name":"VariableDeclaration","src":"9538:29:30"}],"id":851,"name":"ParameterList","src":"9537:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":859,"name":"ParameterList","src":"9649:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":852,"name":"Identifier","src":"9578:15:30"}],"id":853,"name":"ModifierInvocation","src":"9578:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":517,"type":"modifier ()","value":"noActiveSubmission"},"id":854,"name":"Identifier","src":"9594:18:30"}],"id":855,"name":"ModifierInvocation","src":"9594:18:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":856,"name":"Identifier","src":"9613:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":857,"name":"Identifier","src":"9637:10:30"}],"id":858,"name":"ModifierInvocation","src":"9613:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":860,"name":"Identifier","src":"9719:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":463,"type":"bool","value":"isSetWhitelist"},"id":861,"name":"Identifier","src":"9727:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":862,"name":"Literal","src":"9743:27:30"}],"id":863,"name":"FunctionCall","src":"9719:52:30"}],"id":864,"name":"ExpressionStatement","src":"9719:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":865,"name":"Identifier","src":"9834:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":866,"name":"Identifier","src":"9842:10:30"}],"id":867,"name":"MemberAccess","src":"9842:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":868,"name":"Literal","src":"9862:1:30"}],"id":869,"name":"BinaryOperation","src":"9842:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":870,"name":"Literal","src":"9865:17:30"}],"id":871,"name":"FunctionCall","src":"9834:49:30"}],"id":872,"name":"ExpressionStatement","src":"9834:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":873,"name":"Identifier","src":"9966:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":874,"name":"Identifier","src":"9994:10:30"}],"id":875,"name":"Assignment","src":"9966:38:30"}],"id":876,"name":"ExpressionStatement","src":"9966:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":877,"name":"Identifier","src":"10058:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":878,"name":"Literal","src":"10087:4:30"}],"id":879,"name":"Assignment","src":"10058:33:30"}],"id":880,"name":"ExpressionStatement","src":"10058:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":424,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistAddition"},"id":881,"name":"Identifier","src":"10144:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":882,"name":"Identifier","src":"10171:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":883,"name":"Identifier","src":"10183:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":884,"name":"Identifier","src":"10197:10:30"}],"id":885,"name":"FunctionCall","src":"10183:25:30"}],"id":886,"name":"FunctionCall","src":"10144:65:30"}],"id":887,"name":"EmitStatement","src":"10139:70:30"}],"id":888,"name":"Block","src":"9649:567:30"}],"id":889,"name":"FunctionDefinition","src":"9505:711:30"},{"attributes":{"documentation":"@dev Remove addresses from the whitelist.\n @param _addresses are the Ethereum addresses to be removed.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistRemoval","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":928,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":890,"name":"ElementaryTypeName","src":"10372:7:30"}],"id":891,"name":"ArrayTypeName","src":"10372:9:30"}],"id":892,"name":"VariableDeclaration","src":"10372:29:30"}],"id":893,"name":"ParameterList","src":"10371:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":898,"name":"ParameterList","src":"10447:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":894,"name":"Identifier","src":"10412:15:30"}],"id":895,"name":"ModifierInvocation","src":"10412:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":517,"type":"modifier ()","value":"noActiveSubmission"},"id":896,"name":"Identifier","src":"10428:18:30"}],"id":897,"name":"ModifierInvocation","src":"10428:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":899,"name":"Identifier","src":"10517:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":463,"type":"bool","value":"isSetWhitelist"},"id":900,"name":"Identifier","src":"10525:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":901,"name":"Literal","src":"10541:27:30"}],"id":902,"name":"FunctionCall","src":"10517:52:30"}],"id":903,"name":"ExpressionStatement","src":"10517:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":904,"name":"Identifier","src":"10639:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":892,"type":"address[] calldata","value":"_addresses"},"id":905,"name":"Identifier","src":"10647:10:30"}],"id":906,"name":"MemberAccess","src":"10647:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":907,"name":"Literal","src":"10667:1:30"}],"id":908,"name":"BinaryOperation","src":"10647:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":909,"name":"Literal","src":"10670:17:30"}],"id":910,"name":"FunctionCall","src":"10639:49:30"}],"id":911,"name":"ExpressionStatement","src":"10639:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":912,"name":"Identifier","src":"10766:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":892,"type":"address[] calldata","value":"_addresses"},"id":913,"name":"Identifier","src":"10793:10:30"}],"id":914,"name":"Assignment","src":"10766:37:30"}],"id":915,"name":"ExpressionStatement","src":"10766:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":916,"name":"Identifier","src":"10857:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":917,"name":"Literal","src":"10885:4:30"}],"id":918,"name":"Assignment","src":"10857:32:30"}],"id":919,"name":"ExpressionStatement","src":"10857:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistRemoval"},"id":920,"name":"Identifier","src":"10942:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":892,"type":"address[] calldata","value":"_addresses"},"id":921,"name":"Identifier","src":"10968:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":922,"name":"Identifier","src":"10980:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":892,"type":"address[] calldata","value":"_addresses"},"id":923,"name":"Identifier","src":"10994:10:30"}],"id":924,"name":"FunctionCall","src":"10980:25:30"}],"id":925,"name":"FunctionCall","src":"10942:64:30"}],"id":926,"name":"EmitStatement","src":"10937:69:30"}],"id":927,"name":"Block","src":"10447:566:30"}],"id":928,"name":"FunctionDefinition","src":"10340:673:30"},{"attributes":{"documentation":"@dev Method used to hash our whitelist address arrays.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"calculateHash","scope":945,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":944,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":929,"name":"ElementaryTypeName","src":"11105:7:30"}],"id":930,"name":"ArrayTypeName","src":"11105:9:30"}],"id":931,"name":"VariableDeclaration","src":"11105:27:30"}],"id":932,"name":"ParameterList","src":"11104:29:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":944,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":933,"name":"ElementaryTypeName","src":"11155:7:30"}],"id":934,"name":"VariableDeclaration","src":"11155:7:30"}],"id":935,"name":"ParameterList","src":"11154:9:30"},{"children":[{"attributes":{"functionReturnParameters":935},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":936,"name":"Identifier","src":"11181:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":937,"name":"Identifier","src":"11191:3:30"}],"id":938,"name":"MemberAccess","src":"11191:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"address[] memory","value":"_addresses"},"id":939,"name":"Identifier","src":"11208:10:30"}],"id":940,"name":"FunctionCall","src":"11191:28:30"}],"id":941,"name":"FunctionCall","src":"11181:39:30"}],"id":942,"name":"Return","src":"11174:46:30"}],"id":943,"name":"Block","src":"11164:63:30"}],"id":944,"name":"FunctionDefinition","src":"11082:145:30"}],"id":945,"name":"ContractDefinition","src":"2361:8868:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title DailyLimitTrait This trait allows for daily limits to be included in other contracts.\n This contract will allow for a DailyLimit object to be instantiated and used.","fullyImplemented":true,"linearizedBaseContracts":[1147],"name":"DailyLimitTrait","scope":2523},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":946,"name":"UserDefinedTypeName","src":"11447:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":947,"name":"ElementaryTypeName","src":"11460:7:30"}],"id":948,"name":"UsingForDirective","src":"11441:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":949,"name":"ParameterList","src":"11501:2:30"}],"id":950,"name":"EventDefinition","src":"11474:30:30"},{"attributes":{"canonicalName":"DailyLimitTrait.DailyLimit","name":"DailyLimit","scope":1147,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"value","scope":961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":951,"name":"ElementaryTypeName","src":"11538:7:30"}],"id":952,"name":"VariableDeclaration","src":"11538:13:30"},{"attributes":{"constant":false,"name":"available","scope":961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":953,"name":"ElementaryTypeName","src":"11561:7:30"}],"id":954,"name":"VariableDeclaration","src":"11561:17:30"},{"attributes":{"constant":false,"name":"limitTimestamp","scope":961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":955,"name":"ElementaryTypeName","src":"11588:7:30"}],"id":956,"name":"VariableDeclaration","src":"11588:22:30"},{"attributes":{"constant":false,"name":"pending","scope":961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":957,"name":"ElementaryTypeName","src":"11620:7:30"}],"id":958,"name":"VariableDeclaration","src":"11620:15:30"},{"attributes":{"constant":false,"name":"controllerConfirmationRequired","scope":961,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":959,"name":"ElementaryTypeName","src":"11645:4:30"}],"id":960,"name":"VariableDeclaration","src":"11645:35:30"}],"id":961,"name":"StructDefinition","src":"11510:177:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_confirmLimitUpdate","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":983,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":962,"name":"UserDefinedTypeName","src":"11778:10:30"}],"id":963,"name":"VariableDeclaration","src":"11778:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":983,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":964,"name":"ElementaryTypeName","src":"11803:7:30"}],"id":965,"name":"VariableDeclaration","src":"11803:15:30"}],"id":966,"name":"ParameterList","src":"11777:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":967,"name":"ParameterList","src":"11829:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51a99e4fe0e7ccb76d7b5ddb649e7516f5e27e1195b905cd87f22fbc56fc219b","typeString":"literal_string \"confirmed/submitted limit mismatch\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":968,"name":"Identifier","src":"11910:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":969,"name":"Identifier","src":"11918:4:30"}],"id":970,"name":"MemberAccess","src":"11918:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"uint256","value":"_amount"},"id":971,"name":"Identifier","src":"11934:7:30"}],"id":972,"name":"BinaryOperation","src":"11918:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"confirmed/submitted limit mismatch\"","value":"confirmed/submitted limit mismatch"},"id":973,"name":"Literal","src":"11943:36:30"}],"id":974,"name":"FunctionCall","src":"11910:70:30"}],"id":975,"name":"ExpressionStatement","src":"11910:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$961_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1069,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":976,"name":"Identifier","src":"12048:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":977,"name":"Identifier","src":"12061:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":978,"name":"Identifier","src":"12067:4:30"}],"id":979,"name":"MemberAccess","src":"12067:12:30"}],"id":980,"name":"FunctionCall","src":"12048:32:30"}],"id":981,"name":"ExpressionStatement","src":"12048:32:30"}],"id":982,"name":"Block","src":"11829:258:30"}],"id":983,"name":"FunctionDefinition","src":"11749:338:30"},{"attributes":{"documentation":"@dev Use up amount within the daily limit. Will fail if amount is larger than daily limit.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_enforceLimit","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1013,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":984,"name":"UserDefinedTypeName","src":"12215:10:30"}],"id":985,"name":"VariableDeclaration","src":"12215:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1013,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":986,"name":"ElementaryTypeName","src":"12240:7:30"}],"id":987,"name":"VariableDeclaration","src":"12240:15:30"}],"id":988,"name":"ParameterList","src":"12214:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":989,"name":"ParameterList","src":"12266:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$961_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":1146,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":990,"name":"Identifier","src":"12328:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":985,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":991,"name":"Identifier","src":"12350:4:30"}],"id":992,"name":"FunctionCall","src":"12328:27:30"}],"id":993,"name":"ExpressionStatement","src":"12328:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76fdd6ba40b4885ab45b8708dbc1ff56b4ee0a701903e21ff02ec4fc90e97cfd","typeString":"literal_string \"available=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":985,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":995,"name":"Identifier","src":"12373:4:30"}],"id":996,"name":"MemberAccess","src":"12373:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":987,"type":"uint256","value":"_amount"},"id":997,"name":"Identifier","src":"12391:7:30"}],"id":998,"name":"BinaryOperation","src":"12373:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617661696c61626c653c616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"available","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1020,"name":"Identifier","src":"12751:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":956,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1015,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1021,"name":"Identifier","src":"12757:4:30"}],"id":1022,"name":"MemberAccess","src":"12757:19:30"}],"id":1023,"name":"MemberAccess","src":"12757:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":1024,"name":"Literal","src":"12781:8:30"}],"id":1025,"name":"FunctionCall","src":"12757:33:30"}],"id":1026,"name":"BinaryOperation","src":"12751:39:30"},{"children":[{"attributes":{"functionReturnParameters":1019},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1015,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1027,"name":"Identifier","src":"12813:4:30"}],"id":1028,"name":"MemberAccess","src":"12813:10:30"}],"id":1029,"name":"Return","src":"12806:17:30"}],"id":1030,"name":"Block","src":"12792:42:30"},{"children":[{"attributes":{"functionReturnParameters":1019},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1015,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1031,"name":"Identifier","src":"12861:4:30"}],"id":1032,"name":"MemberAccess","src":"12861:14:30"}],"id":1033,"name":"Return","src":"12854:21:30"}],"id":1034,"name":"Block","src":"12840:46:30"}],"id":1035,"name":"IfStatement","src":"12747:139:30"}],"id":1036,"name":"Block","src":"12737:155:30"}],"id":1037,"name":"FunctionDefinition","src":"12652:240:30"},{"attributes":{"documentation":"@dev Modify the spend limit and spend available based on the provided value.\n @dev _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_modifyLimit","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1069,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1038,"name":"UserDefinedTypeName","src":"13060:10:30"}],"id":1039,"name":"VariableDeclaration","src":"13060:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1040,"name":"ElementaryTypeName","src":"13085:7:30"}],"id":1041,"name":"VariableDeclaration","src":"13085:15:30"}],"id":1042,"name":"ParameterList","src":"13059:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1043,"name":"ParameterList","src":"13110:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$961_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":1146,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":1044,"name":"Identifier","src":"13172:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1045,"name":"Identifier","src":"13194:4:30"}],"id":1046,"name":"FunctionCall","src":"13172:27:30"}],"id":1047,"name":"ExpressionStatement","src":"13172:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1048,"name":"Identifier","src":"13264:4:30"}],"id":1050,"name":"MemberAccess","src":"13264:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1041,"type":"uint256","value":"_amount"},"id":1051,"name":"Identifier","src":"13277:7:30"}],"id":1052,"name":"Assignment","src":"13264:20:30"}],"id":1053,"name":"ExpressionStatement","src":"13264:20:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1054,"name":"Identifier","src":"13376:4:30"}],"id":1055,"name":"MemberAccess","src":"13376:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1056,"name":"Identifier","src":"13393:4:30"}],"id":1057,"name":"MemberAccess","src":"13393:10:30"}],"id":1058,"name":"BinaryOperation","src":"13376:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1059,"name":"Identifier","src":"13419:4:30"}],"id":1061,"name":"MemberAccess","src":"13419:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1062,"name":"Identifier","src":"13436:4:30"}],"id":1063,"name":"MemberAccess","src":"13436:10:30"}],"id":1064,"name":"Assignment","src":"13419:27:30"}],"id":1065,"name":"ExpressionStatement","src":"13419:27:30"}],"id":1066,"name":"Block","src":"13405:52:30"}],"id":1067,"name":"IfStatement","src":"13372:85:30"}],"id":1068,"name":"Block","src":"13110:353:30"}],"id":1069,"name":"FunctionDefinition","src":"13038:425:30"},{"attributes":{"documentation":"@dev Set the daily limit.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_setLimit","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1095,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1070,"name":"UserDefinedTypeName","src":"13586:10:30"}],"id":1071,"name":"VariableDeclaration","src":"13586:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1095,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1072,"name":"ElementaryTypeName","src":"13611:7:30"}],"id":1073,"name":"VariableDeclaration","src":"13611:15:30"}],"id":1074,"name":"ParameterList","src":"13585:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1075,"name":"ParameterList","src":"13637:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5515161ef75a198a2c79d5b0927b7d4cad620073ea22f64fc9faac79dbcba501","typeString":"literal_string \"limit already set\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1076,"name":"Identifier","src":"13709:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1077,"name":"Identifier","src":"13718:4:30"}],"id":1078,"name":"MemberAccess","src":"13718:35:30"}],"id":1079,"name":"UnaryOperation","src":"13717:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d697420616c726561647920736574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit already set\"","value":"limit already set"},"id":1080,"name":"Literal","src":"13755:19:30"}],"id":1081,"name":"FunctionCall","src":"13709:66:30"}],"id":1082,"name":"ExpressionStatement","src":"13709:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$961_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1069,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":1083,"name":"Identifier","src":"13844:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1084,"name":"Identifier","src":"13857:4:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1073,"type":"uint256","value":"_amount"},"id":1085,"name":"Identifier","src":"13863:7:30"}],"id":1086,"name":"FunctionCall","src":"13844:27:30"}],"id":1087,"name":"ExpressionStatement","src":"13844:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1088,"name":"Identifier","src":"13919:4:30"}],"id":1090,"name":"MemberAccess","src":"13919:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1091,"name":"Literal","src":"13957:4:30"}],"id":1092,"name":"Assignment","src":"13919:42:30"}],"id":1093,"name":"ExpressionStatement","src":"13919:42:30"}],"id":1094,"name":"Block","src":"13637:331:30"}],"id":1095,"name":"FunctionDefinition","src":"13567:401:30"},{"attributes":{"documentation":"@dev Submit a daily limit update, needs to be confirmed.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_submitLimitUpdate","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1115,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1096,"name":"UserDefinedTypeName","src":"14131:10:30"}],"id":1097,"name":"VariableDeclaration","src":"14131:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1098,"name":"ElementaryTypeName","src":"14156:7:30"}],"id":1099,"name":"VariableDeclaration","src":"14156:15:30"}],"id":1100,"name":"ParameterList","src":"14130:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1101,"name":"ParameterList","src":"14182:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d667d750d47924f17f0479d6107ac25f4e8879366a2d600f6b5ea07705c561f3","typeString":"literal_string \"limit hasn't been set yet\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1102,"name":"Identifier","src":"14246:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1097,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1103,"name":"Identifier","src":"14254:4:30"}],"id":1104,"name":"MemberAccess","src":"14254:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d6974206861736e2774206265656e2073657420796574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit hasn't been set yet\"","value":"limit hasn't been set yet"},"id":1105,"name":"Literal","src":"14291:27:30"}],"id":1106,"name":"FunctionCall","src":"14246:73:30"}],"id":1107,"name":"ExpressionStatement","src":"14246:73:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1097,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1108,"name":"Identifier","src":"14391:4:30"}],"id":1110,"name":"MemberAccess","src":"14391:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1099,"type":"uint256","value":"_amount"},"id":1111,"name":"Identifier","src":"14406:7:30"}],"id":1112,"name":"Assignment","src":"14391:22:30"}],"id":1113,"name":"ExpressionStatement","src":"14391:22:30"}],"id":1114,"name":"Block","src":"14182:238:30"}],"id":1115,"name":"FunctionDefinition","src":"14103:317:30"},{"attributes":{"documentation":"@dev Update available spend limit based on the daily reset.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateAvailableLimit","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1146,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1116,"name":"UserDefinedTypeName","src":"14525:10:30"}],"id":1117,"name":"VariableDeclaration","src":"14525:23:30"}],"id":1118,"name":"ParameterList","src":"14524:25:30"},{"attributes":{"parameters":[null]},"children":[],"id":1119,"name":"ParameterList","src":"14558:0:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1120,"name":"Identifier","src":"14572:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":956,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1121,"name":"Identifier","src":"14578:4:30"}],"id":1122,"name":"MemberAccess","src":"14578:19:30"}],"id":1123,"name":"MemberAccess","src":"14578:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":1124,"name":"Literal","src":"14602:8:30"}],"id":1125,"name":"FunctionCall","src":"14578:33:30"}],"id":1126,"name":"BinaryOperation","src":"14572:39:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"limitTimestamp","referencedDeclaration":956,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1127,"name":"Identifier","src":"14672:4:30"}],"id":1129,"name":"MemberAccess","src":"14672:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1130,"name":"Identifier","src":"14694:3:30"}],"id":1131,"name":"Assignment","src":"14672:25:30"}],"id":1132,"name":"ExpressionStatement","src":"14672:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1133,"name":"Identifier","src":"14778:4:30"}],"id":1135,"name":"MemberAccess","src":"14778:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1136,"name":"Identifier","src":"14795:4:30"}],"id":1137,"name":"MemberAccess","src":"14795:10:30"}],"id":1138,"name":"Assignment","src":"14778:27:30"}],"id":1139,"name":"ExpressionStatement","src":"14778:27:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"function ()","value":"UpdatedAvailableLimit"},"id":1140,"name":"Identifier","src":"14824:21:30"}],"id":1141,"name":"FunctionCall","src":"14824:23:30"}],"id":1142,"name":"EmitStatement","src":"14819:28:30"}],"id":1143,"name":"Block","src":"14613:245:30"}],"id":1144,"name":"IfStatement","src":"14568:290:30"}],"id":1145,"name":"Block","src":"14558:306:30"}],"id":1146,"name":"FunctionDefinition","src":"14494:370:30"}],"id":1147,"name":"ContractDefinition","src":"11411:3455:30"},{"attributes":{"contractDependencies":[293,338,375,397,3991],"contractKind":"contract","documentation":"@title it provides daily spend limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1279,397,375,3991,293,338],"name":"SpendLimit","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":375,"type":"contract ControllableOwnable"},"id":1148,"name":"UserDefinedTypeName","src":"14949:19:30"}],"id":1149,"name":"InheritanceSpecifier","src":"14949:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":397,"type":"contract SelfCallableOwnable"},"id":1150,"name":"UserDefinedTypeName","src":"14970:19:30"}],"id":1151,"name":"InheritanceSpecifier","src":"14970:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetSpendLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1157,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1152,"name":"ElementaryTypeName","src":"15016:7:30"}],"id":1153,"name":"VariableDeclaration","src":"15016:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1154,"name":"ElementaryTypeName","src":"15033:7:30"}],"id":1155,"name":"VariableDeclaration","src":"15033:15:30"}],"id":1156,"name":"ParameterList","src":"15015:34:30"}],"id":1157,"name":"EventDefinition","src":"14996:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedSpendLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1161,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1158,"name":"ElementaryTypeName","src":"15087:7:30"}],"id":1159,"name":"VariableDeclaration","src":"15087:15:30"}],"id":1160,"name":"ParameterList","src":"15086:17:30"}],"id":1161,"name":"EventDefinition","src":"15055:49:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1147,"type":"library DailyLimitTrait"},"id":1162,"name":"UserDefinedTypeName","src":"15116:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1163,"name":"UserDefinedTypeName","src":"15136:26:30"}],"id":1164,"name":"UsingForDirective","src":"15110:53:30"},{"attributes":{"constant":false,"name":"_spendLimit","scope":1279,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1165,"name":"UserDefinedTypeName","src":"15169:26:30"}],"id":1166,"name":"VariableDeclaration","src":"15169:47:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily spend limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1279,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_limit_","scope":1183,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1167,"name":"ElementaryTypeName","src":"15302:7:30"}],"id":1168,"name":"VariableDeclaration","src":"15302:15:30"}],"id":1169,"name":"ParameterList","src":"15301:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1170,"name":"ParameterList","src":"15328:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1171,"name":"Identifier","src":"15338:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":961,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1147,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1172,"name":"Identifier","src":"15352:15:30"}],"id":1173,"name":"MemberAccess","src":"15352:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"uint256","value":"_limit_"},"id":1174,"name":"Identifier","src":"15379:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"uint256","value":"_limit_"},"id":1175,"name":"Identifier","src":"15388:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1176,"name":"Identifier","src":"15397:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1177,"name":"Literal","src":"15402:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1178,"name":"Literal","src":"15405:5:30"}],"id":1179,"name":"FunctionCall","src":"15352:59:30"}],"id":1180,"name":"Assignment","src":"15338:73:30"}],"id":1181,"name":"ExpressionStatement","src":"15338:73:30"}],"id":1182,"name":"Block","src":"15328:90:30"}],"id":1183,"name":"FunctionDefinition","src":"15290:128:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmSpendLimitUpdate","scope":1279,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1184,"name":"ElementaryTypeName","src":"15513:7:30"}],"id":1185,"name":"VariableDeclaration","src":"15513:15:30"}],"id":1186,"name":"ParameterList","src":"15512:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1189,"name":"ParameterList","src":"15554:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":1187,"name":"Identifier","src":"15539:14:30"}],"id":1188,"name":"ModifierInvocation","src":"15539:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":983,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1190,"name":"Identifier","src":"15564:11:30"}],"id":1192,"name":"MemberAccess","src":"15564:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1185,"type":"uint256","value":"_amount"},"id":1193,"name":"Identifier","src":"15596:7:30"}],"id":1194,"name":"FunctionCall","src":"15564:40:30"}],"id":1195,"name":"ExpressionStatement","src":"15564:40:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1157,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":1196,"name":"Identifier","src":"15619:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1197,"name":"Identifier","src":"15633:3:30"}],"id":1198,"name":"MemberAccess","src":"15633:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1185,"type":"uint256","value":"_amount"},"id":1199,"name":"Identifier","src":"15645:7:30"}],"id":1200,"name":"FunctionCall","src":"15619:34:30"}],"id":1201,"name":"EmitStatement","src":"15614:39:30"}],"id":1202,"name":"Block","src":"15554:106:30"}],"id":1203,"name":"FunctionDefinition","src":"15480:180:30"},{"attributes":{"documentation":"@dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setSpendLimit","scope":1279,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1204,"name":"ElementaryTypeName","src":"15840:7:30"}],"id":1205,"name":"VariableDeclaration","src":"15840:15:30"}],"id":1206,"name":"ParameterList","src":"15839:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1209,"name":"ParameterList","src":"15882:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1207,"name":"Identifier","src":"15866:15:30"}],"id":1208,"name":"ModifierInvocation","src":"15866:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1095,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1210,"name":"Identifier","src":"15892:11:30"}],"id":1212,"name":"MemberAccess","src":"15892:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1205,"type":"uint256","value":"_amount"},"id":1213,"name":"Identifier","src":"15914:7:30"}],"id":1214,"name":"FunctionCall","src":"15892:30:30"}],"id":1215,"name":"ExpressionStatement","src":"15892:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1157,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":1216,"name":"Identifier","src":"15937:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1217,"name":"Identifier","src":"15951:3:30"}],"id":1218,"name":"MemberAccess","src":"15951:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1205,"type":"uint256","value":"_amount"},"id":1219,"name":"Identifier","src":"15963:7:30"}],"id":1220,"name":"FunctionCall","src":"15937:34:30"}],"id":1221,"name":"EmitStatement","src":"15932:39:30"}],"id":1222,"name":"Block","src":"15882:96:30"}],"id":1223,"name":"FunctionDefinition","src":"15817:161:30"},{"attributes":{"documentation":"@dev View your available limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitAvailable","scope":1279,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1224,"name":"ParameterList","src":"16051:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1233,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1225,"name":"ElementaryTypeName","src":"16077:7:30"}],"id":1226,"name":"VariableDeclaration","src":"16077:7:30"}],"id":1227,"name":"ParameterList","src":"16076:9:30"},{"children":[{"attributes":{"functionReturnParameters":1227},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1037,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1228,"name":"Identifier","src":"16103:11:30"}],"id":1229,"name":"MemberAccess","src":"16103:30:30"}],"id":1230,"name":"FunctionCall","src":"16103:32:30"}],"id":1231,"name":"Return","src":"16096:39:30"}],"id":1232,"name":"Block","src":"16086:56:30"}],"id":1233,"name":"FunctionDefinition","src":"16023:119:30"},{"attributes":{"documentation":"@dev Is there an active spend limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitPending","scope":1279,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1234,"name":"ParameterList","src":"16225:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1242,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1235,"name":"ElementaryTypeName","src":"16251:7:30"}],"id":1236,"name":"VariableDeclaration","src":"16251:7:30"}],"id":1237,"name":"ParameterList","src":"16250:9:30"},{"children":[{"attributes":{"functionReturnParameters":1237},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1238,"name":"Identifier","src":"16277:11:30"}],"id":1239,"name":"MemberAccess","src":"16277:19:30"}],"id":1240,"name":"Return","src":"16270:26:30"}],"id":1241,"name":"Block","src":"16260:43:30"}],"id":1242,"name":"FunctionDefinition","src":"16199:104:30"},{"attributes":{"documentation":"@dev Has the spend limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitControllerConfirmationRequired","scope":1279,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1243,"name":"ParameterList","src":"16408:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1251,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1244,"name":"ElementaryTypeName","src":"16434:4:30"}],"id":1245,"name":"VariableDeclaration","src":"16434:4:30"}],"id":1246,"name":"ParameterList","src":"16433:6:30"},{"children":[{"attributes":{"functionReturnParameters":1246},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1247,"name":"Identifier","src":"16457:11:30"}],"id":1248,"name":"MemberAccess","src":"16457:42:30"}],"id":1249,"name":"Return","src":"16450:49:30"}],"id":1250,"name":"Block","src":"16440:66:30"}],"id":1251,"name":"FunctionDefinition","src":"16359:147:30"},{"attributes":{"documentation":"@dev View how much has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitValue","scope":1279,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1252,"name":"ParameterList","src":"16586:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1260,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1253,"name":"ElementaryTypeName","src":"16612:7:30"}],"id":1254,"name":"VariableDeclaration","src":"16612:7:30"}],"id":1255,"name":"ParameterList","src":"16611:9:30"},{"children":[{"attributes":{"functionReturnParameters":1255},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1256,"name":"Identifier","src":"16638:11:30"}],"id":1257,"name":"MemberAccess","src":"16638:17:30"}],"id":1258,"name":"Return","src":"16631:24:30"}],"id":1259,"name":"Block","src":"16621:41:30"}],"id":1260,"name":"FunctionDefinition","src":"16562:100:30"},{"attributes":{"documentation":"@dev Submit a daily transfer limit update for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitSpendLimitUpdate","scope":1279,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1278,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1261,"name":"ElementaryTypeName","src":"16838:7:30"}],"id":1262,"name":"VariableDeclaration","src":"16838:15:30"}],"id":1263,"name":"ParameterList","src":"16837:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1266,"name":"ParameterList","src":"16880:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1264,"name":"Identifier","src":"16864:15:30"}],"id":1265,"name":"ModifierInvocation","src":"16864:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1115,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1267,"name":"Identifier","src":"16890:11:30"}],"id":1269,"name":"MemberAccess","src":"16890:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1262,"type":"uint256","value":"_amount"},"id":1270,"name":"Identifier","src":"16921:7:30"}],"id":1271,"name":"FunctionCall","src":"16890:39:30"}],"id":1272,"name":"ExpressionStatement","src":"16890:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1161,"type":"function (uint256)","value":"SubmittedSpendLimitUpdate"},"id":1273,"name":"Identifier","src":"16944:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1262,"type":"uint256","value":"_amount"},"id":1274,"name":"Identifier","src":"16970:7:30"}],"id":1275,"name":"FunctionCall","src":"16944:34:30"}],"id":1276,"name":"EmitStatement","src":"16939:39:30"}],"id":1277,"name":"Block","src":"16880:105:30"}],"id":1278,"name":"FunctionDefinition","src":"16806:179:30"}],"id":1279,"name":"ContractDefinition","src":"14926:2061:30"},{"attributes":{"contractDependencies":[293,338,375,397,3991],"contractKind":"contract","documentation":"@title GasTopUpLimit provides daily limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1437,397,375,3991,293,338],"name":"GasTopUpLimit","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":375,"type":"contract ControllableOwnable"},"id":1280,"name":"UserDefinedTypeName","src":"17077:19:30"}],"id":1281,"name":"InheritanceSpecifier","src":"17077:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":397,"type":"contract SelfCallableOwnable"},"id":1282,"name":"UserDefinedTypeName","src":"17098:19:30"}],"id":1283,"name":"InheritanceSpecifier","src":"17098:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetGasTopUpLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1289,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1284,"name":"ElementaryTypeName","src":"17147:7:30"}],"id":1285,"name":"VariableDeclaration","src":"17147:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1289,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1286,"name":"ElementaryTypeName","src":"17164:7:30"}],"id":1287,"name":"VariableDeclaration","src":"17164:15:30"}],"id":1288,"name":"ParameterList","src":"17146:34:30"}],"id":1289,"name":"EventDefinition","src":"17124:57:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedGasTopUpLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1293,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1290,"name":"ElementaryTypeName","src":"17221:7:30"}],"id":1291,"name":"VariableDeclaration","src":"17221:15:30"}],"id":1292,"name":"ParameterList","src":"17220:17:30"}],"id":1293,"name":"EventDefinition","src":"17186:52:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_GAS_TOPUP_LIMIT","scope":1437,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1294,"name":"ElementaryTypeName","src":"17244:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"353030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 500000000000000000","value":"500"},"id":1295,"name":"Literal","src":"17296:10:30"}],"id":1296,"name":"VariableDeclaration","src":"17244:62:30"},{"attributes":{"constant":true,"name":"_MINIMUM_GAS_TOPUP_LIMIT","scope":1437,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1297,"name":"ElementaryTypeName","src":"17312:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 1000000000000000","value":"1"},"id":1298,"name":"Literal","src":"17364:8:30"}],"id":1299,"name":"VariableDeclaration","src":"17312:60:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1147,"type":"library DailyLimitTrait"},"id":1300,"name":"UserDefinedTypeName","src":"17385:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1301,"name":"UserDefinedTypeName","src":"17405:26:30"}],"id":1302,"name":"UsingForDirective","src":"17379:53:30"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":1437,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1303,"name":"UserDefinedTypeName","src":"17438:26:30"}],"id":1304,"name":"VariableDeclaration","src":"17438:50:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily gas topup limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1437,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1305,"name":"ParameterList","src":"17577:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1306,"name":"ParameterList","src":"17589:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1307,"name":"Identifier","src":"17599:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":961,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1147,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1308,"name":"Identifier","src":"17616:15:30"}],"id":1309,"name":"MemberAccess","src":"17616:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1296,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1310,"name":"Identifier","src":"17643:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1296,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1311,"name":"Identifier","src":"17669:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1312,"name":"Identifier","src":"17695:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1313,"name":"Literal","src":"17700:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1314,"name":"Literal","src":"17703:5:30"}],"id":1315,"name":"FunctionCall","src":"17616:93:30"}],"id":1316,"name":"Assignment","src":"17599:110:30"}],"id":1317,"name":"ExpressionStatement","src":"17599:110:30"}],"id":1318,"name":"Block","src":"17589:127:30"}],"id":1319,"name":"FunctionDefinition","src":"17566:150:30"},{"attributes":{"documentation":"@dev Confirm pending set top up gas limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmGasTopUpLimitUpdate","scope":1437,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1339,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1320,"name":"ElementaryTypeName","src":"17819:7:30"}],"id":1321,"name":"VariableDeclaration","src":"17819:15:30"}],"id":1322,"name":"ParameterList","src":"17818:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1325,"name":"ParameterList","src":"17860:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":1323,"name":"Identifier","src":"17845:14:30"}],"id":1324,"name":"ModifierInvocation","src":"17845:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":983,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1326,"name":"Identifier","src":"17870:14:30"}],"id":1328,"name":"MemberAccess","src":"17870:34:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1321,"type":"uint256","value":"_amount"},"id":1329,"name":"Identifier","src":"17905:7:30"}],"id":1330,"name":"FunctionCall","src":"17870:43:30"}],"id":1331,"name":"ExpressionStatement","src":"17870:43:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1289,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1332,"name":"Identifier","src":"17928:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1333,"name":"Identifier","src":"17945:3:30"}],"id":1334,"name":"MemberAccess","src":"17945:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1321,"type":"uint256","value":"_amount"},"id":1335,"name":"Identifier","src":"17957:7:30"}],"id":1336,"name":"FunctionCall","src":"17928:37:30"}],"id":1337,"name":"EmitStatement","src":"17923:42:30"}],"id":1338,"name":"Block","src":"17860:112:30"}],"id":1339,"name":"FunctionDefinition","src":"17783:189:30"},{"attributes":{"documentation":"@dev View your available gas top-up limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitAvailable","scope":1437,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1340,"name":"ParameterList","src":"18059:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1349,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1341,"name":"ElementaryTypeName","src":"18085:7:30"}],"id":1342,"name":"VariableDeclaration","src":"18085:7:30"}],"id":1343,"name":"ParameterList","src":"18084:9:30"},{"children":[{"attributes":{"functionReturnParameters":1343},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1037,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1344,"name":"Identifier","src":"18111:14:30"}],"id":1345,"name":"MemberAccess","src":"18111:33:30"}],"id":1346,"name":"FunctionCall","src":"18111:35:30"}],"id":1347,"name":"Return","src":"18104:42:30"}],"id":1348,"name":"Block","src":"18094:59:30"}],"id":1349,"name":"FunctionDefinition","src":"18028:125:30"},{"attributes":{"documentation":"@dev Is there an active gas top-up limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitPending","scope":1437,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1350,"name":"ParameterList","src":"18244:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1358,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1351,"name":"ElementaryTypeName","src":"18270:7:30"}],"id":1352,"name":"VariableDeclaration","src":"18270:7:30"}],"id":1353,"name":"ParameterList","src":"18269:9:30"},{"children":[{"attributes":{"functionReturnParameters":1353},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1354,"name":"Identifier","src":"18296:14:30"}],"id":1355,"name":"MemberAccess","src":"18296:22:30"}],"id":1356,"name":"Return","src":"18289:29:30"}],"id":1357,"name":"Block","src":"18279:46:30"}],"id":1358,"name":"FunctionDefinition","src":"18215:110:30"},{"attributes":{"documentation":"@dev Has the gas top-up limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitControllerConfirmationRequired","scope":1437,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1359,"name":"ParameterList","src":"18438:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1367,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1360,"name":"ElementaryTypeName","src":"18464:4:30"}],"id":1361,"name":"VariableDeclaration","src":"18464:4:30"}],"id":1362,"name":"ParameterList","src":"18463:6:30"},{"children":[{"attributes":{"functionReturnParameters":1362},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1363,"name":"Identifier","src":"18487:14:30"}],"id":1364,"name":"MemberAccess","src":"18487:45:30"}],"id":1365,"name":"Return","src":"18480:52:30"}],"id":1366,"name":"Block","src":"18470:69:30"}],"id":1367,"name":"FunctionDefinition","src":"18386:153:30"},{"attributes":{"documentation":"@dev View how much gas top-up has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitValue","scope":1437,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1368,"name":"ParameterList","src":"18633:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1376,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1369,"name":"ElementaryTypeName","src":"18659:7:30"}],"id":1370,"name":"VariableDeclaration","src":"18659:7:30"}],"id":1371,"name":"ParameterList","src":"18658:9:30"},{"children":[{"attributes":{"functionReturnParameters":1371},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1372,"name":"Identifier","src":"18685:14:30"}],"id":1373,"name":"MemberAccess","src":"18685:20:30"}],"id":1374,"name":"Return","src":"18678:27:30"}],"id":1375,"name":"Block","src":"18668:44:30"}],"id":1376,"name":"FunctionDefinition","src":"18606:106:30"},{"attributes":{"documentation":"@dev Sets the daily gas top up limit.\n @param _amount is the gas top up amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setGasTopUpLimit","scope":1437,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1407,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1377,"name":"ElementaryTypeName","src":"18846:7:30"}],"id":1378,"name":"VariableDeclaration","src":"18846:15:30"}],"id":1379,"name":"ParameterList","src":"18845:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1382,"name":"ParameterList","src":"18888:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1380,"name":"Identifier","src":"18872:15:30"}],"id":1381,"name":"ModifierInvocation","src":"18872:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1383,"name":"Identifier","src":"18898:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1299,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1384,"name":"Identifier","src":"18906:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1378,"type":"uint256","value":"_amount"},"id":1385,"name":"Identifier","src":"18934:7:30"}],"id":1386,"name":"BinaryOperation","src":"18906:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1378,"type":"uint256","value":"_amount"},"id":1387,"name":"Identifier","src":"18945:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1296,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1388,"name":"Identifier","src":"18956:24:30"}],"id":1389,"name":"BinaryOperation","src":"18945:35:30"}],"id":1390,"name":"BinaryOperation","src":"18906:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1391,"name":"Literal","src":"18982:21:30"}],"id":1392,"name":"FunctionCall","src":"18898:106:30"}],"id":1393,"name":"ExpressionStatement","src":"18898:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1095,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1394,"name":"Identifier","src":"19014:14:30"}],"id":1396,"name":"MemberAccess","src":"19014:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1378,"type":"uint256","value":"_amount"},"id":1397,"name":"Identifier","src":"19039:7:30"}],"id":1398,"name":"FunctionCall","src":"19014:33:30"}],"id":1399,"name":"ExpressionStatement","src":"19014:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1289,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1400,"name":"Identifier","src":"19062:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1401,"name":"Identifier","src":"19079:3:30"}],"id":1402,"name":"MemberAccess","src":"19079:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1378,"type":"uint256","value":"_amount"},"id":1403,"name":"Identifier","src":"19091:7:30"}],"id":1404,"name":"FunctionCall","src":"19062:37:30"}],"id":1405,"name":"EmitStatement","src":"19057:42:30"}],"id":1406,"name":"Block","src":"18888:218:30"}],"id":1407,"name":"FunctionDefinition","src":"18820:286:30"},{"attributes":{"documentation":"@dev Submit a daily gas top up limit update.\n @param _amount is the daily top up gas limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitGasTopUpLimitUpdate","scope":1437,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1436,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1408,"name":"ElementaryTypeName","src":"19268:7:30"}],"id":1409,"name":"VariableDeclaration","src":"19268:15:30"}],"id":1410,"name":"ParameterList","src":"19267:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1413,"name":"ParameterList","src":"19310:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1411,"name":"Identifier","src":"19294:15:30"}],"id":1412,"name":"ModifierInvocation","src":"19294:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1414,"name":"Identifier","src":"19320:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1299,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1415,"name":"Identifier","src":"19328:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"uint256","value":"_amount"},"id":1416,"name":"Identifier","src":"19356:7:30"}],"id":1417,"name":"BinaryOperation","src":"19328:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"uint256","value":"_amount"},"id":1418,"name":"Identifier","src":"19367:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1296,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1419,"name":"Identifier","src":"19378:24:30"}],"id":1420,"name":"BinaryOperation","src":"19367:35:30"}],"id":1421,"name":"BinaryOperation","src":"19328:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1422,"name":"Literal","src":"19404:21:30"}],"id":1423,"name":"FunctionCall","src":"19320:106:30"}],"id":1424,"name":"ExpressionStatement","src":"19320:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1115,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1425,"name":"Identifier","src":"19436:14:30"}],"id":1427,"name":"MemberAccess","src":"19436:33:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"uint256","value":"_amount"},"id":1428,"name":"Identifier","src":"19470:7:30"}],"id":1429,"name":"FunctionCall","src":"19436:42:30"}],"id":1430,"name":"ExpressionStatement","src":"19436:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1293,"type":"function (uint256)","value":"SubmittedGasTopUpLimitUpdate"},"id":1431,"name":"Identifier","src":"19493:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"uint256","value":"_amount"},"id":1432,"name":"Identifier","src":"19522:7:30"}],"id":1433,"name":"FunctionCall","src":"19493:37:30"}],"id":1434,"name":"EmitStatement","src":"19488:42:30"}],"id":1435,"name":"Block","src":"19310:227:30"}],"id":1436,"name":"FunctionDefinition","src":"19233:304:30"}],"id":1437,"name":"ContractDefinition","src":"17051:2488:30"},{"attributes":{"contractDependencies":[293,338,375,397,3991,4208],"contractKind":"contract","documentation":"@title LoadLimit provides daily load limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1611,4208,397,375,3991,293,338],"name":"LoadLimit","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":375,"type":"contract ControllableOwnable"},"id":1438,"name":"UserDefinedTypeName","src":"19626:19:30"}],"id":1439,"name":"InheritanceSpecifier","src":"19626:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":397,"type":"contract SelfCallableOwnable"},"id":1440,"name":"UserDefinedTypeName","src":"19647:19:30"}],"id":1441,"name":"InheritanceSpecifier","src":"19647:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":4208,"type":"contract TokenWhitelistable"},"id":1442,"name":"UserDefinedTypeName","src":"19668:18:30"}],"id":1443,"name":"InheritanceSpecifier","src":"19668:18:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetLoadLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1449,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1444,"name":"ElementaryTypeName","src":"19712:7:30"}],"id":1445,"name":"VariableDeclaration","src":"19712:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1449,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1446,"name":"ElementaryTypeName","src":"19729:7:30"}],"id":1447,"name":"VariableDeclaration","src":"19729:15:30"}],"id":1448,"name":"ParameterList","src":"19711:34:30"}],"id":1449,"name":"EventDefinition","src":"19693:53:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedLoadLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1453,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1450,"name":"ElementaryTypeName","src":"19782:7:30"}],"id":1451,"name":"VariableDeclaration","src":"19782:15:30"}],"id":1452,"name":"ParameterList","src":"19781:17:30"}],"id":1453,"name":"EventDefinition","src":"19751:48:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_STABLECOIN_LOAD_LIMIT","scope":1611,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1454,"name":"ElementaryTypeName","src":"19805:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000","value":"10000"},"id":1455,"name":"Literal","src":"19863:5:30"}],"id":1456,"name":"VariableDeclaration","src":"19805:63:30"},{"attributes":{"constant":false,"name":"_maximumLoadLimit","scope":1611,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1457,"name":"ElementaryTypeName","src":"19881:7:30"}],"id":1458,"name":"VariableDeclaration","src":"19881:33:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1147,"type":"library DailyLimitTrait"},"id":1459,"name":"UserDefinedTypeName","src":"19927:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1460,"name":"UserDefinedTypeName","src":"19947:26:30"}],"id":1461,"name":"UsingForDirective","src":"19921:53:30"},{"attributes":{"constant":false,"name":"_loadLimit","scope":1611,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1462,"name":"UserDefinedTypeName","src":"19980:26:30"}],"id":1463,"name":"VariableDeclaration","src":"19980:46:30"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1611,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1501,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1464,"name":"ElementaryTypeName","src":"20045:7:30"}],"id":1465,"name":"VariableDeclaration","src":"20045:28:30"}],"id":1466,"name":"ParameterList","src":"20044:30:30"},{"attributes":{"parameters":[null]},"children":[],"id":1470,"name":"ParameterList","src":"20125:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4208,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":1467,"name":"Identifier","src":"20084:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1468,"name":"Identifier","src":"20103:20:30"}],"id":1469,"name":"ModifierInvocation","src":"20084:40:30"},{"children":[{"attributes":{"assignments":[null,1472,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1471,"name":"ElementaryTypeName","src":"20138:7:30"}],"id":1472,"name":"VariableDeclaration","src":"20138:27:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1473,"name":"Identifier","src":"20179:18:30"}],"id":1474,"name":"FunctionCall","src":"20179:20:30"}],"id":1475,"name":"VariableDeclarationStatement","src":"20135:64:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e91ed084014006e202586b158c3035ec40db0f637c146d3fdad49cda6c7a17a","typeString":"literal_string \"no stablecoin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1476,"name":"Identifier","src":"20209:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1472,"type":"uint256","value":"stablecoinMagnitude"},"id":1477,"name":"Identifier","src":"20217:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1478,"name":"Literal","src":"20239:1:30"}],"id":1479,"name":"BinaryOperation","src":"20217:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20737461626c65636f696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no stablecoin\"","value":"no stablecoin"},"id":1480,"name":"Literal","src":"20242:15:30"}],"id":1481,"name":"FunctionCall","src":"20209:49:30"}],"id":1482,"name":"ExpressionStatement","src":"20209:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1483,"name":"Identifier","src":"20268:17:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"_MAXIMUM_STABLECOIN_LOAD_LIMIT"},"id":1484,"name":"Identifier","src":"20288:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1472,"type":"uint256","value":"stablecoinMagnitude"},"id":1485,"name":"Identifier","src":"20321:19:30"}],"id":1486,"name":"BinaryOperation","src":"20288:52:30"}],"id":1487,"name":"Assignment","src":"20268:72:30"}],"id":1488,"name":"ExpressionStatement","src":"20268:72:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1489,"name":"Identifier","src":"20350:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":961,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1147,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1490,"name":"Identifier","src":"20363:15:30"}],"id":1491,"name":"MemberAccess","src":"20363:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1492,"name":"Identifier","src":"20390:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1493,"name":"Identifier","src":"20409:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1494,"name":"Identifier","src":"20428:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1495,"name":"Literal","src":"20433:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1496,"name":"Literal","src":"20436:5:30"}],"id":1497,"name":"FunctionCall","src":"20363:79:30"}],"id":1498,"name":"Assignment","src":"20350:92:30"}],"id":1499,"name":"ExpressionStatement","src":"20350:92:30"}],"id":1500,"name":"Block","src":"20125:324:30"}],"id":1501,"name":"FunctionDefinition","src":"20033:416:30"},{"attributes":{"documentation":"@dev Sets a daily card load limit.\n @param _amount is the card load amount in current stablecoin base units.","implemented":true,"isConstructor":false,"kind":"function","name":"setLoadLimit","scope":1611,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1528,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1502,"name":"ElementaryTypeName","src":"20601:7:30"}],"id":1503,"name":"VariableDeclaration","src":"20601:15:30"}],"id":1504,"name":"ParameterList","src":"20600:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1507,"name":"ParameterList","src":"20643:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1505,"name":"Identifier","src":"20627:15:30"}],"id":1506,"name":"ModifierInvocation","src":"20627:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1508,"name":"Identifier","src":"20653:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1503,"type":"uint256","value":"_amount"},"id":1509,"name":"Identifier","src":"20661:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1510,"name":"Identifier","src":"20672:17:30"}],"id":1511,"name":"BinaryOperation","src":"20661:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1512,"name":"Literal","src":"20691:26:30"}],"id":1513,"name":"FunctionCall","src":"20653:65:30"}],"id":1514,"name":"ExpressionStatement","src":"20653:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1095,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1515,"name":"Identifier","src":"20728:10:30"}],"id":1517,"name":"MemberAccess","src":"20728:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1503,"type":"uint256","value":"_amount"},"id":1518,"name":"Identifier","src":"20749:7:30"}],"id":1519,"name":"FunctionCall","src":"20728:29:30"}],"id":1520,"name":"ExpressionStatement","src":"20728:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1449,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1521,"name":"Identifier","src":"20772:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1522,"name":"Identifier","src":"20785:3:30"}],"id":1523,"name":"MemberAccess","src":"20785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1503,"type":"uint256","value":"_amount"},"id":1524,"name":"Identifier","src":"20797:7:30"}],"id":1525,"name":"FunctionCall","src":"20772:33:30"}],"id":1526,"name":"EmitStatement","src":"20767:38:30"}],"id":1527,"name":"Block","src":"20643:169:30"}],"id":1528,"name":"FunctionDefinition","src":"20579:233:30"},{"attributes":{"documentation":"@dev Submit a daily load limit update.\n @param _amount is the daily load limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitLoadLimitUpdate","scope":1611,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1553,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1529,"name":"ElementaryTypeName","src":"20958:7:30"}],"id":1530,"name":"VariableDeclaration","src":"20958:15:30"}],"id":1531,"name":"ParameterList","src":"20957:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1534,"name":"ParameterList","src":"21000:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1532,"name":"Identifier","src":"20984:15:30"}],"id":1533,"name":"ModifierInvocation","src":"20984:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1535,"name":"Identifier","src":"21010:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"uint256","value":"_amount"},"id":1536,"name":"Identifier","src":"21018:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1537,"name":"Identifier","src":"21029:17:30"}],"id":1538,"name":"BinaryOperation","src":"21018:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1539,"name":"Literal","src":"21048:26:30"}],"id":1540,"name":"FunctionCall","src":"21010:65:30"}],"id":1541,"name":"ExpressionStatement","src":"21010:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1115,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1542,"name":"Identifier","src":"21085:10:30"}],"id":1544,"name":"MemberAccess","src":"21085:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"uint256","value":"_amount"},"id":1545,"name":"Identifier","src":"21115:7:30"}],"id":1546,"name":"FunctionCall","src":"21085:38:30"}],"id":1547,"name":"ExpressionStatement","src":"21085:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1453,"type":"function (uint256)","value":"SubmittedLoadLimitUpdate"},"id":1548,"name":"Identifier","src":"21138:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"uint256","value":"_amount"},"id":1549,"name":"Identifier","src":"21163:7:30"}],"id":1550,"name":"FunctionCall","src":"21138:33:30"}],"id":1551,"name":"EmitStatement","src":"21133:38:30"}],"id":1552,"name":"Block","src":"21000:178:30"}],"id":1553,"name":"FunctionDefinition","src":"20927:251:30"},{"attributes":{"documentation":"@dev Confirm pending set load limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmLoadLimitUpdate","scope":1611,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1554,"name":"ElementaryTypeName","src":"21271:7:30"}],"id":1555,"name":"VariableDeclaration","src":"21271:15:30"}],"id":1556,"name":"ParameterList","src":"21270:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1559,"name":"ParameterList","src":"21312:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":1557,"name":"Identifier","src":"21297:14:30"}],"id":1558,"name":"ModifierInvocation","src":"21297:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":983,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1560,"name":"Identifier","src":"21322:10:30"}],"id":1562,"name":"MemberAccess","src":"21322:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1555,"type":"uint256","value":"_amount"},"id":1563,"name":"Identifier","src":"21353:7:30"}],"id":1564,"name":"FunctionCall","src":"21322:39:30"}],"id":1565,"name":"ExpressionStatement","src":"21322:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1449,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1566,"name":"Identifier","src":"21376:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1567,"name":"Identifier","src":"21389:3:30"}],"id":1568,"name":"MemberAccess","src":"21389:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1555,"type":"uint256","value":"_amount"},"id":1569,"name":"Identifier","src":"21401:7:30"}],"id":1570,"name":"FunctionCall","src":"21376:33:30"}],"id":1571,"name":"EmitStatement","src":"21371:38:30"}],"id":1572,"name":"Block","src":"21312:104:30"}],"id":1573,"name":"FunctionDefinition","src":"21239:177:30"},{"attributes":{"documentation":"@dev View your available load limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitAvailable","scope":1611,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1574,"name":"ParameterList","src":"21493:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1575,"name":"ElementaryTypeName","src":"21519:7:30"}],"id":1576,"name":"VariableDeclaration","src":"21519:7:30"}],"id":1577,"name":"ParameterList","src":"21518:9:30"},{"children":[{"attributes":{"functionReturnParameters":1577},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1037,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1578,"name":"Identifier","src":"21545:10:30"}],"id":1579,"name":"MemberAccess","src":"21545:29:30"}],"id":1580,"name":"FunctionCall","src":"21545:31:30"}],"id":1581,"name":"Return","src":"21538:38:30"}],"id":1582,"name":"Block","src":"21528:55:30"}],"id":1583,"name":"FunctionDefinition","src":"21466:117:30"},{"attributes":{"documentation":"@dev Is there an active load limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitPending","scope":1611,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1584,"name":"ParameterList","src":"21664:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1585,"name":"ElementaryTypeName","src":"21690:7:30"}],"id":1586,"name":"VariableDeclaration","src":"21690:7:30"}],"id":1587,"name":"ParameterList","src":"21689:9:30"},{"children":[{"attributes":{"functionReturnParameters":1587},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1588,"name":"Identifier","src":"21716:10:30"}],"id":1589,"name":"MemberAccess","src":"21716:18:30"}],"id":1590,"name":"Return","src":"21709:25:30"}],"id":1591,"name":"Block","src":"21699:42:30"}],"id":1592,"name":"FunctionDefinition","src":"21639:102:30"},{"attributes":{"documentation":"@dev Has the load limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitControllerConfirmationRequired","scope":1611,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1593,"name":"ParameterList","src":"21844:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1601,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1594,"name":"ElementaryTypeName","src":"21870:4:30"}],"id":1595,"name":"VariableDeclaration","src":"21870:4:30"}],"id":1596,"name":"ParameterList","src":"21869:6:30"},{"children":[{"attributes":{"functionReturnParameters":1596},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1597,"name":"Identifier","src":"21893:10:30"}],"id":1598,"name":"MemberAccess","src":"21893:41:30"}],"id":1599,"name":"Return","src":"21886:48:30"}],"id":1600,"name":"Block","src":"21876:65:30"}],"id":1601,"name":"FunctionDefinition","src":"21796:145:30"},{"attributes":{"documentation":"@dev View how much laod limit has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitValue","scope":1611,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1602,"name":"ParameterList","src":"22031:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1610,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1603,"name":"ElementaryTypeName","src":"22057:7:30"}],"id":1604,"name":"VariableDeclaration","src":"22057:7:30"}],"id":1605,"name":"ParameterList","src":"22056:9:30"},{"children":[{"attributes":{"functionReturnParameters":1605},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1606,"name":"Identifier","src":"22083:10:30"}],"id":1607,"name":"MemberAccess","src":"22083:16:30"}],"id":1608,"name":"Return","src":"22076:23:30"}],"id":1609,"name":"Block","src":"22066:40:30"}],"id":1610,"name":"FunctionDefinition","src":"22008:98:30"}],"id":1611,"name":"ContractDefinition","src":"19604:2504:30"},{"attributes":{"contractDependencies":[293,338,375,397,945,1279,1437,1611,3397,3834,3991,4208,4248],"contractKind":"contract","documentation":"@title Asset wallet with extra security features, gas top up management and card integration.","fullyImplemented":true,"linearizedBaseContracts":[2522,3834,4248,3397,1279,945,1611,4208,1437,397,375,3991,293,338],"name":"Wallet","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":1612,"name":"UserDefinedTypeName","src":"22228:13:30"}],"id":1613,"name":"InheritanceSpecifier","src":"22228:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"GasTopUpLimit","referencedDeclaration":1437,"type":"contract GasTopUpLimit"},"id":1614,"name":"UserDefinedTypeName","src":"22243:13:30"}],"id":1615,"name":"InheritanceSpecifier","src":"22243:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"LoadLimit","referencedDeclaration":1611,"type":"contract LoadLimit"},"id":1616,"name":"UserDefinedTypeName","src":"22258:9:30"}],"id":1617,"name":"InheritanceSpecifier","src":"22258:9:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddressWhitelist","referencedDeclaration":945,"type":"contract AddressWhitelist"},"id":1618,"name":"UserDefinedTypeName","src":"22269:16:30"}],"id":1619,"name":"InheritanceSpecifier","src":"22269:16:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SpendLimit","referencedDeclaration":1279,"type":"contract SpendLimit"},"id":1620,"name":"UserDefinedTypeName","src":"22287:10:30"}],"id":1621,"name":"InheritanceSpecifier","src":"22287:10:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ERC165","referencedDeclaration":3397,"type":"contract ERC165"},"id":1622,"name":"UserDefinedTypeName","src":"22299:6:30"}],"id":1623,"name":"InheritanceSpecifier","src":"22299:6:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4248,"type":"contract Transferrable"},"id":1624,"name":"UserDefinedTypeName","src":"22307:13:30"}],"id":1625,"name":"InheritanceSpecifier","src":"22307:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":3834,"type":"contract Balanceable"},"id":1626,"name":"UserDefinedTypeName","src":"22322:11:30"}],"id":1627,"name":"InheritanceSpecifier","src":"22322:11:30"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":3306,"type":"library Address"},"id":1628,"name":"UserDefinedTypeName","src":"22346:7:30"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1629,"name":"ElementaryTypeName","src":"22358:7:30"}],"id":1630,"name":"UsingForDirective","src":"22340:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"ECDSA","referencedDeclaration":3387,"type":"library ECDSA"},"id":1631,"name":"UserDefinedTypeName","src":"22377:5:30"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":1632,"name":"ElementaryTypeName","src":"22387:7:30"}],"id":1633,"name":"UsingForDirective","src":"22371:24:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3669,"type":"library SafeERC20"},"id":1634,"name":"UserDefinedTypeName","src":"22406:9:30"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":1635,"name":"UserDefinedTypeName","src":"22420:5:30"}],"id":1636,"name":"UsingForDirective","src":"22400:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":1637,"name":"UserDefinedTypeName","src":"22437:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":1638,"name":"ElementaryTypeName","src":"22450:7:30"}],"id":1639,"name":"UsingForDirective","src":"22431:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"BulkTransferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1646,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1640,"name":"ElementaryTypeName","src":"22486:7:30"}],"id":1641,"name":"VariableDeclaration","src":"22486:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_assets","scope":1646,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1642,"name":"ElementaryTypeName","src":"22499:7:30"}],"id":1643,"name":"ArrayTypeName","src":"22499:9:30"}],"id":1644,"name":"VariableDeclaration","src":"22499:17:30"}],"id":1645,"name":"ParameterList","src":"22485:32:30"}],"id":1646,"name":"EventDefinition","src":"22464:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedRelayedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1652,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1647,"name":"ElementaryTypeName","src":"22556:5:30"}],"id":1648,"name":"VariableDeclaration","src":"22556:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1652,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1649,"name":"ElementaryTypeName","src":"22569:5:30"}],"id":1650,"name":"VariableDeclaration","src":"22569:17:30"}],"id":1651,"name":"ParameterList","src":"22555:32:30"}],"id":1652,"name":"EventDefinition","src":"22523:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_destination","scope":1662,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1653,"name":"ElementaryTypeName","src":"22619:7:30"}],"id":1654,"name":"VariableDeclaration","src":"22619:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_value","scope":1662,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1655,"name":"ElementaryTypeName","src":"22641:7:30"}],"id":1656,"name":"VariableDeclaration","src":"22641:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1662,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1657,"name":"ElementaryTypeName","src":"22657:5:30"}],"id":1658,"name":"VariableDeclaration","src":"22657:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1662,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1659,"name":"ElementaryTypeName","src":"22670:5:30"}],"id":1660,"name":"VariableDeclaration","src":"22670:17:30"}],"id":1661,"name":"ParameterList","src":"22618:70:30"}],"id":1662,"name":"EventDefinition","src":"22593:96:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"IncreasedRelayNonce"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1668,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1663,"name":"ElementaryTypeName","src":"22720:7:30"}],"id":1664,"name":"VariableDeclaration","src":"22720:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_currentNonce","scope":1668,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1665,"name":"ElementaryTypeName","src":"22737:7:30"}],"id":1666,"name":"VariableDeclaration","src":"22737:21:30"}],"id":1667,"name":"ParameterList","src":"22719:40:30"}],"id":1668,"name":"EventDefinition","src":"22694:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"LoadedTokenCard"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1674,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1669,"name":"ElementaryTypeName","src":"22787:7:30"}],"id":1670,"name":"VariableDeclaration","src":"22787:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1671,"name":"ElementaryTypeName","src":"22803:7:30"}],"id":1672,"name":"VariableDeclaration","src":"22803:15:30"}],"id":1673,"name":"ParameterList","src":"22786:33:30"}],"id":1674,"name":"EventDefinition","src":"22765:55:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1680,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1675,"name":"ElementaryTypeName","src":"22840:7:30"}],"id":1676,"name":"VariableDeclaration","src":"22840:13:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1677,"name":"ElementaryTypeName","src":"22855:7:30"}],"id":1678,"name":"VariableDeclaration","src":"22855:15:30"}],"id":1679,"name":"ParameterList","src":"22839:32:30"}],"id":1680,"name":"EventDefinition","src":"22825:47:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ToppedUpGas"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1688,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1681,"name":"ElementaryTypeName","src":"22895:7:30"}],"id":1682,"name":"VariableDeclaration","src":"22895:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1688,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1683,"name":"ElementaryTypeName","src":"22912:7:30"}],"id":1684,"name":"VariableDeclaration","src":"22912:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1688,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1685,"name":"ElementaryTypeName","src":"22928:7:30"}],"id":1686,"name":"VariableDeclaration","src":"22928:15:30"}],"id":1687,"name":"ParameterList","src":"22894:50:30"}],"id":1688,"name":"EventDefinition","src":"22877:68:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1696,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1689,"name":"ElementaryTypeName","src":"22968:7:30"}],"id":1690,"name":"VariableDeclaration","src":"22968:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1696,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1691,"name":"ElementaryTypeName","src":"22981:7:30"}],"id":1692,"name":"VariableDeclaration","src":"22981:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1696,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1693,"name":"ElementaryTypeName","src":"22997:7:30"}],"id":1694,"name":"VariableDeclaration","src":"22997:15:30"}],"id":1695,"name":"ParameterList","src":"22967:46:30"}],"id":1696,"name":"EventDefinition","src":"22950:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1697,"name":"ParameterList","src":"23046:2:30"}],"id":1698,"name":"EventDefinition","src":"23019:30:30"},{"attributes":{"constant":true,"name":"WALLET_VERSION","scope":2522,"stateVariable":true,"storageLocation":"default","type":"string","visibility":"public"},"children":[{"attributes":{"name":"string","type":"string"},"id":1699,"name":"ElementaryTypeName","src":"23125:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"332e322e30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"3.2.0\"","value":"3.2.0"},"id":1700,"name":"Literal","src":"23165:7:30"}],"id":1701,"name":"VariableDeclaration","src":"23125:47:30"},{"attributes":{"constant":true,"name":"_EIP_1271","scope":2522,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1702,"name":"ElementaryTypeName","src":"23296:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230633133623062","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 549534475","value":"0x20c13b0b"},"id":1703,"name":"Literal","src":"23332:10:30"}],"id":1704,"name":"VariableDeclaration","src":"23296:46:30"},{"attributes":{"constant":true,"name":"_EIP_1654","scope":2522,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1705,"name":"ElementaryTypeName","src":"23467:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783136323662613765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 371636862","value":"0x1626ba7e"},"id":1706,"name":"Literal","src":"23503:10:30"}],"id":1707,"name":"VariableDeclaration","src":"23467:46:30"},{"attributes":{"constant":true,"name":"_ERC165_INTERFACE_ID","scope":2522,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1708,"name":"ElementaryTypeName","src":"23564:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":1709,"name":"Literal","src":"23611:10:30"}],"id":1710,"name":"VariableDeclaration","src":"23564:57:30"},{"attributes":{"constant":false,"name":"relayNonce","scope":2522,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1711,"name":"ElementaryTypeName","src":"23739:7:30"}],"id":1712,"name":"VariableDeclaration","src":"23739:25:30"},{"attributes":{"constant":false,"name":"_licenceNode","scope":2522,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1713,"name":"ElementaryTypeName","src":"23845:7:30"}],"id":1714,"name":"VariableDeclaration","src":"23845:28:30"},{"attributes":{"documentation":"@dev Constructor initializes the wallet top up limit and the vault contract.\n @param _owner_ is the owner account of the wallet contract.\n @param _transferable_ indicates whether the contract ownership can be transferred.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist.\n @param _controllerNode_ is the ENS name node of the Controller contract.\n @param _licenceNode_ is the ENS name node of the Licence contract.\n @param _spendLimit_ is the initial spend limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1715,"name":"ElementaryTypeName","src":"24495:15:30"}],"id":1716,"name":"VariableDeclaration","src":"24495:23:30"},{"attributes":{"constant":false,"name":"_transferable_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1717,"name":"ElementaryTypeName","src":"24528:4:30"}],"id":1718,"name":"VariableDeclaration","src":"24528:19:30"},{"attributes":{"constant":false,"name":"_ens_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1719,"name":"ElementaryTypeName","src":"24557:7:30"}],"id":1720,"name":"VariableDeclaration","src":"24557:13:30"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1721,"name":"ElementaryTypeName","src":"24580:7:30"}],"id":1722,"name":"VariableDeclaration","src":"24580:28:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1723,"name":"ElementaryTypeName","src":"24618:7:30"}],"id":1724,"name":"VariableDeclaration","src":"24618:24:30"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1725,"name":"ElementaryTypeName","src":"24652:7:30"}],"id":1726,"name":"VariableDeclaration","src":"24652:21:30"},{"attributes":{"constant":false,"name":"_spendLimit_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1727,"name":"ElementaryTypeName","src":"24683:7:30"}],"id":1728,"name":"VariableDeclaration","src":"24683:20:30"}],"id":1729,"name":"ParameterList","src":"24485:224:30"},{"attributes":{"parameters":[null]},"children":[],"id":1746,"name":"ParameterList","src":"24859:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":338,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1730,"name":"Identifier","src":"24717:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"address","value":"_ens_"},"id":1731,"name":"Identifier","src":"24731:5:30"}],"id":1732,"name":"ModifierInvocation","src":"24717:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1279,"type":"type(contract SpendLimit)","value":"SpendLimit"},"id":1733,"name":"Identifier","src":"24738:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1728,"type":"uint256","value":"_spendLimit_"},"id":1734,"name":"Identifier","src":"24749:12:30"}],"id":1735,"name":"ModifierInvocation","src":"24738:24:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"type(contract Ownable)","value":"Ownable"},"id":1736,"name":"Identifier","src":"24763:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1716,"type":"address payable","value":"_owner_"},"id":1737,"name":"Identifier","src":"24771:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1718,"type":"bool","value":"_transferable_"},"id":1738,"name":"Identifier","src":"24780:14:30"}],"id":1739,"name":"ModifierInvocation","src":"24763:32:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"type(contract Controllable)","value":"Controllable"},"id":1740,"name":"Identifier","src":"24796:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1724,"type":"bytes32","value":"_controllerNode_"},"id":1741,"name":"Identifier","src":"24809:16:30"}],"id":1742,"name":"ModifierInvocation","src":"24796:30:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1611,"type":"type(contract LoadLimit)","value":"LoadLimit"},"id":1743,"name":"Identifier","src":"24827:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1722,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1744,"name":"Identifier","src":"24837:20:30"}],"id":1745,"name":"ModifierInvocation","src":"24827:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1714,"type":"bytes32","value":"_licenceNode"},"id":1747,"name":"Identifier","src":"24869:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1726,"type":"bytes32","value":"_licenceNode_"},"id":1748,"name":"Identifier","src":"24884:13:30"}],"id":1749,"name":"Assignment","src":"24869:28:30"}],"id":1750,"name":"ExpressionStatement","src":"24869:28:30"}],"id":1751,"name":"Block","src":"24859:45:30"}],"id":1752,"name":"FunctionDefinition","src":"24474:430:30"},{"attributes":{"documentation":"@dev Checks if the value is not zero.","name":"isNotZero","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_value","scope":1765,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1753,"name":"ElementaryTypeName","src":"24975:7:30"}],"id":1754,"name":"VariableDeclaration","src":"24975:14:30"}],"id":1755,"name":"ParameterList","src":"24974:16:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d553a348030c1ee763b9cde2d3cc60fc831e78f559cd3758c25113c454c7f3","typeString":"literal_string \"value=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1756,"name":"Identifier","src":"25001:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1754,"type":"uint256","value":"_value"},"id":1757,"name":"Identifier","src":"25009:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1758,"name":"Literal","src":"25019:1:30"}],"id":1759,"name":"BinaryOperation","src":"25009:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"76616c75653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"value=0\"","value":"value=0"},"id":1760,"name":"Literal","src":"25022:9:30"}],"id":1761,"name":"FunctionCall","src":"25001:31:30"}],"id":1762,"name":"ExpressionStatement","src":"25001:31:30"},{"id":1763,"name":"PlaceholderStatement","src":"25042:1:30"}],"id":1764,"name":"Block","src":"24991:59:30"}],"id":1765,"name":"ModifierDefinition","src":"24956:94:30"},{"attributes":{"documentation":"@dev Ether can be deposited from any source, so this contract must be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":2522,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1766,"name":"ParameterList","src":"25161:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1767,"name":"ParameterList","src":"25181:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1680,"type":"function (address,uint256)","value":"Received"},"id":1768,"name":"Identifier","src":"25196:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1769,"name":"Identifier","src":"25205:3:30"}],"id":1770,"name":"MemberAccess","src":"25205:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1771,"name":"Identifier","src":"25217:3:30"}],"id":1772,"name":"MemberAccess","src":"25217:9:30"}],"id":1773,"name":"FunctionCall","src":"25196:31:30"}],"id":1774,"name":"EmitStatement","src":"25191:36:30"}],"id":1775,"name":"Block","src":"25181:53:30"}],"id":1776,"name":"FunctionDefinition","src":"25153:81:30"},{"attributes":{"documentation":"@dev This is a bulk transfer convenience function, used to migrate contracts.\n @notice If any of the transfers fail, this will revert.\n @param _to is the recipient's address, can't be the zero (0x0) address: transfer() will revert.\n @param _assets is an array of addresses of ERC20 tokens or 0x0 for ether.","implemented":true,"isConstructor":false,"kind":"function","name":"bulkTransfer","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1832,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1777,"name":"ElementaryTypeName","src":"25598:15:30"}],"id":1778,"name":"VariableDeclaration","src":"25598:19:30"},{"attributes":{"constant":false,"name":"_assets","scope":1832,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1779,"name":"ElementaryTypeName","src":"25619:7:30"}],"id":1780,"name":"ArrayTypeName","src":"25619:9:30"}],"id":1781,"name":"VariableDeclaration","src":"25619:26:30"}],"id":1782,"name":"ParameterList","src":"25597:49:30"},{"attributes":{"parameters":[null]},"children":[],"id":1785,"name":"ParameterList","src":"25672:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1783,"name":"Identifier","src":"25656:15:30"}],"id":1784,"name":"ModifierInvocation","src":"25656:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc6fe91796d2ae20b0ff36bc5dfbb8543f76fc0a4077e7ae85858f799173eb60","typeString":"literal_string \"asset array is empty\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1786,"name":"Identifier","src":"25737:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1787,"name":"Identifier","src":"25745:7:30"}],"id":1788,"name":"MemberAccess","src":"25745:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1789,"name":"Literal","src":"25763:1:30"}],"id":1790,"name":"BinaryOperation","src":"25745:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617373657420617272617920697320656d707479","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"asset array is empty\"","value":"asset array is empty"},"id":1791,"name":"Literal","src":"25766:22:30"}],"id":1792,"name":"FunctionCall","src":"25737:52:30"}],"id":1793,"name":"ExpressionStatement","src":"25737:52:30"},{"children":[{"attributes":{"assignments":[1795]},"children":[{"attributes":{"constant":false,"name":"i","scope":1825,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1794,"name":"ElementaryTypeName","src":"25866:7:30"}],"id":1795,"name":"VariableDeclaration","src":"25866:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1796,"name":"Literal","src":"25878:1:30"}],"id":1797,"name":"VariableDeclarationStatement","src":"25866:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"i"},"id":1798,"name":"Identifier","src":"25881:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1799,"name":"Identifier","src":"25885:7:30"}],"id":1800,"name":"MemberAccess","src":"25885:14:30"}],"id":1801,"name":"BinaryOperation","src":"25881:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"i"},"id":1802,"name":"Identifier","src":"25901:1:30"}],"id":1803,"name":"UnaryOperation","src":"25901:3:30"}],"id":1804,"name":"ExpressionStatement","src":"25901:3:30"},{"children":[{"attributes":{"assignments":[1806]},"children":[{"attributes":{"constant":false,"name":"amount","scope":1824,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1805,"name":"ElementaryTypeName","src":"25920:7:30"}],"id":1806,"name":"VariableDeclaration","src":"25920:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3833,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":1807,"name":"Identifier","src":"25937:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1808,"name":"ElementaryTypeNameExpression","src":"25946:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10401,"type":"contract Wallet","value":"this"},"id":1809,"name":"Identifier","src":"25954:4:30"}],"id":1810,"name":"FunctionCall","src":"25946:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1811,"name":"Identifier","src":"25961:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"i"},"id":1812,"name":"Identifier","src":"25969:1:30"}],"id":1813,"name":"IndexAccess","src":"25961:10:30"}],"id":1814,"name":"FunctionCall","src":"25937:35:30"}],"id":1815,"name":"VariableDeclarationStatement","src":"25920:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2521,"type":"function (address payable,address,uint256)","value":"transfer"},"id":1816,"name":"Identifier","src":"26046:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1778,"type":"address payable","value":"_to"},"id":1817,"name":"Identifier","src":"26055:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1818,"name":"Identifier","src":"26060:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"i"},"id":1819,"name":"Identifier","src":"26068:1:30"}],"id":1820,"name":"IndexAccess","src":"26060:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1806,"type":"uint256","value":"amount"},"id":1821,"name":"Identifier","src":"26072:6:30"}],"id":1822,"name":"FunctionCall","src":"26046:33:30"}],"id":1823,"name":"ExpressionStatement","src":"26046:33:30"}],"id":1824,"name":"Block","src":"25906:184:30"}],"id":1825,"name":"ForStatement","src":"25861:229:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":1646,"type":"function (address,address[] memory)","value":"BulkTransferred"},"id":1826,"name":"Identifier","src":"26105:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1778,"type":"address payable","value":"_to"},"id":1827,"name":"Identifier","src":"26121:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1828,"name":"Identifier","src":"26126:7:30"}],"id":1829,"name":"FunctionCall","src":"26105:29:30"}],"id":1830,"name":"EmitStatement","src":"26100:34:30"}],"id":1831,"name":"Block","src":"25672:469:30"}],"id":1832,"name":"FunctionDefinition","src":"25576:565:30"},{"attributes":{"documentation":"@dev This function allows for the controller to relay transactions on the owner's behalf,\n the relayed message has to be signed by the owner.\n @param _nonce only used for relayed transactions, must match the wallet's relayNonce.\n @param _data abi encoded data payload.\n @param _signature signed prefix + data.","implemented":true,"isConstructor":false,"kind":"function","name":"executeRelayedTransaction","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_nonce","scope":1908,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1833,"name":"ElementaryTypeName","src":"26528:7:30"}],"id":1834,"name":"VariableDeclaration","src":"26528:14:30"},{"attributes":{"constant":false,"name":"_data","scope":1908,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1835,"name":"ElementaryTypeName","src":"26544:5:30"}],"id":1836,"name":"VariableDeclaration","src":"26544:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1908,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1837,"name":"ElementaryTypeName","src":"26566:5:30"}],"id":1838,"name":"VariableDeclaration","src":"26566:25:30"}],"id":1839,"name":"ParameterList","src":"26527:65:30"},{"attributes":{"parameters":[null]},"children":[],"id":1842,"name":"ParameterList","src":"26617:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":1840,"name":"Identifier","src":"26602:14:30"}],"id":1841,"name":"ModifierInvocation","src":"26602:14:30"},{"children":[{"attributes":{"assignments":[1844],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"id","scope":1907,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1843,"name":"ElementaryTypeName","src":"26797:7:30"}],"id":1844,"name":"VariableDeclaration","src":"26797:10:30"}],"id":1845,"name":"VariableDeclarationStatement","src":"26797:10:30"},{"attributes":{"externalReferences":[{"id":{"declaration":1844,"isOffset":false,"isSlot":false,"src":"26840:2:30","valueSize":1}}],"operations":"{ id := chainid() }"},"children":[],"id":1846,"name":"InlineAssembly","src":"26817:99:30"},{"attributes":{"assignments":[1848]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1907,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1847,"name":"ElementaryTypeName","src":"26925:7:30"}],"id":1848,"name":"VariableDeclaration","src":"26925:16:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toEthSignedMessageHash","referencedDeclaration":3386,"type":"function (bytes32) pure returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1849,"name":"Identifier","src":"26944:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_64973292d287a9bdfbf2540b56114a2ccf5255f1a0f38436d52dc69f44e83d8d","typeString":"literal_string \"monolith:\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":1850,"name":"Identifier","src":"26954:3:30"}],"id":1851,"name":"MemberAccess","src":"26954:16:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e6f6c6974683a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"monolith:\"","value":"monolith:"},"id":1852,"name":"Literal","src":"26971:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1844,"type":"uint256","value":"id"},"id":1853,"name":"Identifier","src":"26984:2:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1854,"name":"ElementaryTypeNameExpression","src":"26988:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10401,"type":"contract Wallet","value":"this"},"id":1855,"name":"Identifier","src":"26996:4:30"}],"id":1856,"name":"FunctionCall","src":"26988:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"uint256","value":"_nonce"},"id":1857,"name":"Identifier","src":"27003:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1836,"type":"bytes calldata","value":"_data"},"id":1858,"name":"Identifier","src":"27011:5:30"}],"id":1859,"name":"FunctionCall","src":"26954:63:30"}],"id":1860,"name":"FunctionCall","src":"26944:74:30"}],"id":1861,"name":"MemberAccess","src":"26944:97:30"}],"id":1862,"name":"FunctionCall","src":"26944:99:30"}],"id":1863,"name":"VariableDeclarationStatement","src":"26925:118:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1864,"name":"Identifier","src":"27111:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2455,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1865,"name":"Identifier","src":"27119:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1848,"type":"bytes32","value":"dataHash"},"id":1866,"name":"Identifier","src":"27136:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1838,"type":"bytes calldata","value":"_signature"},"id":1867,"name":"Identifier","src":"27146:10:30"}],"id":1868,"name":"FunctionCall","src":"27119:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"bytes4","value":"_EIP_1654"},"id":1869,"name":"Identifier","src":"27161:9:30"}],"id":1870,"name":"BinaryOperation","src":"27119:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1871,"name":"Literal","src":"27172:15:30"}],"id":1872,"name":"FunctionCall","src":"27111:77:30"}],"id":1873,"name":"ExpressionStatement","src":"27111:77:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_34adcd0a74b814374d2f97634e18f1e1bbbc6244d3bcc4bf9469772fc5d9d0ea","typeString":"literal_string \"tx replay\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1874,"name":"Identifier","src":"27283:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"uint256","value":"_nonce"},"id":1875,"name":"Identifier","src":"27291:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1712,"type":"uint256","value":"relayNonce"},"id":1876,"name":"Identifier","src":"27301:10:30"}],"id":1877,"name":"BinaryOperation","src":"27291:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"7478207265706c6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"tx replay\"","value":"tx replay"},"id":1878,"name":"Literal","src":"27313:11:30"}],"id":1879,"name":"FunctionCall","src":"27283:42:30"}],"id":1880,"name":"ExpressionStatement","src":"27283:42:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1930,"type":"function ()","value":"_increaseRelayNonce"},"id":1881,"name":"Identifier","src":"27335:19:30"}],"id":1882,"name":"FunctionCall","src":"27335:21:30"}],"id":1883,"name":"ExpressionStatement","src":"27335:21:30"},{"attributes":{"assignments":[1885,1887]},"children":[{"attributes":{"constant":false,"name":"success","scope":1907,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1884,"name":"ElementaryTypeName","src":"27424:4:30"}],"id":1885,"name":"VariableDeclaration","src":"27424:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":1907,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1886,"name":"ElementaryTypeName","src":"27438:5:30"}],"id":1887,"name":"VariableDeclaration","src":"27438:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1888,"name":"ElementaryTypeNameExpression","src":"27465:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10401,"type":"contract Wallet","value":"this"},"id":1889,"name":"Identifier","src":"27473:4:30"}],"id":1890,"name":"FunctionCall","src":"27465:13:30"}],"id":1891,"name":"MemberAccess","src":"27465:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1836,"type":"bytes calldata","value":"_data"},"id":1892,"name":"Identifier","src":"27484:5:30"}],"id":1893,"name":"FunctionCall","src":"27465:25:30"}],"id":1894,"name":"VariableDeclarationStatement","src":"27423:67:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1895,"name":"Identifier","src":"27500:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1885,"type":"bool","value":"success"},"id":1896,"name":"Identifier","src":"27508:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":1897,"name":"ElementaryTypeNameExpression","src":"27517:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"bytes memory","value":"returndata"},"id":1898,"name":"Identifier","src":"27524:10:30"}],"id":1899,"name":"FunctionCall","src":"27517:18:30"}],"id":1900,"name":"FunctionCall","src":"27500:36:30"}],"id":1901,"name":"ExpressionStatement","src":"27500:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1652,"type":"function (bytes memory,bytes memory)","value":"ExecutedRelayedTransaction"},"id":1902,"name":"Identifier","src":"27552:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1836,"type":"bytes calldata","value":"_data"},"id":1903,"name":"Identifier","src":"27579:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"bytes memory","value":"returndata"},"id":1904,"name":"Identifier","src":"27586:10:30"}],"id":1905,"name":"FunctionCall","src":"27552:45:30"}],"id":1906,"name":"EmitStatement","src":"27547:50:30"}],"id":1907,"name":"Block","src":"26617:987:30"}],"id":1908,"name":"FunctionDefinition","src":"26493:1111:30"},{"attributes":{"documentation":"@dev This allows the user to cancel a transaction that was unexpectedly delayed by the relayer","implemented":true,"isConstructor":false,"kind":"function","name":"increaseRelayNonce","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1909,"name":"ParameterList","src":"27740:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1912,"name":"ParameterList","src":"27762:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":1910,"name":"Identifier","src":"27752:9:30"}],"id":1911,"name":"ModifierInvocation","src":"27752:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1930,"type":"function ()","value":"_increaseRelayNonce"},"id":1913,"name":"Identifier","src":"27772:19:30"}],"id":1914,"name":"FunctionCall","src":"27772:21:30"}],"id":1915,"name":"ExpressionStatement","src":"27772:21:30"}],"id":1916,"name":"Block","src":"27762:38:30"}],"id":1917,"name":"FunctionDefinition","src":"27713:87:30"},{"attributes":{"documentation":"@dev This bumps the relayNonce and emits an event accordingly","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_increaseRelayNonce","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1918,"name":"ParameterList","src":"27904:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1919,"name":"ParameterList","src":"27916:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1712,"type":"uint256","value":"relayNonce"},"id":1920,"name":"Identifier","src":"27926:10:30"}],"id":1921,"name":"UnaryOperation","src":"27926:12:30"}],"id":1922,"name":"ExpressionStatement","src":"27926:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1668,"type":"function (address,uint256)","value":"IncreasedRelayNonce"},"id":1923,"name":"Identifier","src":"27954:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1924,"name":"Identifier","src":"27974:3:30"}],"id":1925,"name":"MemberAccess","src":"27974:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1712,"type":"uint256","value":"relayNonce"},"id":1926,"name":"Identifier","src":"27986:10:30"}],"id":1927,"name":"FunctionCall","src":"27954:43:30"}],"id":1928,"name":"EmitStatement","src":"27949:48:30"}],"id":1929,"name":"Block","src":"27916:88:30"}],"id":1930,"name":"FunctionDefinition","src":"27876:128:30"},{"attributes":{"documentation":"@dev Implements EIP-1271: receives the raw data (bytes)\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":1961,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1931,"name":"ElementaryTypeName","src":"28325:5:30"}],"id":1932,"name":"VariableDeclaration","src":"28325:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1961,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1933,"name":"ElementaryTypeName","src":"28347:5:30"}],"id":1934,"name":"VariableDeclaration","src":"28347:25:30"}],"id":1935,"name":"ParameterList","src":"28324:49:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1961,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1936,"name":"ElementaryTypeName","src":"28397:6:30"}],"id":1937,"name":"VariableDeclaration","src":"28397:6:30"}],"id":1938,"name":"ParameterList","src":"28396:8:30"},{"children":[{"attributes":{"assignments":[1940]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1960,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1939,"name":"ElementaryTypeName","src":"28415:7:30"}],"id":1940,"name":"VariableDeclaration","src":"28415:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1941,"name":"Identifier","src":"28434:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":1942,"name":"Identifier","src":"28444:3:30"}],"id":1943,"name":"MemberAccess","src":"28444:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1932,"type":"bytes calldata","value":"_data"},"id":1944,"name":"Identifier","src":"28461:5:30"}],"id":1945,"name":"FunctionCall","src":"28444:23:30"}],"id":1946,"name":"FunctionCall","src":"28434:34:30"}],"id":1947,"name":"VariableDeclarationStatement","src":"28415:53:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1948,"name":"Identifier","src":"28533:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2455,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1949,"name":"Identifier","src":"28541:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1940,"type":"bytes32","value":"dataHash"},"id":1950,"name":"Identifier","src":"28558:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1934,"type":"bytes calldata","value":"_signature"},"id":1951,"name":"Identifier","src":"28568:10:30"}],"id":1952,"name":"FunctionCall","src":"28541:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"bytes4","value":"_EIP_1654"},"id":1953,"name":"Identifier","src":"28583:9:30"}],"id":1954,"name":"BinaryOperation","src":"28541:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1955,"name":"Literal","src":"28594:15:30"}],"id":1956,"name":"FunctionCall","src":"28533:77:30"}],"id":1957,"name":"ExpressionStatement","src":"28533:77:30"},{"attributes":{"functionReturnParameters":1938},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1704,"type":"bytes4","value":"_EIP_1271"},"id":1958,"name":"Identifier","src":"28627:9:30"}],"id":1959,"name":"Return","src":"28620:16:30"}],"id":1960,"name":"Block","src":"28405:238:30"}],"id":1961,"name":"FunctionDefinition","src":"28299:344:30"},{"attributes":{"documentation":"@return licence contract node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceNode","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1962,"name":"ParameterList","src":"28726:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1969,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1963,"name":"ElementaryTypeName","src":"28752:7:30"}],"id":1964,"name":"VariableDeclaration","src":"28752:7:30"}],"id":1965,"name":"ParameterList","src":"28751:9:30"},{"children":[{"attributes":{"functionReturnParameters":1965},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1714,"type":"bytes32","value":"_licenceNode"},"id":1966,"name":"Identifier","src":"28778:12:30"}],"id":1967,"name":"Return","src":"28771:19:30"}],"id":1968,"name":"Block","src":"28761:36:30"}],"id":1969,"name":"FunctionDefinition","src":"28706:91:30"},{"attributes":{"documentation":"@dev Load a token card with the specified asset amount.\n @dev the amount send should be inclusive of the percent licence.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"loadTokenCard","scope":2522,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":2045,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1970,"name":"ElementaryTypeName","src":"29116:7:30"}],"id":1971,"name":"VariableDeclaration","src":"29116:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2045,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1972,"name":"ElementaryTypeName","src":"29132:7:30"}],"id":1973,"name":"VariableDeclaration","src":"29132:15:30"}],"id":1974,"name":"ParameterList","src":"29115:33:30"},{"attributes":{"parameters":[null]},"children":[],"id":1977,"name":"ParameterList","src":"29182:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1975,"name":"Identifier","src":"29166:15:30"}],"id":1976,"name":"ModifierInvocation","src":"29166:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96e30e7359d705e51778d9ae05179a78cb34ab813d824e29a3cd9fe209b16a67","typeString":"literal_string \"token not loadable\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1978,"name":"Identifier","src":"29261:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4193,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":1979,"name":"Identifier","src":"29269:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":1980,"name":"Identifier","src":"29286:6:30"}],"id":1981,"name":"FunctionCall","src":"29269:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f74206c6f616461626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not loadable\"","value":"token not loadable"},"id":1982,"name":"Literal","src":"29295:20:30"}],"id":1983,"name":"FunctionCall","src":"29261:55:30"}],"id":1984,"name":"ExpressionStatement","src":"29261:55:30"},{"attributes":{"assignments":[1986]},"children":[{"attributes":{"constant":false,"name":"stablecoinValue","scope":2044,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1985,"name":"ElementaryTypeName","src":"29379:7:30"}],"id":1986,"name":"VariableDeclaration","src":"29379:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2301,"type":"function (address,uint256) view returns (uint256)","value":"convertToStablecoin"},"id":1987,"name":"Identifier","src":"29405:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":1988,"name":"Identifier","src":"29425:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":1989,"name":"Identifier","src":"29433:7:30"}],"id":1990,"name":"FunctionCall","src":"29405:36:30"}],"id":1991,"name":"VariableDeclarationStatement","src":"29379:62:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1992,"name":"Identifier","src":"29571:10:30"}],"id":1994,"name":"MemberAccess","src":"29571:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1986,"type":"uint256","value":"stablecoinValue"},"id":1995,"name":"Identifier","src":"29596:15:30"}],"id":1996,"name":"FunctionCall","src":"29571:41:30"}],"id":1997,"name":"ExpressionStatement","src":"29571:41:30"},{"attributes":{"assignments":[1999]},"children":[{"attributes":{"constant":false,"name":"licenceAddress","scope":2044,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1998,"name":"ElementaryTypeName","src":"29669:7:30"}],"id":1999,"name":"VariableDeclaration","src":"29669:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2000,"name":"Identifier","src":"29694:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1714,"type":"bytes32","value":"_licenceNode"},"id":2001,"name":"Identifier","src":"29706:12:30"}],"id":2002,"name":"FunctionCall","src":"29694:25:30"}],"id":2003,"name":"VariableDeclarationStatement","src":"29669:50:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2004,"name":"Identifier","src":"29733:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2005,"name":"ElementaryTypeNameExpression","src":"29743:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2006,"name":"Literal","src":"29751:1:30"}],"id":2007,"name":"FunctionCall","src":"29743:10:30"}],"id":2008,"name":"BinaryOperation","src":"29733:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeApprove","referencedDeclaration":3549,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":2009,"name":"Identifier","src":"29769:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2010,"name":"Identifier","src":"29775:6:30"}],"id":2011,"name":"FunctionCall","src":"29769:13:30"}],"id":2012,"name":"MemberAccess","src":"29769:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1999,"type":"address","value":"licenceAddress"},"id":2013,"name":"Identifier","src":"29795:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2014,"name":"Identifier","src":"29811:7:30"}],"id":2015,"name":"FunctionCall","src":"29769:50:30"}],"id":2016,"name":"ExpressionStatement","src":"29769:50:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":4262,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4268,"type":"type(contract ILicence)","value":"ILicence"},"id":2017,"name":"Identifier","src":"29833:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1999,"type":"address","value":"licenceAddress"},"id":2018,"name":"Identifier","src":"29842:14:30"}],"id":2019,"name":"FunctionCall","src":"29833:24:30"}],"id":2020,"name":"MemberAccess","src":"29833:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2021,"name":"Identifier","src":"29863:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2022,"name":"Identifier","src":"29871:7:30"}],"id":2023,"name":"FunctionCall","src":"29833:46:30"}],"id":2024,"name":"ExpressionStatement","src":"29833:46:30"}],"id":2025,"name":"Block","src":"29755:135:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (address,uint256) payable external","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (address,uint256) payable external)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":4262,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4268,"type":"type(contract ILicence)","value":"ILicence"},"id":2026,"name":"Identifier","src":"29910:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1999,"type":"address","value":"licenceAddress"},"id":2027,"name":"Identifier","src":"29919:14:30"}],"id":2028,"name":"FunctionCall","src":"29910:24:30"}],"id":2029,"name":"MemberAccess","src":"29910:29:30"}],"id":2030,"name":"MemberAccess","src":"29910:35:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2031,"name":"Identifier","src":"29946:7:30"}],"id":2032,"name":"FunctionCall","src":"29910:44:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2033,"name":"Identifier","src":"29955:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2034,"name":"Identifier","src":"29963:7:30"}],"id":2035,"name":"FunctionCall","src":"29910:61:30"}],"id":2036,"name":"ExpressionStatement","src":"29910:61:30"}],"id":2037,"name":"Block","src":"29896:86:30"}],"id":2038,"name":"IfStatement","src":"29729:253:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1674,"type":"function (address,uint256)","value":"LoadedTokenCard"},"id":2039,"name":"Identifier","src":"29997:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2040,"name":"Identifier","src":"30013:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2041,"name":"Identifier","src":"30021:7:30"}],"id":2042,"name":"FunctionCall","src":"29997:32:30"}],"id":2043,"name":"EmitStatement","src":"29992:37:30"}],"id":2044,"name":"Block","src":"29182:854:30"}],"id":2045,"name":"FunctionDefinition","src":"29093:943:30"},{"attributes":{"documentation":"@dev Checks for interface support based on ERC165.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2522,"stateMutability":"view","superFunction":3396,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_interfaceID","scope":2057,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2046,"name":"ElementaryTypeName","src":"30128:6:30"}],"id":2047,"name":"VariableDeclaration","src":"30128:19:30"}],"id":2048,"name":"ParameterList","src":"30127:21:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2057,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2049,"name":"ElementaryTypeName","src":"30172:4:30"}],"id":2050,"name":"VariableDeclaration","src":"30172:4:30"}],"id":2051,"name":"ParameterList","src":"30171:6:30"},{"children":[{"attributes":{"functionReturnParameters":2051},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2047,"type":"bytes4","value":"_interfaceID"},"id":2052,"name":"Identifier","src":"30195:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1710,"type":"bytes4","value":"_ERC165_INTERFACE_ID"},"id":2053,"name":"Identifier","src":"30211:20:30"}],"id":2054,"name":"BinaryOperation","src":"30195:36:30"}],"id":2055,"name":"Return","src":"30188:43:30"}],"id":2056,"name":"Block","src":"30178:60:30"}],"id":2057,"name":"FunctionDefinition","src":"30101:137:30"},{"attributes":{"documentation":"@dev Refill owner's gas balance, revert if the transaction amount is too large\n @param _amount is the amount of ether to transfer to the owner account in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"topUpGas","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":2088,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2058,"name":"ElementaryTypeName","src":"30436:7:30"}],"id":2059,"name":"VariableDeclaration","src":"30436:15:30"}],"id":2060,"name":"ParameterList","src":"30435:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":2066,"name":"ParameterList","src":"30503:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"modifier (uint256)","value":"isNotZero"},"id":2061,"name":"Identifier","src":"30462:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"uint256","value":"_amount"},"id":2062,"name":"Identifier","src":"30472:7:30"}],"id":2063,"name":"ModifierInvocation","src":"30462:18:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":374,"type":"modifier ()","value":"onlyOwnerOrController"},"id":2064,"name":"Identifier","src":"30481:21:30"}],"id":2065,"name":"ModifierInvocation","src":"30481:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":2067,"name":"Identifier","src":"30633:14:30"}],"id":2069,"name":"MemberAccess","src":"30633:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"uint256","value":"_amount"},"id":2070,"name":"Identifier","src":"30662:7:30"}],"id":2071,"name":"FunctionCall","src":"30633:37:30"}],"id":2072,"name":"ExpressionStatement","src":"30633:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3978,"type":"function () view returns (address payable)","value":"owner"},"id":2073,"name":"Identifier","src":"30717:5:30"}],"id":2074,"name":"FunctionCall","src":"30717:7:30"}],"id":2075,"name":"MemberAccess","src":"30717:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"uint256","value":"_amount"},"id":2076,"name":"Identifier","src":"30734:7:30"}],"id":2077,"name":"FunctionCall","src":"30717:25:30"}],"id":2078,"name":"ExpressionStatement","src":"30717:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1688,"type":"function (address,address,uint256)","value":"ToppedUpGas"},"id":2079,"name":"Identifier","src":"30795:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2080,"name":"Identifier","src":"30807:3:30"}],"id":2081,"name":"MemberAccess","src":"30807:10:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3978,"type":"function () view returns (address payable)","value":"owner"},"id":2082,"name":"Identifier","src":"30819:5:30"}],"id":2083,"name":"FunctionCall","src":"30819:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"uint256","value":"_amount"},"id":2084,"name":"Identifier","src":"30828:7:30"}],"id":2085,"name":"FunctionCall","src":"30795:41:30"}],"id":2086,"name":"EmitStatement","src":"30790:46:30"}],"id":2087,"name":"Block","src":"30503:340:30"}],"id":2088,"name":"FunctionDefinition","src":"30418:425:30"},{"attributes":{"documentation":"@dev This function allows for the wallet to send a batch of transactions instead of one,\n it calls executeTransaction() so that the daily limit is enforced.\n @param _transactionBatch data encoding the transactions to be sent,\n following executeTransaction's format i.e. (destination, value, data)","implemented":true,"isConstructor":false,"kind":"function","name":"batchExecuteTransaction","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_transactionBatch","scope":2171,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2089,"name":"ElementaryTypeName","src":"31208:5:30"}],"id":2090,"name":"VariableDeclaration","src":"31208:30:30"}],"id":2091,"name":"ParameterList","src":"31207:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":2094,"name":"ParameterList","src":"31263:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2092,"name":"Identifier","src":"31247:15:30"}],"id":2093,"name":"ModifierInvocation","src":"31247:15:30"},{"children":[{"attributes":{"assignments":[2096]},"children":[{"attributes":{"constant":false,"name":"batchLength","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2095,"name":"ElementaryTypeName","src":"31273:7:30"}],"id":2096,"name":"VariableDeclaration","src":"31273:19:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"bytes memory","value":"_transactionBatch"},"id":2097,"name":"Identifier","src":"31295:17:30"}],"id":2098,"name":"MemberAccess","src":"31295:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2099,"name":"Literal","src":"31322:2:30"}],"id":2100,"name":"BinaryOperation","src":"31295:29:30"}],"id":2101,"name":"VariableDeclarationStatement","src":"31273:51:30"},{"attributes":{"assignments":[2103]},"children":[{"attributes":{"constant":false,"name":"remainingBytesLength","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2102,"name":"ElementaryTypeName","src":"31368:7:30"}],"id":2103,"name":"VariableDeclaration","src":"31368:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"bytes memory","value":"_transactionBatch"},"id":2104,"name":"Identifier","src":"31399:17:30"}],"id":2105,"name":"MemberAccess","src":"31399:24:30"}],"id":2106,"name":"VariableDeclarationStatement","src":"31368:55:30"},{"attributes":{"assignments":[2108]},"children":[{"attributes":{"constant":false,"name":"pos","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2107,"name":"ElementaryTypeName","src":"31468:7:30"}],"id":2108,"name":"VariableDeclaration","src":"31468:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2109,"name":"Literal","src":"31482:2:30"}],"id":2110,"name":"VariableDeclarationStatement","src":"31468:16:30"},{"attributes":{"assignments":[2112],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"destination","scope":2170,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2111,"name":"ElementaryTypeName","src":"31569:7:30"}],"id":2112,"name":"VariableDeclaration","src":"31569:19:30"}],"id":2113,"name":"VariableDeclarationStatement","src":"31569:19:30"},{"attributes":{"assignments":[2115],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2114,"name":"ElementaryTypeName","src":"31621:7:30"}],"id":2115,"name":"VariableDeclaration","src":"31621:13:30"}],"id":2116,"name":"VariableDeclarationStatement","src":"31621:13:30"},{"attributes":{"assignments":[2118],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dataLength","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2117,"name":"ElementaryTypeName","src":"31665:7:30"}],"id":2118,"name":"VariableDeclaration","src":"31665:18:30"}],"id":2119,"name":"VariableDeclarationStatement","src":"31665:18:30"},{"attributes":{"assignments":[2121],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"data","scope":2170,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2120,"name":"ElementaryTypeName","src":"31723:5:30"}],"id":2121,"name":"VariableDeclaration","src":"31723:17:30"}],"id":2122,"name":"VariableDeclarationStatement","src":"31723:17:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"pos"},"id":2123,"name":"Identifier","src":"31771:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"batchLength"},"id":2124,"name":"Identifier","src":"31777:11:30"}],"id":2125,"name":"BinaryOperation","src":"31771:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2103,"type":"uint256","value":"remainingBytesLength"},"id":2126,"name":"Identifier","src":"31914:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2103,"type":"uint256","value":"remainingBytesLength"},"id":2127,"name":"Identifier","src":"31937:20:30"}],"id":2128,"name":"MemberAccess","src":"31937:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":2129,"name":"Literal","src":"31962:2:30"}],"id":2130,"name":"FunctionCall","src":"31937:28:30"}],"id":2131,"name":"Assignment","src":"31914:51:30"}],"id":2132,"name":"ExpressionStatement","src":"31914:51:30"},{"attributes":{"externalReferences":[{"destination":{"declaration":2112,"isOffset":false,"isSlot":false,"src":"32122:11:30","valueSize":1}},{"_transactionBatch":{"declaration":2090,"isOffset":false,"isSlot":false,"src":"32155:17:30","valueSize":1}},{"pos":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32174:3:30","valueSize":1}},{"dataLength":{"declaration":2118,"isOffset":false,"isSlot":false,"src":"32481:10:30","valueSize":1}},{"value":{"declaration":2115,"isOffset":false,"isSlot":false,"src":"32265:5:30","valueSize":1}},{"pos":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32307:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2090,"isOffset":false,"isSlot":false,"src":"32284:17:30","valueSize":1}},{"data":{"declaration":2121,"isOffset":false,"isSlot":false,"src":"32555:4:30","valueSize":1}},{"pos":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32528:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2090,"isOffset":false,"isSlot":false,"src":"32505:17:30","valueSize":1}},{"pos":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32590:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2090,"isOffset":false,"isSlot":false,"src":"32567:17:30","valueSize":1}}],"operations":"{\n destination := shr(96, mload(add(_transactionBatch, pos)))\n value := mload(add(_transactionBatch, add(pos, 20)))\n dataLength := mload(add(_transactionBatch, add(pos, 52)))\n data := add(_transactionBatch, add(pos, 52))\n}"},"children":[],"id":2133,"name":"InlineAssembly","src":"31979:634:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"pos"},"id":2134,"name":"Identifier","src":"32703:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"pos"},"id":2135,"name":"Identifier","src":"32709:3:30"}],"id":2136,"name":"MemberAccess","src":"32709:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"uint256","value":"dataLength"},"id":2137,"name":"Identifier","src":"32717:10:30"}],"id":2138,"name":"FunctionCall","src":"32709:19:30"}],"id":2139,"name":"MemberAccess","src":"32709:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":2140,"name":"Literal","src":"32733:2:30"}],"id":2141,"name":"FunctionCall","src":"32709:27:30"}],"id":2142,"name":"Assignment","src":"32703:33:30"}],"id":2143,"name":"ExpressionStatement","src":"32703:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d4d7e869602fd07d121f8992a03b812eac20f2f3831f876bce9993aae915a2b","typeString":"literal_string \"out of bounds\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2144,"name":"Identifier","src":"32841:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"pos"},"id":2145,"name":"Identifier","src":"32849:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"batchLength"},"id":2146,"name":"Identifier","src":"32856:11:30"}],"id":2147,"name":"BinaryOperation","src":"32849:18:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f6620626f756e6473","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of bounds\"","value":"out of bounds"},"id":2148,"name":"Literal","src":"32869:15:30"}],"id":2149,"name":"FunctionCall","src":"32841:44:30"}],"id":2150,"name":"ExpressionStatement","src":"32841:44:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"uint256","value":"dataLength"},"id":2151,"name":"Identifier","src":"32956:10:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2152,"name":"Literal","src":"32970:1:30"}],"id":2153,"name":"BinaryOperation","src":"32956:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2121,"type":"bytes memory","value":"data"},"id":2154,"name":"Identifier","src":"32991:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2155,"name":"ElementaryTypeNameExpression","src":"32998:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":2156,"name":"Literal","src":"33004:2:30"}],"id":2157,"name":"FunctionCall","src":"32998:9:30"}],"id":2158,"name":"Assignment","src":"32991:16:30"}],"id":2159,"name":"ExpressionStatement","src":"32991:16:30"}],"id":2160,"name":"Block","src":"32973:49:30"}],"id":2161,"name":"IfStatement","src":"32952:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2429,"type":"function (address,uint256,bytes memory) returns (bytes memory)","value":"executeTransaction"},"id":2162,"name":"Identifier","src":"33130:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2112,"type":"address","value":"destination"},"id":2163,"name":"Identifier","src":"33149:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2115,"type":"uint256","value":"value"},"id":2164,"name":"Identifier","src":"33162:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2121,"type":"bytes memory","value":"data"},"id":2165,"name":"Identifier","src":"33169:4:30"}],"id":2166,"name":"FunctionCall","src":"33130:44:30"}],"id":2167,"name":"ExpressionStatement","src":"33130:44:30"}],"id":2168,"name":"Block","src":"31790:1395:30"}],"id":2169,"name":"WhileStatement","src":"31764:1421:30"}],"id":2170,"name":"Block","src":"31263:1928:30"}],"id":2171,"name":"FunctionDefinition","src":"31175:2016:30"},{"attributes":{"documentation":"@dev Convert ERC20 token amount to the corresponding ether amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToEther","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2211,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2172,"name":"ElementaryTypeName","src":"33402:7:30"}],"id":2173,"name":"VariableDeclaration","src":"33402:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2174,"name":"ElementaryTypeName","src":"33418:7:30"}],"id":2175,"name":"VariableDeclaration","src":"33418:15:30"}],"id":2176,"name":"ParameterList","src":"33401:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2177,"name":"ElementaryTypeName","src":"33456:7:30"}],"id":2178,"name":"VariableDeclaration","src":"33456:7:30"}],"id":2179,"name":"ParameterList","src":"33455:9:30"},{"children":[{"attributes":{"assignments":[null,2181,2183,2185,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":2210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2180,"name":"ElementaryTypeName","src":"33545:7:30"}],"id":2181,"name":"VariableDeclaration","src":"33545:17:30"},{"attributes":{"constant":false,"name":"rate","scope":2210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2182,"name":"ElementaryTypeName","src":"33564:7:30"}],"id":2183,"name":"VariableDeclaration","src":"33564:12:30"},{"attributes":{"constant":false,"name":"available","scope":2210,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2184,"name":"ElementaryTypeName","src":"33578:4:30"}],"id":2185,"name":"VariableDeclaration","src":"33578:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":2186,"name":"Identifier","src":"33602:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2173,"type":"address","value":"_token"},"id":2187,"name":"Identifier","src":"33616:6:30"}],"id":2188,"name":"FunctionCall","src":"33602:21:30"}],"id":2189,"name":"VariableDeclarationStatement","src":"33542:81:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"bool","value":"available"},"id":2190,"name":"Identifier","src":"33703:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2191,"name":"Identifier","src":"33728:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2183,"type":"uint256","value":"rate"},"id":2192,"name":"Identifier","src":"33736:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2193,"name":"Literal","src":"33744:1:30"}],"id":2194,"name":"BinaryOperation","src":"33736:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":2195,"name":"Literal","src":"33747:8:30"}],"id":2196,"name":"FunctionCall","src":"33728:28:30"}],"id":2197,"name":"ExpressionStatement","src":"33728:28:30"},{"attributes":{"functionReturnParameters":2179},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3780,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3755,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2175,"type":"uint256","value":"_amount"},"id":2198,"name":"Identifier","src":"33861:7:30"}],"id":2199,"name":"MemberAccess","src":"33861:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2183,"type":"uint256","value":"rate"},"id":2200,"name":"Identifier","src":"33873:4:30"}],"id":2201,"name":"FunctionCall","src":"33861:17:30"}],"id":2202,"name":"MemberAccess","src":"33861:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2181,"type":"uint256","value":"magnitude"},"id":2203,"name":"Identifier","src":"33883:9:30"}],"id":2204,"name":"FunctionCall","src":"33861:32:30"}],"id":2205,"name":"Return","src":"33854:39:30"}],"id":2206,"name":"Block","src":"33714:190:30"}],"id":2207,"name":"IfStatement","src":"33699:205:30"},{"attributes":{"functionReturnParameters":2179},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2208,"name":"Literal","src":"33920:1:30"}],"id":2209,"name":"Return","src":"33913:8:30"}],"id":2210,"name":"Block","src":"33465:463:30"}],"id":2211,"name":"FunctionDefinition","src":"33378:550:30"},{"attributes":{"documentation":"@dev Convert ether or ERC20 token amount to the corresponding stablecoin amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToStablecoin","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2301,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2212,"name":"ElementaryTypeName","src":"34158:7:30"}],"id":2213,"name":"VariableDeclaration","src":"34158:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2301,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2214,"name":"ElementaryTypeName","src":"34174:7:30"}],"id":2215,"name":"VariableDeclaration","src":"34174:15:30"}],"id":2216,"name":"ParameterList","src":"34157:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2301,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2217,"name":"ElementaryTypeName","src":"34212:7:30"}],"id":2218,"name":"VariableDeclaration","src":"34212:7:30"}],"id":2219,"name":"ParameterList","src":"34211:9:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"address","value":"_token"},"id":2220,"name":"Identifier","src":"34332:6:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4207,"type":"function () view returns (address)","value":"_stablecoin"},"id":2221,"name":"Identifier","src":"34342:11:30"}],"id":2222,"name":"FunctionCall","src":"34342:13:30"}],"id":2223,"name":"BinaryOperation","src":"34332:23:30"},{"children":[{"attributes":{"functionReturnParameters":2219},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"_amount"},"id":2224,"name":"Identifier","src":"34378:7:30"}],"id":2225,"name":"Return","src":"34371:14:30"}],"id":2226,"name":"Block","src":"34357:39:30"}],"id":2227,"name":"IfStatement","src":"34328:68:30"},{"attributes":{"assignments":[2229]},"children":[{"attributes":{"constant":false,"name":"amountToSend","scope":2300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2228,"name":"ElementaryTypeName","src":"34405:7:30"}],"id":2229,"name":"VariableDeclaration","src":"34405:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"_amount"},"id":2230,"name":"Identifier","src":"34428:7:30"}],"id":2231,"name":"VariableDeclarationStatement","src":"34405:30:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"address","value":"_token"},"id":2232,"name":"Identifier","src":"34482:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2233,"name":"ElementaryTypeNameExpression","src":"34492:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2234,"name":"Literal","src":"34500:1:30"}],"id":2235,"name":"FunctionCall","src":"34492:10:30"}],"id":2236,"name":"BinaryOperation","src":"34482:20:30"},{"children":[{"attributes":{"assignments":[null,2238,2240,2242,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":2269,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2237,"name":"ElementaryTypeName","src":"34654:7:30"}],"id":2238,"name":"VariableDeclaration","src":"34654:17:30"},{"attributes":{"constant":false,"name":"rate","scope":2269,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2239,"name":"ElementaryTypeName","src":"34673:7:30"}],"id":2240,"name":"VariableDeclaration","src":"34673:12:30"},{"attributes":{"constant":false,"name":"available","scope":2269,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2241,"name":"ElementaryTypeName","src":"34687:4:30"}],"id":2242,"name":"VariableDeclaration","src":"34687:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":2243,"name":"Identifier","src":"34711:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"address","value":"_token"},"id":2244,"name":"Identifier","src":"34725:6:30"}],"id":2245,"name":"FunctionCall","src":"34711:21:30"}],"id":2246,"name":"VariableDeclarationStatement","src":"34651:81:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2247,"name":"Identifier","src":"34835:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2242,"type":"bool","value":"available"},"id":2248,"name":"Identifier","src":"34843:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":2249,"name":"Literal","src":"34854:21:30"}],"id":2250,"name":"FunctionCall","src":"34835:41:30"}],"id":2251,"name":"ExpressionStatement","src":"34835:41:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2252,"name":"Identifier","src":"34890:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2240,"type":"uint256","value":"rate"},"id":2253,"name":"Identifier","src":"34898:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2254,"name":"Literal","src":"34906:1:30"}],"id":2255,"name":"BinaryOperation","src":"34898:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":2256,"name":"Literal","src":"34909:8:30"}],"id":2257,"name":"FunctionCall","src":"34890:28:30"}],"id":2258,"name":"ExpressionStatement","src":"34890:28:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2229,"type":"uint256","value":"amountToSend"},"id":2259,"name":"Identifier","src":"35020:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3780,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3755,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"_amount"},"id":2260,"name":"Identifier","src":"35035:7:30"}],"id":2261,"name":"MemberAccess","src":"35035:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2240,"type":"uint256","value":"rate"},"id":2262,"name":"Identifier","src":"35047:4:30"}],"id":2263,"name":"FunctionCall","src":"35035:17:30"}],"id":2264,"name":"MemberAccess","src":"35035:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2238,"type":"uint256","value":"magnitude"},"id":2265,"name":"Identifier","src":"35057:9:30"}],"id":2266,"name":"FunctionCall","src":"35035:32:30"}],"id":2267,"name":"Assignment","src":"35020:47:30"}],"id":2268,"name":"ExpressionStatement","src":"35020:47:30"}],"id":2269,"name":"Block","src":"34504:574:30"}],"id":2270,"name":"IfStatement","src":"34478:600:30"},{"attributes":{"assignments":[null,2272,2274,2276,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":2300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2271,"name":"ElementaryTypeName","src":"35195:7:30"}],"id":2272,"name":"VariableDeclaration","src":"35195:27:30"},{"attributes":{"constant":false,"name":"stablecoinRate","scope":2300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2273,"name":"ElementaryTypeName","src":"35224:7:30"}],"id":2274,"name":"VariableDeclaration","src":"35224:22:30"},{"attributes":{"constant":false,"name":"stablecoinAvailable","scope":2300,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2275,"name":"ElementaryTypeName","src":"35248:4:30"}],"id":2276,"name":"VariableDeclaration","src":"35248:24:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":2277,"name":"Identifier","src":"35282:18:30"}],"id":2278,"name":"FunctionCall","src":"35282:20:30"}],"id":2279,"name":"VariableDeclarationStatement","src":"35192:110:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2280,"name":"Identifier","src":"35360:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2276,"type":"bool","value":"stablecoinAvailable"},"id":2281,"name":"Identifier","src":"35368:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":2282,"name":"Literal","src":"35389:21:30"}],"id":2283,"name":"FunctionCall","src":"35360:51:30"}],"id":2284,"name":"ExpressionStatement","src":"35360:51:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18bfbbfdaee82cb0eebcce67c25e7747234386e0bcace876720c3090918b5d3f","typeString":"literal_string \"stablecoin rate=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2285,"name":"Identifier","src":"35421:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2274,"type":"uint256","value":"stablecoinRate"},"id":2286,"name":"Identifier","src":"35429:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2287,"name":"Literal","src":"35447:1:30"}],"id":2288,"name":"BinaryOperation","src":"35429:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"737461626c65636f696e20726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"stablecoin rate=0\"","value":"stablecoin rate=0"},"id":2289,"name":"Literal","src":"35450:19:30"}],"id":2290,"name":"FunctionCall","src":"35421:49:30"}],"id":2291,"name":"ExpressionStatement","src":"35421:49:30"},{"attributes":{"functionReturnParameters":2219},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3780,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3755,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2229,"type":"uint256","value":"amountToSend"},"id":2292,"name":"Identifier","src":"35605:12:30"}],"id":2293,"name":"MemberAccess","src":"35605:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2272,"type":"uint256","value":"stablecoinMagnitude"},"id":2294,"name":"Identifier","src":"35622:19:30"}],"id":2295,"name":"FunctionCall","src":"35605:37:30"}],"id":2296,"name":"MemberAccess","src":"35605:41:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2274,"type":"uint256","value":"stablecoinRate"},"id":2297,"name":"Identifier","src":"35647:14:30"}],"id":2298,"name":"FunctionCall","src":"35605:57:30"}],"id":2299,"name":"Return","src":"35598:64:30"}],"id":2300,"name":"Block","src":"34221:1448:30"}],"id":2301,"name":"FunctionDefinition","src":"34129:1540:30"},{"attributes":{"documentation":"@dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses\n @param _destination address of the transaction\n @param _value ETH amount in wei\n @param _data transaction payload binary","implemented":true,"isConstructor":false,"kind":"function","name":"executeTransaction","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":2429,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2302,"name":"ElementaryTypeName","src":"35957:7:30"}],"id":2303,"name":"VariableDeclaration","src":"35957:20:30"},{"attributes":{"constant":false,"name":"_value","scope":2429,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2304,"name":"ElementaryTypeName","src":"35979:7:30"}],"id":2305,"name":"VariableDeclaration","src":"35979:14:30"},{"attributes":{"constant":false,"name":"_data","scope":2429,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2306,"name":"ElementaryTypeName","src":"35995:5:30"}],"id":2307,"name":"VariableDeclaration","src":"35995:18:30"}],"id":2308,"name":"ParameterList","src":"35956:58:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2429,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2311,"name":"ElementaryTypeName","src":"36047:5:30"}],"id":2312,"name":"VariableDeclaration","src":"36047:12:30"}],"id":2313,"name":"ParameterList","src":"36046:14:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2309,"name":"Identifier","src":"36022:15:30"}],"id":2310,"name":"ModifierInvocation","src":"36022:15:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2314,"name":"Identifier","src":"36266:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2315,"name":"Identifier","src":"36279:12:30"}],"id":2316,"name":"IndexAccess","src":"36266:26:30"}],"id":2317,"name":"UnaryOperation","src":"36265:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2318,"name":"Identifier","src":"36308:11:30"}],"id":2320,"name":"MemberAccess","src":"36308:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2305,"type":"uint256","value":"_value"},"id":2321,"name":"Identifier","src":"36334:6:30"}],"id":2322,"name":"FunctionCall","src":"36308:33:30"}],"id":2323,"name":"ExpressionStatement","src":"36308:33:30"}],"id":2324,"name":"Block","src":"36294:58:30"}],"id":2325,"name":"IfStatement","src":"36261:91:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":3305,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2326,"name":"ElementaryTypeNameExpression","src":"36453:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2327,"name":"Identifier","src":"36461:12:30"}],"id":2328,"name":"FunctionCall","src":"36453:21:30"}],"id":2329,"name":"MemberAccess","src":"36453:32:30"}],"id":2330,"name":"FunctionCall","src":"36453:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4161,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":2331,"name":"Identifier","src":"36491:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2332,"name":"Identifier","src":"36509:12:30"}],"id":2333,"name":"FunctionCall","src":"36491:31:30"}],"id":2334,"name":"BinaryOperation","src":"36453:69:30"},{"children":[{"attributes":{"assignments":[2336],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"to","scope":2398,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2335,"name":"ElementaryTypeName","src":"36625:7:30"}],"id":2336,"name":"VariableDeclaration","src":"36625:10:30"}],"id":2337,"name":"VariableDeclarationStatement","src":"36625:10:30"},{"attributes":{"assignments":[2339],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"amount","scope":2398,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2338,"name":"ElementaryTypeName","src":"36649:7:30"}],"id":2339,"name":"VariableDeclaration","src":"36649:14:30"}],"id":2340,"name":"VariableDeclarationStatement","src":"36649:14:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2336,"type":"address","value":"to"},"id":2341,"name":"Identifier","src":"36678:2:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2339,"type":"uint256","value":"amount"},"id":2342,"name":"Identifier","src":"36682:6:30"}],"id":2343,"name":"TupleExpression","src":"36677:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4145,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":2344,"name":"Identifier","src":"36692:27:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2345,"name":"Identifier","src":"36720:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2346,"name":"Identifier","src":"36734:5:30"}],"id":2347,"name":"FunctionCall","src":"36692:48:30"}],"id":2348,"name":"Assignment","src":"36677:63:30"}],"id":2349,"name":"ExpressionStatement","src":"36677:63:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2350,"name":"Identifier","src":"36759:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2336,"type":"address","value":"to"},"id":2351,"name":"Identifier","src":"36772:2:30"}],"id":2352,"name":"IndexAccess","src":"36759:16:30"}],"id":2353,"name":"UnaryOperation","src":"36758:17:30"},{"children":[{"attributes":{"assignments":[2355]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2367,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2354,"name":"ElementaryTypeName","src":"36962:7:30"}],"id":2355,"name":"VariableDeclaration","src":"36962:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2356,"name":"Identifier","src":"36983:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2357,"name":"Identifier","src":"36998:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2339,"type":"uint256","value":"amount"},"id":2358,"name":"Identifier","src":"37012:6:30"}],"id":2359,"name":"FunctionCall","src":"36983:36:30"}],"id":2360,"name":"VariableDeclarationStatement","src":"36962:57:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2361,"name":"Identifier","src":"37037:11:30"}],"id":2363,"name":"MemberAccess","src":"37037:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2355,"type":"uint256","value":"etherValue"},"id":2364,"name":"Identifier","src":"37063:10:30"}],"id":2365,"name":"FunctionCall","src":"37037:37:30"}],"id":2366,"name":"ExpressionStatement","src":"37037:37:30"}],"id":2367,"name":"Block","src":"36777:312:30"}],"id":2368,"name":"IfStatement","src":"36754:335:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"callOptionalReturn","referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":2369,"name":"Identifier","src":"37238:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2370,"name":"Identifier","src":"37244:12:30"}],"id":2371,"name":"FunctionCall","src":"37238:19:30"}],"id":2372,"name":"MemberAccess","src":"37238:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2373,"name":"Identifier","src":"37277:5:30"}],"id":2374,"name":"FunctionCall","src":"37238:45:30"}],"id":2375,"name":"ExpressionStatement","src":"37238:45:30"},{"attributes":{"assignments":[2377]},"children":[{"attributes":{"constant":false,"name":"b","scope":2398,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2376,"name":"ElementaryTypeName","src":"37387:5:30"}],"id":2377,"name":"VariableDeclaration","src":"37387:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2378,"name":"ElementaryTypeName","src":"37408:5:30"}],"id":2379,"name":"NewExpression","src":"37404:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2380,"name":"Literal","src":"37414:2:30"}],"id":2381,"name":"FunctionCall","src":"37404:13:30"}],"id":2382,"name":"VariableDeclarationStatement","src":"37387:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2377,"type":"bytes memory","value":"b"},"id":2383,"name":"Identifier","src":"37431:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2384,"name":"Literal","src":"37433:2:30"}],"id":2385,"name":"IndexAccess","src":"37431:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2386,"name":"Literal","src":"37439:4:30"}],"id":2387,"name":"Assignment","src":"37431:12:30"}],"id":2388,"name":"ExpressionStatement","src":"37431:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1662,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2389,"name":"Identifier","src":"37463:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2390,"name":"Identifier","src":"37483:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2305,"type":"uint256","value":"_value"},"id":2391,"name":"Identifier","src":"37497:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2392,"name":"Identifier","src":"37505:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2377,"type":"bytes memory","value":"b"},"id":2393,"name":"Identifier","src":"37512:1:30"}],"id":2394,"name":"FunctionCall","src":"37463:51:30"}],"id":2395,"name":"EmitStatement","src":"37458:56:30"},{"attributes":{"functionReturnParameters":2313},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2377,"type":"bytes memory","value":"b"},"id":2396,"name":"Identifier","src":"37535:1:30"}],"id":2397,"name":"Return","src":"37528:8:30"}],"id":2398,"name":"Block","src":"36524:1023:30"}],"id":2399,"name":"IfStatement","src":"36449:1098:30"},{"attributes":{"assignments":[2401,2403]},"children":[{"attributes":{"constant":false,"name":"success","scope":2428,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2400,"name":"ElementaryTypeName","src":"37558:4:30"}],"id":2401,"name":"VariableDeclaration","src":"37558:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":2428,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2402,"name":"ElementaryTypeName","src":"37572:5:30"}],"id":2403,"name":"VariableDeclaration","src":"37572:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (bytes memory) payable returns (bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2404,"name":"Identifier","src":"37599:12:30"}],"id":2405,"name":"MemberAccess","src":"37599:17:30"}],"id":2406,"name":"MemberAccess","src":"37599:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2305,"type":"uint256","value":"_value"},"id":2407,"name":"Identifier","src":"37623:6:30"}],"id":2408,"name":"FunctionCall","src":"37599:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2409,"name":"Identifier","src":"37631:5:30"}],"id":2410,"name":"FunctionCall","src":"37599:38:30"}],"id":2411,"name":"VariableDeclarationStatement","src":"37557:80:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2412,"name":"Identifier","src":"37647:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2401,"type":"bool","value":"success"},"id":2413,"name":"Identifier","src":"37655:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":2414,"name":"ElementaryTypeNameExpression","src":"37664:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"bytes memory","value":"returndata"},"id":2415,"name":"Identifier","src":"37671:10:30"}],"id":2416,"name":"FunctionCall","src":"37664:18:30"}],"id":2417,"name":"FunctionCall","src":"37647:36:30"}],"id":2418,"name":"ExpressionStatement","src":"37647:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1662,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2419,"name":"Identifier","src":"37699:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2420,"name":"Identifier","src":"37719:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2305,"type":"uint256","value":"_value"},"id":2421,"name":"Identifier","src":"37733:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2422,"name":"Identifier","src":"37741:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"bytes memory","value":"returndata"},"id":2423,"name":"Identifier","src":"37748:10:30"}],"id":2424,"name":"FunctionCall","src":"37699:60:30"}],"id":2425,"name":"EmitStatement","src":"37694:65:30"},{"attributes":{"functionReturnParameters":2313},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"bytes memory","value":"returndata"},"id":2426,"name":"Identifier","src":"37846:10:30"}],"id":2427,"name":"Return","src":"37839:17:30"}],"id":2428,"name":"Block","src":"36061:1802:30"}],"id":2429,"name":"FunctionDefinition","src":"35929:1934:30"},{"attributes":{"documentation":"@dev Implements EIP-1654: receives the hashed message(bytes32)\n https://github.com/ethereum/EIPs/issues/1654.md\n @param _hashedData Hashed data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _dataHash","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hashedData","scope":2455,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2430,"name":"ElementaryTypeName","src":"38172:7:30"}],"id":2431,"name":"VariableDeclaration","src":"38172:19:30"},{"attributes":{"constant":false,"name":"_signature","scope":2455,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2432,"name":"ElementaryTypeName","src":"38193:5:30"}],"id":2433,"name":"VariableDeclaration","src":"38193:23:30"}],"id":2434,"name":"ParameterList","src":"38171:46:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2455,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2435,"name":"ElementaryTypeName","src":"38239:6:30"}],"id":2436,"name":"VariableDeclaration","src":"38239:6:30"}],"id":2437,"name":"ParameterList","src":"38238:8:30"},{"children":[{"attributes":{"assignments":[2439]},"children":[{"attributes":{"constant":false,"name":"from","scope":2454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2438,"name":"ElementaryTypeName","src":"38257:7:30"}],"id":2439,"name":"VariableDeclaration","src":"38257:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"recover","referencedDeclaration":3370,"type":"function (bytes32,bytes memory) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2431,"type":"bytes32","value":"_hashedData"},"id":2440,"name":"Identifier","src":"38272:11:30"}],"id":2441,"name":"MemberAccess","src":"38272:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2433,"type":"bytes memory","value":"_signature"},"id":2442,"name":"Identifier","src":"38292:10:30"}],"id":2443,"name":"FunctionCall","src":"38272:31:30"}],"id":2444,"name":"VariableDeclarationStatement","src":"38257:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2445,"name":"Identifier","src":"38313:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2446,"name":"Identifier","src":"38321:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2439,"type":"address","value":"from"},"id":2447,"name":"Identifier","src":"38330:4:30"}],"id":2448,"name":"FunctionCall","src":"38321:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":2449,"name":"Literal","src":"38337:19:30"}],"id":2450,"name":"FunctionCall","src":"38313:44:30"}],"id":2451,"name":"ExpressionStatement","src":"38313:44:30"},{"attributes":{"functionReturnParameters":2437},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"bytes4","value":"_EIP_1654"},"id":2452,"name":"Identifier","src":"38374:9:30"}],"id":2453,"name":"Return","src":"38367:16:30"}],"id":2454,"name":"Block","src":"38247:143:30"}],"id":2455,"name":"FunctionDefinition","src":"38146:244:30"},{"attributes":{"documentation":"@dev Transfers the specified asset to the recipient's address.\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"transfer","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2521,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2456,"name":"ElementaryTypeName","src":"38685:15:30"}],"id":2457,"name":"VariableDeclaration","src":"38685:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":2521,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2458,"name":"ElementaryTypeName","src":"38706:7:30"}],"id":2459,"name":"VariableDeclaration","src":"38706:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2521,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2460,"name":"ElementaryTypeName","src":"38722:7:30"}],"id":2461,"name":"VariableDeclaration","src":"38722:15:30"}],"id":2462,"name":"ParameterList","src":"38684:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":2468,"name":"ParameterList","src":"38781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2463,"name":"Identifier","src":"38746:15:30"}],"id":2464,"name":"ModifierInvocation","src":"38746:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"modifier (uint256)","value":"isNotZero"},"id":2465,"name":"Identifier","src":"38762:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2466,"name":"Identifier","src":"38772:7:30"}],"id":2467,"name":"ModifierInvocation","src":"38762:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_680f6a32e9231c9e20746c0afa2d6c3a5c617d8ed04badee4157b674b70920f8","typeString":"literal_string \"destination=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2469,"name":"Identifier","src":"38852:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"address payable","value":"_to"},"id":2470,"name":"Identifier","src":"38860:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2471,"name":"ElementaryTypeNameExpression","src":"38867:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2472,"name":"Literal","src":"38875:1:30"}],"id":2473,"name":"FunctionCall","src":"38867:10:30"}],"id":2474,"name":"BinaryOperation","src":"38860:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"64657374696e6174696f6e3d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"destination=0\"","value":"destination=0"},"id":2475,"name":"Literal","src":"38879:15:30"}],"id":2476,"name":"FunctionCall","src":"38852:43:30"}],"id":2477,"name":"ExpressionStatement","src":"38852:43:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2478,"name":"Identifier","src":"38984:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"address payable","value":"_to"},"id":2479,"name":"Identifier","src":"38997:3:30"}],"id":2480,"name":"IndexAccess","src":"38984:17:30"}],"id":2481,"name":"UnaryOperation","src":"38983:18:30"},{"children":[{"attributes":{"assignments":[2483]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2506,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2482,"name":"ElementaryTypeName","src":"39080:7:30"}],"id":2483,"name":"VariableDeclaration","src":"39080:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2484,"name":"Identifier","src":"39101:7:30"}],"id":2485,"name":"VariableDeclarationStatement","src":"39080:28:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"address","value":"_asset"},"id":2486,"name":"Identifier","src":"39205:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2487,"name":"ElementaryTypeNameExpression","src":"39215:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2488,"name":"Literal","src":"39223:1:30"}],"id":2489,"name":"FunctionCall","src":"39215:10:30"}],"id":2490,"name":"BinaryOperation","src":"39205:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2483,"type":"uint256","value":"etherValue"},"id":2491,"name":"Identifier","src":"39245:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2492,"name":"Identifier","src":"39258:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"address","value":"_asset"},"id":2493,"name":"Identifier","src":"39273:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2494,"name":"Identifier","src":"39281:7:30"}],"id":2495,"name":"FunctionCall","src":"39258:31:30"}],"id":2496,"name":"Assignment","src":"39245:44:30"}],"id":2497,"name":"ExpressionStatement","src":"39245:44:30"}],"id":2498,"name":"Block","src":"39227:77:30"}],"id":2499,"name":"IfStatement","src":"39201:103:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2500,"name":"Identifier","src":"39515:11:30"}],"id":2502,"name":"MemberAccess","src":"39515:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2483,"type":"uint256","value":"etherValue"},"id":2503,"name":"Identifier","src":"39541:10:30"}],"id":2504,"name":"FunctionCall","src":"39515:37:30"}],"id":2505,"name":"ExpressionStatement","src":"39515:37:30"}],"id":2506,"name":"Block","src":"39003:560:30"}],"id":2507,"name":"IfStatement","src":"38979:584:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2508,"name":"Identifier","src":"39638:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"address payable","value":"_to"},"id":2509,"name":"Identifier","src":"39652:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"address","value":"_asset"},"id":2510,"name":"Identifier","src":"39657:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2511,"name":"Identifier","src":"39665:7:30"}],"id":2512,"name":"FunctionCall","src":"39638:35:30"}],"id":2513,"name":"ExpressionStatement","src":"39638:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1696,"type":"function (address,address,uint256)","value":"Transferred"},"id":2514,"name":"Identifier","src":"39724:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"address payable","value":"_to"},"id":2515,"name":"Identifier","src":"39736:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"address","value":"_asset"},"id":2516,"name":"Identifier","src":"39741:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2517,"name":"Identifier","src":"39749:7:30"}],"id":2518,"name":"FunctionCall","src":"39724:33:30"}],"id":2519,"name":"EmitStatement","src":"39719:38:30"}],"id":2520,"name":"Block","src":"38781:983:30"}],"id":2521,"name":"FunctionDefinition","src":"38667:1097:30"}],"id":2522,"name":"ContractDefinition","src":"22209:17557:30"}],"id":2523,"name":"SourceUnit","src":"757:39010:30"}},"walletCache.sol":{"AST":{"attributes":{"absolutePath":"walletCache.sol","exportedSymbols":{"IWalletCache":[10],"WalletCache":[197]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"781:24:31"},{"attributes":{"SourceUnit":2523,"absolutePath":"wallet.sol","file":"./wallet.sol","scope":198,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"807:22:31"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":198,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"830:39:31"},{"attributes":{"SourceUnit":294,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":198,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"870:38:31"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title IWalletCache interface describes a method for poping an already cached wallet","fullyImplemented":false,"linearizedBaseContracts":[10],"name":"IWalletCache","scope":198},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"walletCachePop","scope":10,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5,"name":"ParameterList","src":"1052:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":9,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":6,"name":"UserDefinedTypeName","src":"1073:6:31"}],"id":7,"name":"VariableDeclaration","src":"1073:6:31"}],"id":8,"name":"ParameterList","src":"1072:8:31"}],"id":9,"name":"FunctionDefinition","src":"1029:52:31"}],"id":10,"name":"ContractDefinition","src":"1000:83:31"},{"attributes":{"contractDependencies":[293,338,2522],"contractKind":"contract","documentation":"/ @title Wallet cache with wallet pre-caching functionality.","fullyImplemented":true,"linearizedBaseContracts":[197,293,338],"name":"WalletCache","scope":198},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":11,"name":"UserDefinedTypeName","src":"1174:13:31"}],"id":12,"name":"InheritanceSpecifier","src":"1174:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":293,"type":"contract Controllable"},"id":13,"name":"UserDefinedTypeName","src":"1189:12:31"}],"id":14,"name":"InheritanceSpecifier","src":"1189:12:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"CachedWallet"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_wallet","scope":18,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":15,"name":"UserDefinedTypeName","src":"1227:6:31"}],"id":16,"name":"VariableDeclaration","src":"1227:14:31"}],"id":17,"name":"ParameterList","src":"1226:16:31"}],"id":18,"name":"EventDefinition","src":"1208:35:31"},{"attributes":{"constant":true,"name":"_DEFAULT_LICENCE_NODE","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":19,"name":"ElementaryTypeName","src":"1348:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307864306666386264363766366532356534653462303130646635383261333661306565396237386534396166653663633163666635646435613833303430333330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 9453...(69 digits omitted)...3024","value":"0xd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a83040330"},"id":20,"name":"Literal","src":"1397:66:31"}],"id":21,"name":"VariableDeclaration","src":"1348:115:31"},{"attributes":{"constant":true,"name":"_DEFAULT_TOKEN_WHITELIST_NODE","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":22,"name":"ElementaryTypeName","src":"1506:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307865383466393035373066313366653039663238386632343131666639636635306461363131656430633764623766373364343830353366666339373464333936","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1050...(70 digits omitted)...8950","value":"0xe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396"},"id":23,"name":"Literal","src":"1563:66:31"}],"id":24,"name":"VariableDeclaration","src":"1506:123:31"},{"attributes":{"constant":true,"name":"_DEFAULT_WALLET_DEPLOYER_NODE","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":25,"name":"ElementaryTypeName","src":"1675:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307831643063306164626536616464643933363539343436333131653037363761353662363764343165663338663063623636646366373536306432386135613338","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1313...(69 digits omitted)...7784","value":"0x1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a38"},"id":26,"name":"Literal","src":"1732:66:31"}],"id":27,"name":"VariableDeclaration","src":"1675:123:31"},{"attributes":{"constant":false,"name":"licenceNode","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":28,"name":"ElementaryTypeName","src":"1805:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":21,"type":"bytes32","value":"_DEFAULT_LICENCE_NODE"},"id":29,"name":"Identifier","src":"1834:21:31"}],"id":30,"name":"VariableDeclaration","src":"1805:50:31"},{"attributes":{"constant":false,"name":"tokenWhitelistNode","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":31,"name":"ElementaryTypeName","src":"1861:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":24,"type":"bytes32","value":"_DEFAULT_TOKEN_WHITELIST_NODE"},"id":32,"name":"Identifier","src":"1897:29:31"}],"id":33,"name":"VariableDeclaration","src":"1861:65:31"},{"attributes":{"constant":false,"name":"walletDeployerNode","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":34,"name":"ElementaryTypeName","src":"1932:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":27,"type":"bytes32","value":"_DEFAULT_WALLET_DEPLOYER_NODE"},"id":35,"name":"Identifier","src":"1968:29:31"}],"id":36,"name":"VariableDeclaration","src":"1932:65:31"},{"attributes":{"constant":false,"name":"cachedWallets","scope":197,"stateVariable":true,"storageLocation":"default","type":"contract Wallet[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"contract Wallet[]"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":37,"name":"UserDefinedTypeName","src":"2004:6:31"}],"id":38,"name":"ArrayTypeName","src":"2004:8:31"}],"id":39,"name":"VariableDeclaration","src":"2004:29:31"},{"attributes":{"constant":false,"name":"ens","scope":197,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"public"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":40,"name":"ElementaryTypeName","src":"2040:7:31"}],"id":41,"name":"VariableDeclaration","src":"2040:18:31"},{"attributes":{"constant":false,"name":"defaultSpendLimit","scope":197,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":42,"name":"ElementaryTypeName","src":"2064:7:31"}],"id":43,"name":"VariableDeclaration","src":"2064:32:31"},{"attributes":{"documentation":"@notice parameters are passed in so that they can be used to construct new instances of the wallet\n @dev pass in bytes32 to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":197,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":106,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":44,"name":"ElementaryTypeName","src":"2311:7:31"}],"id":45,"name":"VariableDeclaration","src":"2311:13:31"},{"attributes":{"constant":false,"name":"_defaultSpendLimit_","scope":106,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":46,"name":"ElementaryTypeName","src":"2334:7:31"}],"id":47,"name":"VariableDeclaration","src":"2334:27:31"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":48,"name":"ElementaryTypeName","src":"2371:7:31"}],"id":49,"name":"VariableDeclaration","src":"2371:24:31"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":50,"name":"ElementaryTypeName","src":"2405:7:31"}],"id":51,"name":"VariableDeclaration","src":"2405:21:31"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":52,"name":"ElementaryTypeName","src":"2436:7:31"}],"id":53,"name":"VariableDeclaration","src":"2436:28:31"},{"attributes":{"constant":false,"name":"_walletDeployerNode_","scope":106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":54,"name":"ElementaryTypeName","src":"2474:7:31"}],"id":55,"name":"VariableDeclaration","src":"2474:28:31"}],"id":56,"name":"ParameterList","src":"2301:207:31"},{"attributes":{"parameters":[null]},"children":[],"id":63,"name":"ParameterList","src":"2568:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":338,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":57,"name":"Identifier","src":"2516:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":45,"type":"address","value":"_ens_"},"id":58,"name":"Identifier","src":"2530:5:31"}],"id":59,"name":"ModifierInvocation","src":"2516:20:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"type(contract Controllable)","value":"Controllable"},"id":60,"name":"Identifier","src":"2537:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":49,"type":"bytes32","value":"_controllerNode_"},"id":61,"name":"Identifier","src":"2550:16:31"}],"id":62,"name":"ModifierInvocation","src":"2537:30:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":41,"type":"address","value":"ens"},"id":64,"name":"Identifier","src":"2578:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":45,"type":"address","value":"_ens_"},"id":65,"name":"Identifier","src":"2584:5:31"}],"id":66,"name":"Assignment","src":"2578:11:31"}],"id":67,"name":"ExpressionStatement","src":"2578:11:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"uint256","value":"defaultSpendLimit"},"id":68,"name":"Identifier","src":"2599:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"uint256","value":"_defaultSpendLimit_"},"id":69,"name":"Identifier","src":"2619:19:31"}],"id":70,"name":"Assignment","src":"2599:39:31"}],"id":71,"name":"ExpressionStatement","src":"2599:39:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":51,"type":"bytes32","value":"_licenceNode_"},"id":72,"name":"Identifier","src":"2695:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":73,"name":"ElementaryTypeNameExpression","src":"2712:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":74,"name":"Literal","src":"2720:1:31"}],"id":75,"name":"FunctionCall","src":"2712:10:31"}],"id":76,"name":"BinaryOperation","src":"2695:27:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"licenceNode"},"id":77,"name":"Identifier","src":"2738:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":51,"type":"bytes32","value":"_licenceNode_"},"id":78,"name":"Identifier","src":"2752:13:31"}],"id":79,"name":"Assignment","src":"2738:27:31"}],"id":80,"name":"ExpressionStatement","src":"2738:27:31"}],"id":81,"name":"Block","src":"2724:52:31"}],"id":82,"name":"IfStatement","src":"2691:85:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":53,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":83,"name":"Identifier","src":"2838:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":84,"name":"ElementaryTypeNameExpression","src":"2862:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":85,"name":"Literal","src":"2870:1:31"}],"id":86,"name":"FunctionCall","src":"2862:10:31"}],"id":87,"name":"BinaryOperation","src":"2838:34:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":33,"type":"bytes32","value":"tokenWhitelistNode"},"id":88,"name":"Identifier","src":"2888:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":53,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":89,"name":"Identifier","src":"2909:20:31"}],"id":90,"name":"Assignment","src":"2888:41:31"}],"id":91,"name":"ExpressionStatement","src":"2888:41:31"}],"id":92,"name":"Block","src":"2874:66:31"}],"id":93,"name":"IfStatement","src":"2834:106:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":55,"type":"bytes32","value":"_walletDeployerNode_"},"id":94,"name":"Identifier","src":"3002:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":95,"name":"ElementaryTypeNameExpression","src":"3026:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":96,"name":"Literal","src":"3034:1:31"}],"id":97,"name":"FunctionCall","src":"3026:10:31"}],"id":98,"name":"BinaryOperation","src":"3002:34:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"bytes32","value":"walletDeployerNode"},"id":99,"name":"Identifier","src":"3052:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":55,"type":"bytes32","value":"_walletDeployerNode_"},"id":100,"name":"Identifier","src":"3073:20:31"}],"id":101,"name":"Assignment","src":"3052:41:31"}],"id":102,"name":"ExpressionStatement","src":"3052:41:31"}],"id":103,"name":"Block","src":"3038:66:31"}],"id":104,"name":"IfStatement","src":"2998:106:31"}],"id":105,"name":"Block","src":"2568:542:31"}],"id":106,"name":"FunctionDefinition","src":"2290:820:31"},{"attributes":{"documentation":null,"name":"onlyWalletDeployer","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":107,"name":"ParameterList","src":"3143:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2ae83e68b46e92db3c6a8db018001d48e56a6c05f219cc33be19b5d44f899d9","typeString":"literal_string \"not called by wallet-deployer\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":108,"name":"Identifier","src":"3156:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":109,"name":"Identifier","src":"3164:3:31"}],"id":110,"name":"MemberAccess","src":"3164:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":111,"name":"Identifier","src":"3178:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"bytes32","value":"walletDeployerNode"},"id":112,"name":"Identifier","src":"3190:18:31"}],"id":113,"name":"FunctionCall","src":"3178:31:31"}],"id":114,"name":"BinaryOperation","src":"3164:45:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not called by wallet-deployer\"","value":"not called by wallet-deployer"},"id":115,"name":"Literal","src":"3211:31:31"}],"id":116,"name":"FunctionCall","src":"3156:87:31"}],"id":117,"name":"ExpressionStatement","src":"3156:87:31"},{"id":118,"name":"PlaceholderStatement","src":"3253:1:31"}],"id":119,"name":"Block","src":"3146:115:31"}],"id":120,"name":"ModifierDefinition","src":"3116:145:31"},{"attributes":{"documentation":"@notice This public method allows anyone to pre-cache wallets","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cacheWallet","scope":197,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":121,"name":"ParameterList","src":"3357:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":122,"name":"ParameterList","src":"3367:0:31"},{"children":[{"attributes":{"assignments":[124]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":153,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":123,"name":"UserDefinedTypeName","src":"3479:6:31"}],"id":124,"name":"VariableDeclaration","src":"3479:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract Wallet","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"function (address payable,bool,address,bytes32,bytes32,bytes32,uint256) returns (contract Wallet)"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":125,"name":"UserDefinedTypeName","src":"3499:6:31"}],"id":126,"name":"NewExpression","src":"3495:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":127,"name":"ElementaryTypeNameExpression","src":"3519:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":128,"name":"ElementaryTypeNameExpression","src":"3527:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":129,"name":"Identifier","src":"3535:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"bytes32","value":"walletDeployerNode"},"id":130,"name":"Identifier","src":"3547:18:31"}],"id":131,"name":"FunctionCall","src":"3535:31:31"}],"id":132,"name":"FunctionCall","src":"3527:40:31"}],"id":133,"name":"FunctionCall","src":"3519:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":134,"name":"Literal","src":"3582:4:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":41,"type":"address","value":"ens"},"id":135,"name":"Identifier","src":"3600:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":33,"type":"bytes32","value":"tokenWhitelistNode"},"id":136,"name":"Identifier","src":"3617:18:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":258,"type":"function () view returns (bytes32)","value":"controllerNode"},"id":137,"name":"Identifier","src":"3649:14:31"}],"id":138,"name":"FunctionCall","src":"3649:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"licenceNode"},"id":139,"name":"Identifier","src":"3679:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"uint256","value":"defaultSpendLimit"},"id":140,"name":"Identifier","src":"3704:17:31"}],"id":141,"name":"FunctionCall","src":"3495:236:31"}],"id":142,"name":"VariableDeclarationStatement","src":"3479:252:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (contract Wallet) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":143,"name":"Identifier","src":"3741:13:31"}],"id":145,"name":"MemberAccess","src":"3741:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"contract Wallet","value":"wallet"},"id":146,"name":"Identifier","src":"3760:6:31"}],"id":147,"name":"FunctionCall","src":"3741:26:31"}],"id":148,"name":"ExpressionStatement","src":"3741:26:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"overloadedDeclarations":[null],"referencedDeclaration":18,"type":"function (contract Wallet)","value":"CachedWallet"},"id":149,"name":"Identifier","src":"3783:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"contract Wallet","value":"wallet"},"id":150,"name":"Identifier","src":"3796:6:31"}],"id":151,"name":"FunctionCall","src":"3783:20:31"}],"id":152,"name":"EmitStatement","src":"3778:25:31"}],"id":153,"name":"Block","src":"3367:443:31"}],"id":154,"name":"FunctionDefinition","src":"3337:473:31"},{"attributes":{"documentation":"@notice This public method allows only the wallet deployer to pop pre-cached wallets or create a new one in case there aren't any","implemented":true,"isConstructor":false,"kind":"function","name":"walletCachePop","scope":197,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":155,"name":"ParameterList","src":"3977:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":187,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":158,"name":"UserDefinedTypeName","src":"4017:6:31"}],"id":159,"name":"VariableDeclaration","src":"4017:6:31"}],"id":160,"name":"ParameterList","src":"4016:8:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"modifier ()","value":"onlyWalletDeployer"},"id":156,"name":"Identifier","src":"3989:18:31"}],"id":157,"name":"ModifierInvocation","src":"3989:18:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":161,"name":"Identifier","src":"4039:13:31"}],"id":162,"name":"MemberAccess","src":"4039:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":163,"name":"Literal","src":"4062:1:31"}],"id":164,"name":"BinaryOperation","src":"4039:24:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":154,"type":"function ()","value":"cacheWallet"},"id":165,"name":"Identifier","src":"4079:11:31"}],"id":166,"name":"FunctionCall","src":"4079:13:31"}],"id":167,"name":"ExpressionStatement","src":"4079:13:31"}],"id":168,"name":"Block","src":"4065:38:31"}],"id":169,"name":"IfStatement","src":"4035:68:31"},{"attributes":{"assignments":[171]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":186,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":170,"name":"UserDefinedTypeName","src":"4113:6:31"}],"id":171,"name":"VariableDeclaration","src":"4113:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"contract Wallet"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":172,"name":"Identifier","src":"4129:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":173,"name":"Identifier","src":"4143:13:31"}],"id":174,"name":"MemberAccess","src":"4143:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":175,"name":"Literal","src":"4166:1:31"}],"id":176,"name":"BinaryOperation","src":"4143:24:31"}],"id":177,"name":"IndexAccess","src":"4129:39:31"}],"id":178,"name":"VariableDeclarationStatement","src":"4113:55:31"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"pop","referencedDeclaration":null,"type":"function ()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":179,"name":"Identifier","src":"4178:13:31"}],"id":181,"name":"MemberAccess","src":"4178:17:31"}],"id":182,"name":"FunctionCall","src":"4178:19:31"}],"id":183,"name":"ExpressionStatement","src":"4178:19:31"},{"attributes":{"functionReturnParameters":160},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":171,"type":"contract Wallet","value":"wallet"},"id":184,"name":"Identifier","src":"4215:6:31"}],"id":185,"name":"Return","src":"4208:13:31"}],"id":186,"name":"Block","src":"4025:203:31"}],"id":187,"name":"FunctionDefinition","src":"3954:274:31"},{"attributes":{"documentation":"@notice returns the number of pre-cached wallets","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cachedWalletsCount","scope":197,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":188,"name":"ParameterList","src":"4318:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":196,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":189,"name":"ElementaryTypeName","src":"4344:7:31"}],"id":190,"name":"VariableDeclaration","src":"4344:7:31"}],"id":191,"name":"ParameterList","src":"4343:9:31"},{"children":[{"attributes":{"functionReturnParameters":191},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":192,"name":"Identifier","src":"4370:13:31"}],"id":193,"name":"MemberAccess","src":"4370:20:31"}],"id":194,"name":"Return","src":"4363:27:31"}],"id":195,"name":"Block","src":"4353:44:31"}],"id":196,"name":"FunctionDefinition","src":"4291:106:31"}],"id":197,"name":"ContractDefinition","src":"1150:3249:31"}],"id":198,"name":"SourceUnit","src":"781:3619:31"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ECDSA.sol:ECDSA":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","srcmap":"1392:3417:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1392:3417:2:-;;;;;;;;"},"externals/ERC165.sol:ERC165":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:5:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:6:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:8:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:9:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:9;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:9;-1:-1:-1;;;;;2567:10:9;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:9;;;;;;","srcmap-runtime":"1897:2174:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:15;;;;;;;;;:::i;:::-;;573:184:19;;;;;;;;;:::i;1721:953:16:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:12;;;;;;;;;:::i;:::-;;;;;;;;;612:169:18;;;;;;;;;:::i;505:166:14:-;;;;;;;;;:::i;980:228:13:-;;;;;;;;;:::i;3269:231:9:-;;;;;;;;;:::i;4901:153:15:-;;;;;;;;;:::i;974:127:19:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:15;;;;;;;;;:::i;582:292:12:-;;;;;;;;;:::i;844:101:17:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:13:-;;;;;;;;;:::i;4519:168:15:-;;;;;;;;;:::i;3703:366:9:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:15;;;;;;;;;:::i;838:108:14:-;;;;;;;;;:::i;1023:133:18:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:15;;;;;;;;;:::i;681:140:13:-;;;;;;;;;:::i;858:226:16:-;;;;;;;;;:::i;1514:127:13:-;;;;;;;;;:::i;2320:80:9:-;;;;;;;;;:::i;1107:169:19:-;1174:4;-1:-1:-1;;;;;;1197:32:19;;-1:-1:-1;;;1197:32:19;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:15:-;2932:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:15;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:15;;:18;-1:-1:-1;;3185:18:15;:15;:18;;-1:-1:-1;3185:18:15:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:15;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:15;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:15;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:15;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:15;;4052:6;;-1:-1:-1;4060:20:15;;;;-1:-1:-1;4082:17:15;4012:11;:88::i;:::-;400:1:11;;;;;2854:1263:15;;;;:::o;573:184:19:-;668:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:19;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:16:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:16;;;;;;;;;;-1:-1:-1;;;;;1849:29:16;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:16;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:16;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:16;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:16;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:16;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:16;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:16;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:16;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:16;;-1:-1:-1;2373:103:16;-1:-1:-1;2489:8:16;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:16;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:16;;-1:-1:-1;;;1721:953:16;;;;;:::o;1195:454:12:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:12;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:12;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:12;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:12;-1:-1:-1;1195:454:12;;;;;;:::o;612:169:18:-;687:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:18;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:18;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:14:-;584:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:14;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:13;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:13:o;3269:231:9:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:9;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:9;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:15:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:19:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:19;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:15:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:12:-;674:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:12;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:12;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:17:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:17;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:13;1302:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:13;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:15:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:9;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:9;-1:-1:-1;3844:6:9;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:9;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:9;;3840:199;;;-1:-1:-1;3703:366:9;;;;:::o;5193:128:15:-;5247:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:15;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:14:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:14;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:18;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:15:-;5617:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:15;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:15;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:15;;:16;-1:-1:-1;5701:4:15;;-1:-1:-1;5701:4:15;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:11;5541:225:15;;;;:::o;681:140:13:-;743:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:13;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:16:-;955:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:16;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:16;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:16;-1:-1:-1;;;;;971:43:16;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:13:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:13;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:18:-;1229:4;-1:-1:-1;;;;;;1252:34:18;;-1:-1:-1;;;1252:34:18;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:9:-;3596:3;;:15;;-1:-1:-1;;;3596:15:9;;3564:4;;;;-1:-1:-1;;;;;3596:3:9;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:9;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:9;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:9;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:9;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:10:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:8:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:15:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:15;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:15;;;;;;-1:-1:-1;;6760:43:15;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:15;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:15;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:10:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:10;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:10;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:10;;:::o;414:204:11:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:11;576:10;570:17;-1:-1:-1;;;566:36:11;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:11;87:34:-1;-1:-1;;;;;;776:20:11;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:11;743:64::o;951:169:17:-;1018:4;-1:-1:-1;;;;;;1041:32:17;;-1:-1:-1;;;1041:32:17;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:10:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:10;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:10:o;8685:393:8:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:8;87:34:-1;135:17;;-1:-1;8858:14:8;-1:-1:-1;8839:33:8;-1:-1:-1;8960:2:8;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:8;;8685:393;-1:-1:-1;;;;;8685:393:8:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:8:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:8;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:8;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:16:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:16;;:11;-1:-1:-1;;;;;2770:37:16;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:8:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:8;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:8;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:8;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:8;;513:2;499:26;489:42;;468:73::o;6035:245:15:-;6102:4;-1:-1:-1;;;;;;6125:38:15;;-1:-1:-1;;;6125:38:15;;:93;;-1:-1:-1;;;;;;;6182:36:15;;-1:-1:-1;;;6182:36:15;6125:93;:148;;;;6237:36;6261:11;1019:4:14;-1:-1:-1;;;;;;1042:40:14;;-1:-1:-1;;;1042:40:14;;:80;;;1086:36;1110:11;1714:4:13;-1:-1:-1;;;;;;1737:32:13;;-1:-1:-1;;;1737:32:13;;:71;;-1:-1:-1;;;;;;;1773:35:13;;-1:-1:-1;;;1773:35:13;1737:71;:111;;;;1812:36;1836:11;1722:4:12;-1:-1:-1;;;;;;1745:31:12;;-1:-1:-1;;;1745:31:12;;:71;;-1:-1:-1;;;;;;;;;;204:32:11;;;1780:36:12;114:129:11:o;1897:2174:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:9;;;-1:-1:-1;1897:2174:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:10:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:10:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:21;;;;;;;","srcmap-runtime":"898:556:21:-;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","srcmap":"1381:8954:28:-;;;1122:66:23;1272:58;;2313:80:28;;;-1:-1:-1;;;;;;2313:80:28;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:28;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3616:558:28;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:28;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:28;;;-1:-1:-1;;;;;;4012:22:28;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:28;-1:-1:-1;;;;;4123:34:28;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:28;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:28;-1:-1:-1;;;;;7354:228:28;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:28;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:28;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:28;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:28;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:28;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:28;-1:-1:-1;;;;;6678:219:28;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:28;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:28;;:::i;1364:91:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;10221:112:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:28;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:28;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:28;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:28;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:28;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:28;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:28;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:28;-1:-1:-1;;;;;6338:204:28;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:28;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;10054:96:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:28;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:28;-1:-1:-1;;;;;7027:196:28;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:28;;;:::i;6106:102::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6169:25:28;:32;;-1:-1:-1;;;;6169:32:28;-1:-1:-1;;;6169:32:28;;;6106:102::o;7354:228::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7443:26:28;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:28;;-1:-1:-1;;;;;;7497:29:28;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:28;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:28;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:28;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:28;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:28;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:28;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:28;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:28;;:33;;-1:-1:-1;;;;;9116:12:28;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:28;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:28;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:28;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:28;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:28;4950:91;:::o;6678:219::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6766:14:28;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:28;;-1:-1:-1;;;;;;6820:25:28;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5977:17:28;:24;;-1:-1:-1;;;;5977:24:28;-1:-1:-1;;;5977:24:28;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:28;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;10221:112:28:-;10301:25;;-1:-1:-1;;;10301:25:28;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:28;;;;;9711:92::o;9448:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;9546:35:28;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:28;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:28;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5603:18:28;:25;;-1:-1:-1;;;;5603:25:28;-1:-1:-1;;;5603:25:28;;;5553:82::o;6338:204::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6424:13:28;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:28;;-1:-1:-1;;;;;;6467:24:28;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5792:18:28;:25;;-1:-1:-1;;;;5792:25:28;-1:-1:-1;;;5792:25:28;;;5741:83::o;2169:95:23:-;2242:15;;2169:95;:::o;10054:96:28:-;10126:17;;-1:-1:-1;;;10126:17:28;;;;;10054:96::o;7027:196::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7108:18:28;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:28;;-1:-1:-1;;;;;;7154:21:28;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:28;;;;;9882:93::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;1982:201:5:-;2107:68;;;-1:-1:-1;;;;;2107:68:5;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:5;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:6;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:5;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","srcmap":"1939:14907:29:-;;;1122:66:23;1272:58;;4758:506:29;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:29;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:29;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:29;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:29;:26;;;;-1:-1:-1;4995:11:29;:33;;-1:-1:-1;;;;;4995:33:29;;;-1:-1:-1;;;;;;4995:33:29;;;;;;;;;-1:-1:-1;5083:18:29;:28;;;:35;;-1:-1:-1;;5083:35:29;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:29;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:29;-1:-1:-1;;;;;;16070:136:29;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:29;-1:-1:-1;;;;;13314:334:29;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;-1:-1:-1;6040:1806:29;-1:-1:-1;6040:1806:29;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:29;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:29;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:29;;-1:-1:-1;;;;;15695:220:29;;;;;-1:-1:-1;;;;;;15695:220:29;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:29;;-1:-1:-1;7973:1237:29;-1:-1:-1;7973:1237:29;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:29;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:29;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:29;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:29;;-1:-1:-1;9368:1399:29;-1:-1:-1;9368:1399:29;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:29;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:29:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:29;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:29;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:29;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:29;;;:88;;;;-1:-1:-1;6442:35:29;;;6389:88;:142;;;;-1:-1:-1;6497:34:29;;;6389:142;:196;;;;-1:-1:-1;6551:34:29;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:29;6841:25;;-1:-1:-1;6841:25:29;;;;;;;;-1:-1:-1;6841:25:29;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:29;-1:-1:-1;;;;;7084:25:29;-1:-1:-1;;;;;7084:25:29;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:29;;;;;-1:-1:-1;;7084:306:29;;;-1:-1:-1;;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:29;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:29;-1:-1:-1;;;;;7486:10:29;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:29;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:29;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:29;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:29;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:29;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:29;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:29;-1:-1:-1;15069:72:29;-1:-1:-1;15151:23:29;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:29;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:29;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:29;;;-1:-1:-1;;;;;15364:44:29;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:29;;15188:283;;;-1:-1:-1;15487:19:29;;-1:-1:-1;;14990:523:29;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:29;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:29;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:29;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:29;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:29;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:29:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:29;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:29;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:29;;8363:65;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:29;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:29;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:29;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:29;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:29;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:29;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:29;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:29;;;;;-1:-1:-1;;;;;8926:76:29;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:29;:27;;;;;-1:-1:-1;;9075:27:29;;;:::i;:::-;-1:-1:-1;9162:31:29;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:29;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:29:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:29;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:29;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:29;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:29;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:29;;:23;-1:-1:-1;;9801:23:29;:20;:23;;-1:-1:-1;9801:23:29:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:29;;-1:-1:-1;;;10048:18:29;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:29;;:24;-1:-1:-1;;10141:24:29;:21;:24;;-1:-1:-1;10141:24:29:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:29;;-1:-1:-1;;;10187:27:29;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:29;;:34;-1:-1:-1;;10400:34:29;:21;:34;;-1:-1:-1;10400:34:29:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:29;;:34;-1:-1:-1;;10436:34:29;:21;:34;;-1:-1:-1;10436:34:29:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:29;;:29;-1:-1:-1;;10689:29:29;:21;:29;;-1:-1:-1;10689:29:29:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:29;;:29;-1:-1:-1;;10720:29:29;:21;:29;;-1:-1:-1;10720:29:29:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:29;-1:-1:-1;;;;;5399:27:29;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:29;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:29;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:29:-;16622:11;;-1:-1:-1;;;;;16622:11:29;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:29;;;-1:-1:-1;1939:14907:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"wallet.sol:AddressWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:ControllableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:DailyLimitTrait":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032","srcmap":"11411:3455:30:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"11411:3455:30:-;;;;;;;;"},"wallet.sol:GasTopUpLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:LoadLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SelfCallableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SpendLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:Wallet":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032","bin-runtime":"60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032","srcmap":"22209:17557:30:-;;;1122:66:23;1272:58;;24474:430:30;5:2:-1;;;;30:1;27;20:12;5:2;24474:430:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24474:430:30;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;24474:430:30;;;;;;;;;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1543:6:25;:18;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;-1:-1:-1;;;1571:32:25;;;;;;;;;;;;;-1:-1:-1;1687:15:25;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17616:93:30;;;;;;;;17296:10;17616:93;;;;;;;;;17695:3;17616:93;;;;;;-1:-1:-1;17616:93:30;;;;;;;;;;;;;17599:14;:110;;;;;;;;;;;;;;;;;-1:-1:-1;;17599:110:30;;;1341:19:26;:42;;;;20179:20:30;:18;:20::i;:::-;20135:64;;;;;;;;20239:1;20217:19;:23;20209:49;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;;;;19863:5;20288:52;20268:17;:72;;;20363:79;;;;;;;;;;;;;;;;;;;20428:3;20363:79;;;;;;-1:-1:-1;20363:79:30;;;;;;;;;;;;;;20350:10;:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20350:92:30;;;;;;15352:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:11;:73;;;;;;;;;;;;;;;-1:-1:-1;15338:73:30;;;;;;;;-1:-1:-1;24869:12:30;:28;-1:-1:-1;22209:17557:30;;-1:-1:-1;;;;22209:17557:30;2887:206:26;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;;;:32;;:::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;-1:-1:-1;;1731:33:24;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;22209:17557:30:-;;;;;;;","srcmap-runtime":"22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25196:31;;;25205:10;25196:31;;25217:9;25196:31;;;;;;;;;;;;;;;;;22209:17557;30101:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30101:137:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30101:137:30;-1:-1:-1;;;;;;30101:137:30;;:::i;:::-;;;;;;;;;;;;;;;;;;16199:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16199:104:30;;;:::i;:::-;;;;;;;;;;;;;;;;18820:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18820:286:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:286:30;;:::i;:::-;;3896:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:677:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3896:677:30;;:::i;23125:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23125:47:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23125:47:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38146:244:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38146:244:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38146:244:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38146:244:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38146:244:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38146:244:30;;-1:-1:-1;38146:244:30;;-1:-1:-1;;;;;38146:244:30:i;:::-;;;;-1:-1:-1;;;;;;38146:244:30;;;;;;;;;;;;;;;25576:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25576:565:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25576:565:30;;-1:-1:-1;;;;;25576:565:30;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25576:565:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25576:565:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25576:565:30;;-1:-1:-1;25576:565:30;-1:-1:-1;25576:565:30;:::i;21466:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21466:117:30;;;:::i;28299:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28299:344:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28299:344:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28299:344:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28299:344:30;;-1:-1:-1;28299:344:30;-1:-1:-1;28299:344:30;:::i;3173:94:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3173:94:25;;;:::i;16806:179:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16806:179:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16806:179:30;;:::i;18606:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18606:106:30;;;:::i;3082:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3082:38:30;;;:::i;8300:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8300:124:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8300:124:30;;;;;;;;;;;;;;;;;2898:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2898:44:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2898:44:30;-1:-1:-1;;;;;2898:44:30;;:::i;29093:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29093:943:30;;-1:-1:-1;;;;;29093:943:30;;;;;;:::i;20579:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20579:233:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20579:233:30;;:::i;15817:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15817:161:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15817:161:30;;:::i;35929:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35929:1934:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;35929:1934:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;35929:1934:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35929:1934:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35929:1934:30;;-1:-1:-1;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30:i;26493:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26493:1111:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26493:1111:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26493:1111:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26493:1111:30;;-1:-1:-1;26493:1111:30;-1:-1:-1;26493:1111:30;:::i;8121:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8121:126:30;;;:::i;5523:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5523:1117:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5523:1117:30;;:::i;16023:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16023:119:30;;;:::i;10340:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10340:673:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10340:673:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10340:673:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10340:673:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10340:673:30;;-1:-1:-1;10340:673:30;-1:-1:-1;10340:673:30;:::i;3543:306:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:306:25;;;:::i;19233:304:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19233:304:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19233:304:30;;:::i;28706:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:91:30;;;:::i;1364::24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;18028:125:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:125:30;;;:::i;9505:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9505:711:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9505:711:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9505:711:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9505:711:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9505:711:30;;-1:-1:-1;9505:711:30;-1:-1:-1;9505:711:30;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;3932:85:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:85:25;;;:::i;27713:87:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27713:87:30;;;:::i;16562:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16562:100:30;;;:::i;31175:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31175:2016:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31175:2016:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31175:2016:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31175:2016:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31175:2016:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31175:2016:30;;-1:-1:-1;31175:2016:30;;-1:-1:-1;;;;;31175:2016:30:i;21796:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:145:30;;;:::i;20927:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20927:251:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20927:251:30;;:::i;2247:809:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2247:809:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2247:809:25;;-1:-1:-1;;;;;2247:809:25;;;;;;;;:::i;33378:550:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33378:550:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33378:550:30;;-1:-1:-1;;;;;33378:550:30;;;;;;:::i;16359:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16359:147:30;;;:::i;3169:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:26:30;;;:::i;38667:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38667:1097:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38667:1097:30;;;;;;;;;;;;;;;;;:::i;21639:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21639:102:30;;;:::i;6709:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6709:1358:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6709:1358:30;;:::i;18215:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:110:30;;;:::i;23739:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23739:25:30;;;:::i;11082:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11082:145:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11082:145:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11082:145:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11082:145:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:145:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11082:145:30;;-1:-1:-1;11082:145:30;;-1:-1:-1;;;;;11082:145:30:i;4641:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:659:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4641:659:30;;:::i;2948:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:31:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2948:31:30;;:::i;22008:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:98:30;;;:::i;3126:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3126:37:30;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;30418:425:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30418:425:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30418:425:30;;:::i;15480:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:180:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15480:180:30;;:::i;34129:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34129:1540:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34129:1540:30;;-1:-1:-1;;;;;34129:1540:30;;;;;;:::i;21239:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21239:177:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21239:177:30;;:::i;17783:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17783:189:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17783:189:30;;:::i;8555:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:827:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8555:827:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8555:827:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8555:827:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8555:827:30;;-1:-1:-1;8555:827:30;-1:-1:-1;8555:827:30;:::i;18386:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18386:153:30;;;:::i;30101:137::-;-1:-1:-1;;;;;;;;;30195:36:30;;;30101:137;;;;:::o;16199:104::-;16277:19;;16199:104;;:::o;18820:286::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;18934:7;17364:8;18906:35;;:74;;;;;17296:10;18945:7;:35;;18906:74;18898:106;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;;;;19014:33;:14;19039:7;19014:33;:24;:33;:::i;:::-;19062:37;;;19079:10;19062:37;;;;;;;;;;;;;;;;;;;;;18820:286;:::o;3896:677::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4043:26;;;;4035:60;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;;;;4217:40;4231:25;4217:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4217:40:30;;;-1:-1:-1;4217:40:30;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4208:5;:49;4200:97;;;;-1:-1:-1;;;4200:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:32;4350:25;;4343:32;:::i;:::-;4432:26;:34;;-1:-1:-1;;4432:34:30;;;4521:45;;;4548:10;4521:45;;;;;;;;;;;;;;;;;;;;;3896:677;:::o;23125:47::-;;;;;;;;;;;;;-1:-1:-1;;;23125:47:30;;;;;:::o;38146:244::-;38239:6;;38272:31;:11;38292:10;38272:31;:19;:31;:::i;:::-;38257:46;;38321:14;38330:4;38321:8;:14::i;:::-;38313:44;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38146:244:30;;;;;:::o;25576:565::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;25745:19;25737:52;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;;;;25866:9;25861:229;25881:18;;;25861:229;;;25920:14;25937:35;25954:4;25961:7;;25969:1;25961:10;;;;;;;;;;;;;-1:-1:-1;;;;;25961:10:30;25937:8;:35::i;:::-;25920:52;;26046:33;26055:3;26060:7;;26068:1;26060:10;;;;;;;;;;;;;-1:-1:-1;;;;;26060:10:30;26072:6;26046:8;:33::i;:::-;-1:-1:-1;25901:3:30;;25861:229;;;-1:-1:-1;26105:29:30;;;-1:-1:-1;;;;;26105:29:30;;;;;;;;;;;;;;;;;;;26121:3;;26126:7;;;;26105:29;;;;;26126:7;;26105:29;;;26126:7;26105:29;1:33:-1;99:1;81:16;;;74:27;26105:29:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26105:29:30;;;;-1:-1:-1;26105:29:30;;-1:-1:-1;;;;;26105:29:30;25576:565;;;:::o;21466:117::-;21519:7;21545:31;:10;:29;:31::i;:::-;21538:38;;21466:117;:::o;28299:344::-;28397:6;28415:16;28461:5;;28444:23;;;;;;;30:3:-1;22:6;14;1:33;28444:23:30;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28444:23:30;;;28434:34;;49:4:-1;28434:34:30;;;;-1:-1:-1;28541:38:30;;;;;;;;;;;;;;;;;28434:34;;-1:-1:-1;;;;;;28541:38:30;;-1:-1:-1;28434:34:30;;-1:-1:-1;28568:10:30;;-1:-1:-1;28541:38:30;;;;;;28568:10;28541:38;;28568:10;28541:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28541:16:30;;-1:-1:-1;;;28541:38:30:i;:::-;-1:-1:-1;;;;;;28541:51:30;;28533:77;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;28627:9:30;-1:-1:-1;;;;;28299:344:30:o;3173:94:25:-;3245:15;;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;16806:179:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;16890:39;:11;16921:7;16890:39;:30;:39;:::i;:::-;16944:34;;;;;;;;;;;;;;;;;16806:179;:::o;18606:106::-;18685:14;:20;18606:106;:::o;3082:38::-;;;;;;:::o;8300:124::-;8358:16;8393:24;8386:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8386:31:30;;;-1:-1:-1;8386:31:30;;;;;;;;;;;;;;;;;;;8300:124;:::o;2898:44::-;;;;;;;;;;;;;;;:::o;29093:943::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;29269:24;29286:6;29269:16;:24::i;:::-;29261:55;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;;;;29379:23;29405:36;29425:6;29433:7;29405:19;:36::i;:::-;29379:62;-1:-1:-1;29571:41:30;:10;29379:62;29571:41;:24;:41;:::i;:::-;29669:22;29694:25;29706:12;;29694:11;:25::i;:::-;29669:50;-1:-1:-1;;;;;;29733:20:30;;;29729:253;;29769:50;-1:-1:-1;;;;;29769:25:30;;29795:14;29811:7;29769:25;:50::i;:::-;29833:46;;;-1:-1:-1;;;29833:46:30;;-1:-1:-1;;;;;29833:46:30;;;;;;;;;;;;;;;:29;;;;;;:46;;;;;-1:-1:-1;;29833:46:30;;;;;;;;-1:-1:-1;29833:29:30;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;29833:46:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29833:46:30;;;;29729:253;;;29910:61;;;-1:-1:-1;;;29910:61:30;;-1:-1:-1;;;;;29910:61:30;;;;;;;;;;;;;;;:29;;;;;;29946:7;;29910:61;;;;;-1:-1:-1;;29910:61:30;;;;;;;29946:7;29910:29;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;29910:61:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29910:61:30;;;;;29729:253;29997:32;;;-1:-1:-1;;;;;29997:32:30;;;;;;;;;;;;;;;;;;;;;;;2129:1;;29093:943;;:::o;20579:233::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;20672:17;;20661:7;:28;;20653:65;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;;;;20728:29;:10;20749:7;20728:29;:20;:29;:::i;:::-;20772:33;;;20785:10;20772:33;;;;;;;;;;;;;;;;;;;;;20579:233;:::o;15817:161::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;15892:30;:11;15914:7;15892:30;:21;:30;:::i;:::-;15937:34;;;15951:10;15937:34;;;;;;;;;;;;;;;;;;;;;15817:161;:::o;35929:1934::-;36047:12;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;36266:26:30;;;;;;:12;:26;;;;;;;;36261:91;;36308:33;:11;36334:6;36308:33;:25;:33;:::i;:::-;36453:34;-1:-1:-1;;;;;36453:32:30;;;:34::i;:::-;:69;;;;;36491:31;36509:12;36491:17;:31::i;:::-;36449:1098;;;36625:10;36649:14;36692:48;36720:12;36734:5;36692:27;:48::i;:::-;-1:-1:-1;;;;;36759:16:30;;;;;;:12;:16;;;;;;;;-1:-1:-1;36677:63:30;-1:-1:-1;36759:16:30;;36754:335;;36962:18;36983:36;36998:12;37012:6;36983:14;:36::i;:::-;36962:57;-1:-1:-1;37037:37:30;:11;36962:57;37037:37;:25;:37;:::i;:::-;36754:335;;37238:45;-1:-1:-1;;;;;37238:38:30;;37277:5;37238:38;:45::i;:::-;37404:13;;;37414:2;37404:13;;;;;;;;;37387:14;;37404:13;;;21:6:-1;;104:10;37404:13:30;87:34:-1;135:17;;-1:-1;37404:13:30;37387:30;;37439:4;37431:12;;:1;37433:2;37431:5;;;;;;;;-1:-1:-1;;;;;;37431:12:30;;;;;;;;;:5;;;:12;-1:-1:-1;37463:51:30;;;-1:-1:-1;;;;;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37483:12;;37497:6;;37505:5;;37512:1;;37463:51;;;;;-1:-1:-1;37463:51:30;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37463:51:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37535:1;-1:-1:-1;37528:8:30;;-1:-1:-1;;37528:8:30;36449:1098;37558:12;37572:23;37599:12;-1:-1:-1;;;;;37599:17:30;37623:6;37631:5;37599:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37599:38:30;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37557:80:30;;;;37655:7;37671:10;37647:36;;;;;-1:-1:-1;;;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;-1:-1:-1;;;;;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37719:12;;37733:6;;37741:5;;37748:10;;37699:60;;;;;-1:-1:-1;37699:60:30;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37846:10;-1:-1:-1;;2129:1:30;35929:1934;;;;;:::o;26493:1111::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;26954:63:30;;-1:-1:-1;;;26954:63:30;;;;;;26846:9;26954:63;;;;;;26996:4;26954:63;;;;;;;;;;;;;;26846:9;;26797:10;;26944:99;;26846:9;;26996:4;;27003:6;;27011:5;;;;26954:63;;27011:5;;;;26954:63;1:33:-1;57:3;49:6;45:16;35:26;;26954:63:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26954:63:30;;;26944:74;;;;;;:97;:99::i;:::-;27119:38;;;;;;;;;;;;;;;;;;;;;;26925:118;;-1:-1:-1;;;;27161:9:30;27119:38;;26925:118;;27119:38;27146:10;;;;;;27119:38;;27146:10;;;;27119:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;27119:16:30;;-1:-1:-1;;;27119:38:30:i;:::-;-1:-1:-1;;;;;;27119:51:30;;27111:77;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;;;;27301:10;;27291:6;:20;27283:42;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;;;;27335:21;:19;:21::i;:::-;27465:25;;27424:12;;27438:23;;27473:4;;27484:5;;;;27465:25;27484:5;;;;27465:25;1:33:-1;27465:25:30;;45:16:-1;;;-1:-1;27465:25:30;;-1:-1:-1;27465:25:30;;-1:-1:-1;;27465:25:30;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27423:67:30;;;;27508:7;27524:10;27500:36;;;;;-1:-1:-1;;;27500:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27:10;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27500:36:30;;27552:45;27579:5;;27586:10;27552:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27552:45:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27552:45:30;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27552:45:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:1:23;;;;26493:1111:30;;;;;:::o;8121:126::-;8180:16;8215:25;8208:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8208:32:30;;;;;;;;;-1:-1:-1;8208:32:30;;;;;;;;;;;;;;;;;8121:126;:::o;5523:1117::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;5681:26:30;;;;5673:60;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;;;;5855:40;5869:25;5855:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5855:40:30;;;;;;;;;-1:-1:-1;5855:40:30;;;;;;;;;;;;;;;:13;:40::i;:::-;5846:5;:49;5838:97;;;;-1:-1:-1;;;5838:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:9;5985:383;6009:25;:32;6005:36;;5985:383;;;6117:12;:42;6130:25;6156:1;6130:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6130:28:30;6117:42;;;;;;;;;;;;;;;6112:246;;6272:4;6227:12;:42;6240:25;6266:1;6240:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6240:28:30;6227:42;;;;;;;;;;;;:49;;-1:-1:-1;;6227:49:30;;;;;;;;;;6314:25;:28;;6294:14;;6314:25;6340:1;;6314:28;;;;;;;;;;;;;;;;;;;27:10:-1;;6314:28:30;23:18:-1;;45:23;;6294:49:30;;;;;;;;;;-1:-1:-1;;;;;;6294:49:30;-1:-1:-1;;;;;6314:28:30;;;6294:49;;;;;;6112:246;6043:3;;5985:383;;;-1:-1:-1;6418:55:30;;;6435:10;6418:55;;;;;;;;;6447:25;6418:55;;;;;;;;;;6435:10;;6447:25;;6418:55;;;;;;;6447:25;;6418:55;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6418:55:30;;;-1:-1:-1;6418:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;6519:32;6526:25;;6519:32;:::i;:::-;-1:-1:-1;6599:26:30;:34;;-1:-1:-1;;6599:34:30;;;5523:1117::o;16023:119::-;16077:7;16103:32;:11;:30;:32::i;10340:673::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:14;;;;;;;10517:52;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;;;;10647:21;10639:49;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;;;;10766:37;:24;10793:10;;10766:37;:::i;:::-;-1:-1:-1;10857:25:30;:32;;-1:-1:-1;;10857:32:30;;;;;10980:25;;;;;;;;;;;;;;;;;;10942:64;;10968:10;;;;10980:25;;10968:10;;;;;;10980:25;;;10968:10;;10980:25;10968:10;10980:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10980:13:30;;-1:-1:-1;;;10980:25:30:i;:::-;10942:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10942:64:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10942:64:30;;;;-1:-1:-1;10942:64:30;;-1:-1:-1;;;;;10942:64:30;10340:673;;:::o;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:6;:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;-1:-1:-1;3802:40:25;;;;;;;;;;;;;;;;;;;;3543:306::o;19233:304:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;19356:7;17364:8;19328:35;;:74;;;;;17296:10;19367:7;:35;;19328:74;19320:106;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;;;;19436:42;:14;19470:7;19436:42;:33;:42;:::i;:::-;19493:37;;;;;;;;;;;;;;;;;19233:304;:::o;28706:91::-;28778:12;;28706:91;:::o;1364::24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;;1364:91::o;18028:125:30:-;18085:7;18111:35;:14;:33;:35::i;9505:711::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;;;;;;;;3437:8;:23::i;:::-;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3509:13;;3534:1;;3509:10;;3520:1;;3509:13;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;9727:14:30;;;;;;;9719:52;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;;;;9842:21;9834:49;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;;;;9966:38;:25;9994:10;;9966:38;:::i;:::-;-1:-1:-1;10058:26:30;:33;;-1:-1:-1;;10058:33:30;10087:4;10058:33;;;10183:25;;;;;;;;;;;;;;;;;;10144:65;;10171:10;;;;10183:25;;10171:10;;;;;;10183:25;;;10171:10;;10183:25;10171:10;10183:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10183:13:30;;-1:-1:-1;;;10183:25:30:i;:::-;10144:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10144:65:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10144:65:30;;;;-1:-1:-1;10144:65:30;;-1:-1:-1;;;;;10144:65:30;3834:1;9505:711;;:::o;1514:105:26:-;1593:19;;1514:105;:::o;3932:85:25:-;4004:6;;-1:-1:-1;;;;;4004:6:25;;3932:85::o;27713:87:30:-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;27772:21:30;:19;:21::i;:::-;27713:87::o;16562:100::-;16638:11;:17;16562:100;:::o;31175:2016::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;31295:24;;31322:2;31295:29;;;;:24;31273:19;;;31723:17;31764:1421;31777:11;31771:3;:17;31764:1421;;;31937:28;:20;31962:2;31937:28;:24;:28;:::i;:::-;32151:27;;;32145:34;;32312:2;32280:36;;32274:43;32533:2;32501:36;;;32495:43;;31914:51;;-1:-1:-1;32141:2:30;32137:43;;;;;-1:-1:-1;32274:43:30;;-1:-1:-1;32495:43:30;;-1:-1:-1;32501:36:30;-1:-1:-1;32709:27:30;32733:2;32709:19;32174:3;32495:43;32709:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32703:33;;32856:11;32849:3;:18;;32841:44;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;;;;32956:15;32952:70;;-1:-1:-1;32998:9:30;;;;;;;;;-1:-1:-1;32998:9:30;;32952:70;33130:44;33149:11;33162:5;33169:4;33130:18;:44::i;:::-;;31764:1421;;;2129:1;;;;;;;31175:2016;:::o;21796:145::-;21893:41;;;;21796:145;:::o;20927:251::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;21029:17;;21018:7;:28;;21010:65;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;;;;21085:38;:10;21115:7;21085:38;:29;:38;:::i;:::-;21138:33;;;;;;;;;;;;;;;;;20927:251;:::o;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;33378:550:30:-;33456:7;33545:17;33564:12;33578:14;33602:21;33616:6;33602:13;:21::i;:::-;33542:81;;;;;;;;;;33703:9;33699:205;;;33736:9;33728:28;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;;;;33861:32;33883:9;33861:17;:7;33873:4;33861:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;33854:39;;;;;;;33699:205;-1:-1:-1;33920:1:30;;33378:550;-1:-1:-1;;;;;33378:550:30:o;16359:147::-;16457:42;;;;16359:147;:::o;3169:26::-;;;;;;;;;:::o;38667:1097::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;38772:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38860:17:30;;38852:43;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38984:17:30;;;;;;:12;:17;;;;;;;;38979:584;;39101:7;-1:-1:-1;;;;;39205:20:30;;;39201:103;;39258:31;39273:6;39281:7;39258:14;:31::i;:::-;39245:44;;39201:103;39515:37;:11;39541:10;39515:37;:25;:37;:::i;:::-;38979:584;;39638:35;39652:3;39657:6;39665:7;39638:13;:35::i;:::-;39724:33;;;-1:-1:-1;;;;;39724:33:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;38667:1097;;;:::o;21639:102::-;21716:18;;21639:102;:::o;6709:1358::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;6896:25:30;;;;;;;6888:59;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;;;;7068:39;7082:24;7068:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7068:39:30;;;;;;;;;-1:-1:-1;7068:39:30;;;;;;;;;;;;;;;:13;:39::i;:::-;7059:5;:48;7051:96;;;;-1:-1:-1;;;7051:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:9;7194:601;7218:24;:31;7214:35;;7194:601;;;7308:12;:41;7321:24;7346:1;7321:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7321:27:30;7308:41;;;;;;;;;;;;;;;7304:481;;;7413:5;7369:12;:41;7382:24;7407:1;7382:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7382:27:30;7369:41;;;;;;;;;;;;:49;;-1:-1:-1;;7369:49:30;;;;;;;;;;;7436:294;7460:14;:21;:28;;7486:1;7460:28;:25;:28;:::i;:::-;7456:1;:32;7436:294;;;7542:24;7567:1;7542:27;;;;;;;;;;;;;;;;;;7521:14;:17;;-1:-1:-1;;;;;7542:27:30;;;;7536:1;;7521:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:17:30;:48;7517:195;;;7617:14;7632:21;;-1:-1:-1;;7632:25:30;;;7617:41;;;;;;;;;;;;;;;;7597:14;:17;;-1:-1:-1;;;;;7617:41:30;;;;7612:1;;7597:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;7597:61:30;-1:-1:-1;;;;;7597:61:30;;;;;;;;;;7684:5;;7517:195;7490:3;;7436:294;;;-1:-1:-1;7747:14:30;:23;;;;;-1:-1:-1;;7747:23:30;;;:::i;:::-;;7304:481;7251:3;;7194:601;;;-1:-1:-1;7844:58:30;;;7865:10;7844:58;;;;;;;;;7877:24;7844:58;;;;;;;;;;7865:10;;7877:24;;7844:58;;;;;;;7877:24;;7844:58;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7844:58:30;;;-1:-1:-1;7844:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;7948:31;7955:24;;7948:31;:::i;:::-;-1:-1:-1;8027:25:30;:33;;-1:-1:-1;;8027:33:30;;;6709:1358::o;18215:110::-;18296:22;;18215:110;:::o;23739:25::-;;;;:::o;11082:145::-;11155:7;11208:10;11191:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11191:28:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11191:28:30;;;11181:39;;;;;;11174:46;;11082:145;;;:::o;4641:659::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4787:25;;;;;;;4779:59;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;;;;4959:39;4973:24;4959:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4959:39:30;;;;;;;;;-1:-1:-1;4959:39:30;;;;;;;;;;;;;;;:13;:39::i;:::-;4950:5;:48;4942:96;;;;-1:-1:-1;;;4942:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:31;5091:24;;5084:31;:::i;:::-;5161:25;:33;;-1:-1:-1;;5161:33:30;;;5249:44;;;5275:10;5249:44;;;;;;;;;;;;;;;;;;;;;4641:659;:::o;2948:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2948:31:30;;-1:-1:-1;2948:31:30;:::o;22008:98::-;22083:10;:16;22008:98;:::o;3126:37::-;;;;;;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;30418:425:30:-;30472:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;30633:37;:14;30662:7;30633:37;:28;:37;:::i;:::-;30717:7;:5;:7::i;:::-;:25;;-1:-1:-1;;;;;30717:16:30;;;;;:25;;;;;30734:7;;30717:25;;;;30734:7;30717:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30717:25:30;30795:41;30807:10;30819:7;:5;:7::i;:::-;30795:41;;;-1:-1:-1;;;;;30795:41:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30418:425;;:::o;15480:180::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;15564:40:30;:11;15596:7;15564:40;:31;:40;:::i;34129:1540::-;34212:7;34342:13;:11;:13::i;:::-;-1:-1:-1;;;;;34332:23:30;;;;;;34328:68;;;-1:-1:-1;34378:7:30;34371:14;;34328:68;34428:7;-1:-1:-1;;;;;34482:20:30;;;34478:600;;34654:17;34673:12;34687:14;34711:21;34725:6;34711:13;:21::i;:::-;34651:81;;;;;;;;;;34843:9;34835:41;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;;;;34898:9;34890:28;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;;;;35035:32;35057:9;35035:17;:7;35047:4;35035:17;:11;:17;:::i;:32::-;35020:47;;34478:600;;;;35195:27;35224:22;35248:24;35282:20;:18;:20::i;:::-;35192:110;;;;;;;;;;35368:19;35360:51;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;;;;35429:19;35421:49;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;;;;35605:57;35647:14;35605:37;:12;35622:19;35605:37;:16;:37;:::i;:57::-;35598:64;34129:1540;-1:-1:-1;;;;;;;34129:1540:30:o;21239:177::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;21322:39:30;:10;21353:7;21322:39;:30;:39;:::i;17783:189::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;17870:43:30;:14;17905:7;17870:43;:34;:43;:::i;8555:827::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;8657:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;3437:23;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3509:13;;3534:1;;3509:10;;3520:1;;3509:13;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;8752:14:30;;;;;;;8751:15;8743:49;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;;;;8871:9;8866:384;8886:21;;;8866:384;;;8996:12;:27;9009:10;;9020:1;9009:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9009:13:30;8996:27;;-1:-1:-1;8996:27:30;;;;;;;;-1:-1:-1;8996:27:30;;;;8991:249;;9122:4;9092:12;:27;9105:10;;9116:1;9105:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9105:13:30;9092:27;;-1:-1:-1;9092:27:30;;;;;;;;-1:-1:-1;9092:27:30;:34;;-1:-1:-1;;9092:34:30;;;;;;;;;;9191:14;9211:10;;9222:1;9211:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9191:34:30;;;9211:13;9191:34;;;;;;;-1:-1:-1;;;;;;9191:34:30;-1:-1:-1;;;;;9211:13:30;;;;;;;;;;9191:34;;;;;;-1:-1:-1;8991:249:30;8909:3;;8866:384;;;-1:-1:-1;9259:14:30;:21;;-1:-1:-1;;9259:21:30;;;;;9331:44;;;9348:10;9331:44;;;;;;;;;9360:14;9331:44;;;;;;;;;;9348:10;;9360:14;;9331:44;;;;;;;9360:14;;9331:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9331:44:30;;;-1:-1:-1;9331:44:30;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;8555:827;;:::o;18386:153::-;18487:45;;;;18386:153;:::o;4123:107:25:-;4217:6;;-1:-1:-1;;;;;4205:18:25;;;4217:6;;4205:18;;4123:107::o;13567:401:30:-;13718:35;;;;;;13717:36;13709:66;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;;;;13844:27;13857:4;13863:7;13844:12;:27::i;:::-;-1:-1:-1;13919:35:30;;:42;;-1:-1:-1;;13919:42:30;13957:4;13919:42;;;13567:401::o;2332:158:23:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;2419:64;;;-1:-1:-1;;;2419:64:23;;-1:-1:-1;;;;;2419:64:23;;;;;;;;;:54;;;;;;;:64;;;;;;;;;;;;;;;:54;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;;-1:-1:-1;;;;;;;2387:1891:2:o;1207:245:21:-;1282:7;-1:-1:-1;;;;;1305:20:21;;;1301:145;;1348:33;;;-1:-1:-1;;;1348:33:21;;-1:-1:-1;;;;;1348:33:21;;;;;;;;;:23;;;;;;:33;;;;;;;;;;;;;;;:23;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1348:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:21;;-1:-1:-1;1341:40:21;;1301:145;-1:-1:-1;;;;;;1419:16:21;;;1412:23;;12652:240:30;12757:19;;;;12728:7;;12757:33;;12781:8;12757:33;:23;:33;:::i;:::-;12751:3;:39;12747:139;;;-1:-1:-1;12813:10:30;;12806:17;;12747:139;-1:-1:-1;12861:14:30;;;;12854:21;;14103:317;14254:35;;;;;;14246:73;;;;;-1:-1:-1;;;14246:73:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:12;;;;:22;14103:317::o;5161:156:26:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:26;;5161:156;-1:-1:-1;;;;;;;;5161:156:26:o;12192:288:30:-;12328:27;12350:4;12328:21;:27::i;:::-;12391:7;12373:4;:14;;;:25;;12365:54;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;;;;12446:14;;;;:27;;12465:7;12446:27;:18;:27;:::i;:::-;12429:4;:14;;:44;;;;12192:288;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;-1:-1:-1;;1731:33:24;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;4644:159:26:-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:26;;4644:159;-1:-1:-1;;;;;;;;4644:159:26:o;4305:241::-;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;4442:97;;;-1:-1:-1;;;4442:97:26;;-1:-1:-1;;;;;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;:76;;;;;;;4519:12;;4533:5;;4442:97;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:26;;;;;;;;;;;-1:-1:-1;4305:241:26;-1:-1:-1;;;4305:241:26:o;3757:1095:5:-;4352:27;-1:-1:-1;;;;;4352:25:5;;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;27876:128:30:-;27926:10;:12;;;;;;;;27954:43;;;27974:10;27954:43;;;;;;;;;;;;;;;;;;;;;27876:128::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;2306:66;;;-1:-1:-1;;;2306:66:26;;-1:-1:-1;;;;;2306:66:26;;;;;;;;;:62;;;;;;;:66;;;;;-1:-1:-1;;2306:66:26;;;;;;;;:62;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;285:43;;;-1:-1;;;;;244:29;;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;;;;;;;;:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:26;:40::i;11749:338:30:-;11934:7;11918:4;:12;;;:23;11910:70;;;;-1:-1:-1;;;11910:70:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12048:32;12061:4;12067;:12;;;12048;:32::i;:::-;11749:338;;:::o;5436:141:26:-;5482:7;5524:32;5536:19;;5524:11;:32::i;:::-;-1:-1:-1;;;;;5508:60:26;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5508:62:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5508:62:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5508:62:26;;-1:-1:-1;5436:141:26;:::o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;285:43;;;-1:-1;;;;;244:29;;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;13038:425:30:-;13172:27;13194:4;13172:21;:27::i;:::-;13264:20;;;13376:14;;;;:27;-1:-1:-1;13372:85:30;;;13436:10;;13419:14;;;:27;13038:425;;:::o;14494:370::-;14578:19;;;;:33;;14602:8;14578:33;:23;:33;:::i;:::-;14572:3;:39;14568:290;;;14694:3;14672:19;;;:25;14795:10;;14778:14;;;:27;14824:23;;;;14795:10;;14824:23;14568:290;14494:370;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;-1:-1:-1;;;;;22209:17557:30;;;;;;;;;;;-1:-1:-1;22209:17557:30;;;;;;;-1:-1:-1;22209:17557:30;;;-1:-1:-1;22209:17557:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;;;-1:-1:-1;22209:17557:30;;"},"walletCache.sol:IWalletCache":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"walletCache.sol:WalletCache":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032a265627a7a723158205d913b62084d26757d50822529c7c40b09c9ceaa3ed83439bb340ec274648b3964736f6c63430005110032","bin-runtime":"60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032a265627a7a723158205d913b62084d26757d50822529c7c40b09c9ceaa3ed83439bb340ec274648b3964736f6c63430005110032","srcmap":"1150:3249:31:-;;;1122:66:23;1272:58;;1397:66:31;1805:50;;1563:66;1861:65;;1732:66;1932:65;;2290:820;5:2:-1;;;;30:1;27;20:12;5:2;2290:820:31;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2290:820:31;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;2290:820:31;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;2578:3:31;:11;;-1:-1:-1;;;;;;2578:11:31;-1:-1:-1;;;;;2578:11:31;;;;;2599:17;:39;;;2695:27;;2691:85;;2738:11;:27;;;2691:85;2838:34;;2834:106;;2888:18;:41;;;2834:106;3002:34;;2998:106;;3052:18;:41;;;2998:106;2290:820;;;;;;1150:3249;;;;;;","srcmap-runtime":"1150:3249:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1150:3249:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:18;;;:::i;:::-;;;;-1:-1:-1;;;;;2040:18:31;;;;;;;;;;;;;;3337:473;;;:::i;:::-;;4291:106;;;:::i;:::-;;;;;;;;;;;;;;;;1805:50;;;:::i;1364:91:24:-;;;:::i;1861:65:31:-;;;:::i;1932:::-;;;:::i;3954:274::-;;;:::i;2064:32::-;;;:::i;2169:95:23:-;;;:::i;2004:29:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2004:29:31;;:::i;2040:18::-;;;-1:-1:-1;;;;;2040:18:31;;:::o;3337:473::-;3479:13;3535:31;3547:18;;3535:11;:31::i;:::-;3600:3;;3617:18;;3582:4;;-1:-1:-1;;;;;3600:3:31;;3649:16;:14;:16::i;:::-;3679:11;;3704:17;;3495:236;;;;;:::i;:::-;-1:-1:-1;;;;;3495:236:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3495:236:31;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;3741:13:31;27:10:-1;;39:1;23:18;;45:23;;-1:-1;3741:26:31;;;;;;;;-1:-1:-1;;;;;3741:26:31;;-1:-1:-1;;;;;;3741:26:31;;;;;;;;3783:20;;;;;;;3479:252;;-1:-1:-1;3783:20:31;;;;;;3741:26;3783:20;;;3337:473;:::o;4291:106::-;4370:13;:20;4291:106;:::o;1805:50::-;;;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;1861:65:31:-;;;;:::o;1932:::-;;;;:::o;3954:274::-;4017:6;3178:31;3190:18;;3178:11;:31::i;:::-;-1:-1:-1;;;;;3164:45:31;:10;-1:-1:-1;;;;;3164:45:31;;3156:87;;;;;-1:-1:-1;;;3156:87:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;4039:13;:20;4062:1;-1:-1:-1;4035:68:31;;;4079:13;:11;:13::i;:::-;4129;4143:20;;4113:13;;4129;-1:-1:-1;;4143:24:31;;;4129:39;;;;;;;;;;;;;;;;4178:13;:19;;-1:-1:-1;;;;;4129:39:31;;;;-1:-1:-1;4178:13:31;:19;;;;;;;;;;;;;;-1:-1:-1;;4178:19:31;;;;;-1:-1:-1;;;;;;4178:19:31;;;;;;4215:6;-1:-1:-1;3954:274:31;:::o;2064:32::-;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;2004:29:31:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2004:29:31;;-1:-1:-1;2004:29:31;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;1150:3249:31:-;;;;;;;;:::o"}},"sourceList":["controller.sol","externals/Address.sol","externals/ECDSA.sol","externals/ERC165.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/balanceable.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","licence.sol","tokenWhitelist.sol","wallet.sol","walletCache.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[2976],"IController":[2541]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2524,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":3992,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2977,"symbolAliases":[null],"unitAlias":""},"id":2525,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":4249,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2977,"symbolAliases":[null],"unitAlias":""},"id":2526,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[2541],"name":"IController","scope":2977},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":2541,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2533,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2527,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":2528,"name":"VariableDeclaration","src":"1015:7:0"}],"id":2529,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2533,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2530,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":2531,"name":"VariableDeclaration","src":"1047:4:0"}],"id":2532,"name":"ParameterList","src":"1046:6:0"}],"id":2533,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":2541,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2540,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2534,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":2535,"name":"VariableDeclaration","src":"1076:7:0"}],"id":2536,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2540,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2537,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":2538,"name":"VariableDeclaration","src":"1108:4:0"}],"id":2539,"name":"ParameterList","src":"1107:6:0"}],"id":2540,"name":"FunctionDefinition","src":"1059:55:0"}],"id":2541,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[2541,3991,4248],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[2976,4248,3991,2541],"name":"Controller","scope":2977},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":2541,"type":"contract IController"},"id":2542,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":2543,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3991,"type":"contract Ownable"},"id":2544,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":2545,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4248,"type":"contract Transferrable"},"id":2546,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":2547,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2553,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2548,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":2549,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":2553,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2550,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":2551,"name":"VariableDeclaration","src":"1564:19:0"}],"id":2552,"name":"ParameterList","src":"1546:38:0"}],"id":2553,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2554,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":2555,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":2559,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2556,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":2557,"name":"VariableDeclaration","src":"1631:19:0"}],"id":2558,"name":"ParameterList","src":"1613:38:0"}],"id":2559,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2565,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2560,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":2561,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":2565,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2562,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":2563,"name":"VariableDeclaration","src":"1692:14:0"}],"id":2564,"name":"ParameterList","src":"1674:33:0"}],"id":2565,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2566,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":2567,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":2571,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2568,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":2569,"name":"VariableDeclaration","src":"1749:14:0"}],"id":2570,"name":"ParameterList","src":"1731:33:0"}],"id":2571,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2579,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2572,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":2573,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":2579,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2574,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":2575,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":2579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2576,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":2577,"name":"VariableDeclaration","src":"1814:15:0"}],"id":2578,"name":"ParameterList","src":"1784:46:0"}],"id":2579,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2583,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2580,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":2581,"name":"VariableDeclaration","src":"1851:15:0"}],"id":2582,"name":"ParameterList","src":"1850:17:0"}],"id":2583,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2587,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2584,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":2585,"name":"VariableDeclaration","src":"1887:15:0"}],"id":2586,"name":"ParameterList","src":"1886:17:0"}],"id":2587,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":2976,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2588,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":2589,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":2590,"name":"Mapping","src":"1910:24:0"}],"id":2591,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":2976,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2592,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":2593,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":2976,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2594,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":2595,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":2596,"name":"Mapping","src":"1991:24:0"}],"id":2597,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":2976,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2598,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":2599,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":2976,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2600,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":2601,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":2611,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2602,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":2603,"name":"VariableDeclaration","src":"2251:30:0"}],"id":2604,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":2609,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"type(contract Ownable)","value":"Ownable"},"id":2605,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2603,"type":"address payable","value":"_ownerAddress_"},"id":2606,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2607,"name":"Literal","src":"2314:5:0"}],"id":2608,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":2610,"name":"Block","src":"2321:2:0"}],"id":2611,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2612,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2613,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2614,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2615,"name":"Identifier","src":"2431:3:0"}],"id":2616,"name":"MemberAccess","src":"2431:10:0"}],"id":2617,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":2618,"name":"Literal","src":"2444:21:0"}],"id":2619,"name":"FunctionCall","src":"2414:52:0"}],"id":2620,"name":"ExpressionStatement","src":"2414:52:0"},{"id":2621,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":2622,"name":"Block","src":"2404:80:0"}],"id":2623,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2624,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2625,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2626,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2627,"name":"Identifier","src":"2585:3:0"}],"id":2628,"name":"MemberAccess","src":"2585:10:0"}],"id":2629,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2630,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2631,"name":"Identifier","src":"2609:3:0"}],"id":2632,"name":"MemberAccess","src":"2609:10:0"}],"id":2633,"name":"IndexAccess","src":"2600:20:0"}],"id":2634,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":2635,"name":"Literal","src":"2622:30:0"}],"id":2636,"name":"FunctionCall","src":"2568:85:0"}],"id":2637,"name":"ExpressionStatement","src":"2568:85:0"},{"id":2638,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":2639,"name":"Block","src":"2558:113:0"}],"id":2640,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2641,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2642,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2755,"type":"function () view returns (bool)","value":"isStopped"},"id":2643,"name":"Identifier","src":"2765:9:0"}],"id":2644,"name":"FunctionCall","src":"2765:11:0"}],"id":2645,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":2646,"name":"Literal","src":"2778:23:0"}],"id":2647,"name":"FunctionCall","src":"2756:46:0"}],"id":2648,"name":"ExpressionStatement","src":"2756:46:0"},{"id":2649,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":2650,"name":"Block","src":"2746:74:0"}],"id":2651,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2665,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2652,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":2653,"name":"VariableDeclaration","src":"2961:16:0"}],"id":2654,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2659,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":2655,"name":"Identifier","src":"2988:9:0"}],"id":2656,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2657,"name":"Identifier","src":"2998:10:0"}],"id":2658,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2809,"type":"function (address)","value":"_addAdmin"},"id":2660,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2653,"type":"address","value":"_account"},"id":2661,"name":"Identifier","src":"3029:8:0"}],"id":2662,"name":"FunctionCall","src":"3019:19:0"}],"id":2663,"name":"ExpressionStatement","src":"3019:19:0"}],"id":2664,"name":"Block","src":"3009:36:0"}],"id":2665,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2677,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2666,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":2667,"name":"VariableDeclaration","src":"3195:16:0"}],"id":2668,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2671,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":2669,"name":"Identifier","src":"3222:9:0"}],"id":2670,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2837,"type":"function (address)","value":"_removeAdmin"},"id":2672,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2667,"type":"address","value":"_account"},"id":2673,"name":"Identifier","src":"3255:8:0"}],"id":2674,"name":"FunctionCall","src":"3242:22:0"}],"id":2675,"name":"ExpressionStatement","src":"3242:22:0"}],"id":2676,"name":"Block","src":"3232:39:0"}],"id":2677,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":2976,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2678,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2685,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2679,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":2680,"name":"VariableDeclaration","src":"3368:7:0"}],"id":2681,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":2681},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2593,"type":"uint256","value":"_adminCount"},"id":2682,"name":"Identifier","src":"3394:11:0"}],"id":2683,"name":"Return","src":"3387:18:0"}],"id":2684,"name":"Block","src":"3377:35:0"}],"id":2685,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2699,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2686,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":2687,"name":"VariableDeclaration","src":"3573:16:0"}],"id":2688,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2693,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2689,"name":"Identifier","src":"3600:16:0"}],"id":2690,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2691,"name":"Identifier","src":"3617:10:0"}],"id":2692,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2891,"type":"function (address)","value":"_addController"},"id":2694,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2687,"type":"address","value":"_account"},"id":2695,"name":"Identifier","src":"3653:8:0"}],"id":2696,"name":"FunctionCall","src":"3638:24:0"}],"id":2697,"name":"ExpressionStatement","src":"3638:24:0"}],"id":2698,"name":"Block","src":"3628:41:0"}],"id":2699,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2711,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2700,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":2701,"name":"VariableDeclaration","src":"3839:16:0"}],"id":2702,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2705,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2703,"name":"Identifier","src":"3866:16:0"}],"id":2704,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2919,"type":"function (address)","value":"_removeController"},"id":2706,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2701,"type":"address","value":"_account"},"id":2707,"name":"Identifier","src":"3911:8:0"}],"id":2708,"name":"FunctionCall","src":"3893:27:0"}],"id":2709,"name":"ExpressionStatement","src":"3893:27:0"}],"id":2710,"name":"Block","src":"3883:44:0"}],"id":2711,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":2976,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2712,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2719,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2713,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":2714,"name":"VariableDeclaration","src":"4072:7:0"}],"id":2715,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":2715},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2599,"type":"uint256","value":"_controllerCount"},"id":2716,"name":"Identifier","src":"4098:16:0"}],"id":2717,"name":"Return","src":"4091:23:0"}],"id":2718,"name":"Block","src":"4081:40:0"}],"id":2719,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":2976,"stateMutability":"view","superFunction":2540,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2733,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2720,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":2721,"name":"VariableDeclaration","src":"4242:16:0"}],"id":2722,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2733,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2725,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":2726,"name":"VariableDeclaration","src":"4294:4:0"}],"id":2727,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2723,"name":"Identifier","src":"4274:10:0"}],"id":2724,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":2727},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2728,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2721,"type":"address","value":"_account"},"id":2729,"name":"Identifier","src":"4326:8:0"}],"id":2730,"name":"IndexAccess","src":"4317:18:0"}],"id":2731,"name":"Return","src":"4310:25:0"}],"id":2732,"name":"Block","src":"4300:42:0"}],"id":2733,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":2976,"stateMutability":"view","superFunction":2533,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2747,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2734,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":2735,"name":"VariableDeclaration","src":"4476:16:0"}],"id":2736,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2747,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2739,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":2740,"name":"VariableDeclaration","src":"4528:4:0"}],"id":2741,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2737,"name":"Identifier","src":"4508:10:0"}],"id":2738,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":2741},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2742,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2735,"type":"address","value":"_account"},"id":2743,"name":"Identifier","src":"4565:8:0"}],"id":2744,"name":"IndexAccess","src":"4551:23:0"}],"id":2745,"name":"Return","src":"4544:30:0"}],"id":2746,"name":"Block","src":"4534:47:0"}],"id":2747,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":2976,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2748,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2755,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2749,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":2750,"name":"VariableDeclaration","src":"4769:4:0"}],"id":2751,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":2751},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2601,"type":"bool","value":"_stopped"},"id":2752,"name":"Identifier","src":"4792:8:0"}],"id":2753,"name":"Return","src":"4785:15:0"}],"id":2754,"name":"Block","src":"4775:32:0"}],"id":2755,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2809,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2756,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":2757,"name":"VariableDeclaration","src":"4894:16:0"}],"id":2758,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2759,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2760,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2761,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2762,"name":"Identifier","src":"4948:8:0"}],"id":2763,"name":"IndexAccess","src":"4939:18:0"}],"id":2764,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":2765,"name":"Literal","src":"4959:38:0"}],"id":2766,"name":"FunctionCall","src":"4930:68:0"}],"id":2767,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2768,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2769,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2770,"name":"Identifier","src":"5031:8:0"}],"id":2771,"name":"IndexAccess","src":"5017:23:0"}],"id":2772,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":2773,"name":"Literal","src":"5042:42:0"}],"id":2774,"name":"FunctionCall","src":"5008:77:0"}],"id":2775,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2776,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2777,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2778,"name":"Identifier","src":"5113:8:0"}],"id":2779,"name":"FunctionCall","src":"5104:18:0"}],"id":2780,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":2781,"name":"Literal","src":"5124:39:0"}],"id":2782,"name":"FunctionCall","src":"5095:69:0"}],"id":2783,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2784,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2785,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2786,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2787,"name":"Literal","src":"5202:1:0"}],"id":2788,"name":"FunctionCall","src":"5194:10:0"}],"id":2789,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":2790,"name":"Literal","src":"5206:38:0"}],"id":2791,"name":"FunctionCall","src":"5174:71:0"}],"id":2792,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2793,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2794,"name":"Identifier","src":"5264:8:0"}],"id":2795,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2796,"name":"Literal","src":"5276:4:0"}],"id":2797,"name":"Assignment","src":"5255:25:0"}],"id":2798,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2593,"type":"uint256","value":"_adminCount"},"id":2799,"name":"Identifier","src":"5290:11:0"}],"id":2800,"name":"UnaryOperation","src":"5290:13:0"}],"id":2801,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"function (address,address)","value":"AddedAdmin"},"id":2802,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2803,"name":"Identifier","src":"5329:3:0"}],"id":2804,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2757,"type":"address","value":"_account"},"id":2805,"name":"Identifier","src":"5341:8:0"}],"id":2806,"name":"FunctionCall","src":"5318:32:0"}],"id":2807,"name":"EmitStatement","src":"5313:37:0"}],"id":2808,"name":"Block","src":"4920:437:0"}],"id":2809,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2837,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2810,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":2811,"name":"VariableDeclaration","src":"5456:16:0"}],"id":2812,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2813,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2814,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2815,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2811,"type":"address","value":"_account"},"id":2816,"name":"Identifier","src":"5509:8:0"}],"id":2817,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":2818,"name":"Literal","src":"5520:34:0"}],"id":2819,"name":"FunctionCall","src":"5492:63:0"}],"id":2820,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2821,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2811,"type":"address","value":"_account"},"id":2822,"name":"Identifier","src":"5574:8:0"}],"id":2823,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2824,"name":"Literal","src":"5586:5:0"}],"id":2825,"name":"Assignment","src":"5565:26:0"}],"id":2826,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2593,"type":"uint256","value":"_adminCount"},"id":2827,"name":"Identifier","src":"5601:11:0"}],"id":2828,"name":"UnaryOperation","src":"5601:13:0"}],"id":2829,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2571,"type":"function (address,address)","value":"RemovedAdmin"},"id":2830,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2831,"name":"Identifier","src":"5642:3:0"}],"id":2832,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2811,"type":"address","value":"_account"},"id":2833,"name":"Identifier","src":"5654:8:0"}],"id":2834,"name":"FunctionCall","src":"5629:34:0"}],"id":2835,"name":"EmitStatement","src":"5624:39:0"}],"id":2836,"name":"Block","src":"5482:188:0"}],"id":2837,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2891,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2838,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":2839,"name":"VariableDeclaration","src":"5767:16:0"}],"id":2840,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2841,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2842,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2591,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2843,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2844,"name":"Identifier","src":"5821:8:0"}],"id":2845,"name":"IndexAccess","src":"5812:18:0"}],"id":2846,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":2847,"name":"Literal","src":"5832:38:0"}],"id":2848,"name":"FunctionCall","src":"5803:68:0"}],"id":2849,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2850,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2851,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2852,"name":"Identifier","src":"5904:8:0"}],"id":2853,"name":"IndexAccess","src":"5890:23:0"}],"id":2854,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":2855,"name":"Literal","src":"5915:42:0"}],"id":2856,"name":"FunctionCall","src":"5881:77:0"}],"id":2857,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2858,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2859,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2860,"name":"Identifier","src":"5986:8:0"}],"id":2861,"name":"FunctionCall","src":"5977:18:0"}],"id":2862,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":2863,"name":"Literal","src":"5997:39:0"}],"id":2864,"name":"FunctionCall","src":"5968:69:0"}],"id":2865,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2866,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2867,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2868,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2869,"name":"Literal","src":"6075:1:0"}],"id":2870,"name":"FunctionCall","src":"6067:10:0"}],"id":2871,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":2872,"name":"Literal","src":"6079:38:0"}],"id":2873,"name":"FunctionCall","src":"6047:71:0"}],"id":2874,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2875,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2876,"name":"Identifier","src":"6142:8:0"}],"id":2877,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2878,"name":"Literal","src":"6154:4:0"}],"id":2879,"name":"Assignment","src":"6128:30:0"}],"id":2880,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2599,"type":"uint256","value":"_controllerCount"},"id":2881,"name":"Identifier","src":"6168:16:0"}],"id":2882,"name":"UnaryOperation","src":"6168:18:0"}],"id":2883,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2553,"type":"function (address,address)","value":"AddedController"},"id":2884,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2885,"name":"Identifier","src":"6217:3:0"}],"id":2886,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2839,"type":"address","value":"_account"},"id":2887,"name":"Identifier","src":"6229:8:0"}],"id":2888,"name":"FunctionCall","src":"6201:37:0"}],"id":2889,"name":"EmitStatement","src":"6196:42:0"}],"id":2890,"name":"Block","src":"5793:452:0"}],"id":2891,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2919,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2892,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":2893,"name":"VariableDeclaration","src":"6354:16:0"}],"id":2894,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2895,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2896,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2897,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2893,"type":"address","value":"_account"},"id":2898,"name":"Identifier","src":"6412:8:0"}],"id":2899,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":2900,"name":"Literal","src":"6423:38:0"}],"id":2901,"name":"FunctionCall","src":"6390:72:0"}],"id":2902,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2597,"type":"mapping(address => bool)","value":"_isController"},"id":2903,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2893,"type":"address","value":"_account"},"id":2904,"name":"Identifier","src":"6486:8:0"}],"id":2905,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2906,"name":"Literal","src":"6498:5:0"}],"id":2907,"name":"Assignment","src":"6472:31:0"}],"id":2908,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2599,"type":"uint256","value":"_controllerCount"},"id":2909,"name":"Identifier","src":"6513:16:0"}],"id":2910,"name":"UnaryOperation","src":"6513:18:0"}],"id":2911,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"function (address,address)","value":"RemovedController"},"id":2912,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2913,"name":"Identifier","src":"6564:3:0"}],"id":2914,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2893,"type":"address","value":"_account"},"id":2915,"name":"Identifier","src":"6576:8:0"}],"id":2916,"name":"FunctionCall","src":"6546:39:0"}],"id":2917,"name":"EmitStatement","src":"6541:44:0"}],"id":2918,"name":"Block","src":"6380:212:0"}],"id":2919,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2920,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":2923,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2640,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2921,"name":"Identifier","src":"6690:16:0"}],"id":2922,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2601,"type":"bool","value":"_stopped"},"id":2924,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2925,"name":"Literal","src":"6728:4:0"}],"id":2926,"name":"Assignment","src":"6717:15:0"}],"id":2927,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2583,"type":"function (address)","value":"Stopped"},"id":2928,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2929,"name":"Identifier","src":"6755:3:0"}],"id":2930,"name":"MemberAccess","src":"6755:10:0"}],"id":2931,"name":"FunctionCall","src":"6747:19:0"}],"id":2932,"name":"EmitStatement","src":"6742:24:0"}],"id":2933,"name":"Block","src":"6707:66:0"}],"id":2934,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2935,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":2938,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":2936,"name":"Identifier","src":"6848:9:0"}],"id":2937,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2601,"type":"bool","value":"_stopped"},"id":2939,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2940,"name":"Literal","src":"6879:5:0"}],"id":2941,"name":"Assignment","src":"6868:16:0"}],"id":2942,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2587,"type":"function (address)","value":"Started"},"id":2943,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2944,"name":"Identifier","src":"6907:3:0"}],"id":2945,"name":"MemberAccess","src":"6907:10:0"}],"id":2946,"name":"FunctionCall","src":"6899:19:0"}],"id":2947,"name":"EmitStatement","src":"6894:24:0"}],"id":2948,"name":"Block","src":"6858:67:0"}],"id":2949,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":2976,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2975,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2950,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":2951,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":2975,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2952,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":2953,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":2975,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2954,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":2955,"name":"VariableDeclaration","src":"7066:15:0"}],"id":2956,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":2961,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2623,"type":"modifier ()","value":"onlyAdmin"},"id":2957,"name":"Identifier","src":"7092:9:0"}],"id":2958,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2651,"type":"modifier ()","value":"notStopped"},"id":2959,"name":"Identifier","src":"7102:10:0"}],"id":2960,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2962,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2951,"type":"address payable","value":"_to"},"id":2963,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2953,"type":"address","value":"_asset"},"id":2964,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2955,"type":"uint256","value":"_amount"},"id":2965,"name":"Identifier","src":"7150:7:0"}],"id":2966,"name":"FunctionCall","src":"7123:35:0"}],"id":2967,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2579,"type":"function (address,address,uint256)","value":"Claimed"},"id":2968,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2951,"type":"address payable","value":"_to"},"id":2969,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2953,"type":"address","value":"_asset"},"id":2970,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2955,"type":"uint256","value":"_amount"},"id":2971,"name":"Identifier","src":"7194:7:0"}],"id":2972,"name":"FunctionCall","src":"7173:29:0"}],"id":2973,"name":"EmitStatement","src":"7168:34:0"}],"id":2974,"name":"Block","src":"7113:96:0"}],"id":2975,"name":"FunctionDefinition","src":"7014:195:0"}],"id":2976,"name":"ContractDefinition","src":"1460:5751:0"}],"id":2977,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[3306]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3289,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[3306],"name":"Address","scope":3307},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":3306,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":3305,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3290,"name":"ElementaryTypeName","src":"562:7:1"}],"id":3291,"name":"VariableDeclaration","src":"562:15:1"}],"id":3292,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":3305,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3293,"name":"ElementaryTypeName","src":"602:4:1"}],"id":3294,"name":"VariableDeclaration","src":"602:4:1"}],"id":3295,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[3297],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":3304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3296,"name":"ElementaryTypeName","src":"805:7:1"}],"id":3297,"name":"VariableDeclaration","src":"805:12:1"}],"id":3298,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":3297,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":3291,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":3299,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":3295},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3297,"type":"uint256","value":"size"},"id":3300,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3301,"name":"Literal","src":"947:1:1"}],"id":3302,"name":"BinaryOperation","src":"940:8:1"}],"id":3303,"name":"Return","src":"933:15:1"}],"id":3304,"name":"Block","src":"608:347:1"}],"id":3305,"name":"FunctionDefinition","src":"542:413:1"}],"id":3306,"name":"ContractDefinition","src":"94:863:1"}],"id":3307,"name":"SourceUnit","src":"0:958:1"}},"externals/ECDSA.sol":{"AST":{"attributes":{"absolutePath":"externals/ECDSA.sol","exportedSymbols":{"ECDSA":[3387]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3308,"name":"PragmaDirective","src":"1161:23:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n * These functions can be used to verify that a message was signed by the holder\nof the private keys of a given address.","fullyImplemented":true,"linearizedBaseContracts":[3387],"name":"ECDSA","scope":3388},"children":[{"attributes":{"documentation":"@dev Returns the address that signed a hashed message (`hash`) with\n`signature`. This address can then be used for verification purposes.\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\nthis function rejects them by requiring the `s` value to be in the lower\nhalf order, and the `v` value to be either 27 or 28.\n * NOTE: This call _does not revert_ if the signature is invalid, or\nif the signer is otherwise unable to be retrieved. In those scenarios,\nthe zero address is returned.\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\nverification to be secure: it is possible to craft signatures that\nrecover to arbitrary addresses for non-hashed data. A safe way to ensure\nthis is by receiving a hash of the original message (which may otherwise\nbe too long), and then calling {toEthSignedMessageHash} on it.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recover","scope":3387,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":3370,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3309,"name":"ElementaryTypeName","src":"2404:7:2"}],"id":3310,"name":"VariableDeclaration","src":"2404:12:2"},{"attributes":{"constant":false,"name":"signature","scope":3370,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3311,"name":"ElementaryTypeName","src":"2418:5:2"}],"id":3312,"name":"VariableDeclaration","src":"2418:22:2"}],"id":3313,"name":"ParameterList","src":"2403:38:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3370,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3314,"name":"ElementaryTypeName","src":"2465:7:2"}],"id":3315,"name":"VariableDeclaration","src":"2465:7:2"}],"id":3316,"name":"ParameterList","src":"2464:9:2"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3312,"type":"bytes memory","value":"signature"},"id":3317,"name":"Identifier","src":"2526:9:2"}],"id":3318,"name":"MemberAccess","src":"2526:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":3319,"name":"Literal","src":"2546:2:2"}],"id":3320,"name":"BinaryOperation","src":"2526:22:2"},{"children":[{"attributes":{"functionReturnParameters":3316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3321,"name":"ElementaryTypeNameExpression","src":"2572:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3322,"name":"Literal","src":"2580:1:2"}],"id":3323,"name":"FunctionCall","src":"2572:10:2"}],"id":3324,"name":"TupleExpression","src":"2571:12:2"}],"id":3325,"name":"Return","src":"2564:19:2"}],"id":3326,"name":"Block","src":"2550:44:2"}],"id":3327,"name":"IfStatement","src":"2522:72:2"},{"attributes":{"assignments":[3329],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":3369,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3328,"name":"ElementaryTypeName","src":"2660:7:2"}],"id":3329,"name":"VariableDeclaration","src":"2660:9:2"}],"id":3330,"name":"VariableDeclarationStatement","src":"2660:9:2"},{"attributes":{"assignments":[3332],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":3369,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3331,"name":"ElementaryTypeName","src":"2679:7:2"}],"id":3332,"name":"VariableDeclaration","src":"2679:9:2"}],"id":3333,"name":"VariableDeclarationStatement","src":"2679:9:2"},{"attributes":{"assignments":[3335],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":3369,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3334,"name":"ElementaryTypeName","src":"2698:5:2"}],"id":3335,"name":"VariableDeclaration","src":"2698:7:2"}],"id":3336,"name":"VariableDeclarationStatement","src":"2698:7:2"},{"attributes":{"externalReferences":[{"r":{"declaration":3329,"isOffset":false,"isSlot":false,"src":"2918:1:2","valueSize":1}},{"signature":{"declaration":3312,"isOffset":false,"isSlot":false,"src":"2933:9:2","valueSize":1}},{"v":{"declaration":3335,"isOffset":false,"isSlot":false,"src":"3008:1:2","valueSize":1}},{"s":{"declaration":3332,"isOffset":false,"isSlot":false,"src":"2963:1:2","valueSize":1}},{"signature":{"declaration":3312,"isOffset":false,"isSlot":false,"src":"2978:9:2","valueSize":1}},{"signature":{"declaration":3312,"isOffset":false,"isSlot":false,"src":"3031:9:2","valueSize":1}}],"operations":"{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}"},"children":[],"id":3337,"name":"InlineAssembly","src":"2895:164:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":3338,"name":"ElementaryTypeNameExpression","src":"3947:7:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3332,"type":"bytes32","value":"s"},"id":3339,"name":"Identifier","src":"3955:1:2"}],"id":3340,"name":"FunctionCall","src":"3947:10:2"},{"attributes":{"argumentTypes":null,"hexvalue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5789...(69 digits omitted)...7168","value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"id":3341,"name":"Literal","src":"3960:66:2"}],"id":3342,"name":"BinaryOperation","src":"3947:79:2"},{"children":[{"attributes":{"functionReturnParameters":3316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3343,"name":"ElementaryTypeNameExpression","src":"4049:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3344,"name":"Literal","src":"4057:1:2"}],"id":3345,"name":"FunctionCall","src":"4049:10:2"}],"id":3346,"name":"Return","src":"4042:17:2"}],"id":3347,"name":"Block","src":"4028:42:2"}],"id":3348,"name":"IfStatement","src":"3943:127:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"uint8","value":"v"},"id":3349,"name":"Identifier","src":"4084:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":3350,"name":"Literal","src":"4089:2:2"}],"id":3351,"name":"BinaryOperation","src":"4084:7:2"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"uint8","value":"v"},"id":3352,"name":"Identifier","src":"4095:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":3353,"name":"Literal","src":"4100:2:2"}],"id":3354,"name":"BinaryOperation","src":"4095:7:2"}],"id":3355,"name":"BinaryOperation","src":"4084:18:2"},{"children":[{"attributes":{"functionReturnParameters":3316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3356,"name":"ElementaryTypeNameExpression","src":"4125:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3357,"name":"Literal","src":"4133:1:2"}],"id":3358,"name":"FunctionCall","src":"4125:10:2"}],"id":3359,"name":"Return","src":"4118:17:2"}],"id":3360,"name":"Block","src":"4104:42:2"}],"id":3361,"name":"IfStatement","src":"4080:66:2"},{"attributes":{"functionReturnParameters":3316},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":10299,"type":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)","value":"ecrecover"},"id":3362,"name":"Identifier","src":"4247:9:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3310,"type":"bytes32","value":"hash"},"id":3363,"name":"Identifier","src":"4257:4:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3335,"type":"uint8","value":"v"},"id":3364,"name":"Identifier","src":"4263:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3329,"type":"bytes32","value":"r"},"id":3365,"name":"Identifier","src":"4266:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3332,"type":"bytes32","value":"s"},"id":3366,"name":"Identifier","src":"4269:1:2"}],"id":3367,"name":"FunctionCall","src":"4247:24:2"}],"id":3368,"name":"Return","src":"4240:31:2"}],"id":3369,"name":"Block","src":"2474:1804:2"}],"id":3370,"name":"FunctionDefinition","src":"2387:1891:2"},{"attributes":{"documentation":"@dev Returns an Ethereum Signed Message, created from a `hash`. This\nreplicates the behavior of the\nhttps://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\nJSON-RPC method.\n * See {recover}.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toEthSignedMessageHash","scope":3387,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":3386,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3371,"name":"ElementaryTypeName","src":"4574:7:2"}],"id":3372,"name":"VariableDeclaration","src":"4574:12:2"}],"id":3373,"name":"ParameterList","src":"4573:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3386,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3374,"name":"ElementaryTypeName","src":"4611:7:2"}],"id":3375,"name":"VariableDeclaration","src":"4611:7:2"}],"id":3376,"name":"ParameterList","src":"4610:9:2"},{"children":[{"attributes":{"functionReturnParameters":3376},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":3377,"name":"Identifier","src":"4731:9:2"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string \"\u0019Ethereum Signed Message:\n32\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3378,"name":"Identifier","src":"4741:3:2"}],"id":3379,"name":"MemberAccess","src":"4741:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"19457468657265756d205369676e6564204d6573736167653a0a3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0019Ethereum Signed Message:\n32\"","value":"\u0019Ethereum Signed Message:\n32"},"id":3380,"name":"Literal","src":"4758:34:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3372,"type":"bytes32","value":"hash"},"id":3381,"name":"Identifier","src":"4794:4:2"}],"id":3382,"name":"FunctionCall","src":"4741:58:2"}],"id":3383,"name":"FunctionCall","src":"4731:69:2"}],"id":3384,"name":"Return","src":"4724:76:2"}],"id":3385,"name":"Block","src":"4620:187:2"}],"id":3386,"name":"FunctionDefinition","src":"4542:265:2"}],"id":3387,"name":"ContractDefinition","src":"1392:3417:2"}],"id":3388,"name":"SourceUnit","src":"1161:3649:2"}},"externals/ERC165.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC165.sol","exportedSymbols":{"ERC165":[3397]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3389,"name":"PragmaDirective","src":"0:24:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC165 interface specifies a standard way of querying if a contract implements an interface.","fullyImplemented":false,"linearizedBaseContracts":[3397],"name":"ERC165","scope":3398},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3397,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3396,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3390,"name":"ElementaryTypeName","src":"180:6:3"}],"id":3391,"name":"VariableDeclaration","src":"180:6:3"}],"id":3392,"name":"ParameterList","src":"179:8:3"},{"children":[{"attributes":{"constant":false,"name":"","scope":3396,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3393,"name":"ElementaryTypeName","src":"211:4:3"}],"id":3394,"name":"VariableDeclaration","src":"211:4:3"}],"id":3395,"name":"ParameterList","src":"210:6:3"}],"id":3396,"name":"FunctionDefinition","src":"153:64:3"}],"id":3397,"name":"ContractDefinition","src":"130:89:3"}],"id":3398,"name":"SourceUnit","src":"0:220:3"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[3450]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3399,"name":"PragmaDirective","src":"0:24:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[3450],"name":"ERC20","scope":3451},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":3450,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":3408,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3400,"name":"ElementaryTypeName","src":"193:7:4"}],"id":3401,"name":"VariableDeclaration","src":"193:14:4"},{"attributes":{"constant":false,"name":"_spender","scope":3408,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3402,"name":"ElementaryTypeName","src":"209:7:4"}],"id":3403,"name":"VariableDeclaration","src":"209:16:4"}],"id":3404,"name":"ParameterList","src":"192:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3408,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3405,"name":"ElementaryTypeName","src":"250:7:4"}],"id":3406,"name":"VariableDeclaration","src":"250:7:4"}],"id":3407,"name":"ParameterList","src":"249:9:4"}],"id":3408,"name":"FunctionDefinition","src":"174:85:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":3450,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":3417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3409,"name":"ElementaryTypeName","src":"281:7:4"}],"id":3410,"name":"VariableDeclaration","src":"281:16:4"},{"attributes":{"constant":false,"name":"_value","scope":3417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3411,"name":"ElementaryTypeName","src":"299:7:4"}],"id":3412,"name":"VariableDeclaration","src":"299:14:4"}],"id":3413,"name":"ParameterList","src":"280:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3417,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3414,"name":"ElementaryTypeName","src":"333:4:4"}],"id":3415,"name":"VariableDeclaration","src":"333:4:4"}],"id":3416,"name":"ParameterList","src":"332:6:4"}],"id":3417,"name":"FunctionDefinition","src":"264:75:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":3450,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":3424,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3418,"name":"ElementaryTypeName","src":"363:7:4"}],"id":3419,"name":"VariableDeclaration","src":"363:12:4"}],"id":3420,"name":"ParameterList","src":"362:14:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3424,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3421,"name":"ElementaryTypeName","src":"400:7:4"}],"id":3422,"name":"VariableDeclaration","src":"400:7:4"}],"id":3423,"name":"ParameterList","src":"399:9:4"}],"id":3424,"name":"FunctionDefinition","src":"344:65:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":3450,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3425,"name":"ParameterList","src":"434:2:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3429,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3426,"name":"ElementaryTypeName","src":"460:7:4"}],"id":3427,"name":"VariableDeclaration","src":"460:7:4"}],"id":3428,"name":"ParameterList","src":"459:9:4"}],"id":3429,"name":"FunctionDefinition","src":"414:55:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":3450,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3438,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3430,"name":"ElementaryTypeName","src":"492:7:4"}],"id":3431,"name":"VariableDeclaration","src":"492:11:4"},{"attributes":{"constant":false,"name":"_value","scope":3438,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3432,"name":"ElementaryTypeName","src":"505:7:4"}],"id":3433,"name":"VariableDeclaration","src":"505:14:4"}],"id":3434,"name":"ParameterList","src":"491:29:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3438,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3435,"name":"ElementaryTypeName","src":"539:4:4"}],"id":3436,"name":"VariableDeclaration","src":"539:4:4"}],"id":3437,"name":"ParameterList","src":"538:6:4"}],"id":3438,"name":"FunctionDefinition","src":"474:71:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":3450,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":3449,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3439,"name":"ElementaryTypeName","src":"572:7:4"}],"id":3440,"name":"VariableDeclaration","src":"572:13:4"},{"attributes":{"constant":false,"name":"_to","scope":3449,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3441,"name":"ElementaryTypeName","src":"587:7:4"}],"id":3442,"name":"VariableDeclaration","src":"587:11:4"},{"attributes":{"constant":false,"name":"_value","scope":3449,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3443,"name":"ElementaryTypeName","src":"600:7:4"}],"id":3444,"name":"VariableDeclaration","src":"600:14:4"}],"id":3445,"name":"ParameterList","src":"571:44:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3449,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3446,"name":"ElementaryTypeName","src":"634:4:4"}],"id":3447,"name":"VariableDeclaration","src":"634:4:4"}],"id":3448,"name":"ParameterList","src":"633:6:4"}],"id":3449,"name":"FunctionDefinition","src":"550:90:4"}],"id":3450,"name":"ContractDefinition","src":"152:490:4"}],"id":3451,"name":"SourceUnit","src":"0:643:4"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[3669]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3452,"name":"PragmaDirective","src":"1161:23:5"},{"attributes":{"SourceUnit":3451,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":3670,"symbolAliases":[null],"unitAlias":""},"id":3453,"name":"ImportDirective","src":"1186:21:5"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":3670,"symbolAliases":[null],"unitAlias":""},"id":3454,"name":"ImportDirective","src":"1208:24:5"},{"attributes":{"SourceUnit":3307,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":3670,"symbolAliases":[null],"unitAlias":""},"id":3455,"name":"ImportDirective","src":"1233:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[3669],"name":"SafeERC20","scope":3670},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":3456,"name":"UserDefinedTypeName","src":"1745:8:5"},{"attributes":{"name":"uint256","type":"uint256"},"id":3457,"name":"ElementaryTypeName","src":"1758:7:5"}],"id":3458,"name":"UsingForDirective","src":"1739:27:5"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":3306,"type":"library Address"},"id":3459,"name":"UserDefinedTypeName","src":"1777:7:5"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3460,"name":"ElementaryTypeName","src":"1789:7:5"}],"id":3461,"name":"UsingForDirective","src":"1771:26:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3483,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3462,"name":"UserDefinedTypeName","src":"1825:5:5"}],"id":3463,"name":"VariableDeclaration","src":"1825:11:5"},{"attributes":{"constant":false,"name":"to","scope":3483,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3464,"name":"ElementaryTypeName","src":"1838:7:5"}],"id":3465,"name":"VariableDeclaration","src":"1838:10:5"},{"attributes":{"constant":false,"name":"value","scope":3483,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3466,"name":"ElementaryTypeName","src":"1850:7:5"}],"id":3467,"name":"VariableDeclaration","src":"1850:13:5"}],"id":3468,"name":"ParameterList","src":"1824:40:5"},{"attributes":{"parameters":[null]},"children":[],"id":3469,"name":"ParameterList","src":"1874:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3470,"name":"Identifier","src":"1884:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3463,"type":"contract ERC20","value":"token"},"id":3471,"name":"Identifier","src":"1903:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3472,"name":"Identifier","src":"1910:3:5"}],"id":3473,"name":"MemberAccess","src":"1910:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":3438,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3463,"type":"contract ERC20","value":"token"},"id":3474,"name":"Identifier","src":"1933:5:5"}],"id":3475,"name":"MemberAccess","src":"1933:14:5"}],"id":3476,"name":"MemberAccess","src":"1933:23:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3465,"type":"address","value":"to"},"id":3477,"name":"Identifier","src":"1958:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3467,"type":"uint256","value":"value"},"id":3478,"name":"Identifier","src":"1962:5:5"}],"id":3479,"name":"FunctionCall","src":"1910:58:5"}],"id":3480,"name":"FunctionCall","src":"1884:85:5"}],"id":3481,"name":"ExpressionStatement","src":"1884:85:5"}],"id":3482,"name":"Block","src":"1874:102:5"}],"id":3483,"name":"FunctionDefinition","src":"1803:173:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3508,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3484,"name":"UserDefinedTypeName","src":"2008:5:5"}],"id":3485,"name":"VariableDeclaration","src":"2008:11:5"},{"attributes":{"constant":false,"name":"from","scope":3508,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3486,"name":"ElementaryTypeName","src":"2021:7:5"}],"id":3487,"name":"VariableDeclaration","src":"2021:12:5"},{"attributes":{"constant":false,"name":"to","scope":3508,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3488,"name":"ElementaryTypeName","src":"2035:7:5"}],"id":3489,"name":"VariableDeclaration","src":"2035:10:5"},{"attributes":{"constant":false,"name":"value","scope":3508,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3490,"name":"ElementaryTypeName","src":"2047:7:5"}],"id":3491,"name":"VariableDeclaration","src":"2047:13:5"}],"id":3492,"name":"ParameterList","src":"2007:54:5"},{"attributes":{"parameters":[null]},"children":[],"id":3493,"name":"ParameterList","src":"2071:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3494,"name":"Identifier","src":"2081:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3485,"type":"contract ERC20","value":"token"},"id":3495,"name":"Identifier","src":"2100:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3496,"name":"Identifier","src":"2107:3:5"}],"id":3497,"name":"MemberAccess","src":"2107:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":3449,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3485,"type":"contract ERC20","value":"token"},"id":3498,"name":"Identifier","src":"2130:5:5"}],"id":3499,"name":"MemberAccess","src":"2130:18:5"}],"id":3500,"name":"MemberAccess","src":"2130:27:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3487,"type":"address","value":"from"},"id":3501,"name":"Identifier","src":"2159:4:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3489,"type":"address","value":"to"},"id":3502,"name":"Identifier","src":"2165:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3491,"type":"uint256","value":"value"},"id":3503,"name":"Identifier","src":"2169:5:5"}],"id":3504,"name":"FunctionCall","src":"2107:68:5"}],"id":3505,"name":"FunctionCall","src":"2081:95:5"}],"id":3506,"name":"ExpressionStatement","src":"2081:95:5"}],"id":3507,"name":"Block","src":"2071:112:5"}],"id":3508,"name":"FunctionDefinition","src":"1982:201:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3549,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3509,"name":"UserDefinedTypeName","src":"2210:5:5"}],"id":3510,"name":"VariableDeclaration","src":"2210:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3549,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3511,"name":"ElementaryTypeName","src":"2223:7:5"}],"id":3512,"name":"VariableDeclaration","src":"2223:15:5"},{"attributes":{"constant":false,"name":"value","scope":3549,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3513,"name":"ElementaryTypeName","src":"2240:7:5"}],"id":3514,"name":"VariableDeclaration","src":"2240:13:5"}],"id":3515,"name":"ParameterList","src":"2209:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3516,"name":"ParameterList","src":"2264:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3517,"name":"Identifier","src":"2544:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3514,"type":"uint256","value":"value"},"id":3518,"name":"Identifier","src":"2553:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3519,"name":"Literal","src":"2562:1:5"}],"id":3520,"name":"BinaryOperation","src":"2553:10:5"}],"id":3521,"name":"TupleExpression","src":"2552:12:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3408,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3510,"type":"contract ERC20","value":"token"},"id":3522,"name":"Identifier","src":"2569:5:5"}],"id":3523,"name":"MemberAccess","src":"2569:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3669","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3524,"name":"ElementaryTypeNameExpression","src":"2585:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10329,"type":"library SafeERC20","value":"this"},"id":3525,"name":"Identifier","src":"2593:4:5"}],"id":3526,"name":"FunctionCall","src":"2585:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3512,"type":"address","value":"spender"},"id":3527,"name":"Identifier","src":"2600:7:5"}],"id":3528,"name":"FunctionCall","src":"2569:39:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3529,"name":"Literal","src":"2612:1:5"}],"id":3530,"name":"BinaryOperation","src":"2569:44:5"}],"id":3531,"name":"TupleExpression","src":"2568:46:5"}],"id":3532,"name":"BinaryOperation","src":"2552:62:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":3533,"name":"Literal","src":"2628:56:5"}],"id":3534,"name":"FunctionCall","src":"2544:150:5"}],"id":3535,"name":"ExpressionStatement","src":"2544:150:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3536,"name":"Identifier","src":"2704:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3510,"type":"contract ERC20","value":"token"},"id":3537,"name":"Identifier","src":"2723:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3538,"name":"Identifier","src":"2730:3:5"}],"id":3539,"name":"MemberAccess","src":"2730:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3417,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3510,"type":"contract ERC20","value":"token"},"id":3540,"name":"Identifier","src":"2753:5:5"}],"id":3541,"name":"MemberAccess","src":"2753:13:5"}],"id":3542,"name":"MemberAccess","src":"2753:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3512,"type":"address","value":"spender"},"id":3543,"name":"Identifier","src":"2777:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3514,"type":"uint256","value":"value"},"id":3544,"name":"Identifier","src":"2786:5:5"}],"id":3545,"name":"FunctionCall","src":"2730:62:5"}],"id":3546,"name":"FunctionCall","src":"2704:89:5"}],"id":3547,"name":"ExpressionStatement","src":"2704:89:5"}],"id":3548,"name":"Block","src":"2264:536:5"}],"id":3549,"name":"FunctionDefinition","src":"2189:611:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3584,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3550,"name":"UserDefinedTypeName","src":"2837:5:5"}],"id":3551,"name":"VariableDeclaration","src":"2837:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3584,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3552,"name":"ElementaryTypeName","src":"2850:7:5"}],"id":3553,"name":"VariableDeclaration","src":"2850:15:5"},{"attributes":{"constant":false,"name":"value","scope":3584,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3554,"name":"ElementaryTypeName","src":"2867:7:5"}],"id":3555,"name":"VariableDeclaration","src":"2867:13:5"}],"id":3556,"name":"ParameterList","src":"2836:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3557,"name":"ParameterList","src":"2891:0:5"},{"children":[{"attributes":{"assignments":[3559]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3558,"name":"ElementaryTypeName","src":"2901:7:5"}],"id":3559,"name":"VariableDeclaration","src":"2901:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3408,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3551,"type":"contract ERC20","value":"token"},"id":3560,"name":"Identifier","src":"2924:5:5"}],"id":3561,"name":"MemberAccess","src":"2924:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3669","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3562,"name":"ElementaryTypeNameExpression","src":"2940:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10329,"type":"library SafeERC20","value":"this"},"id":3563,"name":"Identifier","src":"2948:4:5"}],"id":3564,"name":"FunctionCall","src":"2940:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3553,"type":"address","value":"spender"},"id":3565,"name":"Identifier","src":"2955:7:5"}],"id":3566,"name":"FunctionCall","src":"2924:39:5"}],"id":3567,"name":"MemberAccess","src":"2924:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"uint256","value":"value"},"id":3568,"name":"Identifier","src":"2968:5:5"}],"id":3569,"name":"FunctionCall","src":"2924:50:5"}],"id":3570,"name":"VariableDeclarationStatement","src":"2901:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3571,"name":"Identifier","src":"2984:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3551,"type":"contract ERC20","value":"token"},"id":3572,"name":"Identifier","src":"3003:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3573,"name":"Identifier","src":"3010:3:5"}],"id":3574,"name":"MemberAccess","src":"3010:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3417,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3551,"type":"contract ERC20","value":"token"},"id":3575,"name":"Identifier","src":"3033:5:5"}],"id":3576,"name":"MemberAccess","src":"3033:13:5"}],"id":3577,"name":"MemberAccess","src":"3033:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3553,"type":"address","value":"spender"},"id":3578,"name":"Identifier","src":"3057:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3559,"type":"uint256","value":"newAllowance"},"id":3579,"name":"Identifier","src":"3066:12:5"}],"id":3580,"name":"FunctionCall","src":"3010:69:5"}],"id":3581,"name":"FunctionCall","src":"2984:96:5"}],"id":3582,"name":"ExpressionStatement","src":"2984:96:5"}],"id":3583,"name":"Block","src":"2891:196:5"}],"id":3584,"name":"FunctionDefinition","src":"2806:281:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3619,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3585,"name":"UserDefinedTypeName","src":"3124:5:5"}],"id":3586,"name":"VariableDeclaration","src":"3124:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3619,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3587,"name":"ElementaryTypeName","src":"3137:7:5"}],"id":3588,"name":"VariableDeclaration","src":"3137:15:5"},{"attributes":{"constant":false,"name":"value","scope":3619,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3589,"name":"ElementaryTypeName","src":"3154:7:5"}],"id":3590,"name":"VariableDeclaration","src":"3154:13:5"}],"id":3591,"name":"ParameterList","src":"3123:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3592,"name":"ParameterList","src":"3178:0:5"},{"children":[{"attributes":{"assignments":[3594]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3618,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3593,"name":"ElementaryTypeName","src":"3188:7:5"}],"id":3594,"name":"VariableDeclaration","src":"3188:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3408,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3586,"type":"contract ERC20","value":"token"},"id":3595,"name":"Identifier","src":"3211:5:5"}],"id":3596,"name":"MemberAccess","src":"3211:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3669","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3597,"name":"ElementaryTypeNameExpression","src":"3227:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10329,"type":"library SafeERC20","value":"this"},"id":3598,"name":"Identifier","src":"3235:4:5"}],"id":3599,"name":"FunctionCall","src":"3227:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3588,"type":"address","value":"spender"},"id":3600,"name":"Identifier","src":"3242:7:5"}],"id":3601,"name":"FunctionCall","src":"3211:39:5"}],"id":3602,"name":"MemberAccess","src":"3211:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3590,"type":"uint256","value":"value"},"id":3603,"name":"Identifier","src":"3255:5:5"}],"id":3604,"name":"FunctionCall","src":"3211:50:5"}],"id":3605,"name":"VariableDeclarationStatement","src":"3188:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3606,"name":"Identifier","src":"3271:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3586,"type":"contract ERC20","value":"token"},"id":3607,"name":"Identifier","src":"3290:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3608,"name":"Identifier","src":"3297:3:5"}],"id":3609,"name":"MemberAccess","src":"3297:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3417,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3586,"type":"contract ERC20","value":"token"},"id":3610,"name":"Identifier","src":"3320:5:5"}],"id":3611,"name":"MemberAccess","src":"3320:13:5"}],"id":3612,"name":"MemberAccess","src":"3320:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3588,"type":"address","value":"spender"},"id":3613,"name":"Identifier","src":"3344:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3594,"type":"uint256","value":"newAllowance"},"id":3614,"name":"Identifier","src":"3353:12:5"}],"id":3615,"name":"FunctionCall","src":"3297:69:5"}],"id":3616,"name":"FunctionCall","src":"3271:96:5"}],"id":3617,"name":"ExpressionStatement","src":"3271:96:5"}],"id":3618,"name":"Block","src":"3178:196:5"}],"id":3619,"name":"FunctionDefinition","src":"3093:281:5"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":3669,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3668,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":3620,"name":"UserDefinedTypeName","src":"3785:5:5"}],"id":3621,"name":"VariableDeclaration","src":"3785:11:5"},{"attributes":{"constant":false,"name":"data","scope":3668,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3622,"name":"ElementaryTypeName","src":"3798:5:5"}],"id":3623,"name":"VariableDeclaration","src":"3798:17:5"}],"id":3624,"name":"ParameterList","src":"3784:32:5"},{"attributes":{"parameters":[null]},"children":[],"id":3625,"name":"ParameterList","src":"3826:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3626,"name":"Identifier","src":"4344:7:5"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":3305,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3627,"name":"ElementaryTypeNameExpression","src":"4352:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3621,"type":"contract ERC20","value":"token"},"id":3628,"name":"Identifier","src":"4360:5:5"}],"id":3629,"name":"FunctionCall","src":"4352:14:5"}],"id":3630,"name":"MemberAccess","src":"4352:25:5"}],"id":3631,"name":"FunctionCall","src":"4352:27:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":3632,"name":"Literal","src":"4381:33:5"}],"id":3633,"name":"FunctionCall","src":"4344:71:5"}],"id":3634,"name":"ExpressionStatement","src":"4344:71:5"},{"attributes":{"assignments":[3636,3638]},"children":[{"attributes":{"constant":false,"name":"success","scope":3667,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3635,"name":"ElementaryTypeName","src":"4486:4:5"}],"id":3636,"name":"VariableDeclaration","src":"4486:12:5"},{"attributes":{"constant":false,"name":"returndata","scope":3667,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3637,"name":"ElementaryTypeName","src":"4500:5:5"}],"id":3638,"name":"VariableDeclaration","src":"4500:23:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3450","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3639,"name":"ElementaryTypeNameExpression","src":"4527:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3621,"type":"contract ERC20","value":"token"},"id":3640,"name":"Identifier","src":"4535:5:5"}],"id":3641,"name":"FunctionCall","src":"4527:14:5"}],"id":3642,"name":"MemberAccess","src":"4527:19:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3623,"type":"bytes memory","value":"data"},"id":3643,"name":"Identifier","src":"4547:4:5"}],"id":3644,"name":"FunctionCall","src":"4527:25:5"}],"id":3645,"name":"VariableDeclarationStatement","src":"4485:67:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3646,"name":"Identifier","src":"4562:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3636,"type":"bool","value":"success"},"id":3647,"name":"Identifier","src":"4570:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":3648,"name":"Literal","src":"4579:34:5"}],"id":3649,"name":"FunctionCall","src":"4562:52:5"}],"id":3650,"name":"ExpressionStatement","src":"4562:52:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3638,"type":"bytes memory","value":"returndata"},"id":3651,"name":"Identifier","src":"4629:10:5"}],"id":3652,"name":"MemberAccess","src":"4629:17:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3653,"name":"Literal","src":"4649:1:5"}],"id":3654,"name":"BinaryOperation","src":"4629:21:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3655,"name":"Identifier","src":"4750:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":3656,"name":"Identifier","src":"4758:3:5"}],"id":3657,"name":"MemberAccess","src":"4758:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3638,"type":"bytes memory","value":"returndata"},"id":3658,"name":"Identifier","src":"4769:10:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":3659,"name":"ElementaryTypeNameExpression","src":"4782:4:5"}],"id":3660,"name":"TupleExpression","src":"4781:6:5"}],"id":3661,"name":"FunctionCall","src":"4758:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":3662,"name":"Literal","src":"4790:44:5"}],"id":3663,"name":"FunctionCall","src":"4750:85:5"}],"id":3664,"name":"ExpressionStatement","src":"4750:85:5"}],"id":3665,"name":"Block","src":"4652:194:5"}],"id":3666,"name":"IfStatement","src":"4625:221:5"}],"id":3667,"name":"Block","src":"3826:1026:5"}],"id":3668,"name":"FunctionDefinition","src":"3757:1095:5"}],"id":3669,"name":"ContractDefinition","src":"1715:3139:5"}],"id":3670,"name":"SourceUnit","src":"1161:3694:5"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[3802]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3671,"name":"PragmaDirective","src":"0:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[3802],"name":"SafeMath","scope":3803},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3696,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3672,"name":"ElementaryTypeName","src":"847:7:6"}],"id":3673,"name":"VariableDeclaration","src":"847:9:6"},{"attributes":{"constant":false,"name":"b","scope":3696,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3674,"name":"ElementaryTypeName","src":"858:7:6"}],"id":3675,"name":"VariableDeclaration","src":"858:9:6"}],"id":3676,"name":"ParameterList","src":"846:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3696,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3677,"name":"ElementaryTypeName","src":"892:7:6"}],"id":3678,"name":"VariableDeclaration","src":"892:7:6"}],"id":3679,"name":"ParameterList","src":"891:9:6"},{"children":[{"attributes":{"assignments":[3681]},"children":[{"attributes":{"constant":false,"name":"c","scope":3695,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3680,"name":"ElementaryTypeName","src":"911:7:6"}],"id":3681,"name":"VariableDeclaration","src":"911:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"a"},"id":3682,"name":"Identifier","src":"923:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3675,"type":"uint256","value":"b"},"id":3683,"name":"Identifier","src":"927:1:6"}],"id":3684,"name":"BinaryOperation","src":"923:5:6"}],"id":3685,"name":"VariableDeclarationStatement","src":"911:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3686,"name":"Identifier","src":"938:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"c"},"id":3687,"name":"Identifier","src":"946:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3673,"type":"uint256","value":"a"},"id":3688,"name":"Identifier","src":"951:1:6"}],"id":3689,"name":"BinaryOperation","src":"946:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":3690,"name":"Literal","src":"954:29:6"}],"id":3691,"name":"FunctionCall","src":"938:46:6"}],"id":3692,"name":"ExpressionStatement","src":"938:46:6"},{"attributes":{"functionReturnParameters":3679},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3681,"type":"uint256","value":"c"},"id":3693,"name":"Identifier","src":"1002:1:6"}],"id":3694,"name":"Return","src":"995:8:6"}],"id":3695,"name":"Block","src":"901:109:6"}],"id":3696,"name":"FunctionDefinition","src":"834:176:6"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3721,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3697,"name":"ElementaryTypeName","src":"1287:7:6"}],"id":3698,"name":"VariableDeclaration","src":"1287:9:6"},{"attributes":{"constant":false,"name":"b","scope":3721,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3699,"name":"ElementaryTypeName","src":"1298:7:6"}],"id":3700,"name":"VariableDeclaration","src":"1298:9:6"}],"id":3701,"name":"ParameterList","src":"1286:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3721,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3702,"name":"ElementaryTypeName","src":"1332:7:6"}],"id":3703,"name":"VariableDeclaration","src":"1332:7:6"}],"id":3704,"name":"ParameterList","src":"1331:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3705,"name":"Identifier","src":"1351:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3700,"type":"uint256","value":"b"},"id":3706,"name":"Identifier","src":"1359:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3698,"type":"uint256","value":"a"},"id":3707,"name":"Identifier","src":"1364:1:6"}],"id":3708,"name":"BinaryOperation","src":"1359:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":3709,"name":"Literal","src":"1367:32:6"}],"id":3710,"name":"FunctionCall","src":"1351:49:6"}],"id":3711,"name":"ExpressionStatement","src":"1351:49:6"},{"attributes":{"assignments":[3713]},"children":[{"attributes":{"constant":false,"name":"c","scope":3720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3712,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":3713,"name":"VariableDeclaration","src":"1410:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3698,"type":"uint256","value":"a"},"id":3714,"name":"Identifier","src":"1422:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3700,"type":"uint256","value":"b"},"id":3715,"name":"Identifier","src":"1426:1:6"}],"id":3716,"name":"BinaryOperation","src":"1422:5:6"}],"id":3717,"name":"VariableDeclarationStatement","src":"1410:17:6"},{"attributes":{"functionReturnParameters":3704},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3713,"type":"uint256","value":"c"},"id":3718,"name":"Identifier","src":"1445:1:6"}],"id":3719,"name":"Return","src":"1438:8:6"}],"id":3720,"name":"Block","src":"1341:112:6"}],"id":3721,"name":"FunctionDefinition","src":"1274:179:6"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3722,"name":"ElementaryTypeName","src":"1706:7:6"}],"id":3723,"name":"VariableDeclaration","src":"1706:9:6"},{"attributes":{"constant":false,"name":"b","scope":3755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3724,"name":"ElementaryTypeName","src":"1717:7:6"}],"id":3725,"name":"VariableDeclaration","src":"1717:9:6"}],"id":3726,"name":"ParameterList","src":"1705:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3755,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3727,"name":"ElementaryTypeName","src":"1751:7:6"}],"id":3728,"name":"VariableDeclaration","src":"1751:7:6"}],"id":3729,"name":"ParameterList","src":"1750:9:6"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3723,"type":"uint256","value":"a"},"id":3730,"name":"Identifier","src":"1991:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3731,"name":"Literal","src":"1996:1:6"}],"id":3732,"name":"BinaryOperation","src":"1991:6:6"},{"children":[{"attributes":{"functionReturnParameters":3729},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3733,"name":"Literal","src":"2020:1:6"}],"id":3734,"name":"Return","src":"2013:8:6"}],"id":3735,"name":"Block","src":"1999:33:6"}],"id":3736,"name":"IfStatement","src":"1987:45:6"},{"attributes":{"assignments":[3738]},"children":[{"attributes":{"constant":false,"name":"c","scope":3754,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3737,"name":"ElementaryTypeName","src":"2042:7:6"}],"id":3738,"name":"VariableDeclaration","src":"2042:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3723,"type":"uint256","value":"a"},"id":3739,"name":"Identifier","src":"2054:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3725,"type":"uint256","value":"b"},"id":3740,"name":"Identifier","src":"2058:1:6"}],"id":3741,"name":"BinaryOperation","src":"2054:5:6"}],"id":3742,"name":"VariableDeclarationStatement","src":"2042:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3743,"name":"Identifier","src":"2069:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3738,"type":"uint256","value":"c"},"id":3744,"name":"Identifier","src":"2077:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3723,"type":"uint256","value":"a"},"id":3745,"name":"Identifier","src":"2081:1:6"}],"id":3746,"name":"BinaryOperation","src":"2077:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3725,"type":"uint256","value":"b"},"id":3747,"name":"Identifier","src":"2086:1:6"}],"id":3748,"name":"BinaryOperation","src":"2077:10:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":3749,"name":"Literal","src":"2089:35:6"}],"id":3750,"name":"FunctionCall","src":"2069:56:6"}],"id":3751,"name":"ExpressionStatement","src":"2069:56:6"},{"attributes":{"functionReturnParameters":3729},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3738,"type":"uint256","value":"c"},"id":3752,"name":"Identifier","src":"2143:1:6"}],"id":3753,"name":"Return","src":"2136:8:6"}],"id":3754,"name":"Block","src":"1760:391:6"}],"id":3755,"name":"FunctionDefinition","src":"1693:458:6"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3756,"name":"ElementaryTypeName","src":"2619:7:6"}],"id":3757,"name":"VariableDeclaration","src":"2619:9:6"},{"attributes":{"constant":false,"name":"b","scope":3780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3758,"name":"ElementaryTypeName","src":"2630:7:6"}],"id":3759,"name":"VariableDeclaration","src":"2630:9:6"}],"id":3760,"name":"ParameterList","src":"2618:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3761,"name":"ElementaryTypeName","src":"2664:7:6"}],"id":3762,"name":"VariableDeclaration","src":"2664:7:6"}],"id":3763,"name":"ParameterList","src":"2663:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3764,"name":"Identifier","src":"2749:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3759,"type":"uint256","value":"b"},"id":3765,"name":"Identifier","src":"2757:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3766,"name":"Literal","src":"2761:1:6"}],"id":3767,"name":"BinaryOperation","src":"2757:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":3768,"name":"Literal","src":"2764:28:6"}],"id":3769,"name":"FunctionCall","src":"2749:44:6"}],"id":3770,"name":"ExpressionStatement","src":"2749:44:6"},{"attributes":{"assignments":[3772]},"children":[{"attributes":{"constant":false,"name":"c","scope":3779,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3771,"name":"ElementaryTypeName","src":"2803:7:6"}],"id":3772,"name":"VariableDeclaration","src":"2803:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3757,"type":"uint256","value":"a"},"id":3773,"name":"Identifier","src":"2815:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3759,"type":"uint256","value":"b"},"id":3774,"name":"Identifier","src":"2819:1:6"}],"id":3775,"name":"BinaryOperation","src":"2815:5:6"}],"id":3776,"name":"VariableDeclarationStatement","src":"2803:17:6"},{"attributes":{"functionReturnParameters":3763},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3772,"type":"uint256","value":"c"},"id":3777,"name":"Identifier","src":"2924:1:6"}],"id":3778,"name":"Return","src":"2917:8:6"}],"id":3779,"name":"Block","src":"2673:259:6"}],"id":3780,"name":"FunctionDefinition","src":"2606:326:6"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":3802,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3781,"name":"ElementaryTypeName","src":"3389:7:6"}],"id":3782,"name":"VariableDeclaration","src":"3389:9:6"},{"attributes":{"constant":false,"name":"b","scope":3801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3783,"name":"ElementaryTypeName","src":"3400:7:6"}],"id":3784,"name":"VariableDeclaration","src":"3400:9:6"}],"id":3785,"name":"ParameterList","src":"3388:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3786,"name":"ElementaryTypeName","src":"3434:7:6"}],"id":3787,"name":"VariableDeclaration","src":"3434:7:6"}],"id":3788,"name":"ParameterList","src":"3433:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3789,"name":"Identifier","src":"3453:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3784,"type":"uint256","value":"b"},"id":3790,"name":"Identifier","src":"3461:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3791,"name":"Literal","src":"3466:1:6"}],"id":3792,"name":"BinaryOperation","src":"3461:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":3793,"name":"Literal","src":"3469:26:6"}],"id":3794,"name":"FunctionCall","src":"3453:43:6"}],"id":3795,"name":"ExpressionStatement","src":"3453:43:6"},{"attributes":{"functionReturnParameters":3788},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3782,"type":"uint256","value":"a"},"id":3796,"name":"Identifier","src":"3513:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3784,"type":"uint256","value":"b"},"id":3797,"name":"Identifier","src":"3517:1:6"}],"id":3798,"name":"BinaryOperation","src":"3513:5:6"}],"id":3799,"name":"Return","src":"3506:12:6"}],"id":3800,"name":"Block","src":"3443:82:6"}],"id":3801,"name":"FunctionDefinition","src":"3376:149:6"}],"id":3802,"name":"ContractDefinition","src":"589:2938:6"}],"id":3803,"name":"SourceUnit","src":"0:3528:6"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[3113]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":2978,"name":"PragmaDirective","src":"1400:23:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[3113],"name":"ENS","scope":3114},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2979,"name":"ElementaryTypeName","src":"1534:7:7"}],"id":2980,"name":"VariableDeclaration","src":"1534:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":2986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2981,"name":"ElementaryTypeName","src":"1557:7:7"}],"id":2982,"name":"VariableDeclaration","src":"1557:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":2986,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2983,"name":"ElementaryTypeName","src":"1581:7:7"}],"id":2984,"name":"VariableDeclaration","src":"1581:14:7"}],"id":2985,"name":"ParameterList","src":"1533:63:7"}],"id":2986,"name":"EventDefinition","src":"1519:78:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2992,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2987,"name":"ElementaryTypeName","src":"1695:7:7"}],"id":2988,"name":"VariableDeclaration","src":"1695:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":2992,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2989,"name":"ElementaryTypeName","src":"1718:7:7"}],"id":2990,"name":"VariableDeclaration","src":"1718:14:7"}],"id":2991,"name":"ParameterList","src":"1694:39:7"}],"id":2992,"name":"EventDefinition","src":"1680:54:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":2998,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2993,"name":"ElementaryTypeName","src":"1810:7:7"}],"id":2994,"name":"VariableDeclaration","src":"1810:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":2998,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2995,"name":"ElementaryTypeName","src":"1833:7:7"}],"id":2996,"name":"VariableDeclaration","src":"1833:17:7"}],"id":2997,"name":"ParameterList","src":"1809:42:7"}],"id":2998,"name":"EventDefinition","src":"1792:60:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":3004,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2999,"name":"ElementaryTypeName","src":"1916:7:7"}],"id":3000,"name":"VariableDeclaration","src":"1916:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":3004,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3001,"name":"ElementaryTypeName","src":"1939:6:7"}],"id":3002,"name":"VariableDeclaration","src":"1939:11:7"}],"id":3003,"name":"ParameterList","src":"1915:36:7"}],"id":3004,"name":"EventDefinition","src":"1903:49:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":3012,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3005,"name":"ElementaryTypeName","src":"2031:7:7"}],"id":3006,"name":"VariableDeclaration","src":"2031:22:7"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":3012,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3007,"name":"ElementaryTypeName","src":"2055:7:7"}],"id":3008,"name":"VariableDeclaration","src":"2055:25:7"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":3012,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3009,"name":"ElementaryTypeName","src":"2082:4:7"}],"id":3010,"name":"VariableDeclaration","src":"2082:14:7"}],"id":3011,"name":"ParameterList","src":"2030:67:7"}],"id":3012,"name":"EventDefinition","src":"2010:88:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3023,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3013,"name":"ElementaryTypeName","src":"2123:7:7"}],"id":3014,"name":"VariableDeclaration","src":"2123:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":3023,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3015,"name":"ElementaryTypeName","src":"2138:7:7"}],"id":3016,"name":"VariableDeclaration","src":"2138:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":3023,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3017,"name":"ElementaryTypeName","src":"2154:7:7"}],"id":3018,"name":"VariableDeclaration","src":"2154:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":3023,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3019,"name":"ElementaryTypeName","src":"2173:6:7"}],"id":3020,"name":"VariableDeclaration","src":"2173:11:7"}],"id":3021,"name":"ParameterList","src":"2122:63:7"},{"attributes":{"parameters":[null]},"children":[],"id":3022,"name":"ParameterList","src":"2194:0:7"}],"id":3023,"name":"FunctionDefinition","src":"2104:91:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3036,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3024,"name":"ElementaryTypeName","src":"2226:7:7"}],"id":3025,"name":"VariableDeclaration","src":"2226:13:7"},{"attributes":{"constant":false,"name":"_label","scope":3036,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3026,"name":"ElementaryTypeName","src":"2241:7:7"}],"id":3027,"name":"VariableDeclaration","src":"2241:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":3036,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3028,"name":"ElementaryTypeName","src":"2257:7:7"}],"id":3029,"name":"VariableDeclaration","src":"2257:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":3036,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3030,"name":"ElementaryTypeName","src":"2273:7:7"}],"id":3031,"name":"VariableDeclaration","src":"2273:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":3036,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3032,"name":"ElementaryTypeName","src":"2292:6:7"}],"id":3033,"name":"VariableDeclaration","src":"2292:11:7"}],"id":3034,"name":"ParameterList","src":"2225:79:7"},{"attributes":{"parameters":[null]},"children":[],"id":3035,"name":"ParameterList","src":"2313:0:7"}],"id":3036,"name":"FunctionDefinition","src":"2200:114:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3047,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3037,"name":"ElementaryTypeName","src":"2344:7:7"}],"id":3038,"name":"VariableDeclaration","src":"2344:13:7"},{"attributes":{"constant":false,"name":"_label","scope":3047,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3039,"name":"ElementaryTypeName","src":"2359:7:7"}],"id":3040,"name":"VariableDeclaration","src":"2359:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":3047,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3041,"name":"ElementaryTypeName","src":"2375:7:7"}],"id":3042,"name":"VariableDeclaration","src":"2375:14:7"}],"id":3043,"name":"ParameterList","src":"2343:47:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3047,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3044,"name":"ElementaryTypeName","src":"2408:7:7"}],"id":3045,"name":"VariableDeclaration","src":"2408:7:7"}],"id":3046,"name":"ParameterList","src":"2407:9:7"}],"id":3047,"name":"FunctionDefinition","src":"2319:98:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3054,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3048,"name":"ElementaryTypeName","src":"2443:7:7"}],"id":3049,"name":"VariableDeclaration","src":"2443:13:7"},{"attributes":{"constant":false,"name":"_resolver","scope":3054,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3050,"name":"ElementaryTypeName","src":"2458:7:7"}],"id":3051,"name":"VariableDeclaration","src":"2458:17:7"}],"id":3052,"name":"ParameterList","src":"2442:34:7"},{"attributes":{"parameters":[null]},"children":[],"id":3053,"name":"ParameterList","src":"2485:0:7"}],"id":3054,"name":"FunctionDefinition","src":"2422:64:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3061,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3055,"name":"ElementaryTypeName","src":"2509:7:7"}],"id":3056,"name":"VariableDeclaration","src":"2509:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":3061,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3057,"name":"ElementaryTypeName","src":"2524:7:7"}],"id":3058,"name":"VariableDeclaration","src":"2524:14:7"}],"id":3059,"name":"ParameterList","src":"2508:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":3060,"name":"ParameterList","src":"2548:0:7"}],"id":3061,"name":"FunctionDefinition","src":"2491:58:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3062,"name":"ElementaryTypeName","src":"2570:7:7"}],"id":3063,"name":"VariableDeclaration","src":"2570:13:7"},{"attributes":{"constant":false,"name":"_ttl","scope":3068,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3064,"name":"ElementaryTypeName","src":"2585:6:7"}],"id":3065,"name":"VariableDeclaration","src":"2585:11:7"}],"id":3066,"name":"ParameterList","src":"2569:28:7"},{"attributes":{"parameters":[null]},"children":[],"id":3067,"name":"ParameterList","src":"2606:0:7"}],"id":3068,"name":"FunctionDefinition","src":"2554:53:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":3113,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":3075,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3069,"name":"ElementaryTypeName","src":"2639:7:7"}],"id":3070,"name":"VariableDeclaration","src":"2639:17:7"},{"attributes":{"constant":false,"name":"_approved","scope":3075,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3071,"name":"ElementaryTypeName","src":"2658:4:7"}],"id":3072,"name":"VariableDeclaration","src":"2658:14:7"}],"id":3073,"name":"ParameterList","src":"2638:35:7"},{"attributes":{"parameters":[null]},"children":[],"id":3074,"name":"ParameterList","src":"2682:0:7"}],"id":3075,"name":"FunctionDefinition","src":"2612:71:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3082,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3076,"name":"ElementaryTypeName","src":"2703:7:7"}],"id":3077,"name":"VariableDeclaration","src":"2703:13:7"}],"id":3078,"name":"ParameterList","src":"2702:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3082,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3079,"name":"ElementaryTypeName","src":"2741:7:7"}],"id":3080,"name":"VariableDeclaration","src":"2741:7:7"}],"id":3081,"name":"ParameterList","src":"2740:9:7"}],"id":3082,"name":"FunctionDefinition","src":"2688:62:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3089,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3083,"name":"ElementaryTypeName","src":"2773:7:7"}],"id":3084,"name":"VariableDeclaration","src":"2773:13:7"}],"id":3085,"name":"ParameterList","src":"2772:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3089,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3086,"name":"ElementaryTypeName","src":"2811:7:7"}],"id":3087,"name":"VariableDeclaration","src":"2811:7:7"}],"id":3088,"name":"ParameterList","src":"2810:9:7"}],"id":3089,"name":"FunctionDefinition","src":"2755:65:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3096,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3090,"name":"ElementaryTypeName","src":"2838:7:7"}],"id":3091,"name":"VariableDeclaration","src":"2838:13:7"}],"id":3092,"name":"ParameterList","src":"2837:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3096,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":3093,"name":"ElementaryTypeName","src":"2876:6:7"}],"id":3094,"name":"VariableDeclaration","src":"2876:6:7"}],"id":3095,"name":"ParameterList","src":"2875:8:7"}],"id":3096,"name":"FunctionDefinition","src":"2825:59:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3103,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3097,"name":"ElementaryTypeName","src":"2911:7:7"}],"id":3098,"name":"VariableDeclaration","src":"2911:13:7"}],"id":3099,"name":"ParameterList","src":"2910:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3103,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3100,"name":"ElementaryTypeName","src":"2949:4:7"}],"id":3101,"name":"VariableDeclaration","src":"2949:4:7"}],"id":3102,"name":"ParameterList","src":"2948:6:7"}],"id":3103,"name":"FunctionDefinition","src":"2889:66:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":3113,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":3112,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3104,"name":"ElementaryTypeName","src":"2986:7:7"}],"id":3105,"name":"VariableDeclaration","src":"2986:14:7"},{"attributes":{"constant":false,"name":"_operator","scope":3112,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3106,"name":"ElementaryTypeName","src":"3002:7:7"}],"id":3107,"name":"VariableDeclaration","src":"3002:17:7"}],"id":3108,"name":"ParameterList","src":"2985:35:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":3112,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3109,"name":"ElementaryTypeName","src":"3044:4:7"}],"id":3110,"name":"VariableDeclaration","src":"3044:4:7"}],"id":3111,"name":"ParameterList","src":"3043:6:7"}],"id":3112,"name":"FunctionDefinition","src":"2960:90:7"}],"id":3113,"name":"ContractDefinition","src":"1425:1627:7"}],"id":3114,"name":"SourceUnit","src":"1400:1653:7"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[10292]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9573,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[10292],"name":"ENSBytesUtils","scope":10293},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9595,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9574,"name":"ElementaryTypeName","src":"325:5:8"}],"id":9575,"name":"VariableDeclaration","src":"325:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9595,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9576,"name":"ElementaryTypeName","src":"344:4:8"}],"id":9577,"name":"VariableDeclaration","src":"344:11:8"},{"attributes":{"constant":false,"name":"len","scope":9595,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9578,"name":"ElementaryTypeName","src":"357:4:8"}],"id":9579,"name":"VariableDeclaration","src":"357:8:8"}],"id":9580,"name":"ParameterList","src":"324:42:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9595,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9581,"name":"ElementaryTypeName","src":"390:7:8"}],"id":9582,"name":"VariableDeclaration","src":"390:11:8"}],"id":9583,"name":"ParameterList","src":"389:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9584,"name":"Identifier","src":"413:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9577,"type":"uint256","value":"offset"},"id":9585,"name":"Identifier","src":"421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9579,"type":"uint256","value":"len"},"id":9586,"name":"Identifier","src":"430:3:8"}],"id":9587,"name":"BinaryOperation","src":"421:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9575,"type":"bytes memory","value":"self"},"id":9588,"name":"Identifier","src":"437:4:8"}],"id":9589,"name":"MemberAccess","src":"437:11:8"}],"id":9590,"name":"BinaryOperation","src":"421:27:8"}],"id":9591,"name":"FunctionCall","src":"413:36:8"}],"id":9592,"name":"ExpressionStatement","src":"413:36:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9582,"isOffset":false,"isSlot":false,"src":"482:3:8","valueSize":1}},{"self":{"declaration":9575,"isOffset":false,"isSlot":false,"src":"507:4:8","valueSize":1}},{"offset":{"declaration":9577,"isOffset":false,"isSlot":false,"src":"518:6:8","valueSize":1}},{"len":{"declaration":9579,"isOffset":false,"isSlot":false,"src":"527:3:8","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":9593,"name":"InlineAssembly","src":"459:82:8"}],"id":9594,"name":"Block","src":"403:144:8"}],"id":9595,"name":"FunctionDefinition","src":"309:238:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9616,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9596,"name":"ElementaryTypeName","src":"920:5:8"}],"id":9597,"name":"VariableDeclaration","src":"920:17:8"},{"attributes":{"constant":false,"name":"other","scope":9616,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9598,"name":"ElementaryTypeName","src":"939:5:8"}],"id":9599,"name":"VariableDeclaration","src":"939:18:8"}],"id":9600,"name":"ParameterList","src":"919:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9616,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9601,"name":"ElementaryTypeName","src":"982:3:8"}],"id":9602,"name":"VariableDeclaration","src":"982:3:8"}],"id":9603,"name":"ParameterList","src":"981:5:8"},{"children":[{"attributes":{"functionReturnParameters":9603},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9616,9748],"referencedDeclaration":9748,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":9604,"name":"Identifier","src":"1004:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9597,"type":"bytes memory","value":"self"},"id":9605,"name":"Identifier","src":"1012:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9606,"name":"Literal","src":"1018:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9597,"type":"bytes memory","value":"self"},"id":9607,"name":"Identifier","src":"1021:4:8"}],"id":9608,"name":"MemberAccess","src":"1021:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9599,"type":"bytes memory","value":"other"},"id":9609,"name":"Identifier","src":"1034:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9610,"name":"Literal","src":"1041:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9599,"type":"bytes memory","value":"other"},"id":9611,"name":"Identifier","src":"1044:5:8"}],"id":9612,"name":"MemberAccess","src":"1044:12:8"}],"id":9613,"name":"FunctionCall","src":"1004:53:8"}],"id":9614,"name":"Return","src":"997:60:8"}],"id":9615,"name":"Block","src":"987:77:8"}],"id":9616,"name":"FunctionDefinition","src":"903:161:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9748,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9617,"name":"ElementaryTypeName","src":"1694:5:8"}],"id":9618,"name":"VariableDeclaration","src":"1694:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9619,"name":"ElementaryTypeName","src":"1713:4:8"}],"id":9620,"name":"VariableDeclaration","src":"1713:11:8"},{"attributes":{"constant":false,"name":"len","scope":9748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9621,"name":"ElementaryTypeName","src":"1726:4:8"}],"id":9622,"name":"VariableDeclaration","src":"1726:8:8"},{"attributes":{"constant":false,"name":"other","scope":9748,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9623,"name":"ElementaryTypeName","src":"1736:5:8"}],"id":9624,"name":"VariableDeclaration","src":"1736:18:8"},{"attributes":{"constant":false,"name":"otheroffset","scope":9748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9625,"name":"ElementaryTypeName","src":"1756:4:8"}],"id":9626,"name":"VariableDeclaration","src":"1756:16:8"},{"attributes":{"constant":false,"name":"otherlen","scope":9748,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9627,"name":"ElementaryTypeName","src":"1774:4:8"}],"id":9628,"name":"VariableDeclaration","src":"1774:13:8"}],"id":9629,"name":"ParameterList","src":"1693:95:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9748,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9630,"name":"ElementaryTypeName","src":"1812:3:8"}],"id":9631,"name":"VariableDeclaration","src":"1812:3:8"}],"id":9632,"name":"ParameterList","src":"1811:5:8"},{"children":[{"attributes":{"assignments":[9634]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":9747,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9633,"name":"ElementaryTypeName","src":"1827:4:8"}],"id":9634,"name":"VariableDeclaration","src":"1827:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9622,"type":"uint256","value":"len"},"id":9635,"name":"Identifier","src":"1843:3:8"}],"id":9636,"name":"VariableDeclarationStatement","src":"1827:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"uint256","value":"otherlen"},"id":9637,"name":"Identifier","src":"1860:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9622,"type":"uint256","value":"len"},"id":9638,"name":"Identifier","src":"1871:3:8"}],"id":9639,"name":"BinaryOperation","src":"1860:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"uint256","value":"shortest"},"id":9640,"name":"Identifier","src":"1884:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"uint256","value":"otherlen"},"id":9641,"name":"Identifier","src":"1895:8:8"}],"id":9642,"name":"Assignment","src":"1884:19:8"}],"id":9643,"name":"ExpressionStatement","src":"1884:19:8"}],"id":9644,"name":"IfStatement","src":"1856:47:8"},{"attributes":{"assignments":[9646],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":9747,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9645,"name":"ElementaryTypeName","src":"1914:4:8"}],"id":9646,"name":"VariableDeclaration","src":"1914:12:8"}],"id":9647,"name":"VariableDeclarationStatement","src":"1914:12:8"},{"attributes":{"assignments":[9649],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":9747,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9648,"name":"ElementaryTypeName","src":"1936:4:8"}],"id":9649,"name":"VariableDeclaration","src":"1936:13:8"}],"id":9650,"name":"VariableDeclarationStatement","src":"1936:13:8"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":9646,"isOffset":false,"isSlot":false,"src":"1983:7:8","valueSize":1}},{"otherptr":{"declaration":9649,"isOffset":false,"isSlot":false,"src":"2033:8:8","valueSize":1}},{"offset":{"declaration":9620,"isOffset":false,"isSlot":false,"src":"2008:6:8","valueSize":1}},{"self":{"declaration":9618,"isOffset":false,"isSlot":false,"src":"1998:4:8","valueSize":1}},{"otheroffset":{"declaration":9626,"isOffset":false,"isSlot":false,"src":"2060:11:8","valueSize":1}},{"other":{"declaration":9624,"isOffset":false,"isSlot":false,"src":"2049:5:8","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":9651,"name":"InlineAssembly","src":"1960:127:8"},{"children":[{"attributes":{"assignments":[9653]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9738,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9652,"name":"ElementaryTypeName","src":"2101:4:8"}],"id":9653,"name":"VariableDeclaration","src":"2101:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9654,"name":"Literal","src":"2112:1:8"}],"id":9655,"name":"VariableDeclarationStatement","src":"2101:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"idx"},"id":9656,"name":"Identifier","src":"2115:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"uint256","value":"shortest"},"id":9657,"name":"Identifier","src":"2121:8:8"}],"id":9658,"name":"BinaryOperation","src":"2115:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"idx"},"id":9659,"name":"Identifier","src":"2131:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9660,"name":"Literal","src":"2138:2:8"}],"id":9661,"name":"Assignment","src":"2131:9:8"}],"id":9662,"name":"ExpressionStatement","src":"2131:9:8"},{"children":[{"attributes":{"assignments":[9664],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":9737,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9663,"name":"ElementaryTypeName","src":"2156:4:8"}],"id":9664,"name":"VariableDeclaration","src":"2156:6:8"}],"id":9665,"name":"VariableDeclarationStatement","src":"2156:6:8"},{"attributes":{"assignments":[9667],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":9737,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9666,"name":"ElementaryTypeName","src":"2176:4:8"}],"id":9667,"name":"VariableDeclaration","src":"2176:6:8"}],"id":9668,"name":"VariableDeclarationStatement","src":"2176:6:8"},{"attributes":{"externalReferences":[{"a":{"declaration":9664,"isOffset":false,"isSlot":false,"src":"2223:1:8","valueSize":1}},{"selfptr":{"declaration":9646,"isOffset":false,"isSlot":false,"src":"2234:7:8","valueSize":1}},{"b":{"declaration":9667,"isOffset":false,"isSlot":false,"src":"2259:1:8","valueSize":1}},{"otherptr":{"declaration":9649,"isOffset":false,"isSlot":false,"src":"2270:8:8","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":9669,"name":"InlineAssembly","src":"2196:97:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9664,"type":"uint256","value":"a"},"id":9670,"name":"Identifier","src":"2310:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9667,"type":"uint256","value":"b"},"id":9671,"name":"Identifier","src":"2315:1:8"}],"id":9672,"name":"BinaryOperation","src":"2310:6:8"},{"children":[{"attributes":{"assignments":[9674],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":9727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9673,"name":"ElementaryTypeName","src":"2397:4:8"}],"id":9674,"name":"VariableDeclaration","src":"2397:9:8"}],"id":9675,"name":"VariableDeclarationStatement","src":"2397:9:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"uint256","value":"shortest"},"id":9676,"name":"Identifier","src":"2428:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9677,"name":"Literal","src":"2439:2:8"}],"id":9678,"name":"BinaryOperation","src":"2428:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9674,"type":"uint256","value":"mask"},"id":9679,"name":"Identifier","src":"2465:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":9680,"name":"ElementaryTypeNameExpression","src":"2472:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9681,"name":"Literal","src":"2482:1:8"}],"id":9682,"name":"UnaryOperation","src":"2480:3:8"}],"id":9683,"name":"FunctionCall","src":"2472:12:8"}],"id":9684,"name":"Assignment","src":"2465:19:8"}],"id":9685,"name":"ExpressionStatement","src":"2465:19:8"}],"id":9686,"name":"Block","src":"2443:80:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9674,"type":"uint256","value":"mask"},"id":9687,"name":"Identifier","src":"2551:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9688,"name":"Literal","src":"2560:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9689,"name":"Literal","src":"2566:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9690,"name":"Literal","src":"2571:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9634,"type":"uint256","value":"shortest"},"id":9691,"name":"Identifier","src":"2576:8:8"}],"id":9692,"name":"BinaryOperation","src":"2571:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"idx"},"id":9693,"name":"Identifier","src":"2587:3:8"}],"id":9694,"name":"BinaryOperation","src":"2571:19:8"}],"id":9695,"name":"TupleExpression","src":"2570:21:8"}],"id":9696,"name":"BinaryOperation","src":"2566:25:8"}],"id":9697,"name":"TupleExpression","src":"2565:27:8"}],"id":9698,"name":"BinaryOperation","src":"2560:32:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9699,"name":"Literal","src":"2595:1:8"}],"id":9700,"name":"BinaryOperation","src":"2560:36:8"}],"id":9701,"name":"TupleExpression","src":"2559:38:8"}],"id":9702,"name":"UnaryOperation","src":"2558:39:8"}],"id":9703,"name":"Assignment","src":"2551:46:8"}],"id":9704,"name":"ExpressionStatement","src":"2551:46:8"}],"id":9705,"name":"Block","src":"2529:87:8"}],"id":9706,"name":"IfStatement","src":"2424:192:8"},{"attributes":{"assignments":[9708]},"children":[{"attributes":{"constant":false,"name":"diff","scope":9727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9707,"name":"ElementaryTypeName","src":"2633:4:8"}],"id":9708,"name":"VariableDeclaration","src":"2633:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9664,"type":"uint256","value":"a"},"id":9709,"name":"Identifier","src":"2646:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9674,"type":"uint256","value":"mask"},"id":9710,"name":"Identifier","src":"2650:4:8"}],"id":9711,"name":"BinaryOperation","src":"2646:8:8"}],"id":9712,"name":"TupleExpression","src":"2645:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9667,"type":"uint256","value":"b"},"id":9713,"name":"Identifier","src":"2659:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9674,"type":"uint256","value":"mask"},"id":9714,"name":"Identifier","src":"2663:4:8"}],"id":9715,"name":"BinaryOperation","src":"2659:8:8"}],"id":9716,"name":"TupleExpression","src":"2658:10:8"}],"id":9717,"name":"BinaryOperation","src":"2645:23:8"}],"id":9718,"name":"VariableDeclarationStatement","src":"2633:35:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9708,"type":"uint256","value":"diff"},"id":9719,"name":"Identifier","src":"2690:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9720,"name":"Literal","src":"2698:1:8"}],"id":9721,"name":"BinaryOperation","src":"2690:9:8"},{"attributes":{"functionReturnParameters":9632},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9722,"name":"ElementaryTypeNameExpression","src":"2724:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9708,"type":"uint256","value":"diff"},"id":9723,"name":"Identifier","src":"2728:4:8"}],"id":9724,"name":"FunctionCall","src":"2724:9:8"}],"id":9725,"name":"Return","src":"2717:16:8"}],"id":9726,"name":"IfStatement","src":"2686:47:8"}],"id":9727,"name":"Block","src":"2318:430:8"}],"id":9728,"name":"IfStatement","src":"2306:442:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9646,"type":"uint256","value":"selfptr"},"id":9729,"name":"Identifier","src":"2761:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9730,"name":"Literal","src":"2772:2:8"}],"id":9731,"name":"Assignment","src":"2761:13:8"}],"id":9732,"name":"ExpressionStatement","src":"2761:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9649,"type":"uint256","value":"otherptr"},"id":9733,"name":"Identifier","src":"2788:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9734,"name":"Literal","src":"2800:2:8"}],"id":9735,"name":"Assignment","src":"2788:14:8"}],"id":9736,"name":"ExpressionStatement","src":"2788:14:8"}],"id":9737,"name":"Block","src":"2142:671:8"}],"id":9738,"name":"ForStatement","src":"2096:717:8"},{"attributes":{"functionReturnParameters":9632},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9739,"name":"ElementaryTypeNameExpression","src":"2830:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9622,"type":"uint256","value":"len"},"id":9740,"name":"Identifier","src":"2834:3:8"}],"id":9741,"name":"FunctionCall","src":"2830:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9742,"name":"ElementaryTypeNameExpression","src":"2841:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"uint256","value":"otherlen"},"id":9743,"name":"Identifier","src":"2845:8:8"}],"id":9744,"name":"FunctionCall","src":"2841:13:8"}],"id":9745,"name":"BinaryOperation","src":"2830:24:8"}],"id":9746,"name":"Return","src":"2823:31:8"}],"id":9747,"name":"Block","src":"1817:1044:8"}],"id":9748,"name":"FunctionDefinition","src":"1677:1184:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9776,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9749,"name":"ElementaryTypeName","src":"3295:5:8"}],"id":9750,"name":"VariableDeclaration","src":"3295:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9751,"name":"ElementaryTypeName","src":"3314:4:8"}],"id":9752,"name":"VariableDeclaration","src":"3314:11:8"},{"attributes":{"constant":false,"name":"other","scope":9776,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9753,"name":"ElementaryTypeName","src":"3327:5:8"}],"id":9754,"name":"VariableDeclaration","src":"3327:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9755,"name":"ElementaryTypeName","src":"3347:4:8"}],"id":9756,"name":"VariableDeclaration","src":"3347:16:8"},{"attributes":{"constant":false,"name":"len","scope":9776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9757,"name":"ElementaryTypeName","src":"3365:4:8"}],"id":9758,"name":"VariableDeclaration","src":"3365:8:8"}],"id":9759,"name":"ParameterList","src":"3294:80:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9776,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9760,"name":"ElementaryTypeName","src":"3398:4:8"}],"id":9761,"name":"VariableDeclaration","src":"3398:4:8"}],"id":9762,"name":"ParameterList","src":"3397:6:8"},{"children":[{"attributes":{"functionReturnParameters":9762},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9595,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9763,"name":"Identifier","src":"3421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9750,"type":"bytes memory","value":"self"},"id":9764,"name":"Identifier","src":"3428:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9752,"type":"uint256","value":"offset"},"id":9765,"name":"Identifier","src":"3434:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9758,"type":"uint256","value":"len"},"id":9766,"name":"Identifier","src":"3442:3:8"}],"id":9767,"name":"FunctionCall","src":"3421:25:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9595,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9768,"name":"Identifier","src":"3450:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9754,"type":"bytes memory","value":"other"},"id":9769,"name":"Identifier","src":"3457:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9756,"type":"uint256","value":"otherOffset"},"id":9770,"name":"Identifier","src":"3464:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9758,"type":"uint256","value":"len"},"id":9771,"name":"Identifier","src":"3477:3:8"}],"id":9772,"name":"FunctionCall","src":"3450:31:8"}],"id":9773,"name":"BinaryOperation","src":"3421:60:8"}],"id":9774,"name":"Return","src":"3414:67:8"}],"id":9775,"name":"Block","src":"3404:84:8"}],"id":9776,"name":"FunctionDefinition","src":"3279:209:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9808,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9777,"name":"ElementaryTypeName","src":"3887:5:8"}],"id":9778,"name":"VariableDeclaration","src":"3887:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9779,"name":"ElementaryTypeName","src":"3906:4:8"}],"id":9780,"name":"VariableDeclaration","src":"3906:11:8"},{"attributes":{"constant":false,"name":"other","scope":9808,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9781,"name":"ElementaryTypeName","src":"3919:5:8"}],"id":9782,"name":"VariableDeclaration","src":"3919:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":9808,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9783,"name":"ElementaryTypeName","src":"3939:4:8"}],"id":9784,"name":"VariableDeclaration","src":"3939:16:8"}],"id":9785,"name":"ParameterList","src":"3886:70:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9808,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9786,"name":"ElementaryTypeName","src":"3980:4:8"}],"id":9787,"name":"VariableDeclaration","src":"3980:4:8"}],"id":9788,"name":"ParameterList","src":"3979:6:8"},{"children":[{"attributes":{"functionReturnParameters":9788},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9595,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9789,"name":"Identifier","src":"4003:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9778,"type":"bytes memory","value":"self"},"id":9790,"name":"Identifier","src":"4010:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9780,"type":"uint256","value":"offset"},"id":9791,"name":"Identifier","src":"4016:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9778,"type":"bytes memory","value":"self"},"id":9792,"name":"Identifier","src":"4024:4:8"}],"id":9793,"name":"MemberAccess","src":"4024:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9780,"type":"uint256","value":"offset"},"id":9794,"name":"Identifier","src":"4038:6:8"}],"id":9795,"name":"BinaryOperation","src":"4024:20:8"}],"id":9796,"name":"FunctionCall","src":"4003:42:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9595,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9797,"name":"Identifier","src":"4049:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9782,"type":"bytes memory","value":"other"},"id":9798,"name":"Identifier","src":"4056:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9784,"type":"uint256","value":"otherOffset"},"id":9799,"name":"Identifier","src":"4063:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9782,"type":"bytes memory","value":"other"},"id":9800,"name":"Identifier","src":"4076:5:8"}],"id":9801,"name":"MemberAccess","src":"4076:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9784,"type":"uint256","value":"otherOffset"},"id":9802,"name":"Identifier","src":"4091:11:8"}],"id":9803,"name":"BinaryOperation","src":"4076:26:8"}],"id":9804,"name":"FunctionCall","src":"4049:54:8"}],"id":9805,"name":"BinaryOperation","src":"4003:100:8"}],"id":9806,"name":"Return","src":"3996:107:8"}],"id":9807,"name":"Block","src":"3986:124:8"}],"id":9808,"name":"FunctionDefinition","src":"3871:239:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9837,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9809,"name":"ElementaryTypeName","src":"4478:5:8"}],"id":9810,"name":"VariableDeclaration","src":"4478:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9837,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9811,"name":"ElementaryTypeName","src":"4497:4:8"}],"id":9812,"name":"VariableDeclaration","src":"4497:11:8"},{"attributes":{"constant":false,"name":"other","scope":9837,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9813,"name":"ElementaryTypeName","src":"4510:5:8"}],"id":9814,"name":"VariableDeclaration","src":"4510:18:8"}],"id":9815,"name":"ParameterList","src":"4477:52:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9837,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9816,"name":"ElementaryTypeName","src":"4553:4:8"}],"id":9817,"name":"VariableDeclaration","src":"4553:4:8"}],"id":9818,"name":"ParameterList","src":"4552:6:8"},{"children":[{"attributes":{"functionReturnParameters":9818},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9810,"type":"bytes memory","value":"self"},"id":9819,"name":"Identifier","src":"4576:4:8"}],"id":9820,"name":"MemberAccess","src":"4576:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9812,"type":"uint256","value":"offset"},"id":9821,"name":"Identifier","src":"4591:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9814,"type":"bytes memory","value":"other"},"id":9822,"name":"Identifier","src":"4600:5:8"}],"id":9823,"name":"MemberAccess","src":"4600:12:8"}],"id":9824,"name":"BinaryOperation","src":"4591:21:8"}],"id":9825,"name":"BinaryOperation","src":"4576:36:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9776,9808,9837,9862],"referencedDeclaration":9776,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9826,"name":"Identifier","src":"4616:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9810,"type":"bytes memory","value":"self"},"id":9827,"name":"Identifier","src":"4623:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9812,"type":"uint256","value":"offset"},"id":9828,"name":"Identifier","src":"4629:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9814,"type":"bytes memory","value":"other"},"id":9829,"name":"Identifier","src":"4637:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9830,"name":"Literal","src":"4644:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9814,"type":"bytes memory","value":"other"},"id":9831,"name":"Identifier","src":"4647:5:8"}],"id":9832,"name":"MemberAccess","src":"4647:12:8"}],"id":9833,"name":"FunctionCall","src":"4616:44:8"}],"id":9834,"name":"BinaryOperation","src":"4576:84:8"}],"id":9835,"name":"Return","src":"4569:91:8"}],"id":9836,"name":"Block","src":"4559:108:8"}],"id":9837,"name":"FunctionDefinition","src":"4462:205:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9862,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9838,"name":"ElementaryTypeName","src":"4931:5:8"}],"id":9839,"name":"VariableDeclaration","src":"4931:17:8"},{"attributes":{"constant":false,"name":"other","scope":9862,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9840,"name":"ElementaryTypeName","src":"4950:5:8"}],"id":9841,"name":"VariableDeclaration","src":"4950:18:8"}],"id":9842,"name":"ParameterList","src":"4930:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9862,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9843,"name":"ElementaryTypeName","src":"4992:4:8"}],"id":9844,"name":"VariableDeclaration","src":"4992:4:8"}],"id":9845,"name":"ParameterList","src":"4991:6:8"},{"children":[{"attributes":{"functionReturnParameters":9845},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9839,"type":"bytes memory","value":"self"},"id":9846,"name":"Identifier","src":"5015:4:8"}],"id":9847,"name":"MemberAccess","src":"5015:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9841,"type":"bytes memory","value":"other"},"id":9848,"name":"Identifier","src":"5030:5:8"}],"id":9849,"name":"MemberAccess","src":"5030:12:8"}],"id":9850,"name":"BinaryOperation","src":"5015:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9776,9808,9837,9862],"referencedDeclaration":9776,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":9851,"name":"Identifier","src":"5046:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9839,"type":"bytes memory","value":"self"},"id":9852,"name":"Identifier","src":"5053:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9853,"name":"Literal","src":"5059:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9841,"type":"bytes memory","value":"other"},"id":9854,"name":"Identifier","src":"5062:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9855,"name":"Literal","src":"5069:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9839,"type":"bytes memory","value":"self"},"id":9856,"name":"Identifier","src":"5072:4:8"}],"id":9857,"name":"MemberAccess","src":"5072:11:8"}],"id":9858,"name":"FunctionCall","src":"5046:38:8"}],"id":9859,"name":"BinaryOperation","src":"5015:69:8"}],"id":9860,"name":"Return","src":"5008:76:8"}],"id":9861,"name":"Block","src":"4998:93:8"}],"id":9862,"name":"FunctionDefinition","src":"4915:176:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9878,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9863,"name":"ElementaryTypeName","src":"5352:5:8"}],"id":9864,"name":"VariableDeclaration","src":"5352:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9878,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9865,"name":"ElementaryTypeName","src":"5371:4:8"}],"id":9866,"name":"VariableDeclaration","src":"5371:8:8"}],"id":9867,"name":"ParameterList","src":"5351:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9878,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9868,"name":"ElementaryTypeName","src":"5404:5:8"}],"id":9869,"name":"VariableDeclaration","src":"5404:9:8"}],"id":9870,"name":"ParameterList","src":"5403:11:8"},{"children":[{"attributes":{"functionReturnParameters":9870},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9871,"name":"ElementaryTypeNameExpression","src":"5432:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"bytes memory","value":"self"},"id":9872,"name":"Identifier","src":"5438:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9866,"type":"uint256","value":"idx"},"id":9873,"name":"Identifier","src":"5443:3:8"}],"id":9874,"name":"IndexAccess","src":"5438:9:8"}],"id":9875,"name":"FunctionCall","src":"5432:16:8"}],"id":9876,"name":"Return","src":"5425:23:8"}],"id":9877,"name":"Block","src":"5415:40:8"}],"id":9878,"name":"FunctionDefinition","src":"5333:122:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9898,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9879,"name":"ElementaryTypeName","src":"5719:5:8"}],"id":9880,"name":"VariableDeclaration","src":"5719:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9898,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9881,"name":"ElementaryTypeName","src":"5738:4:8"}],"id":9882,"name":"VariableDeclaration","src":"5738:8:8"}],"id":9883,"name":"ParameterList","src":"5718:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9898,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9884,"name":"ElementaryTypeName","src":"5771:6:8"}],"id":9885,"name":"VariableDeclaration","src":"5771:10:8"}],"id":9886,"name":"ParameterList","src":"5770:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9887,"name":"Identifier","src":"5793:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9882,"type":"uint256","value":"idx"},"id":9888,"name":"Identifier","src":"5801:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9889,"name":"Literal","src":"5807:1:8"}],"id":9890,"name":"BinaryOperation","src":"5801:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9880,"type":"bytes memory","value":"self"},"id":9891,"name":"Identifier","src":"5812:4:8"}],"id":9892,"name":"MemberAccess","src":"5812:11:8"}],"id":9893,"name":"BinaryOperation","src":"5801:22:8"}],"id":9894,"name":"FunctionCall","src":"5793:31:8"}],"id":9895,"name":"ExpressionStatement","src":"5793:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9885,"isOffset":false,"isSlot":false,"src":"5857:3:8","valueSize":1}},{"self":{"declaration":9880,"isOffset":false,"isSlot":false,"src":"5882:4:8","valueSize":1}},{"idx":{"declaration":9882,"isOffset":false,"isSlot":false,"src":"5892:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":9896,"name":"InlineAssembly","src":"5834:82:8"}],"id":9897,"name":"Block","src":"5783:139:8"}],"id":9898,"name":"FunctionDefinition","src":"5699:223:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9918,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9899,"name":"ElementaryTypeName","src":"6186:5:8"}],"id":9900,"name":"VariableDeclaration","src":"6186:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9918,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9901,"name":"ElementaryTypeName","src":"6205:4:8"}],"id":9902,"name":"VariableDeclaration","src":"6205:8:8"}],"id":9903,"name":"ParameterList","src":"6185:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9918,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":9904,"name":"ElementaryTypeName","src":"6238:6:8"}],"id":9905,"name":"VariableDeclaration","src":"6238:10:8"}],"id":9906,"name":"ParameterList","src":"6237:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9907,"name":"Identifier","src":"6260:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9902,"type":"uint256","value":"idx"},"id":9908,"name":"Identifier","src":"6268:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9909,"name":"Literal","src":"6274:1:8"}],"id":9910,"name":"BinaryOperation","src":"6268:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9900,"type":"bytes memory","value":"self"},"id":9911,"name":"Identifier","src":"6279:4:8"}],"id":9912,"name":"MemberAccess","src":"6279:11:8"}],"id":9913,"name":"BinaryOperation","src":"6268:22:8"}],"id":9914,"name":"FunctionCall","src":"6260:31:8"}],"id":9915,"name":"ExpressionStatement","src":"6260:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9905,"isOffset":false,"isSlot":false,"src":"6324:3:8","valueSize":1}},{"self":{"declaration":9900,"isOffset":false,"isSlot":false,"src":"6349:4:8","valueSize":1}},{"idx":{"declaration":9902,"isOffset":false,"isSlot":false,"src":"6359:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":9916,"name":"InlineAssembly","src":"6301:86:8"}],"id":9917,"name":"Block","src":"6250:143:8"}],"id":9918,"name":"FunctionDefinition","src":"6166:227:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9938,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9919,"name":"ElementaryTypeName","src":"6632:5:8"}],"id":9920,"name":"VariableDeclaration","src":"6632:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9938,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9921,"name":"ElementaryTypeName","src":"6651:4:8"}],"id":9922,"name":"VariableDeclaration","src":"6651:8:8"}],"id":9923,"name":"ParameterList","src":"6631:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9938,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9924,"name":"ElementaryTypeName","src":"6684:7:8"}],"id":9925,"name":"VariableDeclaration","src":"6684:11:8"}],"id":9926,"name":"ParameterList","src":"6683:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9927,"name":"Identifier","src":"6707:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9922,"type":"uint256","value":"idx"},"id":9928,"name":"Identifier","src":"6715:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9929,"name":"Literal","src":"6721:2:8"}],"id":9930,"name":"BinaryOperation","src":"6715:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9920,"type":"bytes memory","value":"self"},"id":9931,"name":"Identifier","src":"6727:4:8"}],"id":9932,"name":"MemberAccess","src":"6727:11:8"}],"id":9933,"name":"BinaryOperation","src":"6715:23:8"}],"id":9934,"name":"FunctionCall","src":"6707:32:8"}],"id":9935,"name":"ExpressionStatement","src":"6707:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9925,"isOffset":false,"isSlot":false,"src":"6772:3:8","valueSize":1}},{"self":{"declaration":9920,"isOffset":false,"isSlot":false,"src":"6793:4:8","valueSize":1}},{"idx":{"declaration":9922,"isOffset":false,"isSlot":false,"src":"6804:3:8","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":9936,"name":"InlineAssembly","src":"6749:70:8"}],"id":9937,"name":"Block","src":"6697:128:8"}],"id":9938,"name":"FunctionDefinition","src":"6611:214:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9958,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9939,"name":"ElementaryTypeName","src":"7064:5:8"}],"id":9940,"name":"VariableDeclaration","src":"7064:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9958,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9941,"name":"ElementaryTypeName","src":"7083:4:8"}],"id":9942,"name":"VariableDeclaration","src":"7083:8:8"}],"id":9943,"name":"ParameterList","src":"7063:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9958,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9944,"name":"ElementaryTypeName","src":"7116:7:8"}],"id":9945,"name":"VariableDeclaration","src":"7116:11:8"}],"id":9946,"name":"ParameterList","src":"7115:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9947,"name":"Identifier","src":"7139:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9942,"type":"uint256","value":"idx"},"id":9948,"name":"Identifier","src":"7147:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9949,"name":"Literal","src":"7153:2:8"}],"id":9950,"name":"BinaryOperation","src":"7147:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9940,"type":"bytes memory","value":"self"},"id":9951,"name":"Identifier","src":"7159:4:8"}],"id":9952,"name":"MemberAccess","src":"7159:11:8"}],"id":9953,"name":"BinaryOperation","src":"7147:23:8"}],"id":9954,"name":"FunctionCall","src":"7139:32:8"}],"id":9955,"name":"ExpressionStatement","src":"7139:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9945,"isOffset":false,"isSlot":false,"src":"7204:3:8","valueSize":1}},{"self":{"declaration":9940,"isOffset":false,"isSlot":false,"src":"7229:4:8","valueSize":1}},{"idx":{"declaration":9942,"isOffset":false,"isSlot":false,"src":"7240:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":9956,"name":"InlineAssembly","src":"7181:143:8"}],"id":9957,"name":"Block","src":"7129:201:8"}],"id":9958,"name":"FunctionDefinition","src":"7043:287:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9986,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9959,"name":"ElementaryTypeName","src":"7606:5:8"}],"id":9960,"name":"VariableDeclaration","src":"7606:17:8"},{"attributes":{"constant":false,"name":"idx","scope":9986,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9961,"name":"ElementaryTypeName","src":"7625:4:8"}],"id":9962,"name":"VariableDeclaration","src":"7625:8:8"},{"attributes":{"constant":false,"name":"len","scope":9986,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9963,"name":"ElementaryTypeName","src":"7635:4:8"}],"id":9964,"name":"VariableDeclaration","src":"7635:8:8"}],"id":9965,"name":"ParameterList","src":"7605:39:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9986,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9966,"name":"ElementaryTypeName","src":"7668:7:8"}],"id":9967,"name":"VariableDeclaration","src":"7668:11:8"}],"id":9968,"name":"ParameterList","src":"7667:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9969,"name":"Identifier","src":"7691:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"uint256","value":"len"},"id":9970,"name":"Identifier","src":"7699:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9971,"name":"Literal","src":"7706:2:8"}],"id":9972,"name":"BinaryOperation","src":"7699:9:8"}],"id":9973,"name":"FunctionCall","src":"7691:18:8"}],"id":9974,"name":"ExpressionStatement","src":"7691:18:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":9975,"name":"Identifier","src":"7719:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9962,"type":"uint256","value":"idx"},"id":9976,"name":"Identifier","src":"7727:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9964,"type":"uint256","value":"len"},"id":9977,"name":"Identifier","src":"7733:3:8"}],"id":9978,"name":"BinaryOperation","src":"7727:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9960,"type":"bytes memory","value":"self"},"id":9979,"name":"Identifier","src":"7740:4:8"}],"id":9980,"name":"MemberAccess","src":"7740:11:8"}],"id":9981,"name":"BinaryOperation","src":"7727:24:8"}],"id":9982,"name":"FunctionCall","src":"7719:33:8"}],"id":9983,"name":"ExpressionStatement","src":"7719:33:8"},{"attributes":{"externalReferences":[{"len":{"declaration":9964,"isOffset":false,"isSlot":false,"src":"7822:3:8","valueSize":1}},{"ret":{"declaration":9967,"isOffset":false,"isSlot":false,"src":"7845:3:8","valueSize":1}},{"self":{"declaration":9960,"isOffset":false,"isSlot":false,"src":"7870:4:8","valueSize":1}},{"idx":{"declaration":9962,"isOffset":false,"isSlot":false,"src":"7881:3:8","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":9984,"name":"InlineAssembly","src":"7762:142:8"}],"id":9985,"name":"Block","src":"7681:229:8"}],"id":9986,"name":"FunctionDefinition","src":"7586:324:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":10026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9987,"name":"ElementaryTypeName","src":"7932:4:8"}],"id":9988,"name":"VariableDeclaration","src":"7932:9:8"},{"attributes":{"constant":false,"name":"src","scope":10026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9989,"name":"ElementaryTypeName","src":"7943:4:8"}],"id":9990,"name":"VariableDeclaration","src":"7943:8:8"},{"attributes":{"constant":false,"name":"len","scope":10026,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9991,"name":"ElementaryTypeName","src":"7953:4:8"}],"id":9992,"name":"VariableDeclaration","src":"7953:8:8"}],"id":9993,"name":"ParameterList","src":"7931:31:8"},{"attributes":{"parameters":[null]},"children":[],"id":9994,"name":"ParameterList","src":"7976:0:8"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9992,"type":"uint256","value":"len"},"id":9995,"name":"Identifier","src":"8043:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9996,"name":"Literal","src":"8050:2:8"}],"id":9997,"name":"BinaryOperation","src":"8043:9:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9992,"type":"uint256","value":"len"},"id":9998,"name":"Identifier","src":"8054:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9999,"name":"Literal","src":"8061:2:8"}],"id":10000,"name":"Assignment","src":"8054:9:8"}],"id":10001,"name":"ExpressionStatement","src":"8054:9:8"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":9990,"isOffset":false,"isSlot":false,"src":"8125:3:8","valueSize":1}},{"dest":{"declaration":9988,"isOffset":false,"isSlot":false,"src":"8113:4:8","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":10002,"name":"InlineAssembly","src":"8079:65:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9988,"type":"uint256","value":"dest"},"id":10003,"name":"Identifier","src":"8157:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10004,"name":"Literal","src":"8165:2:8"}],"id":10005,"name":"Assignment","src":"8157:10:8"}],"id":10006,"name":"ExpressionStatement","src":"8157:10:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9990,"type":"uint256","value":"src"},"id":10007,"name":"Identifier","src":"8181:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10008,"name":"Literal","src":"8188:2:8"}],"id":10009,"name":"Assignment","src":"8181:9:8"}],"id":10010,"name":"ExpressionStatement","src":"8181:9:8"}],"id":10011,"name":"Block","src":"8065:136:8"}],"id":10012,"name":"ForStatement","src":"8036:165:8"},{"attributes":{"assignments":[10014]},"children":[{"attributes":{"constant":false,"name":"mask","scope":10025,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10013,"name":"ElementaryTypeName","src":"8243:4:8"}],"id":10014,"name":"VariableDeclaration","src":"8243:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10015,"name":"Literal","src":"8255:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10016,"name":"Literal","src":"8263:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9992,"type":"uint256","value":"len"},"id":10017,"name":"Identifier","src":"8268:3:8"}],"id":10018,"name":"BinaryOperation","src":"8263:8:8"}],"id":10019,"name":"TupleExpression","src":"8262:10:8"}],"id":10020,"name":"BinaryOperation","src":"8255:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10021,"name":"Literal","src":"8275:1:8"}],"id":10022,"name":"BinaryOperation","src":"8255:21:8"}],"id":10023,"name":"VariableDeclarationStatement","src":"8243:33:8"},{"attributes":{"externalReferences":[{"src":{"declaration":9990,"isOffset":false,"isSlot":false,"src":"8334:3:8","valueSize":1}},{"mask":{"declaration":10014,"isOffset":false,"isSlot":false,"src":"8344:4:8","valueSize":1}},{"dest":{"declaration":9988,"isOffset":false,"isSlot":false,"src":"8421:4:8","valueSize":1}},{"dest":{"declaration":9988,"isOffset":false,"isSlot":false,"src":"8389:4:8","valueSize":1}},{"mask":{"declaration":10014,"isOffset":false,"isSlot":false,"src":"8396:4:8","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":10024,"name":"InlineAssembly","src":"8286:173:8"}],"id":10025,"name":"Block","src":"7976:489:8"}],"id":10026,"name":"FunctionDefinition","src":"7916:549:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10069,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10027,"name":"ElementaryTypeName","src":"8704:5:8"}],"id":10028,"name":"VariableDeclaration","src":"8704:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10029,"name":"ElementaryTypeName","src":"8723:4:8"}],"id":10030,"name":"VariableDeclaration","src":"8723:11:8"},{"attributes":{"constant":false,"name":"len","scope":10069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10031,"name":"ElementaryTypeName","src":"8736:4:8"}],"id":10032,"name":"VariableDeclaration","src":"8736:8:8"}],"id":10033,"name":"ParameterList","src":"8703:42:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10069,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10034,"name":"ElementaryTypeName","src":"8768:5:8"}],"id":10035,"name":"VariableDeclaration","src":"8768:12:8"}],"id":10036,"name":"ParameterList","src":"8767:14:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":10037,"name":"Identifier","src":"8792:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10030,"type":"uint256","value":"offset"},"id":10038,"name":"Identifier","src":"8800:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10032,"type":"uint256","value":"len"},"id":10039,"name":"Identifier","src":"8809:3:8"}],"id":10040,"name":"BinaryOperation","src":"8800:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10028,"type":"bytes memory","value":"self"},"id":10041,"name":"Identifier","src":"8816:4:8"}],"id":10042,"name":"MemberAccess","src":"8816:11:8"}],"id":10043,"name":"BinaryOperation","src":"8800:27:8"}],"id":10044,"name":"FunctionCall","src":"8792:36:8"}],"id":10045,"name":"ExpressionStatement","src":"8792:36:8"},{"attributes":{"assignments":[10047]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10068,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10046,"name":"ElementaryTypeName","src":"8839:5:8"}],"id":10047,"name":"VariableDeclaration","src":"8839:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10048,"name":"ElementaryTypeName","src":"8862:5:8"}],"id":10049,"name":"NewExpression","src":"8858:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10032,"type":"uint256","value":"len"},"id":10050,"name":"Identifier","src":"8868:3:8"}],"id":10051,"name":"FunctionCall","src":"8858:14:8"}],"id":10052,"name":"VariableDeclarationStatement","src":"8839:33:8"},{"attributes":{"assignments":[10054],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":10068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10053,"name":"ElementaryTypeName","src":"8882:4:8"}],"id":10054,"name":"VariableDeclaration","src":"8882:9:8"}],"id":10055,"name":"VariableDeclarationStatement","src":"8882:9:8"},{"attributes":{"assignments":[10057],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":10068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10056,"name":"ElementaryTypeName","src":"8901:4:8"}],"id":10057,"name":"VariableDeclaration","src":"8901:8:8"}],"id":10058,"name":"VariableDeclarationStatement","src":"8901:8:8"},{"attributes":{"externalReferences":[{"dest":{"declaration":10054,"isOffset":false,"isSlot":false,"src":"8943:4:8","valueSize":1}},{"ret":{"declaration":10047,"isOffset":false,"isSlot":false,"src":"8955:3:8","valueSize":1}},{"src":{"declaration":10057,"isOffset":false,"isSlot":false,"src":"8976:3:8","valueSize":1}},{"self":{"declaration":10028,"isOffset":false,"isSlot":false,"src":"8991:4:8","valueSize":1}},{"offset":{"declaration":10030,"isOffset":false,"isSlot":false,"src":"9002:6:8","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":10059,"name":"InlineAssembly","src":"8920:99:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":10026,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":10060,"name":"Identifier","src":"9028:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10054,"type":"uint256","value":"dest"},"id":10061,"name":"Identifier","src":"9035:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10057,"type":"uint256","value":"src"},"id":10062,"name":"Identifier","src":"9041:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10032,"type":"uint256","value":"len"},"id":10063,"name":"Identifier","src":"9046:3:8"}],"id":10064,"name":"FunctionCall","src":"9028:22:8"}],"id":10065,"name":"ExpressionStatement","src":"9028:22:8"},{"attributes":{"functionReturnParameters":10036},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10047,"type":"bytes memory","value":"ret"},"id":10066,"name":"Identifier","src":"9068:3:8"}],"id":10067,"name":"Return","src":"9061:10:8"}],"id":10068,"name":"Block","src":"8782:296:8"}],"id":10069,"name":"FunctionDefinition","src":"8685:393:8"},{"attributes":{"constant":true,"name":"base32HexTable","scope":10292,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10070,"name":"ElementaryTypeName","src":"9206:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":10071,"name":"Literal","src":"9238:147:8"}],"id":10072,"name":"VariableDeclaration","src":"9206:179:8"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":10292,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10291,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10073,"name":"ElementaryTypeName","src":"9697:5:8"}],"id":10074,"name":"VariableDeclaration","src":"9697:17:8"},{"attributes":{"constant":false,"name":"off","scope":10291,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10075,"name":"ElementaryTypeName","src":"9716:4:8"}],"id":10076,"name":"VariableDeclaration","src":"9716:8:8"},{"attributes":{"constant":false,"name":"len","scope":10291,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10077,"name":"ElementaryTypeName","src":"9726:4:8"}],"id":10078,"name":"VariableDeclaration","src":"9726:8:8"}],"id":10079,"name":"ParameterList","src":"9696:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10291,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10080,"name":"ElementaryTypeName","src":"9758:7:8"}],"id":10081,"name":"VariableDeclaration","src":"9758:7:8"}],"id":10082,"name":"ParameterList","src":"9757:9:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":10083,"name":"Identifier","src":"9777:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10084,"name":"Identifier","src":"9785:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":10085,"name":"Literal","src":"9792:2:8"}],"id":10086,"name":"BinaryOperation","src":"9785:9:8"}],"id":10087,"name":"FunctionCall","src":"9777:18:8"}],"id":10088,"name":"ExpressionStatement","src":"9777:18:8"},{"attributes":{"assignments":[10090]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10290,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10089,"name":"ElementaryTypeName","src":"9806:4:8"}],"id":10090,"name":"VariableDeclaration","src":"9806:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10091,"name":"Literal","src":"9817:1:8"}],"id":10092,"name":"VariableDeclarationStatement","src":"9806:12:8"},{"attributes":{"assignments":[10094],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":10290,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":10093,"name":"ElementaryTypeName","src":"9828:5:8"}],"id":10094,"name":"VariableDeclaration","src":"9828:13:8"}],"id":10095,"name":"VariableDeclarationStatement","src":"9828:13:8"},{"children":[{"attributes":{"assignments":[10097]},"children":[{"attributes":{"constant":false,"name":"i","scope":10162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10096,"name":"ElementaryTypeName","src":"9855:4:8"}],"id":10097,"name":"VariableDeclaration","src":"9855:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10098,"name":"Literal","src":"9864:1:8"}],"id":10099,"name":"VariableDeclarationStatement","src":"9855:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10097,"type":"uint256","value":"i"},"id":10100,"name":"Identifier","src":"9867:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10101,"name":"Identifier","src":"9871:3:8"}],"id":10102,"name":"BinaryOperation","src":"9867:7:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10097,"type":"uint256","value":"i"},"id":10103,"name":"Identifier","src":"9876:1:8"}],"id":10104,"name":"UnaryOperation","src":"9876:3:8"}],"id":10105,"name":"ExpressionStatement","src":"9876:3:8"},{"children":[{"attributes":{"assignments":[10107]},"children":[{"attributes":{"constant":false,"name":"char","scope":10161,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":10106,"name":"ElementaryTypeName","src":"9895:6:8"}],"id":10107,"name":"VariableDeclaration","src":"9895:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10074,"type":"bytes memory","value":"self"},"id":10108,"name":"Identifier","src":"9909:4:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10076,"type":"uint256","value":"off"},"id":10109,"name":"Identifier","src":"9914:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10097,"type":"uint256","value":"i"},"id":10110,"name":"Identifier","src":"9920:1:8"}],"id":10111,"name":"BinaryOperation","src":"9914:7:8"}],"id":10112,"name":"IndexAccess","src":"9909:13:8"}],"id":10113,"name":"VariableDeclarationStatement","src":"9895:27:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":10114,"name":"Identifier","src":"9936:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10107,"type":"bytes1","value":"char"},"id":10115,"name":"Identifier","src":"9944:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":10116,"name":"Literal","src":"9952:4:8"}],"id":10117,"name":"BinaryOperation","src":"9944:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10107,"type":"bytes1","value":"char"},"id":10118,"name":"Identifier","src":"9960:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":10119,"name":"Literal","src":"9968:4:8"}],"id":10120,"name":"BinaryOperation","src":"9960:12:8"}],"id":10121,"name":"BinaryOperation","src":"9944:28:8"}],"id":10122,"name":"FunctionCall","src":"9936:37:8"}],"id":10123,"name":"ExpressionStatement","src":"9936:37:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10124,"name":"Identifier","src":"9987:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10125,"name":"ElementaryTypeNameExpression","src":"9997:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10072,"type":"bytes memory","value":"base32HexTable"},"id":10126,"name":"Identifier","src":"10003:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":10127,"name":"ElementaryTypeNameExpression","src":"10018:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10128,"name":"ElementaryTypeNameExpression","src":"10023:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10107,"type":"bytes1","value":"char"},"id":10129,"name":"Identifier","src":"10029:4:8"}],"id":10130,"name":"FunctionCall","src":"10023:11:8"}],"id":10131,"name":"FunctionCall","src":"10018:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":10132,"name":"Literal","src":"10038:4:8"}],"id":10133,"name":"BinaryOperation","src":"10018:24:8"}],"id":10134,"name":"IndexAccess","src":"10003:40:8"}],"id":10135,"name":"FunctionCall","src":"9997:47:8"}],"id":10136,"name":"Assignment","src":"9987:57:8"}],"id":10137,"name":"ExpressionStatement","src":"9987:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":10138,"name":"Identifier","src":"10058:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10139,"name":"Identifier","src":"10066:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":10140,"name":"Literal","src":"10077:4:8"}],"id":10141,"name":"BinaryOperation","src":"10066:15:8"}],"id":10142,"name":"FunctionCall","src":"10058:24:8"}],"id":10143,"name":"ExpressionStatement","src":"10058:24:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10097,"type":"uint256","value":"i"},"id":10144,"name":"Identifier","src":"10099:1:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10145,"name":"Identifier","src":"10104:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10146,"name":"Literal","src":"10110:1:8"}],"id":10147,"name":"BinaryOperation","src":"10104:7:8"}],"id":10148,"name":"BinaryOperation","src":"10099:12:8"},{"children":[{"id":10149,"name":"Break","src":"10131:5:8"}],"id":10150,"name":"Block","src":"10113:38:8"}],"id":10151,"name":"IfStatement","src":"10096:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10152,"name":"Identifier","src":"10164:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10153,"name":"Identifier","src":"10171:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10154,"name":"Literal","src":"10178:1:8"}],"id":10155,"name":"BinaryOperation","src":"10171:8:8"}],"id":10156,"name":"TupleExpression","src":"10170:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10157,"name":"Identifier","src":"10183:7:8"}],"id":10158,"name":"BinaryOperation","src":"10170:20:8"}],"id":10159,"name":"Assignment","src":"10164:26:8"}],"id":10160,"name":"ExpressionStatement","src":"10164:26:8"}],"id":10161,"name":"Block","src":"9881:320:8"}],"id":10162,"name":"ForStatement","src":"9851:350:8"},{"attributes":{"assignments":[10164]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":10290,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10163,"name":"ElementaryTypeName","src":"10211:4:8"}],"id":10164,"name":"VariableDeclaration","src":"10211:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10165,"name":"Identifier","src":"10225:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10166,"name":"Literal","src":"10231:1:8"}],"id":10167,"name":"BinaryOperation","src":"10225:7:8"}],"id":10168,"name":"VariableDeclarationStatement","src":"10211:21:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10169,"name":"Identifier","src":"10245:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10170,"name":"Literal","src":"10251:1:8"}],"id":10171,"name":"BinaryOperation","src":"10245:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10172,"name":"Literal","src":"10256:1:8"}],"id":10173,"name":"BinaryOperation","src":"10245:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10174,"name":"Identifier","src":"10325:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10175,"name":"Identifier","src":"10332:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10176,"name":"Literal","src":"10339:1:8"}],"id":10177,"name":"BinaryOperation","src":"10332:8:8"}],"id":10178,"name":"TupleExpression","src":"10331:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10179,"name":"Identifier","src":"10344:7:8"}],"id":10180,"name":"BinaryOperation","src":"10331:20:8"}],"id":10181,"name":"Assignment","src":"10325:26:8"}],"id":10182,"name":"ExpressionStatement","src":"10325:26:8"}],"id":10183,"name":"Block","src":"10259:103:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10184,"name":"Identifier","src":"10371:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10185,"name":"Literal","src":"10377:1:8"}],"id":10186,"name":"BinaryOperation","src":"10371:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10187,"name":"Literal","src":"10382:1:8"}],"id":10188,"name":"BinaryOperation","src":"10371:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10189,"name":"Identifier","src":"10444:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10190,"name":"Identifier","src":"10451:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10191,"name":"Literal","src":"10458:1:8"}],"id":10192,"name":"BinaryOperation","src":"10451:8:8"}],"id":10193,"name":"TupleExpression","src":"10450:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10194,"name":"Identifier","src":"10464:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10195,"name":"Literal","src":"10475:1:8"}],"id":10196,"name":"BinaryOperation","src":"10464:12:8"}],"id":10197,"name":"TupleExpression","src":"10463:14:8"}],"id":10198,"name":"BinaryOperation","src":"10450:27:8"}],"id":10199,"name":"Assignment","src":"10444:33:8"}],"id":10200,"name":"ExpressionStatement","src":"10444:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10201,"name":"Identifier","src":"10491:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10202,"name":"Literal","src":"10501:1:8"}],"id":10203,"name":"Assignment","src":"10491:11:8"}],"id":10204,"name":"ExpressionStatement","src":"10491:11:8"}],"id":10205,"name":"Block","src":"10385:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10206,"name":"Identifier","src":"10522:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10207,"name":"Literal","src":"10528:1:8"}],"id":10208,"name":"BinaryOperation","src":"10522:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10209,"name":"Literal","src":"10533:1:8"}],"id":10210,"name":"BinaryOperation","src":"10522:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10211,"name":"Identifier","src":"10597:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10212,"name":"Identifier","src":"10604:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10213,"name":"Literal","src":"10611:1:8"}],"id":10214,"name":"BinaryOperation","src":"10604:8:8"}],"id":10215,"name":"TupleExpression","src":"10603:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10216,"name":"Identifier","src":"10617:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10217,"name":"Literal","src":"10628:1:8"}],"id":10218,"name":"BinaryOperation","src":"10617:12:8"}],"id":10219,"name":"TupleExpression","src":"10616:14:8"}],"id":10220,"name":"BinaryOperation","src":"10603:27:8"}],"id":10221,"name":"Assignment","src":"10597:33:8"}],"id":10222,"name":"ExpressionStatement","src":"10597:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10223,"name":"Identifier","src":"10644:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10224,"name":"Literal","src":"10654:1:8"}],"id":10225,"name":"Assignment","src":"10644:11:8"}],"id":10226,"name":"ExpressionStatement","src":"10644:11:8"}],"id":10227,"name":"Block","src":"10536:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10228,"name":"Identifier","src":"10675:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10229,"name":"Literal","src":"10681:1:8"}],"id":10230,"name":"BinaryOperation","src":"10675:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10231,"name":"Literal","src":"10686:1:8"}],"id":10232,"name":"BinaryOperation","src":"10675:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10233,"name":"Identifier","src":"10750:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10234,"name":"Identifier","src":"10757:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10235,"name":"Literal","src":"10764:1:8"}],"id":10236,"name":"BinaryOperation","src":"10757:8:8"}],"id":10237,"name":"TupleExpression","src":"10756:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10238,"name":"Identifier","src":"10770:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10239,"name":"Literal","src":"10781:1:8"}],"id":10240,"name":"BinaryOperation","src":"10770:12:8"}],"id":10241,"name":"TupleExpression","src":"10769:14:8"}],"id":10242,"name":"BinaryOperation","src":"10756:27:8"}],"id":10243,"name":"Assignment","src":"10750:33:8"}],"id":10244,"name":"ExpressionStatement","src":"10750:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10245,"name":"Identifier","src":"10797:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10246,"name":"Literal","src":"10807:1:8"}],"id":10247,"name":"Assignment","src":"10797:11:8"}],"id":10248,"name":"ExpressionStatement","src":"10797:11:8"}],"id":10249,"name":"Block","src":"10689:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10078,"type":"uint256","value":"len"},"id":10250,"name":"Identifier","src":"10828:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10251,"name":"Literal","src":"10834:1:8"}],"id":10252,"name":"BinaryOperation","src":"10828:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":10253,"name":"Literal","src":"10839:1:8"}],"id":10254,"name":"BinaryOperation","src":"10828:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10255,"name":"Identifier","src":"10904:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10256,"name":"Identifier","src":"10911:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10257,"name":"Literal","src":"10918:1:8"}],"id":10258,"name":"BinaryOperation","src":"10911:8:8"}],"id":10259,"name":"TupleExpression","src":"10910:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"uint8","value":"decoded"},"id":10260,"name":"Identifier","src":"10924:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10261,"name":"Literal","src":"10935:1:8"}],"id":10262,"name":"BinaryOperation","src":"10924:12:8"}],"id":10263,"name":"TupleExpression","src":"10923:14:8"}],"id":10264,"name":"BinaryOperation","src":"10910:27:8"}],"id":10265,"name":"Assignment","src":"10904:33:8"}],"id":10266,"name":"ExpressionStatement","src":"10904:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10267,"name":"Identifier","src":"10951:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10268,"name":"Literal","src":"10961:1:8"}],"id":10269,"name":"Assignment","src":"10951:11:8"}],"id":10270,"name":"ExpressionStatement","src":"10951:11:8"}],"id":10271,"name":"Block","src":"10842:131:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[10312,10313],"referencedDeclaration":10312,"type":"function () pure","value":"revert"},"id":10272,"name":"Identifier","src":"10993:6:8"}],"id":10273,"name":"FunctionCall","src":"10993:8:8"}],"id":10274,"name":"ExpressionStatement","src":"10993:8:8"}],"id":10275,"name":"Block","src":"10979:33:8"}],"id":10276,"name":"IfStatement","src":"10825:187:8"}],"id":10277,"name":"IfStatement","src":"10672:340:8"}],"id":10278,"name":"IfStatement","src":"10519:493:8"}],"id":10279,"name":"IfStatement","src":"10368:644:8"}],"id":10280,"name":"IfStatement","src":"10242:770:8"},{"attributes":{"functionReturnParameters":10082},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":10281,"name":"ElementaryTypeNameExpression","src":"11029:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10090,"type":"uint256","value":"ret"},"id":10282,"name":"Identifier","src":"11037:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10283,"name":"Literal","src":"11045:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10164,"type":"uint256","value":"bitlen"},"id":10284,"name":"Identifier","src":"11051:6:8"}],"id":10285,"name":"BinaryOperation","src":"11045:12:8"}],"id":10286,"name":"TupleExpression","src":"11044:14:8"}],"id":10287,"name":"BinaryOperation","src":"11037:21:8"}],"id":10288,"name":"FunctionCall","src":"11029:30:8"}],"id":10289,"name":"Return","src":"11022:37:8"}],"id":10290,"name":"Block","src":"9767:1299:8"}],"id":10291,"name":"FunctionDefinition","src":"9668:1398:8"}],"id":10292,"name":"ContractDefinition","src":"26:11042:8"}],"id":10293,"name":"SourceUnit","src":"0:11069:8"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[3287]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3115,"name":"PragmaDirective","src":"1401:23:9"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":3116,"name":"PragmaDirective","src":"1425:33:9"},{"attributes":{"SourceUnit":3114,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3117,"name":"ImportDirective","src":"1460:19:9"},{"attributes":{"SourceUnit":4929,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3118,"name":"ImportDirective","src":"1480:36:9"},{"attributes":{"SourceUnit":5088,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3119,"name":"ImportDirective","src":"1517:37:9"},{"attributes":{"SourceUnit":5158,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3120,"name":"ImportDirective","src":"1555:44:9"},{"attributes":{"SourceUnit":5649,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3121,"name":"ImportDirective","src":"1600:36:9"},{"attributes":{"SourceUnit":5836,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3122,"name":"ImportDirective","src":"1637:42:9"},{"attributes":{"SourceUnit":5906,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3123,"name":"ImportDirective","src":"1680:37:9"},{"attributes":{"SourceUnit":5997,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3124,"name":"ImportDirective","src":"1718:39:9"},{"attributes":{"SourceUnit":6080,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":3288,"symbolAliases":[null],"unitAlias":""},"id":3125,"name":"ImportDirective","src":"1758:37:9"},{"attributes":{"contractDependencies":[4928,5087,5157,5648,5835,5905,5996,6079,7136],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[3287,6079,5996,5905,5835,5648,5157,5087,4928,7136],"name":"PublicResolver","scope":3288},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":4928,"type":"contract ABIResolver"},"id":3126,"name":"UserDefinedTypeName","src":"1924:11:9"}],"id":3127,"name":"InheritanceSpecifier","src":"1924:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5087,"type":"contract AddrResolver"},"id":3128,"name":"UserDefinedTypeName","src":"1937:12:9"}],"id":3129,"name":"InheritanceSpecifier","src":"1937:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":5157,"type":"contract ContentHashResolver"},"id":3130,"name":"UserDefinedTypeName","src":"1951:19:9"}],"id":3131,"name":"InheritanceSpecifier","src":"1951:19:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":5648,"type":"contract DNSResolver"},"id":3132,"name":"UserDefinedTypeName","src":"1972:11:9"}],"id":3133,"name":"InheritanceSpecifier","src":"1972:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":5835,"type":"contract InterfaceResolver"},"id":3134,"name":"UserDefinedTypeName","src":"1985:17:9"}],"id":3135,"name":"InheritanceSpecifier","src":"1985:17:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":5905,"type":"contract NameResolver"},"id":3136,"name":"UserDefinedTypeName","src":"2004:12:9"}],"id":3137,"name":"InheritanceSpecifier","src":"2004:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":5996,"type":"contract PubkeyResolver"},"id":3138,"name":"UserDefinedTypeName","src":"2018:14:9"}],"id":3139,"name":"InheritanceSpecifier","src":"2018:14:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":6079,"type":"contract TextResolver"},"id":3140,"name":"UserDefinedTypeName","src":"2034:12:9"}],"id":3141,"name":"InheritanceSpecifier","src":"2034:12:9"},{"attributes":{"constant":false,"name":"ens","scope":3287,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":3113,"type":"contract ENS"},"id":3142,"name":"UserDefinedTypeName","src":"2053:3:9"}],"id":3143,"name":"VariableDeclaration","src":"2053:7:9"},{"attributes":{"constant":false,"name":"authorisations","scope":3287,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3144,"name":"ElementaryTypeName","src":"2328:7:9"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":3145,"name":"ElementaryTypeName","src":"2345:7:9"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":3146,"name":"ElementaryTypeName","src":"2362:7:9"},{"attributes":{"name":"bool","type":"bool"},"id":3147,"name":"ElementaryTypeName","src":"2371:4:9"}],"id":3148,"name":"Mapping","src":"2354:22:9"}],"id":3149,"name":"Mapping","src":"2337:40:9"}],"id":3150,"name":"Mapping","src":"2320:58:9"}],"id":3151,"name":"VariableDeclaration","src":"2320:80:9"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":3161,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3152,"name":"ElementaryTypeName","src":"2434:7:9"}],"id":3153,"name":"VariableDeclaration","src":"2434:20:9"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":3161,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3154,"name":"ElementaryTypeName","src":"2456:7:9"}],"id":3155,"name":"VariableDeclaration","src":"2456:21:9"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":3161,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3156,"name":"ElementaryTypeName","src":"2479:7:9"}],"id":3157,"name":"VariableDeclaration","src":"2479:22:9"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":3161,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3158,"name":"ElementaryTypeName","src":"2503:4:9"}],"id":3159,"name":"VariableDeclaration","src":"2503:17:9"}],"id":3160,"name":"ParameterList","src":"2433:88:9"}],"id":3161,"name":"EventDefinition","src":"2407:115:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3287,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":3171,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":3113,"type":"contract ENS"},"id":3162,"name":"UserDefinedTypeName","src":"2540:3:9"}],"id":3163,"name":"VariableDeclaration","src":"2540:8:9"}],"id":3164,"name":"ParameterList","src":"2539:10:9"},{"attributes":{"parameters":[null]},"children":[],"id":3165,"name":"ParameterList","src":"2557:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3143,"type":"contract ENS","value":"ens"},"id":3166,"name":"Identifier","src":"2567:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3163,"type":"contract ENS","value":"_ens"},"id":3167,"name":"Identifier","src":"2573:4:9"}],"id":3168,"name":"Assignment","src":"2567:10:9"}],"id":3169,"name":"ExpressionStatement","src":"2567:10:9"}],"id":3170,"name":"Block","src":"2557:27:9"}],"id":3171,"name":"FunctionDefinition","src":"2528:56:9"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":3287,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3200,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3172,"name":"ElementaryTypeName","src":"3295:7:9"}],"id":3173,"name":"VariableDeclaration","src":"3295:12:9"},{"attributes":{"constant":false,"name":"target","scope":3200,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3174,"name":"ElementaryTypeName","src":"3309:7:9"}],"id":3175,"name":"VariableDeclaration","src":"3309:14:9"},{"attributes":{"constant":false,"name":"isAuthorised","scope":3200,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3176,"name":"ElementaryTypeName","src":"3325:4:9"}],"id":3177,"name":"VariableDeclaration","src":"3325:17:9"}],"id":3178,"name":"ParameterList","src":"3294:49:9"},{"attributes":{"parameters":[null]},"children":[],"id":3179,"name":"ParameterList","src":"3353:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3151,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":3180,"name":"Identifier","src":"3363:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3173,"type":"bytes32","value":"node"},"id":3181,"name":"Identifier","src":"3378:4:9"}],"id":3185,"name":"IndexAccess","src":"3363:20:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3182,"name":"Identifier","src":"3384:3:9"}],"id":3183,"name":"MemberAccess","src":"3384:10:9"}],"id":3186,"name":"IndexAccess","src":"3363:32:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3175,"type":"address","value":"target"},"id":3184,"name":"Identifier","src":"3396:6:9"}],"id":3187,"name":"IndexAccess","src":"3363:40:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3177,"type":"bool","value":"isAuthorised"},"id":3188,"name":"Identifier","src":"3406:12:9"}],"id":3189,"name":"Assignment","src":"3363:55:9"}],"id":3190,"name":"ExpressionStatement","src":"3363:55:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":3161,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":3191,"name":"Identifier","src":"3433:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3173,"type":"bytes32","value":"node"},"id":3192,"name":"Identifier","src":"3454:4:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3193,"name":"Identifier","src":"3460:3:9"}],"id":3194,"name":"MemberAccess","src":"3460:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3175,"type":"address","value":"target"},"id":3195,"name":"Identifier","src":"3472:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3177,"type":"bool","value":"isAuthorised"},"id":3196,"name":"Identifier","src":"3480:12:9"}],"id":3197,"name":"FunctionCall","src":"3433:60:9"}],"id":3198,"name":"EmitStatement","src":"3428:65:9"}],"id":3199,"name":"Block","src":"3353:147:9"}],"id":3200,"name":"FunctionDefinition","src":"3269:231:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":3287,"stateMutability":"view","superFunction":7091,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":3229,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3201,"name":"ElementaryTypeName","src":"3528:7:9"}],"id":3202,"name":"VariableDeclaration","src":"3528:12:9"}],"id":3203,"name":"ParameterList","src":"3527:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":3229,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3204,"name":"ElementaryTypeName","src":"3564:4:9"}],"id":3205,"name":"VariableDeclaration","src":"3564:4:9"}],"id":3206,"name":"ParameterList","src":"3563:6:9"},{"children":[{"attributes":{"assignments":[3208]},"children":[{"attributes":{"constant":false,"name":"owner","scope":3228,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3207,"name":"ElementaryTypeName","src":"3580:7:9"}],"id":3208,"name":"VariableDeclaration","src":"3580:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":3082,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3143,"type":"contract ENS","value":"ens"},"id":3209,"name":"Identifier","src":"3596:3:9"}],"id":3210,"name":"MemberAccess","src":"3596:9:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"bytes32","value":"node"},"id":3211,"name":"Identifier","src":"3606:4:9"}],"id":3212,"name":"FunctionCall","src":"3596:15:9"}],"id":3213,"name":"VariableDeclarationStatement","src":"3580:31:9"},{"attributes":{"functionReturnParameters":3206},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"address","value":"owner"},"id":3214,"name":"Identifier","src":"3628:5:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3215,"name":"Identifier","src":"3637:3:9"}],"id":3216,"name":"MemberAccess","src":"3637:10:9"}],"id":3217,"name":"BinaryOperation","src":"3628:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3151,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":3218,"name":"Identifier","src":"3651:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3202,"type":"bytes32","value":"node"},"id":3219,"name":"Identifier","src":"3666:4:9"}],"id":3220,"name":"IndexAccess","src":"3651:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3208,"type":"address","value":"owner"},"id":3221,"name":"Identifier","src":"3672:5:9"}],"id":3222,"name":"IndexAccess","src":"3651:27:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3223,"name":"Identifier","src":"3679:3:9"}],"id":3224,"name":"MemberAccess","src":"3679:10:9"}],"id":3225,"name":"IndexAccess","src":"3651:39:9"}],"id":3226,"name":"BinaryOperation","src":"3628:62:9"}],"id":3227,"name":"Return","src":"3621:69:9"}],"id":3228,"name":"Block","src":"3570:127:9"}],"id":3229,"name":"FunctionDefinition","src":"3506:191:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":3287,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":3286,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3230,"name":"ElementaryTypeName","src":"3722:5:9"}],"id":3231,"name":"ArrayTypeName","src":"3722:7:9"}],"id":3232,"name":"VariableDeclaration","src":"3722:21:9"}],"id":3233,"name":"ParameterList","src":"3721:23:9"},{"children":[{"attributes":{"constant":false,"name":"results","scope":3286,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3234,"name":"ElementaryTypeName","src":"3762:5:9"}],"id":3235,"name":"ArrayTypeName","src":"3762:7:9"}],"id":3236,"name":"VariableDeclaration","src":"3762:22:9"}],"id":3237,"name":"ParameterList","src":"3761:24:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3236,"type":"bytes memory[] memory","value":"results"},"id":3238,"name":"Identifier","src":"3796:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3239,"name":"ElementaryTypeName","src":"3810:5:9"}],"id":3240,"name":"ArrayTypeName","src":"3810:7:9"}],"id":3241,"name":"NewExpression","src":"3806:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3232,"type":"bytes calldata[] calldata","value":"data"},"id":3242,"name":"Identifier","src":"3818:4:9"}],"id":3243,"name":"MemberAccess","src":"3818:11:9"}],"id":3244,"name":"FunctionCall","src":"3806:24:9"}],"id":3245,"name":"Assignment","src":"3796:34:9"}],"id":3246,"name":"ExpressionStatement","src":"3796:34:9"},{"children":[{"attributes":{"assignments":[3248]},"children":[{"attributes":{"constant":false,"name":"i","scope":3282,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":3247,"name":"ElementaryTypeName","src":"3844:4:9"}],"id":3248,"name":"VariableDeclaration","src":"3844:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3249,"name":"Literal","src":"3853:1:9"}],"id":3250,"name":"VariableDeclarationStatement","src":"3844:10:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"uint256","value":"i"},"id":3251,"name":"Identifier","src":"3856:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3232,"type":"bytes calldata[] calldata","value":"data"},"id":3252,"name":"Identifier","src":"3860:4:9"}],"id":3253,"name":"MemberAccess","src":"3860:11:9"}],"id":3254,"name":"BinaryOperation","src":"3856:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"uint256","value":"i"},"id":3255,"name":"Identifier","src":"3873:1:9"}],"id":3256,"name":"UnaryOperation","src":"3873:3:9"}],"id":3257,"name":"ExpressionStatement","src":"3873:3:9"},{"children":[{"attributes":{"assignments":[3259,3261]},"children":[{"attributes":{"constant":false,"name":"success","scope":3281,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3258,"name":"ElementaryTypeName","src":"3893:4:9"}],"id":3259,"name":"VariableDeclaration","src":"3893:12:9"},{"attributes":{"constant":false,"name":"result","scope":3281,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3260,"name":"ElementaryTypeName","src":"3907:5:9"}],"id":3261,"name":"VariableDeclaration","src":"3907:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$3287","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3262,"name":"ElementaryTypeNameExpression","src":"3930:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10365,"type":"contract PublicResolver","value":"this"},"id":3263,"name":"Identifier","src":"3938:4:9"}],"id":3264,"name":"FunctionCall","src":"3930:13:9"}],"id":3265,"name":"MemberAccess","src":"3930:26:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3232,"type":"bytes calldata[] calldata","value":"data"},"id":3266,"name":"Identifier","src":"3957:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"uint256","value":"i"},"id":3267,"name":"Identifier","src":"3962:1:9"}],"id":3268,"name":"IndexAccess","src":"3957:7:9"}],"id":3269,"name":"FunctionCall","src":"3930:35:9"}],"id":3270,"name":"VariableDeclarationStatement","src":"3892:73:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":3271,"name":"Identifier","src":"3979:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3259,"type":"bool","value":"success"},"id":3272,"name":"Identifier","src":"3987:7:9"}],"id":3273,"name":"FunctionCall","src":"3979:16:9"}],"id":3274,"name":"ExpressionStatement","src":"3979:16:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3236,"type":"bytes memory[] memory","value":"results"},"id":3275,"name":"Identifier","src":"4009:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"uint256","value":"i"},"id":3276,"name":"Identifier","src":"4017:1:9"}],"id":3277,"name":"IndexAccess","src":"4009:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3261,"type":"bytes memory","value":"result"},"id":3278,"name":"Identifier","src":"4022:6:9"}],"id":3279,"name":"Assignment","src":"4009:19:9"}],"id":3280,"name":"ExpressionStatement","src":"4009:19:9"}],"id":3281,"name":"Block","src":"3878:161:9"}],"id":3282,"name":"ForStatement","src":"3840:199:9"},{"attributes":{"functionReturnParameters":3237},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3236,"type":"bytes memory[] memory","value":"results"},"id":3283,"name":"Identifier","src":"4055:7:9"}],"id":3284,"name":"Return","src":"4048:14:9"}],"id":3285,"name":"Block","src":"3786:283:9"}],"id":3286,"name":"FunctionDefinition","src":"3703:366:9"}],"id":3287,"name":"ContractDefinition","src":"1897:2174:9"}],"id":3288,"name":"SourceUnit","src":"1401:2671:9"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[7754]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":7138,"name":"PragmaDirective","src":"0:24:10"},{"attributes":{"SourceUnit":10293,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":7755,"symbolAliases":[null],"unitAlias":""},"id":7139,"name":"ImportDirective","src":"26:29:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[7754],"name":"RRUtils","scope":7755},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10292,"type":"library ENSBytesUtils"},"id":7140,"name":"UserDefinedTypeName","src":"178:13:10"}],"id":7141,"name":"UsingForDirective","src":"172:26:10"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7188,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7142,"name":"ElementaryTypeName","src":"487:5:10"}],"id":7143,"name":"VariableDeclaration","src":"487:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7144,"name":"ElementaryTypeName","src":"506:4:10"}],"id":7145,"name":"VariableDeclaration","src":"506:11:10"}],"id":7146,"name":"ParameterList","src":"486:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7147,"name":"ElementaryTypeName","src":"541:4:10"}],"id":7148,"name":"VariableDeclaration","src":"541:4:10"}],"id":7149,"name":"ParameterList","src":"540:6:10"},{"children":[{"attributes":{"assignments":[7151]},"children":[{"attributes":{"constant":false,"name":"idx","scope":7187,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7150,"name":"ElementaryTypeName","src":"557:4:10"}],"id":7151,"name":"VariableDeclaration","src":"557:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7145,"type":"uint256","value":"offset"},"id":7152,"name":"Identifier","src":"568:6:10"}],"id":7153,"name":"VariableDeclarationStatement","src":"557:17:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7154,"name":"Literal","src":"591:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10296,"type":"function (bool) pure","value":"assert"},"id":7155,"name":"Identifier","src":"611:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7151,"type":"uint256","value":"idx"},"id":7156,"name":"Identifier","src":"618:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7143,"type":"bytes memory","value":"self"},"id":7157,"name":"Identifier","src":"624:4:10"}],"id":7158,"name":"MemberAccess","src":"624:11:10"}],"id":7159,"name":"BinaryOperation","src":"618:17:10"}],"id":7160,"name":"FunctionCall","src":"611:25:10"}],"id":7161,"name":"ExpressionStatement","src":"611:25:10"},{"attributes":{"assignments":[7163]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":7181,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7162,"name":"ElementaryTypeName","src":"650:4:10"}],"id":7163,"name":"VariableDeclaration","src":"650:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7143,"type":"bytes memory","value":"self"},"id":7164,"name":"Identifier","src":"666:4:10"}],"id":7165,"name":"MemberAccess","src":"666:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7151,"type":"uint256","value":"idx"},"id":7166,"name":"Identifier","src":"681:3:10"}],"id":7167,"name":"FunctionCall","src":"666:19:10"}],"id":7168,"name":"VariableDeclarationStatement","src":"650:35:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7151,"type":"uint256","value":"idx"},"id":7169,"name":"Identifier","src":"699:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7163,"type":"uint256","value":"labelLen"},"id":7170,"name":"Identifier","src":"706:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7171,"name":"Literal","src":"717:1:10"}],"id":7172,"name":"BinaryOperation","src":"706:12:10"}],"id":7173,"name":"Assignment","src":"699:19:10"}],"id":7174,"name":"ExpressionStatement","src":"699:19:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7163,"type":"uint256","value":"labelLen"},"id":7175,"name":"Identifier","src":"736:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7176,"name":"Literal","src":"748:1:10"}],"id":7177,"name":"BinaryOperation","src":"736:13:10"},{"children":[{"id":7178,"name":"Break","src":"769:5:10"}],"id":7179,"name":"Block","src":"751:38:10"}],"id":7180,"name":"IfStatement","src":"732:57:10"}],"id":7181,"name":"Block","src":"597:202:10"}],"id":7182,"name":"WhileStatement","src":"584:215:10"},{"attributes":{"functionReturnParameters":7149},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7151,"type":"uint256","value":"idx"},"id":7183,"name":"Identifier","src":"815:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7145,"type":"uint256","value":"offset"},"id":7184,"name":"Identifier","src":"821:6:10"}],"id":7185,"name":"BinaryOperation","src":"815:12:10"}],"id":7186,"name":"Return","src":"808:19:10"}],"id":7187,"name":"Block","src":"547:287:10"}],"id":7188,"name":"FunctionDefinition","src":"467:367:10"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7211,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7189,"name":"ElementaryTypeName","src":"1073:5:10"}],"id":7190,"name":"VariableDeclaration","src":"1073:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7191,"name":"ElementaryTypeName","src":"1092:4:10"}],"id":7192,"name":"VariableDeclaration","src":"1092:11:10"}],"id":7193,"name":"ParameterList","src":"1072:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7211,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7194,"name":"ElementaryTypeName","src":"1127:5:10"}],"id":7195,"name":"VariableDeclaration","src":"1127:16:10"}],"id":7196,"name":"ParameterList","src":"1126:18:10"},{"children":[{"attributes":{"assignments":[7198]},"children":[{"attributes":{"constant":false,"name":"len","scope":7210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7197,"name":"ElementaryTypeName","src":"1155:4:10"}],"id":7198,"name":"VariableDeclaration","src":"1155:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7188,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":7199,"name":"Identifier","src":"1166:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7190,"type":"bytes memory","value":"self"},"id":7200,"name":"Identifier","src":"1177:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7192,"type":"uint256","value":"offset"},"id":7201,"name":"Identifier","src":"1183:6:10"}],"id":7202,"name":"FunctionCall","src":"1166:24:10"}],"id":7203,"name":"VariableDeclarationStatement","src":"1155:35:10"},{"attributes":{"functionReturnParameters":7196},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10069,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7190,"type":"bytes memory","value":"self"},"id":7204,"name":"Identifier","src":"1207:4:10"}],"id":7205,"name":"MemberAccess","src":"1207:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7192,"type":"uint256","value":"offset"},"id":7206,"name":"Identifier","src":"1222:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7198,"type":"uint256","value":"len"},"id":7207,"name":"Identifier","src":"1230:3:10"}],"id":7208,"name":"FunctionCall","src":"1207:27:10"}],"id":7209,"name":"Return","src":"1200:34:10"}],"id":7210,"name":"Block","src":"1145:96:10"}],"id":7211,"name":"FunctionDefinition","src":"1055:186:10"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7260,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7212,"name":"ElementaryTypeName","src":"1541:5:10"}],"id":7213,"name":"VariableDeclaration","src":"1541:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7260,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7214,"name":"ElementaryTypeName","src":"1560:4:10"}],"id":7215,"name":"VariableDeclaration","src":"1560:11:10"}],"id":7216,"name":"ParameterList","src":"1540:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7260,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7217,"name":"ElementaryTypeName","src":"1595:4:10"}],"id":7218,"name":"VariableDeclaration","src":"1595:4:10"}],"id":7219,"name":"ParameterList","src":"1594:6:10"},{"children":[{"attributes":{"assignments":[7221]},"children":[{"attributes":{"constant":false,"name":"count","scope":7259,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7220,"name":"ElementaryTypeName","src":"1611:4:10"}],"id":7221,"name":"VariableDeclaration","src":"1611:10:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7222,"name":"Literal","src":"1624:1:10"}],"id":7223,"name":"VariableDeclarationStatement","src":"1611:14:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":7224,"name":"Literal","src":"1642:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10296,"type":"function (bool) pure","value":"assert"},"id":7225,"name":"Identifier","src":"1662:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7215,"type":"uint256","value":"offset"},"id":7226,"name":"Identifier","src":"1669:6:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7213,"type":"bytes memory","value":"self"},"id":7227,"name":"Identifier","src":"1678:4:10"}],"id":7228,"name":"MemberAccess","src":"1678:11:10"}],"id":7229,"name":"BinaryOperation","src":"1669:20:10"}],"id":7230,"name":"FunctionCall","src":"1662:28:10"}],"id":7231,"name":"ExpressionStatement","src":"1662:28:10"},{"attributes":{"assignments":[7233]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":7255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7232,"name":"ElementaryTypeName","src":"1704:4:10"}],"id":7233,"name":"VariableDeclaration","src":"1704:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7213,"type":"bytes memory","value":"self"},"id":7234,"name":"Identifier","src":"1720:4:10"}],"id":7235,"name":"MemberAccess","src":"1720:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7215,"type":"uint256","value":"offset"},"id":7236,"name":"Identifier","src":"1735:6:10"}],"id":7237,"name":"FunctionCall","src":"1720:22:10"}],"id":7238,"name":"VariableDeclarationStatement","src":"1704:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7215,"type":"uint256","value":"offset"},"id":7239,"name":"Identifier","src":"1756:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7233,"type":"uint256","value":"labelLen"},"id":7240,"name":"Identifier","src":"1766:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7241,"name":"Literal","src":"1777:1:10"}],"id":7242,"name":"BinaryOperation","src":"1766:12:10"}],"id":7243,"name":"Assignment","src":"1756:22:10"}],"id":7244,"name":"ExpressionStatement","src":"1756:22:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7233,"type":"uint256","value":"labelLen"},"id":7245,"name":"Identifier","src":"1796:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7246,"name":"Literal","src":"1808:1:10"}],"id":7247,"name":"BinaryOperation","src":"1796:13:10"},{"children":[{"id":7248,"name":"Break","src":"1829:5:10"}],"id":7249,"name":"Block","src":"1811:38:10"}],"id":7250,"name":"IfStatement","src":"1792:57:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7221,"type":"uint256","value":"count"},"id":7251,"name":"Identifier","src":"1862:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7252,"name":"Literal","src":"1871:1:10"}],"id":7253,"name":"Assignment","src":"1862:10:10"}],"id":7254,"name":"ExpressionStatement","src":"1862:10:10"}],"id":7255,"name":"Block","src":"1648:235:10"}],"id":7256,"name":"WhileStatement","src":"1635:248:10"},{"attributes":{"functionReturnParameters":7219},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7221,"type":"uint256","value":"count"},"id":7257,"name":"Identifier","src":"1899:5:10"}],"id":7258,"name":"Return","src":"1892:12:10"}],"id":7259,"name":"Block","src":"1601:310:10"}],"id":7260,"name":"FunctionDefinition","src":"1521:390:10"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":7754,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":7275,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7261,"name":"ElementaryTypeName","src":"2006:5:10"}],"id":7262,"name":"VariableDeclaration","src":"2006:10:10"},{"attributes":{"constant":false,"name":"offset","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7263,"name":"ElementaryTypeName","src":"2026:4:10"}],"id":7264,"name":"VariableDeclaration","src":"2026:11:10"},{"attributes":{"constant":false,"name":"dnstype","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":7265,"name":"ElementaryTypeName","src":"2047:6:10"}],"id":7266,"name":"VariableDeclaration","src":"2047:14:10"},{"attributes":{"constant":false,"name":"class","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":7267,"name":"ElementaryTypeName","src":"2071:6:10"}],"id":7268,"name":"VariableDeclaration","src":"2071:12:10"},{"attributes":{"constant":false,"name":"ttl","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":7269,"name":"ElementaryTypeName","src":"2093:6:10"}],"id":7270,"name":"VariableDeclaration","src":"2093:10:10"},{"attributes":{"constant":false,"name":"rdataOffset","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7271,"name":"ElementaryTypeName","src":"2113:4:10"}],"id":7272,"name":"VariableDeclaration","src":"2113:16:10"},{"attributes":{"constant":false,"name":"nextOffset","scope":7275,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7273,"name":"ElementaryTypeName","src":"2139:4:10"}],"id":7274,"name":"VariableDeclaration","src":"2139:15:10"}],"id":7275,"name":"StructDefinition","src":"1978:183:10"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7301,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7276,"name":"ElementaryTypeName","src":"2387:5:10"}],"id":7277,"name":"VariableDeclaration","src":"2387:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7301,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7278,"name":"ElementaryTypeName","src":"2406:4:10"}],"id":7279,"name":"VariableDeclaration","src":"2406:11:10"}],"id":7280,"name":"ParameterList","src":"2386:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7301,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7281,"name":"UserDefinedTypeName","src":"2442:10:10"}],"id":7282,"name":"VariableDeclaration","src":"2442:21:10"}],"id":7283,"name":"ParameterList","src":"2441:23:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":7284,"name":"Identifier","src":"2475:3:10"}],"id":7286,"name":"MemberAccess","src":"2475:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7277,"type":"bytes memory","value":"self"},"id":7287,"name":"Identifier","src":"2486:4:10"}],"id":7288,"name":"Assignment","src":"2475:15:10"}],"id":7289,"name":"ExpressionStatement","src":"2475:15:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":7274,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":7290,"name":"Identifier","src":"2500:3:10"}],"id":7292,"name":"MemberAccess","src":"2500:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7279,"type":"uint256","value":"offset"},"id":7293,"name":"Identifier","src":"2517:6:10"}],"id":7294,"name":"Assignment","src":"2500:23:10"}],"id":7295,"name":"ExpressionStatement","src":"2500:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$7275_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7418,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":7296,"name":"Identifier","src":"2533:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7282,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":7297,"name":"Identifier","src":"2538:3:10"}],"id":7298,"name":"FunctionCall","src":"2533:9:10"}],"id":7299,"name":"ExpressionStatement","src":"2533:9:10"}],"id":7300,"name":"Block","src":"2465:84:10"}],"id":7301,"name":"FunctionDefinition","src":"2367:182:10"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":7316,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7302,"name":"UserDefinedTypeName","src":"2734:10:10"}],"id":7303,"name":"VariableDeclaration","src":"2734:22:10"}],"id":7304,"name":"ParameterList","src":"2733:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7316,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7305,"name":"ElementaryTypeName","src":"2780:4:10"}],"id":7306,"name":"VariableDeclaration","src":"2780:4:10"}],"id":7307,"name":"ParameterList","src":"2779:6:10"},{"children":[{"attributes":{"functionReturnParameters":7307},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7303,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7308,"name":"Identifier","src":"2803:4:10"}],"id":7309,"name":"MemberAccess","src":"2803:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7303,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7310,"name":"Identifier","src":"2818:4:10"}],"id":7311,"name":"MemberAccess","src":"2818:9:10"}],"id":7312,"name":"MemberAccess","src":"2818:16:10"}],"id":7313,"name":"BinaryOperation","src":"2803:31:10"}],"id":7314,"name":"Return","src":"2796:38:10"}],"id":7315,"name":"Block","src":"2786:55:10"}],"id":7316,"name":"FunctionDefinition","src":"2720:121:10"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":7418,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7317,"name":"UserDefinedTypeName","src":"2978:10:10"}],"id":7318,"name":"VariableDeclaration","src":"2978:22:10"}],"id":7319,"name":"ParameterList","src":"2977:24:10"},{"attributes":{"parameters":[null]},"children":[],"id":7320,"name":"ParameterList","src":"3016:0:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7321,"name":"Identifier","src":"3026:4:10"}],"id":7323,"name":"MemberAccess","src":"3026:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":7274,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7324,"name":"Identifier","src":"3040:4:10"}],"id":7325,"name":"MemberAccess","src":"3040:15:10"}],"id":7326,"name":"Assignment","src":"3026:29:10"}],"id":7327,"name":"ExpressionStatement","src":"3026:29:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7328,"name":"Identifier","src":"3069:4:10"}],"id":7329,"name":"MemberAccess","src":"3069:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7330,"name":"Identifier","src":"3084:4:10"}],"id":7331,"name":"MemberAccess","src":"3084:9:10"}],"id":7332,"name":"MemberAccess","src":"3084:16:10"}],"id":7333,"name":"BinaryOperation","src":"3069:31:10"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":7320},"id":7334,"name":"Return","src":"3116:7:10"}],"id":7335,"name":"Block","src":"3102:31:10"}],"id":7336,"name":"IfStatement","src":"3065:68:10"},{"attributes":{"assignments":[7338]},"children":[{"attributes":{"constant":false,"name":"off","scope":7417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7337,"name":"ElementaryTypeName","src":"3168:4:10"}],"id":7338,"name":"VariableDeclaration","src":"3168:8:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7339,"name":"Identifier","src":"3179:4:10"}],"id":7340,"name":"MemberAccess","src":"3179:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7188,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":7341,"name":"Identifier","src":"3193:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7342,"name":"Identifier","src":"3204:4:10"}],"id":7343,"name":"MemberAccess","src":"3204:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7344,"name":"Identifier","src":"3215:4:10"}],"id":7345,"name":"MemberAccess","src":"3215:11:10"}],"id":7346,"name":"FunctionCall","src":"3193:34:10"}],"id":7347,"name":"BinaryOperation","src":"3179:48:10"}],"id":7348,"name":"VariableDeclarationStatement","src":"3168:59:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":7266,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7349,"name":"Identifier","src":"3275:4:10"}],"id":7351,"name":"MemberAccess","src":"3275:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9898,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7352,"name":"Identifier","src":"3290:4:10"}],"id":7353,"name":"MemberAccess","src":"3290:9:10"}],"id":7354,"name":"MemberAccess","src":"3290:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7355,"name":"Identifier","src":"3311:3:10"}],"id":7356,"name":"FunctionCall","src":"3290:25:10"}],"id":7357,"name":"Assignment","src":"3275:40:10"}],"id":7358,"name":"ExpressionStatement","src":"3275:40:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7359,"name":"Identifier","src":"3325:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7360,"name":"Literal","src":"3332:1:10"}],"id":7361,"name":"Assignment","src":"3325:8:10"}],"id":7362,"name":"ExpressionStatement","src":"3325:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":7268,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7363,"name":"Identifier","src":"3343:4:10"}],"id":7365,"name":"MemberAccess","src":"3343:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9898,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7366,"name":"Identifier","src":"3356:4:10"}],"id":7367,"name":"MemberAccess","src":"3356:9:10"}],"id":7368,"name":"MemberAccess","src":"3356:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7369,"name":"Identifier","src":"3377:3:10"}],"id":7370,"name":"FunctionCall","src":"3356:25:10"}],"id":7371,"name":"Assignment","src":"3343:38:10"}],"id":7372,"name":"ExpressionStatement","src":"3343:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7373,"name":"Identifier","src":"3391:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7374,"name":"Literal","src":"3398:1:10"}],"id":7375,"name":"Assignment","src":"3391:8:10"}],"id":7376,"name":"ExpressionStatement","src":"3391:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":7270,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7377,"name":"Identifier","src":"3409:4:10"}],"id":7379,"name":"MemberAccess","src":"3409:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":9918,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7380,"name":"Identifier","src":"3420:4:10"}],"id":7381,"name":"MemberAccess","src":"3420:9:10"}],"id":7382,"name":"MemberAccess","src":"3420:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7383,"name":"Identifier","src":"3441:3:10"}],"id":7384,"name":"FunctionCall","src":"3420:25:10"}],"id":7385,"name":"Assignment","src":"3409:36:10"}],"id":7386,"name":"ExpressionStatement","src":"3409:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7387,"name":"Identifier","src":"3455:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7388,"name":"Literal","src":"3462:1:10"}],"id":7389,"name":"Assignment","src":"3455:8:10"}],"id":7390,"name":"ExpressionStatement","src":"3455:8:10"},{"attributes":{"assignments":[7392]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":7417,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7391,"name":"ElementaryTypeName","src":"3500:4:10"}],"id":7392,"name":"VariableDeclaration","src":"3500:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":9898,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7393,"name":"Identifier","src":"3519:4:10"}],"id":7394,"name":"MemberAccess","src":"3519:9:10"}],"id":7395,"name":"MemberAccess","src":"3519:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7396,"name":"Identifier","src":"3540:3:10"}],"id":7397,"name":"FunctionCall","src":"3519:25:10"}],"id":7398,"name":"VariableDeclarationStatement","src":"3500:44:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7399,"name":"Identifier","src":"3554:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7400,"name":"Literal","src":"3561:1:10"}],"id":7401,"name":"Assignment","src":"3554:8:10"}],"id":7402,"name":"ExpressionStatement","src":"3554:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":7272,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7403,"name":"Identifier","src":"3572:4:10"}],"id":7405,"name":"MemberAccess","src":"3572:16:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7406,"name":"Identifier","src":"3591:3:10"}],"id":7407,"name":"Assignment","src":"3572:22:10"}],"id":7408,"name":"ExpressionStatement","src":"3572:22:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":7274,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7318,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7409,"name":"Identifier","src":"3604:4:10"}],"id":7411,"name":"MemberAccess","src":"3604:15:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7338,"type":"uint256","value":"off"},"id":7412,"name":"Identifier","src":"3622:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7392,"type":"uint256","value":"rdataLength"},"id":7413,"name":"Identifier","src":"3628:11:10"}],"id":7414,"name":"BinaryOperation","src":"3622:17:10"}],"id":7415,"name":"Assignment","src":"3604:35:10"}],"id":7416,"name":"ExpressionStatement","src":"3604:35:10"}],"id":7417,"name":"Block","src":"3016:630:10"}],"id":7418,"name":"FunctionDefinition","src":"2964:682:10"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":7439,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7419,"name":"UserDefinedTypeName","src":"3836:10:10"}],"id":7420,"name":"VariableDeclaration","src":"3836:22:10"}],"id":7421,"name":"ParameterList","src":"3835:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7439,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7422,"name":"ElementaryTypeName","src":"3882:5:10"}],"id":7423,"name":"VariableDeclaration","src":"3882:12:10"}],"id":7424,"name":"ParameterList","src":"3881:14:10"},{"children":[{"attributes":{"functionReturnParameters":7424},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10069,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7420,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7425,"name":"Identifier","src":"3913:4:10"}],"id":7426,"name":"MemberAccess","src":"3913:9:10"}],"id":7427,"name":"MemberAccess","src":"3913:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7420,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7428,"name":"Identifier","src":"3933:4:10"}],"id":7429,"name":"MemberAccess","src":"3933:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7188,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":7430,"name":"Identifier","src":"3946:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7420,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7431,"name":"Identifier","src":"3957:4:10"}],"id":7432,"name":"MemberAccess","src":"3957:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7420,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7433,"name":"Identifier","src":"3968:4:10"}],"id":7434,"name":"MemberAccess","src":"3968:11:10"}],"id":7435,"name":"FunctionCall","src":"3946:34:10"}],"id":7436,"name":"FunctionCall","src":"3913:68:10"}],"id":7437,"name":"Return","src":"3906:75:10"}],"id":7438,"name":"Block","src":"3896:92:10"}],"id":7439,"name":"FunctionDefinition","src":"3822:166:10"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":7459,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":7440,"name":"UserDefinedTypeName","src":"4176:10:10"}],"id":7441,"name":"VariableDeclaration","src":"4176:22:10"}],"id":7442,"name":"ParameterList","src":"4175:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7459,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7443,"name":"ElementaryTypeName","src":"4222:5:10"}],"id":7444,"name":"VariableDeclaration","src":"4222:12:10"}],"id":7445,"name":"ParameterList","src":"4221:14:10"},{"children":[{"attributes":{"functionReturnParameters":7445},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10069,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":7262,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7441,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7446,"name":"Identifier","src":"4253:4:10"}],"id":7447,"name":"MemberAccess","src":"4253:9:10"}],"id":7448,"name":"MemberAccess","src":"4253:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":7272,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7441,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7449,"name":"Identifier","src":"4273:4:10"}],"id":7450,"name":"MemberAccess","src":"4273:16:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":7274,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7441,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7451,"name":"Identifier","src":"4291:4:10"}],"id":7452,"name":"MemberAccess","src":"4291:15:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":7272,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7441,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":7453,"name":"Identifier","src":"4309:4:10"}],"id":7454,"name":"MemberAccess","src":"4309:16:10"}],"id":7455,"name":"BinaryOperation","src":"4291:34:10"}],"id":7456,"name":"FunctionCall","src":"4253:73:10"}],"id":7457,"name":"Return","src":"4246:80:10"}],"id":7458,"name":"Block","src":"4236:97:10"}],"id":7459,"name":"FunctionDefinition","src":"4161:172:10"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7579,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7460,"name":"ElementaryTypeName","src":"4675:5:10"}],"id":7461,"name":"VariableDeclaration","src":"4675:17:10"},{"attributes":{"constant":false,"name":"offset","scope":7579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7462,"name":"ElementaryTypeName","src":"4694:4:10"}],"id":7463,"name":"VariableDeclaration","src":"4694:11:10"},{"attributes":{"constant":false,"name":"rrtype","scope":7579,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":7464,"name":"ElementaryTypeName","src":"4707:6:10"}],"id":7465,"name":"VariableDeclaration","src":"4707:13:10"}],"id":7466,"name":"ParameterList","src":"4674:47:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7579,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7467,"name":"ElementaryTypeName","src":"4745:4:10"}],"id":7468,"name":"VariableDeclaration","src":"4745:4:10"}],"id":7469,"name":"ParameterList","src":"4744:6:10"},{"children":[{"attributes":{"assignments":[7471]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":7578,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7470,"name":"ElementaryTypeName","src":"4761:5:10"}],"id":7471,"name":"VariableDeclaration","src":"4761:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7472,"name":"ElementaryTypeNameExpression","src":"4780:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7465,"type":"uint16","value":"rrtype"},"id":7473,"name":"Identifier","src":"4786:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7474,"name":"Literal","src":"4796:1:10"}],"id":7475,"name":"BinaryOperation","src":"4786:11:10"}],"id":7476,"name":"FunctionCall","src":"4780:18:10"}],"id":7477,"name":"VariableDeclarationStatement","src":"4761:37:10"},{"attributes":{"assignments":[7479]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":7578,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7478,"name":"ElementaryTypeName","src":"4808:5:10"}],"id":7479,"name":"VariableDeclaration","src":"4808:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7480,"name":"ElementaryTypeNameExpression","src":"4827:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7465,"type":"uint16","value":"rrtype"},"id":7481,"name":"Identifier","src":"4834:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7482,"name":"Literal","src":"4843:4:10"}],"id":7483,"name":"BinaryOperation","src":"4834:13:10"}],"id":7484,"name":"TupleExpression","src":"4833:15:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7485,"name":"Literal","src":"4851:1:10"}],"id":7486,"name":"BinaryOperation","src":"4833:19:10"}],"id":7487,"name":"FunctionCall","src":"4827:26:10"}],"id":7488,"name":"VariableDeclarationStatement","src":"4808:45:10"},{"attributes":{"assignments":[7490]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":7578,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7489,"name":"ElementaryTypeName","src":"4863:5:10"}],"id":7490,"name":"VariableDeclaration","src":"4863:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7491,"name":"ElementaryTypeNameExpression","src":"4885:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7492,"name":"ElementaryTypeNameExpression","src":"4891:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7493,"name":"Literal","src":"4897:1:10"}],"id":7494,"name":"FunctionCall","src":"4891:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7495,"name":"ElementaryTypeNameExpression","src":"4904:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":7496,"name":"Literal","src":"4910:1:10"}],"id":7497,"name":"FunctionCall","src":"4904:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":7498,"name":"ElementaryTypeNameExpression","src":"4915:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7465,"type":"uint16","value":"rrtype"},"id":7499,"name":"Identifier","src":"4921:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":7500,"name":"Literal","src":"4930:3:10"}],"id":7501,"name":"BinaryOperation","src":"4921:12:10"}],"id":7502,"name":"FunctionCall","src":"4915:19:10"}],"id":7503,"name":"BinaryOperation","src":"4904:30:10"}],"id":7504,"name":"TupleExpression","src":"4903:32:10"}],"id":7505,"name":"BinaryOperation","src":"4891:44:10"}],"id":7506,"name":"FunctionCall","src":"4885:51:10"}],"id":7507,"name":"VariableDeclarationStatement","src":"4863:73:10"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[7509]},"children":[{"attributes":{"constant":false,"name":"off","scope":7575,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7508,"name":"ElementaryTypeName","src":"4951:4:10"}],"id":7509,"name":"VariableDeclaration","src":"4951:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7463,"type":"uint256","value":"offset"},"id":7510,"name":"Identifier","src":"4962:6:10"}],"id":7511,"name":"VariableDeclarationStatement","src":"4951:17:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7512,"name":"Identifier","src":"4970:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7461,"type":"bytes memory","value":"self"},"id":7513,"name":"Identifier","src":"4976:4:10"}],"id":7514,"name":"MemberAccess","src":"4976:11:10"}],"id":7515,"name":"BinaryOperation","src":"4970:17:10"},{"children":[{"attributes":{"assignments":[7517]},"children":[{"attributes":{"constant":false,"name":"window","scope":7574,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7516,"name":"ElementaryTypeName","src":"5004:5:10"}],"id":7517,"name":"VariableDeclaration","src":"5004:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7461,"type":"bytes memory","value":"self"},"id":7518,"name":"Identifier","src":"5019:4:10"}],"id":7519,"name":"MemberAccess","src":"5019:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7520,"name":"Identifier","src":"5034:3:10"}],"id":7521,"name":"FunctionCall","src":"5019:19:10"}],"id":7522,"name":"VariableDeclarationStatement","src":"5004:34:10"},{"attributes":{"assignments":[7524]},"children":[{"attributes":{"constant":false,"name":"len","scope":7574,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7523,"name":"ElementaryTypeName","src":"5052:5:10"}],"id":7524,"name":"VariableDeclaration","src":"5052:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7461,"type":"bytes memory","value":"self"},"id":7525,"name":"Identifier","src":"5064:4:10"}],"id":7526,"name":"MemberAccess","src":"5064:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7527,"name":"Identifier","src":"5079:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7528,"name":"Literal","src":"5085:1:10"}],"id":7529,"name":"BinaryOperation","src":"5079:7:10"}],"id":7530,"name":"FunctionCall","src":"5064:23:10"}],"id":7531,"name":"VariableDeclarationStatement","src":"5052:35:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7471,"type":"uint8","value":"typeWindow"},"id":7532,"name":"Identifier","src":"5105:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7517,"type":"uint8","value":"window"},"id":7533,"name":"Identifier","src":"5118:6:10"}],"id":7534,"name":"BinaryOperation","src":"5105:19:10"},{"children":[{"attributes":{"functionReturnParameters":7469},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7535,"name":"Literal","src":"5213:5:10"}],"id":7536,"name":"Return","src":"5206:12:10"}],"id":7537,"name":"Block","src":"5126:107:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7471,"type":"uint8","value":"typeWindow"},"id":7538,"name":"Identifier","src":"5243:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7517,"type":"uint8","value":"window"},"id":7539,"name":"Identifier","src":"5257:6:10"}],"id":7540,"name":"BinaryOperation","src":"5243:20:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint8","value":"len"},"id":7541,"name":"Identifier","src":"5329:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7542,"name":"Literal","src":"5335:1:10"}],"id":7543,"name":"BinaryOperation","src":"5329:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7479,"type":"uint8","value":"windowByte"},"id":7544,"name":"Identifier","src":"5340:10:10"}],"id":7545,"name":"BinaryOperation","src":"5329:21:10"},{"children":[{"attributes":{"functionReturnParameters":7469},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7546,"name":"Literal","src":"5443:5:10"}],"id":7547,"name":"Return","src":"5436:12:10"}],"id":7548,"name":"Block","src":"5352:115:10"}],"id":7549,"name":"IfStatement","src":"5325:142:10"},{"attributes":{"functionReturnParameters":7469},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7461,"type":"bytes memory","value":"self"},"id":7550,"name":"Identifier","src":"5492:4:10"}],"id":7551,"name":"MemberAccess","src":"5492:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7552,"name":"Identifier","src":"5507:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7479,"type":"uint8","value":"windowByte"},"id":7553,"name":"Identifier","src":"5513:10:10"}],"id":7554,"name":"BinaryOperation","src":"5507:16:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7555,"name":"Literal","src":"5526:1:10"}],"id":7556,"name":"BinaryOperation","src":"5507:20:10"}],"id":7557,"name":"FunctionCall","src":"5492:36:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7490,"type":"uint8","value":"windowBitmask"},"id":7558,"name":"Identifier","src":"5531:13:10"}],"id":7559,"name":"BinaryOperation","src":"5492:52:10"}],"id":7560,"name":"TupleExpression","src":"5491:54:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7561,"name":"Literal","src":"5549:1:10"}],"id":7562,"name":"BinaryOperation","src":"5491:59:10"}],"id":7563,"name":"Return","src":"5484:66:10"}],"id":7564,"name":"Block","src":"5265:300:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"uint256","value":"off"},"id":7565,"name":"Identifier","src":"5630:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"uint8","value":"len"},"id":7566,"name":"Identifier","src":"5637:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7567,"name":"Literal","src":"5643:1:10"}],"id":7568,"name":"BinaryOperation","src":"5637:7:10"}],"id":7569,"name":"Assignment","src":"5630:14:10"}],"id":7570,"name":"ExpressionStatement","src":"5630:14:10"}],"id":7571,"name":"Block","src":"5571:88:10"}],"id":7572,"name":"IfStatement","src":"5239:420:10"}],"id":7573,"name":"IfStatement","src":"5101:558:10"}],"id":7574,"name":"Block","src":"4990:679:10"}],"id":7575,"name":"ForStatement","src":"4946:723:10"},{"attributes":{"functionReturnParameters":7469},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":7576,"name":"Literal","src":"5686:5:10"}],"id":7577,"name":"Return","src":"5679:12:10"}],"id":7578,"name":"Block","src":"4751:947:10"}],"id":7579,"name":"FunctionDefinition","src":"4650:1048:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7734,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7580,"name":"ElementaryTypeName","src":"5726:5:10"}],"id":7581,"name":"VariableDeclaration","src":"5726:17:10"},{"attributes":{"constant":false,"name":"other","scope":7734,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7582,"name":"ElementaryTypeName","src":"5745:5:10"}],"id":7583,"name":"VariableDeclaration","src":"5745:18:10"}],"id":7584,"name":"ParameterList","src":"5725:39:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7734,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":7585,"name":"ElementaryTypeName","src":"5788:3:10"}],"id":7586,"name":"VariableDeclaration","src":"5788:3:10"}],"id":7587,"name":"ParameterList","src":"5787:5:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9862,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7588,"name":"Identifier","src":"5807:4:10"}],"id":7589,"name":"MemberAccess","src":"5807:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7590,"name":"Identifier","src":"5819:5:10"}],"id":7591,"name":"FunctionCall","src":"5807:18:10"},{"children":[{"attributes":{"functionReturnParameters":7587},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7592,"name":"Literal","src":"5848:1:10"}],"id":7593,"name":"Return","src":"5841:8:10"}],"id":7594,"name":"Block","src":"5827:33:10"}],"id":7595,"name":"IfStatement","src":"5803:57:10"},{"attributes":{"assignments":[7597],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7596,"name":"ElementaryTypeName","src":"5870:4:10"}],"id":7597,"name":"VariableDeclaration","src":"5870:8:10"}],"id":7598,"name":"VariableDeclarationStatement","src":"5870:8:10"},{"attributes":{"assignments":[7600],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7599,"name":"ElementaryTypeName","src":"5888:4:10"}],"id":7600,"name":"VariableDeclaration","src":"5888:13:10"}],"id":7601,"name":"VariableDeclarationStatement","src":"5888:13:10"},{"attributes":{"assignments":[7603],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7602,"name":"ElementaryTypeName","src":"5911:4:10"}],"id":7603,"name":"VariableDeclaration","src":"5911:12:10"}],"id":7604,"name":"VariableDeclarationStatement","src":"5911:12:10"},{"attributes":{"assignments":[7606],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7605,"name":"ElementaryTypeName","src":"5933:4:10"}],"id":7606,"name":"VariableDeclaration","src":"5933:17:10"}],"id":7607,"name":"VariableDeclarationStatement","src":"5933:17:10"},{"attributes":{"assignments":[7609]},"children":[{"attributes":{"constant":false,"name":"counts","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7608,"name":"ElementaryTypeName","src":"5960:4:10"}],"id":7609,"name":"VariableDeclaration","src":"5960:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7260,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":7610,"name":"Identifier","src":"5974:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7611,"name":"Identifier","src":"5985:4:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7612,"name":"Literal","src":"5991:1:10"}],"id":7613,"name":"FunctionCall","src":"5974:19:10"}],"id":7614,"name":"VariableDeclarationStatement","src":"5960:33:10"},{"attributes":{"assignments":[7616]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":7733,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7615,"name":"ElementaryTypeName","src":"6003:4:10"}],"id":7616,"name":"VariableDeclaration","src":"6003:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":7260,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":7617,"name":"Identifier","src":"6022:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7618,"name":"Identifier","src":"6033:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7619,"name":"Literal","src":"6040:1:10"}],"id":7620,"name":"FunctionCall","src":"6022:20:10"}],"id":7621,"name":"VariableDeclarationStatement","src":"6003:39:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7622,"name":"Identifier","src":"6153:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7616,"type":"uint256","value":"othercounts"},"id":7623,"name":"Identifier","src":"6162:11:10"}],"id":7624,"name":"BinaryOperation","src":"6153:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7603,"type":"uint256","value":"prevoff"},"id":7625,"name":"Identifier","src":"6189:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7626,"name":"Identifier","src":"6199:3:10"}],"id":7627,"name":"Assignment","src":"6189:13:10"}],"id":7628,"name":"ExpressionStatement","src":"6189:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7629,"name":"Identifier","src":"6216:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7753,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":7630,"name":"Identifier","src":"6222:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7631,"name":"Identifier","src":"6231:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7632,"name":"Identifier","src":"6237:3:10"}],"id":7633,"name":"FunctionCall","src":"6222:19:10"}],"id":7634,"name":"Assignment","src":"6216:25:10"}],"id":7635,"name":"ExpressionStatement","src":"6216:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7636,"name":"Identifier","src":"6255:6:10"}],"id":7637,"name":"UnaryOperation","src":"6255:8:10"}],"id":7638,"name":"ExpressionStatement","src":"6255:8:10"}],"id":7639,"name":"Block","src":"6175:99:10"}],"id":7640,"name":"WhileStatement","src":"6146:128:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7616,"type":"uint256","value":"othercounts"},"id":7641,"name":"Identifier","src":"6291:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7642,"name":"Identifier","src":"6305:6:10"}],"id":7643,"name":"BinaryOperation","src":"6291:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"uint256","value":"otherprevoff"},"id":7644,"name":"Identifier","src":"6327:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7645,"name":"Identifier","src":"6342:8:10"}],"id":7646,"name":"Assignment","src":"6327:23:10"}],"id":7647,"name":"ExpressionStatement","src":"6327:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7648,"name":"Identifier","src":"6364:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7753,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":7649,"name":"Identifier","src":"6375:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7650,"name":"Identifier","src":"6384:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7651,"name":"Identifier","src":"6391:8:10"}],"id":7652,"name":"FunctionCall","src":"6375:25:10"}],"id":7653,"name":"Assignment","src":"6364:36:10"}],"id":7654,"name":"ExpressionStatement","src":"6364:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7616,"type":"uint256","value":"othercounts"},"id":7655,"name":"Identifier","src":"6414:11:10"}],"id":7656,"name":"UnaryOperation","src":"6414:13:10"}],"id":7657,"name":"ExpressionStatement","src":"6414:13:10"}],"id":7658,"name":"Block","src":"6313:125:10"}],"id":7659,"name":"WhileStatement","src":"6284:154:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7660,"name":"Identifier","src":"6513:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7661,"name":"Literal","src":"6522:1:10"}],"id":7662,"name":"BinaryOperation","src":"6513:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9808,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7663,"name":"Identifier","src":"6528:4:10"}],"id":7664,"name":"MemberAccess","src":"6528:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7665,"name":"Identifier","src":"6540:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7666,"name":"Identifier","src":"6545:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7667,"name":"Identifier","src":"6552:8:10"}],"id":7668,"name":"FunctionCall","src":"6528:33:10"}],"id":7669,"name":"UnaryOperation","src":"6527:34:10"}],"id":7670,"name":"BinaryOperation","src":"6513:48:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7603,"type":"uint256","value":"prevoff"},"id":7671,"name":"Identifier","src":"6577:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7672,"name":"Identifier","src":"6587:3:10"}],"id":7673,"name":"Assignment","src":"6577:13:10"}],"id":7674,"name":"ExpressionStatement","src":"6577:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7675,"name":"Identifier","src":"6604:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7753,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":7676,"name":"Identifier","src":"6610:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7677,"name":"Identifier","src":"6619:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7678,"name":"Identifier","src":"6625:3:10"}],"id":7679,"name":"FunctionCall","src":"6610:19:10"}],"id":7680,"name":"Assignment","src":"6604:25:10"}],"id":7681,"name":"ExpressionStatement","src":"6604:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"uint256","value":"otherprevoff"},"id":7682,"name":"Identifier","src":"6643:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7683,"name":"Identifier","src":"6658:8:10"}],"id":7684,"name":"Assignment","src":"6643:23:10"}],"id":7685,"name":"ExpressionStatement","src":"6643:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7686,"name":"Identifier","src":"6680:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7753,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":7687,"name":"Identifier","src":"6691:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7688,"name":"Identifier","src":"6700:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7689,"name":"Identifier","src":"6707:8:10"}],"id":7690,"name":"FunctionCall","src":"6691:25:10"}],"id":7691,"name":"Assignment","src":"6680:36:10"}],"id":7692,"name":"ExpressionStatement","src":"6680:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7609,"type":"uint256","value":"counts"},"id":7693,"name":"Identifier","src":"6730:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7694,"name":"Literal","src":"6740:1:10"}],"id":7695,"name":"Assignment","src":"6730:11:10"}],"id":7696,"name":"ExpressionStatement","src":"6730:11:10"}],"id":7697,"name":"Block","src":"6563:189:10"}],"id":7698,"name":"WhileStatement","src":"6506:246:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7597,"type":"uint256","value":"off"},"id":7699,"name":"Identifier","src":"6766:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7700,"name":"Literal","src":"6773:1:10"}],"id":7701,"name":"BinaryOperation","src":"6766:8:10"},{"children":[{"attributes":{"functionReturnParameters":7587},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7702,"name":"Literal","src":"6798:1:10"}],"id":7703,"name":"UnaryOperation","src":"6797:2:10"}],"id":7704,"name":"Return","src":"6790:9:10"}],"id":7705,"name":"Block","src":"6776:34:10"}],"id":7706,"name":"IfStatement","src":"6762:48:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7600,"type":"uint256","value":"otheroff"},"id":7707,"name":"Identifier","src":"6822:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7708,"name":"Literal","src":"6834:1:10"}],"id":7709,"name":"BinaryOperation","src":"6822:13:10"},{"children":[{"attributes":{"functionReturnParameters":7587},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7710,"name":"Literal","src":"6858:1:10"}],"id":7711,"name":"Return","src":"6851:8:10"}],"id":7712,"name":"Block","src":"6837:33:10"}],"id":7713,"name":"IfStatement","src":"6819:51:10"},{"attributes":{"functionReturnParameters":7587},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":9748,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7714,"name":"Identifier","src":"6887:4:10"}],"id":7715,"name":"MemberAccess","src":"6887:12:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7603,"type":"uint256","value":"prevoff"},"id":7716,"name":"Identifier","src":"6900:7:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7717,"name":"Literal","src":"6910:1:10"}],"id":7718,"name":"BinaryOperation","src":"6900:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7581,"type":"bytes memory","value":"self"},"id":7719,"name":"Identifier","src":"6913:4:10"}],"id":7720,"name":"MemberAccess","src":"6913:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7603,"type":"uint256","value":"prevoff"},"id":7721,"name":"Identifier","src":"6928:7:10"}],"id":7722,"name":"FunctionCall","src":"6913:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7723,"name":"Identifier","src":"6938:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"uint256","value":"otherprevoff"},"id":7724,"name":"Identifier","src":"6945:12:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7725,"name":"Literal","src":"6960:1:10"}],"id":7726,"name":"BinaryOperation","src":"6945:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7583,"type":"bytes memory","value":"other"},"id":7727,"name":"Identifier","src":"6963:5:10"}],"id":7728,"name":"MemberAccess","src":"6963:15:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7606,"type":"uint256","value":"otherprevoff"},"id":7729,"name":"Identifier","src":"6979:12:10"}],"id":7730,"name":"FunctionCall","src":"6963:29:10"}],"id":7731,"name":"FunctionCall","src":"6887:106:10"}],"id":7732,"name":"Return","src":"6880:113:10"}],"id":7733,"name":"Block","src":"5793:1207:10"}],"id":7734,"name":"FunctionDefinition","src":"5704:1296:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":7754,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":7753,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7735,"name":"ElementaryTypeName","src":"7024:5:10"}],"id":7736,"name":"VariableDeclaration","src":"7024:17:10"},{"attributes":{"constant":false,"name":"off","scope":7753,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7737,"name":"ElementaryTypeName","src":"7043:4:10"}],"id":7738,"name":"VariableDeclaration","src":"7043:8:10"}],"id":7739,"name":"ParameterList","src":"7023:29:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":7753,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7740,"name":"ElementaryTypeName","src":"7075:4:10"}],"id":7741,"name":"VariableDeclaration","src":"7075:4:10"}],"id":7742,"name":"ParameterList","src":"7074:6:10"},{"children":[{"attributes":{"functionReturnParameters":7742},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"uint256","value":"off"},"id":7743,"name":"Identifier","src":"7098:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7744,"name":"Literal","src":"7104:1:10"}],"id":7745,"name":"BinaryOperation","src":"7098:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":9878,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7736,"type":"bytes memory","value":"body"},"id":7746,"name":"Identifier","src":"7108:4:10"}],"id":7747,"name":"MemberAccess","src":"7108:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7738,"type":"uint256","value":"off"},"id":7748,"name":"Identifier","src":"7123:3:10"}],"id":7749,"name":"FunctionCall","src":"7108:19:10"}],"id":7750,"name":"BinaryOperation","src":"7098:29:10"}],"id":7751,"name":"Return","src":"7091:36:10"}],"id":7752,"name":"Block","src":"7081:53:10"}],"id":7753,"name":"FunctionDefinition","src":"7006:128:10"}],"id":7754,"name":"ContractDefinition","src":"150:6986:10"}],"id":7755,"name":"SourceUnit","src":"0:7137:10"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[7136]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7069,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7136],"name":"ResolverBase","scope":7137},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":7136,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7070,"name":"ElementaryTypeName","src":"53:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":7071,"name":"Literal","src":"97:10:11"}],"id":7072,"name":"VariableDeclaration","src":"53:54:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7136,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7084,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7073,"name":"ElementaryTypeName","src":"141:6:11"}],"id":7074,"name":"VariableDeclaration","src":"141:18:11"}],"id":7075,"name":"ParameterList","src":"140:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":7084,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7076,"name":"ElementaryTypeName","src":"181:4:11"}],"id":7077,"name":"VariableDeclaration","src":"181:4:11"}],"id":7078,"name":"ParameterList","src":"180:6:11"},{"children":[{"attributes":{"functionReturnParameters":7078},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7074,"type":"bytes4","value":"interfaceID"},"id":7079,"name":"Identifier","src":"204:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7072,"type":"bytes4","value":"INTERFACE_META_ID"},"id":7080,"name":"Identifier","src":"219:17:11"}],"id":7081,"name":"BinaryOperation","src":"204:32:11"}],"id":7082,"name":"Return","src":"197:39:11"}],"id":7083,"name":"Block","src":"187:56:11"}],"id":7084,"name":"FunctionDefinition","src":"114:129:11"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":7136,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7091,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7085,"name":"ElementaryTypeName","src":"271:7:11"}],"id":7086,"name":"VariableDeclaration","src":"271:12:11"}],"id":7087,"name":"ParameterList","src":"270:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":7091,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7088,"name":"ElementaryTypeName","src":"307:4:11"}],"id":7089,"name":"VariableDeclaration","src":"307:4:11"}],"id":7090,"name":"ParameterList","src":"306:6:11"}],"id":7091,"name":"FunctionDefinition","src":"249:64:11"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7103,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7092,"name":"ElementaryTypeName","src":"339:7:11"}],"id":7093,"name":"VariableDeclaration","src":"339:12:11"}],"id":7094,"name":"ParameterList","src":"338:14:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":7095,"name":"Identifier","src":"363:7:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7091,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":7096,"name":"Identifier","src":"371:12:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7093,"type":"bytes32","value":"node"},"id":7097,"name":"Identifier","src":"384:4:11"}],"id":7098,"name":"FunctionCall","src":"371:18:11"}],"id":7099,"name":"FunctionCall","src":"363:27:11"}],"id":7100,"name":"ExpressionStatement","src":"363:27:11"},{"id":7101,"name":"PlaceholderStatement","src":"400:1:11"}],"id":7102,"name":"Block","src":"353:55:11"}],"id":7103,"name":"ModifierDefinition","src":"319:89:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":7136,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":7119,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7104,"name":"ElementaryTypeName","src":"438:5:11"}],"id":7105,"name":"VariableDeclaration","src":"438:14:11"}],"id":7106,"name":"ParameterList","src":"437:16:11"},{"children":[{"attributes":{"constant":false,"name":"a","scope":7119,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":7107,"name":"ElementaryTypeName","src":"476:15:11"}],"id":7108,"name":"VariableDeclaration","src":"476:17:11"}],"id":7109,"name":"ParameterList","src":"475:19:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":7110,"name":"Identifier","src":"505:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7105,"type":"bytes memory","value":"b"},"id":7111,"name":"Identifier","src":"513:1:11"}],"id":7112,"name":"MemberAccess","src":"513:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":7113,"name":"Literal","src":"525:2:11"}],"id":7114,"name":"BinaryOperation","src":"513:14:11"}],"id":7115,"name":"FunctionCall","src":"505:23:11"}],"id":7116,"name":"ExpressionStatement","src":"505:23:11"},{"attributes":{"externalReferences":[{"a":{"declaration":7108,"isOffset":false,"isSlot":false,"src":"561:1:11","valueSize":1}},{"b":{"declaration":7105,"isOffset":false,"isSlot":false,"src":"580:1:11","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":7117,"name":"InlineAssembly","src":"538:74:11"}],"id":7118,"name":"Block","src":"495:123:11"}],"id":7119,"name":"FunctionDefinition","src":"414:204:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":7136,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":7135,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7120,"name":"ElementaryTypeName","src":"648:7:11"}],"id":7121,"name":"VariableDeclaration","src":"648:9:11"}],"id":7122,"name":"ParameterList","src":"647:11:11"},{"children":[{"attributes":{"constant":false,"name":"b","scope":7135,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7123,"name":"ElementaryTypeName","src":"681:5:11"}],"id":7124,"name":"VariableDeclaration","src":"681:14:11"}],"id":7125,"name":"ParameterList","src":"680:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7124,"type":"bytes memory","value":"b"},"id":7126,"name":"Identifier","src":"707:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":7127,"name":"ElementaryTypeName","src":"715:5:11"}],"id":7128,"name":"NewExpression","src":"711:9:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":7129,"name":"Literal","src":"721:2:11"}],"id":7130,"name":"FunctionCall","src":"711:13:11"}],"id":7131,"name":"Assignment","src":"707:17:11"}],"id":7132,"name":"ExpressionStatement","src":"707:17:11"},{"attributes":{"externalReferences":[{"b":{"declaration":7124,"isOffset":false,"isSlot":false,"src":"768:1:11","valueSize":1}},{"a":{"declaration":7121,"isOffset":false,"isSlot":false,"src":"780:1:11","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":7133,"name":"InlineAssembly","src":"734:73:11"}],"id":7134,"name":"Block","src":"697:116:11"}],"id":7135,"name":"FunctionDefinition","src":"624:189:11"}],"id":7136,"name":"ContractDefinition","src":"25:790:11"}],"id":7137,"name":"SourceUnit","src":"0:816:11"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[4928]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4794,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":4929,"symbolAliases":[null],"unitAlias":""},"id":4795,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4928,7136],"name":"ABIResolver","scope":4929},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":4796,"name":"UserDefinedTypeName","src":"80:12:12"}],"id":4797,"name":"InheritanceSpecifier","src":"80:12:12"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":4928,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4798,"name":"ElementaryTypeName","src":"99:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":4799,"name":"Literal","src":"142:10:12"}],"id":4800,"name":"VariableDeclaration","src":"99:53:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4806,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4801,"name":"ElementaryTypeName","src":"176:7:12"}],"id":4802,"name":"VariableDeclaration","src":"176:20:12"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":4806,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4803,"name":"ElementaryTypeName","src":"198:7:12"}],"id":4804,"name":"VariableDeclaration","src":"198:27:12"}],"id":4805,"name":"ParameterList","src":"175:51:12"}],"id":4806,"name":"EventDefinition","src":"159:68:12"},{"attributes":{"constant":false,"name":"abis","scope":4928,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4807,"name":"ElementaryTypeName","src":"241:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4808,"name":"ElementaryTypeName","src":"258:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":4809,"name":"ElementaryTypeName","src":"267:5:12"}],"id":4810,"name":"Mapping","src":"250:23:12"}],"id":4811,"name":"Mapping","src":"233:41:12"}],"id":4812,"name":"VariableDeclaration","src":"233:46:12"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":4928,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4850,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4813,"name":"ElementaryTypeName","src":"598:7:12"}],"id":4814,"name":"VariableDeclaration","src":"598:12:12"},{"attributes":{"constant":false,"name":"contentType","scope":4850,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4815,"name":"ElementaryTypeName","src":"612:7:12"}],"id":4816,"name":"VariableDeclaration","src":"612:19:12"},{"attributes":{"constant":false,"name":"data","scope":4850,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4817,"name":"ElementaryTypeName","src":"633:5:12"}],"id":4818,"name":"VariableDeclaration","src":"633:19:12"}],"id":4819,"name":"ParameterList","src":"597:56:12"},{"attributes":{"parameters":[null]},"children":[],"id":4823,"name":"ParameterList","src":"680:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":4820,"name":"Identifier","src":"663:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4814,"type":"bytes32","value":"node"},"id":4821,"name":"Identifier","src":"674:4:12"}],"id":4822,"name":"ModifierInvocation","src":"663:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10310,"type":"function (bool) pure","value":"require"},"id":4824,"name":"Identifier","src":"735:7:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"uint256","value":"contentType"},"id":4825,"name":"Identifier","src":"745:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4826,"name":"Literal","src":"759:1:12"}],"id":4827,"name":"BinaryOperation","src":"745:15:12"}],"id":4828,"name":"TupleExpression","src":"744:17:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"uint256","value":"contentType"},"id":4829,"name":"Identifier","src":"764:11:12"}],"id":4830,"name":"BinaryOperation","src":"744:31:12"}],"id":4831,"name":"TupleExpression","src":"743:33:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4832,"name":"Literal","src":"780:1:12"}],"id":4833,"name":"BinaryOperation","src":"743:38:12"}],"id":4834,"name":"FunctionCall","src":"735:47:12"}],"id":4835,"name":"ExpressionStatement","src":"735:47:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4836,"name":"Identifier","src":"793:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4814,"type":"bytes32","value":"node"},"id":4837,"name":"Identifier","src":"798:4:12"}],"id":4839,"name":"IndexAccess","src":"793:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"uint256","value":"contentType"},"id":4838,"name":"Identifier","src":"804:11:12"}],"id":4840,"name":"IndexAccess","src":"793:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4818,"type":"bytes calldata","value":"data"},"id":4841,"name":"Identifier","src":"819:4:12"}],"id":4842,"name":"Assignment","src":"793:30:12"}],"id":4843,"name":"ExpressionStatement","src":"793:30:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4806,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":4844,"name":"Identifier","src":"838:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4814,"type":"bytes32","value":"node"},"id":4845,"name":"Identifier","src":"849:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4816,"type":"uint256","value":"contentType"},"id":4846,"name":"Identifier","src":"855:11:12"}],"id":4847,"name":"FunctionCall","src":"838:29:12"}],"id":4848,"name":"EmitStatement","src":"833:34:12"}],"id":4849,"name":"Block","src":"680:194:12"}],"id":4850,"name":"FunctionDefinition","src":"582:292:12"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":4928,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4910,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4851,"name":"ElementaryTypeName","src":"1208:7:12"}],"id":4852,"name":"VariableDeclaration","src":"1208:12:12"},{"attributes":{"constant":false,"name":"contentTypes","scope":4910,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4853,"name":"ElementaryTypeName","src":"1222:7:12"}],"id":4854,"name":"VariableDeclaration","src":"1222:20:12"}],"id":4855,"name":"ParameterList","src":"1207:36:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":4910,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4856,"name":"ElementaryTypeName","src":"1267:7:12"}],"id":4857,"name":"VariableDeclaration","src":"1267:7:12"},{"attributes":{"constant":false,"name":"","scope":4910,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4858,"name":"ElementaryTypeName","src":"1276:5:12"}],"id":4859,"name":"VariableDeclaration","src":"1276:12:12"}],"id":4860,"name":"ParameterList","src":"1266:23:12"},{"children":[{"attributes":{"assignments":[4864]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":4909,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4861,"name":"ElementaryTypeName","src":"1308:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":4862,"name":"ElementaryTypeName","src":"1317:5:12"}],"id":4863,"name":"Mapping","src":"1300:23:12"}],"id":4864,"name":"VariableDeclaration","src":"1300:38:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4812,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":4865,"name":"Identifier","src":"1341:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4852,"type":"bytes32","value":"node"},"id":4866,"name":"Identifier","src":"1346:4:12"}],"id":4867,"name":"IndexAccess","src":"1341:10:12"}],"id":4868,"name":"VariableDeclarationStatement","src":"1300:51:12"},{"children":[{"attributes":{"assignments":[4870]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":4902,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4869,"name":"ElementaryTypeName","src":"1367:7:12"}],"id":4870,"name":"VariableDeclaration","src":"1367:19:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4871,"name":"Literal","src":"1389:1:12"}],"id":4872,"name":"VariableDeclarationStatement","src":"1367:23:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4873,"name":"Identifier","src":"1392:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"uint256","value":"contentTypes"},"id":4874,"name":"Identifier","src":"1407:12:12"}],"id":4875,"name":"BinaryOperation","src":"1392:27:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4876,"name":"Identifier","src":"1421:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4877,"name":"Literal","src":"1437:1:12"}],"id":4878,"name":"Assignment","src":"1421:17:12"}],"id":4879,"name":"ExpressionStatement","src":"1421:17:12"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4880,"name":"Identifier","src":"1459:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4854,"type":"uint256","value":"contentTypes"},"id":4881,"name":"Identifier","src":"1473:12:12"}],"id":4882,"name":"BinaryOperation","src":"1459:26:12"}],"id":4883,"name":"TupleExpression","src":"1458:28:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4884,"name":"Literal","src":"1490:1:12"}],"id":4885,"name":"BinaryOperation","src":"1458:33:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4864,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4886,"name":"Identifier","src":"1495:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4887,"name":"Identifier","src":"1502:11:12"}],"id":4888,"name":"IndexAccess","src":"1495:19:12"}],"id":4889,"name":"MemberAccess","src":"1495:26:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4890,"name":"Literal","src":"1524:1:12"}],"id":4891,"name":"BinaryOperation","src":"1495:30:12"}],"id":4892,"name":"BinaryOperation","src":"1458:67:12"},{"children":[{"attributes":{"functionReturnParameters":4860},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4893,"name":"Identifier","src":"1553:11:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4864,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":4894,"name":"Identifier","src":"1566:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4870,"type":"uint256","value":"contentType"},"id":4895,"name":"Identifier","src":"1573:11:12"}],"id":4896,"name":"IndexAccess","src":"1566:19:12"}],"id":4897,"name":"TupleExpression","src":"1552:34:12"}],"id":4898,"name":"Return","src":"1545:41:12"}],"id":4899,"name":"Block","src":"1527:74:12"}],"id":4900,"name":"IfStatement","src":"1454:147:12"}],"id":4901,"name":"Block","src":"1440:171:12"}],"id":4902,"name":"ForStatement","src":"1362:249:12"},{"attributes":{"functionReturnParameters":4860},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4903,"name":"Literal","src":"1629:1:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":4904,"name":"ElementaryTypeNameExpression","src":"1632:5:12"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":4905,"name":"Literal","src":"1638:2:12"}],"id":4906,"name":"FunctionCall","src":"1632:9:12"}],"id":4907,"name":"TupleExpression","src":"1628:14:12"}],"id":4908,"name":"Return","src":"1621:21:12"}],"id":4909,"name":"Block","src":"1290:359:12"}],"id":4910,"name":"FunctionDefinition","src":"1195:454:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":4928,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":4927,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4911,"name":"ElementaryTypeName","src":"1682:6:12"}],"id":4912,"name":"VariableDeclaration","src":"1682:18:12"}],"id":4913,"name":"ParameterList","src":"1681:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":4927,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4914,"name":"ElementaryTypeName","src":"1722:4:12"}],"id":4915,"name":"VariableDeclaration","src":"1722:4:12"}],"id":4916,"name":"ParameterList","src":"1721:6:12"},{"children":[{"attributes":{"functionReturnParameters":4916},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4912,"type":"bytes4","value":"interfaceID"},"id":4917,"name":"Identifier","src":"1745:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4800,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":4918,"name":"Identifier","src":"1760:16:12"}],"id":4919,"name":"BinaryOperation","src":"1745:31:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10348,"type":"contract super ABIResolver","value":"super"},"id":4920,"name":"Identifier","src":"1780:5:12"}],"id":4921,"name":"MemberAccess","src":"1780:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4912,"type":"bytes4","value":"interfaceID"},"id":4922,"name":"Identifier","src":"1804:11:12"}],"id":4923,"name":"FunctionCall","src":"1780:36:12"}],"id":4924,"name":"BinaryOperation","src":"1745:71:12"}],"id":4925,"name":"Return","src":"1738:78:12"}],"id":4926,"name":"Block","src":"1728:95:12"}],"id":4927,"name":"FunctionDefinition","src":"1655:168:12"}],"id":4928,"name":"ContractDefinition","src":"56:1769:12"}],"id":4929,"name":"SourceUnit","src":"0:1826:12"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[5087]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4930,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5088,"symbolAliases":[null],"unitAlias":""},"id":4931,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5087,7136],"name":"AddrResolver","scope":5088},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":4932,"name":"UserDefinedTypeName","src":"81:12:13"}],"id":4933,"name":"InheritanceSpecifier","src":"81:12:13"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":5087,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4934,"name":"ElementaryTypeName","src":"100:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":4935,"name":"Literal","src":"144:10:13"}],"id":4936,"name":"VariableDeclaration","src":"100:54:13"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":5087,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":4937,"name":"ElementaryTypeName","src":"160:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":4938,"name":"Literal","src":"207:10:13"}],"id":4939,"name":"VariableDeclaration","src":"160:57:13"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":5087,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4940,"name":"ElementaryTypeName","src":"223:4:13"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":4941,"name":"Literal","src":"261:2:13"}],"id":4942,"name":"VariableDeclaration","src":"223:40:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4948,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4943,"name":"ElementaryTypeName","src":"288:7:13"}],"id":4944,"name":"VariableDeclaration","src":"288:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":4948,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4945,"name":"ElementaryTypeName","src":"310:7:13"}],"id":4946,"name":"VariableDeclaration","src":"310:9:13"}],"id":4947,"name":"ParameterList","src":"287:33:13"}],"id":4948,"name":"EventDefinition","src":"270:51:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4956,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4949,"name":"ElementaryTypeName","src":"347:7:13"}],"id":4950,"name":"VariableDeclaration","src":"347:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":4956,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4951,"name":"ElementaryTypeName","src":"369:4:13"}],"id":4952,"name":"VariableDeclaration","src":"369:13:13"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":4956,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4953,"name":"ElementaryTypeName","src":"384:5:13"}],"id":4954,"name":"VariableDeclaration","src":"384:16:13"}],"id":4955,"name":"ParameterList","src":"346:55:13"}],"id":4956,"name":"EventDefinition","src":"326:76:13"},{"attributes":{"constant":false,"name":"_addresses","scope":5087,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4957,"name":"ElementaryTypeName","src":"416:7:13"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4958,"name":"ElementaryTypeName","src":"433:4:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":4959,"name":"ElementaryTypeName","src":"439:5:13"}],"id":4960,"name":"Mapping","src":"425:20:13"}],"id":4961,"name":"Mapping","src":"408:38:13"}],"id":4962,"name":"VariableDeclaration","src":"408:49:13"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":5087,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4981,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4963,"name":"ElementaryTypeName","src":"698:7:13"}],"id":4964,"name":"VariableDeclaration","src":"698:12:13"},{"attributes":{"constant":false,"name":"a","scope":4981,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4965,"name":"ElementaryTypeName","src":"712:7:13"}],"id":4966,"name":"VariableDeclaration","src":"712:9:13"}],"id":4967,"name":"ParameterList","src":"697:25:13"},{"attributes":{"parameters":[null]},"children":[],"id":4971,"name":"ParameterList","src":"749:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":4968,"name":"Identifier","src":"732:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4964,"type":"bytes32","value":"node"},"id":4969,"name":"Identifier","src":"743:4:13"}],"id":4970,"name":"ModifierInvocation","src":"732:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5049,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":4972,"name":"Identifier","src":"759:15:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4964,"type":"bytes32","value":"node"},"id":4973,"name":"Identifier","src":"775:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4942,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4974,"name":"Identifier","src":"781:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":7135,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":4975,"name":"Identifier","src":"796:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4966,"type":"address","value":"a"},"id":4976,"name":"Identifier","src":"811:1:13"}],"id":4977,"name":"FunctionCall","src":"796:17:13"}],"id":4978,"name":"FunctionCall","src":"759:55:13"}],"id":4979,"name":"ExpressionStatement","src":"759:55:13"}],"id":4980,"name":"Block","src":"749:72:13"}],"id":4981,"name":"FunctionDefinition","src":"681:140:13"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5087,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5010,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4982,"name":"ElementaryTypeName","src":"994:7:13"}],"id":4983,"name":"VariableDeclaration","src":"994:12:13"}],"id":4984,"name":"ParameterList","src":"993:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5010,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4985,"name":"ElementaryTypeName","src":"1029:15:13"}],"id":4986,"name":"VariableDeclaration","src":"1029:15:13"}],"id":4987,"name":"ParameterList","src":"1028:17:13"},{"children":[{"attributes":{"assignments":[4989]},"children":[{"attributes":{"constant":false,"name":"a","scope":5009,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4988,"name":"ElementaryTypeName","src":"1056:5:13"}],"id":4989,"name":"VariableDeclaration","src":"1056:14:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[5010,5065],"referencedDeclaration":5065,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":4990,"name":"Identifier","src":"1073:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"bytes32","value":"node"},"id":4991,"name":"Identifier","src":"1078:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4942,"type":"uint256","value":"COIN_TYPE_ETH"},"id":4992,"name":"Identifier","src":"1084:13:13"}],"id":4993,"name":"FunctionCall","src":"1073:25:13"}],"id":4994,"name":"VariableDeclarationStatement","src":"1056:42:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4989,"type":"bytes memory","value":"a"},"id":4995,"name":"Identifier","src":"1111:1:13"}],"id":4996,"name":"MemberAccess","src":"1111:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4997,"name":"Literal","src":"1123:1:13"}],"id":4998,"name":"BinaryOperation","src":"1111:13:13"},{"children":[{"attributes":{"functionReturnParameters":4987},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4999,"name":"ElementaryTypeNameExpression","src":"1147:7:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5000,"name":"Literal","src":"1155:1:13"}],"id":5001,"name":"FunctionCall","src":"1147:10:13"}],"id":5002,"name":"Return","src":"1140:17:13"}],"id":5003,"name":"Block","src":"1126:42:13"}],"id":5004,"name":"IfStatement","src":"1108:60:13"},{"attributes":{"functionReturnParameters":4987},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7119,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5005,"name":"Identifier","src":"1184:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4989,"type":"bytes memory","value":"a"},"id":5006,"name":"Identifier","src":"1199:1:13"}],"id":5007,"name":"FunctionCall","src":"1184:17:13"}],"id":5008,"name":"Return","src":"1177:24:13"}],"id":5009,"name":"Block","src":"1046:162:13"}],"id":5010,"name":"FunctionDefinition","src":"980:228:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":5087,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5049,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5011,"name":"ElementaryTypeName","src":"1239:7:13"}],"id":5012,"name":"VariableDeclaration","src":"1239:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5049,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5013,"name":"ElementaryTypeName","src":"1253:4:13"}],"id":5014,"name":"VariableDeclaration","src":"1253:13:13"},{"attributes":{"constant":false,"name":"a","scope":5049,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5015,"name":"ElementaryTypeName","src":"1268:5:13"}],"id":5016,"name":"VariableDeclaration","src":"1268:14:13"}],"id":5017,"name":"ParameterList","src":"1238:45:13"},{"attributes":{"parameters":[null]},"children":[],"id":5021,"name":"ParameterList","src":"1308:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5018,"name":"Identifier","src":"1291:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes32","value":"node"},"id":5019,"name":"Identifier","src":"1302:4:13"}],"id":5020,"name":"ModifierInvocation","src":"1291:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4956,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":5022,"name":"Identifier","src":"1323:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes32","value":"node"},"id":5023,"name":"Identifier","src":"1338:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5014,"type":"uint256","value":"coinType"},"id":5024,"name":"Identifier","src":"1344:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5016,"type":"bytes memory","value":"a"},"id":5025,"name":"Identifier","src":"1354:1:13"}],"id":5026,"name":"FunctionCall","src":"1323:33:13"}],"id":5027,"name":"EmitStatement","src":"1318:38:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5014,"type":"uint256","value":"coinType"},"id":5028,"name":"Identifier","src":"1369:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4942,"type":"uint256","value":"COIN_TYPE_ETH"},"id":5029,"name":"Identifier","src":"1381:13:13"}],"id":5030,"name":"BinaryOperation","src":"1369:25:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4948,"type":"function (bytes32,address)","value":"AddrChanged"},"id":5031,"name":"Identifier","src":"1415:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes32","value":"node"},"id":5032,"name":"Identifier","src":"1427:4:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7119,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":5033,"name":"Identifier","src":"1433:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5016,"type":"bytes memory","value":"a"},"id":5034,"name":"Identifier","src":"1448:1:13"}],"id":5035,"name":"FunctionCall","src":"1433:17:13"}],"id":5036,"name":"FunctionCall","src":"1415:36:13"}],"id":5037,"name":"EmitStatement","src":"1410:41:13"}],"id":5038,"name":"Block","src":"1396:66:13"}],"id":5039,"name":"IfStatement","src":"1366:96:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4962,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5040,"name":"Identifier","src":"1471:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5012,"type":"bytes32","value":"node"},"id":5041,"name":"Identifier","src":"1482:4:13"}],"id":5043,"name":"IndexAccess","src":"1471:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5014,"type":"uint256","value":"coinType"},"id":5042,"name":"Identifier","src":"1488:8:13"}],"id":5044,"name":"IndexAccess","src":"1471:26:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5016,"type":"bytes memory","value":"a"},"id":5045,"name":"Identifier","src":"1500:1:13"}],"id":5046,"name":"Assignment","src":"1471:30:13"}],"id":5047,"name":"ExpressionStatement","src":"1471:30:13"}],"id":5048,"name":"Block","src":"1308:200:13"}],"id":5049,"name":"FunctionDefinition","src":"1214:294:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":5087,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5065,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5050,"name":"ElementaryTypeName","src":"1528:7:13"}],"id":5051,"name":"VariableDeclaration","src":"1528:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":5065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":5052,"name":"ElementaryTypeName","src":"1542:4:13"}],"id":5053,"name":"VariableDeclaration","src":"1542:13:13"}],"id":5054,"name":"ParameterList","src":"1527:29:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5055,"name":"ElementaryTypeName","src":"1577:5:13"}],"id":5056,"name":"VariableDeclaration","src":"1577:12:13"}],"id":5057,"name":"ParameterList","src":"1576:14:13"},{"children":[{"attributes":{"functionReturnParameters":5057},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4962,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":5058,"name":"Identifier","src":"1608:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5051,"type":"bytes32","value":"node"},"id":5059,"name":"Identifier","src":"1619:4:13"}],"id":5060,"name":"IndexAccess","src":"1608:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5053,"type":"uint256","value":"coinType"},"id":5061,"name":"Identifier","src":"1625:8:13"}],"id":5062,"name":"IndexAccess","src":"1608:26:13"}],"id":5063,"name":"Return","src":"1601:33:13"}],"id":5064,"name":"Block","src":"1591:50:13"}],"id":5065,"name":"FunctionDefinition","src":"1514:127:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5087,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5086,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5066,"name":"ElementaryTypeName","src":"1674:6:13"}],"id":5067,"name":"VariableDeclaration","src":"1674:18:13"}],"id":5068,"name":"ParameterList","src":"1673:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":5086,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5069,"name":"ElementaryTypeName","src":"1714:4:13"}],"id":5070,"name":"VariableDeclaration","src":"1714:4:13"}],"id":5071,"name":"ParameterList","src":"1713:6:13"},{"children":[{"attributes":{"functionReturnParameters":5071},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"bytes4","value":"interfaceID"},"id":5072,"name":"Identifier","src":"1737:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4936,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":5073,"name":"Identifier","src":"1752:17:13"}],"id":5074,"name":"BinaryOperation","src":"1737:32:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"bytes4","value":"interfaceID"},"id":5075,"name":"Identifier","src":"1773:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4939,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":5076,"name":"Identifier","src":"1788:20:13"}],"id":5077,"name":"BinaryOperation","src":"1773:35:13"}],"id":5078,"name":"BinaryOperation","src":"1737:71:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10350,"type":"contract super AddrResolver","value":"super"},"id":5079,"name":"Identifier","src":"1812:5:13"}],"id":5080,"name":"MemberAccess","src":"1812:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5067,"type":"bytes4","value":"interfaceID"},"id":5081,"name":"Identifier","src":"1836:11:13"}],"id":5082,"name":"FunctionCall","src":"1812:36:13"}],"id":5083,"name":"BinaryOperation","src":"1737:111:13"}],"id":5084,"name":"Return","src":"1730:118:13"}],"id":5085,"name":"Block","src":"1720:135:13"}],"id":5086,"name":"FunctionDefinition","src":"1647:208:13"}],"id":5087,"name":"ContractDefinition","src":"56:1801:13"}],"id":5088,"name":"SourceUnit","src":"0:1857:13"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[5157]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5089,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5158,"symbolAliases":[null],"unitAlias":""},"id":5090,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5157,7136],"name":"ContentHashResolver","scope":5158},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5091,"name":"UserDefinedTypeName","src":"88:12:14"}],"id":5092,"name":"InheritanceSpecifier","src":"88:12:14"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":5157,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5093,"name":"ElementaryTypeName","src":"107:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":5094,"name":"Literal","src":"159:10:14"}],"id":5095,"name":"VariableDeclaration","src":"107:62:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5101,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5096,"name":"ElementaryTypeName","src":"201:7:14"}],"id":5097,"name":"VariableDeclaration","src":"201:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":5101,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5098,"name":"ElementaryTypeName","src":"223:5:14"}],"id":5099,"name":"VariableDeclaration","src":"223:10:14"}],"id":5100,"name":"ParameterList","src":"200:34:14"}],"id":5101,"name":"EventDefinition","src":"176:59:14"},{"attributes":{"constant":false,"name":"hashes","scope":5157,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5102,"name":"ElementaryTypeName","src":"249:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":5103,"name":"ElementaryTypeName","src":"258:5:14"}],"id":5104,"name":"Mapping","src":"241:23:14"}],"id":5105,"name":"VariableDeclaration","src":"241:30:14"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":5157,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5127,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5106,"name":"ElementaryTypeName","src":"529:7:14"}],"id":5107,"name":"VariableDeclaration","src":"529:12:14"},{"attributes":{"constant":false,"name":"hash","scope":5127,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5108,"name":"ElementaryTypeName","src":"543:5:14"}],"id":5109,"name":"VariableDeclaration","src":"543:19:14"}],"id":5110,"name":"ParameterList","src":"528:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":5114,"name":"ParameterList","src":"590:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5111,"name":"Identifier","src":"573:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5107,"type":"bytes32","value":"node"},"id":5112,"name":"Identifier","src":"584:4:14"}],"id":5113,"name":"ModifierInvocation","src":"573:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5105,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5115,"name":"Identifier","src":"600:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5107,"type":"bytes32","value":"node"},"id":5116,"name":"Identifier","src":"607:4:14"}],"id":5117,"name":"IndexAccess","src":"600:12:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5109,"type":"bytes calldata","value":"hash"},"id":5118,"name":"Identifier","src":"615:4:14"}],"id":5119,"name":"Assignment","src":"600:19:14"}],"id":5120,"name":"ExpressionStatement","src":"600:19:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5101,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":5121,"name":"Identifier","src":"634:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5107,"type":"bytes32","value":"node"},"id":5122,"name":"Identifier","src":"653:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5109,"type":"bytes calldata","value":"hash"},"id":5123,"name":"Identifier","src":"659:4:14"}],"id":5124,"name":"FunctionCall","src":"634:30:14"}],"id":5125,"name":"EmitStatement","src":"629:35:14"}],"id":5126,"name":"Block","src":"590:81:14"}],"id":5127,"name":"FunctionDefinition","src":"505:166:14"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":5157,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5139,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5128,"name":"ElementaryTypeName","src":"859:7:14"}],"id":5129,"name":"VariableDeclaration","src":"859:12:14"}],"id":5130,"name":"ParameterList","src":"858:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5139,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5131,"name":"ElementaryTypeName","src":"896:5:14"}],"id":5132,"name":"VariableDeclaration","src":"896:12:14"}],"id":5133,"name":"ParameterList","src":"895:14:14"},{"children":[{"attributes":{"functionReturnParameters":5133},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5105,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":5134,"name":"Identifier","src":"927:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5129,"type":"bytes32","value":"node"},"id":5135,"name":"Identifier","src":"934:4:14"}],"id":5136,"name":"IndexAccess","src":"927:12:14"}],"id":5137,"name":"Return","src":"920:19:14"}],"id":5138,"name":"Block","src":"910:36:14"}],"id":5139,"name":"FunctionDefinition","src":"838:108:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5157,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5156,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5140,"name":"ElementaryTypeName","src":"979:6:14"}],"id":5141,"name":"VariableDeclaration","src":"979:18:14"}],"id":5142,"name":"ParameterList","src":"978:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":5156,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5143,"name":"ElementaryTypeName","src":"1019:4:14"}],"id":5144,"name":"VariableDeclaration","src":"1019:4:14"}],"id":5145,"name":"ParameterList","src":"1018:6:14"},{"children":[{"attributes":{"functionReturnParameters":5145},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5141,"type":"bytes4","value":"interfaceID"},"id":5146,"name":"Identifier","src":"1042:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5095,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":5147,"name":"Identifier","src":"1057:25:14"}],"id":5148,"name":"BinaryOperation","src":"1042:40:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10352,"type":"contract super ContentHashResolver","value":"super"},"id":5149,"name":"Identifier","src":"1086:5:14"}],"id":5150,"name":"MemberAccess","src":"1086:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5141,"type":"bytes4","value":"interfaceID"},"id":5151,"name":"Identifier","src":"1110:11:14"}],"id":5152,"name":"FunctionCall","src":"1086:36:14"}],"id":5153,"name":"BinaryOperation","src":"1042:80:14"}],"id":5154,"name":"Return","src":"1035:87:14"}],"id":5155,"name":"Block","src":"1025:104:14"}],"id":5156,"name":"FunctionDefinition","src":"952:177:14"}],"id":5157,"name":"ContractDefinition","src":"56:1075:14"}],"id":5158,"name":"SourceUnit","src":"0:1132:14"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[5648]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5159,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5649,"symbolAliases":[null],"unitAlias":""},"id":5160,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":7755,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":5649,"symbolAliases":[null],"unitAlias":""},"id":5161,"name":"ImportDirective","src":"55:24:15"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5648,7136],"name":"DNSResolver","scope":5649},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5162,"name":"UserDefinedTypeName","src":"105:12:15"}],"id":5163,"name":"InheritanceSpecifier","src":"105:12:15"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":7754,"type":"library RRUtils"},"id":5164,"name":"UserDefinedTypeName","src":"130:7:15"}],"id":5165,"name":"UsingForDirective","src":"124:20:15"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10292,"type":"library ENSBytesUtils"},"id":5166,"name":"UserDefinedTypeName","src":"155:13:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5167,"name":"ElementaryTypeName","src":"173:5:15"}],"id":5168,"name":"UsingForDirective","src":"149:30:15"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":5648,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5169,"name":"ElementaryTypeName","src":"185:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":5170,"name":"Literal","src":"235:10:15"}],"id":5171,"name":"VariableDeclaration","src":"185:60:15"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":5648,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5172,"name":"ElementaryTypeName","src":"251:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":5173,"name":"Literal","src":"299:10:15"}],"id":5174,"name":"VariableDeclaration","src":"251:58:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5184,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5175,"name":"ElementaryTypeName","src":"430:7:15"}],"id":5176,"name":"VariableDeclaration","src":"430:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5184,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5177,"name":"ElementaryTypeName","src":"452:5:15"}],"id":5178,"name":"VariableDeclaration","src":"452:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5184,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5179,"name":"ElementaryTypeName","src":"464:6:15"}],"id":5180,"name":"VariableDeclaration","src":"464:15:15"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":5184,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5181,"name":"ElementaryTypeName","src":"481:5:15"}],"id":5182,"name":"VariableDeclaration","src":"481:12:15"}],"id":5183,"name":"ParameterList","src":"429:65:15"}],"id":5184,"name":"EventDefinition","src":"407:88:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5192,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5185,"name":"ElementaryTypeName","src":"614:7:15"}],"id":5186,"name":"VariableDeclaration","src":"614:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5192,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5187,"name":"ElementaryTypeName","src":"636:5:15"}],"id":5188,"name":"VariableDeclaration","src":"636:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":5192,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5189,"name":"ElementaryTypeName","src":"648:6:15"}],"id":5190,"name":"VariableDeclaration","src":"648:15:15"}],"id":5191,"name":"ParameterList","src":"613:51:15"}],"id":5192,"name":"EventDefinition","src":"591:74:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5193,"name":"ElementaryTypeName","src":"777:7:15"}],"id":5194,"name":"VariableDeclaration","src":"777:20:15"}],"id":5195,"name":"ParameterList","src":"776:22:15"}],"id":5196,"name":"EventDefinition","src":"756:43:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5204,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5197,"name":"ElementaryTypeName","src":"913:7:15"}],"id":5198,"name":"VariableDeclaration","src":"913:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":5204,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5199,"name":"ElementaryTypeName","src":"935:5:15"}],"id":5200,"name":"VariableDeclaration","src":"935:18:15"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":5204,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5201,"name":"ElementaryTypeName","src":"955:5:15"}],"id":5202,"name":"VariableDeclaration","src":"955:14:15"}],"id":5203,"name":"ParameterList","src":"912:58:15"}],"id":5204,"name":"EventDefinition","src":"888:83:15"},{"attributes":{"constant":false,"name":"zonehashes","scope":5648,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5205,"name":"ElementaryTypeName","src":"1181:7:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5206,"name":"ElementaryTypeName","src":"1190:5:15"}],"id":5207,"name":"Mapping","src":"1173:23:15"}],"id":5208,"name":"VariableDeclaration","src":"1173:42:15"},{"attributes":{"constant":false,"name":"versions","scope":5648,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5209,"name":"ElementaryTypeName","src":"1433:7:15"},{"attributes":{"name":"uint256","type":"uint256"},"id":5210,"name":"ElementaryTypeName","src":"1442:7:15"}],"id":5211,"name":"Mapping","src":"1425:25:15"}],"id":5212,"name":"VariableDeclaration","src":"1425:42:15"},{"attributes":{"constant":false,"name":"records","scope":5648,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5213,"name":"ElementaryTypeName","src":"1589:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5214,"name":"ElementaryTypeName","src":"1606:7:15"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5215,"name":"ElementaryTypeName","src":"1623:7:15"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5216,"name":"ElementaryTypeName","src":"1640:6:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":5217,"name":"ElementaryTypeName","src":"1648:5:15"}],"id":5218,"name":"Mapping","src":"1632:22:15"}],"id":5219,"name":"Mapping","src":"1615:40:15"}],"id":5220,"name":"Mapping","src":"1598:58:15"}],"id":5221,"name":"Mapping","src":"1581:76:15"}],"id":5222,"name":"VariableDeclaration","src":"1581:92:15"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":5648,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5223,"name":"ElementaryTypeName","src":"1853:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5224,"name":"ElementaryTypeName","src":"1870:7:15"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5225,"name":"ElementaryTypeName","src":"1887:7:15"},{"attributes":{"name":"uint16","type":"uint16"},"id":5226,"name":"ElementaryTypeName","src":"1896:6:15"}],"id":5227,"name":"Mapping","src":"1879:24:15"}],"id":5228,"name":"Mapping","src":"1862:42:15"}],"id":5229,"name":"Mapping","src":"1845:60:15"}],"id":5230,"name":"VariableDeclaration","src":"1845:85:15"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":5648,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5395,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5231,"name":"ElementaryTypeName","src":"2877:7:15"}],"id":5232,"name":"VariableDeclaration","src":"2877:12:15"},{"attributes":{"constant":false,"name":"data","scope":5395,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5233,"name":"ElementaryTypeName","src":"2891:5:15"}],"id":5234,"name":"VariableDeclaration","src":"2891:19:15"}],"id":5235,"name":"ParameterList","src":"2876:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":5239,"name":"ParameterList","src":"2938:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5236,"name":"Identifier","src":"2921:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5232,"type":"bytes32","value":"node"},"id":5237,"name":"Identifier","src":"2932:4:15"}],"id":5238,"name":"ModifierInvocation","src":"2921:16:15"},{"children":[{"attributes":{"assignments":[5241]},"children":[{"attributes":{"constant":false,"name":"resource","scope":5394,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5240,"name":"ElementaryTypeName","src":"2948:6:15"}],"id":5241,"name":"VariableDeclaration","src":"2948:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5242,"name":"Literal","src":"2966:1:15"}],"id":5243,"name":"VariableDeclarationStatement","src":"2948:19:15"},{"attributes":{"assignments":[5245]},"children":[{"attributes":{"constant":false,"name":"offset","scope":5394,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5244,"name":"ElementaryTypeName","src":"2977:7:15"}],"id":5245,"name":"VariableDeclaration","src":"2977:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5246,"name":"Literal","src":"2994:1:15"}],"id":5247,"name":"VariableDeclarationStatement","src":"2977:18:15"},{"attributes":{"assignments":[5249],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":5394,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5248,"name":"ElementaryTypeName","src":"3005:5:15"}],"id":5249,"name":"VariableDeclaration","src":"3005:17:15"}],"id":5250,"name":"VariableDeclarationStatement","src":"3005:17:15"},{"attributes":{"assignments":[5252],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":5394,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5251,"name":"ElementaryTypeName","src":"3032:5:15"}],"id":5252,"name":"VariableDeclaration","src":"3032:18:15"}],"id":5253,"name":"VariableDeclarationStatement","src":"3032:18:15"},{"attributes":{"assignments":[5255],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5394,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5254,"name":"ElementaryTypeName","src":"3060:7:15"}],"id":5255,"name":"VariableDeclaration","src":"3060:16:15"}],"id":5256,"name":"VariableDeclarationStatement","src":"3060:16:15"},{"children":[{"attributes":{"assignments":[5260]},"children":[{"attributes":{"constant":false,"name":"iter","scope":5371,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":7275,"type":"struct RRUtils.RRIterator"},"id":5259,"name":"UserDefinedTypeName","src":"3152:18:15"}],"id":5260,"name":"VariableDeclaration","src":"3152:30:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":7301,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes calldata","value":"data"},"id":5261,"name":"Identifier","src":"3185:4:15"}],"id":5262,"name":"MemberAccess","src":"3185:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5263,"name":"Literal","src":"3201:1:15"}],"id":5264,"name":"FunctionCall","src":"3185:18:15"}],"id":5265,"name":"VariableDeclarationStatement","src":"3152:51:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":7316,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5266,"name":"Identifier","src":"3206:4:15"}],"id":5267,"name":"MemberAccess","src":"3206:9:15"}],"id":5268,"name":"FunctionCall","src":"3206:11:15"}],"id":5269,"name":"UnaryOperation","src":"3205:12:15"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":7418,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5270,"name":"Identifier","src":"3219:4:15"}],"id":5271,"name":"MemberAccess","src":"3219:9:15"}],"id":5272,"name":"FunctionCall","src":"3219:11:15"}],"id":5273,"name":"ExpressionStatement","src":"3219:11:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5274,"name":"Identifier","src":"3250:8:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5275,"name":"Literal","src":"3262:1:15"}],"id":5276,"name":"BinaryOperation","src":"3250:13:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5277,"name":"Identifier","src":"3283:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":7266,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5278,"name":"Identifier","src":"3294:4:15"}],"id":5279,"name":"MemberAccess","src":"3294:12:15"}],"id":5280,"name":"Assignment","src":"3283:23:15"}],"id":5281,"name":"ExpressionStatement","src":"3283:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5282,"name":"Identifier","src":"3324:4:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":7439,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5283,"name":"Identifier","src":"3331:4:15"}],"id":5284,"name":"MemberAccess","src":"3331:9:15"}],"id":5285,"name":"FunctionCall","src":"3331:11:15"}],"id":5286,"name":"Assignment","src":"3324:18:15"}],"id":5287,"name":"ExpressionStatement","src":"3324:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5255,"type":"bytes32","value":"nameHash"},"id":5288,"name":"Identifier","src":"3360:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5289,"name":"Identifier","src":"3371:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":5290,"name":"Identifier","src":"3381:3:15"}],"id":5291,"name":"MemberAccess","src":"3381:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5292,"name":"Identifier","src":"3398:4:15"}],"id":5293,"name":"FunctionCall","src":"3381:22:15"}],"id":5294,"name":"FunctionCall","src":"3371:33:15"}],"id":5295,"name":"Assignment","src":"3360:44:15"}],"id":5296,"name":"ExpressionStatement","src":"3360:44:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory","value":"value"},"id":5297,"name":"Identifier","src":"3422:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5298,"name":"ElementaryTypeNameExpression","src":"3430:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":7459,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5299,"name":"Identifier","src":"3436:4:15"}],"id":5300,"name":"MemberAccess","src":"3436:10:15"}],"id":5301,"name":"FunctionCall","src":"3436:12:15"}],"id":5302,"name":"FunctionCall","src":"3430:19:15"}],"id":5303,"name":"Assignment","src":"3422:27:15"}],"id":5304,"name":"ExpressionStatement","src":"3422:27:15"}],"id":5305,"name":"Block","src":"3265:199:15"},{"children":[{"attributes":{"assignments":[5307]},"children":[{"attributes":{"constant":false,"name":"newName","scope":5368,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5306,"name":"ElementaryTypeName","src":"3488:5:15"}],"id":5307,"name":"VariableDeclaration","src":"3488:20:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":7439,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5308,"name":"Identifier","src":"3511:4:15"}],"id":5309,"name":"MemberAccess","src":"3511:9:15"}],"id":5310,"name":"FunctionCall","src":"3511:11:15"}],"id":5311,"name":"VariableDeclarationStatement","src":"3488:34:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5312,"name":"Identifier","src":"3544:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":7266,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5313,"name":"Identifier","src":"3556:4:15"}],"id":5314,"name":"MemberAccess","src":"3556:12:15"}],"id":5315,"name":"BinaryOperation","src":"3544:24:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":9862,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5316,"name":"Identifier","src":"3573:4:15"}],"id":5317,"name":"MemberAccess","src":"3573:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5307,"type":"bytes memory","value":"newName"},"id":5318,"name":"Identifier","src":"3585:7:15"}],"id":5319,"name":"FunctionCall","src":"3573:20:15"}],"id":5320,"name":"UnaryOperation","src":"3572:21:15"}],"id":5321,"name":"BinaryOperation","src":"3544:49:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5647,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":5322,"name":"Identifier","src":"3617:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5232,"type":"bytes32","value":"node"},"id":5323,"name":"Identifier","src":"3629:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5324,"name":"Identifier","src":"3635:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5325,"name":"Identifier","src":"3641:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes calldata","value":"data"},"id":5326,"name":"Identifier","src":"3651:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5327,"name":"Identifier","src":"3657:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5328,"name":"Identifier","src":"3665:4:15"}],"id":5329,"name":"MemberAccess","src":"3665:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5330,"name":"Identifier","src":"3679:6:15"}],"id":5331,"name":"BinaryOperation","src":"3665:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory","value":"value"},"id":5332,"name":"Identifier","src":"3687:5:15"}],"id":5333,"name":"MemberAccess","src":"3687:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5334,"name":"Literal","src":"3703:1:15"}],"id":5335,"name":"BinaryOperation","src":"3687:17:15"}],"id":5336,"name":"FunctionCall","src":"3617:88:15"}],"id":5337,"name":"ExpressionStatement","src":"3617:88:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5338,"name":"Identifier","src":"3727:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":7266,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5339,"name":"Identifier","src":"3738:4:15"}],"id":5340,"name":"MemberAccess","src":"3738:12:15"}],"id":5341,"name":"Assignment","src":"3727:23:15"}],"id":5342,"name":"ExpressionStatement","src":"3727:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5343,"name":"Identifier","src":"3772:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":7264,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5344,"name":"Identifier","src":"3781:4:15"}],"id":5345,"name":"MemberAccess","src":"3781:11:15"}],"id":5346,"name":"Assignment","src":"3772:20:15"}],"id":5347,"name":"ExpressionStatement","src":"3772:20:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5348,"name":"Identifier","src":"3814:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5307,"type":"bytes memory","value":"newName"},"id":5349,"name":"Identifier","src":"3821:7:15"}],"id":5350,"name":"Assignment","src":"3814:14:15"}],"id":5351,"name":"ExpressionStatement","src":"3814:14:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5255,"type":"bytes32","value":"nameHash"},"id":5352,"name":"Identifier","src":"3850:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5353,"name":"Identifier","src":"3861:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5354,"name":"Identifier","src":"3871:4:15"}],"id":5355,"name":"FunctionCall","src":"3861:15:15"}],"id":5356,"name":"Assignment","src":"3850:26:15"}],"id":5357,"name":"ExpressionStatement","src":"3850:26:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory","value":"value"},"id":5358,"name":"Identifier","src":"3898:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":5359,"name":"ElementaryTypeNameExpression","src":"3906:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":7459,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5260,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":5360,"name":"Identifier","src":"3912:4:15"}],"id":5361,"name":"MemberAccess","src":"3912:10:15"}],"id":5362,"name":"FunctionCall","src":"3912:12:15"}],"id":5363,"name":"FunctionCall","src":"3906:19:15"}],"id":5364,"name":"Assignment","src":"3898:27:15"}],"id":5365,"name":"ExpressionStatement","src":"3898:27:15"}],"id":5366,"name":"Block","src":"3595:349:15"}],"id":5367,"name":"IfStatement","src":"3540:404:15"}],"id":5368,"name":"Block","src":"3470:488:15"}],"id":5369,"name":"IfStatement","src":"3246:712:15"}],"id":5370,"name":"Block","src":"3232:736:15"}],"id":5371,"name":"ForStatement","src":"3147:821:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5372,"name":"Identifier","src":"3981:4:15"}],"id":5373,"name":"MemberAccess","src":"3981:11:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5374,"name":"Literal","src":"3995:1:15"}],"id":5375,"name":"BinaryOperation","src":"3981:15:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5647,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":5376,"name":"Identifier","src":"4012:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5232,"type":"bytes32","value":"node"},"id":5377,"name":"Identifier","src":"4024:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5249,"type":"bytes memory","value":"name"},"id":5378,"name":"Identifier","src":"4030:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5241,"type":"uint16","value":"resource"},"id":5379,"name":"Identifier","src":"4036:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes calldata","value":"data"},"id":5380,"name":"Identifier","src":"4046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5381,"name":"Identifier","src":"4052:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"bytes calldata","value":"data"},"id":5382,"name":"Identifier","src":"4060:4:15"}],"id":5383,"name":"MemberAccess","src":"4060:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5245,"type":"uint256","value":"offset"},"id":5384,"name":"Identifier","src":"4074:6:15"}],"id":5385,"name":"BinaryOperation","src":"4060:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5252,"type":"bytes memory","value":"value"},"id":5386,"name":"Identifier","src":"4082:5:15"}],"id":5387,"name":"MemberAccess","src":"4082:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5388,"name":"Literal","src":"4098:1:15"}],"id":5389,"name":"BinaryOperation","src":"4082:17:15"}],"id":5390,"name":"FunctionCall","src":"4012:88:15"}],"id":5391,"name":"ExpressionStatement","src":"4012:88:15"}],"id":5392,"name":"Block","src":"3998:113:15"}],"id":5393,"name":"IfStatement","src":"3977:134:15"}],"id":5394,"name":"Block","src":"2938:1179:15"}],"id":5395,"name":"FunctionDefinition","src":"2854:1263:15"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":5648,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5419,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5396,"name":"ElementaryTypeName","src":"4538:7:15"}],"id":5397,"name":"VariableDeclaration","src":"4538:12:15"},{"attributes":{"constant":false,"name":"name","scope":5419,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5398,"name":"ElementaryTypeName","src":"4552:7:15"}],"id":5399,"name":"VariableDeclaration","src":"4552:12:15"},{"attributes":{"constant":false,"name":"resource","scope":5419,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5400,"name":"ElementaryTypeName","src":"4566:6:15"}],"id":5401,"name":"VariableDeclaration","src":"4566:15:15"}],"id":5402,"name":"ParameterList","src":"4537:45:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5419,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5403,"name":"ElementaryTypeName","src":"4604:5:15"}],"id":5404,"name":"VariableDeclaration","src":"4604:12:15"}],"id":5405,"name":"ParameterList","src":"4603:14:15"},{"children":[{"attributes":{"functionReturnParameters":5405},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5406,"name":"Identifier","src":"4635:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5397,"type":"bytes32","value":"node"},"id":5407,"name":"Identifier","src":"4643:4:15"}],"id":5408,"name":"IndexAccess","src":"4635:13:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5212,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5409,"name":"Identifier","src":"4649:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5397,"type":"bytes32","value":"node"},"id":5410,"name":"Identifier","src":"4658:4:15"}],"id":5411,"name":"IndexAccess","src":"4649:14:15"}],"id":5412,"name":"IndexAccess","src":"4635:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5399,"type":"bytes32","value":"name"},"id":5413,"name":"Identifier","src":"4665:4:15"}],"id":5414,"name":"IndexAccess","src":"4635:35:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5401,"type":"uint16","value":"resource"},"id":5415,"name":"Identifier","src":"4671:8:15"}],"id":5416,"name":"IndexAccess","src":"4635:45:15"}],"id":5417,"name":"Return","src":"4628:52:15"}],"id":5418,"name":"Block","src":"4618:69:15"}],"id":5419,"name":"FunctionDefinition","src":"4519:168:15"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":5648,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5442,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5420,"name":"ElementaryTypeName","src":"4924:7:15"}],"id":5421,"name":"VariableDeclaration","src":"4924:12:15"},{"attributes":{"constant":false,"name":"name","scope":5442,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5422,"name":"ElementaryTypeName","src":"4938:7:15"}],"id":5423,"name":"VariableDeclaration","src":"4938:12:15"}],"id":5424,"name":"ParameterList","src":"4923:28:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5442,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5425,"name":"ElementaryTypeName","src":"4973:4:15"}],"id":5426,"name":"VariableDeclaration","src":"4973:4:15"}],"id":5427,"name":"ParameterList","src":"4972:6:15"},{"children":[{"attributes":{"functionReturnParameters":5427},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5230,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5428,"name":"Identifier","src":"4997:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5421,"type":"bytes32","value":"node"},"id":5429,"name":"Identifier","src":"5014:4:15"}],"id":5430,"name":"IndexAccess","src":"4997:22:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5212,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5431,"name":"Identifier","src":"5020:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5421,"type":"bytes32","value":"node"},"id":5432,"name":"Identifier","src":"5029:4:15"}],"id":5433,"name":"IndexAccess","src":"5020:14:15"}],"id":5434,"name":"IndexAccess","src":"4997:38:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5423,"type":"bytes32","value":"name"},"id":5435,"name":"Identifier","src":"5036:4:15"}],"id":5436,"name":"IndexAccess","src":"4997:44:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5437,"name":"Literal","src":"5045:1:15"}],"id":5438,"name":"BinaryOperation","src":"4997:49:15"}],"id":5439,"name":"TupleExpression","src":"4996:51:15"}],"id":5440,"name":"Return","src":"4989:58:15"}],"id":5441,"name":"Block","src":"4979:75:15"}],"id":5442,"name":"FunctionDefinition","src":"4901:153:15"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":5648,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5460,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5443,"name":"ElementaryTypeName","src":"5215:7:15"}],"id":5444,"name":"VariableDeclaration","src":"5215:12:15"}],"id":5445,"name":"ParameterList","src":"5214:14:15"},{"attributes":{"parameters":[null]},"children":[],"id":5449,"name":"ParameterList","src":"5253:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5446,"name":"Identifier","src":"5236:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5444,"type":"bytes32","value":"node"},"id":5447,"name":"Identifier","src":"5247:4:15"}],"id":5448,"name":"ModifierInvocation","src":"5236:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5212,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5450,"name":"Identifier","src":"5263:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5444,"type":"bytes32","value":"node"},"id":5451,"name":"Identifier","src":"5272:4:15"}],"id":5452,"name":"IndexAccess","src":"5263:14:15"}],"id":5453,"name":"UnaryOperation","src":"5263:16:15"}],"id":5454,"name":"ExpressionStatement","src":"5263:16:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":5455,"name":"Identifier","src":"5294:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5444,"type":"bytes32","value":"node"},"id":5456,"name":"Identifier","src":"5309:4:15"}],"id":5457,"name":"FunctionCall","src":"5294:20:15"}],"id":5458,"name":"EmitStatement","src":"5289:25:15"}],"id":5459,"name":"Block","src":"5253:68:15"}],"id":5460,"name":"FunctionDefinition","src":"5193:128:15"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":5648,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5489,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5461,"name":"ElementaryTypeName","src":"5562:7:15"}],"id":5462,"name":"VariableDeclaration","src":"5562:12:15"},{"attributes":{"constant":false,"name":"hash","scope":5489,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5463,"name":"ElementaryTypeName","src":"5576:5:15"}],"id":5464,"name":"VariableDeclaration","src":"5576:19:15"}],"id":5465,"name":"ParameterList","src":"5561:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":5469,"name":"ParameterList","src":"5623:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5466,"name":"Identifier","src":"5606:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"node"},"id":5467,"name":"Identifier","src":"5617:4:15"}],"id":5468,"name":"ModifierInvocation","src":"5606:16:15"},{"children":[{"attributes":{"assignments":[5471]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":5488,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5470,"name":"ElementaryTypeName","src":"5633:5:15"}],"id":5471,"name":"VariableDeclaration","src":"5633:20:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5472,"name":"Identifier","src":"5656:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"node"},"id":5473,"name":"Identifier","src":"5667:4:15"}],"id":5474,"name":"IndexAccess","src":"5656:16:15"}],"id":5475,"name":"VariableDeclarationStatement","src":"5633:39:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5476,"name":"Identifier","src":"5682:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"node"},"id":5477,"name":"Identifier","src":"5693:4:15"}],"id":5478,"name":"IndexAccess","src":"5682:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"bytes calldata","value":"hash"},"id":5479,"name":"Identifier","src":"5701:4:15"}],"id":5480,"name":"Assignment","src":"5682:23:15"}],"id":5481,"name":"ExpressionStatement","src":"5682:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5204,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":5482,"name":"Identifier","src":"5720:18:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5462,"type":"bytes32","value":"node"},"id":5483,"name":"Identifier","src":"5739:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5471,"type":"bytes memory","value":"oldhash"},"id":5484,"name":"Identifier","src":"5745:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5464,"type":"bytes calldata","value":"hash"},"id":5485,"name":"Identifier","src":"5754:4:15"}],"id":5486,"name":"FunctionCall","src":"5720:39:15"}],"id":5487,"name":"EmitStatement","src":"5715:44:15"}],"id":5488,"name":"Block","src":"5623:143:15"}],"id":5489,"name":"FunctionDefinition","src":"5541:225:15"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":5648,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5501,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5490,"name":"ElementaryTypeName","src":"5938:7:15"}],"id":5491,"name":"VariableDeclaration","src":"5938:12:15"}],"id":5492,"name":"ParameterList","src":"5937:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5501,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5493,"name":"ElementaryTypeName","src":"5975:5:15"}],"id":5494,"name":"VariableDeclaration","src":"5975:12:15"}],"id":5495,"name":"ParameterList","src":"5974:14:15"},{"children":[{"attributes":{"functionReturnParameters":5495},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":5496,"name":"Identifier","src":"6006:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5491,"type":"bytes32","value":"node"},"id":5497,"name":"Identifier","src":"6017:4:15"}],"id":5498,"name":"IndexAccess","src":"6006:16:15"}],"id":5499,"name":"Return","src":"5999:23:15"}],"id":5500,"name":"Block","src":"5989:40:15"}],"id":5501,"name":"FunctionDefinition","src":"5920:109:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5648,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5522,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5502,"name":"ElementaryTypeName","src":"6062:6:15"}],"id":5503,"name":"VariableDeclaration","src":"6062:18:15"}],"id":5504,"name":"ParameterList","src":"6061:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":5522,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5505,"name":"ElementaryTypeName","src":"6102:4:15"}],"id":5506,"name":"VariableDeclaration","src":"6102:4:15"}],"id":5507,"name":"ParameterList","src":"6101:6:15"},{"children":[{"attributes":{"functionReturnParameters":5507},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5503,"type":"bytes4","value":"interfaceID"},"id":5508,"name":"Identifier","src":"6125:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5171,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":5509,"name":"Identifier","src":"6140:23:15"}],"id":5510,"name":"BinaryOperation","src":"6125:38:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5503,"type":"bytes4","value":"interfaceID"},"id":5511,"name":"Identifier","src":"6182:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5174,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":5512,"name":"Identifier","src":"6197:21:15"}],"id":5513,"name":"BinaryOperation","src":"6182:36:15"}],"id":5514,"name":"BinaryOperation","src":"6125:93:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10356,"type":"contract super DNSResolver","value":"super"},"id":5515,"name":"Identifier","src":"6237:5:15"}],"id":5516,"name":"MemberAccess","src":"6237:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5503,"type":"bytes4","value":"interfaceID"},"id":5517,"name":"Identifier","src":"6261:11:15"}],"id":5518,"name":"FunctionCall","src":"6237:36:15"}],"id":5519,"name":"BinaryOperation","src":"6125:148:15"}],"id":5520,"name":"Return","src":"6118:155:15"}],"id":5521,"name":"Block","src":"6108:172:15"}],"id":5522,"name":"FunctionDefinition","src":"6035:245:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":5648,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5647,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5523,"name":"ElementaryTypeName","src":"6316:7:15"}],"id":5524,"name":"VariableDeclaration","src":"6316:12:15"},{"attributes":{"constant":false,"name":"name","scope":5647,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5525,"name":"ElementaryTypeName","src":"6338:5:15"}],"id":5526,"name":"VariableDeclaration","src":"6338:17:15"},{"attributes":{"constant":false,"name":"resource","scope":5647,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":5527,"name":"ElementaryTypeName","src":"6365:6:15"}],"id":5528,"name":"VariableDeclaration","src":"6365:15:15"},{"attributes":{"constant":false,"name":"data","scope":5647,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5529,"name":"ElementaryTypeName","src":"6390:5:15"}],"id":5530,"name":"VariableDeclaration","src":"6390:17:15"},{"attributes":{"constant":false,"name":"offset","scope":5647,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5531,"name":"ElementaryTypeName","src":"6417:7:15"}],"id":5532,"name":"VariableDeclaration","src":"6417:14:15"},{"attributes":{"constant":false,"name":"size","scope":5647,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5533,"name":"ElementaryTypeName","src":"6441:7:15"}],"id":5534,"name":"VariableDeclaration","src":"6441:12:15"},{"attributes":{"constant":false,"name":"deleteRecord","scope":5647,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5535,"name":"ElementaryTypeName","src":"6463:4:15"}],"id":5536,"name":"VariableDeclaration","src":"6463:17:15"}],"id":5537,"name":"ParameterList","src":"6306:175:15"},{"attributes":{"parameters":[null]},"children":[],"id":5538,"name":"ParameterList","src":"6494:0:15"},{"children":[{"attributes":{"assignments":[5540]},"children":[{"attributes":{"constant":false,"name":"version","scope":5646,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5539,"name":"ElementaryTypeName","src":"6504:7:15"}],"id":5540,"name":"VariableDeclaration","src":"6504:15:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5212,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":5541,"name":"Identifier","src":"6522:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5542,"name":"Identifier","src":"6531:4:15"}],"id":5543,"name":"IndexAccess","src":"6522:14:15"}],"id":5544,"name":"VariableDeclarationStatement","src":"6504:32:15"},{"attributes":{"assignments":[5546]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":5646,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5545,"name":"ElementaryTypeName","src":"6546:7:15"}],"id":5546,"name":"VariableDeclaration","src":"6546:16:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5547,"name":"Identifier","src":"6565:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5526,"type":"bytes memory","value":"name"},"id":5548,"name":"Identifier","src":"6575:4:15"}],"id":5549,"name":"FunctionCall","src":"6565:15:15"}],"id":5550,"name":"VariableDeclarationStatement","src":"6546:34:15"},{"attributes":{"assignments":[5552]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":5646,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5551,"name":"ElementaryTypeName","src":"6590:5:15"}],"id":5552,"name":"VariableDeclaration","src":"6590:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10069,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5530,"type":"bytes memory","value":"data"},"id":5553,"name":"Identifier","src":"6612:4:15"}],"id":5554,"name":"MemberAccess","src":"6612:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5532,"type":"uint256","value":"offset"},"id":5555,"name":"Identifier","src":"6627:6:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5534,"type":"uint256","value":"size"},"id":5556,"name":"Identifier","src":"6635:4:15"}],"id":5557,"name":"FunctionCall","src":"6612:28:15"}],"id":5558,"name":"VariableDeclarationStatement","src":"6590:50:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5536,"type":"bool","value":"deleteRecord"},"id":5559,"name":"Identifier","src":"6654:12:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5560,"name":"Identifier","src":"6686:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5561,"name":"Identifier","src":"6694:4:15"}],"id":5562,"name":"IndexAccess","src":"6686:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5563,"name":"Identifier","src":"6700:7:15"}],"id":5564,"name":"IndexAccess","src":"6686:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5565,"name":"Identifier","src":"6709:8:15"}],"id":5566,"name":"IndexAccess","src":"6686:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5567,"name":"Identifier","src":"6719:8:15"}],"id":5568,"name":"IndexAccess","src":"6686:42:15"}],"id":5569,"name":"MemberAccess","src":"6686:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5570,"name":"Literal","src":"6739:1:15"}],"id":5571,"name":"BinaryOperation","src":"6686:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5230,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5572,"name":"Identifier","src":"6760:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5573,"name":"Identifier","src":"6777:4:15"}],"id":5576,"name":"IndexAccess","src":"6760:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5574,"name":"Identifier","src":"6783:7:15"}],"id":5577,"name":"IndexAccess","src":"6760:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5575,"name":"Identifier","src":"6792:8:15"}],"id":5578,"name":"IndexAccess","src":"6760:41:15"}],"id":5579,"name":"UnaryOperation","src":"6760:43:15"}],"id":5580,"name":"ExpressionStatement","src":"6760:43:15"}],"id":5581,"name":"Block","src":"6742:76:15"}],"id":5582,"name":"IfStatement","src":"6682:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5583,"name":"Identifier","src":"6838:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5584,"name":"Identifier","src":"6846:4:15"}],"id":5585,"name":"IndexAccess","src":"6838:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5586,"name":"Identifier","src":"6852:7:15"}],"id":5587,"name":"IndexAccess","src":"6838:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5588,"name":"Identifier","src":"6861:8:15"}],"id":5589,"name":"IndexAccess","src":"6838:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5590,"name":"Identifier","src":"6871:8:15"}],"id":5591,"name":"IndexAccess","src":"6838:42:15"}],"id":5592,"name":"TupleExpression","src":"6837:44:15"}],"id":5593,"name":"UnaryOperation","src":"6831:50:15"}],"id":5594,"name":"ExpressionStatement","src":"6831:50:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":5192,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":5595,"name":"Identifier","src":"6900:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5596,"name":"Identifier","src":"6917:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5526,"type":"bytes memory","value":"name"},"id":5597,"name":"Identifier","src":"6923:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5598,"name":"Identifier","src":"6929:8:15"}],"id":5599,"name":"FunctionCall","src":"6900:38:15"}],"id":5600,"name":"EmitStatement","src":"6895:43:15"}],"id":5601,"name":"Block","src":"6668:281:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5602,"name":"Identifier","src":"6973:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5603,"name":"Identifier","src":"6981:4:15"}],"id":5604,"name":"IndexAccess","src":"6973:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5605,"name":"Identifier","src":"6987:7:15"}],"id":5606,"name":"IndexAccess","src":"6973:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5607,"name":"Identifier","src":"6996:8:15"}],"id":5608,"name":"IndexAccess","src":"6973:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5609,"name":"Identifier","src":"7006:8:15"}],"id":5610,"name":"IndexAccess","src":"6973:42:15"}],"id":5611,"name":"MemberAccess","src":"6973:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5612,"name":"Literal","src":"7026:1:15"}],"id":5613,"name":"BinaryOperation","src":"6973:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5230,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":5614,"name":"Identifier","src":"7047:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5615,"name":"Identifier","src":"7064:4:15"}],"id":5618,"name":"IndexAccess","src":"7047:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5616,"name":"Identifier","src":"7070:7:15"}],"id":5619,"name":"IndexAccess","src":"7047:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5617,"name":"Identifier","src":"7079:8:15"}],"id":5620,"name":"IndexAccess","src":"7047:41:15"}],"id":5621,"name":"UnaryOperation","src":"7047:43:15"}],"id":5622,"name":"ExpressionStatement","src":"7047:43:15"}],"id":5623,"name":"Block","src":"7029:76:15"}],"id":5624,"name":"IfStatement","src":"6969:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5222,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":5625,"name":"Identifier","src":"7118:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5626,"name":"Identifier","src":"7126:4:15"}],"id":5630,"name":"IndexAccess","src":"7118:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5540,"type":"uint256","value":"version"},"id":5627,"name":"Identifier","src":"7132:7:15"}],"id":5631,"name":"IndexAccess","src":"7118:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5546,"type":"bytes32","value":"nameHash"},"id":5628,"name":"Identifier","src":"7141:8:15"}],"id":5632,"name":"IndexAccess","src":"7118:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5629,"name":"Identifier","src":"7151:8:15"}],"id":5633,"name":"IndexAccess","src":"7118:42:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5552,"type":"bytes memory","value":"rrData"},"id":5634,"name":"Identifier","src":"7163:6:15"}],"id":5635,"name":"Assignment","src":"7118:51:15"}],"id":5636,"name":"ExpressionStatement","src":"7118:51:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":5184,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":5637,"name":"Identifier","src":"7188:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5524,"type":"bytes32","value":"node"},"id":5638,"name":"Identifier","src":"7205:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5526,"type":"bytes memory","value":"name"},"id":5639,"name":"Identifier","src":"7211:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5528,"type":"uint16","value":"resource"},"id":5640,"name":"Identifier","src":"7217:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5552,"type":"bytes memory","value":"rrData"},"id":5641,"name":"Identifier","src":"7227:6:15"}],"id":5642,"name":"FunctionCall","src":"7188:46:15"}],"id":5643,"name":"EmitStatement","src":"7183:51:15"}],"id":5644,"name":"Block","src":"6955:290:15"}],"id":5645,"name":"IfStatement","src":"6650:595:15"}],"id":5646,"name":"Block","src":"6494:757:15"}],"id":5647,"name":"FunctionDefinition","src":"6286:965:15"}],"id":5648,"name":"ContractDefinition","src":"81:7172:15"}],"id":5649,"name":"SourceUnit","src":"0:7253:15"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[5835]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5650,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5836,"symbolAliases":[null],"unitAlias":""},"id":5651,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"SourceUnit":5088,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":5836,"symbolAliases":[null],"unitAlias":""},"id":5652,"name":"ImportDirective","src":"55:28:16"},{"attributes":{"contractDependencies":[5087,7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5835,5087,7136],"name":"InterfaceResolver","scope":5836},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5653,"name":"UserDefinedTypeName","src":"115:12:16"}],"id":5654,"name":"InheritanceSpecifier","src":"115:12:16"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":5087,"type":"contract AddrResolver"},"id":5655,"name":"UserDefinedTypeName","src":"129:12:16"}],"id":5656,"name":"InheritanceSpecifier","src":"129:12:16"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":5835,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5657,"name":"ElementaryTypeName","src":"148:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":5658,"name":"ElementaryTypeNameExpression","src":"197:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":5659,"name":"Identifier","src":"204:9:16"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":5660,"name":"Literal","src":"214:38:16"}],"id":5661,"name":"FunctionCall","src":"204:49:16"}],"id":5662,"name":"FunctionCall","src":"197:57:16"}],"id":5663,"name":"VariableDeclaration","src":"148:106:16"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":5835,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5664,"name":"ElementaryTypeName","src":"260:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":5665,"name":"Literal","src":"304:10:16"}],"id":5666,"name":"VariableDeclaration","src":"260:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5674,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5667,"name":"ElementaryTypeName","src":"344:7:16"}],"id":5668,"name":"VariableDeclaration","src":"344:20:16"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":5674,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5669,"name":"ElementaryTypeName","src":"366:6:16"}],"id":5670,"name":"VariableDeclaration","src":"366:26:16"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":5674,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5671,"name":"ElementaryTypeName","src":"394:7:16"}],"id":5672,"name":"VariableDeclaration","src":"394:19:16"}],"id":5673,"name":"ParameterList","src":"343:71:16"}],"id":5674,"name":"EventDefinition","src":"321:94:16"},{"attributes":{"constant":false,"name":"interfaces","scope":5835,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5675,"name":"ElementaryTypeName","src":"429:7:16"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5676,"name":"ElementaryTypeName","src":"446:6:16"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5677,"name":"ElementaryTypeName","src":"454:7:16"}],"id":5678,"name":"Mapping","src":"438:24:16"}],"id":5679,"name":"Mapping","src":"421:42:16"}],"id":5680,"name":"VariableDeclaration","src":"421:53:16"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":5835,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5707,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5681,"name":"ElementaryTypeName","src":"880:7:16"}],"id":5682,"name":"VariableDeclaration","src":"880:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":5707,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5683,"name":"ElementaryTypeName","src":"894:6:16"}],"id":5684,"name":"VariableDeclaration","src":"894:18:16"},{"attributes":{"constant":false,"name":"implementer","scope":5707,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5685,"name":"ElementaryTypeName","src":"914:7:16"}],"id":5686,"name":"VariableDeclaration","src":"914:19:16"}],"id":5687,"name":"ParameterList","src":"879:55:16"},{"attributes":{"parameters":[null]},"children":[],"id":5691,"name":"ParameterList","src":"961:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5688,"name":"Identifier","src":"944:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5682,"type":"bytes32","value":"node"},"id":5689,"name":"Identifier","src":"955:4:16"}],"id":5690,"name":"ModifierInvocation","src":"944:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5680,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5692,"name":"Identifier","src":"971:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5682,"type":"bytes32","value":"node"},"id":5693,"name":"Identifier","src":"982:4:16"}],"id":5695,"name":"IndexAccess","src":"971:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5684,"type":"bytes4","value":"interfaceID"},"id":5694,"name":"Identifier","src":"988:11:16"}],"id":5696,"name":"IndexAccess","src":"971:29:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5686,"type":"address","value":"implementer"},"id":5697,"name":"Identifier","src":"1003:11:16"}],"id":5698,"name":"Assignment","src":"971:43:16"}],"id":5699,"name":"ExpressionStatement","src":"971:43:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5674,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":5700,"name":"Identifier","src":"1029:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5682,"type":"bytes32","value":"node"},"id":5701,"name":"Identifier","src":"1046:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5684,"type":"bytes4","value":"interfaceID"},"id":5702,"name":"Identifier","src":"1052:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5686,"type":"address","value":"implementer"},"id":5703,"name":"Identifier","src":"1065:11:16"}],"id":5704,"name":"FunctionCall","src":"1029:48:16"}],"id":5705,"name":"EmitStatement","src":"1024:53:16"}],"id":5706,"name":"Block","src":"961:123:16"}],"id":5707,"name":"FunctionDefinition","src":"858:226:16"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":5835,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5817,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5708,"name":"ElementaryTypeName","src":"1751:7:16"}],"id":5709,"name":"VariableDeclaration","src":"1751:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":5817,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5710,"name":"ElementaryTypeName","src":"1765:6:16"}],"id":5711,"name":"VariableDeclaration","src":"1765:18:16"}],"id":5712,"name":"ParameterList","src":"1750:34:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":5817,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5713,"name":"ElementaryTypeName","src":"1808:7:16"}],"id":5714,"name":"VariableDeclaration","src":"1808:7:16"}],"id":5715,"name":"ParameterList","src":"1807:9:16"},{"children":[{"attributes":{"assignments":[5717]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":5816,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5716,"name":"ElementaryTypeName","src":"1827:7:16"}],"id":5717,"name":"VariableDeclaration","src":"1827:19:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5680,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":5718,"name":"Identifier","src":"1849:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5709,"type":"bytes32","value":"node"},"id":5719,"name":"Identifier","src":"1860:4:16"}],"id":5720,"name":"IndexAccess","src":"1849:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5711,"type":"bytes4","value":"interfaceID"},"id":5721,"name":"Identifier","src":"1866:11:16"}],"id":5722,"name":"IndexAccess","src":"1849:29:16"}],"id":5723,"name":"VariableDeclarationStatement","src":"1827:51:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5717,"type":"address","value":"implementer"},"id":5724,"name":"Identifier","src":"1891:11:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5725,"name":"ElementaryTypeNameExpression","src":"1906:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5726,"name":"Literal","src":"1914:1:16"}],"id":5727,"name":"FunctionCall","src":"1906:10:16"}],"id":5728,"name":"BinaryOperation","src":"1891:25:16"},{"children":[{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5717,"type":"address","value":"implementer"},"id":5729,"name":"Identifier","src":"1939:11:16"}],"id":5730,"name":"Return","src":"1932:18:16"}],"id":5731,"name":"Block","src":"1918:43:16"}],"id":5732,"name":"IfStatement","src":"1888:73:16"},{"attributes":{"assignments":[5734]},"children":[{"attributes":{"constant":false,"name":"a","scope":5816,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5733,"name":"ElementaryTypeName","src":"1971:7:16"}],"id":5734,"name":"VariableDeclaration","src":"1971:9:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[5010,5065],"referencedDeclaration":5010,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":5735,"name":"Identifier","src":"1983:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5709,"type":"bytes32","value":"node"},"id":5736,"name":"Identifier","src":"1988:4:16"}],"id":5737,"name":"FunctionCall","src":"1983:10:16"}],"id":5738,"name":"VariableDeclarationStatement","src":"1971:22:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"address","value":"a"},"id":5739,"name":"Identifier","src":"2006:1:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5740,"name":"ElementaryTypeNameExpression","src":"2011:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5741,"name":"Literal","src":"2019:1:16"}],"id":5742,"name":"FunctionCall","src":"2011:10:16"}],"id":5743,"name":"BinaryOperation","src":"2006:15:16"},{"children":[{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5744,"name":"ElementaryTypeNameExpression","src":"2044:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5745,"name":"Literal","src":"2052:1:16"}],"id":5746,"name":"FunctionCall","src":"2044:10:16"}],"id":5747,"name":"Return","src":"2037:17:16"}],"id":5748,"name":"Block","src":"2023:42:16"}],"id":5749,"name":"IfStatement","src":"2003:62:16"},{"attributes":{"assignments":[5751,5753]},"children":[{"attributes":{"constant":false,"name":"success","scope":5816,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5750,"name":"ElementaryTypeName","src":"2076:4:16"}],"id":5751,"name":"VariableDeclaration","src":"2076:12:16"},{"attributes":{"constant":false,"name":"returnData","scope":5816,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5752,"name":"ElementaryTypeName","src":"2090:5:16"}],"id":5753,"name":"VariableDeclaration","src":"2090:23:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"address","value":"a"},"id":5754,"name":"Identifier","src":"2117:1:16"}],"id":5755,"name":"MemberAccess","src":"2117:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":5756,"name":"Identifier","src":"2130:3:16"}],"id":5757,"name":"MemberAccess","src":"2130:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5758,"name":"Literal","src":"2154:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5666,"type":"bytes4","value":"INTERFACE_META_ID"},"id":5759,"name":"Identifier","src":"2183:17:16"}],"id":5760,"name":"FunctionCall","src":"2130:71:16"}],"id":5761,"name":"FunctionCall","src":"2117:85:16"}],"id":5762,"name":"VariableDeclarationStatement","src":"2075:127:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5751,"type":"bool","value":"success"},"id":5763,"name":"Identifier","src":"2216:7:16"}],"id":5764,"name":"UnaryOperation","src":"2215:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5765,"name":"Identifier","src":"2227:10:16"}],"id":5766,"name":"MemberAccess","src":"2227:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5767,"name":"Literal","src":"2247:2:16"}],"id":5768,"name":"BinaryOperation","src":"2227:22:16"}],"id":5769,"name":"BinaryOperation","src":"2215:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5770,"name":"Identifier","src":"2253:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5771,"name":"Literal","src":"2264:2:16"}],"id":5772,"name":"IndexAccess","src":"2253:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5773,"name":"Literal","src":"2271:1:16"}],"id":5774,"name":"BinaryOperation","src":"2253:19:16"}],"id":5775,"name":"BinaryOperation","src":"2215:57:16"},{"children":[{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5776,"name":"ElementaryTypeNameExpression","src":"2342:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5777,"name":"Literal","src":"2350:1:16"}],"id":5778,"name":"FunctionCall","src":"2342:10:16"}],"id":5779,"name":"Return","src":"2335:17:16"}],"id":5780,"name":"Block","src":"2274:89:16"}],"id":5781,"name":"IfStatement","src":"2212:151:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5751,"type":"bool","value":"success"},"id":5782,"name":"Identifier","src":"2374:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5783,"name":"Identifier","src":"2383:10:16"}],"id":5784,"name":"TupleExpression","src":"2373:21:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"address","value":"a"},"id":5785,"name":"Identifier","src":"2397:1:16"}],"id":5786,"name":"MemberAccess","src":"2397:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":5787,"name":"Identifier","src":"2410:3:16"}],"id":5788,"name":"MemberAccess","src":"2410:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":5789,"name":"Literal","src":"2434:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5711,"type":"bytes4","value":"interfaceID"},"id":5790,"name":"Identifier","src":"2463:11:16"}],"id":5791,"name":"FunctionCall","src":"2410:65:16"}],"id":5792,"name":"FunctionCall","src":"2397:79:16"}],"id":5793,"name":"Assignment","src":"2373:103:16"}],"id":5794,"name":"ExpressionStatement","src":"2373:103:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5751,"type":"bool","value":"success"},"id":5795,"name":"Identifier","src":"2490:7:16"}],"id":5796,"name":"UnaryOperation","src":"2489:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5797,"name":"Identifier","src":"2501:10:16"}],"id":5798,"name":"MemberAccess","src":"2501:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5799,"name":"Literal","src":"2521:2:16"}],"id":5800,"name":"BinaryOperation","src":"2501:22:16"}],"id":5801,"name":"BinaryOperation","src":"2489:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5753,"type":"bytes memory","value":"returnData"},"id":5802,"name":"Identifier","src":"2527:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":5803,"name":"Literal","src":"2538:2:16"}],"id":5804,"name":"IndexAccess","src":"2527:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5805,"name":"Literal","src":"2545:1:16"}],"id":5806,"name":"BinaryOperation","src":"2527:19:16"}],"id":5807,"name":"BinaryOperation","src":"2489:57:16"},{"children":[{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":5808,"name":"ElementaryTypeNameExpression","src":"2628:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5809,"name":"Literal","src":"2636:1:16"}],"id":5810,"name":"FunctionCall","src":"2628:10:16"}],"id":5811,"name":"Return","src":"2621:17:16"}],"id":5812,"name":"Block","src":"2548:101:16"}],"id":5813,"name":"IfStatement","src":"2486:163:16"},{"attributes":{"functionReturnParameters":5715},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5734,"type":"address","value":"a"},"id":5814,"name":"Identifier","src":"2666:1:16"}],"id":5815,"name":"Return","src":"2659:8:16"}],"id":5816,"name":"Block","src":"1817:857:16"}],"id":5817,"name":"FunctionDefinition","src":"1721:953:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5835,"stateMutability":"pure","superFunction":5086,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5834,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5818,"name":"ElementaryTypeName","src":"2707:6:16"}],"id":5819,"name":"VariableDeclaration","src":"2707:18:16"}],"id":5820,"name":"ParameterList","src":"2706:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":5834,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5821,"name":"ElementaryTypeName","src":"2747:4:16"}],"id":5822,"name":"VariableDeclaration","src":"2747:4:16"}],"id":5823,"name":"ParameterList","src":"2746:6:16"},{"children":[{"attributes":{"functionReturnParameters":5823},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5819,"type":"bytes4","value":"interfaceID"},"id":5824,"name":"Identifier","src":"2770:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5663,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":5825,"name":"Identifier","src":"2785:22:16"}],"id":5826,"name":"BinaryOperation","src":"2770:37:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":5086,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10358,"type":"contract super InterfaceResolver","value":"super"},"id":5827,"name":"Identifier","src":"2811:5:16"}],"id":5828,"name":"MemberAccess","src":"2811:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5819,"type":"bytes4","value":"interfaceID"},"id":5829,"name":"Identifier","src":"2835:11:16"}],"id":5830,"name":"FunctionCall","src":"2811:36:16"}],"id":5831,"name":"BinaryOperation","src":"2770:77:16"}],"id":5832,"name":"Return","src":"2763:84:16"}],"id":5833,"name":"Block","src":"2753:101:16"}],"id":5834,"name":"FunctionDefinition","src":"2680:174:16"}],"id":5835,"name":"ContractDefinition","src":"85:2771:16"}],"id":5836,"name":"SourceUnit","src":"0:2857:16"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[5905]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5837,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5906,"symbolAliases":[null],"unitAlias":""},"id":5838,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5905,7136],"name":"NameResolver","scope":5906},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5839,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":5840,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":5905,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5841,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":5842,"name":"Literal","src":"144:10:17"}],"id":5843,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5849,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5844,"name":"ElementaryTypeName","src":"179:7:17"}],"id":5845,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":5849,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5846,"name":"ElementaryTypeName","src":"201:6:17"}],"id":5847,"name":"VariableDeclaration","src":"201:11:17"}],"id":5848,"name":"ParameterList","src":"178:35:17"}],"id":5849,"name":"EventDefinition","src":"161:53:17"},{"attributes":{"constant":false,"name":"names","scope":5905,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5850,"name":"ElementaryTypeName","src":"228:7:17"},{"attributes":{"name":"string","type":"string"},"id":5851,"name":"ElementaryTypeName","src":"237:6:17"}],"id":5852,"name":"Mapping","src":"220:24:17"}],"id":5853,"name":"VariableDeclaration","src":"220:30:17"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":5905,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5875,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5854,"name":"ElementaryTypeName","src":"509:7:17"}],"id":5855,"name":"VariableDeclaration","src":"509:12:17"},{"attributes":{"constant":false,"name":"name","scope":5875,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5856,"name":"ElementaryTypeName","src":"523:6:17"}],"id":5857,"name":"VariableDeclaration","src":"523:20:17"}],"id":5858,"name":"ParameterList","src":"508:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":5862,"name":"ParameterList","src":"571:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5859,"name":"Identifier","src":"554:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5855,"type":"bytes32","value":"node"},"id":5860,"name":"Identifier","src":"565:4:17"}],"id":5861,"name":"ModifierInvocation","src":"554:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5853,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5863,"name":"Identifier","src":"581:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5855,"type":"bytes32","value":"node"},"id":5864,"name":"Identifier","src":"587:4:17"}],"id":5865,"name":"IndexAccess","src":"581:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"string calldata","value":"name"},"id":5866,"name":"Identifier","src":"595:4:17"}],"id":5867,"name":"Assignment","src":"581:18:17"}],"id":5868,"name":"ExpressionStatement","src":"581:18:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":5849,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":5869,"name":"Identifier","src":"614:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5855,"type":"bytes32","value":"node"},"id":5870,"name":"Identifier","src":"626:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5857,"type":"string calldata","value":"name"},"id":5871,"name":"Identifier","src":"632:4:17"}],"id":5872,"name":"FunctionCall","src":"614:23:17"}],"id":5873,"name":"EmitStatement","src":"609:28:17"}],"id":5874,"name":"Block","src":"571:73:17"}],"id":5875,"name":"FunctionDefinition","src":"492:152:17"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":5905,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5887,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5876,"name":"ElementaryTypeName","src":"858:7:17"}],"id":5877,"name":"VariableDeclaration","src":"858:12:17"}],"id":5878,"name":"ParameterList","src":"857:14:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":5887,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5879,"name":"ElementaryTypeName","src":"895:6:17"}],"id":5880,"name":"VariableDeclaration","src":"895:13:17"}],"id":5881,"name":"ParameterList","src":"894:15:17"},{"children":[{"attributes":{"functionReturnParameters":5881},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5853,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":5882,"name":"Identifier","src":"927:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5877,"type":"bytes32","value":"node"},"id":5883,"name":"Identifier","src":"933:4:17"}],"id":5884,"name":"IndexAccess","src":"927:11:17"}],"id":5885,"name":"Return","src":"920:18:17"}],"id":5886,"name":"Block","src":"910:35:17"}],"id":5887,"name":"FunctionDefinition","src":"844:101:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5905,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5904,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5888,"name":"ElementaryTypeName","src":"978:6:17"}],"id":5889,"name":"VariableDeclaration","src":"978:18:17"}],"id":5890,"name":"ParameterList","src":"977:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":5904,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5891,"name":"ElementaryTypeName","src":"1018:4:17"}],"id":5892,"name":"VariableDeclaration","src":"1018:4:17"}],"id":5893,"name":"ParameterList","src":"1017:6:17"},{"children":[{"attributes":{"functionReturnParameters":5893},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"bytes4","value":"interfaceID"},"id":5894,"name":"Identifier","src":"1041:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5843,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":5895,"name":"Identifier","src":"1056:17:17"}],"id":5896,"name":"BinaryOperation","src":"1041:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10360,"type":"contract super NameResolver","value":"super"},"id":5897,"name":"Identifier","src":"1077:5:17"}],"id":5898,"name":"MemberAccess","src":"1077:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5889,"type":"bytes4","value":"interfaceID"},"id":5899,"name":"Identifier","src":"1101:11:17"}],"id":5900,"name":"FunctionCall","src":"1077:36:17"}],"id":5901,"name":"BinaryOperation","src":"1041:72:17"}],"id":5902,"name":"Return","src":"1034:79:17"}],"id":5903,"name":"Block","src":"1024:96:17"}],"id":5904,"name":"FunctionDefinition","src":"951:169:17"}],"id":5905,"name":"ContractDefinition","src":"56:1066:17"}],"id":5906,"name":"SourceUnit","src":"0:1123:17"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[5996]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5907,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":5997,"symbolAliases":[null],"unitAlias":""},"id":5908,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[5996,7136],"name":"PubkeyResolver","scope":5997},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":5909,"name":"UserDefinedTypeName","src":"83:12:18"}],"id":5910,"name":"InheritanceSpecifier","src":"83:12:18"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":5996,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5911,"name":"ElementaryTypeName","src":"102:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":5912,"name":"Literal","src":"148:10:18"}],"id":5913,"name":"VariableDeclaration","src":"102:56:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":5921,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5914,"name":"ElementaryTypeName","src":"185:7:18"}],"id":5915,"name":"VariableDeclaration","src":"185:20:18"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":5921,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5916,"name":"ElementaryTypeName","src":"207:7:18"}],"id":5917,"name":"VariableDeclaration","src":"207:9:18"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":5921,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5918,"name":"ElementaryTypeName","src":"218:7:18"}],"id":5919,"name":"VariableDeclaration","src":"218:9:18"}],"id":5920,"name":"ParameterList","src":"184:44:18"}],"id":5921,"name":"EventDefinition","src":"165:64:18"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":5996,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":5926,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5922,"name":"ElementaryTypeName","src":"262:7:18"}],"id":5923,"name":"VariableDeclaration","src":"262:9:18"},{"attributes":{"constant":false,"name":"y","scope":5926,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5924,"name":"ElementaryTypeName","src":"281:7:18"}],"id":5925,"name":"VariableDeclaration","src":"281:9:18"}],"id":5926,"name":"StructDefinition","src":"235:62:18"},{"attributes":{"constant":false,"name":"pubkeys","scope":5996,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5927,"name":"ElementaryTypeName","src":"311:7:18"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":5926,"type":"struct PubkeyResolver.PublicKey"},"id":5928,"name":"UserDefinedTypeName","src":"320:9:18"}],"id":5929,"name":"Mapping","src":"303:27:18"}],"id":5930,"name":"VariableDeclaration","src":"303:35:18"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":5996,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5931,"name":"ElementaryTypeName","src":"631:7:18"}],"id":5932,"name":"VariableDeclaration","src":"631:12:18"},{"attributes":{"constant":false,"name":"x","scope":5958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5933,"name":"ElementaryTypeName","src":"645:7:18"}],"id":5934,"name":"VariableDeclaration","src":"645:9:18"},{"attributes":{"constant":false,"name":"y","scope":5958,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5935,"name":"ElementaryTypeName","src":"656:7:18"}],"id":5936,"name":"VariableDeclaration","src":"656:9:18"}],"id":5937,"name":"ParameterList","src":"630:36:18"},{"attributes":{"parameters":[null]},"children":[],"id":5941,"name":"ParameterList","src":"693:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":5938,"name":"Identifier","src":"676:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5932,"type":"bytes32","value":"node"},"id":5939,"name":"Identifier","src":"687:4:18"}],"id":5940,"name":"ModifierInvocation","src":"676:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5930,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5942,"name":"Identifier","src":"703:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5932,"type":"bytes32","value":"node"},"id":5943,"name":"Identifier","src":"711:4:18"}],"id":5944,"name":"IndexAccess","src":"703:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5926,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":5945,"name":"Identifier","src":"719:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5934,"type":"bytes32","value":"x"},"id":5946,"name":"Identifier","src":"729:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5936,"type":"bytes32","value":"y"},"id":5947,"name":"Identifier","src":"732:1:18"}],"id":5948,"name":"FunctionCall","src":"719:15:18"}],"id":5949,"name":"Assignment","src":"703:31:18"}],"id":5950,"name":"ExpressionStatement","src":"703:31:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":5921,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":5951,"name":"Identifier","src":"749:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5932,"type":"bytes32","value":"node"},"id":5952,"name":"Identifier","src":"763:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5934,"type":"bytes32","value":"x"},"id":5953,"name":"Identifier","src":"769:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5936,"type":"bytes32","value":"y"},"id":5954,"name":"Identifier","src":"772:1:18"}],"id":5955,"name":"FunctionCall","src":"749:25:18"}],"id":5956,"name":"EmitStatement","src":"744:30:18"}],"id":5957,"name":"Block","src":"693:88:18"}],"id":5958,"name":"FunctionDefinition","src":"612:169:18"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":5996,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":5978,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5959,"name":"ElementaryTypeName","src":"1039:7:18"}],"id":5960,"name":"VariableDeclaration","src":"1039:12:18"}],"id":5961,"name":"ParameterList","src":"1038:14:18"},{"children":[{"attributes":{"constant":false,"name":"x","scope":5978,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5962,"name":"ElementaryTypeName","src":"1076:7:18"}],"id":5963,"name":"VariableDeclaration","src":"1076:9:18"},{"attributes":{"constant":false,"name":"y","scope":5978,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5964,"name":"ElementaryTypeName","src":"1087:7:18"}],"id":5965,"name":"VariableDeclaration","src":"1087:9:18"}],"id":5966,"name":"ParameterList","src":"1075:22:18"},{"children":[{"attributes":{"functionReturnParameters":5966},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":5923,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5930,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5967,"name":"Identifier","src":"1116:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5960,"type":"bytes32","value":"node"},"id":5968,"name":"Identifier","src":"1124:4:18"}],"id":5969,"name":"IndexAccess","src":"1116:13:18"}],"id":5970,"name":"MemberAccess","src":"1116:15:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":5925,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5930,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":5971,"name":"Identifier","src":"1133:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5960,"type":"bytes32","value":"node"},"id":5972,"name":"Identifier","src":"1141:4:18"}],"id":5973,"name":"IndexAccess","src":"1133:13:18"}],"id":5974,"name":"MemberAccess","src":"1133:15:18"}],"id":5975,"name":"TupleExpression","src":"1115:34:18"}],"id":5976,"name":"Return","src":"1108:41:18"}],"id":5977,"name":"Block","src":"1098:58:18"}],"id":5978,"name":"FunctionDefinition","src":"1023:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":5996,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":5995,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5979,"name":"ElementaryTypeName","src":"1189:6:18"}],"id":5980,"name":"VariableDeclaration","src":"1189:18:18"}],"id":5981,"name":"ParameterList","src":"1188:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":5995,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5982,"name":"ElementaryTypeName","src":"1229:4:18"}],"id":5983,"name":"VariableDeclaration","src":"1229:4:18"}],"id":5984,"name":"ParameterList","src":"1228:6:18"},{"children":[{"attributes":{"functionReturnParameters":5984},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5980,"type":"bytes4","value":"interfaceID"},"id":5985,"name":"Identifier","src":"1252:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5913,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":5986,"name":"Identifier","src":"1267:19:18"}],"id":5987,"name":"BinaryOperation","src":"1252:34:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10362,"type":"contract super PubkeyResolver","value":"super"},"id":5988,"name":"Identifier","src":"1290:5:18"}],"id":5989,"name":"MemberAccess","src":"1290:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5980,"type":"bytes4","value":"interfaceID"},"id":5990,"name":"Identifier","src":"1314:11:18"}],"id":5991,"name":"FunctionCall","src":"1290:36:18"}],"id":5992,"name":"BinaryOperation","src":"1252:74:18"}],"id":5993,"name":"Return","src":"1245:81:18"}],"id":5994,"name":"Block","src":"1235:98:18"}],"id":5995,"name":"FunctionDefinition","src":"1162:171:18"}],"id":5996,"name":"ContractDefinition","src":"56:1279:18"}],"id":5997,"name":"SourceUnit","src":"0:1336:18"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[6079]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":5998,"name":"PragmaDirective","src":"0:23:19"},{"attributes":{"SourceUnit":7137,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6080,"symbolAliases":[null],"unitAlias":""},"id":5999,"name":"ImportDirective","src":"25:29:19"},{"attributes":{"contractDependencies":[7136],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6079,7136],"name":"TextResolver","scope":6080},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":7136,"type":"contract ResolverBase"},"id":6000,"name":"UserDefinedTypeName","src":"81:12:19"}],"id":6001,"name":"InheritanceSpecifier","src":"81:12:19"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":6079,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6002,"name":"ElementaryTypeName","src":"100:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":6003,"name":"Literal","src":"144:10:19"}],"id":6004,"name":"VariableDeclaration","src":"100:54:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6012,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6005,"name":"ElementaryTypeName","src":"179:7:19"}],"id":6006,"name":"VariableDeclaration","src":"179:20:19"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":6012,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6007,"name":"ElementaryTypeName","src":"201:6:19"}],"id":6008,"name":"VariableDeclaration","src":"201:25:19"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":6012,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6009,"name":"ElementaryTypeName","src":"228:6:19"}],"id":6010,"name":"VariableDeclaration","src":"228:10:19"}],"id":6011,"name":"ParameterList","src":"178:61:19"}],"id":6012,"name":"EventDefinition","src":"161:79:19"},{"attributes":{"constant":false,"name":"texts","scope":6079,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6013,"name":"ElementaryTypeName","src":"254:7:19"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":6014,"name":"ElementaryTypeName","src":"271:6:19"},{"attributes":{"name":"string","type":"string"},"id":6015,"name":"ElementaryTypeName","src":"279:6:19"}],"id":6016,"name":"Mapping","src":"263:23:19"}],"id":6017,"name":"Mapping","src":"246:41:19"}],"id":6018,"name":"VariableDeclaration","src":"246:47:19"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":6079,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6045,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6019,"name":"ElementaryTypeName","src":"590:7:19"}],"id":6020,"name":"VariableDeclaration","src":"590:12:19"},{"attributes":{"constant":false,"name":"key","scope":6045,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6021,"name":"ElementaryTypeName","src":"604:6:19"}],"id":6022,"name":"VariableDeclaration","src":"604:19:19"},{"attributes":{"constant":false,"name":"value","scope":6045,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6023,"name":"ElementaryTypeName","src":"625:6:19"}],"id":6024,"name":"VariableDeclaration","src":"625:21:19"}],"id":6025,"name":"ParameterList","src":"589:58:19"},{"attributes":{"parameters":[null]},"children":[],"id":6029,"name":"ParameterList","src":"674:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7103,"type":"modifier (bytes32)","value":"authorised"},"id":6026,"name":"Identifier","src":"657:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"bytes32","value":"node"},"id":6027,"name":"Identifier","src":"668:4:19"}],"id":6028,"name":"ModifierInvocation","src":"657:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6018,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6030,"name":"Identifier","src":"684:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"bytes32","value":"node"},"id":6031,"name":"Identifier","src":"690:4:19"}],"id":6033,"name":"IndexAccess","src":"684:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"string calldata","value":"key"},"id":6032,"name":"Identifier","src":"696:3:19"}],"id":6034,"name":"IndexAccess","src":"684:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"string calldata","value":"value"},"id":6035,"name":"Identifier","src":"703:5:19"}],"id":6036,"name":"Assignment","src":"684:24:19"}],"id":6037,"name":"ExpressionStatement","src":"684:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6012,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":6038,"name":"Identifier","src":"723:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6020,"type":"bytes32","value":"node"},"id":6039,"name":"Identifier","src":"735:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"string calldata","value":"key"},"id":6040,"name":"Identifier","src":"741:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6022,"type":"string calldata","value":"key"},"id":6041,"name":"Identifier","src":"746:3:19"}],"id":6042,"name":"FunctionCall","src":"723:27:19"}],"id":6043,"name":"EmitStatement","src":"718:32:19"}],"id":6044,"name":"Block","src":"674:83:19"}],"id":6045,"name":"FunctionDefinition","src":"573:184:19"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":6079,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6061,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6046,"name":"ElementaryTypeName","src":"988:7:19"}],"id":6047,"name":"VariableDeclaration","src":"988:12:19"},{"attributes":{"constant":false,"name":"key","scope":6061,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6048,"name":"ElementaryTypeName","src":"1002:6:19"}],"id":6049,"name":"VariableDeclaration","src":"1002:19:19"}],"id":6050,"name":"ParameterList","src":"987:35:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6061,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6051,"name":"ElementaryTypeName","src":"1046:6:19"}],"id":6052,"name":"VariableDeclaration","src":"1046:13:19"}],"id":6053,"name":"ParameterList","src":"1045:15:19"},{"children":[{"attributes":{"functionReturnParameters":6053},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6018,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":6054,"name":"Identifier","src":"1078:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6047,"type":"bytes32","value":"node"},"id":6055,"name":"Identifier","src":"1084:4:19"}],"id":6056,"name":"IndexAccess","src":"1078:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6049,"type":"string calldata","value":"key"},"id":6057,"name":"Identifier","src":"1090:3:19"}],"id":6058,"name":"IndexAccess","src":"1078:16:19"}],"id":6059,"name":"Return","src":"1071:23:19"}],"id":6060,"name":"Block","src":"1061:40:19"}],"id":6061,"name":"FunctionDefinition","src":"974:127:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6079,"stateMutability":"pure","superFunction":7084,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6078,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6062,"name":"ElementaryTypeName","src":"1134:6:19"}],"id":6063,"name":"VariableDeclaration","src":"1134:18:19"}],"id":6064,"name":"ParameterList","src":"1133:20:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":6078,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6065,"name":"ElementaryTypeName","src":"1174:4:19"}],"id":6066,"name":"VariableDeclaration","src":"1174:4:19"}],"id":6067,"name":"ParameterList","src":"1173:6:19"},{"children":[{"attributes":{"functionReturnParameters":6067},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6063,"type":"bytes4","value":"interfaceID"},"id":6068,"name":"Identifier","src":"1197:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6004,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":6069,"name":"Identifier","src":"1212:17:19"}],"id":6070,"name":"BinaryOperation","src":"1197:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":7084,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10364,"type":"contract super TextResolver","value":"super"},"id":6071,"name":"Identifier","src":"1233:5:19"}],"id":6072,"name":"MemberAccess","src":"1233:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6063,"type":"bytes4","value":"interfaceID"},"id":6073,"name":"Identifier","src":"1257:11:19"}],"id":6074,"name":"FunctionCall","src":"1233:36:19"}],"id":6075,"name":"BinaryOperation","src":"1197:72:19"}],"id":6076,"name":"Return","src":"1190:79:19"}],"id":6077,"name":"Block","src":"1180:96:19"}],"id":6078,"name":"FunctionDefinition","src":"1107:169:19"}],"id":6079,"name":"ContractDefinition","src":"56:1222:19"}],"id":6080,"name":"SourceUnit","src":"0:1278:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[9460]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7756,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[9460],"name":"strings","scope":9461},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":9460,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":7761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7757,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":7758,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":7761,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7759,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":7760,"name":"VariableDeclaration","src":"2663:9:20"}],"id":7761,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":7801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7762,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":7763,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":7801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7764,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":7765,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":7801,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7766,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":7767,"name":"VariableDeclaration","src":"2722:8:20"}],"id":7768,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":7769,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7767,"type":"uint256","value":"len"},"id":7770,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7771,"name":"Literal","src":"2818:2:20"}],"id":7772,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7767,"type":"uint256","value":"len"},"id":7773,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7774,"name":"Literal","src":"2829:2:20"}],"id":7775,"name":"Assignment","src":"2822:9:20"}],"id":7776,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":7765,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":7763,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":7777,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7763,"type":"uint256","value":"dest"},"id":7778,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7779,"name":"Literal","src":"2933:2:20"}],"id":7780,"name":"Assignment","src":"2925:10:20"}],"id":7781,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7765,"type":"uint256","value":"src"},"id":7782,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7783,"name":"Literal","src":"2956:2:20"}],"id":7784,"name":"Assignment","src":"2949:9:20"}],"id":7785,"name":"ExpressionStatement","src":"2949:9:20"}],"id":7786,"name":"Block","src":"2833:136:20"}],"id":7787,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[7789]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7788,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":7789,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7790,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7791,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7767,"type":"uint256","value":"len"},"id":7792,"name":"Identifier","src":"3036:3:20"}],"id":7793,"name":"BinaryOperation","src":"3031:8:20"}],"id":7794,"name":"TupleExpression","src":"3030:10:20"}],"id":7795,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7796,"name":"Literal","src":"3043:1:20"}],"id":7797,"name":"BinaryOperation","src":"3023:21:20"}],"id":7798,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":7765,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":7789,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":7763,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":7763,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":7789,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":7799,"name":"InlineAssembly","src":"3054:173:20"}],"id":7800,"name":"Block","src":"2745:488:20"}],"id":7801,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7821,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7802,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":7803,"name":"VariableDeclaration","src":"3450:18:20"}],"id":7804,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7821,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7805,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":7806,"name":"VariableDeclaration","src":"3493:12:20"}],"id":7807,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[7809],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7820,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7808,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":7809,"name":"VariableDeclaration","src":"3517:8:20"}],"id":7810,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":7809,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":7803,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":7811,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":7807},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7761,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7812,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":7813,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"string memory","value":"self"},"id":7814,"name":"Identifier","src":"3618:4:20"}],"id":7815,"name":"FunctionCall","src":"3612:11:20"}],"id":7816,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7809,"type":"uint256","value":"ptr"},"id":7817,"name":"Identifier","src":"3632:3:20"}],"id":7818,"name":"FunctionCall","src":"3606:30:20"}],"id":7819,"name":"Return","src":"3599:37:20"}],"id":7820,"name":"Block","src":"3507:136:20"}],"id":7821,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7947,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7822,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":7823,"name":"VariableDeclaration","src":"3852:12:20"}],"id":7824,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7947,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7825,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":7826,"name":"VariableDeclaration","src":"3889:4:20"}],"id":7827,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[7829],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7946,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7828,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":7829,"name":"VariableDeclaration","src":"3905:8:20"}],"id":7830,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7831,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7832,"name":"Literal","src":"3935:1:20"}],"id":7833,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":7827},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7834,"name":"Literal","src":"3957:1:20"}],"id":7835,"name":"Return","src":"3950:8:20"}],"id":7836,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7837,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7838,"name":"Identifier","src":"3977:4:20"}],"id":7839,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":7840,"name":"Literal","src":"3985:34:20"}],"id":7841,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7842,"name":"Literal","src":"4023:1:20"}],"id":7843,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7844,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":7845,"name":"Literal","src":"4047:2:20"}],"id":7846,"name":"Assignment","src":"4040:9:20"}],"id":7847,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7848,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7849,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7850,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7851,"name":"Identifier","src":"4083:4:20"}],"id":7852,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":7853,"name":"Literal","src":"4091:35:20"}],"id":7854,"name":"BinaryOperation","src":"4078:48:20"}],"id":7855,"name":"FunctionCall","src":"4070:57:20"}],"id":7856,"name":"Assignment","src":"4063:64:20"}],"id":7857,"name":"ExpressionStatement","src":"4063:64:20"}],"id":7858,"name":"Block","src":"4026:112:20"}],"id":7859,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7860,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7861,"name":"Identifier","src":"4156:4:20"}],"id":7862,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":7863,"name":"Literal","src":"4164:18:20"}],"id":7864,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7865,"name":"Literal","src":"4186:1:20"}],"id":7866,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7867,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7868,"name":"Literal","src":"4210:1:20"}],"id":7869,"name":"Assignment","src":"4203:8:20"}],"id":7870,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7871,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7872,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7873,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7874,"name":"Identifier","src":"4245:4:20"}],"id":7875,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":7876,"name":"Literal","src":"4253:19:20"}],"id":7877,"name":"BinaryOperation","src":"4240:32:20"}],"id":7878,"name":"FunctionCall","src":"4232:41:20"}],"id":7879,"name":"Assignment","src":"4225:48:20"}],"id":7880,"name":"ExpressionStatement","src":"4225:48:20"}],"id":7881,"name":"Block","src":"4189:95:20"}],"id":7882,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7883,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7884,"name":"Identifier","src":"4302:4:20"}],"id":7885,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":7886,"name":"Literal","src":"4310:10:20"}],"id":7887,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7888,"name":"Literal","src":"4324:1:20"}],"id":7889,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7890,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7891,"name":"Literal","src":"4348:1:20"}],"id":7892,"name":"Assignment","src":"4341:8:20"}],"id":7893,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7894,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7895,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7896,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7897,"name":"Identifier","src":"4383:4:20"}],"id":7898,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":7899,"name":"Literal","src":"4391:11:20"}],"id":7900,"name":"BinaryOperation","src":"4378:24:20"}],"id":7901,"name":"FunctionCall","src":"4370:33:20"}],"id":7902,"name":"Assignment","src":"4363:40:20"}],"id":7903,"name":"ExpressionStatement","src":"4363:40:20"}],"id":7904,"name":"Block","src":"4327:87:20"}],"id":7905,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7906,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7907,"name":"Identifier","src":"4432:4:20"}],"id":7908,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":7909,"name":"Literal","src":"4440:6:20"}],"id":7910,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7911,"name":"Literal","src":"4450:1:20"}],"id":7912,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7913,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7914,"name":"Literal","src":"4474:1:20"}],"id":7915,"name":"Assignment","src":"4467:8:20"}],"id":7916,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7917,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7918,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7919,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7920,"name":"Identifier","src":"4509:4:20"}],"id":7921,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":7922,"name":"Literal","src":"4517:7:20"}],"id":7923,"name":"BinaryOperation","src":"4504:20:20"}],"id":7924,"name":"FunctionCall","src":"4496:29:20"}],"id":7925,"name":"Assignment","src":"4489:36:20"}],"id":7926,"name":"ExpressionStatement","src":"4489:36:20"}],"id":7927,"name":"Block","src":"4453:83:20"}],"id":7928,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7929,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7823,"type":"bytes32","value":"self"},"id":7930,"name":"Identifier","src":"4554:4:20"}],"id":7931,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7932,"name":"Literal","src":"4562:4:20"}],"id":7933,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7934,"name":"Literal","src":"4570:1:20"}],"id":7935,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7936,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7937,"name":"Literal","src":"4594:1:20"}],"id":7938,"name":"Assignment","src":"4587:8:20"}],"id":7939,"name":"ExpressionStatement","src":"4587:8:20"}],"id":7940,"name":"Block","src":"4573:33:20"}],"id":7941,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":7827},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7942,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7829,"type":"uint256","value":"ret"},"id":7943,"name":"Identifier","src":"4627:3:20"}],"id":7944,"name":"BinaryOperation","src":"4622:8:20"}],"id":7945,"name":"Return","src":"4615:15:20"}],"id":7946,"name":"Block","src":"3895:742:20"}],"id":7947,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7964,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7948,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":7949,"name":"VariableDeclaration","src":"4963:12:20"}],"id":7950,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7964,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7951,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":7952,"name":"VariableDeclaration","src":"5000:16:20"}],"id":7953,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":7949,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":7952,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":7954,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"struct strings.slice memory","value":"ret"},"id":7955,"name":"Identifier","src":"5286:3:20"}],"id":7957,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[7947,8097],"referencedDeclaration":7947,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":7958,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"bytes32","value":"self"},"id":7959,"name":"Identifier","src":"5301:4:20"}],"id":7960,"name":"FunctionCall","src":"5297:9:20"}],"id":7961,"name":"Assignment","src":"5286:20:20"}],"id":7962,"name":"ExpressionStatement","src":"5286:20:20"}],"id":7963,"name":"Block","src":"5018:295:20"}],"id":7964,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7979,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7965,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":7966,"name":"VariableDeclaration","src":"5528:17:20"}],"id":7967,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7979,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7968,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":7969,"name":"VariableDeclaration","src":"5570:12:20"}],"id":7970,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":7970},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7761,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7971,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"struct strings.slice memory","value":"self"},"id":7972,"name":"Identifier","src":"5607:4:20"}],"id":7973,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7966,"type":"struct strings.slice memory","value":"self"},"id":7974,"name":"Identifier","src":"5618:4:20"}],"id":7975,"name":"MemberAccess","src":"5618:9:20"}],"id":7976,"name":"FunctionCall","src":"5601:27:20"}],"id":7977,"name":"Return","src":"5594:34:20"}],"id":7978,"name":"Block","src":"5584:51:20"}],"id":7979,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8009,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":7980,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":7981,"name":"VariableDeclaration","src":"5825:17:20"}],"id":7982,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8009,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7983,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":7984,"name":"VariableDeclaration","src":"5867:13:20"}],"id":7985,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[7987]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8008,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7986,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":7987,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7988,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":7989,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7981,"type":"struct strings.slice memory","value":"self"},"id":7990,"name":"Identifier","src":"5923:4:20"}],"id":7991,"name":"MemberAccess","src":"5923:9:20"}],"id":7992,"name":"FunctionCall","src":"5912:21:20"}],"id":7993,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[7995],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8008,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7994,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":7995,"name":"VariableDeclaration","src":"5943:11:20"}],"id":7996,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":7995,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":7987,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":7997,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7998,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7995,"type":"uint256","value":"retptr"},"id":7999,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7981,"type":"struct strings.slice memory","value":"self"},"id":8000,"name":"Identifier","src":"6024:4:20"}],"id":8001,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7981,"type":"struct strings.slice memory","value":"self"},"id":8002,"name":"Identifier","src":"6035:4:20"}],"id":8003,"name":"MemberAccess","src":"6035:9:20"}],"id":8004,"name":"FunctionCall","src":"6009:36:20"}],"id":8005,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":7985},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7987,"type":"string memory","value":"ret"},"id":8006,"name":"Identifier","src":"6062:3:20"}],"id":8007,"name":"Return","src":"6055:10:20"}],"id":8008,"name":"Block","src":"5882:190:20"}],"id":8009,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8097,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8010,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":8011,"name":"VariableDeclaration","src":"6476:17:20"}],"id":8012,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":8097,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8013,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":8014,"name":"VariableDeclaration","src":"6518:6:20"}],"id":8015,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[8017]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8096,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8016,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":8017,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8011,"type":"struct strings.slice memory","value":"self"},"id":8018,"name":"Identifier","src":"6622:4:20"}],"id":8019,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":8020,"name":"Literal","src":"6634:2:20"}],"id":8021,"name":"BinaryOperation","src":"6622:14:20"}],"id":8022,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[8024]},"children":[{"attributes":{"constant":false,"name":"end","scope":8096,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8023,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":8024,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8025,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8011,"type":"struct strings.slice memory","value":"self"},"id":8026,"name":"Identifier","src":"6663:4:20"}],"id":8027,"name":"MemberAccess","src":"6663:9:20"}],"id":8028,"name":"BinaryOperation","src":"6657:15:20"}],"id":8029,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8014,"type":"uint256","value":"l"},"id":8030,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8031,"name":"Literal","src":"6691:1:20"}],"id":8032,"name":"Assignment","src":"6687:5:20"}],"id":8033,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8034,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8024,"type":"uint256","value":"end"},"id":8035,"name":"Identifier","src":"6700:3:20"}],"id":8036,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8014,"type":"uint256","value":"l"},"id":8037,"name":"Identifier","src":"6705:1:20"}],"id":8038,"name":"UnaryOperation","src":"6705:3:20"}],"id":8039,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[8041],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":8094,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":8040,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":8041,"name":"VariableDeclaration","src":"6724:7:20"}],"id":8042,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":8041,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":8017,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":8043,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8044,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8045,"name":"Literal","src":"6805:4:20"}],"id":8046,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8047,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8048,"name":"Literal","src":"6836:1:20"}],"id":8049,"name":"Assignment","src":"6829:8:20"}],"id":8050,"name":"ExpressionStatement","src":"6829:8:20"}],"id":8051,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8052,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":8053,"name":"Literal","src":"6866:4:20"}],"id":8054,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8055,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8056,"name":"Literal","src":"6897:1:20"}],"id":8057,"name":"Assignment","src":"6890:8:20"}],"id":8058,"name":"ExpressionStatement","src":"6890:8:20"}],"id":8059,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8060,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":8061,"name":"Literal","src":"6927:4:20"}],"id":8062,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8063,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8064,"name":"Literal","src":"6958:1:20"}],"id":8065,"name":"Assignment","src":"6951:8:20"}],"id":8066,"name":"ExpressionStatement","src":"6951:8:20"}],"id":8067,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8068,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":8069,"name":"Literal","src":"6988:4:20"}],"id":8070,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8071,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8072,"name":"Literal","src":"7019:1:20"}],"id":8073,"name":"Assignment","src":"7012:8:20"}],"id":8074,"name":"ExpressionStatement","src":"7012:8:20"}],"id":8075,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8041,"type":"uint8","value":"b"},"id":8076,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":8077,"name":"Literal","src":"7049:4:20"}],"id":8078,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8079,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":8080,"name":"Literal","src":"7080:1:20"}],"id":8081,"name":"Assignment","src":"7073:8:20"}],"id":8082,"name":"ExpressionStatement","src":"7073:8:20"}],"id":8083,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8017,"type":"uint256","value":"ptr"},"id":8084,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":8085,"name":"Literal","src":"7127:1:20"}],"id":8086,"name":"Assignment","src":"7120:8:20"}],"id":8087,"name":"ExpressionStatement","src":"7120:8:20"}],"id":8088,"name":"Block","src":"7102:41:20"}],"id":8089,"name":"IfStatement","src":"7041:102:20"}],"id":8090,"name":"IfStatement","src":"6980:163:20"}],"id":8091,"name":"IfStatement","src":"6919:224:20"}],"id":8092,"name":"IfStatement","src":"6858:285:20"}],"id":8093,"name":"IfStatement","src":"6797:346:20"}],"id":8094,"name":"Block","src":"6710:443:20"}],"id":8095,"name":"ForStatement","src":"6682:471:20"}],"id":8096,"name":"Block","src":"6526:633:20"}],"id":8097,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8110,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8098,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":8099,"name":"VariableDeclaration","src":"7367:17:20"}],"id":8100,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8110,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8101,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":8102,"name":"VariableDeclaration","src":"7409:4:20"}],"id":8103,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":8103},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8099,"type":"struct strings.slice memory","value":"self"},"id":8104,"name":"Identifier","src":"7432:4:20"}],"id":8105,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8106,"name":"Literal","src":"7445:1:20"}],"id":8107,"name":"BinaryOperation","src":"7432:14:20"}],"id":8108,"name":"Return","src":"7425:21:20"}],"id":8109,"name":"Block","src":"7415:38:20"}],"id":8110,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8239,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8111,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":8112,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":8239,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8113,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":8114,"name":"VariableDeclaration","src":"7917:18:20"}],"id":8115,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8239,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":8116,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":8117,"name":"VariableDeclaration","src":"7960:3:20"}],"id":8118,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[8120]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":8238,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8119,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":8120,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8112,"type":"struct strings.slice memory","value":"self"},"id":8121,"name":"Identifier","src":"7991:4:20"}],"id":8122,"name":"MemberAccess","src":"7991:9:20"}],"id":8123,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"struct strings.slice memory","value":"other"},"id":8124,"name":"Identifier","src":"8014:5:20"}],"id":8125,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8112,"type":"struct strings.slice memory","value":"self"},"id":8126,"name":"Identifier","src":"8027:4:20"}],"id":8127,"name":"MemberAccess","src":"8027:9:20"}],"id":8128,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8120,"type":"uint256","value":"shortest"},"id":8129,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"struct strings.slice memory","value":"other"},"id":8130,"name":"Identifier","src":"8061:5:20"}],"id":8131,"name":"MemberAccess","src":"8061:10:20"}],"id":8132,"name":"Assignment","src":"8050:21:20"}],"id":8133,"name":"ExpressionStatement","src":"8050:21:20"}],"id":8134,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[8136]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8238,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8135,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":8136,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8112,"type":"struct strings.slice memory","value":"self"},"id":8137,"name":"Identifier","src":"8097:4:20"}],"id":8138,"name":"MemberAccess","src":"8097:9:20"}],"id":8139,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[8141]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":8238,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8140,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":8141,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"struct strings.slice memory","value":"other"},"id":8142,"name":"Identifier","src":"8132:5:20"}],"id":8143,"name":"MemberAccess","src":"8132:10:20"}],"id":8144,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[8146]},"children":[{"attributes":{"constant":false,"name":"idx","scope":8227,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8145,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":8146,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8147,"name":"Literal","src":"8168:1:20"}],"id":8148,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8146,"type":"uint256","value":"idx"},"id":8149,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8120,"type":"uint256","value":"shortest"},"id":8150,"name":"Identifier","src":"8177:8:20"}],"id":8151,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8146,"type":"uint256","value":"idx"},"id":8152,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8153,"name":"Literal","src":"8194:2:20"}],"id":8154,"name":"Assignment","src":"8187:9:20"}],"id":8155,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[8157],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":8226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8156,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":8157,"name":"VariableDeclaration","src":"8212:6:20"}],"id":8158,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[8160],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":8226,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8159,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":8160,"name":"VariableDeclaration","src":"8232:6:20"}],"id":8161,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":8157,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":8136,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":8160,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":8141,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":8162,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"uint256","value":"a"},"id":8163,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8160,"type":"uint256","value":"b"},"id":8164,"name":"Identifier","src":"8371:1:20"}],"id":8165,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[8167]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8166,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":8167,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":8168,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8169,"name":"Literal","src":"8477:1:20"}],"id":8170,"name":"UnaryOperation","src":"8476:2:20"}],"id":8171,"name":"FunctionCall","src":"8468:11:20"}],"id":8172,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8120,"type":"uint256","value":"shortest"},"id":8173,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8174,"name":"Literal","src":"8525:2:20"}],"id":8175,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8167,"type":"uint256","value":"mask"},"id":8176,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8177,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8178,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8179,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8120,"type":"uint256","value":"shortest"},"id":8180,"name":"Identifier","src":"8576:8:20"}],"id":8181,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8146,"type":"uint256","value":"idx"},"id":8182,"name":"Identifier","src":"8587:3:20"}],"id":8183,"name":"BinaryOperation","src":"8571:19:20"}],"id":8184,"name":"TupleExpression","src":"8570:21:20"}],"id":8185,"name":"BinaryOperation","src":"8566:25:20"}],"id":8186,"name":"TupleExpression","src":"8565:27:20"}],"id":8187,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8188,"name":"Literal","src":"8595:1:20"}],"id":8189,"name":"BinaryOperation","src":"8560:36:20"}],"id":8190,"name":"TupleExpression","src":"8559:38:20"}],"id":8191,"name":"UnaryOperation","src":"8558:39:20"}],"id":8192,"name":"Assignment","src":"8551:46:20"}],"id":8193,"name":"ExpressionStatement","src":"8551:46:20"}],"id":8194,"name":"Block","src":"8529:87:20"}],"id":8195,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[8197]},"children":[{"attributes":{"constant":false,"name":"diff","scope":8216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":8196,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":8197,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8157,"type":"uint256","value":"a"},"id":8198,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8167,"type":"uint256","value":"mask"},"id":8199,"name":"Identifier","src":"8653:4:20"}],"id":8200,"name":"BinaryOperation","src":"8649:8:20"}],"id":8201,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8160,"type":"uint256","value":"b"},"id":8202,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8167,"type":"uint256","value":"mask"},"id":8203,"name":"Identifier","src":"8666:4:20"}],"id":8204,"name":"BinaryOperation","src":"8662:8:20"}],"id":8205,"name":"TupleExpression","src":"8661:10:20"}],"id":8206,"name":"BinaryOperation","src":"8648:23:20"}],"id":8207,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"uint256","value":"diff"},"id":8208,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8209,"name":"Literal","src":"8701:1:20"}],"id":8210,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":8118},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":8211,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8197,"type":"uint256","value":"diff"},"id":8212,"name":"Identifier","src":"8735:4:20"}],"id":8213,"name":"FunctionCall","src":"8731:9:20"}],"id":8214,"name":"Return","src":"8724:16:20"}],"id":8215,"name":"IfStatement","src":"8689:51:20"}],"id":8216,"name":"Block","src":"8374:381:20"}],"id":8217,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8136,"type":"uint256","value":"selfptr"},"id":8218,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8219,"name":"Literal","src":"8779:2:20"}],"id":8220,"name":"Assignment","src":"8768:13:20"}],"id":8221,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8141,"type":"uint256","value":"otherptr"},"id":8222,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8223,"name":"Literal","src":"8807:2:20"}],"id":8224,"name":"Assignment","src":"8795:14:20"}],"id":8225,"name":"ExpressionStatement","src":"8795:14:20"}],"id":8226,"name":"Block","src":"8198:622:20"}],"id":8227,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":8118},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":8228,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8112,"type":"struct strings.slice memory","value":"self"},"id":8229,"name":"Identifier","src":"8840:4:20"}],"id":8230,"name":"MemberAccess","src":"8840:9:20"}],"id":8231,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":8232,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"struct strings.slice memory","value":"other"},"id":8233,"name":"Identifier","src":"8857:5:20"}],"id":8234,"name":"MemberAccess","src":"8857:10:20"}],"id":8235,"name":"FunctionCall","src":"8853:15:20"}],"id":8236,"name":"BinaryOperation","src":"8836:32:20"}],"id":8237,"name":"Return","src":"8829:39:20"}],"id":8238,"name":"Block","src":"7965:910:20"}],"id":8239,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8256,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8240,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":8241,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":8256,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8242,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":8243,"name":"VariableDeclaration","src":"9154:18:20"}],"id":8244,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8245,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":8246,"name":"VariableDeclaration","src":"9197:4:20"}],"id":8247,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":8247},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":8239,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":8248,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8241,"type":"struct strings.slice memory","value":"self"},"id":8249,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8243,"type":"struct strings.slice memory","value":"other"},"id":8250,"name":"Identifier","src":"9234:5:20"}],"id":8251,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8252,"name":"Literal","src":"9244:1:20"}],"id":8253,"name":"BinaryOperation","src":"9220:25:20"}],"id":8254,"name":"Return","src":"9213:32:20"}],"id":8255,"name":"Block","src":"9203:49:20"}],"id":8256,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8257,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":8258,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8259,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":8260,"name":"VariableDeclaration","src":"9582:17:20"}],"id":8261,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8374,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8262,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":8263,"name":"VariableDeclaration","src":"9624:12:20"}],"id":8264,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8265,"name":"Identifier","src":"9648:4:20"}],"id":8267,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8268,"name":"Identifier","src":"9660:4:20"}],"id":8269,"name":"MemberAccess","src":"9660:9:20"}],"id":8270,"name":"Assignment","src":"9648:21:20"}],"id":8271,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8272,"name":"Identifier","src":"9684:4:20"}],"id":8273,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8274,"name":"Literal","src":"9697:1:20"}],"id":8275,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8276,"name":"Identifier","src":"9714:4:20"}],"id":8278,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8279,"name":"Literal","src":"9726:1:20"}],"id":8280,"name":"Assignment","src":"9714:13:20"}],"id":8281,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":8264},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8282,"name":"Identifier","src":"9748:4:20"}],"id":8283,"name":"Return","src":"9741:11:20"}],"id":8284,"name":"Block","src":"9700:63:20"}],"id":8285,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[8287],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":8373,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8286,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":8287,"name":"VariableDeclaration","src":"9773:6:20"}],"id":8288,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[8290],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":8373,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8289,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":8290,"name":"VariableDeclaration","src":"9789:6:20"}],"id":8291,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":8290,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":8258,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":8292,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8290,"type":"uint256","value":"b"},"id":8293,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8294,"name":"Literal","src":"9949:4:20"}],"id":8295,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8296,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8297,"name":"Literal","src":"9973:1:20"}],"id":8298,"name":"Assignment","src":"9969:5:20"}],"id":8299,"name":"ExpressionStatement","src":"9969:5:20"}],"id":8300,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8290,"type":"uint256","value":"b"},"id":8301,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":8302,"name":"Literal","src":"9999:4:20"}],"id":8303,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8304,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8305,"name":"Literal","src":"10023:1:20"}],"id":8306,"name":"Assignment","src":"10019:5:20"}],"id":8307,"name":"ExpressionStatement","src":"10019:5:20"}],"id":8308,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8290,"type":"uint256","value":"b"},"id":8309,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":8310,"name":"Literal","src":"10049:4:20"}],"id":8311,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8312,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8313,"name":"Literal","src":"10073:1:20"}],"id":8314,"name":"Assignment","src":"10069:5:20"}],"id":8315,"name":"ExpressionStatement","src":"10069:5:20"}],"id":8316,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8317,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8318,"name":"Literal","src":"10109:1:20"}],"id":8319,"name":"Assignment","src":"10105:5:20"}],"id":8320,"name":"ExpressionStatement","src":"10105:5:20"}],"id":8321,"name":"Block","src":"10091:30:20"}],"id":8322,"name":"IfStatement","src":"10041:80:20"}],"id":8323,"name":"IfStatement","src":"9991:130:20"}],"id":8324,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8325,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8326,"name":"Identifier","src":"10181:4:20"}],"id":8327,"name":"MemberAccess","src":"10181:9:20"}],"id":8328,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8329,"name":"Identifier","src":"10206:4:20"}],"id":8331,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8332,"name":"Identifier","src":"10218:4:20"}],"id":8333,"name":"MemberAccess","src":"10218:9:20"}],"id":8334,"name":"Assignment","src":"10206:21:20"}],"id":8335,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8336,"name":"Identifier","src":"10241:4:20"}],"id":8338,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8339,"name":"Identifier","src":"10254:4:20"}],"id":8340,"name":"MemberAccess","src":"10254:9:20"}],"id":8341,"name":"Assignment","src":"10241:22:20"}],"id":8342,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8343,"name":"Identifier","src":"10277:4:20"}],"id":8345,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8346,"name":"Literal","src":"10289:1:20"}],"id":8347,"name":"Assignment","src":"10277:13:20"}],"id":8348,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":8264},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8349,"name":"Identifier","src":"10311:4:20"}],"id":8350,"name":"Return","src":"10304:11:20"}],"id":8351,"name":"Block","src":"10192:134:20"}],"id":8352,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8353,"name":"Identifier","src":"10336:4:20"}],"id":8355,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8356,"name":"Identifier","src":"10349:1:20"}],"id":8357,"name":"Assignment","src":"10336:14:20"}],"id":8358,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8258,"type":"struct strings.slice memory","value":"self"},"id":8359,"name":"Identifier","src":"10360:4:20"}],"id":8361,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8362,"name":"Identifier","src":"10373:1:20"}],"id":8363,"name":"Assignment","src":"10360:14:20"}],"id":8364,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8365,"name":"Identifier","src":"10384:4:20"}],"id":8367,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8287,"type":"uint256","value":"l"},"id":8368,"name":"Identifier","src":"10396:1:20"}],"id":8369,"name":"Assignment","src":"10384:13:20"}],"id":8370,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":8264},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8260,"type":"struct strings.slice memory","value":"rune"},"id":8371,"name":"Identifier","src":"10414:4:20"}],"id":8372,"name":"Return","src":"10407:11:20"}],"id":8373,"name":"Block","src":"9638:787:20"}],"id":8374,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8387,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8375,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":8376,"name":"VariableDeclaration","src":"10683:17:20"}],"id":8377,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8387,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8378,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":8379,"name":"VariableDeclaration","src":"10725:16:20"}],"id":8380,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8374,8387],"referencedDeclaration":8374,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":8381,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8376,"type":"struct strings.slice memory","value":"self"},"id":8382,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8379,"type":"struct strings.slice memory","value":"ret"},"id":8383,"name":"Identifier","src":"10768:3:20"}],"id":8384,"name":"FunctionCall","src":"10753:19:20"}],"id":8385,"name":"ExpressionStatement","src":"10753:19:20"}],"id":8386,"name":"Block","src":"10743:36:20"}],"id":8387,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8534,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8388,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":8389,"name":"VariableDeclaration","src":"10988:17:20"}],"id":8390,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8534,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8391,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":8392,"name":"VariableDeclaration","src":"11030:8:20"}],"id":8393,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8389,"type":"struct strings.slice memory","value":"self"},"id":8394,"name":"Identifier","src":"11054:4:20"}],"id":8395,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8396,"name":"Literal","src":"11067:1:20"}],"id":8397,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":8393},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8398,"name":"Literal","src":"11091:1:20"}],"id":8399,"name":"Return","src":"11084:8:20"}],"id":8400,"name":"Block","src":"11070:33:20"}],"id":8401,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[8403],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":8533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8402,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":8403,"name":"VariableDeclaration","src":"11113:9:20"}],"id":8404,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[8406],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":8533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8405,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":8406,"name":"VariableDeclaration","src":"11132:11:20"}],"id":8407,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[8409]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":8533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8408,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":8409,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8410,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":8411,"name":"Literal","src":"11173:3:20"}],"id":8412,"name":"BinaryOperation","src":"11168:8:20"}],"id":8413,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":8403,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":8389,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":8414,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[8416]},"children":[{"attributes":{"constant":false,"name":"b","scope":8533,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8415,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":8416,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8403,"type":"uint256","value":"word"},"id":8417,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8409,"type":"uint256","value":"divisor"},"id":8418,"name":"Identifier","src":"11303:7:20"}],"id":8419,"name":"BinaryOperation","src":"11296:14:20"}],"id":8420,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8421,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8422,"name":"Literal","src":"11328:4:20"}],"id":8423,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8424,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8425,"name":"Identifier","src":"11354:1:20"}],"id":8426,"name":"Assignment","src":"11348:7:20"}],"id":8427,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8428,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8429,"name":"Literal","src":"11378:1:20"}],"id":8430,"name":"Assignment","src":"11369:10:20"}],"id":8431,"name":"ExpressionStatement","src":"11369:10:20"}],"id":8432,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8433,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":8434,"name":"Literal","src":"11404:4:20"}],"id":8435,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8436,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8437,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":8438,"name":"Literal","src":"11434:4:20"}],"id":8439,"name":"BinaryOperation","src":"11430:8:20"}],"id":8440,"name":"Assignment","src":"11424:14:20"}],"id":8441,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8442,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8443,"name":"Literal","src":"11461:1:20"}],"id":8444,"name":"Assignment","src":"11452:10:20"}],"id":8445,"name":"ExpressionStatement","src":"11452:10:20"}],"id":8446,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8447,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":8448,"name":"Literal","src":"11487:4:20"}],"id":8449,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8450,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8451,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":8452,"name":"Literal","src":"11517:4:20"}],"id":8453,"name":"BinaryOperation","src":"11513:8:20"}],"id":8454,"name":"Assignment","src":"11507:14:20"}],"id":8455,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8456,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8457,"name":"Literal","src":"11544:1:20"}],"id":8458,"name":"Assignment","src":"11535:10:20"}],"id":8459,"name":"ExpressionStatement","src":"11535:10:20"}],"id":8460,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8461,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8462,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":8463,"name":"Literal","src":"11586:4:20"}],"id":8464,"name":"BinaryOperation","src":"11582:8:20"}],"id":8465,"name":"Assignment","src":"11576:14:20"}],"id":8466,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8467,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8468,"name":"Literal","src":"11613:1:20"}],"id":8469,"name":"Assignment","src":"11604:10:20"}],"id":8470,"name":"ExpressionStatement","src":"11604:10:20"}],"id":8471,"name":"Block","src":"11562:63:20"}],"id":8472,"name":"IfStatement","src":"11479:146:20"}],"id":8473,"name":"IfStatement","src":"11396:229:20"}],"id":8474,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8475,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8389,"type":"struct strings.slice memory","value":"self"},"id":8476,"name":"Identifier","src":"11690:4:20"}],"id":8477,"name":"MemberAccess","src":"11690:9:20"}],"id":8478,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":8393},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8479,"name":"Literal","src":"11722:1:20"}],"id":8480,"name":"Return","src":"11715:8:20"}],"id":8481,"name":"Block","src":"11701:33:20"}],"id":8482,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[8484]},"children":[{"attributes":{"constant":false,"name":"i","scope":8530,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8483,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":8484,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8485,"name":"Literal","src":"11758:1:20"}],"id":8486,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8484,"type":"uint256","value":"i"},"id":8487,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8406,"type":"uint256","value":"length"},"id":8488,"name":"Identifier","src":"11765:6:20"}],"id":8489,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8484,"type":"uint256","value":"i"},"id":8490,"name":"Identifier","src":"11773:1:20"}],"id":8491,"name":"UnaryOperation","src":"11773:3:20"}],"id":8492,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8409,"type":"uint256","value":"divisor"},"id":8493,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8409,"type":"uint256","value":"divisor"},"id":8494,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":8495,"name":"Literal","src":"11812:3:20"}],"id":8496,"name":"BinaryOperation","src":"11802:13:20"}],"id":8497,"name":"Assignment","src":"11792:23:20"}],"id":8498,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8499,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8403,"type":"uint256","value":"word"},"id":8500,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8409,"type":"uint256","value":"divisor"},"id":8501,"name":"Identifier","src":"11841:7:20"}],"id":8502,"name":"BinaryOperation","src":"11834:14:20"}],"id":8503,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":8504,"name":"Literal","src":"11852:4:20"}],"id":8505,"name":"BinaryOperation","src":"11833:23:20"}],"id":8506,"name":"Assignment","src":"11829:27:20"}],"id":8507,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8508,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":8509,"name":"Literal","src":"11878:4:20"}],"id":8510,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8511,"name":"Literal","src":"11886:4:20"}],"id":8512,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":8393},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8513,"name":"Literal","src":"11959:1:20"}],"id":8514,"name":"Return","src":"11952:8:20"}],"id":8515,"name":"Block","src":"11892:83:20"}],"id":8516,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8517,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8518,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":8519,"name":"Literal","src":"12001:2:20"}],"id":8520,"name":"BinaryOperation","src":"11995:8:20"}],"id":8521,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8416,"type":"uint256","value":"b"},"id":8522,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":8523,"name":"Literal","src":"12012:4:20"}],"id":8524,"name":"BinaryOperation","src":"12008:8:20"}],"id":8525,"name":"TupleExpression","src":"12007:10:20"}],"id":8526,"name":"BinaryOperation","src":"11994:23:20"}],"id":8527,"name":"Assignment","src":"11988:29:20"}],"id":8528,"name":"ExpressionStatement","src":"11988:29:20"}],"id":8529,"name":"Block","src":"11778:250:20"}],"id":8530,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":8393},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"ret"},"id":8531,"name":"Identifier","src":"12045:3:20"}],"id":8532,"name":"Return","src":"12038:10:20"}],"id":8533,"name":"Block","src":"11040:1015:20"}],"id":8534,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8543,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8535,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":8536,"name":"VariableDeclaration","src":"12222:17:20"}],"id":8537,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8543,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8538,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":8539,"name":"VariableDeclaration","src":"12264:11:20"}],"id":8540,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":8539,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":8536,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":8536,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":8541,"name":"InlineAssembly","src":"12287:84:20"}],"id":8542,"name":"Block","src":"12277:100:20"}],"id":8543,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8577,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8544,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":8545,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8577,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8546,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":8547,"name":"VariableDeclaration","src":"12665:19:20"}],"id":8548,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8577,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8549,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":8550,"name":"VariableDeclaration","src":"12709:4:20"}],"id":8551,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8545,"type":"struct strings.slice memory","value":"self"},"id":8552,"name":"Identifier","src":"12729:4:20"}],"id":8553,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"needle"},"id":8554,"name":"Identifier","src":"12741:6:20"}],"id":8555,"name":"MemberAccess","src":"12741:11:20"}],"id":8556,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":8551},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8557,"name":"Literal","src":"12775:5:20"}],"id":8558,"name":"Return","src":"12768:12:20"}],"id":8559,"name":"Block","src":"12754:37:20"}],"id":8560,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8545,"type":"struct strings.slice memory","value":"self"},"id":8561,"name":"Identifier","src":"12805:4:20"}],"id":8562,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"needle"},"id":8563,"name":"Identifier","src":"12818:6:20"}],"id":8564,"name":"MemberAccess","src":"12818:11:20"}],"id":8565,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":8551},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8566,"name":"Literal","src":"12852:4:20"}],"id":8567,"name":"Return","src":"12845:11:20"}],"id":8568,"name":"Block","src":"12831:36:20"}],"id":8569,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[8571],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":8576,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8570,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":8571,"name":"VariableDeclaration","src":"12877:10:20"}],"id":8572,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":8547,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":8545,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":8571,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":8547,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8573,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":8551},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8571,"type":"bool","value":"equal"},"id":8574,"name":"Identifier","src":"13159:5:20"}],"id":8575,"name":"Return","src":"13152:12:20"}],"id":8576,"name":"Block","src":"12715:456:20"}],"id":8577,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8627,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8578,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":8579,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8627,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8580,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":8581,"name":"VariableDeclaration","src":"13478:19:20"}],"id":8582,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8627,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8583,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":8584,"name":"VariableDeclaration","src":"13522:12:20"}],"id":8585,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8586,"name":"Identifier","src":"13550:4:20"}],"id":8587,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"needle"},"id":8588,"name":"Identifier","src":"13562:6:20"}],"id":8589,"name":"MemberAccess","src":"13562:11:20"}],"id":8590,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":8585},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8591,"name":"Identifier","src":"13596:4:20"}],"id":8592,"name":"Return","src":"13589:11:20"}],"id":8593,"name":"Block","src":"13575:36:20"}],"id":8594,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[8596]},"children":[{"attributes":{"constant":false,"name":"equal","scope":8626,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8595,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":8596,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8597,"name":"Literal","src":"13634:4:20"}],"id":8598,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8599,"name":"Identifier","src":"13652:4:20"}],"id":8600,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"needle"},"id":8601,"name":"Identifier","src":"13665:6:20"}],"id":8602,"name":"MemberAccess","src":"13665:11:20"}],"id":8603,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":8581,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":8579,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"equal":{"declaration":8596,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}},{"needle":{"declaration":8581,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8604,"name":"InlineAssembly","src":"13692:266:20"}],"id":8605,"name":"Block","src":"13678:290:20"}],"id":8606,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8596,"type":"bool","value":"equal"},"id":8607,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8608,"name":"Identifier","src":"14003:4:20"}],"id":8610,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"needle"},"id":8611,"name":"Identifier","src":"14016:6:20"}],"id":8612,"name":"MemberAccess","src":"14016:11:20"}],"id":8613,"name":"Assignment","src":"14003:24:20"}],"id":8614,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8615,"name":"Identifier","src":"14041:4:20"}],"id":8617,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"needle"},"id":8618,"name":"Identifier","src":"14054:6:20"}],"id":8619,"name":"MemberAccess","src":"14054:11:20"}],"id":8620,"name":"Assignment","src":"14041:24:20"}],"id":8621,"name":"ExpressionStatement","src":"14041:24:20"}],"id":8622,"name":"Block","src":"13989:87:20"}],"id":8623,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":8585},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8579,"type":"struct strings.slice memory","value":"self"},"id":8624,"name":"Identifier","src":"14093:4:20"}],"id":8625,"name":"Return","src":"14086:11:20"}],"id":8626,"name":"Block","src":"13536:568:20"}],"id":8627,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8671,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8628,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":8629,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8671,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8630,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":8631,"name":"VariableDeclaration","src":"14391:19:20"}],"id":8632,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8671,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8633,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":8634,"name":"VariableDeclaration","src":"14435:4:20"}],"id":8635,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"struct strings.slice memory","value":"self"},"id":8636,"name":"Identifier","src":"14455:4:20"}],"id":8637,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8631,"type":"struct strings.slice memory","value":"needle"},"id":8638,"name":"Identifier","src":"14467:6:20"}],"id":8639,"name":"MemberAccess","src":"14467:11:20"}],"id":8640,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":8635},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8641,"name":"Literal","src":"14501:5:20"}],"id":8642,"name":"Return","src":"14494:12:20"}],"id":8643,"name":"Block","src":"14480:37:20"}],"id":8644,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[8646]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8670,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8645,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":8646,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"struct strings.slice memory","value":"self"},"id":8647,"name":"Identifier","src":"14542:4:20"}],"id":8648,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8629,"type":"struct strings.slice memory","value":"self"},"id":8649,"name":"Identifier","src":"14554:4:20"}],"id":8650,"name":"MemberAccess","src":"14554:9:20"}],"id":8651,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8631,"type":"struct strings.slice memory","value":"needle"},"id":8652,"name":"Identifier","src":"14566:6:20"}],"id":8653,"name":"MemberAccess","src":"14566:11:20"}],"id":8654,"name":"BinaryOperation","src":"14542:35:20"}],"id":8655,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8646,"type":"uint256","value":"selfptr"},"id":8656,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8631,"type":"struct strings.slice memory","value":"needle"},"id":8657,"name":"Identifier","src":"14603:6:20"}],"id":8658,"name":"MemberAccess","src":"14603:11:20"}],"id":8659,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":8635},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8660,"name":"Literal","src":"14637:4:20"}],"id":8661,"name":"Return","src":"14630:11:20"}],"id":8662,"name":"Block","src":"14616:36:20"}],"id":8663,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[8665],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":8670,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8664,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":8665,"name":"VariableDeclaration","src":"14662:10:20"}],"id":8666,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":8631,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":8665,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":8631,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":8646,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8667,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":8635},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8665,"type":"bool","value":"equal"},"id":8668,"name":"Identifier","src":"14895:5:20"}],"id":8669,"name":"Return","src":"14888:12:20"}],"id":8670,"name":"Block","src":"14441:466:20"}],"id":8671,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8672,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":8673,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8674,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":8675,"name":"VariableDeclaration","src":"15205:19:20"}],"id":8676,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8724,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8677,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":8678,"name":"VariableDeclaration","src":"15249:12:20"}],"id":8679,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8680,"name":"Identifier","src":"15277:4:20"}],"id":8681,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"needle"},"id":8682,"name":"Identifier","src":"15289:6:20"}],"id":8683,"name":"MemberAccess","src":"15289:11:20"}],"id":8684,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":8679},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8685,"name":"Identifier","src":"15323:4:20"}],"id":8686,"name":"Return","src":"15316:11:20"}],"id":8687,"name":"Block","src":"15302:36:20"}],"id":8688,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[8690]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8723,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8689,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":8690,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8691,"name":"Identifier","src":"15363:4:20"}],"id":8692,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8693,"name":"Identifier","src":"15375:4:20"}],"id":8694,"name":"MemberAccess","src":"15375:9:20"}],"id":8695,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"needle"},"id":8696,"name":"Identifier","src":"15387:6:20"}],"id":8697,"name":"MemberAccess","src":"15387:11:20"}],"id":8698,"name":"BinaryOperation","src":"15363:35:20"}],"id":8699,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[8701]},"children":[{"attributes":{"constant":false,"name":"equal","scope":8723,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8700,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":8701,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8702,"name":"Literal","src":"15421:4:20"}],"id":8703,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8690,"type":"uint256","value":"selfptr"},"id":8704,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"needle"},"id":8705,"name":"Identifier","src":"15450:6:20"}],"id":8706,"name":"MemberAccess","src":"15450:11:20"}],"id":8707,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":8675,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":8701,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":8675,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":8690,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8708,"name":"InlineAssembly","src":"15477:212:20"}],"id":8709,"name":"Block","src":"15463:236:20"}],"id":8710,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8701,"type":"bool","value":"equal"},"id":8711,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8712,"name":"Identifier","src":"15734:4:20"}],"id":8714,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"needle"},"id":8715,"name":"Identifier","src":"15747:6:20"}],"id":8716,"name":"MemberAccess","src":"15747:11:20"}],"id":8717,"name":"Assignment","src":"15734:24:20"}],"id":8718,"name":"ExpressionStatement","src":"15734:24:20"}],"id":8719,"name":"Block","src":"15720:49:20"}],"id":8720,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":8679},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8673,"type":"struct strings.slice memory","value":"self"},"id":8721,"name":"Identifier","src":"15786:4:20"}],"id":8722,"name":"Return","src":"15779:11:20"}],"id":8723,"name":"Block","src":"15263:534:20"}],"id":8724,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8725,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":8726,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8727,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":8728,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8729,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":8730,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8731,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":8732,"name":"VariableDeclaration","src":"16015:14:20"}],"id":8733,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8845,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8734,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":8735,"name":"VariableDeclaration","src":"16053:4:20"}],"id":8736,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[8738]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8737,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":8738,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8728,"type":"uint256","value":"selfptr"},"id":8739,"name":"Identifier","src":"16080:7:20"}],"id":8740,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[8742],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":8844,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8741,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":8742,"name":"VariableDeclaration","src":"16097:8:20"}],"id":8743,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8744,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8745,"name":"Identifier","src":"16133:7:20"}],"id":8746,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8747,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8748,"name":"Literal","src":"16173:2:20"}],"id":8749,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[8751]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8750,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":8751,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8752,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8753,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8754,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8755,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8756,"name":"Identifier","src":"16236:9:20"}],"id":8757,"name":"BinaryOperation","src":"16231:14:20"}],"id":8758,"name":"TupleExpression","src":"16230:16:20"}],"id":8759,"name":"BinaryOperation","src":"16226:20:20"}],"id":8760,"name":"TupleExpression","src":"16225:22:20"}],"id":8761,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8762,"name":"Literal","src":"16250:1:20"}],"id":8763,"name":"BinaryOperation","src":"16220:31:20"}],"id":8764,"name":"TupleExpression","src":"16219:33:20"}],"id":8765,"name":"UnaryOperation","src":"16218:34:20"}],"id":8766,"name":"FunctionCall","src":"16210:43:20"}],"id":8767,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[8769],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8768,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":8769,"name":"VariableDeclaration","src":"16272:18:20"}],"id":8770,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8769,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":8732,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":8751,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8771,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[8773]},"children":[{"attributes":{"constant":false,"name":"end","scope":8803,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8772,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":8773,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8728,"type":"uint256","value":"selfptr"},"id":8774,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8775,"name":"Identifier","src":"16401:7:20"}],"id":8776,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8777,"name":"Identifier","src":"16411:9:20"}],"id":8778,"name":"BinaryOperation","src":"16391:29:20"}],"id":8779,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[8781],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8780,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":8781,"name":"VariableDeclaration","src":"16438:15:20"}],"id":8782,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8781,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":8738,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":8751,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8783,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8781,"type":"bytes32","value":"ptrdata"},"id":8784,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8769,"type":"bytes32","value":"needledata"},"id":8785,"name":"Identifier","src":"16552:10:20"}],"id":8786,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8787,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8773,"type":"uint256","value":"end"},"id":8788,"name":"Identifier","src":"16597:3:20"}],"id":8789,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":8736},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8728,"type":"uint256","value":"selfptr"},"id":8790,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8791,"name":"Identifier","src":"16643:7:20"}],"id":8792,"name":"BinaryOperation","src":"16633:17:20"}],"id":8793,"name":"Return","src":"16626:24:20"}],"id":8794,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8795,"name":"Identifier","src":"16672:3:20"}],"id":8796,"name":"UnaryOperation","src":"16672:5:20"}],"id":8797,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8781,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":8738,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":8751,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8798,"name":"InlineAssembly","src":"16699:45:20"}],"id":8799,"name":"Block","src":"16564:198:20"}],"id":8800,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":8736},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8801,"name":"Identifier","src":"16786:3:20"}],"id":8802,"name":"Return","src":"16779:10:20"}],"id":8803,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[8805],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8836,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8804,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":8805,"name":"VariableDeclaration","src":"16877:12:20"}],"id":8806,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8805,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":8732,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":8730,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8807,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8742,"type":"uint256","value":"idx"},"id":8808,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8809,"name":"Literal","src":"16988:1:20"}],"id":8810,"name":"Assignment","src":"16982:7:20"}],"id":8811,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8742,"type":"uint256","value":"idx"},"id":8812,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8813,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8730,"type":"uint256","value":"needlelen"},"id":8814,"name":"Identifier","src":"17008:9:20"}],"id":8815,"name":"BinaryOperation","src":"16998:19:20"}],"id":8816,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8742,"type":"uint256","value":"idx"},"id":8817,"name":"Identifier","src":"17019:3:20"}],"id":8818,"name":"UnaryOperation","src":"17019:5:20"}],"id":8819,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[8821],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8834,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8820,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":8821,"name":"VariableDeclaration","src":"17048:16:20"}],"id":8822,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8821,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":8738,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":8730,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8823,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8805,"type":"bytes32","value":"hash"},"id":8824,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8821,"type":"bytes32","value":"testHash"},"id":8825,"name":"Identifier","src":"17169:8:20"}],"id":8826,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":8736},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8827,"name":"Identifier","src":"17210:3:20"}],"id":8828,"name":"Return","src":"17203:10:20"}],"id":8829,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8738,"type":"uint256","value":"ptr"},"id":8830,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8831,"name":"Literal","src":"17242:1:20"}],"id":8832,"name":"Assignment","src":"17235:8:20"}],"id":8833,"name":"ExpressionStatement","src":"17235:8:20"}],"id":8834,"name":"Block","src":"17026:236:20"}],"id":8835,"name":"ForStatement","src":"16977:285:20"}],"id":8836,"name":"Block","src":"16810:466:20"}],"id":8837,"name":"IfStatement","src":"16156:1120:20"}],"id":8838,"name":"Block","src":"16142:1144:20"}],"id":8839,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":8736},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8728,"type":"uint256","value":"selfptr"},"id":8840,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8726,"type":"uint256","value":"selflen"},"id":8841,"name":"Identifier","src":"17312:7:20"}],"id":8842,"name":"BinaryOperation","src":"17302:17:20"}],"id":8843,"name":"Return","src":"17295:24:20"}],"id":8844,"name":"Block","src":"16059:1267:20"}],"id":8845,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8846,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":8847,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8848,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":8849,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8850,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":8851,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8852,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":8853,"name":"VariableDeclaration","src":"17541:14:20"}],"id":8854,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8962,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8855,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":8856,"name":"VariableDeclaration","src":"17579:4:20"}],"id":8857,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[8859],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8858,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":8859,"name":"VariableDeclaration","src":"17595:8:20"}],"id":8860,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8861,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8847,"type":"uint256","value":"selflen"},"id":8862,"name":"Identifier","src":"17631:7:20"}],"id":8863,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8864,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8865,"name":"Literal","src":"17671:2:20"}],"id":8866,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[8868]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8920,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8867,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":8868,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8869,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8870,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8871,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8872,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8873,"name":"Identifier","src":"17734:9:20"}],"id":8874,"name":"BinaryOperation","src":"17729:14:20"}],"id":8875,"name":"TupleExpression","src":"17728:16:20"}],"id":8876,"name":"BinaryOperation","src":"17724:20:20"}],"id":8877,"name":"TupleExpression","src":"17723:22:20"}],"id":8878,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8879,"name":"Literal","src":"17748:1:20"}],"id":8880,"name":"BinaryOperation","src":"17718:31:20"}],"id":8881,"name":"TupleExpression","src":"17717:33:20"}],"id":8882,"name":"UnaryOperation","src":"17716:34:20"}],"id":8883,"name":"FunctionCall","src":"17708:43:20"}],"id":8884,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[8886],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8920,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8885,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":8886,"name":"VariableDeclaration","src":"17770:18:20"}],"id":8887,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8886,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":8853,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":8868,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8888,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8889,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8890,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8847,"type":"uint256","value":"selflen"},"id":8891,"name":"Identifier","src":"17894:7:20"}],"id":8892,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8893,"name":"Identifier","src":"17904:9:20"}],"id":8894,"name":"BinaryOperation","src":"17884:29:20"}],"id":8895,"name":"Assignment","src":"17878:35:20"}],"id":8896,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[8898],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8920,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8897,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":8898,"name":"VariableDeclaration","src":"17931:15:20"}],"id":8899,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8898,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":8859,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":8868,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8900,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8898,"type":"bytes32","value":"ptrdata"},"id":8901,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8886,"type":"bytes32","value":"needledata"},"id":8902,"name":"Identifier","src":"18045:10:20"}],"id":8903,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8904,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8905,"name":"Identifier","src":"18090:7:20"}],"id":8906,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":8857},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8907,"name":"Identifier","src":"18130:7:20"}],"id":8908,"name":"Return","src":"18123:14:20"}],"id":8909,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8910,"name":"Identifier","src":"18159:3:20"}],"id":8911,"name":"UnaryOperation","src":"18159:5:20"}],"id":8912,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8898,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":8859,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":8868,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8913,"name":"InlineAssembly","src":"18186:45:20"}],"id":8914,"name":"Block","src":"18057:192:20"}],"id":8915,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":8857},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8916,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8917,"name":"Identifier","src":"18279:9:20"}],"id":8918,"name":"BinaryOperation","src":"18273:15:20"}],"id":8919,"name":"Return","src":"18266:22:20"}],"id":8920,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[8922],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8955,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8921,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":8922,"name":"VariableDeclaration","src":"18376:12:20"}],"id":8923,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8922,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":8853,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":8851,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8924,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8925,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8926,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8847,"type":"uint256","value":"selflen"},"id":8927,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8928,"name":"Identifier","src":"18502:9:20"}],"id":8929,"name":"BinaryOperation","src":"18492:19:20"}],"id":8930,"name":"TupleExpression","src":"18491:21:20"}],"id":8931,"name":"BinaryOperation","src":"18481:31:20"}],"id":8932,"name":"Assignment","src":"18475:37:20"}],"id":8933,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8934,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8935,"name":"Identifier","src":"18544:7:20"}],"id":8936,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[8938],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8953,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8937,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":8938,"name":"VariableDeclaration","src":"18575:16:20"}],"id":8939,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8938,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":8859,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":8851,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8940,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8922,"type":"bytes32","value":"hash"},"id":8941,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8938,"type":"bytes32","value":"testHash"},"id":8942,"name":"Identifier","src":"18696:8:20"}],"id":8943,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":8857},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8944,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"uint256","value":"needlelen"},"id":8945,"name":"Identifier","src":"18743:9:20"}],"id":8946,"name":"BinaryOperation","src":"18737:15:20"}],"id":8947,"name":"Return","src":"18730:22:20"}],"id":8948,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8859,"type":"uint256","value":"ptr"},"id":8949,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8950,"name":"Literal","src":"18781:1:20"}],"id":8951,"name":"Assignment","src":"18774:8:20"}],"id":8952,"name":"ExpressionStatement","src":"18774:8:20"}],"id":8953,"name":"Block","src":"18553:248:20"}],"id":8954,"name":"WhileStatement","src":"18530:271:20"}],"id":8955,"name":"Block","src":"18309:506:20"}],"id":8956,"name":"IfStatement","src":"17654:1161:20"}],"id":8957,"name":"Block","src":"17640:1185:20"}],"id":8958,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":8857},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8849,"type":"uint256","value":"selfptr"},"id":8959,"name":"Identifier","src":"18841:7:20"}],"id":8960,"name":"Return","src":"18834:14:20"}],"id":8961,"name":"Block","src":"17585:1270:20"}],"id":8962,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8963,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":8964,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8965,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":8966,"name":"VariableDeclaration","src":"19224:19:20"}],"id":8967,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":8968,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":8969,"name":"VariableDeclaration","src":"19268:12:20"}],"id":8970,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[8972]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8971,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":8972,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8973,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8974,"name":"Identifier","src":"19311:4:20"}],"id":8975,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8976,"name":"Identifier","src":"19322:4:20"}],"id":8977,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8966,"type":"struct strings.slice memory","value":"needle"},"id":8978,"name":"Identifier","src":"19333:6:20"}],"id":8979,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8966,"type":"struct strings.slice memory","value":"needle"},"id":8980,"name":"Identifier","src":"19346:6:20"}],"id":8981,"name":"MemberAccess","src":"19346:11:20"}],"id":8982,"name":"FunctionCall","src":"19303:55:20"}],"id":8983,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8984,"name":"Identifier","src":"19368:4:20"}],"id":8986,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8972,"type":"uint256","value":"ptr"},"id":8987,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8988,"name":"Identifier","src":"19387:4:20"}],"id":8989,"name":"MemberAccess","src":"19387:9:20"}],"id":8990,"name":"BinaryOperation","src":"19381:15:20"}],"id":8991,"name":"Assignment","src":"19368:28:20"}],"id":8992,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8993,"name":"Identifier","src":"19406:4:20"}],"id":8995,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8972,"type":"uint256","value":"ptr"},"id":8996,"name":"Identifier","src":"19418:3:20"}],"id":8997,"name":"Assignment","src":"19406:15:20"}],"id":8998,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":8970},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8964,"type":"struct strings.slice memory","value":"self"},"id":8999,"name":"Identifier","src":"19438:4:20"}],"id":9000,"name":"Return","src":"19431:11:20"}],"id":9001,"name":"Block","src":"19282:167:20"}],"id":9002,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9036,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9003,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":9004,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9036,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9005,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":9006,"name":"VariableDeclaration","src":"19842:19:20"}],"id":9007,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9036,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9008,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":9009,"name":"VariableDeclaration","src":"19886:12:20"}],"id":9010,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[9012]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9035,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9011,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":9012,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8962,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":9013,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9014,"name":"Identifier","src":"19930:4:20"}],"id":9015,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9016,"name":"Identifier","src":"19941:4:20"}],"id":9017,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9006,"type":"struct strings.slice memory","value":"needle"},"id":9018,"name":"Identifier","src":"19952:6:20"}],"id":9019,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9006,"type":"struct strings.slice memory","value":"needle"},"id":9020,"name":"Identifier","src":"19965:6:20"}],"id":9021,"name":"MemberAccess","src":"19965:11:20"}],"id":9022,"name":"FunctionCall","src":"19921:56:20"}],"id":9023,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9024,"name":"Identifier","src":"19987:4:20"}],"id":9026,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9012,"type":"uint256","value":"ptr"},"id":9027,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9028,"name":"Identifier","src":"20005:4:20"}],"id":9029,"name":"MemberAccess","src":"20005:9:20"}],"id":9030,"name":"BinaryOperation","src":"19999:15:20"}],"id":9031,"name":"Assignment","src":"19987:27:20"}],"id":9032,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":9010},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9004,"type":"struct strings.slice memory","value":"self"},"id":9033,"name":"Identifier","src":"20031:4:20"}],"id":9034,"name":"Return","src":"20024:11:20"}],"id":9035,"name":"Block","src":"19900:142:20"}],"id":9036,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9114,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9037,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":9038,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9114,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9039,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":9040,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":9114,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9041,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":9042,"name":"VariableDeclaration","src":"20603:18:20"}],"id":9043,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9114,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9044,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":9045,"name":"VariableDeclaration","src":"20646:12:20"}],"id":9046,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[9048]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9113,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9047,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":9048,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":9049,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9050,"name":"Identifier","src":"20689:4:20"}],"id":9051,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9052,"name":"Identifier","src":"20700:4:20"}],"id":9053,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9040,"type":"struct strings.slice memory","value":"needle"},"id":9054,"name":"Identifier","src":"20711:6:20"}],"id":9055,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9040,"type":"struct strings.slice memory","value":"needle"},"id":9056,"name":"Identifier","src":"20724:6:20"}],"id":9057,"name":"MemberAccess","src":"20724:11:20"}],"id":9058,"name":"FunctionCall","src":"20681:55:20"}],"id":9059,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"struct strings.slice memory","value":"token"},"id":9060,"name":"Identifier","src":"20746:5:20"}],"id":9062,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9063,"name":"Identifier","src":"20759:4:20"}],"id":9064,"name":"MemberAccess","src":"20759:9:20"}],"id":9065,"name":"Assignment","src":"20746:22:20"}],"id":9066,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"struct strings.slice memory","value":"token"},"id":9067,"name":"Identifier","src":"20778:5:20"}],"id":9069,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9048,"type":"uint256","value":"ptr"},"id":9070,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9071,"name":"Identifier","src":"20797:4:20"}],"id":9072,"name":"MemberAccess","src":"20797:9:20"}],"id":9073,"name":"BinaryOperation","src":"20791:15:20"}],"id":9074,"name":"Assignment","src":"20778:28:20"}],"id":9075,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9048,"type":"uint256","value":"ptr"},"id":9076,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9077,"name":"Identifier","src":"20827:4:20"}],"id":9078,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9079,"name":"Identifier","src":"20839:4:20"}],"id":9080,"name":"MemberAccess","src":"20839:9:20"}],"id":9081,"name":"BinaryOperation","src":"20827:21:20"}],"id":9082,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9083,"name":"Identifier","src":"20889:4:20"}],"id":9085,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9086,"name":"Literal","src":"20901:1:20"}],"id":9087,"name":"Assignment","src":"20889:13:20"}],"id":9088,"name":"ExpressionStatement","src":"20889:13:20"}],"id":9089,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9090,"name":"Identifier","src":"20933:4:20"}],"id":9092,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"struct strings.slice memory","value":"token"},"id":9093,"name":"Identifier","src":"20946:5:20"}],"id":9094,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9040,"type":"struct strings.slice memory","value":"needle"},"id":9095,"name":"Identifier","src":"20959:6:20"}],"id":9096,"name":"MemberAccess","src":"20959:11:20"}],"id":9097,"name":"BinaryOperation","src":"20946:24:20"}],"id":9098,"name":"Assignment","src":"20933:37:20"}],"id":9099,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9038,"type":"struct strings.slice memory","value":"self"},"id":9100,"name":"Identifier","src":"20984:4:20"}],"id":9102,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9048,"type":"uint256","value":"ptr"},"id":9103,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9040,"type":"struct strings.slice memory","value":"needle"},"id":9104,"name":"Identifier","src":"21002:6:20"}],"id":9105,"name":"MemberAccess","src":"21002:11:20"}],"id":9106,"name":"BinaryOperation","src":"20996:17:20"}],"id":9107,"name":"Assignment","src":"20984:29:20"}],"id":9108,"name":"ExpressionStatement","src":"20984:29:20"}],"id":9109,"name":"Block","src":"20919:105:20"}],"id":9110,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":9046},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9042,"type":"struct strings.slice memory","value":"token"},"id":9111,"name":"Identifier","src":"21040:5:20"}],"id":9112,"name":"Return","src":"21033:12:20"}],"id":9113,"name":"Block","src":"20660:392:20"}],"id":9114,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9130,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9115,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":9116,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9130,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9117,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":9118,"name":"VariableDeclaration","src":"21557:19:20"}],"id":9119,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":9130,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9120,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":9121,"name":"VariableDeclaration","src":"21601:18:20"}],"id":9122,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[9114,9130],"referencedDeclaration":9114,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":9123,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9116,"type":"struct strings.slice memory","value":"self"},"id":9124,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9118,"type":"struct strings.slice memory","value":"needle"},"id":9125,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9121,"type":"struct strings.slice memory","value":"token"},"id":9126,"name":"Identifier","src":"21651:5:20"}],"id":9127,"name":"FunctionCall","src":"21631:26:20"}],"id":9128,"name":"ExpressionStatement","src":"21631:26:20"}],"id":9129,"name":"Block","src":"21621:43:20"}],"id":9130,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9199,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9131,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":9132,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9199,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9133,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":9134,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":9199,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9135,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":9136,"name":"VariableDeclaration","src":"22225:18:20"}],"id":9137,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9199,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9138,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":9139,"name":"VariableDeclaration","src":"22268:12:20"}],"id":9140,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[9142]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9141,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":9142,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8962,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":9143,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9144,"name":"Identifier","src":"22312:4:20"}],"id":9145,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9146,"name":"Identifier","src":"22323:4:20"}],"id":9147,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"struct strings.slice memory","value":"needle"},"id":9148,"name":"Identifier","src":"22334:6:20"}],"id":9149,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"struct strings.slice memory","value":"needle"},"id":9150,"name":"Identifier","src":"22347:6:20"}],"id":9151,"name":"MemberAccess","src":"22347:11:20"}],"id":9152,"name":"FunctionCall","src":"22303:56:20"}],"id":9153,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"struct strings.slice memory","value":"token"},"id":9154,"name":"Identifier","src":"22369:5:20"}],"id":9156,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint256","value":"ptr"},"id":9157,"name":"Identifier","src":"22382:3:20"}],"id":9158,"name":"Assignment","src":"22369:16:20"}],"id":9159,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"struct strings.slice memory","value":"token"},"id":9160,"name":"Identifier","src":"22395:5:20"}],"id":9162,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9163,"name":"Identifier","src":"22408:4:20"}],"id":9164,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint256","value":"ptr"},"id":9165,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9166,"name":"Identifier","src":"22427:4:20"}],"id":9167,"name":"MemberAccess","src":"22427:9:20"}],"id":9168,"name":"BinaryOperation","src":"22421:15:20"}],"id":9169,"name":"TupleExpression","src":"22420:17:20"}],"id":9170,"name":"BinaryOperation","src":"22408:29:20"}],"id":9171,"name":"Assignment","src":"22395:42:20"}],"id":9172,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9142,"type":"uint256","value":"ptr"},"id":9173,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9174,"name":"Identifier","src":"22458:4:20"}],"id":9175,"name":"MemberAccess","src":"22458:9:20"}],"id":9176,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9177,"name":"Identifier","src":"22508:4:20"}],"id":9179,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9180,"name":"Literal","src":"22520:1:20"}],"id":9181,"name":"Assignment","src":"22508:13:20"}],"id":9182,"name":"ExpressionStatement","src":"22508:13:20"}],"id":9183,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9132,"type":"struct strings.slice memory","value":"self"},"id":9184,"name":"Identifier","src":"22552:4:20"}],"id":9186,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"struct strings.slice memory","value":"token"},"id":9187,"name":"Identifier","src":"22565:5:20"}],"id":9188,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9134,"type":"struct strings.slice memory","value":"needle"},"id":9189,"name":"Identifier","src":"22578:6:20"}],"id":9190,"name":"MemberAccess","src":"22578:11:20"}],"id":9191,"name":"BinaryOperation","src":"22565:24:20"}],"id":9192,"name":"Assignment","src":"22552:37:20"}],"id":9193,"name":"ExpressionStatement","src":"22552:37:20"}],"id":9194,"name":"Block","src":"22538:62:20"}],"id":9195,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":9140},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9136,"type":"struct strings.slice memory","value":"token"},"id":9196,"name":"Identifier","src":"22616:5:20"}],"id":9197,"name":"Return","src":"22609:12:20"}],"id":9198,"name":"Block","src":"22282:346:20"}],"id":9199,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9215,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9200,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":9201,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9215,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9202,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":9203,"name":"VariableDeclaration","src":"23132:19:20"}],"id":9204,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":9215,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9205,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":9206,"name":"VariableDeclaration","src":"23176:18:20"}],"id":9207,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7761_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[9199,9215],"referencedDeclaration":9199,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":9208,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9201,"type":"struct strings.slice memory","value":"self"},"id":9209,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9203,"type":"struct strings.slice memory","value":"needle"},"id":9210,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9206,"type":"struct strings.slice memory","value":"token"},"id":9211,"name":"Identifier","src":"23227:5:20"}],"id":9212,"name":"FunctionCall","src":"23206:27:20"}],"id":9213,"name":"ExpressionStatement","src":"23206:27:20"}],"id":9214,"name":"Block","src":"23196:44:20"}],"id":9215,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9274,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9216,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":9217,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9274,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9218,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":9219,"name":"VariableDeclaration","src":"23543:19:20"}],"id":9220,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":9274,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9221,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":9222,"name":"VariableDeclaration","src":"23587:8:20"}],"id":9223,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[9225]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":9273,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9224,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":9225,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":9226,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9227,"name":"Identifier","src":"23626:4:20"}],"id":9228,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9229,"name":"Identifier","src":"23637:4:20"}],"id":9230,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9231,"name":"Identifier","src":"23648:6:20"}],"id":9232,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9233,"name":"Identifier","src":"23661:6:20"}],"id":9234,"name":"MemberAccess","src":"23661:11:20"}],"id":9235,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9236,"name":"Identifier","src":"23676:6:20"}],"id":9237,"name":"MemberAccess","src":"23676:11:20"}],"id":9238,"name":"BinaryOperation","src":"23618:69:20"}],"id":9239,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"ptr"},"id":9240,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9241,"name":"Identifier","src":"23711:4:20"}],"id":9242,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9243,"name":"Identifier","src":"23723:4:20"}],"id":9244,"name":"MemberAccess","src":"23723:9:20"}],"id":9245,"name":"BinaryOperation","src":"23711:21:20"}],"id":9246,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9222,"type":"uint256","value":"cnt"},"id":9247,"name":"Identifier","src":"23748:3:20"}],"id":9248,"name":"UnaryOperation","src":"23748:5:20"}],"id":9249,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"ptr"},"id":9250,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":9251,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9252,"name":"Identifier","src":"23781:4:20"}],"id":9253,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"ptr"},"id":9254,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9217,"type":"struct strings.slice memory","value":"self"},"id":9255,"name":"Identifier","src":"23800:4:20"}],"id":9256,"name":"MemberAccess","src":"23800:9:20"}],"id":9257,"name":"BinaryOperation","src":"23794:15:20"}],"id":9258,"name":"TupleExpression","src":"23793:17:20"}],"id":9259,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9225,"type":"uint256","value":"ptr"},"id":9260,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9261,"name":"Identifier","src":"23817:6:20"}],"id":9262,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9263,"name":"Identifier","src":"23830:6:20"}],"id":9264,"name":"MemberAccess","src":"23830:11:20"}],"id":9265,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9219,"type":"struct strings.slice memory","value":"needle"},"id":9266,"name":"Identifier","src":"23845:6:20"}],"id":9267,"name":"MemberAccess","src":"23845:11:20"}],"id":9268,"name":"BinaryOperation","src":"23773:83:20"}],"id":9269,"name":"Assignment","src":"23767:89:20"}],"id":9270,"name":"ExpressionStatement","src":"23767:89:20"}],"id":9271,"name":"Block","src":"23734:133:20"}],"id":9272,"name":"WhileStatement","src":"23697:170:20"}],"id":9273,"name":"Block","src":"23597:276:20"}],"id":9274,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9298,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9275,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":9276,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":9298,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9277,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":9278,"name":"VariableDeclaration","src":"24149:19:20"}],"id":9279,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9298,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9280,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":9281,"name":"VariableDeclaration","src":"24193:4:20"}],"id":9282,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":9282},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8962,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":9283,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9276,"type":"struct strings.slice memory","value":"self"},"id":9284,"name":"Identifier","src":"24225:4:20"}],"id":9285,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9276,"type":"struct strings.slice memory","value":"self"},"id":9286,"name":"Identifier","src":"24236:4:20"}],"id":9287,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9278,"type":"struct strings.slice memory","value":"needle"},"id":9288,"name":"Identifier","src":"24247:6:20"}],"id":9289,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9278,"type":"struct strings.slice memory","value":"needle"},"id":9290,"name":"Identifier","src":"24260:6:20"}],"id":9291,"name":"MemberAccess","src":"24260:11:20"}],"id":9292,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9276,"type":"struct strings.slice memory","value":"self"},"id":9293,"name":"Identifier","src":"24276:4:20"}],"id":9294,"name":"MemberAccess","src":"24276:9:20"}],"id":9295,"name":"BinaryOperation","src":"24216:69:20"}],"id":9296,"name":"Return","src":"24209:76:20"}],"id":9297,"name":"Block","src":"24199:93:20"}],"id":9298,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9344,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9299,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":9300,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":9344,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9301,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":9302,"name":"VariableDeclaration","src":"24614:18:20"}],"id":9303,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9344,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9304,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":9305,"name":"VariableDeclaration","src":"24657:13:20"}],"id":9306,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[9308]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9343,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9307,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":9308,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":9309,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":9310,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9300,"type":"struct strings.slice memory","value":"self"},"id":9311,"name":"Identifier","src":"24713:4:20"}],"id":9312,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9302,"type":"struct strings.slice memory","value":"other"},"id":9313,"name":"Identifier","src":"24725:5:20"}],"id":9314,"name":"MemberAccess","src":"24725:10:20"}],"id":9315,"name":"BinaryOperation","src":"24713:22:20"}],"id":9316,"name":"FunctionCall","src":"24702:34:20"}],"id":9317,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[9319],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":9343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9318,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":9319,"name":"VariableDeclaration","src":"24746:11:20"}],"id":9320,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":9319,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":9308,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":9321,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9322,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9319,"type":"uint256","value":"retptr"},"id":9323,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9300,"type":"struct strings.slice memory","value":"self"},"id":9324,"name":"Identifier","src":"24826:4:20"}],"id":9325,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9300,"type":"struct strings.slice memory","value":"self"},"id":9326,"name":"Identifier","src":"24837:4:20"}],"id":9327,"name":"MemberAccess","src":"24837:9:20"}],"id":9328,"name":"FunctionCall","src":"24811:36:20"}],"id":9329,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9330,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9319,"type":"uint256","value":"retptr"},"id":9331,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9300,"type":"struct strings.slice memory","value":"self"},"id":9332,"name":"Identifier","src":"24873:4:20"}],"id":9333,"name":"MemberAccess","src":"24873:9:20"}],"id":9334,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9302,"type":"struct strings.slice memory","value":"other"},"id":9335,"name":"Identifier","src":"24884:5:20"}],"id":9336,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9302,"type":"struct strings.slice memory","value":"other"},"id":9337,"name":"Identifier","src":"24896:5:20"}],"id":9338,"name":"MemberAccess","src":"24896:10:20"}],"id":9339,"name":"FunctionCall","src":"24857:50:20"}],"id":9340,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":9306},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9308,"type":"string memory","value":"ret"},"id":9341,"name":"Identifier","src":"24924:3:20"}],"id":9342,"name":"Return","src":"24917:10:20"}],"id":9343,"name":"Block","src":"24672:262:20"}],"id":9344,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":9460,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9459,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9345,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":9346,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":9459,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7761,"type":"struct strings.slice"},"id":9347,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":9348,"name":"ArrayTypeName","src":"25303:7:20"}],"id":9349,"name":"VariableDeclaration","src":"25303:20:20"}],"id":9350,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9459,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9351,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":9352,"name":"VariableDeclaration","src":"25348:13:20"}],"id":9353,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9354,"name":"Identifier","src":"25377:5:20"}],"id":9355,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9356,"name":"Literal","src":"25393:1:20"}],"id":9357,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":9353},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":9358,"name":"Literal","src":"25415:2:20"}],"id":9359,"name":"Return","src":"25408:9:20"}],"id":9360,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[9362]},"children":[{"attributes":{"constant":false,"name":"length","scope":9458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9361,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":9362,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9346,"type":"struct strings.slice memory","value":"self"},"id":9363,"name":"Identifier","src":"25442:4:20"}],"id":9364,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9365,"name":"Identifier","src":"25455:5:20"}],"id":9366,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9367,"name":"Literal","src":"25470:1:20"}],"id":9368,"name":"BinaryOperation","src":"25455:16:20"}],"id":9369,"name":"TupleExpression","src":"25454:18:20"}],"id":9370,"name":"BinaryOperation","src":"25442:30:20"}],"id":9371,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[9373]},"children":[{"attributes":{"constant":false,"name":"i","scope":9391,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9372,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":9373,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9374,"name":"Literal","src":"25496:1:20"}],"id":9375,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9373,"type":"uint256","value":"i"},"id":9376,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9377,"name":"Identifier","src":"25503:5:20"}],"id":9378,"name":"MemberAccess","src":"25503:12:20"}],"id":9379,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9373,"type":"uint256","value":"i"},"id":9380,"name":"Identifier","src":"25517:1:20"}],"id":9381,"name":"UnaryOperation","src":"25517:3:20"}],"id":9382,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9362,"type":"uint256","value":"length"},"id":9383,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9384,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9373,"type":"uint256","value":"i"},"id":9385,"name":"Identifier","src":"25552:1:20"}],"id":9386,"name":"IndexAccess","src":"25546:8:20"}],"id":9387,"name":"MemberAccess","src":"25546:13:20"}],"id":9388,"name":"Assignment","src":"25536:23:20"}],"id":9389,"name":"ExpressionStatement","src":"25536:23:20"}],"id":9390,"name":"Block","src":"25522:48:20"}],"id":9391,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[9393]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9458,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":9392,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":9393,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":9394,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":9395,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9362,"type":"uint256","value":"length"},"id":9396,"name":"Identifier","src":"25611:6:20"}],"id":9397,"name":"FunctionCall","src":"25600:18:20"}],"id":9398,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[9400],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":9458,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9399,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":9400,"name":"VariableDeclaration","src":"25628:11:20"}],"id":9401,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":9400,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":9393,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":9402,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[9404]},"children":[{"attributes":{"constant":false,"name":"i","scope":9455,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9403,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":9404,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9405,"name":"Literal","src":"25708:1:20"}],"id":9406,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9407,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9408,"name":"Identifier","src":"25715:5:20"}],"id":9409,"name":"MemberAccess","src":"25715:12:20"}],"id":9410,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9411,"name":"Identifier","src":"25729:1:20"}],"id":9412,"name":"UnaryOperation","src":"25729:3:20"}],"id":9413,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9414,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9400,"type":"uint256","value":"retptr"},"id":9415,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9416,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9417,"name":"Identifier","src":"25769:1:20"}],"id":9418,"name":"IndexAccess","src":"25763:8:20"}],"id":9419,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9420,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9421,"name":"Identifier","src":"25784:1:20"}],"id":9422,"name":"IndexAccess","src":"25778:8:20"}],"id":9423,"name":"MemberAccess","src":"25778:13:20"}],"id":9424,"name":"FunctionCall","src":"25748:44:20"}],"id":9425,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9400,"type":"uint256","value":"retptr"},"id":9426,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9427,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9428,"name":"Identifier","src":"25822:1:20"}],"id":9429,"name":"IndexAccess","src":"25816:8:20"}],"id":9430,"name":"MemberAccess","src":"25816:13:20"}],"id":9431,"name":"Assignment","src":"25806:23:20"}],"id":9432,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9404,"type":"uint256","value":"i"},"id":9433,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9349,"type":"struct strings.slice memory[] memory","value":"parts"},"id":9434,"name":"Identifier","src":"25851:5:20"}],"id":9435,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9436,"name":"Literal","src":"25866:1:20"}],"id":9437,"name":"BinaryOperation","src":"25851:16:20"}],"id":9438,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":9439,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9400,"type":"uint256","value":"retptr"},"id":9440,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7760,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9346,"type":"struct strings.slice memory","value":"self"},"id":9441,"name":"Identifier","src":"25902:4:20"}],"id":9442,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9346,"type":"struct strings.slice memory","value":"self"},"id":9443,"name":"Identifier","src":"25913:4:20"}],"id":9444,"name":"MemberAccess","src":"25913:9:20"}],"id":9445,"name":"FunctionCall","src":"25887:36:20"}],"id":9446,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9400,"type":"uint256","value":"retptr"},"id":9447,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7758,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9346,"type":"struct strings.slice memory","value":"self"},"id":9448,"name":"Identifier","src":"25951:4:20"}],"id":9449,"name":"MemberAccess","src":"25951:9:20"}],"id":9450,"name":"Assignment","src":"25941:19:20"}],"id":9451,"name":"ExpressionStatement","src":"25941:19:20"}],"id":9452,"name":"Block","src":"25869:106:20"}],"id":9453,"name":"IfStatement","src":"25843:132:20"}],"id":9454,"name":"Block","src":"25734:251:20"}],"id":9455,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":9353},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9393,"type":"string memory","value":"ret"},"id":9456,"name":"Identifier","src":"26002:3:20"}],"id":9457,"name":"Return","src":"25995:10:20"}],"id":9458,"name":"Block","src":"25363:649:20"}],"id":9459,"name":"FunctionDefinition","src":"25270:742:20"}],"id":9460,"name":"ContractDefinition","src":"2599:23415:20"}],"id":9461,"name":"SourceUnit","src":"2574:23441:20"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[3834]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3804,"name":"PragmaDirective","src":"771:24:21"},{"attributes":{"SourceUnit":3451,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3835,"symbolAliases":[null],"unitAlias":""},"id":3805,"name":"ImportDirective","src":"797:32:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[3834],"name":"Balanceable","scope":3835},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":3834,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3833,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3806,"name":"ElementaryTypeName","src":"1225:7:21"}],"id":3807,"name":"VariableDeclaration","src":"1225:16:21"},{"attributes":{"constant":false,"name":"_asset","scope":3833,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3808,"name":"ElementaryTypeName","src":"1243:7:21"}],"id":3809,"name":"VariableDeclaration","src":"1243:14:21"}],"id":3810,"name":"ParameterList","src":"1224:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":3833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3811,"name":"ElementaryTypeName","src":"1282:7:21"}],"id":3812,"name":"VariableDeclaration","src":"1282:7:21"}],"id":3813,"name":"ParameterList","src":"1281:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3809,"type":"address","value":"_asset"},"id":3814,"name":"Identifier","src":"1305:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3815,"name":"ElementaryTypeNameExpression","src":"1315:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3816,"name":"Literal","src":"1323:1:21"}],"id":3817,"name":"FunctionCall","src":"1315:10:21"}],"id":3818,"name":"BinaryOperation","src":"1305:20:21"},{"children":[{"attributes":{"functionReturnParameters":3813},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":3424,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":3819,"name":"Identifier","src":"1348:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3809,"type":"address","value":"_asset"},"id":3820,"name":"Identifier","src":"1354:6:21"}],"id":3821,"name":"FunctionCall","src":"1348:13:21"}],"id":3822,"name":"MemberAccess","src":"1348:23:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3807,"type":"address","value":"_address"},"id":3823,"name":"Identifier","src":"1372:8:21"}],"id":3824,"name":"FunctionCall","src":"1348:33:21"}],"id":3825,"name":"Return","src":"1341:40:21"}],"id":3826,"name":"Block","src":"1327:65:21"},{"children":[{"attributes":{"functionReturnParameters":3813},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3807,"type":"address","value":"_address"},"id":3827,"name":"Identifier","src":"1419:8:21"}],"id":3828,"name":"MemberAccess","src":"1419:16:21"}],"id":3829,"name":"Return","src":"1412:23:21"}],"id":3830,"name":"Block","src":"1398:48:21"}],"id":3831,"name":"IfStatement","src":"1301:145:21"}],"id":3832,"name":"Block","src":"1291:161:21"}],"id":3833,"name":"FunctionDefinition","src":"1207:245:21"}],"id":3834,"name":"ContractDefinition","src":"898:556:21"}],"id":3835,"name":"SourceUnit","src":"771:684:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[9571]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":9462,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":9572,"symbolAliases":[null],"unitAlias":""},"id":9463,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[9571],"name":"BytesUtils","scope":9572},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":9464,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":9465,"name":"ElementaryTypeName","src":"955:7:22"}],"id":9466,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":9571,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9502,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9467,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":9468,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9502,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9469,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":9470,"name":"VariableDeclaration","src":"1125:13:22"}],"id":9471,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9502,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9472,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":9473,"name":"VariableDeclaration","src":"1163:7:22"}],"id":9474,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":9475,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9468,"type":"bytes memory","value":"_bts"},"id":9476,"name":"Identifier","src":"1190:4:22"}],"id":9477,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9470,"type":"uint256","value":"_from"},"id":9478,"name":"Identifier","src":"1205:5:22"}],"id":9479,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9480,"name":"Literal","src":"1215:2:22"}],"id":9481,"name":"FunctionCall","src":"1205:13:22"}],"id":9482,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9483,"name":"Literal","src":"1220:22:22"}],"id":9484,"name":"FunctionCall","src":"1182:61:22"}],"id":9485,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[9487],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":9501,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9486,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":9487,"name":"VariableDeclaration","src":"1254:24:22"}],"id":9488,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[9490]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9501,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9489,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":9490,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9470,"type":"uint256","value":"_from"},"id":9491,"name":"Identifier","src":"1308:5:22"}],"id":9492,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9493,"name":"Literal","src":"1318:2:22"}],"id":9494,"name":"FunctionCall","src":"1308:13:22"}],"id":9495,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":9487,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":9468,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":9490,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":9496,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":9474},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9497,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9487,"type":"bytes20","value":"convertedAddress"},"id":9498,"name":"Identifier","src":"1478:16:22"}],"id":9499,"name":"FunctionCall","src":"1470:25:22"}],"id":9500,"name":"Return","src":"1463:32:22"}],"id":9501,"name":"Block","src":"1172:330:22"}],"id":9502,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":9571,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9536,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9503,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":9504,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9536,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9505,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":9506,"name":"VariableDeclaration","src":"1670:13:22"}],"id":9507,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9536,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9508,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":9509,"name":"VariableDeclaration","src":"1708:6:22"}],"id":9510,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":9511,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9504,"type":"bytes memory","value":"_bts"},"id":9512,"name":"Identifier","src":"1734:4:22"}],"id":9513,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9506,"type":"uint256","value":"_from"},"id":9514,"name":"Identifier","src":"1749:5:22"}],"id":9515,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9516,"name":"Literal","src":"1759:1:22"}],"id":9517,"name":"FunctionCall","src":"1749:12:22"}],"id":9518,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9519,"name":"Literal","src":"1763:22:22"}],"id":9520,"name":"FunctionCall","src":"1726:60:22"}],"id":9521,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[9523],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":9535,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9522,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":9523,"name":"VariableDeclaration","src":"1797:19:22"}],"id":9524,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[9526]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9535,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9525,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":9526,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9506,"type":"uint256","value":"_from"},"id":9527,"name":"Identifier","src":"1846:5:22"}],"id":9528,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9529,"name":"Literal","src":"1856:2:22"}],"id":9530,"name":"FunctionCall","src":"1846:13:22"}],"id":9531,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":9523,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":9504,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":9526,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":9532,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":9510},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9523,"type":"bytes4","value":"slicedBytes4"},"id":9533,"name":"Identifier","src":"2004:12:22"}],"id":9534,"name":"Return","src":"1997:19:22"}],"id":9535,"name":"Block","src":"1716:307:22"}],"id":9536,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":9571,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9570,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9537,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":9538,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9570,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9539,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":9540,"name":"VariableDeclaration","src":"2417:13:22"}],"id":9541,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9570,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9542,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":9543,"name":"VariableDeclaration","src":"2455:7:22"}],"id":9544,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":9545,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9538,"type":"bytes memory","value":"_bts"},"id":9546,"name":"Identifier","src":"2482:4:22"}],"id":9547,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9540,"type":"uint256","value":"_from"},"id":9548,"name":"Identifier","src":"2497:5:22"}],"id":9549,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9550,"name":"Literal","src":"2507:2:22"}],"id":9551,"name":"FunctionCall","src":"2497:13:22"}],"id":9552,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9553,"name":"Literal","src":"2512:22:22"}],"id":9554,"name":"FunctionCall","src":"2474:61:22"}],"id":9555,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[9557],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":9569,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9556,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":9557,"name":"VariableDeclaration","src":"2546:24:22"}],"id":9558,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[9560]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9569,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9559,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":9560,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9540,"type":"uint256","value":"_from"},"id":9561,"name":"Identifier","src":"2600:5:22"}],"id":9562,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9563,"name":"Literal","src":"2610:2:22"}],"id":9564,"name":"FunctionCall","src":"2600:13:22"}],"id":9565,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"_bts":{"declaration":9538,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":9560,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}},{"convertedUint256":{"declaration":9557,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":9566,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":9544},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9557,"type":"uint256","value":"convertedUint256"},"id":9567,"name":"Identifier","src":"2762:16:22"}],"id":9568,"name":"Return","src":"2755:23:22"}],"id":9569,"name":"Block","src":"2464:321:22"}],"id":9570,"name":"FunctionDefinition","src":"2373:412:22"}],"id":9571,"name":"ContractDefinition","src":"911:1876:22"}],"id":9572,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[293]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":199,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":2977,"absolutePath":"controller.sol","file":"../controller.sol","scope":294,"symbolAliases":[null],"unitAlias":""},"id":200,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":294,"symbolAliases":[null],"unitAlias":""},"id":201,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[338],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[293,338],"name":"Controllable","scope":294},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":202,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":203,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":293,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":204,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":205,"name":"Literal","src":"1122:66:23"}],"id":206,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":293,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":207,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":206,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":208,"name":"Identifier","src":"1306:24:23"}],"id":209,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":293,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":226,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":210,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":211,"name":"VariableDeclaration","src":"1571:24:23"}],"id":212,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":213,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"bytes32","value":"_controllerNode_"},"id":214,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":215,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":216,"name":"Literal","src":"1693:1:23"}],"id":217,"name":"FunctionCall","src":"1685:10:23"}],"id":218,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_controllerNode"},"id":219,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":211,"type":"bytes32","value":"_controllerNode_"},"id":220,"name":"Identifier","src":"1729:16:23"}],"id":221,"name":"Assignment","src":"1711:34:23"}],"id":222,"name":"ExpressionStatement","src":"1711:34:23"}],"id":223,"name":"Block","src":"1697:59:23"}],"id":224,"name":"IfStatement","src":"1661:95:23"}],"id":225,"name":"Block","src":"1606:156:23"}],"id":226,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":227,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":228,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":275,"type":"function (address) view returns (bool)","value":"_isController"},"id":229,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":230,"name":"Identifier","src":"1884:3:23"}],"id":231,"name":"MemberAccess","src":"1884:10:23"}],"id":232,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":233,"name":"Literal","src":"1897:28:23"}],"id":234,"name":"FunctionCall","src":"1862:64:23"}],"id":235,"name":"ExpressionStatement","src":"1862:64:23"},{"id":236,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":237,"name":"Block","src":"1852:92:23"}],"id":238,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":239,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":240,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":292,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":241,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":242,"name":"Identifier","src":"2052:3:23"}],"id":243,"name":"MemberAccess","src":"2052:10:23"}],"id":244,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":245,"name":"Literal","src":"2065:24:23"}],"id":246,"name":"FunctionCall","src":"2035:55:23"}],"id":247,"name":"ExpressionStatement","src":"2035:55:23"},{"id":248,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":249,"name":"Block","src":"2025:83:23"}],"id":250,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":293,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":251,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":258,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":252,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":253,"name":"VariableDeclaration","src":"2216:7:23"}],"id":254,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":254},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_controllerNode"},"id":255,"name":"Identifier","src":"2242:15:23"}],"id":256,"name":"Return","src":"2235:22:23"}],"id":257,"name":"Block","src":"2225:39:23"}],"id":258,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":293,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":275,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":259,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":260,"name":"VariableDeclaration","src":"2355:16:23"}],"id":261,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":275,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":262,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":263,"name":"VariableDeclaration","src":"2396:4:23"}],"id":264,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":264},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":2533,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2541,"type":"type(contract IController)","value":"IController"},"id":265,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":266,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_controllerNode"},"id":267,"name":"Identifier","src":"2443:15:23"}],"id":268,"name":"FunctionCall","src":"2431:28:23"}],"id":269,"name":"FunctionCall","src":"2419:41:23"}],"id":270,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":260,"type":"address","value":"_account"},"id":271,"name":"Identifier","src":"2474:8:23"}],"id":272,"name":"FunctionCall","src":"2419:64:23"}],"id":273,"name":"Return","src":"2412:71:23"}],"id":274,"name":"Block","src":"2402:88:23"}],"id":275,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":293,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":292,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":276,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":277,"name":"VariableDeclaration","src":"2572:16:23"}],"id":278,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":292,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":279,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":280,"name":"VariableDeclaration","src":"2613:4:23"}],"id":281,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":281},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":2540,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2541,"type":"type(contract IController)","value":"IController"},"id":282,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":283,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":209,"type":"bytes32","value":"_controllerNode"},"id":284,"name":"Identifier","src":"2660:15:23"}],"id":285,"name":"FunctionCall","src":"2648:28:23"}],"id":286,"name":"FunctionCall","src":"2636:41:23"}],"id":287,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":277,"type":"address","value":"_account"},"id":288,"name":"Identifier","src":"2686:8:23"}],"id":289,"name":"FunctionCall","src":"2636:59:23"}],"id":290,"name":"Return","src":"2629:66:23"}],"id":291,"name":"Block","src":"2619:83:23"}],"id":292,"name":"FunctionDefinition","src":"2554:148:23"}],"id":293,"name":"ContractDefinition","src":"955:1749:23"}],"id":294,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[338]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":295,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":3114,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":339,"symbolAliases":[null],"unitAlias":""},"id":296,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":3288,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":339,"symbolAliases":[null],"unitAlias":""},"id":297,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[338],"name":"ENSResolvable","scope":339},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":338,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":298,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":299,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":338,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":309,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":300,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":301,"name":"VariableDeclaration","src":"1205:16:24"}],"id":302,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":303,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"address","value":"_ensRegistry"},"id":304,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":301,"type":"address","value":"_ensReg_"},"id":305,"name":"Identifier","src":"1257:8:24"}],"id":306,"name":"Assignment","src":"1242:23:24"}],"id":307,"name":"ExpressionStatement","src":"1242:23:24"}],"id":308,"name":"Block","src":"1232:40:24"}],"id":309,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":338,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":310,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":317,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":311,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":312,"name":"VariableDeclaration","src":"1410:7:24"}],"id":313,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":313},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"address","value":"_ensRegistry"},"id":314,"name":"Identifier","src":"1436:12:24"}],"id":315,"name":"Return","src":"1429:19:24"}],"id":316,"name":"Block","src":"1419:36:24"}],"id":317,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":338,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":337,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":318,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":319,"name":"VariableDeclaration","src":"1652:13:24"}],"id":320,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":337,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":321,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":322,"name":"VariableDeclaration","src":"1690:7:24"}],"id":323,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":323},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":5010,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3287,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":324,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":3089,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3113,"type":"type(contract ENS)","value":"ENS"},"id":325,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":299,"type":"address","value":"_ensRegistry"},"id":326,"name":"Identifier","src":"1735:12:24"}],"id":327,"name":"FunctionCall","src":"1731:17:24"}],"id":328,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":319,"type":"bytes32","value":"_node"},"id":329,"name":"Identifier","src":"1758:5:24"}],"id":330,"name":"FunctionCall","src":"1731:33:24"}],"id":331,"name":"FunctionCall","src":"1716:49:24"}],"id":332,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":319,"type":"bytes32","value":"_node"},"id":333,"name":"Identifier","src":"1771:5:24"}],"id":334,"name":"FunctionCall","src":"1716:61:24"}],"id":335,"name":"Return","src":"1709:68:24"}],"id":336,"name":"Block","src":"1699:85:24"}],"id":337,"name":"FunctionDefinition","src":"1631:153:24"}],"id":338,"name":"ContractDefinition","src":"1008:778:24"}],"id":339,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[3991]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3836,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[3991],"name":"Ownable","scope":3992},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3837,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":3838,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3839,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":3840,"name":"VariableDeclaration","src":"1214:11:25"}],"id":3841,"name":"ParameterList","src":"1198:28:25"}],"id":3842,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":3846,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3843,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":3844,"name":"VariableDeclaration","src":"1254:15:25"}],"id":3845,"name":"ParameterList","src":"1253:17:25"}],"id":3846,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":3991,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3847,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":3848,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":3991,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3849,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":3850,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3991,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":3881,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3851,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":3852,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":3881,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3853,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":3854,"name":"VariableDeclaration","src":"1503:19:25"}],"id":3855,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":3856,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3857,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"address payable","value":"_account_"},"id":3858,"name":"Identifier","src":"1552:9:25"}],"id":3859,"name":"Assignment","src":"1543:18:25"}],"id":3860,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3861,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3854,"type":"bool","value":"_transferable_"},"id":3862,"name":"Identifier","src":"1589:14:25"}],"id":3863,"name":"Assignment","src":"1571:32:25"}],"id":3864,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3865,"name":"Identifier","src":"1687:15:25"}],"id":3866,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"function (address)","value":"LockedOwnership"},"id":3867,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"address payable","value":"_account_"},"id":3868,"name":"Identifier","src":"1739:9:25"}],"id":3869,"name":"FunctionCall","src":"1723:26:25"}],"id":3870,"name":"EmitStatement","src":"1718:31:25"}],"id":3871,"name":"Block","src":"1704:56:25"}],"id":3872,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3842,"type":"function (address,address)","value":"TransferredOwnership"},"id":3873,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3874,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3875,"name":"Literal","src":"1803:1:25"}],"id":3876,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3852,"type":"address payable","value":"_account_"},"id":3877,"name":"Identifier","src":"1807:9:25"}],"id":3878,"name":"FunctionCall","src":"1774:43:25"}],"id":3879,"name":"EmitStatement","src":"1769:48:25"}],"id":3880,"name":"Block","src":"1533:291:25"}],"id":3881,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3882,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3883,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3884,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":3885,"name":"Identifier","src":"1949:3:25"}],"id":3886,"name":"MemberAccess","src":"1949:10:25"}],"id":3887,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":3888,"name":"Literal","src":"1962:24:25"}],"id":3889,"name":"FunctionCall","src":"1932:55:25"}],"id":3890,"name":"ExpressionStatement","src":"1932:55:25"},{"id":3891,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":3892,"name":"Block","src":"1922:83:25"}],"id":3893,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":3991,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3938,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3894,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":3895,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":3938,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3896,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":3897,"name":"VariableDeclaration","src":"2300:18:25"}],"id":3898,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":3901,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":3899,"name":"Identifier","src":"2329:9:25"}],"id":3900,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3902,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3903,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3904,"name":"Literal","src":"2429:31:25"}],"id":3905,"name":"FunctionCall","src":"2404:57:25"}],"id":3906,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3907,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3895,"type":"address payable","value":"_account"},"id":3908,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3909,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3910,"name":"Literal","src":"2562:1:25"}],"id":3911,"name":"FunctionCall","src":"2554:10:25"}],"id":3912,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":3913,"name":"Literal","src":"2566:37:25"}],"id":3914,"name":"FunctionCall","src":"2534:70:25"}],"id":3915,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3916,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3897,"type":"bool","value":"_transferable"},"id":3917,"name":"Identifier","src":"2707:13:25"}],"id":3918,"name":"Assignment","src":"2689:31:25"}],"id":3919,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3897,"type":"bool","value":"_transferable"},"id":3920,"name":"Identifier","src":"2804:13:25"}],"id":3921,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3846,"type":"function (address)","value":"LockedOwnership"},"id":3922,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3895,"type":"address payable","value":"_account"},"id":3923,"name":"Identifier","src":"2854:8:25"}],"id":3924,"name":"FunctionCall","src":"2838:25:25"}],"id":3925,"name":"EmitStatement","src":"2833:30:25"}],"id":3926,"name":"Block","src":"2819:55:25"}],"id":3927,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3842,"type":"function (address,address)","value":"TransferredOwnership"},"id":3928,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3929,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3895,"type":"address payable","value":"_account"},"id":3930,"name":"Identifier","src":"2963:8:25"}],"id":3931,"name":"FunctionCall","src":"2934:38:25"}],"id":3932,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3933,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3895,"type":"address payable","value":"_account"},"id":3934,"name":"Identifier","src":"3041:8:25"}],"id":3935,"name":"Assignment","src":"3032:17:25"}],"id":3936,"name":"ExpressionStatement","src":"3032:17:25"}],"id":3937,"name":"Block","src":"2339:717:25"}],"id":3938,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":3991,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3939,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3946,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3940,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":3941,"name":"VariableDeclaration","src":"3222:4:25"}],"id":3942,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":3942},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3943,"name":"Identifier","src":"3245:15:25"}],"id":3944,"name":"Return","src":"3238:22:25"}],"id":3945,"name":"Block","src":"3228:39:25"}],"id":3946,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":3991,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3947,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":3950,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":3948,"name":"Identifier","src":"3581:9:25"}],"id":3949,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":3951,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3850,"type":"bool","value":"_isTransferable"},"id":3952,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3953,"name":"Literal","src":"3681:31:25"}],"id":3954,"name":"FunctionCall","src":"3656:57:25"}],"id":3955,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3956,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3957,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3958,"name":"Literal","src":"3784:1:25"}],"id":3959,"name":"FunctionCall","src":"3776:10:25"}],"id":3960,"name":"Assignment","src":"3767:19:25"}],"id":3961,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3842,"type":"function (address,address)","value":"TransferredOwnership"},"id":3962,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3963,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3964,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3965,"name":"Literal","src":"3839:1:25"}],"id":3966,"name":"FunctionCall","src":"3831:10:25"}],"id":3967,"name":"FunctionCall","src":"3802:40:25"}],"id":3968,"name":"EmitStatement","src":"3797:45:25"}],"id":3969,"name":"Block","src":"3591:258:25"}],"id":3970,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3991,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3971,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3978,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3972,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":3973,"name":"VariableDeclaration","src":"3970:15:25"}],"id":3974,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":3974},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3975,"name":"Identifier","src":"4004:6:25"}],"id":3976,"name":"Return","src":"3997:13:25"}],"id":3977,"name":"Block","src":"3987:30:25"}],"id":3978,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":3991,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3990,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3979,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":3980,"name":"VariableDeclaration","src":"4141:16:25"}],"id":3981,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3990,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3982,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":3983,"name":"VariableDeclaration","src":"4182:4:25"}],"id":3984,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":3984},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3980,"type":"address","value":"_address"},"id":3985,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3848,"type":"address payable","value":"_owner"},"id":3986,"name":"Identifier","src":"4217:6:25"}],"id":3987,"name":"BinaryOperation","src":"4205:18:25"}],"id":3988,"name":"Return","src":"4198:25:25"}],"id":3989,"name":"Block","src":"4188:42:25"}],"id":3990,"name":"FunctionDefinition","src":"4123:107:25"}],"id":3991,"name":"ContractDefinition","src":"1149:3083:25"}],"id":3992,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[4208]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3993,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":7068,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":4209,"symbolAliases":[null],"unitAlias":""},"id":3994,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":4209,"symbolAliases":[null],"unitAlias":""},"id":3995,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[338],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[4208,338],"name":"TokenWhitelistable","scope":4209},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":3996,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":3997,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":4208,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3998,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":3999,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4208,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":4009,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4000,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":4001,"name":"VariableDeclaration","src":"1292:28:26"}],"id":4002,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":4003,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4004,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4001,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":4005,"name":"Identifier","src":"1363:20:26"}],"id":4006,"name":"Assignment","src":"1341:42:26"}],"id":4007,"name":"ExpressionStatement","src":"1341:42:26"}],"id":4008,"name":"Block","src":"1331:59:26"}],"id":4009,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4010,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4017,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4011,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":4012,"name":"VariableDeclaration","src":"1567:7:26"}],"id":4013,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":4013},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4014,"name":"Identifier","src":"1593:19:26"}],"id":4015,"name":"Return","src":"1586:26:26"}],"id":4016,"name":"Block","src":"1576:43:26"}],"id":4017,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4046,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4018,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":4019,"name":"VariableDeclaration","src":"2194:10:26"}],"id":4020,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4021,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":4022,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4023,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":4024,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4025,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":4026,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4027,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":4028,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4029,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":4030,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4031,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":4032,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":4046,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4033,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":4034,"name":"VariableDeclaration","src":"2280:7:26"}],"id":4035,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":4035},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":6105,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4036,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4037,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4038,"name":"Identifier","src":"2334:19:26"}],"id":4039,"name":"FunctionCall","src":"2322:32:26"}],"id":4040,"name":"FunctionCall","src":"2306:49:26"}],"id":4041,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4019,"type":"address","value":"_a"},"id":4042,"name":"Identifier","src":"2369:2:26"}],"id":4043,"name":"FunctionCall","src":"2306:66:26"}],"id":4044,"name":"Return","src":"2299:73:26"}],"id":4045,"name":"Block","src":"2289:90:26"}],"id":4046,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4047,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":4048,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":4049,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4050,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":4051,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4052,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":4053,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4054,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":4055,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4056,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":4057,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4058,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":4059,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":4072,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4060,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":4061,"name":"VariableDeclaration","src":"2991:7:26"}],"id":4062,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":4062},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":6122,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4063,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4064,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4065,"name":"Identifier","src":"3045:19:26"}],"id":4066,"name":"FunctionCall","src":"3033:32:26"}],"id":4067,"name":"FunctionCall","src":"3017:49:26"}],"id":4068,"name":"MemberAccess","src":"3017:67:26"}],"id":4069,"name":"FunctionCall","src":"3017:69:26"}],"id":4070,"name":"Return","src":"3010:76:26"}],"id":4071,"name":"Block","src":"3000:93:26"}],"id":4072,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4073,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4087,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4074,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":4075,"name":"ArrayTypeName","src":"3273:9:26"}],"id":4076,"name":"VariableDeclaration","src":"3273:16:26"}],"id":4077,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":4077},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":6128,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4078,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4079,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4080,"name":"Identifier","src":"3336:19:26"}],"id":4081,"name":"FunctionCall","src":"3324:32:26"}],"id":4082,"name":"FunctionCall","src":"3308:49:26"}],"id":4083,"name":"MemberAccess","src":"3308:67:26"}],"id":4084,"name":"FunctionCall","src":"3308:69:26"}],"id":4085,"name":"Return","src":"3301:76:26"}],"id":4086,"name":"Block","src":"3291:93:26"}],"id":4087,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4088,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4102,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4089,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":4090,"name":"ArrayTypeName","src":"3563:9:26"}],"id":4091,"name":"VariableDeclaration","src":"3563:16:26"}],"id":4092,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":4092},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":6134,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4093,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4094,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4095,"name":"Identifier","src":"3626:19:26"}],"id":4096,"name":"FunctionCall","src":"3614:32:26"}],"id":4097,"name":"FunctionCall","src":"3598:49:26"}],"id":4098,"name":"MemberAccess","src":"3598:66:26"}],"id":4099,"name":"FunctionCall","src":"3598:68:26"}],"id":4100,"name":"Return","src":"3591:75:26"}],"id":4101,"name":"Block","src":"3581:92:26"}],"id":4102,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":4208,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":4123,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4103,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":4104,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":4123,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4105,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":4106,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":4123,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4107,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":4108,"name":"VariableDeclaration","src":"4007:19:26"}],"id":4109,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":4110,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":6166,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4111,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4112,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4113,"name":"Identifier","src":"4075:19:26"}],"id":4114,"name":"FunctionCall","src":"4063:32:26"}],"id":4115,"name":"FunctionCall","src":"4047:49:26"}],"id":4116,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4104,"type":"address","value":"_token"},"id":4117,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4106,"type":"uint256","value":"_rate"},"id":4118,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4108,"type":"uint256","value":"_updateDate"},"id":4119,"name":"Identifier","src":"4128:11:26"}],"id":4120,"name":"FunctionCall","src":"4047:93:26"}],"id":4121,"name":"ExpressionStatement","src":"4047:93:26"}],"id":4122,"name":"Block","src":"4037:110:26"}],"id":4123,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":4145,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4124,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":4125,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":4145,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4126,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":4127,"name":"VariableDeclaration","src":"4364:18:26"}],"id":4128,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4145,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4129,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":4130,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":4145,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4131,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":4132,"name":"VariableDeclaration","src":"4416:7:26"}],"id":4133,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":4133},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":6152,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4134,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4135,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4136,"name":"Identifier","src":"4470:19:26"}],"id":4137,"name":"FunctionCall","src":"4458:32:26"}],"id":4138,"name":"FunctionCall","src":"4442:49:26"}],"id":4139,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4125,"type":"address","value":"_destination"},"id":4140,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4127,"type":"bytes memory","value":"_data"},"id":4141,"name":"Identifier","src":"4533:5:26"}],"id":4142,"name":"FunctionCall","src":"4442:97:26"}],"id":4143,"name":"Return","src":"4435:104:26"}],"id":4144,"name":"Block","src":"4425:121:26"}],"id":4145,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4161,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4146,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":4147,"name":"VariableDeclaration","src":"4671:10:26"}],"id":4148,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4161,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4149,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":4150,"name":"VariableDeclaration","src":"4706:4:26"}],"id":4151,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,4153,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":4160,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4152,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":4153,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4154,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4147,"type":"address","value":"_a"},"id":4155,"name":"Identifier","src":"4767:2:26"}],"id":4156,"name":"FunctionCall","src":"4753:17:26"}],"id":4157,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":4151},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4153,"type":"bool","value":"available"},"id":4158,"name":"Identifier","src":"4787:9:26"}],"id":4159,"name":"Return","src":"4780:16:26"}],"id":4160,"name":"Block","src":"4712:91:26"}],"id":4161,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4177,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4162,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":4163,"name":"VariableDeclaration","src":"4931:10:26"}],"id":4164,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4177,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4165,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":4166,"name":"VariableDeclaration","src":"4966:4:26"}],"id":4167,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,4169,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":4176,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4168,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":4169,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4170,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4163,"type":"address","value":"_a"},"id":4171,"name":"Identifier","src":"5028:2:26"}],"id":4172,"name":"FunctionCall","src":"5014:17:26"}],"id":4173,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":4167},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4169,"type":"bool","value":"redeemable"},"id":4174,"name":"Identifier","src":"5048:10:26"}],"id":4175,"name":"Return","src":"5041:17:26"}],"id":4176,"name":"Block","src":"4972:93:26"}],"id":4177,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4193,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4178,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":4179,"name":"VariableDeclaration","src":"5187:10:26"}],"id":4180,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4193,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4181,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":4182,"name":"VariableDeclaration","src":"5222:4:26"}],"id":4183,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,4185,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":4192,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4184,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":4185,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4186,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4179,"type":"address","value":"_a"},"id":4187,"name":"Identifier","src":"5282:2:26"}],"id":4188,"name":"FunctionCall","src":"5268:17:26"}],"id":4189,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":4183},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4185,"type":"bool","value":"loadable"},"id":4190,"name":"Identifier","src":"5302:8:26"}],"id":4191,"name":"Return","src":"5295:15:26"}],"id":4192,"name":"Block","src":"5228:89:26"}],"id":4193,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":4208,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4194,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4207,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4195,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":4196,"name":"VariableDeclaration","src":"5482:7:26"}],"id":4197,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":4197},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":6157,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6167,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4198,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4199,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3999,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4200,"name":"Identifier","src":"5536:19:26"}],"id":4201,"name":"FunctionCall","src":"5524:32:26"}],"id":4202,"name":"FunctionCall","src":"5508:49:26"}],"id":4203,"name":"MemberAccess","src":"5508:60:26"}],"id":4204,"name":"FunctionCall","src":"5508:62:26"}],"id":4205,"name":"Return","src":"5501:69:26"}],"id":4206,"name":"Block","src":"5491:86:26"}],"id":4207,"name":"FunctionDefinition","src":"5436:141:26"}],"id":4208,"name":"ContractDefinition","src":"958:4621:26"}],"id":4209,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[4248]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4210,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":3451,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":4249,"symbolAliases":[null],"unitAlias":""},"id":4211,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":3670,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":4249,"symbolAliases":[null],"unitAlias":""},"id":4212,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[4248],"name":"Transferrable","scope":4249},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3669,"type":"library SafeERC20"},"id":4213,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":4214,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":4215,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":4248,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4247,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4216,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":4217,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":4247,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4218,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":4219,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":4247,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4220,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":4221,"name":"VariableDeclaration","src":"1426:15:27"}],"id":4222,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":4223,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4219,"type":"address","value":"_asset"},"id":4224,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4225,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4226,"name":"Literal","src":"1528:1:27"}],"id":4227,"name":"FunctionCall","src":"1520:10:27"}],"id":4228,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4217,"type":"address payable","value":"_to"},"id":4229,"name":"Identifier","src":"1546:3:27"}],"id":4231,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4221,"type":"uint256","value":"_amount"},"id":4232,"name":"Identifier","src":"1559:7:27"}],"id":4233,"name":"FunctionCall","src":"1546:21:27"}],"id":4234,"name":"ExpressionStatement","src":"1546:21:27"}],"id":4235,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":3483,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":4236,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4219,"type":"address","value":"_asset"},"id":4237,"name":"Identifier","src":"1604:6:27"}],"id":4238,"name":"FunctionCall","src":"1598:13:27"}],"id":4239,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4217,"type":"address payable","value":"_to"},"id":4240,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4221,"type":"uint256","value":"_amount"},"id":4241,"name":"Identifier","src":"1630:7:27"}],"id":4242,"name":"FunctionCall","src":"1598:40:27"}],"id":4243,"name":"ExpressionStatement","src":"1598:40:27"}],"id":4244,"name":"Block","src":"1584:65:27"}],"id":4245,"name":"IfStatement","src":"1506:143:27"}],"id":4246,"name":"Block","src":"1452:203:27"}],"id":4247,"name":"FunctionDefinition","src":"1366:289:27"}],"id":4248,"name":"ContractDefinition","src":"961:696:27"}],"id":4249,"name":"SourceUnit","src":"773:885:27"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[4268],"Licence":[4792]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4250,"name":"PragmaDirective","src":"767:24:28"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4251,"name":"ImportDirective","src":"793:34:28"},{"attributes":{"SourceUnit":3670,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4252,"name":"ImportDirective","src":"828:35:28"},{"attributes":{"SourceUnit":294,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4253,"name":"ImportDirective","src":"864:38:28"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4254,"name":"ImportDirective","src":"903:39:28"},{"attributes":{"SourceUnit":4249,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":4793,"symbolAliases":[null],"unitAlias":""},"id":4255,"name":"ImportDirective","src":"943:39:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[4268],"name":"ILicence","scope":4793},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":4268,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4262,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4256,"name":"ElementaryTypeName","src":"1125:7:28"}],"id":4257,"name":"VariableDeclaration","src":"1125:7:28"},{"attributes":{"constant":false,"name":"","scope":4262,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4258,"name":"ElementaryTypeName","src":"1134:7:28"}],"id":4259,"name":"VariableDeclaration","src":"1134:7:28"}],"id":4260,"name":"ParameterList","src":"1124:18:28"},{"attributes":{"parameters":[null]},"children":[],"id":4261,"name":"ParameterList","src":"1159:0:28"}],"id":4262,"name":"FunctionDefinition","src":"1111:49:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":4268,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4267,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4263,"name":"ElementaryTypeName","src":"1195:7:28"}],"id":4264,"name":"VariableDeclaration","src":"1195:7:28"}],"id":4265,"name":"ParameterList","src":"1194:9:28"},{"attributes":{"parameters":[null]},"children":[],"id":4266,"name":"ParameterList","src":"1212:0:28"}],"id":4267,"name":"FunctionDefinition","src":"1166:47:28"}],"id":4268,"name":"ContractDefinition","src":"1086:129:28"},{"attributes":{"contractDependencies":[293,338,4248],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[4792,293,338,4248],"name":"Licence","scope":4793},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4248,"type":"contract Transferrable"},"id":4269,"name":"UserDefinedTypeName","src":"1401:13:28"}],"id":4270,"name":"InheritanceSpecifier","src":"1401:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":4271,"name":"UserDefinedTypeName","src":"1416:13:28"}],"id":4272,"name":"InheritanceSpecifier","src":"1416:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":293,"type":"contract Controllable"},"id":4273,"name":"UserDefinedTypeName","src":"1431:12:28"}],"id":4274,"name":"InheritanceSpecifier","src":"1431:12:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":4275,"name":"UserDefinedTypeName","src":"1456:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":4276,"name":"ElementaryTypeName","src":"1469:7:28"}],"id":4277,"name":"UsingForDirective","src":"1450:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3669,"type":"library SafeERC20"},"id":4278,"name":"UserDefinedTypeName","src":"1488:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":4279,"name":"UserDefinedTypeName","src":"1502:5:28"}],"id":4280,"name":"UsingForDirective","src":"1482:26:28"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":4284,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4281,"name":"ElementaryTypeName","src":"1614:7:28"}],"id":4282,"name":"VariableDeclaration","src":"1614:15:28"}],"id":4283,"name":"ParameterList","src":"1613:17:28"}],"id":4284,"name":"EventDefinition","src":"1590:41:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":4288,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4285,"name":"ElementaryTypeName","src":"1661:7:28"}],"id":4286,"name":"VariableDeclaration","src":"1661:17:28"}],"id":4287,"name":"ParameterList","src":"1660:19:28"}],"id":4288,"name":"EventDefinition","src":"1636:44:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":4292,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4289,"name":"ElementaryTypeName","src":"1710:7:28"}],"id":4290,"name":"VariableDeclaration","src":"1710:18:28"}],"id":4291,"name":"ParameterList","src":"1709:20:28"}],"id":4292,"name":"EventDefinition","src":"1685:45:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":4296,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4293,"name":"ElementaryTypeName","src":"1767:7:28"}],"id":4294,"name":"VariableDeclaration","src":"1767:15:28"}],"id":4295,"name":"ParameterList","src":"1766:17:28"}],"id":4296,"name":"EventDefinition","src":"1735:49:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":4300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4297,"name":"ElementaryTypeName","src":"1816:7:28"}],"id":4298,"name":"VariableDeclaration","src":"1816:18:28"}],"id":4299,"name":"ParameterList","src":"1815:20:28"}],"id":4300,"name":"EventDefinition","src":"1789:47:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":4310,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4301,"name":"ElementaryTypeName","src":"1873:7:28"}],"id":4302,"name":"VariableDeclaration","src":"1873:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4310,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4303,"name":"ElementaryTypeName","src":"1888:7:28"}],"id":4304,"name":"VariableDeclaration","src":"1888:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4310,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4305,"name":"ElementaryTypeName","src":"1901:7:28"}],"id":4306,"name":"VariableDeclaration","src":"1901:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4310,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4307,"name":"ElementaryTypeName","src":"1917:7:28"}],"id":4308,"name":"VariableDeclaration","src":"1917:15:28"}],"id":4309,"name":"ParameterList","src":"1872:61:28"}],"id":4310,"name":"EventDefinition","src":"1842:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":4320,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4311,"name":"ElementaryTypeName","src":"1970:7:28"}],"id":4312,"name":"VariableDeclaration","src":"1970:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4320,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4313,"name":"ElementaryTypeName","src":"1985:7:28"}],"id":4314,"name":"VariableDeclaration","src":"1985:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4320,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4315,"name":"ElementaryTypeName","src":"1998:7:28"}],"id":4316,"name":"VariableDeclaration","src":"1998:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4320,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4317,"name":"ElementaryTypeName","src":"2014:7:28"}],"id":4318,"name":"VariableDeclaration","src":"2014:15:28"}],"id":4319,"name":"ParameterList","src":"1969:61:28"}],"id":4320,"name":"EventDefinition","src":"1939:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4328,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4321,"name":"ElementaryTypeName","src":"2051:7:28"}],"id":4322,"name":"VariableDeclaration","src":"2051:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4328,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4323,"name":"ElementaryTypeName","src":"2064:7:28"}],"id":4324,"name":"VariableDeclaration","src":"2064:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4328,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4325,"name":"ElementaryTypeName","src":"2080:7:28"}],"id":4326,"name":"VariableDeclaration","src":"2080:15:28"}],"id":4327,"name":"ParameterList","src":"2050:46:28"}],"id":4328,"name":"EventDefinition","src":"2037:60:28"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":4792,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4329,"name":"ElementaryTypeName","src":"2209:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":4330,"name":"Literal","src":"2252:4:28"}],"id":4331,"name":"VariableDeclaration","src":"2209:47:28"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":4792,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4332,"name":"ElementaryTypeName","src":"2262:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4333,"name":"Literal","src":"2305:1:28"}],"id":4334,"name":"VariableDeclaration","src":"2262:44:28"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":4792,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4335,"name":"ElementaryTypeName","src":"2313:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":4336,"name":"Literal","src":"2351:42:28"}],"id":4337,"name":"VariableDeclaration","src":"2313:80:28"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":4792,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4338,"name":"ElementaryTypeName","src":"2433:15:28"}],"id":4339,"name":"VariableDeclaration","src":"2433:36:28"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":4792,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4340,"name":"ElementaryTypeName","src":"2475:15:28"}],"id":4341,"name":"VariableDeclaration","src":"2475:36:28"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":4792,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4342,"name":"ElementaryTypeName","src":"2517:7:28"}],"id":4343,"name":"VariableDeclaration","src":"2517:27:28"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":4792,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4344,"name":"ElementaryTypeName","src":"2551:4:28"}],"id":4345,"name":"VariableDeclaration","src":"2551:31:28"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":4792,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4346,"name":"ElementaryTypeName","src":"2588:4:28"}],"id":4347,"name":"VariableDeclaration","src":"2588:31:28"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":4792,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4348,"name":"ElementaryTypeName","src":"2625:4:28"}],"id":4349,"name":"VariableDeclaration","src":"2625:30:28"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":4792,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4350,"name":"ElementaryTypeName","src":"2661:4:28"}],"id":4351,"name":"VariableDeclaration","src":"2661:38:28"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":4792,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4352,"name":"ElementaryTypeName","src":"2853:7:28"}],"id":4353,"name":"VariableDeclaration","src":"2853:36:28"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4354,"name":"ParameterList","src":"2990:2:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4355,"name":"Identifier","src":"3003:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4356,"name":"Identifier","src":"3011:3:28"}],"id":4357,"name":"MemberAccess","src":"3011:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4343,"type":"address","value":"_licenceDAO"},"id":4358,"name":"Identifier","src":"3025:11:28"}],"id":4359,"name":"BinaryOperation","src":"3011:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":4360,"name":"Literal","src":"3038:26:28"}],"id":4361,"name":"FunctionCall","src":"3003:62:28"}],"id":4362,"name":"ExpressionStatement","src":"3003:62:28"},{"id":4363,"name":"PlaceholderStatement","src":"3075:1:28"}],"id":4364,"name":"Block","src":"2993:90:28"}],"id":4365,"name":"ModifierDefinition","src":"2974:109:28"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4366,"name":"ElementaryTypeName","src":"3628:7:28"}],"id":4367,"name":"VariableDeclaration","src":"3628:17:28"},{"attributes":{"constant":false,"name":"_float_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4368,"name":"ElementaryTypeName","src":"3647:15:28"}],"id":4369,"name":"VariableDeclaration","src":"3647:23:28"},{"attributes":{"constant":false,"name":"_holder_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4370,"name":"ElementaryTypeName","src":"3672:15:28"}],"id":4371,"name":"VariableDeclaration","src":"3672:24:28"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4372,"name":"ElementaryTypeName","src":"3698:7:28"}],"id":4373,"name":"VariableDeclaration","src":"3698:20:28"},{"attributes":{"constant":false,"name":"_ens_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4374,"name":"ElementaryTypeName","src":"3720:7:28"}],"id":4375,"name":"VariableDeclaration","src":"3720:13:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":4421,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4376,"name":"ElementaryTypeName","src":"3735:7:28"}],"id":4377,"name":"VariableDeclaration","src":"3735:24:28"}],"id":4378,"name":"ParameterList","src":"3627:133:28"},{"attributes":{"parameters":[null]},"children":[],"id":4385,"name":"ParameterList","src":"3848:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":338,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":4379,"name":"Identifier","src":"3784:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4375,"type":"address","value":"_ens_"},"id":4380,"name":"Identifier","src":"3798:5:28"}],"id":4381,"name":"ModifierInvocation","src":"3784:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"type(contract Controllable)","value":"Controllable"},"id":4382,"name":"Identifier","src":"3813:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4377,"type":"bytes32","value":"_controllerNode_"},"id":4383,"name":"Identifier","src":"3826:16:28"}],"id":4384,"name":"ModifierInvocation","src":"3813:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4386,"name":"Identifier","src":"3858:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4334,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":4387,"name":"Identifier","src":"3866:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4367,"type":"uint256","value":"_licence_"},"id":4388,"name":"Identifier","src":"3886:9:28"}],"id":4389,"name":"BinaryOperation","src":"3866:29:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4367,"type":"uint256","value":"_licence_"},"id":4390,"name":"Identifier","src":"3899:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4331,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4391,"name":"Identifier","src":"3912:16:28"}],"id":4392,"name":"BinaryOperation","src":"3899:29:28"}],"id":4393,"name":"BinaryOperation","src":"3866:62:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":4394,"name":"Literal","src":"3930:29:28"}],"id":4395,"name":"FunctionCall","src":"3858:102:28"}],"id":4396,"name":"ExpressionStatement","src":"3858:102:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"uint256","value":"_licenceAmountScaled"},"id":4397,"name":"Identifier","src":"3970:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4367,"type":"uint256","value":"_licence_"},"id":4398,"name":"Identifier","src":"3993:9:28"}],"id":4399,"name":"Assignment","src":"3970:32:28"}],"id":4400,"name":"ExpressionStatement","src":"3970:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4401,"name":"Identifier","src":"4012:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4369,"type":"address payable","value":"_float_"},"id":4402,"name":"Identifier","src":"4027:7:28"}],"id":4403,"name":"Assignment","src":"4012:22:28"}],"id":4404,"name":"ExpressionStatement","src":"4012:22:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4405,"name":"Identifier","src":"4044:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4371,"type":"address payable","value":"_holder_"},"id":4406,"name":"Identifier","src":"4059:8:28"}],"id":4407,"name":"Assignment","src":"4044:23:28"}],"id":4408,"name":"ExpressionStatement","src":"4044:23:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4373,"type":"address","value":"_tknAddress_"},"id":4409,"name":"Identifier","src":"4081:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4410,"name":"ElementaryTypeNameExpression","src":"4097:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4411,"name":"Literal","src":"4105:1:28"}],"id":4412,"name":"FunctionCall","src":"4097:10:28"}],"id":4413,"name":"BinaryOperation","src":"4081:26:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"address","value":"_tknContractAddress"},"id":4414,"name":"Identifier","src":"4123:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4373,"type":"address","value":"_tknAddress_"},"id":4415,"name":"Identifier","src":"4145:12:28"}],"id":4416,"name":"Assignment","src":"4123:34:28"}],"id":4417,"name":"ExpressionStatement","src":"4123:34:28"}],"id":4418,"name":"Block","src":"4109:59:28"}],"id":4419,"name":"IfStatement","src":"4077:91:28"}],"id":4420,"name":"Block","src":"3848:326:28"}],"id":4421,"name":"FunctionDefinition","src":"3616:558:28"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":4792,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4422,"name":"ParameterList","src":"4290:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4423,"name":"ParameterList","src":"4310:0:28"},{"attributes":{"statements":[null]},"children":[],"id":4424,"name":"Block","src":"4310:2:28"}],"id":4425,"name":"FunctionDefinition","src":"4282:30:28"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4426,"name":"ParameterList","src":"4503:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4433,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4427,"name":"ElementaryTypeName","src":"4529:7:28"}],"id":4428,"name":"VariableDeclaration","src":"4529:7:28"}],"id":4429,"name":"ParameterList","src":"4528:9:28"},{"children":[{"attributes":{"functionReturnParameters":4429},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"uint256","value":"_licenceAmountScaled"},"id":4430,"name":"Identifier","src":"4555:20:28"}],"id":4431,"name":"Return","src":"4548:27:28"}],"id":4432,"name":"Block","src":"4538:44:28"}],"id":4433,"name":"FunctionDefinition","src":"4475:107:28"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4434,"name":"ParameterList","src":"4749:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4441,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4435,"name":"ElementaryTypeName","src":"4775:7:28"}],"id":4436,"name":"VariableDeclaration","src":"4775:7:28"}],"id":4437,"name":"ParameterList","src":"4774:9:28"},{"children":[{"attributes":{"functionReturnParameters":4437},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4438,"name":"Identifier","src":"4801:12:28"}],"id":4439,"name":"Return","src":"4794:19:28"}],"id":4440,"name":"Block","src":"4784:36:28"}],"id":4441,"name":"FunctionDefinition","src":"4729:91:28"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4442,"name":"ParameterList","src":"4970:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4449,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4443,"name":"ElementaryTypeName","src":"4996:7:28"}],"id":4444,"name":"VariableDeclaration","src":"4996:7:28"}],"id":4445,"name":"ParameterList","src":"4995:9:28"},{"children":[{"attributes":{"functionReturnParameters":4445},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4446,"name":"Identifier","src":"5022:12:28"}],"id":4447,"name":"Return","src":"5015:19:28"}],"id":4448,"name":"Block","src":"5005:36:28"}],"id":4449,"name":"FunctionDefinition","src":"4950:91:28"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4450,"name":"ParameterList","src":"5172:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4457,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4451,"name":"ElementaryTypeName","src":"5198:7:28"}],"id":4452,"name":"VariableDeclaration","src":"5198:7:28"}],"id":4453,"name":"ParameterList","src":"5197:9:28"},{"children":[{"attributes":{"functionReturnParameters":4453},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4343,"type":"address","value":"_licenceDAO"},"id":4454,"name":"Identifier","src":"5224:11:28"}],"id":4455,"name":"Return","src":"5217:18:28"}],"id":4456,"name":"Block","src":"5207:35:28"}],"id":4457,"name":"FunctionDefinition","src":"5153:89:28"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4458,"name":"ParameterList","src":"5369:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4465,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4459,"name":"ElementaryTypeName","src":"5395:7:28"}],"id":4460,"name":"VariableDeclaration","src":"5395:7:28"}],"id":4461,"name":"ParameterList","src":"5394:9:28"},{"children":[{"attributes":{"functionReturnParameters":4461},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"address","value":"_tknContractAddress"},"id":4462,"name":"Identifier","src":"5421:19:28"}],"id":4463,"name":"Return","src":"5414:26:28"}],"id":4464,"name":"Block","src":"5404:43:28"}],"id":4465,"name":"FunctionDefinition","src":"5342:105:28"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4466,"name":"ParameterList","src":"5571:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4469,"name":"ParameterList","src":"5593:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4467,"name":"Identifier","src":"5583:9:28"}],"id":4468,"name":"ModifierInvocation","src":"5583:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"bool","value":"_lockedCryptoFloat"},"id":4470,"name":"Identifier","src":"5603:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4471,"name":"Literal","src":"5624:4:28"}],"id":4472,"name":"Assignment","src":"5603:25:28"}],"id":4473,"name":"ExpressionStatement","src":"5603:25:28"}],"id":4474,"name":"Block","src":"5593:42:28"}],"id":4475,"name":"FunctionDefinition","src":"5553:82:28"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4476,"name":"ParameterList","src":"5760:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4479,"name":"ParameterList","src":"5782:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4477,"name":"Identifier","src":"5772:9:28"}],"id":4478,"name":"ModifierInvocation","src":"5772:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"bool","value":"_lockedTokenHolder"},"id":4480,"name":"Identifier","src":"5792:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4481,"name":"Literal","src":"5813:4:28"}],"id":4482,"name":"Assignment","src":"5792:25:28"}],"id":4483,"name":"ExpressionStatement","src":"5792:25:28"}],"id":4484,"name":"Block","src":"5782:42:28"}],"id":4485,"name":"FunctionDefinition","src":"5741:83:28"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4486,"name":"ParameterList","src":"5945:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4489,"name":"ParameterList","src":"5967:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4487,"name":"Identifier","src":"5957:9:28"}],"id":4488,"name":"ModifierInvocation","src":"5957:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4349,"type":"bool","value":"_lockedLicenceDAO"},"id":4490,"name":"Identifier","src":"5977:17:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4491,"name":"Literal","src":"5997:4:28"}],"id":4492,"name":"Assignment","src":"5977:24:28"}],"id":4493,"name":"ExpressionStatement","src":"5977:24:28"}],"id":4494,"name":"Block","src":"5967:41:28"}],"id":4495,"name":"FunctionDefinition","src":"5922:86:28"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4496,"name":"ParameterList","src":"6137:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4499,"name":"ParameterList","src":"6159:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4497,"name":"Identifier","src":"6149:9:28"}],"id":4498,"name":"ModifierInvocation","src":"6149:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4351,"type":"bool","value":"_lockedTKNContractAddress"},"id":4500,"name":"Identifier","src":"6169:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4501,"name":"Literal","src":"6197:4:28"}],"id":4502,"name":"Assignment","src":"6169:32:28"}],"id":4503,"name":"ExpressionStatement","src":"6169:32:28"}],"id":4504,"name":"Block","src":"6159:49:28"}],"id":4505,"name":"FunctionDefinition","src":"6106:102:28"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":4528,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4506,"name":"ElementaryTypeName","src":"6359:15:28"}],"id":4507,"name":"VariableDeclaration","src":"6359:25:28"}],"id":4508,"name":"ParameterList","src":"6358:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":4511,"name":"ParameterList","src":"6405:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4509,"name":"Identifier","src":"6395:9:28"}],"id":4510,"name":"ModifierInvocation","src":"6395:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4512,"name":"Identifier","src":"6415:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4767,"type":"function () view returns (bool)","value":"floatLocked"},"id":4513,"name":"Identifier","src":"6424:11:28"}],"id":4514,"name":"FunctionCall","src":"6424:13:28"}],"id":4515,"name":"UnaryOperation","src":"6423:14:28"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":4516,"name":"Literal","src":"6439:17:28"}],"id":4517,"name":"FunctionCall","src":"6415:42:28"}],"id":4518,"name":"ExpressionStatement","src":"6415:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4519,"name":"Identifier","src":"6467:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4507,"type":"address payable","value":"_newFloat"},"id":4520,"name":"Identifier","src":"6482:9:28"}],"id":4521,"name":"Assignment","src":"6467:24:28"}],"id":4522,"name":"ExpressionStatement","src":"6467:24:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4288,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":4523,"name":"Identifier","src":"6506:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4507,"type":"address payable","value":"_newFloat"},"id":4524,"name":"Identifier","src":"6525:9:28"}],"id":4525,"name":"FunctionCall","src":"6506:29:28"}],"id":4526,"name":"EmitStatement","src":"6501:34:28"}],"id":4527,"name":"Block","src":"6405:137:28"}],"id":4528,"name":"FunctionDefinition","src":"6338:204:28"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":4551,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4529,"name":"ElementaryTypeName","src":"6700:15:28"}],"id":4530,"name":"VariableDeclaration","src":"6700:26:28"}],"id":4531,"name":"ParameterList","src":"6699:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":4534,"name":"ParameterList","src":"6747:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4532,"name":"Identifier","src":"6737:9:28"}],"id":4533,"name":"ModifierInvocation","src":"6737:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4535,"name":"Identifier","src":"6757:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4775,"type":"function () view returns (bool)","value":"holderLocked"},"id":4536,"name":"Identifier","src":"6766:12:28"}],"id":4537,"name":"FunctionCall","src":"6766:14:28"}],"id":4538,"name":"UnaryOperation","src":"6765:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":4539,"name":"Literal","src":"6782:27:28"}],"id":4540,"name":"FunctionCall","src":"6757:53:28"}],"id":4541,"name":"ExpressionStatement","src":"6757:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4542,"name":"Identifier","src":"6820:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4530,"type":"address payable","value":"_newHolder"},"id":4543,"name":"Identifier","src":"6835:10:28"}],"id":4544,"name":"Assignment","src":"6820:25:28"}],"id":4545,"name":"ExpressionStatement","src":"6820:25:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4292,"type":"function (address)","value":"UpdatedTokenHolder"},"id":4546,"name":"Identifier","src":"6860:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4530,"type":"address payable","value":"_newHolder"},"id":4547,"name":"Identifier","src":"6879:10:28"}],"id":4548,"name":"FunctionCall","src":"6860:30:28"}],"id":4549,"name":"EmitStatement","src":"6855:35:28"}],"id":4550,"name":"Block","src":"6747:150:28"}],"id":4551,"name":"FunctionDefinition","src":"6678:219:28"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":4574,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4552,"name":"ElementaryTypeName","src":"7053:7:28"}],"id":4553,"name":"VariableDeclaration","src":"7053:15:28"}],"id":4554,"name":"ParameterList","src":"7052:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":4557,"name":"ParameterList","src":"7089:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4555,"name":"Identifier","src":"7079:9:28"}],"id":4556,"name":"ModifierInvocation","src":"7079:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4558,"name":"Identifier","src":"7099:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4783,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":4559,"name":"Identifier","src":"7108:16:28"}],"id":4560,"name":"FunctionCall","src":"7108:18:28"}],"id":4561,"name":"UnaryOperation","src":"7107:19:28"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":4562,"name":"Literal","src":"7128:15:28"}],"id":4563,"name":"FunctionCall","src":"7099:45:28"}],"id":4564,"name":"ExpressionStatement","src":"7099:45:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4343,"type":"address","value":"_licenceDAO"},"id":4565,"name":"Identifier","src":"7154:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"address","value":"_newDAO"},"id":4566,"name":"Identifier","src":"7168:7:28"}],"id":4567,"name":"Assignment","src":"7154:21:28"}],"id":4568,"name":"ExpressionStatement","src":"7154:21:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4284,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":4569,"name":"Identifier","src":"7190:17:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4553,"type":"address","value":"_newDAO"},"id":4570,"name":"Identifier","src":"7208:7:28"}],"id":4571,"name":"FunctionCall","src":"7190:26:28"}],"id":4572,"name":"EmitStatement","src":"7185:31:28"}],"id":4573,"name":"Block","src":"7089:134:28"}],"id":4574,"name":"FunctionDefinition","src":"7027:196:28"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":4597,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4575,"name":"ElementaryTypeName","src":"7388:7:28"}],"id":4576,"name":"VariableDeclaration","src":"7388:15:28"}],"id":4577,"name":"ParameterList","src":"7387:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":4580,"name":"ParameterList","src":"7424:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4578,"name":"Identifier","src":"7414:9:28"}],"id":4579,"name":"ModifierInvocation","src":"7414:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4581,"name":"Identifier","src":"7434:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4791,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":4582,"name":"Identifier","src":"7443:24:28"}],"id":4583,"name":"FunctionCall","src":"7443:26:28"}],"id":4584,"name":"UnaryOperation","src":"7442:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":4585,"name":"Literal","src":"7471:15:28"}],"id":4586,"name":"FunctionCall","src":"7434:53:28"}],"id":4587,"name":"ExpressionStatement","src":"7434:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"address","value":"_tknContractAddress"},"id":4588,"name":"Identifier","src":"7497:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4576,"type":"address","value":"_newTKN"},"id":4589,"name":"Identifier","src":"7519:7:28"}],"id":4590,"name":"Assignment","src":"7497:29:28"}],"id":4591,"name":"ExpressionStatement","src":"7497:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4296,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":4592,"name":"Identifier","src":"7541:25:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4576,"type":"address","value":"_newTKN"},"id":4593,"name":"Identifier","src":"7567:7:28"}],"id":4594,"name":"FunctionCall","src":"7541:34:28"}],"id":4595,"name":"EmitStatement","src":"7536:39:28"}],"id":4596,"name":"Block","src":"7424:158:28"}],"id":4597,"name":"FunctionDefinition","src":"7354:228:28"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":4624,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4598,"name":"ElementaryTypeName","src":"7752:7:28"}],"id":4599,"name":"VariableDeclaration","src":"7752:18:28"}],"id":4600,"name":"ParameterList","src":"7751:20:28"},{"attributes":{"parameters":[null]},"children":[],"id":4603,"name":"ParameterList","src":"7789:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4365,"type":"modifier ()","value":"onlyDAO"},"id":4601,"name":"Identifier","src":"7781:7:28"}],"id":4602,"name":"ModifierInvocation","src":"7781:7:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4604,"name":"Identifier","src":"7799:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4334,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":4605,"name":"Identifier","src":"7807:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"_newAmount"},"id":4606,"name":"Identifier","src":"7827:10:28"}],"id":4607,"name":"BinaryOperation","src":"7807:30:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"_newAmount"},"id":4608,"name":"Identifier","src":"7841:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4331,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4609,"name":"Identifier","src":"7855:16:28"}],"id":4610,"name":"BinaryOperation","src":"7841:30:28"}],"id":4611,"name":"BinaryOperation","src":"7807:64:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":4612,"name":"Literal","src":"7873:29:28"}],"id":4613,"name":"FunctionCall","src":"7799:104:28"}],"id":4614,"name":"ExpressionStatement","src":"7799:104:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"uint256","value":"_licenceAmountScaled"},"id":4615,"name":"Identifier","src":"7913:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"_newAmount"},"id":4616,"name":"Identifier","src":"7936:10:28"}],"id":4617,"name":"Assignment","src":"7913:33:28"}],"id":4618,"name":"ExpressionStatement","src":"7913:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4300,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":4619,"name":"Identifier","src":"7961:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4599,"type":"uint256","value":"_newAmount"},"id":4620,"name":"Identifier","src":"7982:10:28"}],"id":4621,"name":"FunctionCall","src":"7961:32:28"}],"id":4622,"name":"EmitStatement","src":"7956:37:28"}],"id":4623,"name":"Block","src":"7789:211:28"}],"id":4624,"name":"FunctionDefinition","src":"7723:277:28"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":4792,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":4735,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4625,"name":"ElementaryTypeName","src":"8286:7:28"}],"id":4626,"name":"VariableDeclaration","src":"8286:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":4735,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4627,"name":"ElementaryTypeName","src":"8302:7:28"}],"id":4628,"name":"VariableDeclaration","src":"8302:15:28"}],"id":4629,"name":"ParameterList","src":"8285:33:28"},{"attributes":{"parameters":[null]},"children":[],"id":4630,"name":"ParameterList","src":"8336:0:28"},{"children":[{"attributes":{"assignments":[4632]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":4734,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4631,"name":"ElementaryTypeName","src":"8346:7:28"}],"id":4632,"name":"VariableDeclaration","src":"8346:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"uint256","value":"_amount"},"id":4633,"name":"Identifier","src":"8367:7:28"}],"id":4634,"name":"VariableDeclarationStatement","src":"8346:28:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4635,"name":"Identifier","src":"8433:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4337,"type":"address","value":"_tknContractAddress"},"id":4636,"name":"Identifier","src":"8443:19:28"}],"id":4637,"name":"BinaryOperation","src":"8433:29:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3508,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":4638,"name":"Identifier","src":"8478:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4639,"name":"Identifier","src":"8484:6:28"}],"id":4640,"name":"FunctionCall","src":"8478:13:28"}],"id":4641,"name":"MemberAccess","src":"8478:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4642,"name":"Identifier","src":"8509:3:28"}],"id":4643,"name":"MemberAccess","src":"8509:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4644,"name":"Identifier","src":"8521:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4645,"name":"Identifier","src":"8535:10:28"}],"id":4646,"name":"FunctionCall","src":"8478:68:28"}],"id":4647,"name":"ExpressionStatement","src":"8478:68:28"}],"id":4648,"name":"Block","src":"8464:93:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4649,"name":"Identifier","src":"8577:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3780,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3755,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"uint256","value":"_amount"},"id":4650,"name":"Identifier","src":"8590:7:28"}],"id":4651,"name":"MemberAccess","src":"8590:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4331,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4652,"name":"Identifier","src":"8602:16:28"}],"id":4653,"name":"FunctionCall","src":"8590:29:28"}],"id":4654,"name":"MemberAccess","src":"8590:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4353,"type":"uint256","value":"_licenceAmountScaled"},"id":4655,"name":"Identifier","src":"8624:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4331,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4656,"name":"Identifier","src":"8647:16:28"}],"id":4657,"name":"BinaryOperation","src":"8624:39:28"}],"id":4658,"name":"FunctionCall","src":"8590:74:28"}],"id":4659,"name":"Assignment","src":"8577:87:28"}],"id":4660,"name":"ExpressionStatement","src":"8577:87:28"},{"attributes":{"assignments":[4662]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":4724,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4661,"name":"ElementaryTypeName","src":"8678:7:28"}],"id":4662,"name":"VariableDeclaration","src":"8678:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"uint256","value":"_amount"},"id":4663,"name":"Identifier","src":"8702:7:28"}],"id":4664,"name":"MemberAccess","src":"8702:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4665,"name":"Identifier","src":"8714:10:28"}],"id":4666,"name":"FunctionCall","src":"8702:23:28"}],"id":4667,"name":"VariableDeclarationStatement","src":"8678:47:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4668,"name":"Identifier","src":"8744:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4669,"name":"ElementaryTypeNameExpression","src":"8754:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4670,"name":"Literal","src":"8762:1:28"}],"id":4671,"name":"FunctionCall","src":"8754:10:28"}],"id":4672,"name":"BinaryOperation","src":"8744:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3508,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":4673,"name":"Identifier","src":"8784:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4674,"name":"Identifier","src":"8790:6:28"}],"id":4675,"name":"FunctionCall","src":"8784:13:28"}],"id":4676,"name":"MemberAccess","src":"8784:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4677,"name":"Identifier","src":"8815:3:28"}],"id":4678,"name":"MemberAccess","src":"8815:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4679,"name":"Identifier","src":"8827:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4662,"type":"uint256","value":"licenceAmount"},"id":4680,"name":"Identifier","src":"8841:13:28"}],"id":4681,"name":"FunctionCall","src":"8784:71:28"}],"id":4682,"name":"ExpressionStatement","src":"8784:71:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3508,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":4683,"name":"Identifier","src":"8873:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4684,"name":"Identifier","src":"8879:6:28"}],"id":4685,"name":"FunctionCall","src":"8873:13:28"}],"id":4686,"name":"MemberAccess","src":"8873:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4687,"name":"Identifier","src":"8904:3:28"}],"id":4688,"name":"MemberAccess","src":"8904:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4689,"name":"Identifier","src":"8916:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4690,"name":"Identifier","src":"8930:10:28"}],"id":4691,"name":"FunctionCall","src":"8873:68:28"}],"id":4692,"name":"ExpressionStatement","src":"8873:68:28"}],"id":4693,"name":"Block","src":"8766:190:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":4694,"name":"Identifier","src":"8980:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4695,"name":"Identifier","src":"8988:3:28"}],"id":4696,"name":"MemberAccess","src":"8988:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4628,"type":"uint256","value":"_amount"},"id":4697,"name":"Identifier","src":"9001:7:28"}],"id":4698,"name":"BinaryOperation","src":"8988:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":4699,"name":"Literal","src":"9010:33:28"}],"id":4700,"name":"FunctionCall","src":"8980:64:28"}],"id":4701,"name":"ExpressionStatement","src":"8980:64:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4702,"name":"Identifier","src":"9062:12:28"}],"id":4704,"name":"MemberAccess","src":"9062:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4662,"type":"uint256","value":"licenceAmount"},"id":4705,"name":"Identifier","src":"9084:13:28"}],"id":4706,"name":"FunctionCall","src":"9062:36:28"}],"id":4707,"name":"ExpressionStatement","src":"9062:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4708,"name":"Identifier","src":"9116:12:28"}],"id":4710,"name":"MemberAccess","src":"9116:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4711,"name":"Identifier","src":"9138:10:28"}],"id":4712,"name":"FunctionCall","src":"9116:33:28"}],"id":4713,"name":"ExpressionStatement","src":"9116:33:28"}],"id":4714,"name":"Block","src":"8962:202:28"}],"id":4715,"name":"IfStatement","src":"8740:424:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4310,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":4716,"name":"Identifier","src":"9183:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4717,"name":"Identifier","src":"9208:3:28"}],"id":4718,"name":"MemberAccess","src":"9208:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4341,"type":"address payable","value":"_tokenHolder"},"id":4719,"name":"Identifier","src":"9220:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4720,"name":"Identifier","src":"9234:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4662,"type":"uint256","value":"licenceAmount"},"id":4721,"name":"Identifier","src":"9242:13:28"}],"id":4722,"name":"FunctionCall","src":"9183:73:28"}],"id":4723,"name":"EmitStatement","src":"9178:78:28"}],"id":4724,"name":"Block","src":"8563:704:28"}],"id":4725,"name":"IfStatement","src":"8429:838:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4320,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":4726,"name":"Identifier","src":"9282:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":4727,"name":"Identifier","src":"9307:3:28"}],"id":4728,"name":"MemberAccess","src":"9307:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4339,"type":"address payable","value":"_cryptoFloat"},"id":4729,"name":"Identifier","src":"9319:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4626,"type":"address","value":"_asset"},"id":4730,"name":"Identifier","src":"9333:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4632,"type":"uint256","value":"loadAmount"},"id":4731,"name":"Identifier","src":"9341:10:28"}],"id":4732,"name":"FunctionCall","src":"9282:70:28"}],"id":4733,"name":"EmitStatement","src":"9277:75:28"}],"id":4734,"name":"Block","src":"8336:1023:28"}],"id":4735,"name":"FunctionDefinition","src":"8272:1087:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":4792,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4759,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4736,"name":"ElementaryTypeName","src":"9463:15:28"}],"id":4737,"name":"VariableDeclaration","src":"9463:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":4759,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4738,"name":"ElementaryTypeName","src":"9484:7:28"}],"id":4739,"name":"VariableDeclaration","src":"9484:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":4759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4740,"name":"ElementaryTypeName","src":"9500:7:28"}],"id":4741,"name":"VariableDeclaration","src":"9500:15:28"}],"id":4742,"name":"ParameterList","src":"9462:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":4745,"name":"ParameterList","src":"9536:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":4743,"name":"Identifier","src":"9526:9:28"}],"id":4744,"name":"ModifierInvocation","src":"9526:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":4746,"name":"Identifier","src":"9546:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4737,"type":"address payable","value":"_to"},"id":4747,"name":"Identifier","src":"9560:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4739,"type":"address","value":"_asset"},"id":4748,"name":"Identifier","src":"9565:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4741,"type":"uint256","value":"_amount"},"id":4749,"name":"Identifier","src":"9573:7:28"}],"id":4750,"name":"FunctionCall","src":"9546:35:28"}],"id":4751,"name":"ExpressionStatement","src":"9546:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4328,"type":"function (address,address,uint256)","value":"Claimed"},"id":4752,"name":"Identifier","src":"9596:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4737,"type":"address payable","value":"_to"},"id":4753,"name":"Identifier","src":"9604:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4739,"type":"address","value":"_asset"},"id":4754,"name":"Identifier","src":"9609:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4741,"type":"uint256","value":"_amount"},"id":4755,"name":"Identifier","src":"9617:7:28"}],"id":4756,"name":"FunctionCall","src":"9596:29:28"}],"id":4757,"name":"EmitStatement","src":"9591:34:28"}],"id":4758,"name":"Block","src":"9536:96:28"}],"id":4759,"name":"FunctionDefinition","src":"9448:184:28"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4760,"name":"ParameterList","src":"9731:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4767,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4761,"name":"ElementaryTypeName","src":"9755:4:28"}],"id":4762,"name":"VariableDeclaration","src":"9755:4:28"}],"id":4763,"name":"ParameterList","src":"9754:6:28"},{"children":[{"attributes":{"functionReturnParameters":4763},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4345,"type":"bool","value":"_lockedCryptoFloat"},"id":4764,"name":"Identifier","src":"9778:18:28"}],"id":4765,"name":"Return","src":"9771:25:28"}],"id":4766,"name":"Block","src":"9761:42:28"}],"id":4767,"name":"FunctionDefinition","src":"9711:92:28"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4768,"name":"ParameterList","src":"9903:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4775,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4769,"name":"ElementaryTypeName","src":"9927:4:28"}],"id":4770,"name":"VariableDeclaration","src":"9927:4:28"}],"id":4771,"name":"ParameterList","src":"9926:6:28"},{"children":[{"attributes":{"functionReturnParameters":4771},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4347,"type":"bool","value":"_lockedTokenHolder"},"id":4772,"name":"Identifier","src":"9950:18:28"}],"id":4773,"name":"Return","src":"9943:25:28"}],"id":4774,"name":"Block","src":"9933:42:28"}],"id":4775,"name":"FunctionDefinition","src":"9882:93:28"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4776,"name":"ParameterList","src":"10079:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4783,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4777,"name":"ElementaryTypeName","src":"10103:4:28"}],"id":4778,"name":"VariableDeclaration","src":"10103:4:28"}],"id":4779,"name":"ParameterList","src":"10102:6:28"},{"children":[{"attributes":{"functionReturnParameters":4779},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4349,"type":"bool","value":"_lockedLicenceDAO"},"id":4780,"name":"Identifier","src":"10126:17:28"}],"id":4781,"name":"Return","src":"10119:24:28"}],"id":4782,"name":"Block","src":"10109:41:28"}],"id":4783,"name":"FunctionDefinition","src":"10054:96:28"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":4792,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4784,"name":"ParameterList","src":"10254:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4791,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4785,"name":"ElementaryTypeName","src":"10278:4:28"}],"id":4786,"name":"VariableDeclaration","src":"10278:4:28"}],"id":4787,"name":"ParameterList","src":"10277:6:28"},{"children":[{"attributes":{"functionReturnParameters":4787},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4351,"type":"bool","value":"_lockedTKNContractAddress"},"id":4788,"name":"Identifier","src":"10301:25:28"}],"id":4789,"name":"Return","src":"10294:32:28"}],"id":4790,"name":"Block","src":"10284:49:28"}],"id":4791,"name":"FunctionDefinition","src":"10221:112:28"}],"id":4792,"name":"ContractDefinition","src":"1381:8954:28"}],"id":4793,"name":"SourceUnit","src":"767:9569:28"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[6167],"TokenWhitelist":[7067]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":6081,"name":"PragmaDirective","src":"774:24:29"},{"attributes":{"SourceUnit":294,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6082,"name":"ImportDirective","src":"800:38:29"},{"attributes":{"SourceUnit":4249,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6083,"name":"ImportDirective","src":"839:39:29"},{"attributes":{"SourceUnit":9572,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6084,"name":"ImportDirective","src":"879:36:29"},{"attributes":{"SourceUnit":9461,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6085,"name":"ImportDirective","src":"916:33:29"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":7068,"symbolAliases":[null],"unitAlias":""},"id":6086,"name":"ImportDirective","src":"950:34:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[6167],"name":"ITokenWhitelist","scope":7068},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6087,"name":"ElementaryTypeName","src":"1124:7:29"}],"id":6088,"name":"VariableDeclaration","src":"1124:7:29"}],"id":6089,"name":"ParameterList","src":"1123:9:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6090,"name":"ElementaryTypeName","src":"1156:6:29"}],"id":6091,"name":"VariableDeclaration","src":"1156:13:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6092,"name":"ElementaryTypeName","src":"1171:7:29"}],"id":6093,"name":"VariableDeclaration","src":"1171:7:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6094,"name":"ElementaryTypeName","src":"1180:7:29"}],"id":6095,"name":"VariableDeclaration","src":"1180:7:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6096,"name":"ElementaryTypeName","src":"1189:4:29"}],"id":6097,"name":"VariableDeclaration","src":"1189:4:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6098,"name":"ElementaryTypeName","src":"1195:4:29"}],"id":6099,"name":"VariableDeclaration","src":"1195:4:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6100,"name":"ElementaryTypeName","src":"1201:4:29"}],"id":6101,"name":"VariableDeclaration","src":"1201:4:29"},{"attributes":{"constant":false,"name":"","scope":6105,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6102,"name":"ElementaryTypeName","src":"1207:7:29"}],"id":6103,"name":"VariableDeclaration","src":"1207:7:29"}],"id":6104,"name":"ParameterList","src":"1155:60:29"}],"id":6105,"name":"FunctionDefinition","src":"1102:114:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6106,"name":"ParameterList","src":"1248:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6107,"name":"ElementaryTypeName","src":"1274:6:29"}],"id":6108,"name":"VariableDeclaration","src":"1274:13:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6109,"name":"ElementaryTypeName","src":"1289:7:29"}],"id":6110,"name":"VariableDeclaration","src":"1289:7:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6111,"name":"ElementaryTypeName","src":"1298:7:29"}],"id":6112,"name":"VariableDeclaration","src":"1298:7:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6113,"name":"ElementaryTypeName","src":"1307:4:29"}],"id":6114,"name":"VariableDeclaration","src":"1307:4:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6115,"name":"ElementaryTypeName","src":"1313:4:29"}],"id":6116,"name":"VariableDeclaration","src":"1313:4:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6117,"name":"ElementaryTypeName","src":"1319:4:29"}],"id":6118,"name":"VariableDeclaration","src":"1319:4:29"},{"attributes":{"constant":false,"name":"","scope":6122,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6119,"name":"ElementaryTypeName","src":"1325:7:29"}],"id":6120,"name":"VariableDeclaration","src":"1325:7:29"}],"id":6121,"name":"ParameterList","src":"1273:60:29"}],"id":6122,"name":"FunctionDefinition","src":"1222:112:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6123,"name":"ParameterList","src":"1366:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6128,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6124,"name":"ElementaryTypeName","src":"1392:7:29"}],"id":6125,"name":"ArrayTypeName","src":"1392:9:29"}],"id":6126,"name":"VariableDeclaration","src":"1392:16:29"}],"id":6127,"name":"ParameterList","src":"1391:18:29"}],"id":6128,"name":"FunctionDefinition","src":"1340:70:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6129,"name":"ParameterList","src":"1441:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6134,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6130,"name":"ElementaryTypeName","src":"1467:7:29"}],"id":6131,"name":"ArrayTypeName","src":"1467:9:29"}],"id":6132,"name":"VariableDeclaration","src":"1467:16:29"}],"id":6133,"name":"ParameterList","src":"1466:18:29"}],"id":6134,"name":"FunctionDefinition","src":"1416:69:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":6141,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6135,"name":"ElementaryTypeName","src":"1518:6:29"}],"id":6136,"name":"VariableDeclaration","src":"1518:6:29"}],"id":6137,"name":"ParameterList","src":"1517:8:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6141,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6138,"name":"ElementaryTypeName","src":"1549:4:29"}],"id":6139,"name":"VariableDeclaration","src":"1549:4:29"}],"id":6140,"name":"ParameterList","src":"1548:6:29"}],"id":6141,"name":"FunctionDefinition","src":"1491:64:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":6152,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6142,"name":"ElementaryTypeName","src":"1597:7:29"}],"id":6143,"name":"VariableDeclaration","src":"1597:7:29"},{"attributes":{"constant":false,"name":"","scope":6152,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6144,"name":"ElementaryTypeName","src":"1606:5:29"}],"id":6145,"name":"VariableDeclaration","src":"1606:14:29"}],"id":6146,"name":"ParameterList","src":"1596:25:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6152,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6147,"name":"ElementaryTypeName","src":"1645:7:29"}],"id":6148,"name":"VariableDeclaration","src":"1645:7:29"},{"attributes":{"constant":false,"name":"","scope":6152,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6149,"name":"ElementaryTypeName","src":"1654:7:29"}],"id":6150,"name":"VariableDeclaration","src":"1654:7:29"}],"id":6151,"name":"ParameterList","src":"1644:18:29"}],"id":6152,"name":"FunctionDefinition","src":"1561:102:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":6167,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6153,"name":"ParameterList","src":"1688:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6157,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6154,"name":"ElementaryTypeName","src":"1714:7:29"}],"id":6155,"name":"VariableDeclaration","src":"1714:7:29"}],"id":6156,"name":"ParameterList","src":"1713:9:29"}],"id":6157,"name":"FunctionDefinition","src":"1669:54:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":6167,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":6166,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6158,"name":"ElementaryTypeName","src":"1754:7:29"}],"id":6159,"name":"VariableDeclaration","src":"1754:7:29"},{"attributes":{"constant":false,"name":"","scope":6166,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6160,"name":"ElementaryTypeName","src":"1763:7:29"}],"id":6161,"name":"VariableDeclaration","src":"1763:7:29"},{"attributes":{"constant":false,"name":"","scope":6166,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6162,"name":"ElementaryTypeName","src":"1772:7:29"}],"id":6163,"name":"VariableDeclaration","src":"1772:7:29"}],"id":6164,"name":"ParameterList","src":"1753:27:29"},{"attributes":{"parameters":[null]},"children":[],"id":6165,"name":"ParameterList","src":"1789:0:29"}],"id":6166,"name":"FunctionDefinition","src":"1729:61:29"}],"id":6167,"name":"ContractDefinition","src":"1070:722:29"},{"attributes":{"contractDependencies":[293,338,4248],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[7067,4248,293,338],"name":"TokenWhitelist","scope":7068},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":6168,"name":"UserDefinedTypeName","src":"1966:13:29"}],"id":6169,"name":"InheritanceSpecifier","src":"1966:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":293,"type":"contract Controllable"},"id":6170,"name":"UserDefinedTypeName","src":"1981:12:29"}],"id":6171,"name":"InheritanceSpecifier","src":"1981:12:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4248,"type":"contract Transferrable"},"id":6172,"name":"UserDefinedTypeName","src":"1995:13:29"}],"id":6173,"name":"InheritanceSpecifier","src":"1995:13:29"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":9460,"type":"library strings"},"id":6174,"name":"UserDefinedTypeName","src":"2021:7:29"}],"id":6175,"name":"UsingForDirective","src":"2015:20:29"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":6176,"name":"UserDefinedTypeName","src":"2046:8:29"},{"attributes":{"name":"uint256","type":"uint256"},"id":6177,"name":"ElementaryTypeName","src":"2059:7:29"}],"id":6178,"name":"UsingForDirective","src":"2040:27:29"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":9571,"type":"library BytesUtils"},"id":6179,"name":"UserDefinedTypeName","src":"2078:10:29"},{"attributes":{"name":"bytes","type":"bytes"},"id":6180,"name":"ElementaryTypeName","src":"2093:5:29"}],"id":6181,"name":"UsingForDirective","src":"2072:27:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6189,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6182,"name":"ElementaryTypeName","src":"2128:7:29"}],"id":6183,"name":"VariableDeclaration","src":"2128:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6189,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6184,"name":"ElementaryTypeName","src":"2145:7:29"}],"id":6185,"name":"VariableDeclaration","src":"2145:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":6189,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6186,"name":"ElementaryTypeName","src":"2161:7:29"}],"id":6187,"name":"VariableDeclaration","src":"2161:13:29"}],"id":6188,"name":"ParameterList","src":"2127:48:29"}],"id":6189,"name":"EventDefinition","src":"2105:71:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6197,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6190,"name":"ElementaryTypeName","src":"2209:7:29"}],"id":6191,"name":"VariableDeclaration","src":"2209:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6197,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6192,"name":"ElementaryTypeName","src":"2226:7:29"}],"id":6193,"name":"VariableDeclaration","src":"2226:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":6197,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6194,"name":"ElementaryTypeName","src":"2242:4:29"}],"id":6195,"name":"VariableDeclaration","src":"2242:14:29"}],"id":6196,"name":"ParameterList","src":"2208:49:29"}],"id":6197,"name":"EventDefinition","src":"2182:76:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6198,"name":"ElementaryTypeName","src":"2292:7:29"}],"id":6199,"name":"VariableDeclaration","src":"2292:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6200,"name":"ElementaryTypeName","src":"2309:7:29"}],"id":6201,"name":"VariableDeclaration","src":"2309:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":6205,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6202,"name":"ElementaryTypeName","src":"2325:4:29"}],"id":6203,"name":"VariableDeclaration","src":"2325:16:29"}],"id":6204,"name":"ParameterList","src":"2291:51:29"}],"id":6205,"name":"EventDefinition","src":"2263:80:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6219,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6206,"name":"ElementaryTypeName","src":"2366:7:29"}],"id":6207,"name":"VariableDeclaration","src":"2366:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6219,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6208,"name":"ElementaryTypeName","src":"2383:7:29"}],"id":6209,"name":"VariableDeclaration","src":"2383:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":6219,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6210,"name":"ElementaryTypeName","src":"2399:6:29"}],"id":6211,"name":"VariableDeclaration","src":"2399:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":6219,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6212,"name":"ElementaryTypeName","src":"2415:7:29"}],"id":6213,"name":"VariableDeclaration","src":"2415:18:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":6219,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6214,"name":"ElementaryTypeName","src":"2435:4:29"}],"id":6215,"name":"VariableDeclaration","src":"2435:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":6219,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6216,"name":"ElementaryTypeName","src":"2451:4:29"}],"id":6217,"name":"VariableDeclaration","src":"2451:16:29"}],"id":6218,"name":"ParameterList","src":"2365:103:29"}],"id":6219,"name":"EventDefinition","src":"2349:120:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":6225,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6220,"name":"ElementaryTypeName","src":"2493:7:29"}],"id":6221,"name":"VariableDeclaration","src":"2493:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6225,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6222,"name":"ElementaryTypeName","src":"2510:7:29"}],"id":6223,"name":"VariableDeclaration","src":"2510:14:29"}],"id":6224,"name":"ParameterList","src":"2492:33:29"}],"id":6225,"name":"EventDefinition","src":"2474:52:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":6229,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6226,"name":"ElementaryTypeName","src":"2552:6:29"}],"id":6227,"name":"VariableDeclaration","src":"2552:16:29"}],"id":6228,"name":"ParameterList","src":"2551:18:29"}],"id":6229,"name":"EventDefinition","src":"2532:38:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":6233,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6230,"name":"ElementaryTypeName","src":"2597:6:29"}],"id":6231,"name":"VariableDeclaration","src":"2597:16:29"}],"id":6232,"name":"ParameterList","src":"2596:18:29"}],"id":6233,"name":"EventDefinition","src":"2575:40:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6239,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6234,"name":"ElementaryTypeName","src":"2647:7:29"}],"id":6235,"name":"VariableDeclaration","src":"2647:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":6239,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6236,"name":"ElementaryTypeName","src":"2663:6:29"}],"id":6237,"name":"VariableDeclaration","src":"2663:16:29"}],"id":6238,"name":"ParameterList","src":"2646:34:29"}],"id":6239,"name":"EventDefinition","src":"2620:61:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":6245,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6240,"name":"ElementaryTypeName","src":"2715:7:29"}],"id":6241,"name":"VariableDeclaration","src":"2715:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":6245,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6242,"name":"ElementaryTypeName","src":"2731:6:29"}],"id":6243,"name":"VariableDeclaration","src":"2731:16:29"}],"id":6244,"name":"ParameterList","src":"2714:34:29"}],"id":6245,"name":"EventDefinition","src":"2686:63:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":6253,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6246,"name":"ElementaryTypeName","src":"2769:7:29"}],"id":6247,"name":"VariableDeclaration","src":"2769:11:29"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":6253,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6248,"name":"ElementaryTypeName","src":"2782:7:29"}],"id":6249,"name":"VariableDeclaration","src":"2782:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":6253,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6250,"name":"ElementaryTypeName","src":"2798:7:29"}],"id":6251,"name":"VariableDeclaration","src":"2798:15:29"}],"id":6252,"name":"ParameterList","src":"2768:46:29"}],"id":6253,"name":"EventDefinition","src":"2755:60:29"},{"attributes":{"constant":true,"name":"_APPROVE","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6254,"name":"ElementaryTypeName","src":"2924:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":6255,"name":"Literal","src":"2959:10:29"}],"id":6256,"name":"VariableDeclaration","src":"2924:45:29"},{"attributes":{"constant":true,"name":"_BURN","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6257,"name":"ElementaryTypeName","src":"3028:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":6258,"name":"Literal","src":"3060:10:29"}],"id":6259,"name":"VariableDeclaration","src":"3028:42:29"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6260,"name":"ElementaryTypeName","src":"3118:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":6261,"name":"Literal","src":"3154:10:29"}],"id":6262,"name":"VariableDeclaration","src":"3118:46:29"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6263,"name":"ElementaryTypeName","src":"3224:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":6264,"name":"Literal","src":"3265:10:29"}],"id":6265,"name":"VariableDeclaration","src":"3224:51:29"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":7067,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":6280,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6266,"name":"ElementaryTypeName","src":"3371:6:29"}],"id":6267,"name":"VariableDeclaration","src":"3371:13:29"},{"attributes":{"constant":false,"name":"magnitude","scope":6280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6268,"name":"ElementaryTypeName","src":"3410:7:29"}],"id":6269,"name":"VariableDeclaration","src":"3410:17:29"},{"attributes":{"constant":false,"name":"rate","scope":6280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6270,"name":"ElementaryTypeName","src":"3452:7:29"}],"id":6271,"name":"VariableDeclaration","src":"3452:12:29"},{"attributes":{"constant":false,"name":"available","scope":6280,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6272,"name":"ElementaryTypeName","src":"3504:4:29"}],"id":6273,"name":"VariableDeclaration","src":"3504:14:29"},{"attributes":{"constant":false,"name":"loadable","scope":6280,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6274,"name":"ElementaryTypeName","src":"3570:4:29"}],"id":6275,"name":"VariableDeclaration","src":"3570:13:29"},{"attributes":{"constant":false,"name":"redeemable","scope":6280,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6276,"name":"ElementaryTypeName","src":"3640:4:29"}],"id":6277,"name":"VariableDeclaration","src":"3640:15:29"},{"attributes":{"constant":false,"name":"lastUpdate","scope":6280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6278,"name":"ElementaryTypeName","src":"3724:7:29"}],"id":6279,"name":"VariableDeclaration","src":"3724:18:29"}],"id":6280,"name":"StructDefinition","src":"3348:433:29"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":7067,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":6281,"name":"ElementaryTypeName","src":"3795:7:29"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":6280,"type":"struct TokenWhitelist.Token"},"id":6282,"name":"UserDefinedTypeName","src":"3806:5:29"}],"id":6283,"name":"Mapping","src":"3787:25:29"}],"id":6284,"name":"VariableDeclaration","src":"3787:47:29"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":7067,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6285,"name":"ElementaryTypeName","src":"4004:6:29"},{"attributes":{"name":"bool","type":"bool"},"id":6286,"name":"ElementaryTypeName","src":"4014:4:29"}],"id":6287,"name":"Mapping","src":"3996:23:29"}],"id":6288,"name":"VariableDeclaration","src":"3996:50:29"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":7067,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6289,"name":"ElementaryTypeName","src":"4053:7:29"}],"id":6290,"name":"ArrayTypeName","src":"4053:9:29"}],"id":6291,"name":"VariableDeclaration","src":"4053:36:29"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":7067,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6292,"name":"ElementaryTypeName","src":"4182:7:29"}],"id":6293,"name":"VariableDeclaration","src":"4182:34:29"},{"attributes":{"constant":false,"name":"_stablecoin","scope":7067,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6294,"name":"ElementaryTypeName","src":"4266:7:29"}],"id":6295,"name":"VariableDeclaration","src":"4266:27:29"},{"attributes":{"constant":false,"name":"_oracleNode","scope":7067,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6296,"name":"ElementaryTypeName","src":"4372:7:29"}],"id":6297,"name":"VariableDeclaration","src":"4372:27:29"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":6347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6298,"name":"ElementaryTypeName","src":"4770:7:29"}],"id":6299,"name":"VariableDeclaration","src":"4770:13:29"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":6347,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6300,"name":"ElementaryTypeName","src":"4785:7:29"}],"id":6301,"name":"VariableDeclaration","src":"4785:20:29"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":6347,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6302,"name":"ElementaryTypeName","src":"4807:7:29"}],"id":6303,"name":"VariableDeclaration","src":"4807:24:29"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":6347,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6304,"name":"ElementaryTypeName","src":"4833:7:29"}],"id":6305,"name":"VariableDeclaration","src":"4833:27:29"}],"id":6306,"name":"ParameterList","src":"4769:92:29"},{"attributes":{"parameters":[null]},"children":[],"id":6313,"name":"ParameterList","src":"4949:0:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":338,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":6307,"name":"Identifier","src":"4885:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6299,"type":"address","value":"_ens_"},"id":6308,"name":"Identifier","src":"4899:5:29"}],"id":6309,"name":"ModifierInvocation","src":"4885:20:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"type(contract Controllable)","value":"Controllable"},"id":6310,"name":"Identifier","src":"4914:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6303,"type":"bytes32","value":"_controllerNode_"},"id":6311,"name":"Identifier","src":"4927:16:29"}],"id":6312,"name":"ModifierInvocation","src":"4914:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"bytes32","value":"_oracleNode"},"id":6314,"name":"Identifier","src":"4959:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6301,"type":"bytes32","value":"_oracleNode_"},"id":6315,"name":"Identifier","src":"4973:12:29"}],"id":6316,"name":"Assignment","src":"4959:26:29"}],"id":6317,"name":"ExpressionStatement","src":"4959:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6295,"type":"address","value":"_stablecoin"},"id":6318,"name":"Identifier","src":"4995:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6305,"type":"address","value":"_stablecoinAddress_"},"id":6319,"name":"Identifier","src":"5009:19:29"}],"id":6320,"name":"Assignment","src":"4995:33:29"}],"id":6321,"name":"ExpressionStatement","src":"4995:33:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":6322,"name":"Identifier","src":"5083:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6256,"type":"bytes4","value":"_APPROVE"},"id":6323,"name":"Identifier","src":"5102:8:29"}],"id":6324,"name":"IndexAccess","src":"5083:28:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6325,"name":"Literal","src":"5114:4:29"}],"id":6326,"name":"Assignment","src":"5083:35:29"}],"id":6327,"name":"ExpressionStatement","src":"5083:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":6328,"name":"Identifier","src":"5128:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6259,"type":"bytes4","value":"_BURN"},"id":6329,"name":"Identifier","src":"5147:5:29"}],"id":6330,"name":"IndexAccess","src":"5128:25:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6331,"name":"Literal","src":"5156:4:29"}],"id":6332,"name":"Assignment","src":"5128:32:29"}],"id":6333,"name":"ExpressionStatement","src":"5128:32:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":6334,"name":"Identifier","src":"5170:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6262,"type":"bytes4","value":"_TRANSFER"},"id":6335,"name":"Identifier","src":"5189:9:29"}],"id":6336,"name":"IndexAccess","src":"5170:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6337,"name":"Literal","src":"5202:4:29"}],"id":6338,"name":"Assignment","src":"5170:36:29"}],"id":6339,"name":"ExpressionStatement","src":"5170:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":6340,"name":"Identifier","src":"5216:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6265,"type":"bytes4","value":"_TRANSFER_FROM"},"id":6341,"name":"Identifier","src":"5235:14:29"}],"id":6342,"name":"IndexAccess","src":"5216:34:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6343,"name":"Literal","src":"5253:4:29"}],"id":6344,"name":"Assignment","src":"5216:41:29"}],"id":6345,"name":"ExpressionStatement","src":"5216:41:29"}],"id":6346,"name":"Block","src":"4949:315:29"}],"id":6347,"name":"FunctionDefinition","src":"4758:506:29"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6348,"name":"ParameterList","src":"5296:2:29"},{"children":[{"attributes":{"assignments":[6350]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":6369,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6349,"name":"ElementaryTypeName","src":"5309:7:29"}],"id":6350,"name":"VariableDeclaration","src":"5309:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":6351,"name":"Identifier","src":"5333:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"bytes32","value":"_oracleNode"},"id":6352,"name":"Identifier","src":"5345:11:29"}],"id":6353,"name":"FunctionCall","src":"5333:24:29"}],"id":6354,"name":"VariableDeclarationStatement","src":"5309:48:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6355,"name":"Identifier","src":"5367:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":292,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":6356,"name":"Identifier","src":"5375:8:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6357,"name":"Identifier","src":"5384:3:29"}],"id":6358,"name":"MemberAccess","src":"5384:10:29"}],"id":6359,"name":"FunctionCall","src":"5375:20:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6360,"name":"Identifier","src":"5399:3:29"}],"id":6361,"name":"MemberAccess","src":"5399:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6350,"type":"address","value":"oracleAddress"},"id":6362,"name":"Identifier","src":"5413:13:29"}],"id":6363,"name":"BinaryOperation","src":"5399:27:29"}],"id":6364,"name":"BinaryOperation","src":"5375:51:29"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":6365,"name":"Literal","src":"5428:24:29"}],"id":6366,"name":"FunctionCall","src":"5367:86:29"}],"id":6367,"name":"ExpressionStatement","src":"5367:86:29"},{"id":6368,"name":"PlaceholderStatement","src":"5463:1:29"}],"id":6369,"name":"Block","src":"5299:172:29"}],"id":6370,"name":"ModifierDefinition","src":"5270:201:29"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6371,"name":"ElementaryTypeName","src":"6068:7:29"}],"id":6372,"name":"ArrayTypeName","src":"6068:9:29"}],"id":6373,"name":"VariableDeclaration","src":"6068:26:29"},{"attributes":{"constant":false,"name":"_symbols","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6374,"name":"ElementaryTypeName","src":"6104:7:29"}],"id":6375,"name":"ArrayTypeName","src":"6104:9:29"}],"id":6376,"name":"VariableDeclaration","src":"6104:27:29"},{"attributes":{"constant":false,"name":"_magnitude","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6377,"name":"ElementaryTypeName","src":"6141:7:29"}],"id":6378,"name":"ArrayTypeName","src":"6141:9:29"}],"id":6379,"name":"VariableDeclaration","src":"6141:29:29"},{"attributes":{"constant":false,"name":"_loadable","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6380,"name":"ElementaryTypeName","src":"6180:4:29"}],"id":6381,"name":"ArrayTypeName","src":"6180:6:29"}],"id":6382,"name":"VariableDeclaration","src":"6180:25:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":6514,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6383,"name":"ElementaryTypeName","src":"6215:4:29"}],"id":6384,"name":"ArrayTypeName","src":"6215:6:29"}],"id":6385,"name":"VariableDeclaration","src":"6215:27:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":6514,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6386,"name":"ElementaryTypeName","src":"6252:7:29"}],"id":6387,"name":"VariableDeclaration","src":"6252:19:29"}],"id":6388,"name":"ParameterList","src":"6058:219:29"},{"attributes":{"parameters":[null]},"children":[],"id":6391,"name":"ParameterList","src":"6297:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6389,"name":"Identifier","src":"6287:9:29"}],"id":6390,"name":"ModifierInvocation","src":"6287:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6392,"name":"Identifier","src":"6368:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6393,"name":"Identifier","src":"6389:7:29"}],"id":6394,"name":"MemberAccess","src":"6389:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6376,"type":"bytes32[] calldata","value":"_symbols"},"id":6395,"name":"Identifier","src":"6407:8:29"}],"id":6396,"name":"MemberAccess","src":"6407:15:29"}],"id":6397,"name":"BinaryOperation","src":"6389:33:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6398,"name":"Identifier","src":"6442:7:29"}],"id":6399,"name":"MemberAccess","src":"6442:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6379,"type":"uint256[] calldata","value":"_magnitude"},"id":6400,"name":"Identifier","src":"6460:10:29"}],"id":6401,"name":"MemberAccess","src":"6460:17:29"}],"id":6402,"name":"BinaryOperation","src":"6442:35:29"}],"id":6403,"name":"BinaryOperation","src":"6389:88:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6404,"name":"Identifier","src":"6497:7:29"}],"id":6405,"name":"MemberAccess","src":"6497:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6382,"type":"bool[] calldata","value":"_loadable"},"id":6406,"name":"Identifier","src":"6515:9:29"}],"id":6407,"name":"MemberAccess","src":"6515:16:29"}],"id":6408,"name":"BinaryOperation","src":"6497:34:29"}],"id":6409,"name":"BinaryOperation","src":"6389:142:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6410,"name":"Identifier","src":"6551:7:29"}],"id":6411,"name":"MemberAccess","src":"6551:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6382,"type":"bool[] calldata","value":"_loadable"},"id":6412,"name":"Identifier","src":"6569:9:29"}],"id":6413,"name":"MemberAccess","src":"6569:16:29"}],"id":6414,"name":"BinaryOperation","src":"6551:34:29"}],"id":6415,"name":"BinaryOperation","src":"6389:196:29"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":6416,"name":"Literal","src":"6599:32:29"}],"id":6417,"name":"FunctionCall","src":"6368:273:29"}],"id":6418,"name":"ExpressionStatement","src":"6368:273:29"},{"children":[{"attributes":{"assignments":[6420]},"children":[{"attributes":{"constant":false,"name":"i","scope":6512,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6419,"name":"ElementaryTypeName","src":"6715:7:29"}],"id":6420,"name":"VariableDeclaration","src":"6715:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6421,"name":"Literal","src":"6727:1:29"}],"id":6422,"name":"VariableDeclarationStatement","src":"6715:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6423,"name":"Identifier","src":"6730:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6424,"name":"Identifier","src":"6734:7:29"}],"id":6425,"name":"MemberAccess","src":"6734:14:29"}],"id":6426,"name":"BinaryOperation","src":"6730:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6427,"name":"Identifier","src":"6750:1:29"}],"id":6428,"name":"UnaryOperation","src":"6750:3:29"}],"id":6429,"name":"ExpressionStatement","src":"6750:3:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6430,"name":"Identifier","src":"6832:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6431,"name":"Identifier","src":"6841:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6432,"name":"Identifier","src":"6855:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6433,"name":"Identifier","src":"6863:1:29"}],"id":6434,"name":"IndexAccess","src":"6855:10:29"}],"id":6435,"name":"IndexAccess","src":"6841:25:29"}],"id":6436,"name":"MemberAccess","src":"6841:35:29"}],"id":6437,"name":"UnaryOperation","src":"6840:36:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":6438,"name":"Literal","src":"6878:25:29"}],"id":6439,"name":"FunctionCall","src":"6832:72:29"}],"id":6440,"name":"ExpressionStatement","src":"6832:72:29"},{"attributes":{"assignments":[6442]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":6511,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6441,"name":"ElementaryTypeName","src":"6964:6:29"}],"id":6442,"name":"VariableDeclaration","src":"6964:20:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":8009,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":7964,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6376,"type":"bytes32[] calldata","value":"_symbols"},"id":6443,"name":"Identifier","src":"6987:8:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6444,"name":"Identifier","src":"6996:1:29"}],"id":6445,"name":"IndexAccess","src":"6987:11:29"}],"id":6446,"name":"MemberAccess","src":"6987:22:29"}],"id":6447,"name":"FunctionCall","src":"6987:24:29"}],"id":6448,"name":"MemberAccess","src":"6987:33:29"}],"id":6449,"name":"FunctionCall","src":"6987:35:29"}],"id":6450,"name":"VariableDeclarationStatement","src":"6964:58:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6451,"name":"Identifier","src":"7084:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6452,"name":"Identifier","src":"7098:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6453,"name":"Identifier","src":"7106:1:29"}],"id":6454,"name":"IndexAccess","src":"7098:10:29"}],"id":6455,"name":"IndexAccess","src":"7084:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6280,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":6456,"name":"Identifier","src":"7112:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6442,"type":"string memory","value":"symbol"},"id":6457,"name":"Identifier","src":"7144:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6379,"type":"uint256[] calldata","value":"_magnitude"},"id":6458,"name":"Identifier","src":"7179:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6459,"name":"Identifier","src":"7190:1:29"}],"id":6460,"name":"IndexAccess","src":"7179:13:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6461,"name":"Literal","src":"7216:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":6462,"name":"Literal","src":"7246:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6382,"type":"bool[] calldata","value":"_loadable"},"id":6463,"name":"Identifier","src":"7278:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6464,"name":"Identifier","src":"7288:1:29"}],"id":6465,"name":"IndexAccess","src":"7278:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"bool[] calldata","value":"_redeemable"},"id":6466,"name":"Identifier","src":"7320:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6467,"name":"Identifier","src":"7332:1:29"}],"id":6468,"name":"IndexAccess","src":"7320:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6387,"type":"uint256","value":"_lastUpdate"},"id":6469,"name":"Identifier","src":"7364:11:29"}],"id":6470,"name":"FunctionCall","src":"7112:278:29"}],"id":6471,"name":"Assignment","src":"7084:306:29"}],"id":6472,"name":"ExpressionStatement","src":"7084:306:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6473,"name":"Identifier","src":"7462:18:29"}],"id":6475,"name":"MemberAccess","src":"7462:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6476,"name":"Identifier","src":"7486:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6477,"name":"Identifier","src":"7494:1:29"}],"id":6478,"name":"IndexAccess","src":"7486:10:29"}],"id":6479,"name":"FunctionCall","src":"7462:35:29"}],"id":6480,"name":"ExpressionStatement","src":"7462:35:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"bool[] calldata","value":"_redeemable"},"id":6481,"name":"Identifier","src":"7587:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6482,"name":"Identifier","src":"7599:1:29"}],"id":6483,"name":"IndexAccess","src":"7587:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6484,"name":"Identifier","src":"7621:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6485,"name":"Identifier","src":"7642:18:29"}],"id":6486,"name":"MemberAccess","src":"7642:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6487,"name":"Literal","src":"7665:1:29"}],"id":6488,"name":"FunctionCall","src":"7642:25:29"}],"id":6489,"name":"Assignment","src":"7621:46:29"}],"id":6490,"name":"ExpressionStatement","src":"7621:46:29"}],"id":6491,"name":"Block","src":"7603:79:29"}],"id":6492,"name":"IfStatement","src":"7583:99:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6219,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":6493,"name":"Identifier","src":"7742:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6494,"name":"Identifier","src":"7753:3:29"}],"id":6495,"name":"MemberAccess","src":"7753:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6373,"type":"address[] calldata","value":"_tokens"},"id":6496,"name":"Identifier","src":"7765:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6497,"name":"Identifier","src":"7773:1:29"}],"id":6498,"name":"IndexAccess","src":"7765:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6442,"type":"string memory","value":"symbol"},"id":6499,"name":"Identifier","src":"7777:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6379,"type":"uint256[] calldata","value":"_magnitude"},"id":6500,"name":"Identifier","src":"7785:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6501,"name":"Identifier","src":"7796:1:29"}],"id":6502,"name":"IndexAccess","src":"7785:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6382,"type":"bool[] calldata","value":"_loadable"},"id":6503,"name":"Identifier","src":"7800:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6504,"name":"Identifier","src":"7810:1:29"}],"id":6505,"name":"IndexAccess","src":"7800:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6385,"type":"bool[] calldata","value":"_redeemable"},"id":6506,"name":"Identifier","src":"7814:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6420,"type":"uint256","value":"i"},"id":6507,"name":"Identifier","src":"7826:1:29"}],"id":6508,"name":"IndexAccess","src":"7814:14:29"}],"id":6509,"name":"FunctionCall","src":"7742:87:29"}],"id":6510,"name":"EmitStatement","src":"7737:92:29"}],"id":6511,"name":"Block","src":"6755:1085:29"}],"id":6512,"name":"ForStatement","src":"6710:1130:29"}],"id":6513,"name":"Block","src":"6297:1549:29"}],"id":6514,"name":"FunctionDefinition","src":"6040:1806:29"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":6615,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6515,"name":"ElementaryTypeName","src":"7995:7:29"}],"id":6516,"name":"ArrayTypeName","src":"7995:9:29"}],"id":6517,"name":"VariableDeclaration","src":"7995:26:29"}],"id":6518,"name":"ParameterList","src":"7994:28:29"},{"attributes":{"parameters":[null]},"children":[],"id":6521,"name":"ParameterList","src":"8042:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6519,"name":"Identifier","src":"8032:9:29"}],"id":6520,"name":"ModifierInvocation","src":"8032:9:29"},{"children":[{"children":[{"attributes":{"assignments":[6523]},"children":[{"attributes":{"constant":false,"name":"i","scope":6613,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6522,"name":"ElementaryTypeName","src":"8160:7:29"}],"id":6523,"name":"VariableDeclaration","src":"8160:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6524,"name":"Literal","src":"8172:1:29"}],"id":6525,"name":"VariableDeclarationStatement","src":"8160:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6523,"type":"uint256","value":"i"},"id":6526,"name":"Identifier","src":"8175:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6517,"type":"address[] calldata","value":"_tokens"},"id":6527,"name":"Identifier","src":"8179:7:29"}],"id":6528,"name":"MemberAccess","src":"8179:14:29"}],"id":6529,"name":"BinaryOperation","src":"8175:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6523,"type":"uint256","value":"i"},"id":6530,"name":"Identifier","src":"8195:1:29"}],"id":6531,"name":"UnaryOperation","src":"8195:3:29"}],"id":6532,"name":"ExpressionStatement","src":"8195:3:29"},{"children":[{"attributes":{"assignments":[6534]},"children":[{"attributes":{"constant":false,"name":"token","scope":6612,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6533,"name":"ElementaryTypeName","src":"8254:7:29"}],"id":6534,"name":"VariableDeclaration","src":"8254:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6517,"type":"address[] calldata","value":"_tokens"},"id":6535,"name":"Identifier","src":"8270:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6523,"type":"uint256","value":"i"},"id":6536,"name":"Identifier","src":"8278:1:29"}],"id":6537,"name":"IndexAccess","src":"8270:10:29"}],"id":6538,"name":"VariableDeclarationStatement","src":"8254:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6539,"name":"Identifier","src":"8363:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6540,"name":"Identifier","src":"8371:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6541,"name":"Identifier","src":"8385:5:29"}],"id":6542,"name":"IndexAccess","src":"8371:20:29"}],"id":6543,"name":"MemberAccess","src":"8371:30:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":6544,"name":"Literal","src":"8403:24:29"}],"id":6545,"name":"FunctionCall","src":"8363:65:29"}],"id":6546,"name":"ExpressionStatement","src":"8363:65:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6547,"name":"Identifier","src":"8518:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6548,"name":"Identifier","src":"8532:5:29"}],"id":6549,"name":"IndexAccess","src":"8518:20:29"}],"id":6550,"name":"MemberAccess","src":"8518:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6551,"name":"Identifier","src":"8569:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6552,"name":"Identifier","src":"8590:18:29"}],"id":6553,"name":"MemberAccess","src":"8590:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6554,"name":"Literal","src":"8613:1:29"}],"id":6555,"name":"FunctionCall","src":"8590:25:29"}],"id":6556,"name":"Assignment","src":"8569:46:29"}],"id":6557,"name":"ExpressionStatement","src":"8569:46:29"}],"id":6558,"name":"Block","src":"8551:79:29"}],"id":6559,"name":"IfStatement","src":"8514:116:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6560,"name":"Identifier","src":"8690:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6561,"name":"Identifier","src":"8704:5:29"}],"id":6562,"name":"IndexAccess","src":"8690:20:29"}],"id":6563,"name":"UnaryOperation","src":"8683:27:29"}],"id":6564,"name":"ExpressionStatement","src":"8683:27:29"},{"children":[{"attributes":{"assignments":[6566]},"children":[{"attributes":{"constant":false,"name":"j","scope":6600,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6565,"name":"ElementaryTypeName","src":"8792:7:29"}],"id":6566,"name":"VariableDeclaration","src":"8792:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6567,"name":"Literal","src":"8804:1:29"}],"id":6568,"name":"VariableDeclarationStatement","src":"8792:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"j"},"id":6569,"name":"Identifier","src":"8807:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6570,"name":"Identifier","src":"8811:18:29"}],"id":6571,"name":"MemberAccess","src":"8811:25:29"}],"id":6572,"name":"MemberAccess","src":"8811:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6573,"name":"Literal","src":"8841:1:29"}],"id":6574,"name":"FunctionCall","src":"8811:32:29"}],"id":6575,"name":"BinaryOperation","src":"8807:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"j"},"id":6576,"name":"Identifier","src":"8845:1:29"}],"id":6577,"name":"UnaryOperation","src":"8845:3:29"}],"id":6578,"name":"ExpressionStatement","src":"8845:3:29"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6579,"name":"Identifier","src":"8872:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"j"},"id":6580,"name":"Identifier","src":"8891:1:29"}],"id":6581,"name":"IndexAccess","src":"8872:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6582,"name":"Identifier","src":"8897:5:29"}],"id":6583,"name":"BinaryOperation","src":"8872:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6584,"name":"Identifier","src":"8926:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6566,"type":"uint256","value":"j"},"id":6585,"name":"Identifier","src":"8945:1:29"}],"id":6586,"name":"IndexAccess","src":"8926:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6587,"name":"Identifier","src":"8950:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6588,"name":"Identifier","src":"8969:18:29"}],"id":6589,"name":"MemberAccess","src":"8969:25:29"}],"id":6590,"name":"MemberAccess","src":"8969:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6591,"name":"Literal","src":"8999:1:29"}],"id":6592,"name":"FunctionCall","src":"8969:32:29"}],"id":6593,"name":"IndexAccess","src":"8950:52:29"}],"id":6594,"name":"Assignment","src":"8926:76:29"}],"id":6595,"name":"ExpressionStatement","src":"8926:76:29"},{"id":6596,"name":"Break","src":"9024:5:29"}],"id":6597,"name":"Block","src":"8904:144:29"}],"id":6598,"name":"IfStatement","src":"8868:180:29"}],"id":6599,"name":"Block","src":"8850:212:29"}],"id":6600,"name":"ForStatement","src":"8787:275:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6601,"name":"Identifier","src":"9075:18:29"}],"id":6603,"name":"MemberAccess","src":"9075:25:29"}],"id":6604,"name":"UnaryOperation","src":"9075:27:29"}],"id":6605,"name":"ExpressionStatement","src":"9075:27:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6225,"type":"function (address,address)","value":"RemovedToken"},"id":6606,"name":"Identifier","src":"9162:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6607,"name":"Identifier","src":"9175:3:29"}],"id":6608,"name":"MemberAccess","src":"9175:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6534,"type":"address","value":"token"},"id":6609,"name":"Identifier","src":"9187:5:29"}],"id":6610,"name":"FunctionCall","src":"9162:31:29"}],"id":6611,"name":"EmitStatement","src":"9157:36:29"}],"id":6612,"name":"Block","src":"8200:1004:29"}],"id":6613,"name":"ForStatement","src":"8155:1049:29"}],"id":6614,"name":"Block","src":"8042:1168:29"}],"id":6615,"name":"FunctionDefinition","src":"7973:1237:29"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":6728,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6616,"name":"ElementaryTypeName","src":"9404:7:29"}],"id":6617,"name":"VariableDeclaration","src":"9404:14:29"},{"attributes":{"constant":false,"name":"_data","scope":6728,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6618,"name":"ElementaryTypeName","src":"9420:5:29"}],"id":6619,"name":"VariableDeclaration","src":"9420:20:29"}],"id":6620,"name":"ParameterList","src":"9403:38:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6728,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6621,"name":"ElementaryTypeName","src":"9465:7:29"}],"id":6622,"name":"VariableDeclaration","src":"9465:7:29"},{"attributes":{"constant":false,"name":"","scope":6728,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6623,"name":"ElementaryTypeName","src":"9474:7:29"}],"id":6624,"name":"VariableDeclaration","src":"9474:7:29"}],"id":6625,"name":"ParameterList","src":"9464:18:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6626,"name":"Identifier","src":"9669:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6627,"name":"Identifier","src":"9677:5:29"}],"id":6628,"name":"MemberAccess","src":"9677:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6629,"name":"Literal","src":"9693:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6630,"name":"Literal","src":"9697:2:29"}],"id":6631,"name":"BinaryOperation","src":"9693:6:29"}],"id":6632,"name":"BinaryOperation","src":"9677:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":6633,"name":"Literal","src":"9701:34:29"}],"id":6634,"name":"FunctionCall","src":"9669:67:29"}],"id":6635,"name":"ExpressionStatement","src":"9669:67:29"},{"attributes":{"assignments":[6637]},"children":[{"attributes":{"constant":false,"name":"signature","scope":6727,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6636,"name":"ElementaryTypeName","src":"9782:6:29"}],"id":6637,"name":"VariableDeclaration","src":"9782:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":9536,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6638,"name":"Identifier","src":"9801:5:29"}],"id":6639,"name":"MemberAccess","src":"9801:20:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6640,"name":"Literal","src":"9822:1:29"}],"id":6641,"name":"FunctionCall","src":"9801:23:29"}],"id":6642,"name":"VariableDeclarationStatement","src":"9782:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6643,"name":"Identifier","src":"9877:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":7029,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":6644,"name":"Identifier","src":"9885:22:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6617,"type":"address","value":"_token"},"id":6645,"name":"Identifier","src":"9908:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6637,"type":"bytes4","value":"signature"},"id":6646,"name":"Identifier","src":"9916:9:29"}],"id":6647,"name":"FunctionCall","src":"9885:41:29"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":6648,"name":"Literal","src":"9928:20:29"}],"id":6649,"name":"FunctionCall","src":"9877:72:29"}],"id":6650,"name":"ExpressionStatement","src":"9877:72:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6637,"type":"bytes4","value":"signature"},"id":6651,"name":"Identifier","src":"10048:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6259,"type":"bytes4","value":"_BURN"},"id":6652,"name":"Identifier","src":"10061:5:29"}],"id":6653,"name":"BinaryOperation","src":"10048:18:29"},{"children":[{"attributes":{"functionReturnParameters":6625},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6617,"type":"address","value":"_token"},"id":6654,"name":"Identifier","src":"10133:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9570,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6655,"name":"Identifier","src":"10141:5:29"}],"id":6656,"name":"MemberAccess","src":"10141:21:29"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6657,"name":"Literal","src":"10163:1:29"}],"id":6658,"name":"FunctionCall","src":"10141:24:29"}],"id":6659,"name":"TupleExpression","src":"10132:34:29"}],"id":6660,"name":"Return","src":"10125:41:29"}],"id":6661,"name":"Block","src":"10068:109:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6637,"type":"bytes4","value":"signature"},"id":6662,"name":"Identifier","src":"10187:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6265,"type":"bytes4","value":"_TRANSFER_FROM"},"id":6663,"name":"Identifier","src":"10200:14:29"}],"id":6664,"name":"BinaryOperation","src":"10187:27:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6665,"name":"Identifier","src":"10301:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6666,"name":"Identifier","src":"10309:5:29"}],"id":6667,"name":"MemberAccess","src":"10309:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6668,"name":"Literal","src":"10325:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6669,"name":"Literal","src":"10329:2:29"}],"id":6670,"name":"BinaryOperation","src":"10325:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6671,"name":"Literal","src":"10334:2:29"}],"id":6672,"name":"BinaryOperation","src":"10325:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6673,"name":"Literal","src":"10339:2:29"}],"id":6674,"name":"BinaryOperation","src":"10325:16:29"}],"id":6675,"name":"BinaryOperation","src":"10309:32:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":6676,"name":"Literal","src":"10343:34:29"}],"id":6677,"name":"FunctionCall","src":"10301:77:29"}],"id":6678,"name":"ExpressionStatement","src":"10301:77:29"},{"attributes":{"functionReturnParameters":6625},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":9502,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6679,"name":"Identifier","src":"10400:5:29"}],"id":6680,"name":"MemberAccess","src":"10400:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6681,"name":"Literal","src":"10422:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6682,"name":"Literal","src":"10426:2:29"}],"id":6683,"name":"BinaryOperation","src":"10422:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":6684,"name":"Literal","src":"10431:2:29"}],"id":6685,"name":"BinaryOperation","src":"10422:11:29"}],"id":6686,"name":"FunctionCall","src":"10400:34:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9570,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6687,"name":"Identifier","src":"10436:5:29"}],"id":6688,"name":"MemberAccess","src":"10436:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6689,"name":"Literal","src":"10458:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6690,"name":"Literal","src":"10462:2:29"}],"id":6691,"name":"BinaryOperation","src":"10458:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6692,"name":"Literal","src":"10467:2:29"}],"id":6693,"name":"BinaryOperation","src":"10458:11:29"}],"id":6694,"name":"FunctionCall","src":"10436:34:29"}],"id":6695,"name":"TupleExpression","src":"10399:72:29"}],"id":6696,"name":"Return","src":"10392:79:29"}],"id":6697,"name":"Block","src":"10216:266:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6698,"name":"Identifier","src":"10590:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6699,"name":"Identifier","src":"10598:5:29"}],"id":6700,"name":"MemberAccess","src":"10598:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6701,"name":"Literal","src":"10614:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6702,"name":"Literal","src":"10618:2:29"}],"id":6703,"name":"BinaryOperation","src":"10614:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6704,"name":"Literal","src":"10623:2:29"}],"id":6705,"name":"BinaryOperation","src":"10614:11:29"}],"id":6706,"name":"BinaryOperation","src":"10598:27:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":6707,"name":"Literal","src":"10627:39:29"}],"id":6708,"name":"FunctionCall","src":"10590:77:29"}],"id":6709,"name":"ExpressionStatement","src":"10590:77:29"},{"attributes":{"functionReturnParameters":6625},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":9502,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6710,"name":"Identifier","src":"10689:5:29"}],"id":6711,"name":"MemberAccess","src":"10689:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6712,"name":"Literal","src":"10711:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":6713,"name":"Literal","src":"10715:2:29"}],"id":6714,"name":"BinaryOperation","src":"10711:6:29"}],"id":6715,"name":"FunctionCall","src":"10689:29:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9570,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"bytes calldata","value":"_data"},"id":6716,"name":"Identifier","src":"10720:5:29"}],"id":6717,"name":"MemberAccess","src":"10720:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":6718,"name":"Literal","src":"10742:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6719,"name":"Literal","src":"10746:2:29"}],"id":6720,"name":"BinaryOperation","src":"10742:6:29"}],"id":6721,"name":"FunctionCall","src":"10720:29:29"}],"id":6722,"name":"TupleExpression","src":"10688:62:29"}],"id":6723,"name":"Return","src":"10681:69:29"}],"id":6724,"name":"Block","src":"10488:273:29"}],"id":6725,"name":"IfStatement","src":"10183:578:29"}],"id":6726,"name":"IfStatement","src":"10044:717:29"}],"id":6727,"name":"Block","src":"9483:1284:29"}],"id":6728,"name":"FunctionDefinition","src":"9368:1399:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":6760,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6729,"name":"ElementaryTypeName","src":"10866:7:29"}],"id":6730,"name":"VariableDeclaration","src":"10866:14:29"},{"attributes":{"constant":false,"name":"_loadable","scope":6760,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6731,"name":"ElementaryTypeName","src":"10882:4:29"}],"id":6732,"name":"VariableDeclaration","src":"10882:14:29"}],"id":6733,"name":"ParameterList","src":"10865:32:29"},{"attributes":{"parameters":[null]},"children":[],"id":6736,"name":"ParameterList","src":"10917:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6734,"name":"Identifier","src":"10907:9:29"}],"id":6735,"name":"ModifierInvocation","src":"10907:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6737,"name":"Identifier","src":"10969:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6738,"name":"Identifier","src":"10977:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"address","value":"_token"},"id":6739,"name":"Identifier","src":"10991:6:29"}],"id":6740,"name":"IndexAccess","src":"10977:21:29"}],"id":6741,"name":"MemberAccess","src":"10977:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":6742,"name":"Literal","src":"11010:24:29"}],"id":6743,"name":"FunctionCall","src":"10969:66:29"}],"id":6744,"name":"ExpressionStatement","src":"10969:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":6275,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6745,"name":"Identifier","src":"11108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"address","value":"_token"},"id":6746,"name":"Identifier","src":"11122:6:29"}],"id":6747,"name":"IndexAccess","src":"11108:21:29"}],"id":6748,"name":"MemberAccess","src":"11108:30:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6732,"type":"bool","value":"_loadable"},"id":6749,"name":"Identifier","src":"11141:9:29"}],"id":6750,"name":"Assignment","src":"11108:42:29"}],"id":6751,"name":"ExpressionStatement","src":"11108:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6197,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":6752,"name":"Identifier","src":"11166:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6753,"name":"Identifier","src":"11187:3:29"}],"id":6754,"name":"MemberAccess","src":"11187:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6730,"type":"address","value":"_token"},"id":6755,"name":"Identifier","src":"11199:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6732,"type":"bool","value":"_loadable"},"id":6756,"name":"Identifier","src":"11207:9:29"}],"id":6757,"name":"FunctionCall","src":"11166:51:29"}],"id":6758,"name":"EmitStatement","src":"11161:56:29"}],"id":6759,"name":"Block","src":"10917:307:29"}],"id":6760,"name":"FunctionDefinition","src":"10840:384:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":6792,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6761,"name":"ElementaryTypeName","src":"11327:7:29"}],"id":6762,"name":"VariableDeclaration","src":"11327:14:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":6792,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6763,"name":"ElementaryTypeName","src":"11343:4:29"}],"id":6764,"name":"VariableDeclaration","src":"11343:16:29"}],"id":6765,"name":"ParameterList","src":"11326:34:29"},{"attributes":{"parameters":[null]},"children":[],"id":6768,"name":"ParameterList","src":"11380:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6766,"name":"Identifier","src":"11370:9:29"}],"id":6767,"name":"ModifierInvocation","src":"11370:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6769,"name":"Identifier","src":"11432:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6770,"name":"Identifier","src":"11440:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"address","value":"_token"},"id":6771,"name":"Identifier","src":"11454:6:29"}],"id":6772,"name":"IndexAccess","src":"11440:21:29"}],"id":6773,"name":"MemberAccess","src":"11440:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":6774,"name":"Literal","src":"11473:24:29"}],"id":6775,"name":"FunctionCall","src":"11432:66:29"}],"id":6776,"name":"ExpressionStatement","src":"11432:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6777,"name":"Identifier","src":"11573:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"address","value":"_token"},"id":6778,"name":"Identifier","src":"11587:6:29"}],"id":6779,"name":"IndexAccess","src":"11573:21:29"}],"id":6780,"name":"MemberAccess","src":"11573:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bool","value":"_redeemable"},"id":6781,"name":"Identifier","src":"11608:11:29"}],"id":6782,"name":"Assignment","src":"11573:46:29"}],"id":6783,"name":"ExpressionStatement","src":"11573:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6205,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":6784,"name":"Identifier","src":"11635:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6785,"name":"Identifier","src":"11658:3:29"}],"id":6786,"name":"MemberAccess","src":"11658:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6762,"type":"address","value":"_token"},"id":6787,"name":"Identifier","src":"11670:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bool","value":"_redeemable"},"id":6788,"name":"Identifier","src":"11678:11:29"}],"id":6789,"name":"FunctionCall","src":"11635:55:29"}],"id":6790,"name":"EmitStatement","src":"11630:60:29"}],"id":6791,"name":"Block","src":"11380:317:29"}],"id":6792,"name":"FunctionDefinition","src":"11299:398:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":6833,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6793,"name":"ElementaryTypeName","src":"11999:7:29"}],"id":6794,"name":"VariableDeclaration","src":"11999:14:29"},{"attributes":{"constant":false,"name":"_rate","scope":6833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6795,"name":"ElementaryTypeName","src":"12015:7:29"}],"id":6796,"name":"VariableDeclaration","src":"12015:13:29"},{"attributes":{"constant":false,"name":"_updateDate","scope":6833,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6797,"name":"ElementaryTypeName","src":"12030:7:29"}],"id":6798,"name":"VariableDeclaration","src":"12030:19:29"}],"id":6799,"name":"ParameterList","src":"11998:52:29"},{"attributes":{"parameters":[null]},"children":[],"id":6802,"name":"ParameterList","src":"12078:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6370,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":6800,"name":"Identifier","src":"12060:17:29"}],"id":6801,"name":"ModifierInvocation","src":"12060:17:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":6803,"name":"Identifier","src":"12130:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6804,"name":"Identifier","src":"12138:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"address","value":"_token"},"id":6805,"name":"Identifier","src":"12152:6:29"}],"id":6806,"name":"IndexAccess","src":"12138:21:29"}],"id":6807,"name":"MemberAccess","src":"12138:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":6808,"name":"Literal","src":"12171:24:29"}],"id":6809,"name":"FunctionCall","src":"12130:66:29"}],"id":6810,"name":"ExpressionStatement","src":"12130:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":6271,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6811,"name":"Identifier","src":"12242:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"address","value":"_token"},"id":6812,"name":"Identifier","src":"12256:6:29"}],"id":6813,"name":"IndexAccess","src":"12242:21:29"}],"id":6814,"name":"MemberAccess","src":"12242:26:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6796,"type":"uint256","value":"_rate"},"id":6815,"name":"Identifier","src":"12271:5:29"}],"id":6816,"name":"Assignment","src":"12242:34:29"}],"id":6817,"name":"ExpressionStatement","src":"12242:34:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":6279,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6818,"name":"Identifier","src":"12339:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"address","value":"_token"},"id":6819,"name":"Identifier","src":"12353:6:29"}],"id":6820,"name":"IndexAccess","src":"12339:21:29"}],"id":6821,"name":"MemberAccess","src":"12339:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6798,"type":"uint256","value":"_updateDate"},"id":6822,"name":"Identifier","src":"12374:11:29"}],"id":6823,"name":"Assignment","src":"12339:46:29"}],"id":6824,"name":"ExpressionStatement","src":"12339:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6189,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":6825,"name":"Identifier","src":"12439:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":6826,"name":"Identifier","src":"12456:3:29"}],"id":6827,"name":"MemberAccess","src":"12456:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6794,"type":"address","value":"_token"},"id":6828,"name":"Identifier","src":"12468:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6796,"type":"uint256","value":"_rate"},"id":6829,"name":"Identifier","src":"12476:5:29"}],"id":6830,"name":"FunctionCall","src":"12439:43:29"}],"id":6831,"name":"EmitStatement","src":"12434:48:29"}],"id":6832,"name":"Block","src":"12078:411:29"}],"id":6833,"name":"FunctionDefinition","src":"11974:515:29"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":7067,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":6857,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":6834,"name":"ElementaryTypeName","src":"12593:15:29"}],"id":6835,"name":"VariableDeclaration","src":"12593:19:29"},{"attributes":{"constant":false,"name":"_asset","scope":6857,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6836,"name":"ElementaryTypeName","src":"12614:7:29"}],"id":6837,"name":"VariableDeclaration","src":"12614:14:29"},{"attributes":{"constant":false,"name":"_amount","scope":6857,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6838,"name":"ElementaryTypeName","src":"12630:7:29"}],"id":6839,"name":"VariableDeclaration","src":"12630:15:29"}],"id":6840,"name":"ParameterList","src":"12592:54:29"},{"attributes":{"parameters":[null]},"children":[],"id":6843,"name":"ParameterList","src":"12666:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":250,"type":"modifier ()","value":"onlyAdmin"},"id":6841,"name":"Identifier","src":"12656:9:29"}],"id":6842,"name":"ModifierInvocation","src":"12656:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":6844,"name":"Identifier","src":"12676:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6835,"type":"address payable","value":"_to"},"id":6845,"name":"Identifier","src":"12690:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6837,"type":"address","value":"_asset"},"id":6846,"name":"Identifier","src":"12695:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6839,"type":"uint256","value":"_amount"},"id":6847,"name":"Identifier","src":"12703:7:29"}],"id":6848,"name":"FunctionCall","src":"12676:35:29"}],"id":6849,"name":"ExpressionStatement","src":"12676:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6253,"type":"function (address,address,uint256)","value":"Claimed"},"id":6850,"name":"Identifier","src":"12726:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6835,"type":"address payable","value":"_to"},"id":6851,"name":"Identifier","src":"12734:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6837,"type":"address","value":"_asset"},"id":6852,"name":"Identifier","src":"12739:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6839,"type":"uint256","value":"_amount"},"id":6853,"name":"Identifier","src":"12747:7:29"}],"id":6854,"name":"FunctionCall","src":"12726:29:29"}],"id":6855,"name":"EmitStatement","src":"12721:34:29"}],"id":6856,"name":"Block","src":"12666:96:29"}],"id":6857,"name":"FunctionDefinition","src":"12578:184:29"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":6899,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6858,"name":"ElementaryTypeName","src":"13336:7:29"}],"id":6859,"name":"VariableDeclaration","src":"13336:10:29"}],"id":6860,"name":"ParameterList","src":"13335:12:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6861,"name":"ElementaryTypeName","src":"13371:6:29"}],"id":6862,"name":"VariableDeclaration","src":"13371:13:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6863,"name":"ElementaryTypeName","src":"13386:7:29"}],"id":6864,"name":"VariableDeclaration","src":"13386:7:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6865,"name":"ElementaryTypeName","src":"13395:7:29"}],"id":6866,"name":"VariableDeclaration","src":"13395:7:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6867,"name":"ElementaryTypeName","src":"13404:4:29"}],"id":6868,"name":"VariableDeclaration","src":"13404:4:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6869,"name":"ElementaryTypeName","src":"13410:4:29"}],"id":6870,"name":"VariableDeclaration","src":"13410:4:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6871,"name":"ElementaryTypeName","src":"13416:4:29"}],"id":6872,"name":"VariableDeclaration","src":"13416:4:29"},{"attributes":{"constant":false,"name":"","scope":6899,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6873,"name":"ElementaryTypeName","src":"13422:7:29"}],"id":6874,"name":"VariableDeclaration","src":"13422:7:29"}],"id":6875,"name":"ParameterList","src":"13370:60:29"},{"children":[{"attributes":{"assignments":[6877]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":6898,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":6280,"type":"struct TokenWhitelist.Token"},"id":6876,"name":"UserDefinedTypeName","src":"13441:5:29"}],"id":6877,"name":"VariableDeclaration","src":"13441:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6878,"name":"Identifier","src":"13467:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6859,"type":"address","value":"_a"},"id":6879,"name":"Identifier","src":"13481:2:29"}],"id":6880,"name":"IndexAccess","src":"13467:17:29"}],"id":6881,"name":"VariableDeclarationStatement","src":"13441:43:29"},{"attributes":{"functionReturnParameters":6875},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":6267,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6882,"name":"Identifier","src":"13502:9:29"}],"id":6883,"name":"MemberAccess","src":"13502:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":6269,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6884,"name":"Identifier","src":"13520:9:29"}],"id":6885,"name":"MemberAccess","src":"13520:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":6271,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6886,"name":"Identifier","src":"13541:9:29"}],"id":6887,"name":"MemberAccess","src":"13541:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6888,"name":"Identifier","src":"13557:9:29"}],"id":6889,"name":"MemberAccess","src":"13557:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":6275,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6890,"name":"Identifier","src":"13578:9:29"}],"id":6891,"name":"MemberAccess","src":"13578:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6892,"name":"Identifier","src":"13598:9:29"}],"id":6893,"name":"MemberAccess","src":"13598:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":6279,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6877,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":6894,"name":"Identifier","src":"13620:9:29"}],"id":6895,"name":"MemberAccess","src":"13620:20:29"}],"id":6896,"name":"TupleExpression","src":"13501:140:29"}],"id":6897,"name":"Return","src":"13494:147:29"}],"id":6898,"name":"Block","src":"13431:217:29"}],"id":6899,"name":"FunctionDefinition","src":"13314:334:29"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6900,"name":"ParameterList","src":"14176:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":6901,"name":"ElementaryTypeName","src":"14202:6:29"}],"id":6902,"name":"VariableDeclaration","src":"14202:13:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6903,"name":"ElementaryTypeName","src":"14217:7:29"}],"id":6904,"name":"VariableDeclaration","src":"14217:7:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6905,"name":"ElementaryTypeName","src":"14226:7:29"}],"id":6906,"name":"VariableDeclaration","src":"14226:7:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6907,"name":"ElementaryTypeName","src":"14235:4:29"}],"id":6908,"name":"VariableDeclaration","src":"14235:4:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6909,"name":"ElementaryTypeName","src":"14241:4:29"}],"id":6910,"name":"VariableDeclaration","src":"14241:4:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6911,"name":"ElementaryTypeName","src":"14247:4:29"}],"id":6912,"name":"VariableDeclaration","src":"14247:4:29"},{"attributes":{"constant":false,"name":"","scope":6939,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6913,"name":"ElementaryTypeName","src":"14253:7:29"}],"id":6914,"name":"VariableDeclaration","src":"14253:7:29"}],"id":6915,"name":"ParameterList","src":"14201:60:29"},{"children":[{"attributes":{"assignments":[6917]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":6938,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":6280,"type":"struct TokenWhitelist.Token"},"id":6916,"name":"UserDefinedTypeName","src":"14272:5:29"}],"id":6917,"name":"VariableDeclaration","src":"14272:28:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6918,"name":"Identifier","src":"14303:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6295,"type":"address","value":"_stablecoin"},"id":6919,"name":"Identifier","src":"14317:11:29"}],"id":6920,"name":"IndexAccess","src":"14303:26:29"}],"id":6921,"name":"VariableDeclarationStatement","src":"14272:57:29"},{"attributes":{"functionReturnParameters":6915},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":6267,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6922,"name":"Identifier","src":"14360:14:29"}],"id":6923,"name":"MemberAccess","src":"14360:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":6269,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6924,"name":"Identifier","src":"14395:14:29"}],"id":6925,"name":"MemberAccess","src":"14395:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":6271,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6926,"name":"Identifier","src":"14433:14:29"}],"id":6927,"name":"MemberAccess","src":"14433:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6928,"name":"Identifier","src":"14466:14:29"}],"id":6929,"name":"MemberAccess","src":"14466:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":6275,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6930,"name":"Identifier","src":"14504:14:29"}],"id":6931,"name":"MemberAccess","src":"14504:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6932,"name":"Identifier","src":"14541:14:29"}],"id":6933,"name":"MemberAccess","src":"14541:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":6279,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6917,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":6934,"name":"Identifier","src":"14580:14:29"}],"id":6935,"name":"MemberAccess","src":"14580:25:29"}],"id":6936,"name":"TupleExpression","src":"14346:269:29"}],"id":6937,"name":"Return","src":"14339:276:29"}],"id":6938,"name":"Block","src":"14262:360:29"}],"id":6939,"name":"FunctionDefinition","src":"14150:472:29"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6940,"name":"ParameterList","src":"14777:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6948,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6941,"name":"ElementaryTypeName","src":"14803:7:29"}],"id":6942,"name":"ArrayTypeName","src":"14803:9:29"}],"id":6943,"name":"VariableDeclaration","src":"14803:16:29"}],"id":6944,"name":"ParameterList","src":"14802:18:29"},{"children":[{"attributes":{"functionReturnParameters":6944},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6945,"name":"Identifier","src":"14838:18:29"}],"id":6946,"name":"Return","src":"14831:25:29"}],"id":6947,"name":"Block","src":"14821:42:29"}],"id":6948,"name":"FunctionDefinition","src":"14751:112:29"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6949,"name":"ParameterList","src":"15015:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7006,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6950,"name":"ElementaryTypeName","src":"15041:7:29"}],"id":6951,"name":"ArrayTypeName","src":"15041:9:29"}],"id":6952,"name":"VariableDeclaration","src":"15041:16:29"}],"id":6953,"name":"ParameterList","src":"15040:18:29"},{"children":[{"attributes":{"assignments":[6957]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":7005,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":6955,"name":"ElementaryTypeName","src":"15069:7:29"}],"id":6956,"name":"ArrayTypeName","src":"15069:9:29"}],"id":6957,"name":"VariableDeclaration","src":"15069:36:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6958,"name":"ElementaryTypeName","src":"15112:7:29"}],"id":6959,"name":"ArrayTypeName","src":"15112:9:29"}],"id":6960,"name":"NewExpression","src":"15108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":6961,"name":"Identifier","src":"15122:18:29"}],"id":6962,"name":"FunctionCall","src":"15108:33:29"}],"id":6963,"name":"VariableDeclarationStatement","src":"15069:72:29"},{"attributes":{"assignments":[6965]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":7005,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6964,"name":"ElementaryTypeName","src":"15151:7:29"}],"id":6965,"name":"VariableDeclaration","src":"15151:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6966,"name":"Literal","src":"15177:1:29"}],"id":6967,"name":"VariableDeclarationStatement","src":"15151:27:29"},{"children":[{"attributes":{"assignments":[6969]},"children":[{"attributes":{"constant":false,"name":"i","scope":7002,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6968,"name":"ElementaryTypeName","src":"15193:7:29"}],"id":6969,"name":"VariableDeclaration","src":"15193:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6970,"name":"Literal","src":"15205:1:29"}],"id":6971,"name":"VariableDeclarationStatement","src":"15193:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"uint256","value":"i"},"id":6972,"name":"Identifier","src":"15208:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6973,"name":"Identifier","src":"15212:18:29"}],"id":6974,"name":"MemberAccess","src":"15212:25:29"}],"id":6975,"name":"BinaryOperation","src":"15208:29:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"uint256","value":"i"},"id":6976,"name":"Identifier","src":"15239:1:29"}],"id":6977,"name":"UnaryOperation","src":"15239:3:29"}],"id":6978,"name":"ExpressionStatement","src":"15239:3:29"},{"children":[{"attributes":{"assignments":[6980]},"children":[{"attributes":{"constant":false,"name":"token","scope":7001,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6979,"name":"ElementaryTypeName","src":"15258:7:29"}],"id":6980,"name":"VariableDeclaration","src":"15258:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6291,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":6981,"name":"Identifier","src":"15274:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"uint256","value":"i"},"id":6982,"name":"Identifier","src":"15293:1:29"}],"id":6983,"name":"IndexAccess","src":"15274:21:29"}],"id":6984,"name":"VariableDeclarationStatement","src":"15258:37:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":6277,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":6985,"name":"Identifier","src":"15313:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6980,"type":"address","value":"token"},"id":6986,"name":"Identifier","src":"15327:5:29"}],"id":6987,"name":"IndexAccess","src":"15313:20:29"}],"id":6988,"name":"MemberAccess","src":"15313:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6957,"type":"address[] memory","value":"redeemableAddresses"},"id":6989,"name":"Identifier","src":"15364:19:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6965,"type":"uint256","value":"redeemableIndex"},"id":6990,"name":"Identifier","src":"15384:15:29"}],"id":6991,"name":"IndexAccess","src":"15364:36:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6980,"type":"address","value":"token"},"id":6992,"name":"Identifier","src":"15403:5:29"}],"id":6993,"name":"Assignment","src":"15364:44:29"}],"id":6994,"name":"ExpressionStatement","src":"15364:44:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6965,"type":"uint256","value":"redeemableIndex"},"id":6995,"name":"Identifier","src":"15426:15:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6996,"name":"Literal","src":"15445:1:29"}],"id":6997,"name":"Assignment","src":"15426:20:29"}],"id":6998,"name":"ExpressionStatement","src":"15426:20:29"}],"id":6999,"name":"Block","src":"15346:115:29"}],"id":7000,"name":"IfStatement","src":"15309:152:29"}],"id":7001,"name":"Block","src":"15244:227:29"}],"id":7002,"name":"ForStatement","src":"15188:283:29"},{"attributes":{"functionReturnParameters":6953},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6957,"type":"address[] memory","value":"redeemableAddresses"},"id":7003,"name":"Identifier","src":"15487:19:29"}],"id":7004,"name":"Return","src":"15480:26:29"}],"id":7005,"name":"Block","src":"15059:454:29"}],"id":7006,"name":"FunctionDefinition","src":"14990:523:29"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":7029,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7007,"name":"ElementaryTypeName","src":"15727:7:29"}],"id":7008,"name":"VariableDeclaration","src":"15727:14:29"},{"attributes":{"constant":false,"name":"_methodId","scope":7029,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7009,"name":"ElementaryTypeName","src":"15743:6:29"}],"id":7010,"name":"VariableDeclaration","src":"15743:16:29"}],"id":7011,"name":"ParameterList","src":"15726:34:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7029,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7012,"name":"ElementaryTypeName","src":"15782:4:29"}],"id":7013,"name":"VariableDeclaration","src":"15782:4:29"}],"id":7014,"name":"ParameterList","src":"15781:6:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":7015,"name":"Identifier","src":"15798:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":6273,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6284,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":7016,"name":"Identifier","src":"15806:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7008,"type":"address","value":"_token"},"id":7017,"name":"Identifier","src":"15820:6:29"}],"id":7018,"name":"IndexAccess","src":"15806:21:29"}],"id":7019,"name":"MemberAccess","src":"15806:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":7020,"name":"Literal","src":"15839:20:29"}],"id":7021,"name":"FunctionCall","src":"15798:62:29"}],"id":7022,"name":"ExpressionStatement","src":"15798:62:29"},{"attributes":{"functionReturnParameters":7014},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":7023,"name":"Identifier","src":"15878:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7010,"type":"bytes4","value":"_methodId"},"id":7024,"name":"Identifier","src":"15897:9:29"}],"id":7025,"name":"IndexAccess","src":"15878:29:29"}],"id":7026,"name":"TupleExpression","src":"15877:31:29"}],"id":7027,"name":"Return","src":"15870:38:29"}],"id":7028,"name":"Block","src":"15788:127:29"}],"id":7029,"name":"FunctionDefinition","src":"15695:220:29"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":7042,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7030,"name":"ElementaryTypeName","src":"16104:6:29"}],"id":7031,"name":"VariableDeclaration","src":"16104:16:29"}],"id":7032,"name":"ParameterList","src":"16103:18:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7042,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7033,"name":"ElementaryTypeName","src":"16145:4:29"}],"id":7034,"name":"VariableDeclaration","src":"16145:4:29"}],"id":7035,"name":"ParameterList","src":"16144:6:29"},{"children":[{"attributes":{"functionReturnParameters":7035},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6288,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":7036,"name":"Identifier","src":"16169:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7031,"type":"bytes4","value":"_methodId"},"id":7037,"name":"Identifier","src":"16188:9:29"}],"id":7038,"name":"IndexAccess","src":"16169:29:29"}],"id":7039,"name":"TupleExpression","src":"16168:31:29"}],"id":7040,"name":"Return","src":"16161:38:29"}],"id":7041,"name":"Block","src":"16151:55:29"}],"id":7042,"name":"FunctionDefinition","src":"16070:136:29"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7043,"name":"ParameterList","src":"16342:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7050,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7044,"name":"ElementaryTypeName","src":"16368:7:29"}],"id":7045,"name":"VariableDeclaration","src":"16368:7:29"}],"id":7046,"name":"ParameterList","src":"16367:9:29"},{"children":[{"attributes":{"functionReturnParameters":7046},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6293,"type":"uint256","value":"_redeemableCounter"},"id":7047,"name":"Identifier","src":"16394:18:29"}],"id":7048,"name":"Return","src":"16387:25:29"}],"id":7049,"name":"Block","src":"16377:42:29"}],"id":7050,"name":"FunctionDefinition","src":"16316:103:29"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7051,"name":"ParameterList","src":"16570:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7058,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":7052,"name":"ElementaryTypeName","src":"16596:7:29"}],"id":7053,"name":"VariableDeclaration","src":"16596:7:29"}],"id":7054,"name":"ParameterList","src":"16595:9:29"},{"children":[{"attributes":{"functionReturnParameters":7054},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6295,"type":"address","value":"_stablecoin"},"id":7055,"name":"Identifier","src":"16622:11:29"}],"id":7056,"name":"Return","src":"16615:18:29"}],"id":7057,"name":"Block","src":"16605:35:29"}],"id":7058,"name":"FunctionDefinition","src":"16551:89:29"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":7067,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":7059,"name":"ParameterList","src":"16774:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":7066,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7060,"name":"ElementaryTypeName","src":"16800:7:29"}],"id":7061,"name":"VariableDeclaration","src":"16800:7:29"}],"id":7062,"name":"ParameterList","src":"16799:9:29"},{"children":[{"attributes":{"functionReturnParameters":7062},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6297,"type":"bytes32","value":"_oracleNode"},"id":7063,"name":"Identifier","src":"16826:11:29"}],"id":7064,"name":"Return","src":"16819:18:29"}],"id":7065,"name":"Block","src":"16809:35:29"}],"id":7066,"name":"FunctionDefinition","src":"16755:89:29"}],"id":7067,"name":"ContractDefinition","src":"1939:14907:29"}],"id":7068,"name":"SourceUnit","src":"774:16073:29"}},"wallet.sol":{"AST":{"attributes":{"absolutePath":"wallet.sol","exportedSymbols":{"AddressWhitelist":[945],"ControllableOwnable":[375],"DailyLimitTrait":[1147],"GasTopUpLimit":[1437],"LoadLimit":[1611],"SelfCallableOwnable":[397],"SpendLimit":[1279],"Wallet":[2522]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":340,"name":"PragmaDirective","src":"757:24:30"},{"attributes":{"SourceUnit":4793,"absolutePath":"licence.sol","file":"./licence.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":341,"name":"ImportDirective","src":"783:23:30"},{"attributes":{"SourceUnit":3992,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":342,"name":"ImportDirective","src":"807:33:30"},{"attributes":{"SourceUnit":294,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":343,"name":"ImportDirective","src":"841:38:30"},{"attributes":{"SourceUnit":3835,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":344,"name":"ImportDirective","src":"880:37:30"},{"attributes":{"SourceUnit":4249,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":345,"name":"ImportDirective","src":"918:39:30"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":346,"name":"ImportDirective","src":"958:39:30"},{"attributes":{"SourceUnit":4209,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":347,"name":"ImportDirective","src":"998:44:30"},{"attributes":{"SourceUnit":3803,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":348,"name":"ImportDirective","src":"1043:34:30"},{"attributes":{"SourceUnit":3307,"absolutePath":"externals/Address.sol","file":"./externals/Address.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":349,"name":"ImportDirective","src":"1078:33:30"},{"attributes":{"SourceUnit":3451,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":350,"name":"ImportDirective","src":"1112:31:30"},{"attributes":{"SourceUnit":3670,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":351,"name":"ImportDirective","src":"1144:35:30"},{"attributes":{"SourceUnit":3398,"absolutePath":"externals/ERC165.sol","file":"./externals/ERC165.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":352,"name":"ImportDirective","src":"1180:32:30"},{"attributes":{"SourceUnit":3388,"absolutePath":"externals/ECDSA.sol","file":"./externals/ECDSA.sol","scope":2523,"symbolAliases":[null],"unitAlias":""},"id":353,"name":"ImportDirective","src":"1213:31:30"},{"attributes":{"contractDependencies":[293,338,3991],"contractKind":"contract","documentation":"@title ControllableOwnable combines Controllable and Ownable\n @dev providing an additional modifier to check if Owner or Controller","fullyImplemented":false,"linearizedBaseContracts":[375,3991,293,338],"name":"ControllableOwnable","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":293,"type":"contract Controllable"},"id":354,"name":"UserDefinedTypeName","src":"1418:12:30"}],"id":355,"name":"InheritanceSpecifier","src":"1418:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3991,"type":"contract Ownable"},"id":356,"name":"UserDefinedTypeName","src":"1432:7:30"}],"id":357,"name":"InheritanceSpecifier","src":"1432:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or one of the Controllers","name":"onlyOwnerOrController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":358,"name":"ParameterList","src":"1548:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a244313930a94a6f5de4548387c8c245a5d11002ac47a2e54f96214a9879106","typeString":"literal_string \"only owner||controller\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":359,"name":"Identifier","src":"1561:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":360,"name":"Identifier","src":"1569:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":361,"name":"Identifier","src":"1578:3:30"}],"id":362,"name":"MemberAccess","src":"1578:10:30"}],"id":363,"name":"FunctionCall","src":"1569:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":275,"type":"function (address) view returns (bool)","value":"_isController"},"id":364,"name":"Identifier","src":"1593:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":365,"name":"Identifier","src":"1607:3:30"}],"id":366,"name":"MemberAccess","src":"1607:10:30"}],"id":367,"name":"FunctionCall","src":"1593:25:30"}],"id":368,"name":"BinaryOperation","src":"1569:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||controller\"","value":"only owner||controller"},"id":369,"name":"Literal","src":"1620:24:30"}],"id":370,"name":"FunctionCall","src":"1561:84:30"}],"id":371,"name":"ExpressionStatement","src":"1561:84:30"},{"id":372,"name":"PlaceholderStatement","src":"1655:1:30"}],"id":373,"name":"Block","src":"1551:112:30"}],"id":374,"name":"ModifierDefinition","src":"1518:145:30"}],"id":375,"name":"ContractDefinition","src":"1386:279:30"},{"attributes":{"contractDependencies":[3991],"contractKind":"contract","documentation":"@title SelfCallableOwnable allows either owner or the contract itself to call its functions\n @dev providing an additional modifier to check if Owner or self is calling\n @dev the \"self\" here is used for the meta transactions","fullyImplemented":false,"linearizedBaseContracts":[397,3991],"name":"SelfCallableOwnable","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3991,"type":"contract Ownable"},"id":376,"name":"UserDefinedTypeName","src":"1934:7:30"}],"id":377,"name":"InheritanceSpecifier","src":"1934:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or self","name":"onlyOwnerOrSelf","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":378,"name":"ParameterList","src":"2026:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c98ff749bed2b5f266d255ad845f8a2a0dba28f389ec62046d9aad839ae2d6","typeString":"literal_string \"only owner||self\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":379,"name":"Identifier","src":"2039:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":380,"name":"Identifier","src":"2047:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":381,"name":"Identifier","src":"2056:3:30"}],"id":382,"name":"MemberAccess","src":"2056:10:30"}],"id":383,"name":"FunctionCall","src":"2047:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":384,"name":"Identifier","src":"2071:3:30"}],"id":385,"name":"MemberAccess","src":"2071:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfCallableOwnable_$397","typeString":"contract SelfCallableOwnable"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":386,"name":"ElementaryTypeNameExpression","src":"2085:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10389,"type":"contract SelfCallableOwnable","value":"this"},"id":387,"name":"Identifier","src":"2093:4:30"}],"id":388,"name":"FunctionCall","src":"2085:13:30"}],"id":389,"name":"BinaryOperation","src":"2071:27:30"}],"id":390,"name":"BinaryOperation","src":"2047:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c73656c66","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||self\"","value":"only owner||self"},"id":391,"name":"Literal","src":"2100:18:30"}],"id":392,"name":"FunctionCall","src":"2039:80:30"}],"id":393,"name":"ExpressionStatement","src":"2039:80:30"},{"id":394,"name":"PlaceholderStatement","src":"2129:1:30"}],"id":395,"name":"Block","src":"2029:108:30"}],"id":396,"name":"ModifierDefinition","src":"2002:135:30"}],"id":397,"name":"ContractDefinition","src":"1902:237:30"},{"attributes":{"contractDependencies":[293,338,375,397,3991],"contractKind":"contract","documentation":"@title AddressWhitelist provides payee-whitelist functionality.\n @dev This contract will allow the user to maintain a whitelist of addresses\n @dev These addresses will live outside of the various spend limits","fullyImplemented":false,"linearizedBaseContracts":[945,397,375,3991,293,338],"name":"AddressWhitelist","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":375,"type":"contract ControllableOwnable"},"id":398,"name":"UserDefinedTypeName","src":"2390:19:30"}],"id":399,"name":"InheritanceSpecifier","src":"2390:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":397,"type":"contract SelfCallableOwnable"},"id":400,"name":"UserDefinedTypeName","src":"2411:19:30"}],"id":401,"name":"InheritanceSpecifier","src":"2411:19:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":402,"name":"UserDefinedTypeName","src":"2443:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":403,"name":"ElementaryTypeName","src":"2456:7:30"}],"id":404,"name":"UsingForDirective","src":"2437:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":411,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":405,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":406,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":411,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":407,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":408,"name":"ArrayTypeName","src":"2510:9:30"}],"id":409,"name":"VariableDeclaration","src":"2510:20:30"}],"id":410,"name":"ParameterList","src":"2492:39:30"}],"id":411,"name":"EventDefinition","src":"2470:62:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":412,"name":"ElementaryTypeName","src":"2570:7:30"}],"id":413,"name":"VariableDeclaration","src":"2570:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":417,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":414,"name":"ElementaryTypeName","src":"2587:7:30"}],"id":415,"name":"VariableDeclaration","src":"2587:13:30"}],"id":416,"name":"ParameterList","src":"2569:32:30"}],"id":417,"name":"EventDefinition","src":"2537:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":424,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":418,"name":"ElementaryTypeName","src":"2640:7:30"}],"id":419,"name":"ArrayTypeName","src":"2640:9:30"}],"id":420,"name":"VariableDeclaration","src":"2640:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":424,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":421,"name":"ElementaryTypeName","src":"2662:7:30"}],"id":422,"name":"VariableDeclaration","src":"2662:13:30"}],"id":423,"name":"ParameterList","src":"2639:37:30"}],"id":424,"name":"EventDefinition","src":"2607:70:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":430,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":425,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":426,"name":"VariableDeclaration","src":"2715:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":430,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":427,"name":"ElementaryTypeName","src":"2732:7:30"}],"id":428,"name":"VariableDeclaration","src":"2732:13:30"}],"id":429,"name":"ParameterList","src":"2714:32:30"}],"id":430,"name":"EventDefinition","src":"2683:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedFromWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":437,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":431,"name":"ElementaryTypeName","src":"2779:7:30"}],"id":432,"name":"VariableDeclaration","src":"2779:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":437,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":433,"name":"ElementaryTypeName","src":"2796:7:30"}],"id":434,"name":"ArrayTypeName","src":"2796:9:30"}],"id":435,"name":"VariableDeclaration","src":"2796:20:30"}],"id":436,"name":"ParameterList","src":"2778:39:30"}],"id":437,"name":"EventDefinition","src":"2752:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":444,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":438,"name":"ElementaryTypeName","src":"2855:7:30"}],"id":439,"name":"ArrayTypeName","src":"2855:9:30"}],"id":440,"name":"VariableDeclaration","src":"2855:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":444,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":441,"name":"ElementaryTypeName","src":"2877:7:30"}],"id":442,"name":"VariableDeclaration","src":"2877:13:30"}],"id":443,"name":"ParameterList","src":"2854:37:30"}],"id":444,"name":"EventDefinition","src":"2823:69:30"},{"attributes":{"constant":false,"name":"whitelistMap","scope":945,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":445,"name":"ElementaryTypeName","src":"2906:7:30"},{"attributes":{"name":"bool","type":"bool"},"id":446,"name":"ElementaryTypeName","src":"2917:4:30"}],"id":447,"name":"Mapping","src":"2898:24:30"}],"id":448,"name":"VariableDeclaration","src":"2898:44:30"},{"attributes":{"constant":false,"name":"whitelistArray","scope":945,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":449,"name":"ElementaryTypeName","src":"2948:7:30"}],"id":450,"name":"ArrayTypeName","src":"2948:9:30"}],"id":451,"name":"VariableDeclaration","src":"2948:31:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistAddition","scope":945,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":452,"name":"ElementaryTypeName","src":"2985:7:30"}],"id":453,"name":"ArrayTypeName","src":"2985:9:30"}],"id":454,"name":"VariableDeclaration","src":"2985:43:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistRemoval","scope":945,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":455,"name":"ElementaryTypeName","src":"3034:7:30"}],"id":456,"name":"ArrayTypeName","src":"3034:9:30"}],"id":457,"name":"VariableDeclaration","src":"3034:42:30"},{"attributes":{"constant":false,"name":"submittedWhitelistAddition","scope":945,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":458,"name":"ElementaryTypeName","src":"3082:4:30"}],"id":459,"name":"VariableDeclaration","src":"3082:38:30"},{"attributes":{"constant":false,"name":"submittedWhitelistRemoval","scope":945,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":460,"name":"ElementaryTypeName","src":"3126:4:30"}],"id":461,"name":"VariableDeclaration","src":"3126:37:30"},{"attributes":{"constant":false,"name":"isSetWhitelist","scope":945,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":462,"name":"ElementaryTypeName","src":"3169:4:30"}],"id":463,"name":"VariableDeclaration","src":"3169:26:30"},{"attributes":{"documentation":"@dev Check if the provided addresses contain the owner or the zero-address address.","name":"hasNoOwnerOrZeroAddress","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":504,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":464,"name":"ElementaryTypeName","src":"3327:7:30"}],"id":465,"name":"ArrayTypeName","src":"3327:9:30"}],"id":466,"name":"VariableDeclaration","src":"3327:27:30"}],"id":467,"name":"ParameterList","src":"3326:29:30"},{"children":[{"children":[{"attributes":{"assignments":[469]},"children":[{"attributes":{"constant":false,"name":"i","scope":501,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":468,"name":"ElementaryTypeName","src":"3371:7:30"}],"id":469,"name":"VariableDeclaration","src":"3371:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":470,"name":"Literal","src":"3383:1:30"}],"id":471,"name":"VariableDeclarationStatement","src":"3371:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"uint256","value":"i"},"id":472,"name":"Identifier","src":"3386:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"address[] memory","value":"_addresses"},"id":473,"name":"Identifier","src":"3390:10:30"}],"id":474,"name":"MemberAccess","src":"3390:17:30"}],"id":475,"name":"BinaryOperation","src":"3386:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"uint256","value":"i"},"id":476,"name":"Identifier","src":"3409:1:30"}],"id":477,"name":"UnaryOperation","src":"3409:3:30"}],"id":478,"name":"ExpressionStatement","src":"3409:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83144f57b92473167e9ce74530b82e833e4f010b46d8a2562f84cdc754bd4967","typeString":"literal_string \"contains owner address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":479,"name":"Identifier","src":"3428:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":480,"name":"Identifier","src":"3437:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"address[] memory","value":"_addresses"},"id":481,"name":"Identifier","src":"3446:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"uint256","value":"i"},"id":482,"name":"Identifier","src":"3457:1:30"}],"id":483,"name":"IndexAccess","src":"3446:13:30"}],"id":484,"name":"FunctionCall","src":"3437:23:30"}],"id":485,"name":"UnaryOperation","src":"3436:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e73206f776e65722061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains owner address\"","value":"contains owner address"},"id":486,"name":"Literal","src":"3462:24:30"}],"id":487,"name":"FunctionCall","src":"3428:59:30"}],"id":488,"name":"ExpressionStatement","src":"3428:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab14c1506b1b0c03aad2feb5e5b965df7dffe18036562732ceabd49019d58098","typeString":"literal_string \"contains 0 address\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":489,"name":"Identifier","src":"3501:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":466,"type":"address[] memory","value":"_addresses"},"id":490,"name":"Identifier","src":"3509:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":469,"type":"uint256","value":"i"},"id":491,"name":"Identifier","src":"3520:1:30"}],"id":492,"name":"IndexAccess","src":"3509:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":493,"name":"ElementaryTypeNameExpression","src":"3526:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":494,"name":"Literal","src":"3534:1:30"}],"id":495,"name":"FunctionCall","src":"3526:10:30"}],"id":496,"name":"BinaryOperation","src":"3509:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e7320302061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains 0 address\"","value":"contains 0 address"},"id":497,"name":"Literal","src":"3538:20:30"}],"id":498,"name":"FunctionCall","src":"3501:58:30"}],"id":499,"name":"ExpressionStatement","src":"3501:58:30"}],"id":500,"name":"Block","src":"3414:156:30"}],"id":501,"name":"ForStatement","src":"3366:204:30"},{"id":502,"name":"PlaceholderStatement","src":"3579:1:30"}],"id":503,"name":"Block","src":"3356:231:30"}],"id":504,"name":"ModifierDefinition","src":"3294:293:30"},{"attributes":{"documentation":"@dev Check that neither addition nor removal operations have already been submitted.","name":"noActiveSubmission","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":505,"name":"ParameterList","src":"3713:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_218a99457edaa7c4d6a4ca4023db54cf2e31e2ca8b9a350a6c9ab56a1ea1df99","typeString":"literal_string \"whitelist sumbission pending\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":506,"name":"Identifier","src":"3726:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":507,"name":"Identifier","src":"3735:26:30"}],"id":508,"name":"UnaryOperation","src":"3734:27:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":509,"name":"Identifier","src":"3766:25:30"}],"id":510,"name":"UnaryOperation","src":"3765:26:30"}],"id":511,"name":"BinaryOperation","src":"3734:57:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c6973742073756d62697373696f6e2070656e64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist sumbission pending\"","value":"whitelist sumbission pending"},"id":512,"name":"Literal","src":"3793:30:30"}],"id":513,"name":"FunctionCall","src":"3726:98:30"}],"id":514,"name":"ExpressionStatement","src":"3726:98:30"},{"id":515,"name":"PlaceholderStatement","src":"3834:1:30"}],"id":516,"name":"Block","src":"3716:126:30"}],"id":517,"name":"ModifierDefinition","src":"3686:156:30"},{"attributes":{"documentation":"@dev Cancel pending whitelist addition.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistAddition","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":552,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":518,"name":"ElementaryTypeName","src":"3929:7:30"}],"id":519,"name":"VariableDeclaration","src":"3929:13:30"}],"id":520,"name":"ParameterList","src":"3928:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":523,"name":"ParameterList","src":"3975:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":374,"type":"modifier ()","value":"onlyOwnerOrController"},"id":521,"name":"Identifier","src":"3953:21:30"}],"id":522,"name":"ModifierInvocation","src":"3953:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":524,"name":"Identifier","src":"4035:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":525,"name":"Identifier","src":"4043:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":526,"name":"Literal","src":"4071:23:30"}],"id":527,"name":"FunctionCall","src":"4035:60:30"}],"id":528,"name":"ExpressionStatement","src":"4035:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":529,"name":"Identifier","src":"4200:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":519,"type":"bytes32","value":"_hash"},"id":530,"name":"Identifier","src":"4208:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":531,"name":"Identifier","src":"4217:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":532,"name":"Identifier","src":"4231:25:30"}],"id":533,"name":"FunctionCall","src":"4217:40:30"}],"id":534,"name":"BinaryOperation","src":"4208:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":535,"name":"Literal","src":"4259:37:30"}],"id":536,"name":"FunctionCall","src":"4200:97:30"}],"id":537,"name":"ExpressionStatement","src":"4200:97:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":538,"name":"Identifier","src":"4350:25:30"}],"id":539,"name":"UnaryOperation","src":"4343:32:30"}],"id":540,"name":"ExpressionStatement","src":"4343:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":541,"name":"Identifier","src":"4432:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":542,"name":"Literal","src":"4461:5:30"}],"id":543,"name":"Assignment","src":"4432:34:30"}],"id":544,"name":"ExpressionStatement","src":"4432:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":417,"type":"function (address,bytes32)","value":"CancelledWhitelistAddition"},"id":545,"name":"Identifier","src":"4521:26:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":546,"name":"Identifier","src":"4548:3:30"}],"id":547,"name":"MemberAccess","src":"4548:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":519,"type":"bytes32","value":"_hash"},"id":548,"name":"Identifier","src":"4560:5:30"}],"id":549,"name":"FunctionCall","src":"4521:45:30"}],"id":550,"name":"EmitStatement","src":"4516:50:30"}],"id":551,"name":"Block","src":"3975:598:30"}],"id":552,"name":"FunctionDefinition","src":"3896:677:30"},{"attributes":{"documentation":"@dev Cancel pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistRemoval","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":587,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":553,"name":"ElementaryTypeName","src":"4673:7:30"}],"id":554,"name":"VariableDeclaration","src":"4673:13:30"}],"id":555,"name":"ParameterList","src":"4672:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":558,"name":"ParameterList","src":"4719:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":374,"type":"modifier ()","value":"onlyOwnerOrController"},"id":556,"name":"Identifier","src":"4697:21:30"}],"id":557,"name":"ModifierInvocation","src":"4697:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":559,"name":"Identifier","src":"4779:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":560,"name":"Identifier","src":"4787:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":561,"name":"Literal","src":"4814:23:30"}],"id":562,"name":"FunctionCall","src":"4779:59:30"}],"id":563,"name":"ExpressionStatement","src":"4779:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":564,"name":"Identifier","src":"4942:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":554,"type":"bytes32","value":"_hash"},"id":565,"name":"Identifier","src":"4950:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":566,"name":"Identifier","src":"4959:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":567,"name":"Identifier","src":"4973:24:30"}],"id":568,"name":"FunctionCall","src":"4959:39:30"}],"id":569,"name":"BinaryOperation","src":"4950:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":570,"name":"Literal","src":"5000:37:30"}],"id":571,"name":"FunctionCall","src":"4942:96:30"}],"id":572,"name":"ExpressionStatement","src":"4942:96:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":573,"name":"Identifier","src":"5091:24:30"}],"id":574,"name":"UnaryOperation","src":"5084:31:30"}],"id":575,"name":"ExpressionStatement","src":"5084:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":576,"name":"Identifier","src":"5161:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":577,"name":"Literal","src":"5189:5:30"}],"id":578,"name":"Assignment","src":"5161:33:30"}],"id":579,"name":"ExpressionStatement","src":"5161:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":430,"type":"function (address,bytes32)","value":"CancelledWhitelistRemoval"},"id":580,"name":"Identifier","src":"5249:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":581,"name":"Identifier","src":"5275:3:30"}],"id":582,"name":"MemberAccess","src":"5275:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":554,"type":"bytes32","value":"_hash"},"id":583,"name":"Identifier","src":"5287:5:30"}],"id":584,"name":"FunctionCall","src":"5249:44:30"}],"id":585,"name":"EmitStatement","src":"5244:49:30"}],"id":586,"name":"Block","src":"4719:581:30"}],"id":587,"name":"FunctionDefinition","src":"4641:659:30"},{"attributes":{"documentation":"@dev Confirm pending whitelist addition.\n @dev This will only ever be applied post 2FA, by one of the Controllers\n @param _hash is the hash of the pending whitelist array, a form of lamport lock","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistAddition","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":659,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":588,"name":"ElementaryTypeName","src":"5557:7:30"}],"id":589,"name":"VariableDeclaration","src":"5557:13:30"}],"id":590,"name":"ParameterList","src":"5556:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":593,"name":"ParameterList","src":"5596:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":591,"name":"Identifier","src":"5581:14:30"}],"id":592,"name":"ModifierInvocation","src":"5581:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":594,"name":"Identifier","src":"5673:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":595,"name":"Identifier","src":"5681:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":596,"name":"Literal","src":"5709:23:30"}],"id":597,"name":"FunctionCall","src":"5673:60:30"}],"id":598,"name":"ExpressionStatement","src":"5673:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":599,"name":"Identifier","src":"5838:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":589,"type":"bytes32","value":"_hash"},"id":600,"name":"Identifier","src":"5846:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":601,"name":"Identifier","src":"5855:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":602,"name":"Identifier","src":"5869:25:30"}],"id":603,"name":"FunctionCall","src":"5855:40:30"}],"id":604,"name":"BinaryOperation","src":"5846:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":605,"name":"Literal","src":"5897:37:30"}],"id":606,"name":"FunctionCall","src":"5838:97:30"}],"id":607,"name":"ExpressionStatement","src":"5838:97:30"},{"children":[{"attributes":{"assignments":[609]},"children":[{"attributes":{"constant":false,"name":"i","scope":644,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":608,"name":"ElementaryTypeName","src":"5990:7:30"}],"id":609,"name":"VariableDeclaration","src":"5990:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":610,"name":"Literal","src":"6002:1:30"}],"id":611,"name":"VariableDeclarationStatement","src":"5990:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":612,"name":"Identifier","src":"6005:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":613,"name":"Identifier","src":"6009:25:30"}],"id":614,"name":"MemberAccess","src":"6009:32:30"}],"id":615,"name":"BinaryOperation","src":"6005:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":616,"name":"Identifier","src":"6043:1:30"}],"id":617,"name":"UnaryOperation","src":"6043:3:30"}],"id":618,"name":"ExpressionStatement","src":"6043:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":619,"name":"Identifier","src":"6117:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":620,"name":"Identifier","src":"6130:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":621,"name":"Identifier","src":"6156:1:30"}],"id":622,"name":"IndexAccess","src":"6130:28:30"}],"id":623,"name":"IndexAccess","src":"6117:42:30"}],"id":624,"name":"UnaryOperation","src":"6116:43:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":625,"name":"Identifier","src":"6227:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":626,"name":"Identifier","src":"6240:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":627,"name":"Identifier","src":"6266:1:30"}],"id":628,"name":"IndexAccess","src":"6240:28:30"}],"id":629,"name":"IndexAccess","src":"6227:42:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":630,"name":"Literal","src":"6272:4:30"}],"id":631,"name":"Assignment","src":"6227:49:30"}],"id":632,"name":"ExpressionStatement","src":"6227:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":633,"name":"Identifier","src":"6294:14:30"}],"id":635,"name":"MemberAccess","src":"6294:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":636,"name":"Identifier","src":"6314:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":609,"type":"uint256","value":"i"},"id":637,"name":"Identifier","src":"6340:1:30"}],"id":638,"name":"IndexAccess","src":"6314:28:30"}],"id":639,"name":"FunctionCall","src":"6294:49:30"}],"id":640,"name":"ExpressionStatement","src":"6294:49:30"}],"id":641,"name":"Block","src":"6161:197:30"}],"id":642,"name":"IfStatement","src":"6112:246:30"}],"id":643,"name":"Block","src":"6048:320:30"}],"id":644,"name":"ForStatement","src":"5985:383:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":411,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":645,"name":"Identifier","src":"6418:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":646,"name":"Identifier","src":"6435:3:30"}],"id":647,"name":"MemberAccess","src":"6435:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":648,"name":"Identifier","src":"6447:25:30"}],"id":649,"name":"FunctionCall","src":"6418:55:30"}],"id":650,"name":"EmitStatement","src":"6413:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":651,"name":"Identifier","src":"6526:25:30"}],"id":652,"name":"UnaryOperation","src":"6519:32:30"}],"id":653,"name":"ExpressionStatement","src":"6519:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":654,"name":"Identifier","src":"6599:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":655,"name":"Literal","src":"6628:5:30"}],"id":656,"name":"Assignment","src":"6599:34:30"}],"id":657,"name":"ExpressionStatement","src":"6599:34:30"}],"id":658,"name":"Block","src":"5596:1044:30"}],"id":659,"name":"FunctionDefinition","src":"5523:1117:30"},{"attributes":{"documentation":"@dev Confirm pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistRemoval","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":764,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":660,"name":"ElementaryTypeName","src":"6742:7:30"}],"id":661,"name":"VariableDeclaration","src":"6742:13:30"}],"id":662,"name":"ParameterList","src":"6741:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":665,"name":"ParameterList","src":"6781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":663,"name":"Identifier","src":"6766:14:30"}],"id":664,"name":"ModifierInvocation","src":"6766:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":666,"name":"Identifier","src":"6888:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":667,"name":"Identifier","src":"6896:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":668,"name":"Literal","src":"6923:23:30"}],"id":669,"name":"FunctionCall","src":"6888:59:30"}],"id":670,"name":"ExpressionStatement","src":"6888:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":671,"name":"Identifier","src":"7051:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":661,"type":"bytes32","value":"_hash"},"id":672,"name":"Identifier","src":"7059:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":673,"name":"Identifier","src":"7068:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":674,"name":"Identifier","src":"7082:24:30"}],"id":675,"name":"FunctionCall","src":"7068:39:30"}],"id":676,"name":"BinaryOperation","src":"7059:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":677,"name":"Literal","src":"7109:37:30"}],"id":678,"name":"FunctionCall","src":"7051:96:30"}],"id":679,"name":"ExpressionStatement","src":"7051:96:30"},{"children":[{"attributes":{"assignments":[681]},"children":[{"attributes":{"constant":false,"name":"i","scope":749,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":680,"name":"ElementaryTypeName","src":"7199:7:30"}],"id":681,"name":"VariableDeclaration","src":"7199:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":682,"name":"Literal","src":"7211:1:30"}],"id":683,"name":"VariableDeclarationStatement","src":"7199:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":684,"name":"Identifier","src":"7214:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":685,"name":"Identifier","src":"7218:24:30"}],"id":686,"name":"MemberAccess","src":"7218:31:30"}],"id":687,"name":"BinaryOperation","src":"7214:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":688,"name":"Identifier","src":"7251:1:30"}],"id":689,"name":"UnaryOperation","src":"7251:3:30"}],"id":690,"name":"ExpressionStatement","src":"7251:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":691,"name":"Identifier","src":"7308:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":692,"name":"Identifier","src":"7321:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":693,"name":"Identifier","src":"7346:1:30"}],"id":694,"name":"IndexAccess","src":"7321:27:30"}],"id":695,"name":"IndexAccess","src":"7308:41:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":696,"name":"Identifier","src":"7369:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":697,"name":"Identifier","src":"7382:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":698,"name":"Identifier","src":"7407:1:30"}],"id":699,"name":"IndexAccess","src":"7382:27:30"}],"id":700,"name":"IndexAccess","src":"7369:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":701,"name":"Literal","src":"7413:5:30"}],"id":702,"name":"Assignment","src":"7369:49:30"}],"id":703,"name":"ExpressionStatement","src":"7369:49:30"},{"children":[{"attributes":{"assignments":[705]},"children":[{"attributes":{"constant":false,"name":"j","scope":740,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":704,"name":"ElementaryTypeName","src":"7441:7:30"}],"id":705,"name":"VariableDeclaration","src":"7441:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":706,"name":"Literal","src":"7453:1:30"}],"id":707,"name":"VariableDeclarationStatement","src":"7441:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"j"},"id":708,"name":"Identifier","src":"7456:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":709,"name":"Identifier","src":"7460:14:30"}],"id":710,"name":"MemberAccess","src":"7460:21:30"}],"id":711,"name":"MemberAccess","src":"7460:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":712,"name":"Literal","src":"7486:1:30"}],"id":713,"name":"FunctionCall","src":"7460:28:30"}],"id":714,"name":"BinaryOperation","src":"7456:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"j"},"id":715,"name":"Identifier","src":"7490:1:30"}],"id":716,"name":"UnaryOperation","src":"7490:3:30"}],"id":717,"name":"ExpressionStatement","src":"7490:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":718,"name":"Identifier","src":"7521:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"j"},"id":719,"name":"Identifier","src":"7536:1:30"}],"id":720,"name":"IndexAccess","src":"7521:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":721,"name":"Identifier","src":"7542:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":681,"type":"uint256","value":"i"},"id":722,"name":"Identifier","src":"7567:1:30"}],"id":723,"name":"IndexAccess","src":"7542:27:30"}],"id":724,"name":"BinaryOperation","src":"7521:48:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":725,"name":"Identifier","src":"7597:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":705,"type":"uint256","value":"j"},"id":726,"name":"Identifier","src":"7612:1:30"}],"id":727,"name":"IndexAccess","src":"7597:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":728,"name":"Identifier","src":"7617:14:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":729,"name":"Identifier","src":"7632:14:30"}],"id":730,"name":"MemberAccess","src":"7632:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":731,"name":"Literal","src":"7656:1:30"}],"id":732,"name":"BinaryOperation","src":"7632:25:30"}],"id":733,"name":"IndexAccess","src":"7617:41:30"}],"id":734,"name":"Assignment","src":"7597:61:30"}],"id":735,"name":"ExpressionStatement","src":"7597:61:30"},{"id":736,"name":"Break","src":"7684:5:30"}],"id":737,"name":"Block","src":"7571:141:30"}],"id":738,"name":"IfStatement","src":"7517:195:30"}],"id":739,"name":"Block","src":"7495:235:30"}],"id":740,"name":"ForStatement","src":"7436:294:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":741,"name":"Identifier","src":"7747:14:30"}],"id":743,"name":"MemberAccess","src":"7747:21:30"}],"id":744,"name":"UnaryOperation","src":"7747:23:30"}],"id":745,"name":"ExpressionStatement","src":"7747:23:30"}],"id":746,"name":"Block","src":"7351:434:30"}],"id":747,"name":"IfStatement","src":"7304:481:30"}],"id":748,"name":"Block","src":"7256:539:30"}],"id":749,"name":"ForStatement","src":"7194:601:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":437,"type":"function (address,address[] memory)","value":"RemovedFromWhitelist"},"id":750,"name":"Identifier","src":"7844:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":751,"name":"Identifier","src":"7865:3:30"}],"id":752,"name":"MemberAccess","src":"7865:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":753,"name":"Identifier","src":"7877:24:30"}],"id":754,"name":"FunctionCall","src":"7844:58:30"}],"id":755,"name":"EmitStatement","src":"7839:63:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":756,"name":"Identifier","src":"7955:24:30"}],"id":757,"name":"UnaryOperation","src":"7948:31:30"}],"id":758,"name":"ExpressionStatement","src":"7948:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":759,"name":"Identifier","src":"8027:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":760,"name":"Literal","src":"8055:5:30"}],"id":761,"name":"Assignment","src":"8027:33:30"}],"id":762,"name":"ExpressionStatement","src":"8027:33:30"}],"id":763,"name":"Block","src":"6781:1286:30"}],"id":764,"name":"FunctionDefinition","src":"6709:1358:30"},{"attributes":{"documentation":"@dev Getter for pending addition array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistAddition","scope":945,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":765,"name":"ParameterList","src":"8154:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":773,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":766,"name":"ElementaryTypeName","src":"8180:7:30"}],"id":767,"name":"ArrayTypeName","src":"8180:9:30"}],"id":768,"name":"VariableDeclaration","src":"8180:16:30"}],"id":769,"name":"ParameterList","src":"8179:18:30"},{"children":[{"attributes":{"functionReturnParameters":769},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":770,"name":"Identifier","src":"8215:25:30"}],"id":771,"name":"Return","src":"8208:32:30"}],"id":772,"name":"Block","src":"8198:49:30"}],"id":773,"name":"FunctionDefinition","src":"8121:126:30"},{"attributes":{"documentation":"@dev Getter for pending removal array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistRemoval","scope":945,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":774,"name":"ParameterList","src":"8332:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":782,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":775,"name":"ElementaryTypeName","src":"8358:7:30"}],"id":776,"name":"ArrayTypeName","src":"8358:9:30"}],"id":777,"name":"VariableDeclaration","src":"8358:16:30"}],"id":778,"name":"ParameterList","src":"8357:18:30"},{"children":[{"attributes":{"functionReturnParameters":778},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":779,"name":"Identifier","src":"8393:24:30"}],"id":780,"name":"Return","src":"8386:31:30"}],"id":781,"name":"Block","src":"8376:48:30"}],"id":782,"name":"FunctionDefinition","src":"8300:124:30"},{"attributes":{"documentation":"@dev Add initial addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"setWhitelist","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":847,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":783,"name":"ElementaryTypeName","src":"8577:7:30"}],"id":784,"name":"ArrayTypeName","src":"8577:9:30"}],"id":785,"name":"VariableDeclaration","src":"8577:29:30"}],"id":786,"name":"ParameterList","src":"8576:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":792,"name":"ParameterList","src":"8669:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":787,"name":"Identifier","src":"8617:15:30"}],"id":788,"name":"ModifierInvocation","src":"8617:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":789,"name":"Identifier","src":"8633:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":790,"name":"Identifier","src":"8657:10:30"}],"id":791,"name":"ModifierInvocation","src":"8633:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_072b1c10273a06de91a80d81d357e8bd73084529b5cc99d2ec03a7bf6d5fb2b9","typeString":"literal_string \"whitelist initialized\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":793,"name":"Identifier","src":"8743:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":463,"type":"bool","value":"isSetWhitelist"},"id":794,"name":"Identifier","src":"8752:14:30"}],"id":795,"name":"UnaryOperation","src":"8751:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c69737420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist initialized\"","value":"whitelist initialized"},"id":796,"name":"Literal","src":"8768:23:30"}],"id":797,"name":"FunctionCall","src":"8743:49:30"}],"id":798,"name":"ExpressionStatement","src":"8743:49:30"},{"children":[{"attributes":{"assignments":[800]},"children":[{"attributes":{"constant":false,"name":"i","scope":835,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":799,"name":"ElementaryTypeName","src":"8871:7:30"}],"id":800,"name":"VariableDeclaration","src":"8871:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":801,"name":"Literal","src":"8883:1:30"}],"id":802,"name":"VariableDeclarationStatement","src":"8871:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":803,"name":"Identifier","src":"8886:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":804,"name":"Identifier","src":"8890:10:30"}],"id":805,"name":"MemberAccess","src":"8890:17:30"}],"id":806,"name":"BinaryOperation","src":"8886:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":807,"name":"Identifier","src":"8909:1:30"}],"id":808,"name":"UnaryOperation","src":"8909:3:30"}],"id":809,"name":"ExpressionStatement","src":"8909:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":810,"name":"Identifier","src":"8996:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":811,"name":"Identifier","src":"9009:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":812,"name":"Identifier","src":"9020:1:30"}],"id":813,"name":"IndexAccess","src":"9009:13:30"}],"id":814,"name":"IndexAccess","src":"8996:27:30"}],"id":815,"name":"UnaryOperation","src":"8995:28:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":816,"name":"Identifier","src":"9092:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":817,"name":"Identifier","src":"9105:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":818,"name":"Identifier","src":"9116:1:30"}],"id":819,"name":"IndexAccess","src":"9105:13:30"}],"id":820,"name":"IndexAccess","src":"9092:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":821,"name":"Literal","src":"9122:4:30"}],"id":822,"name":"Assignment","src":"9092:34:30"}],"id":823,"name":"ExpressionStatement","src":"9092:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":824,"name":"Identifier","src":"9191:14:30"}],"id":826,"name":"MemberAccess","src":"9191:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":785,"type":"address[] calldata","value":"_addresses"},"id":827,"name":"Identifier","src":"9211:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":800,"type":"uint256","value":"i"},"id":828,"name":"Identifier","src":"9222:1:30"}],"id":829,"name":"IndexAccess","src":"9211:13:30"}],"id":830,"name":"FunctionCall","src":"9191:34:30"}],"id":831,"name":"ExpressionStatement","src":"9191:34:30"}],"id":832,"name":"Block","src":"9025:215:30"}],"id":833,"name":"IfStatement","src":"8991:249:30"}],"id":834,"name":"Block","src":"8914:336:30"}],"id":835,"name":"ForStatement","src":"8866:384:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":463,"type":"bool","value":"isSetWhitelist"},"id":836,"name":"Identifier","src":"9259:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":837,"name":"Literal","src":"9276:4:30"}],"id":838,"name":"Assignment","src":"9259:21:30"}],"id":839,"name":"ExpressionStatement","src":"9259:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":411,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":840,"name":"Identifier","src":"9331:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":841,"name":"Identifier","src":"9348:3:30"}],"id":842,"name":"MemberAccess","src":"9348:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":451,"type":"address[] storage ref","value":"whitelistArray"},"id":843,"name":"Identifier","src":"9360:14:30"}],"id":844,"name":"FunctionCall","src":"9331:44:30"}],"id":845,"name":"EmitStatement","src":"9326:49:30"}],"id":846,"name":"Block","src":"8669:713:30"}],"id":847,"name":"FunctionDefinition","src":"8555:827:30"},{"attributes":{"documentation":"@dev Add addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistAddition","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":889,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":848,"name":"ElementaryTypeName","src":"9538:7:30"}],"id":849,"name":"ArrayTypeName","src":"9538:9:30"}],"id":850,"name":"VariableDeclaration","src":"9538:29:30"}],"id":851,"name":"ParameterList","src":"9537:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":859,"name":"ParameterList","src":"9649:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":852,"name":"Identifier","src":"9578:15:30"}],"id":853,"name":"ModifierInvocation","src":"9578:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":517,"type":"modifier ()","value":"noActiveSubmission"},"id":854,"name":"Identifier","src":"9594:18:30"}],"id":855,"name":"ModifierInvocation","src":"9594:18:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":856,"name":"Identifier","src":"9613:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":857,"name":"Identifier","src":"9637:10:30"}],"id":858,"name":"ModifierInvocation","src":"9613:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":860,"name":"Identifier","src":"9719:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":463,"type":"bool","value":"isSetWhitelist"},"id":861,"name":"Identifier","src":"9727:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":862,"name":"Literal","src":"9743:27:30"}],"id":863,"name":"FunctionCall","src":"9719:52:30"}],"id":864,"name":"ExpressionStatement","src":"9719:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":865,"name":"Identifier","src":"9834:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":866,"name":"Identifier","src":"9842:10:30"}],"id":867,"name":"MemberAccess","src":"9842:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":868,"name":"Literal","src":"9862:1:30"}],"id":869,"name":"BinaryOperation","src":"9842:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":870,"name":"Literal","src":"9865:17:30"}],"id":871,"name":"FunctionCall","src":"9834:49:30"}],"id":872,"name":"ExpressionStatement","src":"9834:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":454,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":873,"name":"Identifier","src":"9966:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":874,"name":"Identifier","src":"9994:10:30"}],"id":875,"name":"Assignment","src":"9966:38:30"}],"id":876,"name":"ExpressionStatement","src":"9966:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":459,"type":"bool","value":"submittedWhitelistAddition"},"id":877,"name":"Identifier","src":"10058:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":878,"name":"Literal","src":"10087:4:30"}],"id":879,"name":"Assignment","src":"10058:33:30"}],"id":880,"name":"ExpressionStatement","src":"10058:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":424,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistAddition"},"id":881,"name":"Identifier","src":"10144:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":882,"name":"Identifier","src":"10171:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":883,"name":"Identifier","src":"10183:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":850,"type":"address[] calldata","value":"_addresses"},"id":884,"name":"Identifier","src":"10197:10:30"}],"id":885,"name":"FunctionCall","src":"10183:25:30"}],"id":886,"name":"FunctionCall","src":"10144:65:30"}],"id":887,"name":"EmitStatement","src":"10139:70:30"}],"id":888,"name":"Block","src":"9649:567:30"}],"id":889,"name":"FunctionDefinition","src":"9505:711:30"},{"attributes":{"documentation":"@dev Remove addresses from the whitelist.\n @param _addresses are the Ethereum addresses to be removed.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistRemoval","scope":945,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":928,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":890,"name":"ElementaryTypeName","src":"10372:7:30"}],"id":891,"name":"ArrayTypeName","src":"10372:9:30"}],"id":892,"name":"VariableDeclaration","src":"10372:29:30"}],"id":893,"name":"ParameterList","src":"10371:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":898,"name":"ParameterList","src":"10447:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":894,"name":"Identifier","src":"10412:15:30"}],"id":895,"name":"ModifierInvocation","src":"10412:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":517,"type":"modifier ()","value":"noActiveSubmission"},"id":896,"name":"Identifier","src":"10428:18:30"}],"id":897,"name":"ModifierInvocation","src":"10428:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":899,"name":"Identifier","src":"10517:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":463,"type":"bool","value":"isSetWhitelist"},"id":900,"name":"Identifier","src":"10525:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":901,"name":"Literal","src":"10541:27:30"}],"id":902,"name":"FunctionCall","src":"10517:52:30"}],"id":903,"name":"ExpressionStatement","src":"10517:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":904,"name":"Identifier","src":"10639:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":892,"type":"address[] calldata","value":"_addresses"},"id":905,"name":"Identifier","src":"10647:10:30"}],"id":906,"name":"MemberAccess","src":"10647:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":907,"name":"Literal","src":"10667:1:30"}],"id":908,"name":"BinaryOperation","src":"10647:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":909,"name":"Literal","src":"10670:17:30"}],"id":910,"name":"FunctionCall","src":"10639:49:30"}],"id":911,"name":"ExpressionStatement","src":"10639:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":457,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":912,"name":"Identifier","src":"10766:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":892,"type":"address[] calldata","value":"_addresses"},"id":913,"name":"Identifier","src":"10793:10:30"}],"id":914,"name":"Assignment","src":"10766:37:30"}],"id":915,"name":"ExpressionStatement","src":"10766:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":461,"type":"bool","value":"submittedWhitelistRemoval"},"id":916,"name":"Identifier","src":"10857:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":917,"name":"Literal","src":"10885:4:30"}],"id":918,"name":"Assignment","src":"10857:32:30"}],"id":919,"name":"ExpressionStatement","src":"10857:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistRemoval"},"id":920,"name":"Identifier","src":"10942:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":892,"type":"address[] calldata","value":"_addresses"},"id":921,"name":"Identifier","src":"10968:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":944,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":922,"name":"Identifier","src":"10980:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":892,"type":"address[] calldata","value":"_addresses"},"id":923,"name":"Identifier","src":"10994:10:30"}],"id":924,"name":"FunctionCall","src":"10980:25:30"}],"id":925,"name":"FunctionCall","src":"10942:64:30"}],"id":926,"name":"EmitStatement","src":"10937:69:30"}],"id":927,"name":"Block","src":"10447:566:30"}],"id":928,"name":"FunctionDefinition","src":"10340:673:30"},{"attributes":{"documentation":"@dev Method used to hash our whitelist address arrays.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"calculateHash","scope":945,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":944,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":929,"name":"ElementaryTypeName","src":"11105:7:30"}],"id":930,"name":"ArrayTypeName","src":"11105:9:30"}],"id":931,"name":"VariableDeclaration","src":"11105:27:30"}],"id":932,"name":"ParameterList","src":"11104:29:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":944,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":933,"name":"ElementaryTypeName","src":"11155:7:30"}],"id":934,"name":"VariableDeclaration","src":"11155:7:30"}],"id":935,"name":"ParameterList","src":"11154:9:30"},{"children":[{"attributes":{"functionReturnParameters":935},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":936,"name":"Identifier","src":"11181:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":937,"name":"Identifier","src":"11191:3:30"}],"id":938,"name":"MemberAccess","src":"11191:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"address[] memory","value":"_addresses"},"id":939,"name":"Identifier","src":"11208:10:30"}],"id":940,"name":"FunctionCall","src":"11191:28:30"}],"id":941,"name":"FunctionCall","src":"11181:39:30"}],"id":942,"name":"Return","src":"11174:46:30"}],"id":943,"name":"Block","src":"11164:63:30"}],"id":944,"name":"FunctionDefinition","src":"11082:145:30"}],"id":945,"name":"ContractDefinition","src":"2361:8868:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title DailyLimitTrait This trait allows for daily limits to be included in other contracts.\n This contract will allow for a DailyLimit object to be instantiated and used.","fullyImplemented":true,"linearizedBaseContracts":[1147],"name":"DailyLimitTrait","scope":2523},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":946,"name":"UserDefinedTypeName","src":"11447:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":947,"name":"ElementaryTypeName","src":"11460:7:30"}],"id":948,"name":"UsingForDirective","src":"11441:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":949,"name":"ParameterList","src":"11501:2:30"}],"id":950,"name":"EventDefinition","src":"11474:30:30"},{"attributes":{"canonicalName":"DailyLimitTrait.DailyLimit","name":"DailyLimit","scope":1147,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"value","scope":961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":951,"name":"ElementaryTypeName","src":"11538:7:30"}],"id":952,"name":"VariableDeclaration","src":"11538:13:30"},{"attributes":{"constant":false,"name":"available","scope":961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":953,"name":"ElementaryTypeName","src":"11561:7:30"}],"id":954,"name":"VariableDeclaration","src":"11561:17:30"},{"attributes":{"constant":false,"name":"limitTimestamp","scope":961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":955,"name":"ElementaryTypeName","src":"11588:7:30"}],"id":956,"name":"VariableDeclaration","src":"11588:22:30"},{"attributes":{"constant":false,"name":"pending","scope":961,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":957,"name":"ElementaryTypeName","src":"11620:7:30"}],"id":958,"name":"VariableDeclaration","src":"11620:15:30"},{"attributes":{"constant":false,"name":"controllerConfirmationRequired","scope":961,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":959,"name":"ElementaryTypeName","src":"11645:4:30"}],"id":960,"name":"VariableDeclaration","src":"11645:35:30"}],"id":961,"name":"StructDefinition","src":"11510:177:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_confirmLimitUpdate","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":983,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":962,"name":"UserDefinedTypeName","src":"11778:10:30"}],"id":963,"name":"VariableDeclaration","src":"11778:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":983,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":964,"name":"ElementaryTypeName","src":"11803:7:30"}],"id":965,"name":"VariableDeclaration","src":"11803:15:30"}],"id":966,"name":"ParameterList","src":"11777:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":967,"name":"ParameterList","src":"11829:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51a99e4fe0e7ccb76d7b5ddb649e7516f5e27e1195b905cd87f22fbc56fc219b","typeString":"literal_string \"confirmed/submitted limit mismatch\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":968,"name":"Identifier","src":"11910:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":969,"name":"Identifier","src":"11918:4:30"}],"id":970,"name":"MemberAccess","src":"11918:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":965,"type":"uint256","value":"_amount"},"id":971,"name":"Identifier","src":"11934:7:30"}],"id":972,"name":"BinaryOperation","src":"11918:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"confirmed/submitted limit mismatch\"","value":"confirmed/submitted limit mismatch"},"id":973,"name":"Literal","src":"11943:36:30"}],"id":974,"name":"FunctionCall","src":"11910:70:30"}],"id":975,"name":"ExpressionStatement","src":"11910:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$961_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1069,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":976,"name":"Identifier","src":"12048:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":977,"name":"Identifier","src":"12061:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":963,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":978,"name":"Identifier","src":"12067:4:30"}],"id":979,"name":"MemberAccess","src":"12067:12:30"}],"id":980,"name":"FunctionCall","src":"12048:32:30"}],"id":981,"name":"ExpressionStatement","src":"12048:32:30"}],"id":982,"name":"Block","src":"11829:258:30"}],"id":983,"name":"FunctionDefinition","src":"11749:338:30"},{"attributes":{"documentation":"@dev Use up amount within the daily limit. Will fail if amount is larger than daily limit.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_enforceLimit","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1013,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":984,"name":"UserDefinedTypeName","src":"12215:10:30"}],"id":985,"name":"VariableDeclaration","src":"12215:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1013,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":986,"name":"ElementaryTypeName","src":"12240:7:30"}],"id":987,"name":"VariableDeclaration","src":"12240:15:30"}],"id":988,"name":"ParameterList","src":"12214:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":989,"name":"ParameterList","src":"12266:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$961_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":1146,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":990,"name":"Identifier","src":"12328:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":985,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":991,"name":"Identifier","src":"12350:4:30"}],"id":992,"name":"FunctionCall","src":"12328:27:30"}],"id":993,"name":"ExpressionStatement","src":"12328:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76fdd6ba40b4885ab45b8708dbc1ff56b4ee0a701903e21ff02ec4fc90e97cfd","typeString":"literal_string \"available=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":985,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":995,"name":"Identifier","src":"12373:4:30"}],"id":996,"name":"MemberAccess","src":"12373:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":987,"type":"uint256","value":"_amount"},"id":997,"name":"Identifier","src":"12391:7:30"}],"id":998,"name":"BinaryOperation","src":"12373:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617661696c61626c653c616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"available","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1020,"name":"Identifier","src":"12751:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":956,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1015,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1021,"name":"Identifier","src":"12757:4:30"}],"id":1022,"name":"MemberAccess","src":"12757:19:30"}],"id":1023,"name":"MemberAccess","src":"12757:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":1024,"name":"Literal","src":"12781:8:30"}],"id":1025,"name":"FunctionCall","src":"12757:33:30"}],"id":1026,"name":"BinaryOperation","src":"12751:39:30"},{"children":[{"attributes":{"functionReturnParameters":1019},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1015,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1027,"name":"Identifier","src":"12813:4:30"}],"id":1028,"name":"MemberAccess","src":"12813:10:30"}],"id":1029,"name":"Return","src":"12806:17:30"}],"id":1030,"name":"Block","src":"12792:42:30"},{"children":[{"attributes":{"functionReturnParameters":1019},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1015,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1031,"name":"Identifier","src":"12861:4:30"}],"id":1032,"name":"MemberAccess","src":"12861:14:30"}],"id":1033,"name":"Return","src":"12854:21:30"}],"id":1034,"name":"Block","src":"12840:46:30"}],"id":1035,"name":"IfStatement","src":"12747:139:30"}],"id":1036,"name":"Block","src":"12737:155:30"}],"id":1037,"name":"FunctionDefinition","src":"12652:240:30"},{"attributes":{"documentation":"@dev Modify the spend limit and spend available based on the provided value.\n @dev _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_modifyLimit","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1069,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1038,"name":"UserDefinedTypeName","src":"13060:10:30"}],"id":1039,"name":"VariableDeclaration","src":"13060:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1069,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1040,"name":"ElementaryTypeName","src":"13085:7:30"}],"id":1041,"name":"VariableDeclaration","src":"13085:15:30"}],"id":1042,"name":"ParameterList","src":"13059:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1043,"name":"ParameterList","src":"13110:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$961_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":1146,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":1044,"name":"Identifier","src":"13172:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1045,"name":"Identifier","src":"13194:4:30"}],"id":1046,"name":"FunctionCall","src":"13172:27:30"}],"id":1047,"name":"ExpressionStatement","src":"13172:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1048,"name":"Identifier","src":"13264:4:30"}],"id":1050,"name":"MemberAccess","src":"13264:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1041,"type":"uint256","value":"_amount"},"id":1051,"name":"Identifier","src":"13277:7:30"}],"id":1052,"name":"Assignment","src":"13264:20:30"}],"id":1053,"name":"ExpressionStatement","src":"13264:20:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1054,"name":"Identifier","src":"13376:4:30"}],"id":1055,"name":"MemberAccess","src":"13376:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1056,"name":"Identifier","src":"13393:4:30"}],"id":1057,"name":"MemberAccess","src":"13393:10:30"}],"id":1058,"name":"BinaryOperation","src":"13376:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1059,"name":"Identifier","src":"13419:4:30"}],"id":1061,"name":"MemberAccess","src":"13419:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1039,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1062,"name":"Identifier","src":"13436:4:30"}],"id":1063,"name":"MemberAccess","src":"13436:10:30"}],"id":1064,"name":"Assignment","src":"13419:27:30"}],"id":1065,"name":"ExpressionStatement","src":"13419:27:30"}],"id":1066,"name":"Block","src":"13405:52:30"}],"id":1067,"name":"IfStatement","src":"13372:85:30"}],"id":1068,"name":"Block","src":"13110:353:30"}],"id":1069,"name":"FunctionDefinition","src":"13038:425:30"},{"attributes":{"documentation":"@dev Set the daily limit.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_setLimit","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1095,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1070,"name":"UserDefinedTypeName","src":"13586:10:30"}],"id":1071,"name":"VariableDeclaration","src":"13586:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1095,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1072,"name":"ElementaryTypeName","src":"13611:7:30"}],"id":1073,"name":"VariableDeclaration","src":"13611:15:30"}],"id":1074,"name":"ParameterList","src":"13585:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1075,"name":"ParameterList","src":"13637:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5515161ef75a198a2c79d5b0927b7d4cad620073ea22f64fc9faac79dbcba501","typeString":"literal_string \"limit already set\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1076,"name":"Identifier","src":"13709:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1077,"name":"Identifier","src":"13718:4:30"}],"id":1078,"name":"MemberAccess","src":"13718:35:30"}],"id":1079,"name":"UnaryOperation","src":"13717:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d697420616c726561647920736574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit already set\"","value":"limit already set"},"id":1080,"name":"Literal","src":"13755:19:30"}],"id":1081,"name":"FunctionCall","src":"13709:66:30"}],"id":1082,"name":"ExpressionStatement","src":"13709:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$961_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1069,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":1083,"name":"Identifier","src":"13844:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1084,"name":"Identifier","src":"13857:4:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1073,"type":"uint256","value":"_amount"},"id":1085,"name":"Identifier","src":"13863:7:30"}],"id":1086,"name":"FunctionCall","src":"13844:27:30"}],"id":1087,"name":"ExpressionStatement","src":"13844:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1071,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1088,"name":"Identifier","src":"13919:4:30"}],"id":1090,"name":"MemberAccess","src":"13919:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1091,"name":"Literal","src":"13957:4:30"}],"id":1092,"name":"Assignment","src":"13919:42:30"}],"id":1093,"name":"ExpressionStatement","src":"13919:42:30"}],"id":1094,"name":"Block","src":"13637:331:30"}],"id":1095,"name":"FunctionDefinition","src":"13567:401:30"},{"attributes":{"documentation":"@dev Submit a daily limit update, needs to be confirmed.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_submitLimitUpdate","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1115,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1096,"name":"UserDefinedTypeName","src":"14131:10:30"}],"id":1097,"name":"VariableDeclaration","src":"14131:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1115,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1098,"name":"ElementaryTypeName","src":"14156:7:30"}],"id":1099,"name":"VariableDeclaration","src":"14156:15:30"}],"id":1100,"name":"ParameterList","src":"14130:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1101,"name":"ParameterList","src":"14182:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d667d750d47924f17f0479d6107ac25f4e8879366a2d600f6b5ea07705c561f3","typeString":"literal_string \"limit hasn't been set yet\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1102,"name":"Identifier","src":"14246:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1097,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1103,"name":"Identifier","src":"14254:4:30"}],"id":1104,"name":"MemberAccess","src":"14254:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d6974206861736e2774206265656e2073657420796574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit hasn't been set yet\"","value":"limit hasn't been set yet"},"id":1105,"name":"Literal","src":"14291:27:30"}],"id":1106,"name":"FunctionCall","src":"14246:73:30"}],"id":1107,"name":"ExpressionStatement","src":"14246:73:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1097,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1108,"name":"Identifier","src":"14391:4:30"}],"id":1110,"name":"MemberAccess","src":"14391:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1099,"type":"uint256","value":"_amount"},"id":1111,"name":"Identifier","src":"14406:7:30"}],"id":1112,"name":"Assignment","src":"14391:22:30"}],"id":1113,"name":"ExpressionStatement","src":"14391:22:30"}],"id":1114,"name":"Block","src":"14182:238:30"}],"id":1115,"name":"FunctionDefinition","src":"14103:317:30"},{"attributes":{"documentation":"@dev Update available spend limit based on the daily reset.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateAvailableLimit","scope":1147,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1146,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1116,"name":"UserDefinedTypeName","src":"14525:10:30"}],"id":1117,"name":"VariableDeclaration","src":"14525:23:30"}],"id":1118,"name":"ParameterList","src":"14524:25:30"},{"attributes":{"parameters":[null]},"children":[],"id":1119,"name":"ParameterList","src":"14558:0:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1120,"name":"Identifier","src":"14572:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":956,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1121,"name":"Identifier","src":"14578:4:30"}],"id":1122,"name":"MemberAccess","src":"14578:19:30"}],"id":1123,"name":"MemberAccess","src":"14578:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":1124,"name":"Literal","src":"14602:8:30"}],"id":1125,"name":"FunctionCall","src":"14578:33:30"}],"id":1126,"name":"BinaryOperation","src":"14572:39:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"limitTimestamp","referencedDeclaration":956,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1127,"name":"Identifier","src":"14672:4:30"}],"id":1129,"name":"MemberAccess","src":"14672:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1130,"name":"Identifier","src":"14694:3:30"}],"id":1131,"name":"Assignment","src":"14672:25:30"}],"id":1132,"name":"ExpressionStatement","src":"14672:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":954,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1133,"name":"Identifier","src":"14778:4:30"}],"id":1135,"name":"MemberAccess","src":"14778:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1117,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1136,"name":"Identifier","src":"14795:4:30"}],"id":1137,"name":"MemberAccess","src":"14795:10:30"}],"id":1138,"name":"Assignment","src":"14778:27:30"}],"id":1139,"name":"ExpressionStatement","src":"14778:27:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"function ()","value":"UpdatedAvailableLimit"},"id":1140,"name":"Identifier","src":"14824:21:30"}],"id":1141,"name":"FunctionCall","src":"14824:23:30"}],"id":1142,"name":"EmitStatement","src":"14819:28:30"}],"id":1143,"name":"Block","src":"14613:245:30"}],"id":1144,"name":"IfStatement","src":"14568:290:30"}],"id":1145,"name":"Block","src":"14558:306:30"}],"id":1146,"name":"FunctionDefinition","src":"14494:370:30"}],"id":1147,"name":"ContractDefinition","src":"11411:3455:30"},{"attributes":{"contractDependencies":[293,338,375,397,3991],"contractKind":"contract","documentation":"@title it provides daily spend limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1279,397,375,3991,293,338],"name":"SpendLimit","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":375,"type":"contract ControllableOwnable"},"id":1148,"name":"UserDefinedTypeName","src":"14949:19:30"}],"id":1149,"name":"InheritanceSpecifier","src":"14949:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":397,"type":"contract SelfCallableOwnable"},"id":1150,"name":"UserDefinedTypeName","src":"14970:19:30"}],"id":1151,"name":"InheritanceSpecifier","src":"14970:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetSpendLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1157,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1152,"name":"ElementaryTypeName","src":"15016:7:30"}],"id":1153,"name":"VariableDeclaration","src":"15016:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1154,"name":"ElementaryTypeName","src":"15033:7:30"}],"id":1155,"name":"VariableDeclaration","src":"15033:15:30"}],"id":1156,"name":"ParameterList","src":"15015:34:30"}],"id":1157,"name":"EventDefinition","src":"14996:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedSpendLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1161,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1158,"name":"ElementaryTypeName","src":"15087:7:30"}],"id":1159,"name":"VariableDeclaration","src":"15087:15:30"}],"id":1160,"name":"ParameterList","src":"15086:17:30"}],"id":1161,"name":"EventDefinition","src":"15055:49:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1147,"type":"library DailyLimitTrait"},"id":1162,"name":"UserDefinedTypeName","src":"15116:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1163,"name":"UserDefinedTypeName","src":"15136:26:30"}],"id":1164,"name":"UsingForDirective","src":"15110:53:30"},{"attributes":{"constant":false,"name":"_spendLimit","scope":1279,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1165,"name":"UserDefinedTypeName","src":"15169:26:30"}],"id":1166,"name":"VariableDeclaration","src":"15169:47:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily spend limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1279,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_limit_","scope":1183,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1167,"name":"ElementaryTypeName","src":"15302:7:30"}],"id":1168,"name":"VariableDeclaration","src":"15302:15:30"}],"id":1169,"name":"ParameterList","src":"15301:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1170,"name":"ParameterList","src":"15328:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1171,"name":"Identifier","src":"15338:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":961,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1147,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1172,"name":"Identifier","src":"15352:15:30"}],"id":1173,"name":"MemberAccess","src":"15352:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"uint256","value":"_limit_"},"id":1174,"name":"Identifier","src":"15379:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1168,"type":"uint256","value":"_limit_"},"id":1175,"name":"Identifier","src":"15388:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1176,"name":"Identifier","src":"15397:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1177,"name":"Literal","src":"15402:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1178,"name":"Literal","src":"15405:5:30"}],"id":1179,"name":"FunctionCall","src":"15352:59:30"}],"id":1180,"name":"Assignment","src":"15338:73:30"}],"id":1181,"name":"ExpressionStatement","src":"15338:73:30"}],"id":1182,"name":"Block","src":"15328:90:30"}],"id":1183,"name":"FunctionDefinition","src":"15290:128:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmSpendLimitUpdate","scope":1279,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1203,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1184,"name":"ElementaryTypeName","src":"15513:7:30"}],"id":1185,"name":"VariableDeclaration","src":"15513:15:30"}],"id":1186,"name":"ParameterList","src":"15512:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1189,"name":"ParameterList","src":"15554:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":1187,"name":"Identifier","src":"15539:14:30"}],"id":1188,"name":"ModifierInvocation","src":"15539:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":983,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1190,"name":"Identifier","src":"15564:11:30"}],"id":1192,"name":"MemberAccess","src":"15564:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1185,"type":"uint256","value":"_amount"},"id":1193,"name":"Identifier","src":"15596:7:30"}],"id":1194,"name":"FunctionCall","src":"15564:40:30"}],"id":1195,"name":"ExpressionStatement","src":"15564:40:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1157,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":1196,"name":"Identifier","src":"15619:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1197,"name":"Identifier","src":"15633:3:30"}],"id":1198,"name":"MemberAccess","src":"15633:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1185,"type":"uint256","value":"_amount"},"id":1199,"name":"Identifier","src":"15645:7:30"}],"id":1200,"name":"FunctionCall","src":"15619:34:30"}],"id":1201,"name":"EmitStatement","src":"15614:39:30"}],"id":1202,"name":"Block","src":"15554:106:30"}],"id":1203,"name":"FunctionDefinition","src":"15480:180:30"},{"attributes":{"documentation":"@dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setSpendLimit","scope":1279,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1204,"name":"ElementaryTypeName","src":"15840:7:30"}],"id":1205,"name":"VariableDeclaration","src":"15840:15:30"}],"id":1206,"name":"ParameterList","src":"15839:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1209,"name":"ParameterList","src":"15882:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1207,"name":"Identifier","src":"15866:15:30"}],"id":1208,"name":"ModifierInvocation","src":"15866:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1095,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1210,"name":"Identifier","src":"15892:11:30"}],"id":1212,"name":"MemberAccess","src":"15892:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1205,"type":"uint256","value":"_amount"},"id":1213,"name":"Identifier","src":"15914:7:30"}],"id":1214,"name":"FunctionCall","src":"15892:30:30"}],"id":1215,"name":"ExpressionStatement","src":"15892:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1157,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":1216,"name":"Identifier","src":"15937:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1217,"name":"Identifier","src":"15951:3:30"}],"id":1218,"name":"MemberAccess","src":"15951:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1205,"type":"uint256","value":"_amount"},"id":1219,"name":"Identifier","src":"15963:7:30"}],"id":1220,"name":"FunctionCall","src":"15937:34:30"}],"id":1221,"name":"EmitStatement","src":"15932:39:30"}],"id":1222,"name":"Block","src":"15882:96:30"}],"id":1223,"name":"FunctionDefinition","src":"15817:161:30"},{"attributes":{"documentation":"@dev View your available limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitAvailable","scope":1279,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1224,"name":"ParameterList","src":"16051:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1233,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1225,"name":"ElementaryTypeName","src":"16077:7:30"}],"id":1226,"name":"VariableDeclaration","src":"16077:7:30"}],"id":1227,"name":"ParameterList","src":"16076:9:30"},{"children":[{"attributes":{"functionReturnParameters":1227},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1037,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1228,"name":"Identifier","src":"16103:11:30"}],"id":1229,"name":"MemberAccess","src":"16103:30:30"}],"id":1230,"name":"FunctionCall","src":"16103:32:30"}],"id":1231,"name":"Return","src":"16096:39:30"}],"id":1232,"name":"Block","src":"16086:56:30"}],"id":1233,"name":"FunctionDefinition","src":"16023:119:30"},{"attributes":{"documentation":"@dev Is there an active spend limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitPending","scope":1279,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1234,"name":"ParameterList","src":"16225:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1242,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1235,"name":"ElementaryTypeName","src":"16251:7:30"}],"id":1236,"name":"VariableDeclaration","src":"16251:7:30"}],"id":1237,"name":"ParameterList","src":"16250:9:30"},{"children":[{"attributes":{"functionReturnParameters":1237},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1238,"name":"Identifier","src":"16277:11:30"}],"id":1239,"name":"MemberAccess","src":"16277:19:30"}],"id":1240,"name":"Return","src":"16270:26:30"}],"id":1241,"name":"Block","src":"16260:43:30"}],"id":1242,"name":"FunctionDefinition","src":"16199:104:30"},{"attributes":{"documentation":"@dev Has the spend limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitControllerConfirmationRequired","scope":1279,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1243,"name":"ParameterList","src":"16408:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1251,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1244,"name":"ElementaryTypeName","src":"16434:4:30"}],"id":1245,"name":"VariableDeclaration","src":"16434:4:30"}],"id":1246,"name":"ParameterList","src":"16433:6:30"},{"children":[{"attributes":{"functionReturnParameters":1246},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1247,"name":"Identifier","src":"16457:11:30"}],"id":1248,"name":"MemberAccess","src":"16457:42:30"}],"id":1249,"name":"Return","src":"16450:49:30"}],"id":1250,"name":"Block","src":"16440:66:30"}],"id":1251,"name":"FunctionDefinition","src":"16359:147:30"},{"attributes":{"documentation":"@dev View how much has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitValue","scope":1279,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1252,"name":"ParameterList","src":"16586:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1260,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1253,"name":"ElementaryTypeName","src":"16612:7:30"}],"id":1254,"name":"VariableDeclaration","src":"16612:7:30"}],"id":1255,"name":"ParameterList","src":"16611:9:30"},{"children":[{"attributes":{"functionReturnParameters":1255},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1256,"name":"Identifier","src":"16638:11:30"}],"id":1257,"name":"MemberAccess","src":"16638:17:30"}],"id":1258,"name":"Return","src":"16631:24:30"}],"id":1259,"name":"Block","src":"16621:41:30"}],"id":1260,"name":"FunctionDefinition","src":"16562:100:30"},{"attributes":{"documentation":"@dev Submit a daily transfer limit update for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitSpendLimitUpdate","scope":1279,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1278,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1261,"name":"ElementaryTypeName","src":"16838:7:30"}],"id":1262,"name":"VariableDeclaration","src":"16838:15:30"}],"id":1263,"name":"ParameterList","src":"16837:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1266,"name":"ParameterList","src":"16880:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1264,"name":"Identifier","src":"16864:15:30"}],"id":1265,"name":"ModifierInvocation","src":"16864:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1115,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1267,"name":"Identifier","src":"16890:11:30"}],"id":1269,"name":"MemberAccess","src":"16890:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1262,"type":"uint256","value":"_amount"},"id":1270,"name":"Identifier","src":"16921:7:30"}],"id":1271,"name":"FunctionCall","src":"16890:39:30"}],"id":1272,"name":"ExpressionStatement","src":"16890:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1161,"type":"function (uint256)","value":"SubmittedSpendLimitUpdate"},"id":1273,"name":"Identifier","src":"16944:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1262,"type":"uint256","value":"_amount"},"id":1274,"name":"Identifier","src":"16970:7:30"}],"id":1275,"name":"FunctionCall","src":"16944:34:30"}],"id":1276,"name":"EmitStatement","src":"16939:39:30"}],"id":1277,"name":"Block","src":"16880:105:30"}],"id":1278,"name":"FunctionDefinition","src":"16806:179:30"}],"id":1279,"name":"ContractDefinition","src":"14926:2061:30"},{"attributes":{"contractDependencies":[293,338,375,397,3991],"contractKind":"contract","documentation":"@title GasTopUpLimit provides daily limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1437,397,375,3991,293,338],"name":"GasTopUpLimit","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":375,"type":"contract ControllableOwnable"},"id":1280,"name":"UserDefinedTypeName","src":"17077:19:30"}],"id":1281,"name":"InheritanceSpecifier","src":"17077:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":397,"type":"contract SelfCallableOwnable"},"id":1282,"name":"UserDefinedTypeName","src":"17098:19:30"}],"id":1283,"name":"InheritanceSpecifier","src":"17098:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetGasTopUpLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1289,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1284,"name":"ElementaryTypeName","src":"17147:7:30"}],"id":1285,"name":"VariableDeclaration","src":"17147:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1289,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1286,"name":"ElementaryTypeName","src":"17164:7:30"}],"id":1287,"name":"VariableDeclaration","src":"17164:15:30"}],"id":1288,"name":"ParameterList","src":"17146:34:30"}],"id":1289,"name":"EventDefinition","src":"17124:57:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedGasTopUpLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1293,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1290,"name":"ElementaryTypeName","src":"17221:7:30"}],"id":1291,"name":"VariableDeclaration","src":"17221:15:30"}],"id":1292,"name":"ParameterList","src":"17220:17:30"}],"id":1293,"name":"EventDefinition","src":"17186:52:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_GAS_TOPUP_LIMIT","scope":1437,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1294,"name":"ElementaryTypeName","src":"17244:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"353030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 500000000000000000","value":"500"},"id":1295,"name":"Literal","src":"17296:10:30"}],"id":1296,"name":"VariableDeclaration","src":"17244:62:30"},{"attributes":{"constant":true,"name":"_MINIMUM_GAS_TOPUP_LIMIT","scope":1437,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1297,"name":"ElementaryTypeName","src":"17312:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 1000000000000000","value":"1"},"id":1298,"name":"Literal","src":"17364:8:30"}],"id":1299,"name":"VariableDeclaration","src":"17312:60:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1147,"type":"library DailyLimitTrait"},"id":1300,"name":"UserDefinedTypeName","src":"17385:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1301,"name":"UserDefinedTypeName","src":"17405:26:30"}],"id":1302,"name":"UsingForDirective","src":"17379:53:30"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":1437,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1303,"name":"UserDefinedTypeName","src":"17438:26:30"}],"id":1304,"name":"VariableDeclaration","src":"17438:50:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily gas topup limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1437,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1305,"name":"ParameterList","src":"17577:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1306,"name":"ParameterList","src":"17589:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1307,"name":"Identifier","src":"17599:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":961,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1147,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1308,"name":"Identifier","src":"17616:15:30"}],"id":1309,"name":"MemberAccess","src":"17616:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1296,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1310,"name":"Identifier","src":"17643:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1296,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1311,"name":"Identifier","src":"17669:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1312,"name":"Identifier","src":"17695:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1313,"name":"Literal","src":"17700:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1314,"name":"Literal","src":"17703:5:30"}],"id":1315,"name":"FunctionCall","src":"17616:93:30"}],"id":1316,"name":"Assignment","src":"17599:110:30"}],"id":1317,"name":"ExpressionStatement","src":"17599:110:30"}],"id":1318,"name":"Block","src":"17589:127:30"}],"id":1319,"name":"FunctionDefinition","src":"17566:150:30"},{"attributes":{"documentation":"@dev Confirm pending set top up gas limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmGasTopUpLimitUpdate","scope":1437,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1339,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1320,"name":"ElementaryTypeName","src":"17819:7:30"}],"id":1321,"name":"VariableDeclaration","src":"17819:15:30"}],"id":1322,"name":"ParameterList","src":"17818:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1325,"name":"ParameterList","src":"17860:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":1323,"name":"Identifier","src":"17845:14:30"}],"id":1324,"name":"ModifierInvocation","src":"17845:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":983,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1326,"name":"Identifier","src":"17870:14:30"}],"id":1328,"name":"MemberAccess","src":"17870:34:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1321,"type":"uint256","value":"_amount"},"id":1329,"name":"Identifier","src":"17905:7:30"}],"id":1330,"name":"FunctionCall","src":"17870:43:30"}],"id":1331,"name":"ExpressionStatement","src":"17870:43:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1289,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1332,"name":"Identifier","src":"17928:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1333,"name":"Identifier","src":"17945:3:30"}],"id":1334,"name":"MemberAccess","src":"17945:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1321,"type":"uint256","value":"_amount"},"id":1335,"name":"Identifier","src":"17957:7:30"}],"id":1336,"name":"FunctionCall","src":"17928:37:30"}],"id":1337,"name":"EmitStatement","src":"17923:42:30"}],"id":1338,"name":"Block","src":"17860:112:30"}],"id":1339,"name":"FunctionDefinition","src":"17783:189:30"},{"attributes":{"documentation":"@dev View your available gas top-up limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitAvailable","scope":1437,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1340,"name":"ParameterList","src":"18059:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1349,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1341,"name":"ElementaryTypeName","src":"18085:7:30"}],"id":1342,"name":"VariableDeclaration","src":"18085:7:30"}],"id":1343,"name":"ParameterList","src":"18084:9:30"},{"children":[{"attributes":{"functionReturnParameters":1343},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1037,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1344,"name":"Identifier","src":"18111:14:30"}],"id":1345,"name":"MemberAccess","src":"18111:33:30"}],"id":1346,"name":"FunctionCall","src":"18111:35:30"}],"id":1347,"name":"Return","src":"18104:42:30"}],"id":1348,"name":"Block","src":"18094:59:30"}],"id":1349,"name":"FunctionDefinition","src":"18028:125:30"},{"attributes":{"documentation":"@dev Is there an active gas top-up limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitPending","scope":1437,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1350,"name":"ParameterList","src":"18244:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1358,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1351,"name":"ElementaryTypeName","src":"18270:7:30"}],"id":1352,"name":"VariableDeclaration","src":"18270:7:30"}],"id":1353,"name":"ParameterList","src":"18269:9:30"},{"children":[{"attributes":{"functionReturnParameters":1353},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1354,"name":"Identifier","src":"18296:14:30"}],"id":1355,"name":"MemberAccess","src":"18296:22:30"}],"id":1356,"name":"Return","src":"18289:29:30"}],"id":1357,"name":"Block","src":"18279:46:30"}],"id":1358,"name":"FunctionDefinition","src":"18215:110:30"},{"attributes":{"documentation":"@dev Has the gas top-up limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitControllerConfirmationRequired","scope":1437,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1359,"name":"ParameterList","src":"18438:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1367,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1360,"name":"ElementaryTypeName","src":"18464:4:30"}],"id":1361,"name":"VariableDeclaration","src":"18464:4:30"}],"id":1362,"name":"ParameterList","src":"18463:6:30"},{"children":[{"attributes":{"functionReturnParameters":1362},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1363,"name":"Identifier","src":"18487:14:30"}],"id":1364,"name":"MemberAccess","src":"18487:45:30"}],"id":1365,"name":"Return","src":"18480:52:30"}],"id":1366,"name":"Block","src":"18470:69:30"}],"id":1367,"name":"FunctionDefinition","src":"18386:153:30"},{"attributes":{"documentation":"@dev View how much gas top-up has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitValue","scope":1437,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1368,"name":"ParameterList","src":"18633:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1376,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1369,"name":"ElementaryTypeName","src":"18659:7:30"}],"id":1370,"name":"VariableDeclaration","src":"18659:7:30"}],"id":1371,"name":"ParameterList","src":"18658:9:30"},{"children":[{"attributes":{"functionReturnParameters":1371},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1372,"name":"Identifier","src":"18685:14:30"}],"id":1373,"name":"MemberAccess","src":"18685:20:30"}],"id":1374,"name":"Return","src":"18678:27:30"}],"id":1375,"name":"Block","src":"18668:44:30"}],"id":1376,"name":"FunctionDefinition","src":"18606:106:30"},{"attributes":{"documentation":"@dev Sets the daily gas top up limit.\n @param _amount is the gas top up amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setGasTopUpLimit","scope":1437,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1407,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1377,"name":"ElementaryTypeName","src":"18846:7:30"}],"id":1378,"name":"VariableDeclaration","src":"18846:15:30"}],"id":1379,"name":"ParameterList","src":"18845:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1382,"name":"ParameterList","src":"18888:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1380,"name":"Identifier","src":"18872:15:30"}],"id":1381,"name":"ModifierInvocation","src":"18872:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1383,"name":"Identifier","src":"18898:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1299,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1384,"name":"Identifier","src":"18906:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1378,"type":"uint256","value":"_amount"},"id":1385,"name":"Identifier","src":"18934:7:30"}],"id":1386,"name":"BinaryOperation","src":"18906:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1378,"type":"uint256","value":"_amount"},"id":1387,"name":"Identifier","src":"18945:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1296,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1388,"name":"Identifier","src":"18956:24:30"}],"id":1389,"name":"BinaryOperation","src":"18945:35:30"}],"id":1390,"name":"BinaryOperation","src":"18906:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1391,"name":"Literal","src":"18982:21:30"}],"id":1392,"name":"FunctionCall","src":"18898:106:30"}],"id":1393,"name":"ExpressionStatement","src":"18898:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1095,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1394,"name":"Identifier","src":"19014:14:30"}],"id":1396,"name":"MemberAccess","src":"19014:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1378,"type":"uint256","value":"_amount"},"id":1397,"name":"Identifier","src":"19039:7:30"}],"id":1398,"name":"FunctionCall","src":"19014:33:30"}],"id":1399,"name":"ExpressionStatement","src":"19014:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1289,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1400,"name":"Identifier","src":"19062:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1401,"name":"Identifier","src":"19079:3:30"}],"id":1402,"name":"MemberAccess","src":"19079:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1378,"type":"uint256","value":"_amount"},"id":1403,"name":"Identifier","src":"19091:7:30"}],"id":1404,"name":"FunctionCall","src":"19062:37:30"}],"id":1405,"name":"EmitStatement","src":"19057:42:30"}],"id":1406,"name":"Block","src":"18888:218:30"}],"id":1407,"name":"FunctionDefinition","src":"18820:286:30"},{"attributes":{"documentation":"@dev Submit a daily gas top up limit update.\n @param _amount is the daily top up gas limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitGasTopUpLimitUpdate","scope":1437,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1436,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1408,"name":"ElementaryTypeName","src":"19268:7:30"}],"id":1409,"name":"VariableDeclaration","src":"19268:15:30"}],"id":1410,"name":"ParameterList","src":"19267:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1413,"name":"ParameterList","src":"19310:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1411,"name":"Identifier","src":"19294:15:30"}],"id":1412,"name":"ModifierInvocation","src":"19294:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1414,"name":"Identifier","src":"19320:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1299,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1415,"name":"Identifier","src":"19328:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"uint256","value":"_amount"},"id":1416,"name":"Identifier","src":"19356:7:30"}],"id":1417,"name":"BinaryOperation","src":"19328:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"uint256","value":"_amount"},"id":1418,"name":"Identifier","src":"19367:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1296,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1419,"name":"Identifier","src":"19378:24:30"}],"id":1420,"name":"BinaryOperation","src":"19367:35:30"}],"id":1421,"name":"BinaryOperation","src":"19328:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1422,"name":"Literal","src":"19404:21:30"}],"id":1423,"name":"FunctionCall","src":"19320:106:30"}],"id":1424,"name":"ExpressionStatement","src":"19320:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1115,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1425,"name":"Identifier","src":"19436:14:30"}],"id":1427,"name":"MemberAccess","src":"19436:33:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"uint256","value":"_amount"},"id":1428,"name":"Identifier","src":"19470:7:30"}],"id":1429,"name":"FunctionCall","src":"19436:42:30"}],"id":1430,"name":"ExpressionStatement","src":"19436:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1293,"type":"function (uint256)","value":"SubmittedGasTopUpLimitUpdate"},"id":1431,"name":"Identifier","src":"19493:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1409,"type":"uint256","value":"_amount"},"id":1432,"name":"Identifier","src":"19522:7:30"}],"id":1433,"name":"FunctionCall","src":"19493:37:30"}],"id":1434,"name":"EmitStatement","src":"19488:42:30"}],"id":1435,"name":"Block","src":"19310:227:30"}],"id":1436,"name":"FunctionDefinition","src":"19233:304:30"}],"id":1437,"name":"ContractDefinition","src":"17051:2488:30"},{"attributes":{"contractDependencies":[293,338,375,397,3991,4208],"contractKind":"contract","documentation":"@title LoadLimit provides daily load limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1611,4208,397,375,3991,293,338],"name":"LoadLimit","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":375,"type":"contract ControllableOwnable"},"id":1438,"name":"UserDefinedTypeName","src":"19626:19:30"}],"id":1439,"name":"InheritanceSpecifier","src":"19626:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":397,"type":"contract SelfCallableOwnable"},"id":1440,"name":"UserDefinedTypeName","src":"19647:19:30"}],"id":1441,"name":"InheritanceSpecifier","src":"19647:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":4208,"type":"contract TokenWhitelistable"},"id":1442,"name":"UserDefinedTypeName","src":"19668:18:30"}],"id":1443,"name":"InheritanceSpecifier","src":"19668:18:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetLoadLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1449,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1444,"name":"ElementaryTypeName","src":"19712:7:30"}],"id":1445,"name":"VariableDeclaration","src":"19712:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1449,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1446,"name":"ElementaryTypeName","src":"19729:7:30"}],"id":1447,"name":"VariableDeclaration","src":"19729:15:30"}],"id":1448,"name":"ParameterList","src":"19711:34:30"}],"id":1449,"name":"EventDefinition","src":"19693:53:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedLoadLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1453,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1450,"name":"ElementaryTypeName","src":"19782:7:30"}],"id":1451,"name":"VariableDeclaration","src":"19782:15:30"}],"id":1452,"name":"ParameterList","src":"19781:17:30"}],"id":1453,"name":"EventDefinition","src":"19751:48:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_STABLECOIN_LOAD_LIMIT","scope":1611,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1454,"name":"ElementaryTypeName","src":"19805:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000","value":"10000"},"id":1455,"name":"Literal","src":"19863:5:30"}],"id":1456,"name":"VariableDeclaration","src":"19805:63:30"},{"attributes":{"constant":false,"name":"_maximumLoadLimit","scope":1611,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1457,"name":"ElementaryTypeName","src":"19881:7:30"}],"id":1458,"name":"VariableDeclaration","src":"19881:33:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1147,"type":"library DailyLimitTrait"},"id":1459,"name":"UserDefinedTypeName","src":"19927:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1460,"name":"UserDefinedTypeName","src":"19947:26:30"}],"id":1461,"name":"UsingForDirective","src":"19921:53:30"},{"attributes":{"constant":false,"name":"_loadLimit","scope":1611,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":961,"type":"struct DailyLimitTrait.DailyLimit"},"id":1462,"name":"UserDefinedTypeName","src":"19980:26:30"}],"id":1463,"name":"VariableDeclaration","src":"19980:46:30"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1611,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1501,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1464,"name":"ElementaryTypeName","src":"20045:7:30"}],"id":1465,"name":"VariableDeclaration","src":"20045:28:30"}],"id":1466,"name":"ParameterList","src":"20044:30:30"},{"attributes":{"parameters":[null]},"children":[],"id":1470,"name":"ParameterList","src":"20125:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4208,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":1467,"name":"Identifier","src":"20084:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1465,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1468,"name":"Identifier","src":"20103:20:30"}],"id":1469,"name":"ModifierInvocation","src":"20084:40:30"},{"children":[{"attributes":{"assignments":[null,1472,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1500,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1471,"name":"ElementaryTypeName","src":"20138:7:30"}],"id":1472,"name":"VariableDeclaration","src":"20138:27:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1473,"name":"Identifier","src":"20179:18:30"}],"id":1474,"name":"FunctionCall","src":"20179:20:30"}],"id":1475,"name":"VariableDeclarationStatement","src":"20135:64:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e91ed084014006e202586b158c3035ec40db0f637c146d3fdad49cda6c7a17a","typeString":"literal_string \"no stablecoin\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1476,"name":"Identifier","src":"20209:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1472,"type":"uint256","value":"stablecoinMagnitude"},"id":1477,"name":"Identifier","src":"20217:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1478,"name":"Literal","src":"20239:1:30"}],"id":1479,"name":"BinaryOperation","src":"20217:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20737461626c65636f696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no stablecoin\"","value":"no stablecoin"},"id":1480,"name":"Literal","src":"20242:15:30"}],"id":1481,"name":"FunctionCall","src":"20209:49:30"}],"id":1482,"name":"ExpressionStatement","src":"20209:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1483,"name":"Identifier","src":"20268:17:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1456,"type":"uint256","value":"_MAXIMUM_STABLECOIN_LOAD_LIMIT"},"id":1484,"name":"Identifier","src":"20288:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1472,"type":"uint256","value":"stablecoinMagnitude"},"id":1485,"name":"Identifier","src":"20321:19:30"}],"id":1486,"name":"BinaryOperation","src":"20288:52:30"}],"id":1487,"name":"Assignment","src":"20268:72:30"}],"id":1488,"name":"ExpressionStatement","src":"20268:72:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1489,"name":"Identifier","src":"20350:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":961,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1147,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1490,"name":"Identifier","src":"20363:15:30"}],"id":1491,"name":"MemberAccess","src":"20363:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1492,"name":"Identifier","src":"20390:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1493,"name":"Identifier","src":"20409:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10309,"type":"uint256","value":"now"},"id":1494,"name":"Identifier","src":"20428:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1495,"name":"Literal","src":"20433:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1496,"name":"Literal","src":"20436:5:30"}],"id":1497,"name":"FunctionCall","src":"20363:79:30"}],"id":1498,"name":"Assignment","src":"20350:92:30"}],"id":1499,"name":"ExpressionStatement","src":"20350:92:30"}],"id":1500,"name":"Block","src":"20125:324:30"}],"id":1501,"name":"FunctionDefinition","src":"20033:416:30"},{"attributes":{"documentation":"@dev Sets a daily card load limit.\n @param _amount is the card load amount in current stablecoin base units.","implemented":true,"isConstructor":false,"kind":"function","name":"setLoadLimit","scope":1611,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1528,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1502,"name":"ElementaryTypeName","src":"20601:7:30"}],"id":1503,"name":"VariableDeclaration","src":"20601:15:30"}],"id":1504,"name":"ParameterList","src":"20600:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1507,"name":"ParameterList","src":"20643:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1505,"name":"Identifier","src":"20627:15:30"}],"id":1506,"name":"ModifierInvocation","src":"20627:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1508,"name":"Identifier","src":"20653:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1503,"type":"uint256","value":"_amount"},"id":1509,"name":"Identifier","src":"20661:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1510,"name":"Identifier","src":"20672:17:30"}],"id":1511,"name":"BinaryOperation","src":"20661:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1512,"name":"Literal","src":"20691:26:30"}],"id":1513,"name":"FunctionCall","src":"20653:65:30"}],"id":1514,"name":"ExpressionStatement","src":"20653:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1095,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1515,"name":"Identifier","src":"20728:10:30"}],"id":1517,"name":"MemberAccess","src":"20728:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1503,"type":"uint256","value":"_amount"},"id":1518,"name":"Identifier","src":"20749:7:30"}],"id":1519,"name":"FunctionCall","src":"20728:29:30"}],"id":1520,"name":"ExpressionStatement","src":"20728:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1449,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1521,"name":"Identifier","src":"20772:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1522,"name":"Identifier","src":"20785:3:30"}],"id":1523,"name":"MemberAccess","src":"20785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1503,"type":"uint256","value":"_amount"},"id":1524,"name":"Identifier","src":"20797:7:30"}],"id":1525,"name":"FunctionCall","src":"20772:33:30"}],"id":1526,"name":"EmitStatement","src":"20767:38:30"}],"id":1527,"name":"Block","src":"20643:169:30"}],"id":1528,"name":"FunctionDefinition","src":"20579:233:30"},{"attributes":{"documentation":"@dev Submit a daily load limit update.\n @param _amount is the daily load limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitLoadLimitUpdate","scope":1611,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1553,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1529,"name":"ElementaryTypeName","src":"20958:7:30"}],"id":1530,"name":"VariableDeclaration","src":"20958:15:30"}],"id":1531,"name":"ParameterList","src":"20957:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1534,"name":"ParameterList","src":"21000:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1532,"name":"Identifier","src":"20984:15:30"}],"id":1533,"name":"ModifierInvocation","src":"20984:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1535,"name":"Identifier","src":"21010:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"uint256","value":"_amount"},"id":1536,"name":"Identifier","src":"21018:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1458,"type":"uint256","value":"_maximumLoadLimit"},"id":1537,"name":"Identifier","src":"21029:17:30"}],"id":1538,"name":"BinaryOperation","src":"21018:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1539,"name":"Literal","src":"21048:26:30"}],"id":1540,"name":"FunctionCall","src":"21010:65:30"}],"id":1541,"name":"ExpressionStatement","src":"21010:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1115,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1542,"name":"Identifier","src":"21085:10:30"}],"id":1544,"name":"MemberAccess","src":"21085:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"uint256","value":"_amount"},"id":1545,"name":"Identifier","src":"21115:7:30"}],"id":1546,"name":"FunctionCall","src":"21085:38:30"}],"id":1547,"name":"ExpressionStatement","src":"21085:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1453,"type":"function (uint256)","value":"SubmittedLoadLimitUpdate"},"id":1548,"name":"Identifier","src":"21138:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1530,"type":"uint256","value":"_amount"},"id":1549,"name":"Identifier","src":"21163:7:30"}],"id":1550,"name":"FunctionCall","src":"21138:33:30"}],"id":1551,"name":"EmitStatement","src":"21133:38:30"}],"id":1552,"name":"Block","src":"21000:178:30"}],"id":1553,"name":"FunctionDefinition","src":"20927:251:30"},{"attributes":{"documentation":"@dev Confirm pending set load limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmLoadLimitUpdate","scope":1611,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1573,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1554,"name":"ElementaryTypeName","src":"21271:7:30"}],"id":1555,"name":"VariableDeclaration","src":"21271:15:30"}],"id":1556,"name":"ParameterList","src":"21270:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1559,"name":"ParameterList","src":"21312:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":1557,"name":"Identifier","src":"21297:14:30"}],"id":1558,"name":"ModifierInvocation","src":"21297:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":983,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1560,"name":"Identifier","src":"21322:10:30"}],"id":1562,"name":"MemberAccess","src":"21322:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1555,"type":"uint256","value":"_amount"},"id":1563,"name":"Identifier","src":"21353:7:30"}],"id":1564,"name":"FunctionCall","src":"21322:39:30"}],"id":1565,"name":"ExpressionStatement","src":"21322:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1449,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1566,"name":"Identifier","src":"21376:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1567,"name":"Identifier","src":"21389:3:30"}],"id":1568,"name":"MemberAccess","src":"21389:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1555,"type":"uint256","value":"_amount"},"id":1569,"name":"Identifier","src":"21401:7:30"}],"id":1570,"name":"FunctionCall","src":"21376:33:30"}],"id":1571,"name":"EmitStatement","src":"21371:38:30"}],"id":1572,"name":"Block","src":"21312:104:30"}],"id":1573,"name":"FunctionDefinition","src":"21239:177:30"},{"attributes":{"documentation":"@dev View your available load limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitAvailable","scope":1611,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1574,"name":"ParameterList","src":"21493:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1583,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1575,"name":"ElementaryTypeName","src":"21519:7:30"}],"id":1576,"name":"VariableDeclaration","src":"21519:7:30"}],"id":1577,"name":"ParameterList","src":"21518:9:30"},{"children":[{"attributes":{"functionReturnParameters":1577},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1037,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1578,"name":"Identifier","src":"21545:10:30"}],"id":1579,"name":"MemberAccess","src":"21545:29:30"}],"id":1580,"name":"FunctionCall","src":"21545:31:30"}],"id":1581,"name":"Return","src":"21538:38:30"}],"id":1582,"name":"Block","src":"21528:55:30"}],"id":1583,"name":"FunctionDefinition","src":"21466:117:30"},{"attributes":{"documentation":"@dev Is there an active load limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitPending","scope":1611,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1584,"name":"ParameterList","src":"21664:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1592,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1585,"name":"ElementaryTypeName","src":"21690:7:30"}],"id":1586,"name":"VariableDeclaration","src":"21690:7:30"}],"id":1587,"name":"ParameterList","src":"21689:9:30"},{"children":[{"attributes":{"functionReturnParameters":1587},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":958,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1588,"name":"Identifier","src":"21716:10:30"}],"id":1589,"name":"MemberAccess","src":"21716:18:30"}],"id":1590,"name":"Return","src":"21709:25:30"}],"id":1591,"name":"Block","src":"21699:42:30"}],"id":1592,"name":"FunctionDefinition","src":"21639:102:30"},{"attributes":{"documentation":"@dev Has the load limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitControllerConfirmationRequired","scope":1611,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1593,"name":"ParameterList","src":"21844:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1601,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1594,"name":"ElementaryTypeName","src":"21870:4:30"}],"id":1595,"name":"VariableDeclaration","src":"21870:4:30"}],"id":1596,"name":"ParameterList","src":"21869:6:30"},{"children":[{"attributes":{"functionReturnParameters":1596},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":960,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1597,"name":"Identifier","src":"21893:10:30"}],"id":1598,"name":"MemberAccess","src":"21893:41:30"}],"id":1599,"name":"Return","src":"21886:48:30"}],"id":1600,"name":"Block","src":"21876:65:30"}],"id":1601,"name":"FunctionDefinition","src":"21796:145:30"},{"attributes":{"documentation":"@dev View how much laod limit has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitValue","scope":1611,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1602,"name":"ParameterList","src":"22031:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1610,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1603,"name":"ElementaryTypeName","src":"22057:7:30"}],"id":1604,"name":"VariableDeclaration","src":"22057:7:30"}],"id":1605,"name":"ParameterList","src":"22056:9:30"},{"children":[{"attributes":{"functionReturnParameters":1605},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":952,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1606,"name":"Identifier","src":"22083:10:30"}],"id":1607,"name":"MemberAccess","src":"22083:16:30"}],"id":1608,"name":"Return","src":"22076:23:30"}],"id":1609,"name":"Block","src":"22066:40:30"}],"id":1610,"name":"FunctionDefinition","src":"22008:98:30"}],"id":1611,"name":"ContractDefinition","src":"19604:2504:30"},{"attributes":{"contractDependencies":[293,338,375,397,945,1279,1437,1611,3397,3834,3991,4208,4248],"contractKind":"contract","documentation":"@title Asset wallet with extra security features, gas top up management and card integration.","fullyImplemented":true,"linearizedBaseContracts":[2522,3834,4248,3397,1279,945,1611,4208,1437,397,375,3991,293,338],"name":"Wallet","scope":2523},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":1612,"name":"UserDefinedTypeName","src":"22228:13:30"}],"id":1613,"name":"InheritanceSpecifier","src":"22228:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"GasTopUpLimit","referencedDeclaration":1437,"type":"contract GasTopUpLimit"},"id":1614,"name":"UserDefinedTypeName","src":"22243:13:30"}],"id":1615,"name":"InheritanceSpecifier","src":"22243:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"LoadLimit","referencedDeclaration":1611,"type":"contract LoadLimit"},"id":1616,"name":"UserDefinedTypeName","src":"22258:9:30"}],"id":1617,"name":"InheritanceSpecifier","src":"22258:9:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddressWhitelist","referencedDeclaration":945,"type":"contract AddressWhitelist"},"id":1618,"name":"UserDefinedTypeName","src":"22269:16:30"}],"id":1619,"name":"InheritanceSpecifier","src":"22269:16:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SpendLimit","referencedDeclaration":1279,"type":"contract SpendLimit"},"id":1620,"name":"UserDefinedTypeName","src":"22287:10:30"}],"id":1621,"name":"InheritanceSpecifier","src":"22287:10:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ERC165","referencedDeclaration":3397,"type":"contract ERC165"},"id":1622,"name":"UserDefinedTypeName","src":"22299:6:30"}],"id":1623,"name":"InheritanceSpecifier","src":"22299:6:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4248,"type":"contract Transferrable"},"id":1624,"name":"UserDefinedTypeName","src":"22307:13:30"}],"id":1625,"name":"InheritanceSpecifier","src":"22307:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":3834,"type":"contract Balanceable"},"id":1626,"name":"UserDefinedTypeName","src":"22322:11:30"}],"id":1627,"name":"InheritanceSpecifier","src":"22322:11:30"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":3306,"type":"library Address"},"id":1628,"name":"UserDefinedTypeName","src":"22346:7:30"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1629,"name":"ElementaryTypeName","src":"22358:7:30"}],"id":1630,"name":"UsingForDirective","src":"22340:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"ECDSA","referencedDeclaration":3387,"type":"library ECDSA"},"id":1631,"name":"UserDefinedTypeName","src":"22377:5:30"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":1632,"name":"ElementaryTypeName","src":"22387:7:30"}],"id":1633,"name":"UsingForDirective","src":"22371:24:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3669,"type":"library SafeERC20"},"id":1634,"name":"UserDefinedTypeName","src":"22406:9:30"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3450,"type":"contract ERC20"},"id":1635,"name":"UserDefinedTypeName","src":"22420:5:30"}],"id":1636,"name":"UsingForDirective","src":"22400:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3802,"type":"library SafeMath"},"id":1637,"name":"UserDefinedTypeName","src":"22437:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":1638,"name":"ElementaryTypeName","src":"22450:7:30"}],"id":1639,"name":"UsingForDirective","src":"22431:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"BulkTransferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1646,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1640,"name":"ElementaryTypeName","src":"22486:7:30"}],"id":1641,"name":"VariableDeclaration","src":"22486:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_assets","scope":1646,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1642,"name":"ElementaryTypeName","src":"22499:7:30"}],"id":1643,"name":"ArrayTypeName","src":"22499:9:30"}],"id":1644,"name":"VariableDeclaration","src":"22499:17:30"}],"id":1645,"name":"ParameterList","src":"22485:32:30"}],"id":1646,"name":"EventDefinition","src":"22464:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedRelayedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1652,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1647,"name":"ElementaryTypeName","src":"22556:5:30"}],"id":1648,"name":"VariableDeclaration","src":"22556:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1652,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1649,"name":"ElementaryTypeName","src":"22569:5:30"}],"id":1650,"name":"VariableDeclaration","src":"22569:17:30"}],"id":1651,"name":"ParameterList","src":"22555:32:30"}],"id":1652,"name":"EventDefinition","src":"22523:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_destination","scope":1662,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1653,"name":"ElementaryTypeName","src":"22619:7:30"}],"id":1654,"name":"VariableDeclaration","src":"22619:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_value","scope":1662,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1655,"name":"ElementaryTypeName","src":"22641:7:30"}],"id":1656,"name":"VariableDeclaration","src":"22641:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1662,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1657,"name":"ElementaryTypeName","src":"22657:5:30"}],"id":1658,"name":"VariableDeclaration","src":"22657:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1662,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1659,"name":"ElementaryTypeName","src":"22670:5:30"}],"id":1660,"name":"VariableDeclaration","src":"22670:17:30"}],"id":1661,"name":"ParameterList","src":"22618:70:30"}],"id":1662,"name":"EventDefinition","src":"22593:96:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"IncreasedRelayNonce"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1668,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1663,"name":"ElementaryTypeName","src":"22720:7:30"}],"id":1664,"name":"VariableDeclaration","src":"22720:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_currentNonce","scope":1668,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1665,"name":"ElementaryTypeName","src":"22737:7:30"}],"id":1666,"name":"VariableDeclaration","src":"22737:21:30"}],"id":1667,"name":"ParameterList","src":"22719:40:30"}],"id":1668,"name":"EventDefinition","src":"22694:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"LoadedTokenCard"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1674,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1669,"name":"ElementaryTypeName","src":"22787:7:30"}],"id":1670,"name":"VariableDeclaration","src":"22787:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1671,"name":"ElementaryTypeName","src":"22803:7:30"}],"id":1672,"name":"VariableDeclaration","src":"22803:15:30"}],"id":1673,"name":"ParameterList","src":"22786:33:30"}],"id":1674,"name":"EventDefinition","src":"22765:55:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1680,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1675,"name":"ElementaryTypeName","src":"22840:7:30"}],"id":1676,"name":"VariableDeclaration","src":"22840:13:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1680,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1677,"name":"ElementaryTypeName","src":"22855:7:30"}],"id":1678,"name":"VariableDeclaration","src":"22855:15:30"}],"id":1679,"name":"ParameterList","src":"22839:32:30"}],"id":1680,"name":"EventDefinition","src":"22825:47:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ToppedUpGas"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1688,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1681,"name":"ElementaryTypeName","src":"22895:7:30"}],"id":1682,"name":"VariableDeclaration","src":"22895:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1688,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1683,"name":"ElementaryTypeName","src":"22912:7:30"}],"id":1684,"name":"VariableDeclaration","src":"22912:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1688,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1685,"name":"ElementaryTypeName","src":"22928:7:30"}],"id":1686,"name":"VariableDeclaration","src":"22928:15:30"}],"id":1687,"name":"ParameterList","src":"22894:50:30"}],"id":1688,"name":"EventDefinition","src":"22877:68:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1696,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1689,"name":"ElementaryTypeName","src":"22968:7:30"}],"id":1690,"name":"VariableDeclaration","src":"22968:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1696,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1691,"name":"ElementaryTypeName","src":"22981:7:30"}],"id":1692,"name":"VariableDeclaration","src":"22981:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1696,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1693,"name":"ElementaryTypeName","src":"22997:7:30"}],"id":1694,"name":"VariableDeclaration","src":"22997:15:30"}],"id":1695,"name":"ParameterList","src":"22967:46:30"}],"id":1696,"name":"EventDefinition","src":"22950:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1697,"name":"ParameterList","src":"23046:2:30"}],"id":1698,"name":"EventDefinition","src":"23019:30:30"},{"attributes":{"constant":true,"name":"WALLET_VERSION","scope":2522,"stateVariable":true,"storageLocation":"default","type":"string","visibility":"public"},"children":[{"attributes":{"name":"string","type":"string"},"id":1699,"name":"ElementaryTypeName","src":"23125:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"332e322e30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"3.2.0\"","value":"3.2.0"},"id":1700,"name":"Literal","src":"23165:7:30"}],"id":1701,"name":"VariableDeclaration","src":"23125:47:30"},{"attributes":{"constant":true,"name":"_EIP_1271","scope":2522,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1702,"name":"ElementaryTypeName","src":"23296:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230633133623062","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 549534475","value":"0x20c13b0b"},"id":1703,"name":"Literal","src":"23332:10:30"}],"id":1704,"name":"VariableDeclaration","src":"23296:46:30"},{"attributes":{"constant":true,"name":"_EIP_1654","scope":2522,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1705,"name":"ElementaryTypeName","src":"23467:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783136323662613765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 371636862","value":"0x1626ba7e"},"id":1706,"name":"Literal","src":"23503:10:30"}],"id":1707,"name":"VariableDeclaration","src":"23467:46:30"},{"attributes":{"constant":true,"name":"_ERC165_INTERFACE_ID","scope":2522,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1708,"name":"ElementaryTypeName","src":"23564:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":1709,"name":"Literal","src":"23611:10:30"}],"id":1710,"name":"VariableDeclaration","src":"23564:57:30"},{"attributes":{"constant":false,"name":"relayNonce","scope":2522,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1711,"name":"ElementaryTypeName","src":"23739:7:30"}],"id":1712,"name":"VariableDeclaration","src":"23739:25:30"},{"attributes":{"constant":false,"name":"_licenceNode","scope":2522,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1713,"name":"ElementaryTypeName","src":"23845:7:30"}],"id":1714,"name":"VariableDeclaration","src":"23845:28:30"},{"attributes":{"documentation":"@dev Constructor initializes the wallet top up limit and the vault contract.\n @param _owner_ is the owner account of the wallet contract.\n @param _transferable_ indicates whether the contract ownership can be transferred.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist.\n @param _controllerNode_ is the ENS name node of the Controller contract.\n @param _licenceNode_ is the ENS name node of the Licence contract.\n @param _spendLimit_ is the initial spend limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1715,"name":"ElementaryTypeName","src":"24495:15:30"}],"id":1716,"name":"VariableDeclaration","src":"24495:23:30"},{"attributes":{"constant":false,"name":"_transferable_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1717,"name":"ElementaryTypeName","src":"24528:4:30"}],"id":1718,"name":"VariableDeclaration","src":"24528:19:30"},{"attributes":{"constant":false,"name":"_ens_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1719,"name":"ElementaryTypeName","src":"24557:7:30"}],"id":1720,"name":"VariableDeclaration","src":"24557:13:30"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1721,"name":"ElementaryTypeName","src":"24580:7:30"}],"id":1722,"name":"VariableDeclaration","src":"24580:28:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1723,"name":"ElementaryTypeName","src":"24618:7:30"}],"id":1724,"name":"VariableDeclaration","src":"24618:24:30"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1725,"name":"ElementaryTypeName","src":"24652:7:30"}],"id":1726,"name":"VariableDeclaration","src":"24652:21:30"},{"attributes":{"constant":false,"name":"_spendLimit_","scope":1752,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1727,"name":"ElementaryTypeName","src":"24683:7:30"}],"id":1728,"name":"VariableDeclaration","src":"24683:20:30"}],"id":1729,"name":"ParameterList","src":"24485:224:30"},{"attributes":{"parameters":[null]},"children":[],"id":1746,"name":"ParameterList","src":"24859:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":338,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1730,"name":"Identifier","src":"24717:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1720,"type":"address","value":"_ens_"},"id":1731,"name":"Identifier","src":"24731:5:30"}],"id":1732,"name":"ModifierInvocation","src":"24717:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1279,"type":"type(contract SpendLimit)","value":"SpendLimit"},"id":1733,"name":"Identifier","src":"24738:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1728,"type":"uint256","value":"_spendLimit_"},"id":1734,"name":"Identifier","src":"24749:12:30"}],"id":1735,"name":"ModifierInvocation","src":"24738:24:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"type(contract Ownable)","value":"Ownable"},"id":1736,"name":"Identifier","src":"24763:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1716,"type":"address payable","value":"_owner_"},"id":1737,"name":"Identifier","src":"24771:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1718,"type":"bool","value":"_transferable_"},"id":1738,"name":"Identifier","src":"24780:14:30"}],"id":1739,"name":"ModifierInvocation","src":"24763:32:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"type(contract Controllable)","value":"Controllable"},"id":1740,"name":"Identifier","src":"24796:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1724,"type":"bytes32","value":"_controllerNode_"},"id":1741,"name":"Identifier","src":"24809:16:30"}],"id":1742,"name":"ModifierInvocation","src":"24796:30:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1611,"type":"type(contract LoadLimit)","value":"LoadLimit"},"id":1743,"name":"Identifier","src":"24827:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1722,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1744,"name":"Identifier","src":"24837:20:30"}],"id":1745,"name":"ModifierInvocation","src":"24827:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1714,"type":"bytes32","value":"_licenceNode"},"id":1747,"name":"Identifier","src":"24869:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1726,"type":"bytes32","value":"_licenceNode_"},"id":1748,"name":"Identifier","src":"24884:13:30"}],"id":1749,"name":"Assignment","src":"24869:28:30"}],"id":1750,"name":"ExpressionStatement","src":"24869:28:30"}],"id":1751,"name":"Block","src":"24859:45:30"}],"id":1752,"name":"FunctionDefinition","src":"24474:430:30"},{"attributes":{"documentation":"@dev Checks if the value is not zero.","name":"isNotZero","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_value","scope":1765,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1753,"name":"ElementaryTypeName","src":"24975:7:30"}],"id":1754,"name":"VariableDeclaration","src":"24975:14:30"}],"id":1755,"name":"ParameterList","src":"24974:16:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d553a348030c1ee763b9cde2d3cc60fc831e78f559cd3758c25113c454c7f3","typeString":"literal_string \"value=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1756,"name":"Identifier","src":"25001:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1754,"type":"uint256","value":"_value"},"id":1757,"name":"Identifier","src":"25009:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1758,"name":"Literal","src":"25019:1:30"}],"id":1759,"name":"BinaryOperation","src":"25009:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"76616c75653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"value=0\"","value":"value=0"},"id":1760,"name":"Literal","src":"25022:9:30"}],"id":1761,"name":"FunctionCall","src":"25001:31:30"}],"id":1762,"name":"ExpressionStatement","src":"25001:31:30"},{"id":1763,"name":"PlaceholderStatement","src":"25042:1:30"}],"id":1764,"name":"Block","src":"24991:59:30"}],"id":1765,"name":"ModifierDefinition","src":"24956:94:30"},{"attributes":{"documentation":"@dev Ether can be deposited from any source, so this contract must be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":2522,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1766,"name":"ParameterList","src":"25161:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1767,"name":"ParameterList","src":"25181:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1680,"type":"function (address,uint256)","value":"Received"},"id":1768,"name":"Identifier","src":"25196:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1769,"name":"Identifier","src":"25205:3:30"}],"id":1770,"name":"MemberAccess","src":"25205:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1771,"name":"Identifier","src":"25217:3:30"}],"id":1772,"name":"MemberAccess","src":"25217:9:30"}],"id":1773,"name":"FunctionCall","src":"25196:31:30"}],"id":1774,"name":"EmitStatement","src":"25191:36:30"}],"id":1775,"name":"Block","src":"25181:53:30"}],"id":1776,"name":"FunctionDefinition","src":"25153:81:30"},{"attributes":{"documentation":"@dev This is a bulk transfer convenience function, used to migrate contracts.\n @notice If any of the transfers fail, this will revert.\n @param _to is the recipient's address, can't be the zero (0x0) address: transfer() will revert.\n @param _assets is an array of addresses of ERC20 tokens or 0x0 for ether.","implemented":true,"isConstructor":false,"kind":"function","name":"bulkTransfer","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1832,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1777,"name":"ElementaryTypeName","src":"25598:15:30"}],"id":1778,"name":"VariableDeclaration","src":"25598:19:30"},{"attributes":{"constant":false,"name":"_assets","scope":1832,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1779,"name":"ElementaryTypeName","src":"25619:7:30"}],"id":1780,"name":"ArrayTypeName","src":"25619:9:30"}],"id":1781,"name":"VariableDeclaration","src":"25619:26:30"}],"id":1782,"name":"ParameterList","src":"25597:49:30"},{"attributes":{"parameters":[null]},"children":[],"id":1785,"name":"ParameterList","src":"25672:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1783,"name":"Identifier","src":"25656:15:30"}],"id":1784,"name":"ModifierInvocation","src":"25656:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc6fe91796d2ae20b0ff36bc5dfbb8543f76fc0a4077e7ae85858f799173eb60","typeString":"literal_string \"asset array is empty\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1786,"name":"Identifier","src":"25737:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1787,"name":"Identifier","src":"25745:7:30"}],"id":1788,"name":"MemberAccess","src":"25745:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1789,"name":"Literal","src":"25763:1:30"}],"id":1790,"name":"BinaryOperation","src":"25745:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617373657420617272617920697320656d707479","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"asset array is empty\"","value":"asset array is empty"},"id":1791,"name":"Literal","src":"25766:22:30"}],"id":1792,"name":"FunctionCall","src":"25737:52:30"}],"id":1793,"name":"ExpressionStatement","src":"25737:52:30"},{"children":[{"attributes":{"assignments":[1795]},"children":[{"attributes":{"constant":false,"name":"i","scope":1825,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1794,"name":"ElementaryTypeName","src":"25866:7:30"}],"id":1795,"name":"VariableDeclaration","src":"25866:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1796,"name":"Literal","src":"25878:1:30"}],"id":1797,"name":"VariableDeclarationStatement","src":"25866:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"i"},"id":1798,"name":"Identifier","src":"25881:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1799,"name":"Identifier","src":"25885:7:30"}],"id":1800,"name":"MemberAccess","src":"25885:14:30"}],"id":1801,"name":"BinaryOperation","src":"25881:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"i"},"id":1802,"name":"Identifier","src":"25901:1:30"}],"id":1803,"name":"UnaryOperation","src":"25901:3:30"}],"id":1804,"name":"ExpressionStatement","src":"25901:3:30"},{"children":[{"attributes":{"assignments":[1806]},"children":[{"attributes":{"constant":false,"name":"amount","scope":1824,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1805,"name":"ElementaryTypeName","src":"25920:7:30"}],"id":1806,"name":"VariableDeclaration","src":"25920:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3833,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":1807,"name":"Identifier","src":"25937:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1808,"name":"ElementaryTypeNameExpression","src":"25946:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10401,"type":"contract Wallet","value":"this"},"id":1809,"name":"Identifier","src":"25954:4:30"}],"id":1810,"name":"FunctionCall","src":"25946:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1811,"name":"Identifier","src":"25961:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"i"},"id":1812,"name":"Identifier","src":"25969:1:30"}],"id":1813,"name":"IndexAccess","src":"25961:10:30"}],"id":1814,"name":"FunctionCall","src":"25937:35:30"}],"id":1815,"name":"VariableDeclarationStatement","src":"25920:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2521,"type":"function (address payable,address,uint256)","value":"transfer"},"id":1816,"name":"Identifier","src":"26046:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1778,"type":"address payable","value":"_to"},"id":1817,"name":"Identifier","src":"26055:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1818,"name":"Identifier","src":"26060:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1795,"type":"uint256","value":"i"},"id":1819,"name":"Identifier","src":"26068:1:30"}],"id":1820,"name":"IndexAccess","src":"26060:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1806,"type":"uint256","value":"amount"},"id":1821,"name":"Identifier","src":"26072:6:30"}],"id":1822,"name":"FunctionCall","src":"26046:33:30"}],"id":1823,"name":"ExpressionStatement","src":"26046:33:30"}],"id":1824,"name":"Block","src":"25906:184:30"}],"id":1825,"name":"ForStatement","src":"25861:229:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":1646,"type":"function (address,address[] memory)","value":"BulkTransferred"},"id":1826,"name":"Identifier","src":"26105:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1778,"type":"address payable","value":"_to"},"id":1827,"name":"Identifier","src":"26121:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1781,"type":"address[] calldata","value":"_assets"},"id":1828,"name":"Identifier","src":"26126:7:30"}],"id":1829,"name":"FunctionCall","src":"26105:29:30"}],"id":1830,"name":"EmitStatement","src":"26100:34:30"}],"id":1831,"name":"Block","src":"25672:469:30"}],"id":1832,"name":"FunctionDefinition","src":"25576:565:30"},{"attributes":{"documentation":"@dev This function allows for the controller to relay transactions on the owner's behalf,\n the relayed message has to be signed by the owner.\n @param _nonce only used for relayed transactions, must match the wallet's relayNonce.\n @param _data abi encoded data payload.\n @param _signature signed prefix + data.","implemented":true,"isConstructor":false,"kind":"function","name":"executeRelayedTransaction","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_nonce","scope":1908,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1833,"name":"ElementaryTypeName","src":"26528:7:30"}],"id":1834,"name":"VariableDeclaration","src":"26528:14:30"},{"attributes":{"constant":false,"name":"_data","scope":1908,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1835,"name":"ElementaryTypeName","src":"26544:5:30"}],"id":1836,"name":"VariableDeclaration","src":"26544:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1908,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1837,"name":"ElementaryTypeName","src":"26566:5:30"}],"id":1838,"name":"VariableDeclaration","src":"26566:25:30"}],"id":1839,"name":"ParameterList","src":"26527:65:30"},{"attributes":{"parameters":[null]},"children":[],"id":1842,"name":"ParameterList","src":"26617:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"modifier ()","value":"onlyController"},"id":1840,"name":"Identifier","src":"26602:14:30"}],"id":1841,"name":"ModifierInvocation","src":"26602:14:30"},{"children":[{"attributes":{"assignments":[1844],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"id","scope":1907,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1843,"name":"ElementaryTypeName","src":"26797:7:30"}],"id":1844,"name":"VariableDeclaration","src":"26797:10:30"}],"id":1845,"name":"VariableDeclarationStatement","src":"26797:10:30"},{"attributes":{"externalReferences":[{"id":{"declaration":1844,"isOffset":false,"isSlot":false,"src":"26840:2:30","valueSize":1}}],"operations":"{ id := chainid() }"},"children":[],"id":1846,"name":"InlineAssembly","src":"26817:99:30"},{"attributes":{"assignments":[1848]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1907,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1847,"name":"ElementaryTypeName","src":"26925:7:30"}],"id":1848,"name":"VariableDeclaration","src":"26925:16:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toEthSignedMessageHash","referencedDeclaration":3386,"type":"function (bytes32) pure returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1849,"name":"Identifier","src":"26944:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_64973292d287a9bdfbf2540b56114a2ccf5255f1a0f38436d52dc69f44e83d8d","typeString":"literal_string \"monolith:\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":1850,"name":"Identifier","src":"26954:3:30"}],"id":1851,"name":"MemberAccess","src":"26954:16:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e6f6c6974683a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"monolith:\"","value":"monolith:"},"id":1852,"name":"Literal","src":"26971:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1844,"type":"uint256","value":"id"},"id":1853,"name":"Identifier","src":"26984:2:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1854,"name":"ElementaryTypeNameExpression","src":"26988:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10401,"type":"contract Wallet","value":"this"},"id":1855,"name":"Identifier","src":"26996:4:30"}],"id":1856,"name":"FunctionCall","src":"26988:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"uint256","value":"_nonce"},"id":1857,"name":"Identifier","src":"27003:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1836,"type":"bytes calldata","value":"_data"},"id":1858,"name":"Identifier","src":"27011:5:30"}],"id":1859,"name":"FunctionCall","src":"26954:63:30"}],"id":1860,"name":"FunctionCall","src":"26944:74:30"}],"id":1861,"name":"MemberAccess","src":"26944:97:30"}],"id":1862,"name":"FunctionCall","src":"26944:99:30"}],"id":1863,"name":"VariableDeclarationStatement","src":"26925:118:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1864,"name":"Identifier","src":"27111:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2455,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1865,"name":"Identifier","src":"27119:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1848,"type":"bytes32","value":"dataHash"},"id":1866,"name":"Identifier","src":"27136:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1838,"type":"bytes calldata","value":"_signature"},"id":1867,"name":"Identifier","src":"27146:10:30"}],"id":1868,"name":"FunctionCall","src":"27119:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"bytes4","value":"_EIP_1654"},"id":1869,"name":"Identifier","src":"27161:9:30"}],"id":1870,"name":"BinaryOperation","src":"27119:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1871,"name":"Literal","src":"27172:15:30"}],"id":1872,"name":"FunctionCall","src":"27111:77:30"}],"id":1873,"name":"ExpressionStatement","src":"27111:77:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_34adcd0a74b814374d2f97634e18f1e1bbbc6244d3bcc4bf9469772fc5d9d0ea","typeString":"literal_string \"tx replay\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1874,"name":"Identifier","src":"27283:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1834,"type":"uint256","value":"_nonce"},"id":1875,"name":"Identifier","src":"27291:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1712,"type":"uint256","value":"relayNonce"},"id":1876,"name":"Identifier","src":"27301:10:30"}],"id":1877,"name":"BinaryOperation","src":"27291:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"7478207265706c6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"tx replay\"","value":"tx replay"},"id":1878,"name":"Literal","src":"27313:11:30"}],"id":1879,"name":"FunctionCall","src":"27283:42:30"}],"id":1880,"name":"ExpressionStatement","src":"27283:42:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1930,"type":"function ()","value":"_increaseRelayNonce"},"id":1881,"name":"Identifier","src":"27335:19:30"}],"id":1882,"name":"FunctionCall","src":"27335:21:30"}],"id":1883,"name":"ExpressionStatement","src":"27335:21:30"},{"attributes":{"assignments":[1885,1887]},"children":[{"attributes":{"constant":false,"name":"success","scope":1907,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1884,"name":"ElementaryTypeName","src":"27424:4:30"}],"id":1885,"name":"VariableDeclaration","src":"27424:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":1907,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1886,"name":"ElementaryTypeName","src":"27438:5:30"}],"id":1887,"name":"VariableDeclaration","src":"27438:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1888,"name":"ElementaryTypeNameExpression","src":"27465:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10401,"type":"contract Wallet","value":"this"},"id":1889,"name":"Identifier","src":"27473:4:30"}],"id":1890,"name":"FunctionCall","src":"27465:13:30"}],"id":1891,"name":"MemberAccess","src":"27465:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1836,"type":"bytes calldata","value":"_data"},"id":1892,"name":"Identifier","src":"27484:5:30"}],"id":1893,"name":"FunctionCall","src":"27465:25:30"}],"id":1894,"name":"VariableDeclarationStatement","src":"27423:67:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1895,"name":"Identifier","src":"27500:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1885,"type":"bool","value":"success"},"id":1896,"name":"Identifier","src":"27508:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":1897,"name":"ElementaryTypeNameExpression","src":"27517:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"bytes memory","value":"returndata"},"id":1898,"name":"Identifier","src":"27524:10:30"}],"id":1899,"name":"FunctionCall","src":"27517:18:30"}],"id":1900,"name":"FunctionCall","src":"27500:36:30"}],"id":1901,"name":"ExpressionStatement","src":"27500:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1652,"type":"function (bytes memory,bytes memory)","value":"ExecutedRelayedTransaction"},"id":1902,"name":"Identifier","src":"27552:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1836,"type":"bytes calldata","value":"_data"},"id":1903,"name":"Identifier","src":"27579:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1887,"type":"bytes memory","value":"returndata"},"id":1904,"name":"Identifier","src":"27586:10:30"}],"id":1905,"name":"FunctionCall","src":"27552:45:30"}],"id":1906,"name":"EmitStatement","src":"27547:50:30"}],"id":1907,"name":"Block","src":"26617:987:30"}],"id":1908,"name":"FunctionDefinition","src":"26493:1111:30"},{"attributes":{"documentation":"@dev This allows the user to cancel a transaction that was unexpectedly delayed by the relayer","implemented":true,"isConstructor":false,"kind":"function","name":"increaseRelayNonce","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1909,"name":"ParameterList","src":"27740:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1912,"name":"ParameterList","src":"27762:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3893,"type":"modifier ()","value":"onlyOwner"},"id":1910,"name":"Identifier","src":"27752:9:30"}],"id":1911,"name":"ModifierInvocation","src":"27752:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1930,"type":"function ()","value":"_increaseRelayNonce"},"id":1913,"name":"Identifier","src":"27772:19:30"}],"id":1914,"name":"FunctionCall","src":"27772:21:30"}],"id":1915,"name":"ExpressionStatement","src":"27772:21:30"}],"id":1916,"name":"Block","src":"27762:38:30"}],"id":1917,"name":"FunctionDefinition","src":"27713:87:30"},{"attributes":{"documentation":"@dev This bumps the relayNonce and emits an event accordingly","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_increaseRelayNonce","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1918,"name":"ParameterList","src":"27904:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1919,"name":"ParameterList","src":"27916:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1712,"type":"uint256","value":"relayNonce"},"id":1920,"name":"Identifier","src":"27926:10:30"}],"id":1921,"name":"UnaryOperation","src":"27926:12:30"}],"id":1922,"name":"ExpressionStatement","src":"27926:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1668,"type":"function (address,uint256)","value":"IncreasedRelayNonce"},"id":1923,"name":"Identifier","src":"27954:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":1924,"name":"Identifier","src":"27974:3:30"}],"id":1925,"name":"MemberAccess","src":"27974:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1712,"type":"uint256","value":"relayNonce"},"id":1926,"name":"Identifier","src":"27986:10:30"}],"id":1927,"name":"FunctionCall","src":"27954:43:30"}],"id":1928,"name":"EmitStatement","src":"27949:48:30"}],"id":1929,"name":"Block","src":"27916:88:30"}],"id":1930,"name":"FunctionDefinition","src":"27876:128:30"},{"attributes":{"documentation":"@dev Implements EIP-1271: receives the raw data (bytes)\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":1961,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1931,"name":"ElementaryTypeName","src":"28325:5:30"}],"id":1932,"name":"VariableDeclaration","src":"28325:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1961,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1933,"name":"ElementaryTypeName","src":"28347:5:30"}],"id":1934,"name":"VariableDeclaration","src":"28347:25:30"}],"id":1935,"name":"ParameterList","src":"28324:49:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1961,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1936,"name":"ElementaryTypeName","src":"28397:6:30"}],"id":1937,"name":"VariableDeclaration","src":"28397:6:30"}],"id":1938,"name":"ParameterList","src":"28396:8:30"},{"children":[{"attributes":{"assignments":[1940]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1960,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1939,"name":"ElementaryTypeName","src":"28415:7:30"}],"id":1940,"name":"VariableDeclaration","src":"28415:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10301,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1941,"name":"Identifier","src":"28434:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10294,"type":"abi","value":"abi"},"id":1942,"name":"Identifier","src":"28444:3:30"}],"id":1943,"name":"MemberAccess","src":"28444:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1932,"type":"bytes calldata","value":"_data"},"id":1944,"name":"Identifier","src":"28461:5:30"}],"id":1945,"name":"FunctionCall","src":"28444:23:30"}],"id":1946,"name":"FunctionCall","src":"28434:34:30"}],"id":1947,"name":"VariableDeclarationStatement","src":"28415:53:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1948,"name":"Identifier","src":"28533:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2455,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1949,"name":"Identifier","src":"28541:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1940,"type":"bytes32","value":"dataHash"},"id":1950,"name":"Identifier","src":"28558:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1934,"type":"bytes calldata","value":"_signature"},"id":1951,"name":"Identifier","src":"28568:10:30"}],"id":1952,"name":"FunctionCall","src":"28541:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"bytes4","value":"_EIP_1654"},"id":1953,"name":"Identifier","src":"28583:9:30"}],"id":1954,"name":"BinaryOperation","src":"28541:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1955,"name":"Literal","src":"28594:15:30"}],"id":1956,"name":"FunctionCall","src":"28533:77:30"}],"id":1957,"name":"ExpressionStatement","src":"28533:77:30"},{"attributes":{"functionReturnParameters":1938},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1704,"type":"bytes4","value":"_EIP_1271"},"id":1958,"name":"Identifier","src":"28627:9:30"}],"id":1959,"name":"Return","src":"28620:16:30"}],"id":1960,"name":"Block","src":"28405:238:30"}],"id":1961,"name":"FunctionDefinition","src":"28299:344:30"},{"attributes":{"documentation":"@return licence contract node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceNode","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1962,"name":"ParameterList","src":"28726:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1969,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1963,"name":"ElementaryTypeName","src":"28752:7:30"}],"id":1964,"name":"VariableDeclaration","src":"28752:7:30"}],"id":1965,"name":"ParameterList","src":"28751:9:30"},{"children":[{"attributes":{"functionReturnParameters":1965},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1714,"type":"bytes32","value":"_licenceNode"},"id":1966,"name":"Identifier","src":"28778:12:30"}],"id":1967,"name":"Return","src":"28771:19:30"}],"id":1968,"name":"Block","src":"28761:36:30"}],"id":1969,"name":"FunctionDefinition","src":"28706:91:30"},{"attributes":{"documentation":"@dev Load a token card with the specified asset amount.\n @dev the amount send should be inclusive of the percent licence.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"loadTokenCard","scope":2522,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":2045,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1970,"name":"ElementaryTypeName","src":"29116:7:30"}],"id":1971,"name":"VariableDeclaration","src":"29116:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2045,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1972,"name":"ElementaryTypeName","src":"29132:7:30"}],"id":1973,"name":"VariableDeclaration","src":"29132:15:30"}],"id":1974,"name":"ParameterList","src":"29115:33:30"},{"attributes":{"parameters":[null]},"children":[],"id":1977,"name":"ParameterList","src":"29182:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1975,"name":"Identifier","src":"29166:15:30"}],"id":1976,"name":"ModifierInvocation","src":"29166:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96e30e7359d705e51778d9ae05179a78cb34ab813d824e29a3cd9fe209b16a67","typeString":"literal_string \"token not loadable\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":1978,"name":"Identifier","src":"29261:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4193,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":1979,"name":"Identifier","src":"29269:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":1980,"name":"Identifier","src":"29286:6:30"}],"id":1981,"name":"FunctionCall","src":"29269:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f74206c6f616461626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not loadable\"","value":"token not loadable"},"id":1982,"name":"Literal","src":"29295:20:30"}],"id":1983,"name":"FunctionCall","src":"29261:55:30"}],"id":1984,"name":"ExpressionStatement","src":"29261:55:30"},{"attributes":{"assignments":[1986]},"children":[{"attributes":{"constant":false,"name":"stablecoinValue","scope":2044,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1985,"name":"ElementaryTypeName","src":"29379:7:30"}],"id":1986,"name":"VariableDeclaration","src":"29379:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2301,"type":"function (address,uint256) view returns (uint256)","value":"convertToStablecoin"},"id":1987,"name":"Identifier","src":"29405:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":1988,"name":"Identifier","src":"29425:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":1989,"name":"Identifier","src":"29433:7:30"}],"id":1990,"name":"FunctionCall","src":"29405:36:30"}],"id":1991,"name":"VariableDeclarationStatement","src":"29379:62:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1463,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1992,"name":"Identifier","src":"29571:10:30"}],"id":1994,"name":"MemberAccess","src":"29571:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1986,"type":"uint256","value":"stablecoinValue"},"id":1995,"name":"Identifier","src":"29596:15:30"}],"id":1996,"name":"FunctionCall","src":"29571:41:30"}],"id":1997,"name":"ExpressionStatement","src":"29571:41:30"},{"attributes":{"assignments":[1999]},"children":[{"attributes":{"constant":false,"name":"licenceAddress","scope":2044,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1998,"name":"ElementaryTypeName","src":"29669:7:30"}],"id":1999,"name":"VariableDeclaration","src":"29669:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2000,"name":"Identifier","src":"29694:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1714,"type":"bytes32","value":"_licenceNode"},"id":2001,"name":"Identifier","src":"29706:12:30"}],"id":2002,"name":"FunctionCall","src":"29694:25:30"}],"id":2003,"name":"VariableDeclarationStatement","src":"29669:50:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2004,"name":"Identifier","src":"29733:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2005,"name":"ElementaryTypeNameExpression","src":"29743:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2006,"name":"Literal","src":"29751:1:30"}],"id":2007,"name":"FunctionCall","src":"29743:10:30"}],"id":2008,"name":"BinaryOperation","src":"29733:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeApprove","referencedDeclaration":3549,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":2009,"name":"Identifier","src":"29769:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2010,"name":"Identifier","src":"29775:6:30"}],"id":2011,"name":"FunctionCall","src":"29769:13:30"}],"id":2012,"name":"MemberAccess","src":"29769:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1999,"type":"address","value":"licenceAddress"},"id":2013,"name":"Identifier","src":"29795:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2014,"name":"Identifier","src":"29811:7:30"}],"id":2015,"name":"FunctionCall","src":"29769:50:30"}],"id":2016,"name":"ExpressionStatement","src":"29769:50:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":4262,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4268,"type":"type(contract ILicence)","value":"ILicence"},"id":2017,"name":"Identifier","src":"29833:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1999,"type":"address","value":"licenceAddress"},"id":2018,"name":"Identifier","src":"29842:14:30"}],"id":2019,"name":"FunctionCall","src":"29833:24:30"}],"id":2020,"name":"MemberAccess","src":"29833:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2021,"name":"Identifier","src":"29863:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2022,"name":"Identifier","src":"29871:7:30"}],"id":2023,"name":"FunctionCall","src":"29833:46:30"}],"id":2024,"name":"ExpressionStatement","src":"29833:46:30"}],"id":2025,"name":"Block","src":"29755:135:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (address,uint256) payable external","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (address,uint256) payable external)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":4262,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4268,"type":"type(contract ILicence)","value":"ILicence"},"id":2026,"name":"Identifier","src":"29910:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1999,"type":"address","value":"licenceAddress"},"id":2027,"name":"Identifier","src":"29919:14:30"}],"id":2028,"name":"FunctionCall","src":"29910:24:30"}],"id":2029,"name":"MemberAccess","src":"29910:29:30"}],"id":2030,"name":"MemberAccess","src":"29910:35:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2031,"name":"Identifier","src":"29946:7:30"}],"id":2032,"name":"FunctionCall","src":"29910:44:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2033,"name":"Identifier","src":"29955:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2034,"name":"Identifier","src":"29963:7:30"}],"id":2035,"name":"FunctionCall","src":"29910:61:30"}],"id":2036,"name":"ExpressionStatement","src":"29910:61:30"}],"id":2037,"name":"Block","src":"29896:86:30"}],"id":2038,"name":"IfStatement","src":"29729:253:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1674,"type":"function (address,uint256)","value":"LoadedTokenCard"},"id":2039,"name":"Identifier","src":"29997:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1971,"type":"address","value":"_asset"},"id":2040,"name":"Identifier","src":"30013:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"_amount"},"id":2041,"name":"Identifier","src":"30021:7:30"}],"id":2042,"name":"FunctionCall","src":"29997:32:30"}],"id":2043,"name":"EmitStatement","src":"29992:37:30"}],"id":2044,"name":"Block","src":"29182:854:30"}],"id":2045,"name":"FunctionDefinition","src":"29093:943:30"},{"attributes":{"documentation":"@dev Checks for interface support based on ERC165.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2522,"stateMutability":"view","superFunction":3396,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_interfaceID","scope":2057,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2046,"name":"ElementaryTypeName","src":"30128:6:30"}],"id":2047,"name":"VariableDeclaration","src":"30128:19:30"}],"id":2048,"name":"ParameterList","src":"30127:21:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2057,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2049,"name":"ElementaryTypeName","src":"30172:4:30"}],"id":2050,"name":"VariableDeclaration","src":"30172:4:30"}],"id":2051,"name":"ParameterList","src":"30171:6:30"},{"children":[{"attributes":{"functionReturnParameters":2051},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2047,"type":"bytes4","value":"_interfaceID"},"id":2052,"name":"Identifier","src":"30195:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1710,"type":"bytes4","value":"_ERC165_INTERFACE_ID"},"id":2053,"name":"Identifier","src":"30211:20:30"}],"id":2054,"name":"BinaryOperation","src":"30195:36:30"}],"id":2055,"name":"Return","src":"30188:43:30"}],"id":2056,"name":"Block","src":"30178:60:30"}],"id":2057,"name":"FunctionDefinition","src":"30101:137:30"},{"attributes":{"documentation":"@dev Refill owner's gas balance, revert if the transaction amount is too large\n @param _amount is the amount of ether to transfer to the owner account in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"topUpGas","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":2088,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2058,"name":"ElementaryTypeName","src":"30436:7:30"}],"id":2059,"name":"VariableDeclaration","src":"30436:15:30"}],"id":2060,"name":"ParameterList","src":"30435:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":2066,"name":"ParameterList","src":"30503:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"modifier (uint256)","value":"isNotZero"},"id":2061,"name":"Identifier","src":"30462:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"uint256","value":"_amount"},"id":2062,"name":"Identifier","src":"30472:7:30"}],"id":2063,"name":"ModifierInvocation","src":"30462:18:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":374,"type":"modifier ()","value":"onlyOwnerOrController"},"id":2064,"name":"Identifier","src":"30481:21:30"}],"id":2065,"name":"ModifierInvocation","src":"30481:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1304,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":2067,"name":"Identifier","src":"30633:14:30"}],"id":2069,"name":"MemberAccess","src":"30633:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"uint256","value":"_amount"},"id":2070,"name":"Identifier","src":"30662:7:30"}],"id":2071,"name":"FunctionCall","src":"30633:37:30"}],"id":2072,"name":"ExpressionStatement","src":"30633:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3978,"type":"function () view returns (address payable)","value":"owner"},"id":2073,"name":"Identifier","src":"30717:5:30"}],"id":2074,"name":"FunctionCall","src":"30717:7:30"}],"id":2075,"name":"MemberAccess","src":"30717:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"uint256","value":"_amount"},"id":2076,"name":"Identifier","src":"30734:7:30"}],"id":2077,"name":"FunctionCall","src":"30717:25:30"}],"id":2078,"name":"ExpressionStatement","src":"30717:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1688,"type":"function (address,address,uint256)","value":"ToppedUpGas"},"id":2079,"name":"Identifier","src":"30795:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":2080,"name":"Identifier","src":"30807:3:30"}],"id":2081,"name":"MemberAccess","src":"30807:10:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3978,"type":"function () view returns (address payable)","value":"owner"},"id":2082,"name":"Identifier","src":"30819:5:30"}],"id":2083,"name":"FunctionCall","src":"30819:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2059,"type":"uint256","value":"_amount"},"id":2084,"name":"Identifier","src":"30828:7:30"}],"id":2085,"name":"FunctionCall","src":"30795:41:30"}],"id":2086,"name":"EmitStatement","src":"30790:46:30"}],"id":2087,"name":"Block","src":"30503:340:30"}],"id":2088,"name":"FunctionDefinition","src":"30418:425:30"},{"attributes":{"documentation":"@dev This function allows for the wallet to send a batch of transactions instead of one,\n it calls executeTransaction() so that the daily limit is enforced.\n @param _transactionBatch data encoding the transactions to be sent,\n following executeTransaction's format i.e. (destination, value, data)","implemented":true,"isConstructor":false,"kind":"function","name":"batchExecuteTransaction","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_transactionBatch","scope":2171,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2089,"name":"ElementaryTypeName","src":"31208:5:30"}],"id":2090,"name":"VariableDeclaration","src":"31208:30:30"}],"id":2091,"name":"ParameterList","src":"31207:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":2094,"name":"ParameterList","src":"31263:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2092,"name":"Identifier","src":"31247:15:30"}],"id":2093,"name":"ModifierInvocation","src":"31247:15:30"},{"children":[{"attributes":{"assignments":[2096]},"children":[{"attributes":{"constant":false,"name":"batchLength","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2095,"name":"ElementaryTypeName","src":"31273:7:30"}],"id":2096,"name":"VariableDeclaration","src":"31273:19:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"bytes memory","value":"_transactionBatch"},"id":2097,"name":"Identifier","src":"31295:17:30"}],"id":2098,"name":"MemberAccess","src":"31295:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2099,"name":"Literal","src":"31322:2:30"}],"id":2100,"name":"BinaryOperation","src":"31295:29:30"}],"id":2101,"name":"VariableDeclarationStatement","src":"31273:51:30"},{"attributes":{"assignments":[2103]},"children":[{"attributes":{"constant":false,"name":"remainingBytesLength","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2102,"name":"ElementaryTypeName","src":"31368:7:30"}],"id":2103,"name":"VariableDeclaration","src":"31368:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"bytes memory","value":"_transactionBatch"},"id":2104,"name":"Identifier","src":"31399:17:30"}],"id":2105,"name":"MemberAccess","src":"31399:24:30"}],"id":2106,"name":"VariableDeclarationStatement","src":"31368:55:30"},{"attributes":{"assignments":[2108]},"children":[{"attributes":{"constant":false,"name":"pos","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2107,"name":"ElementaryTypeName","src":"31468:7:30"}],"id":2108,"name":"VariableDeclaration","src":"31468:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2109,"name":"Literal","src":"31482:2:30"}],"id":2110,"name":"VariableDeclarationStatement","src":"31468:16:30"},{"attributes":{"assignments":[2112],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"destination","scope":2170,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2111,"name":"ElementaryTypeName","src":"31569:7:30"}],"id":2112,"name":"VariableDeclaration","src":"31569:19:30"}],"id":2113,"name":"VariableDeclarationStatement","src":"31569:19:30"},{"attributes":{"assignments":[2115],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2114,"name":"ElementaryTypeName","src":"31621:7:30"}],"id":2115,"name":"VariableDeclaration","src":"31621:13:30"}],"id":2116,"name":"VariableDeclarationStatement","src":"31621:13:30"},{"attributes":{"assignments":[2118],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dataLength","scope":2170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2117,"name":"ElementaryTypeName","src":"31665:7:30"}],"id":2118,"name":"VariableDeclaration","src":"31665:18:30"}],"id":2119,"name":"VariableDeclarationStatement","src":"31665:18:30"},{"attributes":{"assignments":[2121],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"data","scope":2170,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2120,"name":"ElementaryTypeName","src":"31723:5:30"}],"id":2121,"name":"VariableDeclaration","src":"31723:17:30"}],"id":2122,"name":"VariableDeclarationStatement","src":"31723:17:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"pos"},"id":2123,"name":"Identifier","src":"31771:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"batchLength"},"id":2124,"name":"Identifier","src":"31777:11:30"}],"id":2125,"name":"BinaryOperation","src":"31771:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2103,"type":"uint256","value":"remainingBytesLength"},"id":2126,"name":"Identifier","src":"31914:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3721,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2103,"type":"uint256","value":"remainingBytesLength"},"id":2127,"name":"Identifier","src":"31937:20:30"}],"id":2128,"name":"MemberAccess","src":"31937:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":2129,"name":"Literal","src":"31962:2:30"}],"id":2130,"name":"FunctionCall","src":"31937:28:30"}],"id":2131,"name":"Assignment","src":"31914:51:30"}],"id":2132,"name":"ExpressionStatement","src":"31914:51:30"},{"attributes":{"externalReferences":[{"destination":{"declaration":2112,"isOffset":false,"isSlot":false,"src":"32122:11:30","valueSize":1}},{"_transactionBatch":{"declaration":2090,"isOffset":false,"isSlot":false,"src":"32155:17:30","valueSize":1}},{"pos":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32174:3:30","valueSize":1}},{"dataLength":{"declaration":2118,"isOffset":false,"isSlot":false,"src":"32481:10:30","valueSize":1}},{"value":{"declaration":2115,"isOffset":false,"isSlot":false,"src":"32265:5:30","valueSize":1}},{"pos":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32307:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2090,"isOffset":false,"isSlot":false,"src":"32284:17:30","valueSize":1}},{"data":{"declaration":2121,"isOffset":false,"isSlot":false,"src":"32555:4:30","valueSize":1}},{"pos":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32528:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2090,"isOffset":false,"isSlot":false,"src":"32505:17:30","valueSize":1}},{"pos":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32590:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2090,"isOffset":false,"isSlot":false,"src":"32567:17:30","valueSize":1}}],"operations":"{\n destination := shr(96, mload(add(_transactionBatch, pos)))\n value := mload(add(_transactionBatch, add(pos, 20)))\n dataLength := mload(add(_transactionBatch, add(pos, 52)))\n data := add(_transactionBatch, add(pos, 52))\n}"},"children":[],"id":2133,"name":"InlineAssembly","src":"31979:634:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"pos"},"id":2134,"name":"Identifier","src":"32703:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3696,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"pos"},"id":2135,"name":"Identifier","src":"32709:3:30"}],"id":2136,"name":"MemberAccess","src":"32709:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"uint256","value":"dataLength"},"id":2137,"name":"Identifier","src":"32717:10:30"}],"id":2138,"name":"FunctionCall","src":"32709:19:30"}],"id":2139,"name":"MemberAccess","src":"32709:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":2140,"name":"Literal","src":"32733:2:30"}],"id":2141,"name":"FunctionCall","src":"32709:27:30"}],"id":2142,"name":"Assignment","src":"32703:33:30"}],"id":2143,"name":"ExpressionStatement","src":"32703:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d4d7e869602fd07d121f8992a03b812eac20f2f3831f876bce9993aae915a2b","typeString":"literal_string \"out of bounds\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2144,"name":"Identifier","src":"32841:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"uint256","value":"pos"},"id":2145,"name":"Identifier","src":"32849:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2096,"type":"uint256","value":"batchLength"},"id":2146,"name":"Identifier","src":"32856:11:30"}],"id":2147,"name":"BinaryOperation","src":"32849:18:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f6620626f756e6473","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of bounds\"","value":"out of bounds"},"id":2148,"name":"Literal","src":"32869:15:30"}],"id":2149,"name":"FunctionCall","src":"32841:44:30"}],"id":2150,"name":"ExpressionStatement","src":"32841:44:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2118,"type":"uint256","value":"dataLength"},"id":2151,"name":"Identifier","src":"32956:10:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2152,"name":"Literal","src":"32970:1:30"}],"id":2153,"name":"BinaryOperation","src":"32956:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2121,"type":"bytes memory","value":"data"},"id":2154,"name":"Identifier","src":"32991:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2155,"name":"ElementaryTypeNameExpression","src":"32998:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":2156,"name":"Literal","src":"33004:2:30"}],"id":2157,"name":"FunctionCall","src":"32998:9:30"}],"id":2158,"name":"Assignment","src":"32991:16:30"}],"id":2159,"name":"ExpressionStatement","src":"32991:16:30"}],"id":2160,"name":"Block","src":"32973:49:30"}],"id":2161,"name":"IfStatement","src":"32952:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2429,"type":"function (address,uint256,bytes memory) returns (bytes memory)","value":"executeTransaction"},"id":2162,"name":"Identifier","src":"33130:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2112,"type":"address","value":"destination"},"id":2163,"name":"Identifier","src":"33149:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2115,"type":"uint256","value":"value"},"id":2164,"name":"Identifier","src":"33162:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2121,"type":"bytes memory","value":"data"},"id":2165,"name":"Identifier","src":"33169:4:30"}],"id":2166,"name":"FunctionCall","src":"33130:44:30"}],"id":2167,"name":"ExpressionStatement","src":"33130:44:30"}],"id":2168,"name":"Block","src":"31790:1395:30"}],"id":2169,"name":"WhileStatement","src":"31764:1421:30"}],"id":2170,"name":"Block","src":"31263:1928:30"}],"id":2171,"name":"FunctionDefinition","src":"31175:2016:30"},{"attributes":{"documentation":"@dev Convert ERC20 token amount to the corresponding ether amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToEther","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2211,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2172,"name":"ElementaryTypeName","src":"33402:7:30"}],"id":2173,"name":"VariableDeclaration","src":"33402:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2174,"name":"ElementaryTypeName","src":"33418:7:30"}],"id":2175,"name":"VariableDeclaration","src":"33418:15:30"}],"id":2176,"name":"ParameterList","src":"33401:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2211,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2177,"name":"ElementaryTypeName","src":"33456:7:30"}],"id":2178,"name":"VariableDeclaration","src":"33456:7:30"}],"id":2179,"name":"ParameterList","src":"33455:9:30"},{"children":[{"attributes":{"assignments":[null,2181,2183,2185,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":2210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2180,"name":"ElementaryTypeName","src":"33545:7:30"}],"id":2181,"name":"VariableDeclaration","src":"33545:17:30"},{"attributes":{"constant":false,"name":"rate","scope":2210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2182,"name":"ElementaryTypeName","src":"33564:7:30"}],"id":2183,"name":"VariableDeclaration","src":"33564:12:30"},{"attributes":{"constant":false,"name":"available","scope":2210,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2184,"name":"ElementaryTypeName","src":"33578:4:30"}],"id":2185,"name":"VariableDeclaration","src":"33578:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":2186,"name":"Identifier","src":"33602:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2173,"type":"address","value":"_token"},"id":2187,"name":"Identifier","src":"33616:6:30"}],"id":2188,"name":"FunctionCall","src":"33602:21:30"}],"id":2189,"name":"VariableDeclarationStatement","src":"33542:81:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2185,"type":"bool","value":"available"},"id":2190,"name":"Identifier","src":"33703:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2191,"name":"Identifier","src":"33728:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2183,"type":"uint256","value":"rate"},"id":2192,"name":"Identifier","src":"33736:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2193,"name":"Literal","src":"33744:1:30"}],"id":2194,"name":"BinaryOperation","src":"33736:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":2195,"name":"Literal","src":"33747:8:30"}],"id":2196,"name":"FunctionCall","src":"33728:28:30"}],"id":2197,"name":"ExpressionStatement","src":"33728:28:30"},{"attributes":{"functionReturnParameters":2179},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3780,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3755,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2175,"type":"uint256","value":"_amount"},"id":2198,"name":"Identifier","src":"33861:7:30"}],"id":2199,"name":"MemberAccess","src":"33861:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2183,"type":"uint256","value":"rate"},"id":2200,"name":"Identifier","src":"33873:4:30"}],"id":2201,"name":"FunctionCall","src":"33861:17:30"}],"id":2202,"name":"MemberAccess","src":"33861:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2181,"type":"uint256","value":"magnitude"},"id":2203,"name":"Identifier","src":"33883:9:30"}],"id":2204,"name":"FunctionCall","src":"33861:32:30"}],"id":2205,"name":"Return","src":"33854:39:30"}],"id":2206,"name":"Block","src":"33714:190:30"}],"id":2207,"name":"IfStatement","src":"33699:205:30"},{"attributes":{"functionReturnParameters":2179},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2208,"name":"Literal","src":"33920:1:30"}],"id":2209,"name":"Return","src":"33913:8:30"}],"id":2210,"name":"Block","src":"33465:463:30"}],"id":2211,"name":"FunctionDefinition","src":"33378:550:30"},{"attributes":{"documentation":"@dev Convert ether or ERC20 token amount to the corresponding stablecoin amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToStablecoin","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2301,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2212,"name":"ElementaryTypeName","src":"34158:7:30"}],"id":2213,"name":"VariableDeclaration","src":"34158:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2301,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2214,"name":"ElementaryTypeName","src":"34174:7:30"}],"id":2215,"name":"VariableDeclaration","src":"34174:15:30"}],"id":2216,"name":"ParameterList","src":"34157:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2301,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2217,"name":"ElementaryTypeName","src":"34212:7:30"}],"id":2218,"name":"VariableDeclaration","src":"34212:7:30"}],"id":2219,"name":"ParameterList","src":"34211:9:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"address","value":"_token"},"id":2220,"name":"Identifier","src":"34332:6:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4207,"type":"function () view returns (address)","value":"_stablecoin"},"id":2221,"name":"Identifier","src":"34342:11:30"}],"id":2222,"name":"FunctionCall","src":"34342:13:30"}],"id":2223,"name":"BinaryOperation","src":"34332:23:30"},{"children":[{"attributes":{"functionReturnParameters":2219},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"_amount"},"id":2224,"name":"Identifier","src":"34378:7:30"}],"id":2225,"name":"Return","src":"34371:14:30"}],"id":2226,"name":"Block","src":"34357:39:30"}],"id":2227,"name":"IfStatement","src":"34328:68:30"},{"attributes":{"assignments":[2229]},"children":[{"attributes":{"constant":false,"name":"amountToSend","scope":2300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2228,"name":"ElementaryTypeName","src":"34405:7:30"}],"id":2229,"name":"VariableDeclaration","src":"34405:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"_amount"},"id":2230,"name":"Identifier","src":"34428:7:30"}],"id":2231,"name":"VariableDeclarationStatement","src":"34405:30:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"address","value":"_token"},"id":2232,"name":"Identifier","src":"34482:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2233,"name":"ElementaryTypeNameExpression","src":"34492:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2234,"name":"Literal","src":"34500:1:30"}],"id":2235,"name":"FunctionCall","src":"34492:10:30"}],"id":2236,"name":"BinaryOperation","src":"34482:20:30"},{"children":[{"attributes":{"assignments":[null,2238,2240,2242,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":2269,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2237,"name":"ElementaryTypeName","src":"34654:7:30"}],"id":2238,"name":"VariableDeclaration","src":"34654:17:30"},{"attributes":{"constant":false,"name":"rate","scope":2269,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2239,"name":"ElementaryTypeName","src":"34673:7:30"}],"id":2240,"name":"VariableDeclaration","src":"34673:12:30"},{"attributes":{"constant":false,"name":"available","scope":2269,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2241,"name":"ElementaryTypeName","src":"34687:4:30"}],"id":2242,"name":"VariableDeclaration","src":"34687:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":2243,"name":"Identifier","src":"34711:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2213,"type":"address","value":"_token"},"id":2244,"name":"Identifier","src":"34725:6:30"}],"id":2245,"name":"FunctionCall","src":"34711:21:30"}],"id":2246,"name":"VariableDeclarationStatement","src":"34651:81:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2247,"name":"Identifier","src":"34835:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2242,"type":"bool","value":"available"},"id":2248,"name":"Identifier","src":"34843:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":2249,"name":"Literal","src":"34854:21:30"}],"id":2250,"name":"FunctionCall","src":"34835:41:30"}],"id":2251,"name":"ExpressionStatement","src":"34835:41:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2252,"name":"Identifier","src":"34890:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2240,"type":"uint256","value":"rate"},"id":2253,"name":"Identifier","src":"34898:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2254,"name":"Literal","src":"34906:1:30"}],"id":2255,"name":"BinaryOperation","src":"34898:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":2256,"name":"Literal","src":"34909:8:30"}],"id":2257,"name":"FunctionCall","src":"34890:28:30"}],"id":2258,"name":"ExpressionStatement","src":"34890:28:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2229,"type":"uint256","value":"amountToSend"},"id":2259,"name":"Identifier","src":"35020:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3780,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3755,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2215,"type":"uint256","value":"_amount"},"id":2260,"name":"Identifier","src":"35035:7:30"}],"id":2261,"name":"MemberAccess","src":"35035:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2240,"type":"uint256","value":"rate"},"id":2262,"name":"Identifier","src":"35047:4:30"}],"id":2263,"name":"FunctionCall","src":"35035:17:30"}],"id":2264,"name":"MemberAccess","src":"35035:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2238,"type":"uint256","value":"magnitude"},"id":2265,"name":"Identifier","src":"35057:9:30"}],"id":2266,"name":"FunctionCall","src":"35035:32:30"}],"id":2267,"name":"Assignment","src":"35020:47:30"}],"id":2268,"name":"ExpressionStatement","src":"35020:47:30"}],"id":2269,"name":"Block","src":"34504:574:30"}],"id":2270,"name":"IfStatement","src":"34478:600:30"},{"attributes":{"assignments":[null,2272,2274,2276,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":2300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2271,"name":"ElementaryTypeName","src":"35195:7:30"}],"id":2272,"name":"VariableDeclaration","src":"35195:27:30"},{"attributes":{"constant":false,"name":"stablecoinRate","scope":2300,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2273,"name":"ElementaryTypeName","src":"35224:7:30"}],"id":2274,"name":"VariableDeclaration","src":"35224:22:30"},{"attributes":{"constant":false,"name":"stablecoinAvailable","scope":2300,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2275,"name":"ElementaryTypeName","src":"35248:4:30"}],"id":2276,"name":"VariableDeclaration","src":"35248:24:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":2277,"name":"Identifier","src":"35282:18:30"}],"id":2278,"name":"FunctionCall","src":"35282:20:30"}],"id":2279,"name":"VariableDeclarationStatement","src":"35192:110:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2280,"name":"Identifier","src":"35360:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2276,"type":"bool","value":"stablecoinAvailable"},"id":2281,"name":"Identifier","src":"35368:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":2282,"name":"Literal","src":"35389:21:30"}],"id":2283,"name":"FunctionCall","src":"35360:51:30"}],"id":2284,"name":"ExpressionStatement","src":"35360:51:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18bfbbfdaee82cb0eebcce67c25e7747234386e0bcace876720c3090918b5d3f","typeString":"literal_string \"stablecoin rate=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2285,"name":"Identifier","src":"35421:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2274,"type":"uint256","value":"stablecoinRate"},"id":2286,"name":"Identifier","src":"35429:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2287,"name":"Literal","src":"35447:1:30"}],"id":2288,"name":"BinaryOperation","src":"35429:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"737461626c65636f696e20726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"stablecoin rate=0\"","value":"stablecoin rate=0"},"id":2289,"name":"Literal","src":"35450:19:30"}],"id":2290,"name":"FunctionCall","src":"35421:49:30"}],"id":2291,"name":"ExpressionStatement","src":"35421:49:30"},{"attributes":{"functionReturnParameters":2219},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3780,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3755,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2229,"type":"uint256","value":"amountToSend"},"id":2292,"name":"Identifier","src":"35605:12:30"}],"id":2293,"name":"MemberAccess","src":"35605:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2272,"type":"uint256","value":"stablecoinMagnitude"},"id":2294,"name":"Identifier","src":"35622:19:30"}],"id":2295,"name":"FunctionCall","src":"35605:37:30"}],"id":2296,"name":"MemberAccess","src":"35605:41:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2274,"type":"uint256","value":"stablecoinRate"},"id":2297,"name":"Identifier","src":"35647:14:30"}],"id":2298,"name":"FunctionCall","src":"35605:57:30"}],"id":2299,"name":"Return","src":"35598:64:30"}],"id":2300,"name":"Block","src":"34221:1448:30"}],"id":2301,"name":"FunctionDefinition","src":"34129:1540:30"},{"attributes":{"documentation":"@dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses\n @param _destination address of the transaction\n @param _value ETH amount in wei\n @param _data transaction payload binary","implemented":true,"isConstructor":false,"kind":"function","name":"executeTransaction","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":2429,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2302,"name":"ElementaryTypeName","src":"35957:7:30"}],"id":2303,"name":"VariableDeclaration","src":"35957:20:30"},{"attributes":{"constant":false,"name":"_value","scope":2429,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2304,"name":"ElementaryTypeName","src":"35979:7:30"}],"id":2305,"name":"VariableDeclaration","src":"35979:14:30"},{"attributes":{"constant":false,"name":"_data","scope":2429,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2306,"name":"ElementaryTypeName","src":"35995:5:30"}],"id":2307,"name":"VariableDeclaration","src":"35995:18:30"}],"id":2308,"name":"ParameterList","src":"35956:58:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2429,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2311,"name":"ElementaryTypeName","src":"36047:5:30"}],"id":2312,"name":"VariableDeclaration","src":"36047:12:30"}],"id":2313,"name":"ParameterList","src":"36046:14:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2309,"name":"Identifier","src":"36022:15:30"}],"id":2310,"name":"ModifierInvocation","src":"36022:15:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2314,"name":"Identifier","src":"36266:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2315,"name":"Identifier","src":"36279:12:30"}],"id":2316,"name":"IndexAccess","src":"36266:26:30"}],"id":2317,"name":"UnaryOperation","src":"36265:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2318,"name":"Identifier","src":"36308:11:30"}],"id":2320,"name":"MemberAccess","src":"36308:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2305,"type":"uint256","value":"_value"},"id":2321,"name":"Identifier","src":"36334:6:30"}],"id":2322,"name":"FunctionCall","src":"36308:33:30"}],"id":2323,"name":"ExpressionStatement","src":"36308:33:30"}],"id":2324,"name":"Block","src":"36294:58:30"}],"id":2325,"name":"IfStatement","src":"36261:91:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":3305,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2326,"name":"ElementaryTypeNameExpression","src":"36453:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2327,"name":"Identifier","src":"36461:12:30"}],"id":2328,"name":"FunctionCall","src":"36453:21:30"}],"id":2329,"name":"MemberAccess","src":"36453:32:30"}],"id":2330,"name":"FunctionCall","src":"36453:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4161,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":2331,"name":"Identifier","src":"36491:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2332,"name":"Identifier","src":"36509:12:30"}],"id":2333,"name":"FunctionCall","src":"36491:31:30"}],"id":2334,"name":"BinaryOperation","src":"36453:69:30"},{"children":[{"attributes":{"assignments":[2336],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"to","scope":2398,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2335,"name":"ElementaryTypeName","src":"36625:7:30"}],"id":2336,"name":"VariableDeclaration","src":"36625:10:30"}],"id":2337,"name":"VariableDeclarationStatement","src":"36625:10:30"},{"attributes":{"assignments":[2339],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"amount","scope":2398,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2338,"name":"ElementaryTypeName","src":"36649:7:30"}],"id":2339,"name":"VariableDeclaration","src":"36649:14:30"}],"id":2340,"name":"VariableDeclarationStatement","src":"36649:14:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2336,"type":"address","value":"to"},"id":2341,"name":"Identifier","src":"36678:2:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2339,"type":"uint256","value":"amount"},"id":2342,"name":"Identifier","src":"36682:6:30"}],"id":2343,"name":"TupleExpression","src":"36677:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4145,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":2344,"name":"Identifier","src":"36692:27:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2345,"name":"Identifier","src":"36720:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2346,"name":"Identifier","src":"36734:5:30"}],"id":2347,"name":"FunctionCall","src":"36692:48:30"}],"id":2348,"name":"Assignment","src":"36677:63:30"}],"id":2349,"name":"ExpressionStatement","src":"36677:63:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2350,"name":"Identifier","src":"36759:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2336,"type":"address","value":"to"},"id":2351,"name":"Identifier","src":"36772:2:30"}],"id":2352,"name":"IndexAccess","src":"36759:16:30"}],"id":2353,"name":"UnaryOperation","src":"36758:17:30"},{"children":[{"attributes":{"assignments":[2355]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2367,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2354,"name":"ElementaryTypeName","src":"36962:7:30"}],"id":2355,"name":"VariableDeclaration","src":"36962:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2356,"name":"Identifier","src":"36983:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2357,"name":"Identifier","src":"36998:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2339,"type":"uint256","value":"amount"},"id":2358,"name":"Identifier","src":"37012:6:30"}],"id":2359,"name":"FunctionCall","src":"36983:36:30"}],"id":2360,"name":"VariableDeclarationStatement","src":"36962:57:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2361,"name":"Identifier","src":"37037:11:30"}],"id":2363,"name":"MemberAccess","src":"37037:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2355,"type":"uint256","value":"etherValue"},"id":2364,"name":"Identifier","src":"37063:10:30"}],"id":2365,"name":"FunctionCall","src":"37037:37:30"}],"id":2366,"name":"ExpressionStatement","src":"37037:37:30"}],"id":2367,"name":"Block","src":"36777:312:30"}],"id":2368,"name":"IfStatement","src":"36754:335:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"callOptionalReturn","referencedDeclaration":3668,"type":"function (contract ERC20,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3450,"type":"type(contract ERC20)","value":"ERC20"},"id":2369,"name":"Identifier","src":"37238:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2370,"name":"Identifier","src":"37244:12:30"}],"id":2371,"name":"FunctionCall","src":"37238:19:30"}],"id":2372,"name":"MemberAccess","src":"37238:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2373,"name":"Identifier","src":"37277:5:30"}],"id":2374,"name":"FunctionCall","src":"37238:45:30"}],"id":2375,"name":"ExpressionStatement","src":"37238:45:30"},{"attributes":{"assignments":[2377]},"children":[{"attributes":{"constant":false,"name":"b","scope":2398,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2376,"name":"ElementaryTypeName","src":"37387:5:30"}],"id":2377,"name":"VariableDeclaration","src":"37387:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2378,"name":"ElementaryTypeName","src":"37408:5:30"}],"id":2379,"name":"NewExpression","src":"37404:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2380,"name":"Literal","src":"37414:2:30"}],"id":2381,"name":"FunctionCall","src":"37404:13:30"}],"id":2382,"name":"VariableDeclarationStatement","src":"37387:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2377,"type":"bytes memory","value":"b"},"id":2383,"name":"Identifier","src":"37431:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2384,"name":"Literal","src":"37433:2:30"}],"id":2385,"name":"IndexAccess","src":"37431:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2386,"name":"Literal","src":"37439:4:30"}],"id":2387,"name":"Assignment","src":"37431:12:30"}],"id":2388,"name":"ExpressionStatement","src":"37431:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1662,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2389,"name":"Identifier","src":"37463:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2390,"name":"Identifier","src":"37483:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2305,"type":"uint256","value":"_value"},"id":2391,"name":"Identifier","src":"37497:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2392,"name":"Identifier","src":"37505:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2377,"type":"bytes memory","value":"b"},"id":2393,"name":"Identifier","src":"37512:1:30"}],"id":2394,"name":"FunctionCall","src":"37463:51:30"}],"id":2395,"name":"EmitStatement","src":"37458:56:30"},{"attributes":{"functionReturnParameters":2313},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2377,"type":"bytes memory","value":"b"},"id":2396,"name":"Identifier","src":"37535:1:30"}],"id":2397,"name":"Return","src":"37528:8:30"}],"id":2398,"name":"Block","src":"36524:1023:30"}],"id":2399,"name":"IfStatement","src":"36449:1098:30"},{"attributes":{"assignments":[2401,2403]},"children":[{"attributes":{"constant":false,"name":"success","scope":2428,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2400,"name":"ElementaryTypeName","src":"37558:4:30"}],"id":2401,"name":"VariableDeclaration","src":"37558:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":2428,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2402,"name":"ElementaryTypeName","src":"37572:5:30"}],"id":2403,"name":"VariableDeclaration","src":"37572:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (bytes memory) payable returns (bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2404,"name":"Identifier","src":"37599:12:30"}],"id":2405,"name":"MemberAccess","src":"37599:17:30"}],"id":2406,"name":"MemberAccess","src":"37599:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2305,"type":"uint256","value":"_value"},"id":2407,"name":"Identifier","src":"37623:6:30"}],"id":2408,"name":"FunctionCall","src":"37599:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2409,"name":"Identifier","src":"37631:5:30"}],"id":2410,"name":"FunctionCall","src":"37599:38:30"}],"id":2411,"name":"VariableDeclarationStatement","src":"37557:80:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2412,"name":"Identifier","src":"37647:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2401,"type":"bool","value":"success"},"id":2413,"name":"Identifier","src":"37655:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":2414,"name":"ElementaryTypeNameExpression","src":"37664:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"bytes memory","value":"returndata"},"id":2415,"name":"Identifier","src":"37671:10:30"}],"id":2416,"name":"FunctionCall","src":"37664:18:30"}],"id":2417,"name":"FunctionCall","src":"37647:36:30"}],"id":2418,"name":"ExpressionStatement","src":"37647:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1662,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2419,"name":"Identifier","src":"37699:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2303,"type":"address","value":"_destination"},"id":2420,"name":"Identifier","src":"37719:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2305,"type":"uint256","value":"_value"},"id":2421,"name":"Identifier","src":"37733:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2307,"type":"bytes memory","value":"_data"},"id":2422,"name":"Identifier","src":"37741:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"bytes memory","value":"returndata"},"id":2423,"name":"Identifier","src":"37748:10:30"}],"id":2424,"name":"FunctionCall","src":"37699:60:30"}],"id":2425,"name":"EmitStatement","src":"37694:65:30"},{"attributes":{"functionReturnParameters":2313},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2403,"type":"bytes memory","value":"returndata"},"id":2426,"name":"Identifier","src":"37846:10:30"}],"id":2427,"name":"Return","src":"37839:17:30"}],"id":2428,"name":"Block","src":"36061:1802:30"}],"id":2429,"name":"FunctionDefinition","src":"35929:1934:30"},{"attributes":{"documentation":"@dev Implements EIP-1654: receives the hashed message(bytes32)\n https://github.com/ethereum/EIPs/issues/1654.md\n @param _hashedData Hashed data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _dataHash","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2522,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hashedData","scope":2455,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2430,"name":"ElementaryTypeName","src":"38172:7:30"}],"id":2431,"name":"VariableDeclaration","src":"38172:19:30"},{"attributes":{"constant":false,"name":"_signature","scope":2455,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2432,"name":"ElementaryTypeName","src":"38193:5:30"}],"id":2433,"name":"VariableDeclaration","src":"38193:23:30"}],"id":2434,"name":"ParameterList","src":"38171:46:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2455,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2435,"name":"ElementaryTypeName","src":"38239:6:30"}],"id":2436,"name":"VariableDeclaration","src":"38239:6:30"}],"id":2437,"name":"ParameterList","src":"38238:8:30"},{"children":[{"attributes":{"assignments":[2439]},"children":[{"attributes":{"constant":false,"name":"from","scope":2454,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2438,"name":"ElementaryTypeName","src":"38257:7:30"}],"id":2439,"name":"VariableDeclaration","src":"38257:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"recover","referencedDeclaration":3370,"type":"function (bytes32,bytes memory) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2431,"type":"bytes32","value":"_hashedData"},"id":2440,"name":"Identifier","src":"38272:11:30"}],"id":2441,"name":"MemberAccess","src":"38272:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2433,"type":"bytes memory","value":"_signature"},"id":2442,"name":"Identifier","src":"38292:10:30"}],"id":2443,"name":"FunctionCall","src":"38272:31:30"}],"id":2444,"name":"VariableDeclarationStatement","src":"38257:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2445,"name":"Identifier","src":"38313:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3990,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2446,"name":"Identifier","src":"38321:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2439,"type":"address","value":"from"},"id":2447,"name":"Identifier","src":"38330:4:30"}],"id":2448,"name":"FunctionCall","src":"38321:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":2449,"name":"Literal","src":"38337:19:30"}],"id":2450,"name":"FunctionCall","src":"38313:44:30"}],"id":2451,"name":"ExpressionStatement","src":"38313:44:30"},{"attributes":{"functionReturnParameters":2437},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"bytes4","value":"_EIP_1654"},"id":2452,"name":"Identifier","src":"38374:9:30"}],"id":2453,"name":"Return","src":"38367:16:30"}],"id":2454,"name":"Block","src":"38247:143:30"}],"id":2455,"name":"FunctionDefinition","src":"38146:244:30"},{"attributes":{"documentation":"@dev Transfers the specified asset to the recipient's address.\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"transfer","scope":2522,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2521,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2456,"name":"ElementaryTypeName","src":"38685:15:30"}],"id":2457,"name":"VariableDeclaration","src":"38685:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":2521,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2458,"name":"ElementaryTypeName","src":"38706:7:30"}],"id":2459,"name":"VariableDeclaration","src":"38706:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2521,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2460,"name":"ElementaryTypeName","src":"38722:7:30"}],"id":2461,"name":"VariableDeclaration","src":"38722:15:30"}],"id":2462,"name":"ParameterList","src":"38684:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":2468,"name":"ParameterList","src":"38781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":396,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2463,"name":"Identifier","src":"38746:15:30"}],"id":2464,"name":"ModifierInvocation","src":"38746:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"modifier (uint256)","value":"isNotZero"},"id":2465,"name":"Identifier","src":"38762:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2466,"name":"Identifier","src":"38772:7:30"}],"id":2467,"name":"ModifierInvocation","src":"38762:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_680f6a32e9231c9e20746c0afa2d6c3a5c617d8ed04badee4157b674b70920f8","typeString":"literal_string \"destination=0\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":2469,"name":"Identifier","src":"38852:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"address payable","value":"_to"},"id":2470,"name":"Identifier","src":"38860:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2471,"name":"ElementaryTypeNameExpression","src":"38867:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2472,"name":"Literal","src":"38875:1:30"}],"id":2473,"name":"FunctionCall","src":"38867:10:30"}],"id":2474,"name":"BinaryOperation","src":"38860:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"64657374696e6174696f6e3d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"destination=0\"","value":"destination=0"},"id":2475,"name":"Literal","src":"38879:15:30"}],"id":2476,"name":"FunctionCall","src":"38852:43:30"}],"id":2477,"name":"ExpressionStatement","src":"38852:43:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2478,"name":"Identifier","src":"38984:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"address payable","value":"_to"},"id":2479,"name":"Identifier","src":"38997:3:30"}],"id":2480,"name":"IndexAccess","src":"38984:17:30"}],"id":2481,"name":"UnaryOperation","src":"38983:18:30"},{"children":[{"attributes":{"assignments":[2483]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2506,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2482,"name":"ElementaryTypeName","src":"39080:7:30"}],"id":2483,"name":"VariableDeclaration","src":"39080:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2484,"name":"Identifier","src":"39101:7:30"}],"id":2485,"name":"VariableDeclarationStatement","src":"39080:28:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"address","value":"_asset"},"id":2486,"name":"Identifier","src":"39205:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2487,"name":"ElementaryTypeNameExpression","src":"39215:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2488,"name":"Literal","src":"39223:1:30"}],"id":2489,"name":"FunctionCall","src":"39215:10:30"}],"id":2490,"name":"BinaryOperation","src":"39205:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2483,"type":"uint256","value":"etherValue"},"id":2491,"name":"Identifier","src":"39245:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2211,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2492,"name":"Identifier","src":"39258:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"address","value":"_asset"},"id":2493,"name":"Identifier","src":"39273:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2494,"name":"Identifier","src":"39281:7:30"}],"id":2495,"name":"FunctionCall","src":"39258:31:30"}],"id":2496,"name":"Assignment","src":"39245:44:30"}],"id":2497,"name":"ExpressionStatement","src":"39245:44:30"}],"id":2498,"name":"Block","src":"39227:77:30"}],"id":2499,"name":"IfStatement","src":"39201:103:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1013,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1166,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2500,"name":"Identifier","src":"39515:11:30"}],"id":2502,"name":"MemberAccess","src":"39515:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2483,"type":"uint256","value":"etherValue"},"id":2503,"name":"Identifier","src":"39541:10:30"}],"id":2504,"name":"FunctionCall","src":"39515:37:30"}],"id":2505,"name":"ExpressionStatement","src":"39515:37:30"}],"id":2506,"name":"Block","src":"39003:560:30"}],"id":2507,"name":"IfStatement","src":"38979:584:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2508,"name":"Identifier","src":"39638:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"address payable","value":"_to"},"id":2509,"name":"Identifier","src":"39652:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"address","value":"_asset"},"id":2510,"name":"Identifier","src":"39657:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2511,"name":"Identifier","src":"39665:7:30"}],"id":2512,"name":"FunctionCall","src":"39638:35:30"}],"id":2513,"name":"ExpressionStatement","src":"39638:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1696,"type":"function (address,address,uint256)","value":"Transferred"},"id":2514,"name":"Identifier","src":"39724:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2457,"type":"address payable","value":"_to"},"id":2515,"name":"Identifier","src":"39736:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2459,"type":"address","value":"_asset"},"id":2516,"name":"Identifier","src":"39741:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2461,"type":"uint256","value":"_amount"},"id":2517,"name":"Identifier","src":"39749:7:30"}],"id":2518,"name":"FunctionCall","src":"39724:33:30"}],"id":2519,"name":"EmitStatement","src":"39719:38:30"}],"id":2520,"name":"Block","src":"38781:983:30"}],"id":2521,"name":"FunctionDefinition","src":"38667:1097:30"}],"id":2522,"name":"ContractDefinition","src":"22209:17557:30"}],"id":2523,"name":"SourceUnit","src":"757:39010:30"}},"walletCache.sol":{"AST":{"attributes":{"absolutePath":"walletCache.sol","exportedSymbols":{"IWalletCache":[10],"WalletCache":[197]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"781:24:31"},{"attributes":{"SourceUnit":2523,"absolutePath":"wallet.sol","file":"./wallet.sol","scope":198,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"807:22:31"},{"attributes":{"SourceUnit":339,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":198,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"830:39:31"},{"attributes":{"SourceUnit":294,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":198,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"870:38:31"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title IWalletCache interface describes a method for poping an already cached wallet","fullyImplemented":false,"linearizedBaseContracts":[10],"name":"IWalletCache","scope":198},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"walletCachePop","scope":10,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5,"name":"ParameterList","src":"1052:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":9,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":6,"name":"UserDefinedTypeName","src":"1073:6:31"}],"id":7,"name":"VariableDeclaration","src":"1073:6:31"}],"id":8,"name":"ParameterList","src":"1072:8:31"}],"id":9,"name":"FunctionDefinition","src":"1029:52:31"}],"id":10,"name":"ContractDefinition","src":"1000:83:31"},{"attributes":{"contractDependencies":[293,338,2522],"contractKind":"contract","documentation":"/ @title Wallet cache with wallet pre-caching functionality.","fullyImplemented":true,"linearizedBaseContracts":[197,293,338],"name":"WalletCache","scope":198},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":338,"type":"contract ENSResolvable"},"id":11,"name":"UserDefinedTypeName","src":"1174:13:31"}],"id":12,"name":"InheritanceSpecifier","src":"1174:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":293,"type":"contract Controllable"},"id":13,"name":"UserDefinedTypeName","src":"1189:12:31"}],"id":14,"name":"InheritanceSpecifier","src":"1189:12:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"CachedWallet"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_wallet","scope":18,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":15,"name":"UserDefinedTypeName","src":"1227:6:31"}],"id":16,"name":"VariableDeclaration","src":"1227:14:31"}],"id":17,"name":"ParameterList","src":"1226:16:31"}],"id":18,"name":"EventDefinition","src":"1208:35:31"},{"attributes":{"constant":true,"name":"_DEFAULT_LICENCE_NODE","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":19,"name":"ElementaryTypeName","src":"1348:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307864306666386264363766366532356534653462303130646635383261333661306565396237386534396166653663633163666635646435613833303430333330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 9453...(69 digits omitted)...3024","value":"0xd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a83040330"},"id":20,"name":"Literal","src":"1397:66:31"}],"id":21,"name":"VariableDeclaration","src":"1348:115:31"},{"attributes":{"constant":true,"name":"_DEFAULT_TOKEN_WHITELIST_NODE","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":22,"name":"ElementaryTypeName","src":"1506:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307865383466393035373066313366653039663238386632343131666639636635306461363131656430633764623766373364343830353366666339373464333936","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1050...(70 digits omitted)...8950","value":"0xe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396"},"id":23,"name":"Literal","src":"1563:66:31"}],"id":24,"name":"VariableDeclaration","src":"1506:123:31"},{"attributes":{"constant":true,"name":"_DEFAULT_WALLET_DEPLOYER_NODE","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":25,"name":"ElementaryTypeName","src":"1675:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307831643063306164626536616464643933363539343436333131653037363761353662363764343165663338663063623636646366373536306432386135613338","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1313...(69 digits omitted)...7784","value":"0x1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a38"},"id":26,"name":"Literal","src":"1732:66:31"}],"id":27,"name":"VariableDeclaration","src":"1675:123:31"},{"attributes":{"constant":false,"name":"licenceNode","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":28,"name":"ElementaryTypeName","src":"1805:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":21,"type":"bytes32","value":"_DEFAULT_LICENCE_NODE"},"id":29,"name":"Identifier","src":"1834:21:31"}],"id":30,"name":"VariableDeclaration","src":"1805:50:31"},{"attributes":{"constant":false,"name":"tokenWhitelistNode","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":31,"name":"ElementaryTypeName","src":"1861:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":24,"type":"bytes32","value":"_DEFAULT_TOKEN_WHITELIST_NODE"},"id":32,"name":"Identifier","src":"1897:29:31"}],"id":33,"name":"VariableDeclaration","src":"1861:65:31"},{"attributes":{"constant":false,"name":"walletDeployerNode","scope":197,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":34,"name":"ElementaryTypeName","src":"1932:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":27,"type":"bytes32","value":"_DEFAULT_WALLET_DEPLOYER_NODE"},"id":35,"name":"Identifier","src":"1968:29:31"}],"id":36,"name":"VariableDeclaration","src":"1932:65:31"},{"attributes":{"constant":false,"name":"cachedWallets","scope":197,"stateVariable":true,"storageLocation":"default","type":"contract Wallet[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"contract Wallet[]"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":37,"name":"UserDefinedTypeName","src":"2004:6:31"}],"id":38,"name":"ArrayTypeName","src":"2004:8:31"}],"id":39,"name":"VariableDeclaration","src":"2004:29:31"},{"attributes":{"constant":false,"name":"ens","scope":197,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"public"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":40,"name":"ElementaryTypeName","src":"2040:7:31"}],"id":41,"name":"VariableDeclaration","src":"2040:18:31"},{"attributes":{"constant":false,"name":"defaultSpendLimit","scope":197,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":42,"name":"ElementaryTypeName","src":"2064:7:31"}],"id":43,"name":"VariableDeclaration","src":"2064:32:31"},{"attributes":{"documentation":"@notice parameters are passed in so that they can be used to construct new instances of the wallet\n @dev pass in bytes32 to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":197,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":106,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":44,"name":"ElementaryTypeName","src":"2311:7:31"}],"id":45,"name":"VariableDeclaration","src":"2311:13:31"},{"attributes":{"constant":false,"name":"_defaultSpendLimit_","scope":106,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":46,"name":"ElementaryTypeName","src":"2334:7:31"}],"id":47,"name":"VariableDeclaration","src":"2334:27:31"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":48,"name":"ElementaryTypeName","src":"2371:7:31"}],"id":49,"name":"VariableDeclaration","src":"2371:24:31"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":50,"name":"ElementaryTypeName","src":"2405:7:31"}],"id":51,"name":"VariableDeclaration","src":"2405:21:31"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":52,"name":"ElementaryTypeName","src":"2436:7:31"}],"id":53,"name":"VariableDeclaration","src":"2436:28:31"},{"attributes":{"constant":false,"name":"_walletDeployerNode_","scope":106,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":54,"name":"ElementaryTypeName","src":"2474:7:31"}],"id":55,"name":"VariableDeclaration","src":"2474:28:31"}],"id":56,"name":"ParameterList","src":"2301:207:31"},{"attributes":{"parameters":[null]},"children":[],"id":63,"name":"ParameterList","src":"2568:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":338,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":57,"name":"Identifier","src":"2516:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":45,"type":"address","value":"_ens_"},"id":58,"name":"Identifier","src":"2530:5:31"}],"id":59,"name":"ModifierInvocation","src":"2516:20:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":293,"type":"type(contract Controllable)","value":"Controllable"},"id":60,"name":"Identifier","src":"2537:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":49,"type":"bytes32","value":"_controllerNode_"},"id":61,"name":"Identifier","src":"2550:16:31"}],"id":62,"name":"ModifierInvocation","src":"2537:30:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":41,"type":"address","value":"ens"},"id":64,"name":"Identifier","src":"2578:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":45,"type":"address","value":"_ens_"},"id":65,"name":"Identifier","src":"2584:5:31"}],"id":66,"name":"Assignment","src":"2578:11:31"}],"id":67,"name":"ExpressionStatement","src":"2578:11:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"uint256","value":"defaultSpendLimit"},"id":68,"name":"Identifier","src":"2599:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":47,"type":"uint256","value":"_defaultSpendLimit_"},"id":69,"name":"Identifier","src":"2619:19:31"}],"id":70,"name":"Assignment","src":"2599:39:31"}],"id":71,"name":"ExpressionStatement","src":"2599:39:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":51,"type":"bytes32","value":"_licenceNode_"},"id":72,"name":"Identifier","src":"2695:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":73,"name":"ElementaryTypeNameExpression","src":"2712:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":74,"name":"Literal","src":"2720:1:31"}],"id":75,"name":"FunctionCall","src":"2712:10:31"}],"id":76,"name":"BinaryOperation","src":"2695:27:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"licenceNode"},"id":77,"name":"Identifier","src":"2738:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":51,"type":"bytes32","value":"_licenceNode_"},"id":78,"name":"Identifier","src":"2752:13:31"}],"id":79,"name":"Assignment","src":"2738:27:31"}],"id":80,"name":"ExpressionStatement","src":"2738:27:31"}],"id":81,"name":"Block","src":"2724:52:31"}],"id":82,"name":"IfStatement","src":"2691:85:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":53,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":83,"name":"Identifier","src":"2838:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":84,"name":"ElementaryTypeNameExpression","src":"2862:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":85,"name":"Literal","src":"2870:1:31"}],"id":86,"name":"FunctionCall","src":"2862:10:31"}],"id":87,"name":"BinaryOperation","src":"2838:34:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":33,"type":"bytes32","value":"tokenWhitelistNode"},"id":88,"name":"Identifier","src":"2888:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":53,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":89,"name":"Identifier","src":"2909:20:31"}],"id":90,"name":"Assignment","src":"2888:41:31"}],"id":91,"name":"ExpressionStatement","src":"2888:41:31"}],"id":92,"name":"Block","src":"2874:66:31"}],"id":93,"name":"IfStatement","src":"2834:106:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":55,"type":"bytes32","value":"_walletDeployerNode_"},"id":94,"name":"Identifier","src":"3002:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":95,"name":"ElementaryTypeNameExpression","src":"3026:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":96,"name":"Literal","src":"3034:1:31"}],"id":97,"name":"FunctionCall","src":"3026:10:31"}],"id":98,"name":"BinaryOperation","src":"3002:34:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"bytes32","value":"walletDeployerNode"},"id":99,"name":"Identifier","src":"3052:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":55,"type":"bytes32","value":"_walletDeployerNode_"},"id":100,"name":"Identifier","src":"3073:20:31"}],"id":101,"name":"Assignment","src":"3052:41:31"}],"id":102,"name":"ExpressionStatement","src":"3052:41:31"}],"id":103,"name":"Block","src":"3038:66:31"}],"id":104,"name":"IfStatement","src":"2998:106:31"}],"id":105,"name":"Block","src":"2568:542:31"}],"id":106,"name":"FunctionDefinition","src":"2290:820:31"},{"attributes":{"documentation":null,"name":"onlyWalletDeployer","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":107,"name":"ParameterList","src":"3143:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2ae83e68b46e92db3c6a8db018001d48e56a6c05f219cc33be19b5d44f899d9","typeString":"literal_string \"not called by wallet-deployer\""}],"overloadedDeclarations":[10310,10311],"referencedDeclaration":10311,"type":"function (bool,string memory) pure","value":"require"},"id":108,"name":"Identifier","src":"3156:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10307,"type":"msg","value":"msg"},"id":109,"name":"Identifier","src":"3164:3:31"}],"id":110,"name":"MemberAccess","src":"3164:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":111,"name":"Identifier","src":"3178:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"bytes32","value":"walletDeployerNode"},"id":112,"name":"Identifier","src":"3190:18:31"}],"id":113,"name":"FunctionCall","src":"3178:31:31"}],"id":114,"name":"BinaryOperation","src":"3164:45:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not called by wallet-deployer\"","value":"not called by wallet-deployer"},"id":115,"name":"Literal","src":"3211:31:31"}],"id":116,"name":"FunctionCall","src":"3156:87:31"}],"id":117,"name":"ExpressionStatement","src":"3156:87:31"},{"id":118,"name":"PlaceholderStatement","src":"3253:1:31"}],"id":119,"name":"Block","src":"3146:115:31"}],"id":120,"name":"ModifierDefinition","src":"3116:145:31"},{"attributes":{"documentation":"@notice This public method allows anyone to pre-cache wallets","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cacheWallet","scope":197,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":121,"name":"ParameterList","src":"3357:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":122,"name":"ParameterList","src":"3367:0:31"},{"children":[{"attributes":{"assignments":[124]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":153,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":123,"name":"UserDefinedTypeName","src":"3479:6:31"}],"id":124,"name":"VariableDeclaration","src":"3479:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract Wallet","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"function (address payable,bool,address,bytes32,bytes32,bytes32,uint256) returns (contract Wallet)"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":125,"name":"UserDefinedTypeName","src":"3499:6:31"}],"id":126,"name":"NewExpression","src":"3495:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":127,"name":"ElementaryTypeNameExpression","src":"3519:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":128,"name":"ElementaryTypeNameExpression","src":"3527:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":337,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":129,"name":"Identifier","src":"3535:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"bytes32","value":"walletDeployerNode"},"id":130,"name":"Identifier","src":"3547:18:31"}],"id":131,"name":"FunctionCall","src":"3535:31:31"}],"id":132,"name":"FunctionCall","src":"3527:40:31"}],"id":133,"name":"FunctionCall","src":"3519:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":134,"name":"Literal","src":"3582:4:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":41,"type":"address","value":"ens"},"id":135,"name":"Identifier","src":"3600:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":33,"type":"bytes32","value":"tokenWhitelistNode"},"id":136,"name":"Identifier","src":"3617:18:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":258,"type":"function () view returns (bytes32)","value":"controllerNode"},"id":137,"name":"Identifier","src":"3649:14:31"}],"id":138,"name":"FunctionCall","src":"3649:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"licenceNode"},"id":139,"name":"Identifier","src":"3679:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":43,"type":"uint256","value":"defaultSpendLimit"},"id":140,"name":"Identifier","src":"3704:17:31"}],"id":141,"name":"FunctionCall","src":"3495:236:31"}],"id":142,"name":"VariableDeclarationStatement","src":"3479:252:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (contract Wallet) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":143,"name":"Identifier","src":"3741:13:31"}],"id":145,"name":"MemberAccess","src":"3741:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"contract Wallet","value":"wallet"},"id":146,"name":"Identifier","src":"3760:6:31"}],"id":147,"name":"FunctionCall","src":"3741:26:31"}],"id":148,"name":"ExpressionStatement","src":"3741:26:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2522","typeString":"contract Wallet"}],"overloadedDeclarations":[null],"referencedDeclaration":18,"type":"function (contract Wallet)","value":"CachedWallet"},"id":149,"name":"Identifier","src":"3783:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":124,"type":"contract Wallet","value":"wallet"},"id":150,"name":"Identifier","src":"3796:6:31"}],"id":151,"name":"FunctionCall","src":"3783:20:31"}],"id":152,"name":"EmitStatement","src":"3778:25:31"}],"id":153,"name":"Block","src":"3367:443:31"}],"id":154,"name":"FunctionDefinition","src":"3337:473:31"},{"attributes":{"documentation":"@notice This public method allows only the wallet deployer to pop pre-cached wallets or create a new one in case there aren't any","implemented":true,"isConstructor":false,"kind":"function","name":"walletCachePop","scope":197,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":155,"name":"ParameterList","src":"3977:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":187,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":158,"name":"UserDefinedTypeName","src":"4017:6:31"}],"id":159,"name":"VariableDeclaration","src":"4017:6:31"}],"id":160,"name":"ParameterList","src":"4016:8:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"modifier ()","value":"onlyWalletDeployer"},"id":156,"name":"Identifier","src":"3989:18:31"}],"id":157,"name":"ModifierInvocation","src":"3989:18:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":161,"name":"Identifier","src":"4039:13:31"}],"id":162,"name":"MemberAccess","src":"4039:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":163,"name":"Literal","src":"4062:1:31"}],"id":164,"name":"BinaryOperation","src":"4039:24:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":154,"type":"function ()","value":"cacheWallet"},"id":165,"name":"Identifier","src":"4079:11:31"}],"id":166,"name":"FunctionCall","src":"4079:13:31"}],"id":167,"name":"ExpressionStatement","src":"4079:13:31"}],"id":168,"name":"Block","src":"4065:38:31"}],"id":169,"name":"IfStatement","src":"4035:68:31"},{"attributes":{"assignments":[171]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":186,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2522,"type":"contract Wallet"},"id":170,"name":"UserDefinedTypeName","src":"4113:6:31"}],"id":171,"name":"VariableDeclaration","src":"4113:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"contract Wallet"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":172,"name":"Identifier","src":"4129:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":173,"name":"Identifier","src":"4143:13:31"}],"id":174,"name":"MemberAccess","src":"4143:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":175,"name":"Literal","src":"4166:1:31"}],"id":176,"name":"BinaryOperation","src":"4143:24:31"}],"id":177,"name":"IndexAccess","src":"4129:39:31"}],"id":178,"name":"VariableDeclarationStatement","src":"4113:55:31"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"pop","referencedDeclaration":null,"type":"function ()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":179,"name":"Identifier","src":"4178:13:31"}],"id":181,"name":"MemberAccess","src":"4178:17:31"}],"id":182,"name":"FunctionCall","src":"4178:19:31"}],"id":183,"name":"ExpressionStatement","src":"4178:19:31"},{"attributes":{"functionReturnParameters":160},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":171,"type":"contract Wallet","value":"wallet"},"id":184,"name":"Identifier","src":"4215:6:31"}],"id":185,"name":"Return","src":"4208:13:31"}],"id":186,"name":"Block","src":"4025:203:31"}],"id":187,"name":"FunctionDefinition","src":"3954:274:31"},{"attributes":{"documentation":"@notice returns the number of pre-cached wallets","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cachedWalletsCount","scope":197,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":188,"name":"ParameterList","src":"4318:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":196,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":189,"name":"ElementaryTypeName","src":"4344:7:31"}],"id":190,"name":"VariableDeclaration","src":"4344:7:31"}],"id":191,"name":"ParameterList","src":"4343:9:31"},{"children":[{"attributes":{"functionReturnParameters":191},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":39,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":192,"name":"Identifier","src":"4370:13:31"}],"id":193,"name":"MemberAccess","src":"4370:20:31"}],"id":194,"name":"Return","src":"4363:27:31"}],"id":195,"name":"Block","src":"4353:44:31"}],"id":196,"name":"FunctionDefinition","src":"4291:106:31"}],"id":197,"name":"ContractDefinition","src":"1150:3249:31"}],"id":198,"name":"SourceUnit","src":"781:3619:31"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/build/walletDeployer/Controller.bin b/build/walletDeployer/Controller.bin index a69c0549..264e63ba 100644 --- a/build/walletDeployer/Controller.bin +++ b/build/walletDeployer/Controller.bin @@ -1 +1 @@ -608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032 \ No newline at end of file +608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032 \ No newline at end of file diff --git a/build/walletDeployer/DailyLimitTrait.bin b/build/walletDeployer/DailyLimitTrait.bin index b38ae5c8..d7eed637 100644 --- a/build/walletDeployer/DailyLimitTrait.bin +++ b/build/walletDeployer/DailyLimitTrait.bin @@ -1 +1 @@ -60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032 \ No newline at end of file +60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032 \ No newline at end of file diff --git a/build/walletDeployer/Licence.bin b/build/walletDeployer/Licence.bin index 20bb2284..464341a7 100644 --- a/build/walletDeployer/Licence.bin +++ b/build/walletDeployer/Licence.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032 \ No newline at end of file diff --git a/build/walletDeployer/TokenWhitelist.bin b/build/walletDeployer/TokenWhitelist.bin index 60f52176..5a283843 100644 --- a/build/walletDeployer/TokenWhitelist.bin +++ b/build/walletDeployer/TokenWhitelist.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032 \ No newline at end of file diff --git a/build/walletDeployer/Wallet.bin b/build/walletDeployer/Wallet.bin index f12dd9cc..550210e0 100644 --- a/build/walletDeployer/Wallet.bin +++ b/build/walletDeployer/Wallet.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032 \ No newline at end of file diff --git a/build/walletDeployer/WalletCache.bin b/build/walletDeployer/WalletCache.bin index ffe2e2a7..cd0fa441 100644 --- a/build/walletDeployer/WalletCache.bin +++ b/build/walletDeployer/WalletCache.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032a265627a7a723158200d133a1b20c5b8d7f88583b755e0cdb58d87241a8e32f00dc43a433c17cfbfdf64736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032a265627a7a723158205d913b62084d26757d50822529c7c40b09c9ceaa3ed83439bb340ec274648b3964736f6c63430005110032 \ No newline at end of file diff --git a/build/walletDeployer/WalletDeployer.bin b/build/walletDeployer/WalletDeployer.bin index 375c8db2..aeac598b 100644 --- a/build/walletDeployer/WalletDeployer.bin +++ b/build/walletDeployer/WalletDeployer.bin @@ -1 +1 @@ -60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860025534801561005857600080fd5b50604051610b1c380380610b1c8339818101604052606081101561007b57600080fd5b5080516020820151604090920151600080546001600160a01b0319166001600160a01b0384161790559091908180156100b45760018190555b5080156100c15760028190555b505050610a49806100d36000396000f3fe6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6000546001600160a01b031690565b6003602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526003602052604090205416156102ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260036020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60025481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526003602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60015490565b60006108aa600154610931565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b505192915050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d60208110156109a857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ff57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a265627a7a7231582079dd557bde042f7365d5316e29e11004155bdb26459e97c0247a767ac518706b64736f6c63430005110032 \ No newline at end of file +60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860025534801561005857600080fd5b50604051610b1c380380610b1c8339818101604052606081101561007b57600080fd5b5080516020820151604090920151600080546001600160a01b0319166001600160a01b0384161790559091908180156100b45760018190555b5080156100c15760028190555b505050610a49806100d36000396000f3fe6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6000546001600160a01b031690565b6003602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526003602052604090205416156102ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260036020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60025481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526003602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60015490565b60006108aa600154610931565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b505192915050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d60208110156109a857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ff57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a265627a7a72315820e469fb5040338ccc44e2f84516449ba367eeaa90a44c8eee9ce7e255534aa15164736f6c63430005110032 \ No newline at end of file diff --git a/build/walletDeployer/combined.json b/build/walletDeployer/combined.json index 5762aa02..674199ab 100644 --- a/build/walletDeployer/combined.json +++ b/build/walletDeployer/combined.json @@ -1 +1 @@ -{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032","srcmap":"1460:5748:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5748;;;;;;","srcmap-runtime":"1460:5748:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5748:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6662:108;;;:::i;:::-;;4019:99;;;:::i;:::-;;;;;;;;;;;;;;;;3171:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3171:97:0;-1:-1:-1;;;;;3171:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4222:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4222:117:0;-1:-1:-1;;;;;4222:117:0;;:::i;3320:89::-;;;:::i;4724:80::-;;;:::i;2940:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2940:102:0;-1:-1:-1;;;;;2940:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7011:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7011:195:0;;;;;;;;;;;;;;;;;:::i;3547:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3547:119:0;-1:-1:-1;;;;;3547:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4451:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4451:127:0;-1:-1:-1;;;;;4451:127:0;;:::i;6819:103::-;;;:::i;3810:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3810:114:0;-1:-1:-1;;;;;3810:114:0;;:::i;6662:108::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;6714:8;:15;;-1:-1:-1;;6714:15:0;6725:4;6714:15;;;6744:19;;;6752:10;6744:19;;;;;;;;;;;;;6662:108::o;4019:99::-;4095:16;;4019:99;:::o;3171:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3239:22:0;3252:8;3239:12;:22::i;:::-;3171:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4222:117:0:-;4291:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4314:18:0;;;;;:8;:18;;;;;;;;;4222:117::o;3320:89::-;3391:11;;3320:89;:::o;4724:80::-;4789:8;;;;4724:80;:::o;2940:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2762:11:0;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3016:19;3026:8;3016:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7011:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:55;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;-1:-1:-1;;;2414:55:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;7120:35;7134:3;7139:6;7147:7;7120:13;:35::i;:::-;7170:29;;;-1:-1:-1;;;;;7170:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7011:195;;;:::o;3547:119::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;3635:24;3650:8;3635:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4451:127:0:-;4525:4;2762:11;:9;:11::i;:::-;2761:12;2753:46;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;-1:-1:-1;;;2753:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4548:23:0;;;;;:13;:23;;;;;;;;;4451:127::o;6819:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6865:8:0;:16;;-1:-1:-1;;6865:16:0;;;6896:19;;;6904:10;6896:19;;;;;;;;;;;;;6819:103::o;3810:114::-;2579:20;2588:10;2579:8;:20::i;:::-;:44;;;-1:-1:-1;2612:10:0;2603:20;;;;:8;:20;;;;;;;;2579:44;2571:79;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;-1:-1:-1;;;2571:79:0;;;;;;;;;;;;;;;3890:27;3908:8;3890:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5431:236:0:-;-1:-1:-1;;;;;5497:18:0;;;;;;:8;:18;;;;;;;;5489:63;;;;;-1:-1:-1;;;5489:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5562:18:0;;5583:5;5562:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5562:26:0;;;5598:11;:13;;-1:-1:-1;;5598:13:0;;;5626:34;;5639:10;5626:34;;;;;;;;;;;;;;;;;;;;;5431:236;:::o;4872:482::-;-1:-1:-1;;;;;4936:18:0;;;;;;:8;:18;;;;;;;;4935:19;4927:68;;;;-1:-1:-1;;;4927:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5014:23:0;;;;;;:13;:23;;;;;;;;5013:24;5005:77;;;;-1:-1:-1;;;5005:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:18;5110:8;5101;:18::i;:::-;5100:19;5092:69;;;;-1:-1:-1;;;5092:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5179:22:0;;5171:71;;;;-1:-1:-1;;;5171:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5252:18:0;;;;;;5273:4;5252:18;;;;;;;;;:25;;-1:-1:-1;;5252:25:0;;;;;5287:11;:13;;;;;;;;5315:32;;5326:10;5315:32;;;;;;;;;;;;;;;;;;;;;4872:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5740:502:0:-;-1:-1:-1;;;;;5809:18:0;;;;;;:8;:18;;;;;;;;5808:19;5800:68;;;;-1:-1:-1;;;5800:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5887:23:0;;;;;;:13;:23;;;;;;;;5886:24;5878:77;;;;-1:-1:-1;;;5878:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5974:18;5983:8;5974;:18::i;:::-;5973:19;5965:69;;;;-1:-1:-1;;;5965:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6052:22:0;;6044:71;;;;-1:-1:-1;;;6044:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6125:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6125:30:0;6151:4;6125:30;;;;;;6165:16;:18;;;;;;;6198:37;;6214:10;6198:37;;;;;;;;;;;;;;;;;;;;;5740:502;:::o;6324:265::-;-1:-1:-1;;;;;6395:23:0;;;;;;:13;:23;;;;;;;;6387:72;;;;-1:-1:-1;;;6387:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6469:23:0;;6495:5;6469:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6469:31:0;;;6510:16;:18;;-1:-1:-1;;6510:18:0;;;6543:39;;6561:10;6543:39;;;;;;;;;;;;;;;;;;;;;6324:265;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ECDSA.sol:ECDSA":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","srcmap":"1392:3417:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1392:3417:2:-;;;;;;;;"},"externals/ERC165.sol:ERC165":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:5:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:6:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:8:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:9:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:9;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:9;-1:-1:-1;;;;;2567:10:9;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:9;;;;;;","srcmap-runtime":"1897:2174:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:15;;;;;;;;;:::i;:::-;;573:184:19;;;;;;;;;:::i;1721:953:16:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:12;;;;;;;;;:::i;:::-;;;;;;;;;612:169:18;;;;;;;;;:::i;505:166:14:-;;;;;;;;;:::i;980:228:13:-;;;;;;;;;:::i;3269:231:9:-;;;;;;;;;:::i;4901:153:15:-;;;;;;;;;:::i;974:127:19:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:15;;;;;;;;;:::i;582:292:12:-;;;;;;;;;:::i;844:101:17:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:13:-;;;;;;;;;:::i;4519:168:15:-;;;;;;;;;:::i;3703:366:9:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:15;;;;;;;;;:::i;838:108:14:-;;;;;;;;;:::i;1023:133:18:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:15;;;;;;;;;:::i;681:140:13:-;;;;;;;;;:::i;858:226:16:-;;;;;;;;;:::i;1514:127:13:-;;;;;;;;;:::i;2320:80:9:-;;;;;;;;;:::i;1107:169:19:-;1174:4;-1:-1:-1;;;;;;1197:32:19;;-1:-1:-1;;;1197:32:19;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:15:-;2932:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:15;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:15;;:18;-1:-1:-1;;3185:18:15;:15;:18;;-1:-1:-1;3185:18:15:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:15;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:15;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:15;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:15;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:15;;4052:6;;-1:-1:-1;4060:20:15;;;;-1:-1:-1;4082:17:15;4012:11;:88::i;:::-;400:1:11;;;;;2854:1263:15;;;;:::o;573:184:19:-;668:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:19;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:16:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:16;;;;;;;;;;-1:-1:-1;;;;;1849:29:16;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:16;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:16;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:16;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:16;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:16;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:16;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:16;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:16;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:16;;-1:-1:-1;2373:103:16;-1:-1:-1;2489:8:16;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:16;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:16;;-1:-1:-1;;;1721:953:16;;;;;:::o;1195:454:12:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:12;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:12;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:12;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:12;-1:-1:-1;1195:454:12;;;;;;:::o;612:169:18:-;687:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:18;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:18;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:14:-;584:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:14;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:13;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:13:o;3269:231:9:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:9;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:9;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:15:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:19:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:19;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:15:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:12:-;674:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:12;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:12;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:17:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:17;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:13;1302:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:13;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:15:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:9;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:9;-1:-1:-1;3844:6:9;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:9;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:9;;3840:199;;;-1:-1:-1;3703:366:9;;;;:::o;5193:128:15:-;5247:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:15;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:14:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:14;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:18;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:15:-;5617:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:15;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:15;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:15;;:16;-1:-1:-1;5701:4:15;;-1:-1:-1;5701:4:15;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:11;5541:225:15;;;;:::o;681:140:13:-;743:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:13;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:16:-;955:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:16;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:16;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:16;-1:-1:-1;;;;;971:43:16;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:13:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:13;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:18:-;1229:4;-1:-1:-1;;;;;;1252:34:18;;-1:-1:-1;;;1252:34:18;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:9:-;3596:3;;:15;;-1:-1:-1;;;3596:15:9;;3564:4;;;;-1:-1:-1;;;;;3596:3:9;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:9;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:9;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:9;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:9;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:10:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:8:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:15:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:15;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:15;;;;;;-1:-1:-1;;6760:43:15;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:15;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:15;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:10:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:10;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:10;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:10;;:::o;414:204:11:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:11;576:10;570:17;-1:-1:-1;;;566:36:11;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:11;87:34:-1;-1:-1;;;;;;776:20:11;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:11;743:64::o;951:169:17:-;1018:4;-1:-1:-1;;;;;;1041:32:17;;-1:-1:-1;;;1041:32:17;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:10:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:10;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:10:o;8685:393:8:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:8;87:34:-1;135:17;;-1:-1;8858:14:8;-1:-1:-1;8839:33:8;-1:-1:-1;8960:2:8;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:8;;8685:393;-1:-1:-1;;;;;8685:393:8:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:8:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:8;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:8;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:16:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:16;;:11;-1:-1:-1;;;;;2770:37:16;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:8:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:8;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:8;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:8;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:8;;513:2;499:26;489:42;;468:73::o;6035:245:15:-;6102:4;-1:-1:-1;;;;;;6125:38:15;;-1:-1:-1;;;6125:38:15;;:93;;-1:-1:-1;;;;;;;6182:36:15;;-1:-1:-1;;;6182:36:15;6125:93;:148;;;;6237:36;6261:11;1019:4:14;-1:-1:-1;;;;;;1042:40:14;;-1:-1:-1;;;1042:40:14;;:80;;;1086:36;1110:11;1714:4:13;-1:-1:-1;;;;;;1737:32:13;;-1:-1:-1;;;1737:32:13;;:71;;-1:-1:-1;;;;;;;1773:35:13;;-1:-1:-1;;;1773:35:13;1737:71;:111;;;;1812:36;1836:11;1722:4:12;-1:-1:-1;;;;;;1745:31:12;;-1:-1:-1;;;1745:31:12;;:71;;-1:-1:-1;;;;;;;;;;204:32:11;;;1780:36:12;114:129:11:o;1897:2174:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:9;;;-1:-1:-1;1897:2174:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:10:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:10:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:21;;;;;;;","srcmap-runtime":"898:556:21:-;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032","srcmap":"1381:8954:28:-;;;1122:66:23;1272:58;;2313:80:28;;;-1:-1:-1;;;;;;2313:80:28;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:28;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3616:558:28;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:28;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:28;;;-1:-1:-1;;;;;;4012:22:28;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:28;-1:-1:-1;;;;;4123:34:28;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:28;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:28;-1:-1:-1;;;;;7354:228:28;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:28;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:28;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:28;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:28;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:28;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:28;-1:-1:-1;;;;;6678:219:28;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:28;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:28;;:::i;1364:91:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;10221:112:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:28;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:28;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:28;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:28;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:28;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:28;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:28;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:28;-1:-1:-1;;;;;6338:204:28;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:28;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;10054:96:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:28;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:28;-1:-1:-1;;;;;7027:196:28;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:28;;;:::i;6106:102::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6169:25:28;:32;;-1:-1:-1;;;;6169:32:28;-1:-1:-1;;;6169:32:28;;;6106:102::o;7354:228::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7443:26:28;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:28;;-1:-1:-1;;;;;;7497:29:28;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:28;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:28;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:28;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:28;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:28;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:28;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:28;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:28;;:33;;-1:-1:-1;;;;;9116:12:28;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:28;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:28;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:28;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:28;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:28;4950:91;:::o;6678:219::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6766:14:28;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:28;;-1:-1:-1;;;;;;6820:25:28;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5977:17:28;:24;;-1:-1:-1;;;;5977:24:28;-1:-1:-1;;;5977:24:28;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:28;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;10221:112:28:-;10301:25;;-1:-1:-1;;;10301:25:28;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:28;;;;;9711:92::o;9448:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;9546:35:28;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:28;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:28;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5603:18:28;:25;;-1:-1:-1;;;;5603:25:28;-1:-1:-1;;;5603:25:28;;;5553:82::o;6338:204::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6424:13:28;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:28;;-1:-1:-1;;;;;;6467:24:28;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5792:18:28;:25;;-1:-1:-1;;;;5792:25:28;-1:-1:-1;;;5792:25:28;;;5741:83::o;2169:95:23:-;2242:15;;2169:95;:::o;10054:96:28:-;10126:17;;-1:-1:-1;;;10126:17:28;;;;;10054:96::o;7027:196::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7108:18:28;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:28;;-1:-1:-1;;;;;;7154:21:28;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:28;;;;;9882:93::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;1982:201:5:-;2107:68;;;-1:-1:-1;;;;;2107:68:5;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:5;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:6;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:5;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032","srcmap":"1939:14907:29:-;;;1122:66:23;1272:58;;4758:506:29;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:29;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:29;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:29;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:29;:26;;;;-1:-1:-1;4995:11:29;:33;;-1:-1:-1;;;;;4995:33:29;;;-1:-1:-1;;;;;;4995:33:29;;;;;;;;;-1:-1:-1;5083:18:29;:28;;;:35;;-1:-1:-1;;5083:35:29;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:29;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:29;-1:-1:-1;;;;;;16070:136:29;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:29;-1:-1:-1;;;;;13314:334:29;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;-1:-1:-1;6040:1806:29;-1:-1:-1;6040:1806:29;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:29;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:29;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:29;;-1:-1:-1;;;;;15695:220:29;;;;;-1:-1:-1;;;;;;15695:220:29;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:29;;-1:-1:-1;7973:1237:29;-1:-1:-1;7973:1237:29;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:29;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:29;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:29;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:29;;-1:-1:-1;9368:1399:29;-1:-1:-1;9368:1399:29;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:29;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:29:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:29;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:29;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:29;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:29;;;:88;;;;-1:-1:-1;6442:35:29;;;6389:88;:142;;;;-1:-1:-1;6497:34:29;;;6389:142;:196;;;;-1:-1:-1;6551:34:29;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:29;6841:25;;-1:-1:-1;6841:25:29;;;;;;;;-1:-1:-1;6841:25:29;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:29;-1:-1:-1;;;;;7084:25:29;-1:-1:-1;;;;;7084:25:29;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:29;;;;;-1:-1:-1;;7084:306:29;;;-1:-1:-1;;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:29;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:29;-1:-1:-1;;;;;7486:10:29;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:29;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:29;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:29;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:29;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:29;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:29;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:29;-1:-1:-1;15069:72:29;-1:-1:-1;15151:23:29;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:29;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:29;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:29;;;-1:-1:-1;;;;;15364:44:29;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:29;;15188:283;;;-1:-1:-1;15487:19:29;;-1:-1:-1;;14990:523:29;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:29;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:29;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:29;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:29;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:29;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:29:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:29;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:29;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:29;;8363:65;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:29;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:29;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:29;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:29;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:29;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:29;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:29;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:29;;;;;-1:-1:-1;;;;;8926:76:29;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:29;:27;;;;;-1:-1:-1;;9075:27:29;;;:::i;:::-;-1:-1:-1;9162:31:29;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:29;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:29:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:29;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:29;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:29;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:29;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:29;;:23;-1:-1:-1;;9801:23:29;:20;:23;;-1:-1:-1;9801:23:29:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:29;;-1:-1:-1;;;10048:18:29;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:29;;:24;-1:-1:-1;;10141:24:29;:21;:24;;-1:-1:-1;10141:24:29:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:29;;-1:-1:-1;;;10187:27:29;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:29;;:34;-1:-1:-1;;10400:34:29;:21;:34;;-1:-1:-1;10400:34:29:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:29;;:34;-1:-1:-1;;10436:34:29;:21;:34;;-1:-1:-1;10436:34:29:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:29;;:29;-1:-1:-1;;10689:29:29;:21;:29;;-1:-1:-1;10689:29:29:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:29;;:29;-1:-1:-1;;10720:29:29;:21;:29;;-1:-1:-1;10720:29:29:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:29;-1:-1:-1;;;;;5399:27:29;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:29;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:29;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:29:-;16622:11;;-1:-1:-1;;;;;16622:11:29;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:29;;;-1:-1:-1;1939:14907:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"wallet.sol:AddressWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:ControllableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:DailyLimitTrait":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a229c861164ccdbd4a360df4a57562aff9d6f517116093d7ee6b11f7278e02b164736f6c63430005110032","srcmap":"11411:3455:30:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"11411:3455:30:-;;;;;;;;"},"wallet.sol:GasTopUpLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:LoadLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SelfCallableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SpendLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:Wallet":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032","bin-runtime":"60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032","srcmap":"22209:17557:30:-;;;1122:66:23;1272:58;;24474:430:30;5:2:-1;;;;30:1;27;20:12;5:2;24474:430:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24474:430:30;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;24474:430:30;;;;;;;;;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1543:6:25;:18;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;-1:-1:-1;;;1571:32:25;;;;;;;;;;;;;-1:-1:-1;1687:15:25;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17616:93:30;;;;;;;;17296:10;17616:93;;;;;;;;;17695:3;17616:93;;;;;;-1:-1:-1;17616:93:30;;;;;;;;;;;;;17599:14;:110;;;;;;;;;;;;;;;;;-1:-1:-1;;17599:110:30;;;1341:19:26;:42;;;;20179:20:30;:18;:20::i;:::-;20135:64;;;;;;;;20239:1;20217:19;:23;20209:49;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;;;;19863:5;20288:52;20268:17;:72;;;20363:79;;;;;;;;;;;;;;;;;;;20428:3;20363:79;;;;;;-1:-1:-1;20363:79:30;;;;;;;;;;;;;;20350:10;:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20350:92:30;;;;;;15352:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:11;:73;;;;;;;;;;;;;;;-1:-1:-1;15338:73:30;;;;;;;;-1:-1:-1;24869:12:30;:28;-1:-1:-1;22209:17557:30;;-1:-1:-1;;;;22209:17557:30;2887:206:26;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;;;:32;;:::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;-1:-1:-1;;1731:33:24;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;22209:17557:30:-;;;;;;;","srcmap-runtime":"22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25196:31;;;25205:10;25196:31;;25217:9;25196:31;;;;;;;;;;;;;;;;;22209:17557;30101:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30101:137:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30101:137:30;-1:-1:-1;;;;;;30101:137:30;;:::i;:::-;;;;;;;;;;;;;;;;;;16199:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16199:104:30;;;:::i;:::-;;;;;;;;;;;;;;;;18820:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18820:286:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:286:30;;:::i;:::-;;3896:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:677:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3896:677:30;;:::i;23125:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23125:47:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23125:47:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38146:244:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38146:244:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38146:244:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38146:244:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38146:244:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38146:244:30;;-1:-1:-1;38146:244:30;;-1:-1:-1;;;;;38146:244:30:i;:::-;;;;-1:-1:-1;;;;;;38146:244:30;;;;;;;;;;;;;;;25576:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25576:565:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25576:565:30;;-1:-1:-1;;;;;25576:565:30;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25576:565:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25576:565:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25576:565:30;;-1:-1:-1;25576:565:30;-1:-1:-1;25576:565:30;:::i;21466:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21466:117:30;;;:::i;28299:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28299:344:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28299:344:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28299:344:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28299:344:30;;-1:-1:-1;28299:344:30;-1:-1:-1;28299:344:30;:::i;3173:94:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3173:94:25;;;:::i;16806:179:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16806:179:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16806:179:30;;:::i;18606:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18606:106:30;;;:::i;3082:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3082:38:30;;;:::i;8300:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8300:124:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8300:124:30;;;;;;;;;;;;;;;;;2898:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2898:44:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2898:44:30;-1:-1:-1;;;;;2898:44:30;;:::i;29093:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29093:943:30;;-1:-1:-1;;;;;29093:943:30;;;;;;:::i;20579:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20579:233:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20579:233:30;;:::i;15817:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15817:161:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15817:161:30;;:::i;35929:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35929:1934:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;35929:1934:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;35929:1934:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35929:1934:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35929:1934:30;;-1:-1:-1;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30:i;26493:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26493:1111:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26493:1111:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26493:1111:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26493:1111:30;;-1:-1:-1;26493:1111:30;-1:-1:-1;26493:1111:30;:::i;8121:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8121:126:30;;;:::i;5523:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5523:1117:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5523:1117:30;;:::i;16023:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16023:119:30;;;:::i;10340:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10340:673:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10340:673:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10340:673:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10340:673:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10340:673:30;;-1:-1:-1;10340:673:30;-1:-1:-1;10340:673:30;:::i;3543:306:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:306:25;;;:::i;19233:304:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19233:304:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19233:304:30;;:::i;28706:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:91:30;;;:::i;1364::24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;18028:125:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:125:30;;;:::i;9505:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9505:711:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9505:711:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9505:711:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9505:711:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9505:711:30;;-1:-1:-1;9505:711:30;-1:-1:-1;9505:711:30;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;3932:85:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:85:25;;;:::i;27713:87:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27713:87:30;;;:::i;16562:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16562:100:30;;;:::i;31175:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31175:2016:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31175:2016:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31175:2016:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31175:2016:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31175:2016:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31175:2016:30;;-1:-1:-1;31175:2016:30;;-1:-1:-1;;;;;31175:2016:30:i;21796:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:145:30;;;:::i;20927:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20927:251:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20927:251:30;;:::i;2247:809:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2247:809:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2247:809:25;;-1:-1:-1;;;;;2247:809:25;;;;;;;;:::i;33378:550:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33378:550:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33378:550:30;;-1:-1:-1;;;;;33378:550:30;;;;;;:::i;16359:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16359:147:30;;;:::i;3169:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:26:30;;;:::i;38667:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38667:1097:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38667:1097:30;;;;;;;;;;;;;;;;;:::i;21639:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21639:102:30;;;:::i;6709:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6709:1358:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6709:1358:30;;:::i;18215:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:110:30;;;:::i;23739:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23739:25:30;;;:::i;11082:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11082:145:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11082:145:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11082:145:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11082:145:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:145:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11082:145:30;;-1:-1:-1;11082:145:30;;-1:-1:-1;;;;;11082:145:30:i;4641:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:659:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4641:659:30;;:::i;2948:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:31:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2948:31:30;;:::i;22008:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:98:30;;;:::i;3126:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3126:37:30;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;30418:425:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30418:425:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30418:425:30;;:::i;15480:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:180:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15480:180:30;;:::i;34129:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34129:1540:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34129:1540:30;;-1:-1:-1;;;;;34129:1540:30;;;;;;:::i;21239:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21239:177:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21239:177:30;;:::i;17783:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17783:189:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17783:189:30;;:::i;8555:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:827:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8555:827:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8555:827:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8555:827:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8555:827:30;;-1:-1:-1;8555:827:30;-1:-1:-1;8555:827:30;:::i;18386:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18386:153:30;;;:::i;30101:137::-;-1:-1:-1;;;;;;;;;30195:36:30;;;30101:137;;;;:::o;16199:104::-;16277:19;;16199:104;;:::o;18820:286::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;18934:7;17364:8;18906:35;;:74;;;;;17296:10;18945:7;:35;;18906:74;18898:106;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;;;;19014:33;:14;19039:7;19014:33;:24;:33;:::i;:::-;19062:37;;;19079:10;19062:37;;;;;;;;;;;;;;;;;;;;;18820:286;:::o;3896:677::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4043:26;;;;4035:60;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;;;;4217:40;4231:25;4217:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4217:40:30;;;-1:-1:-1;4217:40:30;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4208:5;:49;4200:97;;;;-1:-1:-1;;;4200:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:32;4350:25;;4343:32;:::i;:::-;4432:26;:34;;-1:-1:-1;;4432:34:30;;;4521:45;;;4548:10;4521:45;;;;;;;;;;;;;;;;;;;;;3896:677;:::o;23125:47::-;;;;;;;;;;;;;-1:-1:-1;;;23125:47:30;;;;;:::o;38146:244::-;38239:6;;38272:31;:11;38292:10;38272:31;:19;:31;:::i;:::-;38257:46;;38321:14;38330:4;38321:8;:14::i;:::-;38313:44;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38146:244:30;;;;;:::o;25576:565::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;25745:19;25737:52;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;;;;25866:9;25861:229;25881:18;;;25861:229;;;25920:14;25937:35;25954:4;25961:7;;25969:1;25961:10;;;;;;;;;;;;;-1:-1:-1;;;;;25961:10:30;25937:8;:35::i;:::-;25920:52;;26046:33;26055:3;26060:7;;26068:1;26060:10;;;;;;;;;;;;;-1:-1:-1;;;;;26060:10:30;26072:6;26046:8;:33::i;:::-;-1:-1:-1;25901:3:30;;25861:229;;;-1:-1:-1;26105:29:30;;;-1:-1:-1;;;;;26105:29:30;;;;;;;;;;;;;;;;;;;26121:3;;26126:7;;;;26105:29;;;;;26126:7;;26105:29;;;26126:7;26105:29;1:33:-1;99:1;81:16;;;74:27;26105:29:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26105:29:30;;;;-1:-1:-1;26105:29:30;;-1:-1:-1;;;;;26105:29:30;25576:565;;;:::o;21466:117::-;21519:7;21545:31;:10;:29;:31::i;:::-;21538:38;;21466:117;:::o;28299:344::-;28397:6;28415:16;28461:5;;28444:23;;;;;;;30:3:-1;22:6;14;1:33;28444:23:30;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28444:23:30;;;28434:34;;49:4:-1;28434:34:30;;;;-1:-1:-1;28541:38:30;;;;;;;;;;;;;;;;;28434:34;;-1:-1:-1;;;;;;28541:38:30;;-1:-1:-1;28434:34:30;;-1:-1:-1;28568:10:30;;-1:-1:-1;28541:38:30;;;;;;28568:10;28541:38;;28568:10;28541:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28541:16:30;;-1:-1:-1;;;28541:38:30:i;:::-;-1:-1:-1;;;;;;28541:51:30;;28533:77;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;28627:9:30;-1:-1:-1;;;;;28299:344:30:o;3173:94:25:-;3245:15;;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;16806:179:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;16890:39;:11;16921:7;16890:39;:30;:39;:::i;:::-;16944:34;;;;;;;;;;;;;;;;;16806:179;:::o;18606:106::-;18685:14;:20;18606:106;:::o;3082:38::-;;;;;;:::o;8300:124::-;8358:16;8393:24;8386:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8386:31:30;;;-1:-1:-1;8386:31:30;;;;;;;;;;;;;;;;;;;8300:124;:::o;2898:44::-;;;;;;;;;;;;;;;:::o;29093:943::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;29269:24;29286:6;29269:16;:24::i;:::-;29261:55;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;;;;29379:23;29405:36;29425:6;29433:7;29405:19;:36::i;:::-;29379:62;-1:-1:-1;29571:41:30;:10;29379:62;29571:41;:24;:41;:::i;:::-;29669:22;29694:25;29706:12;;29694:11;:25::i;:::-;29669:50;-1:-1:-1;;;;;;29733:20:30;;;29729:253;;29769:50;-1:-1:-1;;;;;29769:25:30;;29795:14;29811:7;29769:25;:50::i;:::-;29833:46;;;-1:-1:-1;;;29833:46:30;;-1:-1:-1;;;;;29833:46:30;;;;;;;;;;;;;;;:29;;;;;;:46;;;;;-1:-1:-1;;29833:46:30;;;;;;;;-1:-1:-1;29833:29:30;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;29833:46:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29833:46:30;;;;29729:253;;;29910:61;;;-1:-1:-1;;;29910:61:30;;-1:-1:-1;;;;;29910:61:30;;;;;;;;;;;;;;;:29;;;;;;29946:7;;29910:61;;;;;-1:-1:-1;;29910:61:30;;;;;;;29946:7;29910:29;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;29910:61:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29910:61:30;;;;;29729:253;29997:32;;;-1:-1:-1;;;;;29997:32:30;;;;;;;;;;;;;;;;;;;;;;;2129:1;;29093:943;;:::o;20579:233::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;20672:17;;20661:7;:28;;20653:65;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;;;;20728:29;:10;20749:7;20728:29;:20;:29;:::i;:::-;20772:33;;;20785:10;20772:33;;;;;;;;;;;;;;;;;;;;;20579:233;:::o;15817:161::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;15892:30;:11;15914:7;15892:30;:21;:30;:::i;:::-;15937:34;;;15951:10;15937:34;;;;;;;;;;;;;;;;;;;;;15817:161;:::o;35929:1934::-;36047:12;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;36266:26:30;;;;;;:12;:26;;;;;;;;36261:91;;36308:33;:11;36334:6;36308:33;:25;:33;:::i;:::-;36453:34;-1:-1:-1;;;;;36453:32:30;;;:34::i;:::-;:69;;;;;36491:31;36509:12;36491:17;:31::i;:::-;36449:1098;;;36625:10;36649:14;36692:48;36720:12;36734:5;36692:27;:48::i;:::-;-1:-1:-1;;;;;36759:16:30;;;;;;:12;:16;;;;;;;;-1:-1:-1;36677:63:30;-1:-1:-1;36759:16:30;;36754:335;;36962:18;36983:36;36998:12;37012:6;36983:14;:36::i;:::-;36962:57;-1:-1:-1;37037:37:30;:11;36962:57;37037:37;:25;:37;:::i;:::-;36754:335;;37238:45;-1:-1:-1;;;;;37238:38:30;;37277:5;37238:38;:45::i;:::-;37404:13;;;37414:2;37404:13;;;;;;;;;37387:14;;37404:13;;;21:6:-1;;104:10;37404:13:30;87:34:-1;135:17;;-1:-1;37404:13:30;37387:30;;37439:4;37431:12;;:1;37433:2;37431:5;;;;;;;;-1:-1:-1;;;;;;37431:12:30;;;;;;;;;:5;;;:12;-1:-1:-1;37463:51:30;;;-1:-1:-1;;;;;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37483:12;;37497:6;;37505:5;;37512:1;;37463:51;;;;;-1:-1:-1;37463:51:30;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37463:51:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37535:1;-1:-1:-1;37528:8:30;;-1:-1:-1;;37528:8:30;36449:1098;37558:12;37572:23;37599:12;-1:-1:-1;;;;;37599:17:30;37623:6;37631:5;37599:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37599:38:30;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37557:80:30;;;;37655:7;37671:10;37647:36;;;;;-1:-1:-1;;;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;-1:-1:-1;;;;;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37719:12;;37733:6;;37741:5;;37748:10;;37699:60;;;;;-1:-1:-1;37699:60:30;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37846:10;-1:-1:-1;;2129:1:30;35929:1934;;;;;:::o;26493:1111::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;26954:63:30;;-1:-1:-1;;;26954:63:30;;;;;;26846:9;26954:63;;;;;;26996:4;26954:63;;;;;;;;;;;;;;26846:9;;26797:10;;26944:99;;26846:9;;26996:4;;27003:6;;27011:5;;;;26954:63;;27011:5;;;;26954:63;1:33:-1;57:3;49:6;45:16;35:26;;26954:63:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26954:63:30;;;26944:74;;;;;;:97;:99::i;:::-;27119:38;;;;;;;;;;;;;;;;;;;;;;26925:118;;-1:-1:-1;;;;27161:9:30;27119:38;;26925:118;;27119:38;27146:10;;;;;;27119:38;;27146:10;;;;27119:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;27119:16:30;;-1:-1:-1;;;27119:38:30:i;:::-;-1:-1:-1;;;;;;27119:51:30;;27111:77;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;;;;27301:10;;27291:6;:20;27283:42;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;;;;27335:21;:19;:21::i;:::-;27465:25;;27424:12;;27438:23;;27473:4;;27484:5;;;;27465:25;27484:5;;;;27465:25;1:33:-1;27465:25:30;;45:16:-1;;;-1:-1;27465:25:30;;-1:-1:-1;27465:25:30;;-1:-1:-1;;27465:25:30;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27423:67:30;;;;27508:7;27524:10;27500:36;;;;;-1:-1:-1;;;27500:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27:10;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27500:36:30;;27552:45;27579:5;;27586:10;27552:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27552:45:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27552:45:30;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27552:45:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:1:23;;;;26493:1111:30;;;;;:::o;8121:126::-;8180:16;8215:25;8208:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8208:32:30;;;;;;;;;-1:-1:-1;8208:32:30;;;;;;;;;;;;;;;;;8121:126;:::o;5523:1117::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;5681:26:30;;;;5673:60;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;;;;5855:40;5869:25;5855:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5855:40:30;;;;;;;;;-1:-1:-1;5855:40:30;;;;;;;;;;;;;;;:13;:40::i;:::-;5846:5;:49;5838:97;;;;-1:-1:-1;;;5838:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:9;5985:383;6009:25;:32;6005:36;;5985:383;;;6117:12;:42;6130:25;6156:1;6130:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6130:28:30;6117:42;;;;;;;;;;;;;;;6112:246;;6272:4;6227:12;:42;6240:25;6266:1;6240:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6240:28:30;6227:42;;;;;;;;;;;;:49;;-1:-1:-1;;6227:49:30;;;;;;;;;;6314:25;:28;;6294:14;;6314:25;6340:1;;6314:28;;;;;;;;;;;;;;;;;;;27:10:-1;;6314:28:30;23:18:-1;;45:23;;6294:49:30;;;;;;;;;;-1:-1:-1;;;;;;6294:49:30;-1:-1:-1;;;;;6314:28:30;;;6294:49;;;;;;6112:246;6043:3;;5985:383;;;-1:-1:-1;6418:55:30;;;6435:10;6418:55;;;;;;;;;6447:25;6418:55;;;;;;;;;;6435:10;;6447:25;;6418:55;;;;;;;6447:25;;6418:55;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6418:55:30;;;-1:-1:-1;6418:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;6519:32;6526:25;;6519:32;:::i;:::-;-1:-1:-1;6599:26:30;:34;;-1:-1:-1;;6599:34:30;;;5523:1117::o;16023:119::-;16077:7;16103:32;:11;:30;:32::i;10340:673::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:14;;;;;;;10517:52;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;;;;10647:21;10639:49;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;;;;10766:37;:24;10793:10;;10766:37;:::i;:::-;-1:-1:-1;10857:25:30;:32;;-1:-1:-1;;10857:32:30;;;;;10980:25;;;;;;;;;;;;;;;;;;10942:64;;10968:10;;;;10980:25;;10968:10;;;;;;10980:25;;;10968:10;;10980:25;10968:10;10980:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10980:13:30;;-1:-1:-1;;;10980:25:30:i;:::-;10942:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10942:64:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10942:64:30;;;;-1:-1:-1;10942:64:30;;-1:-1:-1;;;;;10942:64:30;10340:673;;:::o;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:6;:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;-1:-1:-1;3802:40:25;;;;;;;;;;;;;;;;;;;;3543:306::o;19233:304:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;19356:7;17364:8;19328:35;;:74;;;;;17296:10;19367:7;:35;;19328:74;19320:106;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;;;;19436:42;:14;19470:7;19436:42;:33;:42;:::i;:::-;19493:37;;;;;;;;;;;;;;;;;19233:304;:::o;28706:91::-;28778:12;;28706:91;:::o;1364::24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;;1364:91::o;18028:125:30:-;18085:7;18111:35;:14;:33;:35::i;9505:711::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;;;;;;;;3437:8;:23::i;:::-;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3509:13;;3534:1;;3509:10;;3520:1;;3509:13;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;9727:14:30;;;;;;;9719:52;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;;;;9842:21;9834:49;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;;;;9966:38;:25;9994:10;;9966:38;:::i;:::-;-1:-1:-1;10058:26:30;:33;;-1:-1:-1;;10058:33:30;10087:4;10058:33;;;10183:25;;;;;;;;;;;;;;;;;;10144:65;;10171:10;;;;10183:25;;10171:10;;;;;;10183:25;;;10171:10;;10183:25;10171:10;10183:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10183:13:30;;-1:-1:-1;;;10183:25:30:i;:::-;10144:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10144:65:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10144:65:30;;;;-1:-1:-1;10144:65:30;;-1:-1:-1;;;;;10144:65:30;3834:1;9505:711;;:::o;1514:105:26:-;1593:19;;1514:105;:::o;3932:85:25:-;4004:6;;-1:-1:-1;;;;;4004:6:25;;3932:85::o;27713:87:30:-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;27772:21:30;:19;:21::i;:::-;27713:87::o;16562:100::-;16638:11;:17;16562:100;:::o;31175:2016::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;31295:24;;31322:2;31295:29;;;;:24;31273:19;;;31723:17;31764:1421;31777:11;31771:3;:17;31764:1421;;;31937:28;:20;31962:2;31937:28;:24;:28;:::i;:::-;32151:27;;;32145:34;;32312:2;32280:36;;32274:43;32533:2;32501:36;;;32495:43;;31914:51;;-1:-1:-1;32141:2:30;32137:43;;;;;-1:-1:-1;32274:43:30;;-1:-1:-1;32495:43:30;;-1:-1:-1;32501:36:30;-1:-1:-1;32709:27:30;32733:2;32709:19;32174:3;32495:43;32709:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32703:33;;32856:11;32849:3;:18;;32841:44;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;;;;32956:15;32952:70;;-1:-1:-1;32998:9:30;;;;;;;;;-1:-1:-1;32998:9:30;;32952:70;33130:44;33149:11;33162:5;33169:4;33130:18;:44::i;:::-;;31764:1421;;;2129:1;;;;;;;31175:2016;:::o;21796:145::-;21893:41;;;;21796:145;:::o;20927:251::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;21029:17;;21018:7;:28;;21010:65;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;;;;21085:38;:10;21115:7;21085:38;:29;:38;:::i;:::-;21138:33;;;;;;;;;;;;;;;;;20927:251;:::o;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;33378:550:30:-;33456:7;33545:17;33564:12;33578:14;33602:21;33616:6;33602:13;:21::i;:::-;33542:81;;;;;;;;;;33703:9;33699:205;;;33736:9;33728:28;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;;;;33861:32;33883:9;33861:17;:7;33873:4;33861:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;33854:39;;;;;;;33699:205;-1:-1:-1;33920:1:30;;33378:550;-1:-1:-1;;;;;33378:550:30:o;16359:147::-;16457:42;;;;16359:147;:::o;3169:26::-;;;;;;;;;:::o;38667:1097::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;38772:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38860:17:30;;38852:43;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38984:17:30;;;;;;:12;:17;;;;;;;;38979:584;;39101:7;-1:-1:-1;;;;;39205:20:30;;;39201:103;;39258:31;39273:6;39281:7;39258:14;:31::i;:::-;39245:44;;39201:103;39515:37;:11;39541:10;39515:37;:25;:37;:::i;:::-;38979:584;;39638:35;39652:3;39657:6;39665:7;39638:13;:35::i;:::-;39724:33;;;-1:-1:-1;;;;;39724:33:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;38667:1097;;;:::o;21639:102::-;21716:18;;21639:102;:::o;6709:1358::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;6896:25:30;;;;;;;6888:59;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;;;;7068:39;7082:24;7068:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7068:39:30;;;;;;;;;-1:-1:-1;7068:39:30;;;;;;;;;;;;;;;:13;:39::i;:::-;7059:5;:48;7051:96;;;;-1:-1:-1;;;7051:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:9;7194:601;7218:24;:31;7214:35;;7194:601;;;7308:12;:41;7321:24;7346:1;7321:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7321:27:30;7308:41;;;;;;;;;;;;;;;7304:481;;;7413:5;7369:12;:41;7382:24;7407:1;7382:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7382:27:30;7369:41;;;;;;;;;;;;:49;;-1:-1:-1;;7369:49:30;;;;;;;;;;;7436:294;7460:14;:21;:28;;7486:1;7460:28;:25;:28;:::i;:::-;7456:1;:32;7436:294;;;7542:24;7567:1;7542:27;;;;;;;;;;;;;;;;;;7521:14;:17;;-1:-1:-1;;;;;7542:27:30;;;;7536:1;;7521:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:17:30;:48;7517:195;;;7617:14;7632:21;;-1:-1:-1;;7632:25:30;;;7617:41;;;;;;;;;;;;;;;;7597:14;:17;;-1:-1:-1;;;;;7617:41:30;;;;7612:1;;7597:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;7597:61:30;-1:-1:-1;;;;;7597:61:30;;;;;;;;;;7684:5;;7517:195;7490:3;;7436:294;;;-1:-1:-1;7747:14:30;:23;;;;;-1:-1:-1;;7747:23:30;;;:::i;:::-;;7304:481;7251:3;;7194:601;;;-1:-1:-1;7844:58:30;;;7865:10;7844:58;;;;;;;;;7877:24;7844:58;;;;;;;;;;7865:10;;7877:24;;7844:58;;;;;;;7877:24;;7844:58;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7844:58:30;;;-1:-1:-1;7844:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;7948:31;7955:24;;7948:31;:::i;:::-;-1:-1:-1;8027:25:30;:33;;-1:-1:-1;;8027:33:30;;;6709:1358::o;18215:110::-;18296:22;;18215:110;:::o;23739:25::-;;;;:::o;11082:145::-;11155:7;11208:10;11191:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11191:28:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11191:28:30;;;11181:39;;;;;;11174:46;;11082:145;;;:::o;4641:659::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4787:25;;;;;;;4779:59;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;;;;4959:39;4973:24;4959:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4959:39:30;;;;;;;;;-1:-1:-1;4959:39:30;;;;;;;;;;;;;;;:13;:39::i;:::-;4950:5;:48;4942:96;;;;-1:-1:-1;;;4942:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:31;5091:24;;5084:31;:::i;:::-;5161:25;:33;;-1:-1:-1;;5161:33:30;;;5249:44;;;5275:10;5249:44;;;;;;;;;;;;;;;;;;;;;4641:659;:::o;2948:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2948:31:30;;-1:-1:-1;2948:31:30;:::o;22008:98::-;22083:10;:16;22008:98;:::o;3126:37::-;;;;;;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;30418:425:30:-;30472:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;30633:37;:14;30662:7;30633:37;:28;:37;:::i;:::-;30717:7;:5;:7::i;:::-;:25;;-1:-1:-1;;;;;30717:16:30;;;;;:25;;;;;30734:7;;30717:25;;;;30734:7;30717:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30717:25:30;30795:41;30807:10;30819:7;:5;:7::i;:::-;30795:41;;;-1:-1:-1;;;;;30795:41:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30418:425;;:::o;15480:180::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;15564:40:30;:11;15596:7;15564:40;:31;:40;:::i;34129:1540::-;34212:7;34342:13;:11;:13::i;:::-;-1:-1:-1;;;;;34332:23:30;;;;;;34328:68;;;-1:-1:-1;34378:7:30;34371:14;;34328:68;34428:7;-1:-1:-1;;;;;34482:20:30;;;34478:600;;34654:17;34673:12;34687:14;34711:21;34725:6;34711:13;:21::i;:::-;34651:81;;;;;;;;;;34843:9;34835:41;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;;;;34898:9;34890:28;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;;;;35035:32;35057:9;35035:17;:7;35047:4;35035:17;:11;:17;:::i;:32::-;35020:47;;34478:600;;;;35195:27;35224:22;35248:24;35282:20;:18;:20::i;:::-;35192:110;;;;;;;;;;35368:19;35360:51;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;;;;35429:19;35421:49;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;;;;35605:57;35647:14;35605:37;:12;35622:19;35605:37;:16;:37;:::i;:57::-;35598:64;34129:1540;-1:-1:-1;;;;;;;34129:1540:30:o;21239:177::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;21322:39:30;:10;21353:7;21322:39;:30;:39;:::i;17783:189::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;17870:43:30;:14;17905:7;17870:43;:34;:43;:::i;8555:827::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;8657:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;3437:23;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3509:13;;3534:1;;3509:10;;3520:1;;3509:13;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;8752:14:30;;;;;;;8751:15;8743:49;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;;;;8871:9;8866:384;8886:21;;;8866:384;;;8996:12;:27;9009:10;;9020:1;9009:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9009:13:30;8996:27;;-1:-1:-1;8996:27:30;;;;;;;;-1:-1:-1;8996:27:30;;;;8991:249;;9122:4;9092:12;:27;9105:10;;9116:1;9105:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9105:13:30;9092:27;;-1:-1:-1;9092:27:30;;;;;;;;-1:-1:-1;9092:27:30;:34;;-1:-1:-1;;9092:34:30;;;;;;;;;;9191:14;9211:10;;9222:1;9211:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9191:34:30;;;9211:13;9191:34;;;;;;;-1:-1:-1;;;;;;9191:34:30;-1:-1:-1;;;;;9211:13:30;;;;;;;;;;9191:34;;;;;;-1:-1:-1;8991:249:30;8909:3;;8866:384;;;-1:-1:-1;9259:14:30;:21;;-1:-1:-1;;9259:21:30;;;;;9331:44;;;9348:10;9331:44;;;;;;;;;9360:14;9331:44;;;;;;;;;;9348:10;;9360:14;;9331:44;;;;;;;9360:14;;9331:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9331:44:30;;;-1:-1:-1;9331:44:30;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;8555:827;;:::o;18386:153::-;18487:45;;;;18386:153;:::o;4123:107:25:-;4217:6;;-1:-1:-1;;;;;4205:18:25;;;4217:6;;4205:18;;4123:107::o;13567:401:30:-;13718:35;;;;;;13717:36;13709:66;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;;;;13844:27;13857:4;13863:7;13844:12;:27::i;:::-;-1:-1:-1;13919:35:30;;:42;;-1:-1:-1;;13919:42:30;13957:4;13919:42;;;13567:401::o;2332:158:23:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;2419:64;;;-1:-1:-1;;;2419:64:23;;-1:-1:-1;;;;;2419:64:23;;;;;;;;;:54;;;;;;;:64;;;;;;;;;;;;;;;:54;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;;-1:-1:-1;;;;;;;2387:1891:2:o;1207:245:21:-;1282:7;-1:-1:-1;;;;;1305:20:21;;;1301:145;;1348:33;;;-1:-1:-1;;;1348:33:21;;-1:-1:-1;;;;;1348:33:21;;;;;;;;;:23;;;;;;:33;;;;;;;;;;;;;;;:23;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1348:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:21;;-1:-1:-1;1341:40:21;;1301:145;-1:-1:-1;;;;;;1419:16:21;;;1412:23;;12652:240:30;12757:19;;;;12728:7;;12757:33;;12781:8;12757:33;:23;:33;:::i;:::-;12751:3;:39;12747:139;;;-1:-1:-1;12813:10:30;;12806:17;;12747:139;-1:-1:-1;12861:14:30;;;;12854:21;;14103:317;14254:35;;;;;;14246:73;;;;;-1:-1:-1;;;14246:73:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:12;;;;:22;14103:317::o;5161:156:26:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:26;;5161:156;-1:-1:-1;;;;;;;;5161:156:26:o;12192:288:30:-;12328:27;12350:4;12328:21;:27::i;:::-;12391:7;12373:4;:14;;;:25;;12365:54;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;;;;12446:14;;;;:27;;12465:7;12446:27;:18;:27;:::i;:::-;12429:4;:14;;:44;;;;12192:288;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;-1:-1:-1;;1731:33:24;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;4644:159:26:-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:26;;4644:159;-1:-1:-1;;;;;;;;4644:159:26:o;4305:241::-;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;4442:97;;;-1:-1:-1;;;4442:97:26;;-1:-1:-1;;;;;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;:76;;;;;;;4519:12;;4533:5;;4442:97;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:26;;;;;;;;;;;-1:-1:-1;4305:241:26;-1:-1:-1;;;4305:241:26:o;3757:1095:5:-;4352:27;-1:-1:-1;;;;;4352:25:5;;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;27876:128:30:-;27926:10;:12;;;;;;;;27954:43;;;27974:10;27954:43;;;;;;;;;;;;;;;;;;;;;27876:128::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;2306:66;;;-1:-1:-1;;;2306:66:26;;-1:-1:-1;;;;;2306:66:26;;;;;;;;;:62;;;;;;;:66;;;;;-1:-1:-1;;2306:66:26;;;;;;;;:62;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;285:43;;;-1:-1;;;;;244:29;;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;;;;;;;;:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:26;:40::i;11749:338:30:-;11934:7;11918:4;:12;;;:23;11910:70;;;;-1:-1:-1;;;11910:70:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12048:32;12061:4;12067;:12;;;12048;:32::i;:::-;11749:338;;:::o;5436:141:26:-;5482:7;5524:32;5536:19;;5524:11;:32::i;:::-;-1:-1:-1;;;;;5508:60:26;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5508:62:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5508:62:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5508:62:26;;-1:-1:-1;5436:141:26;:::o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;285:43;;;-1:-1;;;;;244:29;;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;13038:425:30:-;13172:27;13194:4;13172:21;:27::i;:::-;13264:20;;;13376:14;;;;:27;-1:-1:-1;13372:85:30;;;13436:10;;13419:14;;;:27;13038:425;;:::o;14494:370::-;14578:19;;;;:33;;14602:8;14578:33;:23;:33;:::i;:::-;14572:3;:39;14568:290;;;14694:3;14672:19;;;:25;14795:10;;14778:14;;;:27;14824:23;;;;14795:10;;14824:23;14568:290;14494:370;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;-1:-1:-1;;;;;22209:17557:30;;;;;;;;;;;-1:-1:-1;22209:17557:30;;;;;;;-1:-1:-1;22209:17557:30;;;-1:-1:-1;22209:17557:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;;;-1:-1:-1;22209:17557:30;;"},"walletCache.sol:IWalletCache":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"walletCache.sol:WalletCache":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032a265627a7a723158200d133a1b20c5b8d7f88583b755e0cdb58d87241a8e32f00dc43a433c17cfbfdf64736f6c63430005110032","bin-runtime":"60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032a265627a7a723158200d133a1b20c5b8d7f88583b755e0cdb58d87241a8e32f00dc43a433c17cfbfdf64736f6c63430005110032","srcmap":"1150:3249:31:-;;;1122:66:23;1272:58;;1397:66:31;1805:50;;1563:66;1861:65;;1732:66;1932:65;;2290:820;5:2:-1;;;;30:1;27;20:12;5:2;2290:820:31;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2290:820:31;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;2290:820:31;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;2578:3:31;:11;;-1:-1:-1;;;;;;2578:11:31;-1:-1:-1;;;;;2578:11:31;;;;;2599:17;:39;;;2695:27;;2691:85;;2738:11;:27;;;2691:85;2838:34;;2834:106;;2888:18;:41;;;2834:106;3002:34;;2998:106;;3052:18;:41;;;2998:106;2290:820;;;;;;1150:3249;;;;;;","srcmap-runtime":"1150:3249:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1150:3249:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:18;;;:::i;:::-;;;;-1:-1:-1;;;;;2040:18:31;;;;;;;;;;;;;;3337:473;;;:::i;:::-;;4291:106;;;:::i;:::-;;;;;;;;;;;;;;;;1805:50;;;:::i;1364:91:24:-;;;:::i;1861:65:31:-;;;:::i;1932:::-;;;:::i;3954:274::-;;;:::i;2064:32::-;;;:::i;2169:95:23:-;;;:::i;2004:29:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2004:29:31;;:::i;2040:18::-;;;-1:-1:-1;;;;;2040:18:31;;:::o;3337:473::-;3479:13;3535:31;3547:18;;3535:11;:31::i;:::-;3600:3;;3617:18;;3582:4;;-1:-1:-1;;;;;3600:3:31;;3649:16;:14;:16::i;:::-;3679:11;;3704:17;;3495:236;;;;;:::i;:::-;-1:-1:-1;;;;;3495:236:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3495:236:31;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;3741:13:31;27:10:-1;;39:1;23:18;;45:23;;-1:-1;3741:26:31;;;;;;;;-1:-1:-1;;;;;3741:26:31;;-1:-1:-1;;;;;;3741:26:31;;;;;;;;3783:20;;;;;;;3479:252;;-1:-1:-1;3783:20:31;;;;;;3741:26;3783:20;;;3337:473;:::o;4291:106::-;4370:13;:20;4291:106;:::o;1805:50::-;;;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;1861:65:31:-;;;;:::o;1932:::-;;;;:::o;3954:274::-;4017:6;3178:31;3190:18;;3178:11;:31::i;:::-;-1:-1:-1;;;;;3164:45:31;:10;-1:-1:-1;;;;;3164:45:31;;3156:87;;;;;-1:-1:-1;;;3156:87:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;4039:13;:20;4062:1;-1:-1:-1;4035:68:31;;;4079:13;:11;:13::i;:::-;4129;4143:20;;4113:13;;4129;-1:-1:-1;;4143:24:31;;;4129:39;;;;;;;;;;;;;;;;4178:13;:19;;-1:-1:-1;;;;;4129:39:31;;;;-1:-1:-1;4178:13:31;:19;;;;;;;;;;;;;;-1:-1:-1;;4178:19:31;;;;;-1:-1:-1;;;;;;4178:19:31;;;;;;4215:6;-1:-1:-1;3954:274:31;:::o;2064:32::-;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;2004:29:31:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2004:29:31;;-1:-1:-1;2004:29:31;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;1150:3249:31:-;;;;;;;;:::o"},"walletDeployer.sol:WalletDeployer":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860025534801561005857600080fd5b50604051610b1c380380610b1c8339818101604052606081101561007b57600080fd5b5080516020820151604090920151600080546001600160a01b0319166001600160a01b0384161790559091908180156100b45760018190555b5080156100c15760028190555b505050610a49806100d36000396000f3fe6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6000546001600160a01b031690565b6003602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526003602052604090205416156102ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260036020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60025481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526003602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60015490565b60006108aa600154610931565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b505192915050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d60208110156109a857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ff57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a265627a7a7231582079dd557bde042f7365d5316e29e11004155bdb26459e97c0247a767ac518706b64736f6c63430005110032","bin-runtime":"6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6000546001600160a01b031690565b6003602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526003602052604090205416156102ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260036020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60025481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526003602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60015490565b60006108aa600154610931565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b505192915050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d60208110156109a857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ff57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a265627a7a7231582079dd557bde042f7365d5316e29e11004155bdb26459e97c0247a767ac518706b64736f6c63430005110032","srcmap":"964:3265:32:-;;;1122:66:23;1272:58;;1337:66:32;1409:59;;1597:298;5:2:-1;;;;30:1;27;20:12;5:2;1597:298:32;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1597:298:32;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;1597:298:32;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1796:31:32;;1792:97;;1843:15;:35;;;1792:97;1597:298;;;964:3265;;;;;;","srcmap-runtime":"964:3265:32:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:91:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;1475:50:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1475:50:32;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1475:50:32;-1:-1:-1;;;;;1475:50:32;;:::i;2858:1369::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;2858:1369:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2858:1369:32;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2858:1369:32;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;2858:1369:32;;-1:-1:-1;2858:1369:32;-1:-1:-1;2858:1369:32;:::i;:::-;;1409:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1409:59:32;;;:::i;:::-;;;;;;;;;;;;;;;;2052:398;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2052:398:32;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2052:398:32;-1:-1:-1;;;;;2052:398:32;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;1475:50:32:-;;;;;;;;;;;;-1:-1:-1;;;;;1475:50:32;;:::o;2858:1369::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3284:23:32;;;3319:3;3284:23;;;:15;:23;;;;;;;:39;3276:85;;;;-1:-1:-1;;;3276:85:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3401:6;-1:-1:-1;;;;;3379:28:32;:10;-1:-1:-1;;;;;3379:16:32;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3379:18:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3379:18:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3379:18:32;-1:-1:-1;;;;;3379:28:32;;3371:55;;;;;-1:-1:-1;;;3371:55:32;;;;;;;;;;;;-1:-1:-1;;;3371:55:32;;;;;;;;;;;;;;;3437:13;3466:28;3478:15;;3466:11;:28::i;:::-;-1:-1:-1;;;;;3453:57:32;;:59;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3453:59:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3453:59:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3453:59:32;3527:53;;;-1:-1:-1;;;;;3527:53:32;;;;;;;;3453:59;3527:53;;;;;;;;;3570:9;3527:53;;;;;;3453:59;;-1:-1:-1;3527:53:32;;;;;;;;;;-1:-1:-1;;;;;3591:23:32;;;;;;;:15;:23;;;;;:41;;-1:-1:-1;;;;;;3591:41:32;;;;;;;;;;3706:86;;;;3748:6;-1:-1:-1;;;;;3748:20:32;;3769:11;3748:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3748:33:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3748:33:32;;;;3706:86;3805:25;3801:95;;;3846:6;-1:-1:-1;;;;;3846:23:32;;3870:14;3846:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3846:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3846:39:32;;;;3801:95;3909:21;3905:83;;;3946:6;-1:-1:-1;;;;;3946:19:32;;3966:10;3946:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3946:31:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3946:31:32;;;;3905:83;4001:21;3997:94;;;4038:6;-1:-1:-1;;;;;4038:19:32;;4058:21;;4038:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4038:42:32;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4038:42:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4038:42:32;;;;3997:94;4101:39;;;-1:-1:-1;;;4101:39:32;;-1:-1:-1;;;;;4101:39:32;;;;;;;4134:5;4101:39;;;;;;;;:24;;;;;;:39;;;;;;;;;;;4134:5;4101:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;4101:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4101:39:32;;;;4167:1;4155:9;:13;4151:70;;;4184:26;;-1:-1:-1;;;;;4184:15:32;;;4200:9;4184:26;;;;;;;;;4200:9;4184:15;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4184:26:32;4151:70;1936:1:23;2858:1369:32;;;;;;;;;;;:::o;1409:59::-;;;;:::o;2052:398::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:13:32;2161:28;2173:15;;2161:11;:28::i;:::-;-1:-1:-1;;;;;2148:57:32;;:59;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2148:59:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2148:59:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2148:59:32;2222:30;;;-1:-1:-1;;;;;2222:30:32;;;;;;;2148:59;2222:30;;;;;2148:59;;-1:-1:-1;2222:30:32;;;;;;;;;;;-1:-1:-1;;;;;2263:23:32;;;;;;;:15;:23;;;;;;:41;;-1:-1:-1;;;;;;2263:41:32;;;;;;;;;2404:39;;-1:-1:-1;;;2404:39:32;;;;;;;;;;;;;;;;:24;;:39;;;;;2263:23;2404:39;;;;;;2263:23;:41;2404:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2404:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2404:39:32;;;;1936:1:23;2052:398:32;:::o;2169:95:23:-;2242:15;;2169:95;:::o;2332:158::-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;-1:-1:-1;;;;;2419:54:23;;2474:8;2419:64;;;;;;;;;;;;;-1:-1:-1;;;;;2419:64:23;-1:-1:-1;;;;;2419:64:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12"}},"sourceList":["controller.sol","externals/Address.sol","externals/ECDSA.sol","externals/ERC165.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/balanceable.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","licence.sol","tokenWhitelist.sol","wallet.sol","walletCache.sol","walletDeployer.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[3161],"IController":[2726]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2709,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":3911,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":3162,"symbolAliases":[null],"unitAlias":""},"id":2710,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":4168,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":3162,"symbolAliases":[null],"unitAlias":""},"id":2711,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[2726],"name":"IController","scope":3162},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":2726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2718,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2712,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":2713,"name":"VariableDeclaration","src":"1015:7:0"}],"id":2714,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2718,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2715,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":2716,"name":"VariableDeclaration","src":"1047:4:0"}],"id":2717,"name":"ParameterList","src":"1046:6:0"}],"id":2718,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":2726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2725,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2719,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":2720,"name":"VariableDeclaration","src":"1076:7:0"}],"id":2721,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2725,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2722,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":2723,"name":"VariableDeclaration","src":"1108:4:0"}],"id":2724,"name":"ParameterList","src":"1107:6:0"}],"id":2725,"name":"FunctionDefinition","src":"1059:55:0"}],"id":2726,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[2726,3910,4167],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[3161,4167,3910,2726],"name":"Controller","scope":3162},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":2726,"type":"contract IController"},"id":2727,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":2728,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3910,"type":"contract Ownable"},"id":2729,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":2730,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4167,"type":"contract Transferrable"},"id":2731,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":2732,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2733,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":2734,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":2738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2735,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":2736,"name":"VariableDeclaration","src":"1564:19:0"}],"id":2737,"name":"ParameterList","src":"1546:38:0"}],"id":2738,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2744,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2739,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":2740,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":2744,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2741,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":2742,"name":"VariableDeclaration","src":"1631:19:0"}],"id":2743,"name":"ParameterList","src":"1613:38:0"}],"id":2744,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2750,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2745,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":2746,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":2750,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2747,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":2748,"name":"VariableDeclaration","src":"1692:14:0"}],"id":2749,"name":"ParameterList","src":"1674:33:0"}],"id":2750,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2756,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2751,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":2752,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":2756,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2753,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":2754,"name":"VariableDeclaration","src":"1749:14:0"}],"id":2755,"name":"ParameterList","src":"1731:33:0"}],"id":2756,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2764,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2757,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":2758,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":2764,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2759,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":2760,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":2764,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2761,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":2762,"name":"VariableDeclaration","src":"1814:15:0"}],"id":2763,"name":"ParameterList","src":"1784:46:0"}],"id":2764,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2765,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":2766,"name":"VariableDeclaration","src":"1851:15:0"}],"id":2767,"name":"ParameterList","src":"1850:17:0"}],"id":2768,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2772,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2769,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":2770,"name":"VariableDeclaration","src":"1887:15:0"}],"id":2771,"name":"ParameterList","src":"1886:17:0"}],"id":2772,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":3161,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2773,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":2774,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":2775,"name":"Mapping","src":"1910:24:0"}],"id":2776,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":3161,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2777,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":2778,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":3161,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2779,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":2780,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":2781,"name":"Mapping","src":"1991:24:0"}],"id":2782,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":3161,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2783,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":2784,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":3161,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2785,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":2786,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":2796,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2787,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":2788,"name":"VariableDeclaration","src":"2251:30:0"}],"id":2789,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":2794,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"type(contract Ownable)","value":"Ownable"},"id":2790,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2788,"type":"address payable","value":"_ownerAddress_"},"id":2791,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2792,"name":"Literal","src":"2314:5:0"}],"id":2793,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":2795,"name":"Block","src":"2321:2:0"}],"id":2796,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2797,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2798,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2799,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2800,"name":"Identifier","src":"2431:3:0"}],"id":2801,"name":"MemberAccess","src":"2431:10:0"}],"id":2802,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2803,"name":"Literal","src":"2444:24:0"}],"id":2804,"name":"FunctionCall","src":"2414:55:0"}],"id":2805,"name":"ExpressionStatement","src":"2414:55:0"},{"id":2806,"name":"PlaceholderStatement","src":"2479:1:0"}],"id":2807,"name":"Block","src":"2404:83:0"}],"id":2808,"name":"ModifierDefinition","src":"2383:104:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2809,"name":"ParameterList","src":"2558:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2810,"name":"Identifier","src":"2571:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2811,"name":"Identifier","src":"2579:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2812,"name":"Identifier","src":"2588:3:0"}],"id":2813,"name":"MemberAccess","src":"2588:10:0"}],"id":2814,"name":"FunctionCall","src":"2579:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2815,"name":"Identifier","src":"2603:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2816,"name":"Identifier","src":"2612:3:0"}],"id":2817,"name":"MemberAccess","src":"2612:10:0"}],"id":2818,"name":"IndexAccess","src":"2603:20:0"}],"id":2819,"name":"BinaryOperation","src":"2579:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":2820,"name":"Literal","src":"2625:24:0"}],"id":2821,"name":"FunctionCall","src":"2571:79:0"}],"id":2822,"name":"ExpressionStatement","src":"2571:79:0"},{"id":2823,"name":"PlaceholderStatement","src":"2660:1:0"}],"id":2824,"name":"Block","src":"2561:107:0"}],"id":2825,"name":"ModifierDefinition","src":"2533:135:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2826,"name":"ParameterList","src":"2740:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2827,"name":"Identifier","src":"2753:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2940,"type":"function () view returns (bool)","value":"isStopped"},"id":2828,"name":"Identifier","src":"2762:9:0"}],"id":2829,"name":"FunctionCall","src":"2762:11:0"}],"id":2830,"name":"UnaryOperation","src":"2761:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":2831,"name":"Literal","src":"2775:23:0"}],"id":2832,"name":"FunctionCall","src":"2753:46:0"}],"id":2833,"name":"ExpressionStatement","src":"2753:46:0"},{"id":2834,"name":"PlaceholderStatement","src":"2809:1:0"}],"id":2835,"name":"Block","src":"2743:74:0"}],"id":2836,"name":"ModifierDefinition","src":"2721:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2850,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2837,"name":"ElementaryTypeName","src":"2958:7:0"}],"id":2838,"name":"VariableDeclaration","src":"2958:16:0"}],"id":2839,"name":"ParameterList","src":"2957:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2844,"name":"ParameterList","src":"3006:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":2840,"name":"Identifier","src":"2985:9:0"}],"id":2841,"name":"ModifierInvocation","src":"2985:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":2842,"name":"Identifier","src":"2995:10:0"}],"id":2843,"name":"ModifierInvocation","src":"2995:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2994,"type":"function (address)","value":"_addAdmin"},"id":2845,"name":"Identifier","src":"3016:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2838,"type":"address","value":"_account"},"id":2846,"name":"Identifier","src":"3026:8:0"}],"id":2847,"name":"FunctionCall","src":"3016:19:0"}],"id":2848,"name":"ExpressionStatement","src":"3016:19:0"}],"id":2849,"name":"Block","src":"3006:36:0"}],"id":2850,"name":"FunctionDefinition","src":"2940:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2862,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2851,"name":"ElementaryTypeName","src":"3192:7:0"}],"id":2852,"name":"VariableDeclaration","src":"3192:16:0"}],"id":2853,"name":"ParameterList","src":"3191:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2856,"name":"ParameterList","src":"3229:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":2854,"name":"Identifier","src":"3219:9:0"}],"id":2855,"name":"ModifierInvocation","src":"3219:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3022,"type":"function (address)","value":"_removeAdmin"},"id":2857,"name":"Identifier","src":"3239:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"address","value":"_account"},"id":2858,"name":"Identifier","src":"3252:8:0"}],"id":2859,"name":"FunctionCall","src":"3239:22:0"}],"id":2860,"name":"ExpressionStatement","src":"3239:22:0"}],"id":2861,"name":"Block","src":"3229:39:0"}],"id":2862,"name":"FunctionDefinition","src":"3171:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":3161,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2863,"name":"ParameterList","src":"3339:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2870,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2864,"name":"ElementaryTypeName","src":"3365:7:0"}],"id":2865,"name":"VariableDeclaration","src":"3365:7:0"}],"id":2866,"name":"ParameterList","src":"3364:9:0"},{"children":[{"attributes":{"functionReturnParameters":2866},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"uint256","value":"_adminCount"},"id":2867,"name":"Identifier","src":"3391:11:0"}],"id":2868,"name":"Return","src":"3384:18:0"}],"id":2869,"name":"Block","src":"3374:35:0"}],"id":2870,"name":"FunctionDefinition","src":"3320:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2884,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2871,"name":"ElementaryTypeName","src":"3570:7:0"}],"id":2872,"name":"VariableDeclaration","src":"3570:16:0"}],"id":2873,"name":"ParameterList","src":"3569:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2878,"name":"ParameterList","src":"3625:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2874,"name":"Identifier","src":"3597:16:0"}],"id":2875,"name":"ModifierInvocation","src":"3597:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":2876,"name":"Identifier","src":"3614:10:0"}],"id":2877,"name":"ModifierInvocation","src":"3614:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3076,"type":"function (address)","value":"_addController"},"id":2879,"name":"Identifier","src":"3635:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2872,"type":"address","value":"_account"},"id":2880,"name":"Identifier","src":"3650:8:0"}],"id":2881,"name":"FunctionCall","src":"3635:24:0"}],"id":2882,"name":"ExpressionStatement","src":"3635:24:0"}],"id":2883,"name":"Block","src":"3625:41:0"}],"id":2884,"name":"FunctionDefinition","src":"3547:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2896,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2885,"name":"ElementaryTypeName","src":"3836:7:0"}],"id":2886,"name":"VariableDeclaration","src":"3836:16:0"}],"id":2887,"name":"ParameterList","src":"3835:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2890,"name":"ParameterList","src":"3880:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2888,"name":"Identifier","src":"3863:16:0"}],"id":2889,"name":"ModifierInvocation","src":"3863:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3104,"type":"function (address)","value":"_removeController"},"id":2891,"name":"Identifier","src":"3890:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2886,"type":"address","value":"_account"},"id":2892,"name":"Identifier","src":"3908:8:0"}],"id":2893,"name":"FunctionCall","src":"3890:27:0"}],"id":2894,"name":"ExpressionStatement","src":"3890:27:0"}],"id":2895,"name":"Block","src":"3880:44:0"}],"id":2896,"name":"FunctionDefinition","src":"3810:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":3161,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2897,"name":"ParameterList","src":"4043:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2904,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2898,"name":"ElementaryTypeName","src":"4069:7:0"}],"id":2899,"name":"VariableDeclaration","src":"4069:7:0"}],"id":2900,"name":"ParameterList","src":"4068:9:0"},{"children":[{"attributes":{"functionReturnParameters":2900},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"_controllerCount"},"id":2901,"name":"Identifier","src":"4095:16:0"}],"id":2902,"name":"Return","src":"4088:23:0"}],"id":2903,"name":"Block","src":"4078:40:0"}],"id":2904,"name":"FunctionDefinition","src":"4019:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":3161,"stateMutability":"view","superFunction":2725,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2918,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2905,"name":"ElementaryTypeName","src":"4239:7:0"}],"id":2906,"name":"VariableDeclaration","src":"4239:16:0"}],"id":2907,"name":"ParameterList","src":"4238:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2918,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2910,"name":"ElementaryTypeName","src":"4291:4:0"}],"id":2911,"name":"VariableDeclaration","src":"4291:4:0"}],"id":2912,"name":"ParameterList","src":"4290:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":2908,"name":"Identifier","src":"4271:10:0"}],"id":2909,"name":"ModifierInvocation","src":"4271:10:0"},{"children":[{"attributes":{"functionReturnParameters":2912},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2913,"name":"Identifier","src":"4314:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2906,"type":"address","value":"_account"},"id":2914,"name":"Identifier","src":"4323:8:0"}],"id":2915,"name":"IndexAccess","src":"4314:18:0"}],"id":2916,"name":"Return","src":"4307:25:0"}],"id":2917,"name":"Block","src":"4297:42:0"}],"id":2918,"name":"FunctionDefinition","src":"4222:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":3161,"stateMutability":"view","superFunction":2718,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2932,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2919,"name":"ElementaryTypeName","src":"4473:7:0"}],"id":2920,"name":"VariableDeclaration","src":"4473:16:0"}],"id":2921,"name":"ParameterList","src":"4472:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2932,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2924,"name":"ElementaryTypeName","src":"4525:4:0"}],"id":2925,"name":"VariableDeclaration","src":"4525:4:0"}],"id":2926,"name":"ParameterList","src":"4524:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":2922,"name":"Identifier","src":"4505:10:0"}],"id":2923,"name":"ModifierInvocation","src":"4505:10:0"},{"children":[{"attributes":{"functionReturnParameters":2926},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":2927,"name":"Identifier","src":"4548:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2920,"type":"address","value":"_account"},"id":2928,"name":"Identifier","src":"4562:8:0"}],"id":2929,"name":"IndexAccess","src":"4548:23:0"}],"id":2930,"name":"Return","src":"4541:30:0"}],"id":2931,"name":"Block","src":"4531:47:0"}],"id":2932,"name":"FunctionDefinition","src":"4451:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":3161,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2933,"name":"ParameterList","src":"4742:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2940,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2934,"name":"ElementaryTypeName","src":"4766:4:0"}],"id":2935,"name":"VariableDeclaration","src":"4766:4:0"}],"id":2936,"name":"ParameterList","src":"4765:6:0"},{"children":[{"attributes":{"functionReturnParameters":2936},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bool","value":"_stopped"},"id":2937,"name":"Identifier","src":"4789:8:0"}],"id":2938,"name":"Return","src":"4782:15:0"}],"id":2939,"name":"Block","src":"4772:32:0"}],"id":2940,"name":"FunctionDefinition","src":"4724:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2994,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2941,"name":"ElementaryTypeName","src":"4891:7:0"}],"id":2942,"name":"VariableDeclaration","src":"4891:16:0"}],"id":2943,"name":"ParameterList","src":"4890:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2944,"name":"ParameterList","src":"4917:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2945,"name":"Identifier","src":"4927:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2946,"name":"Identifier","src":"4936:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2947,"name":"Identifier","src":"4945:8:0"}],"id":2948,"name":"IndexAccess","src":"4936:18:0"}],"id":2949,"name":"UnaryOperation","src":"4935:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":2950,"name":"Literal","src":"4956:38:0"}],"id":2951,"name":"FunctionCall","src":"4927:68:0"}],"id":2952,"name":"ExpressionStatement","src":"4927:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2953,"name":"Identifier","src":"5005:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":2954,"name":"Identifier","src":"5014:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2955,"name":"Identifier","src":"5028:8:0"}],"id":2956,"name":"IndexAccess","src":"5014:23:0"}],"id":2957,"name":"UnaryOperation","src":"5013:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":2958,"name":"Literal","src":"5039:42:0"}],"id":2959,"name":"FunctionCall","src":"5005:77:0"}],"id":2960,"name":"ExpressionStatement","src":"5005:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2961,"name":"Identifier","src":"5092:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2962,"name":"Identifier","src":"5101:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2963,"name":"Identifier","src":"5110:8:0"}],"id":2964,"name":"FunctionCall","src":"5101:18:0"}],"id":2965,"name":"UnaryOperation","src":"5100:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":2966,"name":"Literal","src":"5121:39:0"}],"id":2967,"name":"FunctionCall","src":"5092:69:0"}],"id":2968,"name":"ExpressionStatement","src":"5092:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2969,"name":"Identifier","src":"5171:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2970,"name":"Identifier","src":"5179:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2971,"name":"ElementaryTypeNameExpression","src":"5191:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2972,"name":"Literal","src":"5199:1:0"}],"id":2973,"name":"FunctionCall","src":"5191:10:0"}],"id":2974,"name":"BinaryOperation","src":"5179:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":2975,"name":"Literal","src":"5203:38:0"}],"id":2976,"name":"FunctionCall","src":"5171:71:0"}],"id":2977,"name":"ExpressionStatement","src":"5171:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2978,"name":"Identifier","src":"5252:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2979,"name":"Identifier","src":"5261:8:0"}],"id":2980,"name":"IndexAccess","src":"5252:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2981,"name":"Literal","src":"5273:4:0"}],"id":2982,"name":"Assignment","src":"5252:25:0"}],"id":2983,"name":"ExpressionStatement","src":"5252:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"uint256","value":"_adminCount"},"id":2984,"name":"Identifier","src":"5287:11:0"}],"id":2985,"name":"UnaryOperation","src":"5287:13:0"}],"id":2986,"name":"ExpressionStatement","src":"5287:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2750,"type":"function (address,address)","value":"AddedAdmin"},"id":2987,"name":"Identifier","src":"5315:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2988,"name":"Identifier","src":"5326:3:0"}],"id":2989,"name":"MemberAccess","src":"5326:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2990,"name":"Identifier","src":"5338:8:0"}],"id":2991,"name":"FunctionCall","src":"5315:32:0"}],"id":2992,"name":"EmitStatement","src":"5310:37:0"}],"id":2993,"name":"Block","src":"4917:437:0"}],"id":2994,"name":"FunctionDefinition","src":"4872:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3022,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2995,"name":"ElementaryTypeName","src":"5453:7:0"}],"id":2996,"name":"VariableDeclaration","src":"5453:16:0"}],"id":2997,"name":"ParameterList","src":"5452:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2998,"name":"ParameterList","src":"5479:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2999,"name":"Identifier","src":"5489:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3000,"name":"Identifier","src":"5497:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2996,"type":"address","value":"_account"},"id":3001,"name":"Identifier","src":"5506:8:0"}],"id":3002,"name":"IndexAccess","src":"5497:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":3003,"name":"Literal","src":"5517:34:0"}],"id":3004,"name":"FunctionCall","src":"5489:63:0"}],"id":3005,"name":"ExpressionStatement","src":"5489:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3006,"name":"Identifier","src":"5562:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2996,"type":"address","value":"_account"},"id":3007,"name":"Identifier","src":"5571:8:0"}],"id":3008,"name":"IndexAccess","src":"5562:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3009,"name":"Literal","src":"5583:5:0"}],"id":3010,"name":"Assignment","src":"5562:26:0"}],"id":3011,"name":"ExpressionStatement","src":"5562:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"uint256","value":"_adminCount"},"id":3012,"name":"Identifier","src":"5598:11:0"}],"id":3013,"name":"UnaryOperation","src":"5598:13:0"}],"id":3014,"name":"ExpressionStatement","src":"5598:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2756,"type":"function (address,address)","value":"RemovedAdmin"},"id":3015,"name":"Identifier","src":"5626:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3016,"name":"Identifier","src":"5639:3:0"}],"id":3017,"name":"MemberAccess","src":"5639:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2996,"type":"address","value":"_account"},"id":3018,"name":"Identifier","src":"5651:8:0"}],"id":3019,"name":"FunctionCall","src":"5626:34:0"}],"id":3020,"name":"EmitStatement","src":"5621:39:0"}],"id":3021,"name":"Block","src":"5479:188:0"}],"id":3022,"name":"FunctionDefinition","src":"5431:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3076,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3023,"name":"ElementaryTypeName","src":"5764:7:0"}],"id":3024,"name":"VariableDeclaration","src":"5764:16:0"}],"id":3025,"name":"ParameterList","src":"5763:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3026,"name":"ParameterList","src":"5790:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3027,"name":"Identifier","src":"5800:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3028,"name":"Identifier","src":"5809:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3029,"name":"Identifier","src":"5818:8:0"}],"id":3030,"name":"IndexAccess","src":"5809:18:0"}],"id":3031,"name":"UnaryOperation","src":"5808:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":3032,"name":"Literal","src":"5829:38:0"}],"id":3033,"name":"FunctionCall","src":"5800:68:0"}],"id":3034,"name":"ExpressionStatement","src":"5800:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3035,"name":"Identifier","src":"5878:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":3036,"name":"Identifier","src":"5887:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3037,"name":"Identifier","src":"5901:8:0"}],"id":3038,"name":"IndexAccess","src":"5887:23:0"}],"id":3039,"name":"UnaryOperation","src":"5886:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":3040,"name":"Literal","src":"5912:42:0"}],"id":3041,"name":"FunctionCall","src":"5878:77:0"}],"id":3042,"name":"ExpressionStatement","src":"5878:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3043,"name":"Identifier","src":"5965:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3044,"name":"Identifier","src":"5974:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3045,"name":"Identifier","src":"5983:8:0"}],"id":3046,"name":"FunctionCall","src":"5974:18:0"}],"id":3047,"name":"UnaryOperation","src":"5973:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":3048,"name":"Literal","src":"5994:39:0"}],"id":3049,"name":"FunctionCall","src":"5965:69:0"}],"id":3050,"name":"ExpressionStatement","src":"5965:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3051,"name":"Identifier","src":"6044:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3052,"name":"Identifier","src":"6052:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3053,"name":"ElementaryTypeNameExpression","src":"6064:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3054,"name":"Literal","src":"6072:1:0"}],"id":3055,"name":"FunctionCall","src":"6064:10:0"}],"id":3056,"name":"BinaryOperation","src":"6052:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":3057,"name":"Literal","src":"6076:38:0"}],"id":3058,"name":"FunctionCall","src":"6044:71:0"}],"id":3059,"name":"ExpressionStatement","src":"6044:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":3060,"name":"Identifier","src":"6125:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3061,"name":"Identifier","src":"6139:8:0"}],"id":3062,"name":"IndexAccess","src":"6125:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3063,"name":"Literal","src":"6151:4:0"}],"id":3064,"name":"Assignment","src":"6125:30:0"}],"id":3065,"name":"ExpressionStatement","src":"6125:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"_controllerCount"},"id":3066,"name":"Identifier","src":"6165:16:0"}],"id":3067,"name":"UnaryOperation","src":"6165:18:0"}],"id":3068,"name":"ExpressionStatement","src":"6165:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2738,"type":"function (address,address)","value":"AddedController"},"id":3069,"name":"Identifier","src":"6198:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3070,"name":"Identifier","src":"6214:3:0"}],"id":3071,"name":"MemberAccess","src":"6214:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3072,"name":"Identifier","src":"6226:8:0"}],"id":3073,"name":"FunctionCall","src":"6198:37:0"}],"id":3074,"name":"EmitStatement","src":"6193:42:0"}],"id":3075,"name":"Block","src":"5790:452:0"}],"id":3076,"name":"FunctionDefinition","src":"5740:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3104,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3077,"name":"ElementaryTypeName","src":"6351:7:0"}],"id":3078,"name":"VariableDeclaration","src":"6351:16:0"}],"id":3079,"name":"ParameterList","src":"6350:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3080,"name":"ParameterList","src":"6377:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3081,"name":"Identifier","src":"6387:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":3082,"name":"Identifier","src":"6395:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3078,"type":"address","value":"_account"},"id":3083,"name":"Identifier","src":"6409:8:0"}],"id":3084,"name":"IndexAccess","src":"6395:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":3085,"name":"Literal","src":"6420:38:0"}],"id":3086,"name":"FunctionCall","src":"6387:72:0"}],"id":3087,"name":"ExpressionStatement","src":"6387:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":3088,"name":"Identifier","src":"6469:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3078,"type":"address","value":"_account"},"id":3089,"name":"Identifier","src":"6483:8:0"}],"id":3090,"name":"IndexAccess","src":"6469:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3091,"name":"Literal","src":"6495:5:0"}],"id":3092,"name":"Assignment","src":"6469:31:0"}],"id":3093,"name":"ExpressionStatement","src":"6469:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"_controllerCount"},"id":3094,"name":"Identifier","src":"6510:16:0"}],"id":3095,"name":"UnaryOperation","src":"6510:18:0"}],"id":3096,"name":"ExpressionStatement","src":"6510:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"function (address,address)","value":"RemovedController"},"id":3097,"name":"Identifier","src":"6543:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3098,"name":"Identifier","src":"6561:3:0"}],"id":3099,"name":"MemberAccess","src":"6561:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3078,"type":"address","value":"_account"},"id":3100,"name":"Identifier","src":"6573:8:0"}],"id":3101,"name":"FunctionCall","src":"6543:39:0"}],"id":3102,"name":"EmitStatement","src":"6538:44:0"}],"id":3103,"name":"Block","src":"6377:212:0"}],"id":3104,"name":"FunctionDefinition","src":"6324:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3105,"name":"ParameterList","src":"6675:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":3108,"name":"ParameterList","src":"6704:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3106,"name":"Identifier","src":"6687:16:0"}],"id":3107,"name":"ModifierInvocation","src":"6687:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bool","value":"_stopped"},"id":3109,"name":"Identifier","src":"6714:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3110,"name":"Literal","src":"6725:4:0"}],"id":3111,"name":"Assignment","src":"6714:15:0"}],"id":3112,"name":"ExpressionStatement","src":"6714:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2768,"type":"function (address)","value":"Stopped"},"id":3113,"name":"Identifier","src":"6744:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3114,"name":"Identifier","src":"6752:3:0"}],"id":3115,"name":"MemberAccess","src":"6752:10:0"}],"id":3116,"name":"FunctionCall","src":"6744:19:0"}],"id":3117,"name":"EmitStatement","src":"6739:24:0"}],"id":3118,"name":"Block","src":"6704:66:0"}],"id":3119,"name":"FunctionDefinition","src":"6662:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3120,"name":"ParameterList","src":"6833:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":3123,"name":"ParameterList","src":"6855:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":3121,"name":"Identifier","src":"6845:9:0"}],"id":3122,"name":"ModifierInvocation","src":"6845:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bool","value":"_stopped"},"id":3124,"name":"Identifier","src":"6865:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3125,"name":"Literal","src":"6876:5:0"}],"id":3126,"name":"Assignment","src":"6865:16:0"}],"id":3127,"name":"ExpressionStatement","src":"6865:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2772,"type":"function (address)","value":"Started"},"id":3128,"name":"Identifier","src":"6896:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3129,"name":"Identifier","src":"6904:3:0"}],"id":3130,"name":"MemberAccess","src":"6904:10:0"}],"id":3131,"name":"FunctionCall","src":"6896:19:0"}],"id":3132,"name":"EmitStatement","src":"6891:24:0"}],"id":3133,"name":"Block","src":"6855:67:0"}],"id":3134,"name":"FunctionDefinition","src":"6819:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3160,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3135,"name":"ElementaryTypeName","src":"7026:15:0"}],"id":3136,"name":"VariableDeclaration","src":"7026:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":3160,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3137,"name":"ElementaryTypeName","src":"7047:7:0"}],"id":3138,"name":"VariableDeclaration","src":"7047:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":3160,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3139,"name":"ElementaryTypeName","src":"7063:7:0"}],"id":3140,"name":"VariableDeclaration","src":"7063:15:0"}],"id":3141,"name":"ParameterList","src":"7025:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":3146,"name":"ParameterList","src":"7110:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2808,"type":"modifier ()","value":"onlyAdmin"},"id":3142,"name":"Identifier","src":"7089:9:0"}],"id":3143,"name":"ModifierInvocation","src":"7089:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":3144,"name":"Identifier","src":"7099:10:0"}],"id":3145,"name":"ModifierInvocation","src":"7099:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4166,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":3147,"name":"Identifier","src":"7120:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3136,"type":"address payable","value":"_to"},"id":3148,"name":"Identifier","src":"7134:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3138,"type":"address","value":"_asset"},"id":3149,"name":"Identifier","src":"7139:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3140,"type":"uint256","value":"_amount"},"id":3150,"name":"Identifier","src":"7147:7:0"}],"id":3151,"name":"FunctionCall","src":"7120:35:0"}],"id":3152,"name":"ExpressionStatement","src":"7120:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2764,"type":"function (address,address,uint256)","value":"Claimed"},"id":3153,"name":"Identifier","src":"7170:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3136,"type":"address payable","value":"_to"},"id":3154,"name":"Identifier","src":"7178:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3138,"type":"address","value":"_asset"},"id":3155,"name":"Identifier","src":"7183:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3140,"type":"uint256","value":"_amount"},"id":3156,"name":"Identifier","src":"7191:7:0"}],"id":3157,"name":"FunctionCall","src":"7170:29:0"}],"id":3158,"name":"EmitStatement","src":"7165:34:0"}],"id":3159,"name":"Block","src":"7110:96:0"}],"id":3160,"name":"FunctionDefinition","src":"7011:195:0"}],"id":3161,"name":"ContractDefinition","src":"1460:5748:0"}],"id":3162,"name":"SourceUnit","src":"770:6439:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[3225]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3208,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[3225],"name":"Address","scope":3226},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":3225,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":3224,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3209,"name":"ElementaryTypeName","src":"562:7:1"}],"id":3210,"name":"VariableDeclaration","src":"562:15:1"}],"id":3211,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":3224,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3212,"name":"ElementaryTypeName","src":"602:4:1"}],"id":3213,"name":"VariableDeclaration","src":"602:4:1"}],"id":3214,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[3216],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":3223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3215,"name":"ElementaryTypeName","src":"805:7:1"}],"id":3216,"name":"VariableDeclaration","src":"805:12:1"}],"id":3217,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":3216,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":3210,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":3218,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":3214},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3216,"type":"uint256","value":"size"},"id":3219,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3220,"name":"Literal","src":"947:1:1"}],"id":3221,"name":"BinaryOperation","src":"940:8:1"}],"id":3222,"name":"Return","src":"933:15:1"}],"id":3223,"name":"Block","src":"608:347:1"}],"id":3224,"name":"FunctionDefinition","src":"542:413:1"}],"id":3225,"name":"ContractDefinition","src":"94:863:1"}],"id":3226,"name":"SourceUnit","src":"0:958:1"}},"externals/ECDSA.sol":{"AST":{"attributes":{"absolutePath":"externals/ECDSA.sol","exportedSymbols":{"ECDSA":[3306]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3227,"name":"PragmaDirective","src":"1161:23:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n * These functions can be used to verify that a message was signed by the holder\nof the private keys of a given address.","fullyImplemented":true,"linearizedBaseContracts":[3306],"name":"ECDSA","scope":3307},"children":[{"attributes":{"documentation":"@dev Returns the address that signed a hashed message (`hash`) with\n`signature`. This address can then be used for verification purposes.\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\nthis function rejects them by requiring the `s` value to be in the lower\nhalf order, and the `v` value to be either 27 or 28.\n * NOTE: This call _does not revert_ if the signature is invalid, or\nif the signer is otherwise unable to be retrieved. In those scenarios,\nthe zero address is returned.\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\nverification to be secure: it is possible to craft signatures that\nrecover to arbitrary addresses for non-hashed data. A safe way to ensure\nthis is by receiving a hash of the original message (which may otherwise\nbe too long), and then calling {toEthSignedMessageHash} on it.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recover","scope":3306,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":3289,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3228,"name":"ElementaryTypeName","src":"2404:7:2"}],"id":3229,"name":"VariableDeclaration","src":"2404:12:2"},{"attributes":{"constant":false,"name":"signature","scope":3289,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3230,"name":"ElementaryTypeName","src":"2418:5:2"}],"id":3231,"name":"VariableDeclaration","src":"2418:22:2"}],"id":3232,"name":"ParameterList","src":"2403:38:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3289,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3233,"name":"ElementaryTypeName","src":"2465:7:2"}],"id":3234,"name":"VariableDeclaration","src":"2465:7:2"}],"id":3235,"name":"ParameterList","src":"2464:9:2"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3231,"type":"bytes memory","value":"signature"},"id":3236,"name":"Identifier","src":"2526:9:2"}],"id":3237,"name":"MemberAccess","src":"2526:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":3238,"name":"Literal","src":"2546:2:2"}],"id":3239,"name":"BinaryOperation","src":"2526:22:2"},{"children":[{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3240,"name":"ElementaryTypeNameExpression","src":"2572:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3241,"name":"Literal","src":"2580:1:2"}],"id":3242,"name":"FunctionCall","src":"2572:10:2"}],"id":3243,"name":"TupleExpression","src":"2571:12:2"}],"id":3244,"name":"Return","src":"2564:19:2"}],"id":3245,"name":"Block","src":"2550:44:2"}],"id":3246,"name":"IfStatement","src":"2522:72:2"},{"attributes":{"assignments":[3248],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":3288,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3247,"name":"ElementaryTypeName","src":"2660:7:2"}],"id":3248,"name":"VariableDeclaration","src":"2660:9:2"}],"id":3249,"name":"VariableDeclarationStatement","src":"2660:9:2"},{"attributes":{"assignments":[3251],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":3288,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3250,"name":"ElementaryTypeName","src":"2679:7:2"}],"id":3251,"name":"VariableDeclaration","src":"2679:9:2"}],"id":3252,"name":"VariableDeclarationStatement","src":"2679:9:2"},{"attributes":{"assignments":[3254],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":3288,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3253,"name":"ElementaryTypeName","src":"2698:5:2"}],"id":3254,"name":"VariableDeclaration","src":"2698:7:2"}],"id":3255,"name":"VariableDeclarationStatement","src":"2698:7:2"},{"attributes":{"externalReferences":[{"r":{"declaration":3248,"isOffset":false,"isSlot":false,"src":"2918:1:2","valueSize":1}},{"signature":{"declaration":3231,"isOffset":false,"isSlot":false,"src":"2933:9:2","valueSize":1}},{"v":{"declaration":3254,"isOffset":false,"isSlot":false,"src":"3008:1:2","valueSize":1}},{"s":{"declaration":3251,"isOffset":false,"isSlot":false,"src":"2963:1:2","valueSize":1}},{"signature":{"declaration":3231,"isOffset":false,"isSlot":false,"src":"2978:9:2","valueSize":1}},{"signature":{"declaration":3231,"isOffset":false,"isSlot":false,"src":"3031:9:2","valueSize":1}}],"operations":"{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}"},"children":[],"id":3256,"name":"InlineAssembly","src":"2895:164:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":3257,"name":"ElementaryTypeNameExpression","src":"3947:7:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3251,"type":"bytes32","value":"s"},"id":3258,"name":"Identifier","src":"3955:1:2"}],"id":3259,"name":"FunctionCall","src":"3947:10:2"},{"attributes":{"argumentTypes":null,"hexvalue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5789...(69 digits omitted)...7168","value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"id":3260,"name":"Literal","src":"3960:66:2"}],"id":3261,"name":"BinaryOperation","src":"3947:79:2"},{"children":[{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3262,"name":"ElementaryTypeNameExpression","src":"4049:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3263,"name":"Literal","src":"4057:1:2"}],"id":3264,"name":"FunctionCall","src":"4049:10:2"}],"id":3265,"name":"Return","src":"4042:17:2"}],"id":3266,"name":"Block","src":"4028:42:2"}],"id":3267,"name":"IfStatement","src":"3943:127:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"uint8","value":"v"},"id":3268,"name":"Identifier","src":"4084:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":3269,"name":"Literal","src":"4089:2:2"}],"id":3270,"name":"BinaryOperation","src":"4084:7:2"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"uint8","value":"v"},"id":3271,"name":"Identifier","src":"4095:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":3272,"name":"Literal","src":"4100:2:2"}],"id":3273,"name":"BinaryOperation","src":"4095:7:2"}],"id":3274,"name":"BinaryOperation","src":"4084:18:2"},{"children":[{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3275,"name":"ElementaryTypeNameExpression","src":"4125:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3276,"name":"Literal","src":"4133:1:2"}],"id":3277,"name":"FunctionCall","src":"4125:10:2"}],"id":3278,"name":"Return","src":"4118:17:2"}],"id":3279,"name":"Block","src":"4104:42:2"}],"id":3280,"name":"IfStatement","src":"4080:66:2"},{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":10529,"type":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)","value":"ecrecover"},"id":3281,"name":"Identifier","src":"4247:9:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3229,"type":"bytes32","value":"hash"},"id":3282,"name":"Identifier","src":"4257:4:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"uint8","value":"v"},"id":3283,"name":"Identifier","src":"4263:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"bytes32","value":"r"},"id":3284,"name":"Identifier","src":"4266:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3251,"type":"bytes32","value":"s"},"id":3285,"name":"Identifier","src":"4269:1:2"}],"id":3286,"name":"FunctionCall","src":"4247:24:2"}],"id":3287,"name":"Return","src":"4240:31:2"}],"id":3288,"name":"Block","src":"2474:1804:2"}],"id":3289,"name":"FunctionDefinition","src":"2387:1891:2"},{"attributes":{"documentation":"@dev Returns an Ethereum Signed Message, created from a `hash`. This\nreplicates the behavior of the\nhttps://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\nJSON-RPC method.\n * See {recover}.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toEthSignedMessageHash","scope":3306,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":3305,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3290,"name":"ElementaryTypeName","src":"4574:7:2"}],"id":3291,"name":"VariableDeclaration","src":"4574:12:2"}],"id":3292,"name":"ParameterList","src":"4573:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3305,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3293,"name":"ElementaryTypeName","src":"4611:7:2"}],"id":3294,"name":"VariableDeclaration","src":"4611:7:2"}],"id":3295,"name":"ParameterList","src":"4610:9:2"},{"children":[{"attributes":{"functionReturnParameters":3295},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":3296,"name":"Identifier","src":"4731:9:2"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string \"\u0019Ethereum Signed Message:\n32\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3297,"name":"Identifier","src":"4741:3:2"}],"id":3298,"name":"MemberAccess","src":"4741:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"19457468657265756d205369676e6564204d6573736167653a0a3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0019Ethereum Signed Message:\n32\"","value":"\u0019Ethereum Signed Message:\n32"},"id":3299,"name":"Literal","src":"4758:34:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3291,"type":"bytes32","value":"hash"},"id":3300,"name":"Identifier","src":"4794:4:2"}],"id":3301,"name":"FunctionCall","src":"4741:58:2"}],"id":3302,"name":"FunctionCall","src":"4731:69:2"}],"id":3303,"name":"Return","src":"4724:76:2"}],"id":3304,"name":"Block","src":"4620:187:2"}],"id":3305,"name":"FunctionDefinition","src":"4542:265:2"}],"id":3306,"name":"ContractDefinition","src":"1392:3417:2"}],"id":3307,"name":"SourceUnit","src":"1161:3649:2"}},"externals/ERC165.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC165.sol","exportedSymbols":{"ERC165":[3316]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3308,"name":"PragmaDirective","src":"0:24:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC165 interface specifies a standard way of querying if a contract implements an interface.","fullyImplemented":false,"linearizedBaseContracts":[3316],"name":"ERC165","scope":3317},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3315,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3309,"name":"ElementaryTypeName","src":"180:6:3"}],"id":3310,"name":"VariableDeclaration","src":"180:6:3"}],"id":3311,"name":"ParameterList","src":"179:8:3"},{"children":[{"attributes":{"constant":false,"name":"","scope":3315,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3312,"name":"ElementaryTypeName","src":"211:4:3"}],"id":3313,"name":"VariableDeclaration","src":"211:4:3"}],"id":3314,"name":"ParameterList","src":"210:6:3"}],"id":3315,"name":"FunctionDefinition","src":"153:64:3"}],"id":3316,"name":"ContractDefinition","src":"130:89:3"}],"id":3317,"name":"SourceUnit","src":"0:220:3"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[3369]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3318,"name":"PragmaDirective","src":"0:24:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[3369],"name":"ERC20","scope":3370},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":3369,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":3327,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3319,"name":"ElementaryTypeName","src":"193:7:4"}],"id":3320,"name":"VariableDeclaration","src":"193:14:4"},{"attributes":{"constant":false,"name":"_spender","scope":3327,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3321,"name":"ElementaryTypeName","src":"209:7:4"}],"id":3322,"name":"VariableDeclaration","src":"209:16:4"}],"id":3323,"name":"ParameterList","src":"192:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3324,"name":"ElementaryTypeName","src":"250:7:4"}],"id":3325,"name":"VariableDeclaration","src":"250:7:4"}],"id":3326,"name":"ParameterList","src":"249:9:4"}],"id":3327,"name":"FunctionDefinition","src":"174:85:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":3369,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":3336,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3328,"name":"ElementaryTypeName","src":"281:7:4"}],"id":3329,"name":"VariableDeclaration","src":"281:16:4"},{"attributes":{"constant":false,"name":"_value","scope":3336,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3330,"name":"ElementaryTypeName","src":"299:7:4"}],"id":3331,"name":"VariableDeclaration","src":"299:14:4"}],"id":3332,"name":"ParameterList","src":"280:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3336,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3333,"name":"ElementaryTypeName","src":"333:4:4"}],"id":3334,"name":"VariableDeclaration","src":"333:4:4"}],"id":3335,"name":"ParameterList","src":"332:6:4"}],"id":3336,"name":"FunctionDefinition","src":"264:75:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":3369,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":3343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3337,"name":"ElementaryTypeName","src":"363:7:4"}],"id":3338,"name":"VariableDeclaration","src":"363:12:4"}],"id":3339,"name":"ParameterList","src":"362:14:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3340,"name":"ElementaryTypeName","src":"400:7:4"}],"id":3341,"name":"VariableDeclaration","src":"400:7:4"}],"id":3342,"name":"ParameterList","src":"399:9:4"}],"id":3343,"name":"FunctionDefinition","src":"344:65:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":3369,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3344,"name":"ParameterList","src":"434:2:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3345,"name":"ElementaryTypeName","src":"460:7:4"}],"id":3346,"name":"VariableDeclaration","src":"460:7:4"}],"id":3347,"name":"ParameterList","src":"459:9:4"}],"id":3348,"name":"FunctionDefinition","src":"414:55:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":3369,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3349,"name":"ElementaryTypeName","src":"492:7:4"}],"id":3350,"name":"VariableDeclaration","src":"492:11:4"},{"attributes":{"constant":false,"name":"_value","scope":3357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3351,"name":"ElementaryTypeName","src":"505:7:4"}],"id":3352,"name":"VariableDeclaration","src":"505:14:4"}],"id":3353,"name":"ParameterList","src":"491:29:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3357,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3354,"name":"ElementaryTypeName","src":"539:4:4"}],"id":3355,"name":"VariableDeclaration","src":"539:4:4"}],"id":3356,"name":"ParameterList","src":"538:6:4"}],"id":3357,"name":"FunctionDefinition","src":"474:71:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":3369,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":3368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3358,"name":"ElementaryTypeName","src":"572:7:4"}],"id":3359,"name":"VariableDeclaration","src":"572:13:4"},{"attributes":{"constant":false,"name":"_to","scope":3368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3360,"name":"ElementaryTypeName","src":"587:7:4"}],"id":3361,"name":"VariableDeclaration","src":"587:11:4"},{"attributes":{"constant":false,"name":"_value","scope":3368,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3362,"name":"ElementaryTypeName","src":"600:7:4"}],"id":3363,"name":"VariableDeclaration","src":"600:14:4"}],"id":3364,"name":"ParameterList","src":"571:44:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3368,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3365,"name":"ElementaryTypeName","src":"634:4:4"}],"id":3366,"name":"VariableDeclaration","src":"634:4:4"}],"id":3367,"name":"ParameterList","src":"633:6:4"}],"id":3368,"name":"FunctionDefinition","src":"550:90:4"}],"id":3369,"name":"ContractDefinition","src":"152:490:4"}],"id":3370,"name":"SourceUnit","src":"0:643:4"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[3588]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3371,"name":"PragmaDirective","src":"1161:23:5"},{"attributes":{"SourceUnit":3370,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":3589,"symbolAliases":[null],"unitAlias":""},"id":3372,"name":"ImportDirective","src":"1186:21:5"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":3589,"symbolAliases":[null],"unitAlias":""},"id":3373,"name":"ImportDirective","src":"1208:24:5"},{"attributes":{"SourceUnit":3226,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":3589,"symbolAliases":[null],"unitAlias":""},"id":3374,"name":"ImportDirective","src":"1233:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[3588],"name":"SafeERC20","scope":3589},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":3375,"name":"UserDefinedTypeName","src":"1745:8:5"},{"attributes":{"name":"uint256","type":"uint256"},"id":3376,"name":"ElementaryTypeName","src":"1758:7:5"}],"id":3377,"name":"UsingForDirective","src":"1739:27:5"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":3225,"type":"library Address"},"id":3378,"name":"UserDefinedTypeName","src":"1777:7:5"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3379,"name":"ElementaryTypeName","src":"1789:7:5"}],"id":3380,"name":"UsingForDirective","src":"1771:26:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3402,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3381,"name":"UserDefinedTypeName","src":"1825:5:5"}],"id":3382,"name":"VariableDeclaration","src":"1825:11:5"},{"attributes":{"constant":false,"name":"to","scope":3402,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3383,"name":"ElementaryTypeName","src":"1838:7:5"}],"id":3384,"name":"VariableDeclaration","src":"1838:10:5"},{"attributes":{"constant":false,"name":"value","scope":3402,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3385,"name":"ElementaryTypeName","src":"1850:7:5"}],"id":3386,"name":"VariableDeclaration","src":"1850:13:5"}],"id":3387,"name":"ParameterList","src":"1824:40:5"},{"attributes":{"parameters":[null]},"children":[],"id":3388,"name":"ParameterList","src":"1874:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3389,"name":"Identifier","src":"1884:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3382,"type":"contract ERC20","value":"token"},"id":3390,"name":"Identifier","src":"1903:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3391,"name":"Identifier","src":"1910:3:5"}],"id":3392,"name":"MemberAccess","src":"1910:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":3357,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3382,"type":"contract ERC20","value":"token"},"id":3393,"name":"Identifier","src":"1933:5:5"}],"id":3394,"name":"MemberAccess","src":"1933:14:5"}],"id":3395,"name":"MemberAccess","src":"1933:23:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3384,"type":"address","value":"to"},"id":3396,"name":"Identifier","src":"1958:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3386,"type":"uint256","value":"value"},"id":3397,"name":"Identifier","src":"1962:5:5"}],"id":3398,"name":"FunctionCall","src":"1910:58:5"}],"id":3399,"name":"FunctionCall","src":"1884:85:5"}],"id":3400,"name":"ExpressionStatement","src":"1884:85:5"}],"id":3401,"name":"Block","src":"1874:102:5"}],"id":3402,"name":"FunctionDefinition","src":"1803:173:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3427,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3403,"name":"UserDefinedTypeName","src":"2008:5:5"}],"id":3404,"name":"VariableDeclaration","src":"2008:11:5"},{"attributes":{"constant":false,"name":"from","scope":3427,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3405,"name":"ElementaryTypeName","src":"2021:7:5"}],"id":3406,"name":"VariableDeclaration","src":"2021:12:5"},{"attributes":{"constant":false,"name":"to","scope":3427,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3407,"name":"ElementaryTypeName","src":"2035:7:5"}],"id":3408,"name":"VariableDeclaration","src":"2035:10:5"},{"attributes":{"constant":false,"name":"value","scope":3427,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3409,"name":"ElementaryTypeName","src":"2047:7:5"}],"id":3410,"name":"VariableDeclaration","src":"2047:13:5"}],"id":3411,"name":"ParameterList","src":"2007:54:5"},{"attributes":{"parameters":[null]},"children":[],"id":3412,"name":"ParameterList","src":"2071:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3413,"name":"Identifier","src":"2081:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"contract ERC20","value":"token"},"id":3414,"name":"Identifier","src":"2100:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3415,"name":"Identifier","src":"2107:3:5"}],"id":3416,"name":"MemberAccess","src":"2107:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":3368,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"contract ERC20","value":"token"},"id":3417,"name":"Identifier","src":"2130:5:5"}],"id":3418,"name":"MemberAccess","src":"2130:18:5"}],"id":3419,"name":"MemberAccess","src":"2130:27:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3406,"type":"address","value":"from"},"id":3420,"name":"Identifier","src":"2159:4:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3408,"type":"address","value":"to"},"id":3421,"name":"Identifier","src":"2165:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3410,"type":"uint256","value":"value"},"id":3422,"name":"Identifier","src":"2169:5:5"}],"id":3423,"name":"FunctionCall","src":"2107:68:5"}],"id":3424,"name":"FunctionCall","src":"2081:95:5"}],"id":3425,"name":"ExpressionStatement","src":"2081:95:5"}],"id":3426,"name":"Block","src":"2071:112:5"}],"id":3427,"name":"FunctionDefinition","src":"1982:201:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3468,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3428,"name":"UserDefinedTypeName","src":"2210:5:5"}],"id":3429,"name":"VariableDeclaration","src":"2210:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3468,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3430,"name":"ElementaryTypeName","src":"2223:7:5"}],"id":3431,"name":"VariableDeclaration","src":"2223:15:5"},{"attributes":{"constant":false,"name":"value","scope":3468,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3432,"name":"ElementaryTypeName","src":"2240:7:5"}],"id":3433,"name":"VariableDeclaration","src":"2240:13:5"}],"id":3434,"name":"ParameterList","src":"2209:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3435,"name":"ParameterList","src":"2264:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3436,"name":"Identifier","src":"2544:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3433,"type":"uint256","value":"value"},"id":3437,"name":"Identifier","src":"2553:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3438,"name":"Literal","src":"2562:1:5"}],"id":3439,"name":"BinaryOperation","src":"2553:10:5"}],"id":3440,"name":"TupleExpression","src":"2552:12:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3327,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3429,"type":"contract ERC20","value":"token"},"id":3441,"name":"Identifier","src":"2569:5:5"}],"id":3442,"name":"MemberAccess","src":"2569:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3588","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3443,"name":"ElementaryTypeNameExpression","src":"2585:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10559,"type":"library SafeERC20","value":"this"},"id":3444,"name":"Identifier","src":"2593:4:5"}],"id":3445,"name":"FunctionCall","src":"2585:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3431,"type":"address","value":"spender"},"id":3446,"name":"Identifier","src":"2600:7:5"}],"id":3447,"name":"FunctionCall","src":"2569:39:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3448,"name":"Literal","src":"2612:1:5"}],"id":3449,"name":"BinaryOperation","src":"2569:44:5"}],"id":3450,"name":"TupleExpression","src":"2568:46:5"}],"id":3451,"name":"BinaryOperation","src":"2552:62:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":3452,"name":"Literal","src":"2628:56:5"}],"id":3453,"name":"FunctionCall","src":"2544:150:5"}],"id":3454,"name":"ExpressionStatement","src":"2544:150:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3455,"name":"Identifier","src":"2704:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3429,"type":"contract ERC20","value":"token"},"id":3456,"name":"Identifier","src":"2723:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3457,"name":"Identifier","src":"2730:3:5"}],"id":3458,"name":"MemberAccess","src":"2730:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3336,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3429,"type":"contract ERC20","value":"token"},"id":3459,"name":"Identifier","src":"2753:5:5"}],"id":3460,"name":"MemberAccess","src":"2753:13:5"}],"id":3461,"name":"MemberAccess","src":"2753:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3431,"type":"address","value":"spender"},"id":3462,"name":"Identifier","src":"2777:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3433,"type":"uint256","value":"value"},"id":3463,"name":"Identifier","src":"2786:5:5"}],"id":3464,"name":"FunctionCall","src":"2730:62:5"}],"id":3465,"name":"FunctionCall","src":"2704:89:5"}],"id":3466,"name":"ExpressionStatement","src":"2704:89:5"}],"id":3467,"name":"Block","src":"2264:536:5"}],"id":3468,"name":"FunctionDefinition","src":"2189:611:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3503,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3469,"name":"UserDefinedTypeName","src":"2837:5:5"}],"id":3470,"name":"VariableDeclaration","src":"2837:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3503,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3471,"name":"ElementaryTypeName","src":"2850:7:5"}],"id":3472,"name":"VariableDeclaration","src":"2850:15:5"},{"attributes":{"constant":false,"name":"value","scope":3503,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3473,"name":"ElementaryTypeName","src":"2867:7:5"}],"id":3474,"name":"VariableDeclaration","src":"2867:13:5"}],"id":3475,"name":"ParameterList","src":"2836:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3476,"name":"ParameterList","src":"2891:0:5"},{"children":[{"attributes":{"assignments":[3478]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3502,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3477,"name":"ElementaryTypeName","src":"2901:7:5"}],"id":3478,"name":"VariableDeclaration","src":"2901:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3327,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"contract ERC20","value":"token"},"id":3479,"name":"Identifier","src":"2924:5:5"}],"id":3480,"name":"MemberAccess","src":"2924:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3588","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3481,"name":"ElementaryTypeNameExpression","src":"2940:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10559,"type":"library SafeERC20","value":"this"},"id":3482,"name":"Identifier","src":"2948:4:5"}],"id":3483,"name":"FunctionCall","src":"2940:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3472,"type":"address","value":"spender"},"id":3484,"name":"Identifier","src":"2955:7:5"}],"id":3485,"name":"FunctionCall","src":"2924:39:5"}],"id":3486,"name":"MemberAccess","src":"2924:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3474,"type":"uint256","value":"value"},"id":3487,"name":"Identifier","src":"2968:5:5"}],"id":3488,"name":"FunctionCall","src":"2924:50:5"}],"id":3489,"name":"VariableDeclarationStatement","src":"2901:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3490,"name":"Identifier","src":"2984:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"contract ERC20","value":"token"},"id":3491,"name":"Identifier","src":"3003:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3492,"name":"Identifier","src":"3010:3:5"}],"id":3493,"name":"MemberAccess","src":"3010:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3336,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"contract ERC20","value":"token"},"id":3494,"name":"Identifier","src":"3033:5:5"}],"id":3495,"name":"MemberAccess","src":"3033:13:5"}],"id":3496,"name":"MemberAccess","src":"3033:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3472,"type":"address","value":"spender"},"id":3497,"name":"Identifier","src":"3057:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3478,"type":"uint256","value":"newAllowance"},"id":3498,"name":"Identifier","src":"3066:12:5"}],"id":3499,"name":"FunctionCall","src":"3010:69:5"}],"id":3500,"name":"FunctionCall","src":"2984:96:5"}],"id":3501,"name":"ExpressionStatement","src":"2984:96:5"}],"id":3502,"name":"Block","src":"2891:196:5"}],"id":3503,"name":"FunctionDefinition","src":"2806:281:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3538,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3504,"name":"UserDefinedTypeName","src":"3124:5:5"}],"id":3505,"name":"VariableDeclaration","src":"3124:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3538,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3506,"name":"ElementaryTypeName","src":"3137:7:5"}],"id":3507,"name":"VariableDeclaration","src":"3137:15:5"},{"attributes":{"constant":false,"name":"value","scope":3538,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3508,"name":"ElementaryTypeName","src":"3154:7:5"}],"id":3509,"name":"VariableDeclaration","src":"3154:13:5"}],"id":3510,"name":"ParameterList","src":"3123:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3511,"name":"ParameterList","src":"3178:0:5"},{"children":[{"attributes":{"assignments":[3513]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3537,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3512,"name":"ElementaryTypeName","src":"3188:7:5"}],"id":3513,"name":"VariableDeclaration","src":"3188:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3327,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"contract ERC20","value":"token"},"id":3514,"name":"Identifier","src":"3211:5:5"}],"id":3515,"name":"MemberAccess","src":"3211:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3588","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3516,"name":"ElementaryTypeNameExpression","src":"3227:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10559,"type":"library SafeERC20","value":"this"},"id":3517,"name":"Identifier","src":"3235:4:5"}],"id":3518,"name":"FunctionCall","src":"3227:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3507,"type":"address","value":"spender"},"id":3519,"name":"Identifier","src":"3242:7:5"}],"id":3520,"name":"FunctionCall","src":"3211:39:5"}],"id":3521,"name":"MemberAccess","src":"3211:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3509,"type":"uint256","value":"value"},"id":3522,"name":"Identifier","src":"3255:5:5"}],"id":3523,"name":"FunctionCall","src":"3211:50:5"}],"id":3524,"name":"VariableDeclarationStatement","src":"3188:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3525,"name":"Identifier","src":"3271:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"contract ERC20","value":"token"},"id":3526,"name":"Identifier","src":"3290:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3527,"name":"Identifier","src":"3297:3:5"}],"id":3528,"name":"MemberAccess","src":"3297:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3336,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"contract ERC20","value":"token"},"id":3529,"name":"Identifier","src":"3320:5:5"}],"id":3530,"name":"MemberAccess","src":"3320:13:5"}],"id":3531,"name":"MemberAccess","src":"3320:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3507,"type":"address","value":"spender"},"id":3532,"name":"Identifier","src":"3344:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3513,"type":"uint256","value":"newAllowance"},"id":3533,"name":"Identifier","src":"3353:12:5"}],"id":3534,"name":"FunctionCall","src":"3297:69:5"}],"id":3535,"name":"FunctionCall","src":"3271:96:5"}],"id":3536,"name":"ExpressionStatement","src":"3271:96:5"}],"id":3537,"name":"Block","src":"3178:196:5"}],"id":3538,"name":"FunctionDefinition","src":"3093:281:5"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3587,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3539,"name":"UserDefinedTypeName","src":"3785:5:5"}],"id":3540,"name":"VariableDeclaration","src":"3785:11:5"},{"attributes":{"constant":false,"name":"data","scope":3587,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3541,"name":"ElementaryTypeName","src":"3798:5:5"}],"id":3542,"name":"VariableDeclaration","src":"3798:17:5"}],"id":3543,"name":"ParameterList","src":"3784:32:5"},{"attributes":{"parameters":[null]},"children":[],"id":3544,"name":"ParameterList","src":"3826:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3545,"name":"Identifier","src":"4344:7:5"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":3224,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3546,"name":"ElementaryTypeNameExpression","src":"4352:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3540,"type":"contract ERC20","value":"token"},"id":3547,"name":"Identifier","src":"4360:5:5"}],"id":3548,"name":"FunctionCall","src":"4352:14:5"}],"id":3549,"name":"MemberAccess","src":"4352:25:5"}],"id":3550,"name":"FunctionCall","src":"4352:27:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":3551,"name":"Literal","src":"4381:33:5"}],"id":3552,"name":"FunctionCall","src":"4344:71:5"}],"id":3553,"name":"ExpressionStatement","src":"4344:71:5"},{"attributes":{"assignments":[3555,3557]},"children":[{"attributes":{"constant":false,"name":"success","scope":3586,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3554,"name":"ElementaryTypeName","src":"4486:4:5"}],"id":3555,"name":"VariableDeclaration","src":"4486:12:5"},{"attributes":{"constant":false,"name":"returndata","scope":3586,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3556,"name":"ElementaryTypeName","src":"4500:5:5"}],"id":3557,"name":"VariableDeclaration","src":"4500:23:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3558,"name":"ElementaryTypeNameExpression","src":"4527:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3540,"type":"contract ERC20","value":"token"},"id":3559,"name":"Identifier","src":"4535:5:5"}],"id":3560,"name":"FunctionCall","src":"4527:14:5"}],"id":3561,"name":"MemberAccess","src":"4527:19:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3542,"type":"bytes memory","value":"data"},"id":3562,"name":"Identifier","src":"4547:4:5"}],"id":3563,"name":"FunctionCall","src":"4527:25:5"}],"id":3564,"name":"VariableDeclarationStatement","src":"4485:67:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3565,"name":"Identifier","src":"4562:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"bool","value":"success"},"id":3566,"name":"Identifier","src":"4570:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":3567,"name":"Literal","src":"4579:34:5"}],"id":3568,"name":"FunctionCall","src":"4562:52:5"}],"id":3569,"name":"ExpressionStatement","src":"4562:52:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3557,"type":"bytes memory","value":"returndata"},"id":3570,"name":"Identifier","src":"4629:10:5"}],"id":3571,"name":"MemberAccess","src":"4629:17:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3572,"name":"Literal","src":"4649:1:5"}],"id":3573,"name":"BinaryOperation","src":"4629:21:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3574,"name":"Identifier","src":"4750:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3575,"name":"Identifier","src":"4758:3:5"}],"id":3576,"name":"MemberAccess","src":"4758:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3557,"type":"bytes memory","value":"returndata"},"id":3577,"name":"Identifier","src":"4769:10:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":3578,"name":"ElementaryTypeNameExpression","src":"4782:4:5"}],"id":3579,"name":"TupleExpression","src":"4781:6:5"}],"id":3580,"name":"FunctionCall","src":"4758:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":3581,"name":"Literal","src":"4790:44:5"}],"id":3582,"name":"FunctionCall","src":"4750:85:5"}],"id":3583,"name":"ExpressionStatement","src":"4750:85:5"}],"id":3584,"name":"Block","src":"4652:194:5"}],"id":3585,"name":"IfStatement","src":"4625:221:5"}],"id":3586,"name":"Block","src":"3826:1026:5"}],"id":3587,"name":"FunctionDefinition","src":"3757:1095:5"}],"id":3588,"name":"ContractDefinition","src":"1715:3139:5"}],"id":3589,"name":"SourceUnit","src":"1161:3694:5"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[3721]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3590,"name":"PragmaDirective","src":"0:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[3721],"name":"SafeMath","scope":3722},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3591,"name":"ElementaryTypeName","src":"847:7:6"}],"id":3592,"name":"VariableDeclaration","src":"847:9:6"},{"attributes":{"constant":false,"name":"b","scope":3615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3593,"name":"ElementaryTypeName","src":"858:7:6"}],"id":3594,"name":"VariableDeclaration","src":"858:9:6"}],"id":3595,"name":"ParameterList","src":"846:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3596,"name":"ElementaryTypeName","src":"892:7:6"}],"id":3597,"name":"VariableDeclaration","src":"892:7:6"}],"id":3598,"name":"ParameterList","src":"891:9:6"},{"children":[{"attributes":{"assignments":[3600]},"children":[{"attributes":{"constant":false,"name":"c","scope":3614,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3599,"name":"ElementaryTypeName","src":"911:7:6"}],"id":3600,"name":"VariableDeclaration","src":"911:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3592,"type":"uint256","value":"a"},"id":3601,"name":"Identifier","src":"923:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3594,"type":"uint256","value":"b"},"id":3602,"name":"Identifier","src":"927:1:6"}],"id":3603,"name":"BinaryOperation","src":"923:5:6"}],"id":3604,"name":"VariableDeclarationStatement","src":"911:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3605,"name":"Identifier","src":"938:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3600,"type":"uint256","value":"c"},"id":3606,"name":"Identifier","src":"946:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3592,"type":"uint256","value":"a"},"id":3607,"name":"Identifier","src":"951:1:6"}],"id":3608,"name":"BinaryOperation","src":"946:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":3609,"name":"Literal","src":"954:29:6"}],"id":3610,"name":"FunctionCall","src":"938:46:6"}],"id":3611,"name":"ExpressionStatement","src":"938:46:6"},{"attributes":{"functionReturnParameters":3598},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3600,"type":"uint256","value":"c"},"id":3612,"name":"Identifier","src":"1002:1:6"}],"id":3613,"name":"Return","src":"995:8:6"}],"id":3614,"name":"Block","src":"901:109:6"}],"id":3615,"name":"FunctionDefinition","src":"834:176:6"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3616,"name":"ElementaryTypeName","src":"1287:7:6"}],"id":3617,"name":"VariableDeclaration","src":"1287:9:6"},{"attributes":{"constant":false,"name":"b","scope":3640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3618,"name":"ElementaryTypeName","src":"1298:7:6"}],"id":3619,"name":"VariableDeclaration","src":"1298:9:6"}],"id":3620,"name":"ParameterList","src":"1286:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3621,"name":"ElementaryTypeName","src":"1332:7:6"}],"id":3622,"name":"VariableDeclaration","src":"1332:7:6"}],"id":3623,"name":"ParameterList","src":"1331:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3624,"name":"Identifier","src":"1351:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3619,"type":"uint256","value":"b"},"id":3625,"name":"Identifier","src":"1359:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3617,"type":"uint256","value":"a"},"id":3626,"name":"Identifier","src":"1364:1:6"}],"id":3627,"name":"BinaryOperation","src":"1359:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":3628,"name":"Literal","src":"1367:32:6"}],"id":3629,"name":"FunctionCall","src":"1351:49:6"}],"id":3630,"name":"ExpressionStatement","src":"1351:49:6"},{"attributes":{"assignments":[3632]},"children":[{"attributes":{"constant":false,"name":"c","scope":3639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3631,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":3632,"name":"VariableDeclaration","src":"1410:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3617,"type":"uint256","value":"a"},"id":3633,"name":"Identifier","src":"1422:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3619,"type":"uint256","value":"b"},"id":3634,"name":"Identifier","src":"1426:1:6"}],"id":3635,"name":"BinaryOperation","src":"1422:5:6"}],"id":3636,"name":"VariableDeclarationStatement","src":"1410:17:6"},{"attributes":{"functionReturnParameters":3623},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3632,"type":"uint256","value":"c"},"id":3637,"name":"Identifier","src":"1445:1:6"}],"id":3638,"name":"Return","src":"1438:8:6"}],"id":3639,"name":"Block","src":"1341:112:6"}],"id":3640,"name":"FunctionDefinition","src":"1274:179:6"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3641,"name":"ElementaryTypeName","src":"1706:7:6"}],"id":3642,"name":"VariableDeclaration","src":"1706:9:6"},{"attributes":{"constant":false,"name":"b","scope":3674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3643,"name":"ElementaryTypeName","src":"1717:7:6"}],"id":3644,"name":"VariableDeclaration","src":"1717:9:6"}],"id":3645,"name":"ParameterList","src":"1705:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3646,"name":"ElementaryTypeName","src":"1751:7:6"}],"id":3647,"name":"VariableDeclaration","src":"1751:7:6"}],"id":3648,"name":"ParameterList","src":"1750:9:6"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3642,"type":"uint256","value":"a"},"id":3649,"name":"Identifier","src":"1991:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3650,"name":"Literal","src":"1996:1:6"}],"id":3651,"name":"BinaryOperation","src":"1991:6:6"},{"children":[{"attributes":{"functionReturnParameters":3648},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3652,"name":"Literal","src":"2020:1:6"}],"id":3653,"name":"Return","src":"2013:8:6"}],"id":3654,"name":"Block","src":"1999:33:6"}],"id":3655,"name":"IfStatement","src":"1987:45:6"},{"attributes":{"assignments":[3657]},"children":[{"attributes":{"constant":false,"name":"c","scope":3673,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3656,"name":"ElementaryTypeName","src":"2042:7:6"}],"id":3657,"name":"VariableDeclaration","src":"2042:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3642,"type":"uint256","value":"a"},"id":3658,"name":"Identifier","src":"2054:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3644,"type":"uint256","value":"b"},"id":3659,"name":"Identifier","src":"2058:1:6"}],"id":3660,"name":"BinaryOperation","src":"2054:5:6"}],"id":3661,"name":"VariableDeclarationStatement","src":"2042:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3662,"name":"Identifier","src":"2069:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"c"},"id":3663,"name":"Identifier","src":"2077:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3642,"type":"uint256","value":"a"},"id":3664,"name":"Identifier","src":"2081:1:6"}],"id":3665,"name":"BinaryOperation","src":"2077:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3644,"type":"uint256","value":"b"},"id":3666,"name":"Identifier","src":"2086:1:6"}],"id":3667,"name":"BinaryOperation","src":"2077:10:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":3668,"name":"Literal","src":"2089:35:6"}],"id":3669,"name":"FunctionCall","src":"2069:56:6"}],"id":3670,"name":"ExpressionStatement","src":"2069:56:6"},{"attributes":{"functionReturnParameters":3648},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"c"},"id":3671,"name":"Identifier","src":"2143:1:6"}],"id":3672,"name":"Return","src":"2136:8:6"}],"id":3673,"name":"Block","src":"1760:391:6"}],"id":3674,"name":"FunctionDefinition","src":"1693:458:6"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3699,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3675,"name":"ElementaryTypeName","src":"2619:7:6"}],"id":3676,"name":"VariableDeclaration","src":"2619:9:6"},{"attributes":{"constant":false,"name":"b","scope":3699,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3677,"name":"ElementaryTypeName","src":"2630:7:6"}],"id":3678,"name":"VariableDeclaration","src":"2630:9:6"}],"id":3679,"name":"ParameterList","src":"2618:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3699,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3680,"name":"ElementaryTypeName","src":"2664:7:6"}],"id":3681,"name":"VariableDeclaration","src":"2664:7:6"}],"id":3682,"name":"ParameterList","src":"2663:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3683,"name":"Identifier","src":"2749:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3678,"type":"uint256","value":"b"},"id":3684,"name":"Identifier","src":"2757:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3685,"name":"Literal","src":"2761:1:6"}],"id":3686,"name":"BinaryOperation","src":"2757:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":3687,"name":"Literal","src":"2764:28:6"}],"id":3688,"name":"FunctionCall","src":"2749:44:6"}],"id":3689,"name":"ExpressionStatement","src":"2749:44:6"},{"attributes":{"assignments":[3691]},"children":[{"attributes":{"constant":false,"name":"c","scope":3698,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3690,"name":"ElementaryTypeName","src":"2803:7:6"}],"id":3691,"name":"VariableDeclaration","src":"2803:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3676,"type":"uint256","value":"a"},"id":3692,"name":"Identifier","src":"2815:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3678,"type":"uint256","value":"b"},"id":3693,"name":"Identifier","src":"2819:1:6"}],"id":3694,"name":"BinaryOperation","src":"2815:5:6"}],"id":3695,"name":"VariableDeclarationStatement","src":"2803:17:6"},{"attributes":{"functionReturnParameters":3682},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3691,"type":"uint256","value":"c"},"id":3696,"name":"Identifier","src":"2924:1:6"}],"id":3697,"name":"Return","src":"2917:8:6"}],"id":3698,"name":"Block","src":"2673:259:6"}],"id":3699,"name":"FunctionDefinition","src":"2606:326:6"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3700,"name":"ElementaryTypeName","src":"3389:7:6"}],"id":3701,"name":"VariableDeclaration","src":"3389:9:6"},{"attributes":{"constant":false,"name":"b","scope":3720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3702,"name":"ElementaryTypeName","src":"3400:7:6"}],"id":3703,"name":"VariableDeclaration","src":"3400:9:6"}],"id":3704,"name":"ParameterList","src":"3388:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3705,"name":"ElementaryTypeName","src":"3434:7:6"}],"id":3706,"name":"VariableDeclaration","src":"3434:7:6"}],"id":3707,"name":"ParameterList","src":"3433:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3708,"name":"Identifier","src":"3453:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3703,"type":"uint256","value":"b"},"id":3709,"name":"Identifier","src":"3461:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3710,"name":"Literal","src":"3466:1:6"}],"id":3711,"name":"BinaryOperation","src":"3461:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":3712,"name":"Literal","src":"3469:26:6"}],"id":3713,"name":"FunctionCall","src":"3453:43:6"}],"id":3714,"name":"ExpressionStatement","src":"3453:43:6"},{"attributes":{"functionReturnParameters":3707},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3701,"type":"uint256","value":"a"},"id":3715,"name":"Identifier","src":"3513:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3703,"type":"uint256","value":"b"},"id":3716,"name":"Identifier","src":"3517:1:6"}],"id":3717,"name":"BinaryOperation","src":"3513:5:6"}],"id":3718,"name":"Return","src":"3506:12:6"}],"id":3719,"name":"Block","src":"3443:82:6"}],"id":3720,"name":"FunctionDefinition","src":"3376:149:6"}],"id":3721,"name":"ContractDefinition","src":"589:2938:6"}],"id":3722,"name":"SourceUnit","src":"0:3528:6"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[4848]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4713,"name":"PragmaDirective","src":"1400:23:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4848],"name":"ENS","scope":4849},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4721,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4714,"name":"ElementaryTypeName","src":"1534:7:7"}],"id":4715,"name":"VariableDeclaration","src":"1534:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":4721,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4716,"name":"ElementaryTypeName","src":"1557:7:7"}],"id":4717,"name":"VariableDeclaration","src":"1557:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4721,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4718,"name":"ElementaryTypeName","src":"1581:7:7"}],"id":4719,"name":"VariableDeclaration","src":"1581:14:7"}],"id":4720,"name":"ParameterList","src":"1533:63:7"}],"id":4721,"name":"EventDefinition","src":"1519:78:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4727,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4722,"name":"ElementaryTypeName","src":"1695:7:7"}],"id":4723,"name":"VariableDeclaration","src":"1695:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4727,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4724,"name":"ElementaryTypeName","src":"1718:7:7"}],"id":4725,"name":"VariableDeclaration","src":"1718:14:7"}],"id":4726,"name":"ParameterList","src":"1694:39:7"}],"id":4727,"name":"EventDefinition","src":"1680:54:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4733,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4728,"name":"ElementaryTypeName","src":"1810:7:7"}],"id":4729,"name":"VariableDeclaration","src":"1810:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":4733,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4730,"name":"ElementaryTypeName","src":"1833:7:7"}],"id":4731,"name":"VariableDeclaration","src":"1833:17:7"}],"id":4732,"name":"ParameterList","src":"1809:42:7"}],"id":4733,"name":"EventDefinition","src":"1792:60:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4739,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4734,"name":"ElementaryTypeName","src":"1916:7:7"}],"id":4735,"name":"VariableDeclaration","src":"1916:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":4739,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4736,"name":"ElementaryTypeName","src":"1939:6:7"}],"id":4737,"name":"VariableDeclaration","src":"1939:11:7"}],"id":4738,"name":"ParameterList","src":"1915:36:7"}],"id":4739,"name":"EventDefinition","src":"1903:49:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":4747,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4740,"name":"ElementaryTypeName","src":"2031:7:7"}],"id":4741,"name":"VariableDeclaration","src":"2031:22:7"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":4747,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4742,"name":"ElementaryTypeName","src":"2055:7:7"}],"id":4743,"name":"VariableDeclaration","src":"2055:25:7"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":4747,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4744,"name":"ElementaryTypeName","src":"2082:4:7"}],"id":4745,"name":"VariableDeclaration","src":"2082:14:7"}],"id":4746,"name":"ParameterList","src":"2030:67:7"}],"id":4747,"name":"EventDefinition","src":"2010:88:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4758,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4748,"name":"ElementaryTypeName","src":"2123:7:7"}],"id":4749,"name":"VariableDeclaration","src":"2123:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4758,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4750,"name":"ElementaryTypeName","src":"2138:7:7"}],"id":4751,"name":"VariableDeclaration","src":"2138:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4758,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4752,"name":"ElementaryTypeName","src":"2154:7:7"}],"id":4753,"name":"VariableDeclaration","src":"2154:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4758,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4754,"name":"ElementaryTypeName","src":"2173:6:7"}],"id":4755,"name":"VariableDeclaration","src":"2173:11:7"}],"id":4756,"name":"ParameterList","src":"2122:63:7"},{"attributes":{"parameters":[null]},"children":[],"id":4757,"name":"ParameterList","src":"2194:0:7"}],"id":4758,"name":"FunctionDefinition","src":"2104:91:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4771,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4759,"name":"ElementaryTypeName","src":"2226:7:7"}],"id":4760,"name":"VariableDeclaration","src":"2226:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4771,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4761,"name":"ElementaryTypeName","src":"2241:7:7"}],"id":4762,"name":"VariableDeclaration","src":"2241:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4771,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4763,"name":"ElementaryTypeName","src":"2257:7:7"}],"id":4764,"name":"VariableDeclaration","src":"2257:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4771,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4765,"name":"ElementaryTypeName","src":"2273:7:7"}],"id":4766,"name":"VariableDeclaration","src":"2273:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4771,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4767,"name":"ElementaryTypeName","src":"2292:6:7"}],"id":4768,"name":"VariableDeclaration","src":"2292:11:7"}],"id":4769,"name":"ParameterList","src":"2225:79:7"},{"attributes":{"parameters":[null]},"children":[],"id":4770,"name":"ParameterList","src":"2313:0:7"}],"id":4771,"name":"FunctionDefinition","src":"2200:114:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4772,"name":"ElementaryTypeName","src":"2344:7:7"}],"id":4773,"name":"VariableDeclaration","src":"2344:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4774,"name":"ElementaryTypeName","src":"2359:7:7"}],"id":4775,"name":"VariableDeclaration","src":"2359:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4782,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4776,"name":"ElementaryTypeName","src":"2375:7:7"}],"id":4777,"name":"VariableDeclaration","src":"2375:14:7"}],"id":4778,"name":"ParameterList","src":"2343:47:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4779,"name":"ElementaryTypeName","src":"2408:7:7"}],"id":4780,"name":"VariableDeclaration","src":"2408:7:7"}],"id":4781,"name":"ParameterList","src":"2407:9:7"}],"id":4782,"name":"FunctionDefinition","src":"2319:98:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4789,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4783,"name":"ElementaryTypeName","src":"2443:7:7"}],"id":4784,"name":"VariableDeclaration","src":"2443:13:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4789,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4785,"name":"ElementaryTypeName","src":"2458:7:7"}],"id":4786,"name":"VariableDeclaration","src":"2458:17:7"}],"id":4787,"name":"ParameterList","src":"2442:34:7"},{"attributes":{"parameters":[null]},"children":[],"id":4788,"name":"ParameterList","src":"2485:0:7"}],"id":4789,"name":"FunctionDefinition","src":"2422:64:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4796,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4790,"name":"ElementaryTypeName","src":"2509:7:7"}],"id":4791,"name":"VariableDeclaration","src":"2509:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4796,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4792,"name":"ElementaryTypeName","src":"2524:7:7"}],"id":4793,"name":"VariableDeclaration","src":"2524:14:7"}],"id":4794,"name":"ParameterList","src":"2508:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":4795,"name":"ParameterList","src":"2548:0:7"}],"id":4796,"name":"FunctionDefinition","src":"2491:58:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4797,"name":"ElementaryTypeName","src":"2570:7:7"}],"id":4798,"name":"VariableDeclaration","src":"2570:13:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4803,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4799,"name":"ElementaryTypeName","src":"2585:6:7"}],"id":4800,"name":"VariableDeclaration","src":"2585:11:7"}],"id":4801,"name":"ParameterList","src":"2569:28:7"},{"attributes":{"parameters":[null]},"children":[],"id":4802,"name":"ParameterList","src":"2606:0:7"}],"id":4803,"name":"FunctionDefinition","src":"2554:53:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":4810,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4804,"name":"ElementaryTypeName","src":"2639:7:7"}],"id":4805,"name":"VariableDeclaration","src":"2639:17:7"},{"attributes":{"constant":false,"name":"_approved","scope":4810,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4806,"name":"ElementaryTypeName","src":"2658:4:7"}],"id":4807,"name":"VariableDeclaration","src":"2658:14:7"}],"id":4808,"name":"ParameterList","src":"2638:35:7"},{"attributes":{"parameters":[null]},"children":[],"id":4809,"name":"ParameterList","src":"2682:0:7"}],"id":4810,"name":"FunctionDefinition","src":"2612:71:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4817,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4811,"name":"ElementaryTypeName","src":"2703:7:7"}],"id":4812,"name":"VariableDeclaration","src":"2703:13:7"}],"id":4813,"name":"ParameterList","src":"2702:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4817,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4814,"name":"ElementaryTypeName","src":"2741:7:7"}],"id":4815,"name":"VariableDeclaration","src":"2741:7:7"}],"id":4816,"name":"ParameterList","src":"2740:9:7"}],"id":4817,"name":"FunctionDefinition","src":"2688:62:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4824,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4818,"name":"ElementaryTypeName","src":"2773:7:7"}],"id":4819,"name":"VariableDeclaration","src":"2773:13:7"}],"id":4820,"name":"ParameterList","src":"2772:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4824,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4821,"name":"ElementaryTypeName","src":"2811:7:7"}],"id":4822,"name":"VariableDeclaration","src":"2811:7:7"}],"id":4823,"name":"ParameterList","src":"2810:9:7"}],"id":4824,"name":"FunctionDefinition","src":"2755:65:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4831,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4825,"name":"ElementaryTypeName","src":"2838:7:7"}],"id":4826,"name":"VariableDeclaration","src":"2838:13:7"}],"id":4827,"name":"ParameterList","src":"2837:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4831,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4828,"name":"ElementaryTypeName","src":"2876:6:7"}],"id":4829,"name":"VariableDeclaration","src":"2876:6:7"}],"id":4830,"name":"ParameterList","src":"2875:8:7"}],"id":4831,"name":"FunctionDefinition","src":"2825:59:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4838,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4832,"name":"ElementaryTypeName","src":"2911:7:7"}],"id":4833,"name":"VariableDeclaration","src":"2911:13:7"}],"id":4834,"name":"ParameterList","src":"2910:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4838,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4835,"name":"ElementaryTypeName","src":"2949:4:7"}],"id":4836,"name":"VariableDeclaration","src":"2949:4:7"}],"id":4837,"name":"ParameterList","src":"2948:6:7"}],"id":4838,"name":"FunctionDefinition","src":"2889:66:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":4847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4839,"name":"ElementaryTypeName","src":"2986:7:7"}],"id":4840,"name":"VariableDeclaration","src":"2986:14:7"},{"attributes":{"constant":false,"name":"_operator","scope":4847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4841,"name":"ElementaryTypeName","src":"3002:7:7"}],"id":4842,"name":"VariableDeclaration","src":"3002:17:7"}],"id":4843,"name":"ParameterList","src":"2985:35:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4847,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4844,"name":"ElementaryTypeName","src":"3044:4:7"}],"id":4845,"name":"VariableDeclaration","src":"3044:4:7"}],"id":4846,"name":"ParameterList","src":"3043:6:7"}],"id":4847,"name":"FunctionDefinition","src":"2960:90:7"}],"id":4848,"name":"ContractDefinition","src":"1425:1627:7"}],"id":4849,"name":"SourceUnit","src":"1400:1653:7"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[10522]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9803,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[10522],"name":"ENSBytesUtils","scope":10523},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9825,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9804,"name":"ElementaryTypeName","src":"325:5:8"}],"id":9805,"name":"VariableDeclaration","src":"325:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9825,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9806,"name":"ElementaryTypeName","src":"344:4:8"}],"id":9807,"name":"VariableDeclaration","src":"344:11:8"},{"attributes":{"constant":false,"name":"len","scope":9825,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9808,"name":"ElementaryTypeName","src":"357:4:8"}],"id":9809,"name":"VariableDeclaration","src":"357:8:8"}],"id":9810,"name":"ParameterList","src":"324:42:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9825,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9811,"name":"ElementaryTypeName","src":"390:7:8"}],"id":9812,"name":"VariableDeclaration","src":"390:11:8"}],"id":9813,"name":"ParameterList","src":"389:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":9814,"name":"Identifier","src":"413:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9807,"type":"uint256","value":"offset"},"id":9815,"name":"Identifier","src":"421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9809,"type":"uint256","value":"len"},"id":9816,"name":"Identifier","src":"430:3:8"}],"id":9817,"name":"BinaryOperation","src":"421:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9805,"type":"bytes memory","value":"self"},"id":9818,"name":"Identifier","src":"437:4:8"}],"id":9819,"name":"MemberAccess","src":"437:11:8"}],"id":9820,"name":"BinaryOperation","src":"421:27:8"}],"id":9821,"name":"FunctionCall","src":"413:36:8"}],"id":9822,"name":"ExpressionStatement","src":"413:36:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9812,"isOffset":false,"isSlot":false,"src":"482:3:8","valueSize":1}},{"self":{"declaration":9805,"isOffset":false,"isSlot":false,"src":"507:4:8","valueSize":1}},{"offset":{"declaration":9807,"isOffset":false,"isSlot":false,"src":"518:6:8","valueSize":1}},{"len":{"declaration":9809,"isOffset":false,"isSlot":false,"src":"527:3:8","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":9823,"name":"InlineAssembly","src":"459:82:8"}],"id":9824,"name":"Block","src":"403:144:8"}],"id":9825,"name":"FunctionDefinition","src":"309:238:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9846,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9826,"name":"ElementaryTypeName","src":"920:5:8"}],"id":9827,"name":"VariableDeclaration","src":"920:17:8"},{"attributes":{"constant":false,"name":"other","scope":9846,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9828,"name":"ElementaryTypeName","src":"939:5:8"}],"id":9829,"name":"VariableDeclaration","src":"939:18:8"}],"id":9830,"name":"ParameterList","src":"919:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9846,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9831,"name":"ElementaryTypeName","src":"982:3:8"}],"id":9832,"name":"VariableDeclaration","src":"982:3:8"}],"id":9833,"name":"ParameterList","src":"981:5:8"},{"children":[{"attributes":{"functionReturnParameters":9833},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9846,9978],"referencedDeclaration":9978,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":9834,"name":"Identifier","src":"1004:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9827,"type":"bytes memory","value":"self"},"id":9835,"name":"Identifier","src":"1012:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9836,"name":"Literal","src":"1018:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9827,"type":"bytes memory","value":"self"},"id":9837,"name":"Identifier","src":"1021:4:8"}],"id":9838,"name":"MemberAccess","src":"1021:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9829,"type":"bytes memory","value":"other"},"id":9839,"name":"Identifier","src":"1034:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9840,"name":"Literal","src":"1041:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9829,"type":"bytes memory","value":"other"},"id":9841,"name":"Identifier","src":"1044:5:8"}],"id":9842,"name":"MemberAccess","src":"1044:12:8"}],"id":9843,"name":"FunctionCall","src":"1004:53:8"}],"id":9844,"name":"Return","src":"997:60:8"}],"id":9845,"name":"Block","src":"987:77:8"}],"id":9846,"name":"FunctionDefinition","src":"903:161:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9978,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9847,"name":"ElementaryTypeName","src":"1694:5:8"}],"id":9848,"name":"VariableDeclaration","src":"1694:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9978,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9849,"name":"ElementaryTypeName","src":"1713:4:8"}],"id":9850,"name":"VariableDeclaration","src":"1713:11:8"},{"attributes":{"constant":false,"name":"len","scope":9978,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9851,"name":"ElementaryTypeName","src":"1726:4:8"}],"id":9852,"name":"VariableDeclaration","src":"1726:8:8"},{"attributes":{"constant":false,"name":"other","scope":9978,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9853,"name":"ElementaryTypeName","src":"1736:5:8"}],"id":9854,"name":"VariableDeclaration","src":"1736:18:8"},{"attributes":{"constant":false,"name":"otheroffset","scope":9978,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9855,"name":"ElementaryTypeName","src":"1756:4:8"}],"id":9856,"name":"VariableDeclaration","src":"1756:16:8"},{"attributes":{"constant":false,"name":"otherlen","scope":9978,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9857,"name":"ElementaryTypeName","src":"1774:4:8"}],"id":9858,"name":"VariableDeclaration","src":"1774:13:8"}],"id":9859,"name":"ParameterList","src":"1693:95:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9978,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9860,"name":"ElementaryTypeName","src":"1812:3:8"}],"id":9861,"name":"VariableDeclaration","src":"1812:3:8"}],"id":9862,"name":"ParameterList","src":"1811:5:8"},{"children":[{"attributes":{"assignments":[9864]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":9977,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9863,"name":"ElementaryTypeName","src":"1827:4:8"}],"id":9864,"name":"VariableDeclaration","src":"1827:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9852,"type":"uint256","value":"len"},"id":9865,"name":"Identifier","src":"1843:3:8"}],"id":9866,"name":"VariableDeclarationStatement","src":"1827:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9858,"type":"uint256","value":"otherlen"},"id":9867,"name":"Identifier","src":"1860:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9852,"type":"uint256","value":"len"},"id":9868,"name":"Identifier","src":"1871:3:8"}],"id":9869,"name":"BinaryOperation","src":"1860:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"uint256","value":"shortest"},"id":9870,"name":"Identifier","src":"1884:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9858,"type":"uint256","value":"otherlen"},"id":9871,"name":"Identifier","src":"1895:8:8"}],"id":9872,"name":"Assignment","src":"1884:19:8"}],"id":9873,"name":"ExpressionStatement","src":"1884:19:8"}],"id":9874,"name":"IfStatement","src":"1856:47:8"},{"attributes":{"assignments":[9876],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":9977,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9875,"name":"ElementaryTypeName","src":"1914:4:8"}],"id":9876,"name":"VariableDeclaration","src":"1914:12:8"}],"id":9877,"name":"VariableDeclarationStatement","src":"1914:12:8"},{"attributes":{"assignments":[9879],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":9977,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9878,"name":"ElementaryTypeName","src":"1936:4:8"}],"id":9879,"name":"VariableDeclaration","src":"1936:13:8"}],"id":9880,"name":"VariableDeclarationStatement","src":"1936:13:8"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":9876,"isOffset":false,"isSlot":false,"src":"1983:7:8","valueSize":1}},{"otherptr":{"declaration":9879,"isOffset":false,"isSlot":false,"src":"2033:8:8","valueSize":1}},{"offset":{"declaration":9850,"isOffset":false,"isSlot":false,"src":"2008:6:8","valueSize":1}},{"self":{"declaration":9848,"isOffset":false,"isSlot":false,"src":"1998:4:8","valueSize":1}},{"otheroffset":{"declaration":9856,"isOffset":false,"isSlot":false,"src":"2060:11:8","valueSize":1}},{"other":{"declaration":9854,"isOffset":false,"isSlot":false,"src":"2049:5:8","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":9881,"name":"InlineAssembly","src":"1960:127:8"},{"children":[{"attributes":{"assignments":[9883]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9882,"name":"ElementaryTypeName","src":"2101:4:8"}],"id":9883,"name":"VariableDeclaration","src":"2101:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9884,"name":"Literal","src":"2112:1:8"}],"id":9885,"name":"VariableDeclarationStatement","src":"2101:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9883,"type":"uint256","value":"idx"},"id":9886,"name":"Identifier","src":"2115:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"uint256","value":"shortest"},"id":9887,"name":"Identifier","src":"2121:8:8"}],"id":9888,"name":"BinaryOperation","src":"2115:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9883,"type":"uint256","value":"idx"},"id":9889,"name":"Identifier","src":"2131:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9890,"name":"Literal","src":"2138:2:8"}],"id":9891,"name":"Assignment","src":"2131:9:8"}],"id":9892,"name":"ExpressionStatement","src":"2131:9:8"},{"children":[{"attributes":{"assignments":[9894],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":9967,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9893,"name":"ElementaryTypeName","src":"2156:4:8"}],"id":9894,"name":"VariableDeclaration","src":"2156:6:8"}],"id":9895,"name":"VariableDeclarationStatement","src":"2156:6:8"},{"attributes":{"assignments":[9897],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":9967,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9896,"name":"ElementaryTypeName","src":"2176:4:8"}],"id":9897,"name":"VariableDeclaration","src":"2176:6:8"}],"id":9898,"name":"VariableDeclarationStatement","src":"2176:6:8"},{"attributes":{"externalReferences":[{"a":{"declaration":9894,"isOffset":false,"isSlot":false,"src":"2223:1:8","valueSize":1}},{"selfptr":{"declaration":9876,"isOffset":false,"isSlot":false,"src":"2234:7:8","valueSize":1}},{"b":{"declaration":9897,"isOffset":false,"isSlot":false,"src":"2259:1:8","valueSize":1}},{"otherptr":{"declaration":9879,"isOffset":false,"isSlot":false,"src":"2270:8:8","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":9899,"name":"InlineAssembly","src":"2196:97:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9894,"type":"uint256","value":"a"},"id":9900,"name":"Identifier","src":"2310:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9897,"type":"uint256","value":"b"},"id":9901,"name":"Identifier","src":"2315:1:8"}],"id":9902,"name":"BinaryOperation","src":"2310:6:8"},{"children":[{"attributes":{"assignments":[9904],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":9957,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9903,"name":"ElementaryTypeName","src":"2397:4:8"}],"id":9904,"name":"VariableDeclaration","src":"2397:9:8"}],"id":9905,"name":"VariableDeclarationStatement","src":"2397:9:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"uint256","value":"shortest"},"id":9906,"name":"Identifier","src":"2428:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9907,"name":"Literal","src":"2439:2:8"}],"id":9908,"name":"BinaryOperation","src":"2428:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9904,"type":"uint256","value":"mask"},"id":9909,"name":"Identifier","src":"2465:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":9910,"name":"ElementaryTypeNameExpression","src":"2472:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9911,"name":"Literal","src":"2482:1:8"}],"id":9912,"name":"UnaryOperation","src":"2480:3:8"}],"id":9913,"name":"FunctionCall","src":"2472:12:8"}],"id":9914,"name":"Assignment","src":"2465:19:8"}],"id":9915,"name":"ExpressionStatement","src":"2465:19:8"}],"id":9916,"name":"Block","src":"2443:80:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9904,"type":"uint256","value":"mask"},"id":9917,"name":"Identifier","src":"2551:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9918,"name":"Literal","src":"2560:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9919,"name":"Literal","src":"2566:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9920,"name":"Literal","src":"2571:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"uint256","value":"shortest"},"id":9921,"name":"Identifier","src":"2576:8:8"}],"id":9922,"name":"BinaryOperation","src":"2571:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9883,"type":"uint256","value":"idx"},"id":9923,"name":"Identifier","src":"2587:3:8"}],"id":9924,"name":"BinaryOperation","src":"2571:19:8"}],"id":9925,"name":"TupleExpression","src":"2570:21:8"}],"id":9926,"name":"BinaryOperation","src":"2566:25:8"}],"id":9927,"name":"TupleExpression","src":"2565:27:8"}],"id":9928,"name":"BinaryOperation","src":"2560:32:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9929,"name":"Literal","src":"2595:1:8"}],"id":9930,"name":"BinaryOperation","src":"2560:36:8"}],"id":9931,"name":"TupleExpression","src":"2559:38:8"}],"id":9932,"name":"UnaryOperation","src":"2558:39:8"}],"id":9933,"name":"Assignment","src":"2551:46:8"}],"id":9934,"name":"ExpressionStatement","src":"2551:46:8"}],"id":9935,"name":"Block","src":"2529:87:8"}],"id":9936,"name":"IfStatement","src":"2424:192:8"},{"attributes":{"assignments":[9938]},"children":[{"attributes":{"constant":false,"name":"diff","scope":9957,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9937,"name":"ElementaryTypeName","src":"2633:4:8"}],"id":9938,"name":"VariableDeclaration","src":"2633:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9894,"type":"uint256","value":"a"},"id":9939,"name":"Identifier","src":"2646:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9904,"type":"uint256","value":"mask"},"id":9940,"name":"Identifier","src":"2650:4:8"}],"id":9941,"name":"BinaryOperation","src":"2646:8:8"}],"id":9942,"name":"TupleExpression","src":"2645:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9897,"type":"uint256","value":"b"},"id":9943,"name":"Identifier","src":"2659:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9904,"type":"uint256","value":"mask"},"id":9944,"name":"Identifier","src":"2663:4:8"}],"id":9945,"name":"BinaryOperation","src":"2659:8:8"}],"id":9946,"name":"TupleExpression","src":"2658:10:8"}],"id":9947,"name":"BinaryOperation","src":"2645:23:8"}],"id":9948,"name":"VariableDeclarationStatement","src":"2633:35:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9938,"type":"uint256","value":"diff"},"id":9949,"name":"Identifier","src":"2690:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9950,"name":"Literal","src":"2698:1:8"}],"id":9951,"name":"BinaryOperation","src":"2690:9:8"},{"attributes":{"functionReturnParameters":9862},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9952,"name":"ElementaryTypeNameExpression","src":"2724:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9938,"type":"uint256","value":"diff"},"id":9953,"name":"Identifier","src":"2728:4:8"}],"id":9954,"name":"FunctionCall","src":"2724:9:8"}],"id":9955,"name":"Return","src":"2717:16:8"}],"id":9956,"name":"IfStatement","src":"2686:47:8"}],"id":9957,"name":"Block","src":"2318:430:8"}],"id":9958,"name":"IfStatement","src":"2306:442:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9876,"type":"uint256","value":"selfptr"},"id":9959,"name":"Identifier","src":"2761:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9960,"name":"Literal","src":"2772:2:8"}],"id":9961,"name":"Assignment","src":"2761:13:8"}],"id":9962,"name":"ExpressionStatement","src":"2761:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9879,"type":"uint256","value":"otherptr"},"id":9963,"name":"Identifier","src":"2788:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9964,"name":"Literal","src":"2800:2:8"}],"id":9965,"name":"Assignment","src":"2788:14:8"}],"id":9966,"name":"ExpressionStatement","src":"2788:14:8"}],"id":9967,"name":"Block","src":"2142:671:8"}],"id":9968,"name":"ForStatement","src":"2096:717:8"},{"attributes":{"functionReturnParameters":9862},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9969,"name":"ElementaryTypeNameExpression","src":"2830:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9852,"type":"uint256","value":"len"},"id":9970,"name":"Identifier","src":"2834:3:8"}],"id":9971,"name":"FunctionCall","src":"2830:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9972,"name":"ElementaryTypeNameExpression","src":"2841:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9858,"type":"uint256","value":"otherlen"},"id":9973,"name":"Identifier","src":"2845:8:8"}],"id":9974,"name":"FunctionCall","src":"2841:13:8"}],"id":9975,"name":"BinaryOperation","src":"2830:24:8"}],"id":9976,"name":"Return","src":"2823:31:8"}],"id":9977,"name":"Block","src":"1817:1044:8"}],"id":9978,"name":"FunctionDefinition","src":"1677:1184:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10006,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9979,"name":"ElementaryTypeName","src":"3295:5:8"}],"id":9980,"name":"VariableDeclaration","src":"3295:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9981,"name":"ElementaryTypeName","src":"3314:4:8"}],"id":9982,"name":"VariableDeclaration","src":"3314:11:8"},{"attributes":{"constant":false,"name":"other","scope":10006,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9983,"name":"ElementaryTypeName","src":"3327:5:8"}],"id":9984,"name":"VariableDeclaration","src":"3327:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":10006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9985,"name":"ElementaryTypeName","src":"3347:4:8"}],"id":9986,"name":"VariableDeclaration","src":"3347:16:8"},{"attributes":{"constant":false,"name":"len","scope":10006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9987,"name":"ElementaryTypeName","src":"3365:4:8"}],"id":9988,"name":"VariableDeclaration","src":"3365:8:8"}],"id":9989,"name":"ParameterList","src":"3294:80:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10006,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9990,"name":"ElementaryTypeName","src":"3398:4:8"}],"id":9991,"name":"VariableDeclaration","src":"3398:4:8"}],"id":9992,"name":"ParameterList","src":"3397:6:8"},{"children":[{"attributes":{"functionReturnParameters":9992},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9825,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9993,"name":"Identifier","src":"3421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9980,"type":"bytes memory","value":"self"},"id":9994,"name":"Identifier","src":"3428:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9982,"type":"uint256","value":"offset"},"id":9995,"name":"Identifier","src":"3434:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9988,"type":"uint256","value":"len"},"id":9996,"name":"Identifier","src":"3442:3:8"}],"id":9997,"name":"FunctionCall","src":"3421:25:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9825,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9998,"name":"Identifier","src":"3450:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9984,"type":"bytes memory","value":"other"},"id":9999,"name":"Identifier","src":"3457:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9986,"type":"uint256","value":"otherOffset"},"id":10000,"name":"Identifier","src":"3464:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9988,"type":"uint256","value":"len"},"id":10001,"name":"Identifier","src":"3477:3:8"}],"id":10002,"name":"FunctionCall","src":"3450:31:8"}],"id":10003,"name":"BinaryOperation","src":"3421:60:8"}],"id":10004,"name":"Return","src":"3414:67:8"}],"id":10005,"name":"Block","src":"3404:84:8"}],"id":10006,"name":"FunctionDefinition","src":"3279:209:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10038,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10007,"name":"ElementaryTypeName","src":"3887:5:8"}],"id":10008,"name":"VariableDeclaration","src":"3887:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10038,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10009,"name":"ElementaryTypeName","src":"3906:4:8"}],"id":10010,"name":"VariableDeclaration","src":"3906:11:8"},{"attributes":{"constant":false,"name":"other","scope":10038,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10011,"name":"ElementaryTypeName","src":"3919:5:8"}],"id":10012,"name":"VariableDeclaration","src":"3919:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":10038,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10013,"name":"ElementaryTypeName","src":"3939:4:8"}],"id":10014,"name":"VariableDeclaration","src":"3939:16:8"}],"id":10015,"name":"ParameterList","src":"3886:70:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10038,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10016,"name":"ElementaryTypeName","src":"3980:4:8"}],"id":10017,"name":"VariableDeclaration","src":"3980:4:8"}],"id":10018,"name":"ParameterList","src":"3979:6:8"},{"children":[{"attributes":{"functionReturnParameters":10018},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9825,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":10019,"name":"Identifier","src":"4003:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10008,"type":"bytes memory","value":"self"},"id":10020,"name":"Identifier","src":"4010:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"offset"},"id":10021,"name":"Identifier","src":"4016:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10008,"type":"bytes memory","value":"self"},"id":10022,"name":"Identifier","src":"4024:4:8"}],"id":10023,"name":"MemberAccess","src":"4024:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"offset"},"id":10024,"name":"Identifier","src":"4038:6:8"}],"id":10025,"name":"BinaryOperation","src":"4024:20:8"}],"id":10026,"name":"FunctionCall","src":"4003:42:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9825,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":10027,"name":"Identifier","src":"4049:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10012,"type":"bytes memory","value":"other"},"id":10028,"name":"Identifier","src":"4056:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10014,"type":"uint256","value":"otherOffset"},"id":10029,"name":"Identifier","src":"4063:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10012,"type":"bytes memory","value":"other"},"id":10030,"name":"Identifier","src":"4076:5:8"}],"id":10031,"name":"MemberAccess","src":"4076:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10014,"type":"uint256","value":"otherOffset"},"id":10032,"name":"Identifier","src":"4091:11:8"}],"id":10033,"name":"BinaryOperation","src":"4076:26:8"}],"id":10034,"name":"FunctionCall","src":"4049:54:8"}],"id":10035,"name":"BinaryOperation","src":"4003:100:8"}],"id":10036,"name":"Return","src":"3996:107:8"}],"id":10037,"name":"Block","src":"3986:124:8"}],"id":10038,"name":"FunctionDefinition","src":"3871:239:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10067,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10039,"name":"ElementaryTypeName","src":"4478:5:8"}],"id":10040,"name":"VariableDeclaration","src":"4478:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10067,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10041,"name":"ElementaryTypeName","src":"4497:4:8"}],"id":10042,"name":"VariableDeclaration","src":"4497:11:8"},{"attributes":{"constant":false,"name":"other","scope":10067,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10043,"name":"ElementaryTypeName","src":"4510:5:8"}],"id":10044,"name":"VariableDeclaration","src":"4510:18:8"}],"id":10045,"name":"ParameterList","src":"4477:52:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10067,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10046,"name":"ElementaryTypeName","src":"4553:4:8"}],"id":10047,"name":"VariableDeclaration","src":"4553:4:8"}],"id":10048,"name":"ParameterList","src":"4552:6:8"},{"children":[{"attributes":{"functionReturnParameters":10048},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"bytes memory","value":"self"},"id":10049,"name":"Identifier","src":"4576:4:8"}],"id":10050,"name":"MemberAccess","src":"4576:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10042,"type":"uint256","value":"offset"},"id":10051,"name":"Identifier","src":"4591:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10044,"type":"bytes memory","value":"other"},"id":10052,"name":"Identifier","src":"4600:5:8"}],"id":10053,"name":"MemberAccess","src":"4600:12:8"}],"id":10054,"name":"BinaryOperation","src":"4591:21:8"}],"id":10055,"name":"BinaryOperation","src":"4576:36:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[10006,10038,10067,10092],"referencedDeclaration":10006,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":10056,"name":"Identifier","src":"4616:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"bytes memory","value":"self"},"id":10057,"name":"Identifier","src":"4623:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10042,"type":"uint256","value":"offset"},"id":10058,"name":"Identifier","src":"4629:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10044,"type":"bytes memory","value":"other"},"id":10059,"name":"Identifier","src":"4637:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10060,"name":"Literal","src":"4644:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10044,"type":"bytes memory","value":"other"},"id":10061,"name":"Identifier","src":"4647:5:8"}],"id":10062,"name":"MemberAccess","src":"4647:12:8"}],"id":10063,"name":"FunctionCall","src":"4616:44:8"}],"id":10064,"name":"BinaryOperation","src":"4576:84:8"}],"id":10065,"name":"Return","src":"4569:91:8"}],"id":10066,"name":"Block","src":"4559:108:8"}],"id":10067,"name":"FunctionDefinition","src":"4462:205:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10092,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10068,"name":"ElementaryTypeName","src":"4931:5:8"}],"id":10069,"name":"VariableDeclaration","src":"4931:17:8"},{"attributes":{"constant":false,"name":"other","scope":10092,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10070,"name":"ElementaryTypeName","src":"4950:5:8"}],"id":10071,"name":"VariableDeclaration","src":"4950:18:8"}],"id":10072,"name":"ParameterList","src":"4930:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10092,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10073,"name":"ElementaryTypeName","src":"4992:4:8"}],"id":10074,"name":"VariableDeclaration","src":"4992:4:8"}],"id":10075,"name":"ParameterList","src":"4991:6:8"},{"children":[{"attributes":{"functionReturnParameters":10075},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10069,"type":"bytes memory","value":"self"},"id":10076,"name":"Identifier","src":"5015:4:8"}],"id":10077,"name":"MemberAccess","src":"5015:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10071,"type":"bytes memory","value":"other"},"id":10078,"name":"Identifier","src":"5030:5:8"}],"id":10079,"name":"MemberAccess","src":"5030:12:8"}],"id":10080,"name":"BinaryOperation","src":"5015:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[10006,10038,10067,10092],"referencedDeclaration":10006,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":10081,"name":"Identifier","src":"5046:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10069,"type":"bytes memory","value":"self"},"id":10082,"name":"Identifier","src":"5053:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10083,"name":"Literal","src":"5059:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10071,"type":"bytes memory","value":"other"},"id":10084,"name":"Identifier","src":"5062:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10085,"name":"Literal","src":"5069:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10069,"type":"bytes memory","value":"self"},"id":10086,"name":"Identifier","src":"5072:4:8"}],"id":10087,"name":"MemberAccess","src":"5072:11:8"}],"id":10088,"name":"FunctionCall","src":"5046:38:8"}],"id":10089,"name":"BinaryOperation","src":"5015:69:8"}],"id":10090,"name":"Return","src":"5008:76:8"}],"id":10091,"name":"Block","src":"4998:93:8"}],"id":10092,"name":"FunctionDefinition","src":"4915:176:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10108,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10093,"name":"ElementaryTypeName","src":"5352:5:8"}],"id":10094,"name":"VariableDeclaration","src":"5352:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10108,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10095,"name":"ElementaryTypeName","src":"5371:4:8"}],"id":10096,"name":"VariableDeclaration","src":"5371:8:8"}],"id":10097,"name":"ParameterList","src":"5351:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10108,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":10098,"name":"ElementaryTypeName","src":"5404:5:8"}],"id":10099,"name":"VariableDeclaration","src":"5404:9:8"}],"id":10100,"name":"ParameterList","src":"5403:11:8"},{"children":[{"attributes":{"functionReturnParameters":10100},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10101,"name":"ElementaryTypeNameExpression","src":"5432:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"bytes memory","value":"self"},"id":10102,"name":"Identifier","src":"5438:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"uint256","value":"idx"},"id":10103,"name":"Identifier","src":"5443:3:8"}],"id":10104,"name":"IndexAccess","src":"5438:9:8"}],"id":10105,"name":"FunctionCall","src":"5432:16:8"}],"id":10106,"name":"Return","src":"5425:23:8"}],"id":10107,"name":"Block","src":"5415:40:8"}],"id":10108,"name":"FunctionDefinition","src":"5333:122:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10128,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10109,"name":"ElementaryTypeName","src":"5719:5:8"}],"id":10110,"name":"VariableDeclaration","src":"5719:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10111,"name":"ElementaryTypeName","src":"5738:4:8"}],"id":10112,"name":"VariableDeclaration","src":"5738:8:8"}],"id":10113,"name":"ParameterList","src":"5718:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10128,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":10114,"name":"ElementaryTypeName","src":"5771:6:8"}],"id":10115,"name":"VariableDeclaration","src":"5771:10:8"}],"id":10116,"name":"ParameterList","src":"5770:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10117,"name":"Identifier","src":"5793:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10112,"type":"uint256","value":"idx"},"id":10118,"name":"Identifier","src":"5801:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10119,"name":"Literal","src":"5807:1:8"}],"id":10120,"name":"BinaryOperation","src":"5801:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10110,"type":"bytes memory","value":"self"},"id":10121,"name":"Identifier","src":"5812:4:8"}],"id":10122,"name":"MemberAccess","src":"5812:11:8"}],"id":10123,"name":"BinaryOperation","src":"5801:22:8"}],"id":10124,"name":"FunctionCall","src":"5793:31:8"}],"id":10125,"name":"ExpressionStatement","src":"5793:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":10115,"isOffset":false,"isSlot":false,"src":"5857:3:8","valueSize":1}},{"self":{"declaration":10110,"isOffset":false,"isSlot":false,"src":"5882:4:8","valueSize":1}},{"idx":{"declaration":10112,"isOffset":false,"isSlot":false,"src":"5892:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":10126,"name":"InlineAssembly","src":"5834:82:8"}],"id":10127,"name":"Block","src":"5783:139:8"}],"id":10128,"name":"FunctionDefinition","src":"5699:223:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10148,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10129,"name":"ElementaryTypeName","src":"6186:5:8"}],"id":10130,"name":"VariableDeclaration","src":"6186:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10148,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10131,"name":"ElementaryTypeName","src":"6205:4:8"}],"id":10132,"name":"VariableDeclaration","src":"6205:8:8"}],"id":10133,"name":"ParameterList","src":"6185:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10148,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":10134,"name":"ElementaryTypeName","src":"6238:6:8"}],"id":10135,"name":"VariableDeclaration","src":"6238:10:8"}],"id":10136,"name":"ParameterList","src":"6237:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10137,"name":"Identifier","src":"6260:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10132,"type":"uint256","value":"idx"},"id":10138,"name":"Identifier","src":"6268:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10139,"name":"Literal","src":"6274:1:8"}],"id":10140,"name":"BinaryOperation","src":"6268:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10130,"type":"bytes memory","value":"self"},"id":10141,"name":"Identifier","src":"6279:4:8"}],"id":10142,"name":"MemberAccess","src":"6279:11:8"}],"id":10143,"name":"BinaryOperation","src":"6268:22:8"}],"id":10144,"name":"FunctionCall","src":"6260:31:8"}],"id":10145,"name":"ExpressionStatement","src":"6260:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":10135,"isOffset":false,"isSlot":false,"src":"6324:3:8","valueSize":1}},{"self":{"declaration":10130,"isOffset":false,"isSlot":false,"src":"6349:4:8","valueSize":1}},{"idx":{"declaration":10132,"isOffset":false,"isSlot":false,"src":"6359:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":10146,"name":"InlineAssembly","src":"6301:86:8"}],"id":10147,"name":"Block","src":"6250:143:8"}],"id":10148,"name":"FunctionDefinition","src":"6166:227:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10168,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10149,"name":"ElementaryTypeName","src":"6632:5:8"}],"id":10150,"name":"VariableDeclaration","src":"6632:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10168,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10151,"name":"ElementaryTypeName","src":"6651:4:8"}],"id":10152,"name":"VariableDeclaration","src":"6651:8:8"}],"id":10153,"name":"ParameterList","src":"6631:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10168,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10154,"name":"ElementaryTypeName","src":"6684:7:8"}],"id":10155,"name":"VariableDeclaration","src":"6684:11:8"}],"id":10156,"name":"ParameterList","src":"6683:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10157,"name":"Identifier","src":"6707:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10152,"type":"uint256","value":"idx"},"id":10158,"name":"Identifier","src":"6715:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10159,"name":"Literal","src":"6721:2:8"}],"id":10160,"name":"BinaryOperation","src":"6715:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10150,"type":"bytes memory","value":"self"},"id":10161,"name":"Identifier","src":"6727:4:8"}],"id":10162,"name":"MemberAccess","src":"6727:11:8"}],"id":10163,"name":"BinaryOperation","src":"6715:23:8"}],"id":10164,"name":"FunctionCall","src":"6707:32:8"}],"id":10165,"name":"ExpressionStatement","src":"6707:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":10155,"isOffset":false,"isSlot":false,"src":"6772:3:8","valueSize":1}},{"self":{"declaration":10150,"isOffset":false,"isSlot":false,"src":"6793:4:8","valueSize":1}},{"idx":{"declaration":10152,"isOffset":false,"isSlot":false,"src":"6804:3:8","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":10166,"name":"InlineAssembly","src":"6749:70:8"}],"id":10167,"name":"Block","src":"6697:128:8"}],"id":10168,"name":"FunctionDefinition","src":"6611:214:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10188,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10169,"name":"ElementaryTypeName","src":"7064:5:8"}],"id":10170,"name":"VariableDeclaration","src":"7064:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10171,"name":"ElementaryTypeName","src":"7083:4:8"}],"id":10172,"name":"VariableDeclaration","src":"7083:8:8"}],"id":10173,"name":"ParameterList","src":"7063:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10188,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":10174,"name":"ElementaryTypeName","src":"7116:7:8"}],"id":10175,"name":"VariableDeclaration","src":"7116:11:8"}],"id":10176,"name":"ParameterList","src":"7115:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10177,"name":"Identifier","src":"7139:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10172,"type":"uint256","value":"idx"},"id":10178,"name":"Identifier","src":"7147:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":10179,"name":"Literal","src":"7153:2:8"}],"id":10180,"name":"BinaryOperation","src":"7147:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10170,"type":"bytes memory","value":"self"},"id":10181,"name":"Identifier","src":"7159:4:8"}],"id":10182,"name":"MemberAccess","src":"7159:11:8"}],"id":10183,"name":"BinaryOperation","src":"7147:23:8"}],"id":10184,"name":"FunctionCall","src":"7139:32:8"}],"id":10185,"name":"ExpressionStatement","src":"7139:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":10175,"isOffset":false,"isSlot":false,"src":"7204:3:8","valueSize":1}},{"self":{"declaration":10170,"isOffset":false,"isSlot":false,"src":"7229:4:8","valueSize":1}},{"idx":{"declaration":10172,"isOffset":false,"isSlot":false,"src":"7240:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":10186,"name":"InlineAssembly","src":"7181:143:8"}],"id":10187,"name":"Block","src":"7129:201:8"}],"id":10188,"name":"FunctionDefinition","src":"7043:287:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10216,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10189,"name":"ElementaryTypeName","src":"7606:5:8"}],"id":10190,"name":"VariableDeclaration","src":"7606:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10191,"name":"ElementaryTypeName","src":"7625:4:8"}],"id":10192,"name":"VariableDeclaration","src":"7625:8:8"},{"attributes":{"constant":false,"name":"len","scope":10216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10193,"name":"ElementaryTypeName","src":"7635:4:8"}],"id":10194,"name":"VariableDeclaration","src":"7635:8:8"}],"id":10195,"name":"ParameterList","src":"7605:39:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10216,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10196,"name":"ElementaryTypeName","src":"7668:7:8"}],"id":10197,"name":"VariableDeclaration","src":"7668:11:8"}],"id":10198,"name":"ParameterList","src":"7667:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10199,"name":"Identifier","src":"7691:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10194,"type":"uint256","value":"len"},"id":10200,"name":"Identifier","src":"7699:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10201,"name":"Literal","src":"7706:2:8"}],"id":10202,"name":"BinaryOperation","src":"7699:9:8"}],"id":10203,"name":"FunctionCall","src":"7691:18:8"}],"id":10204,"name":"ExpressionStatement","src":"7691:18:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10205,"name":"Identifier","src":"7719:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10192,"type":"uint256","value":"idx"},"id":10206,"name":"Identifier","src":"7727:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10194,"type":"uint256","value":"len"},"id":10207,"name":"Identifier","src":"7733:3:8"}],"id":10208,"name":"BinaryOperation","src":"7727:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10190,"type":"bytes memory","value":"self"},"id":10209,"name":"Identifier","src":"7740:4:8"}],"id":10210,"name":"MemberAccess","src":"7740:11:8"}],"id":10211,"name":"BinaryOperation","src":"7727:24:8"}],"id":10212,"name":"FunctionCall","src":"7719:33:8"}],"id":10213,"name":"ExpressionStatement","src":"7719:33:8"},{"attributes":{"externalReferences":[{"len":{"declaration":10194,"isOffset":false,"isSlot":false,"src":"7822:3:8","valueSize":1}},{"ret":{"declaration":10197,"isOffset":false,"isSlot":false,"src":"7845:3:8","valueSize":1}},{"self":{"declaration":10190,"isOffset":false,"isSlot":false,"src":"7870:4:8","valueSize":1}},{"idx":{"declaration":10192,"isOffset":false,"isSlot":false,"src":"7881:3:8","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":10214,"name":"InlineAssembly","src":"7762:142:8"}],"id":10215,"name":"Block","src":"7681:229:8"}],"id":10216,"name":"FunctionDefinition","src":"7586:324:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":10256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10217,"name":"ElementaryTypeName","src":"7932:4:8"}],"id":10218,"name":"VariableDeclaration","src":"7932:9:8"},{"attributes":{"constant":false,"name":"src","scope":10256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10219,"name":"ElementaryTypeName","src":"7943:4:8"}],"id":10220,"name":"VariableDeclaration","src":"7943:8:8"},{"attributes":{"constant":false,"name":"len","scope":10256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10221,"name":"ElementaryTypeName","src":"7953:4:8"}],"id":10222,"name":"VariableDeclaration","src":"7953:8:8"}],"id":10223,"name":"ParameterList","src":"7931:31:8"},{"attributes":{"parameters":[null]},"children":[],"id":10224,"name":"ParameterList","src":"7976:0:8"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10222,"type":"uint256","value":"len"},"id":10225,"name":"Identifier","src":"8043:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10226,"name":"Literal","src":"8050:2:8"}],"id":10227,"name":"BinaryOperation","src":"8043:9:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10222,"type":"uint256","value":"len"},"id":10228,"name":"Identifier","src":"8054:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10229,"name":"Literal","src":"8061:2:8"}],"id":10230,"name":"Assignment","src":"8054:9:8"}],"id":10231,"name":"ExpressionStatement","src":"8054:9:8"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":10220,"isOffset":false,"isSlot":false,"src":"8125:3:8","valueSize":1}},{"dest":{"declaration":10218,"isOffset":false,"isSlot":false,"src":"8113:4:8","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":10232,"name":"InlineAssembly","src":"8079:65:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10218,"type":"uint256","value":"dest"},"id":10233,"name":"Identifier","src":"8157:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10234,"name":"Literal","src":"8165:2:8"}],"id":10235,"name":"Assignment","src":"8157:10:8"}],"id":10236,"name":"ExpressionStatement","src":"8157:10:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10220,"type":"uint256","value":"src"},"id":10237,"name":"Identifier","src":"8181:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10238,"name":"Literal","src":"8188:2:8"}],"id":10239,"name":"Assignment","src":"8181:9:8"}],"id":10240,"name":"ExpressionStatement","src":"8181:9:8"}],"id":10241,"name":"Block","src":"8065:136:8"}],"id":10242,"name":"ForStatement","src":"8036:165:8"},{"attributes":{"assignments":[10244]},"children":[{"attributes":{"constant":false,"name":"mask","scope":10255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10243,"name":"ElementaryTypeName","src":"8243:4:8"}],"id":10244,"name":"VariableDeclaration","src":"8243:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10245,"name":"Literal","src":"8255:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10246,"name":"Literal","src":"8263:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10222,"type":"uint256","value":"len"},"id":10247,"name":"Identifier","src":"8268:3:8"}],"id":10248,"name":"BinaryOperation","src":"8263:8:8"}],"id":10249,"name":"TupleExpression","src":"8262:10:8"}],"id":10250,"name":"BinaryOperation","src":"8255:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10251,"name":"Literal","src":"8275:1:8"}],"id":10252,"name":"BinaryOperation","src":"8255:21:8"}],"id":10253,"name":"VariableDeclarationStatement","src":"8243:33:8"},{"attributes":{"externalReferences":[{"src":{"declaration":10220,"isOffset":false,"isSlot":false,"src":"8334:3:8","valueSize":1}},{"mask":{"declaration":10244,"isOffset":false,"isSlot":false,"src":"8344:4:8","valueSize":1}},{"dest":{"declaration":10218,"isOffset":false,"isSlot":false,"src":"8421:4:8","valueSize":1}},{"dest":{"declaration":10218,"isOffset":false,"isSlot":false,"src":"8389:4:8","valueSize":1}},{"mask":{"declaration":10244,"isOffset":false,"isSlot":false,"src":"8396:4:8","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":10254,"name":"InlineAssembly","src":"8286:173:8"}],"id":10255,"name":"Block","src":"7976:489:8"}],"id":10256,"name":"FunctionDefinition","src":"7916:549:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10299,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10257,"name":"ElementaryTypeName","src":"8704:5:8"}],"id":10258,"name":"VariableDeclaration","src":"8704:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10259,"name":"ElementaryTypeName","src":"8723:4:8"}],"id":10260,"name":"VariableDeclaration","src":"8723:11:8"},{"attributes":{"constant":false,"name":"len","scope":10299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10261,"name":"ElementaryTypeName","src":"8736:4:8"}],"id":10262,"name":"VariableDeclaration","src":"8736:8:8"}],"id":10263,"name":"ParameterList","src":"8703:42:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10299,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10264,"name":"ElementaryTypeName","src":"8768:5:8"}],"id":10265,"name":"VariableDeclaration","src":"8768:12:8"}],"id":10266,"name":"ParameterList","src":"8767:14:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10267,"name":"Identifier","src":"8792:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10260,"type":"uint256","value":"offset"},"id":10268,"name":"Identifier","src":"8800:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10262,"type":"uint256","value":"len"},"id":10269,"name":"Identifier","src":"8809:3:8"}],"id":10270,"name":"BinaryOperation","src":"8800:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10258,"type":"bytes memory","value":"self"},"id":10271,"name":"Identifier","src":"8816:4:8"}],"id":10272,"name":"MemberAccess","src":"8816:11:8"}],"id":10273,"name":"BinaryOperation","src":"8800:27:8"}],"id":10274,"name":"FunctionCall","src":"8792:36:8"}],"id":10275,"name":"ExpressionStatement","src":"8792:36:8"},{"attributes":{"assignments":[10277]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10276,"name":"ElementaryTypeName","src":"8839:5:8"}],"id":10277,"name":"VariableDeclaration","src":"8839:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10278,"name":"ElementaryTypeName","src":"8862:5:8"}],"id":10279,"name":"NewExpression","src":"8858:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10262,"type":"uint256","value":"len"},"id":10280,"name":"Identifier","src":"8868:3:8"}],"id":10281,"name":"FunctionCall","src":"8858:14:8"}],"id":10282,"name":"VariableDeclarationStatement","src":"8839:33:8"},{"attributes":{"assignments":[10284],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":10298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10283,"name":"ElementaryTypeName","src":"8882:4:8"}],"id":10284,"name":"VariableDeclaration","src":"8882:9:8"}],"id":10285,"name":"VariableDeclarationStatement","src":"8882:9:8"},{"attributes":{"assignments":[10287],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":10298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10286,"name":"ElementaryTypeName","src":"8901:4:8"}],"id":10287,"name":"VariableDeclaration","src":"8901:8:8"}],"id":10288,"name":"VariableDeclarationStatement","src":"8901:8:8"},{"attributes":{"externalReferences":[{"dest":{"declaration":10284,"isOffset":false,"isSlot":false,"src":"8943:4:8","valueSize":1}},{"ret":{"declaration":10277,"isOffset":false,"isSlot":false,"src":"8955:3:8","valueSize":1}},{"src":{"declaration":10287,"isOffset":false,"isSlot":false,"src":"8976:3:8","valueSize":1}},{"self":{"declaration":10258,"isOffset":false,"isSlot":false,"src":"8991:4:8","valueSize":1}},{"offset":{"declaration":10260,"isOffset":false,"isSlot":false,"src":"9002:6:8","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":10289,"name":"InlineAssembly","src":"8920:99:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":10256,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":10290,"name":"Identifier","src":"9028:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10284,"type":"uint256","value":"dest"},"id":10291,"name":"Identifier","src":"9035:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10287,"type":"uint256","value":"src"},"id":10292,"name":"Identifier","src":"9041:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10262,"type":"uint256","value":"len"},"id":10293,"name":"Identifier","src":"9046:3:8"}],"id":10294,"name":"FunctionCall","src":"9028:22:8"}],"id":10295,"name":"ExpressionStatement","src":"9028:22:8"},{"attributes":{"functionReturnParameters":10266},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10277,"type":"bytes memory","value":"ret"},"id":10296,"name":"Identifier","src":"9068:3:8"}],"id":10297,"name":"Return","src":"9061:10:8"}],"id":10298,"name":"Block","src":"8782:296:8"}],"id":10299,"name":"FunctionDefinition","src":"8685:393:8"},{"attributes":{"constant":true,"name":"base32HexTable","scope":10522,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10300,"name":"ElementaryTypeName","src":"9206:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":10301,"name":"Literal","src":"9238:147:8"}],"id":10302,"name":"VariableDeclaration","src":"9206:179:8"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10521,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10303,"name":"ElementaryTypeName","src":"9697:5:8"}],"id":10304,"name":"VariableDeclaration","src":"9697:17:8"},{"attributes":{"constant":false,"name":"off","scope":10521,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10305,"name":"ElementaryTypeName","src":"9716:4:8"}],"id":10306,"name":"VariableDeclaration","src":"9716:8:8"},{"attributes":{"constant":false,"name":"len","scope":10521,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10307,"name":"ElementaryTypeName","src":"9726:4:8"}],"id":10308,"name":"VariableDeclaration","src":"9726:8:8"}],"id":10309,"name":"ParameterList","src":"9696:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10521,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10310,"name":"ElementaryTypeName","src":"9758:7:8"}],"id":10311,"name":"VariableDeclaration","src":"9758:7:8"}],"id":10312,"name":"ParameterList","src":"9757:9:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10313,"name":"Identifier","src":"9777:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10314,"name":"Identifier","src":"9785:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":10315,"name":"Literal","src":"9792:2:8"}],"id":10316,"name":"BinaryOperation","src":"9785:9:8"}],"id":10317,"name":"FunctionCall","src":"9777:18:8"}],"id":10318,"name":"ExpressionStatement","src":"9777:18:8"},{"attributes":{"assignments":[10320]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10319,"name":"ElementaryTypeName","src":"9806:4:8"}],"id":10320,"name":"VariableDeclaration","src":"9806:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10321,"name":"Literal","src":"9817:1:8"}],"id":10322,"name":"VariableDeclarationStatement","src":"9806:12:8"},{"attributes":{"assignments":[10324],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":10520,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":10323,"name":"ElementaryTypeName","src":"9828:5:8"}],"id":10324,"name":"VariableDeclaration","src":"9828:13:8"}],"id":10325,"name":"VariableDeclarationStatement","src":"9828:13:8"},{"children":[{"attributes":{"assignments":[10327]},"children":[{"attributes":{"constant":false,"name":"i","scope":10392,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10326,"name":"ElementaryTypeName","src":"9855:4:8"}],"id":10327,"name":"VariableDeclaration","src":"9855:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10328,"name":"Literal","src":"9864:1:8"}],"id":10329,"name":"VariableDeclarationStatement","src":"9855:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10327,"type":"uint256","value":"i"},"id":10330,"name":"Identifier","src":"9867:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10331,"name":"Identifier","src":"9871:3:8"}],"id":10332,"name":"BinaryOperation","src":"9867:7:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10327,"type":"uint256","value":"i"},"id":10333,"name":"Identifier","src":"9876:1:8"}],"id":10334,"name":"UnaryOperation","src":"9876:3:8"}],"id":10335,"name":"ExpressionStatement","src":"9876:3:8"},{"children":[{"attributes":{"assignments":[10337]},"children":[{"attributes":{"constant":false,"name":"char","scope":10391,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":10336,"name":"ElementaryTypeName","src":"9895:6:8"}],"id":10337,"name":"VariableDeclaration","src":"9895:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10304,"type":"bytes memory","value":"self"},"id":10338,"name":"Identifier","src":"9909:4:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10306,"type":"uint256","value":"off"},"id":10339,"name":"Identifier","src":"9914:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10327,"type":"uint256","value":"i"},"id":10340,"name":"Identifier","src":"9920:1:8"}],"id":10341,"name":"BinaryOperation","src":"9914:7:8"}],"id":10342,"name":"IndexAccess","src":"9909:13:8"}],"id":10343,"name":"VariableDeclarationStatement","src":"9895:27:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10344,"name":"Identifier","src":"9936:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10337,"type":"bytes1","value":"char"},"id":10345,"name":"Identifier","src":"9944:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":10346,"name":"Literal","src":"9952:4:8"}],"id":10347,"name":"BinaryOperation","src":"9944:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10337,"type":"bytes1","value":"char"},"id":10348,"name":"Identifier","src":"9960:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":10349,"name":"Literal","src":"9968:4:8"}],"id":10350,"name":"BinaryOperation","src":"9960:12:8"}],"id":10351,"name":"BinaryOperation","src":"9944:28:8"}],"id":10352,"name":"FunctionCall","src":"9936:37:8"}],"id":10353,"name":"ExpressionStatement","src":"9936:37:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10354,"name":"Identifier","src":"9987:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10355,"name":"ElementaryTypeNameExpression","src":"9997:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10302,"type":"bytes memory","value":"base32HexTable"},"id":10356,"name":"Identifier","src":"10003:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":10357,"name":"ElementaryTypeNameExpression","src":"10018:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10358,"name":"ElementaryTypeNameExpression","src":"10023:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10337,"type":"bytes1","value":"char"},"id":10359,"name":"Identifier","src":"10029:4:8"}],"id":10360,"name":"FunctionCall","src":"10023:11:8"}],"id":10361,"name":"FunctionCall","src":"10018:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":10362,"name":"Literal","src":"10038:4:8"}],"id":10363,"name":"BinaryOperation","src":"10018:24:8"}],"id":10364,"name":"IndexAccess","src":"10003:40:8"}],"id":10365,"name":"FunctionCall","src":"9997:47:8"}],"id":10366,"name":"Assignment","src":"9987:57:8"}],"id":10367,"name":"ExpressionStatement","src":"9987:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10368,"name":"Identifier","src":"10058:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10369,"name":"Identifier","src":"10066:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":10370,"name":"Literal","src":"10077:4:8"}],"id":10371,"name":"BinaryOperation","src":"10066:15:8"}],"id":10372,"name":"FunctionCall","src":"10058:24:8"}],"id":10373,"name":"ExpressionStatement","src":"10058:24:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10327,"type":"uint256","value":"i"},"id":10374,"name":"Identifier","src":"10099:1:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10375,"name":"Identifier","src":"10104:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10376,"name":"Literal","src":"10110:1:8"}],"id":10377,"name":"BinaryOperation","src":"10104:7:8"}],"id":10378,"name":"BinaryOperation","src":"10099:12:8"},{"children":[{"id":10379,"name":"Break","src":"10131:5:8"}],"id":10380,"name":"Block","src":"10113:38:8"}],"id":10381,"name":"IfStatement","src":"10096:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10382,"name":"Identifier","src":"10164:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10383,"name":"Identifier","src":"10171:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10384,"name":"Literal","src":"10178:1:8"}],"id":10385,"name":"BinaryOperation","src":"10171:8:8"}],"id":10386,"name":"TupleExpression","src":"10170:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10387,"name":"Identifier","src":"10183:7:8"}],"id":10388,"name":"BinaryOperation","src":"10170:20:8"}],"id":10389,"name":"Assignment","src":"10164:26:8"}],"id":10390,"name":"ExpressionStatement","src":"10164:26:8"}],"id":10391,"name":"Block","src":"9881:320:8"}],"id":10392,"name":"ForStatement","src":"9851:350:8"},{"attributes":{"assignments":[10394]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":10520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10393,"name":"ElementaryTypeName","src":"10211:4:8"}],"id":10394,"name":"VariableDeclaration","src":"10211:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10395,"name":"Identifier","src":"10225:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10396,"name":"Literal","src":"10231:1:8"}],"id":10397,"name":"BinaryOperation","src":"10225:7:8"}],"id":10398,"name":"VariableDeclarationStatement","src":"10211:21:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10399,"name":"Identifier","src":"10245:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10400,"name":"Literal","src":"10251:1:8"}],"id":10401,"name":"BinaryOperation","src":"10245:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10402,"name":"Literal","src":"10256:1:8"}],"id":10403,"name":"BinaryOperation","src":"10245:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10404,"name":"Identifier","src":"10325:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10405,"name":"Identifier","src":"10332:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10406,"name":"Literal","src":"10339:1:8"}],"id":10407,"name":"BinaryOperation","src":"10332:8:8"}],"id":10408,"name":"TupleExpression","src":"10331:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10409,"name":"Identifier","src":"10344:7:8"}],"id":10410,"name":"BinaryOperation","src":"10331:20:8"}],"id":10411,"name":"Assignment","src":"10325:26:8"}],"id":10412,"name":"ExpressionStatement","src":"10325:26:8"}],"id":10413,"name":"Block","src":"10259:103:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10414,"name":"Identifier","src":"10371:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10415,"name":"Literal","src":"10377:1:8"}],"id":10416,"name":"BinaryOperation","src":"10371:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10417,"name":"Literal","src":"10382:1:8"}],"id":10418,"name":"BinaryOperation","src":"10371:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10419,"name":"Identifier","src":"10444:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10420,"name":"Identifier","src":"10451:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10421,"name":"Literal","src":"10458:1:8"}],"id":10422,"name":"BinaryOperation","src":"10451:8:8"}],"id":10423,"name":"TupleExpression","src":"10450:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10424,"name":"Identifier","src":"10464:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10425,"name":"Literal","src":"10475:1:8"}],"id":10426,"name":"BinaryOperation","src":"10464:12:8"}],"id":10427,"name":"TupleExpression","src":"10463:14:8"}],"id":10428,"name":"BinaryOperation","src":"10450:27:8"}],"id":10429,"name":"Assignment","src":"10444:33:8"}],"id":10430,"name":"ExpressionStatement","src":"10444:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10431,"name":"Identifier","src":"10491:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10432,"name":"Literal","src":"10501:1:8"}],"id":10433,"name":"Assignment","src":"10491:11:8"}],"id":10434,"name":"ExpressionStatement","src":"10491:11:8"}],"id":10435,"name":"Block","src":"10385:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10436,"name":"Identifier","src":"10522:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10437,"name":"Literal","src":"10528:1:8"}],"id":10438,"name":"BinaryOperation","src":"10522:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10439,"name":"Literal","src":"10533:1:8"}],"id":10440,"name":"BinaryOperation","src":"10522:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10441,"name":"Identifier","src":"10597:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10442,"name":"Identifier","src":"10604:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10443,"name":"Literal","src":"10611:1:8"}],"id":10444,"name":"BinaryOperation","src":"10604:8:8"}],"id":10445,"name":"TupleExpression","src":"10603:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10446,"name":"Identifier","src":"10617:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10447,"name":"Literal","src":"10628:1:8"}],"id":10448,"name":"BinaryOperation","src":"10617:12:8"}],"id":10449,"name":"TupleExpression","src":"10616:14:8"}],"id":10450,"name":"BinaryOperation","src":"10603:27:8"}],"id":10451,"name":"Assignment","src":"10597:33:8"}],"id":10452,"name":"ExpressionStatement","src":"10597:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10453,"name":"Identifier","src":"10644:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10454,"name":"Literal","src":"10654:1:8"}],"id":10455,"name":"Assignment","src":"10644:11:8"}],"id":10456,"name":"ExpressionStatement","src":"10644:11:8"}],"id":10457,"name":"Block","src":"10536:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10458,"name":"Identifier","src":"10675:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10459,"name":"Literal","src":"10681:1:8"}],"id":10460,"name":"BinaryOperation","src":"10675:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10461,"name":"Literal","src":"10686:1:8"}],"id":10462,"name":"BinaryOperation","src":"10675:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10463,"name":"Identifier","src":"10750:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10464,"name":"Identifier","src":"10757:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10465,"name":"Literal","src":"10764:1:8"}],"id":10466,"name":"BinaryOperation","src":"10757:8:8"}],"id":10467,"name":"TupleExpression","src":"10756:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10468,"name":"Identifier","src":"10770:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10469,"name":"Literal","src":"10781:1:8"}],"id":10470,"name":"BinaryOperation","src":"10770:12:8"}],"id":10471,"name":"TupleExpression","src":"10769:14:8"}],"id":10472,"name":"BinaryOperation","src":"10756:27:8"}],"id":10473,"name":"Assignment","src":"10750:33:8"}],"id":10474,"name":"ExpressionStatement","src":"10750:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10475,"name":"Identifier","src":"10797:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10476,"name":"Literal","src":"10807:1:8"}],"id":10477,"name":"Assignment","src":"10797:11:8"}],"id":10478,"name":"ExpressionStatement","src":"10797:11:8"}],"id":10479,"name":"Block","src":"10689:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10480,"name":"Identifier","src":"10828:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10481,"name":"Literal","src":"10834:1:8"}],"id":10482,"name":"BinaryOperation","src":"10828:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":10483,"name":"Literal","src":"10839:1:8"}],"id":10484,"name":"BinaryOperation","src":"10828:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10485,"name":"Identifier","src":"10904:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10486,"name":"Identifier","src":"10911:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10487,"name":"Literal","src":"10918:1:8"}],"id":10488,"name":"BinaryOperation","src":"10911:8:8"}],"id":10489,"name":"TupleExpression","src":"10910:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10490,"name":"Identifier","src":"10924:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10491,"name":"Literal","src":"10935:1:8"}],"id":10492,"name":"BinaryOperation","src":"10924:12:8"}],"id":10493,"name":"TupleExpression","src":"10923:14:8"}],"id":10494,"name":"BinaryOperation","src":"10910:27:8"}],"id":10495,"name":"Assignment","src":"10904:33:8"}],"id":10496,"name":"ExpressionStatement","src":"10904:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10497,"name":"Identifier","src":"10951:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10498,"name":"Literal","src":"10961:1:8"}],"id":10499,"name":"Assignment","src":"10951:11:8"}],"id":10500,"name":"ExpressionStatement","src":"10951:11:8"}],"id":10501,"name":"Block","src":"10842:131:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[10542,10543],"referencedDeclaration":10542,"type":"function () pure","value":"revert"},"id":10502,"name":"Identifier","src":"10993:6:8"}],"id":10503,"name":"FunctionCall","src":"10993:8:8"}],"id":10504,"name":"ExpressionStatement","src":"10993:8:8"}],"id":10505,"name":"Block","src":"10979:33:8"}],"id":10506,"name":"IfStatement","src":"10825:187:8"}],"id":10507,"name":"IfStatement","src":"10672:340:8"}],"id":10508,"name":"IfStatement","src":"10519:493:8"}],"id":10509,"name":"IfStatement","src":"10368:644:8"}],"id":10510,"name":"IfStatement","src":"10242:770:8"},{"attributes":{"functionReturnParameters":10312},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":10511,"name":"ElementaryTypeNameExpression","src":"11029:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10512,"name":"Identifier","src":"11037:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10513,"name":"Literal","src":"11045:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10514,"name":"Identifier","src":"11051:6:8"}],"id":10515,"name":"BinaryOperation","src":"11045:12:8"}],"id":10516,"name":"TupleExpression","src":"11044:14:8"}],"id":10517,"name":"BinaryOperation","src":"11037:21:8"}],"id":10518,"name":"FunctionCall","src":"11029:30:8"}],"id":10519,"name":"Return","src":"11022:37:8"}],"id":10520,"name":"Block","src":"9767:1299:8"}],"id":10521,"name":"FunctionDefinition","src":"9668:1398:8"}],"id":10522,"name":"ContractDefinition","src":"26:11042:8"}],"id":10523,"name":"SourceUnit","src":"0:11069:8"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[5022]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4850,"name":"PragmaDirective","src":"1401:23:9"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":4851,"name":"PragmaDirective","src":"1425:33:9"},{"attributes":{"SourceUnit":4849,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4852,"name":"ImportDirective","src":"1460:19:9"},{"attributes":{"SourceUnit":6147,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4853,"name":"ImportDirective","src":"1480:36:9"},{"attributes":{"SourceUnit":6306,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4854,"name":"ImportDirective","src":"1517:37:9"},{"attributes":{"SourceUnit":6376,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4855,"name":"ImportDirective","src":"1555:44:9"},{"attributes":{"SourceUnit":6867,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4856,"name":"ImportDirective","src":"1600:36:9"},{"attributes":{"SourceUnit":7054,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4857,"name":"ImportDirective","src":"1637:42:9"},{"attributes":{"SourceUnit":7124,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4858,"name":"ImportDirective","src":"1680:37:9"},{"attributes":{"SourceUnit":7215,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4859,"name":"ImportDirective","src":"1718:39:9"},{"attributes":{"SourceUnit":7298,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4860,"name":"ImportDirective","src":"1758:37:9"},{"attributes":{"contractDependencies":[6146,6305,6375,6866,7053,7123,7214,7297,9183],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[5022,7297,7214,7123,7053,6866,6375,6305,6146,9183],"name":"PublicResolver","scope":5023},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":6146,"type":"contract ABIResolver"},"id":4861,"name":"UserDefinedTypeName","src":"1924:11:9"}],"id":4862,"name":"InheritanceSpecifier","src":"1924:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":6305,"type":"contract AddrResolver"},"id":4863,"name":"UserDefinedTypeName","src":"1937:12:9"}],"id":4864,"name":"InheritanceSpecifier","src":"1937:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":6375,"type":"contract ContentHashResolver"},"id":4865,"name":"UserDefinedTypeName","src":"1951:19:9"}],"id":4866,"name":"InheritanceSpecifier","src":"1951:19:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":6866,"type":"contract DNSResolver"},"id":4867,"name":"UserDefinedTypeName","src":"1972:11:9"}],"id":4868,"name":"InheritanceSpecifier","src":"1972:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":7053,"type":"contract InterfaceResolver"},"id":4869,"name":"UserDefinedTypeName","src":"1985:17:9"}],"id":4870,"name":"InheritanceSpecifier","src":"1985:17:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":7123,"type":"contract NameResolver"},"id":4871,"name":"UserDefinedTypeName","src":"2004:12:9"}],"id":4872,"name":"InheritanceSpecifier","src":"2004:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":7214,"type":"contract PubkeyResolver"},"id":4873,"name":"UserDefinedTypeName","src":"2018:14:9"}],"id":4874,"name":"InheritanceSpecifier","src":"2018:14:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":7297,"type":"contract TextResolver"},"id":4875,"name":"UserDefinedTypeName","src":"2034:12:9"}],"id":4876,"name":"InheritanceSpecifier","src":"2034:12:9"},{"attributes":{"constant":false,"name":"ens","scope":5022,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4848,"type":"contract ENS"},"id":4877,"name":"UserDefinedTypeName","src":"2053:3:9"}],"id":4878,"name":"VariableDeclaration","src":"2053:7:9"},{"attributes":{"constant":false,"name":"authorisations","scope":5022,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4879,"name":"ElementaryTypeName","src":"2328:7:9"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":4880,"name":"ElementaryTypeName","src":"2345:7:9"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4881,"name":"ElementaryTypeName","src":"2362:7:9"},{"attributes":{"name":"bool","type":"bool"},"id":4882,"name":"ElementaryTypeName","src":"2371:4:9"}],"id":4883,"name":"Mapping","src":"2354:22:9"}],"id":4884,"name":"Mapping","src":"2337:40:9"}],"id":4885,"name":"Mapping","src":"2320:58:9"}],"id":4886,"name":"VariableDeclaration","src":"2320:80:9"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4896,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4887,"name":"ElementaryTypeName","src":"2434:7:9"}],"id":4888,"name":"VariableDeclaration","src":"2434:20:9"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":4896,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4889,"name":"ElementaryTypeName","src":"2456:7:9"}],"id":4890,"name":"VariableDeclaration","src":"2456:21:9"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":4896,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4891,"name":"ElementaryTypeName","src":"2479:7:9"}],"id":4892,"name":"VariableDeclaration","src":"2479:22:9"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":4896,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4893,"name":"ElementaryTypeName","src":"2503:4:9"}],"id":4894,"name":"VariableDeclaration","src":"2503:17:9"}],"id":4895,"name":"ParameterList","src":"2433:88:9"}],"id":4896,"name":"EventDefinition","src":"2407:115:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":5022,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":4906,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4848,"type":"contract ENS"},"id":4897,"name":"UserDefinedTypeName","src":"2540:3:9"}],"id":4898,"name":"VariableDeclaration","src":"2540:8:9"}],"id":4899,"name":"ParameterList","src":"2539:10:9"},{"attributes":{"parameters":[null]},"children":[],"id":4900,"name":"ParameterList","src":"2557:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4878,"type":"contract ENS","value":"ens"},"id":4901,"name":"Identifier","src":"2567:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4898,"type":"contract ENS","value":"_ens"},"id":4902,"name":"Identifier","src":"2573:4:9"}],"id":4903,"name":"Assignment","src":"2567:10:9"}],"id":4904,"name":"ExpressionStatement","src":"2567:10:9"}],"id":4905,"name":"Block","src":"2557:27:9"}],"id":4906,"name":"FunctionDefinition","src":"2528:56:9"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":5022,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4935,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4907,"name":"ElementaryTypeName","src":"3295:7:9"}],"id":4908,"name":"VariableDeclaration","src":"3295:12:9"},{"attributes":{"constant":false,"name":"target","scope":4935,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4909,"name":"ElementaryTypeName","src":"3309:7:9"}],"id":4910,"name":"VariableDeclaration","src":"3309:14:9"},{"attributes":{"constant":false,"name":"isAuthorised","scope":4935,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4911,"name":"ElementaryTypeName","src":"3325:4:9"}],"id":4912,"name":"VariableDeclaration","src":"3325:17:9"}],"id":4913,"name":"ParameterList","src":"3294:49:9"},{"attributes":{"parameters":[null]},"children":[],"id":4914,"name":"ParameterList","src":"3353:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4886,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4915,"name":"Identifier","src":"3363:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4908,"type":"bytes32","value":"node"},"id":4916,"name":"Identifier","src":"3378:4:9"}],"id":4920,"name":"IndexAccess","src":"3363:20:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4917,"name":"Identifier","src":"3384:3:9"}],"id":4918,"name":"MemberAccess","src":"3384:10:9"}],"id":4921,"name":"IndexAccess","src":"3363:32:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4910,"type":"address","value":"target"},"id":4919,"name":"Identifier","src":"3396:6:9"}],"id":4922,"name":"IndexAccess","src":"3363:40:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4912,"type":"bool","value":"isAuthorised"},"id":4923,"name":"Identifier","src":"3406:12:9"}],"id":4924,"name":"Assignment","src":"3363:55:9"}],"id":4925,"name":"ExpressionStatement","src":"3363:55:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4896,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":4926,"name":"Identifier","src":"3433:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4908,"type":"bytes32","value":"node"},"id":4927,"name":"Identifier","src":"3454:4:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4928,"name":"Identifier","src":"3460:3:9"}],"id":4929,"name":"MemberAccess","src":"3460:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4910,"type":"address","value":"target"},"id":4930,"name":"Identifier","src":"3472:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4912,"type":"bool","value":"isAuthorised"},"id":4931,"name":"Identifier","src":"3480:12:9"}],"id":4932,"name":"FunctionCall","src":"3433:60:9"}],"id":4933,"name":"EmitStatement","src":"3428:65:9"}],"id":4934,"name":"Block","src":"3353:147:9"}],"id":4935,"name":"FunctionDefinition","src":"3269:231:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":5022,"stateMutability":"view","superFunction":9138,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4964,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4936,"name":"ElementaryTypeName","src":"3528:7:9"}],"id":4937,"name":"VariableDeclaration","src":"3528:12:9"}],"id":4938,"name":"ParameterList","src":"3527:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":4964,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4939,"name":"ElementaryTypeName","src":"3564:4:9"}],"id":4940,"name":"VariableDeclaration","src":"3564:4:9"}],"id":4941,"name":"ParameterList","src":"3563:6:9"},{"children":[{"attributes":{"assignments":[4943]},"children":[{"attributes":{"constant":false,"name":"owner","scope":4963,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4942,"name":"ElementaryTypeName","src":"3580:7:9"}],"id":4943,"name":"VariableDeclaration","src":"3580:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":4817,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4878,"type":"contract ENS","value":"ens"},"id":4944,"name":"Identifier","src":"3596:3:9"}],"id":4945,"name":"MemberAccess","src":"3596:9:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4937,"type":"bytes32","value":"node"},"id":4946,"name":"Identifier","src":"3606:4:9"}],"id":4947,"name":"FunctionCall","src":"3596:15:9"}],"id":4948,"name":"VariableDeclarationStatement","src":"3580:31:9"},{"attributes":{"functionReturnParameters":4941},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4943,"type":"address","value":"owner"},"id":4949,"name":"Identifier","src":"3628:5:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4950,"name":"Identifier","src":"3637:3:9"}],"id":4951,"name":"MemberAccess","src":"3637:10:9"}],"id":4952,"name":"BinaryOperation","src":"3628:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4886,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4953,"name":"Identifier","src":"3651:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4937,"type":"bytes32","value":"node"},"id":4954,"name":"Identifier","src":"3666:4:9"}],"id":4955,"name":"IndexAccess","src":"3651:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4943,"type":"address","value":"owner"},"id":4956,"name":"Identifier","src":"3672:5:9"}],"id":4957,"name":"IndexAccess","src":"3651:27:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4958,"name":"Identifier","src":"3679:3:9"}],"id":4959,"name":"MemberAccess","src":"3679:10:9"}],"id":4960,"name":"IndexAccess","src":"3651:39:9"}],"id":4961,"name":"BinaryOperation","src":"3628:62:9"}],"id":4962,"name":"Return","src":"3621:69:9"}],"id":4963,"name":"Block","src":"3570:127:9"}],"id":4964,"name":"FunctionDefinition","src":"3506:191:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":5022,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":5021,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4965,"name":"ElementaryTypeName","src":"3722:5:9"}],"id":4966,"name":"ArrayTypeName","src":"3722:7:9"}],"id":4967,"name":"VariableDeclaration","src":"3722:21:9"}],"id":4968,"name":"ParameterList","src":"3721:23:9"},{"children":[{"attributes":{"constant":false,"name":"results","scope":5021,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4969,"name":"ElementaryTypeName","src":"3762:5:9"}],"id":4970,"name":"ArrayTypeName","src":"3762:7:9"}],"id":4971,"name":"VariableDeclaration","src":"3762:22:9"}],"id":4972,"name":"ParameterList","src":"3761:24:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4971,"type":"bytes memory[] memory","value":"results"},"id":4973,"name":"Identifier","src":"3796:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4974,"name":"ElementaryTypeName","src":"3810:5:9"}],"id":4975,"name":"ArrayTypeName","src":"3810:7:9"}],"id":4976,"name":"NewExpression","src":"3806:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4967,"type":"bytes calldata[] calldata","value":"data"},"id":4977,"name":"Identifier","src":"3818:4:9"}],"id":4978,"name":"MemberAccess","src":"3818:11:9"}],"id":4979,"name":"FunctionCall","src":"3806:24:9"}],"id":4980,"name":"Assignment","src":"3796:34:9"}],"id":4981,"name":"ExpressionStatement","src":"3796:34:9"},{"children":[{"attributes":{"assignments":[4983]},"children":[{"attributes":{"constant":false,"name":"i","scope":5017,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4982,"name":"ElementaryTypeName","src":"3844:4:9"}],"id":4983,"name":"VariableDeclaration","src":"3844:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4984,"name":"Literal","src":"3853:1:9"}],"id":4985,"name":"VariableDeclarationStatement","src":"3844:10:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"uint256","value":"i"},"id":4986,"name":"Identifier","src":"3856:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4967,"type":"bytes calldata[] calldata","value":"data"},"id":4987,"name":"Identifier","src":"3860:4:9"}],"id":4988,"name":"MemberAccess","src":"3860:11:9"}],"id":4989,"name":"BinaryOperation","src":"3856:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"uint256","value":"i"},"id":4990,"name":"Identifier","src":"3873:1:9"}],"id":4991,"name":"UnaryOperation","src":"3873:3:9"}],"id":4992,"name":"ExpressionStatement","src":"3873:3:9"},{"children":[{"attributes":{"assignments":[4994,4996]},"children":[{"attributes":{"constant":false,"name":"success","scope":5016,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4993,"name":"ElementaryTypeName","src":"3893:4:9"}],"id":4994,"name":"VariableDeclaration","src":"3893:12:9"},{"attributes":{"constant":false,"name":"result","scope":5016,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4995,"name":"ElementaryTypeName","src":"3907:5:9"}],"id":4996,"name":"VariableDeclaration","src":"3907:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$5022","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4997,"name":"ElementaryTypeNameExpression","src":"3930:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10595,"type":"contract PublicResolver","value":"this"},"id":4998,"name":"Identifier","src":"3938:4:9"}],"id":4999,"name":"FunctionCall","src":"3930:13:9"}],"id":5000,"name":"MemberAccess","src":"3930:26:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4967,"type":"bytes calldata[] calldata","value":"data"},"id":5001,"name":"Identifier","src":"3957:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"uint256","value":"i"},"id":5002,"name":"Identifier","src":"3962:1:9"}],"id":5003,"name":"IndexAccess","src":"3957:7:9"}],"id":5004,"name":"FunctionCall","src":"3930:35:9"}],"id":5005,"name":"VariableDeclarationStatement","src":"3892:73:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":5006,"name":"Identifier","src":"3979:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4994,"type":"bool","value":"success"},"id":5007,"name":"Identifier","src":"3987:7:9"}],"id":5008,"name":"FunctionCall","src":"3979:16:9"}],"id":5009,"name":"ExpressionStatement","src":"3979:16:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4971,"type":"bytes memory[] memory","value":"results"},"id":5010,"name":"Identifier","src":"4009:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"uint256","value":"i"},"id":5011,"name":"Identifier","src":"4017:1:9"}],"id":5012,"name":"IndexAccess","src":"4009:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4996,"type":"bytes memory","value":"result"},"id":5013,"name":"Identifier","src":"4022:6:9"}],"id":5014,"name":"Assignment","src":"4009:19:9"}],"id":5015,"name":"ExpressionStatement","src":"4009:19:9"}],"id":5016,"name":"Block","src":"3878:161:9"}],"id":5017,"name":"ForStatement","src":"3840:199:9"},{"attributes":{"functionReturnParameters":4972},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4971,"type":"bytes memory[] memory","value":"results"},"id":5018,"name":"Identifier","src":"4055:7:9"}],"id":5019,"name":"Return","src":"4048:14:9"}],"id":5020,"name":"Block","src":"3786:283:9"}],"id":5021,"name":"FunctionDefinition","src":"3703:366:9"}],"id":5022,"name":"ContractDefinition","src":"1897:2174:9"}],"id":5023,"name":"SourceUnit","src":"1401:2671:9"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[9801]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9185,"name":"PragmaDirective","src":"0:24:10"},{"attributes":{"SourceUnit":10523,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":9802,"symbolAliases":[null],"unitAlias":""},"id":9186,"name":"ImportDirective","src":"26:29:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[9801],"name":"RRUtils","scope":9802},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10522,"type":"library ENSBytesUtils"},"id":9187,"name":"UserDefinedTypeName","src":"178:13:10"}],"id":9188,"name":"UsingForDirective","src":"172:26:10"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9235,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9189,"name":"ElementaryTypeName","src":"487:5:10"}],"id":9190,"name":"VariableDeclaration","src":"487:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9235,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9191,"name":"ElementaryTypeName","src":"506:4:10"}],"id":9192,"name":"VariableDeclaration","src":"506:11:10"}],"id":9193,"name":"ParameterList","src":"486:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9235,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9194,"name":"ElementaryTypeName","src":"541:4:10"}],"id":9195,"name":"VariableDeclaration","src":"541:4:10"}],"id":9196,"name":"ParameterList","src":"540:6:10"},{"children":[{"attributes":{"assignments":[9198]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9197,"name":"ElementaryTypeName","src":"557:4:10"}],"id":9198,"name":"VariableDeclaration","src":"557:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9192,"type":"uint256","value":"offset"},"id":9199,"name":"Identifier","src":"568:6:10"}],"id":9200,"name":"VariableDeclarationStatement","src":"557:17:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9201,"name":"Literal","src":"591:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10526,"type":"function (bool) pure","value":"assert"},"id":9202,"name":"Identifier","src":"611:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9198,"type":"uint256","value":"idx"},"id":9203,"name":"Identifier","src":"618:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9190,"type":"bytes memory","value":"self"},"id":9204,"name":"Identifier","src":"624:4:10"}],"id":9205,"name":"MemberAccess","src":"624:11:10"}],"id":9206,"name":"BinaryOperation","src":"618:17:10"}],"id":9207,"name":"FunctionCall","src":"611:25:10"}],"id":9208,"name":"ExpressionStatement","src":"611:25:10"},{"attributes":{"assignments":[9210]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":9228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9209,"name":"ElementaryTypeName","src":"650:4:10"}],"id":9210,"name":"VariableDeclaration","src":"650:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9190,"type":"bytes memory","value":"self"},"id":9211,"name":"Identifier","src":"666:4:10"}],"id":9212,"name":"MemberAccess","src":"666:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9198,"type":"uint256","value":"idx"},"id":9213,"name":"Identifier","src":"681:3:10"}],"id":9214,"name":"FunctionCall","src":"666:19:10"}],"id":9215,"name":"VariableDeclarationStatement","src":"650:35:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9198,"type":"uint256","value":"idx"},"id":9216,"name":"Identifier","src":"699:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9210,"type":"uint256","value":"labelLen"},"id":9217,"name":"Identifier","src":"706:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9218,"name":"Literal","src":"717:1:10"}],"id":9219,"name":"BinaryOperation","src":"706:12:10"}],"id":9220,"name":"Assignment","src":"699:19:10"}],"id":9221,"name":"ExpressionStatement","src":"699:19:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9210,"type":"uint256","value":"labelLen"},"id":9222,"name":"Identifier","src":"736:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9223,"name":"Literal","src":"748:1:10"}],"id":9224,"name":"BinaryOperation","src":"736:13:10"},{"children":[{"id":9225,"name":"Break","src":"769:5:10"}],"id":9226,"name":"Block","src":"751:38:10"}],"id":9227,"name":"IfStatement","src":"732:57:10"}],"id":9228,"name":"Block","src":"597:202:10"}],"id":9229,"name":"WhileStatement","src":"584:215:10"},{"attributes":{"functionReturnParameters":9196},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9198,"type":"uint256","value":"idx"},"id":9230,"name":"Identifier","src":"815:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9192,"type":"uint256","value":"offset"},"id":9231,"name":"Identifier","src":"821:6:10"}],"id":9232,"name":"BinaryOperation","src":"815:12:10"}],"id":9233,"name":"Return","src":"808:19:10"}],"id":9234,"name":"Block","src":"547:287:10"}],"id":9235,"name":"FunctionDefinition","src":"467:367:10"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9258,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9236,"name":"ElementaryTypeName","src":"1073:5:10"}],"id":9237,"name":"VariableDeclaration","src":"1073:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9258,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9238,"name":"ElementaryTypeName","src":"1092:4:10"}],"id":9239,"name":"VariableDeclaration","src":"1092:11:10"}],"id":9240,"name":"ParameterList","src":"1072:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9258,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9241,"name":"ElementaryTypeName","src":"1127:5:10"}],"id":9242,"name":"VariableDeclaration","src":"1127:16:10"}],"id":9243,"name":"ParameterList","src":"1126:18:10"},{"children":[{"attributes":{"assignments":[9245]},"children":[{"attributes":{"constant":false,"name":"len","scope":9257,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9244,"name":"ElementaryTypeName","src":"1155:4:10"}],"id":9245,"name":"VariableDeclaration","src":"1155:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9246,"name":"Identifier","src":"1166:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9237,"type":"bytes memory","value":"self"},"id":9247,"name":"Identifier","src":"1177:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9239,"type":"uint256","value":"offset"},"id":9248,"name":"Identifier","src":"1183:6:10"}],"id":9249,"name":"FunctionCall","src":"1166:24:10"}],"id":9250,"name":"VariableDeclarationStatement","src":"1155:35:10"},{"attributes":{"functionReturnParameters":9243},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10299,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9237,"type":"bytes memory","value":"self"},"id":9251,"name":"Identifier","src":"1207:4:10"}],"id":9252,"name":"MemberAccess","src":"1207:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9239,"type":"uint256","value":"offset"},"id":9253,"name":"Identifier","src":"1222:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9245,"type":"uint256","value":"len"},"id":9254,"name":"Identifier","src":"1230:3:10"}],"id":9255,"name":"FunctionCall","src":"1207:27:10"}],"id":9256,"name":"Return","src":"1200:34:10"}],"id":9257,"name":"Block","src":"1145:96:10"}],"id":9258,"name":"FunctionDefinition","src":"1055:186:10"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9307,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9259,"name":"ElementaryTypeName","src":"1541:5:10"}],"id":9260,"name":"VariableDeclaration","src":"1541:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9307,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9261,"name":"ElementaryTypeName","src":"1560:4:10"}],"id":9262,"name":"VariableDeclaration","src":"1560:11:10"}],"id":9263,"name":"ParameterList","src":"1540:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9307,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9264,"name":"ElementaryTypeName","src":"1595:4:10"}],"id":9265,"name":"VariableDeclaration","src":"1595:4:10"}],"id":9266,"name":"ParameterList","src":"1594:6:10"},{"children":[{"attributes":{"assignments":[9268]},"children":[{"attributes":{"constant":false,"name":"count","scope":9306,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9267,"name":"ElementaryTypeName","src":"1611:4:10"}],"id":9268,"name":"VariableDeclaration","src":"1611:10:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9269,"name":"Literal","src":"1624:1:10"}],"id":9270,"name":"VariableDeclarationStatement","src":"1611:14:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9271,"name":"Literal","src":"1642:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10526,"type":"function (bool) pure","value":"assert"},"id":9272,"name":"Identifier","src":"1662:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9262,"type":"uint256","value":"offset"},"id":9273,"name":"Identifier","src":"1669:6:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"bytes memory","value":"self"},"id":9274,"name":"Identifier","src":"1678:4:10"}],"id":9275,"name":"MemberAccess","src":"1678:11:10"}],"id":9276,"name":"BinaryOperation","src":"1669:20:10"}],"id":9277,"name":"FunctionCall","src":"1662:28:10"}],"id":9278,"name":"ExpressionStatement","src":"1662:28:10"},{"attributes":{"assignments":[9280]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":9302,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9279,"name":"ElementaryTypeName","src":"1704:4:10"}],"id":9280,"name":"VariableDeclaration","src":"1704:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"bytes memory","value":"self"},"id":9281,"name":"Identifier","src":"1720:4:10"}],"id":9282,"name":"MemberAccess","src":"1720:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9262,"type":"uint256","value":"offset"},"id":9283,"name":"Identifier","src":"1735:6:10"}],"id":9284,"name":"FunctionCall","src":"1720:22:10"}],"id":9285,"name":"VariableDeclarationStatement","src":"1704:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9262,"type":"uint256","value":"offset"},"id":9286,"name":"Identifier","src":"1756:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9280,"type":"uint256","value":"labelLen"},"id":9287,"name":"Identifier","src":"1766:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9288,"name":"Literal","src":"1777:1:10"}],"id":9289,"name":"BinaryOperation","src":"1766:12:10"}],"id":9290,"name":"Assignment","src":"1756:22:10"}],"id":9291,"name":"ExpressionStatement","src":"1756:22:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9280,"type":"uint256","value":"labelLen"},"id":9292,"name":"Identifier","src":"1796:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9293,"name":"Literal","src":"1808:1:10"}],"id":9294,"name":"BinaryOperation","src":"1796:13:10"},{"children":[{"id":9295,"name":"Break","src":"1829:5:10"}],"id":9296,"name":"Block","src":"1811:38:10"}],"id":9297,"name":"IfStatement","src":"1792:57:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9268,"type":"uint256","value":"count"},"id":9298,"name":"Identifier","src":"1862:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9299,"name":"Literal","src":"1871:1:10"}],"id":9300,"name":"Assignment","src":"1862:10:10"}],"id":9301,"name":"ExpressionStatement","src":"1862:10:10"}],"id":9302,"name":"Block","src":"1648:235:10"}],"id":9303,"name":"WhileStatement","src":"1635:248:10"},{"attributes":{"functionReturnParameters":9266},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9268,"type":"uint256","value":"count"},"id":9304,"name":"Identifier","src":"1899:5:10"}],"id":9305,"name":"Return","src":"1892:12:10"}],"id":9306,"name":"Block","src":"1601:310:10"}],"id":9307,"name":"FunctionDefinition","src":"1521:390:10"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":9801,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":9322,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9308,"name":"ElementaryTypeName","src":"2006:5:10"}],"id":9309,"name":"VariableDeclaration","src":"2006:10:10"},{"attributes":{"constant":false,"name":"offset","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9310,"name":"ElementaryTypeName","src":"2026:4:10"}],"id":9311,"name":"VariableDeclaration","src":"2026:11:10"},{"attributes":{"constant":false,"name":"dnstype","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9312,"name":"ElementaryTypeName","src":"2047:6:10"}],"id":9313,"name":"VariableDeclaration","src":"2047:14:10"},{"attributes":{"constant":false,"name":"class","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9314,"name":"ElementaryTypeName","src":"2071:6:10"}],"id":9315,"name":"VariableDeclaration","src":"2071:12:10"},{"attributes":{"constant":false,"name":"ttl","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":9316,"name":"ElementaryTypeName","src":"2093:6:10"}],"id":9317,"name":"VariableDeclaration","src":"2093:10:10"},{"attributes":{"constant":false,"name":"rdataOffset","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9318,"name":"ElementaryTypeName","src":"2113:4:10"}],"id":9319,"name":"VariableDeclaration","src":"2113:16:10"},{"attributes":{"constant":false,"name":"nextOffset","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9320,"name":"ElementaryTypeName","src":"2139:4:10"}],"id":9321,"name":"VariableDeclaration","src":"2139:15:10"}],"id":9322,"name":"StructDefinition","src":"1978:183:10"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9348,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9323,"name":"ElementaryTypeName","src":"2387:5:10"}],"id":9324,"name":"VariableDeclaration","src":"2387:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9325,"name":"ElementaryTypeName","src":"2406:4:10"}],"id":9326,"name":"VariableDeclaration","src":"2406:11:10"}],"id":9327,"name":"ParameterList","src":"2386:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9348,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9328,"name":"UserDefinedTypeName","src":"2442:10:10"}],"id":9329,"name":"VariableDeclaration","src":"2442:21:10"}],"id":9330,"name":"ParameterList","src":"2441:23:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9329,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":9331,"name":"Identifier","src":"2475:3:10"}],"id":9333,"name":"MemberAccess","src":"2475:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9324,"type":"bytes memory","value":"self"},"id":9334,"name":"Identifier","src":"2486:4:10"}],"id":9335,"name":"Assignment","src":"2475:15:10"}],"id":9336,"name":"ExpressionStatement","src":"2475:15:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":9321,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9329,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":9337,"name":"Identifier","src":"2500:3:10"}],"id":9339,"name":"MemberAccess","src":"2500:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9326,"type":"uint256","value":"offset"},"id":9340,"name":"Identifier","src":"2517:6:10"}],"id":9341,"name":"Assignment","src":"2500:23:10"}],"id":9342,"name":"ExpressionStatement","src":"2500:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$9322_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9465,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":9343,"name":"Identifier","src":"2533:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9329,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":9344,"name":"Identifier","src":"2538:3:10"}],"id":9345,"name":"FunctionCall","src":"2533:9:10"}],"id":9346,"name":"ExpressionStatement","src":"2533:9:10"}],"id":9347,"name":"Block","src":"2465:84:10"}],"id":9348,"name":"FunctionDefinition","src":"2367:182:10"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9363,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9349,"name":"UserDefinedTypeName","src":"2734:10:10"}],"id":9350,"name":"VariableDeclaration","src":"2734:22:10"}],"id":9351,"name":"ParameterList","src":"2733:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9363,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9352,"name":"ElementaryTypeName","src":"2780:4:10"}],"id":9353,"name":"VariableDeclaration","src":"2780:4:10"}],"id":9354,"name":"ParameterList","src":"2779:6:10"},{"children":[{"attributes":{"functionReturnParameters":9354},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9350,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9355,"name":"Identifier","src":"2803:4:10"}],"id":9356,"name":"MemberAccess","src":"2803:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9350,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9357,"name":"Identifier","src":"2818:4:10"}],"id":9358,"name":"MemberAccess","src":"2818:9:10"}],"id":9359,"name":"MemberAccess","src":"2818:16:10"}],"id":9360,"name":"BinaryOperation","src":"2803:31:10"}],"id":9361,"name":"Return","src":"2796:38:10"}],"id":9362,"name":"Block","src":"2786:55:10"}],"id":9363,"name":"FunctionDefinition","src":"2720:121:10"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9465,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9364,"name":"UserDefinedTypeName","src":"2978:10:10"}],"id":9365,"name":"VariableDeclaration","src":"2978:22:10"}],"id":9366,"name":"ParameterList","src":"2977:24:10"},{"attributes":{"parameters":[null]},"children":[],"id":9367,"name":"ParameterList","src":"3016:0:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9368,"name":"Identifier","src":"3026:4:10"}],"id":9370,"name":"MemberAccess","src":"3026:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":9321,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9371,"name":"Identifier","src":"3040:4:10"}],"id":9372,"name":"MemberAccess","src":"3040:15:10"}],"id":9373,"name":"Assignment","src":"3026:29:10"}],"id":9374,"name":"ExpressionStatement","src":"3026:29:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9375,"name":"Identifier","src":"3069:4:10"}],"id":9376,"name":"MemberAccess","src":"3069:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9377,"name":"Identifier","src":"3084:4:10"}],"id":9378,"name":"MemberAccess","src":"3084:9:10"}],"id":9379,"name":"MemberAccess","src":"3084:16:10"}],"id":9380,"name":"BinaryOperation","src":"3069:31:10"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":9367},"id":9381,"name":"Return","src":"3116:7:10"}],"id":9382,"name":"Block","src":"3102:31:10"}],"id":9383,"name":"IfStatement","src":"3065:68:10"},{"attributes":{"assignments":[9385]},"children":[{"attributes":{"constant":false,"name":"off","scope":9464,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9384,"name":"ElementaryTypeName","src":"3168:4:10"}],"id":9385,"name":"VariableDeclaration","src":"3168:8:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9386,"name":"Identifier","src":"3179:4:10"}],"id":9387,"name":"MemberAccess","src":"3179:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9388,"name":"Identifier","src":"3193:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9389,"name":"Identifier","src":"3204:4:10"}],"id":9390,"name":"MemberAccess","src":"3204:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9391,"name":"Identifier","src":"3215:4:10"}],"id":9392,"name":"MemberAccess","src":"3215:11:10"}],"id":9393,"name":"FunctionCall","src":"3193:34:10"}],"id":9394,"name":"BinaryOperation","src":"3179:48:10"}],"id":9395,"name":"VariableDeclarationStatement","src":"3168:59:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":9313,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9396,"name":"Identifier","src":"3275:4:10"}],"id":9398,"name":"MemberAccess","src":"3275:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":10128,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9399,"name":"Identifier","src":"3290:4:10"}],"id":9400,"name":"MemberAccess","src":"3290:9:10"}],"id":9401,"name":"MemberAccess","src":"3290:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9402,"name":"Identifier","src":"3311:3:10"}],"id":9403,"name":"FunctionCall","src":"3290:25:10"}],"id":9404,"name":"Assignment","src":"3275:40:10"}],"id":9405,"name":"ExpressionStatement","src":"3275:40:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9406,"name":"Identifier","src":"3325:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9407,"name":"Literal","src":"3332:1:10"}],"id":9408,"name":"Assignment","src":"3325:8:10"}],"id":9409,"name":"ExpressionStatement","src":"3325:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":9315,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9410,"name":"Identifier","src":"3343:4:10"}],"id":9412,"name":"MemberAccess","src":"3343:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":10128,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9413,"name":"Identifier","src":"3356:4:10"}],"id":9414,"name":"MemberAccess","src":"3356:9:10"}],"id":9415,"name":"MemberAccess","src":"3356:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9416,"name":"Identifier","src":"3377:3:10"}],"id":9417,"name":"FunctionCall","src":"3356:25:10"}],"id":9418,"name":"Assignment","src":"3343:38:10"}],"id":9419,"name":"ExpressionStatement","src":"3343:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9420,"name":"Identifier","src":"3391:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9421,"name":"Literal","src":"3398:1:10"}],"id":9422,"name":"Assignment","src":"3391:8:10"}],"id":9423,"name":"ExpressionStatement","src":"3391:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":9317,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9424,"name":"Identifier","src":"3409:4:10"}],"id":9426,"name":"MemberAccess","src":"3409:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":10148,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9427,"name":"Identifier","src":"3420:4:10"}],"id":9428,"name":"MemberAccess","src":"3420:9:10"}],"id":9429,"name":"MemberAccess","src":"3420:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9430,"name":"Identifier","src":"3441:3:10"}],"id":9431,"name":"FunctionCall","src":"3420:25:10"}],"id":9432,"name":"Assignment","src":"3409:36:10"}],"id":9433,"name":"ExpressionStatement","src":"3409:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9434,"name":"Identifier","src":"3455:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9435,"name":"Literal","src":"3462:1:10"}],"id":9436,"name":"Assignment","src":"3455:8:10"}],"id":9437,"name":"ExpressionStatement","src":"3455:8:10"},{"attributes":{"assignments":[9439]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":9464,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9438,"name":"ElementaryTypeName","src":"3500:4:10"}],"id":9439,"name":"VariableDeclaration","src":"3500:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":10128,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9440,"name":"Identifier","src":"3519:4:10"}],"id":9441,"name":"MemberAccess","src":"3519:9:10"}],"id":9442,"name":"MemberAccess","src":"3519:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9443,"name":"Identifier","src":"3540:3:10"}],"id":9444,"name":"FunctionCall","src":"3519:25:10"}],"id":9445,"name":"VariableDeclarationStatement","src":"3500:44:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9446,"name":"Identifier","src":"3554:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9447,"name":"Literal","src":"3561:1:10"}],"id":9448,"name":"Assignment","src":"3554:8:10"}],"id":9449,"name":"ExpressionStatement","src":"3554:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":9319,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9450,"name":"Identifier","src":"3572:4:10"}],"id":9452,"name":"MemberAccess","src":"3572:16:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9453,"name":"Identifier","src":"3591:3:10"}],"id":9454,"name":"Assignment","src":"3572:22:10"}],"id":9455,"name":"ExpressionStatement","src":"3572:22:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":9321,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9456,"name":"Identifier","src":"3604:4:10"}],"id":9458,"name":"MemberAccess","src":"3604:15:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9459,"name":"Identifier","src":"3622:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9439,"type":"uint256","value":"rdataLength"},"id":9460,"name":"Identifier","src":"3628:11:10"}],"id":9461,"name":"BinaryOperation","src":"3622:17:10"}],"id":9462,"name":"Assignment","src":"3604:35:10"}],"id":9463,"name":"ExpressionStatement","src":"3604:35:10"}],"id":9464,"name":"Block","src":"3016:630:10"}],"id":9465,"name":"FunctionDefinition","src":"2964:682:10"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9486,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9466,"name":"UserDefinedTypeName","src":"3836:10:10"}],"id":9467,"name":"VariableDeclaration","src":"3836:22:10"}],"id":9468,"name":"ParameterList","src":"3835:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9486,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9469,"name":"ElementaryTypeName","src":"3882:5:10"}],"id":9470,"name":"VariableDeclaration","src":"3882:12:10"}],"id":9471,"name":"ParameterList","src":"3881:14:10"},{"children":[{"attributes":{"functionReturnParameters":9471},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10299,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9467,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9472,"name":"Identifier","src":"3913:4:10"}],"id":9473,"name":"MemberAccess","src":"3913:9:10"}],"id":9474,"name":"MemberAccess","src":"3913:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9467,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9475,"name":"Identifier","src":"3933:4:10"}],"id":9476,"name":"MemberAccess","src":"3933:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9477,"name":"Identifier","src":"3946:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9467,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9478,"name":"Identifier","src":"3957:4:10"}],"id":9479,"name":"MemberAccess","src":"3957:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9467,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9480,"name":"Identifier","src":"3968:4:10"}],"id":9481,"name":"MemberAccess","src":"3968:11:10"}],"id":9482,"name":"FunctionCall","src":"3946:34:10"}],"id":9483,"name":"FunctionCall","src":"3913:68:10"}],"id":9484,"name":"Return","src":"3906:75:10"}],"id":9485,"name":"Block","src":"3896:92:10"}],"id":9486,"name":"FunctionDefinition","src":"3822:166:10"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9506,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9487,"name":"UserDefinedTypeName","src":"4176:10:10"}],"id":9488,"name":"VariableDeclaration","src":"4176:22:10"}],"id":9489,"name":"ParameterList","src":"4175:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9506,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9490,"name":"ElementaryTypeName","src":"4222:5:10"}],"id":9491,"name":"VariableDeclaration","src":"4222:12:10"}],"id":9492,"name":"ParameterList","src":"4221:14:10"},{"children":[{"attributes":{"functionReturnParameters":9492},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10299,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9488,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9493,"name":"Identifier","src":"4253:4:10"}],"id":9494,"name":"MemberAccess","src":"4253:9:10"}],"id":9495,"name":"MemberAccess","src":"4253:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":9319,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9488,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9496,"name":"Identifier","src":"4273:4:10"}],"id":9497,"name":"MemberAccess","src":"4273:16:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":9321,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9488,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9498,"name":"Identifier","src":"4291:4:10"}],"id":9499,"name":"MemberAccess","src":"4291:15:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":9319,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9488,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9500,"name":"Identifier","src":"4309:4:10"}],"id":9501,"name":"MemberAccess","src":"4309:16:10"}],"id":9502,"name":"BinaryOperation","src":"4291:34:10"}],"id":9503,"name":"FunctionCall","src":"4253:73:10"}],"id":9504,"name":"Return","src":"4246:80:10"}],"id":9505,"name":"Block","src":"4236:97:10"}],"id":9506,"name":"FunctionDefinition","src":"4161:172:10"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9626,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9507,"name":"ElementaryTypeName","src":"4675:5:10"}],"id":9508,"name":"VariableDeclaration","src":"4675:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9626,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9509,"name":"ElementaryTypeName","src":"4694:4:10"}],"id":9510,"name":"VariableDeclaration","src":"4694:11:10"},{"attributes":{"constant":false,"name":"rrtype","scope":9626,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9511,"name":"ElementaryTypeName","src":"4707:6:10"}],"id":9512,"name":"VariableDeclaration","src":"4707:13:10"}],"id":9513,"name":"ParameterList","src":"4674:47:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9626,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9514,"name":"ElementaryTypeName","src":"4745:4:10"}],"id":9515,"name":"VariableDeclaration","src":"4745:4:10"}],"id":9516,"name":"ParameterList","src":"4744:6:10"},{"children":[{"attributes":{"assignments":[9518]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":9625,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9517,"name":"ElementaryTypeName","src":"4761:5:10"}],"id":9518,"name":"VariableDeclaration","src":"4761:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9519,"name":"ElementaryTypeNameExpression","src":"4780:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9512,"type":"uint16","value":"rrtype"},"id":9520,"name":"Identifier","src":"4786:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9521,"name":"Literal","src":"4796:1:10"}],"id":9522,"name":"BinaryOperation","src":"4786:11:10"}],"id":9523,"name":"FunctionCall","src":"4780:18:10"}],"id":9524,"name":"VariableDeclarationStatement","src":"4761:37:10"},{"attributes":{"assignments":[9526]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":9625,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9525,"name":"ElementaryTypeName","src":"4808:5:10"}],"id":9526,"name":"VariableDeclaration","src":"4808:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9527,"name":"ElementaryTypeNameExpression","src":"4827:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9512,"type":"uint16","value":"rrtype"},"id":9528,"name":"Identifier","src":"4834:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":9529,"name":"Literal","src":"4843:4:10"}],"id":9530,"name":"BinaryOperation","src":"4834:13:10"}],"id":9531,"name":"TupleExpression","src":"4833:15:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9532,"name":"Literal","src":"4851:1:10"}],"id":9533,"name":"BinaryOperation","src":"4833:19:10"}],"id":9534,"name":"FunctionCall","src":"4827:26:10"}],"id":9535,"name":"VariableDeclarationStatement","src":"4808:45:10"},{"attributes":{"assignments":[9537]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":9625,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9536,"name":"ElementaryTypeName","src":"4863:5:10"}],"id":9537,"name":"VariableDeclaration","src":"4863:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9538,"name":"ElementaryTypeNameExpression","src":"4885:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9539,"name":"ElementaryTypeNameExpression","src":"4891:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9540,"name":"Literal","src":"4897:1:10"}],"id":9541,"name":"FunctionCall","src":"4891:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9542,"name":"ElementaryTypeNameExpression","src":"4904:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":9543,"name":"Literal","src":"4910:1:10"}],"id":9544,"name":"FunctionCall","src":"4904:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9545,"name":"ElementaryTypeNameExpression","src":"4915:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9512,"type":"uint16","value":"rrtype"},"id":9546,"name":"Identifier","src":"4921:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":9547,"name":"Literal","src":"4930:3:10"}],"id":9548,"name":"BinaryOperation","src":"4921:12:10"}],"id":9549,"name":"FunctionCall","src":"4915:19:10"}],"id":9550,"name":"BinaryOperation","src":"4904:30:10"}],"id":9551,"name":"TupleExpression","src":"4903:32:10"}],"id":9552,"name":"BinaryOperation","src":"4891:44:10"}],"id":9553,"name":"FunctionCall","src":"4885:51:10"}],"id":9554,"name":"VariableDeclarationStatement","src":"4863:73:10"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[9556]},"children":[{"attributes":{"constant":false,"name":"off","scope":9622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9555,"name":"ElementaryTypeName","src":"4951:4:10"}],"id":9556,"name":"VariableDeclaration","src":"4951:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"offset"},"id":9557,"name":"Identifier","src":"4962:6:10"}],"id":9558,"name":"VariableDeclarationStatement","src":"4951:17:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9559,"name":"Identifier","src":"4970:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9508,"type":"bytes memory","value":"self"},"id":9560,"name":"Identifier","src":"4976:4:10"}],"id":9561,"name":"MemberAccess","src":"4976:11:10"}],"id":9562,"name":"BinaryOperation","src":"4970:17:10"},{"children":[{"attributes":{"assignments":[9564]},"children":[{"attributes":{"constant":false,"name":"window","scope":9621,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9563,"name":"ElementaryTypeName","src":"5004:5:10"}],"id":9564,"name":"VariableDeclaration","src":"5004:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9508,"type":"bytes memory","value":"self"},"id":9565,"name":"Identifier","src":"5019:4:10"}],"id":9566,"name":"MemberAccess","src":"5019:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9567,"name":"Identifier","src":"5034:3:10"}],"id":9568,"name":"FunctionCall","src":"5019:19:10"}],"id":9569,"name":"VariableDeclarationStatement","src":"5004:34:10"},{"attributes":{"assignments":[9571]},"children":[{"attributes":{"constant":false,"name":"len","scope":9621,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9570,"name":"ElementaryTypeName","src":"5052:5:10"}],"id":9571,"name":"VariableDeclaration","src":"5052:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9508,"type":"bytes memory","value":"self"},"id":9572,"name":"Identifier","src":"5064:4:10"}],"id":9573,"name":"MemberAccess","src":"5064:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9574,"name":"Identifier","src":"5079:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9575,"name":"Literal","src":"5085:1:10"}],"id":9576,"name":"BinaryOperation","src":"5079:7:10"}],"id":9577,"name":"FunctionCall","src":"5064:23:10"}],"id":9578,"name":"VariableDeclarationStatement","src":"5052:35:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9518,"type":"uint8","value":"typeWindow"},"id":9579,"name":"Identifier","src":"5105:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9564,"type":"uint8","value":"window"},"id":9580,"name":"Identifier","src":"5118:6:10"}],"id":9581,"name":"BinaryOperation","src":"5105:19:10"},{"children":[{"attributes":{"functionReturnParameters":9516},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9582,"name":"Literal","src":"5213:5:10"}],"id":9583,"name":"Return","src":"5206:12:10"}],"id":9584,"name":"Block","src":"5126:107:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9518,"type":"uint8","value":"typeWindow"},"id":9585,"name":"Identifier","src":"5243:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9564,"type":"uint8","value":"window"},"id":9586,"name":"Identifier","src":"5257:6:10"}],"id":9587,"name":"BinaryOperation","src":"5243:20:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9571,"type":"uint8","value":"len"},"id":9588,"name":"Identifier","src":"5329:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9589,"name":"Literal","src":"5335:1:10"}],"id":9590,"name":"BinaryOperation","src":"5329:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9526,"type":"uint8","value":"windowByte"},"id":9591,"name":"Identifier","src":"5340:10:10"}],"id":9592,"name":"BinaryOperation","src":"5329:21:10"},{"children":[{"attributes":{"functionReturnParameters":9516},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9593,"name":"Literal","src":"5443:5:10"}],"id":9594,"name":"Return","src":"5436:12:10"}],"id":9595,"name":"Block","src":"5352:115:10"}],"id":9596,"name":"IfStatement","src":"5325:142:10"},{"attributes":{"functionReturnParameters":9516},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9508,"type":"bytes memory","value":"self"},"id":9597,"name":"Identifier","src":"5492:4:10"}],"id":9598,"name":"MemberAccess","src":"5492:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9599,"name":"Identifier","src":"5507:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9526,"type":"uint8","value":"windowByte"},"id":9600,"name":"Identifier","src":"5513:10:10"}],"id":9601,"name":"BinaryOperation","src":"5507:16:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9602,"name":"Literal","src":"5526:1:10"}],"id":9603,"name":"BinaryOperation","src":"5507:20:10"}],"id":9604,"name":"FunctionCall","src":"5492:36:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9537,"type":"uint8","value":"windowBitmask"},"id":9605,"name":"Identifier","src":"5531:13:10"}],"id":9606,"name":"BinaryOperation","src":"5492:52:10"}],"id":9607,"name":"TupleExpression","src":"5491:54:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9608,"name":"Literal","src":"5549:1:10"}],"id":9609,"name":"BinaryOperation","src":"5491:59:10"}],"id":9610,"name":"Return","src":"5484:66:10"}],"id":9611,"name":"Block","src":"5265:300:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9612,"name":"Identifier","src":"5630:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9571,"type":"uint8","value":"len"},"id":9613,"name":"Identifier","src":"5637:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9614,"name":"Literal","src":"5643:1:10"}],"id":9615,"name":"BinaryOperation","src":"5637:7:10"}],"id":9616,"name":"Assignment","src":"5630:14:10"}],"id":9617,"name":"ExpressionStatement","src":"5630:14:10"}],"id":9618,"name":"Block","src":"5571:88:10"}],"id":9619,"name":"IfStatement","src":"5239:420:10"}],"id":9620,"name":"IfStatement","src":"5101:558:10"}],"id":9621,"name":"Block","src":"4990:679:10"}],"id":9622,"name":"ForStatement","src":"4946:723:10"},{"attributes":{"functionReturnParameters":9516},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9623,"name":"Literal","src":"5686:5:10"}],"id":9624,"name":"Return","src":"5679:12:10"}],"id":9625,"name":"Block","src":"4751:947:10"}],"id":9626,"name":"FunctionDefinition","src":"4650:1048:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9781,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9627,"name":"ElementaryTypeName","src":"5726:5:10"}],"id":9628,"name":"VariableDeclaration","src":"5726:17:10"},{"attributes":{"constant":false,"name":"other","scope":9781,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9629,"name":"ElementaryTypeName","src":"5745:5:10"}],"id":9630,"name":"VariableDeclaration","src":"5745:18:10"}],"id":9631,"name":"ParameterList","src":"5725:39:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9781,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9632,"name":"ElementaryTypeName","src":"5788:3:10"}],"id":9633,"name":"VariableDeclaration","src":"5788:3:10"}],"id":9634,"name":"ParameterList","src":"5787:5:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":10092,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9635,"name":"Identifier","src":"5807:4:10"}],"id":9636,"name":"MemberAccess","src":"5807:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9637,"name":"Identifier","src":"5819:5:10"}],"id":9638,"name":"FunctionCall","src":"5807:18:10"},{"children":[{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9639,"name":"Literal","src":"5848:1:10"}],"id":9640,"name":"Return","src":"5841:8:10"}],"id":9641,"name":"Block","src":"5827:33:10"}],"id":9642,"name":"IfStatement","src":"5803:57:10"},{"attributes":{"assignments":[9644],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9643,"name":"ElementaryTypeName","src":"5870:4:10"}],"id":9644,"name":"VariableDeclaration","src":"5870:8:10"}],"id":9645,"name":"VariableDeclarationStatement","src":"5870:8:10"},{"attributes":{"assignments":[9647],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9646,"name":"ElementaryTypeName","src":"5888:4:10"}],"id":9647,"name":"VariableDeclaration","src":"5888:13:10"}],"id":9648,"name":"VariableDeclarationStatement","src":"5888:13:10"},{"attributes":{"assignments":[9650],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9649,"name":"ElementaryTypeName","src":"5911:4:10"}],"id":9650,"name":"VariableDeclaration","src":"5911:12:10"}],"id":9651,"name":"VariableDeclarationStatement","src":"5911:12:10"},{"attributes":{"assignments":[9653],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9652,"name":"ElementaryTypeName","src":"5933:4:10"}],"id":9653,"name":"VariableDeclaration","src":"5933:17:10"}],"id":9654,"name":"VariableDeclarationStatement","src":"5933:17:10"},{"attributes":{"assignments":[9656]},"children":[{"attributes":{"constant":false,"name":"counts","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9655,"name":"ElementaryTypeName","src":"5960:4:10"}],"id":9656,"name":"VariableDeclaration","src":"5960:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":9307,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9657,"name":"Identifier","src":"5974:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9658,"name":"Identifier","src":"5985:4:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9659,"name":"Literal","src":"5991:1:10"}],"id":9660,"name":"FunctionCall","src":"5974:19:10"}],"id":9661,"name":"VariableDeclarationStatement","src":"5960:33:10"},{"attributes":{"assignments":[9663]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9662,"name":"ElementaryTypeName","src":"6003:4:10"}],"id":9663,"name":"VariableDeclaration","src":"6003:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":9307,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9664,"name":"Identifier","src":"6022:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9665,"name":"Identifier","src":"6033:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9666,"name":"Literal","src":"6040:1:10"}],"id":9667,"name":"FunctionCall","src":"6022:20:10"}],"id":9668,"name":"VariableDeclarationStatement","src":"6003:39:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9669,"name":"Identifier","src":"6153:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9663,"type":"uint256","value":"othercounts"},"id":9670,"name":"Identifier","src":"6162:11:10"}],"id":9671,"name":"BinaryOperation","src":"6153:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9650,"type":"uint256","value":"prevoff"},"id":9672,"name":"Identifier","src":"6189:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9673,"name":"Identifier","src":"6199:3:10"}],"id":9674,"name":"Assignment","src":"6189:13:10"}],"id":9675,"name":"ExpressionStatement","src":"6189:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9676,"name":"Identifier","src":"6216:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9800,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9677,"name":"Identifier","src":"6222:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9678,"name":"Identifier","src":"6231:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9679,"name":"Identifier","src":"6237:3:10"}],"id":9680,"name":"FunctionCall","src":"6222:19:10"}],"id":9681,"name":"Assignment","src":"6216:25:10"}],"id":9682,"name":"ExpressionStatement","src":"6216:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9683,"name":"Identifier","src":"6255:6:10"}],"id":9684,"name":"UnaryOperation","src":"6255:8:10"}],"id":9685,"name":"ExpressionStatement","src":"6255:8:10"}],"id":9686,"name":"Block","src":"6175:99:10"}],"id":9687,"name":"WhileStatement","src":"6146:128:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9663,"type":"uint256","value":"othercounts"},"id":9688,"name":"Identifier","src":"6291:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9689,"name":"Identifier","src":"6305:6:10"}],"id":9690,"name":"BinaryOperation","src":"6291:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"otherprevoff"},"id":9691,"name":"Identifier","src":"6327:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9692,"name":"Identifier","src":"6342:8:10"}],"id":9693,"name":"Assignment","src":"6327:23:10"}],"id":9694,"name":"ExpressionStatement","src":"6327:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9695,"name":"Identifier","src":"6364:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9800,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9696,"name":"Identifier","src":"6375:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9697,"name":"Identifier","src":"6384:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9698,"name":"Identifier","src":"6391:8:10"}],"id":9699,"name":"FunctionCall","src":"6375:25:10"}],"id":9700,"name":"Assignment","src":"6364:36:10"}],"id":9701,"name":"ExpressionStatement","src":"6364:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9663,"type":"uint256","value":"othercounts"},"id":9702,"name":"Identifier","src":"6414:11:10"}],"id":9703,"name":"UnaryOperation","src":"6414:13:10"}],"id":9704,"name":"ExpressionStatement","src":"6414:13:10"}],"id":9705,"name":"Block","src":"6313:125:10"}],"id":9706,"name":"WhileStatement","src":"6284:154:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9707,"name":"Identifier","src":"6513:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9708,"name":"Literal","src":"6522:1:10"}],"id":9709,"name":"BinaryOperation","src":"6513:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":10038,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9710,"name":"Identifier","src":"6528:4:10"}],"id":9711,"name":"MemberAccess","src":"6528:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9712,"name":"Identifier","src":"6540:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9713,"name":"Identifier","src":"6545:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9714,"name":"Identifier","src":"6552:8:10"}],"id":9715,"name":"FunctionCall","src":"6528:33:10"}],"id":9716,"name":"UnaryOperation","src":"6527:34:10"}],"id":9717,"name":"BinaryOperation","src":"6513:48:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9650,"type":"uint256","value":"prevoff"},"id":9718,"name":"Identifier","src":"6577:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9719,"name":"Identifier","src":"6587:3:10"}],"id":9720,"name":"Assignment","src":"6577:13:10"}],"id":9721,"name":"ExpressionStatement","src":"6577:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9722,"name":"Identifier","src":"6604:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9800,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9723,"name":"Identifier","src":"6610:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9724,"name":"Identifier","src":"6619:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9725,"name":"Identifier","src":"6625:3:10"}],"id":9726,"name":"FunctionCall","src":"6610:19:10"}],"id":9727,"name":"Assignment","src":"6604:25:10"}],"id":9728,"name":"ExpressionStatement","src":"6604:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"otherprevoff"},"id":9729,"name":"Identifier","src":"6643:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9730,"name":"Identifier","src":"6658:8:10"}],"id":9731,"name":"Assignment","src":"6643:23:10"}],"id":9732,"name":"ExpressionStatement","src":"6643:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9733,"name":"Identifier","src":"6680:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9800,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9734,"name":"Identifier","src":"6691:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9735,"name":"Identifier","src":"6700:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9736,"name":"Identifier","src":"6707:8:10"}],"id":9737,"name":"FunctionCall","src":"6691:25:10"}],"id":9738,"name":"Assignment","src":"6680:36:10"}],"id":9739,"name":"ExpressionStatement","src":"6680:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9740,"name":"Identifier","src":"6730:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9741,"name":"Literal","src":"6740:1:10"}],"id":9742,"name":"Assignment","src":"6730:11:10"}],"id":9743,"name":"ExpressionStatement","src":"6730:11:10"}],"id":9744,"name":"Block","src":"6563:189:10"}],"id":9745,"name":"WhileStatement","src":"6506:246:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9746,"name":"Identifier","src":"6766:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9747,"name":"Literal","src":"6773:1:10"}],"id":9748,"name":"BinaryOperation","src":"6766:8:10"},{"children":[{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9749,"name":"Literal","src":"6798:1:10"}],"id":9750,"name":"UnaryOperation","src":"6797:2:10"}],"id":9751,"name":"Return","src":"6790:9:10"}],"id":9752,"name":"Block","src":"6776:34:10"}],"id":9753,"name":"IfStatement","src":"6762:48:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9754,"name":"Identifier","src":"6822:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9755,"name":"Literal","src":"6834:1:10"}],"id":9756,"name":"BinaryOperation","src":"6822:13:10"},{"children":[{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9757,"name":"Literal","src":"6858:1:10"}],"id":9758,"name":"Return","src":"6851:8:10"}],"id":9759,"name":"Block","src":"6837:33:10"}],"id":9760,"name":"IfStatement","src":"6819:51:10"},{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":9978,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9761,"name":"Identifier","src":"6887:4:10"}],"id":9762,"name":"MemberAccess","src":"6887:12:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9650,"type":"uint256","value":"prevoff"},"id":9763,"name":"Identifier","src":"6900:7:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9764,"name":"Literal","src":"6910:1:10"}],"id":9765,"name":"BinaryOperation","src":"6900:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9766,"name":"Identifier","src":"6913:4:10"}],"id":9767,"name":"MemberAccess","src":"6913:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9650,"type":"uint256","value":"prevoff"},"id":9768,"name":"Identifier","src":"6928:7:10"}],"id":9769,"name":"FunctionCall","src":"6913:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9770,"name":"Identifier","src":"6938:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"otherprevoff"},"id":9771,"name":"Identifier","src":"6945:12:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9772,"name":"Literal","src":"6960:1:10"}],"id":9773,"name":"BinaryOperation","src":"6945:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9774,"name":"Identifier","src":"6963:5:10"}],"id":9775,"name":"MemberAccess","src":"6963:15:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"otherprevoff"},"id":9776,"name":"Identifier","src":"6979:12:10"}],"id":9777,"name":"FunctionCall","src":"6963:29:10"}],"id":9778,"name":"FunctionCall","src":"6887:106:10"}],"id":9779,"name":"Return","src":"6880:113:10"}],"id":9780,"name":"Block","src":"5793:1207:10"}],"id":9781,"name":"FunctionDefinition","src":"5704:1296:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":9800,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9782,"name":"ElementaryTypeName","src":"7024:5:10"}],"id":9783,"name":"VariableDeclaration","src":"7024:17:10"},{"attributes":{"constant":false,"name":"off","scope":9800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9784,"name":"ElementaryTypeName","src":"7043:4:10"}],"id":9785,"name":"VariableDeclaration","src":"7043:8:10"}],"id":9786,"name":"ParameterList","src":"7023:29:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9787,"name":"ElementaryTypeName","src":"7075:4:10"}],"id":9788,"name":"VariableDeclaration","src":"7075:4:10"}],"id":9789,"name":"ParameterList","src":"7074:6:10"},{"children":[{"attributes":{"functionReturnParameters":9789},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9785,"type":"uint256","value":"off"},"id":9790,"name":"Identifier","src":"7098:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9791,"name":"Literal","src":"7104:1:10"}],"id":9792,"name":"BinaryOperation","src":"7098:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9783,"type":"bytes memory","value":"body"},"id":9793,"name":"Identifier","src":"7108:4:10"}],"id":9794,"name":"MemberAccess","src":"7108:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9785,"type":"uint256","value":"off"},"id":9795,"name":"Identifier","src":"7123:3:10"}],"id":9796,"name":"FunctionCall","src":"7108:19:10"}],"id":9797,"name":"BinaryOperation","src":"7098:29:10"}],"id":9798,"name":"Return","src":"7091:36:10"}],"id":9799,"name":"Block","src":"7081:53:10"}],"id":9800,"name":"FunctionDefinition","src":"7006:128:10"}],"id":9801,"name":"ContractDefinition","src":"150:6986:10"}],"id":9802,"name":"SourceUnit","src":"0:7137:10"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[9183]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":9116,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[9183],"name":"ResolverBase","scope":9184},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":9183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9117,"name":"ElementaryTypeName","src":"53:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":9118,"name":"Literal","src":"97:10:11"}],"id":9119,"name":"VariableDeclaration","src":"53:54:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":9183,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":9131,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9120,"name":"ElementaryTypeName","src":"141:6:11"}],"id":9121,"name":"VariableDeclaration","src":"141:18:11"}],"id":9122,"name":"ParameterList","src":"140:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":9131,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9123,"name":"ElementaryTypeName","src":"181:4:11"}],"id":9124,"name":"VariableDeclaration","src":"181:4:11"}],"id":9125,"name":"ParameterList","src":"180:6:11"},{"children":[{"attributes":{"functionReturnParameters":9125},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9121,"type":"bytes4","value":"interfaceID"},"id":9126,"name":"Identifier","src":"204:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9119,"type":"bytes4","value":"INTERFACE_META_ID"},"id":9127,"name":"Identifier","src":"219:17:11"}],"id":9128,"name":"BinaryOperation","src":"204:32:11"}],"id":9129,"name":"Return","src":"197:39:11"}],"id":9130,"name":"Block","src":"187:56:11"}],"id":9131,"name":"FunctionDefinition","src":"114:129:11"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":9183,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":9138,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9132,"name":"ElementaryTypeName","src":"271:7:11"}],"id":9133,"name":"VariableDeclaration","src":"271:12:11"}],"id":9134,"name":"ParameterList","src":"270:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":9138,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9135,"name":"ElementaryTypeName","src":"307:4:11"}],"id":9136,"name":"VariableDeclaration","src":"307:4:11"}],"id":9137,"name":"ParameterList","src":"306:6:11"}],"id":9138,"name":"FunctionDefinition","src":"249:64:11"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":9150,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9139,"name":"ElementaryTypeName","src":"339:7:11"}],"id":9140,"name":"VariableDeclaration","src":"339:12:11"}],"id":9141,"name":"ParameterList","src":"338:14:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":9142,"name":"Identifier","src":"363:7:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":9138,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":9143,"name":"Identifier","src":"371:12:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9140,"type":"bytes32","value":"node"},"id":9144,"name":"Identifier","src":"384:4:11"}],"id":9145,"name":"FunctionCall","src":"371:18:11"}],"id":9146,"name":"FunctionCall","src":"363:27:11"}],"id":9147,"name":"ExpressionStatement","src":"363:27:11"},{"id":9148,"name":"PlaceholderStatement","src":"400:1:11"}],"id":9149,"name":"Block","src":"353:55:11"}],"id":9150,"name":"ModifierDefinition","src":"319:89:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":9183,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":9166,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9151,"name":"ElementaryTypeName","src":"438:5:11"}],"id":9152,"name":"VariableDeclaration","src":"438:14:11"}],"id":9153,"name":"ParameterList","src":"437:16:11"},{"children":[{"attributes":{"constant":false,"name":"a","scope":9166,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":9154,"name":"ElementaryTypeName","src":"476:15:11"}],"id":9155,"name":"VariableDeclaration","src":"476:17:11"}],"id":9156,"name":"ParameterList","src":"475:19:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":9157,"name":"Identifier","src":"505:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9152,"type":"bytes memory","value":"b"},"id":9158,"name":"Identifier","src":"513:1:11"}],"id":9159,"name":"MemberAccess","src":"513:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9160,"name":"Literal","src":"525:2:11"}],"id":9161,"name":"BinaryOperation","src":"513:14:11"}],"id":9162,"name":"FunctionCall","src":"505:23:11"}],"id":9163,"name":"ExpressionStatement","src":"505:23:11"},{"attributes":{"externalReferences":[{"a":{"declaration":9155,"isOffset":false,"isSlot":false,"src":"561:1:11","valueSize":1}},{"b":{"declaration":9152,"isOffset":false,"isSlot":false,"src":"580:1:11","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":9164,"name":"InlineAssembly","src":"538:74:11"}],"id":9165,"name":"Block","src":"495:123:11"}],"id":9166,"name":"FunctionDefinition","src":"414:204:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":9183,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":9182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9167,"name":"ElementaryTypeName","src":"648:7:11"}],"id":9168,"name":"VariableDeclaration","src":"648:9:11"}],"id":9169,"name":"ParameterList","src":"647:11:11"},{"children":[{"attributes":{"constant":false,"name":"b","scope":9182,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9170,"name":"ElementaryTypeName","src":"681:5:11"}],"id":9171,"name":"VariableDeclaration","src":"681:14:11"}],"id":9172,"name":"ParameterList","src":"680:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9171,"type":"bytes memory","value":"b"},"id":9173,"name":"Identifier","src":"707:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9174,"name":"ElementaryTypeName","src":"715:5:11"}],"id":9175,"name":"NewExpression","src":"711:9:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9176,"name":"Literal","src":"721:2:11"}],"id":9177,"name":"FunctionCall","src":"711:13:11"}],"id":9178,"name":"Assignment","src":"707:17:11"}],"id":9179,"name":"ExpressionStatement","src":"707:17:11"},{"attributes":{"externalReferences":[{"b":{"declaration":9171,"isOffset":false,"isSlot":false,"src":"768:1:11","valueSize":1}},{"a":{"declaration":9168,"isOffset":false,"isSlot":false,"src":"780:1:11","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":9180,"name":"InlineAssembly","src":"734:73:11"}],"id":9181,"name":"Block","src":"697:116:11"}],"id":9182,"name":"FunctionDefinition","src":"624:189:11"}],"id":9183,"name":"ContractDefinition","src":"25:790:11"}],"id":9184,"name":"SourceUnit","src":"0:816:11"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[6146]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6012,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6147,"symbolAliases":[null],"unitAlias":""},"id":6013,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6146,9183],"name":"ABIResolver","scope":6147},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6014,"name":"UserDefinedTypeName","src":"80:12:12"}],"id":6015,"name":"InheritanceSpecifier","src":"80:12:12"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":6146,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6016,"name":"ElementaryTypeName","src":"99:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":6017,"name":"Literal","src":"142:10:12"}],"id":6018,"name":"VariableDeclaration","src":"99:53:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6024,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6019,"name":"ElementaryTypeName","src":"176:7:12"}],"id":6020,"name":"VariableDeclaration","src":"176:20:12"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":6024,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6021,"name":"ElementaryTypeName","src":"198:7:12"}],"id":6022,"name":"VariableDeclaration","src":"198:27:12"}],"id":6023,"name":"ParameterList","src":"175:51:12"}],"id":6024,"name":"EventDefinition","src":"159:68:12"},{"attributes":{"constant":false,"name":"abis","scope":6146,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6025,"name":"ElementaryTypeName","src":"241:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6026,"name":"ElementaryTypeName","src":"258:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":6027,"name":"ElementaryTypeName","src":"267:5:12"}],"id":6028,"name":"Mapping","src":"250:23:12"}],"id":6029,"name":"Mapping","src":"233:41:12"}],"id":6030,"name":"VariableDeclaration","src":"233:46:12"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":6146,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6031,"name":"ElementaryTypeName","src":"598:7:12"}],"id":6032,"name":"VariableDeclaration","src":"598:12:12"},{"attributes":{"constant":false,"name":"contentType","scope":6068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6033,"name":"ElementaryTypeName","src":"612:7:12"}],"id":6034,"name":"VariableDeclaration","src":"612:19:12"},{"attributes":{"constant":false,"name":"data","scope":6068,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6035,"name":"ElementaryTypeName","src":"633:5:12"}],"id":6036,"name":"VariableDeclaration","src":"633:19:12"}],"id":6037,"name":"ParameterList","src":"597:56:12"},{"attributes":{"parameters":[null]},"children":[],"id":6041,"name":"ParameterList","src":"680:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6038,"name":"Identifier","src":"663:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6032,"type":"bytes32","value":"node"},"id":6039,"name":"Identifier","src":"674:4:12"}],"id":6040,"name":"ModifierInvocation","src":"663:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":6042,"name":"Identifier","src":"735:7:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"contentType"},"id":6043,"name":"Identifier","src":"745:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6044,"name":"Literal","src":"759:1:12"}],"id":6045,"name":"BinaryOperation","src":"745:15:12"}],"id":6046,"name":"TupleExpression","src":"744:17:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"contentType"},"id":6047,"name":"Identifier","src":"764:11:12"}],"id":6048,"name":"BinaryOperation","src":"744:31:12"}],"id":6049,"name":"TupleExpression","src":"743:33:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6050,"name":"Literal","src":"780:1:12"}],"id":6051,"name":"BinaryOperation","src":"743:38:12"}],"id":6052,"name":"FunctionCall","src":"735:47:12"}],"id":6053,"name":"ExpressionStatement","src":"735:47:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":6054,"name":"Identifier","src":"793:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6032,"type":"bytes32","value":"node"},"id":6055,"name":"Identifier","src":"798:4:12"}],"id":6057,"name":"IndexAccess","src":"793:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"contentType"},"id":6056,"name":"Identifier","src":"804:11:12"}],"id":6058,"name":"IndexAccess","src":"793:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6036,"type":"bytes calldata","value":"data"},"id":6059,"name":"Identifier","src":"819:4:12"}],"id":6060,"name":"Assignment","src":"793:30:12"}],"id":6061,"name":"ExpressionStatement","src":"793:30:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":6062,"name":"Identifier","src":"838:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6032,"type":"bytes32","value":"node"},"id":6063,"name":"Identifier","src":"849:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"contentType"},"id":6064,"name":"Identifier","src":"855:11:12"}],"id":6065,"name":"FunctionCall","src":"838:29:12"}],"id":6066,"name":"EmitStatement","src":"833:34:12"}],"id":6067,"name":"Block","src":"680:194:12"}],"id":6068,"name":"FunctionDefinition","src":"582:292:12"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":6146,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6128,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6069,"name":"ElementaryTypeName","src":"1208:7:12"}],"id":6070,"name":"VariableDeclaration","src":"1208:12:12"},{"attributes":{"constant":false,"name":"contentTypes","scope":6128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6071,"name":"ElementaryTypeName","src":"1222:7:12"}],"id":6072,"name":"VariableDeclaration","src":"1222:20:12"}],"id":6073,"name":"ParameterList","src":"1207:36:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":6128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6074,"name":"ElementaryTypeName","src":"1267:7:12"}],"id":6075,"name":"VariableDeclaration","src":"1267:7:12"},{"attributes":{"constant":false,"name":"","scope":6128,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6076,"name":"ElementaryTypeName","src":"1276:5:12"}],"id":6077,"name":"VariableDeclaration","src":"1276:12:12"}],"id":6078,"name":"ParameterList","src":"1266:23:12"},{"children":[{"attributes":{"assignments":[6082]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":6127,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6079,"name":"ElementaryTypeName","src":"1308:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":6080,"name":"ElementaryTypeName","src":"1317:5:12"}],"id":6081,"name":"Mapping","src":"1300:23:12"}],"id":6082,"name":"VariableDeclaration","src":"1300:38:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":6083,"name":"Identifier","src":"1341:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6070,"type":"bytes32","value":"node"},"id":6084,"name":"Identifier","src":"1346:4:12"}],"id":6085,"name":"IndexAccess","src":"1341:10:12"}],"id":6086,"name":"VariableDeclarationStatement","src":"1300:51:12"},{"children":[{"attributes":{"assignments":[6088]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":6120,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6087,"name":"ElementaryTypeName","src":"1367:7:12"}],"id":6088,"name":"VariableDeclaration","src":"1367:19:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6089,"name":"Literal","src":"1389:1:12"}],"id":6090,"name":"VariableDeclarationStatement","src":"1367:23:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6091,"name":"Identifier","src":"1392:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6072,"type":"uint256","value":"contentTypes"},"id":6092,"name":"Identifier","src":"1407:12:12"}],"id":6093,"name":"BinaryOperation","src":"1392:27:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6094,"name":"Identifier","src":"1421:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6095,"name":"Literal","src":"1437:1:12"}],"id":6096,"name":"Assignment","src":"1421:17:12"}],"id":6097,"name":"ExpressionStatement","src":"1421:17:12"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6098,"name":"Identifier","src":"1459:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6072,"type":"uint256","value":"contentTypes"},"id":6099,"name":"Identifier","src":"1473:12:12"}],"id":6100,"name":"BinaryOperation","src":"1459:26:12"}],"id":6101,"name":"TupleExpression","src":"1458:28:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6102,"name":"Literal","src":"1490:1:12"}],"id":6103,"name":"BinaryOperation","src":"1458:33:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6082,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":6104,"name":"Identifier","src":"1495:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6105,"name":"Identifier","src":"1502:11:12"}],"id":6106,"name":"IndexAccess","src":"1495:19:12"}],"id":6107,"name":"MemberAccess","src":"1495:26:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6108,"name":"Literal","src":"1524:1:12"}],"id":6109,"name":"BinaryOperation","src":"1495:30:12"}],"id":6110,"name":"BinaryOperation","src":"1458:67:12"},{"children":[{"attributes":{"functionReturnParameters":6078},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6111,"name":"Identifier","src":"1553:11:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6082,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":6112,"name":"Identifier","src":"1566:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6113,"name":"Identifier","src":"1573:11:12"}],"id":6114,"name":"IndexAccess","src":"1566:19:12"}],"id":6115,"name":"TupleExpression","src":"1552:34:12"}],"id":6116,"name":"Return","src":"1545:41:12"}],"id":6117,"name":"Block","src":"1527:74:12"}],"id":6118,"name":"IfStatement","src":"1454:147:12"}],"id":6119,"name":"Block","src":"1440:171:12"}],"id":6120,"name":"ForStatement","src":"1362:249:12"},{"attributes":{"functionReturnParameters":6078},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6121,"name":"Literal","src":"1629:1:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6122,"name":"ElementaryTypeNameExpression","src":"1632:5:12"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6123,"name":"Literal","src":"1638:2:12"}],"id":6124,"name":"FunctionCall","src":"1632:9:12"}],"id":6125,"name":"TupleExpression","src":"1628:14:12"}],"id":6126,"name":"Return","src":"1621:21:12"}],"id":6127,"name":"Block","src":"1290:359:12"}],"id":6128,"name":"FunctionDefinition","src":"1195:454:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6146,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6145,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6129,"name":"ElementaryTypeName","src":"1682:6:12"}],"id":6130,"name":"VariableDeclaration","src":"1682:18:12"}],"id":6131,"name":"ParameterList","src":"1681:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":6145,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6132,"name":"ElementaryTypeName","src":"1722:4:12"}],"id":6133,"name":"VariableDeclaration","src":"1722:4:12"}],"id":6134,"name":"ParameterList","src":"1721:6:12"},{"children":[{"attributes":{"functionReturnParameters":6134},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6130,"type":"bytes4","value":"interfaceID"},"id":6135,"name":"Identifier","src":"1745:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6018,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":6136,"name":"Identifier","src":"1760:16:12"}],"id":6137,"name":"BinaryOperation","src":"1745:31:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10578,"type":"contract super ABIResolver","value":"super"},"id":6138,"name":"Identifier","src":"1780:5:12"}],"id":6139,"name":"MemberAccess","src":"1780:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6130,"type":"bytes4","value":"interfaceID"},"id":6140,"name":"Identifier","src":"1804:11:12"}],"id":6141,"name":"FunctionCall","src":"1780:36:12"}],"id":6142,"name":"BinaryOperation","src":"1745:71:12"}],"id":6143,"name":"Return","src":"1738:78:12"}],"id":6144,"name":"Block","src":"1728:95:12"}],"id":6145,"name":"FunctionDefinition","src":"1655:168:12"}],"id":6146,"name":"ContractDefinition","src":"56:1769:12"}],"id":6147,"name":"SourceUnit","src":"0:1826:12"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[6305]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6148,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6306,"symbolAliases":[null],"unitAlias":""},"id":6149,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6305,9183],"name":"AddrResolver","scope":6306},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6150,"name":"UserDefinedTypeName","src":"81:12:13"}],"id":6151,"name":"InheritanceSpecifier","src":"81:12:13"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":6305,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6152,"name":"ElementaryTypeName","src":"100:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":6153,"name":"Literal","src":"144:10:13"}],"id":6154,"name":"VariableDeclaration","src":"100:54:13"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":6305,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6155,"name":"ElementaryTypeName","src":"160:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":6156,"name":"Literal","src":"207:10:13"}],"id":6157,"name":"VariableDeclaration","src":"160:57:13"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":6305,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6158,"name":"ElementaryTypeName","src":"223:4:13"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":6159,"name":"Literal","src":"261:2:13"}],"id":6160,"name":"VariableDeclaration","src":"223:40:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6166,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6161,"name":"ElementaryTypeName","src":"288:7:13"}],"id":6162,"name":"VariableDeclaration","src":"288:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":6166,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6163,"name":"ElementaryTypeName","src":"310:7:13"}],"id":6164,"name":"VariableDeclaration","src":"310:9:13"}],"id":6165,"name":"ParameterList","src":"287:33:13"}],"id":6166,"name":"EventDefinition","src":"270:51:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6174,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6167,"name":"ElementaryTypeName","src":"347:7:13"}],"id":6168,"name":"VariableDeclaration","src":"347:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":6174,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6169,"name":"ElementaryTypeName","src":"369:4:13"}],"id":6170,"name":"VariableDeclaration","src":"369:13:13"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":6174,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6171,"name":"ElementaryTypeName","src":"384:5:13"}],"id":6172,"name":"VariableDeclaration","src":"384:16:13"}],"id":6173,"name":"ParameterList","src":"346:55:13"}],"id":6174,"name":"EventDefinition","src":"326:76:13"},{"attributes":{"constant":false,"name":"_addresses","scope":6305,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6175,"name":"ElementaryTypeName","src":"416:7:13"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6176,"name":"ElementaryTypeName","src":"433:4:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":6177,"name":"ElementaryTypeName","src":"439:5:13"}],"id":6178,"name":"Mapping","src":"425:20:13"}],"id":6179,"name":"Mapping","src":"408:38:13"}],"id":6180,"name":"VariableDeclaration","src":"408:49:13"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":6305,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6199,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6181,"name":"ElementaryTypeName","src":"698:7:13"}],"id":6182,"name":"VariableDeclaration","src":"698:12:13"},{"attributes":{"constant":false,"name":"a","scope":6199,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6183,"name":"ElementaryTypeName","src":"712:7:13"}],"id":6184,"name":"VariableDeclaration","src":"712:9:13"}],"id":6185,"name":"ParameterList","src":"697:25:13"},{"attributes":{"parameters":[null]},"children":[],"id":6189,"name":"ParameterList","src":"749:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6186,"name":"Identifier","src":"732:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6182,"type":"bytes32","value":"node"},"id":6187,"name":"Identifier","src":"743:4:13"}],"id":6188,"name":"ModifierInvocation","src":"732:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6267,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":6190,"name":"Identifier","src":"759:15:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6182,"type":"bytes32","value":"node"},"id":6191,"name":"Identifier","src":"775:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"COIN_TYPE_ETH"},"id":6192,"name":"Identifier","src":"781:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9182,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":6193,"name":"Identifier","src":"796:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6184,"type":"address","value":"a"},"id":6194,"name":"Identifier","src":"811:1:13"}],"id":6195,"name":"FunctionCall","src":"796:17:13"}],"id":6196,"name":"FunctionCall","src":"759:55:13"}],"id":6197,"name":"ExpressionStatement","src":"759:55:13"}],"id":6198,"name":"Block","src":"749:72:13"}],"id":6199,"name":"FunctionDefinition","src":"681:140:13"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":6305,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6228,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6200,"name":"ElementaryTypeName","src":"994:7:13"}],"id":6201,"name":"VariableDeclaration","src":"994:12:13"}],"id":6202,"name":"ParameterList","src":"993:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":6228,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":6203,"name":"ElementaryTypeName","src":"1029:15:13"}],"id":6204,"name":"VariableDeclaration","src":"1029:15:13"}],"id":6205,"name":"ParameterList","src":"1028:17:13"},{"children":[{"attributes":{"assignments":[6207]},"children":[{"attributes":{"constant":false,"name":"a","scope":6227,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6206,"name":"ElementaryTypeName","src":"1056:5:13"}],"id":6207,"name":"VariableDeclaration","src":"1056:14:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6228,6283],"referencedDeclaration":6283,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":6208,"name":"Identifier","src":"1073:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6201,"type":"bytes32","value":"node"},"id":6209,"name":"Identifier","src":"1078:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"COIN_TYPE_ETH"},"id":6210,"name":"Identifier","src":"1084:13:13"}],"id":6211,"name":"FunctionCall","src":"1073:25:13"}],"id":6212,"name":"VariableDeclarationStatement","src":"1056:42:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6207,"type":"bytes memory","value":"a"},"id":6213,"name":"Identifier","src":"1111:1:13"}],"id":6214,"name":"MemberAccess","src":"1111:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6215,"name":"Literal","src":"1123:1:13"}],"id":6216,"name":"BinaryOperation","src":"1111:13:13"},{"children":[{"attributes":{"functionReturnParameters":6205},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6217,"name":"ElementaryTypeNameExpression","src":"1147:7:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6218,"name":"Literal","src":"1155:1:13"}],"id":6219,"name":"FunctionCall","src":"1147:10:13"}],"id":6220,"name":"Return","src":"1140:17:13"}],"id":6221,"name":"Block","src":"1126:42:13"}],"id":6222,"name":"IfStatement","src":"1108:60:13"},{"attributes":{"functionReturnParameters":6205},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9166,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":6223,"name":"Identifier","src":"1184:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6207,"type":"bytes memory","value":"a"},"id":6224,"name":"Identifier","src":"1199:1:13"}],"id":6225,"name":"FunctionCall","src":"1184:17:13"}],"id":6226,"name":"Return","src":"1177:24:13"}],"id":6227,"name":"Block","src":"1046:162:13"}],"id":6228,"name":"FunctionDefinition","src":"980:228:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":6305,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6267,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6229,"name":"ElementaryTypeName","src":"1239:7:13"}],"id":6230,"name":"VariableDeclaration","src":"1239:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":6267,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6231,"name":"ElementaryTypeName","src":"1253:4:13"}],"id":6232,"name":"VariableDeclaration","src":"1253:13:13"},{"attributes":{"constant":false,"name":"a","scope":6267,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6233,"name":"ElementaryTypeName","src":"1268:5:13"}],"id":6234,"name":"VariableDeclaration","src":"1268:14:13"}],"id":6235,"name":"ParameterList","src":"1238:45:13"},{"attributes":{"parameters":[null]},"children":[],"id":6239,"name":"ParameterList","src":"1308:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6236,"name":"Identifier","src":"1291:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6230,"type":"bytes32","value":"node"},"id":6237,"name":"Identifier","src":"1302:4:13"}],"id":6238,"name":"ModifierInvocation","src":"1291:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6174,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":6240,"name":"Identifier","src":"1323:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6230,"type":"bytes32","value":"node"},"id":6241,"name":"Identifier","src":"1338:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6232,"type":"uint256","value":"coinType"},"id":6242,"name":"Identifier","src":"1344:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes memory","value":"a"},"id":6243,"name":"Identifier","src":"1354:1:13"}],"id":6244,"name":"FunctionCall","src":"1323:33:13"}],"id":6245,"name":"EmitStatement","src":"1318:38:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6232,"type":"uint256","value":"coinType"},"id":6246,"name":"Identifier","src":"1369:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"COIN_TYPE_ETH"},"id":6247,"name":"Identifier","src":"1381:13:13"}],"id":6248,"name":"BinaryOperation","src":"1369:25:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":6166,"type":"function (bytes32,address)","value":"AddrChanged"},"id":6249,"name":"Identifier","src":"1415:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6230,"type":"bytes32","value":"node"},"id":6250,"name":"Identifier","src":"1427:4:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9166,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":6251,"name":"Identifier","src":"1433:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes memory","value":"a"},"id":6252,"name":"Identifier","src":"1448:1:13"}],"id":6253,"name":"FunctionCall","src":"1433:17:13"}],"id":6254,"name":"FunctionCall","src":"1415:36:13"}],"id":6255,"name":"EmitStatement","src":"1410:41:13"}],"id":6256,"name":"Block","src":"1396:66:13"}],"id":6257,"name":"IfStatement","src":"1366:96:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6180,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":6258,"name":"Identifier","src":"1471:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6230,"type":"bytes32","value":"node"},"id":6259,"name":"Identifier","src":"1482:4:13"}],"id":6261,"name":"IndexAccess","src":"1471:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6232,"type":"uint256","value":"coinType"},"id":6260,"name":"Identifier","src":"1488:8:13"}],"id":6262,"name":"IndexAccess","src":"1471:26:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes memory","value":"a"},"id":6263,"name":"Identifier","src":"1500:1:13"}],"id":6264,"name":"Assignment","src":"1471:30:13"}],"id":6265,"name":"ExpressionStatement","src":"1471:30:13"}],"id":6266,"name":"Block","src":"1308:200:13"}],"id":6267,"name":"FunctionDefinition","src":"1214:294:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":6305,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6283,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6268,"name":"ElementaryTypeName","src":"1528:7:13"}],"id":6269,"name":"VariableDeclaration","src":"1528:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":6283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6270,"name":"ElementaryTypeName","src":"1542:4:13"}],"id":6271,"name":"VariableDeclaration","src":"1542:13:13"}],"id":6272,"name":"ParameterList","src":"1527:29:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":6283,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6273,"name":"ElementaryTypeName","src":"1577:5:13"}],"id":6274,"name":"VariableDeclaration","src":"1577:12:13"}],"id":6275,"name":"ParameterList","src":"1576:14:13"},{"children":[{"attributes":{"functionReturnParameters":6275},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6180,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":6276,"name":"Identifier","src":"1608:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6269,"type":"bytes32","value":"node"},"id":6277,"name":"Identifier","src":"1619:4:13"}],"id":6278,"name":"IndexAccess","src":"1608:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6271,"type":"uint256","value":"coinType"},"id":6279,"name":"Identifier","src":"1625:8:13"}],"id":6280,"name":"IndexAccess","src":"1608:26:13"}],"id":6281,"name":"Return","src":"1601:33:13"}],"id":6282,"name":"Block","src":"1591:50:13"}],"id":6283,"name":"FunctionDefinition","src":"1514:127:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6305,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6304,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6284,"name":"ElementaryTypeName","src":"1674:6:13"}],"id":6285,"name":"VariableDeclaration","src":"1674:18:13"}],"id":6286,"name":"ParameterList","src":"1673:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":6304,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6287,"name":"ElementaryTypeName","src":"1714:4:13"}],"id":6288,"name":"VariableDeclaration","src":"1714:4:13"}],"id":6289,"name":"ParameterList","src":"1713:6:13"},{"children":[{"attributes":{"functionReturnParameters":6289},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6285,"type":"bytes4","value":"interfaceID"},"id":6290,"name":"Identifier","src":"1737:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":6291,"name":"Identifier","src":"1752:17:13"}],"id":6292,"name":"BinaryOperation","src":"1737:32:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6285,"type":"bytes4","value":"interfaceID"},"id":6293,"name":"Identifier","src":"1773:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":6294,"name":"Identifier","src":"1788:20:13"}],"id":6295,"name":"BinaryOperation","src":"1773:35:13"}],"id":6296,"name":"BinaryOperation","src":"1737:71:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10580,"type":"contract super AddrResolver","value":"super"},"id":6297,"name":"Identifier","src":"1812:5:13"}],"id":6298,"name":"MemberAccess","src":"1812:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6285,"type":"bytes4","value":"interfaceID"},"id":6299,"name":"Identifier","src":"1836:11:13"}],"id":6300,"name":"FunctionCall","src":"1812:36:13"}],"id":6301,"name":"BinaryOperation","src":"1737:111:13"}],"id":6302,"name":"Return","src":"1730:118:13"}],"id":6303,"name":"Block","src":"1720:135:13"}],"id":6304,"name":"FunctionDefinition","src":"1647:208:13"}],"id":6305,"name":"ContractDefinition","src":"56:1801:13"}],"id":6306,"name":"SourceUnit","src":"0:1857:13"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[6375]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6307,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6376,"symbolAliases":[null],"unitAlias":""},"id":6308,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6375,9183],"name":"ContentHashResolver","scope":6376},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6309,"name":"UserDefinedTypeName","src":"88:12:14"}],"id":6310,"name":"InheritanceSpecifier","src":"88:12:14"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":6375,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6311,"name":"ElementaryTypeName","src":"107:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":6312,"name":"Literal","src":"159:10:14"}],"id":6313,"name":"VariableDeclaration","src":"107:62:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6319,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6314,"name":"ElementaryTypeName","src":"201:7:14"}],"id":6315,"name":"VariableDeclaration","src":"201:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":6319,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6316,"name":"ElementaryTypeName","src":"223:5:14"}],"id":6317,"name":"VariableDeclaration","src":"223:10:14"}],"id":6318,"name":"ParameterList","src":"200:34:14"}],"id":6319,"name":"EventDefinition","src":"176:59:14"},{"attributes":{"constant":false,"name":"hashes","scope":6375,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6320,"name":"ElementaryTypeName","src":"249:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":6321,"name":"ElementaryTypeName","src":"258:5:14"}],"id":6322,"name":"Mapping","src":"241:23:14"}],"id":6323,"name":"VariableDeclaration","src":"241:30:14"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":6375,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6345,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6324,"name":"ElementaryTypeName","src":"529:7:14"}],"id":6325,"name":"VariableDeclaration","src":"529:12:14"},{"attributes":{"constant":false,"name":"hash","scope":6345,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6326,"name":"ElementaryTypeName","src":"543:5:14"}],"id":6327,"name":"VariableDeclaration","src":"543:19:14"}],"id":6328,"name":"ParameterList","src":"528:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":6332,"name":"ParameterList","src":"590:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6329,"name":"Identifier","src":"573:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"bytes32","value":"node"},"id":6330,"name":"Identifier","src":"584:4:14"}],"id":6331,"name":"ModifierInvocation","src":"573:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6323,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":6333,"name":"Identifier","src":"600:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"bytes32","value":"node"},"id":6334,"name":"Identifier","src":"607:4:14"}],"id":6335,"name":"IndexAccess","src":"600:12:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6327,"type":"bytes calldata","value":"hash"},"id":6336,"name":"Identifier","src":"615:4:14"}],"id":6337,"name":"Assignment","src":"600:19:14"}],"id":6338,"name":"ExpressionStatement","src":"600:19:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6319,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":6339,"name":"Identifier","src":"634:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"bytes32","value":"node"},"id":6340,"name":"Identifier","src":"653:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6327,"type":"bytes calldata","value":"hash"},"id":6341,"name":"Identifier","src":"659:4:14"}],"id":6342,"name":"FunctionCall","src":"634:30:14"}],"id":6343,"name":"EmitStatement","src":"629:35:14"}],"id":6344,"name":"Block","src":"590:81:14"}],"id":6345,"name":"FunctionDefinition","src":"505:166:14"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":6375,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6357,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6346,"name":"ElementaryTypeName","src":"859:7:14"}],"id":6347,"name":"VariableDeclaration","src":"859:12:14"}],"id":6348,"name":"ParameterList","src":"858:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6349,"name":"ElementaryTypeName","src":"896:5:14"}],"id":6350,"name":"VariableDeclaration","src":"896:12:14"}],"id":6351,"name":"ParameterList","src":"895:14:14"},{"children":[{"attributes":{"functionReturnParameters":6351},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6323,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":6352,"name":"Identifier","src":"927:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6347,"type":"bytes32","value":"node"},"id":6353,"name":"Identifier","src":"934:4:14"}],"id":6354,"name":"IndexAccess","src":"927:12:14"}],"id":6355,"name":"Return","src":"920:19:14"}],"id":6356,"name":"Block","src":"910:36:14"}],"id":6357,"name":"FunctionDefinition","src":"838:108:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6375,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6374,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6358,"name":"ElementaryTypeName","src":"979:6:14"}],"id":6359,"name":"VariableDeclaration","src":"979:18:14"}],"id":6360,"name":"ParameterList","src":"978:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":6374,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6361,"name":"ElementaryTypeName","src":"1019:4:14"}],"id":6362,"name":"VariableDeclaration","src":"1019:4:14"}],"id":6363,"name":"ParameterList","src":"1018:6:14"},{"children":[{"attributes":{"functionReturnParameters":6363},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6359,"type":"bytes4","value":"interfaceID"},"id":6364,"name":"Identifier","src":"1042:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6313,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":6365,"name":"Identifier","src":"1057:25:14"}],"id":6366,"name":"BinaryOperation","src":"1042:40:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10582,"type":"contract super ContentHashResolver","value":"super"},"id":6367,"name":"Identifier","src":"1086:5:14"}],"id":6368,"name":"MemberAccess","src":"1086:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6359,"type":"bytes4","value":"interfaceID"},"id":6369,"name":"Identifier","src":"1110:11:14"}],"id":6370,"name":"FunctionCall","src":"1086:36:14"}],"id":6371,"name":"BinaryOperation","src":"1042:80:14"}],"id":6372,"name":"Return","src":"1035:87:14"}],"id":6373,"name":"Block","src":"1025:104:14"}],"id":6374,"name":"FunctionDefinition","src":"952:177:14"}],"id":6375,"name":"ContractDefinition","src":"56:1075:14"}],"id":6376,"name":"SourceUnit","src":"0:1132:14"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[6866]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6377,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6867,"symbolAliases":[null],"unitAlias":""},"id":6378,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":9802,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":6867,"symbolAliases":[null],"unitAlias":""},"id":6379,"name":"ImportDirective","src":"55:24:15"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6866,9183],"name":"DNSResolver","scope":6867},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6380,"name":"UserDefinedTypeName","src":"105:12:15"}],"id":6381,"name":"InheritanceSpecifier","src":"105:12:15"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":9801,"type":"library RRUtils"},"id":6382,"name":"UserDefinedTypeName","src":"130:7:15"}],"id":6383,"name":"UsingForDirective","src":"124:20:15"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10522,"type":"library ENSBytesUtils"},"id":6384,"name":"UserDefinedTypeName","src":"155:13:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6385,"name":"ElementaryTypeName","src":"173:5:15"}],"id":6386,"name":"UsingForDirective","src":"149:30:15"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":6866,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6387,"name":"ElementaryTypeName","src":"185:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":6388,"name":"Literal","src":"235:10:15"}],"id":6389,"name":"VariableDeclaration","src":"185:60:15"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":6866,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6390,"name":"ElementaryTypeName","src":"251:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":6391,"name":"Literal","src":"299:10:15"}],"id":6392,"name":"VariableDeclaration","src":"251:58:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6402,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6393,"name":"ElementaryTypeName","src":"430:7:15"}],"id":6394,"name":"VariableDeclaration","src":"430:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6402,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6395,"name":"ElementaryTypeName","src":"452:5:15"}],"id":6396,"name":"VariableDeclaration","src":"452:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":6402,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6397,"name":"ElementaryTypeName","src":"464:6:15"}],"id":6398,"name":"VariableDeclaration","src":"464:15:15"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":6402,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6399,"name":"ElementaryTypeName","src":"481:5:15"}],"id":6400,"name":"VariableDeclaration","src":"481:12:15"}],"id":6401,"name":"ParameterList","src":"429:65:15"}],"id":6402,"name":"EventDefinition","src":"407:88:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6410,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6403,"name":"ElementaryTypeName","src":"614:7:15"}],"id":6404,"name":"VariableDeclaration","src":"614:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6410,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6405,"name":"ElementaryTypeName","src":"636:5:15"}],"id":6406,"name":"VariableDeclaration","src":"636:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":6410,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6407,"name":"ElementaryTypeName","src":"648:6:15"}],"id":6408,"name":"VariableDeclaration","src":"648:15:15"}],"id":6409,"name":"ParameterList","src":"613:51:15"}],"id":6410,"name":"EventDefinition","src":"591:74:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6414,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6411,"name":"ElementaryTypeName","src":"777:7:15"}],"id":6412,"name":"VariableDeclaration","src":"777:20:15"}],"id":6413,"name":"ParameterList","src":"776:22:15"}],"id":6414,"name":"EventDefinition","src":"756:43:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6422,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6415,"name":"ElementaryTypeName","src":"913:7:15"}],"id":6416,"name":"VariableDeclaration","src":"913:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":6422,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6417,"name":"ElementaryTypeName","src":"935:5:15"}],"id":6418,"name":"VariableDeclaration","src":"935:18:15"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":6422,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6419,"name":"ElementaryTypeName","src":"955:5:15"}],"id":6420,"name":"VariableDeclaration","src":"955:14:15"}],"id":6421,"name":"ParameterList","src":"912:58:15"}],"id":6422,"name":"EventDefinition","src":"888:83:15"},{"attributes":{"constant":false,"name":"zonehashes","scope":6866,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6423,"name":"ElementaryTypeName","src":"1181:7:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6424,"name":"ElementaryTypeName","src":"1190:5:15"}],"id":6425,"name":"Mapping","src":"1173:23:15"}],"id":6426,"name":"VariableDeclaration","src":"1173:42:15"},{"attributes":{"constant":false,"name":"versions","scope":6866,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6427,"name":"ElementaryTypeName","src":"1433:7:15"},{"attributes":{"name":"uint256","type":"uint256"},"id":6428,"name":"ElementaryTypeName","src":"1442:7:15"}],"id":6429,"name":"Mapping","src":"1425:25:15"}],"id":6430,"name":"VariableDeclaration","src":"1425:42:15"},{"attributes":{"constant":false,"name":"records","scope":6866,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6431,"name":"ElementaryTypeName","src":"1589:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6432,"name":"ElementaryTypeName","src":"1606:7:15"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6433,"name":"ElementaryTypeName","src":"1623:7:15"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6434,"name":"ElementaryTypeName","src":"1640:6:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6435,"name":"ElementaryTypeName","src":"1648:5:15"}],"id":6436,"name":"Mapping","src":"1632:22:15"}],"id":6437,"name":"Mapping","src":"1615:40:15"}],"id":6438,"name":"Mapping","src":"1598:58:15"}],"id":6439,"name":"Mapping","src":"1581:76:15"}],"id":6440,"name":"VariableDeclaration","src":"1581:92:15"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":6866,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6441,"name":"ElementaryTypeName","src":"1853:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6442,"name":"ElementaryTypeName","src":"1870:7:15"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6443,"name":"ElementaryTypeName","src":"1887:7:15"},{"attributes":{"name":"uint16","type":"uint16"},"id":6444,"name":"ElementaryTypeName","src":"1896:6:15"}],"id":6445,"name":"Mapping","src":"1879:24:15"}],"id":6446,"name":"Mapping","src":"1862:42:15"}],"id":6447,"name":"Mapping","src":"1845:60:15"}],"id":6448,"name":"VariableDeclaration","src":"1845:85:15"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":6866,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6613,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6449,"name":"ElementaryTypeName","src":"2877:7:15"}],"id":6450,"name":"VariableDeclaration","src":"2877:12:15"},{"attributes":{"constant":false,"name":"data","scope":6613,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6451,"name":"ElementaryTypeName","src":"2891:5:15"}],"id":6452,"name":"VariableDeclaration","src":"2891:19:15"}],"id":6453,"name":"ParameterList","src":"2876:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6457,"name":"ParameterList","src":"2938:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6454,"name":"Identifier","src":"2921:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6450,"type":"bytes32","value":"node"},"id":6455,"name":"Identifier","src":"2932:4:15"}],"id":6456,"name":"ModifierInvocation","src":"2921:16:15"},{"children":[{"attributes":{"assignments":[6459]},"children":[{"attributes":{"constant":false,"name":"resource","scope":6612,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6458,"name":"ElementaryTypeName","src":"2948:6:15"}],"id":6459,"name":"VariableDeclaration","src":"2948:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6460,"name":"Literal","src":"2966:1:15"}],"id":6461,"name":"VariableDeclarationStatement","src":"2948:19:15"},{"attributes":{"assignments":[6463]},"children":[{"attributes":{"constant":false,"name":"offset","scope":6612,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6462,"name":"ElementaryTypeName","src":"2977:7:15"}],"id":6463,"name":"VariableDeclaration","src":"2977:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6464,"name":"Literal","src":"2994:1:15"}],"id":6465,"name":"VariableDeclarationStatement","src":"2977:18:15"},{"attributes":{"assignments":[6467],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":6612,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6466,"name":"ElementaryTypeName","src":"3005:5:15"}],"id":6467,"name":"VariableDeclaration","src":"3005:17:15"}],"id":6468,"name":"VariableDeclarationStatement","src":"3005:17:15"},{"attributes":{"assignments":[6470],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":6612,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6469,"name":"ElementaryTypeName","src":"3032:5:15"}],"id":6470,"name":"VariableDeclaration","src":"3032:18:15"}],"id":6471,"name":"VariableDeclarationStatement","src":"3032:18:15"},{"attributes":{"assignments":[6473],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6472,"name":"ElementaryTypeName","src":"3060:7:15"}],"id":6473,"name":"VariableDeclaration","src":"3060:16:15"}],"id":6474,"name":"VariableDeclarationStatement","src":"3060:16:15"},{"children":[{"attributes":{"assignments":[6478]},"children":[{"attributes":{"constant":false,"name":"iter","scope":6589,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":6477,"name":"UserDefinedTypeName","src":"3152:18:15"}],"id":6478,"name":"VariableDeclaration","src":"3152:30:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":9348,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6452,"type":"bytes calldata","value":"data"},"id":6479,"name":"Identifier","src":"3185:4:15"}],"id":6480,"name":"MemberAccess","src":"3185:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6481,"name":"Literal","src":"3201:1:15"}],"id":6482,"name":"FunctionCall","src":"3185:18:15"}],"id":6483,"name":"VariableDeclarationStatement","src":"3152:51:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":9363,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6484,"name":"Identifier","src":"3206:4:15"}],"id":6485,"name":"MemberAccess","src":"3206:9:15"}],"id":6486,"name":"FunctionCall","src":"3206:11:15"}],"id":6487,"name":"UnaryOperation","src":"3205:12:15"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":9465,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6488,"name":"Identifier","src":"3219:4:15"}],"id":6489,"name":"MemberAccess","src":"3219:9:15"}],"id":6490,"name":"FunctionCall","src":"3219:11:15"}],"id":6491,"name":"ExpressionStatement","src":"3219:11:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6492,"name":"Identifier","src":"3250:8:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6493,"name":"Literal","src":"3262:1:15"}],"id":6494,"name":"BinaryOperation","src":"3250:13:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6495,"name":"Identifier","src":"3283:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":9313,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6496,"name":"Identifier","src":"3294:4:15"}],"id":6497,"name":"MemberAccess","src":"3294:12:15"}],"id":6498,"name":"Assignment","src":"3283:23:15"}],"id":6499,"name":"ExpressionStatement","src":"3283:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6500,"name":"Identifier","src":"3324:4:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9486,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6501,"name":"Identifier","src":"3331:4:15"}],"id":6502,"name":"MemberAccess","src":"3331:9:15"}],"id":6503,"name":"FunctionCall","src":"3331:11:15"}],"id":6504,"name":"Assignment","src":"3324:18:15"}],"id":6505,"name":"ExpressionStatement","src":"3324:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6473,"type":"bytes32","value":"nameHash"},"id":6506,"name":"Identifier","src":"3360:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6507,"name":"Identifier","src":"3371:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":6508,"name":"Identifier","src":"3381:3:15"}],"id":6509,"name":"MemberAccess","src":"3381:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6510,"name":"Identifier","src":"3398:4:15"}],"id":6511,"name":"FunctionCall","src":"3381:22:15"}],"id":6512,"name":"FunctionCall","src":"3371:33:15"}],"id":6513,"name":"Assignment","src":"3360:44:15"}],"id":6514,"name":"ExpressionStatement","src":"3360:44:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bytes memory","value":"value"},"id":6515,"name":"Identifier","src":"3422:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6516,"name":"ElementaryTypeNameExpression","src":"3430:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9506,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6517,"name":"Identifier","src":"3436:4:15"}],"id":6518,"name":"MemberAccess","src":"3436:10:15"}],"id":6519,"name":"FunctionCall","src":"3436:12:15"}],"id":6520,"name":"FunctionCall","src":"3430:19:15"}],"id":6521,"name":"Assignment","src":"3422:27:15"}],"id":6522,"name":"ExpressionStatement","src":"3422:27:15"}],"id":6523,"name":"Block","src":"3265:199:15"},{"children":[{"attributes":{"assignments":[6525]},"children":[{"attributes":{"constant":false,"name":"newName","scope":6586,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6524,"name":"ElementaryTypeName","src":"3488:5:15"}],"id":6525,"name":"VariableDeclaration","src":"3488:20:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9486,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6526,"name":"Identifier","src":"3511:4:15"}],"id":6527,"name":"MemberAccess","src":"3511:9:15"}],"id":6528,"name":"FunctionCall","src":"3511:11:15"}],"id":6529,"name":"VariableDeclarationStatement","src":"3488:34:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6530,"name":"Identifier","src":"3544:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":9313,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6531,"name":"Identifier","src":"3556:4:15"}],"id":6532,"name":"MemberAccess","src":"3556:12:15"}],"id":6533,"name":"BinaryOperation","src":"3544:24:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":10092,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6534,"name":"Identifier","src":"3573:4:15"}],"id":6535,"name":"MemberAccess","src":"3573:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"bytes memory","value":"newName"},"id":6536,"name":"Identifier","src":"3585:7:15"}],"id":6537,"name":"FunctionCall","src":"3573:20:15"}],"id":6538,"name":"UnaryOperation","src":"3572:21:15"}],"id":6539,"name":"BinaryOperation","src":"3544:49:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6865,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6540,"name":"Identifier","src":"3617:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6450,"type":"bytes32","value":"node"},"id":6541,"name":"Identifier","src":"3629:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6542,"name":"Identifier","src":"3635:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6543,"name":"Identifier","src":"3641:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6452,"type":"bytes calldata","value":"data"},"id":6544,"name":"Identifier","src":"3651:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6545,"name":"Identifier","src":"3657:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6546,"name":"Identifier","src":"3665:4:15"}],"id":6547,"name":"MemberAccess","src":"3665:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6548,"name":"Identifier","src":"3679:6:15"}],"id":6549,"name":"BinaryOperation","src":"3665:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bytes memory","value":"value"},"id":6550,"name":"Identifier","src":"3687:5:15"}],"id":6551,"name":"MemberAccess","src":"3687:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6552,"name":"Literal","src":"3703:1:15"}],"id":6553,"name":"BinaryOperation","src":"3687:17:15"}],"id":6554,"name":"FunctionCall","src":"3617:88:15"}],"id":6555,"name":"ExpressionStatement","src":"3617:88:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6556,"name":"Identifier","src":"3727:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":9313,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6557,"name":"Identifier","src":"3738:4:15"}],"id":6558,"name":"MemberAccess","src":"3738:12:15"}],"id":6559,"name":"Assignment","src":"3727:23:15"}],"id":6560,"name":"ExpressionStatement","src":"3727:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6561,"name":"Identifier","src":"3772:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6562,"name":"Identifier","src":"3781:4:15"}],"id":6563,"name":"MemberAccess","src":"3781:11:15"}],"id":6564,"name":"Assignment","src":"3772:20:15"}],"id":6565,"name":"ExpressionStatement","src":"3772:20:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6566,"name":"Identifier","src":"3814:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"bytes memory","value":"newName"},"id":6567,"name":"Identifier","src":"3821:7:15"}],"id":6568,"name":"Assignment","src":"3814:14:15"}],"id":6569,"name":"ExpressionStatement","src":"3814:14:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6473,"type":"bytes32","value":"nameHash"},"id":6570,"name":"Identifier","src":"3850:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6571,"name":"Identifier","src":"3861:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6572,"name":"Identifier","src":"3871:4:15"}],"id":6573,"name":"FunctionCall","src":"3861:15:15"}],"id":6574,"name":"Assignment","src":"3850:26:15"}],"id":6575,"name":"ExpressionStatement","src":"3850:26:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bytes memory","value":"value"},"id":6576,"name":"Identifier","src":"3898:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6577,"name":"ElementaryTypeNameExpression","src":"3906:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9506,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6578,"name":"Identifier","src":"3912:4:15"}],"id":6579,"name":"MemberAccess","src":"3912:10:15"}],"id":6580,"name":"FunctionCall","src":"3912:12:15"}],"id":6581,"name":"FunctionCall","src":"3906:19:15"}],"id":6582,"name":"Assignment","src":"3898:27:15"}],"id":6583,"name":"ExpressionStatement","src":"3898:27:15"}],"id":6584,"name":"Block","src":"3595:349:15"}],"id":6585,"name":"IfStatement","src":"3540:404:15"}],"id":6586,"name":"Block","src":"3470:488:15"}],"id":6587,"name":"IfStatement","src":"3246:712:15"}],"id":6588,"name":"Block","src":"3232:736:15"}],"id":6589,"name":"ForStatement","src":"3147:821:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6590,"name":"Identifier","src":"3981:4:15"}],"id":6591,"name":"MemberAccess","src":"3981:11:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6592,"name":"Literal","src":"3995:1:15"}],"id":6593,"name":"BinaryOperation","src":"3981:15:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6865,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6594,"name":"Identifier","src":"4012:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6450,"type":"bytes32","value":"node"},"id":6595,"name":"Identifier","src":"4024:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6596,"name":"Identifier","src":"4030:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6597,"name":"Identifier","src":"4036:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6452,"type":"bytes calldata","value":"data"},"id":6598,"name":"Identifier","src":"4046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6599,"name":"Identifier","src":"4052:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6452,"type":"bytes calldata","value":"data"},"id":6600,"name":"Identifier","src":"4060:4:15"}],"id":6601,"name":"MemberAccess","src":"4060:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6602,"name":"Identifier","src":"4074:6:15"}],"id":6603,"name":"BinaryOperation","src":"4060:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bytes memory","value":"value"},"id":6604,"name":"Identifier","src":"4082:5:15"}],"id":6605,"name":"MemberAccess","src":"4082:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6606,"name":"Literal","src":"4098:1:15"}],"id":6607,"name":"BinaryOperation","src":"4082:17:15"}],"id":6608,"name":"FunctionCall","src":"4012:88:15"}],"id":6609,"name":"ExpressionStatement","src":"4012:88:15"}],"id":6610,"name":"Block","src":"3998:113:15"}],"id":6611,"name":"IfStatement","src":"3977:134:15"}],"id":6612,"name":"Block","src":"2938:1179:15"}],"id":6613,"name":"FunctionDefinition","src":"2854:1263:15"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":6866,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6637,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6614,"name":"ElementaryTypeName","src":"4538:7:15"}],"id":6615,"name":"VariableDeclaration","src":"4538:12:15"},{"attributes":{"constant":false,"name":"name","scope":6637,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6616,"name":"ElementaryTypeName","src":"4552:7:15"}],"id":6617,"name":"VariableDeclaration","src":"4552:12:15"},{"attributes":{"constant":false,"name":"resource","scope":6637,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6618,"name":"ElementaryTypeName","src":"4566:6:15"}],"id":6619,"name":"VariableDeclaration","src":"4566:15:15"}],"id":6620,"name":"ParameterList","src":"4537:45:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6637,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6621,"name":"ElementaryTypeName","src":"4604:5:15"}],"id":6622,"name":"VariableDeclaration","src":"4604:12:15"}],"id":6623,"name":"ParameterList","src":"4603:14:15"},{"children":[{"attributes":{"functionReturnParameters":6623},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6624,"name":"Identifier","src":"4635:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6615,"type":"bytes32","value":"node"},"id":6625,"name":"Identifier","src":"4643:4:15"}],"id":6626,"name":"IndexAccess","src":"4635:13:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6430,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6627,"name":"Identifier","src":"4649:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6615,"type":"bytes32","value":"node"},"id":6628,"name":"Identifier","src":"4658:4:15"}],"id":6629,"name":"IndexAccess","src":"4649:14:15"}],"id":6630,"name":"IndexAccess","src":"4635:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6617,"type":"bytes32","value":"name"},"id":6631,"name":"Identifier","src":"4665:4:15"}],"id":6632,"name":"IndexAccess","src":"4635:35:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"uint16","value":"resource"},"id":6633,"name":"Identifier","src":"4671:8:15"}],"id":6634,"name":"IndexAccess","src":"4635:45:15"}],"id":6635,"name":"Return","src":"4628:52:15"}],"id":6636,"name":"Block","src":"4618:69:15"}],"id":6637,"name":"FunctionDefinition","src":"4519:168:15"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":6866,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6660,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6638,"name":"ElementaryTypeName","src":"4924:7:15"}],"id":6639,"name":"VariableDeclaration","src":"4924:12:15"},{"attributes":{"constant":false,"name":"name","scope":6660,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6640,"name":"ElementaryTypeName","src":"4938:7:15"}],"id":6641,"name":"VariableDeclaration","src":"4938:12:15"}],"id":6642,"name":"ParameterList","src":"4923:28:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6660,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6643,"name":"ElementaryTypeName","src":"4973:4:15"}],"id":6644,"name":"VariableDeclaration","src":"4973:4:15"}],"id":6645,"name":"ParameterList","src":"4972:6:15"},{"children":[{"attributes":{"functionReturnParameters":6645},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6448,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6646,"name":"Identifier","src":"4997:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6639,"type":"bytes32","value":"node"},"id":6647,"name":"Identifier","src":"5014:4:15"}],"id":6648,"name":"IndexAccess","src":"4997:22:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6430,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6649,"name":"Identifier","src":"5020:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6639,"type":"bytes32","value":"node"},"id":6650,"name":"Identifier","src":"5029:4:15"}],"id":6651,"name":"IndexAccess","src":"5020:14:15"}],"id":6652,"name":"IndexAccess","src":"4997:38:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6641,"type":"bytes32","value":"name"},"id":6653,"name":"Identifier","src":"5036:4:15"}],"id":6654,"name":"IndexAccess","src":"4997:44:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6655,"name":"Literal","src":"5045:1:15"}],"id":6656,"name":"BinaryOperation","src":"4997:49:15"}],"id":6657,"name":"TupleExpression","src":"4996:51:15"}],"id":6658,"name":"Return","src":"4989:58:15"}],"id":6659,"name":"Block","src":"4979:75:15"}],"id":6660,"name":"FunctionDefinition","src":"4901:153:15"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":6866,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6678,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6661,"name":"ElementaryTypeName","src":"5215:7:15"}],"id":6662,"name":"VariableDeclaration","src":"5215:12:15"}],"id":6663,"name":"ParameterList","src":"5214:14:15"},{"attributes":{"parameters":[null]},"children":[],"id":6667,"name":"ParameterList","src":"5253:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6664,"name":"Identifier","src":"5236:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6662,"type":"bytes32","value":"node"},"id":6665,"name":"Identifier","src":"5247:4:15"}],"id":6666,"name":"ModifierInvocation","src":"5236:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6430,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6668,"name":"Identifier","src":"5263:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6662,"type":"bytes32","value":"node"},"id":6669,"name":"Identifier","src":"5272:4:15"}],"id":6670,"name":"IndexAccess","src":"5263:14:15"}],"id":6671,"name":"UnaryOperation","src":"5263:16:15"}],"id":6672,"name":"ExpressionStatement","src":"5263:16:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6414,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":6673,"name":"Identifier","src":"5294:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6662,"type":"bytes32","value":"node"},"id":6674,"name":"Identifier","src":"5309:4:15"}],"id":6675,"name":"FunctionCall","src":"5294:20:15"}],"id":6676,"name":"EmitStatement","src":"5289:25:15"}],"id":6677,"name":"Block","src":"5253:68:15"}],"id":6678,"name":"FunctionDefinition","src":"5193:128:15"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":6866,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6707,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6679,"name":"ElementaryTypeName","src":"5562:7:15"}],"id":6680,"name":"VariableDeclaration","src":"5562:12:15"},{"attributes":{"constant":false,"name":"hash","scope":6707,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6681,"name":"ElementaryTypeName","src":"5576:5:15"}],"id":6682,"name":"VariableDeclaration","src":"5576:19:15"}],"id":6683,"name":"ParameterList","src":"5561:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6687,"name":"ParameterList","src":"5623:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6684,"name":"Identifier","src":"5606:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6680,"type":"bytes32","value":"node"},"id":6685,"name":"Identifier","src":"5617:4:15"}],"id":6686,"name":"ModifierInvocation","src":"5606:16:15"},{"children":[{"attributes":{"assignments":[6689]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":6706,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6688,"name":"ElementaryTypeName","src":"5633:5:15"}],"id":6689,"name":"VariableDeclaration","src":"5633:20:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6426,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6690,"name":"Identifier","src":"5656:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6680,"type":"bytes32","value":"node"},"id":6691,"name":"Identifier","src":"5667:4:15"}],"id":6692,"name":"IndexAccess","src":"5656:16:15"}],"id":6693,"name":"VariableDeclarationStatement","src":"5633:39:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6426,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6694,"name":"Identifier","src":"5682:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6680,"type":"bytes32","value":"node"},"id":6695,"name":"Identifier","src":"5693:4:15"}],"id":6696,"name":"IndexAccess","src":"5682:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6682,"type":"bytes calldata","value":"hash"},"id":6697,"name":"Identifier","src":"5701:4:15"}],"id":6698,"name":"Assignment","src":"5682:23:15"}],"id":6699,"name":"ExpressionStatement","src":"5682:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6422,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":6700,"name":"Identifier","src":"5720:18:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6680,"type":"bytes32","value":"node"},"id":6701,"name":"Identifier","src":"5739:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6689,"type":"bytes memory","value":"oldhash"},"id":6702,"name":"Identifier","src":"5745:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6682,"type":"bytes calldata","value":"hash"},"id":6703,"name":"Identifier","src":"5754:4:15"}],"id":6704,"name":"FunctionCall","src":"5720:39:15"}],"id":6705,"name":"EmitStatement","src":"5715:44:15"}],"id":6706,"name":"Block","src":"5623:143:15"}],"id":6707,"name":"FunctionDefinition","src":"5541:225:15"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":6866,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6719,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6708,"name":"ElementaryTypeName","src":"5938:7:15"}],"id":6709,"name":"VariableDeclaration","src":"5938:12:15"}],"id":6710,"name":"ParameterList","src":"5937:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6719,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6711,"name":"ElementaryTypeName","src":"5975:5:15"}],"id":6712,"name":"VariableDeclaration","src":"5975:12:15"}],"id":6713,"name":"ParameterList","src":"5974:14:15"},{"children":[{"attributes":{"functionReturnParameters":6713},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6426,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6714,"name":"Identifier","src":"6006:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6709,"type":"bytes32","value":"node"},"id":6715,"name":"Identifier","src":"6017:4:15"}],"id":6716,"name":"IndexAccess","src":"6006:16:15"}],"id":6717,"name":"Return","src":"5999:23:15"}],"id":6718,"name":"Block","src":"5989:40:15"}],"id":6719,"name":"FunctionDefinition","src":"5920:109:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6866,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6740,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6720,"name":"ElementaryTypeName","src":"6062:6:15"}],"id":6721,"name":"VariableDeclaration","src":"6062:18:15"}],"id":6722,"name":"ParameterList","src":"6061:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6740,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6723,"name":"ElementaryTypeName","src":"6102:4:15"}],"id":6724,"name":"VariableDeclaration","src":"6102:4:15"}],"id":6725,"name":"ParameterList","src":"6101:6:15"},{"children":[{"attributes":{"functionReturnParameters":6725},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6721,"type":"bytes4","value":"interfaceID"},"id":6726,"name":"Identifier","src":"6125:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6389,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":6727,"name":"Identifier","src":"6140:23:15"}],"id":6728,"name":"BinaryOperation","src":"6125:38:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6721,"type":"bytes4","value":"interfaceID"},"id":6729,"name":"Identifier","src":"6182:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6392,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":6730,"name":"Identifier","src":"6197:21:15"}],"id":6731,"name":"BinaryOperation","src":"6182:36:15"}],"id":6732,"name":"BinaryOperation","src":"6125:93:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10586,"type":"contract super DNSResolver","value":"super"},"id":6733,"name":"Identifier","src":"6237:5:15"}],"id":6734,"name":"MemberAccess","src":"6237:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6721,"type":"bytes4","value":"interfaceID"},"id":6735,"name":"Identifier","src":"6261:11:15"}],"id":6736,"name":"FunctionCall","src":"6237:36:15"}],"id":6737,"name":"BinaryOperation","src":"6125:148:15"}],"id":6738,"name":"Return","src":"6118:155:15"}],"id":6739,"name":"Block","src":"6108:172:15"}],"id":6740,"name":"FunctionDefinition","src":"6035:245:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":6866,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6865,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6741,"name":"ElementaryTypeName","src":"6316:7:15"}],"id":6742,"name":"VariableDeclaration","src":"6316:12:15"},{"attributes":{"constant":false,"name":"name","scope":6865,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6743,"name":"ElementaryTypeName","src":"6338:5:15"}],"id":6744,"name":"VariableDeclaration","src":"6338:17:15"},{"attributes":{"constant":false,"name":"resource","scope":6865,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6745,"name":"ElementaryTypeName","src":"6365:6:15"}],"id":6746,"name":"VariableDeclaration","src":"6365:15:15"},{"attributes":{"constant":false,"name":"data","scope":6865,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6747,"name":"ElementaryTypeName","src":"6390:5:15"}],"id":6748,"name":"VariableDeclaration","src":"6390:17:15"},{"attributes":{"constant":false,"name":"offset","scope":6865,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6749,"name":"ElementaryTypeName","src":"6417:7:15"}],"id":6750,"name":"VariableDeclaration","src":"6417:14:15"},{"attributes":{"constant":false,"name":"size","scope":6865,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6751,"name":"ElementaryTypeName","src":"6441:7:15"}],"id":6752,"name":"VariableDeclaration","src":"6441:12:15"},{"attributes":{"constant":false,"name":"deleteRecord","scope":6865,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6753,"name":"ElementaryTypeName","src":"6463:4:15"}],"id":6754,"name":"VariableDeclaration","src":"6463:17:15"}],"id":6755,"name":"ParameterList","src":"6306:175:15"},{"attributes":{"parameters":[null]},"children":[],"id":6756,"name":"ParameterList","src":"6494:0:15"},{"children":[{"attributes":{"assignments":[6758]},"children":[{"attributes":{"constant":false,"name":"version","scope":6864,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6757,"name":"ElementaryTypeName","src":"6504:7:15"}],"id":6758,"name":"VariableDeclaration","src":"6504:15:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6430,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6759,"name":"Identifier","src":"6522:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6760,"name":"Identifier","src":"6531:4:15"}],"id":6761,"name":"IndexAccess","src":"6522:14:15"}],"id":6762,"name":"VariableDeclarationStatement","src":"6504:32:15"},{"attributes":{"assignments":[6764]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6864,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6763,"name":"ElementaryTypeName","src":"6546:7:15"}],"id":6764,"name":"VariableDeclaration","src":"6546:16:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6765,"name":"Identifier","src":"6565:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"bytes memory","value":"name"},"id":6766,"name":"Identifier","src":"6575:4:15"}],"id":6767,"name":"FunctionCall","src":"6565:15:15"}],"id":6768,"name":"VariableDeclarationStatement","src":"6546:34:15"},{"attributes":{"assignments":[6770]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":6864,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6769,"name":"ElementaryTypeName","src":"6590:5:15"}],"id":6770,"name":"VariableDeclaration","src":"6590:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10299,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6748,"type":"bytes memory","value":"data"},"id":6771,"name":"Identifier","src":"6612:4:15"}],"id":6772,"name":"MemberAccess","src":"6612:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6750,"type":"uint256","value":"offset"},"id":6773,"name":"Identifier","src":"6627:6:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6752,"type":"uint256","value":"size"},"id":6774,"name":"Identifier","src":"6635:4:15"}],"id":6775,"name":"FunctionCall","src":"6612:28:15"}],"id":6776,"name":"VariableDeclarationStatement","src":"6590:50:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6754,"type":"bool","value":"deleteRecord"},"id":6777,"name":"Identifier","src":"6654:12:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6778,"name":"Identifier","src":"6686:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6779,"name":"Identifier","src":"6694:4:15"}],"id":6780,"name":"IndexAccess","src":"6686:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6781,"name":"Identifier","src":"6700:7:15"}],"id":6782,"name":"IndexAccess","src":"6686:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6783,"name":"Identifier","src":"6709:8:15"}],"id":6784,"name":"IndexAccess","src":"6686:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6785,"name":"Identifier","src":"6719:8:15"}],"id":6786,"name":"IndexAccess","src":"6686:42:15"}],"id":6787,"name":"MemberAccess","src":"6686:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6788,"name":"Literal","src":"6739:1:15"}],"id":6789,"name":"BinaryOperation","src":"6686:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6448,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6790,"name":"Identifier","src":"6760:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6791,"name":"Identifier","src":"6777:4:15"}],"id":6794,"name":"IndexAccess","src":"6760:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6792,"name":"Identifier","src":"6783:7:15"}],"id":6795,"name":"IndexAccess","src":"6760:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6793,"name":"Identifier","src":"6792:8:15"}],"id":6796,"name":"IndexAccess","src":"6760:41:15"}],"id":6797,"name":"UnaryOperation","src":"6760:43:15"}],"id":6798,"name":"ExpressionStatement","src":"6760:43:15"}],"id":6799,"name":"Block","src":"6742:76:15"}],"id":6800,"name":"IfStatement","src":"6682:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6801,"name":"Identifier","src":"6838:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6802,"name":"Identifier","src":"6846:4:15"}],"id":6803,"name":"IndexAccess","src":"6838:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6804,"name":"Identifier","src":"6852:7:15"}],"id":6805,"name":"IndexAccess","src":"6838:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6806,"name":"Identifier","src":"6861:8:15"}],"id":6807,"name":"IndexAccess","src":"6838:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6808,"name":"Identifier","src":"6871:8:15"}],"id":6809,"name":"IndexAccess","src":"6838:42:15"}],"id":6810,"name":"TupleExpression","src":"6837:44:15"}],"id":6811,"name":"UnaryOperation","src":"6831:50:15"}],"id":6812,"name":"ExpressionStatement","src":"6831:50:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":6410,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":6813,"name":"Identifier","src":"6900:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6814,"name":"Identifier","src":"6917:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"bytes memory","value":"name"},"id":6815,"name":"Identifier","src":"6923:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6816,"name":"Identifier","src":"6929:8:15"}],"id":6817,"name":"FunctionCall","src":"6900:38:15"}],"id":6818,"name":"EmitStatement","src":"6895:43:15"}],"id":6819,"name":"Block","src":"6668:281:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6820,"name":"Identifier","src":"6973:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6821,"name":"Identifier","src":"6981:4:15"}],"id":6822,"name":"IndexAccess","src":"6973:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6823,"name":"Identifier","src":"6987:7:15"}],"id":6824,"name":"IndexAccess","src":"6973:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6825,"name":"Identifier","src":"6996:8:15"}],"id":6826,"name":"IndexAccess","src":"6973:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6827,"name":"Identifier","src":"7006:8:15"}],"id":6828,"name":"IndexAccess","src":"6973:42:15"}],"id":6829,"name":"MemberAccess","src":"6973:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6830,"name":"Literal","src":"7026:1:15"}],"id":6831,"name":"BinaryOperation","src":"6973:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6448,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6832,"name":"Identifier","src":"7047:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6833,"name":"Identifier","src":"7064:4:15"}],"id":6836,"name":"IndexAccess","src":"7047:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6834,"name":"Identifier","src":"7070:7:15"}],"id":6837,"name":"IndexAccess","src":"7047:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6835,"name":"Identifier","src":"7079:8:15"}],"id":6838,"name":"IndexAccess","src":"7047:41:15"}],"id":6839,"name":"UnaryOperation","src":"7047:43:15"}],"id":6840,"name":"ExpressionStatement","src":"7047:43:15"}],"id":6841,"name":"Block","src":"7029:76:15"}],"id":6842,"name":"IfStatement","src":"6969:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6843,"name":"Identifier","src":"7118:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6844,"name":"Identifier","src":"7126:4:15"}],"id":6848,"name":"IndexAccess","src":"7118:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6845,"name":"Identifier","src":"7132:7:15"}],"id":6849,"name":"IndexAccess","src":"7118:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6846,"name":"Identifier","src":"7141:8:15"}],"id":6850,"name":"IndexAccess","src":"7118:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6847,"name":"Identifier","src":"7151:8:15"}],"id":6851,"name":"IndexAccess","src":"7118:42:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes memory","value":"rrData"},"id":6852,"name":"Identifier","src":"7163:6:15"}],"id":6853,"name":"Assignment","src":"7118:51:15"}],"id":6854,"name":"ExpressionStatement","src":"7118:51:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6402,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":6855,"name":"Identifier","src":"7188:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6856,"name":"Identifier","src":"7205:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"bytes memory","value":"name"},"id":6857,"name":"Identifier","src":"7211:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6858,"name":"Identifier","src":"7217:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes memory","value":"rrData"},"id":6859,"name":"Identifier","src":"7227:6:15"}],"id":6860,"name":"FunctionCall","src":"7188:46:15"}],"id":6861,"name":"EmitStatement","src":"7183:51:15"}],"id":6862,"name":"Block","src":"6955:290:15"}],"id":6863,"name":"IfStatement","src":"6650:595:15"}],"id":6864,"name":"Block","src":"6494:757:15"}],"id":6865,"name":"FunctionDefinition","src":"6286:965:15"}],"id":6866,"name":"ContractDefinition","src":"81:7172:15"}],"id":6867,"name":"SourceUnit","src":"0:7253:15"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[7053]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6868,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":7054,"symbolAliases":[null],"unitAlias":""},"id":6869,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"SourceUnit":6306,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":7054,"symbolAliases":[null],"unitAlias":""},"id":6870,"name":"ImportDirective","src":"55:28:16"},{"attributes":{"contractDependencies":[6305,9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7053,6305,9183],"name":"InterfaceResolver","scope":7054},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6871,"name":"UserDefinedTypeName","src":"115:12:16"}],"id":6872,"name":"InheritanceSpecifier","src":"115:12:16"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":6305,"type":"contract AddrResolver"},"id":6873,"name":"UserDefinedTypeName","src":"129:12:16"}],"id":6874,"name":"InheritanceSpecifier","src":"129:12:16"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":7053,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6875,"name":"ElementaryTypeName","src":"148:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":6876,"name":"ElementaryTypeNameExpression","src":"197:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6877,"name":"Identifier","src":"204:9:16"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":6878,"name":"Literal","src":"214:38:16"}],"id":6879,"name":"FunctionCall","src":"204:49:16"}],"id":6880,"name":"FunctionCall","src":"197:57:16"}],"id":6881,"name":"VariableDeclaration","src":"148:106:16"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":7053,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6882,"name":"ElementaryTypeName","src":"260:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":6883,"name":"Literal","src":"304:10:16"}],"id":6884,"name":"VariableDeclaration","src":"260:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6892,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6885,"name":"ElementaryTypeName","src":"344:7:16"}],"id":6886,"name":"VariableDeclaration","src":"344:20:16"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":6892,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6887,"name":"ElementaryTypeName","src":"366:6:16"}],"id":6888,"name":"VariableDeclaration","src":"366:26:16"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":6892,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6889,"name":"ElementaryTypeName","src":"394:7:16"}],"id":6890,"name":"VariableDeclaration","src":"394:19:16"}],"id":6891,"name":"ParameterList","src":"343:71:16"}],"id":6892,"name":"EventDefinition","src":"321:94:16"},{"attributes":{"constant":false,"name":"interfaces","scope":7053,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6893,"name":"ElementaryTypeName","src":"429:7:16"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6894,"name":"ElementaryTypeName","src":"446:6:16"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6895,"name":"ElementaryTypeName","src":"454:7:16"}],"id":6896,"name":"Mapping","src":"438:24:16"}],"id":6897,"name":"Mapping","src":"421:42:16"}],"id":6898,"name":"VariableDeclaration","src":"421:53:16"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":7053,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6925,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6899,"name":"ElementaryTypeName","src":"880:7:16"}],"id":6900,"name":"VariableDeclaration","src":"880:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6925,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6901,"name":"ElementaryTypeName","src":"894:6:16"}],"id":6902,"name":"VariableDeclaration","src":"894:18:16"},{"attributes":{"constant":false,"name":"implementer","scope":6925,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6903,"name":"ElementaryTypeName","src":"914:7:16"}],"id":6904,"name":"VariableDeclaration","src":"914:19:16"}],"id":6905,"name":"ParameterList","src":"879:55:16"},{"attributes":{"parameters":[null]},"children":[],"id":6909,"name":"ParameterList","src":"961:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6906,"name":"Identifier","src":"944:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6900,"type":"bytes32","value":"node"},"id":6907,"name":"Identifier","src":"955:4:16"}],"id":6908,"name":"ModifierInvocation","src":"944:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6910,"name":"Identifier","src":"971:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6900,"type":"bytes32","value":"node"},"id":6911,"name":"Identifier","src":"982:4:16"}],"id":6913,"name":"IndexAccess","src":"971:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6902,"type":"bytes4","value":"interfaceID"},"id":6912,"name":"Identifier","src":"988:11:16"}],"id":6914,"name":"IndexAccess","src":"971:29:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6904,"type":"address","value":"implementer"},"id":6915,"name":"Identifier","src":"1003:11:16"}],"id":6916,"name":"Assignment","src":"971:43:16"}],"id":6917,"name":"ExpressionStatement","src":"971:43:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":6918,"name":"Identifier","src":"1029:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6900,"type":"bytes32","value":"node"},"id":6919,"name":"Identifier","src":"1046:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6902,"type":"bytes4","value":"interfaceID"},"id":6920,"name":"Identifier","src":"1052:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6904,"type":"address","value":"implementer"},"id":6921,"name":"Identifier","src":"1065:11:16"}],"id":6922,"name":"FunctionCall","src":"1029:48:16"}],"id":6923,"name":"EmitStatement","src":"1024:53:16"}],"id":6924,"name":"Block","src":"961:123:16"}],"id":6925,"name":"FunctionDefinition","src":"858:226:16"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":7053,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6926,"name":"ElementaryTypeName","src":"1751:7:16"}],"id":6927,"name":"VariableDeclaration","src":"1751:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":7035,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6928,"name":"ElementaryTypeName","src":"1765:6:16"}],"id":6929,"name":"VariableDeclaration","src":"1765:18:16"}],"id":6930,"name":"ParameterList","src":"1750:34:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":7035,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6931,"name":"ElementaryTypeName","src":"1808:7:16"}],"id":6932,"name":"VariableDeclaration","src":"1808:7:16"}],"id":6933,"name":"ParameterList","src":"1807:9:16"},{"children":[{"attributes":{"assignments":[6935]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":7034,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6934,"name":"ElementaryTypeName","src":"1827:7:16"}],"id":6935,"name":"VariableDeclaration","src":"1827:19:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6936,"name":"Identifier","src":"1849:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6927,"type":"bytes32","value":"node"},"id":6937,"name":"Identifier","src":"1860:4:16"}],"id":6938,"name":"IndexAccess","src":"1849:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6929,"type":"bytes4","value":"interfaceID"},"id":6939,"name":"Identifier","src":"1866:11:16"}],"id":6940,"name":"IndexAccess","src":"1849:29:16"}],"id":6941,"name":"VariableDeclarationStatement","src":"1827:51:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6935,"type":"address","value":"implementer"},"id":6942,"name":"Identifier","src":"1891:11:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6943,"name":"ElementaryTypeNameExpression","src":"1906:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6944,"name":"Literal","src":"1914:1:16"}],"id":6945,"name":"FunctionCall","src":"1906:10:16"}],"id":6946,"name":"BinaryOperation","src":"1891:25:16"},{"children":[{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6935,"type":"address","value":"implementer"},"id":6947,"name":"Identifier","src":"1939:11:16"}],"id":6948,"name":"Return","src":"1932:18:16"}],"id":6949,"name":"Block","src":"1918:43:16"}],"id":6950,"name":"IfStatement","src":"1888:73:16"},{"attributes":{"assignments":[6952]},"children":[{"attributes":{"constant":false,"name":"a","scope":7034,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6951,"name":"ElementaryTypeName","src":"1971:7:16"}],"id":6952,"name":"VariableDeclaration","src":"1971:9:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[6228,6283],"referencedDeclaration":6228,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":6953,"name":"Identifier","src":"1983:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6927,"type":"bytes32","value":"node"},"id":6954,"name":"Identifier","src":"1988:4:16"}],"id":6955,"name":"FunctionCall","src":"1983:10:16"}],"id":6956,"name":"VariableDeclarationStatement","src":"1971:22:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6952,"type":"address","value":"a"},"id":6957,"name":"Identifier","src":"2006:1:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6958,"name":"ElementaryTypeNameExpression","src":"2011:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6959,"name":"Literal","src":"2019:1:16"}],"id":6960,"name":"FunctionCall","src":"2011:10:16"}],"id":6961,"name":"BinaryOperation","src":"2006:15:16"},{"children":[{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6962,"name":"ElementaryTypeNameExpression","src":"2044:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6963,"name":"Literal","src":"2052:1:16"}],"id":6964,"name":"FunctionCall","src":"2044:10:16"}],"id":6965,"name":"Return","src":"2037:17:16"}],"id":6966,"name":"Block","src":"2023:42:16"}],"id":6967,"name":"IfStatement","src":"2003:62:16"},{"attributes":{"assignments":[6969,6971]},"children":[{"attributes":{"constant":false,"name":"success","scope":7034,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6968,"name":"ElementaryTypeName","src":"2076:4:16"}],"id":6969,"name":"VariableDeclaration","src":"2076:12:16"},{"attributes":{"constant":false,"name":"returnData","scope":7034,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6970,"name":"ElementaryTypeName","src":"2090:5:16"}],"id":6971,"name":"VariableDeclaration","src":"2090:23:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6952,"type":"address","value":"a"},"id":6972,"name":"Identifier","src":"2117:1:16"}],"id":6973,"name":"MemberAccess","src":"2117:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":6974,"name":"Identifier","src":"2130:3:16"}],"id":6975,"name":"MemberAccess","src":"2130:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6976,"name":"Literal","src":"2154:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6884,"type":"bytes4","value":"INTERFACE_META_ID"},"id":6977,"name":"Identifier","src":"2183:17:16"}],"id":6978,"name":"FunctionCall","src":"2130:71:16"}],"id":6979,"name":"FunctionCall","src":"2117:85:16"}],"id":6980,"name":"VariableDeclarationStatement","src":"2075:127:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"bool","value":"success"},"id":6981,"name":"Identifier","src":"2216:7:16"}],"id":6982,"name":"UnaryOperation","src":"2215:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":6983,"name":"Identifier","src":"2227:10:16"}],"id":6984,"name":"MemberAccess","src":"2227:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6985,"name":"Literal","src":"2247:2:16"}],"id":6986,"name":"BinaryOperation","src":"2227:22:16"}],"id":6987,"name":"BinaryOperation","src":"2215:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":6988,"name":"Identifier","src":"2253:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6989,"name":"Literal","src":"2264:2:16"}],"id":6990,"name":"IndexAccess","src":"2253:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6991,"name":"Literal","src":"2271:1:16"}],"id":6992,"name":"BinaryOperation","src":"2253:19:16"}],"id":6993,"name":"BinaryOperation","src":"2215:57:16"},{"children":[{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6994,"name":"ElementaryTypeNameExpression","src":"2342:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6995,"name":"Literal","src":"2350:1:16"}],"id":6996,"name":"FunctionCall","src":"2342:10:16"}],"id":6997,"name":"Return","src":"2335:17:16"}],"id":6998,"name":"Block","src":"2274:89:16"}],"id":6999,"name":"IfStatement","src":"2212:151:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"bool","value":"success"},"id":7000,"name":"Identifier","src":"2374:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":7001,"name":"Identifier","src":"2383:10:16"}],"id":7002,"name":"TupleExpression","src":"2373:21:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6952,"type":"address","value":"a"},"id":7003,"name":"Identifier","src":"2397:1:16"}],"id":7004,"name":"MemberAccess","src":"2397:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":7005,"name":"Identifier","src":"2410:3:16"}],"id":7006,"name":"MemberAccess","src":"2410:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":7007,"name":"Literal","src":"2434:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6929,"type":"bytes4","value":"interfaceID"},"id":7008,"name":"Identifier","src":"2463:11:16"}],"id":7009,"name":"FunctionCall","src":"2410:65:16"}],"id":7010,"name":"FunctionCall","src":"2397:79:16"}],"id":7011,"name":"Assignment","src":"2373:103:16"}],"id":7012,"name":"ExpressionStatement","src":"2373:103:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"bool","value":"success"},"id":7013,"name":"Identifier","src":"2490:7:16"}],"id":7014,"name":"UnaryOperation","src":"2489:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":7015,"name":"Identifier","src":"2501:10:16"}],"id":7016,"name":"MemberAccess","src":"2501:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7017,"name":"Literal","src":"2521:2:16"}],"id":7018,"name":"BinaryOperation","src":"2501:22:16"}],"id":7019,"name":"BinaryOperation","src":"2489:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":7020,"name":"Identifier","src":"2527:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":7021,"name":"Literal","src":"2538:2:16"}],"id":7022,"name":"IndexAccess","src":"2527:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7023,"name":"Literal","src":"2545:1:16"}],"id":7024,"name":"BinaryOperation","src":"2527:19:16"}],"id":7025,"name":"BinaryOperation","src":"2489:57:16"},{"children":[{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7026,"name":"ElementaryTypeNameExpression","src":"2628:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7027,"name":"Literal","src":"2636:1:16"}],"id":7028,"name":"FunctionCall","src":"2628:10:16"}],"id":7029,"name":"Return","src":"2621:17:16"}],"id":7030,"name":"Block","src":"2548:101:16"}],"id":7031,"name":"IfStatement","src":"2486:163:16"},{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6952,"type":"address","value":"a"},"id":7032,"name":"Identifier","src":"2666:1:16"}],"id":7033,"name":"Return","src":"2659:8:16"}],"id":7034,"name":"Block","src":"1817:857:16"}],"id":7035,"name":"FunctionDefinition","src":"1721:953:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7053,"stateMutability":"pure","superFunction":6304,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7052,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7036,"name":"ElementaryTypeName","src":"2707:6:16"}],"id":7037,"name":"VariableDeclaration","src":"2707:18:16"}],"id":7038,"name":"ParameterList","src":"2706:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":7052,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7039,"name":"ElementaryTypeName","src":"2747:4:16"}],"id":7040,"name":"VariableDeclaration","src":"2747:4:16"}],"id":7041,"name":"ParameterList","src":"2746:6:16"},{"children":[{"attributes":{"functionReturnParameters":7041},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7037,"type":"bytes4","value":"interfaceID"},"id":7042,"name":"Identifier","src":"2770:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6881,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":7043,"name":"Identifier","src":"2785:22:16"}],"id":7044,"name":"BinaryOperation","src":"2770:37:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6304,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10588,"type":"contract super InterfaceResolver","value":"super"},"id":7045,"name":"Identifier","src":"2811:5:16"}],"id":7046,"name":"MemberAccess","src":"2811:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7037,"type":"bytes4","value":"interfaceID"},"id":7047,"name":"Identifier","src":"2835:11:16"}],"id":7048,"name":"FunctionCall","src":"2811:36:16"}],"id":7049,"name":"BinaryOperation","src":"2770:77:16"}],"id":7050,"name":"Return","src":"2763:84:16"}],"id":7051,"name":"Block","src":"2753:101:16"}],"id":7052,"name":"FunctionDefinition","src":"2680:174:16"}],"id":7053,"name":"ContractDefinition","src":"85:2771:16"}],"id":7054,"name":"SourceUnit","src":"0:2857:16"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[7123]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7055,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":7124,"symbolAliases":[null],"unitAlias":""},"id":7056,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7123,9183],"name":"NameResolver","scope":7124},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":7057,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":7058,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":7123,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7059,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":7060,"name":"Literal","src":"144:10:17"}],"id":7061,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":7067,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7062,"name":"ElementaryTypeName","src":"179:7:17"}],"id":7063,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":7067,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7064,"name":"ElementaryTypeName","src":"201:6:17"}],"id":7065,"name":"VariableDeclaration","src":"201:11:17"}],"id":7066,"name":"ParameterList","src":"178:35:17"}],"id":7067,"name":"EventDefinition","src":"161:53:17"},{"attributes":{"constant":false,"name":"names","scope":7123,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7068,"name":"ElementaryTypeName","src":"228:7:17"},{"attributes":{"name":"string","type":"string"},"id":7069,"name":"ElementaryTypeName","src":"237:6:17"}],"id":7070,"name":"Mapping","src":"220:24:17"}],"id":7071,"name":"VariableDeclaration","src":"220:30:17"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":7123,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7093,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7072,"name":"ElementaryTypeName","src":"509:7:17"}],"id":7073,"name":"VariableDeclaration","src":"509:12:17"},{"attributes":{"constant":false,"name":"name","scope":7093,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7074,"name":"ElementaryTypeName","src":"523:6:17"}],"id":7075,"name":"VariableDeclaration","src":"523:20:17"}],"id":7076,"name":"ParameterList","src":"508:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":7080,"name":"ParameterList","src":"571:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":7077,"name":"Identifier","src":"554:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7073,"type":"bytes32","value":"node"},"id":7078,"name":"Identifier","src":"565:4:17"}],"id":7079,"name":"ModifierInvocation","src":"554:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7071,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":7081,"name":"Identifier","src":"581:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7073,"type":"bytes32","value":"node"},"id":7082,"name":"Identifier","src":"587:4:17"}],"id":7083,"name":"IndexAccess","src":"581:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7075,"type":"string calldata","value":"name"},"id":7084,"name":"Identifier","src":"595:4:17"}],"id":7085,"name":"Assignment","src":"581:18:17"}],"id":7086,"name":"ExpressionStatement","src":"581:18:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":7067,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":7087,"name":"Identifier","src":"614:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7073,"type":"bytes32","value":"node"},"id":7088,"name":"Identifier","src":"626:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7075,"type":"string calldata","value":"name"},"id":7089,"name":"Identifier","src":"632:4:17"}],"id":7090,"name":"FunctionCall","src":"614:23:17"}],"id":7091,"name":"EmitStatement","src":"609:28:17"}],"id":7092,"name":"Block","src":"571:73:17"}],"id":7093,"name":"FunctionDefinition","src":"492:152:17"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":7123,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7105,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7094,"name":"ElementaryTypeName","src":"858:7:17"}],"id":7095,"name":"VariableDeclaration","src":"858:12:17"}],"id":7096,"name":"ParameterList","src":"857:14:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":7105,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7097,"name":"ElementaryTypeName","src":"895:6:17"}],"id":7098,"name":"VariableDeclaration","src":"895:13:17"}],"id":7099,"name":"ParameterList","src":"894:15:17"},{"children":[{"attributes":{"functionReturnParameters":7099},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7071,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":7100,"name":"Identifier","src":"927:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7095,"type":"bytes32","value":"node"},"id":7101,"name":"Identifier","src":"933:4:17"}],"id":7102,"name":"IndexAccess","src":"927:11:17"}],"id":7103,"name":"Return","src":"920:18:17"}],"id":7104,"name":"Block","src":"910:35:17"}],"id":7105,"name":"FunctionDefinition","src":"844:101:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7123,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7122,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7106,"name":"ElementaryTypeName","src":"978:6:17"}],"id":7107,"name":"VariableDeclaration","src":"978:18:17"}],"id":7108,"name":"ParameterList","src":"977:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":7122,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7109,"name":"ElementaryTypeName","src":"1018:4:17"}],"id":7110,"name":"VariableDeclaration","src":"1018:4:17"}],"id":7111,"name":"ParameterList","src":"1017:6:17"},{"children":[{"attributes":{"functionReturnParameters":7111},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7107,"type":"bytes4","value":"interfaceID"},"id":7112,"name":"Identifier","src":"1041:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7061,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":7113,"name":"Identifier","src":"1056:17:17"}],"id":7114,"name":"BinaryOperation","src":"1041:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10590,"type":"contract super NameResolver","value":"super"},"id":7115,"name":"Identifier","src":"1077:5:17"}],"id":7116,"name":"MemberAccess","src":"1077:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7107,"type":"bytes4","value":"interfaceID"},"id":7117,"name":"Identifier","src":"1101:11:17"}],"id":7118,"name":"FunctionCall","src":"1077:36:17"}],"id":7119,"name":"BinaryOperation","src":"1041:72:17"}],"id":7120,"name":"Return","src":"1034:79:17"}],"id":7121,"name":"Block","src":"1024:96:17"}],"id":7122,"name":"FunctionDefinition","src":"951:169:17"}],"id":7123,"name":"ContractDefinition","src":"56:1066:17"}],"id":7124,"name":"SourceUnit","src":"0:1123:17"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[7214]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7125,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":7215,"symbolAliases":[null],"unitAlias":""},"id":7126,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7214,9183],"name":"PubkeyResolver","scope":7215},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":7127,"name":"UserDefinedTypeName","src":"83:12:18"}],"id":7128,"name":"InheritanceSpecifier","src":"83:12:18"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":7214,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7129,"name":"ElementaryTypeName","src":"102:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":7130,"name":"Literal","src":"148:10:18"}],"id":7131,"name":"VariableDeclaration","src":"102:56:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":7139,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7132,"name":"ElementaryTypeName","src":"185:7:18"}],"id":7133,"name":"VariableDeclaration","src":"185:20:18"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":7139,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7134,"name":"ElementaryTypeName","src":"207:7:18"}],"id":7135,"name":"VariableDeclaration","src":"207:9:18"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":7139,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7136,"name":"ElementaryTypeName","src":"218:7:18"}],"id":7137,"name":"VariableDeclaration","src":"218:9:18"}],"id":7138,"name":"ParameterList","src":"184:44:18"}],"id":7139,"name":"EventDefinition","src":"165:64:18"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":7214,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":7144,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7140,"name":"ElementaryTypeName","src":"262:7:18"}],"id":7141,"name":"VariableDeclaration","src":"262:9:18"},{"attributes":{"constant":false,"name":"y","scope":7144,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7142,"name":"ElementaryTypeName","src":"281:7:18"}],"id":7143,"name":"VariableDeclaration","src":"281:9:18"}],"id":7144,"name":"StructDefinition","src":"235:62:18"},{"attributes":{"constant":false,"name":"pubkeys","scope":7214,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7145,"name":"ElementaryTypeName","src":"311:7:18"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":7144,"type":"struct PubkeyResolver.PublicKey"},"id":7146,"name":"UserDefinedTypeName","src":"320:9:18"}],"id":7147,"name":"Mapping","src":"303:27:18"}],"id":7148,"name":"VariableDeclaration","src":"303:35:18"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":7214,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7176,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7149,"name":"ElementaryTypeName","src":"631:7:18"}],"id":7150,"name":"VariableDeclaration","src":"631:12:18"},{"attributes":{"constant":false,"name":"x","scope":7176,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7151,"name":"ElementaryTypeName","src":"645:7:18"}],"id":7152,"name":"VariableDeclaration","src":"645:9:18"},{"attributes":{"constant":false,"name":"y","scope":7176,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7153,"name":"ElementaryTypeName","src":"656:7:18"}],"id":7154,"name":"VariableDeclaration","src":"656:9:18"}],"id":7155,"name":"ParameterList","src":"630:36:18"},{"attributes":{"parameters":[null]},"children":[],"id":7159,"name":"ParameterList","src":"693:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":7156,"name":"Identifier","src":"676:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7150,"type":"bytes32","value":"node"},"id":7157,"name":"Identifier","src":"687:4:18"}],"id":7158,"name":"ModifierInvocation","src":"676:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7148,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":7160,"name":"Identifier","src":"703:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7150,"type":"bytes32","value":"node"},"id":7161,"name":"Identifier","src":"711:4:18"}],"id":7162,"name":"IndexAccess","src":"703:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7144,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":7163,"name":"Identifier","src":"719:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7152,"type":"bytes32","value":"x"},"id":7164,"name":"Identifier","src":"729:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7154,"type":"bytes32","value":"y"},"id":7165,"name":"Identifier","src":"732:1:18"}],"id":7166,"name":"FunctionCall","src":"719:15:18"}],"id":7167,"name":"Assignment","src":"703:31:18"}],"id":7168,"name":"ExpressionStatement","src":"703:31:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7139,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":7169,"name":"Identifier","src":"749:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7150,"type":"bytes32","value":"node"},"id":7170,"name":"Identifier","src":"763:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7152,"type":"bytes32","value":"x"},"id":7171,"name":"Identifier","src":"769:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7154,"type":"bytes32","value":"y"},"id":7172,"name":"Identifier","src":"772:1:18"}],"id":7173,"name":"FunctionCall","src":"749:25:18"}],"id":7174,"name":"EmitStatement","src":"744:30:18"}],"id":7175,"name":"Block","src":"693:88:18"}],"id":7176,"name":"FunctionDefinition","src":"612:169:18"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":7214,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7177,"name":"ElementaryTypeName","src":"1039:7:18"}],"id":7178,"name":"VariableDeclaration","src":"1039:12:18"}],"id":7179,"name":"ParameterList","src":"1038:14:18"},{"children":[{"attributes":{"constant":false,"name":"x","scope":7196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7180,"name":"ElementaryTypeName","src":"1076:7:18"}],"id":7181,"name":"VariableDeclaration","src":"1076:9:18"},{"attributes":{"constant":false,"name":"y","scope":7196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7182,"name":"ElementaryTypeName","src":"1087:7:18"}],"id":7183,"name":"VariableDeclaration","src":"1087:9:18"}],"id":7184,"name":"ParameterList","src":"1075:22:18"},{"children":[{"attributes":{"functionReturnParameters":7184},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":7141,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7148,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":7185,"name":"Identifier","src":"1116:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7178,"type":"bytes32","value":"node"},"id":7186,"name":"Identifier","src":"1124:4:18"}],"id":7187,"name":"IndexAccess","src":"1116:13:18"}],"id":7188,"name":"MemberAccess","src":"1116:15:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":7143,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7148,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":7189,"name":"Identifier","src":"1133:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7178,"type":"bytes32","value":"node"},"id":7190,"name":"Identifier","src":"1141:4:18"}],"id":7191,"name":"IndexAccess","src":"1133:13:18"}],"id":7192,"name":"MemberAccess","src":"1133:15:18"}],"id":7193,"name":"TupleExpression","src":"1115:34:18"}],"id":7194,"name":"Return","src":"1108:41:18"}],"id":7195,"name":"Block","src":"1098:58:18"}],"id":7196,"name":"FunctionDefinition","src":"1023:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7214,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7213,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7197,"name":"ElementaryTypeName","src":"1189:6:18"}],"id":7198,"name":"VariableDeclaration","src":"1189:18:18"}],"id":7199,"name":"ParameterList","src":"1188:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":7213,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7200,"name":"ElementaryTypeName","src":"1229:4:18"}],"id":7201,"name":"VariableDeclaration","src":"1229:4:18"}],"id":7202,"name":"ParameterList","src":"1228:6:18"},{"children":[{"attributes":{"functionReturnParameters":7202},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7198,"type":"bytes4","value":"interfaceID"},"id":7203,"name":"Identifier","src":"1252:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7131,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":7204,"name":"Identifier","src":"1267:19:18"}],"id":7205,"name":"BinaryOperation","src":"1252:34:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10592,"type":"contract super PubkeyResolver","value":"super"},"id":7206,"name":"Identifier","src":"1290:5:18"}],"id":7207,"name":"MemberAccess","src":"1290:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7198,"type":"bytes4","value":"interfaceID"},"id":7208,"name":"Identifier","src":"1314:11:18"}],"id":7209,"name":"FunctionCall","src":"1290:36:18"}],"id":7210,"name":"BinaryOperation","src":"1252:74:18"}],"id":7211,"name":"Return","src":"1245:81:18"}],"id":7212,"name":"Block","src":"1235:98:18"}],"id":7213,"name":"FunctionDefinition","src":"1162:171:18"}],"id":7214,"name":"ContractDefinition","src":"56:1279:18"}],"id":7215,"name":"SourceUnit","src":"0:1336:18"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[7297]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7216,"name":"PragmaDirective","src":"0:23:19"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":7298,"symbolAliases":[null],"unitAlias":""},"id":7217,"name":"ImportDirective","src":"25:29:19"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7297,9183],"name":"TextResolver","scope":7298},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":7218,"name":"UserDefinedTypeName","src":"81:12:19"}],"id":7219,"name":"InheritanceSpecifier","src":"81:12:19"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":7297,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7220,"name":"ElementaryTypeName","src":"100:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":7221,"name":"Literal","src":"144:10:19"}],"id":7222,"name":"VariableDeclaration","src":"100:54:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":7230,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7223,"name":"ElementaryTypeName","src":"179:7:19"}],"id":7224,"name":"VariableDeclaration","src":"179:20:19"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":7230,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7225,"name":"ElementaryTypeName","src":"201:6:19"}],"id":7226,"name":"VariableDeclaration","src":"201:25:19"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":7230,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7227,"name":"ElementaryTypeName","src":"228:6:19"}],"id":7228,"name":"VariableDeclaration","src":"228:10:19"}],"id":7229,"name":"ParameterList","src":"178:61:19"}],"id":7230,"name":"EventDefinition","src":"161:79:19"},{"attributes":{"constant":false,"name":"texts","scope":7297,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7231,"name":"ElementaryTypeName","src":"254:7:19"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7232,"name":"ElementaryTypeName","src":"271:6:19"},{"attributes":{"name":"string","type":"string"},"id":7233,"name":"ElementaryTypeName","src":"279:6:19"}],"id":7234,"name":"Mapping","src":"263:23:19"}],"id":7235,"name":"Mapping","src":"246:41:19"}],"id":7236,"name":"VariableDeclaration","src":"246:47:19"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":7297,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7263,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7237,"name":"ElementaryTypeName","src":"590:7:19"}],"id":7238,"name":"VariableDeclaration","src":"590:12:19"},{"attributes":{"constant":false,"name":"key","scope":7263,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7239,"name":"ElementaryTypeName","src":"604:6:19"}],"id":7240,"name":"VariableDeclaration","src":"604:19:19"},{"attributes":{"constant":false,"name":"value","scope":7263,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7241,"name":"ElementaryTypeName","src":"625:6:19"}],"id":7242,"name":"VariableDeclaration","src":"625:21:19"}],"id":7243,"name":"ParameterList","src":"589:58:19"},{"attributes":{"parameters":[null]},"children":[],"id":7247,"name":"ParameterList","src":"674:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":7244,"name":"Identifier","src":"657:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"bytes32","value":"node"},"id":7245,"name":"Identifier","src":"668:4:19"}],"id":7246,"name":"ModifierInvocation","src":"657:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7236,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":7248,"name":"Identifier","src":"684:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"bytes32","value":"node"},"id":7249,"name":"Identifier","src":"690:4:19"}],"id":7251,"name":"IndexAccess","src":"684:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"string calldata","value":"key"},"id":7250,"name":"Identifier","src":"696:3:19"}],"id":7252,"name":"IndexAccess","src":"684:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7242,"type":"string calldata","value":"value"},"id":7253,"name":"Identifier","src":"703:5:19"}],"id":7254,"name":"Assignment","src":"684:24:19"}],"id":7255,"name":"ExpressionStatement","src":"684:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":7230,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":7256,"name":"Identifier","src":"723:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"bytes32","value":"node"},"id":7257,"name":"Identifier","src":"735:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"string calldata","value":"key"},"id":7258,"name":"Identifier","src":"741:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"string calldata","value":"key"},"id":7259,"name":"Identifier","src":"746:3:19"}],"id":7260,"name":"FunctionCall","src":"723:27:19"}],"id":7261,"name":"EmitStatement","src":"718:32:19"}],"id":7262,"name":"Block","src":"674:83:19"}],"id":7263,"name":"FunctionDefinition","src":"573:184:19"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":7297,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7279,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7264,"name":"ElementaryTypeName","src":"988:7:19"}],"id":7265,"name":"VariableDeclaration","src":"988:12:19"},{"attributes":{"constant":false,"name":"key","scope":7279,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7266,"name":"ElementaryTypeName","src":"1002:6:19"}],"id":7267,"name":"VariableDeclaration","src":"1002:19:19"}],"id":7268,"name":"ParameterList","src":"987:35:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":7279,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7269,"name":"ElementaryTypeName","src":"1046:6:19"}],"id":7270,"name":"VariableDeclaration","src":"1046:13:19"}],"id":7271,"name":"ParameterList","src":"1045:15:19"},{"children":[{"attributes":{"functionReturnParameters":7271},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7236,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":7272,"name":"Identifier","src":"1078:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7265,"type":"bytes32","value":"node"},"id":7273,"name":"Identifier","src":"1084:4:19"}],"id":7274,"name":"IndexAccess","src":"1078:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7267,"type":"string calldata","value":"key"},"id":7275,"name":"Identifier","src":"1090:3:19"}],"id":7276,"name":"IndexAccess","src":"1078:16:19"}],"id":7277,"name":"Return","src":"1071:23:19"}],"id":7278,"name":"Block","src":"1061:40:19"}],"id":7279,"name":"FunctionDefinition","src":"974:127:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7297,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7296,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7280,"name":"ElementaryTypeName","src":"1134:6:19"}],"id":7281,"name":"VariableDeclaration","src":"1134:18:19"}],"id":7282,"name":"ParameterList","src":"1133:20:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":7296,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7283,"name":"ElementaryTypeName","src":"1174:4:19"}],"id":7284,"name":"VariableDeclaration","src":"1174:4:19"}],"id":7285,"name":"ParameterList","src":"1173:6:19"},{"children":[{"attributes":{"functionReturnParameters":7285},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7281,"type":"bytes4","value":"interfaceID"},"id":7286,"name":"Identifier","src":"1197:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7222,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":7287,"name":"Identifier","src":"1212:17:19"}],"id":7288,"name":"BinaryOperation","src":"1197:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10594,"type":"contract super TextResolver","value":"super"},"id":7289,"name":"Identifier","src":"1233:5:19"}],"id":7290,"name":"MemberAccess","src":"1233:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7281,"type":"bytes4","value":"interfaceID"},"id":7291,"name":"Identifier","src":"1257:11:19"}],"id":7292,"name":"FunctionCall","src":"1233:36:19"}],"id":7293,"name":"BinaryOperation","src":"1197:72:19"}],"id":7294,"name":"Return","src":"1190:79:19"}],"id":7295,"name":"Block","src":"1180:96:19"}],"id":7296,"name":"FunctionDefinition","src":"1107:169:19"}],"id":7297,"name":"ContractDefinition","src":"56:1222:19"}],"id":7298,"name":"SourceUnit","src":"0:1278:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[9003]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7299,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[9003],"name":"strings","scope":9004},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":9003,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":7304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7300,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":7301,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":7304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7302,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":7303,"name":"VariableDeclaration","src":"2663:9:20"}],"id":7304,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":7344,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7305,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":7306,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":7344,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7307,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":7308,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":7344,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7309,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":7310,"name":"VariableDeclaration","src":"2722:8:20"}],"id":7311,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":7312,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7310,"type":"uint256","value":"len"},"id":7313,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7314,"name":"Literal","src":"2818:2:20"}],"id":7315,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7310,"type":"uint256","value":"len"},"id":7316,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7317,"name":"Literal","src":"2829:2:20"}],"id":7318,"name":"Assignment","src":"2822:9:20"}],"id":7319,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":7308,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":7306,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":7320,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7306,"type":"uint256","value":"dest"},"id":7321,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7322,"name":"Literal","src":"2933:2:20"}],"id":7323,"name":"Assignment","src":"2925:10:20"}],"id":7324,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7308,"type":"uint256","value":"src"},"id":7325,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7326,"name":"Literal","src":"2956:2:20"}],"id":7327,"name":"Assignment","src":"2949:9:20"}],"id":7328,"name":"ExpressionStatement","src":"2949:9:20"}],"id":7329,"name":"Block","src":"2833:136:20"}],"id":7330,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[7332]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7331,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":7332,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7333,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7334,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7310,"type":"uint256","value":"len"},"id":7335,"name":"Identifier","src":"3036:3:20"}],"id":7336,"name":"BinaryOperation","src":"3031:8:20"}],"id":7337,"name":"TupleExpression","src":"3030:10:20"}],"id":7338,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7339,"name":"Literal","src":"3043:1:20"}],"id":7340,"name":"BinaryOperation","src":"3023:21:20"}],"id":7341,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":7308,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":7332,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":7306,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":7306,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":7332,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":7342,"name":"InlineAssembly","src":"3054:173:20"}],"id":7343,"name":"Block","src":"2745:488:20"}],"id":7344,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7364,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7345,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":7346,"name":"VariableDeclaration","src":"3450:18:20"}],"id":7347,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7364,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7348,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":7349,"name":"VariableDeclaration","src":"3493:12:20"}],"id":7350,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[7352],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7363,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7351,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":7352,"name":"VariableDeclaration","src":"3517:8:20"}],"id":7353,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":7352,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":7346,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":7354,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":7350},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7304,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7355,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":7356,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7346,"type":"string memory","value":"self"},"id":7357,"name":"Identifier","src":"3618:4:20"}],"id":7358,"name":"FunctionCall","src":"3612:11:20"}],"id":7359,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint256","value":"ptr"},"id":7360,"name":"Identifier","src":"3632:3:20"}],"id":7361,"name":"FunctionCall","src":"3606:30:20"}],"id":7362,"name":"Return","src":"3599:37:20"}],"id":7363,"name":"Block","src":"3507:136:20"}],"id":7364,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7490,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7365,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":7366,"name":"VariableDeclaration","src":"3852:12:20"}],"id":7367,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7490,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7368,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":7369,"name":"VariableDeclaration","src":"3889:4:20"}],"id":7370,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[7372],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7489,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7371,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":7372,"name":"VariableDeclaration","src":"3905:8:20"}],"id":7373,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7374,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7375,"name":"Literal","src":"3935:1:20"}],"id":7376,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":7370},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7377,"name":"Literal","src":"3957:1:20"}],"id":7378,"name":"Return","src":"3950:8:20"}],"id":7379,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7380,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7381,"name":"Identifier","src":"3977:4:20"}],"id":7382,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":7383,"name":"Literal","src":"3985:34:20"}],"id":7384,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7385,"name":"Literal","src":"4023:1:20"}],"id":7386,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7387,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":7388,"name":"Literal","src":"4047:2:20"}],"id":7389,"name":"Assignment","src":"4040:9:20"}],"id":7390,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7391,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7392,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7393,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7394,"name":"Identifier","src":"4083:4:20"}],"id":7395,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":7396,"name":"Literal","src":"4091:35:20"}],"id":7397,"name":"BinaryOperation","src":"4078:48:20"}],"id":7398,"name":"FunctionCall","src":"4070:57:20"}],"id":7399,"name":"Assignment","src":"4063:64:20"}],"id":7400,"name":"ExpressionStatement","src":"4063:64:20"}],"id":7401,"name":"Block","src":"4026:112:20"}],"id":7402,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7403,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7404,"name":"Identifier","src":"4156:4:20"}],"id":7405,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":7406,"name":"Literal","src":"4164:18:20"}],"id":7407,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7408,"name":"Literal","src":"4186:1:20"}],"id":7409,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7410,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7411,"name":"Literal","src":"4210:1:20"}],"id":7412,"name":"Assignment","src":"4203:8:20"}],"id":7413,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7414,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7415,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7416,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7417,"name":"Identifier","src":"4245:4:20"}],"id":7418,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":7419,"name":"Literal","src":"4253:19:20"}],"id":7420,"name":"BinaryOperation","src":"4240:32:20"}],"id":7421,"name":"FunctionCall","src":"4232:41:20"}],"id":7422,"name":"Assignment","src":"4225:48:20"}],"id":7423,"name":"ExpressionStatement","src":"4225:48:20"}],"id":7424,"name":"Block","src":"4189:95:20"}],"id":7425,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7426,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7427,"name":"Identifier","src":"4302:4:20"}],"id":7428,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":7429,"name":"Literal","src":"4310:10:20"}],"id":7430,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7431,"name":"Literal","src":"4324:1:20"}],"id":7432,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7433,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7434,"name":"Literal","src":"4348:1:20"}],"id":7435,"name":"Assignment","src":"4341:8:20"}],"id":7436,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7437,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7438,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7439,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7440,"name":"Identifier","src":"4383:4:20"}],"id":7441,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":7442,"name":"Literal","src":"4391:11:20"}],"id":7443,"name":"BinaryOperation","src":"4378:24:20"}],"id":7444,"name":"FunctionCall","src":"4370:33:20"}],"id":7445,"name":"Assignment","src":"4363:40:20"}],"id":7446,"name":"ExpressionStatement","src":"4363:40:20"}],"id":7447,"name":"Block","src":"4327:87:20"}],"id":7448,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7449,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7450,"name":"Identifier","src":"4432:4:20"}],"id":7451,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":7452,"name":"Literal","src":"4440:6:20"}],"id":7453,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7454,"name":"Literal","src":"4450:1:20"}],"id":7455,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7456,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7457,"name":"Literal","src":"4474:1:20"}],"id":7458,"name":"Assignment","src":"4467:8:20"}],"id":7459,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7460,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7461,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7462,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7463,"name":"Identifier","src":"4509:4:20"}],"id":7464,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":7465,"name":"Literal","src":"4517:7:20"}],"id":7466,"name":"BinaryOperation","src":"4504:20:20"}],"id":7467,"name":"FunctionCall","src":"4496:29:20"}],"id":7468,"name":"Assignment","src":"4489:36:20"}],"id":7469,"name":"ExpressionStatement","src":"4489:36:20"}],"id":7470,"name":"Block","src":"4453:83:20"}],"id":7471,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7472,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7473,"name":"Identifier","src":"4554:4:20"}],"id":7474,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7475,"name":"Literal","src":"4562:4:20"}],"id":7476,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7477,"name":"Literal","src":"4570:1:20"}],"id":7478,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7479,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7480,"name":"Literal","src":"4594:1:20"}],"id":7481,"name":"Assignment","src":"4587:8:20"}],"id":7482,"name":"ExpressionStatement","src":"4587:8:20"}],"id":7483,"name":"Block","src":"4573:33:20"}],"id":7484,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":7370},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7485,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7486,"name":"Identifier","src":"4627:3:20"}],"id":7487,"name":"BinaryOperation","src":"4622:8:20"}],"id":7488,"name":"Return","src":"4615:15:20"}],"id":7489,"name":"Block","src":"3895:742:20"}],"id":7490,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7507,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7491,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":7492,"name":"VariableDeclaration","src":"4963:12:20"}],"id":7493,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7507,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7494,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":7495,"name":"VariableDeclaration","src":"5000:16:20"}],"id":7496,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":7492,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":7495,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":7497,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7495,"type":"struct strings.slice memory","value":"ret"},"id":7498,"name":"Identifier","src":"5286:3:20"}],"id":7500,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[7490,7640],"referencedDeclaration":7490,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":7501,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7492,"type":"bytes32","value":"self"},"id":7502,"name":"Identifier","src":"5301:4:20"}],"id":7503,"name":"FunctionCall","src":"5297:9:20"}],"id":7504,"name":"Assignment","src":"5286:20:20"}],"id":7505,"name":"ExpressionStatement","src":"5286:20:20"}],"id":7506,"name":"Block","src":"5018:295:20"}],"id":7507,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7522,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7508,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":7509,"name":"VariableDeclaration","src":"5528:17:20"}],"id":7510,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7522,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7511,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":7512,"name":"VariableDeclaration","src":"5570:12:20"}],"id":7513,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":7513},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7304,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7514,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"struct strings.slice memory","value":"self"},"id":7515,"name":"Identifier","src":"5607:4:20"}],"id":7516,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"struct strings.slice memory","value":"self"},"id":7517,"name":"Identifier","src":"5618:4:20"}],"id":7518,"name":"MemberAccess","src":"5618:9:20"}],"id":7519,"name":"FunctionCall","src":"5601:27:20"}],"id":7520,"name":"Return","src":"5594:34:20"}],"id":7521,"name":"Block","src":"5584:51:20"}],"id":7522,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7552,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7523,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":7524,"name":"VariableDeclaration","src":"5825:17:20"}],"id":7525,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7552,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7526,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":7527,"name":"VariableDeclaration","src":"5867:13:20"}],"id":7528,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[7530]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7551,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7529,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":7530,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7531,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":7532,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"struct strings.slice memory","value":"self"},"id":7533,"name":"Identifier","src":"5923:4:20"}],"id":7534,"name":"MemberAccess","src":"5923:9:20"}],"id":7535,"name":"FunctionCall","src":"5912:21:20"}],"id":7536,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[7538],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":7551,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7537,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":7538,"name":"VariableDeclaration","src":"5943:11:20"}],"id":7539,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":7538,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":7530,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":7540,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7541,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7538,"type":"uint256","value":"retptr"},"id":7542,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"struct strings.slice memory","value":"self"},"id":7543,"name":"Identifier","src":"6024:4:20"}],"id":7544,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"struct strings.slice memory","value":"self"},"id":7545,"name":"Identifier","src":"6035:4:20"}],"id":7546,"name":"MemberAccess","src":"6035:9:20"}],"id":7547,"name":"FunctionCall","src":"6009:36:20"}],"id":7548,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":7528},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7530,"type":"string memory","value":"ret"},"id":7549,"name":"Identifier","src":"6062:3:20"}],"id":7550,"name":"Return","src":"6055:10:20"}],"id":7551,"name":"Block","src":"5882:190:20"}],"id":7552,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7640,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7553,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":7554,"name":"VariableDeclaration","src":"6476:17:20"}],"id":7555,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":7640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7556,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":7557,"name":"VariableDeclaration","src":"6518:6:20"}],"id":7558,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[7560]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7559,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":7560,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7554,"type":"struct strings.slice memory","value":"self"},"id":7561,"name":"Identifier","src":"6622:4:20"}],"id":7562,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":7563,"name":"Literal","src":"6634:2:20"}],"id":7564,"name":"BinaryOperation","src":"6622:14:20"}],"id":7565,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[7567]},"children":[{"attributes":{"constant":false,"name":"end","scope":7639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7566,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":7567,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7568,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7554,"type":"struct strings.slice memory","value":"self"},"id":7569,"name":"Identifier","src":"6663:4:20"}],"id":7570,"name":"MemberAccess","src":"6663:9:20"}],"id":7571,"name":"BinaryOperation","src":"6657:15:20"}],"id":7572,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7557,"type":"uint256","value":"l"},"id":7573,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7574,"name":"Literal","src":"6691:1:20"}],"id":7575,"name":"Assignment","src":"6687:5:20"}],"id":7576,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7577,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7567,"type":"uint256","value":"end"},"id":7578,"name":"Identifier","src":"6700:3:20"}],"id":7579,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7557,"type":"uint256","value":"l"},"id":7580,"name":"Identifier","src":"6705:1:20"}],"id":7581,"name":"UnaryOperation","src":"6705:3:20"}],"id":7582,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[7584],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7637,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7583,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":7584,"name":"VariableDeclaration","src":"6724:7:20"}],"id":7585,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7584,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":7560,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":7586,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7587,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7588,"name":"Literal","src":"6805:4:20"}],"id":7589,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7590,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7591,"name":"Literal","src":"6836:1:20"}],"id":7592,"name":"Assignment","src":"6829:8:20"}],"id":7593,"name":"ExpressionStatement","src":"6829:8:20"}],"id":7594,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7595,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7596,"name":"Literal","src":"6866:4:20"}],"id":7597,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7598,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7599,"name":"Literal","src":"6897:1:20"}],"id":7600,"name":"Assignment","src":"6890:8:20"}],"id":7601,"name":"ExpressionStatement","src":"6890:8:20"}],"id":7602,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7603,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7604,"name":"Literal","src":"6927:4:20"}],"id":7605,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7606,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7607,"name":"Literal","src":"6958:1:20"}],"id":7608,"name":"Assignment","src":"6951:8:20"}],"id":7609,"name":"ExpressionStatement","src":"6951:8:20"}],"id":7610,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7611,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":7612,"name":"Literal","src":"6988:4:20"}],"id":7613,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7614,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7615,"name":"Literal","src":"7019:1:20"}],"id":7616,"name":"Assignment","src":"7012:8:20"}],"id":7617,"name":"ExpressionStatement","src":"7012:8:20"}],"id":7618,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7619,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":7620,"name":"Literal","src":"7049:4:20"}],"id":7621,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7622,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7623,"name":"Literal","src":"7080:1:20"}],"id":7624,"name":"Assignment","src":"7073:8:20"}],"id":7625,"name":"ExpressionStatement","src":"7073:8:20"}],"id":7626,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7627,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":7628,"name":"Literal","src":"7127:1:20"}],"id":7629,"name":"Assignment","src":"7120:8:20"}],"id":7630,"name":"ExpressionStatement","src":"7120:8:20"}],"id":7631,"name":"Block","src":"7102:41:20"}],"id":7632,"name":"IfStatement","src":"7041:102:20"}],"id":7633,"name":"IfStatement","src":"6980:163:20"}],"id":7634,"name":"IfStatement","src":"6919:224:20"}],"id":7635,"name":"IfStatement","src":"6858:285:20"}],"id":7636,"name":"IfStatement","src":"6797:346:20"}],"id":7637,"name":"Block","src":"6710:443:20"}],"id":7638,"name":"ForStatement","src":"6682:471:20"}],"id":7639,"name":"Block","src":"6526:633:20"}],"id":7640,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7653,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7641,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":7642,"name":"VariableDeclaration","src":"7367:17:20"}],"id":7643,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7653,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7644,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":7645,"name":"VariableDeclaration","src":"7409:4:20"}],"id":7646,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":7646},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7642,"type":"struct strings.slice memory","value":"self"},"id":7647,"name":"Identifier","src":"7432:4:20"}],"id":7648,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7649,"name":"Literal","src":"7445:1:20"}],"id":7650,"name":"BinaryOperation","src":"7432:14:20"}],"id":7651,"name":"Return","src":"7425:21:20"}],"id":7652,"name":"Block","src":"7415:38:20"}],"id":7653,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7782,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7654,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":7655,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":7782,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7656,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":7657,"name":"VariableDeclaration","src":"7917:18:20"}],"id":7658,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7782,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":7659,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":7660,"name":"VariableDeclaration","src":"7960:3:20"}],"id":7661,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[7663]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":7781,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7662,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":7663,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7655,"type":"struct strings.slice memory","value":"self"},"id":7664,"name":"Identifier","src":"7991:4:20"}],"id":7665,"name":"MemberAccess","src":"7991:9:20"}],"id":7666,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7657,"type":"struct strings.slice memory","value":"other"},"id":7667,"name":"Identifier","src":"8014:5:20"}],"id":7668,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7655,"type":"struct strings.slice memory","value":"self"},"id":7669,"name":"Identifier","src":"8027:4:20"}],"id":7670,"name":"MemberAccess","src":"8027:9:20"}],"id":7671,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7663,"type":"uint256","value":"shortest"},"id":7672,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7657,"type":"struct strings.slice memory","value":"other"},"id":7673,"name":"Identifier","src":"8061:5:20"}],"id":7674,"name":"MemberAccess","src":"8061:10:20"}],"id":7675,"name":"Assignment","src":"8050:21:20"}],"id":7676,"name":"ExpressionStatement","src":"8050:21:20"}],"id":7677,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[7679]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7781,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7678,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":7679,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7655,"type":"struct strings.slice memory","value":"self"},"id":7680,"name":"Identifier","src":"8097:4:20"}],"id":7681,"name":"MemberAccess","src":"8097:9:20"}],"id":7682,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[7684]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":7781,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7683,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":7684,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7657,"type":"struct strings.slice memory","value":"other"},"id":7685,"name":"Identifier","src":"8132:5:20"}],"id":7686,"name":"MemberAccess","src":"8132:10:20"}],"id":7687,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[7689]},"children":[{"attributes":{"constant":false,"name":"idx","scope":7770,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7688,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":7689,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7690,"name":"Literal","src":"8168:1:20"}],"id":7691,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7689,"type":"uint256","value":"idx"},"id":7692,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7663,"type":"uint256","value":"shortest"},"id":7693,"name":"Identifier","src":"8177:8:20"}],"id":7694,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7689,"type":"uint256","value":"idx"},"id":7695,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7696,"name":"Literal","src":"8194:2:20"}],"id":7697,"name":"Assignment","src":"8187:9:20"}],"id":7698,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[7700],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":7769,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7699,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":7700,"name":"VariableDeclaration","src":"8212:6:20"}],"id":7701,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[7703],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7769,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7702,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":7703,"name":"VariableDeclaration","src":"8232:6:20"}],"id":7704,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":7700,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":7679,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":7703,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":7684,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":7705,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7700,"type":"uint256","value":"a"},"id":7706,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7703,"type":"uint256","value":"b"},"id":7707,"name":"Identifier","src":"8371:1:20"}],"id":7708,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[7710]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7709,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":7710,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7711,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7712,"name":"Literal","src":"8477:1:20"}],"id":7713,"name":"UnaryOperation","src":"8476:2:20"}],"id":7714,"name":"FunctionCall","src":"8468:11:20"}],"id":7715,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7663,"type":"uint256","value":"shortest"},"id":7716,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7717,"name":"Literal","src":"8525:2:20"}],"id":7718,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7710,"type":"uint256","value":"mask"},"id":7719,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7720,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7721,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7722,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7663,"type":"uint256","value":"shortest"},"id":7723,"name":"Identifier","src":"8576:8:20"}],"id":7724,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7689,"type":"uint256","value":"idx"},"id":7725,"name":"Identifier","src":"8587:3:20"}],"id":7726,"name":"BinaryOperation","src":"8571:19:20"}],"id":7727,"name":"TupleExpression","src":"8570:21:20"}],"id":7728,"name":"BinaryOperation","src":"8566:25:20"}],"id":7729,"name":"TupleExpression","src":"8565:27:20"}],"id":7730,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7731,"name":"Literal","src":"8595:1:20"}],"id":7732,"name":"BinaryOperation","src":"8560:36:20"}],"id":7733,"name":"TupleExpression","src":"8559:38:20"}],"id":7734,"name":"UnaryOperation","src":"8558:39:20"}],"id":7735,"name":"Assignment","src":"8551:46:20"}],"id":7736,"name":"ExpressionStatement","src":"8551:46:20"}],"id":7737,"name":"Block","src":"8529:87:20"}],"id":7738,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[7740]},"children":[{"attributes":{"constant":false,"name":"diff","scope":7759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7739,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":7740,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7700,"type":"uint256","value":"a"},"id":7741,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7710,"type":"uint256","value":"mask"},"id":7742,"name":"Identifier","src":"8653:4:20"}],"id":7743,"name":"BinaryOperation","src":"8649:8:20"}],"id":7744,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7703,"type":"uint256","value":"b"},"id":7745,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7710,"type":"uint256","value":"mask"},"id":7746,"name":"Identifier","src":"8666:4:20"}],"id":7747,"name":"BinaryOperation","src":"8662:8:20"}],"id":7748,"name":"TupleExpression","src":"8661:10:20"}],"id":7749,"name":"BinaryOperation","src":"8648:23:20"}],"id":7750,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"uint256","value":"diff"},"id":7751,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7752,"name":"Literal","src":"8701:1:20"}],"id":7753,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":7661},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7754,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"uint256","value":"diff"},"id":7755,"name":"Identifier","src":"8735:4:20"}],"id":7756,"name":"FunctionCall","src":"8731:9:20"}],"id":7757,"name":"Return","src":"8724:16:20"}],"id":7758,"name":"IfStatement","src":"8689:51:20"}],"id":7759,"name":"Block","src":"8374:381:20"}],"id":7760,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7679,"type":"uint256","value":"selfptr"},"id":7761,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7762,"name":"Literal","src":"8779:2:20"}],"id":7763,"name":"Assignment","src":"8768:13:20"}],"id":7764,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7684,"type":"uint256","value":"otherptr"},"id":7765,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7766,"name":"Literal","src":"8807:2:20"}],"id":7767,"name":"Assignment","src":"8795:14:20"}],"id":7768,"name":"ExpressionStatement","src":"8795:14:20"}],"id":7769,"name":"Block","src":"8198:622:20"}],"id":7770,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":7661},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7771,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7655,"type":"struct strings.slice memory","value":"self"},"id":7772,"name":"Identifier","src":"8840:4:20"}],"id":7773,"name":"MemberAccess","src":"8840:9:20"}],"id":7774,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7775,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7657,"type":"struct strings.slice memory","value":"other"},"id":7776,"name":"Identifier","src":"8857:5:20"}],"id":7777,"name":"MemberAccess","src":"8857:10:20"}],"id":7778,"name":"FunctionCall","src":"8853:15:20"}],"id":7779,"name":"BinaryOperation","src":"8836:32:20"}],"id":7780,"name":"Return","src":"8829:39:20"}],"id":7781,"name":"Block","src":"7965:910:20"}],"id":7782,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7799,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7783,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":7784,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":7799,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7785,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":7786,"name":"VariableDeclaration","src":"9154:18:20"}],"id":7787,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7799,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7788,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":7789,"name":"VariableDeclaration","src":"9197:4:20"}],"id":7790,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":7790},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7782,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":7791,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7784,"type":"struct strings.slice memory","value":"self"},"id":7792,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7786,"type":"struct strings.slice memory","value":"other"},"id":7793,"name":"Identifier","src":"9234:5:20"}],"id":7794,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7795,"name":"Literal","src":"9244:1:20"}],"id":7796,"name":"BinaryOperation","src":"9220:25:20"}],"id":7797,"name":"Return","src":"9213:32:20"}],"id":7798,"name":"Block","src":"9203:49:20"}],"id":7799,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7917,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7800,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":7801,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":7917,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7802,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":7803,"name":"VariableDeclaration","src":"9582:17:20"}],"id":7804,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7917,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7805,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":7806,"name":"VariableDeclaration","src":"9624:12:20"}],"id":7807,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7808,"name":"Identifier","src":"9648:4:20"}],"id":7810,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7811,"name":"Identifier","src":"9660:4:20"}],"id":7812,"name":"MemberAccess","src":"9660:9:20"}],"id":7813,"name":"Assignment","src":"9648:21:20"}],"id":7814,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7815,"name":"Identifier","src":"9684:4:20"}],"id":7816,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7817,"name":"Literal","src":"9697:1:20"}],"id":7818,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7819,"name":"Identifier","src":"9714:4:20"}],"id":7821,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7822,"name":"Literal","src":"9726:1:20"}],"id":7823,"name":"Assignment","src":"9714:13:20"}],"id":7824,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":7807},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7825,"name":"Identifier","src":"9748:4:20"}],"id":7826,"name":"Return","src":"9741:11:20"}],"id":7827,"name":"Block","src":"9700:63:20"}],"id":7828,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[7830],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":7916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7829,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":7830,"name":"VariableDeclaration","src":"9773:6:20"}],"id":7831,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[7833],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7832,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":7833,"name":"VariableDeclaration","src":"9789:6:20"}],"id":7834,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7833,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":7801,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":7835,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7833,"type":"uint256","value":"b"},"id":7836,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7837,"name":"Literal","src":"9949:4:20"}],"id":7838,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7839,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7840,"name":"Literal","src":"9973:1:20"}],"id":7841,"name":"Assignment","src":"9969:5:20"}],"id":7842,"name":"ExpressionStatement","src":"9969:5:20"}],"id":7843,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7833,"type":"uint256","value":"b"},"id":7844,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7845,"name":"Literal","src":"9999:4:20"}],"id":7846,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7847,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7848,"name":"Literal","src":"10023:1:20"}],"id":7849,"name":"Assignment","src":"10019:5:20"}],"id":7850,"name":"ExpressionStatement","src":"10019:5:20"}],"id":7851,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7833,"type":"uint256","value":"b"},"id":7852,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7853,"name":"Literal","src":"10049:4:20"}],"id":7854,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7855,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7856,"name":"Literal","src":"10073:1:20"}],"id":7857,"name":"Assignment","src":"10069:5:20"}],"id":7858,"name":"ExpressionStatement","src":"10069:5:20"}],"id":7859,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7860,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7861,"name":"Literal","src":"10109:1:20"}],"id":7862,"name":"Assignment","src":"10105:5:20"}],"id":7863,"name":"ExpressionStatement","src":"10105:5:20"}],"id":7864,"name":"Block","src":"10091:30:20"}],"id":7865,"name":"IfStatement","src":"10041:80:20"}],"id":7866,"name":"IfStatement","src":"9991:130:20"}],"id":7867,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7868,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7869,"name":"Identifier","src":"10181:4:20"}],"id":7870,"name":"MemberAccess","src":"10181:9:20"}],"id":7871,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7872,"name":"Identifier","src":"10206:4:20"}],"id":7874,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7875,"name":"Identifier","src":"10218:4:20"}],"id":7876,"name":"MemberAccess","src":"10218:9:20"}],"id":7877,"name":"Assignment","src":"10206:21:20"}],"id":7878,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7879,"name":"Identifier","src":"10241:4:20"}],"id":7881,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7882,"name":"Identifier","src":"10254:4:20"}],"id":7883,"name":"MemberAccess","src":"10254:9:20"}],"id":7884,"name":"Assignment","src":"10241:22:20"}],"id":7885,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7886,"name":"Identifier","src":"10277:4:20"}],"id":7888,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7889,"name":"Literal","src":"10289:1:20"}],"id":7890,"name":"Assignment","src":"10277:13:20"}],"id":7891,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":7807},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7892,"name":"Identifier","src":"10311:4:20"}],"id":7893,"name":"Return","src":"10304:11:20"}],"id":7894,"name":"Block","src":"10192:134:20"}],"id":7895,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7896,"name":"Identifier","src":"10336:4:20"}],"id":7898,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7899,"name":"Identifier","src":"10349:1:20"}],"id":7900,"name":"Assignment","src":"10336:14:20"}],"id":7901,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7902,"name":"Identifier","src":"10360:4:20"}],"id":7904,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7905,"name":"Identifier","src":"10373:1:20"}],"id":7906,"name":"Assignment","src":"10360:14:20"}],"id":7907,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7908,"name":"Identifier","src":"10384:4:20"}],"id":7910,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7911,"name":"Identifier","src":"10396:1:20"}],"id":7912,"name":"Assignment","src":"10384:13:20"}],"id":7913,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":7807},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7914,"name":"Identifier","src":"10414:4:20"}],"id":7915,"name":"Return","src":"10407:11:20"}],"id":7916,"name":"Block","src":"9638:787:20"}],"id":7917,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7930,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7918,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":7919,"name":"VariableDeclaration","src":"10683:17:20"}],"id":7920,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7930,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7921,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":7922,"name":"VariableDeclaration","src":"10725:16:20"}],"id":7923,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[7917,7930],"referencedDeclaration":7917,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":7924,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7919,"type":"struct strings.slice memory","value":"self"},"id":7925,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7922,"type":"struct strings.slice memory","value":"ret"},"id":7926,"name":"Identifier","src":"10768:3:20"}],"id":7927,"name":"FunctionCall","src":"10753:19:20"}],"id":7928,"name":"ExpressionStatement","src":"10753:19:20"}],"id":7929,"name":"Block","src":"10743:36:20"}],"id":7930,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8077,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7931,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":7932,"name":"VariableDeclaration","src":"10988:17:20"}],"id":7933,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7934,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":7935,"name":"VariableDeclaration","src":"11030:8:20"}],"id":7936,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7932,"type":"struct strings.slice memory","value":"self"},"id":7937,"name":"Identifier","src":"11054:4:20"}],"id":7938,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7939,"name":"Literal","src":"11067:1:20"}],"id":7940,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":7936},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7941,"name":"Literal","src":"11091:1:20"}],"id":7942,"name":"Return","src":"11084:8:20"}],"id":7943,"name":"Block","src":"11070:33:20"}],"id":7944,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[7946],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7945,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":7946,"name":"VariableDeclaration","src":"11113:9:20"}],"id":7947,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[7949],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7948,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":7949,"name":"VariableDeclaration","src":"11132:11:20"}],"id":7950,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[7952]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7951,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":7952,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7953,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":7954,"name":"Literal","src":"11173:3:20"}],"id":7955,"name":"BinaryOperation","src":"11168:8:20"}],"id":7956,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":7946,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":7932,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":7957,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[7959]},"children":[{"attributes":{"constant":false,"name":"b","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7958,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":7959,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7946,"type":"uint256","value":"word"},"id":7960,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"uint256","value":"divisor"},"id":7961,"name":"Identifier","src":"11303:7:20"}],"id":7962,"name":"BinaryOperation","src":"11296:14:20"}],"id":7963,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7964,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7965,"name":"Literal","src":"11328:4:20"}],"id":7966,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":7967,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7968,"name":"Identifier","src":"11354:1:20"}],"id":7969,"name":"Assignment","src":"11348:7:20"}],"id":7970,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":7971,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7972,"name":"Literal","src":"11378:1:20"}],"id":7973,"name":"Assignment","src":"11369:10:20"}],"id":7974,"name":"ExpressionStatement","src":"11369:10:20"}],"id":7975,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7976,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7977,"name":"Literal","src":"11404:4:20"}],"id":7978,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":7979,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7980,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":7981,"name":"Literal","src":"11434:4:20"}],"id":7982,"name":"BinaryOperation","src":"11430:8:20"}],"id":7983,"name":"Assignment","src":"11424:14:20"}],"id":7984,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":7985,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7986,"name":"Literal","src":"11461:1:20"}],"id":7987,"name":"Assignment","src":"11452:10:20"}],"id":7988,"name":"ExpressionStatement","src":"11452:10:20"}],"id":7989,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7990,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7991,"name":"Literal","src":"11487:4:20"}],"id":7992,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":7993,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7994,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":7995,"name":"Literal","src":"11517:4:20"}],"id":7996,"name":"BinaryOperation","src":"11513:8:20"}],"id":7997,"name":"Assignment","src":"11507:14:20"}],"id":7998,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":7999,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8000,"name":"Literal","src":"11544:1:20"}],"id":8001,"name":"Assignment","src":"11535:10:20"}],"id":8002,"name":"ExpressionStatement","src":"11535:10:20"}],"id":8003,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":8004,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":8005,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":8006,"name":"Literal","src":"11586:4:20"}],"id":8007,"name":"BinaryOperation","src":"11582:8:20"}],"id":8008,"name":"Assignment","src":"11576:14:20"}],"id":8009,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":8010,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8011,"name":"Literal","src":"11613:1:20"}],"id":8012,"name":"Assignment","src":"11604:10:20"}],"id":8013,"name":"ExpressionStatement","src":"11604:10:20"}],"id":8014,"name":"Block","src":"11562:63:20"}],"id":8015,"name":"IfStatement","src":"11479:146:20"}],"id":8016,"name":"IfStatement","src":"11396:229:20"}],"id":8017,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":8018,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7932,"type":"struct strings.slice memory","value":"self"},"id":8019,"name":"Identifier","src":"11690:4:20"}],"id":8020,"name":"MemberAccess","src":"11690:9:20"}],"id":8021,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":7936},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8022,"name":"Literal","src":"11722:1:20"}],"id":8023,"name":"Return","src":"11715:8:20"}],"id":8024,"name":"Block","src":"11701:33:20"}],"id":8025,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[8027]},"children":[{"attributes":{"constant":false,"name":"i","scope":8073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8026,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":8027,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8028,"name":"Literal","src":"11758:1:20"}],"id":8029,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8027,"type":"uint256","value":"i"},"id":8030,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":8031,"name":"Identifier","src":"11765:6:20"}],"id":8032,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8027,"type":"uint256","value":"i"},"id":8033,"name":"Identifier","src":"11773:1:20"}],"id":8034,"name":"UnaryOperation","src":"11773:3:20"}],"id":8035,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"uint256","value":"divisor"},"id":8036,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"uint256","value":"divisor"},"id":8037,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":8038,"name":"Literal","src":"11812:3:20"}],"id":8039,"name":"BinaryOperation","src":"11802:13:20"}],"id":8040,"name":"Assignment","src":"11792:23:20"}],"id":8041,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":8042,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7946,"type":"uint256","value":"word"},"id":8043,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"uint256","value":"divisor"},"id":8044,"name":"Identifier","src":"11841:7:20"}],"id":8045,"name":"BinaryOperation","src":"11834:14:20"}],"id":8046,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":8047,"name":"Literal","src":"11852:4:20"}],"id":8048,"name":"BinaryOperation","src":"11833:23:20"}],"id":8049,"name":"Assignment","src":"11829:27:20"}],"id":8050,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":8051,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":8052,"name":"Literal","src":"11878:4:20"}],"id":8053,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8054,"name":"Literal","src":"11886:4:20"}],"id":8055,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":7936},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8056,"name":"Literal","src":"11959:1:20"}],"id":8057,"name":"Return","src":"11952:8:20"}],"id":8058,"name":"Block","src":"11892:83:20"}],"id":8059,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":8060,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":8061,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":8062,"name":"Literal","src":"12001:2:20"}],"id":8063,"name":"BinaryOperation","src":"11995:8:20"}],"id":8064,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":8065,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":8066,"name":"Literal","src":"12012:4:20"}],"id":8067,"name":"BinaryOperation","src":"12008:8:20"}],"id":8068,"name":"TupleExpression","src":"12007:10:20"}],"id":8069,"name":"BinaryOperation","src":"11994:23:20"}],"id":8070,"name":"Assignment","src":"11988:29:20"}],"id":8071,"name":"ExpressionStatement","src":"11988:29:20"}],"id":8072,"name":"Block","src":"11778:250:20"}],"id":8073,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":7936},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":8074,"name":"Identifier","src":"12045:3:20"}],"id":8075,"name":"Return","src":"12038:10:20"}],"id":8076,"name":"Block","src":"11040:1015:20"}],"id":8077,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8086,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8078,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":8079,"name":"VariableDeclaration","src":"12222:17:20"}],"id":8080,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8086,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8081,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":8082,"name":"VariableDeclaration","src":"12264:11:20"}],"id":8083,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":8082,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":8079,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":8079,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":8084,"name":"InlineAssembly","src":"12287:84:20"}],"id":8085,"name":"Block","src":"12277:100:20"}],"id":8086,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8120,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8087,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":8088,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8120,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8089,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":8090,"name":"VariableDeclaration","src":"12665:19:20"}],"id":8091,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8120,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8092,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":8093,"name":"VariableDeclaration","src":"12709:4:20"}],"id":8094,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8088,"type":"struct strings.slice memory","value":"self"},"id":8095,"name":"Identifier","src":"12729:4:20"}],"id":8096,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8090,"type":"struct strings.slice memory","value":"needle"},"id":8097,"name":"Identifier","src":"12741:6:20"}],"id":8098,"name":"MemberAccess","src":"12741:11:20"}],"id":8099,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":8094},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8100,"name":"Literal","src":"12775:5:20"}],"id":8101,"name":"Return","src":"12768:12:20"}],"id":8102,"name":"Block","src":"12754:37:20"}],"id":8103,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8088,"type":"struct strings.slice memory","value":"self"},"id":8104,"name":"Identifier","src":"12805:4:20"}],"id":8105,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8090,"type":"struct strings.slice memory","value":"needle"},"id":8106,"name":"Identifier","src":"12818:6:20"}],"id":8107,"name":"MemberAccess","src":"12818:11:20"}],"id":8108,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":8094},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8109,"name":"Literal","src":"12852:4:20"}],"id":8110,"name":"Return","src":"12845:11:20"}],"id":8111,"name":"Block","src":"12831:36:20"}],"id":8112,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[8114],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":8119,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8113,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":8114,"name":"VariableDeclaration","src":"12877:10:20"}],"id":8115,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":8090,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":8088,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":8114,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":8090,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8116,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":8094},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"bool","value":"equal"},"id":8117,"name":"Identifier","src":"13159:5:20"}],"id":8118,"name":"Return","src":"13152:12:20"}],"id":8119,"name":"Block","src":"12715:456:20"}],"id":8120,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8170,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8121,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":8122,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8170,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8123,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":8124,"name":"VariableDeclaration","src":"13478:19:20"}],"id":8125,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8170,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8126,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":8127,"name":"VariableDeclaration","src":"13522:12:20"}],"id":8128,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8129,"name":"Identifier","src":"13550:4:20"}],"id":8130,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"struct strings.slice memory","value":"needle"},"id":8131,"name":"Identifier","src":"13562:6:20"}],"id":8132,"name":"MemberAccess","src":"13562:11:20"}],"id":8133,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":8128},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8134,"name":"Identifier","src":"13596:4:20"}],"id":8135,"name":"Return","src":"13589:11:20"}],"id":8136,"name":"Block","src":"13575:36:20"}],"id":8137,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[8139]},"children":[{"attributes":{"constant":false,"name":"equal","scope":8169,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8138,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":8139,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8140,"name":"Literal","src":"13634:4:20"}],"id":8141,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8142,"name":"Identifier","src":"13652:4:20"}],"id":8143,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"struct strings.slice memory","value":"needle"},"id":8144,"name":"Identifier","src":"13665:6:20"}],"id":8145,"name":"MemberAccess","src":"13665:11:20"}],"id":8146,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":8124,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":8122,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"equal":{"declaration":8139,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}},{"needle":{"declaration":8124,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8147,"name":"InlineAssembly","src":"13692:266:20"}],"id":8148,"name":"Block","src":"13678:290:20"}],"id":8149,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8139,"type":"bool","value":"equal"},"id":8150,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8151,"name":"Identifier","src":"14003:4:20"}],"id":8153,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"struct strings.slice memory","value":"needle"},"id":8154,"name":"Identifier","src":"14016:6:20"}],"id":8155,"name":"MemberAccess","src":"14016:11:20"}],"id":8156,"name":"Assignment","src":"14003:24:20"}],"id":8157,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8158,"name":"Identifier","src":"14041:4:20"}],"id":8160,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"struct strings.slice memory","value":"needle"},"id":8161,"name":"Identifier","src":"14054:6:20"}],"id":8162,"name":"MemberAccess","src":"14054:11:20"}],"id":8163,"name":"Assignment","src":"14041:24:20"}],"id":8164,"name":"ExpressionStatement","src":"14041:24:20"}],"id":8165,"name":"Block","src":"13989:87:20"}],"id":8166,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":8128},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8167,"name":"Identifier","src":"14093:4:20"}],"id":8168,"name":"Return","src":"14086:11:20"}],"id":8169,"name":"Block","src":"13536:568:20"}],"id":8170,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8214,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8171,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":8172,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8214,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8173,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":8174,"name":"VariableDeclaration","src":"14391:19:20"}],"id":8175,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8214,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8176,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":8177,"name":"VariableDeclaration","src":"14435:4:20"}],"id":8178,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8172,"type":"struct strings.slice memory","value":"self"},"id":8179,"name":"Identifier","src":"14455:4:20"}],"id":8180,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8174,"type":"struct strings.slice memory","value":"needle"},"id":8181,"name":"Identifier","src":"14467:6:20"}],"id":8182,"name":"MemberAccess","src":"14467:11:20"}],"id":8183,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":8178},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8184,"name":"Literal","src":"14501:5:20"}],"id":8185,"name":"Return","src":"14494:12:20"}],"id":8186,"name":"Block","src":"14480:37:20"}],"id":8187,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[8189]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8213,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8188,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":8189,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8172,"type":"struct strings.slice memory","value":"self"},"id":8190,"name":"Identifier","src":"14542:4:20"}],"id":8191,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8172,"type":"struct strings.slice memory","value":"self"},"id":8192,"name":"Identifier","src":"14554:4:20"}],"id":8193,"name":"MemberAccess","src":"14554:9:20"}],"id":8194,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8174,"type":"struct strings.slice memory","value":"needle"},"id":8195,"name":"Identifier","src":"14566:6:20"}],"id":8196,"name":"MemberAccess","src":"14566:11:20"}],"id":8197,"name":"BinaryOperation","src":"14542:35:20"}],"id":8198,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8189,"type":"uint256","value":"selfptr"},"id":8199,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8174,"type":"struct strings.slice memory","value":"needle"},"id":8200,"name":"Identifier","src":"14603:6:20"}],"id":8201,"name":"MemberAccess","src":"14603:11:20"}],"id":8202,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":8178},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8203,"name":"Literal","src":"14637:4:20"}],"id":8204,"name":"Return","src":"14630:11:20"}],"id":8205,"name":"Block","src":"14616:36:20"}],"id":8206,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[8208],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":8213,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8207,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":8208,"name":"VariableDeclaration","src":"14662:10:20"}],"id":8209,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":8174,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":8208,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":8174,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":8189,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8210,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":8178},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8208,"type":"bool","value":"equal"},"id":8211,"name":"Identifier","src":"14895:5:20"}],"id":8212,"name":"Return","src":"14888:12:20"}],"id":8213,"name":"Block","src":"14441:466:20"}],"id":8214,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8215,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":8216,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8217,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":8218,"name":"VariableDeclaration","src":"15205:19:20"}],"id":8219,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8220,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":8221,"name":"VariableDeclaration","src":"15249:12:20"}],"id":8222,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8223,"name":"Identifier","src":"15277:4:20"}],"id":8224,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"struct strings.slice memory","value":"needle"},"id":8225,"name":"Identifier","src":"15289:6:20"}],"id":8226,"name":"MemberAccess","src":"15289:11:20"}],"id":8227,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":8222},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8228,"name":"Identifier","src":"15323:4:20"}],"id":8229,"name":"Return","src":"15316:11:20"}],"id":8230,"name":"Block","src":"15302:36:20"}],"id":8231,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[8233]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8266,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8232,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":8233,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8234,"name":"Identifier","src":"15363:4:20"}],"id":8235,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8236,"name":"Identifier","src":"15375:4:20"}],"id":8237,"name":"MemberAccess","src":"15375:9:20"}],"id":8238,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"struct strings.slice memory","value":"needle"},"id":8239,"name":"Identifier","src":"15387:6:20"}],"id":8240,"name":"MemberAccess","src":"15387:11:20"}],"id":8241,"name":"BinaryOperation","src":"15363:35:20"}],"id":8242,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[8244]},"children":[{"attributes":{"constant":false,"name":"equal","scope":8266,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8243,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":8244,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8245,"name":"Literal","src":"15421:4:20"}],"id":8246,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8233,"type":"uint256","value":"selfptr"},"id":8247,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"struct strings.slice memory","value":"needle"},"id":8248,"name":"Identifier","src":"15450:6:20"}],"id":8249,"name":"MemberAccess","src":"15450:11:20"}],"id":8250,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":8218,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":8244,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":8218,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":8233,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8251,"name":"InlineAssembly","src":"15477:212:20"}],"id":8252,"name":"Block","src":"15463:236:20"}],"id":8253,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8244,"type":"bool","value":"equal"},"id":8254,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8255,"name":"Identifier","src":"15734:4:20"}],"id":8257,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"struct strings.slice memory","value":"needle"},"id":8258,"name":"Identifier","src":"15747:6:20"}],"id":8259,"name":"MemberAccess","src":"15747:11:20"}],"id":8260,"name":"Assignment","src":"15734:24:20"}],"id":8261,"name":"ExpressionStatement","src":"15734:24:20"}],"id":8262,"name":"Block","src":"15720:49:20"}],"id":8263,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":8222},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8264,"name":"Identifier","src":"15786:4:20"}],"id":8265,"name":"Return","src":"15779:11:20"}],"id":8266,"name":"Block","src":"15263:534:20"}],"id":8267,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8268,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":8269,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8270,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":8271,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8272,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":8273,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8274,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":8275,"name":"VariableDeclaration","src":"16015:14:20"}],"id":8276,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8277,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":8278,"name":"VariableDeclaration","src":"16053:4:20"}],"id":8279,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[8281]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8280,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":8281,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8271,"type":"uint256","value":"selfptr"},"id":8282,"name":"Identifier","src":"16080:7:20"}],"id":8283,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[8285],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":8387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8284,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":8285,"name":"VariableDeclaration","src":"16097:8:20"}],"id":8286,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8287,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8288,"name":"Identifier","src":"16133:7:20"}],"id":8289,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8290,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8291,"name":"Literal","src":"16173:2:20"}],"id":8292,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[8294]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8346,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8293,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":8294,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8295,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8296,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8297,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8298,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8299,"name":"Identifier","src":"16236:9:20"}],"id":8300,"name":"BinaryOperation","src":"16231:14:20"}],"id":8301,"name":"TupleExpression","src":"16230:16:20"}],"id":8302,"name":"BinaryOperation","src":"16226:20:20"}],"id":8303,"name":"TupleExpression","src":"16225:22:20"}],"id":8304,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8305,"name":"Literal","src":"16250:1:20"}],"id":8306,"name":"BinaryOperation","src":"16220:31:20"}],"id":8307,"name":"TupleExpression","src":"16219:33:20"}],"id":8308,"name":"UnaryOperation","src":"16218:34:20"}],"id":8309,"name":"FunctionCall","src":"16210:43:20"}],"id":8310,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[8312],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8346,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8311,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":8312,"name":"VariableDeclaration","src":"16272:18:20"}],"id":8313,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8312,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":8275,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":8294,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8314,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[8316]},"children":[{"attributes":{"constant":false,"name":"end","scope":8346,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8315,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":8316,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8271,"type":"uint256","value":"selfptr"},"id":8317,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8318,"name":"Identifier","src":"16401:7:20"}],"id":8319,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8320,"name":"Identifier","src":"16411:9:20"}],"id":8321,"name":"BinaryOperation","src":"16391:29:20"}],"id":8322,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[8324],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8346,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8323,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":8324,"name":"VariableDeclaration","src":"16438:15:20"}],"id":8325,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8324,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":8281,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":8294,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8326,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8324,"type":"bytes32","value":"ptrdata"},"id":8327,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8312,"type":"bytes32","value":"needledata"},"id":8328,"name":"Identifier","src":"16552:10:20"}],"id":8329,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8330,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8316,"type":"uint256","value":"end"},"id":8331,"name":"Identifier","src":"16597:3:20"}],"id":8332,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":8279},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8271,"type":"uint256","value":"selfptr"},"id":8333,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8334,"name":"Identifier","src":"16643:7:20"}],"id":8335,"name":"BinaryOperation","src":"16633:17:20"}],"id":8336,"name":"Return","src":"16626:24:20"}],"id":8337,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8338,"name":"Identifier","src":"16672:3:20"}],"id":8339,"name":"UnaryOperation","src":"16672:5:20"}],"id":8340,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8324,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":8281,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":8294,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8341,"name":"InlineAssembly","src":"16699:45:20"}],"id":8342,"name":"Block","src":"16564:198:20"}],"id":8343,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":8279},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8344,"name":"Identifier","src":"16786:3:20"}],"id":8345,"name":"Return","src":"16779:10:20"}],"id":8346,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[8348],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8379,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8347,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":8348,"name":"VariableDeclaration","src":"16877:12:20"}],"id":8349,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8348,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":8275,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":8273,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8350,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8285,"type":"uint256","value":"idx"},"id":8351,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8352,"name":"Literal","src":"16988:1:20"}],"id":8353,"name":"Assignment","src":"16982:7:20"}],"id":8354,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8285,"type":"uint256","value":"idx"},"id":8355,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8356,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8357,"name":"Identifier","src":"17008:9:20"}],"id":8358,"name":"BinaryOperation","src":"16998:19:20"}],"id":8359,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8285,"type":"uint256","value":"idx"},"id":8360,"name":"Identifier","src":"17019:3:20"}],"id":8361,"name":"UnaryOperation","src":"17019:5:20"}],"id":8362,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[8364],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8377,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8363,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":8364,"name":"VariableDeclaration","src":"17048:16:20"}],"id":8365,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8364,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":8281,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":8273,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8366,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8348,"type":"bytes32","value":"hash"},"id":8367,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8364,"type":"bytes32","value":"testHash"},"id":8368,"name":"Identifier","src":"17169:8:20"}],"id":8369,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":8279},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8370,"name":"Identifier","src":"17210:3:20"}],"id":8371,"name":"Return","src":"17203:10:20"}],"id":8372,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8373,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8374,"name":"Literal","src":"17242:1:20"}],"id":8375,"name":"Assignment","src":"17235:8:20"}],"id":8376,"name":"ExpressionStatement","src":"17235:8:20"}],"id":8377,"name":"Block","src":"17026:236:20"}],"id":8378,"name":"ForStatement","src":"16977:285:20"}],"id":8379,"name":"Block","src":"16810:466:20"}],"id":8380,"name":"IfStatement","src":"16156:1120:20"}],"id":8381,"name":"Block","src":"16142:1144:20"}],"id":8382,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":8279},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8271,"type":"uint256","value":"selfptr"},"id":8383,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8384,"name":"Identifier","src":"17312:7:20"}],"id":8385,"name":"BinaryOperation","src":"17302:17:20"}],"id":8386,"name":"Return","src":"17295:24:20"}],"id":8387,"name":"Block","src":"16059:1267:20"}],"id":8388,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8389,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":8390,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8391,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":8392,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8393,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":8394,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8395,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":8396,"name":"VariableDeclaration","src":"17541:14:20"}],"id":8397,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8398,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":8399,"name":"VariableDeclaration","src":"17579:4:20"}],"id":8400,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[8402],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8504,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8401,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":8402,"name":"VariableDeclaration","src":"17595:8:20"}],"id":8403,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8404,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8390,"type":"uint256","value":"selflen"},"id":8405,"name":"Identifier","src":"17631:7:20"}],"id":8406,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8407,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8408,"name":"Literal","src":"17671:2:20"}],"id":8409,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[8411]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8463,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8410,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":8411,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8412,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8413,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8414,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8415,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8416,"name":"Identifier","src":"17734:9:20"}],"id":8417,"name":"BinaryOperation","src":"17729:14:20"}],"id":8418,"name":"TupleExpression","src":"17728:16:20"}],"id":8419,"name":"BinaryOperation","src":"17724:20:20"}],"id":8420,"name":"TupleExpression","src":"17723:22:20"}],"id":8421,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8422,"name":"Literal","src":"17748:1:20"}],"id":8423,"name":"BinaryOperation","src":"17718:31:20"}],"id":8424,"name":"TupleExpression","src":"17717:33:20"}],"id":8425,"name":"UnaryOperation","src":"17716:34:20"}],"id":8426,"name":"FunctionCall","src":"17708:43:20"}],"id":8427,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[8429],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8463,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8428,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":8429,"name":"VariableDeclaration","src":"17770:18:20"}],"id":8430,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8429,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":8396,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":8411,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8431,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8432,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8433,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8390,"type":"uint256","value":"selflen"},"id":8434,"name":"Identifier","src":"17894:7:20"}],"id":8435,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8436,"name":"Identifier","src":"17904:9:20"}],"id":8437,"name":"BinaryOperation","src":"17884:29:20"}],"id":8438,"name":"Assignment","src":"17878:35:20"}],"id":8439,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[8441],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8463,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8440,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":8441,"name":"VariableDeclaration","src":"17931:15:20"}],"id":8442,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8441,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":8402,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":8411,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8443,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8441,"type":"bytes32","value":"ptrdata"},"id":8444,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8429,"type":"bytes32","value":"needledata"},"id":8445,"name":"Identifier","src":"18045:10:20"}],"id":8446,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8447,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8448,"name":"Identifier","src":"18090:7:20"}],"id":8449,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":8400},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8450,"name":"Identifier","src":"18130:7:20"}],"id":8451,"name":"Return","src":"18123:14:20"}],"id":8452,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8453,"name":"Identifier","src":"18159:3:20"}],"id":8454,"name":"UnaryOperation","src":"18159:5:20"}],"id":8455,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8441,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":8402,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":8411,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8456,"name":"InlineAssembly","src":"18186:45:20"}],"id":8457,"name":"Block","src":"18057:192:20"}],"id":8458,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":8400},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8459,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8460,"name":"Identifier","src":"18279:9:20"}],"id":8461,"name":"BinaryOperation","src":"18273:15:20"}],"id":8462,"name":"Return","src":"18266:22:20"}],"id":8463,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[8465],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8498,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8464,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":8465,"name":"VariableDeclaration","src":"18376:12:20"}],"id":8466,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8465,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":8396,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":8394,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8467,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8468,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8469,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8390,"type":"uint256","value":"selflen"},"id":8470,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8471,"name":"Identifier","src":"18502:9:20"}],"id":8472,"name":"BinaryOperation","src":"18492:19:20"}],"id":8473,"name":"TupleExpression","src":"18491:21:20"}],"id":8474,"name":"BinaryOperation","src":"18481:31:20"}],"id":8475,"name":"Assignment","src":"18475:37:20"}],"id":8476,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8477,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8478,"name":"Identifier","src":"18544:7:20"}],"id":8479,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[8481],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8496,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8480,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":8481,"name":"VariableDeclaration","src":"18575:16:20"}],"id":8482,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8481,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":8402,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":8394,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8483,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8465,"type":"bytes32","value":"hash"},"id":8484,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8481,"type":"bytes32","value":"testHash"},"id":8485,"name":"Identifier","src":"18696:8:20"}],"id":8486,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":8400},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8487,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8488,"name":"Identifier","src":"18743:9:20"}],"id":8489,"name":"BinaryOperation","src":"18737:15:20"}],"id":8490,"name":"Return","src":"18730:22:20"}],"id":8491,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8492,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8493,"name":"Literal","src":"18781:1:20"}],"id":8494,"name":"Assignment","src":"18774:8:20"}],"id":8495,"name":"ExpressionStatement","src":"18774:8:20"}],"id":8496,"name":"Block","src":"18553:248:20"}],"id":8497,"name":"WhileStatement","src":"18530:271:20"}],"id":8498,"name":"Block","src":"18309:506:20"}],"id":8499,"name":"IfStatement","src":"17654:1161:20"}],"id":8500,"name":"Block","src":"17640:1185:20"}],"id":8501,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":8400},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8502,"name":"Identifier","src":"18841:7:20"}],"id":8503,"name":"Return","src":"18834:14:20"}],"id":8504,"name":"Block","src":"17585:1270:20"}],"id":8505,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8545,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8506,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":8507,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8545,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8508,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":8509,"name":"VariableDeclaration","src":"19224:19:20"}],"id":8510,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8545,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8511,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":8512,"name":"VariableDeclaration","src":"19268:12:20"}],"id":8513,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[8515]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8544,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8514,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":8515,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8388,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8516,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8517,"name":"Identifier","src":"19311:4:20"}],"id":8518,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8519,"name":"Identifier","src":"19322:4:20"}],"id":8520,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8509,"type":"struct strings.slice memory","value":"needle"},"id":8521,"name":"Identifier","src":"19333:6:20"}],"id":8522,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8509,"type":"struct strings.slice memory","value":"needle"},"id":8523,"name":"Identifier","src":"19346:6:20"}],"id":8524,"name":"MemberAccess","src":"19346:11:20"}],"id":8525,"name":"FunctionCall","src":"19303:55:20"}],"id":8526,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8527,"name":"Identifier","src":"19368:4:20"}],"id":8529,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"ptr"},"id":8530,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8531,"name":"Identifier","src":"19387:4:20"}],"id":8532,"name":"MemberAccess","src":"19387:9:20"}],"id":8533,"name":"BinaryOperation","src":"19381:15:20"}],"id":8534,"name":"Assignment","src":"19368:28:20"}],"id":8535,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8536,"name":"Identifier","src":"19406:4:20"}],"id":8538,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"ptr"},"id":8539,"name":"Identifier","src":"19418:3:20"}],"id":8540,"name":"Assignment","src":"19406:15:20"}],"id":8541,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":8513},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8542,"name":"Identifier","src":"19438:4:20"}],"id":8543,"name":"Return","src":"19431:11:20"}],"id":8544,"name":"Block","src":"19282:167:20"}],"id":8545,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8579,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8546,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":8547,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8579,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8548,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":8549,"name":"VariableDeclaration","src":"19842:19:20"}],"id":8550,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8579,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8551,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":8552,"name":"VariableDeclaration","src":"19886:12:20"}],"id":8553,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[8555]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8578,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8554,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":8555,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8556,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8557,"name":"Identifier","src":"19930:4:20"}],"id":8558,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8559,"name":"Identifier","src":"19941:4:20"}],"id":8560,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8549,"type":"struct strings.slice memory","value":"needle"},"id":8561,"name":"Identifier","src":"19952:6:20"}],"id":8562,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8549,"type":"struct strings.slice memory","value":"needle"},"id":8563,"name":"Identifier","src":"19965:6:20"}],"id":8564,"name":"MemberAccess","src":"19965:11:20"}],"id":8565,"name":"FunctionCall","src":"19921:56:20"}],"id":8566,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8567,"name":"Identifier","src":"19987:4:20"}],"id":8569,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8555,"type":"uint256","value":"ptr"},"id":8570,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8571,"name":"Identifier","src":"20005:4:20"}],"id":8572,"name":"MemberAccess","src":"20005:9:20"}],"id":8573,"name":"BinaryOperation","src":"19999:15:20"}],"id":8574,"name":"Assignment","src":"19987:27:20"}],"id":8575,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":8553},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8576,"name":"Identifier","src":"20031:4:20"}],"id":8577,"name":"Return","src":"20024:11:20"}],"id":8578,"name":"Block","src":"19900:142:20"}],"id":8579,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8580,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":8581,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8582,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":8583,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":8657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8584,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":8585,"name":"VariableDeclaration","src":"20603:18:20"}],"id":8586,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8587,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":8588,"name":"VariableDeclaration","src":"20646:12:20"}],"id":8589,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[8591]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8656,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8590,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":8591,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8388,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8592,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8593,"name":"Identifier","src":"20689:4:20"}],"id":8594,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8595,"name":"Identifier","src":"20700:4:20"}],"id":8596,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"struct strings.slice memory","value":"needle"},"id":8597,"name":"Identifier","src":"20711:6:20"}],"id":8598,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"struct strings.slice memory","value":"needle"},"id":8599,"name":"Identifier","src":"20724:6:20"}],"id":8600,"name":"MemberAccess","src":"20724:11:20"}],"id":8601,"name":"FunctionCall","src":"20681:55:20"}],"id":8602,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"struct strings.slice memory","value":"token"},"id":8603,"name":"Identifier","src":"20746:5:20"}],"id":8605,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8606,"name":"Identifier","src":"20759:4:20"}],"id":8607,"name":"MemberAccess","src":"20759:9:20"}],"id":8608,"name":"Assignment","src":"20746:22:20"}],"id":8609,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"struct strings.slice memory","value":"token"},"id":8610,"name":"Identifier","src":"20778:5:20"}],"id":8612,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8591,"type":"uint256","value":"ptr"},"id":8613,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8614,"name":"Identifier","src":"20797:4:20"}],"id":8615,"name":"MemberAccess","src":"20797:9:20"}],"id":8616,"name":"BinaryOperation","src":"20791:15:20"}],"id":8617,"name":"Assignment","src":"20778:28:20"}],"id":8618,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8591,"type":"uint256","value":"ptr"},"id":8619,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8620,"name":"Identifier","src":"20827:4:20"}],"id":8621,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8622,"name":"Identifier","src":"20839:4:20"}],"id":8623,"name":"MemberAccess","src":"20839:9:20"}],"id":8624,"name":"BinaryOperation","src":"20827:21:20"}],"id":8625,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8626,"name":"Identifier","src":"20889:4:20"}],"id":8628,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8629,"name":"Literal","src":"20901:1:20"}],"id":8630,"name":"Assignment","src":"20889:13:20"}],"id":8631,"name":"ExpressionStatement","src":"20889:13:20"}],"id":8632,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8633,"name":"Identifier","src":"20933:4:20"}],"id":8635,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"struct strings.slice memory","value":"token"},"id":8636,"name":"Identifier","src":"20946:5:20"}],"id":8637,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"struct strings.slice memory","value":"needle"},"id":8638,"name":"Identifier","src":"20959:6:20"}],"id":8639,"name":"MemberAccess","src":"20959:11:20"}],"id":8640,"name":"BinaryOperation","src":"20946:24:20"}],"id":8641,"name":"Assignment","src":"20933:37:20"}],"id":8642,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8643,"name":"Identifier","src":"20984:4:20"}],"id":8645,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8591,"type":"uint256","value":"ptr"},"id":8646,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"struct strings.slice memory","value":"needle"},"id":8647,"name":"Identifier","src":"21002:6:20"}],"id":8648,"name":"MemberAccess","src":"21002:11:20"}],"id":8649,"name":"BinaryOperation","src":"20996:17:20"}],"id":8650,"name":"Assignment","src":"20984:29:20"}],"id":8651,"name":"ExpressionStatement","src":"20984:29:20"}],"id":8652,"name":"Block","src":"20919:105:20"}],"id":8653,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":8589},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"struct strings.slice memory","value":"token"},"id":8654,"name":"Identifier","src":"21040:5:20"}],"id":8655,"name":"Return","src":"21033:12:20"}],"id":8656,"name":"Block","src":"20660:392:20"}],"id":8657,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8673,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8658,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":8659,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8673,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8660,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":8661,"name":"VariableDeclaration","src":"21557:19:20"}],"id":8662,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8673,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8663,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":8664,"name":"VariableDeclaration","src":"21601:18:20"}],"id":8665,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8657,8673],"referencedDeclaration":8657,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":8666,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8659,"type":"struct strings.slice memory","value":"self"},"id":8667,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8661,"type":"struct strings.slice memory","value":"needle"},"id":8668,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8664,"type":"struct strings.slice memory","value":"token"},"id":8669,"name":"Identifier","src":"21651:5:20"}],"id":8670,"name":"FunctionCall","src":"21631:26:20"}],"id":8671,"name":"ExpressionStatement","src":"21631:26:20"}],"id":8672,"name":"Block","src":"21621:43:20"}],"id":8673,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8674,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":8675,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8676,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":8677,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":8742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8678,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":8679,"name":"VariableDeclaration","src":"22225:18:20"}],"id":8680,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8681,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":8682,"name":"VariableDeclaration","src":"22268:12:20"}],"id":8683,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[8685]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8684,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":8685,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8686,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8687,"name":"Identifier","src":"22312:4:20"}],"id":8688,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8689,"name":"Identifier","src":"22323:4:20"}],"id":8690,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8677,"type":"struct strings.slice memory","value":"needle"},"id":8691,"name":"Identifier","src":"22334:6:20"}],"id":8692,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8677,"type":"struct strings.slice memory","value":"needle"},"id":8693,"name":"Identifier","src":"22347:6:20"}],"id":8694,"name":"MemberAccess","src":"22347:11:20"}],"id":8695,"name":"FunctionCall","src":"22303:56:20"}],"id":8696,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8679,"type":"struct strings.slice memory","value":"token"},"id":8697,"name":"Identifier","src":"22369:5:20"}],"id":8699,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8685,"type":"uint256","value":"ptr"},"id":8700,"name":"Identifier","src":"22382:3:20"}],"id":8701,"name":"Assignment","src":"22369:16:20"}],"id":8702,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8679,"type":"struct strings.slice memory","value":"token"},"id":8703,"name":"Identifier","src":"22395:5:20"}],"id":8705,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8706,"name":"Identifier","src":"22408:4:20"}],"id":8707,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8685,"type":"uint256","value":"ptr"},"id":8708,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8709,"name":"Identifier","src":"22427:4:20"}],"id":8710,"name":"MemberAccess","src":"22427:9:20"}],"id":8711,"name":"BinaryOperation","src":"22421:15:20"}],"id":8712,"name":"TupleExpression","src":"22420:17:20"}],"id":8713,"name":"BinaryOperation","src":"22408:29:20"}],"id":8714,"name":"Assignment","src":"22395:42:20"}],"id":8715,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8685,"type":"uint256","value":"ptr"},"id":8716,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8717,"name":"Identifier","src":"22458:4:20"}],"id":8718,"name":"MemberAccess","src":"22458:9:20"}],"id":8719,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8720,"name":"Identifier","src":"22508:4:20"}],"id":8722,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8723,"name":"Literal","src":"22520:1:20"}],"id":8724,"name":"Assignment","src":"22508:13:20"}],"id":8725,"name":"ExpressionStatement","src":"22508:13:20"}],"id":8726,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8727,"name":"Identifier","src":"22552:4:20"}],"id":8729,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8679,"type":"struct strings.slice memory","value":"token"},"id":8730,"name":"Identifier","src":"22565:5:20"}],"id":8731,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8677,"type":"struct strings.slice memory","value":"needle"},"id":8732,"name":"Identifier","src":"22578:6:20"}],"id":8733,"name":"MemberAccess","src":"22578:11:20"}],"id":8734,"name":"BinaryOperation","src":"22565:24:20"}],"id":8735,"name":"Assignment","src":"22552:37:20"}],"id":8736,"name":"ExpressionStatement","src":"22552:37:20"}],"id":8737,"name":"Block","src":"22538:62:20"}],"id":8738,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":8683},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8679,"type":"struct strings.slice memory","value":"token"},"id":8739,"name":"Identifier","src":"22616:5:20"}],"id":8740,"name":"Return","src":"22609:12:20"}],"id":8741,"name":"Block","src":"22282:346:20"}],"id":8742,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8758,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8743,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":8744,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8758,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8745,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":8746,"name":"VariableDeclaration","src":"23132:19:20"}],"id":8747,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8758,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8748,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":8749,"name":"VariableDeclaration","src":"23176:18:20"}],"id":8750,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8742,8758],"referencedDeclaration":8742,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":8751,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8744,"type":"struct strings.slice memory","value":"self"},"id":8752,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8746,"type":"struct strings.slice memory","value":"needle"},"id":8753,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8749,"type":"struct strings.slice memory","value":"token"},"id":8754,"name":"Identifier","src":"23227:5:20"}],"id":8755,"name":"FunctionCall","src":"23206:27:20"}],"id":8756,"name":"ExpressionStatement","src":"23206:27:20"}],"id":8757,"name":"Block","src":"23196:44:20"}],"id":8758,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8817,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8759,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":8760,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8817,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8761,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":8762,"name":"VariableDeclaration","src":"23543:19:20"}],"id":8763,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":8817,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8764,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":8765,"name":"VariableDeclaration","src":"23587:8:20"}],"id":8766,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[8768]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8816,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8767,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":8768,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8388,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8769,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8770,"name":"Identifier","src":"23626:4:20"}],"id":8771,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8772,"name":"Identifier","src":"23637:4:20"}],"id":8773,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8774,"name":"Identifier","src":"23648:6:20"}],"id":8775,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8776,"name":"Identifier","src":"23661:6:20"}],"id":8777,"name":"MemberAccess","src":"23661:11:20"}],"id":8778,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8779,"name":"Identifier","src":"23676:6:20"}],"id":8780,"name":"MemberAccess","src":"23676:11:20"}],"id":8781,"name":"BinaryOperation","src":"23618:69:20"}],"id":8782,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"uint256","value":"ptr"},"id":8783,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8784,"name":"Identifier","src":"23711:4:20"}],"id":8785,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8786,"name":"Identifier","src":"23723:4:20"}],"id":8787,"name":"MemberAccess","src":"23723:9:20"}],"id":8788,"name":"BinaryOperation","src":"23711:21:20"}],"id":8789,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8765,"type":"uint256","value":"cnt"},"id":8790,"name":"Identifier","src":"23748:3:20"}],"id":8791,"name":"UnaryOperation","src":"23748:5:20"}],"id":8792,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"uint256","value":"ptr"},"id":8793,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8388,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8794,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8795,"name":"Identifier","src":"23781:4:20"}],"id":8796,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"uint256","value":"ptr"},"id":8797,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8798,"name":"Identifier","src":"23800:4:20"}],"id":8799,"name":"MemberAccess","src":"23800:9:20"}],"id":8800,"name":"BinaryOperation","src":"23794:15:20"}],"id":8801,"name":"TupleExpression","src":"23793:17:20"}],"id":8802,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"uint256","value":"ptr"},"id":8803,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8804,"name":"Identifier","src":"23817:6:20"}],"id":8805,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8806,"name":"Identifier","src":"23830:6:20"}],"id":8807,"name":"MemberAccess","src":"23830:11:20"}],"id":8808,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8809,"name":"Identifier","src":"23845:6:20"}],"id":8810,"name":"MemberAccess","src":"23845:11:20"}],"id":8811,"name":"BinaryOperation","src":"23773:83:20"}],"id":8812,"name":"Assignment","src":"23767:89:20"}],"id":8813,"name":"ExpressionStatement","src":"23767:89:20"}],"id":8814,"name":"Block","src":"23734:133:20"}],"id":8815,"name":"WhileStatement","src":"23697:170:20"}],"id":8816,"name":"Block","src":"23597:276:20"}],"id":8817,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8841,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8818,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":8819,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8841,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8820,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":8821,"name":"VariableDeclaration","src":"24149:19:20"}],"id":8822,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8841,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8823,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":8824,"name":"VariableDeclaration","src":"24193:4:20"}],"id":8825,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":8825},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8826,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8819,"type":"struct strings.slice memory","value":"self"},"id":8827,"name":"Identifier","src":"24225:4:20"}],"id":8828,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8819,"type":"struct strings.slice memory","value":"self"},"id":8829,"name":"Identifier","src":"24236:4:20"}],"id":8830,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8821,"type":"struct strings.slice memory","value":"needle"},"id":8831,"name":"Identifier","src":"24247:6:20"}],"id":8832,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8821,"type":"struct strings.slice memory","value":"needle"},"id":8833,"name":"Identifier","src":"24260:6:20"}],"id":8834,"name":"MemberAccess","src":"24260:11:20"}],"id":8835,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8819,"type":"struct strings.slice memory","value":"self"},"id":8836,"name":"Identifier","src":"24276:4:20"}],"id":8837,"name":"MemberAccess","src":"24276:9:20"}],"id":8838,"name":"BinaryOperation","src":"24216:69:20"}],"id":8839,"name":"Return","src":"24209:76:20"}],"id":8840,"name":"Block","src":"24199:93:20"}],"id":8841,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8887,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8842,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":8843,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":8887,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8844,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":8845,"name":"VariableDeclaration","src":"24614:18:20"}],"id":8846,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8887,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8847,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":8848,"name":"VariableDeclaration","src":"24657:13:20"}],"id":8849,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[8851]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8886,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8850,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":8851,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8852,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":8853,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8843,"type":"struct strings.slice memory","value":"self"},"id":8854,"name":"Identifier","src":"24713:4:20"}],"id":8855,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"struct strings.slice memory","value":"other"},"id":8856,"name":"Identifier","src":"24725:5:20"}],"id":8857,"name":"MemberAccess","src":"24725:10:20"}],"id":8858,"name":"BinaryOperation","src":"24713:22:20"}],"id":8859,"name":"FunctionCall","src":"24702:34:20"}],"id":8860,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[8862],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8886,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8861,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":8862,"name":"VariableDeclaration","src":"24746:11:20"}],"id":8863,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8862,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":8851,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8864,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8865,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8862,"type":"uint256","value":"retptr"},"id":8866,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8843,"type":"struct strings.slice memory","value":"self"},"id":8867,"name":"Identifier","src":"24826:4:20"}],"id":8868,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8843,"type":"struct strings.slice memory","value":"self"},"id":8869,"name":"Identifier","src":"24837:4:20"}],"id":8870,"name":"MemberAccess","src":"24837:9:20"}],"id":8871,"name":"FunctionCall","src":"24811:36:20"}],"id":8872,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8873,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8862,"type":"uint256","value":"retptr"},"id":8874,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8843,"type":"struct strings.slice memory","value":"self"},"id":8875,"name":"Identifier","src":"24873:4:20"}],"id":8876,"name":"MemberAccess","src":"24873:9:20"}],"id":8877,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"struct strings.slice memory","value":"other"},"id":8878,"name":"Identifier","src":"24884:5:20"}],"id":8879,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"struct strings.slice memory","value":"other"},"id":8880,"name":"Identifier","src":"24896:5:20"}],"id":8881,"name":"MemberAccess","src":"24896:10:20"}],"id":8882,"name":"FunctionCall","src":"24857:50:20"}],"id":8883,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":8849},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"string memory","value":"ret"},"id":8884,"name":"Identifier","src":"24924:3:20"}],"id":8885,"name":"Return","src":"24917:10:20"}],"id":8886,"name":"Block","src":"24672:262:20"}],"id":8887,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8888,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":8889,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8890,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":8891,"name":"ArrayTypeName","src":"25303:7:20"}],"id":8892,"name":"VariableDeclaration","src":"25303:20:20"}],"id":8893,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8894,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":8895,"name":"VariableDeclaration","src":"25348:13:20"}],"id":8896,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8897,"name":"Identifier","src":"25377:5:20"}],"id":8898,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8899,"name":"Literal","src":"25393:1:20"}],"id":8900,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":8896},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":8901,"name":"Literal","src":"25415:2:20"}],"id":8902,"name":"Return","src":"25408:9:20"}],"id":8903,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[8905]},"children":[{"attributes":{"constant":false,"name":"length","scope":9001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8904,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":8905,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8889,"type":"struct strings.slice memory","value":"self"},"id":8906,"name":"Identifier","src":"25442:4:20"}],"id":8907,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8908,"name":"Identifier","src":"25455:5:20"}],"id":8909,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8910,"name":"Literal","src":"25470:1:20"}],"id":8911,"name":"BinaryOperation","src":"25455:16:20"}],"id":8912,"name":"TupleExpression","src":"25454:18:20"}],"id":8913,"name":"BinaryOperation","src":"25442:30:20"}],"id":8914,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[8916]},"children":[{"attributes":{"constant":false,"name":"i","scope":8934,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8915,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":8916,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8917,"name":"Literal","src":"25496:1:20"}],"id":8918,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8916,"type":"uint256","value":"i"},"id":8919,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8920,"name":"Identifier","src":"25503:5:20"}],"id":8921,"name":"MemberAccess","src":"25503:12:20"}],"id":8922,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8916,"type":"uint256","value":"i"},"id":8923,"name":"Identifier","src":"25517:1:20"}],"id":8924,"name":"UnaryOperation","src":"25517:3:20"}],"id":8925,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8905,"type":"uint256","value":"length"},"id":8926,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8927,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8916,"type":"uint256","value":"i"},"id":8928,"name":"Identifier","src":"25552:1:20"}],"id":8929,"name":"IndexAccess","src":"25546:8:20"}],"id":8930,"name":"MemberAccess","src":"25546:13:20"}],"id":8931,"name":"Assignment","src":"25536:23:20"}],"id":8932,"name":"ExpressionStatement","src":"25536:23:20"}],"id":8933,"name":"Block","src":"25522:48:20"}],"id":8934,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[8936]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9001,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8935,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":8936,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8937,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":8938,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8905,"type":"uint256","value":"length"},"id":8939,"name":"Identifier","src":"25611:6:20"}],"id":8940,"name":"FunctionCall","src":"25600:18:20"}],"id":8941,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[8943],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":9001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8942,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":8943,"name":"VariableDeclaration","src":"25628:11:20"}],"id":8944,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8943,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":8936,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8945,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[8947]},"children":[{"attributes":{"constant":false,"name":"i","scope":8998,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8946,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":8947,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8948,"name":"Literal","src":"25708:1:20"}],"id":8949,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8950,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8951,"name":"Identifier","src":"25715:5:20"}],"id":8952,"name":"MemberAccess","src":"25715:12:20"}],"id":8953,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8954,"name":"Identifier","src":"25729:1:20"}],"id":8955,"name":"UnaryOperation","src":"25729:3:20"}],"id":8956,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8957,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8943,"type":"uint256","value":"retptr"},"id":8958,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8959,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8960,"name":"Identifier","src":"25769:1:20"}],"id":8961,"name":"IndexAccess","src":"25763:8:20"}],"id":8962,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8963,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8964,"name":"Identifier","src":"25784:1:20"}],"id":8965,"name":"IndexAccess","src":"25778:8:20"}],"id":8966,"name":"MemberAccess","src":"25778:13:20"}],"id":8967,"name":"FunctionCall","src":"25748:44:20"}],"id":8968,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8943,"type":"uint256","value":"retptr"},"id":8969,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8970,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8971,"name":"Identifier","src":"25822:1:20"}],"id":8972,"name":"IndexAccess","src":"25816:8:20"}],"id":8973,"name":"MemberAccess","src":"25816:13:20"}],"id":8974,"name":"Assignment","src":"25806:23:20"}],"id":8975,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8976,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8977,"name":"Identifier","src":"25851:5:20"}],"id":8978,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8979,"name":"Literal","src":"25866:1:20"}],"id":8980,"name":"BinaryOperation","src":"25851:16:20"}],"id":8981,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8982,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8943,"type":"uint256","value":"retptr"},"id":8983,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8889,"type":"struct strings.slice memory","value":"self"},"id":8984,"name":"Identifier","src":"25902:4:20"}],"id":8985,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8889,"type":"struct strings.slice memory","value":"self"},"id":8986,"name":"Identifier","src":"25913:4:20"}],"id":8987,"name":"MemberAccess","src":"25913:9:20"}],"id":8988,"name":"FunctionCall","src":"25887:36:20"}],"id":8989,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8943,"type":"uint256","value":"retptr"},"id":8990,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8889,"type":"struct strings.slice memory","value":"self"},"id":8991,"name":"Identifier","src":"25951:4:20"}],"id":8992,"name":"MemberAccess","src":"25951:9:20"}],"id":8993,"name":"Assignment","src":"25941:19:20"}],"id":8994,"name":"ExpressionStatement","src":"25941:19:20"}],"id":8995,"name":"Block","src":"25869:106:20"}],"id":8996,"name":"IfStatement","src":"25843:132:20"}],"id":8997,"name":"Block","src":"25734:251:20"}],"id":8998,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":8896},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8936,"type":"string memory","value":"ret"},"id":8999,"name":"Identifier","src":"26002:3:20"}],"id":9000,"name":"Return","src":"25995:10:20"}],"id":9001,"name":"Block","src":"25363:649:20"}],"id":9002,"name":"FunctionDefinition","src":"25270:742:20"}],"id":9003,"name":"ContractDefinition","src":"2599:23415:20"}],"id":9004,"name":"SourceUnit","src":"2574:23441:20"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[3753]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3723,"name":"PragmaDirective","src":"771:24:21"},{"attributes":{"SourceUnit":3370,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3754,"symbolAliases":[null],"unitAlias":""},"id":3724,"name":"ImportDirective","src":"797:32:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[3753],"name":"Balanceable","scope":3754},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":3753,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3752,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3725,"name":"ElementaryTypeName","src":"1225:7:21"}],"id":3726,"name":"VariableDeclaration","src":"1225:16:21"},{"attributes":{"constant":false,"name":"_asset","scope":3752,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3727,"name":"ElementaryTypeName","src":"1243:7:21"}],"id":3728,"name":"VariableDeclaration","src":"1243:14:21"}],"id":3729,"name":"ParameterList","src":"1224:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":3752,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3730,"name":"ElementaryTypeName","src":"1282:7:21"}],"id":3731,"name":"VariableDeclaration","src":"1282:7:21"}],"id":3732,"name":"ParameterList","src":"1281:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3728,"type":"address","value":"_asset"},"id":3733,"name":"Identifier","src":"1305:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3734,"name":"ElementaryTypeNameExpression","src":"1315:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3735,"name":"Literal","src":"1323:1:21"}],"id":3736,"name":"FunctionCall","src":"1315:10:21"}],"id":3737,"name":"BinaryOperation","src":"1305:20:21"},{"children":[{"attributes":{"functionReturnParameters":3732},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":3343,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":3738,"name":"Identifier","src":"1348:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3728,"type":"address","value":"_asset"},"id":3739,"name":"Identifier","src":"1354:6:21"}],"id":3740,"name":"FunctionCall","src":"1348:13:21"}],"id":3741,"name":"MemberAccess","src":"1348:23:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"address","value":"_address"},"id":3742,"name":"Identifier","src":"1372:8:21"}],"id":3743,"name":"FunctionCall","src":"1348:33:21"}],"id":3744,"name":"Return","src":"1341:40:21"}],"id":3745,"name":"Block","src":"1327:65:21"},{"children":[{"attributes":{"functionReturnParameters":3732},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"address","value":"_address"},"id":3746,"name":"Identifier","src":"1419:8:21"}],"id":3747,"name":"MemberAccess","src":"1419:16:21"}],"id":3748,"name":"Return","src":"1412:23:21"}],"id":3749,"name":"Block","src":"1398:48:21"}],"id":3750,"name":"IfStatement","src":"1301:145:21"}],"id":3751,"name":"Block","src":"1291:161:21"}],"id":3752,"name":"FunctionDefinition","src":"1207:245:21"}],"id":3753,"name":"ContractDefinition","src":"898:556:21"}],"id":3754,"name":"SourceUnit","src":"771:684:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[9114]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":9005,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":9115,"symbolAliases":[null],"unitAlias":""},"id":9006,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[9114],"name":"BytesUtils","scope":9115},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":9007,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":9008,"name":"ElementaryTypeName","src":"955:7:22"}],"id":9009,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":9114,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9045,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9010,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":9011,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9045,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9012,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":9013,"name":"VariableDeclaration","src":"1125:13:22"}],"id":9014,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9045,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9015,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":9016,"name":"VariableDeclaration","src":"1163:7:22"}],"id":9017,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":9018,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9011,"type":"bytes memory","value":"_bts"},"id":9019,"name":"Identifier","src":"1190:4:22"}],"id":9020,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9013,"type":"uint256","value":"_from"},"id":9021,"name":"Identifier","src":"1205:5:22"}],"id":9022,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9023,"name":"Literal","src":"1215:2:22"}],"id":9024,"name":"FunctionCall","src":"1205:13:22"}],"id":9025,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9026,"name":"Literal","src":"1220:22:22"}],"id":9027,"name":"FunctionCall","src":"1182:61:22"}],"id":9028,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[9030],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":9044,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9029,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":9030,"name":"VariableDeclaration","src":"1254:24:22"}],"id":9031,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[9033]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9044,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9032,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":9033,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9013,"type":"uint256","value":"_from"},"id":9034,"name":"Identifier","src":"1308:5:22"}],"id":9035,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9036,"name":"Literal","src":"1318:2:22"}],"id":9037,"name":"FunctionCall","src":"1308:13:22"}],"id":9038,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":9030,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":9011,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":9033,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":9039,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":9017},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9040,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9030,"type":"bytes20","value":"convertedAddress"},"id":9041,"name":"Identifier","src":"1478:16:22"}],"id":9042,"name":"FunctionCall","src":"1470:25:22"}],"id":9043,"name":"Return","src":"1463:32:22"}],"id":9044,"name":"Block","src":"1172:330:22"}],"id":9045,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":9114,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9079,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9046,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":9047,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9079,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9048,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":9049,"name":"VariableDeclaration","src":"1670:13:22"}],"id":9050,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9079,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9051,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":9052,"name":"VariableDeclaration","src":"1708:6:22"}],"id":9053,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":9054,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9047,"type":"bytes memory","value":"_bts"},"id":9055,"name":"Identifier","src":"1734:4:22"}],"id":9056,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9049,"type":"uint256","value":"_from"},"id":9057,"name":"Identifier","src":"1749:5:22"}],"id":9058,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9059,"name":"Literal","src":"1759:1:22"}],"id":9060,"name":"FunctionCall","src":"1749:12:22"}],"id":9061,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9062,"name":"Literal","src":"1763:22:22"}],"id":9063,"name":"FunctionCall","src":"1726:60:22"}],"id":9064,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[9066],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":9078,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9065,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":9066,"name":"VariableDeclaration","src":"1797:19:22"}],"id":9067,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[9069]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9078,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9068,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":9069,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9049,"type":"uint256","value":"_from"},"id":9070,"name":"Identifier","src":"1846:5:22"}],"id":9071,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9072,"name":"Literal","src":"1856:2:22"}],"id":9073,"name":"FunctionCall","src":"1846:13:22"}],"id":9074,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":9066,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":9047,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":9069,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":9075,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":9053},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9066,"type":"bytes4","value":"slicedBytes4"},"id":9076,"name":"Identifier","src":"2004:12:22"}],"id":9077,"name":"Return","src":"1997:19:22"}],"id":9078,"name":"Block","src":"1716:307:22"}],"id":9079,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":9114,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9113,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9080,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":9081,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9113,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9082,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":9083,"name":"VariableDeclaration","src":"2417:13:22"}],"id":9084,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9113,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9085,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":9086,"name":"VariableDeclaration","src":"2455:7:22"}],"id":9087,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":9088,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9081,"type":"bytes memory","value":"_bts"},"id":9089,"name":"Identifier","src":"2482:4:22"}],"id":9090,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"uint256","value":"_from"},"id":9091,"name":"Identifier","src":"2497:5:22"}],"id":9092,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9093,"name":"Literal","src":"2507:2:22"}],"id":9094,"name":"FunctionCall","src":"2497:13:22"}],"id":9095,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9096,"name":"Literal","src":"2512:22:22"}],"id":9097,"name":"FunctionCall","src":"2474:61:22"}],"id":9098,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[9100],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":9112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9099,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":9100,"name":"VariableDeclaration","src":"2546:24:22"}],"id":9101,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[9103]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9102,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":9103,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"uint256","value":"_from"},"id":9104,"name":"Identifier","src":"2600:5:22"}],"id":9105,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9106,"name":"Literal","src":"2610:2:22"}],"id":9107,"name":"FunctionCall","src":"2600:13:22"}],"id":9108,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":9100,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}},{"_bts":{"declaration":9081,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":9103,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":9109,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":9087},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9100,"type":"uint256","value":"convertedUint256"},"id":9110,"name":"Identifier","src":"2762:16:22"}],"id":9111,"name":"Return","src":"2755:23:22"}],"id":9112,"name":"Block","src":"2464:321:22"}],"id":9113,"name":"FunctionDefinition","src":"2373:412:22"}],"id":9114,"name":"ContractDefinition","src":"911:1876:22"}],"id":9115,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[325]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":231,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":3162,"absolutePath":"controller.sol","file":"../controller.sol","scope":326,"symbolAliases":[null],"unitAlias":""},"id":232,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":326,"symbolAliases":[null],"unitAlias":""},"id":233,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[3206],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[325,3206],"name":"Controllable","scope":326},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":234,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":235,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":325,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":236,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":237,"name":"Literal","src":"1122:66:23"}],"id":238,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":325,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":239,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":240,"name":"Identifier","src":"1306:24:23"}],"id":241,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":325,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":258,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":242,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":243,"name":"VariableDeclaration","src":"1571:24:23"}],"id":244,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":245,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":243,"type":"bytes32","value":"_controllerNode_"},"id":246,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":247,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":248,"name":"Literal","src":"1693:1:23"}],"id":249,"name":"FunctionCall","src":"1685:10:23"}],"id":250,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":241,"type":"bytes32","value":"_controllerNode"},"id":251,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":243,"type":"bytes32","value":"_controllerNode_"},"id":252,"name":"Identifier","src":"1729:16:23"}],"id":253,"name":"Assignment","src":"1711:34:23"}],"id":254,"name":"ExpressionStatement","src":"1711:34:23"}],"id":255,"name":"Block","src":"1697:59:23"}],"id":256,"name":"IfStatement","src":"1661:95:23"}],"id":257,"name":"Block","src":"1606:156:23"}],"id":258,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":259,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":260,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":307,"type":"function (address) view returns (bool)","value":"_isController"},"id":261,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":262,"name":"Identifier","src":"1884:3:23"}],"id":263,"name":"MemberAccess","src":"1884:10:23"}],"id":264,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":265,"name":"Literal","src":"1897:28:23"}],"id":266,"name":"FunctionCall","src":"1862:64:23"}],"id":267,"name":"ExpressionStatement","src":"1862:64:23"},{"id":268,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":269,"name":"Block","src":"1852:92:23"}],"id":270,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":271,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":272,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":324,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":273,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":274,"name":"Identifier","src":"2052:3:23"}],"id":275,"name":"MemberAccess","src":"2052:10:23"}],"id":276,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":277,"name":"Literal","src":"2065:24:23"}],"id":278,"name":"FunctionCall","src":"2035:55:23"}],"id":279,"name":"ExpressionStatement","src":"2035:55:23"},{"id":280,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":281,"name":"Block","src":"2025:83:23"}],"id":282,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":325,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":283,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":290,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":284,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":285,"name":"VariableDeclaration","src":"2216:7:23"}],"id":286,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":286},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":241,"type":"bytes32","value":"_controllerNode"},"id":287,"name":"Identifier","src":"2242:15:23"}],"id":288,"name":"Return","src":"2235:22:23"}],"id":289,"name":"Block","src":"2225:39:23"}],"id":290,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":325,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":307,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":291,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":292,"name":"VariableDeclaration","src":"2355:16:23"}],"id":293,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":307,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":294,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":295,"name":"VariableDeclaration","src":"2396:4:23"}],"id":296,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":296},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":2718,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2726,"type":"type(contract IController)","value":"IController"},"id":297,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":298,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":241,"type":"bytes32","value":"_controllerNode"},"id":299,"name":"Identifier","src":"2443:15:23"}],"id":300,"name":"FunctionCall","src":"2431:28:23"}],"id":301,"name":"FunctionCall","src":"2419:41:23"}],"id":302,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":292,"type":"address","value":"_account"},"id":303,"name":"Identifier","src":"2474:8:23"}],"id":304,"name":"FunctionCall","src":"2419:64:23"}],"id":305,"name":"Return","src":"2412:71:23"}],"id":306,"name":"Block","src":"2402:88:23"}],"id":307,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":325,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":324,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":308,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":309,"name":"VariableDeclaration","src":"2572:16:23"}],"id":310,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":324,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":311,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":312,"name":"VariableDeclaration","src":"2613:4:23"}],"id":313,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":313},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":2725,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2726,"type":"type(contract IController)","value":"IController"},"id":314,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":315,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":241,"type":"bytes32","value":"_controllerNode"},"id":316,"name":"Identifier","src":"2660:15:23"}],"id":317,"name":"FunctionCall","src":"2648:28:23"}],"id":318,"name":"FunctionCall","src":"2636:41:23"}],"id":319,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":309,"type":"address","value":"_account"},"id":320,"name":"Identifier","src":"2686:8:23"}],"id":321,"name":"FunctionCall","src":"2636:59:23"}],"id":322,"name":"Return","src":"2629:66:23"}],"id":323,"name":"Block","src":"2619:83:23"}],"id":324,"name":"FunctionDefinition","src":"2554:148:23"}],"id":325,"name":"ContractDefinition","src":"955:1749:23"}],"id":326,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[3206]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3163,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":4849,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":3207,"symbolAliases":[null],"unitAlias":""},"id":3164,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":5023,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":3207,"symbolAliases":[null],"unitAlias":""},"id":3165,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[3206],"name":"ENSResolvable","scope":3207},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":3206,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3166,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":3167,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3206,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":3177,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3168,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":3169,"name":"VariableDeclaration","src":"1205:16:24"}],"id":3170,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":3171,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"address","value":"_ensRegistry"},"id":3172,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3169,"type":"address","value":"_ensReg_"},"id":3173,"name":"Identifier","src":"1257:8:24"}],"id":3174,"name":"Assignment","src":"1242:23:24"}],"id":3175,"name":"ExpressionStatement","src":"1242:23:24"}],"id":3176,"name":"Block","src":"1232:40:24"}],"id":3177,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":3206,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3178,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":3185,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3179,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":3180,"name":"VariableDeclaration","src":"1410:7:24"}],"id":3181,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":3181},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"address","value":"_ensRegistry"},"id":3182,"name":"Identifier","src":"1436:12:24"}],"id":3183,"name":"Return","src":"1429:19:24"}],"id":3184,"name":"Block","src":"1419:36:24"}],"id":3185,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":3206,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3205,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3186,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":3187,"name":"VariableDeclaration","src":"1652:13:24"}],"id":3188,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":3205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3189,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":3190,"name":"VariableDeclaration","src":"1690:7:24"}],"id":3191,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":3191},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":6228,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5022,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":3192,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":4824,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4848,"type":"type(contract ENS)","value":"ENS"},"id":3193,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"address","value":"_ensRegistry"},"id":3194,"name":"Identifier","src":"1735:12:24"}],"id":3195,"name":"FunctionCall","src":"1731:17:24"}],"id":3196,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3187,"type":"bytes32","value":"_node"},"id":3197,"name":"Identifier","src":"1758:5:24"}],"id":3198,"name":"FunctionCall","src":"1731:33:24"}],"id":3199,"name":"FunctionCall","src":"1716:49:24"}],"id":3200,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3187,"type":"bytes32","value":"_node"},"id":3201,"name":"Identifier","src":"1771:5:24"}],"id":3202,"name":"FunctionCall","src":"1716:61:24"}],"id":3203,"name":"Return","src":"1709:68:24"}],"id":3204,"name":"Block","src":"1699:85:24"}],"id":3205,"name":"FunctionDefinition","src":"1631:153:24"}],"id":3206,"name":"ContractDefinition","src":"1008:778:24"}],"id":3207,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[3910]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3755,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[3910],"name":"Ownable","scope":3911},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3756,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":3757,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3758,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":3759,"name":"VariableDeclaration","src":"1214:11:25"}],"id":3760,"name":"ParameterList","src":"1198:28:25"}],"id":3761,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":3765,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3762,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":3763,"name":"VariableDeclaration","src":"1254:15:25"}],"id":3764,"name":"ParameterList","src":"1253:17:25"}],"id":3765,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":3910,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3766,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":3767,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":3910,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3768,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":3769,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3910,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":3800,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3770,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":3771,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":3800,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3772,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":3773,"name":"VariableDeclaration","src":"1503:19:25"}],"id":3774,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":3775,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3776,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3771,"type":"address payable","value":"_account_"},"id":3777,"name":"Identifier","src":"1552:9:25"}],"id":3778,"name":"Assignment","src":"1543:18:25"}],"id":3779,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3780,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3773,"type":"bool","value":"_transferable_"},"id":3781,"name":"Identifier","src":"1589:14:25"}],"id":3782,"name":"Assignment","src":"1571:32:25"}],"id":3783,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3784,"name":"Identifier","src":"1687:15:25"}],"id":3785,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3765,"type":"function (address)","value":"LockedOwnership"},"id":3786,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3771,"type":"address payable","value":"_account_"},"id":3787,"name":"Identifier","src":"1739:9:25"}],"id":3788,"name":"FunctionCall","src":"1723:26:25"}],"id":3789,"name":"EmitStatement","src":"1718:31:25"}],"id":3790,"name":"Block","src":"1704:56:25"}],"id":3791,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"function (address,address)","value":"TransferredOwnership"},"id":3792,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3793,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3794,"name":"Literal","src":"1803:1:25"}],"id":3795,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3771,"type":"address payable","value":"_account_"},"id":3796,"name":"Identifier","src":"1807:9:25"}],"id":3797,"name":"FunctionCall","src":"1774:43:25"}],"id":3798,"name":"EmitStatement","src":"1769:48:25"}],"id":3799,"name":"Block","src":"1533:291:25"}],"id":3800,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3801,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3802,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3803,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3804,"name":"Identifier","src":"1949:3:25"}],"id":3805,"name":"MemberAccess","src":"1949:10:25"}],"id":3806,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":3807,"name":"Literal","src":"1962:24:25"}],"id":3808,"name":"FunctionCall","src":"1932:55:25"}],"id":3809,"name":"ExpressionStatement","src":"1932:55:25"},{"id":3810,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":3811,"name":"Block","src":"1922:83:25"}],"id":3812,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":3910,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3857,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3813,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":3814,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":3857,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3815,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":3816,"name":"VariableDeclaration","src":"2300:18:25"}],"id":3817,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":3820,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":3818,"name":"Identifier","src":"2329:9:25"}],"id":3819,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3821,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3822,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3823,"name":"Literal","src":"2429:31:25"}],"id":3824,"name":"FunctionCall","src":"2404:57:25"}],"id":3825,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3826,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"address payable","value":"_account"},"id":3827,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3828,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3829,"name":"Literal","src":"2562:1:25"}],"id":3830,"name":"FunctionCall","src":"2554:10:25"}],"id":3831,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":3832,"name":"Literal","src":"2566:37:25"}],"id":3833,"name":"FunctionCall","src":"2534:70:25"}],"id":3834,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3835,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3816,"type":"bool","value":"_transferable"},"id":3836,"name":"Identifier","src":"2707:13:25"}],"id":3837,"name":"Assignment","src":"2689:31:25"}],"id":3838,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3816,"type":"bool","value":"_transferable"},"id":3839,"name":"Identifier","src":"2804:13:25"}],"id":3840,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3765,"type":"function (address)","value":"LockedOwnership"},"id":3841,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"address payable","value":"_account"},"id":3842,"name":"Identifier","src":"2854:8:25"}],"id":3843,"name":"FunctionCall","src":"2838:25:25"}],"id":3844,"name":"EmitStatement","src":"2833:30:25"}],"id":3845,"name":"Block","src":"2819:55:25"}],"id":3846,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"function (address,address)","value":"TransferredOwnership"},"id":3847,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3848,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"address payable","value":"_account"},"id":3849,"name":"Identifier","src":"2963:8:25"}],"id":3850,"name":"FunctionCall","src":"2934:38:25"}],"id":3851,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3852,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"address payable","value":"_account"},"id":3853,"name":"Identifier","src":"3041:8:25"}],"id":3854,"name":"Assignment","src":"3032:17:25"}],"id":3855,"name":"ExpressionStatement","src":"3032:17:25"}],"id":3856,"name":"Block","src":"2339:717:25"}],"id":3857,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":3910,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3858,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3865,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3859,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":3860,"name":"VariableDeclaration","src":"3222:4:25"}],"id":3861,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":3861},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3862,"name":"Identifier","src":"3245:15:25"}],"id":3863,"name":"Return","src":"3238:22:25"}],"id":3864,"name":"Block","src":"3228:39:25"}],"id":3865,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":3910,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3866,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":3869,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":3867,"name":"Identifier","src":"3581:9:25"}],"id":3868,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3870,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3871,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3872,"name":"Literal","src":"3681:31:25"}],"id":3873,"name":"FunctionCall","src":"3656:57:25"}],"id":3874,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3875,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3876,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3877,"name":"Literal","src":"3784:1:25"}],"id":3878,"name":"FunctionCall","src":"3776:10:25"}],"id":3879,"name":"Assignment","src":"3767:19:25"}],"id":3880,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"function (address,address)","value":"TransferredOwnership"},"id":3881,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3882,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3883,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3884,"name":"Literal","src":"3839:1:25"}],"id":3885,"name":"FunctionCall","src":"3831:10:25"}],"id":3886,"name":"FunctionCall","src":"3802:40:25"}],"id":3887,"name":"EmitStatement","src":"3797:45:25"}],"id":3888,"name":"Block","src":"3591:258:25"}],"id":3889,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3910,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3890,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3897,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3891,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":3892,"name":"VariableDeclaration","src":"3970:15:25"}],"id":3893,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":3893},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3894,"name":"Identifier","src":"4004:6:25"}],"id":3895,"name":"Return","src":"3997:13:25"}],"id":3896,"name":"Block","src":"3987:30:25"}],"id":3897,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":3910,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3909,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3898,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":3899,"name":"VariableDeclaration","src":"4141:16:25"}],"id":3900,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3909,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3901,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":3902,"name":"VariableDeclaration","src":"4182:4:25"}],"id":3903,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":3903},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"address","value":"_address"},"id":3904,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3905,"name":"Identifier","src":"4217:6:25"}],"id":3906,"name":"BinaryOperation","src":"4205:18:25"}],"id":3907,"name":"Return","src":"4198:25:25"}],"id":3908,"name":"Block","src":"4188:42:25"}],"id":3909,"name":"FunctionDefinition","src":"4123:107:25"}],"id":3910,"name":"ContractDefinition","src":"1149:3083:25"}],"id":3911,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[4127]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3912,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":6011,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":4128,"symbolAliases":[null],"unitAlias":""},"id":3913,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":4128,"symbolAliases":[null],"unitAlias":""},"id":3914,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[3206],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[4127,3206],"name":"TokenWhitelistable","scope":4128},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":3915,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":3916,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":4127,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3917,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":3918,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4127,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":3928,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3919,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":3920,"name":"VariableDeclaration","src":"1292:28:26"}],"id":3921,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":3922,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3923,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3920,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":3924,"name":"Identifier","src":"1363:20:26"}],"id":3925,"name":"Assignment","src":"1341:42:26"}],"id":3926,"name":"ExpressionStatement","src":"1341:42:26"}],"id":3927,"name":"Block","src":"1331:59:26"}],"id":3928,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3929,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3936,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3930,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":3931,"name":"VariableDeclaration","src":"1567:7:26"}],"id":3932,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":3932},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3933,"name":"Identifier","src":"1593:19:26"}],"id":3934,"name":"Return","src":"1586:26:26"}],"id":3935,"name":"Block","src":"1576:43:26"}],"id":3936,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3965,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3937,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":3938,"name":"VariableDeclaration","src":"2194:10:26"}],"id":3939,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3940,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":3941,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3942,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":3943,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3944,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":3945,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3946,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":3947,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3948,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":3949,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3950,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":3951,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3952,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":3953,"name":"VariableDeclaration","src":"2280:7:26"}],"id":3954,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":3954},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":5048,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3955,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3956,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3957,"name":"Identifier","src":"2334:19:26"}],"id":3958,"name":"FunctionCall","src":"2322:32:26"}],"id":3959,"name":"FunctionCall","src":"2306:49:26"}],"id":3960,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"address","value":"_a"},"id":3961,"name":"Identifier","src":"2369:2:26"}],"id":3962,"name":"FunctionCall","src":"2306:66:26"}],"id":3963,"name":"Return","src":"2299:73:26"}],"id":3964,"name":"Block","src":"2289:90:26"}],"id":3965,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3966,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3967,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":3968,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3969,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":3970,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3971,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":3972,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3973,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":3974,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3975,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":3976,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3977,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":3978,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3979,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":3980,"name":"VariableDeclaration","src":"2991:7:26"}],"id":3981,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":3981},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":5065,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3982,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3983,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3984,"name":"Identifier","src":"3045:19:26"}],"id":3985,"name":"FunctionCall","src":"3033:32:26"}],"id":3986,"name":"FunctionCall","src":"3017:49:26"}],"id":3987,"name":"MemberAccess","src":"3017:67:26"}],"id":3988,"name":"FunctionCall","src":"3017:69:26"}],"id":3989,"name":"Return","src":"3010:76:26"}],"id":3990,"name":"Block","src":"3000:93:26"}],"id":3991,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3992,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4006,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3993,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":3994,"name":"ArrayTypeName","src":"3273:9:26"}],"id":3995,"name":"VariableDeclaration","src":"3273:16:26"}],"id":3996,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":3996},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":5071,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3997,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3998,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3999,"name":"Identifier","src":"3336:19:26"}],"id":4000,"name":"FunctionCall","src":"3324:32:26"}],"id":4001,"name":"FunctionCall","src":"3308:49:26"}],"id":4002,"name":"MemberAccess","src":"3308:67:26"}],"id":4003,"name":"FunctionCall","src":"3308:69:26"}],"id":4004,"name":"Return","src":"3301:76:26"}],"id":4005,"name":"Block","src":"3291:93:26"}],"id":4006,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4007,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4021,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4008,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":4009,"name":"ArrayTypeName","src":"3563:9:26"}],"id":4010,"name":"VariableDeclaration","src":"3563:16:26"}],"id":4011,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":4011},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":5077,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4012,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4013,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4014,"name":"Identifier","src":"3626:19:26"}],"id":4015,"name":"FunctionCall","src":"3614:32:26"}],"id":4016,"name":"FunctionCall","src":"3598:49:26"}],"id":4017,"name":"MemberAccess","src":"3598:66:26"}],"id":4018,"name":"FunctionCall","src":"3598:68:26"}],"id":4019,"name":"Return","src":"3591:75:26"}],"id":4020,"name":"Block","src":"3581:92:26"}],"id":4021,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":4127,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":4042,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4022,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":4023,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":4042,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4024,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":4025,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":4042,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4026,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":4027,"name":"VariableDeclaration","src":"4007:19:26"}],"id":4028,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":4029,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":5109,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4030,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4031,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4032,"name":"Identifier","src":"4075:19:26"}],"id":4033,"name":"FunctionCall","src":"4063:32:26"}],"id":4034,"name":"FunctionCall","src":"4047:49:26"}],"id":4035,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4023,"type":"address","value":"_token"},"id":4036,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4025,"type":"uint256","value":"_rate"},"id":4037,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4027,"type":"uint256","value":"_updateDate"},"id":4038,"name":"Identifier","src":"4128:11:26"}],"id":4039,"name":"FunctionCall","src":"4047:93:26"}],"id":4040,"name":"ExpressionStatement","src":"4047:93:26"}],"id":4041,"name":"Block","src":"4037:110:26"}],"id":4042,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":4064,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4043,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":4044,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":4064,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4045,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":4046,"name":"VariableDeclaration","src":"4364:18:26"}],"id":4047,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4064,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4048,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":4049,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":4064,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4050,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":4051,"name":"VariableDeclaration","src":"4416:7:26"}],"id":4052,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":4052},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":5095,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4053,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4054,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4055,"name":"Identifier","src":"4470:19:26"}],"id":4056,"name":"FunctionCall","src":"4458:32:26"}],"id":4057,"name":"FunctionCall","src":"4442:49:26"}],"id":4058,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4044,"type":"address","value":"_destination"},"id":4059,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"bytes memory","value":"_data"},"id":4060,"name":"Identifier","src":"4533:5:26"}],"id":4061,"name":"FunctionCall","src":"4442:97:26"}],"id":4062,"name":"Return","src":"4435:104:26"}],"id":4063,"name":"Block","src":"4425:121:26"}],"id":4064,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4080,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4065,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":4066,"name":"VariableDeclaration","src":"4671:10:26"}],"id":4067,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4080,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4068,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":4069,"name":"VariableDeclaration","src":"4706:4:26"}],"id":4070,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,4072,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":4079,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4071,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":4072,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4073,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4066,"type":"address","value":"_a"},"id":4074,"name":"Identifier","src":"4767:2:26"}],"id":4075,"name":"FunctionCall","src":"4753:17:26"}],"id":4076,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":4070},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"bool","value":"available"},"id":4077,"name":"Identifier","src":"4787:9:26"}],"id":4078,"name":"Return","src":"4780:16:26"}],"id":4079,"name":"Block","src":"4712:91:26"}],"id":4080,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4096,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4081,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":4082,"name":"VariableDeclaration","src":"4931:10:26"}],"id":4083,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4096,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4084,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":4085,"name":"VariableDeclaration","src":"4966:4:26"}],"id":4086,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,4088,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":4095,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4087,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":4088,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4089,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4082,"type":"address","value":"_a"},"id":4090,"name":"Identifier","src":"5028:2:26"}],"id":4091,"name":"FunctionCall","src":"5014:17:26"}],"id":4092,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":4086},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4088,"type":"bool","value":"redeemable"},"id":4093,"name":"Identifier","src":"5048:10:26"}],"id":4094,"name":"Return","src":"5041:17:26"}],"id":4095,"name":"Block","src":"4972:93:26"}],"id":4096,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4112,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4097,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":4098,"name":"VariableDeclaration","src":"5187:10:26"}],"id":4099,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4112,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4100,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":4101,"name":"VariableDeclaration","src":"5222:4:26"}],"id":4102,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,4104,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":4111,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4103,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":4104,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4105,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4098,"type":"address","value":"_a"},"id":4106,"name":"Identifier","src":"5282:2:26"}],"id":4107,"name":"FunctionCall","src":"5268:17:26"}],"id":4108,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":4102},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4104,"type":"bool","value":"loadable"},"id":4109,"name":"Identifier","src":"5302:8:26"}],"id":4110,"name":"Return","src":"5295:15:26"}],"id":4111,"name":"Block","src":"5228:89:26"}],"id":4112,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4113,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4126,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4114,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":4115,"name":"VariableDeclaration","src":"5482:7:26"}],"id":4116,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":4116},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":5100,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4117,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4118,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4119,"name":"Identifier","src":"5536:19:26"}],"id":4120,"name":"FunctionCall","src":"5524:32:26"}],"id":4121,"name":"FunctionCall","src":"5508:49:26"}],"id":4122,"name":"MemberAccess","src":"5508:60:26"}],"id":4123,"name":"FunctionCall","src":"5508:62:26"}],"id":4124,"name":"Return","src":"5501:69:26"}],"id":4125,"name":"Block","src":"5491:86:26"}],"id":4126,"name":"FunctionDefinition","src":"5436:141:26"}],"id":4127,"name":"ContractDefinition","src":"958:4621:26"}],"id":4128,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[4167]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4129,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":3370,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":4168,"symbolAliases":[null],"unitAlias":""},"id":4130,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":3589,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":4168,"symbolAliases":[null],"unitAlias":""},"id":4131,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[4167],"name":"Transferrable","scope":4168},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3588,"type":"library SafeERC20"},"id":4132,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":4133,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":4134,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":4167,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4166,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4135,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":4136,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":4166,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4137,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":4138,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":4166,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4139,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":4140,"name":"VariableDeclaration","src":"1426:15:27"}],"id":4141,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":4142,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4138,"type":"address","value":"_asset"},"id":4143,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4144,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4145,"name":"Literal","src":"1528:1:27"}],"id":4146,"name":"FunctionCall","src":"1520:10:27"}],"id":4147,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4136,"type":"address payable","value":"_to"},"id":4148,"name":"Identifier","src":"1546:3:27"}],"id":4150,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4140,"type":"uint256","value":"_amount"},"id":4151,"name":"Identifier","src":"1559:7:27"}],"id":4152,"name":"FunctionCall","src":"1546:21:27"}],"id":4153,"name":"ExpressionStatement","src":"1546:21:27"}],"id":4154,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":3402,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":4155,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4138,"type":"address","value":"_asset"},"id":4156,"name":"Identifier","src":"1604:6:27"}],"id":4157,"name":"FunctionCall","src":"1598:13:27"}],"id":4158,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4136,"type":"address payable","value":"_to"},"id":4159,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4140,"type":"uint256","value":"_amount"},"id":4160,"name":"Identifier","src":"1630:7:27"}],"id":4161,"name":"FunctionCall","src":"1598:40:27"}],"id":4162,"name":"ExpressionStatement","src":"1598:40:27"}],"id":4163,"name":"Block","src":"1584:65:27"}],"id":4164,"name":"IfStatement","src":"1506:143:27"}],"id":4165,"name":"Block","src":"1452:203:27"}],"id":4166,"name":"FunctionDefinition","src":"1366:289:27"}],"id":4167,"name":"ContractDefinition","src":"961:696:27"}],"id":4168,"name":"SourceUnit","src":"773:885:27"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[4187],"Licence":[4711]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4169,"name":"PragmaDirective","src":"767:24:28"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4170,"name":"ImportDirective","src":"793:34:28"},{"attributes":{"SourceUnit":3589,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4171,"name":"ImportDirective","src":"828:35:28"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4172,"name":"ImportDirective","src":"864:38:28"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4173,"name":"ImportDirective","src":"903:39:28"},{"attributes":{"SourceUnit":4168,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4174,"name":"ImportDirective","src":"943:39:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[4187],"name":"ILicence","scope":4712},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":4187,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4181,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4175,"name":"ElementaryTypeName","src":"1125:7:28"}],"id":4176,"name":"VariableDeclaration","src":"1125:7:28"},{"attributes":{"constant":false,"name":"","scope":4181,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4177,"name":"ElementaryTypeName","src":"1134:7:28"}],"id":4178,"name":"VariableDeclaration","src":"1134:7:28"}],"id":4179,"name":"ParameterList","src":"1124:18:28"},{"attributes":{"parameters":[null]},"children":[],"id":4180,"name":"ParameterList","src":"1159:0:28"}],"id":4181,"name":"FunctionDefinition","src":"1111:49:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":4187,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4182,"name":"ElementaryTypeName","src":"1195:7:28"}],"id":4183,"name":"VariableDeclaration","src":"1195:7:28"}],"id":4184,"name":"ParameterList","src":"1194:9:28"},{"attributes":{"parameters":[null]},"children":[],"id":4185,"name":"ParameterList","src":"1212:0:28"}],"id":4186,"name":"FunctionDefinition","src":"1166:47:28"}],"id":4187,"name":"ContractDefinition","src":"1086:129:28"},{"attributes":{"contractDependencies":[325,3206,4167],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[4711,325,3206,4167],"name":"Licence","scope":4712},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4167,"type":"contract Transferrable"},"id":4188,"name":"UserDefinedTypeName","src":"1401:13:28"}],"id":4189,"name":"InheritanceSpecifier","src":"1401:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":4190,"name":"UserDefinedTypeName","src":"1416:13:28"}],"id":4191,"name":"InheritanceSpecifier","src":"1416:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":4192,"name":"UserDefinedTypeName","src":"1431:12:28"}],"id":4193,"name":"InheritanceSpecifier","src":"1431:12:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":4194,"name":"UserDefinedTypeName","src":"1456:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":4195,"name":"ElementaryTypeName","src":"1469:7:28"}],"id":4196,"name":"UsingForDirective","src":"1450:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3588,"type":"library SafeERC20"},"id":4197,"name":"UserDefinedTypeName","src":"1488:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":4198,"name":"UserDefinedTypeName","src":"1502:5:28"}],"id":4199,"name":"UsingForDirective","src":"1482:26:28"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":4203,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4200,"name":"ElementaryTypeName","src":"1614:7:28"}],"id":4201,"name":"VariableDeclaration","src":"1614:15:28"}],"id":4202,"name":"ParameterList","src":"1613:17:28"}],"id":4203,"name":"EventDefinition","src":"1590:41:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":4207,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4204,"name":"ElementaryTypeName","src":"1661:7:28"}],"id":4205,"name":"VariableDeclaration","src":"1661:17:28"}],"id":4206,"name":"ParameterList","src":"1660:19:28"}],"id":4207,"name":"EventDefinition","src":"1636:44:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":4211,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4208,"name":"ElementaryTypeName","src":"1710:7:28"}],"id":4209,"name":"VariableDeclaration","src":"1710:18:28"}],"id":4210,"name":"ParameterList","src":"1709:20:28"}],"id":4211,"name":"EventDefinition","src":"1685:45:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":4215,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4212,"name":"ElementaryTypeName","src":"1767:7:28"}],"id":4213,"name":"VariableDeclaration","src":"1767:15:28"}],"id":4214,"name":"ParameterList","src":"1766:17:28"}],"id":4215,"name":"EventDefinition","src":"1735:49:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":4219,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4216,"name":"ElementaryTypeName","src":"1816:7:28"}],"id":4217,"name":"VariableDeclaration","src":"1816:18:28"}],"id":4218,"name":"ParameterList","src":"1815:20:28"}],"id":4219,"name":"EventDefinition","src":"1789:47:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":4229,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4220,"name":"ElementaryTypeName","src":"1873:7:28"}],"id":4221,"name":"VariableDeclaration","src":"1873:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4229,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4222,"name":"ElementaryTypeName","src":"1888:7:28"}],"id":4223,"name":"VariableDeclaration","src":"1888:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4229,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4224,"name":"ElementaryTypeName","src":"1901:7:28"}],"id":4225,"name":"VariableDeclaration","src":"1901:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4226,"name":"ElementaryTypeName","src":"1917:7:28"}],"id":4227,"name":"VariableDeclaration","src":"1917:15:28"}],"id":4228,"name":"ParameterList","src":"1872:61:28"}],"id":4229,"name":"EventDefinition","src":"1842:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":4239,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4230,"name":"ElementaryTypeName","src":"1970:7:28"}],"id":4231,"name":"VariableDeclaration","src":"1970:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4239,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4232,"name":"ElementaryTypeName","src":"1985:7:28"}],"id":4233,"name":"VariableDeclaration","src":"1985:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4239,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4234,"name":"ElementaryTypeName","src":"1998:7:28"}],"id":4235,"name":"VariableDeclaration","src":"1998:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4239,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4236,"name":"ElementaryTypeName","src":"2014:7:28"}],"id":4237,"name":"VariableDeclaration","src":"2014:15:28"}],"id":4238,"name":"ParameterList","src":"1969:61:28"}],"id":4239,"name":"EventDefinition","src":"1939:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4247,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4240,"name":"ElementaryTypeName","src":"2051:7:28"}],"id":4241,"name":"VariableDeclaration","src":"2051:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4247,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4242,"name":"ElementaryTypeName","src":"2064:7:28"}],"id":4243,"name":"VariableDeclaration","src":"2064:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4247,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4244,"name":"ElementaryTypeName","src":"2080:7:28"}],"id":4245,"name":"VariableDeclaration","src":"2080:15:28"}],"id":4246,"name":"ParameterList","src":"2050:46:28"}],"id":4247,"name":"EventDefinition","src":"2037:60:28"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":4711,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4248,"name":"ElementaryTypeName","src":"2209:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":4249,"name":"Literal","src":"2252:4:28"}],"id":4250,"name":"VariableDeclaration","src":"2209:47:28"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":4711,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4251,"name":"ElementaryTypeName","src":"2262:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4252,"name":"Literal","src":"2305:1:28"}],"id":4253,"name":"VariableDeclaration","src":"2262:44:28"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":4711,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4254,"name":"ElementaryTypeName","src":"2313:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":4255,"name":"Literal","src":"2351:42:28"}],"id":4256,"name":"VariableDeclaration","src":"2313:80:28"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":4711,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4257,"name":"ElementaryTypeName","src":"2433:15:28"}],"id":4258,"name":"VariableDeclaration","src":"2433:36:28"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":4711,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4259,"name":"ElementaryTypeName","src":"2475:15:28"}],"id":4260,"name":"VariableDeclaration","src":"2475:36:28"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":4711,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4261,"name":"ElementaryTypeName","src":"2517:7:28"}],"id":4262,"name":"VariableDeclaration","src":"2517:27:28"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":4711,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4263,"name":"ElementaryTypeName","src":"2551:4:28"}],"id":4264,"name":"VariableDeclaration","src":"2551:31:28"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":4711,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4265,"name":"ElementaryTypeName","src":"2588:4:28"}],"id":4266,"name":"VariableDeclaration","src":"2588:31:28"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":4711,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4267,"name":"ElementaryTypeName","src":"2625:4:28"}],"id":4268,"name":"VariableDeclaration","src":"2625:30:28"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":4711,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4269,"name":"ElementaryTypeName","src":"2661:4:28"}],"id":4270,"name":"VariableDeclaration","src":"2661:38:28"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":4711,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4271,"name":"ElementaryTypeName","src":"2853:7:28"}],"id":4272,"name":"VariableDeclaration","src":"2853:36:28"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4273,"name":"ParameterList","src":"2990:2:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4274,"name":"Identifier","src":"3003:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4275,"name":"Identifier","src":"3011:3:28"}],"id":4276,"name":"MemberAccess","src":"3011:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"address","value":"_licenceDAO"},"id":4277,"name":"Identifier","src":"3025:11:28"}],"id":4278,"name":"BinaryOperation","src":"3011:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":4279,"name":"Literal","src":"3038:26:28"}],"id":4280,"name":"FunctionCall","src":"3003:62:28"}],"id":4281,"name":"ExpressionStatement","src":"3003:62:28"},{"id":4282,"name":"PlaceholderStatement","src":"3075:1:28"}],"id":4283,"name":"Block","src":"2993:90:28"}],"id":4284,"name":"ModifierDefinition","src":"2974:109:28"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4285,"name":"ElementaryTypeName","src":"3628:7:28"}],"id":4286,"name":"VariableDeclaration","src":"3628:17:28"},{"attributes":{"constant":false,"name":"_float_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4287,"name":"ElementaryTypeName","src":"3647:15:28"}],"id":4288,"name":"VariableDeclaration","src":"3647:23:28"},{"attributes":{"constant":false,"name":"_holder_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4289,"name":"ElementaryTypeName","src":"3672:15:28"}],"id":4290,"name":"VariableDeclaration","src":"3672:24:28"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4291,"name":"ElementaryTypeName","src":"3698:7:28"}],"id":4292,"name":"VariableDeclaration","src":"3698:20:28"},{"attributes":{"constant":false,"name":"_ens_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4293,"name":"ElementaryTypeName","src":"3720:7:28"}],"id":4294,"name":"VariableDeclaration","src":"3720:13:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4295,"name":"ElementaryTypeName","src":"3735:7:28"}],"id":4296,"name":"VariableDeclaration","src":"3735:24:28"}],"id":4297,"name":"ParameterList","src":"3627:133:28"},{"attributes":{"parameters":[null]},"children":[],"id":4304,"name":"ParameterList","src":"3848:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":4298,"name":"Identifier","src":"3784:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4294,"type":"address","value":"_ens_"},"id":4299,"name":"Identifier","src":"3798:5:28"}],"id":4300,"name":"ModifierInvocation","src":"3784:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":4301,"name":"Identifier","src":"3813:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4296,"type":"bytes32","value":"_controllerNode_"},"id":4302,"name":"Identifier","src":"3826:16:28"}],"id":4303,"name":"ModifierInvocation","src":"3813:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4305,"name":"Identifier","src":"3858:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4253,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":4306,"name":"Identifier","src":"3866:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4286,"type":"uint256","value":"_licence_"},"id":4307,"name":"Identifier","src":"3886:9:28"}],"id":4308,"name":"BinaryOperation","src":"3866:29:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4286,"type":"uint256","value":"_licence_"},"id":4309,"name":"Identifier","src":"3899:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4250,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4310,"name":"Identifier","src":"3912:16:28"}],"id":4311,"name":"BinaryOperation","src":"3899:29:28"}],"id":4312,"name":"BinaryOperation","src":"3866:62:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":4313,"name":"Literal","src":"3930:29:28"}],"id":4314,"name":"FunctionCall","src":"3858:102:28"}],"id":4315,"name":"ExpressionStatement","src":"3858:102:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4272,"type":"uint256","value":"_licenceAmountScaled"},"id":4316,"name":"Identifier","src":"3970:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4286,"type":"uint256","value":"_licence_"},"id":4317,"name":"Identifier","src":"3993:9:28"}],"id":4318,"name":"Assignment","src":"3970:32:28"}],"id":4319,"name":"ExpressionStatement","src":"3970:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4320,"name":"Identifier","src":"4012:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4288,"type":"address payable","value":"_float_"},"id":4321,"name":"Identifier","src":"4027:7:28"}],"id":4322,"name":"Assignment","src":"4012:22:28"}],"id":4323,"name":"ExpressionStatement","src":"4012:22:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4324,"name":"Identifier","src":"4044:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4290,"type":"address payable","value":"_holder_"},"id":4325,"name":"Identifier","src":"4059:8:28"}],"id":4326,"name":"Assignment","src":"4044:23:28"}],"id":4327,"name":"ExpressionStatement","src":"4044:23:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4292,"type":"address","value":"_tknAddress_"},"id":4328,"name":"Identifier","src":"4081:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4329,"name":"ElementaryTypeNameExpression","src":"4097:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4330,"name":"Literal","src":"4105:1:28"}],"id":4331,"name":"FunctionCall","src":"4097:10:28"}],"id":4332,"name":"BinaryOperation","src":"4081:26:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4256,"type":"address","value":"_tknContractAddress"},"id":4333,"name":"Identifier","src":"4123:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4292,"type":"address","value":"_tknAddress_"},"id":4334,"name":"Identifier","src":"4145:12:28"}],"id":4335,"name":"Assignment","src":"4123:34:28"}],"id":4336,"name":"ExpressionStatement","src":"4123:34:28"}],"id":4337,"name":"Block","src":"4109:59:28"}],"id":4338,"name":"IfStatement","src":"4077:91:28"}],"id":4339,"name":"Block","src":"3848:326:28"}],"id":4340,"name":"FunctionDefinition","src":"3616:558:28"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":4711,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4341,"name":"ParameterList","src":"4290:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4342,"name":"ParameterList","src":"4310:0:28"},{"attributes":{"statements":[null]},"children":[],"id":4343,"name":"Block","src":"4310:2:28"}],"id":4344,"name":"FunctionDefinition","src":"4282:30:28"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4345,"name":"ParameterList","src":"4503:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4346,"name":"ElementaryTypeName","src":"4529:7:28"}],"id":4347,"name":"VariableDeclaration","src":"4529:7:28"}],"id":4348,"name":"ParameterList","src":"4528:9:28"},{"children":[{"attributes":{"functionReturnParameters":4348},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4272,"type":"uint256","value":"_licenceAmountScaled"},"id":4349,"name":"Identifier","src":"4555:20:28"}],"id":4350,"name":"Return","src":"4548:27:28"}],"id":4351,"name":"Block","src":"4538:44:28"}],"id":4352,"name":"FunctionDefinition","src":"4475:107:28"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4353,"name":"ParameterList","src":"4749:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4360,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4354,"name":"ElementaryTypeName","src":"4775:7:28"}],"id":4355,"name":"VariableDeclaration","src":"4775:7:28"}],"id":4356,"name":"ParameterList","src":"4774:9:28"},{"children":[{"attributes":{"functionReturnParameters":4356},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4357,"name":"Identifier","src":"4801:12:28"}],"id":4358,"name":"Return","src":"4794:19:28"}],"id":4359,"name":"Block","src":"4784:36:28"}],"id":4360,"name":"FunctionDefinition","src":"4729:91:28"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4361,"name":"ParameterList","src":"4970:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4362,"name":"ElementaryTypeName","src":"4996:7:28"}],"id":4363,"name":"VariableDeclaration","src":"4996:7:28"}],"id":4364,"name":"ParameterList","src":"4995:9:28"},{"children":[{"attributes":{"functionReturnParameters":4364},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4365,"name":"Identifier","src":"5022:12:28"}],"id":4366,"name":"Return","src":"5015:19:28"}],"id":4367,"name":"Block","src":"5005:36:28"}],"id":4368,"name":"FunctionDefinition","src":"4950:91:28"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4369,"name":"ParameterList","src":"5172:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4376,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4370,"name":"ElementaryTypeName","src":"5198:7:28"}],"id":4371,"name":"VariableDeclaration","src":"5198:7:28"}],"id":4372,"name":"ParameterList","src":"5197:9:28"},{"children":[{"attributes":{"functionReturnParameters":4372},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"address","value":"_licenceDAO"},"id":4373,"name":"Identifier","src":"5224:11:28"}],"id":4374,"name":"Return","src":"5217:18:28"}],"id":4375,"name":"Block","src":"5207:35:28"}],"id":4376,"name":"FunctionDefinition","src":"5153:89:28"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4377,"name":"ParameterList","src":"5369:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4384,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4378,"name":"ElementaryTypeName","src":"5395:7:28"}],"id":4379,"name":"VariableDeclaration","src":"5395:7:28"}],"id":4380,"name":"ParameterList","src":"5394:9:28"},{"children":[{"attributes":{"functionReturnParameters":4380},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4256,"type":"address","value":"_tknContractAddress"},"id":4381,"name":"Identifier","src":"5421:19:28"}],"id":4382,"name":"Return","src":"5414:26:28"}],"id":4383,"name":"Block","src":"5404:43:28"}],"id":4384,"name":"FunctionDefinition","src":"5342:105:28"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4385,"name":"ParameterList","src":"5571:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4388,"name":"ParameterList","src":"5593:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4386,"name":"Identifier","src":"5583:9:28"}],"id":4387,"name":"ModifierInvocation","src":"5583:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4264,"type":"bool","value":"_lockedCryptoFloat"},"id":4389,"name":"Identifier","src":"5603:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4390,"name":"Literal","src":"5624:4:28"}],"id":4391,"name":"Assignment","src":"5603:25:28"}],"id":4392,"name":"ExpressionStatement","src":"5603:25:28"}],"id":4393,"name":"Block","src":"5593:42:28"}],"id":4394,"name":"FunctionDefinition","src":"5553:82:28"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4395,"name":"ParameterList","src":"5760:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4398,"name":"ParameterList","src":"5782:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4396,"name":"Identifier","src":"5772:9:28"}],"id":4397,"name":"ModifierInvocation","src":"5772:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4266,"type":"bool","value":"_lockedTokenHolder"},"id":4399,"name":"Identifier","src":"5792:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4400,"name":"Literal","src":"5813:4:28"}],"id":4401,"name":"Assignment","src":"5792:25:28"}],"id":4402,"name":"ExpressionStatement","src":"5792:25:28"}],"id":4403,"name":"Block","src":"5782:42:28"}],"id":4404,"name":"FunctionDefinition","src":"5741:83:28"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4405,"name":"ParameterList","src":"5945:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4408,"name":"ParameterList","src":"5967:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4406,"name":"Identifier","src":"5957:9:28"}],"id":4407,"name":"ModifierInvocation","src":"5957:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4268,"type":"bool","value":"_lockedLicenceDAO"},"id":4409,"name":"Identifier","src":"5977:17:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4410,"name":"Literal","src":"5997:4:28"}],"id":4411,"name":"Assignment","src":"5977:24:28"}],"id":4412,"name":"ExpressionStatement","src":"5977:24:28"}],"id":4413,"name":"Block","src":"5967:41:28"}],"id":4414,"name":"FunctionDefinition","src":"5922:86:28"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4415,"name":"ParameterList","src":"6137:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4418,"name":"ParameterList","src":"6159:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4416,"name":"Identifier","src":"6149:9:28"}],"id":4417,"name":"ModifierInvocation","src":"6149:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4270,"type":"bool","value":"_lockedTKNContractAddress"},"id":4419,"name":"Identifier","src":"6169:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4420,"name":"Literal","src":"6197:4:28"}],"id":4421,"name":"Assignment","src":"6169:32:28"}],"id":4422,"name":"ExpressionStatement","src":"6169:32:28"}],"id":4423,"name":"Block","src":"6159:49:28"}],"id":4424,"name":"FunctionDefinition","src":"6106:102:28"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":4447,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4425,"name":"ElementaryTypeName","src":"6359:15:28"}],"id":4426,"name":"VariableDeclaration","src":"6359:25:28"}],"id":4427,"name":"ParameterList","src":"6358:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":4430,"name":"ParameterList","src":"6405:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4428,"name":"Identifier","src":"6395:9:28"}],"id":4429,"name":"ModifierInvocation","src":"6395:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4431,"name":"Identifier","src":"6415:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4686,"type":"function () view returns (bool)","value":"floatLocked"},"id":4432,"name":"Identifier","src":"6424:11:28"}],"id":4433,"name":"FunctionCall","src":"6424:13:28"}],"id":4434,"name":"UnaryOperation","src":"6423:14:28"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":4435,"name":"Literal","src":"6439:17:28"}],"id":4436,"name":"FunctionCall","src":"6415:42:28"}],"id":4437,"name":"ExpressionStatement","src":"6415:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4438,"name":"Identifier","src":"6467:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4426,"type":"address payable","value":"_newFloat"},"id":4439,"name":"Identifier","src":"6482:9:28"}],"id":4440,"name":"Assignment","src":"6467:24:28"}],"id":4441,"name":"ExpressionStatement","src":"6467:24:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4207,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":4442,"name":"Identifier","src":"6506:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4426,"type":"address payable","value":"_newFloat"},"id":4443,"name":"Identifier","src":"6525:9:28"}],"id":4444,"name":"FunctionCall","src":"6506:29:28"}],"id":4445,"name":"EmitStatement","src":"6501:34:28"}],"id":4446,"name":"Block","src":"6405:137:28"}],"id":4447,"name":"FunctionDefinition","src":"6338:204:28"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":4470,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4448,"name":"ElementaryTypeName","src":"6700:15:28"}],"id":4449,"name":"VariableDeclaration","src":"6700:26:28"}],"id":4450,"name":"ParameterList","src":"6699:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":4453,"name":"ParameterList","src":"6747:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4451,"name":"Identifier","src":"6737:9:28"}],"id":4452,"name":"ModifierInvocation","src":"6737:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4454,"name":"Identifier","src":"6757:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4694,"type":"function () view returns (bool)","value":"holderLocked"},"id":4455,"name":"Identifier","src":"6766:12:28"}],"id":4456,"name":"FunctionCall","src":"6766:14:28"}],"id":4457,"name":"UnaryOperation","src":"6765:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":4458,"name":"Literal","src":"6782:27:28"}],"id":4459,"name":"FunctionCall","src":"6757:53:28"}],"id":4460,"name":"ExpressionStatement","src":"6757:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4461,"name":"Identifier","src":"6820:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4449,"type":"address payable","value":"_newHolder"},"id":4462,"name":"Identifier","src":"6835:10:28"}],"id":4463,"name":"Assignment","src":"6820:25:28"}],"id":4464,"name":"ExpressionStatement","src":"6820:25:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4211,"type":"function (address)","value":"UpdatedTokenHolder"},"id":4465,"name":"Identifier","src":"6860:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4449,"type":"address payable","value":"_newHolder"},"id":4466,"name":"Identifier","src":"6879:10:28"}],"id":4467,"name":"FunctionCall","src":"6860:30:28"}],"id":4468,"name":"EmitStatement","src":"6855:35:28"}],"id":4469,"name":"Block","src":"6747:150:28"}],"id":4470,"name":"FunctionDefinition","src":"6678:219:28"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":4493,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4471,"name":"ElementaryTypeName","src":"7053:7:28"}],"id":4472,"name":"VariableDeclaration","src":"7053:15:28"}],"id":4473,"name":"ParameterList","src":"7052:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":4476,"name":"ParameterList","src":"7089:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4474,"name":"Identifier","src":"7079:9:28"}],"id":4475,"name":"ModifierInvocation","src":"7079:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4477,"name":"Identifier","src":"7099:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4702,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":4478,"name":"Identifier","src":"7108:16:28"}],"id":4479,"name":"FunctionCall","src":"7108:18:28"}],"id":4480,"name":"UnaryOperation","src":"7107:19:28"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":4481,"name":"Literal","src":"7128:15:28"}],"id":4482,"name":"FunctionCall","src":"7099:45:28"}],"id":4483,"name":"ExpressionStatement","src":"7099:45:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"address","value":"_licenceDAO"},"id":4484,"name":"Identifier","src":"7154:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4472,"type":"address","value":"_newDAO"},"id":4485,"name":"Identifier","src":"7168:7:28"}],"id":4486,"name":"Assignment","src":"7154:21:28"}],"id":4487,"name":"ExpressionStatement","src":"7154:21:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4203,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":4488,"name":"Identifier","src":"7190:17:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4472,"type":"address","value":"_newDAO"},"id":4489,"name":"Identifier","src":"7208:7:28"}],"id":4490,"name":"FunctionCall","src":"7190:26:28"}],"id":4491,"name":"EmitStatement","src":"7185:31:28"}],"id":4492,"name":"Block","src":"7089:134:28"}],"id":4493,"name":"FunctionDefinition","src":"7027:196:28"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":4516,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4494,"name":"ElementaryTypeName","src":"7388:7:28"}],"id":4495,"name":"VariableDeclaration","src":"7388:15:28"}],"id":4496,"name":"ParameterList","src":"7387:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":4499,"name":"ParameterList","src":"7424:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4497,"name":"Identifier","src":"7414:9:28"}],"id":4498,"name":"ModifierInvocation","src":"7414:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4500,"name":"Identifier","src":"7434:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4710,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":4501,"name":"Identifier","src":"7443:24:28"}],"id":4502,"name":"FunctionCall","src":"7443:26:28"}],"id":4503,"name":"UnaryOperation","src":"7442:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":4504,"name":"Literal","src":"7471:15:28"}],"id":4505,"name":"FunctionCall","src":"7434:53:28"}],"id":4506,"name":"ExpressionStatement","src":"7434:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4256,"type":"address","value":"_tknContractAddress"},"id":4507,"name":"Identifier","src":"7497:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4495,"type":"address","value":"_newTKN"},"id":4508,"name":"Identifier","src":"7519:7:28"}],"id":4509,"name":"Assignment","src":"7497:29:28"}],"id":4510,"name":"ExpressionStatement","src":"7497:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4215,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":4511,"name":"Identifier","src":"7541:25:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4495,"type":"address","value":"_newTKN"},"id":4512,"name":"Identifier","src":"7567:7:28"}],"id":4513,"name":"FunctionCall","src":"7541:34:28"}],"id":4514,"name":"EmitStatement","src":"7536:39:28"}],"id":4515,"name":"Block","src":"7424:158:28"}],"id":4516,"name":"FunctionDefinition","src":"7354:228:28"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":4543,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4517,"name":"ElementaryTypeName","src":"7752:7:28"}],"id":4518,"name":"VariableDeclaration","src":"7752:18:28"}],"id":4519,"name":"ParameterList","src":"7751:20:28"},{"attributes":{"parameters":[null]},"children":[],"id":4522,"name":"ParameterList","src":"7789:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4284,"type":"modifier ()","value":"onlyDAO"},"id":4520,"name":"Identifier","src":"7781:7:28"}],"id":4521,"name":"ModifierInvocation","src":"7781:7:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4523,"name":"Identifier","src":"7799:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4253,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":4524,"name":"Identifier","src":"7807:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4518,"type":"uint256","value":"_newAmount"},"id":4525,"name":"Identifier","src":"7827:10:28"}],"id":4526,"name":"BinaryOperation","src":"7807:30:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4518,"type":"uint256","value":"_newAmount"},"id":4527,"name":"Identifier","src":"7841:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4250,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4528,"name":"Identifier","src":"7855:16:28"}],"id":4529,"name":"BinaryOperation","src":"7841:30:28"}],"id":4530,"name":"BinaryOperation","src":"7807:64:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":4531,"name":"Literal","src":"7873:29:28"}],"id":4532,"name":"FunctionCall","src":"7799:104:28"}],"id":4533,"name":"ExpressionStatement","src":"7799:104:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4272,"type":"uint256","value":"_licenceAmountScaled"},"id":4534,"name":"Identifier","src":"7913:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4518,"type":"uint256","value":"_newAmount"},"id":4535,"name":"Identifier","src":"7936:10:28"}],"id":4536,"name":"Assignment","src":"7913:33:28"}],"id":4537,"name":"ExpressionStatement","src":"7913:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4219,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":4538,"name":"Identifier","src":"7961:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4518,"type":"uint256","value":"_newAmount"},"id":4539,"name":"Identifier","src":"7982:10:28"}],"id":4540,"name":"FunctionCall","src":"7961:32:28"}],"id":4541,"name":"EmitStatement","src":"7956:37:28"}],"id":4542,"name":"Block","src":"7789:211:28"}],"id":4543,"name":"FunctionDefinition","src":"7723:277:28"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":4711,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":4654,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4544,"name":"ElementaryTypeName","src":"8286:7:28"}],"id":4545,"name":"VariableDeclaration","src":"8286:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":4654,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4546,"name":"ElementaryTypeName","src":"8302:7:28"}],"id":4547,"name":"VariableDeclaration","src":"8302:15:28"}],"id":4548,"name":"ParameterList","src":"8285:33:28"},{"attributes":{"parameters":[null]},"children":[],"id":4549,"name":"ParameterList","src":"8336:0:28"},{"children":[{"attributes":{"assignments":[4551]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":4653,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4550,"name":"ElementaryTypeName","src":"8346:7:28"}],"id":4551,"name":"VariableDeclaration","src":"8346:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"uint256","value":"_amount"},"id":4552,"name":"Identifier","src":"8367:7:28"}],"id":4553,"name":"VariableDeclarationStatement","src":"8346:28:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4554,"name":"Identifier","src":"8433:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4256,"type":"address","value":"_tknContractAddress"},"id":4555,"name":"Identifier","src":"8443:19:28"}],"id":4556,"name":"BinaryOperation","src":"8433:29:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3427,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":4557,"name":"Identifier","src":"8478:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4558,"name":"Identifier","src":"8484:6:28"}],"id":4559,"name":"FunctionCall","src":"8478:13:28"}],"id":4560,"name":"MemberAccess","src":"8478:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4561,"name":"Identifier","src":"8509:3:28"}],"id":4562,"name":"MemberAccess","src":"8509:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4563,"name":"Identifier","src":"8521:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4564,"name":"Identifier","src":"8535:10:28"}],"id":4565,"name":"FunctionCall","src":"8478:68:28"}],"id":4566,"name":"ExpressionStatement","src":"8478:68:28"}],"id":4567,"name":"Block","src":"8464:93:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4568,"name":"Identifier","src":"8577:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3699,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3674,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"uint256","value":"_amount"},"id":4569,"name":"Identifier","src":"8590:7:28"}],"id":4570,"name":"MemberAccess","src":"8590:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4250,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4571,"name":"Identifier","src":"8602:16:28"}],"id":4572,"name":"FunctionCall","src":"8590:29:28"}],"id":4573,"name":"MemberAccess","src":"8590:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4272,"type":"uint256","value":"_licenceAmountScaled"},"id":4574,"name":"Identifier","src":"8624:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4250,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4575,"name":"Identifier","src":"8647:16:28"}],"id":4576,"name":"BinaryOperation","src":"8624:39:28"}],"id":4577,"name":"FunctionCall","src":"8590:74:28"}],"id":4578,"name":"Assignment","src":"8577:87:28"}],"id":4579,"name":"ExpressionStatement","src":"8577:87:28"},{"attributes":{"assignments":[4581]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":4643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4580,"name":"ElementaryTypeName","src":"8678:7:28"}],"id":4581,"name":"VariableDeclaration","src":"8678:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"uint256","value":"_amount"},"id":4582,"name":"Identifier","src":"8702:7:28"}],"id":4583,"name":"MemberAccess","src":"8702:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4584,"name":"Identifier","src":"8714:10:28"}],"id":4585,"name":"FunctionCall","src":"8702:23:28"}],"id":4586,"name":"VariableDeclarationStatement","src":"8678:47:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4587,"name":"Identifier","src":"8744:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4588,"name":"ElementaryTypeNameExpression","src":"8754:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4589,"name":"Literal","src":"8762:1:28"}],"id":4590,"name":"FunctionCall","src":"8754:10:28"}],"id":4591,"name":"BinaryOperation","src":"8744:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3427,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":4592,"name":"Identifier","src":"8784:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4593,"name":"Identifier","src":"8790:6:28"}],"id":4594,"name":"FunctionCall","src":"8784:13:28"}],"id":4595,"name":"MemberAccess","src":"8784:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4596,"name":"Identifier","src":"8815:3:28"}],"id":4597,"name":"MemberAccess","src":"8815:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4598,"name":"Identifier","src":"8827:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4581,"type":"uint256","value":"licenceAmount"},"id":4599,"name":"Identifier","src":"8841:13:28"}],"id":4600,"name":"FunctionCall","src":"8784:71:28"}],"id":4601,"name":"ExpressionStatement","src":"8784:71:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3427,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":4602,"name":"Identifier","src":"8873:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4603,"name":"Identifier","src":"8879:6:28"}],"id":4604,"name":"FunctionCall","src":"8873:13:28"}],"id":4605,"name":"MemberAccess","src":"8873:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4606,"name":"Identifier","src":"8904:3:28"}],"id":4607,"name":"MemberAccess","src":"8904:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4608,"name":"Identifier","src":"8916:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4609,"name":"Identifier","src":"8930:10:28"}],"id":4610,"name":"FunctionCall","src":"8873:68:28"}],"id":4611,"name":"ExpressionStatement","src":"8873:68:28"}],"id":4612,"name":"Block","src":"8766:190:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4613,"name":"Identifier","src":"8980:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4614,"name":"Identifier","src":"8988:3:28"}],"id":4615,"name":"MemberAccess","src":"8988:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"uint256","value":"_amount"},"id":4616,"name":"Identifier","src":"9001:7:28"}],"id":4617,"name":"BinaryOperation","src":"8988:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":4618,"name":"Literal","src":"9010:33:28"}],"id":4619,"name":"FunctionCall","src":"8980:64:28"}],"id":4620,"name":"ExpressionStatement","src":"8980:64:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4621,"name":"Identifier","src":"9062:12:28"}],"id":4623,"name":"MemberAccess","src":"9062:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4581,"type":"uint256","value":"licenceAmount"},"id":4624,"name":"Identifier","src":"9084:13:28"}],"id":4625,"name":"FunctionCall","src":"9062:36:28"}],"id":4626,"name":"ExpressionStatement","src":"9062:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4627,"name":"Identifier","src":"9116:12:28"}],"id":4629,"name":"MemberAccess","src":"9116:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4630,"name":"Identifier","src":"9138:10:28"}],"id":4631,"name":"FunctionCall","src":"9116:33:28"}],"id":4632,"name":"ExpressionStatement","src":"9116:33:28"}],"id":4633,"name":"Block","src":"8962:202:28"}],"id":4634,"name":"IfStatement","src":"8740:424:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":4635,"name":"Identifier","src":"9183:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4636,"name":"Identifier","src":"9208:3:28"}],"id":4637,"name":"MemberAccess","src":"9208:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4638,"name":"Identifier","src":"9220:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4639,"name":"Identifier","src":"9234:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4581,"type":"uint256","value":"licenceAmount"},"id":4640,"name":"Identifier","src":"9242:13:28"}],"id":4641,"name":"FunctionCall","src":"9183:73:28"}],"id":4642,"name":"EmitStatement","src":"9178:78:28"}],"id":4643,"name":"Block","src":"8563:704:28"}],"id":4644,"name":"IfStatement","src":"8429:838:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4239,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":4645,"name":"Identifier","src":"9282:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4646,"name":"Identifier","src":"9307:3:28"}],"id":4647,"name":"MemberAccess","src":"9307:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4648,"name":"Identifier","src":"9319:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4649,"name":"Identifier","src":"9333:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4650,"name":"Identifier","src":"9341:10:28"}],"id":4651,"name":"FunctionCall","src":"9282:70:28"}],"id":4652,"name":"EmitStatement","src":"9277:75:28"}],"id":4653,"name":"Block","src":"8336:1023:28"}],"id":4654,"name":"FunctionDefinition","src":"8272:1087:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4678,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4655,"name":"ElementaryTypeName","src":"9463:15:28"}],"id":4656,"name":"VariableDeclaration","src":"9463:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":4678,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4657,"name":"ElementaryTypeName","src":"9484:7:28"}],"id":4658,"name":"VariableDeclaration","src":"9484:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":4678,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4659,"name":"ElementaryTypeName","src":"9500:7:28"}],"id":4660,"name":"VariableDeclaration","src":"9500:15:28"}],"id":4661,"name":"ParameterList","src":"9462:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":4664,"name":"ParameterList","src":"9536:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4662,"name":"Identifier","src":"9526:9:28"}],"id":4663,"name":"ModifierInvocation","src":"9526:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4166,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":4665,"name":"Identifier","src":"9546:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4656,"type":"address payable","value":"_to"},"id":4666,"name":"Identifier","src":"9560:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4658,"type":"address","value":"_asset"},"id":4667,"name":"Identifier","src":"9565:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4660,"type":"uint256","value":"_amount"},"id":4668,"name":"Identifier","src":"9573:7:28"}],"id":4669,"name":"FunctionCall","src":"9546:35:28"}],"id":4670,"name":"ExpressionStatement","src":"9546:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address,address,uint256)","value":"Claimed"},"id":4671,"name":"Identifier","src":"9596:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4656,"type":"address payable","value":"_to"},"id":4672,"name":"Identifier","src":"9604:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4658,"type":"address","value":"_asset"},"id":4673,"name":"Identifier","src":"9609:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4660,"type":"uint256","value":"_amount"},"id":4674,"name":"Identifier","src":"9617:7:28"}],"id":4675,"name":"FunctionCall","src":"9596:29:28"}],"id":4676,"name":"EmitStatement","src":"9591:34:28"}],"id":4677,"name":"Block","src":"9536:96:28"}],"id":4678,"name":"FunctionDefinition","src":"9448:184:28"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4679,"name":"ParameterList","src":"9731:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4686,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4680,"name":"ElementaryTypeName","src":"9755:4:28"}],"id":4681,"name":"VariableDeclaration","src":"9755:4:28"}],"id":4682,"name":"ParameterList","src":"9754:6:28"},{"children":[{"attributes":{"functionReturnParameters":4682},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4264,"type":"bool","value":"_lockedCryptoFloat"},"id":4683,"name":"Identifier","src":"9778:18:28"}],"id":4684,"name":"Return","src":"9771:25:28"}],"id":4685,"name":"Block","src":"9761:42:28"}],"id":4686,"name":"FunctionDefinition","src":"9711:92:28"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4687,"name":"ParameterList","src":"9903:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4694,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4688,"name":"ElementaryTypeName","src":"9927:4:28"}],"id":4689,"name":"VariableDeclaration","src":"9927:4:28"}],"id":4690,"name":"ParameterList","src":"9926:6:28"},{"children":[{"attributes":{"functionReturnParameters":4690},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4266,"type":"bool","value":"_lockedTokenHolder"},"id":4691,"name":"Identifier","src":"9950:18:28"}],"id":4692,"name":"Return","src":"9943:25:28"}],"id":4693,"name":"Block","src":"9933:42:28"}],"id":4694,"name":"FunctionDefinition","src":"9882:93:28"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4695,"name":"ParameterList","src":"10079:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4702,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4696,"name":"ElementaryTypeName","src":"10103:4:28"}],"id":4697,"name":"VariableDeclaration","src":"10103:4:28"}],"id":4698,"name":"ParameterList","src":"10102:6:28"},{"children":[{"attributes":{"functionReturnParameters":4698},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4268,"type":"bool","value":"_lockedLicenceDAO"},"id":4699,"name":"Identifier","src":"10126:17:28"}],"id":4700,"name":"Return","src":"10119:24:28"}],"id":4701,"name":"Block","src":"10109:41:28"}],"id":4702,"name":"FunctionDefinition","src":"10054:96:28"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4703,"name":"ParameterList","src":"10254:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4710,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4704,"name":"ElementaryTypeName","src":"10278:4:28"}],"id":4705,"name":"VariableDeclaration","src":"10278:4:28"}],"id":4706,"name":"ParameterList","src":"10277:6:28"},{"children":[{"attributes":{"functionReturnParameters":4706},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4270,"type":"bool","value":"_lockedTKNContractAddress"},"id":4707,"name":"Identifier","src":"10301:25:28"}],"id":4708,"name":"Return","src":"10294:32:28"}],"id":4709,"name":"Block","src":"10284:49:28"}],"id":4710,"name":"FunctionDefinition","src":"10221:112:28"}],"id":4711,"name":"ContractDefinition","src":"1381:8954:28"}],"id":4712,"name":"SourceUnit","src":"767:9569:28"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[5110],"TokenWhitelist":[6010]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":5024,"name":"PragmaDirective","src":"774:24:29"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5025,"name":"ImportDirective","src":"800:38:29"},{"attributes":{"SourceUnit":4168,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5026,"name":"ImportDirective","src":"839:39:29"},{"attributes":{"SourceUnit":9115,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5027,"name":"ImportDirective","src":"879:36:29"},{"attributes":{"SourceUnit":9004,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5028,"name":"ImportDirective","src":"916:33:29"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5029,"name":"ImportDirective","src":"950:34:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[5110],"name":"ITokenWhitelist","scope":6011},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5030,"name":"ElementaryTypeName","src":"1124:7:29"}],"id":5031,"name":"VariableDeclaration","src":"1124:7:29"}],"id":5032,"name":"ParameterList","src":"1123:9:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5033,"name":"ElementaryTypeName","src":"1156:6:29"}],"id":5034,"name":"VariableDeclaration","src":"1156:13:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5035,"name":"ElementaryTypeName","src":"1171:7:29"}],"id":5036,"name":"VariableDeclaration","src":"1171:7:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5037,"name":"ElementaryTypeName","src":"1180:7:29"}],"id":5038,"name":"VariableDeclaration","src":"1180:7:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5039,"name":"ElementaryTypeName","src":"1189:4:29"}],"id":5040,"name":"VariableDeclaration","src":"1189:4:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5041,"name":"ElementaryTypeName","src":"1195:4:29"}],"id":5042,"name":"VariableDeclaration","src":"1195:4:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5043,"name":"ElementaryTypeName","src":"1201:4:29"}],"id":5044,"name":"VariableDeclaration","src":"1201:4:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5045,"name":"ElementaryTypeName","src":"1207:7:29"}],"id":5046,"name":"VariableDeclaration","src":"1207:7:29"}],"id":5047,"name":"ParameterList","src":"1155:60:29"}],"id":5048,"name":"FunctionDefinition","src":"1102:114:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5049,"name":"ParameterList","src":"1248:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5050,"name":"ElementaryTypeName","src":"1274:6:29"}],"id":5051,"name":"VariableDeclaration","src":"1274:13:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5052,"name":"ElementaryTypeName","src":"1289:7:29"}],"id":5053,"name":"VariableDeclaration","src":"1289:7:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5054,"name":"ElementaryTypeName","src":"1298:7:29"}],"id":5055,"name":"VariableDeclaration","src":"1298:7:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5056,"name":"ElementaryTypeName","src":"1307:4:29"}],"id":5057,"name":"VariableDeclaration","src":"1307:4:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5058,"name":"ElementaryTypeName","src":"1313:4:29"}],"id":5059,"name":"VariableDeclaration","src":"1313:4:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5060,"name":"ElementaryTypeName","src":"1319:4:29"}],"id":5061,"name":"VariableDeclaration","src":"1319:4:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5062,"name":"ElementaryTypeName","src":"1325:7:29"}],"id":5063,"name":"VariableDeclaration","src":"1325:7:29"}],"id":5064,"name":"ParameterList","src":"1273:60:29"}],"id":5065,"name":"FunctionDefinition","src":"1222:112:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5066,"name":"ParameterList","src":"1366:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5071,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5067,"name":"ElementaryTypeName","src":"1392:7:29"}],"id":5068,"name":"ArrayTypeName","src":"1392:9:29"}],"id":5069,"name":"VariableDeclaration","src":"1392:16:29"}],"id":5070,"name":"ParameterList","src":"1391:18:29"}],"id":5071,"name":"FunctionDefinition","src":"1340:70:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5072,"name":"ParameterList","src":"1441:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5077,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5073,"name":"ElementaryTypeName","src":"1467:7:29"}],"id":5074,"name":"ArrayTypeName","src":"1467:9:29"}],"id":5075,"name":"VariableDeclaration","src":"1467:16:29"}],"id":5076,"name":"ParameterList","src":"1466:18:29"}],"id":5077,"name":"FunctionDefinition","src":"1416:69:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5084,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5078,"name":"ElementaryTypeName","src":"1518:6:29"}],"id":5079,"name":"VariableDeclaration","src":"1518:6:29"}],"id":5080,"name":"ParameterList","src":"1517:8:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5084,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5081,"name":"ElementaryTypeName","src":"1549:4:29"}],"id":5082,"name":"VariableDeclaration","src":"1549:4:29"}],"id":5083,"name":"ParameterList","src":"1548:6:29"}],"id":5084,"name":"FunctionDefinition","src":"1491:64:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5095,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5085,"name":"ElementaryTypeName","src":"1597:7:29"}],"id":5086,"name":"VariableDeclaration","src":"1597:7:29"},{"attributes":{"constant":false,"name":"","scope":5095,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5087,"name":"ElementaryTypeName","src":"1606:5:29"}],"id":5088,"name":"VariableDeclaration","src":"1606:14:29"}],"id":5089,"name":"ParameterList","src":"1596:25:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5095,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5090,"name":"ElementaryTypeName","src":"1645:7:29"}],"id":5091,"name":"VariableDeclaration","src":"1645:7:29"},{"attributes":{"constant":false,"name":"","scope":5095,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5092,"name":"ElementaryTypeName","src":"1654:7:29"}],"id":5093,"name":"VariableDeclaration","src":"1654:7:29"}],"id":5094,"name":"ParameterList","src":"1644:18:29"}],"id":5095,"name":"FunctionDefinition","src":"1561:102:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5096,"name":"ParameterList","src":"1688:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5100,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5097,"name":"ElementaryTypeName","src":"1714:7:29"}],"id":5098,"name":"VariableDeclaration","src":"1714:7:29"}],"id":5099,"name":"ParameterList","src":"1713:9:29"}],"id":5100,"name":"FunctionDefinition","src":"1669:54:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":5110,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5109,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5101,"name":"ElementaryTypeName","src":"1754:7:29"}],"id":5102,"name":"VariableDeclaration","src":"1754:7:29"},{"attributes":{"constant":false,"name":"","scope":5109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5103,"name":"ElementaryTypeName","src":"1763:7:29"}],"id":5104,"name":"VariableDeclaration","src":"1763:7:29"},{"attributes":{"constant":false,"name":"","scope":5109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5105,"name":"ElementaryTypeName","src":"1772:7:29"}],"id":5106,"name":"VariableDeclaration","src":"1772:7:29"}],"id":5107,"name":"ParameterList","src":"1753:27:29"},{"attributes":{"parameters":[null]},"children":[],"id":5108,"name":"ParameterList","src":"1789:0:29"}],"id":5109,"name":"FunctionDefinition","src":"1729:61:29"}],"id":5110,"name":"ContractDefinition","src":"1070:722:29"},{"attributes":{"contractDependencies":[325,3206,4167],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[6010,4167,325,3206],"name":"TokenWhitelist","scope":6011},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":5111,"name":"UserDefinedTypeName","src":"1966:13:29"}],"id":5112,"name":"InheritanceSpecifier","src":"1966:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":5113,"name":"UserDefinedTypeName","src":"1981:12:29"}],"id":5114,"name":"InheritanceSpecifier","src":"1981:12:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4167,"type":"contract Transferrable"},"id":5115,"name":"UserDefinedTypeName","src":"1995:13:29"}],"id":5116,"name":"InheritanceSpecifier","src":"1995:13:29"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":9003,"type":"library strings"},"id":5117,"name":"UserDefinedTypeName","src":"2021:7:29"}],"id":5118,"name":"UsingForDirective","src":"2015:20:29"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":5119,"name":"UserDefinedTypeName","src":"2046:8:29"},{"attributes":{"name":"uint256","type":"uint256"},"id":5120,"name":"ElementaryTypeName","src":"2059:7:29"}],"id":5121,"name":"UsingForDirective","src":"2040:27:29"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":9114,"type":"library BytesUtils"},"id":5122,"name":"UserDefinedTypeName","src":"2078:10:29"},{"attributes":{"name":"bytes","type":"bytes"},"id":5123,"name":"ElementaryTypeName","src":"2093:5:29"}],"id":5124,"name":"UsingForDirective","src":"2072:27:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5132,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5125,"name":"ElementaryTypeName","src":"2128:7:29"}],"id":5126,"name":"VariableDeclaration","src":"2128:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5132,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5127,"name":"ElementaryTypeName","src":"2145:7:29"}],"id":5128,"name":"VariableDeclaration","src":"2145:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":5132,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5129,"name":"ElementaryTypeName","src":"2161:7:29"}],"id":5130,"name":"VariableDeclaration","src":"2161:13:29"}],"id":5131,"name":"ParameterList","src":"2127:48:29"}],"id":5132,"name":"EventDefinition","src":"2105:71:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5140,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5133,"name":"ElementaryTypeName","src":"2209:7:29"}],"id":5134,"name":"VariableDeclaration","src":"2209:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5140,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5135,"name":"ElementaryTypeName","src":"2226:7:29"}],"id":5136,"name":"VariableDeclaration","src":"2226:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":5140,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5137,"name":"ElementaryTypeName","src":"2242:4:29"}],"id":5138,"name":"VariableDeclaration","src":"2242:14:29"}],"id":5139,"name":"ParameterList","src":"2208:49:29"}],"id":5140,"name":"EventDefinition","src":"2182:76:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5148,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5141,"name":"ElementaryTypeName","src":"2292:7:29"}],"id":5142,"name":"VariableDeclaration","src":"2292:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5148,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5143,"name":"ElementaryTypeName","src":"2309:7:29"}],"id":5144,"name":"VariableDeclaration","src":"2309:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":5148,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5145,"name":"ElementaryTypeName","src":"2325:4:29"}],"id":5146,"name":"VariableDeclaration","src":"2325:16:29"}],"id":5147,"name":"ParameterList","src":"2291:51:29"}],"id":5148,"name":"EventDefinition","src":"2263:80:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5162,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5149,"name":"ElementaryTypeName","src":"2366:7:29"}],"id":5150,"name":"VariableDeclaration","src":"2366:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5162,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5151,"name":"ElementaryTypeName","src":"2383:7:29"}],"id":5152,"name":"VariableDeclaration","src":"2383:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":5162,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5153,"name":"ElementaryTypeName","src":"2399:6:29"}],"id":5154,"name":"VariableDeclaration","src":"2399:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":5162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5155,"name":"ElementaryTypeName","src":"2415:7:29"}],"id":5156,"name":"VariableDeclaration","src":"2415:18:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":5162,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5157,"name":"ElementaryTypeName","src":"2435:4:29"}],"id":5158,"name":"VariableDeclaration","src":"2435:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":5162,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5159,"name":"ElementaryTypeName","src":"2451:4:29"}],"id":5160,"name":"VariableDeclaration","src":"2451:16:29"}],"id":5161,"name":"ParameterList","src":"2365:103:29"}],"id":5162,"name":"EventDefinition","src":"2349:120:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5168,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5163,"name":"ElementaryTypeName","src":"2493:7:29"}],"id":5164,"name":"VariableDeclaration","src":"2493:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5168,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5165,"name":"ElementaryTypeName","src":"2510:7:29"}],"id":5166,"name":"VariableDeclaration","src":"2510:14:29"}],"id":5167,"name":"ParameterList","src":"2492:33:29"}],"id":5168,"name":"EventDefinition","src":"2474:52:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":5172,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5169,"name":"ElementaryTypeName","src":"2552:6:29"}],"id":5170,"name":"VariableDeclaration","src":"2552:16:29"}],"id":5171,"name":"ParameterList","src":"2551:18:29"}],"id":5172,"name":"EventDefinition","src":"2532:38:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":5176,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5173,"name":"ElementaryTypeName","src":"2597:6:29"}],"id":5174,"name":"VariableDeclaration","src":"2597:16:29"}],"id":5175,"name":"ParameterList","src":"2596:18:29"}],"id":5176,"name":"EventDefinition","src":"2575:40:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5177,"name":"ElementaryTypeName","src":"2647:7:29"}],"id":5178,"name":"VariableDeclaration","src":"2647:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":5182,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5179,"name":"ElementaryTypeName","src":"2663:6:29"}],"id":5180,"name":"VariableDeclaration","src":"2663:16:29"}],"id":5181,"name":"ParameterList","src":"2646:34:29"}],"id":5182,"name":"EventDefinition","src":"2620:61:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5188,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5183,"name":"ElementaryTypeName","src":"2715:7:29"}],"id":5184,"name":"VariableDeclaration","src":"2715:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":5188,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5185,"name":"ElementaryTypeName","src":"2731:6:29"}],"id":5186,"name":"VariableDeclaration","src":"2731:16:29"}],"id":5187,"name":"ParameterList","src":"2714:34:29"}],"id":5188,"name":"EventDefinition","src":"2686:63:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":5196,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5189,"name":"ElementaryTypeName","src":"2769:7:29"}],"id":5190,"name":"VariableDeclaration","src":"2769:11:29"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":5196,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5191,"name":"ElementaryTypeName","src":"2782:7:29"}],"id":5192,"name":"VariableDeclaration","src":"2782:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":5196,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5193,"name":"ElementaryTypeName","src":"2798:7:29"}],"id":5194,"name":"VariableDeclaration","src":"2798:15:29"}],"id":5195,"name":"ParameterList","src":"2768:46:29"}],"id":5196,"name":"EventDefinition","src":"2755:60:29"},{"attributes":{"constant":true,"name":"_APPROVE","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5197,"name":"ElementaryTypeName","src":"2924:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":5198,"name":"Literal","src":"2959:10:29"}],"id":5199,"name":"VariableDeclaration","src":"2924:45:29"},{"attributes":{"constant":true,"name":"_BURN","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5200,"name":"ElementaryTypeName","src":"3028:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":5201,"name":"Literal","src":"3060:10:29"}],"id":5202,"name":"VariableDeclaration","src":"3028:42:29"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5203,"name":"ElementaryTypeName","src":"3118:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":5204,"name":"Literal","src":"3154:10:29"}],"id":5205,"name":"VariableDeclaration","src":"3118:46:29"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5206,"name":"ElementaryTypeName","src":"3224:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":5207,"name":"Literal","src":"3265:10:29"}],"id":5208,"name":"VariableDeclaration","src":"3224:51:29"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":6010,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":5223,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5209,"name":"ElementaryTypeName","src":"3371:6:29"}],"id":5210,"name":"VariableDeclaration","src":"3371:13:29"},{"attributes":{"constant":false,"name":"magnitude","scope":5223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5211,"name":"ElementaryTypeName","src":"3410:7:29"}],"id":5212,"name":"VariableDeclaration","src":"3410:17:29"},{"attributes":{"constant":false,"name":"rate","scope":5223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5213,"name":"ElementaryTypeName","src":"3452:7:29"}],"id":5214,"name":"VariableDeclaration","src":"3452:12:29"},{"attributes":{"constant":false,"name":"available","scope":5223,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5215,"name":"ElementaryTypeName","src":"3504:4:29"}],"id":5216,"name":"VariableDeclaration","src":"3504:14:29"},{"attributes":{"constant":false,"name":"loadable","scope":5223,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5217,"name":"ElementaryTypeName","src":"3570:4:29"}],"id":5218,"name":"VariableDeclaration","src":"3570:13:29"},{"attributes":{"constant":false,"name":"redeemable","scope":5223,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5219,"name":"ElementaryTypeName","src":"3640:4:29"}],"id":5220,"name":"VariableDeclaration","src":"3640:15:29"},{"attributes":{"constant":false,"name":"lastUpdate","scope":5223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5221,"name":"ElementaryTypeName","src":"3724:7:29"}],"id":5222,"name":"VariableDeclaration","src":"3724:18:29"}],"id":5223,"name":"StructDefinition","src":"3348:433:29"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":6010,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":5224,"name":"ElementaryTypeName","src":"3795:7:29"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":5223,"type":"struct TokenWhitelist.Token"},"id":5225,"name":"UserDefinedTypeName","src":"3806:5:29"}],"id":5226,"name":"Mapping","src":"3787:25:29"}],"id":5227,"name":"VariableDeclaration","src":"3787:47:29"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":6010,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5228,"name":"ElementaryTypeName","src":"4004:6:29"},{"attributes":{"name":"bool","type":"bool"},"id":5229,"name":"ElementaryTypeName","src":"4014:4:29"}],"id":5230,"name":"Mapping","src":"3996:23:29"}],"id":5231,"name":"VariableDeclaration","src":"3996:50:29"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":6010,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5232,"name":"ElementaryTypeName","src":"4053:7:29"}],"id":5233,"name":"ArrayTypeName","src":"4053:9:29"}],"id":5234,"name":"VariableDeclaration","src":"4053:36:29"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":6010,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5235,"name":"ElementaryTypeName","src":"4182:7:29"}],"id":5236,"name":"VariableDeclaration","src":"4182:34:29"},{"attributes":{"constant":false,"name":"_stablecoin","scope":6010,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5237,"name":"ElementaryTypeName","src":"4266:7:29"}],"id":5238,"name":"VariableDeclaration","src":"4266:27:29"},{"attributes":{"constant":false,"name":"_oracleNode","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5239,"name":"ElementaryTypeName","src":"4372:7:29"}],"id":5240,"name":"VariableDeclaration","src":"4372:27:29"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":5290,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5241,"name":"ElementaryTypeName","src":"4770:7:29"}],"id":5242,"name":"VariableDeclaration","src":"4770:13:29"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":5290,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5243,"name":"ElementaryTypeName","src":"4785:7:29"}],"id":5244,"name":"VariableDeclaration","src":"4785:20:29"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":5290,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5245,"name":"ElementaryTypeName","src":"4807:7:29"}],"id":5246,"name":"VariableDeclaration","src":"4807:24:29"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":5290,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5247,"name":"ElementaryTypeName","src":"4833:7:29"}],"id":5248,"name":"VariableDeclaration","src":"4833:27:29"}],"id":5249,"name":"ParameterList","src":"4769:92:29"},{"attributes":{"parameters":[null]},"children":[],"id":5256,"name":"ParameterList","src":"4949:0:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":5250,"name":"Identifier","src":"4885:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5242,"type":"address","value":"_ens_"},"id":5251,"name":"Identifier","src":"4899:5:29"}],"id":5252,"name":"ModifierInvocation","src":"4885:20:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":5253,"name":"Identifier","src":"4914:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5246,"type":"bytes32","value":"_controllerNode_"},"id":5254,"name":"Identifier","src":"4927:16:29"}],"id":5255,"name":"ModifierInvocation","src":"4914:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes32","value":"_oracleNode"},"id":5257,"name":"Identifier","src":"4959:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5244,"type":"bytes32","value":"_oracleNode_"},"id":5258,"name":"Identifier","src":"4973:12:29"}],"id":5259,"name":"Assignment","src":"4959:26:29"}],"id":5260,"name":"ExpressionStatement","src":"4959:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"address","value":"_stablecoin"},"id":5261,"name":"Identifier","src":"4995:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5248,"type":"address","value":"_stablecoinAddress_"},"id":5262,"name":"Identifier","src":"5009:19:29"}],"id":5263,"name":"Assignment","src":"4995:33:29"}],"id":5264,"name":"ExpressionStatement","src":"4995:33:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5265,"name":"Identifier","src":"5083:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5199,"type":"bytes4","value":"_APPROVE"},"id":5266,"name":"Identifier","src":"5102:8:29"}],"id":5267,"name":"IndexAccess","src":"5083:28:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5268,"name":"Literal","src":"5114:4:29"}],"id":5269,"name":"Assignment","src":"5083:35:29"}],"id":5270,"name":"ExpressionStatement","src":"5083:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5271,"name":"Identifier","src":"5128:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5202,"type":"bytes4","value":"_BURN"},"id":5272,"name":"Identifier","src":"5147:5:29"}],"id":5273,"name":"IndexAccess","src":"5128:25:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5274,"name":"Literal","src":"5156:4:29"}],"id":5275,"name":"Assignment","src":"5128:32:29"}],"id":5276,"name":"ExpressionStatement","src":"5128:32:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5277,"name":"Identifier","src":"5170:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5205,"type":"bytes4","value":"_TRANSFER"},"id":5278,"name":"Identifier","src":"5189:9:29"}],"id":5279,"name":"IndexAccess","src":"5170:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5280,"name":"Literal","src":"5202:4:29"}],"id":5281,"name":"Assignment","src":"5170:36:29"}],"id":5282,"name":"ExpressionStatement","src":"5170:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5283,"name":"Identifier","src":"5216:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"bytes4","value":"_TRANSFER_FROM"},"id":5284,"name":"Identifier","src":"5235:14:29"}],"id":5285,"name":"IndexAccess","src":"5216:34:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5286,"name":"Literal","src":"5253:4:29"}],"id":5287,"name":"Assignment","src":"5216:41:29"}],"id":5288,"name":"ExpressionStatement","src":"5216:41:29"}],"id":5289,"name":"Block","src":"4949:315:29"}],"id":5290,"name":"FunctionDefinition","src":"4758:506:29"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5291,"name":"ParameterList","src":"5296:2:29"},{"children":[{"attributes":{"assignments":[5293]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":5312,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5292,"name":"ElementaryTypeName","src":"5309:7:29"}],"id":5293,"name":"VariableDeclaration","src":"5309:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":5294,"name":"Identifier","src":"5333:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes32","value":"_oracleNode"},"id":5295,"name":"Identifier","src":"5345:11:29"}],"id":5296,"name":"FunctionCall","src":"5333:24:29"}],"id":5297,"name":"VariableDeclarationStatement","src":"5309:48:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5298,"name":"Identifier","src":"5367:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":324,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":5299,"name":"Identifier","src":"5375:8:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5300,"name":"Identifier","src":"5384:3:29"}],"id":5301,"name":"MemberAccess","src":"5384:10:29"}],"id":5302,"name":"FunctionCall","src":"5375:20:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5303,"name":"Identifier","src":"5399:3:29"}],"id":5304,"name":"MemberAccess","src":"5399:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5293,"type":"address","value":"oracleAddress"},"id":5305,"name":"Identifier","src":"5413:13:29"}],"id":5306,"name":"BinaryOperation","src":"5399:27:29"}],"id":5307,"name":"BinaryOperation","src":"5375:51:29"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":5308,"name":"Literal","src":"5428:24:29"}],"id":5309,"name":"FunctionCall","src":"5367:86:29"}],"id":5310,"name":"ExpressionStatement","src":"5367:86:29"},{"id":5311,"name":"PlaceholderStatement","src":"5463:1:29"}],"id":5312,"name":"Block","src":"5299:172:29"}],"id":5313,"name":"ModifierDefinition","src":"5270:201:29"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5314,"name":"ElementaryTypeName","src":"6068:7:29"}],"id":5315,"name":"ArrayTypeName","src":"6068:9:29"}],"id":5316,"name":"VariableDeclaration","src":"6068:26:29"},{"attributes":{"constant":false,"name":"_symbols","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5317,"name":"ElementaryTypeName","src":"6104:7:29"}],"id":5318,"name":"ArrayTypeName","src":"6104:9:29"}],"id":5319,"name":"VariableDeclaration","src":"6104:27:29"},{"attributes":{"constant":false,"name":"_magnitude","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5320,"name":"ElementaryTypeName","src":"6141:7:29"}],"id":5321,"name":"ArrayTypeName","src":"6141:9:29"}],"id":5322,"name":"VariableDeclaration","src":"6141:29:29"},{"attributes":{"constant":false,"name":"_loadable","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5323,"name":"ElementaryTypeName","src":"6180:4:29"}],"id":5324,"name":"ArrayTypeName","src":"6180:6:29"}],"id":5325,"name":"VariableDeclaration","src":"6180:25:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5326,"name":"ElementaryTypeName","src":"6215:4:29"}],"id":5327,"name":"ArrayTypeName","src":"6215:6:29"}],"id":5328,"name":"VariableDeclaration","src":"6215:27:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":5457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5329,"name":"ElementaryTypeName","src":"6252:7:29"}],"id":5330,"name":"VariableDeclaration","src":"6252:19:29"}],"id":5331,"name":"ParameterList","src":"6058:219:29"},{"attributes":{"parameters":[null]},"children":[],"id":5334,"name":"ParameterList","src":"6297:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5332,"name":"Identifier","src":"6287:9:29"}],"id":5333,"name":"ModifierInvocation","src":"6287:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5335,"name":"Identifier","src":"6368:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5336,"name":"Identifier","src":"6389:7:29"}],"id":5337,"name":"MemberAccess","src":"6389:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5319,"type":"bytes32[] calldata","value":"_symbols"},"id":5338,"name":"Identifier","src":"6407:8:29"}],"id":5339,"name":"MemberAccess","src":"6407:15:29"}],"id":5340,"name":"BinaryOperation","src":"6389:33:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5341,"name":"Identifier","src":"6442:7:29"}],"id":5342,"name":"MemberAccess","src":"6442:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5322,"type":"uint256[] calldata","value":"_magnitude"},"id":5343,"name":"Identifier","src":"6460:10:29"}],"id":5344,"name":"MemberAccess","src":"6460:17:29"}],"id":5345,"name":"BinaryOperation","src":"6442:35:29"}],"id":5346,"name":"BinaryOperation","src":"6389:88:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5347,"name":"Identifier","src":"6497:7:29"}],"id":5348,"name":"MemberAccess","src":"6497:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5325,"type":"bool[] calldata","value":"_loadable"},"id":5349,"name":"Identifier","src":"6515:9:29"}],"id":5350,"name":"MemberAccess","src":"6515:16:29"}],"id":5351,"name":"BinaryOperation","src":"6497:34:29"}],"id":5352,"name":"BinaryOperation","src":"6389:142:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5353,"name":"Identifier","src":"6551:7:29"}],"id":5354,"name":"MemberAccess","src":"6551:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5325,"type":"bool[] calldata","value":"_loadable"},"id":5355,"name":"Identifier","src":"6569:9:29"}],"id":5356,"name":"MemberAccess","src":"6569:16:29"}],"id":5357,"name":"BinaryOperation","src":"6551:34:29"}],"id":5358,"name":"BinaryOperation","src":"6389:196:29"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":5359,"name":"Literal","src":"6599:32:29"}],"id":5360,"name":"FunctionCall","src":"6368:273:29"}],"id":5361,"name":"ExpressionStatement","src":"6368:273:29"},{"children":[{"attributes":{"assignments":[5363]},"children":[{"attributes":{"constant":false,"name":"i","scope":5455,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5362,"name":"ElementaryTypeName","src":"6715:7:29"}],"id":5363,"name":"VariableDeclaration","src":"6715:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5364,"name":"Literal","src":"6727:1:29"}],"id":5365,"name":"VariableDeclarationStatement","src":"6715:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5366,"name":"Identifier","src":"6730:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5367,"name":"Identifier","src":"6734:7:29"}],"id":5368,"name":"MemberAccess","src":"6734:14:29"}],"id":5369,"name":"BinaryOperation","src":"6730:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5370,"name":"Identifier","src":"6750:1:29"}],"id":5371,"name":"UnaryOperation","src":"6750:3:29"}],"id":5372,"name":"ExpressionStatement","src":"6750:3:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5373,"name":"Identifier","src":"6832:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5374,"name":"Identifier","src":"6841:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5375,"name":"Identifier","src":"6855:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5376,"name":"Identifier","src":"6863:1:29"}],"id":5377,"name":"IndexAccess","src":"6855:10:29"}],"id":5378,"name":"IndexAccess","src":"6841:25:29"}],"id":5379,"name":"MemberAccess","src":"6841:35:29"}],"id":5380,"name":"UnaryOperation","src":"6840:36:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":5381,"name":"Literal","src":"6878:25:29"}],"id":5382,"name":"FunctionCall","src":"6832:72:29"}],"id":5383,"name":"ExpressionStatement","src":"6832:72:29"},{"attributes":{"assignments":[5385]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":5454,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5384,"name":"ElementaryTypeName","src":"6964:6:29"}],"id":5385,"name":"VariableDeclaration","src":"6964:20:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":7552,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":7507,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5319,"type":"bytes32[] calldata","value":"_symbols"},"id":5386,"name":"Identifier","src":"6987:8:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5387,"name":"Identifier","src":"6996:1:29"}],"id":5388,"name":"IndexAccess","src":"6987:11:29"}],"id":5389,"name":"MemberAccess","src":"6987:22:29"}],"id":5390,"name":"FunctionCall","src":"6987:24:29"}],"id":5391,"name":"MemberAccess","src":"6987:33:29"}],"id":5392,"name":"FunctionCall","src":"6987:35:29"}],"id":5393,"name":"VariableDeclarationStatement","src":"6964:58:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5394,"name":"Identifier","src":"7084:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5395,"name":"Identifier","src":"7098:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5396,"name":"Identifier","src":"7106:1:29"}],"id":5397,"name":"IndexAccess","src":"7098:10:29"}],"id":5398,"name":"IndexAccess","src":"7084:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5223,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":5399,"name":"Identifier","src":"7112:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5385,"type":"string memory","value":"symbol"},"id":5400,"name":"Identifier","src":"7144:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5322,"type":"uint256[] calldata","value":"_magnitude"},"id":5401,"name":"Identifier","src":"7179:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5402,"name":"Identifier","src":"7190:1:29"}],"id":5403,"name":"IndexAccess","src":"7179:13:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5404,"name":"Literal","src":"7216:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5405,"name":"Literal","src":"7246:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5325,"type":"bool[] calldata","value":"_loadable"},"id":5406,"name":"Identifier","src":"7278:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5407,"name":"Identifier","src":"7288:1:29"}],"id":5408,"name":"IndexAccess","src":"7278:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5328,"type":"bool[] calldata","value":"_redeemable"},"id":5409,"name":"Identifier","src":"7320:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5410,"name":"Identifier","src":"7332:1:29"}],"id":5411,"name":"IndexAccess","src":"7320:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5330,"type":"uint256","value":"_lastUpdate"},"id":5412,"name":"Identifier","src":"7364:11:29"}],"id":5413,"name":"FunctionCall","src":"7112:278:29"}],"id":5414,"name":"Assignment","src":"7084:306:29"}],"id":5415,"name":"ExpressionStatement","src":"7084:306:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5416,"name":"Identifier","src":"7462:18:29"}],"id":5418,"name":"MemberAccess","src":"7462:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5419,"name":"Identifier","src":"7486:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5420,"name":"Identifier","src":"7494:1:29"}],"id":5421,"name":"IndexAccess","src":"7486:10:29"}],"id":5422,"name":"FunctionCall","src":"7462:35:29"}],"id":5423,"name":"ExpressionStatement","src":"7462:35:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5328,"type":"bool[] calldata","value":"_redeemable"},"id":5424,"name":"Identifier","src":"7587:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5425,"name":"Identifier","src":"7599:1:29"}],"id":5426,"name":"IndexAccess","src":"7587:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5427,"name":"Identifier","src":"7621:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5428,"name":"Identifier","src":"7642:18:29"}],"id":5429,"name":"MemberAccess","src":"7642:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5430,"name":"Literal","src":"7665:1:29"}],"id":5431,"name":"FunctionCall","src":"7642:25:29"}],"id":5432,"name":"Assignment","src":"7621:46:29"}],"id":5433,"name":"ExpressionStatement","src":"7621:46:29"}],"id":5434,"name":"Block","src":"7603:79:29"}],"id":5435,"name":"IfStatement","src":"7583:99:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5162,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":5436,"name":"Identifier","src":"7742:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5437,"name":"Identifier","src":"7753:3:29"}],"id":5438,"name":"MemberAccess","src":"7753:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5439,"name":"Identifier","src":"7765:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5440,"name":"Identifier","src":"7773:1:29"}],"id":5441,"name":"IndexAccess","src":"7765:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5385,"type":"string memory","value":"symbol"},"id":5442,"name":"Identifier","src":"7777:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5322,"type":"uint256[] calldata","value":"_magnitude"},"id":5443,"name":"Identifier","src":"7785:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5444,"name":"Identifier","src":"7796:1:29"}],"id":5445,"name":"IndexAccess","src":"7785:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5325,"type":"bool[] calldata","value":"_loadable"},"id":5446,"name":"Identifier","src":"7800:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5447,"name":"Identifier","src":"7810:1:29"}],"id":5448,"name":"IndexAccess","src":"7800:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5328,"type":"bool[] calldata","value":"_redeemable"},"id":5449,"name":"Identifier","src":"7814:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5450,"name":"Identifier","src":"7826:1:29"}],"id":5451,"name":"IndexAccess","src":"7814:14:29"}],"id":5452,"name":"FunctionCall","src":"7742:87:29"}],"id":5453,"name":"EmitStatement","src":"7737:92:29"}],"id":5454,"name":"Block","src":"6755:1085:29"}],"id":5455,"name":"ForStatement","src":"6710:1130:29"}],"id":5456,"name":"Block","src":"6297:1549:29"}],"id":5457,"name":"FunctionDefinition","src":"6040:1806:29"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5558,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5458,"name":"ElementaryTypeName","src":"7995:7:29"}],"id":5459,"name":"ArrayTypeName","src":"7995:9:29"}],"id":5460,"name":"VariableDeclaration","src":"7995:26:29"}],"id":5461,"name":"ParameterList","src":"7994:28:29"},{"attributes":{"parameters":[null]},"children":[],"id":5464,"name":"ParameterList","src":"8042:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5462,"name":"Identifier","src":"8032:9:29"}],"id":5463,"name":"ModifierInvocation","src":"8032:9:29"},{"children":[{"children":[{"attributes":{"assignments":[5466]},"children":[{"attributes":{"constant":false,"name":"i","scope":5556,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5465,"name":"ElementaryTypeName","src":"8160:7:29"}],"id":5466,"name":"VariableDeclaration","src":"8160:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5467,"name":"Literal","src":"8172:1:29"}],"id":5468,"name":"VariableDeclarationStatement","src":"8160:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5466,"type":"uint256","value":"i"},"id":5469,"name":"Identifier","src":"8175:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"address[] calldata","value":"_tokens"},"id":5470,"name":"Identifier","src":"8179:7:29"}],"id":5471,"name":"MemberAccess","src":"8179:14:29"}],"id":5472,"name":"BinaryOperation","src":"8175:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5466,"type":"uint256","value":"i"},"id":5473,"name":"Identifier","src":"8195:1:29"}],"id":5474,"name":"UnaryOperation","src":"8195:3:29"}],"id":5475,"name":"ExpressionStatement","src":"8195:3:29"},{"children":[{"attributes":{"assignments":[5477]},"children":[{"attributes":{"constant":false,"name":"token","scope":5555,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5476,"name":"ElementaryTypeName","src":"8254:7:29"}],"id":5477,"name":"VariableDeclaration","src":"8254:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"address[] calldata","value":"_tokens"},"id":5478,"name":"Identifier","src":"8270:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5466,"type":"uint256","value":"i"},"id":5479,"name":"Identifier","src":"8278:1:29"}],"id":5480,"name":"IndexAccess","src":"8270:10:29"}],"id":5481,"name":"VariableDeclarationStatement","src":"8254:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5482,"name":"Identifier","src":"8363:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5483,"name":"Identifier","src":"8371:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5484,"name":"Identifier","src":"8385:5:29"}],"id":5485,"name":"IndexAccess","src":"8371:20:29"}],"id":5486,"name":"MemberAccess","src":"8371:30:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5487,"name":"Literal","src":"8403:24:29"}],"id":5488,"name":"FunctionCall","src":"8363:65:29"}],"id":5489,"name":"ExpressionStatement","src":"8363:65:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5490,"name":"Identifier","src":"8518:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5491,"name":"Identifier","src":"8532:5:29"}],"id":5492,"name":"IndexAccess","src":"8518:20:29"}],"id":5493,"name":"MemberAccess","src":"8518:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5494,"name":"Identifier","src":"8569:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5495,"name":"Identifier","src":"8590:18:29"}],"id":5496,"name":"MemberAccess","src":"8590:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5497,"name":"Literal","src":"8613:1:29"}],"id":5498,"name":"FunctionCall","src":"8590:25:29"}],"id":5499,"name":"Assignment","src":"8569:46:29"}],"id":5500,"name":"ExpressionStatement","src":"8569:46:29"}],"id":5501,"name":"Block","src":"8551:79:29"}],"id":5502,"name":"IfStatement","src":"8514:116:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5503,"name":"Identifier","src":"8690:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5504,"name":"Identifier","src":"8704:5:29"}],"id":5505,"name":"IndexAccess","src":"8690:20:29"}],"id":5506,"name":"UnaryOperation","src":"8683:27:29"}],"id":5507,"name":"ExpressionStatement","src":"8683:27:29"},{"children":[{"attributes":{"assignments":[5509]},"children":[{"attributes":{"constant":false,"name":"j","scope":5543,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5508,"name":"ElementaryTypeName","src":"8792:7:29"}],"id":5509,"name":"VariableDeclaration","src":"8792:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5510,"name":"Literal","src":"8804:1:29"}],"id":5511,"name":"VariableDeclarationStatement","src":"8792:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5509,"type":"uint256","value":"j"},"id":5512,"name":"Identifier","src":"8807:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5513,"name":"Identifier","src":"8811:18:29"}],"id":5514,"name":"MemberAccess","src":"8811:25:29"}],"id":5515,"name":"MemberAccess","src":"8811:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5516,"name":"Literal","src":"8841:1:29"}],"id":5517,"name":"FunctionCall","src":"8811:32:29"}],"id":5518,"name":"BinaryOperation","src":"8807:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5509,"type":"uint256","value":"j"},"id":5519,"name":"Identifier","src":"8845:1:29"}],"id":5520,"name":"UnaryOperation","src":"8845:3:29"}],"id":5521,"name":"ExpressionStatement","src":"8845:3:29"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5522,"name":"Identifier","src":"8872:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5509,"type":"uint256","value":"j"},"id":5523,"name":"Identifier","src":"8891:1:29"}],"id":5524,"name":"IndexAccess","src":"8872:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5525,"name":"Identifier","src":"8897:5:29"}],"id":5526,"name":"BinaryOperation","src":"8872:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5527,"name":"Identifier","src":"8926:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5509,"type":"uint256","value":"j"},"id":5528,"name":"Identifier","src":"8945:1:29"}],"id":5529,"name":"IndexAccess","src":"8926:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5530,"name":"Identifier","src":"8950:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5531,"name":"Identifier","src":"8969:18:29"}],"id":5532,"name":"MemberAccess","src":"8969:25:29"}],"id":5533,"name":"MemberAccess","src":"8969:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5534,"name":"Literal","src":"8999:1:29"}],"id":5535,"name":"FunctionCall","src":"8969:32:29"}],"id":5536,"name":"IndexAccess","src":"8950:52:29"}],"id":5537,"name":"Assignment","src":"8926:76:29"}],"id":5538,"name":"ExpressionStatement","src":"8926:76:29"},{"id":5539,"name":"Break","src":"9024:5:29"}],"id":5540,"name":"Block","src":"8904:144:29"}],"id":5541,"name":"IfStatement","src":"8868:180:29"}],"id":5542,"name":"Block","src":"8850:212:29"}],"id":5543,"name":"ForStatement","src":"8787:275:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5544,"name":"Identifier","src":"9075:18:29"}],"id":5546,"name":"MemberAccess","src":"9075:25:29"}],"id":5547,"name":"UnaryOperation","src":"9075:27:29"}],"id":5548,"name":"ExpressionStatement","src":"9075:27:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"function (address,address)","value":"RemovedToken"},"id":5549,"name":"Identifier","src":"9162:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5550,"name":"Identifier","src":"9175:3:29"}],"id":5551,"name":"MemberAccess","src":"9175:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5552,"name":"Identifier","src":"9187:5:29"}],"id":5553,"name":"FunctionCall","src":"9162:31:29"}],"id":5554,"name":"EmitStatement","src":"9157:36:29"}],"id":5555,"name":"Block","src":"8200:1004:29"}],"id":5556,"name":"ForStatement","src":"8155:1049:29"}],"id":5557,"name":"Block","src":"8042:1168:29"}],"id":5558,"name":"FunctionDefinition","src":"7973:1237:29"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5671,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5559,"name":"ElementaryTypeName","src":"9404:7:29"}],"id":5560,"name":"VariableDeclaration","src":"9404:14:29"},{"attributes":{"constant":false,"name":"_data","scope":5671,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5561,"name":"ElementaryTypeName","src":"9420:5:29"}],"id":5562,"name":"VariableDeclaration","src":"9420:20:29"}],"id":5563,"name":"ParameterList","src":"9403:38:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5671,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5564,"name":"ElementaryTypeName","src":"9465:7:29"}],"id":5565,"name":"VariableDeclaration","src":"9465:7:29"},{"attributes":{"constant":false,"name":"","scope":5671,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5566,"name":"ElementaryTypeName","src":"9474:7:29"}],"id":5567,"name":"VariableDeclaration","src":"9474:7:29"}],"id":5568,"name":"ParameterList","src":"9464:18:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5569,"name":"Identifier","src":"9669:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5570,"name":"Identifier","src":"9677:5:29"}],"id":5571,"name":"MemberAccess","src":"9677:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5572,"name":"Literal","src":"9693:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5573,"name":"Literal","src":"9697:2:29"}],"id":5574,"name":"BinaryOperation","src":"9693:6:29"}],"id":5575,"name":"BinaryOperation","src":"9677:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":5576,"name":"Literal","src":"9701:34:29"}],"id":5577,"name":"FunctionCall","src":"9669:67:29"}],"id":5578,"name":"ExpressionStatement","src":"9669:67:29"},{"attributes":{"assignments":[5580]},"children":[{"attributes":{"constant":false,"name":"signature","scope":5670,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5579,"name":"ElementaryTypeName","src":"9782:6:29"}],"id":5580,"name":"VariableDeclaration","src":"9782:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":9079,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5581,"name":"Identifier","src":"9801:5:29"}],"id":5582,"name":"MemberAccess","src":"9801:20:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5583,"name":"Literal","src":"9822:1:29"}],"id":5584,"name":"FunctionCall","src":"9801:23:29"}],"id":5585,"name":"VariableDeclarationStatement","src":"9782:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5586,"name":"Identifier","src":"9877:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":5972,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":5587,"name":"Identifier","src":"9885:22:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5560,"type":"address","value":"_token"},"id":5588,"name":"Identifier","src":"9908:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5580,"type":"bytes4","value":"signature"},"id":5589,"name":"Identifier","src":"9916:9:29"}],"id":5590,"name":"FunctionCall","src":"9885:41:29"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":5591,"name":"Literal","src":"9928:20:29"}],"id":5592,"name":"FunctionCall","src":"9877:72:29"}],"id":5593,"name":"ExpressionStatement","src":"9877:72:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5580,"type":"bytes4","value":"signature"},"id":5594,"name":"Identifier","src":"10048:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5202,"type":"bytes4","value":"_BURN"},"id":5595,"name":"Identifier","src":"10061:5:29"}],"id":5596,"name":"BinaryOperation","src":"10048:18:29"},{"children":[{"attributes":{"functionReturnParameters":5568},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5560,"type":"address","value":"_token"},"id":5597,"name":"Identifier","src":"10133:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9113,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5598,"name":"Identifier","src":"10141:5:29"}],"id":5599,"name":"MemberAccess","src":"10141:21:29"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5600,"name":"Literal","src":"10163:1:29"}],"id":5601,"name":"FunctionCall","src":"10141:24:29"}],"id":5602,"name":"TupleExpression","src":"10132:34:29"}],"id":5603,"name":"Return","src":"10125:41:29"}],"id":5604,"name":"Block","src":"10068:109:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5580,"type":"bytes4","value":"signature"},"id":5605,"name":"Identifier","src":"10187:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"bytes4","value":"_TRANSFER_FROM"},"id":5606,"name":"Identifier","src":"10200:14:29"}],"id":5607,"name":"BinaryOperation","src":"10187:27:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5608,"name":"Identifier","src":"10301:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5609,"name":"Identifier","src":"10309:5:29"}],"id":5610,"name":"MemberAccess","src":"10309:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5611,"name":"Literal","src":"10325:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5612,"name":"Literal","src":"10329:2:29"}],"id":5613,"name":"BinaryOperation","src":"10325:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5614,"name":"Literal","src":"10334:2:29"}],"id":5615,"name":"BinaryOperation","src":"10325:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5616,"name":"Literal","src":"10339:2:29"}],"id":5617,"name":"BinaryOperation","src":"10325:16:29"}],"id":5618,"name":"BinaryOperation","src":"10309:32:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":5619,"name":"Literal","src":"10343:34:29"}],"id":5620,"name":"FunctionCall","src":"10301:77:29"}],"id":5621,"name":"ExpressionStatement","src":"10301:77:29"},{"attributes":{"functionReturnParameters":5568},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":9045,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5622,"name":"Identifier","src":"10400:5:29"}],"id":5623,"name":"MemberAccess","src":"10400:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5624,"name":"Literal","src":"10422:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5625,"name":"Literal","src":"10426:2:29"}],"id":5626,"name":"BinaryOperation","src":"10422:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5627,"name":"Literal","src":"10431:2:29"}],"id":5628,"name":"BinaryOperation","src":"10422:11:29"}],"id":5629,"name":"FunctionCall","src":"10400:34:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9113,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5630,"name":"Identifier","src":"10436:5:29"}],"id":5631,"name":"MemberAccess","src":"10436:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5632,"name":"Literal","src":"10458:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5633,"name":"Literal","src":"10462:2:29"}],"id":5634,"name":"BinaryOperation","src":"10458:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5635,"name":"Literal","src":"10467:2:29"}],"id":5636,"name":"BinaryOperation","src":"10458:11:29"}],"id":5637,"name":"FunctionCall","src":"10436:34:29"}],"id":5638,"name":"TupleExpression","src":"10399:72:29"}],"id":5639,"name":"Return","src":"10392:79:29"}],"id":5640,"name":"Block","src":"10216:266:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5641,"name":"Identifier","src":"10590:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5642,"name":"Identifier","src":"10598:5:29"}],"id":5643,"name":"MemberAccess","src":"10598:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5644,"name":"Literal","src":"10614:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5645,"name":"Literal","src":"10618:2:29"}],"id":5646,"name":"BinaryOperation","src":"10614:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5647,"name":"Literal","src":"10623:2:29"}],"id":5648,"name":"BinaryOperation","src":"10614:11:29"}],"id":5649,"name":"BinaryOperation","src":"10598:27:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":5650,"name":"Literal","src":"10627:39:29"}],"id":5651,"name":"FunctionCall","src":"10590:77:29"}],"id":5652,"name":"ExpressionStatement","src":"10590:77:29"},{"attributes":{"functionReturnParameters":5568},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":9045,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5653,"name":"Identifier","src":"10689:5:29"}],"id":5654,"name":"MemberAccess","src":"10689:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5655,"name":"Literal","src":"10711:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5656,"name":"Literal","src":"10715:2:29"}],"id":5657,"name":"BinaryOperation","src":"10711:6:29"}],"id":5658,"name":"FunctionCall","src":"10689:29:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9113,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5659,"name":"Identifier","src":"10720:5:29"}],"id":5660,"name":"MemberAccess","src":"10720:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5661,"name":"Literal","src":"10742:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5662,"name":"Literal","src":"10746:2:29"}],"id":5663,"name":"BinaryOperation","src":"10742:6:29"}],"id":5664,"name":"FunctionCall","src":"10720:29:29"}],"id":5665,"name":"TupleExpression","src":"10688:62:29"}],"id":5666,"name":"Return","src":"10681:69:29"}],"id":5667,"name":"Block","src":"10488:273:29"}],"id":5668,"name":"IfStatement","src":"10183:578:29"}],"id":5669,"name":"IfStatement","src":"10044:717:29"}],"id":5670,"name":"Block","src":"9483:1284:29"}],"id":5671,"name":"FunctionDefinition","src":"9368:1399:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5703,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5672,"name":"ElementaryTypeName","src":"10866:7:29"}],"id":5673,"name":"VariableDeclaration","src":"10866:14:29"},{"attributes":{"constant":false,"name":"_loadable","scope":5703,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5674,"name":"ElementaryTypeName","src":"10882:4:29"}],"id":5675,"name":"VariableDeclaration","src":"10882:14:29"}],"id":5676,"name":"ParameterList","src":"10865:32:29"},{"attributes":{"parameters":[null]},"children":[],"id":5679,"name":"ParameterList","src":"10917:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5677,"name":"Identifier","src":"10907:9:29"}],"id":5678,"name":"ModifierInvocation","src":"10907:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5680,"name":"Identifier","src":"10969:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5681,"name":"Identifier","src":"10977:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5673,"type":"address","value":"_token"},"id":5682,"name":"Identifier","src":"10991:6:29"}],"id":5683,"name":"IndexAccess","src":"10977:21:29"}],"id":5684,"name":"MemberAccess","src":"10977:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5685,"name":"Literal","src":"11010:24:29"}],"id":5686,"name":"FunctionCall","src":"10969:66:29"}],"id":5687,"name":"ExpressionStatement","src":"10969:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":5218,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5688,"name":"Identifier","src":"11108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5673,"type":"address","value":"_token"},"id":5689,"name":"Identifier","src":"11122:6:29"}],"id":5690,"name":"IndexAccess","src":"11108:21:29"}],"id":5691,"name":"MemberAccess","src":"11108:30:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5675,"type":"bool","value":"_loadable"},"id":5692,"name":"Identifier","src":"11141:9:29"}],"id":5693,"name":"Assignment","src":"11108:42:29"}],"id":5694,"name":"ExpressionStatement","src":"11108:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5140,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":5695,"name":"Identifier","src":"11166:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5696,"name":"Identifier","src":"11187:3:29"}],"id":5697,"name":"MemberAccess","src":"11187:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5673,"type":"address","value":"_token"},"id":5698,"name":"Identifier","src":"11199:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5675,"type":"bool","value":"_loadable"},"id":5699,"name":"Identifier","src":"11207:9:29"}],"id":5700,"name":"FunctionCall","src":"11166:51:29"}],"id":5701,"name":"EmitStatement","src":"11161:56:29"}],"id":5702,"name":"Block","src":"10917:307:29"}],"id":5703,"name":"FunctionDefinition","src":"10840:384:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5735,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5704,"name":"ElementaryTypeName","src":"11327:7:29"}],"id":5705,"name":"VariableDeclaration","src":"11327:14:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":5735,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5706,"name":"ElementaryTypeName","src":"11343:4:29"}],"id":5707,"name":"VariableDeclaration","src":"11343:16:29"}],"id":5708,"name":"ParameterList","src":"11326:34:29"},{"attributes":{"parameters":[null]},"children":[],"id":5711,"name":"ParameterList","src":"11380:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5709,"name":"Identifier","src":"11370:9:29"}],"id":5710,"name":"ModifierInvocation","src":"11370:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5712,"name":"Identifier","src":"11432:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5713,"name":"Identifier","src":"11440:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5705,"type":"address","value":"_token"},"id":5714,"name":"Identifier","src":"11454:6:29"}],"id":5715,"name":"IndexAccess","src":"11440:21:29"}],"id":5716,"name":"MemberAccess","src":"11440:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5717,"name":"Literal","src":"11473:24:29"}],"id":5718,"name":"FunctionCall","src":"11432:66:29"}],"id":5719,"name":"ExpressionStatement","src":"11432:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5720,"name":"Identifier","src":"11573:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5705,"type":"address","value":"_token"},"id":5721,"name":"Identifier","src":"11587:6:29"}],"id":5722,"name":"IndexAccess","src":"11573:21:29"}],"id":5723,"name":"MemberAccess","src":"11573:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5707,"type":"bool","value":"_redeemable"},"id":5724,"name":"Identifier","src":"11608:11:29"}],"id":5725,"name":"Assignment","src":"11573:46:29"}],"id":5726,"name":"ExpressionStatement","src":"11573:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5148,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":5727,"name":"Identifier","src":"11635:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5728,"name":"Identifier","src":"11658:3:29"}],"id":5729,"name":"MemberAccess","src":"11658:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5705,"type":"address","value":"_token"},"id":5730,"name":"Identifier","src":"11670:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5707,"type":"bool","value":"_redeemable"},"id":5731,"name":"Identifier","src":"11678:11:29"}],"id":5732,"name":"FunctionCall","src":"11635:55:29"}],"id":5733,"name":"EmitStatement","src":"11630:60:29"}],"id":5734,"name":"Block","src":"11380:317:29"}],"id":5735,"name":"FunctionDefinition","src":"11299:398:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5776,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5736,"name":"ElementaryTypeName","src":"11999:7:29"}],"id":5737,"name":"VariableDeclaration","src":"11999:14:29"},{"attributes":{"constant":false,"name":"_rate","scope":5776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5738,"name":"ElementaryTypeName","src":"12015:7:29"}],"id":5739,"name":"VariableDeclaration","src":"12015:13:29"},{"attributes":{"constant":false,"name":"_updateDate","scope":5776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5740,"name":"ElementaryTypeName","src":"12030:7:29"}],"id":5741,"name":"VariableDeclaration","src":"12030:19:29"}],"id":5742,"name":"ParameterList","src":"11998:52:29"},{"attributes":{"parameters":[null]},"children":[],"id":5745,"name":"ParameterList","src":"12078:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5313,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":5743,"name":"Identifier","src":"12060:17:29"}],"id":5744,"name":"ModifierInvocation","src":"12060:17:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5746,"name":"Identifier","src":"12130:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5747,"name":"Identifier","src":"12138:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"address","value":"_token"},"id":5748,"name":"Identifier","src":"12152:6:29"}],"id":5749,"name":"IndexAccess","src":"12138:21:29"}],"id":5750,"name":"MemberAccess","src":"12138:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5751,"name":"Literal","src":"12171:24:29"}],"id":5752,"name":"FunctionCall","src":"12130:66:29"}],"id":5753,"name":"ExpressionStatement","src":"12130:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":5214,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5754,"name":"Identifier","src":"12242:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"address","value":"_token"},"id":5755,"name":"Identifier","src":"12256:6:29"}],"id":5756,"name":"IndexAccess","src":"12242:21:29"}],"id":5757,"name":"MemberAccess","src":"12242:26:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"uint256","value":"_rate"},"id":5758,"name":"Identifier","src":"12271:5:29"}],"id":5759,"name":"Assignment","src":"12242:34:29"}],"id":5760,"name":"ExpressionStatement","src":"12242:34:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":5222,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5761,"name":"Identifier","src":"12339:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"address","value":"_token"},"id":5762,"name":"Identifier","src":"12353:6:29"}],"id":5763,"name":"IndexAccess","src":"12339:21:29"}],"id":5764,"name":"MemberAccess","src":"12339:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5741,"type":"uint256","value":"_updateDate"},"id":5765,"name":"Identifier","src":"12374:11:29"}],"id":5766,"name":"Assignment","src":"12339:46:29"}],"id":5767,"name":"ExpressionStatement","src":"12339:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5132,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":5768,"name":"Identifier","src":"12439:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5769,"name":"Identifier","src":"12456:3:29"}],"id":5770,"name":"MemberAccess","src":"12456:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"address","value":"_token"},"id":5771,"name":"Identifier","src":"12468:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"uint256","value":"_rate"},"id":5772,"name":"Identifier","src":"12476:5:29"}],"id":5773,"name":"FunctionCall","src":"12439:43:29"}],"id":5774,"name":"EmitStatement","src":"12434:48:29"}],"id":5775,"name":"Block","src":"12078:411:29"}],"id":5776,"name":"FunctionDefinition","src":"11974:515:29"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":5800,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5777,"name":"ElementaryTypeName","src":"12593:15:29"}],"id":5778,"name":"VariableDeclaration","src":"12593:19:29"},{"attributes":{"constant":false,"name":"_asset","scope":5800,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5779,"name":"ElementaryTypeName","src":"12614:7:29"}],"id":5780,"name":"VariableDeclaration","src":"12614:14:29"},{"attributes":{"constant":false,"name":"_amount","scope":5800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5781,"name":"ElementaryTypeName","src":"12630:7:29"}],"id":5782,"name":"VariableDeclaration","src":"12630:15:29"}],"id":5783,"name":"ParameterList","src":"12592:54:29"},{"attributes":{"parameters":[null]},"children":[],"id":5786,"name":"ParameterList","src":"12666:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5784,"name":"Identifier","src":"12656:9:29"}],"id":5785,"name":"ModifierInvocation","src":"12656:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4166,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":5787,"name":"Identifier","src":"12676:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5778,"type":"address payable","value":"_to"},"id":5788,"name":"Identifier","src":"12690:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5780,"type":"address","value":"_asset"},"id":5789,"name":"Identifier","src":"12695:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5782,"type":"uint256","value":"_amount"},"id":5790,"name":"Identifier","src":"12703:7:29"}],"id":5791,"name":"FunctionCall","src":"12676:35:29"}],"id":5792,"name":"ExpressionStatement","src":"12676:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"function (address,address,uint256)","value":"Claimed"},"id":5793,"name":"Identifier","src":"12726:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5778,"type":"address payable","value":"_to"},"id":5794,"name":"Identifier","src":"12734:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5780,"type":"address","value":"_asset"},"id":5795,"name":"Identifier","src":"12739:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5782,"type":"uint256","value":"_amount"},"id":5796,"name":"Identifier","src":"12747:7:29"}],"id":5797,"name":"FunctionCall","src":"12726:29:29"}],"id":5798,"name":"EmitStatement","src":"12721:34:29"}],"id":5799,"name":"Block","src":"12666:96:29"}],"id":5800,"name":"FunctionDefinition","src":"12578:184:29"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5801,"name":"ElementaryTypeName","src":"13336:7:29"}],"id":5802,"name":"VariableDeclaration","src":"13336:10:29"}],"id":5803,"name":"ParameterList","src":"13335:12:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5804,"name":"ElementaryTypeName","src":"13371:6:29"}],"id":5805,"name":"VariableDeclaration","src":"13371:13:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5806,"name":"ElementaryTypeName","src":"13386:7:29"}],"id":5807,"name":"VariableDeclaration","src":"13386:7:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5808,"name":"ElementaryTypeName","src":"13395:7:29"}],"id":5809,"name":"VariableDeclaration","src":"13395:7:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5810,"name":"ElementaryTypeName","src":"13404:4:29"}],"id":5811,"name":"VariableDeclaration","src":"13404:4:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5812,"name":"ElementaryTypeName","src":"13410:4:29"}],"id":5813,"name":"VariableDeclaration","src":"13410:4:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5814,"name":"ElementaryTypeName","src":"13416:4:29"}],"id":5815,"name":"VariableDeclaration","src":"13416:4:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5816,"name":"ElementaryTypeName","src":"13422:7:29"}],"id":5817,"name":"VariableDeclaration","src":"13422:7:29"}],"id":5818,"name":"ParameterList","src":"13370:60:29"},{"children":[{"attributes":{"assignments":[5820]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":5841,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":5223,"type":"struct TokenWhitelist.Token"},"id":5819,"name":"UserDefinedTypeName","src":"13441:5:29"}],"id":5820,"name":"VariableDeclaration","src":"13441:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5821,"name":"Identifier","src":"13467:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"address","value":"_a"},"id":5822,"name":"Identifier","src":"13481:2:29"}],"id":5823,"name":"IndexAccess","src":"13467:17:29"}],"id":5824,"name":"VariableDeclarationStatement","src":"13441:43:29"},{"attributes":{"functionReturnParameters":5818},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":5210,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5825,"name":"Identifier","src":"13502:9:29"}],"id":5826,"name":"MemberAccess","src":"13502:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":5212,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5827,"name":"Identifier","src":"13520:9:29"}],"id":5828,"name":"MemberAccess","src":"13520:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":5214,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5829,"name":"Identifier","src":"13541:9:29"}],"id":5830,"name":"MemberAccess","src":"13541:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5831,"name":"Identifier","src":"13557:9:29"}],"id":5832,"name":"MemberAccess","src":"13557:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":5218,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5833,"name":"Identifier","src":"13578:9:29"}],"id":5834,"name":"MemberAccess","src":"13578:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5835,"name":"Identifier","src":"13598:9:29"}],"id":5836,"name":"MemberAccess","src":"13598:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":5222,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5837,"name":"Identifier","src":"13620:9:29"}],"id":5838,"name":"MemberAccess","src":"13620:20:29"}],"id":5839,"name":"TupleExpression","src":"13501:140:29"}],"id":5840,"name":"Return","src":"13494:147:29"}],"id":5841,"name":"Block","src":"13431:217:29"}],"id":5842,"name":"FunctionDefinition","src":"13314:334:29"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5843,"name":"ParameterList","src":"14176:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5844,"name":"ElementaryTypeName","src":"14202:6:29"}],"id":5845,"name":"VariableDeclaration","src":"14202:13:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5846,"name":"ElementaryTypeName","src":"14217:7:29"}],"id":5847,"name":"VariableDeclaration","src":"14217:7:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5848,"name":"ElementaryTypeName","src":"14226:7:29"}],"id":5849,"name":"VariableDeclaration","src":"14226:7:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5850,"name":"ElementaryTypeName","src":"14235:4:29"}],"id":5851,"name":"VariableDeclaration","src":"14235:4:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5852,"name":"ElementaryTypeName","src":"14241:4:29"}],"id":5853,"name":"VariableDeclaration","src":"14241:4:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5854,"name":"ElementaryTypeName","src":"14247:4:29"}],"id":5855,"name":"VariableDeclaration","src":"14247:4:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5856,"name":"ElementaryTypeName","src":"14253:7:29"}],"id":5857,"name":"VariableDeclaration","src":"14253:7:29"}],"id":5858,"name":"ParameterList","src":"14201:60:29"},{"children":[{"attributes":{"assignments":[5860]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":5881,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":5223,"type":"struct TokenWhitelist.Token"},"id":5859,"name":"UserDefinedTypeName","src":"14272:5:29"}],"id":5860,"name":"VariableDeclaration","src":"14272:28:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5861,"name":"Identifier","src":"14303:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"address","value":"_stablecoin"},"id":5862,"name":"Identifier","src":"14317:11:29"}],"id":5863,"name":"IndexAccess","src":"14303:26:29"}],"id":5864,"name":"VariableDeclarationStatement","src":"14272:57:29"},{"attributes":{"functionReturnParameters":5858},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":5210,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5865,"name":"Identifier","src":"14360:14:29"}],"id":5866,"name":"MemberAccess","src":"14360:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":5212,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5867,"name":"Identifier","src":"14395:14:29"}],"id":5868,"name":"MemberAccess","src":"14395:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":5214,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5869,"name":"Identifier","src":"14433:14:29"}],"id":5870,"name":"MemberAccess","src":"14433:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5871,"name":"Identifier","src":"14466:14:29"}],"id":5872,"name":"MemberAccess","src":"14466:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":5218,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5873,"name":"Identifier","src":"14504:14:29"}],"id":5874,"name":"MemberAccess","src":"14504:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5875,"name":"Identifier","src":"14541:14:29"}],"id":5876,"name":"MemberAccess","src":"14541:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":5222,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5877,"name":"Identifier","src":"14580:14:29"}],"id":5878,"name":"MemberAccess","src":"14580:25:29"}],"id":5879,"name":"TupleExpression","src":"14346:269:29"}],"id":5880,"name":"Return","src":"14339:276:29"}],"id":5881,"name":"Block","src":"14262:360:29"}],"id":5882,"name":"FunctionDefinition","src":"14150:472:29"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5883,"name":"ParameterList","src":"14777:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5891,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5884,"name":"ElementaryTypeName","src":"14803:7:29"}],"id":5885,"name":"ArrayTypeName","src":"14803:9:29"}],"id":5886,"name":"VariableDeclaration","src":"14803:16:29"}],"id":5887,"name":"ParameterList","src":"14802:18:29"},{"children":[{"attributes":{"functionReturnParameters":5887},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5888,"name":"Identifier","src":"14838:18:29"}],"id":5889,"name":"Return","src":"14831:25:29"}],"id":5890,"name":"Block","src":"14821:42:29"}],"id":5891,"name":"FunctionDefinition","src":"14751:112:29"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5892,"name":"ParameterList","src":"15015:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5949,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5893,"name":"ElementaryTypeName","src":"15041:7:29"}],"id":5894,"name":"ArrayTypeName","src":"15041:9:29"}],"id":5895,"name":"VariableDeclaration","src":"15041:16:29"}],"id":5896,"name":"ParameterList","src":"15040:18:29"},{"children":[{"attributes":{"assignments":[5900]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":5948,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":5898,"name":"ElementaryTypeName","src":"15069:7:29"}],"id":5899,"name":"ArrayTypeName","src":"15069:9:29"}],"id":5900,"name":"VariableDeclaration","src":"15069:36:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5901,"name":"ElementaryTypeName","src":"15112:7:29"}],"id":5902,"name":"ArrayTypeName","src":"15112:9:29"}],"id":5903,"name":"NewExpression","src":"15108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5904,"name":"Identifier","src":"15122:18:29"}],"id":5905,"name":"FunctionCall","src":"15108:33:29"}],"id":5906,"name":"VariableDeclarationStatement","src":"15069:72:29"},{"attributes":{"assignments":[5908]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":5948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5907,"name":"ElementaryTypeName","src":"15151:7:29"}],"id":5908,"name":"VariableDeclaration","src":"15151:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5909,"name":"Literal","src":"15177:1:29"}],"id":5910,"name":"VariableDeclarationStatement","src":"15151:27:29"},{"children":[{"attributes":{"assignments":[5912]},"children":[{"attributes":{"constant":false,"name":"i","scope":5945,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5911,"name":"ElementaryTypeName","src":"15193:7:29"}],"id":5912,"name":"VariableDeclaration","src":"15193:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5913,"name":"Literal","src":"15205:1:29"}],"id":5914,"name":"VariableDeclarationStatement","src":"15193:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5912,"type":"uint256","value":"i"},"id":5915,"name":"Identifier","src":"15208:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5916,"name":"Identifier","src":"15212:18:29"}],"id":5917,"name":"MemberAccess","src":"15212:25:29"}],"id":5918,"name":"BinaryOperation","src":"15208:29:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5912,"type":"uint256","value":"i"},"id":5919,"name":"Identifier","src":"15239:1:29"}],"id":5920,"name":"UnaryOperation","src":"15239:3:29"}],"id":5921,"name":"ExpressionStatement","src":"15239:3:29"},{"children":[{"attributes":{"assignments":[5923]},"children":[{"attributes":{"constant":false,"name":"token","scope":5944,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5922,"name":"ElementaryTypeName","src":"15258:7:29"}],"id":5923,"name":"VariableDeclaration","src":"15258:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5924,"name":"Identifier","src":"15274:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5912,"type":"uint256","value":"i"},"id":5925,"name":"Identifier","src":"15293:1:29"}],"id":5926,"name":"IndexAccess","src":"15274:21:29"}],"id":5927,"name":"VariableDeclarationStatement","src":"15258:37:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5928,"name":"Identifier","src":"15313:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5923,"type":"address","value":"token"},"id":5929,"name":"Identifier","src":"15327:5:29"}],"id":5930,"name":"IndexAccess","src":"15313:20:29"}],"id":5931,"name":"MemberAccess","src":"15313:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5900,"type":"address[] memory","value":"redeemableAddresses"},"id":5932,"name":"Identifier","src":"15364:19:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5908,"type":"uint256","value":"redeemableIndex"},"id":5933,"name":"Identifier","src":"15384:15:29"}],"id":5934,"name":"IndexAccess","src":"15364:36:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5923,"type":"address","value":"token"},"id":5935,"name":"Identifier","src":"15403:5:29"}],"id":5936,"name":"Assignment","src":"15364:44:29"}],"id":5937,"name":"ExpressionStatement","src":"15364:44:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5908,"type":"uint256","value":"redeemableIndex"},"id":5938,"name":"Identifier","src":"15426:15:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5939,"name":"Literal","src":"15445:1:29"}],"id":5940,"name":"Assignment","src":"15426:20:29"}],"id":5941,"name":"ExpressionStatement","src":"15426:20:29"}],"id":5942,"name":"Block","src":"15346:115:29"}],"id":5943,"name":"IfStatement","src":"15309:152:29"}],"id":5944,"name":"Block","src":"15244:227:29"}],"id":5945,"name":"ForStatement","src":"15188:283:29"},{"attributes":{"functionReturnParameters":5896},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5900,"type":"address[] memory","value":"redeemableAddresses"},"id":5946,"name":"Identifier","src":"15487:19:29"}],"id":5947,"name":"Return","src":"15480:26:29"}],"id":5948,"name":"Block","src":"15059:454:29"}],"id":5949,"name":"FunctionDefinition","src":"14990:523:29"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5972,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5950,"name":"ElementaryTypeName","src":"15727:7:29"}],"id":5951,"name":"VariableDeclaration","src":"15727:14:29"},{"attributes":{"constant":false,"name":"_methodId","scope":5972,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5952,"name":"ElementaryTypeName","src":"15743:6:29"}],"id":5953,"name":"VariableDeclaration","src":"15743:16:29"}],"id":5954,"name":"ParameterList","src":"15726:34:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5972,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5955,"name":"ElementaryTypeName","src":"15782:4:29"}],"id":5956,"name":"VariableDeclaration","src":"15782:4:29"}],"id":5957,"name":"ParameterList","src":"15781:6:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5958,"name":"Identifier","src":"15798:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5959,"name":"Identifier","src":"15806:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5951,"type":"address","value":"_token"},"id":5960,"name":"Identifier","src":"15820:6:29"}],"id":5961,"name":"IndexAccess","src":"15806:21:29"}],"id":5962,"name":"MemberAccess","src":"15806:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":5963,"name":"Literal","src":"15839:20:29"}],"id":5964,"name":"FunctionCall","src":"15798:62:29"}],"id":5965,"name":"ExpressionStatement","src":"15798:62:29"},{"attributes":{"functionReturnParameters":5957},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5966,"name":"Identifier","src":"15878:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5953,"type":"bytes4","value":"_methodId"},"id":5967,"name":"Identifier","src":"15897:9:29"}],"id":5968,"name":"IndexAccess","src":"15878:29:29"}],"id":5969,"name":"TupleExpression","src":"15877:31:29"}],"id":5970,"name":"Return","src":"15870:38:29"}],"id":5971,"name":"Block","src":"15788:127:29"}],"id":5972,"name":"FunctionDefinition","src":"15695:220:29"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":5985,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5973,"name":"ElementaryTypeName","src":"16104:6:29"}],"id":5974,"name":"VariableDeclaration","src":"16104:16:29"}],"id":5975,"name":"ParameterList","src":"16103:18:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5985,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5976,"name":"ElementaryTypeName","src":"16145:4:29"}],"id":5977,"name":"VariableDeclaration","src":"16145:4:29"}],"id":5978,"name":"ParameterList","src":"16144:6:29"},{"children":[{"attributes":{"functionReturnParameters":5978},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5979,"name":"Identifier","src":"16169:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5974,"type":"bytes4","value":"_methodId"},"id":5980,"name":"Identifier","src":"16188:9:29"}],"id":5981,"name":"IndexAccess","src":"16169:29:29"}],"id":5982,"name":"TupleExpression","src":"16168:31:29"}],"id":5983,"name":"Return","src":"16161:38:29"}],"id":5984,"name":"Block","src":"16151:55:29"}],"id":5985,"name":"FunctionDefinition","src":"16070:136:29"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5986,"name":"ParameterList","src":"16342:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5987,"name":"ElementaryTypeName","src":"16368:7:29"}],"id":5988,"name":"VariableDeclaration","src":"16368:7:29"}],"id":5989,"name":"ParameterList","src":"16367:9:29"},{"children":[{"attributes":{"functionReturnParameters":5989},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5990,"name":"Identifier","src":"16394:18:29"}],"id":5991,"name":"Return","src":"16387:25:29"}],"id":5992,"name":"Block","src":"16377:42:29"}],"id":5993,"name":"FunctionDefinition","src":"16316:103:29"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5994,"name":"ParameterList","src":"16570:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6001,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5995,"name":"ElementaryTypeName","src":"16596:7:29"}],"id":5996,"name":"VariableDeclaration","src":"16596:7:29"}],"id":5997,"name":"ParameterList","src":"16595:9:29"},{"children":[{"attributes":{"functionReturnParameters":5997},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"address","value":"_stablecoin"},"id":5998,"name":"Identifier","src":"16622:11:29"}],"id":5999,"name":"Return","src":"16615:18:29"}],"id":6000,"name":"Block","src":"16605:35:29"}],"id":6001,"name":"FunctionDefinition","src":"16551:89:29"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6002,"name":"ParameterList","src":"16774:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6009,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6003,"name":"ElementaryTypeName","src":"16800:7:29"}],"id":6004,"name":"VariableDeclaration","src":"16800:7:29"}],"id":6005,"name":"ParameterList","src":"16799:9:29"},{"children":[{"attributes":{"functionReturnParameters":6005},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes32","value":"_oracleNode"},"id":6006,"name":"Identifier","src":"16826:11:29"}],"id":6007,"name":"Return","src":"16819:18:29"}],"id":6008,"name":"Block","src":"16809:35:29"}],"id":6009,"name":"FunctionDefinition","src":"16755:89:29"}],"id":6010,"name":"ContractDefinition","src":"1939:14907:29"}],"id":6011,"name":"SourceUnit","src":"774:16073:29"}},"wallet.sol":{"AST":{"attributes":{"absolutePath":"wallet.sol","exportedSymbols":{"AddressWhitelist":[932],"ControllableOwnable":[362],"DailyLimitTrait":[1134],"GasTopUpLimit":[1424],"LoadLimit":[1598],"SelfCallableOwnable":[384],"SpendLimit":[1266],"Wallet":[2509]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":327,"name":"PragmaDirective","src":"757:24:30"},{"attributes":{"SourceUnit":4712,"absolutePath":"licence.sol","file":"./licence.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":328,"name":"ImportDirective","src":"783:23:30"},{"attributes":{"SourceUnit":3911,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":329,"name":"ImportDirective","src":"807:33:30"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":330,"name":"ImportDirective","src":"841:38:30"},{"attributes":{"SourceUnit":3754,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":331,"name":"ImportDirective","src":"880:37:30"},{"attributes":{"SourceUnit":4168,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":332,"name":"ImportDirective","src":"918:39:30"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":333,"name":"ImportDirective","src":"958:39:30"},{"attributes":{"SourceUnit":4128,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":334,"name":"ImportDirective","src":"998:44:30"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":335,"name":"ImportDirective","src":"1043:34:30"},{"attributes":{"SourceUnit":3226,"absolutePath":"externals/Address.sol","file":"./externals/Address.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":336,"name":"ImportDirective","src":"1078:33:30"},{"attributes":{"SourceUnit":3370,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":337,"name":"ImportDirective","src":"1112:31:30"},{"attributes":{"SourceUnit":3589,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":338,"name":"ImportDirective","src":"1144:35:30"},{"attributes":{"SourceUnit":3317,"absolutePath":"externals/ERC165.sol","file":"./externals/ERC165.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":339,"name":"ImportDirective","src":"1180:32:30"},{"attributes":{"SourceUnit":3307,"absolutePath":"externals/ECDSA.sol","file":"./externals/ECDSA.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":340,"name":"ImportDirective","src":"1213:31:30"},{"attributes":{"contractDependencies":[325,3206,3910],"contractKind":"contract","documentation":"@title ControllableOwnable combines Controllable and Ownable\n @dev providing an additional modifier to check if Owner or Controller","fullyImplemented":false,"linearizedBaseContracts":[362,3910,325,3206],"name":"ControllableOwnable","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":341,"name":"UserDefinedTypeName","src":"1418:12:30"}],"id":342,"name":"InheritanceSpecifier","src":"1418:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3910,"type":"contract Ownable"},"id":343,"name":"UserDefinedTypeName","src":"1432:7:30"}],"id":344,"name":"InheritanceSpecifier","src":"1432:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or one of the Controllers","name":"onlyOwnerOrController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":345,"name":"ParameterList","src":"1548:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a244313930a94a6f5de4548387c8c245a5d11002ac47a2e54f96214a9879106","typeString":"literal_string \"only owner||controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":346,"name":"Identifier","src":"1561:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":347,"name":"Identifier","src":"1569:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":348,"name":"Identifier","src":"1578:3:30"}],"id":349,"name":"MemberAccess","src":"1578:10:30"}],"id":350,"name":"FunctionCall","src":"1569:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":307,"type":"function (address) view returns (bool)","value":"_isController"},"id":351,"name":"Identifier","src":"1593:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":352,"name":"Identifier","src":"1607:3:30"}],"id":353,"name":"MemberAccess","src":"1607:10:30"}],"id":354,"name":"FunctionCall","src":"1593:25:30"}],"id":355,"name":"BinaryOperation","src":"1569:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||controller\"","value":"only owner||controller"},"id":356,"name":"Literal","src":"1620:24:30"}],"id":357,"name":"FunctionCall","src":"1561:84:30"}],"id":358,"name":"ExpressionStatement","src":"1561:84:30"},{"id":359,"name":"PlaceholderStatement","src":"1655:1:30"}],"id":360,"name":"Block","src":"1551:112:30"}],"id":361,"name":"ModifierDefinition","src":"1518:145:30"}],"id":362,"name":"ContractDefinition","src":"1386:279:30"},{"attributes":{"contractDependencies":[3910],"contractKind":"contract","documentation":"@title SelfCallableOwnable allows either owner or the contract itself to call its functions\n @dev providing an additional modifier to check if Owner or self is calling\n @dev the \"self\" here is used for the meta transactions","fullyImplemented":false,"linearizedBaseContracts":[384,3910],"name":"SelfCallableOwnable","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3910,"type":"contract Ownable"},"id":363,"name":"UserDefinedTypeName","src":"1934:7:30"}],"id":364,"name":"InheritanceSpecifier","src":"1934:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or self","name":"onlyOwnerOrSelf","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":365,"name":"ParameterList","src":"2026:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c98ff749bed2b5f266d255ad845f8a2a0dba28f389ec62046d9aad839ae2d6","typeString":"literal_string \"only owner||self\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":366,"name":"Identifier","src":"2039:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":367,"name":"Identifier","src":"2047:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":368,"name":"Identifier","src":"2056:3:30"}],"id":369,"name":"MemberAccess","src":"2056:10:30"}],"id":370,"name":"FunctionCall","src":"2047:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":371,"name":"Identifier","src":"2071:3:30"}],"id":372,"name":"MemberAccess","src":"2071:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfCallableOwnable_$384","typeString":"contract SelfCallableOwnable"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":373,"name":"ElementaryTypeNameExpression","src":"2085:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10619,"type":"contract SelfCallableOwnable","value":"this"},"id":374,"name":"Identifier","src":"2093:4:30"}],"id":375,"name":"FunctionCall","src":"2085:13:30"}],"id":376,"name":"BinaryOperation","src":"2071:27:30"}],"id":377,"name":"BinaryOperation","src":"2047:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c73656c66","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||self\"","value":"only owner||self"},"id":378,"name":"Literal","src":"2100:18:30"}],"id":379,"name":"FunctionCall","src":"2039:80:30"}],"id":380,"name":"ExpressionStatement","src":"2039:80:30"},{"id":381,"name":"PlaceholderStatement","src":"2129:1:30"}],"id":382,"name":"Block","src":"2029:108:30"}],"id":383,"name":"ModifierDefinition","src":"2002:135:30"}],"id":384,"name":"ContractDefinition","src":"1902:237:30"},{"attributes":{"contractDependencies":[325,362,384,3206,3910],"contractKind":"contract","documentation":"@title AddressWhitelist provides payee-whitelist functionality.\n @dev This contract will allow the user to maintain a whitelist of addresses\n @dev These addresses will live outside of the various spend limits","fullyImplemented":false,"linearizedBaseContracts":[932,384,362,3910,325,3206],"name":"AddressWhitelist","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":362,"type":"contract ControllableOwnable"},"id":385,"name":"UserDefinedTypeName","src":"2390:19:30"}],"id":386,"name":"InheritanceSpecifier","src":"2390:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":384,"type":"contract SelfCallableOwnable"},"id":387,"name":"UserDefinedTypeName","src":"2411:19:30"}],"id":388,"name":"InheritanceSpecifier","src":"2411:19:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":389,"name":"UserDefinedTypeName","src":"2443:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":390,"name":"ElementaryTypeName","src":"2456:7:30"}],"id":391,"name":"UsingForDirective","src":"2437:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":398,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":392,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":393,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":398,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":394,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":395,"name":"ArrayTypeName","src":"2510:9:30"}],"id":396,"name":"VariableDeclaration","src":"2510:20:30"}],"id":397,"name":"ParameterList","src":"2492:39:30"}],"id":398,"name":"EventDefinition","src":"2470:62:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":404,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":399,"name":"ElementaryTypeName","src":"2570:7:30"}],"id":400,"name":"VariableDeclaration","src":"2570:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":404,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":401,"name":"ElementaryTypeName","src":"2587:7:30"}],"id":402,"name":"VariableDeclaration","src":"2587:13:30"}],"id":403,"name":"ParameterList","src":"2569:32:30"}],"id":404,"name":"EventDefinition","src":"2537:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":411,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":405,"name":"ElementaryTypeName","src":"2640:7:30"}],"id":406,"name":"ArrayTypeName","src":"2640:9:30"}],"id":407,"name":"VariableDeclaration","src":"2640:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":411,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":408,"name":"ElementaryTypeName","src":"2662:7:30"}],"id":409,"name":"VariableDeclaration","src":"2662:13:30"}],"id":410,"name":"ParameterList","src":"2639:37:30"}],"id":411,"name":"EventDefinition","src":"2607:70:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":412,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":413,"name":"VariableDeclaration","src":"2715:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":417,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":414,"name":"ElementaryTypeName","src":"2732:7:30"}],"id":415,"name":"VariableDeclaration","src":"2732:13:30"}],"id":416,"name":"ParameterList","src":"2714:32:30"}],"id":417,"name":"EventDefinition","src":"2683:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedFromWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":424,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":418,"name":"ElementaryTypeName","src":"2779:7:30"}],"id":419,"name":"VariableDeclaration","src":"2779:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":424,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":420,"name":"ElementaryTypeName","src":"2796:7:30"}],"id":421,"name":"ArrayTypeName","src":"2796:9:30"}],"id":422,"name":"VariableDeclaration","src":"2796:20:30"}],"id":423,"name":"ParameterList","src":"2778:39:30"}],"id":424,"name":"EventDefinition","src":"2752:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":431,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":425,"name":"ElementaryTypeName","src":"2855:7:30"}],"id":426,"name":"ArrayTypeName","src":"2855:9:30"}],"id":427,"name":"VariableDeclaration","src":"2855:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":431,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":428,"name":"ElementaryTypeName","src":"2877:7:30"}],"id":429,"name":"VariableDeclaration","src":"2877:13:30"}],"id":430,"name":"ParameterList","src":"2854:37:30"}],"id":431,"name":"EventDefinition","src":"2823:69:30"},{"attributes":{"constant":false,"name":"whitelistMap","scope":932,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":432,"name":"ElementaryTypeName","src":"2906:7:30"},{"attributes":{"name":"bool","type":"bool"},"id":433,"name":"ElementaryTypeName","src":"2917:4:30"}],"id":434,"name":"Mapping","src":"2898:24:30"}],"id":435,"name":"VariableDeclaration","src":"2898:44:30"},{"attributes":{"constant":false,"name":"whitelistArray","scope":932,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":436,"name":"ElementaryTypeName","src":"2948:7:30"}],"id":437,"name":"ArrayTypeName","src":"2948:9:30"}],"id":438,"name":"VariableDeclaration","src":"2948:31:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistAddition","scope":932,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":439,"name":"ElementaryTypeName","src":"2985:7:30"}],"id":440,"name":"ArrayTypeName","src":"2985:9:30"}],"id":441,"name":"VariableDeclaration","src":"2985:43:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistRemoval","scope":932,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":442,"name":"ElementaryTypeName","src":"3034:7:30"}],"id":443,"name":"ArrayTypeName","src":"3034:9:30"}],"id":444,"name":"VariableDeclaration","src":"3034:42:30"},{"attributes":{"constant":false,"name":"submittedWhitelistAddition","scope":932,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":445,"name":"ElementaryTypeName","src":"3082:4:30"}],"id":446,"name":"VariableDeclaration","src":"3082:38:30"},{"attributes":{"constant":false,"name":"submittedWhitelistRemoval","scope":932,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":447,"name":"ElementaryTypeName","src":"3126:4:30"}],"id":448,"name":"VariableDeclaration","src":"3126:37:30"},{"attributes":{"constant":false,"name":"isSetWhitelist","scope":932,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":449,"name":"ElementaryTypeName","src":"3169:4:30"}],"id":450,"name":"VariableDeclaration","src":"3169:26:30"},{"attributes":{"documentation":"@dev Check if the provided addresses contain the owner or the zero-address address.","name":"hasNoOwnerOrZeroAddress","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":491,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":451,"name":"ElementaryTypeName","src":"3327:7:30"}],"id":452,"name":"ArrayTypeName","src":"3327:9:30"}],"id":453,"name":"VariableDeclaration","src":"3327:27:30"}],"id":454,"name":"ParameterList","src":"3326:29:30"},{"children":[{"children":[{"attributes":{"assignments":[456]},"children":[{"attributes":{"constant":false,"name":"i","scope":488,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":455,"name":"ElementaryTypeName","src":"3371:7:30"}],"id":456,"name":"VariableDeclaration","src":"3371:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":457,"name":"Literal","src":"3383:1:30"}],"id":458,"name":"VariableDeclarationStatement","src":"3371:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":456,"type":"uint256","value":"i"},"id":459,"name":"Identifier","src":"3386:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":453,"type":"address[] memory","value":"_addresses"},"id":460,"name":"Identifier","src":"3390:10:30"}],"id":461,"name":"MemberAccess","src":"3390:17:30"}],"id":462,"name":"BinaryOperation","src":"3386:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":456,"type":"uint256","value":"i"},"id":463,"name":"Identifier","src":"3409:1:30"}],"id":464,"name":"UnaryOperation","src":"3409:3:30"}],"id":465,"name":"ExpressionStatement","src":"3409:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83144f57b92473167e9ce74530b82e833e4f010b46d8a2562f84cdc754bd4967","typeString":"literal_string \"contains owner address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":466,"name":"Identifier","src":"3428:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":467,"name":"Identifier","src":"3437:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":453,"type":"address[] memory","value":"_addresses"},"id":468,"name":"Identifier","src":"3446:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":456,"type":"uint256","value":"i"},"id":469,"name":"Identifier","src":"3457:1:30"}],"id":470,"name":"IndexAccess","src":"3446:13:30"}],"id":471,"name":"FunctionCall","src":"3437:23:30"}],"id":472,"name":"UnaryOperation","src":"3436:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e73206f776e65722061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains owner address\"","value":"contains owner address"},"id":473,"name":"Literal","src":"3462:24:30"}],"id":474,"name":"FunctionCall","src":"3428:59:30"}],"id":475,"name":"ExpressionStatement","src":"3428:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab14c1506b1b0c03aad2feb5e5b965df7dffe18036562732ceabd49019d58098","typeString":"literal_string \"contains 0 address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":476,"name":"Identifier","src":"3501:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":453,"type":"address[] memory","value":"_addresses"},"id":477,"name":"Identifier","src":"3509:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":456,"type":"uint256","value":"i"},"id":478,"name":"Identifier","src":"3520:1:30"}],"id":479,"name":"IndexAccess","src":"3509:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":480,"name":"ElementaryTypeNameExpression","src":"3526:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":481,"name":"Literal","src":"3534:1:30"}],"id":482,"name":"FunctionCall","src":"3526:10:30"}],"id":483,"name":"BinaryOperation","src":"3509:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e7320302061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains 0 address\"","value":"contains 0 address"},"id":484,"name":"Literal","src":"3538:20:30"}],"id":485,"name":"FunctionCall","src":"3501:58:30"}],"id":486,"name":"ExpressionStatement","src":"3501:58:30"}],"id":487,"name":"Block","src":"3414:156:30"}],"id":488,"name":"ForStatement","src":"3366:204:30"},{"id":489,"name":"PlaceholderStatement","src":"3579:1:30"}],"id":490,"name":"Block","src":"3356:231:30"}],"id":491,"name":"ModifierDefinition","src":"3294:293:30"},{"attributes":{"documentation":"@dev Check that neither addition nor removal operations have already been submitted.","name":"noActiveSubmission","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":492,"name":"ParameterList","src":"3713:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_218a99457edaa7c4d6a4ca4023db54cf2e31e2ca8b9a350a6c9ab56a1ea1df99","typeString":"literal_string \"whitelist sumbission pending\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":493,"name":"Identifier","src":"3726:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":494,"name":"Identifier","src":"3735:26:30"}],"id":495,"name":"UnaryOperation","src":"3734:27:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":496,"name":"Identifier","src":"3766:25:30"}],"id":497,"name":"UnaryOperation","src":"3765:26:30"}],"id":498,"name":"BinaryOperation","src":"3734:57:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c6973742073756d62697373696f6e2070656e64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist sumbission pending\"","value":"whitelist sumbission pending"},"id":499,"name":"Literal","src":"3793:30:30"}],"id":500,"name":"FunctionCall","src":"3726:98:30"}],"id":501,"name":"ExpressionStatement","src":"3726:98:30"},{"id":502,"name":"PlaceholderStatement","src":"3834:1:30"}],"id":503,"name":"Block","src":"3716:126:30"}],"id":504,"name":"ModifierDefinition","src":"3686:156:30"},{"attributes":{"documentation":"@dev Cancel pending whitelist addition.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistAddition","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":539,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":505,"name":"ElementaryTypeName","src":"3929:7:30"}],"id":506,"name":"VariableDeclaration","src":"3929:13:30"}],"id":507,"name":"ParameterList","src":"3928:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":510,"name":"ParameterList","src":"3975:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":361,"type":"modifier ()","value":"onlyOwnerOrController"},"id":508,"name":"Identifier","src":"3953:21:30"}],"id":509,"name":"ModifierInvocation","src":"3953:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":511,"name":"Identifier","src":"4035:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":512,"name":"Identifier","src":"4043:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":513,"name":"Literal","src":"4071:23:30"}],"id":514,"name":"FunctionCall","src":"4035:60:30"}],"id":515,"name":"ExpressionStatement","src":"4035:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":516,"name":"Identifier","src":"4200:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":506,"type":"bytes32","value":"_hash"},"id":517,"name":"Identifier","src":"4208:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":518,"name":"Identifier","src":"4217:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":519,"name":"Identifier","src":"4231:25:30"}],"id":520,"name":"FunctionCall","src":"4217:40:30"}],"id":521,"name":"BinaryOperation","src":"4208:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":522,"name":"Literal","src":"4259:37:30"}],"id":523,"name":"FunctionCall","src":"4200:97:30"}],"id":524,"name":"ExpressionStatement","src":"4200:97:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":525,"name":"Identifier","src":"4350:25:30"}],"id":526,"name":"UnaryOperation","src":"4343:32:30"}],"id":527,"name":"ExpressionStatement","src":"4343:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":528,"name":"Identifier","src":"4432:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":529,"name":"Literal","src":"4461:5:30"}],"id":530,"name":"Assignment","src":"4432:34:30"}],"id":531,"name":"ExpressionStatement","src":"4432:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":404,"type":"function (address,bytes32)","value":"CancelledWhitelistAddition"},"id":532,"name":"Identifier","src":"4521:26:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":533,"name":"Identifier","src":"4548:3:30"}],"id":534,"name":"MemberAccess","src":"4548:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":506,"type":"bytes32","value":"_hash"},"id":535,"name":"Identifier","src":"4560:5:30"}],"id":536,"name":"FunctionCall","src":"4521:45:30"}],"id":537,"name":"EmitStatement","src":"4516:50:30"}],"id":538,"name":"Block","src":"3975:598:30"}],"id":539,"name":"FunctionDefinition","src":"3896:677:30"},{"attributes":{"documentation":"@dev Cancel pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistRemoval","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":574,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":540,"name":"ElementaryTypeName","src":"4673:7:30"}],"id":541,"name":"VariableDeclaration","src":"4673:13:30"}],"id":542,"name":"ParameterList","src":"4672:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":545,"name":"ParameterList","src":"4719:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":361,"type":"modifier ()","value":"onlyOwnerOrController"},"id":543,"name":"Identifier","src":"4697:21:30"}],"id":544,"name":"ModifierInvocation","src":"4697:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":546,"name":"Identifier","src":"4779:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":547,"name":"Identifier","src":"4787:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":548,"name":"Literal","src":"4814:23:30"}],"id":549,"name":"FunctionCall","src":"4779:59:30"}],"id":550,"name":"ExpressionStatement","src":"4779:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":551,"name":"Identifier","src":"4942:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":541,"type":"bytes32","value":"_hash"},"id":552,"name":"Identifier","src":"4950:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":553,"name":"Identifier","src":"4959:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":554,"name":"Identifier","src":"4973:24:30"}],"id":555,"name":"FunctionCall","src":"4959:39:30"}],"id":556,"name":"BinaryOperation","src":"4950:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":557,"name":"Literal","src":"5000:37:30"}],"id":558,"name":"FunctionCall","src":"4942:96:30"}],"id":559,"name":"ExpressionStatement","src":"4942:96:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":560,"name":"Identifier","src":"5091:24:30"}],"id":561,"name":"UnaryOperation","src":"5084:31:30"}],"id":562,"name":"ExpressionStatement","src":"5084:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":563,"name":"Identifier","src":"5161:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":564,"name":"Literal","src":"5189:5:30"}],"id":565,"name":"Assignment","src":"5161:33:30"}],"id":566,"name":"ExpressionStatement","src":"5161:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":417,"type":"function (address,bytes32)","value":"CancelledWhitelistRemoval"},"id":567,"name":"Identifier","src":"5249:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":568,"name":"Identifier","src":"5275:3:30"}],"id":569,"name":"MemberAccess","src":"5275:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":541,"type":"bytes32","value":"_hash"},"id":570,"name":"Identifier","src":"5287:5:30"}],"id":571,"name":"FunctionCall","src":"5249:44:30"}],"id":572,"name":"EmitStatement","src":"5244:49:30"}],"id":573,"name":"Block","src":"4719:581:30"}],"id":574,"name":"FunctionDefinition","src":"4641:659:30"},{"attributes":{"documentation":"@dev Confirm pending whitelist addition.\n @dev This will only ever be applied post 2FA, by one of the Controllers\n @param _hash is the hash of the pending whitelist array, a form of lamport lock","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistAddition","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":646,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":575,"name":"ElementaryTypeName","src":"5557:7:30"}],"id":576,"name":"VariableDeclaration","src":"5557:13:30"}],"id":577,"name":"ParameterList","src":"5556:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":580,"name":"ParameterList","src":"5596:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":578,"name":"Identifier","src":"5581:14:30"}],"id":579,"name":"ModifierInvocation","src":"5581:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":581,"name":"Identifier","src":"5673:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":582,"name":"Identifier","src":"5681:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":583,"name":"Literal","src":"5709:23:30"}],"id":584,"name":"FunctionCall","src":"5673:60:30"}],"id":585,"name":"ExpressionStatement","src":"5673:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":586,"name":"Identifier","src":"5838:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":576,"type":"bytes32","value":"_hash"},"id":587,"name":"Identifier","src":"5846:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":588,"name":"Identifier","src":"5855:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":589,"name":"Identifier","src":"5869:25:30"}],"id":590,"name":"FunctionCall","src":"5855:40:30"}],"id":591,"name":"BinaryOperation","src":"5846:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":592,"name":"Literal","src":"5897:37:30"}],"id":593,"name":"FunctionCall","src":"5838:97:30"}],"id":594,"name":"ExpressionStatement","src":"5838:97:30"},{"children":[{"attributes":{"assignments":[596]},"children":[{"attributes":{"constant":false,"name":"i","scope":631,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":595,"name":"ElementaryTypeName","src":"5990:7:30"}],"id":596,"name":"VariableDeclaration","src":"5990:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":597,"name":"Literal","src":"6002:1:30"}],"id":598,"name":"VariableDeclarationStatement","src":"5990:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":599,"name":"Identifier","src":"6005:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":600,"name":"Identifier","src":"6009:25:30"}],"id":601,"name":"MemberAccess","src":"6009:32:30"}],"id":602,"name":"BinaryOperation","src":"6005:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":603,"name":"Identifier","src":"6043:1:30"}],"id":604,"name":"UnaryOperation","src":"6043:3:30"}],"id":605,"name":"ExpressionStatement","src":"6043:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":606,"name":"Identifier","src":"6117:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":607,"name":"Identifier","src":"6130:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":608,"name":"Identifier","src":"6156:1:30"}],"id":609,"name":"IndexAccess","src":"6130:28:30"}],"id":610,"name":"IndexAccess","src":"6117:42:30"}],"id":611,"name":"UnaryOperation","src":"6116:43:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":612,"name":"Identifier","src":"6227:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":613,"name":"Identifier","src":"6240:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":614,"name":"Identifier","src":"6266:1:30"}],"id":615,"name":"IndexAccess","src":"6240:28:30"}],"id":616,"name":"IndexAccess","src":"6227:42:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":617,"name":"Literal","src":"6272:4:30"}],"id":618,"name":"Assignment","src":"6227:49:30"}],"id":619,"name":"ExpressionStatement","src":"6227:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":620,"name":"Identifier","src":"6294:14:30"}],"id":622,"name":"MemberAccess","src":"6294:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":623,"name":"Identifier","src":"6314:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":624,"name":"Identifier","src":"6340:1:30"}],"id":625,"name":"IndexAccess","src":"6314:28:30"}],"id":626,"name":"FunctionCall","src":"6294:49:30"}],"id":627,"name":"ExpressionStatement","src":"6294:49:30"}],"id":628,"name":"Block","src":"6161:197:30"}],"id":629,"name":"IfStatement","src":"6112:246:30"}],"id":630,"name":"Block","src":"6048:320:30"}],"id":631,"name":"ForStatement","src":"5985:383:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":398,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":632,"name":"Identifier","src":"6418:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":633,"name":"Identifier","src":"6435:3:30"}],"id":634,"name":"MemberAccess","src":"6435:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":635,"name":"Identifier","src":"6447:25:30"}],"id":636,"name":"FunctionCall","src":"6418:55:30"}],"id":637,"name":"EmitStatement","src":"6413:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":638,"name":"Identifier","src":"6526:25:30"}],"id":639,"name":"UnaryOperation","src":"6519:32:30"}],"id":640,"name":"ExpressionStatement","src":"6519:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":641,"name":"Identifier","src":"6599:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":642,"name":"Literal","src":"6628:5:30"}],"id":643,"name":"Assignment","src":"6599:34:30"}],"id":644,"name":"ExpressionStatement","src":"6599:34:30"}],"id":645,"name":"Block","src":"5596:1044:30"}],"id":646,"name":"FunctionDefinition","src":"5523:1117:30"},{"attributes":{"documentation":"@dev Confirm pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistRemoval","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":751,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":647,"name":"ElementaryTypeName","src":"6742:7:30"}],"id":648,"name":"VariableDeclaration","src":"6742:13:30"}],"id":649,"name":"ParameterList","src":"6741:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":652,"name":"ParameterList","src":"6781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":650,"name":"Identifier","src":"6766:14:30"}],"id":651,"name":"ModifierInvocation","src":"6766:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":653,"name":"Identifier","src":"6888:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":654,"name":"Identifier","src":"6896:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":655,"name":"Literal","src":"6923:23:30"}],"id":656,"name":"FunctionCall","src":"6888:59:30"}],"id":657,"name":"ExpressionStatement","src":"6888:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":658,"name":"Identifier","src":"7051:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":648,"type":"bytes32","value":"_hash"},"id":659,"name":"Identifier","src":"7059:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":660,"name":"Identifier","src":"7068:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":661,"name":"Identifier","src":"7082:24:30"}],"id":662,"name":"FunctionCall","src":"7068:39:30"}],"id":663,"name":"BinaryOperation","src":"7059:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":664,"name":"Literal","src":"7109:37:30"}],"id":665,"name":"FunctionCall","src":"7051:96:30"}],"id":666,"name":"ExpressionStatement","src":"7051:96:30"},{"children":[{"attributes":{"assignments":[668]},"children":[{"attributes":{"constant":false,"name":"i","scope":736,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":667,"name":"ElementaryTypeName","src":"7199:7:30"}],"id":668,"name":"VariableDeclaration","src":"7199:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":669,"name":"Literal","src":"7211:1:30"}],"id":670,"name":"VariableDeclarationStatement","src":"7199:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":671,"name":"Identifier","src":"7214:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":672,"name":"Identifier","src":"7218:24:30"}],"id":673,"name":"MemberAccess","src":"7218:31:30"}],"id":674,"name":"BinaryOperation","src":"7214:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":675,"name":"Identifier","src":"7251:1:30"}],"id":676,"name":"UnaryOperation","src":"7251:3:30"}],"id":677,"name":"ExpressionStatement","src":"7251:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":678,"name":"Identifier","src":"7308:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":679,"name":"Identifier","src":"7321:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":680,"name":"Identifier","src":"7346:1:30"}],"id":681,"name":"IndexAccess","src":"7321:27:30"}],"id":682,"name":"IndexAccess","src":"7308:41:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":683,"name":"Identifier","src":"7369:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":684,"name":"Identifier","src":"7382:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":685,"name":"Identifier","src":"7407:1:30"}],"id":686,"name":"IndexAccess","src":"7382:27:30"}],"id":687,"name":"IndexAccess","src":"7369:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":688,"name":"Literal","src":"7413:5:30"}],"id":689,"name":"Assignment","src":"7369:49:30"}],"id":690,"name":"ExpressionStatement","src":"7369:49:30"},{"children":[{"attributes":{"assignments":[692]},"children":[{"attributes":{"constant":false,"name":"j","scope":727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":691,"name":"ElementaryTypeName","src":"7441:7:30"}],"id":692,"name":"VariableDeclaration","src":"7441:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":693,"name":"Literal","src":"7453:1:30"}],"id":694,"name":"VariableDeclarationStatement","src":"7441:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"j"},"id":695,"name":"Identifier","src":"7456:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":696,"name":"Identifier","src":"7460:14:30"}],"id":697,"name":"MemberAccess","src":"7460:21:30"}],"id":698,"name":"MemberAccess","src":"7460:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":699,"name":"Literal","src":"7486:1:30"}],"id":700,"name":"FunctionCall","src":"7460:28:30"}],"id":701,"name":"BinaryOperation","src":"7456:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"j"},"id":702,"name":"Identifier","src":"7490:1:30"}],"id":703,"name":"UnaryOperation","src":"7490:3:30"}],"id":704,"name":"ExpressionStatement","src":"7490:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":705,"name":"Identifier","src":"7521:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"j"},"id":706,"name":"Identifier","src":"7536:1:30"}],"id":707,"name":"IndexAccess","src":"7521:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":708,"name":"Identifier","src":"7542:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":709,"name":"Identifier","src":"7567:1:30"}],"id":710,"name":"IndexAccess","src":"7542:27:30"}],"id":711,"name":"BinaryOperation","src":"7521:48:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":712,"name":"Identifier","src":"7597:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"j"},"id":713,"name":"Identifier","src":"7612:1:30"}],"id":714,"name":"IndexAccess","src":"7597:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":715,"name":"Identifier","src":"7617:14:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":716,"name":"Identifier","src":"7632:14:30"}],"id":717,"name":"MemberAccess","src":"7632:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":718,"name":"Literal","src":"7656:1:30"}],"id":719,"name":"BinaryOperation","src":"7632:25:30"}],"id":720,"name":"IndexAccess","src":"7617:41:30"}],"id":721,"name":"Assignment","src":"7597:61:30"}],"id":722,"name":"ExpressionStatement","src":"7597:61:30"},{"id":723,"name":"Break","src":"7684:5:30"}],"id":724,"name":"Block","src":"7571:141:30"}],"id":725,"name":"IfStatement","src":"7517:195:30"}],"id":726,"name":"Block","src":"7495:235:30"}],"id":727,"name":"ForStatement","src":"7436:294:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":728,"name":"Identifier","src":"7747:14:30"}],"id":730,"name":"MemberAccess","src":"7747:21:30"}],"id":731,"name":"UnaryOperation","src":"7747:23:30"}],"id":732,"name":"ExpressionStatement","src":"7747:23:30"}],"id":733,"name":"Block","src":"7351:434:30"}],"id":734,"name":"IfStatement","src":"7304:481:30"}],"id":735,"name":"Block","src":"7256:539:30"}],"id":736,"name":"ForStatement","src":"7194:601:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":424,"type":"function (address,address[] memory)","value":"RemovedFromWhitelist"},"id":737,"name":"Identifier","src":"7844:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":738,"name":"Identifier","src":"7865:3:30"}],"id":739,"name":"MemberAccess","src":"7865:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":740,"name":"Identifier","src":"7877:24:30"}],"id":741,"name":"FunctionCall","src":"7844:58:30"}],"id":742,"name":"EmitStatement","src":"7839:63:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":743,"name":"Identifier","src":"7955:24:30"}],"id":744,"name":"UnaryOperation","src":"7948:31:30"}],"id":745,"name":"ExpressionStatement","src":"7948:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":746,"name":"Identifier","src":"8027:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":747,"name":"Literal","src":"8055:5:30"}],"id":748,"name":"Assignment","src":"8027:33:30"}],"id":749,"name":"ExpressionStatement","src":"8027:33:30"}],"id":750,"name":"Block","src":"6781:1286:30"}],"id":751,"name":"FunctionDefinition","src":"6709:1358:30"},{"attributes":{"documentation":"@dev Getter for pending addition array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistAddition","scope":932,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":752,"name":"ParameterList","src":"8154:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":760,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":753,"name":"ElementaryTypeName","src":"8180:7:30"}],"id":754,"name":"ArrayTypeName","src":"8180:9:30"}],"id":755,"name":"VariableDeclaration","src":"8180:16:30"}],"id":756,"name":"ParameterList","src":"8179:18:30"},{"children":[{"attributes":{"functionReturnParameters":756},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":757,"name":"Identifier","src":"8215:25:30"}],"id":758,"name":"Return","src":"8208:32:30"}],"id":759,"name":"Block","src":"8198:49:30"}],"id":760,"name":"FunctionDefinition","src":"8121:126:30"},{"attributes":{"documentation":"@dev Getter for pending removal array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistRemoval","scope":932,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":761,"name":"ParameterList","src":"8332:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":769,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":762,"name":"ElementaryTypeName","src":"8358:7:30"}],"id":763,"name":"ArrayTypeName","src":"8358:9:30"}],"id":764,"name":"VariableDeclaration","src":"8358:16:30"}],"id":765,"name":"ParameterList","src":"8357:18:30"},{"children":[{"attributes":{"functionReturnParameters":765},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":766,"name":"Identifier","src":"8393:24:30"}],"id":767,"name":"Return","src":"8386:31:30"}],"id":768,"name":"Block","src":"8376:48:30"}],"id":769,"name":"FunctionDefinition","src":"8300:124:30"},{"attributes":{"documentation":"@dev Add initial addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"setWhitelist","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":834,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":770,"name":"ElementaryTypeName","src":"8577:7:30"}],"id":771,"name":"ArrayTypeName","src":"8577:9:30"}],"id":772,"name":"VariableDeclaration","src":"8577:29:30"}],"id":773,"name":"ParameterList","src":"8576:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":779,"name":"ParameterList","src":"8669:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":774,"name":"Identifier","src":"8617:15:30"}],"id":775,"name":"ModifierInvocation","src":"8617:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":491,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":776,"name":"Identifier","src":"8633:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":777,"name":"Identifier","src":"8657:10:30"}],"id":778,"name":"ModifierInvocation","src":"8633:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_072b1c10273a06de91a80d81d357e8bd73084529b5cc99d2ec03a7bf6d5fb2b9","typeString":"literal_string \"whitelist initialized\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":780,"name":"Identifier","src":"8743:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":450,"type":"bool","value":"isSetWhitelist"},"id":781,"name":"Identifier","src":"8752:14:30"}],"id":782,"name":"UnaryOperation","src":"8751:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c69737420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist initialized\"","value":"whitelist initialized"},"id":783,"name":"Literal","src":"8768:23:30"}],"id":784,"name":"FunctionCall","src":"8743:49:30"}],"id":785,"name":"ExpressionStatement","src":"8743:49:30"},{"children":[{"attributes":{"assignments":[787]},"children":[{"attributes":{"constant":false,"name":"i","scope":822,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":786,"name":"ElementaryTypeName","src":"8871:7:30"}],"id":787,"name":"VariableDeclaration","src":"8871:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":788,"name":"Literal","src":"8883:1:30"}],"id":789,"name":"VariableDeclarationStatement","src":"8871:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":790,"name":"Identifier","src":"8886:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":791,"name":"Identifier","src":"8890:10:30"}],"id":792,"name":"MemberAccess","src":"8890:17:30"}],"id":793,"name":"BinaryOperation","src":"8886:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":794,"name":"Identifier","src":"8909:1:30"}],"id":795,"name":"UnaryOperation","src":"8909:3:30"}],"id":796,"name":"ExpressionStatement","src":"8909:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":797,"name":"Identifier","src":"8996:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":798,"name":"Identifier","src":"9009:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":799,"name":"Identifier","src":"9020:1:30"}],"id":800,"name":"IndexAccess","src":"9009:13:30"}],"id":801,"name":"IndexAccess","src":"8996:27:30"}],"id":802,"name":"UnaryOperation","src":"8995:28:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":803,"name":"Identifier","src":"9092:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":804,"name":"Identifier","src":"9105:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":805,"name":"Identifier","src":"9116:1:30"}],"id":806,"name":"IndexAccess","src":"9105:13:30"}],"id":807,"name":"IndexAccess","src":"9092:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":808,"name":"Literal","src":"9122:4:30"}],"id":809,"name":"Assignment","src":"9092:34:30"}],"id":810,"name":"ExpressionStatement","src":"9092:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":811,"name":"Identifier","src":"9191:14:30"}],"id":813,"name":"MemberAccess","src":"9191:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":814,"name":"Identifier","src":"9211:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":815,"name":"Identifier","src":"9222:1:30"}],"id":816,"name":"IndexAccess","src":"9211:13:30"}],"id":817,"name":"FunctionCall","src":"9191:34:30"}],"id":818,"name":"ExpressionStatement","src":"9191:34:30"}],"id":819,"name":"Block","src":"9025:215:30"}],"id":820,"name":"IfStatement","src":"8991:249:30"}],"id":821,"name":"Block","src":"8914:336:30"}],"id":822,"name":"ForStatement","src":"8866:384:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":450,"type":"bool","value":"isSetWhitelist"},"id":823,"name":"Identifier","src":"9259:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":824,"name":"Literal","src":"9276:4:30"}],"id":825,"name":"Assignment","src":"9259:21:30"}],"id":826,"name":"ExpressionStatement","src":"9259:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":398,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":827,"name":"Identifier","src":"9331:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":828,"name":"Identifier","src":"9348:3:30"}],"id":829,"name":"MemberAccess","src":"9348:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":830,"name":"Identifier","src":"9360:14:30"}],"id":831,"name":"FunctionCall","src":"9331:44:30"}],"id":832,"name":"EmitStatement","src":"9326:49:30"}],"id":833,"name":"Block","src":"8669:713:30"}],"id":834,"name":"FunctionDefinition","src":"8555:827:30"},{"attributes":{"documentation":"@dev Add addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistAddition","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":876,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":835,"name":"ElementaryTypeName","src":"9538:7:30"}],"id":836,"name":"ArrayTypeName","src":"9538:9:30"}],"id":837,"name":"VariableDeclaration","src":"9538:29:30"}],"id":838,"name":"ParameterList","src":"9537:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":846,"name":"ParameterList","src":"9649:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":839,"name":"Identifier","src":"9578:15:30"}],"id":840,"name":"ModifierInvocation","src":"9578:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"modifier ()","value":"noActiveSubmission"},"id":841,"name":"Identifier","src":"9594:18:30"}],"id":842,"name":"ModifierInvocation","src":"9594:18:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":491,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":843,"name":"Identifier","src":"9613:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":844,"name":"Identifier","src":"9637:10:30"}],"id":845,"name":"ModifierInvocation","src":"9613:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":847,"name":"Identifier","src":"9719:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":450,"type":"bool","value":"isSetWhitelist"},"id":848,"name":"Identifier","src":"9727:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":849,"name":"Literal","src":"9743:27:30"}],"id":850,"name":"FunctionCall","src":"9719:52:30"}],"id":851,"name":"ExpressionStatement","src":"9719:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":852,"name":"Identifier","src":"9834:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":853,"name":"Identifier","src":"9842:10:30"}],"id":854,"name":"MemberAccess","src":"9842:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":855,"name":"Literal","src":"9862:1:30"}],"id":856,"name":"BinaryOperation","src":"9842:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":857,"name":"Literal","src":"9865:17:30"}],"id":858,"name":"FunctionCall","src":"9834:49:30"}],"id":859,"name":"ExpressionStatement","src":"9834:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":860,"name":"Identifier","src":"9966:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":861,"name":"Identifier","src":"9994:10:30"}],"id":862,"name":"Assignment","src":"9966:38:30"}],"id":863,"name":"ExpressionStatement","src":"9966:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":864,"name":"Identifier","src":"10058:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":865,"name":"Literal","src":"10087:4:30"}],"id":866,"name":"Assignment","src":"10058:33:30"}],"id":867,"name":"ExpressionStatement","src":"10058:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":411,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistAddition"},"id":868,"name":"Identifier","src":"10144:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":869,"name":"Identifier","src":"10171:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":870,"name":"Identifier","src":"10183:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":871,"name":"Identifier","src":"10197:10:30"}],"id":872,"name":"FunctionCall","src":"10183:25:30"}],"id":873,"name":"FunctionCall","src":"10144:65:30"}],"id":874,"name":"EmitStatement","src":"10139:70:30"}],"id":875,"name":"Block","src":"9649:567:30"}],"id":876,"name":"FunctionDefinition","src":"9505:711:30"},{"attributes":{"documentation":"@dev Remove addresses from the whitelist.\n @param _addresses are the Ethereum addresses to be removed.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistRemoval","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":915,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":877,"name":"ElementaryTypeName","src":"10372:7:30"}],"id":878,"name":"ArrayTypeName","src":"10372:9:30"}],"id":879,"name":"VariableDeclaration","src":"10372:29:30"}],"id":880,"name":"ParameterList","src":"10371:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":885,"name":"ParameterList","src":"10447:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":881,"name":"Identifier","src":"10412:15:30"}],"id":882,"name":"ModifierInvocation","src":"10412:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"modifier ()","value":"noActiveSubmission"},"id":883,"name":"Identifier","src":"10428:18:30"}],"id":884,"name":"ModifierInvocation","src":"10428:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":886,"name":"Identifier","src":"10517:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":450,"type":"bool","value":"isSetWhitelist"},"id":887,"name":"Identifier","src":"10525:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":888,"name":"Literal","src":"10541:27:30"}],"id":889,"name":"FunctionCall","src":"10517:52:30"}],"id":890,"name":"ExpressionStatement","src":"10517:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":891,"name":"Identifier","src":"10639:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":879,"type":"address[] calldata","value":"_addresses"},"id":892,"name":"Identifier","src":"10647:10:30"}],"id":893,"name":"MemberAccess","src":"10647:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":894,"name":"Literal","src":"10667:1:30"}],"id":895,"name":"BinaryOperation","src":"10647:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":896,"name":"Literal","src":"10670:17:30"}],"id":897,"name":"FunctionCall","src":"10639:49:30"}],"id":898,"name":"ExpressionStatement","src":"10639:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":899,"name":"Identifier","src":"10766:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":879,"type":"address[] calldata","value":"_addresses"},"id":900,"name":"Identifier","src":"10793:10:30"}],"id":901,"name":"Assignment","src":"10766:37:30"}],"id":902,"name":"ExpressionStatement","src":"10766:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":903,"name":"Identifier","src":"10857:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":904,"name":"Literal","src":"10885:4:30"}],"id":905,"name":"Assignment","src":"10857:32:30"}],"id":906,"name":"ExpressionStatement","src":"10857:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":431,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistRemoval"},"id":907,"name":"Identifier","src":"10942:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":879,"type":"address[] calldata","value":"_addresses"},"id":908,"name":"Identifier","src":"10968:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":909,"name":"Identifier","src":"10980:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":879,"type":"address[] calldata","value":"_addresses"},"id":910,"name":"Identifier","src":"10994:10:30"}],"id":911,"name":"FunctionCall","src":"10980:25:30"}],"id":912,"name":"FunctionCall","src":"10942:64:30"}],"id":913,"name":"EmitStatement","src":"10937:69:30"}],"id":914,"name":"Block","src":"10447:566:30"}],"id":915,"name":"FunctionDefinition","src":"10340:673:30"},{"attributes":{"documentation":"@dev Method used to hash our whitelist address arrays.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"calculateHash","scope":932,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":931,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":916,"name":"ElementaryTypeName","src":"11105:7:30"}],"id":917,"name":"ArrayTypeName","src":"11105:9:30"}],"id":918,"name":"VariableDeclaration","src":"11105:27:30"}],"id":919,"name":"ParameterList","src":"11104:29:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":931,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":920,"name":"ElementaryTypeName","src":"11155:7:30"}],"id":921,"name":"VariableDeclaration","src":"11155:7:30"}],"id":922,"name":"ParameterList","src":"11154:9:30"},{"children":[{"attributes":{"functionReturnParameters":922},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":923,"name":"Identifier","src":"11181:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":924,"name":"Identifier","src":"11191:3:30"}],"id":925,"name":"MemberAccess","src":"11191:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":918,"type":"address[] memory","value":"_addresses"},"id":926,"name":"Identifier","src":"11208:10:30"}],"id":927,"name":"FunctionCall","src":"11191:28:30"}],"id":928,"name":"FunctionCall","src":"11181:39:30"}],"id":929,"name":"Return","src":"11174:46:30"}],"id":930,"name":"Block","src":"11164:63:30"}],"id":931,"name":"FunctionDefinition","src":"11082:145:30"}],"id":932,"name":"ContractDefinition","src":"2361:8868:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title DailyLimitTrait This trait allows for daily limits to be included in other contracts.\n This contract will allow for a DailyLimit object to be instantiated and used.","fullyImplemented":true,"linearizedBaseContracts":[1134],"name":"DailyLimitTrait","scope":2510},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":933,"name":"UserDefinedTypeName","src":"11447:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":934,"name":"ElementaryTypeName","src":"11460:7:30"}],"id":935,"name":"UsingForDirective","src":"11441:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":936,"name":"ParameterList","src":"11501:2:30"}],"id":937,"name":"EventDefinition","src":"11474:30:30"},{"attributes":{"canonicalName":"DailyLimitTrait.DailyLimit","name":"DailyLimit","scope":1134,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"value","scope":948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":938,"name":"ElementaryTypeName","src":"11538:7:30"}],"id":939,"name":"VariableDeclaration","src":"11538:13:30"},{"attributes":{"constant":false,"name":"available","scope":948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":940,"name":"ElementaryTypeName","src":"11561:7:30"}],"id":941,"name":"VariableDeclaration","src":"11561:17:30"},{"attributes":{"constant":false,"name":"limitTimestamp","scope":948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":942,"name":"ElementaryTypeName","src":"11588:7:30"}],"id":943,"name":"VariableDeclaration","src":"11588:22:30"},{"attributes":{"constant":false,"name":"pending","scope":948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":944,"name":"ElementaryTypeName","src":"11620:7:30"}],"id":945,"name":"VariableDeclaration","src":"11620:15:30"},{"attributes":{"constant":false,"name":"controllerConfirmationRequired","scope":948,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":946,"name":"ElementaryTypeName","src":"11645:4:30"}],"id":947,"name":"VariableDeclaration","src":"11645:35:30"}],"id":948,"name":"StructDefinition","src":"11510:177:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_confirmLimitUpdate","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":970,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":949,"name":"UserDefinedTypeName","src":"11778:10:30"}],"id":950,"name":"VariableDeclaration","src":"11778:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":970,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":951,"name":"ElementaryTypeName","src":"11803:7:30"}],"id":952,"name":"VariableDeclaration","src":"11803:15:30"}],"id":953,"name":"ParameterList","src":"11777:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":954,"name":"ParameterList","src":"11829:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51a99e4fe0e7ccb76d7b5ddb649e7516f5e27e1195b905cd87f22fbc56fc219b","typeString":"literal_string \"confirmed/submitted limit mismatch\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":955,"name":"Identifier","src":"11910:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":956,"name":"Identifier","src":"11918:4:30"}],"id":957,"name":"MemberAccess","src":"11918:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":952,"type":"uint256","value":"_amount"},"id":958,"name":"Identifier","src":"11934:7:30"}],"id":959,"name":"BinaryOperation","src":"11918:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"confirmed/submitted limit mismatch\"","value":"confirmed/submitted limit mismatch"},"id":960,"name":"Literal","src":"11943:36:30"}],"id":961,"name":"FunctionCall","src":"11910:70:30"}],"id":962,"name":"ExpressionStatement","src":"11910:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$948_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":963,"name":"Identifier","src":"12048:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":964,"name":"Identifier","src":"12061:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":965,"name":"Identifier","src":"12067:4:30"}],"id":966,"name":"MemberAccess","src":"12067:12:30"}],"id":967,"name":"FunctionCall","src":"12048:32:30"}],"id":968,"name":"ExpressionStatement","src":"12048:32:30"}],"id":969,"name":"Block","src":"11829:258:30"}],"id":970,"name":"FunctionDefinition","src":"11749:338:30"},{"attributes":{"documentation":"@dev Use up amount within the daily limit. Will fail if amount is larger than daily limit.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_enforceLimit","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1000,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":971,"name":"UserDefinedTypeName","src":"12215:10:30"}],"id":972,"name":"VariableDeclaration","src":"12215:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1000,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":973,"name":"ElementaryTypeName","src":"12240:7:30"}],"id":974,"name":"VariableDeclaration","src":"12240:15:30"}],"id":975,"name":"ParameterList","src":"12214:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":976,"name":"ParameterList","src":"12266:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$948_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":977,"name":"Identifier","src":"12328:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":972,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":978,"name":"Identifier","src":"12350:4:30"}],"id":979,"name":"FunctionCall","src":"12328:27:30"}],"id":980,"name":"ExpressionStatement","src":"12328:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76fdd6ba40b4885ab45b8708dbc1ff56b4ee0a701903e21ff02ec4fc90e97cfd","typeString":"literal_string \"available=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":972,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":982,"name":"Identifier","src":"12373:4:30"}],"id":983,"name":"MemberAccess","src":"12373:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"uint256","value":"_amount"},"id":984,"name":"Identifier","src":"12391:7:30"}],"id":985,"name":"BinaryOperation","src":"12373:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617661696c61626c653c616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"available","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1007,"name":"Identifier","src":"12751:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":943,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1002,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1008,"name":"Identifier","src":"12757:4:30"}],"id":1009,"name":"MemberAccess","src":"12757:19:30"}],"id":1010,"name":"MemberAccess","src":"12757:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":1011,"name":"Literal","src":"12781:8:30"}],"id":1012,"name":"FunctionCall","src":"12757:33:30"}],"id":1013,"name":"BinaryOperation","src":"12751:39:30"},{"children":[{"attributes":{"functionReturnParameters":1006},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1002,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1014,"name":"Identifier","src":"12813:4:30"}],"id":1015,"name":"MemberAccess","src":"12813:10:30"}],"id":1016,"name":"Return","src":"12806:17:30"}],"id":1017,"name":"Block","src":"12792:42:30"},{"children":[{"attributes":{"functionReturnParameters":1006},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1002,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1018,"name":"Identifier","src":"12861:4:30"}],"id":1019,"name":"MemberAccess","src":"12861:14:30"}],"id":1020,"name":"Return","src":"12854:21:30"}],"id":1021,"name":"Block","src":"12840:46:30"}],"id":1022,"name":"IfStatement","src":"12747:139:30"}],"id":1023,"name":"Block","src":"12737:155:30"}],"id":1024,"name":"FunctionDefinition","src":"12652:240:30"},{"attributes":{"documentation":"@dev Modify the spend limit and spend available based on the provided value.\n @dev _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_modifyLimit","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1056,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1025,"name":"UserDefinedTypeName","src":"13060:10:30"}],"id":1026,"name":"VariableDeclaration","src":"13060:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1056,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1027,"name":"ElementaryTypeName","src":"13085:7:30"}],"id":1028,"name":"VariableDeclaration","src":"13085:15:30"}],"id":1029,"name":"ParameterList","src":"13059:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1030,"name":"ParameterList","src":"13110:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$948_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":1031,"name":"Identifier","src":"13172:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1032,"name":"Identifier","src":"13194:4:30"}],"id":1033,"name":"FunctionCall","src":"13172:27:30"}],"id":1034,"name":"ExpressionStatement","src":"13172:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1035,"name":"Identifier","src":"13264:4:30"}],"id":1037,"name":"MemberAccess","src":"13264:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1028,"type":"uint256","value":"_amount"},"id":1038,"name":"Identifier","src":"13277:7:30"}],"id":1039,"name":"Assignment","src":"13264:20:30"}],"id":1040,"name":"ExpressionStatement","src":"13264:20:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1041,"name":"Identifier","src":"13376:4:30"}],"id":1042,"name":"MemberAccess","src":"13376:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1043,"name":"Identifier","src":"13393:4:30"}],"id":1044,"name":"MemberAccess","src":"13393:10:30"}],"id":1045,"name":"BinaryOperation","src":"13376:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1046,"name":"Identifier","src":"13419:4:30"}],"id":1048,"name":"MemberAccess","src":"13419:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1049,"name":"Identifier","src":"13436:4:30"}],"id":1050,"name":"MemberAccess","src":"13436:10:30"}],"id":1051,"name":"Assignment","src":"13419:27:30"}],"id":1052,"name":"ExpressionStatement","src":"13419:27:30"}],"id":1053,"name":"Block","src":"13405:52:30"}],"id":1054,"name":"IfStatement","src":"13372:85:30"}],"id":1055,"name":"Block","src":"13110:353:30"}],"id":1056,"name":"FunctionDefinition","src":"13038:425:30"},{"attributes":{"documentation":"@dev Set the daily limit.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_setLimit","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1082,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1057,"name":"UserDefinedTypeName","src":"13586:10:30"}],"id":1058,"name":"VariableDeclaration","src":"13586:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1082,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1059,"name":"ElementaryTypeName","src":"13611:7:30"}],"id":1060,"name":"VariableDeclaration","src":"13611:15:30"}],"id":1061,"name":"ParameterList","src":"13585:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1062,"name":"ParameterList","src":"13637:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5515161ef75a198a2c79d5b0927b7d4cad620073ea22f64fc9faac79dbcba501","typeString":"literal_string \"limit already set\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1063,"name":"Identifier","src":"13709:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1058,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1064,"name":"Identifier","src":"13718:4:30"}],"id":1065,"name":"MemberAccess","src":"13718:35:30"}],"id":1066,"name":"UnaryOperation","src":"13717:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d697420616c726561647920736574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit already set\"","value":"limit already set"},"id":1067,"name":"Literal","src":"13755:19:30"}],"id":1068,"name":"FunctionCall","src":"13709:66:30"}],"id":1069,"name":"ExpressionStatement","src":"13709:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$948_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":1070,"name":"Identifier","src":"13844:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1058,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1071,"name":"Identifier","src":"13857:4:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1060,"type":"uint256","value":"_amount"},"id":1072,"name":"Identifier","src":"13863:7:30"}],"id":1073,"name":"FunctionCall","src":"13844:27:30"}],"id":1074,"name":"ExpressionStatement","src":"13844:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1058,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1075,"name":"Identifier","src":"13919:4:30"}],"id":1077,"name":"MemberAccess","src":"13919:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1078,"name":"Literal","src":"13957:4:30"}],"id":1079,"name":"Assignment","src":"13919:42:30"}],"id":1080,"name":"ExpressionStatement","src":"13919:42:30"}],"id":1081,"name":"Block","src":"13637:331:30"}],"id":1082,"name":"FunctionDefinition","src":"13567:401:30"},{"attributes":{"documentation":"@dev Submit a daily limit update, needs to be confirmed.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_submitLimitUpdate","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1102,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1083,"name":"UserDefinedTypeName","src":"14131:10:30"}],"id":1084,"name":"VariableDeclaration","src":"14131:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1102,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1085,"name":"ElementaryTypeName","src":"14156:7:30"}],"id":1086,"name":"VariableDeclaration","src":"14156:15:30"}],"id":1087,"name":"ParameterList","src":"14130:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1088,"name":"ParameterList","src":"14182:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d667d750d47924f17f0479d6107ac25f4e8879366a2d600f6b5ea07705c561f3","typeString":"literal_string \"limit hasn't been set yet\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1089,"name":"Identifier","src":"14246:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1084,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1090,"name":"Identifier","src":"14254:4:30"}],"id":1091,"name":"MemberAccess","src":"14254:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d6974206861736e2774206265656e2073657420796574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit hasn't been set yet\"","value":"limit hasn't been set yet"},"id":1092,"name":"Literal","src":"14291:27:30"}],"id":1093,"name":"FunctionCall","src":"14246:73:30"}],"id":1094,"name":"ExpressionStatement","src":"14246:73:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1084,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1095,"name":"Identifier","src":"14391:4:30"}],"id":1097,"name":"MemberAccess","src":"14391:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1086,"type":"uint256","value":"_amount"},"id":1098,"name":"Identifier","src":"14406:7:30"}],"id":1099,"name":"Assignment","src":"14391:22:30"}],"id":1100,"name":"ExpressionStatement","src":"14391:22:30"}],"id":1101,"name":"Block","src":"14182:238:30"}],"id":1102,"name":"FunctionDefinition","src":"14103:317:30"},{"attributes":{"documentation":"@dev Update available spend limit based on the daily reset.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateAvailableLimit","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1133,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1103,"name":"UserDefinedTypeName","src":"14525:10:30"}],"id":1104,"name":"VariableDeclaration","src":"14525:23:30"}],"id":1105,"name":"ParameterList","src":"14524:25:30"},{"attributes":{"parameters":[null]},"children":[],"id":1106,"name":"ParameterList","src":"14558:0:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1107,"name":"Identifier","src":"14572:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":943,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1104,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1108,"name":"Identifier","src":"14578:4:30"}],"id":1109,"name":"MemberAccess","src":"14578:19:30"}],"id":1110,"name":"MemberAccess","src":"14578:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":1111,"name":"Literal","src":"14602:8:30"}],"id":1112,"name":"FunctionCall","src":"14578:33:30"}],"id":1113,"name":"BinaryOperation","src":"14572:39:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"limitTimestamp","referencedDeclaration":943,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1104,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1114,"name":"Identifier","src":"14672:4:30"}],"id":1116,"name":"MemberAccess","src":"14672:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1117,"name":"Identifier","src":"14694:3:30"}],"id":1118,"name":"Assignment","src":"14672:25:30"}],"id":1119,"name":"ExpressionStatement","src":"14672:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1104,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1120,"name":"Identifier","src":"14778:4:30"}],"id":1122,"name":"MemberAccess","src":"14778:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1104,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1123,"name":"Identifier","src":"14795:4:30"}],"id":1124,"name":"MemberAccess","src":"14795:10:30"}],"id":1125,"name":"Assignment","src":"14778:27:30"}],"id":1126,"name":"ExpressionStatement","src":"14778:27:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":937,"type":"function ()","value":"UpdatedAvailableLimit"},"id":1127,"name":"Identifier","src":"14824:21:30"}],"id":1128,"name":"FunctionCall","src":"14824:23:30"}],"id":1129,"name":"EmitStatement","src":"14819:28:30"}],"id":1130,"name":"Block","src":"14613:245:30"}],"id":1131,"name":"IfStatement","src":"14568:290:30"}],"id":1132,"name":"Block","src":"14558:306:30"}],"id":1133,"name":"FunctionDefinition","src":"14494:370:30"}],"id":1134,"name":"ContractDefinition","src":"11411:3455:30"},{"attributes":{"contractDependencies":[325,362,384,3206,3910],"contractKind":"contract","documentation":"@title it provides daily spend limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1266,384,362,3910,325,3206],"name":"SpendLimit","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":362,"type":"contract ControllableOwnable"},"id":1135,"name":"UserDefinedTypeName","src":"14949:19:30"}],"id":1136,"name":"InheritanceSpecifier","src":"14949:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":384,"type":"contract SelfCallableOwnable"},"id":1137,"name":"UserDefinedTypeName","src":"14970:19:30"}],"id":1138,"name":"InheritanceSpecifier","src":"14970:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetSpendLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1144,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1139,"name":"ElementaryTypeName","src":"15016:7:30"}],"id":1140,"name":"VariableDeclaration","src":"15016:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1141,"name":"ElementaryTypeName","src":"15033:7:30"}],"id":1142,"name":"VariableDeclaration","src":"15033:15:30"}],"id":1143,"name":"ParameterList","src":"15015:34:30"}],"id":1144,"name":"EventDefinition","src":"14996:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedSpendLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1148,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1145,"name":"ElementaryTypeName","src":"15087:7:30"}],"id":1146,"name":"VariableDeclaration","src":"15087:15:30"}],"id":1147,"name":"ParameterList","src":"15086:17:30"}],"id":1148,"name":"EventDefinition","src":"15055:49:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1134,"type":"library DailyLimitTrait"},"id":1149,"name":"UserDefinedTypeName","src":"15116:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1150,"name":"UserDefinedTypeName","src":"15136:26:30"}],"id":1151,"name":"UsingForDirective","src":"15110:53:30"},{"attributes":{"constant":false,"name":"_spendLimit","scope":1266,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1152,"name":"UserDefinedTypeName","src":"15169:26:30"}],"id":1153,"name":"VariableDeclaration","src":"15169:47:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily spend limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1266,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_limit_","scope":1170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1154,"name":"ElementaryTypeName","src":"15302:7:30"}],"id":1155,"name":"VariableDeclaration","src":"15302:15:30"}],"id":1156,"name":"ParameterList","src":"15301:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1157,"name":"ParameterList","src":"15328:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1158,"name":"Identifier","src":"15338:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":948,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1159,"name":"Identifier","src":"15352:15:30"}],"id":1160,"name":"MemberAccess","src":"15352:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1155,"type":"uint256","value":"_limit_"},"id":1161,"name":"Identifier","src":"15379:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1155,"type":"uint256","value":"_limit_"},"id":1162,"name":"Identifier","src":"15388:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1163,"name":"Identifier","src":"15397:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1164,"name":"Literal","src":"15402:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1165,"name":"Literal","src":"15405:5:30"}],"id":1166,"name":"FunctionCall","src":"15352:59:30"}],"id":1167,"name":"Assignment","src":"15338:73:30"}],"id":1168,"name":"ExpressionStatement","src":"15338:73:30"}],"id":1169,"name":"Block","src":"15328:90:30"}],"id":1170,"name":"FunctionDefinition","src":"15290:128:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmSpendLimitUpdate","scope":1266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1190,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1171,"name":"ElementaryTypeName","src":"15513:7:30"}],"id":1172,"name":"VariableDeclaration","src":"15513:15:30"}],"id":1173,"name":"ParameterList","src":"15512:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1176,"name":"ParameterList","src":"15554:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":1174,"name":"Identifier","src":"15539:14:30"}],"id":1175,"name":"ModifierInvocation","src":"15539:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":970,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1177,"name":"Identifier","src":"15564:11:30"}],"id":1179,"name":"MemberAccess","src":"15564:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1172,"type":"uint256","value":"_amount"},"id":1180,"name":"Identifier","src":"15596:7:30"}],"id":1181,"name":"FunctionCall","src":"15564:40:30"}],"id":1182,"name":"ExpressionStatement","src":"15564:40:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1144,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":1183,"name":"Identifier","src":"15619:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1184,"name":"Identifier","src":"15633:3:30"}],"id":1185,"name":"MemberAccess","src":"15633:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1172,"type":"uint256","value":"_amount"},"id":1186,"name":"Identifier","src":"15645:7:30"}],"id":1187,"name":"FunctionCall","src":"15619:34:30"}],"id":1188,"name":"EmitStatement","src":"15614:39:30"}],"id":1189,"name":"Block","src":"15554:106:30"}],"id":1190,"name":"FunctionDefinition","src":"15480:180:30"},{"attributes":{"documentation":"@dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setSpendLimit","scope":1266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1191,"name":"ElementaryTypeName","src":"15840:7:30"}],"id":1192,"name":"VariableDeclaration","src":"15840:15:30"}],"id":1193,"name":"ParameterList","src":"15839:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1196,"name":"ParameterList","src":"15882:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1194,"name":"Identifier","src":"15866:15:30"}],"id":1195,"name":"ModifierInvocation","src":"15866:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1082,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1197,"name":"Identifier","src":"15892:11:30"}],"id":1199,"name":"MemberAccess","src":"15892:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1192,"type":"uint256","value":"_amount"},"id":1200,"name":"Identifier","src":"15914:7:30"}],"id":1201,"name":"FunctionCall","src":"15892:30:30"}],"id":1202,"name":"ExpressionStatement","src":"15892:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1144,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":1203,"name":"Identifier","src":"15937:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1204,"name":"Identifier","src":"15951:3:30"}],"id":1205,"name":"MemberAccess","src":"15951:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1192,"type":"uint256","value":"_amount"},"id":1206,"name":"Identifier","src":"15963:7:30"}],"id":1207,"name":"FunctionCall","src":"15937:34:30"}],"id":1208,"name":"EmitStatement","src":"15932:39:30"}],"id":1209,"name":"Block","src":"15882:96:30"}],"id":1210,"name":"FunctionDefinition","src":"15817:161:30"},{"attributes":{"documentation":"@dev View your available limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitAvailable","scope":1266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1211,"name":"ParameterList","src":"16051:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1220,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1212,"name":"ElementaryTypeName","src":"16077:7:30"}],"id":1213,"name":"VariableDeclaration","src":"16077:7:30"}],"id":1214,"name":"ParameterList","src":"16076:9:30"},{"children":[{"attributes":{"functionReturnParameters":1214},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1024,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1215,"name":"Identifier","src":"16103:11:30"}],"id":1216,"name":"MemberAccess","src":"16103:30:30"}],"id":1217,"name":"FunctionCall","src":"16103:32:30"}],"id":1218,"name":"Return","src":"16096:39:30"}],"id":1219,"name":"Block","src":"16086:56:30"}],"id":1220,"name":"FunctionDefinition","src":"16023:119:30"},{"attributes":{"documentation":"@dev Is there an active spend limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitPending","scope":1266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1221,"name":"ParameterList","src":"16225:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1222,"name":"ElementaryTypeName","src":"16251:7:30"}],"id":1223,"name":"VariableDeclaration","src":"16251:7:30"}],"id":1224,"name":"ParameterList","src":"16250:9:30"},{"children":[{"attributes":{"functionReturnParameters":1224},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1225,"name":"Identifier","src":"16277:11:30"}],"id":1226,"name":"MemberAccess","src":"16277:19:30"}],"id":1227,"name":"Return","src":"16270:26:30"}],"id":1228,"name":"Block","src":"16260:43:30"}],"id":1229,"name":"FunctionDefinition","src":"16199:104:30"},{"attributes":{"documentation":"@dev Has the spend limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitControllerConfirmationRequired","scope":1266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1230,"name":"ParameterList","src":"16408:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1238,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1231,"name":"ElementaryTypeName","src":"16434:4:30"}],"id":1232,"name":"VariableDeclaration","src":"16434:4:30"}],"id":1233,"name":"ParameterList","src":"16433:6:30"},{"children":[{"attributes":{"functionReturnParameters":1233},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1234,"name":"Identifier","src":"16457:11:30"}],"id":1235,"name":"MemberAccess","src":"16457:42:30"}],"id":1236,"name":"Return","src":"16450:49:30"}],"id":1237,"name":"Block","src":"16440:66:30"}],"id":1238,"name":"FunctionDefinition","src":"16359:147:30"},{"attributes":{"documentation":"@dev View how much has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitValue","scope":1266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1239,"name":"ParameterList","src":"16586:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1247,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1240,"name":"ElementaryTypeName","src":"16612:7:30"}],"id":1241,"name":"VariableDeclaration","src":"16612:7:30"}],"id":1242,"name":"ParameterList","src":"16611:9:30"},{"children":[{"attributes":{"functionReturnParameters":1242},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1243,"name":"Identifier","src":"16638:11:30"}],"id":1244,"name":"MemberAccess","src":"16638:17:30"}],"id":1245,"name":"Return","src":"16631:24:30"}],"id":1246,"name":"Block","src":"16621:41:30"}],"id":1247,"name":"FunctionDefinition","src":"16562:100:30"},{"attributes":{"documentation":"@dev Submit a daily transfer limit update for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitSpendLimitUpdate","scope":1266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1265,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1248,"name":"ElementaryTypeName","src":"16838:7:30"}],"id":1249,"name":"VariableDeclaration","src":"16838:15:30"}],"id":1250,"name":"ParameterList","src":"16837:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1253,"name":"ParameterList","src":"16880:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1251,"name":"Identifier","src":"16864:15:30"}],"id":1252,"name":"ModifierInvocation","src":"16864:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1102,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1254,"name":"Identifier","src":"16890:11:30"}],"id":1256,"name":"MemberAccess","src":"16890:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1249,"type":"uint256","value":"_amount"},"id":1257,"name":"Identifier","src":"16921:7:30"}],"id":1258,"name":"FunctionCall","src":"16890:39:30"}],"id":1259,"name":"ExpressionStatement","src":"16890:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"function (uint256)","value":"SubmittedSpendLimitUpdate"},"id":1260,"name":"Identifier","src":"16944:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1249,"type":"uint256","value":"_amount"},"id":1261,"name":"Identifier","src":"16970:7:30"}],"id":1262,"name":"FunctionCall","src":"16944:34:30"}],"id":1263,"name":"EmitStatement","src":"16939:39:30"}],"id":1264,"name":"Block","src":"16880:105:30"}],"id":1265,"name":"FunctionDefinition","src":"16806:179:30"}],"id":1266,"name":"ContractDefinition","src":"14926:2061:30"},{"attributes":{"contractDependencies":[325,362,384,3206,3910],"contractKind":"contract","documentation":"@title GasTopUpLimit provides daily limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1424,384,362,3910,325,3206],"name":"GasTopUpLimit","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":362,"type":"contract ControllableOwnable"},"id":1267,"name":"UserDefinedTypeName","src":"17077:19:30"}],"id":1268,"name":"InheritanceSpecifier","src":"17077:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":384,"type":"contract SelfCallableOwnable"},"id":1269,"name":"UserDefinedTypeName","src":"17098:19:30"}],"id":1270,"name":"InheritanceSpecifier","src":"17098:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetGasTopUpLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1276,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1271,"name":"ElementaryTypeName","src":"17147:7:30"}],"id":1272,"name":"VariableDeclaration","src":"17147:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1276,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1273,"name":"ElementaryTypeName","src":"17164:7:30"}],"id":1274,"name":"VariableDeclaration","src":"17164:15:30"}],"id":1275,"name":"ParameterList","src":"17146:34:30"}],"id":1276,"name":"EventDefinition","src":"17124:57:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedGasTopUpLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1277,"name":"ElementaryTypeName","src":"17221:7:30"}],"id":1278,"name":"VariableDeclaration","src":"17221:15:30"}],"id":1279,"name":"ParameterList","src":"17220:17:30"}],"id":1280,"name":"EventDefinition","src":"17186:52:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_GAS_TOPUP_LIMIT","scope":1424,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1281,"name":"ElementaryTypeName","src":"17244:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"353030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 500000000000000000","value":"500"},"id":1282,"name":"Literal","src":"17296:10:30"}],"id":1283,"name":"VariableDeclaration","src":"17244:62:30"},{"attributes":{"constant":true,"name":"_MINIMUM_GAS_TOPUP_LIMIT","scope":1424,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1284,"name":"ElementaryTypeName","src":"17312:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 1000000000000000","value":"1"},"id":1285,"name":"Literal","src":"17364:8:30"}],"id":1286,"name":"VariableDeclaration","src":"17312:60:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1134,"type":"library DailyLimitTrait"},"id":1287,"name":"UserDefinedTypeName","src":"17385:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1288,"name":"UserDefinedTypeName","src":"17405:26:30"}],"id":1289,"name":"UsingForDirective","src":"17379:53:30"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":1424,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1290,"name":"UserDefinedTypeName","src":"17438:26:30"}],"id":1291,"name":"VariableDeclaration","src":"17438:50:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily gas topup limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1424,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1292,"name":"ParameterList","src":"17577:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1293,"name":"ParameterList","src":"17589:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1294,"name":"Identifier","src":"17599:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":948,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1295,"name":"Identifier","src":"17616:15:30"}],"id":1296,"name":"MemberAccess","src":"17616:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1283,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1297,"name":"Identifier","src":"17643:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1283,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1298,"name":"Identifier","src":"17669:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1299,"name":"Identifier","src":"17695:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1300,"name":"Literal","src":"17700:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1301,"name":"Literal","src":"17703:5:30"}],"id":1302,"name":"FunctionCall","src":"17616:93:30"}],"id":1303,"name":"Assignment","src":"17599:110:30"}],"id":1304,"name":"ExpressionStatement","src":"17599:110:30"}],"id":1305,"name":"Block","src":"17589:127:30"}],"id":1306,"name":"FunctionDefinition","src":"17566:150:30"},{"attributes":{"documentation":"@dev Confirm pending set top up gas limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmGasTopUpLimitUpdate","scope":1424,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1326,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1307,"name":"ElementaryTypeName","src":"17819:7:30"}],"id":1308,"name":"VariableDeclaration","src":"17819:15:30"}],"id":1309,"name":"ParameterList","src":"17818:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1312,"name":"ParameterList","src":"17860:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":1310,"name":"Identifier","src":"17845:14:30"}],"id":1311,"name":"ModifierInvocation","src":"17845:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":970,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1313,"name":"Identifier","src":"17870:14:30"}],"id":1315,"name":"MemberAccess","src":"17870:34:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1308,"type":"uint256","value":"_amount"},"id":1316,"name":"Identifier","src":"17905:7:30"}],"id":1317,"name":"FunctionCall","src":"17870:43:30"}],"id":1318,"name":"ExpressionStatement","src":"17870:43:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1276,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1319,"name":"Identifier","src":"17928:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1320,"name":"Identifier","src":"17945:3:30"}],"id":1321,"name":"MemberAccess","src":"17945:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1308,"type":"uint256","value":"_amount"},"id":1322,"name":"Identifier","src":"17957:7:30"}],"id":1323,"name":"FunctionCall","src":"17928:37:30"}],"id":1324,"name":"EmitStatement","src":"17923:42:30"}],"id":1325,"name":"Block","src":"17860:112:30"}],"id":1326,"name":"FunctionDefinition","src":"17783:189:30"},{"attributes":{"documentation":"@dev View your available gas top-up limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitAvailable","scope":1424,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1327,"name":"ParameterList","src":"18059:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1336,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1328,"name":"ElementaryTypeName","src":"18085:7:30"}],"id":1329,"name":"VariableDeclaration","src":"18085:7:30"}],"id":1330,"name":"ParameterList","src":"18084:9:30"},{"children":[{"attributes":{"functionReturnParameters":1330},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1024,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1331,"name":"Identifier","src":"18111:14:30"}],"id":1332,"name":"MemberAccess","src":"18111:33:30"}],"id":1333,"name":"FunctionCall","src":"18111:35:30"}],"id":1334,"name":"Return","src":"18104:42:30"}],"id":1335,"name":"Block","src":"18094:59:30"}],"id":1336,"name":"FunctionDefinition","src":"18028:125:30"},{"attributes":{"documentation":"@dev Is there an active gas top-up limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitPending","scope":1424,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1337,"name":"ParameterList","src":"18244:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1338,"name":"ElementaryTypeName","src":"18270:7:30"}],"id":1339,"name":"VariableDeclaration","src":"18270:7:30"}],"id":1340,"name":"ParameterList","src":"18269:9:30"},{"children":[{"attributes":{"functionReturnParameters":1340},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1341,"name":"Identifier","src":"18296:14:30"}],"id":1342,"name":"MemberAccess","src":"18296:22:30"}],"id":1343,"name":"Return","src":"18289:29:30"}],"id":1344,"name":"Block","src":"18279:46:30"}],"id":1345,"name":"FunctionDefinition","src":"18215:110:30"},{"attributes":{"documentation":"@dev Has the gas top-up limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitControllerConfirmationRequired","scope":1424,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1346,"name":"ParameterList","src":"18438:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1354,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1347,"name":"ElementaryTypeName","src":"18464:4:30"}],"id":1348,"name":"VariableDeclaration","src":"18464:4:30"}],"id":1349,"name":"ParameterList","src":"18463:6:30"},{"children":[{"attributes":{"functionReturnParameters":1349},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1350,"name":"Identifier","src":"18487:14:30"}],"id":1351,"name":"MemberAccess","src":"18487:45:30"}],"id":1352,"name":"Return","src":"18480:52:30"}],"id":1353,"name":"Block","src":"18470:69:30"}],"id":1354,"name":"FunctionDefinition","src":"18386:153:30"},{"attributes":{"documentation":"@dev View how much gas top-up has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitValue","scope":1424,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1355,"name":"ParameterList","src":"18633:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1363,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1356,"name":"ElementaryTypeName","src":"18659:7:30"}],"id":1357,"name":"VariableDeclaration","src":"18659:7:30"}],"id":1358,"name":"ParameterList","src":"18658:9:30"},{"children":[{"attributes":{"functionReturnParameters":1358},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1359,"name":"Identifier","src":"18685:14:30"}],"id":1360,"name":"MemberAccess","src":"18685:20:30"}],"id":1361,"name":"Return","src":"18678:27:30"}],"id":1362,"name":"Block","src":"18668:44:30"}],"id":1363,"name":"FunctionDefinition","src":"18606:106:30"},{"attributes":{"documentation":"@dev Sets the daily gas top up limit.\n @param _amount is the gas top up amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setGasTopUpLimit","scope":1424,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1394,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1364,"name":"ElementaryTypeName","src":"18846:7:30"}],"id":1365,"name":"VariableDeclaration","src":"18846:15:30"}],"id":1366,"name":"ParameterList","src":"18845:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1369,"name":"ParameterList","src":"18888:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1367,"name":"Identifier","src":"18872:15:30"}],"id":1368,"name":"ModifierInvocation","src":"18872:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1370,"name":"Identifier","src":"18898:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1286,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1371,"name":"Identifier","src":"18906:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"uint256","value":"_amount"},"id":1372,"name":"Identifier","src":"18934:7:30"}],"id":1373,"name":"BinaryOperation","src":"18906:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"uint256","value":"_amount"},"id":1374,"name":"Identifier","src":"18945:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1283,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1375,"name":"Identifier","src":"18956:24:30"}],"id":1376,"name":"BinaryOperation","src":"18945:35:30"}],"id":1377,"name":"BinaryOperation","src":"18906:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1378,"name":"Literal","src":"18982:21:30"}],"id":1379,"name":"FunctionCall","src":"18898:106:30"}],"id":1380,"name":"ExpressionStatement","src":"18898:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1082,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1381,"name":"Identifier","src":"19014:14:30"}],"id":1383,"name":"MemberAccess","src":"19014:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"uint256","value":"_amount"},"id":1384,"name":"Identifier","src":"19039:7:30"}],"id":1385,"name":"FunctionCall","src":"19014:33:30"}],"id":1386,"name":"ExpressionStatement","src":"19014:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1276,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1387,"name":"Identifier","src":"19062:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1388,"name":"Identifier","src":"19079:3:30"}],"id":1389,"name":"MemberAccess","src":"19079:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"uint256","value":"_amount"},"id":1390,"name":"Identifier","src":"19091:7:30"}],"id":1391,"name":"FunctionCall","src":"19062:37:30"}],"id":1392,"name":"EmitStatement","src":"19057:42:30"}],"id":1393,"name":"Block","src":"18888:218:30"}],"id":1394,"name":"FunctionDefinition","src":"18820:286:30"},{"attributes":{"documentation":"@dev Submit a daily gas top up limit update.\n @param _amount is the daily top up gas limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitGasTopUpLimitUpdate","scope":1424,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1423,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1395,"name":"ElementaryTypeName","src":"19268:7:30"}],"id":1396,"name":"VariableDeclaration","src":"19268:15:30"}],"id":1397,"name":"ParameterList","src":"19267:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1400,"name":"ParameterList","src":"19310:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1398,"name":"Identifier","src":"19294:15:30"}],"id":1399,"name":"ModifierInvocation","src":"19294:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1401,"name":"Identifier","src":"19320:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1286,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1402,"name":"Identifier","src":"19328:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1396,"type":"uint256","value":"_amount"},"id":1403,"name":"Identifier","src":"19356:7:30"}],"id":1404,"name":"BinaryOperation","src":"19328:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1396,"type":"uint256","value":"_amount"},"id":1405,"name":"Identifier","src":"19367:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1283,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1406,"name":"Identifier","src":"19378:24:30"}],"id":1407,"name":"BinaryOperation","src":"19367:35:30"}],"id":1408,"name":"BinaryOperation","src":"19328:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1409,"name":"Literal","src":"19404:21:30"}],"id":1410,"name":"FunctionCall","src":"19320:106:30"}],"id":1411,"name":"ExpressionStatement","src":"19320:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1102,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1412,"name":"Identifier","src":"19436:14:30"}],"id":1414,"name":"MemberAccess","src":"19436:33:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1396,"type":"uint256","value":"_amount"},"id":1415,"name":"Identifier","src":"19470:7:30"}],"id":1416,"name":"FunctionCall","src":"19436:42:30"}],"id":1417,"name":"ExpressionStatement","src":"19436:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"function (uint256)","value":"SubmittedGasTopUpLimitUpdate"},"id":1418,"name":"Identifier","src":"19493:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1396,"type":"uint256","value":"_amount"},"id":1419,"name":"Identifier","src":"19522:7:30"}],"id":1420,"name":"FunctionCall","src":"19493:37:30"}],"id":1421,"name":"EmitStatement","src":"19488:42:30"}],"id":1422,"name":"Block","src":"19310:227:30"}],"id":1423,"name":"FunctionDefinition","src":"19233:304:30"}],"id":1424,"name":"ContractDefinition","src":"17051:2488:30"},{"attributes":{"contractDependencies":[325,362,384,3206,3910,4127],"contractKind":"contract","documentation":"@title LoadLimit provides daily load limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1598,4127,384,362,3910,325,3206],"name":"LoadLimit","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":362,"type":"contract ControllableOwnable"},"id":1425,"name":"UserDefinedTypeName","src":"19626:19:30"}],"id":1426,"name":"InheritanceSpecifier","src":"19626:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":384,"type":"contract SelfCallableOwnable"},"id":1427,"name":"UserDefinedTypeName","src":"19647:19:30"}],"id":1428,"name":"InheritanceSpecifier","src":"19647:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":4127,"type":"contract TokenWhitelistable"},"id":1429,"name":"UserDefinedTypeName","src":"19668:18:30"}],"id":1430,"name":"InheritanceSpecifier","src":"19668:18:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetLoadLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1436,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1431,"name":"ElementaryTypeName","src":"19712:7:30"}],"id":1432,"name":"VariableDeclaration","src":"19712:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1436,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1433,"name":"ElementaryTypeName","src":"19729:7:30"}],"id":1434,"name":"VariableDeclaration","src":"19729:15:30"}],"id":1435,"name":"ParameterList","src":"19711:34:30"}],"id":1436,"name":"EventDefinition","src":"19693:53:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedLoadLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1440,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1437,"name":"ElementaryTypeName","src":"19782:7:30"}],"id":1438,"name":"VariableDeclaration","src":"19782:15:30"}],"id":1439,"name":"ParameterList","src":"19781:17:30"}],"id":1440,"name":"EventDefinition","src":"19751:48:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_STABLECOIN_LOAD_LIMIT","scope":1598,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1441,"name":"ElementaryTypeName","src":"19805:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000","value":"10000"},"id":1442,"name":"Literal","src":"19863:5:30"}],"id":1443,"name":"VariableDeclaration","src":"19805:63:30"},{"attributes":{"constant":false,"name":"_maximumLoadLimit","scope":1598,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1444,"name":"ElementaryTypeName","src":"19881:7:30"}],"id":1445,"name":"VariableDeclaration","src":"19881:33:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1134,"type":"library DailyLimitTrait"},"id":1446,"name":"UserDefinedTypeName","src":"19927:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1447,"name":"UserDefinedTypeName","src":"19947:26:30"}],"id":1448,"name":"UsingForDirective","src":"19921:53:30"},{"attributes":{"constant":false,"name":"_loadLimit","scope":1598,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1449,"name":"UserDefinedTypeName","src":"19980:26:30"}],"id":1450,"name":"VariableDeclaration","src":"19980:46:30"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1598,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1488,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1451,"name":"ElementaryTypeName","src":"20045:7:30"}],"id":1452,"name":"VariableDeclaration","src":"20045:28:30"}],"id":1453,"name":"ParameterList","src":"20044:30:30"},{"attributes":{"parameters":[null]},"children":[],"id":1457,"name":"ParameterList","src":"20125:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4127,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":1454,"name":"Identifier","src":"20084:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1452,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1455,"name":"Identifier","src":"20103:20:30"}],"id":1456,"name":"ModifierInvocation","src":"20084:40:30"},{"children":[{"attributes":{"assignments":[null,1459,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1487,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1458,"name":"ElementaryTypeName","src":"20138:7:30"}],"id":1459,"name":"VariableDeclaration","src":"20138:27:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1460,"name":"Identifier","src":"20179:18:30"}],"id":1461,"name":"FunctionCall","src":"20179:20:30"}],"id":1462,"name":"VariableDeclarationStatement","src":"20135:64:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e91ed084014006e202586b158c3035ec40db0f637c146d3fdad49cda6c7a17a","typeString":"literal_string \"no stablecoin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1463,"name":"Identifier","src":"20209:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1459,"type":"uint256","value":"stablecoinMagnitude"},"id":1464,"name":"Identifier","src":"20217:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1465,"name":"Literal","src":"20239:1:30"}],"id":1466,"name":"BinaryOperation","src":"20217:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20737461626c65636f696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no stablecoin\"","value":"no stablecoin"},"id":1467,"name":"Literal","src":"20242:15:30"}],"id":1468,"name":"FunctionCall","src":"20209:49:30"}],"id":1469,"name":"ExpressionStatement","src":"20209:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1470,"name":"Identifier","src":"20268:17:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1443,"type":"uint256","value":"_MAXIMUM_STABLECOIN_LOAD_LIMIT"},"id":1471,"name":"Identifier","src":"20288:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1459,"type":"uint256","value":"stablecoinMagnitude"},"id":1472,"name":"Identifier","src":"20321:19:30"}],"id":1473,"name":"BinaryOperation","src":"20288:52:30"}],"id":1474,"name":"Assignment","src":"20268:72:30"}],"id":1475,"name":"ExpressionStatement","src":"20268:72:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1476,"name":"Identifier","src":"20350:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":948,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1477,"name":"Identifier","src":"20363:15:30"}],"id":1478,"name":"MemberAccess","src":"20363:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1479,"name":"Identifier","src":"20390:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1480,"name":"Identifier","src":"20409:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1481,"name":"Identifier","src":"20428:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1482,"name":"Literal","src":"20433:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1483,"name":"Literal","src":"20436:5:30"}],"id":1484,"name":"FunctionCall","src":"20363:79:30"}],"id":1485,"name":"Assignment","src":"20350:92:30"}],"id":1486,"name":"ExpressionStatement","src":"20350:92:30"}],"id":1487,"name":"Block","src":"20125:324:30"}],"id":1488,"name":"FunctionDefinition","src":"20033:416:30"},{"attributes":{"documentation":"@dev Sets a daily card load limit.\n @param _amount is the card load amount in current stablecoin base units.","implemented":true,"isConstructor":false,"kind":"function","name":"setLoadLimit","scope":1598,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1515,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1489,"name":"ElementaryTypeName","src":"20601:7:30"}],"id":1490,"name":"VariableDeclaration","src":"20601:15:30"}],"id":1491,"name":"ParameterList","src":"20600:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1494,"name":"ParameterList","src":"20643:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1492,"name":"Identifier","src":"20627:15:30"}],"id":1493,"name":"ModifierInvocation","src":"20627:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1495,"name":"Identifier","src":"20653:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1490,"type":"uint256","value":"_amount"},"id":1496,"name":"Identifier","src":"20661:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1497,"name":"Identifier","src":"20672:17:30"}],"id":1498,"name":"BinaryOperation","src":"20661:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1499,"name":"Literal","src":"20691:26:30"}],"id":1500,"name":"FunctionCall","src":"20653:65:30"}],"id":1501,"name":"ExpressionStatement","src":"20653:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1082,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1502,"name":"Identifier","src":"20728:10:30"}],"id":1504,"name":"MemberAccess","src":"20728:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1490,"type":"uint256","value":"_amount"},"id":1505,"name":"Identifier","src":"20749:7:30"}],"id":1506,"name":"FunctionCall","src":"20728:29:30"}],"id":1507,"name":"ExpressionStatement","src":"20728:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1436,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1508,"name":"Identifier","src":"20772:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1509,"name":"Identifier","src":"20785:3:30"}],"id":1510,"name":"MemberAccess","src":"20785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1490,"type":"uint256","value":"_amount"},"id":1511,"name":"Identifier","src":"20797:7:30"}],"id":1512,"name":"FunctionCall","src":"20772:33:30"}],"id":1513,"name":"EmitStatement","src":"20767:38:30"}],"id":1514,"name":"Block","src":"20643:169:30"}],"id":1515,"name":"FunctionDefinition","src":"20579:233:30"},{"attributes":{"documentation":"@dev Submit a daily load limit update.\n @param _amount is the daily load limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitLoadLimitUpdate","scope":1598,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1516,"name":"ElementaryTypeName","src":"20958:7:30"}],"id":1517,"name":"VariableDeclaration","src":"20958:15:30"}],"id":1518,"name":"ParameterList","src":"20957:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1521,"name":"ParameterList","src":"21000:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1519,"name":"Identifier","src":"20984:15:30"}],"id":1520,"name":"ModifierInvocation","src":"20984:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1522,"name":"Identifier","src":"21010:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1517,"type":"uint256","value":"_amount"},"id":1523,"name":"Identifier","src":"21018:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1524,"name":"Identifier","src":"21029:17:30"}],"id":1525,"name":"BinaryOperation","src":"21018:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1526,"name":"Literal","src":"21048:26:30"}],"id":1527,"name":"FunctionCall","src":"21010:65:30"}],"id":1528,"name":"ExpressionStatement","src":"21010:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1102,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1529,"name":"Identifier","src":"21085:10:30"}],"id":1531,"name":"MemberAccess","src":"21085:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1517,"type":"uint256","value":"_amount"},"id":1532,"name":"Identifier","src":"21115:7:30"}],"id":1533,"name":"FunctionCall","src":"21085:38:30"}],"id":1534,"name":"ExpressionStatement","src":"21085:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1440,"type":"function (uint256)","value":"SubmittedLoadLimitUpdate"},"id":1535,"name":"Identifier","src":"21138:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1517,"type":"uint256","value":"_amount"},"id":1536,"name":"Identifier","src":"21163:7:30"}],"id":1537,"name":"FunctionCall","src":"21138:33:30"}],"id":1538,"name":"EmitStatement","src":"21133:38:30"}],"id":1539,"name":"Block","src":"21000:178:30"}],"id":1540,"name":"FunctionDefinition","src":"20927:251:30"},{"attributes":{"documentation":"@dev Confirm pending set load limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmLoadLimitUpdate","scope":1598,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1560,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1541,"name":"ElementaryTypeName","src":"21271:7:30"}],"id":1542,"name":"VariableDeclaration","src":"21271:15:30"}],"id":1543,"name":"ParameterList","src":"21270:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1546,"name":"ParameterList","src":"21312:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":1544,"name":"Identifier","src":"21297:14:30"}],"id":1545,"name":"ModifierInvocation","src":"21297:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":970,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1547,"name":"Identifier","src":"21322:10:30"}],"id":1549,"name":"MemberAccess","src":"21322:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1542,"type":"uint256","value":"_amount"},"id":1550,"name":"Identifier","src":"21353:7:30"}],"id":1551,"name":"FunctionCall","src":"21322:39:30"}],"id":1552,"name":"ExpressionStatement","src":"21322:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1436,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1553,"name":"Identifier","src":"21376:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1554,"name":"Identifier","src":"21389:3:30"}],"id":1555,"name":"MemberAccess","src":"21389:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1542,"type":"uint256","value":"_amount"},"id":1556,"name":"Identifier","src":"21401:7:30"}],"id":1557,"name":"FunctionCall","src":"21376:33:30"}],"id":1558,"name":"EmitStatement","src":"21371:38:30"}],"id":1559,"name":"Block","src":"21312:104:30"}],"id":1560,"name":"FunctionDefinition","src":"21239:177:30"},{"attributes":{"documentation":"@dev View your available load limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitAvailable","scope":1598,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1561,"name":"ParameterList","src":"21493:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1570,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1562,"name":"ElementaryTypeName","src":"21519:7:30"}],"id":1563,"name":"VariableDeclaration","src":"21519:7:30"}],"id":1564,"name":"ParameterList","src":"21518:9:30"},{"children":[{"attributes":{"functionReturnParameters":1564},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1024,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1565,"name":"Identifier","src":"21545:10:30"}],"id":1566,"name":"MemberAccess","src":"21545:29:30"}],"id":1567,"name":"FunctionCall","src":"21545:31:30"}],"id":1568,"name":"Return","src":"21538:38:30"}],"id":1569,"name":"Block","src":"21528:55:30"}],"id":1570,"name":"FunctionDefinition","src":"21466:117:30"},{"attributes":{"documentation":"@dev Is there an active load limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitPending","scope":1598,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1571,"name":"ParameterList","src":"21664:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1572,"name":"ElementaryTypeName","src":"21690:7:30"}],"id":1573,"name":"VariableDeclaration","src":"21690:7:30"}],"id":1574,"name":"ParameterList","src":"21689:9:30"},{"children":[{"attributes":{"functionReturnParameters":1574},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1575,"name":"Identifier","src":"21716:10:30"}],"id":1576,"name":"MemberAccess","src":"21716:18:30"}],"id":1577,"name":"Return","src":"21709:25:30"}],"id":1578,"name":"Block","src":"21699:42:30"}],"id":1579,"name":"FunctionDefinition","src":"21639:102:30"},{"attributes":{"documentation":"@dev Has the load limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitControllerConfirmationRequired","scope":1598,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1580,"name":"ParameterList","src":"21844:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1588,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1581,"name":"ElementaryTypeName","src":"21870:4:30"}],"id":1582,"name":"VariableDeclaration","src":"21870:4:30"}],"id":1583,"name":"ParameterList","src":"21869:6:30"},{"children":[{"attributes":{"functionReturnParameters":1583},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1584,"name":"Identifier","src":"21893:10:30"}],"id":1585,"name":"MemberAccess","src":"21893:41:30"}],"id":1586,"name":"Return","src":"21886:48:30"}],"id":1587,"name":"Block","src":"21876:65:30"}],"id":1588,"name":"FunctionDefinition","src":"21796:145:30"},{"attributes":{"documentation":"@dev View how much laod limit has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitValue","scope":1598,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1589,"name":"ParameterList","src":"22031:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1597,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1590,"name":"ElementaryTypeName","src":"22057:7:30"}],"id":1591,"name":"VariableDeclaration","src":"22057:7:30"}],"id":1592,"name":"ParameterList","src":"22056:9:30"},{"children":[{"attributes":{"functionReturnParameters":1592},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1593,"name":"Identifier","src":"22083:10:30"}],"id":1594,"name":"MemberAccess","src":"22083:16:30"}],"id":1595,"name":"Return","src":"22076:23:30"}],"id":1596,"name":"Block","src":"22066:40:30"}],"id":1597,"name":"FunctionDefinition","src":"22008:98:30"}],"id":1598,"name":"ContractDefinition","src":"19604:2504:30"},{"attributes":{"contractDependencies":[325,362,384,932,1266,1424,1598,3206,3316,3753,3910,4127,4167],"contractKind":"contract","documentation":"@title Asset wallet with extra security features, gas top up management and card integration.","fullyImplemented":true,"linearizedBaseContracts":[2509,3753,4167,3316,1266,932,1598,4127,1424,384,362,3910,325,3206],"name":"Wallet","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":1599,"name":"UserDefinedTypeName","src":"22228:13:30"}],"id":1600,"name":"InheritanceSpecifier","src":"22228:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"GasTopUpLimit","referencedDeclaration":1424,"type":"contract GasTopUpLimit"},"id":1601,"name":"UserDefinedTypeName","src":"22243:13:30"}],"id":1602,"name":"InheritanceSpecifier","src":"22243:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"LoadLimit","referencedDeclaration":1598,"type":"contract LoadLimit"},"id":1603,"name":"UserDefinedTypeName","src":"22258:9:30"}],"id":1604,"name":"InheritanceSpecifier","src":"22258:9:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddressWhitelist","referencedDeclaration":932,"type":"contract AddressWhitelist"},"id":1605,"name":"UserDefinedTypeName","src":"22269:16:30"}],"id":1606,"name":"InheritanceSpecifier","src":"22269:16:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SpendLimit","referencedDeclaration":1266,"type":"contract SpendLimit"},"id":1607,"name":"UserDefinedTypeName","src":"22287:10:30"}],"id":1608,"name":"InheritanceSpecifier","src":"22287:10:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ERC165","referencedDeclaration":3316,"type":"contract ERC165"},"id":1609,"name":"UserDefinedTypeName","src":"22299:6:30"}],"id":1610,"name":"InheritanceSpecifier","src":"22299:6:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4167,"type":"contract Transferrable"},"id":1611,"name":"UserDefinedTypeName","src":"22307:13:30"}],"id":1612,"name":"InheritanceSpecifier","src":"22307:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":3753,"type":"contract Balanceable"},"id":1613,"name":"UserDefinedTypeName","src":"22322:11:30"}],"id":1614,"name":"InheritanceSpecifier","src":"22322:11:30"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":3225,"type":"library Address"},"id":1615,"name":"UserDefinedTypeName","src":"22346:7:30"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1616,"name":"ElementaryTypeName","src":"22358:7:30"}],"id":1617,"name":"UsingForDirective","src":"22340:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"ECDSA","referencedDeclaration":3306,"type":"library ECDSA"},"id":1618,"name":"UserDefinedTypeName","src":"22377:5:30"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":1619,"name":"ElementaryTypeName","src":"22387:7:30"}],"id":1620,"name":"UsingForDirective","src":"22371:24:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3588,"type":"library SafeERC20"},"id":1621,"name":"UserDefinedTypeName","src":"22406:9:30"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":1622,"name":"UserDefinedTypeName","src":"22420:5:30"}],"id":1623,"name":"UsingForDirective","src":"22400:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":1624,"name":"UserDefinedTypeName","src":"22437:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":1625,"name":"ElementaryTypeName","src":"22450:7:30"}],"id":1626,"name":"UsingForDirective","src":"22431:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"BulkTransferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1633,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1627,"name":"ElementaryTypeName","src":"22486:7:30"}],"id":1628,"name":"VariableDeclaration","src":"22486:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_assets","scope":1633,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1629,"name":"ElementaryTypeName","src":"22499:7:30"}],"id":1630,"name":"ArrayTypeName","src":"22499:9:30"}],"id":1631,"name":"VariableDeclaration","src":"22499:17:30"}],"id":1632,"name":"ParameterList","src":"22485:32:30"}],"id":1633,"name":"EventDefinition","src":"22464:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedRelayedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1639,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1634,"name":"ElementaryTypeName","src":"22556:5:30"}],"id":1635,"name":"VariableDeclaration","src":"22556:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1639,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1636,"name":"ElementaryTypeName","src":"22569:5:30"}],"id":1637,"name":"VariableDeclaration","src":"22569:17:30"}],"id":1638,"name":"ParameterList","src":"22555:32:30"}],"id":1639,"name":"EventDefinition","src":"22523:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_destination","scope":1649,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1640,"name":"ElementaryTypeName","src":"22619:7:30"}],"id":1641,"name":"VariableDeclaration","src":"22619:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_value","scope":1649,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1642,"name":"ElementaryTypeName","src":"22641:7:30"}],"id":1643,"name":"VariableDeclaration","src":"22641:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1649,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1644,"name":"ElementaryTypeName","src":"22657:5:30"}],"id":1645,"name":"VariableDeclaration","src":"22657:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1649,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1646,"name":"ElementaryTypeName","src":"22670:5:30"}],"id":1647,"name":"VariableDeclaration","src":"22670:17:30"}],"id":1648,"name":"ParameterList","src":"22618:70:30"}],"id":1649,"name":"EventDefinition","src":"22593:96:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"IncreasedRelayNonce"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1655,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1650,"name":"ElementaryTypeName","src":"22720:7:30"}],"id":1651,"name":"VariableDeclaration","src":"22720:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_currentNonce","scope":1655,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1652,"name":"ElementaryTypeName","src":"22737:7:30"}],"id":1653,"name":"VariableDeclaration","src":"22737:21:30"}],"id":1654,"name":"ParameterList","src":"22719:40:30"}],"id":1655,"name":"EventDefinition","src":"22694:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"LoadedTokenCard"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1661,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1656,"name":"ElementaryTypeName","src":"22787:7:30"}],"id":1657,"name":"VariableDeclaration","src":"22787:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1658,"name":"ElementaryTypeName","src":"22803:7:30"}],"id":1659,"name":"VariableDeclaration","src":"22803:15:30"}],"id":1660,"name":"ParameterList","src":"22786:33:30"}],"id":1661,"name":"EventDefinition","src":"22765:55:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1667,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1662,"name":"ElementaryTypeName","src":"22840:7:30"}],"id":1663,"name":"VariableDeclaration","src":"22840:13:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1667,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1664,"name":"ElementaryTypeName","src":"22855:7:30"}],"id":1665,"name":"VariableDeclaration","src":"22855:15:30"}],"id":1666,"name":"ParameterList","src":"22839:32:30"}],"id":1667,"name":"EventDefinition","src":"22825:47:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ToppedUpGas"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1675,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1668,"name":"ElementaryTypeName","src":"22895:7:30"}],"id":1669,"name":"VariableDeclaration","src":"22895:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1675,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1670,"name":"ElementaryTypeName","src":"22912:7:30"}],"id":1671,"name":"VariableDeclaration","src":"22912:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1675,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1672,"name":"ElementaryTypeName","src":"22928:7:30"}],"id":1673,"name":"VariableDeclaration","src":"22928:15:30"}],"id":1674,"name":"ParameterList","src":"22894:50:30"}],"id":1675,"name":"EventDefinition","src":"22877:68:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1683,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1676,"name":"ElementaryTypeName","src":"22968:7:30"}],"id":1677,"name":"VariableDeclaration","src":"22968:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1683,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1678,"name":"ElementaryTypeName","src":"22981:7:30"}],"id":1679,"name":"VariableDeclaration","src":"22981:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1683,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1680,"name":"ElementaryTypeName","src":"22997:7:30"}],"id":1681,"name":"VariableDeclaration","src":"22997:15:30"}],"id":1682,"name":"ParameterList","src":"22967:46:30"}],"id":1683,"name":"EventDefinition","src":"22950:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1684,"name":"ParameterList","src":"23046:2:30"}],"id":1685,"name":"EventDefinition","src":"23019:30:30"},{"attributes":{"constant":true,"name":"WALLET_VERSION","scope":2509,"stateVariable":true,"storageLocation":"default","type":"string","visibility":"public"},"children":[{"attributes":{"name":"string","type":"string"},"id":1686,"name":"ElementaryTypeName","src":"23125:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"332e322e30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"3.2.0\"","value":"3.2.0"},"id":1687,"name":"Literal","src":"23165:7:30"}],"id":1688,"name":"VariableDeclaration","src":"23125:47:30"},{"attributes":{"constant":true,"name":"_EIP_1271","scope":2509,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1689,"name":"ElementaryTypeName","src":"23296:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230633133623062","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 549534475","value":"0x20c13b0b"},"id":1690,"name":"Literal","src":"23332:10:30"}],"id":1691,"name":"VariableDeclaration","src":"23296:46:30"},{"attributes":{"constant":true,"name":"_EIP_1654","scope":2509,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1692,"name":"ElementaryTypeName","src":"23467:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783136323662613765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 371636862","value":"0x1626ba7e"},"id":1693,"name":"Literal","src":"23503:10:30"}],"id":1694,"name":"VariableDeclaration","src":"23467:46:30"},{"attributes":{"constant":true,"name":"_ERC165_INTERFACE_ID","scope":2509,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1695,"name":"ElementaryTypeName","src":"23564:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":1696,"name":"Literal","src":"23611:10:30"}],"id":1697,"name":"VariableDeclaration","src":"23564:57:30"},{"attributes":{"constant":false,"name":"relayNonce","scope":2509,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1698,"name":"ElementaryTypeName","src":"23739:7:30"}],"id":1699,"name":"VariableDeclaration","src":"23739:25:30"},{"attributes":{"constant":false,"name":"_licenceNode","scope":2509,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1700,"name":"ElementaryTypeName","src":"23845:7:30"}],"id":1701,"name":"VariableDeclaration","src":"23845:28:30"},{"attributes":{"documentation":"@dev Constructor initializes the wallet top up limit and the vault contract.\n @param _owner_ is the owner account of the wallet contract.\n @param _transferable_ indicates whether the contract ownership can be transferred.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist.\n @param _controllerNode_ is the ENS name node of the Controller contract.\n @param _licenceNode_ is the ENS name node of the Licence contract.\n @param _spendLimit_ is the initial spend limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1702,"name":"ElementaryTypeName","src":"24495:15:30"}],"id":1703,"name":"VariableDeclaration","src":"24495:23:30"},{"attributes":{"constant":false,"name":"_transferable_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1704,"name":"ElementaryTypeName","src":"24528:4:30"}],"id":1705,"name":"VariableDeclaration","src":"24528:19:30"},{"attributes":{"constant":false,"name":"_ens_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1706,"name":"ElementaryTypeName","src":"24557:7:30"}],"id":1707,"name":"VariableDeclaration","src":"24557:13:30"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1708,"name":"ElementaryTypeName","src":"24580:7:30"}],"id":1709,"name":"VariableDeclaration","src":"24580:28:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1710,"name":"ElementaryTypeName","src":"24618:7:30"}],"id":1711,"name":"VariableDeclaration","src":"24618:24:30"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1712,"name":"ElementaryTypeName","src":"24652:7:30"}],"id":1713,"name":"VariableDeclaration","src":"24652:21:30"},{"attributes":{"constant":false,"name":"_spendLimit_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1714,"name":"ElementaryTypeName","src":"24683:7:30"}],"id":1715,"name":"VariableDeclaration","src":"24683:20:30"}],"id":1716,"name":"ParameterList","src":"24485:224:30"},{"attributes":{"parameters":[null]},"children":[],"id":1733,"name":"ParameterList","src":"24859:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1717,"name":"Identifier","src":"24717:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"address","value":"_ens_"},"id":1718,"name":"Identifier","src":"24731:5:30"}],"id":1719,"name":"ModifierInvocation","src":"24717:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"type(contract SpendLimit)","value":"SpendLimit"},"id":1720,"name":"Identifier","src":"24738:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1715,"type":"uint256","value":"_spendLimit_"},"id":1721,"name":"Identifier","src":"24749:12:30"}],"id":1722,"name":"ModifierInvocation","src":"24738:24:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"type(contract Ownable)","value":"Ownable"},"id":1723,"name":"Identifier","src":"24763:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1703,"type":"address payable","value":"_owner_"},"id":1724,"name":"Identifier","src":"24771:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1705,"type":"bool","value":"_transferable_"},"id":1725,"name":"Identifier","src":"24780:14:30"}],"id":1726,"name":"ModifierInvocation","src":"24763:32:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":1727,"name":"Identifier","src":"24796:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"bytes32","value":"_controllerNode_"},"id":1728,"name":"Identifier","src":"24809:16:30"}],"id":1729,"name":"ModifierInvocation","src":"24796:30:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1598,"type":"type(contract LoadLimit)","value":"LoadLimit"},"id":1730,"name":"Identifier","src":"24827:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1709,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1731,"name":"Identifier","src":"24837:20:30"}],"id":1732,"name":"ModifierInvocation","src":"24827:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1701,"type":"bytes32","value":"_licenceNode"},"id":1734,"name":"Identifier","src":"24869:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1713,"type":"bytes32","value":"_licenceNode_"},"id":1735,"name":"Identifier","src":"24884:13:30"}],"id":1736,"name":"Assignment","src":"24869:28:30"}],"id":1737,"name":"ExpressionStatement","src":"24869:28:30"}],"id":1738,"name":"Block","src":"24859:45:30"}],"id":1739,"name":"FunctionDefinition","src":"24474:430:30"},{"attributes":{"documentation":"@dev Checks if the value is not zero.","name":"isNotZero","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_value","scope":1752,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1740,"name":"ElementaryTypeName","src":"24975:7:30"}],"id":1741,"name":"VariableDeclaration","src":"24975:14:30"}],"id":1742,"name":"ParameterList","src":"24974:16:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d553a348030c1ee763b9cde2d3cc60fc831e78f559cd3758c25113c454c7f3","typeString":"literal_string \"value=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1743,"name":"Identifier","src":"25001:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"_value"},"id":1744,"name":"Identifier","src":"25009:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1745,"name":"Literal","src":"25019:1:30"}],"id":1746,"name":"BinaryOperation","src":"25009:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"76616c75653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"value=0\"","value":"value=0"},"id":1747,"name":"Literal","src":"25022:9:30"}],"id":1748,"name":"FunctionCall","src":"25001:31:30"}],"id":1749,"name":"ExpressionStatement","src":"25001:31:30"},{"id":1750,"name":"PlaceholderStatement","src":"25042:1:30"}],"id":1751,"name":"Block","src":"24991:59:30"}],"id":1752,"name":"ModifierDefinition","src":"24956:94:30"},{"attributes":{"documentation":"@dev Ether can be deposited from any source, so this contract must be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":2509,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1753,"name":"ParameterList","src":"25161:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1754,"name":"ParameterList","src":"25181:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1667,"type":"function (address,uint256)","value":"Received"},"id":1755,"name":"Identifier","src":"25196:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1756,"name":"Identifier","src":"25205:3:30"}],"id":1757,"name":"MemberAccess","src":"25205:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1758,"name":"Identifier","src":"25217:3:30"}],"id":1759,"name":"MemberAccess","src":"25217:9:30"}],"id":1760,"name":"FunctionCall","src":"25196:31:30"}],"id":1761,"name":"EmitStatement","src":"25191:36:30"}],"id":1762,"name":"Block","src":"25181:53:30"}],"id":1763,"name":"FunctionDefinition","src":"25153:81:30"},{"attributes":{"documentation":"@dev This is a bulk transfer convenience function, used to migrate contracts.\n @notice If any of the transfers fail, this will revert.\n @param _to is the recipient's address, can't be the zero (0x0) address: transfer() will revert.\n @param _assets is an array of addresses of ERC20 tokens or 0x0 for ether.","implemented":true,"isConstructor":false,"kind":"function","name":"bulkTransfer","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1819,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1764,"name":"ElementaryTypeName","src":"25598:15:30"}],"id":1765,"name":"VariableDeclaration","src":"25598:19:30"},{"attributes":{"constant":false,"name":"_assets","scope":1819,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1766,"name":"ElementaryTypeName","src":"25619:7:30"}],"id":1767,"name":"ArrayTypeName","src":"25619:9:30"}],"id":1768,"name":"VariableDeclaration","src":"25619:26:30"}],"id":1769,"name":"ParameterList","src":"25597:49:30"},{"attributes":{"parameters":[null]},"children":[],"id":1772,"name":"ParameterList","src":"25672:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1770,"name":"Identifier","src":"25656:15:30"}],"id":1771,"name":"ModifierInvocation","src":"25656:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc6fe91796d2ae20b0ff36bc5dfbb8543f76fc0a4077e7ae85858f799173eb60","typeString":"literal_string \"asset array is empty\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1773,"name":"Identifier","src":"25737:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1774,"name":"Identifier","src":"25745:7:30"}],"id":1775,"name":"MemberAccess","src":"25745:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1776,"name":"Literal","src":"25763:1:30"}],"id":1777,"name":"BinaryOperation","src":"25745:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617373657420617272617920697320656d707479","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"asset array is empty\"","value":"asset array is empty"},"id":1778,"name":"Literal","src":"25766:22:30"}],"id":1779,"name":"FunctionCall","src":"25737:52:30"}],"id":1780,"name":"ExpressionStatement","src":"25737:52:30"},{"children":[{"attributes":{"assignments":[1782]},"children":[{"attributes":{"constant":false,"name":"i","scope":1812,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1781,"name":"ElementaryTypeName","src":"25866:7:30"}],"id":1782,"name":"VariableDeclaration","src":"25866:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1783,"name":"Literal","src":"25878:1:30"}],"id":1784,"name":"VariableDeclarationStatement","src":"25866:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"i"},"id":1785,"name":"Identifier","src":"25881:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1786,"name":"Identifier","src":"25885:7:30"}],"id":1787,"name":"MemberAccess","src":"25885:14:30"}],"id":1788,"name":"BinaryOperation","src":"25881:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"i"},"id":1789,"name":"Identifier","src":"25901:1:30"}],"id":1790,"name":"UnaryOperation","src":"25901:3:30"}],"id":1791,"name":"ExpressionStatement","src":"25901:3:30"},{"children":[{"attributes":{"assignments":[1793]},"children":[{"attributes":{"constant":false,"name":"amount","scope":1811,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1792,"name":"ElementaryTypeName","src":"25920:7:30"}],"id":1793,"name":"VariableDeclaration","src":"25920:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3752,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":1794,"name":"Identifier","src":"25937:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1795,"name":"ElementaryTypeNameExpression","src":"25946:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10631,"type":"contract Wallet","value":"this"},"id":1796,"name":"Identifier","src":"25954:4:30"}],"id":1797,"name":"FunctionCall","src":"25946:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1798,"name":"Identifier","src":"25961:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"i"},"id":1799,"name":"Identifier","src":"25969:1:30"}],"id":1800,"name":"IndexAccess","src":"25961:10:30"}],"id":1801,"name":"FunctionCall","src":"25937:35:30"}],"id":1802,"name":"VariableDeclarationStatement","src":"25920:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"function (address payable,address,uint256)","value":"transfer"},"id":1803,"name":"Identifier","src":"26046:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"address payable","value":"_to"},"id":1804,"name":"Identifier","src":"26055:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1805,"name":"Identifier","src":"26060:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"i"},"id":1806,"name":"Identifier","src":"26068:1:30"}],"id":1807,"name":"IndexAccess","src":"26060:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1793,"type":"uint256","value":"amount"},"id":1808,"name":"Identifier","src":"26072:6:30"}],"id":1809,"name":"FunctionCall","src":"26046:33:30"}],"id":1810,"name":"ExpressionStatement","src":"26046:33:30"}],"id":1811,"name":"Block","src":"25906:184:30"}],"id":1812,"name":"ForStatement","src":"25861:229:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":1633,"type":"function (address,address[] memory)","value":"BulkTransferred"},"id":1813,"name":"Identifier","src":"26105:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"address payable","value":"_to"},"id":1814,"name":"Identifier","src":"26121:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1815,"name":"Identifier","src":"26126:7:30"}],"id":1816,"name":"FunctionCall","src":"26105:29:30"}],"id":1817,"name":"EmitStatement","src":"26100:34:30"}],"id":1818,"name":"Block","src":"25672:469:30"}],"id":1819,"name":"FunctionDefinition","src":"25576:565:30"},{"attributes":{"documentation":"@dev This function allows for the controller to relay transactions on the owner's behalf,\n the relayed message has to be signed by the owner.\n @param _nonce only used for relayed transactions, must match the wallet's relayNonce.\n @param _data abi encoded data payload.\n @param _signature signed prefix + data.","implemented":true,"isConstructor":false,"kind":"function","name":"executeRelayedTransaction","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_nonce","scope":1895,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1820,"name":"ElementaryTypeName","src":"26528:7:30"}],"id":1821,"name":"VariableDeclaration","src":"26528:14:30"},{"attributes":{"constant":false,"name":"_data","scope":1895,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1822,"name":"ElementaryTypeName","src":"26544:5:30"}],"id":1823,"name":"VariableDeclaration","src":"26544:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1895,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1824,"name":"ElementaryTypeName","src":"26566:5:30"}],"id":1825,"name":"VariableDeclaration","src":"26566:25:30"}],"id":1826,"name":"ParameterList","src":"26527:65:30"},{"attributes":{"parameters":[null]},"children":[],"id":1829,"name":"ParameterList","src":"26617:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":1827,"name":"Identifier","src":"26602:14:30"}],"id":1828,"name":"ModifierInvocation","src":"26602:14:30"},{"children":[{"attributes":{"assignments":[1831],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"id","scope":1894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1830,"name":"ElementaryTypeName","src":"26797:7:30"}],"id":1831,"name":"VariableDeclaration","src":"26797:10:30"}],"id":1832,"name":"VariableDeclarationStatement","src":"26797:10:30"},{"attributes":{"externalReferences":[{"id":{"declaration":1831,"isOffset":false,"isSlot":false,"src":"26840:2:30","valueSize":1}}],"operations":"{ id := chainid() }"},"children":[],"id":1833,"name":"InlineAssembly","src":"26817:99:30"},{"attributes":{"assignments":[1835]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1894,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1834,"name":"ElementaryTypeName","src":"26925:7:30"}],"id":1835,"name":"VariableDeclaration","src":"26925:16:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toEthSignedMessageHash","referencedDeclaration":3305,"type":"function (bytes32) pure returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1836,"name":"Identifier","src":"26944:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_64973292d287a9bdfbf2540b56114a2ccf5255f1a0f38436d52dc69f44e83d8d","typeString":"literal_string \"monolith:\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":1837,"name":"Identifier","src":"26954:3:30"}],"id":1838,"name":"MemberAccess","src":"26954:16:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e6f6c6974683a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"monolith:\"","value":"monolith:"},"id":1839,"name":"Literal","src":"26971:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"id"},"id":1840,"name":"Identifier","src":"26984:2:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1841,"name":"ElementaryTypeNameExpression","src":"26988:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10631,"type":"contract Wallet","value":"this"},"id":1842,"name":"Identifier","src":"26996:4:30"}],"id":1843,"name":"FunctionCall","src":"26988:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1821,"type":"uint256","value":"_nonce"},"id":1844,"name":"Identifier","src":"27003:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"bytes calldata","value":"_data"},"id":1845,"name":"Identifier","src":"27011:5:30"}],"id":1846,"name":"FunctionCall","src":"26954:63:30"}],"id":1847,"name":"FunctionCall","src":"26944:74:30"}],"id":1848,"name":"MemberAccess","src":"26944:97:30"}],"id":1849,"name":"FunctionCall","src":"26944:99:30"}],"id":1850,"name":"VariableDeclarationStatement","src":"26925:118:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1851,"name":"Identifier","src":"27111:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2442,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1852,"name":"Identifier","src":"27119:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1835,"type":"bytes32","value":"dataHash"},"id":1853,"name":"Identifier","src":"27136:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1825,"type":"bytes calldata","value":"_signature"},"id":1854,"name":"Identifier","src":"27146:10:30"}],"id":1855,"name":"FunctionCall","src":"27119:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1694,"type":"bytes4","value":"_EIP_1654"},"id":1856,"name":"Identifier","src":"27161:9:30"}],"id":1857,"name":"BinaryOperation","src":"27119:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1858,"name":"Literal","src":"27172:15:30"}],"id":1859,"name":"FunctionCall","src":"27111:77:30"}],"id":1860,"name":"ExpressionStatement","src":"27111:77:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_34adcd0a74b814374d2f97634e18f1e1bbbc6244d3bcc4bf9469772fc5d9d0ea","typeString":"literal_string \"tx replay\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1861,"name":"Identifier","src":"27283:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1821,"type":"uint256","value":"_nonce"},"id":1862,"name":"Identifier","src":"27291:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1699,"type":"uint256","value":"relayNonce"},"id":1863,"name":"Identifier","src":"27301:10:30"}],"id":1864,"name":"BinaryOperation","src":"27291:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"7478207265706c6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"tx replay\"","value":"tx replay"},"id":1865,"name":"Literal","src":"27313:11:30"}],"id":1866,"name":"FunctionCall","src":"27283:42:30"}],"id":1867,"name":"ExpressionStatement","src":"27283:42:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1917,"type":"function ()","value":"_increaseRelayNonce"},"id":1868,"name":"Identifier","src":"27335:19:30"}],"id":1869,"name":"FunctionCall","src":"27335:21:30"}],"id":1870,"name":"ExpressionStatement","src":"27335:21:30"},{"attributes":{"assignments":[1872,1874]},"children":[{"attributes":{"constant":false,"name":"success","scope":1894,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1871,"name":"ElementaryTypeName","src":"27424:4:30"}],"id":1872,"name":"VariableDeclaration","src":"27424:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":1894,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1873,"name":"ElementaryTypeName","src":"27438:5:30"}],"id":1874,"name":"VariableDeclaration","src":"27438:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1875,"name":"ElementaryTypeNameExpression","src":"27465:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10631,"type":"contract Wallet","value":"this"},"id":1876,"name":"Identifier","src":"27473:4:30"}],"id":1877,"name":"FunctionCall","src":"27465:13:30"}],"id":1878,"name":"MemberAccess","src":"27465:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"bytes calldata","value":"_data"},"id":1879,"name":"Identifier","src":"27484:5:30"}],"id":1880,"name":"FunctionCall","src":"27465:25:30"}],"id":1881,"name":"VariableDeclarationStatement","src":"27423:67:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1882,"name":"Identifier","src":"27500:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1872,"type":"bool","value":"success"},"id":1883,"name":"Identifier","src":"27508:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":1884,"name":"ElementaryTypeNameExpression","src":"27517:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"bytes memory","value":"returndata"},"id":1885,"name":"Identifier","src":"27524:10:30"}],"id":1886,"name":"FunctionCall","src":"27517:18:30"}],"id":1887,"name":"FunctionCall","src":"27500:36:30"}],"id":1888,"name":"ExpressionStatement","src":"27500:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1639,"type":"function (bytes memory,bytes memory)","value":"ExecutedRelayedTransaction"},"id":1889,"name":"Identifier","src":"27552:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"bytes calldata","value":"_data"},"id":1890,"name":"Identifier","src":"27579:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"bytes memory","value":"returndata"},"id":1891,"name":"Identifier","src":"27586:10:30"}],"id":1892,"name":"FunctionCall","src":"27552:45:30"}],"id":1893,"name":"EmitStatement","src":"27547:50:30"}],"id":1894,"name":"Block","src":"26617:987:30"}],"id":1895,"name":"FunctionDefinition","src":"26493:1111:30"},{"attributes":{"documentation":"@dev This allows the user to cancel a transaction that was unexpectedly delayed by the relayer","implemented":true,"isConstructor":false,"kind":"function","name":"increaseRelayNonce","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1896,"name":"ParameterList","src":"27740:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1899,"name":"ParameterList","src":"27762:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":1897,"name":"Identifier","src":"27752:9:30"}],"id":1898,"name":"ModifierInvocation","src":"27752:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1917,"type":"function ()","value":"_increaseRelayNonce"},"id":1900,"name":"Identifier","src":"27772:19:30"}],"id":1901,"name":"FunctionCall","src":"27772:21:30"}],"id":1902,"name":"ExpressionStatement","src":"27772:21:30"}],"id":1903,"name":"Block","src":"27762:38:30"}],"id":1904,"name":"FunctionDefinition","src":"27713:87:30"},{"attributes":{"documentation":"@dev This bumps the relayNonce and emits an event accordingly","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_increaseRelayNonce","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1905,"name":"ParameterList","src":"27904:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1906,"name":"ParameterList","src":"27916:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1699,"type":"uint256","value":"relayNonce"},"id":1907,"name":"Identifier","src":"27926:10:30"}],"id":1908,"name":"UnaryOperation","src":"27926:12:30"}],"id":1909,"name":"ExpressionStatement","src":"27926:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1655,"type":"function (address,uint256)","value":"IncreasedRelayNonce"},"id":1910,"name":"Identifier","src":"27954:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1911,"name":"Identifier","src":"27974:3:30"}],"id":1912,"name":"MemberAccess","src":"27974:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1699,"type":"uint256","value":"relayNonce"},"id":1913,"name":"Identifier","src":"27986:10:30"}],"id":1914,"name":"FunctionCall","src":"27954:43:30"}],"id":1915,"name":"EmitStatement","src":"27949:48:30"}],"id":1916,"name":"Block","src":"27916:88:30"}],"id":1917,"name":"FunctionDefinition","src":"27876:128:30"},{"attributes":{"documentation":"@dev Implements EIP-1271: receives the raw data (bytes)\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":1948,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1918,"name":"ElementaryTypeName","src":"28325:5:30"}],"id":1919,"name":"VariableDeclaration","src":"28325:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1948,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1920,"name":"ElementaryTypeName","src":"28347:5:30"}],"id":1921,"name":"VariableDeclaration","src":"28347:25:30"}],"id":1922,"name":"ParameterList","src":"28324:49:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1948,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1923,"name":"ElementaryTypeName","src":"28397:6:30"}],"id":1924,"name":"VariableDeclaration","src":"28397:6:30"}],"id":1925,"name":"ParameterList","src":"28396:8:30"},{"children":[{"attributes":{"assignments":[1927]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1947,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1926,"name":"ElementaryTypeName","src":"28415:7:30"}],"id":1927,"name":"VariableDeclaration","src":"28415:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1928,"name":"Identifier","src":"28434:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":1929,"name":"Identifier","src":"28444:3:30"}],"id":1930,"name":"MemberAccess","src":"28444:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1919,"type":"bytes calldata","value":"_data"},"id":1931,"name":"Identifier","src":"28461:5:30"}],"id":1932,"name":"FunctionCall","src":"28444:23:30"}],"id":1933,"name":"FunctionCall","src":"28434:34:30"}],"id":1934,"name":"VariableDeclarationStatement","src":"28415:53:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1935,"name":"Identifier","src":"28533:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2442,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1936,"name":"Identifier","src":"28541:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"bytes32","value":"dataHash"},"id":1937,"name":"Identifier","src":"28558:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1921,"type":"bytes calldata","value":"_signature"},"id":1938,"name":"Identifier","src":"28568:10:30"}],"id":1939,"name":"FunctionCall","src":"28541:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1694,"type":"bytes4","value":"_EIP_1654"},"id":1940,"name":"Identifier","src":"28583:9:30"}],"id":1941,"name":"BinaryOperation","src":"28541:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1942,"name":"Literal","src":"28594:15:30"}],"id":1943,"name":"FunctionCall","src":"28533:77:30"}],"id":1944,"name":"ExpressionStatement","src":"28533:77:30"},{"attributes":{"functionReturnParameters":1925},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1691,"type":"bytes4","value":"_EIP_1271"},"id":1945,"name":"Identifier","src":"28627:9:30"}],"id":1946,"name":"Return","src":"28620:16:30"}],"id":1947,"name":"Block","src":"28405:238:30"}],"id":1948,"name":"FunctionDefinition","src":"28299:344:30"},{"attributes":{"documentation":"@return licence contract node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceNode","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1949,"name":"ParameterList","src":"28726:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1956,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1950,"name":"ElementaryTypeName","src":"28752:7:30"}],"id":1951,"name":"VariableDeclaration","src":"28752:7:30"}],"id":1952,"name":"ParameterList","src":"28751:9:30"},{"children":[{"attributes":{"functionReturnParameters":1952},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1701,"type":"bytes32","value":"_licenceNode"},"id":1953,"name":"Identifier","src":"28778:12:30"}],"id":1954,"name":"Return","src":"28771:19:30"}],"id":1955,"name":"Block","src":"28761:36:30"}],"id":1956,"name":"FunctionDefinition","src":"28706:91:30"},{"attributes":{"documentation":"@dev Load a token card with the specified asset amount.\n @dev the amount send should be inclusive of the percent licence.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"loadTokenCard","scope":2509,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":2032,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1957,"name":"ElementaryTypeName","src":"29116:7:30"}],"id":1958,"name":"VariableDeclaration","src":"29116:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2032,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1959,"name":"ElementaryTypeName","src":"29132:7:30"}],"id":1960,"name":"VariableDeclaration","src":"29132:15:30"}],"id":1961,"name":"ParameterList","src":"29115:33:30"},{"attributes":{"parameters":[null]},"children":[],"id":1964,"name":"ParameterList","src":"29182:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1962,"name":"Identifier","src":"29166:15:30"}],"id":1963,"name":"ModifierInvocation","src":"29166:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96e30e7359d705e51778d9ae05179a78cb34ab813d824e29a3cd9fe209b16a67","typeString":"literal_string \"token not loadable\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1965,"name":"Identifier","src":"29261:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":1966,"name":"Identifier","src":"29269:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":1967,"name":"Identifier","src":"29286:6:30"}],"id":1968,"name":"FunctionCall","src":"29269:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f74206c6f616461626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not loadable\"","value":"token not loadable"},"id":1969,"name":"Literal","src":"29295:20:30"}],"id":1970,"name":"FunctionCall","src":"29261:55:30"}],"id":1971,"name":"ExpressionStatement","src":"29261:55:30"},{"attributes":{"assignments":[1973]},"children":[{"attributes":{"constant":false,"name":"stablecoinValue","scope":2031,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1972,"name":"ElementaryTypeName","src":"29379:7:30"}],"id":1973,"name":"VariableDeclaration","src":"29379:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2288,"type":"function (address,uint256) view returns (uint256)","value":"convertToStablecoin"},"id":1974,"name":"Identifier","src":"29405:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":1975,"name":"Identifier","src":"29425:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":1976,"name":"Identifier","src":"29433:7:30"}],"id":1977,"name":"FunctionCall","src":"29405:36:30"}],"id":1978,"name":"VariableDeclarationStatement","src":"29379:62:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1979,"name":"Identifier","src":"29571:10:30"}],"id":1981,"name":"MemberAccess","src":"29571:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"stablecoinValue"},"id":1982,"name":"Identifier","src":"29596:15:30"}],"id":1983,"name":"FunctionCall","src":"29571:41:30"}],"id":1984,"name":"ExpressionStatement","src":"29571:41:30"},{"attributes":{"assignments":[1986]},"children":[{"attributes":{"constant":false,"name":"licenceAddress","scope":2031,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1985,"name":"ElementaryTypeName","src":"29669:7:30"}],"id":1986,"name":"VariableDeclaration","src":"29669:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1987,"name":"Identifier","src":"29694:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1701,"type":"bytes32","value":"_licenceNode"},"id":1988,"name":"Identifier","src":"29706:12:30"}],"id":1989,"name":"FunctionCall","src":"29694:25:30"}],"id":1990,"name":"VariableDeclarationStatement","src":"29669:50:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":1991,"name":"Identifier","src":"29733:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1992,"name":"ElementaryTypeNameExpression","src":"29743:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1993,"name":"Literal","src":"29751:1:30"}],"id":1994,"name":"FunctionCall","src":"29743:10:30"}],"id":1995,"name":"BinaryOperation","src":"29733:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeApprove","referencedDeclaration":3468,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":1996,"name":"Identifier","src":"29769:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":1997,"name":"Identifier","src":"29775:6:30"}],"id":1998,"name":"FunctionCall","src":"29769:13:30"}],"id":1999,"name":"MemberAccess","src":"29769:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1986,"type":"address","value":"licenceAddress"},"id":2000,"name":"Identifier","src":"29795:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2001,"name":"Identifier","src":"29811:7:30"}],"id":2002,"name":"FunctionCall","src":"29769:50:30"}],"id":2003,"name":"ExpressionStatement","src":"29769:50:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":4181,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4187,"type":"type(contract ILicence)","value":"ILicence"},"id":2004,"name":"Identifier","src":"29833:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1986,"type":"address","value":"licenceAddress"},"id":2005,"name":"Identifier","src":"29842:14:30"}],"id":2006,"name":"FunctionCall","src":"29833:24:30"}],"id":2007,"name":"MemberAccess","src":"29833:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":2008,"name":"Identifier","src":"29863:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2009,"name":"Identifier","src":"29871:7:30"}],"id":2010,"name":"FunctionCall","src":"29833:46:30"}],"id":2011,"name":"ExpressionStatement","src":"29833:46:30"}],"id":2012,"name":"Block","src":"29755:135:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (address,uint256) payable external","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (address,uint256) payable external)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":4181,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4187,"type":"type(contract ILicence)","value":"ILicence"},"id":2013,"name":"Identifier","src":"29910:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1986,"type":"address","value":"licenceAddress"},"id":2014,"name":"Identifier","src":"29919:14:30"}],"id":2015,"name":"FunctionCall","src":"29910:24:30"}],"id":2016,"name":"MemberAccess","src":"29910:29:30"}],"id":2017,"name":"MemberAccess","src":"29910:35:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2018,"name":"Identifier","src":"29946:7:30"}],"id":2019,"name":"FunctionCall","src":"29910:44:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":2020,"name":"Identifier","src":"29955:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2021,"name":"Identifier","src":"29963:7:30"}],"id":2022,"name":"FunctionCall","src":"29910:61:30"}],"id":2023,"name":"ExpressionStatement","src":"29910:61:30"}],"id":2024,"name":"Block","src":"29896:86:30"}],"id":2025,"name":"IfStatement","src":"29729:253:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1661,"type":"function (address,uint256)","value":"LoadedTokenCard"},"id":2026,"name":"Identifier","src":"29997:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":2027,"name":"Identifier","src":"30013:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2028,"name":"Identifier","src":"30021:7:30"}],"id":2029,"name":"FunctionCall","src":"29997:32:30"}],"id":2030,"name":"EmitStatement","src":"29992:37:30"}],"id":2031,"name":"Block","src":"29182:854:30"}],"id":2032,"name":"FunctionDefinition","src":"29093:943:30"},{"attributes":{"documentation":"@dev Checks for interface support based on ERC165.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2509,"stateMutability":"view","superFunction":3315,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_interfaceID","scope":2044,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2033,"name":"ElementaryTypeName","src":"30128:6:30"}],"id":2034,"name":"VariableDeclaration","src":"30128:19:30"}],"id":2035,"name":"ParameterList","src":"30127:21:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2044,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2036,"name":"ElementaryTypeName","src":"30172:4:30"}],"id":2037,"name":"VariableDeclaration","src":"30172:4:30"}],"id":2038,"name":"ParameterList","src":"30171:6:30"},{"children":[{"attributes":{"functionReturnParameters":2038},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2034,"type":"bytes4","value":"_interfaceID"},"id":2039,"name":"Identifier","src":"30195:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1697,"type":"bytes4","value":"_ERC165_INTERFACE_ID"},"id":2040,"name":"Identifier","src":"30211:20:30"}],"id":2041,"name":"BinaryOperation","src":"30195:36:30"}],"id":2042,"name":"Return","src":"30188:43:30"}],"id":2043,"name":"Block","src":"30178:60:30"}],"id":2044,"name":"FunctionDefinition","src":"30101:137:30"},{"attributes":{"documentation":"@dev Refill owner's gas balance, revert if the transaction amount is too large\n @param _amount is the amount of ether to transfer to the owner account in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"topUpGas","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":2075,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2045,"name":"ElementaryTypeName","src":"30436:7:30"}],"id":2046,"name":"VariableDeclaration","src":"30436:15:30"}],"id":2047,"name":"ParameterList","src":"30435:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":2053,"name":"ParameterList","src":"30503:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1752,"type":"modifier (uint256)","value":"isNotZero"},"id":2048,"name":"Identifier","src":"30462:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2046,"type":"uint256","value":"_amount"},"id":2049,"name":"Identifier","src":"30472:7:30"}],"id":2050,"name":"ModifierInvocation","src":"30462:18:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":361,"type":"modifier ()","value":"onlyOwnerOrController"},"id":2051,"name":"Identifier","src":"30481:21:30"}],"id":2052,"name":"ModifierInvocation","src":"30481:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":2054,"name":"Identifier","src":"30633:14:30"}],"id":2056,"name":"MemberAccess","src":"30633:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2046,"type":"uint256","value":"_amount"},"id":2057,"name":"Identifier","src":"30662:7:30"}],"id":2058,"name":"FunctionCall","src":"30633:37:30"}],"id":2059,"name":"ExpressionStatement","src":"30633:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3897,"type":"function () view returns (address payable)","value":"owner"},"id":2060,"name":"Identifier","src":"30717:5:30"}],"id":2061,"name":"FunctionCall","src":"30717:7:30"}],"id":2062,"name":"MemberAccess","src":"30717:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2046,"type":"uint256","value":"_amount"},"id":2063,"name":"Identifier","src":"30734:7:30"}],"id":2064,"name":"FunctionCall","src":"30717:25:30"}],"id":2065,"name":"ExpressionStatement","src":"30717:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1675,"type":"function (address,address,uint256)","value":"ToppedUpGas"},"id":2066,"name":"Identifier","src":"30795:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2067,"name":"Identifier","src":"30807:3:30"}],"id":2068,"name":"MemberAccess","src":"30807:10:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3897,"type":"function () view returns (address payable)","value":"owner"},"id":2069,"name":"Identifier","src":"30819:5:30"}],"id":2070,"name":"FunctionCall","src":"30819:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2046,"type":"uint256","value":"_amount"},"id":2071,"name":"Identifier","src":"30828:7:30"}],"id":2072,"name":"FunctionCall","src":"30795:41:30"}],"id":2073,"name":"EmitStatement","src":"30790:46:30"}],"id":2074,"name":"Block","src":"30503:340:30"}],"id":2075,"name":"FunctionDefinition","src":"30418:425:30"},{"attributes":{"documentation":"@dev This function allows for the wallet to send a batch of transactions instead of one,\n it calls executeTransaction() so that the daily limit is enforced.\n @param _transactionBatch data encoding the transactions to be sent,\n following executeTransaction's format i.e. (destination, value, data)","implemented":true,"isConstructor":false,"kind":"function","name":"batchExecuteTransaction","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_transactionBatch","scope":2158,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2076,"name":"ElementaryTypeName","src":"31208:5:30"}],"id":2077,"name":"VariableDeclaration","src":"31208:30:30"}],"id":2078,"name":"ParameterList","src":"31207:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":2081,"name":"ParameterList","src":"31263:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2079,"name":"Identifier","src":"31247:15:30"}],"id":2080,"name":"ModifierInvocation","src":"31247:15:30"},{"children":[{"attributes":{"assignments":[2083]},"children":[{"attributes":{"constant":false,"name":"batchLength","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2082,"name":"ElementaryTypeName","src":"31273:7:30"}],"id":2083,"name":"VariableDeclaration","src":"31273:19:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2077,"type":"bytes memory","value":"_transactionBatch"},"id":2084,"name":"Identifier","src":"31295:17:30"}],"id":2085,"name":"MemberAccess","src":"31295:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2086,"name":"Literal","src":"31322:2:30"}],"id":2087,"name":"BinaryOperation","src":"31295:29:30"}],"id":2088,"name":"VariableDeclarationStatement","src":"31273:51:30"},{"attributes":{"assignments":[2090]},"children":[{"attributes":{"constant":false,"name":"remainingBytesLength","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2089,"name":"ElementaryTypeName","src":"31368:7:30"}],"id":2090,"name":"VariableDeclaration","src":"31368:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2077,"type":"bytes memory","value":"_transactionBatch"},"id":2091,"name":"Identifier","src":"31399:17:30"}],"id":2092,"name":"MemberAccess","src":"31399:24:30"}],"id":2093,"name":"VariableDeclarationStatement","src":"31368:55:30"},{"attributes":{"assignments":[2095]},"children":[{"attributes":{"constant":false,"name":"pos","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2094,"name":"ElementaryTypeName","src":"31468:7:30"}],"id":2095,"name":"VariableDeclaration","src":"31468:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2096,"name":"Literal","src":"31482:2:30"}],"id":2097,"name":"VariableDeclarationStatement","src":"31468:16:30"},{"attributes":{"assignments":[2099],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"destination","scope":2157,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2098,"name":"ElementaryTypeName","src":"31569:7:30"}],"id":2099,"name":"VariableDeclaration","src":"31569:19:30"}],"id":2100,"name":"VariableDeclarationStatement","src":"31569:19:30"},{"attributes":{"assignments":[2102],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2101,"name":"ElementaryTypeName","src":"31621:7:30"}],"id":2102,"name":"VariableDeclaration","src":"31621:13:30"}],"id":2103,"name":"VariableDeclarationStatement","src":"31621:13:30"},{"attributes":{"assignments":[2105],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dataLength","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2104,"name":"ElementaryTypeName","src":"31665:7:30"}],"id":2105,"name":"VariableDeclaration","src":"31665:18:30"}],"id":2106,"name":"VariableDeclarationStatement","src":"31665:18:30"},{"attributes":{"assignments":[2108],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"data","scope":2157,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2107,"name":"ElementaryTypeName","src":"31723:5:30"}],"id":2108,"name":"VariableDeclaration","src":"31723:17:30"}],"id":2109,"name":"VariableDeclarationStatement","src":"31723:17:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2095,"type":"uint256","value":"pos"},"id":2110,"name":"Identifier","src":"31771:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2083,"type":"uint256","value":"batchLength"},"id":2111,"name":"Identifier","src":"31777:11:30"}],"id":2112,"name":"BinaryOperation","src":"31771:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"uint256","value":"remainingBytesLength"},"id":2113,"name":"Identifier","src":"31914:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"uint256","value":"remainingBytesLength"},"id":2114,"name":"Identifier","src":"31937:20:30"}],"id":2115,"name":"MemberAccess","src":"31937:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":2116,"name":"Literal","src":"31962:2:30"}],"id":2117,"name":"FunctionCall","src":"31937:28:30"}],"id":2118,"name":"Assignment","src":"31914:51:30"}],"id":2119,"name":"ExpressionStatement","src":"31914:51:30"},{"attributes":{"externalReferences":[{"destination":{"declaration":2099,"isOffset":false,"isSlot":false,"src":"32122:11:30","valueSize":1}},{"_transactionBatch":{"declaration":2077,"isOffset":false,"isSlot":false,"src":"32155:17:30","valueSize":1}},{"pos":{"declaration":2095,"isOffset":false,"isSlot":false,"src":"32174:3:30","valueSize":1}},{"dataLength":{"declaration":2105,"isOffset":false,"isSlot":false,"src":"32481:10:30","valueSize":1}},{"value":{"declaration":2102,"isOffset":false,"isSlot":false,"src":"32265:5:30","valueSize":1}},{"pos":{"declaration":2095,"isOffset":false,"isSlot":false,"src":"32307:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2077,"isOffset":false,"isSlot":false,"src":"32284:17:30","valueSize":1}},{"data":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32555:4:30","valueSize":1}},{"pos":{"declaration":2095,"isOffset":false,"isSlot":false,"src":"32528:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2077,"isOffset":false,"isSlot":false,"src":"32505:17:30","valueSize":1}},{"pos":{"declaration":2095,"isOffset":false,"isSlot":false,"src":"32590:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2077,"isOffset":false,"isSlot":false,"src":"32567:17:30","valueSize":1}}],"operations":"{\n destination := shr(96, mload(add(_transactionBatch, pos)))\n value := mload(add(_transactionBatch, add(pos, 20)))\n dataLength := mload(add(_transactionBatch, add(pos, 52)))\n data := add(_transactionBatch, add(pos, 52))\n}"},"children":[],"id":2120,"name":"InlineAssembly","src":"31979:634:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2095,"type":"uint256","value":"pos"},"id":2121,"name":"Identifier","src":"32703:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2095,"type":"uint256","value":"pos"},"id":2122,"name":"Identifier","src":"32709:3:30"}],"id":2123,"name":"MemberAccess","src":"32709:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2105,"type":"uint256","value":"dataLength"},"id":2124,"name":"Identifier","src":"32717:10:30"}],"id":2125,"name":"FunctionCall","src":"32709:19:30"}],"id":2126,"name":"MemberAccess","src":"32709:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":2127,"name":"Literal","src":"32733:2:30"}],"id":2128,"name":"FunctionCall","src":"32709:27:30"}],"id":2129,"name":"Assignment","src":"32703:33:30"}],"id":2130,"name":"ExpressionStatement","src":"32703:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d4d7e869602fd07d121f8992a03b812eac20f2f3831f876bce9993aae915a2b","typeString":"literal_string \"out of bounds\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2131,"name":"Identifier","src":"32841:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2095,"type":"uint256","value":"pos"},"id":2132,"name":"Identifier","src":"32849:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2083,"type":"uint256","value":"batchLength"},"id":2133,"name":"Identifier","src":"32856:11:30"}],"id":2134,"name":"BinaryOperation","src":"32849:18:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f6620626f756e6473","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of bounds\"","value":"out of bounds"},"id":2135,"name":"Literal","src":"32869:15:30"}],"id":2136,"name":"FunctionCall","src":"32841:44:30"}],"id":2137,"name":"ExpressionStatement","src":"32841:44:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2105,"type":"uint256","value":"dataLength"},"id":2138,"name":"Identifier","src":"32956:10:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2139,"name":"Literal","src":"32970:1:30"}],"id":2140,"name":"BinaryOperation","src":"32956:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"data"},"id":2141,"name":"Identifier","src":"32991:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2142,"name":"ElementaryTypeNameExpression","src":"32998:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":2143,"name":"Literal","src":"33004:2:30"}],"id":2144,"name":"FunctionCall","src":"32998:9:30"}],"id":2145,"name":"Assignment","src":"32991:16:30"}],"id":2146,"name":"ExpressionStatement","src":"32991:16:30"}],"id":2147,"name":"Block","src":"32973:49:30"}],"id":2148,"name":"IfStatement","src":"32952:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2416,"type":"function (address,uint256,bytes memory) returns (bytes memory)","value":"executeTransaction"},"id":2149,"name":"Identifier","src":"33130:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2099,"type":"address","value":"destination"},"id":2150,"name":"Identifier","src":"33149:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"uint256","value":"value"},"id":2151,"name":"Identifier","src":"33162:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"data"},"id":2152,"name":"Identifier","src":"33169:4:30"}],"id":2153,"name":"FunctionCall","src":"33130:44:30"}],"id":2154,"name":"ExpressionStatement","src":"33130:44:30"}],"id":2155,"name":"Block","src":"31790:1395:30"}],"id":2156,"name":"WhileStatement","src":"31764:1421:30"}],"id":2157,"name":"Block","src":"31263:1928:30"}],"id":2158,"name":"FunctionDefinition","src":"31175:2016:30"},{"attributes":{"documentation":"@dev Convert ERC20 token amount to the corresponding ether amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToEther","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2198,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2159,"name":"ElementaryTypeName","src":"33402:7:30"}],"id":2160,"name":"VariableDeclaration","src":"33402:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2161,"name":"ElementaryTypeName","src":"33418:7:30"}],"id":2162,"name":"VariableDeclaration","src":"33418:15:30"}],"id":2163,"name":"ParameterList","src":"33401:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2164,"name":"ElementaryTypeName","src":"33456:7:30"}],"id":2165,"name":"VariableDeclaration","src":"33456:7:30"}],"id":2166,"name":"ParameterList","src":"33455:9:30"},{"children":[{"attributes":{"assignments":[null,2168,2170,2172,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":2197,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2167,"name":"ElementaryTypeName","src":"33545:7:30"}],"id":2168,"name":"VariableDeclaration","src":"33545:17:30"},{"attributes":{"constant":false,"name":"rate","scope":2197,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2169,"name":"ElementaryTypeName","src":"33564:7:30"}],"id":2170,"name":"VariableDeclaration","src":"33564:12:30"},{"attributes":{"constant":false,"name":"available","scope":2197,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2171,"name":"ElementaryTypeName","src":"33578:4:30"}],"id":2172,"name":"VariableDeclaration","src":"33578:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":2173,"name":"Identifier","src":"33602:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2160,"type":"address","value":"_token"},"id":2174,"name":"Identifier","src":"33616:6:30"}],"id":2175,"name":"FunctionCall","src":"33602:21:30"}],"id":2176,"name":"VariableDeclarationStatement","src":"33542:81:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2172,"type":"bool","value":"available"},"id":2177,"name":"Identifier","src":"33703:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2178,"name":"Identifier","src":"33728:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"rate"},"id":2179,"name":"Identifier","src":"33736:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2180,"name":"Literal","src":"33744:1:30"}],"id":2181,"name":"BinaryOperation","src":"33736:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":2182,"name":"Literal","src":"33747:8:30"}],"id":2183,"name":"FunctionCall","src":"33728:28:30"}],"id":2184,"name":"ExpressionStatement","src":"33728:28:30"},{"attributes":{"functionReturnParameters":2166},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3699,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3674,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"uint256","value":"_amount"},"id":2185,"name":"Identifier","src":"33861:7:30"}],"id":2186,"name":"MemberAccess","src":"33861:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"rate"},"id":2187,"name":"Identifier","src":"33873:4:30"}],"id":2188,"name":"FunctionCall","src":"33861:17:30"}],"id":2189,"name":"MemberAccess","src":"33861:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2168,"type":"uint256","value":"magnitude"},"id":2190,"name":"Identifier","src":"33883:9:30"}],"id":2191,"name":"FunctionCall","src":"33861:32:30"}],"id":2192,"name":"Return","src":"33854:39:30"}],"id":2193,"name":"Block","src":"33714:190:30"}],"id":2194,"name":"IfStatement","src":"33699:205:30"},{"attributes":{"functionReturnParameters":2166},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2195,"name":"Literal","src":"33920:1:30"}],"id":2196,"name":"Return","src":"33913:8:30"}],"id":2197,"name":"Block","src":"33465:463:30"}],"id":2198,"name":"FunctionDefinition","src":"33378:550:30"},{"attributes":{"documentation":"@dev Convert ether or ERC20 token amount to the corresponding stablecoin amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToStablecoin","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2288,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2199,"name":"ElementaryTypeName","src":"34158:7:30"}],"id":2200,"name":"VariableDeclaration","src":"34158:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2288,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2201,"name":"ElementaryTypeName","src":"34174:7:30"}],"id":2202,"name":"VariableDeclaration","src":"34174:15:30"}],"id":2203,"name":"ParameterList","src":"34157:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2288,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2204,"name":"ElementaryTypeName","src":"34212:7:30"}],"id":2205,"name":"VariableDeclaration","src":"34212:7:30"}],"id":2206,"name":"ParameterList","src":"34211:9:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2200,"type":"address","value":"_token"},"id":2207,"name":"Identifier","src":"34332:6:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"function () view returns (address)","value":"_stablecoin"},"id":2208,"name":"Identifier","src":"34342:11:30"}],"id":2209,"name":"FunctionCall","src":"34342:13:30"}],"id":2210,"name":"BinaryOperation","src":"34332:23:30"},{"children":[{"attributes":{"functionReturnParameters":2206},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2202,"type":"uint256","value":"_amount"},"id":2211,"name":"Identifier","src":"34378:7:30"}],"id":2212,"name":"Return","src":"34371:14:30"}],"id":2213,"name":"Block","src":"34357:39:30"}],"id":2214,"name":"IfStatement","src":"34328:68:30"},{"attributes":{"assignments":[2216]},"children":[{"attributes":{"constant":false,"name":"amountToSend","scope":2287,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2215,"name":"ElementaryTypeName","src":"34405:7:30"}],"id":2216,"name":"VariableDeclaration","src":"34405:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2202,"type":"uint256","value":"_amount"},"id":2217,"name":"Identifier","src":"34428:7:30"}],"id":2218,"name":"VariableDeclarationStatement","src":"34405:30:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2200,"type":"address","value":"_token"},"id":2219,"name":"Identifier","src":"34482:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2220,"name":"ElementaryTypeNameExpression","src":"34492:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2221,"name":"Literal","src":"34500:1:30"}],"id":2222,"name":"FunctionCall","src":"34492:10:30"}],"id":2223,"name":"BinaryOperation","src":"34482:20:30"},{"children":[{"attributes":{"assignments":[null,2225,2227,2229,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":2256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2224,"name":"ElementaryTypeName","src":"34654:7:30"}],"id":2225,"name":"VariableDeclaration","src":"34654:17:30"},{"attributes":{"constant":false,"name":"rate","scope":2256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2226,"name":"ElementaryTypeName","src":"34673:7:30"}],"id":2227,"name":"VariableDeclaration","src":"34673:12:30"},{"attributes":{"constant":false,"name":"available","scope":2256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2228,"name":"ElementaryTypeName","src":"34687:4:30"}],"id":2229,"name":"VariableDeclaration","src":"34687:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":2230,"name":"Identifier","src":"34711:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2200,"type":"address","value":"_token"},"id":2231,"name":"Identifier","src":"34725:6:30"}],"id":2232,"name":"FunctionCall","src":"34711:21:30"}],"id":2233,"name":"VariableDeclarationStatement","src":"34651:81:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2234,"name":"Identifier","src":"34835:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2229,"type":"bool","value":"available"},"id":2235,"name":"Identifier","src":"34843:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":2236,"name":"Literal","src":"34854:21:30"}],"id":2237,"name":"FunctionCall","src":"34835:41:30"}],"id":2238,"name":"ExpressionStatement","src":"34835:41:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2239,"name":"Identifier","src":"34890:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2227,"type":"uint256","value":"rate"},"id":2240,"name":"Identifier","src":"34898:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2241,"name":"Literal","src":"34906:1:30"}],"id":2242,"name":"BinaryOperation","src":"34898:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":2243,"name":"Literal","src":"34909:8:30"}],"id":2244,"name":"FunctionCall","src":"34890:28:30"}],"id":2245,"name":"ExpressionStatement","src":"34890:28:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2216,"type":"uint256","value":"amountToSend"},"id":2246,"name":"Identifier","src":"35020:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3699,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3674,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2202,"type":"uint256","value":"_amount"},"id":2247,"name":"Identifier","src":"35035:7:30"}],"id":2248,"name":"MemberAccess","src":"35035:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2227,"type":"uint256","value":"rate"},"id":2249,"name":"Identifier","src":"35047:4:30"}],"id":2250,"name":"FunctionCall","src":"35035:17:30"}],"id":2251,"name":"MemberAccess","src":"35035:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"magnitude"},"id":2252,"name":"Identifier","src":"35057:9:30"}],"id":2253,"name":"FunctionCall","src":"35035:32:30"}],"id":2254,"name":"Assignment","src":"35020:47:30"}],"id":2255,"name":"ExpressionStatement","src":"35020:47:30"}],"id":2256,"name":"Block","src":"34504:574:30"}],"id":2257,"name":"IfStatement","src":"34478:600:30"},{"attributes":{"assignments":[null,2259,2261,2263,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":2287,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2258,"name":"ElementaryTypeName","src":"35195:7:30"}],"id":2259,"name":"VariableDeclaration","src":"35195:27:30"},{"attributes":{"constant":false,"name":"stablecoinRate","scope":2287,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2260,"name":"ElementaryTypeName","src":"35224:7:30"}],"id":2261,"name":"VariableDeclaration","src":"35224:22:30"},{"attributes":{"constant":false,"name":"stablecoinAvailable","scope":2287,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2262,"name":"ElementaryTypeName","src":"35248:4:30"}],"id":2263,"name":"VariableDeclaration","src":"35248:24:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":2264,"name":"Identifier","src":"35282:18:30"}],"id":2265,"name":"FunctionCall","src":"35282:20:30"}],"id":2266,"name":"VariableDeclarationStatement","src":"35192:110:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2267,"name":"Identifier","src":"35360:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2263,"type":"bool","value":"stablecoinAvailable"},"id":2268,"name":"Identifier","src":"35368:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":2269,"name":"Literal","src":"35389:21:30"}],"id":2270,"name":"FunctionCall","src":"35360:51:30"}],"id":2271,"name":"ExpressionStatement","src":"35360:51:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18bfbbfdaee82cb0eebcce67c25e7747234386e0bcace876720c3090918b5d3f","typeString":"literal_string \"stablecoin rate=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2272,"name":"Identifier","src":"35421:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2261,"type":"uint256","value":"stablecoinRate"},"id":2273,"name":"Identifier","src":"35429:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2274,"name":"Literal","src":"35447:1:30"}],"id":2275,"name":"BinaryOperation","src":"35429:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"737461626c65636f696e20726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"stablecoin rate=0\"","value":"stablecoin rate=0"},"id":2276,"name":"Literal","src":"35450:19:30"}],"id":2277,"name":"FunctionCall","src":"35421:49:30"}],"id":2278,"name":"ExpressionStatement","src":"35421:49:30"},{"attributes":{"functionReturnParameters":2206},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3699,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3674,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2216,"type":"uint256","value":"amountToSend"},"id":2279,"name":"Identifier","src":"35605:12:30"}],"id":2280,"name":"MemberAccess","src":"35605:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2259,"type":"uint256","value":"stablecoinMagnitude"},"id":2281,"name":"Identifier","src":"35622:19:30"}],"id":2282,"name":"FunctionCall","src":"35605:37:30"}],"id":2283,"name":"MemberAccess","src":"35605:41:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2261,"type":"uint256","value":"stablecoinRate"},"id":2284,"name":"Identifier","src":"35647:14:30"}],"id":2285,"name":"FunctionCall","src":"35605:57:30"}],"id":2286,"name":"Return","src":"35598:64:30"}],"id":2287,"name":"Block","src":"34221:1448:30"}],"id":2288,"name":"FunctionDefinition","src":"34129:1540:30"},{"attributes":{"documentation":"@dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses\n @param _destination address of the transaction\n @param _value ETH amount in wei\n @param _data transaction payload binary","implemented":true,"isConstructor":false,"kind":"function","name":"executeTransaction","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":2416,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2289,"name":"ElementaryTypeName","src":"35957:7:30"}],"id":2290,"name":"VariableDeclaration","src":"35957:20:30"},{"attributes":{"constant":false,"name":"_value","scope":2416,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2291,"name":"ElementaryTypeName","src":"35979:7:30"}],"id":2292,"name":"VariableDeclaration","src":"35979:14:30"},{"attributes":{"constant":false,"name":"_data","scope":2416,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2293,"name":"ElementaryTypeName","src":"35995:5:30"}],"id":2294,"name":"VariableDeclaration","src":"35995:18:30"}],"id":2295,"name":"ParameterList","src":"35956:58:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2416,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2298,"name":"ElementaryTypeName","src":"36047:5:30"}],"id":2299,"name":"VariableDeclaration","src":"36047:12:30"}],"id":2300,"name":"ParameterList","src":"36046:14:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2296,"name":"Identifier","src":"36022:15:30"}],"id":2297,"name":"ModifierInvocation","src":"36022:15:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2301,"name":"Identifier","src":"36266:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2302,"name":"Identifier","src":"36279:12:30"}],"id":2303,"name":"IndexAccess","src":"36266:26:30"}],"id":2304,"name":"UnaryOperation","src":"36265:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2305,"name":"Identifier","src":"36308:11:30"}],"id":2307,"name":"MemberAccess","src":"36308:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"_value"},"id":2308,"name":"Identifier","src":"36334:6:30"}],"id":2309,"name":"FunctionCall","src":"36308:33:30"}],"id":2310,"name":"ExpressionStatement","src":"36308:33:30"}],"id":2311,"name":"Block","src":"36294:58:30"}],"id":2312,"name":"IfStatement","src":"36261:91:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":3224,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2313,"name":"ElementaryTypeNameExpression","src":"36453:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2314,"name":"Identifier","src":"36461:12:30"}],"id":2315,"name":"FunctionCall","src":"36453:21:30"}],"id":2316,"name":"MemberAccess","src":"36453:32:30"}],"id":2317,"name":"FunctionCall","src":"36453:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4080,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":2318,"name":"Identifier","src":"36491:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2319,"name":"Identifier","src":"36509:12:30"}],"id":2320,"name":"FunctionCall","src":"36491:31:30"}],"id":2321,"name":"BinaryOperation","src":"36453:69:30"},{"children":[{"attributes":{"assignments":[2323],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"to","scope":2385,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2322,"name":"ElementaryTypeName","src":"36625:7:30"}],"id":2323,"name":"VariableDeclaration","src":"36625:10:30"}],"id":2324,"name":"VariableDeclarationStatement","src":"36625:10:30"},{"attributes":{"assignments":[2326],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"amount","scope":2385,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2325,"name":"ElementaryTypeName","src":"36649:7:30"}],"id":2326,"name":"VariableDeclaration","src":"36649:14:30"}],"id":2327,"name":"VariableDeclarationStatement","src":"36649:14:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2323,"type":"address","value":"to"},"id":2328,"name":"Identifier","src":"36678:2:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2326,"type":"uint256","value":"amount"},"id":2329,"name":"Identifier","src":"36682:6:30"}],"id":2330,"name":"TupleExpression","src":"36677:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":2331,"name":"Identifier","src":"36692:27:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2332,"name":"Identifier","src":"36720:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2333,"name":"Identifier","src":"36734:5:30"}],"id":2334,"name":"FunctionCall","src":"36692:48:30"}],"id":2335,"name":"Assignment","src":"36677:63:30"}],"id":2336,"name":"ExpressionStatement","src":"36677:63:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2337,"name":"Identifier","src":"36759:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2323,"type":"address","value":"to"},"id":2338,"name":"Identifier","src":"36772:2:30"}],"id":2339,"name":"IndexAccess","src":"36759:16:30"}],"id":2340,"name":"UnaryOperation","src":"36758:17:30"},{"children":[{"attributes":{"assignments":[2342]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2354,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2341,"name":"ElementaryTypeName","src":"36962:7:30"}],"id":2342,"name":"VariableDeclaration","src":"36962:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2198,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2343,"name":"Identifier","src":"36983:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2344,"name":"Identifier","src":"36998:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2326,"type":"uint256","value":"amount"},"id":2345,"name":"Identifier","src":"37012:6:30"}],"id":2346,"name":"FunctionCall","src":"36983:36:30"}],"id":2347,"name":"VariableDeclarationStatement","src":"36962:57:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2348,"name":"Identifier","src":"37037:11:30"}],"id":2350,"name":"MemberAccess","src":"37037:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2342,"type":"uint256","value":"etherValue"},"id":2351,"name":"Identifier","src":"37063:10:30"}],"id":2352,"name":"FunctionCall","src":"37037:37:30"}],"id":2353,"name":"ExpressionStatement","src":"37037:37:30"}],"id":2354,"name":"Block","src":"36777:312:30"}],"id":2355,"name":"IfStatement","src":"36754:335:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"callOptionalReturn","referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":2356,"name":"Identifier","src":"37238:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2357,"name":"Identifier","src":"37244:12:30"}],"id":2358,"name":"FunctionCall","src":"37238:19:30"}],"id":2359,"name":"MemberAccess","src":"37238:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2360,"name":"Identifier","src":"37277:5:30"}],"id":2361,"name":"FunctionCall","src":"37238:45:30"}],"id":2362,"name":"ExpressionStatement","src":"37238:45:30"},{"attributes":{"assignments":[2364]},"children":[{"attributes":{"constant":false,"name":"b","scope":2385,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2363,"name":"ElementaryTypeName","src":"37387:5:30"}],"id":2364,"name":"VariableDeclaration","src":"37387:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2365,"name":"ElementaryTypeName","src":"37408:5:30"}],"id":2366,"name":"NewExpression","src":"37404:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2367,"name":"Literal","src":"37414:2:30"}],"id":2368,"name":"FunctionCall","src":"37404:13:30"}],"id":2369,"name":"VariableDeclarationStatement","src":"37387:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2364,"type":"bytes memory","value":"b"},"id":2370,"name":"Identifier","src":"37431:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2371,"name":"Literal","src":"37433:2:30"}],"id":2372,"name":"IndexAccess","src":"37431:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2373,"name":"Literal","src":"37439:4:30"}],"id":2374,"name":"Assignment","src":"37431:12:30"}],"id":2375,"name":"ExpressionStatement","src":"37431:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1649,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2376,"name":"Identifier","src":"37463:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2377,"name":"Identifier","src":"37483:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"_value"},"id":2378,"name":"Identifier","src":"37497:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2379,"name":"Identifier","src":"37505:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2364,"type":"bytes memory","value":"b"},"id":2380,"name":"Identifier","src":"37512:1:30"}],"id":2381,"name":"FunctionCall","src":"37463:51:30"}],"id":2382,"name":"EmitStatement","src":"37458:56:30"},{"attributes":{"functionReturnParameters":2300},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2364,"type":"bytes memory","value":"b"},"id":2383,"name":"Identifier","src":"37535:1:30"}],"id":2384,"name":"Return","src":"37528:8:30"}],"id":2385,"name":"Block","src":"36524:1023:30"}],"id":2386,"name":"IfStatement","src":"36449:1098:30"},{"attributes":{"assignments":[2388,2390]},"children":[{"attributes":{"constant":false,"name":"success","scope":2415,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2387,"name":"ElementaryTypeName","src":"37558:4:30"}],"id":2388,"name":"VariableDeclaration","src":"37558:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":2415,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2389,"name":"ElementaryTypeName","src":"37572:5:30"}],"id":2390,"name":"VariableDeclaration","src":"37572:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (bytes memory) payable returns (bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2391,"name":"Identifier","src":"37599:12:30"}],"id":2392,"name":"MemberAccess","src":"37599:17:30"}],"id":2393,"name":"MemberAccess","src":"37599:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"_value"},"id":2394,"name":"Identifier","src":"37623:6:30"}],"id":2395,"name":"FunctionCall","src":"37599:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2396,"name":"Identifier","src":"37631:5:30"}],"id":2397,"name":"FunctionCall","src":"37599:38:30"}],"id":2398,"name":"VariableDeclarationStatement","src":"37557:80:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2399,"name":"Identifier","src":"37647:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2388,"type":"bool","value":"success"},"id":2400,"name":"Identifier","src":"37655:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":2401,"name":"ElementaryTypeNameExpression","src":"37664:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"bytes memory","value":"returndata"},"id":2402,"name":"Identifier","src":"37671:10:30"}],"id":2403,"name":"FunctionCall","src":"37664:18:30"}],"id":2404,"name":"FunctionCall","src":"37647:36:30"}],"id":2405,"name":"ExpressionStatement","src":"37647:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1649,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2406,"name":"Identifier","src":"37699:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2407,"name":"Identifier","src":"37719:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"_value"},"id":2408,"name":"Identifier","src":"37733:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2409,"name":"Identifier","src":"37741:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"bytes memory","value":"returndata"},"id":2410,"name":"Identifier","src":"37748:10:30"}],"id":2411,"name":"FunctionCall","src":"37699:60:30"}],"id":2412,"name":"EmitStatement","src":"37694:65:30"},{"attributes":{"functionReturnParameters":2300},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"bytes memory","value":"returndata"},"id":2413,"name":"Identifier","src":"37846:10:30"}],"id":2414,"name":"Return","src":"37839:17:30"}],"id":2415,"name":"Block","src":"36061:1802:30"}],"id":2416,"name":"FunctionDefinition","src":"35929:1934:30"},{"attributes":{"documentation":"@dev Implements EIP-1654: receives the hashed message(bytes32)\n https://github.com/ethereum/EIPs/issues/1654.md\n @param _hashedData Hashed data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _dataHash","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hashedData","scope":2442,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2417,"name":"ElementaryTypeName","src":"38172:7:30"}],"id":2418,"name":"VariableDeclaration","src":"38172:19:30"},{"attributes":{"constant":false,"name":"_signature","scope":2442,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2419,"name":"ElementaryTypeName","src":"38193:5:30"}],"id":2420,"name":"VariableDeclaration","src":"38193:23:30"}],"id":2421,"name":"ParameterList","src":"38171:46:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2442,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2422,"name":"ElementaryTypeName","src":"38239:6:30"}],"id":2423,"name":"VariableDeclaration","src":"38239:6:30"}],"id":2424,"name":"ParameterList","src":"38238:8:30"},{"children":[{"attributes":{"assignments":[2426]},"children":[{"attributes":{"constant":false,"name":"from","scope":2441,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2425,"name":"ElementaryTypeName","src":"38257:7:30"}],"id":2426,"name":"VariableDeclaration","src":"38257:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"recover","referencedDeclaration":3289,"type":"function (bytes32,bytes memory) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2418,"type":"bytes32","value":"_hashedData"},"id":2427,"name":"Identifier","src":"38272:11:30"}],"id":2428,"name":"MemberAccess","src":"38272:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2420,"type":"bytes memory","value":"_signature"},"id":2429,"name":"Identifier","src":"38292:10:30"}],"id":2430,"name":"FunctionCall","src":"38272:31:30"}],"id":2431,"name":"VariableDeclarationStatement","src":"38257:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2432,"name":"Identifier","src":"38313:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2433,"name":"Identifier","src":"38321:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2426,"type":"address","value":"from"},"id":2434,"name":"Identifier","src":"38330:4:30"}],"id":2435,"name":"FunctionCall","src":"38321:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":2436,"name":"Literal","src":"38337:19:30"}],"id":2437,"name":"FunctionCall","src":"38313:44:30"}],"id":2438,"name":"ExpressionStatement","src":"38313:44:30"},{"attributes":{"functionReturnParameters":2424},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1694,"type":"bytes4","value":"_EIP_1654"},"id":2439,"name":"Identifier","src":"38374:9:30"}],"id":2440,"name":"Return","src":"38367:16:30"}],"id":2441,"name":"Block","src":"38247:143:30"}],"id":2442,"name":"FunctionDefinition","src":"38146:244:30"},{"attributes":{"documentation":"@dev Transfers the specified asset to the recipient's address.\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"transfer","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2508,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2443,"name":"ElementaryTypeName","src":"38685:15:30"}],"id":2444,"name":"VariableDeclaration","src":"38685:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":2508,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2445,"name":"ElementaryTypeName","src":"38706:7:30"}],"id":2446,"name":"VariableDeclaration","src":"38706:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2508,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2447,"name":"ElementaryTypeName","src":"38722:7:30"}],"id":2448,"name":"VariableDeclaration","src":"38722:15:30"}],"id":2449,"name":"ParameterList","src":"38684:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":2455,"name":"ParameterList","src":"38781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2450,"name":"Identifier","src":"38746:15:30"}],"id":2451,"name":"ModifierInvocation","src":"38746:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1752,"type":"modifier (uint256)","value":"isNotZero"},"id":2452,"name":"Identifier","src":"38762:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2453,"name":"Identifier","src":"38772:7:30"}],"id":2454,"name":"ModifierInvocation","src":"38762:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_680f6a32e9231c9e20746c0afa2d6c3a5c617d8ed04badee4157b674b70920f8","typeString":"literal_string \"destination=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2456,"name":"Identifier","src":"38852:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2444,"type":"address payable","value":"_to"},"id":2457,"name":"Identifier","src":"38860:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2458,"name":"ElementaryTypeNameExpression","src":"38867:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2459,"name":"Literal","src":"38875:1:30"}],"id":2460,"name":"FunctionCall","src":"38867:10:30"}],"id":2461,"name":"BinaryOperation","src":"38860:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"64657374696e6174696f6e3d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"destination=0\"","value":"destination=0"},"id":2462,"name":"Literal","src":"38879:15:30"}],"id":2463,"name":"FunctionCall","src":"38852:43:30"}],"id":2464,"name":"ExpressionStatement","src":"38852:43:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2465,"name":"Identifier","src":"38984:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2444,"type":"address payable","value":"_to"},"id":2466,"name":"Identifier","src":"38997:3:30"}],"id":2467,"name":"IndexAccess","src":"38984:17:30"}],"id":2468,"name":"UnaryOperation","src":"38983:18:30"},{"children":[{"attributes":{"assignments":[2470]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2493,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2469,"name":"ElementaryTypeName","src":"39080:7:30"}],"id":2470,"name":"VariableDeclaration","src":"39080:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2471,"name":"Identifier","src":"39101:7:30"}],"id":2472,"name":"VariableDeclarationStatement","src":"39080:28:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2446,"type":"address","value":"_asset"},"id":2473,"name":"Identifier","src":"39205:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2474,"name":"ElementaryTypeNameExpression","src":"39215:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2475,"name":"Literal","src":"39223:1:30"}],"id":2476,"name":"FunctionCall","src":"39215:10:30"}],"id":2477,"name":"BinaryOperation","src":"39205:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"uint256","value":"etherValue"},"id":2478,"name":"Identifier","src":"39245:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2198,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2479,"name":"Identifier","src":"39258:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2446,"type":"address","value":"_asset"},"id":2480,"name":"Identifier","src":"39273:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2481,"name":"Identifier","src":"39281:7:30"}],"id":2482,"name":"FunctionCall","src":"39258:31:30"}],"id":2483,"name":"Assignment","src":"39245:44:30"}],"id":2484,"name":"ExpressionStatement","src":"39245:44:30"}],"id":2485,"name":"Block","src":"39227:77:30"}],"id":2486,"name":"IfStatement","src":"39201:103:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2487,"name":"Identifier","src":"39515:11:30"}],"id":2489,"name":"MemberAccess","src":"39515:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"uint256","value":"etherValue"},"id":2490,"name":"Identifier","src":"39541:10:30"}],"id":2491,"name":"FunctionCall","src":"39515:37:30"}],"id":2492,"name":"ExpressionStatement","src":"39515:37:30"}],"id":2493,"name":"Block","src":"39003:560:30"}],"id":2494,"name":"IfStatement","src":"38979:584:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4166,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2495,"name":"Identifier","src":"39638:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2444,"type":"address payable","value":"_to"},"id":2496,"name":"Identifier","src":"39652:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2446,"type":"address","value":"_asset"},"id":2497,"name":"Identifier","src":"39657:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2498,"name":"Identifier","src":"39665:7:30"}],"id":2499,"name":"FunctionCall","src":"39638:35:30"}],"id":2500,"name":"ExpressionStatement","src":"39638:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1683,"type":"function (address,address,uint256)","value":"Transferred"},"id":2501,"name":"Identifier","src":"39724:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2444,"type":"address payable","value":"_to"},"id":2502,"name":"Identifier","src":"39736:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2446,"type":"address","value":"_asset"},"id":2503,"name":"Identifier","src":"39741:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2504,"name":"Identifier","src":"39749:7:30"}],"id":2505,"name":"FunctionCall","src":"39724:33:30"}],"id":2506,"name":"EmitStatement","src":"39719:38:30"}],"id":2507,"name":"Block","src":"38781:983:30"}],"id":2508,"name":"FunctionDefinition","src":"38667:1097:30"}],"id":2509,"name":"ContractDefinition","src":"22209:17557:30"}],"id":2510,"name":"SourceUnit","src":"757:39010:30"}},"walletCache.sol":{"AST":{"attributes":{"absolutePath":"walletCache.sol","exportedSymbols":{"IWalletCache":[2520],"WalletCache":[2707]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2511,"name":"PragmaDirective","src":"781:24:31"},{"attributes":{"SourceUnit":2510,"absolutePath":"wallet.sol","file":"./wallet.sol","scope":2708,"symbolAliases":[null],"unitAlias":""},"id":2512,"name":"ImportDirective","src":"807:22:31"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2708,"symbolAliases":[null],"unitAlias":""},"id":2513,"name":"ImportDirective","src":"830:39:31"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2708,"symbolAliases":[null],"unitAlias":""},"id":2514,"name":"ImportDirective","src":"870:38:31"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title IWalletCache interface describes a method for poping an already cached wallet","fullyImplemented":false,"linearizedBaseContracts":[2520],"name":"IWalletCache","scope":2708},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"walletCachePop","scope":2520,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2515,"name":"ParameterList","src":"1052:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2519,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2516,"name":"UserDefinedTypeName","src":"1073:6:31"}],"id":2517,"name":"VariableDeclaration","src":"1073:6:31"}],"id":2518,"name":"ParameterList","src":"1072:8:31"}],"id":2519,"name":"FunctionDefinition","src":"1029:52:31"}],"id":2520,"name":"ContractDefinition","src":"1000:83:31"},{"attributes":{"contractDependencies":[325,2509,3206],"contractKind":"contract","documentation":"/ @title Wallet cache with wallet pre-caching functionality.","fullyImplemented":true,"linearizedBaseContracts":[2707,325,3206],"name":"WalletCache","scope":2708},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":2521,"name":"UserDefinedTypeName","src":"1174:13:31"}],"id":2522,"name":"InheritanceSpecifier","src":"1174:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":2523,"name":"UserDefinedTypeName","src":"1189:12:31"}],"id":2524,"name":"InheritanceSpecifier","src":"1189:12:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"CachedWallet"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_wallet","scope":2528,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2525,"name":"UserDefinedTypeName","src":"1227:6:31"}],"id":2526,"name":"VariableDeclaration","src":"1227:14:31"}],"id":2527,"name":"ParameterList","src":"1226:16:31"}],"id":2528,"name":"EventDefinition","src":"1208:35:31"},{"attributes":{"constant":true,"name":"_DEFAULT_LICENCE_NODE","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2529,"name":"ElementaryTypeName","src":"1348:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307864306666386264363766366532356534653462303130646635383261333661306565396237386534396166653663633163666635646435613833303430333330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 9453...(69 digits omitted)...3024","value":"0xd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a83040330"},"id":2530,"name":"Literal","src":"1397:66:31"}],"id":2531,"name":"VariableDeclaration","src":"1348:115:31"},{"attributes":{"constant":true,"name":"_DEFAULT_TOKEN_WHITELIST_NODE","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2532,"name":"ElementaryTypeName","src":"1506:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307865383466393035373066313366653039663238386632343131666639636635306461363131656430633764623766373364343830353366666339373464333936","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1050...(70 digits omitted)...8950","value":"0xe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396"},"id":2533,"name":"Literal","src":"1563:66:31"}],"id":2534,"name":"VariableDeclaration","src":"1506:123:31"},{"attributes":{"constant":true,"name":"_DEFAULT_WALLET_DEPLOYER_NODE","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2535,"name":"ElementaryTypeName","src":"1675:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307831643063306164626536616464643933363539343436333131653037363761353662363764343165663338663063623636646366373536306432386135613338","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1313...(69 digits omitted)...7784","value":"0x1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a38"},"id":2536,"name":"Literal","src":"1732:66:31"}],"id":2537,"name":"VariableDeclaration","src":"1675:123:31"},{"attributes":{"constant":false,"name":"licenceNode","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2538,"name":"ElementaryTypeName","src":"1805:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2531,"type":"bytes32","value":"_DEFAULT_LICENCE_NODE"},"id":2539,"name":"Identifier","src":"1834:21:31"}],"id":2540,"name":"VariableDeclaration","src":"1805:50:31"},{"attributes":{"constant":false,"name":"tokenWhitelistNode","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2541,"name":"ElementaryTypeName","src":"1861:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2534,"type":"bytes32","value":"_DEFAULT_TOKEN_WHITELIST_NODE"},"id":2542,"name":"Identifier","src":"1897:29:31"}],"id":2543,"name":"VariableDeclaration","src":"1861:65:31"},{"attributes":{"constant":false,"name":"walletDeployerNode","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2544,"name":"ElementaryTypeName","src":"1932:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2537,"type":"bytes32","value":"_DEFAULT_WALLET_DEPLOYER_NODE"},"id":2545,"name":"Identifier","src":"1968:29:31"}],"id":2546,"name":"VariableDeclaration","src":"1932:65:31"},{"attributes":{"constant":false,"name":"cachedWallets","scope":2707,"stateVariable":true,"storageLocation":"default","type":"contract Wallet[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"contract Wallet[]"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2547,"name":"UserDefinedTypeName","src":"2004:6:31"}],"id":2548,"name":"ArrayTypeName","src":"2004:8:31"}],"id":2549,"name":"VariableDeclaration","src":"2004:29:31"},{"attributes":{"constant":false,"name":"ens","scope":2707,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"public"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2550,"name":"ElementaryTypeName","src":"2040:7:31"}],"id":2551,"name":"VariableDeclaration","src":"2040:18:31"},{"attributes":{"constant":false,"name":"defaultSpendLimit","scope":2707,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2552,"name":"ElementaryTypeName","src":"2064:7:31"}],"id":2553,"name":"VariableDeclaration","src":"2064:32:31"},{"attributes":{"documentation":"@notice parameters are passed in so that they can be used to construct new instances of the wallet\n @dev pass in bytes32 to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2707,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2554,"name":"ElementaryTypeName","src":"2311:7:31"}],"id":2555,"name":"VariableDeclaration","src":"2311:13:31"},{"attributes":{"constant":false,"name":"_defaultSpendLimit_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2556,"name":"ElementaryTypeName","src":"2334:7:31"}],"id":2557,"name":"VariableDeclaration","src":"2334:27:31"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2558,"name":"ElementaryTypeName","src":"2371:7:31"}],"id":2559,"name":"VariableDeclaration","src":"2371:24:31"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2560,"name":"ElementaryTypeName","src":"2405:7:31"}],"id":2561,"name":"VariableDeclaration","src":"2405:21:31"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2562,"name":"ElementaryTypeName","src":"2436:7:31"}],"id":2563,"name":"VariableDeclaration","src":"2436:28:31"},{"attributes":{"constant":false,"name":"_walletDeployerNode_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2564,"name":"ElementaryTypeName","src":"2474:7:31"}],"id":2565,"name":"VariableDeclaration","src":"2474:28:31"}],"id":2566,"name":"ParameterList","src":"2301:207:31"},{"attributes":{"parameters":[null]},"children":[],"id":2573,"name":"ParameterList","src":"2568:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":2567,"name":"Identifier","src":"2516:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2555,"type":"address","value":"_ens_"},"id":2568,"name":"Identifier","src":"2530:5:31"}],"id":2569,"name":"ModifierInvocation","src":"2516:20:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":2570,"name":"Identifier","src":"2537:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"bytes32","value":"_controllerNode_"},"id":2571,"name":"Identifier","src":"2550:16:31"}],"id":2572,"name":"ModifierInvocation","src":"2537:30:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2551,"type":"address","value":"ens"},"id":2574,"name":"Identifier","src":"2578:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2555,"type":"address","value":"_ens_"},"id":2575,"name":"Identifier","src":"2584:5:31"}],"id":2576,"name":"Assignment","src":"2578:11:31"}],"id":2577,"name":"ExpressionStatement","src":"2578:11:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2553,"type":"uint256","value":"defaultSpendLimit"},"id":2578,"name":"Identifier","src":"2599:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2557,"type":"uint256","value":"_defaultSpendLimit_"},"id":2579,"name":"Identifier","src":"2619:19:31"}],"id":2580,"name":"Assignment","src":"2599:39:31"}],"id":2581,"name":"ExpressionStatement","src":"2599:39:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2561,"type":"bytes32","value":"_licenceNode_"},"id":2582,"name":"Identifier","src":"2695:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2583,"name":"ElementaryTypeNameExpression","src":"2712:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2584,"name":"Literal","src":"2720:1:31"}],"id":2585,"name":"FunctionCall","src":"2712:10:31"}],"id":2586,"name":"BinaryOperation","src":"2695:27:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2540,"type":"bytes32","value":"licenceNode"},"id":2587,"name":"Identifier","src":"2738:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2561,"type":"bytes32","value":"_licenceNode_"},"id":2588,"name":"Identifier","src":"2752:13:31"}],"id":2589,"name":"Assignment","src":"2738:27:31"}],"id":2590,"name":"ExpressionStatement","src":"2738:27:31"}],"id":2591,"name":"Block","src":"2724:52:31"}],"id":2592,"name":"IfStatement","src":"2691:85:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":2593,"name":"Identifier","src":"2838:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2594,"name":"ElementaryTypeNameExpression","src":"2862:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2595,"name":"Literal","src":"2870:1:31"}],"id":2596,"name":"FunctionCall","src":"2862:10:31"}],"id":2597,"name":"BinaryOperation","src":"2838:34:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2543,"type":"bytes32","value":"tokenWhitelistNode"},"id":2598,"name":"Identifier","src":"2888:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":2599,"name":"Identifier","src":"2909:20:31"}],"id":2600,"name":"Assignment","src":"2888:41:31"}],"id":2601,"name":"ExpressionStatement","src":"2888:41:31"}],"id":2602,"name":"Block","src":"2874:66:31"}],"id":2603,"name":"IfStatement","src":"2834:106:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"bytes32","value":"_walletDeployerNode_"},"id":2604,"name":"Identifier","src":"3002:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2605,"name":"ElementaryTypeNameExpression","src":"3026:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2606,"name":"Literal","src":"3034:1:31"}],"id":2607,"name":"FunctionCall","src":"3026:10:31"}],"id":2608,"name":"BinaryOperation","src":"3002:34:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2546,"type":"bytes32","value":"walletDeployerNode"},"id":2609,"name":"Identifier","src":"3052:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"bytes32","value":"_walletDeployerNode_"},"id":2610,"name":"Identifier","src":"3073:20:31"}],"id":2611,"name":"Assignment","src":"3052:41:31"}],"id":2612,"name":"ExpressionStatement","src":"3052:41:31"}],"id":2613,"name":"Block","src":"3038:66:31"}],"id":2614,"name":"IfStatement","src":"2998:106:31"}],"id":2615,"name":"Block","src":"2568:542:31"}],"id":2616,"name":"FunctionDefinition","src":"2290:820:31"},{"attributes":{"documentation":null,"name":"onlyWalletDeployer","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2617,"name":"ParameterList","src":"3143:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2ae83e68b46e92db3c6a8db018001d48e56a6c05f219cc33be19b5d44f899d9","typeString":"literal_string \"not called by wallet-deployer\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2618,"name":"Identifier","src":"3156:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2619,"name":"Identifier","src":"3164:3:31"}],"id":2620,"name":"MemberAccess","src":"3164:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2621,"name":"Identifier","src":"3178:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2546,"type":"bytes32","value":"walletDeployerNode"},"id":2622,"name":"Identifier","src":"3190:18:31"}],"id":2623,"name":"FunctionCall","src":"3178:31:31"}],"id":2624,"name":"BinaryOperation","src":"3164:45:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not called by wallet-deployer\"","value":"not called by wallet-deployer"},"id":2625,"name":"Literal","src":"3211:31:31"}],"id":2626,"name":"FunctionCall","src":"3156:87:31"}],"id":2627,"name":"ExpressionStatement","src":"3156:87:31"},{"id":2628,"name":"PlaceholderStatement","src":"3253:1:31"}],"id":2629,"name":"Block","src":"3146:115:31"}],"id":2630,"name":"ModifierDefinition","src":"3116:145:31"},{"attributes":{"documentation":"@notice This public method allows anyone to pre-cache wallets","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cacheWallet","scope":2707,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2631,"name":"ParameterList","src":"3357:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":2632,"name":"ParameterList","src":"3367:0:31"},{"children":[{"attributes":{"assignments":[2634]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":2663,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2633,"name":"UserDefinedTypeName","src":"3479:6:31"}],"id":2634,"name":"VariableDeclaration","src":"3479:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract Wallet","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"function (address payable,bool,address,bytes32,bytes32,bytes32,uint256) returns (contract Wallet)"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2635,"name":"UserDefinedTypeName","src":"3499:6:31"}],"id":2636,"name":"NewExpression","src":"3495:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2637,"name":"ElementaryTypeNameExpression","src":"3519:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":2638,"name":"ElementaryTypeNameExpression","src":"3527:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2639,"name":"Identifier","src":"3535:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2546,"type":"bytes32","value":"walletDeployerNode"},"id":2640,"name":"Identifier","src":"3547:18:31"}],"id":2641,"name":"FunctionCall","src":"3535:31:31"}],"id":2642,"name":"FunctionCall","src":"3527:40:31"}],"id":2643,"name":"FunctionCall","src":"3519:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2644,"name":"Literal","src":"3582:4:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2551,"type":"address","value":"ens"},"id":2645,"name":"Identifier","src":"3600:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2543,"type":"bytes32","value":"tokenWhitelistNode"},"id":2646,"name":"Identifier","src":"3617:18:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":290,"type":"function () view returns (bytes32)","value":"controllerNode"},"id":2647,"name":"Identifier","src":"3649:14:31"}],"id":2648,"name":"FunctionCall","src":"3649:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2540,"type":"bytes32","value":"licenceNode"},"id":2649,"name":"Identifier","src":"3679:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2553,"type":"uint256","value":"defaultSpendLimit"},"id":2650,"name":"Identifier","src":"3704:17:31"}],"id":2651,"name":"FunctionCall","src":"3495:236:31"}],"id":2652,"name":"VariableDeclarationStatement","src":"3479:252:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (contract Wallet) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2653,"name":"Identifier","src":"3741:13:31"}],"id":2655,"name":"MemberAccess","src":"3741:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"contract Wallet","value":"wallet"},"id":2656,"name":"Identifier","src":"3760:6:31"}],"id":2657,"name":"FunctionCall","src":"3741:26:31"}],"id":2658,"name":"ExpressionStatement","src":"3741:26:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"overloadedDeclarations":[null],"referencedDeclaration":2528,"type":"function (contract Wallet)","value":"CachedWallet"},"id":2659,"name":"Identifier","src":"3783:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"contract Wallet","value":"wallet"},"id":2660,"name":"Identifier","src":"3796:6:31"}],"id":2661,"name":"FunctionCall","src":"3783:20:31"}],"id":2662,"name":"EmitStatement","src":"3778:25:31"}],"id":2663,"name":"Block","src":"3367:443:31"}],"id":2664,"name":"FunctionDefinition","src":"3337:473:31"},{"attributes":{"documentation":"@notice This public method allows only the wallet deployer to pop pre-cached wallets or create a new one in case there aren't any","implemented":true,"isConstructor":false,"kind":"function","name":"walletCachePop","scope":2707,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2665,"name":"ParameterList","src":"3977:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2697,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2668,"name":"UserDefinedTypeName","src":"4017:6:31"}],"id":2669,"name":"VariableDeclaration","src":"4017:6:31"}],"id":2670,"name":"ParameterList","src":"4016:8:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2630,"type":"modifier ()","value":"onlyWalletDeployer"},"id":2666,"name":"Identifier","src":"3989:18:31"}],"id":2667,"name":"ModifierInvocation","src":"3989:18:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2671,"name":"Identifier","src":"4039:13:31"}],"id":2672,"name":"MemberAccess","src":"4039:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2673,"name":"Literal","src":"4062:1:31"}],"id":2674,"name":"BinaryOperation","src":"4039:24:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2664,"type":"function ()","value":"cacheWallet"},"id":2675,"name":"Identifier","src":"4079:11:31"}],"id":2676,"name":"FunctionCall","src":"4079:13:31"}],"id":2677,"name":"ExpressionStatement","src":"4079:13:31"}],"id":2678,"name":"Block","src":"4065:38:31"}],"id":2679,"name":"IfStatement","src":"4035:68:31"},{"attributes":{"assignments":[2681]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":2696,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2680,"name":"UserDefinedTypeName","src":"4113:6:31"}],"id":2681,"name":"VariableDeclaration","src":"4113:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"contract Wallet"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2682,"name":"Identifier","src":"4129:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2683,"name":"Identifier","src":"4143:13:31"}],"id":2684,"name":"MemberAccess","src":"4143:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2685,"name":"Literal","src":"4166:1:31"}],"id":2686,"name":"BinaryOperation","src":"4143:24:31"}],"id":2687,"name":"IndexAccess","src":"4129:39:31"}],"id":2688,"name":"VariableDeclarationStatement","src":"4113:55:31"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"pop","referencedDeclaration":null,"type":"function ()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2689,"name":"Identifier","src":"4178:13:31"}],"id":2691,"name":"MemberAccess","src":"4178:17:31"}],"id":2692,"name":"FunctionCall","src":"4178:19:31"}],"id":2693,"name":"ExpressionStatement","src":"4178:19:31"},{"attributes":{"functionReturnParameters":2670},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2681,"type":"contract Wallet","value":"wallet"},"id":2694,"name":"Identifier","src":"4215:6:31"}],"id":2695,"name":"Return","src":"4208:13:31"}],"id":2696,"name":"Block","src":"4025:203:31"}],"id":2697,"name":"FunctionDefinition","src":"3954:274:31"},{"attributes":{"documentation":"@notice returns the number of pre-cached wallets","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cachedWalletsCount","scope":2707,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2698,"name":"ParameterList","src":"4318:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2706,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2699,"name":"ElementaryTypeName","src":"4344:7:31"}],"id":2700,"name":"VariableDeclaration","src":"4344:7:31"}],"id":2701,"name":"ParameterList","src":"4343:9:31"},{"children":[{"attributes":{"functionReturnParameters":2701},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2702,"name":"Identifier","src":"4370:13:31"}],"id":2703,"name":"MemberAccess","src":"4370:20:31"}],"id":2704,"name":"Return","src":"4363:27:31"}],"id":2705,"name":"Block","src":"4353:44:31"}],"id":2706,"name":"FunctionDefinition","src":"4291:106:31"}],"id":2707,"name":"ContractDefinition","src":"1150:3249:31"}],"id":2708,"name":"SourceUnit","src":"781:3619:31"}},"walletDeployer.sol":{"AST":{"attributes":{"absolutePath":"walletDeployer.sol","exportedSymbols":{"WalletDeployer":[229]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"775:24:32"},{"attributes":{"SourceUnit":2510,"absolutePath":"wallet.sol","file":"./wallet.sol","scope":230,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"801:22:32"},{"attributes":{"SourceUnit":2708,"absolutePath":"walletCache.sol","file":"./walletCache.sol","scope":230,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"824:27:32"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":230,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"852:38:32"},{"attributes":{"contractDependencies":[325,3206],"contractKind":"contract","documentation":"/ @title Wallet deployer with pre-caching if wallets functionality.","fullyImplemented":true,"linearizedBaseContracts":[229,325,3206],"name":"WalletDeployer","scope":230},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":5,"name":"UserDefinedTypeName","src":"991:13:32"}],"id":6,"name":"InheritanceSpecifier","src":"991:13:32"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":7,"name":"UserDefinedTypeName","src":"1006:12:32"}],"id":8,"name":"InheritanceSpecifier","src":"1006:12:32"},{"attributes":{"anonymous":false,"documentation":null,"name":"DeployedWallet"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_wallet","scope":14,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":9,"name":"UserDefinedTypeName","src":"1046:6:32"}],"id":10,"name":"VariableDeclaration","src":"1046:14:32"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":14,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11,"name":"ElementaryTypeName","src":"1062:7:32"}],"id":12,"name":"VariableDeclaration","src":"1062:14:32"}],"id":13,"name":"ParameterList","src":"1045:32:32"}],"id":14,"name":"EventDefinition","src":"1025:53:32"},{"attributes":{"anonymous":false,"documentation":null,"name":"MigratedWallet"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_wallet","scope":24,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":15,"name":"UserDefinedTypeName","src":"1104:6:32"}],"id":16,"name":"VariableDeclaration","src":"1104:14:32"},{"attributes":{"constant":false,"indexed":false,"name":"_oldWallet","scope":24,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":17,"name":"UserDefinedTypeName","src":"1120:6:32"}],"id":18,"name":"VariableDeclaration","src":"1120:17:32"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":24,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":19,"name":"ElementaryTypeName","src":"1139:7:32"}],"id":20,"name":"VariableDeclaration","src":"1139:14:32"},{"attributes":{"constant":false,"indexed":false,"name":"_paid","scope":24,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":21,"name":"ElementaryTypeName","src":"1155:7:32"}],"id":22,"name":"VariableDeclaration","src":"1155:13:32"}],"id":23,"name":"ParameterList","src":"1103:66:32"}],"id":24,"name":"EventDefinition","src":"1083:87:32"},{"attributes":{"constant":true,"name":"_DEFAULT_WALLET_CACHE_NODE","scope":229,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":25,"name":"ElementaryTypeName","src":"1283:7:32"},{"attributes":{"argumentTypes":null,"hexvalue":"307861663535336362306437373639303831396639643666626161303434313665316664636661303162326139613833336337613131653661653062633162653838","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7930...(69 digits omitted)...0552","value":"0xaf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be88"},"id":26,"name":"Literal","src":"1337:66:32"}],"id":27,"name":"VariableDeclaration","src":"1283:120:32"},{"attributes":{"constant":false,"name":"walletCacheNode","scope":229,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":28,"name":"ElementaryTypeName","src":"1409:7:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":27,"type":"bytes32","value":"_DEFAULT_WALLET_CACHE_NODE"},"id":29,"name":"Identifier","src":"1442:26:32"}],"id":30,"name":"VariableDeclaration","src":"1409:59:32"},{"attributes":{"constant":false,"name":"deployedWallets","scope":229,"stateVariable":true,"storageLocation":"default","type":"mapping(address => address)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => address)"},"children":[{"attributes":{"name":"address","type":"address"},"id":31,"name":"ElementaryTypeName","src":"1483:7:32"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":32,"name":"ElementaryTypeName","src":"1494:7:32"}],"id":33,"name":"Mapping","src":"1475:27:32"}],"id":34,"name":"VariableDeclaration","src":"1475:50:32"},{"attributes":{"documentation":"@notice it needs to know to address of the wallet cache","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":229,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":61,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":35,"name":"ElementaryTypeName","src":"1609:7:32"}],"id":36,"name":"VariableDeclaration","src":"1609:13:32"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":61,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":37,"name":"ElementaryTypeName","src":"1624:7:32"}],"id":38,"name":"VariableDeclaration","src":"1624:24:32"},{"attributes":{"constant":false,"name":"_walletCacheNode_","scope":61,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":39,"name":"ElementaryTypeName","src":"1650:7:32"}],"id":40,"name":"VariableDeclaration","src":"1650:25:32"}],"id":41,"name":"ParameterList","src":"1608:68:32"},{"attributes":{"parameters":[null]},"children":[],"id":48,"name":"ParameterList","src":"1736:0:32"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":42,"name":"Identifier","src":"1684:13:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"address","value":"_ens_"},"id":43,"name":"Identifier","src":"1698:5:32"}],"id":44,"name":"ModifierInvocation","src":"1684:20:32"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":45,"name":"Identifier","src":"1705:12:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":38,"type":"bytes32","value":"_controllerNode_"},"id":46,"name":"Identifier","src":"1718:16:32"}],"id":47,"name":"ModifierInvocation","src":"1705:30:32"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":40,"type":"bytes32","value":"_walletCacheNode_"},"id":49,"name":"Identifier","src":"1796:17:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":50,"name":"ElementaryTypeNameExpression","src":"1817:7:32"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":51,"name":"Literal","src":"1825:1:32"}],"id":52,"name":"FunctionCall","src":"1817:10:32"}],"id":53,"name":"BinaryOperation","src":"1796:31:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"walletCacheNode"},"id":54,"name":"Identifier","src":"1843:15:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":40,"type":"bytes32","value":"_walletCacheNode_"},"id":55,"name":"Identifier","src":"1861:17:32"}],"id":56,"name":"Assignment","src":"1843:35:32"}],"id":57,"name":"ExpressionStatement","src":"1843:35:32"}],"id":58,"name":"Block","src":"1829:60:32"}],"id":59,"name":"IfStatement","src":"1792:97:32"}],"id":60,"name":"Block","src":"1736:159:32"}],"id":61,"name":"FunctionDefinition","src":"1597:298:32"},{"attributes":{"documentation":"@notice This function is used to deploy a Wallet for a given owner address\n @param _owner is the owner address for the new Wallet to be","implemented":true,"isConstructor":false,"kind":"function","name":"deployWallet","scope":229,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":99,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":62,"name":"ElementaryTypeName","src":"2074:15:32"}],"id":63,"name":"VariableDeclaration","src":"2074:22:32"}],"id":64,"name":"ParameterList","src":"2073:24:32"},{"attributes":{"parameters":[null]},"children":[],"id":67,"name":"ParameterList","src":"2122:0:32"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":65,"name":"Identifier","src":"2107:14:32"}],"id":66,"name":"ModifierInvocation","src":"2107:14:32"},{"children":[{"attributes":{"assignments":[69]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":98,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":68,"name":"UserDefinedTypeName","src":"2132:6:32"}],"id":69,"name":"VariableDeclaration","src":"2132:13:32"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract Wallet","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"walletCachePop","referencedDeclaration":2519,"type":"function () external returns (contract Wallet)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IWalletCache","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2520,"type":"type(contract IWalletCache)","value":"IWalletCache"},"id":70,"name":"Identifier","src":"2148:12:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":71,"name":"Identifier","src":"2161:11:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"walletCacheNode"},"id":72,"name":"Identifier","src":"2173:15:32"}],"id":73,"name":"FunctionCall","src":"2161:28:32"}],"id":74,"name":"FunctionCall","src":"2148:42:32"}],"id":75,"name":"MemberAccess","src":"2148:57:32"}],"id":76,"name":"FunctionCall","src":"2148:59:32"}],"id":77,"name":"VariableDeclarationStatement","src":"2132:75:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":14,"type":"function (contract Wallet,address)","value":"DeployedWallet"},"id":78,"name":"Identifier","src":"2222:14:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":69,"type":"contract Wallet","value":"wallet"},"id":79,"name":"Identifier","src":"2237:6:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":63,"type":"address payable","value":"_owner"},"id":80,"name":"Identifier","src":"2245:6:32"}],"id":81,"name":"FunctionCall","src":"2222:30:32"}],"id":82,"name":"EmitStatement","src":"2217:35:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":34,"type":"mapping(address => address)","value":"deployedWallets"},"id":83,"name":"Identifier","src":"2263:15:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":63,"type":"address payable","value":"_owner"},"id":84,"name":"Identifier","src":"2279:6:32"}],"id":85,"name":"IndexAccess","src":"2263:23:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":86,"name":"ElementaryTypeNameExpression","src":"2289:7:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":69,"type":"contract Wallet","value":"wallet"},"id":87,"name":"Identifier","src":"2297:6:32"}],"id":88,"name":"FunctionCall","src":"2289:15:32"}],"id":89,"name":"Assignment","src":"2263:41:32"}],"id":90,"name":"ExpressionStatement","src":"2263:41:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferOwnership","referencedDeclaration":3857,"type":"function (address payable,bool) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":69,"type":"contract Wallet","value":"wallet"},"id":91,"name":"Identifier","src":"2404:6:32"}],"id":93,"name":"MemberAccess","src":"2404:24:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":63,"type":"address payable","value":"_owner"},"id":94,"name":"Identifier","src":"2429:6:32"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":95,"name":"Literal","src":"2437:5:32"}],"id":96,"name":"FunctionCall","src":"2404:39:32"}],"id":97,"name":"ExpressionStatement","src":"2404:39:32"}],"id":98,"name":"Block","src":"2122:328:32"}],"id":99,"name":"FunctionDefinition","src":"2052:398:32"},{"attributes":{"documentation":"@notice This function is used to migrate an owner's security settings from a previous version of the wallet\n @param _owner is the owner address for the new Wallet to be\n @param _spendLimit is the user's set daily spend limit\n @param _gasTopUpLimit is the user's set daily gas top-up limit\n @param _whitelistedAddresses is the set of the user's whitelisted addresses","implemented":true,"isConstructor":false,"kind":"function","name":"migrateWallet","scope":229,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":228,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":100,"name":"ElementaryTypeName","src":"2890:15:32"}],"id":101,"name":"VariableDeclaration","src":"2890:22:32"},{"attributes":{"constant":false,"name":"_oldWallet","scope":228,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":102,"name":"UserDefinedTypeName","src":"2922:6:32"}],"id":103,"name":"VariableDeclaration","src":"2922:17:32"},{"attributes":{"constant":false,"name":"_initializedSpendLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":104,"name":"ElementaryTypeName","src":"2949:4:32"}],"id":105,"name":"VariableDeclaration","src":"2949:27:32"},{"attributes":{"constant":false,"name":"_initializedGasTopUpLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":106,"name":"ElementaryTypeName","src":"2986:4:32"}],"id":107,"name":"VariableDeclaration","src":"2986:30:32"},{"attributes":{"constant":false,"name":"_initializedLoadLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":108,"name":"ElementaryTypeName","src":"3026:4:32"}],"id":109,"name":"VariableDeclaration","src":"3026:26:32"},{"attributes":{"constant":false,"name":"_initializedWhitelist","scope":228,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":110,"name":"ElementaryTypeName","src":"3062:4:32"}],"id":111,"name":"VariableDeclaration","src":"3062:26:32"},{"attributes":{"constant":false,"name":"_spendLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":112,"name":"ElementaryTypeName","src":"3098:7:32"}],"id":113,"name":"VariableDeclaration","src":"3098:19:32"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":114,"name":"ElementaryTypeName","src":"3127:7:32"}],"id":115,"name":"VariableDeclaration","src":"3127:22:32"},{"attributes":{"constant":false,"name":"_loadLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":116,"name":"ElementaryTypeName","src":"3159:7:32"}],"id":117,"name":"VariableDeclaration","src":"3159:18:32"},{"attributes":{"constant":false,"name":"_whitelistedAddresses","scope":228,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":118,"name":"ElementaryTypeName","src":"3187:7:32"}],"id":119,"name":"ArrayTypeName","src":"3187:9:32"}],"id":120,"name":"VariableDeclaration","src":"3187:40:32"}],"id":121,"name":"ParameterList","src":"2880:353:32"},{"attributes":{"parameters":[null]},"children":[],"id":124,"name":"ParameterList","src":"3266:0:32"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":122,"name":"Identifier","src":"3251:14:32"}],"id":123,"name":"ModifierInvocation","src":"3251:14:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc10a0d4bd5777d02ae2f8773eb9dd9ef381a268317437b361c1e6a09e11a733","typeString":"literal_string \"wallet already deployed for owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":125,"name":"Identifier","src":"3276:7:32"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":34,"type":"mapping(address => address)","value":"deployedWallets"},"id":126,"name":"Identifier","src":"3284:15:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":127,"name":"Identifier","src":"3300:6:32"}],"id":128,"name":"IndexAccess","src":"3284:23:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":129,"name":"ElementaryTypeNameExpression","src":"3311:7:32"},{"attributes":{"argumentTypes":null,"hexvalue":"307830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0x0"},"id":130,"name":"Literal","src":"3319:3:32"}],"id":131,"name":"FunctionCall","src":"3311:12:32"}],"id":132,"name":"BinaryOperation","src":"3284:39:32"},{"attributes":{"argumentTypes":null,"hexvalue":"77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"wallet already deployed for owner\"","value":"wallet already deployed for owner"},"id":133,"name":"Literal","src":"3325:35:32"}],"id":134,"name":"FunctionCall","src":"3276:85:32"}],"id":135,"name":"ExpressionStatement","src":"3276:85:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab1d0c7b5f91ac46dfc23c1986d9eb5ab20459b5d8578053fe0a04391657b19f","typeString":"literal_string \"owner mismatch\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":136,"name":"Identifier","src":"3371:7:32"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":3897,"type":"function () view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"contract Wallet","value":"_oldWallet"},"id":137,"name":"Identifier","src":"3379:10:32"}],"id":138,"name":"MemberAccess","src":"3379:16:32"}],"id":139,"name":"FunctionCall","src":"3379:18:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":140,"name":"Identifier","src":"3401:6:32"}],"id":141,"name":"BinaryOperation","src":"3379:28:32"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e6572206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner mismatch\"","value":"owner mismatch"},"id":142,"name":"Literal","src":"3409:16:32"}],"id":143,"name":"FunctionCall","src":"3371:55:32"}],"id":144,"name":"ExpressionStatement","src":"3371:55:32"},{"attributes":{"assignments":[146]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":227,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":145,"name":"UserDefinedTypeName","src":"3437:6:32"}],"id":146,"name":"VariableDeclaration","src":"3437:13:32"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract Wallet","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"walletCachePop","referencedDeclaration":2519,"type":"function () external returns (contract Wallet)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IWalletCache","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2520,"type":"type(contract IWalletCache)","value":"IWalletCache"},"id":147,"name":"Identifier","src":"3453:12:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":148,"name":"Identifier","src":"3466:11:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"walletCacheNode"},"id":149,"name":"Identifier","src":"3478:15:32"}],"id":150,"name":"FunctionCall","src":"3466:28:32"}],"id":151,"name":"FunctionCall","src":"3453:42:32"}],"id":152,"name":"MemberAccess","src":"3453:57:32"}],"id":153,"name":"FunctionCall","src":"3453:59:32"}],"id":154,"name":"VariableDeclarationStatement","src":"3437:75:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"},{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":24,"type":"function (contract Wallet,contract Wallet,address,uint256)","value":"MigratedWallet"},"id":155,"name":"Identifier","src":"3527:14:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":156,"name":"Identifier","src":"3542:6:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"contract Wallet","value":"_oldWallet"},"id":157,"name":"Identifier","src":"3550:10:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":158,"name":"Identifier","src":"3562:6:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":159,"name":"Identifier","src":"3570:3:32"}],"id":160,"name":"MemberAccess","src":"3570:9:32"}],"id":161,"name":"FunctionCall","src":"3527:53:32"}],"id":162,"name":"EmitStatement","src":"3522:58:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":34,"type":"mapping(address => address)","value":"deployedWallets"},"id":163,"name":"Identifier","src":"3591:15:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":164,"name":"Identifier","src":"3607:6:32"}],"id":165,"name":"IndexAccess","src":"3591:23:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":166,"name":"ElementaryTypeNameExpression","src":"3617:7:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":167,"name":"Identifier","src":"3625:6:32"}],"id":168,"name":"FunctionCall","src":"3617:15:32"}],"id":169,"name":"Assignment","src":"3591:41:32"}],"id":170,"name":"ExpressionStatement","src":"3591:41:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":105,"type":"bool","value":"_initializedSpendLimit"},"id":171,"name":"Identifier","src":"3710:22:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setSpendLimit","referencedDeclaration":1210,"type":"function (uint256) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":172,"name":"Identifier","src":"3748:6:32"}],"id":174,"name":"MemberAccess","src":"3748:20:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":113,"type":"uint256","value":"_spendLimit"},"id":175,"name":"Identifier","src":"3769:11:32"}],"id":176,"name":"FunctionCall","src":"3748:33:32"}],"id":177,"name":"ExpressionStatement","src":"3748:33:32"}],"id":178,"name":"Block","src":"3734:58:32"}],"id":179,"name":"IfStatement","src":"3706:86:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"bool","value":"_initializedGasTopUpLimit"},"id":180,"name":"Identifier","src":"3805:25:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setGasTopUpLimit","referencedDeclaration":1394,"type":"function (uint256) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":181,"name":"Identifier","src":"3846:6:32"}],"id":183,"name":"MemberAccess","src":"3846:23:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"uint256","value":"_gasTopUpLimit"},"id":184,"name":"Identifier","src":"3870:14:32"}],"id":185,"name":"FunctionCall","src":"3846:39:32"}],"id":186,"name":"ExpressionStatement","src":"3846:39:32"}],"id":187,"name":"Block","src":"3832:64:32"}],"id":188,"name":"IfStatement","src":"3801:95:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"bool","value":"_initializedLoadLimit"},"id":189,"name":"Identifier","src":"3909:21:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setLoadLimit","referencedDeclaration":1515,"type":"function (uint256) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":190,"name":"Identifier","src":"3946:6:32"}],"id":192,"name":"MemberAccess","src":"3946:19:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"uint256","value":"_loadLimit"},"id":193,"name":"Identifier","src":"3966:10:32"}],"id":194,"name":"FunctionCall","src":"3946:31:32"}],"id":195,"name":"ExpressionStatement","src":"3946:31:32"}],"id":196,"name":"Block","src":"3932:56:32"}],"id":197,"name":"IfStatement","src":"3905:83:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":111,"type":"bool","value":"_initializedWhitelist"},"id":198,"name":"Identifier","src":"4001:21:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setWhitelist","referencedDeclaration":834,"type":"function (address[] memory) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":199,"name":"Identifier","src":"4038:6:32"}],"id":201,"name":"MemberAccess","src":"4038:19:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"address[] calldata","value":"_whitelistedAddresses"},"id":202,"name":"Identifier","src":"4058:21:32"}],"id":203,"name":"FunctionCall","src":"4038:42:32"}],"id":204,"name":"ExpressionStatement","src":"4038:42:32"}],"id":205,"name":"Block","src":"4024:67:32"}],"id":206,"name":"IfStatement","src":"3997:94:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferOwnership","referencedDeclaration":3857,"type":"function (address payable,bool) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":207,"name":"Identifier","src":"4101:6:32"}],"id":209,"name":"MemberAccess","src":"4101:24:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":210,"name":"Identifier","src":"4126:6:32"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":211,"name":"Literal","src":"4134:5:32"}],"id":212,"name":"FunctionCall","src":"4101:39:32"}],"id":213,"name":"ExpressionStatement","src":"4101:39:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":214,"name":"Identifier","src":"4155:3:32"}],"id":215,"name":"MemberAccess","src":"4155:9:32"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":216,"name":"Literal","src":"4167:1:32"}],"id":217,"name":"BinaryOperation","src":"4155:13:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":218,"name":"Identifier","src":"4184:6:32"}],"id":220,"name":"MemberAccess","src":"4184:15:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":221,"name":"Identifier","src":"4200:3:32"}],"id":222,"name":"MemberAccess","src":"4200:9:32"}],"id":223,"name":"FunctionCall","src":"4184:26:32"}],"id":224,"name":"ExpressionStatement","src":"4184:26:32"}],"id":225,"name":"Block","src":"4170:51:32"}],"id":226,"name":"IfStatement","src":"4151:70:32"}],"id":227,"name":"Block","src":"3266:961:32"}],"id":228,"name":"FunctionDefinition","src":"2858:1369:32"}],"id":229,"name":"ContractDefinition","src":"964:3265:32"}],"id":230,"name":"SourceUnit","src":"775:3455:32"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file +{"contracts":{"controller.sol:Controller":{"bin":"608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032","srcmap":"1460:5751:0:-;;;2239:84;8:9:-1;5:2;;;30:1;27;20:12;5:2;2239:84:0;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2239:84:0;2314:5;1543:18:25;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;;;;2239:84:0;;2314:5;1571:32:25;-1:-1:-1;;;1687:15:25;;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;1464:360;;2239:84:0;1460:5751;;;;;;","srcmap-runtime":"1460:5751:0:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1460:5751:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6665:108;;;:::i;:::-;;4022:99;;;:::i;:::-;;;;;;;;;;;;;;;;3174:97;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3174:97:0;-1:-1:-1;;;;;3174:97:0;;:::i;3173:94:25:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;4225:117:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4225:117:0;-1:-1:-1;;;;;4225:117:0;;:::i;3323:89::-;;;:::i;4727:80::-;;;:::i;2943:102::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2943:102:0;-1:-1:-1;;;;;2943:102:0;;:::i;3543:306:25:-;;;:::i;3932:85::-;;;:::i;:::-;;;;-1:-1:-1;;;;;3932:85:25;;;;;;;;;;;;;;7014:195:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;7014:195:0;;;;;;;;;;;;;;;;;:::i;3550:119::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3550:119:0;-1:-1:-1;;;;;3550:119:0;;:::i;2247:809:25:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;2247:809:25;;;;;;;;;;:::i;4454:127:0:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4454:127:0;-1:-1:-1;;;;;4454:127:0;;:::i;6822:103::-;;;:::i;3813:114::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3813:114:0;-1:-1:-1;;;;;3813:114:0;;:::i;6665:108::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6717:8;:15;;-1:-1:-1;;6717:15:0;6728:4;6717:15;;;6747:19;;;6755:10;6747:19;;;;;;;;;;;;;6665:108::o;4022:99::-;4098:16;;4022:99;:::o;3174:97::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3242:22:0;3255:8;3242:12;:22::i;:::-;3174:97;:::o;3173:94:25:-;3222:4;3245:15;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;4225:117:0:-;4294:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4317:18:0;;;;;:8;:18;;;;;;;;;4225:117::o;3323:89::-;3394:11;;3323:89;:::o;4727:80::-;4792:8;;;;4727:80;:::o;2943:102::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2765:11:0;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3019:19;3029:8;3019:9;:19::i;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3784:1;3767:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;;;;;;;;;;;;;;;;;;;;;;;3543:306::o;3932:85::-;3970:15;4004:6;-1:-1:-1;;;;;4004:6:25;3932:85;:::o;7014:195:0:-;2431:10;2422:20;;;;:8;:20;;;;;;;;2414:52;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;-1:-1:-1;;;2414:52:0;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;7123:35;7137:3;7142:6;7150:7;7123:13;:35::i;:::-;7173:29;;;-1:-1:-1;;;;;7173:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;7014:195;;;:::o;3550:119::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;3638:24;3653:8;3638:14;:24::i;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;4454:127:0:-;4528:4;2765:11;:9;:11::i;:::-;2764:12;2756:46;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;-1:-1:-1;;;2756:46:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4551:23:0;;;;;:13;:23;;;;;;;;;4454:127::o;6822:103::-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;6868:8:0;:16;;-1:-1:-1;;6868:16:0;;;6899:19;;;6907:10;6899:19;;;;;;;;;;;;;6822:103::o;3813:114::-;2576:20;2585:10;2576:8;:20::i;:::-;:44;;;-1:-1:-1;2609:10:0;2600:20;;;;:8;:20;;;;;;;;2576:44;2568:85;;;;;-1:-1:-1;;;2568:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3893:27;3911:8;3893:17;:27::i;4123:107:25:-;4182:4;4217:6;-1:-1:-1;;;;;4217:6:25;;;4205:18;;;;4123:107::o;5434:236:0:-;-1:-1:-1;;;;;5500:18:0;;;;;;:8;:18;;;;;;;;5492:63;;;;;-1:-1:-1;;;5492:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5565:18:0;;5586:5;5565:18;;;:8;:18;;;;;;;;;:26;;-1:-1:-1;;5565:26:0;;;5601:11;:13;;-1:-1:-1;;5601:13:0;;;5629:34;;5642:10;5629:34;;;;;;;;;;;;;;;;;;;;;5434:236;:::o;4875:482::-;-1:-1:-1;;;;;4939:18:0;;;;;;:8;:18;;;;;;;;4938:19;4930:68;;;;-1:-1:-1;;;4930:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5017:23:0;;;;;;:13;:23;;;;;;;;5016:24;5008:77;;;;-1:-1:-1;;;5008:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5104:18;5113:8;5104;:18::i;:::-;5103:19;5095:69;;;;-1:-1:-1;;;5095:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5182:22:0;;5174:71;;;;-1:-1:-1;;;5174:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5255:18:0;;;;;;5276:4;5255:18;;;;;;;;;:25;;-1:-1:-1;;5255:25:0;;;;;5290:11;:13;;;;;;;;5318:32;;5329:10;5318:32;;;;;;;;;;;;;;;;;;;;;4875:482;:::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;5743:502:0:-;-1:-1:-1;;;;;5812:18:0;;;;;;:8;:18;;;;;;;;5811:19;5803:68;;;;-1:-1:-1;;;5803:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5890:23:0;;;;;;:13;:23;;;;;;;;5889:24;5881:77;;;;-1:-1:-1;;;5881:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5977:18;5986:8;5977;:18::i;:::-;5976:19;5968:69;;;;-1:-1:-1;;;5968:69:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6055:22:0;;6047:71;;;;-1:-1:-1;;;6047:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6128:23:0;;;;;;:13;:23;;;;;;;;;:30;;-1:-1:-1;;6128:30:0;6154:4;6128:30;;;;;;6168:16;:18;;;;;;;6201:37;;6217:10;6201:37;;;;;;;;;;;;;;;;;;;;;5743:502;:::o;6327:265::-;-1:-1:-1;;;;;6398:23:0;;;;;;:13;:23;;;;;;;;6390:72;;;;-1:-1:-1;;;6390:72:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6472:23:0;;6498:5;6472:23;;;:13;:23;;;;;;;;;:31;;-1:-1:-1;;6472:31:0;;;6513:16;:18;;-1:-1:-1;;6513:18:0;;;6546:39;;6564:10;6546:39;;;;;;;;;;;;;;;;;;;;;6327:265;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o"},"controller.sol:IController":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/Address.sol:Address":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820b63a6a259f8e7ee3aac481e83edd7cff5692dc8ac220882f948aae994315da0364736f6c63430005110032","srcmap":"94:863:1:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"94:863:1:-;;;;;;;;"},"externals/ECDSA.sol:ECDSA":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201eba8f1e236cd8ce472fb5423b4074aba05f0f18e8e9e353313e8dd68d0ac5ce64736f6c63430005110032","srcmap":"1392:3417:2:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1392:3417:2:-;;;;;;;;"},"externals/ERC165.sol:ERC165":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ERC20.sol:ERC20":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/SafeERC20.sol:SafeERC20":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a7231582074cd99c8acf6c9fb42415426f4f8c7122a51f40e2402617e36aa67db9a6f09ac64736f6c63430005110032","srcmap":"1715:3139:5:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"1715:3139:5:-;;;;;;;;"},"externals/SafeMath.sol:SafeMath":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158201dc1e25f23a0e2b33b4b9e636eeaa7f4ecce3f558f1dd014fc82ed67f7527cf764736f6c63430005110032","srcmap":"589:2938:6:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"589:2938:6:-;;;;;;;;"},"externals/ens/ENS.sol:ENS":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/ENSBytesUtils.sol:ENSBytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820bc83a51e2df7a2bc1eb2469b9a993acd8dc576d62a7dd12d08b2cb5161f22b0264736f6c63430005110032","srcmap":"26:11042:8:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"26:11042:8:-;;;;;;;;"},"externals/ens/PublicResolver.sol:PublicResolver":{"bin":"60806040523480156200001157600080fd5b50604051620027d5380380620027d583398101604081905262000034916200006d565b600b80546001600160a01b0319166001600160a01b0392909216919091179055620000d6565b80516200006781620000bc565b92915050565b6000602082840312156200008057600080fd5b60006200008e84846200005a565b949350505050565b60006200006782620000b0565b6000620000678262000096565b6001600160a01b031690565b620000c781620000a3565b8114620000d357600080fd5b50565b6126ef80620000e66000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","bin-runtime":"608060405234801561001057600080fd5b506004361061018e5760003560e01c8063691f3431116100de578063bc1c58d111610097578063d5fa2b0011610071578063d5fa2b0014610390578063e59d895d146103a3578063f1cb7e06146103b6578063f86bc879146103c95761018e565b8063bc1c58d114610349578063c86902331461035c578063ce3decdc1461037d5761018e565b8063691f3431146102ca57806377372213146102dd57806390a01f2d146102f0578063a8fa568214610303578063ac9650d814610316578063ad5780af146103365761018e565b8063304e6ade1161014b5780634cbf6ba4116101255780634cbf6ba41461027157806359d1d43c146102845780635c98042b146102a4578063623195b0146102b75761018e565b8063304e6ade146102385780633b3b57de1461024b5780633e9ce7941461025e5761018e565b806301ffc9a7146101935780630af179d7146101bc57806310f13a8c146101d1578063124a319c146101e45780632203ab561461020457806329cd62ea14610225575b600080fd5b6101a66101a136600461226f565b6103dc565b6040516101b39190612482565b60405180910390f35b6101cf6101ca3660046120cf565b610409565b005b6101cf6101df366004612125565b6105f6565b6101f76101f236600461206d565b6106a3565b6040516101b39190612455565b610217610212366004611fb7565b6108ce565b6040516101b392919061256b565b6101cf610233366004611fe7565b6109ed565b6101cf6102463660046120cf565b610a6d565b6101f7610259366004611ecf565b610acc565b6101cf61026c366004611f74565b610b01565b6101a661027f366004611fb7565b610b7b565b6102976102923660046120cf565b610bad565b6040516101b391906124d9565b6102976102b2366004611ecf565b610c6f565b6101cf6102c53660046121ac565b610d10565b6102976102d8366004611ecf565b610d8b565b6101cf6102eb3660046120cf565b610df5565b6101cf6102fe366004612214565b610e54565b61029761031136600461202a565b610f19565b610329610324366004611e8d565b610fa6565b6040516101b39190612471565b6101cf610344366004611ecf565b6110cc565b610297610357366004611ecf565b61111f565b61036f61036a366004611ecf565b611187565b6040516101b392919061249e565b6101cf61038b3660046120cf565b6111a1565b6101cf61039e366004611eed565b6112b0565b6101cf6103b136600461209d565b6112d7565b6102976103c4366004611fb7565b611367565b6101a66103d7366004611f27565b611410565b60006001600160e01b03198216631674750f60e21b1480610401575061040182611436565b90505b919050565b826104138161145b565b61041c57600080fd5b6000806060808261042b611bb9565b61047560008a8a8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff61152a169050565b90505b61048181611545565b6105995761ffff86166104d9578060400151955061049e81611553565b9350836040516020016104b1919061243e565b6040516020818303038152906040528051906020012091506104d28161157a565b925061058b565b60606104e482611553565b9050816040015161ffff168761ffff1614158061050e575061050c858263ffffffff61159b16565b155b15610589576105628b86898d8d8080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250505050602087015189518c9182900390156115b9565b8160400151965081602001519550809450848051906020012092506105868261157a565b93505b505b610594816117e6565b610478565b508251156105eb576105eb8984878b8b8080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152505088518b9250828f039150156115b9565b505050505050505050565b846106008161145b565b61060957600080fd5b8282600a6000898152602001908152602001600020878760405161062e929190612431565b908152604051908190036020019020610648929091611c04565b508484604051610659929190612431565b6040518091039020867fd8c9334b1a9c2f9da342a0a2b32629c1a229b6445dad78947f674b44444a755087876040516106939291906124c7565b60405180910390a3505050505050565b60008281526007602090815260408083206001600160e01b0319851684529091528120546001600160a01b031680156106dd5790506108c8565b60006106e885610acc565b90506001600160a01b038116610703576000925050506108c8565b60006060826001600160a01b03166301ffc9a760e01b60405160240161072991906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b1790525161075e919061243e565b600060405180830381855afa9150503d8060008114610799576040519150601f19603f3d011682016040523d82523d6000602084013e61079e565b606091505b50915091508115806107b1575060208151105b806107d5575080601f815181106107c457fe5b01602001516001600160f81b031916155b156107e75760009450505050506108c8565b826001600160a01b03168660405160240161080291906124b9565b60408051601f198184030181529181526020820180516001600160e01b03166301ffc9a760e01b17905251610837919061243e565b600060405180830381855afa9150503d8060008114610872576040519150601f19603f3d011682016040523d82523d6000602084013e610877565b606091505b50909250905081158061088b575060208151105b806108af575080601f8151811061089e57fe5b01602001516001600160f81b031916155b156108c15760009450505050506108c8565b5090925050505b92915050565b600082815260208190526040812060609060015b8481116109cf578085161580159061091a57506000818152602083905260409020546002600019610100600184161502019091160415155b156109c7576000818152602083815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452849391928391908301828280156109b55780601f1061098a576101008083540402835291602001916109b5565b820191906000526020600020905b81548152906001019060200180831161099857829003601f168201915b505050505090509350935050506109e6565b60011b6108e2565b505060408051602081019091526000808252925090505b9250929050565b826109f78161145b565b610a0057600080fd5b6040805180820182528481526020808201858152600088815260099092529083902091518255516001909101555184907f1d6f5e03d3f63eb58751986629a5439baee5079ff04f345becb66e23eb154e4690610a5f908690869061249e565b60405180910390a250505050565b82610a778161145b565b610a8057600080fd5b6000848152600260205260409020610a99908484611c04565b50837fe379c1624ed7e714cc0937528a32359d69d5281337765313dba4e081b72d75788484604051610a5f9291906124c7565b60006060610adb83603c611367565b9050805160001415610af1576000915050610404565b610afa816118b9565b9392505050565b6000838152600c60209081526040808320338085529083528184206001600160a01b038716808652935292819020805460ff19168515151790555190919085907fe1c5610a6e0cbe10764ecd182adcef1ec338dc4e199c99c32ce98f38e12791df90610b6e908690612482565b60405180910390a4505050565b600091825260066020908152604080842060048352818520548552825280842092845291905290205461ffff16151590565b6060600a60008581526020019081526020016000208383604051610bd2929190612431565b9081526040805160209281900383018120805460026001821615610100026000190190911604601f81018590048502830185019093528282529092909190830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b820191906000526020600020905b815481529060010190602001808311610c4457829003601f168201915b505050505090509392505050565b60008181526003602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b820191906000526020600020905b815481529060010190602001808311610ce757829003601f168201915b50505050509050919050565b83610d1a8161145b565b610d2357600080fd5b6000198401841615610d3457600080fd5b6000858152602081815260408083208784529091529020610d56908484611c04565b50604051849086907faa121bbeef5f32f5961a2a28966e769023910fc9479059ee3495d4c1a696efe390600090a35050505050565b60008181526008602090815260409182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b82610dff8161145b565b610e0857600080fd5b6000848152600860205260409020610e21908484611c04565b50837fb7d29e911041e8d9b843369e890bcb72c9388692ba48b65ac54e7214c4c348f78484604051610a5f9291906124c7565b82610e5e8161145b565b610e6757600080fd5b837f65412581168e88a1e60c6459d7f44ae83ad0832e670826c05a4e2476b57af7528484604051610e9992919061256b565b60405180910390a2603c831415610eeb57837f52d7d861f09ab3d26239d492e8968629f95e9e318cf0b73bfddc441522a15fd2610ed5846118b9565b604051610ee29190612463565b60405180910390a25b600084815260016020908152604080832086845282529091208351610f1292850190611c82565b5050505050565b6000838152600560209081526040808320600483528184205484528252808320858452825280832061ffff8516845282529182902080548351601f6002600019610100600186161502019093169290920491820184900484028101840190945280845260609392830182828015610c615780601f10610c3657610100808354040283529160200191610c61565b604080518281526020808402820101909152606090828015610fdc57816020015b6060815260200190600190039081610fc75790505b50905060005b828110156110c5576000606030868685818110610ffb57fe5b602002820190508035601e193684900301811261101757600080fd5b9091016020810191503567ffffffffffffffff81111561103657600080fd5b3681900382131561104657600080fd5b604051611054929190612431565b600060405180830381855af49150503d806000811461108f576040519150601f19603f3d011682016040523d82523d6000602084013e611094565b606091505b5091509150816110a357600080fd5b808484815181106110b057fe5b60209081029190910101525050600101610fe2565b5092915050565b806110d68161145b565b6110df57600080fd5b600082815260046020526040808220805460010190555183917fb757169b8492ca2f1c6619d9d76ce22803035c3b1d5f6930dffe7b127c1a198391a25050565b600081815260026020818152604092839020805484516001821615610100026000190190911693909304601f81018390048302840183019094528383526060939091830182828015610d045780601f10610cd957610100808354040283529160200191610d04565b600090815260096020526040902080546001909101549091565b826111ab8161145b565b6111b457600080fd5b60008481526003602090815260409182902080548351601f60026000196101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156112495780601f1061121e57610100808354040283529160200191611249565b820191906000526020600020905b81548152906001019060200180831161122c57829003601f168201915b505050600088815260036020526040902092935061126c92915086905085611c04565b50847f8f15ed4b723ef428f250961da8315675b507046737e19319fc1a4d81bfe87f858286866040516112a1939291906124ea565b60405180910390a25050505050565b816112ba8161145b565b6112c357600080fd5b6112d283603c6102fe856118d8565b505050565b826112e18161145b565b6112ea57600080fd5b60008481526007602090815260408083206001600160e01b0319871680855292529182902080546001600160a01b0319166001600160a01b038616179055905185907f7c69f06bea0bdef565b709e93a147836b0063ba2dd89f02d0b7e8d931e6a6daa90611359908690612455565b60405180910390a350505050565b600082815260016020818152604080842085855282529283902080548451600294821615610100026000190190911693909304601f810183900483028401830190945283835260609390918301828280156114035780601f106113d857610100808354040283529160200191611403565b820191906000526020600020905b8154815290600101906020018083116113e657829003601f168201915b5050505050905092915050565b600c60209081526000938452604080852082529284528284209052825290205460ff1681565b60006001600160e01b0319821663c869023360e01b1480610401575061040182611908565b600b546040516302571be360e01b815260009182916001600160a01b03909116906302571be390611490908690600401612490565b60206040518083038186803b1580156114a857600080fd5b505afa1580156114bc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052506114e09190810190611e67565b90506001600160a01b038116331480610afa57506000838152600c602090815260408083206001600160a01b0385168452825280832033845290915290205460ff16915050919050565b611532611bb9565b82815260c081018290526108c8816117e6565b805151602090910151101590565b602081015181516060916104019161156b908261192d565b8451919063ffffffff61197416565b60a081015160c082015182516060926104019281900363ffffffff61197416565b600081518351148015610afa5750610afa83600084600087516119d6565b60008781526004602090815260409091205487519188019190912060606115e787878763ffffffff61197416565b905083156116e45760008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116041561166f5760008a815260066020908152604080832086845282528083208584529091529020805461ffff19811661ffff918216600019019091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c16845290915281206116a591611cf0565b897f03528ed0c2a3ebc993b12ce3c16bb382f9c7d88ef7d8a1bf290eaf35955a12078a8a6040516116d7929190612519565b60405180910390a26117da565b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c168452909152902054600260001961010060018416150201909116046117615760008a815260066020908152604080832086845282528083208584529091529020805461ffff8082166001011661ffff199091161790555b60008a81526005602090815260408083208684528252808320858452825280832061ffff8c1684528252909120825161179c92840190611c82565b50897f52a608b3303a48862d07a73d82fa221318c0027fbbcfb1b2329bface3f19ff2b8a8a846040516117d193929190612539565b60405180910390a25b50505050505050505050565b60c081015160208201819052815151116117ff576118b6565b60006118138260000151836020015161192d565b602083015183519101915061182e908263ffffffff6119f916565b61ffff166040830152815160029190910190611850908263ffffffff6119f916565b61ffff166060830152815160029190910190611872908263ffffffff611a1916565b63ffffffff9081166080840152825160049290920191600091611898919084906119f916565b600283810160a086015261ffff9190911690920190910160c0830152505b50565b600081516014146118c957600080fd5b5060200151600160601b900490565b604080516014808252818301909252606091602082018180388339505050600160601b9290920260208301525090565b60006001600160e01b0319821663691f343160e01b1480610401575061040182611a3b565b6000815b8351811061193b57fe5b600061194d858363ffffffff611a7616565b60ff1691820160010191905080611964575061196a565b50611931565b9190910392915050565b60608351828401111561198657600080fd5b6060826040519080825280601f01601f1916602001820160405280156119b3576020820181803883390190505b509050602080820190868601016119cb828287611a94565b509095945050505050565b60006119e3848484611ad2565b6119ee878785611ad2565b149695505050505050565b60008251826002011115611a0c57600080fd5b50016002015161ffff1690565b60008251826004011115611a2c57600080fd5b50016004015163ffffffff1690565b6000604051611a499061244a565b60405180910390206001600160e01b031916826001600160e01b0319161480610401575061040182611aee565b6000828281518110611a8457fe5b016020015160f81c905092915050565b5b60208110611ab4578151835260209283019290910190601f1901611a95565b905182516020929092036101000a6000190180199091169116179052565b600083518284011115611ae457600080fd5b5091016020012090565b60006001600160e01b0319821663547d2b4160e11b1480611b1f57506001600160e01b03198216631711d8df60e21b145b8061040157506104018260006001600160e01b0319821663bc1c58d160e01b148061040157506104018260006001600160e01b03198216631d9dabef60e11b1480611b7a57506001600160e01b031982166378e5bf0360e11b145b8061040157506104018260006001600160e01b03198216631101d5ab60e11b148061040157506301ffc9a760e01b6001600160e01b0319831614610401565b6040518060e001604052806060815260200160008152602001600061ffff168152602001600061ffff168152602001600063ffffffff16815260200160008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611c455782800160ff19823516178555611c72565b82800160010185558215611c72579182015b82811115611c72578235825591602001919060010190611c57565b50611c7e929150611d30565b5090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611cc357805160ff1916838001178555611c72565b82800160010185558215611c72579182015b82811115611c72578251825591602001919060010190611cd5565b50805460018160011615610100020316600290046000825580601f10611d1657506118b6565b601f0160209004906000526020600020908101906118b691905b611d4a91905b80821115611c7e5760008155600101611d36565b90565b80356108c881612674565b80516108c881612674565b60008083601f840112611d7557600080fd5b50813567ffffffffffffffff811115611d8d57600080fd5b6020830191508360208202830111156109e657600080fd5b80356108c881612688565b80356108c881612691565b80356108c88161269a565b60008083601f840112611dd857600080fd5b50813567ffffffffffffffff811115611df057600080fd5b6020830191508360018202830111156109e657600080fd5b600082601f830112611e1957600080fd5b8135611e2c611e27826125b2565b61258b565b91508082526020830160208301858383011115611e4857600080fd5b611e5383828461262e565b50505092915050565b80356108c8816126a3565b600060208284031215611e7957600080fd5b6000611e858484611d58565b949350505050565b60008060208385031215611ea057600080fd5b823567ffffffffffffffff811115611eb757600080fd5b611ec385828601611d63565b92509250509250929050565b600060208284031215611ee157600080fd5b6000611e858484611db0565b60008060408385031215611f0057600080fd5b6000611f0c8585611db0565b9250506020611f1d85828601611d4d565b9150509250929050565b600080600060608486031215611f3c57600080fd5b6000611f488686611db0565b9350506020611f5986828701611d4d565b9250506040611f6a86828701611d4d565b9150509250925092565b600080600060608486031215611f8957600080fd5b6000611f958686611db0565b9350506020611fa686828701611d4d565b9250506040611f6a86828701611da5565b60008060408385031215611fca57600080fd5b6000611fd68585611db0565b9250506020611f1d85828601611db0565b600080600060608486031215611ffc57600080fd5b60006120088686611db0565b935050602061201986828701611db0565b9250506040611f6a86828701611db0565b60008060006060848603121561203f57600080fd5b600061204b8686611db0565b935050602061205c86828701611db0565b9250506040611f6a86828701611e5c565b6000806040838503121561208057600080fd5b600061208c8585611db0565b9250506020611f1d85828601611dbb565b6000806000606084860312156120b257600080fd5b60006120be8686611db0565b9350506020611f5986828701611dbb565b6000806000604084860312156120e457600080fd5b60006120f08686611db0565b935050602084013567ffffffffffffffff81111561210d57600080fd5b61211986828701611dc6565b92509250509250925092565b60008060008060006060868803121561213d57600080fd5b60006121498888611db0565b955050602086013567ffffffffffffffff81111561216657600080fd5b61217288828901611dc6565b9450945050604086013567ffffffffffffffff81111561219157600080fd5b61219d88828901611dc6565b92509250509295509295909350565b600080600080606085870312156121c257600080fd5b60006121ce8787611db0565b94505060206121df87828801611db0565b935050604085013567ffffffffffffffff8111156121fc57600080fd5b61220887828801611dc6565b95989497509550505050565b60008060006060848603121561222957600080fd5b60006122358686611db0565b935050602061224686828701611db0565b925050604084013567ffffffffffffffff81111561226357600080fd5b611f6a86828701611e08565b60006020828403121561228157600080fd5b6000611e858484611dbb565b6000610afa8383612385565b6122a28161261d565b82525050565b6122a2816125ed565b60006122bc826125e0565b6122c681856125e4565b9350836020820285016122d8856125da565b8060005b8581101561231257848403895281516122f5858261228d565b9450612300836125da565b60209a909a01999250506001016122dc565b5091979650505050505050565b6122a2816125f8565b6122a281611d4a565b6122a2816125fd565b600061234683856125e4565b935061235383858461262e565b61235c8361266a565b9093019392505050565b60006123728385610404565b935061237f83858461262e565b50500190565b6000612390826125e0565b61239a81856125e4565b93506123aa81856020860161263a565b61235c8161266a565b60006123be826125e0565b6123c88185610404565b93506123d881856020860161263a565b9290920192915050565b60006123ef602483610404565b7f696e74657266616365496d706c656d656e74657228627974657333322c6279748152636573342960e01b602082015260240192915050565b6122a28161260a565b6000611e85828486612366565b6000610afa82846123b3565b60006108c8826123e2565b602081016108c882846122a8565b602081016108c88284612299565b60208082528101610afa81846122b1565b602081016108c8828461231f565b602081016108c88284612328565b604081016124ac8285612328565b610afa6020830184612328565b602081016108c88284612331565b60208082528101611e8581848661233a565b60208082528101610afa8184612385565b604080825281016124fb8186612385565b9050818103602083015261251081848661233a565b95945050505050565b6040808252810161252a8185612385565b9050610afa6020830184612428565b6060808252810161254a8186612385565b90506125596020830185612428565b81810360408301526125108184612385565b604081016125798285612328565b8181036020830152611e858184612385565b60405181810167ffffffffffffffff811182821017156125aa57600080fd5b604052919050565b600067ffffffffffffffff8211156125c957600080fd5b506020601f91909101601f19160190565b60200190565b5190565b90815260200190565b600061040182612611565b151590565b6001600160e01b03191690565b61ffff1690565b6001600160a01b031690565b6000610401826000610401826125ed565b82818337506000910152565b60005b8381101561265557818101518382015260200161263d565b83811115612664576000848401525b50505050565b601f01601f191690565b61267d816125ed565b81146118b657600080fd5b61267d816125f8565b61267d81611d4a565b61267d816125fd565b61267d8161260a56fea365627a7a72315820ef3e43f1d9e499c9c6be6d957ada150718679ad709d492db09f521c51c9b41ff6c6578706572696d656e74616cf564736f6c63430005110040","srcmap":"1897:2174:9:-;;;2528:56;8:9:-1;5:2;;;30:1;27;20:12;5:2;2528:56:9;;;;;;;;;;;;;;;;;;;;;2567:3;:10;;-1:-1:-1;;;;;;2567:10:9;-1:-1:-1;;;;;2567:10:9;;;;;;;;;;1897:2174;;5:158:-1;95:13;;113:45;95:13;113:45;;;80:83;;;;;170:287;;297:2;285:9;276:7;272:23;268:32;265:2;;;313:1;310;303:12;265:2;348:1;365:76;433:7;413:9;365:76;;;355:86;259:198;-1:-1;;;;259:198;464:91;;526:24;544:5;526:24;;562:103;;636:24;654:5;636:24;;672:121;-1:-1;;;;;734:54;;717:76;800:141;881:36;911:5;881:36;;;874:5;871:47;861:2;;932:1;929;922:12;861:2;855:86;;;1897:2174:9;;;;;;","srcmap-runtime":"1897:2174:9:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1107:169:19;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;2854:1263:15;;;;;;;;;:::i;:::-;;573:184:19;;;;;;;;;:::i;1721:953:16:-;;;;;;;;;:::i;:::-;;;;;;;;1195:454:12;;;;;;;;;:::i;:::-;;;;;;;;;612:169:18;;;;;;;;;:::i;505:166:14:-;;;;;;;;;:::i;980:228:13:-;;;;;;;;;:::i;3269:231:9:-;;;;;;;;;:::i;4901:153:15:-;;;;;;;;;:::i;974:127:19:-;;;;;;;;;:::i;:::-;;;;;;;;5920:109:15;;;;;;;;;:::i;582:292:12:-;;;;;;;;;:::i;844:101:17:-;;;;;;;;;:::i;492:152::-;;;;;;;;;:::i;1214:294:13:-;;;;;;;;;:::i;4519:168:15:-;;;;;;;;;:::i;3703:366:9:-;;;;;;;;;:::i;:::-;;;;;;;;5193:128:15;;;;;;;;;:::i;838:108:14:-;;;;;;;;;:::i;1023:133:18:-;;;;;;;;;:::i;:::-;;;;;;;;;5541:225:15;;;;;;;;;:::i;681:140:13:-;;;;;;;;;:::i;858:226:16:-;;;;;;;;;:::i;1514:127:13:-;;;;;;;;;:::i;2320:80:9:-;;;;;;;;;:::i;1107:169:19:-;1174:4;-1:-1:-1;;;;;;1197:32:19;;-1:-1:-1;;;1197:32:19;;:72;;;1233:36;1257:11;1233:23;:36::i;:::-;1190:79;;1107:169;;;;:::o;2854:1263:15:-;2932:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;2948:15:15;;3005:17;;2948:15;3152:30;;:::i;:::-;3185:18;3201:1;3185:4;;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;3185:15:15;;:18;-1:-1:-1;;3185:18:15;:15;:18;;-1:-1:-1;3185:18:15:i;:::-;3152:51;;3147:821;3206:11;:4;:9;:11::i;:::-;3147:821;;3250:13;;;3246:712;;3294:4;:12;;;3283:23;;3331:11;:4;:9;:11::i;:::-;3324:18;;3398:4;3381:22;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;3381:22:15;;;3371:33;;;;;;3360:44;;3436:12;:4;:10;:12::i;:::-;3422:27;;3246:712;;;3488:20;3511:11;:4;:9;:11::i;:::-;3488:34;;3556:4;:12;;;3544:24;;:8;:24;;;;:49;;;-1:-1:-1;3573:20:15;:4;3585:7;3573:20;:11;:20;:::i;:::-;3572:21;3544:49;3540:404;;;3617:88;3629:4;3635;3641:8;3651:4;;3617:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;;;3665:11:15;;;;3687:12;;3657:6;;3665:20;;;;3687:17;3617:11;:88::i;:::-;3738:4;:12;;;3727:23;;3781:4;:11;;;3772:20;;3821:7;3814:14;;3871:4;3861:15;;;;;;3850:26;;3912:12;:4;:10;:12::i;:::-;3898:27;;3540:404;3246:712;;3219:11;:4;:9;:11::i;:::-;3147:821;;;-1:-1:-1;3981:11:15;;:15;3977:134;;4012:88;4024:4;4030;4036:8;4046:4;;4012:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;;4082:12:15;;4052:6;;-1:-1:-1;4060:20:15;;;;-1:-1:-1;4082:17:15;4012:11;:88::i;:::-;400:1:11;;;;;2854:1263:15;;;;:::o;573:184:19:-;668:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;703:5:19;;684;:11;690:4;684:11;;;;;;;;;;;696:3;;684:16;;;;;;;;;;;;;;;;;;;;;;:24;;:16;;:24;:::i;:::-;;741:3;;723:27;;;;;;;;;;;;;;;;735:4;723:27;746:3;;723:27;;;;;;;;;;;;;;;;573:184;;;;;;:::o;1721:953:16:-;1808:7;1849:16;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;1849:29:16;;;;;;;;;;-1:-1:-1;;;;;1849:29:16;1891:25;;1888:73;;1939:11;-1:-1:-1;1932:18:16;;1888:73;1971:9;1983:10;1988:4;1983;:10::i;:::-;1971:22;-1:-1:-1;;;;;;2006:15:16;;2003:62;;2052:1;2037:17;;;;;;2003:62;2076:12;2090:23;2117:1;-1:-1:-1;;;;;2117:12:16;304:10;2183:17;;2130:71;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2130:71:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2117:85:16;;;2130:71;2117:85;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;2075:127:16;;;;2216:7;2215:8;:34;;;;2247:2;2227:10;:17;:22;2215:34;:57;;;;2253:10;2264:2;2253:14;;;;;;;;;;;;-1:-1:-1;;;;;;2253:14:16;:19;2215:57;2212:151;;;2350:1;2335:17;;;;;;;;2212:151;2397:1;-1:-1:-1;;;;;2397:12:16;2463:11;2410:65;;;;;;;;;;;;;-1:-1:-1;;26:21;;;22:32;6:49;;2410:65:16;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2397:79:16;;;2410:65;2397:79;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;-1:-1;2373:103:16;;-1:-1:-1;2373:103:16;-1:-1:-1;2489:8:16;;;:34;;;2521:2;2501:10;:17;:22;2489:34;:57;;;;2527:10;2538:2;2527:14;;;;;;;;;;;;-1:-1:-1;;;;;;2527:14:16;:19;2489:57;2486:163;;;2636:1;2621:17;;;;;;;;2486:163;-1:-1:-1;2666:1:16;;-1:-1:-1;;;1721:953:16;;;;;:::o;1195:454:12:-;1267:7;1341:10;;;;;;;;;;1276:12;;1389:1;1362:249;1407:12;1392:11;:27;1362:249;;1459:26;;;1458:33;;;;:67;;-1:-1:-1;1524:1:12;1495:19;;;;;;;;;;:26;;-1:-1:-1;;1495:26:12;;;;;;;;;;;:30;;1458:67;1454:147;;;1566:19;;;;;;;;;;;;;1545:41;;;;;;-1:-1:-1;;1545:41:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1553:11;;1566:19;;;;1545:41;;;1566:19;1545:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1454:147;1437:1;1421:17;1362:249;;;-1:-1:-1;;1632:9:12;;;;;;;;;1629:1;1632:9;;;1629:1;-1:-1:-1;1632:9:12;-1:-1:-1;1195:454:12;;;;;;:::o;612:169:18:-;687:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;719:15:18;;;;;;;;;;;;;;;;;;-1:-1:-1;703:13:18;;;:7;:13;;;;;;;:31;;;;;;;;;;749:25;711:4;;749:25;;;;729:1;;732;;749:25;;;;;;;;;;612:169;;;;:::o;505:166:14:-;584:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;600:12:14;;;;:6;:12;;;;;:19;;615:4;;600:19;:::i;:::-;;653:4;634:30;659:4;;634:30;;;;;;;;980:228:13;1029:15;1056:14;1073:25;1078:4;261:2;1073:4;:25::i;:::-;1056:42;;1111:1;:8;1123:1;1111:13;1108:60;;;1155:1;1140:17;;;;;1108:60;1184:17;1199:1;1184:14;:17::i;:::-;1177:24;980:228;-1:-1:-1;;;980:228:13:o;3269:231:9:-;3363:20;;;;:14;:20;;;;;;;;3384:10;3363:32;;;;;;;;;-1:-1:-1;;;;;3363:40:9;;;;;;;;;;;:55;;-1:-1:-1;;3363:55:9;;;;;;;3433:60;3363:40;;3384:10;3363:20;;3433:60;;;;3363:55;;3433:60;;;;;;;;;;3269:231;;;:::o;4901:153:15:-;4973:4;4997:22;;;:16;:22;;;;;;;;5020:8;:14;;;;;;4997:38;;;;;;;:44;;;;;;;;;;;:49;;;4901:153::o;974:127:19:-;1046:13;1078:5;:11;1084:4;1078:11;;;;;;;;;;;1090:3;;1078:16;;;;;;;;;;;;;;;;;;;;;;;;1071:23;;;;;;;;;-1:-1:-1;;1071:23:19;;;;;;;;;;;;;;;;;;;;;;;1078:16;;;;1071:23;;;1078:16;1071:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;974:127;;;;;:::o;5920:109:15:-;6006:16;;;;:10;:16;;;;;;;;;5999:23;;;;;;-1:-1:-1;;5999:23:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5975:12;;5999:23;;;6006:16;5999:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5920:109;;;:::o;582:292:12:-;674:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;-1:-1:-1;;745:15:12;;744:31;;743:38;735:47;;;;;;793:4;:10;;;;;;;;;;;:23;;;;;;;;:30;;819:4;;793:30;:::i;:::-;-1:-1:-1;838:29:12;;855:11;;849:4;;838:29;;;;;582:292;;;;;:::o;844:101:17:-;927:11;;;;:5;:11;;;;;;;;;920:18;;;;;;-1:-1:-1;;920:18:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;895:13;;920:18;;;927:11;920:18;;;;;;;;;;;;;;;;;;;;;;;;492:152;565:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;581:11:17;;;;:5;:11;;;;;:18;;595:4;;581:18;:::i;:::-;;626:4;614:23;632:4;;614:23;;;;;;;;1214:294:13;1302:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;1338:4:13;1323:33;1344:8;1354:1;1323:33;;;;;;;;;;;;;;;;261:2;1369:8;:25;1366:96;;;1427:4;1415:36;1433:17;1448:1;1433:14;:17::i;:::-;1415:36;;;;;;;;;;;;;;;1366:96;1471:16;;;;:10;:16;;;;;;;;:26;;;;;;;;:30;;;;;;;;:::i;:::-;;1214:294;;;;:::o;4519:168:15:-;4635:13;;;;:7;:13;;;;;;;;4649:8;:14;;;;;;4635:29;;;;;;;:35;;;;;;;;:45;;;;;;;;;;;4628:52;;;;;;-1:-1:-1;;4628:52:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4604:12;;4628:52;;;4635:45;4628:52;;;;;;;;;;;;;;;;;;;;;;;;3703:366:9;3806:24;;;;;;;;;;;;;;;;3762:22;;3818:4;3806:24;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3796:34:9;-1:-1:-1;3844:6:9;3840:199;3856:15;;;3840:199;;;3893:12;3907:19;3938:4;3957;;3962:1;3957:7;;;;;;;;;;;;-1:-1:-1;30:25;;-1:-1;;100:14;96:29;;;92:48;68:73;;58:2;;155:1;152;145:12;58:2;174:33;;;69:4;55:19;;;-1:-1;16:22;93:18;82:30;;79:2;;;125:1;122;115:12;79:2;155:14;151:38;;;137:53;;134:2;;;203:1;200;193:12;134:2;3930:35:9;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;3892:73:9;;;;3987:7;3979:16;;;;;;4022:6;4009:7;4017:1;4009:10;;;;;;;;;;;;;;;;;:19;-1:-1:-1;;3873:3:9;;3840:199;;;-1:-1:-1;3703:366:9;;;;:::o;5193:128:15:-;5247:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5263:14:15;;;;:8;:14;;;;;;:16;;;;;;5294:20;5272:4;;5294:20;;;5193:128;;:::o;838:108:14:-;927:12;;;;:6;:12;;;;;;;;;920:19;;;;;;;;;;-1:-1:-1;;920:19:14;;;;;;;;;;;;;;;;;;;;;;;;;;896:12;;927;;920:19;;927:12;920:19;;;;;;;;;;;;;;;;;;;;;;;;1023:133:18;1076:9;1116:13;;;:7;:13;;;;;:15;;1133;;;;;1116;;1023:133::o;5541:225:15:-;5617:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;5656:16:15;;;;:10;:16;;;;;;;;;5633:39;;;;;;-1:-1:-1;;5633:39:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:20;;:39;;;5656:16;5633:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5682:16:15;;;;:10;:16;;;;;5633:39;;-1:-1:-1;5682:23:15;;:16;-1:-1:-1;5701:4:15;;-1:-1:-1;5701:4:15;5682:23;:::i;:::-;;5739:4;5720:39;5745:7;5754:4;;5720:39;;;;;;;;;;;;;;;;;400:1:11;5541:225:15;;;;:::o;681:140:13:-;743:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;759:55:13;775:4;261:2;796:17;811:1;796:14;:17::i;759:55::-;681:140;;;:::o;858:226:16:-;955:4;371:18:11;384:4;371:12;:18::i;:::-;363:27;;;;;;971:16:16;;;;:10;:16;;;;;;;;-1:-1:-1;;;;;;971:29:16;;;;;;;;;;;:43;;-1:-1:-1;;;;;;971:43:16;-1:-1:-1;;;;;971:43:16;;;;;1029:48;;971:16;;1029:48;;;;971:43;;1029:48;;;;;;;;;;858:226;;;;:::o;1514:127:13:-;1608:16;;;;:10;:16;;;;;;;;:26;;;;;;;;;1601:33;;;;;;;;;;;-1:-1:-1;;1601:33:13;;;;;;;;;;;;;;;;;;;;;;;;;;1577:12;;1608:26;;1601:33;;1608:26;1601:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1514:127;;;;:::o;2320:80:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1162:171:18:-;1229:4;-1:-1:-1;;;;;;1252:34:18;;-1:-1:-1;;;1252:34:18;;:74;;;1290:36;1314:11;1290:23;:36::i;3506:191:9:-;3596:3;;:15;;-1:-1:-1;;;3596:15:9;;3564:4;;;;-1:-1:-1;;;;;3596:3:9;;;;:9;;:15;;3606:4;;3596:15;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3596:15:9;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3596:15:9;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;3596:15:9;;;;;;;;;3580:31;-1:-1:-1;;;;;;3628:19:9;;3637:10;3628:19;;:62;;-1:-1:-1;3651:20:9;;;;:14;:20;;;;;;;;-1:-1:-1;;;;;3651:27:9;;;;;;;;;3679:10;3651:39;;;;;;;;;;3621:69;;;3506:191;;;:::o;2367:182:10:-;2442:21;;:::i;:::-;2475:15;;;2500:14;;;:23;;;2533:9;2475:3;2533:4;:9::i;2720:121::-;2818:9;;:16;2803:11;;;;;:31;;;2720:121::o;3822:166::-;3933:11;;;;3957:9;;3882:12;;3913:68;;3946:34;;3933:11;3946:10;:34::i;:::-;3913:9;;;:68;;:19;:68;:::i;4161:172::-;4273:16;;;;4291:15;;;;4253:9;;4222:12;;4253:73;;4291:34;;;4253:73;:19;:73;:::i;4915:176:8:-;4992:4;5030:5;:12;5015:4;:11;:27;:69;;;;;5046:38;5053:4;5059:1;5062:5;5069:1;5072:4;:11;5046:6;:38::i;6286:965:15:-;6504:15;6522:14;;;:8;:14;;;;;;;;;6565:15;;;;;;;;;6590:19;6612:28;:4;6627:6;6635:4;6612:28;:14;:28;:::i;:::-;6590:50;;6654:12;6650:595;;;6686:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6686:49:15;;;;;;;;;;;:54;6682:136;;6760:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;-1:-1:-1;;6760:43:15;;;;;;-1:-1:-1;;6760:43:15;;;;;;;6682:136;6838:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;6831:50;;;:::i;:::-;6917:4;6900:38;6923:4;6929:8;6900:38;;;;;;;;;;;;;;;;6650:595;;;6973:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:49;;-1:-1:-1;;6973:49:15;;;;;;;;;;;6969:136;;7047:22;;;;:16;:22;;;;;;;;:31;;;;;;;;:41;;;;;;;;:43;;;;;;;;;-1:-1:-1;;7047:43:15;;;;;;6969:136;7118:13;;;;:7;:13;;;;;;;;:22;;;;;;;;:32;;;;;;;;:42;;;;;;;;;;:51;;;;;;;;:::i;:::-;;7205:4;7188:46;7211:4;7217:8;7227:6;7188:46;;;;;;;;;;;;;;;;;6650:595;6286:965;;;;;;;;;;:::o;2964:682:10:-;3040:15;;;;3026:11;;;:29;;;3084:9;;:16;-1:-1:-1;3065:68:10;;3116:7;;3065:68;3168:8;3193:34;3204:4;:9;;;3215:4;:11;;;3193:10;:34::i;:::-;3179:11;;;;3290:9;;3179:48;;;-1:-1:-1;3290:25:10;;3179:48;3290:25;:20;:25;:::i;:::-;3275:40;;:12;;;:40;3356:9;;3332:1;3325:8;;;;;3356:25;;3325:8;3356:25;:20;:25;:::i;:::-;3343:38;;:10;;;:38;3420:9;;3398:1;3391:8;;;;;3420:25;;3391:8;3420:25;:20;:25;:::i;:::-;3409:36;;;;:8;;;:36;3519:9;;3462:1;3455:8;;;;;3500:16;;3519:25;;:9;3455:8;;3519:20;:25;:::i;:::-;3561:1;3554:8;;;3572:16;;;:22;3500:44;;;;;3622:17;;;;;;3604:15;;;:35;-1:-1:-1;2964:682:10;;:::o;414:204:11:-;476:17;513:1;:8;525:2;513:14;505:23;;;;;;-1:-1:-1;583:2:11;576:10;570:17;-1:-1:-1;;;566:36:11;;;547:65::o;624:189::-;711:13;;;721:2;711:13;;;;;;;;;681:14;;711:13;;;21:6:-1;;104:10;711:13:11;87:34:-1;-1:-1;;;;;;776:20:11;;;;771:2;764:10;;757:40;-1:-1:-1;776:20:11;743:64::o;951:169:17:-;1018:4;-1:-1:-1;;;;;;1041:32:17;;-1:-1:-1;;;1041:32:17;;:72;;;1077:36;1101:11;1077:23;:36::i;467:367:10:-;541:4;568:6;584:215;624:4;:11;618:3;:17;611:25;;;;650:13;666:19;:4;681:3;666:19;:14;:19;:::i;:::-;650:35;;699:19;;;717:1;699:19;;650:35;-1:-1:-1;736:13:10;732:57;;769:5;;;732:57;584:215;;;;815:12;;;;;467:367;-1:-1:-1;;467:367:10:o;8685:393:8:-;8768:12;8816:4;:11;8809:3;8800:6;:12;:27;;8792:36;;;;;;8839:16;8868:3;8858:14;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;8858:14:8;87:34:-1;135:17;;-1:-1;8858:14:8;-1:-1:-1;8839:33:8;-1:-1:-1;8960:2:8;8951:12;;;;8983:26;;;;9028:22;8951:12;8983:26;9046:3;9028:6;:22::i;:::-;-1:-1:-1;9068:3:8;;8685:393;-1:-1:-1;;;;;8685:393:8:o;3279:209::-;3398:4;3450:31;3457:5;3464:11;3477:3;3450:6;:31::i;:::-;3421:25;3428:4;3434:6;3442:3;3421:6;:25::i;:::-;:60;;3279:209;-1:-1:-1;;;;;;3279:209:8:o;5699:223::-;5771:10;5812:4;:11;5801:3;5807:1;5801:7;:22;;5793:31;;;;;;-1:-1:-1;5874:22:8;5888:1;5874:22;5868:29;5899:6;5864:42;;5843:73::o;6166:227::-;6238:10;6279:4;:11;6268:3;6274:1;6268:7;:22;;6260:31;;;;;;-1:-1:-1;6341:22:8;6355:1;6341:22;6335:29;6366:10;6331:46;;6310:77::o;2680:174:16:-;2747:4;204:49;;;;;;;;;;;;;;-1:-1:-1;;;;;2770:37:16;;:11;-1:-1:-1;;;;;2770:37:16;;;:77;;;;2811:36;2835:11;2811:23;:36::i;5333:122:8:-;5404:9;5438:4;5443:3;5438:9;;;;;;;;;;;;;;;-1:-1:-1;5333:122:8;;;;:::o;7916:549::-;8036:165;8050:2;8043:3;:9;8036:165;;8119:10;;8106:24;;8165:2;8157:10;;;;8181:9;;;;-1:-1:-1;;8054:9:8;8036:165;;;8328:10;;8383:11;;8263:2;:8;;;;8255:3;:17;-1:-1:-1;;8255:21:8;8340:9;;8324:26;;;8379:22;;8427:21;8414:35;;8295:164::o;309:238::-;390:11;437:4;:11;430:3;421:6;:12;:27;;413:36;;;;;;-1:-1:-1;499:26:8;;513:2;499:26;489:42;;468:73::o;6035:245:15:-;6102:4;-1:-1:-1;;;;;;6125:38:15;;-1:-1:-1;;;6125:38:15;;:93;;-1:-1:-1;;;;;;;6182:36:15;;-1:-1:-1;;;6182:36:15;6125:93;:148;;;;6237:36;6261:11;1019:4:14;-1:-1:-1;;;;;;1042:40:14;;-1:-1:-1;;;1042:40:14;;:80;;;1086:36;1110:11;1714:4:13;-1:-1:-1;;;;;;1737:32:13;;-1:-1:-1;;;1737:32:13;;:71;;-1:-1:-1;;;;;;;1773:35:13;;-1:-1:-1;;;1773:35:13;1737:71;:111;;;;1812:36;1836:11;1722:4:12;-1:-1:-1;;;;;;1745:31:12;;-1:-1:-1;;;1745:31:12;;:71;;-1:-1:-1;;;;;;;;;;204:32:11;;;1780:36:12;114:129:11:o;1897:2174:9:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1897:2174:9;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1897:2174:9;;;-1:-1:-1;1897:2174:9;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;5:130:-1:-;72:20;;97:33;72:20;97:33;;142:134;220:13;;238:33;220:13;238:33;;299:359;;;436:3;429:4;421:6;417:17;413:27;403:2;;454:1;451;444:12;403:2;-1:-1;474:20;;514:18;503:30;;500:2;;;546:1;543;536:12;500:2;580:4;572:6;568:17;556:29;;631:3;623:4;615:6;611:17;601:8;597:32;594:41;591:2;;;648:1;645;638:12;666:124;730:20;;755:30;730:20;755:30;;797:130;864:20;;889:33;864:20;889:33;;934:128;1000:20;;1025:32;1000:20;1025:32;;1083:336;;;1197:3;1190:4;1182:6;1178:17;1174:27;1164:2;;1215:1;1212;1205:12;1164:2;-1:-1;1235:20;;1275:18;1264:30;;1261:2;;;1307:1;1304;1297:12;1261:2;1341:4;1333:6;1329:17;1317:29;;1392:3;1384:4;1376:6;1372:17;1362:8;1358:32;1355:41;1352:2;;;1409:1;1406;1399:12;1428:440;;1529:3;1522:4;1514:6;1510:17;1506:27;1496:2;;1547:1;1544;1537:12;1496:2;1584:6;1571:20;1606:64;1621:48;1662:6;1621:48;;;1606:64;;;1597:73;;1690:6;1683:5;1676:21;1726:4;1718:6;1714:17;1759:4;1752:5;1748:16;1794:3;1785:6;1780:3;1776:16;1773:25;1770:2;;;1811:1;1808;1801:12;1770:2;1821:41;1855:6;1850:3;1845;1821:41;;;1489:379;;;;;;;;2236:128;2302:20;;2327:32;2302:20;2327:32;;2508:263;;2623:2;2611:9;2602:7;2598:23;2594:32;2591:2;;;2639:1;2636;2629:12;2591:2;2674:1;2691:64;2747:7;2727:9;2691:64;;;2681:74;2585:186;-1:-1;;;;2585:186;2778:411;;;2924:2;2912:9;2903:7;2899:23;2895:32;2892:2;;;2940:1;2937;2930:12;2892:2;2975:31;;3026:18;3015:30;;3012:2;;;3058:1;3055;3048:12;3012:2;3086:87;3165:7;3156:6;3145:9;3141:22;3086:87;;;3076:97;;;;2954:225;2886:303;;;;;;3196:241;;3300:2;3288:9;3279:7;3275:23;3271:32;3268:2;;;3316:1;3313;3306:12;3268:2;3351:1;3368:53;3413:7;3393:9;3368:53;;3444:366;;;3565:2;3553:9;3544:7;3540:23;3536:32;3533:2;;;3581:1;3578;3571:12;3533:2;3616:1;3633:53;3678:7;3658:9;3633:53;;;3623:63;;3595:97;3723:2;3741:53;3786:7;3777:6;3766:9;3762:22;3741:53;;;3731:63;;3702:98;3527:283;;;;;;3817:491;;;;3955:2;3943:9;3934:7;3930:23;3926:32;3923:2;;;3971:1;3968;3961:12;3923:2;4006:1;4023:53;4068:7;4048:9;4023:53;;;4013:63;;3985:97;4113:2;4131:53;4176:7;4167:6;4156:9;4152:22;4131:53;;;4121:63;;4092:98;4221:2;4239:53;4284:7;4275:6;4264:9;4260:22;4239:53;;;4229:63;;4200:98;3917:391;;;;;;4315:485;;;;4450:2;4438:9;4429:7;4425:23;4421:32;4418:2;;;4466:1;4463;4456:12;4418:2;4501:1;4518:53;4563:7;4543:9;4518:53;;;4508:63;;4480:97;4608:2;4626:53;4671:7;4662:6;4651:9;4647:22;4626:53;;;4616:63;;4587:98;4716:2;4734:50;4776:7;4767:6;4756:9;4752:22;4734:50;;4807:366;;;4928:2;4916:9;4907:7;4903:23;4899:32;4896:2;;;4944:1;4941;4934:12;4896:2;4979:1;4996:53;5041:7;5021:9;4996:53;;;4986:63;;4958:97;5086:2;5104:53;5149:7;5140:6;5129:9;5125:22;5104:53;;5180:491;;;;5318:2;5306:9;5297:7;5293:23;5289:32;5286:2;;;5334:1;5331;5324:12;5286:2;5369:1;5386:53;5431:7;5411:9;5386:53;;;5376:63;;5348:97;5476:2;5494:53;5539:7;5530:6;5519:9;5515:22;5494:53;;;5484:63;;5455:98;5584:2;5602:53;5647:7;5638:6;5627:9;5623:22;5602:53;;5678:489;;;;5815:2;5803:9;5794:7;5790:23;5786:32;5783:2;;;5831:1;5828;5821:12;5783:2;5866:1;5883:53;5928:7;5908:9;5883:53;;;5873:63;;5845:97;5973:2;5991:53;6036:7;6027:6;6016:9;6012:22;5991:53;;;5981:63;;5952:98;6081:2;6099:52;6143:7;6134:6;6123:9;6119:22;6099:52;;6174:364;;;6294:2;6282:9;6273:7;6269:23;6265:32;6262:2;;;6310:1;6307;6300:12;6262:2;6345:1;6362:53;6407:7;6387:9;6362:53;;;6352:63;;6324:97;6452:2;6470:52;6514:7;6505:6;6494:9;6490:22;6470:52;;6545:489;;;;6682:2;6670:9;6661:7;6657:23;6653:32;6650:2;;;6698:1;6695;6688:12;6650:2;6733:1;6750:53;6795:7;6775:9;6750:53;;;6740:63;;6712:97;6840:2;6858:52;6902:7;6893:6;6882:9;6878:22;6858:52;;7041:490;;;;7181:2;7169:9;7160:7;7156:23;7152:32;7149:2;;;7197:1;7194;7187:12;7149:2;7232:1;7249:53;7294:7;7274:9;7249:53;;;7239:63;;7211:97;7367:2;7356:9;7352:18;7339:32;7391:18;7383:6;7380:30;7377:2;;;7423:1;7420;7413:12;7377:2;7451:64;7507:7;7498:6;7487:9;7483:22;7451:64;;;7441:74;;;;7318:203;7143:388;;;;;;8037:743;;;;;;8215:2;8203:9;8194:7;8190:23;8186:32;8183:2;;;8231:1;8228;8221:12;8183:2;8266:1;8283:53;8328:7;8308:9;8283:53;;;8273:63;;8245:97;8401:2;8390:9;8386:18;8373:32;8425:18;8417:6;8414:30;8411:2;;;8457:1;8454;8447:12;8411:2;8485:65;8542:7;8533:6;8522:9;8518:22;8485:65;;;8475:75;;;;8352:204;8615:2;8604:9;8600:18;8587:32;8639:18;8631:6;8628:30;8625:2;;;8671:1;8668;8661:12;8625:2;8699:65;8756:7;8747:6;8736:9;8732:22;8699:65;;;8689:75;;;;8566:204;8177:603;;;;;;;;;9160:615;;;;;9317:2;9305:9;9296:7;9292:23;9288:32;9285:2;;;9333:1;9330;9323:12;9285:2;9368:1;9385:53;9430:7;9410:9;9385:53;;;9375:63;;9347:97;9475:2;9493:53;9538:7;9529:6;9518:9;9514:22;9493:53;;;9483:63;;9454:98;9611:2;9600:9;9596:18;9583:32;9635:18;9627:6;9624:30;9621:2;;;9667:1;9664;9657:12;9621:2;9695:64;9751:7;9742:6;9731:9;9727:22;9695:64;;;9279:496;;;;-1:-1;9685:74;-1:-1;;;;9279:496;9782:595;;;;9929:2;9917:9;9908:7;9904:23;9900:32;9897:2;;;9945:1;9942;9935:12;9897:2;9980:1;9997:53;10042:7;10022:9;9997:53;;;9987:63;;9959:97;10087:2;10105:53;10150:7;10141:6;10130:9;10126:22;10105:53;;;10095:63;;10066:98;10223:2;10212:9;10208:18;10195:32;10247:18;10239:6;10236:30;10233:2;;;10279:1;10276;10269:12;10233:2;10299:62;10353:7;10344:6;10333:9;10329:22;10299:62;;10384:239;;10487:2;10475:9;10466:7;10462:23;10458:32;10455:2;;;10503:1;10500;10493:12;10455:2;10538:1;10555:52;10599:7;10579:9;10555:52;;10631:177;;10742:60;10798:3;10790:6;10742:60;;10816:142;10907:45;10946:5;10907:45;;;10902:3;10895:58;10889:69;;;10965:137;11064:32;11090:5;11064:32;;11256:888;;11411:59;11464:5;11411:59;;;11483:91;11567:6;11562:3;11483:91;;;11476:98;;11597:3;11639:4;11631:6;11627:17;11622:3;11618:27;11666:61;11721:5;11666:61;;;11747:7;11775:1;11760:345;11785:6;11782:1;11779:13;11760:345;;;11847:9;11841:4;11837:20;11832:3;11825:33;11892:6;11886:13;11914:74;11983:4;11968:13;11914:74;;;11906:82;;12005:65;12063:6;12005:65;;;12093:4;12084:14;;;;;11995:75;-1:-1;;11807:1;11800:9;11760:345;;;-1:-1;12118:4;;11390:754;-1:-1;;;;;;;11390:754;12152:104;12229:21;12244:5;12229:21;;12263:113;12346:24;12364:5;12346:24;;12383:110;12464:23;12481:5;12464:23;;12523:297;;12637:70;12700:6;12695:3;12637:70;;;12630:77;;12719:43;12755:6;12750:3;12743:5;12719:43;;;12784:29;12806:6;12784:29;;;12775:39;;;;12623:197;-1:-1;;;12623:197;12851:306;;12979:88;13060:6;13055:3;12979:88;;;12972:95;;13079:43;13115:6;13110:3;13103:5;13079:43;;;-1:-1;;13135:16;;12965:192;13165:343;;13275:38;13307:5;13275:38;;;13325:70;13388:6;13383:3;13325:70;;;13318:77;;13400:52;13445:6;13440:3;13433:4;13426:5;13422:16;13400:52;;;13473:29;13495:6;13473:29;;13515:356;;13643:38;13675:5;13643:38;;;13693:88;13774:6;13769:3;13693:88;;;13686:95;;13786:52;13831:6;13826:3;13819:4;13812:5;13808:16;13786:52;;;13850:16;;;;;13623:248;-1:-1;;13623:248;15234:409;;15412:85;15494:2;15489:3;15412:85;;;15530:34;15510:55;;-1:-1;;;15594:2;15585:12;;15578:28;15634:2;15625:12;;15398:245;-1:-1;;15398:245;15651:110;15732:23;15749:5;15732:23;;15888:274;;16038:99;16133:3;16124:6;16116;16038:99;;16169:262;;16313:93;16402:3;16393:6;16313:93;;16731:372;;16930:148;17074:3;16930:148;;17110:213;17228:2;17213:18;;17242:71;17217:9;17286:6;17242:71;;17330:229;17456:2;17441:18;;17470:79;17445:9;17522:6;17470:79;;17818:381;17996:2;18010:47;;;17981:18;;18071:118;17981:18;18175:6;18071:118;;18206:201;18318:2;18303:18;;18332:65;18307:9;18370:6;18332:65;;18414:213;18532:2;18517:18;;18546:71;18521:9;18590:6;18546:71;;18634:324;18780:2;18765:18;;18794:71;18769:9;18838:6;18794:71;;;18876:72;18944:2;18933:9;18929:18;18920:6;18876:72;;18965:209;19081:2;19066:18;;19095:69;19070:9;19137:6;19095:69;;19181:317;19327:2;19341:47;;;19312:18;;19402:86;19312:18;19474:6;19466;19402:86;;19505:297;19641:2;19655:47;;;19626:18;;19716:76;19626:18;19778:6;19716:76;;19809:512;20001:2;20015:47;;;19986:18;;20076:76;19986:18;20138:6;20076:76;;;20068:84;;20200:9;20194:4;20190:20;20185:2;20174:9;20170:18;20163:48;20225:86;20306:4;20297:6;20289;20225:86;;;20217:94;19972:349;-1:-1;;;;;19972:349;20328:404;20490:2;20504:47;;;20475:18;;20565:76;20475:18;20627:6;20565:76;;;20557:84;;20652:70;20718:2;20707:9;20703:18;20694:6;20652:70;;20739:599;20947:2;20961:47;;;20932:18;;21022:76;20932:18;21084:6;21022:76;;;21014:84;;21109:70;21175:2;21164:9;21160:18;21151:6;21109:70;;;21227:9;21221:4;21217:20;21212:2;21201:9;21197:18;21190:48;21252:76;21323:4;21314:6;21252:76;;21981:408;22145:2;22130:18;;22159:71;22134:9;22203:6;22159:71;;;22278:9;22272:4;22268:20;22263:2;22252:9;22248:18;22241:48;22303:76;22374:4;22365:6;22303:76;;22396:256;22458:2;22452:9;22484:17;;;22559:18;22544:34;;22580:22;;;22541:62;22538:2;;;22616:1;22613;22606:12;22538:2;22632;22625:22;22436:216;;-1:-1;22436:216;22659:321;;22802:18;22794:6;22791:30;22788:2;;;22834:1;22831;22824:12;22788:2;-1:-1;22965:4;22901;22878:17;;;;-1:-1;;22874:33;22955:15;;22725:255;22987:156;23116:4;23107:14;;23064:79;23150:142;23258:12;;23229:63;23801:183;23924:19;;;23973:4;23964:14;;23917:67;24803:91;;24865:24;24883:5;24865:24;;25007:85;25073:13;25066:21;;25049:43;25178:144;-1:-1;;;;;;25239:78;;25222:100;25329:84;25401:6;25390:18;;25373:40;25420:121;-1:-1;;;;;25482:54;;25465:76;25627:129;;25714:37;25745:5;25763:121;25842:37;25873:5;25842:37;;26007:145;26088:6;26083:3;26078;26065:30;-1:-1;26144:1;26126:16;;26119:27;26058:94;26161:268;26226:1;26233:101;26247:6;26244:1;26241:13;26233:101;;;26314:11;;;26308:18;26295:11;;;26288:39;26269:2;26262:10;26233:101;;;26349:6;26346:1;26343:13;26340:2;;;26414:1;26405:6;26400:3;26396:16;26389:27;26340:2;26210:219;;;;;26437:97;26525:2;26505:14;-1:-1;;26501:28;;26485:49;26542:117;26611:24;26629:5;26611:24;;;26604:5;26601:35;26591:2;;26650:1;26647;26640:12;26666:111;26732:21;26747:5;26732:21;;26784:117;26853:24;26871:5;26853:24;;26908:115;26976:23;26993:5;26976:23;;27030:115;27098:23;27115:5;27098:23;"},"externals/ens/RRUtils.sol:RRUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158200b55f5c8bffb881dbf20ef9243c40149a6ea23ef3b40621acfcb0974adf356f164736f6c63430005110032","srcmap":"150:6986:10:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"150:6986:10:-;;;;;;;;"},"externals/ens/ResolverBase.sol:ResolverBase":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ABIResolver.sol:ABIResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/AddrResolver.sol:AddrResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/ContentHashResolver.sol:ContentHashResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/DNSResolver.sol:DNSResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/InterfaceResolver.sol:InterfaceResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/NameResolver.sol:NameResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/PubkeyResolver.sol:PubkeyResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/ens/profiles/TextResolver.sol:TextResolver":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"externals/strings.sol:strings":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820a0d6e2d5adfd143ae42227b446b10cfed8e8ca55c2f2139eb7ab7a445c60ec2564736f6c63430005110032","srcmap":"2599:23415:20:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"2599:23415:20:-;;;;;;;;"},"internals/balanceable.sol:Balanceable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a7231582016f98f49c88dc324d678bf8a20aeb55d7eec13491e678ee49a4d4c2065c6fe8264736f6c63430005110032","srcmap":"898:556:21:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;898:556:21;;;;;;;","srcmap-runtime":"898:556:21:-;;;;;"},"internals/bytesUtils.sol:BytesUtils":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a723158204dd814dbcdf91ffc6fd0f557ff0f77366eeb05fc1fee26d2452b89682141449764736f6c63430005110032","srcmap":"911:1876:22:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"911:1876:22:-;;;;;;;;"},"internals/controllable.sol:Controllable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ensResolvable.sol:ENSResolvable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/ownable.sol:Ownable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/tokenWhitelistable.sol:TokenWhitelistable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"internals/transferrable.sol:Transferrable":{"bin":"6080604052348015600f57600080fd5b50603e80601d6000396000f3fe6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","bin-runtime":"6080604052600080fdfea265627a7a72315820462f221bdf525a04f8ddb6cce4eacc27c17759dc0ce030e1242ff523b12b563664736f6c63430005110032","srcmap":"961:696:27:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;961:696:27;;;;;;;","srcmap-runtime":"961:696:27:-;;;;;"},"licence.sol:ILicence":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"licence.sol:Licence":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","bin-runtime":"60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032","srcmap":"1381:8954:28:-;;;1122:66:23;1272:58;;2313:80:28;;;-1:-1:-1;;;;;;2313:80:28;2351:42;2313:80;;;3616:558;5:2:-1;;;;30:1;27;20:12;5:2;3616:558:28;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;3616:558:28;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;3616:558:28;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;1559:203;3886:9:28;2305:1;3866:29;;:62;;;;;2252:4;3899:9;:29;;3866:62;3858:102;;;;;-1:-1:-1;;;3858:102:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:32;;;4012:12;:22;;-1:-1:-1;;;;;4012:22:28;;;-1:-1:-1;;;;;;4012:22:28;;;;;;;4044:12;:23;;;;;;;;;;;;;4081:26;;;4077:91;;4123:19;:34;;-1:-1:-1;;;;;;4123:34:28;-1:-1:-1;;;;;4123:34:28;;;;;4077:91;3616:558;;;;;;1381:8954;;;;;;","srcmap-runtime":"1381:8954:28:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6106:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6106:102:28;;;:::i;7354:228::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7354:228:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7354:228:28;-1:-1:-1;;;;;7354:228:28;;:::i;8272:1087::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;8272:1087:28;;;;;;;;:::i;5153:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5153:89:28;;;:::i;:::-;;;;-1:-1:-1;;;;;5153:89:28;;;;;;;;;;;;;;2262:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2262:44:28;;;:::i;:::-;;;;;;;;;;;;;;;;4950:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4950:91:28;;;:::i;6678:219::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6678:219:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6678:219:28;-1:-1:-1;;;;;6678:219:28;;:::i;5922:86::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5922:86:28;;;:::i;7723:277::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7723:277:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7723:277:28;;:::i;1364:91:24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;10221:112:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10221:112:28;;;:::i;:::-;;;;;;;;;;;;;;;;;;9711:92;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9711:92:28;;;:::i;9448:184::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9448:184:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;9448:184:28;;;;;;;;;;;;;;;;;:::i;5342:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5342:105:28;;;:::i;4729:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4729:91:28;;;:::i;4475:107::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4475:107:28;;;:::i;2209:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2209:47:28;;;:::i;5553:82::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5553:82:28;;;:::i;6338:204::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6338:204:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6338:204:28;-1:-1:-1;;;;;6338:204:28;;:::i;5741:83::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5741:83:28;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;10054:96:28:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10054:96:28;;;:::i;7027:196::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7027:196:28;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;7027:196:28;-1:-1:-1;;;;;7027:196:28;;:::i;9882:93::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9882:93:28;;;:::i;6106:102::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6169:25:28;:32;;-1:-1:-1;;;;6169:32:28;-1:-1:-1;;;6169:32:28;;;6106:102::o;7354:228::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7443:26:28;:24;:26::i;:::-;7442:27;7434:53;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;-1:-1:-1;;;7434:53:28;;;;;;;;;;;;;;;7497:19;:29;;-1:-1:-1;;;;;7497:29:28;;-1:-1:-1;;;;;;7497:29:28;;;;;;;;7541:34;;;;;;;;;;;;;;;;7354:228;:::o;8272:1087::-;8443:19;;8367:7;;-1:-1:-1;;;;;8433:29:28;;;8443:19;;8433:29;8429:838;;;8521:12;;8478:68;;-1:-1:-1;;;;;8478:30:28;;;;8509:10;;8521:12;8535:10;8478:68;:30;:68;:::i;:::-;8429:838;;;8590:74;2252:4;8624:20;;:39;8590:29;2252:4;8590:7;:11;;:29;;;;:::i;:::-;:33;:74;:33;:74;:::i;:::-;8577:87;-1:-1:-1;8678:21:28;8702:23;:7;8577:87;8702:23;:11;:23;:::i;:::-;8678:47;-1:-1:-1;;;;;;8744:20:28;;;8740:424;;8827:12;;8784:71;;-1:-1:-1;;;;;8784:30:28;;;;8815:10;;8827:12;8841:13;8784:71;:30;:71;:::i;:::-;8916:12;;8873:68;;-1:-1:-1;;;;;8873:30:28;;;;8904:10;;8916:12;8930:10;8873:68;:30;:68;:::i;:::-;8740:424;;;9001:7;8988:9;:20;8980:64;;;;;-1:-1:-1;;;8980:64:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9062:12;;:36;;-1:-1:-1;;;;;9062:12:28;;;;:36;;;;;9084:13;;9062:12;:36;:12;:36;9084:13;9062:12;:36;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;9116:12:28;;:33;;-1:-1:-1;;;;;9116:12:28;;;;:33;;;;;9138:10;;9116:12;:33;:12;:33;9138:10;9116:12;:33;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;9116:33:28;8740:424;9220:12;;9183:73;;;9208:10;9183:73;;-1:-1:-1;;;;;9220:12:28;;;9183:73;;;;;;;;;;;;;;;;;;;;;;;;;;;8429:838;;9319:12;;9282:70;;;9307:10;9282:70;;-1:-1:-1;;;;;9319:12:28;;;9282:70;;;;;;;;;;;;;;;;;;;;;;;;;;;8272:1087;;;:::o;5153:89::-;5224:11;;-1:-1:-1;;;;;5224:11:28;5153:89;:::o;2262:44::-;2305:1;2262:44;:::o;4950:91::-;5022:12;;-1:-1:-1;;;;;5022:12:28;4950:91;:::o;6678:219::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6766:14:28;:12;:14::i;:::-;6765:15;6757:53;;;;;-1:-1:-1;;;6757:53:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;6820:12;:25;;-1:-1:-1;;;;;6820:25:28;;-1:-1:-1;;;;;;6820:25:28;;;;;;;;6860:30;;;;;;;;;;;;;;;;6678:219;:::o;5922:86::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5977:17:28;:24;;-1:-1:-1;;;;5977:24:28;-1:-1:-1;;;5977:24:28;;;5922:86::o;7723:277::-;3025:11;;-1:-1:-1;;;;;3025:11:28;3011:10;:25;3003:62;;;;;-1:-1:-1;;;3003:62:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7827:10;2305:1;7807:30;;:64;;;;;2252:4;7841:10;:30;;7807:64;7799:104;;;;;-1:-1:-1;;;7799:104:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;7913:20;:33;;;7961:32;;;;;;;;;;;;;;;;;7723:277;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;10221:112:28:-;10301:25;;-1:-1:-1;;;10301:25:28;;;;;10221:112::o;9711:92::-;9778:18;;-1:-1:-1;;;9778:18:28;;;;;9711:92::o;9448:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;9546:35:28;9560:3;9565:6;9573:7;9546:13;:35::i;:::-;9596:29;;;-1:-1:-1;;;;;9596:29:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;9448:184;;;:::o;5342:105::-;5421:19;;-1:-1:-1;;;;;5421:19:28;5342:105;:::o;4729:91::-;4801:12;;-1:-1:-1;;;;;4801:12:28;4729:91;:::o;4475:107::-;4555:20;;4475:107;:::o;2209:47::-;2252:4;2209:47;:::o;5553:82::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5603:18:28;:25;;-1:-1:-1;;;;5603:25:28;-1:-1:-1;;;5603:25:28;;;5553:82::o;6338:204::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;6424:13:28;:11;:13::i;:::-;6423:14;6415:42;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;-1:-1:-1;;;6415:42:28;;;;;;;;;;;;;;;6467:12;:24;;-1:-1:-1;;;;;6467:24:28;;-1:-1:-1;;;;;;6467:24:28;;;;;;;;6506:29;;;;;;;;;;;;;;;;6338:204;:::o;5741:83::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;5792:18:28;:25;;-1:-1:-1;;;;5792:25:28;-1:-1:-1;;;5792:25:28;;;5741:83::o;2169:95:23:-;2242:15;;2169:95;:::o;10054:96:28:-;10126:17;;-1:-1:-1;;;10126:17:28;;;;;10054:96::o;7027:196::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2035:55:23;;;;;;;;;;;;;;;7108:18:28;:16;:18::i;:::-;7107:19;7099:45;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;-1:-1:-1;;;7099:45:28;;;;;;;;;;;;;;;7154:11;:21;;-1:-1:-1;;;;;7154:21:28;;-1:-1:-1;;;;;;7154:21:28;;;;;;;;7190:26;;;;;;;;;;;;;;;;7027:196;:::o;9882:93::-;9950:18;;-1:-1:-1;;;9950:18:28;;;;;9882:93::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;1982:201:5:-;2107:68;;;-1:-1:-1;;;;;2107:68:5;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2107:68:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2081:95:5;;2100:5;;2081:18;:95::i;:::-;1982:201;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2143:1;-1:-1:-1;1693:458:6;;;;;:::o;2606:326::-;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;:::-;1366:289;;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3757:1095:5;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1803:173;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;542:413:1:-;902:20;940:8;;;542:413::o"},"tokenWhitelist.sol:ITokenWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"tokenWhitelist.sol:TokenWhitelist":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","bin-runtime":"608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032","srcmap":"1939:14907:29:-;;;1122:66:23;1272:58;;4758:506:29;5:2:-1;;;;30:1;27;20:12;5:2;4758:506:29;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;4758:506:29;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;4758:506:29;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;4959:11:29;:26;;;;-1:-1:-1;4995:11:29;:33;;-1:-1:-1;;;;;4995:33:29;;;-1:-1:-1;;;;;;4995:33:29;;;;;;;;;-1:-1:-1;5083:18:29;:28;;;:35;;-1:-1:-1;;5083:35:29;;;4995:33;5083:35;;;;;;5128:25;:32;;;;;;;;5170:29;:36;;;;;;;;-1:-1:-1;;;4995:11:29;5216:34;;:41;;;;;;;;;;1939:14907;;;;;;","srcmap-runtime":"1939:14907:29:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1939:14907:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16316:103;;;:::i;:::-;;;;;;;;;;;;;;;;16070:136;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16070:136:29;-1:-1:-1;;;;;;16070:136:29;;:::i;:::-;;;;;;;;;;;;;;;;;;13314:334;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13314:334:29;-1:-1:-1;;;;;13314:334:29;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;13314:334:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6040:1806;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;6040:1806:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;6040:1806:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;6040:1806:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;6040:1806:29;;-1:-1:-1;6040:1806:29;-1:-1:-1;6040:1806:29;;:::i;:::-;;14150:472;;;:::i;14751:112::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;14751:112:29;;;;;;;;;;;;;;;;;14990:523;;;:::i;11299:398::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11299:398:29;;;;;;;;;;:::i;15695:220::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15695:220:29;;-1:-1:-1;;;;;15695:220:29;;;;;-1:-1:-1;;;;;;15695:220:29;;:::i;7973:1237::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7973:1237:29;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;7973:1237:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7973:1237:29;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;7973:1237:29;;-1:-1:-1;7973:1237:29;-1:-1:-1;7973:1237:29;:::i;1364:91:24:-;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;16755:89:29;;;:::i;10840:384::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;10840:384:29;;;;;;;;;;:::i;12578:184::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12578:184:29;;;;;;;;;;;;;;;;;:::i;9368:1399::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9368:1399:29;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9368:1399:29;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;9368:1399:29;;-1:-1:-1;9368:1399:29;-1:-1:-1;9368:1399:29;:::i;:::-;;;;-1:-1:-1;;;;;9368:1399:29;;;;;;;;;;;;;;;;;;;;;11974:515;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;11974:515:29;;;;;;;;;;;;;:::i;2169:95:23:-;;;:::i;16551:89:29:-;;;:::i;16316:103::-;16394:18;;16316:103;;:::o;16070:136::-;-1:-1:-1;;;;;;16169:29:29;;16145:4;16169:29;;;:18;:29;;;;;;;;16070:136;;;;:::o;13314:334::-;-1:-1:-1;;;;;13467:17:29;;13386:7;13467:17;;;:13;:17;;;;;;;;13520:19;;;;;13541:14;;;;13557:19;;;;13620:20;;;;13494:147;;;;13557:19;13494:147;;;;;;-1:-1:-1;;13494:147:29;;;;;;;;;;;;;;;;;;;;;;;;;;13371:13;;13386:7;;;;;;;;;;;13467:17;;;;13520:19;;13541:14;;13557:19;;;;;13578:18;;;;;;13598:20;;;;;;13620;;13494:147;;13467:17;;13494:147;;13467:17;13494:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13314:334;;;;;;;;;:::o;6040:1806::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;6389:33:29;;;:88;;;;-1:-1:-1;6442:35:29;;;6389:88;:142;;;;-1:-1:-1;6497:34:29;;;6389:142;:196;;;;-1:-1:-1;6551:34:29;;;6389:196;6368:273;;;;;-1:-1:-1;;;6368:273:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6715:9;6710:1130;6730:18;;;6710:1130;;;6841:13;:25;6855:7;;6863:1;6855:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6855:10:29;6841:25;;-1:-1:-1;6841:25:29;;;;;;;;-1:-1:-1;6841:25:29;:35;;;;;6840:36;6832:72;;;;;-1:-1:-1;;;6832:72:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;6964:20;6987:35;:24;:8;;6996:1;6987:11;;;;;;;;;;;;;:22;:24::i;:::-;:33;:35::i;:::-;6964:58;;7112:278;;;;;;;;7144:6;7112:278;;;;7179:10;;7190:1;7179:13;;;;;;;;;;;;;7112:278;;;;7216:1;7112:278;;;;7246:4;7112:278;;;;;;7278:9;;7288:1;7278:12;;;;;;;;;;;;;;;7112:278;;;;;;7320:11;;7332:1;7320:14;;;;;;;;;;;;;;;7112:278;;;;;;7364:11;7112:278;;;7084:13;:25;7098:7;;7106:1;7098:10;;;;;;;;;;;;;-1:-1:-1;;;;;7098:10:29;-1:-1:-1;;;;;7084:25:29;-1:-1:-1;;;;;7084:25:29;;;;;;;;;;;;:306;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;7084:306:29;;;;;-1:-1:-1;;7084:306:29;;;-1:-1:-1;;7084:306:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7486:7;;7494:1;7486:10;;;;;;;27::-1;;39:1;23:18;;45:23;;-1:-1;7462:35:29;;;7486:10;7462:35;;;;;;;-1:-1:-1;;;;;;7462:35:29;-1:-1:-1;;;;;7486:10:29;;;;;;;;;;;;;7462:35;;;;;;-1:-1:-1;7587:11:29;;7599:1;7587:14;;;;;;;;;;;;;;7583:99;;7642:18;;:25;;7665:1;7642:25;:22;:25;:::i;:::-;7621:18;:46;7583:99;7742:87;7753:10;7765:7;;7773:1;7765:10;;;;;;;;;;;;;-1:-1:-1;;;;;7765:10:29;7777:6;7785:10;;7796:1;7785:13;;;;;;;;;;;;;7800:9;;7810:1;7800:12;;;;;;;;;;;;;;;7814:11;;7826:1;7814:14;;;;;;;;;;;;;;;7742:87;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;-1:-1:-1;;;;;7742:87:29;-1:-1:-1;;;;;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;7742:87:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6750:3:29;;6710:1130;;;;6040:1806;;;;;;;;;;;:::o;14150:472::-;14317:11;;-1:-1:-1;;;;;14317:11:29;14217:7;14303:26;;;:13;:26;;;;;;;;14317:11;14395:24;;;;14433:19;;;;14466:24;;;;14580:25;;;;14339:276;;;;14317:11;14339:276;;;;;;-1:-1:-1;;14339:276:29;;;;;;;;;;;;;;;;;;;;;;;;;;14202:13;;14217:7;;;;;;;;;;;14303:26;;;;14395:24;;14433:19;;14466:24;;;;;14504:23;;;;;;14541:25;;;;;;14580;;14339:276;;14303:26;;14339:276;;14303:26;14339:276;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14150:472;;;;;;;:::o;14751:112::-;14803:16;14838:18;14831:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;14831:25:29;;;;;;;;;;;;;;;;;;;;;;;14751:112;:::o;14990:523::-;15041:16;15069:36;15122:18;;15108:33;;;;;;;;;;;;;;;;;;;;;;29:2:-1;21:6;17:15;117:4;105:10;97:6;88:34;136:17;;-1:-1;15108:33:29;-1:-1:-1;15069:72:29;-1:-1:-1;15151:23:29;;15188:283;15212:18;:25;15208:29;;15188:283;;;15258:13;15274:18;15293:1;15274:21;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;15274:21:29;15313:20;;;:13;:20;;;;;;;:31;;;15274:21;;-1:-1:-1;15313:31:29;;;;;;15309:152;;;15403:5;15364:19;15384:15;15364:36;;;;;;;;;;;;;:44;-1:-1:-1;;;;;15364:44:29;;;-1:-1:-1;;;;;15364:44:29;;;;;15445:1;15426:20;;;;15309:152;-1:-1:-1;15239:3:29;;15188:283;;;-1:-1:-1;15487:19:29;;-1:-1:-1;;14990:523:29;:::o;11299:398::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;11440:21:29;;;;;;:13;:21;;;;;:31;;;;;11432:66;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;-1:-1:-1;;;11432:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11573:21:29;;;;;;:13;:21;;;;;;;;;:32;;:46;;;;;;;;-1:-1:-1;;11573:46:29;;;;;;;;;;11635:55;;11658:10;11635:55;;;;;;;;;;;;;;;;;;;;;;;;;;11299:398;;:::o;15695:220::-;-1:-1:-1;;;;;15806:21:29;;15782:4;15806:21;;;:13;:21;;;;;:31;;;;;15798:62;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;-1:-1:-1;;;15798:62:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15878:29:29;;;;;:18;:29;;;;;;;;;15695:220;-1:-1:-1;15695:220:29:o;7973:1237::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;8160:9:29;8155:1049;8175:18;;;8155:1049;;;8254:13;8270:7;;8278:1;8270:10;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8270:10:29;8371:20;;;;:13;:20;;;;;;;:30;;;8270:10;;-1:-1:-1;;8371:30:29;;8363:65;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;-1:-1:-1;;;8363:65:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;8518:20:29;;;;;;:13;:20;;;;;:31;;;;;;;;8514:116;;;8590:18;;:25;;8613:1;8590:25;:22;:25;:::i;:::-;8569:18;:46;8514:116;-1:-1:-1;;;;;8690:20:29;;;;;;:13;:20;;;;;;8683:27;8690:20;;8683:27;:::i;:::-;-1:-1:-1;8683:27:29;;;;;;;;;;;;;;;;;;-1:-1:-1;;8683:27:29;;;;;;;;;;8787:275;8811:18;:25;:32;;8841:1;8811:32;:29;:32;:::i;:::-;8807:1;:36;8787:275;;;8897:5;-1:-1:-1;;;;;8872:30:29;:18;8891:1;8872:21;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8872:21:29;:30;8868:180;;;8950:18;8969:25;;:32;;8999:1;8969:32;:29;:32;:::i;:::-;8950:52;;;;;;;;;;;;;;;;;;8926:18;:21;;-1:-1:-1;;;;;8950:52:29;;;;8945:1;;8926:21;;;;;;;;;;;;;;:76;;;;;-1:-1:-1;;;;;8926:76:29;;;;;-1:-1:-1;;;;;8926:76:29;;;;;;9024:5;;8868:180;8845:3;;8787:275;;;-1:-1:-1;9075:18:29;:27;;;;;-1:-1:-1;;9075:27:29;;;:::i;:::-;-1:-1:-1;9162:31:29;;;9175:10;9162:31;;-1:-1:-1;;;;;9162:31:29;;;;;;;;;;;;;;;;;;;-1:-1:-1;8195:3:29;;8155:1049;;;;7973:1237;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;16755:89:29:-;16826:11;;16755:89;:::o;10840:384::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;-1:-1:-1;;;;;10977:21:29;;;;;;:13;:21;;;;;:31;;;;;10969:66;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;-1:-1:-1;;;10969:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;11108:21:29;;;;;;:13;:21;;;;;;;;;:30;;:42;;;;;;;;-1:-1:-1;;11108:42:29;;;;;;;;;;11166:51;;11187:10;11166:51;;;;;;;;;;;;;;;;;;;;;;;;;;10840:384;;:::o;12578:184::-;2043:20:23;2052:10;2043:8;:20::i;:::-;2035:55;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;-1:-1:-1;;;2035:55:23;;;;;;;;;;;;;;;12676:35:29;12690:3;12695:6;12703:7;12676:13;:35::i;:::-;12726:29;;;-1:-1:-1;;;;;12726:29:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;12578:184;;;:::o;9368:1399::-;9465:7;;9693:6;9677:22;;;9669:67;;;;;-1:-1:-1;;;9669:67:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9782:16;9801:23;9822:1;9801:5;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;9801:20:29;;:23;-1:-1:-1;;9801:23:29;:20;:23;;-1:-1:-1;9801:23:29:i;:::-;9782:42;;9885:41;9908:6;9916:9;9885:22;:41::i;:::-;9877:72;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;-1:-1:-1;;;9877:72:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;;10048:18:29;;-1:-1:-1;;;10048:18:29;10044:717;;;10133:6;10141:24;10163:1;10141:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10141:21:29;;:24;-1:-1:-1;;10141:24:29;:21;:24;;-1:-1:-1;10141:24:29:i;:::-;10125:41;;;;;;;10044:717;-1:-1:-1;;;;;;10187:27:29;;-1:-1:-1;;;10187:27:29;10183:578;;;10325:16;10309:32;;;10301:77;;;;;-1:-1:-1;;;10301:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10400:34;10422:11;10400:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10400:21:29;;:34;-1:-1:-1;;10400:34:29;:21;:34;;-1:-1:-1;10400:34:29:i;:::-;10436;10458:11;10436:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10436:21:29;;:34;-1:-1:-1;;10436:34:29;:21;:34;;-1:-1:-1;10436:34:29:i;10183:578::-;10614:11;10598:27;;;10590:77;;;;-1:-1:-1;;;10590:77:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10689:29;10711:6;10689:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10689:21:29;;:29;-1:-1:-1;;10689:29:29;:21;:29;;-1:-1:-1;10689:29:29:i;:::-;10720;10742:6;10720:5;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;10720:21:29;;:29;-1:-1:-1;;10720:29:29;:21;:29;;-1:-1:-1;10720:29:29:i;9368:1399::-;;;;;;;:::o;11974:515::-;5309:21;5333:24;5345:11;;5333;:24::i;:::-;5309:48;;5375:20;5384:10;5375:8;:20::i;:::-;:51;;;-1:-1:-1;5399:10:29;-1:-1:-1;;;;;5399:27:29;;;5375:51;5367:86;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;-1:-1:-1;;;5367:86:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12138:21:29;;;;;;:13;:21;;;;;:31;;;;;12130:66;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;-1:-1:-1;;;12130:66:29;;;;;;;;;;;;;;;-1:-1:-1;;;;;12242:21:29;;;;;;:13;:21;;;;;;;;;:26;;;:34;;;12339:32;;;;:46;;;12439:43;;12456:10;12439:43;;;;;;;;;;;;;;;;;;;;;;;;;11974:515;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;16551:89:29:-;16622:11;;-1:-1:-1;;;;;16622:11:29;16551:89;:::o;2554:148:23:-;2613:4;2648:28;2660:15;;2648:11;:28::i;:::-;-1:-1:-1;;;;;2636:49:23;;2686:8;2636:59;;;;;;;;;;;;;-1:-1:-1;;;;;2636:59:23;-1:-1:-1;;;;;2636:59:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2636:59:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2636:59:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2636:59:23;;2554:148;-1:-1:-1;;2554:148:23:o;4943:370:20:-;5000:16;;:::i;:::-;5151:4;5145:11;5191:4;5186:3;5182:14;5176:4;5169:28;5222:4;5217:3;5210:17;5263:3;5256:4;5251:3;5247:14;5240:27;5120:157;5297:9;5301:4;5297:3;:9::i;:::-;5286:20;;:3;4943:370;-1:-1:-1;4943:370:20:o;5807:265::-;5867:13;5892:17;5923:4;:9;;;5912:21;;;;;;;;;;;;;;;;;;;;;;;;;21:6:-1;;104:10;5912:21:20;87:34:-1;135:17;;-1:-1;5912:21:20;;5892:41;;5943:11;5994:2;5989:3;5985:12;5975:22;;6009:36;6016:6;6024:4;:9;;;6035:4;:9;;;6009:6;:36::i;:::-;-1:-1:-1;6062:3:20;5807:265;-1:-1:-1;;5807:265:20:o;834:176:6:-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;1002:1;834:176;-1:-1:-1;;;834:176:6:o;1274:179::-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;1559:7;;1546:21;;;;1559:7;1546:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:40;:26;:40;:::i;1627:396:22:-;1708:6;1749:12;:5;1759:1;1749:12;:9;:12;:::i;:::-;1734:4;:11;:27;;1726:60;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;-1:-1:-1;;;1726:60:22;;;;;;;;;;;;;;;1797:19;;1846:13;:5;1856:2;1846:13;:9;:13;:::i;:::-;1956:20;;;1950:27;;1627:396;-1:-1:-1;;;;1627:396:22:o;2373:412::-;2455:7;2497:13;:5;2507:2;2497:13;:9;:13;:::i;1081:421::-;1163:7;1205:13;:5;1215:2;1205:13;:9;:13;:::i;:::-;1190:4;:11;:28;;1182:61;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;-1:-1:-1;;;1182:61:22;;;;;;;;;;;;;;;1254:24;;1308:13;:5;1318:2;1308:13;:9;:13;:::i;:::-;1422:20;;;1416:27;1470:25;;;1081:421;-1:-1:-1;;;;1081:421:22:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;3839:798:20;3889:4;;3927:9;3923:35;;3957:1;3950:8;;;;;3923:35;3985:34;3972:47;;3968:170;;4047:2;4040:9;-1:-1:-1;;;4083:4:20;4078:48;;-1:-1:-1;3968:170:20;4164:18;4151:31;;4147:137;;4210:1;4203:8;4253:19;4245:4;4240:32;;-1:-1:-1;4147:137:20;4310:10;4297:23;;4293:121;;4348:1;4341:8;-1:-1:-1;;;4383:4:20;4378:24;;-1:-1:-1;4293:121:20;4440:6;4427:19;;4423:113;;4474:1;4467:8;4517:7;4509:4;4504:20;;-1:-1:-1;4423:113:20;4562:4;4549:17;;4545:61;;4594:1;4587:8;4545:61;4622:2;:8;;3839:798;-1:-1:-1;;3839:798:20:o;2685:548::-;2805:164;2818:2;2811:3;:9;2805:164;;2887:10;;2874:24;;2933:2;2925:10;;;;2949:9;;;;-1:-1:-1;;2822:9:20;2805:164;;;3096:10;;3151:11;;3031:2;:8;;;;3023:3;:17;-1:-1:-1;;3023:21:20;3108:9;;3092:26;;;3147:22;;3195:21;3182:35;;3063:164::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;4352:27;4360:5;-1:-1:-1;;;;;4352:25:5;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;1939:14907:29:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1939:14907:29;;;-1:-1:-1;1939:14907:29;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;"},"wallet.sol:AddressWhitelist":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:ControllableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:DailyLimitTrait":{"bin":"60556023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032","bin-runtime":"73000000000000000000000000000000000000000030146080604052600080fdfea265627a7a72315820cfb153c0f6418682ec0b322f67814df51ed03139b4601a8ea625db624f12751264736f6c63430005110032","srcmap":"11411:3455:30:-;;132:2:-1;166:7;155:9;146:7;137:37;255:7;249:14;246:1;241:23;235:4;232:33;222:2;;269:9;222:2;293:9;290:1;283:20;323:4;314:7;306:22;347:7;338;331:24","srcmap-runtime":"11411:3455:30:-;;;;;;;;"},"wallet.sol:GasTopUpLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:LoadLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SelfCallableOwnable":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:SpendLimit":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"wallet.sol:Wallet":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032","bin-runtime":"60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032","srcmap":"22209:17557:30:-;;;1122:66:23;1272:58;;24474:430:30;5:2:-1;;;;30:1;27;20:12;5:2;24474:430:30;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;24474:430:30;;;;;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;24474:430:30;;;;;;;;;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1543:6:25;:18;;-1:-1:-1;;;;;;1543:18:25;-1:-1:-1;;;;;1543:18:25;;;-1:-1:-1;;;;1571:32:25;-1:-1:-1;;;1571:32:25;;;;;;;;;;;;;-1:-1:-1;1687:15:25;;;1682:78;;1723:26;;;-1:-1:-1;;;;;1723:26:25;;;;;;;;;;;;;;;1682:78;1774:43;;;1803:1;1774:43;;-1:-1:-1;;;;;1774:43:25;;;;;;;;;;;;;;;;;;;-1:-1:-1;;17616:93:30;;;;;;;;17296:10;17616:93;;;;;;;;;17695:3;17616:93;;;;;;-1:-1:-1;17616:93:30;;;;;;;;;;;;;17599:14;:110;;;;;;;;;;;;;;;;;-1:-1:-1;;17599:110:30;;;1341:19:26;:42;;;;20179:20:30;:18;:20::i;:::-;20135:64;;;;;;;;20239:1;20217:19;:23;20209:49;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;-1:-1:-1;;;20209:49:30;;;;;;;;;;;;;;;19863:5;20288:52;20268:17;:72;;;20363:79;;;;;;;;;;;;;;;;;;;20428:3;20363:79;;;;;;-1:-1:-1;20363:79:30;;;;;;;;;;;;;;20350:10;:92;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20350:92:30;;;;;;15352:59;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15338:11;:73;;;;;;;;;;;;;;;-1:-1:-1;15338:73:30;;;;;;;;-1:-1:-1;24869:12:30;:28;-1:-1:-1;22209:17557:30;;-1:-1:-1;;;;22209:17557:30;2887:206:26;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;;;:32;;:::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;19:11:-1;14:3;11:20;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;261:11;244:29;;285:43;;;282:58;-1:-1;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;-1:-1:-1;;1731:33:24;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;22209:17557:30:-;;;;;;;","srcmap-runtime":"22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25196:31;;;25205:10;25196:31;;25217:9;25196:31;;;;;;;;;;;;;;;;;22209:17557;30101:137;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30101:137:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30101:137:30;-1:-1:-1;;;;;;30101:137:30;;:::i;:::-;;;;;;;;;;;;;;;;;;16199:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16199:104:30;;;:::i;:::-;;;;;;;;;;;;;;;;18820:286;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18820:286:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18820:286:30;;:::i;:::-;;3896:677;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3896:677:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3896:677:30;;:::i;23125:47::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23125:47:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;23125:47:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;38146:244;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38146:244:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;38146:244:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;38146:244:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;38146:244:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;38146:244:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;38146:244:30;;-1:-1:-1;38146:244:30;;-1:-1:-1;;;;;38146:244:30:i;:::-;;;;-1:-1:-1;;;;;;38146:244:30;;;;;;;;;;;;;;;25576:565;;8:9:-1;5:2;;;30:1;27;20:12;5:2;25576:565:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;25576:565:30;;-1:-1:-1;;;;;25576:565:30;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;25576:565:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;25576:565:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;25576:565:30;;-1:-1:-1;25576:565:30;-1:-1:-1;25576:565:30;:::i;21466:117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21466:117:30;;;:::i;28299:344::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28299:344:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;28299:344:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;28299:344:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;28299:344:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;28299:344:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;28299:344:30;;-1:-1:-1;28299:344:30;-1:-1:-1;28299:344:30;:::i;3173:94:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3173:94:25;;;:::i;16806:179:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16806:179:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16806:179:30;;:::i;18606:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18606:106:30;;;:::i;3082:38::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3082:38:30;;;:::i;8300:124::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8300:124:30;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;8300:124:30;;;;;;;;;;;;;;;;;2898:44;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2898:44:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2898:44:30;-1:-1:-1;;;;;2898:44:30;;:::i;29093:943::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;29093:943:30;;-1:-1:-1;;;;;29093:943:30;;;;;;:::i;20579:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20579:233:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20579:233:30;;:::i;15817:161::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15817:161:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15817:161:30;;:::i;35929:1934::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;35929:1934:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;35929:1934:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;35929:1934:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;35929:1934:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;35929:1934:30;;-1:-1:-1;35929:1934:30;;-1:-1:-1;;;;;35929:1934:30:i;26493:1111::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;26493:1111:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;26493:1111:30;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;26493:1111:30;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;26493:1111:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;26493:1111:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;26493:1111:30;;-1:-1:-1;26493:1111:30;-1:-1:-1;26493:1111:30;:::i;8121:126::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8121:126:30;;;:::i;5523:1117::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5523:1117:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5523:1117:30;;:::i;16023:119::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16023:119:30;;;:::i;10340:673::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10340:673:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;10340:673:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;10340:673:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;10340:673:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;10340:673:30;;-1:-1:-1;10340:673:30;-1:-1:-1;10340:673:30;:::i;3543:306:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3543:306:25;;;:::i;19233:304:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19233:304:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19233:304:30;;:::i;28706:91::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;28706:91:30;;;:::i;1364::24:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;18028:125:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18028:125:30;;;:::i;9505:711::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;9505:711:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;9505:711:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;9505:711:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;9505:711:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;9505:711:30;;-1:-1:-1;9505:711:30;-1:-1:-1;9505:711:30;:::i;1514:105:26:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1514:105:26;;;:::i;3932:85:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3932:85:25;;;:::i;27713:87:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;27713:87:30;;;:::i;16562:100::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16562:100:30;;;:::i;31175:2016::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;31175:2016:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;31175:2016:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;31175:2016:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;31175:2016:30;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;31175:2016:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;31175:2016:30;;-1:-1:-1;31175:2016:30;;-1:-1:-1;;;;;31175:2016:30:i;21796:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21796:145:30;;;:::i;20927:251::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20927:251:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20927:251:30;;:::i;2247:809:25:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2247:809:25;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2247:809:25;;-1:-1:-1;;;;;2247:809:25;;;;;;;;:::i;33378:550:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;33378:550:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;33378:550:30;;-1:-1:-1;;;;;33378:550:30;;;;;;:::i;16359:147::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16359:147:30;;;:::i;3169:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3169:26:30;;;:::i;38667:1097::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;38667:1097:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;38667:1097:30;;;;;;;;;;;;;;;;;:::i;21639:102::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21639:102:30;;;:::i;6709:1358::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6709:1358:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;6709:1358:30;;:::i;18215:110::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18215:110:30;;;:::i;23739:25::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23739:25:30;;;:::i;11082:145::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11082:145:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11082:145:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;11082:145:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;11082:145:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;11082:145:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;;-1:-1;11082:145:30;;-1:-1:-1;11082:145:30;;-1:-1:-1;;;;;11082:145:30:i;4641:659::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4641:659:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4641:659:30;;:::i;2948:31::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2948:31:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2948:31:30;;:::i;22008:98::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22008:98:30;;;:::i;3126:37::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3126:37:30;;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;30418:425:30:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;30418:425:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;30418:425:30;;:::i;15480:180::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15480:180:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15480:180:30;;:::i;34129:1540::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;34129:1540:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;34129:1540:30;;-1:-1:-1;;;;;34129:1540:30;;;;;;:::i;21239:177::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21239:177:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;21239:177:30;;:::i;17783:189::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17783:189:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17783:189:30;;:::i;8555:827::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;8555:827:30;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;8555:827:30;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;8555:827:30;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;8555:827:30;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;8555:827:30;;-1:-1:-1;8555:827:30;-1:-1:-1;8555:827:30;:::i;18386:153::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18386:153:30;;;:::i;30101:137::-;-1:-1:-1;;;;;;;;;30195:36:30;;;30101:137;;;;:::o;16199:104::-;16277:19;;16199:104;;:::o;18820:286::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;18934:7;17364:8;18906:35;;:74;;;;;17296:10;18945:7;:35;;18906:74;18898:106;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;-1:-1:-1;;;18898:106:30;;;;;;;;;;;;;;;19014:33;:14;19039:7;19014:33;:24;:33;:::i;:::-;19062:37;;;19079:10;19062:37;;;;;;;;;;;;;;;;;;;;;18820:286;:::o;3896:677::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4043:26;;;;4035:60;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;-1:-1:-1;;;4035:60:30;;;;;;;;;;;;;;;4217:40;4231:25;4217:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4217:40:30;;;-1:-1:-1;4217:40:30;;;;;;;;;;;;;;;;;:13;:40::i;:::-;4208:5;:49;4200:97;;;;-1:-1:-1;;;4200:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4343:32;4350:25;;4343:32;:::i;:::-;4432:26;:34;;-1:-1:-1;;4432:34:30;;;4521:45;;;4548:10;4521:45;;;;;;;;;;;;;;;;;;;;;3896:677;:::o;23125:47::-;;;;;;;;;;;;;-1:-1:-1;;;23125:47:30;;;;;:::o;38146:244::-;38239:6;;38272:31;:11;38292:10;38272:31;:19;:31;:::i;:::-;38257:46;;38321:14;38330:4;38321:8;:14::i;:::-;38313:44;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;-1:-1:-1;;;38313:44:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;;38146:244:30;;;;;:::o;25576:565::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;25745:19;25737:52;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;-1:-1:-1;;;25737:52:30;;;;;;;;;;;;;;;25866:9;25861:229;25881:18;;;25861:229;;;25920:14;25937:35;25954:4;25961:7;;25969:1;25961:10;;;;;;;;;;;;;-1:-1:-1;;;;;25961:10:30;25937:8;:35::i;:::-;25920:52;;26046:33;26055:3;26060:7;;26068:1;26060:10;;;;;;;;;;;;;-1:-1:-1;;;;;26060:10:30;26072:6;26046:8;:33::i;:::-;-1:-1:-1;25901:3:30;;25861:229;;;-1:-1:-1;26105:29:30;;;-1:-1:-1;;;;;26105:29:30;;;;;;;;;;;;;;;;;;;26121:3;;26126:7;;;;26105:29;;;;;26126:7;;26105:29;;;26126:7;26105:29;1:33:-1;99:1;81:16;;;74:27;26105:29:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;26105:29:30;;;;-1:-1:-1;26105:29:30;;-1:-1:-1;;;;;26105:29:30;25576:565;;;:::o;21466:117::-;21519:7;21545:31;:10;:29;:31::i;:::-;21538:38;;21466:117;:::o;28299:344::-;28397:6;28415:16;28461:5;;28444:23;;;;;;;30:3:-1;22:6;14;1:33;28444:23:30;;;45:16:-1;;;;26:21;;;-1:-1;;22:32;6:49;;28444:23:30;;;28434:34;;49:4:-1;28434:34:30;;;;-1:-1:-1;28541:38:30;;;;;;;;;;;;;;;;;28434:34;;-1:-1:-1;;;;;;28541:38:30;;-1:-1:-1;28434:34:30;;-1:-1:-1;28568:10:30;;-1:-1:-1;28541:38:30;;;;;;28568:10;28541:38;;28568:10;28541:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;28541:16:30;;-1:-1:-1;;;28541:38:30:i;:::-;-1:-1:-1;;;;;;28541:51:30;;28533:77;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;-1:-1:-1;;;28533:77:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;28627:9:30;-1:-1:-1;;;;;28299:344:30:o;3173:94:25:-;3245:15;;-1:-1:-1;;;3245:15:25;;;;;3173:94::o;16806:179:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;16890:39;:11;16921:7;16890:39;:30;:39;:::i;:::-;16944:34;;;;;;;;;;;;;;;;;16806:179;:::o;18606:106::-;18685:14;:20;18606:106;:::o;3082:38::-;;;;;;:::o;8300:124::-;8358:16;8393:24;8386:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8386:31:30;;;-1:-1:-1;8386:31:30;;;;;;;;;;;;;;;;;;;8300:124;:::o;2898:44::-;;;;;;;;;;;;;;;:::o;29093:943::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;29269:24;29286:6;29269:16;:24::i;:::-;29261:55;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;-1:-1:-1;;;29261:55:30;;;;;;;;;;;;;;;29379:23;29405:36;29425:6;29433:7;29405:19;:36::i;:::-;29379:62;-1:-1:-1;29571:41:30;:10;29379:62;29571:41;:24;:41;:::i;:::-;29669:22;29694:25;29706:12;;29694:11;:25::i;:::-;29669:50;-1:-1:-1;;;;;;29733:20:30;;;29729:253;;29769:50;-1:-1:-1;;;;;29769:25:30;;29795:14;29811:7;29769:25;:50::i;:::-;29833:46;;;-1:-1:-1;;;29833:46:30;;-1:-1:-1;;;;;29833:46:30;;;;;;;;;;;;;;;:29;;;;;;:46;;;;;-1:-1:-1;;29833:46:30;;;;;;;;-1:-1:-1;29833:29:30;:46;;;5:2:-1;;;;30:1;27;20:12;5:2;29833:46:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29833:46:30;;;;29729:253;;;29910:61;;;-1:-1:-1;;;29910:61:30;;-1:-1:-1;;;;;29910:61:30;;;;;;;;;;;;;;;:29;;;;;;29946:7;;29910:61;;;;;-1:-1:-1;;29910:61:30;;;;;;;29946:7;29910:29;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;29910:61:30;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;29910:61:30;;;;;29729:253;29997:32;;;-1:-1:-1;;;;;29997:32:30;;;;;;;;;;;;;;;;;;;;;;;2129:1;;29093:943;;:::o;20579:233::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;20672:17;;20661:7;:28;;20653:65;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;-1:-1:-1;;;20653:65:30;;;;;;;;;;;;;;;20728:29;:10;20749:7;20728:29;:20;:29;:::i;:::-;20772:33;;;20785:10;20772:33;;;;;;;;;;;;;;;;;;;;;20579:233;:::o;15817:161::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;15892:30;:11;15914:7;15892:30;:21;:30;:::i;:::-;15937:34;;;15951:10;15937:34;;;;;;;;;;;;;;;;;;;;;15817:161;:::o;35929:1934::-;36047:12;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;36266:26:30;;;;;;:12;:26;;;;;;;;36261:91;;36308:33;:11;36334:6;36308:33;:25;:33;:::i;:::-;36453:34;-1:-1:-1;;;;;36453:32:30;;;:34::i;:::-;:69;;;;;36491:31;36509:12;36491:17;:31::i;:::-;36449:1098;;;36625:10;36649:14;36692:48;36720:12;36734:5;36692:27;:48::i;:::-;-1:-1:-1;;;;;36759:16:30;;;;;;:12;:16;;;;;;;;-1:-1:-1;36677:63:30;-1:-1:-1;36759:16:30;;36754:335;;36962:18;36983:36;36998:12;37012:6;36983:14;:36::i;:::-;36962:57;-1:-1:-1;37037:37:30;:11;36962:57;37037:37;:25;:37;:::i;:::-;36754:335;;37238:45;-1:-1:-1;;;;;37238:38:30;;37277:5;37238:38;:45::i;:::-;37404:13;;;37414:2;37404:13;;;;;;;;;37387:14;;37404:13;;;21:6:-1;;104:10;37404:13:30;87:34:-1;135:17;;-1:-1;37404:13:30;37387:30;;37439:4;37431:12;;:1;37433:2;37431:5;;;;;;;;-1:-1:-1;;;;;;37431:12:30;;;;;;;;;:5;;;:12;-1:-1:-1;37463:51:30;;;-1:-1:-1;;;;;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37483:12;;37497:6;;37505:5;;37512:1;;37463:51;;;;;-1:-1:-1;37463:51:30;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37463:51:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37463:51:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37535:1;-1:-1:-1;37528:8:30;;-1:-1:-1;;37528:8:30;36449:1098;37558:12;37572:23;37599:12;-1:-1:-1;;;;;37599:17:30;37623:6;37631:5;37599:38;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;37599:38:30;;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;37557:80:30;;;;37655:7;37671:10;37647:36;;;;;-1:-1:-1;;;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37647:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;-1:-1:-1;;;;;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37719:12;;37733:6;;37741:5;;37748:10;;37699:60;;;;;-1:-1:-1;37699:60:30;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;37699:60:30;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;37699:60:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;37846:10;-1:-1:-1;;2129:1:30;35929:1934;;;;;:::o;26493:1111::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;26954:63:30;;-1:-1:-1;;;26954:63:30;;;;;;26846:9;26954:63;;;;;;26996:4;26954:63;;;;;;;;;;;;;;26846:9;;26797:10;;26944:99;;26846:9;;26996:4;;27003:6;;27011:5;;;;26954:63;;27011:5;;;;26954:63;1:33:-1;57:3;49:6;45:16;35:26;;26954:63:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;26954:63:30;;;26944:74;;;;;;:97;:99::i;:::-;27119:38;;;;;;;;;;;;;;;;;;;;;;26925:118;;-1:-1:-1;;;;27161:9:30;27119:38;;26925:118;;27119:38;27146:10;;;;;;27119:38;;27146:10;;;;27119:38;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;27119:16:30;;-1:-1:-1;;;27119:38:30:i;:::-;-1:-1:-1;;;;;;27119:51:30;;27111:77;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;-1:-1:-1;;;27111:77:30;;;;;;;;;;;;;;;27301:10;;27291:6;:20;27283:42;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;-1:-1:-1;;;27283:42:30;;;;;;;;;;;;;;;27335:21;:19;:21::i;:::-;27465:25;;27424:12;;27438:23;;27473:4;;27484:5;;;;27465:25;27484:5;;;;27465:25;1:33:-1;27465:25:30;;45:16:-1;;;-1:-1;27465:25:30;;-1:-1:-1;27465:25:30;;-1:-1:-1;;27465:25:30;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;27423:67:30;;;;27508:7;27524:10;27500:36;;;;;-1:-1:-1;;;27500:36:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27:10;;8:100;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;27500:36:30;;27552:45;27579:5;;27586:10;27552:45;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;;;137:4;117:14;;;-1:-1;;113:30;157:16;;;27552:45:30;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27552:45:30;;;;;;;8:100:-1;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;27552:45:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1936:1:23;;;;26493:1111:30;;;;;:::o;8121:126::-;8180:16;8215:25;8208:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8208:32:30;;;;;;;;;-1:-1:-1;8208:32:30;;;;;;;;;;;;;;;;;8121:126;:::o;5523:1117::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;5681:26:30;;;;5673:60;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;-1:-1:-1;;;5673:60:30;;;;;;;;;;;;;;;5855:40;5869:25;5855:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5855:40:30;;;;;;;;;-1:-1:-1;5855:40:30;;;;;;;;;;;;;;;:13;:40::i;:::-;5846:5;:49;5838:97;;;;-1:-1:-1;;;5838:97:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5990:9;5985:383;6009:25;:32;6005:36;;5985:383;;;6117:12;:42;6130:25;6156:1;6130:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6130:28:30;6117:42;;;;;;;;;;;;;;;6112:246;;6272:4;6227:12;:42;6240:25;6266:1;6240:28;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6240:28:30;6227:42;;;;;;;;;;;;:49;;-1:-1:-1;;6227:49:30;;;;;;;;;;6314:25;:28;;6294:14;;6314:25;6340:1;;6314:28;;;;;;;;;;;;;;;;;;;27:10:-1;;6314:28:30;23:18:-1;;45:23;;6294:49:30;;;;;;;;;;-1:-1:-1;;;;;;6294:49:30;-1:-1:-1;;;;;6314:28:30;;;6294:49;;;;;;6112:246;6043:3;;5985:383;;;-1:-1:-1;6418:55:30;;;6435:10;6418:55;;;;;;;;;6447:25;6418:55;;;;;;;;;;6435:10;;6447:25;;6418:55;;;;;;;6447:25;;6418:55;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6418:55:30;;;-1:-1:-1;6418:55:30;;;;;;;;;;;;;;;;;;;;;;;;;;6519:32;6526:25;;6519:32;:::i;:::-;-1:-1:-1;6599:26:30;:34;;-1:-1:-1;;6599:34:30;;;5523:1117::o;16023:119::-;16077:7;16103:32;:11;:30;:32::i;10340:673::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;10525:14;;;;;;;10517:52;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;-1:-1:-1;;;10517:52:30;;;;;;;;;;;;;;;10647:21;10639:49;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;-1:-1:-1;;;10639:49:30;;;;;;;;;;;;;;;10766:37;:24;10793:10;;10766:37;:::i;:::-;-1:-1:-1;10857:25:30;:32;;-1:-1:-1;;10857:32:30;;;;;10980:25;;;;;;;;;;;;;;;;;;10942:64;;10968:10;;;;10980:25;;10968:10;;;;;;10980:25;;;10968:10;;10980:25;10968:10;10980:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10980:13:30;;-1:-1:-1;;;10980:25:30:i;:::-;10942:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10942:64:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10942:64:30;;;;-1:-1:-1;10942:64:30;;-1:-1:-1;;;;;10942:64:30;10340:673;;:::o;3543:306:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;3664:15;;-1:-1:-1;;;3664:15:25;;;;3656:57;;;;;-1:-1:-1;;;3656:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;3767:6;:19;;-1:-1:-1;;;;;;3767:19:25;;;3802:40;;;-1:-1:-1;3802:40:25;;;;;;;;;;;;;;;;;;;;3543:306::o;19233:304:30:-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;19356:7;17364:8;19328:35;;:74;;;;;17296:10;19367:7;:35;;19328:74;19320:106;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;-1:-1:-1;;;19320:106:30;;;;;;;;;;;;;;;19436:42;:14;19470:7;19436:42;:33;:42;:::i;:::-;19493:37;;;;;;;;;;;;;;;;;19233:304;:::o;28706:91::-;28778:12;;28706:91;:::o;1364::24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;;1364:91::o;18028:125:30:-;18085:7;18111:35;:14;:33;:35::i;9505:711::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;3735:26;;;;3734:27;:57;;;;-1:-1:-1;3766:25:30;;;;;;;3765:26;3734:57;3726:98;;;;;-1:-1:-1;;;3726:98:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;9637:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;;;;;;;;3437:8;:23::i;:::-;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3509:13;;3534:1;;3509:10;;3520:1;;3509:13;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;9727:14:30;;;;;;;9719:52;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;-1:-1:-1;;;9719:52:30;;;;;;;;;;;;;;;9842:21;9834:49;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;-1:-1:-1;;;9834:49:30;;;;;;;;;;;;;;;9966:38;:25;9994:10;;9966:38;:::i;:::-;-1:-1:-1;10058:26:30;:33;;-1:-1:-1;;10058:33:30;10087:4;10058:33;;;10183:25;;;;;;;;;;;;;;;;;;10144:65;;10171:10;;;;10183:25;;10171:10;;;;;;10183:25;;;10171:10;;10183:25;10171:10;10183:25;1:33:-1;99:1;81:16;;74:27;;;;-1:-1;10183:13:30;;-1:-1:-1;;;10183:25:30:i;:::-;10144:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;10144:65:30;;137:4:-1;117:14;;;-1:-1;;113:30;157:16;;;10144:65:30;;;;-1:-1:-1;10144:65:30;;-1:-1:-1;;;;;10144:65:30;3834:1;9505:711;;:::o;1514:105:26:-;1593:19;;1514:105;:::o;3932:85:25:-;4004:6;;-1:-1:-1;;;;;4004:6:25;;3932:85::o;27713:87:30:-;1940:20:25;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;27772:21:30;:19;:21::i;:::-;27713:87::o;16562:100::-;16638:11;:17;16562:100;:::o;31175:2016::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;31295:24;;31322:2;31295:29;;;;:24;31273:19;;;31723:17;31764:1421;31777:11;31771:3;:17;31764:1421;;;31937:28;:20;31962:2;31937:28;:24;:28;:::i;:::-;32151:27;;;32145:34;;32312:2;32280:36;;32274:43;32533:2;32501:36;;;32495:43;;31914:51;;-1:-1:-1;32141:2:30;32137:43;;;;;-1:-1:-1;32274:43:30;;-1:-1:-1;32495:43:30;;-1:-1:-1;32501:36:30;-1:-1:-1;32709:27:30;32733:2;32709:19;32174:3;32495:43;32709:19;:7;:19;:::i;:::-;:23;:27;:23;:27;:::i;:::-;32703:33;;32856:11;32849:3;:18;;32841:44;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;-1:-1:-1;;;32841:44:30;;;;;;;;;;;;;;;32956:15;32952:70;;-1:-1:-1;32998:9:30;;;;;;;;;-1:-1:-1;32998:9:30;;32952:70;33130:44;33149:11;33162:5;33169:4;33130:18;:44::i;:::-;;31764:1421;;;2129:1;;;;;;;31175:2016;:::o;21796:145::-;21893:41;;;;21796:145;:::o;20927:251::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;21029:17;;21018:7;:28;;21010:65;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;-1:-1:-1;;;21010:65:30;;;;;;;;;;;;;;;21085:38;:10;21115:7;21085:38;:29;:38;:::i;:::-;21138:33;;;;;;;;;;;;;;;;;20927:251;:::o;2247:809:25:-;1940:20;1949:10;1940:8;:20::i;:::-;1932:55;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;-1:-1:-1;;;1932:55:25;;;;;;;;;;;;;;;2412:15;;-1:-1:-1;;;2412:15:25;;;;2404:57;;;;;-1:-1:-1;;;2404:57:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2542:22:25;;2534:70;;;;-1:-1:-1;;;2534:70:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2689:15;:31;;-1:-1:-1;;;;2689:31:25;-1:-1:-1;;;2689:31:25;;;;;;;;2799:75;;2838:25;;;-1:-1:-1;;;;;2838:25:25;;;;;;;;;;;;;;;2799:75;2955:6;;2934:38;;;-1:-1:-1;;;;;2955:6:25;;;2934:38;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3032:6:25;:17;;-1:-1:-1;;;;;;3032:17:25;-1:-1:-1;;;;;3032:17:25;;;;;;;;;;2247:809::o;33378:550:30:-;33456:7;33545:17;33564:12;33578:14;33602:21;33616:6;33602:13;:21::i;:::-;33542:81;;;;;;;;;;33703:9;33699:205;;;33736:9;33728:28;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;-1:-1:-1;;;33728:28:30;;;;;;;;;;;;;;;33861:32;33883:9;33861:17;:7;33873:4;33861:17;:11;:17;:::i;:::-;:21;:32;:21;:32;:::i;:::-;33854:39;;;;;;;33699:205;-1:-1:-1;33920:1:30;;33378:550;-1:-1:-1;;;;;33378:550:30:o;16359:147::-;16457:42;;;;16359:147;:::o;3169:26::-;;;;;;;;;:::o;38667:1097::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;38772:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38860:17:30;;38852:43;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;-1:-1:-1;;;38852:43:30;;;;;;;;;;;;;;;-1:-1:-1;;;;;38984:17:30;;;;;;:12;:17;;;;;;;;38979:584;;39101:7;-1:-1:-1;;;;;39205:20:30;;;39201:103;;39258:31;39273:6;39281:7;39258:14;:31::i;:::-;39245:44;;39201:103;39515:37;:11;39541:10;39515:37;:25;:37;:::i;:::-;38979:584;;39638:35;39652:3;39657:6;39665:7;39638:13;:35::i;:::-;39724:33;;;-1:-1:-1;;;;;39724:33:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;38667:1097;;;:::o;21639:102::-;21716:18;;21639:102;:::o;6709:1358::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;6896:25:30;;;;;;;6888:59;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;-1:-1:-1;;;6888:59:30;;;;;;;;;;;;;;;7068:39;7082:24;7068:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7068:39:30;;;;;;;;;-1:-1:-1;7068:39:30;;;;;;;;;;;;;;;:13;:39::i;:::-;7059:5;:48;7051:96;;;;-1:-1:-1;;;7051:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7199:9;7194:601;7218:24;:31;7214:35;;7194:601;;;7308:12;:41;7321:24;7346:1;7321:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7321:27:30;7308:41;;;;;;;;;;;;;;;7304:481;;;7413:5;7369:12;:41;7382:24;7407:1;7382:27;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7382:27:30;7369:41;;;;;;;;;;;;:49;;-1:-1:-1;;7369:49:30;;;;;;;;;;;7436:294;7460:14;:21;:28;;7486:1;7460:28;:25;:28;:::i;:::-;7456:1;:32;7436:294;;;7542:24;7567:1;7542:27;;;;;;;;;;;;;;;;;;7521:14;:17;;-1:-1:-1;;;;;7542:27:30;;;;7536:1;;7521:17;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7521:17:30;:48;7517:195;;;7617:14;7632:21;;-1:-1:-1;;7632:25:30;;;7617:41;;;;;;;;;;;;;;;;7597:14;:17;;-1:-1:-1;;;;;7617:41:30;;;;7612:1;;7597:17;;;;;;;;;;;;;;;:61;;-1:-1:-1;;;;;;7597:61:30;-1:-1:-1;;;;;7597:61:30;;;;;;;;;;7684:5;;7517:195;7490:3;;7436:294;;;-1:-1:-1;7747:14:30;:23;;;;;-1:-1:-1;;7747:23:30;;;:::i;:::-;;7304:481;7251:3;;7194:601;;;-1:-1:-1;7844:58:30;;;7865:10;7844:58;;;;;;;;;7877:24;7844:58;;;;;;;;;;7865:10;;7877:24;;7844:58;;;;;;;7877:24;;7844:58;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7844:58:30;;;-1:-1:-1;7844:58:30;;;;;;;;;;;;;;;;;;;;;;;;;;7948:31;7955:24;;7948:31;:::i;:::-;-1:-1:-1;8027:25:30;:33;;-1:-1:-1;;8027:33:30;;;6709:1358::o;18215:110::-;18296:22;;18215:110;:::o;23739:25::-;;;;:::o;11082:145::-;11155:7;11208:10;11191:28;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;11191:28:30;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;11191:28:30;;;11181:39;;;;;;11174:46;;11082:145;;;:::o;4641:659::-;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;4787:25;;;;;;;4779:59;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;-1:-1:-1;;;4779:59:30;;;;;;;;;;;;;;;4959:39;4973:24;4959:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4959:39:30;;;;;;;;;-1:-1:-1;4959:39:30;;;;;;;;;;;;;;;:13;:39::i;:::-;4950:5;:48;4942:96;;;;-1:-1:-1;;;4942:96:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5084:31;5091:24;;5084:31;:::i;:::-;5161:25;:33;;-1:-1:-1;;5161:33:30;;;5249:44;;;5275:10;5249:44;;;;;;;;;;;;;;;;;;;;;4641:659;:::o;2948:31::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2948:31:30;;-1:-1:-1;2948:31:30;:::o;22008:98::-;22083:10;:16;22008:98;:::o;3126:37::-;;;;;;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;30418:425:30:-;30472:7;25009:11;25001:31;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;-1:-1:-1;;;25001:31:30;;;;;;;;;;;;;;;1569:20;1578:10;1569:8;:20::i;:::-;:49;;;;1593:25;1607:10;1593:13;:25::i;:::-;1561:84;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;-1:-1:-1;;;1561:84:30;;;;;;;;;;;;;;;30633:37;:14;30662:7;30633:37;:28;:37;:::i;:::-;30717:7;:5;:7::i;:::-;:25;;-1:-1:-1;;;;;30717:16:30;;;;;:25;;;;;30734:7;;30717:25;;;;30734:7;30717:16;:25;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;30717:25:30;30795:41;30807:10;30819:7;:5;:7::i;:::-;30795:41;;;-1:-1:-1;;;;;30795:41:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30418:425;;:::o;15480:180::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;15564:40:30;:11;15596:7;15564:40;:31;:40;:::i;34129:1540::-;34212:7;34342:13;:11;:13::i;:::-;-1:-1:-1;;;;;34332:23:30;;;;;;34328:68;;;-1:-1:-1;34378:7:30;34371:14;;34328:68;34428:7;-1:-1:-1;;;;;34482:20:30;;;34478:600;;34654:17;34673:12;34687:14;34711:21;34725:6;34711:13;:21::i;:::-;34651:81;;;;;;;;;;34843:9;34835:41;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;-1:-1:-1;;;34835:41:30;;;;;;;;;;;;;;;34898:9;34890:28;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;-1:-1:-1;;;34890:28:30;;;;;;;;;;;;;;;35035:32;35057:9;35035:17;:7;35047:4;35035:17;:11;:17;:::i;:32::-;35020:47;;34478:600;;;;35195:27;35224:22;35248:24;35282:20;:18;:20::i;:::-;35192:110;;;;;;;;;;35368:19;35360:51;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;-1:-1:-1;;;35360:51:30;;;;;;;;;;;;;;;35429:19;35421:49;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;-1:-1:-1;;;35421:49:30;;;;;;;;;;;;;;;35605:57;35647:14;35605:37;:12;35622:19;35605:37;:16;:37;:::i;:57::-;35598:64;34129:1540;-1:-1:-1;;;;;;;34129:1540:30:o;21239:177::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;21322:39:30;:10;21353:7;21322:39;:30;:39;:::i;17783:189::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;1862:64:23;;;;;;;;;;;;;;;17870:43:30;:14;17905:7;17870:43;:34;:43;:::i;8555:827::-;2047:20;2056:10;2047:8;:20::i;:::-;:51;;;-1:-1:-1;2071:10:30;2093:4;2071:27;2047:51;2039:80;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;-1:-1:-1;;;2039:80:30;;;;;;;;;;;;;;;8657:10;;3294:293;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;74:27;;;-1:-1;99:1;-1:-1;;;3366:204:30;3390:10;:17;3386:1;:21;3366:204;;;3437:23;3446:10;3457:1;3446:13;;;;;;;3437:23;3436:24;3428:59;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;-1:-1:-1;;;3428:59:30;;;;;;;;;;;;;;;3509:13;;3534:1;;3509:10;;3520:1;;3509:13;;;;;;;;;;;;-1:-1:-1;;;;;3509:27:30;;;3501:58;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;-1:-1:-1;;;3501:58:30;;;;;;;;;;;;;;;3409:3;;3366:204;;;-1:-1:-1;8752:14:30;;;;;;;8751:15;8743:49;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;-1:-1:-1;;;8743:49:30;;;;;;;;;;;;;;;8871:9;8866:384;8886:21;;;8866:384;;;8996:12;:27;9009:10;;9020:1;9009:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9009:13:30;8996:27;;-1:-1:-1;8996:27:30;;;;;;;;-1:-1:-1;8996:27:30;;;;8991:249;;9122:4;9092:12;:27;9105:10;;9116:1;9105:13;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9105:13:30;9092:27;;-1:-1:-1;9092:27:30;;;;;;;;-1:-1:-1;9092:27:30;:34;;-1:-1:-1;;9092:34:30;;;;;;;;;;9191:14;9211:10;;9222:1;9211:13;;;;;;;27:10:-1;;39:1;23:18;;45:23;;-1:-1;9191:34:30;;;9211:13;9191:34;;;;;;;-1:-1:-1;;;;;;9191:34:30;-1:-1:-1;;;;;9211:13:30;;;;;;;;;;9191:34;;;;;;-1:-1:-1;8991:249:30;8909:3;;8866:384;;;-1:-1:-1;9259:14:30;:21;;-1:-1:-1;;9259:21:30;;;;;9331:44;;;9348:10;9331:44;;;;;;;;;9360:14;9331:44;;;;;;;;;;9348:10;;9360:14;;9331:44;;;;;;;9360:14;;9331:44;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9331:44:30;;;-1:-1:-1;9331:44:30;;;;;;;;;;;;;;;;;;;;;;;;;;2129:1;8555:827;;:::o;18386:153::-;18487:45;;;;18386:153;:::o;4123:107:25:-;4217:6;;-1:-1:-1;;;;;4205:18:25;;;4217:6;;4205:18;;4123:107::o;13567:401:30:-;13718:35;;;;;;13717:36;13709:66;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;-1:-1:-1;;;13709:66:30;;;;;;;;;;;;;;;13844:27;13857:4;13863:7;13844:12;:27::i;:::-;-1:-1:-1;13919:35:30;;:42;;-1:-1:-1;;13919:42:30;13957:4;13919:42;;;13567:401::o;2332:158:23:-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;2419:64;;;-1:-1:-1;;;2419:64:23;;-1:-1:-1;;;;;2419:64:23;;;;;;;;;:54;;;;;;;:64;;;;;;;;;;;;;;;:54;:64;;;5:2:-1;;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;2387:1891:2:-;2465:7;2526:9;:16;2546:2;2526:22;2522:72;;-1:-1:-1;2580:1:2;2564:19;;2522:72;2944:4;2929:20;;2923:27;2989:4;2974:20;;2968:27;3042:4;3027:20;;3021:27;2660:9;3013:36;3960:66;3947:79;;3943:127;;;4057:1;4042:17;;;;;;;3943:127;4084:1;:7;;4089:2;4084:7;;:18;;;;;4095:1;:7;;4100:2;4095:7;;4084:18;4080:66;;;4133:1;4118:17;;;;;;;4080:66;4247:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;4247:24:2;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;;4247:24:2;;-1:-1:-1;;4247:24:2;;;;-1:-1:-1;;;;;;;2387:1891:2:o;1207:245:21:-;1282:7;-1:-1:-1;;;;;1305:20:21;;;1301:145;;1348:33;;;-1:-1:-1;;;1348:33:21;;-1:-1:-1;;;;;1348:33:21;;;;;;;;;:23;;;;;;:33;;;;;;;;;;;;;;;:23;:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1348:33:21;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1348:33:21;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1348:33:21;;-1:-1:-1;1341:40:21;;1301:145;-1:-1:-1;;;;;;1419:16:21;;;1412:23;;12652:240:30;12757:19;;;;12728:7;;12757:33;;12781:8;12757:33;:23;:33;:::i;:::-;12751:3;:39;12747:139;;;-1:-1:-1;12813:10:30;;12806:17;;12747:139;-1:-1:-1;12861:14:30;;;;12854:21;;14103:317;14254:35;;;;;;14246:73;;;;;-1:-1:-1;;;14246:73:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;14391:12;;;;:22;14103:317::o;5161:156:26:-;5222:4;5247:13;5268:17;5282:2;5268:13;:17::i;:::-;-1:-1:-1;5238:47:26;;5161:156;-1:-1:-1;;;;;;;;5161:156:26:o;12192:288:30:-;12328:27;12350:4;12328:21;:27::i;:::-;12391:7;12373:4;:14;;;:25;;12365:54;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;-1:-1:-1;;;12365:54:30;;;;;;;;;;;;;;;12446:14;;;;:27;;12465:7;12446:27;:18;:27;:::i;:::-;12429:4;:14;;:44;;;;12192:288;;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;-1:-1:-1;;1731:33:24;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;2189:611:5;2553:10;;;2552:62;;-1:-1:-1;2569:39:5;;;-1:-1:-1;;;2569:39:5;;2593:4;2569:39;;;;-1:-1:-1;;;;;2569:39:5;;;;;;;;;:15;;;;;;:39;;;;;;;;;;;;;;;:15;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2569:39:5;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2569:39:5;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2569:39:5;:44;2552:62;2544:150;;;;-1:-1:-1;;;2544:150:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2730:62;;;-1:-1:-1;;;;;2730:62:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;2730:62:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;2704:89:5;;2723:5;;2704:18;:89::i;:::-;2189:611;;;:::o;542:413:1:-;902:20;940:8;;;542:413::o;4644:159:26:-;4706:4;4729:14;4753:17;4767:2;4753:13;:17::i;:::-;-1:-1:-1;4722:48:26;;4644:159;-1:-1:-1;;;;;;;;4644:159:26:o;4305:241::-;4407:7;4416;4458:32;4470:19;;4458:11;:32::i;:::-;4442:97;;;-1:-1:-1;;;4442:97:26;;-1:-1:-1;;;;;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;:76;;;;;;;4519:12;;4533:5;;4442:97;;;;;;;;;;;;;-1:-1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;4442:97:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4442:97:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4442:97:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4442:97:26;;;;;;;;;;;-1:-1:-1;4305:241:26;-1:-1:-1;;;4305:241:26:o;3757:1095:5:-;4352:27;-1:-1:-1;;;;;4352:25:5;;;:27::i;:::-;4344:71;;;;;-1:-1:-1;;;4344:71:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;4486:12;4500:23;4535:5;-1:-1:-1;;;;;4527:19:5;4547:4;4527:25;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4527:25:5;;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4485:67:5;;;;4570:7;4562:52;;;;;-1:-1:-1;;;4562:52:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4629:17;;:21;4625:221;;4769:10;4758:30;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4758:30:5;4750:85;;;;-1:-1:-1;;;4750:85:5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3757:1095;;;;:::o;4542:265:2:-;4741:58;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;4741:58:2;;;;;;;4731:69;;;;;;4542:265::o;27876:128:30:-;27926:10;:12;;;;;;;;27954:43;;;27974:10;27954:43;;;;;;;;;;;;;;;;;;;;;27876:128::o;1274:179:6:-;1332:7;1364:1;1359;:6;;1351:49;;;;;-1:-1:-1;;;1351:49:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1422:5:6;;;1274:179::o;834:176::-;892:7;923:5;;;946:6;;;;938:46;;;;;-1:-1:-1;;;938:46:6;;;;;;;;;;;;;;;;;;;;;;;;;;;2171:208:26;2229:13;2244:7;2253;2262:4;2268;2274;2280:7;2322:32;2334:19;;2322:11;:32::i;:::-;2306:66;;;-1:-1:-1;;;2306:66:26;;-1:-1:-1;;;;;2306:66:26;;;;;;;;;:62;;;;;;;:66;;;;;-1:-1:-1;;2306:66:26;;;;;;;;:62;:66;;;5:2:-1;;;;30:1;27;20:12;5:2;2306:66:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2306:66:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;2306:66:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;2306:66:26;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;285:43;;;-1:-1;;;;;244:29;;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;2306:66:26;;420:4:-1;411:14;;;;2306:66:26;;;;;411:14:-1;2306:66:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2306:66:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2299:73;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;-1:-1:-1;2306:66:26;;-1:-1:-1;;;2171:208:26;;;;;;;;;:::o;1693:458:6:-;1751:7;1991:6;1987:45;;-1:-1:-1;2020:1:6;2013:8;;1987:45;2054:5;;;2058:1;2054;:5;:1;2077:5;;;;;:10;2069:56;;;;-1:-1:-1;;;2069:56:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2606:326;2664:7;2761:1;2757;:5;2749:44;;;;;-1:-1:-1;;;2749:44:6;;;;;;;;;;;;;;;;;;;;;;;;;;;;2803:9;2819:1;2815;:5;;;;;;;2606:326;-1:-1:-1;;;;2606:326:6:o;1366:289:27:-;-1:-1:-1;;;;;1510:20:27;;1506:143;;1546:21;;-1:-1:-1;;;;;1546:12:27;;;:21;;;;;;;;;;;;:12;:21;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1546:21:27;1506:143;;;1598:40;-1:-1:-1;;;;;1598:26:27;;1625:3;1630:7;1598:26;:40::i;11749:338:30:-;11934:7;11918:4;:12;;;:23;11910:70;;;;-1:-1:-1;;;11910:70:30;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12048:32;12061:4;12067;:12;;;12048;:32::i;:::-;11749:338;;:::o;5436:141:26:-;5482:7;5524:32;5536:19;;5524:11;:32::i;:::-;-1:-1:-1;;;;;5508:60:26;;:62;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5508:62:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5508:62:26;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;5508:62:26;;-1:-1:-1;5436:141:26;:::o;2887:206::-;2940:13;2955:7;2964;2973:4;2979;2985;2991:7;3033:32;3045:19;;3033:11;:32::i;:::-;-1:-1:-1;;;;;3017:67:26;;:69;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3017:69:26;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3017:69:26;;;;;;39:16:-1;36:1;17:17;2:54;101:4;3017:69:26;80:15:-1;;;-1:-1;;76:31;65:43;;120:4;113:20;13:3;5:12;;2:2;;;30:1;27;20:12;2:2;3017:69:26;;;;;;;;;;;;;-1:-1:-1;;;11:20;;8:2;;;44:1;41;34:12;8:2;62:21;;;;123:4;114:14;;138:31;;;135:2;;;182:1;179;172:12;135:2;213:10;;285:43;;;-1:-1;;;;;244:29;;233:115;230:2;;;361:1;358;351:12;230:2;372:25;;-1:-1;3017:69:26;;420:4:-1;411:14;;;;3017:69:26;;;;;411:14:-1;3017:69:26;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3017:69:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3010:76;;3017:69;;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;-1:-1:-1;3017:69:26;;-1:-1:-1;3017:69:26;;-1:-1:-1;2887:206:26;;-1:-1:-1;;;2887:206:26:o;13038:425:30:-;13172:27;13194:4;13172:21;:27::i;:::-;13264:20;;;13376:14;;;;:27;-1:-1:-1;13372:85:30;;;13436:10;;13419:14;;;:27;13038:425;;:::o;14494:370::-;14578:19;;;;:33;;14602:8;14578:33;:23;:33;:::i;:::-;14572:3;:39;14568:290;;;14694:3;14672:19;;;:25;14795:10;;14778:14;;;:27;14824:23;;;;14795:10;;14824:23;14568:290;14494:370;:::o;1803:173:5:-;1910:58;;;-1:-1:-1;;;;;1910:58:5;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;1910:58:5;;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;1884:85:5;;1903:5;;1884:18;:85::i;22209:17557:30:-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;-1:-1:-1;;;;;22209:17557:30;;;;;;;;;;;-1:-1:-1;22209:17557:30;;;;;;;-1:-1:-1;22209:17557:30;;;-1:-1:-1;22209:17557:30;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22209:17557:30;;;-1:-1:-1;22209:17557:30;;"},"walletCache.sol:IWalletCache":{"bin":"","bin-runtime":"","srcmap":"","srcmap-runtime":""},"walletCache.sol:WalletCache":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032a265627a7a723158205d913b62084d26757d50822529c7c40b09c9ceaa3ed83439bb340ec274648b3964736f6c63430005110032","bin-runtime":"60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032a265627a7a723158205d913b62084d26757d50822529c7c40b09c9ceaa3ed83439bb340ec274648b3964736f6c63430005110032","srcmap":"1150:3249:31:-;;;1122:66:23;1272:58;;1397:66:31;1805:50;;1563:66;1861:65;;1732:66;1932:65;;2290:820;5:2:-1;;;;30:1;27;20:12;5:2;2290:820:31;;;;;;;;;;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;2290:820:31;;;;;;;;;;;;;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;2290:820:31;;;;;;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;2578:3:31;:11;;-1:-1:-1;;;;;;2578:11:31;-1:-1:-1;;;;;2578:11:31;;;;;2599:17;:39;;;2695:27;;2691:85;;2738:11;:27;;;2691:85;2838:34;;2834:106;;2888:18;:41;;;2834:106;3002:34;;2998:106;;3052:18;:41;;;2998:106;2290:820;;;;;;1150:3249;;;;;;","srcmap-runtime":"1150:3249:31:-;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1150:3249:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2040:18;;;:::i;:::-;;;;-1:-1:-1;;;;;2040:18:31;;;;;;;;;;;;;;3337:473;;;:::i;:::-;;4291:106;;;:::i;:::-;;;;;;;;;;;;;;;;1805:50;;;:::i;1364:91:24:-;;;:::i;1861:65:31:-;;;:::i;1932:::-;;;:::i;3954:274::-;;;:::i;2064:32::-;;;:::i;2169:95:23:-;;;:::i;2004:29:31:-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2004:29:31;;:::i;2040:18::-;;;-1:-1:-1;;;;;2040:18:31;;:::o;3337:473::-;3479:13;3535:31;3547:18;;3535:11;:31::i;:::-;3600:3;;3617:18;;3582:4;;-1:-1:-1;;;;;3600:3:31;;3649:16;:14;:16::i;:::-;3679:11;;3704:17;;3495:236;;;;;:::i;:::-;-1:-1:-1;;;;;3495:236:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3495:236:31;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;-1:-1;3741:13:31;27:10:-1;;39:1;23:18;;45:23;;-1:-1;3741:26:31;;;;;;;;-1:-1:-1;;;;;3741:26:31;;-1:-1:-1;;;;;;3741:26:31;;;;;;;;3783:20;;;;;;;3479:252;;-1:-1:-1;3783:20:31;;;;;;3741:26;3783:20;;;3337:473;:::o;4291:106::-;4370:13;:20;4291:106;:::o;1805:50::-;;;;:::o;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;1861:65:31:-;;;;:::o;1932:::-;;;;:::o;3954:274::-;4017:6;3178:31;3190:18;;3178:11;:31::i;:::-;-1:-1:-1;;;;;3164:45:31;:10;-1:-1:-1;;;;;3164:45:31;;3156:87;;;;;-1:-1:-1;;;3156:87:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;4039:13;:20;4062:1;-1:-1:-1;4035:68:31;;;4079:13;:11;:13::i;:::-;4129;4143:20;;4113:13;;4129;-1:-1:-1;;4143:24:31;;;4129:39;;;;;;;;;;;;;;;;4178:13;:19;;-1:-1:-1;;;;;4129:39:31;;;;-1:-1:-1;4178:13:31;:19;;;;;;;;;;;;;;-1:-1:-1;;4178:19:31;;;;;-1:-1:-1;;;;;;4178:19:31;;;;;;4215:6;-1:-1:-1;3954:274:31;:::o;2064:32::-;;;;:::o;2169:95:23:-;2242:15;;2169:95;:::o;2004:29:31:-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;2004:29:31;;-1:-1:-1;2004:29:31;:::o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12;5:2;1716:61:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1716:61:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1716:61:24;;1631:153;-1:-1:-1;;1631:153:24:o;1150:3249:31:-;;;;;;;;:::o"},"walletDeployer.sol:WalletDeployer":{"bin":"60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860025534801561005857600080fd5b50604051610b1c380380610b1c8339818101604052606081101561007b57600080fd5b5080516020820151604090920151600080546001600160a01b0319166001600160a01b0384161790559091908180156100b45760018190555b5080156100c15760028190555b505050610a49806100d36000396000f3fe6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6000546001600160a01b031690565b6003602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526003602052604090205416156102ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260036020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60025481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526003602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60015490565b60006108aa600154610931565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b505192915050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d60208110156109a857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ff57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a265627a7a72315820e469fb5040338ccc44e2f84516449ba367eeaa90a44c8eee9ce7e255534aa15164736f6c63430005110032","bin-runtime":"6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6000546001600160a01b031690565b6003602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526003602052604090205416156102ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260036020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60025481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526003602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60015490565b60006108aa600154610931565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b505192915050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d60208110156109a857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ff57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a265627a7a72315820e469fb5040338ccc44e2f84516449ba367eeaa90a44c8eee9ce7e255534aa15164736f6c63430005110032","srcmap":"964:3265:32:-;;;1122:66:23;1272:58;;1337:66:32;1409:59;;1597:298;5:2:-1;;;;30:1;27;20:12;5:2;1597:298:32;;;;;;;;;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1597:298:32;;;;;;;;;;;1242:12:24;:23;;-1:-1:-1;;;;;;1242:23:24;-1:-1:-1;;;;;1242:23:24;;;;;1597:298:32;;;;1665:30:23;;1661:95;;1711:15;:34;;;1661:95;-1:-1:-1;1796:31:32;;1792:97;;1843:15;:35;;;1792:97;1597:298;;;964:3265;;;;;;","srcmap-runtime":"964:3265:32:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1364:91:24;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1364:91:24;;;:::i;:::-;;;;-1:-1:-1;;;;;1364:91:24;;;;;;;;;;;;;;1475:50:32;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1475:50:32;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1475:50:32;-1:-1:-1;;;;;1475:50:32;;:::i;2858:1369::-;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;2858:1369:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;5:28;;2:2;;;46:1;43;36:12;2:2;2858:1369:32;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;2858:1369:32;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;39:11;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;2858:1369:32;;-1:-1:-1;2858:1369:32;-1:-1:-1;2858:1369:32;:::i;:::-;;1409:59;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1409:59:32;;;:::i;:::-;;;;;;;;;;;;;;;;2052:398;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2052:398:32;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2052:398:32;-1:-1:-1;;;;;2052:398:32;;:::i;2169:95:23:-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2169:95:23;;;:::i;1364:91:24:-;1410:7;1436:12;-1:-1:-1;;;;;1436:12:24;1364:91;:::o;1475:50:32:-;;;;;;;;;;;;-1:-1:-1;;;;;1475:50:32;;:::o;2858:1369::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3284:23:32;;;3319:3;3284:23;;;:15;:23;;;;;;;:39;3276:85;;;;-1:-1:-1;;;3276:85:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3401:6;-1:-1:-1;;;;;3379:28:32;:10;-1:-1:-1;;;;;3379:16:32;;:18;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3379:18:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3379:18:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3379:18:32;-1:-1:-1;;;;;3379:28:32;;3371:55;;;;;-1:-1:-1;;;3371:55:32;;;;;;;;;;;;-1:-1:-1;;;3371:55:32;;;;;;;;;;;;;;;3437:13;3466:28;3478:15;;3466:11;:28::i;:::-;-1:-1:-1;;;;;3453:57:32;;:59;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3453:59:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3453:59:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3453:59:32;3527:53;;;-1:-1:-1;;;;;3527:53:32;;;;;;;;3453:59;3527:53;;;;;;;;;3570:9;3527:53;;;;;;3453:59;;-1:-1:-1;3527:53:32;;;;;;;;;;-1:-1:-1;;;;;3591:23:32;;;;;;;:15;:23;;;;;:41;;-1:-1:-1;;;;;;3591:41:32;;;;;;;;;;3706:86;;;;3748:6;-1:-1:-1;;;;;3748:20:32;;3769:11;3748:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3748:33:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3748:33:32;;;;3706:86;3805:25;3801:95;;;3846:6;-1:-1:-1;;;;;3846:23:32;;3870:14;3846:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3846:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3846:39:32;;;;3801:95;3909:21;3905:83;;;3946:6;-1:-1:-1;;;;;3946:19:32;;3966:10;3946:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3946:31:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;3946:31:32;;;;3905:83;4001:21;3997:94;;;4038:6;-1:-1:-1;;;;;4038:19:32;;4058:21;;4038:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4038:42:32;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4038:42:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4038:42:32;;;;3997:94;4101:39;;;-1:-1:-1;;;4101:39:32;;-1:-1:-1;;;;;4101:39:32;;;;;;;4134:5;4101:39;;;;;;;;:24;;;;;;:39;;;;;;;;;;;4134:5;4101:24;:39;;;5:2:-1;;;;30:1;27;20:12;5:2;4101:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4101:39:32;;;;4167:1;4155:9;:13;4151:70;;;4184:26;;-1:-1:-1;;;;;4184:15:32;;;4200:9;4184:26;;;;;;;;;4200:9;4184:15;:26;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;4184:26:32;4151:70;1936:1:23;2858:1369:32;;;;;;;;;;;:::o;1409:59::-;;;;:::o;2052:398::-;1870:25:23;1884:10;1870:13;:25::i;:::-;1862:64;;;;;-1:-1:-1;;;1862:64:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;2132:13:32;2161:28;2173:15;;2161:11;:28::i;:::-;-1:-1:-1;;;;;2148:57:32;;:59;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2148:59:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2148:59:32;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2148:59:32;2222:30;;;-1:-1:-1;;;;;2222:30:32;;;;;;;2148:59;2222:30;;;;;2148:59;;-1:-1:-1;2222:30:32;;;;;;;;;;;-1:-1:-1;;;;;2263:23:32;;;;;;;:15;:23;;;;;;:41;;-1:-1:-1;;;;;;2263:41:32;;;;;;;;;2404:39;;-1:-1:-1;;;2404:39:32;;;;;;;;;;;;;;;;:24;;:39;;;;;2263:23;2404:39;;;;;;2263:23;:41;2404:39;;;5:2:-1;;;;30:1;27;20:12;5:2;2404:39:32;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2404:39:32;;;;1936:1:23;2052:398:32;:::o;2169:95:23:-;2242:15;;2169:95;:::o;2332:158::-;2396:4;2431:28;2443:15;;2431:11;:28::i;:::-;-1:-1:-1;;;;;2419:54:23;;2474:8;2419:64;;;;;;;;;;;;;-1:-1:-1;;;;;2419:64:23;-1:-1:-1;;;;;2419:64:23;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2419:64:23;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;2419:64:23;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;2419:64:23;;2332:158;-1:-1:-1;;2332:158:23:o;1631:153:24:-;1690:7;1735:12;;1731:33;;;-1:-1:-1;;;1731:33:24;;;;;;;;;;-1:-1:-1;;;;;1735:12:24;;;;1731:26;;:33;;;;;;;;;;;;;;;1735:12;1731:33;;;5:2:-1;;;;30:1;27;20:12;5:2;1731:33:24;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;1731:33:24;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;1731:33:24;1716:61;;;-1:-1:-1;;;1716:61:24;;;;;;;;;;-1:-1:-1;;;;;1716:54:24;;;;;;:61;;;;;1731:33;;1716:61;;;;;;;;:54;:61;;;5:2:-1;;;;30:1;27;20:12"}},"sourceList":["controller.sol","externals/Address.sol","externals/ECDSA.sol","externals/ERC165.sol","externals/ERC20.sol","externals/SafeERC20.sol","externals/SafeMath.sol","externals/ens/ENS.sol","externals/ens/ENSBytesUtils.sol","externals/ens/PublicResolver.sol","externals/ens/RRUtils.sol","externals/ens/ResolverBase.sol","externals/ens/profiles/ABIResolver.sol","externals/ens/profiles/AddrResolver.sol","externals/ens/profiles/ContentHashResolver.sol","externals/ens/profiles/DNSResolver.sol","externals/ens/profiles/InterfaceResolver.sol","externals/ens/profiles/NameResolver.sol","externals/ens/profiles/PubkeyResolver.sol","externals/ens/profiles/TextResolver.sol","externals/strings.sol","internals/balanceable.sol","internals/bytesUtils.sol","internals/controllable.sol","internals/ensResolvable.sol","internals/ownable.sol","internals/tokenWhitelistable.sol","internals/transferrable.sol","licence.sol","tokenWhitelist.sol","wallet.sol","walletCache.sol","walletDeployer.sol"],"sources":{"controller.sol":{"AST":{"attributes":{"absolutePath":"controller.sol","exportedSymbols":{"Controller":[3161],"IController":[2726]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2709,"name":"PragmaDirective","src":"770:24:0"},{"attributes":{"SourceUnit":3911,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":3162,"symbolAliases":[null],"unitAlias":""},"id":2710,"name":"ImportDirective","src":"796:33:0"},{"attributes":{"SourceUnit":4168,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":3162,"symbolAliases":[null],"unitAlias":""},"id":2711,"name":"ImportDirective","src":"830:39:0"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The IController interface provides access to the isController and isAdmin checks.","fullyImplemented":false,"linearizedBaseContracts":[2726],"name":"IController","scope":3162},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isController","scope":2726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2718,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2712,"name":"ElementaryTypeName","src":"1015:7:0"}],"id":2713,"name":"VariableDeclaration","src":"1015:7:0"}],"id":2714,"name":"ParameterList","src":"1014:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2718,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2715,"name":"ElementaryTypeName","src":"1047:4:0"}],"id":2716,"name":"VariableDeclaration","src":"1047:4:0"}],"id":2717,"name":"ParameterList","src":"1046:6:0"}],"id":2718,"name":"FunctionDefinition","src":"993:60:0"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAdmin","scope":2726,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":2725,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2719,"name":"ElementaryTypeName","src":"1076:7:0"}],"id":2720,"name":"VariableDeclaration","src":"1076:7:0"}],"id":2721,"name":"ParameterList","src":"1075:9:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2725,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2722,"name":"ElementaryTypeName","src":"1108:4:0"}],"id":2723,"name":"VariableDeclaration","src":"1108:4:0"}],"id":2724,"name":"ParameterList","src":"1107:6:0"}],"id":2725,"name":"FunctionDefinition","src":"1059:55:0"}],"id":2726,"name":"ContractDefinition","src":"965:151:0"},{"attributes":{"contractDependencies":[2726,3910,4167],"contractKind":"contract","documentation":"@title Controller stores a list of controller addresses that can be used for authentication in other contracts.\n @notice The Controller implements a hierarchy of concepts, Owner, Admin, and the Controllers.\n @dev Owner can change the Admins\n @dev Admins and can the Controllers\n @dev Controllers are used by the application.","fullyImplemented":true,"linearizedBaseContracts":[3161,4167,3910,2726],"name":"Controller","scope":3162},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"IController","referencedDeclaration":2726,"type":"contract IController"},"id":2727,"name":"UserDefinedTypeName","src":"1483:11:0"}],"id":2728,"name":"InheritanceSpecifier","src":"1483:11:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3910,"type":"contract Ownable"},"id":2729,"name":"UserDefinedTypeName","src":"1496:7:0"}],"id":2730,"name":"InheritanceSpecifier","src":"1496:7:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4167,"type":"contract Transferrable"},"id":2731,"name":"UserDefinedTypeName","src":"1505:13:0"}],"id":2732,"name":"InheritanceSpecifier","src":"1505:13:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2733,"name":"ElementaryTypeName","src":"1547:7:0"}],"id":2734,"name":"VariableDeclaration","src":"1547:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":2738,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2735,"name":"ElementaryTypeName","src":"1564:7:0"}],"id":2736,"name":"VariableDeclaration","src":"1564:19:0"}],"id":2737,"name":"ParameterList","src":"1546:38:0"}],"id":2738,"name":"EventDefinition","src":"1525:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedController"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2744,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2739,"name":"ElementaryTypeName","src":"1614:7:0"}],"id":2740,"name":"VariableDeclaration","src":"1614:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_controller","scope":2744,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2741,"name":"ElementaryTypeName","src":"1631:7:0"}],"id":2742,"name":"VariableDeclaration","src":"1631:19:0"}],"id":2743,"name":"ParameterList","src":"1613:38:0"}],"id":2744,"name":"EventDefinition","src":"1590:62:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2750,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2745,"name":"ElementaryTypeName","src":"1675:7:0"}],"id":2746,"name":"VariableDeclaration","src":"1675:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":2750,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2747,"name":"ElementaryTypeName","src":"1692:7:0"}],"id":2748,"name":"VariableDeclaration","src":"1692:14:0"}],"id":2749,"name":"ParameterList","src":"1674:33:0"}],"id":2750,"name":"EventDefinition","src":"1658:50:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedAdmin"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2756,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2751,"name":"ElementaryTypeName","src":"1732:7:0"}],"id":2752,"name":"VariableDeclaration","src":"1732:15:0"},{"attributes":{"constant":false,"indexed":false,"name":"_admin","scope":2756,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2753,"name":"ElementaryTypeName","src":"1749:7:0"}],"id":2754,"name":"VariableDeclaration","src":"1749:14:0"}],"id":2755,"name":"ParameterList","src":"1731:33:0"}],"id":2756,"name":"EventDefinition","src":"1713:52:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":2764,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2757,"name":"ElementaryTypeName","src":"1785:7:0"}],"id":2758,"name":"VariableDeclaration","src":"1785:11:0"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":2764,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2759,"name":"ElementaryTypeName","src":"1798:7:0"}],"id":2760,"name":"VariableDeclaration","src":"1798:14:0"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":2764,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2761,"name":"ElementaryTypeName","src":"1814:7:0"}],"id":2762,"name":"VariableDeclaration","src":"1814:15:0"}],"id":2763,"name":"ParameterList","src":"1784:46:0"}],"id":2764,"name":"EventDefinition","src":"1771:60:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Stopped"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2768,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2765,"name":"ElementaryTypeName","src":"1851:7:0"}],"id":2766,"name":"VariableDeclaration","src":"1851:15:0"}],"id":2767,"name":"ParameterList","src":"1850:17:0"}],"id":2768,"name":"EventDefinition","src":"1837:31:0"},{"attributes":{"anonymous":false,"documentation":null,"name":"Started"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":2772,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2769,"name":"ElementaryTypeName","src":"1887:7:0"}],"id":2770,"name":"VariableDeclaration","src":"1887:15:0"}],"id":2771,"name":"ParameterList","src":"1886:17:0"}],"id":2772,"name":"EventDefinition","src":"1873:31:0"},{"attributes":{"constant":false,"name":"_isAdmin","scope":3161,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2773,"name":"ElementaryTypeName","src":"1918:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":2774,"name":"ElementaryTypeName","src":"1929:4:0"}],"id":2775,"name":"Mapping","src":"1910:24:0"}],"id":2776,"name":"VariableDeclaration","src":"1910:41:0"},{"attributes":{"constant":false,"name":"_adminCount","scope":3161,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2777,"name":"ElementaryTypeName","src":"1957:7:0"}],"id":2778,"name":"VariableDeclaration","src":"1957:27:0"},{"attributes":{"constant":false,"name":"_isController","scope":3161,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":2779,"name":"ElementaryTypeName","src":"1999:7:0"},{"attributes":{"name":"bool","type":"bool"},"id":2780,"name":"ElementaryTypeName","src":"2010:4:0"}],"id":2781,"name":"Mapping","src":"1991:24:0"}],"id":2782,"name":"VariableDeclaration","src":"1991:46:0"},{"attributes":{"constant":false,"name":"_controllerCount","scope":3161,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2783,"name":"ElementaryTypeName","src":"2043:7:0"}],"id":2784,"name":"VariableDeclaration","src":"2043:32:0"},{"attributes":{"constant":false,"name":"_stopped","scope":3161,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2785,"name":"ElementaryTypeName","src":"2082:4:0"}],"id":2786,"name":"VariableDeclaration","src":"2082:21:0"},{"attributes":{"documentation":"@notice Constructor initializes the owner with the provided address.\n @param _ownerAddress_ address of the owner.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ownerAddress_","scope":2796,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2787,"name":"ElementaryTypeName","src":"2251:15:0"}],"id":2788,"name":"VariableDeclaration","src":"2251:30:0"}],"id":2789,"name":"ParameterList","src":"2250:32:0"},{"attributes":{"parameters":[null]},"children":[],"id":2794,"name":"ParameterList","src":"2321:0:0"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"type(contract Ownable)","value":"Ownable"},"id":2790,"name":"Identifier","src":"2290:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2788,"type":"address payable","value":"_ownerAddress_"},"id":2791,"name":"Identifier","src":"2298:14:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":2792,"name":"Literal","src":"2314:5:0"}],"id":2793,"name":"ModifierInvocation","src":"2290:30:0"},{"attributes":{"statements":[null]},"children":[],"id":2795,"name":"Block","src":"2321:2:0"}],"id":2796,"name":"FunctionDefinition","src":"2239:84:0"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2797,"name":"ParameterList","src":"2401:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2f8968c9af9e3eece4dfc8e7fd3695cc7fadec2752852daee411c99c688848cd","typeString":"literal_string \"sender is not admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2798,"name":"Identifier","src":"2414:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2799,"name":"Identifier","src":"2422:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2800,"name":"Identifier","src":"2431:3:0"}],"id":2801,"name":"MemberAccess","src":"2431:10:0"}],"id":2802,"name":"IndexAccess","src":"2422:20:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin\"","value":"sender is not admin"},"id":2803,"name":"Literal","src":"2444:21:0"}],"id":2804,"name":"FunctionCall","src":"2414:52:0"}],"id":2805,"name":"ExpressionStatement","src":"2414:52:0"},{"id":2806,"name":"PlaceholderStatement","src":"2476:1:0"}],"id":2807,"name":"Block","src":"2404:80:0"}],"id":2808,"name":"ModifierDefinition","src":"2383:101:0"},{"attributes":{"documentation":"@notice Check if Owner or Admin","name":"onlyAdminOrOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2809,"name":"ParameterList","src":"2555:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2ba2b472b366eb64386b18bbcd9a5a3ba1b6c544e32fe949080d207cef281490","typeString":"literal_string \"sender is not admin or owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2810,"name":"Identifier","src":"2568:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2811,"name":"Identifier","src":"2576:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2812,"name":"Identifier","src":"2585:3:0"}],"id":2813,"name":"MemberAccess","src":"2585:10:0"}],"id":2814,"name":"FunctionCall","src":"2576:20:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2815,"name":"Identifier","src":"2600:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2816,"name":"Identifier","src":"2609:3:0"}],"id":2817,"name":"MemberAccess","src":"2609:10:0"}],"id":2818,"name":"IndexAccess","src":"2600:20:0"}],"id":2819,"name":"BinaryOperation","src":"2576:44:0"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f742061646d696e206f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not admin or owner\"","value":"sender is not admin or owner"},"id":2820,"name":"Literal","src":"2622:30:0"}],"id":2821,"name":"FunctionCall","src":"2568:85:0"}],"id":2822,"name":"ExpressionStatement","src":"2568:85:0"},{"id":2823,"name":"PlaceholderStatement","src":"2663:1:0"}],"id":2824,"name":"Block","src":"2558:113:0"}],"id":2825,"name":"ModifierDefinition","src":"2530:141:0"},{"attributes":{"documentation":"@notice Check if controller is stopped","name":"notStopped","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2826,"name":"ParameterList","src":"2743:2:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_85ee2f39c7b26ab6ab19f87847b9131cb704c886526fd11a8bd6fd7460c8788c","typeString":"literal_string \"controller is stopped\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2827,"name":"Identifier","src":"2756:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2940,"type":"function () view returns (bool)","value":"isStopped"},"id":2828,"name":"Identifier","src":"2765:9:0"}],"id":2829,"name":"FunctionCall","src":"2765:11:0"}],"id":2830,"name":"UnaryOperation","src":"2764:12:0"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e74726f6c6c65722069732073746f70706564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"controller is stopped\"","value":"controller is stopped"},"id":2831,"name":"Literal","src":"2778:23:0"}],"id":2832,"name":"FunctionCall","src":"2756:46:0"}],"id":2833,"name":"ExpressionStatement","src":"2756:46:0"},{"id":2834,"name":"PlaceholderStatement","src":"2812:1:0"}],"id":2835,"name":"Block","src":"2746:74:0"}],"id":2836,"name":"ModifierDefinition","src":"2724:96:0"},{"attributes":{"documentation":"@notice Add a new admin to the list of admins.\n @param _account address to add to the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"addAdmin","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2850,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2837,"name":"ElementaryTypeName","src":"2961:7:0"}],"id":2838,"name":"VariableDeclaration","src":"2961:16:0"}],"id":2839,"name":"ParameterList","src":"2960:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2844,"name":"ParameterList","src":"3009:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":2840,"name":"Identifier","src":"2988:9:0"}],"id":2841,"name":"ModifierInvocation","src":"2988:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":2842,"name":"Identifier","src":"2998:10:0"}],"id":2843,"name":"ModifierInvocation","src":"2998:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2994,"type":"function (address)","value":"_addAdmin"},"id":2845,"name":"Identifier","src":"3019:9:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2838,"type":"address","value":"_account"},"id":2846,"name":"Identifier","src":"3029:8:0"}],"id":2847,"name":"FunctionCall","src":"3019:19:0"}],"id":2848,"name":"ExpressionStatement","src":"3019:19:0"}],"id":2849,"name":"Block","src":"3009:36:0"}],"id":2850,"name":"FunctionDefinition","src":"2943:102:0"},{"attributes":{"documentation":"@notice Remove a admin from the list of admins.\n @param _account address to remove from the list of admins.","implemented":true,"isConstructor":false,"kind":"function","name":"removeAdmin","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2862,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2851,"name":"ElementaryTypeName","src":"3195:7:0"}],"id":2852,"name":"VariableDeclaration","src":"3195:16:0"}],"id":2853,"name":"ParameterList","src":"3194:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2856,"name":"ParameterList","src":"3232:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":2854,"name":"Identifier","src":"3222:9:0"}],"id":2855,"name":"ModifierInvocation","src":"3222:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3022,"type":"function (address)","value":"_removeAdmin"},"id":2857,"name":"Identifier","src":"3242:12:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2852,"type":"address","value":"_account"},"id":2858,"name":"Identifier","src":"3255:8:0"}],"id":2859,"name":"FunctionCall","src":"3242:22:0"}],"id":2860,"name":"ExpressionStatement","src":"3242:22:0"}],"id":2861,"name":"Block","src":"3232:39:0"}],"id":2862,"name":"FunctionDefinition","src":"3174:97:0"},{"attributes":{"documentation":"@return the current number of admins.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"adminCount","scope":3161,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2863,"name":"ParameterList","src":"3342:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2870,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2864,"name":"ElementaryTypeName","src":"3368:7:0"}],"id":2865,"name":"VariableDeclaration","src":"3368:7:0"}],"id":2866,"name":"ParameterList","src":"3367:9:0"},{"children":[{"attributes":{"functionReturnParameters":2866},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"uint256","value":"_adminCount"},"id":2867,"name":"Identifier","src":"3394:11:0"}],"id":2868,"name":"Return","src":"3387:18:0"}],"id":2869,"name":"Block","src":"3377:35:0"}],"id":2870,"name":"FunctionDefinition","src":"3323:89:0"},{"attributes":{"documentation":"@notice Add a new controller to the list of controllers.\n @param _account address to add to the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"addController","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2884,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2871,"name":"ElementaryTypeName","src":"3573:7:0"}],"id":2872,"name":"VariableDeclaration","src":"3573:16:0"}],"id":2873,"name":"ParameterList","src":"3572:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2878,"name":"ParameterList","src":"3628:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2874,"name":"Identifier","src":"3600:16:0"}],"id":2875,"name":"ModifierInvocation","src":"3600:16:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":2876,"name":"Identifier","src":"3617:10:0"}],"id":2877,"name":"ModifierInvocation","src":"3617:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3076,"type":"function (address)","value":"_addController"},"id":2879,"name":"Identifier","src":"3638:14:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2872,"type":"address","value":"_account"},"id":2880,"name":"Identifier","src":"3653:8:0"}],"id":2881,"name":"FunctionCall","src":"3638:24:0"}],"id":2882,"name":"ExpressionStatement","src":"3638:24:0"}],"id":2883,"name":"Block","src":"3628:41:0"}],"id":2884,"name":"FunctionDefinition","src":"3550:119:0"},{"attributes":{"documentation":"@notice Remove a controller from the list of controllers.\n @param _account address to remove from the list of controllers.","implemented":true,"isConstructor":false,"kind":"function","name":"removeController","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2896,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2885,"name":"ElementaryTypeName","src":"3839:7:0"}],"id":2886,"name":"VariableDeclaration","src":"3839:16:0"}],"id":2887,"name":"ParameterList","src":"3838:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2890,"name":"ParameterList","src":"3883:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":2888,"name":"Identifier","src":"3866:16:0"}],"id":2889,"name":"ModifierInvocation","src":"3866:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3104,"type":"function (address)","value":"_removeController"},"id":2891,"name":"Identifier","src":"3893:17:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2886,"type":"address","value":"_account"},"id":2892,"name":"Identifier","src":"3911:8:0"}],"id":2893,"name":"FunctionCall","src":"3893:27:0"}],"id":2894,"name":"ExpressionStatement","src":"3893:27:0"}],"id":2895,"name":"Block","src":"3883:44:0"}],"id":2896,"name":"FunctionDefinition","src":"3813:114:0"},{"attributes":{"documentation":"@notice count the Controllers\n @return the current number of controllers.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerCount","scope":3161,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2897,"name":"ParameterList","src":"4046:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2904,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2898,"name":"ElementaryTypeName","src":"4072:7:0"}],"id":2899,"name":"VariableDeclaration","src":"4072:7:0"}],"id":2900,"name":"ParameterList","src":"4071:9:0"},{"children":[{"attributes":{"functionReturnParameters":2900},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"_controllerCount"},"id":2901,"name":"Identifier","src":"4098:16:0"}],"id":2902,"name":"Return","src":"4091:23:0"}],"id":2903,"name":"Block","src":"4081:40:0"}],"id":2904,"name":"FunctionDefinition","src":"4022:99:0"},{"attributes":{"documentation":"@notice is an address an Admin?\n @return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","name":"isAdmin","scope":3161,"stateMutability":"view","superFunction":2725,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2918,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2905,"name":"ElementaryTypeName","src":"4242:7:0"}],"id":2906,"name":"VariableDeclaration","src":"4242:16:0"}],"id":2907,"name":"ParameterList","src":"4241:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2918,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2910,"name":"ElementaryTypeName","src":"4294:4:0"}],"id":2911,"name":"VariableDeclaration","src":"4294:4:0"}],"id":2912,"name":"ParameterList","src":"4293:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":2908,"name":"Identifier","src":"4274:10:0"}],"id":2909,"name":"ModifierInvocation","src":"4274:10:0"},{"children":[{"attributes":{"functionReturnParameters":2912},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2913,"name":"Identifier","src":"4317:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2906,"type":"address","value":"_account"},"id":2914,"name":"Identifier","src":"4326:8:0"}],"id":2915,"name":"IndexAccess","src":"4317:18:0"}],"id":2916,"name":"Return","src":"4310:25:0"}],"id":2917,"name":"Block","src":"4300:42:0"}],"id":2918,"name":"FunctionDefinition","src":"4225:117:0"},{"attributes":{"documentation":"@notice is an address a Controller?\n @return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","name":"isController","scope":3161,"stateMutability":"view","superFunction":2718,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2932,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2919,"name":"ElementaryTypeName","src":"4476:7:0"}],"id":2920,"name":"VariableDeclaration","src":"4476:16:0"}],"id":2921,"name":"ParameterList","src":"4475:18:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2932,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2924,"name":"ElementaryTypeName","src":"4528:4:0"}],"id":2925,"name":"VariableDeclaration","src":"4528:4:0"}],"id":2926,"name":"ParameterList","src":"4527:6:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":2922,"name":"Identifier","src":"4508:10:0"}],"id":2923,"name":"ModifierInvocation","src":"4508:10:0"},{"children":[{"attributes":{"functionReturnParameters":2926},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":2927,"name":"Identifier","src":"4551:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2920,"type":"address","value":"_account"},"id":2928,"name":"Identifier","src":"4565:8:0"}],"id":2929,"name":"IndexAccess","src":"4551:23:0"}],"id":2930,"name":"Return","src":"4544:30:0"}],"id":2931,"name":"Block","src":"4534:47:0"}],"id":2932,"name":"FunctionDefinition","src":"4454:127:0"},{"attributes":{"documentation":"@notice this function can be used to see if the controller has been stopped\n @return true is the Controller has been stopped","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isStopped","scope":3161,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2933,"name":"ParameterList","src":"4745:2:0"},{"children":[{"attributes":{"constant":false,"name":"","scope":2940,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2934,"name":"ElementaryTypeName","src":"4769:4:0"}],"id":2935,"name":"VariableDeclaration","src":"4769:4:0"}],"id":2936,"name":"ParameterList","src":"4768:6:0"},{"children":[{"attributes":{"functionReturnParameters":2936},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bool","value":"_stopped"},"id":2937,"name":"Identifier","src":"4792:8:0"}],"id":2938,"name":"Return","src":"4785:15:0"}],"id":2939,"name":"Block","src":"4775:32:0"}],"id":2940,"name":"FunctionDefinition","src":"4727:80:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addAdmin","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":2994,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2941,"name":"ElementaryTypeName","src":"4894:7:0"}],"id":2942,"name":"VariableDeclaration","src":"4894:16:0"}],"id":2943,"name":"ParameterList","src":"4893:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2944,"name":"ParameterList","src":"4920:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2945,"name":"Identifier","src":"4930:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2946,"name":"Identifier","src":"4939:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2947,"name":"Identifier","src":"4948:8:0"}],"id":2948,"name":"IndexAccess","src":"4939:18:0"}],"id":2949,"name":"UnaryOperation","src":"4938:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":2950,"name":"Literal","src":"4959:38:0"}],"id":2951,"name":"FunctionCall","src":"4930:68:0"}],"id":2952,"name":"ExpressionStatement","src":"4930:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2953,"name":"Identifier","src":"5008:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":2954,"name":"Identifier","src":"5017:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2955,"name":"Identifier","src":"5031:8:0"}],"id":2956,"name":"IndexAccess","src":"5017:23:0"}],"id":2957,"name":"UnaryOperation","src":"5016:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":2958,"name":"Literal","src":"5042:42:0"}],"id":2959,"name":"FunctionCall","src":"5008:77:0"}],"id":2960,"name":"ExpressionStatement","src":"5008:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2961,"name":"Identifier","src":"5095:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2962,"name":"Identifier","src":"5104:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2963,"name":"Identifier","src":"5113:8:0"}],"id":2964,"name":"FunctionCall","src":"5104:18:0"}],"id":2965,"name":"UnaryOperation","src":"5103:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":2966,"name":"Literal","src":"5124:39:0"}],"id":2967,"name":"FunctionCall","src":"5095:69:0"}],"id":2968,"name":"ExpressionStatement","src":"5095:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2969,"name":"Identifier","src":"5174:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2970,"name":"Identifier","src":"5182:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2971,"name":"ElementaryTypeNameExpression","src":"5194:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2972,"name":"Literal","src":"5202:1:0"}],"id":2973,"name":"FunctionCall","src":"5194:10:0"}],"id":2974,"name":"BinaryOperation","src":"5182:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":2975,"name":"Literal","src":"5206:38:0"}],"id":2976,"name":"FunctionCall","src":"5174:71:0"}],"id":2977,"name":"ExpressionStatement","src":"5174:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":2978,"name":"Identifier","src":"5255:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2979,"name":"Identifier","src":"5264:8:0"}],"id":2980,"name":"IndexAccess","src":"5255:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2981,"name":"Literal","src":"5276:4:0"}],"id":2982,"name":"Assignment","src":"5255:25:0"}],"id":2983,"name":"ExpressionStatement","src":"5255:25:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"uint256","value":"_adminCount"},"id":2984,"name":"Identifier","src":"5290:11:0"}],"id":2985,"name":"UnaryOperation","src":"5290:13:0"}],"id":2986,"name":"ExpressionStatement","src":"5290:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2750,"type":"function (address,address)","value":"AddedAdmin"},"id":2987,"name":"Identifier","src":"5318:10:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2988,"name":"Identifier","src":"5329:3:0"}],"id":2989,"name":"MemberAccess","src":"5329:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2942,"type":"address","value":"_account"},"id":2990,"name":"Identifier","src":"5341:8:0"}],"id":2991,"name":"FunctionCall","src":"5318:32:0"}],"id":2992,"name":"EmitStatement","src":"5313:37:0"}],"id":2993,"name":"Block","src":"4920:437:0"}],"id":2994,"name":"FunctionDefinition","src":"4875:482:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeAdmin","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3022,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2995,"name":"ElementaryTypeName","src":"5456:7:0"}],"id":2996,"name":"VariableDeclaration","src":"5456:16:0"}],"id":2997,"name":"ParameterList","src":"5455:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":2998,"name":"ParameterList","src":"5482:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1c739c60677de73f71e20970ace8544e82a98bdcd16e21df5754e7a2756cbedc","typeString":"literal_string \"provided account is not an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2999,"name":"Identifier","src":"5492:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3000,"name":"Identifier","src":"5500:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2996,"type":"address","value":"_account"},"id":3001,"name":"Identifier","src":"5509:8:0"}],"id":3002,"name":"IndexAccess","src":"5500:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not an admin\"","value":"provided account is not an admin"},"id":3003,"name":"Literal","src":"5520:34:0"}],"id":3004,"name":"FunctionCall","src":"5492:63:0"}],"id":3005,"name":"ExpressionStatement","src":"5492:63:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3006,"name":"Identifier","src":"5565:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2996,"type":"address","value":"_account"},"id":3007,"name":"Identifier","src":"5574:8:0"}],"id":3008,"name":"IndexAccess","src":"5565:18:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3009,"name":"Literal","src":"5586:5:0"}],"id":3010,"name":"Assignment","src":"5565:26:0"}],"id":3011,"name":"ExpressionStatement","src":"5565:26:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2778,"type":"uint256","value":"_adminCount"},"id":3012,"name":"Identifier","src":"5601:11:0"}],"id":3013,"name":"UnaryOperation","src":"5601:13:0"}],"id":3014,"name":"ExpressionStatement","src":"5601:13:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2756,"type":"function (address,address)","value":"RemovedAdmin"},"id":3015,"name":"Identifier","src":"5629:12:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3016,"name":"Identifier","src":"5642:3:0"}],"id":3017,"name":"MemberAccess","src":"5642:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2996,"type":"address","value":"_account"},"id":3018,"name":"Identifier","src":"5654:8:0"}],"id":3019,"name":"FunctionCall","src":"5629:34:0"}],"id":3020,"name":"EmitStatement","src":"5624:39:0"}],"id":3021,"name":"Block","src":"5482:188:0"}],"id":3022,"name":"FunctionDefinition","src":"5434:236:0"},{"attributes":{"documentation":"@notice Internal-only function that adds a new controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_addController","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3076,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3023,"name":"ElementaryTypeName","src":"5767:7:0"}],"id":3024,"name":"VariableDeclaration","src":"5767:16:0"}],"id":3025,"name":"ParameterList","src":"5766:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3026,"name":"ParameterList","src":"5793:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_491ef411eef1615ecf908753bd22ae846aac933d79b0327335a18e3988db6215","typeString":"literal_string \"provided account is already an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3027,"name":"Identifier","src":"5803:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2776,"type":"mapping(address => bool)","value":"_isAdmin"},"id":3028,"name":"Identifier","src":"5812:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3029,"name":"Identifier","src":"5821:8:0"}],"id":3030,"name":"IndexAccess","src":"5812:18:0"}],"id":3031,"name":"UnaryOperation","src":"5811:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already an admin\"","value":"provided account is already an admin"},"id":3032,"name":"Literal","src":"5832:38:0"}],"id":3033,"name":"FunctionCall","src":"5803:68:0"}],"id":3034,"name":"ExpressionStatement","src":"5803:68:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ea5e43d1c86e3916e6efb6c5ad4a915069293195e26cfb0847e731b480c61b69","typeString":"literal_string \"provided account is already a controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3035,"name":"Identifier","src":"5881:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":3036,"name":"Identifier","src":"5890:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3037,"name":"Identifier","src":"5904:8:0"}],"id":3038,"name":"IndexAccess","src":"5890:23:0"}],"id":3039,"name":"UnaryOperation","src":"5889:24:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already a controller\"","value":"provided account is already a controller"},"id":3040,"name":"Literal","src":"5915:42:0"}],"id":3041,"name":"FunctionCall","src":"5881:77:0"}],"id":3042,"name":"ExpressionStatement","src":"5881:77:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_28b510b314348cd3eee423698115cd76923e2c39fff2abeefc9606aa1cd4c741","typeString":"literal_string \"provided account is already the owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3043,"name":"Identifier","src":"5968:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3044,"name":"Identifier","src":"5977:8:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3045,"name":"Identifier","src":"5986:8:0"}],"id":3046,"name":"FunctionCall","src":"5977:18:0"}],"id":3047,"name":"UnaryOperation","src":"5976:19:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320616c726561647920746865206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is already the owner\"","value":"provided account is already the owner"},"id":3048,"name":"Literal","src":"5997:39:0"}],"id":3049,"name":"FunctionCall","src":"5968:69:0"}],"id":3050,"name":"ExpressionStatement","src":"5968:69:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_da72d12cc1dab77bb87826430977e9a5d381ba54a70ad14cb2761e202f01ff3b","typeString":"literal_string \"provided account is the zero address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3051,"name":"Identifier","src":"6047:7:0"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3052,"name":"Identifier","src":"6055:8:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3053,"name":"ElementaryTypeNameExpression","src":"6067:7:0"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3054,"name":"Literal","src":"6075:1:0"}],"id":3055,"name":"FunctionCall","src":"6067:10:0"}],"id":3056,"name":"BinaryOperation","src":"6055:22:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e7420697320746865207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is the zero address\"","value":"provided account is the zero address"},"id":3057,"name":"Literal","src":"6079:38:0"}],"id":3058,"name":"FunctionCall","src":"6047:71:0"}],"id":3059,"name":"ExpressionStatement","src":"6047:71:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":3060,"name":"Identifier","src":"6128:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3061,"name":"Identifier","src":"6142:8:0"}],"id":3062,"name":"IndexAccess","src":"6128:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3063,"name":"Literal","src":"6154:4:0"}],"id":3064,"name":"Assignment","src":"6128:30:0"}],"id":3065,"name":"ExpressionStatement","src":"6128:30:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"_controllerCount"},"id":3066,"name":"Identifier","src":"6168:16:0"}],"id":3067,"name":"UnaryOperation","src":"6168:18:0"}],"id":3068,"name":"ExpressionStatement","src":"6168:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2738,"type":"function (address,address)","value":"AddedController"},"id":3069,"name":"Identifier","src":"6201:15:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3070,"name":"Identifier","src":"6217:3:0"}],"id":3071,"name":"MemberAccess","src":"6217:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3024,"type":"address","value":"_account"},"id":3072,"name":"Identifier","src":"6229:8:0"}],"id":3073,"name":"FunctionCall","src":"6201:37:0"}],"id":3074,"name":"EmitStatement","src":"6196:42:0"}],"id":3075,"name":"Block","src":"5793:452:0"}],"id":3076,"name":"FunctionDefinition","src":"5743:502:0"},{"attributes":{"documentation":"@notice Internal-only function that removes an existing controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_removeController","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3104,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3077,"name":"ElementaryTypeName","src":"6354:7:0"}],"id":3078,"name":"VariableDeclaration","src":"6354:16:0"}],"id":3079,"name":"ParameterList","src":"6353:18:0"},{"attributes":{"parameters":[null]},"children":[],"id":3080,"name":"ParameterList","src":"6380:0:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_61b6700985eb6a295850095b1dc6d25862c09fd9ea7ce39c0e5f303dfe8ed582","typeString":"literal_string \"provided account is not a controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3081,"name":"Identifier","src":"6390:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":3082,"name":"Identifier","src":"6398:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3078,"type":"address","value":"_account"},"id":3083,"name":"Identifier","src":"6412:8:0"}],"id":3084,"name":"IndexAccess","src":"6398:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"provided account is not a controller\"","value":"provided account is not a controller"},"id":3085,"name":"Literal","src":"6423:38:0"}],"id":3086,"name":"FunctionCall","src":"6390:72:0"}],"id":3087,"name":"ExpressionStatement","src":"6390:72:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2782,"type":"mapping(address => bool)","value":"_isController"},"id":3088,"name":"Identifier","src":"6472:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3078,"type":"address","value":"_account"},"id":3089,"name":"Identifier","src":"6486:8:0"}],"id":3090,"name":"IndexAccess","src":"6472:23:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3091,"name":"Literal","src":"6498:5:0"}],"id":3092,"name":"Assignment","src":"6472:31:0"}],"id":3093,"name":"ExpressionStatement","src":"6472:31:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2784,"type":"uint256","value":"_controllerCount"},"id":3094,"name":"Identifier","src":"6513:16:0"}],"id":3095,"name":"UnaryOperation","src":"6513:18:0"}],"id":3096,"name":"ExpressionStatement","src":"6513:18:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2744,"type":"function (address,address)","value":"RemovedController"},"id":3097,"name":"Identifier","src":"6546:17:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3098,"name":"Identifier","src":"6564:3:0"}],"id":3099,"name":"MemberAccess","src":"6564:10:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3078,"type":"address","value":"_account"},"id":3100,"name":"Identifier","src":"6576:8:0"}],"id":3101,"name":"FunctionCall","src":"6546:39:0"}],"id":3102,"name":"EmitStatement","src":"6541:44:0"}],"id":3103,"name":"Block","src":"6380:212:0"}],"id":3104,"name":"FunctionDefinition","src":"6327:265:0"},{"attributes":{"documentation":"@notice stop our controllers and admins from being useable","implemented":true,"isConstructor":false,"kind":"function","name":"stop","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3105,"name":"ParameterList","src":"6678:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":3108,"name":"ParameterList","src":"6707:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2825,"type":"modifier ()","value":"onlyAdminOrOwner"},"id":3106,"name":"Identifier","src":"6690:16:0"}],"id":3107,"name":"ModifierInvocation","src":"6690:16:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bool","value":"_stopped"},"id":3109,"name":"Identifier","src":"6717:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":3110,"name":"Literal","src":"6728:4:0"}],"id":3111,"name":"Assignment","src":"6717:15:0"}],"id":3112,"name":"ExpressionStatement","src":"6717:15:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2768,"type":"function (address)","value":"Stopped"},"id":3113,"name":"Identifier","src":"6747:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3114,"name":"Identifier","src":"6755:3:0"}],"id":3115,"name":"MemberAccess","src":"6755:10:0"}],"id":3116,"name":"FunctionCall","src":"6747:19:0"}],"id":3117,"name":"EmitStatement","src":"6742:24:0"}],"id":3118,"name":"Block","src":"6707:66:0"}],"id":3119,"name":"FunctionDefinition","src":"6665:108:0"},{"attributes":{"documentation":"@notice start our controller again","implemented":true,"isConstructor":false,"kind":"function","name":"start","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3120,"name":"ParameterList","src":"6836:2:0"},{"attributes":{"parameters":[null]},"children":[],"id":3123,"name":"ParameterList","src":"6858:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":3121,"name":"Identifier","src":"6848:9:0"}],"id":3122,"name":"ModifierInvocation","src":"6848:9:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2786,"type":"bool","value":"_stopped"},"id":3124,"name":"Identifier","src":"6868:8:0"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":3125,"name":"Literal","src":"6879:5:0"}],"id":3126,"name":"Assignment","src":"6868:16:0"}],"id":3127,"name":"ExpressionStatement","src":"6868:16:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":2772,"type":"function (address)","value":"Started"},"id":3128,"name":"Identifier","src":"6899:7:0"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3129,"name":"Identifier","src":"6907:3:0"}],"id":3130,"name":"MemberAccess","src":"6907:10:0"}],"id":3131,"name":"FunctionCall","src":"6899:19:0"}],"id":3132,"name":"EmitStatement","src":"6894:24:0"}],"id":3133,"name":"Block","src":"6858:67:0"}],"id":3134,"name":"FunctionDefinition","src":"6822:103:0"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":3161,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3160,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3135,"name":"ElementaryTypeName","src":"7029:15:0"}],"id":3136,"name":"VariableDeclaration","src":"7029:19:0"},{"attributes":{"constant":false,"name":"_asset","scope":3160,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3137,"name":"ElementaryTypeName","src":"7050:7:0"}],"id":3138,"name":"VariableDeclaration","src":"7050:14:0"},{"attributes":{"constant":false,"name":"_amount","scope":3160,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3139,"name":"ElementaryTypeName","src":"7066:7:0"}],"id":3140,"name":"VariableDeclaration","src":"7066:15:0"}],"id":3141,"name":"ParameterList","src":"7028:54:0"},{"attributes":{"parameters":[null]},"children":[],"id":3146,"name":"ParameterList","src":"7113:0:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2808,"type":"modifier ()","value":"onlyAdmin"},"id":3142,"name":"Identifier","src":"7092:9:0"}],"id":3143,"name":"ModifierInvocation","src":"7092:9:0"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2836,"type":"modifier ()","value":"notStopped"},"id":3144,"name":"Identifier","src":"7102:10:0"}],"id":3145,"name":"ModifierInvocation","src":"7102:10:0"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4166,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":3147,"name":"Identifier","src":"7123:13:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3136,"type":"address payable","value":"_to"},"id":3148,"name":"Identifier","src":"7137:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3138,"type":"address","value":"_asset"},"id":3149,"name":"Identifier","src":"7142:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3140,"type":"uint256","value":"_amount"},"id":3150,"name":"Identifier","src":"7150:7:0"}],"id":3151,"name":"FunctionCall","src":"7123:35:0"}],"id":3152,"name":"ExpressionStatement","src":"7123:35:0"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2764,"type":"function (address,address,uint256)","value":"Claimed"},"id":3153,"name":"Identifier","src":"7173:7:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3136,"type":"address payable","value":"_to"},"id":3154,"name":"Identifier","src":"7181:3:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3138,"type":"address","value":"_asset"},"id":3155,"name":"Identifier","src":"7186:6:0"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3140,"type":"uint256","value":"_amount"},"id":3156,"name":"Identifier","src":"7194:7:0"}],"id":3157,"name":"FunctionCall","src":"7173:29:0"}],"id":3158,"name":"EmitStatement","src":"7168:34:0"}],"id":3159,"name":"Block","src":"7113:96:0"}],"id":3160,"name":"FunctionDefinition","src":"7014:195:0"}],"id":3161,"name":"ContractDefinition","src":"1460:5751:0"}],"id":3162,"name":"SourceUnit","src":"770:6442:0"}},"externals/Address.sol":{"AST":{"attributes":{"absolutePath":"externals/Address.sol","exportedSymbols":{"Address":[3225]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3208,"name":"PragmaDirective","src":"0:23:1"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Collection of functions related to the address type,","fullyImplemented":true,"linearizedBaseContracts":[3225],"name":"Address","scope":3226},"children":[{"attributes":{"documentation":"@dev Returns true if `account` is a contract.\n * This test is non-exhaustive, and there may be false-negatives: during the\nexecution of a contract's constructor, its address will be reported as\nnot containing a contract.\n * > It is unsafe to assume that an address for which this function returns\nfalse is an externally-owned account (EOA) and not a contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isContract","scope":3225,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"account","scope":3224,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3209,"name":"ElementaryTypeName","src":"562:7:1"}],"id":3210,"name":"VariableDeclaration","src":"562:15:1"}],"id":3211,"name":"ParameterList","src":"561:17:1"},{"children":[{"attributes":{"constant":false,"name":"","scope":3224,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3212,"name":"ElementaryTypeName","src":"602:4:1"}],"id":3213,"name":"VariableDeclaration","src":"602:4:1"}],"id":3214,"name":"ParameterList","src":"601:6:1"},{"children":[{"attributes":{"assignments":[3216],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"size","scope":3223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3215,"name":"ElementaryTypeName","src":"805:7:1"}],"id":3216,"name":"VariableDeclaration","src":"805:12:1"}],"id":3217,"name":"VariableDeclarationStatement","src":"805:12:1"},{"attributes":{"externalReferences":[{"size":{"declaration":3216,"isOffset":false,"isSlot":false,"src":"894:4:1","valueSize":1}},{"account":{"declaration":3210,"isOffset":false,"isSlot":false,"src":"914:7:1","valueSize":1}}],"operations":"{ size := extcodesize(account) }"},"children":[],"id":3218,"name":"InlineAssembly","src":"883:41:1"},{"attributes":{"functionReturnParameters":3214},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3216,"type":"uint256","value":"size"},"id":3219,"name":"Identifier","src":"940:4:1"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3220,"name":"Literal","src":"947:1:1"}],"id":3221,"name":"BinaryOperation","src":"940:8:1"}],"id":3222,"name":"Return","src":"933:15:1"}],"id":3223,"name":"Block","src":"608:347:1"}],"id":3224,"name":"FunctionDefinition","src":"542:413:1"}],"id":3225,"name":"ContractDefinition","src":"94:863:1"}],"id":3226,"name":"SourceUnit","src":"0:958:1"}},"externals/ECDSA.sol":{"AST":{"attributes":{"absolutePath":"externals/ECDSA.sol","exportedSymbols":{"ECDSA":[3306]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3227,"name":"PragmaDirective","src":"1161:23:2"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Elliptic Curve Digital Signature Algorithm (ECDSA) operations.\n * These functions can be used to verify that a message was signed by the holder\nof the private keys of a given address.","fullyImplemented":true,"linearizedBaseContracts":[3306],"name":"ECDSA","scope":3307},"children":[{"attributes":{"documentation":"@dev Returns the address that signed a hashed message (`hash`) with\n`signature`. This address can then be used for verification purposes.\n * The `ecrecover` EVM opcode allows for malleable (non-unique) signatures:\nthis function rejects them by requiring the `s` value to be in the lower\nhalf order, and the `v` value to be either 27 or 28.\n * NOTE: This call _does not revert_ if the signature is invalid, or\nif the signer is otherwise unable to be retrieved. In those scenarios,\nthe zero address is returned.\n * IMPORTANT: `hash` _must_ be the result of a hash operation for the\nverification to be secure: it is possible to craft signatures that\nrecover to arbitrary addresses for non-hashed data. A safe way to ensure\nthis is by receiving a hash of the original message (which may otherwise\nbe too long), and then calling {toEthSignedMessageHash} on it.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recover","scope":3306,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":3289,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3228,"name":"ElementaryTypeName","src":"2404:7:2"}],"id":3229,"name":"VariableDeclaration","src":"2404:12:2"},{"attributes":{"constant":false,"name":"signature","scope":3289,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3230,"name":"ElementaryTypeName","src":"2418:5:2"}],"id":3231,"name":"VariableDeclaration","src":"2418:22:2"}],"id":3232,"name":"ParameterList","src":"2403:38:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3289,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3233,"name":"ElementaryTypeName","src":"2465:7:2"}],"id":3234,"name":"VariableDeclaration","src":"2465:7:2"}],"id":3235,"name":"ParameterList","src":"2464:9:2"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3231,"type":"bytes memory","value":"signature"},"id":3236,"name":"Identifier","src":"2526:9:2"}],"id":3237,"name":"MemberAccess","src":"2526:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3635","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65","value":"65"},"id":3238,"name":"Literal","src":"2546:2:2"}],"id":3239,"name":"BinaryOperation","src":"2526:22:2"},{"children":[{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3240,"name":"ElementaryTypeNameExpression","src":"2572:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3241,"name":"Literal","src":"2580:1:2"}],"id":3242,"name":"FunctionCall","src":"2572:10:2"}],"id":3243,"name":"TupleExpression","src":"2571:12:2"}],"id":3244,"name":"Return","src":"2564:19:2"}],"id":3245,"name":"Block","src":"2550:44:2"}],"id":3246,"name":"IfStatement","src":"2522:72:2"},{"attributes":{"assignments":[3248],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"r","scope":3288,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3247,"name":"ElementaryTypeName","src":"2660:7:2"}],"id":3248,"name":"VariableDeclaration","src":"2660:9:2"}],"id":3249,"name":"VariableDeclarationStatement","src":"2660:9:2"},{"attributes":{"assignments":[3251],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"s","scope":3288,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3250,"name":"ElementaryTypeName","src":"2679:7:2"}],"id":3251,"name":"VariableDeclaration","src":"2679:9:2"}],"id":3252,"name":"VariableDeclarationStatement","src":"2679:9:2"},{"attributes":{"assignments":[3254],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"v","scope":3288,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":3253,"name":"ElementaryTypeName","src":"2698:5:2"}],"id":3254,"name":"VariableDeclaration","src":"2698:7:2"}],"id":3255,"name":"VariableDeclarationStatement","src":"2698:7:2"},{"attributes":{"externalReferences":[{"r":{"declaration":3248,"isOffset":false,"isSlot":false,"src":"2918:1:2","valueSize":1}},{"signature":{"declaration":3231,"isOffset":false,"isSlot":false,"src":"2933:9:2","valueSize":1}},{"v":{"declaration":3254,"isOffset":false,"isSlot":false,"src":"3008:1:2","valueSize":1}},{"s":{"declaration":3251,"isOffset":false,"isSlot":false,"src":"2963:1:2","valueSize":1}},{"signature":{"declaration":3231,"isOffset":false,"isSlot":false,"src":"2978:9:2","valueSize":1}},{"signature":{"declaration":3231,"isOffset":false,"isSlot":false,"src":"3031:9:2","valueSize":1}}],"operations":"{\n r := mload(add(signature, 0x20))\n s := mload(add(signature, 0x40))\n v := byte(0, mload(add(signature, 0x60)))\n}"},"children":[],"id":3256,"name":"InlineAssembly","src":"2895:164:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":3257,"name":"ElementaryTypeNameExpression","src":"3947:7:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3251,"type":"bytes32","value":"s"},"id":3258,"name":"Identifier","src":"3955:1:2"}],"id":3259,"name":"FunctionCall","src":"3947:10:2"},{"attributes":{"argumentTypes":null,"hexvalue":"307837464646464646464646464646464646464646464646464646464646464646463544353736453733353741343530314444464539324634363638314232304130","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5789...(69 digits omitted)...7168","value":"0x7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF5D576E7357A4501DDFE92F46681B20A0"},"id":3260,"name":"Literal","src":"3960:66:2"}],"id":3261,"name":"BinaryOperation","src":"3947:79:2"},{"children":[{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3262,"name":"ElementaryTypeNameExpression","src":"4049:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3263,"name":"Literal","src":"4057:1:2"}],"id":3264,"name":"FunctionCall","src":"4049:10:2"}],"id":3265,"name":"Return","src":"4042:17:2"}],"id":3266,"name":"Block","src":"4028:42:2"}],"id":3267,"name":"IfStatement","src":"3943:127:2"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"uint8","value":"v"},"id":3268,"name":"Identifier","src":"4084:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3237","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 27","value":"27"},"id":3269,"name":"Literal","src":"4089:2:2"}],"id":3270,"name":"BinaryOperation","src":"4084:7:2"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"uint8","value":"v"},"id":3271,"name":"Identifier","src":"4095:1:2"},{"attributes":{"argumentTypes":null,"hexvalue":"3238","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 28","value":"28"},"id":3272,"name":"Literal","src":"4100:2:2"}],"id":3273,"name":"BinaryOperation","src":"4095:7:2"}],"id":3274,"name":"BinaryOperation","src":"4084:18:2"},{"children":[{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3275,"name":"ElementaryTypeNameExpression","src":"4125:7:2"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3276,"name":"Literal","src":"4133:1:2"}],"id":3277,"name":"FunctionCall","src":"4125:10:2"}],"id":3278,"name":"Return","src":"4118:17:2"}],"id":3279,"name":"Block","src":"4104:42:2"}],"id":3280,"name":"IfStatement","src":"4080:66:2"},{"attributes":{"functionReturnParameters":3235},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":10529,"type":"function (bytes32,uint8,bytes32,bytes32) pure returns (address)","value":"ecrecover"},"id":3281,"name":"Identifier","src":"4247:9:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3229,"type":"bytes32","value":"hash"},"id":3282,"name":"Identifier","src":"4257:4:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3254,"type":"uint8","value":"v"},"id":3283,"name":"Identifier","src":"4263:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3248,"type":"bytes32","value":"r"},"id":3284,"name":"Identifier","src":"4266:1:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3251,"type":"bytes32","value":"s"},"id":3285,"name":"Identifier","src":"4269:1:2"}],"id":3286,"name":"FunctionCall","src":"4247:24:2"}],"id":3287,"name":"Return","src":"4240:31:2"}],"id":3288,"name":"Block","src":"2474:1804:2"}],"id":3289,"name":"FunctionDefinition","src":"2387:1891:2"},{"attributes":{"documentation":"@dev Returns an Ethereum Signed Message, created from a `hash`. This\nreplicates the behavior of the\nhttps://github.com/ethereum/wiki/wiki/JSON-RPC#eth_sign[`eth_sign`]\nJSON-RPC method.\n * See {recover}.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toEthSignedMessageHash","scope":3306,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"hash","scope":3305,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3290,"name":"ElementaryTypeName","src":"4574:7:2"}],"id":3291,"name":"VariableDeclaration","src":"4574:12:2"}],"id":3292,"name":"ParameterList","src":"4573:14:2"},{"children":[{"attributes":{"constant":false,"name":"","scope":3305,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3293,"name":"ElementaryTypeName","src":"4611:7:2"}],"id":3294,"name":"VariableDeclaration","src":"4611:7:2"}],"id":3295,"name":"ParameterList","src":"4610:9:2"},{"children":[{"attributes":{"functionReturnParameters":3295},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":3296,"name":"Identifier","src":"4731:9:2"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_178a2411ab6fbc1ba11064408972259c558d0e82fd48b0aba3ad81d14f065e73","typeString":"literal_string \"\u0019Ethereum Signed Message:\n32\""},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3297,"name":"Identifier","src":"4741:3:2"}],"id":3298,"name":"MemberAccess","src":"4741:16:2"},{"attributes":{"argumentTypes":null,"hexvalue":"19457468657265756d205369676e6564204d6573736167653a0a3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\u0019Ethereum Signed Message:\n32\"","value":"\u0019Ethereum Signed Message:\n32"},"id":3299,"name":"Literal","src":"4758:34:2"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3291,"type":"bytes32","value":"hash"},"id":3300,"name":"Identifier","src":"4794:4:2"}],"id":3301,"name":"FunctionCall","src":"4741:58:2"}],"id":3302,"name":"FunctionCall","src":"4731:69:2"}],"id":3303,"name":"Return","src":"4724:76:2"}],"id":3304,"name":"Block","src":"4620:187:2"}],"id":3305,"name":"FunctionDefinition","src":"4542:265:2"}],"id":3306,"name":"ContractDefinition","src":"1392:3417:2"}],"id":3307,"name":"SourceUnit","src":"1161:3649:2"}},"externals/ERC165.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC165.sol","exportedSymbols":{"ERC165":[3316]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3308,"name":"PragmaDirective","src":"0:24:3"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC165 interface specifies a standard way of querying if a contract implements an interface.","fullyImplemented":false,"linearizedBaseContracts":[3316],"name":"ERC165","scope":3317},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":3316,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":3315,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":3309,"name":"ElementaryTypeName","src":"180:6:3"}],"id":3310,"name":"VariableDeclaration","src":"180:6:3"}],"id":3311,"name":"ParameterList","src":"179:8:3"},{"children":[{"attributes":{"constant":false,"name":"","scope":3315,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3312,"name":"ElementaryTypeName","src":"211:4:3"}],"id":3313,"name":"VariableDeclaration","src":"211:4:3"}],"id":3314,"name":"ParameterList","src":"210:6:3"}],"id":3315,"name":"FunctionDefinition","src":"153:64:3"}],"id":3316,"name":"ContractDefinition","src":"130:89:3"}],"id":3317,"name":"SourceUnit","src":"0:220:3"}},"externals/ERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/ERC20.sol","exportedSymbols":{"ERC20":[3369]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".15"]},"id":3318,"name":"PragmaDirective","src":"0:24:4"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ERC20 interface is a subset of the ERC20 specification.\n @notice see https://github.com/ethereum/EIPs/issues/20","fullyImplemented":false,"linearizedBaseContracts":[3369],"name":"ERC20","scope":3370},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"allowance","scope":3369,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":3327,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3319,"name":"ElementaryTypeName","src":"193:7:4"}],"id":3320,"name":"VariableDeclaration","src":"193:14:4"},{"attributes":{"constant":false,"name":"_spender","scope":3327,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3321,"name":"ElementaryTypeName","src":"209:7:4"}],"id":3322,"name":"VariableDeclaration","src":"209:16:4"}],"id":3323,"name":"ParameterList","src":"192:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3327,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3324,"name":"ElementaryTypeName","src":"250:7:4"}],"id":3325,"name":"VariableDeclaration","src":"250:7:4"}],"id":3326,"name":"ParameterList","src":"249:9:4"}],"id":3327,"name":"FunctionDefinition","src":"174:85:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"approve","scope":3369,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_spender","scope":3336,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3328,"name":"ElementaryTypeName","src":"281:7:4"}],"id":3329,"name":"VariableDeclaration","src":"281:16:4"},{"attributes":{"constant":false,"name":"_value","scope":3336,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3330,"name":"ElementaryTypeName","src":"299:7:4"}],"id":3331,"name":"VariableDeclaration","src":"299:14:4"}],"id":3332,"name":"ParameterList","src":"280:34:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3336,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3333,"name":"ElementaryTypeName","src":"333:4:4"}],"id":3334,"name":"VariableDeclaration","src":"333:4:4"}],"id":3335,"name":"ParameterList","src":"332:6:4"}],"id":3336,"name":"FunctionDefinition","src":"264:75:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"balanceOf","scope":3369,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_who","scope":3343,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3337,"name":"ElementaryTypeName","src":"363:7:4"}],"id":3338,"name":"VariableDeclaration","src":"363:12:4"}],"id":3339,"name":"ParameterList","src":"362:14:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3340,"name":"ElementaryTypeName","src":"400:7:4"}],"id":3341,"name":"VariableDeclaration","src":"400:7:4"}],"id":3342,"name":"ParameterList","src":"399:9:4"}],"id":3343,"name":"FunctionDefinition","src":"344:65:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"totalSupply","scope":3369,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3344,"name":"ParameterList","src":"434:2:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3345,"name":"ElementaryTypeName","src":"460:7:4"}],"id":3346,"name":"VariableDeclaration","src":"460:7:4"}],"id":3347,"name":"ParameterList","src":"459:9:4"}],"id":3348,"name":"FunctionDefinition","src":"414:55:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transfer","scope":3369,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":3357,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3349,"name":"ElementaryTypeName","src":"492:7:4"}],"id":3350,"name":"VariableDeclaration","src":"492:11:4"},{"attributes":{"constant":false,"name":"_value","scope":3357,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3351,"name":"ElementaryTypeName","src":"505:7:4"}],"id":3352,"name":"VariableDeclaration","src":"505:14:4"}],"id":3353,"name":"ParameterList","src":"491:29:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3357,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3354,"name":"ElementaryTypeName","src":"539:4:4"}],"id":3355,"name":"VariableDeclaration","src":"539:4:4"}],"id":3356,"name":"ParameterList","src":"538:6:4"}],"id":3357,"name":"FunctionDefinition","src":"474:71:4"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"transferFrom","scope":3369,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_from","scope":3368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3358,"name":"ElementaryTypeName","src":"572:7:4"}],"id":3359,"name":"VariableDeclaration","src":"572:13:4"},{"attributes":{"constant":false,"name":"_to","scope":3368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3360,"name":"ElementaryTypeName","src":"587:7:4"}],"id":3361,"name":"VariableDeclaration","src":"587:11:4"},{"attributes":{"constant":false,"name":"_value","scope":3368,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3362,"name":"ElementaryTypeName","src":"600:7:4"}],"id":3363,"name":"VariableDeclaration","src":"600:14:4"}],"id":3364,"name":"ParameterList","src":"571:44:4"},{"children":[{"attributes":{"constant":false,"name":"","scope":3368,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3365,"name":"ElementaryTypeName","src":"634:4:4"}],"id":3366,"name":"VariableDeclaration","src":"634:4:4"}],"id":3367,"name":"ParameterList","src":"633:6:4"}],"id":3368,"name":"FunctionDefinition","src":"550:90:4"}],"id":3369,"name":"ContractDefinition","src":"152:490:4"}],"id":3370,"name":"SourceUnit","src":"0:643:4"}},"externals/SafeERC20.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeERC20.sol","exportedSymbols":{"SafeERC20":[3588]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3371,"name":"PragmaDirective","src":"1161:23:5"},{"attributes":{"SourceUnit":3370,"absolutePath":"externals/ERC20.sol","file":"./ERC20.sol","scope":3589,"symbolAliases":[null],"unitAlias":""},"id":3372,"name":"ImportDirective","src":"1186:21:5"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"./SafeMath.sol","scope":3589,"symbolAliases":[null],"unitAlias":""},"id":3373,"name":"ImportDirective","src":"1208:24:5"},{"attributes":{"SourceUnit":3226,"absolutePath":"externals/Address.sol","file":"./Address.sol","scope":3589,"symbolAliases":[null],"unitAlias":""},"id":3374,"name":"ImportDirective","src":"1233:23:5"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title SafeERC20\n@dev Wrappers around ERC20 operations that throw on failure (when the token\ncontract returns false). Tokens that return no value (and instead revert or\nthrow on failure) are also supported, non-reverting calls are assumed to be\nsuccessful.\nTo use this library you can add a `using SafeERC20 for ERC20;` statement to your contract,\nwhich allows you to call the safe operations as `token.safeTransfer(...)`, etc.","fullyImplemented":true,"linearizedBaseContracts":[3588],"name":"SafeERC20","scope":3589},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":3375,"name":"UserDefinedTypeName","src":"1745:8:5"},{"attributes":{"name":"uint256","type":"uint256"},"id":3376,"name":"ElementaryTypeName","src":"1758:7:5"}],"id":3377,"name":"UsingForDirective","src":"1739:27:5"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":3225,"type":"library Address"},"id":3378,"name":"UserDefinedTypeName","src":"1777:7:5"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3379,"name":"ElementaryTypeName","src":"1789:7:5"}],"id":3380,"name":"UsingForDirective","src":"1771:26:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransfer","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3402,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3381,"name":"UserDefinedTypeName","src":"1825:5:5"}],"id":3382,"name":"VariableDeclaration","src":"1825:11:5"},{"attributes":{"constant":false,"name":"to","scope":3402,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3383,"name":"ElementaryTypeName","src":"1838:7:5"}],"id":3384,"name":"VariableDeclaration","src":"1838:10:5"},{"attributes":{"constant":false,"name":"value","scope":3402,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3385,"name":"ElementaryTypeName","src":"1850:7:5"}],"id":3386,"name":"VariableDeclaration","src":"1850:13:5"}],"id":3387,"name":"ParameterList","src":"1824:40:5"},{"attributes":{"parameters":[null]},"children":[],"id":3388,"name":"ParameterList","src":"1874:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3389,"name":"Identifier","src":"1884:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3382,"type":"contract ERC20","value":"token"},"id":3390,"name":"Identifier","src":"1903:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3391,"name":"Identifier","src":"1910:3:5"}],"id":3392,"name":"MemberAccess","src":"1910:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":3357,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3382,"type":"contract ERC20","value":"token"},"id":3393,"name":"Identifier","src":"1933:5:5"}],"id":3394,"name":"MemberAccess","src":"1933:14:5"}],"id":3395,"name":"MemberAccess","src":"1933:23:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3384,"type":"address","value":"to"},"id":3396,"name":"Identifier","src":"1958:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3386,"type":"uint256","value":"value"},"id":3397,"name":"Identifier","src":"1962:5:5"}],"id":3398,"name":"FunctionCall","src":"1910:58:5"}],"id":3399,"name":"FunctionCall","src":"1884:85:5"}],"id":3400,"name":"ExpressionStatement","src":"1884:85:5"}],"id":3401,"name":"Block","src":"1874:102:5"}],"id":3402,"name":"FunctionDefinition","src":"1803:173:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeTransferFrom","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3427,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3403,"name":"UserDefinedTypeName","src":"2008:5:5"}],"id":3404,"name":"VariableDeclaration","src":"2008:11:5"},{"attributes":{"constant":false,"name":"from","scope":3427,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3405,"name":"ElementaryTypeName","src":"2021:7:5"}],"id":3406,"name":"VariableDeclaration","src":"2021:12:5"},{"attributes":{"constant":false,"name":"to","scope":3427,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3407,"name":"ElementaryTypeName","src":"2035:7:5"}],"id":3408,"name":"VariableDeclaration","src":"2035:10:5"},{"attributes":{"constant":false,"name":"value","scope":3427,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3409,"name":"ElementaryTypeName","src":"2047:7:5"}],"id":3410,"name":"VariableDeclaration","src":"2047:13:5"}],"id":3411,"name":"ParameterList","src":"2007:54:5"},{"attributes":{"parameters":[null]},"children":[],"id":3412,"name":"ParameterList","src":"2071:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3413,"name":"Identifier","src":"2081:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"contract ERC20","value":"token"},"id":3414,"name":"Identifier","src":"2100:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3415,"name":"Identifier","src":"2107:3:5"}],"id":3416,"name":"MemberAccess","src":"2107:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferFrom","referencedDeclaration":3368,"type":"function (address,address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3404,"type":"contract ERC20","value":"token"},"id":3417,"name":"Identifier","src":"2130:5:5"}],"id":3418,"name":"MemberAccess","src":"2130:18:5"}],"id":3419,"name":"MemberAccess","src":"2130:27:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3406,"type":"address","value":"from"},"id":3420,"name":"Identifier","src":"2159:4:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3408,"type":"address","value":"to"},"id":3421,"name":"Identifier","src":"2165:2:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3410,"type":"uint256","value":"value"},"id":3422,"name":"Identifier","src":"2169:5:5"}],"id":3423,"name":"FunctionCall","src":"2107:68:5"}],"id":3424,"name":"FunctionCall","src":"2081:95:5"}],"id":3425,"name":"ExpressionStatement","src":"2081:95:5"}],"id":3426,"name":"Block","src":"2071:112:5"}],"id":3427,"name":"FunctionDefinition","src":"1982:201:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeApprove","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3468,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3428,"name":"UserDefinedTypeName","src":"2210:5:5"}],"id":3429,"name":"VariableDeclaration","src":"2210:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3468,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3430,"name":"ElementaryTypeName","src":"2223:7:5"}],"id":3431,"name":"VariableDeclaration","src":"2223:15:5"},{"attributes":{"constant":false,"name":"value","scope":3468,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3432,"name":"ElementaryTypeName","src":"2240:7:5"}],"id":3433,"name":"VariableDeclaration","src":"2240:13:5"}],"id":3434,"name":"ParameterList","src":"2209:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3435,"name":"ParameterList","src":"2264:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ef945ddb1bfdc0da870feb4560d868b047642b4ac7f2fb7f8b7c51cb4a411e25","typeString":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3436,"name":"Identifier","src":"2544:7:5"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3433,"type":"uint256","value":"value"},"id":3437,"name":"Identifier","src":"2553:5:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3438,"name":"Literal","src":"2562:1:5"}],"id":3439,"name":"BinaryOperation","src":"2553:10:5"}],"id":3440,"name":"TupleExpression","src":"2552:12:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3327,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3429,"type":"contract ERC20","value":"token"},"id":3441,"name":"Identifier","src":"2569:5:5"}],"id":3442,"name":"MemberAccess","src":"2569:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3588","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3443,"name":"ElementaryTypeNameExpression","src":"2585:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10559,"type":"library SafeERC20","value":"this"},"id":3444,"name":"Identifier","src":"2593:4:5"}],"id":3445,"name":"FunctionCall","src":"2585:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3431,"type":"address","value":"spender"},"id":3446,"name":"Identifier","src":"2600:7:5"}],"id":3447,"name":"FunctionCall","src":"2569:39:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3448,"name":"Literal","src":"2612:1:5"}],"id":3449,"name":"BinaryOperation","src":"2569:44:5"}],"id":3450,"name":"TupleExpression","src":"2568:46:5"}],"id":3451,"name":"BinaryOperation","src":"2552:62:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: approve from non-zero to non-zero allowance\"","value":"SafeERC20: approve from non-zero to non-zero allowance"},"id":3452,"name":"Literal","src":"2628:56:5"}],"id":3453,"name":"FunctionCall","src":"2544:150:5"}],"id":3454,"name":"ExpressionStatement","src":"2544:150:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3455,"name":"Identifier","src":"2704:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3429,"type":"contract ERC20","value":"token"},"id":3456,"name":"Identifier","src":"2723:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3457,"name":"Identifier","src":"2730:3:5"}],"id":3458,"name":"MemberAccess","src":"2730:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3336,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3429,"type":"contract ERC20","value":"token"},"id":3459,"name":"Identifier","src":"2753:5:5"}],"id":3460,"name":"MemberAccess","src":"2753:13:5"}],"id":3461,"name":"MemberAccess","src":"2753:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3431,"type":"address","value":"spender"},"id":3462,"name":"Identifier","src":"2777:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3433,"type":"uint256","value":"value"},"id":3463,"name":"Identifier","src":"2786:5:5"}],"id":3464,"name":"FunctionCall","src":"2730:62:5"}],"id":3465,"name":"FunctionCall","src":"2704:89:5"}],"id":3466,"name":"ExpressionStatement","src":"2704:89:5"}],"id":3467,"name":"Block","src":"2264:536:5"}],"id":3468,"name":"FunctionDefinition","src":"2189:611:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeIncreaseAllowance","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3503,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3469,"name":"UserDefinedTypeName","src":"2837:5:5"}],"id":3470,"name":"VariableDeclaration","src":"2837:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3503,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3471,"name":"ElementaryTypeName","src":"2850:7:5"}],"id":3472,"name":"VariableDeclaration","src":"2850:15:5"},{"attributes":{"constant":false,"name":"value","scope":3503,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3473,"name":"ElementaryTypeName","src":"2867:7:5"}],"id":3474,"name":"VariableDeclaration","src":"2867:13:5"}],"id":3475,"name":"ParameterList","src":"2836:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3476,"name":"ParameterList","src":"2891:0:5"},{"children":[{"attributes":{"assignments":[3478]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3502,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3477,"name":"ElementaryTypeName","src":"2901:7:5"}],"id":3478,"name":"VariableDeclaration","src":"2901:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3327,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"contract ERC20","value":"token"},"id":3479,"name":"Identifier","src":"2924:5:5"}],"id":3480,"name":"MemberAccess","src":"2924:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3588","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3481,"name":"ElementaryTypeNameExpression","src":"2940:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10559,"type":"library SafeERC20","value":"this"},"id":3482,"name":"Identifier","src":"2948:4:5"}],"id":3483,"name":"FunctionCall","src":"2940:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3472,"type":"address","value":"spender"},"id":3484,"name":"Identifier","src":"2955:7:5"}],"id":3485,"name":"FunctionCall","src":"2924:39:5"}],"id":3486,"name":"MemberAccess","src":"2924:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3474,"type":"uint256","value":"value"},"id":3487,"name":"Identifier","src":"2968:5:5"}],"id":3488,"name":"FunctionCall","src":"2924:50:5"}],"id":3489,"name":"VariableDeclarationStatement","src":"2901:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3490,"name":"Identifier","src":"2984:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"contract ERC20","value":"token"},"id":3491,"name":"Identifier","src":"3003:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3492,"name":"Identifier","src":"3010:3:5"}],"id":3493,"name":"MemberAccess","src":"3010:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3336,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3470,"type":"contract ERC20","value":"token"},"id":3494,"name":"Identifier","src":"3033:5:5"}],"id":3495,"name":"MemberAccess","src":"3033:13:5"}],"id":3496,"name":"MemberAccess","src":"3033:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3472,"type":"address","value":"spender"},"id":3497,"name":"Identifier","src":"3057:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3478,"type":"uint256","value":"newAllowance"},"id":3498,"name":"Identifier","src":"3066:12:5"}],"id":3499,"name":"FunctionCall","src":"3010:69:5"}],"id":3500,"name":"FunctionCall","src":"2984:96:5"}],"id":3501,"name":"ExpressionStatement","src":"2984:96:5"}],"id":3502,"name":"Block","src":"2891:196:5"}],"id":3503,"name":"FunctionDefinition","src":"2806:281:5"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"safeDecreaseAllowance","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3538,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3504,"name":"UserDefinedTypeName","src":"3124:5:5"}],"id":3505,"name":"VariableDeclaration","src":"3124:11:5"},{"attributes":{"constant":false,"name":"spender","scope":3538,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3506,"name":"ElementaryTypeName","src":"3137:7:5"}],"id":3507,"name":"VariableDeclaration","src":"3137:15:5"},{"attributes":{"constant":false,"name":"value","scope":3538,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3508,"name":"ElementaryTypeName","src":"3154:7:5"}],"id":3509,"name":"VariableDeclaration","src":"3154:13:5"}],"id":3510,"name":"ParameterList","src":"3123:45:5"},{"attributes":{"parameters":[null]},"children":[],"id":3511,"name":"ParameterList","src":"3178:0:5"},{"children":[{"attributes":{"assignments":[3513]},"children":[{"attributes":{"constant":false,"name":"newAllowance","scope":3537,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3512,"name":"ElementaryTypeName","src":"3188:7:5"}],"id":3513,"name":"VariableDeclaration","src":"3188:20:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"allowance","referencedDeclaration":3327,"type":"function (address,address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"contract ERC20","value":"token"},"id":3514,"name":"Identifier","src":"3211:5:5"}],"id":3515,"name":"MemberAccess","src":"3211:15:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SafeERC20_$3588","typeString":"library SafeERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3516,"name":"ElementaryTypeNameExpression","src":"3227:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10559,"type":"library SafeERC20","value":"this"},"id":3517,"name":"Identifier","src":"3235:4:5"}],"id":3518,"name":"FunctionCall","src":"3227:13:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3507,"type":"address","value":"spender"},"id":3519,"name":"Identifier","src":"3242:7:5"}],"id":3520,"name":"FunctionCall","src":"3211:39:5"}],"id":3521,"name":"MemberAccess","src":"3211:43:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3509,"type":"uint256","value":"value"},"id":3522,"name":"Identifier","src":"3255:5:5"}],"id":3523,"name":"FunctionCall","src":"3211:50:5"}],"id":3524,"name":"VariableDeclarationStatement","src":"3188:73:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)","value":"callOptionalReturn"},"id":3525,"name":"Identifier","src":"3271:18:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"contract ERC20","value":"token"},"id":3526,"name":"Identifier","src":"3290:5:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSelector","referencedDeclaration":null,"type":"function (bytes4) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3527,"name":"Identifier","src":"3297:3:5"}],"id":3528,"name":"MemberAccess","src":"3297:22:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"selector","referencedDeclaration":null,"type":"bytes4"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"approve","referencedDeclaration":3336,"type":"function (address,uint256) external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3505,"type":"contract ERC20","value":"token"},"id":3529,"name":"Identifier","src":"3320:5:5"}],"id":3530,"name":"MemberAccess","src":"3320:13:5"}],"id":3531,"name":"MemberAccess","src":"3320:22:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3507,"type":"address","value":"spender"},"id":3532,"name":"Identifier","src":"3344:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3513,"type":"uint256","value":"newAllowance"},"id":3533,"name":"Identifier","src":"3353:12:5"}],"id":3534,"name":"FunctionCall","src":"3297:69:5"}],"id":3535,"name":"FunctionCall","src":"3271:96:5"}],"id":3536,"name":"ExpressionStatement","src":"3271:96:5"}],"id":3537,"name":"Block","src":"3178:196:5"}],"id":3538,"name":"FunctionDefinition","src":"3093:281:5"},{"attributes":{"documentation":"@dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement\non the return value: the return value is optional (but if data is returned, it must not be false).\n@param token The token targeted by the call.\n@param data The call data (encoded using abi.encode or one of its variants).","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"callOptionalReturn","scope":3588,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"token","scope":3587,"stateVariable":false,"storageLocation":"default","type":"contract ERC20","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":3539,"name":"UserDefinedTypeName","src":"3785:5:5"}],"id":3540,"name":"VariableDeclaration","src":"3785:11:5"},{"attributes":{"constant":false,"name":"data","scope":3587,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3541,"name":"ElementaryTypeName","src":"3798:5:5"}],"id":3542,"name":"VariableDeclaration","src":"3798:17:5"}],"id":3543,"name":"ParameterList","src":"3784:32:5"},{"attributes":{"parameters":[null]},"children":[],"id":3544,"name":"ParameterList","src":"3826:0:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f6ce7bfd656f35145dec774d6f7e67f4cba158373d2dd7a0f8273e232f86148d","typeString":"literal_string \"SafeERC20: call to non-contract\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3545,"name":"Identifier","src":"4344:7:5"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":3224,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3546,"name":"ElementaryTypeNameExpression","src":"4352:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3540,"type":"contract ERC20","value":"token"},"id":3547,"name":"Identifier","src":"4360:5:5"}],"id":3548,"name":"FunctionCall","src":"4352:14:5"}],"id":3549,"name":"MemberAccess","src":"4352:25:5"}],"id":3550,"name":"FunctionCall","src":"4352:27:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a2063616c6c20746f206e6f6e2d636f6e7472616374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: call to non-contract\"","value":"SafeERC20: call to non-contract"},"id":3551,"name":"Literal","src":"4381:33:5"}],"id":3552,"name":"FunctionCall","src":"4344:71:5"}],"id":3553,"name":"ExpressionStatement","src":"4344:71:5"},{"attributes":{"assignments":[3555,3557]},"children":[{"attributes":{"constant":false,"name":"success","scope":3586,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3554,"name":"ElementaryTypeName","src":"4486:4:5"}],"id":3555,"name":"VariableDeclaration","src":"4486:12:5"},{"attributes":{"constant":false,"name":"returndata","scope":3586,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":3556,"name":"ElementaryTypeName","src":"4500:5:5"}],"id":3557,"name":"VariableDeclaration","src":"4500:23:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_ERC20_$3369","typeString":"contract ERC20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3558,"name":"ElementaryTypeNameExpression","src":"4527:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3540,"type":"contract ERC20","value":"token"},"id":3559,"name":"Identifier","src":"4535:5:5"}],"id":3560,"name":"FunctionCall","src":"4527:14:5"}],"id":3561,"name":"MemberAccess","src":"4527:19:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3542,"type":"bytes memory","value":"data"},"id":3562,"name":"Identifier","src":"4547:4:5"}],"id":3563,"name":"FunctionCall","src":"4527:25:5"}],"id":3564,"name":"VariableDeclarationStatement","src":"4485:67:5"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_47fb62c2c272651d2f0f342bac006756b8ba07f21cc5cb87e0fbb9d50c0c585b","typeString":"literal_string \"SafeERC20: low-level call failed\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3565,"name":"Identifier","src":"4562:7:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3555,"type":"bool","value":"success"},"id":3566,"name":"Identifier","src":"4570:7:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: low-level call failed\"","value":"SafeERC20: low-level call failed"},"id":3567,"name":"Literal","src":"4579:34:5"}],"id":3568,"name":"FunctionCall","src":"4562:52:5"}],"id":3569,"name":"ExpressionStatement","src":"4562:52:5"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3557,"type":"bytes memory","value":"returndata"},"id":3570,"name":"Identifier","src":"4629:10:5"}],"id":3571,"name":"MemberAccess","src":"4629:17:5"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3572,"name":"Literal","src":"4649:1:5"}],"id":3573,"name":"BinaryOperation","src":"4629:21:5"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e11ad79d1e4a7f2e5f376964cb99e8e8f7904e3fc16a109f7a7ecb9aa7956dcd","typeString":"literal_string \"SafeERC20: ERC20 operation did not succeed\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3574,"name":"Identifier","src":"4750:7:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_type$_t_bool_$","typeString":"type(bool)"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"decode","referencedDeclaration":null,"type":"function () pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":3575,"name":"Identifier","src":"4758:3:5"}],"id":3576,"name":"MemberAccess","src":"4758:10:5"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3557,"type":"bytes memory","value":"returndata"},"id":3577,"name":"Identifier","src":"4769:10:5"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bool)","value":"bool"},"id":3578,"name":"ElementaryTypeNameExpression","src":"4782:4:5"}],"id":3579,"name":"TupleExpression","src":"4781:6:5"}],"id":3580,"name":"FunctionCall","src":"4758:30:5"},{"attributes":{"argumentTypes":null,"hexvalue":"5361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeERC20: ERC20 operation did not succeed\"","value":"SafeERC20: ERC20 operation did not succeed"},"id":3581,"name":"Literal","src":"4790:44:5"}],"id":3582,"name":"FunctionCall","src":"4750:85:5"}],"id":3583,"name":"ExpressionStatement","src":"4750:85:5"}],"id":3584,"name":"Block","src":"4652:194:5"}],"id":3585,"name":"IfStatement","src":"4625:221:5"}],"id":3586,"name":"Block","src":"3826:1026:5"}],"id":3587,"name":"FunctionDefinition","src":"3757:1095:5"}],"id":3588,"name":"ContractDefinition","src":"1715:3139:5"}],"id":3589,"name":"SourceUnit","src":"1161:3694:5"}},"externals/SafeMath.sol":{"AST":{"attributes":{"absolutePath":"externals/SafeMath.sol","exportedSymbols":{"SafeMath":[3721]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":3590,"name":"PragmaDirective","src":"0:23:6"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev Wrappers over Solidity's arithmetic operations with added overflow\nchecks.\n * Arithmetic operations in Solidity wrap on overflow. This can easily result\nin bugs, because programmers usually assume that an overflow raises an\nerror, which is the standard behavior in high level programming languages.\n`SafeMath` restores this intuition by reverting the transaction when an\noperation overflows.\n * Using this library instead of the unchecked operations eliminates an entire\nclass of bugs, so it's recommended to use it always.","fullyImplemented":true,"linearizedBaseContracts":[3721],"name":"SafeMath","scope":3722},"children":[{"attributes":{"documentation":"@dev Returns the addition of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `+` operator.\n * Requirements:\n- Addition cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"add","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3591,"name":"ElementaryTypeName","src":"847:7:6"}],"id":3592,"name":"VariableDeclaration","src":"847:9:6"},{"attributes":{"constant":false,"name":"b","scope":3615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3593,"name":"ElementaryTypeName","src":"858:7:6"}],"id":3594,"name":"VariableDeclaration","src":"858:9:6"}],"id":3595,"name":"ParameterList","src":"846:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3615,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3596,"name":"ElementaryTypeName","src":"892:7:6"}],"id":3597,"name":"VariableDeclaration","src":"892:7:6"}],"id":3598,"name":"ParameterList","src":"891:9:6"},{"children":[{"attributes":{"assignments":[3600]},"children":[{"attributes":{"constant":false,"name":"c","scope":3614,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3599,"name":"ElementaryTypeName","src":"911:7:6"}],"id":3600,"name":"VariableDeclaration","src":"911:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3592,"type":"uint256","value":"a"},"id":3601,"name":"Identifier","src":"923:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3594,"type":"uint256","value":"b"},"id":3602,"name":"Identifier","src":"927:1:6"}],"id":3603,"name":"BinaryOperation","src":"923:5:6"}],"id":3604,"name":"VariableDeclarationStatement","src":"911:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_30cc447bcc13b3e22b45cef0dd9b0b514842d836dd9b6eb384e20dedfb47723a","typeString":"literal_string \"SafeMath: addition overflow\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3605,"name":"Identifier","src":"938:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3600,"type":"uint256","value":"c"},"id":3606,"name":"Identifier","src":"946:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3592,"type":"uint256","value":"a"},"id":3607,"name":"Identifier","src":"951:1:6"}],"id":3608,"name":"BinaryOperation","src":"946:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206164646974696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: addition overflow\"","value":"SafeMath: addition overflow"},"id":3609,"name":"Literal","src":"954:29:6"}],"id":3610,"name":"FunctionCall","src":"938:46:6"}],"id":3611,"name":"ExpressionStatement","src":"938:46:6"},{"attributes":{"functionReturnParameters":3598},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3600,"type":"uint256","value":"c"},"id":3612,"name":"Identifier","src":"1002:1:6"}],"id":3613,"name":"Return","src":"995:8:6"}],"id":3614,"name":"Block","src":"901:109:6"}],"id":3615,"name":"FunctionDefinition","src":"834:176:6"},{"attributes":{"documentation":"@dev Returns the subtraction of two unsigned integers, reverting on\noverflow (when the result is negative).\n * Counterpart to Solidity's `-` operator.\n * Requirements:\n- Subtraction cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"sub","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3616,"name":"ElementaryTypeName","src":"1287:7:6"}],"id":3617,"name":"VariableDeclaration","src":"1287:9:6"},{"attributes":{"constant":false,"name":"b","scope":3640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3618,"name":"ElementaryTypeName","src":"1298:7:6"}],"id":3619,"name":"VariableDeclaration","src":"1298:9:6"}],"id":3620,"name":"ParameterList","src":"1286:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3621,"name":"ElementaryTypeName","src":"1332:7:6"}],"id":3622,"name":"VariableDeclaration","src":"1332:7:6"}],"id":3623,"name":"ParameterList","src":"1331:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_50b058e9b5320e58880d88223c9801cd9eecdcf90323d5c2318bc1b6b916e862","typeString":"literal_string \"SafeMath: subtraction overflow\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3624,"name":"Identifier","src":"1351:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3619,"type":"uint256","value":"b"},"id":3625,"name":"Identifier","src":"1359:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3617,"type":"uint256","value":"a"},"id":3626,"name":"Identifier","src":"1364:1:6"}],"id":3627,"name":"BinaryOperation","src":"1359:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a207375627472616374696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: subtraction overflow\"","value":"SafeMath: subtraction overflow"},"id":3628,"name":"Literal","src":"1367:32:6"}],"id":3629,"name":"FunctionCall","src":"1351:49:6"}],"id":3630,"name":"ExpressionStatement","src":"1351:49:6"},{"attributes":{"assignments":[3632]},"children":[{"attributes":{"constant":false,"name":"c","scope":3639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3631,"name":"ElementaryTypeName","src":"1410:7:6"}],"id":3632,"name":"VariableDeclaration","src":"1410:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3617,"type":"uint256","value":"a"},"id":3633,"name":"Identifier","src":"1422:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3619,"type":"uint256","value":"b"},"id":3634,"name":"Identifier","src":"1426:1:6"}],"id":3635,"name":"BinaryOperation","src":"1422:5:6"}],"id":3636,"name":"VariableDeclarationStatement","src":"1410:17:6"},{"attributes":{"functionReturnParameters":3623},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3632,"type":"uint256","value":"c"},"id":3637,"name":"Identifier","src":"1445:1:6"}],"id":3638,"name":"Return","src":"1438:8:6"}],"id":3639,"name":"Block","src":"1341:112:6"}],"id":3640,"name":"FunctionDefinition","src":"1274:179:6"},{"attributes":{"documentation":"@dev Returns the multiplication of two unsigned integers, reverting on\noverflow.\n * Counterpart to Solidity's `*` operator.\n * Requirements:\n- Multiplication cannot overflow.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mul","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3641,"name":"ElementaryTypeName","src":"1706:7:6"}],"id":3642,"name":"VariableDeclaration","src":"1706:9:6"},{"attributes":{"constant":false,"name":"b","scope":3674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3643,"name":"ElementaryTypeName","src":"1717:7:6"}],"id":3644,"name":"VariableDeclaration","src":"1717:9:6"}],"id":3645,"name":"ParameterList","src":"1705:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3674,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3646,"name":"ElementaryTypeName","src":"1751:7:6"}],"id":3647,"name":"VariableDeclaration","src":"1751:7:6"}],"id":3648,"name":"ParameterList","src":"1750:9:6"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3642,"type":"uint256","value":"a"},"id":3649,"name":"Identifier","src":"1991:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3650,"name":"Literal","src":"1996:1:6"}],"id":3651,"name":"BinaryOperation","src":"1991:6:6"},{"children":[{"attributes":{"functionReturnParameters":3648},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3652,"name":"Literal","src":"2020:1:6"}],"id":3653,"name":"Return","src":"2013:8:6"}],"id":3654,"name":"Block","src":"1999:33:6"}],"id":3655,"name":"IfStatement","src":"1987:45:6"},{"attributes":{"assignments":[3657]},"children":[{"attributes":{"constant":false,"name":"c","scope":3673,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3656,"name":"ElementaryTypeName","src":"2042:7:6"}],"id":3657,"name":"VariableDeclaration","src":"2042:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3642,"type":"uint256","value":"a"},"id":3658,"name":"Identifier","src":"2054:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3644,"type":"uint256","value":"b"},"id":3659,"name":"Identifier","src":"2058:1:6"}],"id":3660,"name":"BinaryOperation","src":"2054:5:6"}],"id":3661,"name":"VariableDeclarationStatement","src":"2042:17:6"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9113bb53c2876a3805b2c9242029423fc540a728243ce887ab24c82cf119fba3","typeString":"literal_string \"SafeMath: multiplication overflow\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3662,"name":"Identifier","src":"2069:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"c"},"id":3663,"name":"Identifier","src":"2077:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3642,"type":"uint256","value":"a"},"id":3664,"name":"Identifier","src":"2081:1:6"}],"id":3665,"name":"BinaryOperation","src":"2077:5:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3644,"type":"uint256","value":"b"},"id":3666,"name":"Identifier","src":"2086:1:6"}],"id":3667,"name":"BinaryOperation","src":"2077:10:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: multiplication overflow\"","value":"SafeMath: multiplication overflow"},"id":3668,"name":"Literal","src":"2089:35:6"}],"id":3669,"name":"FunctionCall","src":"2069:56:6"}],"id":3670,"name":"ExpressionStatement","src":"2069:56:6"},{"attributes":{"functionReturnParameters":3648},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3657,"type":"uint256","value":"c"},"id":3671,"name":"Identifier","src":"2143:1:6"}],"id":3672,"name":"Return","src":"2136:8:6"}],"id":3673,"name":"Block","src":"1760:391:6"}],"id":3674,"name":"FunctionDefinition","src":"1693:458:6"},{"attributes":{"documentation":"@dev Returns the integer division of two unsigned integers. Reverts on\ndivision by zero. The result is rounded towards zero.\n * Counterpart to Solidity's `/` operator. Note: this function uses a\n`revert` opcode (which leaves remaining gas untouched) while Solidity\nuses an invalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"div","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3699,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3675,"name":"ElementaryTypeName","src":"2619:7:6"}],"id":3676,"name":"VariableDeclaration","src":"2619:9:6"},{"attributes":{"constant":false,"name":"b","scope":3699,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3677,"name":"ElementaryTypeName","src":"2630:7:6"}],"id":3678,"name":"VariableDeclaration","src":"2630:9:6"}],"id":3679,"name":"ParameterList","src":"2618:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3699,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3680,"name":"ElementaryTypeName","src":"2664:7:6"}],"id":3681,"name":"VariableDeclaration","src":"2664:7:6"}],"id":3682,"name":"ParameterList","src":"2663:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5b7cc70dda4dc2143e5adb63bd5d1f349504f461dbdfd9bc76fac1f8ca6d019f","typeString":"literal_string \"SafeMath: division by zero\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3683,"name":"Identifier","src":"2749:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3678,"type":"uint256","value":"b"},"id":3684,"name":"Identifier","src":"2757:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3685,"name":"Literal","src":"2761:1:6"}],"id":3686,"name":"BinaryOperation","src":"2757:5:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206469766973696f6e206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: division by zero\"","value":"SafeMath: division by zero"},"id":3687,"name":"Literal","src":"2764:28:6"}],"id":3688,"name":"FunctionCall","src":"2749:44:6"}],"id":3689,"name":"ExpressionStatement","src":"2749:44:6"},{"attributes":{"assignments":[3691]},"children":[{"attributes":{"constant":false,"name":"c","scope":3698,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3690,"name":"ElementaryTypeName","src":"2803:7:6"}],"id":3691,"name":"VariableDeclaration","src":"2803:9:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3676,"type":"uint256","value":"a"},"id":3692,"name":"Identifier","src":"2815:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3678,"type":"uint256","value":"b"},"id":3693,"name":"Identifier","src":"2819:1:6"}],"id":3694,"name":"BinaryOperation","src":"2815:5:6"}],"id":3695,"name":"VariableDeclarationStatement","src":"2803:17:6"},{"attributes":{"functionReturnParameters":3682},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3691,"type":"uint256","value":"c"},"id":3696,"name":"Identifier","src":"2924:1:6"}],"id":3697,"name":"Return","src":"2917:8:6"}],"id":3698,"name":"Block","src":"2673:259:6"}],"id":3699,"name":"FunctionDefinition","src":"2606:326:6"},{"attributes":{"documentation":"@dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),\nReverts when dividing by zero.\n * Counterpart to Solidity's `%` operator. This function uses a `revert`\nopcode (which leaves remaining gas untouched) while Solidity uses an\ninvalid opcode to revert (consuming all remaining gas).\n * Requirements:\n- The divisor cannot be zero.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"mod","scope":3721,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":3720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3700,"name":"ElementaryTypeName","src":"3389:7:6"}],"id":3701,"name":"VariableDeclaration","src":"3389:9:6"},{"attributes":{"constant":false,"name":"b","scope":3720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3702,"name":"ElementaryTypeName","src":"3400:7:6"}],"id":3703,"name":"VariableDeclaration","src":"3400:9:6"}],"id":3704,"name":"ParameterList","src":"3388:22:6"},{"children":[{"attributes":{"constant":false,"name":"","scope":3720,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3705,"name":"ElementaryTypeName","src":"3434:7:6"}],"id":3706,"name":"VariableDeclaration","src":"3434:7:6"}],"id":3707,"name":"ParameterList","src":"3433:9:6"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_726e51f7b81fce0a68f5f214f445e275313b20b1633f08ce954ee39abf8d7832","typeString":"literal_string \"SafeMath: modulo by zero\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3708,"name":"Identifier","src":"3453:7:6"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3703,"type":"uint256","value":"b"},"id":3709,"name":"Identifier","src":"3461:1:6"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3710,"name":"Literal","src":"3466:1:6"}],"id":3711,"name":"BinaryOperation","src":"3461:6:6"},{"attributes":{"argumentTypes":null,"hexvalue":"536166654d6174683a206d6f64756c6f206279207a65726f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"SafeMath: modulo by zero\"","value":"SafeMath: modulo by zero"},"id":3712,"name":"Literal","src":"3469:26:6"}],"id":3713,"name":"FunctionCall","src":"3453:43:6"}],"id":3714,"name":"ExpressionStatement","src":"3453:43:6"},{"attributes":{"functionReturnParameters":3707},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3701,"type":"uint256","value":"a"},"id":3715,"name":"Identifier","src":"3513:1:6"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3703,"type":"uint256","value":"b"},"id":3716,"name":"Identifier","src":"3517:1:6"}],"id":3717,"name":"BinaryOperation","src":"3513:5:6"}],"id":3718,"name":"Return","src":"3506:12:6"}],"id":3719,"name":"Block","src":"3443:82:6"}],"id":3720,"name":"FunctionDefinition","src":"3376:149:6"}],"id":3721,"name":"ContractDefinition","src":"589:2938:6"}],"id":3722,"name":"SourceUnit","src":"0:3528:6"}},"externals/ens/ENS.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENS.sol","exportedSymbols":{"ENS":[4848]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4713,"name":"PragmaDirective","src":"1400:23:7"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[4848],"name":"ENS","scope":4849},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"NewOwner"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4721,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4714,"name":"ElementaryTypeName","src":"1534:7:7"}],"id":4715,"name":"VariableDeclaration","src":"1534:21:7"},{"attributes":{"constant":false,"indexed":true,"name":"_label","scope":4721,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4716,"name":"ElementaryTypeName","src":"1557:7:7"}],"id":4717,"name":"VariableDeclaration","src":"1557:22:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4721,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4718,"name":"ElementaryTypeName","src":"1581:7:7"}],"id":4719,"name":"VariableDeclaration","src":"1581:14:7"}],"id":4720,"name":"ParameterList","src":"1533:63:7"}],"id":4721,"name":"EventDefinition","src":"1519:78:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transfer"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4727,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4722,"name":"ElementaryTypeName","src":"1695:7:7"}],"id":4723,"name":"VariableDeclaration","src":"1695:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":4727,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4724,"name":"ElementaryTypeName","src":"1718:7:7"}],"id":4725,"name":"VariableDeclaration","src":"1718:14:7"}],"id":4726,"name":"ParameterList","src":"1694:39:7"}],"id":4727,"name":"EventDefinition","src":"1680:54:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewResolver"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4733,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4728,"name":"ElementaryTypeName","src":"1810:7:7"}],"id":4729,"name":"VariableDeclaration","src":"1810:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_resolver","scope":4733,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4730,"name":"ElementaryTypeName","src":"1833:7:7"}],"id":4731,"name":"VariableDeclaration","src":"1833:17:7"}],"id":4732,"name":"ParameterList","src":"1809:42:7"}],"id":4733,"name":"EventDefinition","src":"1792:60:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"NewTTL"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_node","scope":4739,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4734,"name":"ElementaryTypeName","src":"1916:7:7"}],"id":4735,"name":"VariableDeclaration","src":"1916:21:7"},{"attributes":{"constant":false,"indexed":false,"name":"_ttl","scope":4739,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4736,"name":"ElementaryTypeName","src":"1939:6:7"}],"id":4737,"name":"VariableDeclaration","src":"1939:11:7"}],"id":4738,"name":"ParameterList","src":"1915:36:7"}],"id":4739,"name":"EventDefinition","src":"1903:49:7"},{"attributes":{"anonymous":false,"documentation":null,"name":"ApprovalForAll"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"_owner","scope":4747,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4740,"name":"ElementaryTypeName","src":"2031:7:7"}],"id":4741,"name":"VariableDeclaration","src":"2031:22:7"},{"attributes":{"constant":false,"indexed":true,"name":"_operator","scope":4747,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4742,"name":"ElementaryTypeName","src":"2055:7:7"}],"id":4743,"name":"VariableDeclaration","src":"2055:25:7"},{"attributes":{"constant":false,"indexed":false,"name":"_approved","scope":4747,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4744,"name":"ElementaryTypeName","src":"2082:4:7"}],"id":4745,"name":"VariableDeclaration","src":"2082:14:7"}],"id":4746,"name":"ParameterList","src":"2030:67:7"}],"id":4747,"name":"EventDefinition","src":"2010:88:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setRecord","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4758,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4748,"name":"ElementaryTypeName","src":"2123:7:7"}],"id":4749,"name":"VariableDeclaration","src":"2123:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4758,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4750,"name":"ElementaryTypeName","src":"2138:7:7"}],"id":4751,"name":"VariableDeclaration","src":"2138:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4758,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4752,"name":"ElementaryTypeName","src":"2154:7:7"}],"id":4753,"name":"VariableDeclaration","src":"2154:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4758,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4754,"name":"ElementaryTypeName","src":"2173:6:7"}],"id":4755,"name":"VariableDeclaration","src":"2173:11:7"}],"id":4756,"name":"ParameterList","src":"2122:63:7"},{"attributes":{"parameters":[null]},"children":[],"id":4757,"name":"ParameterList","src":"2194:0:7"}],"id":4758,"name":"FunctionDefinition","src":"2104:91:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeRecord","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4771,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4759,"name":"ElementaryTypeName","src":"2226:7:7"}],"id":4760,"name":"VariableDeclaration","src":"2226:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4771,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4761,"name":"ElementaryTypeName","src":"2241:7:7"}],"id":4762,"name":"VariableDeclaration","src":"2241:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4771,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4763,"name":"ElementaryTypeName","src":"2257:7:7"}],"id":4764,"name":"VariableDeclaration","src":"2257:14:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4771,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4765,"name":"ElementaryTypeName","src":"2273:7:7"}],"id":4766,"name":"VariableDeclaration","src":"2273:17:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4771,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4767,"name":"ElementaryTypeName","src":"2292:6:7"}],"id":4768,"name":"VariableDeclaration","src":"2292:11:7"}],"id":4769,"name":"ParameterList","src":"2225:79:7"},{"attributes":{"parameters":[null]},"children":[],"id":4770,"name":"ParameterList","src":"2313:0:7"}],"id":4771,"name":"FunctionDefinition","src":"2200:114:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setSubnodeOwner","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4772,"name":"ElementaryTypeName","src":"2344:7:7"}],"id":4773,"name":"VariableDeclaration","src":"2344:13:7"},{"attributes":{"constant":false,"name":"_label","scope":4782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4774,"name":"ElementaryTypeName","src":"2359:7:7"}],"id":4775,"name":"VariableDeclaration","src":"2359:14:7"},{"attributes":{"constant":false,"name":"_owner","scope":4782,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4776,"name":"ElementaryTypeName","src":"2375:7:7"}],"id":4777,"name":"VariableDeclaration","src":"2375:14:7"}],"id":4778,"name":"ParameterList","src":"2343:47:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4782,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4779,"name":"ElementaryTypeName","src":"2408:7:7"}],"id":4780,"name":"VariableDeclaration","src":"2408:7:7"}],"id":4781,"name":"ParameterList","src":"2407:9:7"}],"id":4782,"name":"FunctionDefinition","src":"2319:98:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setResolver","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4789,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4783,"name":"ElementaryTypeName","src":"2443:7:7"}],"id":4784,"name":"VariableDeclaration","src":"2443:13:7"},{"attributes":{"constant":false,"name":"_resolver","scope":4789,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4785,"name":"ElementaryTypeName","src":"2458:7:7"}],"id":4786,"name":"VariableDeclaration","src":"2458:17:7"}],"id":4787,"name":"ParameterList","src":"2442:34:7"},{"attributes":{"parameters":[null]},"children":[],"id":4788,"name":"ParameterList","src":"2485:0:7"}],"id":4789,"name":"FunctionDefinition","src":"2422:64:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setOwner","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4796,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4790,"name":"ElementaryTypeName","src":"2509:7:7"}],"id":4791,"name":"VariableDeclaration","src":"2509:13:7"},{"attributes":{"constant":false,"name":"_owner","scope":4796,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4792,"name":"ElementaryTypeName","src":"2524:7:7"}],"id":4793,"name":"VariableDeclaration","src":"2524:14:7"}],"id":4794,"name":"ParameterList","src":"2508:31:7"},{"attributes":{"parameters":[null]},"children":[],"id":4795,"name":"ParameterList","src":"2548:0:7"}],"id":4796,"name":"FunctionDefinition","src":"2491:58:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setTTL","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4803,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4797,"name":"ElementaryTypeName","src":"2570:7:7"}],"id":4798,"name":"VariableDeclaration","src":"2570:13:7"},{"attributes":{"constant":false,"name":"_ttl","scope":4803,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4799,"name":"ElementaryTypeName","src":"2585:6:7"}],"id":4800,"name":"VariableDeclaration","src":"2585:11:7"}],"id":4801,"name":"ParameterList","src":"2569:28:7"},{"attributes":{"parameters":[null]},"children":[],"id":4802,"name":"ParameterList","src":"2606:0:7"}],"id":4803,"name":"FunctionDefinition","src":"2554:53:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setApprovalForAll","scope":4848,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_operator","scope":4810,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4804,"name":"ElementaryTypeName","src":"2639:7:7"}],"id":4805,"name":"VariableDeclaration","src":"2639:17:7"},{"attributes":{"constant":false,"name":"_approved","scope":4810,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4806,"name":"ElementaryTypeName","src":"2658:4:7"}],"id":4807,"name":"VariableDeclaration","src":"2658:14:7"}],"id":4808,"name":"ParameterList","src":"2638:35:7"},{"attributes":{"parameters":[null]},"children":[],"id":4809,"name":"ParameterList","src":"2682:0:7"}],"id":4810,"name":"FunctionDefinition","src":"2612:71:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4817,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4811,"name":"ElementaryTypeName","src":"2703:7:7"}],"id":4812,"name":"VariableDeclaration","src":"2703:13:7"}],"id":4813,"name":"ParameterList","src":"2702:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4817,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4814,"name":"ElementaryTypeName","src":"2741:7:7"}],"id":4815,"name":"VariableDeclaration","src":"2741:7:7"}],"id":4816,"name":"ParameterList","src":"2740:9:7"}],"id":4817,"name":"FunctionDefinition","src":"2688:62:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"resolver","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4824,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4818,"name":"ElementaryTypeName","src":"2773:7:7"}],"id":4819,"name":"VariableDeclaration","src":"2773:13:7"}],"id":4820,"name":"ParameterList","src":"2772:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4824,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4821,"name":"ElementaryTypeName","src":"2811:7:7"}],"id":4822,"name":"VariableDeclaration","src":"2811:7:7"}],"id":4823,"name":"ParameterList","src":"2810:9:7"}],"id":4824,"name":"FunctionDefinition","src":"2755:65:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ttl","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4831,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4825,"name":"ElementaryTypeName","src":"2838:7:7"}],"id":4826,"name":"VariableDeclaration","src":"2838:13:7"}],"id":4827,"name":"ParameterList","src":"2837:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4831,"stateVariable":false,"storageLocation":"default","type":"uint64","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint64","type":"uint64"},"id":4828,"name":"ElementaryTypeName","src":"2876:6:7"}],"id":4829,"name":"VariableDeclaration","src":"2876:6:7"}],"id":4830,"name":"ParameterList","src":"2875:8:7"}],"id":4831,"name":"FunctionDefinition","src":"2825:59:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"recordExists","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":4838,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4832,"name":"ElementaryTypeName","src":"2911:7:7"}],"id":4833,"name":"VariableDeclaration","src":"2911:13:7"}],"id":4834,"name":"ParameterList","src":"2910:15:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4838,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4835,"name":"ElementaryTypeName","src":"2949:4:7"}],"id":4836,"name":"VariableDeclaration","src":"2949:4:7"}],"id":4837,"name":"ParameterList","src":"2948:6:7"}],"id":4838,"name":"FunctionDefinition","src":"2889:66:7"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isApprovedForAll","scope":4848,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":4847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4839,"name":"ElementaryTypeName","src":"2986:7:7"}],"id":4840,"name":"VariableDeclaration","src":"2986:14:7"},{"attributes":{"constant":false,"name":"_operator","scope":4847,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4841,"name":"ElementaryTypeName","src":"3002:7:7"}],"id":4842,"name":"VariableDeclaration","src":"3002:17:7"}],"id":4843,"name":"ParameterList","src":"2985:35:7"},{"children":[{"attributes":{"constant":false,"name":"","scope":4847,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4844,"name":"ElementaryTypeName","src":"3044:4:7"}],"id":4845,"name":"VariableDeclaration","src":"3044:4:7"}],"id":4846,"name":"ParameterList","src":"3043:6:7"}],"id":4847,"name":"FunctionDefinition","src":"2960:90:7"}],"id":4848,"name":"ContractDefinition","src":"1425:1627:7"}],"id":4849,"name":"SourceUnit","src":"1400:1653:7"}},"externals/ens/ENSBytesUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ENSBytesUtils.sol","exportedSymbols":{"ENSBytesUtils":[10522]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9803,"name":"PragmaDirective","src":"0:24:8"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[10522],"name":"ENSBytesUtils","scope":10523},"children":[{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9825,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9804,"name":"ElementaryTypeName","src":"325:5:8"}],"id":9805,"name":"VariableDeclaration","src":"325:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9825,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9806,"name":"ElementaryTypeName","src":"344:4:8"}],"id":9807,"name":"VariableDeclaration","src":"344:11:8"},{"attributes":{"constant":false,"name":"len","scope":9825,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9808,"name":"ElementaryTypeName","src":"357:4:8"}],"id":9809,"name":"VariableDeclaration","src":"357:8:8"}],"id":9810,"name":"ParameterList","src":"324:42:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9825,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9811,"name":"ElementaryTypeName","src":"390:7:8"}],"id":9812,"name":"VariableDeclaration","src":"390:11:8"}],"id":9813,"name":"ParameterList","src":"389:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":9814,"name":"Identifier","src":"413:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9807,"type":"uint256","value":"offset"},"id":9815,"name":"Identifier","src":"421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9809,"type":"uint256","value":"len"},"id":9816,"name":"Identifier","src":"430:3:8"}],"id":9817,"name":"BinaryOperation","src":"421:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9805,"type":"bytes memory","value":"self"},"id":9818,"name":"Identifier","src":"437:4:8"}],"id":9819,"name":"MemberAccess","src":"437:11:8"}],"id":9820,"name":"BinaryOperation","src":"421:27:8"}],"id":9821,"name":"FunctionCall","src":"413:36:8"}],"id":9822,"name":"ExpressionStatement","src":"413:36:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":9812,"isOffset":false,"isSlot":false,"src":"482:3:8","valueSize":1}},{"self":{"declaration":9805,"isOffset":false,"isSlot":false,"src":"507:4:8","valueSize":1}},{"offset":{"declaration":9807,"isOffset":false,"isSlot":false,"src":"518:6:8","valueSize":1}},{"len":{"declaration":9809,"isOffset":false,"isSlot":false,"src":"527:3:8","valueSize":1}}],"operations":"{\n ret := keccak256(add(add(self, 32), offset), len)\n}"},"children":[],"id":9823,"name":"InlineAssembly","src":"459:82:8"}],"id":9824,"name":"Block","src":"403:144:8"}],"id":9825,"name":"FunctionDefinition","src":"309:238:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9846,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9826,"name":"ElementaryTypeName","src":"920:5:8"}],"id":9827,"name":"VariableDeclaration","src":"920:17:8"},{"attributes":{"constant":false,"name":"other","scope":9846,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9828,"name":"ElementaryTypeName","src":"939:5:8"}],"id":9829,"name":"VariableDeclaration","src":"939:18:8"}],"id":9830,"name":"ParameterList","src":"919:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9846,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9831,"name":"ElementaryTypeName","src":"982:3:8"}],"id":9832,"name":"VariableDeclaration","src":"982:3:8"}],"id":9833,"name":"ParameterList","src":"981:5:8"},{"children":[{"attributes":{"functionReturnParameters":9833},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[9846,9978],"referencedDeclaration":9978,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)","value":"compare"},"id":9834,"name":"Identifier","src":"1004:7:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9827,"type":"bytes memory","value":"self"},"id":9835,"name":"Identifier","src":"1012:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9836,"name":"Literal","src":"1018:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9827,"type":"bytes memory","value":"self"},"id":9837,"name":"Identifier","src":"1021:4:8"}],"id":9838,"name":"MemberAccess","src":"1021:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9829,"type":"bytes memory","value":"other"},"id":9839,"name":"Identifier","src":"1034:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9840,"name":"Literal","src":"1041:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9829,"type":"bytes memory","value":"other"},"id":9841,"name":"Identifier","src":"1044:5:8"}],"id":9842,"name":"MemberAccess","src":"1044:12:8"}],"id":9843,"name":"FunctionCall","src":"1004:53:8"}],"id":9844,"name":"Return","src":"997:60:8"}],"id":9845,"name":"Block","src":"987:77:8"}],"id":9846,"name":"FunctionDefinition","src":"903:161:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9978,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9847,"name":"ElementaryTypeName","src":"1694:5:8"}],"id":9848,"name":"VariableDeclaration","src":"1694:17:8"},{"attributes":{"constant":false,"name":"offset","scope":9978,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9849,"name":"ElementaryTypeName","src":"1713:4:8"}],"id":9850,"name":"VariableDeclaration","src":"1713:11:8"},{"attributes":{"constant":false,"name":"len","scope":9978,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9851,"name":"ElementaryTypeName","src":"1726:4:8"}],"id":9852,"name":"VariableDeclaration","src":"1726:8:8"},{"attributes":{"constant":false,"name":"other","scope":9978,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9853,"name":"ElementaryTypeName","src":"1736:5:8"}],"id":9854,"name":"VariableDeclaration","src":"1736:18:8"},{"attributes":{"constant":false,"name":"otheroffset","scope":9978,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9855,"name":"ElementaryTypeName","src":"1756:4:8"}],"id":9856,"name":"VariableDeclaration","src":"1756:16:8"},{"attributes":{"constant":false,"name":"otherlen","scope":9978,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9857,"name":"ElementaryTypeName","src":"1774:4:8"}],"id":9858,"name":"VariableDeclaration","src":"1774:13:8"}],"id":9859,"name":"ParameterList","src":"1693:95:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":9978,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9860,"name":"ElementaryTypeName","src":"1812:3:8"}],"id":9861,"name":"VariableDeclaration","src":"1812:3:8"}],"id":9862,"name":"ParameterList","src":"1811:5:8"},{"children":[{"attributes":{"assignments":[9864]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":9977,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9863,"name":"ElementaryTypeName","src":"1827:4:8"}],"id":9864,"name":"VariableDeclaration","src":"1827:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9852,"type":"uint256","value":"len"},"id":9865,"name":"Identifier","src":"1843:3:8"}],"id":9866,"name":"VariableDeclarationStatement","src":"1827:19:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9858,"type":"uint256","value":"otherlen"},"id":9867,"name":"Identifier","src":"1860:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9852,"type":"uint256","value":"len"},"id":9868,"name":"Identifier","src":"1871:3:8"}],"id":9869,"name":"BinaryOperation","src":"1860:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"uint256","value":"shortest"},"id":9870,"name":"Identifier","src":"1884:8:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9858,"type":"uint256","value":"otherlen"},"id":9871,"name":"Identifier","src":"1895:8:8"}],"id":9872,"name":"Assignment","src":"1884:19:8"}],"id":9873,"name":"ExpressionStatement","src":"1884:19:8"}],"id":9874,"name":"IfStatement","src":"1856:47:8"},{"attributes":{"assignments":[9876],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":9977,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9875,"name":"ElementaryTypeName","src":"1914:4:8"}],"id":9876,"name":"VariableDeclaration","src":"1914:12:8"}],"id":9877,"name":"VariableDeclarationStatement","src":"1914:12:8"},{"attributes":{"assignments":[9879],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":9977,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9878,"name":"ElementaryTypeName","src":"1936:4:8"}],"id":9879,"name":"VariableDeclaration","src":"1936:13:8"}],"id":9880,"name":"VariableDeclarationStatement","src":"1936:13:8"},{"attributes":{"externalReferences":[{"selfptr":{"declaration":9876,"isOffset":false,"isSlot":false,"src":"1983:7:8","valueSize":1}},{"otherptr":{"declaration":9879,"isOffset":false,"isSlot":false,"src":"2033:8:8","valueSize":1}},{"offset":{"declaration":9850,"isOffset":false,"isSlot":false,"src":"2008:6:8","valueSize":1}},{"self":{"declaration":9848,"isOffset":false,"isSlot":false,"src":"1998:4:8","valueSize":1}},{"otheroffset":{"declaration":9856,"isOffset":false,"isSlot":false,"src":"2060:11:8","valueSize":1}},{"other":{"declaration":9854,"isOffset":false,"isSlot":false,"src":"2049:5:8","valueSize":1}}],"operations":"{\n selfptr := add(self, add(offset, 32))\n otherptr := add(other, add(otheroffset, 32))\n}"},"children":[],"id":9881,"name":"InlineAssembly","src":"1960:127:8"},{"children":[{"attributes":{"assignments":[9883]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9968,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9882,"name":"ElementaryTypeName","src":"2101:4:8"}],"id":9883,"name":"VariableDeclaration","src":"2101:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9884,"name":"Literal","src":"2112:1:8"}],"id":9885,"name":"VariableDeclarationStatement","src":"2101:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9883,"type":"uint256","value":"idx"},"id":9886,"name":"Identifier","src":"2115:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"uint256","value":"shortest"},"id":9887,"name":"Identifier","src":"2121:8:8"}],"id":9888,"name":"BinaryOperation","src":"2115:14:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9883,"type":"uint256","value":"idx"},"id":9889,"name":"Identifier","src":"2131:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9890,"name":"Literal","src":"2138:2:8"}],"id":9891,"name":"Assignment","src":"2131:9:8"}],"id":9892,"name":"ExpressionStatement","src":"2131:9:8"},{"children":[{"attributes":{"assignments":[9894],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":9967,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9893,"name":"ElementaryTypeName","src":"2156:4:8"}],"id":9894,"name":"VariableDeclaration","src":"2156:6:8"}],"id":9895,"name":"VariableDeclarationStatement","src":"2156:6:8"},{"attributes":{"assignments":[9897],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":9967,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9896,"name":"ElementaryTypeName","src":"2176:4:8"}],"id":9897,"name":"VariableDeclaration","src":"2176:6:8"}],"id":9898,"name":"VariableDeclarationStatement","src":"2176:6:8"},{"attributes":{"externalReferences":[{"a":{"declaration":9894,"isOffset":false,"isSlot":false,"src":"2223:1:8","valueSize":1}},{"selfptr":{"declaration":9876,"isOffset":false,"isSlot":false,"src":"2234:7:8","valueSize":1}},{"b":{"declaration":9897,"isOffset":false,"isSlot":false,"src":"2259:1:8","valueSize":1}},{"otherptr":{"declaration":9879,"isOffset":false,"isSlot":false,"src":"2270:8:8","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":9899,"name":"InlineAssembly","src":"2196:97:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9894,"type":"uint256","value":"a"},"id":9900,"name":"Identifier","src":"2310:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9897,"type":"uint256","value":"b"},"id":9901,"name":"Identifier","src":"2315:1:8"}],"id":9902,"name":"BinaryOperation","src":"2310:6:8"},{"children":[{"attributes":{"assignments":[9904],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"mask","scope":9957,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9903,"name":"ElementaryTypeName","src":"2397:4:8"}],"id":9904,"name":"VariableDeclaration","src":"2397:9:8"}],"id":9905,"name":"VariableDeclarationStatement","src":"2397:9:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"uint256","value":"shortest"},"id":9906,"name":"Identifier","src":"2428:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9907,"name":"Literal","src":"2439:2:8"}],"id":9908,"name":"BinaryOperation","src":"2428:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9904,"type":"uint256","value":"mask"},"id":9909,"name":"Identifier","src":"2465:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":9910,"name":"ElementaryTypeNameExpression","src":"2472:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9911,"name":"Literal","src":"2482:1:8"}],"id":9912,"name":"UnaryOperation","src":"2480:3:8"}],"id":9913,"name":"FunctionCall","src":"2472:12:8"}],"id":9914,"name":"Assignment","src":"2465:19:8"}],"id":9915,"name":"ExpressionStatement","src":"2465:19:8"}],"id":9916,"name":"Block","src":"2443:80:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9904,"type":"uint256","value":"mask"},"id":9917,"name":"Identifier","src":"2551:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9918,"name":"Literal","src":"2560:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9919,"name":"Literal","src":"2566:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9920,"name":"Literal","src":"2571:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9864,"type":"uint256","value":"shortest"},"id":9921,"name":"Identifier","src":"2576:8:8"}],"id":9922,"name":"BinaryOperation","src":"2571:13:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9883,"type":"uint256","value":"idx"},"id":9923,"name":"Identifier","src":"2587:3:8"}],"id":9924,"name":"BinaryOperation","src":"2571:19:8"}],"id":9925,"name":"TupleExpression","src":"2570:21:8"}],"id":9926,"name":"BinaryOperation","src":"2566:25:8"}],"id":9927,"name":"TupleExpression","src":"2565:27:8"}],"id":9928,"name":"BinaryOperation","src":"2560:32:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9929,"name":"Literal","src":"2595:1:8"}],"id":9930,"name":"BinaryOperation","src":"2560:36:8"}],"id":9931,"name":"TupleExpression","src":"2559:38:8"}],"id":9932,"name":"UnaryOperation","src":"2558:39:8"}],"id":9933,"name":"Assignment","src":"2551:46:8"}],"id":9934,"name":"ExpressionStatement","src":"2551:46:8"}],"id":9935,"name":"Block","src":"2529:87:8"}],"id":9936,"name":"IfStatement","src":"2424:192:8"},{"attributes":{"assignments":[9938]},"children":[{"attributes":{"constant":false,"name":"diff","scope":9957,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9937,"name":"ElementaryTypeName","src":"2633:4:8"}],"id":9938,"name":"VariableDeclaration","src":"2633:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9894,"type":"uint256","value":"a"},"id":9939,"name":"Identifier","src":"2646:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9904,"type":"uint256","value":"mask"},"id":9940,"name":"Identifier","src":"2650:4:8"}],"id":9941,"name":"BinaryOperation","src":"2646:8:8"}],"id":9942,"name":"TupleExpression","src":"2645:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9897,"type":"uint256","value":"b"},"id":9943,"name":"Identifier","src":"2659:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9904,"type":"uint256","value":"mask"},"id":9944,"name":"Identifier","src":"2663:4:8"}],"id":9945,"name":"BinaryOperation","src":"2659:8:8"}],"id":9946,"name":"TupleExpression","src":"2658:10:8"}],"id":9947,"name":"BinaryOperation","src":"2645:23:8"}],"id":9948,"name":"VariableDeclarationStatement","src":"2633:35:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9938,"type":"uint256","value":"diff"},"id":9949,"name":"Identifier","src":"2690:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9950,"name":"Literal","src":"2698:1:8"}],"id":9951,"name":"BinaryOperation","src":"2690:9:8"},{"attributes":{"functionReturnParameters":9862},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9952,"name":"ElementaryTypeNameExpression","src":"2724:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9938,"type":"uint256","value":"diff"},"id":9953,"name":"Identifier","src":"2728:4:8"}],"id":9954,"name":"FunctionCall","src":"2724:9:8"}],"id":9955,"name":"Return","src":"2717:16:8"}],"id":9956,"name":"IfStatement","src":"2686:47:8"}],"id":9957,"name":"Block","src":"2318:430:8"}],"id":9958,"name":"IfStatement","src":"2306:442:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9876,"type":"uint256","value":"selfptr"},"id":9959,"name":"Identifier","src":"2761:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9960,"name":"Literal","src":"2772:2:8"}],"id":9961,"name":"Assignment","src":"2761:13:8"}],"id":9962,"name":"ExpressionStatement","src":"2761:13:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9879,"type":"uint256","value":"otherptr"},"id":9963,"name":"Identifier","src":"2788:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9964,"name":"Literal","src":"2800:2:8"}],"id":9965,"name":"Assignment","src":"2788:14:8"}],"id":9966,"name":"ExpressionStatement","src":"2788:14:8"}],"id":9967,"name":"Block","src":"2142:671:8"}],"id":9968,"name":"ForStatement","src":"2096:717:8"},{"attributes":{"functionReturnParameters":9862},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9969,"name":"ElementaryTypeNameExpression","src":"2830:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9852,"type":"uint256","value":"len"},"id":9970,"name":"Identifier","src":"2834:3:8"}],"id":9971,"name":"FunctionCall","src":"2830:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":9972,"name":"ElementaryTypeNameExpression","src":"2841:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9858,"type":"uint256","value":"otherlen"},"id":9973,"name":"Identifier","src":"2845:8:8"}],"id":9974,"name":"FunctionCall","src":"2841:13:8"}],"id":9975,"name":"BinaryOperation","src":"2830:24:8"}],"id":9976,"name":"Return","src":"2823:31:8"}],"id":9977,"name":"Block","src":"1817:1044:8"}],"id":9978,"name":"FunctionDefinition","src":"1677:1184:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10006,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9979,"name":"ElementaryTypeName","src":"3295:5:8"}],"id":9980,"name":"VariableDeclaration","src":"3295:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9981,"name":"ElementaryTypeName","src":"3314:4:8"}],"id":9982,"name":"VariableDeclaration","src":"3314:11:8"},{"attributes":{"constant":false,"name":"other","scope":10006,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9983,"name":"ElementaryTypeName","src":"3327:5:8"}],"id":9984,"name":"VariableDeclaration","src":"3327:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":10006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9985,"name":"ElementaryTypeName","src":"3347:4:8"}],"id":9986,"name":"VariableDeclaration","src":"3347:16:8"},{"attributes":{"constant":false,"name":"len","scope":10006,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9987,"name":"ElementaryTypeName","src":"3365:4:8"}],"id":9988,"name":"VariableDeclaration","src":"3365:8:8"}],"id":9989,"name":"ParameterList","src":"3294:80:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10006,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9990,"name":"ElementaryTypeName","src":"3398:4:8"}],"id":9991,"name":"VariableDeclaration","src":"3398:4:8"}],"id":9992,"name":"ParameterList","src":"3397:6:8"},{"children":[{"attributes":{"functionReturnParameters":9992},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9825,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9993,"name":"Identifier","src":"3421:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9980,"type":"bytes memory","value":"self"},"id":9994,"name":"Identifier","src":"3428:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9982,"type":"uint256","value":"offset"},"id":9995,"name":"Identifier","src":"3434:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9988,"type":"uint256","value":"len"},"id":9996,"name":"Identifier","src":"3442:3:8"}],"id":9997,"name":"FunctionCall","src":"3421:25:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9825,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":9998,"name":"Identifier","src":"3450:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9984,"type":"bytes memory","value":"other"},"id":9999,"name":"Identifier","src":"3457:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9986,"type":"uint256","value":"otherOffset"},"id":10000,"name":"Identifier","src":"3464:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9988,"type":"uint256","value":"len"},"id":10001,"name":"Identifier","src":"3477:3:8"}],"id":10002,"name":"FunctionCall","src":"3450:31:8"}],"id":10003,"name":"BinaryOperation","src":"3421:60:8"}],"id":10004,"name":"Return","src":"3414:67:8"}],"id":10005,"name":"Block","src":"3404:84:8"}],"id":10006,"name":"FunctionDefinition","src":"3279:209:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10038,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10007,"name":"ElementaryTypeName","src":"3887:5:8"}],"id":10008,"name":"VariableDeclaration","src":"3887:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10038,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10009,"name":"ElementaryTypeName","src":"3906:4:8"}],"id":10010,"name":"VariableDeclaration","src":"3906:11:8"},{"attributes":{"constant":false,"name":"other","scope":10038,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10011,"name":"ElementaryTypeName","src":"3919:5:8"}],"id":10012,"name":"VariableDeclaration","src":"3919:18:8"},{"attributes":{"constant":false,"name":"otherOffset","scope":10038,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10013,"name":"ElementaryTypeName","src":"3939:4:8"}],"id":10014,"name":"VariableDeclaration","src":"3939:16:8"}],"id":10015,"name":"ParameterList","src":"3886:70:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10038,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10016,"name":"ElementaryTypeName","src":"3980:4:8"}],"id":10017,"name":"VariableDeclaration","src":"3980:4:8"}],"id":10018,"name":"ParameterList","src":"3979:6:8"},{"children":[{"attributes":{"functionReturnParameters":10018},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9825,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":10019,"name":"Identifier","src":"4003:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10008,"type":"bytes memory","value":"self"},"id":10020,"name":"Identifier","src":"4010:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"offset"},"id":10021,"name":"Identifier","src":"4016:6:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10008,"type":"bytes memory","value":"self"},"id":10022,"name":"Identifier","src":"4024:4:8"}],"id":10023,"name":"MemberAccess","src":"4024:11:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10010,"type":"uint256","value":"offset"},"id":10024,"name":"Identifier","src":"4038:6:8"}],"id":10025,"name":"BinaryOperation","src":"4024:20:8"}],"id":10026,"name":"FunctionCall","src":"4003:42:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9825,"type":"function (bytes memory,uint256,uint256) pure returns (bytes32)","value":"keccak"},"id":10027,"name":"Identifier","src":"4049:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10012,"type":"bytes memory","value":"other"},"id":10028,"name":"Identifier","src":"4056:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10014,"type":"uint256","value":"otherOffset"},"id":10029,"name":"Identifier","src":"4063:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10012,"type":"bytes memory","value":"other"},"id":10030,"name":"Identifier","src":"4076:5:8"}],"id":10031,"name":"MemberAccess","src":"4076:12:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10014,"type":"uint256","value":"otherOffset"},"id":10032,"name":"Identifier","src":"4091:11:8"}],"id":10033,"name":"BinaryOperation","src":"4076:26:8"}],"id":10034,"name":"FunctionCall","src":"4049:54:8"}],"id":10035,"name":"BinaryOperation","src":"4003:100:8"}],"id":10036,"name":"Return","src":"3996:107:8"}],"id":10037,"name":"Block","src":"3986:124:8"}],"id":10038,"name":"FunctionDefinition","src":"3871:239:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10067,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10039,"name":"ElementaryTypeName","src":"4478:5:8"}],"id":10040,"name":"VariableDeclaration","src":"4478:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10067,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10041,"name":"ElementaryTypeName","src":"4497:4:8"}],"id":10042,"name":"VariableDeclaration","src":"4497:11:8"},{"attributes":{"constant":false,"name":"other","scope":10067,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10043,"name":"ElementaryTypeName","src":"4510:5:8"}],"id":10044,"name":"VariableDeclaration","src":"4510:18:8"}],"id":10045,"name":"ParameterList","src":"4477:52:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10067,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10046,"name":"ElementaryTypeName","src":"4553:4:8"}],"id":10047,"name":"VariableDeclaration","src":"4553:4:8"}],"id":10048,"name":"ParameterList","src":"4552:6:8"},{"children":[{"attributes":{"functionReturnParameters":10048},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"bytes memory","value":"self"},"id":10049,"name":"Identifier","src":"4576:4:8"}],"id":10050,"name":"MemberAccess","src":"4576:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10042,"type":"uint256","value":"offset"},"id":10051,"name":"Identifier","src":"4591:6:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10044,"type":"bytes memory","value":"other"},"id":10052,"name":"Identifier","src":"4600:5:8"}],"id":10053,"name":"MemberAccess","src":"4600:12:8"}],"id":10054,"name":"BinaryOperation","src":"4591:21:8"}],"id":10055,"name":"BinaryOperation","src":"4576:36:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[10006,10038,10067,10092],"referencedDeclaration":10006,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":10056,"name":"Identifier","src":"4616:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10040,"type":"bytes memory","value":"self"},"id":10057,"name":"Identifier","src":"4623:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10042,"type":"uint256","value":"offset"},"id":10058,"name":"Identifier","src":"4629:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10044,"type":"bytes memory","value":"other"},"id":10059,"name":"Identifier","src":"4637:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10060,"name":"Literal","src":"4644:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10044,"type":"bytes memory","value":"other"},"id":10061,"name":"Identifier","src":"4647:5:8"}],"id":10062,"name":"MemberAccess","src":"4647:12:8"}],"id":10063,"name":"FunctionCall","src":"4616:44:8"}],"id":10064,"name":"BinaryOperation","src":"4576:84:8"}],"id":10065,"name":"Return","src":"4569:91:8"}],"id":10066,"name":"Block","src":"4559:108:8"}],"id":10067,"name":"FunctionDefinition","src":"4462:205:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10092,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10068,"name":"ElementaryTypeName","src":"4931:5:8"}],"id":10069,"name":"VariableDeclaration","src":"4931:17:8"},{"attributes":{"constant":false,"name":"other","scope":10092,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10070,"name":"ElementaryTypeName","src":"4950:5:8"}],"id":10071,"name":"VariableDeclaration","src":"4950:18:8"}],"id":10072,"name":"ParameterList","src":"4930:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10092,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":10073,"name":"ElementaryTypeName","src":"4992:4:8"}],"id":10074,"name":"VariableDeclaration","src":"4992:4:8"}],"id":10075,"name":"ParameterList","src":"4991:6:8"},{"children":[{"attributes":{"functionReturnParameters":10075},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10069,"type":"bytes memory","value":"self"},"id":10076,"name":"Identifier","src":"5015:4:8"}],"id":10077,"name":"MemberAccess","src":"5015:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10071,"type":"bytes memory","value":"other"},"id":10078,"name":"Identifier","src":"5030:5:8"}],"id":10079,"name":"MemberAccess","src":"5030:12:8"}],"id":10080,"name":"BinaryOperation","src":"5015:27:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[10006,10038,10067,10092],"referencedDeclaration":10006,"type":"function (bytes memory,uint256,bytes memory,uint256,uint256) pure returns (bool)","value":"equals"},"id":10081,"name":"Identifier","src":"5046:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10069,"type":"bytes memory","value":"self"},"id":10082,"name":"Identifier","src":"5053:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10083,"name":"Literal","src":"5059:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10071,"type":"bytes memory","value":"other"},"id":10084,"name":"Identifier","src":"5062:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10085,"name":"Literal","src":"5069:1:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10069,"type":"bytes memory","value":"self"},"id":10086,"name":"Identifier","src":"5072:4:8"}],"id":10087,"name":"MemberAccess","src":"5072:11:8"}],"id":10088,"name":"FunctionCall","src":"5046:38:8"}],"id":10089,"name":"BinaryOperation","src":"5015:69:8"}],"id":10090,"name":"Return","src":"5008:76:8"}],"id":10091,"name":"Block","src":"4998:93:8"}],"id":10092,"name":"FunctionDefinition","src":"4915:176:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint8","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10108,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10093,"name":"ElementaryTypeName","src":"5352:5:8"}],"id":10094,"name":"VariableDeclaration","src":"5352:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10108,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10095,"name":"ElementaryTypeName","src":"5371:4:8"}],"id":10096,"name":"VariableDeclaration","src":"5371:8:8"}],"id":10097,"name":"ParameterList","src":"5351:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10108,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":10098,"name":"ElementaryTypeName","src":"5404:5:8"}],"id":10099,"name":"VariableDeclaration","src":"5404:9:8"}],"id":10100,"name":"ParameterList","src":"5403:11:8"},{"children":[{"attributes":{"functionReturnParameters":10100},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10101,"name":"ElementaryTypeNameExpression","src":"5432:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10094,"type":"bytes memory","value":"self"},"id":10102,"name":"Identifier","src":"5438:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10096,"type":"uint256","value":"idx"},"id":10103,"name":"Identifier","src":"5443:3:8"}],"id":10104,"name":"IndexAccess","src":"5438:9:8"}],"id":10105,"name":"FunctionCall","src":"5432:16:8"}],"id":10106,"name":"Return","src":"5425:23:8"}],"id":10107,"name":"Block","src":"5415:40:8"}],"id":10108,"name":"FunctionDefinition","src":"5333:122:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint16","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10128,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10109,"name":"ElementaryTypeName","src":"5719:5:8"}],"id":10110,"name":"VariableDeclaration","src":"5719:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10111,"name":"ElementaryTypeName","src":"5738:4:8"}],"id":10112,"name":"VariableDeclaration","src":"5738:8:8"}],"id":10113,"name":"ParameterList","src":"5718:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10128,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":10114,"name":"ElementaryTypeName","src":"5771:6:8"}],"id":10115,"name":"VariableDeclaration","src":"5771:10:8"}],"id":10116,"name":"ParameterList","src":"5770:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10117,"name":"Identifier","src":"5793:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10112,"type":"uint256","value":"idx"},"id":10118,"name":"Identifier","src":"5801:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10119,"name":"Literal","src":"5807:1:8"}],"id":10120,"name":"BinaryOperation","src":"5801:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10110,"type":"bytes memory","value":"self"},"id":10121,"name":"Identifier","src":"5812:4:8"}],"id":10122,"name":"MemberAccess","src":"5812:11:8"}],"id":10123,"name":"BinaryOperation","src":"5801:22:8"}],"id":10124,"name":"FunctionCall","src":"5793:31:8"}],"id":10125,"name":"ExpressionStatement","src":"5793:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":10115,"isOffset":false,"isSlot":false,"src":"5857:3:8","valueSize":1}},{"self":{"declaration":10110,"isOffset":false,"isSlot":false,"src":"5882:4:8","valueSize":1}},{"idx":{"declaration":10112,"isOffset":false,"isSlot":false,"src":"5892:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 2), idx)), 0xFFFF)\n}"},"children":[],"id":10126,"name":"InlineAssembly","src":"5834:82:8"}],"id":10127,"name":"Block","src":"5783:139:8"}],"id":10128,"name":"FunctionDefinition","src":"5699:223:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readUint32","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10148,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10129,"name":"ElementaryTypeName","src":"6186:5:8"}],"id":10130,"name":"VariableDeclaration","src":"6186:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10148,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10131,"name":"ElementaryTypeName","src":"6205:4:8"}],"id":10132,"name":"VariableDeclaration","src":"6205:8:8"}],"id":10133,"name":"ParameterList","src":"6185:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10148,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":10134,"name":"ElementaryTypeName","src":"6238:6:8"}],"id":10135,"name":"VariableDeclaration","src":"6238:10:8"}],"id":10136,"name":"ParameterList","src":"6237:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10137,"name":"Identifier","src":"6260:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10132,"type":"uint256","value":"idx"},"id":10138,"name":"Identifier","src":"6268:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10139,"name":"Literal","src":"6274:1:8"}],"id":10140,"name":"BinaryOperation","src":"6268:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10130,"type":"bytes memory","value":"self"},"id":10141,"name":"Identifier","src":"6279:4:8"}],"id":10142,"name":"MemberAccess","src":"6279:11:8"}],"id":10143,"name":"BinaryOperation","src":"6268:22:8"}],"id":10144,"name":"FunctionCall","src":"6260:31:8"}],"id":10145,"name":"ExpressionStatement","src":"6260:31:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":10135,"isOffset":false,"isSlot":false,"src":"6324:3:8","valueSize":1}},{"self":{"declaration":10130,"isOffset":false,"isSlot":false,"src":"6349:4:8","valueSize":1}},{"idx":{"declaration":10132,"isOffset":false,"isSlot":false,"src":"6359:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 4), idx)), 0xFFFFFFFF)\n}"},"children":[],"id":10146,"name":"InlineAssembly","src":"6301:86:8"}],"id":10147,"name":"Block","src":"6250:143:8"}],"id":10148,"name":"FunctionDefinition","src":"6166:227:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes32","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10168,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10149,"name":"ElementaryTypeName","src":"6632:5:8"}],"id":10150,"name":"VariableDeclaration","src":"6632:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10168,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10151,"name":"ElementaryTypeName","src":"6651:4:8"}],"id":10152,"name":"VariableDeclaration","src":"6651:8:8"}],"id":10153,"name":"ParameterList","src":"6631:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10168,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10154,"name":"ElementaryTypeName","src":"6684:7:8"}],"id":10155,"name":"VariableDeclaration","src":"6684:11:8"}],"id":10156,"name":"ParameterList","src":"6683:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10157,"name":"Identifier","src":"6707:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10152,"type":"uint256","value":"idx"},"id":10158,"name":"Identifier","src":"6715:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10159,"name":"Literal","src":"6721:2:8"}],"id":10160,"name":"BinaryOperation","src":"6715:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10150,"type":"bytes memory","value":"self"},"id":10161,"name":"Identifier","src":"6727:4:8"}],"id":10162,"name":"MemberAccess","src":"6727:11:8"}],"id":10163,"name":"BinaryOperation","src":"6715:23:8"}],"id":10164,"name":"FunctionCall","src":"6707:32:8"}],"id":10165,"name":"ExpressionStatement","src":"6707:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":10155,"isOffset":false,"isSlot":false,"src":"6772:3:8","valueSize":1}},{"self":{"declaration":10150,"isOffset":false,"isSlot":false,"src":"6793:4:8","valueSize":1}},{"idx":{"declaration":10152,"isOffset":false,"isSlot":false,"src":"6804:3:8","valueSize":1}}],"operations":"{\n ret := mload(add(add(self, 32), idx))\n}"},"children":[],"id":10166,"name":"InlineAssembly","src":"6749:70:8"}],"id":10167,"name":"Block","src":"6697:128:8"}],"id":10168,"name":"FunctionDefinition","src":"6611:214:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytes20","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10188,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10169,"name":"ElementaryTypeName","src":"7064:5:8"}],"id":10170,"name":"VariableDeclaration","src":"7064:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10188,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10171,"name":"ElementaryTypeName","src":"7083:4:8"}],"id":10172,"name":"VariableDeclaration","src":"7083:8:8"}],"id":10173,"name":"ParameterList","src":"7063:29:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10188,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":10174,"name":"ElementaryTypeName","src":"7116:7:8"}],"id":10175,"name":"VariableDeclaration","src":"7116:11:8"}],"id":10176,"name":"ParameterList","src":"7115:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10177,"name":"Identifier","src":"7139:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10172,"type":"uint256","value":"idx"},"id":10178,"name":"Identifier","src":"7147:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":10179,"name":"Literal","src":"7153:2:8"}],"id":10180,"name":"BinaryOperation","src":"7147:8:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10170,"type":"bytes memory","value":"self"},"id":10181,"name":"Identifier","src":"7159:4:8"}],"id":10182,"name":"MemberAccess","src":"7159:11:8"}],"id":10183,"name":"BinaryOperation","src":"7147:23:8"}],"id":10184,"name":"FunctionCall","src":"7139:32:8"}],"id":10185,"name":"ExpressionStatement","src":"7139:32:8"},{"attributes":{"externalReferences":[{"ret":{"declaration":10175,"isOffset":false,"isSlot":false,"src":"7204:3:8","valueSize":1}},{"self":{"declaration":10170,"isOffset":false,"isSlot":false,"src":"7229:4:8","valueSize":1}},{"idx":{"declaration":10172,"isOffset":false,"isSlot":false,"src":"7240:3:8","valueSize":1}}],"operations":"{\n ret := and(mload(add(add(self, 32), idx)), 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000)\n}"},"children":[],"id":10186,"name":"InlineAssembly","src":"7181:143:8"}],"id":10187,"name":"Block","src":"7129:201:8"}],"id":10188,"name":"FunctionDefinition","src":"7043:287:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readBytesN","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10216,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10189,"name":"ElementaryTypeName","src":"7606:5:8"}],"id":10190,"name":"VariableDeclaration","src":"7606:17:8"},{"attributes":{"constant":false,"name":"idx","scope":10216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10191,"name":"ElementaryTypeName","src":"7625:4:8"}],"id":10192,"name":"VariableDeclaration","src":"7625:8:8"},{"attributes":{"constant":false,"name":"len","scope":10216,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10193,"name":"ElementaryTypeName","src":"7635:4:8"}],"id":10194,"name":"VariableDeclaration","src":"7635:8:8"}],"id":10195,"name":"ParameterList","src":"7605:39:8"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":10216,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10196,"name":"ElementaryTypeName","src":"7668:7:8"}],"id":10197,"name":"VariableDeclaration","src":"7668:11:8"}],"id":10198,"name":"ParameterList","src":"7667:13:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10199,"name":"Identifier","src":"7691:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10194,"type":"uint256","value":"len"},"id":10200,"name":"Identifier","src":"7699:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10201,"name":"Literal","src":"7706:2:8"}],"id":10202,"name":"BinaryOperation","src":"7699:9:8"}],"id":10203,"name":"FunctionCall","src":"7691:18:8"}],"id":10204,"name":"ExpressionStatement","src":"7691:18:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10205,"name":"Identifier","src":"7719:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10192,"type":"uint256","value":"idx"},"id":10206,"name":"Identifier","src":"7727:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10194,"type":"uint256","value":"len"},"id":10207,"name":"Identifier","src":"7733:3:8"}],"id":10208,"name":"BinaryOperation","src":"7727:9:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10190,"type":"bytes memory","value":"self"},"id":10209,"name":"Identifier","src":"7740:4:8"}],"id":10210,"name":"MemberAccess","src":"7740:11:8"}],"id":10211,"name":"BinaryOperation","src":"7727:24:8"}],"id":10212,"name":"FunctionCall","src":"7719:33:8"}],"id":10213,"name":"ExpressionStatement","src":"7719:33:8"},{"attributes":{"externalReferences":[{"len":{"declaration":10194,"isOffset":false,"isSlot":false,"src":"7822:3:8","valueSize":1}},{"ret":{"declaration":10197,"isOffset":false,"isSlot":false,"src":"7845:3:8","valueSize":1}},{"self":{"declaration":10190,"isOffset":false,"isSlot":false,"src":"7870:4:8","valueSize":1}},{"idx":{"declaration":10192,"isOffset":false,"isSlot":false,"src":"7881:3:8","valueSize":1}}],"operations":"{\n let mask := not(sub(exp(256, sub(32, len)), 1))\n ret := and(mload(add(add(self, 32), idx)), mask)\n}"},"children":[],"id":10214,"name":"InlineAssembly","src":"7762:142:8"}],"id":10215,"name":"Block","src":"7681:229:8"}],"id":10216,"name":"FunctionDefinition","src":"7586:324:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":10256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10217,"name":"ElementaryTypeName","src":"7932:4:8"}],"id":10218,"name":"VariableDeclaration","src":"7932:9:8"},{"attributes":{"constant":false,"name":"src","scope":10256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10219,"name":"ElementaryTypeName","src":"7943:4:8"}],"id":10220,"name":"VariableDeclaration","src":"7943:8:8"},{"attributes":{"constant":false,"name":"len","scope":10256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10221,"name":"ElementaryTypeName","src":"7953:4:8"}],"id":10222,"name":"VariableDeclaration","src":"7953:8:8"}],"id":10223,"name":"ParameterList","src":"7931:31:8"},{"attributes":{"parameters":[null]},"children":[],"id":10224,"name":"ParameterList","src":"7976:0:8"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10222,"type":"uint256","value":"len"},"id":10225,"name":"Identifier","src":"8043:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10226,"name":"Literal","src":"8050:2:8"}],"id":10227,"name":"BinaryOperation","src":"8043:9:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10222,"type":"uint256","value":"len"},"id":10228,"name":"Identifier","src":"8054:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10229,"name":"Literal","src":"8061:2:8"}],"id":10230,"name":"Assignment","src":"8054:9:8"}],"id":10231,"name":"ExpressionStatement","src":"8054:9:8"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":10220,"isOffset":false,"isSlot":false,"src":"8125:3:8","valueSize":1}},{"dest":{"declaration":10218,"isOffset":false,"isSlot":false,"src":"8113:4:8","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":10232,"name":"InlineAssembly","src":"8079:65:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10218,"type":"uint256","value":"dest"},"id":10233,"name":"Identifier","src":"8157:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10234,"name":"Literal","src":"8165:2:8"}],"id":10235,"name":"Assignment","src":"8157:10:8"}],"id":10236,"name":"ExpressionStatement","src":"8157:10:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10220,"type":"uint256","value":"src"},"id":10237,"name":"Identifier","src":"8181:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10238,"name":"Literal","src":"8188:2:8"}],"id":10239,"name":"Assignment","src":"8181:9:8"}],"id":10240,"name":"ExpressionStatement","src":"8181:9:8"}],"id":10241,"name":"Block","src":"8065:136:8"}],"id":10242,"name":"ForStatement","src":"8036:165:8"},{"attributes":{"assignments":[10244]},"children":[{"attributes":{"constant":false,"name":"mask","scope":10255,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10243,"name":"ElementaryTypeName","src":"8243:4:8"}],"id":10244,"name":"VariableDeclaration","src":"8243:9:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10245,"name":"Literal","src":"8255:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":10246,"name":"Literal","src":"8263:2:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10222,"type":"uint256","value":"len"},"id":10247,"name":"Identifier","src":"8268:3:8"}],"id":10248,"name":"BinaryOperation","src":"8263:8:8"}],"id":10249,"name":"TupleExpression","src":"8262:10:8"}],"id":10250,"name":"BinaryOperation","src":"8255:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10251,"name":"Literal","src":"8275:1:8"}],"id":10252,"name":"BinaryOperation","src":"8255:21:8"}],"id":10253,"name":"VariableDeclarationStatement","src":"8243:33:8"},{"attributes":{"externalReferences":[{"src":{"declaration":10220,"isOffset":false,"isSlot":false,"src":"8334:3:8","valueSize":1}},{"mask":{"declaration":10244,"isOffset":false,"isSlot":false,"src":"8344:4:8","valueSize":1}},{"dest":{"declaration":10218,"isOffset":false,"isSlot":false,"src":"8421:4:8","valueSize":1}},{"dest":{"declaration":10218,"isOffset":false,"isSlot":false,"src":"8389:4:8","valueSize":1}},{"mask":{"declaration":10244,"isOffset":false,"isSlot":false,"src":"8396:4:8","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":10254,"name":"InlineAssembly","src":"8286:173:8"}],"id":10255,"name":"Block","src":"7976:489:8"}],"id":10256,"name":"FunctionDefinition","src":"7916:549:8"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"substring","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10299,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10257,"name":"ElementaryTypeName","src":"8704:5:8"}],"id":10258,"name":"VariableDeclaration","src":"8704:17:8"},{"attributes":{"constant":false,"name":"offset","scope":10299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10259,"name":"ElementaryTypeName","src":"8723:4:8"}],"id":10260,"name":"VariableDeclaration","src":"8723:11:8"},{"attributes":{"constant":false,"name":"len","scope":10299,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10261,"name":"ElementaryTypeName","src":"8736:4:8"}],"id":10262,"name":"VariableDeclaration","src":"8736:8:8"}],"id":10263,"name":"ParameterList","src":"8703:42:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10299,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10264,"name":"ElementaryTypeName","src":"8768:5:8"}],"id":10265,"name":"VariableDeclaration","src":"8768:12:8"}],"id":10266,"name":"ParameterList","src":"8767:14:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10267,"name":"Identifier","src":"8792:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10260,"type":"uint256","value":"offset"},"id":10268,"name":"Identifier","src":"8800:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10262,"type":"uint256","value":"len"},"id":10269,"name":"Identifier","src":"8809:3:8"}],"id":10270,"name":"BinaryOperation","src":"8800:12:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10258,"type":"bytes memory","value":"self"},"id":10271,"name":"Identifier","src":"8816:4:8"}],"id":10272,"name":"MemberAccess","src":"8816:11:8"}],"id":10273,"name":"BinaryOperation","src":"8800:27:8"}],"id":10274,"name":"FunctionCall","src":"8792:36:8"}],"id":10275,"name":"ExpressionStatement","src":"8792:36:8"},{"attributes":{"assignments":[10277]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10298,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10276,"name":"ElementaryTypeName","src":"8839:5:8"}],"id":10277,"name":"VariableDeclaration","src":"8839:16:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10278,"name":"ElementaryTypeName","src":"8862:5:8"}],"id":10279,"name":"NewExpression","src":"8858:9:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10262,"type":"uint256","value":"len"},"id":10280,"name":"Identifier","src":"8868:3:8"}],"id":10281,"name":"FunctionCall","src":"8858:14:8"}],"id":10282,"name":"VariableDeclarationStatement","src":"8839:33:8"},{"attributes":{"assignments":[10284],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dest","scope":10298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10283,"name":"ElementaryTypeName","src":"8882:4:8"}],"id":10284,"name":"VariableDeclaration","src":"8882:9:8"}],"id":10285,"name":"VariableDeclarationStatement","src":"8882:9:8"},{"attributes":{"assignments":[10287],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"src","scope":10298,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10286,"name":"ElementaryTypeName","src":"8901:4:8"}],"id":10287,"name":"VariableDeclaration","src":"8901:8:8"}],"id":10288,"name":"VariableDeclarationStatement","src":"8901:8:8"},{"attributes":{"externalReferences":[{"dest":{"declaration":10284,"isOffset":false,"isSlot":false,"src":"8943:4:8","valueSize":1}},{"ret":{"declaration":10277,"isOffset":false,"isSlot":false,"src":"8955:3:8","valueSize":1}},{"src":{"declaration":10287,"isOffset":false,"isSlot":false,"src":"8976:3:8","valueSize":1}},{"self":{"declaration":10258,"isOffset":false,"isSlot":false,"src":"8991:4:8","valueSize":1}},{"offset":{"declaration":10260,"isOffset":false,"isSlot":false,"src":"9002:6:8","valueSize":1}}],"operations":"{\n dest := add(ret, 32)\n src := add(add(self, 32), offset)\n}"},"children":[],"id":10289,"name":"InlineAssembly","src":"8920:99:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":10256,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":10290,"name":"Identifier","src":"9028:6:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10284,"type":"uint256","value":"dest"},"id":10291,"name":"Identifier","src":"9035:4:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10287,"type":"uint256","value":"src"},"id":10292,"name":"Identifier","src":"9041:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10262,"type":"uint256","value":"len"},"id":10293,"name":"Identifier","src":"9046:3:8"}],"id":10294,"name":"FunctionCall","src":"9028:22:8"}],"id":10295,"name":"ExpressionStatement","src":"9028:22:8"},{"attributes":{"functionReturnParameters":10266},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10277,"type":"bytes memory","value":"ret"},"id":10296,"name":"Identifier","src":"9068:3:8"}],"id":10297,"name":"Return","src":"9061:10:8"}],"id":10298,"name":"Block","src":"8782:296:8"}],"id":10299,"name":"FunctionDefinition","src":"8685:393:8"},{"attributes":{"constant":true,"name":"base32HexTable","scope":10522,"stateVariable":true,"storageLocation":"default","type":"bytes","visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10300,"name":"ElementaryTypeName","src":"9206:5:8"},{"attributes":{"argumentTypes":null,"hexvalue":"00010203040506070809ffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1fffffffffffffffffffff0a0b0c0d0e0f101112131415161718191a1b1c1d1e1f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string (contains invalid UTF-8 sequence at position 10)","value":null},"id":10301,"name":"Literal","src":"9238:147:8"}],"id":10302,"name":"VariableDeclaration","src":"9206:179:8"},{"attributes":{"documentation":"@dev Decodes unpadded base32 data of up to one word in length.\n@param self The data to decode.\n@param off Offset into the string to start at.\n@param len Number of characters to decode.\n@return The decoded data, left aligned.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"base32HexDecodeWord","scope":10522,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":10521,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":10303,"name":"ElementaryTypeName","src":"9697:5:8"}],"id":10304,"name":"VariableDeclaration","src":"9697:17:8"},{"attributes":{"constant":false,"name":"off","scope":10521,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10305,"name":"ElementaryTypeName","src":"9716:4:8"}],"id":10306,"name":"VariableDeclaration","src":"9716:8:8"},{"attributes":{"constant":false,"name":"len","scope":10521,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10307,"name":"ElementaryTypeName","src":"9726:4:8"}],"id":10308,"name":"VariableDeclaration","src":"9726:8:8"}],"id":10309,"name":"ParameterList","src":"9696:39:8"},{"children":[{"attributes":{"constant":false,"name":"","scope":10521,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":10310,"name":"ElementaryTypeName","src":"9758:7:8"}],"id":10311,"name":"VariableDeclaration","src":"9758:7:8"}],"id":10312,"name":"ParameterList","src":"9757:9:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10313,"name":"Identifier","src":"9777:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10314,"name":"Identifier","src":"9785:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"3532","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 52","value":"52"},"id":10315,"name":"Literal","src":"9792:2:8"}],"id":10316,"name":"BinaryOperation","src":"9785:9:8"}],"id":10317,"name":"FunctionCall","src":"9777:18:8"}],"id":10318,"name":"ExpressionStatement","src":"9777:18:8"},{"attributes":{"assignments":[10320]},"children":[{"attributes":{"constant":false,"name":"ret","scope":10520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10319,"name":"ElementaryTypeName","src":"9806:4:8"}],"id":10320,"name":"VariableDeclaration","src":"9806:8:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10321,"name":"Literal","src":"9817:1:8"}],"id":10322,"name":"VariableDeclarationStatement","src":"9806:12:8"},{"attributes":{"assignments":[10324],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"decoded","scope":10520,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":10323,"name":"ElementaryTypeName","src":"9828:5:8"}],"id":10324,"name":"VariableDeclaration","src":"9828:13:8"}],"id":10325,"name":"VariableDeclarationStatement","src":"9828:13:8"},{"children":[{"attributes":{"assignments":[10327]},"children":[{"attributes":{"constant":false,"name":"i","scope":10392,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10326,"name":"ElementaryTypeName","src":"9855:4:8"}],"id":10327,"name":"VariableDeclaration","src":"9855:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10328,"name":"Literal","src":"9864:1:8"}],"id":10329,"name":"VariableDeclarationStatement","src":"9855:10:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10327,"type":"uint256","value":"i"},"id":10330,"name":"Identifier","src":"9867:1:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10331,"name":"Identifier","src":"9871:3:8"}],"id":10332,"name":"BinaryOperation","src":"9867:7:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10327,"type":"uint256","value":"i"},"id":10333,"name":"Identifier","src":"9876:1:8"}],"id":10334,"name":"UnaryOperation","src":"9876:3:8"}],"id":10335,"name":"ExpressionStatement","src":"9876:3:8"},{"children":[{"attributes":{"assignments":[10337]},"children":[{"attributes":{"constant":false,"name":"char","scope":10391,"stateVariable":false,"storageLocation":"default","type":"bytes1","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes1","type":"bytes1"},"id":10336,"name":"ElementaryTypeName","src":"9895:6:8"}],"id":10337,"name":"VariableDeclaration","src":"9895:11:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10304,"type":"bytes memory","value":"self"},"id":10338,"name":"Identifier","src":"9909:4:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10306,"type":"uint256","value":"off"},"id":10339,"name":"Identifier","src":"9914:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10327,"type":"uint256","value":"i"},"id":10340,"name":"Identifier","src":"9920:1:8"}],"id":10341,"name":"BinaryOperation","src":"9914:7:8"}],"id":10342,"name":"IndexAccess","src":"9909:13:8"}],"id":10343,"name":"VariableDeclarationStatement","src":"9895:27:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10344,"name":"Identifier","src":"9936:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10337,"type":"bytes1","value":"char"},"id":10345,"name":"Identifier","src":"9944:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":10346,"name":"Literal","src":"9952:4:8"}],"id":10347,"name":"BinaryOperation","src":"9944:12:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10337,"type":"bytes1","value":"char"},"id":10348,"name":"Identifier","src":"9960:4:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783741","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 122","value":"0x7A"},"id":10349,"name":"Literal","src":"9968:4:8"}],"id":10350,"name":"BinaryOperation","src":"9960:12:8"}],"id":10351,"name":"BinaryOperation","src":"9944:28:8"}],"id":10352,"name":"FunctionCall","src":"9936:37:8"}],"id":10353,"name":"ExpressionStatement","src":"9936:37:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10354,"name":"Identifier","src":"9987:7:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10355,"name":"ElementaryTypeNameExpression","src":"9997:5:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10302,"type":"bytes memory","value":"base32HexTable"},"id":10356,"name":"Identifier","src":"10003:14:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":10357,"name":"ElementaryTypeNameExpression","src":"10018:4:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes1","typeString":"bytes1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":10358,"name":"ElementaryTypeNameExpression","src":"10023:5:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10337,"type":"bytes1","value":"char"},"id":10359,"name":"Identifier","src":"10029:4:8"}],"id":10360,"name":"FunctionCall","src":"10023:11:8"}],"id":10361,"name":"FunctionCall","src":"10018:17:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 48","value":"0x30"},"id":10362,"name":"Literal","src":"10038:4:8"}],"id":10363,"name":"BinaryOperation","src":"10018:24:8"}],"id":10364,"name":"IndexAccess","src":"10003:40:8"}],"id":10365,"name":"FunctionCall","src":"9997:47:8"}],"id":10366,"name":"Assignment","src":"9987:57:8"}],"id":10367,"name":"ExpressionStatement","src":"9987:57:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":10368,"name":"Identifier","src":"10058:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10369,"name":"Identifier","src":"10066:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"0x20"},"id":10370,"name":"Literal","src":"10077:4:8"}],"id":10371,"name":"BinaryOperation","src":"10066:15:8"}],"id":10372,"name":"FunctionCall","src":"10058:24:8"}],"id":10373,"name":"ExpressionStatement","src":"10058:24:8"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10327,"type":"uint256","value":"i"},"id":10374,"name":"Identifier","src":"10099:1:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10375,"name":"Identifier","src":"10104:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10376,"name":"Literal","src":"10110:1:8"}],"id":10377,"name":"BinaryOperation","src":"10104:7:8"}],"id":10378,"name":"BinaryOperation","src":"10099:12:8"},{"children":[{"id":10379,"name":"Break","src":"10131:5:8"}],"id":10380,"name":"Block","src":"10113:38:8"}],"id":10381,"name":"IfStatement","src":"10096:55:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10382,"name":"Identifier","src":"10164:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10383,"name":"Identifier","src":"10171:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10384,"name":"Literal","src":"10178:1:8"}],"id":10385,"name":"BinaryOperation","src":"10171:8:8"}],"id":10386,"name":"TupleExpression","src":"10170:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10387,"name":"Identifier","src":"10183:7:8"}],"id":10388,"name":"BinaryOperation","src":"10170:20:8"}],"id":10389,"name":"Assignment","src":"10164:26:8"}],"id":10390,"name":"ExpressionStatement","src":"10164:26:8"}],"id":10391,"name":"Block","src":"9881:320:8"}],"id":10392,"name":"ForStatement","src":"9851:350:8"},{"attributes":{"assignments":[10394]},"children":[{"attributes":{"constant":false,"name":"bitlen","scope":10520,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":10393,"name":"ElementaryTypeName","src":"10211:4:8"}],"id":10394,"name":"VariableDeclaration","src":"10211:11:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10395,"name":"Identifier","src":"10225:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10396,"name":"Literal","src":"10231:1:8"}],"id":10397,"name":"BinaryOperation","src":"10225:7:8"}],"id":10398,"name":"VariableDeclarationStatement","src":"10211:21:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10399,"name":"Identifier","src":"10245:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10400,"name":"Literal","src":"10251:1:8"}],"id":10401,"name":"BinaryOperation","src":"10245:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":10402,"name":"Literal","src":"10256:1:8"}],"id":10403,"name":"BinaryOperation","src":"10245:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10404,"name":"Identifier","src":"10325:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10405,"name":"Identifier","src":"10332:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10406,"name":"Literal","src":"10339:1:8"}],"id":10407,"name":"BinaryOperation","src":"10332:8:8"}],"id":10408,"name":"TupleExpression","src":"10331:10:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10409,"name":"Identifier","src":"10344:7:8"}],"id":10410,"name":"BinaryOperation","src":"10331:20:8"}],"id":10411,"name":"Assignment","src":"10325:26:8"}],"id":10412,"name":"ExpressionStatement","src":"10325:26:8"}],"id":10413,"name":"Block","src":"10259:103:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10414,"name":"Identifier","src":"10371:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10415,"name":"Literal","src":"10377:1:8"}],"id":10416,"name":"BinaryOperation","src":"10371:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10417,"name":"Literal","src":"10382:1:8"}],"id":10418,"name":"BinaryOperation","src":"10371:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10419,"name":"Identifier","src":"10444:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10420,"name":"Identifier","src":"10451:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10421,"name":"Literal","src":"10458:1:8"}],"id":10422,"name":"BinaryOperation","src":"10451:8:8"}],"id":10423,"name":"TupleExpression","src":"10450:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10424,"name":"Identifier","src":"10464:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10425,"name":"Literal","src":"10475:1:8"}],"id":10426,"name":"BinaryOperation","src":"10464:12:8"}],"id":10427,"name":"TupleExpression","src":"10463:14:8"}],"id":10428,"name":"BinaryOperation","src":"10450:27:8"}],"id":10429,"name":"Assignment","src":"10444:33:8"}],"id":10430,"name":"ExpressionStatement","src":"10444:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10431,"name":"Identifier","src":"10491:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10432,"name":"Literal","src":"10501:1:8"}],"id":10433,"name":"Assignment","src":"10491:11:8"}],"id":10434,"name":"ExpressionStatement","src":"10491:11:8"}],"id":10435,"name":"Block","src":"10385:128:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10436,"name":"Identifier","src":"10522:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10437,"name":"Literal","src":"10528:1:8"}],"id":10438,"name":"BinaryOperation","src":"10522:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10439,"name":"Literal","src":"10533:1:8"}],"id":10440,"name":"BinaryOperation","src":"10522:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10441,"name":"Identifier","src":"10597:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10442,"name":"Identifier","src":"10604:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10443,"name":"Literal","src":"10611:1:8"}],"id":10444,"name":"BinaryOperation","src":"10604:8:8"}],"id":10445,"name":"TupleExpression","src":"10603:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10446,"name":"Identifier","src":"10617:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10447,"name":"Literal","src":"10628:1:8"}],"id":10448,"name":"BinaryOperation","src":"10617:12:8"}],"id":10449,"name":"TupleExpression","src":"10616:14:8"}],"id":10450,"name":"BinaryOperation","src":"10603:27:8"}],"id":10451,"name":"Assignment","src":"10597:33:8"}],"id":10452,"name":"ExpressionStatement","src":"10597:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10453,"name":"Identifier","src":"10644:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10454,"name":"Literal","src":"10654:1:8"}],"id":10455,"name":"Assignment","src":"10644:11:8"}],"id":10456,"name":"ExpressionStatement","src":"10644:11:8"}],"id":10457,"name":"Block","src":"10536:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10458,"name":"Identifier","src":"10675:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10459,"name":"Literal","src":"10681:1:8"}],"id":10460,"name":"BinaryOperation","src":"10675:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":10461,"name":"Literal","src":"10686:1:8"}],"id":10462,"name":"BinaryOperation","src":"10675:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10463,"name":"Identifier","src":"10750:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10464,"name":"Identifier","src":"10757:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":10465,"name":"Literal","src":"10764:1:8"}],"id":10466,"name":"BinaryOperation","src":"10757:8:8"}],"id":10467,"name":"TupleExpression","src":"10756:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10468,"name":"Identifier","src":"10770:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10469,"name":"Literal","src":"10781:1:8"}],"id":10470,"name":"BinaryOperation","src":"10770:12:8"}],"id":10471,"name":"TupleExpression","src":"10769:14:8"}],"id":10472,"name":"BinaryOperation","src":"10756:27:8"}],"id":10473,"name":"Assignment","src":"10750:33:8"}],"id":10474,"name":"ExpressionStatement","src":"10750:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10475,"name":"Identifier","src":"10797:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":10476,"name":"Literal","src":"10807:1:8"}],"id":10477,"name":"Assignment","src":"10797:11:8"}],"id":10478,"name":"ExpressionStatement","src":"10797:11:8"}],"id":10479,"name":"Block","src":"10689:130:8"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"%","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10308,"type":"uint256","value":"len"},"id":10480,"name":"Identifier","src":"10828:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":10481,"name":"Literal","src":"10834:1:8"}],"id":10482,"name":"BinaryOperation","src":"10828:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":10483,"name":"Literal","src":"10839:1:8"}],"id":10484,"name":"BinaryOperation","src":"10828:12:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10485,"name":"Identifier","src":"10904:3:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10486,"name":"Identifier","src":"10911:3:8"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":10487,"name":"Literal","src":"10918:1:8"}],"id":10488,"name":"BinaryOperation","src":"10911:8:8"}],"id":10489,"name":"TupleExpression","src":"10910:10:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10324,"type":"uint8","value":"decoded"},"id":10490,"name":"Identifier","src":"10924:7:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10491,"name":"Literal","src":"10935:1:8"}],"id":10492,"name":"BinaryOperation","src":"10924:12:8"}],"id":10493,"name":"TupleExpression","src":"10923:14:8"}],"id":10494,"name":"BinaryOperation","src":"10910:27:8"}],"id":10495,"name":"Assignment","src":"10904:33:8"}],"id":10496,"name":"ExpressionStatement","src":"10904:33:8"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10497,"name":"Identifier","src":"10951:6:8"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":10498,"name":"Literal","src":"10961:1:8"}],"id":10499,"name":"Assignment","src":"10951:11:8"}],"id":10500,"name":"ExpressionStatement","src":"10951:11:8"}],"id":10501,"name":"Block","src":"10842:131:8"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[10542,10543],"referencedDeclaration":10542,"type":"function () pure","value":"revert"},"id":10502,"name":"Identifier","src":"10993:6:8"}],"id":10503,"name":"FunctionCall","src":"10993:8:8"}],"id":10504,"name":"ExpressionStatement","src":"10993:8:8"}],"id":10505,"name":"Block","src":"10979:33:8"}],"id":10506,"name":"IfStatement","src":"10825:187:8"}],"id":10507,"name":"IfStatement","src":"10672:340:8"}],"id":10508,"name":"IfStatement","src":"10519:493:8"}],"id":10509,"name":"IfStatement","src":"10368:644:8"}],"id":10510,"name":"IfStatement","src":"10242:770:8"},{"attributes":{"functionReturnParameters":10312},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":10511,"name":"ElementaryTypeNameExpression","src":"11029:7:8"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10320,"type":"uint256","value":"ret"},"id":10512,"name":"Identifier","src":"11037:3:8"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":10513,"name":"Literal","src":"11045:3:8"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10394,"type":"uint256","value":"bitlen"},"id":10514,"name":"Identifier","src":"11051:6:8"}],"id":10515,"name":"BinaryOperation","src":"11045:12:8"}],"id":10516,"name":"TupleExpression","src":"11044:14:8"}],"id":10517,"name":"BinaryOperation","src":"11037:21:8"}],"id":10518,"name":"FunctionCall","src":"11029:30:8"}],"id":10519,"name":"Return","src":"11022:37:8"}],"id":10520,"name":"Block","src":"9767:1299:8"}],"id":10521,"name":"FunctionDefinition","src":"9668:1398:8"}],"id":10522,"name":"ContractDefinition","src":"26:11042:8"}],"id":10523,"name":"SourceUnit","src":"0:11069:8"}},"externals/ens/PublicResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/PublicResolver.sol","exportedSymbols":{"PublicResolver":[5022]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":4850,"name":"PragmaDirective","src":"1401:23:9"},{"attributes":{"literals":["experimental","ABIEncoderV2"]},"id":4851,"name":"PragmaDirective","src":"1425:33:9"},{"attributes":{"SourceUnit":4849,"absolutePath":"externals/ens/ENS.sol","file":"./ENS.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4852,"name":"ImportDirective","src":"1460:19:9"},{"attributes":{"SourceUnit":6147,"absolutePath":"externals/ens/profiles/ABIResolver.sol","file":"./profiles/ABIResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4853,"name":"ImportDirective","src":"1480:36:9"},{"attributes":{"SourceUnit":6306,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./profiles/AddrResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4854,"name":"ImportDirective","src":"1517:37:9"},{"attributes":{"SourceUnit":6376,"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","file":"./profiles/ContentHashResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4855,"name":"ImportDirective","src":"1555:44:9"},{"attributes":{"SourceUnit":6867,"absolutePath":"externals/ens/profiles/DNSResolver.sol","file":"./profiles/DNSResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4856,"name":"ImportDirective","src":"1600:36:9"},{"attributes":{"SourceUnit":7054,"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","file":"./profiles/InterfaceResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4857,"name":"ImportDirective","src":"1637:42:9"},{"attributes":{"SourceUnit":7124,"absolutePath":"externals/ens/profiles/NameResolver.sol","file":"./profiles/NameResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4858,"name":"ImportDirective","src":"1680:37:9"},{"attributes":{"SourceUnit":7215,"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","file":"./profiles/PubkeyResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4859,"name":"ImportDirective","src":"1718:39:9"},{"attributes":{"SourceUnit":7298,"absolutePath":"externals/ens/profiles/TextResolver.sol","file":"./profiles/TextResolver.sol","scope":5023,"symbolAliases":[null],"unitAlias":""},"id":4860,"name":"ImportDirective","src":"1758:37:9"},{"attributes":{"contractDependencies":[6146,6305,6375,6866,7053,7123,7214,7297,9183],"contractKind":"contract","documentation":"A simple resolver anyone can use; only allows the owner of a node to set its\naddress.","fullyImplemented":true,"linearizedBaseContracts":[5022,7297,7214,7123,7053,6866,6375,6305,6146,9183],"name":"PublicResolver","scope":5023},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ABIResolver","referencedDeclaration":6146,"type":"contract ABIResolver"},"id":4861,"name":"UserDefinedTypeName","src":"1924:11:9"}],"id":4862,"name":"InheritanceSpecifier","src":"1924:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":6305,"type":"contract AddrResolver"},"id":4863,"name":"UserDefinedTypeName","src":"1937:12:9"}],"id":4864,"name":"InheritanceSpecifier","src":"1937:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ContentHashResolver","referencedDeclaration":6375,"type":"contract ContentHashResolver"},"id":4865,"name":"UserDefinedTypeName","src":"1951:19:9"}],"id":4866,"name":"InheritanceSpecifier","src":"1951:19:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"DNSResolver","referencedDeclaration":6866,"type":"contract DNSResolver"},"id":4867,"name":"UserDefinedTypeName","src":"1972:11:9"}],"id":4868,"name":"InheritanceSpecifier","src":"1972:11:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"InterfaceResolver","referencedDeclaration":7053,"type":"contract InterfaceResolver"},"id":4869,"name":"UserDefinedTypeName","src":"1985:17:9"}],"id":4870,"name":"InheritanceSpecifier","src":"1985:17:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"NameResolver","referencedDeclaration":7123,"type":"contract NameResolver"},"id":4871,"name":"UserDefinedTypeName","src":"2004:12:9"}],"id":4872,"name":"InheritanceSpecifier","src":"2004:12:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"PubkeyResolver","referencedDeclaration":7214,"type":"contract PubkeyResolver"},"id":4873,"name":"UserDefinedTypeName","src":"2018:14:9"}],"id":4874,"name":"InheritanceSpecifier","src":"2018:14:9"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TextResolver","referencedDeclaration":7297,"type":"contract TextResolver"},"id":4875,"name":"UserDefinedTypeName","src":"2034:12:9"}],"id":4876,"name":"InheritanceSpecifier","src":"2034:12:9"},{"attributes":{"constant":false,"name":"ens","scope":5022,"stateVariable":true,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4848,"type":"contract ENS"},"id":4877,"name":"UserDefinedTypeName","src":"2053:3:9"}],"id":4878,"name":"VariableDeclaration","src":"2053:7:9"},{"attributes":{"constant":false,"name":"authorisations","scope":5022,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4879,"name":"ElementaryTypeName","src":"2328:7:9"},{"attributes":{"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"name":"address","type":"address"},"id":4880,"name":"ElementaryTypeName","src":"2345:7:9"},{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":4881,"name":"ElementaryTypeName","src":"2362:7:9"},{"attributes":{"name":"bool","type":"bool"},"id":4882,"name":"ElementaryTypeName","src":"2371:4:9"}],"id":4883,"name":"Mapping","src":"2354:22:9"}],"id":4884,"name":"Mapping","src":"2337:40:9"}],"id":4885,"name":"Mapping","src":"2320:58:9"}],"id":4886,"name":"VariableDeclaration","src":"2320:80:9"},{"attributes":{"anonymous":false,"documentation":null,"name":"AuthorisationChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":4896,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4887,"name":"ElementaryTypeName","src":"2434:7:9"}],"id":4888,"name":"VariableDeclaration","src":"2434:20:9"},{"attributes":{"constant":false,"indexed":true,"name":"owner","scope":4896,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4889,"name":"ElementaryTypeName","src":"2456:7:9"}],"id":4890,"name":"VariableDeclaration","src":"2456:21:9"},{"attributes":{"constant":false,"indexed":true,"name":"target","scope":4896,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4891,"name":"ElementaryTypeName","src":"2479:7:9"}],"id":4892,"name":"VariableDeclaration","src":"2479:22:9"},{"attributes":{"constant":false,"indexed":false,"name":"isAuthorised","scope":4896,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4893,"name":"ElementaryTypeName","src":"2503:4:9"}],"id":4894,"name":"VariableDeclaration","src":"2503:17:9"}],"id":4895,"name":"ParameterList","src":"2433:88:9"}],"id":4896,"name":"EventDefinition","src":"2407:115:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":5022,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens","scope":4906,"stateVariable":false,"storageLocation":"default","type":"contract ENS","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"ENS","referencedDeclaration":4848,"type":"contract ENS"},"id":4897,"name":"UserDefinedTypeName","src":"2540:3:9"}],"id":4898,"name":"VariableDeclaration","src":"2540:8:9"}],"id":4899,"name":"ParameterList","src":"2539:10:9"},{"attributes":{"parameters":[null]},"children":[],"id":4900,"name":"ParameterList","src":"2557:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"contract ENS"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4878,"type":"contract ENS","value":"ens"},"id":4901,"name":"Identifier","src":"2567:3:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4898,"type":"contract ENS","value":"_ens"},"id":4902,"name":"Identifier","src":"2573:4:9"}],"id":4903,"name":"Assignment","src":"2567:10:9"}],"id":4904,"name":"ExpressionStatement","src":"2567:10:9"}],"id":4905,"name":"Block","src":"2557:27:9"}],"id":4906,"name":"FunctionDefinition","src":"2528:56:9"},{"attributes":{"documentation":"@dev Sets or clears an authorisation.\nAuthorisations are specific to the caller. Any account can set an authorisation\nfor any name, but the authorisation that is checked will be that of the\ncurrent owner of a name. Thus, transferring a name effectively clears any\nexisting authorisations, and new authorisations can be set in advance of\nan ownership transfer if desired.\n * @param node The name to change the authorisation on.\n@param target The address that is to be authorised or deauthorised.\n@param isAuthorised True if the address should be authorised, or false if it should be deauthorised.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setAuthorisation","scope":5022,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4935,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4907,"name":"ElementaryTypeName","src":"3295:7:9"}],"id":4908,"name":"VariableDeclaration","src":"3295:12:9"},{"attributes":{"constant":false,"name":"target","scope":4935,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4909,"name":"ElementaryTypeName","src":"3309:7:9"}],"id":4910,"name":"VariableDeclaration","src":"3309:14:9"},{"attributes":{"constant":false,"name":"isAuthorised","scope":4935,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4911,"name":"ElementaryTypeName","src":"3325:4:9"}],"id":4912,"name":"VariableDeclaration","src":"3325:17:9"}],"id":4913,"name":"ParameterList","src":"3294:49:9"},{"attributes":{"parameters":[null]},"children":[],"id":4914,"name":"ParameterList","src":"3353:0:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4886,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4915,"name":"Identifier","src":"3363:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4908,"type":"bytes32","value":"node"},"id":4916,"name":"Identifier","src":"3378:4:9"}],"id":4920,"name":"IndexAccess","src":"3363:20:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4917,"name":"Identifier","src":"3384:3:9"}],"id":4918,"name":"MemberAccess","src":"3384:10:9"}],"id":4921,"name":"IndexAccess","src":"3363:32:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4910,"type":"address","value":"target"},"id":4919,"name":"Identifier","src":"3396:6:9"}],"id":4922,"name":"IndexAccess","src":"3363:40:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4912,"type":"bool","value":"isAuthorised"},"id":4923,"name":"Identifier","src":"3406:12:9"}],"id":4924,"name":"Assignment","src":"3363:55:9"}],"id":4925,"name":"ExpressionStatement","src":"3363:55:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":4896,"type":"function (bytes32,address,address,bool)","value":"AuthorisationChanged"},"id":4926,"name":"Identifier","src":"3433:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4908,"type":"bytes32","value":"node"},"id":4927,"name":"Identifier","src":"3454:4:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4928,"name":"Identifier","src":"3460:3:9"}],"id":4929,"name":"MemberAccess","src":"3460:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4910,"type":"address","value":"target"},"id":4930,"name":"Identifier","src":"3472:6:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4912,"type":"bool","value":"isAuthorised"},"id":4931,"name":"Identifier","src":"3480:12:9"}],"id":4932,"name":"FunctionCall","src":"3433:60:9"}],"id":4933,"name":"EmitStatement","src":"3428:65:9"}],"id":4934,"name":"Block","src":"3353:147:9"}],"id":4935,"name":"FunctionDefinition","src":"3269:231:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":5022,"stateMutability":"view","superFunction":9138,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":4964,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4936,"name":"ElementaryTypeName","src":"3528:7:9"}],"id":4937,"name":"VariableDeclaration","src":"3528:12:9"}],"id":4938,"name":"ParameterList","src":"3527:14:9"},{"children":[{"attributes":{"constant":false,"name":"","scope":4964,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4939,"name":"ElementaryTypeName","src":"3564:4:9"}],"id":4940,"name":"VariableDeclaration","src":"3564:4:9"}],"id":4941,"name":"ParameterList","src":"3563:6:9"},{"children":[{"attributes":{"assignments":[4943]},"children":[{"attributes":{"constant":false,"name":"owner","scope":4963,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4942,"name":"ElementaryTypeName","src":"3580:7:9"}],"id":4943,"name":"VariableDeclaration","src":"3580:13:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":4817,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4878,"type":"contract ENS","value":"ens"},"id":4944,"name":"Identifier","src":"3596:3:9"}],"id":4945,"name":"MemberAccess","src":"3596:9:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4937,"type":"bytes32","value":"node"},"id":4946,"name":"Identifier","src":"3606:4:9"}],"id":4947,"name":"FunctionCall","src":"3596:15:9"}],"id":4948,"name":"VariableDeclarationStatement","src":"3580:31:9"},{"attributes":{"functionReturnParameters":4941},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4943,"type":"address","value":"owner"},"id":4949,"name":"Identifier","src":"3628:5:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4950,"name":"Identifier","src":"3637:3:9"}],"id":4951,"name":"MemberAccess","src":"3637:10:9"}],"id":4952,"name":"BinaryOperation","src":"3628:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(address => mapping(address => bool))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4886,"type":"mapping(bytes32 => mapping(address => mapping(address => bool)))","value":"authorisations"},"id":4953,"name":"Identifier","src":"3651:14:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4937,"type":"bytes32","value":"node"},"id":4954,"name":"Identifier","src":"3666:4:9"}],"id":4955,"name":"IndexAccess","src":"3651:20:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4943,"type":"address","value":"owner"},"id":4956,"name":"Identifier","src":"3672:5:9"}],"id":4957,"name":"IndexAccess","src":"3651:27:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4958,"name":"Identifier","src":"3679:3:9"}],"id":4959,"name":"MemberAccess","src":"3679:10:9"}],"id":4960,"name":"IndexAccess","src":"3651:39:9"}],"id":4961,"name":"BinaryOperation","src":"3628:62:9"}],"id":4962,"name":"Return","src":"3621:69:9"}],"id":4963,"name":"Block","src":"3570:127:9"}],"id":4964,"name":"FunctionDefinition","src":"3506:191:9"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"multicall","scope":5022,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"data","scope":5021,"stateVariable":false,"storageLocation":"calldata","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4965,"name":"ElementaryTypeName","src":"3722:5:9"}],"id":4966,"name":"ArrayTypeName","src":"3722:7:9"}],"id":4967,"name":"VariableDeclaration","src":"3722:21:9"}],"id":4968,"name":"ParameterList","src":"3721:23:9"},{"children":[{"attributes":{"constant":false,"name":"results","scope":5021,"stateVariable":false,"storageLocation":"memory","type":"bytes[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4969,"name":"ElementaryTypeName","src":"3762:5:9"}],"id":4970,"name":"ArrayTypeName","src":"3762:7:9"}],"id":4971,"name":"VariableDeclaration","src":"3762:22:9"}],"id":4972,"name":"ParameterList","src":"3761:24:9"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory[] memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4971,"type":"bytes memory[] memory","value":"results"},"id":4973,"name":"Identifier","src":"3796:7:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory[] memory)"},"children":[{"attributes":{"length":null,"type":"bytes[]"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4974,"name":"ElementaryTypeName","src":"3810:5:9"}],"id":4975,"name":"ArrayTypeName","src":"3810:7:9"}],"id":4976,"name":"NewExpression","src":"3806:11:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4967,"type":"bytes calldata[] calldata","value":"data"},"id":4977,"name":"Identifier","src":"3818:4:9"}],"id":4978,"name":"MemberAccess","src":"3818:11:9"}],"id":4979,"name":"FunctionCall","src":"3806:24:9"}],"id":4980,"name":"Assignment","src":"3796:34:9"}],"id":4981,"name":"ExpressionStatement","src":"3796:34:9"},{"children":[{"attributes":{"assignments":[4983]},"children":[{"attributes":{"constant":false,"name":"i","scope":5017,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":4982,"name":"ElementaryTypeName","src":"3844:4:9"}],"id":4983,"name":"VariableDeclaration","src":"3844:6:9"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4984,"name":"Literal","src":"3853:1:9"}],"id":4985,"name":"VariableDeclarationStatement","src":"3844:10:9"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"uint256","value":"i"},"id":4986,"name":"Identifier","src":"3856:1:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4967,"type":"bytes calldata[] calldata","value":"data"},"id":4987,"name":"Identifier","src":"3860:4:9"}],"id":4988,"name":"MemberAccess","src":"3860:11:9"}],"id":4989,"name":"BinaryOperation","src":"3856:15:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"uint256","value":"i"},"id":4990,"name":"Identifier","src":"3873:1:9"}],"id":4991,"name":"UnaryOperation","src":"3873:3:9"}],"id":4992,"name":"ExpressionStatement","src":"3873:3:9"},{"children":[{"attributes":{"assignments":[4994,4996]},"children":[{"attributes":{"constant":false,"name":"success","scope":5016,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4993,"name":"ElementaryTypeName","src":"3893:4:9"}],"id":4994,"name":"VariableDeclaration","src":"3893:12:9"},{"attributes":{"constant":false,"name":"result","scope":5016,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4995,"name":"ElementaryTypeName","src":"3907:5:9"}],"id":4996,"name":"VariableDeclaration","src":"3907:19:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"delegatecall","referencedDeclaration":null,"type":"function (bytes memory) returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_PublicResolver_$5022","typeString":"contract PublicResolver"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4997,"name":"ElementaryTypeNameExpression","src":"3930:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10595,"type":"contract PublicResolver","value":"this"},"id":4998,"name":"Identifier","src":"3938:4:9"}],"id":4999,"name":"FunctionCall","src":"3930:13:9"}],"id":5000,"name":"MemberAccess","src":"3930:26:9"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes calldata"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4967,"type":"bytes calldata[] calldata","value":"data"},"id":5001,"name":"Identifier","src":"3957:4:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"uint256","value":"i"},"id":5002,"name":"Identifier","src":"3962:1:9"}],"id":5003,"name":"IndexAccess","src":"3957:7:9"}],"id":5004,"name":"FunctionCall","src":"3930:35:9"}],"id":5005,"name":"VariableDeclarationStatement","src":"3892:73:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":5006,"name":"Identifier","src":"3979:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4994,"type":"bool","value":"success"},"id":5007,"name":"Identifier","src":"3987:7:9"}],"id":5008,"name":"FunctionCall","src":"3979:16:9"}],"id":5009,"name":"ExpressionStatement","src":"3979:16:9"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4971,"type":"bytes memory[] memory","value":"results"},"id":5010,"name":"Identifier","src":"4009:7:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4983,"type":"uint256","value":"i"},"id":5011,"name":"Identifier","src":"4017:1:9"}],"id":5012,"name":"IndexAccess","src":"4009:10:9"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4996,"type":"bytes memory","value":"result"},"id":5013,"name":"Identifier","src":"4022:6:9"}],"id":5014,"name":"Assignment","src":"4009:19:9"}],"id":5015,"name":"ExpressionStatement","src":"4009:19:9"}],"id":5016,"name":"Block","src":"3878:161:9"}],"id":5017,"name":"ForStatement","src":"3840:199:9"},{"attributes":{"functionReturnParameters":4972},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4971,"type":"bytes memory[] memory","value":"results"},"id":5018,"name":"Identifier","src":"4055:7:9"}],"id":5019,"name":"Return","src":"4048:14:9"}],"id":5020,"name":"Block","src":"3786:283:9"}],"id":5021,"name":"FunctionDefinition","src":"3703:366:9"}],"id":5022,"name":"ContractDefinition","src":"1897:2174:9"}],"id":5023,"name":"SourceUnit","src":"1401:2671:9"}},"externals/ens/RRUtils.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/RRUtils.sol","exportedSymbols":{"RRUtils":[9801]}},"children":[{"attributes":{"literals":["solidity",">","0.4",".23"]},"id":9185,"name":"PragmaDirective","src":"0:24:10"},{"attributes":{"SourceUnit":10523,"absolutePath":"externals/ens/ENSBytesUtils.sol","file":"./ENSBytesUtils.sol","scope":9802,"symbolAliases":[null],"unitAlias":""},"id":9186,"name":"ImportDirective","src":"26:29:10"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@dev RRUtils is a library that provides utilities for parsing DNS resource records.","fullyImplemented":true,"linearizedBaseContracts":[9801],"name":"RRUtils","scope":9802},"children":[{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10522,"type":"library ENSBytesUtils"},"id":9187,"name":"UserDefinedTypeName","src":"178:13:10"}],"id":9188,"name":"UsingForDirective","src":"172:26:10"},{"attributes":{"documentation":"@dev Returns the number of bytes in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The length of the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nameLength","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9235,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9189,"name":"ElementaryTypeName","src":"487:5:10"}],"id":9190,"name":"VariableDeclaration","src":"487:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9235,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9191,"name":"ElementaryTypeName","src":"506:4:10"}],"id":9192,"name":"VariableDeclaration","src":"506:11:10"}],"id":9193,"name":"ParameterList","src":"486:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9235,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9194,"name":"ElementaryTypeName","src":"541:4:10"}],"id":9195,"name":"VariableDeclaration","src":"541:4:10"}],"id":9196,"name":"ParameterList","src":"540:6:10"},{"children":[{"attributes":{"assignments":[9198]},"children":[{"attributes":{"constant":false,"name":"idx","scope":9234,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9197,"name":"ElementaryTypeName","src":"557:4:10"}],"id":9198,"name":"VariableDeclaration","src":"557:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9192,"type":"uint256","value":"offset"},"id":9199,"name":"Identifier","src":"568:6:10"}],"id":9200,"name":"VariableDeclarationStatement","src":"557:17:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9201,"name":"Literal","src":"591:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10526,"type":"function (bool) pure","value":"assert"},"id":9202,"name":"Identifier","src":"611:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9198,"type":"uint256","value":"idx"},"id":9203,"name":"Identifier","src":"618:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9190,"type":"bytes memory","value":"self"},"id":9204,"name":"Identifier","src":"624:4:10"}],"id":9205,"name":"MemberAccess","src":"624:11:10"}],"id":9206,"name":"BinaryOperation","src":"618:17:10"}],"id":9207,"name":"FunctionCall","src":"611:25:10"}],"id":9208,"name":"ExpressionStatement","src":"611:25:10"},{"attributes":{"assignments":[9210]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":9228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9209,"name":"ElementaryTypeName","src":"650:4:10"}],"id":9210,"name":"VariableDeclaration","src":"650:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9190,"type":"bytes memory","value":"self"},"id":9211,"name":"Identifier","src":"666:4:10"}],"id":9212,"name":"MemberAccess","src":"666:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9198,"type":"uint256","value":"idx"},"id":9213,"name":"Identifier","src":"681:3:10"}],"id":9214,"name":"FunctionCall","src":"666:19:10"}],"id":9215,"name":"VariableDeclarationStatement","src":"650:35:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9198,"type":"uint256","value":"idx"},"id":9216,"name":"Identifier","src":"699:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9210,"type":"uint256","value":"labelLen"},"id":9217,"name":"Identifier","src":"706:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9218,"name":"Literal","src":"717:1:10"}],"id":9219,"name":"BinaryOperation","src":"706:12:10"}],"id":9220,"name":"Assignment","src":"699:19:10"}],"id":9221,"name":"ExpressionStatement","src":"699:19:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9210,"type":"uint256","value":"labelLen"},"id":9222,"name":"Identifier","src":"736:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9223,"name":"Literal","src":"748:1:10"}],"id":9224,"name":"BinaryOperation","src":"736:13:10"},{"children":[{"id":9225,"name":"Break","src":"769:5:10"}],"id":9226,"name":"Block","src":"751:38:10"}],"id":9227,"name":"IfStatement","src":"732:57:10"}],"id":9228,"name":"Block","src":"597:202:10"}],"id":9229,"name":"WhileStatement","src":"584:215:10"},{"attributes":{"functionReturnParameters":9196},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9198,"type":"uint256","value":"idx"},"id":9230,"name":"Identifier","src":"815:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9192,"type":"uint256","value":"offset"},"id":9231,"name":"Identifier","src":"821:6:10"}],"id":9232,"name":"BinaryOperation","src":"815:12:10"}],"id":9233,"name":"Return","src":"808:19:10"}],"id":9234,"name":"Block","src":"547:287:10"}],"id":9235,"name":"FunctionDefinition","src":"467:367:10"},{"attributes":{"documentation":"@dev Returns a DNS format name at the specified offset of self.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"readName","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9258,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9236,"name":"ElementaryTypeName","src":"1073:5:10"}],"id":9237,"name":"VariableDeclaration","src":"1073:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9258,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9238,"name":"ElementaryTypeName","src":"1092:4:10"}],"id":9239,"name":"VariableDeclaration","src":"1092:11:10"}],"id":9240,"name":"ParameterList","src":"1072:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9258,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9241,"name":"ElementaryTypeName","src":"1127:5:10"}],"id":9242,"name":"VariableDeclaration","src":"1127:16:10"}],"id":9243,"name":"ParameterList","src":"1126:18:10"},{"children":[{"attributes":{"assignments":[9245]},"children":[{"attributes":{"constant":false,"name":"len","scope":9257,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9244,"name":"ElementaryTypeName","src":"1155:4:10"}],"id":9245,"name":"VariableDeclaration","src":"1155:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9246,"name":"Identifier","src":"1166:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9237,"type":"bytes memory","value":"self"},"id":9247,"name":"Identifier","src":"1177:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9239,"type":"uint256","value":"offset"},"id":9248,"name":"Identifier","src":"1183:6:10"}],"id":9249,"name":"FunctionCall","src":"1166:24:10"}],"id":9250,"name":"VariableDeclarationStatement","src":"1155:35:10"},{"attributes":{"functionReturnParameters":9243},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10299,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9237,"type":"bytes memory","value":"self"},"id":9251,"name":"Identifier","src":"1207:4:10"}],"id":9252,"name":"MemberAccess","src":"1207:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9239,"type":"uint256","value":"offset"},"id":9253,"name":"Identifier","src":"1222:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9245,"type":"uint256","value":"len"},"id":9254,"name":"Identifier","src":"1230:3:10"}],"id":9255,"name":"FunctionCall","src":"1207:27:10"}],"id":9256,"name":"Return","src":"1200:34:10"}],"id":9257,"name":"Block","src":"1145:96:10"}],"id":9258,"name":"FunctionDefinition","src":"1055:186:10"},{"attributes":{"documentation":"@dev Returns the number of labels in the DNS name at 'offset' in 'self'.\n@param self The byte array to read a name from.\n@param offset The offset to start reading at.\n@return The number of labels in the DNS name at 'offset', in bytes.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"labelCount","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9307,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9259,"name":"ElementaryTypeName","src":"1541:5:10"}],"id":9260,"name":"VariableDeclaration","src":"1541:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9307,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9261,"name":"ElementaryTypeName","src":"1560:4:10"}],"id":9262,"name":"VariableDeclaration","src":"1560:11:10"}],"id":9263,"name":"ParameterList","src":"1540:32:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9307,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9264,"name":"ElementaryTypeName","src":"1595:4:10"}],"id":9265,"name":"VariableDeclaration","src":"1595:4:10"}],"id":9266,"name":"ParameterList","src":"1594:6:10"},{"children":[{"attributes":{"assignments":[9268]},"children":[{"attributes":{"constant":false,"name":"count","scope":9306,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9267,"name":"ElementaryTypeName","src":"1611:4:10"}],"id":9268,"name":"VariableDeclaration","src":"1611:10:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9269,"name":"Literal","src":"1624:1:10"}],"id":9270,"name":"VariableDeclarationStatement","src":"1611:14:10"},{"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":9271,"name":"Literal","src":"1642:4:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":10526,"type":"function (bool) pure","value":"assert"},"id":9272,"name":"Identifier","src":"1662:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9262,"type":"uint256","value":"offset"},"id":9273,"name":"Identifier","src":"1669:6:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"bytes memory","value":"self"},"id":9274,"name":"Identifier","src":"1678:4:10"}],"id":9275,"name":"MemberAccess","src":"1678:11:10"}],"id":9276,"name":"BinaryOperation","src":"1669:20:10"}],"id":9277,"name":"FunctionCall","src":"1662:28:10"}],"id":9278,"name":"ExpressionStatement","src":"1662:28:10"},{"attributes":{"assignments":[9280]},"children":[{"attributes":{"constant":false,"name":"labelLen","scope":9302,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9279,"name":"ElementaryTypeName","src":"1704:4:10"}],"id":9280,"name":"VariableDeclaration","src":"1704:13:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9260,"type":"bytes memory","value":"self"},"id":9281,"name":"Identifier","src":"1720:4:10"}],"id":9282,"name":"MemberAccess","src":"1720:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9262,"type":"uint256","value":"offset"},"id":9283,"name":"Identifier","src":"1735:6:10"}],"id":9284,"name":"FunctionCall","src":"1720:22:10"}],"id":9285,"name":"VariableDeclarationStatement","src":"1704:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9262,"type":"uint256","value":"offset"},"id":9286,"name":"Identifier","src":"1756:6:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9280,"type":"uint256","value":"labelLen"},"id":9287,"name":"Identifier","src":"1766:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9288,"name":"Literal","src":"1777:1:10"}],"id":9289,"name":"BinaryOperation","src":"1766:12:10"}],"id":9290,"name":"Assignment","src":"1756:22:10"}],"id":9291,"name":"ExpressionStatement","src":"1756:22:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9280,"type":"uint256","value":"labelLen"},"id":9292,"name":"Identifier","src":"1796:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9293,"name":"Literal","src":"1808:1:10"}],"id":9294,"name":"BinaryOperation","src":"1796:13:10"},{"children":[{"id":9295,"name":"Break","src":"1829:5:10"}],"id":9296,"name":"Block","src":"1811:38:10"}],"id":9297,"name":"IfStatement","src":"1792:57:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9268,"type":"uint256","value":"count"},"id":9298,"name":"Identifier","src":"1862:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9299,"name":"Literal","src":"1871:1:10"}],"id":9300,"name":"Assignment","src":"1862:10:10"}],"id":9301,"name":"ExpressionStatement","src":"1862:10:10"}],"id":9302,"name":"Block","src":"1648:235:10"}],"id":9303,"name":"WhileStatement","src":"1635:248:10"},{"attributes":{"functionReturnParameters":9266},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9268,"type":"uint256","value":"count"},"id":9304,"name":"Identifier","src":"1899:5:10"}],"id":9305,"name":"Return","src":"1892:12:10"}],"id":9306,"name":"Block","src":"1601:310:10"}],"id":9307,"name":"FunctionDefinition","src":"1521:390:10"},{"attributes":{"canonicalName":"RRUtils.RRIterator","name":"RRIterator","scope":9801,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"data","scope":9322,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9308,"name":"ElementaryTypeName","src":"2006:5:10"}],"id":9309,"name":"VariableDeclaration","src":"2006:10:10"},{"attributes":{"constant":false,"name":"offset","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9310,"name":"ElementaryTypeName","src":"2026:4:10"}],"id":9311,"name":"VariableDeclaration","src":"2026:11:10"},{"attributes":{"constant":false,"name":"dnstype","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9312,"name":"ElementaryTypeName","src":"2047:6:10"}],"id":9313,"name":"VariableDeclaration","src":"2047:14:10"},{"attributes":{"constant":false,"name":"class","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9314,"name":"ElementaryTypeName","src":"2071:6:10"}],"id":9315,"name":"VariableDeclaration","src":"2071:12:10"},{"attributes":{"constant":false,"name":"ttl","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint32","type":"uint32"},"id":9316,"name":"ElementaryTypeName","src":"2093:6:10"}],"id":9317,"name":"VariableDeclaration","src":"2093:10:10"},{"attributes":{"constant":false,"name":"rdataOffset","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9318,"name":"ElementaryTypeName","src":"2113:4:10"}],"id":9319,"name":"VariableDeclaration","src":"2113:16:10"},{"attributes":{"constant":false,"name":"nextOffset","scope":9322,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9320,"name":"ElementaryTypeName","src":"2139:4:10"}],"id":9321,"name":"VariableDeclaration","src":"2139:15:10"}],"id":9322,"name":"StructDefinition","src":"1978:183:10"},{"attributes":{"documentation":"@dev Begins iterating over resource records.\n@param self The byte string to read from.\n@param offset The offset to start reading at.\n@return An iterator object.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"iterateRRs","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9348,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9323,"name":"ElementaryTypeName","src":"2387:5:10"}],"id":9324,"name":"VariableDeclaration","src":"2387:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9348,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9325,"name":"ElementaryTypeName","src":"2406:4:10"}],"id":9326,"name":"VariableDeclaration","src":"2406:11:10"}],"id":9327,"name":"ParameterList","src":"2386:32:10"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":9348,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9328,"name":"UserDefinedTypeName","src":"2442:10:10"}],"id":9329,"name":"VariableDeclaration","src":"2442:21:10"}],"id":9330,"name":"ParameterList","src":"2441:23:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9329,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":9331,"name":"Identifier","src":"2475:3:10"}],"id":9333,"name":"MemberAccess","src":"2475:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9324,"type":"bytes memory","value":"self"},"id":9334,"name":"Identifier","src":"2486:4:10"}],"id":9335,"name":"Assignment","src":"2475:15:10"}],"id":9336,"name":"ExpressionStatement","src":"2475:15:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":9321,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9329,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":9337,"name":"Identifier","src":"2500:3:10"}],"id":9339,"name":"MemberAccess","src":"2500:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9326,"type":"uint256","value":"offset"},"id":9340,"name":"Identifier","src":"2517:6:10"}],"id":9341,"name":"Assignment","src":"2500:23:10"}],"id":9342,"name":"ExpressionStatement","src":"2500:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_RRIterator_$9322_memory_ptr","typeString":"struct RRUtils.RRIterator memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9465,"type":"function (struct RRUtils.RRIterator memory) pure","value":"next"},"id":9343,"name":"Identifier","src":"2533:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9329,"type":"struct RRUtils.RRIterator memory","value":"ret"},"id":9344,"name":"Identifier","src":"2538:3:10"}],"id":9345,"name":"FunctionCall","src":"2533:9:10"}],"id":9346,"name":"ExpressionStatement","src":"2533:9:10"}],"id":9347,"name":"Block","src":"2465:84:10"}],"id":9348,"name":"FunctionDefinition","src":"2367:182:10"},{"attributes":{"documentation":"@dev Returns true iff there are more RRs to iterate.\n@param iter The iterator to check.\n@return True iff the iterator has finished.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"done","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9363,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9349,"name":"UserDefinedTypeName","src":"2734:10:10"}],"id":9350,"name":"VariableDeclaration","src":"2734:22:10"}],"id":9351,"name":"ParameterList","src":"2733:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9363,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9352,"name":"ElementaryTypeName","src":"2780:4:10"}],"id":9353,"name":"VariableDeclaration","src":"2780:4:10"}],"id":9354,"name":"ParameterList","src":"2779:6:10"},{"children":[{"attributes":{"functionReturnParameters":9354},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9350,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9355,"name":"Identifier","src":"2803:4:10"}],"id":9356,"name":"MemberAccess","src":"2803:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9350,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9357,"name":"Identifier","src":"2818:4:10"}],"id":9358,"name":"MemberAccess","src":"2818:9:10"}],"id":9359,"name":"MemberAccess","src":"2818:16:10"}],"id":9360,"name":"BinaryOperation","src":"2803:31:10"}],"id":9361,"name":"Return","src":"2796:38:10"}],"id":9362,"name":"Block","src":"2786:55:10"}],"id":9363,"name":"FunctionDefinition","src":"2720:121:10"},{"attributes":{"documentation":"@dev Moves the iterator to the next resource record.\n@param iter The iterator to advance.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"next","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9465,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9364,"name":"UserDefinedTypeName","src":"2978:10:10"}],"id":9365,"name":"VariableDeclaration","src":"2978:22:10"}],"id":9366,"name":"ParameterList","src":"2977:24:10"},{"attributes":{"parameters":[null]},"children":[],"id":9367,"name":"ParameterList","src":"3016:0:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9368,"name":"Identifier","src":"3026:4:10"}],"id":9370,"name":"MemberAccess","src":"3026:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":9321,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9371,"name":"Identifier","src":"3040:4:10"}],"id":9372,"name":"MemberAccess","src":"3040:15:10"}],"id":9373,"name":"Assignment","src":"3026:29:10"}],"id":9374,"name":"ExpressionStatement","src":"3026:29:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9375,"name":"Identifier","src":"3069:4:10"}],"id":9376,"name":"MemberAccess","src":"3069:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9377,"name":"Identifier","src":"3084:4:10"}],"id":9378,"name":"MemberAccess","src":"3084:9:10"}],"id":9379,"name":"MemberAccess","src":"3084:16:10"}],"id":9380,"name":"BinaryOperation","src":"3069:31:10"},{"children":[{"attributes":{"expression":null,"functionReturnParameters":9367},"id":9381,"name":"Return","src":"3116:7:10"}],"id":9382,"name":"Block","src":"3102:31:10"}],"id":9383,"name":"IfStatement","src":"3065:68:10"},{"attributes":{"assignments":[9385]},"children":[{"attributes":{"constant":false,"name":"off","scope":9464,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9384,"name":"ElementaryTypeName","src":"3168:4:10"}],"id":9385,"name":"VariableDeclaration","src":"3168:8:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9386,"name":"Identifier","src":"3179:4:10"}],"id":9387,"name":"MemberAccess","src":"3179:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9388,"name":"Identifier","src":"3193:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9389,"name":"Identifier","src":"3204:4:10"}],"id":9390,"name":"MemberAccess","src":"3204:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9391,"name":"Identifier","src":"3215:4:10"}],"id":9392,"name":"MemberAccess","src":"3215:11:10"}],"id":9393,"name":"FunctionCall","src":"3193:34:10"}],"id":9394,"name":"BinaryOperation","src":"3179:48:10"}],"id":9395,"name":"VariableDeclarationStatement","src":"3168:59:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"dnstype","referencedDeclaration":9313,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9396,"name":"Identifier","src":"3275:4:10"}],"id":9398,"name":"MemberAccess","src":"3275:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":10128,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9399,"name":"Identifier","src":"3290:4:10"}],"id":9400,"name":"MemberAccess","src":"3290:9:10"}],"id":9401,"name":"MemberAccess","src":"3290:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9402,"name":"Identifier","src":"3311:3:10"}],"id":9403,"name":"FunctionCall","src":"3290:25:10"}],"id":9404,"name":"Assignment","src":"3275:40:10"}],"id":9405,"name":"ExpressionStatement","src":"3275:40:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9406,"name":"Identifier","src":"3325:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9407,"name":"Literal","src":"3332:1:10"}],"id":9408,"name":"Assignment","src":"3325:8:10"}],"id":9409,"name":"ExpressionStatement","src":"3325:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"class","referencedDeclaration":9315,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9410,"name":"Identifier","src":"3343:4:10"}],"id":9412,"name":"MemberAccess","src":"3343:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":10128,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9413,"name":"Identifier","src":"3356:4:10"}],"id":9414,"name":"MemberAccess","src":"3356:9:10"}],"id":9415,"name":"MemberAccess","src":"3356:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9416,"name":"Identifier","src":"3377:3:10"}],"id":9417,"name":"FunctionCall","src":"3356:25:10"}],"id":9418,"name":"Assignment","src":"3343:38:10"}],"id":9419,"name":"ExpressionStatement","src":"3343:38:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9420,"name":"Identifier","src":"3391:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9421,"name":"Literal","src":"3398:1:10"}],"id":9422,"name":"Assignment","src":"3391:8:10"}],"id":9423,"name":"ExpressionStatement","src":"3391:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"ttl","referencedDeclaration":9317,"type":"uint32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9424,"name":"Identifier","src":"3409:4:10"}],"id":9426,"name":"MemberAccess","src":"3409:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint32","referencedDeclaration":10148,"type":"function (bytes memory,uint256) pure returns (uint32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9427,"name":"Identifier","src":"3420:4:10"}],"id":9428,"name":"MemberAccess","src":"3420:9:10"}],"id":9429,"name":"MemberAccess","src":"3420:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9430,"name":"Identifier","src":"3441:3:10"}],"id":9431,"name":"FunctionCall","src":"3420:25:10"}],"id":9432,"name":"Assignment","src":"3409:36:10"}],"id":9433,"name":"ExpressionStatement","src":"3409:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9434,"name":"Identifier","src":"3455:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9435,"name":"Literal","src":"3462:1:10"}],"id":9436,"name":"Assignment","src":"3455:8:10"}],"id":9437,"name":"ExpressionStatement","src":"3455:8:10"},{"attributes":{"assignments":[9439]},"children":[{"attributes":{"constant":false,"name":"rdataLength","scope":9464,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9438,"name":"ElementaryTypeName","src":"3500:4:10"}],"id":9439,"name":"VariableDeclaration","src":"3500:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint16","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint16","referencedDeclaration":10128,"type":"function (bytes memory,uint256) pure returns (uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9440,"name":"Identifier","src":"3519:4:10"}],"id":9441,"name":"MemberAccess","src":"3519:9:10"}],"id":9442,"name":"MemberAccess","src":"3519:20:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9443,"name":"Identifier","src":"3540:3:10"}],"id":9444,"name":"FunctionCall","src":"3519:25:10"}],"id":9445,"name":"VariableDeclarationStatement","src":"3500:44:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9446,"name":"Identifier","src":"3554:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9447,"name":"Literal","src":"3561:1:10"}],"id":9448,"name":"Assignment","src":"3554:8:10"}],"id":9449,"name":"ExpressionStatement","src":"3554:8:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rdataOffset","referencedDeclaration":9319,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9450,"name":"Identifier","src":"3572:4:10"}],"id":9452,"name":"MemberAccess","src":"3572:16:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9453,"name":"Identifier","src":"3591:3:10"}],"id":9454,"name":"Assignment","src":"3572:22:10"}],"id":9455,"name":"ExpressionStatement","src":"3572:22:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"nextOffset","referencedDeclaration":9321,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9365,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9456,"name":"Identifier","src":"3604:4:10"}],"id":9458,"name":"MemberAccess","src":"3604:15:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9385,"type":"uint256","value":"off"},"id":9459,"name":"Identifier","src":"3622:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9439,"type":"uint256","value":"rdataLength"},"id":9460,"name":"Identifier","src":"3628:11:10"}],"id":9461,"name":"BinaryOperation","src":"3622:17:10"}],"id":9462,"name":"Assignment","src":"3604:35:10"}],"id":9463,"name":"ExpressionStatement","src":"3604:35:10"}],"id":9464,"name":"Block","src":"3016:630:10"}],"id":9465,"name":"FunctionDefinition","src":"2964:682:10"},{"attributes":{"documentation":"@dev Returns the name of the current record.\n@param iter The iterator.\n@return A new bytes object containing the owner name from the RR.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9486,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9466,"name":"UserDefinedTypeName","src":"3836:10:10"}],"id":9467,"name":"VariableDeclaration","src":"3836:22:10"}],"id":9468,"name":"ParameterList","src":"3835:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9486,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9469,"name":"ElementaryTypeName","src":"3882:5:10"}],"id":9470,"name":"VariableDeclaration","src":"3882:12:10"}],"id":9471,"name":"ParameterList","src":"3881:14:10"},{"children":[{"attributes":{"functionReturnParameters":9471},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10299,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9467,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9472,"name":"Identifier","src":"3913:4:10"}],"id":9473,"name":"MemberAccess","src":"3913:9:10"}],"id":9474,"name":"MemberAccess","src":"3913:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9467,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9475,"name":"Identifier","src":"3933:4:10"}],"id":9476,"name":"MemberAccess","src":"3933:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9235,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"nameLength"},"id":9477,"name":"Identifier","src":"3946:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9467,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9478,"name":"Identifier","src":"3957:4:10"}],"id":9479,"name":"MemberAccess","src":"3957:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9467,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9480,"name":"Identifier","src":"3968:4:10"}],"id":9481,"name":"MemberAccess","src":"3968:11:10"}],"id":9482,"name":"FunctionCall","src":"3946:34:10"}],"id":9483,"name":"FunctionCall","src":"3913:68:10"}],"id":9484,"name":"Return","src":"3906:75:10"}],"id":9485,"name":"Block","src":"3896:92:10"}],"id":9486,"name":"FunctionDefinition","src":"3822:166:10"},{"attributes":{"documentation":"@dev Returns the rdata portion of the current record.\n@param iter The iterator.\n@return A new bytes object containing the RR's RDATA.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rdata","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"iter","scope":9506,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":9487,"name":"UserDefinedTypeName","src":"4176:10:10"}],"id":9488,"name":"VariableDeclaration","src":"4176:22:10"}],"id":9489,"name":"ParameterList","src":"4175:24:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9506,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9490,"name":"ElementaryTypeName","src":"4222:5:10"}],"id":9491,"name":"VariableDeclaration","src":"4222:12:10"}],"id":9492,"name":"ParameterList","src":"4221:14:10"},{"children":[{"attributes":{"functionReturnParameters":9492},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10299,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"data","referencedDeclaration":9309,"type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9488,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9493,"name":"Identifier","src":"4253:4:10"}],"id":9494,"name":"MemberAccess","src":"4253:9:10"}],"id":9495,"name":"MemberAccess","src":"4253:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":9319,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9488,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9496,"name":"Identifier","src":"4273:4:10"}],"id":9497,"name":"MemberAccess","src":"4273:16:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"nextOffset","referencedDeclaration":9321,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9488,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9498,"name":"Identifier","src":"4291:4:10"}],"id":9499,"name":"MemberAccess","src":"4291:15:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdataOffset","referencedDeclaration":9319,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9488,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":9500,"name":"Identifier","src":"4309:4:10"}],"id":9501,"name":"MemberAccess","src":"4309:16:10"}],"id":9502,"name":"BinaryOperation","src":"4291:34:10"}],"id":9503,"name":"FunctionCall","src":"4253:73:10"}],"id":9504,"name":"Return","src":"4246:80:10"}],"id":9505,"name":"Block","src":"4236:97:10"}],"id":9506,"name":"FunctionDefinition","src":"4161:172:10"},{"attributes":{"documentation":"@dev Checks if a given RR type exists in a type bitmap.\n@param self The byte string to read the type bitmap from.\n@param offset The offset to start reading at.\n@param rrtype The RR type to check for.\n@return True if the type is found in the bitmap, false otherwise.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"checkTypeBitmap","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9626,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9507,"name":"ElementaryTypeName","src":"4675:5:10"}],"id":9508,"name":"VariableDeclaration","src":"4675:17:10"},{"attributes":{"constant":false,"name":"offset","scope":9626,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9509,"name":"ElementaryTypeName","src":"4694:4:10"}],"id":9510,"name":"VariableDeclaration","src":"4694:11:10"},{"attributes":{"constant":false,"name":"rrtype","scope":9626,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":9511,"name":"ElementaryTypeName","src":"4707:6:10"}],"id":9512,"name":"VariableDeclaration","src":"4707:13:10"}],"id":9513,"name":"ParameterList","src":"4674:47:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9626,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9514,"name":"ElementaryTypeName","src":"4745:4:10"}],"id":9515,"name":"VariableDeclaration","src":"4745:4:10"}],"id":9516,"name":"ParameterList","src":"4744:6:10"},{"children":[{"attributes":{"assignments":[9518]},"children":[{"attributes":{"constant":false,"name":"typeWindow","scope":9625,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9517,"name":"ElementaryTypeName","src":"4761:5:10"}],"id":9518,"name":"VariableDeclaration","src":"4761:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9519,"name":"ElementaryTypeNameExpression","src":"4780:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">>","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9512,"type":"uint16","value":"rrtype"},"id":9520,"name":"Identifier","src":"4786:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9521,"name":"Literal","src":"4796:1:10"}],"id":9522,"name":"BinaryOperation","src":"4786:11:10"}],"id":9523,"name":"FunctionCall","src":"4780:18:10"}],"id":9524,"name":"VariableDeclarationStatement","src":"4761:37:10"},{"attributes":{"assignments":[9526]},"children":[{"attributes":{"constant":false,"name":"windowByte","scope":9625,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9525,"name":"ElementaryTypeName","src":"4808:5:10"}],"id":9526,"name":"VariableDeclaration","src":"4808:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9527,"name":"ElementaryTypeNameExpression","src":"4827:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9512,"type":"uint16","value":"rrtype"},"id":9528,"name":"Identifier","src":"4834:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":9529,"name":"Literal","src":"4843:4:10"}],"id":9530,"name":"BinaryOperation","src":"4834:13:10"}],"id":9531,"name":"TupleExpression","src":"4833:15:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9532,"name":"Literal","src":"4851:1:10"}],"id":9533,"name":"BinaryOperation","src":"4833:19:10"}],"id":9534,"name":"FunctionCall","src":"4827:26:10"}],"id":9535,"name":"VariableDeclarationStatement","src":"4808:45:10"},{"attributes":{"assignments":[9537]},"children":[{"attributes":{"constant":false,"name":"windowBitmask","scope":9625,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9536,"name":"ElementaryTypeName","src":"4863:5:10"}],"id":9537,"name":"VariableDeclaration","src":"4863:19:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9538,"name":"ElementaryTypeNameExpression","src":"4885:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9539,"name":"ElementaryTypeNameExpression","src":"4891:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9540,"name":"Literal","src":"4897:1:10"}],"id":9541,"name":"FunctionCall","src":"4891:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_7_by_1","typeString":"int_const 7"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9542,"name":"ElementaryTypeNameExpression","src":"4904:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"37","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"7"},"id":9543,"name":"Literal","src":"4910:1:10"}],"id":9544,"name":"FunctionCall","src":"4904:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint16","typeString":"uint16"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint8)","value":"uint8"},"id":9545,"name":"ElementaryTypeNameExpression","src":"4915:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9512,"type":"uint16","value":"rrtype"},"id":9546,"name":"Identifier","src":"4921:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"307837","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x7"},"id":9547,"name":"Literal","src":"4930:3:10"}],"id":9548,"name":"BinaryOperation","src":"4921:12:10"}],"id":9549,"name":"FunctionCall","src":"4915:19:10"}],"id":9550,"name":"BinaryOperation","src":"4904:30:10"}],"id":9551,"name":"TupleExpression","src":"4903:32:10"}],"id":9552,"name":"BinaryOperation","src":"4891:44:10"}],"id":9553,"name":"FunctionCall","src":"4885:51:10"}],"id":9554,"name":"VariableDeclarationStatement","src":"4863:73:10"},{"attributes":{"loopExpression":null},"children":[{"attributes":{"assignments":[9556]},"children":[{"attributes":{"constant":false,"name":"off","scope":9622,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9555,"name":"ElementaryTypeName","src":"4951:4:10"}],"id":9556,"name":"VariableDeclaration","src":"4951:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9510,"type":"uint256","value":"offset"},"id":9557,"name":"Identifier","src":"4962:6:10"}],"id":9558,"name":"VariableDeclarationStatement","src":"4951:17:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9559,"name":"Identifier","src":"4970:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9508,"type":"bytes memory","value":"self"},"id":9560,"name":"Identifier","src":"4976:4:10"}],"id":9561,"name":"MemberAccess","src":"4976:11:10"}],"id":9562,"name":"BinaryOperation","src":"4970:17:10"},{"children":[{"attributes":{"assignments":[9564]},"children":[{"attributes":{"constant":false,"name":"window","scope":9621,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9563,"name":"ElementaryTypeName","src":"5004:5:10"}],"id":9564,"name":"VariableDeclaration","src":"5004:12:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9508,"type":"bytes memory","value":"self"},"id":9565,"name":"Identifier","src":"5019:4:10"}],"id":9566,"name":"MemberAccess","src":"5019:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9567,"name":"Identifier","src":"5034:3:10"}],"id":9568,"name":"FunctionCall","src":"5019:19:10"}],"id":9569,"name":"VariableDeclarationStatement","src":"5004:34:10"},{"attributes":{"assignments":[9571]},"children":[{"attributes":{"constant":false,"name":"len","scope":9621,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":9570,"name":"ElementaryTypeName","src":"5052:5:10"}],"id":9571,"name":"VariableDeclaration","src":"5052:9:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9508,"type":"bytes memory","value":"self"},"id":9572,"name":"Identifier","src":"5064:4:10"}],"id":9573,"name":"MemberAccess","src":"5064:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9574,"name":"Identifier","src":"5079:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9575,"name":"Literal","src":"5085:1:10"}],"id":9576,"name":"BinaryOperation","src":"5079:7:10"}],"id":9577,"name":"FunctionCall","src":"5064:23:10"}],"id":9578,"name":"VariableDeclarationStatement","src":"5052:35:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9518,"type":"uint8","value":"typeWindow"},"id":9579,"name":"Identifier","src":"5105:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9564,"type":"uint8","value":"window"},"id":9580,"name":"Identifier","src":"5118:6:10"}],"id":9581,"name":"BinaryOperation","src":"5105:19:10"},{"children":[{"attributes":{"functionReturnParameters":9516},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9582,"name":"Literal","src":"5213:5:10"}],"id":9583,"name":"Return","src":"5206:12:10"}],"id":9584,"name":"Block","src":"5126:107:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9518,"type":"uint8","value":"typeWindow"},"id":9585,"name":"Identifier","src":"5243:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9564,"type":"uint8","value":"window"},"id":9586,"name":"Identifier","src":"5257:6:10"}],"id":9587,"name":"BinaryOperation","src":"5243:20:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9571,"type":"uint8","value":"len"},"id":9588,"name":"Identifier","src":"5329:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":9589,"name":"Literal","src":"5335:1:10"}],"id":9590,"name":"BinaryOperation","src":"5329:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9526,"type":"uint8","value":"windowByte"},"id":9591,"name":"Identifier","src":"5340:10:10"}],"id":9592,"name":"BinaryOperation","src":"5329:21:10"},{"children":[{"attributes":{"functionReturnParameters":9516},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9593,"name":"Literal","src":"5443:5:10"}],"id":9594,"name":"Return","src":"5436:12:10"}],"id":9595,"name":"Block","src":"5352:115:10"}],"id":9596,"name":"IfStatement","src":"5325:142:10"},{"attributes":{"functionReturnParameters":9516},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9508,"type":"bytes memory","value":"self"},"id":9597,"name":"Identifier","src":"5492:4:10"}],"id":9598,"name":"MemberAccess","src":"5492:14:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9599,"name":"Identifier","src":"5507:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9526,"type":"uint8","value":"windowByte"},"id":9600,"name":"Identifier","src":"5513:10:10"}],"id":9601,"name":"BinaryOperation","src":"5507:16:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9602,"name":"Literal","src":"5526:1:10"}],"id":9603,"name":"BinaryOperation","src":"5507:20:10"}],"id":9604,"name":"FunctionCall","src":"5492:36:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9537,"type":"uint8","value":"windowBitmask"},"id":9605,"name":"Identifier","src":"5531:13:10"}],"id":9606,"name":"BinaryOperation","src":"5492:52:10"}],"id":9607,"name":"TupleExpression","src":"5491:54:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9608,"name":"Literal","src":"5549:1:10"}],"id":9609,"name":"BinaryOperation","src":"5491:59:10"}],"id":9610,"name":"Return","src":"5484:66:10"}],"id":9611,"name":"Block","src":"5265:300:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9556,"type":"uint256","value":"off"},"id":9612,"name":"Identifier","src":"5630:3:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint8"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9571,"type":"uint8","value":"len"},"id":9613,"name":"Identifier","src":"5637:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":9614,"name":"Literal","src":"5643:1:10"}],"id":9615,"name":"BinaryOperation","src":"5637:7:10"}],"id":9616,"name":"Assignment","src":"5630:14:10"}],"id":9617,"name":"ExpressionStatement","src":"5630:14:10"}],"id":9618,"name":"Block","src":"5571:88:10"}],"id":9619,"name":"IfStatement","src":"5239:420:10"}],"id":9620,"name":"IfStatement","src":"5101:558:10"}],"id":9621,"name":"Block","src":"4990:679:10"}],"id":9622,"name":"ForStatement","src":"4946:723:10"},{"attributes":{"functionReturnParameters":9516},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":9623,"name":"Literal","src":"5686:5:10"}],"id":9624,"name":"Return","src":"5679:12:10"}],"id":9625,"name":"Block","src":"4751:947:10"}],"id":9626,"name":"FunctionDefinition","src":"4650:1048:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compareNames","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9781,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9627,"name":"ElementaryTypeName","src":"5726:5:10"}],"id":9628,"name":"VariableDeclaration","src":"5726:17:10"},{"attributes":{"constant":false,"name":"other","scope":9781,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9629,"name":"ElementaryTypeName","src":"5745:5:10"}],"id":9630,"name":"VariableDeclaration","src":"5745:18:10"}],"id":9631,"name":"ParameterList","src":"5725:39:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9781,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":9632,"name":"ElementaryTypeName","src":"5788:3:10"}],"id":9633,"name":"VariableDeclaration","src":"5788:3:10"}],"id":9634,"name":"ParameterList","src":"5787:5:10"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":10092,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9635,"name":"Identifier","src":"5807:4:10"}],"id":9636,"name":"MemberAccess","src":"5807:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9637,"name":"Identifier","src":"5819:5:10"}],"id":9638,"name":"FunctionCall","src":"5807:18:10"},{"children":[{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9639,"name":"Literal","src":"5848:1:10"}],"id":9640,"name":"Return","src":"5841:8:10"}],"id":9641,"name":"Block","src":"5827:33:10"}],"id":9642,"name":"IfStatement","src":"5803:57:10"},{"attributes":{"assignments":[9644],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"off","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9643,"name":"ElementaryTypeName","src":"5870:4:10"}],"id":9644,"name":"VariableDeclaration","src":"5870:8:10"}],"id":9645,"name":"VariableDeclarationStatement","src":"5870:8:10"},{"attributes":{"assignments":[9647],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otheroff","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9646,"name":"ElementaryTypeName","src":"5888:4:10"}],"id":9647,"name":"VariableDeclaration","src":"5888:13:10"}],"id":9648,"name":"VariableDeclarationStatement","src":"5888:13:10"},{"attributes":{"assignments":[9650],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"prevoff","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9649,"name":"ElementaryTypeName","src":"5911:4:10"}],"id":9650,"name":"VariableDeclaration","src":"5911:12:10"}],"id":9651,"name":"VariableDeclarationStatement","src":"5911:12:10"},{"attributes":{"assignments":[9653],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"otherprevoff","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9652,"name":"ElementaryTypeName","src":"5933:4:10"}],"id":9653,"name":"VariableDeclaration","src":"5933:17:10"}],"id":9654,"name":"VariableDeclarationStatement","src":"5933:17:10"},{"attributes":{"assignments":[9656]},"children":[{"attributes":{"constant":false,"name":"counts","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9655,"name":"ElementaryTypeName","src":"5960:4:10"}],"id":9656,"name":"VariableDeclaration","src":"5960:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":9307,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9657,"name":"Identifier","src":"5974:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9658,"name":"Identifier","src":"5985:4:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9659,"name":"Literal","src":"5991:1:10"}],"id":9660,"name":"FunctionCall","src":"5974:19:10"}],"id":9661,"name":"VariableDeclarationStatement","src":"5960:33:10"},{"attributes":{"assignments":[9663]},"children":[{"attributes":{"constant":false,"name":"othercounts","scope":9780,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9662,"name":"ElementaryTypeName","src":"6003:4:10"}],"id":9663,"name":"VariableDeclaration","src":"6003:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"overloadedDeclarations":[null],"referencedDeclaration":9307,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"labelCount"},"id":9664,"name":"Identifier","src":"6022:10:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9665,"name":"Identifier","src":"6033:5:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9666,"name":"Literal","src":"6040:1:10"}],"id":9667,"name":"FunctionCall","src":"6022:20:10"}],"id":9668,"name":"VariableDeclarationStatement","src":"6003:39:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9669,"name":"Identifier","src":"6153:6:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9663,"type":"uint256","value":"othercounts"},"id":9670,"name":"Identifier","src":"6162:11:10"}],"id":9671,"name":"BinaryOperation","src":"6153:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9650,"type":"uint256","value":"prevoff"},"id":9672,"name":"Identifier","src":"6189:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9673,"name":"Identifier","src":"6199:3:10"}],"id":9674,"name":"Assignment","src":"6189:13:10"}],"id":9675,"name":"ExpressionStatement","src":"6189:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9676,"name":"Identifier","src":"6216:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9800,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9677,"name":"Identifier","src":"6222:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9678,"name":"Identifier","src":"6231:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9679,"name":"Identifier","src":"6237:3:10"}],"id":9680,"name":"FunctionCall","src":"6222:19:10"}],"id":9681,"name":"Assignment","src":"6216:25:10"}],"id":9682,"name":"ExpressionStatement","src":"6216:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9683,"name":"Identifier","src":"6255:6:10"}],"id":9684,"name":"UnaryOperation","src":"6255:8:10"}],"id":9685,"name":"ExpressionStatement","src":"6255:8:10"}],"id":9686,"name":"Block","src":"6175:99:10"}],"id":9687,"name":"WhileStatement","src":"6146:128:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9663,"type":"uint256","value":"othercounts"},"id":9688,"name":"Identifier","src":"6291:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9689,"name":"Identifier","src":"6305:6:10"}],"id":9690,"name":"BinaryOperation","src":"6291:20:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"otherprevoff"},"id":9691,"name":"Identifier","src":"6327:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9692,"name":"Identifier","src":"6342:8:10"}],"id":9693,"name":"Assignment","src":"6327:23:10"}],"id":9694,"name":"ExpressionStatement","src":"6327:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9695,"name":"Identifier","src":"6364:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9800,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9696,"name":"Identifier","src":"6375:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9697,"name":"Identifier","src":"6384:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9698,"name":"Identifier","src":"6391:8:10"}],"id":9699,"name":"FunctionCall","src":"6375:25:10"}],"id":9700,"name":"Assignment","src":"6364:36:10"}],"id":9701,"name":"ExpressionStatement","src":"6364:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9663,"type":"uint256","value":"othercounts"},"id":9702,"name":"Identifier","src":"6414:11:10"}],"id":9703,"name":"UnaryOperation","src":"6414:13:10"}],"id":9704,"name":"ExpressionStatement","src":"6414:13:10"}],"id":9705,"name":"Block","src":"6313:125:10"}],"id":9706,"name":"WhileStatement","src":"6284:154:10"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9707,"name":"Identifier","src":"6513:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9708,"name":"Literal","src":"6522:1:10"}],"id":9709,"name":"BinaryOperation","src":"6513:10:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":10038,"type":"function (bytes memory,uint256,bytes memory,uint256) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9710,"name":"Identifier","src":"6528:4:10"}],"id":9711,"name":"MemberAccess","src":"6528:11:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9712,"name":"Identifier","src":"6540:3:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9713,"name":"Identifier","src":"6545:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9714,"name":"Identifier","src":"6552:8:10"}],"id":9715,"name":"FunctionCall","src":"6528:33:10"}],"id":9716,"name":"UnaryOperation","src":"6527:34:10"}],"id":9717,"name":"BinaryOperation","src":"6513:48:10"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9650,"type":"uint256","value":"prevoff"},"id":9718,"name":"Identifier","src":"6577:7:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9719,"name":"Identifier","src":"6587:3:10"}],"id":9720,"name":"Assignment","src":"6577:13:10"}],"id":9721,"name":"ExpressionStatement","src":"6577:13:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9722,"name":"Identifier","src":"6604:3:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9800,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9723,"name":"Identifier","src":"6610:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9724,"name":"Identifier","src":"6619:4:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9725,"name":"Identifier","src":"6625:3:10"}],"id":9726,"name":"FunctionCall","src":"6610:19:10"}],"id":9727,"name":"Assignment","src":"6604:25:10"}],"id":9728,"name":"ExpressionStatement","src":"6604:25:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"otherprevoff"},"id":9729,"name":"Identifier","src":"6643:12:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9730,"name":"Identifier","src":"6658:8:10"}],"id":9731,"name":"Assignment","src":"6643:23:10"}],"id":9732,"name":"ExpressionStatement","src":"6643:23:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9733,"name":"Identifier","src":"6680:8:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":9800,"type":"function (bytes memory,uint256) pure returns (uint256)","value":"progress"},"id":9734,"name":"Identifier","src":"6691:8:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9735,"name":"Identifier","src":"6700:5:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9736,"name":"Identifier","src":"6707:8:10"}],"id":9737,"name":"FunctionCall","src":"6691:25:10"}],"id":9738,"name":"Assignment","src":"6680:36:10"}],"id":9739,"name":"ExpressionStatement","src":"6680:36:10"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9656,"type":"uint256","value":"counts"},"id":9740,"name":"Identifier","src":"6730:6:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9741,"name":"Literal","src":"6740:1:10"}],"id":9742,"name":"Assignment","src":"6730:11:10"}],"id":9743,"name":"ExpressionStatement","src":"6730:11:10"}],"id":9744,"name":"Block","src":"6563:189:10"}],"id":9745,"name":"WhileStatement","src":"6506:246:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9644,"type":"uint256","value":"off"},"id":9746,"name":"Identifier","src":"6766:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9747,"name":"Literal","src":"6773:1:10"}],"id":9748,"name":"BinaryOperation","src":"6766:8:10"},{"children":[{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9749,"name":"Literal","src":"6798:1:10"}],"id":9750,"name":"UnaryOperation","src":"6797:2:10"}],"id":9751,"name":"Return","src":"6790:9:10"}],"id":9752,"name":"Block","src":"6776:34:10"}],"id":9753,"name":"IfStatement","src":"6762:48:10"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9647,"type":"uint256","value":"otheroff"},"id":9754,"name":"Identifier","src":"6822:8:10"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":9755,"name":"Literal","src":"6834:1:10"}],"id":9756,"name":"BinaryOperation","src":"6822:13:10"},{"children":[{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9757,"name":"Literal","src":"6858:1:10"}],"id":9758,"name":"Return","src":"6851:8:10"}],"id":9759,"name":"Block","src":"6837:33:10"}],"id":9760,"name":"IfStatement","src":"6819:51:10"},{"attributes":{"functionReturnParameters":9634},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint8","typeString":"uint8"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"compare","referencedDeclaration":9978,"type":"function (bytes memory,uint256,uint256,bytes memory,uint256,uint256) pure returns (int256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9761,"name":"Identifier","src":"6887:4:10"}],"id":9762,"name":"MemberAccess","src":"6887:12:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9650,"type":"uint256","value":"prevoff"},"id":9763,"name":"Identifier","src":"6900:7:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9764,"name":"Literal","src":"6910:1:10"}],"id":9765,"name":"BinaryOperation","src":"6900:11:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9628,"type":"bytes memory","value":"self"},"id":9766,"name":"Identifier","src":"6913:4:10"}],"id":9767,"name":"MemberAccess","src":"6913:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9650,"type":"uint256","value":"prevoff"},"id":9768,"name":"Identifier","src":"6928:7:10"}],"id":9769,"name":"FunctionCall","src":"6913:23:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9770,"name":"Identifier","src":"6938:5:10"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"otherprevoff"},"id":9771,"name":"Identifier","src":"6945:12:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9772,"name":"Literal","src":"6960:1:10"}],"id":9773,"name":"BinaryOperation","src":"6945:16:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9630,"type":"bytes memory","value":"other"},"id":9774,"name":"Identifier","src":"6963:5:10"}],"id":9775,"name":"MemberAccess","src":"6963:15:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9653,"type":"uint256","value":"otherprevoff"},"id":9776,"name":"Identifier","src":"6979:12:10"}],"id":9777,"name":"FunctionCall","src":"6963:29:10"}],"id":9778,"name":"FunctionCall","src":"6887:106:10"}],"id":9779,"name":"Return","src":"6880:113:10"}],"id":9780,"name":"Block","src":"5793:1207:10"}],"id":9781,"name":"FunctionDefinition","src":"5704:1296:10"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"progress","scope":9801,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"body","scope":9800,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9782,"name":"ElementaryTypeName","src":"7024:5:10"}],"id":9783,"name":"VariableDeclaration","src":"7024:17:10"},{"attributes":{"constant":false,"name":"off","scope":9800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9784,"name":"ElementaryTypeName","src":"7043:4:10"}],"id":9785,"name":"VariableDeclaration","src":"7043:8:10"}],"id":9786,"name":"ParameterList","src":"7023:29:10"},{"children":[{"attributes":{"constant":false,"name":"","scope":9800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":9787,"name":"ElementaryTypeName","src":"7075:4:10"}],"id":9788,"name":"VariableDeclaration","src":"7075:4:10"}],"id":9789,"name":"ParameterList","src":"7074:6:10"},{"children":[{"attributes":{"functionReturnParameters":9789},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9785,"type":"uint256","value":"off"},"id":9790,"name":"Identifier","src":"7098:3:10"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":9791,"name":"Literal","src":"7104:1:10"}],"id":9792,"name":"BinaryOperation","src":"7098:7:10"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint8","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"readUint8","referencedDeclaration":10108,"type":"function (bytes memory,uint256) pure returns (uint8)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9783,"type":"bytes memory","value":"body"},"id":9793,"name":"Identifier","src":"7108:4:10"}],"id":9794,"name":"MemberAccess","src":"7108:14:10"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9785,"type":"uint256","value":"off"},"id":9795,"name":"Identifier","src":"7123:3:10"}],"id":9796,"name":"FunctionCall","src":"7108:19:10"}],"id":9797,"name":"BinaryOperation","src":"7098:29:10"}],"id":9798,"name":"Return","src":"7091:36:10"}],"id":9799,"name":"Block","src":"7081:53:10"}],"id":9800,"name":"FunctionDefinition","src":"7006:128:10"}],"id":9801,"name":"ContractDefinition","src":"150:6986:10"}],"id":9802,"name":"SourceUnit","src":"0:7137:10"}},"externals/ens/ResolverBase.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/ResolverBase.sol","exportedSymbols":{"ResolverBase":[9183]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":9116,"name":"PragmaDirective","src":"0:23:11"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[9183],"name":"ResolverBase","scope":9184},"children":[{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":9183,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9117,"name":"ElementaryTypeName","src":"53:6:11"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":9118,"name":"Literal","src":"97:10:11"}],"id":9119,"name":"VariableDeclaration","src":"53:54:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":9183,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":9131,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9120,"name":"ElementaryTypeName","src":"141:6:11"}],"id":9121,"name":"VariableDeclaration","src":"141:18:11"}],"id":9122,"name":"ParameterList","src":"140:20:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":9131,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9123,"name":"ElementaryTypeName","src":"181:4:11"}],"id":9124,"name":"VariableDeclaration","src":"181:4:11"}],"id":9125,"name":"ParameterList","src":"180:6:11"},{"children":[{"attributes":{"functionReturnParameters":9125},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9121,"type":"bytes4","value":"interfaceID"},"id":9126,"name":"Identifier","src":"204:11:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9119,"type":"bytes4","value":"INTERFACE_META_ID"},"id":9127,"name":"Identifier","src":"219:17:11"}],"id":9128,"name":"BinaryOperation","src":"204:32:11"}],"id":9129,"name":"Return","src":"197:39:11"}],"id":9130,"name":"Block","src":"187:56:11"}],"id":9131,"name":"FunctionDefinition","src":"114:129:11"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isAuthorised","scope":9183,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":9138,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9132,"name":"ElementaryTypeName","src":"271:7:11"}],"id":9133,"name":"VariableDeclaration","src":"271:12:11"}],"id":9134,"name":"ParameterList","src":"270:14:11"},{"children":[{"attributes":{"constant":false,"name":"","scope":9138,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":9135,"name":"ElementaryTypeName","src":"307:4:11"}],"id":9136,"name":"VariableDeclaration","src":"307:4:11"}],"id":9137,"name":"ParameterList","src":"306:6:11"}],"id":9138,"name":"FunctionDefinition","src":"249:64:11"},{"attributes":{"documentation":null,"name":"authorised","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":9150,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":9139,"name":"ElementaryTypeName","src":"339:7:11"}],"id":9140,"name":"VariableDeclaration","src":"339:12:11"}],"id":9141,"name":"ParameterList","src":"338:14:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":9142,"name":"Identifier","src":"363:7:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":9138,"type":"function (bytes32) view returns (bool)","value":"isAuthorised"},"id":9143,"name":"Identifier","src":"371:12:11"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9140,"type":"bytes32","value":"node"},"id":9144,"name":"Identifier","src":"384:4:11"}],"id":9145,"name":"FunctionCall","src":"371:18:11"}],"id":9146,"name":"FunctionCall","src":"363:27:11"}],"id":9147,"name":"ExpressionStatement","src":"363:27:11"},{"id":9148,"name":"PlaceholderStatement","src":"400:1:11"}],"id":9149,"name":"Block","src":"353:55:11"}],"id":9150,"name":"ModifierDefinition","src":"319:89:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"bytesToAddress","scope":9183,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"b","scope":9166,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9151,"name":"ElementaryTypeName","src":"438:5:11"}],"id":9152,"name":"VariableDeclaration","src":"438:14:11"}],"id":9153,"name":"ParameterList","src":"437:16:11"},{"children":[{"attributes":{"constant":false,"name":"a","scope":9166,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":9154,"name":"ElementaryTypeName","src":"476:15:11"}],"id":9155,"name":"VariableDeclaration","src":"476:17:11"}],"id":9156,"name":"ParameterList","src":"475:19:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":9157,"name":"Identifier","src":"505:7:11"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9152,"type":"bytes memory","value":"b"},"id":9158,"name":"Identifier","src":"513:1:11"}],"id":9159,"name":"MemberAccess","src":"513:8:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9160,"name":"Literal","src":"525:2:11"}],"id":9161,"name":"BinaryOperation","src":"513:14:11"}],"id":9162,"name":"FunctionCall","src":"505:23:11"}],"id":9163,"name":"ExpressionStatement","src":"505:23:11"},{"attributes":{"externalReferences":[{"a":{"declaration":9155,"isOffset":false,"isSlot":false,"src":"561:1:11","valueSize":1}},{"b":{"declaration":9152,"isOffset":false,"isSlot":false,"src":"580:1:11","valueSize":1}}],"operations":"{\n a := div(mload(add(b, 32)), exp(256, 12))\n}"},"children":[],"id":9164,"name":"InlineAssembly","src":"538:74:11"}],"id":9165,"name":"Block","src":"495:123:11"}],"id":9166,"name":"FunctionDefinition","src":"414:204:11"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addressToBytes","scope":9183,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"a","scope":9182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9167,"name":"ElementaryTypeName","src":"648:7:11"}],"id":9168,"name":"VariableDeclaration","src":"648:9:11"}],"id":9169,"name":"ParameterList","src":"647:11:11"},{"children":[{"attributes":{"constant":false,"name":"b","scope":9182,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9170,"name":"ElementaryTypeName","src":"681:5:11"}],"id":9171,"name":"VariableDeclaration","src":"681:14:11"}],"id":9172,"name":"ParameterList","src":"680:16:11"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9171,"type":"bytes memory","value":"b"},"id":9173,"name":"Identifier","src":"707:1:11"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9174,"name":"ElementaryTypeName","src":"715:5:11"}],"id":9175,"name":"NewExpression","src":"711:9:11"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9176,"name":"Literal","src":"721:2:11"}],"id":9177,"name":"FunctionCall","src":"711:13:11"}],"id":9178,"name":"Assignment","src":"707:17:11"}],"id":9179,"name":"ExpressionStatement","src":"707:17:11"},{"attributes":{"externalReferences":[{"b":{"declaration":9171,"isOffset":false,"isSlot":false,"src":"768:1:11","valueSize":1}},{"a":{"declaration":9168,"isOffset":false,"isSlot":false,"src":"780:1:11","valueSize":1}}],"operations":"{\n mstore(add(b, 32), mul(a, exp(256, 12)))\n}"},"children":[],"id":9180,"name":"InlineAssembly","src":"734:73:11"}],"id":9181,"name":"Block","src":"697:116:11"}],"id":9182,"name":"FunctionDefinition","src":"624:189:11"}],"id":9183,"name":"ContractDefinition","src":"25:790:11"}],"id":9184,"name":"SourceUnit","src":"0:816:11"}},"externals/ens/profiles/ABIResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ABIResolver.sol","exportedSymbols":{"ABIResolver":[6146]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6012,"name":"PragmaDirective","src":"0:23:12"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6147,"symbolAliases":[null],"unitAlias":""},"id":6013,"name":"ImportDirective","src":"25:29:12"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6146,9183],"name":"ABIResolver","scope":6147},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6014,"name":"UserDefinedTypeName","src":"80:12:12"}],"id":6015,"name":"InheritanceSpecifier","src":"80:12:12"},{"attributes":{"constant":true,"name":"ABI_INTERFACE_ID","scope":6146,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6016,"name":"ElementaryTypeName","src":"99:6:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30783232303361623536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 570665814","value":"0x2203ab56"},"id":6017,"name":"Literal","src":"142:10:12"}],"id":6018,"name":"VariableDeclaration","src":"99:53:12"},{"attributes":{"anonymous":false,"documentation":null,"name":"ABIChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6024,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6019,"name":"ElementaryTypeName","src":"176:7:12"}],"id":6020,"name":"VariableDeclaration","src":"176:20:12"},{"attributes":{"constant":false,"indexed":true,"name":"contentType","scope":6024,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6021,"name":"ElementaryTypeName","src":"198:7:12"}],"id":6022,"name":"VariableDeclaration","src":"198:27:12"}],"id":6023,"name":"ParameterList","src":"175:51:12"}],"id":6024,"name":"EventDefinition","src":"159:68:12"},{"attributes":{"constant":false,"name":"abis","scope":6146,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6025,"name":"ElementaryTypeName","src":"241:7:12"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6026,"name":"ElementaryTypeName","src":"258:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":6027,"name":"ElementaryTypeName","src":"267:5:12"}],"id":6028,"name":"Mapping","src":"250:23:12"}],"id":6029,"name":"Mapping","src":"233:41:12"}],"id":6030,"name":"VariableDeclaration","src":"233:46:12"},{"attributes":{"documentation":"Sets the ABI associated with an ENS node.\nNodes may have one ABI of each content type. To remove an ABI, set it to\nthe empty string.\n@param node The node to update.\n@param contentType The content type of the ABI\n@param data The ABI data.","implemented":true,"isConstructor":false,"kind":"function","name":"setABI","scope":6146,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6068,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6031,"name":"ElementaryTypeName","src":"598:7:12"}],"id":6032,"name":"VariableDeclaration","src":"598:12:12"},{"attributes":{"constant":false,"name":"contentType","scope":6068,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6033,"name":"ElementaryTypeName","src":"612:7:12"}],"id":6034,"name":"VariableDeclaration","src":"612:19:12"},{"attributes":{"constant":false,"name":"data","scope":6068,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6035,"name":"ElementaryTypeName","src":"633:5:12"}],"id":6036,"name":"VariableDeclaration","src":"633:19:12"}],"id":6037,"name":"ParameterList","src":"597:56:12"},{"attributes":{"parameters":[null]},"children":[],"id":6041,"name":"ParameterList","src":"680:0:12"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6038,"name":"Identifier","src":"663:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6032,"type":"bytes32","value":"node"},"id":6039,"name":"Identifier","src":"674:4:12"}],"id":6040,"name":"ModifierInvocation","src":"663:16:12"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10540,"type":"function (bool) pure","value":"require"},"id":6042,"name":"Identifier","src":"735:7:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"contentType"},"id":6043,"name":"Identifier","src":"745:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6044,"name":"Literal","src":"759:1:12"}],"id":6045,"name":"BinaryOperation","src":"745:15:12"}],"id":6046,"name":"TupleExpression","src":"744:17:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"contentType"},"id":6047,"name":"Identifier","src":"764:11:12"}],"id":6048,"name":"BinaryOperation","src":"744:31:12"}],"id":6049,"name":"TupleExpression","src":"743:33:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6050,"name":"Literal","src":"780:1:12"}],"id":6051,"name":"BinaryOperation","src":"743:38:12"}],"id":6052,"name":"FunctionCall","src":"735:47:12"}],"id":6053,"name":"ExpressionStatement","src":"735:47:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":6054,"name":"Identifier","src":"793:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6032,"type":"bytes32","value":"node"},"id":6055,"name":"Identifier","src":"798:4:12"}],"id":6057,"name":"IndexAccess","src":"793:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"contentType"},"id":6056,"name":"Identifier","src":"804:11:12"}],"id":6058,"name":"IndexAccess","src":"793:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6036,"type":"bytes calldata","value":"data"},"id":6059,"name":"Identifier","src":"819:4:12"}],"id":6060,"name":"Assignment","src":"793:30:12"}],"id":6061,"name":"ExpressionStatement","src":"793:30:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":6024,"type":"function (bytes32,uint256)","value":"ABIChanged"},"id":6062,"name":"Identifier","src":"838:10:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6032,"type":"bytes32","value":"node"},"id":6063,"name":"Identifier","src":"849:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6034,"type":"uint256","value":"contentType"},"id":6064,"name":"Identifier","src":"855:11:12"}],"id":6065,"name":"FunctionCall","src":"838:29:12"}],"id":6066,"name":"EmitStatement","src":"833:34:12"}],"id":6067,"name":"Block","src":"680:194:12"}],"id":6068,"name":"FunctionDefinition","src":"582:292:12"},{"attributes":{"documentation":"Returns the ABI associated with an ENS node.\nDefined in EIP205.\n@param node The ENS node to query\n@param contentTypes A bitwise OR of the ABI formats accepted by the caller.\n@return contentType The content type of the return value\n@return data The ABI data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ABI","scope":6146,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6128,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6069,"name":"ElementaryTypeName","src":"1208:7:12"}],"id":6070,"name":"VariableDeclaration","src":"1208:12:12"},{"attributes":{"constant":false,"name":"contentTypes","scope":6128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6071,"name":"ElementaryTypeName","src":"1222:7:12"}],"id":6072,"name":"VariableDeclaration","src":"1222:20:12"}],"id":6073,"name":"ParameterList","src":"1207:36:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":6128,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6074,"name":"ElementaryTypeName","src":"1267:7:12"}],"id":6075,"name":"VariableDeclaration","src":"1267:7:12"},{"attributes":{"constant":false,"name":"","scope":6128,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6076,"name":"ElementaryTypeName","src":"1276:5:12"}],"id":6077,"name":"VariableDeclaration","src":"1276:12:12"}],"id":6078,"name":"ParameterList","src":"1266:23:12"},{"children":[{"attributes":{"assignments":[6082]},"children":[{"attributes":{"constant":false,"name":"abiset","scope":6127,"stateVariable":false,"storageLocation":"storage","type":"mapping(uint256 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6079,"name":"ElementaryTypeName","src":"1308:7:12"},{"attributes":{"name":"bytes","type":"bytes"},"id":6080,"name":"ElementaryTypeName","src":"1317:5:12"}],"id":6081,"name":"Mapping","src":"1300:23:12"}],"id":6082,"name":"VariableDeclaration","src":"1300:38:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6030,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"abis"},"id":6083,"name":"Identifier","src":"1341:4:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6070,"type":"bytes32","value":"node"},"id":6084,"name":"Identifier","src":"1346:4:12"}],"id":6085,"name":"IndexAccess","src":"1341:10:12"}],"id":6086,"name":"VariableDeclarationStatement","src":"1300:51:12"},{"children":[{"attributes":{"assignments":[6088]},"children":[{"attributes":{"constant":false,"name":"contentType","scope":6120,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6087,"name":"ElementaryTypeName","src":"1367:7:12"}],"id":6088,"name":"VariableDeclaration","src":"1367:19:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6089,"name":"Literal","src":"1389:1:12"}],"id":6090,"name":"VariableDeclarationStatement","src":"1367:23:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6091,"name":"Identifier","src":"1392:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6072,"type":"uint256","value":"contentTypes"},"id":6092,"name":"Identifier","src":"1407:12:12"}],"id":6093,"name":"BinaryOperation","src":"1392:27:12"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<<=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6094,"name":"Identifier","src":"1421:11:12"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":6095,"name":"Literal","src":"1437:1:12"}],"id":6096,"name":"Assignment","src":"1421:17:12"}],"id":6097,"name":"ExpressionStatement","src":"1421:17:12"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6098,"name":"Identifier","src":"1459:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6072,"type":"uint256","value":"contentTypes"},"id":6099,"name":"Identifier","src":"1473:12:12"}],"id":6100,"name":"BinaryOperation","src":"1459:26:12"}],"id":6101,"name":"TupleExpression","src":"1458:28:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6102,"name":"Literal","src":"1490:1:12"}],"id":6103,"name":"BinaryOperation","src":"1458:33:12"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6082,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":6104,"name":"Identifier","src":"1495:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6105,"name":"Identifier","src":"1502:11:12"}],"id":6106,"name":"IndexAccess","src":"1495:19:12"}],"id":6107,"name":"MemberAccess","src":"1495:26:12"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6108,"name":"Literal","src":"1524:1:12"}],"id":6109,"name":"BinaryOperation","src":"1495:30:12"}],"id":6110,"name":"BinaryOperation","src":"1458:67:12"},{"children":[{"attributes":{"functionReturnParameters":6078},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(uint256,bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6111,"name":"Identifier","src":"1553:11:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6082,"type":"mapping(uint256 => bytes storage ref)","value":"abiset"},"id":6112,"name":"Identifier","src":"1566:6:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6088,"type":"uint256","value":"contentType"},"id":6113,"name":"Identifier","src":"1573:11:12"}],"id":6114,"name":"IndexAccess","src":"1566:19:12"}],"id":6115,"name":"TupleExpression","src":"1552:34:12"}],"id":6116,"name":"Return","src":"1545:41:12"}],"id":6117,"name":"Block","src":"1527:74:12"}],"id":6118,"name":"IfStatement","src":"1454:147:12"}],"id":6119,"name":"Block","src":"1440:171:12"}],"id":6120,"name":"ForStatement","src":"1362:249:12"},{"attributes":{"functionReturnParameters":6078},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"tuple(int_const 0,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6121,"name":"Literal","src":"1629:1:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6122,"name":"ElementaryTypeNameExpression","src":"1632:5:12"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":6123,"name":"Literal","src":"1638:2:12"}],"id":6124,"name":"FunctionCall","src":"1632:9:12"}],"id":6125,"name":"TupleExpression","src":"1628:14:12"}],"id":6126,"name":"Return","src":"1621:21:12"}],"id":6127,"name":"Block","src":"1290:359:12"}],"id":6128,"name":"FunctionDefinition","src":"1195:454:12"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6146,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6145,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6129,"name":"ElementaryTypeName","src":"1682:6:12"}],"id":6130,"name":"VariableDeclaration","src":"1682:18:12"}],"id":6131,"name":"ParameterList","src":"1681:20:12"},{"children":[{"attributes":{"constant":false,"name":"","scope":6145,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6132,"name":"ElementaryTypeName","src":"1722:4:12"}],"id":6133,"name":"VariableDeclaration","src":"1722:4:12"}],"id":6134,"name":"ParameterList","src":"1721:6:12"},{"children":[{"attributes":{"functionReturnParameters":6134},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6130,"type":"bytes4","value":"interfaceID"},"id":6135,"name":"Identifier","src":"1745:11:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6018,"type":"bytes4","value":"ABI_INTERFACE_ID"},"id":6136,"name":"Identifier","src":"1760:16:12"}],"id":6137,"name":"BinaryOperation","src":"1745:31:12"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10578,"type":"contract super ABIResolver","value":"super"},"id":6138,"name":"Identifier","src":"1780:5:12"}],"id":6139,"name":"MemberAccess","src":"1780:23:12"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6130,"type":"bytes4","value":"interfaceID"},"id":6140,"name":"Identifier","src":"1804:11:12"}],"id":6141,"name":"FunctionCall","src":"1780:36:12"}],"id":6142,"name":"BinaryOperation","src":"1745:71:12"}],"id":6143,"name":"Return","src":"1738:78:12"}],"id":6144,"name":"Block","src":"1728:95:12"}],"id":6145,"name":"FunctionDefinition","src":"1655:168:12"}],"id":6146,"name":"ContractDefinition","src":"56:1769:12"}],"id":6147,"name":"SourceUnit","src":"0:1826:12"}},"externals/ens/profiles/AddrResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/AddrResolver.sol","exportedSymbols":{"AddrResolver":[6305]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6148,"name":"PragmaDirective","src":"0:23:13"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6306,"symbolAliases":[null],"unitAlias":""},"id":6149,"name":"ImportDirective","src":"25:29:13"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6305,9183],"name":"AddrResolver","scope":6306},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6150,"name":"UserDefinedTypeName","src":"81:12:13"}],"id":6151,"name":"InheritanceSpecifier","src":"81:12:13"},{"attributes":{"constant":true,"name":"ADDR_INTERFACE_ID","scope":6305,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6152,"name":"ElementaryTypeName","src":"100:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30783362336235376465","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 993744862","value":"0x3b3b57de"},"id":6153,"name":"Literal","src":"144:10:13"}],"id":6154,"name":"VariableDeclaration","src":"100:54:13"},{"attributes":{"constant":true,"name":"ADDRESS_INTERFACE_ID","scope":6305,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6155,"name":"ElementaryTypeName","src":"160:6:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30786631636237653036","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4056645126","value":"0xf1cb7e06"},"id":6156,"name":"Literal","src":"207:10:13"}],"id":6157,"name":"VariableDeclaration","src":"160:57:13"},{"attributes":{"constant":true,"name":"COIN_TYPE_ETH","scope":6305,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6158,"name":"ElementaryTypeName","src":"223:4:13"},{"attributes":{"argumentTypes":null,"hexvalue":"3630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 60","value":"60"},"id":6159,"name":"Literal","src":"261:2:13"}],"id":6160,"name":"VariableDeclaration","src":"223:40:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddrChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6166,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6161,"name":"ElementaryTypeName","src":"288:7:13"}],"id":6162,"name":"VariableDeclaration","src":"288:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"a","scope":6166,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6163,"name":"ElementaryTypeName","src":"310:7:13"}],"id":6164,"name":"VariableDeclaration","src":"310:9:13"}],"id":6165,"name":"ParameterList","src":"287:33:13"}],"id":6166,"name":"EventDefinition","src":"270:51:13"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddressChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6174,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6167,"name":"ElementaryTypeName","src":"347:7:13"}],"id":6168,"name":"VariableDeclaration","src":"347:20:13"},{"attributes":{"constant":false,"indexed":false,"name":"coinType","scope":6174,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6169,"name":"ElementaryTypeName","src":"369:4:13"}],"id":6170,"name":"VariableDeclaration","src":"369:13:13"},{"attributes":{"constant":false,"indexed":false,"name":"newAddress","scope":6174,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6171,"name":"ElementaryTypeName","src":"384:5:13"}],"id":6172,"name":"VariableDeclaration","src":"384:16:13"}],"id":6173,"name":"ParameterList","src":"346:55:13"}],"id":6174,"name":"EventDefinition","src":"326:76:13"},{"attributes":{"constant":false,"name":"_addresses","scope":6305,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => bytes))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6175,"name":"ElementaryTypeName","src":"416:7:13"},{"attributes":{"type":"mapping(uint256 => bytes)"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6176,"name":"ElementaryTypeName","src":"433:4:13"},{"attributes":{"name":"bytes","type":"bytes"},"id":6177,"name":"ElementaryTypeName","src":"439:5:13"}],"id":6178,"name":"Mapping","src":"425:20:13"}],"id":6179,"name":"Mapping","src":"408:38:13"}],"id":6180,"name":"VariableDeclaration","src":"408:49:13"},{"attributes":{"documentation":"Sets the address associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param a The address to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setAddr","scope":6305,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6199,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6181,"name":"ElementaryTypeName","src":"698:7:13"}],"id":6182,"name":"VariableDeclaration","src":"698:12:13"},{"attributes":{"constant":false,"name":"a","scope":6199,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6183,"name":"ElementaryTypeName","src":"712:7:13"}],"id":6184,"name":"VariableDeclaration","src":"712:9:13"}],"id":6185,"name":"ParameterList","src":"697:25:13"},{"attributes":{"parameters":[null]},"children":[],"id":6189,"name":"ParameterList","src":"749:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6186,"name":"Identifier","src":"732:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6182,"type":"bytes32","value":"node"},"id":6187,"name":"Identifier","src":"743:4:13"}],"id":6188,"name":"ModifierInvocation","src":"732:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6267,"type":"function (bytes32,uint256,bytes memory)","value":"setAddrCoinType"},"id":6190,"name":"Identifier","src":"759:15:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6182,"type":"bytes32","value":"node"},"id":6191,"name":"Identifier","src":"775:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"COIN_TYPE_ETH"},"id":6192,"name":"Identifier","src":"781:13:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":9182,"type":"function (address) pure returns (bytes memory)","value":"addressToBytes"},"id":6193,"name":"Identifier","src":"796:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6184,"type":"address","value":"a"},"id":6194,"name":"Identifier","src":"811:1:13"}],"id":6195,"name":"FunctionCall","src":"796:17:13"}],"id":6196,"name":"FunctionCall","src":"759:55:13"}],"id":6197,"name":"ExpressionStatement","src":"759:55:13"}],"id":6198,"name":"Block","src":"749:72:13"}],"id":6199,"name":"FunctionDefinition","src":"681:140:13"},{"attributes":{"documentation":"Returns the address associated with an ENS node.\n@param node The ENS node to query.\n@return The associated address.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":6305,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6228,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6200,"name":"ElementaryTypeName","src":"994:7:13"}],"id":6201,"name":"VariableDeclaration","src":"994:12:13"}],"id":6202,"name":"ParameterList","src":"993:14:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":6228,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":6203,"name":"ElementaryTypeName","src":"1029:15:13"}],"id":6204,"name":"VariableDeclaration","src":"1029:15:13"}],"id":6205,"name":"ParameterList","src":"1028:17:13"},{"children":[{"attributes":{"assignments":[6207]},"children":[{"attributes":{"constant":false,"name":"a","scope":6227,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6206,"name":"ElementaryTypeName","src":"1056:5:13"}],"id":6207,"name":"VariableDeclaration","src":"1056:14:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[6228,6283],"referencedDeclaration":6283,"type":"function (bytes32,uint256) view returns (bytes memory)","value":"addr"},"id":6208,"name":"Identifier","src":"1073:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6201,"type":"bytes32","value":"node"},"id":6209,"name":"Identifier","src":"1078:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"COIN_TYPE_ETH"},"id":6210,"name":"Identifier","src":"1084:13:13"}],"id":6211,"name":"FunctionCall","src":"1073:25:13"}],"id":6212,"name":"VariableDeclarationStatement","src":"1056:42:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6207,"type":"bytes memory","value":"a"},"id":6213,"name":"Identifier","src":"1111:1:13"}],"id":6214,"name":"MemberAccess","src":"1111:8:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6215,"name":"Literal","src":"1123:1:13"}],"id":6216,"name":"BinaryOperation","src":"1111:13:13"},{"children":[{"attributes":{"functionReturnParameters":6205},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6217,"name":"ElementaryTypeNameExpression","src":"1147:7:13"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6218,"name":"Literal","src":"1155:1:13"}],"id":6219,"name":"FunctionCall","src":"1147:10:13"}],"id":6220,"name":"Return","src":"1140:17:13"}],"id":6221,"name":"Block","src":"1126:42:13"}],"id":6222,"name":"IfStatement","src":"1108:60:13"},{"attributes":{"functionReturnParameters":6205},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9166,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":6223,"name":"Identifier","src":"1184:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6207,"type":"bytes memory","value":"a"},"id":6224,"name":"Identifier","src":"1199:1:13"}],"id":6225,"name":"FunctionCall","src":"1184:17:13"}],"id":6226,"name":"Return","src":"1177:24:13"}],"id":6227,"name":"Block","src":"1046:162:13"}],"id":6228,"name":"FunctionDefinition","src":"980:228:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","name":"setAddrCoinType","scope":6305,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6267,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6229,"name":"ElementaryTypeName","src":"1239:7:13"}],"id":6230,"name":"VariableDeclaration","src":"1239:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":6267,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6231,"name":"ElementaryTypeName","src":"1253:4:13"}],"id":6232,"name":"VariableDeclaration","src":"1253:13:13"},{"attributes":{"constant":false,"name":"a","scope":6267,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6233,"name":"ElementaryTypeName","src":"1268:5:13"}],"id":6234,"name":"VariableDeclaration","src":"1268:14:13"}],"id":6235,"name":"ParameterList","src":"1238:45:13"},{"attributes":{"parameters":[null]},"children":[],"id":6239,"name":"ParameterList","src":"1308:0:13"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6236,"name":"Identifier","src":"1291:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6230,"type":"bytes32","value":"node"},"id":6237,"name":"Identifier","src":"1302:4:13"}],"id":6238,"name":"ModifierInvocation","src":"1291:16:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6174,"type":"function (bytes32,uint256,bytes memory)","value":"AddressChanged"},"id":6240,"name":"Identifier","src":"1323:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6230,"type":"bytes32","value":"node"},"id":6241,"name":"Identifier","src":"1338:4:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6232,"type":"uint256","value":"coinType"},"id":6242,"name":"Identifier","src":"1344:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes memory","value":"a"},"id":6243,"name":"Identifier","src":"1354:1:13"}],"id":6244,"name":"FunctionCall","src":"1323:33:13"}],"id":6245,"name":"EmitStatement","src":"1318:38:13"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6232,"type":"uint256","value":"coinType"},"id":6246,"name":"Identifier","src":"1369:8:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6160,"type":"uint256","value":"COIN_TYPE_ETH"},"id":6247,"name":"Identifier","src":"1381:13:13"}],"id":6248,"name":"BinaryOperation","src":"1369:25:13"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":6166,"type":"function (bytes32,address)","value":"AddrChanged"},"id":6249,"name":"Identifier","src":"1415:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6230,"type":"bytes32","value":"node"},"id":6250,"name":"Identifier","src":"1427:4:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":9166,"type":"function (bytes memory) pure returns (address payable)","value":"bytesToAddress"},"id":6251,"name":"Identifier","src":"1433:14:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes memory","value":"a"},"id":6252,"name":"Identifier","src":"1448:1:13"}],"id":6253,"name":"FunctionCall","src":"1433:17:13"}],"id":6254,"name":"FunctionCall","src":"1415:36:13"}],"id":6255,"name":"EmitStatement","src":"1410:41:13"}],"id":6256,"name":"Block","src":"1396:66:13"}],"id":6257,"name":"IfStatement","src":"1366:96:13"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6180,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":6258,"name":"Identifier","src":"1471:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6230,"type":"bytes32","value":"node"},"id":6259,"name":"Identifier","src":"1482:4:13"}],"id":6261,"name":"IndexAccess","src":"1471:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6232,"type":"uint256","value":"coinType"},"id":6260,"name":"Identifier","src":"1488:8:13"}],"id":6262,"name":"IndexAccess","src":"1471:26:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6234,"type":"bytes memory","value":"a"},"id":6263,"name":"Identifier","src":"1500:1:13"}],"id":6264,"name":"Assignment","src":"1471:30:13"}],"id":6265,"name":"ExpressionStatement","src":"1471:30:13"}],"id":6266,"name":"Block","src":"1308:200:13"}],"id":6267,"name":"FunctionDefinition","src":"1214:294:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"addr","scope":6305,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6283,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6268,"name":"ElementaryTypeName","src":"1528:7:13"}],"id":6269,"name":"VariableDeclaration","src":"1528:12:13"},{"attributes":{"constant":false,"name":"coinType","scope":6283,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":6270,"name":"ElementaryTypeName","src":"1542:4:13"}],"id":6271,"name":"VariableDeclaration","src":"1542:13:13"}],"id":6272,"name":"ParameterList","src":"1527:29:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":6283,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6273,"name":"ElementaryTypeName","src":"1577:5:13"}],"id":6274,"name":"VariableDeclaration","src":"1577:12:13"}],"id":6275,"name":"ParameterList","src":"1576:14:13"},{"children":[{"attributes":{"functionReturnParameters":6275},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6180,"type":"mapping(bytes32 => mapping(uint256 => bytes storage ref))","value":"_addresses"},"id":6276,"name":"Identifier","src":"1608:10:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6269,"type":"bytes32","value":"node"},"id":6277,"name":"Identifier","src":"1619:4:13"}],"id":6278,"name":"IndexAccess","src":"1608:16:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6271,"type":"uint256","value":"coinType"},"id":6279,"name":"Identifier","src":"1625:8:13"}],"id":6280,"name":"IndexAccess","src":"1608:26:13"}],"id":6281,"name":"Return","src":"1601:33:13"}],"id":6282,"name":"Block","src":"1591:50:13"}],"id":6283,"name":"FunctionDefinition","src":"1514:127:13"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6305,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6304,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6284,"name":"ElementaryTypeName","src":"1674:6:13"}],"id":6285,"name":"VariableDeclaration","src":"1674:18:13"}],"id":6286,"name":"ParameterList","src":"1673:20:13"},{"children":[{"attributes":{"constant":false,"name":"","scope":6304,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6287,"name":"ElementaryTypeName","src":"1714:4:13"}],"id":6288,"name":"VariableDeclaration","src":"1714:4:13"}],"id":6289,"name":"ParameterList","src":"1713:6:13"},{"children":[{"attributes":{"functionReturnParameters":6289},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6285,"type":"bytes4","value":"interfaceID"},"id":6290,"name":"Identifier","src":"1737:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6154,"type":"bytes4","value":"ADDR_INTERFACE_ID"},"id":6291,"name":"Identifier","src":"1752:17:13"}],"id":6292,"name":"BinaryOperation","src":"1737:32:13"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6285,"type":"bytes4","value":"interfaceID"},"id":6293,"name":"Identifier","src":"1773:11:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6157,"type":"bytes4","value":"ADDRESS_INTERFACE_ID"},"id":6294,"name":"Identifier","src":"1788:20:13"}],"id":6295,"name":"BinaryOperation","src":"1773:35:13"}],"id":6296,"name":"BinaryOperation","src":"1737:71:13"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10580,"type":"contract super AddrResolver","value":"super"},"id":6297,"name":"Identifier","src":"1812:5:13"}],"id":6298,"name":"MemberAccess","src":"1812:23:13"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6285,"type":"bytes4","value":"interfaceID"},"id":6299,"name":"Identifier","src":"1836:11:13"}],"id":6300,"name":"FunctionCall","src":"1812:36:13"}],"id":6301,"name":"BinaryOperation","src":"1737:111:13"}],"id":6302,"name":"Return","src":"1730:118:13"}],"id":6303,"name":"Block","src":"1720:135:13"}],"id":6304,"name":"FunctionDefinition","src":"1647:208:13"}],"id":6305,"name":"ContractDefinition","src":"56:1801:13"}],"id":6306,"name":"SourceUnit","src":"0:1857:13"}},"externals/ens/profiles/ContentHashResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/ContentHashResolver.sol","exportedSymbols":{"ContentHashResolver":[6375]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6307,"name":"PragmaDirective","src":"0:23:14"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6376,"symbolAliases":[null],"unitAlias":""},"id":6308,"name":"ImportDirective","src":"25:29:14"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6375,9183],"name":"ContentHashResolver","scope":6376},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6309,"name":"UserDefinedTypeName","src":"88:12:14"}],"id":6310,"name":"InheritanceSpecifier","src":"88:12:14"},{"attributes":{"constant":true,"name":"CONTENT_HASH_INTERFACE_ID","scope":6375,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6311,"name":"ElementaryTypeName","src":"107:6:14"},{"attributes":{"argumentTypes":null,"hexvalue":"30786263316335386431","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3155974353","value":"0xbc1c58d1"},"id":6312,"name":"Literal","src":"159:10:14"}],"id":6313,"name":"VariableDeclaration","src":"107:62:14"},{"attributes":{"anonymous":false,"documentation":null,"name":"ContenthashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6319,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6314,"name":"ElementaryTypeName","src":"201:7:14"}],"id":6315,"name":"VariableDeclaration","src":"201:20:14"},{"attributes":{"constant":false,"indexed":false,"name":"hash","scope":6319,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6316,"name":"ElementaryTypeName","src":"223:5:14"}],"id":6317,"name":"VariableDeclaration","src":"223:10:14"}],"id":6318,"name":"ParameterList","src":"200:34:14"}],"id":6319,"name":"EventDefinition","src":"176:59:14"},{"attributes":{"constant":false,"name":"hashes","scope":6375,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6320,"name":"ElementaryTypeName","src":"249:7:14"},{"attributes":{"name":"bytes","type":"bytes"},"id":6321,"name":"ElementaryTypeName","src":"258:5:14"}],"id":6322,"name":"Mapping","src":"241:23:14"}],"id":6323,"name":"VariableDeclaration","src":"241:30:14"},{"attributes":{"documentation":"Sets the contenthash associated with an ENS node.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The contenthash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setContenthash","scope":6375,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6345,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6324,"name":"ElementaryTypeName","src":"529:7:14"}],"id":6325,"name":"VariableDeclaration","src":"529:12:14"},{"attributes":{"constant":false,"name":"hash","scope":6345,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6326,"name":"ElementaryTypeName","src":"543:5:14"}],"id":6327,"name":"VariableDeclaration","src":"543:19:14"}],"id":6328,"name":"ParameterList","src":"528:35:14"},{"attributes":{"parameters":[null]},"children":[],"id":6332,"name":"ParameterList","src":"590:0:14"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6329,"name":"Identifier","src":"573:10:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"bytes32","value":"node"},"id":6330,"name":"Identifier","src":"584:4:14"}],"id":6331,"name":"ModifierInvocation","src":"573:16:14"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6323,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":6333,"name":"Identifier","src":"600:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"bytes32","value":"node"},"id":6334,"name":"Identifier","src":"607:4:14"}],"id":6335,"name":"IndexAccess","src":"600:12:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6327,"type":"bytes calldata","value":"hash"},"id":6336,"name":"Identifier","src":"615:4:14"}],"id":6337,"name":"Assignment","src":"600:19:14"}],"id":6338,"name":"ExpressionStatement","src":"600:19:14"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6319,"type":"function (bytes32,bytes memory)","value":"ContenthashChanged"},"id":6339,"name":"Identifier","src":"634:18:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6325,"type":"bytes32","value":"node"},"id":6340,"name":"Identifier","src":"653:4:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6327,"type":"bytes calldata","value":"hash"},"id":6341,"name":"Identifier","src":"659:4:14"}],"id":6342,"name":"FunctionCall","src":"634:30:14"}],"id":6343,"name":"EmitStatement","src":"629:35:14"}],"id":6344,"name":"Block","src":"590:81:14"}],"id":6345,"name":"FunctionDefinition","src":"505:166:14"},{"attributes":{"documentation":"Returns the contenthash associated with an ENS node.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contenthash","scope":6375,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6357,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6346,"name":"ElementaryTypeName","src":"859:7:14"}],"id":6347,"name":"VariableDeclaration","src":"859:12:14"}],"id":6348,"name":"ParameterList","src":"858:14:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":6357,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6349,"name":"ElementaryTypeName","src":"896:5:14"}],"id":6350,"name":"VariableDeclaration","src":"896:12:14"}],"id":6351,"name":"ParameterList","src":"895:14:14"},{"children":[{"attributes":{"functionReturnParameters":6351},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6323,"type":"mapping(bytes32 => bytes storage ref)","value":"hashes"},"id":6352,"name":"Identifier","src":"927:6:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6347,"type":"bytes32","value":"node"},"id":6353,"name":"Identifier","src":"934:4:14"}],"id":6354,"name":"IndexAccess","src":"927:12:14"}],"id":6355,"name":"Return","src":"920:19:14"}],"id":6356,"name":"Block","src":"910:36:14"}],"id":6357,"name":"FunctionDefinition","src":"838:108:14"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6375,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6374,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6358,"name":"ElementaryTypeName","src":"979:6:14"}],"id":6359,"name":"VariableDeclaration","src":"979:18:14"}],"id":6360,"name":"ParameterList","src":"978:20:14"},{"children":[{"attributes":{"constant":false,"name":"","scope":6374,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6361,"name":"ElementaryTypeName","src":"1019:4:14"}],"id":6362,"name":"VariableDeclaration","src":"1019:4:14"}],"id":6363,"name":"ParameterList","src":"1018:6:14"},{"children":[{"attributes":{"functionReturnParameters":6363},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6359,"type":"bytes4","value":"interfaceID"},"id":6364,"name":"Identifier","src":"1042:11:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6313,"type":"bytes4","value":"CONTENT_HASH_INTERFACE_ID"},"id":6365,"name":"Identifier","src":"1057:25:14"}],"id":6366,"name":"BinaryOperation","src":"1042:40:14"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10582,"type":"contract super ContentHashResolver","value":"super"},"id":6367,"name":"Identifier","src":"1086:5:14"}],"id":6368,"name":"MemberAccess","src":"1086:23:14"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6359,"type":"bytes4","value":"interfaceID"},"id":6369,"name":"Identifier","src":"1110:11:14"}],"id":6370,"name":"FunctionCall","src":"1086:36:14"}],"id":6371,"name":"BinaryOperation","src":"1042:80:14"}],"id":6372,"name":"Return","src":"1035:87:14"}],"id":6373,"name":"Block","src":"1025:104:14"}],"id":6374,"name":"FunctionDefinition","src":"952:177:14"}],"id":6375,"name":"ContractDefinition","src":"56:1075:14"}],"id":6376,"name":"SourceUnit","src":"0:1132:14"}},"externals/ens/profiles/DNSResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/DNSResolver.sol","exportedSymbols":{"DNSResolver":[6866]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6377,"name":"PragmaDirective","src":"0:23:15"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":6867,"symbolAliases":[null],"unitAlias":""},"id":6378,"name":"ImportDirective","src":"25:29:15"},{"attributes":{"SourceUnit":9802,"absolutePath":"externals/ens/RRUtils.sol","file":"../RRUtils.sol","scope":6867,"symbolAliases":[null],"unitAlias":""},"id":6379,"name":"ImportDirective","src":"55:24:15"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[6866,9183],"name":"DNSResolver","scope":6867},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6380,"name":"UserDefinedTypeName","src":"105:12:15"}],"id":6381,"name":"InheritanceSpecifier","src":"105:12:15"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"RRUtils","referencedDeclaration":9801,"type":"library RRUtils"},"id":6382,"name":"UserDefinedTypeName","src":"130:7:15"}],"id":6383,"name":"UsingForDirective","src":"124:20:15"},{"children":[{"attributes":{"contractScope":null,"name":"ENSBytesUtils","referencedDeclaration":10522,"type":"library ENSBytesUtils"},"id":6384,"name":"UserDefinedTypeName","src":"155:13:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6385,"name":"ElementaryTypeName","src":"173:5:15"}],"id":6386,"name":"UsingForDirective","src":"149:30:15"},{"attributes":{"constant":true,"name":"DNS_RECORD_INTERFACE_ID","scope":6866,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6387,"name":"ElementaryTypeName","src":"185:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30786138666135363832","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2834978434","value":"0xa8fa5682"},"id":6388,"name":"Literal","src":"235:10:15"}],"id":6389,"name":"VariableDeclaration","src":"185:60:15"},{"attributes":{"constant":true,"name":"DNS_ZONE_INTERFACE_ID","scope":6866,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6390,"name":"ElementaryTypeName","src":"251:6:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30783563343736333763","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1548182396","value":"0x5c47637c"},"id":6391,"name":"Literal","src":"299:10:15"}],"id":6392,"name":"VariableDeclaration","src":"251:58:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6402,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6393,"name":"ElementaryTypeName","src":"430:7:15"}],"id":6394,"name":"VariableDeclaration","src":"430:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6402,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6395,"name":"ElementaryTypeName","src":"452:5:15"}],"id":6396,"name":"VariableDeclaration","src":"452:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":6402,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6397,"name":"ElementaryTypeName","src":"464:6:15"}],"id":6398,"name":"VariableDeclaration","src":"464:15:15"},{"attributes":{"constant":false,"indexed":false,"name":"record","scope":6402,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6399,"name":"ElementaryTypeName","src":"481:5:15"}],"id":6400,"name":"VariableDeclaration","src":"481:12:15"}],"id":6401,"name":"ParameterList","src":"429:65:15"}],"id":6402,"name":"EventDefinition","src":"407:88:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSRecordDeleted"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6410,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6403,"name":"ElementaryTypeName","src":"614:7:15"}],"id":6404,"name":"VariableDeclaration","src":"614:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":6410,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6405,"name":"ElementaryTypeName","src":"636:5:15"}],"id":6406,"name":"VariableDeclaration","src":"636:10:15"},{"attributes":{"constant":false,"indexed":false,"name":"resource","scope":6410,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6407,"name":"ElementaryTypeName","src":"648:6:15"}],"id":6408,"name":"VariableDeclaration","src":"648:15:15"}],"id":6409,"name":"ParameterList","src":"613:51:15"}],"id":6410,"name":"EventDefinition","src":"591:74:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZoneCleared"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6414,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6411,"name":"ElementaryTypeName","src":"777:7:15"}],"id":6412,"name":"VariableDeclaration","src":"777:20:15"}],"id":6413,"name":"ParameterList","src":"776:22:15"}],"id":6414,"name":"EventDefinition","src":"756:43:15"},{"attributes":{"anonymous":false,"documentation":null,"name":"DNSZonehashChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6422,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6415,"name":"ElementaryTypeName","src":"913:7:15"}],"id":6416,"name":"VariableDeclaration","src":"913:20:15"},{"attributes":{"constant":false,"indexed":false,"name":"lastzonehash","scope":6422,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6417,"name":"ElementaryTypeName","src":"935:5:15"}],"id":6418,"name":"VariableDeclaration","src":"935:18:15"},{"attributes":{"constant":false,"indexed":false,"name":"zonehash","scope":6422,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6419,"name":"ElementaryTypeName","src":"955:5:15"}],"id":6420,"name":"VariableDeclaration","src":"955:14:15"}],"id":6421,"name":"ParameterList","src":"912:58:15"}],"id":6422,"name":"EventDefinition","src":"888:83:15"},{"attributes":{"constant":false,"name":"zonehashes","scope":6866,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => bytes)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => bytes)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6423,"name":"ElementaryTypeName","src":"1181:7:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6424,"name":"ElementaryTypeName","src":"1190:5:15"}],"id":6425,"name":"Mapping","src":"1173:23:15"}],"id":6426,"name":"VariableDeclaration","src":"1173:42:15"},{"attributes":{"constant":false,"name":"versions","scope":6866,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => uint256)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => uint256)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6427,"name":"ElementaryTypeName","src":"1433:7:15"},{"attributes":{"name":"uint256","type":"uint256"},"id":6428,"name":"ElementaryTypeName","src":"1442:7:15"}],"id":6429,"name":"Mapping","src":"1425:25:15"}],"id":6430,"name":"VariableDeclaration","src":"1425:42:15"},{"attributes":{"constant":false,"name":"records","scope":6866,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes))))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6431,"name":"ElementaryTypeName","src":"1589:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes)))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6432,"name":"ElementaryTypeName","src":"1606:7:15"},{"attributes":{"type":"mapping(bytes32 => mapping(uint16 => bytes))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6433,"name":"ElementaryTypeName","src":"1623:7:15"},{"attributes":{"type":"mapping(uint16 => bytes)"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6434,"name":"ElementaryTypeName","src":"1640:6:15"},{"attributes":{"name":"bytes","type":"bytes"},"id":6435,"name":"ElementaryTypeName","src":"1648:5:15"}],"id":6436,"name":"Mapping","src":"1632:22:15"}],"id":6437,"name":"Mapping","src":"1615:40:15"}],"id":6438,"name":"Mapping","src":"1598:58:15"}],"id":6439,"name":"Mapping","src":"1581:76:15"}],"id":6440,"name":"VariableDeclaration","src":"1581:92:15"},{"attributes":{"constant":false,"name":"nameEntriesCount","scope":6866,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6441,"name":"ElementaryTypeName","src":"1853:7:15"},{"attributes":{"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6442,"name":"ElementaryTypeName","src":"1870:7:15"},{"attributes":{"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6443,"name":"ElementaryTypeName","src":"1887:7:15"},{"attributes":{"name":"uint16","type":"uint16"},"id":6444,"name":"ElementaryTypeName","src":"1896:6:15"}],"id":6445,"name":"Mapping","src":"1879:24:15"}],"id":6446,"name":"Mapping","src":"1862:42:15"}],"id":6447,"name":"Mapping","src":"1845:60:15"}],"id":6448,"name":"VariableDeclaration","src":"1845:85:15"},{"attributes":{"documentation":"Set one or more DNS records. Records are supplied in wire-format.\nRecords with the same node/name/resource must be supplied one after the\nother to ensure the data is updated correctly. For example, if the data\nwas supplied:\n a.example.com IN A 1.2.3.4\n a.example.com IN A 5.6.7.8\n www.example.com IN CNAME a.example.com.\nthen this would store the two A records for a.example.com correctly as a\nsingle RRSET, however if the data was supplied:\n a.example.com IN A 1.2.3.4\n www.example.com IN CNAME a.example.com.\n a.example.com IN A 5.6.7.8\nthen this would store the first A record, the CNAME, then the second A\nrecord which would overwrite the first.\n * @param node the namehash of the node for which to set the records\n@param data the DNS wire format records to set","implemented":true,"isConstructor":false,"kind":"function","name":"setDNSRecords","scope":6866,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6613,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6449,"name":"ElementaryTypeName","src":"2877:7:15"}],"id":6450,"name":"VariableDeclaration","src":"2877:12:15"},{"attributes":{"constant":false,"name":"data","scope":6613,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6451,"name":"ElementaryTypeName","src":"2891:5:15"}],"id":6452,"name":"VariableDeclaration","src":"2891:19:15"}],"id":6453,"name":"ParameterList","src":"2876:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6457,"name":"ParameterList","src":"2938:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6454,"name":"Identifier","src":"2921:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6450,"type":"bytes32","value":"node"},"id":6455,"name":"Identifier","src":"2932:4:15"}],"id":6456,"name":"ModifierInvocation","src":"2921:16:15"},{"children":[{"attributes":{"assignments":[6459]},"children":[{"attributes":{"constant":false,"name":"resource","scope":6612,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6458,"name":"ElementaryTypeName","src":"2948:6:15"}],"id":6459,"name":"VariableDeclaration","src":"2948:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6460,"name":"Literal","src":"2966:1:15"}],"id":6461,"name":"VariableDeclarationStatement","src":"2948:19:15"},{"attributes":{"assignments":[6463]},"children":[{"attributes":{"constant":false,"name":"offset","scope":6612,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6462,"name":"ElementaryTypeName","src":"2977:7:15"}],"id":6463,"name":"VariableDeclaration","src":"2977:14:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6464,"name":"Literal","src":"2994:1:15"}],"id":6465,"name":"VariableDeclarationStatement","src":"2977:18:15"},{"attributes":{"assignments":[6467],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"name","scope":6612,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6466,"name":"ElementaryTypeName","src":"3005:5:15"}],"id":6467,"name":"VariableDeclaration","src":"3005:17:15"}],"id":6468,"name":"VariableDeclarationStatement","src":"3005:17:15"},{"attributes":{"assignments":[6470],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":6612,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6469,"name":"ElementaryTypeName","src":"3032:5:15"}],"id":6470,"name":"VariableDeclaration","src":"3032:18:15"}],"id":6471,"name":"VariableDeclarationStatement","src":"3032:18:15"},{"attributes":{"assignments":[6473],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6612,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6472,"name":"ElementaryTypeName","src":"3060:7:15"}],"id":6473,"name":"VariableDeclaration","src":"3060:16:15"}],"id":6474,"name":"VariableDeclarationStatement","src":"3060:16:15"},{"children":[{"attributes":{"assignments":[6478]},"children":[{"attributes":{"constant":false,"name":"iter","scope":6589,"stateVariable":false,"storageLocation":"memory","type":"struct RRUtils.RRIterator","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"RRUtils.RRIterator","referencedDeclaration":9322,"type":"struct RRUtils.RRIterator"},"id":6477,"name":"UserDefinedTypeName","src":"3152:18:15"}],"id":6478,"name":"VariableDeclaration","src":"3152:30:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct RRUtils.RRIterator memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"iterateRRs","referencedDeclaration":9348,"type":"function (bytes memory,uint256) pure returns (struct RRUtils.RRIterator memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6452,"type":"bytes calldata","value":"data"},"id":6479,"name":"Identifier","src":"3185:4:15"}],"id":6480,"name":"MemberAccess","src":"3185:15:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6481,"name":"Literal","src":"3201:1:15"}],"id":6482,"name":"FunctionCall","src":"3185:18:15"}],"id":6483,"name":"VariableDeclarationStatement","src":"3152:51:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"done","referencedDeclaration":9363,"type":"function (struct RRUtils.RRIterator memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6484,"name":"Identifier","src":"3206:4:15"}],"id":6485,"name":"MemberAccess","src":"3206:9:15"}],"id":6486,"name":"FunctionCall","src":"3206:11:15"}],"id":6487,"name":"UnaryOperation","src":"3205:12:15"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"next","referencedDeclaration":9465,"type":"function (struct RRUtils.RRIterator memory) pure"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6488,"name":"Identifier","src":"3219:4:15"}],"id":6489,"name":"MemberAccess","src":"3219:9:15"}],"id":6490,"name":"FunctionCall","src":"3219:11:15"}],"id":6491,"name":"ExpressionStatement","src":"3219:11:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6492,"name":"Identifier","src":"3250:8:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6493,"name":"Literal","src":"3262:1:15"}],"id":6494,"name":"BinaryOperation","src":"3250:13:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6495,"name":"Identifier","src":"3283:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":9313,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6496,"name":"Identifier","src":"3294:4:15"}],"id":6497,"name":"MemberAccess","src":"3294:12:15"}],"id":6498,"name":"Assignment","src":"3283:23:15"}],"id":6499,"name":"ExpressionStatement","src":"3283:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6500,"name":"Identifier","src":"3324:4:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9486,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6501,"name":"Identifier","src":"3331:4:15"}],"id":6502,"name":"MemberAccess","src":"3331:9:15"}],"id":6503,"name":"FunctionCall","src":"3331:11:15"}],"id":6504,"name":"Assignment","src":"3324:18:15"}],"id":6505,"name":"ExpressionStatement","src":"3324:18:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6473,"type":"bytes32","value":"nameHash"},"id":6506,"name":"Identifier","src":"3360:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6507,"name":"Identifier","src":"3371:9:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":6508,"name":"Identifier","src":"3381:3:15"}],"id":6509,"name":"MemberAccess","src":"3381:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6510,"name":"Identifier","src":"3398:4:15"}],"id":6511,"name":"FunctionCall","src":"3381:22:15"}],"id":6512,"name":"FunctionCall","src":"3371:33:15"}],"id":6513,"name":"Assignment","src":"3360:44:15"}],"id":6514,"name":"ExpressionStatement","src":"3360:44:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bytes memory","value":"value"},"id":6515,"name":"Identifier","src":"3422:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6516,"name":"ElementaryTypeNameExpression","src":"3430:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9506,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6517,"name":"Identifier","src":"3436:4:15"}],"id":6518,"name":"MemberAccess","src":"3436:10:15"}],"id":6519,"name":"FunctionCall","src":"3436:12:15"}],"id":6520,"name":"FunctionCall","src":"3430:19:15"}],"id":6521,"name":"Assignment","src":"3422:27:15"}],"id":6522,"name":"ExpressionStatement","src":"3422:27:15"}],"id":6523,"name":"Block","src":"3265:199:15"},{"children":[{"attributes":{"assignments":[6525]},"children":[{"attributes":{"constant":false,"name":"newName","scope":6586,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6524,"name":"ElementaryTypeName","src":"3488:5:15"}],"id":6525,"name":"VariableDeclaration","src":"3488:20:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"name","referencedDeclaration":9486,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6526,"name":"Identifier","src":"3511:4:15"}],"id":6527,"name":"MemberAccess","src":"3511:9:15"}],"id":6528,"name":"FunctionCall","src":"3511:11:15"}],"id":6529,"name":"VariableDeclarationStatement","src":"3488:34:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6530,"name":"Identifier","src":"3544:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":9313,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6531,"name":"Identifier","src":"3556:4:15"}],"id":6532,"name":"MemberAccess","src":"3556:12:15"}],"id":6533,"name":"BinaryOperation","src":"3544:24:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"equals","referencedDeclaration":10092,"type":"function (bytes memory,bytes memory) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6534,"name":"Identifier","src":"3573:4:15"}],"id":6535,"name":"MemberAccess","src":"3573:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"bytes memory","value":"newName"},"id":6536,"name":"Identifier","src":"3585:7:15"}],"id":6537,"name":"FunctionCall","src":"3573:20:15"}],"id":6538,"name":"UnaryOperation","src":"3572:21:15"}],"id":6539,"name":"BinaryOperation","src":"3544:49:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6865,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6540,"name":"Identifier","src":"3617:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6450,"type":"bytes32","value":"node"},"id":6541,"name":"Identifier","src":"3629:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6542,"name":"Identifier","src":"3635:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6543,"name":"Identifier","src":"3641:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6452,"type":"bytes calldata","value":"data"},"id":6544,"name":"Identifier","src":"3651:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6545,"name":"Identifier","src":"3657:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6546,"name":"Identifier","src":"3665:4:15"}],"id":6547,"name":"MemberAccess","src":"3665:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6548,"name":"Identifier","src":"3679:6:15"}],"id":6549,"name":"BinaryOperation","src":"3665:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bytes memory","value":"value"},"id":6550,"name":"Identifier","src":"3687:5:15"}],"id":6551,"name":"MemberAccess","src":"3687:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6552,"name":"Literal","src":"3703:1:15"}],"id":6553,"name":"BinaryOperation","src":"3687:17:15"}],"id":6554,"name":"FunctionCall","src":"3617:88:15"}],"id":6555,"name":"ExpressionStatement","src":"3617:88:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6556,"name":"Identifier","src":"3727:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"dnstype","referencedDeclaration":9313,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6557,"name":"Identifier","src":"3738:4:15"}],"id":6558,"name":"MemberAccess","src":"3738:12:15"}],"id":6559,"name":"Assignment","src":"3727:23:15"}],"id":6560,"name":"ExpressionStatement","src":"3727:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6561,"name":"Identifier","src":"3772:6:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"offset","referencedDeclaration":9311,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6562,"name":"Identifier","src":"3781:4:15"}],"id":6563,"name":"MemberAccess","src":"3781:11:15"}],"id":6564,"name":"Assignment","src":"3772:20:15"}],"id":6565,"name":"ExpressionStatement","src":"3772:20:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6566,"name":"Identifier","src":"3814:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6525,"type":"bytes memory","value":"newName"},"id":6567,"name":"Identifier","src":"3821:7:15"}],"id":6568,"name":"Assignment","src":"3814:14:15"}],"id":6569,"name":"ExpressionStatement","src":"3814:14:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6473,"type":"bytes32","value":"nameHash"},"id":6570,"name":"Identifier","src":"3850:8:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6571,"name":"Identifier","src":"3861:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6572,"name":"Identifier","src":"3871:4:15"}],"id":6573,"name":"FunctionCall","src":"3861:15:15"}],"id":6574,"name":"Assignment","src":"3850:26:15"}],"id":6575,"name":"ExpressionStatement","src":"3850:26:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bytes memory","value":"value"},"id":6576,"name":"Identifier","src":"3898:5:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":6577,"name":"ElementaryTypeNameExpression","src":"3906:5:15"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rdata","referencedDeclaration":9506,"type":"function (struct RRUtils.RRIterator memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6478,"type":"struct RRUtils.RRIterator memory","value":"iter"},"id":6578,"name":"Identifier","src":"3912:4:15"}],"id":6579,"name":"MemberAccess","src":"3912:10:15"}],"id":6580,"name":"FunctionCall","src":"3912:12:15"}],"id":6581,"name":"FunctionCall","src":"3906:19:15"}],"id":6582,"name":"Assignment","src":"3898:27:15"}],"id":6583,"name":"ExpressionStatement","src":"3898:27:15"}],"id":6584,"name":"Block","src":"3595:349:15"}],"id":6585,"name":"IfStatement","src":"3540:404:15"}],"id":6586,"name":"Block","src":"3470:488:15"}],"id":6587,"name":"IfStatement","src":"3246:712:15"}],"id":6588,"name":"Block","src":"3232:736:15"}],"id":6589,"name":"ForStatement","src":"3147:821:15"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6590,"name":"Identifier","src":"3981:4:15"}],"id":6591,"name":"MemberAccess","src":"3981:11:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6592,"name":"Literal","src":"3995:1:15"}],"id":6593,"name":"BinaryOperation","src":"3981:15:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":6865,"type":"function (bytes32,bytes memory,uint16,bytes memory,uint256,uint256,bool)","value":"setDNSRRSet"},"id":6594,"name":"Identifier","src":"4012:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6450,"type":"bytes32","value":"node"},"id":6595,"name":"Identifier","src":"4024:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6467,"type":"bytes memory","value":"name"},"id":6596,"name":"Identifier","src":"4030:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6459,"type":"uint16","value":"resource"},"id":6597,"name":"Identifier","src":"4036:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6452,"type":"bytes calldata","value":"data"},"id":6598,"name":"Identifier","src":"4046:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6599,"name":"Identifier","src":"4052:6:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6452,"type":"bytes calldata","value":"data"},"id":6600,"name":"Identifier","src":"4060:4:15"}],"id":6601,"name":"MemberAccess","src":"4060:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6463,"type":"uint256","value":"offset"},"id":6602,"name":"Identifier","src":"4074:6:15"}],"id":6603,"name":"BinaryOperation","src":"4060:20:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6470,"type":"bytes memory","value":"value"},"id":6604,"name":"Identifier","src":"4082:5:15"}],"id":6605,"name":"MemberAccess","src":"4082:12:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6606,"name":"Literal","src":"4098:1:15"}],"id":6607,"name":"BinaryOperation","src":"4082:17:15"}],"id":6608,"name":"FunctionCall","src":"4012:88:15"}],"id":6609,"name":"ExpressionStatement","src":"4012:88:15"}],"id":6610,"name":"Block","src":"3998:113:15"}],"id":6611,"name":"IfStatement","src":"3977:134:15"}],"id":6612,"name":"Block","src":"2938:1179:15"}],"id":6613,"name":"FunctionDefinition","src":"2854:1263:15"},{"attributes":{"documentation":"Obtain a DNS record.\n@param node the namehash of the node for which to fetch the record\n@param name the keccak-256 hash of the fully-qualified name for which to fetch the record\n@param resource the ID of the resource as per https://en.wikipedia.org/wiki/List_of_DNS_record_types\n@return the DNS record in wire format if present, otherwise empty","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"dnsRecord","scope":6866,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6637,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6614,"name":"ElementaryTypeName","src":"4538:7:15"}],"id":6615,"name":"VariableDeclaration","src":"4538:12:15"},{"attributes":{"constant":false,"name":"name","scope":6637,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6616,"name":"ElementaryTypeName","src":"4552:7:15"}],"id":6617,"name":"VariableDeclaration","src":"4552:12:15"},{"attributes":{"constant":false,"name":"resource","scope":6637,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6618,"name":"ElementaryTypeName","src":"4566:6:15"}],"id":6619,"name":"VariableDeclaration","src":"4566:15:15"}],"id":6620,"name":"ParameterList","src":"4537:45:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6637,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6621,"name":"ElementaryTypeName","src":"4604:5:15"}],"id":6622,"name":"VariableDeclaration","src":"4604:12:15"}],"id":6623,"name":"ParameterList","src":"4603:14:15"},{"children":[{"attributes":{"functionReturnParameters":6623},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6624,"name":"Identifier","src":"4635:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6615,"type":"bytes32","value":"node"},"id":6625,"name":"Identifier","src":"4643:4:15"}],"id":6626,"name":"IndexAccess","src":"4635:13:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6430,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6627,"name":"Identifier","src":"4649:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6615,"type":"bytes32","value":"node"},"id":6628,"name":"Identifier","src":"4658:4:15"}],"id":6629,"name":"IndexAccess","src":"4649:14:15"}],"id":6630,"name":"IndexAccess","src":"4635:29:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6617,"type":"bytes32","value":"name"},"id":6631,"name":"Identifier","src":"4665:4:15"}],"id":6632,"name":"IndexAccess","src":"4635:35:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6619,"type":"uint16","value":"resource"},"id":6633,"name":"Identifier","src":"4671:8:15"}],"id":6634,"name":"IndexAccess","src":"4635:45:15"}],"id":6635,"name":"Return","src":"4628:52:15"}],"id":6636,"name":"Block","src":"4618:69:15"}],"id":6637,"name":"FunctionDefinition","src":"4519:168:15"},{"attributes":{"documentation":"Check if a given node has records.\n@param node the namehash of the node for which to check the records\n@param name the namehash of the node for which to check the records","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"hasDNSRecords","scope":6866,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6660,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6638,"name":"ElementaryTypeName","src":"4924:7:15"}],"id":6639,"name":"VariableDeclaration","src":"4924:12:15"},{"attributes":{"constant":false,"name":"name","scope":6660,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6640,"name":"ElementaryTypeName","src":"4938:7:15"}],"id":6641,"name":"VariableDeclaration","src":"4938:12:15"}],"id":6642,"name":"ParameterList","src":"4923:28:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6660,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6643,"name":"ElementaryTypeName","src":"4973:4:15"}],"id":6644,"name":"VariableDeclaration","src":"4973:4:15"}],"id":6645,"name":"ParameterList","src":"4972:6:15"},{"children":[{"attributes":{"functionReturnParameters":6645},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint16","typeString":"uint16"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6448,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6646,"name":"Identifier","src":"4997:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6639,"type":"bytes32","value":"node"},"id":6647,"name":"Identifier","src":"5014:4:15"}],"id":6648,"name":"IndexAccess","src":"4997:22:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6430,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6649,"name":"Identifier","src":"5020:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6639,"type":"bytes32","value":"node"},"id":6650,"name":"Identifier","src":"5029:4:15"}],"id":6651,"name":"IndexAccess","src":"5020:14:15"}],"id":6652,"name":"IndexAccess","src":"4997:38:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6641,"type":"bytes32","value":"name"},"id":6653,"name":"Identifier","src":"5036:4:15"}],"id":6654,"name":"IndexAccess","src":"4997:44:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6655,"name":"Literal","src":"5045:1:15"}],"id":6656,"name":"BinaryOperation","src":"4997:49:15"}],"id":6657,"name":"TupleExpression","src":"4996:51:15"}],"id":6658,"name":"Return","src":"4989:58:15"}],"id":6659,"name":"Block","src":"4979:75:15"}],"id":6660,"name":"FunctionDefinition","src":"4901:153:15"},{"attributes":{"documentation":"Clear all information for a DNS zone.\n@param node the namehash of the node for which to clear the zone","implemented":true,"isConstructor":false,"kind":"function","name":"clearDNSZone","scope":6866,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6678,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6661,"name":"ElementaryTypeName","src":"5215:7:15"}],"id":6662,"name":"VariableDeclaration","src":"5215:12:15"}],"id":6663,"name":"ParameterList","src":"5214:14:15"},{"attributes":{"parameters":[null]},"children":[],"id":6667,"name":"ParameterList","src":"5253:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6664,"name":"Identifier","src":"5236:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6662,"type":"bytes32","value":"node"},"id":6665,"name":"Identifier","src":"5247:4:15"}],"id":6666,"name":"ModifierInvocation","src":"5236:16:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6430,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6668,"name":"Identifier","src":"5263:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6662,"type":"bytes32","value":"node"},"id":6669,"name":"Identifier","src":"5272:4:15"}],"id":6670,"name":"IndexAccess","src":"5263:14:15"}],"id":6671,"name":"UnaryOperation","src":"5263:16:15"}],"id":6672,"name":"ExpressionStatement","src":"5263:16:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":6414,"type":"function (bytes32)","value":"DNSZoneCleared"},"id":6673,"name":"Identifier","src":"5294:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6662,"type":"bytes32","value":"node"},"id":6674,"name":"Identifier","src":"5309:4:15"}],"id":6675,"name":"FunctionCall","src":"5294:20:15"}],"id":6676,"name":"EmitStatement","src":"5289:25:15"}],"id":6677,"name":"Block","src":"5253:68:15"}],"id":6678,"name":"FunctionDefinition","src":"5193:128:15"},{"attributes":{"documentation":"setZonehash sets the hash for the zone.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param hash The zonehash to set","implemented":true,"isConstructor":false,"kind":"function","name":"setZonehash","scope":6866,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6707,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6679,"name":"ElementaryTypeName","src":"5562:7:15"}],"id":6680,"name":"VariableDeclaration","src":"5562:12:15"},{"attributes":{"constant":false,"name":"hash","scope":6707,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6681,"name":"ElementaryTypeName","src":"5576:5:15"}],"id":6682,"name":"VariableDeclaration","src":"5576:19:15"}],"id":6683,"name":"ParameterList","src":"5561:35:15"},{"attributes":{"parameters":[null]},"children":[],"id":6687,"name":"ParameterList","src":"5623:0:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6684,"name":"Identifier","src":"5606:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6680,"type":"bytes32","value":"node"},"id":6685,"name":"Identifier","src":"5617:4:15"}],"id":6686,"name":"ModifierInvocation","src":"5606:16:15"},{"children":[{"attributes":{"assignments":[6689]},"children":[{"attributes":{"constant":false,"name":"oldhash","scope":6706,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6688,"name":"ElementaryTypeName","src":"5633:5:15"}],"id":6689,"name":"VariableDeclaration","src":"5633:20:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6426,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6690,"name":"Identifier","src":"5656:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6680,"type":"bytes32","value":"node"},"id":6691,"name":"Identifier","src":"5667:4:15"}],"id":6692,"name":"IndexAccess","src":"5656:16:15"}],"id":6693,"name":"VariableDeclarationStatement","src":"5633:39:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6426,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6694,"name":"Identifier","src":"5682:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6680,"type":"bytes32","value":"node"},"id":6695,"name":"Identifier","src":"5693:4:15"}],"id":6696,"name":"IndexAccess","src":"5682:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6682,"type":"bytes calldata","value":"hash"},"id":6697,"name":"Identifier","src":"5701:4:15"}],"id":6698,"name":"Assignment","src":"5682:23:15"}],"id":6699,"name":"ExpressionStatement","src":"5682:23:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":6422,"type":"function (bytes32,bytes memory,bytes memory)","value":"DNSZonehashChanged"},"id":6700,"name":"Identifier","src":"5720:18:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6680,"type":"bytes32","value":"node"},"id":6701,"name":"Identifier","src":"5739:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6689,"type":"bytes memory","value":"oldhash"},"id":6702,"name":"Identifier","src":"5745:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6682,"type":"bytes calldata","value":"hash"},"id":6703,"name":"Identifier","src":"5754:4:15"}],"id":6704,"name":"FunctionCall","src":"5720:39:15"}],"id":6705,"name":"EmitStatement","src":"5715:44:15"}],"id":6706,"name":"Block","src":"5623:143:15"}],"id":6707,"name":"FunctionDefinition","src":"5541:225:15"},{"attributes":{"documentation":"zonehash obtains the hash for the zone.\n@param node The ENS node to query.\n@return The associated contenthash.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"zonehash","scope":6866,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6719,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6708,"name":"ElementaryTypeName","src":"5938:7:15"}],"id":6709,"name":"VariableDeclaration","src":"5938:12:15"}],"id":6710,"name":"ParameterList","src":"5937:14:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6719,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6711,"name":"ElementaryTypeName","src":"5975:5:15"}],"id":6712,"name":"VariableDeclaration","src":"5975:12:15"}],"id":6713,"name":"ParameterList","src":"5974:14:15"},{"children":[{"attributes":{"functionReturnParameters":6713},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6426,"type":"mapping(bytes32 => bytes storage ref)","value":"zonehashes"},"id":6714,"name":"Identifier","src":"6006:10:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6709,"type":"bytes32","value":"node"},"id":6715,"name":"Identifier","src":"6017:4:15"}],"id":6716,"name":"IndexAccess","src":"6006:16:15"}],"id":6717,"name":"Return","src":"5999:23:15"}],"id":6718,"name":"Block","src":"5989:40:15"}],"id":6719,"name":"FunctionDefinition","src":"5920:109:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":6866,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":6740,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6720,"name":"ElementaryTypeName","src":"6062:6:15"}],"id":6721,"name":"VariableDeclaration","src":"6062:18:15"}],"id":6722,"name":"ParameterList","src":"6061:20:15"},{"children":[{"attributes":{"constant":false,"name":"","scope":6740,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6723,"name":"ElementaryTypeName","src":"6102:4:15"}],"id":6724,"name":"VariableDeclaration","src":"6102:4:15"}],"id":6725,"name":"ParameterList","src":"6101:6:15"},{"children":[{"attributes":{"functionReturnParameters":6725},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6721,"type":"bytes4","value":"interfaceID"},"id":6726,"name":"Identifier","src":"6125:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6389,"type":"bytes4","value":"DNS_RECORD_INTERFACE_ID"},"id":6727,"name":"Identifier","src":"6140:23:15"}],"id":6728,"name":"BinaryOperation","src":"6125:38:15"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6721,"type":"bytes4","value":"interfaceID"},"id":6729,"name":"Identifier","src":"6182:11:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6392,"type":"bytes4","value":"DNS_ZONE_INTERFACE_ID"},"id":6730,"name":"Identifier","src":"6197:21:15"}],"id":6731,"name":"BinaryOperation","src":"6182:36:15"}],"id":6732,"name":"BinaryOperation","src":"6125:93:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10586,"type":"contract super DNSResolver","value":"super"},"id":6733,"name":"Identifier","src":"6237:5:15"}],"id":6734,"name":"MemberAccess","src":"6237:23:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6721,"type":"bytes4","value":"interfaceID"},"id":6735,"name":"Identifier","src":"6261:11:15"}],"id":6736,"name":"FunctionCall","src":"6237:36:15"}],"id":6737,"name":"BinaryOperation","src":"6125:148:15"}],"id":6738,"name":"Return","src":"6118:155:15"}],"id":6739,"name":"Block","src":"6108:172:15"}],"id":6740,"name":"FunctionDefinition","src":"6035:245:15"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"setDNSRRSet","scope":6866,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6865,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6741,"name":"ElementaryTypeName","src":"6316:7:15"}],"id":6742,"name":"VariableDeclaration","src":"6316:12:15"},{"attributes":{"constant":false,"name":"name","scope":6865,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6743,"name":"ElementaryTypeName","src":"6338:5:15"}],"id":6744,"name":"VariableDeclaration","src":"6338:17:15"},{"attributes":{"constant":false,"name":"resource","scope":6865,"stateVariable":false,"storageLocation":"default","type":"uint16","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint16","type":"uint16"},"id":6745,"name":"ElementaryTypeName","src":"6365:6:15"}],"id":6746,"name":"VariableDeclaration","src":"6365:15:15"},{"attributes":{"constant":false,"name":"data","scope":6865,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6747,"name":"ElementaryTypeName","src":"6390:5:15"}],"id":6748,"name":"VariableDeclaration","src":"6390:17:15"},{"attributes":{"constant":false,"name":"offset","scope":6865,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6749,"name":"ElementaryTypeName","src":"6417:7:15"}],"id":6750,"name":"VariableDeclaration","src":"6417:14:15"},{"attributes":{"constant":false,"name":"size","scope":6865,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6751,"name":"ElementaryTypeName","src":"6441:7:15"}],"id":6752,"name":"VariableDeclaration","src":"6441:12:15"},{"attributes":{"constant":false,"name":"deleteRecord","scope":6865,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6753,"name":"ElementaryTypeName","src":"6463:4:15"}],"id":6754,"name":"VariableDeclaration","src":"6463:17:15"}],"id":6755,"name":"ParameterList","src":"6306:175:15"},{"attributes":{"parameters":[null]},"children":[],"id":6756,"name":"ParameterList","src":"6494:0:15"},{"children":[{"attributes":{"assignments":[6758]},"children":[{"attributes":{"constant":false,"name":"version","scope":6864,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":6757,"name":"ElementaryTypeName","src":"6504:7:15"}],"id":6758,"name":"VariableDeclaration","src":"6504:15:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6430,"type":"mapping(bytes32 => uint256)","value":"versions"},"id":6759,"name":"Identifier","src":"6522:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6760,"name":"Identifier","src":"6531:4:15"}],"id":6761,"name":"IndexAccess","src":"6522:14:15"}],"id":6762,"name":"VariableDeclarationStatement","src":"6504:32:15"},{"attributes":{"assignments":[6764]},"children":[{"attributes":{"constant":false,"name":"nameHash","scope":6864,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6763,"name":"ElementaryTypeName","src":"6546:7:15"}],"id":6764,"name":"VariableDeclaration","src":"6546:16:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6765,"name":"Identifier","src":"6565:9:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"bytes memory","value":"name"},"id":6766,"name":"Identifier","src":"6575:4:15"}],"id":6767,"name":"FunctionCall","src":"6565:15:15"}],"id":6768,"name":"VariableDeclarationStatement","src":"6546:34:15"},{"attributes":{"assignments":[6770]},"children":[{"attributes":{"constant":false,"name":"rrData","scope":6864,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6769,"name":"ElementaryTypeName","src":"6590:5:15"}],"id":6770,"name":"VariableDeclaration","src":"6590:19:15"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"substring","referencedDeclaration":10299,"type":"function (bytes memory,uint256,uint256) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6748,"type":"bytes memory","value":"data"},"id":6771,"name":"Identifier","src":"6612:4:15"}],"id":6772,"name":"MemberAccess","src":"6612:14:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6750,"type":"uint256","value":"offset"},"id":6773,"name":"Identifier","src":"6627:6:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6752,"type":"uint256","value":"size"},"id":6774,"name":"Identifier","src":"6635:4:15"}],"id":6775,"name":"FunctionCall","src":"6612:28:15"}],"id":6776,"name":"VariableDeclarationStatement","src":"6590:50:15"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6754,"type":"bool","value":"deleteRecord"},"id":6777,"name":"Identifier","src":"6654:12:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6778,"name":"Identifier","src":"6686:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6779,"name":"Identifier","src":"6694:4:15"}],"id":6780,"name":"IndexAccess","src":"6686:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6781,"name":"Identifier","src":"6700:7:15"}],"id":6782,"name":"IndexAccess","src":"6686:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6783,"name":"Identifier","src":"6709:8:15"}],"id":6784,"name":"IndexAccess","src":"6686:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6785,"name":"Identifier","src":"6719:8:15"}],"id":6786,"name":"IndexAccess","src":"6686:42:15"}],"id":6787,"name":"MemberAccess","src":"6686:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6788,"name":"Literal","src":"6739:1:15"}],"id":6789,"name":"BinaryOperation","src":"6686:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6448,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6790,"name":"Identifier","src":"6760:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6791,"name":"Identifier","src":"6777:4:15"}],"id":6794,"name":"IndexAccess","src":"6760:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6792,"name":"Identifier","src":"6783:7:15"}],"id":6795,"name":"IndexAccess","src":"6760:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6793,"name":"Identifier","src":"6792:8:15"}],"id":6796,"name":"IndexAccess","src":"6760:41:15"}],"id":6797,"name":"UnaryOperation","src":"6760:43:15"}],"id":6798,"name":"ExpressionStatement","src":"6760:43:15"}],"id":6799,"name":"Block","src":"6742:76:15"}],"id":6800,"name":"IfStatement","src":"6682:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6801,"name":"Identifier","src":"6838:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6802,"name":"Identifier","src":"6846:4:15"}],"id":6803,"name":"IndexAccess","src":"6838:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6804,"name":"Identifier","src":"6852:7:15"}],"id":6805,"name":"IndexAccess","src":"6838:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6806,"name":"Identifier","src":"6861:8:15"}],"id":6807,"name":"IndexAccess","src":"6838:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6808,"name":"Identifier","src":"6871:8:15"}],"id":6809,"name":"IndexAccess","src":"6838:42:15"}],"id":6810,"name":"TupleExpression","src":"6837:44:15"}],"id":6811,"name":"UnaryOperation","src":"6831:50:15"}],"id":6812,"name":"ExpressionStatement","src":"6831:50:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"}],"overloadedDeclarations":[null],"referencedDeclaration":6410,"type":"function (bytes32,bytes memory,uint16)","value":"DNSRecordDeleted"},"id":6813,"name":"Identifier","src":"6900:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6814,"name":"Identifier","src":"6917:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"bytes memory","value":"name"},"id":6815,"name":"Identifier","src":"6923:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6816,"name":"Identifier","src":"6929:8:15"}],"id":6817,"name":"FunctionCall","src":"6900:38:15"}],"id":6818,"name":"EmitStatement","src":"6895:43:15"}],"id":6819,"name":"Block","src":"6668:281:15"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6820,"name":"Identifier","src":"6973:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6821,"name":"Identifier","src":"6981:4:15"}],"id":6822,"name":"IndexAccess","src":"6973:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6823,"name":"Identifier","src":"6987:7:15"}],"id":6824,"name":"IndexAccess","src":"6973:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6825,"name":"Identifier","src":"6996:8:15"}],"id":6826,"name":"IndexAccess","src":"6973:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6827,"name":"Identifier","src":"7006:8:15"}],"id":6828,"name":"IndexAccess","src":"6973:42:15"}],"id":6829,"name":"MemberAccess","src":"6973:49:15"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6830,"name":"Literal","src":"7026:1:15"}],"id":6831,"name":"BinaryOperation","src":"6973:54:15"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"uint16"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => uint16)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => uint16))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6448,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => uint16)))","value":"nameEntriesCount"},"id":6832,"name":"Identifier","src":"7047:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6833,"name":"Identifier","src":"7064:4:15"}],"id":6836,"name":"IndexAccess","src":"7047:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6834,"name":"Identifier","src":"7070:7:15"}],"id":6837,"name":"IndexAccess","src":"7047:31:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6835,"name":"Identifier","src":"7079:8:15"}],"id":6838,"name":"IndexAccess","src":"7047:41:15"}],"id":6839,"name":"UnaryOperation","src":"7047:43:15"}],"id":6840,"name":"ExpressionStatement","src":"7047:43:15"}],"id":6841,"name":"Block","src":"7029:76:15"}],"id":6842,"name":"IfStatement","src":"6969:136:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint16 => bytes storage ref)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes32 => mapping(uint16 => bytes storage ref))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref)))"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6440,"type":"mapping(bytes32 => mapping(uint256 => mapping(bytes32 => mapping(uint16 => bytes storage ref))))","value":"records"},"id":6843,"name":"Identifier","src":"7118:7:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6844,"name":"Identifier","src":"7126:4:15"}],"id":6848,"name":"IndexAccess","src":"7118:13:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6758,"type":"uint256","value":"version"},"id":6845,"name":"Identifier","src":"7132:7:15"}],"id":6849,"name":"IndexAccess","src":"7118:22:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6764,"type":"bytes32","value":"nameHash"},"id":6846,"name":"Identifier","src":"7141:8:15"}],"id":6850,"name":"IndexAccess","src":"7118:32:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6847,"name":"Identifier","src":"7151:8:15"}],"id":6851,"name":"IndexAccess","src":"7118:42:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes memory","value":"rrData"},"id":6852,"name":"Identifier","src":"7163:6:15"}],"id":6853,"name":"Assignment","src":"7118:51:15"}],"id":6854,"name":"ExpressionStatement","src":"7118:51:15"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_uint16","typeString":"uint16"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":6402,"type":"function (bytes32,bytes memory,uint16,bytes memory)","value":"DNSRecordChanged"},"id":6855,"name":"Identifier","src":"7188:16:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6742,"type":"bytes32","value":"node"},"id":6856,"name":"Identifier","src":"7205:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6744,"type":"bytes memory","value":"name"},"id":6857,"name":"Identifier","src":"7211:4:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6746,"type":"uint16","value":"resource"},"id":6858,"name":"Identifier","src":"7217:8:15"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6770,"type":"bytes memory","value":"rrData"},"id":6859,"name":"Identifier","src":"7227:6:15"}],"id":6860,"name":"FunctionCall","src":"7188:46:15"}],"id":6861,"name":"EmitStatement","src":"7183:51:15"}],"id":6862,"name":"Block","src":"6955:290:15"}],"id":6863,"name":"IfStatement","src":"6650:595:15"}],"id":6864,"name":"Block","src":"6494:757:15"}],"id":6865,"name":"FunctionDefinition","src":"6286:965:15"}],"id":6866,"name":"ContractDefinition","src":"81:7172:15"}],"id":6867,"name":"SourceUnit","src":"0:7253:15"}},"externals/ens/profiles/InterfaceResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/InterfaceResolver.sol","exportedSymbols":{"InterfaceResolver":[7053]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":6868,"name":"PragmaDirective","src":"0:23:16"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":7054,"symbolAliases":[null],"unitAlias":""},"id":6869,"name":"ImportDirective","src":"25:29:16"},{"attributes":{"SourceUnit":6306,"absolutePath":"externals/ens/profiles/AddrResolver.sol","file":"./AddrResolver.sol","scope":7054,"symbolAliases":[null],"unitAlias":""},"id":6870,"name":"ImportDirective","src":"55:28:16"},{"attributes":{"contractDependencies":[6305,9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7053,6305,9183],"name":"InterfaceResolver","scope":7054},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":6871,"name":"UserDefinedTypeName","src":"115:12:16"}],"id":6872,"name":"InheritanceSpecifier","src":"115:12:16"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddrResolver","referencedDeclaration":6305,"type":"contract AddrResolver"},"id":6873,"name":"UserDefinedTypeName","src":"129:12:16"}],"id":6874,"name":"InheritanceSpecifier","src":"129:12:16"},{"attributes":{"constant":true,"name":"INTERFACE_INTERFACE_ID","scope":7053,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6875,"name":"ElementaryTypeName","src":"148:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes4)","value":"bytes4"},"id":6876,"name":"ElementaryTypeNameExpression","src":"197:6:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_124a319c1247f4318c3c16c7e9cc865d0fb5d80d7bf02f56cafc0d14da020850","typeString":"literal_string \"interfaceImplementer(bytes32,bytes4)\""}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":6877,"name":"Identifier","src":"204:9:16"},{"attributes":{"argumentTypes":null,"hexvalue":"696e74657266616365496d706c656d656e74657228627974657333322c62797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"interfaceImplementer(bytes32,bytes4)\"","value":"interfaceImplementer(bytes32,bytes4)"},"id":6878,"name":"Literal","src":"214:38:16"}],"id":6879,"name":"FunctionCall","src":"204:49:16"}],"id":6880,"name":"FunctionCall","src":"197:57:16"}],"id":6881,"name":"VariableDeclaration","src":"148:106:16"},{"attributes":{"constant":true,"name":"INTERFACE_META_ID","scope":7053,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6882,"name":"ElementaryTypeName","src":"260:6:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":6883,"name":"Literal","src":"304:10:16"}],"id":6884,"name":"VariableDeclaration","src":"260:54:16"},{"attributes":{"anonymous":false,"documentation":null,"name":"InterfaceChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":6892,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6885,"name":"ElementaryTypeName","src":"344:7:16"}],"id":6886,"name":"VariableDeclaration","src":"344:20:16"},{"attributes":{"constant":false,"indexed":true,"name":"interfaceID","scope":6892,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6887,"name":"ElementaryTypeName","src":"366:6:16"}],"id":6888,"name":"VariableDeclaration","src":"366:26:16"},{"attributes":{"constant":false,"indexed":false,"name":"implementer","scope":6892,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6889,"name":"ElementaryTypeName","src":"394:7:16"}],"id":6890,"name":"VariableDeclaration","src":"394:19:16"}],"id":6891,"name":"ParameterList","src":"343:71:16"}],"id":6892,"name":"EventDefinition","src":"321:94:16"},{"attributes":{"constant":false,"name":"interfaces","scope":7053,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(bytes4 => address))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(bytes4 => address))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6893,"name":"ElementaryTypeName","src":"429:7:16"},{"attributes":{"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6894,"name":"ElementaryTypeName","src":"446:6:16"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6895,"name":"ElementaryTypeName","src":"454:7:16"}],"id":6896,"name":"Mapping","src":"438:24:16"}],"id":6897,"name":"Mapping","src":"421:42:16"}],"id":6898,"name":"VariableDeclaration","src":"421:53:16"},{"attributes":{"documentation":"Sets an interface associated with a name.\nSetting the address to 0 restores the default behaviour of querying the contract at `addr()` for interface support.\n@param node The node to update.\n@param interfaceID The EIP 168 interface ID.\n@param implementer The address of a contract that implements this interface for this node.","implemented":true,"isConstructor":false,"kind":"function","name":"setInterface","scope":7053,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":6925,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6899,"name":"ElementaryTypeName","src":"880:7:16"}],"id":6900,"name":"VariableDeclaration","src":"880:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":6925,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6901,"name":"ElementaryTypeName","src":"894:6:16"}],"id":6902,"name":"VariableDeclaration","src":"894:18:16"},{"attributes":{"constant":false,"name":"implementer","scope":6925,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6903,"name":"ElementaryTypeName","src":"914:7:16"}],"id":6904,"name":"VariableDeclaration","src":"914:19:16"}],"id":6905,"name":"ParameterList","src":"879:55:16"},{"attributes":{"parameters":[null]},"children":[],"id":6909,"name":"ParameterList","src":"961:0:16"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":6906,"name":"Identifier","src":"944:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6900,"type":"bytes32","value":"node"},"id":6907,"name":"Identifier","src":"955:4:16"}],"id":6908,"name":"ModifierInvocation","src":"944:16:16"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6910,"name":"Identifier","src":"971:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6900,"type":"bytes32","value":"node"},"id":6911,"name":"Identifier","src":"982:4:16"}],"id":6913,"name":"IndexAccess","src":"971:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6902,"type":"bytes4","value":"interfaceID"},"id":6912,"name":"Identifier","src":"988:11:16"}],"id":6914,"name":"IndexAccess","src":"971:29:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6904,"type":"address","value":"implementer"},"id":6915,"name":"Identifier","src":"1003:11:16"}],"id":6916,"name":"Assignment","src":"971:43:16"}],"id":6917,"name":"ExpressionStatement","src":"971:43:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":6892,"type":"function (bytes32,bytes4,address)","value":"InterfaceChanged"},"id":6918,"name":"Identifier","src":"1029:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6900,"type":"bytes32","value":"node"},"id":6919,"name":"Identifier","src":"1046:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6902,"type":"bytes4","value":"interfaceID"},"id":6920,"name":"Identifier","src":"1052:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6904,"type":"address","value":"implementer"},"id":6921,"name":"Identifier","src":"1065:11:16"}],"id":6922,"name":"FunctionCall","src":"1029:48:16"}],"id":6923,"name":"EmitStatement","src":"1024:53:16"}],"id":6924,"name":"Block","src":"961:123:16"}],"id":6925,"name":"FunctionDefinition","src":"858:226:16"},{"attributes":{"documentation":"Returns the address of a contract that implements the specified interface for this name.\nIf an implementer has not been set for this interfaceID and name, the resolver will query\nthe contract at `addr()`. If `addr()` is set, a contract exists at that address, and that\ncontract implements EIP168 and returns `true` for the specified interfaceID, its address\nwill be returned.\n@param node The ENS node to query.\n@param interfaceID The EIP 168 interface ID to check for.\n@return The address that implements this interface, or 0 if the interface is unsupported.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"interfaceImplementer","scope":7053,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7035,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6926,"name":"ElementaryTypeName","src":"1751:7:16"}],"id":6927,"name":"VariableDeclaration","src":"1751:12:16"},{"attributes":{"constant":false,"name":"interfaceID","scope":7035,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":6928,"name":"ElementaryTypeName","src":"1765:6:16"}],"id":6929,"name":"VariableDeclaration","src":"1765:18:16"}],"id":6930,"name":"ParameterList","src":"1750:34:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":7035,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6931,"name":"ElementaryTypeName","src":"1808:7:16"}],"id":6932,"name":"VariableDeclaration","src":"1808:7:16"}],"id":6933,"name":"ParameterList","src":"1807:9:16"},{"children":[{"attributes":{"assignments":[6935]},"children":[{"attributes":{"constant":false,"name":"implementer","scope":7034,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6934,"name":"ElementaryTypeName","src":"1827:7:16"}],"id":6935,"name":"VariableDeclaration","src":"1827:19:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(bytes4 => address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6898,"type":"mapping(bytes32 => mapping(bytes4 => address))","value":"interfaces"},"id":6936,"name":"Identifier","src":"1849:10:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6927,"type":"bytes32","value":"node"},"id":6937,"name":"Identifier","src":"1860:4:16"}],"id":6938,"name":"IndexAccess","src":"1849:16:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6929,"type":"bytes4","value":"interfaceID"},"id":6939,"name":"Identifier","src":"1866:11:16"}],"id":6940,"name":"IndexAccess","src":"1849:29:16"}],"id":6941,"name":"VariableDeclarationStatement","src":"1827:51:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6935,"type":"address","value":"implementer"},"id":6942,"name":"Identifier","src":"1891:11:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6943,"name":"ElementaryTypeNameExpression","src":"1906:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6944,"name":"Literal","src":"1914:1:16"}],"id":6945,"name":"FunctionCall","src":"1906:10:16"}],"id":6946,"name":"BinaryOperation","src":"1891:25:16"},{"children":[{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6935,"type":"address","value":"implementer"},"id":6947,"name":"Identifier","src":"1939:11:16"}],"id":6948,"name":"Return","src":"1932:18:16"}],"id":6949,"name":"Block","src":"1918:43:16"}],"id":6950,"name":"IfStatement","src":"1888:73:16"},{"attributes":{"assignments":[6952]},"children":[{"attributes":{"constant":false,"name":"a","scope":7034,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":6951,"name":"ElementaryTypeName","src":"1971:7:16"}],"id":6952,"name":"VariableDeclaration","src":"1971:9:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[6228,6283],"referencedDeclaration":6228,"type":"function (bytes32) view returns (address payable)","value":"addr"},"id":6953,"name":"Identifier","src":"1983:4:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6927,"type":"bytes32","value":"node"},"id":6954,"name":"Identifier","src":"1988:4:16"}],"id":6955,"name":"FunctionCall","src":"1983:10:16"}],"id":6956,"name":"VariableDeclarationStatement","src":"1971:22:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6952,"type":"address","value":"a"},"id":6957,"name":"Identifier","src":"2006:1:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6958,"name":"ElementaryTypeNameExpression","src":"2011:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6959,"name":"Literal","src":"2019:1:16"}],"id":6960,"name":"FunctionCall","src":"2011:10:16"}],"id":6961,"name":"BinaryOperation","src":"2006:15:16"},{"children":[{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6962,"name":"ElementaryTypeNameExpression","src":"2044:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6963,"name":"Literal","src":"2052:1:16"}],"id":6964,"name":"FunctionCall","src":"2044:10:16"}],"id":6965,"name":"Return","src":"2037:17:16"}],"id":6966,"name":"Block","src":"2023:42:16"}],"id":6967,"name":"IfStatement","src":"2003:62:16"},{"attributes":{"assignments":[6969,6971]},"children":[{"attributes":{"constant":false,"name":"success","scope":7034,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":6968,"name":"ElementaryTypeName","src":"2076:4:16"}],"id":6969,"name":"VariableDeclaration","src":"2076:12:16"},{"attributes":{"constant":false,"name":"returnData","scope":7034,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":6970,"name":"ElementaryTypeName","src":"2090:5:16"}],"id":6971,"name":"VariableDeclaration","src":"2090:23:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6952,"type":"address","value":"a"},"id":6972,"name":"Identifier","src":"2117:1:16"}],"id":6973,"name":"MemberAccess","src":"2117:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":6974,"name":"Identifier","src":"2130:3:16"}],"id":6975,"name":"MemberAccess","src":"2130:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":6976,"name":"Literal","src":"2154:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6884,"type":"bytes4","value":"INTERFACE_META_ID"},"id":6977,"name":"Identifier","src":"2183:17:16"}],"id":6978,"name":"FunctionCall","src":"2130:71:16"}],"id":6979,"name":"FunctionCall","src":"2117:85:16"}],"id":6980,"name":"VariableDeclarationStatement","src":"2075:127:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"bool","value":"success"},"id":6981,"name":"Identifier","src":"2216:7:16"}],"id":6982,"name":"UnaryOperation","src":"2215:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":6983,"name":"Identifier","src":"2227:10:16"}],"id":6984,"name":"MemberAccess","src":"2227:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":6985,"name":"Literal","src":"2247:2:16"}],"id":6986,"name":"BinaryOperation","src":"2227:22:16"}],"id":6987,"name":"BinaryOperation","src":"2215:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":6988,"name":"Identifier","src":"2253:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":6989,"name":"Literal","src":"2264:2:16"}],"id":6990,"name":"IndexAccess","src":"2253:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6991,"name":"Literal","src":"2271:1:16"}],"id":6992,"name":"BinaryOperation","src":"2253:19:16"}],"id":6993,"name":"BinaryOperation","src":"2215:57:16"},{"children":[{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":6994,"name":"ElementaryTypeNameExpression","src":"2342:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":6995,"name":"Literal","src":"2350:1:16"}],"id":6996,"name":"FunctionCall","src":"2342:10:16"}],"id":6997,"name":"Return","src":"2335:17:16"}],"id":6998,"name":"Block","src":"2274:89:16"}],"id":6999,"name":"IfStatement","src":"2212:151:16"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"bool","value":"success"},"id":7000,"name":"Identifier","src":"2374:7:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":7001,"name":"Identifier","src":"2383:10:16"}],"id":7002,"name":"TupleExpression","src":"2373:21:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"staticcall","referencedDeclaration":null,"type":"function (bytes memory) view returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6952,"type":"address","value":"a"},"id":7003,"name":"Identifier","src":"2397:1:16"}],"id":7004,"name":"MemberAccess","src":"2397:12:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_01ffc9a7a5cef8baa21ed3c5c0d7e23accb804b619e9333b597f47a0d84076e2","typeString":"literal_string \"supportsInterface(bytes4)\""},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodeWithSignature","referencedDeclaration":null,"type":"function (string memory) pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":7005,"name":"Identifier","src":"2410:3:16"}],"id":7006,"name":"MemberAccess","src":"2410:23:16"},{"attributes":{"argumentTypes":null,"hexvalue":"737570706f727473496e746572666163652862797465733429","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"supportsInterface(bytes4)\"","value":"supportsInterface(bytes4)"},"id":7007,"name":"Literal","src":"2434:27:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6929,"type":"bytes4","value":"interfaceID"},"id":7008,"name":"Identifier","src":"2463:11:16"}],"id":7009,"name":"FunctionCall","src":"2410:65:16"}],"id":7010,"name":"FunctionCall","src":"2397:79:16"}],"id":7011,"name":"Assignment","src":"2373:103:16"}],"id":7012,"name":"ExpressionStatement","src":"2373:103:16"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6969,"type":"bool","value":"success"},"id":7013,"name":"Identifier","src":"2490:7:16"}],"id":7014,"name":"UnaryOperation","src":"2489:8:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":7015,"name":"Identifier","src":"2501:10:16"}],"id":7016,"name":"MemberAccess","src":"2501:17:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7017,"name":"Literal","src":"2521:2:16"}],"id":7018,"name":"BinaryOperation","src":"2501:22:16"}],"id":7019,"name":"BinaryOperation","src":"2489:34:16"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes1","typeString":"bytes1"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6971,"type":"bytes memory","value":"returnData"},"id":7020,"name":"Identifier","src":"2527:10:16"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":7021,"name":"Literal","src":"2538:2:16"}],"id":7022,"name":"IndexAccess","src":"2527:14:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7023,"name":"Literal","src":"2545:1:16"}],"id":7024,"name":"BinaryOperation","src":"2527:19:16"}],"id":7025,"name":"BinaryOperation","src":"2489:57:16"},{"children":[{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":7026,"name":"ElementaryTypeNameExpression","src":"2628:7:16"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7027,"name":"Literal","src":"2636:1:16"}],"id":7028,"name":"FunctionCall","src":"2628:10:16"}],"id":7029,"name":"Return","src":"2621:17:16"}],"id":7030,"name":"Block","src":"2548:101:16"}],"id":7031,"name":"IfStatement","src":"2486:163:16"},{"attributes":{"functionReturnParameters":6933},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6952,"type":"address","value":"a"},"id":7032,"name":"Identifier","src":"2666:1:16"}],"id":7033,"name":"Return","src":"2659:8:16"}],"id":7034,"name":"Block","src":"1817:857:16"}],"id":7035,"name":"FunctionDefinition","src":"1721:953:16"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7053,"stateMutability":"pure","superFunction":6304,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7052,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7036,"name":"ElementaryTypeName","src":"2707:6:16"}],"id":7037,"name":"VariableDeclaration","src":"2707:18:16"}],"id":7038,"name":"ParameterList","src":"2706:20:16"},{"children":[{"attributes":{"constant":false,"name":"","scope":7052,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7039,"name":"ElementaryTypeName","src":"2747:4:16"}],"id":7040,"name":"VariableDeclaration","src":"2747:4:16"}],"id":7041,"name":"ParameterList","src":"2746:6:16"},{"children":[{"attributes":{"functionReturnParameters":7041},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7037,"type":"bytes4","value":"interfaceID"},"id":7042,"name":"Identifier","src":"2770:11:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":6881,"type":"bytes4","value":"INTERFACE_INTERFACE_ID"},"id":7043,"name":"Identifier","src":"2785:22:16"}],"id":7044,"name":"BinaryOperation","src":"2770:37:16"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":6304,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10588,"type":"contract super InterfaceResolver","value":"super"},"id":7045,"name":"Identifier","src":"2811:5:16"}],"id":7046,"name":"MemberAccess","src":"2811:23:16"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7037,"type":"bytes4","value":"interfaceID"},"id":7047,"name":"Identifier","src":"2835:11:16"}],"id":7048,"name":"FunctionCall","src":"2811:36:16"}],"id":7049,"name":"BinaryOperation","src":"2770:77:16"}],"id":7050,"name":"Return","src":"2763:84:16"}],"id":7051,"name":"Block","src":"2753:101:16"}],"id":7052,"name":"FunctionDefinition","src":"2680:174:16"}],"id":7053,"name":"ContractDefinition","src":"85:2771:16"}],"id":7054,"name":"SourceUnit","src":"0:2857:16"}},"externals/ens/profiles/NameResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/NameResolver.sol","exportedSymbols":{"NameResolver":[7123]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7055,"name":"PragmaDirective","src":"0:23:17"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":7124,"symbolAliases":[null],"unitAlias":""},"id":7056,"name":"ImportDirective","src":"25:29:17"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7123,9183],"name":"NameResolver","scope":7124},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":7057,"name":"UserDefinedTypeName","src":"81:12:17"}],"id":7058,"name":"InheritanceSpecifier","src":"81:12:17"},{"attributes":{"constant":true,"name":"NAME_INTERFACE_ID","scope":7123,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7059,"name":"ElementaryTypeName","src":"100:6:17"},{"attributes":{"argumentTypes":null,"hexvalue":"30783639316633343331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1763652657","value":"0x691f3431"},"id":7060,"name":"Literal","src":"144:10:17"}],"id":7061,"name":"VariableDeclaration","src":"100:54:17"},{"attributes":{"anonymous":false,"documentation":null,"name":"NameChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":7067,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7062,"name":"ElementaryTypeName","src":"179:7:17"}],"id":7063,"name":"VariableDeclaration","src":"179:20:17"},{"attributes":{"constant":false,"indexed":false,"name":"name","scope":7067,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7064,"name":"ElementaryTypeName","src":"201:6:17"}],"id":7065,"name":"VariableDeclaration","src":"201:11:17"}],"id":7066,"name":"ParameterList","src":"178:35:17"}],"id":7067,"name":"EventDefinition","src":"161:53:17"},{"attributes":{"constant":false,"name":"names","scope":7123,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => string)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => string)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7068,"name":"ElementaryTypeName","src":"228:7:17"},{"attributes":{"name":"string","type":"string"},"id":7069,"name":"ElementaryTypeName","src":"237:6:17"}],"id":7070,"name":"Mapping","src":"220:24:17"}],"id":7071,"name":"VariableDeclaration","src":"220:30:17"},{"attributes":{"documentation":"Sets the name associated with an ENS node, for reverse records.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param name The name to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setName","scope":7123,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7093,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7072,"name":"ElementaryTypeName","src":"509:7:17"}],"id":7073,"name":"VariableDeclaration","src":"509:12:17"},{"attributes":{"constant":false,"name":"name","scope":7093,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7074,"name":"ElementaryTypeName","src":"523:6:17"}],"id":7075,"name":"VariableDeclaration","src":"523:20:17"}],"id":7076,"name":"ParameterList","src":"508:36:17"},{"attributes":{"parameters":[null]},"children":[],"id":7080,"name":"ParameterList","src":"571:0:17"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":7077,"name":"Identifier","src":"554:10:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7073,"type":"bytes32","value":"node"},"id":7078,"name":"Identifier","src":"565:4:17"}],"id":7079,"name":"ModifierInvocation","src":"554:16:17"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7071,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":7081,"name":"Identifier","src":"581:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7073,"type":"bytes32","value":"node"},"id":7082,"name":"Identifier","src":"587:4:17"}],"id":7083,"name":"IndexAccess","src":"581:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7075,"type":"string calldata","value":"name"},"id":7084,"name":"Identifier","src":"595:4:17"}],"id":7085,"name":"Assignment","src":"581:18:17"}],"id":7086,"name":"ExpressionStatement","src":"581:18:17"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":7067,"type":"function (bytes32,string memory)","value":"NameChanged"},"id":7087,"name":"Identifier","src":"614:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7073,"type":"bytes32","value":"node"},"id":7088,"name":"Identifier","src":"626:4:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7075,"type":"string calldata","value":"name"},"id":7089,"name":"Identifier","src":"632:4:17"}],"id":7090,"name":"FunctionCall","src":"614:23:17"}],"id":7091,"name":"EmitStatement","src":"609:28:17"}],"id":7092,"name":"Block","src":"571:73:17"}],"id":7093,"name":"FunctionDefinition","src":"492:152:17"},{"attributes":{"documentation":"Returns the name associated with an ENS node, for reverse records.\nDefined in EIP181.\n@param node The ENS node to query.\n@return The associated name.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"name","scope":7123,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7105,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7094,"name":"ElementaryTypeName","src":"858:7:17"}],"id":7095,"name":"VariableDeclaration","src":"858:12:17"}],"id":7096,"name":"ParameterList","src":"857:14:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":7105,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7097,"name":"ElementaryTypeName","src":"895:6:17"}],"id":7098,"name":"VariableDeclaration","src":"895:13:17"}],"id":7099,"name":"ParameterList","src":"894:15:17"},{"children":[{"attributes":{"functionReturnParameters":7099},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7071,"type":"mapping(bytes32 => string storage ref)","value":"names"},"id":7100,"name":"Identifier","src":"927:5:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7095,"type":"bytes32","value":"node"},"id":7101,"name":"Identifier","src":"933:4:17"}],"id":7102,"name":"IndexAccess","src":"927:11:17"}],"id":7103,"name":"Return","src":"920:18:17"}],"id":7104,"name":"Block","src":"910:35:17"}],"id":7105,"name":"FunctionDefinition","src":"844:101:17"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7123,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7122,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7106,"name":"ElementaryTypeName","src":"978:6:17"}],"id":7107,"name":"VariableDeclaration","src":"978:18:17"}],"id":7108,"name":"ParameterList","src":"977:20:17"},{"children":[{"attributes":{"constant":false,"name":"","scope":7122,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7109,"name":"ElementaryTypeName","src":"1018:4:17"}],"id":7110,"name":"VariableDeclaration","src":"1018:4:17"}],"id":7111,"name":"ParameterList","src":"1017:6:17"},{"children":[{"attributes":{"functionReturnParameters":7111},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7107,"type":"bytes4","value":"interfaceID"},"id":7112,"name":"Identifier","src":"1041:11:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7061,"type":"bytes4","value":"NAME_INTERFACE_ID"},"id":7113,"name":"Identifier","src":"1056:17:17"}],"id":7114,"name":"BinaryOperation","src":"1041:32:17"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10590,"type":"contract super NameResolver","value":"super"},"id":7115,"name":"Identifier","src":"1077:5:17"}],"id":7116,"name":"MemberAccess","src":"1077:23:17"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7107,"type":"bytes4","value":"interfaceID"},"id":7117,"name":"Identifier","src":"1101:11:17"}],"id":7118,"name":"FunctionCall","src":"1077:36:17"}],"id":7119,"name":"BinaryOperation","src":"1041:72:17"}],"id":7120,"name":"Return","src":"1034:79:17"}],"id":7121,"name":"Block","src":"1024:96:17"}],"id":7122,"name":"FunctionDefinition","src":"951:169:17"}],"id":7123,"name":"ContractDefinition","src":"56:1066:17"}],"id":7124,"name":"SourceUnit","src":"0:1123:17"}},"externals/ens/profiles/PubkeyResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/PubkeyResolver.sol","exportedSymbols":{"PubkeyResolver":[7214]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7125,"name":"PragmaDirective","src":"0:23:18"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":7215,"symbolAliases":[null],"unitAlias":""},"id":7126,"name":"ImportDirective","src":"25:29:18"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7214,9183],"name":"PubkeyResolver","scope":7215},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":7127,"name":"UserDefinedTypeName","src":"83:12:18"}],"id":7128,"name":"InheritanceSpecifier","src":"83:12:18"},{"attributes":{"constant":true,"name":"PUBKEY_INTERFACE_ID","scope":7214,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7129,"name":"ElementaryTypeName","src":"102:6:18"},{"attributes":{"argumentTypes":null,"hexvalue":"30786338363930323333","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3362325043","value":"0xc8690233"},"id":7130,"name":"Literal","src":"148:10:18"}],"id":7131,"name":"VariableDeclaration","src":"102:56:18"},{"attributes":{"anonymous":false,"documentation":null,"name":"PubkeyChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":7139,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7132,"name":"ElementaryTypeName","src":"185:7:18"}],"id":7133,"name":"VariableDeclaration","src":"185:20:18"},{"attributes":{"constant":false,"indexed":false,"name":"x","scope":7139,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7134,"name":"ElementaryTypeName","src":"207:7:18"}],"id":7135,"name":"VariableDeclaration","src":"207:9:18"},{"attributes":{"constant":false,"indexed":false,"name":"y","scope":7139,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7136,"name":"ElementaryTypeName","src":"218:7:18"}],"id":7137,"name":"VariableDeclaration","src":"218:9:18"}],"id":7138,"name":"ParameterList","src":"184:44:18"}],"id":7139,"name":"EventDefinition","src":"165:64:18"},{"attributes":{"canonicalName":"PubkeyResolver.PublicKey","name":"PublicKey","scope":7214,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"x","scope":7144,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7140,"name":"ElementaryTypeName","src":"262:7:18"}],"id":7141,"name":"VariableDeclaration","src":"262:9:18"},{"attributes":{"constant":false,"name":"y","scope":7144,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7142,"name":"ElementaryTypeName","src":"281:7:18"}],"id":7143,"name":"VariableDeclaration","src":"281:9:18"}],"id":7144,"name":"StructDefinition","src":"235:62:18"},{"attributes":{"constant":false,"name":"pubkeys","scope":7214,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey)"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7145,"name":"ElementaryTypeName","src":"311:7:18"},{"attributes":{"contractScope":null,"name":"PublicKey","referencedDeclaration":7144,"type":"struct PubkeyResolver.PublicKey"},"id":7146,"name":"UserDefinedTypeName","src":"320:9:18"}],"id":7147,"name":"Mapping","src":"303:27:18"}],"id":7148,"name":"VariableDeclaration","src":"303:35:18"},{"attributes":{"documentation":"Sets the SECP256k1 public key associated with an ENS node.\n@param node The ENS node to query\n@param x the X coordinate of the curve point for the public key.\n@param y the Y coordinate of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","name":"setPubkey","scope":7214,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7176,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7149,"name":"ElementaryTypeName","src":"631:7:18"}],"id":7150,"name":"VariableDeclaration","src":"631:12:18"},{"attributes":{"constant":false,"name":"x","scope":7176,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7151,"name":"ElementaryTypeName","src":"645:7:18"}],"id":7152,"name":"VariableDeclaration","src":"645:9:18"},{"attributes":{"constant":false,"name":"y","scope":7176,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7153,"name":"ElementaryTypeName","src":"656:7:18"}],"id":7154,"name":"VariableDeclaration","src":"656:9:18"}],"id":7155,"name":"ParameterList","src":"630:36:18"},{"attributes":{"parameters":[null]},"children":[],"id":7159,"name":"ParameterList","src":"693:0:18"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":7156,"name":"Identifier","src":"676:10:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7150,"type":"bytes32","value":"node"},"id":7157,"name":"Identifier","src":"687:4:18"}],"id":7158,"name":"ModifierInvocation","src":"676:16:18"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7148,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":7160,"name":"Identifier","src":"703:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7150,"type":"bytes32","value":"node"},"id":7161,"name":"Identifier","src":"711:4:18"}],"id":7162,"name":"IndexAccess","src":"703:13:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct PubkeyResolver.PublicKey memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7144,"type":"type(struct PubkeyResolver.PublicKey storage pointer)","value":"PublicKey"},"id":7163,"name":"Identifier","src":"719:9:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7152,"type":"bytes32","value":"x"},"id":7164,"name":"Identifier","src":"729:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7154,"type":"bytes32","value":"y"},"id":7165,"name":"Identifier","src":"732:1:18"}],"id":7166,"name":"FunctionCall","src":"719:15:18"}],"id":7167,"name":"Assignment","src":"703:31:18"}],"id":7168,"name":"ExpressionStatement","src":"703:31:18"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":7139,"type":"function (bytes32,bytes32,bytes32)","value":"PubkeyChanged"},"id":7169,"name":"Identifier","src":"749:13:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7150,"type":"bytes32","value":"node"},"id":7170,"name":"Identifier","src":"763:4:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7152,"type":"bytes32","value":"x"},"id":7171,"name":"Identifier","src":"769:1:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7154,"type":"bytes32","value":"y"},"id":7172,"name":"Identifier","src":"772:1:18"}],"id":7173,"name":"FunctionCall","src":"749:25:18"}],"id":7174,"name":"EmitStatement","src":"744:30:18"}],"id":7175,"name":"Block","src":"693:88:18"}],"id":7176,"name":"FunctionDefinition","src":"612:169:18"},{"attributes":{"documentation":"Returns the SECP256k1 public key associated with an ENS node.\nDefined in EIP 619.\n@param node The ENS node to query\n@return x, y the X and Y coordinates of the curve point for the public key.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pubkey","scope":7214,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7177,"name":"ElementaryTypeName","src":"1039:7:18"}],"id":7178,"name":"VariableDeclaration","src":"1039:12:18"}],"id":7179,"name":"ParameterList","src":"1038:14:18"},{"children":[{"attributes":{"constant":false,"name":"x","scope":7196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7180,"name":"ElementaryTypeName","src":"1076:7:18"}],"id":7181,"name":"VariableDeclaration","src":"1076:9:18"},{"attributes":{"constant":false,"name":"y","scope":7196,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7182,"name":"ElementaryTypeName","src":"1087:7:18"}],"id":7183,"name":"VariableDeclaration","src":"1087:9:18"}],"id":7184,"name":"ParameterList","src":"1075:22:18"},{"children":[{"attributes":{"functionReturnParameters":7184},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(bytes32,bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"x","referencedDeclaration":7141,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7148,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":7185,"name":"Identifier","src":"1116:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7178,"type":"bytes32","value":"node"},"id":7186,"name":"Identifier","src":"1124:4:18"}],"id":7187,"name":"IndexAccess","src":"1116:13:18"}],"id":7188,"name":"MemberAccess","src":"1116:15:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"y","referencedDeclaration":7143,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct PubkeyResolver.PublicKey storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7148,"type":"mapping(bytes32 => struct PubkeyResolver.PublicKey storage ref)","value":"pubkeys"},"id":7189,"name":"Identifier","src":"1133:7:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7178,"type":"bytes32","value":"node"},"id":7190,"name":"Identifier","src":"1141:4:18"}],"id":7191,"name":"IndexAccess","src":"1133:13:18"}],"id":7192,"name":"MemberAccess","src":"1133:15:18"}],"id":7193,"name":"TupleExpression","src":"1115:34:18"}],"id":7194,"name":"Return","src":"1108:41:18"}],"id":7195,"name":"Block","src":"1098:58:18"}],"id":7196,"name":"FunctionDefinition","src":"1023:133:18"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7214,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7213,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7197,"name":"ElementaryTypeName","src":"1189:6:18"}],"id":7198,"name":"VariableDeclaration","src":"1189:18:18"}],"id":7199,"name":"ParameterList","src":"1188:20:18"},{"children":[{"attributes":{"constant":false,"name":"","scope":7213,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7200,"name":"ElementaryTypeName","src":"1229:4:18"}],"id":7201,"name":"VariableDeclaration","src":"1229:4:18"}],"id":7202,"name":"ParameterList","src":"1228:6:18"},{"children":[{"attributes":{"functionReturnParameters":7202},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7198,"type":"bytes4","value":"interfaceID"},"id":7203,"name":"Identifier","src":"1252:11:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7131,"type":"bytes4","value":"PUBKEY_INTERFACE_ID"},"id":7204,"name":"Identifier","src":"1267:19:18"}],"id":7205,"name":"BinaryOperation","src":"1252:34:18"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10592,"type":"contract super PubkeyResolver","value":"super"},"id":7206,"name":"Identifier","src":"1290:5:18"}],"id":7207,"name":"MemberAccess","src":"1290:23:18"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7198,"type":"bytes4","value":"interfaceID"},"id":7208,"name":"Identifier","src":"1314:11:18"}],"id":7209,"name":"FunctionCall","src":"1290:36:18"}],"id":7210,"name":"BinaryOperation","src":"1252:74:18"}],"id":7211,"name":"Return","src":"1245:81:18"}],"id":7212,"name":"Block","src":"1235:98:18"}],"id":7213,"name":"FunctionDefinition","src":"1162:171:18"}],"id":7214,"name":"ContractDefinition","src":"56:1279:18"}],"id":7215,"name":"SourceUnit","src":"0:1336:18"}},"externals/ens/profiles/TextResolver.sol":{"AST":{"attributes":{"absolutePath":"externals/ens/profiles/TextResolver.sol","exportedSymbols":{"TextResolver":[7297]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7216,"name":"PragmaDirective","src":"0:23:19"},{"attributes":{"SourceUnit":9184,"absolutePath":"externals/ens/ResolverBase.sol","file":"../ResolverBase.sol","scope":7298,"symbolAliases":[null],"unitAlias":""},"id":7217,"name":"ImportDirective","src":"25:29:19"},{"attributes":{"contractDependencies":[9183],"contractKind":"contract","documentation":null,"fullyImplemented":false,"linearizedBaseContracts":[7297,9183],"name":"TextResolver","scope":7298},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ResolverBase","referencedDeclaration":9183,"type":"contract ResolverBase"},"id":7218,"name":"UserDefinedTypeName","src":"81:12:19"}],"id":7219,"name":"InheritanceSpecifier","src":"81:12:19"},{"attributes":{"constant":true,"name":"TEXT_INTERFACE_ID","scope":7297,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7220,"name":"ElementaryTypeName","src":"100:6:19"},{"attributes":{"argumentTypes":null,"hexvalue":"30783539643164343363","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1506923580","value":"0x59d1d43c"},"id":7221,"name":"Literal","src":"144:10:19"}],"id":7222,"name":"VariableDeclaration","src":"100:54:19"},{"attributes":{"anonymous":false,"documentation":null,"name":"TextChanged"},"children":[{"children":[{"attributes":{"constant":false,"indexed":true,"name":"node","scope":7230,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7223,"name":"ElementaryTypeName","src":"179:7:19"}],"id":7224,"name":"VariableDeclaration","src":"179:20:19"},{"attributes":{"constant":false,"indexed":true,"name":"indexedKey","scope":7230,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7225,"name":"ElementaryTypeName","src":"201:6:19"}],"id":7226,"name":"VariableDeclaration","src":"201:25:19"},{"attributes":{"constant":false,"indexed":false,"name":"key","scope":7230,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7227,"name":"ElementaryTypeName","src":"228:6:19"}],"id":7228,"name":"VariableDeclaration","src":"228:10:19"}],"id":7229,"name":"ParameterList","src":"178:61:19"}],"id":7230,"name":"EventDefinition","src":"161:79:19"},{"attributes":{"constant":false,"name":"texts","scope":7297,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes32 => mapping(string => string))","value":null,"visibility":"internal"},"children":[{"attributes":{"type":"mapping(bytes32 => mapping(string => string))"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7231,"name":"ElementaryTypeName","src":"254:7:19"},{"attributes":{"type":"mapping(string => string)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7232,"name":"ElementaryTypeName","src":"271:6:19"},{"attributes":{"name":"string","type":"string"},"id":7233,"name":"ElementaryTypeName","src":"279:6:19"}],"id":7234,"name":"Mapping","src":"263:23:19"}],"id":7235,"name":"Mapping","src":"246:41:19"}],"id":7236,"name":"VariableDeclaration","src":"246:47:19"},{"attributes":{"documentation":"Sets the text data associated with an ENS node and key.\nMay only be called by the owner of that node in the ENS registry.\n@param node The node to update.\n@param key The key to set.\n@param value The text data value to set.","implemented":true,"isConstructor":false,"kind":"function","name":"setText","scope":7297,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7263,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7237,"name":"ElementaryTypeName","src":"590:7:19"}],"id":7238,"name":"VariableDeclaration","src":"590:12:19"},{"attributes":{"constant":false,"name":"key","scope":7263,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7239,"name":"ElementaryTypeName","src":"604:6:19"}],"id":7240,"name":"VariableDeclaration","src":"604:19:19"},{"attributes":{"constant":false,"name":"value","scope":7263,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7241,"name":"ElementaryTypeName","src":"625:6:19"}],"id":7242,"name":"VariableDeclaration","src":"625:21:19"}],"id":7243,"name":"ParameterList","src":"589:58:19"},{"attributes":{"parameters":[null]},"children":[],"id":7247,"name":"ParameterList","src":"674:0:19"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9150,"type":"modifier (bytes32)","value":"authorised"},"id":7244,"name":"Identifier","src":"657:10:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"bytes32","value":"node"},"id":7245,"name":"Identifier","src":"668:4:19"}],"id":7246,"name":"ModifierInvocation","src":"657:16:19"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7236,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":7248,"name":"Identifier","src":"684:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"bytes32","value":"node"},"id":7249,"name":"Identifier","src":"690:4:19"}],"id":7251,"name":"IndexAccess","src":"684:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"string calldata","value":"key"},"id":7250,"name":"Identifier","src":"696:3:19"}],"id":7252,"name":"IndexAccess","src":"684:16:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7242,"type":"string calldata","value":"value"},"id":7253,"name":"Identifier","src":"703:5:19"}],"id":7254,"name":"Assignment","src":"684:24:19"}],"id":7255,"name":"ExpressionStatement","src":"684:24:19"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"},{"typeIdentifier":"t_string_calldata_ptr","typeString":"string calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":7230,"type":"function (bytes32,string memory,string memory)","value":"TextChanged"},"id":7256,"name":"Identifier","src":"723:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7238,"type":"bytes32","value":"node"},"id":7257,"name":"Identifier","src":"735:4:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"string calldata","value":"key"},"id":7258,"name":"Identifier","src":"741:3:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7240,"type":"string calldata","value":"key"},"id":7259,"name":"Identifier","src":"746:3:19"}],"id":7260,"name":"FunctionCall","src":"723:27:19"}],"id":7261,"name":"EmitStatement","src":"718:32:19"}],"id":7262,"name":"Block","src":"674:83:19"}],"id":7263,"name":"FunctionDefinition","src":"573:184:19"},{"attributes":{"documentation":"Returns the text data associated with an ENS node and key.\n@param node The ENS node to query.\n@param key The text data key to query.\n@return The associated text data.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"text","scope":7297,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"node","scope":7279,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7264,"name":"ElementaryTypeName","src":"988:7:19"}],"id":7265,"name":"VariableDeclaration","src":"988:12:19"},{"attributes":{"constant":false,"name":"key","scope":7279,"stateVariable":false,"storageLocation":"calldata","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7266,"name":"ElementaryTypeName","src":"1002:6:19"}],"id":7267,"name":"VariableDeclaration","src":"1002:19:19"}],"id":7268,"name":"ParameterList","src":"987:35:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":7279,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7269,"name":"ElementaryTypeName","src":"1046:6:19"}],"id":7270,"name":"VariableDeclaration","src":"1046:13:19"}],"id":7271,"name":"ParameterList","src":"1045:15:19"},{"children":[{"attributes":{"functionReturnParameters":7271},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"mapping(string memory => string storage ref)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7236,"type":"mapping(bytes32 => mapping(string memory => string storage ref))","value":"texts"},"id":7272,"name":"Identifier","src":"1078:5:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7265,"type":"bytes32","value":"node"},"id":7273,"name":"Identifier","src":"1084:4:19"}],"id":7274,"name":"IndexAccess","src":"1078:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7267,"type":"string calldata","value":"key"},"id":7275,"name":"Identifier","src":"1090:3:19"}],"id":7276,"name":"IndexAccess","src":"1078:16:19"}],"id":7277,"name":"Return","src":"1071:23:19"}],"id":7278,"name":"Block","src":"1061:40:19"}],"id":7279,"name":"FunctionDefinition","src":"974:127:19"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":7297,"stateMutability":"pure","superFunction":9131,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"interfaceID","scope":7296,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":7280,"name":"ElementaryTypeName","src":"1134:6:19"}],"id":7281,"name":"VariableDeclaration","src":"1134:18:19"}],"id":7282,"name":"ParameterList","src":"1133:20:19"},{"children":[{"attributes":{"constant":false,"name":"","scope":7296,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7283,"name":"ElementaryTypeName","src":"1174:4:19"}],"id":7284,"name":"VariableDeclaration","src":"1174:4:19"}],"id":7285,"name":"ParameterList","src":"1173:6:19"},{"children":[{"attributes":{"functionReturnParameters":7285},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7281,"type":"bytes4","value":"interfaceID"},"id":7286,"name":"Identifier","src":"1197:11:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7222,"type":"bytes4","value":"TEXT_INTERFACE_ID"},"id":7287,"name":"Identifier","src":"1212:17:19"}],"id":7288,"name":"BinaryOperation","src":"1197:32:19"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"supportsInterface","referencedDeclaration":9131,"type":"function (bytes4) pure returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10594,"type":"contract super TextResolver","value":"super"},"id":7289,"name":"Identifier","src":"1233:5:19"}],"id":7290,"name":"MemberAccess","src":"1233:23:19"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7281,"type":"bytes4","value":"interfaceID"},"id":7291,"name":"Identifier","src":"1257:11:19"}],"id":7292,"name":"FunctionCall","src":"1233:36:19"}],"id":7293,"name":"BinaryOperation","src":"1197:72:19"}],"id":7294,"name":"Return","src":"1190:79:19"}],"id":7295,"name":"Block","src":"1180:96:19"}],"id":7296,"name":"FunctionDefinition","src":"1107:169:19"}],"id":7297,"name":"ContractDefinition","src":"56:1222:19"}],"id":7298,"name":"SourceUnit","src":"0:1278:19"}},"externals/strings.sol":{"AST":{"attributes":{"absolutePath":"externals/strings.sol","exportedSymbols":{"strings":[9003]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".0"]},"id":7299,"name":"PragmaDirective","src":"2574:23:20"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":null,"fullyImplemented":true,"linearizedBaseContracts":[9003],"name":"strings","scope":9004},"children":[{"attributes":{"canonicalName":"strings.slice","name":"slice","scope":9003,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"_len","scope":7304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7300,"name":"ElementaryTypeName","src":"2644:4:20"}],"id":7301,"name":"VariableDeclaration","src":"2644:9:20"},{"attributes":{"constant":false,"name":"_ptr","scope":7304,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7302,"name":"ElementaryTypeName","src":"2663:4:20"}],"id":7303,"name":"VariableDeclaration","src":"2663:9:20"}],"id":7304,"name":"StructDefinition","src":"2621:58:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"memcpy","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"dest","scope":7344,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7305,"name":"ElementaryTypeName","src":"2701:4:20"}],"id":7306,"name":"VariableDeclaration","src":"2701:9:20"},{"attributes":{"constant":false,"name":"src","scope":7344,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7307,"name":"ElementaryTypeName","src":"2712:4:20"}],"id":7308,"name":"VariableDeclaration","src":"2712:8:20"},{"attributes":{"constant":false,"name":"len","scope":7344,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7309,"name":"ElementaryTypeName","src":"2722:4:20"}],"id":7310,"name":"VariableDeclaration","src":"2722:8:20"}],"id":7311,"name":"ParameterList","src":"2700:31:20"},{"attributes":{"parameters":[null]},"children":[],"id":7312,"name":"ParameterList","src":"2745:0:20"},{"children":[{"attributes":{"initializationExpression":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7310,"type":"uint256","value":"len"},"id":7313,"name":"Identifier","src":"2811:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7314,"name":"Literal","src":"2818:2:20"}],"id":7315,"name":"BinaryOperation","src":"2811:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7310,"type":"uint256","value":"len"},"id":7316,"name":"Identifier","src":"2822:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7317,"name":"Literal","src":"2829:2:20"}],"id":7318,"name":"Assignment","src":"2822:9:20"}],"id":7319,"name":"ExpressionStatement","src":"2822:9:20"},{"children":[{"attributes":{"externalReferences":[{"src":{"declaration":7308,"isOffset":false,"isSlot":false,"src":"2893:3:20","valueSize":1}},{"dest":{"declaration":7306,"isOffset":false,"isSlot":false,"src":"2881:4:20","valueSize":1}}],"operations":"{ mstore(dest, mload(src)) }"},"children":[],"id":7320,"name":"InlineAssembly","src":"2847:65:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7306,"type":"uint256","value":"dest"},"id":7321,"name":"Identifier","src":"2925:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7322,"name":"Literal","src":"2933:2:20"}],"id":7323,"name":"Assignment","src":"2925:10:20"}],"id":7324,"name":"ExpressionStatement","src":"2925:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7308,"type":"uint256","value":"src"},"id":7325,"name":"Identifier","src":"2949:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7326,"name":"Literal","src":"2956:2:20"}],"id":7327,"name":"Assignment","src":"2949:9:20"}],"id":7328,"name":"ExpressionStatement","src":"2949:9:20"}],"id":7329,"name":"Block","src":"2833:136:20"}],"id":7330,"name":"ForStatement","src":"2805:164:20"},{"attributes":{"assignments":[7332]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7343,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7331,"name":"ElementaryTypeName","src":"3011:4:20"}],"id":7332,"name":"VariableDeclaration","src":"3011:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":7333,"name":"Literal","src":"3023:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7334,"name":"Literal","src":"3031:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7310,"type":"uint256","value":"len"},"id":7335,"name":"Identifier","src":"3036:3:20"}],"id":7336,"name":"BinaryOperation","src":"3031:8:20"}],"id":7337,"name":"TupleExpression","src":"3030:10:20"}],"id":7338,"name":"BinaryOperation","src":"3023:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7339,"name":"Literal","src":"3043:1:20"}],"id":7340,"name":"BinaryOperation","src":"3023:21:20"}],"id":7341,"name":"VariableDeclarationStatement","src":"3011:33:20"},{"attributes":{"externalReferences":[{"src":{"declaration":7308,"isOffset":false,"isSlot":false,"src":"3102:3:20","valueSize":1}},{"mask":{"declaration":7332,"isOffset":false,"isSlot":false,"src":"3112:4:20","valueSize":1}},{"dest":{"declaration":7306,"isOffset":false,"isSlot":false,"src":"3189:4:20","valueSize":1}},{"dest":{"declaration":7306,"isOffset":false,"isSlot":false,"src":"3157:4:20","valueSize":1}},{"mask":{"declaration":7332,"isOffset":false,"isSlot":false,"src":"3164:4:20","valueSize":1}}],"operations":"{\n let srcpart := and(mload(src), not(mask))\n let destpart := and(mload(dest), mask)\n mstore(dest, or(destpart, srcpart))\n}"},"children":[],"id":7342,"name":"InlineAssembly","src":"3054:173:20"}],"id":7343,"name":"Block","src":"2745:488:20"}],"id":7344,"name":"FunctionDefinition","src":"2685:548:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSlice","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7364,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7345,"name":"ElementaryTypeName","src":"3450:6:20"}],"id":7346,"name":"VariableDeclaration","src":"3450:18:20"}],"id":7347,"name":"ParameterList","src":"3449:20:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7364,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7348,"name":"UserDefinedTypeName","src":"3493:5:20"}],"id":7349,"name":"VariableDeclaration","src":"3493:12:20"}],"id":7350,"name":"ParameterList","src":"3492:14:20"},{"children":[{"attributes":{"assignments":[7352],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7363,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7351,"name":"ElementaryTypeName","src":"3517:4:20"}],"id":7352,"name":"VariableDeclaration","src":"3517:8:20"}],"id":7353,"name":"VariableDeclarationStatement","src":"3517:8:20"},{"attributes":{"externalReferences":[{"ptr":{"declaration":7352,"isOffset":false,"isSlot":false,"src":"3558:3:20","valueSize":1}},{"self":{"declaration":7346,"isOffset":false,"isSlot":false,"src":"3569:4:20","valueSize":1}}],"operations":"{ ptr := add(self, 0x20) }"},"children":[],"id":7354,"name":"InlineAssembly","src":"3535:55:20"},{"attributes":{"functionReturnParameters":7350},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7304,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7355,"name":"Identifier","src":"3606:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":7356,"name":"ElementaryTypeNameExpression","src":"3612:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7346,"type":"string memory","value":"self"},"id":7357,"name":"Identifier","src":"3618:4:20"}],"id":7358,"name":"FunctionCall","src":"3612:11:20"}],"id":7359,"name":"MemberAccess","src":"3612:18:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7352,"type":"uint256","value":"ptr"},"id":7360,"name":"Identifier","src":"3632:3:20"}],"id":7361,"name":"FunctionCall","src":"3606:30:20"}],"id":7362,"name":"Return","src":"3599:37:20"}],"id":7363,"name":"Block","src":"3507:136:20"}],"id":7364,"name":"FunctionDefinition","src":"3433:210:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7490,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7365,"name":"ElementaryTypeName","src":"3852:7:20"}],"id":7366,"name":"VariableDeclaration","src":"3852:12:20"}],"id":7367,"name":"ParameterList","src":"3851:14:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7490,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7368,"name":"ElementaryTypeName","src":"3889:4:20"}],"id":7369,"name":"VariableDeclaration","src":"3889:4:20"}],"id":7370,"name":"ParameterList","src":"3888:6:20"},{"children":[{"attributes":{"assignments":[7372],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ret","scope":7489,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7371,"name":"ElementaryTypeName","src":"3905:4:20"}],"id":7372,"name":"VariableDeclaration","src":"3905:8:20"}],"id":7373,"name":"VariableDeclarationStatement","src":"3905:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7374,"name":"Identifier","src":"3927:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7375,"name":"Literal","src":"3935:1:20"}],"id":7376,"name":"BinaryOperation","src":"3927:9:20"},{"attributes":{"functionReturnParameters":7370},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7377,"name":"Literal","src":"3957:1:20"}],"id":7378,"name":"Return","src":"3950:8:20"}],"id":7379,"name":"IfStatement","src":"3923:35:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7380,"name":"ElementaryTypeNameExpression","src":"3972:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7381,"name":"Identifier","src":"3977:4:20"}],"id":7382,"name":"FunctionCall","src":"3972:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666666666666666666666666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1455","value":"0xffffffffffffffffffffffffffffffff"},"id":7383,"name":"Literal","src":"3985:34:20"}],"id":7384,"name":"BinaryOperation","src":"3972:47:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7385,"name":"Literal","src":"4023:1:20"}],"id":7386,"name":"BinaryOperation","src":"3972:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7387,"name":"Identifier","src":"4040:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3136","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 16","value":"16"},"id":7388,"name":"Literal","src":"4047:2:20"}],"id":7389,"name":"Assignment","src":"4040:9:20"}],"id":7390,"name":"ExpressionStatement","src":"4040:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7391,"name":"Identifier","src":"4063:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7392,"name":"ElementaryTypeNameExpression","src":"4070:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7393,"name":"ElementaryTypeNameExpression","src":"4078:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7394,"name":"Identifier","src":"4083:4:20"}],"id":7395,"name":"FunctionCall","src":"4078:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030303030303030303030303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3402...(31 digits omitted)...1456","value":"0x100000000000000000000000000000000"},"id":7396,"name":"Literal","src":"4091:35:20"}],"id":7397,"name":"BinaryOperation","src":"4078:48:20"}],"id":7398,"name":"FunctionCall","src":"4070:57:20"}],"id":7399,"name":"Assignment","src":"4063:64:20"}],"id":7400,"name":"ExpressionStatement","src":"4063:64:20"}],"id":7401,"name":"Block","src":"4026:112:20"}],"id":7402,"name":"IfStatement","src":"3968:170:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7403,"name":"ElementaryTypeNameExpression","src":"4151:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7404,"name":"Identifier","src":"4156:4:20"}],"id":7405,"name":"FunctionCall","src":"4151:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666666666666666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551615","value":"0xffffffffffffffff"},"id":7406,"name":"Literal","src":"4164:18:20"}],"id":7407,"name":"BinaryOperation","src":"4151:31:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7408,"name":"Literal","src":"4186:1:20"}],"id":7409,"name":"BinaryOperation","src":"4151:36:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7410,"name":"Identifier","src":"4203:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7411,"name":"Literal","src":"4210:1:20"}],"id":7412,"name":"Assignment","src":"4203:8:20"}],"id":7413,"name":"ExpressionStatement","src":"4203:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7414,"name":"Identifier","src":"4225:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7415,"name":"ElementaryTypeNameExpression","src":"4232:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7416,"name":"ElementaryTypeNameExpression","src":"4240:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7417,"name":"Identifier","src":"4245:4:20"}],"id":7418,"name":"FunctionCall","src":"4240:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030303030303030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 18446744073709551616","value":"0x10000000000000000"},"id":7419,"name":"Literal","src":"4253:19:20"}],"id":7420,"name":"BinaryOperation","src":"4240:32:20"}],"id":7421,"name":"FunctionCall","src":"4232:41:20"}],"id":7422,"name":"Assignment","src":"4225:48:20"}],"id":7423,"name":"ExpressionStatement","src":"4225:48:20"}],"id":7424,"name":"Block","src":"4189:95:20"}],"id":7425,"name":"IfStatement","src":"4147:137:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7426,"name":"ElementaryTypeNameExpression","src":"4297:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7427,"name":"Identifier","src":"4302:4:20"}],"id":7428,"name":"FunctionCall","src":"4297:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666666666666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967295","value":"0xffffffff"},"id":7429,"name":"Literal","src":"4310:10:20"}],"id":7430,"name":"BinaryOperation","src":"4297:23:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7431,"name":"Literal","src":"4324:1:20"}],"id":7432,"name":"BinaryOperation","src":"4297:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7433,"name":"Identifier","src":"4341:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7434,"name":"Literal","src":"4348:1:20"}],"id":7435,"name":"Assignment","src":"4341:8:20"}],"id":7436,"name":"ExpressionStatement","src":"4341:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7437,"name":"Identifier","src":"4363:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7438,"name":"ElementaryTypeNameExpression","src":"4370:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7439,"name":"ElementaryTypeNameExpression","src":"4378:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7440,"name":"Identifier","src":"4383:4:20"}],"id":7441,"name":"FunctionCall","src":"4378:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3078313030303030303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4294967296","value":"0x100000000"},"id":7442,"name":"Literal","src":"4391:11:20"}],"id":7443,"name":"BinaryOperation","src":"4378:24:20"}],"id":7444,"name":"FunctionCall","src":"4370:33:20"}],"id":7445,"name":"Assignment","src":"4363:40:20"}],"id":7446,"name":"ExpressionStatement","src":"4363:40:20"}],"id":7447,"name":"Block","src":"4327:87:20"}],"id":7448,"name":"IfStatement","src":"4293:121:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7449,"name":"ElementaryTypeNameExpression","src":"4427:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7450,"name":"Identifier","src":"4432:4:20"}],"id":7451,"name":"FunctionCall","src":"4427:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"307866666666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65535","value":"0xffff"},"id":7452,"name":"Literal","src":"4440:6:20"}],"id":7453,"name":"BinaryOperation","src":"4427:19:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7454,"name":"Literal","src":"4450:1:20"}],"id":7455,"name":"BinaryOperation","src":"4427:24:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7456,"name":"Identifier","src":"4467:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7457,"name":"Literal","src":"4474:1:20"}],"id":7458,"name":"Assignment","src":"4467:8:20"}],"id":7459,"name":"ExpressionStatement","src":"4467:8:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7460,"name":"Identifier","src":"4489:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":7461,"name":"ElementaryTypeNameExpression","src":"4496:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7462,"name":"ElementaryTypeNameExpression","src":"4504:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7463,"name":"Identifier","src":"4509:4:20"}],"id":7464,"name":"FunctionCall","src":"4504:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 65536","value":"0x10000"},"id":7465,"name":"Literal","src":"4517:7:20"}],"id":7466,"name":"BinaryOperation","src":"4504:20:20"}],"id":7467,"name":"FunctionCall","src":"4496:29:20"}],"id":7468,"name":"Assignment","src":"4489:36:20"}],"id":7469,"name":"ExpressionStatement","src":"4489:36:20"}],"id":7470,"name":"Block","src":"4453:83:20"}],"id":7471,"name":"IfStatement","src":"4423:113:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint"},"id":7472,"name":"ElementaryTypeNameExpression","src":"4549:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7366,"type":"bytes32","value":"self"},"id":7473,"name":"Identifier","src":"4554:4:20"}],"id":7474,"name":"FunctionCall","src":"4549:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30786666","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xff"},"id":7475,"name":"Literal","src":"4562:4:20"}],"id":7476,"name":"BinaryOperation","src":"4549:17:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7477,"name":"Literal","src":"4570:1:20"}],"id":7478,"name":"BinaryOperation","src":"4549:22:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7479,"name":"Identifier","src":"4587:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7480,"name":"Literal","src":"4594:1:20"}],"id":7481,"name":"Assignment","src":"4587:8:20"}],"id":7482,"name":"ExpressionStatement","src":"4587:8:20"}],"id":7483,"name":"Block","src":"4573:33:20"}],"id":7484,"name":"IfStatement","src":"4545:61:20"},{"attributes":{"functionReturnParameters":7370},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7485,"name":"Literal","src":"4622:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7372,"type":"uint256","value":"ret"},"id":7486,"name":"Identifier","src":"4627:3:20"}],"id":7487,"name":"BinaryOperation","src":"4622:8:20"}],"id":7488,"name":"Return","src":"4615:15:20"}],"id":7489,"name":"Block","src":"3895:742:20"}],"id":7490,"name":"FunctionDefinition","src":"3839:798:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toSliceB32","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7507,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":7491,"name":"ElementaryTypeName","src":"4963:7:20"}],"id":7492,"name":"VariableDeclaration","src":"4963:12:20"}],"id":7493,"name":"ParameterList","src":"4962:14:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7507,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7494,"name":"UserDefinedTypeName","src":"5000:5:20"}],"id":7495,"name":"VariableDeclaration","src":"5000:16:20"}],"id":7496,"name":"ParameterList","src":"4999:18:20"},{"children":[{"attributes":{"externalReferences":[{"self":{"declaration":7492,"isOffset":false,"isSlot":false,"src":"5222:4:20","valueSize":1}},{"ret":{"declaration":7495,"isOffset":false,"isSlot":false,"src":"5251:3:20","valueSize":1}}],"operations":"{\n let ptr := mload(0x40)\n mstore(0x40, add(ptr, 0x20))\n mstore(ptr, self)\n mstore(add(ret, 0x20), ptr)\n}"},"children":[],"id":7497,"name":"InlineAssembly","src":"5111:166:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7495,"type":"struct strings.slice memory","value":"ret"},"id":7498,"name":"Identifier","src":"5286:3:20"}],"id":7500,"name":"MemberAccess","src":"5286:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[7490,7640],"referencedDeclaration":7490,"type":"function (bytes32) pure returns (uint256)","value":"len"},"id":7501,"name":"Identifier","src":"5297:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7492,"type":"bytes32","value":"self"},"id":7502,"name":"Identifier","src":"5301:4:20"}],"id":7503,"name":"FunctionCall","src":"5297:9:20"}],"id":7504,"name":"Assignment","src":"5286:20:20"}],"id":7505,"name":"ExpressionStatement","src":"5286:20:20"}],"id":7506,"name":"Block","src":"5018:295:20"}],"id":7507,"name":"FunctionDefinition","src":"4943:370:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"copy","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7522,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7508,"name":"UserDefinedTypeName","src":"5528:5:20"}],"id":7509,"name":"VariableDeclaration","src":"5528:17:20"}],"id":7510,"name":"ParameterList","src":"5527:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7522,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7511,"name":"UserDefinedTypeName","src":"5570:5:20"}],"id":7512,"name":"VariableDeclaration","src":"5570:12:20"}],"id":7513,"name":"ParameterList","src":"5569:14:20"},{"children":[{"attributes":{"functionReturnParameters":7513},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7304,"type":"type(struct strings.slice storage pointer)","value":"slice"},"id":7514,"name":"Identifier","src":"5601:5:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"struct strings.slice memory","value":"self"},"id":7515,"name":"Identifier","src":"5607:4:20"}],"id":7516,"name":"MemberAccess","src":"5607:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7509,"type":"struct strings.slice memory","value":"self"},"id":7517,"name":"Identifier","src":"5618:4:20"}],"id":7518,"name":"MemberAccess","src":"5618:9:20"}],"id":7519,"name":"FunctionCall","src":"5601:27:20"}],"id":7520,"name":"Return","src":"5594:34:20"}],"id":7521,"name":"Block","src":"5584:51:20"}],"id":7522,"name":"FunctionDefinition","src":"5514:121:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"toString","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7552,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7523,"name":"UserDefinedTypeName","src":"5825:5:20"}],"id":7524,"name":"VariableDeclaration","src":"5825:17:20"}],"id":7525,"name":"ParameterList","src":"5824:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7552,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7526,"name":"ElementaryTypeName","src":"5867:6:20"}],"id":7527,"name":"VariableDeclaration","src":"5867:13:20"}],"id":7528,"name":"ParameterList","src":"5866:15:20"},{"children":[{"attributes":{"assignments":[7530]},"children":[{"attributes":{"constant":false,"name":"ret","scope":7551,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":7529,"name":"ElementaryTypeName","src":"5892:6:20"}],"id":7530,"name":"VariableDeclaration","src":"5892:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":7531,"name":"ElementaryTypeName","src":"5916:6:20"}],"id":7532,"name":"NewExpression","src":"5912:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"struct strings.slice memory","value":"self"},"id":7533,"name":"Identifier","src":"5923:4:20"}],"id":7534,"name":"MemberAccess","src":"5923:9:20"}],"id":7535,"name":"FunctionCall","src":"5912:21:20"}],"id":7536,"name":"VariableDeclarationStatement","src":"5892:41:20"},{"attributes":{"assignments":[7538],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":7551,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7537,"name":"ElementaryTypeName","src":"5943:4:20"}],"id":7538,"name":"VariableDeclaration","src":"5943:11:20"}],"id":7539,"name":"VariableDeclarationStatement","src":"5943:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":7538,"isOffset":false,"isSlot":false,"src":"5975:6:20","valueSize":1}},{"ret":{"declaration":7530,"isOffset":false,"isSlot":false,"src":"5989:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":7540,"name":"InlineAssembly","src":"5964:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":7541,"name":"Identifier","src":"6009:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7538,"type":"uint256","value":"retptr"},"id":7542,"name":"Identifier","src":"6016:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"struct strings.slice memory","value":"self"},"id":7543,"name":"Identifier","src":"6024:4:20"}],"id":7544,"name":"MemberAccess","src":"6024:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7524,"type":"struct strings.slice memory","value":"self"},"id":7545,"name":"Identifier","src":"6035:4:20"}],"id":7546,"name":"MemberAccess","src":"6035:9:20"}],"id":7547,"name":"FunctionCall","src":"6009:36:20"}],"id":7548,"name":"ExpressionStatement","src":"6009:36:20"},{"attributes":{"functionReturnParameters":7528},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7530,"type":"string memory","value":"ret"},"id":7549,"name":"Identifier","src":"6062:3:20"}],"id":7550,"name":"Return","src":"6055:10:20"}],"id":7551,"name":"Block","src":"5882:190:20"}],"id":7552,"name":"FunctionDefinition","src":"5807:265:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"len","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7640,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7553,"name":"UserDefinedTypeName","src":"6476:5:20"}],"id":7554,"name":"VariableDeclaration","src":"6476:17:20"}],"id":7555,"name":"ParameterList","src":"6475:19:20"},{"children":[{"attributes":{"constant":false,"name":"l","scope":7640,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7556,"name":"ElementaryTypeName","src":"6518:4:20"}],"id":7557,"name":"VariableDeclaration","src":"6518:6:20"}],"id":7558,"name":"ParameterList","src":"6517:8:20"},{"children":[{"attributes":{"assignments":[7560]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":7639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7559,"name":"ElementaryTypeName","src":"6611:4:20"}],"id":7560,"name":"VariableDeclaration","src":"6611:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7554,"type":"struct strings.slice memory","value":"self"},"id":7561,"name":"Identifier","src":"6622:4:20"}],"id":7562,"name":"MemberAccess","src":"6622:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":7563,"name":"Literal","src":"6634:2:20"}],"id":7564,"name":"BinaryOperation","src":"6622:14:20"}],"id":7565,"name":"VariableDeclarationStatement","src":"6611:25:20"},{"attributes":{"assignments":[7567]},"children":[{"attributes":{"constant":false,"name":"end","scope":7639,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7566,"name":"ElementaryTypeName","src":"6646:4:20"}],"id":7567,"name":"VariableDeclaration","src":"6646:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7568,"name":"Identifier","src":"6657:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7554,"type":"struct strings.slice memory","value":"self"},"id":7569,"name":"Identifier","src":"6663:4:20"}],"id":7570,"name":"MemberAccess","src":"6663:9:20"}],"id":7571,"name":"BinaryOperation","src":"6657:15:20"}],"id":7572,"name":"VariableDeclarationStatement","src":"6646:26:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7557,"type":"uint256","value":"l"},"id":7573,"name":"Identifier","src":"6687:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7574,"name":"Literal","src":"6691:1:20"}],"id":7575,"name":"Assignment","src":"6687:5:20"}],"id":7576,"name":"ExpressionStatement","src":"6687:5:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7577,"name":"Identifier","src":"6694:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7567,"type":"uint256","value":"end"},"id":7578,"name":"Identifier","src":"6700:3:20"}],"id":7579,"name":"BinaryOperation","src":"6694:9:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7557,"type":"uint256","value":"l"},"id":7580,"name":"Identifier","src":"6705:1:20"}],"id":7581,"name":"UnaryOperation","src":"6705:3:20"}],"id":7582,"name":"ExpressionStatement","src":"6705:3:20"},{"children":[{"attributes":{"assignments":[7584],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7637,"stateVariable":false,"storageLocation":"default","type":"uint8","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint8","type":"uint8"},"id":7583,"name":"ElementaryTypeName","src":"6724:5:20"}],"id":7584,"name":"VariableDeclaration","src":"6724:7:20"}],"id":7585,"name":"VariableDeclarationStatement","src":"6724:7:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7584,"isOffset":false,"isSlot":false,"src":"6756:1:20","valueSize":1}},{"ptr":{"declaration":7560,"isOffset":false,"isSlot":false,"src":"6771:3:20","valueSize":1}}],"operations":"{ b := and(mload(ptr), 0xFF) }"},"children":[],"id":7586,"name":"InlineAssembly","src":"6745:39:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7587,"name":"Identifier","src":"6801:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7588,"name":"Literal","src":"6805:4:20"}],"id":7589,"name":"BinaryOperation","src":"6801:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7590,"name":"Identifier","src":"6829:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7591,"name":"Literal","src":"6836:1:20"}],"id":7592,"name":"Assignment","src":"6829:8:20"}],"id":7593,"name":"ExpressionStatement","src":"6829:8:20"}],"id":7594,"name":"Block","src":"6811:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7595,"name":"Identifier","src":"6862:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7596,"name":"Literal","src":"6866:4:20"}],"id":7597,"name":"BinaryOperation","src":"6862:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7598,"name":"Identifier","src":"6890:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7599,"name":"Literal","src":"6897:1:20"}],"id":7600,"name":"Assignment","src":"6890:8:20"}],"id":7601,"name":"ExpressionStatement","src":"6890:8:20"}],"id":7602,"name":"Block","src":"6872:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7603,"name":"Identifier","src":"6923:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7604,"name":"Literal","src":"6927:4:20"}],"id":7605,"name":"BinaryOperation","src":"6923:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7606,"name":"Identifier","src":"6951:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7607,"name":"Literal","src":"6958:1:20"}],"id":7608,"name":"Assignment","src":"6951:8:20"}],"id":7609,"name":"ExpressionStatement","src":"6951:8:20"}],"id":7610,"name":"Block","src":"6933:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7611,"name":"Identifier","src":"6984:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"0xF8"},"id":7612,"name":"Literal","src":"6988:4:20"}],"id":7613,"name":"BinaryOperation","src":"6984:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7614,"name":"Identifier","src":"7012:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7615,"name":"Literal","src":"7019:1:20"}],"id":7616,"name":"Assignment","src":"7012:8:20"}],"id":7617,"name":"ExpressionStatement","src":"7012:8:20"}],"id":7618,"name":"Block","src":"6994:41:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint8","typeString":"uint8"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7584,"type":"uint8","value":"b"},"id":7619,"name":"Identifier","src":"7045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784643","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 252","value":"0xFC"},"id":7620,"name":"Literal","src":"7049:4:20"}],"id":7621,"name":"BinaryOperation","src":"7045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7622,"name":"Identifier","src":"7073:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"35","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5","value":"5"},"id":7623,"name":"Literal","src":"7080:1:20"}],"id":7624,"name":"Assignment","src":"7073:8:20"}],"id":7625,"name":"ExpressionStatement","src":"7073:8:20"}],"id":7626,"name":"Block","src":"7055:41:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7560,"type":"uint256","value":"ptr"},"id":7627,"name":"Identifier","src":"7120:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"36","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 6","value":"6"},"id":7628,"name":"Literal","src":"7127:1:20"}],"id":7629,"name":"Assignment","src":"7120:8:20"}],"id":7630,"name":"ExpressionStatement","src":"7120:8:20"}],"id":7631,"name":"Block","src":"7102:41:20"}],"id":7632,"name":"IfStatement","src":"7041:102:20"}],"id":7633,"name":"IfStatement","src":"6980:163:20"}],"id":7634,"name":"IfStatement","src":"6919:224:20"}],"id":7635,"name":"IfStatement","src":"6858:285:20"}],"id":7636,"name":"IfStatement","src":"6797:346:20"}],"id":7637,"name":"Block","src":"6710:443:20"}],"id":7638,"name":"ForStatement","src":"6682:471:20"}],"id":7639,"name":"Block","src":"6526:633:20"}],"id":7640,"name":"FunctionDefinition","src":"6463:696:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"empty","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7653,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7641,"name":"UserDefinedTypeName","src":"7367:5:20"}],"id":7642,"name":"VariableDeclaration","src":"7367:17:20"}],"id":7643,"name":"ParameterList","src":"7366:19:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7653,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7644,"name":"ElementaryTypeName","src":"7409:4:20"}],"id":7645,"name":"VariableDeclaration","src":"7409:4:20"}],"id":7646,"name":"ParameterList","src":"7408:6:20"},{"children":[{"attributes":{"functionReturnParameters":7646},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7642,"type":"struct strings.slice memory","value":"self"},"id":7647,"name":"Identifier","src":"7432:4:20"}],"id":7648,"name":"MemberAccess","src":"7432:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7649,"name":"Literal","src":"7445:1:20"}],"id":7650,"name":"BinaryOperation","src":"7432:14:20"}],"id":7651,"name":"Return","src":"7425:21:20"}],"id":7652,"name":"Block","src":"7415:38:20"}],"id":7653,"name":"FunctionDefinition","src":"7352:101:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"compare","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7782,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7654,"name":"UserDefinedTypeName","src":"7898:5:20"}],"id":7655,"name":"VariableDeclaration","src":"7898:17:20"},{"attributes":{"constant":false,"name":"other","scope":7782,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7656,"name":"UserDefinedTypeName","src":"7917:5:20"}],"id":7657,"name":"VariableDeclaration","src":"7917:18:20"}],"id":7658,"name":"ParameterList","src":"7897:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7782,"stateVariable":false,"storageLocation":"default","type":"int256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"int","type":"int256"},"id":7659,"name":"ElementaryTypeName","src":"7960:3:20"}],"id":7660,"name":"VariableDeclaration","src":"7960:3:20"}],"id":7661,"name":"ParameterList","src":"7959:5:20"},{"children":[{"attributes":{"assignments":[7663]},"children":[{"attributes":{"constant":false,"name":"shortest","scope":7781,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7662,"name":"ElementaryTypeName","src":"7975:4:20"}],"id":7663,"name":"VariableDeclaration","src":"7975:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7655,"type":"struct strings.slice memory","value":"self"},"id":7664,"name":"Identifier","src":"7991:4:20"}],"id":7665,"name":"MemberAccess","src":"7991:9:20"}],"id":7666,"name":"VariableDeclarationStatement","src":"7975:25:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7657,"type":"struct strings.slice memory","value":"other"},"id":7667,"name":"Identifier","src":"8014:5:20"}],"id":7668,"name":"MemberAccess","src":"8014:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7655,"type":"struct strings.slice memory","value":"self"},"id":7669,"name":"Identifier","src":"8027:4:20"}],"id":7670,"name":"MemberAccess","src":"8027:9:20"}],"id":7671,"name":"BinaryOperation","src":"8014:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7663,"type":"uint256","value":"shortest"},"id":7672,"name":"Identifier","src":"8050:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7657,"type":"struct strings.slice memory","value":"other"},"id":7673,"name":"Identifier","src":"8061:5:20"}],"id":7674,"name":"MemberAccess","src":"8061:10:20"}],"id":7675,"name":"Assignment","src":"8050:21:20"}],"id":7676,"name":"ExpressionStatement","src":"8050:21:20"}],"id":7677,"name":"IfStatement","src":"8010:61:20"},{"attributes":{"assignments":[7679]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":7781,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7678,"name":"ElementaryTypeName","src":"8082:4:20"}],"id":7679,"name":"VariableDeclaration","src":"8082:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7655,"type":"struct strings.slice memory","value":"self"},"id":7680,"name":"Identifier","src":"8097:4:20"}],"id":7681,"name":"MemberAccess","src":"8097:9:20"}],"id":7682,"name":"VariableDeclarationStatement","src":"8082:24:20"},{"attributes":{"assignments":[7684]},"children":[{"attributes":{"constant":false,"name":"otherptr","scope":7781,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7683,"name":"ElementaryTypeName","src":"8116:4:20"}],"id":7684,"name":"VariableDeclaration","src":"8116:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7657,"type":"struct strings.slice memory","value":"other"},"id":7685,"name":"Identifier","src":"8132:5:20"}],"id":7686,"name":"MemberAccess","src":"8132:10:20"}],"id":7687,"name":"VariableDeclarationStatement","src":"8116:26:20"},{"children":[{"attributes":{"assignments":[7689]},"children":[{"attributes":{"constant":false,"name":"idx","scope":7770,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7688,"name":"ElementaryTypeName","src":"8157:4:20"}],"id":7689,"name":"VariableDeclaration","src":"8157:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7690,"name":"Literal","src":"8168:1:20"}],"id":7691,"name":"VariableDeclarationStatement","src":"8157:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7689,"type":"uint256","value":"idx"},"id":7692,"name":"Identifier","src":"8171:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7663,"type":"uint256","value":"shortest"},"id":7693,"name":"Identifier","src":"8177:8:20"}],"id":7694,"name":"BinaryOperation","src":"8171:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7689,"type":"uint256","value":"idx"},"id":7695,"name":"Identifier","src":"8187:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7696,"name":"Literal","src":"8194:2:20"}],"id":7697,"name":"Assignment","src":"8187:9:20"}],"id":7698,"name":"ExpressionStatement","src":"8187:9:20"},{"children":[{"attributes":{"assignments":[7700],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"a","scope":7769,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7699,"name":"ElementaryTypeName","src":"8212:4:20"}],"id":7700,"name":"VariableDeclaration","src":"8212:6:20"}],"id":7701,"name":"VariableDeclarationStatement","src":"8212:6:20"},{"attributes":{"assignments":[7703],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7769,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7702,"name":"ElementaryTypeName","src":"8232:4:20"}],"id":7703,"name":"VariableDeclaration","src":"8232:6:20"}],"id":7704,"name":"VariableDeclarationStatement","src":"8232:6:20"},{"attributes":{"externalReferences":[{"a":{"declaration":7700,"isOffset":false,"isSlot":false,"src":"8279:1:20","valueSize":1}},{"selfptr":{"declaration":7679,"isOffset":false,"isSlot":false,"src":"8290:7:20","valueSize":1}},{"b":{"declaration":7703,"isOffset":false,"isSlot":false,"src":"8315:1:20","valueSize":1}},{"otherptr":{"declaration":7684,"isOffset":false,"isSlot":false,"src":"8326:8:20","valueSize":1}}],"operations":"{\n a := mload(selfptr)\n b := mload(otherptr)\n}"},"children":[],"id":7705,"name":"InlineAssembly","src":"8252:97:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7700,"type":"uint256","value":"a"},"id":7706,"name":"Identifier","src":"8366:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7703,"type":"uint256","value":"b"},"id":7707,"name":"Identifier","src":"8371:1:20"}],"id":7708,"name":"BinaryOperation","src":"8366:6:20"},{"children":[{"attributes":{"assignments":[7710]},"children":[{"attributes":{"constant":false,"name":"mask","scope":7759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7709,"name":"ElementaryTypeName","src":"8453:7:20"}],"id":7710,"name":"VariableDeclaration","src":"8453:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_minus_1_by_1","typeString":"int_const -1"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint256)","value":"uint256"},"id":7711,"name":"ElementaryTypeNameExpression","src":"8468:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"-","prefix":true,"type":"int_const -1"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7712,"name":"Literal","src":"8477:1:20"}],"id":7713,"name":"UnaryOperation","src":"8476:2:20"}],"id":7714,"name":"FunctionCall","src":"8468:11:20"}],"id":7715,"name":"VariableDeclarationStatement","src":"8453:26:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7663,"type":"uint256","value":"shortest"},"id":7716,"name":"Identifier","src":"8514:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7717,"name":"Literal","src":"8525:2:20"}],"id":7718,"name":"BinaryOperation","src":"8514:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7710,"type":"uint256","value":"mask"},"id":7719,"name":"Identifier","src":"8551:4:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7720,"name":"Literal","src":"8560:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":7721,"name":"Literal","src":"8566:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7722,"name":"Literal","src":"8571:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7663,"type":"uint256","value":"shortest"},"id":7723,"name":"Identifier","src":"8576:8:20"}],"id":7724,"name":"BinaryOperation","src":"8571:13:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7689,"type":"uint256","value":"idx"},"id":7725,"name":"Identifier","src":"8587:3:20"}],"id":7726,"name":"BinaryOperation","src":"8571:19:20"}],"id":7727,"name":"TupleExpression","src":"8570:21:20"}],"id":7728,"name":"BinaryOperation","src":"8566:25:20"}],"id":7729,"name":"TupleExpression","src":"8565:27:20"}],"id":7730,"name":"BinaryOperation","src":"8560:32:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7731,"name":"Literal","src":"8595:1:20"}],"id":7732,"name":"BinaryOperation","src":"8560:36:20"}],"id":7733,"name":"TupleExpression","src":"8559:38:20"}],"id":7734,"name":"UnaryOperation","src":"8558:39:20"}],"id":7735,"name":"Assignment","src":"8551:46:20"}],"id":7736,"name":"ExpressionStatement","src":"8551:46:20"}],"id":7737,"name":"Block","src":"8529:87:20"}],"id":7738,"name":"IfStatement","src":"8510:106:20"},{"attributes":{"assignments":[7740]},"children":[{"attributes":{"constant":false,"name":"diff","scope":7759,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":7739,"name":"ElementaryTypeName","src":"8633:7:20"}],"id":7740,"name":"VariableDeclaration","src":"8633:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7700,"type":"uint256","value":"a"},"id":7741,"name":"Identifier","src":"8649:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7710,"type":"uint256","value":"mask"},"id":7742,"name":"Identifier","src":"8653:4:20"}],"id":7743,"name":"BinaryOperation","src":"8649:8:20"}],"id":7744,"name":"TupleExpression","src":"8648:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7703,"type":"uint256","value":"b"},"id":7745,"name":"Identifier","src":"8662:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7710,"type":"uint256","value":"mask"},"id":7746,"name":"Identifier","src":"8666:4:20"}],"id":7747,"name":"BinaryOperation","src":"8662:8:20"}],"id":7748,"name":"TupleExpression","src":"8661:10:20"}],"id":7749,"name":"BinaryOperation","src":"8648:23:20"}],"id":7750,"name":"VariableDeclarationStatement","src":"8633:38:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"uint256","value":"diff"},"id":7751,"name":"Identifier","src":"8693:4:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7752,"name":"Literal","src":"8701:1:20"}],"id":7753,"name":"BinaryOperation","src":"8693:9:20"},{"attributes":{"functionReturnParameters":7661},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7754,"name":"ElementaryTypeNameExpression","src":"8731:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7740,"type":"uint256","value":"diff"},"id":7755,"name":"Identifier","src":"8735:4:20"}],"id":7756,"name":"FunctionCall","src":"8731:9:20"}],"id":7757,"name":"Return","src":"8724:16:20"}],"id":7758,"name":"IfStatement","src":"8689:51:20"}],"id":7759,"name":"Block","src":"8374:381:20"}],"id":7760,"name":"IfStatement","src":"8362:393:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7679,"type":"uint256","value":"selfptr"},"id":7761,"name":"Identifier","src":"8768:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7762,"name":"Literal","src":"8779:2:20"}],"id":7763,"name":"Assignment","src":"8768:13:20"}],"id":7764,"name":"ExpressionStatement","src":"8768:13:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7684,"type":"uint256","value":"otherptr"},"id":7765,"name":"Identifier","src":"8795:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":7766,"name":"Literal","src":"8807:2:20"}],"id":7767,"name":"Assignment","src":"8795:14:20"}],"id":7768,"name":"ExpressionStatement","src":"8795:14:20"}],"id":7769,"name":"Block","src":"8198:622:20"}],"id":7770,"name":"ForStatement","src":"8152:668:20"},{"attributes":{"functionReturnParameters":7661},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"int256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7771,"name":"ElementaryTypeNameExpression","src":"8836:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7655,"type":"struct strings.slice memory","value":"self"},"id":7772,"name":"Identifier","src":"8840:4:20"}],"id":7773,"name":"MemberAccess","src":"8840:9:20"}],"id":7774,"name":"FunctionCall","src":"8836:14:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(int256)","value":"int"},"id":7775,"name":"ElementaryTypeNameExpression","src":"8853:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7657,"type":"struct strings.slice memory","value":"other"},"id":7776,"name":"Identifier","src":"8857:5:20"}],"id":7777,"name":"MemberAccess","src":"8857:10:20"}],"id":7778,"name":"FunctionCall","src":"8853:15:20"}],"id":7779,"name":"BinaryOperation","src":"8836:32:20"}],"id":7780,"name":"Return","src":"8829:39:20"}],"id":7781,"name":"Block","src":"7965:910:20"}],"id":7782,"name":"FunctionDefinition","src":"7881:994:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"equals","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7799,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7783,"name":"UserDefinedTypeName","src":"9135:5:20"}],"id":7784,"name":"VariableDeclaration","src":"9135:17:20"},{"attributes":{"constant":false,"name":"other","scope":7799,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7785,"name":"UserDefinedTypeName","src":"9154:5:20"}],"id":7786,"name":"VariableDeclaration","src":"9154:18:20"}],"id":7787,"name":"ParameterList","src":"9134:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7799,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":7788,"name":"ElementaryTypeName","src":"9197:4:20"}],"id":7789,"name":"VariableDeclaration","src":"9197:4:20"}],"id":7790,"name":"ParameterList","src":"9196:6:20"},{"children":[{"attributes":{"functionReturnParameters":7790},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_int256","typeString":"int256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"int256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[null],"referencedDeclaration":7782,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (int256)","value":"compare"},"id":7791,"name":"Identifier","src":"9220:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7784,"type":"struct strings.slice memory","value":"self"},"id":7792,"name":"Identifier","src":"9228:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7786,"type":"struct strings.slice memory","value":"other"},"id":7793,"name":"Identifier","src":"9234:5:20"}],"id":7794,"name":"FunctionCall","src":"9220:20:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7795,"name":"Literal","src":"9244:1:20"}],"id":7796,"name":"BinaryOperation","src":"9220:25:20"}],"id":7797,"name":"Return","src":"9213:32:20"}],"id":7798,"name":"Block","src":"9203:49:20"}],"id":7799,"name":"FunctionDefinition","src":"9119:133:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7917,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7800,"name":"UserDefinedTypeName","src":"9563:5:20"}],"id":7801,"name":"VariableDeclaration","src":"9563:17:20"},{"attributes":{"constant":false,"name":"rune","scope":7917,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7802,"name":"UserDefinedTypeName","src":"9582:5:20"}],"id":7803,"name":"VariableDeclaration","src":"9582:17:20"}],"id":7804,"name":"ParameterList","src":"9562:38:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":7917,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7805,"name":"UserDefinedTypeName","src":"9624:5:20"}],"id":7806,"name":"VariableDeclaration","src":"9624:12:20"}],"id":7807,"name":"ParameterList","src":"9623:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7808,"name":"Identifier","src":"9648:4:20"}],"id":7810,"name":"MemberAccess","src":"9648:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7811,"name":"Identifier","src":"9660:4:20"}],"id":7812,"name":"MemberAccess","src":"9660:9:20"}],"id":7813,"name":"Assignment","src":"9648:21:20"}],"id":7814,"name":"ExpressionStatement","src":"9648:21:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7815,"name":"Identifier","src":"9684:4:20"}],"id":7816,"name":"MemberAccess","src":"9684:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7817,"name":"Literal","src":"9697:1:20"}],"id":7818,"name":"BinaryOperation","src":"9684:14:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7819,"name":"Identifier","src":"9714:4:20"}],"id":7821,"name":"MemberAccess","src":"9714:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7822,"name":"Literal","src":"9726:1:20"}],"id":7823,"name":"Assignment","src":"9714:13:20"}],"id":7824,"name":"ExpressionStatement","src":"9714:13:20"},{"attributes":{"functionReturnParameters":7807},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7825,"name":"Identifier","src":"9748:4:20"}],"id":7826,"name":"Return","src":"9741:11:20"}],"id":7827,"name":"Block","src":"9700:63:20"}],"id":7828,"name":"IfStatement","src":"9680:83:20"},{"attributes":{"assignments":[7830],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"l","scope":7916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7829,"name":"ElementaryTypeName","src":"9773:4:20"}],"id":7830,"name":"VariableDeclaration","src":"9773:6:20"}],"id":7831,"name":"VariableDeclarationStatement","src":"9773:6:20"},{"attributes":{"assignments":[7833],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"b","scope":7916,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7832,"name":"ElementaryTypeName","src":"9789:4:20"}],"id":7833,"name":"VariableDeclaration","src":"9789:6:20"}],"id":7834,"name":"VariableDeclarationStatement","src":"9789:6:20"},{"attributes":{"externalReferences":[{"b":{"declaration":7833,"isOffset":false,"isSlot":false,"src":"9878:1:20","valueSize":1}},{"self":{"declaration":7801,"isOffset":false,"isSlot":false,"src":"9907:4:20","valueSize":1}}],"operations":"{\n b := and(mload(sub(mload(add(self, 32)), 31)), 0xFF)\n}"},"children":[],"id":7835,"name":"InlineAssembly","src":"9867:65:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7833,"type":"uint256","value":"b"},"id":7836,"name":"Identifier","src":"9945:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7837,"name":"Literal","src":"9949:4:20"}],"id":7838,"name":"BinaryOperation","src":"9945:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7839,"name":"Identifier","src":"9969:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7840,"name":"Literal","src":"9973:1:20"}],"id":7841,"name":"Assignment","src":"9969:5:20"}],"id":7842,"name":"ExpressionStatement","src":"9969:5:20"}],"id":7843,"name":"Block","src":"9955:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7833,"type":"uint256","value":"b"},"id":7844,"name":"Identifier","src":"9995:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7845,"name":"Literal","src":"9999:4:20"}],"id":7846,"name":"BinaryOperation","src":"9995:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7847,"name":"Identifier","src":"10019:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7848,"name":"Literal","src":"10023:1:20"}],"id":7849,"name":"Assignment","src":"10019:5:20"}],"id":7850,"name":"ExpressionStatement","src":"10019:5:20"}],"id":7851,"name":"Block","src":"10005:30:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7833,"type":"uint256","value":"b"},"id":7852,"name":"Identifier","src":"10045:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7853,"name":"Literal","src":"10049:4:20"}],"id":7854,"name":"BinaryOperation","src":"10045:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7855,"name":"Identifier","src":"10069:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":7856,"name":"Literal","src":"10073:1:20"}],"id":7857,"name":"Assignment","src":"10069:5:20"}],"id":7858,"name":"ExpressionStatement","src":"10069:5:20"}],"id":7859,"name":"Block","src":"10055:30:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7860,"name":"Identifier","src":"10105:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":7861,"name":"Literal","src":"10109:1:20"}],"id":7862,"name":"Assignment","src":"10105:5:20"}],"id":7863,"name":"ExpressionStatement","src":"10105:5:20"}],"id":7864,"name":"Block","src":"10091:30:20"}],"id":7865,"name":"IfStatement","src":"10041:80:20"}],"id":7866,"name":"IfStatement","src":"9991:130:20"}],"id":7867,"name":"IfStatement","src":"9941:180:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7868,"name":"Identifier","src":"10177:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7869,"name":"Identifier","src":"10181:4:20"}],"id":7870,"name":"MemberAccess","src":"10181:9:20"}],"id":7871,"name":"BinaryOperation","src":"10177:13:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7872,"name":"Identifier","src":"10206:4:20"}],"id":7874,"name":"MemberAccess","src":"10206:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7875,"name":"Identifier","src":"10218:4:20"}],"id":7876,"name":"MemberAccess","src":"10218:9:20"}],"id":7877,"name":"Assignment","src":"10206:21:20"}],"id":7878,"name":"ExpressionStatement","src":"10206:21:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7879,"name":"Identifier","src":"10241:4:20"}],"id":7881,"name":"MemberAccess","src":"10241:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7882,"name":"Identifier","src":"10254:4:20"}],"id":7883,"name":"MemberAccess","src":"10254:9:20"}],"id":7884,"name":"Assignment","src":"10241:22:20"}],"id":7885,"name":"ExpressionStatement","src":"10241:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7886,"name":"Identifier","src":"10277:4:20"}],"id":7888,"name":"MemberAccess","src":"10277:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7889,"name":"Literal","src":"10289:1:20"}],"id":7890,"name":"Assignment","src":"10277:13:20"}],"id":7891,"name":"ExpressionStatement","src":"10277:13:20"},{"attributes":{"functionReturnParameters":7807},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7892,"name":"Identifier","src":"10311:4:20"}],"id":7893,"name":"Return","src":"10304:11:20"}],"id":7894,"name":"Block","src":"10192:134:20"}],"id":7895,"name":"IfStatement","src":"10173:153:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7896,"name":"Identifier","src":"10336:4:20"}],"id":7898,"name":"MemberAccess","src":"10336:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7899,"name":"Identifier","src":"10349:1:20"}],"id":7900,"name":"Assignment","src":"10336:14:20"}],"id":7901,"name":"ExpressionStatement","src":"10336:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7801,"type":"struct strings.slice memory","value":"self"},"id":7902,"name":"Identifier","src":"10360:4:20"}],"id":7904,"name":"MemberAccess","src":"10360:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7905,"name":"Identifier","src":"10373:1:20"}],"id":7906,"name":"Assignment","src":"10360:14:20"}],"id":7907,"name":"ExpressionStatement","src":"10360:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7908,"name":"Identifier","src":"10384:4:20"}],"id":7910,"name":"MemberAccess","src":"10384:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7830,"type":"uint256","value":"l"},"id":7911,"name":"Identifier","src":"10396:1:20"}],"id":7912,"name":"Assignment","src":"10384:13:20"}],"id":7913,"name":"ExpressionStatement","src":"10384:13:20"},{"attributes":{"functionReturnParameters":7807},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7803,"type":"struct strings.slice memory","value":"rune"},"id":7914,"name":"Identifier","src":"10414:4:20"}],"id":7915,"name":"Return","src":"10407:11:20"}],"id":7916,"name":"Block","src":"9638:787:20"}],"id":7917,"name":"FunctionDefinition","src":"9545:880:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"nextRune","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":7930,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7918,"name":"UserDefinedTypeName","src":"10683:5:20"}],"id":7919,"name":"VariableDeclaration","src":"10683:17:20"}],"id":7920,"name":"ParameterList","src":"10682:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":7930,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7921,"name":"UserDefinedTypeName","src":"10725:5:20"}],"id":7922,"name":"VariableDeclaration","src":"10725:16:20"}],"id":7923,"name":"ParameterList","src":"10724:18:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[7917,7930],"referencedDeclaration":7917,"type":"function (struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"nextRune"},"id":7924,"name":"Identifier","src":"10753:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7919,"type":"struct strings.slice memory","value":"self"},"id":7925,"name":"Identifier","src":"10762:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7922,"type":"struct strings.slice memory","value":"ret"},"id":7926,"name":"Identifier","src":"10768:3:20"}],"id":7927,"name":"FunctionCall","src":"10753:19:20"}],"id":7928,"name":"ExpressionStatement","src":"10753:19:20"}],"id":7929,"name":"Block","src":"10743:36:20"}],"id":7930,"name":"FunctionDefinition","src":"10665:114:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ord","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8077,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":7931,"name":"UserDefinedTypeName","src":"10988:5:20"}],"id":7932,"name":"VariableDeclaration","src":"10988:17:20"}],"id":7933,"name":"ParameterList","src":"10987:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8077,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7934,"name":"ElementaryTypeName","src":"11030:4:20"}],"id":7935,"name":"VariableDeclaration","src":"11030:8:20"}],"id":7936,"name":"ParameterList","src":"11029:10:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7932,"type":"struct strings.slice memory","value":"self"},"id":7937,"name":"Identifier","src":"11054:4:20"}],"id":7938,"name":"MemberAccess","src":"11054:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7939,"name":"Literal","src":"11067:1:20"}],"id":7940,"name":"BinaryOperation","src":"11054:14:20"},{"children":[{"attributes":{"functionReturnParameters":7936},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":7941,"name":"Literal","src":"11091:1:20"}],"id":7942,"name":"Return","src":"11084:8:20"}],"id":7943,"name":"Block","src":"11070:33:20"}],"id":7944,"name":"IfStatement","src":"11050:53:20"},{"attributes":{"assignments":[7946],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"word","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7945,"name":"ElementaryTypeName","src":"11113:4:20"}],"id":7946,"name":"VariableDeclaration","src":"11113:9:20"}],"id":7947,"name":"VariableDeclarationStatement","src":"11113:9:20"},{"attributes":{"assignments":[7949],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"length","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7948,"name":"ElementaryTypeName","src":"11132:4:20"}],"id":7949,"name":"VariableDeclaration","src":"11132:11:20"}],"id":7950,"name":"VariableDeclarationStatement","src":"11132:11:20"},{"attributes":{"assignments":[7952]},"children":[{"attributes":{"constant":false,"name":"divisor","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7951,"name":"ElementaryTypeName","src":"11153:4:20"}],"id":7952,"name":"VariableDeclaration","src":"11153:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_452312848583266388373324160190187140051835877600158453279131187530910662656_by_1","typeString":"int_const 4523...(67 digits omitted)...2656"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"**","type":"int_const 4523...(67 digits omitted)...2656"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7953,"name":"Literal","src":"11168:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323438","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 248","value":"248"},"id":7954,"name":"Literal","src":"11173:3:20"}],"id":7955,"name":"BinaryOperation","src":"11168:8:20"}],"id":7956,"name":"VariableDeclarationStatement","src":"11153:23:20"},{"attributes":{"externalReferences":[{"word":{"declaration":7946,"isOffset":false,"isSlot":false,"src":"11242:4:20","valueSize":1}},{"self":{"declaration":7932,"isOffset":false,"isSlot":false,"src":"11265:4:20","valueSize":1}}],"operations":"{\n word := mload(mload(add(self, 32)))\n}"},"children":[],"id":7957,"name":"InlineAssembly","src":"11231:47:20"},{"attributes":{"assignments":[7959]},"children":[{"attributes":{"constant":false,"name":"b","scope":8076,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":7958,"name":"ElementaryTypeName","src":"11287:4:20"}],"id":7959,"name":"VariableDeclaration","src":"11287:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7946,"type":"uint256","value":"word"},"id":7960,"name":"Identifier","src":"11296:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"uint256","value":"divisor"},"id":7961,"name":"Identifier","src":"11303:7:20"}],"id":7962,"name":"BinaryOperation","src":"11296:14:20"}],"id":7963,"name":"VariableDeclarationStatement","src":"11287:23:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7964,"name":"Identifier","src":"11324:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":7965,"name":"Literal","src":"11328:4:20"}],"id":7966,"name":"BinaryOperation","src":"11324:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":7967,"name":"Identifier","src":"11348:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7968,"name":"Identifier","src":"11354:1:20"}],"id":7969,"name":"Assignment","src":"11348:7:20"}],"id":7970,"name":"ExpressionStatement","src":"11348:7:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":7971,"name":"Identifier","src":"11369:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":7972,"name":"Literal","src":"11378:1:20"}],"id":7973,"name":"Assignment","src":"11369:10:20"}],"id":7974,"name":"ExpressionStatement","src":"11369:10:20"}],"id":7975,"name":"Block","src":"11334:56:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7976,"name":"Identifier","src":"11400:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784530","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 224","value":"0xE0"},"id":7977,"name":"Literal","src":"11404:4:20"}],"id":7978,"name":"BinaryOperation","src":"11400:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":7979,"name":"Identifier","src":"11424:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7980,"name":"Identifier","src":"11430:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783146","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"0x1F"},"id":7981,"name":"Literal","src":"11434:4:20"}],"id":7982,"name":"BinaryOperation","src":"11430:8:20"}],"id":7983,"name":"Assignment","src":"11424:14:20"}],"id":7984,"name":"ExpressionStatement","src":"11424:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":7985,"name":"Identifier","src":"11452:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":7986,"name":"Literal","src":"11461:1:20"}],"id":7987,"name":"Assignment","src":"11452:10:20"}],"id":7988,"name":"ExpressionStatement","src":"11452:10:20"}],"id":7989,"name":"Block","src":"11410:63:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7990,"name":"Identifier","src":"11483:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784630","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 240","value":"0xF0"},"id":7991,"name":"Literal","src":"11487:4:20"}],"id":7992,"name":"BinaryOperation","src":"11483:8:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":7993,"name":"Identifier","src":"11507:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":7994,"name":"Identifier","src":"11513:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783046","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 15","value":"0x0F"},"id":7995,"name":"Literal","src":"11517:4:20"}],"id":7996,"name":"BinaryOperation","src":"11513:8:20"}],"id":7997,"name":"Assignment","src":"11507:14:20"}],"id":7998,"name":"ExpressionStatement","src":"11507:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":7999,"name":"Identifier","src":"11535:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"33","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 3","value":"3"},"id":8000,"name":"Literal","src":"11544:1:20"}],"id":8001,"name":"Assignment","src":"11535:10:20"}],"id":8002,"name":"ExpressionStatement","src":"11535:10:20"}],"id":8003,"name":"Block","src":"11493:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":8004,"name":"Identifier","src":"11576:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":8005,"name":"Identifier","src":"11582:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783037","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7","value":"0x07"},"id":8006,"name":"Literal","src":"11586:4:20"}],"id":8007,"name":"BinaryOperation","src":"11582:8:20"}],"id":8008,"name":"Assignment","src":"11576:14:20"}],"id":8009,"name":"ExpressionStatement","src":"11576:14:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":8010,"name":"Identifier","src":"11604:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":8011,"name":"Literal","src":"11613:1:20"}],"id":8012,"name":"Assignment","src":"11604:10:20"}],"id":8013,"name":"ExpressionStatement","src":"11604:10:20"}],"id":8014,"name":"Block","src":"11562:63:20"}],"id":8015,"name":"IfStatement","src":"11479:146:20"}],"id":8016,"name":"IfStatement","src":"11396:229:20"}],"id":8017,"name":"IfStatement","src":"11320:305:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":8018,"name":"Identifier","src":"11681:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7932,"type":"struct strings.slice memory","value":"self"},"id":8019,"name":"Identifier","src":"11690:4:20"}],"id":8020,"name":"MemberAccess","src":"11690:9:20"}],"id":8021,"name":"BinaryOperation","src":"11681:18:20"},{"children":[{"attributes":{"functionReturnParameters":7936},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8022,"name":"Literal","src":"11722:1:20"}],"id":8023,"name":"Return","src":"11715:8:20"}],"id":8024,"name":"Block","src":"11701:33:20"}],"id":8025,"name":"IfStatement","src":"11677:57:20"},{"children":[{"attributes":{"assignments":[8027]},"children":[{"attributes":{"constant":false,"name":"i","scope":8073,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8026,"name":"ElementaryTypeName","src":"11749:4:20"}],"id":8027,"name":"VariableDeclaration","src":"11749:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8028,"name":"Literal","src":"11758:1:20"}],"id":8029,"name":"VariableDeclarationStatement","src":"11749:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8027,"type":"uint256","value":"i"},"id":8030,"name":"Identifier","src":"11761:1:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7949,"type":"uint256","value":"length"},"id":8031,"name":"Identifier","src":"11765:6:20"}],"id":8032,"name":"BinaryOperation","src":"11761:10:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8027,"type":"uint256","value":"i"},"id":8033,"name":"Identifier","src":"11773:1:20"}],"id":8034,"name":"UnaryOperation","src":"11773:3:20"}],"id":8035,"name":"ExpressionStatement","src":"11773:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"uint256","value":"divisor"},"id":8036,"name":"Identifier","src":"11792:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"uint256","value":"divisor"},"id":8037,"name":"Identifier","src":"11802:7:20"},{"attributes":{"argumentTypes":null,"hexvalue":"323536","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 256","value":"256"},"id":8038,"name":"Literal","src":"11812:3:20"}],"id":8039,"name":"BinaryOperation","src":"11802:13:20"}],"id":8040,"name":"Assignment","src":"11792:23:20"}],"id":8041,"name":"ExpressionStatement","src":"11792:23:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":8042,"name":"Identifier","src":"11829:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"/","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7946,"type":"uint256","value":"word"},"id":8043,"name":"Identifier","src":"11834:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7952,"type":"uint256","value":"divisor"},"id":8044,"name":"Identifier","src":"11841:7:20"}],"id":8045,"name":"BinaryOperation","src":"11834:14:20"}],"id":8046,"name":"TupleExpression","src":"11833:16:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784646","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 255","value":"0xFF"},"id":8047,"name":"Literal","src":"11852:4:20"}],"id":8048,"name":"BinaryOperation","src":"11833:23:20"}],"id":8049,"name":"Assignment","src":"11829:27:20"}],"id":8050,"name":"ExpressionStatement","src":"11829:27:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":8051,"name":"Identifier","src":"11874:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30784330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 192","value":"0xC0"},"id":8052,"name":"Literal","src":"11878:4:20"}],"id":8053,"name":"BinaryOperation","src":"11874:8:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 128","value":"0x80"},"id":8054,"name":"Literal","src":"11886:4:20"}],"id":8055,"name":"BinaryOperation","src":"11874:16:20"},{"children":[{"attributes":{"functionReturnParameters":7936},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8056,"name":"Literal","src":"11959:1:20"}],"id":8057,"name":"Return","src":"11952:8:20"}],"id":8058,"name":"Block","src":"11892:83:20"}],"id":8059,"name":"IfStatement","src":"11870:105:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":8060,"name":"Identifier","src":"11988:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"|","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":8061,"name":"Identifier","src":"11995:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3634","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 64","value":"64"},"id":8062,"name":"Literal","src":"12001:2:20"}],"id":8063,"name":"BinaryOperation","src":"11995:8:20"}],"id":8064,"name":"TupleExpression","src":"11994:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7959,"type":"uint256","value":"b"},"id":8065,"name":"Identifier","src":"12008:1:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30783346","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 63","value":"0x3F"},"id":8066,"name":"Literal","src":"12012:4:20"}],"id":8067,"name":"BinaryOperation","src":"12008:8:20"}],"id":8068,"name":"TupleExpression","src":"12007:10:20"}],"id":8069,"name":"BinaryOperation","src":"11994:23:20"}],"id":8070,"name":"Assignment","src":"11988:29:20"}],"id":8071,"name":"ExpressionStatement","src":"11988:29:20"}],"id":8072,"name":"Block","src":"11778:250:20"}],"id":8073,"name":"ForStatement","src":"11744:284:20"},{"attributes":{"functionReturnParameters":7936},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":7935,"type":"uint256","value":"ret"},"id":8074,"name":"Identifier","src":"12045:3:20"}],"id":8075,"name":"Return","src":"12038:10:20"}],"id":8076,"name":"Block","src":"11040:1015:20"}],"id":8077,"name":"FunctionDefinition","src":"10975:1080:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"keccak","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8086,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8078,"name":"UserDefinedTypeName","src":"12222:5:20"}],"id":8079,"name":"VariableDeclaration","src":"12222:17:20"}],"id":8080,"name":"ParameterList","src":"12221:19:20"},{"children":[{"attributes":{"constant":false,"name":"ret","scope":8086,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8081,"name":"ElementaryTypeName","src":"12264:7:20"}],"id":8082,"name":"VariableDeclaration","src":"12264:11:20"}],"id":8083,"name":"ParameterList","src":"12263:13:20"},{"children":[{"attributes":{"externalReferences":[{"ret":{"declaration":8082,"isOffset":false,"isSlot":false,"src":"12310:3:20","valueSize":1}},{"self":{"declaration":8079,"isOffset":false,"isSlot":false,"src":"12337:4:20","valueSize":1}},{"self":{"declaration":8079,"isOffset":false,"isSlot":false,"src":"12355:4:20","valueSize":1}}],"operations":"{\n ret := keccak256(mload(add(self, 32)), mload(self))\n}"},"children":[],"id":8084,"name":"InlineAssembly","src":"12287:84:20"}],"id":8085,"name":"Block","src":"12277:100:20"}],"id":8086,"name":"FunctionDefinition","src":"12206:171:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"startsWith","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8120,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8087,"name":"UserDefinedTypeName","src":"12646:5:20"}],"id":8088,"name":"VariableDeclaration","src":"12646:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8120,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8089,"name":"UserDefinedTypeName","src":"12665:5:20"}],"id":8090,"name":"VariableDeclaration","src":"12665:19:20"}],"id":8091,"name":"ParameterList","src":"12645:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8120,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8092,"name":"ElementaryTypeName","src":"12709:4:20"}],"id":8093,"name":"VariableDeclaration","src":"12709:4:20"}],"id":8094,"name":"ParameterList","src":"12708:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8088,"type":"struct strings.slice memory","value":"self"},"id":8095,"name":"Identifier","src":"12729:4:20"}],"id":8096,"name":"MemberAccess","src":"12729:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8090,"type":"struct strings.slice memory","value":"needle"},"id":8097,"name":"Identifier","src":"12741:6:20"}],"id":8098,"name":"MemberAccess","src":"12741:11:20"}],"id":8099,"name":"BinaryOperation","src":"12729:23:20"},{"children":[{"attributes":{"functionReturnParameters":8094},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8100,"name":"Literal","src":"12775:5:20"}],"id":8101,"name":"Return","src":"12768:12:20"}],"id":8102,"name":"Block","src":"12754:37:20"}],"id":8103,"name":"IfStatement","src":"12725:66:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8088,"type":"struct strings.slice memory","value":"self"},"id":8104,"name":"Identifier","src":"12805:4:20"}],"id":8105,"name":"MemberAccess","src":"12805:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8090,"type":"struct strings.slice memory","value":"needle"},"id":8106,"name":"Identifier","src":"12818:6:20"}],"id":8107,"name":"MemberAccess","src":"12818:11:20"}],"id":8108,"name":"BinaryOperation","src":"12805:24:20"},{"children":[{"attributes":{"functionReturnParameters":8094},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8109,"name":"Literal","src":"12852:4:20"}],"id":8110,"name":"Return","src":"12845:11:20"}],"id":8111,"name":"Block","src":"12831:36:20"}],"id":8112,"name":"IfStatement","src":"12801:66:20"},{"attributes":{"assignments":[8114],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":8119,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8113,"name":"ElementaryTypeName","src":"12877:4:20"}],"id":8114,"name":"VariableDeclaration","src":"12877:10:20"}],"id":8115,"name":"VariableDeclarationStatement","src":"12877:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":8090,"isOffset":false,"isSlot":false,"src":"12940:6:20","valueSize":1}},{"self":{"declaration":8088,"isOffset":false,"isSlot":false,"src":"12985:4:20","valueSize":1}},{"equal":{"declaration":8114,"isOffset":false,"isSlot":false,"src":"13064:5:20","valueSize":1}},{"needle":{"declaration":8090,"isOffset":false,"isSlot":false,"src":"13037:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8116,"name":"InlineAssembly","src":"12897:246:20"},{"attributes":{"functionReturnParameters":8094},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8114,"type":"bool","value":"equal"},"id":8117,"name":"Identifier","src":"13159:5:20"}],"id":8118,"name":"Return","src":"13152:12:20"}],"id":8119,"name":"Block","src":"12715:456:20"}],"id":8120,"name":"FunctionDefinition","src":"12626:545:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"beyond","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8170,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8121,"name":"UserDefinedTypeName","src":"13459:5:20"}],"id":8122,"name":"VariableDeclaration","src":"13459:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8170,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8123,"name":"UserDefinedTypeName","src":"13478:5:20"}],"id":8124,"name":"VariableDeclaration","src":"13478:19:20"}],"id":8125,"name":"ParameterList","src":"13458:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8170,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8126,"name":"UserDefinedTypeName","src":"13522:5:20"}],"id":8127,"name":"VariableDeclaration","src":"13522:12:20"}],"id":8128,"name":"ParameterList","src":"13521:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8129,"name":"Identifier","src":"13550:4:20"}],"id":8130,"name":"MemberAccess","src":"13550:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"struct strings.slice memory","value":"needle"},"id":8131,"name":"Identifier","src":"13562:6:20"}],"id":8132,"name":"MemberAccess","src":"13562:11:20"}],"id":8133,"name":"BinaryOperation","src":"13550:23:20"},{"children":[{"attributes":{"functionReturnParameters":8128},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8134,"name":"Identifier","src":"13596:4:20"}],"id":8135,"name":"Return","src":"13589:11:20"}],"id":8136,"name":"Block","src":"13575:36:20"}],"id":8137,"name":"IfStatement","src":"13546:65:20"},{"attributes":{"assignments":[8139]},"children":[{"attributes":{"constant":false,"name":"equal","scope":8169,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8138,"name":"ElementaryTypeName","src":"13621:4:20"}],"id":8139,"name":"VariableDeclaration","src":"13621:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8140,"name":"Literal","src":"13634:4:20"}],"id":8141,"name":"VariableDeclarationStatement","src":"13621:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8142,"name":"Identifier","src":"13652:4:20"}],"id":8143,"name":"MemberAccess","src":"13652:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"struct strings.slice memory","value":"needle"},"id":8144,"name":"Identifier","src":"13665:6:20"}],"id":8145,"name":"MemberAccess","src":"13665:11:20"}],"id":8146,"name":"BinaryOperation","src":"13652:24:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":8124,"isOffset":false,"isSlot":false,"src":"13739:6:20","valueSize":1}},{"self":{"declaration":8122,"isOffset":false,"isSlot":false,"src":"13788:4:20","valueSize":1}},{"equal":{"declaration":8139,"isOffset":false,"isSlot":false,"src":"13875:5:20","valueSize":1}},{"needle":{"declaration":8124,"isOffset":false,"isSlot":false,"src":"13844:6:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let selfptr := mload(add(self, 0x20))\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8147,"name":"InlineAssembly","src":"13692:266:20"}],"id":8148,"name":"Block","src":"13678:290:20"}],"id":8149,"name":"IfStatement","src":"13648:320:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8139,"type":"bool","value":"equal"},"id":8150,"name":"Identifier","src":"13982:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8151,"name":"Identifier","src":"14003:4:20"}],"id":8153,"name":"MemberAccess","src":"14003:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"struct strings.slice memory","value":"needle"},"id":8154,"name":"Identifier","src":"14016:6:20"}],"id":8155,"name":"MemberAccess","src":"14016:11:20"}],"id":8156,"name":"Assignment","src":"14003:24:20"}],"id":8157,"name":"ExpressionStatement","src":"14003:24:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8158,"name":"Identifier","src":"14041:4:20"}],"id":8160,"name":"MemberAccess","src":"14041:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8124,"type":"struct strings.slice memory","value":"needle"},"id":8161,"name":"Identifier","src":"14054:6:20"}],"id":8162,"name":"MemberAccess","src":"14054:11:20"}],"id":8163,"name":"Assignment","src":"14041:24:20"}],"id":8164,"name":"ExpressionStatement","src":"14041:24:20"}],"id":8165,"name":"Block","src":"13989:87:20"}],"id":8166,"name":"IfStatement","src":"13978:98:20"},{"attributes":{"functionReturnParameters":8128},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8122,"type":"struct strings.slice memory","value":"self"},"id":8167,"name":"Identifier","src":"14093:4:20"}],"id":8168,"name":"Return","src":"14086:11:20"}],"id":8169,"name":"Block","src":"13536:568:20"}],"id":8170,"name":"FunctionDefinition","src":"13443:661:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"endsWith","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8214,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8171,"name":"UserDefinedTypeName","src":"14372:5:20"}],"id":8172,"name":"VariableDeclaration","src":"14372:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8214,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8173,"name":"UserDefinedTypeName","src":"14391:5:20"}],"id":8174,"name":"VariableDeclaration","src":"14391:19:20"}],"id":8175,"name":"ParameterList","src":"14371:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8214,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8176,"name":"ElementaryTypeName","src":"14435:4:20"}],"id":8177,"name":"VariableDeclaration","src":"14435:4:20"}],"id":8178,"name":"ParameterList","src":"14434:6:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8172,"type":"struct strings.slice memory","value":"self"},"id":8179,"name":"Identifier","src":"14455:4:20"}],"id":8180,"name":"MemberAccess","src":"14455:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8174,"type":"struct strings.slice memory","value":"needle"},"id":8181,"name":"Identifier","src":"14467:6:20"}],"id":8182,"name":"MemberAccess","src":"14467:11:20"}],"id":8183,"name":"BinaryOperation","src":"14455:23:20"},{"children":[{"attributes":{"functionReturnParameters":8178},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":8184,"name":"Literal","src":"14501:5:20"}],"id":8185,"name":"Return","src":"14494:12:20"}],"id":8186,"name":"Block","src":"14480:37:20"}],"id":8187,"name":"IfStatement","src":"14451:66:20"},{"attributes":{"assignments":[8189]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8213,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8188,"name":"ElementaryTypeName","src":"14527:4:20"}],"id":8189,"name":"VariableDeclaration","src":"14527:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8172,"type":"struct strings.slice memory","value":"self"},"id":8190,"name":"Identifier","src":"14542:4:20"}],"id":8191,"name":"MemberAccess","src":"14542:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8172,"type":"struct strings.slice memory","value":"self"},"id":8192,"name":"Identifier","src":"14554:4:20"}],"id":8193,"name":"MemberAccess","src":"14554:9:20"}],"id":8194,"name":"BinaryOperation","src":"14542:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8174,"type":"struct strings.slice memory","value":"needle"},"id":8195,"name":"Identifier","src":"14566:6:20"}],"id":8196,"name":"MemberAccess","src":"14566:11:20"}],"id":8197,"name":"BinaryOperation","src":"14542:35:20"}],"id":8198,"name":"VariableDeclarationStatement","src":"14527:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8189,"type":"uint256","value":"selfptr"},"id":8199,"name":"Identifier","src":"14592:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8174,"type":"struct strings.slice memory","value":"needle"},"id":8200,"name":"Identifier","src":"14603:6:20"}],"id":8201,"name":"MemberAccess","src":"14603:11:20"}],"id":8202,"name":"BinaryOperation","src":"14592:22:20"},{"children":[{"attributes":{"functionReturnParameters":8178},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8203,"name":"Literal","src":"14637:4:20"}],"id":8204,"name":"Return","src":"14630:11:20"}],"id":8205,"name":"Block","src":"14616:36:20"}],"id":8206,"name":"IfStatement","src":"14588:64:20"},{"attributes":{"assignments":[8208],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"equal","scope":8213,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8207,"name":"ElementaryTypeName","src":"14662:4:20"}],"id":8208,"name":"VariableDeclaration","src":"14662:10:20"}],"id":8209,"name":"VariableDeclarationStatement","src":"14662:10:20"},{"attributes":{"externalReferences":[{"needle":{"declaration":8174,"isOffset":false,"isSlot":false,"src":"14725:6:20","valueSize":1}},{"equal":{"declaration":8208,"isOffset":false,"isSlot":false,"src":"14799:5:20","valueSize":1}},{"needle":{"declaration":8174,"isOffset":false,"isSlot":false,"src":"14772:6:20","valueSize":1}},{"selfptr":{"declaration":8189,"isOffset":false,"isSlot":false,"src":"14821:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8210,"name":"InlineAssembly","src":"14682:196:20"},{"attributes":{"functionReturnParameters":8178},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8208,"type":"bool","value":"equal"},"id":8211,"name":"Identifier","src":"14895:5:20"}],"id":8212,"name":"Return","src":"14888:12:20"}],"id":8213,"name":"Block","src":"14441:466:20"}],"id":8214,"name":"FunctionDefinition","src":"14354:553:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"until","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8215,"name":"UserDefinedTypeName","src":"15186:5:20"}],"id":8216,"name":"VariableDeclaration","src":"15186:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8217,"name":"UserDefinedTypeName","src":"15205:5:20"}],"id":8218,"name":"VariableDeclaration","src":"15205:19:20"}],"id":8219,"name":"ParameterList","src":"15185:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8267,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8220,"name":"UserDefinedTypeName","src":"15249:5:20"}],"id":8221,"name":"VariableDeclaration","src":"15249:12:20"}],"id":8222,"name":"ParameterList","src":"15248:14:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8223,"name":"Identifier","src":"15277:4:20"}],"id":8224,"name":"MemberAccess","src":"15277:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"struct strings.slice memory","value":"needle"},"id":8225,"name":"Identifier","src":"15289:6:20"}],"id":8226,"name":"MemberAccess","src":"15289:11:20"}],"id":8227,"name":"BinaryOperation","src":"15277:23:20"},{"children":[{"attributes":{"functionReturnParameters":8222},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8228,"name":"Identifier","src":"15323:4:20"}],"id":8229,"name":"Return","src":"15316:11:20"}],"id":8230,"name":"Block","src":"15302:36:20"}],"id":8231,"name":"IfStatement","src":"15273:65:20"},{"attributes":{"assignments":[8233]},"children":[{"attributes":{"constant":false,"name":"selfptr","scope":8266,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8232,"name":"ElementaryTypeName","src":"15348:4:20"}],"id":8233,"name":"VariableDeclaration","src":"15348:12:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8234,"name":"Identifier","src":"15363:4:20"}],"id":8235,"name":"MemberAccess","src":"15363:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8236,"name":"Identifier","src":"15375:4:20"}],"id":8237,"name":"MemberAccess","src":"15375:9:20"}],"id":8238,"name":"BinaryOperation","src":"15363:21:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"struct strings.slice memory","value":"needle"},"id":8239,"name":"Identifier","src":"15387:6:20"}],"id":8240,"name":"MemberAccess","src":"15387:11:20"}],"id":8241,"name":"BinaryOperation","src":"15363:35:20"}],"id":8242,"name":"VariableDeclarationStatement","src":"15348:50:20"},{"attributes":{"assignments":[8244]},"children":[{"attributes":{"constant":false,"name":"equal","scope":8266,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8243,"name":"ElementaryTypeName","src":"15408:4:20"}],"id":8244,"name":"VariableDeclaration","src":"15408:10:20"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":8245,"name":"Literal","src":"15421:4:20"}],"id":8246,"name":"VariableDeclarationStatement","src":"15408:17:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8233,"type":"uint256","value":"selfptr"},"id":8247,"name":"Identifier","src":"15439:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"struct strings.slice memory","value":"needle"},"id":8248,"name":"Identifier","src":"15450:6:20"}],"id":8249,"name":"MemberAccess","src":"15450:11:20"}],"id":8250,"name":"BinaryOperation","src":"15439:22:20"},{"children":[{"attributes":{"externalReferences":[{"needle":{"declaration":8218,"isOffset":false,"isSlot":false,"src":"15524:6:20","valueSize":1}},{"equal":{"declaration":8244,"isOffset":false,"isSlot":false,"src":"15606:5:20","valueSize":1}},{"needle":{"declaration":8218,"isOffset":false,"isSlot":false,"src":"15575:6:20","valueSize":1}},{"selfptr":{"declaration":8233,"isOffset":false,"isSlot":false,"src":"15628:7:20","valueSize":1}}],"operations":"{\n let length := mload(needle)\n let needleptr := mload(add(needle, 0x20))\n equal := eq(keccak256(selfptr, length), keccak256(needleptr, length))\n}"},"children":[],"id":8251,"name":"InlineAssembly","src":"15477:212:20"}],"id":8252,"name":"Block","src":"15463:236:20"}],"id":8253,"name":"IfStatement","src":"15435:264:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8244,"type":"bool","value":"equal"},"id":8254,"name":"Identifier","src":"15713:5:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8255,"name":"Identifier","src":"15734:4:20"}],"id":8257,"name":"MemberAccess","src":"15734:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8218,"type":"struct strings.slice memory","value":"needle"},"id":8258,"name":"Identifier","src":"15747:6:20"}],"id":8259,"name":"MemberAccess","src":"15747:11:20"}],"id":8260,"name":"Assignment","src":"15734:24:20"}],"id":8261,"name":"ExpressionStatement","src":"15734:24:20"}],"id":8262,"name":"Block","src":"15720:49:20"}],"id":8263,"name":"IfStatement","src":"15709:60:20"},{"attributes":{"functionReturnParameters":8222},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8216,"type":"struct strings.slice memory","value":"self"},"id":8264,"name":"Identifier","src":"15786:4:20"}],"id":8265,"name":"Return","src":"15779:11:20"}],"id":8266,"name":"Block","src":"15263:534:20"}],"id":8267,"name":"FunctionDefinition","src":"15171:626:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"findPtr","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8268,"name":"ElementaryTypeName","src":"15971:4:20"}],"id":8269,"name":"VariableDeclaration","src":"15971:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8270,"name":"ElementaryTypeName","src":"15985:4:20"}],"id":8271,"name":"VariableDeclaration","src":"15985:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8272,"name":"ElementaryTypeName","src":"15999:4:20"}],"id":8273,"name":"VariableDeclaration","src":"15999:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8274,"name":"ElementaryTypeName","src":"16015:4:20"}],"id":8275,"name":"VariableDeclaration","src":"16015:14:20"}],"id":8276,"name":"ParameterList","src":"15970:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8388,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8277,"name":"ElementaryTypeName","src":"16053:4:20"}],"id":8278,"name":"VariableDeclaration","src":"16053:4:20"}],"id":8279,"name":"ParameterList","src":"16052:6:20"},{"children":[{"attributes":{"assignments":[8281]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8280,"name":"ElementaryTypeName","src":"16069:4:20"}],"id":8281,"name":"VariableDeclaration","src":"16069:8:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8271,"type":"uint256","value":"selfptr"},"id":8282,"name":"Identifier","src":"16080:7:20"}],"id":8283,"name":"VariableDeclarationStatement","src":"16069:18:20"},{"attributes":{"assignments":[8285],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"idx","scope":8387,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8284,"name":"ElementaryTypeName","src":"16097:4:20"}],"id":8285,"name":"VariableDeclaration","src":"16097:8:20"}],"id":8286,"name":"VariableDeclarationStatement","src":"16097:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8287,"name":"Identifier","src":"16120:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8288,"name":"Identifier","src":"16133:7:20"}],"id":8289,"name":"BinaryOperation","src":"16120:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8290,"name":"Identifier","src":"16160:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8291,"name":"Literal","src":"16173:2:20"}],"id":8292,"name":"BinaryOperation","src":"16160:15:20"},{"children":[{"attributes":{"assignments":[8294]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8346,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8293,"name":"ElementaryTypeName","src":"16195:7:20"}],"id":8294,"name":"VariableDeclaration","src":"16195:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8295,"name":"ElementaryTypeNameExpression","src":"16210:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8296,"name":"Literal","src":"16220:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8297,"name":"Literal","src":"16226:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8298,"name":"Literal","src":"16231:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8299,"name":"Identifier","src":"16236:9:20"}],"id":8300,"name":"BinaryOperation","src":"16231:14:20"}],"id":8301,"name":"TupleExpression","src":"16230:16:20"}],"id":8302,"name":"BinaryOperation","src":"16226:20:20"}],"id":8303,"name":"TupleExpression","src":"16225:22:20"}],"id":8304,"name":"BinaryOperation","src":"16220:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8305,"name":"Literal","src":"16250:1:20"}],"id":8306,"name":"BinaryOperation","src":"16220:31:20"}],"id":8307,"name":"TupleExpression","src":"16219:33:20"}],"id":8308,"name":"UnaryOperation","src":"16218:34:20"}],"id":8309,"name":"FunctionCall","src":"16210:43:20"}],"id":8310,"name":"VariableDeclarationStatement","src":"16195:58:20"},{"attributes":{"assignments":[8312],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8346,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8311,"name":"ElementaryTypeName","src":"16272:7:20"}],"id":8312,"name":"VariableDeclaration","src":"16272:18:20"}],"id":8313,"name":"VariableDeclarationStatement","src":"16272:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8312,"isOffset":false,"isSlot":false,"src":"16319:10:20","valueSize":1}},{"needleptr":{"declaration":8275,"isOffset":false,"isSlot":false,"src":"16343:9:20","valueSize":1}},{"mask":{"declaration":8294,"isOffset":false,"isSlot":false,"src":"16355:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8314,"name":"InlineAssembly","src":"16308:54:20"},{"attributes":{"assignments":[8316]},"children":[{"attributes":{"constant":false,"name":"end","scope":8346,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8315,"name":"ElementaryTypeName","src":"16380:4:20"}],"id":8316,"name":"VariableDeclaration","src":"16380:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8271,"type":"uint256","value":"selfptr"},"id":8317,"name":"Identifier","src":"16391:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8318,"name":"Identifier","src":"16401:7:20"}],"id":8319,"name":"BinaryOperation","src":"16391:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8320,"name":"Identifier","src":"16411:9:20"}],"id":8321,"name":"BinaryOperation","src":"16391:29:20"}],"id":8322,"name":"VariableDeclarationStatement","src":"16380:40:20"},{"attributes":{"assignments":[8324],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8346,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8323,"name":"ElementaryTypeName","src":"16438:7:20"}],"id":8324,"name":"VariableDeclaration","src":"16438:15:20"}],"id":8325,"name":"VariableDeclarationStatement","src":"16438:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8324,"isOffset":false,"isSlot":false,"src":"16482:7:20","valueSize":1}},{"ptr":{"declaration":8281,"isOffset":false,"isSlot":false,"src":"16503:3:20","valueSize":1}},{"mask":{"declaration":8294,"isOffset":false,"isSlot":false,"src":"16509:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8326,"name":"InlineAssembly","src":"16471:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8324,"type":"bytes32","value":"ptrdata"},"id":8327,"name":"Identifier","src":"16541:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8312,"type":"bytes32","value":"needledata"},"id":8328,"name":"Identifier","src":"16552:10:20"}],"id":8329,"name":"BinaryOperation","src":"16541:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8330,"name":"Identifier","src":"16590:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8316,"type":"uint256","value":"end"},"id":8331,"name":"Identifier","src":"16597:3:20"}],"id":8332,"name":"BinaryOperation","src":"16590:10:20"},{"attributes":{"functionReturnParameters":8279},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8271,"type":"uint256","value":"selfptr"},"id":8333,"name":"Identifier","src":"16633:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8334,"name":"Identifier","src":"16643:7:20"}],"id":8335,"name":"BinaryOperation","src":"16633:17:20"}],"id":8336,"name":"Return","src":"16626:24:20"}],"id":8337,"name":"IfStatement","src":"16586:64:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8338,"name":"Identifier","src":"16672:3:20"}],"id":8339,"name":"UnaryOperation","src":"16672:5:20"}],"id":8340,"name":"ExpressionStatement","src":"16672:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8324,"isOffset":false,"isSlot":false,"src":"16710:7:20","valueSize":1}},{"ptr":{"declaration":8281,"isOffset":false,"isSlot":false,"src":"16731:3:20","valueSize":1}},{"mask":{"declaration":8294,"isOffset":false,"isSlot":false,"src":"16737:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8341,"name":"InlineAssembly","src":"16699:45:20"}],"id":8342,"name":"Block","src":"16564:198:20"}],"id":8343,"name":"WhileStatement","src":"16534:228:20"},{"attributes":{"functionReturnParameters":8279},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8344,"name":"Identifier","src":"16786:3:20"}],"id":8345,"name":"Return","src":"16779:10:20"}],"id":8346,"name":"Block","src":"16177:627:20"},{"children":[{"attributes":{"assignments":[8348],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8379,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8347,"name":"ElementaryTypeName","src":"16877:7:20"}],"id":8348,"name":"VariableDeclaration","src":"16877:12:20"}],"id":8349,"name":"VariableDeclarationStatement","src":"16877:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8348,"isOffset":false,"isSlot":false,"src":"16918:4:20","valueSize":1}},{"needleptr":{"declaration":8275,"isOffset":false,"isSlot":false,"src":"16936:9:20","valueSize":1}},{"needlelen":{"declaration":8273,"isOffset":false,"isSlot":false,"src":"16947:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8350,"name":"InlineAssembly","src":"16907:52:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8285,"type":"uint256","value":"idx"},"id":8351,"name":"Identifier","src":"16982:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8352,"name":"Literal","src":"16988:1:20"}],"id":8353,"name":"Assignment","src":"16982:7:20"}],"id":8354,"name":"ExpressionStatement","src":"16982:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8285,"type":"uint256","value":"idx"},"id":8355,"name":"Identifier","src":"16991:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8356,"name":"Identifier","src":"16998:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8273,"type":"uint256","value":"needlelen"},"id":8357,"name":"Identifier","src":"17008:9:20"}],"id":8358,"name":"BinaryOperation","src":"16998:19:20"}],"id":8359,"name":"BinaryOperation","src":"16991:26:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8285,"type":"uint256","value":"idx"},"id":8360,"name":"Identifier","src":"17019:3:20"}],"id":8361,"name":"UnaryOperation","src":"17019:5:20"}],"id":8362,"name":"ExpressionStatement","src":"17019:5:20"},{"children":[{"attributes":{"assignments":[8364],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8377,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8363,"name":"ElementaryTypeName","src":"17048:7:20"}],"id":8364,"name":"VariableDeclaration","src":"17048:16:20"}],"id":8365,"name":"VariableDeclarationStatement","src":"17048:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8364,"isOffset":false,"isSlot":false,"src":"17097:8:20","valueSize":1}},{"ptr":{"declaration":8281,"isOffset":false,"isSlot":false,"src":"17119:3:20","valueSize":1}},{"needlelen":{"declaration":8273,"isOffset":false,"isSlot":false,"src":"17124:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8366,"name":"InlineAssembly","src":"17086:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8348,"type":"bytes32","value":"hash"},"id":8367,"name":"Identifier","src":"17161:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8364,"type":"bytes32","value":"testHash"},"id":8368,"name":"Identifier","src":"17169:8:20"}],"id":8369,"name":"BinaryOperation","src":"17161:16:20"},{"attributes":{"functionReturnParameters":8279},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8370,"name":"Identifier","src":"17210:3:20"}],"id":8371,"name":"Return","src":"17203:10:20"}],"id":8372,"name":"IfStatement","src":"17157:56:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8281,"type":"uint256","value":"ptr"},"id":8373,"name":"Identifier","src":"17235:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8374,"name":"Literal","src":"17242:1:20"}],"id":8375,"name":"Assignment","src":"17235:8:20"}],"id":8376,"name":"ExpressionStatement","src":"17235:8:20"}],"id":8377,"name":"Block","src":"17026:236:20"}],"id":8378,"name":"ForStatement","src":"16977:285:20"}],"id":8379,"name":"Block","src":"16810:466:20"}],"id":8380,"name":"IfStatement","src":"16156:1120:20"}],"id":8381,"name":"Block","src":"16142:1144:20"}],"id":8382,"name":"IfStatement","src":"16116:1170:20"},{"attributes":{"functionReturnParameters":8279},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8271,"type":"uint256","value":"selfptr"},"id":8383,"name":"Identifier","src":"17302:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8269,"type":"uint256","value":"selflen"},"id":8384,"name":"Identifier","src":"17312:7:20"}],"id":8385,"name":"BinaryOperation","src":"17302:17:20"}],"id":8386,"name":"Return","src":"17295:24:20"}],"id":8387,"name":"Block","src":"16059:1267:20"}],"id":8388,"name":"FunctionDefinition","src":"15954:1372:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfindPtr","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"selflen","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8389,"name":"ElementaryTypeName","src":"17497:4:20"}],"id":8390,"name":"VariableDeclaration","src":"17497:12:20"},{"attributes":{"constant":false,"name":"selfptr","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8391,"name":"ElementaryTypeName","src":"17511:4:20"}],"id":8392,"name":"VariableDeclaration","src":"17511:12:20"},{"attributes":{"constant":false,"name":"needlelen","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8393,"name":"ElementaryTypeName","src":"17525:4:20"}],"id":8394,"name":"VariableDeclaration","src":"17525:14:20"},{"attributes":{"constant":false,"name":"needleptr","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8395,"name":"ElementaryTypeName","src":"17541:4:20"}],"id":8396,"name":"VariableDeclaration","src":"17541:14:20"}],"id":8397,"name":"ParameterList","src":"17496:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8505,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8398,"name":"ElementaryTypeName","src":"17579:4:20"}],"id":8399,"name":"VariableDeclaration","src":"17579:4:20"}],"id":8400,"name":"ParameterList","src":"17578:6:20"},{"children":[{"attributes":{"assignments":[8402],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8504,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8401,"name":"ElementaryTypeName","src":"17595:4:20"}],"id":8402,"name":"VariableDeclaration","src":"17595:8:20"}],"id":8403,"name":"VariableDeclarationStatement","src":"17595:8:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8404,"name":"Identifier","src":"17618:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8390,"type":"uint256","value":"selflen"},"id":8405,"name":"Identifier","src":"17631:7:20"}],"id":8406,"name":"BinaryOperation","src":"17618:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8407,"name":"Identifier","src":"17658:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8408,"name":"Literal","src":"17671:2:20"}],"id":8409,"name":"BinaryOperation","src":"17658:15:20"},{"children":[{"attributes":{"assignments":[8411]},"children":[{"attributes":{"constant":false,"name":"mask","scope":8463,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8410,"name":"ElementaryTypeName","src":"17693:7:20"}],"id":8411,"name":"VariableDeclaration","src":"17693:12:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":8412,"name":"ElementaryTypeNameExpression","src":"17708:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"~","prefix":true,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"**","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"32","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2","value":"2"},"id":8413,"name":"Literal","src":"17718:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"38","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 8","value":"8"},"id":8414,"name":"Literal","src":"17724:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":8415,"name":"Literal","src":"17729:2:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8416,"name":"Identifier","src":"17734:9:20"}],"id":8417,"name":"BinaryOperation","src":"17729:14:20"}],"id":8418,"name":"TupleExpression","src":"17728:16:20"}],"id":8419,"name":"BinaryOperation","src":"17724:20:20"}],"id":8420,"name":"TupleExpression","src":"17723:22:20"}],"id":8421,"name":"BinaryOperation","src":"17718:27:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8422,"name":"Literal","src":"17748:1:20"}],"id":8423,"name":"BinaryOperation","src":"17718:31:20"}],"id":8424,"name":"TupleExpression","src":"17717:33:20"}],"id":8425,"name":"UnaryOperation","src":"17716:34:20"}],"id":8426,"name":"FunctionCall","src":"17708:43:20"}],"id":8427,"name":"VariableDeclarationStatement","src":"17693:58:20"},{"attributes":{"assignments":[8429],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"needledata","scope":8463,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8428,"name":"ElementaryTypeName","src":"17770:7:20"}],"id":8429,"name":"VariableDeclaration","src":"17770:18:20"}],"id":8430,"name":"VariableDeclarationStatement","src":"17770:18:20"},{"attributes":{"externalReferences":[{"needledata":{"declaration":8429,"isOffset":false,"isSlot":false,"src":"17817:10:20","valueSize":1}},{"needleptr":{"declaration":8396,"isOffset":false,"isSlot":false,"src":"17841:9:20","valueSize":1}},{"mask":{"declaration":8411,"isOffset":false,"isSlot":false,"src":"17853:4:20","valueSize":1}}],"operations":"{\n needledata := and(mload(needleptr), mask)\n}"},"children":[],"id":8431,"name":"InlineAssembly","src":"17806:54:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8432,"name":"Identifier","src":"17878:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8433,"name":"Identifier","src":"17884:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8390,"type":"uint256","value":"selflen"},"id":8434,"name":"Identifier","src":"17894:7:20"}],"id":8435,"name":"BinaryOperation","src":"17884:17:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8436,"name":"Identifier","src":"17904:9:20"}],"id":8437,"name":"BinaryOperation","src":"17884:29:20"}],"id":8438,"name":"Assignment","src":"17878:35:20"}],"id":8439,"name":"ExpressionStatement","src":"17878:35:20"},{"attributes":{"assignments":[8441],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"ptrdata","scope":8463,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8440,"name":"ElementaryTypeName","src":"17931:7:20"}],"id":8441,"name":"VariableDeclaration","src":"17931:15:20"}],"id":8442,"name":"VariableDeclarationStatement","src":"17931:15:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8441,"isOffset":false,"isSlot":false,"src":"17975:7:20","valueSize":1}},{"ptr":{"declaration":8402,"isOffset":false,"isSlot":false,"src":"17996:3:20","valueSize":1}},{"mask":{"declaration":8411,"isOffset":false,"isSlot":false,"src":"18002:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8443,"name":"InlineAssembly","src":"17964:45:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8441,"type":"bytes32","value":"ptrdata"},"id":8444,"name":"Identifier","src":"18034:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8429,"type":"bytes32","value":"needledata"},"id":8445,"name":"Identifier","src":"18045:10:20"}],"id":8446,"name":"BinaryOperation","src":"18034:21:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8447,"name":"Identifier","src":"18083:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8448,"name":"Identifier","src":"18090:7:20"}],"id":8449,"name":"BinaryOperation","src":"18083:14:20"},{"attributes":{"functionReturnParameters":8400},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8450,"name":"Identifier","src":"18130:7:20"}],"id":8451,"name":"Return","src":"18123:14:20"}],"id":8452,"name":"IfStatement","src":"18079:58:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8453,"name":"Identifier","src":"18159:3:20"}],"id":8454,"name":"UnaryOperation","src":"18159:5:20"}],"id":8455,"name":"ExpressionStatement","src":"18159:5:20"},{"attributes":{"externalReferences":[{"ptrdata":{"declaration":8441,"isOffset":false,"isSlot":false,"src":"18197:7:20","valueSize":1}},{"ptr":{"declaration":8402,"isOffset":false,"isSlot":false,"src":"18218:3:20","valueSize":1}},{"mask":{"declaration":8411,"isOffset":false,"isSlot":false,"src":"18224:4:20","valueSize":1}}],"operations":"{\n ptrdata := and(mload(ptr), mask)\n}"},"children":[],"id":8456,"name":"InlineAssembly","src":"18186:45:20"}],"id":8457,"name":"Block","src":"18057:192:20"}],"id":8458,"name":"WhileStatement","src":"18027:222:20"},{"attributes":{"functionReturnParameters":8400},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8459,"name":"Identifier","src":"18273:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8460,"name":"Identifier","src":"18279:9:20"}],"id":8461,"name":"BinaryOperation","src":"18273:15:20"}],"id":8462,"name":"Return","src":"18266:22:20"}],"id":8463,"name":"Block","src":"17675:628:20"},{"children":[{"attributes":{"assignments":[8465],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"hash","scope":8498,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8464,"name":"ElementaryTypeName","src":"18376:7:20"}],"id":8465,"name":"VariableDeclaration","src":"18376:12:20"}],"id":8466,"name":"VariableDeclarationStatement","src":"18376:12:20"},{"attributes":{"externalReferences":[{"hash":{"declaration":8465,"isOffset":false,"isSlot":false,"src":"18417:4:20","valueSize":1}},{"needleptr":{"declaration":8396,"isOffset":false,"isSlot":false,"src":"18435:9:20","valueSize":1}},{"needlelen":{"declaration":8394,"isOffset":false,"isSlot":false,"src":"18446:9:20","valueSize":1}}],"operations":"{\n hash := keccak256(needleptr, needlelen)\n}"},"children":[],"id":8467,"name":"InlineAssembly","src":"18406:52:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8468,"name":"Identifier","src":"18475:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8469,"name":"Identifier","src":"18481:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8390,"type":"uint256","value":"selflen"},"id":8470,"name":"Identifier","src":"18492:7:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8471,"name":"Identifier","src":"18502:9:20"}],"id":8472,"name":"BinaryOperation","src":"18492:19:20"}],"id":8473,"name":"TupleExpression","src":"18491:21:20"}],"id":8474,"name":"BinaryOperation","src":"18481:31:20"}],"id":8475,"name":"Assignment","src":"18475:37:20"}],"id":8476,"name":"ExpressionStatement","src":"18475:37:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8477,"name":"Identifier","src":"18537:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8478,"name":"Identifier","src":"18544:7:20"}],"id":8479,"name":"BinaryOperation","src":"18537:14:20"},{"children":[{"attributes":{"assignments":[8481],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"testHash","scope":8496,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":8480,"name":"ElementaryTypeName","src":"18575:7:20"}],"id":8481,"name":"VariableDeclaration","src":"18575:16:20"}],"id":8482,"name":"VariableDeclarationStatement","src":"18575:16:20"},{"attributes":{"externalReferences":[{"testHash":{"declaration":8481,"isOffset":false,"isSlot":false,"src":"18624:8:20","valueSize":1}},{"ptr":{"declaration":8402,"isOffset":false,"isSlot":false,"src":"18646:3:20","valueSize":1}},{"needlelen":{"declaration":8394,"isOffset":false,"isSlot":false,"src":"18651:9:20","valueSize":1}}],"operations":"{\n testHash := keccak256(ptr, needlelen)\n}"},"children":[],"id":8483,"name":"InlineAssembly","src":"18613:50:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8465,"type":"bytes32","value":"hash"},"id":8484,"name":"Identifier","src":"18688:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8481,"type":"bytes32","value":"testHash"},"id":8485,"name":"Identifier","src":"18696:8:20"}],"id":8486,"name":"BinaryOperation","src":"18688:16:20"},{"attributes":{"functionReturnParameters":8400},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8487,"name":"Identifier","src":"18737:3:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8394,"type":"uint256","value":"needlelen"},"id":8488,"name":"Identifier","src":"18743:9:20"}],"id":8489,"name":"BinaryOperation","src":"18737:15:20"}],"id":8490,"name":"Return","src":"18730:22:20"}],"id":8491,"name":"IfStatement","src":"18684:68:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8402,"type":"uint256","value":"ptr"},"id":8492,"name":"Identifier","src":"18774:3:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8493,"name":"Literal","src":"18781:1:20"}],"id":8494,"name":"Assignment","src":"18774:8:20"}],"id":8495,"name":"ExpressionStatement","src":"18774:8:20"}],"id":8496,"name":"Block","src":"18553:248:20"}],"id":8497,"name":"WhileStatement","src":"18530:271:20"}],"id":8498,"name":"Block","src":"18309:506:20"}],"id":8499,"name":"IfStatement","src":"17654:1161:20"}],"id":8500,"name":"Block","src":"17640:1185:20"}],"id":8501,"name":"IfStatement","src":"17614:1211:20"},{"attributes":{"functionReturnParameters":8400},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8392,"type":"uint256","value":"selfptr"},"id":8502,"name":"Identifier","src":"18841:7:20"}],"id":8503,"name":"Return","src":"18834:14:20"}],"id":8504,"name":"Block","src":"17585:1270:20"}],"id":8505,"name":"FunctionDefinition","src":"17479:1376:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"find","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8545,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8506,"name":"UserDefinedTypeName","src":"19205:5:20"}],"id":8507,"name":"VariableDeclaration","src":"19205:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8545,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8508,"name":"UserDefinedTypeName","src":"19224:5:20"}],"id":8509,"name":"VariableDeclaration","src":"19224:19:20"}],"id":8510,"name":"ParameterList","src":"19204:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8545,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8511,"name":"UserDefinedTypeName","src":"19268:5:20"}],"id":8512,"name":"VariableDeclaration","src":"19268:12:20"}],"id":8513,"name":"ParameterList","src":"19267:14:20"},{"children":[{"attributes":{"assignments":[8515]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8544,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8514,"name":"ElementaryTypeName","src":"19292:4:20"}],"id":8515,"name":"VariableDeclaration","src":"19292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8388,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8516,"name":"Identifier","src":"19303:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8517,"name":"Identifier","src":"19311:4:20"}],"id":8518,"name":"MemberAccess","src":"19311:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8519,"name":"Identifier","src":"19322:4:20"}],"id":8520,"name":"MemberAccess","src":"19322:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8509,"type":"struct strings.slice memory","value":"needle"},"id":8521,"name":"Identifier","src":"19333:6:20"}],"id":8522,"name":"MemberAccess","src":"19333:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8509,"type":"struct strings.slice memory","value":"needle"},"id":8523,"name":"Identifier","src":"19346:6:20"}],"id":8524,"name":"MemberAccess","src":"19346:11:20"}],"id":8525,"name":"FunctionCall","src":"19303:55:20"}],"id":8526,"name":"VariableDeclarationStatement","src":"19292:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8527,"name":"Identifier","src":"19368:4:20"}],"id":8529,"name":"MemberAccess","src":"19368:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"ptr"},"id":8530,"name":"Identifier","src":"19381:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8531,"name":"Identifier","src":"19387:4:20"}],"id":8532,"name":"MemberAccess","src":"19387:9:20"}],"id":8533,"name":"BinaryOperation","src":"19381:15:20"}],"id":8534,"name":"Assignment","src":"19368:28:20"}],"id":8535,"name":"ExpressionStatement","src":"19368:28:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8536,"name":"Identifier","src":"19406:4:20"}],"id":8538,"name":"MemberAccess","src":"19406:9:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8515,"type":"uint256","value":"ptr"},"id":8539,"name":"Identifier","src":"19418:3:20"}],"id":8540,"name":"Assignment","src":"19406:15:20"}],"id":8541,"name":"ExpressionStatement","src":"19406:15:20"},{"attributes":{"functionReturnParameters":8513},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8507,"type":"struct strings.slice memory","value":"self"},"id":8542,"name":"Identifier","src":"19438:4:20"}],"id":8543,"name":"Return","src":"19431:11:20"}],"id":8544,"name":"Block","src":"19282:167:20"}],"id":8545,"name":"FunctionDefinition","src":"19191:258:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rfind","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8579,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8546,"name":"UserDefinedTypeName","src":"19823:5:20"}],"id":8547,"name":"VariableDeclaration","src":"19823:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8579,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8548,"name":"UserDefinedTypeName","src":"19842:5:20"}],"id":8549,"name":"VariableDeclaration","src":"19842:19:20"}],"id":8550,"name":"ParameterList","src":"19822:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8579,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8551,"name":"UserDefinedTypeName","src":"19886:5:20"}],"id":8552,"name":"VariableDeclaration","src":"19886:12:20"}],"id":8553,"name":"ParameterList","src":"19885:14:20"},{"children":[{"attributes":{"assignments":[8555]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8578,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8554,"name":"ElementaryTypeName","src":"19910:4:20"}],"id":8555,"name":"VariableDeclaration","src":"19910:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8556,"name":"Identifier","src":"19921:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8557,"name":"Identifier","src":"19930:4:20"}],"id":8558,"name":"MemberAccess","src":"19930:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8559,"name":"Identifier","src":"19941:4:20"}],"id":8560,"name":"MemberAccess","src":"19941:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8549,"type":"struct strings.slice memory","value":"needle"},"id":8561,"name":"Identifier","src":"19952:6:20"}],"id":8562,"name":"MemberAccess","src":"19952:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8549,"type":"struct strings.slice memory","value":"needle"},"id":8563,"name":"Identifier","src":"19965:6:20"}],"id":8564,"name":"MemberAccess","src":"19965:11:20"}],"id":8565,"name":"FunctionCall","src":"19921:56:20"}],"id":8566,"name":"VariableDeclarationStatement","src":"19910:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8567,"name":"Identifier","src":"19987:4:20"}],"id":8569,"name":"MemberAccess","src":"19987:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8555,"type":"uint256","value":"ptr"},"id":8570,"name":"Identifier","src":"19999:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8571,"name":"Identifier","src":"20005:4:20"}],"id":8572,"name":"MemberAccess","src":"20005:9:20"}],"id":8573,"name":"BinaryOperation","src":"19999:15:20"}],"id":8574,"name":"Assignment","src":"19987:27:20"}],"id":8575,"name":"ExpressionStatement","src":"19987:27:20"},{"attributes":{"functionReturnParameters":8553},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8547,"type":"struct strings.slice memory","value":"self"},"id":8576,"name":"Identifier","src":"20031:4:20"}],"id":8577,"name":"Return","src":"20024:11:20"}],"id":8578,"name":"Block","src":"19900:142:20"}],"id":8579,"name":"FunctionDefinition","src":"19808:234:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8580,"name":"UserDefinedTypeName","src":"20563:5:20"}],"id":8581,"name":"VariableDeclaration","src":"20563:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8582,"name":"UserDefinedTypeName","src":"20582:5:20"}],"id":8583,"name":"VariableDeclaration","src":"20582:19:20"},{"attributes":{"constant":false,"name":"token","scope":8657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8584,"name":"UserDefinedTypeName","src":"20603:5:20"}],"id":8585,"name":"VariableDeclaration","src":"20603:18:20"}],"id":8586,"name":"ParameterList","src":"20562:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8657,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8587,"name":"UserDefinedTypeName","src":"20646:5:20"}],"id":8588,"name":"VariableDeclaration","src":"20646:12:20"}],"id":8589,"name":"ParameterList","src":"20645:14:20"},{"children":[{"attributes":{"assignments":[8591]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8656,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8590,"name":"ElementaryTypeName","src":"20670:4:20"}],"id":8591,"name":"VariableDeclaration","src":"20670:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8388,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8592,"name":"Identifier","src":"20681:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8593,"name":"Identifier","src":"20689:4:20"}],"id":8594,"name":"MemberAccess","src":"20689:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8595,"name":"Identifier","src":"20700:4:20"}],"id":8596,"name":"MemberAccess","src":"20700:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"struct strings.slice memory","value":"needle"},"id":8597,"name":"Identifier","src":"20711:6:20"}],"id":8598,"name":"MemberAccess","src":"20711:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"struct strings.slice memory","value":"needle"},"id":8599,"name":"Identifier","src":"20724:6:20"}],"id":8600,"name":"MemberAccess","src":"20724:11:20"}],"id":8601,"name":"FunctionCall","src":"20681:55:20"}],"id":8602,"name":"VariableDeclarationStatement","src":"20670:66:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"struct strings.slice memory","value":"token"},"id":8603,"name":"Identifier","src":"20746:5:20"}],"id":8605,"name":"MemberAccess","src":"20746:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8606,"name":"Identifier","src":"20759:4:20"}],"id":8607,"name":"MemberAccess","src":"20759:9:20"}],"id":8608,"name":"Assignment","src":"20746:22:20"}],"id":8609,"name":"ExpressionStatement","src":"20746:22:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"struct strings.slice memory","value":"token"},"id":8610,"name":"Identifier","src":"20778:5:20"}],"id":8612,"name":"MemberAccess","src":"20778:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8591,"type":"uint256","value":"ptr"},"id":8613,"name":"Identifier","src":"20791:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8614,"name":"Identifier","src":"20797:4:20"}],"id":8615,"name":"MemberAccess","src":"20797:9:20"}],"id":8616,"name":"BinaryOperation","src":"20791:15:20"}],"id":8617,"name":"Assignment","src":"20778:28:20"}],"id":8618,"name":"ExpressionStatement","src":"20778:28:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8591,"type":"uint256","value":"ptr"},"id":8619,"name":"Identifier","src":"20820:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8620,"name":"Identifier","src":"20827:4:20"}],"id":8621,"name":"MemberAccess","src":"20827:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8622,"name":"Identifier","src":"20839:4:20"}],"id":8623,"name":"MemberAccess","src":"20839:9:20"}],"id":8624,"name":"BinaryOperation","src":"20827:21:20"}],"id":8625,"name":"BinaryOperation","src":"20820:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8626,"name":"Identifier","src":"20889:4:20"}],"id":8628,"name":"MemberAccess","src":"20889:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8629,"name":"Literal","src":"20901:1:20"}],"id":8630,"name":"Assignment","src":"20889:13:20"}],"id":8631,"name":"ExpressionStatement","src":"20889:13:20"}],"id":8632,"name":"Block","src":"20850:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8633,"name":"Identifier","src":"20933:4:20"}],"id":8635,"name":"MemberAccess","src":"20933:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"struct strings.slice memory","value":"token"},"id":8636,"name":"Identifier","src":"20946:5:20"}],"id":8637,"name":"MemberAccess","src":"20946:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"struct strings.slice memory","value":"needle"},"id":8638,"name":"Identifier","src":"20959:6:20"}],"id":8639,"name":"MemberAccess","src":"20959:11:20"}],"id":8640,"name":"BinaryOperation","src":"20946:24:20"}],"id":8641,"name":"Assignment","src":"20933:37:20"}],"id":8642,"name":"ExpressionStatement","src":"20933:37:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8581,"type":"struct strings.slice memory","value":"self"},"id":8643,"name":"Identifier","src":"20984:4:20"}],"id":8645,"name":"MemberAccess","src":"20984:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8591,"type":"uint256","value":"ptr"},"id":8646,"name":"Identifier","src":"20996:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8583,"type":"struct strings.slice memory","value":"needle"},"id":8647,"name":"Identifier","src":"21002:6:20"}],"id":8648,"name":"MemberAccess","src":"21002:11:20"}],"id":8649,"name":"BinaryOperation","src":"20996:17:20"}],"id":8650,"name":"Assignment","src":"20984:29:20"}],"id":8651,"name":"ExpressionStatement","src":"20984:29:20"}],"id":8652,"name":"Block","src":"20919:105:20"}],"id":8653,"name":"IfStatement","src":"20816:208:20"},{"attributes":{"functionReturnParameters":8589},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8585,"type":"struct strings.slice memory","value":"token"},"id":8654,"name":"Identifier","src":"21040:5:20"}],"id":8655,"name":"Return","src":"21033:12:20"}],"id":8656,"name":"Block","src":"20660:392:20"}],"id":8657,"name":"FunctionDefinition","src":"20548:504:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"split","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8673,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8658,"name":"UserDefinedTypeName","src":"21538:5:20"}],"id":8659,"name":"VariableDeclaration","src":"21538:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8673,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8660,"name":"UserDefinedTypeName","src":"21557:5:20"}],"id":8661,"name":"VariableDeclaration","src":"21557:19:20"}],"id":8662,"name":"ParameterList","src":"21537:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8673,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8663,"name":"UserDefinedTypeName","src":"21601:5:20"}],"id":8664,"name":"VariableDeclaration","src":"21601:18:20"}],"id":8665,"name":"ParameterList","src":"21600:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8657,8673],"referencedDeclaration":8657,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"split"},"id":8666,"name":"Identifier","src":"21631:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8659,"type":"struct strings.slice memory","value":"self"},"id":8667,"name":"Identifier","src":"21637:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8661,"type":"struct strings.slice memory","value":"needle"},"id":8668,"name":"Identifier","src":"21643:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8664,"type":"struct strings.slice memory","value":"token"},"id":8669,"name":"Identifier","src":"21651:5:20"}],"id":8670,"name":"FunctionCall","src":"21631:26:20"}],"id":8671,"name":"ExpressionStatement","src":"21631:26:20"}],"id":8672,"name":"Block","src":"21621:43:20"}],"id":8673,"name":"FunctionDefinition","src":"21523:141:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8674,"name":"UserDefinedTypeName","src":"22185:5:20"}],"id":8675,"name":"VariableDeclaration","src":"22185:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8676,"name":"UserDefinedTypeName","src":"22204:5:20"}],"id":8677,"name":"VariableDeclaration","src":"22204:19:20"},{"attributes":{"constant":false,"name":"token","scope":8742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8678,"name":"UserDefinedTypeName","src":"22225:5:20"}],"id":8679,"name":"VariableDeclaration","src":"22225:18:20"}],"id":8680,"name":"ParameterList","src":"22184:60:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8742,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8681,"name":"UserDefinedTypeName","src":"22268:5:20"}],"id":8682,"name":"VariableDeclaration","src":"22268:12:20"}],"id":8683,"name":"ParameterList","src":"22267:14:20"},{"children":[{"attributes":{"assignments":[8685]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8741,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8684,"name":"ElementaryTypeName","src":"22292:4:20"}],"id":8685,"name":"VariableDeclaration","src":"22292:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8686,"name":"Identifier","src":"22303:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8687,"name":"Identifier","src":"22312:4:20"}],"id":8688,"name":"MemberAccess","src":"22312:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8689,"name":"Identifier","src":"22323:4:20"}],"id":8690,"name":"MemberAccess","src":"22323:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8677,"type":"struct strings.slice memory","value":"needle"},"id":8691,"name":"Identifier","src":"22334:6:20"}],"id":8692,"name":"MemberAccess","src":"22334:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8677,"type":"struct strings.slice memory","value":"needle"},"id":8693,"name":"Identifier","src":"22347:6:20"}],"id":8694,"name":"MemberAccess","src":"22347:11:20"}],"id":8695,"name":"FunctionCall","src":"22303:56:20"}],"id":8696,"name":"VariableDeclarationStatement","src":"22292:67:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8679,"type":"struct strings.slice memory","value":"token"},"id":8697,"name":"Identifier","src":"22369:5:20"}],"id":8699,"name":"MemberAccess","src":"22369:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8685,"type":"uint256","value":"ptr"},"id":8700,"name":"Identifier","src":"22382:3:20"}],"id":8701,"name":"Assignment","src":"22369:16:20"}],"id":8702,"name":"ExpressionStatement","src":"22369:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8679,"type":"struct strings.slice memory","value":"token"},"id":8703,"name":"Identifier","src":"22395:5:20"}],"id":8705,"name":"MemberAccess","src":"22395:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8706,"name":"Identifier","src":"22408:4:20"}],"id":8707,"name":"MemberAccess","src":"22408:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8685,"type":"uint256","value":"ptr"},"id":8708,"name":"Identifier","src":"22421:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8709,"name":"Identifier","src":"22427:4:20"}],"id":8710,"name":"MemberAccess","src":"22427:9:20"}],"id":8711,"name":"BinaryOperation","src":"22421:15:20"}],"id":8712,"name":"TupleExpression","src":"22420:17:20"}],"id":8713,"name":"BinaryOperation","src":"22408:29:20"}],"id":8714,"name":"Assignment","src":"22395:42:20"}],"id":8715,"name":"ExpressionStatement","src":"22395:42:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8685,"type":"uint256","value":"ptr"},"id":8716,"name":"Identifier","src":"22451:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8717,"name":"Identifier","src":"22458:4:20"}],"id":8718,"name":"MemberAccess","src":"22458:9:20"}],"id":8719,"name":"BinaryOperation","src":"22451:16:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8720,"name":"Identifier","src":"22508:4:20"}],"id":8722,"name":"MemberAccess","src":"22508:9:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8723,"name":"Literal","src":"22520:1:20"}],"id":8724,"name":"Assignment","src":"22508:13:20"}],"id":8725,"name":"ExpressionStatement","src":"22508:13:20"}],"id":8726,"name":"Block","src":"22469:63:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8675,"type":"struct strings.slice memory","value":"self"},"id":8727,"name":"Identifier","src":"22552:4:20"}],"id":8729,"name":"MemberAccess","src":"22552:9:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8679,"type":"struct strings.slice memory","value":"token"},"id":8730,"name":"Identifier","src":"22565:5:20"}],"id":8731,"name":"MemberAccess","src":"22565:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8677,"type":"struct strings.slice memory","value":"needle"},"id":8732,"name":"Identifier","src":"22578:6:20"}],"id":8733,"name":"MemberAccess","src":"22578:11:20"}],"id":8734,"name":"BinaryOperation","src":"22565:24:20"}],"id":8735,"name":"Assignment","src":"22552:37:20"}],"id":8736,"name":"ExpressionStatement","src":"22552:37:20"}],"id":8737,"name":"Block","src":"22538:62:20"}],"id":8738,"name":"IfStatement","src":"22447:153:20"},{"attributes":{"functionReturnParameters":8683},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8679,"type":"struct strings.slice memory","value":"token"},"id":8739,"name":"Identifier","src":"22616:5:20"}],"id":8740,"name":"Return","src":"22609:12:20"}],"id":8741,"name":"Block","src":"22282:346:20"}],"id":8742,"name":"FunctionDefinition","src":"22169:459:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"rsplit","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8758,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8743,"name":"UserDefinedTypeName","src":"23113:5:20"}],"id":8744,"name":"VariableDeclaration","src":"23113:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8758,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8745,"name":"UserDefinedTypeName","src":"23132:5:20"}],"id":8746,"name":"VariableDeclaration","src":"23132:19:20"}],"id":8747,"name":"ParameterList","src":"23112:40:20"},{"children":[{"attributes":{"constant":false,"name":"token","scope":8758,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8748,"name":"UserDefinedTypeName","src":"23176:5:20"}],"id":8749,"name":"VariableDeclaration","src":"23176:18:20"}],"id":8750,"name":"ParameterList","src":"23175:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"},{"typeIdentifier":"t_struct$_slice_$7304_memory_ptr","typeString":"struct strings.slice memory"}],"overloadedDeclarations":[8742,8758],"referencedDeclaration":8742,"type":"function (struct strings.slice memory,struct strings.slice memory,struct strings.slice memory) pure returns (struct strings.slice memory)","value":"rsplit"},"id":8751,"name":"Identifier","src":"23206:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8744,"type":"struct strings.slice memory","value":"self"},"id":8752,"name":"Identifier","src":"23213:4:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8746,"type":"struct strings.slice memory","value":"needle"},"id":8753,"name":"Identifier","src":"23219:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8749,"type":"struct strings.slice memory","value":"token"},"id":8754,"name":"Identifier","src":"23227:5:20"}],"id":8755,"name":"FunctionCall","src":"23206:27:20"}],"id":8756,"name":"ExpressionStatement","src":"23206:27:20"}],"id":8757,"name":"Block","src":"23196:44:20"}],"id":8758,"name":"FunctionDefinition","src":"23097:143:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"count","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8817,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8759,"name":"UserDefinedTypeName","src":"23524:5:20"}],"id":8760,"name":"VariableDeclaration","src":"23524:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8817,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8761,"name":"UserDefinedTypeName","src":"23543:5:20"}],"id":8762,"name":"VariableDeclaration","src":"23543:19:20"}],"id":8763,"name":"ParameterList","src":"23523:40:20"},{"children":[{"attributes":{"constant":false,"name":"cnt","scope":8817,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8764,"name":"ElementaryTypeName","src":"23587:4:20"}],"id":8765,"name":"VariableDeclaration","src":"23587:8:20"}],"id":8766,"name":"ParameterList","src":"23586:10:20"},{"children":[{"attributes":{"assignments":[8768]},"children":[{"attributes":{"constant":false,"name":"ptr","scope":8816,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8767,"name":"ElementaryTypeName","src":"23607:4:20"}],"id":8768,"name":"VariableDeclaration","src":"23607:8:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8388,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8769,"name":"Identifier","src":"23618:7:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8770,"name":"Identifier","src":"23626:4:20"}],"id":8771,"name":"MemberAccess","src":"23626:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8772,"name":"Identifier","src":"23637:4:20"}],"id":8773,"name":"MemberAccess","src":"23637:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8774,"name":"Identifier","src":"23648:6:20"}],"id":8775,"name":"MemberAccess","src":"23648:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8776,"name":"Identifier","src":"23661:6:20"}],"id":8777,"name":"MemberAccess","src":"23661:11:20"}],"id":8778,"name":"FunctionCall","src":"23618:55:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8779,"name":"Identifier","src":"23676:6:20"}],"id":8780,"name":"MemberAccess","src":"23676:11:20"}],"id":8781,"name":"BinaryOperation","src":"23618:69:20"}],"id":8782,"name":"VariableDeclarationStatement","src":"23607:80:20"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"uint256","value":"ptr"},"id":8783,"name":"Identifier","src":"23704:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8784,"name":"Identifier","src":"23711:4:20"}],"id":8785,"name":"MemberAccess","src":"23711:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8786,"name":"Identifier","src":"23723:4:20"}],"id":8787,"name":"MemberAccess","src":"23723:9:20"}],"id":8788,"name":"BinaryOperation","src":"23711:21:20"}],"id":8789,"name":"BinaryOperation","src":"23704:28:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8765,"type":"uint256","value":"cnt"},"id":8790,"name":"Identifier","src":"23748:3:20"}],"id":8791,"name":"UnaryOperation","src":"23748:5:20"}],"id":8792,"name":"ExpressionStatement","src":"23748:5:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"uint256","value":"ptr"},"id":8793,"name":"Identifier","src":"23767:3:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8388,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"findPtr"},"id":8794,"name":"Identifier","src":"23773:7:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8795,"name":"Identifier","src":"23781:4:20"}],"id":8796,"name":"MemberAccess","src":"23781:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"uint256","value":"ptr"},"id":8797,"name":"Identifier","src":"23794:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8760,"type":"struct strings.slice memory","value":"self"},"id":8798,"name":"Identifier","src":"23800:4:20"}],"id":8799,"name":"MemberAccess","src":"23800:9:20"}],"id":8800,"name":"BinaryOperation","src":"23794:15:20"}],"id":8801,"name":"TupleExpression","src":"23793:17:20"}],"id":8802,"name":"BinaryOperation","src":"23781:29:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8768,"type":"uint256","value":"ptr"},"id":8803,"name":"Identifier","src":"23812:3:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8804,"name":"Identifier","src":"23817:6:20"}],"id":8805,"name":"MemberAccess","src":"23817:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8806,"name":"Identifier","src":"23830:6:20"}],"id":8807,"name":"MemberAccess","src":"23830:11:20"}],"id":8808,"name":"FunctionCall","src":"23773:69:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8762,"type":"struct strings.slice memory","value":"needle"},"id":8809,"name":"Identifier","src":"23845:6:20"}],"id":8810,"name":"MemberAccess","src":"23845:11:20"}],"id":8811,"name":"BinaryOperation","src":"23773:83:20"}],"id":8812,"name":"Assignment","src":"23767:89:20"}],"id":8813,"name":"ExpressionStatement","src":"23767:89:20"}],"id":8814,"name":"Block","src":"23734:133:20"}],"id":8815,"name":"WhileStatement","src":"23697:170:20"}],"id":8816,"name":"Block","src":"23597:276:20"}],"id":8817,"name":"FunctionDefinition","src":"23509:364:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"contains","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8841,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8818,"name":"UserDefinedTypeName","src":"24130:5:20"}],"id":8819,"name":"VariableDeclaration","src":"24130:17:20"},{"attributes":{"constant":false,"name":"needle","scope":8841,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8820,"name":"UserDefinedTypeName","src":"24149:5:20"}],"id":8821,"name":"VariableDeclaration","src":"24149:19:20"}],"id":8822,"name":"ParameterList","src":"24129:40:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8841,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":8823,"name":"ElementaryTypeName","src":"24193:4:20"}],"id":8824,"name":"VariableDeclaration","src":"24193:4:20"}],"id":8825,"name":"ParameterList","src":"24192:6:20"},{"children":[{"attributes":{"functionReturnParameters":8825},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":8505,"type":"function (uint256,uint256,uint256,uint256) pure returns (uint256)","value":"rfindPtr"},"id":8826,"name":"Identifier","src":"24216:8:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8819,"type":"struct strings.slice memory","value":"self"},"id":8827,"name":"Identifier","src":"24225:4:20"}],"id":8828,"name":"MemberAccess","src":"24225:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8819,"type":"struct strings.slice memory","value":"self"},"id":8829,"name":"Identifier","src":"24236:4:20"}],"id":8830,"name":"MemberAccess","src":"24236:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8821,"type":"struct strings.slice memory","value":"needle"},"id":8831,"name":"Identifier","src":"24247:6:20"}],"id":8832,"name":"MemberAccess","src":"24247:11:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8821,"type":"struct strings.slice memory","value":"needle"},"id":8833,"name":"Identifier","src":"24260:6:20"}],"id":8834,"name":"MemberAccess","src":"24260:11:20"}],"id":8835,"name":"FunctionCall","src":"24216:56:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8819,"type":"struct strings.slice memory","value":"self"},"id":8836,"name":"Identifier","src":"24276:4:20"}],"id":8837,"name":"MemberAccess","src":"24276:9:20"}],"id":8838,"name":"BinaryOperation","src":"24216:69:20"}],"id":8839,"name":"Return","src":"24209:76:20"}],"id":8840,"name":"Block","src":"24199:93:20"}],"id":8841,"name":"FunctionDefinition","src":"24112:180:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"concat","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":8887,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8842,"name":"UserDefinedTypeName","src":"24595:5:20"}],"id":8843,"name":"VariableDeclaration","src":"24595:17:20"},{"attributes":{"constant":false,"name":"other","scope":8887,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8844,"name":"UserDefinedTypeName","src":"24614:5:20"}],"id":8845,"name":"VariableDeclaration","src":"24614:18:20"}],"id":8846,"name":"ParameterList","src":"24594:39:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":8887,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8847,"name":"ElementaryTypeName","src":"24657:6:20"}],"id":8848,"name":"VariableDeclaration","src":"24657:13:20"}],"id":8849,"name":"ParameterList","src":"24656:15:20"},{"children":[{"attributes":{"assignments":[8851]},"children":[{"attributes":{"constant":false,"name":"ret","scope":8886,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8850,"name":"ElementaryTypeName","src":"24682:6:20"}],"id":8851,"name":"VariableDeclaration","src":"24682:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8852,"name":"ElementaryTypeName","src":"24706:6:20"}],"id":8853,"name":"NewExpression","src":"24702:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8843,"type":"struct strings.slice memory","value":"self"},"id":8854,"name":"Identifier","src":"24713:4:20"}],"id":8855,"name":"MemberAccess","src":"24713:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"struct strings.slice memory","value":"other"},"id":8856,"name":"Identifier","src":"24725:5:20"}],"id":8857,"name":"MemberAccess","src":"24725:10:20"}],"id":8858,"name":"BinaryOperation","src":"24713:22:20"}],"id":8859,"name":"FunctionCall","src":"24702:34:20"}],"id":8860,"name":"VariableDeclarationStatement","src":"24682:54:20"},{"attributes":{"assignments":[8862],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":8886,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8861,"name":"ElementaryTypeName","src":"24746:4:20"}],"id":8862,"name":"VariableDeclaration","src":"24746:11:20"}],"id":8863,"name":"VariableDeclarationStatement","src":"24746:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8862,"isOffset":false,"isSlot":false,"src":"24778:6:20","valueSize":1}},{"ret":{"declaration":8851,"isOffset":false,"isSlot":false,"src":"24792:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8864,"name":"InlineAssembly","src":"24767:35:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8865,"name":"Identifier","src":"24811:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8862,"type":"uint256","value":"retptr"},"id":8866,"name":"Identifier","src":"24818:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8843,"type":"struct strings.slice memory","value":"self"},"id":8867,"name":"Identifier","src":"24826:4:20"}],"id":8868,"name":"MemberAccess","src":"24826:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8843,"type":"struct strings.slice memory","value":"self"},"id":8869,"name":"Identifier","src":"24837:4:20"}],"id":8870,"name":"MemberAccess","src":"24837:9:20"}],"id":8871,"name":"FunctionCall","src":"24811:36:20"}],"id":8872,"name":"ExpressionStatement","src":"24811:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8873,"name":"Identifier","src":"24857:6:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8862,"type":"uint256","value":"retptr"},"id":8874,"name":"Identifier","src":"24864:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8843,"type":"struct strings.slice memory","value":"self"},"id":8875,"name":"Identifier","src":"24873:4:20"}],"id":8876,"name":"MemberAccess","src":"24873:9:20"}],"id":8877,"name":"BinaryOperation","src":"24864:18:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"struct strings.slice memory","value":"other"},"id":8878,"name":"Identifier","src":"24884:5:20"}],"id":8879,"name":"MemberAccess","src":"24884:10:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8845,"type":"struct strings.slice memory","value":"other"},"id":8880,"name":"Identifier","src":"24896:5:20"}],"id":8881,"name":"MemberAccess","src":"24896:10:20"}],"id":8882,"name":"FunctionCall","src":"24857:50:20"}],"id":8883,"name":"ExpressionStatement","src":"24857:50:20"},{"attributes":{"functionReturnParameters":8849},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8851,"type":"string memory","value":"ret"},"id":8884,"name":"Identifier","src":"24924:3:20"}],"id":8885,"name":"Return","src":"24917:10:20"}],"id":8886,"name":"Block","src":"24672:262:20"}],"id":8887,"name":"FunctionDefinition","src":"24579:355:20"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"join","scope":9003,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8888,"name":"UserDefinedTypeName","src":"25284:5:20"}],"id":8889,"name":"VariableDeclaration","src":"25284:17:20"},{"attributes":{"constant":false,"name":"parts","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"struct strings.slice[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"struct strings.slice[]"},"children":[{"attributes":{"contractScope":null,"name":"slice","referencedDeclaration":7304,"type":"struct strings.slice"},"id":8890,"name":"UserDefinedTypeName","src":"25303:5:20"}],"id":8891,"name":"ArrayTypeName","src":"25303:7:20"}],"id":8892,"name":"VariableDeclaration","src":"25303:20:20"}],"id":8893,"name":"ParameterList","src":"25283:41:20"},{"children":[{"attributes":{"constant":false,"name":"","scope":9002,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8894,"name":"ElementaryTypeName","src":"25348:6:20"}],"id":8895,"name":"VariableDeclaration","src":"25348:13:20"}],"id":8896,"name":"ParameterList","src":"25347:15:20"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8897,"name":"Identifier","src":"25377:5:20"}],"id":8898,"name":"MemberAccess","src":"25377:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8899,"name":"Literal","src":"25393:1:20"}],"id":8900,"name":"BinaryOperation","src":"25377:17:20"},{"attributes":{"functionReturnParameters":8896},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":8901,"name":"Literal","src":"25415:2:20"}],"id":8902,"name":"Return","src":"25408:9:20"}],"id":8903,"name":"IfStatement","src":"25373:44:20"},{"attributes":{"assignments":[8905]},"children":[{"attributes":{"constant":false,"name":"length","scope":9001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8904,"name":"ElementaryTypeName","src":"25428:4:20"}],"id":8905,"name":"VariableDeclaration","src":"25428:11:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8889,"type":"struct strings.slice memory","value":"self"},"id":8906,"name":"Identifier","src":"25442:4:20"}],"id":8907,"name":"MemberAccess","src":"25442:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8908,"name":"Identifier","src":"25455:5:20"}],"id":8909,"name":"MemberAccess","src":"25455:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8910,"name":"Literal","src":"25470:1:20"}],"id":8911,"name":"BinaryOperation","src":"25455:16:20"}],"id":8912,"name":"TupleExpression","src":"25454:18:20"}],"id":8913,"name":"BinaryOperation","src":"25442:30:20"}],"id":8914,"name":"VariableDeclarationStatement","src":"25428:44:20"},{"children":[{"attributes":{"assignments":[8916]},"children":[{"attributes":{"constant":false,"name":"i","scope":8934,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8915,"name":"ElementaryTypeName","src":"25487:4:20"}],"id":8916,"name":"VariableDeclaration","src":"25487:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8917,"name":"Literal","src":"25496:1:20"}],"id":8918,"name":"VariableDeclarationStatement","src":"25487:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8916,"type":"uint256","value":"i"},"id":8919,"name":"Identifier","src":"25499:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8920,"name":"Identifier","src":"25503:5:20"}],"id":8921,"name":"MemberAccess","src":"25503:12:20"}],"id":8922,"name":"BinaryOperation","src":"25499:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8916,"type":"uint256","value":"i"},"id":8923,"name":"Identifier","src":"25517:1:20"}],"id":8924,"name":"UnaryOperation","src":"25517:3:20"}],"id":8925,"name":"ExpressionStatement","src":"25517:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8905,"type":"uint256","value":"length"},"id":8926,"name":"Identifier","src":"25536:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8927,"name":"Identifier","src":"25546:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8916,"type":"uint256","value":"i"},"id":8928,"name":"Identifier","src":"25552:1:20"}],"id":8929,"name":"IndexAccess","src":"25546:8:20"}],"id":8930,"name":"MemberAccess","src":"25546:13:20"}],"id":8931,"name":"Assignment","src":"25536:23:20"}],"id":8932,"name":"ExpressionStatement","src":"25536:23:20"}],"id":8933,"name":"Block","src":"25522:48:20"}],"id":8934,"name":"ForStatement","src":"25482:88:20"},{"attributes":{"assignments":[8936]},"children":[{"attributes":{"constant":false,"name":"ret","scope":9001,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":8935,"name":"ElementaryTypeName","src":"25580:6:20"}],"id":8936,"name":"VariableDeclaration","src":"25580:17:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (string memory)"},"children":[{"attributes":{"name":"string","type":"string"},"id":8937,"name":"ElementaryTypeName","src":"25604:6:20"}],"id":8938,"name":"NewExpression","src":"25600:10:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8905,"type":"uint256","value":"length"},"id":8939,"name":"Identifier","src":"25611:6:20"}],"id":8940,"name":"FunctionCall","src":"25600:18:20"}],"id":8941,"name":"VariableDeclarationStatement","src":"25580:38:20"},{"attributes":{"assignments":[8943],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"retptr","scope":9001,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8942,"name":"ElementaryTypeName","src":"25628:4:20"}],"id":8943,"name":"VariableDeclaration","src":"25628:11:20"}],"id":8944,"name":"VariableDeclarationStatement","src":"25628:11:20"},{"attributes":{"externalReferences":[{"retptr":{"declaration":8943,"isOffset":false,"isSlot":false,"src":"25660:6:20","valueSize":1}},{"ret":{"declaration":8936,"isOffset":false,"isSlot":false,"src":"25674:3:20","valueSize":1}}],"operations":"{ retptr := add(ret, 32) }"},"children":[],"id":8945,"name":"InlineAssembly","src":"25649:35:20"},{"children":[{"attributes":{"assignments":[8947]},"children":[{"attributes":{"constant":false,"name":"i","scope":8998,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint","type":"uint256"},"id":8946,"name":"ElementaryTypeName","src":"25699:4:20"}],"id":8947,"name":"VariableDeclaration","src":"25699:6:20"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":8948,"name":"Literal","src":"25708:1:20"}],"id":8949,"name":"VariableDeclarationStatement","src":"25699:10:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8950,"name":"Identifier","src":"25711:1:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8951,"name":"Identifier","src":"25715:5:20"}],"id":8952,"name":"MemberAccess","src":"25715:12:20"}],"id":8953,"name":"BinaryOperation","src":"25711:16:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8954,"name":"Identifier","src":"25729:1:20"}],"id":8955,"name":"UnaryOperation","src":"25729:3:20"}],"id":8956,"name":"ExpressionStatement","src":"25729:3:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8957,"name":"Identifier","src":"25748:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8943,"type":"uint256","value":"retptr"},"id":8958,"name":"Identifier","src":"25755:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8959,"name":"Identifier","src":"25763:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8960,"name":"Identifier","src":"25769:1:20"}],"id":8961,"name":"IndexAccess","src":"25763:8:20"}],"id":8962,"name":"MemberAccess","src":"25763:13:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8963,"name":"Identifier","src":"25778:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8964,"name":"Identifier","src":"25784:1:20"}],"id":8965,"name":"IndexAccess","src":"25778:8:20"}],"id":8966,"name":"MemberAccess","src":"25778:13:20"}],"id":8967,"name":"FunctionCall","src":"25748:44:20"}],"id":8968,"name":"ExpressionStatement","src":"25748:44:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8943,"type":"uint256","value":"retptr"},"id":8969,"name":"Identifier","src":"25806:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct strings.slice memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8970,"name":"Identifier","src":"25816:5:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8971,"name":"Identifier","src":"25822:1:20"}],"id":8972,"name":"IndexAccess","src":"25816:8:20"}],"id":8973,"name":"MemberAccess","src":"25816:13:20"}],"id":8974,"name":"Assignment","src":"25806:23:20"}],"id":8975,"name":"ExpressionStatement","src":"25806:23:20"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8947,"type":"uint256","value":"i"},"id":8976,"name":"Identifier","src":"25847:1:20"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8892,"type":"struct strings.slice memory[] memory","value":"parts"},"id":8977,"name":"Identifier","src":"25851:5:20"}],"id":8978,"name":"MemberAccess","src":"25851:12:20"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":8979,"name":"Literal","src":"25866:1:20"}],"id":8980,"name":"BinaryOperation","src":"25851:16:20"}],"id":8981,"name":"BinaryOperation","src":"25847:20:20"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":7344,"type":"function (uint256,uint256,uint256) pure","value":"memcpy"},"id":8982,"name":"Identifier","src":"25887:6:20"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8943,"type":"uint256","value":"retptr"},"id":8983,"name":"Identifier","src":"25894:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_ptr","referencedDeclaration":7303,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8889,"type":"struct strings.slice memory","value":"self"},"id":8984,"name":"Identifier","src":"25902:4:20"}],"id":8985,"name":"MemberAccess","src":"25902:9:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8889,"type":"struct strings.slice memory","value":"self"},"id":8986,"name":"Identifier","src":"25913:4:20"}],"id":8987,"name":"MemberAccess","src":"25913:9:20"}],"id":8988,"name":"FunctionCall","src":"25887:36:20"}],"id":8989,"name":"ExpressionStatement","src":"25887:36:20"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8943,"type":"uint256","value":"retptr"},"id":8990,"name":"Identifier","src":"25941:6:20"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_len","referencedDeclaration":7301,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8889,"type":"struct strings.slice memory","value":"self"},"id":8991,"name":"Identifier","src":"25951:4:20"}],"id":8992,"name":"MemberAccess","src":"25951:9:20"}],"id":8993,"name":"Assignment","src":"25941:19:20"}],"id":8994,"name":"ExpressionStatement","src":"25941:19:20"}],"id":8995,"name":"Block","src":"25869:106:20"}],"id":8996,"name":"IfStatement","src":"25843:132:20"}],"id":8997,"name":"Block","src":"25734:251:20"}],"id":8998,"name":"ForStatement","src":"25694:291:20"},{"attributes":{"functionReturnParameters":8896},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":8936,"type":"string memory","value":"ret"},"id":8999,"name":"Identifier","src":"26002:3:20"}],"id":9000,"name":"Return","src":"25995:10:20"}],"id":9001,"name":"Block","src":"25363:649:20"}],"id":9002,"name":"FunctionDefinition","src":"25270:742:20"}],"id":9003,"name":"ContractDefinition","src":"2599:23415:20"}],"id":9004,"name":"SourceUnit","src":"2574:23441:20"}},"internals/balanceable.sol":{"AST":{"attributes":{"absolutePath":"internals/balanceable.sol","exportedSymbols":{"Balanceable":[3753]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3723,"name":"PragmaDirective","src":"771:24:21"},{"attributes":{"SourceUnit":3370,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":3754,"symbolAliases":[null],"unitAlias":""},"id":3724,"name":"ImportDirective","src":"797:32:21"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Balanceable - This is a contract used to get a balance","fullyImplemented":true,"linearizedBaseContracts":[3753],"name":"Balanceable","scope":3754},"children":[{"attributes":{"documentation":"@dev This function is used to get a balance\n @param _address of which balance we are trying to ascertain\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @return balance associated with an address, for any token, in the wei equivalent","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_balance","scope":3753,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3752,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3725,"name":"ElementaryTypeName","src":"1225:7:21"}],"id":3726,"name":"VariableDeclaration","src":"1225:16:21"},{"attributes":{"constant":false,"name":"_asset","scope":3752,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3727,"name":"ElementaryTypeName","src":"1243:7:21"}],"id":3728,"name":"VariableDeclaration","src":"1243:14:21"}],"id":3729,"name":"ParameterList","src":"1224:34:21"},{"children":[{"attributes":{"constant":false,"name":"","scope":3752,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3730,"name":"ElementaryTypeName","src":"1282:7:21"}],"id":3731,"name":"VariableDeclaration","src":"1282:7:21"}],"id":3732,"name":"ParameterList","src":"1281:9:21"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3728,"type":"address","value":"_asset"},"id":3733,"name":"Identifier","src":"1305:6:21"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3734,"name":"ElementaryTypeNameExpression","src":"1315:7:21"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3735,"name":"Literal","src":"1323:1:21"}],"id":3736,"name":"FunctionCall","src":"1315:10:21"}],"id":3737,"name":"BinaryOperation","src":"1305:20:21"},{"children":[{"attributes":{"functionReturnParameters":3732},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balanceOf","referencedDeclaration":3343,"type":"function (address) view external returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":3738,"name":"Identifier","src":"1348:5:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3728,"type":"address","value":"_asset"},"id":3739,"name":"Identifier","src":"1354:6:21"}],"id":3740,"name":"FunctionCall","src":"1348:13:21"}],"id":3741,"name":"MemberAccess","src":"1348:23:21"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"address","value":"_address"},"id":3742,"name":"Identifier","src":"1372:8:21"}],"id":3743,"name":"FunctionCall","src":"1348:33:21"}],"id":3744,"name":"Return","src":"1341:40:21"}],"id":3745,"name":"Block","src":"1327:65:21"},{"children":[{"attributes":{"functionReturnParameters":3732},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"balance","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3726,"type":"address","value":"_address"},"id":3746,"name":"Identifier","src":"1419:8:21"}],"id":3747,"name":"MemberAccess","src":"1419:16:21"}],"id":3748,"name":"Return","src":"1412:23:21"}],"id":3749,"name":"Block","src":"1398:48:21"}],"id":3750,"name":"IfStatement","src":"1301:145:21"}],"id":3751,"name":"Block","src":"1291:161:21"}],"id":3752,"name":"FunctionDefinition","src":"1207:245:21"}],"id":3753,"name":"ContractDefinition","src":"898:556:21"}],"id":3754,"name":"SourceUnit","src":"771:684:21"}},"internals/bytesUtils.sol":{"AST":{"attributes":{"absolutePath":"internals/bytesUtils.sol","exportedSymbols":{"BytesUtils":[9114]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":9005,"name":"PragmaDirective","src":"770:24:22"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"../externals/SafeMath.sol","scope":9115,"symbolAliases":[null],"unitAlias":""},"id":9006,"name":"ImportDirective","src":"796:35:22"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title BytesUtils provides basic byte slicing and casting functionality.","fullyImplemented":true,"linearizedBaseContracts":[9114],"name":"BytesUtils","scope":9115},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":9007,"name":"UserDefinedTypeName","src":"942:8:22"},{"attributes":{"name":"uint256","type":"uint256"},"id":9008,"name":"ElementaryTypeName","src":"955:7:22"}],"id":9009,"name":"UsingForDirective","src":"936:27:22"},{"attributes":{"documentation":"@dev This function converts to an address\n @param _bts bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToAddress","scope":9114,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9045,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9010,"name":"ElementaryTypeName","src":"1106:5:22"}],"id":9011,"name":"VariableDeclaration","src":"1106:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9045,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9012,"name":"ElementaryTypeName","src":"1125:7:22"}],"id":9013,"name":"VariableDeclaration","src":"1125:13:22"}],"id":9014,"name":"ParameterList","src":"1105:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9045,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":9015,"name":"ElementaryTypeName","src":"1163:7:22"}],"id":9016,"name":"VariableDeclaration","src":"1163:7:22"}],"id":9017,"name":"ParameterList","src":"1162:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":9018,"name":"Identifier","src":"1182:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9011,"type":"bytes memory","value":"_bts"},"id":9019,"name":"Identifier","src":"1190:4:22"}],"id":9020,"name":"MemberAccess","src":"1190:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_20_by_1","typeString":"int_const 20"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9013,"type":"uint256","value":"_from"},"id":9021,"name":"Identifier","src":"1205:5:22"}],"id":9022,"name":"MemberAccess","src":"1205:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3230","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 20","value":"20"},"id":9023,"name":"Literal","src":"1215:2:22"}],"id":9024,"name":"FunctionCall","src":"1205:13:22"}],"id":9025,"name":"BinaryOperation","src":"1190:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9026,"name":"Literal","src":"1220:22:22"}],"id":9027,"name":"FunctionCall","src":"1182:61:22"}],"id":9028,"name":"ExpressionStatement","src":"1182:61:22"},{"attributes":{"assignments":[9030],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedAddress","scope":9044,"stateVariable":false,"storageLocation":"default","type":"bytes20","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes20","type":"bytes20"},"id":9029,"name":"ElementaryTypeName","src":"1254:7:22"}],"id":9030,"name":"VariableDeclaration","src":"1254:24:22"}],"id":9031,"name":"VariableDeclarationStatement","src":"1254:24:22"},{"attributes":{"assignments":[9033]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9044,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9032,"name":"ElementaryTypeName","src":"1288:7:22"}],"id":9033,"name":"VariableDeclaration","src":"1288:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9013,"type":"uint256","value":"_from"},"id":9034,"name":"Identifier","src":"1308:5:22"}],"id":9035,"name":"MemberAccess","src":"1308:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9036,"name":"Literal","src":"1318:2:22"}],"id":9037,"name":"FunctionCall","src":"1308:13:22"}],"id":9038,"name":"VariableDeclarationStatement","src":"1288:33:22"},{"attributes":{"externalReferences":[{"convertedAddress":{"declaration":9030,"isOffset":false,"isSlot":false,"src":"1396:16:22","valueSize":1}},{"_bts":{"declaration":9011,"isOffset":false,"isSlot":false,"src":"1426:4:22","valueSize":1}},{"startByte":{"declaration":9033,"isOffset":false,"isSlot":false,"src":"1432:9:22","valueSize":1}}],"operations":"{\n convertedAddress := mload(add(_bts, startByte))\n}"},"children":[],"id":9039,"name":"InlineAssembly","src":"1373:80:22"},{"attributes":{"functionReturnParameters":9017},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes20","typeString":"bytes20"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":9040,"name":"ElementaryTypeNameExpression","src":"1470:7:22"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9030,"type":"bytes20","value":"convertedAddress"},"id":9041,"name":"Identifier","src":"1478:16:22"}],"id":9042,"name":"FunctionCall","src":"1470:25:22"}],"id":9043,"name":"Return","src":"1463:32:22"}],"id":9044,"name":"Block","src":"1172:330:22"}],"id":9045,"name":"FunctionDefinition","src":"1081:421:22"},{"attributes":{"documentation":"@dev This function slices bytes into bytes4\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToBytes4","scope":9114,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9079,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9046,"name":"ElementaryTypeName","src":"1651:5:22"}],"id":9047,"name":"VariableDeclaration","src":"1651:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9079,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9048,"name":"ElementaryTypeName","src":"1670:7:22"}],"id":9049,"name":"VariableDeclaration","src":"1670:13:22"}],"id":9050,"name":"ParameterList","src":"1650:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9079,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9051,"name":"ElementaryTypeName","src":"1708:6:22"}],"id":9052,"name":"VariableDeclaration","src":"1708:6:22"}],"id":9053,"name":"ParameterList","src":"1707:8:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":9054,"name":"Identifier","src":"1726:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9047,"type":"bytes memory","value":"_bts"},"id":9055,"name":"Identifier","src":"1734:4:22"}],"id":9056,"name":"MemberAccess","src":"1734:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9049,"type":"uint256","value":"_from"},"id":9057,"name":"Identifier","src":"1749:5:22"}],"id":9058,"name":"MemberAccess","src":"1749:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":9059,"name":"Literal","src":"1759:1:22"}],"id":9060,"name":"FunctionCall","src":"1749:12:22"}],"id":9061,"name":"BinaryOperation","src":"1734:27:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9062,"name":"Literal","src":"1763:22:22"}],"id":9063,"name":"FunctionCall","src":"1726:60:22"}],"id":9064,"name":"ExpressionStatement","src":"1726:60:22"},{"attributes":{"assignments":[9066],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"slicedBytes4","scope":9078,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":9065,"name":"ElementaryTypeName","src":"1797:6:22"}],"id":9066,"name":"VariableDeclaration","src":"1797:19:22"}],"id":9067,"name":"VariableDeclarationStatement","src":"1797:19:22"},{"attributes":{"assignments":[9069]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9078,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9068,"name":"ElementaryTypeName","src":"1826:7:22"}],"id":9069,"name":"VariableDeclaration","src":"1826:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9049,"type":"uint256","value":"_from"},"id":9070,"name":"Identifier","src":"1846:5:22"}],"id":9071,"name":"MemberAccess","src":"1846:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9072,"name":"Literal","src":"1856:2:22"}],"id":9073,"name":"FunctionCall","src":"1846:13:22"}],"id":9074,"name":"VariableDeclarationStatement","src":"1826:33:22"},{"attributes":{"externalReferences":[{"slicedBytes4":{"declaration":9066,"isOffset":false,"isSlot":false,"src":"1934:12:22","valueSize":1}},{"_bts":{"declaration":9047,"isOffset":false,"isSlot":false,"src":"1960:4:22","valueSize":1}},{"startByte":{"declaration":9069,"isOffset":false,"isSlot":false,"src":"1966:9:22","valueSize":1}}],"operations":"{\n slicedBytes4 := mload(add(_bts, startByte))\n}"},"children":[],"id":9075,"name":"InlineAssembly","src":"1911:76:22"},{"attributes":{"functionReturnParameters":9053},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9066,"type":"bytes4","value":"slicedBytes4"},"id":9076,"name":"Identifier","src":"2004:12:22"}],"id":9077,"name":"Return","src":"1997:19:22"}],"id":9078,"name":"Block","src":"1716:307:22"}],"id":9079,"name":"FunctionDefinition","src":"1627:396:22"},{"attributes":{"documentation":"@dev This function slices a uint\n @param _bts some bytes\n @param _from start position","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_bytesToUint256","scope":9114,"stateMutability":"pure","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_bts","scope":9113,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":9080,"name":"ElementaryTypeName","src":"2398:5:22"}],"id":9081,"name":"VariableDeclaration","src":"2398:17:22"},{"attributes":{"constant":false,"name":"_from","scope":9113,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9082,"name":"ElementaryTypeName","src":"2417:7:22"}],"id":9083,"name":"VariableDeclaration","src":"2417:13:22"}],"id":9084,"name":"ParameterList","src":"2397:34:22"},{"children":[{"attributes":{"constant":false,"name":"","scope":9113,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9085,"name":"ElementaryTypeName","src":"2455:7:22"}],"id":9086,"name":"VariableDeclaration","src":"2455:7:22"}],"id":9087,"name":"ParameterList","src":"2454:9:22"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_294d2bd5b6fb7e8eb608d7ff076f4babdc08155a7a6671f4f35801fb90c8bda4","typeString":"literal_string \"slicing out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":9088,"name":"Identifier","src":"2474:7:22"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9081,"type":"bytes memory","value":"_bts"},"id":9089,"name":"Identifier","src":"2482:4:22"}],"id":9090,"name":"MemberAccess","src":"2482:11:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"uint256","value":"_from"},"id":9091,"name":"Identifier","src":"2497:5:22"}],"id":9092,"name":"MemberAccess","src":"2497:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9093,"name":"Literal","src":"2507:2:22"}],"id":9094,"name":"FunctionCall","src":"2497:13:22"}],"id":9095,"name":"BinaryOperation","src":"2482:28:22"},{"attributes":{"argumentTypes":null,"hexvalue":"736c6963696e67206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"slicing out of range\"","value":"slicing out of range"},"id":9096,"name":"Literal","src":"2512:22:22"}],"id":9097,"name":"FunctionCall","src":"2474:61:22"}],"id":9098,"name":"ExpressionStatement","src":"2474:61:22"},{"attributes":{"assignments":[9100],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"convertedUint256","scope":9112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9099,"name":"ElementaryTypeName","src":"2546:7:22"}],"id":9100,"name":"VariableDeclaration","src":"2546:24:22"}],"id":9101,"name":"VariableDeclarationStatement","src":"2546:24:22"},{"attributes":{"assignments":[9103]},"children":[{"attributes":{"constant":false,"name":"startByte","scope":9112,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":9102,"name":"ElementaryTypeName","src":"2580:7:22"}],"id":9103,"name":"VariableDeclaration","src":"2580:17:22"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9083,"type":"uint256","value":"_from"},"id":9104,"name":"Identifier","src":"2600:5:22"}],"id":9105,"name":"MemberAccess","src":"2600:9:22"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":9106,"name":"Literal","src":"2610:2:22"}],"id":9107,"name":"FunctionCall","src":"2600:13:22"}],"id":9108,"name":"VariableDeclarationStatement","src":"2580:33:22"},{"attributes":{"externalReferences":[{"convertedUint256":{"declaration":9100,"isOffset":false,"isSlot":false,"src":"2688:16:22","valueSize":1}},{"_bts":{"declaration":9081,"isOffset":false,"isSlot":false,"src":"2718:4:22","valueSize":1}},{"startByte":{"declaration":9103,"isOffset":false,"isSlot":false,"src":"2724:9:22","valueSize":1}}],"operations":"{\n convertedUint256 := mload(add(_bts, startByte))\n}"},"children":[],"id":9109,"name":"InlineAssembly","src":"2665:80:22"},{"attributes":{"functionReturnParameters":9087},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":9100,"type":"uint256","value":"convertedUint256"},"id":9110,"name":"Identifier","src":"2762:16:22"}],"id":9111,"name":"Return","src":"2755:23:22"}],"id":9112,"name":"Block","src":"2464:321:22"}],"id":9113,"name":"FunctionDefinition","src":"2373:412:22"}],"id":9114,"name":"ContractDefinition","src":"911:1876:22"}],"id":9115,"name":"SourceUnit","src":"770:2018:22"}},"internals/controllable.sol":{"AST":{"attributes":{"absolutePath":"internals/controllable.sol","exportedSymbols":{"Controllable":[325]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":231,"name":"PragmaDirective","src":"772:24:23"},{"attributes":{"SourceUnit":3162,"absolutePath":"controller.sol","file":"../controller.sol","scope":326,"symbolAliases":[null],"unitAlias":""},"id":232,"name":"ImportDirective","src":"798:27:23"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":326,"symbolAliases":[null],"unitAlias":""},"id":233,"name":"ImportDirective","src":"826:29:23"},{"attributes":{"contractDependencies":[3206],"contractKind":"contract","documentation":"@title Controllable implements access control functionality of the Controller found via ENS.","fullyImplemented":false,"linearizedBaseContracts":[325,3206],"name":"Controllable","scope":326},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":234,"name":"UserDefinedTypeName","src":"980:13:23"}],"id":235,"name":"InheritanceSpecifier","src":"980:13:23"},{"attributes":{"constant":true,"name":"_DEFAULT_CONTROLLER_NODE","scope":325,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":236,"name":"ElementaryTypeName","src":"1070:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"307837663263653939353631376432383136623432366335633836393863356563323935326637613334626231306633383332366637343933336435383933363937","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 5752...(69 digits omitted)...7831","value":"0x7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697"},"id":237,"name":"Literal","src":"1122:66:23"}],"id":238,"name":"VariableDeclaration","src":"1070:118:23"},{"attributes":{"constant":false,"name":"_controllerNode","scope":325,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":239,"name":"ElementaryTypeName","src":"1272:7:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":238,"type":"bytes32","value":"_DEFAULT_CONTROLLER_NODE"},"id":240,"name":"Identifier","src":"1306:24:23"}],"id":241,"name":"VariableDeclaration","src":"1272:58:23"},{"attributes":{"documentation":"@notice Constructor initializes the controller contract object.\n @param _controllerNode_ is the ENS node of the Controller.\n @dev pass in bytes32(0) to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":325,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_controllerNode_","scope":258,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":242,"name":"ElementaryTypeName","src":"1571:7:23"}],"id":243,"name":"VariableDeclaration","src":"1571:24:23"}],"id":244,"name":"ParameterList","src":"1570:26:23"},{"attributes":{"parameters":[null]},"children":[],"id":245,"name":"ParameterList","src":"1606:0:23"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":243,"type":"bytes32","value":"_controllerNode_"},"id":246,"name":"Identifier","src":"1665:16:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":247,"name":"ElementaryTypeNameExpression","src":"1685:7:23"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":248,"name":"Literal","src":"1693:1:23"}],"id":249,"name":"FunctionCall","src":"1685:10:23"}],"id":250,"name":"BinaryOperation","src":"1665:30:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":241,"type":"bytes32","value":"_controllerNode"},"id":251,"name":"Identifier","src":"1711:15:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":243,"type":"bytes32","value":"_controllerNode_"},"id":252,"name":"Identifier","src":"1729:16:23"}],"id":253,"name":"Assignment","src":"1711:34:23"}],"id":254,"name":"ExpressionStatement","src":"1711:34:23"}],"id":255,"name":"Block","src":"1697:59:23"}],"id":256,"name":"IfStatement","src":"1661:95:23"}],"id":257,"name":"Block","src":"1606:156:23"}],"id":258,"name":"FunctionDefinition","src":"1559:203:23"},{"attributes":{"documentation":"@notice Checks if message sender is a controller.","name":"onlyController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":259,"name":"ParameterList","src":"1849:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_918bc5a096178f6e8c423f958a6008c4b24fd25b7a3ca0123b85463c61a2e566","typeString":"literal_string \"sender is not a controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":260,"name":"Identifier","src":"1862:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":307,"type":"function (address) view returns (bool)","value":"_isController"},"id":261,"name":"Identifier","src":"1870:13:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":262,"name":"Identifier","src":"1884:3:23"}],"id":263,"name":"MemberAccess","src":"1884:10:23"}],"id":264,"name":"FunctionCall","src":"1870:25:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f74206120636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not a controller\"","value":"sender is not a controller"},"id":265,"name":"Literal","src":"1897:28:23"}],"id":266,"name":"FunctionCall","src":"1862:64:23"}],"id":267,"name":"ExpressionStatement","src":"1862:64:23"},{"id":268,"name":"PlaceholderStatement","src":"1936:1:23"}],"id":269,"name":"Block","src":"1852:92:23"}],"id":270,"name":"ModifierDefinition","src":"1826:118:23"},{"attributes":{"documentation":"@notice Checks if message sender is an admin.","name":"onlyAdmin","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":271,"name":"ParameterList","src":"2022:2:23"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_156cbb05733026f4aa0b363c6a3be5f21b7ab8f248a865cc639a4d928ddeabb8","typeString":"literal_string \"sender is not an admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":272,"name":"Identifier","src":"2035:7:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":324,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":273,"name":"Identifier","src":"2043:8:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":274,"name":"Identifier","src":"2052:3:23"}],"id":275,"name":"MemberAccess","src":"2052:10:23"}],"id":276,"name":"FunctionCall","src":"2043:20:23"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e2061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an admin\"","value":"sender is not an admin"},"id":277,"name":"Literal","src":"2065:24:23"}],"id":278,"name":"FunctionCall","src":"2035:55:23"}],"id":279,"name":"ExpressionStatement","src":"2035:55:23"},{"id":280,"name":"PlaceholderStatement","src":"2100:1:23"}],"id":281,"name":"Block","src":"2025:83:23"}],"id":282,"name":"ModifierDefinition","src":"2004:104:23"},{"attributes":{"documentation":"@return the controller node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"controllerNode","scope":325,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":283,"name":"ParameterList","src":"2192:2:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":290,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":284,"name":"ElementaryTypeName","src":"2216:7:23"}],"id":285,"name":"VariableDeclaration","src":"2216:7:23"}],"id":286,"name":"ParameterList","src":"2215:9:23"},{"children":[{"attributes":{"functionReturnParameters":286},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":241,"type":"bytes32","value":"_controllerNode"},"id":287,"name":"Identifier","src":"2242:15:23"}],"id":288,"name":"Return","src":"2235:22:23"}],"id":289,"name":"Block","src":"2225:39:23"}],"id":290,"name":"FunctionDefinition","src":"2169:95:23"},{"attributes":{"documentation":"@return true if the provided account is a controller.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isController","scope":325,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":307,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":291,"name":"ElementaryTypeName","src":"2355:7:23"}],"id":292,"name":"VariableDeclaration","src":"2355:16:23"}],"id":293,"name":"ParameterList","src":"2354:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":307,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":294,"name":"ElementaryTypeName","src":"2396:4:23"}],"id":295,"name":"VariableDeclaration","src":"2396:4:23"}],"id":296,"name":"ParameterList","src":"2395:6:23"},{"children":[{"attributes":{"functionReturnParameters":296},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isController","referencedDeclaration":2718,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2726,"type":"type(contract IController)","value":"IController"},"id":297,"name":"Identifier","src":"2419:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":298,"name":"Identifier","src":"2431:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":241,"type":"bytes32","value":"_controllerNode"},"id":299,"name":"Identifier","src":"2443:15:23"}],"id":300,"name":"FunctionCall","src":"2431:28:23"}],"id":301,"name":"FunctionCall","src":"2419:41:23"}],"id":302,"name":"MemberAccess","src":"2419:54:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":292,"type":"address","value":"_account"},"id":303,"name":"Identifier","src":"2474:8:23"}],"id":304,"name":"FunctionCall","src":"2419:64:23"}],"id":305,"name":"Return","src":"2412:71:23"}],"id":306,"name":"Block","src":"2402:88:23"}],"id":307,"name":"FunctionDefinition","src":"2332:158:23"},{"attributes":{"documentation":"@return true if the provided account is an admin.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isAdmin","scope":325,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":324,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":308,"name":"ElementaryTypeName","src":"2572:7:23"}],"id":309,"name":"VariableDeclaration","src":"2572:16:23"}],"id":310,"name":"ParameterList","src":"2571:18:23"},{"children":[{"attributes":{"constant":false,"name":"","scope":324,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":311,"name":"ElementaryTypeName","src":"2613:4:23"}],"id":312,"name":"VariableDeclaration","src":"2613:4:23"}],"id":313,"name":"ParameterList","src":"2612:6:23"},{"children":[{"attributes":{"functionReturnParameters":313},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isAdmin","referencedDeclaration":2725,"type":"function (address) view external returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IController","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2726,"type":"type(contract IController)","value":"IController"},"id":314,"name":"Identifier","src":"2636:11:23"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":315,"name":"Identifier","src":"2648:11:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":241,"type":"bytes32","value":"_controllerNode"},"id":316,"name":"Identifier","src":"2660:15:23"}],"id":317,"name":"FunctionCall","src":"2648:28:23"}],"id":318,"name":"FunctionCall","src":"2636:41:23"}],"id":319,"name":"MemberAccess","src":"2636:49:23"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":309,"type":"address","value":"_account"},"id":320,"name":"Identifier","src":"2686:8:23"}],"id":321,"name":"FunctionCall","src":"2636:59:23"}],"id":322,"name":"Return","src":"2629:66:23"}],"id":323,"name":"Block","src":"2619:83:23"}],"id":324,"name":"FunctionDefinition","src":"2554:148:23"}],"id":325,"name":"ContractDefinition","src":"955:1749:23"}],"id":326,"name":"SourceUnit","src":"772:1933:23"}},"internals/ensResolvable.sol":{"AST":{"attributes":{"absolutePath":"internals/ensResolvable.sol","exportedSymbols":{"ENSResolvable":[3206]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3163,"name":"PragmaDirective","src":"773:24:24"},{"attributes":{"SourceUnit":4849,"absolutePath":"externals/ens/ENS.sol","file":"../externals/ens/ENS.sol","scope":3207,"symbolAliases":[null],"unitAlias":""},"id":3164,"name":"ImportDirective","src":"799:34:24"},{"attributes":{"SourceUnit":5023,"absolutePath":"externals/ens/PublicResolver.sol","file":"../externals/ens/PublicResolver.sol","scope":3207,"symbolAliases":[null],"unitAlias":""},"id":3165,"name":"ImportDirective","src":"834:45:24"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title ENSResolvable - Ethereum Name Service Resolver\n@notice contract should be used to get an address for an ENS node","fullyImplemented":true,"linearizedBaseContracts":[3206],"name":"ENSResolvable","scope":3207},"children":[{"attributes":{"constant":false,"name":"_ensRegistry","scope":3206,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3166,"name":"ElementaryTypeName","src":"1109:7:24"}],"id":3167,"name":"VariableDeclaration","src":"1109:28:24"},{"attributes":{"documentation":"@param _ensReg_ is the ENS registry used","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3206,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ensReg_","scope":3177,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3168,"name":"ElementaryTypeName","src":"1205:7:24"}],"id":3169,"name":"VariableDeclaration","src":"1205:16:24"}],"id":3170,"name":"ParameterList","src":"1204:18:24"},{"attributes":{"parameters":[null]},"children":[],"id":3171,"name":"ParameterList","src":"1232:0:24"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"address","value":"_ensRegistry"},"id":3172,"name":"Identifier","src":"1242:12:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3169,"type":"address","value":"_ensReg_"},"id":3173,"name":"Identifier","src":"1257:8:24"}],"id":3174,"name":"Assignment","src":"1242:23:24"}],"id":3175,"name":"ExpressionStatement","src":"1242:23:24"}],"id":3176,"name":"Block","src":"1232:40:24"}],"id":3177,"name":"FunctionDefinition","src":"1193:79:24"},{"attributes":{"documentation":"@notice this is used to that one can observe which ENS registry is being used","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"ensRegistry","scope":3206,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3178,"name":"ParameterList","src":"1384:2:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":3185,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3179,"name":"ElementaryTypeName","src":"1410:7:24"}],"id":3180,"name":"VariableDeclaration","src":"1410:7:24"}],"id":3181,"name":"ParameterList","src":"1409:9:24"},{"children":[{"attributes":{"functionReturnParameters":3181},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"address","value":"_ensRegistry"},"id":3182,"name":"Identifier","src":"1436:12:24"}],"id":3183,"name":"Return","src":"1429:19:24"}],"id":3184,"name":"Block","src":"1419:36:24"}],"id":3185,"name":"FunctionDefinition","src":"1364:91:24"},{"attributes":{"documentation":"@notice helper function used to get the address of a node\n @param _node of the ENS entry that needs resolving\n @return the address of the said node","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_ensResolve","scope":3206,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_node","scope":3205,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3186,"name":"ElementaryTypeName","src":"1652:7:24"}],"id":3187,"name":"VariableDeclaration","src":"1652:13:24"}],"id":3188,"name":"ParameterList","src":"1651:15:24"},{"children":[{"attributes":{"constant":false,"name":"","scope":3205,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3189,"name":"ElementaryTypeName","src":"1690:7:24"}],"id":3190,"name":"VariableDeclaration","src":"1690:7:24"}],"id":3191,"name":"ParameterList","src":"1689:9:24"},{"children":[{"attributes":{"functionReturnParameters":3191},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"addr","referencedDeclaration":6228,"type":"function (bytes32) view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract PublicResolver","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5022,"type":"type(contract PublicResolver)","value":"PublicResolver"},"id":3192,"name":"Identifier","src":"1716:14:24"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"resolver","referencedDeclaration":4824,"type":"function (bytes32) view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ENS","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4848,"type":"type(contract ENS)","value":"ENS"},"id":3193,"name":"Identifier","src":"1731:3:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3167,"type":"address","value":"_ensRegistry"},"id":3194,"name":"Identifier","src":"1735:12:24"}],"id":3195,"name":"FunctionCall","src":"1731:17:24"}],"id":3196,"name":"MemberAccess","src":"1731:26:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3187,"type":"bytes32","value":"_node"},"id":3197,"name":"Identifier","src":"1758:5:24"}],"id":3198,"name":"FunctionCall","src":"1731:33:24"}],"id":3199,"name":"FunctionCall","src":"1716:49:24"}],"id":3200,"name":"MemberAccess","src":"1716:54:24"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3187,"type":"bytes32","value":"_node"},"id":3201,"name":"Identifier","src":"1771:5:24"}],"id":3202,"name":"FunctionCall","src":"1716:61:24"}],"id":3203,"name":"Return","src":"1709:68:24"}],"id":3204,"name":"Block","src":"1699:85:24"}],"id":3205,"name":"FunctionDefinition","src":"1631:153:24"}],"id":3206,"name":"ContractDefinition","src":"1008:778:24"}],"id":3207,"name":"SourceUnit","src":"773:1014:24"}},"internals/ownable.sol":{"AST":{"attributes":{"absolutePath":"internals/ownable.sol","exportedSymbols":{"Ownable":[3910]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3755,"name":"PragmaDirective","src":"767:24:25"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title Ownable has an owner address and provides basic authorization control functions.\n This contract is modified version of the MIT OpenZepplin Ownable contract\n This contract allows for the transferOwnership operation to be made impossible\n https://github.com/OpenZeppelin/openzeppelin-solidity/blob/master/contracts/ownership/Ownable.sol","fullyImplemented":true,"linearizedBaseContracts":[3910],"name":"Ownable","scope":3911},"children":[{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":3761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3756,"name":"ElementaryTypeName","src":"1199:7:25"}],"id":3757,"name":"VariableDeclaration","src":"1199:13:25"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":3761,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3758,"name":"ElementaryTypeName","src":"1214:7:25"}],"id":3759,"name":"VariableDeclaration","src":"1214:11:25"}],"id":3760,"name":"ParameterList","src":"1198:28:25"}],"id":3761,"name":"EventDefinition","src":"1172:55:25"},{"attributes":{"anonymous":false,"documentation":null,"name":"LockedOwnership"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_locked","scope":3765,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3762,"name":"ElementaryTypeName","src":"1254:7:25"}],"id":3763,"name":"VariableDeclaration","src":"1254:15:25"}],"id":3764,"name":"ParameterList","src":"1253:17:25"}],"id":3765,"name":"EventDefinition","src":"1232:39:25"},{"attributes":{"constant":false,"name":"_owner","scope":3910,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3766,"name":"ElementaryTypeName","src":"1277:15:25"}],"id":3767,"name":"VariableDeclaration","src":"1277:30:25"},{"attributes":{"constant":false,"name":"_isTransferable","scope":3910,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3768,"name":"ElementaryTypeName","src":"1313:4:25"}],"id":3769,"name":"VariableDeclaration","src":"1313:28:25"},{"attributes":{"documentation":"@notice Constructor sets the original owner of the contract and whether or not it is one time transferable.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":3910,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account_","scope":3800,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3770,"name":"ElementaryTypeName","src":"1476:15:25"}],"id":3771,"name":"VariableDeclaration","src":"1476:25:25"},{"attributes":{"constant":false,"name":"_transferable_","scope":3800,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3772,"name":"ElementaryTypeName","src":"1503:4:25"}],"id":3773,"name":"VariableDeclaration","src":"1503:19:25"}],"id":3774,"name":"ParameterList","src":"1475:48:25"},{"attributes":{"parameters":[null]},"children":[],"id":3775,"name":"ParameterList","src":"1533:0:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3776,"name":"Identifier","src":"1543:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3771,"type":"address payable","value":"_account_"},"id":3777,"name":"Identifier","src":"1552:9:25"}],"id":3778,"name":"Assignment","src":"1543:18:25"}],"id":3779,"name":"ExpressionStatement","src":"1543:18:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3780,"name":"Identifier","src":"1571:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3773,"type":"bool","value":"_transferable_"},"id":3781,"name":"Identifier","src":"1589:14:25"}],"id":3782,"name":"Assignment","src":"1571:32:25"}],"id":3783,"name":"ExpressionStatement","src":"1571:32:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3784,"name":"Identifier","src":"1687:15:25"}],"id":3785,"name":"UnaryOperation","src":"1686:16:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3765,"type":"function (address)","value":"LockedOwnership"},"id":3786,"name":"Identifier","src":"1723:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3771,"type":"address payable","value":"_account_"},"id":3787,"name":"Identifier","src":"1739:9:25"}],"id":3788,"name":"FunctionCall","src":"1723:26:25"}],"id":3789,"name":"EmitStatement","src":"1718:31:25"}],"id":3790,"name":"Block","src":"1704:56:25"}],"id":3791,"name":"IfStatement","src":"1682:78:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"function (address,address)","value":"TransferredOwnership"},"id":3792,"name":"Identifier","src":"1774:20:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3793,"name":"ElementaryTypeNameExpression","src":"1795:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3794,"name":"Literal","src":"1803:1:25"}],"id":3795,"name":"FunctionCall","src":"1795:10:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3771,"type":"address payable","value":"_account_"},"id":3796,"name":"Identifier","src":"1807:9:25"}],"id":3797,"name":"FunctionCall","src":"1774:43:25"}],"id":3798,"name":"EmitStatement","src":"1769:48:25"}],"id":3799,"name":"Block","src":"1533:291:25"}],"id":3800,"name":"FunctionDefinition","src":"1464:360:25"},{"attributes":{"documentation":"@notice Reverts if called by any account other than the owner.","name":"onlyOwner","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3801,"name":"ParameterList","src":"1919:2:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96d7cc6c06f3d4101b2a14e4ad2906b79dc824ab8a44b63e774a71d2b9c7abd2","typeString":"literal_string \"sender is not an owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3802,"name":"Identifier","src":"1932:7:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":3803,"name":"Identifier","src":"1940:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":3804,"name":"Identifier","src":"1949:3:25"}],"id":3805,"name":"MemberAccess","src":"1949:10:25"}],"id":3806,"name":"FunctionCall","src":"1940:20:25"},{"attributes":{"argumentTypes":null,"hexvalue":"73656e646572206973206e6f7420616e206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sender is not an owner\"","value":"sender is not an owner"},"id":3807,"name":"Literal","src":"1962:24:25"}],"id":3808,"name":"FunctionCall","src":"1932:55:25"}],"id":3809,"name":"ExpressionStatement","src":"1932:55:25"},{"id":3810,"name":"PlaceholderStatement","src":"1997:1:25"}],"id":3811,"name":"Block","src":"1922:83:25"}],"id":3812,"name":"ModifierDefinition","src":"1901:104:25"},{"attributes":{"documentation":"@notice Allows the current owner to transfer control of the contract to a new address.\n @param _account address to transfer ownership to.\n @param _transferable indicates whether to keep the ownership transferable.","implemented":true,"isConstructor":false,"kind":"function","name":"transferOwnership","scope":3910,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_account","scope":3857,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3813,"name":"ElementaryTypeName","src":"2274:15:25"}],"id":3814,"name":"VariableDeclaration","src":"2274:24:25"},{"attributes":{"constant":false,"name":"_transferable","scope":3857,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3815,"name":"ElementaryTypeName","src":"2300:4:25"}],"id":3816,"name":"VariableDeclaration","src":"2300:18:25"}],"id":3817,"name":"ParameterList","src":"2273:46:25"},{"attributes":{"parameters":[null]},"children":[],"id":3820,"name":"ParameterList","src":"2339:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":3818,"name":"Identifier","src":"2329:9:25"}],"id":3819,"name":"ModifierInvocation","src":"2329:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3821,"name":"Identifier","src":"2404:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3822,"name":"Identifier","src":"2412:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3823,"name":"Literal","src":"2429:31:25"}],"id":3824,"name":"FunctionCall","src":"2404:57:25"}],"id":3825,"name":"ExpressionStatement","src":"2404:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_be619f073d6b85c603c617050d1729f1cf3b31bf6ae5ae03f35765577d9bb6c8","typeString":"literal_string \"owner cannot be set to zero address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3826,"name":"Identifier","src":"2534:7:25"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"address payable","value":"_account"},"id":3827,"name":"Identifier","src":"2542:8:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3828,"name":"ElementaryTypeNameExpression","src":"2554:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3829,"name":"Literal","src":"2562:1:25"}],"id":3830,"name":"FunctionCall","src":"2554:10:25"}],"id":3831,"name":"BinaryOperation","src":"2542:22:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e65722063616e6e6f742062652073657420746f207a65726f2061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner cannot be set to zero address\"","value":"owner cannot be set to zero address"},"id":3832,"name":"Literal","src":"2566:37:25"}],"id":3833,"name":"FunctionCall","src":"2534:70:25"}],"id":3834,"name":"ExpressionStatement","src":"2534:70:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3835,"name":"Identifier","src":"2689:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3816,"type":"bool","value":"_transferable"},"id":3836,"name":"Identifier","src":"2707:13:25"}],"id":3837,"name":"Assignment","src":"2689:31:25"}],"id":3838,"name":"ExpressionStatement","src":"2689:31:25"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3816,"type":"bool","value":"_transferable"},"id":3839,"name":"Identifier","src":"2804:13:25"}],"id":3840,"name":"UnaryOperation","src":"2803:14:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3765,"type":"function (address)","value":"LockedOwnership"},"id":3841,"name":"Identifier","src":"2838:15:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"address payable","value":"_account"},"id":3842,"name":"Identifier","src":"2854:8:25"}],"id":3843,"name":"FunctionCall","src":"2838:25:25"}],"id":3844,"name":"EmitStatement","src":"2833:30:25"}],"id":3845,"name":"Block","src":"2819:55:25"}],"id":3846,"name":"IfStatement","src":"2799:75:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"function (address,address)","value":"TransferredOwnership"},"id":3847,"name":"Identifier","src":"2934:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3848,"name":"Identifier","src":"2955:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"address payable","value":"_account"},"id":3849,"name":"Identifier","src":"2963:8:25"}],"id":3850,"name":"FunctionCall","src":"2934:38:25"}],"id":3851,"name":"EmitStatement","src":"2929:43:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3852,"name":"Identifier","src":"3032:6:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3814,"type":"address payable","value":"_account"},"id":3853,"name":"Identifier","src":"3041:8:25"}],"id":3854,"name":"Assignment","src":"3032:17:25"}],"id":3855,"name":"ExpressionStatement","src":"3032:17:25"}],"id":3856,"name":"Block","src":"2339:717:25"}],"id":3857,"name":"FunctionDefinition","src":"2247:809:25"},{"attributes":{"documentation":"@notice check if the ownership is transferable.\n @return true if the ownership is transferable.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isTransferable","scope":3910,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3858,"name":"ParameterList","src":"3196:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3865,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3859,"name":"ElementaryTypeName","src":"3222:4:25"}],"id":3860,"name":"VariableDeclaration","src":"3222:4:25"}],"id":3861,"name":"ParameterList","src":"3221:6:25"},{"children":[{"attributes":{"functionReturnParameters":3861},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3862,"name":"Identifier","src":"3245:15:25"}],"id":3863,"name":"Return","src":"3238:22:25"}],"id":3864,"name":"Block","src":"3228:39:25"}],"id":3865,"name":"FunctionDefinition","src":"3173:94:25"},{"attributes":{"documentation":"@notice Allows the current owner to relinquish control of the contract.\n @dev Renouncing to ownership will leave the contract without an owner and unusable.\n @dev It will not be possible to call the functions with the `onlyOwner` modifier anymore.","implemented":true,"isConstructor":false,"kind":"function","name":"renounceOwnership","scope":3910,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3866,"name":"ParameterList","src":"3569:2:25"},{"attributes":{"parameters":[null]},"children":[],"id":3869,"name":"ParameterList","src":"3591:0:25"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":3867,"name":"Identifier","src":"3581:9:25"}],"id":3868,"name":"ModifierInvocation","src":"3581:9:25"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2967f1eb3e333ead270a5eb332284149554452f916a981f27e70894d40a893f","typeString":"literal_string \"ownership is not transferable\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":3870,"name":"Identifier","src":"3656:7:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3769,"type":"bool","value":"_isTransferable"},"id":3871,"name":"Identifier","src":"3664:15:25"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e657273686970206973206e6f74207472616e7366657261626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ownership is not transferable\"","value":"ownership is not transferable"},"id":3872,"name":"Literal","src":"3681:31:25"}],"id":3873,"name":"FunctionCall","src":"3656:57:25"}],"id":3874,"name":"ExpressionStatement","src":"3656:57:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3875,"name":"Identifier","src":"3767:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3876,"name":"ElementaryTypeNameExpression","src":"3776:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3877,"name":"Literal","src":"3784:1:25"}],"id":3878,"name":"FunctionCall","src":"3776:10:25"}],"id":3879,"name":"Assignment","src":"3767:19:25"}],"id":3880,"name":"ExpressionStatement","src":"3767:19:25"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3761,"type":"function (address,address)","value":"TransferredOwnership"},"id":3881,"name":"Identifier","src":"3802:20:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3882,"name":"Identifier","src":"3823:6:25"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":3883,"name":"ElementaryTypeNameExpression","src":"3831:7:25"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":3884,"name":"Literal","src":"3839:1:25"}],"id":3885,"name":"FunctionCall","src":"3831:10:25"}],"id":3886,"name":"FunctionCall","src":"3802:40:25"}],"id":3887,"name":"EmitStatement","src":"3797:45:25"}],"id":3888,"name":"Block","src":"3591:258:25"}],"id":3889,"name":"FunctionDefinition","src":"3543:306:25"},{"attributes":{"documentation":"@notice Find out owner address\n @return address of the owner.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"owner","scope":3910,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3890,"name":"ParameterList","src":"3946:2:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3897,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":3891,"name":"ElementaryTypeName","src":"3970:15:25"}],"id":3892,"name":"VariableDeclaration","src":"3970:15:25"}],"id":3893,"name":"ParameterList","src":"3969:17:25"},{"children":[{"attributes":{"functionReturnParameters":3893},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3894,"name":"Identifier","src":"4004:6:25"}],"id":3895,"name":"Return","src":"3997:13:25"}],"id":3896,"name":"Block","src":"3987:30:25"}],"id":3897,"name":"FunctionDefinition","src":"3932:85:25"},{"attributes":{"documentation":"@notice Check if owner address\n @return true if sender is the owner of the contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isOwner","scope":3910,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_address","scope":3909,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3898,"name":"ElementaryTypeName","src":"4141:7:25"}],"id":3899,"name":"VariableDeclaration","src":"4141:16:25"}],"id":3900,"name":"ParameterList","src":"4140:18:25"},{"children":[{"attributes":{"constant":false,"name":"","scope":3909,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3901,"name":"ElementaryTypeName","src":"4182:4:25"}],"id":3902,"name":"VariableDeclaration","src":"4182:4:25"}],"id":3903,"name":"ParameterList","src":"4181:6:25"},{"children":[{"attributes":{"functionReturnParameters":3903},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3899,"type":"address","value":"_address"},"id":3904,"name":"Identifier","src":"4205:8:25"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3767,"type":"address payable","value":"_owner"},"id":3905,"name":"Identifier","src":"4217:6:25"}],"id":3906,"name":"BinaryOperation","src":"4205:18:25"}],"id":3907,"name":"Return","src":"4198:25:25"}],"id":3908,"name":"Block","src":"4188:42:25"}],"id":3909,"name":"FunctionDefinition","src":"4123:107:25"}],"id":3910,"name":"ContractDefinition","src":"1149:3083:25"}],"id":3911,"name":"SourceUnit","src":"767:3466:25"}},"internals/tokenWhitelistable.sol":{"AST":{"attributes":{"absolutePath":"internals/tokenWhitelistable.sol","exportedSymbols":{"TokenWhitelistable":[4127]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":3912,"name":"PragmaDirective","src":"778:24:26"},{"attributes":{"SourceUnit":6011,"absolutePath":"tokenWhitelist.sol","file":"../tokenWhitelist.sol","scope":4128,"symbolAliases":[null],"unitAlias":""},"id":3913,"name":"ImportDirective","src":"804:31:26"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./ensResolvable.sol","scope":4128,"symbolAliases":[null],"unitAlias":""},"id":3914,"name":"ImportDirective","src":"836:29:26"},{"attributes":{"contractDependencies":[3206],"contractKind":"contract","documentation":"@title TokenWhitelistable implements access to the TokenWhitelist located behind ENS.","fullyImplemented":false,"linearizedBaseContracts":[4127,3206],"name":"TokenWhitelistable","scope":4128},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":3915,"name":"UserDefinedTypeName","src":"989:13:26"}],"id":3916,"name":"InheritanceSpecifier","src":"989:13:26"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode","scope":4127,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3917,"name":"ElementaryTypeName","src":"1092:7:26"}],"id":3918,"name":"VariableDeclaration","src":"1092:35:26"},{"attributes":{"documentation":"@notice Constructor initializes the TokenWhitelistable object.\n @param _tokenWhitelistNode_ is the ENS node of the TokenWhitelist.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":4127,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":3928,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3919,"name":"ElementaryTypeName","src":"1292:7:26"}],"id":3920,"name":"VariableDeclaration","src":"1292:28:26"}],"id":3921,"name":"ParameterList","src":"1291:30:26"},{"attributes":{"parameters":[null]},"children":[],"id":3922,"name":"ParameterList","src":"1331:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3923,"name":"Identifier","src":"1341:19:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3920,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":3924,"name":"Identifier","src":"1363:20:26"}],"id":3925,"name":"Assignment","src":"1341:42:26"}],"id":3926,"name":"ExpressionStatement","src":"1341:42:26"}],"id":3927,"name":"Block","src":"1331:59:26"}],"id":3928,"name":"FunctionDefinition","src":"1280:110:26"},{"attributes":{"documentation":"@notice This shows what TokenWhitelist is being used\n @return TokenWhitelist's node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenWhitelistNode","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3929,"name":"ParameterList","src":"1541:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3936,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":3930,"name":"ElementaryTypeName","src":"1567:7:26"}],"id":3931,"name":"VariableDeclaration","src":"1567:7:26"}],"id":3932,"name":"ParameterList","src":"1566:9:26"},{"children":[{"attributes":{"functionReturnParameters":3932},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3933,"name":"Identifier","src":"1593:19:26"}],"id":3934,"name":"Return","src":"1586:26:26"}],"id":3935,"name":"Block","src":"1576:43:26"}],"id":3936,"name":"FunctionDefinition","src":"1514:105:26"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getTokenInfo","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":3965,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3937,"name":"ElementaryTypeName","src":"2194:7:26"}],"id":3938,"name":"VariableDeclaration","src":"2194:10:26"}],"id":3939,"name":"ParameterList","src":"2193:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3940,"name":"ElementaryTypeName","src":"2229:6:26"}],"id":3941,"name":"VariableDeclaration","src":"2229:13:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3942,"name":"ElementaryTypeName","src":"2244:7:26"}],"id":3943,"name":"VariableDeclaration","src":"2244:7:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3944,"name":"ElementaryTypeName","src":"2253:7:26"}],"id":3945,"name":"VariableDeclaration","src":"2253:7:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3946,"name":"ElementaryTypeName","src":"2262:4:26"}],"id":3947,"name":"VariableDeclaration","src":"2262:4:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3948,"name":"ElementaryTypeName","src":"2268:4:26"}],"id":3949,"name":"VariableDeclaration","src":"2268:4:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3950,"name":"ElementaryTypeName","src":"2274:4:26"}],"id":3951,"name":"VariableDeclaration","src":"2274:4:26"},{"attributes":{"constant":false,"name":"","scope":3965,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3952,"name":"ElementaryTypeName","src":"2280:7:26"}],"id":3953,"name":"VariableDeclaration","src":"2280:7:26"}],"id":3954,"name":"ParameterList","src":"2228:60:26"},{"children":[{"attributes":{"functionReturnParameters":3954},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getTokenInfo","referencedDeclaration":5048,"type":"function (address) view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3955,"name":"Identifier","src":"2306:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3956,"name":"Identifier","src":"2322:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3957,"name":"Identifier","src":"2334:19:26"}],"id":3958,"name":"FunctionCall","src":"2322:32:26"}],"id":3959,"name":"FunctionCall","src":"2306:49:26"}],"id":3960,"name":"MemberAccess","src":"2306:62:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3938,"type":"address","value":"_a"},"id":3961,"name":"Identifier","src":"2369:2:26"}],"id":3962,"name":"FunctionCall","src":"2306:66:26"}],"id":3963,"name":"Return","src":"2299:73:26"}],"id":3964,"name":"Block","src":"2289:90:26"}],"id":3965,"name":"FunctionDefinition","src":"2171:208:26"},{"attributes":{"documentation":"@notice This returns all of the fields for our stablecoin token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getStablecoinInfo","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3966,"name":"ParameterList","src":"2914:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":3967,"name":"ElementaryTypeName","src":"2940:6:26"}],"id":3968,"name":"VariableDeclaration","src":"2940:13:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3969,"name":"ElementaryTypeName","src":"2955:7:26"}],"id":3970,"name":"VariableDeclaration","src":"2955:7:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3971,"name":"ElementaryTypeName","src":"2964:7:26"}],"id":3972,"name":"VariableDeclaration","src":"2964:7:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3973,"name":"ElementaryTypeName","src":"2973:4:26"}],"id":3974,"name":"VariableDeclaration","src":"2973:4:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3975,"name":"ElementaryTypeName","src":"2979:4:26"}],"id":3976,"name":"VariableDeclaration","src":"2979:4:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":3977,"name":"ElementaryTypeName","src":"2985:4:26"}],"id":3978,"name":"VariableDeclaration","src":"2985:4:26"},{"attributes":{"constant":false,"name":"","scope":3991,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":3979,"name":"ElementaryTypeName","src":"2991:7:26"}],"id":3980,"name":"VariableDeclaration","src":"2991:7:26"}],"id":3981,"name":"ParameterList","src":"2939:60:26"},{"children":[{"attributes":{"functionReturnParameters":3981},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getStablecoinInfo","referencedDeclaration":5065,"type":"function () view external returns (string memory,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3982,"name":"Identifier","src":"3017:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3983,"name":"Identifier","src":"3033:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3984,"name":"Identifier","src":"3045:19:26"}],"id":3985,"name":"FunctionCall","src":"3033:32:26"}],"id":3986,"name":"FunctionCall","src":"3017:49:26"}],"id":3987,"name":"MemberAccess","src":"3017:67:26"}],"id":3988,"name":"FunctionCall","src":"3017:69:26"}],"id":3989,"name":"Return","src":"3010:76:26"}],"id":3990,"name":"Block","src":"3000:93:26"}],"id":3991,"name":"FunctionDefinition","src":"2887:206:26"},{"attributes":{"documentation":"@notice This returns an array of our whitelisted addresses.\n @return address[] of our whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_tokenAddressArray","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":3992,"name":"ParameterList","src":"3247:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4006,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":3993,"name":"ElementaryTypeName","src":"3273:7:26"}],"id":3994,"name":"ArrayTypeName","src":"3273:9:26"}],"id":3995,"name":"VariableDeclaration","src":"3273:16:26"}],"id":3996,"name":"ParameterList","src":"3272:18:26"},{"children":[{"attributes":{"functionReturnParameters":3996},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"tokenAddressArray","referencedDeclaration":5071,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":3997,"name":"Identifier","src":"3308:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":3998,"name":"Identifier","src":"3324:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":3999,"name":"Identifier","src":"3336:19:26"}],"id":4000,"name":"FunctionCall","src":"3324:32:26"}],"id":4001,"name":"FunctionCall","src":"3308:49:26"}],"id":4002,"name":"MemberAccess","src":"3308:67:26"}],"id":4003,"name":"FunctionCall","src":"3308:69:26"}],"id":4004,"name":"Return","src":"3301:76:26"}],"id":4005,"name":"Block","src":"3291:93:26"}],"id":4006,"name":"FunctionDefinition","src":"3220:164:26"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_redeemableTokens","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4007,"name":"ParameterList","src":"3537:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4021,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4008,"name":"ElementaryTypeName","src":"3563:7:26"}],"id":4009,"name":"ArrayTypeName","src":"3563:9:26"}],"id":4010,"name":"VariableDeclaration","src":"3563:16:26"}],"id":4011,"name":"ParameterList","src":"3562:18:26"},{"children":[{"attributes":{"functionReturnParameters":4011},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"redeemableTokens","referencedDeclaration":5077,"type":"function () view external returns (address[] memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4012,"name":"Identifier","src":"3598:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4013,"name":"Identifier","src":"3614:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4014,"name":"Identifier","src":"3626:19:26"}],"id":4015,"name":"FunctionCall","src":"3614:32:26"}],"id":4016,"name":"FunctionCall","src":"3598:49:26"}],"id":4017,"name":"MemberAccess","src":"3598:66:26"}],"id":4018,"name":"FunctionCall","src":"3598:68:26"}],"id":4019,"name":"Return","src":"3591:75:26"}],"id":4020,"name":"Block","src":"3581:92:26"}],"id":4021,"name":"FunctionDefinition","src":"3511:162:26"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateTokenRate","scope":4127,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":4042,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4022,"name":"ElementaryTypeName","src":"3976:7:26"}],"id":4023,"name":"VariableDeclaration","src":"3976:14:26"},{"attributes":{"constant":false,"name":"_rate","scope":4042,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4024,"name":"ElementaryTypeName","src":"3992:7:26"}],"id":4025,"name":"VariableDeclaration","src":"3992:13:26"},{"attributes":{"constant":false,"name":"_updateDate","scope":4042,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4026,"name":"ElementaryTypeName","src":"4007:7:26"}],"id":4027,"name":"VariableDeclaration","src":"4007:19:26"}],"id":4028,"name":"ParameterList","src":"3975:52:26"},{"attributes":{"parameters":[null]},"children":[],"id":4029,"name":"ParameterList","src":"4037:0:26"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"updateTokenRate","referencedDeclaration":5109,"type":"function (address,uint256,uint256) external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4030,"name":"Identifier","src":"4047:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4031,"name":"Identifier","src":"4063:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4032,"name":"Identifier","src":"4075:19:26"}],"id":4033,"name":"FunctionCall","src":"4063:32:26"}],"id":4034,"name":"FunctionCall","src":"4047:49:26"}],"id":4035,"name":"MemberAccess","src":"4047:65:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4023,"type":"address","value":"_token"},"id":4036,"name":"Identifier","src":"4113:6:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4025,"type":"uint256","value":"_rate"},"id":4037,"name":"Identifier","src":"4121:5:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4027,"type":"uint256","value":"_updateDate"},"id":4038,"name":"Identifier","src":"4128:11:26"}],"id":4039,"name":"FunctionCall","src":"4047:93:26"}],"id":4040,"name":"ExpressionStatement","src":"4047:93:26"}],"id":4041,"name":"Block","src":"4037:110:26"}],"id":4042,"name":"FunctionDefinition","src":"3950:197:26"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_getERC20RecipientAndAmount","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":4064,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4043,"name":"ElementaryTypeName","src":"4342:7:26"}],"id":4044,"name":"VariableDeclaration","src":"4342:20:26"},{"attributes":{"constant":false,"name":"_data","scope":4064,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":4045,"name":"ElementaryTypeName","src":"4364:5:26"}],"id":4046,"name":"VariableDeclaration","src":"4364:18:26"}],"id":4047,"name":"ParameterList","src":"4341:42:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4064,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4048,"name":"ElementaryTypeName","src":"4407:7:26"}],"id":4049,"name":"VariableDeclaration","src":"4407:7:26"},{"attributes":{"constant":false,"name":"","scope":4064,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4050,"name":"ElementaryTypeName","src":"4416:7:26"}],"id":4051,"name":"VariableDeclaration","src":"4416:7:26"}],"id":4052,"name":"ParameterList","src":"4406:18:26"},{"children":[{"attributes":{"functionReturnParameters":4052},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"getERC20RecipientAndAmount","referencedDeclaration":5095,"type":"function (address,bytes memory) view external returns (address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4053,"name":"Identifier","src":"4442:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4054,"name":"Identifier","src":"4458:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4055,"name":"Identifier","src":"4470:19:26"}],"id":4056,"name":"FunctionCall","src":"4458:32:26"}],"id":4057,"name":"FunctionCall","src":"4442:49:26"}],"id":4058,"name":"MemberAccess","src":"4442:76:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4044,"type":"address","value":"_destination"},"id":4059,"name":"Identifier","src":"4519:12:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4046,"type":"bytes memory","value":"_data"},"id":4060,"name":"Identifier","src":"4533:5:26"}],"id":4061,"name":"FunctionCall","src":"4442:97:26"}],"id":4062,"name":"Return","src":"4435:104:26"}],"id":4063,"name":"Block","src":"4425:121:26"}],"id":4064,"name":"FunctionDefinition","src":"4305:241:26"},{"attributes":{"documentation":"@notice Checks whether a token is available.\n @return bool available or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenAvailable","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4080,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4065,"name":"ElementaryTypeName","src":"4671:7:26"}],"id":4066,"name":"VariableDeclaration","src":"4671:10:26"}],"id":4067,"name":"ParameterList","src":"4670:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4080,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4068,"name":"ElementaryTypeName","src":"4706:4:26"}],"id":4069,"name":"VariableDeclaration","src":"4706:4:26"}],"id":4070,"name":"ParameterList","src":"4705:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,4072,null,null,null]},"children":[{"attributes":{"constant":false,"name":"available","scope":4079,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4071,"name":"ElementaryTypeName","src":"4729:4:26"}],"id":4072,"name":"VariableDeclaration","src":"4729:14:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4073,"name":"Identifier","src":"4753:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4066,"type":"address","value":"_a"},"id":4074,"name":"Identifier","src":"4767:2:26"}],"id":4075,"name":"FunctionCall","src":"4753:17:26"}],"id":4076,"name":"VariableDeclarationStatement","src":"4722:48:26"},{"attributes":{"functionReturnParameters":4070},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4072,"type":"bool","value":"available"},"id":4077,"name":"Identifier","src":"4787:9:26"}],"id":4078,"name":"Return","src":"4780:16:26"}],"id":4079,"name":"Block","src":"4712:91:26"}],"id":4080,"name":"FunctionDefinition","src":"4644:159:26"},{"attributes":{"documentation":"@notice Checks whether a token is redeemable.\n @return bool redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenRedeemable","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4096,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4081,"name":"ElementaryTypeName","src":"4931:7:26"}],"id":4082,"name":"VariableDeclaration","src":"4931:10:26"}],"id":4083,"name":"ParameterList","src":"4930:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4096,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4084,"name":"ElementaryTypeName","src":"4966:4:26"}],"id":4085,"name":"VariableDeclaration","src":"4966:4:26"}],"id":4086,"name":"ParameterList","src":"4965:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,null,4088,null]},"children":[{"attributes":{"constant":false,"name":"redeemable","scope":4095,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4087,"name":"ElementaryTypeName","src":"4993:4:26"}],"id":4088,"name":"VariableDeclaration","src":"4993:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4089,"name":"Identifier","src":"5014:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4082,"type":"address","value":"_a"},"id":4090,"name":"Identifier","src":"5028:2:26"}],"id":4091,"name":"FunctionCall","src":"5014:17:26"}],"id":4092,"name":"VariableDeclarationStatement","src":"4982:49:26"},{"attributes":{"functionReturnParameters":4086},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4088,"type":"bool","value":"redeemable"},"id":4093,"name":"Identifier","src":"5048:10:26"}],"id":4094,"name":"Return","src":"5041:17:26"}],"id":4095,"name":"Block","src":"4972:93:26"}],"id":4096,"name":"FunctionDefinition","src":"4903:162:26"},{"attributes":{"documentation":"@notice Checks whether a token is loadable.\n @return bool loadable or not.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_isTokenLoadable","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":4112,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4097,"name":"ElementaryTypeName","src":"5187:7:26"}],"id":4098,"name":"VariableDeclaration","src":"5187:10:26"}],"id":4099,"name":"ParameterList","src":"5186:12:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4112,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4100,"name":"ElementaryTypeName","src":"5222:4:26"}],"id":4101,"name":"VariableDeclaration","src":"5222:4:26"}],"id":4102,"name":"ParameterList","src":"5221:6:26"},{"children":[{"attributes":{"assignments":[null,null,null,null,4104,null,null]},"children":[{"attributes":{"constant":false,"name":"loadable","scope":4111,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4103,"name":"ElementaryTypeName","src":"5247:4:26"}],"id":4104,"name":"VariableDeclaration","src":"5247:13:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":4105,"name":"Identifier","src":"5268:13:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4098,"type":"address","value":"_a"},"id":4106,"name":"Identifier","src":"5282:2:26"}],"id":4107,"name":"FunctionCall","src":"5268:17:26"}],"id":4108,"name":"VariableDeclarationStatement","src":"5238:47:26"},{"attributes":{"functionReturnParameters":4102},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4104,"type":"bool","value":"loadable"},"id":4109,"name":"Identifier","src":"5302:8:26"}],"id":4110,"name":"Return","src":"5295:15:26"}],"id":4111,"name":"Block","src":"5228:89:26"}],"id":4112,"name":"FunctionDefinition","src":"5161:156:26"},{"attributes":{"documentation":"@notice This gets the address of the stablecoin.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_stablecoin","scope":4127,"stateMutability":"view","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4113,"name":"ParameterList","src":"5456:2:26"},{"children":[{"attributes":{"constant":false,"name":"","scope":4126,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4114,"name":"ElementaryTypeName","src":"5482:7:26"}],"id":4115,"name":"VariableDeclaration","src":"5482:7:26"}],"id":4116,"name":"ParameterList","src":"5481:9:26"},{"children":[{"attributes":{"functionReturnParameters":4116},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"stablecoin","referencedDeclaration":5100,"type":"function () view external returns (address)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ITokenWhitelist","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5110,"type":"type(contract ITokenWhitelist)","value":"ITokenWhitelist"},"id":4117,"name":"Identifier","src":"5508:15:26"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":4118,"name":"Identifier","src":"5524:11:26"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3918,"type":"bytes32","value":"_tokenWhitelistNode"},"id":4119,"name":"Identifier","src":"5536:19:26"}],"id":4120,"name":"FunctionCall","src":"5524:32:26"}],"id":4121,"name":"FunctionCall","src":"5508:49:26"}],"id":4122,"name":"MemberAccess","src":"5508:60:26"}],"id":4123,"name":"FunctionCall","src":"5508:62:26"}],"id":4124,"name":"Return","src":"5501:69:26"}],"id":4125,"name":"Block","src":"5491:86:26"}],"id":4126,"name":"FunctionDefinition","src":"5436:141:26"}],"id":4127,"name":"ContractDefinition","src":"958:4621:26"}],"id":4128,"name":"SourceUnit","src":"778:4802:26"}},"internals/transferrable.sol":{"AST":{"attributes":{"absolutePath":"internals/transferrable.sol","exportedSymbols":{"Transferrable":[4167]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4129,"name":"PragmaDirective","src":"773:24:27"},{"attributes":{"SourceUnit":3370,"absolutePath":"externals/ERC20.sol","file":"../externals/ERC20.sol","scope":4168,"symbolAliases":[null],"unitAlias":""},"id":4130,"name":"ImportDirective","src":"799:32:27"},{"attributes":{"SourceUnit":3589,"absolutePath":"externals/SafeERC20.sol","file":"../externals/SafeERC20.sol","scope":4168,"symbolAliases":[null],"unitAlias":""},"id":4131,"name":"ImportDirective","src":"832:36:27"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"contract","documentation":"@title SafeTransfer, allowing contract to withdraw tokens accidentally sent to itself","fullyImplemented":true,"linearizedBaseContracts":[4167],"name":"Transferrable","scope":4168},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3588,"type":"library SafeERC20"},"id":4132,"name":"UserDefinedTypeName","src":"996:9:27"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":4133,"name":"UserDefinedTypeName","src":"1010:5:27"}],"id":4134,"name":"UsingForDirective","src":"990:26:27"},{"attributes":{"documentation":"@dev This function is used to move tokens sent accidentally to this contract method.\n @dev The owner can chose the new destination address\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_safeTransfer","scope":4167,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4166,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4135,"name":"ElementaryTypeName","src":"1389:15:27"}],"id":4136,"name":"VariableDeclaration","src":"1389:19:27"},{"attributes":{"constant":false,"name":"_asset","scope":4166,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4137,"name":"ElementaryTypeName","src":"1410:7:27"}],"id":4138,"name":"VariableDeclaration","src":"1410:14:27"},{"attributes":{"constant":false,"name":"_amount","scope":4166,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4139,"name":"ElementaryTypeName","src":"1426:7:27"}],"id":4140,"name":"VariableDeclaration","src":"1426:15:27"}],"id":4141,"name":"ParameterList","src":"1388:54:27"},{"attributes":{"parameters":[null]},"children":[],"id":4142,"name":"ParameterList","src":"1452:0:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4138,"type":"address","value":"_asset"},"id":4143,"name":"Identifier","src":"1510:6:27"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4144,"name":"ElementaryTypeNameExpression","src":"1520:7:27"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4145,"name":"Literal","src":"1528:1:27"}],"id":4146,"name":"FunctionCall","src":"1520:10:27"}],"id":4147,"name":"BinaryOperation","src":"1510:20:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4136,"type":"address payable","value":"_to"},"id":4148,"name":"Identifier","src":"1546:3:27"}],"id":4150,"name":"MemberAccess","src":"1546:12:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4140,"type":"uint256","value":"_amount"},"id":4151,"name":"Identifier","src":"1559:7:27"}],"id":4152,"name":"FunctionCall","src":"1546:21:27"}],"id":4153,"name":"ExpressionStatement","src":"1546:21:27"}],"id":4154,"name":"Block","src":"1532:46:27"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransfer","referencedDeclaration":3402,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":4155,"name":"Identifier","src":"1598:5:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4138,"type":"address","value":"_asset"},"id":4156,"name":"Identifier","src":"1604:6:27"}],"id":4157,"name":"FunctionCall","src":"1598:13:27"}],"id":4158,"name":"MemberAccess","src":"1598:26:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4136,"type":"address payable","value":"_to"},"id":4159,"name":"Identifier","src":"1625:3:27"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4140,"type":"uint256","value":"_amount"},"id":4160,"name":"Identifier","src":"1630:7:27"}],"id":4161,"name":"FunctionCall","src":"1598:40:27"}],"id":4162,"name":"ExpressionStatement","src":"1598:40:27"}],"id":4163,"name":"Block","src":"1584:65:27"}],"id":4164,"name":"IfStatement","src":"1506:143:27"}],"id":4165,"name":"Block","src":"1452:203:27"}],"id":4166,"name":"FunctionDefinition","src":"1366:289:27"}],"id":4167,"name":"ContractDefinition","src":"961:696:27"}],"id":4168,"name":"SourceUnit","src":"773:885:27"}},"licence.sol":{"AST":{"attributes":{"absolutePath":"licence.sol","exportedSymbols":{"ILicence":[4187],"Licence":[4711]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":4169,"name":"PragmaDirective","src":"767:24:28"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4170,"name":"ImportDirective","src":"793:34:28"},{"attributes":{"SourceUnit":3589,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4171,"name":"ImportDirective","src":"828:35:28"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4172,"name":"ImportDirective","src":"864:38:28"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4173,"name":"ImportDirective","src":"903:39:28"},{"attributes":{"SourceUnit":4168,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":4712,"symbolAliases":[null],"unitAlias":""},"id":4174,"name":"ImportDirective","src":"943:39:28"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title ILicence interface describes methods for loading a TokenCard and updating licence amount.","fullyImplemented":false,"linearizedBaseContracts":[4187],"name":"ILicence","scope":4712},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":4187,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4181,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4175,"name":"ElementaryTypeName","src":"1125:7:28"}],"id":4176,"name":"VariableDeclaration","src":"1125:7:28"},{"attributes":{"constant":false,"name":"","scope":4181,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4177,"name":"ElementaryTypeName","src":"1134:7:28"}],"id":4178,"name":"VariableDeclaration","src":"1134:7:28"}],"id":4179,"name":"ParameterList","src":"1124:18:28"},{"attributes":{"parameters":[null]},"children":[],"id":4180,"name":"ParameterList","src":"1159:0:28"}],"id":4181,"name":"FunctionDefinition","src":"1111:49:28"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateLicenceAmount","scope":4187,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":4186,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4182,"name":"ElementaryTypeName","src":"1195:7:28"}],"id":4183,"name":"VariableDeclaration","src":"1195:7:28"}],"id":4184,"name":"ParameterList","src":"1194:9:28"},{"attributes":{"parameters":[null]},"children":[],"id":4185,"name":"ParameterList","src":"1212:0:28"}],"id":4186,"name":"FunctionDefinition","src":"1166:47:28"}],"id":4187,"name":"ContractDefinition","src":"1086:129:28"},{"attributes":{"contractDependencies":[325,3206,4167],"contractKind":"contract","documentation":"@title Licence loads the TokenCard and transfers the licence amout to the TKN Holder Contract.\n @notice the rest of the amount gets sent to the CryptoFloat","fullyImplemented":true,"linearizedBaseContracts":[4711,325,3206,4167],"name":"Licence","scope":4712},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4167,"type":"contract Transferrable"},"id":4188,"name":"UserDefinedTypeName","src":"1401:13:28"}],"id":4189,"name":"InheritanceSpecifier","src":"1401:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":4190,"name":"UserDefinedTypeName","src":"1416:13:28"}],"id":4191,"name":"InheritanceSpecifier","src":"1416:13:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":4192,"name":"UserDefinedTypeName","src":"1431:12:28"}],"id":4193,"name":"InheritanceSpecifier","src":"1431:12:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":4194,"name":"UserDefinedTypeName","src":"1456:8:28"},{"attributes":{"name":"uint256","type":"uint256"},"id":4195,"name":"ElementaryTypeName","src":"1469:7:28"}],"id":4196,"name":"UsingForDirective","src":"1450:27:28"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3588,"type":"library SafeERC20"},"id":4197,"name":"UserDefinedTypeName","src":"1488:9:28"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":4198,"name":"UserDefinedTypeName","src":"1502:5:28"}],"id":4199,"name":"UsingForDirective","src":"1482:26:28"},{"attributes":{"anonymous":false,"documentation":"**************","name":"UpdatedLicenceDAO"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newDAO","scope":4203,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4200,"name":"ElementaryTypeName","src":"1614:7:28"}],"id":4201,"name":"VariableDeclaration","src":"1614:15:28"}],"id":4202,"name":"ParameterList","src":"1613:17:28"}],"id":4203,"name":"EventDefinition","src":"1590:41:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newFloat","scope":4207,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4204,"name":"ElementaryTypeName","src":"1661:7:28"}],"id":4205,"name":"VariableDeclaration","src":"1661:17:28"}],"id":4206,"name":"ParameterList","src":"1660:19:28"}],"id":4207,"name":"EventDefinition","src":"1636:44:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newHolder","scope":4211,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4208,"name":"ElementaryTypeName","src":"1710:7:28"}],"id":4209,"name":"VariableDeclaration","src":"1710:18:28"}],"id":4210,"name":"ParameterList","src":"1709:20:28"}],"id":4211,"name":"EventDefinition","src":"1685:45:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTKNContractAddress"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newTKN","scope":4215,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4212,"name":"ElementaryTypeName","src":"1767:7:28"}],"id":4213,"name":"VariableDeclaration","src":"1767:15:28"}],"id":4214,"name":"ParameterList","src":"1766:17:28"}],"id":4215,"name":"EventDefinition","src":"1735:49:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedLicenceAmount"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_newAmount","scope":4219,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4216,"name":"ElementaryTypeName","src":"1816:7:28"}],"id":4217,"name":"VariableDeclaration","src":"1816:18:28"}],"id":4218,"name":"ParameterList","src":"1815:20:28"}],"id":4219,"name":"EventDefinition","src":"1789:47:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToTokenHolder"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":4229,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4220,"name":"ElementaryTypeName","src":"1873:7:28"}],"id":4221,"name":"VariableDeclaration","src":"1873:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4229,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4222,"name":"ElementaryTypeName","src":"1888:7:28"}],"id":4223,"name":"VariableDeclaration","src":"1888:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4229,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4224,"name":"ElementaryTypeName","src":"1901:7:28"}],"id":4225,"name":"VariableDeclaration","src":"1901:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4226,"name":"ElementaryTypeName","src":"1917:7:28"}],"id":4227,"name":"VariableDeclaration","src":"1917:15:28"}],"id":4228,"name":"ParameterList","src":"1872:61:28"}],"id":4229,"name":"EventDefinition","src":"1842:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"TransferredToCryptoFloat"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":4239,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4230,"name":"ElementaryTypeName","src":"1970:7:28"}],"id":4231,"name":"VariableDeclaration","src":"1970:13:28"},{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4239,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4232,"name":"ElementaryTypeName","src":"1985:7:28"}],"id":4233,"name":"VariableDeclaration","src":"1985:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4239,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4234,"name":"ElementaryTypeName","src":"1998:7:28"}],"id":4235,"name":"VariableDeclaration","src":"1998:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4239,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4236,"name":"ElementaryTypeName","src":"2014:7:28"}],"id":4237,"name":"VariableDeclaration","src":"2014:15:28"}],"id":4238,"name":"ParameterList","src":"1969:61:28"}],"id":4239,"name":"EventDefinition","src":"1939:92:28"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":4247,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4240,"name":"ElementaryTypeName","src":"2051:7:28"}],"id":4241,"name":"VariableDeclaration","src":"2051:11:28"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":4247,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4242,"name":"ElementaryTypeName","src":"2064:7:28"}],"id":4243,"name":"VariableDeclaration","src":"2064:14:28"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":4247,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4244,"name":"ElementaryTypeName","src":"2080:7:28"}],"id":4245,"name":"VariableDeclaration","src":"2080:15:28"}],"id":4246,"name":"ParameterList","src":"2050:46:28"}],"id":4247,"name":"EventDefinition","src":"2037:60:28"},{"attributes":{"constant":true,"name":"MAX_AMOUNT_SCALE","scope":4711,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4248,"name":"ElementaryTypeName","src":"2209:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1000","value":"1000"},"id":4249,"name":"Literal","src":"2252:4:28"}],"id":4250,"name":"VariableDeclaration","src":"2209:47:28"},{"attributes":{"constant":true,"name":"MIN_AMOUNT_SCALE","scope":4711,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4251,"name":"ElementaryTypeName","src":"2262:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":4252,"name":"Literal","src":"2305:1:28"}],"id":4253,"name":"VariableDeclaration","src":"2262:44:28"},{"attributes":{"constant":false,"name":"_tknContractAddress","scope":4711,"stateVariable":true,"storageLocation":"default","type":"address","visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4254,"name":"ElementaryTypeName","src":"2313:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"307861414166393144396239306446383030446634463535633230356664363938396339373745373361","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"address payable","value":"0xaAAf91D9b90dF800Df4F55c205fd6989c977E73a"},"id":4255,"name":"Literal","src":"2351:42:28"}],"id":4256,"name":"VariableDeclaration","src":"2313:80:28"},{"attributes":{"constant":false,"name":"_cryptoFloat","scope":4711,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4257,"name":"ElementaryTypeName","src":"2433:15:28"}],"id":4258,"name":"VariableDeclaration","src":"2433:36:28"},{"attributes":{"constant":false,"name":"_tokenHolder","scope":4711,"stateVariable":true,"storageLocation":"default","type":"address payable","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4259,"name":"ElementaryTypeName","src":"2475:15:28"}],"id":4260,"name":"VariableDeclaration","src":"2475:36:28"},{"attributes":{"constant":false,"name":"_licenceDAO","scope":4711,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4261,"name":"ElementaryTypeName","src":"2517:7:28"}],"id":4262,"name":"VariableDeclaration","src":"2517:27:28"},{"attributes":{"constant":false,"name":"_lockedCryptoFloat","scope":4711,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4263,"name":"ElementaryTypeName","src":"2551:4:28"}],"id":4264,"name":"VariableDeclaration","src":"2551:31:28"},{"attributes":{"constant":false,"name":"_lockedTokenHolder","scope":4711,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4265,"name":"ElementaryTypeName","src":"2588:4:28"}],"id":4266,"name":"VariableDeclaration","src":"2588:31:28"},{"attributes":{"constant":false,"name":"_lockedLicenceDAO","scope":4711,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4267,"name":"ElementaryTypeName","src":"2625:4:28"}],"id":4268,"name":"VariableDeclaration","src":"2625:30:28"},{"attributes":{"constant":false,"name":"_lockedTKNContractAddress","scope":4711,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4269,"name":"ElementaryTypeName","src":"2661:4:28"}],"id":4270,"name":"VariableDeclaration","src":"2661:38:28"},{"attributes":{"constant":false,"name":"_licenceAmountScaled","scope":4711,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4271,"name":"ElementaryTypeName","src":"2853:7:28"}],"id":4272,"name":"VariableDeclaration","src":"2853:36:28"},{"attributes":{"documentation":"@notice Reverts if called by any address other than the DAO contract.","name":"onlyDAO","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4273,"name":"ParameterList","src":"2990:2:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_f29246ab6c872b69b916ab49a51167f5d8ba348a447673211aabf776049f6b78","typeString":"literal_string \"the sender isn't the DAO\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4274,"name":"Identifier","src":"3003:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4275,"name":"Identifier","src":"3011:3:28"}],"id":4276,"name":"MemberAccess","src":"3011:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"address","value":"_licenceDAO"},"id":4277,"name":"Identifier","src":"3025:11:28"}],"id":4278,"name":"BinaryOperation","src":"3011:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"7468652073656e6465722069736e2774207468652044414f","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"the sender isn't the DAO\"","value":"the sender isn't the DAO"},"id":4279,"name":"Literal","src":"3038:26:28"}],"id":4280,"name":"FunctionCall","src":"3003:62:28"}],"id":4281,"name":"ExpressionStatement","src":"3003:62:28"},{"id":4282,"name":"PlaceholderStatement","src":"3075:1:28"}],"id":4283,"name":"Block","src":"2993:90:28"}],"id":4284,"name":"ModifierDefinition","src":"2974:109:28"},{"attributes":{"documentation":"@notice Constructor initializes the card licence contract.\n @param _licence_ is the initial card licence amount. this number is scaled 10 = 1%, 9 = 0.9%\n @param _float_ is the address of the multi-sig cryptocurrency float contract.\n @param _holder_ is the address of the token holder contract\n @param _tknAddress_ is the address of the TKN ERC20 contract\n @param _ens_ is the address of the ENS Registry\n @param _controllerNode_ is the ENS node corresponding to the controller","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_licence_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4285,"name":"ElementaryTypeName","src":"3628:7:28"}],"id":4286,"name":"VariableDeclaration","src":"3628:17:28"},{"attributes":{"constant":false,"name":"_float_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4287,"name":"ElementaryTypeName","src":"3647:15:28"}],"id":4288,"name":"VariableDeclaration","src":"3647:23:28"},{"attributes":{"constant":false,"name":"_holder_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4289,"name":"ElementaryTypeName","src":"3672:15:28"}],"id":4290,"name":"VariableDeclaration","src":"3672:24:28"},{"attributes":{"constant":false,"name":"_tknAddress_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4291,"name":"ElementaryTypeName","src":"3698:7:28"}],"id":4292,"name":"VariableDeclaration","src":"3698:20:28"},{"attributes":{"constant":false,"name":"_ens_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4293,"name":"ElementaryTypeName","src":"3720:7:28"}],"id":4294,"name":"VariableDeclaration","src":"3720:13:28"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":4340,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":4295,"name":"ElementaryTypeName","src":"3735:7:28"}],"id":4296,"name":"VariableDeclaration","src":"3735:24:28"}],"id":4297,"name":"ParameterList","src":"3627:133:28"},{"attributes":{"parameters":[null]},"children":[],"id":4304,"name":"ParameterList","src":"3848:0:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":4298,"name":"Identifier","src":"3784:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4294,"type":"address","value":"_ens_"},"id":4299,"name":"Identifier","src":"3798:5:28"}],"id":4300,"name":"ModifierInvocation","src":"3784:20:28"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":4301,"name":"Identifier","src":"3813:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4296,"type":"bytes32","value":"_controllerNode_"},"id":4302,"name":"Identifier","src":"3826:16:28"}],"id":4303,"name":"ModifierInvocation","src":"3813:30:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4305,"name":"Identifier","src":"3858:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4253,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":4306,"name":"Identifier","src":"3866:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4286,"type":"uint256","value":"_licence_"},"id":4307,"name":"Identifier","src":"3886:9:28"}],"id":4308,"name":"BinaryOperation","src":"3866:29:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4286,"type":"uint256","value":"_licence_"},"id":4309,"name":"Identifier","src":"3899:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4250,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4310,"name":"Identifier","src":"3912:16:28"}],"id":4311,"name":"BinaryOperation","src":"3899:29:28"}],"id":4312,"name":"BinaryOperation","src":"3866:62:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":4313,"name":"Literal","src":"3930:29:28"}],"id":4314,"name":"FunctionCall","src":"3858:102:28"}],"id":4315,"name":"ExpressionStatement","src":"3858:102:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4272,"type":"uint256","value":"_licenceAmountScaled"},"id":4316,"name":"Identifier","src":"3970:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4286,"type":"uint256","value":"_licence_"},"id":4317,"name":"Identifier","src":"3993:9:28"}],"id":4318,"name":"Assignment","src":"3970:32:28"}],"id":4319,"name":"ExpressionStatement","src":"3970:32:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4320,"name":"Identifier","src":"4012:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4288,"type":"address payable","value":"_float_"},"id":4321,"name":"Identifier","src":"4027:7:28"}],"id":4322,"name":"Assignment","src":"4012:22:28"}],"id":4323,"name":"ExpressionStatement","src":"4012:22:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4324,"name":"Identifier","src":"4044:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4290,"type":"address payable","value":"_holder_"},"id":4325,"name":"Identifier","src":"4059:8:28"}],"id":4326,"name":"Assignment","src":"4044:23:28"}],"id":4327,"name":"ExpressionStatement","src":"4044:23:28"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4292,"type":"address","value":"_tknAddress_"},"id":4328,"name":"Identifier","src":"4081:12:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4329,"name":"ElementaryTypeNameExpression","src":"4097:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4330,"name":"Literal","src":"4105:1:28"}],"id":4331,"name":"FunctionCall","src":"4097:10:28"}],"id":4332,"name":"BinaryOperation","src":"4081:26:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4256,"type":"address","value":"_tknContractAddress"},"id":4333,"name":"Identifier","src":"4123:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4292,"type":"address","value":"_tknAddress_"},"id":4334,"name":"Identifier","src":"4145:12:28"}],"id":4335,"name":"Assignment","src":"4123:34:28"}],"id":4336,"name":"ExpressionStatement","src":"4123:34:28"}],"id":4337,"name":"Block","src":"4109:59:28"}],"id":4338,"name":"IfStatement","src":"4077:91:28"}],"id":4339,"name":"Block","src":"3848:326:28"}],"id":4340,"name":"FunctionDefinition","src":"3616:558:28"},{"attributes":{"documentation":"@notice Ether can be deposited from any source, so this contract should be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":4711,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4341,"name":"ParameterList","src":"4290:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4342,"name":"ParameterList","src":"4310:0:28"},{"attributes":{"statements":[null]},"children":[],"id":4343,"name":"Block","src":"4310:2:28"}],"id":4344,"name":"FunctionDefinition","src":"4282:30:28"},{"attributes":{"documentation":"@notice this allows for people to see the scaled licence amount\n @return the scaled licence amount, used to calculate the split when loading.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceAmountScaled","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4345,"name":"ParameterList","src":"4503:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4352,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4346,"name":"ElementaryTypeName","src":"4529:7:28"}],"id":4347,"name":"VariableDeclaration","src":"4529:7:28"}],"id":4348,"name":"ParameterList","src":"4528:9:28"},{"children":[{"attributes":{"functionReturnParameters":4348},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4272,"type":"uint256","value":"_licenceAmountScaled"},"id":4349,"name":"Identifier","src":"4555:20:28"}],"id":4350,"name":"Return","src":"4548:27:28"}],"id":4351,"name":"Block","src":"4538:44:28"}],"id":4352,"name":"FunctionDefinition","src":"4475:107:28"},{"attributes":{"documentation":"@notice allows one to see the address of the CryptoFloat\n @return the address of the multi-sig cryptocurrency float contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cryptoFloat","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4353,"name":"ParameterList","src":"4749:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4360,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4354,"name":"ElementaryTypeName","src":"4775:7:28"}],"id":4355,"name":"VariableDeclaration","src":"4775:7:28"}],"id":4356,"name":"ParameterList","src":"4774:9:28"},{"children":[{"attributes":{"functionReturnParameters":4356},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4357,"name":"Identifier","src":"4801:12:28"}],"id":4358,"name":"Return","src":"4794:19:28"}],"id":4359,"name":"Block","src":"4784:36:28"}],"id":4360,"name":"FunctionDefinition","src":"4729:91:28"},{"attributes":{"documentation":"@notice allows one to see the address TKN holder contract\n @return the address of the token holder contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenHolder","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4361,"name":"ParameterList","src":"4970:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4368,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4362,"name":"ElementaryTypeName","src":"4996:7:28"}],"id":4363,"name":"VariableDeclaration","src":"4996:7:28"}],"id":4364,"name":"ParameterList","src":"4995:9:28"},{"children":[{"attributes":{"functionReturnParameters":4364},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4365,"name":"Identifier","src":"5022:12:28"}],"id":4366,"name":"Return","src":"5015:19:28"}],"id":4367,"name":"Block","src":"5005:36:28"}],"id":4368,"name":"FunctionDefinition","src":"4950:91:28"},{"attributes":{"documentation":"@notice allows one to see the address of the DAO\n @return the address of the DAO contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAO","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4369,"name":"ParameterList","src":"5172:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4376,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4370,"name":"ElementaryTypeName","src":"5198:7:28"}],"id":4371,"name":"VariableDeclaration","src":"5198:7:28"}],"id":4372,"name":"ParameterList","src":"5197:9:28"},{"children":[{"attributes":{"functionReturnParameters":4372},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"address","value":"_licenceDAO"},"id":4373,"name":"Identifier","src":"5224:11:28"}],"id":4374,"name":"Return","src":"5217:18:28"}],"id":4375,"name":"Block","src":"5207:35:28"}],"id":4376,"name":"FunctionDefinition","src":"5153:89:28"},{"attributes":{"documentation":"@notice The address of the TKN token\n @return the address of the TKN contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddress","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4377,"name":"ParameterList","src":"5369:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4384,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4378,"name":"ElementaryTypeName","src":"5395:7:28"}],"id":4379,"name":"VariableDeclaration","src":"5395:7:28"}],"id":4380,"name":"ParameterList","src":"5394:9:28"},{"children":[{"attributes":{"functionReturnParameters":4380},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4256,"type":"address","value":"_tknContractAddress"},"id":4381,"name":"Identifier","src":"5421:19:28"}],"id":4382,"name":"Return","src":"5414:26:28"}],"id":4383,"name":"Block","src":"5404:43:28"}],"id":4384,"name":"FunctionDefinition","src":"5342:105:28"},{"attributes":{"documentation":"@notice This locks the cryptoFloat address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockFloat","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4385,"name":"ParameterList","src":"5571:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4388,"name":"ParameterList","src":"5593:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4386,"name":"Identifier","src":"5583:9:28"}],"id":4387,"name":"ModifierInvocation","src":"5583:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4264,"type":"bool","value":"_lockedCryptoFloat"},"id":4389,"name":"Identifier","src":"5603:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4390,"name":"Literal","src":"5624:4:28"}],"id":4391,"name":"Assignment","src":"5603:25:28"}],"id":4392,"name":"ExpressionStatement","src":"5603:25:28"}],"id":4393,"name":"Block","src":"5593:42:28"}],"id":4394,"name":"FunctionDefinition","src":"5553:82:28"},{"attributes":{"documentation":"@notice This locks the TokenHolder address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockHolder","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4395,"name":"ParameterList","src":"5760:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4398,"name":"ParameterList","src":"5782:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4396,"name":"Identifier","src":"5772:9:28"}],"id":4397,"name":"ModifierInvocation","src":"5772:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4266,"type":"bool","value":"_lockedTokenHolder"},"id":4399,"name":"Identifier","src":"5792:18:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4400,"name":"Literal","src":"5813:4:28"}],"id":4401,"name":"Assignment","src":"5792:25:28"}],"id":4402,"name":"ExpressionStatement","src":"5792:25:28"}],"id":4403,"name":"Block","src":"5782:42:28"}],"id":4404,"name":"FunctionDefinition","src":"5741:83:28"},{"attributes":{"documentation":"@notice This locks the DAO address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockLicenceDAO","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4405,"name":"ParameterList","src":"5945:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4408,"name":"ParameterList","src":"5967:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4406,"name":"Identifier","src":"5957:9:28"}],"id":4407,"name":"ModifierInvocation","src":"5957:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4268,"type":"bool","value":"_lockedLicenceDAO"},"id":4409,"name":"Identifier","src":"5977:17:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4410,"name":"Literal","src":"5997:4:28"}],"id":4411,"name":"Assignment","src":"5977:24:28"}],"id":4412,"name":"ExpressionStatement","src":"5977:24:28"}],"id":4413,"name":"Block","src":"5967:41:28"}],"id":4414,"name":"FunctionDefinition","src":"5922:86:28"},{"attributes":{"documentation":"@notice This locks the TKN address\n @dev so that it can no longer be updated","implemented":true,"isConstructor":false,"kind":"function","name":"lockTKNContractAddress","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4415,"name":"ParameterList","src":"6137:2:28"},{"attributes":{"parameters":[null]},"children":[],"id":4418,"name":"ParameterList","src":"6159:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4416,"name":"Identifier","src":"6149:9:28"}],"id":4417,"name":"ModifierInvocation","src":"6149:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4270,"type":"bool","value":"_lockedTKNContractAddress"},"id":4419,"name":"Identifier","src":"6169:25:28"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":4420,"name":"Literal","src":"6197:4:28"}],"id":4421,"name":"Assignment","src":"6169:32:28"}],"id":4422,"name":"ExpressionStatement","src":"6169:32:28"}],"id":4423,"name":"Block","src":"6159:49:28"}],"id":4424,"name":"FunctionDefinition","src":"6106:102:28"},{"attributes":{"documentation":"@notice Updates the address of the cyptoFloat.\n @param _newFloat This is the new address for the CryptoFloat","implemented":true,"isConstructor":false,"kind":"function","name":"updateFloat","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newFloat","scope":4447,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4425,"name":"ElementaryTypeName","src":"6359:15:28"}],"id":4426,"name":"VariableDeclaration","src":"6359:25:28"}],"id":4427,"name":"ParameterList","src":"6358:27:28"},{"attributes":{"parameters":[null]},"children":[],"id":4430,"name":"ParameterList","src":"6405:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4428,"name":"Identifier","src":"6395:9:28"}],"id":4429,"name":"ModifierInvocation","src":"6395:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_73cf4712af49e3d489d13d5688ecb36f2544327f43f1ad1d6113d4e5775b0a25","typeString":"literal_string \"float is locked\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4431,"name":"Identifier","src":"6415:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4686,"type":"function () view returns (bool)","value":"floatLocked"},"id":4432,"name":"Identifier","src":"6424:11:28"}],"id":4433,"name":"FunctionCall","src":"6424:13:28"}],"id":4434,"name":"UnaryOperation","src":"6423:14:28"},{"attributes":{"argumentTypes":null,"hexvalue":"666c6f6174206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"float is locked\"","value":"float is locked"},"id":4435,"name":"Literal","src":"6439:17:28"}],"id":4436,"name":"FunctionCall","src":"6415:42:28"}],"id":4437,"name":"ExpressionStatement","src":"6415:42:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4438,"name":"Identifier","src":"6467:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4426,"type":"address payable","value":"_newFloat"},"id":4439,"name":"Identifier","src":"6482:9:28"}],"id":4440,"name":"Assignment","src":"6467:24:28"}],"id":4441,"name":"ExpressionStatement","src":"6467:24:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4207,"type":"function (address)","value":"UpdatedCryptoFloat"},"id":4442,"name":"Identifier","src":"6506:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4426,"type":"address payable","value":"_newFloat"},"id":4443,"name":"Identifier","src":"6525:9:28"}],"id":4444,"name":"FunctionCall","src":"6506:29:28"}],"id":4445,"name":"EmitStatement","src":"6501:34:28"}],"id":4446,"name":"Block","src":"6405:137:28"}],"id":4447,"name":"FunctionDefinition","src":"6338:204:28"},{"attributes":{"documentation":"@notice Updates the address of the Holder contract.\n @param _newHolder This is the new address for the TokenHolder","implemented":true,"isConstructor":false,"kind":"function","name":"updateHolder","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newHolder","scope":4470,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4448,"name":"ElementaryTypeName","src":"6700:15:28"}],"id":4449,"name":"VariableDeclaration","src":"6700:26:28"}],"id":4450,"name":"ParameterList","src":"6699:28:28"},{"attributes":{"parameters":[null]},"children":[],"id":4453,"name":"ParameterList","src":"6747:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4451,"name":"Identifier","src":"6737:9:28"}],"id":4452,"name":"ModifierInvocation","src":"6737:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_1127f79f367bf1ae448858b4e10d08e32e63374d8363948e232ab7fa9624ebd4","typeString":"literal_string \"holder contract is locked\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4454,"name":"Identifier","src":"6757:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4694,"type":"function () view returns (bool)","value":"holderLocked"},"id":4455,"name":"Identifier","src":"6766:12:28"}],"id":4456,"name":"FunctionCall","src":"6766:14:28"}],"id":4457,"name":"UnaryOperation","src":"6765:15:28"},{"attributes":{"argumentTypes":null,"hexvalue":"686f6c64657220636f6e7472616374206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"holder contract is locked\"","value":"holder contract is locked"},"id":4458,"name":"Literal","src":"6782:27:28"}],"id":4459,"name":"FunctionCall","src":"6757:53:28"}],"id":4460,"name":"ExpressionStatement","src":"6757:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4461,"name":"Identifier","src":"6820:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4449,"type":"address payable","value":"_newHolder"},"id":4462,"name":"Identifier","src":"6835:10:28"}],"id":4463,"name":"Assignment","src":"6820:25:28"}],"id":4464,"name":"ExpressionStatement","src":"6820:25:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":4211,"type":"function (address)","value":"UpdatedTokenHolder"},"id":4465,"name":"Identifier","src":"6860:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4449,"type":"address payable","value":"_newHolder"},"id":4466,"name":"Identifier","src":"6879:10:28"}],"id":4467,"name":"FunctionCall","src":"6860:30:28"}],"id":4468,"name":"EmitStatement","src":"6855:35:28"}],"id":4469,"name":"Block","src":"6747:150:28"}],"id":4470,"name":"FunctionDefinition","src":"6678:219:28"},{"attributes":{"documentation":"@notice Updates the address of the DAO contract.\n @param _newDAO This is the new address for the Licence DAO","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceDAO","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newDAO","scope":4493,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4471,"name":"ElementaryTypeName","src":"7053:7:28"}],"id":4472,"name":"VariableDeclaration","src":"7053:15:28"}],"id":4473,"name":"ParameterList","src":"7052:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":4476,"name":"ParameterList","src":"7089:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4474,"name":"Identifier","src":"7079:9:28"}],"id":4475,"name":"ModifierInvocation","src":"7079:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6ff7dad81321f3905380d2bc114061fd5d09c8a5631b7e5a51291235d46ced1","typeString":"literal_string \"DAO is locked\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4477,"name":"Identifier","src":"7099:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4702,"type":"function () view returns (bool)","value":"licenceDAOLocked"},"id":4478,"name":"Identifier","src":"7108:16:28"}],"id":4479,"name":"FunctionCall","src":"7108:18:28"}],"id":4480,"name":"UnaryOperation","src":"7107:19:28"},{"attributes":{"argumentTypes":null,"hexvalue":"44414f206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"DAO is locked\"","value":"DAO is locked"},"id":4481,"name":"Literal","src":"7128:15:28"}],"id":4482,"name":"FunctionCall","src":"7099:45:28"}],"id":4483,"name":"ExpressionStatement","src":"7099:45:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4262,"type":"address","value":"_licenceDAO"},"id":4484,"name":"Identifier","src":"7154:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4472,"type":"address","value":"_newDAO"},"id":4485,"name":"Identifier","src":"7168:7:28"}],"id":4486,"name":"Assignment","src":"7154:21:28"}],"id":4487,"name":"ExpressionStatement","src":"7154:21:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4203,"type":"function (address)","value":"UpdatedLicenceDAO"},"id":4488,"name":"Identifier","src":"7190:17:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4472,"type":"address","value":"_newDAO"},"id":4489,"name":"Identifier","src":"7208:7:28"}],"id":4490,"name":"FunctionCall","src":"7190:26:28"}],"id":4491,"name":"EmitStatement","src":"7185:31:28"}],"id":4492,"name":"Block","src":"7089:134:28"}],"id":4493,"name":"FunctionDefinition","src":"7027:196:28"},{"attributes":{"documentation":"@notice Updates the address of the TKN contract.\n @param _newTKN This is the new address for the TKN contract","implemented":true,"isConstructor":false,"kind":"function","name":"updateTKNContractAddress","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newTKN","scope":4516,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4494,"name":"ElementaryTypeName","src":"7388:7:28"}],"id":4495,"name":"VariableDeclaration","src":"7388:15:28"}],"id":4496,"name":"ParameterList","src":"7387:17:28"},{"attributes":{"parameters":[null]},"children":[],"id":4499,"name":"ParameterList","src":"7424:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4497,"name":"Identifier","src":"7414:9:28"}],"id":4498,"name":"ModifierInvocation","src":"7414:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e6b32285b06a01bec331e6c8d816613b1307837b439f2b9d9ccc775b962c0c17","typeString":"literal_string \"TKN is locked\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4500,"name":"Identifier","src":"7434:7:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4710,"type":"function () view returns (bool)","value":"tknContractAddressLocked"},"id":4501,"name":"Identifier","src":"7443:24:28"}],"id":4502,"name":"FunctionCall","src":"7443:26:28"}],"id":4503,"name":"UnaryOperation","src":"7442:27:28"},{"attributes":{"argumentTypes":null,"hexvalue":"544b4e206973206c6f636b6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"TKN is locked\"","value":"TKN is locked"},"id":4504,"name":"Literal","src":"7471:15:28"}],"id":4505,"name":"FunctionCall","src":"7434:53:28"}],"id":4506,"name":"ExpressionStatement","src":"7434:53:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4256,"type":"address","value":"_tknContractAddress"},"id":4507,"name":"Identifier","src":"7497:19:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4495,"type":"address","value":"_newTKN"},"id":4508,"name":"Identifier","src":"7519:7:28"}],"id":4509,"name":"Assignment","src":"7497:29:28"}],"id":4510,"name":"ExpressionStatement","src":"7497:29:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4215,"type":"function (address)","value":"UpdatedTKNContractAddress"},"id":4511,"name":"Identifier","src":"7541:25:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4495,"type":"address","value":"_newTKN"},"id":4512,"name":"Identifier","src":"7567:7:28"}],"id":4513,"name":"FunctionCall","src":"7541:34:28"}],"id":4514,"name":"EmitStatement","src":"7536:39:28"}],"id":4515,"name":"Block","src":"7424:158:28"}],"id":4516,"name":"FunctionDefinition","src":"7354:228:28"},{"attributes":{"documentation":"@notice Updates the TKN licence amount\n @param _newAmount is a number between MIN_AMOUNT_SCALE (1) and MAX_AMOUNT_SCALE","implemented":true,"isConstructor":false,"kind":"function","name":"updateLicenceAmount","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_newAmount","scope":4543,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4517,"name":"ElementaryTypeName","src":"7752:7:28"}],"id":4518,"name":"VariableDeclaration","src":"7752:18:28"}],"id":4519,"name":"ParameterList","src":"7751:20:28"},{"attributes":{"parameters":[null]},"children":[],"id":4522,"name":"ParameterList","src":"7789:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4284,"type":"modifier ()","value":"onlyDAO"},"id":4520,"name":"Identifier","src":"7781:7:28"}],"id":4521,"name":"ModifierInvocation","src":"7781:7:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_37c5ded16197b0d4ae17a4dd139ab6673cc9958675158c0d22e708afaf45bd8a","typeString":"literal_string \"licence amount out of range\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4523,"name":"Identifier","src":"7799:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4253,"type":"uint256","value":"MIN_AMOUNT_SCALE"},"id":4524,"name":"Identifier","src":"7807:16:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4518,"type":"uint256","value":"_newAmount"},"id":4525,"name":"Identifier","src":"7827:10:28"}],"id":4526,"name":"BinaryOperation","src":"7807:30:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4518,"type":"uint256","value":"_newAmount"},"id":4527,"name":"Identifier","src":"7841:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4250,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4528,"name":"Identifier","src":"7855:16:28"}],"id":4529,"name":"BinaryOperation","src":"7841:30:28"}],"id":4530,"name":"BinaryOperation","src":"7807:64:28"},{"attributes":{"argumentTypes":null,"hexvalue":"6c6963656e636520616d6f756e74206f7574206f662072616e6765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"licence amount out of range\"","value":"licence amount out of range"},"id":4531,"name":"Literal","src":"7873:29:28"}],"id":4532,"name":"FunctionCall","src":"7799:104:28"}],"id":4533,"name":"ExpressionStatement","src":"7799:104:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4272,"type":"uint256","value":"_licenceAmountScaled"},"id":4534,"name":"Identifier","src":"7913:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4518,"type":"uint256","value":"_newAmount"},"id":4535,"name":"Identifier","src":"7936:10:28"}],"id":4536,"name":"Assignment","src":"7913:33:28"}],"id":4537,"name":"ExpressionStatement","src":"7913:33:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4219,"type":"function (uint256)","value":"UpdatedLicenceAmount"},"id":4538,"name":"Identifier","src":"7961:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4518,"type":"uint256","value":"_newAmount"},"id":4539,"name":"Identifier","src":"7982:10:28"}],"id":4540,"name":"FunctionCall","src":"7961:32:28"}],"id":4541,"name":"EmitStatement","src":"7956:37:28"}],"id":4542,"name":"Block","src":"7789:211:28"}],"id":4543,"name":"FunctionDefinition","src":"7723:277:28"},{"attributes":{"documentation":"@notice Load the holder and float contracts based on the licence amount and asset amount.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred including the licence amount.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"load","scope":4711,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":4654,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4544,"name":"ElementaryTypeName","src":"8286:7:28"}],"id":4545,"name":"VariableDeclaration","src":"8286:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":4654,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4546,"name":"ElementaryTypeName","src":"8302:7:28"}],"id":4547,"name":"VariableDeclaration","src":"8302:15:28"}],"id":4548,"name":"ParameterList","src":"8285:33:28"},{"attributes":{"parameters":[null]},"children":[],"id":4549,"name":"ParameterList","src":"8336:0:28"},{"children":[{"attributes":{"assignments":[4551]},"children":[{"attributes":{"constant":false,"name":"loadAmount","scope":4653,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4550,"name":"ElementaryTypeName","src":"8346:7:28"}],"id":4551,"name":"VariableDeclaration","src":"8346:18:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"uint256","value":"_amount"},"id":4552,"name":"Identifier","src":"8367:7:28"}],"id":4553,"name":"VariableDeclarationStatement","src":"8346:28:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4554,"name":"Identifier","src":"8433:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4256,"type":"address","value":"_tknContractAddress"},"id":4555,"name":"Identifier","src":"8443:19:28"}],"id":4556,"name":"BinaryOperation","src":"8433:29:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3427,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":4557,"name":"Identifier","src":"8478:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4558,"name":"Identifier","src":"8484:6:28"}],"id":4559,"name":"FunctionCall","src":"8478:13:28"}],"id":4560,"name":"MemberAccess","src":"8478:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4561,"name":"Identifier","src":"8509:3:28"}],"id":4562,"name":"MemberAccess","src":"8509:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4563,"name":"Identifier","src":"8521:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4564,"name":"Identifier","src":"8535:10:28"}],"id":4565,"name":"FunctionCall","src":"8478:68:28"}],"id":4566,"name":"ExpressionStatement","src":"8478:68:28"}],"id":4567,"name":"Block","src":"8464:93:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4568,"name":"Identifier","src":"8577:10:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3699,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3674,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"uint256","value":"_amount"},"id":4569,"name":"Identifier","src":"8590:7:28"}],"id":4570,"name":"MemberAccess","src":"8590:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4250,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4571,"name":"Identifier","src":"8602:16:28"}],"id":4572,"name":"FunctionCall","src":"8590:29:28"}],"id":4573,"name":"MemberAccess","src":"8590:33:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4272,"type":"uint256","value":"_licenceAmountScaled"},"id":4574,"name":"Identifier","src":"8624:20:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4250,"type":"uint256","value":"MAX_AMOUNT_SCALE"},"id":4575,"name":"Identifier","src":"8647:16:28"}],"id":4576,"name":"BinaryOperation","src":"8624:39:28"}],"id":4577,"name":"FunctionCall","src":"8590:74:28"}],"id":4578,"name":"Assignment","src":"8577:87:28"}],"id":4579,"name":"ExpressionStatement","src":"8577:87:28"},{"attributes":{"assignments":[4581]},"children":[{"attributes":{"constant":false,"name":"licenceAmount","scope":4643,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4580,"name":"ElementaryTypeName","src":"8678:7:28"}],"id":4581,"name":"VariableDeclaration","src":"8678:21:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"uint256","value":"_amount"},"id":4582,"name":"Identifier","src":"8702:7:28"}],"id":4583,"name":"MemberAccess","src":"8702:11:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4584,"name":"Identifier","src":"8714:10:28"}],"id":4585,"name":"FunctionCall","src":"8702:23:28"}],"id":4586,"name":"VariableDeclarationStatement","src":"8678:47:28"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4587,"name":"Identifier","src":"8744:6:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":4588,"name":"ElementaryTypeNameExpression","src":"8754:7:28"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":4589,"name":"Literal","src":"8762:1:28"}],"id":4590,"name":"FunctionCall","src":"8754:10:28"}],"id":4591,"name":"BinaryOperation","src":"8744:20:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3427,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":4592,"name":"Identifier","src":"8784:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4593,"name":"Identifier","src":"8790:6:28"}],"id":4594,"name":"FunctionCall","src":"8784:13:28"}],"id":4595,"name":"MemberAccess","src":"8784:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4596,"name":"Identifier","src":"8815:3:28"}],"id":4597,"name":"MemberAccess","src":"8815:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4598,"name":"Identifier","src":"8827:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4581,"type":"uint256","value":"licenceAmount"},"id":4599,"name":"Identifier","src":"8841:13:28"}],"id":4600,"name":"FunctionCall","src":"8784:71:28"}],"id":4601,"name":"ExpressionStatement","src":"8784:71:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeTransferFrom","referencedDeclaration":3427,"type":"function (contract ERC20,address,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":4602,"name":"Identifier","src":"8873:5:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4603,"name":"Identifier","src":"8879:6:28"}],"id":4604,"name":"FunctionCall","src":"8873:13:28"}],"id":4605,"name":"MemberAccess","src":"8873:30:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4606,"name":"Identifier","src":"8904:3:28"}],"id":4607,"name":"MemberAccess","src":"8904:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4608,"name":"Identifier","src":"8916:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4609,"name":"Identifier","src":"8930:10:28"}],"id":4610,"name":"FunctionCall","src":"8873:68:28"}],"id":4611,"name":"ExpressionStatement","src":"8873:68:28"}],"id":4612,"name":"Block","src":"8766:190:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a8da8f058aaa2efcf224bd479d66e9c2f4c0326aacc5ced62ebd13f3eb808dc3","typeString":"literal_string \"ETH sent is not equal to amount\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":4613,"name":"Identifier","src":"8980:7:28"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4614,"name":"Identifier","src":"8988:3:28"}],"id":4615,"name":"MemberAccess","src":"8988:9:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4547,"type":"uint256","value":"_amount"},"id":4616,"name":"Identifier","src":"9001:7:28"}],"id":4617,"name":"BinaryOperation","src":"8988:20:28"},{"attributes":{"argumentTypes":null,"hexvalue":"4554482073656e74206973206e6f7420657175616c20746f20616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"ETH sent is not equal to amount\"","value":"ETH sent is not equal to amount"},"id":4618,"name":"Literal","src":"9010:33:28"}],"id":4619,"name":"FunctionCall","src":"8980:64:28"}],"id":4620,"name":"ExpressionStatement","src":"8980:64:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4621,"name":"Identifier","src":"9062:12:28"}],"id":4623,"name":"MemberAccess","src":"9062:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4581,"type":"uint256","value":"licenceAmount"},"id":4624,"name":"Identifier","src":"9084:13:28"}],"id":4625,"name":"FunctionCall","src":"9062:36:28"}],"id":4626,"name":"ExpressionStatement","src":"9062:36:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4627,"name":"Identifier","src":"9116:12:28"}],"id":4629,"name":"MemberAccess","src":"9116:21:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4630,"name":"Identifier","src":"9138:10:28"}],"id":4631,"name":"FunctionCall","src":"9116:33:28"}],"id":4632,"name":"ExpressionStatement","src":"9116:33:28"}],"id":4633,"name":"Block","src":"8962:202:28"}],"id":4634,"name":"IfStatement","src":"8740:424:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4229,"type":"function (address,address,address,uint256)","value":"TransferredToTokenHolder"},"id":4635,"name":"Identifier","src":"9183:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4636,"name":"Identifier","src":"9208:3:28"}],"id":4637,"name":"MemberAccess","src":"9208:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4260,"type":"address payable","value":"_tokenHolder"},"id":4638,"name":"Identifier","src":"9220:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4639,"name":"Identifier","src":"9234:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4581,"type":"uint256","value":"licenceAmount"},"id":4640,"name":"Identifier","src":"9242:13:28"}],"id":4641,"name":"FunctionCall","src":"9183:73:28"}],"id":4642,"name":"EmitStatement","src":"9178:78:28"}],"id":4643,"name":"Block","src":"8563:704:28"}],"id":4644,"name":"IfStatement","src":"8429:838:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4239,"type":"function (address,address,address,uint256)","value":"TransferredToCryptoFloat"},"id":4645,"name":"Identifier","src":"9282:24:28"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":4646,"name":"Identifier","src":"9307:3:28"}],"id":4647,"name":"MemberAccess","src":"9307:10:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4258,"type":"address payable","value":"_cryptoFloat"},"id":4648,"name":"Identifier","src":"9319:12:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4545,"type":"address","value":"_asset"},"id":4649,"name":"Identifier","src":"9333:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4551,"type":"uint256","value":"loadAmount"},"id":4650,"name":"Identifier","src":"9341:10:28"}],"id":4651,"name":"FunctionCall","src":"9282:70:28"}],"id":4652,"name":"EmitStatement","src":"9277:75:28"}],"id":4653,"name":"Block","src":"8336:1023:28"}],"id":4654,"name":"FunctionDefinition","src":"8272:1087:28"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":4711,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":4678,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":4655,"name":"ElementaryTypeName","src":"9463:15:28"}],"id":4656,"name":"VariableDeclaration","src":"9463:19:28"},{"attributes":{"constant":false,"name":"_asset","scope":4678,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":4657,"name":"ElementaryTypeName","src":"9484:7:28"}],"id":4658,"name":"VariableDeclaration","src":"9484:14:28"},{"attributes":{"constant":false,"name":"_amount","scope":4678,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":4659,"name":"ElementaryTypeName","src":"9500:7:28"}],"id":4660,"name":"VariableDeclaration","src":"9500:15:28"}],"id":4661,"name":"ParameterList","src":"9462:54:28"},{"attributes":{"parameters":[null]},"children":[],"id":4664,"name":"ParameterList","src":"9536:0:28"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":4662,"name":"Identifier","src":"9526:9:28"}],"id":4663,"name":"ModifierInvocation","src":"9526:9:28"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4166,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":4665,"name":"Identifier","src":"9546:13:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4656,"type":"address payable","value":"_to"},"id":4666,"name":"Identifier","src":"9560:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4658,"type":"address","value":"_asset"},"id":4667,"name":"Identifier","src":"9565:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4660,"type":"uint256","value":"_amount"},"id":4668,"name":"Identifier","src":"9573:7:28"}],"id":4669,"name":"FunctionCall","src":"9546:35:28"}],"id":4670,"name":"ExpressionStatement","src":"9546:35:28"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4247,"type":"function (address,address,uint256)","value":"Claimed"},"id":4671,"name":"Identifier","src":"9596:7:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4656,"type":"address payable","value":"_to"},"id":4672,"name":"Identifier","src":"9604:3:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4658,"type":"address","value":"_asset"},"id":4673,"name":"Identifier","src":"9609:6:28"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4660,"type":"uint256","value":"_amount"},"id":4674,"name":"Identifier","src":"9617:7:28"}],"id":4675,"name":"FunctionCall","src":"9596:29:28"}],"id":4676,"name":"EmitStatement","src":"9591:34:28"}],"id":4677,"name":"Block","src":"9536:96:28"}],"id":4678,"name":"FunctionDefinition","src":"9448:184:28"},{"attributes":{"documentation":"@notice returns whether or not the CryptoFloat address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"floatLocked","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4679,"name":"ParameterList","src":"9731:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4686,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4680,"name":"ElementaryTypeName","src":"9755:4:28"}],"id":4681,"name":"VariableDeclaration","src":"9755:4:28"}],"id":4682,"name":"ParameterList","src":"9754:6:28"},{"children":[{"attributes":{"functionReturnParameters":4682},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4264,"type":"bool","value":"_lockedCryptoFloat"},"id":4683,"name":"Identifier","src":"9778:18:28"}],"id":4684,"name":"Return","src":"9771:25:28"}],"id":4685,"name":"Block","src":"9761:42:28"}],"id":4686,"name":"FunctionDefinition","src":"9711:92:28"},{"attributes":{"documentation":"@notice returns whether or not the TokenHolder address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"holderLocked","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4687,"name":"ParameterList","src":"9903:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4694,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4688,"name":"ElementaryTypeName","src":"9927:4:28"}],"id":4689,"name":"VariableDeclaration","src":"9927:4:28"}],"id":4690,"name":"ParameterList","src":"9926:6:28"},{"children":[{"attributes":{"functionReturnParameters":4690},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4266,"type":"bool","value":"_lockedTokenHolder"},"id":4691,"name":"Identifier","src":"9950:18:28"}],"id":4692,"name":"Return","src":"9943:25:28"}],"id":4693,"name":"Block","src":"9933:42:28"}],"id":4694,"name":"FunctionDefinition","src":"9882:93:28"},{"attributes":{"documentation":"@notice returns whether or not the Licence DAO address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceDAOLocked","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4695,"name":"ParameterList","src":"10079:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4702,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4696,"name":"ElementaryTypeName","src":"10103:4:28"}],"id":4697,"name":"VariableDeclaration","src":"10103:4:28"}],"id":4698,"name":"ParameterList","src":"10102:6:28"},{"children":[{"attributes":{"functionReturnParameters":4698},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4268,"type":"bool","value":"_lockedLicenceDAO"},"id":4699,"name":"Identifier","src":"10126:17:28"}],"id":4700,"name":"Return","src":"10119:24:28"}],"id":4701,"name":"Block","src":"10109:41:28"}],"id":4702,"name":"FunctionDefinition","src":"10054:96:28"},{"attributes":{"documentation":"@notice returns whether or not the TKN address is locked","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tknContractAddressLocked","scope":4711,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":4703,"name":"ParameterList","src":"10254:2:28"},{"children":[{"attributes":{"constant":false,"name":"","scope":4710,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":4704,"name":"ElementaryTypeName","src":"10278:4:28"}],"id":4705,"name":"VariableDeclaration","src":"10278:4:28"}],"id":4706,"name":"ParameterList","src":"10277:6:28"},{"children":[{"attributes":{"functionReturnParameters":4706},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4270,"type":"bool","value":"_lockedTKNContractAddress"},"id":4707,"name":"Identifier","src":"10301:25:28"}],"id":4708,"name":"Return","src":"10294:32:28"}],"id":4709,"name":"Block","src":"10284:49:28"}],"id":4710,"name":"FunctionDefinition","src":"10221:112:28"}],"id":4711,"name":"ContractDefinition","src":"1381:8954:28"}],"id":4712,"name":"SourceUnit","src":"767:9569:28"}},"tokenWhitelist.sol":{"AST":{"attributes":{"absolutePath":"tokenWhitelist.sol","exportedSymbols":{"ITokenWhitelist":[5110],"TokenWhitelist":[6010]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":5024,"name":"PragmaDirective","src":"774:24:29"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5025,"name":"ImportDirective","src":"800:38:29"},{"attributes":{"SourceUnit":4168,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5026,"name":"ImportDirective","src":"839:39:29"},{"attributes":{"SourceUnit":9115,"absolutePath":"internals/bytesUtils.sol","file":"./internals/bytesUtils.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5027,"name":"ImportDirective","src":"879:36:29"},{"attributes":{"SourceUnit":9004,"absolutePath":"externals/strings.sol","file":"./externals/strings.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5028,"name":"ImportDirective","src":"916:33:29"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":6011,"symbolAliases":[null],"unitAlias":""},"id":5029,"name":"ImportDirective","src":"950:34:29"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title The ITokenWhitelist interface provides access to a whitelist of tokens.","fullyImplemented":false,"linearizedBaseContracts":[5110],"name":"ITokenWhitelist","scope":6011},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5030,"name":"ElementaryTypeName","src":"1124:7:29"}],"id":5031,"name":"VariableDeclaration","src":"1124:7:29"}],"id":5032,"name":"ParameterList","src":"1123:9:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5033,"name":"ElementaryTypeName","src":"1156:6:29"}],"id":5034,"name":"VariableDeclaration","src":"1156:13:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5035,"name":"ElementaryTypeName","src":"1171:7:29"}],"id":5036,"name":"VariableDeclaration","src":"1171:7:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5037,"name":"ElementaryTypeName","src":"1180:7:29"}],"id":5038,"name":"VariableDeclaration","src":"1180:7:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5039,"name":"ElementaryTypeName","src":"1189:4:29"}],"id":5040,"name":"VariableDeclaration","src":"1189:4:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5041,"name":"ElementaryTypeName","src":"1195:4:29"}],"id":5042,"name":"VariableDeclaration","src":"1195:4:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5043,"name":"ElementaryTypeName","src":"1201:4:29"}],"id":5044,"name":"VariableDeclaration","src":"1201:4:29"},{"attributes":{"constant":false,"name":"","scope":5048,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5045,"name":"ElementaryTypeName","src":"1207:7:29"}],"id":5046,"name":"VariableDeclaration","src":"1207:7:29"}],"id":5047,"name":"ParameterList","src":"1155:60:29"}],"id":5048,"name":"FunctionDefinition","src":"1102:114:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5049,"name":"ParameterList","src":"1248:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5050,"name":"ElementaryTypeName","src":"1274:6:29"}],"id":5051,"name":"VariableDeclaration","src":"1274:13:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5052,"name":"ElementaryTypeName","src":"1289:7:29"}],"id":5053,"name":"VariableDeclaration","src":"1289:7:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5054,"name":"ElementaryTypeName","src":"1298:7:29"}],"id":5055,"name":"VariableDeclaration","src":"1298:7:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5056,"name":"ElementaryTypeName","src":"1307:4:29"}],"id":5057,"name":"VariableDeclaration","src":"1307:4:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5058,"name":"ElementaryTypeName","src":"1313:4:29"}],"id":5059,"name":"VariableDeclaration","src":"1313:4:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5060,"name":"ElementaryTypeName","src":"1319:4:29"}],"id":5061,"name":"VariableDeclaration","src":"1319:4:29"},{"attributes":{"constant":false,"name":"","scope":5065,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5062,"name":"ElementaryTypeName","src":"1325:7:29"}],"id":5063,"name":"VariableDeclaration","src":"1325:7:29"}],"id":5064,"name":"ParameterList","src":"1273:60:29"}],"id":5065,"name":"FunctionDefinition","src":"1222:112:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5066,"name":"ParameterList","src":"1366:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5071,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5067,"name":"ElementaryTypeName","src":"1392:7:29"}],"id":5068,"name":"ArrayTypeName","src":"1392:9:29"}],"id":5069,"name":"VariableDeclaration","src":"1392:16:29"}],"id":5070,"name":"ParameterList","src":"1391:18:29"}],"id":5071,"name":"FunctionDefinition","src":"1340:70:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5072,"name":"ParameterList","src":"1441:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5077,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5073,"name":"ElementaryTypeName","src":"1467:7:29"}],"id":5074,"name":"ArrayTypeName","src":"1467:9:29"}],"id":5075,"name":"VariableDeclaration","src":"1467:16:29"}],"id":5076,"name":"ParameterList","src":"1466:18:29"}],"id":5077,"name":"FunctionDefinition","src":"1416:69:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"methodIdWhitelist","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5084,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5078,"name":"ElementaryTypeName","src":"1518:6:29"}],"id":5079,"name":"VariableDeclaration","src":"1518:6:29"}],"id":5080,"name":"ParameterList","src":"1517:8:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5084,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5081,"name":"ElementaryTypeName","src":"1549:4:29"}],"id":5082,"name":"VariableDeclaration","src":"1549:4:29"}],"id":5083,"name":"ParameterList","src":"1548:6:29"}],"id":5084,"name":"FunctionDefinition","src":"1491:64:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5095,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5085,"name":"ElementaryTypeName","src":"1597:7:29"}],"id":5086,"name":"VariableDeclaration","src":"1597:7:29"},{"attributes":{"constant":false,"name":"","scope":5095,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5087,"name":"ElementaryTypeName","src":"1606:5:29"}],"id":5088,"name":"VariableDeclaration","src":"1606:14:29"}],"id":5089,"name":"ParameterList","src":"1596:25:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5095,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5090,"name":"ElementaryTypeName","src":"1645:7:29"}],"id":5091,"name":"VariableDeclaration","src":"1645:7:29"},{"attributes":{"constant":false,"name":"","scope":5095,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5092,"name":"ElementaryTypeName","src":"1654:7:29"}],"id":5093,"name":"VariableDeclaration","src":"1654:7:29"}],"id":5094,"name":"ParameterList","src":"1644:18:29"}],"id":5095,"name":"FunctionDefinition","src":"1561:102:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":5110,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5096,"name":"ParameterList","src":"1688:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5100,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5097,"name":"ElementaryTypeName","src":"1714:7:29"}],"id":5098,"name":"VariableDeclaration","src":"1714:7:29"}],"id":5099,"name":"ParameterList","src":"1713:9:29"}],"id":5100,"name":"FunctionDefinition","src":"1669:54:29"},{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"updateTokenRate","scope":5110,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"","scope":5109,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5101,"name":"ElementaryTypeName","src":"1754:7:29"}],"id":5102,"name":"VariableDeclaration","src":"1754:7:29"},{"attributes":{"constant":false,"name":"","scope":5109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5103,"name":"ElementaryTypeName","src":"1763:7:29"}],"id":5104,"name":"VariableDeclaration","src":"1763:7:29"},{"attributes":{"constant":false,"name":"","scope":5109,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5105,"name":"ElementaryTypeName","src":"1772:7:29"}],"id":5106,"name":"VariableDeclaration","src":"1772:7:29"}],"id":5107,"name":"ParameterList","src":"1753:27:29"},{"attributes":{"parameters":[null]},"children":[],"id":5108,"name":"ParameterList","src":"1789:0:29"}],"id":5109,"name":"FunctionDefinition","src":"1729:61:29"}],"id":5110,"name":"ContractDefinition","src":"1070:722:29"},{"attributes":{"contractDependencies":[325,3206,4167],"contractKind":"contract","documentation":"@title TokenWhitelist stores a list of tokens used by the Consumer Contract Wallet, the Oracle, the TKN Holder and the TKN Licence Contract","fullyImplemented":true,"linearizedBaseContracts":[6010,4167,325,3206],"name":"TokenWhitelist","scope":6011},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":5111,"name":"UserDefinedTypeName","src":"1966:13:29"}],"id":5112,"name":"InheritanceSpecifier","src":"1966:13:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":5113,"name":"UserDefinedTypeName","src":"1981:12:29"}],"id":5114,"name":"InheritanceSpecifier","src":"1981:12:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4167,"type":"contract Transferrable"},"id":5115,"name":"UserDefinedTypeName","src":"1995:13:29"}],"id":5116,"name":"InheritanceSpecifier","src":"1995:13:29"},{"attributes":{"typeName":null},"children":[{"attributes":{"contractScope":null,"name":"strings","referencedDeclaration":9003,"type":"library strings"},"id":5117,"name":"UserDefinedTypeName","src":"2021:7:29"}],"id":5118,"name":"UsingForDirective","src":"2015:20:29"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":5119,"name":"UserDefinedTypeName","src":"2046:8:29"},{"attributes":{"name":"uint256","type":"uint256"},"id":5120,"name":"ElementaryTypeName","src":"2059:7:29"}],"id":5121,"name":"UsingForDirective","src":"2040:27:29"},{"children":[{"attributes":{"contractScope":null,"name":"BytesUtils","referencedDeclaration":9114,"type":"library BytesUtils"},"id":5122,"name":"UserDefinedTypeName","src":"2078:10:29"},{"attributes":{"name":"bytes","type":"bytes"},"id":5123,"name":"ElementaryTypeName","src":"2093:5:29"}],"id":5124,"name":"UsingForDirective","src":"2072:27:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5132,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5125,"name":"ElementaryTypeName","src":"2128:7:29"}],"id":5126,"name":"VariableDeclaration","src":"2128:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5132,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5127,"name":"ElementaryTypeName","src":"2145:7:29"}],"id":5128,"name":"VariableDeclaration","src":"2145:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_rate","scope":5132,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5129,"name":"ElementaryTypeName","src":"2161:7:29"}],"id":5130,"name":"VariableDeclaration","src":"2161:13:29"}],"id":5131,"name":"ParameterList","src":"2127:48:29"}],"id":5132,"name":"EventDefinition","src":"2105:71:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenLoadable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5140,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5133,"name":"ElementaryTypeName","src":"2209:7:29"}],"id":5134,"name":"VariableDeclaration","src":"2209:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5140,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5135,"name":"ElementaryTypeName","src":"2226:7:29"}],"id":5136,"name":"VariableDeclaration","src":"2226:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":5140,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5137,"name":"ElementaryTypeName","src":"2242:4:29"}],"id":5138,"name":"VariableDeclaration","src":"2242:14:29"}],"id":5139,"name":"ParameterList","src":"2208:49:29"}],"id":5140,"name":"EventDefinition","src":"2182:76:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedTokenRedeemable"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5148,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5141,"name":"ElementaryTypeName","src":"2292:7:29"}],"id":5142,"name":"VariableDeclaration","src":"2292:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5148,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5143,"name":"ElementaryTypeName","src":"2309:7:29"}],"id":5144,"name":"VariableDeclaration","src":"2309:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":5148,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5145,"name":"ElementaryTypeName","src":"2325:4:29"}],"id":5146,"name":"VariableDeclaration","src":"2325:16:29"}],"id":5147,"name":"ParameterList","src":"2291:51:29"}],"id":5148,"name":"EventDefinition","src":"2263:80:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5162,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5149,"name":"ElementaryTypeName","src":"2366:7:29"}],"id":5150,"name":"VariableDeclaration","src":"2366:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5162,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5151,"name":"ElementaryTypeName","src":"2383:7:29"}],"id":5152,"name":"VariableDeclaration","src":"2383:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_symbol","scope":5162,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5153,"name":"ElementaryTypeName","src":"2399:6:29"}],"id":5154,"name":"VariableDeclaration","src":"2399:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_magnitude","scope":5162,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5155,"name":"ElementaryTypeName","src":"2415:7:29"}],"id":5156,"name":"VariableDeclaration","src":"2415:18:29"},{"attributes":{"constant":false,"indexed":false,"name":"_loadable","scope":5162,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5157,"name":"ElementaryTypeName","src":"2435:4:29"}],"id":5158,"name":"VariableDeclaration","src":"2435:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_redeemable","scope":5162,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5159,"name":"ElementaryTypeName","src":"2451:4:29"}],"id":5160,"name":"VariableDeclaration","src":"2451:16:29"}],"id":5161,"name":"ParameterList","src":"2365:103:29"}],"id":5162,"name":"EventDefinition","src":"2349:120:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedToken"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":5168,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5163,"name":"ElementaryTypeName","src":"2493:7:29"}],"id":5164,"name":"VariableDeclaration","src":"2493:15:29"},{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5168,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5165,"name":"ElementaryTypeName","src":"2510:7:29"}],"id":5166,"name":"VariableDeclaration","src":"2510:14:29"}],"id":5167,"name":"ParameterList","src":"2492:33:29"}],"id":5168,"name":"EventDefinition","src":"2474:52:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":5172,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5169,"name":"ElementaryTypeName","src":"2552:6:29"}],"id":5170,"name":"VariableDeclaration","src":"2552:16:29"}],"id":5171,"name":"ParameterList","src":"2551:18:29"}],"id":5172,"name":"EventDefinition","src":"2532:38:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedMethodId"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":5176,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5173,"name":"ElementaryTypeName","src":"2597:6:29"}],"id":5174,"name":"VariableDeclaration","src":"2597:16:29"}],"id":5175,"name":"ParameterList","src":"2596:18:29"}],"id":5176,"name":"EventDefinition","src":"2575:40:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5182,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5177,"name":"ElementaryTypeName","src":"2647:7:29"}],"id":5178,"name":"VariableDeclaration","src":"2647:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":5182,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5179,"name":"ElementaryTypeName","src":"2663:6:29"}],"id":5180,"name":"VariableDeclaration","src":"2663:16:29"}],"id":5181,"name":"ParameterList","src":"2646:34:29"}],"id":5182,"name":"EventDefinition","src":"2620:61:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedExclusiveMethod"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_token","scope":5188,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5183,"name":"ElementaryTypeName","src":"2715:7:29"}],"id":5184,"name":"VariableDeclaration","src":"2715:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_methodId","scope":5188,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5185,"name":"ElementaryTypeName","src":"2731:6:29"}],"id":5186,"name":"VariableDeclaration","src":"2731:16:29"}],"id":5187,"name":"ParameterList","src":"2714:34:29"}],"id":5188,"name":"EventDefinition","src":"2686:63:29"},{"attributes":{"anonymous":false,"documentation":null,"name":"Claimed"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":5196,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5189,"name":"ElementaryTypeName","src":"2769:7:29"}],"id":5190,"name":"VariableDeclaration","src":"2769:11:29"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":5196,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5191,"name":"ElementaryTypeName","src":"2782:7:29"}],"id":5192,"name":"VariableDeclaration","src":"2782:14:29"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":5196,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5193,"name":"ElementaryTypeName","src":"2798:7:29"}],"id":5194,"name":"VariableDeclaration","src":"2798:15:29"}],"id":5195,"name":"ParameterList","src":"2768:46:29"}],"id":5196,"name":"EventDefinition","src":"2755:60:29"},{"attributes":{"constant":true,"name":"_APPROVE","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5197,"name":"ElementaryTypeName","src":"2924:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783039356561376233","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 157198259","value":"0x095ea7b3"},"id":5198,"name":"Literal","src":"2959:10:29"}],"id":5199,"name":"VariableDeclaration","src":"2924:45:29"},{"attributes":{"constant":true,"name":"_BURN","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5200,"name":"ElementaryTypeName","src":"3028:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783432393636633638","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1117154408","value":"0x42966c68"},"id":5201,"name":"Literal","src":"3060:10:29"}],"id":5202,"name":"VariableDeclaration","src":"3028:42:29"},{"attributes":{"constant":true,"name":"_TRANSFER","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5203,"name":"ElementaryTypeName","src":"3118:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30786139303539636262","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 2835717307","value":"0xa9059cbb"},"id":5204,"name":"Literal","src":"3154:10:29"}],"id":5205,"name":"VariableDeclaration","src":"3118:46:29"},{"attributes":{"constant":true,"name":"_TRANSFER_FROM","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5206,"name":"ElementaryTypeName","src":"3224:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30783233623837326464","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 599290589","value":"0x23b872dd"},"id":5207,"name":"Literal","src":"3265:10:29"}],"id":5208,"name":"VariableDeclaration","src":"3224:51:29"},{"attributes":{"canonicalName":"TokenWhitelist.Token","name":"Token","scope":6010,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"symbol","scope":5223,"stateVariable":false,"storageLocation":"default","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5209,"name":"ElementaryTypeName","src":"3371:6:29"}],"id":5210,"name":"VariableDeclaration","src":"3371:13:29"},{"attributes":{"constant":false,"name":"magnitude","scope":5223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5211,"name":"ElementaryTypeName","src":"3410:7:29"}],"id":5212,"name":"VariableDeclaration","src":"3410:17:29"},{"attributes":{"constant":false,"name":"rate","scope":5223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5213,"name":"ElementaryTypeName","src":"3452:7:29"}],"id":5214,"name":"VariableDeclaration","src":"3452:12:29"},{"attributes":{"constant":false,"name":"available","scope":5223,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5215,"name":"ElementaryTypeName","src":"3504:4:29"}],"id":5216,"name":"VariableDeclaration","src":"3504:14:29"},{"attributes":{"constant":false,"name":"loadable","scope":5223,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5217,"name":"ElementaryTypeName","src":"3570:4:29"}],"id":5218,"name":"VariableDeclaration","src":"3570:13:29"},{"attributes":{"constant":false,"name":"redeemable","scope":5223,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5219,"name":"ElementaryTypeName","src":"3640:4:29"}],"id":5220,"name":"VariableDeclaration","src":"3640:15:29"},{"attributes":{"constant":false,"name":"lastUpdate","scope":5223,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5221,"name":"ElementaryTypeName","src":"3724:7:29"}],"id":5222,"name":"VariableDeclaration","src":"3724:18:29"}],"id":5223,"name":"StructDefinition","src":"3348:433:29"},{"attributes":{"constant":false,"name":"_tokenInfoMap","scope":6010,"stateVariable":true,"storageLocation":"default","type":"mapping(address => struct TokenWhitelist.Token)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(address => struct TokenWhitelist.Token)"},"children":[{"attributes":{"name":"address","type":"address"},"id":5224,"name":"ElementaryTypeName","src":"3795:7:29"},{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":5223,"type":"struct TokenWhitelist.Token"},"id":5225,"name":"UserDefinedTypeName","src":"3806:5:29"}],"id":5226,"name":"Mapping","src":"3787:25:29"}],"id":5227,"name":"VariableDeclaration","src":"3787:47:29"},{"attributes":{"constant":false,"name":"_methodIdWhitelist","scope":6010,"stateVariable":true,"storageLocation":"default","type":"mapping(bytes4 => bool)","value":null,"visibility":"private"},"children":[{"attributes":{"type":"mapping(bytes4 => bool)"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5228,"name":"ElementaryTypeName","src":"4004:6:29"},{"attributes":{"name":"bool","type":"bool"},"id":5229,"name":"ElementaryTypeName","src":"4014:4:29"}],"id":5230,"name":"Mapping","src":"3996:23:29"}],"id":5231,"name":"VariableDeclaration","src":"3996:50:29"},{"attributes":{"constant":false,"name":"_tokenAddressArray","scope":6010,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5232,"name":"ElementaryTypeName","src":"4053:7:29"}],"id":5233,"name":"ArrayTypeName","src":"4053:9:29"}],"id":5234,"name":"VariableDeclaration","src":"4053:36:29"},{"attributes":{"constant":false,"name":"_redeemableCounter","scope":6010,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5235,"name":"ElementaryTypeName","src":"4182:7:29"}],"id":5236,"name":"VariableDeclaration","src":"4182:34:29"},{"attributes":{"constant":false,"name":"_stablecoin","scope":6010,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"private"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5237,"name":"ElementaryTypeName","src":"4266:7:29"}],"id":5238,"name":"VariableDeclaration","src":"4266:27:29"},{"attributes":{"constant":false,"name":"_oracleNode","scope":6010,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5239,"name":"ElementaryTypeName","src":"4372:7:29"}],"id":5240,"name":"VariableDeclaration","src":"4372:27:29"},{"attributes":{"documentation":"@notice Constructor initializes ENSResolvable, and Controllable.\n @param _ens_ is the ENS registry address.\n @param _oracleNode_ is the ENS node of the Oracle.\n @param _controllerNode_ is our Controllers node.\n @param _stablecoinAddress_ is the address of the stablecoint used by the wallet for the card load limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":5290,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5241,"name":"ElementaryTypeName","src":"4770:7:29"}],"id":5242,"name":"VariableDeclaration","src":"4770:13:29"},{"attributes":{"constant":false,"name":"_oracleNode_","scope":5290,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5243,"name":"ElementaryTypeName","src":"4785:7:29"}],"id":5244,"name":"VariableDeclaration","src":"4785:20:29"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":5290,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5245,"name":"ElementaryTypeName","src":"4807:7:29"}],"id":5246,"name":"VariableDeclaration","src":"4807:24:29"},{"attributes":{"constant":false,"name":"_stablecoinAddress_","scope":5290,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5247,"name":"ElementaryTypeName","src":"4833:7:29"}],"id":5248,"name":"VariableDeclaration","src":"4833:27:29"}],"id":5249,"name":"ParameterList","src":"4769:92:29"},{"attributes":{"parameters":[null]},"children":[],"id":5256,"name":"ParameterList","src":"4949:0:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":5250,"name":"Identifier","src":"4885:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5242,"type":"address","value":"_ens_"},"id":5251,"name":"Identifier","src":"4899:5:29"}],"id":5252,"name":"ModifierInvocation","src":"4885:20:29"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":5253,"name":"Identifier","src":"4914:12:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5246,"type":"bytes32","value":"_controllerNode_"},"id":5254,"name":"Identifier","src":"4927:16:29"}],"id":5255,"name":"ModifierInvocation","src":"4914:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes32","value":"_oracleNode"},"id":5257,"name":"Identifier","src":"4959:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5244,"type":"bytes32","value":"_oracleNode_"},"id":5258,"name":"Identifier","src":"4973:12:29"}],"id":5259,"name":"Assignment","src":"4959:26:29"}],"id":5260,"name":"ExpressionStatement","src":"4959:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"address","value":"_stablecoin"},"id":5261,"name":"Identifier","src":"4995:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5248,"type":"address","value":"_stablecoinAddress_"},"id":5262,"name":"Identifier","src":"5009:19:29"}],"id":5263,"name":"Assignment","src":"4995:33:29"}],"id":5264,"name":"ExpressionStatement","src":"4995:33:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5265,"name":"Identifier","src":"5083:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5199,"type":"bytes4","value":"_APPROVE"},"id":5266,"name":"Identifier","src":"5102:8:29"}],"id":5267,"name":"IndexAccess","src":"5083:28:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5268,"name":"Literal","src":"5114:4:29"}],"id":5269,"name":"Assignment","src":"5083:35:29"}],"id":5270,"name":"ExpressionStatement","src":"5083:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5271,"name":"Identifier","src":"5128:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5202,"type":"bytes4","value":"_BURN"},"id":5272,"name":"Identifier","src":"5147:5:29"}],"id":5273,"name":"IndexAccess","src":"5128:25:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5274,"name":"Literal","src":"5156:4:29"}],"id":5275,"name":"Assignment","src":"5128:32:29"}],"id":5276,"name":"ExpressionStatement","src":"5128:32:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5277,"name":"Identifier","src":"5170:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5205,"type":"bytes4","value":"_TRANSFER"},"id":5278,"name":"Identifier","src":"5189:9:29"}],"id":5279,"name":"IndexAccess","src":"5170:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5280,"name":"Literal","src":"5202:4:29"}],"id":5281,"name":"Assignment","src":"5170:36:29"}],"id":5282,"name":"ExpressionStatement","src":"5170:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5283,"name":"Identifier","src":"5216:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"bytes4","value":"_TRANSFER_FROM"},"id":5284,"name":"Identifier","src":"5235:14:29"}],"id":5285,"name":"IndexAccess","src":"5216:34:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5286,"name":"Literal","src":"5253:4:29"}],"id":5287,"name":"Assignment","src":"5216:41:29"}],"id":5288,"name":"ExpressionStatement","src":"5216:41:29"}],"id":5289,"name":"Block","src":"4949:315:29"}],"id":5290,"name":"FunctionDefinition","src":"4758:506:29"},{"attributes":{"documentation":null,"name":"onlyAdminOrOracle","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5291,"name":"ParameterList","src":"5296:2:29"},{"children":[{"attributes":{"assignments":[5293]},"children":[{"attributes":{"constant":false,"name":"oracleAddress","scope":5312,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5292,"name":"ElementaryTypeName","src":"5309:7:29"}],"id":5293,"name":"VariableDeclaration","src":"5309:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":5294,"name":"Identifier","src":"5333:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes32","value":"_oracleNode"},"id":5295,"name":"Identifier","src":"5345:11:29"}],"id":5296,"name":"FunctionCall","src":"5333:24:29"}],"id":5297,"name":"VariableDeclarationStatement","src":"5309:48:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_7b021c702c5df2a2baadf025cfa28f4910052fe601f1fc5b29d9c0ab22ca4096","typeString":"literal_string \"either oracle or admin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5298,"name":"Identifier","src":"5367:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":324,"type":"function (address) view returns (bool)","value":"_isAdmin"},"id":5299,"name":"Identifier","src":"5375:8:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5300,"name":"Identifier","src":"5384:3:29"}],"id":5301,"name":"MemberAccess","src":"5384:10:29"}],"id":5302,"name":"FunctionCall","src":"5375:20:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5303,"name":"Identifier","src":"5399:3:29"}],"id":5304,"name":"MemberAccess","src":"5399:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5293,"type":"address","value":"oracleAddress"},"id":5305,"name":"Identifier","src":"5413:13:29"}],"id":5306,"name":"BinaryOperation","src":"5399:27:29"}],"id":5307,"name":"BinaryOperation","src":"5375:51:29"},{"attributes":{"argumentTypes":null,"hexvalue":"656974686572206f7261636c65206f722061646d696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"either oracle or admin\"","value":"either oracle or admin"},"id":5308,"name":"Literal","src":"5428:24:29"}],"id":5309,"name":"FunctionCall","src":"5367:86:29"}],"id":5310,"name":"ExpressionStatement","src":"5367:86:29"},{"id":5311,"name":"PlaceholderStatement","src":"5463:1:29"}],"id":5312,"name":"Block","src":"5299:172:29"}],"id":5313,"name":"ModifierDefinition","src":"5270:201:29"},{"attributes":{"documentation":"@notice Add ERC20 tokens to the list of whitelisted tokens.\n @param _tokens ERC20 token contract addresses.\n @param _symbols ERC20 token names.\n @param _magnitude 10 to the power of number of decimal places used by each ERC20 token.\n @param _loadable is a bool that states whether or not a token is loadable to the TokenCard.\n @param _redeemable is a bool that states whether or not a token is redeemable in the TKN Holder Contract.\n @param _lastUpdate is a unit representing an ISO datetime e.g. 20180913153211.","implemented":true,"isConstructor":false,"kind":"function","name":"addTokens","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5314,"name":"ElementaryTypeName","src":"6068:7:29"}],"id":5315,"name":"ArrayTypeName","src":"6068:9:29"}],"id":5316,"name":"VariableDeclaration","src":"6068:26:29"},{"attributes":{"constant":false,"name":"_symbols","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"bytes32[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bytes32[]"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":5317,"name":"ElementaryTypeName","src":"6104:7:29"}],"id":5318,"name":"ArrayTypeName","src":"6104:9:29"}],"id":5319,"name":"VariableDeclaration","src":"6104:27:29"},{"attributes":{"constant":false,"name":"_magnitude","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"uint256[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"uint256[]"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5320,"name":"ElementaryTypeName","src":"6141:7:29"}],"id":5321,"name":"ArrayTypeName","src":"6141:9:29"}],"id":5322,"name":"VariableDeclaration","src":"6141:29:29"},{"attributes":{"constant":false,"name":"_loadable","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5323,"name":"ElementaryTypeName","src":"6180:4:29"}],"id":5324,"name":"ArrayTypeName","src":"6180:6:29"}],"id":5325,"name":"VariableDeclaration","src":"6180:25:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":5457,"stateVariable":false,"storageLocation":"calldata","type":"bool[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"bool[]"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5326,"name":"ElementaryTypeName","src":"6215:4:29"}],"id":5327,"name":"ArrayTypeName","src":"6215:6:29"}],"id":5328,"name":"VariableDeclaration","src":"6215:27:29"},{"attributes":{"constant":false,"name":"_lastUpdate","scope":5457,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5329,"name":"ElementaryTypeName","src":"6252:7:29"}],"id":5330,"name":"VariableDeclaration","src":"6252:19:29"}],"id":5331,"name":"ParameterList","src":"6058:219:29"},{"attributes":{"parameters":[null]},"children":[],"id":5334,"name":"ParameterList","src":"6297:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5332,"name":"Identifier","src":"6287:9:29"}],"id":5333,"name":"ModifierInvocation","src":"6287:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_229d13192b5da189e34c035711b06ef00014d6b1ae3d20f5919a9f7f0dc28e53","typeString":"literal_string \"parameter lengths do not match\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5335,"name":"Identifier","src":"6368:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5336,"name":"Identifier","src":"6389:7:29"}],"id":5337,"name":"MemberAccess","src":"6389:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5319,"type":"bytes32[] calldata","value":"_symbols"},"id":5338,"name":"Identifier","src":"6407:8:29"}],"id":5339,"name":"MemberAccess","src":"6407:15:29"}],"id":5340,"name":"BinaryOperation","src":"6389:33:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5341,"name":"Identifier","src":"6442:7:29"}],"id":5342,"name":"MemberAccess","src":"6442:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5322,"type":"uint256[] calldata","value":"_magnitude"},"id":5343,"name":"Identifier","src":"6460:10:29"}],"id":5344,"name":"MemberAccess","src":"6460:17:29"}],"id":5345,"name":"BinaryOperation","src":"6442:35:29"}],"id":5346,"name":"BinaryOperation","src":"6389:88:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5347,"name":"Identifier","src":"6497:7:29"}],"id":5348,"name":"MemberAccess","src":"6497:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5325,"type":"bool[] calldata","value":"_loadable"},"id":5349,"name":"Identifier","src":"6515:9:29"}],"id":5350,"name":"MemberAccess","src":"6515:16:29"}],"id":5351,"name":"BinaryOperation","src":"6497:34:29"}],"id":5352,"name":"BinaryOperation","src":"6389:142:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5353,"name":"Identifier","src":"6551:7:29"}],"id":5354,"name":"MemberAccess","src":"6551:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5325,"type":"bool[] calldata","value":"_loadable"},"id":5355,"name":"Identifier","src":"6569:9:29"}],"id":5356,"name":"MemberAccess","src":"6569:16:29"}],"id":5357,"name":"BinaryOperation","src":"6551:34:29"}],"id":5358,"name":"BinaryOperation","src":"6389:196:29"},{"attributes":{"argumentTypes":null,"hexvalue":"706172616d65746572206c656e6774687320646f206e6f74206d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"parameter lengths do not match\"","value":"parameter lengths do not match"},"id":5359,"name":"Literal","src":"6599:32:29"}],"id":5360,"name":"FunctionCall","src":"6368:273:29"}],"id":5361,"name":"ExpressionStatement","src":"6368:273:29"},{"children":[{"attributes":{"assignments":[5363]},"children":[{"attributes":{"constant":false,"name":"i","scope":5455,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5362,"name":"ElementaryTypeName","src":"6715:7:29"}],"id":5363,"name":"VariableDeclaration","src":"6715:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5364,"name":"Literal","src":"6727:1:29"}],"id":5365,"name":"VariableDeclarationStatement","src":"6715:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5366,"name":"Identifier","src":"6730:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5367,"name":"Identifier","src":"6734:7:29"}],"id":5368,"name":"MemberAccess","src":"6734:14:29"}],"id":5369,"name":"BinaryOperation","src":"6730:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5370,"name":"Identifier","src":"6750:1:29"}],"id":5371,"name":"UnaryOperation","src":"6750:3:29"}],"id":5372,"name":"ExpressionStatement","src":"6750:3:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e7eb3a05df4990307bc322b918e16d072d8c2936ee70a5abacdb05979a5cec23","typeString":"literal_string \"token already available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5373,"name":"Identifier","src":"6832:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5374,"name":"Identifier","src":"6841:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5375,"name":"Identifier","src":"6855:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5376,"name":"Identifier","src":"6863:1:29"}],"id":5377,"name":"IndexAccess","src":"6855:10:29"}],"id":5378,"name":"IndexAccess","src":"6841:25:29"}],"id":5379,"name":"MemberAccess","src":"6841:35:29"}],"id":5380,"name":"UnaryOperation","src":"6840:36:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e20616c726561647920617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token already available\"","value":"token already available"},"id":5381,"name":"Literal","src":"6878:25:29"}],"id":5382,"name":"FunctionCall","src":"6832:72:29"}],"id":5383,"name":"ExpressionStatement","src":"6832:72:29"},{"attributes":{"assignments":[5385]},"children":[{"attributes":{"constant":false,"name":"symbol","scope":5454,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5384,"name":"ElementaryTypeName","src":"6964:6:29"}],"id":5385,"name":"VariableDeclaration","src":"6964:20:29"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"toString","referencedDeclaration":7552,"type":"function (struct strings.slice memory) pure returns (string memory)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"struct strings.slice memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toSliceB32","referencedDeclaration":7507,"type":"function (bytes32) pure returns (struct strings.slice memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5319,"type":"bytes32[] calldata","value":"_symbols"},"id":5386,"name":"Identifier","src":"6987:8:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5387,"name":"Identifier","src":"6996:1:29"}],"id":5388,"name":"IndexAccess","src":"6987:11:29"}],"id":5389,"name":"MemberAccess","src":"6987:22:29"}],"id":5390,"name":"FunctionCall","src":"6987:24:29"}],"id":5391,"name":"MemberAccess","src":"6987:33:29"}],"id":5392,"name":"FunctionCall","src":"6987:35:29"}],"id":5393,"name":"VariableDeclarationStatement","src":"6964:58:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5394,"name":"Identifier","src":"7084:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5395,"name":"Identifier","src":"7098:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5396,"name":"Identifier","src":"7106:1:29"}],"id":5397,"name":"IndexAccess","src":"7098:10:29"}],"id":5398,"name":"IndexAccess","src":"7084:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":["symbol","magnitude","rate","available","loadable","redeemable","lastUpdate"],"type":"struct TokenWhitelist.Token memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5223,"type":"type(struct TokenWhitelist.Token storage pointer)","value":"Token"},"id":5399,"name":"Identifier","src":"7112:5:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5385,"type":"string memory","value":"symbol"},"id":5400,"name":"Identifier","src":"7144:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5322,"type":"uint256[] calldata","value":"_magnitude"},"id":5401,"name":"Identifier","src":"7179:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5402,"name":"Identifier","src":"7190:1:29"}],"id":5403,"name":"IndexAccess","src":"7179:13:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5404,"name":"Literal","src":"7216:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":5405,"name":"Literal","src":"7246:4:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5325,"type":"bool[] calldata","value":"_loadable"},"id":5406,"name":"Identifier","src":"7278:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5407,"name":"Identifier","src":"7288:1:29"}],"id":5408,"name":"IndexAccess","src":"7278:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5328,"type":"bool[] calldata","value":"_redeemable"},"id":5409,"name":"Identifier","src":"7320:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5410,"name":"Identifier","src":"7332:1:29"}],"id":5411,"name":"IndexAccess","src":"7320:14:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5330,"type":"uint256","value":"_lastUpdate"},"id":5412,"name":"Identifier","src":"7364:11:29"}],"id":5413,"name":"FunctionCall","src":"7112:278:29"}],"id":5414,"name":"Assignment","src":"7084:306:29"}],"id":5415,"name":"ExpressionStatement","src":"7084:306:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5416,"name":"Identifier","src":"7462:18:29"}],"id":5418,"name":"MemberAccess","src":"7462:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5419,"name":"Identifier","src":"7486:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5420,"name":"Identifier","src":"7494:1:29"}],"id":5421,"name":"IndexAccess","src":"7486:10:29"}],"id":5422,"name":"FunctionCall","src":"7462:35:29"}],"id":5423,"name":"ExpressionStatement","src":"7462:35:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5328,"type":"bool[] calldata","value":"_redeemable"},"id":5424,"name":"Identifier","src":"7587:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5425,"name":"Identifier","src":"7599:1:29"}],"id":5426,"name":"IndexAccess","src":"7587:14:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5427,"name":"Identifier","src":"7621:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5428,"name":"Identifier","src":"7642:18:29"}],"id":5429,"name":"MemberAccess","src":"7642:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5430,"name":"Literal","src":"7665:1:29"}],"id":5431,"name":"FunctionCall","src":"7642:25:29"}],"id":5432,"name":"Assignment","src":"7621:46:29"}],"id":5433,"name":"ExpressionStatement","src":"7621:46:29"}],"id":5434,"name":"Block","src":"7603:79:29"}],"id":5435,"name":"IfStatement","src":"7583:99:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5162,"type":"function (address,address,string memory,uint256,bool,bool)","value":"AddedToken"},"id":5436,"name":"Identifier","src":"7742:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5437,"name":"Identifier","src":"7753:3:29"}],"id":5438,"name":"MemberAccess","src":"7753:10:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5316,"type":"address[] calldata","value":"_tokens"},"id":5439,"name":"Identifier","src":"7765:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5440,"name":"Identifier","src":"7773:1:29"}],"id":5441,"name":"IndexAccess","src":"7765:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5385,"type":"string memory","value":"symbol"},"id":5442,"name":"Identifier","src":"7777:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5322,"type":"uint256[] calldata","value":"_magnitude"},"id":5443,"name":"Identifier","src":"7785:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5444,"name":"Identifier","src":"7796:1:29"}],"id":5445,"name":"IndexAccess","src":"7785:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5325,"type":"bool[] calldata","value":"_loadable"},"id":5446,"name":"Identifier","src":"7800:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5447,"name":"Identifier","src":"7810:1:29"}],"id":5448,"name":"IndexAccess","src":"7800:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5328,"type":"bool[] calldata","value":"_redeemable"},"id":5449,"name":"Identifier","src":"7814:11:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5363,"type":"uint256","value":"i"},"id":5450,"name":"Identifier","src":"7826:1:29"}],"id":5451,"name":"IndexAccess","src":"7814:14:29"}],"id":5452,"name":"FunctionCall","src":"7742:87:29"}],"id":5453,"name":"EmitStatement","src":"7737:92:29"}],"id":5454,"name":"Block","src":"6755:1085:29"}],"id":5455,"name":"ForStatement","src":"6710:1130:29"}],"id":5456,"name":"Block","src":"6297:1549:29"}],"id":5457,"name":"FunctionDefinition","src":"6040:1806:29"},{"attributes":{"documentation":"@notice Remove ERC20 tokens from the whitelist of tokens.\n @param _tokens ERC20 token contract addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"removeTokens","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokens","scope":5558,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5458,"name":"ElementaryTypeName","src":"7995:7:29"}],"id":5459,"name":"ArrayTypeName","src":"7995:9:29"}],"id":5460,"name":"VariableDeclaration","src":"7995:26:29"}],"id":5461,"name":"ParameterList","src":"7994:28:29"},{"attributes":{"parameters":[null]},"children":[],"id":5464,"name":"ParameterList","src":"8042:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5462,"name":"Identifier","src":"8032:9:29"}],"id":5463,"name":"ModifierInvocation","src":"8032:9:29"},{"children":[{"children":[{"attributes":{"assignments":[5466]},"children":[{"attributes":{"constant":false,"name":"i","scope":5556,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5465,"name":"ElementaryTypeName","src":"8160:7:29"}],"id":5466,"name":"VariableDeclaration","src":"8160:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5467,"name":"Literal","src":"8172:1:29"}],"id":5468,"name":"VariableDeclarationStatement","src":"8160:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5466,"type":"uint256","value":"i"},"id":5469,"name":"Identifier","src":"8175:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"address[] calldata","value":"_tokens"},"id":5470,"name":"Identifier","src":"8179:7:29"}],"id":5471,"name":"MemberAccess","src":"8179:14:29"}],"id":5472,"name":"BinaryOperation","src":"8175:18:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5466,"type":"uint256","value":"i"},"id":5473,"name":"Identifier","src":"8195:1:29"}],"id":5474,"name":"UnaryOperation","src":"8195:3:29"}],"id":5475,"name":"ExpressionStatement","src":"8195:3:29"},{"children":[{"attributes":{"assignments":[5477]},"children":[{"attributes":{"constant":false,"name":"token","scope":5555,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5476,"name":"ElementaryTypeName","src":"8254:7:29"}],"id":5477,"name":"VariableDeclaration","src":"8254:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5460,"type":"address[] calldata","value":"_tokens"},"id":5478,"name":"Identifier","src":"8270:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5466,"type":"uint256","value":"i"},"id":5479,"name":"Identifier","src":"8278:1:29"}],"id":5480,"name":"IndexAccess","src":"8270:10:29"}],"id":5481,"name":"VariableDeclarationStatement","src":"8254:26:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5482,"name":"Identifier","src":"8363:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5483,"name":"Identifier","src":"8371:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5484,"name":"Identifier","src":"8385:5:29"}],"id":5485,"name":"IndexAccess","src":"8371:20:29"}],"id":5486,"name":"MemberAccess","src":"8371:30:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5487,"name":"Literal","src":"8403:24:29"}],"id":5488,"name":"FunctionCall","src":"8363:65:29"}],"id":5489,"name":"ExpressionStatement","src":"8363:65:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5490,"name":"Identifier","src":"8518:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5491,"name":"Identifier","src":"8532:5:29"}],"id":5492,"name":"IndexAccess","src":"8518:20:29"}],"id":5493,"name":"MemberAccess","src":"8518:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5494,"name":"Identifier","src":"8569:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5495,"name":"Identifier","src":"8590:18:29"}],"id":5496,"name":"MemberAccess","src":"8590:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5497,"name":"Literal","src":"8613:1:29"}],"id":5498,"name":"FunctionCall","src":"8590:25:29"}],"id":5499,"name":"Assignment","src":"8569:46:29"}],"id":5500,"name":"ExpressionStatement","src":"8569:46:29"}],"id":5501,"name":"Block","src":"8551:79:29"}],"id":5502,"name":"IfStatement","src":"8514:116:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5503,"name":"Identifier","src":"8690:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5504,"name":"Identifier","src":"8704:5:29"}],"id":5505,"name":"IndexAccess","src":"8690:20:29"}],"id":5506,"name":"UnaryOperation","src":"8683:27:29"}],"id":5507,"name":"ExpressionStatement","src":"8683:27:29"},{"children":[{"attributes":{"assignments":[5509]},"children":[{"attributes":{"constant":false,"name":"j","scope":5543,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5508,"name":"ElementaryTypeName","src":"8792:7:29"}],"id":5509,"name":"VariableDeclaration","src":"8792:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5510,"name":"Literal","src":"8804:1:29"}],"id":5511,"name":"VariableDeclarationStatement","src":"8792:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5509,"type":"uint256","value":"j"},"id":5512,"name":"Identifier","src":"8807:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5513,"name":"Identifier","src":"8811:18:29"}],"id":5514,"name":"MemberAccess","src":"8811:25:29"}],"id":5515,"name":"MemberAccess","src":"8811:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5516,"name":"Literal","src":"8841:1:29"}],"id":5517,"name":"FunctionCall","src":"8811:32:29"}],"id":5518,"name":"BinaryOperation","src":"8807:36:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5509,"type":"uint256","value":"j"},"id":5519,"name":"Identifier","src":"8845:1:29"}],"id":5520,"name":"UnaryOperation","src":"8845:3:29"}],"id":5521,"name":"ExpressionStatement","src":"8845:3:29"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5522,"name":"Identifier","src":"8872:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5509,"type":"uint256","value":"j"},"id":5523,"name":"Identifier","src":"8891:1:29"}],"id":5524,"name":"IndexAccess","src":"8872:21:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5525,"name":"Identifier","src":"8897:5:29"}],"id":5526,"name":"BinaryOperation","src":"8872:30:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5527,"name":"Identifier","src":"8926:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5509,"type":"uint256","value":"j"},"id":5528,"name":"Identifier","src":"8945:1:29"}],"id":5529,"name":"IndexAccess","src":"8926:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5530,"name":"Identifier","src":"8950:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5531,"name":"Identifier","src":"8969:18:29"}],"id":5532,"name":"MemberAccess","src":"8969:25:29"}],"id":5533,"name":"MemberAccess","src":"8969:29:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5534,"name":"Literal","src":"8999:1:29"}],"id":5535,"name":"FunctionCall","src":"8969:32:29"}],"id":5536,"name":"IndexAccess","src":"8950:52:29"}],"id":5537,"name":"Assignment","src":"8926:76:29"}],"id":5538,"name":"ExpressionStatement","src":"8926:76:29"},{"id":5539,"name":"Break","src":"9024:5:29"}],"id":5540,"name":"Block","src":"8904:144:29"}],"id":5541,"name":"IfStatement","src":"8868:180:29"}],"id":5542,"name":"Block","src":"8850:212:29"}],"id":5543,"name":"ForStatement","src":"8787:275:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5544,"name":"Identifier","src":"9075:18:29"}],"id":5546,"name":"MemberAccess","src":"9075:25:29"}],"id":5547,"name":"UnaryOperation","src":"9075:27:29"}],"id":5548,"name":"ExpressionStatement","src":"9075:27:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":5168,"type":"function (address,address)","value":"RemovedToken"},"id":5549,"name":"Identifier","src":"9162:12:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5550,"name":"Identifier","src":"9175:3:29"}],"id":5551,"name":"MemberAccess","src":"9175:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5477,"type":"address","value":"token"},"id":5552,"name":"Identifier","src":"9187:5:29"}],"id":5553,"name":"FunctionCall","src":"9162:31:29"}],"id":5554,"name":"EmitStatement","src":"9157:36:29"}],"id":5555,"name":"Block","src":"8200:1004:29"}],"id":5556,"name":"ForStatement","src":"8155:1049:29"}],"id":5557,"name":"Block","src":"8042:1168:29"}],"id":5558,"name":"FunctionDefinition","src":"7973:1237:29"},{"attributes":{"documentation":"@notice based on the method it returns the recipient address and amount/value, ERC20 specific.\n @param _data is the transaction payload.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getERC20RecipientAndAmount","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5671,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5559,"name":"ElementaryTypeName","src":"9404:7:29"}],"id":5560,"name":"VariableDeclaration","src":"9404:14:29"},{"attributes":{"constant":false,"name":"_data","scope":5671,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":5561,"name":"ElementaryTypeName","src":"9420:5:29"}],"id":5562,"name":"VariableDeclaration","src":"9420:20:29"}],"id":5563,"name":"ParameterList","src":"9403:38:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5671,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5564,"name":"ElementaryTypeName","src":"9465:7:29"}],"id":5565,"name":"VariableDeclaration","src":"9465:7:29"},{"attributes":{"constant":false,"name":"","scope":5671,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5566,"name":"ElementaryTypeName","src":"9474:7:29"}],"id":5567,"name":"VariableDeclaration","src":"9474:7:29"}],"id":5568,"name":"ParameterList","src":"9464:18:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_e90633c3d660960852d1ac0beea38e2f1d616322b1c4fbbdaa186386f1718472","typeString":"literal_string \"not enough method-encoding bytes\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5569,"name":"Identifier","src":"9669:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5570,"name":"Identifier","src":"9677:5:29"}],"id":5571,"name":"MemberAccess","src":"9677:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5572,"name":"Literal","src":"9693:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5573,"name":"Literal","src":"9697:2:29"}],"id":5574,"name":"BinaryOperation","src":"9693:6:29"}],"id":5575,"name":"BinaryOperation","src":"9677:22:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough method-encoding bytes\"","value":"not enough method-encoding bytes"},"id":5576,"name":"Literal","src":"9701:34:29"}],"id":5577,"name":"FunctionCall","src":"9669:67:29"}],"id":5578,"name":"ExpressionStatement","src":"9669:67:29"},{"attributes":{"assignments":[5580]},"children":[{"attributes":{"constant":false,"name":"signature","scope":5670,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5579,"name":"ElementaryTypeName","src":"9782:6:29"}],"id":5580,"name":"VariableDeclaration","src":"9782:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToBytes4","referencedDeclaration":9079,"type":"function (bytes memory,uint256) pure returns (bytes4)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5581,"name":"Identifier","src":"9801:5:29"}],"id":5582,"name":"MemberAccess","src":"9801:20:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5583,"name":"Literal","src":"9822:1:29"}],"id":5584,"name":"FunctionCall","src":"9801:23:29"}],"id":5585,"name":"VariableDeclarationStatement","src":"9782:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6cd7db326b1c3288fb2d570f8e6dc0541eae94a15ccc698883c20fd89936a43f","typeString":"literal_string \"unsupported method\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5586,"name":"Identifier","src":"9877:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes4","typeString":"bytes4"}],"overloadedDeclarations":[null],"referencedDeclaration":5972,"type":"function (address,bytes4) view returns (bool)","value":"isERC20MethodSupported"},"id":5587,"name":"Identifier","src":"9885:22:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5560,"type":"address","value":"_token"},"id":5588,"name":"Identifier","src":"9908:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5580,"type":"bytes4","value":"signature"},"id":5589,"name":"Identifier","src":"9916:9:29"}],"id":5590,"name":"FunctionCall","src":"9885:41:29"},{"attributes":{"argumentTypes":null,"hexvalue":"756e737570706f72746564206d6574686f64","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"unsupported method\"","value":"unsupported method"},"id":5591,"name":"Literal","src":"9928:20:29"}],"id":5592,"name":"FunctionCall","src":"9877:72:29"}],"id":5593,"name":"ExpressionStatement","src":"9877:72:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5580,"type":"bytes4","value":"signature"},"id":5594,"name":"Identifier","src":"10048:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5202,"type":"bytes4","value":"_BURN"},"id":5595,"name":"Identifier","src":"10061:5:29"}],"id":5596,"name":"BinaryOperation","src":"10048:18:29"},{"children":[{"attributes":{"functionReturnParameters":5568},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5560,"type":"address","value":"_token"},"id":5597,"name":"Identifier","src":"10133:6:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_4_by_1","typeString":"int_const 4"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9113,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5598,"name":"Identifier","src":"10141:5:29"}],"id":5599,"name":"MemberAccess","src":"10141:21:29"},{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5600,"name":"Literal","src":"10163:1:29"}],"id":5601,"name":"FunctionCall","src":"10141:24:29"}],"id":5602,"name":"TupleExpression","src":"10132:34:29"}],"id":5603,"name":"Return","src":"10125:41:29"}],"id":5604,"name":"Block","src":"10068:109:29"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5580,"type":"bytes4","value":"signature"},"id":5605,"name":"Identifier","src":"10187:9:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5208,"type":"bytes4","value":"_TRANSFER_FROM"},"id":5606,"name":"Identifier","src":"10200:14:29"}],"id":5607,"name":"BinaryOperation","src":"10187:27:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9f91574bb934f32e1252cc11a001394ab43c496905d35259d3b5a9eb45b6ce2e","typeString":"literal_string \"not enough data for transferFrom\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5608,"name":"Identifier","src":"10301:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5609,"name":"Identifier","src":"10309:5:29"}],"id":5610,"name":"MemberAccess","src":"10309:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_100_by_1","typeString":"int_const 100"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 100"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5611,"name":"Literal","src":"10325:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5612,"name":"Literal","src":"10329:2:29"}],"id":5613,"name":"BinaryOperation","src":"10325:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5614,"name":"Literal","src":"10334:2:29"}],"id":5615,"name":"BinaryOperation","src":"10325:11:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5616,"name":"Literal","src":"10339:2:29"}],"id":5617,"name":"BinaryOperation","src":"10325:16:29"}],"id":5618,"name":"BinaryOperation","src":"10309:32:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transferFrom\"","value":"not enough data for transferFrom"},"id":5619,"name":"Literal","src":"10343:34:29"}],"id":5620,"name":"FunctionCall","src":"10301:77:29"}],"id":5621,"name":"ExpressionStatement","src":"10301:77:29"},{"attributes":{"functionReturnParameters":5568},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":9045,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5622,"name":"Identifier","src":"10400:5:29"}],"id":5623,"name":"MemberAccess","src":"10400:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_48_by_1","typeString":"int_const 48"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 48"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5624,"name":"Literal","src":"10422:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5625,"name":"Literal","src":"10426:2:29"}],"id":5626,"name":"BinaryOperation","src":"10422:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5627,"name":"Literal","src":"10431:2:29"}],"id":5628,"name":"BinaryOperation","src":"10422:11:29"}],"id":5629,"name":"FunctionCall","src":"10400:34:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9113,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5630,"name":"Identifier","src":"10436:5:29"}],"id":5631,"name":"MemberAccess","src":"10436:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5632,"name":"Literal","src":"10458:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5633,"name":"Literal","src":"10462:2:29"}],"id":5634,"name":"BinaryOperation","src":"10458:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5635,"name":"Literal","src":"10467:2:29"}],"id":5636,"name":"BinaryOperation","src":"10458:11:29"}],"id":5637,"name":"FunctionCall","src":"10436:34:29"}],"id":5638,"name":"TupleExpression","src":"10399:72:29"}],"id":5639,"name":"Return","src":"10392:79:29"}],"id":5640,"name":"Block","src":"10216:266:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2c7bcfee752239b03c5946e0eb7379fda02ba45f49f5f2be9b428df690d8f84c","typeString":"literal_string \"not enough data for transfer/appprove\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5641,"name":"Identifier","src":"10590:7:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5642,"name":"Identifier","src":"10598:5:29"}],"id":5643,"name":"MemberAccess","src":"10598:12:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_68_by_1","typeString":"int_const 68"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 68"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5644,"name":"Literal","src":"10614:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5645,"name":"Literal","src":"10618:2:29"}],"id":5646,"name":"BinaryOperation","src":"10614:6:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5647,"name":"Literal","src":"10623:2:29"}],"id":5648,"name":"BinaryOperation","src":"10614:11:29"}],"id":5649,"name":"BinaryOperation","src":"10598:27:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f7665","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not enough data for transfer/appprove\"","value":"not enough data for transfer/appprove"},"id":5650,"name":"Literal","src":"10627:39:29"}],"id":5651,"name":"FunctionCall","src":"10590:77:29"}],"id":5652,"name":"ExpressionStatement","src":"10590:77:29"},{"attributes":{"functionReturnParameters":5568},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToAddress","referencedDeclaration":9045,"type":"function (bytes memory,uint256) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5653,"name":"Identifier","src":"10689:5:29"}],"id":5654,"name":"MemberAccess","src":"10689:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_16_by_1","typeString":"int_const 16"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 16"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5655,"name":"Literal","src":"10711:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3132","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 12","value":"12"},"id":5656,"name":"Literal","src":"10715:2:29"}],"id":5657,"name":"BinaryOperation","src":"10711:6:29"}],"id":5658,"name":"FunctionCall","src":"10689:29:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"_bytesToUint256","referencedDeclaration":9113,"type":"function (bytes memory,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5562,"type":"bytes calldata","value":"_data"},"id":5659,"name":"Identifier","src":"10720:5:29"}],"id":5660,"name":"MemberAccess","src":"10720:21:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_rational_36_by_1","typeString":"int_const 36"},"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"operator":"+","type":"int_const 36"},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"34","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 4","value":"4"},"id":5661,"name":"Literal","src":"10742:1:29"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":5662,"name":"Literal","src":"10746:2:29"}],"id":5663,"name":"BinaryOperation","src":"10742:6:29"}],"id":5664,"name":"FunctionCall","src":"10720:29:29"}],"id":5665,"name":"TupleExpression","src":"10688:62:29"}],"id":5666,"name":"Return","src":"10681:69:29"}],"id":5667,"name":"Block","src":"10488:273:29"}],"id":5668,"name":"IfStatement","src":"10183:578:29"}],"id":5669,"name":"IfStatement","src":"10044:717:29"}],"id":5670,"name":"Block","src":"9483:1284:29"}],"id":5671,"name":"FunctionDefinition","src":"9368:1399:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is loadable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenLoadable","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5703,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5672,"name":"ElementaryTypeName","src":"10866:7:29"}],"id":5673,"name":"VariableDeclaration","src":"10866:14:29"},{"attributes":{"constant":false,"name":"_loadable","scope":5703,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5674,"name":"ElementaryTypeName","src":"10882:4:29"}],"id":5675,"name":"VariableDeclaration","src":"10882:14:29"}],"id":5676,"name":"ParameterList","src":"10865:32:29"},{"attributes":{"parameters":[null]},"children":[],"id":5679,"name":"ParameterList","src":"10917:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5677,"name":"Identifier","src":"10907:9:29"}],"id":5678,"name":"ModifierInvocation","src":"10907:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5680,"name":"Identifier","src":"10969:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5681,"name":"Identifier","src":"10977:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5673,"type":"address","value":"_token"},"id":5682,"name":"Identifier","src":"10991:6:29"}],"id":5683,"name":"IndexAccess","src":"10977:21:29"}],"id":5684,"name":"MemberAccess","src":"10977:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5685,"name":"Literal","src":"11010:24:29"}],"id":5686,"name":"FunctionCall","src":"10969:66:29"}],"id":5687,"name":"ExpressionStatement","src":"10969:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"loadable","referencedDeclaration":5218,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5688,"name":"Identifier","src":"11108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5673,"type":"address","value":"_token"},"id":5689,"name":"Identifier","src":"11122:6:29"}],"id":5690,"name":"IndexAccess","src":"11108:21:29"}],"id":5691,"name":"MemberAccess","src":"11108:30:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5675,"type":"bool","value":"_loadable"},"id":5692,"name":"Identifier","src":"11141:9:29"}],"id":5693,"name":"Assignment","src":"11108:42:29"}],"id":5694,"name":"ExpressionStatement","src":"11108:42:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5140,"type":"function (address,address,bool)","value":"UpdatedTokenLoadable"},"id":5695,"name":"Identifier","src":"11166:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5696,"name":"Identifier","src":"11187:3:29"}],"id":5697,"name":"MemberAccess","src":"11187:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5673,"type":"address","value":"_token"},"id":5698,"name":"Identifier","src":"11199:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5675,"type":"bool","value":"_loadable"},"id":5699,"name":"Identifier","src":"11207:9:29"}],"id":5700,"name":"FunctionCall","src":"11166:51:29"}],"id":5701,"name":"EmitStatement","src":"11161:56:29"}],"id":5702,"name":"Block","src":"10917:307:29"}],"id":5703,"name":"FunctionDefinition","src":"10840:384:29"},{"attributes":{"documentation":"@notice Toggles whether or not a token is redeemable or not.","implemented":true,"isConstructor":false,"kind":"function","name":"setTokenRedeemable","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5735,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5704,"name":"ElementaryTypeName","src":"11327:7:29"}],"id":5705,"name":"VariableDeclaration","src":"11327:14:29"},{"attributes":{"constant":false,"name":"_redeemable","scope":5735,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5706,"name":"ElementaryTypeName","src":"11343:4:29"}],"id":5707,"name":"VariableDeclaration","src":"11343:16:29"}],"id":5708,"name":"ParameterList","src":"11326:34:29"},{"attributes":{"parameters":[null]},"children":[],"id":5711,"name":"ParameterList","src":"11380:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5709,"name":"Identifier","src":"11370:9:29"}],"id":5710,"name":"ModifierInvocation","src":"11370:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5712,"name":"Identifier","src":"11432:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5713,"name":"Identifier","src":"11440:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5705,"type":"address","value":"_token"},"id":5714,"name":"Identifier","src":"11454:6:29"}],"id":5715,"name":"IndexAccess","src":"11440:21:29"}],"id":5716,"name":"MemberAccess","src":"11440:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5717,"name":"Literal","src":"11473:24:29"}],"id":5718,"name":"FunctionCall","src":"11432:66:29"}],"id":5719,"name":"ExpressionStatement","src":"11432:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5720,"name":"Identifier","src":"11573:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5705,"type":"address","value":"_token"},"id":5721,"name":"Identifier","src":"11587:6:29"}],"id":5722,"name":"IndexAccess","src":"11573:21:29"}],"id":5723,"name":"MemberAccess","src":"11573:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5707,"type":"bool","value":"_redeemable"},"id":5724,"name":"Identifier","src":"11608:11:29"}],"id":5725,"name":"Assignment","src":"11573:46:29"}],"id":5726,"name":"ExpressionStatement","src":"11573:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bool","typeString":"bool"}],"overloadedDeclarations":[null],"referencedDeclaration":5148,"type":"function (address,address,bool)","value":"UpdatedTokenRedeemable"},"id":5727,"name":"Identifier","src":"11635:22:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5728,"name":"Identifier","src":"11658:3:29"}],"id":5729,"name":"MemberAccess","src":"11658:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5705,"type":"address","value":"_token"},"id":5730,"name":"Identifier","src":"11670:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5707,"type":"bool","value":"_redeemable"},"id":5731,"name":"Identifier","src":"11678:11:29"}],"id":5732,"name":"FunctionCall","src":"11635:55:29"}],"id":5733,"name":"EmitStatement","src":"11630:60:29"}],"id":5734,"name":"Block","src":"11380:317:29"}],"id":5735,"name":"FunctionDefinition","src":"11299:398:29"},{"attributes":{"documentation":"@notice Update ERC20 token exchange rate.\n @param _token ERC20 token contract address.\n @param _rate ERC20 token exchange rate in wei.\n @param _updateDate date for the token updates. This will be compared to when oracle updates are received.","implemented":true,"isConstructor":false,"kind":"function","name":"updateTokenRate","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5776,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5736,"name":"ElementaryTypeName","src":"11999:7:29"}],"id":5737,"name":"VariableDeclaration","src":"11999:14:29"},{"attributes":{"constant":false,"name":"_rate","scope":5776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5738,"name":"ElementaryTypeName","src":"12015:7:29"}],"id":5739,"name":"VariableDeclaration","src":"12015:13:29"},{"attributes":{"constant":false,"name":"_updateDate","scope":5776,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5740,"name":"ElementaryTypeName","src":"12030:7:29"}],"id":5741,"name":"VariableDeclaration","src":"12030:19:29"}],"id":5742,"name":"ParameterList","src":"11998:52:29"},{"attributes":{"parameters":[null]},"children":[],"id":5745,"name":"ParameterList","src":"12078:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5313,"type":"modifier ()","value":"onlyAdminOrOracle"},"id":5743,"name":"Identifier","src":"12060:17:29"}],"id":5744,"name":"ModifierInvocation","src":"12060:17:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d487155ec60125f09758305e6de21696dc3e345a5b0edca0b920691dd5be4852","typeString":"literal_string \"token is not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5746,"name":"Identifier","src":"12130:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5747,"name":"Identifier","src":"12138:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"address","value":"_token"},"id":5748,"name":"Identifier","src":"12152:6:29"}],"id":5749,"name":"IndexAccess","src":"12138:21:29"}],"id":5750,"name":"MemberAccess","src":"12138:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206973206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token is not available\"","value":"token is not available"},"id":5751,"name":"Literal","src":"12171:24:29"}],"id":5752,"name":"FunctionCall","src":"12130:66:29"}],"id":5753,"name":"ExpressionStatement","src":"12130:66:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"rate","referencedDeclaration":5214,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5754,"name":"Identifier","src":"12242:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"address","value":"_token"},"id":5755,"name":"Identifier","src":"12256:6:29"}],"id":5756,"name":"IndexAccess","src":"12242:21:29"}],"id":5757,"name":"MemberAccess","src":"12242:26:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"uint256","value":"_rate"},"id":5758,"name":"Identifier","src":"12271:5:29"}],"id":5759,"name":"Assignment","src":"12242:34:29"}],"id":5760,"name":"ExpressionStatement","src":"12242:34:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"lastUpdate","referencedDeclaration":5222,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5761,"name":"Identifier","src":"12339:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"address","value":"_token"},"id":5762,"name":"Identifier","src":"12353:6:29"}],"id":5763,"name":"IndexAccess","src":"12339:21:29"}],"id":5764,"name":"MemberAccess","src":"12339:32:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5741,"type":"uint256","value":"_updateDate"},"id":5765,"name":"Identifier","src":"12374:11:29"}],"id":5766,"name":"Assignment","src":"12339:46:29"}],"id":5767,"name":"ExpressionStatement","src":"12339:46:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5132,"type":"function (address,address,uint256)","value":"UpdatedTokenRate"},"id":5768,"name":"Identifier","src":"12439:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":5769,"name":"Identifier","src":"12456:3:29"}],"id":5770,"name":"MemberAccess","src":"12456:10:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5737,"type":"address","value":"_token"},"id":5771,"name":"Identifier","src":"12468:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5739,"type":"uint256","value":"_rate"},"id":5772,"name":"Identifier","src":"12476:5:29"}],"id":5773,"name":"FunctionCall","src":"12439:43:29"}],"id":5774,"name":"EmitStatement","src":"12434:48:29"}],"id":5775,"name":"Block","src":"12078:411:29"}],"id":5776,"name":"FunctionDefinition","src":"11974:515:29"},{"attributes":{"documentation":"/ @notice Withdraw tokens from the smart contract to the specified account.","implemented":true,"isConstructor":false,"kind":"function","name":"claim","scope":6010,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":5800,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":5777,"name":"ElementaryTypeName","src":"12593:15:29"}],"id":5778,"name":"VariableDeclaration","src":"12593:19:29"},{"attributes":{"constant":false,"name":"_asset","scope":5800,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5779,"name":"ElementaryTypeName","src":"12614:7:29"}],"id":5780,"name":"VariableDeclaration","src":"12614:14:29"},{"attributes":{"constant":false,"name":"_amount","scope":5800,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5781,"name":"ElementaryTypeName","src":"12630:7:29"}],"id":5782,"name":"VariableDeclaration","src":"12630:15:29"}],"id":5783,"name":"ParameterList","src":"12592:54:29"},{"attributes":{"parameters":[null]},"children":[],"id":5786,"name":"ParameterList","src":"12666:0:29"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":282,"type":"modifier ()","value":"onlyAdmin"},"id":5784,"name":"Identifier","src":"12656:9:29"}],"id":5785,"name":"ModifierInvocation","src":"12656:9:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4166,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":5787,"name":"Identifier","src":"12676:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5778,"type":"address payable","value":"_to"},"id":5788,"name":"Identifier","src":"12690:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5780,"type":"address","value":"_asset"},"id":5789,"name":"Identifier","src":"12695:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5782,"type":"uint256","value":"_amount"},"id":5790,"name":"Identifier","src":"12703:7:29"}],"id":5791,"name":"FunctionCall","src":"12676:35:29"}],"id":5792,"name":"ExpressionStatement","src":"12676:35:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":5196,"type":"function (address,address,uint256)","value":"Claimed"},"id":5793,"name":"Identifier","src":"12726:7:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5778,"type":"address payable","value":"_to"},"id":5794,"name":"Identifier","src":"12734:3:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5780,"type":"address","value":"_asset"},"id":5795,"name":"Identifier","src":"12739:6:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5782,"type":"uint256","value":"_amount"},"id":5796,"name":"Identifier","src":"12747:7:29"}],"id":5797,"name":"FunctionCall","src":"12726:29:29"}],"id":5798,"name":"EmitStatement","src":"12721:34:29"}],"id":5799,"name":"Block","src":"12666:96:29"}],"id":5800,"name":"FunctionDefinition","src":"12578:184:29"},{"attributes":{"documentation":"@notice This returns all of the fields for a given token.\n @param _a is the address of a given token.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getTokenInfo","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_a","scope":5842,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5801,"name":"ElementaryTypeName","src":"13336:7:29"}],"id":5802,"name":"VariableDeclaration","src":"13336:10:29"}],"id":5803,"name":"ParameterList","src":"13335:12:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5804,"name":"ElementaryTypeName","src":"13371:6:29"}],"id":5805,"name":"VariableDeclaration","src":"13371:13:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5806,"name":"ElementaryTypeName","src":"13386:7:29"}],"id":5807,"name":"VariableDeclaration","src":"13386:7:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5808,"name":"ElementaryTypeName","src":"13395:7:29"}],"id":5809,"name":"VariableDeclaration","src":"13395:7:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5810,"name":"ElementaryTypeName","src":"13404:4:29"}],"id":5811,"name":"VariableDeclaration","src":"13404:4:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5812,"name":"ElementaryTypeName","src":"13410:4:29"}],"id":5813,"name":"VariableDeclaration","src":"13410:4:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5814,"name":"ElementaryTypeName","src":"13416:4:29"}],"id":5815,"name":"VariableDeclaration","src":"13416:4:29"},{"attributes":{"constant":false,"name":"","scope":5842,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5816,"name":"ElementaryTypeName","src":"13422:7:29"}],"id":5817,"name":"VariableDeclaration","src":"13422:7:29"}],"id":5818,"name":"ParameterList","src":"13370:60:29"},{"children":[{"attributes":{"assignments":[5820]},"children":[{"attributes":{"constant":false,"name":"tokenInfo","scope":5841,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":5223,"type":"struct TokenWhitelist.Token"},"id":5819,"name":"UserDefinedTypeName","src":"13441:5:29"}],"id":5820,"name":"VariableDeclaration","src":"13441:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5821,"name":"Identifier","src":"13467:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5802,"type":"address","value":"_a"},"id":5822,"name":"Identifier","src":"13481:2:29"}],"id":5823,"name":"IndexAccess","src":"13467:17:29"}],"id":5824,"name":"VariableDeclarationStatement","src":"13441:43:29"},{"attributes":{"functionReturnParameters":5818},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":5210,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5825,"name":"Identifier","src":"13502:9:29"}],"id":5826,"name":"MemberAccess","src":"13502:16:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":5212,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5827,"name":"Identifier","src":"13520:9:29"}],"id":5828,"name":"MemberAccess","src":"13520:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":5214,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5829,"name":"Identifier","src":"13541:9:29"}],"id":5830,"name":"MemberAccess","src":"13541:14:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5831,"name":"Identifier","src":"13557:9:29"}],"id":5832,"name":"MemberAccess","src":"13557:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":5218,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5833,"name":"Identifier","src":"13578:9:29"}],"id":5834,"name":"MemberAccess","src":"13578:18:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5835,"name":"Identifier","src":"13598:9:29"}],"id":5836,"name":"MemberAccess","src":"13598:20:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":5222,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5820,"type":"struct TokenWhitelist.Token storage pointer","value":"tokenInfo"},"id":5837,"name":"Identifier","src":"13620:9:29"}],"id":5838,"name":"MemberAccess","src":"13620:20:29"}],"id":5839,"name":"TupleExpression","src":"13501:140:29"}],"id":5840,"name":"Return","src":"13494:147:29"}],"id":5841,"name":"Block","src":"13431:217:29"}],"id":5842,"name":"FunctionDefinition","src":"13314:334:29"},{"attributes":{"documentation":"@notice This returns all of the fields for our StableCoin.\n @return string of the token's symbol.\n @return uint of the token's magnitude.\n @return uint of the token's exchange rate to ETH.\n @return bool whether the token is available.\n @return bool whether the token is loadable to the TokenCard.\n @return bool whether the token is redeemable to the TKN Holder Contract.\n @return uint of the lastUpdated time of the token's exchange rate.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"getStablecoinInfo","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5843,"name":"ParameterList","src":"14176:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"memory","type":"string","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"string","type":"string"},"id":5844,"name":"ElementaryTypeName","src":"14202:6:29"}],"id":5845,"name":"VariableDeclaration","src":"14202:13:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5846,"name":"ElementaryTypeName","src":"14217:7:29"}],"id":5847,"name":"VariableDeclaration","src":"14217:7:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5848,"name":"ElementaryTypeName","src":"14226:7:29"}],"id":5849,"name":"VariableDeclaration","src":"14226:7:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5850,"name":"ElementaryTypeName","src":"14235:4:29"}],"id":5851,"name":"VariableDeclaration","src":"14235:4:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5852,"name":"ElementaryTypeName","src":"14241:4:29"}],"id":5853,"name":"VariableDeclaration","src":"14241:4:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5854,"name":"ElementaryTypeName","src":"14247:4:29"}],"id":5855,"name":"VariableDeclaration","src":"14247:4:29"},{"attributes":{"constant":false,"name":"","scope":5882,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5856,"name":"ElementaryTypeName","src":"14253:7:29"}],"id":5857,"name":"VariableDeclaration","src":"14253:7:29"}],"id":5858,"name":"ParameterList","src":"14201:60:29"},{"children":[{"attributes":{"assignments":[5860]},"children":[{"attributes":{"constant":false,"name":"stablecoinInfo","scope":5881,"stateVariable":false,"storageLocation":"storage","type":"struct TokenWhitelist.Token","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Token","referencedDeclaration":5223,"type":"struct TokenWhitelist.Token"},"id":5859,"name":"UserDefinedTypeName","src":"14272:5:29"}],"id":5860,"name":"VariableDeclaration","src":"14272:28:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5861,"name":"Identifier","src":"14303:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"address","value":"_stablecoin"},"id":5862,"name":"Identifier","src":"14317:11:29"}],"id":5863,"name":"IndexAccess","src":"14303:26:29"}],"id":5864,"name":"VariableDeclarationStatement","src":"14272:57:29"},{"attributes":{"functionReturnParameters":5858},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"tuple(string storage ref,uint256,uint256,bool,bool,bool,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"symbol","referencedDeclaration":5210,"type":"string storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5865,"name":"Identifier","src":"14360:14:29"}],"id":5866,"name":"MemberAccess","src":"14360:21:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"magnitude","referencedDeclaration":5212,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5867,"name":"Identifier","src":"14395:14:29"}],"id":5868,"name":"MemberAccess","src":"14395:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"rate","referencedDeclaration":5214,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5869,"name":"Identifier","src":"14433:14:29"}],"id":5870,"name":"MemberAccess","src":"14433:19:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5871,"name":"Identifier","src":"14466:14:29"}],"id":5872,"name":"MemberAccess","src":"14466:24:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"loadable","referencedDeclaration":5218,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5873,"name":"Identifier","src":"14504:14:29"}],"id":5874,"name":"MemberAccess","src":"14504:23:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5875,"name":"Identifier","src":"14541:14:29"}],"id":5876,"name":"MemberAccess","src":"14541:25:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"lastUpdate","referencedDeclaration":5222,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5860,"type":"struct TokenWhitelist.Token storage pointer","value":"stablecoinInfo"},"id":5877,"name":"Identifier","src":"14580:14:29"}],"id":5878,"name":"MemberAccess","src":"14580:25:29"}],"id":5879,"name":"TupleExpression","src":"14346:269:29"}],"id":5880,"name":"Return","src":"14339:276:29"}],"id":5881,"name":"Block","src":"14262:360:29"}],"id":5882,"name":"FunctionDefinition","src":"14150:472:29"},{"attributes":{"documentation":"@notice This returns an array of all whitelisted token addresses.\n @return address[] of whitelisted tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"tokenAddressArray","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5883,"name":"ParameterList","src":"14777:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5891,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5884,"name":"ElementaryTypeName","src":"14803:7:29"}],"id":5885,"name":"ArrayTypeName","src":"14803:9:29"}],"id":5886,"name":"VariableDeclaration","src":"14803:16:29"}],"id":5887,"name":"ParameterList","src":"14802:18:29"},{"children":[{"attributes":{"functionReturnParameters":5887},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5888,"name":"Identifier","src":"14838:18:29"}],"id":5889,"name":"Return","src":"14831:25:29"}],"id":5890,"name":"Block","src":"14821:42:29"}],"id":5891,"name":"FunctionDefinition","src":"14751:112:29"},{"attributes":{"documentation":"@notice This returns an array of all redeemable token addresses.\n @return address[] of redeemable tokens.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableTokens","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5892,"name":"ParameterList","src":"15015:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5949,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5893,"name":"ElementaryTypeName","src":"15041:7:29"}],"id":5894,"name":"ArrayTypeName","src":"15041:9:29"}],"id":5895,"name":"VariableDeclaration","src":"15041:16:29"}],"id":5896,"name":"ParameterList","src":"15040:18:29"},{"children":[{"attributes":{"assignments":[5900]},"children":[{"attributes":{"constant":false,"name":"redeemableAddresses","scope":5948,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","type":"address"},"id":5898,"name":"ElementaryTypeName","src":"15069:7:29"}],"id":5899,"name":"ArrayTypeName","src":"15069:9:29"}],"id":5900,"name":"VariableDeclaration","src":"15069:36:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address[] memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (address[] memory)"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5901,"name":"ElementaryTypeName","src":"15112:7:29"}],"id":5902,"name":"ArrayTypeName","src":"15112:9:29"}],"id":5903,"name":"NewExpression","src":"15108:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5904,"name":"Identifier","src":"15122:18:29"}],"id":5905,"name":"FunctionCall","src":"15108:33:29"}],"id":5906,"name":"VariableDeclarationStatement","src":"15069:72:29"},{"attributes":{"assignments":[5908]},"children":[{"attributes":{"constant":false,"name":"redeemableIndex","scope":5948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5907,"name":"ElementaryTypeName","src":"15151:7:29"}],"id":5908,"name":"VariableDeclaration","src":"15151:23:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5909,"name":"Literal","src":"15177:1:29"}],"id":5910,"name":"VariableDeclarationStatement","src":"15151:27:29"},{"children":[{"attributes":{"assignments":[5912]},"children":[{"attributes":{"constant":false,"name":"i","scope":5945,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5911,"name":"ElementaryTypeName","src":"15193:7:29"}],"id":5912,"name":"VariableDeclaration","src":"15193:9:29"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":5913,"name":"Literal","src":"15205:1:29"}],"id":5914,"name":"VariableDeclarationStatement","src":"15193:13:29"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5912,"type":"uint256","value":"i"},"id":5915,"name":"Identifier","src":"15208:1:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5916,"name":"Identifier","src":"15212:18:29"}],"id":5917,"name":"MemberAccess","src":"15212:25:29"}],"id":5918,"name":"BinaryOperation","src":"15208:29:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5912,"type":"uint256","value":"i"},"id":5919,"name":"Identifier","src":"15239:1:29"}],"id":5920,"name":"UnaryOperation","src":"15239:3:29"}],"id":5921,"name":"ExpressionStatement","src":"15239:3:29"},{"children":[{"attributes":{"assignments":[5923]},"children":[{"attributes":{"constant":false,"name":"token","scope":5944,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5922,"name":"ElementaryTypeName","src":"15258:7:29"}],"id":5923,"name":"VariableDeclaration","src":"15258:13:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5234,"type":"address[] storage ref","value":"_tokenAddressArray"},"id":5924,"name":"Identifier","src":"15274:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5912,"type":"uint256","value":"i"},"id":5925,"name":"Identifier","src":"15293:1:29"}],"id":5926,"name":"IndexAccess","src":"15274:21:29"}],"id":5927,"name":"VariableDeclarationStatement","src":"15258:37:29"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"redeemable","referencedDeclaration":5220,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5928,"name":"Identifier","src":"15313:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5923,"type":"address","value":"token"},"id":5929,"name":"Identifier","src":"15327:5:29"}],"id":5930,"name":"IndexAccess","src":"15313:20:29"}],"id":5931,"name":"MemberAccess","src":"15313:31:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5900,"type":"address[] memory","value":"redeemableAddresses"},"id":5932,"name":"Identifier","src":"15364:19:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5908,"type":"uint256","value":"redeemableIndex"},"id":5933,"name":"Identifier","src":"15384:15:29"}],"id":5934,"name":"IndexAccess","src":"15364:36:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5923,"type":"address","value":"token"},"id":5935,"name":"Identifier","src":"15403:5:29"}],"id":5936,"name":"Assignment","src":"15364:44:29"}],"id":5937,"name":"ExpressionStatement","src":"15364:44:29"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5908,"type":"uint256","value":"redeemableIndex"},"id":5938,"name":"Identifier","src":"15426:15:29"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":5939,"name":"Literal","src":"15445:1:29"}],"id":5940,"name":"Assignment","src":"15426:20:29"}],"id":5941,"name":"ExpressionStatement","src":"15426:20:29"}],"id":5942,"name":"Block","src":"15346:115:29"}],"id":5943,"name":"IfStatement","src":"15309:152:29"}],"id":5944,"name":"Block","src":"15244:227:29"}],"id":5945,"name":"ForStatement","src":"15188:283:29"},{"attributes":{"functionReturnParameters":5896},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5900,"type":"address[] memory","value":"redeemableAddresses"},"id":5946,"name":"Identifier","src":"15487:19:29"}],"id":5947,"name":"Return","src":"15480:26:29"}],"id":5948,"name":"Block","src":"15059:454:29"}],"id":5949,"name":"FunctionDefinition","src":"14990:523:29"},{"attributes":{"documentation":"@notice This returns true if a method Id is supported for the specific token.\n @return true if _methodId is supported in general or just for the specific token.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodSupported","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":5972,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5950,"name":"ElementaryTypeName","src":"15727:7:29"}],"id":5951,"name":"VariableDeclaration","src":"15727:14:29"},{"attributes":{"constant":false,"name":"_methodId","scope":5972,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5952,"name":"ElementaryTypeName","src":"15743:6:29"}],"id":5953,"name":"VariableDeclaration","src":"15743:16:29"}],"id":5954,"name":"ParameterList","src":"15726:34:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5972,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5955,"name":"ElementaryTypeName","src":"15782:4:29"}],"id":5956,"name":"VariableDeclaration","src":"15782:4:29"}],"id":5957,"name":"ParameterList","src":"15781:6:29"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_2e8213183f68cbe858fe2495dceb6637f4e218d9fe95c0f7575acfda4394515c","typeString":"literal_string \"non-existing token\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":5958,"name":"Identifier","src":"15798:7:29"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":5216,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"struct TokenWhitelist.Token storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5227,"type":"mapping(address => struct TokenWhitelist.Token storage ref)","value":"_tokenInfoMap"},"id":5959,"name":"Identifier","src":"15806:13:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5951,"type":"address","value":"_token"},"id":5960,"name":"Identifier","src":"15820:6:29"}],"id":5961,"name":"IndexAccess","src":"15806:21:29"}],"id":5962,"name":"MemberAccess","src":"15806:31:29"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6578697374696e6720746f6b656e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-existing token\"","value":"non-existing token"},"id":5963,"name":"Literal","src":"15839:20:29"}],"id":5964,"name":"FunctionCall","src":"15798:62:29"}],"id":5965,"name":"ExpressionStatement","src":"15798:62:29"},{"attributes":{"functionReturnParameters":5957},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5966,"name":"Identifier","src":"15878:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5953,"type":"bytes4","value":"_methodId"},"id":5967,"name":"Identifier","src":"15897:9:29"}],"id":5968,"name":"IndexAccess","src":"15878:29:29"}],"id":5969,"name":"TupleExpression","src":"15877:31:29"}],"id":5970,"name":"Return","src":"15870:38:29"}],"id":5971,"name":"Block","src":"15788:127:29"}],"id":5972,"name":"FunctionDefinition","src":"15695:220:29"},{"attributes":{"documentation":"@notice This returns true if the method is supported for all protected tokens.\n @return true if _methodId is in the method whitelist.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isERC20MethodWhitelisted","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_methodId","scope":5985,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":5973,"name":"ElementaryTypeName","src":"16104:6:29"}],"id":5974,"name":"VariableDeclaration","src":"16104:16:29"}],"id":5975,"name":"ParameterList","src":"16103:18:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5985,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":5976,"name":"ElementaryTypeName","src":"16145:4:29"}],"id":5977,"name":"VariableDeclaration","src":"16145:4:29"}],"id":5978,"name":"ParameterList","src":"16144:6:29"},{"children":[{"attributes":{"functionReturnParameters":5978},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5231,"type":"mapping(bytes4 => bool)","value":"_methodIdWhitelist"},"id":5979,"name":"Identifier","src":"16169:18:29"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5974,"type":"bytes4","value":"_methodId"},"id":5980,"name":"Identifier","src":"16188:9:29"}],"id":5981,"name":"IndexAccess","src":"16169:29:29"}],"id":5982,"name":"TupleExpression","src":"16168:31:29"}],"id":5983,"name":"Return","src":"16161:38:29"}],"id":5984,"name":"Block","src":"16151:55:29"}],"id":5985,"name":"FunctionDefinition","src":"16070:136:29"},{"attributes":{"documentation":"@notice This returns the number of redeemable tokens.\n @return current # of redeemables.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"redeemableCounter","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5986,"name":"ParameterList","src":"16342:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":5993,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":5987,"name":"ElementaryTypeName","src":"16368:7:29"}],"id":5988,"name":"VariableDeclaration","src":"16368:7:29"}],"id":5989,"name":"ParameterList","src":"16367:9:29"},{"children":[{"attributes":{"functionReturnParameters":5989},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5236,"type":"uint256","value":"_redeemableCounter"},"id":5990,"name":"Identifier","src":"16394:18:29"}],"id":5991,"name":"Return","src":"16387:25:29"}],"id":5992,"name":"Block","src":"16377:42:29"}],"id":5993,"name":"FunctionDefinition","src":"16316:103:29"},{"attributes":{"documentation":"@notice This returns the address of our stablecoin of choice.\n @return the address of the stablecoin contract.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"stablecoin","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":5994,"name":"ParameterList","src":"16570:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6001,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":5995,"name":"ElementaryTypeName","src":"16596:7:29"}],"id":5996,"name":"VariableDeclaration","src":"16596:7:29"}],"id":5997,"name":"ParameterList","src":"16595:9:29"},{"children":[{"attributes":{"functionReturnParameters":5997},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5238,"type":"address","value":"_stablecoin"},"id":5998,"name":"Identifier","src":"16622:11:29"}],"id":5999,"name":"Return","src":"16615:18:29"}],"id":6000,"name":"Block","src":"16605:35:29"}],"id":6001,"name":"FunctionDefinition","src":"16551:89:29"},{"attributes":{"documentation":"@notice this returns the node hash of our Oracle.\n @return the oracle node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"oracleNode","scope":6010,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":6002,"name":"ParameterList","src":"16774:2:29"},{"children":[{"attributes":{"constant":false,"name":"","scope":6009,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":6003,"name":"ElementaryTypeName","src":"16800:7:29"}],"id":6004,"name":"VariableDeclaration","src":"16800:7:29"}],"id":6005,"name":"ParameterList","src":"16799:9:29"},{"children":[{"attributes":{"functionReturnParameters":6005},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":5240,"type":"bytes32","value":"_oracleNode"},"id":6006,"name":"Identifier","src":"16826:11:29"}],"id":6007,"name":"Return","src":"16819:18:29"}],"id":6008,"name":"Block","src":"16809:35:29"}],"id":6009,"name":"FunctionDefinition","src":"16755:89:29"}],"id":6010,"name":"ContractDefinition","src":"1939:14907:29"}],"id":6011,"name":"SourceUnit","src":"774:16073:29"}},"wallet.sol":{"AST":{"attributes":{"absolutePath":"wallet.sol","exportedSymbols":{"AddressWhitelist":[932],"ControllableOwnable":[362],"DailyLimitTrait":[1134],"GasTopUpLimit":[1424],"LoadLimit":[1598],"SelfCallableOwnable":[384],"SpendLimit":[1266],"Wallet":[2509]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":327,"name":"PragmaDirective","src":"757:24:30"},{"attributes":{"SourceUnit":4712,"absolutePath":"licence.sol","file":"./licence.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":328,"name":"ImportDirective","src":"783:23:30"},{"attributes":{"SourceUnit":3911,"absolutePath":"internals/ownable.sol","file":"./internals/ownable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":329,"name":"ImportDirective","src":"807:33:30"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":330,"name":"ImportDirective","src":"841:38:30"},{"attributes":{"SourceUnit":3754,"absolutePath":"internals/balanceable.sol","file":"./internals/balanceable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":331,"name":"ImportDirective","src":"880:37:30"},{"attributes":{"SourceUnit":4168,"absolutePath":"internals/transferrable.sol","file":"./internals/transferrable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":332,"name":"ImportDirective","src":"918:39:30"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":333,"name":"ImportDirective","src":"958:39:30"},{"attributes":{"SourceUnit":4128,"absolutePath":"internals/tokenWhitelistable.sol","file":"./internals/tokenWhitelistable.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":334,"name":"ImportDirective","src":"998:44:30"},{"attributes":{"SourceUnit":3722,"absolutePath":"externals/SafeMath.sol","file":"./externals/SafeMath.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":335,"name":"ImportDirective","src":"1043:34:30"},{"attributes":{"SourceUnit":3226,"absolutePath":"externals/Address.sol","file":"./externals/Address.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":336,"name":"ImportDirective","src":"1078:33:30"},{"attributes":{"SourceUnit":3370,"absolutePath":"externals/ERC20.sol","file":"./externals/ERC20.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":337,"name":"ImportDirective","src":"1112:31:30"},{"attributes":{"SourceUnit":3589,"absolutePath":"externals/SafeERC20.sol","file":"./externals/SafeERC20.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":338,"name":"ImportDirective","src":"1144:35:30"},{"attributes":{"SourceUnit":3317,"absolutePath":"externals/ERC165.sol","file":"./externals/ERC165.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":339,"name":"ImportDirective","src":"1180:32:30"},{"attributes":{"SourceUnit":3307,"absolutePath":"externals/ECDSA.sol","file":"./externals/ECDSA.sol","scope":2510,"symbolAliases":[null],"unitAlias":""},"id":340,"name":"ImportDirective","src":"1213:31:30"},{"attributes":{"contractDependencies":[325,3206,3910],"contractKind":"contract","documentation":"@title ControllableOwnable combines Controllable and Ownable\n @dev providing an additional modifier to check if Owner or Controller","fullyImplemented":false,"linearizedBaseContracts":[362,3910,325,3206],"name":"ControllableOwnable","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":341,"name":"UserDefinedTypeName","src":"1418:12:30"}],"id":342,"name":"InheritanceSpecifier","src":"1418:12:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3910,"type":"contract Ownable"},"id":343,"name":"UserDefinedTypeName","src":"1432:7:30"}],"id":344,"name":"InheritanceSpecifier","src":"1432:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or one of the Controllers","name":"onlyOwnerOrController","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":345,"name":"ParameterList","src":"1548:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5a244313930a94a6f5de4548387c8c245a5d11002ac47a2e54f96214a9879106","typeString":"literal_string \"only owner||controller\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":346,"name":"Identifier","src":"1561:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":347,"name":"Identifier","src":"1569:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":348,"name":"Identifier","src":"1578:3:30"}],"id":349,"name":"MemberAccess","src":"1578:10:30"}],"id":350,"name":"FunctionCall","src":"1569:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":307,"type":"function (address) view returns (bool)","value":"_isController"},"id":351,"name":"Identifier","src":"1593:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":352,"name":"Identifier","src":"1607:3:30"}],"id":353,"name":"MemberAccess","src":"1607:10:30"}],"id":354,"name":"FunctionCall","src":"1593:25:30"}],"id":355,"name":"BinaryOperation","src":"1569:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c636f6e74726f6c6c6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||controller\"","value":"only owner||controller"},"id":356,"name":"Literal","src":"1620:24:30"}],"id":357,"name":"FunctionCall","src":"1561:84:30"}],"id":358,"name":"ExpressionStatement","src":"1561:84:30"},{"id":359,"name":"PlaceholderStatement","src":"1655:1:30"}],"id":360,"name":"Block","src":"1551:112:30"}],"id":361,"name":"ModifierDefinition","src":"1518:145:30"}],"id":362,"name":"ContractDefinition","src":"1386:279:30"},{"attributes":{"contractDependencies":[3910],"contractKind":"contract","documentation":"@title SelfCallableOwnable allows either owner or the contract itself to call its functions\n @dev providing an additional modifier to check if Owner or self is calling\n @dev the \"self\" here is used for the meta transactions","fullyImplemented":false,"linearizedBaseContracts":[384,3910],"name":"SelfCallableOwnable","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Ownable","referencedDeclaration":3910,"type":"contract Ownable"},"id":363,"name":"UserDefinedTypeName","src":"1934:7:30"}],"id":364,"name":"InheritanceSpecifier","src":"1934:7:30"},{"attributes":{"documentation":"@dev Check if the sender is the Owner or self","name":"onlyOwnerOrSelf","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":365,"name":"ParameterList","src":"2026:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b3c98ff749bed2b5f266d255ad845f8a2a0dba28f389ec62046d9aad839ae2d6","typeString":"literal_string \"only owner||self\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":366,"name":"Identifier","src":"2039:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"||","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":367,"name":"Identifier","src":"2047:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":368,"name":"Identifier","src":"2056:3:30"}],"id":369,"name":"MemberAccess","src":"2056:10:30"}],"id":370,"name":"FunctionCall","src":"2047:20:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":371,"name":"Identifier","src":"2071:3:30"}],"id":372,"name":"MemberAccess","src":"2071:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_SelfCallableOwnable_$384","typeString":"contract SelfCallableOwnable"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":373,"name":"ElementaryTypeNameExpression","src":"2085:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10619,"type":"contract SelfCallableOwnable","value":"this"},"id":374,"name":"Identifier","src":"2093:4:30"}],"id":375,"name":"FunctionCall","src":"2085:13:30"}],"id":376,"name":"BinaryOperation","src":"2071:27:30"}],"id":377,"name":"BinaryOperation","src":"2047:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f6e6c79206f776e65727c7c73656c66","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"only owner||self\"","value":"only owner||self"},"id":378,"name":"Literal","src":"2100:18:30"}],"id":379,"name":"FunctionCall","src":"2039:80:30"}],"id":380,"name":"ExpressionStatement","src":"2039:80:30"},{"id":381,"name":"PlaceholderStatement","src":"2129:1:30"}],"id":382,"name":"Block","src":"2029:108:30"}],"id":383,"name":"ModifierDefinition","src":"2002:135:30"}],"id":384,"name":"ContractDefinition","src":"1902:237:30"},{"attributes":{"contractDependencies":[325,362,384,3206,3910],"contractKind":"contract","documentation":"@title AddressWhitelist provides payee-whitelist functionality.\n @dev This contract will allow the user to maintain a whitelist of addresses\n @dev These addresses will live outside of the various spend limits","fullyImplemented":false,"linearizedBaseContracts":[932,384,362,3910,325,3206],"name":"AddressWhitelist","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":362,"type":"contract ControllableOwnable"},"id":385,"name":"UserDefinedTypeName","src":"2390:19:30"}],"id":386,"name":"InheritanceSpecifier","src":"2390:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":384,"type":"contract SelfCallableOwnable"},"id":387,"name":"UserDefinedTypeName","src":"2411:19:30"}],"id":388,"name":"InheritanceSpecifier","src":"2411:19:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":389,"name":"UserDefinedTypeName","src":"2443:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":390,"name":"ElementaryTypeName","src":"2456:7:30"}],"id":391,"name":"UsingForDirective","src":"2437:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"AddedToWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":398,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":392,"name":"ElementaryTypeName","src":"2493:7:30"}],"id":393,"name":"VariableDeclaration","src":"2493:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":398,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":394,"name":"ElementaryTypeName","src":"2510:7:30"}],"id":395,"name":"ArrayTypeName","src":"2510:9:30"}],"id":396,"name":"VariableDeclaration","src":"2510:20:30"}],"id":397,"name":"ParameterList","src":"2492:39:30"}],"id":398,"name":"EventDefinition","src":"2470:62:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":404,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":399,"name":"ElementaryTypeName","src":"2570:7:30"}],"id":400,"name":"VariableDeclaration","src":"2570:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":404,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":401,"name":"ElementaryTypeName","src":"2587:7:30"}],"id":402,"name":"VariableDeclaration","src":"2587:13:30"}],"id":403,"name":"ParameterList","src":"2569:32:30"}],"id":404,"name":"EventDefinition","src":"2537:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistAddition"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":411,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":405,"name":"ElementaryTypeName","src":"2640:7:30"}],"id":406,"name":"ArrayTypeName","src":"2640:9:30"}],"id":407,"name":"VariableDeclaration","src":"2640:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":411,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":408,"name":"ElementaryTypeName","src":"2662:7:30"}],"id":409,"name":"VariableDeclaration","src":"2662:13:30"}],"id":410,"name":"ParameterList","src":"2639:37:30"}],"id":411,"name":"EventDefinition","src":"2607:70:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"CancelledWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":417,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":412,"name":"ElementaryTypeName","src":"2715:7:30"}],"id":413,"name":"VariableDeclaration","src":"2715:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":417,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":414,"name":"ElementaryTypeName","src":"2732:7:30"}],"id":415,"name":"VariableDeclaration","src":"2732:13:30"}],"id":416,"name":"ParameterList","src":"2714:32:30"}],"id":417,"name":"EventDefinition","src":"2683:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"RemovedFromWhitelist"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":424,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":418,"name":"ElementaryTypeName","src":"2779:7:30"}],"id":419,"name":"VariableDeclaration","src":"2779:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":424,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":420,"name":"ElementaryTypeName","src":"2796:7:30"}],"id":421,"name":"ArrayTypeName","src":"2796:9:30"}],"id":422,"name":"VariableDeclaration","src":"2796:20:30"}],"id":423,"name":"ParameterList","src":"2778:39:30"}],"id":424,"name":"EventDefinition","src":"2752:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedWhitelistRemoval"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_addresses","scope":431,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":425,"name":"ElementaryTypeName","src":"2855:7:30"}],"id":426,"name":"ArrayTypeName","src":"2855:9:30"}],"id":427,"name":"VariableDeclaration","src":"2855:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_hash","scope":431,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":428,"name":"ElementaryTypeName","src":"2877:7:30"}],"id":429,"name":"VariableDeclaration","src":"2877:13:30"}],"id":430,"name":"ParameterList","src":"2854:37:30"}],"id":431,"name":"EventDefinition","src":"2823:69:30"},{"attributes":{"constant":false,"name":"whitelistMap","scope":932,"stateVariable":true,"storageLocation":"default","type":"mapping(address => bool)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => bool)"},"children":[{"attributes":{"name":"address","type":"address"},"id":432,"name":"ElementaryTypeName","src":"2906:7:30"},{"attributes":{"name":"bool","type":"bool"},"id":433,"name":"ElementaryTypeName","src":"2917:4:30"}],"id":434,"name":"Mapping","src":"2898:24:30"}],"id":435,"name":"VariableDeclaration","src":"2898:44:30"},{"attributes":{"constant":false,"name":"whitelistArray","scope":932,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":436,"name":"ElementaryTypeName","src":"2948:7:30"}],"id":437,"name":"ArrayTypeName","src":"2948:9:30"}],"id":438,"name":"VariableDeclaration","src":"2948:31:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistAddition","scope":932,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":439,"name":"ElementaryTypeName","src":"2985:7:30"}],"id":440,"name":"ArrayTypeName","src":"2985:9:30"}],"id":441,"name":"VariableDeclaration","src":"2985:43:30"},{"attributes":{"constant":false,"name":"_pendingWhitelistRemoval","scope":932,"stateVariable":true,"storageLocation":"default","type":"address[]","value":null,"visibility":"private"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":442,"name":"ElementaryTypeName","src":"3034:7:30"}],"id":443,"name":"ArrayTypeName","src":"3034:9:30"}],"id":444,"name":"VariableDeclaration","src":"3034:42:30"},{"attributes":{"constant":false,"name":"submittedWhitelistAddition","scope":932,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":445,"name":"ElementaryTypeName","src":"3082:4:30"}],"id":446,"name":"VariableDeclaration","src":"3082:38:30"},{"attributes":{"constant":false,"name":"submittedWhitelistRemoval","scope":932,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":447,"name":"ElementaryTypeName","src":"3126:4:30"}],"id":448,"name":"VariableDeclaration","src":"3126:37:30"},{"attributes":{"constant":false,"name":"isSetWhitelist","scope":932,"stateVariable":true,"storageLocation":"default","type":"bool","value":null,"visibility":"public"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":449,"name":"ElementaryTypeName","src":"3169:4:30"}],"id":450,"name":"VariableDeclaration","src":"3169:26:30"},{"attributes":{"documentation":"@dev Check if the provided addresses contain the owner or the zero-address address.","name":"hasNoOwnerOrZeroAddress","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":491,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":451,"name":"ElementaryTypeName","src":"3327:7:30"}],"id":452,"name":"ArrayTypeName","src":"3327:9:30"}],"id":453,"name":"VariableDeclaration","src":"3327:27:30"}],"id":454,"name":"ParameterList","src":"3326:29:30"},{"children":[{"children":[{"attributes":{"assignments":[456]},"children":[{"attributes":{"constant":false,"name":"i","scope":488,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":455,"name":"ElementaryTypeName","src":"3371:7:30"}],"id":456,"name":"VariableDeclaration","src":"3371:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":457,"name":"Literal","src":"3383:1:30"}],"id":458,"name":"VariableDeclarationStatement","src":"3371:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":456,"type":"uint256","value":"i"},"id":459,"name":"Identifier","src":"3386:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":453,"type":"address[] memory","value":"_addresses"},"id":460,"name":"Identifier","src":"3390:10:30"}],"id":461,"name":"MemberAccess","src":"3390:17:30"}],"id":462,"name":"BinaryOperation","src":"3386:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":456,"type":"uint256","value":"i"},"id":463,"name":"Identifier","src":"3409:1:30"}],"id":464,"name":"UnaryOperation","src":"3409:3:30"}],"id":465,"name":"ExpressionStatement","src":"3409:3:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_83144f57b92473167e9ce74530b82e833e4f010b46d8a2562f84cdc754bd4967","typeString":"literal_string \"contains owner address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":466,"name":"Identifier","src":"3428:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":467,"name":"Identifier","src":"3437:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":453,"type":"address[] memory","value":"_addresses"},"id":468,"name":"Identifier","src":"3446:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":456,"type":"uint256","value":"i"},"id":469,"name":"Identifier","src":"3457:1:30"}],"id":470,"name":"IndexAccess","src":"3446:13:30"}],"id":471,"name":"FunctionCall","src":"3437:23:30"}],"id":472,"name":"UnaryOperation","src":"3436:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e73206f776e65722061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains owner address\"","value":"contains owner address"},"id":473,"name":"Literal","src":"3462:24:30"}],"id":474,"name":"FunctionCall","src":"3428:59:30"}],"id":475,"name":"ExpressionStatement","src":"3428:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab14c1506b1b0c03aad2feb5e5b965df7dffe18036562732ceabd49019d58098","typeString":"literal_string \"contains 0 address\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":476,"name":"Identifier","src":"3501:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":453,"type":"address[] memory","value":"_addresses"},"id":477,"name":"Identifier","src":"3509:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":456,"type":"uint256","value":"i"},"id":478,"name":"Identifier","src":"3520:1:30"}],"id":479,"name":"IndexAccess","src":"3509:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":480,"name":"ElementaryTypeNameExpression","src":"3526:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":481,"name":"Literal","src":"3534:1:30"}],"id":482,"name":"FunctionCall","src":"3526:10:30"}],"id":483,"name":"BinaryOperation","src":"3509:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e7461696e7320302061646472657373","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"contains 0 address\"","value":"contains 0 address"},"id":484,"name":"Literal","src":"3538:20:30"}],"id":485,"name":"FunctionCall","src":"3501:58:30"}],"id":486,"name":"ExpressionStatement","src":"3501:58:30"}],"id":487,"name":"Block","src":"3414:156:30"}],"id":488,"name":"ForStatement","src":"3366:204:30"},{"id":489,"name":"PlaceholderStatement","src":"3579:1:30"}],"id":490,"name":"Block","src":"3356:231:30"}],"id":491,"name":"ModifierDefinition","src":"3294:293:30"},{"attributes":{"documentation":"@dev Check that neither addition nor removal operations have already been submitted.","name":"noActiveSubmission","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":492,"name":"ParameterList","src":"3713:2:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_218a99457edaa7c4d6a4ca4023db54cf2e31e2ca8b9a350a6c9ab56a1ea1df99","typeString":"literal_string \"whitelist sumbission pending\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":493,"name":"Identifier","src":"3726:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":494,"name":"Identifier","src":"3735:26:30"}],"id":495,"name":"UnaryOperation","src":"3734:27:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":496,"name":"Identifier","src":"3766:25:30"}],"id":497,"name":"UnaryOperation","src":"3765:26:30"}],"id":498,"name":"BinaryOperation","src":"3734:57:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c6973742073756d62697373696f6e2070656e64696e67","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist sumbission pending\"","value":"whitelist sumbission pending"},"id":499,"name":"Literal","src":"3793:30:30"}],"id":500,"name":"FunctionCall","src":"3726:98:30"}],"id":501,"name":"ExpressionStatement","src":"3726:98:30"},{"id":502,"name":"PlaceholderStatement","src":"3834:1:30"}],"id":503,"name":"Block","src":"3716:126:30"}],"id":504,"name":"ModifierDefinition","src":"3686:156:30"},{"attributes":{"documentation":"@dev Cancel pending whitelist addition.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistAddition","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":539,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":505,"name":"ElementaryTypeName","src":"3929:7:30"}],"id":506,"name":"VariableDeclaration","src":"3929:13:30"}],"id":507,"name":"ParameterList","src":"3928:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":510,"name":"ParameterList","src":"3975:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":361,"type":"modifier ()","value":"onlyOwnerOrController"},"id":508,"name":"Identifier","src":"3953:21:30"}],"id":509,"name":"ModifierInvocation","src":"3953:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":511,"name":"Identifier","src":"4035:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":512,"name":"Identifier","src":"4043:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":513,"name":"Literal","src":"4071:23:30"}],"id":514,"name":"FunctionCall","src":"4035:60:30"}],"id":515,"name":"ExpressionStatement","src":"4035:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":516,"name":"Identifier","src":"4200:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":506,"type":"bytes32","value":"_hash"},"id":517,"name":"Identifier","src":"4208:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":518,"name":"Identifier","src":"4217:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":519,"name":"Identifier","src":"4231:25:30"}],"id":520,"name":"FunctionCall","src":"4217:40:30"}],"id":521,"name":"BinaryOperation","src":"4208:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":522,"name":"Literal","src":"4259:37:30"}],"id":523,"name":"FunctionCall","src":"4200:97:30"}],"id":524,"name":"ExpressionStatement","src":"4200:97:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":525,"name":"Identifier","src":"4350:25:30"}],"id":526,"name":"UnaryOperation","src":"4343:32:30"}],"id":527,"name":"ExpressionStatement","src":"4343:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":528,"name":"Identifier","src":"4432:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":529,"name":"Literal","src":"4461:5:30"}],"id":530,"name":"Assignment","src":"4432:34:30"}],"id":531,"name":"ExpressionStatement","src":"4432:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":404,"type":"function (address,bytes32)","value":"CancelledWhitelistAddition"},"id":532,"name":"Identifier","src":"4521:26:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":533,"name":"Identifier","src":"4548:3:30"}],"id":534,"name":"MemberAccess","src":"4548:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":506,"type":"bytes32","value":"_hash"},"id":535,"name":"Identifier","src":"4560:5:30"}],"id":536,"name":"FunctionCall","src":"4521:45:30"}],"id":537,"name":"EmitStatement","src":"4516:50:30"}],"id":538,"name":"Block","src":"3975:598:30"}],"id":539,"name":"FunctionDefinition","src":"3896:677:30"},{"attributes":{"documentation":"@dev Cancel pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"cancelWhitelistRemoval","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":574,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":540,"name":"ElementaryTypeName","src":"4673:7:30"}],"id":541,"name":"VariableDeclaration","src":"4673:13:30"}],"id":542,"name":"ParameterList","src":"4672:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":545,"name":"ParameterList","src":"4719:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":361,"type":"modifier ()","value":"onlyOwnerOrController"},"id":543,"name":"Identifier","src":"4697:21:30"}],"id":544,"name":"ModifierInvocation","src":"4697:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":546,"name":"Identifier","src":"4779:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":547,"name":"Identifier","src":"4787:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":548,"name":"Literal","src":"4814:23:30"}],"id":549,"name":"FunctionCall","src":"4779:59:30"}],"id":550,"name":"ExpressionStatement","src":"4779:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":551,"name":"Identifier","src":"4942:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":541,"type":"bytes32","value":"_hash"},"id":552,"name":"Identifier","src":"4950:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":553,"name":"Identifier","src":"4959:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":554,"name":"Identifier","src":"4973:24:30"}],"id":555,"name":"FunctionCall","src":"4959:39:30"}],"id":556,"name":"BinaryOperation","src":"4950:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":557,"name":"Literal","src":"5000:37:30"}],"id":558,"name":"FunctionCall","src":"4942:96:30"}],"id":559,"name":"ExpressionStatement","src":"4942:96:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":560,"name":"Identifier","src":"5091:24:30"}],"id":561,"name":"UnaryOperation","src":"5084:31:30"}],"id":562,"name":"ExpressionStatement","src":"5084:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":563,"name":"Identifier","src":"5161:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":564,"name":"Literal","src":"5189:5:30"}],"id":565,"name":"Assignment","src":"5161:33:30"}],"id":566,"name":"ExpressionStatement","src":"5161:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":417,"type":"function (address,bytes32)","value":"CancelledWhitelistRemoval"},"id":567,"name":"Identifier","src":"5249:25:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":568,"name":"Identifier","src":"5275:3:30"}],"id":569,"name":"MemberAccess","src":"5275:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":541,"type":"bytes32","value":"_hash"},"id":570,"name":"Identifier","src":"5287:5:30"}],"id":571,"name":"FunctionCall","src":"5249:44:30"}],"id":572,"name":"EmitStatement","src":"5244:49:30"}],"id":573,"name":"Block","src":"4719:581:30"}],"id":574,"name":"FunctionDefinition","src":"4641:659:30"},{"attributes":{"documentation":"@dev Confirm pending whitelist addition.\n @dev This will only ever be applied post 2FA, by one of the Controllers\n @param _hash is the hash of the pending whitelist array, a form of lamport lock","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistAddition","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":646,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":575,"name":"ElementaryTypeName","src":"5557:7:30"}],"id":576,"name":"VariableDeclaration","src":"5557:13:30"}],"id":577,"name":"ParameterList","src":"5556:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":580,"name":"ParameterList","src":"5596:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":578,"name":"Identifier","src":"5581:14:30"}],"id":579,"name":"ModifierInvocation","src":"5581:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":581,"name":"Identifier","src":"5673:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":582,"name":"Identifier","src":"5681:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":583,"name":"Literal","src":"5709:23:30"}],"id":584,"name":"FunctionCall","src":"5673:60:30"}],"id":585,"name":"ExpressionStatement","src":"5673:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":586,"name":"Identifier","src":"5838:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":576,"type":"bytes32","value":"_hash"},"id":587,"name":"Identifier","src":"5846:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":588,"name":"Identifier","src":"5855:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":589,"name":"Identifier","src":"5869:25:30"}],"id":590,"name":"FunctionCall","src":"5855:40:30"}],"id":591,"name":"BinaryOperation","src":"5846:49:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":592,"name":"Literal","src":"5897:37:30"}],"id":593,"name":"FunctionCall","src":"5838:97:30"}],"id":594,"name":"ExpressionStatement","src":"5838:97:30"},{"children":[{"attributes":{"assignments":[596]},"children":[{"attributes":{"constant":false,"name":"i","scope":631,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":595,"name":"ElementaryTypeName","src":"5990:7:30"}],"id":596,"name":"VariableDeclaration","src":"5990:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":597,"name":"Literal","src":"6002:1:30"}],"id":598,"name":"VariableDeclarationStatement","src":"5990:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":599,"name":"Identifier","src":"6005:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":600,"name":"Identifier","src":"6009:25:30"}],"id":601,"name":"MemberAccess","src":"6009:32:30"}],"id":602,"name":"BinaryOperation","src":"6005:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":603,"name":"Identifier","src":"6043:1:30"}],"id":604,"name":"UnaryOperation","src":"6043:3:30"}],"id":605,"name":"ExpressionStatement","src":"6043:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":606,"name":"Identifier","src":"6117:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":607,"name":"Identifier","src":"6130:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":608,"name":"Identifier","src":"6156:1:30"}],"id":609,"name":"IndexAccess","src":"6130:28:30"}],"id":610,"name":"IndexAccess","src":"6117:42:30"}],"id":611,"name":"UnaryOperation","src":"6116:43:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":612,"name":"Identifier","src":"6227:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":613,"name":"Identifier","src":"6240:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":614,"name":"Identifier","src":"6266:1:30"}],"id":615,"name":"IndexAccess","src":"6240:28:30"}],"id":616,"name":"IndexAccess","src":"6227:42:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":617,"name":"Literal","src":"6272:4:30"}],"id":618,"name":"Assignment","src":"6227:49:30"}],"id":619,"name":"ExpressionStatement","src":"6227:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":620,"name":"Identifier","src":"6294:14:30"}],"id":622,"name":"MemberAccess","src":"6294:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":623,"name":"Identifier","src":"6314:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":596,"type":"uint256","value":"i"},"id":624,"name":"Identifier","src":"6340:1:30"}],"id":625,"name":"IndexAccess","src":"6314:28:30"}],"id":626,"name":"FunctionCall","src":"6294:49:30"}],"id":627,"name":"ExpressionStatement","src":"6294:49:30"}],"id":628,"name":"Block","src":"6161:197:30"}],"id":629,"name":"IfStatement","src":"6112:246:30"}],"id":630,"name":"Block","src":"6048:320:30"}],"id":631,"name":"ForStatement","src":"5985:383:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":398,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":632,"name":"Identifier","src":"6418:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":633,"name":"Identifier","src":"6435:3:30"}],"id":634,"name":"MemberAccess","src":"6435:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":635,"name":"Identifier","src":"6447:25:30"}],"id":636,"name":"FunctionCall","src":"6418:55:30"}],"id":637,"name":"EmitStatement","src":"6413:60:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":638,"name":"Identifier","src":"6526:25:30"}],"id":639,"name":"UnaryOperation","src":"6519:32:30"}],"id":640,"name":"ExpressionStatement","src":"6519:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":641,"name":"Identifier","src":"6599:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":642,"name":"Literal","src":"6628:5:30"}],"id":643,"name":"Assignment","src":"6599:34:30"}],"id":644,"name":"ExpressionStatement","src":"6599:34:30"}],"id":645,"name":"Block","src":"5596:1044:30"}],"id":646,"name":"FunctionDefinition","src":"5523:1117:30"},{"attributes":{"documentation":"@dev Confirm pending removal of whitelisted addresses.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmWhitelistRemoval","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hash","scope":751,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":647,"name":"ElementaryTypeName","src":"6742:7:30"}],"id":648,"name":"VariableDeclaration","src":"6742:13:30"}],"id":649,"name":"ParameterList","src":"6741:15:30"},{"attributes":{"parameters":[null]},"children":[],"id":652,"name":"ParameterList","src":"6781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":650,"name":"Identifier","src":"6766:14:30"}],"id":651,"name":"ModifierInvocation","src":"6766:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9fe0bda788d664b2fc2a46bb8405df1f844939933b8ae600011457be862cd46c","typeString":"literal_string \"no pending submission\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":653,"name":"Identifier","src":"6888:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":654,"name":"Identifier","src":"6896:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f2070656e64696e67207375626d697373696f6e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no pending submission\"","value":"no pending submission"},"id":655,"name":"Literal","src":"6923:23:30"}],"id":656,"name":"FunctionCall","src":"6888:59:30"}],"id":657,"name":"ExpressionStatement","src":"6888:59:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_edfd9dcb4c23c5946c1029e5f5f93f4725dc4f4a81d327d3cbdac9eef59097fb","typeString":"literal_string \"non-matching pending whitelist hash\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":658,"name":"Identifier","src":"7051:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":648,"type":"bytes32","value":"_hash"},"id":659,"name":"Identifier","src":"7059:5:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":660,"name":"Identifier","src":"7068:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":661,"name":"Identifier","src":"7082:24:30"}],"id":662,"name":"FunctionCall","src":"7068:39:30"}],"id":663,"name":"BinaryOperation","src":"7059:48:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f6e2d6d61746368696e672070656e64696e672077686974656c6973742068617368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"non-matching pending whitelist hash\"","value":"non-matching pending whitelist hash"},"id":664,"name":"Literal","src":"7109:37:30"}],"id":665,"name":"FunctionCall","src":"7051:96:30"}],"id":666,"name":"ExpressionStatement","src":"7051:96:30"},{"children":[{"attributes":{"assignments":[668]},"children":[{"attributes":{"constant":false,"name":"i","scope":736,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":667,"name":"ElementaryTypeName","src":"7199:7:30"}],"id":668,"name":"VariableDeclaration","src":"7199:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":669,"name":"Literal","src":"7211:1:30"}],"id":670,"name":"VariableDeclarationStatement","src":"7199:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":671,"name":"Identifier","src":"7214:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":672,"name":"Identifier","src":"7218:24:30"}],"id":673,"name":"MemberAccess","src":"7218:31:30"}],"id":674,"name":"BinaryOperation","src":"7214:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":675,"name":"Identifier","src":"7251:1:30"}],"id":676,"name":"UnaryOperation","src":"7251:3:30"}],"id":677,"name":"ExpressionStatement","src":"7251:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":678,"name":"Identifier","src":"7308:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":679,"name":"Identifier","src":"7321:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":680,"name":"Identifier","src":"7346:1:30"}],"id":681,"name":"IndexAccess","src":"7321:27:30"}],"id":682,"name":"IndexAccess","src":"7308:41:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":683,"name":"Identifier","src":"7369:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":684,"name":"Identifier","src":"7382:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":685,"name":"Identifier","src":"7407:1:30"}],"id":686,"name":"IndexAccess","src":"7382:27:30"}],"id":687,"name":"IndexAccess","src":"7369:41:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":688,"name":"Literal","src":"7413:5:30"}],"id":689,"name":"Assignment","src":"7369:49:30"}],"id":690,"name":"ExpressionStatement","src":"7369:49:30"},{"children":[{"attributes":{"assignments":[692]},"children":[{"attributes":{"constant":false,"name":"j","scope":727,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":691,"name":"ElementaryTypeName","src":"7441:7:30"}],"id":692,"name":"VariableDeclaration","src":"7441:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":693,"name":"Literal","src":"7453:1:30"}],"id":694,"name":"VariableDeclarationStatement","src":"7441:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"j"},"id":695,"name":"Identifier","src":"7456:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_1_by_1","typeString":"int_const 1"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":696,"name":"Identifier","src":"7460:14:30"}],"id":697,"name":"MemberAccess","src":"7460:21:30"}],"id":698,"name":"MemberAccess","src":"7460:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":699,"name":"Literal","src":"7486:1:30"}],"id":700,"name":"FunctionCall","src":"7460:28:30"}],"id":701,"name":"BinaryOperation","src":"7456:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"j"},"id":702,"name":"Identifier","src":"7490:1:30"}],"id":703,"name":"UnaryOperation","src":"7490:3:30"}],"id":704,"name":"ExpressionStatement","src":"7490:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":705,"name":"Identifier","src":"7521:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"j"},"id":706,"name":"Identifier","src":"7536:1:30"}],"id":707,"name":"IndexAccess","src":"7521:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":708,"name":"Identifier","src":"7542:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":668,"type":"uint256","value":"i"},"id":709,"name":"Identifier","src":"7567:1:30"}],"id":710,"name":"IndexAccess","src":"7542:27:30"}],"id":711,"name":"BinaryOperation","src":"7521:48:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":712,"name":"Identifier","src":"7597:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":692,"type":"uint256","value":"j"},"id":713,"name":"Identifier","src":"7612:1:30"}],"id":714,"name":"IndexAccess","src":"7597:17:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":715,"name":"Identifier","src":"7617:14:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":716,"name":"Identifier","src":"7632:14:30"}],"id":717,"name":"MemberAccess","src":"7632:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":718,"name":"Literal","src":"7656:1:30"}],"id":719,"name":"BinaryOperation","src":"7632:25:30"}],"id":720,"name":"IndexAccess","src":"7617:41:30"}],"id":721,"name":"Assignment","src":"7597:61:30"}],"id":722,"name":"ExpressionStatement","src":"7597:61:30"},{"id":723,"name":"Break","src":"7684:5:30"}],"id":724,"name":"Block","src":"7571:141:30"}],"id":725,"name":"IfStatement","src":"7517:195:30"}],"id":726,"name":"Block","src":"7495:235:30"}],"id":727,"name":"ForStatement","src":"7436:294:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"--","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":728,"name":"Identifier","src":"7747:14:30"}],"id":730,"name":"MemberAccess","src":"7747:21:30"}],"id":731,"name":"UnaryOperation","src":"7747:23:30"}],"id":732,"name":"ExpressionStatement","src":"7747:23:30"}],"id":733,"name":"Block","src":"7351:434:30"}],"id":734,"name":"IfStatement","src":"7304:481:30"}],"id":735,"name":"Block","src":"7256:539:30"}],"id":736,"name":"ForStatement","src":"7194:601:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":424,"type":"function (address,address[] memory)","value":"RemovedFromWhitelist"},"id":737,"name":"Identifier","src":"7844:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":738,"name":"Identifier","src":"7865:3:30"}],"id":739,"name":"MemberAccess","src":"7865:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":740,"name":"Identifier","src":"7877:24:30"}],"id":741,"name":"FunctionCall","src":"7844:58:30"}],"id":742,"name":"EmitStatement","src":"7839:63:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"delete","prefix":true,"type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":743,"name":"Identifier","src":"7955:24:30"}],"id":744,"name":"UnaryOperation","src":"7948:31:30"}],"id":745,"name":"ExpressionStatement","src":"7948:31:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":746,"name":"Identifier","src":"8027:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":747,"name":"Literal","src":"8055:5:30"}],"id":748,"name":"Assignment","src":"8027:33:30"}],"id":749,"name":"ExpressionStatement","src":"8027:33:30"}],"id":750,"name":"Block","src":"6781:1286:30"}],"id":751,"name":"FunctionDefinition","src":"6709:1358:30"},{"attributes":{"documentation":"@dev Getter for pending addition array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistAddition","scope":932,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":752,"name":"ParameterList","src":"8154:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":760,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":753,"name":"ElementaryTypeName","src":"8180:7:30"}],"id":754,"name":"ArrayTypeName","src":"8180:9:30"}],"id":755,"name":"VariableDeclaration","src":"8180:16:30"}],"id":756,"name":"ParameterList","src":"8179:18:30"},{"children":[{"attributes":{"functionReturnParameters":756},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":757,"name":"Identifier","src":"8215:25:30"}],"id":758,"name":"Return","src":"8208:32:30"}],"id":759,"name":"Block","src":"8198:49:30"}],"id":760,"name":"FunctionDefinition","src":"8121:126:30"},{"attributes":{"documentation":"@dev Getter for pending removal array.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"pendingWhitelistRemoval","scope":932,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":761,"name":"ParameterList","src":"8332:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":769,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":762,"name":"ElementaryTypeName","src":"8358:7:30"}],"id":763,"name":"ArrayTypeName","src":"8358:9:30"}],"id":764,"name":"VariableDeclaration","src":"8358:16:30"}],"id":765,"name":"ParameterList","src":"8357:18:30"},{"children":[{"attributes":{"functionReturnParameters":765},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":766,"name":"Identifier","src":"8393:24:30"}],"id":767,"name":"Return","src":"8386:31:30"}],"id":768,"name":"Block","src":"8376:48:30"}],"id":769,"name":"FunctionDefinition","src":"8300:124:30"},{"attributes":{"documentation":"@dev Add initial addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"setWhitelist","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":834,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":770,"name":"ElementaryTypeName","src":"8577:7:30"}],"id":771,"name":"ArrayTypeName","src":"8577:9:30"}],"id":772,"name":"VariableDeclaration","src":"8577:29:30"}],"id":773,"name":"ParameterList","src":"8576:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":779,"name":"ParameterList","src":"8669:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":774,"name":"Identifier","src":"8617:15:30"}],"id":775,"name":"ModifierInvocation","src":"8617:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":491,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":776,"name":"Identifier","src":"8633:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":777,"name":"Identifier","src":"8657:10:30"}],"id":778,"name":"ModifierInvocation","src":"8633:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_072b1c10273a06de91a80d81d357e8bd73084529b5cc99d2ec03a7bf6d5fb2b9","typeString":"literal_string \"whitelist initialized\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":780,"name":"Identifier","src":"8743:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":450,"type":"bool","value":"isSetWhitelist"},"id":781,"name":"Identifier","src":"8752:14:30"}],"id":782,"name":"UnaryOperation","src":"8751:15:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c69737420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist initialized\"","value":"whitelist initialized"},"id":783,"name":"Literal","src":"8768:23:30"}],"id":784,"name":"FunctionCall","src":"8743:49:30"}],"id":785,"name":"ExpressionStatement","src":"8743:49:30"},{"children":[{"attributes":{"assignments":[787]},"children":[{"attributes":{"constant":false,"name":"i","scope":822,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":786,"name":"ElementaryTypeName","src":"8871:7:30"}],"id":787,"name":"VariableDeclaration","src":"8871:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":788,"name":"Literal","src":"8883:1:30"}],"id":789,"name":"VariableDeclarationStatement","src":"8871:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":790,"name":"Identifier","src":"8886:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":791,"name":"Identifier","src":"8890:10:30"}],"id":792,"name":"MemberAccess","src":"8890:17:30"}],"id":793,"name":"BinaryOperation","src":"8886:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":794,"name":"Identifier","src":"8909:1:30"}],"id":795,"name":"UnaryOperation","src":"8909:3:30"}],"id":796,"name":"ExpressionStatement","src":"8909:3:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":797,"name":"Identifier","src":"8996:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":798,"name":"Identifier","src":"9009:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":799,"name":"Identifier","src":"9020:1:30"}],"id":800,"name":"IndexAccess","src":"9009:13:30"}],"id":801,"name":"IndexAccess","src":"8996:27:30"}],"id":802,"name":"UnaryOperation","src":"8995:28:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":803,"name":"Identifier","src":"9092:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":804,"name":"Identifier","src":"9105:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":805,"name":"Identifier","src":"9116:1:30"}],"id":806,"name":"IndexAccess","src":"9105:13:30"}],"id":807,"name":"IndexAccess","src":"9092:27:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":808,"name":"Literal","src":"9122:4:30"}],"id":809,"name":"Assignment","src":"9092:34:30"}],"id":810,"name":"ExpressionStatement","src":"9092:34:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (address) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":811,"name":"Identifier","src":"9191:14:30"}],"id":813,"name":"MemberAccess","src":"9191:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":772,"type":"address[] calldata","value":"_addresses"},"id":814,"name":"Identifier","src":"9211:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":787,"type":"uint256","value":"i"},"id":815,"name":"Identifier","src":"9222:1:30"}],"id":816,"name":"IndexAccess","src":"9211:13:30"}],"id":817,"name":"FunctionCall","src":"9191:34:30"}],"id":818,"name":"ExpressionStatement","src":"9191:34:30"}],"id":819,"name":"Block","src":"9025:215:30"}],"id":820,"name":"IfStatement","src":"8991:249:30"}],"id":821,"name":"Block","src":"8914:336:30"}],"id":822,"name":"ForStatement","src":"8866:384:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":450,"type":"bool","value":"isSetWhitelist"},"id":823,"name":"Identifier","src":"9259:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":824,"name":"Literal","src":"9276:4:30"}],"id":825,"name":"Assignment","src":"9259:21:30"}],"id":826,"name":"ExpressionStatement","src":"9259:21:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_storage","typeString":"address[] storage ref"}],"overloadedDeclarations":[null],"referencedDeclaration":398,"type":"function (address,address[] memory)","value":"AddedToWhitelist"},"id":827,"name":"Identifier","src":"9331:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":828,"name":"Identifier","src":"9348:3:30"}],"id":829,"name":"MemberAccess","src":"9348:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":438,"type":"address[] storage ref","value":"whitelistArray"},"id":830,"name":"Identifier","src":"9360:14:30"}],"id":831,"name":"FunctionCall","src":"9331:44:30"}],"id":832,"name":"EmitStatement","src":"9326:49:30"}],"id":833,"name":"Block","src":"8669:713:30"}],"id":834,"name":"FunctionDefinition","src":"8555:827:30"},{"attributes":{"documentation":"@dev Add addresses to the whitelist.\n @param _addresses are the Ethereum addresses to be whitelisted.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistAddition","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":876,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":835,"name":"ElementaryTypeName","src":"9538:7:30"}],"id":836,"name":"ArrayTypeName","src":"9538:9:30"}],"id":837,"name":"VariableDeclaration","src":"9538:29:30"}],"id":838,"name":"ParameterList","src":"9537:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":846,"name":"ParameterList","src":"9649:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":839,"name":"Identifier","src":"9578:15:30"}],"id":840,"name":"ModifierInvocation","src":"9578:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"modifier ()","value":"noActiveSubmission"},"id":841,"name":"Identifier","src":"9594:18:30"}],"id":842,"name":"ModifierInvocation","src":"9594:18:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":491,"type":"modifier (address[] memory)","value":"hasNoOwnerOrZeroAddress"},"id":843,"name":"Identifier","src":"9613:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":844,"name":"Identifier","src":"9637:10:30"}],"id":845,"name":"ModifierInvocation","src":"9613:35:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":847,"name":"Identifier","src":"9719:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":450,"type":"bool","value":"isSetWhitelist"},"id":848,"name":"Identifier","src":"9727:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":849,"name":"Literal","src":"9743:27:30"}],"id":850,"name":"FunctionCall","src":"9719:52:30"}],"id":851,"name":"ExpressionStatement","src":"9719:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":852,"name":"Identifier","src":"9834:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":853,"name":"Identifier","src":"9842:10:30"}],"id":854,"name":"MemberAccess","src":"9842:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":855,"name":"Literal","src":"9862:1:30"}],"id":856,"name":"BinaryOperation","src":"9842:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":857,"name":"Literal","src":"9865:17:30"}],"id":858,"name":"FunctionCall","src":"9834:49:30"}],"id":859,"name":"ExpressionStatement","src":"9834:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":441,"type":"address[] storage ref","value":"_pendingWhitelistAddition"},"id":860,"name":"Identifier","src":"9966:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":861,"name":"Identifier","src":"9994:10:30"}],"id":862,"name":"Assignment","src":"9966:38:30"}],"id":863,"name":"ExpressionStatement","src":"9966:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":446,"type":"bool","value":"submittedWhitelistAddition"},"id":864,"name":"Identifier","src":"10058:26:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":865,"name":"Literal","src":"10087:4:30"}],"id":866,"name":"Assignment","src":"10058:33:30"}],"id":867,"name":"ExpressionStatement","src":"10058:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":411,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistAddition"},"id":868,"name":"Identifier","src":"10144:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":869,"name":"Identifier","src":"10171:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":870,"name":"Identifier","src":"10183:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":837,"type":"address[] calldata","value":"_addresses"},"id":871,"name":"Identifier","src":"10197:10:30"}],"id":872,"name":"FunctionCall","src":"10183:25:30"}],"id":873,"name":"FunctionCall","src":"10144:65:30"}],"id":874,"name":"EmitStatement","src":"10139:70:30"}],"id":875,"name":"Block","src":"9649:567:30"}],"id":876,"name":"FunctionDefinition","src":"9505:711:30"},{"attributes":{"documentation":"@dev Remove addresses from the whitelist.\n @param _addresses are the Ethereum addresses to be removed.","implemented":true,"isConstructor":false,"kind":"function","name":"submitWhitelistRemoval","scope":932,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":915,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":877,"name":"ElementaryTypeName","src":"10372:7:30"}],"id":878,"name":"ArrayTypeName","src":"10372:9:30"}],"id":879,"name":"VariableDeclaration","src":"10372:29:30"}],"id":880,"name":"ParameterList","src":"10371:31:30"},{"attributes":{"parameters":[null]},"children":[],"id":885,"name":"ParameterList","src":"10447:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":881,"name":"Identifier","src":"10412:15:30"}],"id":882,"name":"ModifierInvocation","src":"10412:15:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":504,"type":"modifier ()","value":"noActiveSubmission"},"id":883,"name":"Identifier","src":"10428:18:30"}],"id":884,"name":"ModifierInvocation","src":"10428:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fdc74cfda1c0991aaf7f27fe8a6221a15d624266a5e1f03cca4941982b4eaea1","typeString":"literal_string \"whitelist not initialized\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":886,"name":"Identifier","src":"10517:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":450,"type":"bool","value":"isSetWhitelist"},"id":887,"name":"Identifier","src":"10525:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"77686974656c697374206e6f7420696e697469616c697a6564","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"whitelist not initialized\"","value":"whitelist not initialized"},"id":888,"name":"Literal","src":"10541:27:30"}],"id":889,"name":"FunctionCall","src":"10517:52:30"}],"id":890,"name":"ExpressionStatement","src":"10517:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_007f1bdc3f9bd40d91ffde64070cb462b3a46cc4fe742fda6507b13a167fd065","typeString":"literal_string \"empty whitelist\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":891,"name":"Identifier","src":"10639:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":879,"type":"address[] calldata","value":"_addresses"},"id":892,"name":"Identifier","src":"10647:10:30"}],"id":893,"name":"MemberAccess","src":"10647:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":894,"name":"Literal","src":"10667:1:30"}],"id":895,"name":"BinaryOperation","src":"10647:21:30"},{"attributes":{"argumentTypes":null,"hexvalue":"656d7074792077686974656c697374","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"empty whitelist\"","value":"empty whitelist"},"id":896,"name":"Literal","src":"10670:17:30"}],"id":897,"name":"FunctionCall","src":"10639:49:30"}],"id":898,"name":"ExpressionStatement","src":"10639:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address[] storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":444,"type":"address[] storage ref","value":"_pendingWhitelistRemoval"},"id":899,"name":"Identifier","src":"10766:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":879,"type":"address[] calldata","value":"_addresses"},"id":900,"name":"Identifier","src":"10793:10:30"}],"id":901,"name":"Assignment","src":"10766:37:30"}],"id":902,"name":"ExpressionStatement","src":"10766:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":448,"type":"bool","value":"submittedWhitelistRemoval"},"id":903,"name":"Identifier","src":"10857:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":904,"name":"Literal","src":"10885:4:30"}],"id":905,"name":"Assignment","src":"10857:32:30"}],"id":906,"name":"ExpressionStatement","src":"10857:32:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":431,"type":"function (address[] memory,bytes32)","value":"SubmittedWhitelistRemoval"},"id":907,"name":"Identifier","src":"10942:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":879,"type":"address[] calldata","value":"_addresses"},"id":908,"name":"Identifier","src":"10968:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":931,"type":"function (address[] memory) pure returns (bytes32)","value":"calculateHash"},"id":909,"name":"Identifier","src":"10980:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":879,"type":"address[] calldata","value":"_addresses"},"id":910,"name":"Identifier","src":"10994:10:30"}],"id":911,"name":"FunctionCall","src":"10980:25:30"}],"id":912,"name":"FunctionCall","src":"10942:64:30"}],"id":913,"name":"EmitStatement","src":"10937:69:30"}],"id":914,"name":"Block","src":"10447:566:30"}],"id":915,"name":"FunctionDefinition","src":"10340:673:30"},{"attributes":{"documentation":"@dev Method used to hash our whitelist address arrays.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"calculateHash","scope":932,"stateMutability":"pure","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_addresses","scope":931,"stateVariable":false,"storageLocation":"memory","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":916,"name":"ElementaryTypeName","src":"11105:7:30"}],"id":917,"name":"ArrayTypeName","src":"11105:9:30"}],"id":918,"name":"VariableDeclaration","src":"11105:27:30"}],"id":919,"name":"ParameterList","src":"11104:29:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":931,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":920,"name":"ElementaryTypeName","src":"11155:7:30"}],"id":921,"name":"VariableDeclaration","src":"11155:7:30"}],"id":922,"name":"ParameterList","src":"11154:9:30"},{"children":[{"attributes":{"functionReturnParameters":922},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":923,"name":"Identifier","src":"11181:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_memory_ptr","typeString":"address[] memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":924,"name":"Identifier","src":"11191:3:30"}],"id":925,"name":"MemberAccess","src":"11191:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":918,"type":"address[] memory","value":"_addresses"},"id":926,"name":"Identifier","src":"11208:10:30"}],"id":927,"name":"FunctionCall","src":"11191:28:30"}],"id":928,"name":"FunctionCall","src":"11181:39:30"}],"id":929,"name":"Return","src":"11174:46:30"}],"id":930,"name":"Block","src":"11164:63:30"}],"id":931,"name":"FunctionDefinition","src":"11082:145:30"}],"id":932,"name":"ContractDefinition","src":"2361:8868:30"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"library","documentation":"@title DailyLimitTrait This trait allows for daily limits to be included in other contracts.\n This contract will allow for a DailyLimit object to be instantiated and used.","fullyImplemented":true,"linearizedBaseContracts":[1134],"name":"DailyLimitTrait","scope":2510},"children":[{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":933,"name":"UserDefinedTypeName","src":"11447:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":934,"name":"ElementaryTypeName","src":"11460:7:30"}],"id":935,"name":"UsingForDirective","src":"11441:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":936,"name":"ParameterList","src":"11501:2:30"}],"id":937,"name":"EventDefinition","src":"11474:30:30"},{"attributes":{"canonicalName":"DailyLimitTrait.DailyLimit","name":"DailyLimit","scope":1134,"visibility":"public"},"children":[{"attributes":{"constant":false,"name":"value","scope":948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":938,"name":"ElementaryTypeName","src":"11538:7:30"}],"id":939,"name":"VariableDeclaration","src":"11538:13:30"},{"attributes":{"constant":false,"name":"available","scope":948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":940,"name":"ElementaryTypeName","src":"11561:7:30"}],"id":941,"name":"VariableDeclaration","src":"11561:17:30"},{"attributes":{"constant":false,"name":"limitTimestamp","scope":948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":942,"name":"ElementaryTypeName","src":"11588:7:30"}],"id":943,"name":"VariableDeclaration","src":"11588:22:30"},{"attributes":{"constant":false,"name":"pending","scope":948,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":944,"name":"ElementaryTypeName","src":"11620:7:30"}],"id":945,"name":"VariableDeclaration","src":"11620:15:30"},{"attributes":{"constant":false,"name":"controllerConfirmationRequired","scope":948,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":946,"name":"ElementaryTypeName","src":"11645:4:30"}],"id":947,"name":"VariableDeclaration","src":"11645:35:30"}],"id":948,"name":"StructDefinition","src":"11510:177:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_confirmLimitUpdate","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":970,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":949,"name":"UserDefinedTypeName","src":"11778:10:30"}],"id":950,"name":"VariableDeclaration","src":"11778:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":970,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":951,"name":"ElementaryTypeName","src":"11803:7:30"}],"id":952,"name":"VariableDeclaration","src":"11803:15:30"}],"id":953,"name":"ParameterList","src":"11777:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":954,"name":"ParameterList","src":"11829:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_51a99e4fe0e7ccb76d7b5ddb649e7516f5e27e1195b905cd87f22fbc56fc219b","typeString":"literal_string \"confirmed/submitted limit mismatch\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":955,"name":"Identifier","src":"11910:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":956,"name":"Identifier","src":"11918:4:30"}],"id":957,"name":"MemberAccess","src":"11918:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":952,"type":"uint256","value":"_amount"},"id":958,"name":"Identifier","src":"11934:7:30"}],"id":959,"name":"BinaryOperation","src":"11918:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"confirmed/submitted limit mismatch\"","value":"confirmed/submitted limit mismatch"},"id":960,"name":"Literal","src":"11943:36:30"}],"id":961,"name":"FunctionCall","src":"11910:70:30"}],"id":962,"name":"ExpressionStatement","src":"11910:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$948_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":963,"name":"Identifier","src":"12048:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":964,"name":"Identifier","src":"12061:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":950,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":965,"name":"Identifier","src":"12067:4:30"}],"id":966,"name":"MemberAccess","src":"12067:12:30"}],"id":967,"name":"FunctionCall","src":"12048:32:30"}],"id":968,"name":"ExpressionStatement","src":"12048:32:30"}],"id":969,"name":"Block","src":"11829:258:30"}],"id":970,"name":"FunctionDefinition","src":"11749:338:30"},{"attributes":{"documentation":"@dev Use up amount within the daily limit. Will fail if amount is larger than daily limit.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_enforceLimit","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1000,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":971,"name":"UserDefinedTypeName","src":"12215:10:30"}],"id":972,"name":"VariableDeclaration","src":"12215:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1000,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":973,"name":"ElementaryTypeName","src":"12240:7:30"}],"id":974,"name":"VariableDeclaration","src":"12240:15:30"}],"id":975,"name":"ParameterList","src":"12214:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":976,"name":"ParameterList","src":"12266:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$948_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":977,"name":"Identifier","src":"12328:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":972,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":978,"name":"Identifier","src":"12350:4:30"}],"id":979,"name":"FunctionCall","src":"12328:27:30"}],"id":980,"name":"ExpressionStatement","src":"12328:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_76fdd6ba40b4885ab45b8708dbc1ff56b4ee0a701903e21ff02ec4fc90e97cfd","typeString":"literal_string \"available=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":972,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":982,"name":"Identifier","src":"12373:4:30"}],"id":983,"name":"MemberAccess","src":"12373:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":974,"type":"uint256","value":"_amount"},"id":984,"name":"Identifier","src":"12391:7:30"}],"id":985,"name":"BinaryOperation","src":"12373:25:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617661696c61626c653c616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"available","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1007,"name":"Identifier","src":"12751:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":943,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1002,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1008,"name":"Identifier","src":"12757:4:30"}],"id":1009,"name":"MemberAccess","src":"12757:19:30"}],"id":1010,"name":"MemberAccess","src":"12757:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":1011,"name":"Literal","src":"12781:8:30"}],"id":1012,"name":"FunctionCall","src":"12757:33:30"}],"id":1013,"name":"BinaryOperation","src":"12751:39:30"},{"children":[{"attributes":{"functionReturnParameters":1006},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1002,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1014,"name":"Identifier","src":"12813:4:30"}],"id":1015,"name":"MemberAccess","src":"12813:10:30"}],"id":1016,"name":"Return","src":"12806:17:30"}],"id":1017,"name":"Block","src":"12792:42:30"},{"children":[{"attributes":{"functionReturnParameters":1006},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1002,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1018,"name":"Identifier","src":"12861:4:30"}],"id":1019,"name":"MemberAccess","src":"12861:14:30"}],"id":1020,"name":"Return","src":"12854:21:30"}],"id":1021,"name":"Block","src":"12840:46:30"}],"id":1022,"name":"IfStatement","src":"12747:139:30"}],"id":1023,"name":"Block","src":"12737:155:30"}],"id":1024,"name":"FunctionDefinition","src":"12652:240:30"},{"attributes":{"documentation":"@dev Modify the spend limit and spend available based on the provided value.\n @dev _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_modifyLimit","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1056,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1025,"name":"UserDefinedTypeName","src":"13060:10:30"}],"id":1026,"name":"VariableDeclaration","src":"13060:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1056,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1027,"name":"ElementaryTypeName","src":"13085:7:30"}],"id":1028,"name":"VariableDeclaration","src":"13085:15:30"}],"id":1029,"name":"ParameterList","src":"13059:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1030,"name":"ParameterList","src":"13110:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$948_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"}],"overloadedDeclarations":[null],"referencedDeclaration":1133,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer)","value":"_updateAvailableLimit"},"id":1031,"name":"Identifier","src":"13172:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1032,"name":"Identifier","src":"13194:4:30"}],"id":1033,"name":"FunctionCall","src":"13172:27:30"}],"id":1034,"name":"ExpressionStatement","src":"13172:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1035,"name":"Identifier","src":"13264:4:30"}],"id":1037,"name":"MemberAccess","src":"13264:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1028,"type":"uint256","value":"_amount"},"id":1038,"name":"Identifier","src":"13277:7:30"}],"id":1039,"name":"Assignment","src":"13264:20:30"}],"id":1040,"name":"ExpressionStatement","src":"13264:20:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1041,"name":"Identifier","src":"13376:4:30"}],"id":1042,"name":"MemberAccess","src":"13376:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1043,"name":"Identifier","src":"13393:4:30"}],"id":1044,"name":"MemberAccess","src":"13393:10:30"}],"id":1045,"name":"BinaryOperation","src":"13376:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1046,"name":"Identifier","src":"13419:4:30"}],"id":1048,"name":"MemberAccess","src":"13419:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1026,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1049,"name":"Identifier","src":"13436:4:30"}],"id":1050,"name":"MemberAccess","src":"13436:10:30"}],"id":1051,"name":"Assignment","src":"13419:27:30"}],"id":1052,"name":"ExpressionStatement","src":"13419:27:30"}],"id":1053,"name":"Block","src":"13405:52:30"}],"id":1054,"name":"IfStatement","src":"13372:85:30"}],"id":1055,"name":"Block","src":"13110:353:30"}],"id":1056,"name":"FunctionDefinition","src":"13038:425:30"},{"attributes":{"documentation":"@dev Set the daily limit.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_setLimit","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1082,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1057,"name":"UserDefinedTypeName","src":"13586:10:30"}],"id":1058,"name":"VariableDeclaration","src":"13586:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1082,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1059,"name":"ElementaryTypeName","src":"13611:7:30"}],"id":1060,"name":"VariableDeclaration","src":"13611:15:30"}],"id":1061,"name":"ParameterList","src":"13585:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1062,"name":"ParameterList","src":"13637:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_5515161ef75a198a2c79d5b0927b7d4cad620073ea22f64fc9faac79dbcba501","typeString":"literal_string \"limit already set\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1063,"name":"Identifier","src":"13709:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1058,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1064,"name":"Identifier","src":"13718:4:30"}],"id":1065,"name":"MemberAccess","src":"13718:35:30"}],"id":1066,"name":"UnaryOperation","src":"13717:36:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d697420616c726561647920736574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit already set\"","value":"limit already set"},"id":1067,"name":"Literal","src":"13755:19:30"}],"id":1068,"name":"FunctionCall","src":"13709:66:30"}],"id":1069,"name":"ExpressionStatement","src":"13709:66:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_struct$_DailyLimit_$948_storage_ptr","typeString":"struct DailyLimitTrait.DailyLimit storage pointer"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1056,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)","value":"_modifyLimit"},"id":1070,"name":"Identifier","src":"13844:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1058,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1071,"name":"Identifier","src":"13857:4:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1060,"type":"uint256","value":"_amount"},"id":1072,"name":"Identifier","src":"13863:7:30"}],"id":1073,"name":"FunctionCall","src":"13844:27:30"}],"id":1074,"name":"ExpressionStatement","src":"13844:27:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1058,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1075,"name":"Identifier","src":"13919:4:30"}],"id":1077,"name":"MemberAccess","src":"13919:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":1078,"name":"Literal","src":"13957:4:30"}],"id":1079,"name":"Assignment","src":"13919:42:30"}],"id":1080,"name":"ExpressionStatement","src":"13919:42:30"}],"id":1081,"name":"Block","src":"13637:331:30"}],"id":1082,"name":"FunctionDefinition","src":"13567:401:30"},{"attributes":{"documentation":"@dev Submit a daily limit update, needs to be confirmed.\n @param _amount is the daily limit amount in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_submitLimitUpdate","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1102,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1083,"name":"UserDefinedTypeName","src":"14131:10:30"}],"id":1084,"name":"VariableDeclaration","src":"14131:23:30"},{"attributes":{"constant":false,"name":"_amount","scope":1102,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1085,"name":"ElementaryTypeName","src":"14156:7:30"}],"id":1086,"name":"VariableDeclaration","src":"14156:15:30"}],"id":1087,"name":"ParameterList","src":"14130:42:30"},{"attributes":{"parameters":[null]},"children":[],"id":1088,"name":"ParameterList","src":"14182:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_d667d750d47924f17f0479d6107ac25f4e8879366a2d600f6b5ea07705c561f3","typeString":"literal_string \"limit hasn't been set yet\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1089,"name":"Identifier","src":"14246:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1084,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1090,"name":"Identifier","src":"14254:4:30"}],"id":1091,"name":"MemberAccess","src":"14254:35:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6c696d6974206861736e2774206265656e2073657420796574","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"limit hasn't been set yet\"","value":"limit hasn't been set yet"},"id":1092,"name":"Literal","src":"14291:27:30"}],"id":1093,"name":"FunctionCall","src":"14246:73:30"}],"id":1094,"name":"ExpressionStatement","src":"14246:73:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1084,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1095,"name":"Identifier","src":"14391:4:30"}],"id":1097,"name":"MemberAccess","src":"14391:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1086,"type":"uint256","value":"_amount"},"id":1098,"name":"Identifier","src":"14406:7:30"}],"id":1099,"name":"Assignment","src":"14391:22:30"}],"id":1100,"name":"ExpressionStatement","src":"14391:22:30"}],"id":1101,"name":"Block","src":"14182:238:30"}],"id":1102,"name":"FunctionDefinition","src":"14103:317:30"},{"attributes":{"documentation":"@dev Update available spend limit based on the daily reset.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_updateAvailableLimit","scope":1134,"stateMutability":"nonpayable","superFunction":null,"visibility":"private"},"children":[{"children":[{"attributes":{"constant":false,"name":"self","scope":1133,"stateVariable":false,"storageLocation":"storage","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1103,"name":"UserDefinedTypeName","src":"14525:10:30"}],"id":1104,"name":"VariableDeclaration","src":"14525:23:30"}],"id":1105,"name":"ParameterList","src":"14524:25:30"},{"attributes":{"parameters":[null]},"children":[],"id":1106,"name":"ParameterList","src":"14558:0:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1107,"name":"Identifier","src":"14572:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_86400_by_1","typeString":"int_const 86400"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"limitTimestamp","referencedDeclaration":943,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1104,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1108,"name":"Identifier","src":"14578:4:30"}],"id":1109,"name":"MemberAccess","src":"14578:19:30"}],"id":1110,"name":"MemberAccess","src":"14578:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3234","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"hours","token":"number","type":"int_const 86400","value":"24"},"id":1111,"name":"Literal","src":"14602:8:30"}],"id":1112,"name":"FunctionCall","src":"14578:33:30"}],"id":1113,"name":"BinaryOperation","src":"14572:39:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"limitTimestamp","referencedDeclaration":943,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1104,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1114,"name":"Identifier","src":"14672:4:30"}],"id":1116,"name":"MemberAccess","src":"14672:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1117,"name":"Identifier","src":"14694:3:30"}],"id":1118,"name":"Assignment","src":"14672:25:30"}],"id":1119,"name":"ExpressionStatement","src":"14672:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"member_name":"available","referencedDeclaration":941,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1104,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1120,"name":"Identifier","src":"14778:4:30"}],"id":1122,"name":"MemberAccess","src":"14778:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1104,"type":"struct DailyLimitTrait.DailyLimit storage pointer","value":"self"},"id":1123,"name":"Identifier","src":"14795:4:30"}],"id":1124,"name":"MemberAccess","src":"14795:10:30"}],"id":1125,"name":"Assignment","src":"14778:27:30"}],"id":1126,"name":"ExpressionStatement","src":"14778:27:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":937,"type":"function ()","value":"UpdatedAvailableLimit"},"id":1127,"name":"Identifier","src":"14824:21:30"}],"id":1128,"name":"FunctionCall","src":"14824:23:30"}],"id":1129,"name":"EmitStatement","src":"14819:28:30"}],"id":1130,"name":"Block","src":"14613:245:30"}],"id":1131,"name":"IfStatement","src":"14568:290:30"}],"id":1132,"name":"Block","src":"14558:306:30"}],"id":1133,"name":"FunctionDefinition","src":"14494:370:30"}],"id":1134,"name":"ContractDefinition","src":"11411:3455:30"},{"attributes":{"contractDependencies":[325,362,384,3206,3910],"contractKind":"contract","documentation":"@title it provides daily spend limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1266,384,362,3910,325,3206],"name":"SpendLimit","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":362,"type":"contract ControllableOwnable"},"id":1135,"name":"UserDefinedTypeName","src":"14949:19:30"}],"id":1136,"name":"InheritanceSpecifier","src":"14949:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":384,"type":"contract SelfCallableOwnable"},"id":1137,"name":"UserDefinedTypeName","src":"14970:19:30"}],"id":1138,"name":"InheritanceSpecifier","src":"14970:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetSpendLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1144,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1139,"name":"ElementaryTypeName","src":"15016:7:30"}],"id":1140,"name":"VariableDeclaration","src":"15016:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1144,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1141,"name":"ElementaryTypeName","src":"15033:7:30"}],"id":1142,"name":"VariableDeclaration","src":"15033:15:30"}],"id":1143,"name":"ParameterList","src":"15015:34:30"}],"id":1144,"name":"EventDefinition","src":"14996:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedSpendLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1148,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1145,"name":"ElementaryTypeName","src":"15087:7:30"}],"id":1146,"name":"VariableDeclaration","src":"15087:15:30"}],"id":1147,"name":"ParameterList","src":"15086:17:30"}],"id":1148,"name":"EventDefinition","src":"15055:49:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1134,"type":"library DailyLimitTrait"},"id":1149,"name":"UserDefinedTypeName","src":"15116:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1150,"name":"UserDefinedTypeName","src":"15136:26:30"}],"id":1151,"name":"UsingForDirective","src":"15110:53:30"},{"attributes":{"constant":false,"name":"_spendLimit","scope":1266,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1152,"name":"UserDefinedTypeName","src":"15169:26:30"}],"id":1153,"name":"VariableDeclaration","src":"15169:47:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily spend limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1266,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_limit_","scope":1170,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1154,"name":"ElementaryTypeName","src":"15302:7:30"}],"id":1155,"name":"VariableDeclaration","src":"15302:15:30"}],"id":1156,"name":"ParameterList","src":"15301:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1157,"name":"ParameterList","src":"15328:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1158,"name":"Identifier","src":"15338:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":948,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1159,"name":"Identifier","src":"15352:15:30"}],"id":1160,"name":"MemberAccess","src":"15352:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1155,"type":"uint256","value":"_limit_"},"id":1161,"name":"Identifier","src":"15379:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1155,"type":"uint256","value":"_limit_"},"id":1162,"name":"Identifier","src":"15388:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1163,"name":"Identifier","src":"15397:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1164,"name":"Literal","src":"15402:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1165,"name":"Literal","src":"15405:5:30"}],"id":1166,"name":"FunctionCall","src":"15352:59:30"}],"id":1167,"name":"Assignment","src":"15338:73:30"}],"id":1168,"name":"ExpressionStatement","src":"15338:73:30"}],"id":1169,"name":"Block","src":"15328:90:30"}],"id":1170,"name":"FunctionDefinition","src":"15290:128:30"},{"attributes":{"documentation":"@dev Confirm pending set daily limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmSpendLimitUpdate","scope":1266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1190,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1171,"name":"ElementaryTypeName","src":"15513:7:30"}],"id":1172,"name":"VariableDeclaration","src":"15513:15:30"}],"id":1173,"name":"ParameterList","src":"15512:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1176,"name":"ParameterList","src":"15554:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":1174,"name":"Identifier","src":"15539:14:30"}],"id":1175,"name":"ModifierInvocation","src":"15539:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":970,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1177,"name":"Identifier","src":"15564:11:30"}],"id":1179,"name":"MemberAccess","src":"15564:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1172,"type":"uint256","value":"_amount"},"id":1180,"name":"Identifier","src":"15596:7:30"}],"id":1181,"name":"FunctionCall","src":"15564:40:30"}],"id":1182,"name":"ExpressionStatement","src":"15564:40:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1144,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":1183,"name":"Identifier","src":"15619:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1184,"name":"Identifier","src":"15633:3:30"}],"id":1185,"name":"MemberAccess","src":"15633:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1172,"type":"uint256","value":"_amount"},"id":1186,"name":"Identifier","src":"15645:7:30"}],"id":1187,"name":"FunctionCall","src":"15619:34:30"}],"id":1188,"name":"EmitStatement","src":"15614:39:30"}],"id":1189,"name":"Block","src":"15554:106:30"}],"id":1190,"name":"FunctionDefinition","src":"15480:180:30"},{"attributes":{"documentation":"@dev Sets the initial daily spend (aka transfer) limit for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setSpendLimit","scope":1266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1210,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1191,"name":"ElementaryTypeName","src":"15840:7:30"}],"id":1192,"name":"VariableDeclaration","src":"15840:15:30"}],"id":1193,"name":"ParameterList","src":"15839:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1196,"name":"ParameterList","src":"15882:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1194,"name":"Identifier","src":"15866:15:30"}],"id":1195,"name":"ModifierInvocation","src":"15866:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1082,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1197,"name":"Identifier","src":"15892:11:30"}],"id":1199,"name":"MemberAccess","src":"15892:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1192,"type":"uint256","value":"_amount"},"id":1200,"name":"Identifier","src":"15914:7:30"}],"id":1201,"name":"FunctionCall","src":"15892:30:30"}],"id":1202,"name":"ExpressionStatement","src":"15892:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1144,"type":"function (address,uint256)","value":"SetSpendLimit"},"id":1203,"name":"Identifier","src":"15937:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1204,"name":"Identifier","src":"15951:3:30"}],"id":1205,"name":"MemberAccess","src":"15951:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1192,"type":"uint256","value":"_amount"},"id":1206,"name":"Identifier","src":"15963:7:30"}],"id":1207,"name":"FunctionCall","src":"15937:34:30"}],"id":1208,"name":"EmitStatement","src":"15932:39:30"}],"id":1209,"name":"Block","src":"15882:96:30"}],"id":1210,"name":"FunctionDefinition","src":"15817:161:30"},{"attributes":{"documentation":"@dev View your available limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitAvailable","scope":1266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1211,"name":"ParameterList","src":"16051:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1220,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1212,"name":"ElementaryTypeName","src":"16077:7:30"}],"id":1213,"name":"VariableDeclaration","src":"16077:7:30"}],"id":1214,"name":"ParameterList","src":"16076:9:30"},{"children":[{"attributes":{"functionReturnParameters":1214},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1024,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1215,"name":"Identifier","src":"16103:11:30"}],"id":1216,"name":"MemberAccess","src":"16103:30:30"}],"id":1217,"name":"FunctionCall","src":"16103:32:30"}],"id":1218,"name":"Return","src":"16096:39:30"}],"id":1219,"name":"Block","src":"16086:56:30"}],"id":1220,"name":"FunctionDefinition","src":"16023:119:30"},{"attributes":{"documentation":"@dev Is there an active spend limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitPending","scope":1266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1221,"name":"ParameterList","src":"16225:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1229,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1222,"name":"ElementaryTypeName","src":"16251:7:30"}],"id":1223,"name":"VariableDeclaration","src":"16251:7:30"}],"id":1224,"name":"ParameterList","src":"16250:9:30"},{"children":[{"attributes":{"functionReturnParameters":1224},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1225,"name":"Identifier","src":"16277:11:30"}],"id":1226,"name":"MemberAccess","src":"16277:19:30"}],"id":1227,"name":"Return","src":"16270:26:30"}],"id":1228,"name":"Block","src":"16260:43:30"}],"id":1229,"name":"FunctionDefinition","src":"16199:104:30"},{"attributes":{"documentation":"@dev Has the spend limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitControllerConfirmationRequired","scope":1266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1230,"name":"ParameterList","src":"16408:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1238,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1231,"name":"ElementaryTypeName","src":"16434:4:30"}],"id":1232,"name":"VariableDeclaration","src":"16434:4:30"}],"id":1233,"name":"ParameterList","src":"16433:6:30"},{"children":[{"attributes":{"functionReturnParameters":1233},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1234,"name":"Identifier","src":"16457:11:30"}],"id":1235,"name":"MemberAccess","src":"16457:42:30"}],"id":1236,"name":"Return","src":"16450:49:30"}],"id":1237,"name":"Block","src":"16440:66:30"}],"id":1238,"name":"FunctionDefinition","src":"16359:147:30"},{"attributes":{"documentation":"@dev View how much has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"spendLimitValue","scope":1266,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1239,"name":"ParameterList","src":"16586:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1247,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1240,"name":"ElementaryTypeName","src":"16612:7:30"}],"id":1241,"name":"VariableDeclaration","src":"16612:7:30"}],"id":1242,"name":"ParameterList","src":"16611:9:30"},{"children":[{"attributes":{"functionReturnParameters":1242},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1243,"name":"Identifier","src":"16638:11:30"}],"id":1244,"name":"MemberAccess","src":"16638:17:30"}],"id":1245,"name":"Return","src":"16631:24:30"}],"id":1246,"name":"Block","src":"16621:41:30"}],"id":1247,"name":"FunctionDefinition","src":"16562:100:30"},{"attributes":{"documentation":"@dev Submit a daily transfer limit update for non-whitelisted addresses.\n @param _amount is the daily limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitSpendLimitUpdate","scope":1266,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1265,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1248,"name":"ElementaryTypeName","src":"16838:7:30"}],"id":1249,"name":"VariableDeclaration","src":"16838:15:30"}],"id":1250,"name":"ParameterList","src":"16837:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1253,"name":"ParameterList","src":"16880:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1251,"name":"Identifier","src":"16864:15:30"}],"id":1252,"name":"ModifierInvocation","src":"16864:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1102,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":1254,"name":"Identifier","src":"16890:11:30"}],"id":1256,"name":"MemberAccess","src":"16890:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1249,"type":"uint256","value":"_amount"},"id":1257,"name":"Identifier","src":"16921:7:30"}],"id":1258,"name":"FunctionCall","src":"16890:39:30"}],"id":1259,"name":"ExpressionStatement","src":"16890:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1148,"type":"function (uint256)","value":"SubmittedSpendLimitUpdate"},"id":1260,"name":"Identifier","src":"16944:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1249,"type":"uint256","value":"_amount"},"id":1261,"name":"Identifier","src":"16970:7:30"}],"id":1262,"name":"FunctionCall","src":"16944:34:30"}],"id":1263,"name":"EmitStatement","src":"16939:39:30"}],"id":1264,"name":"Block","src":"16880:105:30"}],"id":1265,"name":"FunctionDefinition","src":"16806:179:30"}],"id":1266,"name":"ContractDefinition","src":"14926:2061:30"},{"attributes":{"contractDependencies":[325,362,384,3206,3910],"contractKind":"contract","documentation":"@title GasTopUpLimit provides daily limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1424,384,362,3910,325,3206],"name":"GasTopUpLimit","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":362,"type":"contract ControllableOwnable"},"id":1267,"name":"UserDefinedTypeName","src":"17077:19:30"}],"id":1268,"name":"InheritanceSpecifier","src":"17077:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":384,"type":"contract SelfCallableOwnable"},"id":1269,"name":"UserDefinedTypeName","src":"17098:19:30"}],"id":1270,"name":"InheritanceSpecifier","src":"17098:19:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetGasTopUpLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1276,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1271,"name":"ElementaryTypeName","src":"17147:7:30"}],"id":1272,"name":"VariableDeclaration","src":"17147:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1276,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1273,"name":"ElementaryTypeName","src":"17164:7:30"}],"id":1274,"name":"VariableDeclaration","src":"17164:15:30"}],"id":1275,"name":"ParameterList","src":"17146:34:30"}],"id":1276,"name":"EventDefinition","src":"17124:57:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedGasTopUpLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1280,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1277,"name":"ElementaryTypeName","src":"17221:7:30"}],"id":1278,"name":"VariableDeclaration","src":"17221:15:30"}],"id":1279,"name":"ParameterList","src":"17220:17:30"}],"id":1280,"name":"EventDefinition","src":"17186:52:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_GAS_TOPUP_LIMIT","scope":1424,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1281,"name":"ElementaryTypeName","src":"17244:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"353030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 500000000000000000","value":"500"},"id":1282,"name":"Literal","src":"17296:10:30"}],"id":1283,"name":"VariableDeclaration","src":"17244:62:30"},{"attributes":{"constant":true,"name":"_MINIMUM_GAS_TOPUP_LIMIT","scope":1424,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1284,"name":"ElementaryTypeName","src":"17312:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":"finney","token":"number","type":"int_const 1000000000000000","value":"1"},"id":1285,"name":"Literal","src":"17364:8:30"}],"id":1286,"name":"VariableDeclaration","src":"17312:60:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1134,"type":"library DailyLimitTrait"},"id":1287,"name":"UserDefinedTypeName","src":"17385:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1288,"name":"UserDefinedTypeName","src":"17405:26:30"}],"id":1289,"name":"UsingForDirective","src":"17379:53:30"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":1424,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1290,"name":"UserDefinedTypeName","src":"17438:26:30"}],"id":1291,"name":"VariableDeclaration","src":"17438:50:30"},{"attributes":{"documentation":"@dev Constructor initializes the daily gas topup limit in wei.","implemented":true,"isConstructor":true,"kind":"constructor","modifiers":[null],"name":"","scope":1424,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1292,"name":"ParameterList","src":"17577:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1293,"name":"ParameterList","src":"17589:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1294,"name":"Identifier","src":"17599:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":948,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1295,"name":"Identifier","src":"17616:15:30"}],"id":1296,"name":"MemberAccess","src":"17616:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1283,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1297,"name":"Identifier","src":"17643:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1283,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1298,"name":"Identifier","src":"17669:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1299,"name":"Identifier","src":"17695:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1300,"name":"Literal","src":"17700:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1301,"name":"Literal","src":"17703:5:30"}],"id":1302,"name":"FunctionCall","src":"17616:93:30"}],"id":1303,"name":"Assignment","src":"17599:110:30"}],"id":1304,"name":"ExpressionStatement","src":"17599:110:30"}],"id":1305,"name":"Block","src":"17589:127:30"}],"id":1306,"name":"FunctionDefinition","src":"17566:150:30"},{"attributes":{"documentation":"@dev Confirm pending set top up gas limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmGasTopUpLimitUpdate","scope":1424,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1326,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1307,"name":"ElementaryTypeName","src":"17819:7:30"}],"id":1308,"name":"VariableDeclaration","src":"17819:15:30"}],"id":1309,"name":"ParameterList","src":"17818:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1312,"name":"ParameterList","src":"17860:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":1310,"name":"Identifier","src":"17845:14:30"}],"id":1311,"name":"ModifierInvocation","src":"17845:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":970,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1313,"name":"Identifier","src":"17870:14:30"}],"id":1315,"name":"MemberAccess","src":"17870:34:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1308,"type":"uint256","value":"_amount"},"id":1316,"name":"Identifier","src":"17905:7:30"}],"id":1317,"name":"FunctionCall","src":"17870:43:30"}],"id":1318,"name":"ExpressionStatement","src":"17870:43:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1276,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1319,"name":"Identifier","src":"17928:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1320,"name":"Identifier","src":"17945:3:30"}],"id":1321,"name":"MemberAccess","src":"17945:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1308,"type":"uint256","value":"_amount"},"id":1322,"name":"Identifier","src":"17957:7:30"}],"id":1323,"name":"FunctionCall","src":"17928:37:30"}],"id":1324,"name":"EmitStatement","src":"17923:42:30"}],"id":1325,"name":"Block","src":"17860:112:30"}],"id":1326,"name":"FunctionDefinition","src":"17783:189:30"},{"attributes":{"documentation":"@dev View your available gas top-up limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitAvailable","scope":1424,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1327,"name":"ParameterList","src":"18059:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1336,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1328,"name":"ElementaryTypeName","src":"18085:7:30"}],"id":1329,"name":"VariableDeclaration","src":"18085:7:30"}],"id":1330,"name":"ParameterList","src":"18084:9:30"},{"children":[{"attributes":{"functionReturnParameters":1330},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1024,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1331,"name":"Identifier","src":"18111:14:30"}],"id":1332,"name":"MemberAccess","src":"18111:33:30"}],"id":1333,"name":"FunctionCall","src":"18111:35:30"}],"id":1334,"name":"Return","src":"18104:42:30"}],"id":1335,"name":"Block","src":"18094:59:30"}],"id":1336,"name":"FunctionDefinition","src":"18028:125:30"},{"attributes":{"documentation":"@dev Is there an active gas top-up limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitPending","scope":1424,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1337,"name":"ParameterList","src":"18244:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1345,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1338,"name":"ElementaryTypeName","src":"18270:7:30"}],"id":1339,"name":"VariableDeclaration","src":"18270:7:30"}],"id":1340,"name":"ParameterList","src":"18269:9:30"},{"children":[{"attributes":{"functionReturnParameters":1340},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1341,"name":"Identifier","src":"18296:14:30"}],"id":1342,"name":"MemberAccess","src":"18296:22:30"}],"id":1343,"name":"Return","src":"18289:29:30"}],"id":1344,"name":"Block","src":"18279:46:30"}],"id":1345,"name":"FunctionDefinition","src":"18215:110:30"},{"attributes":{"documentation":"@dev Has the gas top-up limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitControllerConfirmationRequired","scope":1424,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1346,"name":"ParameterList","src":"18438:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1354,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1347,"name":"ElementaryTypeName","src":"18464:4:30"}],"id":1348,"name":"VariableDeclaration","src":"18464:4:30"}],"id":1349,"name":"ParameterList","src":"18463:6:30"},{"children":[{"attributes":{"functionReturnParameters":1349},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1350,"name":"Identifier","src":"18487:14:30"}],"id":1351,"name":"MemberAccess","src":"18487:45:30"}],"id":1352,"name":"Return","src":"18480:52:30"}],"id":1353,"name":"Block","src":"18470:69:30"}],"id":1354,"name":"FunctionDefinition","src":"18386:153:30"},{"attributes":{"documentation":"@dev View how much gas top-up has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"gasTopUpLimitValue","scope":1424,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1355,"name":"ParameterList","src":"18633:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1363,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1356,"name":"ElementaryTypeName","src":"18659:7:30"}],"id":1357,"name":"VariableDeclaration","src":"18659:7:30"}],"id":1358,"name":"ParameterList","src":"18658:9:30"},{"children":[{"attributes":{"functionReturnParameters":1358},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1359,"name":"Identifier","src":"18685:14:30"}],"id":1360,"name":"MemberAccess","src":"18685:20:30"}],"id":1361,"name":"Return","src":"18678:27:30"}],"id":1362,"name":"Block","src":"18668:44:30"}],"id":1363,"name":"FunctionDefinition","src":"18606:106:30"},{"attributes":{"documentation":"@dev Sets the daily gas top up limit.\n @param _amount is the gas top up amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"setGasTopUpLimit","scope":1424,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1394,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1364,"name":"ElementaryTypeName","src":"18846:7:30"}],"id":1365,"name":"VariableDeclaration","src":"18846:15:30"}],"id":1366,"name":"ParameterList","src":"18845:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1369,"name":"ParameterList","src":"18888:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1367,"name":"Identifier","src":"18872:15:30"}],"id":1368,"name":"ModifierInvocation","src":"18872:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1370,"name":"Identifier","src":"18898:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1286,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1371,"name":"Identifier","src":"18906:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"uint256","value":"_amount"},"id":1372,"name":"Identifier","src":"18934:7:30"}],"id":1373,"name":"BinaryOperation","src":"18906:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"uint256","value":"_amount"},"id":1374,"name":"Identifier","src":"18945:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1283,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1375,"name":"Identifier","src":"18956:24:30"}],"id":1376,"name":"BinaryOperation","src":"18945:35:30"}],"id":1377,"name":"BinaryOperation","src":"18906:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1378,"name":"Literal","src":"18982:21:30"}],"id":1379,"name":"FunctionCall","src":"18898:106:30"}],"id":1380,"name":"ExpressionStatement","src":"18898:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1082,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1381,"name":"Identifier","src":"19014:14:30"}],"id":1383,"name":"MemberAccess","src":"19014:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"uint256","value":"_amount"},"id":1384,"name":"Identifier","src":"19039:7:30"}],"id":1385,"name":"FunctionCall","src":"19014:33:30"}],"id":1386,"name":"ExpressionStatement","src":"19014:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1276,"type":"function (address,uint256)","value":"SetGasTopUpLimit"},"id":1387,"name":"Identifier","src":"19062:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1388,"name":"Identifier","src":"19079:3:30"}],"id":1389,"name":"MemberAccess","src":"19079:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1365,"type":"uint256","value":"_amount"},"id":1390,"name":"Identifier","src":"19091:7:30"}],"id":1391,"name":"FunctionCall","src":"19062:37:30"}],"id":1392,"name":"EmitStatement","src":"19057:42:30"}],"id":1393,"name":"Block","src":"18888:218:30"}],"id":1394,"name":"FunctionDefinition","src":"18820:286:30"},{"attributes":{"documentation":"@dev Submit a daily gas top up limit update.\n @param _amount is the daily top up gas limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitGasTopUpLimitUpdate","scope":1424,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1423,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1395,"name":"ElementaryTypeName","src":"19268:7:30"}],"id":1396,"name":"VariableDeclaration","src":"19268:15:30"}],"id":1397,"name":"ParameterList","src":"19267:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1400,"name":"ParameterList","src":"19310:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1398,"name":"Identifier","src":"19294:15:30"}],"id":1399,"name":"ModifierInvocation","src":"19294:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_8ef32e56e87583017592da323033e7b583a948c89b4462ec1e684ad3c4c6fd7f","typeString":"literal_string \"out of range top-up\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1401,"name":"Identifier","src":"19320:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1286,"type":"uint256","value":"_MINIMUM_GAS_TOPUP_LIMIT"},"id":1402,"name":"Identifier","src":"19328:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1396,"type":"uint256","value":"_amount"},"id":1403,"name":"Identifier","src":"19356:7:30"}],"id":1404,"name":"BinaryOperation","src":"19328:35:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1396,"type":"uint256","value":"_amount"},"id":1405,"name":"Identifier","src":"19367:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1283,"type":"uint256","value":"_MAXIMUM_GAS_TOPUP_LIMIT"},"id":1406,"name":"Identifier","src":"19378:24:30"}],"id":1407,"name":"BinaryOperation","src":"19367:35:30"}],"id":1408,"name":"BinaryOperation","src":"19328:74:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e676520746f702d7570","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range top-up\"","value":"out of range top-up"},"id":1409,"name":"Literal","src":"19404:21:30"}],"id":1410,"name":"FunctionCall","src":"19320:106:30"}],"id":1411,"name":"ExpressionStatement","src":"19320:106:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1102,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":1412,"name":"Identifier","src":"19436:14:30"}],"id":1414,"name":"MemberAccess","src":"19436:33:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1396,"type":"uint256","value":"_amount"},"id":1415,"name":"Identifier","src":"19470:7:30"}],"id":1416,"name":"FunctionCall","src":"19436:42:30"}],"id":1417,"name":"ExpressionStatement","src":"19436:42:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1280,"type":"function (uint256)","value":"SubmittedGasTopUpLimitUpdate"},"id":1418,"name":"Identifier","src":"19493:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1396,"type":"uint256","value":"_amount"},"id":1419,"name":"Identifier","src":"19522:7:30"}],"id":1420,"name":"FunctionCall","src":"19493:37:30"}],"id":1421,"name":"EmitStatement","src":"19488:42:30"}],"id":1422,"name":"Block","src":"19310:227:30"}],"id":1423,"name":"FunctionDefinition","src":"19233:304:30"}],"id":1424,"name":"ContractDefinition","src":"17051:2488:30"},{"attributes":{"contractDependencies":[325,362,384,3206,3910,4127],"contractKind":"contract","documentation":"@title LoadLimit provides daily load limit functionality.","fullyImplemented":false,"linearizedBaseContracts":[1598,4127,384,362,3910,325,3206],"name":"LoadLimit","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ControllableOwnable","referencedDeclaration":362,"type":"contract ControllableOwnable"},"id":1425,"name":"UserDefinedTypeName","src":"19626:19:30"}],"id":1426,"name":"InheritanceSpecifier","src":"19626:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SelfCallableOwnable","referencedDeclaration":384,"type":"contract SelfCallableOwnable"},"id":1427,"name":"UserDefinedTypeName","src":"19647:19:30"}],"id":1428,"name":"InheritanceSpecifier","src":"19647:19:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"TokenWhitelistable","referencedDeclaration":4127,"type":"contract TokenWhitelistable"},"id":1429,"name":"UserDefinedTypeName","src":"19668:18:30"}],"id":1430,"name":"InheritanceSpecifier","src":"19668:18:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SetLoadLimit"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1436,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1431,"name":"ElementaryTypeName","src":"19712:7:30"}],"id":1432,"name":"VariableDeclaration","src":"19712:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1436,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1433,"name":"ElementaryTypeName","src":"19729:7:30"}],"id":1434,"name":"VariableDeclaration","src":"19729:15:30"}],"id":1435,"name":"ParameterList","src":"19711:34:30"}],"id":1436,"name":"EventDefinition","src":"19693:53:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"SubmittedLoadLimitUpdate"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1440,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1437,"name":"ElementaryTypeName","src":"19782:7:30"}],"id":1438,"name":"VariableDeclaration","src":"19782:15:30"}],"id":1439,"name":"ParameterList","src":"19781:17:30"}],"id":1440,"name":"EventDefinition","src":"19751:48:30"},{"attributes":{"constant":true,"name":"_MAXIMUM_STABLECOIN_LOAD_LIMIT","scope":1598,"stateVariable":true,"storageLocation":"default","type":"uint256","visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1441,"name":"ElementaryTypeName","src":"19805:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3130303030","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 10000","value":"10000"},"id":1442,"name":"Literal","src":"19863:5:30"}],"id":1443,"name":"VariableDeclaration","src":"19805:63:30"},{"attributes":{"constant":false,"name":"_maximumLoadLimit","scope":1598,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"private"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1444,"name":"ElementaryTypeName","src":"19881:7:30"}],"id":1445,"name":"VariableDeclaration","src":"19881:33:30"},{"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait","referencedDeclaration":1134,"type":"library DailyLimitTrait"},"id":1446,"name":"UserDefinedTypeName","src":"19927:15:30"},{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1447,"name":"UserDefinedTypeName","src":"19947:26:30"}],"id":1448,"name":"UsingForDirective","src":"19921:53:30"},{"attributes":{"constant":false,"name":"_loadLimit","scope":1598,"stateVariable":true,"storageLocation":"default","type":"struct DailyLimitTrait.DailyLimit","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"DailyLimitTrait.DailyLimit","referencedDeclaration":948,"type":"struct DailyLimitTrait.DailyLimit"},"id":1449,"name":"UserDefinedTypeName","src":"19980:26:30"}],"id":1450,"name":"VariableDeclaration","src":"19980:46:30"},{"attributes":{"documentation":null,"implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":1598,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1488,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1451,"name":"ElementaryTypeName","src":"20045:7:30"}],"id":1452,"name":"VariableDeclaration","src":"20045:28:30"}],"id":1453,"name":"ParameterList","src":"20044:30:30"},{"attributes":{"parameters":[null]},"children":[],"id":1457,"name":"ParameterList","src":"20125:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":4127,"type":"type(contract TokenWhitelistable)","value":"TokenWhitelistable"},"id":1454,"name":"Identifier","src":"20084:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1452,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1455,"name":"Identifier","src":"20103:20:30"}],"id":1456,"name":"ModifierInvocation","src":"20084:40:30"},{"children":[{"attributes":{"assignments":[null,1459,null,null,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":1487,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1458,"name":"ElementaryTypeName","src":"20138:7:30"}],"id":1459,"name":"VariableDeclaration","src":"20138:27:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":1460,"name":"Identifier","src":"20179:18:30"}],"id":1461,"name":"FunctionCall","src":"20179:20:30"}],"id":1462,"name":"VariableDeclarationStatement","src":"20135:64:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_9e91ed084014006e202586b158c3035ec40db0f637c146d3fdad49cda6c7a17a","typeString":"literal_string \"no stablecoin\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1463,"name":"Identifier","src":"20209:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1459,"type":"uint256","value":"stablecoinMagnitude"},"id":1464,"name":"Identifier","src":"20217:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1465,"name":"Literal","src":"20239:1:30"}],"id":1466,"name":"BinaryOperation","src":"20217:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f20737461626c65636f696e","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"no stablecoin\"","value":"no stablecoin"},"id":1467,"name":"Literal","src":"20242:15:30"}],"id":1468,"name":"FunctionCall","src":"20209:49:30"}],"id":1469,"name":"ExpressionStatement","src":"20209:49:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1470,"name":"Identifier","src":"20268:17:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"*","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1443,"type":"uint256","value":"_MAXIMUM_STABLECOIN_LOAD_LIMIT"},"id":1471,"name":"Identifier","src":"20288:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1459,"type":"uint256","value":"stablecoinMagnitude"},"id":1472,"name":"Identifier","src":"20321:19:30"}],"id":1473,"name":"BinaryOperation","src":"20288:52:30"}],"id":1474,"name":"Assignment","src":"20268:72:30"}],"id":1475,"name":"ExpressionStatement","src":"20268:72:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"struct DailyLimitTrait.DailyLimit storage ref"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1476,"name":"Identifier","src":"20350:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":true,"lValueRequested":false,"names":[null],"type":"struct DailyLimitTrait.DailyLimit memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"DailyLimit","referencedDeclaration":948,"type":"type(struct DailyLimitTrait.DailyLimit storage pointer)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1134,"type":"type(library DailyLimitTrait)","value":"DailyLimitTrait"},"id":1477,"name":"Identifier","src":"20363:15:30"}],"id":1478,"name":"MemberAccess","src":"20363:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1479,"name":"Identifier","src":"20390:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1480,"name":"Identifier","src":"20409:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10539,"type":"uint256","value":"now"},"id":1481,"name":"Identifier","src":"20428:3:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1482,"name":"Literal","src":"20433:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":1483,"name":"Literal","src":"20436:5:30"}],"id":1484,"name":"FunctionCall","src":"20363:79:30"}],"id":1485,"name":"Assignment","src":"20350:92:30"}],"id":1486,"name":"ExpressionStatement","src":"20350:92:30"}],"id":1487,"name":"Block","src":"20125:324:30"}],"id":1488,"name":"FunctionDefinition","src":"20033:416:30"},{"attributes":{"documentation":"@dev Sets a daily card load limit.\n @param _amount is the card load amount in current stablecoin base units.","implemented":true,"isConstructor":false,"kind":"function","name":"setLoadLimit","scope":1598,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1515,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1489,"name":"ElementaryTypeName","src":"20601:7:30"}],"id":1490,"name":"VariableDeclaration","src":"20601:15:30"}],"id":1491,"name":"ParameterList","src":"20600:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1494,"name":"ParameterList","src":"20643:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1492,"name":"Identifier","src":"20627:15:30"}],"id":1493,"name":"ModifierInvocation","src":"20627:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1495,"name":"Identifier","src":"20653:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1490,"type":"uint256","value":"_amount"},"id":1496,"name":"Identifier","src":"20661:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1497,"name":"Identifier","src":"20672:17:30"}],"id":1498,"name":"BinaryOperation","src":"20661:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1499,"name":"Literal","src":"20691:26:30"}],"id":1500,"name":"FunctionCall","src":"20653:65:30"}],"id":1501,"name":"ExpressionStatement","src":"20653:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_setLimit","referencedDeclaration":1082,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1502,"name":"Identifier","src":"20728:10:30"}],"id":1504,"name":"MemberAccess","src":"20728:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1490,"type":"uint256","value":"_amount"},"id":1505,"name":"Identifier","src":"20749:7:30"}],"id":1506,"name":"FunctionCall","src":"20728:29:30"}],"id":1507,"name":"ExpressionStatement","src":"20728:29:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1436,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1508,"name":"Identifier","src":"20772:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1509,"name":"Identifier","src":"20785:3:30"}],"id":1510,"name":"MemberAccess","src":"20785:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1490,"type":"uint256","value":"_amount"},"id":1511,"name":"Identifier","src":"20797:7:30"}],"id":1512,"name":"FunctionCall","src":"20772:33:30"}],"id":1513,"name":"EmitStatement","src":"20767:38:30"}],"id":1514,"name":"Block","src":"20643:169:30"}],"id":1515,"name":"FunctionDefinition","src":"20579:233:30"},{"attributes":{"documentation":"@dev Submit a daily load limit update.\n @param _amount is the daily load limit amount in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"submitLoadLimitUpdate","scope":1598,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1540,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1516,"name":"ElementaryTypeName","src":"20958:7:30"}],"id":1517,"name":"VariableDeclaration","src":"20958:15:30"}],"id":1518,"name":"ParameterList","src":"20957:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1521,"name":"ParameterList","src":"21000:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1519,"name":"Identifier","src":"20984:15:30"}],"id":1520,"name":"ModifierInvocation","src":"20984:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_66be9865d9b39b978d2383ca87058737611814cc915caed1ce750f8ba6165b5d","typeString":"literal_string \"out of range load amount\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1522,"name":"Identifier","src":"21010:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1517,"type":"uint256","value":"_amount"},"id":1523,"name":"Identifier","src":"21018:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1445,"type":"uint256","value":"_maximumLoadLimit"},"id":1524,"name":"Identifier","src":"21029:17:30"}],"id":1525,"name":"BinaryOperation","src":"21018:28:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f662072616e6765206c6f616420616d6f756e74","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of range load amount\"","value":"out of range load amount"},"id":1526,"name":"Literal","src":"21048:26:30"}],"id":1527,"name":"FunctionCall","src":"21010:65:30"}],"id":1528,"name":"ExpressionStatement","src":"21010:65:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_submitLimitUpdate","referencedDeclaration":1102,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1529,"name":"Identifier","src":"21085:10:30"}],"id":1531,"name":"MemberAccess","src":"21085:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1517,"type":"uint256","value":"_amount"},"id":1532,"name":"Identifier","src":"21115:7:30"}],"id":1533,"name":"FunctionCall","src":"21085:38:30"}],"id":1534,"name":"ExpressionStatement","src":"21085:38:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1440,"type":"function (uint256)","value":"SubmittedLoadLimitUpdate"},"id":1535,"name":"Identifier","src":"21138:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1517,"type":"uint256","value":"_amount"},"id":1536,"name":"Identifier","src":"21163:7:30"}],"id":1537,"name":"FunctionCall","src":"21138:33:30"}],"id":1538,"name":"EmitStatement","src":"21133:38:30"}],"id":1539,"name":"Block","src":"21000:178:30"}],"id":1540,"name":"FunctionDefinition","src":"20927:251:30"},{"attributes":{"documentation":"@dev Confirm pending set load limit operation.","implemented":true,"isConstructor":false,"kind":"function","name":"confirmLoadLimitUpdate","scope":1598,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":1560,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1541,"name":"ElementaryTypeName","src":"21271:7:30"}],"id":1542,"name":"VariableDeclaration","src":"21271:15:30"}],"id":1543,"name":"ParameterList","src":"21270:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":1546,"name":"ParameterList","src":"21312:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":1544,"name":"Identifier","src":"21297:14:30"}],"id":1545,"name":"ModifierInvocation","src":"21297:14:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_confirmLimitUpdate","referencedDeclaration":970,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1547,"name":"Identifier","src":"21322:10:30"}],"id":1549,"name":"MemberAccess","src":"21322:30:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1542,"type":"uint256","value":"_amount"},"id":1550,"name":"Identifier","src":"21353:7:30"}],"id":1551,"name":"FunctionCall","src":"21322:39:30"}],"id":1552,"name":"ExpressionStatement","src":"21322:39:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1436,"type":"function (address,uint256)","value":"SetLoadLimit"},"id":1553,"name":"Identifier","src":"21376:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1554,"name":"Identifier","src":"21389:3:30"}],"id":1555,"name":"MemberAccess","src":"21389:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1542,"type":"uint256","value":"_amount"},"id":1556,"name":"Identifier","src":"21401:7:30"}],"id":1557,"name":"FunctionCall","src":"21376:33:30"}],"id":1558,"name":"EmitStatement","src":"21371:38:30"}],"id":1559,"name":"Block","src":"21312:104:30"}],"id":1560,"name":"FunctionDefinition","src":"21239:177:30"},{"attributes":{"documentation":"@dev View your available load limit","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitAvailable","scope":1598,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1561,"name":"ParameterList","src":"21493:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1570,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1562,"name":"ElementaryTypeName","src":"21519:7:30"}],"id":1563,"name":"VariableDeclaration","src":"21519:7:30"}],"id":1564,"name":"ParameterList","src":"21518:9:30"},{"children":[{"attributes":{"functionReturnParameters":1564},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_getAvailableLimit","referencedDeclaration":1024,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer) view returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1565,"name":"Identifier","src":"21545:10:30"}],"id":1566,"name":"MemberAccess","src":"21545:29:30"}],"id":1567,"name":"FunctionCall","src":"21545:31:30"}],"id":1568,"name":"Return","src":"21538:38:30"}],"id":1569,"name":"Block","src":"21528:55:30"}],"id":1570,"name":"FunctionDefinition","src":"21466:117:30"},{"attributes":{"documentation":"@dev Is there an active load limit change","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitPending","scope":1598,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1571,"name":"ParameterList","src":"21664:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1579,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1572,"name":"ElementaryTypeName","src":"21690:7:30"}],"id":1573,"name":"VariableDeclaration","src":"21690:7:30"}],"id":1574,"name":"ParameterList","src":"21689:9:30"},{"children":[{"attributes":{"functionReturnParameters":1574},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"pending","referencedDeclaration":945,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1575,"name":"Identifier","src":"21716:10:30"}],"id":1576,"name":"MemberAccess","src":"21716:18:30"}],"id":1577,"name":"Return","src":"21709:25:30"}],"id":1578,"name":"Block","src":"21699:42:30"}],"id":1579,"name":"FunctionDefinition","src":"21639:102:30"},{"attributes":{"documentation":"@dev Has the load limit been initialised","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitControllerConfirmationRequired","scope":1598,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1580,"name":"ParameterList","src":"21844:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1588,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1581,"name":"ElementaryTypeName","src":"21870:4:30"}],"id":1582,"name":"VariableDeclaration","src":"21870:4:30"}],"id":1583,"name":"ParameterList","src":"21869:6:30"},{"children":[{"attributes":{"functionReturnParameters":1583},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"controllerConfirmationRequired","referencedDeclaration":947,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1584,"name":"Identifier","src":"21893:10:30"}],"id":1585,"name":"MemberAccess","src":"21893:41:30"}],"id":1586,"name":"Return","src":"21886:48:30"}],"id":1587,"name":"Block","src":"21876:65:30"}],"id":1588,"name":"FunctionDefinition","src":"21796:145:30"},{"attributes":{"documentation":"@dev View how much laod limit has been spent already","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"loadLimitValue","scope":1598,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1589,"name":"ParameterList","src":"22031:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1597,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1590,"name":"ElementaryTypeName","src":"22057:7:30"}],"id":1591,"name":"VariableDeclaration","src":"22057:7:30"}],"id":1592,"name":"ParameterList","src":"22056:9:30"},{"children":[{"attributes":{"functionReturnParameters":1592},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":939,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1593,"name":"Identifier","src":"22083:10:30"}],"id":1594,"name":"MemberAccess","src":"22083:16:30"}],"id":1595,"name":"Return","src":"22076:23:30"}],"id":1596,"name":"Block","src":"22066:40:30"}],"id":1597,"name":"FunctionDefinition","src":"22008:98:30"}],"id":1598,"name":"ContractDefinition","src":"19604:2504:30"},{"attributes":{"contractDependencies":[325,362,384,932,1266,1424,1598,3206,3316,3753,3910,4127,4167],"contractKind":"contract","documentation":"@title Asset wallet with extra security features, gas top up management and card integration.","fullyImplemented":true,"linearizedBaseContracts":[2509,3753,4167,3316,1266,932,1598,4127,1424,384,362,3910,325,3206],"name":"Wallet","scope":2510},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":1599,"name":"UserDefinedTypeName","src":"22228:13:30"}],"id":1600,"name":"InheritanceSpecifier","src":"22228:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"GasTopUpLimit","referencedDeclaration":1424,"type":"contract GasTopUpLimit"},"id":1601,"name":"UserDefinedTypeName","src":"22243:13:30"}],"id":1602,"name":"InheritanceSpecifier","src":"22243:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"LoadLimit","referencedDeclaration":1598,"type":"contract LoadLimit"},"id":1603,"name":"UserDefinedTypeName","src":"22258:9:30"}],"id":1604,"name":"InheritanceSpecifier","src":"22258:9:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"AddressWhitelist","referencedDeclaration":932,"type":"contract AddressWhitelist"},"id":1605,"name":"UserDefinedTypeName","src":"22269:16:30"}],"id":1606,"name":"InheritanceSpecifier","src":"22269:16:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"SpendLimit","referencedDeclaration":1266,"type":"contract SpendLimit"},"id":1607,"name":"UserDefinedTypeName","src":"22287:10:30"}],"id":1608,"name":"InheritanceSpecifier","src":"22287:10:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ERC165","referencedDeclaration":3316,"type":"contract ERC165"},"id":1609,"name":"UserDefinedTypeName","src":"22299:6:30"}],"id":1610,"name":"InheritanceSpecifier","src":"22299:6:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Transferrable","referencedDeclaration":4167,"type":"contract Transferrable"},"id":1611,"name":"UserDefinedTypeName","src":"22307:13:30"}],"id":1612,"name":"InheritanceSpecifier","src":"22307:13:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Balanceable","referencedDeclaration":3753,"type":"contract Balanceable"},"id":1613,"name":"UserDefinedTypeName","src":"22322:11:30"}],"id":1614,"name":"InheritanceSpecifier","src":"22322:11:30"},{"children":[{"attributes":{"contractScope":null,"name":"Address","referencedDeclaration":3225,"type":"library Address"},"id":1615,"name":"UserDefinedTypeName","src":"22346:7:30"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1616,"name":"ElementaryTypeName","src":"22358:7:30"}],"id":1617,"name":"UsingForDirective","src":"22340:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"ECDSA","referencedDeclaration":3306,"type":"library ECDSA"},"id":1618,"name":"UserDefinedTypeName","src":"22377:5:30"},{"attributes":{"name":"bytes32","type":"bytes32"},"id":1619,"name":"ElementaryTypeName","src":"22387:7:30"}],"id":1620,"name":"UsingForDirective","src":"22371:24:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeERC20","referencedDeclaration":3588,"type":"library SafeERC20"},"id":1621,"name":"UserDefinedTypeName","src":"22406:9:30"},{"attributes":{"contractScope":null,"name":"ERC20","referencedDeclaration":3369,"type":"contract ERC20"},"id":1622,"name":"UserDefinedTypeName","src":"22420:5:30"}],"id":1623,"name":"UsingForDirective","src":"22400:26:30"},{"children":[{"attributes":{"contractScope":null,"name":"SafeMath","referencedDeclaration":3721,"type":"library SafeMath"},"id":1624,"name":"UserDefinedTypeName","src":"22437:8:30"},{"attributes":{"name":"uint256","type":"uint256"},"id":1625,"name":"ElementaryTypeName","src":"22450:7:30"}],"id":1626,"name":"UsingForDirective","src":"22431:27:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"BulkTransferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1633,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1627,"name":"ElementaryTypeName","src":"22486:7:30"}],"id":1628,"name":"VariableDeclaration","src":"22486:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_assets","scope":1633,"stateVariable":false,"storageLocation":"default","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1629,"name":"ElementaryTypeName","src":"22499:7:30"}],"id":1630,"name":"ArrayTypeName","src":"22499:9:30"}],"id":1631,"name":"VariableDeclaration","src":"22499:17:30"}],"id":1632,"name":"ParameterList","src":"22485:32:30"}],"id":1633,"name":"EventDefinition","src":"22464:54:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedRelayedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1639,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1634,"name":"ElementaryTypeName","src":"22556:5:30"}],"id":1635,"name":"VariableDeclaration","src":"22556:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1639,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1636,"name":"ElementaryTypeName","src":"22569:5:30"}],"id":1637,"name":"VariableDeclaration","src":"22569:17:30"}],"id":1638,"name":"ParameterList","src":"22555:32:30"}],"id":1639,"name":"EventDefinition","src":"22523:65:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ExecutedTransaction"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_destination","scope":1649,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1640,"name":"ElementaryTypeName","src":"22619:7:30"}],"id":1641,"name":"VariableDeclaration","src":"22619:20:30"},{"attributes":{"constant":false,"indexed":false,"name":"_value","scope":1649,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1642,"name":"ElementaryTypeName","src":"22641:7:30"}],"id":1643,"name":"VariableDeclaration","src":"22641:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_data","scope":1649,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1644,"name":"ElementaryTypeName","src":"22657:5:30"}],"id":1645,"name":"VariableDeclaration","src":"22657:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_returndata","scope":1649,"stateVariable":false,"storageLocation":"default","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1646,"name":"ElementaryTypeName","src":"22670:5:30"}],"id":1647,"name":"VariableDeclaration","src":"22670:17:30"}],"id":1648,"name":"ParameterList","src":"22618:70:30"}],"id":1649,"name":"EventDefinition","src":"22593:96:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"IncreasedRelayNonce"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1655,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1650,"name":"ElementaryTypeName","src":"22720:7:30"}],"id":1651,"name":"VariableDeclaration","src":"22720:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_currentNonce","scope":1655,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1652,"name":"ElementaryTypeName","src":"22737:7:30"}],"id":1653,"name":"VariableDeclaration","src":"22737:21:30"}],"id":1654,"name":"ParameterList","src":"22719:40:30"}],"id":1655,"name":"EventDefinition","src":"22694:66:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"LoadedTokenCard"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1661,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1656,"name":"ElementaryTypeName","src":"22787:7:30"}],"id":1657,"name":"VariableDeclaration","src":"22787:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1661,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1658,"name":"ElementaryTypeName","src":"22803:7:30"}],"id":1659,"name":"VariableDeclaration","src":"22803:15:30"}],"id":1660,"name":"ParameterList","src":"22786:33:30"}],"id":1661,"name":"EventDefinition","src":"22765:55:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Received"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_from","scope":1667,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1662,"name":"ElementaryTypeName","src":"22840:7:30"}],"id":1663,"name":"VariableDeclaration","src":"22840:13:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1667,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1664,"name":"ElementaryTypeName","src":"22855:7:30"}],"id":1665,"name":"VariableDeclaration","src":"22855:15:30"}],"id":1666,"name":"ParameterList","src":"22839:32:30"}],"id":1667,"name":"EventDefinition","src":"22825:47:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"ToppedUpGas"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_sender","scope":1675,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1668,"name":"ElementaryTypeName","src":"22895:7:30"}],"id":1669,"name":"VariableDeclaration","src":"22895:15:30"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":1675,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1670,"name":"ElementaryTypeName","src":"22912:7:30"}],"id":1671,"name":"VariableDeclaration","src":"22912:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1675,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1672,"name":"ElementaryTypeName","src":"22928:7:30"}],"id":1673,"name":"VariableDeclaration","src":"22928:15:30"}],"id":1674,"name":"ParameterList","src":"22894:50:30"}],"id":1675,"name":"EventDefinition","src":"22877:68:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"Transferred"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_to","scope":1683,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1676,"name":"ElementaryTypeName","src":"22968:7:30"}],"id":1677,"name":"VariableDeclaration","src":"22968:11:30"},{"attributes":{"constant":false,"indexed":false,"name":"_asset","scope":1683,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1678,"name":"ElementaryTypeName","src":"22981:7:30"}],"id":1679,"name":"VariableDeclaration","src":"22981:14:30"},{"attributes":{"constant":false,"indexed":false,"name":"_amount","scope":1683,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1680,"name":"ElementaryTypeName","src":"22997:7:30"}],"id":1681,"name":"VariableDeclaration","src":"22997:15:30"}],"id":1682,"name":"ParameterList","src":"22967:46:30"}],"id":1683,"name":"EventDefinition","src":"22950:64:30"},{"attributes":{"anonymous":false,"documentation":null,"name":"UpdatedAvailableLimit"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1684,"name":"ParameterList","src":"23046:2:30"}],"id":1685,"name":"EventDefinition","src":"23019:30:30"},{"attributes":{"constant":true,"name":"WALLET_VERSION","scope":2509,"stateVariable":true,"storageLocation":"default","type":"string","visibility":"public"},"children":[{"attributes":{"name":"string","type":"string"},"id":1686,"name":"ElementaryTypeName","src":"23125:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"332e322e30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"3.2.0\"","value":"3.2.0"},"id":1687,"name":"Literal","src":"23165:7:30"}],"id":1688,"name":"VariableDeclaration","src":"23125:47:30"},{"attributes":{"constant":true,"name":"_EIP_1271","scope":2509,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1689,"name":"ElementaryTypeName","src":"23296:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783230633133623062","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 549534475","value":"0x20c13b0b"},"id":1690,"name":"Literal","src":"23332:10:30"}],"id":1691,"name":"VariableDeclaration","src":"23296:46:30"},{"attributes":{"constant":true,"name":"_EIP_1654","scope":2509,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1692,"name":"ElementaryTypeName","src":"23467:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783136323662613765","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 371636862","value":"0x1626ba7e"},"id":1693,"name":"Literal","src":"23503:10:30"}],"id":1694,"name":"VariableDeclaration","src":"23467:46:30"},{"attributes":{"constant":true,"name":"_ERC165_INTERFACE_ID","scope":2509,"stateVariable":true,"storageLocation":"default","type":"bytes4","visibility":"private"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1695,"name":"ElementaryTypeName","src":"23564:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031666663396137","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 33540519","value":"0x01ffc9a7"},"id":1696,"name":"Literal","src":"23611:10:30"}],"id":1697,"name":"VariableDeclaration","src":"23564:57:30"},{"attributes":{"constant":false,"name":"relayNonce","scope":2509,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1698,"name":"ElementaryTypeName","src":"23739:7:30"}],"id":1699,"name":"VariableDeclaration","src":"23739:25:30"},{"attributes":{"constant":false,"name":"_licenceNode","scope":2509,"stateVariable":true,"storageLocation":"default","type":"bytes32","value":null,"visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1700,"name":"ElementaryTypeName","src":"23845:7:30"}],"id":1701,"name":"VariableDeclaration","src":"23845:28:30"},{"attributes":{"documentation":"@dev Constructor initializes the wallet top up limit and the vault contract.\n @param _owner_ is the owner account of the wallet contract.\n @param _transferable_ indicates whether the contract ownership can be transferred.\n @param _ens_ is the address of the ENS registry.\n @param _tokenWhitelistNode_ is the ENS name node of the Token whitelist.\n @param _controllerNode_ is the ENS name node of the Controller contract.\n @param _licenceNode_ is the ENS name node of the Licence contract.\n @param _spendLimit_ is the initial spend limit.","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1702,"name":"ElementaryTypeName","src":"24495:15:30"}],"id":1703,"name":"VariableDeclaration","src":"24495:23:30"},{"attributes":{"constant":false,"name":"_transferable_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1704,"name":"ElementaryTypeName","src":"24528:4:30"}],"id":1705,"name":"VariableDeclaration","src":"24528:19:30"},{"attributes":{"constant":false,"name":"_ens_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1706,"name":"ElementaryTypeName","src":"24557:7:30"}],"id":1707,"name":"VariableDeclaration","src":"24557:13:30"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1708,"name":"ElementaryTypeName","src":"24580:7:30"}],"id":1709,"name":"VariableDeclaration","src":"24580:28:30"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1710,"name":"ElementaryTypeName","src":"24618:7:30"}],"id":1711,"name":"VariableDeclaration","src":"24618:24:30"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1712,"name":"ElementaryTypeName","src":"24652:7:30"}],"id":1713,"name":"VariableDeclaration","src":"24652:21:30"},{"attributes":{"constant":false,"name":"_spendLimit_","scope":1739,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1714,"name":"ElementaryTypeName","src":"24683:7:30"}],"id":1715,"name":"VariableDeclaration","src":"24683:20:30"}],"id":1716,"name":"ParameterList","src":"24485:224:30"},{"attributes":{"parameters":[null]},"children":[],"id":1733,"name":"ParameterList","src":"24859:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":1717,"name":"Identifier","src":"24717:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1707,"type":"address","value":"_ens_"},"id":1718,"name":"Identifier","src":"24731:5:30"}],"id":1719,"name":"ModifierInvocation","src":"24717:20:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1266,"type":"type(contract SpendLimit)","value":"SpendLimit"},"id":1720,"name":"Identifier","src":"24738:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1715,"type":"uint256","value":"_spendLimit_"},"id":1721,"name":"Identifier","src":"24749:12:30"}],"id":1722,"name":"ModifierInvocation","src":"24738:24:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3910,"type":"type(contract Ownable)","value":"Ownable"},"id":1723,"name":"Identifier","src":"24763:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1703,"type":"address payable","value":"_owner_"},"id":1724,"name":"Identifier","src":"24771:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1705,"type":"bool","value":"_transferable_"},"id":1725,"name":"Identifier","src":"24780:14:30"}],"id":1726,"name":"ModifierInvocation","src":"24763:32:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":1727,"name":"Identifier","src":"24796:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1711,"type":"bytes32","value":"_controllerNode_"},"id":1728,"name":"Identifier","src":"24809:16:30"}],"id":1729,"name":"ModifierInvocation","src":"24796:30:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1598,"type":"type(contract LoadLimit)","value":"LoadLimit"},"id":1730,"name":"Identifier","src":"24827:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1709,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":1731,"name":"Identifier","src":"24837:20:30"}],"id":1732,"name":"ModifierInvocation","src":"24827:31:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1701,"type":"bytes32","value":"_licenceNode"},"id":1734,"name":"Identifier","src":"24869:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1713,"type":"bytes32","value":"_licenceNode_"},"id":1735,"name":"Identifier","src":"24884:13:30"}],"id":1736,"name":"Assignment","src":"24869:28:30"}],"id":1737,"name":"ExpressionStatement","src":"24869:28:30"}],"id":1738,"name":"Block","src":"24859:45:30"}],"id":1739,"name":"FunctionDefinition","src":"24474:430:30"},{"attributes":{"documentation":"@dev Checks if the value is not zero.","name":"isNotZero","visibility":"internal"},"children":[{"children":[{"attributes":{"constant":false,"name":"_value","scope":1752,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1740,"name":"ElementaryTypeName","src":"24975:7:30"}],"id":1741,"name":"VariableDeclaration","src":"24975:14:30"}],"id":1742,"name":"ParameterList","src":"24974:16:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_a2d553a348030c1ee763b9cde2d3cc60fc831e78f559cd3758c25113c454c7f3","typeString":"literal_string \"value=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1743,"name":"Identifier","src":"25001:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1741,"type":"uint256","value":"_value"},"id":1744,"name":"Identifier","src":"25009:6:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1745,"name":"Literal","src":"25019:1:30"}],"id":1746,"name":"BinaryOperation","src":"25009:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"76616c75653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"value=0\"","value":"value=0"},"id":1747,"name":"Literal","src":"25022:9:30"}],"id":1748,"name":"FunctionCall","src":"25001:31:30"}],"id":1749,"name":"ExpressionStatement","src":"25001:31:30"},{"id":1750,"name":"PlaceholderStatement","src":"25042:1:30"}],"id":1751,"name":"Block","src":"24991:59:30"}],"id":1752,"name":"ModifierDefinition","src":"24956:94:30"},{"attributes":{"documentation":"@dev Ether can be deposited from any source, so this contract must be payable by anyone.","implemented":true,"isConstructor":false,"kind":"fallback","modifiers":[null],"name":"","scope":2509,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1753,"name":"ParameterList","src":"25161:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1754,"name":"ParameterList","src":"25181:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1667,"type":"function (address,uint256)","value":"Received"},"id":1755,"name":"Identifier","src":"25196:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1756,"name":"Identifier","src":"25205:3:30"}],"id":1757,"name":"MemberAccess","src":"25205:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1758,"name":"Identifier","src":"25217:3:30"}],"id":1759,"name":"MemberAccess","src":"25217:9:30"}],"id":1760,"name":"FunctionCall","src":"25196:31:30"}],"id":1761,"name":"EmitStatement","src":"25191:36:30"}],"id":1762,"name":"Block","src":"25181:53:30"}],"id":1763,"name":"FunctionDefinition","src":"25153:81:30"},{"attributes":{"documentation":"@dev This is a bulk transfer convenience function, used to migrate contracts.\n @notice If any of the transfers fail, this will revert.\n @param _to is the recipient's address, can't be the zero (0x0) address: transfer() will revert.\n @param _assets is an array of addresses of ERC20 tokens or 0x0 for ether.","implemented":true,"isConstructor":false,"kind":"function","name":"bulkTransfer","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":1819,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":1764,"name":"ElementaryTypeName","src":"25598:15:30"}],"id":1765,"name":"VariableDeclaration","src":"25598:19:30"},{"attributes":{"constant":false,"name":"_assets","scope":1819,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1766,"name":"ElementaryTypeName","src":"25619:7:30"}],"id":1767,"name":"ArrayTypeName","src":"25619:9:30"}],"id":1768,"name":"VariableDeclaration","src":"25619:26:30"}],"id":1769,"name":"ParameterList","src":"25597:49:30"},{"attributes":{"parameters":[null]},"children":[],"id":1772,"name":"ParameterList","src":"25672:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1770,"name":"Identifier","src":"25656:15:30"}],"id":1771,"name":"ModifierInvocation","src":"25656:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_dc6fe91796d2ae20b0ff36bc5dfbb8543f76fc0a4077e7ae85858f799173eb60","typeString":"literal_string \"asset array is empty\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1773,"name":"Identifier","src":"25737:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1774,"name":"Identifier","src":"25745:7:30"}],"id":1775,"name":"MemberAccess","src":"25745:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1776,"name":"Literal","src":"25763:1:30"}],"id":1777,"name":"BinaryOperation","src":"25745:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"617373657420617272617920697320656d707479","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"asset array is empty\"","value":"asset array is empty"},"id":1778,"name":"Literal","src":"25766:22:30"}],"id":1779,"name":"FunctionCall","src":"25737:52:30"}],"id":1780,"name":"ExpressionStatement","src":"25737:52:30"},{"children":[{"attributes":{"assignments":[1782]},"children":[{"attributes":{"constant":false,"name":"i","scope":1812,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1781,"name":"ElementaryTypeName","src":"25866:7:30"}],"id":1782,"name":"VariableDeclaration","src":"25866:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1783,"name":"Literal","src":"25878:1:30"}],"id":1784,"name":"VariableDeclarationStatement","src":"25866:13:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"i"},"id":1785,"name":"Identifier","src":"25881:1:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1786,"name":"Identifier","src":"25885:7:30"}],"id":1787,"name":"MemberAccess","src":"25885:14:30"}],"id":1788,"name":"BinaryOperation","src":"25881:18:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"i"},"id":1789,"name":"Identifier","src":"25901:1:30"}],"id":1790,"name":"UnaryOperation","src":"25901:3:30"}],"id":1791,"name":"ExpressionStatement","src":"25901:3:30"},{"children":[{"attributes":{"assignments":[1793]},"children":[{"attributes":{"constant":false,"name":"amount","scope":1811,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1792,"name":"ElementaryTypeName","src":"25920:7:30"}],"id":1793,"name":"VariableDeclaration","src":"25920:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3752,"type":"function (address,address) view returns (uint256)","value":"_balance"},"id":1794,"name":"Identifier","src":"25937:8:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1795,"name":"ElementaryTypeNameExpression","src":"25946:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10631,"type":"contract Wallet","value":"this"},"id":1796,"name":"Identifier","src":"25954:4:30"}],"id":1797,"name":"FunctionCall","src":"25946:13:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1798,"name":"Identifier","src":"25961:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"i"},"id":1799,"name":"Identifier","src":"25969:1:30"}],"id":1800,"name":"IndexAccess","src":"25961:10:30"}],"id":1801,"name":"FunctionCall","src":"25937:35:30"}],"id":1802,"name":"VariableDeclarationStatement","src":"25920:52:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2508,"type":"function (address payable,address,uint256)","value":"transfer"},"id":1803,"name":"Identifier","src":"26046:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"address payable","value":"_to"},"id":1804,"name":"Identifier","src":"26055:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1805,"name":"Identifier","src":"26060:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1782,"type":"uint256","value":"i"},"id":1806,"name":"Identifier","src":"26068:1:30"}],"id":1807,"name":"IndexAccess","src":"26060:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1793,"type":"uint256","value":"amount"},"id":1808,"name":"Identifier","src":"26072:6:30"}],"id":1809,"name":"FunctionCall","src":"26046:33:30"}],"id":1810,"name":"ExpressionStatement","src":"26046:33:30"}],"id":1811,"name":"Block","src":"25906:184:30"}],"id":1812,"name":"ForStatement","src":"25861:229:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":1633,"type":"function (address,address[] memory)","value":"BulkTransferred"},"id":1813,"name":"Identifier","src":"26105:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1765,"type":"address payable","value":"_to"},"id":1814,"name":"Identifier","src":"26121:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1768,"type":"address[] calldata","value":"_assets"},"id":1815,"name":"Identifier","src":"26126:7:30"}],"id":1816,"name":"FunctionCall","src":"26105:29:30"}],"id":1817,"name":"EmitStatement","src":"26100:34:30"}],"id":1818,"name":"Block","src":"25672:469:30"}],"id":1819,"name":"FunctionDefinition","src":"25576:565:30"},{"attributes":{"documentation":"@dev This function allows for the controller to relay transactions on the owner's behalf,\n the relayed message has to be signed by the owner.\n @param _nonce only used for relayed transactions, must match the wallet's relayNonce.\n @param _data abi encoded data payload.\n @param _signature signed prefix + data.","implemented":true,"isConstructor":false,"kind":"function","name":"executeRelayedTransaction","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_nonce","scope":1895,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1820,"name":"ElementaryTypeName","src":"26528:7:30"}],"id":1821,"name":"VariableDeclaration","src":"26528:14:30"},{"attributes":{"constant":false,"name":"_data","scope":1895,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1822,"name":"ElementaryTypeName","src":"26544:5:30"}],"id":1823,"name":"VariableDeclaration","src":"26544:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1895,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1824,"name":"ElementaryTypeName","src":"26566:5:30"}],"id":1825,"name":"VariableDeclaration","src":"26566:25:30"}],"id":1826,"name":"ParameterList","src":"26527:65:30"},{"attributes":{"parameters":[null]},"children":[],"id":1829,"name":"ParameterList","src":"26617:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":1827,"name":"Identifier","src":"26602:14:30"}],"id":1828,"name":"ModifierInvocation","src":"26602:14:30"},{"children":[{"attributes":{"assignments":[1831],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"id","scope":1894,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1830,"name":"ElementaryTypeName","src":"26797:7:30"}],"id":1831,"name":"VariableDeclaration","src":"26797:10:30"}],"id":1832,"name":"VariableDeclarationStatement","src":"26797:10:30"},{"attributes":{"externalReferences":[{"id":{"declaration":1831,"isOffset":false,"isSlot":false,"src":"26840:2:30","valueSize":1}}],"operations":"{ id := chainid() }"},"children":[],"id":1833,"name":"InlineAssembly","src":"26817:99:30"},{"attributes":{"assignments":[1835]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1894,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1834,"name":"ElementaryTypeName","src":"26925:7:30"}],"id":1835,"name":"VariableDeclaration","src":"26925:16:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"toEthSignedMessageHash","referencedDeclaration":3305,"type":"function (bytes32) pure returns (bytes32)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1836,"name":"Identifier","src":"26944:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_64973292d287a9bdfbf2540b56114a2ccf5255f1a0f38436d52dc69f44e83d8d","typeString":"literal_string \"monolith:\""},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":1837,"name":"Identifier","src":"26954:3:30"}],"id":1838,"name":"MemberAccess","src":"26954:16:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6d6f6e6f6c6974683a","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"monolith:\"","value":"monolith:"},"id":1839,"name":"Literal","src":"26971:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1831,"type":"uint256","value":"id"},"id":1840,"name":"Identifier","src":"26984:2:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1841,"name":"ElementaryTypeNameExpression","src":"26988:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10631,"type":"contract Wallet","value":"this"},"id":1842,"name":"Identifier","src":"26996:4:30"}],"id":1843,"name":"FunctionCall","src":"26988:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1821,"type":"uint256","value":"_nonce"},"id":1844,"name":"Identifier","src":"27003:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"bytes calldata","value":"_data"},"id":1845,"name":"Identifier","src":"27011:5:30"}],"id":1846,"name":"FunctionCall","src":"26954:63:30"}],"id":1847,"name":"FunctionCall","src":"26944:74:30"}],"id":1848,"name":"MemberAccess","src":"26944:97:30"}],"id":1849,"name":"FunctionCall","src":"26944:99:30"}],"id":1850,"name":"VariableDeclarationStatement","src":"26925:118:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1851,"name":"Identifier","src":"27111:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2442,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1852,"name":"Identifier","src":"27119:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1835,"type":"bytes32","value":"dataHash"},"id":1853,"name":"Identifier","src":"27136:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1825,"type":"bytes calldata","value":"_signature"},"id":1854,"name":"Identifier","src":"27146:10:30"}],"id":1855,"name":"FunctionCall","src":"27119:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1694,"type":"bytes4","value":"_EIP_1654"},"id":1856,"name":"Identifier","src":"27161:9:30"}],"id":1857,"name":"BinaryOperation","src":"27119:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1858,"name":"Literal","src":"27172:15:30"}],"id":1859,"name":"FunctionCall","src":"27111:77:30"}],"id":1860,"name":"ExpressionStatement","src":"27111:77:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_34adcd0a74b814374d2f97634e18f1e1bbbc6244d3bcc4bf9469772fc5d9d0ea","typeString":"literal_string \"tx replay\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1861,"name":"Identifier","src":"27283:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1821,"type":"uint256","value":"_nonce"},"id":1862,"name":"Identifier","src":"27291:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1699,"type":"uint256","value":"relayNonce"},"id":1863,"name":"Identifier","src":"27301:10:30"}],"id":1864,"name":"BinaryOperation","src":"27291:20:30"},{"attributes":{"argumentTypes":null,"hexvalue":"7478207265706c6179","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"tx replay\"","value":"tx replay"},"id":1865,"name":"Literal","src":"27313:11:30"}],"id":1866,"name":"FunctionCall","src":"27283:42:30"}],"id":1867,"name":"ExpressionStatement","src":"27283:42:30"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1917,"type":"function ()","value":"_increaseRelayNonce"},"id":1868,"name":"Identifier","src":"27335:19:30"}],"id":1869,"name":"FunctionCall","src":"27335:21:30"}],"id":1870,"name":"ExpressionStatement","src":"27335:21:30"},{"attributes":{"assignments":[1872,1874]},"children":[{"attributes":{"constant":false,"name":"success","scope":1894,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":1871,"name":"ElementaryTypeName","src":"27424:4:30"}],"id":1872,"name":"VariableDeclaration","src":"27424:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":1894,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1873,"name":"ElementaryTypeName","src":"27438:5:30"}],"id":1874,"name":"VariableDeclaration","src":"27438:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1875,"name":"ElementaryTypeNameExpression","src":"27465:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10631,"type":"contract Wallet","value":"this"},"id":1876,"name":"Identifier","src":"27473:4:30"}],"id":1877,"name":"FunctionCall","src":"27465:13:30"}],"id":1878,"name":"MemberAccess","src":"27465:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"bytes calldata","value":"_data"},"id":1879,"name":"Identifier","src":"27484:5:30"}],"id":1880,"name":"FunctionCall","src":"27465:25:30"}],"id":1881,"name":"VariableDeclarationStatement","src":"27423:67:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1882,"name":"Identifier","src":"27500:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1872,"type":"bool","value":"success"},"id":1883,"name":"Identifier","src":"27508:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":1884,"name":"ElementaryTypeNameExpression","src":"27517:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"bytes memory","value":"returndata"},"id":1885,"name":"Identifier","src":"27524:10:30"}],"id":1886,"name":"FunctionCall","src":"27517:18:30"}],"id":1887,"name":"FunctionCall","src":"27500:36:30"}],"id":1888,"name":"ExpressionStatement","src":"27500:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1639,"type":"function (bytes memory,bytes memory)","value":"ExecutedRelayedTransaction"},"id":1889,"name":"Identifier","src":"27552:26:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1823,"type":"bytes calldata","value":"_data"},"id":1890,"name":"Identifier","src":"27579:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1874,"type":"bytes memory","value":"returndata"},"id":1891,"name":"Identifier","src":"27586:10:30"}],"id":1892,"name":"FunctionCall","src":"27552:45:30"}],"id":1893,"name":"EmitStatement","src":"27547:50:30"}],"id":1894,"name":"Block","src":"26617:987:30"}],"id":1895,"name":"FunctionDefinition","src":"26493:1111:30"},{"attributes":{"documentation":"@dev This allows the user to cancel a transaction that was unexpectedly delayed by the relayer","implemented":true,"isConstructor":false,"kind":"function","name":"increaseRelayNonce","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1896,"name":"ParameterList","src":"27740:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1899,"name":"ParameterList","src":"27762:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3812,"type":"modifier ()","value":"onlyOwner"},"id":1897,"name":"Identifier","src":"27752:9:30"}],"id":1898,"name":"ModifierInvocation","src":"27752:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":1917,"type":"function ()","value":"_increaseRelayNonce"},"id":1900,"name":"Identifier","src":"27772:19:30"}],"id":1901,"name":"FunctionCall","src":"27772:21:30"}],"id":1902,"name":"ExpressionStatement","src":"27772:21:30"}],"id":1903,"name":"Block","src":"27762:38:30"}],"id":1904,"name":"FunctionDefinition","src":"27713:87:30"},{"attributes":{"documentation":"@dev This bumps the relayNonce and emits an event accordingly","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"_increaseRelayNonce","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1905,"name":"ParameterList","src":"27904:2:30"},{"attributes":{"parameters":[null]},"children":[],"id":1906,"name":"ParameterList","src":"27916:0:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"++","prefix":false,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1699,"type":"uint256","value":"relayNonce"},"id":1907,"name":"Identifier","src":"27926:10:30"}],"id":1908,"name":"UnaryOperation","src":"27926:12:30"}],"id":1909,"name":"ExpressionStatement","src":"27926:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1655,"type":"function (address,uint256)","value":"IncreasedRelayNonce"},"id":1910,"name":"Identifier","src":"27954:19:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":1911,"name":"Identifier","src":"27974:3:30"}],"id":1912,"name":"MemberAccess","src":"27974:10:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1699,"type":"uint256","value":"relayNonce"},"id":1913,"name":"Identifier","src":"27986:10:30"}],"id":1914,"name":"FunctionCall","src":"27954:43:30"}],"id":1915,"name":"EmitStatement","src":"27949:48:30"}],"id":1916,"name":"Block","src":"27916:88:30"}],"id":1917,"name":"FunctionDefinition","src":"27876:128:30"},{"attributes":{"documentation":"@dev Implements EIP-1271: receives the raw data (bytes)\n https://github.com/ethereum/EIPs/blob/master/EIPS/eip-1271.md\n @param _data Arbitrary length data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _data","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_data","scope":1948,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1918,"name":"ElementaryTypeName","src":"28325:5:30"}],"id":1919,"name":"VariableDeclaration","src":"28325:20:30"},{"attributes":{"constant":false,"name":"_signature","scope":1948,"stateVariable":false,"storageLocation":"calldata","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":1920,"name":"ElementaryTypeName","src":"28347:5:30"}],"id":1921,"name":"VariableDeclaration","src":"28347:25:30"}],"id":1922,"name":"ParameterList","src":"28324:49:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1948,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":1923,"name":"ElementaryTypeName","src":"28397:6:30"}],"id":1924,"name":"VariableDeclaration","src":"28397:6:30"}],"id":1925,"name":"ParameterList","src":"28396:8:30"},{"children":[{"attributes":{"assignments":[1927]},"children":[{"attributes":{"constant":false,"name":"dataHash","scope":1947,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1926,"name":"ElementaryTypeName","src":"28415:7:30"}],"id":1927,"name":"VariableDeclaration","src":"28415:16:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":10531,"type":"function (bytes memory) pure returns (bytes32)","value":"keccak256"},"id":1928,"name":"Identifier","src":"28434:9:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"member_name":"encodePacked","referencedDeclaration":null,"type":"function () pure returns (bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10524,"type":"abi","value":"abi"},"id":1929,"name":"Identifier","src":"28444:3:30"}],"id":1930,"name":"MemberAccess","src":"28444:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1919,"type":"bytes calldata","value":"_data"},"id":1931,"name":"Identifier","src":"28461:5:30"}],"id":1932,"name":"FunctionCall","src":"28444:23:30"}],"id":1933,"name":"FunctionCall","src":"28434:34:30"}],"id":1934,"name":"VariableDeclarationStatement","src":"28415:53:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_c7b0f282d270fa629bdf320070f363a2098930bcb5776e6ba0c6206d78806273","typeString":"literal_string \"sig not valid\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1935,"name":"Identifier","src":"28533:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes4","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes_calldata_ptr","typeString":"bytes calldata"}],"overloadedDeclarations":[null],"referencedDeclaration":2442,"type":"function (bytes32,bytes memory) view returns (bytes4)","value":"isValidSignature"},"id":1936,"name":"Identifier","src":"28541:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1927,"type":"bytes32","value":"dataHash"},"id":1937,"name":"Identifier","src":"28558:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1921,"type":"bytes calldata","value":"_signature"},"id":1938,"name":"Identifier","src":"28568:10:30"}],"id":1939,"name":"FunctionCall","src":"28541:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1694,"type":"bytes4","value":"_EIP_1654"},"id":1940,"name":"Identifier","src":"28583:9:30"}],"id":1941,"name":"BinaryOperation","src":"28541:51:30"},{"attributes":{"argumentTypes":null,"hexvalue":"736967206e6f742076616c6964","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"sig not valid\"","value":"sig not valid"},"id":1942,"name":"Literal","src":"28594:15:30"}],"id":1943,"name":"FunctionCall","src":"28533:77:30"}],"id":1944,"name":"ExpressionStatement","src":"28533:77:30"},{"attributes":{"functionReturnParameters":1925},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1691,"type":"bytes4","value":"_EIP_1271"},"id":1945,"name":"Identifier","src":"28627:9:30"}],"id":1946,"name":"Return","src":"28620:16:30"}],"id":1947,"name":"Block","src":"28405:238:30"}],"id":1948,"name":"FunctionDefinition","src":"28299:344:30"},{"attributes":{"documentation":"@return licence contract node registered in ENS.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"licenceNode","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":1949,"name":"ParameterList","src":"28726:2:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":1956,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":1950,"name":"ElementaryTypeName","src":"28752:7:30"}],"id":1951,"name":"VariableDeclaration","src":"28752:7:30"}],"id":1952,"name":"ParameterList","src":"28751:9:30"},{"children":[{"attributes":{"functionReturnParameters":1952},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1701,"type":"bytes32","value":"_licenceNode"},"id":1953,"name":"Identifier","src":"28778:12:30"}],"id":1954,"name":"Return","src":"28771:19:30"}],"id":1955,"name":"Block","src":"28761:36:30"}],"id":1956,"name":"FunctionDefinition","src":"28706:91:30"},{"attributes":{"documentation":"@dev Load a token card with the specified asset amount.\n @dev the amount send should be inclusive of the percent licence.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"loadTokenCard","scope":2509,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_asset","scope":2032,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1957,"name":"ElementaryTypeName","src":"29116:7:30"}],"id":1958,"name":"VariableDeclaration","src":"29116:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2032,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1959,"name":"ElementaryTypeName","src":"29132:7:30"}],"id":1960,"name":"VariableDeclaration","src":"29132:15:30"}],"id":1961,"name":"ParameterList","src":"29115:33:30"},{"attributes":{"parameters":[null]},"children":[],"id":1964,"name":"ParameterList","src":"29182:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":1962,"name":"Identifier","src":"29166:15:30"}],"id":1963,"name":"ModifierInvocation","src":"29166:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_96e30e7359d705e51778d9ae05179a78cb34ab813d824e29a3cd9fe209b16a67","typeString":"literal_string \"token not loadable\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":1965,"name":"Identifier","src":"29261:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4112,"type":"function (address) view returns (bool)","value":"_isTokenLoadable"},"id":1966,"name":"Identifier","src":"29269:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":1967,"name":"Identifier","src":"29286:6:30"}],"id":1968,"name":"FunctionCall","src":"29269:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f74206c6f616461626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not loadable\"","value":"token not loadable"},"id":1969,"name":"Literal","src":"29295:20:30"}],"id":1970,"name":"FunctionCall","src":"29261:55:30"}],"id":1971,"name":"ExpressionStatement","src":"29261:55:30"},{"attributes":{"assignments":[1973]},"children":[{"attributes":{"constant":false,"name":"stablecoinValue","scope":2031,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":1972,"name":"ElementaryTypeName","src":"29379:7:30"}],"id":1973,"name":"VariableDeclaration","src":"29379:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2288,"type":"function (address,uint256) view returns (uint256)","value":"convertToStablecoin"},"id":1974,"name":"Identifier","src":"29405:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":1975,"name":"Identifier","src":"29425:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":1976,"name":"Identifier","src":"29433:7:30"}],"id":1977,"name":"FunctionCall","src":"29405:36:30"}],"id":1978,"name":"VariableDeclarationStatement","src":"29379:62:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1450,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_loadLimit"},"id":1979,"name":"Identifier","src":"29571:10:30"}],"id":1981,"name":"MemberAccess","src":"29571:24:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1973,"type":"uint256","value":"stablecoinValue"},"id":1982,"name":"Identifier","src":"29596:15:30"}],"id":1983,"name":"FunctionCall","src":"29571:41:30"}],"id":1984,"name":"ExpressionStatement","src":"29571:41:30"},{"attributes":{"assignments":[1986]},"children":[{"attributes":{"constant":false,"name":"licenceAddress","scope":2031,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":1985,"name":"ElementaryTypeName","src":"29669:7:30"}],"id":1986,"name":"VariableDeclaration","src":"29669:22:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":1987,"name":"Identifier","src":"29694:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1701,"type":"bytes32","value":"_licenceNode"},"id":1988,"name":"Identifier","src":"29706:12:30"}],"id":1989,"name":"FunctionCall","src":"29694:25:30"}],"id":1990,"name":"VariableDeclarationStatement","src":"29669:50:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":1991,"name":"Identifier","src":"29733:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":1992,"name":"ElementaryTypeNameExpression","src":"29743:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":1993,"name":"Literal","src":"29751:1:30"}],"id":1994,"name":"FunctionCall","src":"29743:10:30"}],"id":1995,"name":"BinaryOperation","src":"29733:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"safeApprove","referencedDeclaration":3468,"type":"function (contract ERC20,address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":1996,"name":"Identifier","src":"29769:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":1997,"name":"Identifier","src":"29775:6:30"}],"id":1998,"name":"FunctionCall","src":"29769:13:30"}],"id":1999,"name":"MemberAccess","src":"29769:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1986,"type":"address","value":"licenceAddress"},"id":2000,"name":"Identifier","src":"29795:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2001,"name":"Identifier","src":"29811:7:30"}],"id":2002,"name":"FunctionCall","src":"29769:50:30"}],"id":2003,"name":"ExpressionStatement","src":"29769:50:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":4181,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4187,"type":"type(contract ILicence)","value":"ILicence"},"id":2004,"name":"Identifier","src":"29833:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1986,"type":"address","value":"licenceAddress"},"id":2005,"name":"Identifier","src":"29842:14:30"}],"id":2006,"name":"FunctionCall","src":"29833:24:30"}],"id":2007,"name":"MemberAccess","src":"29833:29:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":2008,"name":"Identifier","src":"29863:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2009,"name":"Identifier","src":"29871:7:30"}],"id":2010,"name":"FunctionCall","src":"29833:46:30"}],"id":2011,"name":"ExpressionStatement","src":"29833:46:30"}],"id":2012,"name":"Block","src":"29755:135:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (address,uint256) payable external","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (address,uint256) payable external)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"load","referencedDeclaration":4181,"type":"function (address,uint256) payable external"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ILicence","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4187,"type":"type(contract ILicence)","value":"ILicence"},"id":2013,"name":"Identifier","src":"29910:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1986,"type":"address","value":"licenceAddress"},"id":2014,"name":"Identifier","src":"29919:14:30"}],"id":2015,"name":"FunctionCall","src":"29910:24:30"}],"id":2016,"name":"MemberAccess","src":"29910:29:30"}],"id":2017,"name":"MemberAccess","src":"29910:35:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2018,"name":"Identifier","src":"29946:7:30"}],"id":2019,"name":"FunctionCall","src":"29910:44:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":2020,"name":"Identifier","src":"29955:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2021,"name":"Identifier","src":"29963:7:30"}],"id":2022,"name":"FunctionCall","src":"29910:61:30"}],"id":2023,"name":"ExpressionStatement","src":"29910:61:30"}],"id":2024,"name":"Block","src":"29896:86:30"}],"id":2025,"name":"IfStatement","src":"29729:253:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1661,"type":"function (address,uint256)","value":"LoadedTokenCard"},"id":2026,"name":"Identifier","src":"29997:15:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1958,"type":"address","value":"_asset"},"id":2027,"name":"Identifier","src":"30013:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1960,"type":"uint256","value":"_amount"},"id":2028,"name":"Identifier","src":"30021:7:30"}],"id":2029,"name":"FunctionCall","src":"29997:32:30"}],"id":2030,"name":"EmitStatement","src":"29992:37:30"}],"id":2031,"name":"Block","src":"29182:854:30"}],"id":2032,"name":"FunctionDefinition","src":"29093:943:30"},{"attributes":{"documentation":"@dev Checks for interface support based on ERC165.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"supportsInterface","scope":2509,"stateMutability":"view","superFunction":3315,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_interfaceID","scope":2044,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2033,"name":"ElementaryTypeName","src":"30128:6:30"}],"id":2034,"name":"VariableDeclaration","src":"30128:19:30"}],"id":2035,"name":"ParameterList","src":"30127:21:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2044,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2036,"name":"ElementaryTypeName","src":"30172:4:30"}],"id":2037,"name":"VariableDeclaration","src":"30172:4:30"}],"id":2038,"name":"ParameterList","src":"30171:6:30"},{"children":[{"attributes":{"functionReturnParameters":2038},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes4","typeString":"bytes4"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2034,"type":"bytes4","value":"_interfaceID"},"id":2039,"name":"Identifier","src":"30195:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1697,"type":"bytes4","value":"_ERC165_INTERFACE_ID"},"id":2040,"name":"Identifier","src":"30211:20:30"}],"id":2041,"name":"BinaryOperation","src":"30195:36:30"}],"id":2042,"name":"Return","src":"30188:43:30"}],"id":2043,"name":"Block","src":"30178:60:30"}],"id":2044,"name":"FunctionDefinition","src":"30101:137:30"},{"attributes":{"documentation":"@dev Refill owner's gas balance, revert if the transaction amount is too large\n @param _amount is the amount of ether to transfer to the owner account in wei.","implemented":true,"isConstructor":false,"kind":"function","name":"topUpGas","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_amount","scope":2075,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2045,"name":"ElementaryTypeName","src":"30436:7:30"}],"id":2046,"name":"VariableDeclaration","src":"30436:15:30"}],"id":2047,"name":"ParameterList","src":"30435:17:30"},{"attributes":{"parameters":[null]},"children":[],"id":2053,"name":"ParameterList","src":"30503:0:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1752,"type":"modifier (uint256)","value":"isNotZero"},"id":2048,"name":"Identifier","src":"30462:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2046,"type":"uint256","value":"_amount"},"id":2049,"name":"Identifier","src":"30472:7:30"}],"id":2050,"name":"ModifierInvocation","src":"30462:18:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":361,"type":"modifier ()","value":"onlyOwnerOrController"},"id":2051,"name":"Identifier","src":"30481:21:30"}],"id":2052,"name":"ModifierInvocation","src":"30481:21:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1291,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_gasTopUpLimit"},"id":2054,"name":"Identifier","src":"30633:14:30"}],"id":2056,"name":"MemberAccess","src":"30633:28:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2046,"type":"uint256","value":"_amount"},"id":2057,"name":"Identifier","src":"30662:7:30"}],"id":2058,"name":"FunctionCall","src":"30633:37:30"}],"id":2059,"name":"ExpressionStatement","src":"30633:37:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3897,"type":"function () view returns (address payable)","value":"owner"},"id":2060,"name":"Identifier","src":"30717:5:30"}],"id":2061,"name":"FunctionCall","src":"30717:7:30"}],"id":2062,"name":"MemberAccess","src":"30717:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2046,"type":"uint256","value":"_amount"},"id":2063,"name":"Identifier","src":"30734:7:30"}],"id":2064,"name":"FunctionCall","src":"30717:25:30"}],"id":2065,"name":"ExpressionStatement","src":"30717:25:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1675,"type":"function (address,address,uint256)","value":"ToppedUpGas"},"id":2066,"name":"Identifier","src":"30795:11:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2067,"name":"Identifier","src":"30807:3:30"}],"id":2068,"name":"MemberAccess","src":"30807:10:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3897,"type":"function () view returns (address payable)","value":"owner"},"id":2069,"name":"Identifier","src":"30819:5:30"}],"id":2070,"name":"FunctionCall","src":"30819:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2046,"type":"uint256","value":"_amount"},"id":2071,"name":"Identifier","src":"30828:7:30"}],"id":2072,"name":"FunctionCall","src":"30795:41:30"}],"id":2073,"name":"EmitStatement","src":"30790:46:30"}],"id":2074,"name":"Block","src":"30503:340:30"}],"id":2075,"name":"FunctionDefinition","src":"30418:425:30"},{"attributes":{"documentation":"@dev This function allows for the wallet to send a batch of transactions instead of one,\n it calls executeTransaction() so that the daily limit is enforced.\n @param _transactionBatch data encoding the transactions to be sent,\n following executeTransaction's format i.e. (destination, value, data)","implemented":true,"isConstructor":false,"kind":"function","name":"batchExecuteTransaction","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_transactionBatch","scope":2158,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2076,"name":"ElementaryTypeName","src":"31208:5:30"}],"id":2077,"name":"VariableDeclaration","src":"31208:30:30"}],"id":2078,"name":"ParameterList","src":"31207:32:30"},{"attributes":{"parameters":[null]},"children":[],"id":2081,"name":"ParameterList","src":"31263:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2079,"name":"Identifier","src":"31247:15:30"}],"id":2080,"name":"ModifierInvocation","src":"31247:15:30"},{"children":[{"attributes":{"assignments":[2083]},"children":[{"attributes":{"constant":false,"name":"batchLength","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2082,"name":"ElementaryTypeName","src":"31273:7:30"}],"id":2083,"name":"VariableDeclaration","src":"31273:19:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"+","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2077,"type":"bytes memory","value":"_transactionBatch"},"id":2084,"name":"Identifier","src":"31295:17:30"}],"id":2085,"name":"MemberAccess","src":"31295:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2086,"name":"Literal","src":"31322:2:30"}],"id":2087,"name":"BinaryOperation","src":"31295:29:30"}],"id":2088,"name":"VariableDeclarationStatement","src":"31273:51:30"},{"attributes":{"assignments":[2090]},"children":[{"attributes":{"constant":false,"name":"remainingBytesLength","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2089,"name":"ElementaryTypeName","src":"31368:7:30"}],"id":2090,"name":"VariableDeclaration","src":"31368:28:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2077,"type":"bytes memory","value":"_transactionBatch"},"id":2091,"name":"Identifier","src":"31399:17:30"}],"id":2092,"name":"MemberAccess","src":"31399:24:30"}],"id":2093,"name":"VariableDeclarationStatement","src":"31368:55:30"},{"attributes":{"assignments":[2095]},"children":[{"attributes":{"constant":false,"name":"pos","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2094,"name":"ElementaryTypeName","src":"31468:7:30"}],"id":2095,"name":"VariableDeclaration","src":"31468:11:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2096,"name":"Literal","src":"31482:2:30"}],"id":2097,"name":"VariableDeclarationStatement","src":"31468:16:30"},{"attributes":{"assignments":[2099],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"destination","scope":2157,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2098,"name":"ElementaryTypeName","src":"31569:7:30"}],"id":2099,"name":"VariableDeclaration","src":"31569:19:30"}],"id":2100,"name":"VariableDeclarationStatement","src":"31569:19:30"},{"attributes":{"assignments":[2102],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"value","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2101,"name":"ElementaryTypeName","src":"31621:7:30"}],"id":2102,"name":"VariableDeclaration","src":"31621:13:30"}],"id":2103,"name":"VariableDeclarationStatement","src":"31621:13:30"},{"attributes":{"assignments":[2105],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"dataLength","scope":2157,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2104,"name":"ElementaryTypeName","src":"31665:7:30"}],"id":2105,"name":"VariableDeclaration","src":"31665:18:30"}],"id":2106,"name":"VariableDeclarationStatement","src":"31665:18:30"},{"attributes":{"assignments":[2108],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"data","scope":2157,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2107,"name":"ElementaryTypeName","src":"31723:5:30"}],"id":2108,"name":"VariableDeclaration","src":"31723:17:30"}],"id":2109,"name":"VariableDeclarationStatement","src":"31723:17:30"},{"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2095,"type":"uint256","value":"pos"},"id":2110,"name":"Identifier","src":"31771:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2083,"type":"uint256","value":"batchLength"},"id":2111,"name":"Identifier","src":"31777:11:30"}],"id":2112,"name":"BinaryOperation","src":"31771:17:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"uint256","value":"remainingBytesLength"},"id":2113,"name":"Identifier","src":"31914:20:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sub","referencedDeclaration":3640,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2090,"type":"uint256","value":"remainingBytesLength"},"id":2114,"name":"Identifier","src":"31937:20:30"}],"id":2115,"name":"MemberAccess","src":"31937:24:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":2116,"name":"Literal","src":"31962:2:30"}],"id":2117,"name":"FunctionCall","src":"31937:28:30"}],"id":2118,"name":"Assignment","src":"31914:51:30"}],"id":2119,"name":"ExpressionStatement","src":"31914:51:30"},{"attributes":{"externalReferences":[{"destination":{"declaration":2099,"isOffset":false,"isSlot":false,"src":"32122:11:30","valueSize":1}},{"_transactionBatch":{"declaration":2077,"isOffset":false,"isSlot":false,"src":"32155:17:30","valueSize":1}},{"pos":{"declaration":2095,"isOffset":false,"isSlot":false,"src":"32174:3:30","valueSize":1}},{"dataLength":{"declaration":2105,"isOffset":false,"isSlot":false,"src":"32481:10:30","valueSize":1}},{"value":{"declaration":2102,"isOffset":false,"isSlot":false,"src":"32265:5:30","valueSize":1}},{"pos":{"declaration":2095,"isOffset":false,"isSlot":false,"src":"32307:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2077,"isOffset":false,"isSlot":false,"src":"32284:17:30","valueSize":1}},{"data":{"declaration":2108,"isOffset":false,"isSlot":false,"src":"32555:4:30","valueSize":1}},{"pos":{"declaration":2095,"isOffset":false,"isSlot":false,"src":"32528:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2077,"isOffset":false,"isSlot":false,"src":"32505:17:30","valueSize":1}},{"pos":{"declaration":2095,"isOffset":false,"isSlot":false,"src":"32590:3:30","valueSize":1}},{"_transactionBatch":{"declaration":2077,"isOffset":false,"isSlot":false,"src":"32567:17:30","valueSize":1}}],"operations":"{\n destination := shr(96, mload(add(_transactionBatch, pos)))\n value := mload(add(_transactionBatch, add(pos, 20)))\n dataLength := mload(add(_transactionBatch, add(pos, 52)))\n data := add(_transactionBatch, add(pos, 52))\n}"},"children":[],"id":2120,"name":"InlineAssembly","src":"31979:634:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2095,"type":"uint256","value":"pos"},"id":2121,"name":"Identifier","src":"32703:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_84_by_1","typeString":"int_const 84"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"add","referencedDeclaration":3615,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2095,"type":"uint256","value":"pos"},"id":2122,"name":"Identifier","src":"32709:3:30"}],"id":2123,"name":"MemberAccess","src":"32709:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2105,"type":"uint256","value":"dataLength"},"id":2124,"name":"Identifier","src":"32717:10:30"}],"id":2125,"name":"FunctionCall","src":"32709:19:30"}],"id":2126,"name":"MemberAccess","src":"32709:23:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3834","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 84","value":"84"},"id":2127,"name":"Literal","src":"32733:2:30"}],"id":2128,"name":"FunctionCall","src":"32709:27:30"}],"id":2129,"name":"Assignment","src":"32703:33:30"}],"id":2130,"name":"ExpressionStatement","src":"32703:33:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_6d4d7e869602fd07d121f8992a03b812eac20f2f3831f876bce9993aae915a2b","typeString":"literal_string \"out of bounds\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2131,"name":"Identifier","src":"32841:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2095,"type":"uint256","value":"pos"},"id":2132,"name":"Identifier","src":"32849:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2083,"type":"uint256","value":"batchLength"},"id":2133,"name":"Identifier","src":"32856:11:30"}],"id":2134,"name":"BinaryOperation","src":"32849:18:30"},{"attributes":{"argumentTypes":null,"hexvalue":"6f7574206f6620626f756e6473","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"out of bounds\"","value":"out of bounds"},"id":2135,"name":"Literal","src":"32869:15:30"}],"id":2136,"name":"FunctionCall","src":"32841:44:30"}],"id":2137,"name":"ExpressionStatement","src":"32841:44:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2105,"type":"uint256","value":"dataLength"},"id":2138,"name":"Identifier","src":"32956:10:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2139,"name":"Literal","src":"32970:1:30"}],"id":2140,"name":"BinaryOperation","src":"32956:15:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes memory"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"data"},"id":2141,"name":"Identifier","src":"32991:4:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470","typeString":"literal_string \"\""}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes storage pointer)","value":"bytes"},"id":2142,"name":"ElementaryTypeNameExpression","src":"32998:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"\"","value":""},"id":2143,"name":"Literal","src":"33004:2:30"}],"id":2144,"name":"FunctionCall","src":"32998:9:30"}],"id":2145,"name":"Assignment","src":"32991:16:30"}],"id":2146,"name":"ExpressionStatement","src":"32991:16:30"}],"id":2147,"name":"Block","src":"32973:49:30"}],"id":2148,"name":"IfStatement","src":"32952:70:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":2416,"type":"function (address,uint256,bytes memory) returns (bytes memory)","value":"executeTransaction"},"id":2149,"name":"Identifier","src":"33130:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2099,"type":"address","value":"destination"},"id":2150,"name":"Identifier","src":"33149:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2102,"type":"uint256","value":"value"},"id":2151,"name":"Identifier","src":"33162:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2108,"type":"bytes memory","value":"data"},"id":2152,"name":"Identifier","src":"33169:4:30"}],"id":2153,"name":"FunctionCall","src":"33130:44:30"}],"id":2154,"name":"ExpressionStatement","src":"33130:44:30"}],"id":2155,"name":"Block","src":"31790:1395:30"}],"id":2156,"name":"WhileStatement","src":"31764:1421:30"}],"id":2157,"name":"Block","src":"31263:1928:30"}],"id":2158,"name":"FunctionDefinition","src":"31175:2016:30"},{"attributes":{"documentation":"@dev Convert ERC20 token amount to the corresponding ether amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToEther","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2198,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2159,"name":"ElementaryTypeName","src":"33402:7:30"}],"id":2160,"name":"VariableDeclaration","src":"33402:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2161,"name":"ElementaryTypeName","src":"33418:7:30"}],"id":2162,"name":"VariableDeclaration","src":"33418:15:30"}],"id":2163,"name":"ParameterList","src":"33401:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2198,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2164,"name":"ElementaryTypeName","src":"33456:7:30"}],"id":2165,"name":"VariableDeclaration","src":"33456:7:30"}],"id":2166,"name":"ParameterList","src":"33455:9:30"},{"children":[{"attributes":{"assignments":[null,2168,2170,2172,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":2197,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2167,"name":"ElementaryTypeName","src":"33545:7:30"}],"id":2168,"name":"VariableDeclaration","src":"33545:17:30"},{"attributes":{"constant":false,"name":"rate","scope":2197,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2169,"name":"ElementaryTypeName","src":"33564:7:30"}],"id":2170,"name":"VariableDeclaration","src":"33564:12:30"},{"attributes":{"constant":false,"name":"available","scope":2197,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2171,"name":"ElementaryTypeName","src":"33578:4:30"}],"id":2172,"name":"VariableDeclaration","src":"33578:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":2173,"name":"Identifier","src":"33602:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2160,"type":"address","value":"_token"},"id":2174,"name":"Identifier","src":"33616:6:30"}],"id":2175,"name":"FunctionCall","src":"33602:21:30"}],"id":2176,"name":"VariableDeclarationStatement","src":"33542:81:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2172,"type":"bool","value":"available"},"id":2177,"name":"Identifier","src":"33703:9:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2178,"name":"Identifier","src":"33728:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"rate"},"id":2179,"name":"Identifier","src":"33736:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2180,"name":"Literal","src":"33744:1:30"}],"id":2181,"name":"BinaryOperation","src":"33736:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":2182,"name":"Literal","src":"33747:8:30"}],"id":2183,"name":"FunctionCall","src":"33728:28:30"}],"id":2184,"name":"ExpressionStatement","src":"33728:28:30"},{"attributes":{"functionReturnParameters":2166},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3699,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3674,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2162,"type":"uint256","value":"_amount"},"id":2185,"name":"Identifier","src":"33861:7:30"}],"id":2186,"name":"MemberAccess","src":"33861:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2170,"type":"uint256","value":"rate"},"id":2187,"name":"Identifier","src":"33873:4:30"}],"id":2188,"name":"FunctionCall","src":"33861:17:30"}],"id":2189,"name":"MemberAccess","src":"33861:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2168,"type":"uint256","value":"magnitude"},"id":2190,"name":"Identifier","src":"33883:9:30"}],"id":2191,"name":"FunctionCall","src":"33861:32:30"}],"id":2192,"name":"Return","src":"33854:39:30"}],"id":2193,"name":"Block","src":"33714:190:30"}],"id":2194,"name":"IfStatement","src":"33699:205:30"},{"attributes":{"functionReturnParameters":2166},"children":[{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2195,"name":"Literal","src":"33920:1:30"}],"id":2196,"name":"Return","src":"33913:8:30"}],"id":2197,"name":"Block","src":"33465:463:30"}],"id":2198,"name":"FunctionDefinition","src":"33378:550:30"},{"attributes":{"documentation":"@dev Convert ether or ERC20 token amount to the corresponding stablecoin amount.\n @param _token ERC20 token contract address.\n @param _amount amount of token in base units.","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"convertToStablecoin","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_token","scope":2288,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2199,"name":"ElementaryTypeName","src":"34158:7:30"}],"id":2200,"name":"VariableDeclaration","src":"34158:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2288,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2201,"name":"ElementaryTypeName","src":"34174:7:30"}],"id":2202,"name":"VariableDeclaration","src":"34174:15:30"}],"id":2203,"name":"ParameterList","src":"34157:33:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2288,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2204,"name":"ElementaryTypeName","src":"34212:7:30"}],"id":2205,"name":"VariableDeclaration","src":"34212:7:30"}],"id":2206,"name":"ParameterList","src":"34211:9:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2200,"type":"address","value":"_token"},"id":2207,"name":"Identifier","src":"34332:6:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":4126,"type":"function () view returns (address)","value":"_stablecoin"},"id":2208,"name":"Identifier","src":"34342:11:30"}],"id":2209,"name":"FunctionCall","src":"34342:13:30"}],"id":2210,"name":"BinaryOperation","src":"34332:23:30"},{"children":[{"attributes":{"functionReturnParameters":2206},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2202,"type":"uint256","value":"_amount"},"id":2211,"name":"Identifier","src":"34378:7:30"}],"id":2212,"name":"Return","src":"34371:14:30"}],"id":2213,"name":"Block","src":"34357:39:30"}],"id":2214,"name":"IfStatement","src":"34328:68:30"},{"attributes":{"assignments":[2216]},"children":[{"attributes":{"constant":false,"name":"amountToSend","scope":2287,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2215,"name":"ElementaryTypeName","src":"34405:7:30"}],"id":2216,"name":"VariableDeclaration","src":"34405:20:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2202,"type":"uint256","value":"_amount"},"id":2217,"name":"Identifier","src":"34428:7:30"}],"id":2218,"name":"VariableDeclarationStatement","src":"34405:30:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2200,"type":"address","value":"_token"},"id":2219,"name":"Identifier","src":"34482:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2220,"name":"ElementaryTypeNameExpression","src":"34492:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2221,"name":"Literal","src":"34500:1:30"}],"id":2222,"name":"FunctionCall","src":"34492:10:30"}],"id":2223,"name":"BinaryOperation","src":"34482:20:30"},{"children":[{"attributes":{"assignments":[null,2225,2227,2229,null,null,null]},"children":[{"attributes":{"constant":false,"name":"magnitude","scope":2256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2224,"name":"ElementaryTypeName","src":"34654:7:30"}],"id":2225,"name":"VariableDeclaration","src":"34654:17:30"},{"attributes":{"constant":false,"name":"rate","scope":2256,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2226,"name":"ElementaryTypeName","src":"34673:7:30"}],"id":2227,"name":"VariableDeclaration","src":"34673:12:30"},{"attributes":{"constant":false,"name":"available","scope":2256,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2228,"name":"ElementaryTypeName","src":"34687:4:30"}],"id":2229,"name":"VariableDeclaration","src":"34687:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3965,"type":"function (address) view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getTokenInfo"},"id":2230,"name":"Identifier","src":"34711:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2200,"type":"address","value":"_token"},"id":2231,"name":"Identifier","src":"34725:6:30"}],"id":2232,"name":"FunctionCall","src":"34711:21:30"}],"id":2233,"name":"VariableDeclarationStatement","src":"34651:81:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2234,"name":"Identifier","src":"34835:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2229,"type":"bool","value":"available"},"id":2235,"name":"Identifier","src":"34843:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":2236,"name":"Literal","src":"34854:21:30"}],"id":2237,"name":"FunctionCall","src":"34835:41:30"}],"id":2238,"name":"ExpressionStatement","src":"34835:41:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_295dc0ed4bb3a5f26b330a80f4c64712467873ecd5c126c06c6815ffc01e308c","typeString":"literal_string \"rate=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2239,"name":"Identifier","src":"34890:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2227,"type":"uint256","value":"rate"},"id":2240,"name":"Identifier","src":"34898:4:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2241,"name":"Literal","src":"34906:1:30"}],"id":2242,"name":"BinaryOperation","src":"34898:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"rate=0\"","value":"rate=0"},"id":2243,"name":"Literal","src":"34909:8:30"}],"id":2244,"name":"FunctionCall","src":"34890:28:30"}],"id":2245,"name":"ExpressionStatement","src":"34890:28:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2216,"type":"uint256","value":"amountToSend"},"id":2246,"name":"Identifier","src":"35020:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3699,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3674,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2202,"type":"uint256","value":"_amount"},"id":2247,"name":"Identifier","src":"35035:7:30"}],"id":2248,"name":"MemberAccess","src":"35035:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2227,"type":"uint256","value":"rate"},"id":2249,"name":"Identifier","src":"35047:4:30"}],"id":2250,"name":"FunctionCall","src":"35035:17:30"}],"id":2251,"name":"MemberAccess","src":"35035:21:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2225,"type":"uint256","value":"magnitude"},"id":2252,"name":"Identifier","src":"35057:9:30"}],"id":2253,"name":"FunctionCall","src":"35035:32:30"}],"id":2254,"name":"Assignment","src":"35020:47:30"}],"id":2255,"name":"ExpressionStatement","src":"35020:47:30"}],"id":2256,"name":"Block","src":"34504:574:30"}],"id":2257,"name":"IfStatement","src":"34478:600:30"},{"attributes":{"assignments":[null,2259,2261,2263,null,null,null]},"children":[{"attributes":{"constant":false,"name":"stablecoinMagnitude","scope":2287,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2258,"name":"ElementaryTypeName","src":"35195:7:30"}],"id":2259,"name":"VariableDeclaration","src":"35195:27:30"},{"attributes":{"constant":false,"name":"stablecoinRate","scope":2287,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2260,"name":"ElementaryTypeName","src":"35224:7:30"}],"id":2261,"name":"VariableDeclaration","src":"35224:22:30"},{"attributes":{"constant":false,"name":"stablecoinAvailable","scope":2287,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2262,"name":"ElementaryTypeName","src":"35248:4:30"}],"id":2263,"name":"VariableDeclaration","src":"35248:24:30"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(string memory,uint256,uint256,bool,bool,bool,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":3991,"type":"function () view returns (string memory,uint256,uint256,bool,bool,bool,uint256)","value":"_getStablecoinInfo"},"id":2264,"name":"Identifier","src":"35282:18:30"}],"id":2265,"name":"FunctionCall","src":"35282:20:30"}],"id":2266,"name":"VariableDeclarationStatement","src":"35192:110:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_3c8f321f7c1c94ccd2cbe732a6e8ce81b29db7ecd2fdeb9a90bab29c94830016","typeString":"literal_string \"token not available\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2267,"name":"Identifier","src":"35360:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2263,"type":"bool","value":"stablecoinAvailable"},"id":2268,"name":"Identifier","src":"35368:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"746f6b656e206e6f7420617661696c61626c65","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"token not available\"","value":"token not available"},"id":2269,"name":"Literal","src":"35389:21:30"}],"id":2270,"name":"FunctionCall","src":"35360:51:30"}],"id":2271,"name":"ExpressionStatement","src":"35360:51:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_18bfbbfdaee82cb0eebcce67c25e7747234386e0bcace876720c3090918b5d3f","typeString":"literal_string \"stablecoin rate=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2272,"name":"Identifier","src":"35421:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2261,"type":"uint256","value":"stablecoinRate"},"id":2273,"name":"Identifier","src":"35429:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2274,"name":"Literal","src":"35447:1:30"}],"id":2275,"name":"BinaryOperation","src":"35429:19:30"},{"attributes":{"argumentTypes":null,"hexvalue":"737461626c65636f696e20726174653d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"stablecoin rate=0\"","value":"stablecoin rate=0"},"id":2276,"name":"Literal","src":"35450:19:30"}],"id":2277,"name":"FunctionCall","src":"35421:49:30"}],"id":2278,"name":"ExpressionStatement","src":"35421:49:30"},{"attributes":{"functionReturnParameters":2206},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"div","referencedDeclaration":3699,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"mul","referencedDeclaration":3674,"type":"function (uint256,uint256) pure returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2216,"type":"uint256","value":"amountToSend"},"id":2279,"name":"Identifier","src":"35605:12:30"}],"id":2280,"name":"MemberAccess","src":"35605:16:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2259,"type":"uint256","value":"stablecoinMagnitude"},"id":2281,"name":"Identifier","src":"35622:19:30"}],"id":2282,"name":"FunctionCall","src":"35605:37:30"}],"id":2283,"name":"MemberAccess","src":"35605:41:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2261,"type":"uint256","value":"stablecoinRate"},"id":2284,"name":"Identifier","src":"35647:14:30"}],"id":2285,"name":"FunctionCall","src":"35605:57:30"}],"id":2286,"name":"Return","src":"35598:64:30"}],"id":2287,"name":"Block","src":"34221:1448:30"}],"id":2288,"name":"FunctionDefinition","src":"34129:1540:30"},{"attributes":{"documentation":"@dev This function allows for the owner to send any transaction from the Wallet to arbitrary addresses\n @param _destination address of the transaction\n @param _value ETH amount in wei\n @param _data transaction payload binary","implemented":true,"isConstructor":false,"kind":"function","name":"executeTransaction","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_destination","scope":2416,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2289,"name":"ElementaryTypeName","src":"35957:7:30"}],"id":2290,"name":"VariableDeclaration","src":"35957:20:30"},{"attributes":{"constant":false,"name":"_value","scope":2416,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2291,"name":"ElementaryTypeName","src":"35979:7:30"}],"id":2292,"name":"VariableDeclaration","src":"35979:14:30"},{"attributes":{"constant":false,"name":"_data","scope":2416,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2293,"name":"ElementaryTypeName","src":"35995:5:30"}],"id":2294,"name":"VariableDeclaration","src":"35995:18:30"}],"id":2295,"name":"ParameterList","src":"35956:58:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2416,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2298,"name":"ElementaryTypeName","src":"36047:5:30"}],"id":2299,"name":"VariableDeclaration","src":"36047:12:30"}],"id":2300,"name":"ParameterList","src":"36046:14:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2296,"name":"Identifier","src":"36022:15:30"}],"id":2297,"name":"ModifierInvocation","src":"36022:15:30"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2301,"name":"Identifier","src":"36266:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2302,"name":"Identifier","src":"36279:12:30"}],"id":2303,"name":"IndexAccess","src":"36266:26:30"}],"id":2304,"name":"UnaryOperation","src":"36265:27:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2305,"name":"Identifier","src":"36308:11:30"}],"id":2307,"name":"MemberAccess","src":"36308:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"_value"},"id":2308,"name":"Identifier","src":"36334:6:30"}],"id":2309,"name":"FunctionCall","src":"36308:33:30"}],"id":2310,"name":"ExpressionStatement","src":"36308:33:30"}],"id":2311,"name":"Block","src":"36294:58:30"}],"id":2312,"name":"IfStatement","src":"36261:91:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bool","typeString":"bool"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"&&","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"isContract","referencedDeclaration":3224,"type":"function (address) view returns (bool)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2313,"name":"ElementaryTypeNameExpression","src":"36453:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2314,"name":"Identifier","src":"36461:12:30"}],"id":2315,"name":"FunctionCall","src":"36453:21:30"}],"id":2316,"name":"MemberAccess","src":"36453:32:30"}],"id":2317,"name":"FunctionCall","src":"36453:34:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":4080,"type":"function (address) view returns (bool)","value":"_isTokenAvailable"},"id":2318,"name":"Identifier","src":"36491:17:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2319,"name":"Identifier","src":"36509:12:30"}],"id":2320,"name":"FunctionCall","src":"36491:31:30"}],"id":2321,"name":"BinaryOperation","src":"36453:69:30"},{"children":[{"attributes":{"assignments":[2323],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"to","scope":2385,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2322,"name":"ElementaryTypeName","src":"36625:7:30"}],"id":2323,"name":"VariableDeclaration","src":"36625:10:30"}],"id":2324,"name":"VariableDeclarationStatement","src":"36625:10:30"},{"attributes":{"assignments":[2326],"initialValue":null},"children":[{"attributes":{"constant":false,"name":"amount","scope":2385,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2325,"name":"ElementaryTypeName","src":"36649:7:30"}],"id":2326,"name":"VariableDeclaration","src":"36649:14:30"}],"id":2327,"name":"VariableDeclarationStatement","src":"36649:14:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"tuple()"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isInlineArray":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"tuple(address,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2323,"type":"address","value":"to"},"id":2328,"name":"Identifier","src":"36678:2:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2326,"type":"uint256","value":"amount"},"id":2329,"name":"Identifier","src":"36682:6:30"}],"id":2330,"name":"TupleExpression","src":"36677:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(address,uint256)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":4064,"type":"function (address,bytes memory) view returns (address,uint256)","value":"_getERC20RecipientAndAmount"},"id":2331,"name":"Identifier","src":"36692:27:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2332,"name":"Identifier","src":"36720:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2333,"name":"Identifier","src":"36734:5:30"}],"id":2334,"name":"FunctionCall","src":"36692:48:30"}],"id":2335,"name":"Assignment","src":"36677:63:30"}],"id":2336,"name":"ExpressionStatement","src":"36677:63:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2337,"name":"Identifier","src":"36759:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2323,"type":"address","value":"to"},"id":2338,"name":"Identifier","src":"36772:2:30"}],"id":2339,"name":"IndexAccess","src":"36759:16:30"}],"id":2340,"name":"UnaryOperation","src":"36758:17:30"},{"children":[{"attributes":{"assignments":[2342]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2354,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2341,"name":"ElementaryTypeName","src":"36962:7:30"}],"id":2342,"name":"VariableDeclaration","src":"36962:18:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2198,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2343,"name":"Identifier","src":"36983:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2344,"name":"Identifier","src":"36998:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2326,"type":"uint256","value":"amount"},"id":2345,"name":"Identifier","src":"37012:6:30"}],"id":2346,"name":"FunctionCall","src":"36983:36:30"}],"id":2347,"name":"VariableDeclarationStatement","src":"36962:57:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2348,"name":"Identifier","src":"37037:11:30"}],"id":2350,"name":"MemberAccess","src":"37037:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2342,"type":"uint256","value":"etherValue"},"id":2351,"name":"Identifier","src":"37063:10:30"}],"id":2352,"name":"FunctionCall","src":"37037:37:30"}],"id":2353,"name":"ExpressionStatement","src":"37037:37:30"}],"id":2354,"name":"Block","src":"36777:312:30"}],"id":2355,"name":"IfStatement","src":"36754:335:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"callOptionalReturn","referencedDeclaration":3587,"type":"function (contract ERC20,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract ERC20","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3369,"type":"type(contract ERC20)","value":"ERC20"},"id":2356,"name":"Identifier","src":"37238:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2357,"name":"Identifier","src":"37244:12:30"}],"id":2358,"name":"FunctionCall","src":"37238:19:30"}],"id":2359,"name":"MemberAccess","src":"37238:38:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2360,"name":"Identifier","src":"37277:5:30"}],"id":2361,"name":"FunctionCall","src":"37238:45:30"}],"id":2362,"name":"ExpressionStatement","src":"37238:45:30"},{"attributes":{"assignments":[2364]},"children":[{"attributes":{"constant":false,"name":"b","scope":2385,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2363,"name":"ElementaryTypeName","src":"37387:5:30"}],"id":2364,"name":"VariableDeclaration","src":"37387:14:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes memory","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_32_by_1","typeString":"int_const 32"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"function (uint256) pure returns (bytes memory)"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2365,"name":"ElementaryTypeName","src":"37408:5:30"}],"id":2366,"name":"NewExpression","src":"37404:9:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3332","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 32","value":"32"},"id":2367,"name":"Literal","src":"37414:2:30"}],"id":2368,"name":"FunctionCall","src":"37404:13:30"}],"id":2369,"name":"VariableDeclarationStatement","src":"37387:30:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"bytes1"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2364,"type":"bytes memory","value":"b"},"id":2370,"name":"Identifier","src":"37431:1:30"},{"attributes":{"argumentTypes":null,"hexvalue":"3331","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 31","value":"31"},"id":2371,"name":"Literal","src":"37433:2:30"}],"id":2372,"name":"IndexAccess","src":"37431:5:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30783031","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"0x01"},"id":2373,"name":"Literal","src":"37439:4:30"}],"id":2374,"name":"Assignment","src":"37431:12:30"}],"id":2375,"name":"ExpressionStatement","src":"37431:12:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1649,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2376,"name":"Identifier","src":"37463:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2377,"name":"Identifier","src":"37483:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"_value"},"id":2378,"name":"Identifier","src":"37497:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2379,"name":"Identifier","src":"37505:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2364,"type":"bytes memory","value":"b"},"id":2380,"name":"Identifier","src":"37512:1:30"}],"id":2381,"name":"FunctionCall","src":"37463:51:30"}],"id":2382,"name":"EmitStatement","src":"37458:56:30"},{"attributes":{"functionReturnParameters":2300},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2364,"type":"bytes memory","value":"b"},"id":2383,"name":"Identifier","src":"37535:1:30"}],"id":2384,"name":"Return","src":"37528:8:30"}],"id":2385,"name":"Block","src":"36524:1023:30"}],"id":2386,"name":"IfStatement","src":"36449:1098:30"},{"attributes":{"assignments":[2388,2390]},"children":[{"attributes":{"constant":false,"name":"success","scope":2415,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":2387,"name":"ElementaryTypeName","src":"37558:4:30"}],"id":2388,"name":"VariableDeclaration","src":"37558:12:30"},{"attributes":{"constant":false,"name":"returndata","scope":2415,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2389,"name":"ElementaryTypeName","src":"37572:5:30"}],"id":2390,"name":"VariableDeclaration","src":"37572:23:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple(bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"function (bytes memory) payable returns (bool,bytes memory)","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"function (uint256) pure returns (function (bytes memory) payable returns (bool,bytes memory))"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"call","referencedDeclaration":null,"type":"function (bytes memory) payable returns (bool,bytes memory)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2391,"name":"Identifier","src":"37599:12:30"}],"id":2392,"name":"MemberAccess","src":"37599:17:30"}],"id":2393,"name":"MemberAccess","src":"37599:23:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"_value"},"id":2394,"name":"Identifier","src":"37623:6:30"}],"id":2395,"name":"FunctionCall","src":"37599:31:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2396,"name":"Identifier","src":"37631:5:30"}],"id":2397,"name":"FunctionCall","src":"37599:38:30"}],"id":2398,"name":"VariableDeclarationStatement","src":"37557:80:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_string_memory_ptr","typeString":"string memory"}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2399,"name":"Identifier","src":"37647:7:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2388,"type":"bool","value":"success"},"id":2400,"name":"Identifier","src":"37655:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"string memory","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(string storage pointer)","value":"string"},"id":2401,"name":"ElementaryTypeNameExpression","src":"37664:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"bytes memory","value":"returndata"},"id":2402,"name":"Identifier","src":"37671:10:30"}],"id":2403,"name":"FunctionCall","src":"37664:18:30"}],"id":2404,"name":"FunctionCall","src":"37647:36:30"}],"id":2405,"name":"ExpressionStatement","src":"37647:36:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"},{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"overloadedDeclarations":[null],"referencedDeclaration":1649,"type":"function (address,uint256,bytes memory,bytes memory)","value":"ExecutedTransaction"},"id":2406,"name":"Identifier","src":"37699:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2290,"type":"address","value":"_destination"},"id":2407,"name":"Identifier","src":"37719:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2292,"type":"uint256","value":"_value"},"id":2408,"name":"Identifier","src":"37733:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2294,"type":"bytes memory","value":"_data"},"id":2409,"name":"Identifier","src":"37741:5:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"bytes memory","value":"returndata"},"id":2410,"name":"Identifier","src":"37748:10:30"}],"id":2411,"name":"FunctionCall","src":"37699:60:30"}],"id":2412,"name":"EmitStatement","src":"37694:65:30"},{"attributes":{"functionReturnParameters":2300},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2390,"type":"bytes memory","value":"returndata"},"id":2413,"name":"Identifier","src":"37846:10:30"}],"id":2414,"name":"Return","src":"37839:17:30"}],"id":2415,"name":"Block","src":"36061:1802:30"}],"id":2416,"name":"FunctionDefinition","src":"35929:1934:30"},{"attributes":{"documentation":"@dev Implements EIP-1654: receives the hashed message(bytes32)\n https://github.com/ethereum/EIPs/issues/1654.md\n @param _hashedData Hashed data signed on the behalf of address(this)\n @param _signature Signature byte array associated with _dataHash","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"isValidSignature","scope":2509,"stateMutability":"view","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_hashedData","scope":2442,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2417,"name":"ElementaryTypeName","src":"38172:7:30"}],"id":2418,"name":"VariableDeclaration","src":"38172:19:30"},{"attributes":{"constant":false,"name":"_signature","scope":2442,"stateVariable":false,"storageLocation":"memory","type":"bytes","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes","type":"bytes"},"id":2419,"name":"ElementaryTypeName","src":"38193:5:30"}],"id":2420,"name":"VariableDeclaration","src":"38193:23:30"}],"id":2421,"name":"ParameterList","src":"38171:46:30"},{"children":[{"attributes":{"constant":false,"name":"","scope":2442,"stateVariable":false,"storageLocation":"default","type":"bytes4","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes4","type":"bytes4"},"id":2422,"name":"ElementaryTypeName","src":"38239:6:30"}],"id":2423,"name":"VariableDeclaration","src":"38239:6:30"}],"id":2424,"name":"ParameterList","src":"38238:8:30"},{"children":[{"attributes":{"assignments":[2426]},"children":[{"attributes":{"constant":false,"name":"from","scope":2441,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2425,"name":"ElementaryTypeName","src":"38257:7:30"}],"id":2426,"name":"VariableDeclaration","src":"38257:12:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes_memory_ptr","typeString":"bytes memory"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"recover","referencedDeclaration":3289,"type":"function (bytes32,bytes memory) pure returns (address)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2418,"type":"bytes32","value":"_hashedData"},"id":2427,"name":"Identifier","src":"38272:11:30"}],"id":2428,"name":"MemberAccess","src":"38272:19:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2420,"type":"bytes memory","value":"_signature"},"id":2429,"name":"Identifier","src":"38292:10:30"}],"id":2430,"name":"FunctionCall","src":"38272:31:30"}],"id":2431,"name":"VariableDeclarationStatement","src":"38257:46:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_12a179e1a73f41ef8e1ba2f259a99bc53b6ace3abb110ac2ea058e42c6104e1a","typeString":"literal_string \"invalid signature\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2432,"name":"Identifier","src":"38313:7:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bool","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":3909,"type":"function (address) view returns (bool)","value":"_isOwner"},"id":2433,"name":"Identifier","src":"38321:8:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2426,"type":"address","value":"from"},"id":2434,"name":"Identifier","src":"38330:4:30"}],"id":2435,"name":"FunctionCall","src":"38321:14:30"},{"attributes":{"argumentTypes":null,"hexvalue":"696e76616c6964207369676e6174757265","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"invalid signature\"","value":"invalid signature"},"id":2436,"name":"Literal","src":"38337:19:30"}],"id":2437,"name":"FunctionCall","src":"38313:44:30"}],"id":2438,"name":"ExpressionStatement","src":"38313:44:30"},{"attributes":{"functionReturnParameters":2424},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1694,"type":"bytes4","value":"_EIP_1654"},"id":2439,"name":"Identifier","src":"38374:9:30"}],"id":2440,"name":"Return","src":"38367:16:30"}],"id":2441,"name":"Block","src":"38247:143:30"}],"id":2442,"name":"FunctionDefinition","src":"38146:244:30"},{"attributes":{"documentation":"@dev Transfers the specified asset to the recipient's address.\n @param _to is the recipient's address.\n @param _asset is the address of an ERC20 token or 0x0 for ether.\n @param _amount is the amount of assets to be transferred in base units.","implemented":true,"isConstructor":false,"kind":"function","name":"transfer","scope":2509,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_to","scope":2508,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":2443,"name":"ElementaryTypeName","src":"38685:15:30"}],"id":2444,"name":"VariableDeclaration","src":"38685:19:30"},{"attributes":{"constant":false,"name":"_asset","scope":2508,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2445,"name":"ElementaryTypeName","src":"38706:7:30"}],"id":2446,"name":"VariableDeclaration","src":"38706:14:30"},{"attributes":{"constant":false,"name":"_amount","scope":2508,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2447,"name":"ElementaryTypeName","src":"38722:7:30"}],"id":2448,"name":"VariableDeclaration","src":"38722:15:30"}],"id":2449,"name":"ParameterList","src":"38684:54:30"},{"attributes":{"parameters":[null]},"children":[],"id":2455,"name":"ParameterList","src":"38781:0:30"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":383,"type":"modifier ()","value":"onlyOwnerOrSelf"},"id":2450,"name":"Identifier","src":"38746:15:30"}],"id":2451,"name":"ModifierInvocation","src":"38746:15:30"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1752,"type":"modifier (uint256)","value":"isNotZero"},"id":2452,"name":"Identifier","src":"38762:9:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2453,"name":"Identifier","src":"38772:7:30"}],"id":2454,"name":"ModifierInvocation","src":"38762:18:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_680f6a32e9231c9e20746c0afa2d6c3a5c617d8ed04badee4157b674b70920f8","typeString":"literal_string \"destination=0\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2456,"name":"Identifier","src":"38852:7:30"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2444,"type":"address payable","value":"_to"},"id":2457,"name":"Identifier","src":"38860:3:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2458,"name":"ElementaryTypeNameExpression","src":"38867:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2459,"name":"Literal","src":"38875:1:30"}],"id":2460,"name":"FunctionCall","src":"38867:10:30"}],"id":2461,"name":"BinaryOperation","src":"38860:17:30"},{"attributes":{"argumentTypes":null,"hexvalue":"64657374696e6174696f6e3d30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"destination=0\"","value":"destination=0"},"id":2462,"name":"Literal","src":"38879:15:30"}],"id":2463,"name":"FunctionCall","src":"38852:43:30"}],"id":2464,"name":"ExpressionStatement","src":"38852:43:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!","prefix":true,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":435,"type":"mapping(address => bool)","value":"whitelistMap"},"id":2465,"name":"Identifier","src":"38984:12:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2444,"type":"address payable","value":"_to"},"id":2466,"name":"Identifier","src":"38997:3:30"}],"id":2467,"name":"IndexAccess","src":"38984:17:30"}],"id":2468,"name":"UnaryOperation","src":"38983:18:30"},{"children":[{"attributes":{"assignments":[2470]},"children":[{"attributes":{"constant":false,"name":"etherValue","scope":2493,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2469,"name":"ElementaryTypeName","src":"39080:7:30"}],"id":2470,"name":"VariableDeclaration","src":"39080:18:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2471,"name":"Identifier","src":"39101:7:30"}],"id":2472,"name":"VariableDeclarationStatement","src":"39080:28:30"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2446,"type":"address","value":"_asset"},"id":2473,"name":"Identifier","src":"39205:6:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2474,"name":"ElementaryTypeNameExpression","src":"39215:7:30"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2475,"name":"Literal","src":"39223:1:30"}],"id":2476,"name":"FunctionCall","src":"39215:10:30"}],"id":2477,"name":"BinaryOperation","src":"39205:20:30"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"uint256","value":"etherValue"},"id":2478,"name":"Identifier","src":"39245:10:30"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":2198,"type":"function (address,uint256) view returns (uint256)","value":"convertToEther"},"id":2479,"name":"Identifier","src":"39258:14:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2446,"type":"address","value":"_asset"},"id":2480,"name":"Identifier","src":"39273:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2481,"name":"Identifier","src":"39281:7:30"}],"id":2482,"name":"FunctionCall","src":"39258:31:30"}],"id":2483,"name":"Assignment","src":"39245:44:30"}],"id":2484,"name":"ExpressionStatement","src":"39245:44:30"}],"id":2485,"name":"Block","src":"39227:77:30"}],"id":2486,"name":"IfStatement","src":"39201:103:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"_enforceLimit","referencedDeclaration":1000,"type":"function (struct DailyLimitTrait.DailyLimit storage pointer,uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":1153,"type":"struct DailyLimitTrait.DailyLimit storage ref","value":"_spendLimit"},"id":2487,"name":"Identifier","src":"39515:11:30"}],"id":2489,"name":"MemberAccess","src":"39515:25:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2470,"type":"uint256","value":"etherValue"},"id":2490,"name":"Identifier","src":"39541:10:30"}],"id":2491,"name":"FunctionCall","src":"39515:37:30"}],"id":2492,"name":"ExpressionStatement","src":"39515:37:30"}],"id":2493,"name":"Block","src":"39003:560:30"}],"id":2494,"name":"IfStatement","src":"38979:584:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":4166,"type":"function (address payable,address,uint256)","value":"_safeTransfer"},"id":2495,"name":"Identifier","src":"39638:13:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2444,"type":"address payable","value":"_to"},"id":2496,"name":"Identifier","src":"39652:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2446,"type":"address","value":"_asset"},"id":2497,"name":"Identifier","src":"39657:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2498,"name":"Identifier","src":"39665:7:30"}],"id":2499,"name":"FunctionCall","src":"39638:35:30"}],"id":2500,"name":"ExpressionStatement","src":"39638:35:30"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":1683,"type":"function (address,address,uint256)","value":"Transferred"},"id":2501,"name":"Identifier","src":"39724:11:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2444,"type":"address payable","value":"_to"},"id":2502,"name":"Identifier","src":"39736:3:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2446,"type":"address","value":"_asset"},"id":2503,"name":"Identifier","src":"39741:6:30"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2448,"type":"uint256","value":"_amount"},"id":2504,"name":"Identifier","src":"39749:7:30"}],"id":2505,"name":"FunctionCall","src":"39724:33:30"}],"id":2506,"name":"EmitStatement","src":"39719:38:30"}],"id":2507,"name":"Block","src":"38781:983:30"}],"id":2508,"name":"FunctionDefinition","src":"38667:1097:30"}],"id":2509,"name":"ContractDefinition","src":"22209:17557:30"}],"id":2510,"name":"SourceUnit","src":"757:39010:30"}},"walletCache.sol":{"AST":{"attributes":{"absolutePath":"walletCache.sol","exportedSymbols":{"IWalletCache":[2520],"WalletCache":[2707]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":2511,"name":"PragmaDirective","src":"781:24:31"},{"attributes":{"SourceUnit":2510,"absolutePath":"wallet.sol","file":"./wallet.sol","scope":2708,"symbolAliases":[null],"unitAlias":""},"id":2512,"name":"ImportDirective","src":"807:22:31"},{"attributes":{"SourceUnit":3207,"absolutePath":"internals/ensResolvable.sol","file":"./internals/ensResolvable.sol","scope":2708,"symbolAliases":[null],"unitAlias":""},"id":2513,"name":"ImportDirective","src":"830:39:31"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":2708,"symbolAliases":[null],"unitAlias":""},"id":2514,"name":"ImportDirective","src":"870:38:31"},{"attributes":{"baseContracts":[null],"contractDependencies":[null],"contractKind":"interface","documentation":"@title IWalletCache interface describes a method for poping an already cached wallet","fullyImplemented":false,"linearizedBaseContracts":[2520],"name":"IWalletCache","scope":2708},"children":[{"attributes":{"body":null,"documentation":null,"implemented":false,"isConstructor":false,"kind":"function","modifiers":[null],"name":"walletCachePop","scope":2520,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2515,"name":"ParameterList","src":"1052:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2519,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2516,"name":"UserDefinedTypeName","src":"1073:6:31"}],"id":2517,"name":"VariableDeclaration","src":"1073:6:31"}],"id":2518,"name":"ParameterList","src":"1072:8:31"}],"id":2519,"name":"FunctionDefinition","src":"1029:52:31"}],"id":2520,"name":"ContractDefinition","src":"1000:83:31"},{"attributes":{"contractDependencies":[325,2509,3206],"contractKind":"contract","documentation":"/ @title Wallet cache with wallet pre-caching functionality.","fullyImplemented":true,"linearizedBaseContracts":[2707,325,3206],"name":"WalletCache","scope":2708},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":2521,"name":"UserDefinedTypeName","src":"1174:13:31"}],"id":2522,"name":"InheritanceSpecifier","src":"1174:13:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":2523,"name":"UserDefinedTypeName","src":"1189:12:31"}],"id":2524,"name":"InheritanceSpecifier","src":"1189:12:31"},{"attributes":{"anonymous":false,"documentation":null,"name":"CachedWallet"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_wallet","scope":2528,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2525,"name":"UserDefinedTypeName","src":"1227:6:31"}],"id":2526,"name":"VariableDeclaration","src":"1227:14:31"}],"id":2527,"name":"ParameterList","src":"1226:16:31"}],"id":2528,"name":"EventDefinition","src":"1208:35:31"},{"attributes":{"constant":true,"name":"_DEFAULT_LICENCE_NODE","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2529,"name":"ElementaryTypeName","src":"1348:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307864306666386264363766366532356534653462303130646635383261333661306565396237386534396166653663633163666635646435613833303430333330","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 9453...(69 digits omitted)...3024","value":"0xd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a83040330"},"id":2530,"name":"Literal","src":"1397:66:31"}],"id":2531,"name":"VariableDeclaration","src":"1348:115:31"},{"attributes":{"constant":true,"name":"_DEFAULT_TOKEN_WHITELIST_NODE","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2532,"name":"ElementaryTypeName","src":"1506:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307865383466393035373066313366653039663238386632343131666639636635306461363131656430633764623766373364343830353366666339373464333936","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1050...(70 digits omitted)...8950","value":"0xe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d396"},"id":2533,"name":"Literal","src":"1563:66:31"}],"id":2534,"name":"VariableDeclaration","src":"1506:123:31"},{"attributes":{"constant":true,"name":"_DEFAULT_WALLET_DEPLOYER_NODE","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2535,"name":"ElementaryTypeName","src":"1675:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"307831643063306164626536616464643933363539343436333131653037363761353662363764343165663338663063623636646366373536306432386135613338","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1313...(69 digits omitted)...7784","value":"0x1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a38"},"id":2536,"name":"Literal","src":"1732:66:31"}],"id":2537,"name":"VariableDeclaration","src":"1675:123:31"},{"attributes":{"constant":false,"name":"licenceNode","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2538,"name":"ElementaryTypeName","src":"1805:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2531,"type":"bytes32","value":"_DEFAULT_LICENCE_NODE"},"id":2539,"name":"Identifier","src":"1834:21:31"}],"id":2540,"name":"VariableDeclaration","src":"1805:50:31"},{"attributes":{"constant":false,"name":"tokenWhitelistNode","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2541,"name":"ElementaryTypeName","src":"1861:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2534,"type":"bytes32","value":"_DEFAULT_TOKEN_WHITELIST_NODE"},"id":2542,"name":"Identifier","src":"1897:29:31"}],"id":2543,"name":"VariableDeclaration","src":"1861:65:31"},{"attributes":{"constant":false,"name":"walletDeployerNode","scope":2707,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2544,"name":"ElementaryTypeName","src":"1932:7:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2537,"type":"bytes32","value":"_DEFAULT_WALLET_DEPLOYER_NODE"},"id":2545,"name":"Identifier","src":"1968:29:31"}],"id":2546,"name":"VariableDeclaration","src":"1932:65:31"},{"attributes":{"constant":false,"name":"cachedWallets","scope":2707,"stateVariable":true,"storageLocation":"default","type":"contract Wallet[]","value":null,"visibility":"public"},"children":[{"attributes":{"length":null,"type":"contract Wallet[]"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2547,"name":"UserDefinedTypeName","src":"2004:6:31"}],"id":2548,"name":"ArrayTypeName","src":"2004:8:31"}],"id":2549,"name":"VariableDeclaration","src":"2004:29:31"},{"attributes":{"constant":false,"name":"ens","scope":2707,"stateVariable":true,"storageLocation":"default","type":"address","value":null,"visibility":"public"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2550,"name":"ElementaryTypeName","src":"2040:7:31"}],"id":2551,"name":"VariableDeclaration","src":"2040:18:31"},{"attributes":{"constant":false,"name":"defaultSpendLimit","scope":2707,"stateVariable":true,"storageLocation":"default","type":"uint256","value":null,"visibility":"public"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2552,"name":"ElementaryTypeName","src":"2064:7:31"}],"id":2553,"name":"VariableDeclaration","src":"2064:32:31"},{"attributes":{"documentation":"@notice parameters are passed in so that they can be used to construct new instances of the wallet\n @dev pass in bytes32 to use the default, production node labels for ENS","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":2707,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":2554,"name":"ElementaryTypeName","src":"2311:7:31"}],"id":2555,"name":"VariableDeclaration","src":"2311:13:31"},{"attributes":{"constant":false,"name":"_defaultSpendLimit_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2556,"name":"ElementaryTypeName","src":"2334:7:31"}],"id":2557,"name":"VariableDeclaration","src":"2334:27:31"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2558,"name":"ElementaryTypeName","src":"2371:7:31"}],"id":2559,"name":"VariableDeclaration","src":"2371:24:31"},{"attributes":{"constant":false,"name":"_licenceNode_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2560,"name":"ElementaryTypeName","src":"2405:7:31"}],"id":2561,"name":"VariableDeclaration","src":"2405:21:31"},{"attributes":{"constant":false,"name":"_tokenWhitelistNode_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2562,"name":"ElementaryTypeName","src":"2436:7:31"}],"id":2563,"name":"VariableDeclaration","src":"2436:28:31"},{"attributes":{"constant":false,"name":"_walletDeployerNode_","scope":2616,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":2564,"name":"ElementaryTypeName","src":"2474:7:31"}],"id":2565,"name":"VariableDeclaration","src":"2474:28:31"}],"id":2566,"name":"ParameterList","src":"2301:207:31"},{"attributes":{"parameters":[null]},"children":[],"id":2573,"name":"ParameterList","src":"2568:0:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":2567,"name":"Identifier","src":"2516:13:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2555,"type":"address","value":"_ens_"},"id":2568,"name":"Identifier","src":"2530:5:31"}],"id":2569,"name":"ModifierInvocation","src":"2516:20:31"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":2570,"name":"Identifier","src":"2537:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2559,"type":"bytes32","value":"_controllerNode_"},"id":2571,"name":"Identifier","src":"2550:16:31"}],"id":2572,"name":"ModifierInvocation","src":"2537:30:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2551,"type":"address","value":"ens"},"id":2574,"name":"Identifier","src":"2578:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2555,"type":"address","value":"_ens_"},"id":2575,"name":"Identifier","src":"2584:5:31"}],"id":2576,"name":"Assignment","src":"2578:11:31"}],"id":2577,"name":"ExpressionStatement","src":"2578:11:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2553,"type":"uint256","value":"defaultSpendLimit"},"id":2578,"name":"Identifier","src":"2599:17:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2557,"type":"uint256","value":"_defaultSpendLimit_"},"id":2579,"name":"Identifier","src":"2619:19:31"}],"id":2580,"name":"Assignment","src":"2599:39:31"}],"id":2581,"name":"ExpressionStatement","src":"2599:39:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2561,"type":"bytes32","value":"_licenceNode_"},"id":2582,"name":"Identifier","src":"2695:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2583,"name":"ElementaryTypeNameExpression","src":"2712:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2584,"name":"Literal","src":"2720:1:31"}],"id":2585,"name":"FunctionCall","src":"2712:10:31"}],"id":2586,"name":"BinaryOperation","src":"2695:27:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2540,"type":"bytes32","value":"licenceNode"},"id":2587,"name":"Identifier","src":"2738:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2561,"type":"bytes32","value":"_licenceNode_"},"id":2588,"name":"Identifier","src":"2752:13:31"}],"id":2589,"name":"Assignment","src":"2738:27:31"}],"id":2590,"name":"ExpressionStatement","src":"2738:27:31"}],"id":2591,"name":"Block","src":"2724:52:31"}],"id":2592,"name":"IfStatement","src":"2691:85:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":2593,"name":"Identifier","src":"2838:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2594,"name":"ElementaryTypeNameExpression","src":"2862:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2595,"name":"Literal","src":"2870:1:31"}],"id":2596,"name":"FunctionCall","src":"2862:10:31"}],"id":2597,"name":"BinaryOperation","src":"2838:34:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2543,"type":"bytes32","value":"tokenWhitelistNode"},"id":2598,"name":"Identifier","src":"2888:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2563,"type":"bytes32","value":"_tokenWhitelistNode_"},"id":2599,"name":"Identifier","src":"2909:20:31"}],"id":2600,"name":"Assignment","src":"2888:41:31"}],"id":2601,"name":"ExpressionStatement","src":"2888:41:31"}],"id":2602,"name":"Block","src":"2874:66:31"}],"id":2603,"name":"IfStatement","src":"2834:106:31"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"bytes32","value":"_walletDeployerNode_"},"id":2604,"name":"Identifier","src":"3002:20:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":2605,"name":"ElementaryTypeNameExpression","src":"3026:7:31"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":2606,"name":"Literal","src":"3034:1:31"}],"id":2607,"name":"FunctionCall","src":"3026:10:31"}],"id":2608,"name":"BinaryOperation","src":"3002:34:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2546,"type":"bytes32","value":"walletDeployerNode"},"id":2609,"name":"Identifier","src":"3052:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2565,"type":"bytes32","value":"_walletDeployerNode_"},"id":2610,"name":"Identifier","src":"3073:20:31"}],"id":2611,"name":"Assignment","src":"3052:41:31"}],"id":2612,"name":"ExpressionStatement","src":"3052:41:31"}],"id":2613,"name":"Block","src":"3038:66:31"}],"id":2614,"name":"IfStatement","src":"2998:106:31"}],"id":2615,"name":"Block","src":"2568:542:31"}],"id":2616,"name":"FunctionDefinition","src":"2290:820:31"},{"attributes":{"documentation":null,"name":"onlyWalletDeployer","visibility":"internal"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2617,"name":"ParameterList","src":"3143:2:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_b2ae83e68b46e92db3c6a8db018001d48e56a6c05f219cc33be19b5d44f899d9","typeString":"literal_string \"not called by wallet-deployer\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":2618,"name":"Identifier","src":"3156:7:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"sender","referencedDeclaration":null,"type":"address payable"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":2619,"name":"Identifier","src":"3164:3:31"}],"id":2620,"name":"MemberAccess","src":"3164:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2621,"name":"Identifier","src":"3178:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2546,"type":"bytes32","value":"walletDeployerNode"},"id":2622,"name":"Identifier","src":"3190:18:31"}],"id":2623,"name":"FunctionCall","src":"3178:31:31"}],"id":2624,"name":"BinaryOperation","src":"3164:45:31"},{"attributes":{"argumentTypes":null,"hexvalue":"6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"not called by wallet-deployer\"","value":"not called by wallet-deployer"},"id":2625,"name":"Literal","src":"3211:31:31"}],"id":2626,"name":"FunctionCall","src":"3156:87:31"}],"id":2627,"name":"ExpressionStatement","src":"3156:87:31"},{"id":2628,"name":"PlaceholderStatement","src":"3253:1:31"}],"id":2629,"name":"Block","src":"3146:115:31"}],"id":2630,"name":"ModifierDefinition","src":"3116:145:31"},{"attributes":{"documentation":"@notice This public method allows anyone to pre-cache wallets","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cacheWallet","scope":2707,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2631,"name":"ParameterList","src":"3357:2:31"},{"attributes":{"parameters":[null]},"children":[],"id":2632,"name":"ParameterList","src":"3367:0:31"},{"children":[{"attributes":{"assignments":[2634]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":2663,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2633,"name":"UserDefinedTypeName","src":"3479:6:31"}],"id":2634,"name":"VariableDeclaration","src":"3479:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract Wallet","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_address","typeString":"address"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_bytes32","typeString":"bytes32"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"type":"function (address payable,bool,address,bytes32,bytes32,bytes32,uint256) returns (contract Wallet)"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2635,"name":"UserDefinedTypeName","src":"3499:6:31"}],"id":2636,"name":"NewExpression","src":"3495:10:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint160","typeString":"uint160"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":2637,"name":"ElementaryTypeNameExpression","src":"3519:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint160","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(uint160)","value":"uint160"},"id":2638,"name":"ElementaryTypeNameExpression","src":"3527:7:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":2639,"name":"Identifier","src":"3535:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2546,"type":"bytes32","value":"walletDeployerNode"},"id":2640,"name":"Identifier","src":"3547:18:31"}],"id":2641,"name":"FunctionCall","src":"3535:31:31"}],"id":2642,"name":"FunctionCall","src":"3527:40:31"}],"id":2643,"name":"FunctionCall","src":"3519:49:31"},{"attributes":{"argumentTypes":null,"hexvalue":"74727565","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"true"},"id":2644,"name":"Literal","src":"3582:4:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2551,"type":"address","value":"ens"},"id":2645,"name":"Identifier","src":"3600:3:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2543,"type":"bytes32","value":"tokenWhitelistNode"},"id":2646,"name":"Identifier","src":"3617:18:31"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":290,"type":"function () view returns (bytes32)","value":"controllerNode"},"id":2647,"name":"Identifier","src":"3649:14:31"}],"id":2648,"name":"FunctionCall","src":"3649:16:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2540,"type":"bytes32","value":"licenceNode"},"id":2649,"name":"Identifier","src":"3679:11:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2553,"type":"uint256","value":"defaultSpendLimit"},"id":2650,"name":"Identifier","src":"3704:17:31"}],"id":2651,"name":"FunctionCall","src":"3495:236:31"}],"id":2652,"name":"VariableDeclarationStatement","src":"3479:252:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"uint256","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"push","referencedDeclaration":null,"type":"function (contract Wallet) returns (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2653,"name":"Identifier","src":"3741:13:31"}],"id":2655,"name":"MemberAccess","src":"3741:18:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"contract Wallet","value":"wallet"},"id":2656,"name":"Identifier","src":"3760:6:31"}],"id":2657,"name":"FunctionCall","src":"3741:26:31"}],"id":2658,"name":"ExpressionStatement","src":"3741:26:31"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"overloadedDeclarations":[null],"referencedDeclaration":2528,"type":"function (contract Wallet)","value":"CachedWallet"},"id":2659,"name":"Identifier","src":"3783:12:31"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2634,"type":"contract Wallet","value":"wallet"},"id":2660,"name":"Identifier","src":"3796:6:31"}],"id":2661,"name":"FunctionCall","src":"3783:20:31"}],"id":2662,"name":"EmitStatement","src":"3778:25:31"}],"id":2663,"name":"Block","src":"3367:443:31"}],"id":2664,"name":"FunctionDefinition","src":"3337:473:31"},{"attributes":{"documentation":"@notice This public method allows only the wallet deployer to pop pre-cached wallets or create a new one in case there aren't any","implemented":true,"isConstructor":false,"kind":"function","name":"walletCachePop","scope":2707,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2665,"name":"ParameterList","src":"3977:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2697,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2668,"name":"UserDefinedTypeName","src":"4017:6:31"}],"id":2669,"name":"VariableDeclaration","src":"4017:6:31"}],"id":2670,"name":"ParameterList","src":"4016:8:31"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2630,"type":"modifier ()","value":"onlyWalletDeployer"},"id":2666,"name":"Identifier","src":"3989:18:31"}],"id":2667,"name":"ModifierInvocation","src":"3989:18:31"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"<","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2671,"name":"Identifier","src":"4039:13:31"}],"id":2672,"name":"MemberAccess","src":"4039:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2673,"name":"Literal","src":"4062:1:31"}],"id":2674,"name":"BinaryOperation","src":"4039:24:31"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"overloadedDeclarations":[null],"referencedDeclaration":2664,"type":"function ()","value":"cacheWallet"},"id":2675,"name":"Identifier","src":"4079:11:31"}],"id":2676,"name":"FunctionCall","src":"4079:13:31"}],"id":2677,"name":"ExpressionStatement","src":"4079:13:31"}],"id":2678,"name":"Block","src":"4065:38:31"}],"id":2679,"name":"IfStatement","src":"4035:68:31"},{"attributes":{"assignments":[2681]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":2696,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":2680,"name":"UserDefinedTypeName","src":"4113:6:31"}],"id":2681,"name":"VariableDeclaration","src":"4113:13:31"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"contract Wallet"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2682,"name":"Identifier","src":"4129:13:31"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"-","type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2683,"name":"Identifier","src":"4143:13:31"}],"id":2684,"name":"MemberAccess","src":"4143:20:31"},{"attributes":{"argumentTypes":null,"hexvalue":"31","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 1","value":"1"},"id":2685,"name":"Literal","src":"4166:1:31"}],"id":2686,"name":"BinaryOperation","src":"4143:24:31"}],"id":2687,"name":"IndexAccess","src":"4129:39:31"}],"id":2688,"name":"VariableDeclarationStatement","src":"4113:55:31"},{"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"pop","referencedDeclaration":null,"type":"function ()"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2689,"name":"Identifier","src":"4178:13:31"}],"id":2691,"name":"MemberAccess","src":"4178:17:31"}],"id":2692,"name":"FunctionCall","src":"4178:19:31"}],"id":2693,"name":"ExpressionStatement","src":"4178:19:31"},{"attributes":{"functionReturnParameters":2670},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2681,"type":"contract Wallet","value":"wallet"},"id":2694,"name":"Identifier","src":"4215:6:31"}],"id":2695,"name":"Return","src":"4208:13:31"}],"id":2696,"name":"Block","src":"4025:203:31"}],"id":2697,"name":"FunctionDefinition","src":"3954:274:31"},{"attributes":{"documentation":"@notice returns the number of pre-cached wallets","implemented":true,"isConstructor":false,"kind":"function","modifiers":[null],"name":"cachedWalletsCount","scope":2707,"stateMutability":"view","superFunction":null,"visibility":"external"},"children":[{"attributes":{"parameters":[null]},"children":[],"id":2698,"name":"ParameterList","src":"4318:2:31"},{"children":[{"attributes":{"constant":false,"name":"","scope":2706,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":2699,"name":"ElementaryTypeName","src":"4344:7:31"}],"id":2700,"name":"VariableDeclaration","src":"4344:7:31"}],"id":2701,"name":"ParameterList","src":"4343:9:31"},{"children":[{"attributes":{"functionReturnParameters":2701},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"member_name":"length","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":2549,"type":"contract Wallet[] storage ref","value":"cachedWallets"},"id":2702,"name":"Identifier","src":"4370:13:31"}],"id":2703,"name":"MemberAccess","src":"4370:20:31"}],"id":2704,"name":"Return","src":"4363:27:31"}],"id":2705,"name":"Block","src":"4353:44:31"}],"id":2706,"name":"FunctionDefinition","src":"4291:106:31"}],"id":2707,"name":"ContractDefinition","src":"1150:3249:31"}],"id":2708,"name":"SourceUnit","src":"781:3619:31"}},"walletDeployer.sol":{"AST":{"attributes":{"absolutePath":"walletDeployer.sol","exportedSymbols":{"WalletDeployer":[229]}},"children":[{"attributes":{"literals":["solidity","^","0.5",".17"]},"id":1,"name":"PragmaDirective","src":"775:24:32"},{"attributes":{"SourceUnit":2510,"absolutePath":"wallet.sol","file":"./wallet.sol","scope":230,"symbolAliases":[null],"unitAlias":""},"id":2,"name":"ImportDirective","src":"801:22:32"},{"attributes":{"SourceUnit":2708,"absolutePath":"walletCache.sol","file":"./walletCache.sol","scope":230,"symbolAliases":[null],"unitAlias":""},"id":3,"name":"ImportDirective","src":"824:27:32"},{"attributes":{"SourceUnit":326,"absolutePath":"internals/controllable.sol","file":"./internals/controllable.sol","scope":230,"symbolAliases":[null],"unitAlias":""},"id":4,"name":"ImportDirective","src":"852:38:32"},{"attributes":{"contractDependencies":[325,3206],"contractKind":"contract","documentation":"/ @title Wallet deployer with pre-caching if wallets functionality.","fullyImplemented":true,"linearizedBaseContracts":[229,325,3206],"name":"WalletDeployer","scope":230},"children":[{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"ENSResolvable","referencedDeclaration":3206,"type":"contract ENSResolvable"},"id":5,"name":"UserDefinedTypeName","src":"991:13:32"}],"id":6,"name":"InheritanceSpecifier","src":"991:13:32"},{"attributes":{"arguments":null},"children":[{"attributes":{"contractScope":null,"name":"Controllable","referencedDeclaration":325,"type":"contract Controllable"},"id":7,"name":"UserDefinedTypeName","src":"1006:12:32"}],"id":8,"name":"InheritanceSpecifier","src":"1006:12:32"},{"attributes":{"anonymous":false,"documentation":null,"name":"DeployedWallet"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_wallet","scope":14,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":9,"name":"UserDefinedTypeName","src":"1046:6:32"}],"id":10,"name":"VariableDeclaration","src":"1046:14:32"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":14,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":11,"name":"ElementaryTypeName","src":"1062:7:32"}],"id":12,"name":"VariableDeclaration","src":"1062:14:32"}],"id":13,"name":"ParameterList","src":"1045:32:32"}],"id":14,"name":"EventDefinition","src":"1025:53:32"},{"attributes":{"anonymous":false,"documentation":null,"name":"MigratedWallet"},"children":[{"children":[{"attributes":{"constant":false,"indexed":false,"name":"_wallet","scope":24,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":15,"name":"UserDefinedTypeName","src":"1104:6:32"}],"id":16,"name":"VariableDeclaration","src":"1104:14:32"},{"attributes":{"constant":false,"indexed":false,"name":"_oldWallet","scope":24,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":17,"name":"UserDefinedTypeName","src":"1120:6:32"}],"id":18,"name":"VariableDeclaration","src":"1120:17:32"},{"attributes":{"constant":false,"indexed":false,"name":"_owner","scope":24,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":19,"name":"ElementaryTypeName","src":"1139:7:32"}],"id":20,"name":"VariableDeclaration","src":"1139:14:32"},{"attributes":{"constant":false,"indexed":false,"name":"_paid","scope":24,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":21,"name":"ElementaryTypeName","src":"1155:7:32"}],"id":22,"name":"VariableDeclaration","src":"1155:13:32"}],"id":23,"name":"ParameterList","src":"1103:66:32"}],"id":24,"name":"EventDefinition","src":"1083:87:32"},{"attributes":{"constant":true,"name":"_DEFAULT_WALLET_CACHE_NODE","scope":229,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"private"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":25,"name":"ElementaryTypeName","src":"1283:7:32"},{"attributes":{"argumentTypes":null,"hexvalue":"307861663535336362306437373639303831396639643666626161303434313665316664636661303162326139613833336337613131653661653062633162653838","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 7930...(69 digits omitted)...0552","value":"0xaf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be88"},"id":26,"name":"Literal","src":"1337:66:32"}],"id":27,"name":"VariableDeclaration","src":"1283:120:32"},{"attributes":{"constant":false,"name":"walletCacheNode","scope":229,"stateVariable":true,"storageLocation":"default","type":"bytes32","visibility":"public"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":28,"name":"ElementaryTypeName","src":"1409:7:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":27,"type":"bytes32","value":"_DEFAULT_WALLET_CACHE_NODE"},"id":29,"name":"Identifier","src":"1442:26:32"}],"id":30,"name":"VariableDeclaration","src":"1409:59:32"},{"attributes":{"constant":false,"name":"deployedWallets","scope":229,"stateVariable":true,"storageLocation":"default","type":"mapping(address => address)","value":null,"visibility":"public"},"children":[{"attributes":{"type":"mapping(address => address)"},"children":[{"attributes":{"name":"address","type":"address"},"id":31,"name":"ElementaryTypeName","src":"1483:7:32"},{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":32,"name":"ElementaryTypeName","src":"1494:7:32"}],"id":33,"name":"Mapping","src":"1475:27:32"}],"id":34,"name":"VariableDeclaration","src":"1475:50:32"},{"attributes":{"documentation":"@notice it needs to know to address of the wallet cache","implemented":true,"isConstructor":true,"kind":"constructor","name":"","scope":229,"stateMutability":"nonpayable","superFunction":null,"visibility":"public"},"children":[{"children":[{"attributes":{"constant":false,"name":"_ens_","scope":61,"stateVariable":false,"storageLocation":"default","type":"address","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":35,"name":"ElementaryTypeName","src":"1609:7:32"}],"id":36,"name":"VariableDeclaration","src":"1609:13:32"},{"attributes":{"constant":false,"name":"_controllerNode_","scope":61,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":37,"name":"ElementaryTypeName","src":"1624:7:32"}],"id":38,"name":"VariableDeclaration","src":"1624:24:32"},{"attributes":{"constant":false,"name":"_walletCacheNode_","scope":61,"stateVariable":false,"storageLocation":"default","type":"bytes32","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bytes32","type":"bytes32"},"id":39,"name":"ElementaryTypeName","src":"1650:7:32"}],"id":40,"name":"VariableDeclaration","src":"1650:25:32"}],"id":41,"name":"ParameterList","src":"1608:68:32"},{"attributes":{"parameters":[null]},"children":[],"id":48,"name":"ParameterList","src":"1736:0:32"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":3206,"type":"type(contract ENSResolvable)","value":"ENSResolvable"},"id":42,"name":"Identifier","src":"1684:13:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":36,"type":"address","value":"_ens_"},"id":43,"name":"Identifier","src":"1698:5:32"}],"id":44,"name":"ModifierInvocation","src":"1684:20:32"},{"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":325,"type":"type(contract Controllable)","value":"Controllable"},"id":45,"name":"Identifier","src":"1705:12:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":38,"type":"bytes32","value":"_controllerNode_"},"id":46,"name":"Identifier","src":"1718:16:32"}],"id":47,"name":"ModifierInvocation","src":"1705:30:32"},{"children":[{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_bytes32","typeString":"bytes32"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"!=","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":40,"type":"bytes32","value":"_walletCacheNode_"},"id":49,"name":"Identifier","src":"1796:17:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"bytes32","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(bytes32)","value":"bytes32"},"id":50,"name":"ElementaryTypeNameExpression","src":"1817:7:32"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":51,"name":"Literal","src":"1825:1:32"}],"id":52,"name":"FunctionCall","src":"1817:10:32"}],"id":53,"name":"BinaryOperation","src":"1796:31:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"bytes32"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"walletCacheNode"},"id":54,"name":"Identifier","src":"1843:15:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":40,"type":"bytes32","value":"_walletCacheNode_"},"id":55,"name":"Identifier","src":"1861:17:32"}],"id":56,"name":"Assignment","src":"1843:35:32"}],"id":57,"name":"ExpressionStatement","src":"1843:35:32"}],"id":58,"name":"Block","src":"1829:60:32"}],"id":59,"name":"IfStatement","src":"1792:97:32"}],"id":60,"name":"Block","src":"1736:159:32"}],"id":61,"name":"FunctionDefinition","src":"1597:298:32"},{"attributes":{"documentation":"@notice This function is used to deploy a Wallet for a given owner address\n @param _owner is the owner address for the new Wallet to be","implemented":true,"isConstructor":false,"kind":"function","name":"deployWallet","scope":229,"stateMutability":"nonpayable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":99,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":62,"name":"ElementaryTypeName","src":"2074:15:32"}],"id":63,"name":"VariableDeclaration","src":"2074:22:32"}],"id":64,"name":"ParameterList","src":"2073:24:32"},{"attributes":{"parameters":[null]},"children":[],"id":67,"name":"ParameterList","src":"2122:0:32"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":65,"name":"Identifier","src":"2107:14:32"}],"id":66,"name":"ModifierInvocation","src":"2107:14:32"},{"children":[{"attributes":{"assignments":[69]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":98,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":68,"name":"UserDefinedTypeName","src":"2132:6:32"}],"id":69,"name":"VariableDeclaration","src":"2132:13:32"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract Wallet","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"walletCachePop","referencedDeclaration":2519,"type":"function () external returns (contract Wallet)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IWalletCache","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2520,"type":"type(contract IWalletCache)","value":"IWalletCache"},"id":70,"name":"Identifier","src":"2148:12:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":71,"name":"Identifier","src":"2161:11:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"walletCacheNode"},"id":72,"name":"Identifier","src":"2173:15:32"}],"id":73,"name":"FunctionCall","src":"2161:28:32"}],"id":74,"name":"FunctionCall","src":"2148:42:32"}],"id":75,"name":"MemberAccess","src":"2148:57:32"}],"id":76,"name":"FunctionCall","src":"2148:59:32"}],"id":77,"name":"VariableDeclarationStatement","src":"2132:75:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"},{"typeIdentifier":"t_address_payable","typeString":"address payable"}],"overloadedDeclarations":[null],"referencedDeclaration":14,"type":"function (contract Wallet,address)","value":"DeployedWallet"},"id":78,"name":"Identifier","src":"2222:14:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":69,"type":"contract Wallet","value":"wallet"},"id":79,"name":"Identifier","src":"2237:6:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":63,"type":"address payable","value":"_owner"},"id":80,"name":"Identifier","src":"2245:6:32"}],"id":81,"name":"FunctionCall","src":"2222:30:32"}],"id":82,"name":"EmitStatement","src":"2217:35:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":34,"type":"mapping(address => address)","value":"deployedWallets"},"id":83,"name":"Identifier","src":"2263:15:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":63,"type":"address payable","value":"_owner"},"id":84,"name":"Identifier","src":"2279:6:32"}],"id":85,"name":"IndexAccess","src":"2263:23:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":86,"name":"ElementaryTypeNameExpression","src":"2289:7:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":69,"type":"contract Wallet","value":"wallet"},"id":87,"name":"Identifier","src":"2297:6:32"}],"id":88,"name":"FunctionCall","src":"2289:15:32"}],"id":89,"name":"Assignment","src":"2263:41:32"}],"id":90,"name":"ExpressionStatement","src":"2263:41:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferOwnership","referencedDeclaration":3857,"type":"function (address payable,bool) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":69,"type":"contract Wallet","value":"wallet"},"id":91,"name":"Identifier","src":"2404:6:32"}],"id":93,"name":"MemberAccess","src":"2404:24:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":63,"type":"address payable","value":"_owner"},"id":94,"name":"Identifier","src":"2429:6:32"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":95,"name":"Literal","src":"2437:5:32"}],"id":96,"name":"FunctionCall","src":"2404:39:32"}],"id":97,"name":"ExpressionStatement","src":"2404:39:32"}],"id":98,"name":"Block","src":"2122:328:32"}],"id":99,"name":"FunctionDefinition","src":"2052:398:32"},{"attributes":{"documentation":"@notice This function is used to migrate an owner's security settings from a previous version of the wallet\n @param _owner is the owner address for the new Wallet to be\n @param _spendLimit is the user's set daily spend limit\n @param _gasTopUpLimit is the user's set daily gas top-up limit\n @param _whitelistedAddresses is the set of the user's whitelisted addresses","implemented":true,"isConstructor":false,"kind":"function","name":"migrateWallet","scope":229,"stateMutability":"payable","superFunction":null,"visibility":"external"},"children":[{"children":[{"attributes":{"constant":false,"name":"_owner","scope":228,"stateVariable":false,"storageLocation":"default","type":"address payable","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"address","stateMutability":"payable","type":"address payable"},"id":100,"name":"ElementaryTypeName","src":"2890:15:32"}],"id":101,"name":"VariableDeclaration","src":"2890:22:32"},{"attributes":{"constant":false,"name":"_oldWallet","scope":228,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":102,"name":"UserDefinedTypeName","src":"2922:6:32"}],"id":103,"name":"VariableDeclaration","src":"2922:17:32"},{"attributes":{"constant":false,"name":"_initializedSpendLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":104,"name":"ElementaryTypeName","src":"2949:4:32"}],"id":105,"name":"VariableDeclaration","src":"2949:27:32"},{"attributes":{"constant":false,"name":"_initializedGasTopUpLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":106,"name":"ElementaryTypeName","src":"2986:4:32"}],"id":107,"name":"VariableDeclaration","src":"2986:30:32"},{"attributes":{"constant":false,"name":"_initializedLoadLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":108,"name":"ElementaryTypeName","src":"3026:4:32"}],"id":109,"name":"VariableDeclaration","src":"3026:26:32"},{"attributes":{"constant":false,"name":"_initializedWhitelist","scope":228,"stateVariable":false,"storageLocation":"default","type":"bool","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"bool","type":"bool"},"id":110,"name":"ElementaryTypeName","src":"3062:4:32"}],"id":111,"name":"VariableDeclaration","src":"3062:26:32"},{"attributes":{"constant":false,"name":"_spendLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":112,"name":"ElementaryTypeName","src":"3098:7:32"}],"id":113,"name":"VariableDeclaration","src":"3098:19:32"},{"attributes":{"constant":false,"name":"_gasTopUpLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":114,"name":"ElementaryTypeName","src":"3127:7:32"}],"id":115,"name":"VariableDeclaration","src":"3127:22:32"},{"attributes":{"constant":false,"name":"_loadLimit","scope":228,"stateVariable":false,"storageLocation":"default","type":"uint256","value":null,"visibility":"internal"},"children":[{"attributes":{"name":"uint256","type":"uint256"},"id":116,"name":"ElementaryTypeName","src":"3159:7:32"}],"id":117,"name":"VariableDeclaration","src":"3159:18:32"},{"attributes":{"constant":false,"name":"_whitelistedAddresses","scope":228,"stateVariable":false,"storageLocation":"calldata","type":"address[]","value":null,"visibility":"internal"},"children":[{"attributes":{"length":null,"type":"address[]"},"children":[{"attributes":{"name":"address","stateMutability":"nonpayable","type":"address"},"id":118,"name":"ElementaryTypeName","src":"3187:7:32"}],"id":119,"name":"ArrayTypeName","src":"3187:9:32"}],"id":120,"name":"VariableDeclaration","src":"3187:40:32"}],"id":121,"name":"ParameterList","src":"2880:353:32"},{"attributes":{"parameters":[null]},"children":[],"id":124,"name":"ParameterList","src":"3266:0:32"},{"attributes":{"arguments":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":270,"type":"modifier ()","value":"onlyController"},"id":122,"name":"Identifier","src":"3251:14:32"}],"id":123,"name":"ModifierInvocation","src":"3251:14:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_fc10a0d4bd5777d02ae2f8773eb9dd9ef381a268317437b361c1e6a09e11a733","typeString":"literal_string \"wallet already deployed for owner\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":125,"name":"Identifier","src":"3276:7:32"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address","typeString":"address"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":false,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":34,"type":"mapping(address => address)","value":"deployedWallets"},"id":126,"name":"Identifier","src":"3284:15:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":127,"name":"Identifier","src":"3300:6:32"}],"id":128,"name":"IndexAccess","src":"3284:23:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":true,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_rational_0_by_1","typeString":"int_const 0"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":129,"name":"ElementaryTypeNameExpression","src":"3311:7:32"},{"attributes":{"argumentTypes":null,"hexvalue":"307830","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0x0"},"id":130,"name":"Literal","src":"3319:3:32"}],"id":131,"name":"FunctionCall","src":"3311:12:32"}],"id":132,"name":"BinaryOperation","src":"3284:39:32"},{"attributes":{"argumentTypes":null,"hexvalue":"77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"wallet already deployed for owner\"","value":"wallet already deployed for owner"},"id":133,"name":"Literal","src":"3325:35:32"}],"id":134,"name":"FunctionCall","src":"3276:85:32"}],"id":135,"name":"ExpressionStatement","src":"3276:85:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bool","typeString":"bool"},{"typeIdentifier":"t_stringliteral_ab1d0c7b5f91ac46dfc23c1986d9eb5ab20459b5d8578053fe0a04391657b19f","typeString":"literal_string \"owner mismatch\""}],"overloadedDeclarations":[10540,10541],"referencedDeclaration":10541,"type":"function (bool,string memory) pure","value":"require"},"id":136,"name":"Identifier","src":"3371:7:32"},{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_address_payable","typeString":"address payable"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"==","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"owner","referencedDeclaration":3897,"type":"function () view external returns (address payable)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"contract Wallet","value":"_oldWallet"},"id":137,"name":"Identifier","src":"3379:10:32"}],"id":138,"name":"MemberAccess","src":"3379:16:32"}],"id":139,"name":"FunctionCall","src":"3379:18:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":140,"name":"Identifier","src":"3401:6:32"}],"id":141,"name":"BinaryOperation","src":"3379:28:32"},{"attributes":{"argumentTypes":null,"hexvalue":"6f776e6572206d69736d61746368","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"string","type":"literal_string \"owner mismatch\"","value":"owner mismatch"},"id":142,"name":"Literal","src":"3409:16:32"}],"id":143,"name":"FunctionCall","src":"3371:55:32"}],"id":144,"name":"ExpressionStatement","src":"3371:55:32"},{"attributes":{"assignments":[146]},"children":[{"attributes":{"constant":false,"name":"wallet","scope":227,"stateVariable":false,"storageLocation":"default","type":"contract Wallet","value":null,"visibility":"internal"},"children":[{"attributes":{"contractScope":null,"name":"Wallet","referencedDeclaration":2509,"type":"contract Wallet"},"id":145,"name":"UserDefinedTypeName","src":"3437:6:32"}],"id":146,"name":"VariableDeclaration","src":"3437:13:32"},{"attributes":{"argumentTypes":null,"arguments":[null],"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract Wallet","type_conversion":false},"children":[{"attributes":{"argumentTypes":[null],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"walletCachePop","referencedDeclaration":2519,"type":"function () external returns (contract Wallet)"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"contract IWalletCache","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address","typeString":"address"}],"overloadedDeclarations":[null],"referencedDeclaration":2520,"type":"type(contract IWalletCache)","value":"IWalletCache"},"id":147,"name":"Identifier","src":"3453:12:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_bytes32","typeString":"bytes32"}],"overloadedDeclarations":[null],"referencedDeclaration":3205,"type":"function (bytes32) view returns (address)","value":"_ensResolve"},"id":148,"name":"Identifier","src":"3466:11:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":30,"type":"bytes32","value":"walletCacheNode"},"id":149,"name":"Identifier","src":"3478:15:32"}],"id":150,"name":"FunctionCall","src":"3466:28:32"}],"id":151,"name":"FunctionCall","src":"3453:42:32"}],"id":152,"name":"MemberAccess","src":"3453:57:32"}],"id":153,"name":"FunctionCall","src":"3453:59:32"}],"id":154,"name":"VariableDeclarationStatement","src":"3437:75:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"},{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"},{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_uint256","typeString":"uint256"}],"overloadedDeclarations":[null],"referencedDeclaration":24,"type":"function (contract Wallet,contract Wallet,address,uint256)","value":"MigratedWallet"},"id":155,"name":"Identifier","src":"3527:14:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":156,"name":"Identifier","src":"3542:6:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":103,"type":"contract Wallet","value":"_oldWallet"},"id":157,"name":"Identifier","src":"3550:10:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":158,"name":"Identifier","src":"3562:6:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":159,"name":"Identifier","src":"3570:3:32"}],"id":160,"name":"MemberAccess","src":"3570:9:32"}],"id":161,"name":"FunctionCall","src":"3527:53:32"}],"id":162,"name":"EmitStatement","src":"3522:58:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":"=","type":"address"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":true,"isPure":false,"lValueRequested":true,"type":"address"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":34,"type":"mapping(address => address)","value":"deployedWallets"},"id":163,"name":"Identifier","src":"3591:15:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":164,"name":"Identifier","src":"3607:6:32"}],"id":165,"name":"IndexAccess","src":"3591:23:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"address payable","type_conversion":true},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_contract$_Wallet_$2509","typeString":"contract Wallet"}],"isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"type":"type(address)","value":"address"},"id":166,"name":"ElementaryTypeNameExpression","src":"3617:7:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":167,"name":"Identifier","src":"3625:6:32"}],"id":168,"name":"FunctionCall","src":"3617:15:32"}],"id":169,"name":"Assignment","src":"3591:41:32"}],"id":170,"name":"ExpressionStatement","src":"3591:41:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":105,"type":"bool","value":"_initializedSpendLimit"},"id":171,"name":"Identifier","src":"3710:22:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setSpendLimit","referencedDeclaration":1210,"type":"function (uint256) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":172,"name":"Identifier","src":"3748:6:32"}],"id":174,"name":"MemberAccess","src":"3748:20:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":113,"type":"uint256","value":"_spendLimit"},"id":175,"name":"Identifier","src":"3769:11:32"}],"id":176,"name":"FunctionCall","src":"3748:33:32"}],"id":177,"name":"ExpressionStatement","src":"3748:33:32"}],"id":178,"name":"Block","src":"3734:58:32"}],"id":179,"name":"IfStatement","src":"3706:86:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":107,"type":"bool","value":"_initializedGasTopUpLimit"},"id":180,"name":"Identifier","src":"3805:25:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setGasTopUpLimit","referencedDeclaration":1394,"type":"function (uint256) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":181,"name":"Identifier","src":"3846:6:32"}],"id":183,"name":"MemberAccess","src":"3846:23:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":115,"type":"uint256","value":"_gasTopUpLimit"},"id":184,"name":"Identifier","src":"3870:14:32"}],"id":185,"name":"FunctionCall","src":"3846:39:32"}],"id":186,"name":"ExpressionStatement","src":"3846:39:32"}],"id":187,"name":"Block","src":"3832:64:32"}],"id":188,"name":"IfStatement","src":"3801:95:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":109,"type":"bool","value":"_initializedLoadLimit"},"id":189,"name":"Identifier","src":"3909:21:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setLoadLimit","referencedDeclaration":1515,"type":"function (uint256) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":190,"name":"Identifier","src":"3946:6:32"}],"id":192,"name":"MemberAccess","src":"3946:19:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":117,"type":"uint256","value":"_loadLimit"},"id":193,"name":"Identifier","src":"3966:10:32"}],"id":194,"name":"FunctionCall","src":"3946:31:32"}],"id":195,"name":"ExpressionStatement","src":"3946:31:32"}],"id":196,"name":"Block","src":"3932:56:32"}],"id":197,"name":"IfStatement","src":"3905:83:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":111,"type":"bool","value":"_initializedWhitelist"},"id":198,"name":"Identifier","src":"4001:21:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_array$_t_address_$dyn_calldata_ptr","typeString":"address[] calldata"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"setWhitelist","referencedDeclaration":834,"type":"function (address[] memory) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":199,"name":"Identifier","src":"4038:6:32"}],"id":201,"name":"MemberAccess","src":"4038:19:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":120,"type":"address[] calldata","value":"_whitelistedAddresses"},"id":202,"name":"Identifier","src":"4058:21:32"}],"id":203,"name":"FunctionCall","src":"4038:42:32"}],"id":204,"name":"ExpressionStatement","src":"4038:42:32"}],"id":205,"name":"Block","src":"4024:67:32"}],"id":206,"name":"IfStatement","src":"3997:94:32"},{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_address_payable","typeString":"address payable"},{"typeIdentifier":"t_bool","typeString":"bool"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transferOwnership","referencedDeclaration":3857,"type":"function (address payable,bool) external"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":146,"type":"contract Wallet","value":"wallet"},"id":207,"name":"Identifier","src":"4101:6:32"}],"id":209,"name":"MemberAccess","src":"4101:24:32"},{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":210,"name":"Identifier","src":"4126:6:32"},{"attributes":{"argumentTypes":null,"hexvalue":"66616c7365","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"bool","type":"bool","value":"false"},"id":211,"name":"Literal","src":"4134:5:32"}],"id":212,"name":"FunctionCall","src":"4101:39:32"}],"id":213,"name":"ExpressionStatement","src":"4101:39:32"},{"attributes":{"falseBody":null},"children":[{"attributes":{"argumentTypes":null,"commonType":{"typeIdentifier":"t_uint256","typeString":"uint256"},"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"operator":">","type":"bool"},"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":214,"name":"Identifier","src":"4155:3:32"}],"id":215,"name":"MemberAccess","src":"4155:9:32"},{"attributes":{"argumentTypes":null,"hexvalue":"30","isConstant":false,"isLValue":false,"isPure":true,"lValueRequested":false,"subdenomination":null,"token":"number","type":"int_const 0","value":"0"},"id":216,"name":"Literal","src":"4167:1:32"}],"id":217,"name":"BinaryOperation","src":"4155:13:32"},{"children":[{"children":[{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"isStructConstructorCall":false,"lValueRequested":false,"names":[null],"type":"tuple()","type_conversion":false},"children":[{"attributes":{"argumentTypes":[{"typeIdentifier":"t_uint256","typeString":"uint256"}],"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"transfer","referencedDeclaration":null,"type":"function (uint256)"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":101,"type":"address payable","value":"_owner"},"id":218,"name":"Identifier","src":"4184:6:32"}],"id":220,"name":"MemberAccess","src":"4184:15:32"},{"attributes":{"argumentTypes":null,"isConstant":false,"isLValue":false,"isPure":false,"lValueRequested":false,"member_name":"value","referencedDeclaration":null,"type":"uint256"},"children":[{"attributes":{"argumentTypes":null,"overloadedDeclarations":[null],"referencedDeclaration":10537,"type":"msg","value":"msg"},"id":221,"name":"Identifier","src":"4200:3:32"}],"id":222,"name":"MemberAccess","src":"4200:9:32"}],"id":223,"name":"FunctionCall","src":"4184:26:32"}],"id":224,"name":"ExpressionStatement","src":"4184:26:32"}],"id":225,"name":"Block","src":"4170:51:32"}],"id":226,"name":"IfStatement","src":"4151:70:32"}],"id":227,"name":"Block","src":"3266:961:32"}],"id":228,"name":"FunctionDefinition","src":"2858:1369:32"}],"id":229,"name":"ContractDefinition","src":"964:3265:32"}],"id":230,"name":"SourceUnit","src":"775:3455:32"}}},"version":"0.5.17+commit.d19bba13.Linux.g++"} \ No newline at end of file diff --git a/contracts/controller.sol b/contracts/controller.sol index 6c10ebde..70ce2c41 100644 --- a/contracts/controller.sol +++ b/contracts/controller.sol @@ -61,13 +61,13 @@ contract Controller is IController, Ownable, Transferrable { /// @notice Checks if message sender is an admin. modifier onlyAdmin() { - require(_isAdmin[msg.sender], "sender is not an admin"); + require(_isAdmin[msg.sender], "sender is not admin"); _; } /// @notice Check if Owner or Admin modifier onlyAdminOrOwner() { - require(_isOwner(msg.sender) || _isAdmin[msg.sender], "sender is not an admin"); + require(_isOwner(msg.sender) || _isAdmin[msg.sender], "sender is not admin or owner"); _; } diff --git a/pkg/bindings/controller.go b/pkg/bindings/controller.go index 04cd4b67..63a402a5 100644 --- a/pkg/bindings/controller.go +++ b/pkg/bindings/controller.go @@ -31,7 +31,7 @@ var ( const ControllerABI = "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_ownerAddress_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"AddedAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"AddedController\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_admin\",\"type\":\"address\"}],\"name\":\"RemovedAdmin\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_controller\",\"type\":\"address\"}],\"name\":\"RemovedController\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"Started\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"}],\"name\":\"Stopped\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"addController\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"adminCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controllerCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isAdmin\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"isController\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isStopped\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeAdmin\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_account\",\"type\":\"address\"}],\"name\":\"removeController\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"start\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"stop\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // ControllerBin is the compiled bytecode used for deploying new contracts. -var ControllerBin = "0x608060405234801561001057600080fd5b506040516114e13803806114e18339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113e4806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610380565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b0316610386565b6101576103e5565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103f5565b610117610468565b61015761046e565b61010d600480360360208110156101b757600080fd5b50356001600160a01b0316610477565b61010d610525565b6101d7610623565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610632565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073b565b61010d6004803603604081101561026557600080fd5b506001600160a01b0381351690602001351515610803565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109bd565b61010d610a30565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610ac2565b6102da33610b38565b806102f457503360009081526001602052604090205460ff165b61033e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61038f33610b38565b6103d9576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e281610b4c565b50565b600054600160a01b900460ff1690565b60006103ff61046e565b15610449576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048033610b38565b6104ca576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d261046e565b1561051c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610c22565b61052e33610b38565b610578576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff1661068f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61069761046e565b156106e1576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106ec838383610dc7565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074433610b38565b8061075e57503360009081526001602052604090205460ff165b6107a8576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b061046e565b156107fa576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e281610e30565b61080c33610b38565b610856576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108b4576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166108f95760405162461bcd60e51b81526004018080602001828103825260238152602001806113176023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095257604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109c761046e565b15610a11576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a3933610b38565b610a83576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610acb33610b38565b80610ae557503360009081526001602052604090205460ff165b610b2f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6103e281610fd8565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bb9576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c7a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610cd25760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610cdb81610b38565b15610d175760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610d5c5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e11576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e0b573d6000803e3d6000fd5b50610e2b565b610e2b6001600160a01b038316848363ffffffff61109816565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e885760405162461bcd60e51b81526004018080602001828103825260248152602001806112cf6024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ee05760405162461bcd60e51b81526004018080602001828103825260288152602001806113886028913960400191505060405180910390fd5b610ee981610b38565b15610f255760405162461bcd60e51b81526004018080602001828103825260258152602001806112aa6025913960400191505060405180910390fd5b6001600160a01b038116610f6a5760405162461bcd60e51b815260040180806020018281038252602481526020018061133a6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff1661102f5760405162461bcd60e51b81526004018080602001828103825260248152602001806112f36024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e2b9084906110f7826001600160a01b03166112a3565b611148576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111865780518252601f199092019160209182019101611167565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111e8576040519150601f19603f3d011682016040523d82523d6000602084013e6111ed565b606091505b509150915081611244576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561129d5780806020019051602081101561126057600080fd5b505161129d5760405162461bcd60e51b815260040180806020018281038252602a81526020018061135e602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582058a02356821ca469836b893e9f4cec8ba721926c7e979b2fac1867e0b677632964736f6c63430005110032" +var ControllerBin = "0x608060405234801561001057600080fd5b506040516114f33803806114f38339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0383161760ff60a01b191680825582919060ff600160a01b909104166100a757604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a15050506113f6806100fd6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063715018a611610097578063b242e53411610066578063b242e5341461024f578063b429afeb1461027d578063be9a6555146102a3578063f6a74ed7146102ab57610100565b8063715018a6146101c75780638da5cb5b146101cf578063996cba68146101f3578063a7fc7a071461022957610100565b806324d7806c116100d357806324d7806c1461016b5780632b7832b3146101915780633f683b6a1461019957806370480275146101a157610100565b806307da68f51461010557806315b9a8b81461010f5780631785f53c146101295780632121dc751461014f575b600080fd5b61010d6102d1565b005b610117610387565b60408051918252519081900360200190f35b61010d6004803603602081101561013f57600080fd5b50356001600160a01b031661038d565b6101576103ec565b604080519115158252519081900360200190f35b6101576004803603602081101561018157600080fd5b50356001600160a01b03166103fc565b61011761046f565b610157610475565b61010d600480360360208110156101b757600080fd5b50356001600160a01b031661047e565b61010d61052c565b6101d761062a565b604080516001600160a01b039092168252519081900360200190f35b61010d6004803603606081101561020957600080fd5b506001600160a01b03813581169160208101359091169060400135610639565b61010d6004803603602081101561023f57600080fd5b50356001600160a01b031661073f565b61010d6004803603604081101561026557600080fd5b506001600160a01b038135169060200135151561080e565b6101576004803603602081101561029357600080fd5b50356001600160a01b03166109c8565b61010d610a3b565b61010d600480360360208110156102c157600080fd5b50356001600160a01b0316610acd565b6102da33610b4a565b806102f457503360009081526001602052604090205460ff165b610345576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6005805460ff191660011790556040805133815290517f55c4adf1f68f084b809304657594a92ba835ada8d3b5340955bf05746723c05b9181900360200190a1565b60045490565b61039633610b4a565b6103e0576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6103e981610b5e565b50565b600054600160a01b900460ff1690565b6000610406610475565b15610450576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526001602052604090205460ff1690565b60025490565b60055460ff1690565b61048733610b4a565b6104d1576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6104d9610475565b15610523576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610c34565b61053533610b4a565b61057f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166105dd576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600080546001600160a01b031916815560408051828152602081019290925280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a1565b6000546001600160a01b031690565b3360009081526001602052604090205460ff16610693576040805162461bcd60e51b815260206004820152601360248201527239b2b73232b91034b9903737ba1030b236b4b760691b604482015290519081900360640190fd5b61069b610475565b156106e5576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6106f0838383610dd9565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61074833610b4a565b8061076257503360009081526001602052604090205460ff165b6107b3576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6107bb610475565b15610805576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b6103e981610e42565b61081733610b4a565b610861576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600054600160a01b900460ff166108bf576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b0382166109045760405162461bcd60e51b81526004018080602001828103825260238152602001806113296023913960400191505060405180910390fd5b6000805460ff60a01b1916600160a01b831515021790558061095d57604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600054604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600080546001600160a01b0319166001600160a01b0392909216919091179055565b60006109d2610475565b15610a1c576040805162461bcd60e51b815260206004820152601560248201527418dbdb9d1c9bdb1b195c881a5cc81cdd1bdc1c1959605a1b604482015290519081900360640190fd5b506001600160a01b031660009081526003602052604090205460ff1690565b610a4433610b4a565b610a8e576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b6005805460ff191690556040805133815290517f27029695aa5f602a4ee81f4c32dfa86e562f200a17966496f3a7c3f2ec0f94179181900360200190a1565b610ad633610b4a565b80610af057503360009081526001602052604090205460ff165b610b41576040805162461bcd60e51b815260206004820152601c60248201527f73656e646572206973206e6f742061646d696e206f72206f776e657200000000604482015290519081900360640190fd5b6103e981610fea565b6000546001600160a01b0390811691161490565b6001600160a01b03811660009081526001602052604090205460ff16610bcb576040805162461bcd60e51b815260206004820181905260248201527f70726f7669646564206163636f756e74206973206e6f7420616e2061646d696e604482015290519081900360640190fd5b6001600160a01b038116600081815260016020908152604091829020805460ff191690556002805460001901905581513381529081019290925280517f787a2e12f4a55b658b8f573c32432ee11a5e8b51677d1e1e937aaf6a0bb5776e9281900390910190a150565b6001600160a01b03811660009081526001602052604090205460ff1615610c8c5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ce45760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610ced81610b4a565b15610d295760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610d6e5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260016020818152604092839020805460ff1916831790556002805490920190915581513381529081019290925280517fc58b647b8ba5a8cab2f11f32673636cc1061324240972ed05e8cc005b81a4b7a9281900390910190a150565b6001600160a01b038216610e23576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610e1d573d6000803e3d6000fd5b50610e3d565b610e3d6001600160a01b038316848363ffffffff6110aa16565b505050565b6001600160a01b03811660009081526001602052604090205460ff1615610e9a5760405162461bcd60e51b81526004018080602001828103825260248152602001806112e16024913960400191505060405180910390fd5b6001600160a01b03811660009081526003602052604090205460ff1615610ef25760405162461bcd60e51b815260040180806020018281038252602881526020018061139a6028913960400191505060405180910390fd5b610efb81610b4a565b15610f375760405162461bcd60e51b81526004018080602001828103825260258152602001806112bc6025913960400191505060405180910390fd5b6001600160a01b038116610f7c5760405162461bcd60e51b815260040180806020018281038252602481526020018061134c6024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff1916600190811790915560048054909101905581513381529081019290925280517fb890d5abdcd5c2b61ce8bbc2cf6af9b6d7f7451830cbc85037cbdd182c86fe1d9281900390910190a150565b6001600160a01b03811660009081526003602052604090205460ff166110415760405162461bcd60e51b81526004018080602001828103825260248152602001806113056024913960400191505060405180910390fd5b6001600160a01b038116600081815260036020908152604091829020805460ff191690556004805460001901905581513381529081019290925280517fb6a283aaede08e15ef55c74e3014e30eb0c0040d4b156cccb77391268ea373949281900390910190a150565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610e3d908490611109826001600160a01b03166112b5565b61115a576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111985780518252601f199092019160209182019101611179565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146111fa576040519150601f19603f3d011682016040523d82523d6000602084013e6111ff565b606091505b509150915081611256576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156112af5780806020019051602081101561127257600080fd5b50516112af5760405162461bcd60e51b815260040180806020018281038252602a815260200180611370602a913960400191505060405180910390fd5b50505050565b3b15159056fe70726f7669646564206163636f756e7420697320616c726561647920746865206f776e657270726f7669646564206163636f756e7420697320616c726561647920616e2061646d696e70726f7669646564206163636f756e74206973206e6f74206120636f6e74726f6c6c65726f776e65722063616e6e6f742062652073657420746f207a65726f206164647265737370726f7669646564206163636f756e7420697320746865207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f74207375636365656470726f7669646564206163636f756e7420697320616c7265616479206120636f6e74726f6c6c6572a265627a7a7231582071ba481db2e6cc4ae1937dd74eda6210cd553893bdf3aaacfdc1290cf46b853264736f6c63430005110032" // DeployController deploys a new Ethereum contract, binding an instance of Controller to it. func DeployController(auth *bind.TransactOpts, backend bind.ContractBackend, _ownerAddress_ common.Address) (common.Address, *types.Transaction, *Controller, error) { diff --git a/pkg/bindings/holder.go b/pkg/bindings/holder.go index 39270301..bbf199ad 100644 --- a/pkg/bindings/holder.go +++ b/pkg/bindings/holder.go @@ -31,7 +31,7 @@ var ( const HolderABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_burnerContract_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"CashAndBurned\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"burner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_nonRedeemableAddresses\",\"type\":\"address[]\"}],\"name\":\"nonRedeemableTokenClaim\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" // HolderBin is the compiled bytecode used for deploying new contracts. -var HolderBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b50604051610f87380380610f878339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091818180156100975760018190555b506002555050600380546001600160a01b0319166001600160a01b03939093169290921790915550610eb9806100ce6000396000f3fe6080604052600436106100555760003560e01c806327810b6e1461009157806340f6a70f146100c25780637d73b23114610163578063877337b0146101785780639dc29fac1461019f578063e2b4ce97146101d8575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b34801561009d57600080fd5b506100a66101ed565b604080516001600160a01b039092168252519081900360200190f35b3480156100ce57600080fd5b5061014f600480360360408110156100e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184602083028401116401000000008311171561014457600080fd5b5090925090506101fc565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506100a661039f565b34801561018457600080fd5b5061018d6103ae565b60408051918252519081900360200190f35b3480156101ab57600080fd5b5061014f600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356103b4565b3480156101e457600080fd5b5061018d6105b3565b6003546001600160a01b031690565b6000610207336105b9565b610251576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103945761028084848381811061026b57fe5b905060200201356001600160a01b031661064d565b156102d2576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006102f9308686858181106102e457fe5b905060200201356001600160a01b0316610666565b9050801561038b576103278686868581811061031157fe5b905060200201356001600160a01b031683610711565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035557fe5b604080516001600160a01b0395861681526020928302949094013594909416908301525080820184905290519081900360600190a15b50600101610254565b506001949350505050565b6000546001600160a01b031690565b60025490565b6003546000906001600160a01b031633146104005760405162461bcd60e51b8152600401808060200182810382526021815260200180610e646021913960400191505060405180910390fd5b8161040d575060016105ad565b600061049983600360009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50519063ffffffff61077a16565b905060606104a56107db565b905060005b81518110156105a55760006104d2308484815181106104c557fe5b6020026020010151610666565b9050801561059c5760006104fc856104f0848a63ffffffff6108ee16565b9063ffffffff61094716565b905061051c8885858151811061050e57fe5b602002602001015183610711565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061054a57fe5b60200260200101518360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104aa565b506001925050505b92915050565b60015490565b60006105c66001546109b1565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061b57600080fd5b505afa15801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b505192915050565b60008061065983610a73565b5098975050505050505050565b60006001600160a01b0382161561070057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b505190506105ad565b506001600160a01b038216316105ad565b6001600160a01b03821661075b576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610755573d6000803e3d6000fd5b50610775565b6107756001600160a01b038316848363ffffffff610c0716565b505050565b6000828201838110156107d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60606107e86002546109b1565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561085d57600080fd5b810190808051604051939291908464010000000082111561087d57600080fd5b90830190602082018581111561089257600080fd5b82518660208202830111640100000000821117156108af57600080fd5b82525081516020918201928201910280838360005b838110156108dc5781810151838201526020016108c4565b50505050905001604052505050905090565b6000826108fd575060006105ad565b8282028284828161090a57fe5b04146107d45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e196021913960400191505060405180910390fd5b600080821161099d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816109a857fe5b04949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109fe57600080fd5b505afa158015610a12573d6000803e3d6000fd5b505050506040513d6020811015610a2857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561061b57600080fd5b6060600080600080600080610a896002546109b1565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610b1b57600080fd5b8101908080516040519392919084640100000000821115610b3b57600080fd5b908301906020820185811115610b5057600080fd5b8251640100000000811182820188101715610b6a57600080fd5b82525081516020918201929091019080838360005b83811015610b97578181015183820152602001610b7f565b50505050905090810190601f168015610bc45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610775908490610c66826001600160a01b0316610e12565b610cb7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610cf55780518252601f199092019160209182019101610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d57576040519150601f19603f3d011682016040523d82523d6000602084013e610d5c565b606091505b509150915081610db3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e0c57808060200190516020811015610dcf57600080fd5b5051610e0c5760405162461bcd60e51b815260040180806020018281038252602a815260200180610e3a602a913960400191505060405180910390fd5b50505050565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a265627a7a72315820dd6a7e5f2e0a9c99b10d328f8a1f447504d4acb4d01ded19d142a263e413fade64736f6c63430005110032" +var HolderBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b50604051610f87380380610f878339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091818180156100975760018190555b506002555050600380546001600160a01b0319166001600160a01b03939093169290921790915550610eb9806100ce6000396000f3fe6080604052600436106100555760003560e01c806327810b6e1461009157806340f6a70f146100c25780637d73b23114610163578063877337b0146101785780639dc29fac1461019f578063e2b4ce97146101d8575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b34801561009d57600080fd5b506100a66101ed565b604080516001600160a01b039092168252519081900360200190f35b3480156100ce57600080fd5b5061014f600480360360408110156100e557600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561011057600080fd5b82018360208201111561012257600080fd5b8035906020019184602083028401116401000000008311171561014457600080fd5b5090925090506101fc565b604080519115158252519081900360200190f35b34801561016f57600080fd5b506100a661039f565b34801561018457600080fd5b5061018d6103ae565b60408051918252519081900360200190f35b3480156101ab57600080fd5b5061014f600480360360408110156101c257600080fd5b506001600160a01b0381351690602001356103b4565b3480156101e457600080fd5b5061018d6105b3565b6003546001600160a01b031690565b6000610207336105b9565b610251576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b828110156103945761028084848381811061026b57fe5b905060200201356001600160a01b031661064d565b156102d2576040805162461bcd60e51b815260206004820152601d60248201527f72656465656d61626c65732063616e6e6f7420626520636c61696d6564000000604482015290519081900360640190fd5b60006102f9308686858181106102e457fe5b905060200201356001600160a01b0316610666565b9050801561038b576103278686868581811061031157fe5b905060200201356001600160a01b031683610711565b7ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926838686868581811061035557fe5b604080516001600160a01b0395861681526020928302949094013594909416908301525080820184905290519081900360600190a15b50600101610254565b506001949350505050565b6000546001600160a01b031690565b60025490565b6003546000906001600160a01b031633146104005760405162461bcd60e51b8152600401808060200182810382526021815260200180610e646021913960400191505060405180910390fd5b8161040d575060016105ad565b600061049983600360009054906101000a90046001600160a01b03166001600160a01b031663771282f66040518163ffffffff1660e01b815260040160206040518083038186803b15801561046157600080fd5b505afa158015610475573d6000803e3d6000fd5b505050506040513d602081101561048b57600080fd5b50519063ffffffff61077a16565b905060606104a56107db565b905060005b81518110156105a55760006104d2308484815181106104c557fe5b6020026020010151610666565b9050801561059c5760006104fc856104f0848a63ffffffff6108ee16565b9063ffffffff61094716565b905061051c8885858151811061050e57fe5b602002602001015183610711565b7f43e074e3351faae8657cc314cf10440a8e7a87ce5092ee4bf9baf56f73fe6c568885858151811061054a57fe5b60200260200101518360405180846001600160a01b03166001600160a01b03168152602001836001600160a01b03166001600160a01b03168152602001828152602001935050505060405180910390a1505b506001016104aa565b506001925050505b92915050565b60015490565b60006105c66001546109b1565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561061b57600080fd5b505afa15801561062f573d6000803e3d6000fd5b505050506040513d602081101561064557600080fd5b505192915050565b60008061065983610a73565b5098975050505050505050565b60006001600160a01b0382161561070057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156106cd57600080fd5b505afa1580156106e1573d6000803e3d6000fd5b505050506040513d60208110156106f757600080fd5b505190506105ad565b506001600160a01b038216316105ad565b6001600160a01b03821661075b576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015610755573d6000803e3d6000fd5b50610775565b6107756001600160a01b038316848363ffffffff610c0716565b505050565b6000828201838110156107d4576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b60606107e86002546109b1565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561082057600080fd5b505afa158015610834573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561085d57600080fd5b810190808051604051939291908464010000000082111561087d57600080fd5b90830190602082018581111561089257600080fd5b82518660208202830111640100000000821117156108af57600080fd5b82525081516020918201928201910280838360005b838110156108dc5781810151838201526020016108c4565b50505050905001604052505050905090565b6000826108fd575060006105ad565b8282028284828161090a57fe5b04146107d45760405162461bcd60e51b8152600401808060200182810382526021815260200180610e196021913960400191505060405180910390fd5b600080821161099d576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b60008284816109a857fe5b04949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156109fe57600080fd5b505afa158015610a12573d6000803e3d6000fd5b505050506040513d6020811015610a2857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561061b57600080fd5b6060600080600080600080610a896002546109b1565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610ade57600080fd5b505afa158015610af2573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610b1b57600080fd5b8101908080516040519392919084640100000000821115610b3b57600080fd5b908301906020820185811115610b5057600080fd5b8251640100000000811182820188101715610b6a57600080fd5b82525081516020918201929091019080838360005b83811015610b97578181015183820152602001610b7f565b50505050905090810190601f168015610bc45780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b179052610775908490610c66826001600160a01b0316610e12565b610cb7576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310610cf55780518252601f199092019160209182019101610cd6565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114610d57576040519150601f19603f3d011682016040523d82523d6000602084013e610d5c565b606091505b509150915081610db3576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610e0c57808060200190516020811015610dcf57600080fd5b5051610e0c5760405162461bcd60e51b815260040180806020018281038252602a815260200180610e3a602a913960400191505060405180910390fd5b50505050565b3b15159056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646275726e657220636f6e7472616374206973206e6f74207468652073656e646572a265627a7a72315820fb5b72f720dd23afc2fab42dd0a74ea84409296144790e2f0005efbe1b0dae4564736f6c63430005110032" // DeployHolder deploys a new Ethereum contract, binding an instance of Holder to it. func DeployHolder(auth *bind.TransactOpts, backend bind.ContractBackend, _burnerContract_ common.Address, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Holder, error) { diff --git a/pkg/bindings/licence.go b/pkg/bindings/licence.go index 6d98672f..e8069e15 100644 --- a/pkg/bindings/licence.go +++ b/pkg/bindings/licence.go @@ -31,7 +31,7 @@ var ( const LicenceABI = "[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_licence_\",\"type\":\"uint256\"},{\"internalType\":\"addresspayable\",\"name\":\"_float_\",\"type\":\"address\"},{\"internalType\":\"addresspayable\",\"name\":\"_holder_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tknAddress_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TransferredToCryptoFloat\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"TransferredToTokenHolder\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newFloat\",\"type\":\"address\"}],\"name\":\"UpdatedCryptoFloat\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_newAmount\",\"type\":\"uint256\"}],\"name\":\"UpdatedLicenceAmount\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newDAO\",\"type\":\"address\"}],\"name\":\"UpdatedLicenceDAO\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newTKN\",\"type\":\"address\"}],\"name\":\"UpdatedTKNContractAddress\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"UpdatedTokenHolder\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"MAX_AMOUNT_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"MIN_AMOUNT_SCALE\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cryptoFloat\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"floatLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"holderLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"licenceAmountScaled\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"licenceDAO\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"licenceDAOLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"load\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockFloat\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockHolder\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockLicenceDAO\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"lockTKNContractAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tknContractAddress\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tknContractAddressLocked\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenHolder\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_newFloat\",\"type\":\"address\"}],\"name\":\"updateFloat\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_newHolder\",\"type\":\"address\"}],\"name\":\"updateHolder\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_newAmount\",\"type\":\"uint256\"}],\"name\":\"updateLicenceAmount\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newDAO\",\"type\":\"address\"}],\"name\":\"updateLicenceDAO\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_newTKN\",\"type\":\"address\"}],\"name\":\"updateTKNContractAddress\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // LicenceBin is the compiled bytecode used for deploying new contracts. -var LicenceBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582050496905a9f54db5a4c255992a74fb4270e0945b3bb837565a86786458eb137064736f6c63430005110032" +var LicenceBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d5893697600155600280546001600160a01b03191673aaaf91d9b90df800df4f55c205fd6989c977e73a17905534801561005a57600080fd5b5060405161159b38038061159b833981810160405260c081101561007d57600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03881617905593949293919290918080156100ca5760018190555b50856001111580156100de57506103e88611155b61012f576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b6006869055600380546001600160a01b038088166001600160a01b03199283161790925560048054878416921691909117905583161561018557600280546001600160a01b0319166001600160a01b0385161790555b5050505050506114018061019a6000396000f3fe60806040526004361061014b5760003560e01c8063996cba68116100b6578063d0cddd671161006f578063d0cddd671461039f578063d1696b16146103d2578063e2b4ce97146103e7578063e30c5fa8146103fc578063e3d8024214610411578063f15ff455146104445761014b565b8063996cba68146102f357806399a5e1d014610336578063a036ba601461034b578063ac904c6314610360578063ca0e2e2014610375578063d08b4ecc1461038a5761014b565b806342719faa1161010857806342719faa1461022e5780634ac22b3c1461026157806368ce74e7146102765780637d73b231146102a0578063837c70ef146102b5578063940b9c3b146102de5761014b565b80630bf25c911461014d5780630d42e82f146101625780631b3c96b4146101955780633a7afe02146101c15780633acec15f146101f2578063420a83e714610219575b005b34801561015957600080fd5b5061014b610459565b34801561016e57600080fd5b5061014b6004803603602081101561018557600080fd5b50356001600160a01b03166104b6565b61014b600480360360408110156101ab57600080fd5b506001600160a01b03813516906020013561059c565b3480156101cd57600080fd5b506101d66107ec565b604080516001600160a01b039092168252519081900360200190f35b3480156101fe57600080fd5b506102076107fb565b60408051918252519081900360200190f35b34801561022557600080fd5b506101d6610800565b34801561023a57600080fd5b5061014b6004803603602081101561025157600080fd5b50356001600160a01b031661080f565b34801561026d57600080fd5b5061014b610905565b34801561028257600080fd5b5061014b6004803603602081101561029957600080fd5b5035610962565b3480156102ac57600080fd5b506101d6610a60565b3480156102c157600080fd5b506102ca610a6f565b604080519115158252519081900360200190f35b3480156102ea57600080fd5b506102ca610a7f565b3480156102ff57600080fd5b5061014b6004803603606081101561031657600080fd5b506001600160a01b03813581169160208101359091169060400135610a8f565b34801561034257600080fd5b506101d6610b31565b34801561035757600080fd5b506101d6610b40565b34801561036c57600080fd5b50610207610b4f565b34801561038157600080fd5b50610207610b55565b34801561039657600080fd5b5061014b610b5b565b3480156103ab57600080fd5b5061014b600480360360208110156103c257600080fd5b50356001600160a01b0316610bb8565b3480156103de57600080fd5b5061014b610ca0565b3480156103f357600080fd5b50610207610cfd565b34801561040857600080fd5b506102ca610d03565b34801561041d57600080fd5b5061014b6004803603602081101561043457600080fd5b50356001600160a01b0316610d13565b34801561045057600080fd5b506102ca610df9565b61046233610e09565b6104a1576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b81b1916600160b81b179055565b6104bf33610e09565b6104fe576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610506610a6f565b15610548576040805162461bcd60e51b815260206004820152600d60248201526c1512d3881a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600280546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f2aeed92123e61fe64748a447c2ba122c4bfc0201d1ed5149e9ce9ede5adda5459181900360200190a150565b60025481906001600160a01b03848116911614156105db576003546105d6906001600160a01b03858116913391168463ffffffff610e9d16565b610794565b6106066103e8600654016105fa6103e885610efd90919063ffffffff16565b9063ffffffff610f5f16565b9050600061061a838363ffffffff610fc916565b90506001600160a01b038416156106745760045461064d906001600160a01b03868116913391168463ffffffff610e9d16565b60035461066f906001600160a01b03868116913391168563ffffffff610e9d16565b61073f565b8234146106c8576040805162461bcd60e51b815260206004820152601f60248201527f4554482073656e74206973206e6f7420657175616c20746f20616d6f756e7400604482015290519081900360640190fd5b6004546040516001600160a01b039091169082156108fc029083906000818181858888f19350505050158015610702573d6000803e3d6000fd5b506003546040516001600160a01b039091169083156108fc029084906000818181858888f1935050505015801561073d573d6000803e3d6000fd5b505b600454604080513381526001600160a01b0392831660208201529186168282015260608201839052517fdd9dfad7b30d6b224e235f89565871419d3dec3b563a4e231f12d2cc97f9acfc9181900360800190a1505b600354604080513381526001600160a01b0392831660208201529185168282015260608201839052517fc8a7b0bd71097b47b2cad75e4e939d2aeb7fae88110e68f93b83fed08e9d3c389181900360800190a1505050565b6005546001600160a01b031690565b600181565b6004546001600160a01b031690565b61081833610e09565b610857576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b61085f610df9565b156108b1576040805162461bcd60e51b815260206004820152601960248201527f686f6c64657220636f6e7472616374206973206c6f636b656400000000000000604482015290519081900360640190fd5b600480546001600160a01b0383166001600160a01b0319909116811790915560408051918252517ffa6bae0f250db86534a013b1c7a6c4076aa8f8d1ac248771a1c73f4ba366922a9181900360200190a150565b61090e33610e09565b61094d576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60b01b1916600160b01b179055565b6005546001600160a01b031633146109c1576040805162461bcd60e51b815260206004820152601860248201527f7468652073656e6465722069736e2774207468652044414f0000000000000000604482015290519081900360640190fd5b806001111580156109d457506103e88111155b610a25576040805162461bcd60e51b815260206004820152601b60248201527f6c6963656e636520616d6f756e74206f7574206f662072616e67650000000000604482015290519081900360640190fd5b60068190556040805182815290517f587b6068be8c555e2cddc6ad8a56df5e8dfb1533cc063d6703f79c791de151489181900360200190a150565b6000546001600160a01b031690565b600554600160b81b900460ff1690565b600554600160a01b900460ff1690565b610a9833610e09565b610ad7576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610ae2838383611026565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6002546001600160a01b031690565b6003546001600160a01b031690565b60065490565b6103e881565b610b6433610e09565b610ba3576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a01b1916600160a01b179055565b610bc133610e09565b610c00576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610c08610a7f565b15610c4c576040805162461bcd60e51b815260206004820152600f60248201526e199b1bd85d081a5cc81b1bd8dad959608a1b604482015290519081900360640190fd5b600380546001600160a01b0383166001600160a01b0319909116811790915560408051918252517f9af2841b0db134bda87280e2a9cababb156f95023c87023d708a677d61b4b6d89181900360200190a150565b610ca933610e09565b610ce8576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b6005805460ff60a81b1916600160a81b179055565b60015490565b600554600160b01b900460ff1690565b610d1c33610e09565b610d5b576040805162461bcd60e51b81526020600482015260166024820152600080516020611362833981519152604482015290519081900360640190fd5b610d63610d03565b15610da5576040805162461bcd60e51b815260206004820152600d60248201526c111053c81a5cc81b1bd8dad959609a1b604482015290519081900360640190fd5b600580546001600160a01b0383166001600160a01b0319909116811790915560408051918252517fd32c17b277c7e87842861153d758814a267634f4308ec2461f88756df7dd70689181900360200190a150565b600554600160a81b900460ff1690565b6000610e1660015461108f565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b158015610e6b57600080fd5b505afa158015610e7f573d6000803e3d6000fd5b505050506040513d6020811015610e9557600080fd5b505192915050565b604080516001600160a01b0385811660248301528416604482015260648082018490528251808303909101815260849091019091526020810180516001600160e01b03166323b872dd60e01b179052610ef7908590611151565b50505050565b600082610f0c57506000610f59565b82820282848281610f1957fe5b0414610f565760405162461bcd60e51b81526004018080602001828103825260218152602001806113826021913960400191505060405180910390fd5b90505b92915050565b6000808211610fb5576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481610fc057fe5b04949350505050565b600082821115611020576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611070576040516001600160a01b0384169082156108fc029083906000818181858888f1935050505015801561106a573d6000803e3d6000fd5b5061108a565b61108a6001600160a01b038316848363ffffffff61130916565b505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156110dc57600080fd5b505afa1580156110f0573d6000803e3d6000fd5b505050506040513d602081101561110657600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610e6b57600080fd5b611163826001600160a01b031661135b565b6111b4576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106111f25780518252601f1990920191602091820191016111d3565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611254576040519150601f19603f3d011682016040523d82523d6000602084013e611259565b606091505b5091509150816112b0576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115610ef7578080602001905160208110156112cc57600080fd5b5051610ef75760405162461bcd60e51b815260040180806020018281038252602a8152602001806113a3602a913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b17905261108a908490611151565b3b15159056fe73656e646572206973206e6f7420616e2061646d696e00000000000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820a4c95de378ef4221abcf43bdc3f091f1d854204fe94d66cfc49cb1927f10316b64736f6c63430005110032" // DeployLicence deploys a new Ethereum contract, binding an instance of Licence to it. func DeployLicence(auth *bind.TransactOpts, backend bind.ContractBackend, _licence_ *big.Int, _float_ common.Address, _holder_ common.Address, _tknAddress_ common.Address, _ens_ common.Address, _controllerNode_ [32]byte) (common.Address, *types.Transaction, *Licence, error) { diff --git a/pkg/bindings/mocks/isValidSignatureExporter.go b/pkg/bindings/mocks/isValidSignatureExporter.go index 641e788e..8a1bd0bb 100644 --- a/pkg/bindings/mocks/isValidSignatureExporter.go +++ b/pkg/bindings/mocks/isValidSignatureExporter.go @@ -31,7 +31,7 @@ var ( const IsValidSignatureExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_wallet\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" // IsValidSignatureExporterBin is the compiled bytecode used for deploying new contracts. -var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102833803806102838339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021e806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea265627a7a72315820399d6a3b7a010f6452fba56016d1d5ab70c4fdaf0c29e43b51c5d6983a85746d64736f6c63430005110032" +var IsValidSignatureExporterBin = "0x608060405234801561001057600080fd5b506040516102833803806102838339818101604052602081101561003357600080fd5b5051600080546001600160a01b039092166001600160a01b031990921691909117905561021e806100656000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806320c13b0b14610030575b600080fd5b6100f26004803603604081101561004657600080fd5b81019060208101813564010000000081111561006157600080fd5b82018360208201111561007357600080fd5b8035906020019184600183028401116401000000008311171561009557600080fd5b9193909290916020810190356401000000008111156100b357600080fd5b8201836020820111156100c557600080fd5b803590602001918460018302840111640100000000831117156100e757600080fd5b50909250905061010f565b604080516001600160e01b03199092168252519081900360200190f35b60008054604080516320c13b0b60e01b815260048101918252604481018790526001600160a01b03909216916320c13b0b9188918891889188919081906024810190606401878780828437600083820152601f01601f191690910184810383528581526020019050858580828437600081840152601f19601f820116905080830192505050965050505050505060206040518083038186803b1580156101b457600080fd5b505afa1580156101c8573d6000803e3d6000fd5b505050506040513d60208110156101de57600080fd5b50519594505050505056fea265627a7a7231582039e4f876e44b1a96a45ddfa82b682c60a8efb354060a8d711722682c146c538564736f6c63430005110032" // DeployIsValidSignatureExporter deploys a new Ethereum contract, binding an instance of IsValidSignatureExporter to it. func DeployIsValidSignatureExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _wallet common.Address) (common.Address, *types.Transaction, *IsValidSignatureExporter, error) { diff --git a/pkg/bindings/mocks/tokenWhitelistableExporter.go b/pkg/bindings/mocks/tokenWhitelistableExporter.go index 84ccaa59..37553b56 100644 --- a/pkg/bindings/mocks/tokenWhitelistableExporter.go +++ b/pkg/bindings/mocks/tokenWhitelistableExporter.go @@ -31,7 +31,7 @@ var ( const TokenWhitelistableExporterABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistName_\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":true,\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getERC20RecipientAndAmount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getStablecoinInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"isTokenAvailable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"isTokenLoadable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"isTokenRedeemable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"redeemableTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_updateDate\",\"type\":\"uint256\"}],\"name\":\"updateTokenRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // TokenWhitelistableExporterBin is the compiled bytecode used for deploying new contracts. -var TokenWhitelistableExporterBin = "0x608060405234801561001057600080fd5b50604051610c5b380380610c5b8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03909316929092178255600155610bed90819061006e90396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023e5780637d73b23114610246578063877337b01461026a578063afc72e9314610284578063d545782e14610325578063dcc922bc14610359576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b85780633efec5e9146101de578063443dd2a4146101e6575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b0316610390565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101ce57600080fd5b50356001600160a01b03166103bb565b61010e6103c6565b6101ee6103ef565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022a578181015183820152602001610212565b505050509050019250505060405180910390f35b6101ee6103fe565b61024e610408565b604080516001600160a01b039092168252519081900360200190f35b610272610417565b60408051918252519081900360200190f35b6103026004803603604081101561029a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111600160201b831117156102f757600080fd5b50909250905061041d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103576004803603606081101561033b57600080fd5b506001600160a01b03813516906020810135906040013561046c565b005b6100d46004803603602081101561036f57600080fd5b50356001600160a01b031661047c565b600061038a82610487565b92915050565b60606000806000806000806103a4886104a1565b959e949d50929b5090995097509550909350915050565b600061038a82610633565b60606000806000806000806103d961064d565b959d949c50929a50909850965094509092509050565b60606103f96107bc565b905090565b60606103f96108cd565b6000546001600160a01b031690565b60015490565b6000806104608585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091292505050565b91509150935093915050565b610477838383610a1c565b505050565b600061038a82610aab565b600080610493836104a1565b509098975050505050505050565b60606000806000806000806104b7600154610ac4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561054957600080fd5b8101908080516040519392919084600160201b82111561056857600080fd5b90830190602082018581111561057d57600080fd5b8251600160201b81118282018810171561059657600080fd5b82525081516020918201929091019080838360005b838110156105c35781810151838201526020016105ab565b50505050905090810190601f1680156105f05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008061063f836104a1565b509198975050505050505050565b6060600080600080600080610663600154610ac4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106d857600080fd5b8101908080516040519392919084600160201b8211156106f757600080fd5b90830190602082018581111561070c57600080fd5b8251600160201b81118282018810171561072557600080fd5b82525081516020918201929091019080838360005b8381101561075257818101518382015260200161073a565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107c9600154610ac4565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b505afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083e57600080fd5b8101908080516040519392919084600160201b82111561085d57600080fd5b90830190602082018581111561087257600080fd5b82518660208202830111600160201b8211171561088e57600080fd5b82525081516020918201928201910280838360005b838110156108bb5781810151838201526020016108a3565b50505050905001604052505050905090565b60606108da600154610ac4565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b600080610920600154610ac4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561099457818101518382015260200161097c565b50505050905090810190601f1680156109c15780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6040811015610a0857600080fd5b508051602090910151909590945092505050565b610a27600154610ac4565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050505050565b600080610ab7836104a1565b5098975050505050505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b50519291505056fea265627a7a72315820c8a9bb766fbea3e09f289ae209a6d25cc23ef9106d55903a66a3bf5c3a908e3864736f6c63430005110032" +var TokenWhitelistableExporterBin = "0x608060405234801561001057600080fd5b50604051610c5b380380610c5b8339818101604052604081101561003357600080fd5b508051602090910151600080546001600160a01b0319166001600160a01b03909316929092178255600155610bed90819061006e90396000f3fe608060405234801561001057600080fd5b50600436106100a95760003560e01c806344b049bc1161007157806344b049bc1461023e5780637d73b23114610246578063877337b01461026a578063afc72e9314610284578063d545782e14610325578063dcc922bc14610359576100a9565b806317e73794146100ae5780631f69565f146100e85780632ff0fcaa146101b85780633efec5e9146101de578063443dd2a4146101e6575b600080fd5b6100d4600480360360208110156100c457600080fd5b50356001600160a01b031661037f565b604080519115158252519081900360200190f35b61010e600480360360208110156100fe57600080fd5b50356001600160a01b0316610390565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b8381101561017757818101518382015260200161015f565b50505050905090810190601f1680156101a45780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6100d4600480360360208110156101ce57600080fd5b50356001600160a01b03166103bb565b61010e6103c6565b6101ee6103ef565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561022a578181015183820152602001610212565b505050509050019250505060405180910390f35b6101ee6103fe565b61024e610408565b604080516001600160a01b039092168252519081900360200190f35b610272610417565b60408051918252519081900360200190f35b6103026004803603604081101561029a57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156102c457600080fd5b8201836020820111156102d657600080fd5b803590602001918460018302840111600160201b831117156102f757600080fd5b50909250905061041d565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103576004803603606081101561033b57600080fd5b506001600160a01b03813516906020810135906040013561046c565b005b6100d46004803603602081101561036f57600080fd5b50356001600160a01b031661047c565b600061038a82610487565b92915050565b60606000806000806000806103a4886104a1565b959e949d50929b5090995097509550909350915050565b600061038a82610633565b60606000806000806000806103d961064d565b959d949c50929a50909850965094509092509050565b60606103f96107bc565b905090565b60606103f96108cd565b6000546001600160a01b031690565b60015490565b6000806104608585858080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061091292505050565b91509150935093915050565b610477838383610a1c565b505050565b600061038a82610aab565b600080610493836104a1565b509098975050505050505050565b60606000806000806000806104b7600154610ac4565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b15801561050c57600080fd5b505afa158015610520573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561054957600080fd5b8101908080516040519392919084600160201b82111561056857600080fd5b90830190602082018581111561057d57600080fd5b8251600160201b81118282018810171561059657600080fd5b82525081516020918201929091019080838360005b838110156105c35781810151838201526020016105ab565b50505050905090810190601f1680156105f05780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008061063f836104a1565b509198975050505050505050565b6060600080600080600080610663600154610ac4565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b15801561069b57600080fd5b505afa1580156106af573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156106d857600080fd5b8101908080516040519392919084600160201b8211156106f757600080fd5b90830190602082018581111561070c57600080fd5b8251600160201b81118282018810171561072557600080fd5b82525081516020918201929091019080838360005b8381101561075257818101518382015260200161073a565b50505050905090810190601f16801561077f5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b60606107c9600154610ac4565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b505afa158015610815573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052602081101561083e57600080fd5b8101908080516040519392919084600160201b82111561085d57600080fd5b90830190602082018581111561087257600080fd5b82518660208202830111600160201b8211171561088e57600080fd5b82525081516020918201928201910280838360005b838110156108bb5781810151838201526020016108a3565b50505050905001604052505050905090565b60606108da600154610ac4565b6001600160a01b03166344b049bc6040518163ffffffff1660e01b815260040160006040518083038186803b15801561080157600080fd5b600080610920600154610ac4565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561099457818101518382015260200161097c565b50505050905090810190601f1680156109c15780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156109de57600080fd5b505afa1580156109f2573d6000803e3d6000fd5b505050506040513d6040811015610a0857600080fd5b508051602090910151909590945092505050565b610a27600154610ac4565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b158015610a8e57600080fd5b505af1158015610aa2573d6000803e3d6000fd5b50505050505050565b600080610ab7836104a1565b5098975050505050505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015610b1157600080fd5b505afa158015610b25573d6000803e3d6000fd5b505050506040513d6020811015610b3b57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015610b8657600080fd5b505afa158015610b9a573d6000803e3d6000fd5b505050506040513d6020811015610bb057600080fd5b50519291505056fea265627a7a723158208d79ad83799e7c42f88edcf7f17a55faa1c8dc1456368c6cceb02d0dfb3601ce64736f6c63430005110032" // DeployTokenWhitelistableExporter deploys a new Ethereum contract, binding an instance of TokenWhitelistableExporter to it. func DeployTokenWhitelistableExporter(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _tokenWhitelistName_ [32]byte) (common.Address, *types.Transaction, *TokenWhitelistableExporter, error) { diff --git a/pkg/bindings/oracle.go b/pkg/bindings/oracle.go index 6bbccf37..a88b4771 100644 --- a/pkg/bindings/oracle.go +++ b/pkg/bindings/oracle.go @@ -31,7 +31,7 @@ var ( const OracleABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_resolver_\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_reason\",\"type\":\"string\"}],\"name\":\"FailedUpdateRequest\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_queryID\",\"type\":\"bytes32\"}],\"name\":\"RequestedUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"SetCryptoComparePublicKey\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_gasPrice\",\"type\":\"uint256\"}],\"name\":\"SetGasPrice\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_result\",\"type\":\"string\"}],\"name\":\"VerifiedProof\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_queryID\",\"type\":\"bytes32\"},{\"internalType\":\"string\",\"name\":\"_result\",\"type\":\"string\"},{\"internalType\":\"bytes\",\"name\":\"_proof\",\"type\":\"bytes\"}],\"name\":\"__callback\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cryptoCompareAPIPublicKey\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasPrice\",\"type\":\"uint256\"}],\"name\":\"setCustomGasPrice\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_publicKey\",\"type\":\"bytes\"}],\"name\":\"updateCryptoCompareAPIPublicKey\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasLimit\",\"type\":\"uint256\"}],\"name\":\"updateTokenRates\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_gasLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_tokenList\",\"type\":\"address[]\"}],\"name\":\"updateTokenRatesList\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"}]" // OracleBin is the compiled bytecode used for deploying new contracts. -var OracleBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976006553480156200003557600080fd5b506040516200532038038062005320833981810160405260808110156200005b57600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091808280156200009c5760068190555b506007556040805160608101825281815290620052e060208301398051620000cd916008916020909101906200092a565b50600280546001600160a01b0319166001600160a01b038616179055620000f96402540be4006200011b565b62000111600f60fc1b6001600160e01b036200030c16565b50505050620009cc565b6002546001600160a01b031615806200015157506002546200014f906001600160a01b03166001600160e01b036200050216565b155b156200016e576200016c60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001bf57600080fd5b505af1158015620001d4573d6000803e3d6000fd5b505050506040513d6020811015620001eb57600080fd5b50516001546001600160a01b03908116911614620002a257600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200025457600080fd5b505af115801562000269573d6000803e3d6000fd5b505050506040513d60208110156200028057600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b5050505050565b6002546001600160a01b0316158062000342575060025462000340906001600160a01b03166001600160e01b036200050216565b155b156200035f576200035d60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620003b057600080fd5b505af1158015620003c5573d6000803e3d6000fd5b505050506040513d6020811015620003dc57600080fd5b50516001546001600160a01b039081169116146200049357600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200044557600080fd5b505af11580156200045a573d6000803e3d6000fd5b505050506040513d60208110156200047157600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163688dcfd760e01b81527fff000000000000000000000000000000000000000000000000000000000000008416600482015290516001600160a01b039092169163688dcfd79160248082019260009290919082900301818387803b158015620002f057600080fd5b3b90565b60006200051b6001600160e01b036200052116565b92915050565b6000806200054c731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed6001600160e01b036200050216565b1115620005b857600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152620005af906001600160e01b036200091116565b5060016200090e565b6000620005e273c03a2615d5efaf5f49f60b7bb6583eaec212fdf16001600160e01b036200050216565b11156200064657600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152620005af906001600160e01b036200091116565b60006200067073b7a07bcf2ba2f2703b24c0691b5278999c59ac7e6001600160e01b036200050216565b1115620006d157600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152620005af906001600160e01b036200091116565b6000620006fb73146500cfd35b22e4a392fe0adc06de1a1368ed486001600160e01b036200050216565b11156200075e57600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152620005af906001600160e01b036200091116565b60006200078873a2998efd205fb9d4b4963afb70778d6354ad3a416001600160e01b036200050216565b1115620007ea57600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152620005af906001600160e01b036200091116565b600062000814736f485c8bf6fc43ea212e93bbf8ce046c7f1cb4756001600160e01b036200050216565b11156200084a5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016200090e565b6000620008747320e12a1f859b3feae5fb2a0a32c18f5a65555bbf6001600160e01b036200050216565b1115620008aa5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016200090e565b6000620008d47351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa6001600160e01b036200050216565b11156200090a5750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016200090e565b5060005b90565b8051620009269060039060208401906200092a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200096d57805160ff19168380011785556200099d565b828001600101855582156200099d579182015b828111156200099d57825182559160200191906001019062000980565b50620009ab929150620009af565b5090565b6200090e91905b80821115620009ab5760008155600101620009b6565b61490480620009dc6000396000f3fe6080604052600436106100915760003560e01c8063996cba6811610059578063996cba681461032c578063b598f8821461036f578063c2c3d0541461038c578063ca6ad1e414610407578063e2b4ce971461043157610091565b806338bbfa50146100965780633acbe96e146101d55780637d73b2311461025f578063877337b014610290578063937f54a4146102b7575b600080fd5b3480156100a257600080fd5b506101d3600480360360608110156100b957600080fd5b81359190810190604081016020820135600160201b8111156100da57600080fd5b8201836020820111156100ec57600080fd5b803590602001918460018302840111600160201b8311171561010d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561015f57600080fd5b82018360208201111561017157600080fd5b803590602001918460018302840111600160201b8311171561019257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610446945050505050565b005b3480156101e157600080fd5b506101ea61061a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506102746106a8565b604080516001600160a01b039092168252519081900360200190f35b34801561029c57600080fd5b506102a56106b8565b60408051918252519081900360200190f35b6101d3600480360360408110156102cd57600080fd5b81359190810190604081016020820135600160201b8111156102ee57600080fd5b82018360208201111561030057600080fd5b803590602001918460208302840111600160201b8311171561032157600080fd5b5090925090506106be565b34801561033857600080fd5b506101d36004803603606081101561034f57600080fd5b506001600160a01b03813581169160208101359091169060400135610757565b6101d36004803603602081101561038557600080fd5b5035610804565b34801561039857600080fd5b506101d3600480360360208110156103af57600080fd5b810190602081018135600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b509092509050610867565b34801561041357600080fd5b506101d36004803603602081101561042a57600080fd5b5035610935565b34801561043d57600080fd5b506102a56109d3565b61044e6109d9565b6001600160a01b0316336001600160a01b0316146104ac576040805162461bcd60e51b815260206004820152601660248201527573656e646572206973206e6f74206f7261636c697a6560501b604482015290519081900360640190fd5b6000838152600960205260408120546001600160a01b031690806104cf83610bc3565b96505050945050505081610524576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b60088054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260009384936105c5938b938b93909290918301828280156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505086610d55565b909250905081156106105760006105e36105de89611287565b61152a565b60008a815260096020526040902080546001600160a01b031916905590508161060d87838361153d565b50505b5050505050505050565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b505050505081565b6000546001600160a01b03165b90565b60075490565b6106c7336115cc565b610715576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b6107528383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061166092505050565b505050565b61076033611982565b6107aa576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b58383836119e4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61080d336115cc565b61085b576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61086481611a48565b50565b61087033611982565b6108ba576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6108c660088383614675565b506040805133808252602082018381529282018490527fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa929091859185919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b61093e336115cc565b61098c576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61099581611cf9565b604080513381526020810183905281517ffbd406825addb09beef160afc17bb80ba28df4a3533dcd23592b82658a1c5ab4929181900390910190a150565b60065490565b6002546000906001600160a01b03161580610a065750600254610a04906001600160a01b0316611ec2565b155b15610a1757610a156000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b50516001546001600160a01b03908116911614610b4457600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b600160009054906101000a90046001600160a01b03166001600160a01b031663c281d19e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d6020811015610bbc57600080fd5b5051905090565b6060600080600080600080610bd9600754611ed0565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610c6b57600080fd5b8101908080516040519392919084600160201b821115610c8a57600080fd5b908301906020820185811115610c9f57600080fd5b8251600160201b811182820188101715610cb857600080fd5b82525081516020918201929091019080838360005b83811015610ce5578181015183820152602001610ccd565b50505050905090810190601f168015610d125780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610da5576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b604185600181518110610db457fe5b016020015160f81c14610e0e576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180388339019050509050610e408660026041846000611f92565b865190915060609087906044908110610e5557fe5b0160200151875160f89190911c906101009089906043908110610e7457fe5b016020015160f81c020114610ec9576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b6040805160608082526080820190925281602082018180388339019050509050610ef98760456060846000611f92565b9050610f06818388611fe0565b610f4b576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b604080516014808252818301909252606091602082018180388339019050509050610f7c82600b6014846000611f92565b9050600080610f8b83896120a4565b909250905081610fd1576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c8082526060828101909352602082018180388339019050509050611001856034602c846000611f92565b905061100c81612429565b8051906020012060028d6040516020018082805190602001908083835b602083106110485780518252601f199092019160209182019101611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110ab5780518252601f19909201916020918201910161108c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110ea573d6000803e3d6000fd5b5050506040513d60208110156110ff57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014611174576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111d85781810151838201526020016111c0565b50505050905090810190601f1680156112055780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611238578181015183820152602001611220565b50505050905090810190601f1680156112655780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b602083106112be5780518252601f19909201916020918201910161129f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525190506008811180156113065750601c8111155b61134c576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b6040805160078082528183019092526060916020820181803883390190505090506113e3846040516020018082805190602001908083835b602083106113a35780518252601f199092019160209182019101611384565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007846000611f92565b5060408051663d9122aa24111d60c91b81529051908190036007019020815160208301201461144b576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b6114536146f3565b61145c85612a46565b9050611490611483604051806040016040528060018152602001601d60f91b815250612a46565b829063ffffffff612a6b16565b50806000015192506114ca6114bd604051806040016040528060018152602001607d60f81b815250612a46565b829063ffffffff612a8516565b508051600019840114611516576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b61151f81612ae3565b93505050505b919050565b6000611537826012612b33565b92915050565b611548600754611ed0565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b50505050505050565b60006115d9600654611ed0565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b505192915050565b80516116ac576040805160208082526010908201526f195b5c1d1e481d1bdad95b881b1a5cdd60821b8183015290516000805160206148658339815191529181900360600190a161197e565b4781516116d36040518060400160405280600381526020016215549360ea1b8152506133e4565b0211156117245760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b61172c6146f3565b61174d60405180606001604052806032815260200161479660329139612a46565b90506117576146f3565b61178c60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a57606060006117ba8684815181106117ad57fe5b6020026020010151610bc3565b5050509350505091508061180f576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b6118176146f3565b61182083612a46565b905060006118746040518060400160405280600381526020016215549360ea1b81525061186e8861186261185d878d61360f90919063ffffffff16565b612a46565b9063ffffffff61360f16565b8b613683565b905087858151811061188257fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe6118eb83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050600190920191506117919050565b5050505b5050565b600061198f600654611ed0565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b6001600160a01b038216611a2e576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50610752565b6107526001600160a01b038316848363ffffffff613a5016565b6060611a52613aa2565b9050805160001415611a9d57604080516020808252600990820152686e6f20746f6b656e7360b81b8183015290516000805160206148658339815191529181900360600190a161197e565b478151611ac46040518060400160405280600381526020016215549360ea1b8152506133e4565b021115611b155760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b611b1d6146f3565b611b3e60405180606001604052806032815260200161479660329139612a46565b9050611b486146f3565b611b7d60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a576060611b9c8583815181106117ad57fe5b5050505050509050611bac6146f3565b611bb582612a46565b90506000611bf86040518060400160405280600381526020016215549360ea1b815250611bf28761186261185d878c61360f90919063ffffffff16565b8a613683565b9050868481518110611c0657fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe611c6f83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611cb3578181015183820152602001611c9b565b50505050905090810190601f168015611ce05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050600101611b82565b6002546001600160a01b03161580611d235750600254611d21906001600160a01b0316611ec2565b155b15611d3457611d326000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50516001546001600160a01b03908116911614611e6157600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015611eae57600080fd5b505af115801561197a573d6000803e3d6000fd5b3b90565b6000611537613bb3565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d6020811015611f4757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561162e57600080fd5b6060600082850190508084511015611fa957600080fd5b60208087019084015b868860200101821015611fd357888201518682015260209182019101611fb2565b5093979650505050505050565b60008060006120766002876040518082805190602001908083835b6020831061201a5780518252601f199092019160209182019101611ffb565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612059573d6000803e3d6000fd5b5050506040513d602081101561206e57600080fd5b505186613f07565b925090508080156120985750835160208501206001600160a01b038381169116145b925050505b9392505050565b600080836040516020018082805190602001908083835b602083106120da5780518252601f1990920191602091820191016120bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461211857fe5b6121206146f3565b61212985612a46565b90506121336146f3565b612155604051806040016040528060018152602001601d60f91b815250612a46565b905061215f6146f3565b612181604051806040016040528060018152602001600160fd1b815250612a46565b905060006121a56121a061219b868563ffffffff612a6b16565b612ae3565b613f91565b90506000811180156121b75750602081105b6121f4576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061221161220c61219b878663ffffffff612a6b16565b613f9e565b60ff1690506000811180156122265750600d81105b612265576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b600061227d6121a061219b888763ffffffff612a6b16565b90506107e1811180156122915750610bb881105b6122cf576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b60006122e76121a061219b898963ffffffff612a6b16565b90506019811061232b576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b60006123436121a061219b8a8a63ffffffff612a6b16565b9050603c8110612389576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006123a16121a061219b8b8b63ffffffff612a6b16565b9050603c81106123e7576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b60008183606402856127100289620f424002896305f5e10002896402540be40002010101010190508c8111819b509b50505050505050505050505b9250929050565b60606000806000806000865190506060816040519080825280601f01601f191660200182016040528015612464576020820181803883390190505b50905060008083118015612479575060048306155b6124ca576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b60408051603d60f81b8152905190819003600101902089518a9060011986019081106124f257fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156125345760028303925061259a565b60408051603d60f81b8152905190819003600101902089518a90600019860190811061255c57fe5b01602090810151604080516001600160f81b03199092168284015280518083036001018152602190920190528051910120141561259a576001830392505b600319831660005b818110156127b8576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106125d457fe5b0160200151815160f89190911c9081106125ea57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061262157fe5b0160200151815160f89190911c90811061263757fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061266e57fe5b0160200151815160f89190911c90811061268457fe5b602001015160f81c60f81b96506040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106126bb57fe5b0160200151815160f89190911c9081106126d157fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061271057fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b03191691869190811061275b57fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061279c57fe5b60200101906001600160f81b031916908160001a9053506125a2565b818503600214156128b0576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106127ed57fe5b0160200151815160f89190911c90811061280357fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061283a57fe5b0160200151815160f89190911c90811061285057fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b1684848060010195508151811061289457fe5b60200101906001600160f81b031916908160001a905350612a37565b81850360031415612a37576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106128e557fe5b0160200151815160f89190911c9081106128fb57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061293257fe5b0160200151815160f89190911c90811061294857fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061297f57fe5b0160200151815160f89190911c90811061299557fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c161790921691869181106129d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110612a1f57fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b612a4e6146f3565b506040805180820190915281518152602082810190820152919050565b612a736146f3565b612a7e838383614242565b5092915050565b612a8d6146f3565b815183511015612a9e575081611537565b8151835160208086015190850151910191909103906001908214612acc575082516020840151819020908220145b8015612ada57835185510385525b50929392505050565b60608082600001516040519080825280601f01601f191660200182016040528015612b15576020820181803883390190505b5090506000602082019050612a7e81856020015186600001516142b3565b60008281808080808080808080805b8b51811015613175578b51600360fc1b908d9083908110612b5f57fe5b01602001516001600160f81b03191610801590612b9d57508b51603960f81b908d9083908110612b8b57fe5b01602001516001600160f81b03191611155b8015612ba7575083155b15612c57578415612c0557612bc38a600a63ffffffff6142f116565b9950612bf8603060f81b60f81c8d8381518110612bdc57fe5b01602001518c9160f89190911c0360ff1663ffffffff61434a16565b9950600190970196612c52565b60019550612c1a8b600a63ffffffff6142f116565b9a50612c4f603060f81b60f81c8d8381518110612c3357fe5b01602001518d9160f89190911c0360ff1663ffffffff61434a16565b9a505b61316d565b8b51600360fc1b908d9083908110612c6b57fe5b01602001516001600160f81b03191610801590612ca957508b51603960f81b908d9083908110612c9757fe5b01602001516001600160f81b03191611155b8015612cb25750835b15612d0457612cc889600a63ffffffff6142f116565b9850612cfd603060f81b60f81c8d8381518110612ce157fe5b01602001518b9160f89190911c0360ff1663ffffffff61434a16565b985061316d565b8b51601760f91b908d9083908110612d1857fe5b01602001516001600160f81b0319161415612e1f5785612d77576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415612dca576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315612e16576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b6001945061316d565b8b51602d60f81b908d9083908110612e3357fe5b01602001516001600160f81b0319161415612f29578215612e89576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612ec9576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612f20576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001925061316d565b8b51602b60f81b908d9083908110612f3d57fe5b01602001516001600160f81b0319161415613033578115612f93576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b8215612fd3576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461302a576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001915061316d565b8b51604560f81b908d908390811061304757fe5b01602001516001600160f81b031916148061308257508b51606560f81b908d908390811061307157fe5b01602001516001600160f81b031916145b1561313057856130d1576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315613124576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b6001935080965061316d565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101612b42565b828061317e5750815b156131975786600201811161319257600080fd5b6131ac565b83156131ac578660010181116131ac57600080fd5b821561322d578d891061322357604e8e8a0310613200576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161320e57fe5b049c506115379b505050505050505050505050565b888e039d50613240565b61323d8e8a63ffffffff61434a16565b9d505b878e1061331457604e88106132865760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b61329a8b600a8a900a63ffffffff6142f116565b9a506132ac8b8b63ffffffff61434a16565b9a50604e888f03106132f5576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b61330d888f03600a0a8c6142f190919063ffffffff16565b9a506133d1565b8d88039750604e88106133585760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b87600a0a8a8161336457fe5b049950604e8e106133a65760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b6133bc8e600a0a8c6142f190919063ffffffff16565b9a506133ce8b8b63ffffffff61434a16565b9a505b50989d9c50505050505050505050505050565b6002546000906001600160a01b03161580613411575060025461340f906001600160a01b0316611ec2565b155b15613422576134206000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b505050506040513d602081101561349c57600080fd5b50516001546001600160a01b0390811691161461354f57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d602081101561352d57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460405163524f388960e01b81526020600482018181528551602484015285516001600160a01b039094169363524f388993879383926044909201919085019080838360005b838110156135af578181015183820152602001613597565b50505050905090810190601f1680156135dc5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156135fb57600080fd5b505af1158015611642573d6000803e3d6000fd5b60608082600001518460000151016040519080825280601f01601f191660200182016040528015613647576020820181803883390190505b509050600060208201905061366581866020015187600001516142b3565b84516020850151855161367b92840191906142b3565b509392505050565b6002546000906001600160a01b031615806136b057506002546136ae906001600160a01b0316611ec2565b155b156136c1576136bf6000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561371157600080fd5b505af1158015613725573d6000803e3d6000fd5b505050506040513d602081101561373b57600080fd5b50516001546001600160a01b039081169116146137ee57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050506040513d60208110156137cc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460408051630bbceb3360e21b815260248101859052600481019182528651604482015286516000936001600160a01b031692632ef3accc928992889291829160649091019060208601908083838c5b83811015613858578181015183820152602001613840565b50505050905090810190601f1680156138855780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519050670de0b6b3a76400003a8402018111156138f157506000905061209d565b60015460405163c51be90f60e01b8152600060048201818152606483018790526080602484019081528951608485015289516001600160a01b039095169463c51be90f948794938c938c938c93604481019160a49091019060208801908083838c5b8381101561396b578181015183820152602001613953565b50505050905090810190601f1680156139985780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156139cb5781810151838201526020016139b3565b50505050905090810190601f1680156139f85780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b158015613a1a57600080fd5b505af1158015613a2e573d6000803e3d6000fd5b50505050506040513d6020811015613a4557600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107529084906143a4565b6060613aaf600754611ed0565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2457600080fd5b8101908080516040519392919084600160201b821115613b4357600080fd5b908301906020820185811115613b5857600080fd5b82518660208202830111600160201b82111715613b7457600080fd5b82525081516020918201928201910280838360005b83811015613ba1578181015183820152602001613b89565b50505050905001604052505050905090565b600080613bd3731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611ec2565b1115613c3257600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152613c2a90614562565b5060016106b5565b6000613c5173c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611ec2565b1115613ca957600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152613c2a90614562565b6000613cc873b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611ec2565b1115613d1d57600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152613c2a90614562565b6000613d3c73146500cfd35b22e4a392fe0adc06de1a1368ed48611ec2565b1115613d9357600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152613c2a90614562565b6000613db273a2998efd205fb9d4b4963afb70778d6354ad3a41611ec2565b1115613e0857600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152613c2a90614562565b6000613e27736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611ec2565b1115613e5b5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016106b5565b6000613e7a7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611ec2565b1115613eae5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016106b5565b6000613ecd7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611ec2565b1115613f015750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016106b5565b50600090565b60008060008060008551604114613f28575060009350839250612422915050565b50505060208301516040840151606085015160001a601b811015613f4a57601b015b8060ff16601b14158015613f6257508060ff16601c14155b15613f77575060009350839250612422915050565b613f8387828585614575565b945094505050509250929050565b6000611537826000612b33565b600080826040516020018082805190602001908083835b60208310613fd45780518252601f199092019160209182019101613fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506040518080622530b760e91b8152506003019050604051809103902081141561403e576001915050611525565b60408051622332b160e91b81529051908190036003019020811415614067576002915050611525565b604080516226b0b960e91b81529051908190036003019020811415614090576003915050611525565b604080516220b83960e91b815290519081900360030190208114156140b9576004915050611525565b60408051624d617960e81b815290519081900360030190208114156140e2576005915050611525565b6040805162253ab760e91b8152905190819003600301902081141561410b576006915050611525565b6040805162129d5b60ea1b81529051908190036003019020811415614134576007915050611525565b604080516241756760e81b8152905190819003600301902081141561415d576008915050611525565b604080516205365760ec1b81529051908190036003019020811415614186576009915050611525565b604080516213d8dd60ea1b815290519081900360030190208114156141af57600a915050611525565b60408051622737bb60e91b815290519081900360030190208114156141d857600b915050611525565b604080516244656360e81b8152905190819003600301902081141561420157600c915050611525565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b61424a6146f3565b600061426885600001518660200151866000015187602001516145b2565b6020808701805191860191909152805182038552865190519192500181141561429457600085526142aa565b8351835186519101900385528351810160208601525b50909392505050565b5b602081106142d3578151835260209283019290910190601f19016142b4565b905182516020929092036101000a6000190180199091169116179052565b60008261430057506000611537565b8282028284828161430d57fe5b041461209d5760405162461bcd60e51b81526004018080602001828103825260218152602001806148856021913960400191505060405180910390fd5b60008282018381101561209d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6143b6826001600160a01b031661466f565b614407576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106144455780518252601f199092019160209182019101614426565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146144a7576040519150601f19603f3d011682016040523d82523d6000602084013e6144ac565b606091505b509150915081614503576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561455c5780806020019051602081101561451f57600080fd5b505161455c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806148a6602a913960400191505060405180910390fd5b50505050565b805161197e90600390602084019061470d565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1905190999098509650505050505050565b6000838186851161466057602085116146255783518251600019600860208990030260020a011991821690888a018890039083165b82811461461757818610614605578a8a019650505050505050614667565b506001909401805190949083166145e7565b859650505050505050614667565b508383206000905b858803821161465e578583208181141561464d5783945050505050614667565b50600192830192919091019061462d565b505b5050508284015b949350505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146b65782800160ff198235161785556146e3565b828001600101855582156146e3579182015b828111156146e35782358255916020019190600101906146c8565b506146ef92915061477b565b5090565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061474e57805160ff19168380011785556146e3565b828001600101855582156146e3579182015b828111156146e3578251825591602001919060010190614760565b6106b591905b808211156146ef576000815560010161478156fe68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d6d6f7265207468616e20373720646563696d616c2064696769747320706172736564000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334eb5629fd8501532aeb93b1b6a5b5b2ae398561e56514ed4b4b0c5ac2d381b6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a7231582005735fb57455e42cbac6daa5c4dda576e2a849560601d44e15bd1fe582684e4d64736f6c63430005110032a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca" +var OracleBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976006553480156200003557600080fd5b506040516200532038038062005320833981810160405260808110156200005b57600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b03841617905591929091808280156200009c5760068190555b506007556040805160608101825281815290620052e060208301398051620000cd916008916020909101906200092a565b50600280546001600160a01b0319166001600160a01b038616179055620000f96402540be4006200011b565b62000111600f60fc1b6001600160e01b036200030c16565b50505050620009cc565b6002546001600160a01b031615806200015157506002546200014f906001600160a01b03166001600160e01b036200050216565b155b156200016e576200016c60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620001bf57600080fd5b505af1158015620001d4573d6000803e3d6000fd5b505050506040513d6020811015620001eb57600080fd5b50516001546001600160a01b03908116911614620002a257600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200025457600080fd5b505af115801562000269573d6000803e3d6000fd5b505050506040513d60208110156200028057600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015620002f057600080fd5b505af115801562000305573d6000803e3d6000fd5b5050505050565b6002546001600160a01b0316158062000342575060025462000340906001600160a01b03166001600160e01b036200050216565b155b156200035f576200035d60006001600160e01b036200050616565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015620003b057600080fd5b505af1158015620003c5573d6000803e3d6000fd5b505050506040513d6020811015620003dc57600080fd5b50516001546001600160a01b039081169116146200049357600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156200044557600080fd5b505af11580156200045a573d6000803e3d6000fd5b505050506040513d60208110156200047157600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163688dcfd760e01b81527fff000000000000000000000000000000000000000000000000000000000000008416600482015290516001600160a01b039092169163688dcfd79160248082019260009290919082900301818387803b158015620002f057600080fd5b3b90565b60006200051b6001600160e01b036200052116565b92915050565b6000806200054c731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed6001600160e01b036200050216565b1115620005b857600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152620005af906001600160e01b036200091116565b5060016200090e565b6000620005e273c03a2615d5efaf5f49f60b7bb6583eaec212fdf16001600160e01b036200050216565b11156200064657600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152620005af906001600160e01b036200091116565b60006200067073b7a07bcf2ba2f2703b24c0691b5278999c59ac7e6001600160e01b036200050216565b1115620006d157600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152620005af906001600160e01b036200091116565b6000620006fb73146500cfd35b22e4a392fe0adc06de1a1368ed486001600160e01b036200050216565b11156200075e57600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152620005af906001600160e01b036200091116565b60006200078873a2998efd205fb9d4b4963afb70778d6354ad3a416001600160e01b036200050216565b1115620007ea57600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152620005af906001600160e01b036200091116565b600062000814736f485c8bf6fc43ea212e93bbf8ce046c7f1cb4756001600160e01b036200050216565b11156200084a5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016200090e565b6000620008747320e12a1f859b3feae5fb2a0a32c18f5a65555bbf6001600160e01b036200050216565b1115620008aa5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016200090e565b6000620008d47351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa6001600160e01b036200050216565b11156200090a5750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016200090e565b5060005b90565b8051620009269060039060208401906200092a565b5050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200096d57805160ff19168380011785556200099d565b828001600101855582156200099d579182015b828111156200099d57825182559160200191906001019062000980565b50620009ab929150620009af565b5090565b6200090e91905b80821115620009ab5760008155600101620009b6565b61490480620009dc6000396000f3fe6080604052600436106100915760003560e01c8063996cba6811610059578063996cba681461032c578063b598f8821461036f578063c2c3d0541461038c578063ca6ad1e414610407578063e2b4ce971461043157610091565b806338bbfa50146100965780633acbe96e146101d55780637d73b2311461025f578063877337b014610290578063937f54a4146102b7575b600080fd5b3480156100a257600080fd5b506101d3600480360360608110156100b957600080fd5b81359190810190604081016020820135600160201b8111156100da57600080fd5b8201836020820111156100ec57600080fd5b803590602001918460018302840111600160201b8311171561010d57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561015f57600080fd5b82018360208201111561017157600080fd5b803590602001918460018302840111600160201b8311171561019257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550610446945050505050565b005b3480156101e157600080fd5b506101ea61061a565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022457818101518382015260200161020c565b50505050905090810190601f1680156102515780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561026b57600080fd5b506102746106a8565b604080516001600160a01b039092168252519081900360200190f35b34801561029c57600080fd5b506102a56106b8565b60408051918252519081900360200190f35b6101d3600480360360408110156102cd57600080fd5b81359190810190604081016020820135600160201b8111156102ee57600080fd5b82018360208201111561030057600080fd5b803590602001918460208302840111600160201b8311171561032157600080fd5b5090925090506106be565b34801561033857600080fd5b506101d36004803603606081101561034f57600080fd5b506001600160a01b03813581169160208101359091169060400135610757565b6101d36004803603602081101561038557600080fd5b5035610804565b34801561039857600080fd5b506101d3600480360360208110156103af57600080fd5b810190602081018135600160201b8111156103c957600080fd5b8201836020820111156103db57600080fd5b803590602001918460018302840111600160201b831117156103fc57600080fd5b509092509050610867565b34801561041357600080fd5b506101d36004803603602081101561042a57600080fd5b5035610935565b34801561043d57600080fd5b506102a56109d3565b61044e6109d9565b6001600160a01b0316336001600160a01b0316146104ac576040805162461bcd60e51b815260206004820152601660248201527573656e646572206973206e6f74206f7261636c697a6560501b604482015290519081900360640190fd5b6000838152600960205260408120546001600160a01b031690806104cf83610bc3565b96505050945050505081610524576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b60088054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260009384936105c5938b938b93909290918301828280156105ba5780601f1061058f576101008083540402835291602001916105ba565b820191906000526020600020905b81548152906001019060200180831161059d57829003601f168201915b505050505086610d55565b909250905081156106105760006105e36105de89611287565b61152a565b60008a815260096020526040902080546001600160a01b031916905590508161060d87838361153d565b50505b5050505050505050565b6008805460408051602060026001851615610100026000190190941693909304601f810184900484028201840190925281815292918301828280156106a05780601f10610675576101008083540402835291602001916106a0565b820191906000526020600020905b81548152906001019060200180831161068357829003601f168201915b505050505081565b6000546001600160a01b03165b90565b60075490565b6106c7336115cc565b610715576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b6107528383838080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525061166092505050565b505050565b61076033611982565b6107aa576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6107b58383836119e4565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b61080d336115cc565b61085b576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61086481611a48565b50565b61087033611982565b6108ba576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6108c660088383614675565b506040805133808252602082018381529282018490527fc6b0860ba9f580e9c5b6ba4e0954fe82827096a99d92e8c2d73009539ea8d9fa929091859185919060608201848480828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b61093e336115cc565b61098c576040805162461bcd60e51b815260206004820152601a60248201527939b2b73232b91034b9903737ba10309031b7b73a3937b63632b960311b604482015290519081900360640190fd5b61099581611cf9565b604080513381526020810183905281517ffbd406825addb09beef160afc17bb80ba28df4a3533dcd23592b82658a1c5ab4929181900390910190a150565b60065490565b6002546000906001600160a01b03161580610a065750600254610a04906001600160a01b0316611ec2565b155b15610a1757610a156000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610a6757600080fd5b505af1158015610a7b573d6000803e3d6000fd5b505050506040513d6020811015610a9157600080fd5b50516001546001600160a01b03908116911614610b4457600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015610af857600080fd5b505af1158015610b0c573d6000803e3d6000fd5b505050506040513d6020811015610b2257600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b600160009054906101000a90046001600160a01b03166001600160a01b031663c281d19e6040518163ffffffff1660e01b815260040160206040518083038186803b158015610b9257600080fd5b505afa158015610ba6573d6000803e3d6000fd5b505050506040513d6020811015610bbc57600080fd5b5051905090565b6060600080600080600080610bd9600754611ed0565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015610c2e57600080fd5b505afa158015610c42573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015610c6b57600080fd5b8101908080516040519392919084600160201b821115610c8a57600080fd5b908301906020820185811115610c9f57600080fd5b8251600160201b811182820188101715610cb857600080fd5b82525081516020918201929091019080838360005b83811015610ce5578181015183820152602001610ccd565b50505050905090810190601f168015610d125780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b60008060a5855114610da5576040805162461bcd60e51b81526020600482015260146024820152730d2dcecc2d8d2c840e0e4dedecc40d8cadccee8d60631b604482015290519081900360640190fd5b604185600181518110610db457fe5b016020015160f81c14610e0e576040805162461bcd60e51b815260206004820152601860248201527f696e76616c6964207369676e6174757265206c656e6774680000000000000000604482015290519081900360640190fd5b60408051604180825260808201909252606091602082018180388339019050509050610e408660026041846000611f92565b865190915060609087906044908110610e5557fe5b0160200151875160f89190911c906101009089906043908110610e7457fe5b016020015160f81c020114610ec9576040805162461bcd60e51b81526020600482015260166024820152750d2dcecc2d8d2c840d0cac2c8cae4e640d8cadccee8d60531b604482015290519081900360640190fd5b6040805160608082526080820190925281602082018180388339019050509050610ef98760456060846000611f92565b9050610f06818388611fe0565b610f4b576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b604080516014808252818301909252606091602082018180388339019050509050610f7c82600b6014846000611f92565b9050600080610f8b83896120a4565b909250905081610fd1576040805162461bcd60e51b815260206004820152600c60248201526b696e76616c6964206461746560a01b604482015290519081900360640190fd5b60408051602c8082526060828101909352602082018180388339019050509050611001856034602c846000611f92565b905061100c81612429565b8051906020012060028d6040516020018082805190602001908083835b602083106110485780518252601f199092019160209182019101611029565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040526040518082805190602001908083835b602083106110ab5780518252601f19909201916020918201910161108c565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa1580156110ea573d6000803e3d6000fd5b5050506040513d60208110156110ff57600080fd5b505160408051602081810193909352815180820384018152908201909152805191012014611174576040805162461bcd60e51b815260206004820152601860248201527f726573756c742068617368206e6f74206d61746368696e670000000000000000604482015290519081900360640190fd5b7f0902fdd015aa1e56f7e6026b69c0595e82155dcbd83a83a23b40f9fe96babbd98a8d604051808060200180602001838103835285818151815260200191508051906020019080838360005b838110156111d85781810151838201526020016111c0565b50505050905090810190601f1680156112055780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611238578181015183820152602001611220565b50505050905090810190601f1680156112655780820380516001836020036101000a031916815260200191505b5094505050505060405180910390a15060019b909a5098505050505050505050565b60606000826040516020018082805190602001908083835b602083106112be5780518252601f19909201916020918201910161129f565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525190506008811180156113065750601c8111155b61134c576040805162461bcd60e51b81526020600482015260126024820152711b5a5cd99bdc9b585d1d1959081a5b9c1d5d60721b604482015290519081900360640190fd5b6040805160078082528183019092526060916020820181803883390190505090506113e3846040516020018082805190602001908083835b602083106113a35780518252601f199092019160209182019101611384565b6001836020036101000a03801982511681845116808217855250505050505090500191505060405160208183030381529060405260006007846000611f92565b5060408051663d9122aa24111d60c91b81529051908190036007019020815160208301201461144b576040805162461bcd60e51b815260206004820152600f60248201526e0e0e4caccd2f040dad2e6dac2e8c6d608b1b604482015290519081900360640190fd5b6114536146f3565b61145c85612a46565b9050611490611483604051806040016040528060018152602001601d60f91b815250612a46565b829063ffffffff612a6b16565b50806000015192506114ca6114bd604051806040016040528060018152602001607d60f81b815250612a46565b829063ffffffff612a8516565b508051600019840114611516576040805162461bcd60e51b815260206004820152600f60248201526e1b9bdd081a9cdbdb88199bdc9b585d608a1b604482015290519081900360640190fd5b61151f81612ae3565b93505050505b919050565b6000611537826012612b33565b92915050565b611548600754611ed0565b6001600160a01b031663d545782e8484846040518463ffffffff1660e01b815260040180846001600160a01b03166001600160a01b031681526020018381526020018281526020019350505050600060405180830381600087803b1580156115af57600080fd5b505af11580156115c3573d6000803e3d6000fd5b50505050505050565b60006115d9600654611ed0565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b505afa158015611642573d6000803e3d6000fd5b505050506040513d602081101561165857600080fd5b505192915050565b80516116ac576040805160208082526010908201526f195b5c1d1e481d1bdad95b881b1a5cdd60821b8183015290516000805160206148658339815191529181900360600190a161197e565b4781516116d36040518060400160405280600381526020016215549360ea1b8152506133e4565b0211156117245760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b61172c6146f3565b61174d60405180606001604052806032815260200161479660329139612a46565b90506117576146f3565b61178c60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a57606060006117ba8684815181106117ad57fe5b6020026020010151610bc3565b5050509350505091508061180f576040805162461bcd60e51b8152602060048201526017602482015276746f6b656e206d75737420626520617661696c61626c6560481b604482015290519081900360640190fd5b6118176146f3565b61182083612a46565b905060006118746040518060400160405280600381526020016215549360ea1b81525061186e8861186261185d878d61360f90919063ffffffff16565b612a46565b9063ffffffff61360f16565b8b613683565b905087858151811061188257fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe6118eb83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b8381101561192f578181015183820152602001611917565b50505050905090810190601f16801561195c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a15050600190920191506117919050565b5050505b5050565b600061198f600654611ed0565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561162e57600080fd5b6001600160a01b038216611a2e576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611a28573d6000803e3d6000fd5b50610752565b6107526001600160a01b038316848363ffffffff613a5016565b6060611a52613aa2565b9050805160001415611a9d57604080516020808252600990820152686e6f20746f6b656e7360b81b8183015290516000805160206148658339815191529181900360600190a161197e565b478151611ac46040518060400160405280600381526020016215549360ea1b8152506133e4565b021115611b155760408051602080825260149082015273696e73756666696369656e742062616c616e636560601b8183015290516000805160206148658339815191529181900360600190a161197e565b611b1d6146f3565b611b3e60405180606001604052806032815260200161479660329139612a46565b9050611b486146f3565b611b7d60405180604001604052806014815260200173267473796d733d455448267369676e3d7472756560601b815250612a46565b905060005b835181101561197a576060611b9c8583815181106117ad57fe5b5050505050509050611bac6146f3565b611bb582612a46565b90506000611bf86040518060400160405280600381526020016215549360ea1b815250611bf28761186261185d878c61360f90919063ffffffff16565b8a613683565b9050868481518110611c0657fe5b60200260200101516009600083815260200190815260200160002060006101000a8154816001600160a01b0302191690836001600160a01b031602179055507f47737841f636da1ca9f2de10d9bfb96c4251e0b31de72a902d4fd4ac8797bbbe611c6f83612ae3565b826040518080602001838152602001828103825284818151815260200191508051906020019080838360005b83811015611cb3578181015183820152602001611c9b565b50505050905090810190601f168015611ce05780820380516001836020036101000a031916815260200191505b50935050505060405180910390a1505050600101611b82565b6002546001600160a01b03161580611d235750600254611d21906001600160a01b0316611ec2565b155b15611d3457611d326000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611d8457600080fd5b505af1158015611d98573d6000803e3d6000fd5b505050506040513d6020811015611dae57600080fd5b50516001546001600160a01b03908116911614611e6157600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b158015611e1557600080fd5b505af1158015611e29573d6000803e3d6000fd5b505050506040513d6020811015611e3f57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b6001546040805163329ab47960e21b81526004810184905290516001600160a01b039092169163ca6ad1e49160248082019260009290919082900301818387803b158015611eae57600080fd5b505af115801561197a573d6000803e3d6000fd5b3b90565b6000611537613bb3565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611f1d57600080fd5b505afa158015611f31573d6000803e3d6000fd5b505050506040513d6020811015611f4757600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561162e57600080fd5b6060600082850190508084511015611fa957600080fd5b60208087019084015b868860200101821015611fd357888201518682015260209182019101611fb2565b5093979650505050505050565b60008060006120766002876040518082805190602001908083835b6020831061201a5780518252601f199092019160209182019101611ffb565b51815160209384036101000a60001901801990921691161790526040519190930194509192505080830381855afa158015612059573d6000803e3d6000fd5b5050506040513d602081101561206e57600080fd5b505186613f07565b925090508080156120985750835160208501206001600160a01b038381169116145b925050505b9392505050565b600080836040516020018082805190602001908083835b602083106120da5780518252601f1990920191602091820191016120bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040525160141461211857fe5b6121206146f3565b61212985612a46565b90506121336146f3565b612155604051806040016040528060018152602001601d60f91b815250612a46565b905061215f6146f3565b612181604051806040016040528060018152602001600160fd1b815250612a46565b905060006121a56121a061219b868563ffffffff612a6b16565b612ae3565b613f91565b90506000811180156121b75750602081105b6121f4576040805162461bcd60e51b81526020600482015260096024820152683230bc9032b93937b960b91b604482015290519081900360640190fd5b600061221161220c61219b878663ffffffff612a6b16565b613f9e565b60ff1690506000811180156122265750600d81105b612265576040805162461bcd60e51b815260206004820152600b60248201526a36b7b73a341032b93937b960a91b604482015290519081900360640190fd5b600061227d6121a061219b888763ffffffff612a6b16565b90506107e1811180156122915750610bb881105b6122cf576040805162461bcd60e51b815260206004820152600a6024820152693cb2b0b91032b93937b960b11b604482015290519081900360640190fd5b60006122e76121a061219b898963ffffffff612a6b16565b90506019811061232b576040805162461bcd60e51b815260206004820152600a6024820152693437bab91032b93937b960b11b604482015290519081900360640190fd5b60006123436121a061219b8a8a63ffffffff612a6b16565b9050603c8110612389576040805162461bcd60e51b815260206004820152600c60248201526b36b4b73aba329032b93937b960a11b604482015290519081900360640190fd5b60006123a16121a061219b8b8b63ffffffff612a6b16565b9050603c81106123e7576040805162461bcd60e51b815260206004820152600c60248201526b39b2b1b7b7321032b93937b960a11b604482015290519081900360640190fd5b60008183606402856127100289620f424002896305f5e10002896402540be40002010101010190508c8111819b509b50505050505050505050505b9250929050565b60606000806000806000865190506060816040519080825280601f01601f191660200182016040528015612464576020820181803883390190505b50905060008083118015612479575060048306155b6124ca576040805162461bcd60e51b815260206004820152601760248201527f696e76616c69642062617365363420656e636f64696e67000000000000000000604482015290519081900360640190fd5b60408051603d60f81b8152905190819003600101902089518a9060011986019081106124f257fe5b01602090810151604080516001600160f81b0319909216828401528051808303600101815260219092019052805191012014156125345760028303925061259a565b60408051603d60f81b8152905190819003600101902089518a90600019860190811061255c57fe5b01602090810151604080516001600160f81b03199092168284015280518083036001018152602190920190528051910120141561259a576001830392505b600319831660005b818110156127b8576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106125d457fe5b0160200151815160f89190911c9081106125ea57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061262157fe5b0160200151815160f89190911c90811061263757fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061266e57fe5b0160200151815160f89190911c90811061268457fe5b602001015160f81c60f81b96506040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106126bb57fe5b0160200151815160f89190911c9081106126d157fe5b016020015184516001600160f81b031991821697506001850194603f60fa1b60028d901b1660ff60f41b60048d901c1617909216918691811061271057fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b03191691869190811061275b57fe5b60200101906001600160f81b031916908160001a90535083516001840193600360fe1b60068a901b1688176001600160f81b03191691869190811061279c57fe5b60200101906001600160f81b031916908160001a9053506125a2565b818503600214156128b0576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106127ed57fe5b0160200151815160f89190911c90811061280357fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061283a57fe5b0160200151815160f89190911c90811061285057fe5b602001015160f81c60f81b97506004886001600160f81b031916901c60028a6001600160f81b031916901b1760ff60f81b1684848060010195508151811061289457fe5b60200101906001600160f81b031916908160001a905350612a37565b81850360031415612a37576040518060a00160405280607b81526020016147ea607b91398b5160018301928d9181106128e557fe5b0160200151815160f89190911c9081106128fb57fe5b602001015160f81c60f81b98506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061293257fe5b0160200151815160f89190911c90811061294857fe5b602001015160f81c60f81b97506040518060a00160405280607b81526020016147ea607b91398b5160018301928d91811061297f57fe5b0160200151815160f89190911c90811061299557fe5b016020015184516001600160f81b031991821698506001850194603f60fa1b60028d901b1660ff60f41b60048d901c161790921691869181106129d457fe5b60200101906001600160f81b031916908160001a90535083516001840193600f60fc1b60048b901b1660ff60f61b60028b901c16176001600160f81b031916918691908110612a1f57fe5b60200101906001600160f81b031916908160001a9053505b50508152979650505050505050565b612a4e6146f3565b506040805180820190915281518152602082810190820152919050565b612a736146f3565b612a7e838383614242565b5092915050565b612a8d6146f3565b815183511015612a9e575081611537565b8151835160208086015190850151910191909103906001908214612acc575082516020840151819020908220145b8015612ada57835185510385525b50929392505050565b60608082600001516040519080825280601f01601f191660200182016040528015612b15576020820181803883390190505b5090506000602082019050612a7e81856020015186600001516142b3565b60008281808080808080808080805b8b51811015613175578b51600360fc1b908d9083908110612b5f57fe5b01602001516001600160f81b03191610801590612b9d57508b51603960f81b908d9083908110612b8b57fe5b01602001516001600160f81b03191611155b8015612ba7575083155b15612c57578415612c0557612bc38a600a63ffffffff6142f116565b9950612bf8603060f81b60f81c8d8381518110612bdc57fe5b01602001518c9160f89190911c0360ff1663ffffffff61434a16565b9950600190970196612c52565b60019550612c1a8b600a63ffffffff6142f116565b9a50612c4f603060f81b60f81c8d8381518110612c3357fe5b01602001518d9160f89190911c0360ff1663ffffffff61434a16565b9a505b61316d565b8b51600360fc1b908d9083908110612c6b57fe5b01602001516001600160f81b03191610801590612ca957508b51603960f81b908d9083908110612c9757fe5b01602001516001600160f81b03191611155b8015612cb25750835b15612d0457612cc889600a63ffffffff6142f116565b9850612cfd603060f81b60f81c8d8381518110612ce157fe5b01602001518b9160f89190911c0360ff1663ffffffff61434a16565b985061316d565b8b51601760f91b908d9083908110612d1857fe5b01602001516001600160f81b0319161415612e1f5785612d77576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8415612dca576040805162461bcd60e51b815260206004820152601760248201527f6475706c696361746520646563696d616c20706f696e74000000000000000000604482015290519081900360640190fd5b8315612e16576040805162461bcd60e51b8152602060048201526016602482015275191958da5b585b0818599d195c88195e1c1bdb995b9d60521b604482015290519081900360640190fd5b6001945061316d565b8b51602d60f81b908d9083908110612e3357fe5b01602001516001600160f81b0319161415612f29578215612e89576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202d60a81b604482015290519081900360640190fd5b8115612ec9576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b808760010114612f20576040805162461bcd60e51b815260206004820152601e60248201527f2d207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001925061316d565b8b51602b60f81b908d9083908110612f3d57fe5b01602001516001600160f81b0319161415613033578115612f93576040805162461bcd60e51b815260206004820152600b60248201526a6475706c6963617465202b60a81b604482015290519081900360640190fd5b8215612fd3576040805162461bcd60e51b815260206004820152600a60248201526932bc3a39309039b4b3b760b11b604482015290519081900360640190fd5b80876001011461302a576040805162461bcd60e51b815260206004820152601e60248201527f2b207369676e206e6f7420696d6d6564696174656c7920616674657220650000604482015290519081900360640190fd5b6001915061316d565b8b51604560f81b908d908390811061304757fe5b01602001516001600160f81b031916148061308257508b51606560f81b908d908390811061307157fe5b01602001516001600160f81b031916145b1561313057856130d1576040805162461bcd60e51b81526020600482015260156024820152741b5a5cdcda5b99c81a5b9d1959dc985b081c185c9d605a1b604482015290519081900360640190fd5b8315613124576040805162461bcd60e51b815260206004820152601960248201527f6475706c6963617465206578706f6e656e742073796d626f6c00000000000000604482015290519081900360640190fd5b6001935080965061316d565b6040805162461bcd60e51b815260206004820152600d60248201526c1a5b9d985b1a5908191a59da5d609a1b604482015290519081900360640190fd5b600101612b42565b828061317e5750815b156131975786600201811161319257600080fd5b6131ac565b83156131ac578660010181116131ac57600080fd5b821561322d578d891061322357604e8e8a0310613200576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b8d8903600a0a8b8161320e57fe5b049c506115379b505050505050505050505050565b888e039d50613240565b61323d8e8a63ffffffff61434a16565b9d505b878e1061331457604e88106132865760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b61329a8b600a8a900a63ffffffff6142f116565b9a506132ac8b8b63ffffffff61434a16565b9a50604e888f03106132f5576040805162461bcd60e51b815260206004820152600d60248201526c6578706f6e656e74203e20373760981b604482015290519081900360640190fd5b61330d888f03600a0a8c6142f190919063ffffffff16565b9a506133d1565b8d88039750604e88106133585760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b87600a0a8a8161336457fe5b049950604e8e106133a65760405162461bcd60e51b81526004018080602001828103825260228152602001806147c86022913960400191505060405180910390fd5b6133bc8e600a0a8c6142f190919063ffffffff16565b9a506133ce8b8b63ffffffff61434a16565b9a505b50989d9c50505050505050505050505050565b6002546000906001600160a01b03161580613411575060025461340f906001600160a01b0316611ec2565b155b15613422576134206000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561347257600080fd5b505af1158015613486573d6000803e3d6000fd5b505050506040513d602081101561349c57600080fd5b50516001546001600160a01b0390811691161461354f57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561350357600080fd5b505af1158015613517573d6000803e3d6000fd5b505050506040513d602081101561352d57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460405163524f388960e01b81526020600482018181528551602484015285516001600160a01b039094169363524f388993879383926044909201919085019080838360005b838110156135af578181015183820152602001613597565b50505050905090810190601f1680156135dc5780820380516001836020036101000a031916815260200191505b5092505050602060405180830381600087803b1580156135fb57600080fd5b505af1158015611642573d6000803e3d6000fd5b60608082600001518460000151016040519080825280601f01601f191660200182016040528015613647576020820181803883390190505b509050600060208201905061366581866020015187600001516142b3565b84516020850151855161367b92840191906142b3565b509392505050565b6002546000906001600160a01b031615806136b057506002546136ae906001600160a01b0316611ec2565b155b156136c1576136bf6000611ec6565b505b600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561371157600080fd5b505af1158015613725573d6000803e3d6000fd5b505050506040513d602081101561373b57600080fd5b50516001546001600160a01b039081169116146137ee57600260009054906101000a90046001600160a01b03166001600160a01b03166338cc48316040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156137a257600080fd5b505af11580156137b6573d6000803e3d6000fd5b505050506040513d60208110156137cc57600080fd5b5051600180546001600160a01b0319166001600160a01b039092169190911790555b60015460408051630bbceb3360e21b815260248101859052600481019182528651604482015286516000936001600160a01b031692632ef3accc928992889291829160649091019060208601908083838c5b83811015613858578181015183820152602001613840565b50505050905090810190601f1680156138855780820380516001836020036101000a031916815260200191505b509350505050602060405180830381600087803b1580156138a557600080fd5b505af11580156138b9573d6000803e3d6000fd5b505050506040513d60208110156138cf57600080fd5b50519050670de0b6b3a76400003a8402018111156138f157506000905061209d565b60015460405163c51be90f60e01b8152600060048201818152606483018790526080602484019081528951608485015289516001600160a01b039095169463c51be90f948794938c938c938c93604481019160a49091019060208801908083838c5b8381101561396b578181015183820152602001613953565b50505050905090810190601f1680156139985780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b838110156139cb5781810151838201526020016139b3565b50505050905090810190601f1680156139f85780820380516001836020036101000a031916815260200191505b5096505050505050506020604051808303818588803b158015613a1a57600080fd5b505af1158015613a2e573d6000803e3d6000fd5b50505050506040513d6020811015613a4557600080fd5b505195945050505050565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526107529084906143a4565b6060613aaf600754611ed0565b6001600160a01b031663443dd2a46040518163ffffffff1660e01b815260040160006040518083038186803b158015613ae757600080fd5b505afa158015613afb573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015613b2457600080fd5b8101908080516040519392919084600160201b821115613b4357600080fd5b908301906020820185811115613b5857600080fd5b82518660208202830111600160201b82111715613b7457600080fd5b82525081516020918201928201910280838360005b83811015613ba1578181015183820152602001613b89565b50505050905001604052505050905090565b600080613bd3731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed611ec2565b1115613c3257600280546001600160a01b031916731d3b2638a7cc9f2cb3d298a3da7a90b67e5506ed17905560408051808201909152600b81526a195d1a17db585a5b9b995d60aa1b6020820152613c2a90614562565b5060016106b5565b6000613c5173c03a2615d5efaf5f49f60b7bb6583eaec212fdf1611ec2565b1115613ca957600280546001600160a01b03191673c03a2615d5efaf5f49f60b7bb6583eaec212fdf117905560408051808201909152600c81526b6574685f726f707374656e3360a01b6020820152613c2a90614562565b6000613cc873b7a07bcf2ba2f2703b24c0691b5278999c59ac7e611ec2565b1115613d1d57600280546001600160a01b03191673b7a07bcf2ba2f2703b24c0691b5278999c59ac7e17905560408051808201909152600981526832ba342fb5b7bb30b760b91b6020820152613c2a90614562565b6000613d3c73146500cfd35b22e4a392fe0adc06de1a1368ed48611ec2565b1115613d9357600280546001600160a01b03191673146500cfd35b22e4a392fe0adc06de1a1368ed4817905560408051808201909152600b81526a6574685f72696e6b65627960a81b6020820152613c2a90614562565b6000613db273a2998efd205fb9d4b4963afb70778d6354ad3a41611ec2565b1115613e0857600280546001600160a01b03191673a2998efd205fb9d4b4963afb70778d6354ad3a4117905560408051808201909152600a8152696574685f676f65726c6960b01b6020820152613c2a90614562565b6000613e27736f485c8bf6fc43ea212e93bbf8ce046c7f1cb475611ec2565b1115613e5b5750600280546001600160a01b031916736f485c8bf6fc43ea212e93bbf8ce046c7f1cb47517905560016106b5565b6000613e7a7320e12a1f859b3feae5fb2a0a32c18f5a65555bbf611ec2565b1115613eae5750600280546001600160a01b0319167320e12a1f859b3feae5fb2a0a32c18f5a65555bbf17905560016106b5565b6000613ecd7351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa611ec2565b1115613f015750600280546001600160a01b0319167351efaf4c8b3c9afbd5ab9f4bbc82784ab6ef8faa17905560016106b5565b50600090565b60008060008060008551604114613f28575060009350839250612422915050565b50505060208301516040840151606085015160001a601b811015613f4a57601b015b8060ff16601b14158015613f6257508060ff16601c14155b15613f77575060009350839250612422915050565b613f8387828585614575565b945094505050509250929050565b6000611537826000612b33565b600080826040516020018082805190602001908083835b60208310613fd45780518252601f199092019160209182019101613fb5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090506040518080622530b760e91b8152506003019050604051809103902081141561403e576001915050611525565b60408051622332b160e91b81529051908190036003019020811415614067576002915050611525565b604080516226b0b960e91b81529051908190036003019020811415614090576003915050611525565b604080516220b83960e91b815290519081900360030190208114156140b9576004915050611525565b60408051624d617960e81b815290519081900360030190208114156140e2576005915050611525565b6040805162253ab760e91b8152905190819003600301902081141561410b576006915050611525565b6040805162129d5b60ea1b81529051908190036003019020811415614134576007915050611525565b604080516241756760e81b8152905190819003600301902081141561415d576008915050611525565b604080516205365760ec1b81529051908190036003019020811415614186576009915050611525565b604080516213d8dd60ea1b815290519081900360030190208114156141af57600a915050611525565b60408051622737bb60e91b815290519081900360030190208114156141d857600b915050611525565b604080516244656360e81b8152905190819003600301902081141561420157600c915050611525565b6040805162461bcd60e51b81526020600482015260116024820152700dcdee840c240ecc2d8d2c840dadedce8d607b1b604482015290519081900360640190fd5b61424a6146f3565b600061426885600001518660200151866000015187602001516145b2565b6020808701805191860191909152805182038552865190519192500181141561429457600085526142aa565b8351835186519101900385528351810160208601525b50909392505050565b5b602081106142d3578151835260209283019290910190601f19016142b4565b905182516020929092036101000a6000190180199091169116179052565b60008261430057506000611537565b8282028284828161430d57fe5b041461209d5760405162461bcd60e51b81526004018080602001828103825260218152602001806148856021913960400191505060405180910390fd5b60008282018381101561209d576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6143b6826001600160a01b031661466f565b614407576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b602083106144455780518252601f199092019160209182019101614426565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146144a7576040519150601f19603f3d011682016040523d82523d6000602084013e6144ac565b606091505b509150915081614503576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b80511561455c5780806020019051602081101561451f57600080fd5b505161455c5760405162461bcd60e51b815260040180806020018281038252602a8152602001806148a6602a913960400191505060405180910390fd5b50505050565b805161197e90600390602084019061470d565b60008060008060405188815287602082015286604082015285606082015260208160808360006001610bb8f1905190999098509650505050505050565b6000838186851161466057602085116146255783518251600019600860208990030260020a011991821690888a018890039083165b82811461461757818610614605578a8a019650505050505050614667565b506001909401805190949083166145e7565b859650505050505050614667565b508383206000905b858803821161465e578583208181141561464d5783945050505050614667565b50600192830192919091019061462d565b505b5050508284015b949350505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106146b65782800160ff198235161785556146e3565b828001600101855582156146e3579182015b828111156146e35782358255916020019190600101906146c8565b506146ef92915061477b565b5090565b604051806040016040528060008152602001600081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061474e57805160ff19168380011785556146e3565b828001600101855582156146e3579182015b828111156146e3578251825591602001919060010190614760565b6106b591905b808211156146ef576000815560010161478156fe68747470733a2f2f6d696e2d6170692e63727970746f636f6d706172652e636f6d2f646174612f70726963653f6673796d3d6d6f7265207468616e20373720646563696d616c2064696769747320706172736564000000000000000000000000000000000000000000000000000000000000000000000000000000000000003e003e003f3435363738393a3b3c3d00000000000000000102030405060708090a0b0c0d0e0f10111213141516171819000000003f001a1b1c1d1e1f202122232425262728292a2b2c2d2e2f303132334eb5629fd8501532aeb93b1b6a5b5b2ae398561e56514ed4b4b0c5ac2d381b6e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a723158208486b396d2654ffb4d4b2185efc5120b1ea711758549921ac022c6ac0afa157d64736f6c63430005110032a0f4f688350018ad1b9785991c0bde5f704b005dc79972b114dbed4a615a983710bfc647ebe5a320daa28771dce6a2d104f5efa2e4a85ba3760b76d46f8571ca" // DeployOracle deploys a new Ethereum contract, binding an instance of Oracle to it. func DeployOracle(auth *bind.TransactOpts, backend bind.ContractBackend, _resolver_ common.Address, _ens_ common.Address, _controllerNode_ [32]byte, _tokenWhitelistNode_ [32]byte) (common.Address, *types.Transaction, *Oracle, error) { diff --git a/pkg/bindings/tokenWhitelist.go b/pkg/bindings/tokenWhitelist.go index 1d6e402c..558bed6c 100644 --- a/pkg/bindings/tokenWhitelist.go +++ b/pkg/bindings/tokenWhitelist.go @@ -31,7 +31,7 @@ var ( const TokenWhitelistABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_oracleNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"address\",\"name\":\"_stablecoinAddress_\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"AddedExclusiveMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"AddedMethodId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"string\",\"name\":\"_symbol\",\"type\":\"string\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_magnitude\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"AddedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Claimed\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"RemovedExclusiveMethod\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"RemovedMethodId\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"}],\"name\":\"RemovedToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"}],\"name\":\"UpdatedTokenLoadable\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"}],\"name\":\"UpdatedTokenRate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"UpdatedTokenRedeemable\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"},{\"internalType\":\"bytes32[]\",\"name\":\"_symbols\",\"type\":\"bytes32[]\"},{\"internalType\":\"uint256[]\",\"name\":\"_magnitude\",\"type\":\"uint256[]\"},{\"internalType\":\"bool[]\",\"name\":\"_loadable\",\"type\":\"bool[]\"},{\"internalType\":\"bool[]\",\"name\":\"_redeemable\",\"type\":\"bool[]\"},{\"internalType\":\"uint256\",\"name\":\"_lastUpdate\",\"type\":\"uint256\"}],\"name\":\"addTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"claim\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"getERC20RecipientAndAmount\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"getStablecoinInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_a\",\"type\":\"address\"}],\"name\":\"getTokenInfo\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"isERC20MethodSupported\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_methodId\",\"type\":\"bytes4\"}],\"name\":\"isERC20MethodWhitelisted\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"oracleNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"redeemableCounter\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"redeemableTokens\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_tokens\",\"type\":\"address[]\"}],\"name\":\"removeTokens\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_loadable\",\"type\":\"bool\"}],\"name\":\"setTokenLoadable\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_redeemable\",\"type\":\"bool\"}],\"name\":\"setTokenRedeemable\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"stablecoin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenAddressArray\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rate\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_updateDate\",\"type\":\"uint256\"}],\"name\":\"updateTokenRate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}]" // TokenWhitelistBin is the compiled bytecode used for deploying new contracts. -var TokenWhitelistBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820811b2b5310692054fa27038e4d0917ed28cbffc7e3e010367aa83440f9e7ccf464736f6c63430005110032" +var TokenWhitelistBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d589369760015534801561003457600080fd5b506040516123a23803806123a28339818101604052608081101561005757600080fd5b50805160208201516040830151606090930151600080546001600160a01b0319166001600160a01b038516179055919290918180156100965760018190555b5060079290925550600680546001600160a01b039092166001600160a01b03199092169190911790555060036020527fcdb433fee9fcb0c66fb3017cd7ac58de1aaf0f6312cb21f38875538e20afd62b805460ff1990811660019081179092557fe807f63c4c8c5262d3389f70cc5810be9d2b6ff67ec0f02f24406aa89b2d508e80548216831790557f55fb275ebfd19bd09696346ba9fee327c970084fe514a163b9376f5a6c99b86380548216831790556323b872dd60e01b6000527feb1525fd03aeae976171a87d04a6b7cfac27c30b47b207519998e7ec6c02c8ec805490911690911790556122158061018d6000396000f3fe608060405234801561001057600080fd5b50600436106101165760003560e01c80636c3824ef116100a2578063996cba6811610071578063996cba6814610584578063afc72e93146105ba578063d545782e1461065b578063e2b4ce971461068d578063e9cbd8221461069557610116565b80636c3824ef146104bc5780637d73b2311461052a57806380cc0dda1461054e578063872773061461055657610116565b80633efec5e9116100e95780633efec5e9146103f0578063443dd2a4146103f857806344b049bc146104505780635d793a7d146104585780636a1744dc1461048657610116565b806313d5e8461461011b5780631d3a069f146101355780631f69565f1461017057806334c73edc14610240575b600080fd5b61012361069d565b60408051918252519081900360200190f35b61015c6004803603602081101561014b57600080fd5b50356001600160e01b0319166106a4565b604080519115158252519081900360200190f35b6101966004803603602081101561018657600080fd5b50356001600160a01b03166106c7565b6040805160208082018990529181018790528515156060820152841515608082015283151560a082015260c0810183905260e08082528951908201528851909182916101008301918b019080838360005b838110156101ff5781810151838201526020016101e7565b50505050905090810190601f16801561022c5780820380516001836020036101000a031916815260200191505b509850505050505050505060405180910390f35b6103ee600480360360c081101561025657600080fd5b810190602081018135600160201b81111561027057600080fd5b82018360208201111561028257600080fd5b803590602001918460208302840111600160201b831117156102a357600080fd5b919390929091602081019035600160201b8111156102c057600080fd5b8201836020820111156102d257600080fd5b803590602001918460208302840111600160201b831117156102f357600080fd5b919390929091602081019035600160201b81111561031057600080fd5b82018360208201111561032257600080fd5b803590602001918460208302840111600160201b8311171561034357600080fd5b919390929091602081019035600160201b81111561036057600080fd5b82018360208201111561037257600080fd5b803590602001918460208302840111600160201b8311171561039357600080fd5b919390929091602081019035600160201b8111156103b057600080fd5b8201836020820111156103c257600080fd5b803590602001918460208302840111600160201b831117156103e357600080fd5b9193509150356107c4565b005b610196610c54565b610400610d51565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561043c578181015183820152602001610424565b505050509050019250505060405180910390f35b610400610db3565b6103ee6004803603604081101561046e57600080fd5b506001600160a01b0381351690602001351515610e81565b61015c6004803603604081101561049c57600080fd5b5080356001600160a01b031690602001356001600160e01b031916610fb8565b6103ee600480360360208110156104d257600080fd5b810190602081018135600160201b8111156104ec57600080fd5b8201836020820111156104fe57600080fd5b803590602001918460208302840111600160201b8311171561051f57600080fd5b50909250905061103f565b6105326112e2565b604080516001600160a01b039092168252519081900360200190f35b6101236112f1565b6103ee6004803603604081101561056c57600080fd5b506001600160a01b03813516906020013515156112f7565b6103ee6004803603606081101561059a57600080fd5b506001600160a01b0381358116916020810135909116906040013561142c565b610638600480360360408110156105d057600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156105fa57600080fd5b82018360208201111561060c57600080fd5b803590602001918460018302840111600160201b8311171561062d57600080fd5b5090925090506114d9565b604080516001600160a01b03909316835260208301919091528051918290030190f35b6103ee6004803603606081101561067157600080fd5b506001600160a01b03813516906020810135906040013561181d565b610123611968565b61053261196e565b6005545b90565b6001600160e01b0319811660009081526003602052604090205460ff165b919050565b6001600160a01b03811660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff808516969385048116956201000090950416939192909189918301828280156107a35780601f10610778576101008083540402835291602001916107a3565b820191906000526020600020905b81548152906001019060200180831161078657829003601f168201915b50505050509650975097509750975097509750975050919395979092949650565b6107cd3361197d565b610817576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b898814801561082557508986145b801561083057508984145b801561083b57508984145b61088c576040805162461bcd60e51b815260206004820152601e60248201527f706172616d65746572206c656e6774687320646f206e6f74206d617463680000604482015290519081900360640190fd5b60005b8a811015610c4657600260008d8d848181106108a757fe5b602090810292909201356001600160a01b03168352508101919091526040016000206003015460ff1615610922576040805162461bcd60e51b815260206004820152601760248201527f746f6b656e20616c726561647920617661696c61626c65000000000000000000604482015290519081900360640190fd5b60606109476109428c8c8581811061093657fe5b90506020020135611a11565b611a3d565b90506040518060e001604052808281526020018a8a8581811061096657fe5b9050602002013581526020016000815260200160011515815260200188888581811061098e57fe5b905060200201351515151581526020018686858181106109aa57fe5b9050602002013515151515815260200184815250600260008f8f868181106109ce57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b031681526020019081526020016000206000820151816000019080519060200190610a1a929190612074565b5060208201516001820155604082015160028201556060820151600382018054608085015160a08601511515620100000262ff0000199115156101000261ff001995151560ff199094169390931794909416919091171691909117905560c0909101516004918201558d8d84818110610a8f57fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b039590920293909301359390931692909217905550848483818110610ad757fe5b9050602002013515610afb57600554610af790600163ffffffff611a9416565b6005555b7f1802e89da3f6ef84e024e37454c226b1e13bf846ce71cd2a1d24faef9cbf779b338e8e85818110610b2957fe5b905060200201356001600160a01b0316838c8c87818110610b4657fe5b905060200201358b8b88818110610b5957fe5b9050602002013515158a8a89818110610b6e57fe5b90506020020135151560405180876001600160a01b03166001600160a01b03168152602001866001600160a01b03166001600160a01b03168152602001806020018581526020018415151515815260200183151515158152602001828103825286818151815260200191508051906020019080838360005b83811015610bfe578181015183820152602001610be6565b50505050905090810190601f168015610c2b5780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a15060010161088f565b505050505050505050505050565b6006546001600160a01b031660009081526002602081815260408084206001808201548286015460038401546004850154855487516101009682161587026000190190911699909904601f810189900489028a0189019097528689526060999889988998899889988998919788979296909560ff80851696938504811695620100009095041693919290918991830182828015610d325780601f10610d0757610100808354040283529160200191610d32565b820191906000526020600020905b815481529060010190602001808311610d1557829003601f168201915b5050505050965097509750975097509750975097505090919293949596565b60606004805480602002602001604051908101604052809291908181526020018280548015610da957602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311610d8b575b5050505050905090565b606080600554604051908082528060200260200182016040528015610de2578160200160208202803883390190505b5090506000805b600454811015610e7957600060048281548110610e0257fe5b60009182526020808320909101546001600160a01b0316808352600290915260409091206003015490915060ff620100009091041615610e705780848481518110610e4957fe5b60200260200101906001600160a01b031690816001600160a01b0316815250506001830192505b50600101610de9565b509091505090565b610e8a3361197d565b610ed4576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff16610f3d576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b038216600081815260026020908152604091829020600301805485151562010000810262ff0000199092169190911790915582513381529182019390935280820192909252517fcaa111d70d53608b9c8e3278c634595491de54f572a17a297dedad20f517039d9181900360600190a15050565b6001600160a01b03821660009081526002602052604081206003015460ff1661101d576040805162461bcd60e51b81526020600482015260126024820152713737b716b2bc34b9ba34b733903a37b5b2b760711b604482015290519081900360640190fd5b506001600160e01b03191660009081526003602052604090205460ff16919050565b6110483361197d565b611092576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b60005b818110156112dd5760008383838181106110ab57fe5b602090810292909201356001600160a01b0316600081815260029093526040909220600301549192505060ff16611122576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b03811660009081526002602052604090206003015462010000900460ff16156111645760055461116090600163ffffffff611af516565b6005555b6001600160a01b03811660009081526002602052604081209061118782826120f2565b506000600182018190556002820181905560038201805462ffffff1916905560049091018190555b6004546111c390600163ffffffff611af516565b81101561127c57816001600160a01b0316600482815481106111e157fe5b6000918252602090912001546001600160a01b03161415611274576004805461121190600163ffffffff611af516565b8154811061121b57fe5b600091825260209091200154600480546001600160a01b03909216918390811061124157fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555061127c565b6001016111af565b506004805490611290906000198301612139565b50604080513381526001600160a01b038316602082015281517f703f7e3f084d5b8dcc12fddcfd9a70d65b6b21ec7659e4608dbaf4419ede3ad0929181900390910190a150600101611095565b505050565b6000546001600160a01b031690565b60075490565b6113003361197d565b61134a576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03821660009081526002602052604090206003015460ff166113b3576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0382166000818152600260209081526040918290206003018054851515610100810261ff00199092169190911790915582513381529182019390935280820192909252517f0e086282e8e406857ef1dce65e04a192ad8405e48484524cb2ddbf28e5d84eec9181900360600190a15050565b6114353361197d565b61147f576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71030b236b4b760511b604482015290519081900360640190fd5b61148a838383611b52565b604080516001600160a01b0380861682528416602082015280820183905290517ff7a40077ff7a04c7e61f6f26fb13774259ddf1b6bce9ecf26a8276cdd39926839181900360600190a1505050565b6000806024831015611532576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206d6574686f642d656e636f64696e67206279746573604482015290519081900360640190fd5b600061157e600086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611bb6169050565b905061158a8682610fb8565b6115d0576040805162461bcd60e51b81526020600482015260126024820152711d5b9cdd5c1c1bdc9d1959081b595d1a1bd960721b604482015290519081900360640190fd5b6001600160e01b03198116630852cd8d60e31b141561163e5785611634600487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b9250925050611815565b6001600160e01b031981166323b872dd60e01b14156117415760648410156116ad576040805162461bcd60e51b815260206004820181905260248201527f6e6f7420656e6f756768206461746120666f72207472616e7366657246726f6d604482015290519081900360640190fd5b6116f7603086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634604487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b60448410156117815760405162461bcd60e51b81526004018080602001828103825260258152602001806121926025913960400191505060405180910390fd5b6117cb601086868080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c48169050565b611634602487878080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929392505063ffffffff611c35169050565b935093915050565b600061182a600754611cca565b90506118353361197d565b806118485750336001600160a01b038216145b611892576040805162461bcd60e51b815260206004820152601660248201527532b4ba3432b91037b930b1b6329037b91030b236b4b760511b604482015290519081900360640190fd5b6001600160a01b03841660009081526002602052604090206003015460ff166118fb576040805162461bcd60e51b8152602060048201526016602482015275746f6b656e206973206e6f7420617661696c61626c6560501b604482015290519081900360640190fd5b6001600160a01b0384166000818152600260208181526040928390209182018790556004909101859055815133815290810192909252818101859052517fdb3a4cfb4cd8ac94343ff7440cee8d05ade309056203f0e53ca49b6db8197c7d9181900360600190a150505050565b60015490565b6006546001600160a01b031690565b600061198a600154611cca565b6001600160a01b03166324d7806c836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156119df57600080fd5b505afa1580156119f3573d6000803e3d6000fd5b505050506040513d6020811015611a0957600080fd5b505192915050565b611a1961215d565b6040516020810160405282815280602083015250611a3682611d8c565b8152919050565b60608082600001516040519080825280601f01601f191660200182016040528015611a6f576020820181803883390190505b5090506000602082019050611a8d8185602001518660000151611e25565b5092915050565b600082820183811015611aee576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115611b4c576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b6001600160a01b038216611b9c576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015611b96573d6000803e3d6000fd5b506112dd565b6112dd6001600160a01b038316848363ffffffff611e6316565b6000611bc982600463ffffffff611a9416565b83511015611c15576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611c2984602063ffffffff611a9416565b90940151949350505050565b6000611bc982602063ffffffff611a9416565b6000611c5b82601463ffffffff611a9416565b83511015611ca7576040805162461bcd60e51b8152602060048201526014602482015273736c6963696e67206f7574206f662072616e676560601b604482015290519081900360640190fd5b600080611cbb84602063ffffffff611a9416565b9094015160601c949350505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015611d1757600080fd5b505afa158015611d2b573d6000803e3d6000fd5b505050506040513d6020811015611d4157600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156119df57600080fd5b60008082611d9e5760009150506106c2565b6fffffffffffffffffffffffffffffffff8316611dc257601001600160801b830492505b67ffffffffffffffff8316611de35760080168010000000000000000830492505b63ffffffff8316611dfb57600401600160201b830492505b61ffff8316611e105760020162010000830492505b60ff8316611e1c576001015b60200392915050565b5b60208110611e45578151835260209283019290910190601f1901611e26565b905182516020929092036101000a6000190180199091169116179052565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526112dd908490611ec2826001600160a01b031661206e565b611f13576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310611f515780518252601f199092019160209182019101611f32565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114611fb3576040519150601f19603f3d011682016040523d82523d6000602084013e611fb8565b606091505b50915091508161200f576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b8051156120685780806020019051602081101561202b57600080fd5b50516120685760405162461bcd60e51b815260040180806020018281038252602a8152602001806121b7602a913960400191505060405180910390fd5b50505050565b3b151590565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106120b557805160ff19168380011785556120e2565b828001600101855582156120e2579182015b828111156120e25782518255916020019190600101906120c7565b506120ee929150612177565b5090565b50805460018160011615610100020316600290046000825580601f106121185750612136565b601f0160209004906000526020600020908101906121369190612177565b50565b8154818355818111156112dd576000838152602090206112dd918101908301612177565b604051806040016040528060008152602001600081525090565b6106a191905b808211156120ee576000815560010161217d56fe6e6f7420656e6f756768206461746120666f72207472616e736665722f61707070726f76655361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a265627a7a72315820e8475cc06f0ba3ca41794cc208702d5fd639f71b2ac4002a02abb38287f23bfe64736f6c63430005110032" // DeployTokenWhitelist deploys a new Ethereum contract, binding an instance of TokenWhitelist to it. func DeployTokenWhitelist(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _oracleNode_ [32]byte, _controllerNode_ [32]byte, _stablecoinAddress_ common.Address) (common.Address, *types.Transaction, *TokenWhitelist, error) { diff --git a/pkg/bindings/wallet.go b/pkg/bindings/wallet.go index 3c2ed3b7..65bbb79a 100644 --- a/pkg/bindings/wallet.go +++ b/pkg/bindings/wallet.go @@ -31,7 +31,7 @@ var ( const WalletABI = "[{\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner_\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable_\",\"type\":\"bool\"},{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"uint256\",\"name\":\"_spendLimit_\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"AddedToWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_assets\",\"type\":\"address[]\"}],\"name\":\"BulkTransferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"CancelledWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returndata\",\"type\":\"bytes\"}],\"name\":\"ExecutedRelayedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"indexed\":false,\"internalType\":\"bytes\",\"name\":\"_returndata\",\"type\":\"bytes\"}],\"name\":\"ExecutedTransaction\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_currentNonce\",\"type\":\"uint256\"}],\"name\":\"IncreasedRelayNonce\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"LoadedTokenCard\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_locked\",\"type\":\"address\"}],\"name\":\"LockedOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Received\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"RemovedFromWhitelist\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetGasTopUpLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetLoadLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SetSpendLimit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedGasTopUpLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedLoadLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"SubmittedSpendLimitUpdate\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistAddition\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"},{\"indexed\":false,\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"SubmittedWhitelistRemoval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"ToppedUpGas\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"Transferred\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_from\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_to\",\"type\":\"address\"}],\"name\":\"TransferredOwnership\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[],\"name\":\"UpdatedAvailableLimit\",\"type\":\"event\"},{\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"fallback\"},{\"constant\":true,\"inputs\":[],\"name\":\"WALLET_VERSION\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_transactionBatch\",\"type\":\"bytes\"}],\"name\":\"batchExecuteTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address[]\",\"name\":\"_assets\",\"type\":\"address[]\"}],\"name\":\"bulkTransfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"calculateHash\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"pure\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistAddition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"cancelWhitelistRemoval\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmGasTopUpLimitUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmLoadLimitUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"confirmSpendLimitUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistAddition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hash\",\"type\":\"bytes32\"}],\"name\":\"confirmWhitelistRemoval\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToEther\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"convertToStablecoin\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_nonce\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"executeRelayedTransaction\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_destination\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_value\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"}],\"name\":\"executeTransaction\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"\",\"type\":\"bytes\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"gasTopUpLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"gasTopUpLimitControllerConfirmationRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"gasTopUpLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"gasTopUpLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"increaseRelayNonce\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isSetWhitelist\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"isTransferable\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes32\",\"name\":\"_hashedData\",\"type\":\"bytes32\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes\",\"name\":\"_data\",\"type\":\"bytes\"},{\"internalType\":\"bytes\",\"name\":\"_signature\",\"type\":\"bytes\"}],\"name\":\"isValidSignature\",\"outputs\":[{\"internalType\":\"bytes4\",\"name\":\"\",\"type\":\"bytes4\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"loadLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"loadLimitControllerConfirmationRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"loadLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"loadLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"loadTokenCard\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"owner\",\"outputs\":[{\"internalType\":\"addresspayable\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingWhitelistAddition\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"pendingWhitelistRemoval\",\"outputs\":[{\"internalType\":\"address[]\",\"name\":\"\",\"type\":\"address[]\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"relayNonce\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"renounceOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"setGasTopUpLimit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"setLoadLimit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"setSpendLimit\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"setWhitelist\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"spendLimitAvailable\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"spendLimitControllerConfirmationRequired\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"spendLimitPending\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"spendLimitValue\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitGasTopUpLimitUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitLoadLimitUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"submitSpendLimitUpdate\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistAddition\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"address[]\",\"name\":\"_addresses\",\"type\":\"address[]\"}],\"name\":\"submitWhitelistRemoval\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"submittedWhitelistAddition\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"submittedWhitelistRemoval\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"_interfaceID\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"topUpGas\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_to\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_asset\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_amount\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_account\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_transferable\",\"type\":\"bool\"}],\"name\":\"transferOwnership\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"whitelistArray\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"whitelistMap\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletBin is the compiled bytecode used for deploying new contracts. -var WalletBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032" +var WalletBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032" // DeployWallet deploys a new Ethereum contract, binding an instance of Wallet to it. func DeployWallet(auth *bind.TransactOpts, backend bind.ContractBackend, _owner_ common.Address, _transferable_ bool, _ens_ common.Address, _tokenWhitelistNode_ [32]byte, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _spendLimit_ *big.Int) (common.Address, *types.Transaction, *Wallet, error) { diff --git a/pkg/bindings/walletCache.go b/pkg/bindings/walletCache.go index 565220fe..fbc89548 100644 --- a/pkg/bindings/walletCache.go +++ b/pkg/bindings/walletCache.go @@ -31,7 +31,7 @@ var ( const WalletCacheABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_defaultSpendLimit_\",\"type\":\"uint256\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_licenceNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_tokenWhitelistNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletDeployerNode_\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contractWallet\",\"name\":\"_wallet\",\"type\":\"address\"}],\"name\":\"CachedWallet\",\"type\":\"event\"},{\"constant\":false,\"inputs\":[],\"name\":\"cacheWallet\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"cachedWallets\",\"outputs\":[{\"internalType\":\"contractWallet\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"cachedWalletsCount\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"defaultSpendLimit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ens\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"licenceNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"tokenWhitelistNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"walletCachePop\",\"outputs\":[{\"internalType\":\"contractWallet\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"walletDeployerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletCacheBin is the compiled bytecode used for deploying new contracts. -var WalletCacheBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a723158209d5fb47f89f7c6192ac68d655b4aee16e99404a0de20c07f01c786ce8779788164736f6c63430005110032a265627a7a723158200d133a1b20c5b8d7f88583b755e0cdb58d87241a8e32f00dc43a433c17cfbfdf64736f6c63430005110032" +var WalletCacheBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557fd0ff8bd67f6e25e4e4b010df582a36a0ee9b78e49afe6cc1cff5dd5a830403306002557fe84f90570f13fe09f288f2411ff9cf50da611ed0c7db7f73d48053ffc974d3966003557f1d0c0adbe6addd93659446311e0767a56b67d41ef38f0cb66dcf7560d28a5a386004553480156100a057600080fd5b50604051616100380380616100833981810160405260c08110156100c357600080fd5b508051602082015160408301516060840151608085015160a090950151600080546001600160a01b0319166001600160a01b03871617905593949293919290918380156101105760018190555b50600680546001600160a01b0319166001600160a01b0388161790556007859055821561013d5760028390555b81156101495760038290555b80156101555760048190555b505050505050615f968061016a6000396000f3fe60806040523480156200001157600080fd5b5060043610620000b85760003560e01c8063877337b0116200007b578063877337b0146200011f57806387e8bed11462000129578063a4570e511462000133578063a7a7d3bc146200013d578063e2b4ce971462000147578063fc6cabe7146200015157620000b8565b80633f15457f14620000bd57806360dbc5de14620000e357806371b9076a14620000ef578063747c31d6146200010b5780637d73b2311462000115575b600080fd5b620000c762000171565b604080516001600160a01b039092168252519081900360200190f35b620000ed62000180565b005b620000f9620002a5565b60408051918252519081900360200190f35b620000f9620002ab565b620000c7620002b1565b620000f9620002c0565b620000f9620002c6565b620000c7620002cc565b620000f9620003bb565b620000f9620003c1565b620000c7600480360360208110156200016957600080fd5b5035620003c7565b6006546001600160a01b031681565b60006200018f600454620003ef565b6006546003546001916001600160a01b031690620001ac620003c1565b600254600754604051620001c090620004e9565b6001600160a01b0397881681529515156020870152939095166040808601919091526060850192909252608084015260a083019390935260c082015290519081900360e001906000f0801580156200021c573d6000803e3d6000fd5b50600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0383166001600160a01b0319909116811790915560408051918252519192507f9ede7876a6b2454072ceeaff4b6b4e6eaa5381db241b850f2a46034136fc2e6e919081900360200190a150565b60055490565b60025481565b6000546001600160a01b031690565b60035481565b60045481565b6000620002db600454620003ef565b6001600160a01b0316336001600160a01b03161462000341576040805162461bcd60e51b815260206004820152601d60248201527f6e6f742063616c6c65642062792077616c6c65742d6465706c6f796572000000604482015290519081900360640190fd5b6005546001111562000357576200035762000180565b600580546000919060001981019081106200036e57fe5b600091825260209091200154600580546001600160a01b03909216925090806200039457fe5b600082815260209020810160001990810180546001600160a01b0319169055019055905090565b60075481565b60015490565b60058181548110620003d557fe5b6000918252602090912001546001600160a01b0316905081565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b1580156200043d57600080fd5b505afa15801562000452573d6000803e3d6000fd5b505050506040513d60208110156200046957600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b158015620004b557600080fd5b505afa158015620004ca573d6000803e3d6000fd5b505050506040513d6020811015620004e157600080fd5b505192915050565b615a6a80620004f88339019056fe60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001553480156200003557600080fd5b5060405162005a6a38038062005a6a833981810160405260e08110156200005b57600080fd5b508051602082015160408301516060840151608085015160a086015160c090960151600080546001600160a01b0319166001600160a01b03861617905594959394929391929091908084808989878015620000b65760018190555b50600280546001600160a01b0319166001600160a01b0384161760ff60a01b1916600160a01b8315158102919091179182905560ff9104166200013057604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b60408051600081526001600160a01b038416602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a150506040805160a0810182526706f05b59d3b2000080825260208201819052429282018390526000606083018190526080909201829052600381905560045560059190915560068190556007805460ff19169055600891909155620001e16001600160e01b03620002d816565b5050505050915050600081116200022f576040805162461bcd60e51b815260206004820152600d60248201526c37379039ba30b13632b1b7b4b760991b604482015290519081900360640190fd5b6127100260098190556040805160a08082018352838252602080830185905242838501819052600060608086018290526080958601829052600a889055600b97909755600c829055600d819055600e805460ff1990811690915586519485018752898552928401899052948301819052948201849052910182905260148590556015949094556016919091556017555060188054909116905550601a5550620005549350505050565b6060600080600080600080620002f66008546200045a60201b60201c565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156200032f57600080fd5b505afa15801562000344573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e08110156200036e57600080fd5b81019080805160405193929190846401000000008211156200038f57600080fd5b908301906020820185811115620003a557600080fd5b8251640100000000811182820188101715620003c057600080fd5b82525081516020918201929091019080838360005b83811015620003ef578181015183820152602001620003d5565b50505050905090810190601f1680156200041d5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b158015620004a857600080fd5b505afa158015620004bd573d6000803e3d6000fd5b505050506040513d6020811015620004d457600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156200052057600080fd5b505afa15801562000535573d6000803e3d6000fd5b505050506040513d60208110156200054c57600080fd5b505192915050565b61550680620005646000396000f3fe60806040526004361061038c5760003560e01c80637fd004fa116101dc578063cc0e7e5611610102578063e2b4ce97116100a0578063f40b51f81161006f578063f40b51f8146110b0578063f41c4319146110da578063f421764814611104578063f776f5181461117f5761038c565b8063e2b4ce971461100e578063e61c51ca14611023578063eadd3cea1461104d578063f36febda146110775761038c565b8063ce0b5bd5116100dc578063ce0b5bd514610f90578063d251fefc14610fba578063da84b1ed14610fe4578063de212bf314610ff95761038c565b8063cc0e7e5614610eb8578063cccdc55614610ecd578063cd7958dd14610ee25761038c565b8063b221f3161161017a578063be40ba7911610149578063be40ba7914610e21578063beabacc814610e36578063c4856cd914610e79578063cbd2ac6814610e8e5761038c565b8063b221f31614610d6e578063b242e53414610d98578063b87e21ef14610dd3578063bcb8b74a14610e0c5761038c565b806390e690c7116101b657806390e690c714610c7e5780639b0dfd2714610c93578063aaf1fc6214610ca8578063ab20599314610d595761038c565b80637fd004fa14610bd9578063877337b014610c545780638da5cb5b14610c695761038c565b806332531c3c116102c15780635adc02ab1161025f57806374624c551161022e57806374624c5514610b54578063747c31d614610b7e5780637d73b23114610b935780637d7d004614610bc45761038c565b80635adc02ab14610a855780635d2362a814610aaf5780636137d67014610ac4578063715018a614610b3f5761038c565b80633c672eb71161029b5780633c672eb7146108ae5780633f579f42146108d857806346efe0ed1461099e57806347b55a9d14610a705761038c565b806332531c3c146108255780633a43199f146108585780633bfec254146108845761038c565b80631efd02991161032e57806321ce918d1161030857806321ce918d1461076c5780632587a6a21461079657806326d05ab2146107ab578063294f4025146107c05761038c565b80631efd02991461067757806320c13b0b1461068c5780632121dc75146107575761038c565b8063100f23fd1161036a578063100f23fd146104635780631127b57e1461048d5780631626ba7e146105175780631aa21fba146105ec5761038c565b806301ffc9a7146103c8578063027ef3eb146104105780630f3a85d814610437575b6040805133815234602082015281517f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874929181900390910190a1005b3480156103d457600080fd5b506103fc600480360360208110156103eb57600080fd5b50356001600160e01b031916611194565b604080519115158252519081900360200190f35b34801561041c57600080fd5b506104256111ae565b60408051918252519081900360200190f35b34801561044357600080fd5b506104616004803603602081101561045a57600080fd5b50356111b5565b005b34801561046f57600080fd5b506104616004803603602081101561048657600080fd5b50356112c1565b34801561049957600080fd5b506104a2611466565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104dc5781810151838201526020016104c4565b50505050905090810190601f1680156105095780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561052357600080fd5b506105cf6004803603604081101561053a57600080fd5b81359190810190604081016020820135600160201b81111561055b57600080fd5b82018360208201111561056d57600080fd5b803590602001918460018302840111600160201b8311171561058e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611487945050505050565b604080516001600160e01b03199092168252519081900360200190f35b3480156105f857600080fd5b506104616004803603604081101561060f57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561063957600080fd5b82018360208201111561064b57600080fd5b803590602001918460208302840111600160201b8311171561066c57600080fd5b5090925090506114fc565b34801561068357600080fd5b50610425611682565b34801561069857600080fd5b506105cf600480360360408110156106af57600080fd5b810190602081018135600160201b8111156106c957600080fd5b8201836020820111156106db57600080fd5b803590602001918460018302840111600160201b831117156106fc57600080fd5b919390929091602081019035600160201b81111561071957600080fd5b82018360208201111561072b57600080fd5b803590602001918460018302840111600160201b8311171561074c57600080fd5b509092509050611693565b34801561076357600080fd5b506103fc611768565b34801561077857600080fd5b506104616004803603602081101561078f57600080fd5b5035611778565b3480156107a257600080fd5b50610425611816565b3480156107b757600080fd5b506103fc61181c565b3480156107cc57600080fd5b506107d5611825565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108115781810151838201526020016107f9565b505050509050019250505060405180910390f35b34801561083157600080fd5b506103fc6004803603602081101561084857600080fd5b50356001600160a01b0316611887565b6104616004803603604081101561086e57600080fd5b506001600160a01b03813516906020013561189c565b34801561089057600080fd5b50610461600480360360208110156108a757600080fd5b5035611ada565b3480156108ba57600080fd5b50610461600480360360208110156108d157600080fd5b5035611bd2565b3480156108e457600080fd5b506104a2600480360360608110156108fb57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b81111561092a57600080fd5b82018360208201111561093c57600080fd5b803590602001918460018302840111600160201b8311171561095d57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611c78945050505050565b3480156109aa57600080fd5b50610461600480360360608110156109c157600080fd5b81359190810190604081016020820135600160201b8111156109e257600080fd5b8201836020820111156109f457600080fd5b803590602001918460018302840111600160201b83111715610a1557600080fd5b919390929091602081019035600160201b811115610a3257600080fd5b820183602082011115610a4457600080fd5b803590602001918460018302840111600160201b83111715610a6557600080fd5b50909250905061216f565b348015610a7c57600080fd5b506107d56124b0565b348015610a9157600080fd5b5061046160048036036020811015610aa857600080fd5b5035612510565b348015610abb57600080fd5b506104256127e0565b348015610ad057600080fd5b5061046160048036036020811015610ae757600080fd5b810190602081018135600160201b811115610b0157600080fd5b820183602082011115610b1357600080fd5b803590602001918460208302840111600160201b83111715610b3457600080fd5b5090925090506127ec565b348015610b4b57600080fd5b50610461612a12565b348015610b6057600080fd5b5061046160048036036020811015610b7757600080fd5b5035612b10565b348015610b8a57600080fd5b50610425612c14565b348015610b9f57600080fd5b50610ba8612c1a565b604080516001600160a01b039092168252519081900360200190f35b348015610bd057600080fd5b50610425612c29565b348015610be557600080fd5b5061046160048036036020811015610bfc57600080fd5b810190602081018135600160201b811115610c1657600080fd5b820183602082011115610c2857600080fd5b803590602001918460208302840111600160201b83111715610c4957600080fd5b509092509050612c35565b348015610c6057600080fd5b50610425612f77565b348015610c7557600080fd5b50610ba8612f7d565b348015610c8a57600080fd5b50610461612f8c565b348015610c9f57600080fd5b50610425612fe9565b348015610cb457600080fd5b5061046160048036036020811015610ccb57600080fd5b810190602081018135600160201b811115610ce557600080fd5b820183602082011115610cf757600080fd5b803590602001918460018302840111600160201b83111715610d1857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612fef945050505050565b348015610d6557600080fd5b506103fc61312c565b348015610d7a57600080fd5b5061046160048036036020811015610d9157600080fd5b5035613135565b348015610da457600080fd5b5061046160048036036040811015610dbb57600080fd5b506001600160a01b0381351690602001351515613225565b348015610ddf57600080fd5b5061042560048036036040811015610df657600080fd5b506001600160a01b0381351690602001356133df565b348015610e1857600080fd5b506103fc61346f565b348015610e2d57600080fd5b506103fc613478565b348015610e4257600080fd5b5061046160048036036060811015610e5957600080fd5b506001600160a01b03813581169160208101359091169060400135613487565b348015610e8557600080fd5b50610425613611565b348015610e9a57600080fd5b5061046160048036036020811015610eb157600080fd5b5035613617565b348015610ec457600080fd5b50610425613994565b348015610ed957600080fd5b5061042561399a565b348015610eee57600080fd5b5061042560048036036020811015610f0557600080fd5b810190602081018135600160201b811115610f1f57600080fd5b820183602082011115610f3157600080fd5b803590602001918460208302840111600160201b83111715610f5257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295506139a0945050505050565b348015610f9c57600080fd5b5061046160048036036020811015610fb357600080fd5b50356139fa565b348015610fc657600080fd5b50610ba860048036036020811015610fdd57600080fd5b5035613ba3565b348015610ff057600080fd5b50610425613bca565b34801561100557600080fd5b506103fc613bd0565b34801561101a57600080fd5b50610425613bde565b34801561102f57600080fd5b506104616004803603602081101561104657600080fd5b5035613be4565b34801561105957600080fd5b506104616004803603602081101561107057600080fd5b5035613d2e565b34801561108357600080fd5b506104256004803603604081101561109a57600080fd5b506001600160a01b038135169060200135613d87565b3480156110bc57600080fd5b50610461600480360360208110156110d357600080fd5b5035613f3a565b3480156110e657600080fd5b50610461600480360360208110156110fd57600080fd5b5035613f93565b34801561111057600080fd5b506104616004803603602081101561112757600080fd5b810190602081018135600160201b81111561114157600080fd5b82018360208201111561115357600080fd5b803590602001918460208302840111600160201b8311171561117457600080fd5b509092509050613fec565b34801561118b57600080fd5b506103fc61433e565b6001600160e01b031981166301ffc9a760e01b145b919050565b6017545b90565b6111be33614347565b806111c857503330145b61120c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c680001115801561122b57506706f05b59d3b200008111155b611272576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b61128360038263ffffffff61435b16565b604080513381526020810183905281517f41ff5d5ce3b7935893a4e7269ec5caae9cca5e3bf0eb4b21d2f443489667112e929181900390910190a150565b6112ca33614347565b806112d957506112d9336143c4565b611323576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b60135460ff16611372576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b6113d560118054806020026020016040519081016040528092919081815260200182805480156113cb57602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116113ad575b50505050506139a0565b81146114125760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b61141e601160006152e9565b6013805460ff19169055604080513381526020810183905281517f7794eff834d760583543e6e510e717a5e66d2c064e225f4db448343c3e66afcf929181900390910190a150565b604051806040016040528060058152602001640332e322e360dc1b81525081565b60008061149a848463ffffffff61445816565b90506114a581614347565b6114ea576040805162461bcd60e51b8152602060048201526011602482015270696e76616c6964207369676e617475726560781b604482015290519081900360640190fd5b50630b135d3f60e11b90505b92915050565b61150533614347565b8061150f57503330145b611553576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8061159c576040805162461bcd60e51b8152602060048201526014602482015273617373657420617272617920697320656d70747960601b604482015290519081900360640190fd5b60005b818110156115ff5760006115ce308585858181106115b957fe5b905060200201356001600160a01b0316614546565b90506115f6858585858181106115e057fe5b905060200201356001600160a01b031683613487565b5060010161159f565b507fd4f62f23021706247dcffea245d104ae7ddaec7f23acf3d11d7136d5de6a69ad83838360405180846001600160a01b03166001600160a01b03168152602001806020018281038252848482818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b600061168e600a6145f1565b905090565b6000808585604051602001808383808284376040805191909301818103601f190182528084528151602092830120601f8b01839004830282018301909452898152929650630b135d3f60e11b955061170a945086935089915088908190840183828082843760009201919091525061148792505050565b6001600160e01b03191614611756576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b506320c13b0b60e01b95945050505050565b600254600160a01b900460ff1690565b61178133614347565b8061178b57503330145b6117cf576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6117e060148263ffffffff61462616565b6040805182815290517f4b1b970c8a0fa761e7803ed70c13d7aca71904b13df60fbe03f981da1730da919181900360200190a150565b60035490565b60135460ff1681565b6060601280548060200260200160405190810160405280929190818152602001828054801561187d57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161185f575b5050505050905090565b600f6020526000908152604090205460ff1681565b6118a533614347565b806118af57503330145b6118f3576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6118fc82614687565b611942576040805162461bcd60e51b8152602060048201526012602482015271746f6b656e206e6f74206c6f616461626c6560701b604482015290519081900360640190fd5b600061194e8383613d87565b9050611961600a8263ffffffff6146a116565b600061196e601a54614717565b90506001600160a01b03841615611a16576119996001600160a01b038516828563ffffffff6147d916565b806001600160a01b0316631b3c96b485856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050600060405180830381600087803b1580156119f957600080fd5b505af1158015611a0d573d6000803e3d6000fd5b50505050611a90565b806001600160a01b0316631b3c96b48486866040518463ffffffff1660e01b815260040180836001600160a01b03166001600160a01b03168152602001828152602001925050506000604051808303818588803b158015611a7657600080fd5b505af1158015611a8a573d6000803e3d6000fd5b50505050505b604080516001600160a01b03861681526020810185905281517f5f65674bec9af81f71be68674135a0ea3f163fb91984e3893d06da9f6ea2ce8a929181900390910190a150505050565b611ae333614347565b80611aed57503330145b611b31576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b600954811115611b83576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b611b94600a8263ffffffff61435b16565b604080513381526020810183905281517f0b05243483e17c3f3377aee82b7d47e5700b48288695fc08b7ecc2759afa44ef929181900390910190a150565b611bdb33614347565b80611be557503330145b611c29576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b611c3a60148263ffffffff61435b16565b604080513381526020810183905281517f068f112e5ec923d412be64779fe69e0fcbb6784c6617e94cccc8fd348f2e0f21929181900390910190a150565b6060611c8333614347565b80611c8d57503330145b611cd1576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff16611d0257611d0260148463ffffffff6146a116565b611d14846001600160a01b03166148f1565b8015611d245750611d24846148f7565b15611f0b57600080611d368685614911565b6001600160a01b0382166000908152600f6020526040902054919350915060ff16611d7c576000611d6787836133df565b9050611d7a60148263ffffffff6146a116565b505b611d956001600160a01b0387168563ffffffff614a1b16565b604080516020808252818301909252606091602082018180388339019050509050600160f81b81601f81518110611dc857fe5b60200101906001600160f81b031916908160001a9053507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138787878460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b83811015611e63578181015183820152602001611e4b565b50505050905090810190601f168015611e905780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b83811015611ec3578181015183820152602001611eab565b50505050905090810190601f168015611ef05780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19250612168915050565b60006060856001600160a01b031685856040518082805190602001908083835b60208310611f4a5780518252601f199092019160209182019101611f2b565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114611fac576040519150601f19603f3d011682016040523d82523d6000602084013e611fb1565b606091505b50915091508181906120415760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015612006578181015183820152602001611fee565b50505050905090810190601f1680156120335780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b507ff77753fab406ecfff96d6ff2476c64a838fa9f6d37b1bf190f8546e395e3b6138686868460405180856001600160a01b03166001600160a01b031681526020018481526020018060200180602001838103835285818151815260200191508051906020019080838360005b838110156120c65781810151838201526020016120ae565b50505050905090810190601f1680156120f35780820380516001836020036101000a031916815260200191505b50838103825284518152845160209182019186019080838360005b8381101561212657818101518382015260200161210e565b50505050905090810190601f1680156121535780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a19150505b9392505050565b612178336143c4565b6121b7576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60004690506000612237823089898960405160200180806836b7b737b634ba341d60b91b815250600901868152602001856001600160a01b03166001600160a01b031660601b8152601401848152602001838380828437808301925050509550505050505060405160208183030381529060405280519060200120614bd9565b9050631626ba7e60e01b6001600160e01b03191661228b8286868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061148792505050565b6001600160e01b031916146122d7576040805162461bcd60e51b815260206004820152600d60248201526c1cda59c81b9bdd081d985b1a59609a1b604482015290519081900360640190fd5b6019548714612319576040805162461bcd60e51b81526020600482015260096024820152687478207265706c617960b81b604482015290519081900360640190fd5b612321614c2a565b60006060306001600160a01b03168888604051808383808284376040519201945060009350909150508083038183865af19150503d8060008114612381576040519150601f19603f3d011682016040523d82523d6000602084013e612386565b606091505b50915091508181906123d95760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315612006578181015183820152602001611fee565b507f823dbcf2b7b0f265871963ca65ac033f6b4c71e0d82cd123d2ff23d752dc21c188888360405180806020018060200183810383528686828181526020019250808284376000838201819052601f909101601f191690920185810384528651815286516020918201939188019250908190849084905b83811015612468578181015183820152602001612450565b50505050905090810190601f1680156124955780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505050505050505050565b6060601180548060200260200160405190810160405280929190818152602001828054801561187d576020028201919060005260206000209081546001600160a01b0316815260019091019060200180831161185f575050505050905090565b612519336143c4565b612558576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b60135460ff166125a7576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61260860118054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146126455760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b60115481101561272c57600f60006011838154811061266357fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16612724576001600f6000601184815481106126a257fe5b6000918252602080832091909101546001600160a01b031683528201929092526040019020805460ff19169115159190911790556011805460109190839081106126e857fe5b60009182526020808320909101548354600181018555938352912090910180546001600160a01b0319166001600160a01b039092169190911790555b600101612648565b507fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a33601160405180836001600160a01b03166001600160a01b031681526020018060200182810382528381815481526020019150805480156127b857602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161279a575b5050935050505060405180910390a16127d3601160006152e9565b506013805460ff19169055565b600061168e60146145f1565b6127f533614347565b806127ff57503330145b612843576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff1615801561285e5750601354610100900460ff16155b6128af576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b60135462010000900460ff16612908576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b8061294c576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b61295860128383615307565b506013805461ff00191661010017905560408051602080840282810182019093528382527ffbc0e5ca6c7e4858daf0fdb185ef5186203e74ec9c64737e93c0aeaec596e1d192859285926129c7928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a15050565b612a1b33614347565b612a65576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff16612ac3576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b600280546001600160a01b0319169055604080516000808252602082015281517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea5929181900390910190a1565b612b1933614347565b80612b2357503330145b612b67576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8066038d7ea4c6800011158015612b8657506706f05b59d3b200008111155b612bcd576040805162461bcd60e51b815260206004820152601360248201527206f7574206f662072616e676520746f702d757606c1b604482015290519081900360640190fd5b612bde60038263ffffffff61462616565b6040805182815290517faf2a77cd04c3cc155588dd3bf67b310ab4fb3b1da3cf6b8d7d4d2aa1d09b794c9181900360200190a150565b601a5490565b6000546001600160a01b031690565b600061168e60036145f1565b612c3e33614347565b80612c4857503330145b612c8c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b60135460ff16158015612ca75750601354610100900460ff16155b612cf8576040805162461bcd60e51b815260206004820152601c60248201527f77686974656c6973742073756d62697373696f6e2070656e64696e6700000000604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b8151811015612e1457612d51828281518110612d4457fe5b6020026020010151614347565b15612d9c576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b0316828281518110612db357fe5b60200260200101516001600160a01b03161415612e0c576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101612d2c565b5060135462010000900460ff16612e6e576040805162461bcd60e51b81526020600482015260196024820152781dda1a5d195b1a5cdd081b9bdd081a5b9a5d1a585b1a5e9959603a1b604482015290519081900360640190fd5b81612eb2576040805162461bcd60e51b815260206004820152600f60248201526e195b5c1d1e481dda1a5d195b1a5cdd608a1b604482015290519081900360640190fd5b612ebe60118484615307565b506013805460ff1916600117905560408051602080850282810182019093528482527f9c80b3b5f68b3e017766d59e8d09b34efe6462b05c398f35cab9e271d9bc3b9c9286928692612f2b928591859182918501908490808284376000920191909152506139a092505050565b60405180806020018381526020018281038252858582818152602001925060200280828437600083820152604051601f909101601f1916909201829003965090945050505050a1505050565b60085490565b6002546001600160a01b031690565b612f9533614347565b612fdf576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b612fe7614c2a565b565b60145490565b612ff833614347565b8061300257503330145b613046576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8051602080820191906000808060605b868510156131225761306f86605463ffffffff614c7216565b888601805160148201516034909201805193995060609190911c965090945090925090506130b460546130a8878563ffffffff614ccf16565b9063ffffffff614ccf16565b9450868511156130fb576040805162461bcd60e51b815260206004820152600d60248201526c6f7574206f6620626f756e647360981b604482015290519081900360640190fd5b8161311157506040805160208101909152600081525b61311c848483611c78565b50613056565b5050505050505050565b600e5460ff1690565b61313e33614347565b8061314857503330145b61318c576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b6009548111156131de576040805162461bcd60e51b81526020600482015260186024820152771bdd5d081bd9881c985b99d9481b1bd85908185b5bdd5b9d60421b604482015290519081900360640190fd5b6131ef600a8263ffffffff61462616565b6040805182815290517fc178d379965e5657b6fc57494e392f121a14119215dfb422aad7db4cc03f2d109181900360200190a150565b61322e33614347565b613278576040805162461bcd60e51b815260206004820152601660248201527539b2b73232b91034b9903737ba1030b71037bbb732b960511b604482015290519081900360640190fd5b600254600160a01b900460ff166132d6576040805162461bcd60e51b815260206004820152601d60248201527f6f776e657273686970206973206e6f74207472616e7366657261626c65000000604482015290519081900360640190fd5b6001600160a01b03821661331b5760405162461bcd60e51b815260040180806020018281038252602381526020018061542c6023913960400191505060405180910390fd5b6002805460ff60a01b1916600160a01b831515021790558061337457604080516001600160a01b038416815290517f808639ff9c8e4732d60b6c2330de498035416d229f27a77d259680895efec1229181900360200190a15b600254604080516001600160a01b039283168152918416602083015280517f850b3df64837d7d518b45f5aa64d104652c3b80eb5b34a8e3d9eb666cb7cdea59281900390910190a150600280546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806133ee86614d29565b5050509350935093505080156134635781613439576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b6134598361344d878563ffffffff614ebb16565b9063ffffffff614f1416565b93505050506114f6565b50600095945050505050565b60185460ff1690565b60135462010000900460ff1681565b61349033614347565b8061349a57503330145b6134de576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b808061351b576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b6001600160a01b038416613566576040805162461bcd60e51b815260206004820152600d60248201526c064657374696e6174696f6e3d3609c1b604482015290519081900360640190fd5b6001600160a01b0384166000908152600f602052604090205460ff166135b657816001600160a01b038416156135a3576135a084846133df565b90505b6135b460148263ffffffff6146a116565b505b6135c1848484614f7e565b604080516001600160a01b0380871682528516602082015280820184905290517fd1ba4ac2e2a11b5101f6cb4d978f514a155b421e8ec396d2d9abaf0bb02917ee9181900360600190a150505050565b600d5490565b613620336143c4565b61365f576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b601354610100900460ff166136b3576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b61371460128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b81146137515760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b60005b6012548110156138df57600f60006012838154811061376f57fe5b60009182526020808320909101546001600160a01b0316835282019290925260400190205460ff16156138d7576000600f6000601284815481106137af57fe5b6000918252602080832091909101546001600160a01b031683528201929092526040018120805460ff1916921515929092179091555b6010546137f990600163ffffffff614c7216565b8110156138c1576012828154811061380d57fe5b600091825260209091200154601080546001600160a01b03909216918390811061383357fe5b6000918252602090912001546001600160a01b031614156138b95760108054600019810190811061386057fe5b600091825260209091200154601080546001600160a01b03909216918390811061388657fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b031602179055506138c1565b6001016137e5565b5060108054906138d590600019830161536a565b505b600101613754565b507fd218c430fa348f4ce67791021b6b89c0c3eacd4ead1d8f5b83c60038ec28249b33601260405180836001600160a01b03166001600160a01b0316815260200180602001828103825283818154815260200191508054801561396b57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161394d575b5050935050505060405180910390a1613986601260006152e9565b506013805461ff0019169055565b60065490565b60195481565b60008160405160200180828051906020019060200280838360005b838110156139d35781810151838201526020016139bb565b50505050905001915050604051602081830303815290604052805190602001209050919050565b613a0333614347565b80613a125750613a12336143c4565b613a5c576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b601354610100900460ff16613ab0576040805162461bcd60e51b81526020600482015260156024820152743737903832b73234b7339039bab136b4b9b9b4b7b760591b604482015290519081900360640190fd5b613b1160128054806020026020016040519081016040528092919081815260200182805480156113cb576020028201919060005260206000209081546001600160a01b031681526001909101906020018083116113ad5750505050506139a0565b8114613b4e5760405162461bcd60e51b81526004018080602001828103825260238152602001806154796023913960400191505060405180910390fd5b613b5a601260006152e9565b6013805461ff0019169055604080513381526020810183905281517f13c935eb475aa0f6e931fece83e2ac44569ce2d53460d29a6dedab40b965c8a3929181900390910190a150565b60108181548110613bb057fe5b6000918252602090912001546001600160a01b0316905081565b600a5490565b601354610100900460ff1681565b60015490565b8080613c21576040805162461bcd60e51b8152602060048201526007602482015266076616c75653d360cc1b604482015290519081900360640190fd5b613c2a33614347565b80613c395750613c39336143c4565b613c83576040805162461bcd60e51b815260206004820152601660248201527537b7363c9037bbb732b93e3e31b7b73a3937b63632b960511b604482015290519081900360640190fd5b613c9460038363ffffffff6146a116565b613c9c612f7d565b6001600160a01b03166108fc839081150290604051600060405180830381858888f19350505050158015613cd4573d6000803e3d6000fd5b507f611b7c0d84fda988026215bef9b3e4d81cbceced7e679be6d5e044b588467c0e33613cff612f7d565b604080516001600160a01b03938416815291909216602082015280820185905290519081900360600190a15050565b613d37336143c4565b613d76576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611c3a60148263ffffffff614fe216565b6000613d91615036565b6001600160a01b0316836001600160a01b03161415613db15750806114f6565b816001600160a01b03841615613e76576000806000613dcf87614d29565b5050509350935093505080613e21576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613e5c576040805162461bcd60e51b81526020600482015260066024820152650726174653d360d41b604482015290519081900360640190fd5b613e708361344d888563ffffffff614ebb16565b93505050505b6000806000613e836150ac565b5050509350935093505080613ed5576040805162461bcd60e51b8152602060048201526013602482015272746f6b656e206e6f7420617661696c61626c6560681b604482015290519081900360640190fd5b81613f1b576040805162461bcd60e51b81526020600482015260116024820152700737461626c65636f696e20726174653d3607c1b604482015290519081900360640190fd5b613f2f8261344d868663ffffffff614ebb16565b979650505050505050565b613f43336143c4565b613f82576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b611b94600a8263ffffffff614fe216565b613f9c336143c4565b613fdb576040805162461bcd60e51b815260206004820152601a60248201526000805160206153eb833981519152604482015290519081900360640190fd5b61128360038263ffffffff614fe216565b613ff533614347565b80613fff57503330145b614043576040805162461bcd60e51b815260206004820152601060248201526f37b7363c9037bbb732b93e3e39b2b63360811b604482015290519081900360640190fd5b8181808060200260200160405190810160405280939291908181526020018383602002808284376000920182905250925050505b81518110156141525761408f828281518110612d4457fe5b156140da576040805162461bcd60e51b8152602060048201526016602482015275636f6e7461696e73206f776e6572206164647265737360501b604482015290519081900360640190fd5b60006001600160a01b03168282815181106140f157fe5b60200260200101516001600160a01b0316141561414a576040805162461bcd60e51b8152602060048201526012602482015271636f6e7461696e732030206164647265737360701b604482015290519081900360640190fd5b600101614077565b5060135462010000900460ff16156141a9576040805162461bcd60e51b81526020600482015260156024820152741dda1a5d195b1a5cdd081a5b9a5d1a585b1a5e9959605a1b604482015290519081900360640190fd5b60005b8281101561429a57600f60008585848181106141c457fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16614292576001600f600086868581811061420057fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b0316815260200190815260200160002060006101000a81548160ff021916908315150217905550601084848381811061425557fe5b835460018101855560009485526020948590200180546001600160a01b0319166001600160a01b0395909202939093013593909316929092179055505b6001016141ac565b506013805462ff0000191662010000179055604080513380825260208201838152601080549484018590527fb2f6cccee7a369e23e293c25aa19bef80af11eb26deba3ea0f2a02783f752e4a949293909290919060608301908490801561432a57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161430c575b5050935050505060405180910390a1505050565b60075460ff1690565b6002546001600160a01b0390811691161490565b600482015460ff16156143a9576040805162461bcd60e51b81526020600482015260116024820152701b1a5b5a5d08185b1c9958591e481cd95d607a1b604482015290519081900360640190fd5b6143b3828261521b565b50600401805460ff19166001179055565b60006143d1600154614717565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b15801561442657600080fd5b505afa15801561443a573d6000803e3d6000fd5b505050506040513d602081101561445057600080fd5b505192915050565b6000815160411461446b575060006114f6565b60208201516040830151606084015160001a7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a08211156144b157600093505050506114f6565b8060ff16601b141580156144c957508060ff16601c14155b156144da57600093505050506114f6565b6040805160008152602080820180845289905260ff8416828401526060820186905260808201859052915160019260a0808401939192601f1981019281900390910190855afa158015614531573d6000803e3d6000fd5b5050604051601f190151979650505050505050565b60006001600160a01b038216156145e057816001600160a01b03166370a08231846040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156145ad57600080fd5b505afa1580156145c1573d6000803e3d6000fd5b505050506040513d60208110156145d757600080fd5b505190506114f6565b506001600160a01b038216316114f6565b600281015460009061460c906201518063ffffffff614ccf16565b42111561461b575080546111a9565b5060018101546111a9565b600482015460ff1661467f576040805162461bcd60e51b815260206004820152601960248201527f6c696d6974206861736e2774206265656e207365742079657400000000000000604482015290519081900360640190fd5b600390910155565b60008061469383614d29565b509098975050505050505050565b6146aa8261523e565b80826001015410156146f6576040805162461bcd60e51b815260206004820152601060248201526f185d985a5b18589b194f185b5bdd5b9d60821b604482015290519081900360640190fd5b600182015461470b908263ffffffff614c7216565b82600101819055505050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561476457600080fd5b505afa158015614778573d6000803e3d6000fd5b505050506040513d602081101561478e57600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b15801561442657600080fd5b80158061485f575060408051636eb1769f60e11b81523060048201526001600160a01b03848116602483015291519185169163dd62ed3e91604480820192602092909190829003018186803b15801561483157600080fd5b505afa158015614845573d6000803e3d6000fd5b505050506040513d602081101561485b57600080fd5b5051155b61489a5760405162461bcd60e51b815260040180806020018281038252603681526020018061549c6036913960400191505060405180910390fd5b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663095ea7b360e01b1790526148ec908490614a1b565b505050565b3b151590565b60008061490383614d29565b509198975050505050505050565b60008061491f600854614717565b6001600160a01b031663afc72e9385856040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561499357818101518382015260200161497b565b50505050905090810190601f1680156149c05780820380516001836020036101000a031916815260200191505b509350505050604080518083038186803b1580156149dd57600080fd5b505afa1580156149f1573d6000803e3d6000fd5b505050506040513d6040811015614a0757600080fd5b508051602090910151909590945092505050565b614a2d826001600160a01b03166148f1565b614a7e576040805162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015290519081900360640190fd5b60006060836001600160a01b0316836040518082805190602001908083835b60208310614abc5780518252601f199092019160209182019101614a9d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114614b1e576040519150601f19603f3d011682016040523d82523d6000602084013e614b23565b606091505b509150915081614b7a576040805162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015290519081900360640190fd5b805115614bd357808060200190516020811015614b9657600080fd5b5051614bd35760405162461bcd60e51b815260040180806020018281038252602a81526020018061544f602a913960400191505060405180910390fd5b50505050565b604080517f19457468657265756d205369676e6564204d6573736167653a0a333200000000602080830191909152603c8083019490945282518083039094018452605c909101909152815191012090565b601980546001019081905560408051338152602081019290925280517fab0423a75986556234aecd171c46ce7f5e45607d8070bf5230f2735b50322bff9281900390910190a1565b600082821115614cc9576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600082820183811015612168576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6060600080600080600080614d3f600854614717565b6001600160a01b0316631f69565f896040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060006040518083038186803b158015614d9457600080fd5b505afa158015614da8573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e0811015614dd157600080fd5b8101908080516040519392919084600160201b821115614df057600080fd5b908301906020820185811115614e0557600080fd5b8251600160201b811182820188101715614e1e57600080fd5b82525081516020918201929091019080838360005b83811015614e4b578181015183820152602001614e33565b50505050905090810190601f168015614e785780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979e50929c50909a509850965094509192505050919395979092949650565b600082614eca575060006114f6565b82820282848281614ed757fe5b04146121685760405162461bcd60e51b815260040180806020018281038252602181526020018061540b6021913960400191505060405180910390fd5b6000808211614f6a576040805162461bcd60e51b815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000828481614f7557fe5b04949350505050565b6001600160a01b038216614fc8576040516001600160a01b0384169082156108fc029083906000818181858888f19350505050158015614fc2573d6000803e3d6000fd5b506148ec565b6148ec6001600160a01b038316848363ffffffff61529716565b808260030154146150245760405162461bcd60e51b81526004018080602001828103825260228152602001806153c96022913960400191505060405180910390fd5b61503282836003015461521b565b5050565b6000615043600854614717565b6001600160a01b031663e9cbd8226040518163ffffffff1660e01b815260040160206040518083038186803b15801561507b57600080fd5b505afa15801561508f573d6000803e3d6000fd5b505050506040513d60208110156150a557600080fd5b5051905090565b60606000806000806000806150c2600854614717565b6001600160a01b0316633efec5e96040518163ffffffff1660e01b815260040160006040518083038186803b1580156150fa57600080fd5b505afa15801561510e573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260e081101561513757600080fd5b8101908080516040519392919084600160201b82111561515657600080fd5b90830190602082018581111561516b57600080fd5b8251600160201b81118282018810171561518457600080fd5b82525081516020918201929091019080838360005b838110156151b1578181015183820152602001615199565b50505050905090810190601f1680156151de5780820380516001836020036101000a031916815260200191505b5060409081526020820151908201516060830151608084015160a085015160c090950151979f939e50919c509a5098509096509294509192505050565b6152248261523e565b808255600182015481101561503257815460018301555050565b6002810154615256906201518063ffffffff614ccf16565b42111561529457426002820155805460018201556040517fe93bc25276d408d390778e7a8b926f2f67209c43ed540081b951fe128f0d3cd290600090a15b50565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180516001600160e01b031663a9059cbb60e01b1790526148ec908490614a1b565b5080546000825590600052602060002090810190615294919061538a565b82805482825590600052602060002090810192821561535a579160200282015b8281111561535a5781546001600160a01b0319166001600160a01b03843516178255602090920191600190910190615327565b506153669291506153a4565b5090565b8154818355818111156148ec576000838152602090206148ec9181019083015b6111b291905b808211156153665760008155600101615390565b6111b291905b808211156153665780546001600160a01b03191681556001016153aa56fe636f6e6669726d65642f7375626d6974746564206c696d6974206d69736d6174636873656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f776f776e65722063616e6e6f742062652073657420746f207a65726f20616464726573735361666545524332303a204552433230206f7065726174696f6e20646964206e6f7420737563636565646e6f6e2d6d61746368696e672070656e64696e672077686974656c69737420686173685361666545524332303a20617070726f76652066726f6d206e6f6e2d7a65726f20746f206e6f6e2d7a65726f20616c6c6f77616e6365a265627a7a72315820bd29ab20a18c7c74e164f6396aae05221cf83f57a8754a0265bff2de088230b164736f6c63430005110032a265627a7a723158205d913b62084d26757d50822529c7c40b09c9ceaa3ed83439bb340ec274648b3964736f6c63430005110032" // DeployWalletCache deploys a new Ethereum contract, binding an instance of WalletCache to it. func DeployWalletCache(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _defaultSpendLimit_ *big.Int, _controllerNode_ [32]byte, _licenceNode_ [32]byte, _tokenWhitelistNode_ [32]byte, _walletDeployerNode_ [32]byte) (common.Address, *types.Transaction, *WalletCache, error) { diff --git a/pkg/bindings/walletDeployer.go b/pkg/bindings/walletDeployer.go index e321fe2a..dfd03cca 100644 --- a/pkg/bindings/walletDeployer.go +++ b/pkg/bindings/walletDeployer.go @@ -31,7 +31,7 @@ var ( const WalletDeployerABI = "[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_ens_\",\"type\":\"address\"},{\"internalType\":\"bytes32\",\"name\":\"_controllerNode_\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"_walletCacheNode_\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contractWallet\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"DeployedWallet\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contractWallet\",\"name\":\"_wallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contractWallet\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"_owner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"_paid\",\"type\":\"uint256\"}],\"name\":\"MigratedWallet\",\"type\":\"event\"},{\"constant\":true,\"inputs\":[],\"name\":\"controllerNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"}],\"name\":\"deployWallet\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"deployedWallets\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"ensRegistry\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[{\"internalType\":\"addresspayable\",\"name\":\"_owner\",\"type\":\"address\"},{\"internalType\":\"contractWallet\",\"name\":\"_oldWallet\",\"type\":\"address\"},{\"internalType\":\"bool\",\"name\":\"_initializedSpendLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedGasTopUpLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedLoadLimit\",\"type\":\"bool\"},{\"internalType\":\"bool\",\"name\":\"_initializedWhitelist\",\"type\":\"bool\"},{\"internalType\":\"uint256\",\"name\":\"_spendLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_gasTopUpLimit\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"_loadLimit\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"_whitelistedAddresses\",\"type\":\"address[]\"}],\"name\":\"migrateWallet\",\"outputs\":[],\"payable\":true,\"stateMutability\":\"payable\",\"type\":\"function\"},{\"constant\":true,\"inputs\":[],\"name\":\"walletCacheNode\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"payable\":false,\"stateMutability\":\"view\",\"type\":\"function\"}]" // WalletDeployerBin is the compiled bytecode used for deploying new contracts. -var WalletDeployerBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860025534801561005857600080fd5b50604051610b1c380380610b1c8339818101604052606081101561007b57600080fd5b5080516020820151604090920151600080546001600160a01b0319166001600160a01b0384161790559091908180156100b45760018190555b5080156100c15760028190555b505050610a49806100d36000396000f3fe6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6000546001600160a01b031690565b6003602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526003602052604090205416156102ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260036020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60025481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526003602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60015490565b60006108aa600154610931565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b505192915050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d60208110156109a857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ff57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a265627a7a7231582079dd557bde042f7365d5316e29e11004155bdb26459e97c0247a767ac518706b64736f6c63430005110032" +var WalletDeployerBin = "0x60806040527f7f2ce995617d2816b426c5c8698c5ec2952f7a34bb10f38326f74933d58936976001557faf553cb0d77690819f9d6fbaa04416e1fdcfa01b2a9a833c7a11e6ae0bc1be8860025534801561005857600080fd5b50604051610b1c380380610b1c8339818101604052606081101561007b57600080fd5b5080516020820151604090920151600080546001600160a01b0319166001600160a01b0384161790559091908180156100b45760018190555b5080156100c15760028190555b505050610a49806100d36000396000f3fe6080604052600436106100555760003560e01c80637d73b2311461005a57806380a12c0e1461008b5780638d682ef7146100be578063a6ede3d414610180578063c8cc2fc2146101a7578063e2b4ce97146101da575b600080fd5b34801561006657600080fd5b5061006f6101ef565b604080516001600160a01b039092168252519081900360200190f35b34801561009757600080fd5b5061006f600480360360208110156100ae57600080fd5b50356001600160a01b03166101fe565b61017e60048036036101408110156100d557600080fd5b6001600160a01b03823581169260208101359091169160408201351515916060810135151591608082013515159160a081013515159160c08201359160e0810135916101008201359190810190610140810161012082013564010000000081111561013f57600080fd5b82018360208201111561015157600080fd5b8035906020019184602083028401116401000000008311171561017357600080fd5b509092509050610219565b005b34801561018c57600080fd5b506101956106f3565b60408051918252519081900360200190f35b3480156101b357600080fd5b5061017e600480360360208110156101ca57600080fd5b50356001600160a01b03166106f9565b3480156101e657600080fd5b50610195610897565b6000546001600160a01b031690565b6003602052600090815260409020546001600160a01b031681565b6102223361089d565b610273576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6001600160a01b038b811660009081526003602052604090205416156102ca5760405162461bcd60e51b81526004018080602001828103825260218152602001806109f46021913960400191505060405180910390fd5b8a6001600160a01b03168a6001600160a01b0316638da5cb5b6040518163ffffffff1660e01b815260040160206040518083038186803b15801561030d57600080fd5b505afa158015610321573d6000803e3d6000fd5b505050506040513d602081101561033757600080fd5b50516001600160a01b031614610385576040805162461bcd60e51b815260206004820152600e60248201526d0deeedccae440dad2e6dac2e8c6d60931b604482015290519081900360640190fd5b6000610392600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156103cc57600080fd5b505af11580156103e0573d6000803e3d6000fd5b505050506040513d60208110156103f657600080fd5b5051604080516001600160a01b038084168252808f1660208301528f168183015234606082015290519192507fc65d6ee9571556236e352151c95c79b6589474ad814195aaac7d5ab8d88ba2dd919081900360800190a16001600160a01b038c8116600090815260036020526040902080546001600160a01b03191691831691909117905589156104e057806001600160a01b0316633c672eb7876040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b1580156104c757600080fd5b505af11580156104db573d6000803e3d6000fd5b505050505b881561054557806001600160a01b0316630f3a85d8866040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561052c57600080fd5b505af1158015610540573d6000803e3d6000fd5b505050505b87156105aa57806001600160a01b0316633bfec254856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561059157600080fd5b505af11580156105a5573d6000803e3d6000fd5b505050505b861561063e57806001600160a01b031663f421764884846040518363ffffffff1660e01b815260040180806020018281038252848482818152602001925060200280828437600081840152601f19601f8201169050808301925050509350505050600060405180830381600087803b15801561062557600080fd5b505af1158015610639573d6000803e3d6000fd5b505050505b60408051632c90b94d60e21b81526001600160a01b038e8116600483015260006024830181905292519084169263b242e534926044808201939182900301818387803b15801561068d57600080fd5b505af11580156106a1573d6000803e3d6000fd5b5050505060003411156106e5576040516001600160a01b038d16903480156108fc02916000818181858888f193505050501580156106e3573d6000803e3d6000fd5b505b505050505050505050505050565b60025481565b6107023361089d565b610753576040805162461bcd60e51b815260206004820152601a60248201527f73656e646572206973206e6f74206120636f6e74726f6c6c6572000000000000604482015290519081900360640190fd5b6000610760600254610931565b6001600160a01b031663a4570e516040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561079a57600080fd5b505af11580156107ae573d6000803e3d6000fd5b505050506040513d60208110156107c457600080fd5b5051604080516001600160a01b0380841682528516602082015281519293507fc02db5f4164f89d90905928336769906e16d79c4a77342126eb647ca9440d078929081900390910190a16001600160a01b0382811660008181526003602052604080822080546001600160a01b03191694861694851790558051632c90b94d60e21b81526004810193909352602483018290525163b242e53492604480820193929182900301818387803b15801561087b57600080fd5b505af115801561088f573d6000803e3d6000fd5b505050505050565b60015490565b60006108aa600154610931565b6001600160a01b031663b429afeb836040518263ffffffff1660e01b815260040180826001600160a01b03166001600160a01b0316815260200191505060206040518083038186803b1580156108ff57600080fd5b505afa158015610913573d6000803e3d6000fd5b505050506040513d602081101561092957600080fd5b505192915050565b6000805460408051630178b8bf60e01b81526004810185905290516001600160a01b0390921691630178b8bf91602480820192602092909190829003018186803b15801561097e57600080fd5b505afa158015610992573d6000803e3d6000fd5b505050506040513d60208110156109a857600080fd5b505160408051631d9dabef60e11b81526004810185905290516001600160a01b0390921691633b3b57de91602480820192602092909190829003018186803b1580156108ff57600080fdfe77616c6c657420616c7265616479206465706c6f79656420666f72206f776e6572a265627a7a72315820e469fb5040338ccc44e2f84516449ba367eeaa90a44c8eee9ce7e255534aa15164736f6c63430005110032" // DeployWalletDeployer deploys a new Ethereum contract, binding an instance of WalletDeployer to it. func DeployWalletDeployer(auth *bind.TransactOpts, backend bind.ContractBackend, _ens_ common.Address, _controllerNode_ [32]byte, _walletCacheNode_ [32]byte) (common.Address, *types.Transaction, *WalletDeployer, error) { diff --git a/test/controller/add_admin_test.go b/test/controller/add_admin_test.go index e97710a6..14dc1be4 100644 --- a/test/controller/add_admin_test.go +++ b/test/controller/add_admin_test.go @@ -47,151 +47,71 @@ var _ = Describe("addAdmin", func() { When("controller owner calls AddAdmin with it's own address", func() { - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerOwner.Address()) + It("should fail at the already owner requirenment", func() { + tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), ControllerOwner.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at the already owner requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(!_isOwner\(_account\), "provided account is already the owner"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is already the owner")) }) }) When("controller owner calls AddAdmin with controller's address", func() { - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), Controller.Address()) + It("should fail at already controller requirenment", func() { + tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), Controller.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at already controller requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(!_isController\[_account\], "provided account is already a controller"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is already a controller")) }) }) When("controller owner calls AddAdmin with admin's address", func() { - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) + It("should fail at already controller requirenment", func() { + tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), ControllerAdmin.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at already controller requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(!_isAdmin\[_account\], "provided account is already an admin"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is already an admin")) }) }) When("controller owner calls AddAdmin with 0 address", func() { - - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), common.HexToAddress("0x0")) + It("should fail at already controller requirenment", func() { + tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), common.HexToAddress("0x0")) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at already controller requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(_account != address\(0\), "provided account is the zero address"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is the zero address")) }) }) When("admin calls AddAdmin with a random address", func() { - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddAdmin(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) + It("should fail at the not owner requirenment", func() { + tx, err := ControllerContract.AddAdmin(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(100000)), RandomAccount.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at the not owner requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(_isOwner\(msg.sender\), "sender is not an owner"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not an owner")) }) }) When("controller calls AddAdmin with a random address", func() { - - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddAdmin(Controller.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) + It("should fail at the not owner requirenment", func() { + tx, err := ControllerContract.AddAdmin(Controller.TransactOpts(ethertest.WithGasLimit(100000)), RandomAccount.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at the not owner requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(_isOwner\(msg.sender\), "sender is not an owner"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not an owner")) }) }) diff --git a/test/controller/add_controller_test.go b/test/controller/add_controller_test.go index b8924455..31863215 100644 --- a/test/controller/add_controller_test.go +++ b/test/controller/add_controller_test.go @@ -11,6 +11,8 @@ import ( var _ = Describe("AddController", func() { + const gasLimit = 100000 + When("controller Admin calls AddController with a random address", func() { var tx *types.Transaction @@ -57,143 +59,66 @@ var _ = Describe("AddController", func() { }) When("controller Admin calls AddController with it's own address", func() { - - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) + It("should fail at the already owner requirenment", func() { + tx, err := ControllerContract.AddController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is already an admin")) }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at the already owner requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(!_isAdmin\[_account\], "provided account is already an admin"\);`)) - }) - }) When("controller Admin calls AddController with Owner's address", func() { - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerOwner.Address()) + It("should fail at already controller requirenment", func() { + tx, err := ControllerContract.AddController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerOwner.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at already controller requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(!_isOwner\(_account\), "provided account is already the owner"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is already the owner")) }) }) When("controller Admin calls AddController with controller's address", func() { - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), Controller.Address()) + It("should fail at already controller requirenment", func() { + tx, err := ControllerContract.AddController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), Controller.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is already a controller")) }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at already controller requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(!_isController\[_account\], "provided account is already a controller"\);`)) - }) - }) When("controller Admin calls AddController with 0 address", func() { - var tx *types.Transaction - const gasLimit = 100000 - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), common.HexToAddress("0x0")) + tx, err := ControllerContract.AddController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), common.HexToAddress("0x0")) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at already controller requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(_account != address\(0\), "provided account is the zero address"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is the zero address")) }) }) When("Owner calls AddController with a random address", func() { - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddController(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) + It("should succeed", func() { + tx, err := ControllerContract.AddController(ControllerOwner.TransactOpts(), RandomAccount.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should succeed", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - }) When("controller calls AddController with a random address", func() { - - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.AddController(Controller.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) + It("should fail at the notAdmin requirenment", func() { + tx, err := ControllerContract.AddController(Controller.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should fail at the notAdmin requirenment", func() { - Expect(TestRig.LastExecuted()).To(MatchRegexp(`require\(\!isOwner\(msg.sender\) || isAdmin\(msg.sender\), "sender is not an admin"\);`)) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not admin or owner")) }) }) diff --git a/test/controller/claim_test.go b/test/controller/claim_test.go index b18560b3..be38a9fd 100644 --- a/test/controller/claim_test.go +++ b/test/controller/claim_test.go @@ -83,8 +83,9 @@ var _ = Describe("Controller claim", func() { tx, err := ControllerContract.Claim(Controller.TransactOpts(ethertest.WithGasLimit(100000)), RandomAccount.Address(), ERC20Contract1Address, big.NewInt(222)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not admin")) }) }) @@ -93,8 +94,9 @@ var _ = Describe("Controller claim", func() { tx, err := ControllerContract.Claim(ControllerOwner.TransactOpts(ethertest.WithGasLimit(100000)), RandomAccount.Address(), ERC20Contract1Address, big.NewInt(222)) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - Expect(isGasExhausted(tx, 100000)).To(BeFalse()) Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not admin")) }) }) diff --git a/test/controller/controller_suite_test.go b/test/controller/controller_suite_test.go index 87aba98b..5164e8cf 100644 --- a/test/controller/controller_suite_test.go +++ b/test/controller/controller_suite_test.go @@ -6,6 +6,7 @@ import ( "os" "testing" + "github.com/ethereum/go-ethereum" "github.com/ethereum/go-ethereum/core/types" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" @@ -16,6 +17,21 @@ func init() { TestRig.AddCoverageForContracts("../../build/controller/combined.json", "../../contracts") } +func ethCall(tx *types.Transaction) ([]byte, error) { + msg, _ := tx.AsMessage(types.HomesteadSigner{}) + + calMsg := ethereum.CallMsg{ + From: msg.From(), + To: msg.To(), + Gas: msg.Gas(), + GasPrice: msg.GasPrice(), + Value: msg.Value(), + Data: msg.Data(), + } + + return Backend.CallContract(context.Background(), calMsg, nil) +} + func TestWalletSuite(t *testing.T) { RegisterFailHandler(Fail) RunSpecs(t, "Controller Suite") @@ -59,12 +75,3 @@ var _ = AfterEach(func() { fmt.Fprintln(GinkgoWriter, TestRig.LastExecuted()) } }) - -func isGasExhausted(tx *types.Transaction, gasLimit uint64) bool { - r, err := Backend.TransactionReceipt(context.Background(), tx.Hash()) - Expect(err).ToNot(HaveOccurred()) - if r.Status == types.ReceiptStatusSuccessful { - return false - } - return r.GasUsed == gasLimit -} diff --git a/test/controller/remove_admin_test.go b/test/controller/remove_admin_test.go index b6bde59d..74cb4eeb 100644 --- a/test/controller/remove_admin_test.go +++ b/test/controller/remove_admin_test.go @@ -1,7 +1,6 @@ package controller_test import ( - "github.com/ethereum/go-ethereum/core/types" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" . "github.com/tokencard/contracts/v3/test/shared" @@ -10,6 +9,8 @@ import ( var _ = Describe("removeAdmin", func() { + const gasLimit = 100000 + When("controller owner calls RemoveAdmin with a controller admin address", func() { BeforeEach(func() { @@ -37,56 +38,13 @@ var _ = Describe("removeAdmin", func() { }) When("controller owner calls RemoveAdmin with a non controller admin address", func() { - - var tx *types.Transaction - const gasLimit = 100000 - BeforeEach(func() { - var err error - tx, err = ControllerContract.RemoveAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) + tx, err := ControllerContract.RemoveAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - - It("should NOT decrease number of admins", func() { - count, err := ControllerContract.AdminCount(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(count.String()).To(Equal("1")) - }) - - It("should NOT emit RemovedAdmin event", func() { - it, err := ControllerContract.FilterRemovedAdmin(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeFalse()) - }) - }) - - When("controller owner calls RemoveAdmin with a non controller admin address", func() { - - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.RemoveAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - }) - - It("should not succeed", func() { - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is not an admin")) }) It("should NOT decrease number of admins", func() { @@ -103,23 +61,13 @@ var _ = Describe("removeAdmin", func() { }) When("a Random address calls RemoveAdmin with a controller admin address", func() { - - var tx *types.Transaction - const gasLimit = 100000 - BeforeEach(func() { - var err error - tx, err = ControllerContract.RemoveAdmin(RandomAccount.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) + tx, err := ControllerContract.RemoveAdmin(RandomAccount.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should not succeed", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not an owner")) }) It("should NOT decrease number of admins", func() { diff --git a/test/controller/remove_controller_test.go b/test/controller/remove_controller_test.go index 3a262375..c2a9a726 100644 --- a/test/controller/remove_controller_test.go +++ b/test/controller/remove_controller_test.go @@ -1,7 +1,6 @@ package controller_test import ( - "github.com/ethereum/go-ethereum/core/types" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" . "github.com/tokencard/contracts/v3/test/shared" @@ -10,18 +9,17 @@ import ( var _ = Describe("removeController", func() { - When("controller owner calls RemoveController with a controller admin address", func() { + const gasLimit = 100000 - var tx *types.Transaction - const gasLimit = 100000 + When("controller owner calls RemoveController with a controller admin address", func() { BeforeEach(func() { - var err error - tx, err = ControllerContract.RemoveController(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) + tx, err := ControllerContract.RemoveController(ControllerOwner.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is not a controller")) }) It("should NOT decrease number of admins", func() { @@ -36,13 +34,6 @@ var _ = Describe("removeController", func() { Expect(it.Next()).To(BeFalse()) }) - It("should fail", func() { - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) }) When("controller admin calls RemoveController with a controller address", func() { @@ -73,14 +64,13 @@ var _ = Describe("removeController", func() { When("controller admin calls RemoveController with a non controller address", func() { - var tx *types.Transaction - const gasLimit = 100000 - BeforeEach(func() { - var err error - tx, err = ControllerContract.RemoveController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) + tx, err := ControllerContract.RemoveController(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(gasLimit)), RandomAccount.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("provided account is not a controller")) }) It("should NOT decrease number of controllers", func() { @@ -95,34 +85,16 @@ var _ = Describe("removeController", func() { Expect(it.Next()).To(BeFalse()) }) - It("should fail", func() { - Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) - }) - }) When("a Random address calls RemoveController with a controller admin address", func() { - - var tx *types.Transaction - const gasLimit = 100000 - - BeforeEach(func() { - var err error - tx, err = ControllerContract.RemoveController(RandomAccount.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) + It("should fail", func() { + tx, err := ControllerContract.RemoveController(RandomAccount.TransactOpts(ethertest.WithGasLimit(gasLimit)), ControllerAdmin.Address()) Expect(err).ToNot(HaveOccurred()) Backend.Commit() - }) - - It("should fail", func() { Expect(isSuccessful(tx)).To(BeFalse()) - }) - - It("should not exaust gas", func() { - Expect(isGasExhausted(tx, gasLimit)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("sender is not admin or owner")) }) }) diff --git a/test/controller/start_stop_test.go b/test/controller/start_stop_test.go index d1b4ffd6..7ee56fe1 100644 --- a/test/controller/start_stop_test.go +++ b/test/controller/start_stop_test.go @@ -42,7 +42,7 @@ var _ = Describe("Controller Stopping", func() { Expect(stopped).To(BeTrue()) }) - It("should emit Stopped event", func() { + It("should emit Stopped event", func() { it, err := ControllerContract.FilterStopped(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) @@ -53,34 +53,34 @@ var _ = Describe("Controller Stopping", func() { }) - When("a random address tries to start", func() { - It("Should fail", func() { - tx, err := ControllerContract.Start(RandomAccount.TransactOpts(ethertest.WithGasLimit(1000000))) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("controller tries to start", func() { - It("Should fail", func() { - tx, err := ControllerContract.Start(Controller.TransactOpts(ethertest.WithGasLimit(1000000))) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("controller admin tries to start", func() { - It("Should fail", func() { - tx, err := ControllerContract.Start(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(1000000))) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeFalse()) - }) - }) - - When("the owner stops the controller", func() { + When("a random address tries to start", func() { + It("Should fail", func() { + tx, err := ControllerContract.Start(RandomAccount.TransactOpts(ethertest.WithGasLimit(1000000))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + }) + }) + + When("controller tries to start", func() { + It("Should fail", func() { + tx, err := ControllerContract.Start(Controller.TransactOpts(ethertest.WithGasLimit(1000000))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + }) + }) + + When("controller admin tries to start", func() { + It("Should fail", func() { + tx, err := ControllerContract.Start(ControllerAdmin.TransactOpts(ethertest.WithGasLimit(1000000))) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + }) + }) + + When("the owner stops the controller", func() { BeforeEach(func() { tx, err := ControllerContract.Stop(ControllerOwner.TransactOpts()) @@ -89,13 +89,13 @@ var _ = Describe("Controller Stopping", func() { Expect(isSuccessful(tx)).To(BeTrue()) }) - It("The controller should be stopped", func() { + It("The controller should be stopped", func() { stopped, err := ControllerContract.IsStopped(nil) Expect(err).ToNot(HaveOccurred()) Expect(stopped).To(BeTrue()) }) - It("should emit Stopped event", func() { + It("should emit Stopped event", func() { it, err := ControllerContract.FilterStopped(nil) Expect(err).ToNot(HaveOccurred()) Expect(it.Next()).To(BeTrue()) @@ -104,32 +104,46 @@ var _ = Describe("Controller Stopping", func() { Expect(evt.Sender).To(Equal(ControllerOwner.Address())) }) - When("owner tries to start", func() { - BeforeEach(func() { - tx, err := ControllerContract.Start(ControllerOwner.TransactOpts()) - Expect(err).ToNot(HaveOccurred()) - Backend.Commit() - Expect(isSuccessful(tx)).To(BeTrue()) - }) - - It("The controller should start again", func() { - stopped, err := ControllerContract.IsStopped(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(stopped).To(BeFalse()) - }) - - It("should emit Started event", func() { - it, err := ControllerContract.FilterStarted(nil) - Expect(err).ToNot(HaveOccurred()) - Expect(it.Next()).To(BeTrue()) - evt := it.Event - Expect(it.Next()).To(BeFalse()) - Expect(evt.Sender).To(Equal(ControllerOwner.Address())) - }) - }) - - }) + It("should fail because it is stopped", func() { + tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(ethertest.WithGasLimit(1000000)), RandomAccount.Address()) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeFalse()) + returnData, _ := ethCall(tx) + Expect(string(returnData[len(returnData)-64:])).To(ContainSubstring("controller is stopped")) + }) + When("owner tries to start", func() { + BeforeEach(func() { + tx, err := ControllerContract.Start(ControllerOwner.TransactOpts()) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + + It("The controller should start again", func() { + stopped, err := ControllerContract.IsStopped(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(stopped).To(BeFalse()) + }) + + It("should emit Started event", func() { + it, err := ControllerContract.FilterStarted(nil) + Expect(err).ToNot(HaveOccurred()) + Expect(it.Next()).To(BeTrue()) + evt := it.Event + Expect(it.Next()).To(BeFalse()) + Expect(evt.Sender).To(Equal(ControllerOwner.Address())) + }) + + It("should succeed", func() { + tx, err := ControllerContract.AddAdmin(ControllerOwner.TransactOpts(), RandomAccount.Address()) + Expect(err).ToNot(HaveOccurred()) + Backend.Commit() + Expect(isSuccessful(tx)).To(BeTrue()) + }) + }) + }) })